ZGlmZiAtLWdpdCBhL0FHRU5ULnR4dCBiL0FHRU5ULnR4dAppbmRleCA0ZDhkMzIzLi4zN2ViMjc5IDEwMDY0NAotLS0gYS9BR0VOVC50eHQKKysrIGIvQUdFTlQudHh0CkBAIC00MTgsMTQgKzQxOCwxNiBAQAogCiAgICAqIGEgbWFnaWMgbnVtYmVyICh0aGUgI2RlZmluZWQgaW50ZWdlciBjb25zdGFudCBkZXNjcmliZWQgYWJvdmUpCiAgICAqIGEgdHlwZSBpbmRpY2F0b3IgKGZyb20gdGhlIHZhbHVlcyBsaXN0ZWQgaW4gPHNubXBsaWIvc25tcF9pbXBsLmg+KQotICAgKiBhbiBhY2Nlc3MgaW5kaWNhdG9yIChlc3NlbnRpYWxseSBSV1JJVEUgb3IgUk9OTFkpCisgICAqIGFuIGFjY2VzcyBpbmRpY2F0b3IgKGVzc2VudGlhbGx5IE5FVFNOTVBfT0xEQVBJX1JXUklURSBvcgorICAgICBORVRTTk1QX09MREFQSV9ST05MWSkKICAgICogdGhlIG5hbWUgb2YgdGhlIHJvdXRpbmUgdXNlZCB0byBoYW5kbGUgdGhpcyBlbnRyeQogICAgKiB0aGUgbGVuZ3RoIG9mIHRoZSBPSUQgc3VmZml4IHVzZWQsIGFuZAogICAgKiBhbiBhcnJheSBvZiBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoaXMgc3VmZml4IChtb3JlIG9uIHRoaXMgaW4gYSBtb21lbnQpCiAKIFRodXMgYSB0eXBpY2FsIHZhcmlhYmxlIGVudHJ5IHdvdWxkIGxvb2sgbGlrZToKIAotICAgICAgICB7IEVYQU1QTEVTVFJJTkcsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXhhbXBsZSwgMSwgezF9fQorICAgICAgICB7IEVYQU1QTEVTVFJJTkcsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9leGFtcGxlLCAxLCB7MX19CiAKIElmIHRoZSBtYWdpYyBudW1iZXJzIGhhdmUgbm90IGJlZW4gZGVmaW5lZCBpbiB0aGUgaGVhZGVyIGZpbGUsIHRoZW4gdGhleQogc2hvdWxkIGJlIGRlZmluZWQgaGVyZSwgdXN1YWxseSBjb21taW5nIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZwpkaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKaW5kZXggOGQ5Njc0Ny4uNzJjNTIzMyAxMDA2NDQKLS0tIGEvQ0hBTkdFUworKysgYi9DSEFOR0VTCkBAIC0xLDEzNyArMSwzMTggQEAKIFRoaXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2Ygc3BlY2lmaWMgYnVncyB0aGF0IGhhdmUgYmVlbiBmaXhlZCwgYW5kIHBhdGNoZXMKIHRoYXQgaGF2ZSBiZWVuIGFwcGxpZWQgaW4gcmVsZWFzZWQgdmVyc2lvbnMuICBQbGVhc2Ugc2VlIHRoZSBORVdTIGZpbGUgZm9yCiBhIHN1bW1hcnkgb2YgdGhlIG1ham9yIGNoYW5nZXMsIGFuZCB0aGUgQ2hhbmdlTG9nIGZpbGUgZm9yIGEgY29tcHJlaGVuc2l2ZQotbGlzdGluZyBvZiBhbGwgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb2RlLiAKLSAgICAgIAotKiA1LjQuNCAqCitsaXN0aW5nIG9mIGFsbCBjaGFuZ2VzIG1hZGUgdG8gdGhlIGNvZGUuCisKKworKjUuNS4yKgogCiAgICAgc25tcGxpYjoKLSAgICAgIC0gW0JVRyAzMTM0MzIzXTogRml4IGNyYXNoIHdoZW4gY29tcGFyaW5nIGludmFsaWQgT0lEcwotICAgICAgLSBbQlVHIDMxNzE4NzhdOiBVc2luZyBTTk1QdjMgY29udGV4dCBkb2VzIG5vdCB3b3JrCi0gICAgICAtIFtCVUcgMzE4Mjk4NV06IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKLSAgICAgIC0gW0JVRyAzMjM0NzU0XTogRW5zdXJlIG9sZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgaG9vayBpcyBpbml0aWFsaXplZCB0byBOVUxMCi0gICAgICAtIFtCVUcgMzI2NDg1Ml06IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcwotICAgICAgLSBbUEFUQ0ggMzA1ODY0NV06IFVzZSBNU0dfRE9OVFdBSVQgZm9yIHRoZSB1bml4IGRvbWFpbiBzb2NrZXQKLSAgICAgIC0gW1BBVENIIDMwNjc1NDBdOiBGaXggSVB2NCBPSUQgaW5kZXhlcyBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zCi0gICAgICAtIFtQQVRDSCAzMTY1ODc4XTogQ2F0Y2ggYnVmZmVyIG92ZXJydW4gb24gNjQtYml0IHN5c3RlbXMKKyAgICAgIC0gW1BBVENIIDI4MzU1NzddOiBSZXBsYWNlIFNOTVBfWkVSTyBvZiBhcnJheXMgd2l0aCBhIG1lbXNldC4KICAgICAgIC0gW1BBVENIIDMxODMwMDBdOiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoCi0gICAgICAtIEFkZGVkIHB1YmxpYyBkZWNsYXJhdGlvbiBmb3IgbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpCi0gICAgICAtIEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkuCi0gICAgICAtIEFkZGVkIGZ1bmN0aW9uIHNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCgpCi0gICAgICAtIEFkZGVkIG1hY3JvIG5ldHNubXBfc3RhdGljX2Fzc2VydCgpCi0gICAgICAtIEF2b2lkIFZhbGdyaW5kIGNvbXBsYWludHMgYWJvdXQgdW5pbml0aWFsaXplZCBkYXRhCi0gICAgICAtIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygc3RyZHVwIGluIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAotICAgICAgLSBGaXggZG91YmxlLWZyZWUgY3Jhc2ggd2hlbiByZWxlYXNpbmcgZHVwbGljYXRlZCBoYW5kbGVycwotICAgICAgLSBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHNubXBfZnJlZV9zZXNzaW9uKCkKLSAgICAgIC0gRml4ZWQgbWVtb3J5IGNvcnJ1cHRpb24gdHJpZ2dlcmVkIGJ5IHNubXBkLmNvbmYgImVudW0iIGtleXdvcmQKLSAgICAgIC0gRml4ZWQgYnVncyBpbiBidWlsZGluZy9wYXJzaW5nIDY0LWJpdCBpbnRlZ2VycwotICAgICAgLSBGaXhlZCBsZWFrcy1hdC1leGl0IHRyaWdnZXJlZCBieSB1c2luZyB0aGUgc25tcF9lbnVtIGNvZGUKLSAgICAgIC0gRml4ZWQgbWVtb3J5IGxlYWsgaW4gbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpCi0gICAgICAtIEZpeGVkIG1lbW9yeSBsZWFrIHRyaWdnZXJlZCBieSBkdXBsaWNhdGUgc2VfYWRkX3BhaXJfdG9fbGlzdCgpCi0gICAgICAtIEZpeCBpc3N1ZSB3aXRoIFVTTSB1c2luZyBpbmFjdGl2ZSB1c2VycwotICAgICAgLSBGaXhlZCBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IHdoZW4gZ2VuZXJhdGluZyB0ZW1wIGZpbGUgbmFtZXMKLSAgICAgIC0gSW52b2tpbmcgc2VfY2xlYXJfc2xpc3QoKSBubyBsb25nZXIgY3JlYXRlcyBhIGRhbmdsaW5nIHBvaW50ZXIKLSAgICAgIC0gVXNlIHJlYWxsb2MraW5pdCBpbnN0ZWFkIG9mIGNhbGxvYworICAgICAgLSBbUEFUQ0ggMzUyNjU5OV06IERvbid0IGhhbmcgb24gcmV0cmllZCBmYWlsaW5nIFNOTVB2MyByZXNwb25zZXMKKyAgICAgIC0gQXZvaWQgdW5uZWNlc3NhcnkgY2FzdHMgd2hlbiB1c2luZyBuZXRzbm1wX3NldF9yb3dfY29sdW1uKCkKKyAgICAgIC0gRGVjbGFyZSAidHlwZSIgYXJndW1lbnQgb2Ygc2Vfc3RvcmVfeHh4KCkgYXMgY29uc3QKKyAgICAgIC0gTWFrZSBpdCBleHBsaWNpdCB0aGF0IE1BWF9TVUJJRCBpcyBhbiB1bnNpZ25lZCBjb25zdGFudAorICAgICAgLSBQcmV2ZW50IGdjYyBwZWQtd2FybmluZyBmb3IgTkVUU05NUF9SRU1PVkVfQ09OU1QKKyAgICAgIC0gU2ltcGxpZnkgaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIG1hbmlwdWxhdGluZyA2NC1iaXQgbnVtYmVycy4KKyAgICAgIC0gU2ltcGxpZnkgdGhlIHNlX3N0b3JlX2VudW1fbGlzdCgpIGltcGxlbWVudGF0aW9uCiAKICAgICBzbm1wZDoKLSAgICAgIC0gW0JVRyAxODQwMjMwXTogRG9uJ3QgaW5jbHVkZSBubG1Mb2dWYXJpYWJsZUluZGV4IGFzIChwc2V1ZG8tKWFjY2Vzc2luZyBjb2x1bW4KLSAgICAgIC0gW0JVRyAyOTcyNTc5XTogZml4ZWQgY2hlY2tpbmcgb2Ygc25tcFRhcmdldEFkZHJSb3dTdGF0dXMgU0VUIHJlcXVlc3RzCi0gICAgICAtIFtCVUcgMzAwMzk4MV06IFByb3RlY3QgYWdhaW5zdCBjb25maWcgcGFyc2luZyBidWZmZXIgb3ZlcmZsb3cKLSAgICAgIC0gW0JVRyAzMDE5MjQzXTogUmVnaXN0ZXIgZXhlY0ZpeCBjb21wYXRhYmlsaXR5IGRpcmVjdGl2ZSBjb3JyZWN0bHkKLSAgICAgIC0gW0JVRyAzMDU4MTAxXTogV3JpdGVhYmxlICdpbnQnIGluc3RhbmNlcyBkb24ndCB3b3JrIG9uIDY0LWJpdCBzeXN0ZW1zCisgICAgICAtIFtCVUcgMzQzOTIzNF06IENvcnJlY3QgZGVwZW5kZW5jaWVzIG9mIHVjZC1zbm1wL3twYXNzLHBhc3NfcGVyc2lzdH0KKyAgICAgIC0gW0JVRyAzNDM5MjM0XTogTW92ZSBuZXRzbm1wX3Bhc3Nfc3RyX3RvX2Vycm5vIHRvIHBhc3NfY29tbW9uCisgICAgICAtIFtCVUcgMzQ0MDc1Ml06IFJlcG9ydCBzcGVlZCBjb3JyZWN0bHkgZm9yIHVudXN1YWwgRSduZXQgaW50ZXJmYWNlcworICAgICAgLSBbQlVHIDM0NjM3NjddOiBIYW5kbGUgcGFyc2luZyBzdWJpZGVudGlmaWVycyA+IDJeMzEKKyAgICAgIC0gW0JVRyAzNTI2NTQ5XTogQ1ZFLTIwMTItMjE0MSBBcnJheSBpbmRleCBlcnJvciBsZWFkaW5nIHRvIGNyYXNoCisgICAgICAtIFtCVUcgMzUzMjA5MF06IEZpeCBoaWdoIGlmSW5kZXggdmFsdWVzIGNyYXNoaW5nIGhyRGV2aWNlRGVzY3IKKyAgICAgIC0gW1BBVENIIDMxNzU2NDBdOiBVc2UgSVBfUkVDVkRTVEFERFIgc29ja29wdCB3aGVyZSBhdmFpbGFibGUgKCpCU0QpCisgICAgICAtIFtQQVRDSCAzMTk4NzgxXTogRml4IGNvbXBpbGF0aW9uIG9mIGRpc21hbi97cGluZyx0cmFjZXJvdXRlfSBtb2R1bGVzCisgICAgICAtIFtQQVRDSCAzNDAyMzc2XTogUmVjb2duaXNlIFJlaXNlckZTIHN5c3RlbXMKKyAgICAgIC0gW1BBVENIIDM0MTAwNTBdOiBTa2lwIGFscmVhZHktJ3Byb2Nlc3NlZCcgdmFyYmluZHMKKyAgICAgIC0gW1BBVENIIDM0MTAwNTldOiBGaXggc3BhcnNlbHkgYXVnbWVudGluZyB0cmlnZ2VyIHRhYmxlcworICAgICAgLSBbUEFUQ0ggMzQ0NzQ0NF06IEZpeCBTSUdfUElQRSBoYW5kbGluZworICAgICAgLSBbUEFUQ0ggMzQ0NzY3MV06IEZpeCBvdmVycmlkZSBoYW5kbGluZyBvZiBPSUQgdmFsdWVzCisgICAgICAtIFtQQVRDSCAzNDUzODY4XTogRmFjdG9yIGNvbW1vbiBjb2RlIGludG8gcGFzc19jb21tb24KKyAgICAgIC0gW1BBVENIIDM0Nzk3NDBdOiBGaXggaHJTV1J1blBlcmYgc3RhdGlzdGljcworICAgICAgLSBbUEFUQ0ggMzQ4NzkxOV06IEZpeCBjb21waWxhdGlvbiB3aGVuIGNhY2hpbmcgaXMgZGlzYWJsZWQKKyAgICAgIC0gW1BBVENIIDM0ODc4NjddOiBEb24ndCBza2lwIG1pc3NpbmcgaWZYVGFibGUgZW50cmllcyAoaWZDb25uZWN0b3JQcmVzZW50IEZBTFNFKQorICAgICAgLSBbUEFUQ0ggMzQ5NTY5N106IFN0b3JlIHBlcnNpc3RlbnQgc25tcFRhcmdldCB0YWJsZSBjaGFuZ2VzCisgICAgICAtIEFkZGVkIE9DRlMyIChPcmFjbGUgQ2x1c3RlciBGUykgdG8gaHJTdG9yYWdlVGFibGUgYW5kIGhyRlNUYWJsZQorICAgICAgLSBESVNNQU4tU0NIRURVTEVSLU1JQjogSGFuZGxlIDMyLWNoYXIgY29udGV4dE5hbWUgdmFsdWVzIGNvcnJlY3RseS4KKyAgICAgIC0gSUYtTUlCOjppZlR5cGU6IFJlcG9ydCBJbmZpbmlCYW5kIGludGVyZmFjZXMgY29ycmVjdGx5CisgICAgICAtIFVEUC1NSUI6IFJlcG9ydCBwcm9wZXIgYWRkcmVzcyBpbiB1ZHBMb2NhbEFkZHJlc3MgaW5zdGVhZCBvZiAwLjAuMC4wLgorICAgICAgLSBFbGltaW5hdGUgdmFyaW91cyBkZWFkIHZhcmlhYmxlcworICAgICAgLSBSZXR1cm4gZXJyb3IgaW5zdGVhZCBvZiBleGl0aW5nIG9uIGluaXQgcHJvYmxlbXMKKyAgICAgIC0gTWFrZSB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZGxtb2QgbW9kdWxlIGZhaWwgcmF0aGVyIHRoYW4KKwlnZW5lcmF0ZSBhIGR1bW15IG1vZHVsZSBpZiB0aGUgZGxvcGVuIGZ1bmN0aW9uIGlzbid0IGF2YWlsYWJsZS4KKyAgICAgIC0gU211eDogc2ltcGxpZnkgc211eF9saXN0X2RldGFjaCgpCisKKyAgICBzbm1wZHg6CisgICAgICAtIFtQQVRDSCAzNDQ1NDM3XTogTG9nIEFnZW50WCBkaXNjb25uZWN0aW9ucyAoaW4gbGluZSB3aXRoIGNvbm5lY3Rpb25zKQorCisgICAgc25tcHRyYXBkOgorICAgICAgLSBBZGQgbWlzc2luZyBuZXdsaW5lIGNoYXJhY3RlciBpbiBhIGxvZyBtZXNzYWdlCisgICAgICAtIEF2b2lkIGNyYXNoIGR1cmluZyBzaHV0ZG93biBkdWUgdG8gaW52b2tpbmcgcGVybF9kZXN0cnVjdChOVUxMKQorICAgICAgLSBJbnZva2Ugc2h1dGRvd25fcGVybCgpIHdoZW4gc2h1dHRpbmcgZG93bgorICAgICAgLSBEb24ndCBpbnZva2Ugc2h1dGRvd25fcGVybCgpIGZyb20gU0lHVEVSTSBoYW5kbGVyCisgICAgICAtIEhhbmRsZSBjaGFuZ2VzIHRvIGxpYm15c3FsY2xpZW50IEFQSSAoYWZmZWN0cyBGZWRvcmEgMTUvMTYpCisKKyAgICBhcHBzIDoKKyAgICAgIC0gW1BBVENIIDI4MzU1NzddOiBSZXBsYWNlIFNOTVBfWkVSTyBvZiBhcnJheXMgd2l0aCBhIG1lbXNldC4KKworICAgIG1pYjJjOgorICAgICAgLSBbUEFUQ0ggMzIxMTQ4NF06IFN1cHBvcnQgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcworCisgICAgcGVybDoKKyAgICAgIC0gRWxpbWluYXRlIHZhcmlvdXMgZGVhZCB2YXJpYWJsZXMKKyAgICAgIC0gRml4IHNwZWxsaW5nIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBTTk1QIG1vZHVsZQorICAgICAgLSBGaXhlZCBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBmYWlscy4KKyAgICAgIC0gTWFrZSBzdXJlIGNvbnN0YW50IFNOTVBfREVGQVVMVF9SRVRSSUVTIGlzIHJlY29nbml6ZWQKKyAgICAgIC0gQWRkIGNvbnN0YW50cyBORVRTTk1QX0NBTExCQUNLX09QX3tSRUNFSVZFRF9NRVNTQUdFLFRJTUVEX09VVH0KKworICAgIHB5dGhvbjoKKyAgICAgIC0gW1BBVENIIDMxODUwODVdOiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKKworICAgIEJ1aWxkL2luc3RhbGw6CisgICAgICAtIEluc3RhbGwgdXRpbF9mdW5jcyBzdWJoZWFkZXJzCisKKyAgICBtYW46CisgICAgICAtIFtCVUcgMzE5MDcyNV06IERvY3VtZW50IHNubXB7LF9zZXNzfXN5bmNoX3Jlc3BvbnNlICYgc25tcF9hc3luY19zZW5kCisKKyAgICB0ZXN0aW5nOgorICAgICAgLSBGaXggUGVybCByZWdyZXNzaW9uIHRlc3QgZmFpbHVyZXMKKyAgICAgIC0gRG9uJ3QgZmFpbCBza2lwcGVkIFBlcmwgdGVzdHMuCisKKyAgICBCU0Q6CisgICAgICAtIFtQQVRDSCAzMzgzOTY1XTogRml4IGlmLW1pYiBhZ2VudCBjb21waWxlIHdhcm5pbmdzIG9uICpCU0QKKworICAgIEZyZWVCU0Q6CisgICAgICAtIFtQQVRDSCAzNDg5Mzg3XTogSW5zdGFsbCBGcmVlQlNEIDEwIGhlYWRlciBmaWxlIChwbHVzIG90aGVyIG1pc3NpbmcgdmVyc2lvbnMpCisgICAgTGludXg6CisgICAgICAtIFtQQVRDSCAzNTI1OTk4XTogRG9uJ3QgdXNlIGFuIHVuaW5pdGlhbGlzZWQgdmFsdWUgaW4gZXJyb3IgbWVzc2FnZQorCisgICAgTWluR1c6CisgICAgICAtIEF2b2lkICJwcmFnbWEgY29tbWVudCIgd2FybmluZ3MgaW4gPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorICAgICAgLSBIZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IG5vdyB1c2FibGUgd2l0aCBNaW5HVworICAgICAgLSBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgV2luZG93cyByZWdpc3RyeSBzZXR0aW5ncworCisgICAgV2luZG93czoKKyAgICAgIC0gQXZvaWQgcHJvYmxlbXMgaWYgTmV0LVNOTVAgUGVybCBtb2R1bGVzIGFyZSBidWlsdCB3aXRoIGEgZGlmZmVyZW50CisgICAgICAgIHZlcnNpb24gb2YgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gdGhhbiB0aGF0IHVzZWQgZm9yIEFjdGl2ZVBlcmwKKyAgICAgIC0gQXZvaWQgcHJvYmxlbXMgd2l0aCBQQUNLQUdFXyogbWFjcm9zLCB3aGVuIHVzaW5nIEdOVSBhdXRvdG9vbHMKKyAgICAgIC0gTm93IGJ1aWxkcyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdCBjb21waWxlcgorICAgICAgLSBidWlsZC5iYXQ6IEdlbmVyYXRlIFBEQiBmaWxlcyBpbiByZWxlYXNlIG1vZGUKKyAgICAgIC0gYnVpbGQuYmF0OiBJbnN0YWxsIG5ldHNubXAuZGxsIGJlZm9yZSBydW5uaW5nIFBlcmwgcmVncmVzc2lvbiB0ZXN0cworICAgICAgLSBNYWtlIGxpbmtpbmcgd2l0aCByZWNlbnQgT3BlblNTTCBiaW5hcmllcyBzdWNjZWVkLgorICAgICAgLSBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHJvYnVzdCBhZ2FpbnN0IG1lbWFsbG9jIGZhaWx1cmVzLgorICAgICAgLSBQZXJsIG1vZHVsZXMgYnVpbGQgbm93IHdpdGggSVB2NiBlbmFibGVkLgorICAgICAgLSBTbm1wZDogUmVtb3ZlIGRsbW9kCisgICAgICAtIFNubXB0cmFwZDogTWFrZSB0aGUgSVAgYWRkcmVzcyB0byBob3N0bmFtZSBjb252ZXJzaW9uIHdvcmsKKworCisqNS41LjEqCisKKyAgICBzbm1wbGliOgorICAgICAgLSBbQlVHIDI4MzgyNDNdOiBDb3JyZWN0IHRoZSBvdXRwdXQgb2YgdW5zaWduZWQgdmFsdWVzCisgICAgICAtIFtCVUcgMjkxOTMyMF06IEF2b2lkIGFjY2Vzc2luZyBmcmVlZCBtZW1vcnkgUmVwb3J0ZWQgYnkgVG9tYXN6IExpcworICAgICAgLSBbQlVHIDI5MjIzOTBdOiBGaXggdGVzdCBmb3IgbWlzc2luZyBjb250ZXh0TmFtZSBwYXJhbWV0ZXIKKyAgICAgIC0gW0JVRyAzMDkzMTk5XTogRml4ZWQgYnVncyBpbiA2NC1iaXQgaW50ZWdlciBwYXJzaW5nCisgICAgICAtIFtCVUcgMzEzNDMyM106IEZpeCBjcmFzaCB3aGVuIGNvbXBhcmluZyBpbnZhbGlkIE9JRHMKKyAgICAgIC0gW0JVRyAzMTcxODc4XTogVXNpbmcgU05NUHYzIGNvbnRleHQgZG9lcyBub3Qgd29yaworICAgICAgLSBbUEFUQ0ggMjg3MTc0N106IHBsdWcgbWVtb3J5IGxlYWsgaW4gT0lEIHByb2Nlc3NpbmcKKyAgICAgIC0gW1BBVENIIDI5NTIxNDBdOiBGaXggb3ZlcmZsb3cgb2YgY291bnRlcjMyIGFuZCBnYXVnZTMyIG9uIDY0Yml0IHN5c3RlbXMKKyAgICAgIC0gW1BBVENIIDI5NzEyNzBdOiByZWZ1c2UgdG8gcGFyc2UgQVNOLjEgdG9rZW5zIHdpdGggd3JvbmcgdHlwZSBmaWVsZAorICAgICAgLSBbUEFUQ0ggMzA2NzU0MF06IEZpeCBJUHY0IE9JRCBpbmRleGVzIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMuCisgICAgICAtIFtQQVRDSCAzMDU4NjQ1XTogVXNlIE1TR19ET05UV0FJVCBmb3IgdGhlIHVuaXggZG9tYWluIHNvY2tldAorICAgICAgLSBbUEFUQ0ggMzE2NTg3OF06IENhdGNoIGJ1ZmZlciBvdmVycnVuIG9uIDY0LWJpdCBzeXN0ZW1zCisgICAgICAtIFtQQVRDSCAzMjAzODA2XTogQWRkIGZ1bmN0aW9uIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdCgpCisgICAgICAtIEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkKKyAgICAgIC0gQWRkZWQgbmV0c25tcF94eHgoKSBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnMKKyAgICAgIC0gQWRkZWQgbWFjcm8gbmV0c25tcF9zdGF0aWNfYXNzZXJ0KCkuCisgICAgICAtIEFkZGVkIHNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCgpLgorICAgICAgLSBBdm9pZCBWYWxncmluZCBjb21wbGFpbnRzIGFib3V0IHVuaW5pdGlhbGl6ZWQgZGF0YQorICAgICAgLSBDaGFuZ2UgdGhlIHBhcnNpbmcgb2YgcmFuZ2VzIHRvIGFjY2VwdCBhbGwgdmFsaWQgdmFsdWVzLgorICAgICAgLSBGaXggX19jcGx1c3BsdXMgZXh0ZXJuICJDIiB3cmFwcGluZworICAgICAgLSBGaXggYWdlbnQgY3Jhc2ggd2hlbiBzZW5kaW5nIGVuY3J5cHRlZCBTTk1QdjMgdHJhcHMuCisgICAgICAtIEZpeCBkb3VibGUgZnJlZSBjcmFzaCB3aGVuIHJlbGVhc2luZyBkdXBsaWNhdGVkIGhhbmRsZXJzCisgICAgICAtIEZpeCBkdXBsaWNhdGUgc2VfYWRkX3BhaXJfdG9fbGlzdCgpIG1lbW9yeSBsZWFrCisgICAgICAtIEZpeCBpc3N1ZSB3aXRoIFVTTSB1c2luZyBpbmFjdGl2ZSB1c2VycworICAgICAgLSBGaXggcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGdlbmVyYXRpbmcgdGVtcC4gZmlsZSBuYW1lcworICAgICAgLSBGaXggdmFyaW91cyBwcm9ibGVtcyB3aXRoIHNlX2NsZWFyX3NsaXN0KCkKKyAgICAgIC0gRm9yY2UgYSA7IGF0IHRoZSBlbmQgb2YgdGhlIHN0YXRpY19hc3NlcnQgbWFjcm8uCisgICAgICAtIEhhbmRsZSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBpbiBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QKKyAgICAgIC0gTWFrZSBzdXJlIHRoYXQgYSBtYXNrIGlzIGdpdmVuIHRvIG9wZW4gd2hlbiBPX0NSRUFUIGlzIHNwZWNpZmllZAorCisgICAgc25tcGQ6CisgICAgICAtIFtCVUcgMTg0MDIzMF06IERvbid0IGluY2x1ZGUgdGhlIGluZGV4IG9iamVjdCBhcyAocHNldWRvLSlhY2Nlc3NpYmxlIGNvbHVtbgorICAgICAgLSBbQlVHIDI4MjIzNjBdOiBGaXggbWVtb3J5IGxlYWsgd2hlbiBidWlsZGluZyB0YWJsZSBPSURzCisgICAgICAtIFtCVUcgMjg0MTAwOF06IFByb3RlY3QgYWdhaW5zdCBjcmFzaCBmb2xsb3dpbmcgZmFpbGVkIEFnZW50WCByZXNwb25zZQorICAgICAgLSBbQlVHIDI4NzM4NThdOiBGaXggaGFuZGxpbmcgb2Ygc2NoZWRPd25lciBpbmRleAorICAgICAgLSBbQlVHIDI4OTQwNTldOiBIYW5kbGUgZXJyb3JzIHdoZW4gY291bnRpbmcgaW50ZXJmYWNlcworICAgICAgLSBbQlVHIDI4OTcwMDBdOiBTdXBwcmVzcyAzMi1iaXQgY291bnRlciB0cnVuY2F0aW9uIHdhcm5pbmdzCisgICAgICAtIFtCVUcgMjkwMDA3OF06IEFkZCBzdXBwb3J0IGZvciBPSUQgdmFyaWFibGVzIHdpdGggc2l6ZSBpbiBlbGVtZW50cworCSAgICAgICAgICAgICAgIGluc3RlYWQgb2YgYnl0ZXMsIGNvcnJlY3Qgc3lzT2JqZWN0SUQgdG8gdXNlIHRoaXMKKyAgICAgIC0gW0JVRyAyOTI0MTQwXTogRml4IHRlcm1pbmF0aW9uIG9mIENQVS9GUFUgdHlwZXMKKyAgICAgIC0gW0JVRyAyOTcyNTc5XTogRml4IGNoZWNraW5nIG9mIHNubXBUYXJnZXRBZGRyUm93U3RhdHVzIFNFVCByZXF1ZXN0cworICAgICAgLSBbQlVHIDMwMDM5ODFdOiBQcm90ZWN0IGFnYWluc3QgYnVmZmVyIG92ZXJmbG93CisgICAgICAtIFtCVUcgMzA1ODEwMV06IDY0LWJpdCBzeXN0ZW1zIG9ubHkgc3VwcG9ydCB3cml0ZWFibGUgJ2xvbmcnIGluc3RhbmNlcyAobm90IGludCkKICAgICAgIC0gW0JVRyAzMDYyNTM4XTogRml4IGNvbTJzZWMqIGhhbmRsaW5nIG9mIG5vbi1kZWZhdWx0IGNvbnRleHRzCi0gICAgICAtIFtCVUcgMzE1MTg5N106IGZkIGxlYWsgd2l0aCAvcHJvYy9wYXJ0aXRpb25zIHJlYWQgaW4gZGlza2lvCiAgICAgICAtIFtCVUcgMzE3ODM4OV06IEZpeCBpbmNvbnNpc3RlbnQgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cwotICAgICAgLSBbQlVHIDMxODU1MjhdOiBzaHV0ZG93bl9tYXN0ZXJfYWdlbnQgZG9lc24ndCBjbG9zZSBVRFAgc29ja2V0cwotICAgICAgLSBbQlVHIDMzMDUxNTddOiBGaXggaXBBZGRyZXNzUHJlZml4IGhhbmRsaW5nIG9mIElQdjYgYWRkcmVzc2VzCisgICAgICAtIFtCVUcgMzE4NTUyOF06IHNodXRkb3duX21hc3Rlcl9hZ2VudCBkaWRuJ3QgY2xvc2UgVURQIHNvY2tldAogICAgICAgLSBbUEFUQ0ggMjExOTcyNV06IEZpeCBza2lwTkZTSW5Ib3N0UmVzb3VyY2VzIGhhbmRsaW5nIG9mIGhyU3RvcmFnZVRhYmxlCiAgICAgICAtIFtQQVRDSCAyODI1NjUzXTogRml4IHNlbmRtYWlsLmNmIHBhcnNpbmcgaW4gY2VydGFpbiBjb25kaXRpb25zCisgICAgICAtIFtQQVRDSCAyODM1NTc2XTogRml4IGVuZGlhbm5lc3MgaXNzdWVzIGluIHBhc3MvcGFzc19wZXJzaXN0CisgICAgICAtIFtQQVRDSCAyODc3NTE4XTogRml4IGhhbmRsaW5nIG9mIHNjb3BlZCBBZ2VudFggdmFyaWFibGVzCisgICAgICAtIFtQQVRDSCAyODgzMTU1XTogRml4IG1lbW9yeSBsZWFrIGluIHByb3h5IGhhbmRsaW5nCisgICAgICAtIFtQQVRDSCAyODgzMjIwXTogRml4IGNvbXBpbGF0aW9uIHByb2JsZW1zIHdoZW4gaWZYVGFibGUgaXMgbm90IGluY2x1ZGVkCisgICAgICAtIFtQQVRDSCAyODg3ODE2XTogUHJvdGVjdCBhZ2FpbnN0IGRpdmlzaW9uLWJ5LXplcm8gY3Jhc2gKKyAgICAgIC0gW1BBVENIIDI5MDEwMjldOiBGaXggY29tcGlsZXIgd2FybmluZyBvbiBDbG9zZUhhbmRsZSgpCisgICAgICAtIFtQQVRDSCAyOTAzMDkyXTogRml4IGJyb2tlbiBoYW5kbGluZyBvZiBicm9hZGNhc3QgZW50cmllcy4KICAgICAgIC0gW1BBVENIIDI5MDQ5MDBdOiBEb2N1bWVudGF0aW9uIHBsdXMgYXNzb3J0ZWQgaGFuZGxlciBjb2RlIGZpeGVzCisgICAgICAtIFtQQVRDSCAyOTExMzIzXTogRml4IGFnZW50IGxvY2t1cCB3aGVuIG1vbml0b3JpbmcgQWdlbnRYLWRlbGVnYXRlZCBpbmZvcm1hdGlvbgogICAgICAgLSBbUEFUQ0ggMjkxMTM2MV06IFJlbW92ZSByZWR1bmRhbnQgdmFyaWFibGVzCisgICAgICAtIFtQQVRDSCAyOTExOTcwXTogUHJvcGVybHkgdGVybWluYXRlIGxpbmtlZCBsaXN0IG9mIHJlZ2lzdHJhdGlvbnMKICAgICAgIC0gW1BBVENIIDI5NDE4MTFdOiBIYW5kbGUgc3VjY2Vzc2Z1bCByZXF1ZXN0cyB3aXRoIHJlcUlEIDAKKyAgICAgIC0gW1BBVENIIDI5Njc0MDBdOiBSZXRyaWV2ZSBlcnJvciBjb3VudGVycyBmb3IgdGhlIEV0aGVyTGlrZS1NSUIKKyAgICAgIC0gW1BBVENIIDI5Njg2NDJdOiBDYXRjaCBvdmVyZmxvdyBvZiBwYXNzLXRocm91Z2ggY29tbWFuZCBidWZmZXIKICAgICAgIC0gW1BBVENIIDI5NzUyNTRdOiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zCisgICAgICAtIFtQQVRDSCAzMDQ0NTEyXTogRml4IHN5c29iamVjdGlkIGRpcmVjdGl2ZQorICAgICAgLSBbUEFUQ0ggMzA1MzQyOF06IEZpeCBnZXRfcGlkX2Zyb21faW5vZGUgd2hlbiB0aGUgaW5vZGUgaXMgbm90IGZvdW5kCiAgICAgICAtIFtQQVRDSCAzMDUzNDM2XTogRml4IHRjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2VzcyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MKLSAgICAgIC0gW1BBVENIIDMwNjI1MjZdOiBGaXggc2VjdXJpdHkgZW5naW5lSUQgc2V0dGluZyBpbiB0aGUgdHJhcHNlc3MgZGlyZWN0aXZlCi0gICAgICAtIFtQQVRDSCAzMDY2ODYyXTogRml4IGNvbXBhcmlzb24gb2YgbGFyZ2UgdW5zaWduZWQgaW5kZXhlcyAoZGlzay9leHRlbmQgdGFibGVzKQorICAgICAgLSBbUEFUQ0ggMzA1ODE0MF06IENoZWNrIHRoYXQgaW5vZGUgaXMgbm9uLXplcm8KKyAgICAgIC0gW1BBVENIIDMwNjI1MjZdOiBGaXggc2VjdXJpdHkgZW5naW5lSUQgc2V0dGluZyBpbiAndHJhcHNlc3MnIGRpcmVjdGl2ZQorICAgICAgLSBbUEFUQ0ggMzA3NDkxOF06IEF2b2lkIG1lbW9yeSBsZWFrcyBmb2xsb3dpbmcgQ09OVEFJTkVSX0lOU0VSVCBmYWlsdXJlcwogICAgICAgLSBbUEFUQ0ggMzA5NjcyNV06IERvbid0IHJlZ2lzdGVyIHYxVHJhcCBjYWxsYmFjaywgaWYgU05NUHYxIG5vdCBzdXBwb3J0ZWQKLSAgICAgIC0gW1BBVENIIDMwOTY3MjVdOiBzeXNPUlRhYmxlIHJlZ2lzdGF0aW9uIGZvciBOb3RpZmljYXRpb24gTG9nIG1pYgogICAgICAgLSBbUEFUQ0ggMzA5NjcyNV06IEluY2x1ZGUgU05NUHYxIHRyYXAgT0lEcyBpbiBubG1Mb2dOb3RpZmljYXRpb25JRCBjb2x1bW4KLSAgICAgIC0gW1BBVENIIDMxNDE0NjJdOiBGaXggYWdlbnR4IHN1YmFnZW50IGlzc3VlcyB3aXRoIG11bHRpcGxlLW9iamVjdCByZXF1ZXN0cwotICAgICAgLSBbUEFUQ0ggMzE5ODc4MV06IEVuc3VyZSBkaXNtYW4ve3BpbmcsdHJhY2Vyb3V0ZX0gZG8gYXQgbGVhc3QgY29tcGlsZQotICAgICAgLSBbUEFUQ0ggMzI5OTM4NF06IEZpeCBJTkZPUk1zIHNvIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQKKyAgICAgIC0gW1BBVENIIDMwOTY3MjVdOiBzeXNPUlRhYmxlIHJlZ2lzdGF0aW9uIGZvciBub3RpZmljYXRpb24gbG9nIG1pYiAgCisgICAgICAtIFtQQVRDSCAzMTQxNDYyXTogZml4IGFnZW50eCBzdWJhZ2VudCBpc3N1ZXMgd2l0aCBtdWx0aXBsZS1vYmplY3QgcmVxdWVzdHMKKyAgICAgIC0gW1BBVENIIDMxNTI0MTJdOiBIYW5kbGUgKGFuZCByZXBvcnQpIHByb2JsZW1zIHJlYWRpbmcgL3Byb2Mvdm1zdGF0CiAKICAgICAgIC0gQWRkIG5ld2x5IGNyZWF0ZWQvZGVzdHJveWVkIGludGVyZmFjZXMgdG8gaXB2NklmVGFibGUKLSAgICAgIC0gQ2FsbCBzaHV0ZG93bl9tYXN0ZXJfYWdlbnQoKSBhbmQgc2h1dGRvd25fYWdlbnQoKSBkdXJpbmcgc2h1dGRvd24KLSAgICAgIC0gRG9uJ3QgZGVyZWdpc3RlciBjbG9zZWQgc2Vzc2lvbnMKLSAgICAgIC0gRG9uJ3Qgc2Vjb25kLWd1ZXNzIGNhY2hlIGhhbmRsZXIKLSAgICAgIC0gRml4IGNsZWFuX3N1YnRyZWUoKSBtZW1vcnkgaGFuZGxpbmcKLSAgICAgIC0gRml4ZWQgYSBkb3VibGUgZnJlZSwgdHJpZ2dlcmVkIGJ5IGNsZWFuaW5nIHVwIGVtYmVkZGVkIFBlcmwgZGF0YSBzdHJ1Y3R1cmUuCi0gICAgICAtIEZpeGVkIGFkZGluZyBuZXcgYWRkcmVzc2VzIHRvIGlwQWRkcmVzc1RhYmxlCi0gICAgICAtIEZpeGVkIGxvZ2dpbmcgb2YgJ3RydW5jYXRpbmcgaW50ZWdlciB2YWx1ZSA+IDMyIGJpdHMnIGluIHtJUCxUQ1B9LU1JQgotICAgICAgLSBGaXhlZCBJUC1NSUI6OmlwSWZTdGF0c1JlYXNtUmVxZHMgdmFsdWUKLSAgICAgIC0gRml4ZWQgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBwYXJzaW5nIE9JRHMgaW4gY29uZmlnIGZpbGVzCi0gICAgICAtIEZpeGVkIHJhY2UgY29uZGl0aW9ucyBpbiBoclNXUnVuVGFibGUgYW5kIFVDRCBwclRhYmxlCi0gICAgICAtIEZpeGVkIGFnZW50IGJvZ3VzIDY0LWJpdCB3cmFwIHdhcm5pbmcgKGlwU3lzdGVtU3RhdHMpCi0gICAgICAtIEZpeCBlbmdpbmVpZCBnZW5lcmF0aW9uIG9uIG91dGdvaW5nIHYzIHRyYXBzIGZyb20gdGhlIGFnZW50CisgICAgICAtIERvbid0IGxldCBNSUIgbW9kdWxlcyBzZWNvbmQtZ3Vlc3MgdGhlIGNhY2hlIGhhbmRsZXIKKyAgICAgIC0gRml4IGFkZGluZyBuZXcgYWRkcmVzc2VzIHRvIGlwQWRkcmVzc1RhYmxlCisgICAgICAtIEZpeCBlbmdpbmVJRCBnZW5lcmF0aW9uIG9uIG91dGdvaW5nIHYzIHRyYXBzIGZyb20gdGhlIGFnZW50CisgICAgICAtIEZpeCBlcnJvbmVvdXMgIjY0Yml0IHdyYXAiIHdhcm5pbmdzIHdoZW4gY29tcHV0aW5nIGlwU3lzdGVtU3RhdHMKKyAgICAgIC0gRml4IGludmFsaWQgYWNjZXNzIHRvIG1lbW9yeSBpbiBUQ1AtTUlCCisgICAgICAtIEZpeCBJUC1NSUI6OmlwSWZTdGF0c1JlYXNtUmVxZHMgdmFsdWUgKHR5cG8pCisgICAgICAtIEZpeCBJUHY2IGZvcndhcmRpbmcgTUlCIG9iamVjdCAoYm9vbGVhbiwgbm90IFRydXRoVmFsdWUpCisgICAgICAtIEZpeCByYXJlIHJhY2UgY29uZGl0aW9uIHdoZW4gcmVhZGluZyBSUE0gZGF0YWJhc2UKKyAgICAgIC0gRml4ZWQgcmFjZSBjb25kaXRpb24gaW4gaHJTV1J1blRhYmxlCiAgICAgICAtIEZpeCBWQUNNIHBlcnNpc3RhbnQgc3RvcmFnZS4KLSAgICAgIC0gT3B0aW1pemF0aW9ucyBmb3IgbGFyZ2Ugcm91dGUgdGFibGVzCi0gICAgICAtIFVzZSBjYWNoZS11bmlxdWUgaWQgaW5zdGVhZCBvZiBoYW5kbGVyIG5hbWUgZm9yIHNoYXJlZCBjYWNoZSByZWxvYWQgcHJvdGVjdGlvbgotICAgICAgLSBWYXJpb3VzIE1JQi1zcGVjaWZpYyBsZWFrLWF0LWV4aXQgZml4ZXMuCisgICAgICAtIEZpeCB2YXJpb3VzIG1lbW9yeSAmIGZpbGUtZGVzY3JpcHRvciBsZWFrcworICAgICAgLSBIYW5kbGUgSS9GcyB3aXRob3V0IGJyb2FkY2FzdCBhZGRyZXNzZXMgKElGL0lQLU1JQnMpCisgICAgICAtIEltcHJvdmUgYWdlbnQgc2h1dGRvd24gcHJvY2Vzc2luZworICAgICAgLSBJbXByb3ZlIGVycm9yIGxvZ2dpbmcgd2hlbiBmcmVlaW5nIGFjdGl2ZSBjYWNoZXMKKyAgICAgIC0gTWFrZSBzdXJlIHRoYXQgYSBtYXNrIGlzIGdpdmVuIHRvIG9wZW4gd2hlbiBPX0NSRUFUIGlzIHNwZWNpZmllZAorICAgICAgLSBSZXBvcnQgR0ZTIGZpbGVzeXN0ZW1zIGluIGhyU3RvcmFnZVRhYmxlIGFuZCBockZTVGFibGUKKyAgICAgIC0gUmVwb3J0IHJlYWwgaWZTcGVlZCBvZiAoZG93bikgbmV0d29yayBpbnRlcmZhY2UgKHdoZXJlIHBvc3NpYmxlKQorICAgICAgLSBTa2lwIG5vbi1BRl9JTkVUIGludGVyZmFjZXMgd2hlbiBsb2FkaW5nIGlwdjQgYWRkcnMKKyAgICAgIC0gU3VwcG9ydCBOL1cgaW50ZXJmYWNlcyB3aXRoIEhXIGFkZHJlc3MgPjYgYnl0ZXMgKGUuZy4gSW5maW5pQmFuZCkKKyAgICAgICAgaW4gaXBOZXRUb01lZGlhVGFibGUgYW5kIGlwTmV0VG9QaHlzaWNhbFRhYmxlLgorICAgICAgLSBTdXBwb3J0IHZpZXdzIHdpdGggaW5kZXhlcyB2YWx1ZXM+MjU1CisgICAgICAtIFN1cHByZXNzIDMyLWJpdCB0cnVuY2F0aW9uIHdhcm5pbmdzIChJUC1NSUIgJiBUQ1AtTUlCKQorICAgICAgLSBTdXBwcmVzcyBtaXNzaW5nIGlxdWVyeVNlY05hbWUgd2FybmluZyBpZiBpdCB3b24ndCBiZSBuZWVkZWQKIAotICAgIHNubXB0cmFuc2xhdGU6Ci0gICAgICAtIEZpeGVkIHByaW50aW5nIG9mIHJhbmdlcyB3aXRoIFVOU0lHTkVEIHR5cGUKKyAgICBzbm1wZHg6CisgICAgICAtIGNoYW5nZWQgZGVmYXVsdCBUQ1AgdGFyZ2V0IGZyb20gMC4wLjAuMDo3MDUgdG8gbG9jYWxob3N0OjcwNQogCiAgICAgc25tcHRyYXBkOgogICAgICAgLSBbQlVHIDMxNTEyNTRdOiBGaXggY3Jhc2ggd2l0aCBpbnZhbGlkIHRyYXBoYW5kbGUgZGlyZWN0aXZlCi0gICAgICAtIEZpeGVkIGEgZG91YmxlIGZyZWUsIHRyaWdnZXJlZCBieSBjbGVhbmluZyB1cCBlbWJlZGRlZCBQZXJsIGRhdGEgc3RydWN0dXJlLgorICAgICAgLSBGaXhlZCBhc3NvcnRlZCBkb3VibGUgZnJlZSBhdCBleGl0IHByb2JsZW1zCisKKyAgICBzbm1wdGFibGU6CisgICAgICAtIFtCVUcgMjgzNzk5OF06IEhhbmRsZSBtaXNzaW5nIGluc3RhbmNlIHN1YmlkZW50aWZpZXJzIGluIHJlc3VsdHMKKyAgICAgIC0gW1BBVENIIDI4NTAwNjddOiBTdXBwcmVzcyBleHRyYW5lb3VzICJpbmRleCIgaGVhZGVyIHRva2VuCisKKyAgICBzbm1wdHJhbnNsYXRlOgorICAgICAgLSBmaXhlZCBwcmludGluZyBvZiByYW5nZXMgd2l0aCBVTlNJR05FRCB0eXBlLgogCiAgICAgc25tcHVzbToKLSAgICAgIC0gQ29ycmVjdCBpZmRlZnMsIHJlbW92ZSBkZWFkIHZhcmlhYmxlcworICAgICAgLSBDb3JyZWN0IGlmZGVmcywgcmVtb3ZlIGRlYWQgdmFyaWFibGVzLgorCisgICAgc25tcHdhbGs6CisgICAgICAtIEZpeCBoYW5kbGluZyBvZiBlbmQgT0lEIGJlaW5nIGxvbmdlciB0aGFuIHRoZSBzdGFydGluZyBPSUQKIAogICAgIGJ1aWxkOgotICAgICAgLSBbQlVHIDMxMDI5MDRdOiBDb21waWxlIGFsbCBzb3VyY2UgZmlsZXMgd2l0aCAtZm5vLXN0cmljdC1hbGlhc2luZworICAgICAgLSBbQlVHIDMxMDI5MDRdOiBCdWlsZCB3aXRoIC1mbm8tc3RyaWN0LWFsaWFzaW5nIChpZiBzdXBwb3J0ZWQpCisgICAgICAtIEFkZCBkZXRlY3Rpb24gb2YgbG1fc2Vuc29ycyB2ZXJzaW9uCisgICAgICAtIEF2b2lkIHVzZSBvZiAidGFpbCAtMSIgKG5vbiBQT1NJWC1jb21wbGlhbnQpCiAgICAgICAtIERvIG5vdCBjYWxsIFZBQ00gQVBJcyBpZiBWQUNNIG1vZHVsZSBpcyBub3QgaW5jbHVkZWQKLSAgICAgIC0gRml4IGF1dG9jb25mIGRldGVjdGlvbiBvZiBzdHJjYXNlY21wCi0gICAgICAtIEZpeCBidWlsZGluZyBvZiBzdGF0aWMgYXBwbGljYXRpb25zIHVzaW5nIG5ldC1zbm1wLWNvbmZpZyAtKmxpYnMKLSAgICAgIC0gRml4IGRlZmluaXRpb24gb2YgVkVSU0lPTiAobnVtYmVyLCBub3QgZXhwcmVzc2lvbikKKyAgICAgIC0gRml4IGJ1aWxkaW5nIHN0YXRpYyBhcHBsaWNhdGlvbnMgdXNpbmcgbmV0LXNubXAtY29uZmlnCisgICAgICAtIEZpeCBjb21waWxhdGlvbiB3aXRoIHJwbS00LjYgKHVzaW5nIGxlZ2FjeSBBUEkpCisgICAgICAtIEZpeCAnbWFrZSB0ZXN0IFRFU1RPUFRTPSItUCB0Y3AiJworICAgICAgLSBGaXggb3JkZXIgb2YgcnBtbGliIGRldGVjdGlvbiBhbmQgYWdlbnQgbW9kdWxlIGNvbmZpZ3VyYXRpb24KKyAgICAgIC0gUnVuIHJwbSBjb25maWd1cmUgY2hlY2tzIGZvciAocnBtLWJhc2VkKSBocl9zd2luc3QgcmV3cml0ZQorICAgICAgLSBVc2UgYSBzZW5zaWJsZSBkZWZhdWx0IGZvciBzeXN0ZW0gbG9jYXRpb24gKGlmIG5vIGRvbWFpbiBuYW1lIGZvdW5kKQogCiAgICAgbWFuOgotICAgICAgLSBbQlVHIDMxOTA3MjVdOiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kCi0gICAgICAtIGNsZWFuIHVwIG1hbnVhbCBwYWdlcyAoZnJvbSBEZWJpYW4gcGF0Y2ggNTZfbWFucGFnZSkKKyAgICAgIC0gW0JVRyAyOTcyODYwXTogVXBkYXRlIGJyb2tlbiByZWZlcmVuY2VzCisgICAgICAtIENsZWFuIHVwIG1hbnVhbCBwYWdlcyAoZnJvbSBEZWJpYW4gcGF0Y2ggNTZfbWFucGFnZSkKIAogICAgIG1pYjJjOgotICAgICAgLSBbUEFUQ0ggMzE3NTMyM106IEZpeCBoYW5kbGluZyBvZiAnd2hpbGUgKGZhbHNlKScgYmxvY2tzCi0gICAgICAtIFtQQVRDSCAzMjA0ODgzXTogRml4IGhhbmRsaW5nIG9mIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlCi0gICAgICAtIFtQQVRDSCAzMjExNDg0XTogU3VwcG9ydCBlbnVtZXJhdGlvbnMgaW4gbm90aWZpY2F0aW9uIHZhcmJpbmRzCi0gICAgICAtIE1ha2UgdGhlIG1pYjJjIGZvcmVhY2ggcmFuZ2VzIHdvcmsgYXMgYWR2ZXJ0aXNlZAorICAgICAgLSBbQlVHIDI4ODg1NjldOiBGaXggZ2VuZXJhdGlvbiBvZiB0YWJsZSBjb2x1bW5zIGFycmF5CisgICAgICAtIFJlbW92ZSB1bm5lY2Vzc2FyeSBjYXN0cyB0byB1X2NoYXIqCisgICAgICAtIG1ha2UgdGhlIG1pYjJjIGZvcmVhY2ggcmFuZ2VzIHdvcmsgYXMgYWR2ZXJ0aXNlZCBpbiB0aGUgY29tbWVudHMKIAogICAgIG1pYnM6CisgICAgICAtIFtCVUcgMjk3Mzg5MF06IEZpeCBpbXBvcnRzLCBEaXNrSU9FbnRyeSBsaXN0IGFuZCByZXZpc2lvbiBoaXN0b3JpZXMKICAgICAgIC0gW1BBVENIIDI5NzQ3MTZdOiBGaXggaXNzdWVzIGluIHRoZSBTTVVYLU1JQgogCisgICAgbWlzYzoKKyAgICAgIC0gW1BBVENIIDI4MzYxMTJdOiBVc2UgdGhlIHJpZ2h0IG1vZGlmaWVyIGZvciBzaXplX3Qvc3NpemVfdCB2YXJpYWJsZXMKKyAgICAgIC0gW1BBVENIIDI5NTIwMzRdOiBSZXR1cm4gb2YgdGhlIEdyZWF0IFN1U0UgJ3NwcmludGYnIEh1bnQuLi4gCisKICAgICBwZXJsOgorICAgICAgLSBbUEFUQ0ggMjg5MDkzMV06IEJldHRlciBoYW5kbGluZyBvZiBDb3VudGVyNjQgdmFsdWVzCisgICAgICAtIFtQQVRDSCAyOTk1MDk4XTogRml4IGNyZWF0aW9uIG9mIFNOTVB2MyBzZXNzaW9ucyB3aXRoIEFQSV9TSU5HTEUKICAgICAgIC0gW1BBVENIIDMwNDYzNzFdOiBGaXggbWVtb3J5IGxlYWsgaW4gU05NUHYxIHRyYXAgaGFuZGxpbmcKLSAgICAgIC0gW1BBVENIIDMwNDkwMjldOiBGaXggYSBtZW1vcnkgbGVhayB3aXRoIHNubXAgYnVsa3dhbGtzCi0gICAgICAtIERvbid0IGFsd2F5cyBvcGVuIHN0ZGVyciBhcyB0aGUgY2FsbHMgdG8gc25tcF9sb2cgYWxyZWFkeSBkbyB0aGlzCi0gICAgICAgICAgIGFuZCBpdCBtZXNzZXMgdXAgdGhlIGFnZW50IHdoZW4gZW1iZWRkZWQKLSAgICAgIC0gSGFuZGxlIGVtYmVkZGVkICUncyBpbiB0aGUgcmVzdWx0IG1lc3NhZ2UuCisgICAgICAtIFtQQVRDSCAzMDQ5MDI5XTogRml4IG1lbW9yeSBsZWFrIHdpdGggc25tcCBidWxrd2Fsa3MKKyAgICAgIC0gRG9uJ3QgYXV0b21hdGljYWxseSBvcGVuIHN0ZGVyciAoYnJlYWtzIGVtYmVkZGVkIHBlcmwgd2l0aGluIHRoZSBhZ2VudCkKKyAgICAgIC0gRml4IHZhcmlvdXMgb3RoZXIgbWVtb3J5IGxlYWtzLCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcworICAgICAgICAgICAgYW5kIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgYWNjZXNzIGlzc3VlcworICAgICAgLSBGaXggc2V2ZXJhbCAiRnJlZSB0byB3cm9uZyBwb29sIiBlcnJvcnMKIAogICAgIHB5dGhvbjoKLSAgICAgIC0gW0JVRyAzMDg4MzYwXTogRW5zdXJlIG1vZHVsZXMgYXJlIGJ1aWx0IGFnYWluc3QgdGhlIGNvcnJlY3QgbGlicmFyaWVzCi0gICAgICAtIFtCVUcgMzI5NTQwN106IEZpeCBoYW5kbGluZyBvZiB2b2lkIHBvaW50ZXIKLSAgICAgIC0gW1BBVENIIDMwMzUzMjhdOiBDaGVjayBmb3IgZmFpbHVyZXMgaW4gY3JlYXRpbmcgYSBzZXNzaW9uCi0gICAgICAtIFtQQVRDSCAzMDM1NTc4XTogS2VlcCBlcnJvciBjb2RlcyB1cCB0byBkYXRlCi0gICAgICAtIFtQQVRDSCAzMTg1MDg1XTogRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zCisgICAgICAtIFtCVUcgMjkxOTM3OV06IEluaXRpYWxpc2UgU05NUCBzZXNzaW9ucyBwcm9wZXJseQorICAgICAgLSBbQlVHIDMwODgzNjBdOiBFbnN1cmUgcHl0aG9uIG1vZHVsZXMgYXJlIGJ1aWx0IGFnYWluc3QgdGhlIGNvcnJlY3QgbGlicmFyaWVzCisgICAgICAtIFtQQVRDSCAyMDAxNjU2XTogSGFuZGxlIG51bGwtdGVybWluYXRpb24gb2Ygc3RyaW5nIHZhbHVlcyBwcm9wZXJseS4KKyAgICAgIC0gW1BBVENIIDMwMzUzMjhdOiBEZXRlY3QgZmFpbHVyZXMgaW4gc2Vzc2lvbiBjcmVhdGlvbgorICAgICAgLSBbUEFUQ0ggMzAzNTU3OF06IFVwZGF0ZSBlcnJvciBjb2RlcworICAgICAgLSBTdXBwb3J0IG51bGwtYnl0ZXMgaW4gb2N0ZXQgc3RyaW5ncwogCi0gICAgdGVzdGluZzoKKyAgICB0ZXN0OgorICAgICAgLSBbUEFUQ0ggMjk1MjAyMF06IEV4cGxpY2l0bHkgc2V0IHBlcm1pc3Npb24gb24gb3V0cHV0IGRpcmVjdG9yaWVzCiAgICAgICAtIFN1cHBvcnQgZHluYW1pYyBhbmFseXNpcyBvZiByZWdyZXNzaW9uIHRlc3RzCisgICAgICAtIEZpeCB0ZXN0cyAoVDAzMCkgZm9yIE1pbkdXCisKKyAgICBDeWd3aW46CisgICAgICAtIFtCVUcgMjk5NzQ5Ml06IGJ5dGUgb3JkZXIgb2YgdWRwTG9jYWxQb3J0IGlzIG5vdyBjb3JyZWN0CisgICAgICAtIEVuYWJsZWQgVW5peCB0cmFuc3BvcnQKKyAgICAgIC0gRml4IGJ1aWxkaW5nIHdpdGggSVB2NiwgT3BlblNTTCAmIGVtYmVkZGVkIFBlcmwgc3VwcG9ydAorICAgICAgLSBGaXggYnVpbGRpbmcgd2l0aCByZW1vdGVseSBtb3VudGVkIHNvdXJjZSBmaWxlcworICAgICAgLSBGaXggZnJlZSBVRFAgcG9ydCBkZXRlY3Rpb24gaW4gcmVncmVzc2lvbiB0ZXN0cworICAgICAgLSBGaXggb3V0LW9mLXJhbmdlIGFycmF5IGFjY2VzcyBpbiAnaW50ZXJmYWNlcycgdGFibGUKKyAgICAgIC0gbGlibmV0c25tcCBub3cgYnVpbGRzIGFzIGEgRExMIHdoZW4gY29uZmlndXJlZCB3aXRoIC0tZW5hYmxlLXNoYXJlZAorICAgICAgLSBPbWl0IGluZXRfbnRvcC5jIGFuZCBpbmV0X3B0b24uYworICAgICAgLSBwZXJsIG1vZHVsZXMgZG8gbm93IGJ1aWxkICgtLXdpdGgtcGVybC1tb2R1bGVzKS4KKyAgICAgIC0gUmVtb3ZlZCB3aW5waXBlLmMgZnJvbSB0aGUgbGlzdCBvZiBzb3VyY2UgZmlsZXMKKworICAgIEhQLVVYOgorICAgICAgLSBmaXggYnVpbGQgZXJyb3Igb24gSFAtVVggMTAuMjAKIAogICAgIExpbnV4OgotICAgICAgLSBbUEFUQ0ggMzA3NDkxOF06IGNoZWNrIGZvciBDT05UQUlORVJfSU5TRVJUIGZhaWx1cmVzCisgICAgICAtIFtCVUcgMjk4NTkxNV06IEZpeCBidWlsZCB3aXRob3V0IGVtYmVkZGVkIFBlcmwKKyAgICAgIC0gW1BBVENIIDI5MjYzNzRdOiBGaXggcmVhZGluZyBvZiBpcEFkZHJlc3NUYWJsZSBmcm9tIC9wcm9jL25ldC9pZl9pbmV0NgorICAgICAgLSBbUEFUQ0ggMjk1OTgxMV06IFJlaW1wbGVtZW50IE5ldGxpbmsgSVB2NiBwcmVmaXggbGlzdGVuZXIKICAgICAgIC0gW1BBVENIIDMwODMwMjddOiBGaXggUlBNIHNwZWMgZmlsZSB0byBzdXBwb3J0IENlbnRPUwotICAgICAgLSBbUEFUQ0ggMzE1MjQxMl06IEhhbmRsZSAoYW5kIHJlcG9ydCkgcHJvYmxlbXMgcmVhZGluZyAvcHJvYy92bXN0YXQKLSAgICAgIC0gRml4IGEgc3RybGVuIGNhbGN1bGF0aW9uIGluIElGLU1JQiBzdXBwb3J0Ci0gICAgICAtIEZpeGVkIGhyU1dSdW5QYXRoIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcwotICAgICAgLSBGaXhlZCB2YWx1ZSBvZiBJUC1NSUI6OmlwdjZJbnRlcmZhY2VGb3J3YXJkaW5nCisgICAgICAtIFtQQVRDSCAzMTA3MDAzXTogU3VwcHJlc3MgaXBOZXRUb1BoeXNpY2FsVGFibGUgZXJyb3IgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdHVubmVsIGFuZCBzaW1pbGFyIChub24tcGh5c2ljYWwpIGludGVyZmFjZXMKKyAgICAgIC0gRml4IGNhbGN1bGF0aW9uIG9mIGlmSENJblVjYXN0UGt0cyBvbiAzMi1iaXQgTGludXgKKyAgICAgIC0gRml4IHVkcFRhYmxlIGluZGV4ZXMgb24gYmlnLWVuZGlhbiA2NGJpdCBMaW51eAorICAgICAgLSBGaXggdmFsdWUgb2YgSVAtTUlCOjppcHY2SW50ZXJmYWNlRm9yd2FyZGluZworICAgICAgLSBGaXhlZCAzMi1iaXQgdHJ1bmNhdGlvbiB3YXJuaW5nIG9uIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMKKyAgICAgIC0gSW1wcm92ZWQgRXRoZXJMaWtlLU1JQiBzdXBwb3J0IAorICAgICAgLSBQYXNzIGNvcnJlY3QgcGF0aCB0byBycG1kYk9wZW4sIGFuZCBsb2cgZXJyb3JzCisgICAgICAtIHNubXBkIGlzIGFnYWluIHNpbmdsZS10aHJlYWRlZC4KIAogICAgIE5ldEJTRDoKICAgICAgIC0gRHJhZ29uRmx5IHN1cHBvcnQKQEAgLTEzOSw1NjggKzMyMCw2ODUgQEAKICAgICAgIC0gVXBkYXRlIG1lbW9yeSBhbmQgQ1BVIHN0YXRpc3RpY3MgaGFuZGxpbmcKIAogICAgIE9wZW5CU0Q6Ci0gICAgICAtIFN1cHBvcnQgdXBkYXRpbmcgdGhlIHJvdXRpbmcgdGFibGUgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotCi0gICAgV2luMzI6Ci0gICAgICAtIFtQQVRDSCAzMjkzODQyXTogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzCi0gICAgICAtIEF2b2lkIE1TVkMgd2FybmluZyBhYm91dCByZWRlZmluaW5nIEVBRERSSU5VU0UKLSAgICAgIC0gRml4IG91dC1vZi1yYW5nZSBhcnJheSBhY2Nlc3NlcyBlcnJvcnMgaW4gbWliSUkgaW50ZXJmYWNlcyB0YWJsZQotICAgICAgLSBGaXggdGVzdCBUMDMwIG9uIE1pbkdXLgotICAgICAgLSBGaXggdGVzdCBUMjAwIGZhaWx1cmVzIG9uIGtub3duIE1pY3Jvc29mdCBTTk1QIGV4dGVuc2lvbiBETEwgYnVncwotICAgICAgLSBGaXhlZCBtZW1vcnkgbGVhayBpbiB0aGUgaW50ZXJuYWwgKG5vbi13aW5FeHRETEwpIGlwTmV0VG9NZWRpYVRhYmxlCi0gICAgICAtIEhhbHQgc25tcGQgcHJvY2VzcyBvbiBrZXkgcHJlc3Mgd2hlbiBydW4gZnJvbSBhIGNvbW1hbmQgcHJvbXB0Ci0gICAgICAgICAgKFRvIGFpZCBkZWJ1Z2dpbmcgc25tcGQuZXhlKQotCi0gICAgTWluR1c6Ci0gICAgICAtIE1ha2UgcmVncmVzc2lvbiB0ZXN0cyBpbmRlcGVuZGVudCBvZiByZWdpc3RyeSBzZXR0aW5ncwotICAgICAgLSBVc2UgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBoZWFkZXIgZmlsZSB1bmRlciBXaW5HVwotCi0gICAgICAKLSogNS40LjMgKgotCi0gICAgc25tcGxpYjoKLSAgICAgIC0gW0JVRyAyODM4MjQzXTogQ29ycmVjdCB0aGUgb3V0cHV0IG9mIHVuc2lnbmVkIHZhbHVlcy4KLSAgICAgIC0gW0JVRyAyOTE5MzIwXTogQXZvaWQgYWNjZXNzaW5nIGZyZWVkIG1lbW9yeQotICAgICAgLSBbQlVHIDI5MjIzOTBdOiBGaXggdGVzdCBmb3IgbWlzc2luZyBjb250ZXh0TmFtZSBwYXJhbWV0ZXIKLSAgICAgIC0gW1BBVENIIDIwNDMwMThdOiBmaXggcmVjdmZyb20gaGFuZ3MKLSAgICAgIC0gW1BBVENIIDIyNTgyMjldOiBSZW1vdmUgbWlzbGVhZGluZyBjb21tZW50Ci0gICAgICAtIFtQQVRDSCAyNDc5NzAwXTogRml4IHpvbmVkIElQIGFkZHJlc3MgdXNlZCBhcyB0YWJsZSBpbmRpY2VzCi0gICAgICAtIFtQQVRDSCAyNDkyMzc3XTogRml4IHR5cG8vYnVnIGluIHNubXBfZW5hYmxlX2NhbGxiYWNrKCkKLSAgICAgIC0gW1BBVENIIDI1MDU0ODhdOiBGaXggYWxhcm0gYmVoYXZpb3VyIG9uIGxhcmdlIGNsb2NrIHNrZXdzCi0gICAgICAtIFtQQVRDSCAyNTM4MTY5XTogUHJldmVudCBpbmZpbml0ZSByZXRyaWVzIGZvciBpbnZhbGlkIGVycm9yLWluZGV4Ci0gICAgICAtIFtQQVRDSCAyNjg4MzQ1XTogRml4IG5ldHNubXBfYXNzZXJ0KCkgZm9yIFZpc3VhbCBTdHVkaW8KLSAgICAgIC0gW1BBVENIIDI2ODkzNjJdOiBGaXggaGFuZGxpbmcgb2YgSVB2NiBob3N0bmFtZXMKLSAgICAgIC0gW1BBVENIIDI3MTM4NDFdOiBGaXggcnVudGltZSBlcnJvcnMgdHJpZ2dlcmVkIGJ5IGhpZ2gtQVNDSUkgY2hhcnMKLSAgICAgIC0gW1BBVENIIDI3ODA0MTFdOiBGaXggY29tcGlsZXIgd2FybmluZ3MKLSAgICAgIC0gW1BBVENIIDI3OTcyNTFdOiBGaXggbWVtb3J5IGxlYWtzCi0gICAgICAtIFtQQVRDSCAyODcxNzQ3XTogRml4IG1lbW9yeSBsZWFrIGluIE9JRCBwcm9jZXNzaW5nCi0gICAgICAtIFtQQVRDSCAyOTUyMTQwXTogT3ZlcmZsb3cgY291bnRlcjMyIGFuZCBnYXVnZTMyCi0gICAgICAtIFtQQVRDSCAyOTUyMDM0XTogUmV0dXJuIG9mIHRoZSBHcmVhdCBTdVNFICdzcHJpbnRmJyBIdW50Ci0gICAgICAtIENoYW5nZSB0aGUgcGFyc2luZyBvZiByYW5nZXMgdG8gYWNjZXB0IGFsbCB2YWxpZCB2YWx1ZXMKLSAgICAgIC0gRW5zdXJlIE9fQ1JFQVRFIG1hc2sgaXMgYWx3YXlzIHNwZWNpZmllZAotICAgICAgLSBGaXggZXh0ZXJuICJDIiB3cmFwcGluZwotICAgICAgLSBNYWtlIC1MTiBzdG9wIGR1bXBpbmcgY29yZS4KLSAgICAgIC0gTWFrZSBiYWQgZGVidWcgbGV2ZWxzIHJlcG9ydCB0aGUgb2ZmZW5kaW5nIHN5bWJvbAotICAgICAgLSBSZW1vdmUgaW5saW5lIGRlY2xhcmF0aW9ucyBmb3Igbm9uLWlubGluZSBkZWZpbmVkIGZ1bmN0aW9ucwotCi0gICAgc25tcGQ6Ci0gICAgICAtIFtCVUcgMTY5MzAzOV06IEJlIHNpbGVudCB3aGVuIGluc2VydCBmYWlscy4KLSAgICAgIC0gW0JVRyAyODIyMzYwXTogRml4IG1lbW9yeSBsZWFrIHdoZW4gYnVpbGRpbmcgdGFibGUgT0lEcwotICAgICAgLSBbQlVHIDI4NDEwMDhdOiBQcm90ZWN0IGFnYWluc3QgY3Jhc2ggZm9sbG93aW5nIGZhaWxlZCBBZ2VudFggcmVzcG9uc2UKLSAgICAgIC0gW0JVRyAyODczODU4XTogRml4IGhhbmRsaW5nIG9mIHNjaGVkT3duZXIgaW5kZXguCi0gICAgICAtIFtCVUcgMjg5NDA1OV06IEhhbmRsZSBlcnJvcnMgd2hlbiBjb3VudGluZyBpbnRlcmZhY2VzCi0gICAgICAtIFtCVUcgMjg5NzAwMF06IFN1cHByZXNzIDMyLWJpdCBjb3VudGVyIHRydW5jYXRpb24gd2FybmluZ3MuCi0gICAgICAtIFtCVUcgMjkxNDQxMF06IEZpeCBjcmFzaCBvbiBlbXB0eSBjb21tYW5kIGxpbmVzCi0gICAgICAtIFtCVUcgMjkyNDE0MF06IEZpeCB0ZXJtaW5hdGlvbiBvZiBDUFUvRlBVIHR5cGVzCi0gICAgICAtIFtQQVRDSCAxMjU3MzQ3XTogTm9uLWZpeGVkIHNpemUgY29ubmVjdGlvbiBidWZmZXIKLSAgICAgIC0gW1BBVENIIDE1NTA3MzBdOiBSZXBvcnQgZXJyb3JzIGZyb20gaXRlcmF0b3ItYmFzZWQgaGFuZGxlcnMKLSAgICAgIC0gW1BBVENIIDE5Nzc0MzldOiBGaXggcGFzcy9fcGVyc2lzdCBidWcgd2l0aCBTRVQgb2lkIHZhbHVlCi0gICAgICAtIFtQQVRDSCAyMDEyNDAyXTogSGFuZGxlIGZhaWx1cmUgdG8gbG9vayB1cCBpbnRlcmZhY2UgZXJyb3IgY291bnRlcnMKLSAgICAgIC0gW1BBVENIIDIwODI3MjZdOiBjb3JyZWN0bHkgcmVwb3J0IE5JQyBzcGVlZHMgaGlnaGVyIHRoYW4gNEdiaXQvcwotICAgICAgLSBbUEFUQ0ggMjEyNDI4OF06IEZpeCBzZXR0aW5nIG9mIHVzbVVzZXJQcml2UHJvdG9jb2wgYXQgY3JlYXRpb24KLSAgICAgIC0gW1BBVENIIDIxNjI2NTJdOiBGaXggc2ltcGxlIGhyZnMgY2hlY2tzIHdoZW4gTkZTIGlzIGluIHVzZQotICAgICAgLSBbUEFUQ0ggMjM4NDc3OV06IEZpeCBoYW5kbGluZyBvZiBHZXRCdWxrIHdpdGggTj4wLE09PTAKLSAgICAgIC0gW1BBVENIIDI2ODYyODBdOiBSZXBvcnQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbnMgYXMgYW4gZXJyb3IKLSAgICAgIC0gW1BBVENIIDI2OTM2NzBdOiBEb24ndCBvcGVuIEFnZW50WCBzb2NrZXRzIGlmIG90aGVyIHRyYW5zcG9ydHMgZmFpbAotICAgICAgLSBbUEFUQ0ggMjc5MTQxN106IEZpeCBzbm1wZCBzZWdmYXVsdCB3aGVuIHJ1biB3aXRoIC1EQUxMCi0gICAgICAtIFtQQVRDSCAyNzk3MjUxXTogU3VwcG9ydCBtdWx0aXBsZSBpbml0aWFsaXNhdGlvbiBhbmQgc2h1dGRvd24KLSAgICAgIC0gW1BBVENIIDI4MjIzMzddOiBGaXggbWVtb3J5IGxlYWsgaW4gaXBBZGRyZXNzUHJlZml4VGFibGUKLSAgICAgIC0gW1BBVENIIDI4Nzc1MThdOiBGaXggaGFuZGxpbmcgb2Ygc2NvcGVkIEFnZW50WCB2YXJpYWJsZXMKLSAgICAgIC0gW1BBVENIIDI4ODMxNTVdOiBGaXggbWVtb3J5IGxlYWsgaW4gcHJveHkgaGFuZGxpbmcuCi0gICAgICAtIFtQQVRDSCAyODg3ODE2XTogUHJvdGVjdCBhZ2FpbnN0IGRpdmlzaW9uLWJ5LXplcm8gY3Jhc2gKLSAgICAgIC0gW1BBVENIIDI5MDEwMjldOiBGaXggY29tcGlsZXIgd2FybmluZyBvbiBDbG9zZUhhbmRsZSgpCi0gICAgICAtIFtQQVRDSCAyOTExMzIzXTogRml4IGFnZW50IGxvY2t1cCB3aGVuIG1vbml0b3JpbmcgQWdlbnRYLWRlbGVnYXRlZCBpbmZvcm1hdGlvbgotICAgICAgLSBbUEFUQ0ggMjkxMjU4NF06IEZpeCBudWxsIE9JRCBoYW5kbGluZyBpbiBBZ2VudHggb24gNjRiaXQKLSAgICAgIC0gW1BBVENIIDI5NTA4NDVdOiBGaXggaWZIaWdoU3BlZWQgY2FsY3VsYXRpb24KLSAgICAgIC0gW1BBVENIIDI5NTIwMzRdOiBSZXR1cm4gb2YgdGhlIEdyZWF0IFN1U0UgJ3NwcmludGYnIEh1bnQKLSAgICAgIC0gW1BBVENIIDI5NTY2NTddOiBIYW5kbGUgb3Zlci1sZW5ndGggQWdlbnRYIE9JRHMKLSAgICAgIC0gW1BBVENIIDI5Njg2NDJdOiBDYXRjaCBvdmVyZmxvdyBvZiBwYXNzLXRocm91Z2ggY29tbWFuZCBidWZmZXIKLSAgICAgIC0gQWxsb3cgIm1vbml0b3IiIHRvIGhhbmRsZSBuZWdhdGl2ZSB0aHJlc2hvbGQgdmFsdWVzCi0gICAgICAtIENoYW5nZSBkZWZhdWx0IEFnZW50WCB0YXJnZXQgZnJvbSAwLjAuMC4wOjcwNSB0byBsb2NhbGhvc3Q6NzA1Ci0gICAgICAtIENsZWFuIHVwIG5vdGlmaWNhdGlvbgotICAgICAgLSBFbnN1cmUgT19DUkVBVEUgbWFzayBpcyBhbHdheXMgc3BlY2lmaWVkCi0gICAgICAtIEZpeCBhZ2VudCBjcmFzaCB3aGVuIHNlbmRpbmcgZW5jcnlwdGVkIFNOTVB2MyB0cmFwcwotICAgICAgLSBGaXggQ1ZFLTIwMDgtNDMwOSAoR0VUQlVMSyBpc3N1ZSByZXBvcnRlZCBieSBPc2NhciBNaXJhLVNhbmNoZXopCi0gICAgICAtIEZpeCBjcmVhdGlvbiBvZiB2aWV3cyB1c2luZyBzbm1wdXNtCi0gICAgICAtIEZpeCBoYW5kbGluZyBvZiBtdWx0aXBsZSBtYXRjaGluZyBWQUNNIGVudHJpZXMKLSAgICAgIC0gRml4IGludmFsaWQgYWNjZXNzIHRvIG1lbW9yeSBpbiBUQ1AtTUlCCi0gICAgICAtIEZpeCBsb2dnaW5nIG9mICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWVzJyBpbiBJUC1NSUIgYW5kIFRDUC1NSUIKLSAgICAgIC0gRml4IG1lbW9yeSBsZWFrIHdoZW4gbXVsdGlwbGUgaW50ZXJmYWNlcyBoYXZlIHRoZSBzYW1lIElQdjYgYWRkcmVzcwotICAgICAgLSBGaXggcG9zc2libGUgY3Jhc2ggd2hlbiA2NC1iaXQgY291bnRlcnMgZXhjZWVkIDJeMzIKLSAgICAgIC0gRml4IHR3byBidWdzIHdpdGggc211eCBwYXNzd29yZCBzdXBwb3J0Ci0gICAgICAtIEZpeCB1ZHBUYWJsZSBpbmRleGVzIG9uIGJpZy1lbmRpYW4gNjRiaXQgTGludXguCi0gICAgICAtIEltcHJvdmUgcGFyc2luZyBvZiAtTFMgY29tbWFuZCBsaW5lIGFyZ3VtZW50Ci0gICAgICAtIExhdGNoIGxhcmdlLWRpc2sgc3RhdGlzdGljcyBhdCAyVGIgKHJhdGhlciB0aGFuIHdyYXBwaW5nKQotICAgICAgLSBSZWdpc3RlciBDUFUvbWVtb3J5IGhhcmR3YXJlIG1vZHVsZXMgd2l0aCBuc0NhY2hlVGFibGUKLSAgICAgIC0gUmVtb3ZlIGlubGluZSBkZWNsYXJhdGlvbnMgZm9yIG5vbi1pbmxpbmUgZGVmaW5lZCBmdW5jdGlvbnMKLSAgICAgIC0gUmVwb3J0IGlmU3BlZWQgb2YgZG93biBuZXR3b3JrIGludGVyZmFjZXMKLSAgICAgIC0gU3VwcG9ydCBsYXJnZSBIVyBhZGRyZXNzZXMgKD42Ynl0ZXMpCi0KLSAgICBzbm1wdHJhcGQ6Ci0gICAgICAtIFtQQVRDSCAyNzI2MzAyXTogUGFzcyByZXN1bHRzIG9mIFBlcmwgdHJhcCBoYW5kbGVycyB0byB0cmFwIGRhZW1vbgotICAgICAgLSBSZW1vdmUgZ2xpYmMtc3BlY2lmaWMgcHJpbnRmLWZvcm1hdHRpbmcgdG9rZW5zCi0KLSAgICBzbm1wdGFibGU6Ci0gICAgICAtIFtCVUcgMjgzNzk5OF06IEhhbmRsZSBtaXNzaW5nIGluc3RhbmNlIHN1YmlkZW50aWZpZXJzIGluIHJlc3VsdHMKLSAgICAgIC0gW1BBVENIIDI4NTAwNjddOiBTdXBwcmVzcyBleHRyYW5lb3VzICJpbmRleCIgaGVhZGVyIHRva2VuCi0KLSAgICBhcHBzOgotICAgICAgLSBbQlVHIDI4MTE1NzddOiBGaXggYnVnIGluIEdldEJ1bGsgaGFuZGxpbmcKLSAgICAgIC0gW1BBVENIIDI5Mzc5OTZdOiBBZGQgRGF0ZTogaGVhZGVyIHRvIGVtYWlsIHNlbmQgYnkgdHJhcHRvZW1haWwKLSAgICAgIC0gSW1wcm92ZSBwYXJzaW5nIG9mIC1MUyBjb21tYW5kIGxpbmUgYXJndW1lbnQKLQotICAgIGJ1aWxkOgotICAgICAgLSBbQlVHIDIwOTU5ODNdOiBGaXggZXJyb3JzIGluIGZpbmQtcmVxdWlyZXMgaGVscGVyIHNjcmlwdAotICAgICAgLSBbQlVHIDI3ODI3MDBdOiBCdWlsZCBmYWlsdXJlIHdoZW4gdXNpbmcgLS13aXRoLXBrY3Mgb24gU29sYXJpcwotICAgICAgLSBbUEFUQ0ggMjE4NDAzOV06IE1pc2MgZml4ZXMgZm9yIGZyZWVpbmcgbWVtb3J5Ci0gICAgICAtIFtQQVRDSCAyOTUyMDIwXTogU2V0IHBlcm1pc3Npb24gb24gdGVzdGluZyBkaXJlY3RvcmllcwotICAgICAgLSAnbWFrZSB0ZXN0IFRFU1RPUFRTPSItUCB0Y3AiJyB3b3JrcyBmaW5lIG5vdwotCi0gICAgZG9jczoKLSAgICAgIC0gW1BBVENIIDI3ODgwNzJdOiBEb2N1bWVudCAnbG9nbWF0Y2gnIGZ1bmN0aW9uYWxpdHkuCi0gICAgICAtIFtQQVRDSCAyNzk1NzM5XTogRml4IGluY29ycmVjdCBkaXNrL2ZpbGUgc2l6ZSBkZXNjcmlwdGlvbnMgJiB1bml0IHNwZWNpZmllcnMKLQotICAgIG1pYjJjOgotICAgICAgLSBbQlVHIDI4MjcyNjldOiBTdXBwcmVzcyBub24tb3JkZXJlZCBUT0RPIGNvbW1lbnRzCi0gICAgICAtIFtCVUcgMjg4ODU2OV06IEZpeCBnZW5lcmF0aW9uIG9mIHRhYmxlIGNvbHVtbnMgYXJyYXkKLSAgICAgIC0gW1BBVENIIDIxMzY0MzddOiBJbXByb3ZlIDY0LWJpdCBoYW5kbGluZyBvZiBsYXJnZSB0YWJsZSBGTEFHIGRlZmluZXMgCi0gICAgICAtIFtQQVRDSCAyMzE2MTI3XTogRml4IGJ1ZyBpbiBpdGVyYXRlX2FjY2VzcyBnZW5lcmF0ZWQgY29kZS4KLQotICAgIG1pYnM6Ci0gICAgICAtIFtCVUcgMjk3Mzg5MF06IEZpeCBpbXBvcnRzLCBEaXNrSU9FbnRyeSBsaXN0IGFuZCByZXZpc2lvbiBoaXN0b3JpZXMKLQotICAgIHBlcmw6Ci0gICAgICAtIFtCVUcgMTU1NDgxN106IEZpeCBjbGFzcyBhc3NpZ21lbnQgc28gZ2V0Um9vdE9JRCB3b3JrcyBwcm9wZXJseQotICAgICAgLSBbUEFUQ0ggMjAyMjk0OF06IEZpeCBmb3IgQ291bnRlcjY0IGluIHBlcmwgc3ViYWdlbnQKLSAgICAgIC0gW1BBVENIIDIxODIwNzldOiBGaXggdmFyaW91cyB3YXJuaW5ncyAmIGFsbG93IHVzZSBvZiAidXNlIHN0cmljdCIKLSAgICAgIC0gW1BBVENIIDIzNjE3MTJdOiBGaXggZ2V0YnVsayBvcHRpbWl6YXRpb24gZHVyaW5nIHdhbGtzCi0gICAgICAtIFtQQVRDSCAyNzkzODU3XTogUmVwb3J0IGZhaWxlZCBhc3luY2hyb25vdXMgcmVxdWVzdHMKLSAgICAgIC0gW1BBVENIIDI4OTA5MzFdOiBCZXR0ZXIgaGFuZGxpbmcgb2YgQ291bnRlcjY0IHZhbHVlcy4KLQotICAgIHB5dGhvbjoKLSAgICAgIC0gW0JVRyAyMjU4OTM1XTogUHl0aG9uIEV4dGVuc2lvbiBNb2R1bGUgZmFpbHMgb24gU29sYXJpcwotICAgICAgLSBbQlVHIDI5MTkzNzldOiBJbml0aWFsaXNlIFNOTVAgc2Vzc2lvbnMgcHJvcGVybHkKLSAgICAgIC0gW1BBVENIIDIwNzQ4MTddOiBGaXggcmVnZXhwIGVuZ2luZSBDUFUgcGVyZm9ybWFuY2UgaXNzdWVzCi0gICAgICAtIFtQQVRDSCAyMjYwODI4XTogRml4IHB5dGhvbiBzbm1wd2FsayBtZW1vcnkgbGVhawotICAgICAgLSBbUEFUQ0ggMjU4MDk3OV06IEZpeCBweXRob24gc2Vzc2lvbiBwb2ludGVycyBvbiA2NC1iaXQgc3lzdGVtcwotICAgICAgLSBbUEFUQ0ggMjY2NzQxNV06IFN1cHBvcnQgIlVzZU51bWVyaWMiIG9wdGlvbgotICAgICAgLSBTdXBwb3J0IG51bGwtYnl0ZXMgaW4gb2N0ZXQgc3RyaW5ncwotCi0KLSAgICBBSVg6Ci0gICAgICAtIFtCVUcgMjcxMjY3MF06IEFnZW50IGNyYXNoZXMgb24gQUlYIHdpdGggaHJTdG9yYWdlCi0KLSAgICAqQlNEOgotICAgICAgLSBbUEFUQ0ggMjQzNTc5M106IFN1cHBvcnQgNjQtYml0IElGLU1JQiBjb3VudGVycyBvbiBzeXNjdGwgc3lzdGVtcwotICAgICAgLSBGaXggYSBtYWtlIHRlc3QKLQotICAgIEhQLVVYOgotICAgICAgLSBbQlVHIDI3Nzk0NzJdOiBGaWxlc3lzdGVtcyBtaXNzaW5nIGluIGhyU3RvcmFnZSB0YWJsZSAoSFAtVVggMTEuMzEpCi0gICAgICAtIFtQQVRDSCAyMDg4NzI2XTogRml4IGFuIGlzc3VlIHJlcG9ydGluZyBuZWdhdGl2ZSBtZW1vcnkgdmFsdWVzCi0KLSAgICBMaW51eDoKLSAgICAgIC0gW0JVRyAyODIyMzU1XTogRml4IG1lbW9yeSBsZWFrcyBvbiB1ZHBFbmRwb2ludFRhYmxlCi0gICAgICAtIFtQQVRDSCAyOTI2Mzc0XTogRml4IC9wcm9jL25ldC9pZl9pbmV0NiByZWFkaW5nIG9mIGlwQWRkcmVzc1RhYmxlCi0gICAgICAtIEZpeCBidWlsZCBvbiBtb2Rlcm4gZGlzdHJpYnV0aW9ucyAodXNpbmcgcnBtLTQuNikKLSAgICAgIC0gZml4IHJhcmUgcmFjZSBjb25kaXRpb24gd2hlbiByZWFkaW5nIFJQTSBkYXRhYmFzZQorICAgICAgLSBGaXggb3JkZXIgb2YgaGVhZGVycyB3aGVuIGNoZWNraW5nIDxuZXRpbmV0L2luX3BjYi5oPgorICAgICAgLSBTdXBwb3J0IHVwZGF0aW5nIHRoZSByb3V0aW5nIHRhYmxlCisgICAgICAtIFVwZGF0ZSBTV1J1biBjb2RlIHRvIHVzZSBrdm1fZ2V0cHJvYzIKIAogICAgIFNvbGFyaXM6Ci0gICAgICAtIFtQQVRDSCAyMDEyNDA0XTogRGVhbCB3aXRoIG1vcmUgdGhhbiAxMCBpbnRlcmZhY2VzCi0gICAgICAtIFtQQVRDSCAyNDA2Mzc4XTogRml4IGhyU1dSdW5QZXJmTWVtIG9uIDY0LWJpdCBTb2xhcmlzIHN5c3RlbXMKLSAgICAgIC0gW1BBVENIIDI3NTE1ODhdOiBJbmNvbnNpc3RlbnQgZGF0YSAoZS5nLiBVRFAvVENQIE1JQiBzY2FsYXIgdmFsdWVzCi0Jb2YgemVybykgY2FuIGJlIHJlcG9ydGVkIG9uIFNvbGFyaXMgMTBVNCsKLSAgICAgIC0gUHJvdGVjdCBhZ2FpbnN0IG1pc3NpbmcgcGFja2FnZSB2ZXJzaW9uCisgICAgICAtIEZpeCBjcmFzaCB0cmlnZ2VyZWQgYnkgbWlzc2luZyBwYWNrYWdlIHZlcnNpb24gaW5mb3JtYXRpb24gCiAKICAgICBXaW5kb3dzOgotICAgICAgLSBbQlVHIDI5OTc0OTJdOiBieXRlIG9yZGVyIG9mIHVkcExvY2FsUG9ydCBpcyBub3cgY29ycmVjdAotICAgICAgLSBbQlVHIDI5NzEyNTddOiBGaXhlZCB3aW5FeHRETEwgaGFuZGxpbmcgb2YgbXVsdGktdmFyYmluZCBnZXROZXh0IHJlcXVlc3RzLgotICAgICAgLSBbQlVHIDI3Nzk1NDFdOiBGaXhlZCBoYW5kbGUgbGVhayBpbiBwYXNzX3BlcnNpc3QKLSAgICAgIC0gW1BBVENIIDI2ODYyNDhdOiBBcHBsaWVkIHBhdGNoIGJ5IEJhcnQgVmFuIEFzc2NoZQotICAgICAgLSBbUEFUQ0ggMjY4ODM0Ml06IEZpeCB2YXJpb3VzIFZTMjAwNSBjb21waWxlciB3YXJuaW5ncwotICAgICAgLSBbUEFUQ0ggMjY5MTg3Nl06IEFwcGxpZWQgcGF0Y2ggYnkgcmRpZXogdG8gYWxsb3cKLSAgICAgIC0gW1BBVENIIDI2OTM3NDZdOiBpbXByb3ZlZCBzb2NrZXQgc3RhcnR1cCBzdXBwb3J0Ci0gICAgICAtIERldGVjdCBmcmVlIFVEUCBwb3J0cyBjb3JyZWN0bHkgZm9yIHVzZSBpbiB0ZXN0IGluZnJhc3RydWN0dXJlLgotICAgICAgLSBGaXggYmF0Y2ggYnVpbGQgdXNpbmcgcmVjZW50IHZlcnNpb25zIG9mIFZpc3VhbCBTdHVkaW8uCi0gICAgICAtIEZpeCBidWlsZHMgd2l0aCBJUHY2IHN1cHBvcnQgZW5hYmxlZAorICAgICAgLSBbQlVHIDI5Njk4NzJdOiBFbnN1cmUgU09DS19TVEFSVFVQIGlzIGludm9rZWQgYmVmb3JlIGluaXRfYWdlbnQKKyAgICAgIC0gW0JVRyAyOTcxMjU3XTogRml4ZWQgd2luRXh0RExMIGhhbmRsaW5nIG9mIG11bHRpLXZhcmJpbmQgZ2V0TmV4dAorCSAgICAgICAgICAgICAgIHJlcXVlc3RzIHdpdGggT0lEcyBpbiByZXZlcnNlIGxleGljb2dyYXBoaWNhbCBvcmRlcgorICAgICAgLSBBdm9pZCB0ZXN0IGZhaWx1cmUgKFQyMDApIG9uIGtub3duIE1TIFNOTVAgZXh0ZW5zaW9uIERMTCBidWdzCisgICAgICAtIEZpeCBhbmQgaW1wcm92ZSBiYXRjaCBidWlsZCB1c2luZyByZWNlbnQgdmVyc2lvbnMgb2YgVmlzdWFsIFN0dWRpbwogICAgICAgLSBGaXggYnVpbGQgdW5kZXIgTWluR1cKLSAgICAgIC0gRml4IHdpbkV4dERMTCBidWlsZCBvbiBXaW5kb3dzIFZpc3RhLCBXaW5kb3dzIDcKLSAgICAgIC0gRml4IHdpbkV4dERMTCBidWlsZCB3aXRoIE1pbkdXCi0gICAgICAtIFNpbXBsaWZ5IGJ1aWxkaW5nIE5ldC1TTk1QICsgd2luRXh0RExMIHdpdGggTVNWQwotICAgICAgLSB3aW5FeHRETEw6IEZpeGVkIGEgbWVtb3J5IGxlYWsgd2hlbiBTbm1wRXh0ZW5zaW9uUXVlcnkoRXgpIGZhaWxzCi0gICAgICAtIHdpbkV4dERMTDogTG9nIGVycm9ycyB3aGVuIGxvYWRpbmcgYW4gZXh0ZW5zaW9uIERMTCBmYWlscwotICAgICAgLSB3aW5FeHRETEw6IFVzZSBSRkMtY29tcGxpYW50IGVycm9yIGNvZGVzIGluIFNOTVAgcmVzcG9uc2UgUERVcwotICAgICAgLSB3aW5FeHRETEw6IEZpeCBoYW5kbGluZyBvZiBtdWx0aXBsZSB2YXJiaW5kIFNFVCByZXF1ZXN0cworICAgICAgLSBGaXggYnVpbGQgd2l0aCA2NC1iaXQgY29tcGlsZXIKKyAgICAgIC0gRml4IGJ1aWxkaW5nIHdpdGggSVB2NiBhbmQgT3BlblNTTCBzdXBwb3J0CisgICAgICAtIEZpeCBoYW5kbGluZyBvZiBzdHJ0b3VsbCAoYm90aCBNU1ZDIDYuMCwgYW5kIDIwMDIgJiBhYm92ZSkKKyAgICAgIC0gRml4IGhhbmRsaW5nIG9mIHdpbkV4dERMTCBtdWx0aS12YXJiaW5kIFNFVCByZXF1ZXN0cworICAgICAgLSBGaXggTUlCIG91dHB1dCB0cnVuY2F0aW9uIHdpdGggd2luRXh0RExMIEdFVE5FWFQgcmVxdWVzdHMKKyAgICAgIC0gRml4IG91dC1vZi1yYW5nZSBhcnJheSBhY2Nlc3MgaW4gJ2ludGVyZmFjZXMnIHRhYmxlCisgICAgICAtIEhhbHQgYWdlbnQgb24ga2V5IHByZXNzLCB3aGVuIHJ1biBpbiBjb21tYW5kIHByb21wdCB3aW5kb3cgKHRvIGFpZCBkZWJ1Z2dpbmcpCisgICAgICAtIEltcHJvdmUgTmV0LVNOTVAgRExMIGJ1aWxkCisgICAgICAtIEltcHJvdmUgc3VwcG9ydCBmb3Igd2luRXh0RExMIGJ1aWxkCisgICAgICAtIFN1cHByZXNzL3JlbW92ZSB2YXJpb3VzIGNvbXBpbGF0aW9uIHdhcm5pbmdzCisgICAgICAtIHdpbkV4dERMTDogRG9uJ3QgdHJpZ2dlciBhbiBhc3NlcnRpb24gaWYgbm8gZXh0ZW5zaW9uIERMTHMgbG9hZGVkCisgICAgICAtIHdpbkV4dERMTDogSW1wcm92ZSBSRkMtY29tcGxpYW5jZSBvZiByZXNwb25zZSBlcnJvciBjb2RlcyAKKyAgICAgIC0gd2luRXh0RExMOiBMb2cgdGhlIHJlYXNvbiB3aHkgbG9hZGluZyBhbiBleHRlbnNpb24gRExMIGZhaWxzCisgICAgICAtIHdpbkV4dERMTDogRml4IGEgbWVtb3J5IGxlYWsgd2hlbiBTbm1wRXh0ZW5zaW9uUXVlcnkoRXgpIGZhaWxzCiAKLQotKiA1LjQuMiAqCisqNS41KgogCiAgICAgc25tcGxpYjoKLSAgICAgIC0gW0JVRyAxNzkzNTQ1XTogVGFrZSB0aGUgbmFtZSBmcm9tIHRoZSBzb2NrYWRkcl91bgorICAgICAgLSBbQlVHIDExNzE5MDRdOiBmaXggcmVjdmZyb20gaGFuZ3MgKGFscmVhZHkgY2xvc2VkKQorICAgICAgLSBbQlVHIDEzNDUyOTZdOiBmaXggcmVjdmZyb20gaGFuZ3MgKGFscmVhZHkgY2xvc2VkKQorICAgICAgLSBbQlVHIDE2MDAxNzFdOiBTdXBwb3J0IGxvbmdlciBjb21tdW5pdHkgc3RyaW5ncyBpbiBWQUNNIGNvbmZpZy4KKyAgICAgIC0gW0JVRyAxNjE5ODI3XTogaW1wcm92ZSBoYW5kbGluZyBvZiBsaW5rIGRlcGVuZGVuY2llcworICAgICAgLSBbQlVHIDE2NjAwNjFdOiBWYWxpZGF0ZSBlbmdpbmVJRHMgbW9yZSBzdHJpY3RseS4KICAgICAgIC0gW0JVRyAxNzk1ODQwXTogU2lnbmVkIDMyLWJpdCB0cnVuY2F0aW9uIGxvZ2dlZCBhcyBkZWJ1ZyBtZXNzYWdlCi0gICAgICAtIFtCVUcgMTgwMTgzNV06IFN1cHBvcnQgbXVsdGlwbGUgZGVmYXVsdCB0cmFuc3BvcnRzIGZvciBhbiBhcHAuCiAgICAgICAtIFtCVUcgMTg2NjY1NV06IEhhbmRsZSBwYXJzaW5nIGludmFsaWQgT0lEIHN1YmlkZW50aWZpZXJzCisgICAgICAtIFtCVUcgMTg5ODE5OF06IEF2b2lkIGEgc2VnZmF1bHQgd2hlbiBwYXJzaW5nIGJyb2tlbiBtaWJzLgogICAgICAgLSBbQlVHIDE5NTgwNDFdOiBFbnN1cmUgSURzIGFyZSBub3QgdHJ1bmNhdGVkLgotICAgICAgLSBbQlVHIDIwMjc4MzRdOiBFeHRlbmQgc3RyaW5nIHByaW50IGJ1ZmZlciBieSB0aGUgbWluaW11bSBuZWNlc3NhcnkKKyAgICAgIC0gW0JVRyAxOTc2NzcyXTogQ2hhbmdlZCBtaWIgcGFyc2VyIHRvIGhhbmRsZSBsb25nIGJpbmFyeS9oZXggc3RyaW5ncy4KKyAgICAgIC0gW0JVRyAyMDAxMTI0XTogQWxsb3cgZW1iZWRkZWQgTlVMIGNoYXJhY3RlcnMgaW4gdXNtVXNlclB1YmxpYworICAgICAgLSBbQlVHIDIwMjc4MzRdOiBFeHRlbmQgc3RyaW5nIHByaW50IGJ1ZmZlciBieSB0aGUgbWluaW11bSBuZWNlc3NhcnkuCisgICAgICAtIFtCVUcgMjA5OTk4NV06IEFkZGVkIGNvbnN0IHF1YWxpZmllcnMgdG8gdGltZSBjb252ZXJzaW9uIHJvdXRpbnMKKyAgICAgIC0gW1BBVENIIDI4Mjc3MjJdOiBJbXByb3ZlIHN0cnRvdWxsIHRvIGJlIGxlc3MgTVNWQy1zcGVjaWZpYwogICAgICAgLSBbQlVHIENvdmVyaXR5ICMxODNdOiBmaXggbWVtb3J5IGxlYWsgaWYgSVBfUEtUSU5GTyBmYWlscworICAgICAgLSBbUEFUQ0ggIDcwMDY4MV06IGxpbWl0ZWQgc3VwcG9ydCBmb3IgVURQdjQgYnJvYWRjYXN0IGFkZHJlc3NlcworICAgICAgLSBbUEFUQ0ggMTU0ODY3MF06IEZpeCByYW5nZSBjaGVja3MgZm9yIHVuc2lnbmVkIGludGVnZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgKERlYmlhbiBidWcgIzM4MzM4MCkKKyAgICAgIC0gW1BBVENIIDE1OTI3MDZdOiBGaXggbWVtb3J5IGxlYWsgd2hlbiBjbG9uaW5nIHZhcmJpbmRzLgorICAgICAgLSBbUEFUQ0ggMTYxNjkxMl06IGZpeCBtZW1vcnkgbGVhayBpbiBzbm1wX3VkcF90cmFuc3BvcnQKKyAgICAgIC0gW1BBVENIIDE2MjA0MjRdOiBIb25vciBORVRTTk1QX0RTX0xJQl9ERUZBVUxUX1BPUlQgb3ZlciB0aGUgZGVmYXVsdCBzeXN0ZW0KKyAgICAgIC0gW1BBVENIIDE2MjcwNDldOiBOZXcgQVBJIHRvIGhhbmRsZSBsYXJnZSBudW1iZXJzIG9mIGZpbGUgZGVzY3JpcHRvcnMuCisgICAgICAtIFtQQVRDSCAxNjM0NjIwXTogRml4IGxlYWtzIGZyb20gY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uIGZhaWx1cmUuCisgICAgICAtIFtQQVRDSCAxNjQwMTE0XTogRG9uJ3Qgc3RvcmUgdHJhaWxpbmcgbnVsbCBjaGFyYWN0ZXIuCisgICAgICAtIFtQQVRDSCAxNjQxODk1XTogRXh0ZW5kIHNob3J0IHZpZXcgbWFza3MgKGFzIHBlciBSRkMgc3BlY3MpCisgICAgICAtIFtQQVRDSCAxNjQxOTcyXTogYWRkIG1pc3NpbmcgY29uc3QKKyAgICAgIC0gW1BBVENIIDE2NDIwNzFdOiBEb24ndCBmaWRkbGUgd2l0aCB0aGUgc3RvcmFnZSBvZiBwcmUtZXhpc3RpbmcgdXNlcnMuCisgICAgICAtIFtQQVRDSCAxNjQ1Njk4XTogZml4IDY0LWJpdCBzaWduZWQgaW50ZWdlciBlbmNvZGluZworICAgICAgLSBbUEFUQ0ggMTY1MzY3MF06IENvbnNpc3RlbnQgU05NUHYzIGJlaGF2aW91ciB3aGVuIG9wZW5pbmcgc2Vzc2lvbnMuCisgICAgICAtIFtQQVRDSCAxNjY1NTQzXTogSGFuZGxlIFZBQ00gY2hlY2tzIGNvcnJlY3RseS4KKyAgICAgIC0gW1BBVENIIDE2ODEwMzBdOiBCZXR0ZXIgaGFuZGxpbmcgb2YgZW1wdHkgYXBwdHlwZSBjb25maWdzLgorICAgICAgLSBbUEFUQ0ggMTY4MTk3N106IEFkZCBjYWxsYmFja3MgcHJpb3IgdG8gcmVhZGluZyBjb25maWcuCisgICAgICAtIFtQQVRDSCAxNjg3MzE2XTogRG9uJ3QgZHJvcCBjb25zdCBmcm9tIGNhc3RzLgorICAgICAgLSBbUEFUQ0ggMTY4NzMxN106IFJlbW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUKKyAgICAgIC0gW1BBVENIIDE2ODczMThdOiBNYWtlIF9zZXNzX3NlbHBvbF9pbmZvIHN0YXRpYy4KKyAgICAgIC0gW1BBVENIIDE2ODczMTldOiBEZWNsYXJlIHNubXBfc2Vzc19yZWFkX2V4dGQoKQorICAgICAgLSBbUEFUQ0ggMTY4NzMyNV06IEZpeCBwcm9ibGVtIHdpdGggb3BlcmF0b3IgcHJlY2VkZW5jZS4KKyAgICAgIC0gW1BBVENIIDE2ODczMzddOiBJbXBsZW1lbnQgX3Nlc3Nfb3BlbiBpbiB0ZXJtcyBvZiBzbm1wX3Nlc3NfYWRkCisgICAgICAtIFtQQVRDSCAxNzI4MjQ3XTogQ2xlYW4gdXAgaW50NjQgdHlwZSBjaGVja2luZyBhbmQgdXNhZ2UgZm9yIGJ1aWxkaW5nIHBhY2tldHMKKyAgICAgIC0gW1BBVENIIDE3MzcwODVdOiBmaXggdGhlIC1NIHN3aXRjaCBmb3IgbWliIHBhcnNpbmcgdnMgZGVmYXVsdHMKICAgICAgIC0gW1BBVENIIDE3NjgyODVdOiBDb3VudCBNSUIgZmlsZXMgY29ycmVjdGx5IGluIGFkZF9taWJkaXIoKQogICAgICAgLSBbUEFUQ0ggMTc3NTEyNF06IEZpeCBjbGllbnRhZGRyIGZ1bmN0aW9uYWxpdHkKICAgICAgIC0gW1BBVENIIDE4MDYzMzZdOiBmaXggLUxTIG9wdGlvbiBwYXJzaW5nCiAgICAgICAtIFtQQVRDSCAxODA3NDg5XTogZml4IGlnbm9yaW5nIG9mIGRpc3BsYXkgaGludHMuCiAgICAgICAtIFtQQVRDSCAxODExNDY5XTogcmVhZF9jb25maWdfZmlsZXNfaW5fcGF0aCgpIHJlYWRzIHBhc3QgbWFsbG9jJ2QgYnVmZmVyCiAgICAgICAtIFtQQVRDSCAxODc1MDIyXTogaW1wcm92ZSBjYWxsYmFjayBsb2NraW5nIG1lY2hhbmlzbXMKKyAgICAgIC0gW1BBVENIIDE4ODIwNjldOiBBZGQgdG9rZW4gZm9yIHNwZWNpZnlpbmcgYW4gZXhhY3QgU05NUHYzIGVuZ2luZUlECiAgICAgICAtIFtQQVRDSCAxODk1OTI3XTogY2hhbmdlIG9ic29sZXRlIHJlY3Yvc2VuZCB0byByZWN2ZnJvbS9zZW5kdG8KLSAgICAgIC0gW1BBVENIIDE4OTgyMDRdLCBbQlVGIDE4OTgxOThdOiBmaXggc2VnZmF1bHQgd2hlbiBwYXJzaW5nIGJyb2tlbiBtaWJzLgorICAgICAgLSBbUEFUQ0ggMTg5ODIwNF06IEF2b2lkIGEgc2VnZmF1bHQgd2hlbiBwYXJzaW5nIGJyb2tlbiBtaWJzLgorICAgICAgLSBbUEFUQ0ggMTkxNjg0MF06IG5ldyBjb25maWcgb3B0aW9uIHRvIHNldCBTTk1QdjEgdHJhcCBhZ2VudCBhZGRyZXNzCisJW1BBVENIIDE5MTY4NDBdOiBpbnRyb2R1Y2UgbmV0c25tcF9nZXRob3N0YnluYW1lX3Y0CiAgICAgICAtIFtQQVRDSCAxOTIxODYxXTogQXZvaWQgZW5kbGVzcyBsb29wIGFmdGVyIHRydW5jYXRpbmcgNjRiaXQgaW50Ci0gICAgICAtIFtQQVRDSCAyMDAzNDUwXTogRml4IGEgY291cGxlIG9mIDY0LWJpdCBwcm9ibGVtcwotICAgICAgLSBDaGFuZ2UgQ09OVEFJTkVSX0lOU0VSVCB0byBub3QgZG8gcGFydGlhbCBpbnNlcnRzIGluIGNvbnRhaW5lcnMKLQl3aXRoIG11bHRpcGxlIGluZGljZXMgd2hlbiBvbmUgaW5zZXJ0IGZhaWxzLgorICAgICAgLSBbUEFUQ0ggMjAwMzQ1MF06IEZpeCBhIGNvdXBsZSBvZiA2NC1iaXQgcHJvYmxlbXMuCisgICAgICAtIFtQQVRDSCAyMDQzMDE4XTogZml4IHJlY3Zmcm9tIGhhbmdzCisgICAgICAtIFtQQVRDSCAyMjU4MjI5XTogUmVtb3ZlIG1pc2xlYWRpbmcgY29tbWVudAorICAgICAgLSBbUEFUQ0ggMjQ3OTcwMF06IEZpeCB6b25lZCBJUCBhZGRyZXNzIHVzZWQgYXMgdGFibGUgaW5kaWNlcworICAgICAgLSBbUEFUQ0ggMjQ5MjM3N106IEZpeCB0eXBvL2J1ZyBpbiBzbm1wX2VuYWJsZV9jYWxsYmFjaygpCisgICAgICAtIFtQQVRDSCAyNTA1NDg4XTogRml4IGFsYXJtcyBub3QgdHJpZ2dlcmVkIGR1ZSB0byBsYXJnZSBjbG9jayBza2V3cy4KKyAgICAgIC0gW1BBVENIIDI1MzgxNjldOiBQcmV2ZW50IGluZmluaXRlIHJldHJpZXMgZm9yIGFuIGludmFsaWQgZXJyb3ItaW5kZXguCisgICAgICAtIFtQQVRDSCAyNjg5MzYyXTogRml4IGhhbmRsaW5nIG9mIElQdjYgaG9zdG5hbWVzLgorICAgICAgLSBbUEFUQ0ggMjcxMzg0MV06IEZpeCBydW50aW1lIGVycm9ycyB0cmlnZ2VyZWQgYnkgaGlnaC1BU0NJSSBjaGFycworICAgICAgLSBbUEFUQ0ggMjc3Mjc4N106IENsZWFuZXIgYXBwcm9hY2ggdG8gaGFuZGxpbmcgbGFyZ2UgZmRfc2V0cy4KKyAgICAgIC0gW1BBVENIIDI3ODA0MTFdOiBGaXggY29tcGlsZXIgd2FybmluZ3MKKyAgICAgIC0gW0ZFQVRVUkVTICA0NTQwMjhdOiBEZXRlY3QgZW1wdHkgTUlCIGluZGV4IGZpbGVzLgorICAgICAgLSBbRkVBVFVSRVMgIDg1MTg4N106IFJlcG9ydCByYW5nZSBpbmZvcm1hdGlvbiBmb3IgaW52YWxpZCBTRVQgcmVxdWVzdHMuCisgICAgICAtIFtGRUFUVVJFUyAxMDQxODg4XTogQ2hlY2sgZGlyZWN0b3J5IHBhdGhzIGZvciBjb25maWcgZmlsZXMuCisgICAgICAtIFtGRUFUVVJFUyAxNDA3NDc2XTogUmVuYW1lICdzdHJpY3RDb21tZW50VGVybScgdG8gcmVmbGVjdCBhY3R1YWwgYmVoYXZpb3VyLgorICAgICAgLSBBZGQgR0NDIGZvcm1hdCBjaGVja2luZyBhdHRyaWJ1dGVzIHRvIHRoZSBkZWJ1ZyBmdW5jdGlvbnMuCisgICAgICAtIEFkZCBpdGVyYXRvciBmb3Igc2luZ2x5IGxpbmtlZCBsaXN0cworICAgICAgLSBDb3JyZWN0IE1BWF9FTkdJTkVJRF9MRU5HVEggdG8gMzIgKGFzIHBlciBTbm1wRW5naW5lSUQgVEMpCisgICAgICAtIENvcnJlY3QgcmVnaXN0cmF0aW9uIG9mIG11bHRpcGxlIHByZW1pYiBjb25maWcgaGFuZGxlcnMuCisgICAgICAtIERlYWxsb2NhdGUgdmFyaW91cyByZXNvdXJjZXMgaW4gc2h1dGRvd25fbWliCiAgICAgICAtIERvIG5vdCBsZWFrIG1lbW9yeSB3aGVuZXZlciBhbiB1ZHAgYWRkcmVzcyBpcyBmb3JtYXR0ZWQuCiAgICAgICAtIERvIG5vdCB0cnkgdG8gbG9vayB1cCBlbXB0eSBzdHJpbmdzIGFzIGhvc3RuYW1lcyBmb3IgSVB2NgotICAgICAgLSBGaXggcmVnaXN0ZXJpbmcgb2YgbXVsdGlwbGUgcHJlbWliIGNvbmZpZyBoYW5kbGVycworICAgICAgLSBGaXggZm9yd2FyZGluZyBlbmNvZGluZwogICAgICAgLSBGaXggcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBzcHJpbnRmIGZvciBVRFAvSVB2NgorICAgICAgLSBIYW5kbGUgbWFwcGluZyBjb21wbGV4IHRyYW5zcG9ydCBzdHJpbmdzIHRvIHNpbXBsZSBuYW1lIGRlZmluaXRpb25zCisgICAgICAtIEhhcmRjb2RlIGRlZmF1bHQgcG9ydCBudW1iZXJzIChyYXRoZXIgdGhhbiB1c2UgZ2V0c2VydmJ5bmFtZSkKKyAgICAgIC0gSW1wbGVtZW50IFJGQzUzNDMgY29udGV4dEVuZ2luZUlEIHByb2JpbmcuCisgICAgICAtIEltcHJvdmUgQ09OVEFJTkVSX0lOU0VSVCBoYW5kbGluZyBvZiBwYXJ0aWFsIGZhaWx1cmUgd2l0aCBtdWx0aXBsZSBpbmRleGVzCisgICAgICAtIEltcHJvdmUgbmV0c25tcF93YXRjaGVyX2luZm8gdG8gaGFuZGxlIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGRhdGEuCisgICAgICAtIEludHJvZHVjZSBwcmludGYtbGlrZSB2ZXJzaW9ucyBvZiBjb25maWdfcGVycm9yIGFuZCBjb25maWdfcHdhcm4KKyAgICAgIC0gTGlicmFyeSBsYXllcmluZyBpbXByb3ZlbWVudHMKKyAgICAgIC0gUmVhZCBkZWZ7VGFyZ2V0LERvbWFpbn0gZnJvbSBzbm1wLmNvbmYgYXMgd2VsbCBhcyA8YXBwPi5jb25mCisgICAgICAtIHJlbmFtZSBNSUIgbWFjcm8gdG8gTkVUU05NUF9NSUIyX09JRCwgTUlCIGlzIHRvbyBnZW5lcmljIGFuZCBtYXkKKwljb25mbGljdCB3aXRoIGFwcGxpY2F0aW9ucy4gICBUaGUgb2xkIE1JQiBtYWNybyBpcyBrZXB0IGZvcgorCWJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHVubGVzcyBORVRTTk1QX05PX0xFR0FDWV9ERUZJTklUSU9OUyBpcworCWRlZmluZWQuCiAKICAgICBzbm1wZDoKLSAgICAgIC0gW0JVRyAxNTU3MzcyXTogUmVhbGlnbiBockZTU3RvcmFnZUluZGV4IHdpdGggaHJTdG9yYWdlVGFibGUKKyAgICAgIC0gW0JVRyAgOTAyNjEwXTogRG9uJ3QgZGlzY2FyZCBwZW5kaW5nIGRhdGEgZm9sbG93aW5nIGEgVFJBUC4KKyAgICAgIC0gW0JVRyAgOTAyODAxXTogRml4IG9yZGVyaW5nIG9mIFNNVVgtcmVnaXN0ZXJlZCBzdWJ0cmVlcy4KKyAgICAgIC0gW0JVRyAxMDQ2MzI3XTogUmVzZXQgImluY2x1ZGVBbGxEaXNrcyIgZmxhZyB3aGVuIHJlbG9hZGluZy4KKyAgICAgIC0gW0JVRyAxMTAyMDU4XTogU2tpcCBub24tbW91bnRlZCBkaXNrcyAoZS5nLiBzd2FwIHBhcnRpdGlvbnMpCisgICAgICAtIFtCVUcgMTM5Nzg5NV06IGluY2x1ZGUgbWlzc2luZyBpbnRlcmZhY2UgZGVjbGFyYXRpb25zCisgICAgICAtIFtCVUcgMTQwMDEwMV06IHJlbW92ZSBkZWxldGVkIGludGVyZmFjZXMgZnJvbSBpZlRhYmxlCisgICAgICAtIFtCVUcgMTQxMzcyOF06IFJlZmVyZW5jZSBpbmRleCB2YWx1ZXMgaW4gZGVidWcgb3V0cHV0IGNvcnJlY3RseS4KKyAgICAgIC0gW0JVRyAxNDE2Mjc2XTogSGFuZGxlIGRlcGVuZGVuY3kgb24gTUlCIHBhcnNpbmcgQVBJLgorICAgICAgLSBbQlVHIDE1NDY4MTddOiBGaXggc25tcEVudGVycHJpc2UgdmFyYmluZCB3aGVuIGZvcndhcmRpbmcgdjEgdHJhcHMuCisgICAgICAtIFtCVUcgMTU1ODgyM106IGZpeCBpcEFkZHJlc3NUYWJsZSBtZW1vcnkgbGVhaworICAgICAgLSBbQlVHIDE2MDAyNjFdOiBIYW5kbGUgbm9uLXg4NiAvcHJvYy9jcHVpbmZvIGZvcm1hdAorICAgICAgLSBbQlVHIDE2MDA0MzJdOiBIYW5kbGUgc2lnbmFscyBwcm9wZXJseSB3aGVuIHJlc3RhcnRpbmcgdGhlIGFnZW50LgorICAgICAgLSBbQlVHIDE2MDIyODZdOiBEb24ndCBsZXQgdGFibGUgaG9sZXMgYmxvY2sgbGF0ZXIgcm93cy4KKyAgICAgIC0gW0JVRyAxNjI4NjEzXTogUmVzdG9yZSBtZW1Ub3RhbEZyZWUuMCBvbiBTb2xhcmlzCisgICAgICAtIFtCVUcgMTYzMzU5NV06IEZpeCBBZ2VudFggaGFuZGxpbmcgb2YgQ291bnRlcjY0IHZhbHVlcworICAgICAgLSBbQlVHIDE2NzcwNjNdOiBDaGVjayBmb3IgZmFpbGVkIG1hbGxvYyBjYWxscy4KKyAgICAgIC0gW0JVRyAxNjg1MDY3XTogTW9yZSBwcmVjaXNlIGhhbmRsaW5nIG9mIFNOTVB2My1hZG1pbiBNSUIgdGFibGVzLgorICAgICAgLSBbQlVHIDE2ODUwODFdOiBDaGVjayBmb3IgdmFsaWQgT0lEIG9uIEZyZWUvVW5kbyBwYXNzZXMuCisgICAgICAtIFtCVUcgMTY5MzAzOV06IGJlIHNpbGVudCB3aGVuIGluc2VydCBmYWlscy4KKyAgICAgIC0gW0JVRyAxNzEyOTg4XTogZGVmYXVsdC9jb25maWd1cmFibGUgbWF4ICMgdmFyYmluZHMgcmV0dXJuZWQgYnkgR0VUQlVMSworICAgICAgLSBbQlVHIDE3NDUxMTNdOiBIYW5kbGUgc2luZ2xlLWxpbmUgb3V0cHV0IGluIFVDRCBjb21wYXRhYmlsaXR5IG1vZGUuCiAgICAgICAtIFtCVUcgMTc0ODIwNl06IFByb3RlY3QgYWdhaW5zdCBmYWlsdXJlcyB0byBvcGVuIC9ldGMvbXRhYiAob3IgZXF1aXYpCi0gICAgICAtIFtCVUcgMTc1ODIxMl06IEhhbmRsaW5nIG1pc3NpbmcgdmFyaWFibGUgdHlwZXMgKElwQWRkcmVzcyxDb3VudGVyLE9wYXF1ZSkKKyAgICAgIC0gW0JVRyAxNzU4MjEyXTogSGFuZGxlIG1pc3NpbmcgdmFyaWFibGUgdHlwZXMgKElwQWRkcmVzcyxDb3VudGVyLE9wYXF1ZSkKKyAgICAgIC0gW0JVRyAxNzYwNjMzXTogZml4IHR5cG8gaW4gZGVidWcgbWVzc2FnZQogICAgICAgLSBbQlVHIDE3NzEyMjFdOiBSZXRhaW4gaWZMYXN0Q2hhbmdlIGluZm9ybWF0aW9uIG9uIGRhdGEgcmVsb2FkLgogICAgICAgLSBbQlVHIDE3OTI4OTBdOiBpbmNsdWRlIENJRlMgbW91bnRzIHdoZW4gc2tpcHBpbmcgcmVtb3RlIGZpbGVzeXN0ZW1zCiAgICAgICAtIFtCVUcgMTgyMjM2MF06IEZpeCBzcGlubG9jayBoZWxwZXIgZXJyb3IgaGFuZGxpbmcuCi0gICAgICAtIFtCVUcgMTg1MTA0N106IERvbid0IG92ZXItcHJvY2VzcyBmYWlsZWQgd2F0Y2hlciByZXF1ZXN0cwotICAgICAgLSBbQlVHIDE5MTI2NDddOiBGaXggbWVtb3J5IGxlYWsgZm9sbG93aW5nIGZhaWxlZCByZXF1ZXN0Ci0gICAgICAtIFtCVUcgMTkzMTM5MV06IEZpeCByZXBvcnRpbmcgb2YgTWVtb3J5IGJ1ZmZlcnMgYW5kIGNhY2hlZCBtZW1vcnkKLSAgICAgIC0gW0JVRyAyMDAzMTQ0XTogSW5jcmVhc2Ugc2l6ZSBvZiBBZ2VudFggcGFja2V0Ci0gICAgICAtIFtCVUcgMjAwNjc4Nl06IEludGVyZmFjZSBuYW1lIGNhbiBoYXZlIG1vcmUgdGhhbiA4IGNoYXJhY3RlcnMKLSAgICAgIC0gW0JVRyAyMDE4MDMxXTogRG9uJ3QgcHJvYmUgZW5naW5lSUQgaW4gaW50ZXJuYWwgbW9uaXRvciBzZXNzaW9ucwotICAgICAgLSBbQlVHIDIwMjM4MDNdOiBSZW1vdmUgaXJyZWxldmFudCBjb25maWd1cmUgZGVwZW5kZW5jeSAoSFAtVVggMTEpCi0gICAgICAtIFtQQVRDSCAxNzE2NTQ4XTogRml4IGhlbHAgb3V0cHV0IGZvciAtRAorICAgICAgLSBbQlVHIDE5MTI2NDddOiBGaXggbWVtb3J5IGxlYWsgZm9sbG93aW5nIGZhaWxlZCByZXF1ZXN0cy4KKyAgICAgIC0gW0JVRyAxOTMxMzkxXTogRml4IHJlcG9ydGluZyBvZiBNZW1vcnkgYnVmZmVycyBhbmQgY2FjaGVkIG1lbW9yeS4KKyAgICAgIC0gW0JVRyAyMDAxMTI0XTogQWxsb3cgZW1iZWRkZWQgTlVMIGNoYXJhY3RlcnMgaW4gdXNtVXNlclB1YmxpYworICAgICAgLSBbQlVHIDIwMDMxNDRdOiBJbmNyZWFzZSBzaXplIG9mIEFnZW50WCBwYWNrZXQgYnVpbGQgYnVmZmVyCisgICAgICAtIFtCVUcgMjAwNjc4Nl06IEludGVyZmFjZSBuYW1lIGNhbiBoYXZlIG1vcmUgdGhhbiA4IGNoYXJhY3RlcnMuCisgICAgICAtIFtCVUcgMjAxODAzMV06IERvbid0IHByb2JlIGVuZ2luZUlEIGluIGludGVybmFsIG1vbml0b3Igc2Vzc2lvbnMuCisgICAgICAtIFtCVUcgMjY5MzY3MF06IERvbid0IG9wZW4gKCYgY2xvYmJlcikgQWdlbnRYIHNvY2tldCBpZiBvdGhlciB0cmFuc3BvcnRzIGZhaWwKKyAgICAgIC0gW0JVRyAyODIyMzU1XTogRml4IG1lbW9yeSBsZWFrcyBvbiB1ZHBFbmRwb2ludFRhYmxlIChsaW51eCkgUGF0Y2gKKwlzdXBwbGllZCBieSBGcmFuayBMaWNodGVuaGVsZAorICAgICAgLSBbUEFUQ0ggMTIyNTQ0MF06IERlbGF5IHNpZ2h1cCB0aWxsIGl0IGlzIHNhZmUuCisgICAgICAtIFtQQVRDSCAxMjU3MzQ3XTogTm9uLWZpeGVkIHNpemUgY29ubmVjdGlvbiBidWZmZXIKKyAgICAgIC0gW1BBVENIIDE1NTA3MzBdOiBSZXBvcnQgZXJyb3JzIGZyb20gaXRlcmF0b3ItYmFzZWQgaGFuZGxlcnMuCisgICAgICAtIFtQQVRDSCAxNTg1MTQ2XTogRXh0ZW5kIHJhbmdlIG9mIGF2YWlsYWJsZSBlcnJvciBjb2RlcworICAgICAgLSBbUEFUQ0ggMTU5NTU2OF06IGZpeCBkZWxlZ2F0ZWQgU0VUIHJlcXVlc3RzIGZyb20gYWdlbnR4IHN1YmFnZW50cworICAgICAgLSBbUEFUQ0ggMTYwMTE4OF06IEhhbmRsZSBzaWduYWxzIHByb3Blcmx5IHdoZW4gcmVzdGFydGluZyB0aGUgYWdlbnQuCisgICAgICAtIFtQQVRDSCAxNjAxNDUzXTogRHluYW1pYyBNZW1vcnkgZmFpbHVyZSBoYW5kbGluZyBpbXByb3ZlbWVudHMKKyAgICAgIC0gW1BBVENIIDE2MTcyNTVdOiBmaXggbGVuZ3RoIG9mIHRoZSBoaXN0b3J5IGFycmF5IHRvIG1hdGNoIGNvZGUuCisgICAgICAtIFtQQVRDSCAxNjIwNDI0XTogRml4IGRlZmF1bHQgcG9ydCBmb3Igc2VuZGluZyBub3RpZmljYXRpb24KKyAgICAgIC0gW1BBVENIIDE2MjUwNjldOiBzcGVlZCBpbXByb3ZlbWVudHMgZm9yIHNvbGFyaXMgcm91dGluZyB0YWJsZSBhY2Nlc3MKKyAgICAgIC0gW1BBVENIIDE2MzkyODJdOiBTYXZlIHBlcnNpc3RlbnQgc25tcFRhcmdldFBhcmFtc1RhYmxlIHNldHRpbmdzIGNvcnJlY3RseS4KKyAgICAgIC0gW1BBVENIIDE2Mzk3MjZdOiBSZXBvcnQgcGh5c2ljYWwgbWVtb3J5IGNvcnJlY3RseSBvbiAqQlNECisgICAgICAtIFtQQVRDSCAxNjQxMzMyXTogSW5jbHVkZSBtaXNzaW5nIGFnZW50IGNvbmZpZyBkZWZpbml0aW9ucy4KKyAgICAgIC0gW1BBVENIIDE2NDE2ODVdOiBIYW5kbGUgdW5yZXNwb25zaXZlIEFnZW50WCBzdWJhZ2VudHMgbW9yZSByZWxpYWJseS4KKyAgICAgIC0gW1BBVENIIDE2NDE4NjVdOiBEb24ndCBkb3VibGUgY2hlY2sgc25tcFRyYXBPSUQgaW4gdGhlIGZpbHRlciB0YWJsZS4KKyAgICAgIC0gW1BBVENIIDE2NDIyNTVdOiBIYW5kbGUgc2F2aW5nIGxvbmcgc25tcE5vdGlmeUZpbHRlclRhYmxlIGVudHJpZXMuCisgICAgICAtIFtQQVRDSCAxNjQ0MjgwXTogRG9uJ3QgYXV0b21hdGljYWxseSBwcm9iZSBmb3IgdjMgRW5naW5lSURzLgorICAgICAgLSBbUEFUQ0ggMTY0NDI4MF06IFVzZSB0aGUgY29ycmVjdCBlbmdpbmVJRCB3aGVuIHNlbmRpbmcgdjMgdHJhcHMuCisgICAgICAtIFtQQVRDSCAxNjQ0NzE0XTogcmVwbGFjZSBsYXN0IHVzZSBvZiBkZXByZWNhdGVkIGNvcHlfd29yZCBieSBjb3B5X253b3JkCisgICAgICAtIFtQQVRDSCAxNjU0NDI0XTogSGFuZGxlIHJvdyBkZWxldGlvbiBpc3N1ZXMgaW4gZGF0YXNldCB0YWJsZXMKKyAgICAgIC0gW1BBVENIIDE2NTc3NDFdOiBIYW5kbGUgNjQtYml0IHR5cGVzIHZpYSBwYXNzIG1lY2hhbmlzbS4KKyAgICAgIC0gW1BBVENIIDE2NTk2MjNdOiBIYW5kbGUgU01VWCBwZWVycyB3aXRoIGFuIGVtcHR5IHBhc3N3b3JkLgorICAgICAgLSBbUEFUQ0ggMTY2NTU0M106IEhhbmRsZSBWQUNNIGNoZWNrcyBjb3JyZWN0bHkuCisgICAgICAtIFtQQVRDSCAxNjY1NTQ5XTogSGFuZGxlIGNyZWF0aW5nIFZBQ00gZW50cmllcyBjb3JyZWN0bHkuCisgICAgICAtIFtQQVRDSCAxNjY1OTg1XTogSW1wbGVtZW50IGlwUmVhc21UaW1lb3V0CisgICAgICAtIFtQQVRDSCAxNjY2NzM3XTogaW5jbHVkZSBJUHY2IHRyYWZmaWMgaW4gdmFyaW91cyBVRFAgY291bnRlcnMuCisgICAgICAtIFtQQVRDSCAxNjY4MTkzXTogRml4IGNoZWNrIGZvciB2NiBSZWFzbU1heFNpemUgc3VwcG9ydC4KKyAgICAgIC0gW1BBVENIIDE2NjgxOTNdOiBVcGRhdGUgcmVnaXN0cmF0aW9uIG9mIFJlYXNtTWF4U2l6ZSBzdXBwb3J0LgorICAgICAgLSBbUEFUQ0ggMTY2ODk1Ml06IElnbm9yZSB6b21iaWUgcHJvY2Vzc2VzLgorICAgICAgLSBbUEFUQ0ggMTY2OTA0OF06IEFkZCBzdXBwb3J0IGZvciBpcHY2SW50ZXJmYWNlSWRlbnRpZmllcgorICAgICAgLSBbUEFUQ0ggMTY3NjQ3OF06IGZpeCB1ZHBFbmRwb2ludFJlbW90ZUFkZHJlc3MKKyAgICAgIC0gW1BBVENIIDE2NzgzMDFdOiBEZWFsbG9jYXRlIGRvbWFpbiByZWdpc3RyeSBhdCBzaHV0ZG93bgorICAgICAgLSBbUEFUQ0ggMTY3ODMwNV06IERlYWxsb2NhdGUgY2FjaGUgaW4gaGFyZHdhcmUvY3B1L2NwdSBvbiBzaHV0ZG93bgorICAgICAgLSBbUEFUQ0ggMTY3ODMwNl06IERlYWxsb2NhdGUgbG9nIGluIG5vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cKKyAgICAgIC0gW1BBVENIIDE2Nzg3ODhdOiBCZXR0ZXIgaGFuZGxpbmcgb2YgU01VWCBzb2NrZXQgZGVzY3JpcHRvcnMuCisgICAgICAtIFtQQVRDSCAxNjgxMDQzXTogY2xlYW4gdXAgaGVscGVyIGluY2x1ZGVzCisgICAgICAtIFtQQVRDSCAxNjgzMDU0XTogc2V0IHVkcEVuZHBvaW50SW5zdGFuY2UgdG8gaWRlbnRpZnkgZGlmZmVyZW50IHByb2Nlc3Nlcy4KKyAgICAgIC0gW1BBVENIIDE2ODczMzZdOiBTdGFydCB1c2luZyB0aGUgZW5oYW5jZWQgcmVhZF9jb25maWcgaW50ZXJmYWNlCisgICAgICAtIFtQQVRDSCAxNjkyNzY4XTogRml4IGNvcHlpbmcgb2Ygbm9uLW9jdGV0LWFsaWduZWQgSVAgYWRkcmVzcyBwcmVmaXhlcy4KKyAgICAgIC0gW1BBVENIIDE2OTI4MTddOiBJbXByb3ZlZCBSRkMgNDI5MyBzdXBwb3J0IChpbmMuIG5vbi11bmljYXN0L3JhbmRvbSBJUCBhZGRyZXNzZXMpCisgICAgICAtIFtQQVRDSCAxNjk4MTg0XTogUmVnaXN0ZXIgbm9uLWRlZmF1bHQgY29udGV4dCBpbnRlZ2VycyBhcyB3cml0YWJsZS4KKyAgICAgIC0gW1BBVENIIDE3MDAxNTddOiBGaXggb3JkZXJpbmcgb2YgZXhlYyB0b2tlbnMgaW4gTUlCIG91dHB1dAorICAgICAgLSBbUEFUQ0ggMTcwMDczMF06IFJlbW92ZSB1bnVzZWQgZXh0ZXJuIGRlY2xhcmF0aW9uLgorICAgICAgLSBbUEFUQ0ggMTcwMDczMl06IEZpeCBkZWJ1ZyBvdXRwdXQgc3RhdGVtZW50cy4KKyAgICAgIC0gW1BBVENIIDE3MDA3MzddOiBUaWR5IHVwIHNldFNlcmlhbE5vIGltcGxlbWVudGF0aW9ucy4KKyAgICAgIC0gW1BBVENIIDE3MDIzNjFdOiBSZWFkIHN0YXRzIGZyb20gL3Byb2MvbmV0L3NubXA2CisgICAgICAtIFtQQVRDSCAxNzAyMzY2XTogU3VwcG9ydCBmb3IgaWNtcFN0YXRzVGFibGUKKyAgICAgIC0gW1BBVENIIDE3MDMwMDRdOiBDb25zb2xpZGF0ZSBzbm1wNiBoYW5kbGluZy4KKyAgICAgIC0gW1BBVENIIDE3MTA2MzJdOiBmaXggbWVtb3J5IGxlYWsgb24gYnJva2VuIGNvbnRhaW5lciBpbnNlcnRpb25zIGZvciB0aGUgaXBBZGRyZXNzVGFibGUKKyAgICAgIC0gW1BBVENIIDE3MTUzOTVdOiBmaXggaWNtcCB0YWJsZSBlcnJvcnMgaW4gbmV3IGljbXAgY29kZQorICAgICAgLSBbUEFUQ0ggMTcxNTQwNl06IHJlZ2lzdHJhdGlvbiBvcmRlcmluZyBmaXhlcyBmb3IgaWNtcFN0YXRzVGFibGUKKyAgICAgIC0gW1BBVENIIDE3MTY1NDhdOiBGaXggaGVscCBvdXRwdXQgc28gbm8gc3BhY2UgaXMgcHJpbnRlZCBiZXR3ZWVuIC1EIGFuZCBhcmd1bWVudHMuCisgICAgICAtIFtQQVRDSCAxNzE5MjUzXTogZml4IHNraXBORlNJbkhvc3RSZXNvdXJjZXMgZm9yIG11bHRpcGxlIHdhbGtzCisgICAgICAtIFtQQVRDSCAxNzIxMDk2XTogcmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBzdGF0cyBmcm9tIGtlcm5lbCBleHRyYWN0aW9uIGZvciBiZXR0ZXIgcG9ydGFiaWxpdHkuCisgICAgICAtIFtQQVRDSCAxNzIzNjExXTogTmV3IGltcGxlbWVudGF0aW9uIG9mIHRoZSBSTU9OIGFsYXJtVGFibGUKKyAgICAgIC0gW1BBVENIIDE3Mjk2MjldOiBGaXggbWVtb3J5IGxlYWsgaW4gZGlzbWFuIGFnZW50LgorICAgICAgLSBbUEFUQ0ggMTczNzQzOV06IGF1dG9tYXRpYyBsaW5rIHVwL2Rvd24gdHJhcHMgb24gYSB3YWxrCiAgICAgICAtIFtQQVRDSCAxNzQ0MTU3XTogUmVwb3J0IGR1cGxpY2F0ZSAiZXh0ZW5kL2V4ZWMiIGlkZW50aWZpZXJzLgotICAgICAgLSBbUEFUQ0ggMTc0NjgzMV06IGZpeCBwcm9jZXNzIGNoZWNraW5nIHJhY2UgY29uZGl0aW9uCisgICAgICAtIFtQQVRDSCAxNzQ2ODMxXTogZml4IHByb2Nlc3MgY2hlY2tpbmcgcmFjZSBjb25kaXRpb24gdW5kZXIgTGludXggYW5kIHBsYXRmb3JtICNpZmRlZnMKICAgICAgIC0gW1BBVENIIDE3NTI5MzRdOiBGaXggb2ZmLWJ5LW9uZSBxc29ydCBlcnJvciBpbiB0YWJsZSB1dGlsaXRpZXMuCiAgICAgICAtIFtQQVRDSCAxNzUzNDM3XTogRml4IGVycm9yIGluZGV4IG9uIGZhaWxpbmcgU0VUIHJlcXVlc3RzCiAgICAgICAtIFtQQVRDSCAxNzUzNDQ5XTogRml4IEFnZW50WCBlcnJvciBwcm9wYWdhdGlvbgogICAgICAgLSBbUEFUQ0ggMTc1MzQ2M106IEZpeCBBZ2VudFggc3ViYWdlbnQgcGluZyBhbGFybSBoYW5kbGluZwogICAgICAgLSBbUEFUQ0ggMTc1ODIwOF06IEZpeCBtZW1vcnkgbGVhawotICAgICAgLSBbUEFUQ0ggMTc3NDYxMl06IE1vcmUgcmVzaWxpZW50IHByb2Nlc3Mgc3RhdHVzIGhhbmRsaW5nCi0gICAgICAtIFtQQVRDSCAxNzgzNzMzXTogSW5jbHVkZSB2ZXJzaW9uIGluZm8gaW4gaHJTV0luc3QgdGFibGUgKHNvbGFyaXMpCi0gICAgICAtIFtQQVRDSCAxNzg0NzQ3XTogRml4IGlwIGFkcmVzc2VzIG9uIDY0IGJpdCBzeXN0ZW1zCisgICAgICAtIFtQQVRDSCAxNzgzNzMzXTogUHV0IHRoZSBwYWNrYWdlIHZlcnNpb24gbnVtYmVyIGludG8gdGhlIGhyU1dJbnN0IHRhYmxlIGZvciBzb2xhcmlzLgorICAgICAgLSBbUEFUQ0ggMTc4NDc0N106IEZpeCBsb25nIHVzYWdlIGZvciBpcCBhZHJlc3NlcyBvbiA2NCBiaXQgc3lzdGVtcyBpbiB2YXJpb3VzIE1JQi1JSSB0YWJsZXMuCisgICAgICAtIFtQQVRDSCAxNzk3MTExXTogaW1wbGVtZW50IElQLU1JQjo6aXBJZlN0YXRzVGFibGUKKyAgICAgIC0gW1BBVENIIDE4MDQ0NDVdOiBIaWdoIG9yZGVyIGJpdHMgb2YgSENJbk9jdGV0cyBub3Qgc2V0IG9uIFNvbGFyaXMKKyAgICAgIC0gW1BBVENIIDE4MDY1MDFdOiBBZGQgQVBJIGZvciBzZW5kaW5nIHRyYXBzIHdpdGggYSBzbm1wdjMgY29udGV4dAorICAgICAgLSBbUEFUQ0ggMTgyMzQ2NV06ICBmaXggaWNtcCBjYWNoZSByZWdpc3RyYXRpb24KICAgICAgIC0gW1BBVENIIDE4MjM4MDBdOiByZWxlYXNlIGFuZCByZWxvYWQgYWxsIHRyYXAgZGVzdGluYXRpb25zIG9uIFNJR0hVUAogICAgICAgLSBbUEFUQ0ggMTgyNjA4OF06IFVzZSB0aGUgcmlnaHQgaW50ZXJmYWNlIHRvIHJlYWQgdGhlIG5ldG1hc2sKLSAgICAgIC0gW1BBVENIIDE4MjYxMDJdOiBzdXBwb3J0IGxvbmdlciBpbnRlcmZhY2UgbmFtZXMgb24gbGludXgKLSAgICAgIC0gW1BBVENIIDE4Mjg4MzldOiBoYW5kbGUgb2YgZGlzayBtb3VudCBwYXRocyB3aXRoIGVtYmVkZGVkIHNwYWNlcworICAgICAgLSBbUEFUQ0ggMTgyODgzOV06IHRvIHByb3ZpZGUgYmV0dGVyIGhhbmRsaW5nIG9mIGRpc2tzIG1vdW50ZWQgb24gcGF0aHMgd2l0aCBlbWJlZGRlZCBzcGFjZXMKICAgICAgIC0gW1BBVENIIDE4NDk5MDNdOiBkbyBub3Qgc3BhbSBsb2cgd2l0aCBhc3NlcnRzIHdoZW4gWEVOIGlzIHVzZWQKLSAgICAgIC0gW1BBVENIIDE4NjY4MjNdOiB0cnVuY2F0ZSAzMiBiaXQgY291bnRlciB2YWx1ZXMgb24gNjQgYml0IG1hY2hpbmVzCi0gICAgICAtIFtQQVRDSCAxODc5MjYxXTogQWRkIGluYWN0aXZlIG1lbW9yeSB0byBjYWNoZWQgcmVwb3J0IChmcmVlYnNkKQorICAgICAgLSBbUEFUQ0ggMTg2NjgyM106IHRydW5jYXRlIDMyIGJpdCBjb3VudGVyIHZhbHVlcyBvbiA2NCBiaXQgbWFjaGluZXMgdG8gYXZvaWQgYm9ndXMgd2FybmluZ3MuCisgICAgICAtIFtQQVRDSCAxODc5MjYxXTogQWRkIGluIGluYWN0aXZlIG1lbW9yeSB0byB0aGUgY2FjaGVkIHJlcG9ydCBmb3IgZnJlZWJzZAorICAgICAgLSBbUEFUQ0ggMTg4MjYyMV06IEFkZCBMVk0gc3VwcG9ydCB0byB0aGUgcGFydGl0aW9uIHRhYmxlCiAgICAgICAtIFtQQVRDSCAxODkzNDY4XTogZml4ZWQgcmVnaXN0cmF0aW9uIG9mIE9JRHMgd2l0aCByYW5nZXMKLSAgICAgIC0gW1BBVENIIDE4OTYxMThdOiBmaXggaWZUYWJsZSAzMmJpdCBjb3VudGVycyBvbiBsaW51eAotICAgICAgLSBbUEFUQ0ggMTkwOTgxM106IGZpeCB0YWJsZV9pdGVyYXRvciBoaW50IGZvciBTT1JURUQgdGFibGVzCi0gICAgICAtIFtQQVRDSCAxOTQ0NTgxXTogRG9uJ3QgY29yZSBkdW1wIG9uIGxvbmcgc3RyaW5nIGluZGV4IHZhbHVlcy4KLSAgICAgIC0gW1BBVENIIDE5NTE5OTZdOiBGaXggZm9yIENQVSBzdGF0cyBvbiBGcmVlQlNECisgICAgICAtIFtQQVRDSCAxOTAxNzY0XTogZm9yIHN1cHBvcnRpbmcgbG9nd2F0Y2ggZmlsZXMgdGhhdCBhcmUgZGF0ZSBiYXNlZAorICAgICAgLSBbUEFUQ0ggMTkwOTgxM106IGZpeCB0YWJsZV9pdGVyYXRvciBoYW5kbGluZyBvZiBTT1JURUQgaGludAorICAgICAgLSBbUEFUQ0ggMTkxNjg0MF06IG5ldyBjb25maWcgb3B0aW9uIHRvIHNldCBTTk1QdjEgdHJhcCBhZ2VudCBhZGRyZXNzCisgICAgICAtIFtQQVRDSCAxOTQ0NTgxXTogUHJvdGVjdCBhZ2FpbnN0IGNvcmUgZHVtcHMgd2l0aCBsb25nIHN0cmluZyBpbmRleCB2YWx1ZXMuCiAgICAgICAtIFtQQVRDSCAxOTY3MTk0XTogUmVjb2duaXNlIE5GUzQgbW91bnRzCisgICAgICAtIFtQQVRDSCAxOTc3NDM5XTogRml4IHBhc3MvX3BlcnNpc3QgYnVnIHdpdGggU0VUIG9pZCB2YWx1ZQorICAgICAgLSBbUEFUQ0ggMTk5NTc1M106IG1pbm9yIGNsZWFudXAgYWdlbnQvYXV0b19ubGlzdC5jCisgICAgICAtIFtQQVRDSCAyMDEyNDAyXTogZG9uJ3QgZmFpbCBvbiBmYWlsdXJlIHRvIGxvb2sgdXAgaW50ZXJmYWNlIGVycm9yIGNvdW50ZXJzLgogICAgICAgLSBbUEFUQ0ggMjAxNDIwNF06IFN1cHBvcnQgLWcge2dyb3VwbmFtZX0KICAgICAgIC0gW1BBVENIIDIwMjI5MzZdOiBGaXggQWdlbnRYIENvdW50ZXI2NCBkZWNvZGluZyBvbiA2NC1iaXQgYXJjaGl0ZWN0dXJlcwotICAgICAgLSBbUEFUQ0ggMjAyMzYzM106IGFkZCBTQ1RQLU1JQiBpbXBsZW1lbnRhdGlvbiAoTGludXggb25seSkKKyAgICAgIC0gW1BBVENIIDIwODI3MjZdOiBjb3JyZWN0bHkgcmVwb3J0IE5JQyBzcGVlZHMgaGlnaGVyIHRoYW4gNEdiaXQvcworICAgICAgLSBbUEFUQ0ggMjEwMzQ5Ml06IGltcGxlbWVudCBSTU9OLU1JQjo6ZXRoZXJTdGF0c0phYmJlcnMKKyAgICAgIC0gW1BBVENIIDIxMjQyODhdOiBGaXggc2V0dGluZyBvZiB1c21Vc2VyUHJpdlByb3RvY29sIGF0IGNyZWF0aW9uLgorICAgICAgLSBbUEFUQ0ggMjE2MjY1Ml06IHBhdGNoIHRvIGZpeCBzaW1wbGUgaHJmcyBjaGVja3Mgd2hlbiBORlMgaXMgaW4gdXNlLgorICAgICAgLSBbUEFUQ0ggMjM4NDc3OV06IEZpeCBoYW5kbGluZyBvZiBHZXRCdWxrIHdpdGggTj4wLE09PTAKKyAgICAgIC0gW1BBVENIIDI0MDYzNzhdOiBGaXggaHJTV1J1blBlcmZNZW0gb24gNjQtYml0IFNvbGFyaXMgc3lzdGVtcworICAgICAgLSBbUEFUQ0ggMjQzMTM1M106IE1ha2Ugc29tZSBDKysgY29tcGlsZXJzIGhhcHBpZXIKKyAgICAgIC0gW1BBVENIIDI0MzU2ODFdOiBFbmFibGUgaWYtbWliIHJld3JpdGUgKHdpdGggc3lzY3RsIGJhY2tlbmQpIG9uIE5ldEJTRAorICAgICAgLSBbUEFUQ0ggMjQzNTc5M106IFN1cHBvcnQgNjQtYml0IElGLU1JQiBjb3VudGVycyBvbiBzeXNjdGwgKCpCU0QpIHN5c3RlbS4KKyAgICAgIC0gW1BBVENIIDI0NDkyMTBdOiBhZGQgNjQtYml0IGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyB0byBVQ0QtU05NUC1NSUI6OmRza1RhYmxlCisgICAgICAtIFtQQVRDSCAyNTY0NTUyXTogcHJvdmlkZSBsaWJuZXRsaW5rIHN1cHBvcnQgZm9yIGxvYWRpbmcgdGhlIHRjcCB0YWJsZQorICAgICAgLSBbUEFUQ0ggMjY4NjI4MF06IFJlcG9ydCBkdXBsaWNhdGUgcmVnaXN0cmF0aW9ucyBhcyBhbiBlcnJvcgorICAgICAgLSBbUEFUQ0ggMjc5MTQxN106IGZpeCBzbm1wZCBzZWdmYXVsdCB3aGVuIHJ1biB3aXRoIC1EQUxMIFBhdGNoCisgICAgICAtIFtQQVRDSCAyODIyMzM3XTogRml4IG1lbW9yeSBsZWFrIGluIGlwQWRkcmVzc1ByZWZpeFRhYmxlCisgICAgICAtIFtGRUFUVVJFUyAxMDE5NDI5XTogU2V0IHN1cHBsZW1lbnRhcnkgZ3JvdXBzIHZpYSBpbml0Z3JvdXBzKDMpCisgICAgICAtIEFkZCBtaXNzaW5nIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAmIGluY2x1ZGUgZmlsZXMuCisgICAgICAtIEFkZCBzdXBwb3J0IGZvciBhIHVzZXIgcHJvdmlkZWQgbGVuZ3RoIHZhcmlhYmxlCisJICAgYW5kIEMgc3RyaW5nIHZhbHVlcyB0byB0aGUgd2F0Y2hlciBoZWxwZXIuCisgICAgICAtIEFsbG93ICJtb25pdG9yIiB0byBoYW5kbGUgbmVnYXRpdmUgdGhyZXNob2xkIHZhbHVlcy4KKyAgICAgIC0gQXV0b21hdGljYWxseSByZXJlZ2lzdGVyIHN5c09SVGFibGUgZW50cmllcyBmcm9tIEFnZW50WCBzdWJhZ2VudHMuCisgICAgICAtIENsZWFuIHVwIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb25zIGR1cmluZyBFdmVudCBNSUIgY2xlYW51cAogICAgICAgLSBFbmZvcmNlIHRoZSBsb3dlciBsaW1pdCBvbiBzY2FsYXJfZ3JvdXBzCi0gICAgICAtIHN1cHByZXNzIGFubm95aW5nICJyZWdpc3RyYXRpb24gIT0gZHVwbGljYXRlIiB3YXJuaW5nIGZvciByb290IG9pZHMKLSAgICAgIC0gSGFuZGxlIGRldmljZSBuYW1lcyB3aXRoIGVtYmVkZGVkIHNwYWNlcyBpbiBVQ0QtU05NUC1NSUIgKGRza0RldmljZSkKKyAgICAgIC0gRml4IENWRS0yMDA4LTQzMDkgKEdFVEJVTEsgaXNzdWUgcmVwb3J0ZWQgYnkgT3NjYXIgTWlyYS1TYW5jaGV6KQorICAgICAgLSBGaXggbWVtb3J5IGxlYWsgd2hlbiBtdWx0aXBsZSBpbnRlcmZhY2VzIGhhdmUgdGhlIHNhbWUgSVB2NiBhZGRyZXNzCisgICAgICAtIEZpeCB0d28gYnVncyB3aXRoIHNtdXggcGFzc3dvcmQgc3VwcG9ydC4KKyAgICAgIC0gSGFuZGxlIGRldmljZSBuYW1lcyB3aXRoIGVtYmVkZGVkIHNwYWNlcyBpbiBVQ0QtU05NUC1NSUI6OmRza0RldmljZQorICAgICAgLSBJbXBsZW1lbnQgaXBOZXRUb1BoeXNpY2FsTGFzdFVwZGF0ZWQKKyAgICAgIC0gSW1wbGVtZW50IGlwQWRkcmVzc1NwaW5Mb2NrCisgICAgICAtIEltcHJvdmUgZWZmaWNpZW5jeSBvZiBzY2FsYXJfZ3JvdXAgaGVscGVyLgorICAgICAgLSBJbXByb3ZlIHBhcnNpbmcgb2YgLUxTIGNvbW1hbmQgbGluZSBhcmd1bWVudAorICAgICAgLSBSZWdpc3RlciBDUFUvbWVtb3J5IGhhcmR3YXJlIG1vZHVsZXMgd2l0aCBuc0NhY2hlVGFibGUuCisgICAgICAtIFJlaW1wbGVtZW50YXRpb24gb2YgTE0tU0VOU09SUy1NSUIKKyAgICAgIC0gUmVpbXBsZW1lbnRhdGlvbiBvZiBzbm1wTVBEU3RhdHMuCisgICAgICAtIFJlaW1wbGVtZW50YXRpb24gb2YgdXNtU3RhdHMuCisgICAgICAtIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgorICAgICAgLSBTdXBwcmVzcyBhbm5veWluZyAicmVnaXN0cmF0aW9uICE9IGR1cGxpY2F0ZSIgd2FybmluZyBmb3Igcm9vdCBvaWRzCisgICAgICAtIFVuaWZ5IGFsbCBzbm1wZCBzdGF0aXN0aWMgdmFyaWFibGVzIHdpdGggYSBjb21tb24gaGFuZGxlci4KKyAgICAgIC0gVXNlIHRoZSB3b3JrZXIgaGVscGVycyBmcm9tIHRoZSByZWdpc3Rlcl8qX2luc3RhbmNlIGhlbHBlcnMgYW5kCisJc2NoZWR1bGUgdGhlIGluc3RhbmNlIGhlbHBlcnMgZm9yIHJlbW92YWwgaW4gNS42CisgICAgICAtIFVzZSBzdGF0aWMgd2F0Y2hlcl9pbmZvIGZvciBhbGwgd2F0Y2hlZCB2YXJpYWJsZXMgYW5kIGluIGludF93YXRjaC4KKyAgICAgIC0gZml4IHBvc3NpYmxlIGNyYXNoIHdoZW4gNjQtYml0IGNvdW50ZXJzIGluIGlwU3lzdGVtU3RhdHNUYWJsZSBnZXQKKwliaWdnZXIgdGhhbiAyXjMyCiAKICAgICBzbm1wdHJhcGQ6CisgICAgICAtIFtCVUcgMTYzODIyNV06IEZpeCBpbnRlcnByZXRhdGlvbiBvZiB0cmFuc3BvcnQgYWRkcmVzcyBkYXRhLgogICAgICAgLSBbQlVHIDE5NTUyMjddOiBNZW1vcnkgbGVhayBmb3IgZW1iZWRkZWQgUGVybCBvbiB4ODZfNjQKICAgICAgIC0gW1BBVENIIDE3NDY5OTJdOiBJbXByb3ZlIHNubXB0cmFwZCBhY2Nlc3MtY29udHJvbCBlcnJvciBtZXNzYWdlcy4KICAgICAgIC0gW1BBVENIIDE3Njc3MjVdOiBDbG9zZSBhbGwgbm9uIHN0YW5kYXJkIGZpbGUgaGFuZGxlcworICAgICAgLSBbUEFUQ0ggMTkwODI4OF06IFJ1biBwZXJsIEVORCBibG9jayBvbiB0ZXJtaW5hdGlvbgorICAgICAgLSBbUEFUQ0ggMjcyNjMwMl06IFBhc3MgcmVzdWx0cyBvZiBQZXJsIHRyYXAgaGFuZGxlcnMgdG8gdHJhcCBkYWVtb24KKyAgICAgIC0gW1BBVENIIDEyMjU0NDBdOiBEZWxheSBzaWdodXAgdGlsbCBpdCBpcyBzYWZlLgorICAgICAgLSBbRkVBVFVSRSAgNzQxMzc1XTogRXh0ZW5kIC1GIGZsYWcgdG8gY292ZXIgc3lzbG9nL2V4ZWN1dGUgZm9ybWF0IHN0cmluZ3MuCisgICAgICAtIFtGRUFUVVJFIDExNTk5NDddOiBBbGxvdyBjb250cm9sIG9mIHRyYXBoYW5kbGUgZGF0YSBmb3JtYXQKKyAgICAgIC0gQWRkIHRyYXAgaGFuZGxlciBmb3IgbG9nZ2luZyB0cmFwcyB0byBhIG15c3FsIGRhdGFiYXNlCisgICAgICAtIFN1cHBvcnQgZm9yIGZvcndhcmRpbmcgdHJhcHMgYnkgT0lEIHN1YnRyZWUuCisgICAgICAtIFN1cHBvcnQgcGVyLXRyYXAgZm9ybWF0IHNwZWNpZmljYXRpb25zCisgICAgICAtIFdpdGhkcmF3IGRlcHJlY2F0ZWQgb3B0aW9ucy4KKworICAgIGFwcHM6CisgICAgICAtIFtCVUcgMTk2NDEzNl06IERyb3AgTlVMTCB0eXBlIGZyb20gc25tcHNldCB1c2FnZSBtZXNzYWdlLgorICAgICAgLSBbQlVHIDI4MTE1NzddOiBGaXggYnVnIGluIEdldEJ1bGsgaGFuZGxpbmcuIERvbid0IGdldCBjb25mdXNlZCBieQorCWluZGV4IHZhbHVlcyB0aGF0IGNvbnRhaW4gYSAnOicgY2hhcmFjdGVyLgorICAgICAgLSBbUEFUQ0ggMTUyOTUyM106IENsb3NlIFNOTVAgc2Vzc2lvbiBvbiBmYWlsdXJlLgorICAgICAgLSBJbXByb3ZlIHBhcnNpbmcgb2YgLUxTIGNvbW1hbmQgbGluZSBhcmd1bWVudAorCisgICAgc25tcG5ldHN0YXQ6CisgICAgICAtIFtQQVRDSCAyNTY0NTM4XTogU3VwcG9ydCBHRVRCVUxLIGluIHYyYysgc25tcCB2ZXJzaW9ucworCisgICAgc25tcHVzbToKKyAgICAgIC0gW1BBVENIIDE1OTEzNTVdOiBBbGxvdyBjbG9uaW5nIHRvIGFyYml0cmFyeSBlbmdpbmVJRHMKKworICAgIHNubXB3YWxrOgorICAgICAgLSBbUEFUQ0ggMTcyMzYyMF06IFNwZWNpZnkgYW4gZXhwbGljaXQgZW5kLXBvaW50IGZvciB0aGUgd2Fsay4KIAogICAgIGJ1aWxkOgorICAgICAgLSBbQlVHIDEwOTYxNjZdOiBIYW5kbGUgLS13aXRob3V0LWxvZ2ZpbGUgY29ycmVjdGx5LgorICAgICAgLSBbQlVHIDE1NjczMjRdOiBDbGFyaWZ5IHByb21wdGluZyBmb3IgdXNlci1zdXBwbGllZCB2YWx1ZXMuCisgICAgICAtIFtCVUcgMTYwMDA5M106IGF1dG9jb25mIDIuNjAgYnJlYWtzIHRoZSBidWlsZAorICAgICAgLSBbQlVHIDE2NDc5NzZdOiBDeWd3aW4vTWluR1cgV2luZG93cyBidWlsZCBmYWlscyBkdWUgdG8gbGlidG9vbCBlcnJvcgorICAgICAgLSBbQlVHIDE3MDc0NjldOiBXaW4zMjogc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmggbm90IGluc3RhbGxlZAogICAgICAgLSBbQlVHIDE4MDI4MzNdOiBFbnN1cmUgc25tcHRyYXBkIGJ1aWxkcyB3aXRoIC0tZGlzYWJsZS1zbm1wdjEvMmMKKyAgICAgIC0gW0JVRyAxODIzMzgxXTogVXNlIGEgc2Vuc2libGUgZGVmYXVsdCBNSUJESVIgcGF0aCBvbiBDeWd3aW4vTWluR1cKICAgICAgIC0gW0JVRyAxODIzMzgxXTogVmFsaWQgTUlCIGRpcmVjdG9yeSBzZWFyY2ggcGF0aCBvbiBXaW5kb3dzCiAgICAgICAtIFtCVUcgMTg3MjI2Nl06IFBFUkxDQyBjaGVjayBmYWlscyBmb3IgQ0Mgd2l0aCBvcHRpb25zCi0gICAgICAtIFtCVUcgMTk5NTE3Ml06IGZpeCAtLXdpdGhvdXQtZWxmIGNvbmZpZ3VyZSB1c2FnZQorICAgICAgLSBbQlVHIDE5OTUxNzJdOiBmaXggLS13aXRob3V0LWVsZiBjb25maWd1cmUgdXNhZ2UgbWVzc2FnZQogICAgICAgLSBbQlVHIDIwMTQ1MjZdOiBXaW4zMjogc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmggbm90IGluc3RhbGxlZAogICAgICAgLSBbQlVHIDIwMjM4MDNdOiBDb21waWxhdGlvbiBwcm9ibGVtcyBvbiBIUC1VWCAxMS4zMQotICAgICAgLSBbUEFUQ0ggMTY4MTAzNV06IGltcHJvdmUgbmV0LXNubXAtY29uZmlnIC9iaW4vc2ggY29tcGF0aWJpbGl0eQorICAgICAgLSBbQlVHIDIwOTU5ODNdOiBmaXggc3ludGF4L3Blcm1pc3NpbmcgZXJyb3IgaW4gZmluZC1yZXF1aXJlcyBoZWxwZXIgc2NyaXB0CisgICAgICAtIFtCVUcgMjE2ODE4MF06IEltcHJvdmUgaGFuZGxpbmcgb2YgdmFyaW91cyAtLWVuYWJsZS8tLWRpc2FibGUgb3B0aW9ucy4KKyAgICAgIC0gW0JVRyAyNzgyNzAwXTogYnVpbGQgZmFpbHVyZSB3aGVuIHVzaW5nIC0td2l0aC1wa2NzIG9uIFNvbGFyaXMKKyAgICAgIC0gW1BBVENIIDE1Nzc5MTddOlNpbXBsaWZ5IG1ha2VmaWxlIHRhcmdldCByZWZlcmVuY2VzIChwYXRjaCBmcm9tIEFwcGxlKQorICAgICAgLSBbUEFUQ0ggMTYwMDQ1M106IEZpeCBjcm9zcy1jb21waWxlIGJ1aWxkcyBpbiBhcHBsZXMgYnVpbGQgZW52aXJvbm1lbnQuCisgICAgICAtIFtQQVRDSCAxNjI0NDA2XTogb3B0aW9uIHRvIGhhcmRjb2RlIGxvY2F0aW9uIG9mIG1vdW50IHRhYmxlCisgICAgICAtIFtQQVRDSCAxNjI1MTM1XTogY29uZmlndXJlIGxvY2F0aW9uIG9mIHB5dGhvbiBpbnRlcnByZXRlciAKKyAgICAgIC0gW1BBVENIIDE2NzgzMDBdOiBjb21waWxlLXN1YmFnZW50IGRvZXNuJ3QgY2FsbCBzaHV0ZG93bl8gbWV0aG9kcworICAgICAgLSBbUEFUQ0ggMTY4MTA3M106ICNpZmRlZiBiYXNlZCBjb25maWdfZXJyb3IgaW5zdGVhZCBvZiBzcGVjaWFsIGNhc2VzCisgICAgICAtIFtQQVRDSCAxNzI4MjQxXTogQWRkIGNvbmZpZ3VyZSBjaGVjayBmb3IgPHN5cy91aW8uaD4KKyAgICAgIC0gW1BBVENIIDE3MjgyMzBdOiBhZGQgY29uZmlndXJlIGNoZWNrIGZvciBnYWlfc3RyZXJyb3IoKQorICAgICAgLSBbUEFUQ0ggMTcyODIzM106IG1ha2Ugc3VyZSB0eXBlIG5mZHNfdCBpcyBkZWZpbmVkCisgICAgICAtIFtQQVRDSCAxNzI4MjM3XTogTW92ZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBhdCB0aGUgdG9wIG9mIG5ldHNubXBfdWRwX3NlbmR0bworICAgICAgLSBbUEFUQ0ggMTcyODI0NF06IEFkZCBjb25maWd1cmUgY2hlY2sgZm9yIHNpbjZfc2NvcGVfaWQKKyAgICAgIC0gW1BBVENIIDE3MjgyNDddOiBBZGQgdHlwZSBjaGVjayBmb3IgaW50Pz9fdCBhbmQgdWludD8/X3QKICAgICAgIC0gW1BBVENIIDE4OTk3NjJdOiBUd2VhayBlbWJlZGRlZF9wZXJsIGNvbmZpZ3VyZSBjaGVja3MuCi0gICAgICAtIGFkZCAtLXdpdGgtdGVtcC1maWxlLXBhdHRlcm4gY29uZmlndXJlIG9wdGlvbgotICAgICAgLSBBZGQgc3VwcG9ydCBmb3Igd2luRXh0RExMIHRvIGJ1aWxkLmJhdCAod2luMzIpCi0gICAgICAtIERpc2FibGUgYWdlbnQgdGVzdHMgaWYgYnVpbHQgd2l0aG91dCBuZWNlc3NhcnkgbWliIG1vZHVsZXMKLSAgICAgIC0gTGltaXQgdGhlIHVzZSBvZiBfS0VSTkVMIGRlZmluaXRpb25zIGluIGNvbmZpZ3VyZSB0ZXN0cyB0byBtYXRjaAotICAgICAgICB0aGUgdXNlIG9mIF9LRVJORUwgaW4gb3VyIGNvZGViYXNlCi0gICAgICAtIFVwZGF0ZSB0byBsaWJ0b29sIDEuNS4yNgotCi0gICAgbWliMmM6Ci0gICAgICAtIFtCVUcgMTg3NDA1OSwxNzM3MDY4XTogSGFuZGxlIE1JQiBvYmplY3RzIHdpdGggZW1iZWRkZWQgaHlwaGVucwotICAgICAgLSBbUEFUQ0ggMTkxNDM5OF06IGluc3RhbGwgbWliMmMucGVybC5jb25mCisgICAgICAtIFtQQVRDSCAyMDAwODc0XTogQ2xlYW51cCB0cmFuc3BvcnQgc2VsZWN0aW9uLgorICAgICAgLSBbUEFUQ0ggMjA5MTE1Nl06IGNvcnJlY3RseSBkZWNsYXJlIGRlcGVuZGVuY2llcyBpbiBNYWtlZmlsZS4gJ21ha2UgLWogPE4+JyBzaG91bGQgd29yayBub3cuCisgICAgICAtIFtQQVRDSCAyMTg0MDM5XTogRml4ZXMgZm9yIGZyZWVpbmcgbWVtb3J5IGR1cmluZyBlcnJvciBjb25kaXRpb25zLgorICAgICAgLSBbUEFUQ0ggMjc5NzI1MV06IFN1cHBvcnQgbXVsdGlwbGUgaW5pdGlhbGlzYXRpb24vc2h1dGRvd24sIGZpeCBtZW1vcnkgbGVha3MKKyAgICAgIC0gQWRkIGEgdmFyaWF0aW9uIG9mIEFDX1NFQVJDSF9MSUJTIHdoZXJlIHRoZSByZXN1bHQgaXMgc2V0dGFibGUuCisgICAgICAtIEFkZCAiQnVpbGRSZXF1aXJlczogcGVybC1FeHRVdGlscy1FbWJlZCIgdG8gdGhlIHNwZWMgZmlsZQorICAgICAgLSBBZGQgJy0td2l0aC10ZW1wLWZpbGUtcGF0dGVybicgY29uZmlndXJlIG9wdGlvbgorICAgICAgLSBBc3N1bWUgdGFyZ2V0IHBsYXRmb3JtIHN1cHBvcnRzIG1lbXtjcHksbW92ZSxzZXR9ICYgc3RyeyxyfWNocgorICAgICAgLSBEaXNhYmxlIGlubGluaW5nIG9uIHNvbGFyaXMgKGR1ZSB0byBsaW5raW5nIGVycm9ycykKKyAgICAgIC0gRGlzYWJsZSBNSUItc3BlY2lmaWMgdGVzdHMgaWYgdGhlIGFnZW50IG9taXRzIHRoZSBuZWNlc3NhcnkgbW9kdWxlcy4KKyAgICAgIC0gJy0tZGlzYWJsZS1hcy1uZWVkZWQnIHJldmVydHMgdG8gbGlua2luZyBzeXN0ZW0gbGlicyBpbnRvIGFwcGxpY2F0aW9ucworICAgICAgLSBEbyBub3QgY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykgaWYgbm90aGluZyBmcm9tIHV0aWxfZnVuY3MgaXMgdXNlZAorICAgICAgLSBEbyBub3QgcmVxdWlyZSB1c2Ugb2YgLS13aXRoLWVuZGlhbm5lc3Mgd2hlbiBjcm9zcy1jb21waWxpbmcuCisgICAgICAtIEZpeCBidWlsZCBpc3N1ZXMgd2l0aCBldGh0b29sIChvbiBSSDkpLgorICAgICAgLSBGaXggY2hlY2tzIGZvciBzdXBwb3J0IG9mIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zCisgICAgICAtIEZpeCBjb21waWxhdGlvbiBvbiBJUklYCisgICAgICAtIEZpeCBtYWNybyBmb3IgJy0td2l0aC1mZWF0dXJlcy1vZicKKyAgICAgIC0gSW1wcm92ZSBsaWJyYXJ5IGxheWVyaW5nICYgZGVwZW5kZW5jeSBoYW5kbGluZyB3aGVuIGxpbmtpbmcgYXBwcworICAgICAgLSBJbXByb3ZlIHJvYnVzdG5lc3Mgb2Ygc2VkL2dyZXAvZXRjIGNvbW1hbnMgKHVzaW5nIGF1dG9jb25mIG1hY3JvcykKKyAgICAgIC0gSW1wcm92ZSBSUE0gc3BlYyBmaWxlcywgZm9yIGNvbnNpc3RlbmN5IHdpdGggdmVuZG9yLXByb3ZpZGVkIHBhY2thZ2VzLgorICAgICAgLSBNZWNoYW5pc20gZm9yIHNlbGVjdGluZyBidWlsZCBlbnZpcm9ubWVudCBiYXNlZCBvbiB2ZXJzaW9uCisgICAgICAtIE5ldyBORVRTTk1QX0FSR19XSVRIL0VOQUJMRSBtYWNyb3MgdG8gY2F0Y2ggaW5jb3JyZWN0ICd3aXRoL2VuYWJsZScgdXNhZ2UKKyAgICAgIC0gJy0tZW5hYmxlLWlwdjYnIHNob3VsZCBvbmx5IGVuYWJsZSAnbWliSUkvaXB2Nicgb24gc3VwcG9ydGVkIHN5c3RlbXMKKyAgICAgIC0gUmVtb3ZlIE5ldC1TTk1QIHNwZWNpYWwtY2FzZSBoYW5kbGluZyBvZiBzdGFuZGFyZCBmdW5jdGlvbmFsaXR5LgorICAgICAgLSBSZXN0cnVjdHVyZSBjb25maWd1cmUgdGVtcGxhdGUKKyAgICAgIC0gU3RyaWN0ZXIgY2hlY2tzIG9uICctLXdpdGgtcGVyc2lzdGVudC1tYXNrJyB2YWx1ZXMKKyAgICAgIC0gVXBkYXRlIHRvIGF1dG9jb25mIDIuNjMgJiBsaWJ0b29sIDIuMi42CisgICAgICAtIFVzZSAnY29uZmlnX2Vycm9yJyB0byBnZW5lcmF0ZSBlcnJvciBtZXNzYWdlcyBhdCBjb25maWd1cmUgdGltZS4KKyAgICAgIC0gVXNlIExERkxBR1Mgd2hlbiBidWlsZGluZyBhZ2VudCwgaGVscGVycyBhbmQgbWliIGxpYgorICAgICAgLSBVc2UgImxpYnRvb2wgY2xlYW4iIHRvIGVuc3VyZSByZW1vdmFsIG9mIGFsbCBsaWJ0b29sIHRlbXAgZmlsZXMuCisgICAgICAtIGFsbG93IGJ1aWxkaW5nIHdpdGggUGVybCB2ZXJzaW9ucyB0aGF0IGxhY2sgUEVSTF9FWElUX0RFU1RSVUNUX0VORAorICAgICAgLSBidWlsZCBmaXggZm9yIFRydTY0IFVuaXggYW5kIElSSVg6IG1vdmUgX1hPUEVOKiBkZWZpbml0aW9ucyB0bworCXdoZXJlIHRoZXkgYXJlIGluIDUuNC54IGFuZCBlYXJsaWVyCiAKICAgICBkb2N1bWVudGF0aW9uOgorICAgICAgLSBbQlVHIDEyNDcxNjRdOiBEb2N1bWVudCB1c2Ugb2YgT0lEIG1hY3JvcworICAgICAgLSBbQlVHIDE0MDc0NzZdOiBDbGFyaWZ5IE1JQiBwYXJzaW5nIHRvZ2dsZSBvcHRpb25zICYgY29tbWVudCBoYW5kbGluZy4KKyAgICAgIC0gW0JVRyAxNjE0MTA0XTogYnJva2VuIHNubXBkKDgpIG1hbnVhbCBwYWdlIGluIDUuNAogICAgICAgLSBbQlVHIDIwMjcxMjldOiBmaXggdHlwbyBpbiBzbm1wY21kLjEKKyAgICAgIC0gW1BBVENIIDE2MDQ1ODBdOiBTTk1QKDMpIG1hbnVhbCBwYWdlIGNvcnJlY3Rpb25zCisgICAgICAtIFtQQVRDSCAxNjQ0NzM1XTogQWRkIGdjYyBidWlsZCBpbnN0cnVjdGlvbnMgZm9yIElSSVgKKyAgICAgIC0gRml4IG1pbm9yIGRvY3VtZW50YXRpb24gYnVncyAocGF0Y2ggZnJvbSBBcHBsZSkKKworICAgIG1pYjJjOgorICAgICAgLSBbQlVHICA4MzM2NzNdOiBNb3JlIGZvY3VzZWQgc2l6ZSBjaGVja3MuCisgICAgICAtIFtCVUcgMTQyOTQ3Ml06IFByb3RlY3QgYWdhaW5zdCBtaXNzaW5nIGluc3RhbmNlcyAoYW5kIGludmFsaWQgb2JqZWN0cykKKyAgICAgIC0gW0JVRyAxNTgyOTcyXTogSGFuZGxlIEB3aGlsZUAvQGVuZEAgcHJvcGVybHkuCisgICAgICAtIFtCVUcgMTczNzA2OF06IEhhbmRsZSBNSUIgb2JqZWN0cyB3aXRoIGVtYmVkZGVkIGh5cGhlbnMKKyAgICAgIC0gW0JVRyAxODc0MDU5XTogSGFuZGxlIE1JQiBvYmplY3RzIHdpdGggZW1iZWRkZWQgaHlwaGVucworICAgICAgLSBbUEFUQ0ggMTY2ODE3MV06IHNraXAgdW5rbm93biBjb2xzIGluIG1pbi9tYXggcmFuZ2UgZm9yIHRhYmxlcworICAgICAgLSBbUEFUQ0ggMTcxOTI0NF06IEZpeCBtZmQgZ2VuZXJhdGluZyBtYXAgZnVuY3Rpb24KKyAgICAgIC0gW1BBVENIIDE5MTQzOThdOiBpbnN0YWxsIG1pYjJjLnBlcmwuY29uZgorICAgICAgLSBbUEFUQ0ggMjEzNjQzN106IEltcHJvdmUgRkxBRyBkZWZpbmVzIGZvciBodWdlIHRhYmxlcyBvbiA2NGJpdCBzeXN0ZW1zCisgICAgICAtIFtQQVRDSCAyMzE2MTI3XTogRml4IGJ1ZyBpbiBpdGVyYXRlX2FjY2VzcyBnZW5lcmF0ZWQgY29kZS4KIAogICAgIG1pc2M6Ci0gICAgICAtIEF2b2lkIGNhbGxpbmcgZGVidWcgbWFjcm9zIHdpdGggdG9vIGZldy9tYW55IGFyZ3VtZW50cy4KLSAgICAgIC0gZW5oYW5jZSBzbm1wbmV0c3RhdCB0ZXN0IHRvIGNoZWNrIHRjcFRhYmxlIGluIFRDUCBtb2RlCisgICAgICAtIFtQQVRDSCAxNzM3NzI3XTogQWRkIGEgTkVUU05NUF9PTERBUElfIHByZWZpeCB0byBvbGQtYXBpIGFjY2VzcyBtYWNyb3MuCisgICAgICAtIFtQQVRDSCAxNzM3NzI3XTogUmVwbGFjZSBORVRTTk1QX0NMRUFOX05BTUVTUEFDRSB3aXRoIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCisgICAgICAtIEFkZCBjb25maWcgcmVyZWFkIHN1cHBvcnQgdG8gIm5ldC1zbm1wLWNvbmZpZyAtLWNvbXBpbGUtc3ViYWdlbnQiIGNvZGUuCisgICAgICAtIEF2b2lkIGNhbGxpbmcgZGVidWcgbWFjcm9zIHdpdGggd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cy4KKyAgICAgIC0gRG9uJ3QgdXNlIHRoZSBsZWdhY3kgc3ltYm9sIFNOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWAorICAgICAgLSBQcmVsaW1pbmFyeSAoYWxwaGEpIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBTU0ggYW5kIERUTFMvVURQLgorICAgICAgLSBQcmVsaW1pbmFyeSAoYWxwaGEpIHN1cHBvcnQgZm9yIHRoZSBUU00gc2VjdXJpdHkgbW9kZWwKKyAgICAgIC0gU2VwYXJhdGUgdXNlciBtYW5hZ2VtZW50IGludG8gbmV3IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIHNjcmlwdAorCisgICAgdW5zcGVjaWZpZWQ6CisgICAgICAtIFtCVUcgMTU5NjYzOF06IG1lbW9yeSBsZWFrIGluIGlwQ2lkclJvdXRlVGFibGUsIGluZXRDaWRyUm91dGVUYWJsZQorICAgICAgLSBbQlVHIDE2MTE1MjRdOiBmaXggdGNwIGNvbm5lY3Rpb24gdGFibGUgZmQgbGVhaworICAgICAgLSBbQlVHIDE3OTM1NDVdOiBUYWtlIHRoZSBuYW1lIGZyb20gdGhlIHNvY2thZGRyX3VuIGluIG9yZGVyIHRvIGF2b2lkCisJICAgICAgICAgICAgICAgdHJhbnNwb3J0IHNwZWNpZmllcnMgYW5kIG90aGVyIGRlY29yYXRpb25zLgorICAgICAgLSBbQlVHIDE4MDE4MzVdOiBNdWx0aXBsZSBkZWZhdWx0IHRyYW5zcG9ydHMgZm9yIGFuIGFwcGxpY2F0aW9uLgorICAgICAgLSBbQlVHIDE4NTEwNDddOiBEb24ndCBjb250aW51ZSB0byBwcm9jZXNzIGEgY29ycnVwdCB3YXRjaGVkIHZhbHVlLgorICAgICAgLSBbUEFUQ0ggMTYwMTQ1M106IER5bmFtaWMgTWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgaW1wcm92ZW1lbnRzCisgICAgICAtIFtQQVRDSCAxNjc0Mjk4XTogUmVtb3ZlIHVudXNlZCBzaW5rcG9ydCB2YXJpYWJsZQorICAgICAgLSBbUEFUQ0ggMTY3NDI5OV06IExlc3NlbiBzY29wZSBvZiB6b25lIHZhcmlhYmxlIGluIGR1bXBfcmVhbGxvY19vaWRfdG9faW5ldGFkZHJlc3MKKyAgICAgIC0gW1BBVENIIDE2NzQzMDJdOiBMZXNzZW4gc2NvcGUgb2YgbGVuIHZhcmlhYmxlIGluIGNvbnZlcnRfdjJwZHVfdG9fdjEKKyAgICAgIC0gW1BBVENIIDE2NzgyOThdOiBjb21waWxlLXN1YmFnZW50IGNoZWNrcyBmb3IgYmFkIEhBVkVfU0lHTkFMX0gKKyAgICAgIC0gW1BBVENIIDE2NzgzMDJdOiBuZXRzbm1wX21pYmluZGV4X2xvYWQgbGVha3MgbWVtb3J5CisgICAgICAtIFtQQVRDSCAxNjgxMDM1XTogSW1wcm92ZSBuZXQtc25tcC1jb25maWcgL2Jpbi9zaCBjb21wYXRpYmlsaXR5CisgICAgICAtIFtQQVRDSCAxOTAyMTA1XTogSGlkZSBhbmQgaW1wcm92ZSBkZWJ1ZyBsb2cgbWVzc2FnZXMKKyAgICAgIC0gW1BBVENIIDE5MDIxMTNdOiBGaXggZXJyb3IgbG9nIGluIGluZXROZXRUb01lZGlhdGFibGUKKyAgICAgIC0gRml4IGZvciByZWZzIHRvIE9CSkVDVC1HUk9VUCBpbiBhbm90aGVyIE1JQgorICAgICAgLSBJbml0YWxpemUgbG9nIHN1YnN5c3RlbQorICAgICAgLSBSZW1vdmUgc3VwcG9ydCBmb3IgdXNlIG9mIHZhcmFyZ3MuaC4KIAogICAgIHBlcmw6CisgICAgICAtIFtCVUcgMTQ1MDY2OV06IGEgcGVybCBhZ2VudHggY29uc3VtZXMgbWVtb3J5CisgICAgICAtIFtCVUcgMTU1NDgxN106IEZpeCBjbGFzcyBhc3NpZ21lbnQgc28gZ2V0Um9vdE9JRCB3b3JrcyBwcm9wZXJseS4KICAgICAgIC0gW0JVRyAxNjA2MDYyXTogcGVybCBidWxrd2FsayAoYXN5bmMpIGNvcmVkdW1wCisgICAgICAtIFtCVUcgMTYxOTgyN106IGltcHJvdmUgaGFuZGxpbmcgb2YgbGluayBkZXBlbmRlbmNpZXMKICAgICAgIC0gW0JVRyAxNzQ3NzMzXTogTW9yZSByb2J1c3QgaGFuZGxpbmcgb2YgdW5kZWZpbmVkIHZhbHVlcy4KLSAgICAgIC0gW0JVRyAxODI2MTc0XTogQ2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHByaW50aW5nIHZhbHVlcy4KICAgICAgIC0gW0JVRyAxODM0NTM5XTogQ29uc2lzdGVudCBoYW5kbGluZyBvZiBPSUQgcGFyc2luZy4KKyAgICAgIC0gW1BBVENIIDE2Mjc5NDldOiBhIHBlcmwgYWdlbnR4IGNvbnN1bWVzIG1lbW9yeQorICAgICAgLSBbUEFUQ0ggMTcyNTA0OV06IEZpeCBidWxrd2FsayBpbiBjYXNlcyBvZiBub24tcmVwZWF0ZXIgdXNhZ2UuCiAgICAgICAtIFtQQVRDSCAxODExNDYzXTogcGVybCBhc3luYyBjYWxsYmFjayBjb3JlZHVtcAorICAgICAgLSBbUEFUQ0ggMTgzNDk4M106IENvbnNpc3RlbnQgaGFuZGxpbmcgb2YgT0lEIHBhcnNpbmcuCiAgICAgICAtIFtQQVRDSCAxOTE0MzkzXTogcmVnaXN0ZXJBZ2VudCBjYW4gbm93IGJlIHJ1biBtdWx0aXBsZSB0aW1lcwogICAgICAgLSBbUEFUQ0ggMTkxNDY0M106IGZpeCBpc3N1ZXMgd2l0aCBlbWJlZGRlZCBwZXJsCiAgICAgICAtIFtQQVRDSCAxOTE0NjQ1XTogYmV0dGVyIGVuZCBvZiBtaWIgc3VwcG9ydAogICAgICAgLSBbUEFUQ0ggMTkyMDM5MF06IGZpeCByZWdpc3RyYXRpb24gb2YgdGFibGVzIHdpdGggLjAgYXMgSUlEcwotICAgICAgLSBbUEFUQ0ggMjAyMTQ0NF06IFN1cHBvcnQgU05NUHYyYyBpbiBnZXR0YWJsZQotICAgICAgLSBmaXhlZCBhbiBleHRyYSBicmFjZSBpbiB0aGUgZG9jcyBwb2ludGVkIG91dCBieSBKYXNvbiBNYXJ0aW4KLQotICAgIHB5dGhvbjoKLSAgICAgIC0gW0JVRyAxODI2MTc0XTogQ2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHByaW50aW5nIHZhbHVlcwotICAgICAgLSBbQlVHIDE4NjgyNzhdOiBQeXRob24gc2VnZmF1bHQgKGludHJvZHVjZWQgYnkgcjE2OTYyKQotICAgICAgLSBbUEFUQ0ggMTg2MjE3N106IG1hZGUgY29kZSBtb3JlIHdpbmRvd3MvY3lnd2luIGNvbXBpbGVyIGZyaWVuZGx5Ci0gICAgICAtIFtQQVRDSCAxODc3ODQwXTogZml4IE1JQiBsYWJlbCBhbmQgaW5kZXhpbmcgZHVlIHRvIGJyb2tlbiByZWdleHAKLQotICAgIEFJWDoKLSAgICAgIC0gQWRkIHN1cHBvcnQgZm9yIEFJWCA2LnguCi0KLSAgICBMaW51eDoKLSAgICAgIC0gW1BBVENIIDE5Njk2MjddOiBIYW5kbGUgZW1wdHkgL2V0Yy9zeXNjb25maWcvbmV0d29yayBmaWxlCi0gICAgICAtIEltcHJvdmVkIFJQTSBzcGVjIGZpbGVzLCBmb3IgYmV0dGVyIGNvbnNpc3RlbmN5IHdpdGgKLSAgICAgICAgdmVuZG9yLXByb3ZpZGVkIHBhY2thZ2VzCi0KLSAgICBTb2xhcmlzOgotICAgICAgLSBbQlVHIDE4MTA4MTRdOiB0Y3BUYWJsZSBtaXNzaW5nIGVudHJpZXMgYW5kIHdyb25nIHBvcnRzCi0gICAgICAtIFtQQVRDSCAxODI0MTk2XToge2lmT3BlclN0YXR1cyxpcEFkRW50SWZJbmRleH0gcmVwb3J0ZWQgaW5jb3JyZWN0bHkKLSAgICAgIC0gW1BBVENIIDE4MzQ2OTldOiBGaXggMTgzMzI5NDogRExQSSBwcm9ibGVtcyBvbiBTb2xhcmlzIDIuNgotICAgICAgLSAjZGVmaW5lIE5FV19NSUJfQ09NUExJQU5UIHRvIHN1cHBvcnQgU29sYXJpcyAxMFU0KwotCi0qIDUuNC4xICoKLQotICAgIHNubXBsaWI6Ci0gICAgICAtIENoYW5nZSBzbm1wX3Nlc3NfYWRkX2V4IHRvIGNvbnNpc3RlbnRseSBjbG9zZSBhbmQKLSAgICAgIC0gRGVhbGxvY2F0ZSB0aGUgY29uZm1pYnMgYW5kIGNvbmZtaWJkaXJzCi0gICAgICAtIEZFQVRVUkVTOiAxMDQxODg4OiBDaGVjayBkaXJlY3RvcnkgcGF0aHMgZm9yCi0gICAgICAtIEZFQVRVUkVTOiA4NTE4ODc6IFJlcG9ydCByYW5nZSBpbmZvcm1hdGlvbiBmb3IKLSAgICAgIC0gUmVhZCB0aGUgY29uZmlnIHBhcmFtZXRlcnMgZGVmVGFyZ2V0IGFuZAotICAgICAgLSBVc2UgdGhlIGRlZmF1bHRfdGFyZ2V0IGFyZ3VtZW50IGlmIGl0IGlzCi0gICAgICAtIFtCVUcgMTYwMDE3MV06IFN1cHBvcnQgbG9uZ2VyIGNvbW11bml0eSBzdHJpbmdzCi0gICAgICAtIFtCVUcgMTYxOTgyN106IGxpbmsgYWdhaW5zdCBuZWVkZWQgZXh0ZXJuYWwKLSAgICAgIC0gW0JVRyAxNjE5ODI3XTogbGluayBuZXQtc25tcCBsaWJyYXJpZXMgYW5kIGJpbmFyaWVzCi0gICAgICAtIFtCVUcgMTY2MDA2MV06IFZhbGlkYXRlIGVuZ2luZUlEcyBtb3JlIHN0cmljdGx5LgotICAgICAgLSBbUEFUQ0ggMTU0ODY3MF06IEZpeCByYW5nZSBjaGVja3MgZm9yIHVuc2lnbmVkCi0gICAgICAtIFtQQVRDSCAxNTkyNzA2XTogRml4IG1lbW9yeSBsZWFrIHdoZW4gY2xvbmluZwotICAgICAgLSBbUEFUQ0ggMTYxNjkxMl06IGZpeAotICAgICAgLSBbUEFUQ0ggMTYyMDQyNF06IEhvbm9yCi0gICAgICAtIFtQQVRDSCAxNjM0NjIwXTogRml4IGxlYWtzIGZyb20KLSAgICAgIC0gW1BBVENIIDE2NDAxMTRdOiBEb24ndCBzdG9yZSB0cmFpbGluZyBudWxsCi0gICAgICAtIFtQQVRDSCAxNjQxODk1XTogRXh0ZW5kIHNob3J0IHZpZXcgbWFza3MgKGFzIHBlcgotICAgICAgLSBbUEFUQ0ggMTY0MTk3Ml06IGFkZCBtaXNzaW5nIGNvbnN0Ci0gICAgICAtIFtQQVRDSCAxNjUzNjcwXTogQ29uc2lzdGVudCBTTk1QdjMgYmVoYXZpb3VyCi0gICAgICAtIFtQQVRDSCAxNjgxMDMwXTogQmV0dGVyIGhhbmRsaW5nIG9mIGVtcHR5Ci0gICAgICAtIFtQQVRDSCAxNjg3MzE2XTogRG9uJ3QgZHJvcCBjb25zdCBmcm9tIGNhc3RzLgotICAgICAgLSBbUEFUQ0ggMTY4NzMyNV06IEZpeCBwcm9ibGVtIHdpdGggb3BlcmF0b3IKLSAgICAgIC0gaW5jcmVtZW50ICJjdXJyZW50IiBhbmQgImFnZSIgYWNjb3JkaW5nIHRvCi0gICAgICAtIGxpYnJhcnkgbGF5ZXJpbmcgaW1wcm92ZW1lbnRzOiBpbnRyb2R1Y2UKLSAgICAgIC0gcGF0Y2g6IDE2NDU2OTg6IGZpeCA2NC1iaXQgc2lnbmVkIGludGVnZXIKLQotICAgIHNubXBhcGk6Ci0gICAgICAtIERvIG5vdCB1c2UgZ2V0c2VydmJ5bmFtZSB0byBmaW5kIGRlZmF1bHQgcG9ydAotCi0gICAgc25tcGQ6Ci0gICAgICAtIENvcnJlY3QgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gZm9yCi0gICAgICAtIFtCVUcgMTA0NjMyN106IFJlc2V0ICJpbmNsdWRlQWxsRGlza3MiIGZsYWcgd2hlbgotICAgICAgLSBbQlVHIDEwNzM3ODJdOiBSZXN0b3JlIFBlcmZTdGF0IHZhbHVlcyBmb3IgRnJlZUJTRAotICAgICAgLSBbQlVHIDExMDIwNThdOiBTa2lwIG5vbi1tb3VudGVkIGRpc2tzIChlLmcuIHN3YXAKLSAgICAgIC0gW0JVRyAxMTU5OTA4XTogRml4IG1lbW9yeSBsZWFrCi0gICAgICAtIFtCVUcgMTM5Nzg5NV06IGluY2x1ZGUgbWlzc2luZyBpbnRlcmZhY2UKLSAgICAgIC0gW0JVRyAxNDEzNzI4XTogUmVmZXJlbmNlIGluZGV4IHZhbHVlcyBpbiBkZWJ1ZwotICAgICAgLSBbQlVHIDE0MTYyNzZdOiBIYW5kbGUgZGVwZW5kZW5jeSBvbiBNSUIgcGFyc2luZwotICAgICAgLSBbQlVHIDE1NDY4MTddOiBGaXggc25tcEVudGVycHJpc2UgdmFyYmluZCB3aGVuCi0gICAgICAtIFtCVUcgMTU1ODgyM106IGZpeCBpcEFkZHJlc3NUYWJsZSBtZW1vcnkgbGVhawotICAgICAgLSBbQlVHIDE2MDAyNjFdOiBIYW5kbGUgbm9uLXg4NiAvcHJvYy9jcHVpbmZvIGZvcm1hdAotICAgICAgLSBbQlVHIDE2MDIyODZdOiBEb24ndCBsZXQgdGFibGUgaG9sZXMgYmxvY2sgbGF0ZXIKLSAgICAgIC0gW0JVRyAxNjI4NjEzXTogUmVzdG9yZSBtZW1Ub3RhbEZyZWUuMCBvbiBTb2xhcmlzCi0gICAgICAtIFtCVUcgMTYzMzU5NV06IEZpeCBBZ2VudFggaGFuZGxpbmcgb2YgQ291bnRlcjY0Ci0gICAgICAtIFtCVUcgMTY3NzA2M106IENoZWNrIGZvciBmYWlsZWQgbWFsbG9jIGNhbGxzLgotICAgICAgLSBbQlVHIDE2ODUwNjddOiBNb3JlIHByZWNpc2UgaGFuZGxpbmcgb2YKLSAgICAgIC0gW0JVRyAxNjg1MDgxXTogQ2hlY2sgZm9yIHZhbGlkIE9JRCBvbiBGcmVlL1VuZG8KLSAgICAgIC0gW0JVRyAxNzEyOTg4XTogZGVmYXVsdCBhbmQgY29uZmlndXJhYmxlIG1heGltdW0KLSAgICAgIC0gW0JVRyAxNzQ1MTEzXTogSGFuZGxlIHNpbmdsZS1saW5lIChhbmQgemVyby1saW5lKQotICAgICAgLSBbQlVHIDE3NjA2MzNdOiBmaXggdHlwbyBpbiBkZWJ1ZyBtZXNzYWdlCi0gICAgICAtIFtCVUcgOTAyNjEwXTogRG9uJ3QgZGlzY2FyZCBwZW5kaW5nIGRhdGEgZm9sbG93aW5nCi0gICAgICAtIFtCVUcgOTAyODAxXTogRml4IG9yZGVyaW5nIG9mIFNNVVgtcmVnaXN0ZXJlZAotICAgICAgLSBbUEFUQ0ggMTYwMTE4OCwgXTogQlVHOiAxNjAwNDMyOiBIYW5kbGUgc2lnbmFscwotICAgICAgLSBbUEFUQ0ggMTYyMDQyNF06IEZpeCBub3RpZmljYXRpb24gc2VuZGluZyBzbyB0aGF0Ci0gICAgICAtIFtQQVRDSCAxNjM3Mjg3XTogSGFuZGxlIG11bHRpcGxlIHRhcmdldCB0YWdzCi0gICAgICAtIFtQQVRDSCAxNjM5MjgyXTogU2F2ZSBwZXJzaXN0ZW50Ci0gICAgICAtIFtQQVRDSCAxNjM5MzYwXTogRml4IHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUKLSAgICAgIC0gW1BBVENIIDE2Mzk3MjZdOiBSZXBvcnQgcGh5c2ljYWwgbWVtb3J5Ci0gICAgICAtIFtQQVRDSCAxNjQxMzMyXTogSW5jbHVkZSBtaXNzaW5nIGFnZW50IGNvbmZpZwotICAgICAgLSBbUEFUQ0ggMTY0MTY4NV06IEhhbmRsZSB1bnJlc3BvbnNpdmUgQWdlbnRYCi0gICAgICAtIFtQQVRDSCAxNjQxODY1XTogRG9uJ3QgZG91YmxlIGNoZWNrIHNubXBUcmFwT0lECi0gICAgICAtIFtQQVRDSCAxNjQyMjU1XTogSGFuZGxlIHNhdmluZyBsb25nCi0gICAgICAtIFtQQVRDSCAxNjQ0MjgwXTogRG9uJ3QgYXV0b21hdGljYWxseSBwcm9iZSBmb3IKLSAgICAgIC0gW1BBVENIIDE2NDQyODBdOiBVc2UgdGhlIGNvcnJlY3QgZW5naW5lSUQgd2hlbgotICAgICAgLSBbUEFUQ0ggMTY0NDcxNF06IHJlcGxhY2UKLSAgICAgIC0gW1BBVENIIDE2NTk2MjNdOiBIYW5kbGUgU01VWCBwZWVycyB3aXRoIGFuIGVtcHR5Ci0gICAgICAtIFtQQVRDSCAxNjY1NTQ5XTogSGFuZGxlIGNyZWF0aW5nIFZBQ00gZW50cmllcwotICAgICAgLSBbUEFUQ0ggMTY2NTk4NV06IEltcGxlbWVudCBpcFJlYXNtVGltZW91dAotICAgICAgLSBbUEFUQ0ggMTY2NjczN106IGluY2x1ZGUgaXB2NiBjb3VudHMgaW4KLSAgICAgIC0gW1BBVENIIDE2NjgxOTNdOiBGaXggY2hlY2sgZm9yIHY2IFJlYXNtTWF4U2l6ZQotICAgICAgLSBbUEFUQ0ggMTY2ODE5M106IFVwZGF0ZSByZWdpc3RyYXRpb24gb2YKLSAgICAgIC0gW1BBVENIIDE2Njg5NTJdOiBJZ25vcmUgem9tYmllIHByb2Nlc3Nlcy4KLSAgICAgIC0gW1BBVENIIDE2NzY0NzhdOiBmaXggdWRwRW5kcG9pbnRSZW1vdGVBZGRyZXNzCi0gICAgICAtIFtQQVRDSCAxNjc4Nzg4XTogQmV0dGVyIGhhbmRsaW5nIG9mIFNNVVggc29ja2V0Ci0gICAgICAtIFtQQVRDSCAxNjgzMDU0XTogc2V0IHVkcEVuZHBvaW50SW5zdGFuY2UgdG8KLSAgICAgIC0gW1BBVENIIDE2ODczMzZdOiBTdGFydCB1c2luZyB0aGUgZW5oYW5jZWQKLSAgICAgIC0gW1BBVENIIDE2OTI3NjhdOiBGaXggY29weWluZyBvZiBub24tb2N0ZXQtYWxpZ25lZAotICAgICAgLSBbUEFUQ0ggMTY5ODE4NF06IFJlZ2lzdGVyIG5vbi1kZWZhdWx0IGNvbnRleHQKLSAgICAgIC0gW1BBVENIIDE3MDA3MzBdOiBSZW1vdmUgdW51c2VkIGV4dGVybiBkZWNsYXJhdGlvbi4KLSAgICAgIC0gW1BBVENIIDE3MDA3MzJdOiBGaXggZGVidWcgb3V0cHV0IHN0YXRlbWVudHMuCi0gICAgICAtIFtQQVRDSCAxNzAwNzM3XTogVGlkeSB1cCBzZXRTZXJpYWxObwotICAgICAgLSBbUEFUQ0ggMTcyOTYyOV06IEZpeCBtZW1vcnkgbGVhayBpbiBkaXNtYW4KLSAgICAgIC0gcGF0Y2ggZnJvbSBXb2p0ZWsgSmF3b3IgdG8gaGFuZGxlIHJvdyBkZWxldGlvbgotICAgICAgLSBwYXRjaDogMTIyNTQ0MDogQXBwbHkgaW50ZW50IG9mIHBhdGNoOiB0byBkZWxheQotICAgICAgLSBwYXRjaDogMTU5NTU2ODogZnJvbSBjeXJpbF9tYXJnYXJpYTogZml4Ci0gICAgICAtIHBhdGNoOiAxNjE3MjU1OiBmaXggbGVuZ3RoIG9mIHRoZSBoaXN0b3J5IGFycmF5Ci0gICAgICAtIHBhdGNoOiAxNzAwMTU3OiBmcm9tIGFmcmlrYTogZml4ZXMgb3JkZXJpbmcgb2YgZXhlYwotICAgICAgLSBwYXRjaDogMTcxMDYzMjogZnJvbSBtYXZhcmxleTogZml4IG1lbW9yeSBsZWFrIG9uCi0gICAgICAtIHBhdGNoOiAxNzE5MjUzOiBmcm9tICJDaHJpc3RpYW4gSnVuZyI6IGZpeAotICAgICAgLSBwYXRjaDogMTcxOTI1NDogZnJvbSAiQ2hyaXN0YW4gSnVuZyI6IHVwZGF0ZQotCi0gICAgc25tcHRyYXBkOgotICAgICAgLSBbQlVHIDE2MzgyMjVdOiBGaXggaW50ZXJwcmV0YXRpb24gb2YgdHJhbnNwb3J0Ci0gICAgICAtIFtQQVRDSCAxNjIwNDI0XTogRml4IG5vdGlmaWNhdGlvbiByZWNlcHRpb24gc28KLSAgICAgIC0gcGF0Y2g6IDEyMjU0NDA6IEFwcGx5IGludGVudCBvZiBwYXRjaDogdG8KLSAgICAgIC0gdXBwb3J0IGZvciBmb3J3YXJkaW5nIHRyYXBzIGJ5IE9JRCBzdWJ0cmVlLgotCi0gICAgYXBwczoKLSAgICAgIC0gW0JVRyAxOTY0MTM2XTogRHJvcCBOVUxMIHR5cGUgZnJvbSBzbm1wc2V0IHVzYWdlCi0gICAgICAtIFtQQVRDSCAxNTI5NTIzXTogQ2xvc2UgU05NUCBzZXNzaW9uIG9uIGZhaWx1cmUuCi0KLSAgICBidWlsZDoKLSAgICAgIC0gTGluayBsaWJkbCBhZ2FpbnN0IGxpYm5ldHNubXBtaWJzIGluc3RlYWQgb2YKLSAgICAgIC0gTGluayBsaWJrdm0gYW5kIGxpYndyYXAgdG8gbGlibmV0c25tcGFnZW50Ci0gICAgICAtIFtCVUcgMTA5NjE2Nl06IEhhbmRsZSAtLXdpdGhvdXQtbG9nZmlsZSBjb3JyZWN0bHkuCi0gICAgICAtIFtCVUcgMTY0Nzk3Nl06IEN5Z3dpbi9NaW5HVyBXaW5kb3dzIGJ1aWxkIGZhaWxzCi0gICAgICAtIFtQQVRDSCAxNjI1MTM1XTogY29uZmlndXJlIGxvY2F0aW9uIG9mIHB5dGhvbgotICAgICAgLSBbUEFUQ0ggMTY4MTA3M106ICNpZmRlZiBiYXNlZCBjb25maWdfZXJyb3IgaW5zdGVhZAotICAgICAgLSBbUEFUQ0ggMTcyODIyNl06IG1ha2Ugc3VyZQotICAgICAgLSBbUEFUQ0ggMTcyODIzMF06IGFkZAotICAgICAgLSBbUEFUQ0ggMTcyODIzN106IE1vdmUKLSAgICAgIC0gW1BBVENIIDE3MjgyNDRdOiBBZGQKLSAgICAgIC0gW1BBVENIIDE3MjgyNDddOiBBZGQgdHlwZQotICAgICAgLSBhZGQgIkJ1aWxkUmVxdWlyZXM6IHBlcmwtRXh0VXRpbHMtRW1iZWQiIHRvIHRoZQotICAgICAgLSBhZGQgY29uZmlndXJlIGNoZWNrIGZvciBoYXNtbnRvcHQgdG8gZml4IHRoZQotICAgICAgLSBvbmx5IGVuYWJsZSBtaWJJSS9pcHY2IHRocm91Z2ggLS1lbmFibGUtaXB2NiBvbgotICAgICAgLSBwYXRjaCBmcm9tIGFwcGxlIHRvIHNpbXBsaWZ5IG1ha2VmaWxlIHRhcmdldAotICAgICAgLSB1cGRhdGUgdG8gbGlidG9vbCAxLjUuMjQgKGZyb20gMS41LjIyKQotICAgICAgLSB1c2UgTERGTEFHUyB3aGVuIGJ1aWxkaW5nIGFnZW50LCBoZWxwZXJzIGFuZCBtaWIKLSAgICAgIC0gdXNlIGxpYnRvb2wgY2xlYW4gZm9yIHJlbW92aW5nIGZpbGVzIHRvIGVuc3VyZSB3ZQotICAgICAgLSB3b3JrIGFyb3VuZCBsaWJuZXRzbm1wYWdlbnQvbGlibmV0c25tcGhlbHBlcnMKLSAgICAgIC0geWV0IGFub3RoZXIgZml4IHRvIGFkZHJlc3MgYnVpbGQgaXNzdWVzIHdpdGgKLQotICAgIGJ1aWxkaW5nOgotICAgICAgLSBDaGVjayBmb3Igc3VwcG9ydCBvZiBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucwotICAgICAgLSBEaXNhYmxlIGlubGluaW5nIG9uIHNvbGFyaXMgYXMgdGhlcmUgYXJlIHNvbWUKLQotICAgIGNvbmZpZ3VyZToKLSAgICAgIC0gW0JVRyAxNTY3MzI0XTogQ2xhcmlmeSBwcm9tcHRpbmcgZm9yCi0KLSAgICBkb2N1bWVudGF0aW9uOgotICAgICAgLSBbQlVHIDEyNDcxNjRdOiBEb2N1bWVudCB1c2Ugb2YgT0lEIG1hY3JvcwotICAgICAgLSBbQlVHIDE0MDc0NzZdOiBDbGFyaWZ5IE1JQiBwYXJzaW5nIHRvZ2dsZQotICAgICAgLSBbQlVHIDE2MTQxMDRdOiBicm9rZW4gc25tcGQoOCkgbWFudWFsIHBhZ2UKLSAgICAgIC0gW1BBVENIIDE2MDQ1ODBdOiBTTk1QKDMpIG1hbnVhbCBwYWdlCi0KLSAgICBpcml4OgotICAgICAgLSBbUEFUQ0ggMTcwOTc0OF06IE9wdGltaXplZCBJUklYIGNwdSBzdGF0cwotCi0gICAgbGlicmFyeToKLSAgICAgIC0gRkVBVFVSRVM6IDQ1NDAyODogRGV0ZWN0IGFuZCBoYW5kbGUgZW1wdHkgTUlCCi0gICAgICAtIFBhdGNoIGZyb20gIk1pdHN1cnUgQ2hpbmVuIjogY2xlYW5zIHVwIHRoZQotICAgICAgLSBbUEFUQ0ggMTY0MjA3MV06IERvbid0IGZpZGRsZSB3aXRoIHRoZSBzdG9yYWdlCi0gICAgICAtIFtQQVRDSCAxNjY1NTQzXTogSGFuZGxlIFZBQ00gY2hlY2tzIGNvcnJlY3RseS4KLQotICAgIG1pYjJjOgotICAgICAgLSBbQlVHIDE0Mjk0NzJdOiBQcm90ZWN0IGFnYWluc3QgbWlzc2luZyBpbnN0YW5jZXMKLSAgICAgIC0gW0JVRyAxNTgyOTcyXTogSGFuZGxlIEB3aGlsZUAvQGVuZEAgcHJvcGVybHkuCi0gICAgICAtIFtCVUcgODMzNjczXTogTW9yZSBmb2N1c2VkIHNpemUgY2hlY2tzLgotICAgICAgLSBbUEFUQ0ggMTY2ODE3MV06IHNraXAgdW5rbm93biBjb2xzIGluIG1pbi9tYXgKLQotICAgIG1pc2M6Ci0gICAgICAtIERvbid0IHVzZSB0aGUgbGVnYWN5IHN5bWJvbAotCi0gICAgcGF0Y2g6Ci0gICAgICAtIGZpeCB0aGUgLU0gc3dpdGNoIGZvcgotCi0gICAgcGVybDoKLSAgICAgIC0gW0JVRyAxNDUwNjY5XTogUEFUQ0g6IDE2Mjc5NDk6IGZyb20gbWFydGluOTg3OiBhCi0gICAgICAtIFtCVUcgMTYxOTgyN106IGxpbmsgbGlibmV0c25tcGFnZW50L2xpYm5ldHNubXB0cmFwZAorICAgICAgLSBbUEFUQ0ggMTk1NjE5M106IGJldGEgdGhyZWFkYWJsZSBwZXJsIG1vZHVsZSBjb2RlIGZvciBTTk1QdjEvMmMgdXNhZ2UuCisgICAgICAtIFtQQVRDSCAyMDIxNDQ0XTogU3VwcG9ydCBTTk1QdjJjIGluIGdldHRhYmxlIHByb2Nlc3NpbmcKKyAgICAgIC0gW1BBVENIIDIwMjI5NDhdOiBGaXggZm9yIENvdW50ZXI2NCBpbiBwZXJsIHN1YmFnZW50CisgICAgICAtIFtQQVRDSCAyMTgyMDc5XTogRml4IHZhcmlvdXMgcGVybCB3YXJuaW5ncyAmIGFsbG93IHVzZSBvZiAidXNlIHN0cmljdCIKKyAgICAgIC0gW1BBVENIIDIyNzIzNDddOiBJbXBsZW1lbnQgImltcGxpZWQiIGluIE1JQiBoYXNoCisgICAgICAtIFtQQVRDSCAyMzYxNzEyXTogRml4IGdldGJ1bGsgb3B0aW1pemF0aW9uIGR1cmluZyB3YWxrcworICAgICAgLSBbUEFUQ0ggMjcwOTcwNV06IFJldHJpZXZlIHNyYy90YXJnZXQgSVAgYWRkcmVzcyBpbiBQZXJsLWJhc2VkIGFnZW50cworICAgICAgLSBbUEFUQ0ggMjc2MzcxN106IEFsbG93IHBlcmwgdG8gdXNlIE9QQVFVRXMKKyAgICAgIC0gW1BBVENIIDI3OTM4NTddOiBSZXBvcnQgZmFpbGVkIGFzeW5jaHJvbm91cyByZXF1ZXN0cy4KICAgICAgIC0gZml4IFNOTVAgU0VUIGZvciBJUCBhZGRyZXNzZXMgb24gNjQtYml0CiAgICAgICAtIGZpeCBwcmVyZXF1aXNpdGVzIGZvciBOZXRTTk1QOjpUcmFwUmVjZWl2ZXIKICAgICAgIC0gZml4IHN5bnRheCBlcnJvciBpbiBOZXRTTk1QOjphZ2VudDo6U3VwcG9ydAotICAgICAgLSBpbnN0YWxsIGVtYmVkZGVkIHBlcmwgaW5pdCBmaWxlcyBmb3IKLSAgICAgIC0gcGF0Y2g6IDE3MjUwNDk6IGZpeCBidWxrd2FsayBpbiBjYXNlcyBvZiBub24tcmVwZWF0ZXIKLQotICAgIHBvcnRzOgotICAgICAgLSBwYXRjaDogMTcwNjM0NDogZnJvbSBuYXlsb3I6IGZpeCBjb21waWxhdGlvbiB3aXRoCisgICAgICAtIGluc3RhbGwgZW1iZWRkZWQgcGVybCBpbml0IGZpbGVzIHdpdGggY29ycmVjdCBwZXJtaXNzaW9ucwogCiAgICAgcHl0aG9uOgotICAgICAgLSBbUEFUQ0ggMTcxNjExNF06IExldCBweXRob24gYnVpbGQgaW4gc291cmNlIHRyZWUKKyAgICAgIC0gW0JVRyAxODI2MTc0XTogQ2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHByaW50aW5nIHZhbHVlcy4KKwkgICAgICAgICAgICAgICBBZGRyZXNzZXMgQ1ZFLTIwMDgtMjI5MgorICAgICAgLSBbQlVHIDE4NjgyNzhdOiBQeXRob24gc2VnZmF1bHQKKyAgICAgIC0gW0JVRyAyMjU4OTM1XTogUHl0aG9uIEV4dGVuc2lvbiBNb2R1bGUgZmFpbHMgb24gU29sYXJpcworICAgICAgLSBbUEFUQ0ggMTcxNjExNF06IExldCBweXRob24gYnVpbGQgaW4gc291cmNlIHRyZWUgIChEZWJpYW4gcGF0Y2gjMzgpCisgICAgICAtIFtQQVRDSCAxODYyMTc3XTogbWFkZSBjb2RlIG1vcmUgd2luZG93cy9jeWd3aW4gY29tcGlsZXIgZnJpZW5kbHkKKyAgICAgIC0gW1BBVENIIDE4Nzc4NDBdOiBGaXggTUlCIGxhYmVsIGFuZCBpbmRleGluZyBkdWUgdG8gc2wsIGJyb2tlbiByZWdleHAKKyAgICAgIC0gW1BBVENIIDIwNzQ4MTddOiBGaXggcmVnZXhwIGVuZ2luZSBDUFUgcGVyZm9ybWFuY2UgaXNzdWVzCisgICAgICAtIFtQQVRDSCAyMjYwODI4XTogRml4IHB5dGhvbiBzbm1wd2FsayBtZW1vcnkgbGVhaworICAgICAgLSBbUEFUQ0ggMjU4MDk3OV06IEZpeCBweXRob24gc2Vzc2lvbiBwb2ludGVycyBvbiA2NC1iaXQgc3lzdGVtcy4KKyAgICAgIC0gW1BBVENIIDI2Njc0MTVdOiBTdXBwb3J0ICJVc2VOdW1lcmljIiBvcHRpb24uCisgICAgICAtIFtQQVRDSCAyNzc1ODAwXTogQWxsb3cgdGhyZWFkaW5nIHRvIGNvbnRpbnVlIHdoZW4gYSByZXF1ZXN0IGlzIHNlbnQKIAogICAgIHRlc3Q6Ci0gICAgICAtIHN1cHBvcnQgYSAtbiBmbGFnIHRvIFJVTlRFU1RTIHRvIHByaW50IHRoZSB0ZXN0CisgICAgICAtIGVuaGFuY2Ugc25tcG5ldHN0YXQgdGVzdCB0byBjaGVjayB0Y3BUYWJsZSBpbiBUQ1AgbW9kZQorICAgICAgLSBzdXBwb3J0IGEgLW4gZmxhZyB0byBSVU5URVNUUyB0byBwcmludCB0aGUgdGVzdCBudW1iZXIgZm91bmQgaW4gdGhlCisJdGVzdCBmaWxlIGFzIG9wcG9zZWQgdG8gdGhlIG51bWVyaWNhbCBjb3VudAorICAgICAgLSBEbyBub3QgdGVybWluYXRlIG9uIFNJR0NITEQgc2luY2UgZGFzaCBhbmQgc291bWUgYm91cm5lIHNoZWxscyB3aWxsCisJZXhpdCB0aGUgbWFpbiBzaGVsbCB3aGVuIGEgc3Vic2hlbGwgdGVybWluYXRlcyBpbiB0aGF0IGNhc2UuCiAKLSAgICB1bnNwZWNpZmllZDoKLSAgICAgIC0gW0JVRyAxNTk2NjM4XTogbWVtb3J5IGxlYWsgaW4gaXBDaWRyUm91dGVUYWJsZSwKLSAgICAgIC0gW0JVRyAxNjAwMDkzXTogYXV0b2NvbmYgMi42MCBicmVha3MgdGhlIGJ1aWxkCi0gICAgICAtIFtCVUcgMTYxMTUyNF06IGZpeCB0Y3AgY29ubmVjdGlvbiB0YWJsZSBmZCBsZWFrCi0gICAgICAtIFtCVUcgMTYzMzQ4M106IFN1cHBvcnQgQ1BVIEhBTCBvbiBGcmVlQlNENC54CisgICAgUG9ydHM6CiAgICAgICAtIFtCVUcgMTcxMDkxMF06IGluaXRpYWwgc3VwcG9ydCBmb3IgRHJhZ29uRmx5IEJTRAotICAgICAgLSBbUEFUQ0ggMTY3ODI5OF06IGZyb20gbWFnZnI6IGNvbXBpbGUtc3ViYWdlbnQgY2hlY2tzIGZvcgotICAgICAgLSBbUEFUQ0ggMTY3ODMwMV06IGZyb20gbWFnZnI6IGRlYWxsb2NhdGUgZG9tYWluIHJlZ2lzdHJ5Ci0gICAgICAtIFtQQVRDSCAxNjc4MzAyXTogZnJvbSBtYWdmcjogbmV0c25tcF9taWJpbmRleF9sb2FkIGxlYWtzCi0gICAgICAtIFtQQVRDSCAxNjc4MzA1XTogZnJvbSBtYWdmcjogRGVhbGxvY2F0ZSB0aGUgY2FjaGUgaW4KLSAgICAgIC0gW1BBVENIIDE2NzgzMDZdOiBmcm9tIG1hZ2ZyOiBEZWFsbG9jYXRlIHRoZSBsb2cgaW4KLSAgICAgIC0gW1BBVENIIDE3MTkyNDRdOiBmaXggbWZkIGdlbmVyYXRpbmcgbWFwIGZ1bmN0aW9uCi0gICAgICAtIFtQQVRDSCAxNzI4MjQxXTogZnJvbSBtaXRzdXJ1X2NoaW5lbjogYWRkIGNvbmZpZ3VyZSBjaGVjawotICAgICAgLSBwYXRjaCBmcm9tIGFwcGxlIHRvIGZpeCBjcm9zcy1jb21waWxlIGJ1aWxkcyBpbiBhcHBsZXMKLSAgICAgIC0gcGF0Y2ggZnJvbSBhcHBsZSB0byBmaXggbWlub3IgZG9jdW1lbnRhdGlvbiBidWdzLgotICAgICAgLSBwYXRjaCBmcm9tIGFwcGxlIHRvIGltcHJvdmUgbWVtb3J5IHJlcG9ydGluZworICAgICAgLSBbUEFUQ0ggMTYyMzg3NF06IGFkZCBHTlUva0ZyZWVCU0Qgc3VwcG9ydAogCiAgICAgQUlYOgotICAgICAgLSBbUEFUQ0ggMTY2NTA3OV06IEFJWCBwYXRjaGVzCi0gICAgICAtIGJ1aWxkIGZpeGVzIGZvciBlbWJlZGRlZCBQZXJsCi0gICAgICAtIGZpeCBkZWZhdWx0IHNoYXJlZCBsaWJyYXJ5IGJ1aWxkaW5nIGluc3RlYWQgb2YgZm9yY2luZwotICAgICAgLSB1c2UgIi1XbCwtYnJ0bCIgd2hlbiBjb21waWxpbmcgd2l0aCBnY2MKKyAgICAgIC0gW1BBVENIIDE2NjUwNzldOiBBSVggcGF0Y2hlcyBmb3IgY3B1IHN0YXRzIGFuZCBwcm9jZXNzIG1vbml0b3JpbmcKKyAgICAgIC0gQWRkIHN1cHBvcnQgZm9yIEFJWCA2LngKKyAgICAgIC0gQnVpbGQgZml4ZXMgZm9yIGVtYmVkZGVkIFBlcmwKKyAgICAgIC0gRml4IGRlZmF1bHQgc2hhcmVkIGxpYnJhcnkgYnVpbGRpbmcgaW5zdGVhZCBvZiBmb3JjaW5nIHN0YXRpYworICAgICAgLSBVc2UgIi1XbCwtYnJ0bCIgd2hlbiBjb21waWxpbmcgd2l0aCBnY2MKIAogICAgIEZyZWVCU0Q6Ci0gICAgICAtIGFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIHVwY29taW5nIEZyZWVCU0QgNwotICAgICAgLSBmaXggY29uZmlndXJlIHdhcm5pbmcgZm9yIHN5cy9jb25mLmgKKyAgICAgIC0gW0JVRyAxMDczNzgyXTogUmVzdG9yZSBQZXJmU3RhdCB2YWx1ZXMgZm9yIEZyZWVCU0QgNS54IHN5c3RlbXMuCisgICAgICAtIFtCVUcgMTYzMzQ4M106IFN1cHBvcnQgQ1BVIEhBTCBvbiBGcmVlQlNENC54CisgICAgICAtIFtQQVRDSCAxOTUxOTk2XTogRml4IGZvciBDUFUgc3RhdHMgb24gRnJlZUJTRAorICAgICAgLSBbUEFUQ0ggMjUwNzI0OV06IHNjdHAtbWliIHN1cHBvcnQgZm9yIEZyZWVCU0QuCisgICAgICAtIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIHVwY29taW5nIEZyZWVCU0QgNworICAgICAgLSBGaXggY29uZmlndXJlIHdhcm5pbmcgZm9yIHN5cy9jb25mLmgKKyAgICAgIC0gcGF0Y2ggZnJvbSBDZXphcnkgTW9yZ2EgdG8gZml4IGEgbWFrZSB0ZXN0IG9uIGZyZWVic2QKIAotICAgIEhQOgotICAgICAgLSBVWDogQlVHOiAxNzQyMjc4OiBjb21waWxlIGVycm9yIG9uIEhQLVVYIDExLjIzIChJQTY0KQotICAgICAgLSBVWDogSFAtVVggbmVlZHMgX1JFRU5UUkFOVCBkZWZpbmVkIHRvIHBpY2sgdXAKKyAgICBIUC1VWDoKKyAgICAgIC0gW0JVRyAyNzc5NDcyXTogRmlsZXN5c3RlbXMgbWlzc2luZyBpbiBoclN0b3JhZ2UgdGFibGUKKyAgICAgIC0gW1BBVENIIDIwODg3MjZdOiBGaXggYW4gaXNzdWUgcmVwb3J0aW5nIG1lbW9yeSBpbiBuZWdhdGl2ZSB2YWx1ZXMuCisgICAgICAtIE5lZWRzIF9SRUVOVFJBTlQgZGVmaW5lZCB0byBwaWNrIHVwIHN0cnRva19yLgogCiAgICAgSVJJWDoKLSAgICAgIC0gW1BBVENIIDE2NzU4NjldOiBDUFUgc3RhdGlzdGljcyBmb3IgSVJJWAorICAgICAgLSBbUEFUQ0ggMTY3NTg2OV06IENQVSBzdGF0aXN0aWNzIGZvciBJUklYIGJhc2VkIG9uIFBDUAorICAgICAgLSBbUEFUQ0ggMTcwOTc0OF06IE9wdGltaXplZCBJUklYIGNwdSBzdGF0cwogCiAgICAgTGludXg6Ci0gICAgICAtIFtCVUcgMTY2NjAwNV06IEZhaWwgdG8gd2FsayBpcHY2SW50ZXJmYWNlVGFibGUgb24KLSAgICAgIC0gW1BBVENIIDE1ODEyOTRdOiAKLSAgICAgIC0gZml4IGV0aHRvb2wgY29uZmlndXJlIGNoZWNrIGZvciByZWNlbnQgc3lzdGVtcworICAgICAgLSBbQlVHIDE2NjYwMDVdOiBGYWlsIHRvIHdhbGsgaXB2NkludGVyZmFjZVRhYmxlIG9uIExpbnV4CisgICAgICAtIFtQQVRDSCAxNTgxMjk0XTogaG9zdC1yZXNvdXJjZXMgaW1wcm92ZW1lbnRzCisgICAgICAtIFtQQVRDSCAxOTY5NjI3XTogSGFuZGxlIGluc3RhbGwgd2l0aCBlbXB0eSAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrIGZpbGUgCisgICAgICAtIFtQQVRDSCAxNzA0MTA1XTogQWRkIElQdjYgc3VwcG9ydCB0byB0aGUgaW5ldE5ldFRvTWVkaWFUYWJsZQorICAgICAgLSBbUEFUQ0ggMTcwNTU5NF06IFZhcmlvdXMgZml4ZXMgdG8gaXBBZGRyZXNzUHJlZml4VGFibGUgcmVwb3J0aW5nCisgICAgICAtIFtQQVRDSCAxNzA4MjQzXTogSW1wbGVtZW50IGlwRGVmYXVsdFJvdXRlVGFibGUKKyAgICAgIC0gW1BBVENIIDE3MTU0MDVdOiBJbXBsZW1lbnQgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUKKyAgICAgIC0gW1BBVENIIDE3MTkyNTRdOiB1cGRhdGUgSFJGU19pZ25vcmUgbGlzdCB0byBjdXJyZW50IGxpbnV4IGxpa2VseWhvb2RzCisgICAgICAtIFtQQVRDSCAxNzI0NjAyXTogTWZELWJhc2VkIGlwRGVmYXVsdFJvdXRlclRhYmxlIGltcGxlbWVudGF0aW9uCisgICAgICAtIFtQQVRDSCAxNzgzNDIzXTogcmV0dXJuIGEgY29ycmVjdCBpcHY2SW50ZXJmYWNlSWRlbnRpZmllciBvZiBsb29wYmFjaworICAgICAgLSBbUEFUQ0ggMTgyNjEwMl06IHN1cHBvcnQgbG9uZ2VyIGludGVyZmFjZSBuYW1lcworICAgICAgLSBbUEFUQ0ggMTgyODYwMl06IFN1cHBvcnQgaXBEZWZhdWx0VFRMIGFuZCBpcEZvcndhcmRpbmcgU0VUcworICAgICAgLSBbUEFUQ0ggMTg5NjExOF06IEZpeCBpZlRhYmxlIDMyYml0IGNvdW50ZXJzCisgICAgICAtIFtQQVRDSCAxOTI3NzUxXTogSW1wbGVtZW50IGljbXBNc2dTdGF0c1RhYmxlCisgICAgICAtIFtQQVRDSCAyMDIzNjMzXTogSW1wbGVtZW50IFNDVFAtTUlCCisgICAgICAtIFtQQVRDSCAyMDUzMjczXTogSW1wbGVtZW50IEV0aGVyTGlrZSBNSUIKIAogICAgIE1hY09TWDoKLSAgICAgIC0gW1BBVENIIDE2MDA0NTNdOiBPUyBYCi0gICAgICAtIFtQQVRDSCAxNjAwNTIyXTogQ1BVIEhBTAotCi0gICAgUGVybDoKLSAgICAgIC0gbGluayBQZXJsIG1vZHVsZXMgYWdhaW5zdCB0aGUgZXhhY3Qgc2V0IG9mIGxpYnJhcmllcworICAgICAgLSBbUEFUQ0ggMTYwMDQ1M106IE9TIFggY29tcGlsZS10aW1lIGVuZGlhbiBkZXRlcm1pbmF0aW9uCisgICAgICAtIFtQQVRDSCAxNjAwNTIyXTogQ1BVIEhBTCBpbXBsZW1lbnRhdGlvbiBmb3IgbWFjaC9kYXJ3aW4KKyAgICAgIC0gSW1wcm92ZSBtZW1vcnkgcmVwb3J0aW5nIChwYXRjaCBmcm9tIEFwcGxlKQogCiAgICAgU29sYXJpczoKLSAgICAgIC0gSUYtTUlCIGZpeDogYWRkIG1pc3NpbmcgcmV0dXJuIGF0IGVuZCBvZgotICAgICAgLSBbQlVHIDE2MjYxNTNdOiBubyBoclNXUnVuIGluZm9ybWF0aW9ucyBvbgotICAgICAgLSBbUEFUQ0ggMTYyMzQ0N106IGhyU1dSdW4KKyAgICAgIC0gW0JVRyAxNjI2MTUzXTogTm8gaHJTV1J1biBpbmZvcm1hdGlvbnMgb24gU29sYXJpcyB6b25lcworICAgICAgLSBbQlVHIDE4MTA4MTRdOiB0Y3BUYWJsZSBtaXNzaW5nIGVudHJpZXMgYW5kIHdyb25nIHBvcnRzCisgICAgICAtIFtCVUcgMTgxOTE4OV06IHtpZk9wZXJTdGF0dXMsaXBBZEVudElmSW5kZXh9IHJlcG9ydGVkIGluY29ycmVjdGx5CisgICAgICAtIFtCVUcgMTgyMjI3NV06IHtpZk9wZXJTdGF0dXMsaXBBZEVudElmSW5kZXh9IHJlcG9ydGVkIGluY29ycmVjdGx5CisgICAgICAtIFtQQVRDSCAxNjIzNDQ3XTogRml4IGhyU1dSdW4gZm9yIHRlcm1pbmF0ZWQgcHJvY2Vzc2VzCisgICAgICAtIFtQQVRDSCAxNzE5NzMwXTogU3VwcG9ydCBmb3IgaXBTeXN0ZW1TdGF0c1RhYmxlIGFuZCBpcEFkZHJlc3NUYWJsZQorICAgICAgLSBbUEFUQ0ggMTgyNDE5Nl06IHtpZk9wZXJTdGF0dXMsaXBBZEVudElmSW5kZXh9IHJlcG9ydGVkIGluY29ycmVjdGx5CisgICAgICAtIFtQQVRDSCAxODM0Njk5XTogRml4IDE4MzMyOTQ6IERMUEkgcHJvYmxlbXMgb24gU29sYXJpcyAyLjYKKyAgICAgIC0gW1BBVENIIDIwMTI0MDRdOiBEZWFsIHdpdGggbW9yZSB0aGFuIDEwIGludGVyZmFjZXMuCisgICAgICAtIFtQQVRDSCAyNzUxNTg4XTogSW5jb25zaXN0ZW50IGRhdGEgY2FuIGJlIHJlcG9ydGVkIG9uIFNvbGFyaXMgMTBVNCsKKyAgICAgIC0gI2RlZmluZSBORVdfTUlCX0NPTVBMSUFOVCB0byBzdXBwb3J0IFNvbGFyaXMgMTBVNCsKKyAgICAgIC0gSUYtTUlCIGZpeDogYWRkIG1pc3NpbmcgcmV0dXJuIGF0IGVuZCBvZiBnZXRfaWZfc3RhdHMKIAogICAgIFdpbjMyOgogICAgICAgLSBbQlVHIDE2NjI5ODddOiBjb21waWxlIGVycm9yIG9uIEN5Z3dpbgotICAgICAgLSBbUEFUQ0ggMTYyMjA4MF06IEE6IHBhc3MgV2luMzIKKyAgICAgIC0gW0JVRyAyNzc5NTQxXTogRml4ZWQgaGFuZGxlIGxlYWsgaW4gcGFzc19wZXJzaXN0LgorICAgICAgLSBbUEFUQ0ggMTYyMjA4MF06IEE6IHBhc3MgV2luMzIgaGFuZGxlcyByZW1haW4gb3Blbi4KKyAgICAgIC0gW1BBVENIIDE3MDYzNDRdOiBGaXggY29tcGlsYXRpb24gd2l0aCBjeWd3aW4KKyAgICAgIC0gW1BBVENIIDI2ODYyNDhdOiBGaXggc2V2ZXJhbCB3aW5FeHRETEwgYnVncy4KKyAgICAgIC0gW1BBVENIIDI2ODgzNDJdOiBGaXggVlMyMDA1IHZhcmlvdXMgY29tcGlsZXIgd2FybmluZworICAgICAgLSBbUEFUQ0ggMjY5MTg3Nl06IEFsbG93IGNvbXBpbGluZyB0aGUgc2VydmljZXMgdXNpbmcgdW5pY29kZS4KKyAgICAgIC0gW1BBVENIIDI2OTM3NDZdOiBpbXByb3ZlZCBzb2NrZXQgc3RhcnR1cCBzdXBwb3J0CisgICAgICAtIEFkZCBzdXBwb3J0IGZvciB3aW5FeHRETEwgdG8gYnVpbGQuYmF0CisgICAgICAtIEJ1aWxkIGZpeGVzIGZvciBNU1ZDIDIwMDguCiAgICAgICAtIGZpeCBBRVMgc3VwcG9ydAogICAgICAgLSBmaXggd2luMzIvQ29uZmlndXJlIC0td2l0aC1pcHY2CiAKKyo1LjQqCisKKyAgICBidWlsZDoKKyAgICAgIC0gW0JVRyAxNDE2NDgxXTogU3VwcG9ydCBzcGVjaWZ5aW5nIGFuIGV4cGxpY2l0IGxpbmtlci4KKyAgICAgIC0gZW5hYmxlLWFzLW5lZWRlZCB3aWxsIHRyeSB0byBsaW5rIGJ1aWx0IGxpYnJhcmllcyBhZ2FpbnN0IG5lZWRlZAorCWxpYnJhcmllcyBhdCBsaWJyYXJ5IGxpbmsgdGltZSwgcmF0aGVyIHRoYW4gYXBwbGljYXRpb24gbGluayB0aW1lLgorCisgICAgc25tcGxpYjoKKyAgICAgIC0gW1BBVENIIDEyODI1NjZdOiB0byByZXdvcmsgdHJhbnNwb3J0IGNyZWF0aW9uIHRvIGFsbG93IGZvcgorCWFsdGVybmF0aXZlIGludGVycHJldGF0aW9ucyBvZiB0aGUgYWRkcmVzcyBhbmQgYSBtb3JlIGZsZXhpYmxlCisJdHJhbnNwb3J0IHJlZ2lzdHJhdGlvbiBzeXN0ZW0KKyAgICAgIC0gW0JVR1M6IDE1Mzc0NTksIEJVR1M6IDE1NDA3NDVdIEZpeCBtaXNzaW5nIE1JQiBwYXJzaW5nIHRva2VucworICAgICAgLSBbUEFUQ0ggMTU2MjE2OF06IGNoZWNrIGZvciBhIHNvY2sgZmQgbGVzcyB0aGFuIDAuCisgICAgICAtIFtQQVRDSCAxNTcwNjUwXTogY3JlYXRlIGEgbG9nZ2luZyBzaHV0ZG93biBmdW5jdGlvbiB0byBwcm9wZWxyeQorCWNsZWFuIHVwIGxvZyByZWdpc3RyYXRpb25zIGlmIG5lZWRlZC4KKyAgICAgIC0gW1BBVENIIDE1NjUyOTNdOiBVRFBJUHY2IHRyYW5zcG9ydCByZXBvcnRzIHdyb25nIHBvcnQgbnVtYmVyCisgICAgICAtIHJlbmFtZSBpbml0X21pYiB0byBuZXRzbm1wX2luaXRfbWliIHRvIGF2b2lkIHN5bWJvbCBjbGFzaCB3aXRoCisJSFAtVVgncyBsaWJubQorICAgICAgLSBbUEFUQ0ggMTUwOTk0M106IHJlc3BvbnNlcyB3aWxsIGdldCBzZW50IGZyb20gdGhlIG9yaWdpbmFsIGRlc3QgSVAKKwlhZGRyZXNzIHdoZW4gcG9zc2libGUuCisKKyAgICBzbm1wZDoKKyAgICAgIC0gW1BBVENIIDE1NTA3MjVdOiBBIG5ldyB1aW50IGluc3RhbmNlIGhlbHBlciB0byBtYXRjaCB0aGUgZXhpc3RpbmcKKwlpbnQsIGxvbmcgYW5kIHVsb25nIGhlbHBlcnMKKyAgICAgIC0gW0JVRyAxNTI3OTMwXTogZml4IHNtdXggYXV0aGVudGljYXRpb24KKyAgICAgIC0gW1BBVENIIDE1NjEyNzddOiB1c2UgbmV0LmlwdjYubmVpZ2gubG8uYmFzZV9yZWFjaGFibGVfdGltZV9tcworCWluc3RlYWQgb2YgZGVwcmVjYXRlZCBiYXNlX3JlYWNoYWJsZV90aW1lCisgICAgICAtIFtCVUcgMTQ3NDQ2OF06IGlmQ29ubmVjdG9yUHJlc2VudCBhbHdheXMgcmV0dXJucyAwCisgICAgICAtIFtQQVRDSCAxNTI0NzU1XTogdG8gYmV0dGVyIHN1cHBvcnQgdGhlIFVEUFRhYmxlIGZvciB1bmtub3duIGFkZHJlc3MKKwl0eXBlcworICAgICAgLSBbUEFUQ0ggMTUzNDg3N106IHRvIGFkZCBzdXBwb3J0IGZvciBza2lwcGluZyBORlMgZW50cmllcyBpbiB0aGUKKwlob3N0IHJlc291cmNlcyBoclN0b3JhZ2VUYWJsZS4JU2VlIHRoZSBza2lwTkZTSW5Ib3N0UmVzb3VyY2VzCisJdG9rZW4gaW4gdGhlIHNubXBkLmNvbmYgZmlsZSBmb3IgZGV0YWlscy4KKyAgICAgIC0gW1BBVENIIDE1NTc1MTQgXTogRG8gbm90IGF0dGVtcHQgdG8gY29sbGVjdCBkYXRhIGR1cmluZyBTRVQKKwlwcm9jZXNzaW5nLgorICAgICAgLSBbQlVHIDE1MzU5MDNdOiBTdXBwb3J0IHNwYWNlcyB3aXRoaW4gc2VjdXJpdHkgbmFtZXMKKyAgICAgIC0gQWdlbnQgYnVpbGRzIGRlZmF1bHQgbW9kdWxlIGxpc3QgZnJvbSBhIGRlZmF1bHRfbWlicy5oIHJhdGhlciB0aGFuCisJYSBoYXJkIGNvZGVkIGNvbmZpZ3VyZSBsaXN0CisgICAgICAtIFtCVUcgMTU1OTM1OF06IGNoZWNrIHNjYW5mIHJlc3VsdHMgZm9yIGRpc2tpbyBzY2FubmluZworICAgICAgLSBbQlVHIDE1NjQyMzNdOiBIYXZlIGNvbmZpZ3VyZSB0ZXN0IGZvciBycG0gaGVhZGVycyBub3QganVzdCB0aGUKKwlsaWJyYXJpZXMKKyAgICAgIC0gW1BBVENIIDE1NzkzNjRdOiBVcGRhdGVkIGRhcndpbiBwYXRjaCB0byBmaXggY29tcGlsYXRpb24gb24gVGlnZXIKKwlhbmQgTGVhcG9yZAorICAgICAgLSBbUEFUQ0ggMTU2NTcwM106IHBhdGNoIHRvIGZpeCByYXBpZCByZWdpc3RyYXRpb25zL2RlcmVnaXN0cmF0aW9uCisJaXNzdWVzCisgICAgICAtIFtQQVRDSCAxNTYyNjg4XTogZml4IHBpbmcvcmVhdHRhY2ggYWdlbnR4IGNvZGUKKyAgICAgIC0gW1BBVENIIDE1NTE5NDhdOiBNYWtlIHBhc3NfcGVyc2lzdCB1c2FibGUgb24gdUNsaW51eAorICAgICAgLSBbUEFUQ0ggMTU2ODE1MF06IEV4dGVuZCBwYXNzX3BlcnNpc3QgZXJyb3IgbWVzc2FnZXMgdGhhdCBjYW4gYmUKKwlwYXNzZWQgYmFjayBmcm9tIHRoZSBzY3JpcHQKKyAgICAgIC0gW1BBVENIIDE1NzA2NTBdOiBtYWtlIGRlbGV0ZSB0YWJsZSBmdW5jdGlvbiBwdWJsaWMKKyAgICAgIC0gW1BBVENIIDE1NzU5ODRdOiBibG9jayBTSUdIVVAgZHVyaW5nIHJlY29uZmlnCisgICAgICAtIFtQQVRDSCAxNTcwOTgyIF06IFNvbGFyaXMgSUYtTUlCOiBTdXBwb3J0IGZvciBJUHY2LW9ubHkgaW50ZXJmYWNlcworICAgICAgLSBtZW1Ub3RhbEZyZWUgc2hvdWxkIHJlcG9ydCB0b3RhbCB2aXJ0dWFsIGluc3RlYWQgb2YgcGh5c2ljYWwgbWVtb3J5CisgICAgICAtIGJ1aWxkIGZpeCBmb3IgLS13aXRob3V0LWttZW0tdXNhZ2UKKyAgICAgIC0gW0JVRyAxNTg1ODE1XTogZml4IG1mZCBiaXRzIGxlbmd0aCBjYWxjdWxhdGlvbgorICAgICAgLSBbQlVHIDE0Mjc0MTBdOiBTZXQgYXV0aCBlbmdpbmVJRCBmb3IgU05NUHYzIHRyYXBzLgorICAgICAgLSBbQlVHIDE1MDIyNjddOiBCdWlsZCBhY2Nlc3MgbGlzdCBpbiB0aGUgY29ycmVjdCBvcmRlci4KKyAgICAgIC0gW1BBVENIIDE1NTQ4MjddOiBmcm9tIHJ0eWxlOiBmaXggaGFuZGxpbmcgb2YgZmFpbGVkIHByb3h5IFNFVAorCXJlcXVlc3RzCisgICAgICAtIFtQQVRDSCAxNTk4OTY2XTogRml4IGJ1ZyAjMTU5ODkyNzogI2VsaWYgYnVpbGQgZml4CisKKyAgICBzbm1wdHJhcGQ6CisgICAgICAtIHRoZSB0cmFwaGFuZGxlIGRpcmVjdGl2ZSBub3cgc3VwcG9ydHMgYSAtdCBzd2l0Y2ggdG8gaW5kaWNhdGUKKwltYXRjaGluZyBhbnkgT0lEIGluIHRoZSB0cmVlIGJlbG93IHRoZSBzcGVjaWZpZWQgT0lECisgICAgICAtIFtQQVRDSCAxNTM2NzczXTogc3VwcG9ydCBwYXJ0aWFsIG9pZCBtYXRjaGluZworICAgICAgLSBbUEFUQ0ggMTU5ODk2OF06IEZpeCBidWcgIzE1ODc3NTk6IHNubXB0cmFwZCBkb2Vzbid0IHJlY29nbml6ZSAtQQorCW9wdGlvbgorCisgICAgc25tcGRmOgorICAgICAgLSBbQlVHIDE1MTU1MDddOiBIYW5kbGUgZmFpbGVkIHJlcXVlc3RzIGJldHRlcgorCisgICAgcGVybDoKKyAgICAgIC0gRml4ZWQgdGhlIHBlcmwgYnVsa3dhbGsgZnVuY3Rpb24KKyAgICAgIC0gW1BBVENIIDE1NzU5MzddOiBmaXggdXNlbnVtZXJpYyBvdXRwdXQgaW4gYXN5bmMgdmFyYmluZHMgc28gdGhleQorCXJldHVybiBPSURzIGluc3RlYWQgb2YgZW1wdHkgc3RyaW5ncy4KKyAgICAgIC0gdXBkYXRlIGRlZmF1bHRfc3RvcmUgbW9kdWxlIHRvIGxhdGVzdCBkZWZhdWx0X3N0b3JlIGMtYmluZGluZworCXRva2VucworICAgICAgLSBtYWtlIHBlcmx0ZXN0IGZpeGVzIGZvciBTb2xhcmlzIDIuNiBhbmQgZWFybGllcgorICAgICAgLSBmaXhlcyBmb3IgNjQtYml0IHBsYXRmb3JtcworICAgICAgLSBtYWtlIHBlcmx0ZXN0IGZpeGVzIGZvciBIUC1VWAorICAgICAgLSBtYWtlIHBlcmx0ZXN0IGZpeGVzIGZvciBJUklYCisKKyAgICBtaWIyYzoKKyAgICAgIC0gW0JVRyAxNDc5OTE2XTogUmVzdG9yZSBjb25zaXN0ZW5jeSBpbiByb3cgY3JlYXRpb24gY29kZS4KKyAgICAgIC0gW0JVRyAyODI3MjY5XTogU3VwcHJlc3Mgbm9uLW9yZGVyZWQgVE9ETyBjb21tZW50cy4KKworICAgIG1pc2M6CisgICAgICAtIE1vc3QgbmV0LXNubXAgc3BlY2lmaWMgZGVmaW5lcyBhcmUgbm93IChhbHNvKSBhdmFpbGFibGUgdW5kZXIgYQorCXByb3BlciBORVRTTk1QXyBwcmVmaXguIFRoZSBvbGRlciwgcG90ZW50aWFsbHkgY29uZmxpY3RpbmcgbmFtZXMgYXMKKwl3ZWxsIGFzIHRoZSBhdXRvY29uZiB2YXJpYWJsZXMgY2FuIG5vdyBiZSB0dXJuZWQgb2ZmIGJ5IGEgc3BlY2lhbAorCWRlZmluZS4KKyAgICAgIC0gW0JVRyAxNTg1MjUwXTogZG9uJ3QgdXNlIGRlcHJlY2F0ZWQgb3B0aW9ucyBpbiBzdGFydCBzY3JpcHQKKyAgICAgIC0gIm1ha2UgdGVzdCIgZml4ZXMgZm9yIG5vbi1VRFAgdHJhbnNwb3J0cworICAgICAgLSBbQlVHIDE1Nzc5MTNdOiBhZGQgbWlzc2luZyBtYW51YWwgcGFnZXMgZm9yIGV4ZWN1dGFibGVzLCBzdXBwbGllZAorCWJ5IERlYmlhbgorICAgICAgLSBbUEFUQ0ggMTU5NjAyOF06IGZyb20gIlN0ZXBoZW4gSi4gRnJpZWRsIjogY29uc3QgZml4ZXMgZm9yIHRoZQorCW1pYl9hcGkoMykgbWFudWFsIHBhZ2UKKyAgICAgIC0gUlBNIHNwZWMgZmlsZSBmaXhlcyBmb3IgNjQtYml0IHBsYXRmb3JtcworCisgICAgTWFjT1NYOgorICAgICAgLSBbUEFUQ0ggMTU2Njc3N106IGJ1aWxkIGZpeGVzIGZvciBtZW1vcnlfZGFyd2luLmMKKyAgICAgIC0gYnVpbGQgZml4IGZvciBtaWJJSS91ZHBUYWJsZQorCisgICAgVHJ1NjQ6CisgICAgICAtIGZpeCAiYXV0b19ubGlzdCBmYWlsZWQgb24gYXJwdGFiX3NpemUgYXQgbG9jYXRpb24gMCIgZXJyb3JzCisKKyAgICBJUklYOgorICAgICAgLSBwcm9wZXIgaW1wbGVtZW50YXRpb24gZm9yIFVDRC1TTk1QLU1JQjo6bGFUYWJsZSAoYXZvaWRpbmcgbmxpc3QpCisKKyAgICBTb2xhcmlzOgorICAgICAgLSBbUEFUQ0ggMTU2OTUzNywxNTY5NTM5XTogbmV3IFVEUC1NSUIgYW5kIFRDUC1NSUIgaW1wbGVtZW50YXRpb24KKwkoZW5hYmxlIHRocm91Z2ggLS13aXRoLW1pYi1tb2R1bGVzPXVkcC1taWIsdGNwLW1pYikKKworICAgIEFJWDoKKyAgICAgIC0gdXNlIGNvcnJlY3QgQVJQVEFCX1NZTUJPTCBhbmQgQVJQVEFCX1NJWkVfU1lNQk9MCisgICAgICAtIFtCVUcgMTIwNTMwMF06IG5saXN0IGVycjogbmVpdGhlciBucHJvYyBub3IgX25wcm9jIGZvdW5kIChzYW1lIGZvcgorCXJ0X3RhYmxlLCBydGhhc2hzaXplLCBydGhvc3QsIHJ0bmV0KQorCmRpZmYgLS1naXQgYS9DT1BZSU5HIGIvQ09QWUlORwppbmRleCAyNmRiNjA2Li4zZWVmNDQwIDEwMDY0NAotLS0gYS9DT1BZSU5HCisrKyBiL0NPUFlJTkcKQEAgLTIyOSwzICsyMjksOTkgQEAKIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4KIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCistLS0tIFBhcnQgODogQXBwbGUgSW5jLiBjb3B5cmlnaHQgbm90aWNlIChCU0QpIC0tLS0tCisKK0NvcHlyaWdodCAoYykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCAgCittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgIAorYXJlIG1ldDoKKworMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0ICAKK25vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlICAKK2NvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nICAKK2Rpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCAgCit3aXRoIHRoZSBkaXN0cmlidXRpb24uCiszLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mIGl0cyAgCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgIAorZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EICAKK0FOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sICAKK1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBICAKK1BBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTICAKK0NPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAgCitTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UICAKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgIAorVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCAgCitPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgIAorT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUICAKK09GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiAgCitTVUNIIERBTUFHRS4KKworLS0tLSBQYXJ0IDk6IFNjaWVuY2VMb2dpYywgTExDIGNvcHlyaWdodCBub3RpY2UgKEJTRCkgLS0tLS0KKworQ29weXJpZ2h0IChjKSAyMDA5LCBTY2llbmNlTG9naWMsIExMQworQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorIAorKiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAKKyogIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIAorKiAgTmVpdGhlciB0aGUgbmFtZSBvZiBTY2llbmNlTG9naWMsIExMQyBub3IgdGhlIG5hbWVzIG9mIGl0cworICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCitgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorSE9MREVSUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKK0lOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsCitCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MKK09GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKK09OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorREFNQUdFLgorCistLS0tIFBhcnQgMTA6IElFVEYgY29weXJpZ2h0IG5vdGljZSAoQlNEKSAtLS0tLQorCitDb3B5cmlnaHQgKGMpIDIwMTMgSUVURiBUcnVzdCBhbmQgdGhlIHBlcnNvbnMgaWRlbnRpZmllZCBhcyBhdXRob3JzIG9mCit0aGUgY29kZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCivCtyBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCit0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCivCtyBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworwrcgTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlcm5ldCBTb2NpZXR5LCBJRVRGIG9yIElFVEYgVHJ1c3QsIG5vciB0aGUKK25hbWVzIG9mIHNwZWNpZmljIGNvbnRyaWJ1dG9ycywgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlCitwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4KK3Blcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg4oCcQVMKK0lT4oCdIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECitUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKK1BBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCitFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCitQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKK1BST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCitORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKK1NPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDFkZjAyMGMuLjkwN2NhYTEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMTMyICsxLDQ3ODMgQEAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUNoYW5nZXM6IFY1LjQuMyAtPiBWNS40LjQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotMjAxMS0wNi0yNCAxMjozOCAgZHRzMTIKK0NoYW5nZXM6IFY1LjUuMSAtPiBWNS41LjIKIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKK2NvbW1pdCA0MmI1YWZiM2NkNmQwNmFkYjQyNmYxZGJhYTk4MzU4ZjJiMmU4YTUzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIEp1bCAxOCAxMDo0Njo0NyAyMDEyICswMTAwCiAKLSAgIE1pc3NpbmcgY2hlY2sgZm9yIHJwbXRzLmgKKyAgICBWNS01LXBhdGNoZXMgb3V0IG9mIFJlbGVhc2UgQ2FuZGlkYXRlCiAKLTIwMTEtMDYtMjQgMTI6MjAgIGR0czEyCitjb21taXQgOGJkNDQwYzQzZTM2NWEwYjc3ZDQ3ZjU4MmNhZGU5Zjk3YzdiZmNlNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBKdWwgMTggMTA6NDY6MjggMjAxMiArMDEwMAogCi0gICAqIGNvbmZpZ3VyZToKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yCiAKLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorY29tbWl0IDZlMDg1NWEzMTU3MTk4NDk5NDExYWM1MmI0NmQ1ZjMyYWFkNWI5ZmEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgSnVsIDE4IDA5OjUxOjMyIDIwMTIgKzAxMDAKIAotMjAxMS0wNi0yNCAxMjowOCAgZHRzMTIKKyAgICBBZGQgbWlzc2luZyByZXR1cm4gdHlwZSBpbiBmdW5jdGlvbiBkZWNsYXJhdGlvbgogCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorY29tbWl0IDA3ZDgyNWU4YmIzNWVlYTlhYzZiMWNiODJjYmIyMzRmZTY2YjFhYjYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgSnVsIDE4IDA5OjUxOjMyIDIwMTIgKzAxMDAKIAotICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKyAgICBBZGQgbWlzc2luZyByZXR1cm4gdHlwZSBpbiBmdW5jdGlvbiBkZWNsYXJhdGlvbgogCi0yMDExLTA2LTI0IDEyOjAyICBkdHMxMgorY29tbWl0IDVkYjcwMDM2ZWY2NzU2MzU2NDdlNWI3YzcyNTM0NTY4Mzg4MzY2NDcKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdWwgMTEgMTQ6NTU6MzggMjAxMiAtMDcwMAogCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisgICAgZG9uJ3QgdXNlIC0tcmViYXNlCiAKLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorY29tbWl0IDE3Mjc3Njg5YjYyOWY0NTg2ZDVkNzE0ZDg3Y2U2YmMxMWY4ODc2NjgKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdWwgMTEgMTQ6NTU6MzggMjAxMiAtMDcwMAogCi0yMDExLTA2LTIzIDE1OjQxICBkdHMxMgorICAgIGRvbid0IHVzZSAtLXJlYmFzZQogCi0gICAqICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgICAKLSAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Citjb21taXQgNTIwNmQyNWQ0Y2I5NGQ0YjBkZDMzMWE1YTQxMTNkNGQ4Nzc4MmM0MgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAyIDEyOjE0OjM5IDIwMTIgLTA3MDAKIAotICAgVHdlYWsgUlBNIGhhbmRsaW5nIHRvIHdvcmsgd2l0aCBsaWJyYXJ5IHZlcnNpb24gNC45Ci0gICBCYXNlZCBvbiBhIHBhdGNoIGJ5IEphbiBTYWZyYW5laworICAgIGJldHRlciBkZXNjcmlwdGlvbiBvZiAtLWRpc2FibGUtc2V0LXN1cHBvcnQKIAotMjAxMS0wNi0yMiAxNDoyNyAgZHRzMTIKK2NvbW1pdCBmOTI4NTMyODE0NzdlZTcyNGE1MWE5OTY3ZjM3ZDNmMWRkMWIwZjdlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDIgMTI6MDk6NTAgMjAxMiAtMDcwMAogCi0gICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6CisgICAgcmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBjYXVzaW5nIGEgcHJvYmxlbQogCi0gICBQcm92aWRlIGEgZnJhbWV3b3JrIGZvciByZWFkaW5nIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20KLSAgIGEgY2FjaGUgZGlyZWN0b3J5IChyYXRoZXIgdGhhbiBxdWVyeWluZyB0aGUgUlBNZGIgZGlyZWN0bHkpLgotICAgCi0gICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKLSAgIGZ1bmN0aW9uYWxpdHkuCitjb21taXQgNWJlMjczNjg3NTE2OTFmYzFhYjU1ZmU2MmI0MTA2ZDhkOTliODcwNAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAyIDEyOjA2OjU4IDIwMTIgLTA3MDAKIAotMjAxMS0wNi0xNyAxOTowNiAgYnZhc3NjaGUKKyAgICBhZnRlciBwdWxsaW5nIGFsbCB0aGUgYnJhbmNoZXMsIHN3aXRjaCBiYWNrIHRvIHRoZSBpbml0aWFsIG9uZQogCi0gICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgorY29tbWl0IGU3MmUyMDVmZGNlZjc4N2VmODQwYzhjOTI4ZWQyNzM1MWE2OTU0NGIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgSnVuIDIyIDEzOjU4OjA3IDIwMTIgKzAxMDAKIAotICAgVXNlICVwIHRvIHByaW50IGEgcG9pbnRlciBpbnN0ZWFkIG9mICVsZAorICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKIAotMjAxMS0wNi0wMSAxNTo1NyAgZHRzMTIKK2NvbW1pdCBmNzlhNTRmMjQ3MjUwOGIxNjdkOTc3ZjM2N2MzODY0YjU2MjFlODlkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1biAyMiAxMzo0Mjo1MyAyMDEyICswMTAwCiAKLSAgICogQ0hBTkdFUzoKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMzCiAKLSAgIHZlcnNpb24gdXBkYXRlCitjb21taXQgNTZlZjVmMGRiNTFjZmQ1NTIyNmY4MmY5NGYzZjNkMjQ1MGU0ZmViNQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdW4gMjIgMTM6Mzk6MzIgMjAxMiArMDEwMAogCi0yMDExLTA2LTAxIDE1OjQ4ICBkdHMxMgorICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5yYzMKIAotICAgKiBDaGFuZ2VMb2c6Citjb21taXQgZmUxMDc3OTRlNzQwMGQyMzllOGFmM2RhOGI0YTNmYmVmMDZiNWRhOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdW4gMjIgMTM6Mjg6MzcgMjAxMiArMDEwMAogCi0gICB2ZXJzaW9uIHVwZGF0ZQorICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS01LXBhdGNoZXMKIAotMjAxMS0wNi0wMSAxNTo0NyAgZHRzMTIKK2NvbW1pdCBiNjk1M2I1MmM0ZWM0MjY0OTExNDZlMWNjMGY1NjBiMjE3MzY5NWIwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1biAyMiAxMzoyODoyNiAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnJjMworCitjb21taXQgMGY4NGZiY2Y3MTk5NWJkZGFmYWI1MDBkODdjOWM1YTZmNDYxYTczNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdW4gMjIgMTI6Mjk6MzQgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0Nzk3NDA6IEZpeCBoclNXUnVuUGVyZiBzdGF0aXN0aWNzCisKK2NvbW1pdCAxZTNiYjYwNjBiZTYxNTZkM2ZmMzE2YzVhN2U0ZmQ3ZjA1ZTM3Y2ZmCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1biAyMiAxMjoxMTo1NiAyMDEyICswMTAwCisKKyAgICBORVdTOiBzbm1wZDogQlVHOiAzNTMyMDkwOiBGaXggaGlnaCBpZkluZGV4IHZhbHVlcyBjcmFzaGluZyBockRldmljZURlc2NyCisKK2NvbW1pdCBlODY2M2ZhYzhiODg2NjMyODI2Njk3MjZhMDhmMTZkYjE2YjVmNGRiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1biAxOCAxMzozMDoyNSAyMDEyICswMjAwCisKKyAgICBSZXZlcnQgIkNITkFHRVM6IHNubXBkOiBmaXhlZCBzbm1wZCBleGl0aW5nIHNob3J0bHkgYWZ0ZXIgc3RhcnQgZHVlIHRvIGluY29taW5nIHNpZ25hbC4iCisgICAgCisgICAgVGhpcyByZXZlcnRzIGNvbW1pdCBiMTFhNGU5M2Y1MGQ4YTU0NGY4MzVmMzc2YzNhNGI4YzA2NDFhMzFhLAorICAgIHdlJ3JlIGluIFJDLXBoYXNlIGFuZCBjb2RlIGlzIGZyb3plbgorICAgIAorICAgIChzb3JyeSBmb3Igbm9pc2UpCisKK2NvbW1pdCBiMTFhNGU5M2Y1MGQ4YTU0NGY4MzVmMzc2YzNhNGI4YzA2NDFhMzFhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1biAxMSAxNjoyNjowOSAyMDEyICswMjAwCisKKyAgICBDSE5BR0VTOiBzbm1wZDogZml4ZWQgc25tcGQgZXhpdGluZyBzaG9ydGx5IGFmdGVyIHN0YXJ0IGR1ZSB0byBpbmNvbWluZyBzaWduYWwuCisKK2NvbW1pdCBhNTcwMjM4ZDU4ZWI1YTk5NmI1NmYwMWEyN2ExOGRmNmYzN2QwZjYwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1biAxMSAxNDoyMDoyNSAyMDEyICswMjAwCisKKyAgICBNb3JlIHByZWNpc2VseSBkZXNjcmliZSAtYyBvcHRpb24uCisKK2NvbW1pdCBlM2JjZDg3YzcyZmNlYTc3MDZlODY4YjVhY2U3NTI5NjA5M2Y3NDk3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxNDowOTo0MiAyMDEyICswMTAwCisKKyAgICBGaXggZGlzdC9yZWxlYXNlIGZvcm1hdAorCitjb21taXQgZDgxM2NlMmVlZWZjNjgyMjljZmNhZjIwNjAzMjQ0Y2RkNmQwOWQzYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTQ6MDc6NTIgMjAxMiArMDEwMAorCisgICAgRml4IGRpc3QvcmVsZWFzZSBmb3JtYXQKKworY29tbWl0IDEzMTQyOWU3MDYyZmJhYTY1YjgyYWZmZWQxZmI5MmRmMmMwY2M4MTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjM4IDIwMTIgKzAxMDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKKworY29tbWl0IDFjODExMGIzM2I4MTA1Y2E2MTkwOTQ1YTM1ZmU3YWU5MDMyNTJkNjgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjIxOjM4IDIwMTIgKzAxMDAKKworICAgIEF2b2lkIHBlcmwgdmVyc2lvbmluZyBwcm9ibGVtcyB3aGVuIHNldHRpbmcgdXAgdGhlIGJ1aWxkIGVudmlyb25tZW50CisKK2NvbW1pdCA1MDhlY2UxNmU2ZjZmNDk1NjJkYTIwNDc5MmFlMDY0NDI2OTk5NGQxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzoyMDo1OCAyMDEyICswMTAwCisKKyAgICBGaXggaGFuZGxpbmcgb2YgZGlzdC9yZWxlYXNlIG1lcmdlCisKK2NvbW1pdCA1YjhhODU0N2IxYTQ3ZDJmNWIyMDdmNDhmMjQ5NmU0MjQxZDkwMmM2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMToxMDo0OCAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCA2YzMyOTE0YmYyOGQ2OTVkZjM0OWRjYTI2OWU0ODhiNTAxNzAwMzE2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMTowNzoyMiAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCAyNjcwYmE2YTViMDAyN2QxMWVjM2E1ZTE4ZmU4N2RiMzg1ZjVlMGU0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMTowNTozOSAyMDEyICswMTAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS41LjIucmMyCisKK2NvbW1pdCBlNzllMzg3YjNlMThiNDg3ZWY0MTcyYzlkMjRlYjk1MjM0MDRkMGFkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo1NDoyNyAyMDEyICswMTAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCAzZjIxMTFkZTY3MzNhMDRlMTJkOTEwZDMwNmEzNGQ2NzFlMDA4NzYyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo0NjoxMSAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNS1wYXRjaGVzCisKK2NvbW1pdCBjZWZjNmY3YmQ0ZmVlMGY1MDU3ZTQ5MzAwYTZiMWQxNWQyZmQ0ZjU4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo0NTo1OSAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnJjMgorCitjb21taXQgY2NmOGZmMmM0ZGI2MDEyMmQ0MTMwMmU0YWViNzAwZTBiODY4MTA1ZgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgMjggMTA6MTg6NDMgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzUyNjU5OTogRG9uJ3QgaGFuZyBvbiByZXRyaWVkIGZhaWxpbmcgU05NUHYzIHJlc3BvbnNlcworCitjb21taXQgYzU3NTIxNjg1MDE4NWI1NjQ1NGRhZDAyNTNlMzE2NDk3OWUxMzUxMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyNyAxMzo1NjowMSAyMDEyICswMjAwCisKKyAgICBGaXggbWlzc2luZyBpbmNsdWRlLiBGaXhlcyBTSUdTRUdWIG9uIEZyZWVCU0Q5IHg2NAorCitjb21taXQgMWZiZjMzNzExYTE5ZWFjOTczOWFkMjNmNmY2MjUxZWFjYzQxZjFjNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXkgMjIgMTQ6NTQ6NDUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogTGludXg6IFBBVENIOiAzNTI1OTk4OiBEb24ndCB1c2UgYW4gdW5pbml0aWFsaXNlZCB2YWx1ZSBpbiBlcnJvciBtZXNzYWdlCisKK2NvbW1pdCAzMmMxNjg2YjY3ZGM4NWM0YTE4OTU3NjM2MzA2NTYwOWRmZWQ1ZTYxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1heSAyMiAxNDo1Mjo1NiAyMDEyICswMTAwCisKKyAgICBBdHRlbXB0IHRvIG1hcmsgcmVsZWFzZS1jYW5kaWRhdGUgYnJhbmNoZXMgYXMgc3VjaC4KKyAgICBPbWl0IGZpbmFsLXJlbGVhc2Utb25seSBzdGVwcyB3aGVuIHByZXBhcmluZyBwcmVOL3JjTiByZWxlYXNlcworICAgIChSZWxpZXMgb24gYSB0d2VhayB0byB0aGUgTWFrZXJlbGVhc2UgcGVybCBtb2R1bGVzKQorCitjb21taXQgNGM1NjMzZjE2MDNlNGJkMDNlZDA1YzM3ZDc4MmVjODkxMTc1OWM0NworQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUBmcmVlc25tcC5jb20+CitEYXRlOiAgIE1vbiBNYXkgMTQgMTE6NDA6MDYgMjAxMiAtMDQwMAorCisgICAgTkVXUzogc25tcDogQlVHOiAzNTI2NTQ5OiBDVkUtMjAxMi0yMTQxIEFycmF5IGluZGV4IGVycm9yIGxlYWRpbmcgdG8gY3Jhc2gKKworY29tbWl0IDkxMzUwMDkyYzQ2ZTY2ZDA2ZDc0MTQzZjQ4MTY0NzNkYjRkMjUxNjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTk6NTY6MzMgMjAxMiArMDEwMAorCisgICAgTWFyayB2ZXJzaW9uLXNwZWNpZmljIGNoYW5nZXMgX2JlZm9yZV8gcHVzaGluZyB0byBjZW50cmFsIHJlcG9zaXRvcnkKKworY29tbWl0IDcyNDFhY2NkNzBiODJkMGZjZDQ0ZDVhNTIzOGIyZWU5NDQ1OTAwZGIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6NTM6MTcgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMQorCitjb21taXQgN2M3OTZhMTVhMWQxYmI4NWZlZWE5NDBiZDRlMzUxNjg3NzkyMDkxOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzo1MDo0OSAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMxCisKK2NvbW1pdCAwN2UyNjhiZmI2NGIwZWM2NDViM2Y3ZTg3MjY2OTg0ZjkyMTdjZjEyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjQ0OjM3IDIwMTIgKzAxMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjUuMi5yYzEKKworY29tbWl0IDE2ZWFhZjZjM2JhMTQ1OTZjYTllZmFmNGIxMTRmMWI3MDlmNDJiNjgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6Mjk6MDMgMjAxMiArMDEwMAorCisgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMQorCitjb21taXQgYzcyOTQ2OWVmMTIxNTQ5MzBjZjlkMTU5NjdlMTYxODZmYjQ0NWYzMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzoyNzoyMCAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnJjMQorCitjb21taXQgMTQyNTcxZDNjZWEwOGYwYzA3MmQyNGMxZDM5YTQzYzc0NDZmOGNlNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzowMTowMyAyMDEyICswMTAwCisKKyAgICBXaGVuIGJ1aWxkaW5nIGEgbmV3IHJlbGVhc2UsIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiB0aGUgcGVybAorICAgIG1vZHVsZXMgbWF5IHdlbGwgYmUgZGlmZmVyZW50IHRvIHRoZSB2ZXJzaW9uIGJlaW5nIGJ1aWx0LgorICAgIFRoYXQgc2hvdWxkIG5vdCBicmVhayB0aGUgYnVpbGQuCisKK2NvbW1pdCA1YzBmNjRkNmRiMmI1OTNmN2NjMGVkMmQ0ZjU1YjdjNTkyYjc3NGE4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjI1OjE1IDIwMTIgKzAyMDAKKworICAgIE9ubHkgb3V0cHV0IGNwdSB3YXJuaW5ncyBvbmNlLgorCitjb21taXQgZWU1OGU0ODI3YjlmYTE2ZTY2MzVjYTAwM2U4YTRmMTFkY2I1ZmI3YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMyAyMjoxNzo0MiAyMDEyICswMjAwCisKKyAgICBGaXggc3BlbGluZyBpbiBlcnJvcm1lc3NhZ2UuCisKK2NvbW1pdCAwM2Y0ODVkZjIyZjIwZTE0OWNmYWU5NGM1N2NiODJmZWVjYjVkNzRiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjEyOjExIDIwMTIgKzAyMDAKKworICAgIE5vdCBhbGwgTGludXhlcyB1c2UgcnBtIChkZWJpYW4vdWJ1bnR1IGNvbWVzIHRvIG1pbmQpCisKK2NvbW1pdCA5MzA4MzgyMjRmNzgxNjk2YmQzNTIyNWYyMjU2OTM0NzQxNmYxYjE2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjEwOjE1IDIwMTIgKzAyMDAKKworICAgIENoZWNrIG5lZWQgZm9yIC1sbSB0byB1c2Ugcm91bmQvZXhwCisKK2NvbW1pdCAxMzdmZTU4MmQ2Y2M1NjExNDMwZGFiNDZlZjE0NGVmZDg0Y2ZjODAzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEFwciA2IDIwOjQ2OjU2IDIwMTIgKzAxMDAKKworICAgIFJldmVydCBjb21taXQgMWY0YTgyOWIxODI3NWU0OTU2Y2E5MWU1ZWMzNzBkZjAxNWYwNjEzMworICAgIChzbm1wX3N0b3JlX25lZWRlZCgpIEFQSSBpcyBub3QgYXZhaWxhYmxlIGluIDUuWzQ1XS54KQorCitjb21taXQgMmI3ZTY0Mjg4YzAxYThhMDYyMDI2YzUyMWNhMzFhNWU4ODVmMzBjYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxNjoxMjoxMiAyMDEyICswMTAwCisKKyAgICBGcmVlQlNELTk6IEZpeCBmb3IgJ2NvbnN0J2lmeWVkIG5saXN0IGFyZ3VtZW50cworICAgIEJhY2twb3J0IG9mIGVkNjVlY2E2ZTdmOWNmYTczODBhNzhkNTZjMDFlZDMxNDc0NWIxNjkgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IDdlOTVkODBiNjk4MDUxMjU5NjQ1YzA3NGE1M2ZmZDI2NGE2ZmE5MTYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTY6MDY6NTYgMjAxMiArMDEwMAorCisgICAgRnJlZUJTRC05OiBGaXggZm9yICdjb25zdCdpZnllZCBubGlzdCBhcmd1bWVudHMKKyAgICBCYWNrcG9ydCBvZiBlZDY1ZWNhNmU3ZjljZmE3MzgwYTc4ZDU2YzAxZWQzMTQ3NDViMTY5IGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAxYTliN2I3YzAyZTJkZWVmZTk5NGQ1OTVhN2NjMWRkMmZmYmVlZTFkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDE1OjUxOjIwIDIwMTIgKzAxMDAKKworICAgIEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoICdyZWNlbnQnIGhlYWRlciBzaHVmZmxpbmcKKyAgICBCYWNrcG9ydCBvZiBjNTNkOGMzNTI1ZjU5MGYyMjEzZDM1YjBkYTk0MTIzODYyZjNlMzY2IGZyb20gVjUtNS1wYXRjaGVzCisgICAgKFBhdGNoICMzMzYzMzA4IC0gb21pdHRpbmcgdHdlYWtzIHRvIGNvbmZpZ3VyZSkKKworY29tbWl0IDNkOWRkYjQxZTI2M2JjMWE3OGY5Zjk0NDBiOGQ0YWQ0Zjg2YzgyZTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTA6MzY6MTggMjAxMiArMDEwMAorCisgICAgRml4IHR5cG8KKyAgICBCYWNrcG9ydCBvZiA1YjcwMmIwMjRiNjAxNzZkN2Y1Njk5YjkyZTU1ZGE1MGE4ZGVhZTcxIGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAwZDM1YzYwOTU2NGI2NmExZmZlODE1NTZkMzdhZGYwNTAzYzM4OWNlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDEwOjE1OjA4IDIwMTIgKzAxMDAKKworICAgIFByb3ZpZGUgbWlzc2luZyBkZWZpbml0aW9uIG9mIE5FVFNOTVBfUFJJbworICAgICh1c2VkIGluIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIuYykKKworY29tbWl0IGFkZjc0YmY3NTNkMzk3MDM1N2FmZDYzMzgwMzI1NjI0MWQ5YzdiODcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMDg6MjA6NDYgMjAxMiArMDEwMAorCisgICAgRml4IElQdjYgVENQICYgVURQIHRhYmxlcywgKkJTRCBzdXBwb3J0IChpbmNsdWRpbmcgT3BlbkJTRCkKKyAgICBCYWNrcG9ydCBvZiBjb21taXRzIDVjZDE1NzM2MjU0NzFjMDU4M2U5MDg3YWVjNjgwMmI3NzE1N2Q1YTIKKyAgICAgIGFuZCA1MGQ3M2YwZDU2ZmUyMmM1OTA1MzBiM2UzMDVkNDFkY2RhYzNjZTAwIGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCBjZWNkNDg2OWRlYjY4ZjNkNGM3MWU3NjhkNWI0MGRkNTc2NDQ2OTI1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDI5IDIyOjI5OjMxIDIwMTIgKzAyMDAKKworICAgIFJ1bm5pbmcgYXV0b2hlYWRlciAvIGF1dG9jb25mCisKK2NvbW1pdCA5YmRiY2NhMTIyYzM3ZGEzMDRmYzZhYTY5Mzk3Mjk0NzVmOTBmNWZkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIE1hciAyOCAwOTozMDo0OSAyMDEyICswMTAwCisKKyAgICBEb3h5Z2VuLXN0eWxlIGRvY3VtZW50YXRpb24gZml4ZXMgKGJhY2stcG9ydCBvZiBHSVQgY29tbWl0IGMwOTkwM2E0MmU5ZDk3MzMxZmQ5ZTQ4ZWU4MzFhODVhZmRmOWM3MGEpCisKK2NvbW1pdCAxZjRhODI5YjE4Mjc1ZTQ5NTZjYTkxZTVlYzM3MGRmMDE1ZjA2MTMzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciAyNyAyMTo0MToyNCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ5NTY5NzogU3RvcmUgcGVyc2lzdGVudCBzbm1wVGFyZ2V0IHRhYmxlIGNoYW5nZXMKKworY29tbWl0IDFmNzVmMzc3ZDBkYjAxNzU0YzBjMTYxZGM0NDM3MzA4MWJlZWY1MjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDI3IDIxOjE0OjA2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IEZyZWVCU0Q6IFBBVENIRVM6IDM0ODkzODc6IEluc3RhbGwgRnJlZUJTRCAxMCBoZWFkZXIgZmlsZSAocGx1cyBvdGhlciBtaXNzaW5nIHZlcnNpb25zKQorCitjb21taXQgM2Q3MmM5ZTc4ZjJhZDgxN2M5ZDFkODI5NzczMjdiYmIyMGQ2M2FiOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjcgMjE6MDY6MzEgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzNDg3ODY3OiBEb24ndCBza2lwIG1pc3NpbmcgaWZYVGFibGUgZW50cmllcyAoaWZDb25uZWN0b3JQcmVzZW50IEZBTFNFKQorCitjb21taXQgOGE5YjU3MjkxNDUzY2I4YWVjMjhlNzY2YzU5NDcwMWVkMTljNGZjNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciAyNiAyMTowMzo0MSAyMDEyICswMjAwCisKKyAgICBGaXggZm9yIERyYWdvbkZseSAzCisKK2NvbW1pdCBlNWM5YTMyZjc5ZWFjMmU4NTUyN2M5Y2YwNTA4N2NkYWU5YjM1YTZjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDI2IDIwOjU5OjUzIDIwMTIgKzAyMDAKKworICAgIERyYWdvbkZseSBuZWVkcyBfS0VSTkVMX1NUUlVDVFVSRVMgdG8gY29tcGlsZSBpcHY2IGNvZGUKKworY29tbWl0IGUyZmMxNWY5ZTVhNmUzZTM2YmU1ZjQ4OTYwMWNiZjZiZjczMTkxN2YKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MjE6MzggMjAxMiArMDEwMAorCisgICAgRml4IFRDUCBzdGF0ZSB2YWx1ZXMgZm9yIERyYWdvbkZseQorCitjb21taXQgNDMyZmUzZGRmNTRmMmM5OGY5MzY5NTk0NjljYjliMDE0ZDU5OWYwNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNToxMDo1MiAyMDEyICswMTAwCisKKyAgICBSZXF1aXJlIHBlcmwgdG8gZG8gcGFzc19wZXJzaXN0IHRlc3QKKworY29tbWl0IDM3ZDI3NzBjZjUwYzk4MDIzZWViYTkwZTI1ZDM3MmJmZjczMTZhZGEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2VyLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNTowNjo0MCAyMDEyICswMTAwCisKKyAgICBGaXggVENQIHN0YXRlIHZhbHVlcyBmb3IgRHJhZ29uRmx5CisKK2NvbW1pdCA4NmE5NDhkODY5MWU4ODFkNTU1OTFkY2FiZGRjMjczOWNlNzJiMzBlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAbmJhLWxpbnV4LnNiLnN0YXRzYmlibGlvdGVrZXQuZGs+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MDE6MzcgMjAxMiArMDEwMAorCisgICAgUHJvcGVybHkgZmluZCBwYXNzIGhlbHBlcnMgZm9yIHRlc3RpbmcuCisKK2NvbW1pdCA1YjM4ZjA2MmI5OWI2ZWYzNjcwOGUyYzdkZTQ5NjVhMzE5MjYxMmU5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjM0OjQ4IDIwMTIgKzAxMDAKKworICAgIEZvciBzYWZldHksIHNpemVvZiB0aGUgcmlnaHQgdmFyaWFibGUgaW4gbWVtY3B5CisKK2NvbW1pdCBlNWY4Mjc4MmRhMDVlZmE3YzBlNmRjMmJmNWE0MWVlMTE4NjhmNDY5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjMzOjIxIDIwMTIgKzAxMDAKKworICAgIEZpeCBmb3IgaHJTV1J1biBkYXRhIGZvciBGcmVlQlNECisKK2NvbW1pdCA4MzI3NTY1ZTgyMzI3MGQxMGE0NTA0NTY4ZWRiZTViNWFlMzIzYTU1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjMxOjU0IDIwMTIgKzAxMDAKKworICAgIENsZWFuIHVwIHZhcmlhYmxlcyBmb3IgT3BlbkJTRC9OZXRCU0QKKworY29tbWl0IDE3MGY2ZjAyN2JmNGY5MTc0YjcwNzM1MzBkYTRkMDdmNDAwYmJhNTgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6Mjg6NTggMjAxMiArMDEwMAorCisgICAgTW92ZSBkZWNsYXJhdGlvbnMgaW4gZnJvbnQgb2Ygc3RhdGVtZW50cworCitjb21taXQgZGJiNDU3M2I2OWZhZTg1Y2RjOTMxYjI4OTJiNWNlNGU1YjE2YjMyMQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODoyMzozNiAyMDEyICswMTAwCisKKyAgICBSZXF1aXJlIGtlcm5lbF9uZXRic2QgZm9yIE5ldEJTRDYKKworY29tbWl0IGYxMTY4MWYxNWFhZDdkOWE1MmZhMjk4MTJlY2JiNTA3ZjFiN2ZlMjQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgTWFyIDIxIDEyOjM2OjM4IDIwMTIgKzAwMDAKKworICAgIENoZWNrIGZvciBvbGQgdGFyYmFsbHMgKGFuZCB1bnBhY2tlZCBkaXN0cmlidXRpb25zKSBiZWZvcmUgc3RhcnRpbmcuCisgICAgVGhlc2UgY2FuIGNvbmZ1c2Ugc3RlcHMgc3VjaCBhcyAibWFrZSBkZXBlbmRjaGVjayIsIHRoYXQgZG8gYSAnZmluZCcKKyAgICBvbiB0aGUgY3VycmVudCB0cmVlLCBhbmQgd291bGQgZGVzY2VuZCBpbnRvIHN1Y2ggdW5wYWNrZWQgc291cmNlIHRyZWVzLgorCitjb21taXQgNDcwZGNkNGI2YzNmZjExZmYwYTM1MzJhNzM0MGE1NmNmZmQ2OTA5OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTI6MzI6MTMgMjAxMiArMDAwMAorCisgICAgRG9uJ3QgcnVuICJtYWtlIGRvY3M7IG1ha2UgbWFuY3AiIGlmIHRoZXJlJ3Mgbm8gTWFrZWZpbGUgcHJlc2VudAorCitjb21taXQgYzlhYzQyMDM0M2UxNmRmMmI3MDY1ZjViZjI3OTBkZjQ0ZTI0N2ZiYQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTA6MjY6MTAgMjAxMiArMDAwMAorCisgICAgQWxsb3cgZGlzdHJpYnV0aW9uIGFzIHBhcnQgb2Ygbm9ybWFsIE5ldC1TTk1QIHBhY2thZ2VzLgorCitjb21taXQgYmRjY2M4NzU3MTAyOTVhYWNmNTBmNzFlYjFjMWQyZWU5N2YzMzZmZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1hciAxNiAyMDoxMDo1OCAyMDEyICswMTAwCisKKyAgICBEbyBub3QgZGVjbGFyZSB0aGUgbG9jYWwgdmFyaWFibGVzIGZvciBvcGFxdWVfc3BlY2lhbF90eXBlcyB1bmxlc3MgdGhhdCBvcHRpb24gaXMgc2V0LgorCitjb21taXQgYjgwYTY3ZGEwNTJhZGNhMWI1YTY0NGRiODNhNzgyZTE1YzIyMzdjMworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1hciAxNiAxOTo1MDowMyAyMDEyICswMTAwCisKKyAgICBDaGVjayB0aGF0IHRoZSBkYXRhIGV4aXN0IGJlZm9yZSB0cnlpbmcgdG8gcmVhZCBpdAorCitjb21taXQgYWFlZGQ1OWNjMmRhNzAxNTI3ZGMyZDI2MWQ0ZTlmODVmMTZlNzUwNAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE1hciAxMSAyMDo1NzozOCAyMDEyICswMTAwCisKKyAgICBBbGxvdyBtYWtlIHRlc3Qgd2hlcmUgdGhlIHNvdXJjZSBwYXRoIGNvbnRhaW5zIHRoZSBzdHJpbmcgTmV0LVNOTVAgdG8gc3VjY2VlZC4KKworY29tbWl0IGNlODU4MzI5MzJjY2Q5MTZjNDIzMTkxMTRjNDA4ODVhNDY2YTlkMGUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXIgNSAyMDo1Njo0MCAyMDEyICswMTAwCisKKyAgICBNb3JlIGZpeGVzIGZvciBTb2xhcmlzIHNoCisKK2NvbW1pdCAwZGQxZTU0NTU3ZDFiYTQ5OGI1NWQwMTdiMGE5M2U4Y2NmOWJkNTIyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTU6MDg6MjYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFVEUC1NSUI6IFJlcG9ydCB0aGUgcHJvcGVyIGFkZHJlc3MgaW4gdWRwTG9jYWxBZGRyZXNzIGluc3RlYWQgb2YgMC4wLjAuMC4gTWFrZXMgdGVzdCBUMTYwc25tcG5ldHN0YXQgcGFzcyBhZ2Fpbi4gRml4ZXMgYSBidWcgaW50cm9kdWNlZCBpbiBjb21taXQgYzc2ZmI5NmY2NWUzM2JhMmZkMjEyYTkyMWU4YzM4NjE1NWVlNWM3YS4KKworY29tbWl0IDUxODkxN2U5ZjM5ZjdhOWQzYzNiZjNhODY1ZThhYzBlMzAyNmQ2MDAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgNSAxNDowNDo1NCAyMDEyICswMTAwCisKKyAgICBzbm1wbGliL3NubXBVRFBEb21haW4uYzogRml4IHNvdXJjZSBjb2RlIGluZGVudGF0aW9uCisKK2NvbW1pdCAyNjUxOTA5Y2NjZWFiZmNmYWRhZjk0MmMwMjQ1MGUyOGZlODM3ZGM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTm92IDkgMTI6MDQ6MDQgMjAxMCArMDAwMAorCisgICAgUGFzc2VzIG5vdyBvbiBNaW5HVyB0b28uCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk2NTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1MTE2ZDQ4Mzc4ZWNmMDNlNzIyZjMwMTBhZDQ3YmYyMmEzZmJjYjhjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTA6NDc6MjAgMjAxMiArMDEwMAorCisgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jOiBSZWR1Y2Ugc2NvcGUgb2YgcHJlZml4X3ZhbCBzdWNoIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgd2FybiBhYm91dCBhbiB1bnNlZCB2YXJpYWJsZSBpZiBpdCBpc24ndCBuZWVkZWQuCisKK2NvbW1pdCA2ZTc0ZDY0Zjg1YTU5ZDUwZTQ2MWRiNGMzNGFjNzZmOWRlNDY4YmZiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MjI6MzEgMjAxMiArMDEwMAorCisgICAgdGVzdGluZy9ldmFsX3Rvb2xzLnNoOiBBdm9pZCB1c2luZyBncmVwIG9wdGlvbnMgLXEgYW5kIC13IGJlY2F1c2UgZ3JlcCBpbiBTb2xhcmlzJyBkZWZhdWx0IHBhdGggZG9lc24ndCB1bmRlcnN0YW5kIHRoZXNlIG9wdGlvbnMuCisKK2NvbW1pdCAxMGY1NjZmNGQ0Y2JiM2UyMDUwMjNjMjM2NjkyODllNGJmZDA4OWNiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTA6NDc6MzkgMjAxMiArMDEwMAorCisgICAgcGVybC9TTk1QL1NOTVAueHM6IEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IGRhZTRlMTZiZTg2MTE3ODYxZjYzZDFhMmY5ODFhZDM2MTQxOGY1YzYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKworY29tbWl0IDI4ZjYyMjZmMmUyMjhiOGNhMjQ4NDg5NzM1Zjg2NTAyYjJjY2UwYTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKworY29tbWl0IGVlNzEwNDljM2UyMWMxZDBlMzQyNDI5NzEzNjY1MmJiZTBlMzlkODUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMyAxNjo0OTo0MSAyMDEyICswMTAwCisKKyAgICBtaWJncm91cC9pY21wLmM6IGFkanVzdCBpZmRlZnMgdG8gbWFrZSBpdCBjb21waWxlIG9uIEJTRCdzCisKK2NvbW1pdCA0NGFjZDZjMjg1ZmI1NjE0YjRjOTYxMWIxYWJkZWNhOWRkMjhlNGJiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MTI6NDcgMjAxMiArMDEwMAorCisgICAgRml4IHNwZWxsaW5nIG9mIG1pYiBtb2R1bGUgZnN5c19nZXRmc3N0YXRzCisKK2NvbW1pdCAxZmExZmVlMzY5M2Y2N2I4MjAyMjM4MDZiM2Q3M2FmZDRjNTBlYzE4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWFyIDIgMDE6Mzc6MjAgMjAxMiArMDEwMAorCisgICAgU2lsZW5jZSBhIGNsYW5nIHdhcm5pbmcuCisKK2NvbW1pdCA5MzI2M2I5OGE1ZGIzNDRjZjJjNGQ0ODljNDM5NzFlN2IyOWNkYjAzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDEzOjM3OjIwIDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCisKK2NvbW1pdCA1YTE3NTQyOGI5NzNkMmVhODU1M2UyOWZlY2Y5NGNmMTU2NmFhODU4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDExOjQ4OjE4IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCisKKworY29tbWl0IDM2NDI3NmExYzVhYTY2Y2FhMjNlYjViN2YxMTFmZGViNWFmNzFmYTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTE6NDU6MTAgMjAxMiArMDAwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNS4yLnByZTEKKworY29tbWl0IDczNTk4MzQwMTcyZWZmNzU3MjlhNmQ1NzE5MmI4MTcxZDViYmYwMGUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTA6NDI6NTYgMjAxMiArMDAwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjUuMi5wcmUxCisKK2NvbW1pdCBmMzIxNDQwMjY3MmNhMTk5ZmQ1MzFlNjYxMjJiZjk2YzRkOWE0ZWI3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDEwOjQyOjM5IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCisKK2NvbW1pdCA0MzJjYmI3YTU1MDFhYjkwZDY2ZDBhODNlNzMxZTczNDNiYzA0YjM3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRmViIDI1IDEwOjEzOjE1IDIwMTIgKzAxMDAKKworICAgIENvcnJlY3QgdHlwb3MKKworY29tbWl0IDZhNmM5YmJjNzU4NGYxOTZhMTE4NWNjMTkzNTIwNGYxMjA2ODExZWQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBGZWIgMjkgMDg6NTU6MzUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogQnVnIDMxNTI4NDE6IEluc3RhbGwgdXRpbF9mdW5jcyBzdWJoZWFkZXJzCisKK2NvbW1pdCBkNTE1ZTJhNmU0YzJhMWM0ZDg0NzM0Y2M3YjJkMGIyZmM1YTg5NGFkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxNTo1NjoyMSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ4NzkxOTogRml4IGNvbXBpbGF0aW9uIHdoZW4gY2FjaGluZyBpcyBkaXNhYmxlZAorCitjb21taXQgYWY4MzY4ZWQ4ODk4YTc4ZDA4NjhiNDdhZjQ2YmM5ZGIwN2QxYzc2NAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTU6NTA6NTYgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzQxNDc3MzogRW5jb2RlIGludGVnZXIgdmFsdWUgdXNpbmcgQVNOX0lOVEVHRVIKKworY29tbWl0IDE5ZTI3MTU4MDdmZTA2ZmQwYmFlZGY4ODE2NTAxMWFlZTkzM2U3NTUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDE0OjA1OjM0IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IG1hbjogQlVHUzogMzQ5MDcwODogQ2xhcmlmeSB1c2Ugb2YgY29tbW9uIGNvbW1hbmQtbGluZSBvcHRpb25zCisKK2NvbW1pdCBlZWQwYmNiYzQzZmVhMTgyNTlmMGY2M2IyMDgxYjZkMTA1MzVhMDUyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAwOToyNzoxMSAyMDEyICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCBiYWJ5LXN0ZXBzIHdoZW4gY29tcGlsZWQgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQuCisgICAgSW5zcGlyZWQgYnkgYnVnICMzNDU0MTY4CisKK2NvbW1pdCBjNDI3NmI2MjMyYzI5MTQ1YzAzOTg4NGU2YjVhNmI2ZGE0YjkzODM3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxNTo1NDo0NSAyMDEyICswMDAwCisKKyAgICBPbWl0IFNFVC1yZWxhdGVkIGNvZGUgd2hlbiBjb21waWxpbmcgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQgKGluc3BpcmVkIGJ5IHBhdGNoICMzNDI0OTMwKQorCitjb21taXQgMDFjOTMwZWRjYzI1NzAwZDZiNWZiMDM3NmY1NWEyNjQyNWUxM2ZiMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBGZWIgMjcgMTU6MTc6MjIgMjAxMiArMDAwMAorCisgICAgT21pdCBTRVQtcmVsYXRlZCBjb2RlIHdoZW4gY29tcGlsaW5nIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0CisgICAgKGluc3BpcmVkIGJ5IHBhdGNoICMzNDI0OTMwKQorCitjb21taXQgMmI3ZjEzNDk1MjI4NjM1ZDgxNmU1OGIyMTc0ZGMxMjRkZDBjZjM5ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEZlYiAyNCAwNzo0MzoyMiAyMDEyIC0wODAwCisKKyAgICBzZXQgTUVSR0VfQVVUT0VESVQgYmVmb3JlIG1lcmdpbmcgdG8gYXZvaWQgdGhlIGZ1dHVyZSBnaXQgMS43LjEwIGZvcmNlZCBtc2cKKworY29tbWl0IGUxYjkxMGIwYmU5MzQzNTg2YWU5ZWRiYTZmNDYwNDBhZjMxNWZjZGQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMTA6Mjc6NTQgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGluaXRfYWdlbnQoKSArIGluaXRfa21lbSgpOiBSZXR1cm4gYW4gZXJyb3IgdmFsdWUgaW5zdGVhZCBvZiBpbnZva2luZyBleGl0KCkgaWYgYWNjZXNzIHRvIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBpcyBkZW5pZWQKKworY29tbWl0IDQ2M2VlZDIxMjBmOWQxOTFiYzIyNjczNDk2YTQ5ZTgxNzQ2NjRlNGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMTA6MDM6MzEgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlIG9ic29sZXRlIHN5bWJvbCBORVRTTk1QX0VYSVRfT05fQkFEX0tMUkVBRAorCitjb21taXQgYWE3NjZkMTk2ZTUyODdmNmNhNzliNThhMzQ1YjAyNDI2MGFiYTM1NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiAyMCAxNzowNzoxMyAyMDEyICswMTAwCisKKyAgICBJRi1NSUI6IGRvIG5vdCB0cmlnZ2VyIHVuZGVmaW5lZCBiZWhhdmlvciAoPj4gMzIgb2YgYSAzMi1iaXQgdmFyaWFibGUpIHdoZW4gdXBkYXRpbmcgYSBjb3VudGVyIGFuZCBpZmlfaXBhY2tldHMgaXMgYSAzMi1iaXQgdmFyaWFibGUKKworY29tbWl0IGMzZmI2ZGQ5ZTZiOTllOTU0MjQ5MzE4ODk4Nzg3MWZjNTAxN2NiM2MKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMDk6NDU6NDUgMjAxMiArMDEwMAorCisgICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBvbiBzeXN0ZW1zIHdoZXJlIG1vZGVfdCBpcyB1bnNpZ25lZAorCitjb21taXQgYTZkYjIzOTk0NWUxOTVkZTVhOTBmYTE4MzcwMGIyN2E2ZWNiMjhkMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEZlYiA3IDAwOjExOjE0IDIwMTIgKzAxMDAKKworICAgIEZpeCBwb3NzaWJsZSBtZW1vcnkgbGVhayBmcm9tIHJlY2VudCBkZWNsYXJhdGlvbnMgcGF0Y2gKKworY29tbWl0IDBmYmJiOWE5ZTI5MDZhN2FmOTU2OTU3MDYxZDQ4NTg3NDQ2MmFlYTkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgNiAyMDo0MzowNCAyMDEyICswMTAwCisKKyAgICBEbyBub3QgbWl4IGRlY2xhcmF0aW9ucyBhbmQgc3RhdGVtZW50cworCitjb21taXQgZjMwOGQ1YmFmYjA1ZDc4ZWQ0MDMwYzRlY2ZmMzI0YjZjYmRhNjgwZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE1OjI1OjMwIDIwMTIgKzAxMDAKKworICAgIEZpeCB0d28gY29tcGlsZXIgd2FybmluZ3MgaW4gYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMKKworY29tbWl0IGRlYmFjNDk4ZmU4NDEwMTEwMTA3YTJmZTY0ZjhhZmI3NDhlZGFhMDcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRmViIDYgMTY6NDg6MDkgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogYWRkZWQgT0NGUzIgKE9yYWNsZSBDbHVzdGVyIEZTKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQgaHJGU1RhYmxlCisKK2NvbW1pdCBhMDVjMjdjMjcxMWNiNDE1ODJhM2I0YzMxZTM4YjBlOTM1MzBiNjJkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NTE6MzMgMjAxMiArMDEwMAorCisgICAgRml4IHNwZWxsaW5nIGluIGEgc291cmNlIGNvZGUgY29tbWVudAorCitjb21taXQgOTEwZDdiMGQ5OTE4MzYwOWI5NTI5YjA0YzNmMjkzMzBlYjY2MTAyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjM4OjEyIDIwMTIgKzAxMDAKKworICAgIFJlcGxhY2UgbmV0c25tcF90aW1ldmFsX3VwdGltZSgpIGJ5IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpCisKK2NvbW1pdCA0M2E4M2Y2YzZhOTZjYzIzMTZiNzBlZWNhY2YxMjdlYjY5MTNjN2E3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTE6MTk6MTUgMjAxMiArMDEwMAorCisgICAgVXNlIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yIGluc3RlYWQgb2YgbWVtY3B5KCkgZm9yIGNvcHlpbmcgc3RydWN0IHRpbWV2YWwKKworY29tbWl0IDJmZTU3OWVmYjFjYjNhNzRmODI4MDNjYTMyMzkyOGY2YjhlNGI1YzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBGZWIgMyAxNDowNDowMiAyMDEyICswMTAwCisKKyAgICBNYWtlIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYyBidWlsZCBhZ2FpbiBvbiBub24tTGludXggc3lzdGVtcy4KKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgMzQ1YTFlNDI1NDgxMmNiOWVkYzFkMjc0NDkxYjc2NjgxYTlkYmExZS4KKworY29tbWl0IDg4MWRlNmFiNzM1NTI3N2E1YzExNmEwMDhmYmU1MTMyOTNiMDUwMzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBGZWIgMyAxMDowODoyMSAyMDEyICswMTAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZSBSbW9uIE1JQiBpbXBsZW1lbnRhdGlvbgorCitjb21taXQgNDYyOTkzM2MwZDNiM2Y5ZjRiYTU4MzUzNGY3OWEzN2ZiOTYzMzgxNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDIwOjA1OjMxIDIwMTIgKzAwMDAKKworICAgIE1vcmUgY29tcGlsZXIgd2FybmluZyBmaXhlcworCitjb21taXQgZTliNWEzZGVlNmY5YWZhYjhiOTBhMjkzOTIwNDA2MzJiMDc1YWQ3YQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE2OjU2OjU1IDIwMTIgKzAxMDAKKworICAgIFVzZSBTTk1QX01JTigpIGluc3RlYWQgb2YgbWluKCkKKworY29tbWl0IGM3ZDExZmEwMGY5OTk1ZGRiOWZlM2Q0OTk0YTNlOTc5MGRhMmUxODkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNToxODo0MCAyMDEyICswMTAwCisKKyAgICBSZXN0b3JlIGNvbW1pdCBkYmI4Nzk1YTdkZjU5NWYwNjAzZjJlYzYxNzA0Nzk5ZjRjNDgyNjY3IHBhcnRpYWxseS4KKworY29tbWl0IDAwZmQ2MjcyMGVjNDU0ZjVhNjkwZGU0ZmViYTA4MjIzY2ZiMmMzZjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNDo0ODo0NCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEF2b2lkIGNyYXNoIGR1cmluZyBzaHV0ZG93biBkdWUgdG8gaW52b2tpbmcgcGVybF9kZXN0cnVjdChOVUxMKQorCitjb21taXQgZDllMjI5ZDgxYWJlYWYxOTFlZjJjY2IwNzc4NDI4ODVjMjMwZDYyMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE0OjQ3OjQxIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZSBhIHN1cGVyZmx1b3VzIGRlY2xhcmF0aW9uCisKK2NvbW1pdCAxZTJlMmFmNmNhZTgzMGYzODFlODdhMjQ0ZDAyOWViODZiZjNmY2NlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTM6MjA6MzcgMjAxMiArMDEwMAorCisgICAgcGVybC9TTk1QL2V4YW1wbGVzL3BpbmdtaWIucGw6IEFkZCBlcnJvciBjaGVja2luZworCitjb21taXQgMjQxYTE0MWUzMWYxNjg0ZmM2Y2Y3MGNjNGEwMGNjZTYzNmZkMzUyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDExOjI4OjM3IDIwMTIgKzAxMDAKKworICAgIE1ha2UgY29uZmlndXJlLXRpbWUgRVZQX01EX0NUWF9jcmVhdGUoKSBkZXRlY3Rpb24gd29yayBvbiB0aGUgNS40IGJyYW5jaC4KKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgNDZlYWMwMmU5YTI3YmY0ZjMwNjhlNzk1Y2FiODkxZjA1YTg0ODg3MC4KKworY29tbWl0IDZkOWQxNGZlYWFhMmQwZmVjNjhiNGQxNTg5NDRkMzJjYjA0ZmYxYmMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxMToxMjowMCAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgdGhlIGNoYW5nZXMgdGhhdCBicmVhayB0aGUgYnVpbGQgb24gdGhlIDUuNCBicmFuY2ggZnJvbSBjb21taXQgZGJiODc5NWE3ZGY1OTVmMDYwM2YyZWM2MTcwNDc5OWY0YzQ4MjY2Ny4KKworY29tbWl0IDhhYmU0OWUzMGM5N2M4OTgzZTgzYjQ1YTM1YzcxNmZlOTFmNjZiZWEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBGZWIgMSAxMTo1Njo1OCAyMDEyICswMTAwCisKKyAgICBGaXggc2V2ZXJhbCBjb21waWxlciB3YXJuaW5ncyBpbiB0aGUgRElTTUFOIE1JQiBpbXBsZW1lbnRhdGlvbnMuCisKK2NvbW1pdCBmOWZiMGE1MzMzNzVlMTRkYzM3MDAyNWEwYjJmYmM3NjFiZjI3YmU2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMDk6NTY6MDIgMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJIT1NULVJFU09VUkNFU19NSUI6IGZpeCBhIGNvbXBpbGVyIHdhcm5pbmciIGJlY2F1c2UgaXQncyB3cm9uZy4KKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IGFhNmI3OWJjMTI0YTdiN2E4ODVkN2U1MDM1YWIwNmFhM2VjZWY2MTMuCisKK2NvbW1pdCBjYTRhNGZlMjVlZmQyNzE0ZjhmMTk2MWI5Nzg1NjYxNjU2M2Y0MmM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTA6MjE6NDkgMjAxMiArMDEwMAorCisgICAgLmdpdGlnbm9yZTogQWRkIHB5dGhvbi9idWlsZAorCitjb21taXQgYWE1MjhiZDIyYzc0OTNjYThkNjdlNjc4ZmJmNjE1Y2EwZjYzZWE2ZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6MTM6MTggMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MiIC0gdGhlcmUgaXMgbm8gTkVUU05NUF9QUklvIGluIFY1LTQgb3IgVjUtNSBicmFuY2hlcworICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMzkwYzAxMTRjOGVjMGJkYjI3YjA4YjZmNzRlM2Y2ZWYzYTYyOTgxYi4KKworY29tbWl0IDJmYjk5YmU5YWE4NmE2Y2EzNDliODZkNGVmOGJjNzI2ZWQ5ZjJhODIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjU4OjM1IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgZTVjMzU1ODllMGJmNDE2YmZkMDM2YmQ0NjhmNDJhYWVhYjI1ZTc4OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6NTU6NTYgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCAzNDVhMWU0MjU0ODEyY2I5ZWRjMWQyNzQ0OTFiNzY2ODFhOWRiYTFlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDo1MToyNiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBlcnJvciBoYW5kbGluZyBpbiBpbml0X2ljbXAoKS4KKworY29tbWl0IDNjM2VlYWU4MGQ3OTZmMjc1OTdjOTAxZTdmZjIwNDZjNzY5ZWY0YjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjA4OjA5IDIwMTIgKzAxMDAKKworICAgIE1hcmsgcm93cmVxX2N0eCBhcyBmcmVlZCBzbyBuZXh0IGl0ZXJhdGlvbiBhbGxvY2F0ZXMgbmV3IG9uZSBpbnN0ZWFkIG9mIHJldXNpbmcgdGhlIGZyZWVkIG9uZS4KKworY29tbWl0IGFmOWFiZDUzYzIzMzdjOTBhNjkxYTdiMDQ0ZmYzZjk3YzEwMDMxNjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjA1OjEwIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgY2Y5NDY1ZjU0MTgxZTYyZTIxYTliMTAyMTkxMzExMDdhM2QyZWJmNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDQ6MDYgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCA3ODcxZjJiMDliOGI1MmYzNGE5ZTU3Nzg0MjY2NDU5MDUzMTY1YmNiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowMjo1MCAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDdhMzdmMzNkMzEwYzk1OTg2MDdiYzMyM2Q5YmRiZjkxYWFmNzJjOTUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjAwOjUxIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgM2U0NWY3MDI2MjQ5ZTQ1MzUwZWRhYWM4NTMzNzQyM2FhMGU5NWQ4YgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6MTM6MTggMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MiIC0gdGhlcmUgaXMgbm8gTkVUU05NUF9QUklvIGluIFY1LTQgb3IgVjUtNSBicmFuY2hlcworICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMzkwYzAxMTRjOGVjMGJkYjI3YjA4YjZmNzRlM2Y2ZWYzYTYyOTgxYi4KKworY29tbWl0IDYxOTM2NzYyZTY0MWMxOGRiNzVhYTUxMjVhMzNlNzc2YzY3N2FkYzUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDExOjEzOjM5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGZyZWVpbmcgcmVnaW5mbyB0d2ljZSBvbiBlcnJvciBpbiBhIHRlbXBsYXRlIGFuZCBhbGwgaXRzIGluc3RhbmNlcy4KKworY29tbWl0IGNiZjFjOTFiYWY3MTkxYmU1ZmEyN2Q4MWJjZjg3MTQzMzFhMmMxMmYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMjAgMDk6MjA6NDIgMjAxMiArMDEwMAorCisgICAgVXNlIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2UoKSB0byBmcmVlIGEgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0LgorICAgIAorICAgIEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gY29tbWl0IGRiZjI2YTA1YTA0ZWYyNGM0NzM0NmU1YWRkYTQ4ZTMzODQ5OGU3MWYuCisKK2NvbW1pdCBhYTZiNzliYzEyNGE3YjdhODg1ZDdlNTAzNWFiMDZhYTNlY2VmNjEzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDIwIDA5OjIwOjMxIDIwMTIgKzAxMDAKKworICAgIEhPU1QtUkVTT1VSQ0VTX01JQjogZml4IGEgY29tcGlsZXIgd2FybmluZworCitjb21taXQgM2E3NmI0M2UxMWZmZmFkYTYzMmZjY2I4NDhhYjUwMGU4NzZhZDQ4YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNjoyMTowNSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBweXRob246IEF2b2lkIHRoYXQgYW4gU05NUCBzZXQgd2l0aCBVc2VFbnVtcyBlbmFibGVkIGNhdXNlcyBhIHNlZ21lbnRhdGlvbiBmYXVsdAorCitjb21taXQgODRkZWM5ZmE5MmIwYWEyZDU4ZWI3MDIwMzMwZjRmOThlNTE1NDMyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNDozODoyMSAyMDEyICswMTAwCisKKyAgICBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOiBGaXggbW9zdCBjb21waWxlciB3YXJuaW5ncworCitjb21taXQgMzhjZjIxOGMzZjFhNzI3Nzg2ZTIyN2E1ZDNmYjE4NmZkMGYxYTE1ZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6NTA6MTMgMjAxMiArMDEwMAorCisgICAgRml4IGEgdHlwbworCitjb21taXQgY2UxZjI4NGE2M2ViODE2NDRiM2UzMjYwNmNiZTM5YjY3ZTFkZmYyYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6Mzc6MDkgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgN2UyMTQxM2NhNmYyZWZkN2EzYWZiNjJjNjJiNjQ0ODgxYjhiZDFlNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6NDY6MzAgMjAxMiArMDEwMAorCisgICAgUHJvcGVybHkgYWxsb2NhdGUgYW5kIGZyZWUgZW5naW5lSUQuCisKK2NvbW1pdCAzNGM5NjI4ODI2MDdjMzYzOGEyZmEyNWEyYWM1MzE0OTJkNzFjNzg3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzozNzoyNSAyMDEyICswMTAwCisKKyAgICBGcmVlIGxvY2FsbHkgYWxsb2NhdGVkIHRtU3RhdGVSZWYuCisKK2NvbW1pdCBmNTdhZTUzMWRjNTY1OGFiY2Q2NWIxNjI3NjE1NTI1MjM4ZDE2ZDJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzoyMDoyNCAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA1MzZiYzU3NTU2YzMxNDE1NjFlYTRhMTk0ODEwYjE2MjkwYTY5MWVlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzoxNTo0NyAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBpZiB0aGUgZnVuY3Rpb24gYWN0dWFsbHkgZG9lcyBzb21ldGhpbmcuCisKK2NvbW1pdCBhMDc3N2QzMDdkYmNhZjIxOWVlMDE4NGEwZmJhYjlkNGU1ZDZhYTBiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzowMTo0NSAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA4Yjk3YTcxYzhlNzk1OTQyOGViNGQ0ZThkOTBlOTA5NmQ0M2ZmMDlmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1NzoyNiAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCAyYzE1MDdjMjIwMzA1NDlhZTY2MGMwZTIxMWZiZGM1Yzc1ZWM1YzU3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1Mzo0NyAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA2NWYyYjdiY2Q0ZmUwMzkwNmFhMWExMTVhYjYwYTg5YjhhZTkzM2Q1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1MTozNiAyMDEyICswMTAwCisKKyAgICBDbG9zZSBvcGVuIGZpbGVzIG9uIGVycm9yLgorCitjb21taXQgMGU1MmU0ZjY2ZDQ0NzY2YmVhMzc0NzM1NTZjNzhlNTIxOWI5NTQ2MQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6NDU6MzMgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZGJmMjZhMDVhMDRlZjI0YzQ3MzQ2ZTVhZGRhNDhlMzM4NDk4ZTcxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6NDI6MTcgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNzQ4ZGE4NGIxZmQ2NTRlMzM4YmM3MDFlOGY5ZTVkYTIyOTE4N2YxYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MzI6MDQgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZWIyMTcxNDZmZDU0MDM2ZWE0MjAyYmZlZjc4YmJmNzc0ZDdlMzgyZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MjM6MTAgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgOWJhMzhlZWM2NjEzOGVjMWY2MTNlYThkMDRlMTU4MTMwYzcxMjFiYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTg6NTUgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZDlkOTM4ZDMwMThjMjdmNTMyNzdiYzVlNTk1Nzg1MDA0OTBjMWQwOQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTY6MzggMjAxMiArMDEwMAorCisgICAgQ2xvc2Ugb3BlbiBmaWxlIG9uIGVycm9yLgorCitjb21taXQgZDVlODE3ZDViZDUxOGQ5YWM2YTBkNjBlMGUxNDFkZDY0ZjI3YWQxOQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTQ6MTIgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgMmFlNjhmMDU5ZGY5ZDc0YjA3NGQxMmY1OWMxODQ3NDY2ZWQ1NzZjZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MDM6MTcgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgYTAwZjNkNDYxMTIxYjU0NWFlZDcyYWMxMmIyNDM4NzkxZGNmYzRiYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTQ6NTg6MzkgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgYmE1ZDUyOTJiMDQzOTNiMGM3ZDdkN2VkOTYxMjQxOTI5NDE4YzZlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTc6MDU6MTQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyBOVUxMLgorCitjb21taXQgZGEyZDZhNzAyOGExM2I5ZWRmM2E1Yzg0MzE0ZDBmMWZlZWY3NjcxNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6NDQ6NTYgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBkZXJlZmVyZW5jaW5nIE5VTEwuCisKK2NvbW1pdCBmODgwNTRhOWI2OWI2ZGUyNzRmN2ExNGE1OWI0NzMyM2U1ZTRlNGM2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjozNzozNSAyMDEyICswMTAwCisKKyAgICBEb24ndCBkZXJlZmVyZW5jZSBjb250ZXh0IGlmIGl0J3MgTlVMTC4KKworY29tbWl0IDVlOTVjYTY3OTAwNzZiNzg4MDcyYTgwMWVlN2M4Mjk2OWQ5OTViY2IKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjE3OjA5IDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgZGVyZWZlcmVuY2luZyBOVUxMIHdoZW4gYSB0cmFuc3BvcnQgZG9lcyBub3QgaGF2ZSBmX2ZtdGFkZHIuCisKK2NvbW1pdCBlZWQ2ZjVmOWI5YWU1NGQyY2VhYjY3YWQ4NWFkZGUxZjZhOGEyMWQ1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjoxMzoxMyAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IGRlcmVmZXJlbmNpbmcgTlVMTC4KKworY29tbWl0IDQxY2RlNjhiNWZhNGIzOGQ4MTQ1MGNmOTFlMDgyY2RmYTgyNWU3Y2YKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjEwOjEwIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGlmIGEgcmVnaXN0cmF0aW9uIHdhcyByZWFsbHkgZm91bmQuCisKK2NvbW1pdCA1YjcyYTQwODUzODc2YTE4NmVmY2MwMDkwYTRlMzJjMjM1YjljMDVmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjowMzo1OCAyMDEyICswMTAwCisKKyAgICBEb24ndCBkZXJlZmVyZW5jZSBOVUxMIHdoZW4gZGlmZmxlbiBpcyBTTVVYX01BWF9QUklPUklUWSAod2hpY2ggaXMgaGlnaGx5IHVubGlrZWx5LCBidXQuLi4pCisKK2NvbW1pdCBmYTZhOTEyZTQxYzVkMGZkMmE2MzY4OTRlODZiNjQyNmMwNzM3NWFiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNTozNzo0NCAyMDEyICswMTAwCisKKyAgICBDaGVjayBmb3IgbWlzc2luZyB2YWx1ZSBpbiBzZXRFdmVudC4KKworY29tbWl0IDQxMGI3MWRhNDI1Mzg5ZmVjYzI1ZDE0ZjQ5ZjIzNzUzNTgxNTc2YWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE1OjI4OjQxIDIwMTIgKzAxMDAKKworICAgIERlcmVmZXJlbmNlIGVyZWcgb25seSBpZiBpdCBpcyBub3QgTlVMTC4KKworY29tbWl0IDE4NTI3MmQxYTBiOTEzNzc0MTg2ZjFiOTEzNWFlYWY2MzdlYmVkNTIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE1OjE3OjIxIDIwMTIgKzAxMDAKKworICAgIEFzIHBlciBhYm92ZSBjb2RlLCB0ZW1wbGF0ZV92MnBkdSBjYW4gYmUgTlVMTCwgc28gY2hlY2sgaXQgYmVmb3JlIGRlcmVmZXJlbmNpbmcuCisKK2NvbW1pdCA0OGU1ZWFkM2ZkMmMyYjM4NWRmNjk3MmM2NzUyNmZmNmJkYzMwNzY4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNDo0MjoyMiAyMDEyICswMTAwCisKKyAgICBVcGRhdGVkIGxhc3QgZml4IHRvIG5ldyBlcnJvciByZXBvcnRpbmcgc3R5bGUuCisKK2NvbW1pdCBmMzNkMzM2MTVkNmQ4NWQwMDczNzI2NDczYzQxNDZjYmNkZjExY2VkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNDozMDowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBzaWdzZWd2IHdoZW4gZW1wdHkgY29uZmlnIGxpbmUgaXMgcGFyc2VkLgorCitjb21taXQgYjVkZjFlZWI0N2VkMzU1OWI2ZjRkOWVjY2NkYjI0MjEyNmU2Yzk5MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTQ6MTE6NTggMjAxMiArMDEwMAorCisgICAgRml4ZWQgKGhpZ2hseSB0aGVvcmV0aWNhbCkgc2lnc2VndiB3aGVuIHNwLT5zZWN1cml0eUVuZ2luZUlEIGlzIE5VTEwuCisKK2NvbW1pdCA2ZmVlZDYyOWE3MTg5OWMxMTMwOTY5NTlkODU0OWRjMTIwMWU4ZjlhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxMzo0MzozNyAyMDEyICswMTAwCisKKyAgICBBZGRlZCBOVUxMIGFuZCBsZW4gY2hlY2sganVzdCBpbiBjYXNlIHNvbWVvbmUgcHJvdmlkZXMgdmFsdWUgPSBOVUxMIGFuZCBub3plcm8gbGVuICgtPiBOVUxMIGlzIHRoZW4gZGVyZWZlcmVuY2VkKS4KKworY29tbWl0IDM1NWM1YWIyNjRhZjJhNjAyMGExZDhhOTIzZjgwZjExYjk0MjI5NWUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDEzOjM2OjQxIDIwMTIgKzAxMDAKKworICAgIEV4dGVuZCB0aGUgTlVMTCBjaGVjaywgaS5lLiByZXR1cm4gaWYgdGhlcmUgaXMgbm90aGluZyB0byByZW1vdmUuCisKK2NvbW1pdCBkZGQ3OTQ4YWNhZDkzOGNkNDI5NzQ1MDVkZGNhNGYwMzcyMTE2NzA5CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDExOjExOjI5IDIwMTIgLTA4MDAKKworICAgIHVwZGF0ZSBzcGFydGEncyBjb3B5cmlnaHQKKworY29tbWl0IDQxMjU2MDg2YTdhNTA0MTQ1MzQxOWNmZDZlNTYyYzdiNTVjNTZiMGEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMTYgMTA6MzI6MDQgMjAxMiAtMDgwMAorCisgICAgcHVsbGVkIGZ1bGwgY29weSBvZiBleHRyYWN0bmV3cyBmcm9tIG1hc3RlcgorCitjb21taXQgNjI1YTcwZGJkZmQ5OTAyZGE3OWVmYTI5M2ZlNmQyYWM4Y2NmMmIyZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAxNiAxMDoyNDoxOSAyMDEyIC0wODAwCisKKyAgICB1cGRhdGUgdG8gY2hhbmdlIHRvIHRoZSBuZXdlciBsb2cgZ2VuZXJhdGluZy9wYXJzaW5nCisKK2NvbW1pdCA2MmUzMmIxMzA4OWIyOWVkY2YyNzZmNjE1ZGE2N2U0NTA4ZmU3YmI1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDA5OjI5OjQyIDIwMTIgLTA4MDAKKworICAgIGNvbmZsaWN0aW5nIG1lcmdlIGZyb20gbWFzdGVyIGZvciBleHRyYWN0bmV3cworCitjb21taXQgNzAwODRkYTYxZDJiY2JkMmNmMWVkODFiZGMzYmY2Nzk0YzJhZmZiNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAxMyAxMTo0OToxNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVNDSEVEVUxFUi1NSUI6IEhhbmRsZSAzMi1jaGFyYWN0ZXIgc2NoZWRDb250ZXh0TmFtZSB2YWx1ZXMgY29ycmVjdGx5LgorICAgIAorICAgIFNlZSBhbHNvIGNvbW1pdCBiM2M0OTgyNTQyZTBhYjE1MWZiMzg4NDc1NGNkZmJjYjQ3MmRhNTJkLgorCitjb21taXQgYzE1MjZmY2NjMDQ3NGMxZGIxOGNhYTlkYmI4MzM4NTNjZGRkZTNjYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MTM6MjEgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSB0eXBvLgorCitjb21taXQgYTI3YWExOWRmMjgzMTU2YzAzMmM4MWVhZWU1ZTExNTg1OWQzOGMxNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MTE6MzIgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgcmVwbGFjZSAncmMnIHZhcmlhYmxlLCBpdCdzIHZhbHVlIGlzIG5lZWRlZCBvdXRzaWRlIHRoZSBsb29wLgorCitjb21taXQgOTg1ZGZmMmIwODc2ZDk0ODNjNDE0ZmNjZWEzZWY2YmM2M2UxNDU2MQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MDE6MzIgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCBkdXBsaWNhdGUgY29kZS4KKworY29tbWl0IDJmZDc4MTgzMThlN2E1ZGZlOThmNTJjY2Y3NTBjMmE2M2U4MjVkZWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjAwOjIyIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZWQgZHVwbGljYXRlIGNvZGUuCisKK2NvbW1pdCAxNWYyMTEzMGJhMzNkYzlhZmQxNjRlNTJkZmQ3NGM5Y2VjMGU5MjMyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNDo1ODoxNCAyMDEyICswMTAwCisKKyAgICBSZW1vdmVkIGR1cGxpY2F0ZSBjb2RlLgorCitjb21taXQgMzhmZDYzNzhjYzMyNzUxODBmNjNiOGQ5YjlhNDA3MmIzZGFiZjhlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6MjU6MDYgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSB0eXBvLgorCitjb21taXQgZWJkOTJlMTliMTBjMGEzOGUxN2NkZTQwNzg2NGI0NWMyNmUxNzMyNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6MDc6NDMgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpZiAodmFsdWUpIGNoZWNrIC0gdmFsdWUgaXMgY2hlY2tlZCBmZXcgbGluZXMgYmVmb3JlLgorCitjb21taXQgYWNkY2ViNTBlYTY2ZDZiMzIzYzc0ZWUwMjFmYjc3ZTgxMGU0ZTdhZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTM6NDM6MTkgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBtZW1vcnkgbGVhayB3aGVuIG1hbGxvYyBmYWlscy4KKworY29tbWl0IDE3MDUzZTM0Y2ZlOWE4YWIzOTVmYjUwZjVjM2YxZGFmYzcyNDdhZWIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDEzOjMyOjU3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGRvdWJsZSBmY2xvc2UoKS4KKyAgICBMaW51eCBtYW4gcGFnZSBmb3IgZmNsb3NlKDMpIHNheXM6IEluIGVpdGhlciBjYXNlIGFueSBmdXJ0aGVyIGFjY2VzcyAoaW5jbHVkaW5nIGFub3RoZXIgY2FsbCB0byBmY2xvc2UoKSkgdG8gdGhlIHN0cmVhbSByZXN1bHRzIGluIHVuZGVmaW5lZCBiZWhhdmlvci4KKworY29tbWl0IGE2NjQxZWRiOWNiNzRmYzIyMzZiNDJjZTU1NTRmYzMzMjk5NTY1NTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTU6MjI6MzQgMjAxMiArMDEwMAorCisgICAgTWluR1c6IFNraXAgdGVzdCBUMDY1IGlmIG5vdCBzdGFydGVkIGZyb20gaW5zaWRlIGFuIE1TWVMgc2hlbGwKKworY29tbWl0IGE4ODNlZjE5ODJmMzAxYjE0ODVkMjI3MzAxNjc0OTI3MzMwZjViNjcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDExIDE1OjE0OjUzIDIwMTIgKzAxMDAKKworICAgIE1vdmVkIGRlYnVnIG9wdXRwdXQgYmVmb3JlIHJldHVybi4KKworY29tbWl0IDNiNjg2NTY2Mjk2ZGQ4N2JjNDJiN2YxMTY5ZGFhY2RiM2M0NWNjNTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMTggMDY6MjU6NTYgMjAxMCArMDAwMAorCisgICAgV2luMzI6IGJ1aWxkcyBhZ2FpbiB3aXRob3V0IHdhcm5pbmdzIHdpdGggTVNWQyA2LgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTQ4OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGYzYTdkMWIwOTYwOWRhZDY0OWY1OGJiZGI1YjdlMTBkMzliMzk4YzEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBPY3QgMTcgMTE6MDQ6MDYgMjAxMCArMDAwMAorCisgICAgRm9sbG93LXVwIGZvciByMTk0NzY6IGZpeGVkIGEgdHlwby4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk0NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAyZGU3M2JkMzY1YTM4MWI5YzM1M2NhNTIzMDc2OWVlZmIxYWM3MWVkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDExOjQyOjQyIDIwMTIgKzAxMDAKKworICAgIGxvY2FsL3Bhc3N0ZXN0OiBSZW1vdmUgYW4gaW5jb3JyZWN0IFBBVEg9IHN0YXRlbWVudAorCitjb21taXQgNjk5NTEzZjEyMzhlMGFkY2UxZjFjZWM5OGUwZDE0NzI5M2ZjNTA0NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE9jdCAxNyAwOToyNTo1MSAyMDEwICswMDAwCisKKyAgICBORVRTTk1QX1JFTU9WRV9DT05TVCgpLXJlbGF0ZWQgY2xlYW51cC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk0NzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2MzU4ZGVlNzJmYjM0N2UyNjAwYTBhN2JkMjFmMjMyNzBkM2EwMGY2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDEwOjU4OjE1IDIwMTIgKzAxMDAKKworICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmM6IEFkZCBhIGNvbW1lbnQKKworY29tbWl0IDUzOTZiZmUwMzJjOGNiYzczYzhmZjVkNGIwODVlYmFkYTlmNTk4NDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTA6MzA6MTYgMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBzdHJuY3B5KCkvc3RybmNhdCgpIGJ5IHN0cmxjcHkoKS9zdHJsY2F0KCkKKworY29tbWl0IGZlYjNhZjI4ZGNhZTIyMDE1YWU4NjVhMmU1ZGQ4YzQxNmU5OTkxZDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTA6MDI6MDggMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBzdHJuY3B5KCkvc3RybmNhdCgpIGJ5IHN0cmxjcHkoKS9zdHJsY2F0KCkKKworY29tbWl0IGI3ZTFhYTI1NWJhZTRhMzQ1M2Y5ZWNhNjQ0YTg3NjYzNDM1MWYxMWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjAgMTk6MzY6MjggMjAxMCArMDAwMAorCisgICAgQ0hBTkdFUzogbGlic25tcDogY2hhbmdlZCB0aGUgdHlwZSBvZiB0aGUgZm91cnRoIGFyZ3VtZW50IG9mIG5ldHNubXBfc2V0X3Jvd19jb2x1bW4oKSBmcm9tIGNvbnN0IGNoYXIqIHRvIGNvbnN0IHZvaWQqIHN1Y2ggdGhhdCBubyBjYXN0IGlzIG5lY2Vzc2FyeSB3aGVuIHBhc3NpbmcgYW5vdGhlciBkYXRhdHlwZSB0aGVuIGNoYXIqIG9yIGNvbnN0IGNoYXIqLgorICAgIENIQU5HRVM6IFdpbjMyOiBjaGFuZ2VkIGluX2FkZHJfdCBmcm9tIHVfaW50IHRvIHVfbG9uZyBzdWNoIHRoYXQgaXQgbWF0Y2hlcyB0aGUgZGF0YXR5cGUgb2Ygc29ja2FkZHJfaW46OnNpbl9hZGRyLgorICAgIEFsc28sIGZpeGVkIHNldmVyYWwgY29tcGlsZXIgd2FybmluZ3MgKG1vc3RseSBjaGFyICogPD4gdV9jaGFyICogbWlzbWF0Y2hlcykgYW5kIHJlbW92ZWQgc29tZSBjYXN0cy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxODM0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCWFnZW50L2FnZW50X3JlZ2lzdHJ5LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCisgICAgCWFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYworICAgIAlhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMKKyAgICAJYXBwcy9zbm1wdHJhcGQuYworICAgIAlzbm1wbGliL3NubXBJUHY2QmFzZURvbWFpbi5jCisgICAgCXNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYworICAgIAlzbm1wbGliL3N5c3RlbS5jCisKK2NvbW1pdCBmNDdhMzc1Mjg0OWRiMDc1ZTZmMjA1M2I4NTk1YjdiNzkyZmI2NDYyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgT2N0IDE1IDEwOjU2OjA5IDIwMTAgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogQnVpbGRzIG5vdyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdCBjb21waWxlci4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDAyYjYwNTZkZjk1ZGE4YjY3MzAzNGUzOWMyYzdjMzg2ZWQwZjM2OWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTE6NDQ6NTMgMjAxMiArMDEwMAorCisgICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBhYm91dCBjYXN0aW5nIGF3YXkgY29uc3QKKworY29tbWl0IGExOTg2NTgzMmZjNzdmNGMwNDgxNDRkOTFhNDMxYjFlOTRkMzI5ZjIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDE0IDIzOjEyOjA1IDIwMDkgKzAwMDAKKworICAgIENIQU5HRVM6IGFwcHMsIHNubXBsaWI6IFBBVENIOiAyODM1NTc3OiBpZGVudGlmaWVkIGJ5ICJCYXJ0IFZhbiBBc3NjaGUiOiBSZXBsYWNlIFNOTVBfWkVSTyBvZiBhcnJheXMgd2l0aCBhIG1lbXNldC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxNzc5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDY3YTNlMmVjY2I5NWY5YzlkMDgwOWVmY2JkZGNkODY2ZWUzMDYyZDUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNiAxNDoyNzoxNSAyMDEwICswMDAwCisKKyAgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgZGlzY2FyZGluZyB0aGUgY29uc3QgcXVhbGlmaWVyLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE3OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgM2RjZGUyZThhNTk1YTUyN2YwNjE0MmMzYjg1MmRlODQzM2ExY2YyOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBKYW4gMjQgMTQ6Mjc6NTUgMjAxMCArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUHJldmVudCBnY2MgcGVkLXdhcm5pbmcgZm9yIE5FVFNOTVBfUkVNT1ZFX0NPTlNUCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTgwNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjMmUxNTI1YTg1YmRhNTI5OWEzYjlmMjQxNjE0ZjdlNjUwOWFlZWJhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDYgMTM6MzU6MTEgMjAxMCArMDAwMAorCisgICAgQmFja3BvcnQgY29tbWl0IDI5NWY0NzNjODM1NDYyMjFiMmE3MWQ4MTVjNjFlMzNhNjdmOThhZTM6IHJlZmluZSBORVRTTk1QX1JFTU9WRV9DT05TVCgpIGltcGxlbWVudGF0aW9uLgorCitjb21taXQgY2I0MjNiMGFlOWVkMDA1OWFhMTAwZGM0ZTJmZDkzYWQxYjk3ZmFmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA2IDExOjU3OjUxIDIwMTAgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCBlMmZiMDllMDA5M2UyZjY0OGZlMjYzOGRhMmYzYWYxOGZkYjMyYmYwIC0gaW50cm9kdWNlIE5FVFNOTVBfUkVNT1ZFX0NPTlNUKCkuCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAlhZ2VudC9zbm1wX3BlcmwuYworICAgIAlzbm1wbGliL3NubXBfc2VydmljZS5jCisKK2NvbW1pdCBhZmMzOTZhYjE2MThhODU5NWEyNTE5ZmJjMjVmN2E0OThlMTc0NDExCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDA4OjQ5OjM0IDIwMTIgKzAxMDAKKworICAgIFVuYnJlYWsgbmV0c25tcF9ta3RlbXAoKSBhbmQgbWFrZV90ZW1wKCkuCisgICAgCisgICAgVGhlc2Ugd2VyZSBicm9rZW4gYnkgY29tbWl0IGJiOGZjYmI4NzQ5OTgwMDBmOTQ1ZjA1OGQxYWE2ZmUxNGU5MjU4OTkuCisgICAgQWxzbyByZXBsYWNlIGEgc3RybmNweSgpIGNhbGwgYnkgYSBjYWxsIHRvIHN0cmxjcHkoKSBhbmQgcmVwbGFjZSB0aGUKKyAgICBtYWtlX3RlbXBmaWxlKCkgaW1wbGVtZW50YXRpb24gYnkgYSBjYWxsIHRvIG5ldHNubXBfbWt0ZW1wKCkuCisKK2NvbW1pdCAyMTAxODVjMTVkMGQ2NWYwZWE5OGI1ZTNjMmUwNzc2ZjYyMjJkMTcwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDA4OjI3OjQzIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNyYXNoIGR1cmluZyBzdGFydHVwIG9mIHNubXBkIGludHJvZHVjZWQgYnkgY29tbWl0IDg4NTA2MTY4N2Q5Y2FhMzg0NzA5Nzk2NjdkN2Q4YWQ2NTYzY2VkYWQuCisgICAgCisgICAgQWxzbywgbWFrZSBzdXJlIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgY29weSBvZiB0aGUgY2xlYW51cCBjb2RlIGluIGZ1bmN0aW9uCisgICAgbWtkaXJoaWVyKCkuCisKK2NvbW1pdCA4YmI0ZTg2YWJjZjk4ZmYyODc0OGFmMGFmODljOThlNjRkNWNkOTYxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgSmFuIDExIDA3OjQ3OjEyIDIwMTIgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIG9sZG1hc2sgdmFyaWFibGUuCisKK2NvbW1pdCAzYWFkMTVhZTU2MGFjODU3ZTczYzkwNzY0ZTkwM2U3Y2EwMmIzMjk1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTo0MDo1OSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgZm9yIGxhcmdlIE9JRCBuYW1lcworCitjb21taXQgZmJhMTg4ZWU4MjAxMGIyZjJkOGNhMmU0MjZiYTY1NDQ5OWFiM2QwYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MzE6MzMgMjAxMiArMDEwMAorCisgICAgZml4ZWQgYnVmZmVyIG92ZXJmbG93IGluIF9fY29uY2F0X29pZF9zdHIKKworY29tbWl0IDIxZDI1ZDg2YjhlNDkwNGQ3OThkYzhjOTZkYWRlOWU1MDQ4NDU3YTgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjI2OjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHBhcnNpbmcgcG9ydCBudW1iZXJzLgorCitjb21taXQgZDM2OTMxODQxYjJmYzJjZWJjNjM2NGIyOTQ5MTI5YTBhZDQyYWQxZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MDU6NTEgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSBidWZmZXIgb3ZlcmZsb3cgd2hlbiBsYXJnZSBTdW1GaWxlIGlzIHVzZWQuCisKK2NvbW1pdCAwZWZkZDAyMmRhMDlhZjFiNWUxNjE3MWZhN2EyYjUyM2M1ZDZlYzU5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTowMTo1MyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0b28gYmlnIHRlbXAgZmlsZSBwYXR0ZXJuIGlzIHVzZWQuCisKK2NvbW1pdCA1NjBiYzZjMDliNzUxNTU2ZWZkNmI0YzQ0OTU3NTFiMTA5YTkzZjkyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo1OToyNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3csIGp1c3QgdG8gYmUgc3VyZS4KKworY29tbWl0IDgyOTFkN2M1YjkyYTMxZGQ0ZjU4MmI0OTdkNGIyYTA4NTMzNjdhNTYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjU1OjE2IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdy4KKworY29tbWl0IDg4ZTFmMzRkZTczMDA1NzVmYTZkYWI4NTdlY2RkYjI0MmE4N2RlODAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjQ4OjU1IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBsb25nIGludGVyZmFjZSBuYW1lcyBhcmUgdXNlZC4KKworY29tbWl0IGJlMTM3NWE5OTI2ZWJlMGNkNWI3OGE0MDQ1YzNiZDExYzgzNjY0YjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjQ2OjQ5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGEgc2Vuc29yIG5hbWUgaXMgdG9vIGxvbmcuCisKK2NvbW1pdCAxY2IyNDYyNTM3MjA2MmIxNGM3MWQ3ZGQ1MWUyMGZlZjc3M2UyNzQzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo0MTowMCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBhIENQVSBoYXMgdG9vIGxvbmcgbmFtZS4KKworY29tbWl0IDg0YzgwN2VlMDMyNTFlNTQ4NTZlODNkNjJkMDZlYTA4YjhkZjUyN2EKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjM2OjUwIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBsb25nIGludGVyZmFjZSBuYW1lcyBhcmUgdXNlZC4KKworY29tbWl0IGMzMTBlMzkwYjVkZDA1ZjI0YmU3ZWIxOTA0Yzc0ZTQxMjU5YzkzZGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjI0OjU0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBiaWcgdGVtcCBmaWxlIHBhdHRlcm4gaXMgdXNlZC4KKworY29tbWl0IDQ2MDBkMTE0MzRlODNiODY1M2NmOWY4MTNhM2Q4YjYzMDQ1NWI0MmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjE3OjA4IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHBsYXVzaWJsZSBzdHJpbmcgb3ZlcmZsb3cgYmVmb3JlIHBhcnNpbmcgY29tbWFuZCBsaW5lIG9wdGlvbnMuCisKK2NvbW1pdCA4ODUwNjE2ODdkOWNhYTM4NDcwOTc5NjY3ZDdkOGFkNjU2M2NlZGFkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDoxMTowMiAyMDEyICswMTAwCisKKyAgICBHZXQgcmlkIG9mIChpbnNlY3VyZSkgU05NUF9NQVhQQVRIIGluIG1rZGlyaGllcigpCisKK2NvbW1pdCA4MDE2ODkwYTQ0NWY2YTdlMmE4NzNhMDQ4NzNkNGUyN2I2ZWU2NGUzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMzo0ODozNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBpbnRlZ2VyIHNpemUgb24gNjQgYml0IHBsYXRmb3JtLgorCitjb21taXQgYmI4ZmNiYjg3NDk5ODAwMGY5NDVmMDU4ZDFhYTZmZTE0ZTkyNTg5OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTM6MzE6MzYgMjAxMiArMDEwMAorCisgICAgU2VjdXJlIG1rc3RlbXAoKSB3aXRoIHVtYXNrKCkgLSBvbiBzb21lIGltcGxlbWVudGF0aW9ucyBpdCBkb2VzIG5vdCBzZXQgMDYwMCBwZXJtaXNzaW9ucyBhdXRvbWF0aWNhbGx5LgorCitjb21taXQgMmY0ZTZhY2Q3MTQxODNmMDE1Yjc2MzY1N2Y4ZjA4NDU5MzM1N2UyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMDozODoxNiAyMDEyICswMTAwCisKKyAgICAuZ2l0aWdub3JlOiBJZ25vcmUgcGVybC8qLnltbCBmaWxlcworCitjb21taXQgYzM2NWQ4MGMxNmMyZDE3YjE2MDAxMWU4YzFmOWNiOTU4OTU0ZTlkYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAwODozNDoxNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IERvIG5vdCBpbnZva2Ugc2h1dGRvd25fcGVybCgpIGZyb20gaW5zaWRlIHRoZSBTSUdURVJNIGhhbmRsZXIgc2luY2UgdGhhdCBmYWlscyBpZiBTSUdURVJNIGlzIHJlY2VpdmVkIHdoaWxlIGEgUGVybCBoYW5kbGVyIGlzIGFjdGl2ZS4gQmFzZWQgb24gYSBwYXRjaCBwb3N0ZWQgYnkgSm9lbCBBdm5pIDxqYXZuaUBhcnViYW5ldHdvcmtzLmNvbT4KKworY29tbWl0IGQwNTlmYjg3OGIxNDM2NTk5OTUzY2VhNWEwNzc0OTlkZGNkY2JjYjUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNzowMzo1NSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM0NDA3NTI6IElGLU1JQjogUmVwb3J0IGludGVyZmFjZSBzcGVlZCBjb3JyZWN0bHkgZm9yIEV0aGVybmV0IGludGVyZmFjZXMgaWYgb3RoZXIgdGhhbiAxMCBNYnBzLCAxMDAgTWJwcywgMSBHYnBzLCAyLjUgR2JwcyBvciAxMCBHYnBzLiBBZGQgc3VwcG9ydCBmb3IgTklDcyBmYXN0ZXIgdGhhbiA2NSBHYnBzLgorCitjb21taXQgZTMyNWVjYmZjZTc3ZjAwYWM1Y2Y2ZmJkOTU3Zjk1NDk1ZjYxYzU5YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEphbiA5IDEzOjI1OjEwIDIwMTIgKzAxMDAKKworICAgIFN1cHByZXNzIHVuaW50ZXJlc3RpbmcgRG94eWdlbiB3YXJuaW5ncworCitjb21taXQgYmU5MTYxZDNhNTg5OGU4NjM3NjdmOTI2NjEzNDg2MTI2YzJjYmY2NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDEyOjM1OjM5IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNpbXBsaWZ5IGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBtYW5pcHVsYXRpbmcgNjQtYml0IG51bWJlcnMuCisKK2NvbW1pdCA4NmU0YzJiZTA4NTJhMGExM2IwNjAzMDc1NzIwYjMyNjRlYzcwZGRlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTI6Mjk6MTEgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBpdCBleHBsaWNpdCB0aGF0IE1BWF9TVUJJRCBpcyBhbiB1bnNpZ25lZCBjb25zdGFudAorCitjb21taXQgMzdlMjcyZDhmN2I3MTgwYmExNDBmYTM4NmE1ZmYwNTg5NjhhMDhhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE4OjIxOjQ4IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBJRi1NSUI6OmlmVHlwZTogUmVwb3J0IHR5cGUgImluZmluaWJhbmQgKDE5OSkiIGZvciBJbmZpbmlCYW5kIGludGVyZmFjZXMgaW5zdGVhZCBvZiB0eXBlICJvdGhlciAoMSkiLgorCitjb21taXQgMGQxYzIxZjk5OTFkMTMwOWQwNTdlM2U0MDU2ZDU0N2RmN2Q0MGVjZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE2OjA2OjMxIDIwMTIgKzAxMDAKKworICAgIE1ha2UgZGVjbGFyYXRpb24gYW5kIGRlZmluaXRpb24gb2Ygc3RybGNhdCgpIGNvbnNpc3RlbnQuCisKK2NvbW1pdCAwYzNkNGRiYjBhOWNmNWIzNTlmNzBiMmYxOTkxNTQ5NTU1NGY4NDBmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTU6MjM6MTYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IHNubXBkOiBSZW1vdmUgZGxtb2QKKworY29tbWl0IDg5M2VjYzk3YjU4NzY2MTA0NWJlY2JlMDlhMzIwYzFiY2JjNzFjN2MKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNDozNjo1OSAyMDEyICswMTAwCisKKyAgICBBZGQgc3RybGNhdCgpIHRvIHRoZSBNU1ZDIGJ1aWxkIGluZnJhc3RydWN0dXJlLgorCitjb21taXQgM2QxMjY0MjJlNjI1NzAyYjlkM2ZhMDY3NmE5N2VjNWNiMjBkOWQxMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE1OjAxOjA2IDIwMTIgKzAxMDAKKworICAgIE1ha2Ugd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggY29uc2lzdGVudCB3aXRoIGl0cyAuaW4gZmlsZQorCitjb21taXQgYWY1M2I3NmMyZmZhNzUxZTM5NThkMGZjNWQ4Mjc5Zjc4YzJjMWMyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE0OjQzOjU1IDIwMTIgKzAxMDAKKworICAgIFNraXAgVDA2NnBhc3Nfc2ltcGxlIGFuZCBUMDY3cGFzc3BlcnNpc3Rfc2ltcGxlIG9uIE1pbkdXCisKK2NvbW1pdCBjMzEyNmIxNDM5MjFmYWJlYWM0NDIxNjZlY2E1YjViNzQyZmQ0MmMwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTU6MDI6MzkgMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBtb3N0IHN0cm5jcHkoKSBjYWxscyBpbnRyb2R1Y2VkIGluIHY1LjUKKworY29tbWl0IGIyNGVlN2M5MDk2NTdkYjQzYmQ4YzVkOGMwMTA1NWNhMDg4M2M5Y2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwODo0MDozOSAyMDEyICswMTAwCisKKyAgICBFbGltaW5hdGUgbW9zdCBzdHJuY3B5KCkgYW5kIHN0cm5jYXQoKSBjYWxscworICAgIAorICAgIFVzaW5nIHN0cm5jcHkoKSBhbmQgc3RybmNhdCgpIGlzIGVycm9yIHByb25lIC0tIHNlZSBhbHNvCisgICAgaHR0cDovL3d3dy5ncmF0aXNvZnQudXMvdG9kZC9wYXBlcnMvc3RybGNweS5odG1sLiBIZW5jZSByZXBsYWNlCisgICAgYWxsIGludm9jYXRpb25zIG9mIHN0cm5jcHkoKSBhbmQgc3RybmNhdCgpLiBSZXBsYWNlCisgICAgc3RybmNweShkc3QsIHNyYywgbikgY2FsbHMgYnk6CisgICAgKiBzdHJsY3B5KGRzdCwgc3JjLCBuKSBpZiB0aGUgZ29hbCB3YXMgdG8gYXZvaWQgb3V0cHV0IGJ1ZmZlciBvdmVyZmxvdy4KKyAgICAqIHNwcmludGYoZHN0LCAiJS4qcyIsIG4sIHNyYykgdG8gY29weSBhIHByZWZpeCBvZiBzcmMgdG8gZHN0IG9yIGlmIHNyYyBpcworICAgICAgICBub3QgJ1wwJy10ZXJtaW5hdGVkLgorICAgICogbWVtY3B5KGRzdCwgc3JjLCBuKSBpZiBzdHJsZW4oc3JjKSA+PSBuIGFuZCBuIDwgc2l6ZSBvZiBkc3QuCisgICAgKiBzdHJjcHkoZHN0LCBzcmMpIGlmIG4gPiBzdHJsZW4oc3JjKSBhbmQgbiA8IHNpemUgb2YgZHN0LgorCitjb21taXQgNmQ5NWJjNDE0OTQ3MjkzMTAwNTQ3NWMzMGE1NDFmZWQ1NTM0ZGEzOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDExOjE5OjE2IDIwMTIgKzAxMDAKKworICAgIEZpeCB3YXJuaW5ncyB0cmlnZ2VyZWQgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIHRoZSBQZXJsIHhzIHNvdXJjZSBmaWxlcworCitjb21taXQgNGZhZTU4NTIxMDNlYzM4OTNhZDQ4OGJjMGQ5MDVjYTY5MTQ1OTVlZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDA5OjE3OjE1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNpbXBsaWZ5IHRoZSBzZV9zdG9yZV9lbnVtX2xpc3QoKSBpbXBsZW1lbnRhdGlvbgorCitjb21taXQgYjMyMjJiYjI3NWYyZjIzNDZlMGZkMDQ3OGFmYTJlZmI2MDA3NzNlNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDA5OjE2OjQ1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IERlY2xhcmUgInR5cGUiIGFyZ3VtZW50IG9mIHNlX3N0b3JlX2xpc3QoKSAvIHNlX3N0b3JlX3NsaXN0KCkgLyBzZV9zdG9yZV9lbnVtX2xpc3QoKSBjb25zdAorCitjb21taXQgNjcyYTgwOWMyMjhlOTU1MGI5OWI4OTEwYmU3NWQwYjE2MTk4NTQwMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE3OjMzOjA5IDIwMTIgKzAwMDAKKworICAgIEZpeCBhIDY0LWJpdCBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCAyNGZmMjYwYWQ4OWNlMmFhMzYxYTU1YzdjNzJlOTE2MDMxZGVmZTM1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTc6MTE6MjQgMjAxMiArMDEwMAorCisgICAgQ2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygc25tcF9zZXRfdmFyX3ZhbHVlKCkgYW5kIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSgpIGZyb20gdV9jaGFyKiB0byB2b2lkKiwgbGlrZSBvbiBtb3JlIHJlY2VudCBicmFuY2hlcworCitjb21taXQgYzZjYTczN2ZiNDZmOTBhNGJkYTVkNDM3MzRhYWMzNGU4MzdhMDVmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAxMyAxOTowNzozNyAyMDEwICswMDAwCisKKyAgICBCYWNrcG9ydCBjb21taXQgZjUwNGNlMmQ3NGE0YmM4OGY2OGNjOTUxNWZhNzA1MzM3M2NiMTViNS4KKyAgICAoRml4ZWQgbW9zdCBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIHNvdXJjZSBjb2RlIGluIHRoZSBwZXJsIHN1YmRpcmVjdG9yeS4gTm90ZTogdGhlc2UgY2hhbmdlcyBtYXkgY29udGFpbiBzb21lIHJlYWwgYnVnIGZpeGVzLikKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCXBlcmwvQVNOL0FTTi54cworICAgIAlwZXJsL09JRC9PSUQueHMKKyAgICAJcGVybC9TTk1QL1NOTVAueHMKKyAgICAJcGVybC9hZ2VudC9hZ2VudC54cworCitjb21taXQgZDIxMmRjOTg0ZWMzNGU0ZDIzMDYyNWU0NmU1OGIwYzYyOGE1MGRmNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE2OjQ2OjQ5IDIwMTIgKzAxMDAKKworICAgIFNOTVAueHMgY29tcGlsZXIgd2FybmluZyBmaXhlcworCitjb21taXQgZjdmOTY2YWJkNmQyODQ5YjEzMzEyNTJhZmU1YzQ3M2U1YzQwYjMyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE0OjI0OjMzIDIwMTIgKzAxMDAKKworICAgIEZpeCBmb3JtYXQgc3BlY2lmaWNhdGlvbiBtaXNtYXRjaGVzLgorCitjb21taXQgMzAzYzAxNWJjZmU5YWYwYjE1NGU5ODgxYzdiNGY0NDllMDhmMzBiYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSA2IDIyOjA2OjIzIDIwMDkgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCBkM2ViMmI1Y2VkMjJhODQ4MDA1M2NlNDNhY2Y5NzM5NzI5MDU1NDA0CisgICAgKFNwcmlua2xlIHNvbWUgY29uc3QtbmVzcyB3aGVyZSByZWxldmFudCAvIGZpeCBmb3JtYXQgc3RyaW5nIG1pc21hdGNoZXMsCisgICAgTmllbHMgQmFnZ2VzZW4sIE1heSAyMDA5KQorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAKKyAgICAJYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5jCisgICAgCWFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYworICAgIAlhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYworICAgIAlpbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKyAgICAJaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKworY29tbWl0IGQ5NWI0MDQwNjkxNmJkYTViNDhiNWE2MTMxYmVjMjdiODY2YjBhNzkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXkgNiAyMTo1OToyMCAyMDA5ICswMDAwCisKKyAgICBCYWNrcG9ydCBhMmE3MzE2YzMxMGYwZmNjMzcyODY3M2ZhMDQ3MDUxYzIzYjcxOTYwCisgICAgKFRyaXZpYWwgd2FybmluZyBmaXhlcywgTmllbHMgQmFnZ2VzZW4sIE1heSAyMDA5KS4KKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCWFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYworICAgIAlhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCisgICAgCWFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYworICAgIAlhZ2VudC9zbm1wZC5jCisgICAgCXNubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jCisKK2NvbW1pdCBkODZjNDdmMDAzZmRjMTkyYmNlN2I0NmFjNGYwNmIwOWUzODdjMTJiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEzOjI5OjA4IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGEgdHlwbworCitjb21taXQgM2RjMGUwMGEyZmQ4ZTM0ZmUxYWUzM2VjYWJmMzZlMTQ2NDYwYTMxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMjo0MDowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBsYXJnZSAndG9rZW4nIGlzIHVzZWQuCisKK2NvbW1pdCBiM2M0OTgyNTQyZTBhYjE1MWZiMzg4NDc1NGNkZmJjYjQ3MmRhNTJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEyOjI4OjUyIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIG9mZi1ieS1vbmUgbWVtc2V0LgorCitjb21taXQgMGY1MzY5NTA0NGRkM2YwYzM1MDc3NTNlM2Y4YzI5ZDk3ZTk2ODcyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEF1ZyAzIDIxOjM4OjI2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWIsIHNubXBkLCBwZXJsOiBFbGltaW5hdGUgZGVhZCB2YXJpYWJsZXMKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCWFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYworICAgIAlhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYworICAgIAlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfc3RhdHVzLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYworICAgIAlhcHBzL3NubXB0bHMuYworICAgIAlhcHBzL3NubXB0cmFwZF9sb2cuYworICAgIAlzbm1wbGliL2Rpcl91dGlscy5jCisgICAgCXNubXBsaWIvc25tcF9jbGllbnQuYworICAgIAlzbm1wbGliL3NubXBfb3BlbnNzbC5jCisgICAgCXNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMKKworY29tbWl0IDAxNTM4MDVjOTliOTE5NzM2NTkzNWM1ZDExYWU5YzNkNGJmYWEwZjMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwOTo0ODo0MSAyMDEyICswMTAwCisKKyAgICBGaXggYSBzZXQtYnV0LW5vdC11c2VkIHdhcm5pbmcKKworY29tbWl0IDNmODg4NWZiZWU5NDA3NzQ4ZmMyZjA1NzM3MjhhMTFiYTJiYzAyM2EKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDI4IDA1OjUxOjEzIDIwMDkgKzAwMDAKKworICAgIFJldHVybiBhIHZhbHVlIGZyb20gc3ByaW50X3JlYWxsb2NfdmFsdWUgZXZlbiBpZiBubyBzdWJ0cmVlIGlzIGxvY2F0ZWQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTc1NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBhZWU0ZTg5NWZlM2JkNWY0YTYxZTM0Mjc1YmZjYTAzNjhiNTYwNTU1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDExOjMxOjIyIDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIG9mIHNubXBfc2Vzc190cmFuc3BvcnQoKSByZXR1cm4gdmFsdWUuCisKK2NvbW1pdCA1ZDFkMGE3NDRhYjMwYzhlNjQ1YzNiODUwNmNiYmQyY2NlYjNkMjc1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDExOjA0OjQ4IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIG9mIG5ldHNubXBfZXh0cmFjdF9pdGVyYXRvcl9jb250ZXh0KCkgcmV0dXJuIHZhbHVlLgorCitjb21taXQgMjk5ZWE5YTg5YzNmMTc1OGE3NzQ4YmI5YjM0MTFmNjJmMmM3MGY4OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMDo1NDo1NSAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBvZiBmb3BlbigpIHJldHVybiB2YWx1ZSwganVzdCBpbiBjYXNlIG9mIHNvbWUgcmFjZS4KKworY29tbWl0IDkwZjFhZTY3NTc5MTc0ODE2MzZlZWY3NzEwMGNhZWViNTNlZGZlMDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMDowNjo1NiAyMDEyICswMTAwCisKKyAgICBBZGQgc3RybGNhdC5jLiBTb3VyY2U6IGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL2N2c3dlYi5jZ2kvc3JjL2xpYi9saWJjL3N0cmluZy9zdHJsY2F0LmMuCisKK2NvbW1pdCAxOTlhMDUxMWY2ZWIwZWYzZmYxZDlmOTIyYjc5MGFiNjdkZmRlMDFlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTA6MzE6MjYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHNtdXg6IHNpbXBsaWZ5IHNtdXhfbGlzdF9kZXRhY2goKQorCitjb21taXQgZDg4MzU3M2FhNzNlMGY1ZmMxODhhY2VkZWU2NDUxZjk1ZGFlOTAwYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDEwOjIzOjA2IDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgaW50cm9kdWNlZCBieSBjb21taXQgYTgwOWZlNTA3NWM5ZjM3NDcxNWY3ZDFhNjgyOTQ5YTA3MzAxNzJjMS4KKworY29tbWl0IDdiN2EzZWIyNTAwNTI3ZWFhMTY5OTI4N2E2Y2E2ZmNjNGNjMmUwOGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwOTo0MDowMiAyMDEyICswMTAwCisKKyAgICBGaXggYSBidWlsZCBlcnJvciBjYXVzZWQgYnkgY29tbWl0IGE4MDlmZTUwNzVjOWYzNzQ3MTVmN2QxYTY4Mjk0OWEwNzMwMTcyYzEuCisKK2NvbW1pdCAyYjZjMTE5ZmVkNDg0OGRhNjY2M2MxMWYwYzJjYmRjMjk5MjFiNWM2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjUxOjEwIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGZvciBuZXRzbm1wX2RzX2dldF9pbnQoKSBlcnJvcnMuCisKK2NvbW1pdCA2Y2U1MzYwY2FhNGM5ZGU1MWFkZTU3ODc5ZTgzZjk2YmQwNGI0YzVhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjQyOjIzIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGZvciBtaXNzaW5nIHZpZXcuCisKK2NvbW1pdCBiM2JjNTRiZWQzMTY5MGE4NWRmMmFjZmJmMzI5NmRhOTNhOWU4OWI0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjIzOjE3IDIwMTIgKzAxMDAKKworICAgIENoZWNrIHNvY2tldCgpIHJlc3VsdC4KKyAgICBBbHNvIGNsb3NlIHRoZSBzb2NrZXQgb24gZXJyb3IuCisKK2NvbW1pdCA5MjA3NWY1MWNkNDVhMzhjYTM4NzYwYjNmZmU4MmUxNjU1OWU5YzJlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjE4OjI2IDIwMTIgKzAxMDAKKworICAgIENoZWNrIG9wZW4oKSByZXN1bHQuCisKK2NvbW1pdCBkNjhkY2FlMGYxOGQ1NTQ1NzFhZWYzMjE5NDRhNTI5MDU0OGRkZTg2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjE2OjExIDIwMTIgKzAxMDAKKworICAgIEFkZGVkICdmYWxsdGhyb3VnaCcgY29tbWVudCBmb3IgQ292ZXJpdHkuCisKK2NvbW1pdCBmYjZmODBjMGZlM2JhMzZlNTZmNWI5MTFhNDdlM2Y2ZjMyYmEyNjZlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjE0OjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGV4aXQgY29kZSBvZiBlbmNvZGVfa2V5Y2hhbmdlIHdpdGggd3JvbmcgYXJndW1lbnRzLgorICAgIEFsc28gYWRkZWQgYSBjb21tZW50IGZvciBDb3Zlcml0eS4KKworY29tbWl0IDMxMzBlMjRmZGMyMzI0NjRkZDdiYjIxNmY0NmNhZmEyZTBlNzc1YTYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MDk6NTQgMjAxMiArMDEwMAorCisgICAgQWRkZWQgbWlzc2luZyBicmVhaworCitjb21taXQgMThjMTI2YTk1NjVjYjRkNjlkNzUxM2I5NDRhMjEwNTU4ODA0NWQzNQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDowNzoyOSAyMDEyICswMTAwCisKKyAgICBBZGRlZCAnZmFsbHRocm91Z2gnIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgNmQzMWM4MjA3MGEyYzY4ZmUzYzUxOWU5ZDU2ZmEyNzc5NTU0ZDAxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDowMTo1MyAyMDEyICswMTAwCisKKyAgICBBZGRlZCAnZmFsbHRocm91Z2gnIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgZGFiMzI4NjdlZDBiOTkzMDFlZmQ3YjhkODUyYWQxMjg4YTE4NGJlMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzozMDozMyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBRVUlURlVOIHVzYWdlLgorCitjb21taXQgYjFhMmJjZjY0NjE1ZWI2NmJjMjRkNWJlNDk1MGU0NTAxMjk2MjA0NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzoxODowMyAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBvcGVyYXRvcgorCitjb21taXQgYjJiMWM4NTFiOTRmZWQzN2MzODZlYWExYmZlYWQ1Yzc3Njk2ZTNlZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzoxNDo1MiAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBvcGVyYXRvcgorCitjb21taXQgYTgwOWZlNTA3NWM5ZjM3NDcxNWY3ZDFhNjgyOTQ5YTA3MzAxNzJjMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMDo1ODo0NiAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBmb3IgZmFpbGVkIHJlZ2lzdGVyX21pYi4KKworY29tbWl0IDU5NDlmMDU1YzE2YWU2NTA2MTVhYWU3YTFmZWUzZjJkN2IxNmQ5NDAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTA6Mjk6NTkgMjAxMiArMDEwMAorCisgICAgTWFrZSBNSUIgZmlsZSBwYXJzaW5nIGFuZCBkZXRlY3Rpb24gbW9yZSBzdHJpY3QgLSBMQUJFTCBpcyByZXF1aXJlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIE1JQiBmaWxlcy4KKworY29tbWl0IGU0YjY3MzY4M2M2OGJhOGIzYWJjMDQwYjkxMjVlYzMwNDY0M2NjN2MKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBKYW4gMSAyMzowMDoyNCAyMDEyICswMTAwCisKKyAgICBBc3N1bWUgdGhhdCBsaWJkbCBtaWdodCBiZSBpbiBBR0VOVExJQlMgb3IgU05NUExJQlMgc28gcHJlYWRkIHRoZW0uCisKK2NvbW1pdCBiMTNjMWU1N2JlZGJhNzliODA2MTAzYzc0ZjE5MjFkNTNhNzA2YjM4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gSmFuIDEgMjI6NTU6MDYgMjAxMiArMDEwMAorCisgICAgRG8gbm90IHJlcXVpcmUgdWNkLXNubXAvZGxtb2QgdW5sZXNzIGl0IHdpbGwgd29yay4KKworY29tbWl0IDE0YjYwZTg1YTFiNTcwMGU5M2QxMjZlMmYyOTFkNWM0ODVmMzRlMzYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMzEgMTQ6MTQ6MjkgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2UgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRsbW9kIG1vZHVsZSBmYWlsIHJhdGhlciB0aGFuIGdlbmVyYXRlIGEgZHVtbXkgbW9kdWxlIGlmIHRoZSBkbG9wZW4gZnVuY3Rpb24gaXNuJ3QgYXZhaWxhYmxlLgorCitjb21taXQgOThhOTc1MzhmYzFlOWZmNDZiNjBkNWQ5NjkzNDc0NDQ1NzgzNzhjMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxMzozNToxMyAyMDExICswMTAwCisKKyAgICBBZGp1c3QgdGhlIHBhdGhzIHRvIHN1cHBvcnQgdGVzdGluZyBldmVuIGlmIGJ1aWxkZGlyICE9IHNyY2RpcgorCitjb21taXQgODhmMGFmM2NmYjkxNmFlNTg2M2NjMjk4NjA3MWQ0MzVmMjBjMzA2NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxMTozNzo1MiAyMDExICswMTAwCisKKyAgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSB2YXJpYWJsZXMgJ3AnIGFuZCAnbGVuJy4KKworY29tbWl0IDA4MTVhNzUzNmM3NmY3ZTQ4NDI2Mzg2ODNmNjc0ODk0YTFhOGNlMTQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDI5IDE0OjQyOjU0IDIwMTEgKzAwMDAKKworICAgIFJlcG9ydCBwcm9ibGVtcyB3aXRoIFNldFVuZG8gcHJvY2Vzc2luZworICAgIE1pc3NlZCB3aGVuIGFwcGx5aW5nIHBhdGNoICMzNDQ1NDQwCisKK2NvbW1pdCBlYjJhYjIzNzQyY2E4NmMwYjg5Y2NmZTkxZWI2ZWEzNzRiZjNhY2MxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IERlYyAyOSAxNDozNzozMSAyMDExICswMDAwCisKKyAgICBDaGVjayBmb3IgdGhlIGV4cGVjdGVkIGVycm9yIChFUElQRSkgb24gY2xvc3VyZS4KKyAgICBNaXNzZWQgd2hlbiBhcHBseWluZyBwYXRjaCAjMzQ0NzQ0NAorCitjb21taXQgYWFjMTBiYzRmMDUzYzAxNGYzODJkNjU5M2ZjMzJhYjk1ZTBiMWE1NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBEZWMgMjkgMTI6NTk6NTIgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzQ2Mzc2NzogSGFuZGxlIHBhcnNpbmcgc3ViaWRlbnRpZmllcnMgPiAyXjMxCisKK2NvbW1pdCAzODk4YzA0ZmQ2Zjg5ODY3MDYyZmRmZWJmMzY4NTdhYjYxOWMwNDUwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIERlYyAyOCAxNjo1MzoyNCAyMDExICswMDAwCisKKyAgICBBZGQgdGVzdHMgZm9yIHBhc3MvcGFzc19wZXJzaXN0LCBzdXBwbGllZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgZDVlZTNmMGExYTYzYmIxNzUyYzc0Y2JjYTU1YWEzZDQwYmY5YmYxMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMjE6NTg6NTEgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0NDc0NDQ6IEZpeCBTSUdfUElQRSBoYW5kbGluZworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCAyYTE3YjM3NDMwYzE4NTI5OThjMzU4OGU1NDdkN2ViNjFjMDZkYTcxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAyMTo0NTozOCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBhZ2VudHg6IFBBVENIRVM6IDM0NDU0NDA6IE1vcmUgcm9idXN0IGhhbmRsaW5nIG9mIEFnZW50WCBlcnJvcnMKKyAgICBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgZmU1OGEwZTVmNGQ0ZTJlMmVjYmNiNDczODJiMDhjYjFlNGRmMzUyYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTg6MTY6MjMgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzQ1Njc3MDogSGFuZGxlIChvYnNvbGV0ZSkgVUludGVnZXIgdHlwZSBwcm9wZXJseQorICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCAxYmU4Y2YwOGE2N2E5MTg1NWZlZTFlYzRhMmQ4ZTA4N2M3ODEyNDU2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxODowNDoxMCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBhZ2VudHg6IFBBVENIRVM6IDM0NDU0Mzc6IExvZyBBZ2VudFggZGlzY29ubmVjdGlvbnMKKyAgICAoaW4gbGluZSB3aXRoIGNvbm5lY3Rpb25zKSBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgMDY4MDM3Mjg5MTA3ZmFhMmJhM2Y1Y2QyZmIwMGMxOTQ5NGJiOWEwNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTc6Mjc6NDYgMjAxMSArMDAwMAorCisgICAgSGFuZGxlIGFueSBHRVRORVhUIHJlcXVlc3QgT0lELCBub3QganVzdCBhIHNpbXBsZSB3YWxrLgorCitjb21taXQgYTc0ZmE1Mjg5ODMxMjNkMzU1YThjZGNhYTc3ZGQ0ZWI0YjhjNjk1OQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTc6MDA6MTggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcGFzczogUEFUQ0hFUzogMzQ5Mzk0OiBCcmluZyBwYXNzX3BlcnNpc3R0ZXN0IHNjcmlwdCBpbnRvIGxpbmUgd2l0aCBwYXNzdGVzdCoKKyAgICAoaS5lLiB1c2luZyB0aGUgbGVnaXRpbWF0ZSBzdHJ1Y3R1cmUgb2YgTkVULVNOTVAtUEFTUy1NSUIpCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IGJiZTY0OWViZmE2MWVhMjIzOTkxNzBiMzZiOTlkYjMwYTFkZTgwMTIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE2OjU0OjM4IDIwMTEgKzAwMDAKKworICAgIFJld29yayAicGFzc3Rlc3QiIGV4YW1wbGUgdG8gZnVsbHkgdmFsaWRhdGUgR0VUTkVYVCByZXF1ZXN0cworICAgIGFuZCB1c2UgYSBsZWdpdGltYXRlIHN0cnVjdHVyZSBmb3Igb3V0cHV0LiAgQmFja3BvcnQgb2YgU1ZOCisgICAgcmV2aXNpb24gMTc2MzIgKHdoaWNoIHVwZGF0ZWQgJ3Bhc3N0ZXN0LnBsJyBidXQgbWlzc2VkICdwYXNzdGVzdCcpCisgICAgQ29ycmVjdCBpbiBicmFuY2hlcyA1LjUgYW5kIGFib3ZlCisKK2NvbW1pdCA4MmQwNmM3MjQ3YjIyYzhiMDFkNDViZjU1MDQxZDJmMWU2NDI3ZDQ5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxMzo0NToxOCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ0NzY3MTogRml4IG92ZXJyaWRlIGhhbmRsaW5nIG9mIE9JRCB2YWx1ZXMKKyAgICBQYXRjaCBzdXBwbGllZCBieSBQaGlsbGlwIE8nRG9ubmVsbAorCitjb21taXQgODI3YzhiMjg4MzAxNzFmYWE5YzYxZDUzZWZjYTllYjY2MDA1NjFjMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTE6MjU6NDMgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzNDMzODQ2OiBGaXggZm9yIHVzZSB3aXRoIHB5dGhvbiAyLjQKKworY29tbWl0IGY5OGE1NGE5OWNhZjdiNDZiMTAwYTkyMGRiOTQyY2JjYTljNDM5MjYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDEwOjEwOjM2IDIwMTEgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIHRlc3RzIHdoZW4gY29uZmlndXJlZCB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydAorCitjb21taXQgYzEzOWNhMTIzYjQ0YmIzYjliNmJmOTIxZTE2MDljYzQ1ZjYzYTY2MAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFNhdCBEZWMgMjQgMTY6NTU6MzAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVMgMzQxMDA1OTogRml4IHNwYXJzZWx5IGF1Z21lbnRpbmcgdHJpZ2dlciB0YWJsZXMKKyAgICBQYXRjaCBwcm92aWRlZCBieSBTdGVwaGVuIFR1cm5lcgorCitjb21taXQgYzRhZTAyMWIyZTYzODQ0MzcwODFjNTYyM2YzNjBjODg5NjM5MDE4OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFNhdCBEZWMgMjQgMTY6Mjk6NTQgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVMgMzQxMDA1MDogU2tpcCBhbHJlYWR5LSdwcm9jZXNzZWQnIHZhcmJpbmRzCisgICAgQmFzZWQgb24gbWliMmMgcGF0Y2ggcHJvdmlkZWQgYnkgU3RlcGhlbiBUdXJuZXIKKworY29tbWl0IGM2YWNjZjhjNjYyNTRmYThjNDg3NjdlZDdkZWM3OTVkZGFmYzUyMmUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBTYXQgRGVjIDI0IDE2OjI3OjExIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTIDM0MTAwNTA6IFNraXAgYWxyZWFkeS0ncHJvY2Vzc2VkJyB2YXJiaW5kcworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFN0ZXBoZW4gVHVybmVyCisKK2NvbW1pdCBhNjE4MjZhZDhjYTU0NjYxZDFkOTA5NzEyNTAzYmQzYThiMzJlZWQwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgRGVjIDIyIDE4OjM1OjQ2IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCisgICAgCisgICAgbXlNYXRjaCBpcyB1bnVzZWQgYXMgbm1hdGNoIGlzIHplcm8gYW5kIGFsc28gc2luY2UgcmVnZXhCdWZmZXIgaXMgY3JlYXRlZAorICAgIHdpdGggUkVHX05PU1VCIHNldC4KKworY29tbWl0IGJhNGZjODBmZTJjZmQ1YTVkODkyMzBkOGYzNzAzZTRmZTAxZTYwMTkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDIyIDE5OjI0OjQwIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSCAzNDAyMzc2OiBmcm9tIExlb25hcmRvIENoaXF1aXR0bzogUmVjb2duaXNlIFJlaXNlckZTCisgICAgQWxzbyBtb3ZlIHZhcmlvdXMgRlNUeXBlIGRlZmluaXRpb25zIHRvIHRoZSBhcHByb3ByaWF0ZSBibG9ja3MKKworY29tbWl0IGI1YWM0YTA0ZGNkNTQ3MGQwOGQwMzMyMWFiY2QxZTk4MjYyMWU2ZTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjM5OjQ2IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVudGVybWluYXRlZCBzdHJpbmdzIGFmdGVyIHN0cm5jcHkKKworY29tbWl0IDJiMzdlNGU4ZjI1MGEwZDg4MjExOTlhNzRhYzNmNGU1YjdiN2JhYmEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjMxOjUxIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVudGVybWluYXRlZCBzdHJpbmdzIGFmdGVyIHN0cm5jcHkKKworY29tbWl0IGNkODU5YWQ1MWM0ZjE4ZDViMGZjNjlkZDY2OWZjYjA1MWM3OTg5NjkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjM5OjMzIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIG1lbW1vdmUgc2l6ZQorCitjb21taXQgMzBmZjU4ZDA5ZDRjOWQ1NDM4YmI2MjEwNTRmZDdhZDdhMmE1OTdlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6MDc6MTkgMjAxMSArMDEwMAorCisgICAgRml4ZWQgd3JvbmcgbGVuZ3RoIG9mIGJ1ZmZlciB3aGVuIHByaW50aW5nIEFTTl9CSVRfU1RSCisKK2NvbW1pdCA2YzE0ODdlMWQzNjBkM2QyNjBhMzljYjFmNWIxNWRhOTc4Mzk1MDUzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNTo0NzozNCAyMDExICswMTAwCisKKyAgICBGaXhlZCBwb3RlbnRpYWwgZnJlZSBvZiB1bmluaXRpYWxpemVkIHBvaW50ZXIgaW4gZXJyb3IgY2FzZXMKKworY29tbWl0IGM3NmZiOTZmNjVlMzNiYTJmZDIxMmE5MjFlOGMzODYxNTVlZTVjN2EKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE1OjQ0OjQ2IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVuaXRpYWxpemVkIHZhbHVlcyBpbiB1ZHBUYWJsZQorCitjb21taXQgYzQ0NjA4Njc5Yjg5NzUxMTc2ZjI4YTJlNTRkNTI4MmI0NmUyYTA1YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTQ6NTY6MTMgMjAxMSArMDEwMAorCisgICAgVXNlIGNhbGxvYyBpbnN0ZWFkIG9mIG1hbGxvYyBhbmQgbWFudWFsIGNsZWFyaW5nCisKK2NvbW1pdCBhMDVjNWY5NTEzNDYxODI0ZTc5MDNhZTlhZTlhNmMzMzg2ZTMzODc5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNDo0MDo1MCAyMDExICswMTAwCisKKyAgICBGaXhlZCBwcmludGluZyBvZiB1bml0aWFsaXplZCB2YXJpYWJsZSB3aGVuIHNlbnNvcnNfZ2V0X2xhYmVsKCkgZmFpbHMKKworY29tbWl0IGU0YTVlZGM3MjM5M2JkM2RlOWJmMTJiY2ViYTlkODNiYmY3ZGU3MGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE0OjMxOjI1IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZWQgdW51c2VkIHZhcmlhYmxlCisKK2NvbW1pdCBmYWUyZTViODM1YjhkZjFlYWU0N2U0Y2ViYjRlYjQwNGQ3MjgyMzc3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxMzozMToyMSAyMDExICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nIHVuaXRpYWxpemVkIGlpZCBpbiBlcnJvciBjYXNlcyBhbmQgd2l0aCBkZWJ1ZyBpbmZvIGVuYWJsZWQuCisKK2NvbW1pdCAwYmM4YzA4ZWRlYWU3YWUwOTVmMTE2MjU4YzIwYWU1NzY3ZDYwNjUyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxMzoyMDo1MiAyMDExICswMTAwCisKKyAgICBGaXhlZCByZXR1cm5pbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZSAnc3RhdHVzJyB3aGVuIHNzID09IE5VTEwKKworY29tbWl0IGRlOTI1MGQ5ZGFlOTcyN2E2Y2M3ZjY0NzY4OGRkZGYxYjg1OTcxMjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAxMTo1ODowNCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTWFrZSBzcHJpbnRfbWliX29pZCgpIHRyZWF0IE9JRCBjb21wb25lbnRzIGFzIHVuc2lnbmVkIGluc3RlYWQgb2Ygc2lnbmVkIGludGVnZXJzCisKK2NvbW1pdCAwZTMzYjNiNmQ1ODU0YTRiYWMxNWQ0ZWE1ZTAxNmM1M2QxNjFkMGNkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMTA6MDI6MjggMjAxMSArMDEwMAorCisgICAgRml4IHJlY2VudGx5IGludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MKKworY29tbWl0IDczYzllZTQyZDI4YWZlMmUxMDdhN2Q2NjE2YjZkMDExODkwYzM2ZWEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAwOTowOTo1OSAyMDExICswMTAwCisKKyAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcworCitjb21taXQgM2RiOTc5NjJiMzdlYjEyZDI1NGQ2MWU2YmUyMzRiMDZhMzkxYzhiYgorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgVGh1IERlYyA4IDA3OjQzOjQ1IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzNDUzODY4OiBmcm9tICJCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4iOiBGYWN0b3IgY29tbW9uIGNvZGUgaW50byBwYXNzX2NvbW1vbgorICAgIAorICAgIE1vdmUgdGhlIGNvZGUgZm9yIHBvcm1hdHRpbmcgYW5kIHByaW50aW5nIHZhbHVlcyBmcm9tIHBhc3MgYW5kIHBhc3NfcGVyc2lzdAorICAgIGludG8gcGFzc19jb21tb24uCisKK2NvbW1pdCA3ZjA1ZGFhOGUwZTBmNTMzYjBmMTJhM2UxY2YwNzY0MTUxOTkwOWQ2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTE6NTg6MzIgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNDQ0OTM5OiBCVUc6IDE3OTY4ODY6IHNubXBsaWI6IEF2b2lkIHRoYXQgc3ByaW50X3JlYWxsb2Nfb2N0ZXRfc3RyaW5nKCkgZW1iZWRzIHVucHJpbnRhYmxlIGNvbnRyb2wgY2hhcmFjdGVycyBvciBiaW5hcnkgemVyb2VzIGluIGl0cyBvdXRwdXQuIFRoaXMgYmVoYXZpb3IgY291bGQgY2F1c2UgdHJ1bmNhdGVkIG91dHB1dCBpbiBzbm1wdHJhcGQuCisKK2NvbW1pdCBkYjhmNTU4ZmQyZjNiN2MxMDllYTNhMWMyMTMzYjc1YjZmOGNiMmFkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6MDQ6NDEgMjAxMSArMDEwMAorCisgICAgQ29tcGlsZXIgd2FybmluZyBmaXg6IHBhc3MgdW5zaWduZWQgY2hhcnMgdG8gaXNwcmludCgpIGluc3RlYWQgb2Ygc2lnbmVkIGNoYXJzLgorCitjb21taXQgODAwZGMxMDI4ZTdlMGNkOGNjMTRkODRkZDMxNzIzZDQ3YWMwNzNkYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjE4OjU4IDIwMTEgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIGhpbnQgdmFyaWFibGUKKworY29tbWl0IDgzZWE0YTA4MGM5MGE3NGI5NzQzZDNmMjRjZjBkNGI4YTFlOGM4NDkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBOb3YgMjcgMjE6MTY6NTIgMjAxMSArMDEwMAorCisgICAgUmVkdWNlIHRoZSBzY29wZSBvZiB0aGUgdmFyaWFibGUgcW9zCisKK2NvbW1pdCA3YjllMDM0NDFjM2RjM2EwNzY3MGVkMDFmNWQwNDc5MWE4MmM3NTBjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjA0OjAxIDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSAjZGVmaW5lIHZhbCh4KSBfX1NUUklORyh4KSBhbmQgY2hhbmdlIHZhbCh4KSBpbnRvIF9fU1RSSU5HKHgpLgorCitjb21taXQgMmYzNzliMGU0ZWNhZGZhNGU1NDFlMzAwNWM4ZmM4MjgxODgyYjc0MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNTo1ODo0NyAyMDExICswMTAwCisKKyAgICBGb2xsb3ctdXAgZm9yIGNvbW1pdCAxYWE3MDRlOiB1bmJyZWFrIHRoZSBNU1ZDIGJ1aWxkCisKK2NvbW1pdCA2NGVmMGY3MTEyNzYxNzgzNzAyN2ZiMmNmYWYxNzRiOTViYTc5ZTBkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjE5OjUwIDIwMTEgKzAxMDAKKworICAgIEFkZCBTTk1QOjpyZWdpc3Rlcl9kZWJ1Z190b2tlbnMoKQorCitjb21taXQgN2JlYWQ5Y2E5MTdjNjc1NjZkNWVkOThhYjUwN2JiYzAyODE2MjE3ZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDowODowOCAyMDExICswMTAwCisKKyAgICBBZ2VudFggc3ViYWdlbnQ6IFJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uCisKK2NvbW1pdCAwZWQ3MTU0MWY4N2U3ZDc4YmM5OThlZWJkYTMyMTdjNTllMWRmODMwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjAzOjE5IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEFkZCBEb3h5Z2VuLXN0eWxlIGZ1bmN0aW9uIGhlYWRlciBmb3IgbmV0c25tcF9yZWdpc3Rlcl9kZWZhdWx0X3RhcmdldCgpIGFuZCBuZXRzbm1wX2NsZWFyX2RlZmF1bHRfdGFyZ2V0KCkuCisKK2NvbW1pdCA4YzI5NzJiNjFlNDAxNjliNDdjNTA5ODhiNmFlOWU4YzI4NWY4NGY4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjAyOjU0IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEZpeCBzcGVsbGluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgU05NUCBtb2R1bGUKKworY29tbWl0IDgyZTM5ZmI2NzA2ZGY5MGVjZjJmYzllMTBhZGEyYjk2MmVlMTk2ZjMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTm92IDI5IDEyOjI3OjQ2IDIwMTEgKzAwMDAKKworICAgIEZpeCBtdWx0aS1saW5lIGNhc2UgdGVzdGluZyBvZiBpbmNvbWluZyBPSUQKKworY29tbWl0IDg4NjdmZDFkY2ZlNzJiNTlkMDczMjJmZjM4YTY5OWI2NmVjNGYzMjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBOb3YgMjIgMDk6NDQ6MzggMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSByb2J1c3QgYWdhaW5zdCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4KKyAgICAKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIE5FVFNOTVBfTEFSR0VfRkRfWkVSTygpIHVzZSBtZW1zZXQoKSBvbiBVbml4IHN5c3RlbXMgaW5zdGVhZCBvZiBhbiBleHBsaWNpdCBsb29wLgorICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2Ugc3VyZSB0aGF0IG9uIFVuaXggc3lzdGVtcyBuZXRzbm1wX2xhcmdlX2ZkX2NscigpIGRvZXNuJ3QgdHJ5IHRvIHJlYWQgbWVtb3J5IGl0IGlzbid0IGFsbG93ZWQgdG8gcmVhZCBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIC0xIChhIHZhbHVlIHRoYXQgc2hvdWxkbid0IGJlIHBhc3NlZCBieSB0aGUgY2FsbGVyKS4KKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfaXNfc2V0KCkgcmV0dXJuIGZhbHNlIG9uIFVuaXggc3lzdGVtcyBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIC0xIChhIHZhbHVlIHRoYXQgc2hvdWxkbid0IGJlIHBhc3NlZCBieSB0aGUgY2FsbGVyKS4KKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHNocmluayBiZWhhdmlvciBjb3JyZWN0LgorCitjb21taXQgODBlZTQwMjJlNTM0ZTY0YWFkNWE1ZjI3MTkyODQzYjQyYWNiODVlMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAxOSAwOToxNDowMiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzNDM5MjM0OiBNb3ZlIG5ldHNubXBfcGFzc19zdHJfdG9fZXJybm8gdG8gcGFzc19jb21tb24gYW5kIHJlbmFtZSBpdCB0byBuZXRzbm1wX2ludGVybmFsX3Bhc3Nfc3RyX3RvX2Vycm5vCisKK2NvbW1pdCAwYmFhOTI5NmMwNzJiYjM3MzU3NjBiMGRkOTkyZjJkMWQzY2EyN2ZhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDE5IDA5OjA1OjI0IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM0MzkyMzQ6IENvcnJlY3QgdGhlIGRlcGVuZGVuY2llcyBvZiB1Y2Qtc25tcC9wYXNzIGFuZCB1Y2Qtc25tcC9wYXNzX3BlcnNpc3QKKworY29tbWl0IDFhYTcwNGU0YTI5NDQzMGIyOGUzOWI2ZjllNDY4M2I4YTQ4YmNlMDQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDg6MzU6MjEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEZhY3RvciBvdXQgYXNjMmJpbiBhbmQgYmluMmFzYy4gQWRkIGEgbmV0c25tcF9pbnRlcm5hbF8gcHJlZml4IHRvIHRoZW0KKworY29tbWl0IGNkYThmZTkxMDEzZjEyY2JmNjRhMDc3NWFiYjU1NzIwMDM1YWY5MzEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDA6NTU6MjQgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IENhbGwgc25tcF9vaWR0cmVlX2NvbXBhcmUgaW5zdGVhZCBvZiBzbm1wX29pZF9taW5fY29tcGFyZQorICAgIENIQU5HRVM6IHNubXBkOiBSZW1vdmUgc25tcF9vaWRfbWluX2NvbXBhcmUgc2luY2UgaXQgaXMgaW50ZXJuYWwgYW5kIHVudXNlZAorCitjb21taXQgYjg4MTg0MWJkMDQ5M2RkNzFkNjMyNTliZGRlZDQ0OWIwNmYwMmMzMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzozMDozMyAyMDExICswMTAwCisKKyAgICBGaXggc2l6ZV90L2ludCBtaXNtYXRjaGVzCisKK2NvbW1pdCBjYTI5NGNmNzViYmM4ZTkwZGJmNDRlZTQwNDc4OTM1ZTkxZGIxNDg3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE4OjAzIDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCisKK2NvbW1pdCA4ODMxMzZjMmIyZmEwNzM5ZjQzN2E4Y2ZiNjYxNGFjY2M3NmUyNjhlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE1OjU4IDIwMTEgKzAxMDAKKworICAgIE1vcmUgbmVlZHMgZm9yIE5FVFNOTVBfUFJJbyBmb3JtYXQgc3BlY2lmaWVyCisKK2NvbW1pdCA0YmQwMzUyOTU1YTI1NTFiZmUwMjMwOGRkMTM0YjkxMjhjOThiOWU5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIyOjU5OjM2IDIwMTEgKzAxMDAKKworICAgIEZpeCBwYXJhbnRoZXNpcyBwcm9ibGVtCisKK2NvbW1pdCBmZTYyNjliMTkwMGNmNDRkYzI3YTE5OWE3NjFkMTVhMDFjM2YzMDkyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIyOjU4OjM0IDIwMTEgKzAxMDAKKworICAgIEZpeCBzaXplX3QvaW50IG1pc21hdGNoZXMKKworY29tbWl0IDM5MGMwMTE0YzhlYzBiZGIyN2IwOGI2Zjc0ZTNmNmVmM2E2Mjk4MWIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMTM6Mzc6NDkgMjAxMSArMDEwMAorCisgICAgRml4IGZvcm1hdCBzcGVjaWZpZXJzIHRvIGF2b2lkIHdhcm5pbmdzCisKK2NvbW1pdCAwZTg2Yzc4MWYzOTg5YmYwMjJjODk5M2ExMTg2MTdiNzRhNzU0MjBjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDA5OjE3OjE5IDIwMTEgKzAxMDAKKworICAgIG1lbW9yeV9saW51eDogZ2V0IFNobWVtIGZyb20gL3Byb2MvbWVtaW5mbyBmb3IgMi42IChvciBuZXdlcikga2VybmVscworCitjb21taXQgYmYyNjRkMTVkZWQ3YWNiYmYyZTM4NzFiOThmZDFmY2VmNDNkOWVjMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxNjoxNiAyMDExICswMTAwCisKKyAgICBtZW1vcnlfbGludXg6IGNsb3NlIHNvY2tldHMgaW4gZXJyb3Igc2l0dWF0aW9ucworCitjb21taXQgNTdmZjhhNDBiYWU1ZDliY2FkMTYwODkxNDJhOWNmMzI4YzlmYTFmNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxNDo1NyAyMDExICswMTAwCisKKyAgICBkaXNtYW4vcGluZywgZGlzbWFuL3RyYWNlcm91dGU6IENsb3NlIHNvY2tldHMgaW4gZXJyb3Igc2l0dWF0aW9ucworCitjb21taXQgNDM0YmZjMWY3NDU3NTUwYjZmODdkNWJjZDUxMTI3NmIyNzBiNTk2NAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgMTQgMTE6MjI6NTMgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gTWFydGluIFdpbGNrOiBmaXhlZCBzbm1wZCBjcmFzaGluZyB3aXRoICdzZWxlY3Q6IGJhZCBmaWxlIGRlc2NyaXB0b3InLgorICAgIAorICAgIE9uIDMyLWJpdCBzeXN0ZW1zLCBzbm1wZCBkaWVzIHdpdGggYWZvcmVtZW50aW9uZWQgbWVzc2FnZSB3aGVuIHVzaW5nIGZpbGUgZGVzY3JpcHRpb25zID4gMzIsIGUuZy4gd2hlbiBoYXZpbmcgPjMyIEFnZW50WCBzdWJhZ2VudHMuCisKK2NvbW1pdCBlYWNhNzk4M2UzNjU1YWI2OTZmY2M0NDYxY2EwY2VkYmFjNmNlNjlhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDExIDE5OjAwOjEyIDIwMTEgKzAxMDAKKworICAgIE5ldEJTRC02OiBPbmUgbW9yZSBpbnN0YW5jZSBvZiB0aW1lc3BlYyByZXBsYWNpbmcgdGltZXZhbAorCitjb21taXQgMzc4ZmZlZDAzYmE3OWE4MzQ2ZDZjNjI3ODFlMmRkZjVjZTkyYTQ3OAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAxMSAxODo1NTo0MyAyMDExICswMTAwCisKKyAgICBGaXggYnVnICMzNDM2NTI4OiBzd2luc3RfcGtnaW5mbzogcmVjb3ZlciBmcm9tIE5VTEwgcmV0dXJuIGZyb20gb3BlbmRpcgorCitjb21taXQgYTk0YTE3OWQ5MzQwZjUxZmE3YzIzNDMxNjMwYmMwZmZkNmQ3NTllOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiA5IDIwOjMwOjUxIDIwMTEgKzAxMDAKKworICAgIEZpeCBidWcgIzM0MzM2MTY6IGRvbnQgdHJlYXQgRGF0ZUFuZFRpbWUgYXMgYSBzdHJpbmcKKworY29tbWl0IDJlN2U5ZWRhMGIwZDYyYTc2NDVhOWE4ZjcwZWYzZmI2ZjNkZDY5NDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBOb3YgMyAxMToxNzo0OCAyMDExICswMTAwCisKKyAgICBGaXggdW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5ncy4KKworY29tbWl0IDM0NjJlYmNkZDBiN2MyOThjYjE1YzMwOTk3MzZmNGY5NTIyNTc4NDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgMjggMTY6MDc6MTUgMjAxMSArMDIwMAorCisgICAgUmVtb3ZlIHRob3NlIHN1cGVyZmx1b3VzIHBhcmVudGhlc2VzIHRoYXQgdHJpZ2dlciBhIGNsYW5nIHdhcm5pbmcuCisKK2NvbW1pdCAzZTVmZWRkM2U3ZDFlZjMxNjgzNjA0YmY3M2RjNTZlOTQ0Y2FkMzQ5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE5vdiAzIDA5OjQ1OjI3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIGFmdGVyIDMwIGRheXMgb2YgdXB0aW1lLgorICAgIAorICAgIEFmdGVyIDMwIGRheXMsIHZhbHVlcyBmcm9tIC9wcm9jL3N0YXQgKG9uIExpbnV4KSBjYW4gZ2V0IGJpZ2dlciB0aGFuIDMyYml0cyBhbmQgc25tcGQgY2FsY3VsYXRpb25zIG1pZ2h0IHJlbmRlciBjb3VudGVycyBsaWtlIHNzQ3B1VXNlciBuZWdhdGl2ZSBvciB6ZXJvLCB3aGlsZSB0aGUgcmVhbCB2YWx1ZSBpcyBoaWdoZXIuIFRoZXJlZm9yZSB0aGUgY291bnRlcnMgc2hvdWxkIGJlIHRyYWNrZWQgYXMgdGhlIGxhcmdlc3QgaW50ZWdlciBhdmFpbGFibGUuCisKK2NvbW1pdCAyODAxYTIxMzlmMjcwMjFlMWFiMTVlMzYyZTJkM2Q2MjRmZmFhNDk0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDMxIDIyOjU1OjUzIDIwMTEgKzAxMDAKKworICAgIFBhdGNoICMzNDA2MzY0OiBGaXggdW5zdGFibGUgZGF0YSBmb3IgTmV0QlNELgorCitjb21taXQgMzQ5NTkxZDAzZTE3YTU1YjQzZWFjYzZhNjg3YjAyZmQ4ZDRlOTUyOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIE9jdCAzMSAwODo1OTozNyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHBlcmwgc3VwcG9ydCB3aXRob3V0IHN1cHBvcnQgZm9yIG9wYXF1ZSB0eXBlcy4KKworY29tbWl0IDZkMjY5MThhZjU1YWEzNjYyYTcyMDU0MmRlNzdiYmYzOWIwYTNlOTEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBPY3QgMjkgMDg6MzQ6MzMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERpc2FibGUgdGhlIHN1cHBvcnQgZm9yIGludGVnZXI2NCBpbiBwYXNzIHNjcmlwdHMgaWYgY29tcGlsaW5nIHdpdGhvdXQgb3BhcXVlLXNwZWNpYWwtdHlwZXMuCisKK2NvbW1pdCAyOWJmNjlkNzA0MjRmMzU5ZDljODdmMDdhOTY0YTA5OTQxNTY0OWE1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDEzOjAyOjI1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZF9zcWw6IEF2b2lkIHRoYXQgYSBsaW5rZXIgZXJyb3IgaXMgdHJpZ2dlcmVkIG9uIHN5c3RlbXMgd2hlcmUgbXlfcHJvZ25hbWUgaXMgbWlzc2luZyBpbiBsaWJteXNxbGNsaWVudCAoZS5nLiBGZWRvcmEgMTUgYW5kIDE2KS4KKyAgICAKKyAgICBUaGlzIGlzIGEgYmFja3BvcnQgb2YgY29tbWl0IDlmNjUzZjcuCisKK2NvbW1pdCAxMzk1MmY2YmVlOWY0MDg4NjdhYjZkMmZkZmRkZTRmMjg0MDc0OTU3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCAyNiAxNDowNToxNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBmcm9tIFNpZGRoZXNoIFBveWFyZWthcjogcHJvcGVybHkgY2xlYW4gdXAgb2xkIHJlcXVlc3RzIGluIGEgc3ViYWdlbnQgd2hlbiB3ZSByZWNvbm5lY3QgdG8gbWFzdGVyLgorICAgIAorICAgIEFuIHNubXAgc3ViYWdlbnQgbGlua2VkIGFnYWluc3QgbmV0LXNubXAtbGlicyBtYXkgY3Jhc2ggaWYgaXQgaGFuZGxlcyBhCisgICAgcmVzcG9uc2Ugd2hpY2ggaGFzIG1hZ2ljIHJlZmVycmluZyB0byBhbiBvbGRlciBkaXNjb25uZWN0ZWQgbWFpbiBzZXNzaW9uLiBUaGlzCisgICAgbWF5IGhhcHBlbiB3aGVuIHRoZSBzdWJhZ2VudAorICAgIGF0dGVtcHRzIHRvIGNsZWFuIHVwIG9sZCByZXF1ZXN0cyBvbiByZWNvbm5lY3Rpb24gb2YgdGhlIGRpc2Nvbm5lY3RlZCBtYXN0ZXIKKyAgICBzZXNzaW9uLgorCitjb21taXQgYWUwNTI0NzJiMjI3MjBkMDgzNjllODUxMjdkYjIxNDI0NWRmMmUzZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBPY3QgMjUgMTY6MTU6MTcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogZml4ZWQgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbHMuCisgICAgCisgICAgV2hlbiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIgZmFpbHMsIGl0IGZyZWVzIGl0cyByZWdpbmZvIC0+IG5zYWhyX0RFU1RST1kgKGFuZCBhbnkgb3RoZXIgZnVuY3Rpb24pIG11c3Qgbm90IGRlcmVmZXJlbmNlIGl0LgorCitjb21taXQgYzE5OWJmOTFiNjIzOWYyNmIyYWFiMzRlODU3NWUwZjBkZjljZGU5YgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjQgMTQ6MjU6MjggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHhmcywgamZzIGFuZCB2eGZzIGZpbGVzeXN0ZW1zIGFyZSBub3cgcmVjb2duaXplZCBpbiBoclN0b3JhZ2VUYWJsZQorCitjb21taXQgNzQ3ZmRjNzFlNjRkMDllMDgwOTI4ZWJiYjRkMDRjYmRlMzkwNjc5OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgNSAxNTo1Nzo1OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTG93ZXJlZCBzZXZlcml0eSBvZiAnZXJyb3IgZmluZGluZyByb3cgaW5kZXggaW4gX2lmWFRhYmxlX2NvbnRhaW5lcl9yb3dfcmVzdG9yZScgbWVzc2FnZS4KKyAgICAKKyAgICBUaGUgbWVzc2FnZSBpcyBzaG93cyB1cCB3aGVuIHNubXBkIGlzIHN0YXJ0ZWQgYW5kIHRoZXJlIGlzIGRpZmZlcmVudCBzZXQgb2YgbmV0d29yayBpbnRlcmZhY2VzIHRoYW4gaXQgd2FzIHdoZW4gc25tcGQgd2FzdCBsYXN0IHN0b3BwZWQuIFRoaXMgaXMgY29tbW9uIG9uIHBwcC1zZXJ2ZXJzIG9yIHZpcnR1YWwgaG9zdHMuCisKK2NvbW1pdCBjMTFhZGFhMTI5MTVhYmZlZTYyOWJiNmMwMjZjMjFmMjE4NWIyMTZlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDE3IDEwOjI0OjQ2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBBdm9pZCB0aGF0IGNvbXBpbGluZyB0aGUgaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiB3aXRoIHRoZSBNaW5HVyBnY2MgY29tcGlsZXIgdHJpZ2dlcnMgd2FybmluZ3MgYWJvdXQgInByYWdtYSBjb21tZW50Ii4KKworY29tbWl0IGIxN2E3MmE3OTM0ODNhZWU0YTViYjJmMmUyYzdmNGZkODY5ODE3ZTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTcgMTA6MjI6MjAgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IEF2b2lkIHRoYXQgdGhlIFBBQ0tBR0VfKiBtYWNyb3MgZGVmaW5lZCBpbiA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhdXNlIHRyb3VibGUgd2hlbiBpbmNsdWRpbmcgdGhpcyBoZWFkZXIgaW4gYSBwYWNrYWdlIHRoYXQgdXNlcyB0aGUgR05VIGF1dG90b29scy4KKworY29tbWl0IDIxMWRjYjQ5MzA2NTYxZTM1YmEzYzIxM2JlN2NmYTI1N2I0MGE4ZTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTU6NTI6NDMgMjAxMSArMDIwMAorCisgICAgQXZvaWQgdGhhdCBnY2MgNC42IGNvbXBsYWlucyBhYm91dCBzZXQgYnV0IG5vdCB1c2VkIHZhcmlhYmxlcworCitjb21taXQgNGM4M2I5MjI5YTc0NTRmMzRmNmZmNzVmNjllNjdlNDAzMGM0MTliNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCA3IDE1OjU4OjQ1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNldCB0aGUgcnBhdGggZm9yIGxpYnBlcmwuc28gaW4gbGlibmV0c25tcG1pYnMuc28gc3VjaCB0aGF0IHRoZSBkeW5hbWljIGxpbmtlciBjYW4gZmluZCBsaWJwZXJsLnNvIHdpdGhvdXQgcmVxdWlyaW5nIHRoZSB1c2VyIHRvIG1vZGlmeSB0aGUgZHluYW1pYyBsaW5rZXIgc2V0dGluZ3MuCisgICAgCisgICAgVGhpcyBjaGFuZ2UgaW4gYWdlbnQvTWFrZWZpbGUuaW4gaXMgbmVjZXNzYXJ5IG9uIHRoZSA1LjUgYnJhbmNoIGFuZAorICAgIGxhdGVyIGJ1dCBub3Qgb24gdGhlIDUuNCBicmFuY2guIFRoYXQgaXMgYmVjYXVzZSB0aGUgNS40IGJyYW5jaCB1c2VzCisgICAgYW4gb2xkZXIgdmVyc2lvbiBvZiBsaWJ0b29sIHRoYXQgcHJvcGFnYXRlcyB0aGUgcnBhdGggb2YgZGVwZW5kZW50CisgICAgbGlicmFyaWVzLiBUaGlzIGlzIGNhbGxlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY3kgdHJhY2tpbmcgaW4gdGhlCisgICAgbGlidG9vbCBtYW51YWwuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBwcmVzZW50IGluIGxpYnRvb2wgdmVyc2lvbiAxCisgICAgYnV0IG5vdCBpbiBsaWJ0b29sIHZlcnNpb24gMi4gRm9yIG1vcmUgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBhYm91dAorICAgIGR5bmFtaWMgbGlicmFyaWVzIGFuZCBycGF0aHMsIHNlZSBhbHNvIHRoZSBkb2N1bWVudCB3aXRoIHRoZSB0aXRsZQorICAgICJScGF0aElzc3VlIiBvbiB0aGUgRGViaWFuIHdpa2kgKGh0dHA6Ly93aWtpLmRlYmlhbi5vcmcvUnBhdGhJc3N1ZSkuCisKK2NvbW1pdCA4NjYwMzNkYjk5MDRmZmIxMjAzZjI4M2Y4MzgwOTJlNGNmNjhkZTZiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgT2N0IDYgMDc6MzM6MjcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFJlbW92ZSBzcHVyaW91cyAjZW5kaWYgdGhhdCBzZWVtcyB0byBiZSB0aGUgcmVzdWx0IG9mIGEgbWlzbWVyZ2UuCisKK2NvbW1pdCA5OTU2NDdjMGNmZTAwNDEyMjYyY2M1Nzk3YmRmYWU5ZDAwYjcwYzc2CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTU6NDQ6MzYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFJlbW92ZSB0aGUgdXNlIG9mIC1MIGZsYWdzIGZvciBpbnRlcm5hbCBsaWJyYXJpZXMgYXMgaXQgY29uZnVzZXMgbGlidG9vbC4KKworY29tbWl0IDkzZGMxMjM1YTBkYjU4ZmZkMjk2MTdjZmYwMGRjMTEyNjM3ODAyMDIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxMTozMTo0NiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSBtYWtlIGFwcHMgd29yayBhZ2FpbgorICAgIAorICAgIGFwcHMgaW5jbHVkZSBzbm1wdHJhcGQgYW5kIHRoYXQgcmVxdWlyZSB0aGUgYWdlbnQgbGlicmFyaWVzIGFzIHdlbGwuCisKK2NvbW1pdCBiYTQxNDg4ZWQ0NGNkMjNjMjU5NjNkNGZjNTZjNDc2ODUzYjJhYjU5CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTE6Mjk6MzMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFdoZW4geW91IHNheSBtYWtlIGxpYnMgeW91IGV4cGVjdCBhbGwgdGhlIGxpYnMgdG8gYmUgYnVpbHQuCisgICAgCisgICAgVGhpcyBpcyBkZW1vbnN0cmF0ZWQgYnkgdGhlIHNubXB0cmFwZCB0YXJnZXQgYXQgdGhlIHRvcCBsZXZlbCB3aGljaCBvYnZpb3VzbHkKKyAgICBleHBlY3RlZCBib3RoIGxpYnMgdG8gYmUgYnVpbHQgYW5kIHNvIGZhaWxlZCB0byBjb21waWxlIGJlZm9yZSB0aGlzIHBhdGNoLgorCitjb21taXQgMzA1N2M3M2UwOTM0NzNiZTQ2MjU0YmNkZmI0Y2E3ODhlNDMyZDFiOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMzAgMDc6MzI6NTIgMjAwOCArMDAwMAorCisgICAgTkVXUzogYnVpbGRpbmc6IFBBVENIOiAyMDkxMTU2OiBjb3JyZWN0bHkgZGVjbGFyZSBkZXBlbmRlbmNpZXMgaW4gTWFrZWZpbGUuCisgICAgJ21ha2UgLWogPE4+JyBzaG91bGQgd29yayBub3cuCisgICAgCisgICAgQmFja3BvcnQgdGhpcyB0byBWNS00IGFzIGl0IGlzIG5lZWRlZCBmb3IgY29ycmVjdCBvcGVyYXRpb24gaW4gdGhlIHNpbmdsZQorICAgIHRocmVhZGVkIGNhc2Ugb2YgbWFrZSBtaWJsaWIgYXMgd2VsbC4KKworY29tbWl0IDZlYWUzNDBmYTJhNjQwODY1OTI5ODJjYzUyNzM1YmMwMTQ4N2Q5NzgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBPY3QgMSAxOTozMzo1MCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogU2lsZW5jZSBsaWJic2QgMC4zLjAgbmFnZ2luZworICAgIAorICAgIElmIHlvdSBoYXZlIGxpYmJzZCAwLjMuMCBpbnN0YWxsZWQgdGhlbiB0aGVpciB2ZXJzaW9uIG9mIG5saXN0Lmggd2FybnMgYW5kCisgICAgdHJpZXMgdG8gbWFrZSB5b3UgaW5jbHVkZSBic2Qvbmxpc3QuaCBpbnN0ZWFkLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHdlIGRvbid0CisgICAgbmVlZCB0aGF0IGNvbXBhdGliaWxpdHkgbGlicmFyeSBhcyB3ZSBrbm93IGhvdyB0byBkbyBpdCBvdXJzZWxmIHNvIGl0IGJlY29tZXMKKyAgICBwdXJlIG5hZ2dpbmcuIFRoaXMgcGF0Y2ggYWRkcyBhIGRlZmluZSB0aGF0IGNoYW5nZXMgdGhlIHdhcm5pbmcgaW50byBhbgorICAgIGVycm9yIGFuZCB0aGVuIGZpZ3VyZXMgb3V0IHRoYXQgdGhlcmUgaXMgbm8gdXNhYmxlIG5saXN0LmggYW5kIGlnbm9yZXMgaXQKKyAgICBmb3IgdGhlIGZ1dHVyZS4KKworY29tbWl0IDg0OGY2MzAwZWZlMzg0OTJmYjQ1NDQ1MWEwMzBmMGI3ZTZmZjhjOWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMzAgMTA6NDE6NDQgMjAxMSArMDIwMAorCisgICAgcGVybC9TTk1QL1NOTVAueHM6IFVwZGF0ZSBlbWFjcyBtb2RlbGluZQorCitjb21taXQgZDU1YmQ0ZTA1NDlmMDNiNmZkMzI1NjJjMmFhN2ZlMzkyNzJhOWVmNworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIFNlcCAyOCAwNjo1NToxOSAyMDExIC0wNzAwCisKKyAgICByZW1vdmUgdGhlIHY1LjcgZnJvbSB0aGUgZnJvemVuIGxpc3QKKworY29tbWl0IDQ2ZWFjMDJlOWEyN2JmNGYzMDY4ZTc5NWNhYjg5MWYwNWE4NDg4NzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBTZXAgMjYgMjE6NDk6MjcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEF2b2lkIHRoYXQgc25tcGQgY3Jhc2hlcyBpZiBzdGFydGVkIG9uIGEgc3lzdGVtIHdpdGggYW5vdGhlciBPcGVuU1NMIGxpYnJhcnkgdmVyc2lvbiB0aGFuIHRoZSBvbmUgaXQgaGFzIGJlZW4gYnVpbHQgd2l0aC4KKworY29tbWl0IGM1NWY2MDhmMTZmMTYwZjVlNzlkYzA1N2Y4ODc4ZGVmNDYyOTczZTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgU2VwIDIyIDEwOjM1OjI0IDIwMTEgKzAxMDAKKworICAgIEZpeCB0aGUgY29kZSBmb3IgcG9wdWxhdGluZyB0aGUgdGFibGVfdGRhdGEgY2FjaGUsCisgICAgYW5kIGNsYXJpZnkgYXJlYXMgbmVlZGluZyBNSUItc3BlY2lmaWMgYWRkaXRpb25zLgorCitjb21taXQgYmJlMmMxOWEwMWVjZWMwMjRmNzQxZTJlNTQ3MDFhZTYyMTJmNGMzZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIFNlcCA0IDE0OjQ0OjM4IDIwMTEgKzAyMDAKKworICAgIFRoaXMgc2hvdWxkIGhhdmUgZ29uZSBvbmx5IHRvIG1hc3Rlci4KKyAgICAKKyAgICBSZXZlcnQgIkNIQU5HRVM6IGJ1aWxkaW5nOiBDb3JyZWN0IGRlcGVuZGVuY2llcyAtIHNpbmNlIGJmNzRmZWE2OWYyNGRjNmU4NWY5MDhmM2Y0MWQxNDI2YjJlMDk2ODggc25tcGNvbmYgaXMgbG9jYXRlZCBpbiBidWlsZGRpciwgbm90IHNyY2RpciIKKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IDllZmE0NjdhOTcyYmI2ZTFjN2ZiZGFmMmUyNzQyOWQyOWY0YWI4OWUuCisKK2NvbW1pdCA5ZWZhNDY3YTk3MmJiNmUxYzdmYmRhZjJlMjc0MjlkMjlmNGFiODllCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gU2VwIDQgMTQ6MDA6MTIgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IENvcnJlY3QgZGVwZW5kZW5jaWVzIC0gc2luY2UgYmY3NGZlYTY5ZjI0ZGM2ZTg1ZjkwOGYzZjQxZDE0MjZiMmUwOTY4OCBzbm1wY29uZiBpcyBsb2NhdGVkIGluIGJ1aWxkZGlyLCBub3Qgc3JjZGlyCisKK2NvbW1pdCA0MjJiMDgyYTk1OTNjYTljNjVhYWM0NDllNmQxMjhhOWU5N2U5NGZiCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDMwIDE5OjA2OjU2IDIwMTEgLTA3MDAKKworICAgIGFkZGVkIDcgYXMgYSByYyBzZXJpZXMgYnJhbmNoCisKK2NvbW1pdCA3MWMwZDc2NTA0OTM3MTA2MzFmYTA4ZDVkYzRkYWQ1MDFhOWFhNzcxCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDMwIDE2OjM3OjQxIDIwMTEgLTA3MDAKKworICAgIGRlYWwgcHJvcGVybHkgd2l0aCBpbnZlcnRlZCBlcnJvciBjYXNlcworCitjb21taXQgY2Y0Y2Y3ZjMyYWQ1OGYzMjZmZmVkNTA0OTQ1ODMyMzE2NDhkNzlkMgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEF1ZyAyNiAxMTowODowOSAyMDExIC0wNzAwCisKKyAgICBhZGRlZCAuZnQgYW5kIC5mdC4xIGZvciBmZWF0dXJlIGZpbGVzCisKK2NvbW1pdCA0MWIyY2RlMTlkMjIyMDliNDgzMjA3NjE0ZTAyNzQ4M2MzNzA2ODc3CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDMwIDExOjAzOjE1IDIwMTEgLTA3MDAKKworICAgIGF1dG8tZGV0ZXJtaW5lIHBhdGNoIGFyZ3VtZW50cyBpZiBwb3NzaWJsZSBmb3IgbnNwYXRjaHRyeQorCitjb21taXQgOTZiYjU4OWMyZTUwNTQ4OTBlOTg3MDVhYjVmNDMwOGFlNmExMzBiYgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAzMCAxMDoxMzowNiAyMDExIC0wNzAwCisKKyAgICBtYWtlIGl0IHNvIHRoZSBnaXQgY29tbWl0IGxpbmUgY2FuIGJlIGN1dC9wYXN0ZSB3aXRob3V0IGxpbmVicmVha3MKKworY29tbWl0IDZlNTRjNDEzMWFmNzMxZmY5MDQ2N2E3NWJjYzgxN2M5NTdmOGY3MmEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMzAgMDk6NTU6MTQgMjAxMSAtMDcwMAorCisgICAgZGVzY3JpYmUgdGhhdCBuc3JvbGx1cCBuZWVkcyB0byBiZSBydW4gbm93LgorCitjb21taXQgODZlZmVlMjM0MzJjY2IwZDJlMGM3MzZkMzRkYzEwNTExMzBjZGMwZgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBBdWcgMzAgMTA6NTI6MzAgMjAxMSArMDEwMAorCisgICAgQXBwYXJlbnRseSBJUklYIGhhcyBhIGRpZmZlcmVudCBBUEkgZm9yIHN0YXRmcworCitjb21taXQgZjk1YWEzMTM3N2Q1NzJiMDQ5YjBiMzE2ZGJiMTYzYmY3YWNhOTNkNQorQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEF1ZyAyOCAyMzoyNTo0MCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogYnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcgZmllbGRzIG1zZ19jb250cm9sL21zZ19mbGFncyBpbiBzdHJ1Y3QgbXNnaGRyIChiYWNrcG9ydCkKKworY29tbWl0IGVhOGJlZDc5ZTgxYzQyZTMzY2JmMzdjYTZmM2MwM2M1NDk5ODdiMjIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgMjUgMDY6NTY6MjIgMjAxMSAtMDcwMAorCisgICAgaW1wb3J0IHN0ZGVycgorCitjb21taXQgZmQ2ZDgwNGRjM2U3MDNjNDA1OWRiZTc3NTAwMWEzYmU5YjkzMzA5ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyAyNSAwNjo1NTozOCAyMDExIC0wNzAwCisKKyAgICB1c2UgPj4gdG8gcHJpbnQgdG8gc3RkZXJyCisKK2NvbW1pdCAxZjA4MmEzMWNkMTM4ZjFmNWUyN2JlNmQ5MGExZDU3OTBkYzBmZmU0CitBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDIzIDIzOjM1OjQyIDIwMTEgKzAyMDAKKworICAgIG1ha2Ugc3VyZSB0aGF0IF9LRVJORUwgaXMgZGVmaW5lZCB0byAxIHNvIHRoYXQgIiNpZiBfS0VSTkVMIiB3b3JrcyBvbiBzeXN0ZW1zIHRoYXQgbmVlZCBpdCAoZS5nLiBJUklYKQorCitjb21taXQgMjZiYjI0NzBjMTA2ZjgzNDQ0MmEyYWRiYzc2MTFiZjE2NjU3ZmJkZgorQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAyMyAyMzoyMjo0NCAyMDExICswMjAwCisKKyAgICBtYWtlIHN1cmUgdGhhdCBfS0VSTkVMIGlzIGRlZmluZWQgdG8gMSBzbyB0aGF0ICIjaWYgX0tFUk5FTCIgd29ya3Mgb24gc3lzdGVtcyB0aGF0IG5lZWQgaXQgKGUuZy4gSVJJWCkKKworY29tbWl0IDk2ZWEyZDFhOGViZmZiMzQ4NjczYTg2NWQ0ODZmMzFlNjM1ZTYyYmQKK0F1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBBdWcgMjEgMDE6NTE6NDkgMjAxMSArMDIwMAorCisgICAgYXV0b3JlY29uZgorCitjb21taXQgMjhiNTQwNzA1MTQ3NTNlOGQ4YWJiNzE4YjIyNGQ2NTdhYjdhOGFiOAorQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDE4IDExOjQ5OjU2IDIwMTEgLTA3MDAKKworICAgIENIQU5HRVM6IEJTRDogUEFUQ0ggMzM4Mzk2NTogZnJvbSB5YWJlcmF1bmV5YTogRml4IGlmLW1pYiBhZ2VudCBjb21waWxlIHdhcm5pbmdzIG9uICpCU0QKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGU2Y2Y4MjA2ZjBjNjc2NTAwMDFlMzRiNTI2YjM3ZjY0ZTRhNTkyOWMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgMTggMDk6NDY6MzMgMjAxMSAtMDcwMAorCisgICAgUGF0Y2ggZnJvbSBDbGF1cyBLbGVpbiBvbiAtY29kZXJzIGZvciBmaXhpbmcgbWFuIHBhZ2UgdHlwb3MKKworY29tbWl0IDZhODQxZDU2NTE4YTcyNzE5NmU2NmI1OWU3ZTViMzMwNGY1NGIwYTEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgMTggMDg6MzE6MDYgMjAxMSAtMDcwMAorCisgICAgY2hhbmdlZCBjbGllbnRhZGRyIHNvIGl0IHJlZ2lzdGVycyBhcyBwcmUtbWliIHRvIGJlIHBpY2tlZCB1cCBiZWZvcmUgdGhlIHRyYW5zcG9ydHMgZ2V0IGNyZWF0ZWQKKworY29tbWl0IDY1ODA1NTZjYzdiZDgzM2FmNzMxYjYyY2UxZWQyMDE3NTY0ZmU3ZWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgMTcgMTg6MDg6MDEgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogc25tcHRyYXBkOiBNYWtlIHRoZSBJUCBhZGRyZXNzIHRvIGhvc3RuYW1lIGNvbnZlcnNpb24gd29yaworCitjb21taXQgM2NiM2YxZWRlMzg4ZDg0ZTM5MmUxZDgxNWQ1OTk0YTRiZjBmMTBmOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEF1ZyAxNCAwNzo1OToyNSAyMDExICswMjAwCisKKyAgICBXaW5kb3dzLCBidWlsZC5iYXQ6IFJlc3RvcmUgb3JpZ2luYWwgYnVpbGQgYW5kIGluc3RhbGwgb3JkZXIuIEFwcGFyZW50bHkgdGhlIGNvcnJlY3QgbmV0c25tcC5kbGwgaXMgdXNlZCBkdXJpbmcgdGhlIFBlcmwgdGVzdHMgYnkgc2V0dGluZyBQQVRIIHByb3Blcmx5LgorICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYzFiNWEwMzBkOGYwNDg3NmNkNWI5YWYwMDhjODc5Y2M0NjhiMjEyZi4KKworY29tbWl0IDNjNzNiNDgzOGU2MDViMTUwYmMzMTczMTNmMTRlYjMzNDQ0NzI5ZjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMTc6Mzg6MjcgMjAxMSArMDIwMAorCisgICAgUmV2ZXJ0IHRoZSB0d28gbW9zdCByZWNlbnQgU05NUF9GUkVFKCkgY2hhbmdlcyAoY29tbWl0cyA0N2M4ZWYxYjg5YzZjY2I0MjQ3ZDk2MzM0Nzc5MjU5MDhjNjhjMWE1IGFuZCA3ZjQyZDBkOTMzMjA0ODQxNTIyNzE0MjdjYzk4MDhjYmRhNDliYmQwKS4KKworY29tbWl0IDNlNTBjM2UwMGU5ZjMyMWZiNzA4YmM1NzllYjRkYzFhMGYxZTdjNGQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMTE6MzE6NDAgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHBhc3NfcGVyc2lzdDogIEZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW50cm9kdWNlZCBpbiBjb21taXQgMzFmYTA3Y2Q5ZmZkZTQ2ZDQxZDJiNTgzOGMzZmM0ZDAxNTQ4YmZiNS4KKyAgICAKKyAgICBUaGUgZm9sbG93aW5nIHJhY2UgY29uZGl0aW9uIGNvdWxkIGhhcHBlbjoKKyAgICAtIEEgc3lzdGVtIGNhbGwgZmFpbHMgYW5kIGVycm5vIGlzIHNldCBhY2NvcmRpbmdseSBieSB0aGUgQyBsaWJyYXJ5LgorICAgIC0gU0lHQ0hMRCBoYW5kbGVyIGludm9rZXMgYSBzeXN0ZW0gY2FsbCB0aGF0IGZhaWxzIGFuZCBoZW5jZSBvdmVyd3JpdGVzIGVycm5vLgorICAgIC0gU0lHQ0hMRCBoYW5kbGVyIGxlYXZlcy4KKyAgICAtIG9yaWdpbmFsIGNvbnRleHQgY2hlY2tzIGVycm5vIGFuZCBmaW5kcyB0aGUgdmFsdWUgZnJvbSB0aGUgc3lzdGVtIGNhbGwgaW52b2tlZAorICAgICAgYnkgdGhlIFNJR0NITEQgaGFuZGxlciBpbnN0ZWFkIG9mIHRoZSBzeXN0ZW0gY2FsbCB0aGF0IGZhaWxlZCBvcmlnaW5hbGx5LgorICAgIAorICAgIE90aGVyIGZpeGVzIGluY2x1ZGVkIGluIHRoaXMgcGF0Y2g6CisgICAgLSBSZW5hbWVkIGRlaW5pdF9wYXNzX3BlcnNpc3QoKSBpbnRvIHNodXRkb3duX3Bhc3NfcGVyc2lzdCgpIHN1Y2ggdGhhdCB0aGlzCisgICAgICBmdW5jdGlvbiBnZXRzIGNhbGxlZCBkdXJpbmcgYWdlbnQgc2h1dGRvd24uCisgICAgLSBNYWRlIHN1cmUgdGhhdCBzaHV0ZG93bl9wYXNzX3BlcnNpc3QoKSBpcyBjYWxsZWQgYnkgdGhlIFdpbmRvd3Mgc25tcGQuZXhlIHRvby4KKyAgICAtIFdpbmRvd3M6IGF2b2lkIGNhbGxpbmcgQ2xvc2VIYW5kbGUoSU5WQUxJRF9IQU5ETEVfVkFMVUUpLgorICAgIC0gV2luZG93czogYXZvaWQgdGhhdCBjbG9zaW5nIGEgcGFzc19wZXJzaXN0IHBpcGUgdHJpZ2dlcnMgYSBjcmFzaC4KKyAgICAtIFdpbmRvd3M6IHBhc3NfcGVyc2lzdDogY2xvc2UgaGFuZGxlcyBvZiBmaW5pc2hlZCBwcm9jZXNzZXMuCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAorICAgIAlhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYworICAgIAl3aW4zMi9taWJfbW9kdWxlX3NodXRkb3duLmgKKworY29tbWl0IGUxNDdlNGI5Njc1NTIwN2RlMWNlMzA5OTBkNjdiNGI3Yzc2ZGQ0ODMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMDg6Mzk6MTQgMjAxMSArMDIwMAorCisgICAgVW5icmVhayB0aGUgV2luZG93cyBidWlsZC4gVGhpcyBpcyBhIGZvbGxvdy11cCBmb3IgY29tbWl0IDFlMTAwMGE4ODE1OTIxYjVlYzJlNzk5N2I1MzU5MmE1NDRiM2RmYzIuCisKK2NvbW1pdCBjMWI1YTAzMGQ4ZjA0ODc2Y2Q1YjlhZjAwOGM4NzljYzQ2OGIyMTJmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgQXVnIDEzIDA4OjEwOjMzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IGJ1aWxkaW5nIChidWlsZC5iYXQpOiBJbnN0YWxsIG5ldHNubXAuZGxsIGJlZm9yZSBydW5uaW5nIHRoZSBQZXJsIHJlZ3Jlc3Npb24gdGVzdHMgc3VjaCB0aGF0IHRoZSByZWdyZXNzaW9uIHRlc3RzIGFyZSBydW4gd2l0aCB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIG5ldHNubXAuZGxsLgorCitjb21taXQgMWU5ZDIwMDNiYWVkMjI3ZjY4YjY4NTI4ZjFlOTdlNmY1ZWE4NmMxYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEF1ZyAxMyAwODoxMDozMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBwZXJsIChidWlsZC5iYXQpOiBXaGVuIGluc3RhbGxpbmcgZGV2ZWxvcG1lbnQgZmlsZXMsIGluc3RhbGwgdGhlIFBEQiBmaWxlcyB0b28uCisKK2NvbW1pdCBhOGQ5NDAwN2UzMmQwMzcxMDY5MmM4ZjFiNDE3ZDViZGZlMzY1MGZhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgQXVnIDEzIDA4OjEwOjMyIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEZpeCBQZXJsIHJlZ3Jlc3Npb24gdGVzdCBmYWlsdXJlcworICAgIAorICAgIEFsbCBQZXJsIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcyBub3cgb24gTGludXggYW5kIG9uIFdpbmRvd3MgKE1TVkMpLgorCitjb21taXQgYjZkMGI0OTAxODFjNmRmOGMxMWVjZjE1NWYxZTZlYWYxMWIxZWM1OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEF1ZyAxMyAwODoxMDozMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBQZXJsIHJlZ3Jlc3Npb24gdGVzdHM6IERvbid0IGZhaWwgc2tpcHBlZCB0ZXN0cy4KKworY29tbWl0IGNhM2FjZjJiMDcwMzlkOTZhMTE3ZjA5MGY3ZWM3NmI2ZThiNTQxZTkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMDg6MTA6MzIgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogQWRkIFNOTVA6OmdldGVudigpIGFuZCBTTk1QOjpzZXRlbnYoKS4KKworY29tbWl0IDU2NzU5ZTVhZDUzN2YwMWI0YTUxZTdmZjk5OTRlYzRiNTVjMzIxMzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMDg6MTQ6NDYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQWRkIG5ldHNubXBfc2V0ZW52KCkuCisKK2NvbW1pdCA5ODQzZTViY2Y0NzI4NzdlODViMDMxYjVlNWRhZmFhOWQ1ZmM2M2M1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgQXVnIDEzIDA4OjEwOjMyIDIwMTEgKzAyMDAKKworICAgIGxvY2FsL3Bhc3NfcGVyc2lzdHRlc3Q6IGRvY3VtZW50IGhvdyB0byB1c2Ugb24gV2luZG93cworCitjb21taXQgNjA1Nzg2NmI3M2EwMjI3NzFlOTBlOTk2N2RkMjViZGM3MTkyZmJkYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEF1ZyAxMyAwODoxMDozMiAyMDExICswMjAwCisKKyAgICBTZXQgZXhlY3V0ZSBmbGFnIG9uIGxvY2FsL3Bhc3NfcGVyc2lzdHRlc3Qgc3VjaCB0aGF0IHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhhdCBmaWxlIHdvcmsKKworY29tbWl0IGMyZGFmNTk0MGYyMWExM2U4OTg5ZGQwNTViMTdmMzE4MTExMmY4NTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMDg6MTA6MzIgMjAxMSArMDIwMAorCisgICAgLmdpdGlnbm9yZTogRml4IGEgc3VwcHJlc3Npb24gcGF0dGVybgorCitjb21taXQgMWYwYTkyOGEyOTEzY2ZhN2Y1Y2VhYWY0Njk2YzY5ZmJkYzY4NzYyMQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEF1ZyAxMiAwOTowOToxMSAyMDExIC0wNzAwCisKKyAgICBhZGRlZCB0aGUgbWlzc2luZyAtZSBvcHRpb24gdG8gdGhlIGNyZWF0ZVVzZXIgZG9jcworCitjb21taXQgMWUxMDAwYTg4MTU5MjFiNWVjMmU3OTk3YjUzNTkyYTU0NGIzZGZjMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEF1ZyAxMSAxNTo0NjozMiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogTmV0LVNOTVAgUGVybCBtb2R1bGVzIGJ1aWxkIGFnYWluLgorCitjb21taXQgOTdkNjQzMmY5NWUxY2RjZjZmZDg1ZTdjYTFkMGM1NTU3ZWI2ZDkxOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEF1ZyAxMSAxODoxNjo0NCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBwZXJsOiBNYWtlIHN1cmUgdGhhdCB0aGUgY29uc3RhbnQgU05NUF9ERUZBVUxUX1JFVFJJRVMgaXMgcmVjb2duaXplZC4KKyAgICAKKyAgICBDSEFOR0VTOiBwZXJsOiBTTk1QIG1vZHVsZTogQWRkIGNvbnN0YW50cyBORVRTTk1QX0NBTExCQUNLX09QX1JFQ0VJVkVEX01FU1NBR0UgYW5kIE5FVFNOTVBfQ0FMTEJBQ0tfT1BfVElNRURfT1VULgorICAgIAorICAgIFdoZW4gdGhlIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBhcmUgYnVpbHQgb24gV2luZG93cyB3aXRoIE1TVkMgb3IgTWluR1cgaXQKKyAgICBpcyBwb3NzaWJsZSB0aGF0IGVhY2ggdGhlc2UgYXJlIGxpbmtlZCB3aXRoIGFub3RoZXIgdmVyc2lvbiBvZiB0aGUgTVNWQworICAgIHJ1bnRpbWUgbGlicmFyeSB0aGFuIHRoZSBQZXJsIGludGVycHJldGVyIGl0c2VsZi4gSW4gdGhhdCBjYXNlIHRoZSAiZXJybm8iCisgICAgdmFyaWFibGUgdXNlZCBpbnNpZGUgLnhzIHNvdXJjZSBmaWxlcyBpcyBhbm90aGVyIHZhcmlhYmxlIHRoYW4gdGhlICQhIHZhcmlhYmxlCisgICAgaW4gLnBtIGZpbGVzLiBPcjogYXNzaWdubWVudHMgdG8gImVycm5vIiBpbiBhIC54cyBmaWxlIGRvIG5vdCBtb2RpZnkgdGhlICIkISIKKyAgICBQZXJsIHZhcmlhYmxlIFRoaXMgcGF0Y2ggYXZvaWRzIHVzaW5nICJlcnJubyIgYnkgbW9kaWZ5aW5nIHRoZSBkaWZmZXJlbnQKKyAgICBjb25zdGFudCgpIGZ1bmN0aW9ucyBzdWNoIHRoYXQgdGhlc2UgcmV0dXJuIGEgdHdvLWVsZW1lbnQgYXJyYXkgaW5zdGVhZCBvZgorICAgIHJldHVybmluZyBhIHNjYWxhciBhbmQgc2V0dGluZyBlcnJuby4KKworY29tbWl0IDc2OTA4OTRiN2I4NDY0ZjA1YzdjOTAyYmQ3Y2Y3NTFjYzI2OTk3N2EKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMTAgMDk6MjY6MzcgMjAxMSAtMDcwMAorCisgICAgZG9uJ3QgYXNzZXJ0IG9uIGEgZG91YmxlIGluaXQ7IGp1c3QgZG9uJ3QgZG8gaXQgdHdpY2UKKworY29tbWl0IDQ3YzhlZjFiODljNmNjYjQyNDdkOTYzMzQ3NzkyNTkwOGM2OGMxYTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgMTAgMTY6NDQ6MzYgMjAxMSArMDIwMAorCisgICAgU05NUF9GUkVFKCk6IGNhc3QgYXJndW1lbnQgdG8gKHZvaWQgKikgYmVmb3JlIHBhc3NpbmcgaXQgdG8gbmV0c25tcF9mcmVlKCkKKworY29tbWl0IDAyMjAzOTJkODk5YTljYWI3MDFmNzRhZjEyMDMwYmIxZDRjYzVlMmUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKdWwgMSAxMzowMjoxNSAyMDExICswMjAwCisKKyAgICAuZ2l0aWdub3JlOiBJZ25vcmUgKi5leGUgZmlsZXMgZ2VuZXJhdGVkIGJ5IHRoZSBXaW4zMiBidWlsZAorCitjb21taXQgMDlhNjYxZDVkYzYwYzczMGZlMDM4NGIwMmVkNjcyODMwZWY3NGUzMAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyA4IDE1OjEyOjU1IDIwMTEgLTA3MDAKKworICAgIGZpeCBDKysgY29tbWVudHMKKworY29tbWl0IDY5Y2I0MmE0ZWEwNTgzY2U2ZjVmZjhmODM4MzUxNmQzNGJjNGMzNDQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgOCAxNToxMjo1NSAyMDExIC0wNzAwCisKKyAgICBmaXggQysrIGNvbW1lbnRzCisKK2NvbW1pdCA0NDdkZGM2NmQ5MGRkOWU1YzMxMDViMjY4YjZhNjNiZmM1ODBiOTI0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEF1ZyA4IDIyOjAzOjU4IDIwMTEgKzAxMDAKKworICAgIERlZmluZSBfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIHRva2VuCisgICAgKGFzIHBlciBBbGV4JyBidWlsZCBpbnN0cnVjdGlvbnMpCisKK2NvbW1pdCBiMGE2MmViMTk3NjNhYjRmMGI3NzY0MzAyNDJhNjExN2NjYWU1ZGQzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEF1ZyA4IDIxOjU5OjE3IDIwMTEgKzAxMDAKKworICAgIERlZmluZSBfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIHRva2VuCisgICAgKGFzIHBlciBBbGV4JyBidWlsZCBpbnN0cnVjdGlvbnMpCisKK2NvbW1pdCBmZmEwNWIwNTFhYzNlMmIxOTcxOTVhOTk4OWNjN2E5MWZlOGQ5MjgyCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXVnIDggMTM6NTU6MzggMjAxMSAtMDcwMAorCisgICAgYSBuZXcgbWFjcm8gbnNhdXRvY29uZiB0byBydW4gdGhlIHJpZ2h0IHZlcnNpb24KKworY29tbWl0IGI0NTE2MDdkY2EwMTVjMTExZTk2ZmRmZWIyZGRiMDY2MWZiNGY3MjQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXVnIDggMjE6MjA6MzIgMjAxMSArMDEwMAorCisgICAgRml4IGNhcGl0YWxpc2F0aW9uIG9mIE5ldC1TTk1QCisKK2NvbW1pdCBjOTQ4MTMwNDRhNGM0YTYwOGU5OGU4MDIyMzA3NWM2ZmFmMDRlZTExCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gQXVnIDggMjE6NTY6MTUgMjAxMSArMDIwMAorCisgICAgUmV2ZXJ0ICJDSEFOR0VTOiBXaW5kb3dzOiBBdm9pZCB0aGF0IGlmIHRoZSBOZXQtU05NUCBQZXJsIG1vZHVsZXMgaGF2ZSBiZWVuIGJ1aWx0IHdpdGggYW5vdGhlciB2ZXJzaW9uIG9mIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIHRoYW4gQWN0aXZlUGVybCB0aGF0IHVzaW5nIG9uZSBvZiB0aGVzZSBQZXJsIG1vZHVsZXMgdHJpZ2dlcnMgYSAiRnJlZSB0byB3cm9uZyBwb29sIiBjcmFzaC4gVGhpcyByZWdyZXNzaW9uIHdhcyBjYXVzZWQgYnkgY29tbWl0IDNiMTRjNTljZjgyNzhkNDEwMjA3ZmY0MmRlYmRhMjYzNjQyNmE0NjggKHRoZSBuZXRzbm1wX2ZyZWUoKSBpbnRvIFNOTVBfRlJFRSgpIGNoYW5nZXMgaW4gdGhlICoueHMgZmlsZXMpLiIKKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IDdmNDJkMGQ5MzMyMDQ4NDE1MjI3MTQyN2NjOTgwOGNiZGE0OWJiZDAgYmVjYXVzZSB0aGF0IGNvbW1pdCBpcyBub3Qgc3VpdGFibGUgZm9yIHRoZSA1LjQgYnJhbmNoLgorCitjb21taXQgNThjYTczZDAzNTg5YjA5NzRkOTI2YmRmZGMzOTI3MDk5ZmJhMjExNQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyA4IDExOjI0OjA5IDIwMTEgLTA3MDAKKworICAgIGRpc3BsYXkgdGhlIGJyYW5jaCB3ZSdsbCBjb21taXQgdG8KKworY29tbWl0IDFkMWJmZDVmNDUxYzJiYzQyMGI3MTBjOThjNzlkMDRiZGVmNDM5MWIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgOCAxMToxMDo1MiAyMDExIC0wNzAwCisKKyAgICBuc3NmcGF0Y2hhcHBseTogc3BsaXQgdGhlIGRpc3BsYXllZCBnaXQgY29tbWl0IGNvbW1hbmQgaW50byBtdWx0aXBsZSBzZWdtZW50cworCitjb21taXQgZDM3M2M0ZmQ4YzM5MWFmZTBiOWUwMmE2MGI1Y2Q2NjFiYzkwMzlkYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEF1ZyA4IDE3OjIzOjQzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeCBhIGNyYXNoIHRoYXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGNhbGxpbmcgX21pYmluZGV4X2FkZCgpIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCBub3QgZXF1YWwgdG8gLTEuCisKK2NvbW1pdCA4Y2E3ZmYxZTY5MmNhZWM0MTg2Yjc4OGM5YWUyZDI3YmUyMTMyOTBmCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXVnIDggMTA6MzM6NTYgMjAxMSAtMDcwMAorCisgICAgZml4IGFub3RoZXIgZnVuY3Rpb24gdHlwbworCitjb21taXQgNTU2ZTkzOGU4MmE3ZWUyYzEwZmE4YzBiN2M3YTM0ZTllNjVhNmQ1YQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyA4IDEwOjA1OjIwIDIwMTEgLTA3MDAKKworICAgIGZpeCBmdW5jdGlvbiBuYW1lIHR5cG8KKworY29tbWl0IDk2OWU4NjZhZjk4M2Q5ODZhMjZiZWJjYTg1ZmVmMGY2YzYyM2NlMjYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgOCAwOTo1Njo0MyAyMDExIC0wNzAwCisKKyAgICBtYWtlIG5zcHVsbC9uc3B1c2ggY2hlY2sgZm9yIGEgY2xlYW4gcmVwbworCitjb21taXQgN2U2ZmRjOGIyYTNkODZhNzk1NDM2NzM0MzUzNzE2MjFhMjg1ODczNworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyA4IDA5OjU2OjEzIDIwMTEgLTA3MDAKKworICAgIG5ldyBmdW5jdGlvbiAibnNtYWtlYWxsIiB0byB0ZXN0IGJ1aWxkaW5nIG9uIGV2ZXJ5IGJyYW5jaAorCitjb21taXQgZTI1YmU3YzgyZDU1NDVkODhhYmVhMTBlNGUyNTVjOTJiZWQzZGU2ZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyA4IDA5OjUzOjAzIDIwMTEgLTA3MDAKKworICAgIGRlZmF1bHQgdG8gbWVyZ2UKKworY29tbWl0IGJjYjgxYjc5NmRkNmE5MjE5NWQ2ZGIxMzE3N2FkMzBmMDVmYzYzZjcKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgOCAwOTo1MToyNiAyMDExIC0wNzAwCisKKyAgICBzZXBhcmF0ZSBuc3N5bmMgaW50byBuc3B1bGwgYW5kIG5zcHVzaAorCitjb21taXQgN2Y0MmQwZDkzMzIwNDg0MTUyMjcxNDI3Y2M5ODA4Y2JkYTQ5YmJkMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEF1ZyA4IDA5OjUwOjUxIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IEF2b2lkIHRoYXQgaWYgdGhlIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBoYXZlIGJlZW4gYnVpbHQgd2l0aCBhbm90aGVyIHZlcnNpb24gb2YgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gdGhhbiBBY3RpdmVQZXJsIHRoYXQgdXNpbmcgb25lIG9mIHRoZXNlIFBlcmwgbW9kdWxlcyB0cmlnZ2VycyBhICJGcmVlIHRvIHdyb25nIHBvb2wiIGNyYXNoLiBUaGlzIHJlZ3Jlc3Npb24gd2FzIGNhdXNlZCBieSBjb21taXQgM2IxNGM1OWNmODI3OGQ0MTAyMDdmZjQyZGViZGEyNjM2NDI2YTQ2OCAodGhlIG5ldHNubXBfZnJlZSgpIGludG8gU05NUF9GUkVFKCkgY2hhbmdlcyBpbiB0aGUgKi54cyBmaWxlcykuCisKK2NvbW1pdCBhM2I4NjU0YTIzMmM1NjNiYzk3Y2M5OTI1Y2Q5ODU5MGEzMGM1YmM1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gQXVnIDggMTc6MjQ6MTggMjAxMSArMDIwMAorCisgICAgRml4IGEgcmVjZW50bHkgaW50cm9kdWNlZCBNaW5HVyBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCBhMGRkM2NhZjI1OTI2ZTQzNDY1NzE4YmY0MTdhNDY0YzJmYjM2MzY2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gQXVnIDcgMTA6MTc6MDEgMjAxMSArMDIwMAorCisgICAgZmluZCBcKCAtbmFtZSAnKi5bY2hdJyAtbyAtbmFtZSAnKi5pbicgLW8gLW5hbWUgJyouZHNwJyBcKSAtcGVybSAtdSt4IHwgeGFyZ3MgLXIgY2htb2QgYS14CisKK2NvbW1pdCBhOWEyNTI1MjJmYmU3ZGMxZWQ3MGZmMjcyMWE0ZjgxNTgzYzBkOTJhCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgQXVnIDUgMTA6MjA6NTEgMjAxMSAtMDcwMAorCisgICAgbWFrZSByb2xsdXAgYW5kIHN5bmMgc3VwcG9ydCAtLXJlYmFzZSBhbmQgY2hhbmdlIHRoZSBkZWZhdWx0IGJhY2sgdG8gbWVyZ2UKKworY29tbWl0IDk2ZjVmNDdhZDQyNzk3MmQ4ZDlhNmNlMDZjNWUxNjE0NzM2MjA4M2IKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBdWcgNSAwOToyNToyNSAyMDExIC0wNzAwCisKKyAgICB0cnkgYSBtdWx0aXBsZSBicmFuY2ggcHVzaAorCitjb21taXQgMGRiYzg2OWZlYzA3ZDhlOTBkYmQxYzk1NDkzZWU3Y2JjNjIzYzk1YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEF1ZyA1IDEyOjQwOjMxIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IGJ1aWxkLmJhdDogR2VuZXJhdGUgUERCIGZpbGVzIGluIHJlbGVhc2UgbW9kZS4KKyAgICAKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBidWlsZC5iYXQ6IFdyaXRlIFBEQiBmaWxlcyB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHRoZSBpbnRlcm1lZGlhdGUgZGlyZWN0b3J5LgorCitjb21taXQgNWIwMjkxZjkxZWQ5NDgzNWY4YWU3ZDk0MzZiMTVmNDBhZmIxOTQ3MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEF1ZyA1IDEzOjE3OjE5IDIwMTEgKzAyMDAKKworICAgIC5naXRpZ25vcmU6IEFkZCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5kZWYgYW5kIHBlcmwvU05NUC90CisKK2NvbW1pdCAyZjhkNGY1Nzk2Y2JjMWM3ZTk2N2FjZGFhODAxOWIyNGYxNTIwYTM2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgQXVnIDUgMTI6MDI6NTEgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogQXZvaWQgdGhhdCBydW5uaW5nIHRoZSBQZXJsIHJlZ3Jlc3Npb24gdGVzdHMgbWFrZXMgc25tcGQgY3Jhc2gKKworY29tbWl0IDBjNzUwN2ExZTAxMDFmNGIxMzVhM2VkOGE5NjE2MzViODcwOTNmMWEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgNSAxMDo1NzozMyAyMDExICswMjAwCisKKyAgICBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgLSByZXZlcnQgY29tbWl0IGQyYzQ3NjhiZDJlZmI0ODY2NDQzNGE4MzE0MjVjMmRkYTg1ZDcxMzMgKENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20geWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlKS4KKworY29tbWl0IDliN2ZmNGFiZmM5NTI5YmI5ZTE4YTNiODc0MjAxNTIwYmMwZTcxNDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgNSAxMTowNzo1NSAyMDExICswMjAwCisKKyAgICBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQgYmY3MTc4YjBiMjI1ODdkNDNkMWE4MGMyNjljZDIxNmJkNTkzMDIxNCAoYWdlbnQ6IGNoYW5nZSB0eXBlIG9mIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdG8gbG9uZykKKworY29tbWl0IDAzMDQ5ZTEwMzZjMmMwNmNiZDZlNWVkNWZlMDg0OTk5ZDU0NjhhNWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgNSAxMDo1Njo0OCAyMDExICswMjAwCisKKyAgICBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQgMGU2ODQyZmUwODBjZWM4NTNiMDhjZDIzMjMwMTVhYmFiYzM4MWNlMSAoQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5KS4KKworY29tbWl0IDNhYTk0OWZiZGZjMWE5NGE4MzQwYWQ4YmFmOGIzMTQ3NTZhMGJiOWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgNSAxMDoyNjoxNSAyMDExICswMjAwCisKKyAgICBXaW4zMiBtYWtlZmlsZSB3aGl0ZXNwYWNlIGNsZWFudXAKKworY29tbWl0IDk0MzkzMGUxZTEyNDM4NWZkOTQ3MzhiNmRjZGEzN2QyOWRjN2FjN2YKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAxMDo0MTo0MSAyMDExIC0wNzAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0ggMzMyNDc2OTogZnJvbSBoYXJkYWtlcjogRml4IC1XdW51c2VkIHdhcm5pbmcKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDkwYzBlNzVmM2UwZGU3M2Q2YWFhYjNlM2Q3MTQ2ZjE4YThmOWUxODcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBBdWcgNCAxOToxMjoyNCAyMDExICswMjAwCisKKyAgICBzbm1wdXNtOiBGaXggcmVjZW50bHkgaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5ncworCitjb21taXQgMmRkOWVkMDg1OGRhYTk4MmI0MTYwYjRkMmE3ZDVhMmI4MDk0NDE3MQorQXV0aG9yOiBTdHVhcnQgSGVuZGVyc29uIDx0MGp3MmZ1MGttZ0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAxMDowNjo1NyAyMDExIC0wNzAwCisKKyAgICBDSEFOR0VTOiBvcGVuYnNkOiBQQVRDSCAzMzU3OTMyOiBmcm9tIHQwancyZnUwa21nOiBDbGVhbmluZyBpbiBtZW1vcnlfbmV0YnNkLmMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGY4ZjZmNzA3MTY0NGI3ZTc3MWRmOGU2MmE5MzIyN2NmOTYwYTA0ZTcKK0F1dGhvcjogVmxhZGltaXIgS29uZHJhdGlldiA8d3VsZjIwMDFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDQgMDk6NTY6MjkgMjAxMSAtMDcwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDMzODYxNDc6IGZyb20gd3VsZjIwMDE6IGZpeCBVQ0QtU05NUC1NSUI6OmRza1VzZWQKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDIxMDFiYjJkN2FkNmRiMDM4Yzc1NWFhOTE5M2M4YWNlMGRiZDRmNTgKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwOToyODowNiAyMDExIC0wNzAwCisKKyAgICBhZGRlZCB0aGUgbWlzc2luZyBmcmVlYnNkOS5oIGZpbGUgZnJvbSB0aGUgZnJlZWJzZDkgcGF0Y2gKKworY29tbWl0IGI2YTQ4MWZhMzA2Mjg5M2U1ODliZjYxNjNjOWQwNmQwZjIwNTMyNDAKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwOToyNzowNSAyMDExIC0wNzAwCisKKyAgICBpZ25vcmUgKi5vcmlnIGFuZCAqLnJlagorCitjb21taXQgY2M1MTM0ZTUzZDFjMjMzZGM0MWUzMWZiYjc4ZmFhYjA5OGYwOTM2MQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA5OjI2OjQ0IDIwMTEgLTA3MDAKKworICAgIGhlbHAgb3V0cHV0IGRlc2NyaWJlcyByZWJhc2UgdnMgbWVyZ2UgYmV0dGVyCisKK2NvbW1pdCBiMzcyZTVhYjMwYWExNTU3NDFlOTRkZjIyZTA3NTI1MzVjNTllNGJiCitBdXRob3I6IFN0dWFydCBIZW5kZXJzb24gPHQwancyZnUwa21nQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA5OjIyOjI4IDIwMTEgLTA3MDAKKworICAgIENIQU5HRVM6IG9wZW5ic2Q6IFBBVENIIDMzNTc5Mjc6IGZyb20gdDBqdzJmdTBrbWc6IFJlY29nbmlzZSBvcGVuYnNkNQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgMDU0OGE0ZTk3YjJhMWYwMzk5ZTU4YzRlZmMwMDRjOTQ5NzM5OGNkNgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA5OjIyOjE1IDIwMTEgLTA3MDAKKworICAgIGZpeCB3aGVyZSBhcmd1bWVudHMgYXJlIHNldAorCitjb21taXQgM2IzNzgwYmNhOWFkZWViZjRlZjc1MDhhZWU2YjhlYmNiOTRmNjU2YworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA5OjIwOjQwIDIwMTEgLTA3MDAKKworICAgIHNwbGl0IG5zc2ZwYXRjaGFwcGx5IGludG8gdHdvIHBhcnRzOiBhcHBseSBhbmQgY29tbWl0aW5nCisKK2NvbW1pdCAwNDIyNTE0YTYyYmNhYWU2MDA1MDE3ZDdlOWVkNDg1MDc1ZmU3MDFjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDQgMDk6MTU6MjUgMjAxMSAtMDcwMAorCisgICAgcGF0Y2ggdXNpbmcgLU4KKworY29tbWl0IGRjNzU1YTZhZWI5YjljODg5NzI3ZDlmYzg0MmZjODlmNzI5ZTZlYzAKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwODozMzoyNSAyMDExIC0wNzAwCisKKyAgICBhZGRlZCBzcGFjaW5nIHRvIG1hdGNoIHRoZSBsYXRlciBicmFuY2hlcworCitjb21taXQgN2I3MjZlMTAzYzE5NjBmNGM4NjAzODU5YzlhOGQ4YWE4YzQwNDUyMAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA4OjMyOjIzIDIwMTEgLTA3MDAKKworICAgIHJlbW92ZWQgYWNjaWRlbnRpYWxseSBkdXBsaWNhdGVkIGNvZGUKKworY29tbWl0IGVjYmFiMGE5OGEwMmZkZTZiYmNhN2RkMzcwYmNkOWMzY2E3NmFmZmUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwODoyNzo0MSAyMDExIC0wNzAwCisKKyAgICBuc3N5bmMgc3VwcG9ydHMgLS1tZXJnZSBub3cKKworY29tbWl0IGU3ZGQxYzQzN2FmZTZlMjZhNTVhYTc3MmQ0NjgwMTI2NTU3NDFkMzEKK0F1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA4OjIzOjIyIDIwMTEgLTA3MDAKKworICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20geWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBjNTNkOGMzNTI1ZjU5MGYyMjEzZDM1YjBkYTk0MTIzODYyZjNlMzY2CitBdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwODoxOToxNiAyMDExIC0wNzAwCisKKyAgICBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzA4OiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCByZWNlbnQgaGVhZGVyIHNodWZmbGluZworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgM2I4YzhiODUwODVhYWUyZDFhMWM3Y2EzNWU3ZDA2NmQzZDc0ZmE5ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA4OjE1OjE3IDIwMTEgLTA3MDAKKworICAgIGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworCitjb21taXQgNzEwMGFlZGZmZDk4Y2RhNGIwNTE2NGJjY2YxNzg3NjAyMDE5NmU3OQorQXV0aG9yOiBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDQgMDg6MTI6MDkgMjAxMSAtMDcwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5CisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBkMmM0NzY4YmQyZWZiNDg2NjQ0MzRhODMxNDI1YzJkZGE4NWQ3MTMzCitBdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwODoyMzoyMiAyMDExIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgZDE5YjhmY2EyMzg0MDc3ZjczMmEzMGYyOTQ2YWIwYzAzYmMwZTczOAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA4OjE1OjE3IDIwMTEgLTA3MDAKKworICAgIGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworCitjb21taXQgMGU2ODQyZmUwODBjZWM4NTNiMDhjZDIzMjMwMTVhYmFiYzM4MWNlMQorQXV0aG9yOiBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDQgMDg6MTI6MDkgMjAxMSAtMDcwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5CisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCAyNTk4OGJlODM2OTI0YTMzMDIwMTEzYzk0YWEwMjYxNGQxZGJmMWJlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDQgMDc6MzY6MzYgMjAxMSAtMDcwMAorCisgICAgYXV0b2NvbmYKKworY29tbWl0IDRkYjZiNjQ1MDlkYzM1MDgzOWQ1OTZlMzI1MDRiMmQ4MGNhMGM3YjAKK0F1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA3OjM2OjEwIDIwMTEgLTA3MDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBQQVRDSCAzMzgzOTQ5OiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggYXV0b2NvbmYgdGVzdHMgZm9yIHN5cy9tYnVmLmgKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGYzYmM1NTE4NGQ5NmM1OGRjZmQ1ODk1Mzc5NmMxMGY3MzU0ZGQ0YTcKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwNjo1NDoyMiAyMDExIC0wNzAwCisKKyAgICBwcm9tcHQgZm9yIHBhdGNoIGFuZCBhbiBhcmVhLCBhbmQgdXNlIHRoZSBwcm9wZXIgQ0hBTkdFUyBsaW5lIGZvcm1hdAorCitjb21taXQgYWQ2OTZiYTEyNDlkM2M0YmMxMmMwZWIzODQ4MWZmMGZjNDMzZjhhMQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA2OjQyOjQyIDIwMTEgLTA3MDAKKworICAgIFVzZSBmZXRjaCAtLWFsbCBhbmQgcmViYXNlIGFzIHN1Z2dlc3RlZCBieSBCYXJ0IGZvciBzcGVlZCBpbXByb3ZlbWVudHMKKworY29tbWl0IDQ0OTY5YjRlNTdjMjcxOTRlNWJkMzU3YmM0NTI3NWZlYjg2OTVkMjIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKdWwgOCAyMDo1MjoyNSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogRml4IHRoZSBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIHdpbkV4dERMTCBzb3VyY2UgY29kZSBhbmQgdGhhdCBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSBjaGFuZ2Ugb2YgdGhlICJvaWQiIHR5cGVkZWYgZnJvbSB1aW50MzJfdCB0byB1X2xvbmcuCisKK2NvbW1pdCBlYTU4YjY3YjRmMzE4YWNmMWY5ZTg1MjU4MmJjY2FkNDdiNGQ4ZTY3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSnVsIDggMjA6NTI6MjUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IHdpbkV4dERMTDogSW52b2tlIFNubXBVdGlsT2lkRnJlZSgpIGJlZm9yZSBTbm1wVXRpbE9pZENweSgpLiBJdCdzIG5vdCBjbGVhciB5ZXQgd2h5IHRoZSBvcmlnaW5hbCBjb2RlIGRpZCBub3QgbWFrZSBzbm1wd2FsayB0cmlnZ2VyIGEgbWVtb3J5IGxlYWsuCisKK2NvbW1pdCA4YTAxZWM2NDIzZDQwMGM0YTEzY2NhYzY4YTM3OTFkMDIxOGEwODg1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgQXVnIDQgMTE6MTk6MTcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogTWFrZSBsaW5raW5nIHdpdGggcmVjZW50IE9wZW5TU0wgYmluYXJpZXMgc3VjY2VlZC4KKworY29tbWl0IGUyMWVlZjJmYzVjZmRjMTIwMDQ3OTExOGEyYzViMjlhNzBiMGRmNjAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBBdWcgNCAwODo1Mjo0MyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogQXZvaWQgdGhhdCBhIE1JQiB3YWxrIG9uIHRoZSBob3N0IHJlc291cmNlcyBNSUIgdHJpZ2dlcnMgYSBjcmFzaCBvbiBGZWRvcmEgMTUKKworY29tbWl0IGQ4YjIwNTJhMDM1OWFkOWQxYTY4ZDhkNTg3YmM2YmUxNTYxNThkMjAKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMyAxMTowMDozMSAyMDExIC0wNzAwCisKKyAgICBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0IG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKK2NvbW1pdCA0ZWVhOWVlMzhmMDZlMDAwYTk1ZGMyMDlkMGE3MWNlNjBkYTQ5NGI5CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDMgMTA6NTY6MTQgMjAxMSAtMDcwMAorCisgICAgYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKKworY29tbWl0IDI4NGY1ZmI3OWUwNTZhMjcyZjczYjkwOTM3ZDdiZjA1N2MyYWYwMjEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMyAxMTowNjoyMyAyMDExIC0wNzAwCisKKyAgICBhZGRlZCBhIGNvbW1lbnQKKworY29tbWl0IDhjMDQzMmE3NGZlZGY4YTEzODVjOGFkMGZmMWZiNDI5YTI4ZWFiOTkKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMyAxMTowMDozMSAyMDExIC0wNzAwCisKKyAgICBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0IG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKK2NvbW1pdCBjYTNhZDNhMjhmODFmNTlkZmZhM2RiYjgwOWE3NzAxNDcyNDFlM2U1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDMgMTA6NTY6MTQgMjAxMSAtMDcwMAorCisgICAgYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKKworY29tbWl0IDJmYTdkODdkMzk3OWVjMGZiYjgzNWJjZmZmODk4ZTZiZWMyYWJiZDkKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMyAxMDoyMzowMCAyMDExIC0wNzAwCisKKyAgICBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkgdGhhdCBhdXRvLXB1bGxzIGdpdCBjb21tYW5kIGxpbmUgaW5mbyBmcm9tIFNGCisKK2NvbW1pdCA3M2U3NjU3NGFlNzI4YTRhNGEzMDYyMzU5N2VjMGI5NWZhMjc5N2M1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDIgMTQ6NDM6NTIgMjAxMSAtMDcwMAorCisgICAgYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvIHRoZSBnZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCisKK2NvbW1pdCBiMjRhNGYwYzk1NjUzMzUyMjBlZTIxN2QwYzBiNTEzMjFjYzFhNDRmCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDIgMTM6MjI6MzggMjAxMSAtMDcwMAorCisgICAgV29yZGluZyBjaGFuZ2VzIHRvIGhlbHAgZGVzY3JpYmUgY29udGV4dHMgYmV0dGVyCisKK2NvbW1pdCBlODM3YzdjYjYyYzY3NmEwMDU5ZDI4NDZlMDJlMzJmNWJiNjNjMWIxCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDIgMTM6MjI6MjEgMjAxMSAtMDcwMAorCisgICAgQWRkZWQgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCisKK2NvbW1pdCA5NzM2MjM0YjM3OThiYTU0NjJhMGE3NDk0M2VkZTgwZTkwYTY0ODViCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDMgMTA6MjM6MDAgMjAxMSAtMDcwMAorCisgICAgQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5IHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgorCitjb21taXQgYmY3MTc4YjBiMjI1ODdkNDNkMWE4MGMyNjljZDIxNmJkNTkzMDIxNAorQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KK0RhdGU6ICAgTW9uIEp1bCAxOCAwNDozMTowOCAyMDExICswNDAwCisKKyAgICBhZ2VudDogY2hhbmdlIHR5cGUgb2Ygc25tcF9lbmFibGVhdXRoZW50cmFwcyB0byBsb25nCisgICAgCisgICAgVHlwZSBvZiBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIHZhcmlhYmxlIGlzIGNoYW5nZWQgZnJvbSBpbnQgdG8gbG9uZy4KKyAgICBUaGlzIGZpeGVzIHRoZSBidWcgd2l0aCB3cml0aW5nIHRvIHNubXBFbmFibGVBdXRoZW5UcmFwcyBpZiBzZXJ2ZXIgaXMKKyAgICBjb21waWxlZCBmb3IgNjRiaXQgKHNubXBzZXQgcmVwb3J0cyB3cm9uZyBsZW5ndGgpLiBUaGlzIGJ1ZyB3YXMKKyAgICBpbnRyb2R1Y2VkIGEgbG9uZyB0aW1lIGFnbyAoYnkgZmFlZWNkMCBjb21taXQpLgorICAgIAorICAgIEFjdHVhbGx5IHRoaXMgaXMgYSAnbGVzcyBlZmZvcnQnIHR5cGUgb2YgZml4IGJ1dCBJIHdvbmRlciB3aHkgd2UgbmVlZCBhCisgICAgbG9uZyB0byBzdG9yZSBhbiBJTlRFR0VSIGluIHRoZSBmaXJzdCBwbGFjZT8KKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDE2YzAyZDY5Y2M5Y2U0ZmQ0ZTc3MTBhMGJmOTQzMGY1MjE3NWVkNTAKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMiAxNDo0Mzo1MiAyMDExIC0wNzAwCisKKyAgICBhZGRlZCB2YXJpYWJsZXMgbmFtZXMgdG8gdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KKworY29tbWl0IDdmZWQ2MWJmMGFmMTQ3N2ViNzQwYTA1ODhmNmExMWExMmI3MjM1OTUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMiAxMzoyMjozOCAyMDExIC0wNzAwCisKKyAgICBXb3JkaW5nIGNoYW5nZXMgdG8gaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKKworY29tbWl0IDkzODA2MTJmZGNiNGY5YmIwODFjNGE0Njc0NjY5MjEyNGFiZWRlNTAKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMiAxMzoyMjoyMSAyMDExIC0wNzAwCisKKyAgICBBZGRlZCB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworY29tbWl0IDYxYjE3OGYxZWU4OTUyYWEwM2FhM2IxYmE1MWY0YTY2NTVlNDdmMDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgMyAxODowOTo0NyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBQZXJsIG1vZHVsZXMgYnVpbGQgbm93IHdpdGggSVB2NiBlbmFibGVkLgorCitjb21taXQgN2ZjYzBiODAzMmY4ZGE1YjdiYzMwMDU5YWYwYmE2NTZlYWU3MTA5MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEF1ZyAxIDE0OjExOjI4IDIwMTEgKzAyMDAKKworICAgIHNtdXg6IEZpeCByZWNlbnRseSByZWludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgc2l6ZV90IDw+IHNzaXplX3QgbWlzbWF0Y2hlcworCitjb21taXQgYjQ4NGI4OGQ2ZTU3YjQyNWE4NDY3ZjVhMzkzMzMzMTJmZWQyYWNmMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEF1ZyAyIDA5OjMxOjUwIDIwMTEgKzAyMDAKKworICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgaW4gYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMKKworY29tbWl0IDk0NDYxMmVmNTZhZDI1NjRhYWZlMTRkZjZkMDhlMDQ4YjcyMjhiODYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBBdWcgMSAxNDo0OTo0MSAyMDExICswMjAwCisKKyAgICAuZ2l0aWdub3JlOiBBZGQgZmlsZSBuYW1lcyBhbmQgcGF0dGVybnMgZm9yIG91dHB1dCBmaWxlcyBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBXaW5kb3dzIGJ1aWxkCisKK2NvbW1pdCAyNjAwOTAxMjc4NWY4MjhiYmZjODc1OWFmYmJiZmM1ODcwMGZmMWY2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSnVsIDI5IDA5OjU5OjMxIDIwMTEgKzAyMDAKKworICAgIC5naXRpZ25vcmU6IFNvcnQgYWxwaGFiZXRpY2FsbHkKKworY29tbWl0IDVlM2ZmNTU5NjY0OGUwOTA3ZDU3MWQ3YTRkM2EzYThjMjQwMmQ4ZWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKdWwgMjkgMDg6NDM6MTkgMjAxMSArMDIwMAorCisgICAgLmdpdGlnbm9yZTogQWRkIGFwcHMvc3NodG9zbm1wCisKK2NvbW1pdCAzMWEzYTJhMDYyNDA0NjUxMWNhMDdlYzFmNTIxYTIyZDc5NjZkYjgwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gQXVnIDEgMTM6Mzg6MDEgMjAxMSArMDIwMAorCisgICAgUmVtb3ZlIHR3byBnZW5lcmF0ZWQgUGVybCBmaWxlcy4KKworY29tbWl0IGFkYWRjYjk5ZTU3YjkzYmU2NzBhN2M1MTdmYzk4OWRmZmU3Mzk2ZTkKK0F1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMiAwMDo1Njo0OSAyMDExICswMjAwCisKKyAgICBzdXBwcmVzcyAib2siIHRlc3Qgb3V0cHV0IGluIG5zYgorCitjb21taXQgYWU5YWM2Yzk4MTI4MjRiZjViODQ4ZGMxZjNjY2Y3MjI3YzQzNmQwZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEp1bCAzMSAwOToxMToyOCAyMDExICswMjAwCisKKyAgICBGaXggYW4gaW5jb3JyZWN0IHNvdXJjZSBjb2RlIGNvbW1lbnQ6IHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50IGluIHRoZSBBTlNJIEMgc3RhbmRhcmQgdGhhdCBzdGFjayB2YXJpYWJsZXMgc2hvdWxkIGJlIGluaXRpYWxpemVkIHRvIHplcm8uCisKK2NvbW1pdCA4MmQ3M2ZiMTFiZTNhZTMxZjM5YzlkNjE4ZDUzODhkYzliMTAwNmQ3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSnVsIDI5IDIwOjUxOjI3IDIwMTEgKzAyMDAKKworICAgIFVuYnJlYWsgdGhlIFdpbmRvd3MgYnVpbGQKKworY29tbWl0IDllNDdhYzQzOTMzM2QyYmI3YzgwNjg2MjQxZGI3MzMxYTg4NzcwZmIKK0F1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdWwgMzAgMDA6MTg6MTQgMjAxMSArMDIwMAorCisgICAgbWlub3IgbnNiIGZpeGVzL2VuaGFuY2VtZW50cyBmcm9tIG15IG9sZCBzdm4gdHJlZQorCitjb21taXQgYzQ4MTczYzA2YTllYWFkYmY4MWU2YjQ5NjJkNTVlZjBhNTRkYjI1MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEp1bCAyOSAxMDoyNzozOSAyMDExICswMjAwCisKKyAgICBGaXggYSBidWcgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQKKworY29tbWl0IGVjYTFiOWEyNTQ1MGNkODc1YjIwMTJjNTFjMDkwYmEyYjk3ZTA2MjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKdWwgMjkgMTA6MDQ6MDIgMjAxMSArMDIwMAorCisgICAgUmVydW4gYXV0b3JlY29uZgorCitjb21taXQgNjlhYTllMDMyY2FmNWViNzEzYmIwMDc0NTEzNDY0MGZlOWZkMDIzNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEp1bCAyOSAwOTo1OTozMSAyMDExICswMjAwCisKKyAgICAuZ2l0aWdub3JlOiBTb3J0IGFscGhhYmV0aWNhbGx5CisKK2NvbW1pdCBjMzg1OTdkZmEwYjFkMzY3ZDUyYmJkYzBhZWFhZGZmMDE1NTg1MGFkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSnVsIDI5IDA4OjQzOjE5IDIwMTEgKzAyMDAKKworICAgIC5naXRpZ25vcmU6IEFkZCBhcHBzL3NzaHRvc25tcAorCitjb21taXQgNzc0ZDBiNjZlZTBhY2FmZWFmYTIxZmM4ZDk5Mzg2NDc3OWU1MGU2MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEp1bCAyOSAwNzo0Mzo1NCAyMDExICswMjAwCisKKyAgICBGaXggdHdvIGZpbGVuYW1lcyBpbiBob3N0IG1pYiBzb3VyY2UgY29kZSBjb21tZW50cy4KKworY29tbWl0IDM0NTgxMjhiNGEzYzU5NzE5OTg4OTRmOWQ5ZDhjY2M2Yzc2ZDNjOWIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDI4IDE2OjE2OjE1IDIwMTEgKzAyMDAKKworICAgIEZpeCBwb3RlbnRpYWwgc2lnc2VndiB3aGVuIGFuIGlmVGFibGUgZW50cnkgaXMgcmVtb3ZlZCBhcyByZXN1bHQgb2YgYm90aCBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgYW5kIGludGVyZmFjZV9mYWRlb3V0IGF0IHRoZSBzYW1lIHRpbWUuCisKK2NvbW1pdCBhMmY5ZWNlMDZjZjAwZWU0N2NlN2U4NTY3MjIxMGMxYjU3ODZmMzExCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDI4IDE1OjE5OjIyIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBSZXN0b3JlIHN0b3JhZ2UgdGFibGVzIG9uIExpbnV4CisKK2NvbW1pdCBkNjJhMGViOTA3MGI0ZDhkOWZlMmJjZmRiNGQ1M2QzN2VmODE0ZjliCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCAyOCAxNDo0OTowOCAyMDExICswMjAwCisKKyAgICBEb2N1bWVudCBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgb3B0aW9uLgorCitjb21taXQgZjY2MGI4YzBkOGMyNzA3YmQ3MzE0MmYwNzYwNzljOTE2OWYzNTk1NgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdWwgMjggMTQ6NDA6MjcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfcmVwbGFjZV9vbGQnIG9wdGlvbiB0byByZW1vdmUgb2xkIGVudHJpZXMKKyAgICBpbiBpZlRhYmxlIHdoZW4gYW4gaW50ZXJmYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhbHJlYWR5IGV4aXNpbmcgb25lCisgICAgYXBwZWFycy4KKyAgICAKKyAgICBFLmcuIHJlbW92ZSBvbGQgcHBwMCBpbnRlcmZhY2Ugd2hlbiBuZXcgcHBwMCBzaG93cyB1cC4KKworY29tbWl0IDQwNmNhYjgxODkyNjQ5OWMzMTIxZGVjZTQzNzdkNjc2Mzg4OTQwNDIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDI4IDE0OjMyOjU3IDIwMTEgKzAyMDAKKworICAgIERvY3VtZW50IHRoZSBpbnRlcmZhY2VfZmFkZW91dCBvcHRpb24uCisKK2NvbW1pdCA0MmI4ODNjZTE4ZTU4Y2E4OWZkZmQ1MTRlYzY5OGUyZjdmZmQxZjYzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCAyOCAxNDozMjozOCAyMDExICswMjAwCisKKyAgICBBbGxvdyBpZlRhYmxlIGVudHJpZXMgdG8gYmUgZGVsZXRlZCBpbW1lZGlhdGVseSB3aGVuIGFwcHJvcHJpYXRlIGludGVyZmFjZQorICAgIGRpc2FwcGVhcnMgKGkuZS4gaW50ZXJmYWNlX2ZhZGVvdXQgPSAwIHdvcmtzIGFzIGV4cGVjdGVkKS4KKworY29tbWl0IDQ1MDYyZWE0N2JlMWNkOGRmNDkzM2EwZGU3ZjcyZjhjZjkxODNhYWUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDI4IDEyOjI0OjEwIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBhZGRlZCAnaW50ZXJmYWNlX2ZhZGVvdXQnIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHNldCBsaWZldGltZSBvZiBpZlRhYmxlIGVudHJpZXMgb2YgcmVtb3ZlZCBpbnRlcmZhY2VzLgorICAgIAorICAgIFByZXZpb3VzIGxpZmV0aW1lIHdhcyBoYXJkY29kZWQgNSBtaW51dGVzLCBub3cgaXQncyBjb25maWd1cmFibGUuCisKK2NvbW1pdCAzMWZhMDdjZDlmZmRlNDZkNDFkMmI1ODM4YzNmYzRkMDE1NDhiZmI1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCAyNyAxNDo0NTo0NyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogcHVyZ2Ugem9tYmllcyBvZiBwYXNzX3BlcnNpc3QgY2hpbGQgcHJvY2Vzc2VzLgorICAgIAorICAgIElmIHBhc3NfcGVyc2lzdCBwcm9jZXNzIGVuZHMsIHdlIHNob3VsZCBwcm9jZXNzIGl0cyBzaWdjaGlsZCBzaWduYWwuCisKK2NvbW1pdCAxMWJkNmUwMzJkMTVmZmIxMWQ3MmUzNTJjYTZiYzk1MDIzYzMzNzFhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCAyNyAxNDo0NTowOSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogcnVuIHNpZ25hbCBoYW5kbGVycyB3aGVuIHNlbGVjdCgpIGlzIGludGVycnVwdGVkLgorICAgIAorICAgIFRoaXMgYmVoYXZpb3IgaXMgaW5kaWNhdGVkIGluIGNvbW1lbnQgb24gbGluZSAxMjQ0LCBidXQgaXQgd2FzIG5vdCBhY3R1YWxseSBkb25lLgorCitjb21taXQgY2Q2ZTM4MmJlZGE4ZDQwZWRkMDY2NGU4ZmFlYzhkYjIyNGU1ZDVkNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEp1bCAyNiAxNjoxNjo0NiAyMDExICswMjAwCisKKyAgICBDbGFyaWZ5IGFuIElQdjYgc291cmNlIGNvZGUgY29tbWVudAorCitjb21taXQgMmNlYzYyNDc5MmFmODU0NjUwNWZiYTAyY2EwYTJlMjExNmE1NTllNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEp1bCAyNiAxNDo1OTozMyAyMDExICswMjAwCisKKyAgICBTcGVsbGluZyBmaXg6IGRlZmluZWR5IC0+IGRlZmluZWQKKworY29tbWl0IGY5NWExZjM4MGVhMThmZjYzM2YyNzNhOWFhNWU5ZWIyNzYyNzAxMGUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKdWwgMjYgMTQ6MTk6MTQgMjAxMSArMDIwMAorCisgICAgU3BlbGxpbmcgZml4OiBhbGV2aWF0ZSAtPiBhbGxldmlhdGUKKworY29tbWl0IGM1YTg0NjRjNDJhOTRjMjUwZWUyZGZhMmE0NzMxMDlhNzM0MjAzZDgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDI2IDE0OjI0OjU1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0g6IDMzMTAzNzU6IGZyb20gRXJpbm4gTG9vbmV5LVRyaWdnczogZml4ZWQgcGFyc2luZyBvZiB2YXJiaW5kcyB3aXRoIE1JQiBuYW1lcworCitjb21taXQgZWJkZDIxNmMwNzRiZjQxY2QzYTA4NGJkMTQ2ODljZjAxYzg4N2IzMQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAxOSAxODozNjoxMSAyMDExIC0wNzAwCisKKyAgICByZW1vdmUgYnJva2VuIHdoaXRlc3BhY2UgbGluZXMgdGhhdCBsZWFkcyB0byByZWFkaW5nIGNvbmZ1c2lvbgorCitjb21taXQgZDY1YzdiMTRhMGY5MTU2MGJiZjY1Mjc0ZjYyZTQ4ZGI5N2EzNGIzZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAxOSAxODo0NjoxMCAyMDExIC0wNzAwCisKKyAgICB1cGRhdGVkIGdpdGlnbm9yZSB0byBpZ25vcmUgYSBudW1iZXIgb2YgYXV0by1nZW5lcmF0ZWQgZmlsZXMKKworY29tbWl0IGFiMWQ4ODdiYTM4M2MzM2Q4NTNhYTRkMzQ4YmJjZWFiOTgxYWEyNDUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMTkgMTg6MzY6MTEgMjAxMSAtMDcwMAorCisgICAgcmVtb3ZlIGJyb2tlbiB3aGl0ZXNwYWNlIGxpbmVzIHRoYXQgbGVhZHMgdG8gcmVhZGluZyBjb25mdXNpb24KKworY29tbWl0IDcwZGVlNGI4ZGQzN2U4YjFkNTlkYjAzY2Q3ZjYzMWZlMzU2ZjE5ZTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKdWwgMTkgMDk6Mzg6MTYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMzY5NjgwOiBmcm9tIElseWEgWWFub2s6IGNoYW5nZSBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIGZyb20gaW50IHRvIGxvbmcgc3VjaCB0aGF0IG1vZGlmeWluZyB0aGUgY29ycmVzcG9uZGluZyBNSUIgb2JqZWN0IGRvZXMgbm90IG92ZXJ3cml0ZSBtZW1vcnkgaW4gNjQtYml0IGJ1aWxkcy4KKworY29tbWl0IDY5MGVhN2RjNDVjNmZlMWE3YmJmYTE1ODRlZDliZjkyMWYxOWIyOGYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKdWwgMTkgMDg6Mjg6NTkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBBZGQgbWlzc2luZyBuZXdsaW5lIGNoYXJhY3RlciBpbiBhIGxvZyBtZXNzYWdlCisKK2NvbW1pdCBkZDJmYzJlZDg4ZDBmOWJiODFkZTM1ZGJlMWY5YmQzYmJiYmIzZDkwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSnVsIDE5IDA4OjI4OjEzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogSW52b2tlIHNodXRkb3duX3BlcmwoKSB3aGVuIHNodXR0aW5nIGRvd24KKworY29tbWl0IDZkZWVjMWE4OTA0OGM4ZGIyNjUyMzUxN2FmOThkZGQzOTdmYzc3YzMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKdWwgMTkgMDg6MjM6MDUgMjAxMSArMDIwMAorCisgICAgU3BlbGxpbmcgZml4OiBicmFua2V0IC0+IGJyYWNrZXQKKworY29tbWl0IDhkOWRjYzgwNmVhYjM3ZmUyZGRmOWNjMzRjZjg2NDY3MjY1YjYyY2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBKdWwgMTcgMTE6Mzg6NTggMjAxMSArMDIwMAorCisgICAgUnVuIGF1dG9yZWNvbmYuIEZpeGVzIGJ1aWxkIGJyZWFrYWdlIGNhdXNlZCBieSBwYXRjaCBkNTg4ZWM4NTNiZDA1MzFmMjEyZmNiZjUxYjk2MmI5NmM2ODI4YjU5IChSUE0gNC45IHN1cHBvcnQpCisKK2NvbW1pdCBhNTY3MjFhM2U3NzU0ZTM4OWRhYTdlOGEzZDU3OTI4OTllZGM5ZGUzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSnVsIDE0IDE2OjE4OjMyIDIwMTEgKzAyMDAKKworICAgIEFkZCBhdXRvbTR0ZS5jYWNoZSBhbmQgc3RhbXAtaCB0byAuZ2l0aWdub3JlCisKK2NvbW1pdCA4NTFiY2Y1M2ZjZDEzY2RmMGJhOWYxMmU1ZDYwM2U3M2Y4YmI5NjExCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSnVsIDE1IDE1OjMyOjQ5IDIwMTEgLTA3MDAKKworICAgIG1lbnRpb25lIHRoZSAnYmVmb3JlJyBwYXJ0IG9mIHRoZSBpbmplY3RIYW5kbGVyIGxpbmUKKworY29tbWl0IDlmNzkzNjMwMTYyY2I3NzEzYWM0YjY4YzlhYWJlNTBlNjc1MTQwNzEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdWwgMTQgMDc6MzE6MzAgMjAxMSAtMDcwMAorCisgICAgZml4IGEgdHlwbworCitjb21taXQgZWRjMmM4ODM3NWZlY2NiMTc2YmNhZGViNTg4MTBkZDU3YmQ5N2ZiNworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAxMSAxOTozMzowMyAyMDExIC0wNzAwCisKKyAgICBhZGRlZCBhIGNvcHkgb2YgdGhlIHNoZWxsLWZ1bmN0aW9ucyB0byB0aGUgb2xkZXIgYnJhbmNoCisKK2NvbW1pdCA5NjRkNjM1MTQ5ODJkNmRkOWZhOTUwMjBkMjRhM2U4OGIyMmYyZDBjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDExIDE5OjMwOjI5IDIwMTEgLTA3MDAKKworICAgIGEgY29weSBvZiB0aGUgcmVsZWFzZSBmaWxlIGFwcGxpZWQgdG8gdGhlIG9sZGVyIGJyYW5jaGVzCisKK2NvbW1pdCAxOTZlMTEwYjMxNGUzN2U3M2E3NGVkYjAzYzQzZGEwMjk5ZWE4YjQ0CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDExIDE5OjM0OjA2IDIwMTEgLTA3MDAKKworICAgIGFkZGVkIDUuNyBwYXRjaGVzCisKK2NvbW1pdCBhMmFjMjRkZDRiNWI3MDk3NzNmZTgyNzY4N2M4NTk4Mjc3NWQ5OTk4CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDExIDE5OjMzOjAzIDIwMTEgLTA3MDAKKworICAgIGFkZGVkIGEgY29weSBvZiB0aGUgc2hlbGwtZnVuY3Rpb25zIHRvIHRoZSBvbGRlciBicmFuY2gKKworY29tbWl0IDhhZDMyY2VmYjM3YzYyMDgwYzRmM2Q3NDQ0Mzg4NGJlYzFjNDlhZGQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKdWwgMTEgMTk6MzA6MjkgMjAxMSAtMDcwMAorCisgICAgYSBjb3B5IG9mIHRoZSByZWxlYXNlIGZpbGUgYXBwbGllZCB0byB0aGUgb2xkZXIgYnJhbmNoZXMKKworY29tbWl0IDlmZjQ3MTQzOWUzMjYyNTUwNjYzNzdjNzZkOTk1ZTFhYWYyOTZiZDIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMjkgMjM6MTU6NDIgMjAxMSAtMDcwMAorCisgICAgZml4IHRhZyBwdXNoaW5nCisKK2NvbW1pdCBmOWE2NTM4NWIyM2QwNmRiYmU5NDMwYTIzYzhlYmNmNjhkMTIxMjdlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDI5IDIyOjMyOjEwIDIwMTEgLTA3MDAKKworICAgIG1pc2MgcHVibGljYXRpb24gZml4ZXMgZm91bmQgd2hpbGUgcHVibGlzaGluZworCitjb21taXQgZGY5Y2Y5YTFlMjkzZDA1YTI0Nzg2Njk0ZjY4YzA1YTJiZTEzYTliMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAyOSAxNjozNDoxMSAyMDExIC0wNzAwCisKKyAgICB4bWwgZml4ZXMKKworY29tbWl0IGVlOGQxNjA0MTZjMmY3ZDE5NDE4NjNlN2QzNzUxMjY1OGUzZjJmMzYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMjkgMTY6MzM6NTAgMjAxMSAtMDcwMAorCisgICAgdXNlIGdpdDJjbCB0byBnZW5lcmF0ZSB0aGUgQ2hhbmdlTG9nIGZpbGU7IG5lZWRzIG11Y2ggbW9yZSB3b3JrLgorCitjb21taXQgNWQ0YmI4MDExM2RkY2NlNWNlZTI5M2E0ZTUzN2IyMDFmYWZjYWI4MworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAyOSAxNDo0ODozOSAyMDExIC0wNzAwCisKKyAgICB1c2UgdGhlIG5ldyBydW4tYXV0b2NvbmYgc2NyaXB0CisKK2NvbW1pdCA2MWZmZWY2MjY4Njc1YTkxZTIzMGQ0NGIzNDA3YTNkMGMzZmZjODlkCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDI5IDE0OjQ3OjU2IDIwMTEgLTA3MDAKKworICAgIEEgc2NyaXB0IHRvIGludm9rZSB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIHRoZSBhdXRvY29uZiB0b29sCisKK2NvbW1pdCBkMGY2ZjhkZTM3MjkyYjdmYmM5ZTA1NzkzNjkwYjU3ODRhMDQxZDQ2CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDI5IDA4OjQxOjQ1IDIwMTEgLTA3MDAKKworICAgIHJlbWFpbmluZyBjb21tYW5kIGxpbmUgY2hhbmdlcyBmb3Igc3ZuIC0+IGdpdAorCitjb21taXQgMTY1NjA4NDAwMjBkYzVlMGM0YjI4Y2MyZTMwYmIyY2QwMzRjZTBkMAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAyOSAwNzoyNjo1NSAyMDExIC0wNzAwCisKKyAgICBtYWtlIHRoZSBicmFuY2ggZWNobyBvdXRwdXQgYW5kIHN2biB1cGRhdGUgY29udmVydGVkIHRvIGdpdCBlcXVpdmFsZW50cworCitjb21taXQgZjc3NWJjZDZhN2E1MGYzMzc4MjUyNmVjZGIxYmVlYTU1ZTNmZTgyMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAyOSAwNzoxMToyOSAyMDExIC0wNzAwCisKKyAgICBwdWxsIHRoZSBicmFuY2ggaW5mbyBmcm9tIGdpdAorCitjb21taXQgZDU4OGVjODUzYmQwNTMxZjIxMmZjYmY1MWI5NjJiOTZjNjgyOGI1OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMjkgMTY6MDc6MDAgMjAxMSArMDIwMAorCisgICAgVHdlYWsgUlBNIGhhbmRsaW5nIHRvIHdvcmsgd2l0aCBsaWJyYXJ5IHZlcnNpb24gNC45CisKK2NvbW1pdCBhZjhiMjM1MjM0ZjcyOTQ0YTY0OWE3NmYwZDMwY2ZmOTVhYzJlODk1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorRGF0ZTogICBUdWUgSnVuIDI4IDEzOjExOjE5IDIwMTEgLTA3MDAKKworICAgIE1lbnRpb24gdGhlIEdpdCB3aWtpIHBhZ2UKKworY29tbWl0IDliYzgyZTRjYTQ4MzdmMDAwNzJkYmE4NmI5NDk3YTI3MTg2OTA5ZjkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKdW4gMjggMTk6MTM6MzUgMjAxMSArMDIwMAorCisgICAgQWRkIC5naXRpZ25vcmUKKworY29tbWl0IGYyZGY4YTJiMDE2NWUwMTM3ZmQwMTdiNDFjN2QwNGUzYTVlMTY4ZTYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CitEYXRlOiAgIFR1ZSBKdW4gMjggMDg6Mjk6MDggMjAxMSAtMDcwMAorCisgICAgV2UncmUgbm93IHVzaW5nIGdpdCEKKworY29tbWl0IDdkOTE3Y2ZjOGY3NDU3NDAzMjU2NDgxNWFiMGZiNDgzYjY5MTg2NGUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAyNCAxMzowMDo1MCAyMDExICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGExNjJlOTMxZjI5OTMxY2UwM2Q0MGQ3M2RkOTY5ZjYwODYwODNiODAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAyNCAxMjozODoxNCAyMDExICswMDAwCisKKyAgICBNaXNzaW5nIGNoZWNrIGZvciBycG10cy5oCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMDc4N2ZmMWY2MzJlMDg0NDBlOGJiMjQwZGFiY2E1YzVlNjNmZDgyZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSnVuIDI0IDEyOjIwOjIwIDIwMTEgKzAwMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDQ1MzBkODc3NTMxMDgzYmZmZmQzYmJjYTRhODJjMzAwMDliZWY4ZmQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAyNCAxMjowODoyMyAyMDExICswMDAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDQ5NTc1ZjEzNmI0MGQwOGQyMWExNjhhMGQ1NDVkODVmNTljNTg3MDEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAyNCAxMjowMjoxNSAyMDExICswMDAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1OTllM2NkZmY5ZTc4NjIyNTM1NjgzYTY5ZjQyOTc3ZGY0MDg5YmE5CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdW4gMjMgMTU6NDE6MzggMjAxMSArMDAwMAorCisgICAgVHdlYWsgUlBNIGhhbmRsaW5nIHRvIHdvcmsgd2l0aCBsaWJyYXJ5IHZlcnNpb24gNC45CisgICAgQmFzZWQgb24gYSBwYXRjaCBieSBKYW4gU2FmcmFuZWsKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1YzJhNjkxYmQyOWVhMzQzMDQ2ZDIxODYyMTUwMmE2NmJjOTZhMWJiCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMjIgMTQ6Mjc6MzkgMjAxMSArMDAwMAorCisgICAgUHJvdmlkZSBhIGZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tCisgICAgYSBjYWNoZSBkaXJlY3RvcnkgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuCisgICAgCisgICAgTXkgYXBvbG9naWVzIHRvIEplZmYgSm9obnNvbiBmb3IgdGhlIGRlbGF5IGluIGFkZGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMjcwNzQzNWVmNWUwMTFjMzYzN2YzNzk4MWNiZTRkNTBmMmU3MjlkYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDIyIDEzOjI2OjQ1IDIwMTEgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMjcyZjk2YWVjOTM3ZWQ3NGNjNGRiOTgwNzQ1ZDJkYmUwMGNhNTNhMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDIyIDEzOjA2OjQ1IDIwMTEgKzAwMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDUxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDllNDcxYWRjMmE0MDIxMmI0YzAxN2NiY2VkNmUyNTg4MmUzMDZhNGQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAyMiAxMzowNDoxMiAyMDExICswMDAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA1MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA4YTVhYzc3NWRlNTc1NDE2MDcwNjY1YzMwYmMzZDc3MzM2ZTEyYmNiCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdW4gMjEgMTQ6Mjg6NDggMjAxMSArMDAwMAorCisgICAgUHJvdmlkZSBhIGZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tCisgICAgYSBjYWNoZSBkaXJlY3RvcnkgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuCisgICAgCisgICAgTXkgYXBvbG9naWVzIHRvIEplZmYgSm9obnNvbiBmb3IgdGhlIGRlbGF5IGluIGFkZGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNDUyNDI1NWJhNjA4M2QyNWMwM2Y2NDM2ZWNiZTM5ODgzNmY0YTBmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEp1biAxOSAwNzo1MjoyNiAyMDExICswMDAwCisKKyAgICBGb2xsb3ctdXAgZm9yIHIyMDUxMTogcmVhbGx5IHVzZSB0aGUgcHJvcGVyIGZvcm1hdCBzcGVjaWZpY2F0aW9uLgorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDYyMWM5ZWRhMTI4MmI3ZjU2MmIzNzc3YjVmYjU3ZmQzNTVjMWEyMDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKdW4gMTcgMTk6MDk6NTIgMjAxMSArMDAwMAorCisgICAgRml4IGEgYnVnIGluIGEgZGVidWcgc3RhdGVtZW50IGludHJvZHVjZWQgYnkgcGF0Y2ggMzMxMDI1MCAvIHIyMDQ5NDogdXNlICVsZCB0byBwcmludCBhIHZhbHVlIG9mIHR5cGUgb2lkIGluc3RlYWQgb2YgJWQuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgM2IzZTk3YjMwOWE1MzVkZjFhOTliMDM2OTM4NjkwNTA2NDlkNTNhMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAxNyAxOTowNjo0MiAyMDExICswMDAwCisKKyAgICBVc2UgJXAgdG8gcHJpbnQgYSBwb2ludGVyIGluc3RlYWQgb2YgJWxkCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgODc4YmNkODc2NGJlNWQxNThkNjVmNGIyMGE2OGNiM2E5NDhkYmRkZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAxNyAxOTowNjo0MiAyMDExICswMDAwCisKKyAgICBVc2UgJXAgdG8gcHJpbnQgYSBwb2ludGVyIGluc3RlYWQgb2YgJWxkCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMzc0YWYwNzU4NjQ0ZTlhYmNjNDk5OGZiMjkxY2EzNzM4NjkwNDhmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAzIDA2OjMwOjMzIDIwMTEgKzAwMDAKKworICAgIFJldmVydGVkIHIyMDM2MjogdGhhdCBwYXRjaCBtYWtlcyBzZW5zZSBvbiB0aGUgdHJ1bmsgYW5kIHRoZSA1LjYgYnJhbmNoIGJ1dCBub3Qgb24gdGhlIDUuNSBub3Igb24gdGhlIDUuNCBicmFuY2guCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNzE4OTM1NmQ4OGI0Y2JkOTIwZmQ5MzQxMTFlNGI2ZDY5MDUxM2Y1MAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAxIDIyOjI0OjIzIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMzEwMjUwOiBmcm9tIGZlbm5lcjogbWlzYyBmaXhlcyBmb3IgZGVidWdnaW5nIG91dHB1dCBvZiBhZ2VudHgKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0OTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjOWMzZGIxNTc1MmQ2ZTRiOGI5NjAwY2Q3ZDFhOGQ3OWQ2ZDgzYzNlCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMSAxNTo1NzoxOCAyMDExICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDBlZWZlY2NmNzZkNjMwNzk2YjdjOGM2NGEwZTMzZDAxNzUyNjJmY2IKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAxIDE1OjQ4OjQ5IDIwMTEgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDg2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMzVmMGEzODIyYWY4ZjAwODU1MjQyOTA2YjEzMmU3MDJkZTg5OTIxMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDEgMTU6NDc6MDQgMjAxMSArMDAwMAorCisgICAgbWFrZSBkZXBlbmQKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBiMWU1YWNiYjYwNWJlZDMyMTBjN2Y1ZGRhZWVlZjJhMDUwY2Y2YmVhCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMSAxNTo0MjowMCAyMDExICswMDAwCisKKyAgICBSZWluc3RhdGUgYW4gInVudXNlZCIgbGFiZWwgdGhhdCBpcyBhY3R1YWxseSBzdGlsbCByZXF1aXJlZC4KKyAgICAocmVmZXJlbmNlZCBpbiBsaW5lIDI3MTApCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDg0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMjQ4NzU3OWQxZTk3NzEzN2RjNjQzYWNlZTc2MmFlYWFmYTYwZjRiZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDEgMTU6MzI6MjMgMjAxMSArMDAwMAorCisgICAgRml4IHR5cG8KKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjYWMxMWE5MmMwNGE1Y2M1MWUyMzFiZTBhYjExNmRiODU1MjIxZGUxCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMSAxNTowODo1MSAyMDExICswMDAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGZhOGVlNGY5N2MyZmE4ZmI2ZTU5Y2YwNTVlMGQ4MWEzYmRlY2ZiOTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAxIDE0OjUxOjE0IDIwMTEgKzAwMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDg2NWNjZmYzMjIwZDAxN2YzZWYzYjYxOWYwZjhmNDQ3ZDMzNTE0ZWIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAxIDEwOjE5OjMzIDIwMTEgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgN2I2MTliMTBlOTEyYmRkMWM3NjMzY2UzYjFlNzI1NzRjMjM0MWNlOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDEgMTA6MDE6MDEgMjAxMSArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1NWY2ZThjM2EwZjc3NDFiZjhhNjg5YTBmY2YwNmNjNDgwYWQxZWZmCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMSAwOTo1NDowNCAyMDExICswMDAwCisKKyAgICBtYWtlIGRlcGVuZAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGQ3YTI3M2NjYmVlNTY5MDFlODY3OWEwZGUzMmJjNmFhMTZkNDRiZjUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAxIDA5OjA2OjMyIDIwMTEgKzAwMDAKKworICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMTI2MzUzNTUxZjQ5MzdmN2MwYmMxYWE4YzgwYzJkNDhkMTM0OWM5MworQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDEgMDk6MDA6MjQgMjAxMSArMDAwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgN2ZhMzBmY2UwOGFjNDk0YzM1OGU2YTMxYjk3MDJlMTJmZmViZDQ2MQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE1heSAzMSAyMjo0OTozMiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzA2Njg2MjogZnJvbSBmaGV3OiBmaXggdGhlIGFnZW50IGZvciBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBiNDFkNGFhZjdhMDZiNDVhOWVjMDdhNTUxMWJhYzViYWQ2ZmRkYTJhCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTWF5IDMxIDIyOjQ5OjMyIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMDY2ODYyOiBmcm9tIGZoZXc6IGZpeCB0aGUgYWdlbnQgZm9yIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzIG9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDFhODQzODY1MDQwNWFlMzg0OTFmM2E1YzlhMmIxMGZjOTliMWI5YzIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMzEgMjI6NDk6MzIgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IgY29tcGFyaW5nIHVuc2lnbmVkIGxhcmdlIGluZGV4ZXMgb2YgdGhlIGRpc2sgYW5kIGV4dGVuZCB0YWJsZXMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzA3ZDU5YmQ5MmNjMzRiYzk2OTY0YjVlNzQzY2ZkZWU3OTg3NWI3YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMzEgMTI6MzA6MzAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4KKyAgICAKKyAgICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZCBvdXQpIGFuZCB3aGVuIHRoZSBwcm9jZXNzIGV4aXRlZCBhZnRlciBmb3BlbigpLCBzbyBjaGVjayAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYmE2ODgwNmRkMDY0ZjY1NTUzNmQ2ZjY5MzcxYzY5OWU2MTYyMDU2ZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMzEgMTI6MzA6MzAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4KKyAgICAKKyAgICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZCBvdXQpIGFuZCB3aGVuIHRoZSBwcm9jZXNzIGV4aXRlZCBhZnRlciBmb3BlbigpLCBzbyBjaGVjayAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgOTFjZGI4MTViYjM2NTc1N2Y4NGMyMjM0ZDllNWY1NzYzYWM0YjA0ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAyNiAxNjoxMjo0OCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28gdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBhNWE5ZDFlOGEyNGYwMmRmZTRlOTdhZjA0ZDZmNWUwYjU5MGE1MmFlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDI2IDE2OjEyOjQ4IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbyB0aGV5IHJldHJ5IHByb2JpbmcgZm9yIGFuIGVuZ2luZUlELgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDRiOTU2YzQ3MGFjN2U0OTM5OWU3ZTEyMzk3OThlMmEwNjBmZTU4YmEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMjYgMTY6MTI6NDggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMyOTkzODQ6IGZpeCBJTkZPUk1zIHNvIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYTliYzM0ZjZmNDUwYjQ3NTFkZWY4Yjg1NzJiMjVjMGY3OTE4YWQ1ZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAyNiAxNjowNjoxMSAyMDExICswMDAwCisKKyAgICBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkIHJld3JpdGluZyBleGlzdGluZyBhdXRoa2V5L3ByaXZrZXkvZXRjcworICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDFkMzMxMzc1ZDg2MjgyZTIzYjRhZTYwMjA1Mjc1M2FhNGE0Zjg3YWMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMjYgMTY6MDY6MTEgMjAxMSArMDAwMAorCisgICAgQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZCByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBhYTVlYzhkMTlkZTI5NTE1MTAzMjYzOWUxMzhlOGI3NjU4Nzg2NmJjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDI2IDE2OjA2OjExIDIwMTEgKzAwMDAKKworICAgIEFwcGxpZWQgKHJvdWdobHkpIHBhdGNoIDMyOTkzNzAgdG8gYXZvaWQgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDU3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgODgwMTMyZGFmMmY1M2RhZGZlNDFiMjJhZDMyMmQ3MDY1MGE4MmNjMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSAyNSAxMzowNzoyMyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW86IExpbmsgd2l0aCBnZGkzMi5saWIgaWYgT3BlblNTTCBoYXMgYmVlbiBlbmFibGVkIGJlY2F1c2UgZ2RpMzIubGliIGlzIGEgZGVwZW5kZW5jeSBvZiBPcGVuU1NMLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDg4NWQxZjU1Y2VmYTgyZDk1MzU2ZTNlMzVlY2FlODExNThhZjNiNTkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXkgMjUgMDk6MjE6MDUgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFVzZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmllciBpbiBkZWJ1ZyBzdGF0ZW1lbnRzIGZvciBwcmludGluZyB2YWx1ZXMgb2YgdHlwZSAnb2lkJy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA3MjNiYzM4NzU3MTc1NzQyNmI4NjFiNmE4ODU0YTRiOGQ4OWRjZDE1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWF5IDI1IDA5OjIxOjA1IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBVc2UgcHJvcGVyIGZvcm1hdCBzcGVjaWZpZXIgaW4gZGVidWcgc3RhdGVtZW50cyBmb3IgcHJpbnRpbmcgdmFsdWVzIG9mIHR5cGUgJ29pZCcuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMGYyZWNkNmYwNWRlZTM3ZjkzZWE5YTlhYzllNzI3NmQ2YjQ3OGRkMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMjQgMTI6NTE6MzkgMjAxMSArMDAwMAorCisgICAgQWRkZWQgTlVMTC1jaGVja3MgYWZ0ZXIgbWFsbG9jCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzg5Yzk1YmNjZDEzOGJkYWVlM2UwMWYyZDBmNjYzMzI4ZThlN2U4OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMjQgMTI6NTE6MzkgMjAxMSArMDAwMAorCisgICAgQWRkZWQgTlVMTC1jaGVja3MgYWZ0ZXIgbWFsbG9jCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZTNiMjBjYWFiYzMxM2Q4ODhjYTRjYzk1NDRlN2VjZjJlMWFiMDlkNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWF5IDIyIDE5OjM0OjEwIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDMzMDUxNTc6IEZpeCBpcEFkZHJlc3NQcmVmaXggaGFuZGxpbmcgb2YgSVB2NiBhZGRyZXNzZXMKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA5YjEyNWM3MTNiZTFlY2NhNjNmMmIxNjlkMmMxMGQxZDI0YTJkNDc2CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXkgMjIgMTk6MzQ6MTAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IEJVRzogMzMwNTE1NzogRml4IGlwQWRkcmVzc1ByZWZpeCBoYW5kbGluZyBvZiBJUHY2IGFkZHJlc3NlcworICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDA0MzMxODgyYTBjOWRmNzlkOTEzNTQ1NzM4MmEyNzI1YzMwMzBmODEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyMiAxOTowNzo1NiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBweXRob246IEJVRzogMzI5NTQwNzogRml4IGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlcgorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDZlMmJmOTFhYmE1NjJjY2FlYjEzMDQxOTg5M2E3MTcwYmIyMzEyZjkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyMiAxOTowNzo1NiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBweXRob246IEJVRzogMzI5NTQwNzogRml4IGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlcgorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGNhYmE2NTFmODRmNzEwMmNiYTE4MWQxOTViNTljNzk3NjhkOTQ1NjEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyMiAxODo1Nzo1MyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyNjQ4NTI6IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcyAoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzVhNDU4MGI5MjRlZDVjNDljZmZkMWI3ZmQ4ZTkzMmVkMTY4ZWNkYgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWF5IDIyIDE4OjU3OjUzIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzIChzbm1we1VuYXZhaWxhYmxlLFVua25vd259Q29udGV4dHMsc25tcFVua25vd25QRFVIYW5kbGVycykKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA5ODgxNTAwM2YzNDVlY2U5M2ZjZjgzNmZiMGMzZWE1OTk3YzhmOTAwCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXkgMjIgMTg6NTc6NTMgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMjY0ODUyOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKQorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDMwMjQ1ZDAwZDMwY2ZjNTI2OTM5YmIyZmY3MjFiMjA3NjU0NmU4YzcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSAyMCAxNTo0MTowNiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyMzQ3NTQ6IEVuc3VyZSBvbGQgZl9jcmVhdGVfZnJvbV90c3RyaW5nIGhvb2sgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTAorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDU2Yzc0YzVhNDkzODYzMzBhNTgxNTY0YTZlZTE1NzliY2Y2YzUwOWUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSAyMCAxNTo0MTowNiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyMzQ3NTQ6IEVuc3VyZSBvbGQgZl9jcmVhdGVfZnJvbV90c3RyaW5nIGhvb2sgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTAorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDQ1YjRiZDUzN2I2Mjc1MzRiMWM2MjE4MjE5ZmQ3NzBlYjVhNGExNTUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMTkgMTk6NDY6MjAgMjAxMSArMDAwMAorCisgICAgdXNlICNpZmRlZiByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNWNjNWE0Y2QwZDY0ODkzNWVjNzZlMDk2MTYyMjlkMGNlZWJjNDFhMAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxOSAxOTo0NjoyMCAyMDExICswMDAwCisKKyAgICB1c2UgI2lmZGVmIHJhdGhlciB0aGFuICNpZiBmb3IgZGVmaW5lIGNoZWNrcy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBiNTg4ZDFhMWRhNjgxYjI2ZjM1ZjJiYmYwNDkyMjQyY2Y0ZDgzYzk2CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDE5IDE5OjQ2OjIwIDIwMTEgKzAwMDAKKworICAgIHVzZSAjaWZkZWYgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDk4ZDYyMjNlMTBhZjBiMjA3Mzk1YzlhNzExOTBkZmY2ZmE4Nzk1OWMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxOSAxNzoxOTozMSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZAorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMyNmU3YTkzODUxZWQ2Nzg0NDdkYzMyYWI3MmZiYzFhMDA4YTEzNWQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxOSAxNzoxOTozMSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZAorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMwMGY4OGYzMzg4OGVkZDQ4MGFjYzllYzkzMTJkNmI2MWUxNzBhNzYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxOSAxNzoxOTozMSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZAorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGNhMDUzOTk2MDIyZTNjMWRlM2UyZDViNTU4ZmFkZjZkNzllOWZkZDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgMTMgMTI6MDU6MTkgMjAxMSArMDAwMAorCisgICAgRm9sbG93LXVwIGZvciByMjA0MTc6IHJlcGxhY2VkIGEgbWFsbG9jKCkvZnJlZSgpIHBhaXIgYnkgYSBjYWxsIHRvIHJlYWxsb2MoKS4KKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAwNjg2OTUyMDg1Njk3NmZmNDU5MGEwYmI2MWM0ZTk2ZjE2YzM1ZDZlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxMiAxMTo0NzozNiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRml4ZWQgbWVtb3J5IGxlYWsgaW4gVENQLU1JQiB0YWJsZXMgaW50cm9kdWNlZCBieSBwYXRjaCAjMzA1MzQzNi4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0MjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAwNWQzZDNhODIzMTFiZjliNTUzODYyMTZmMTg4MTk4Y2Q4NDlmZmYxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDEyIDA5OjAzOjAyIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gc25tcF9mcmVlX3Nlc3Npb24oKS4KKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA0ZTk0YWI3ZjBjNjUwOWI2MjgyZWVmYzg4OGFiMGRjZjc4ZTU3NWE2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDEyIDA5OjAzOjAyIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gc25tcF9mcmVlX3Nlc3Npb24oKS4KKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjYzc4ZDA2MjM5NzU1YzZlYmI4MzE5MDNiNmNlZGQzZTFkYmFiNTgzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDEyIDA4OjI1OjMzIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IF9taWJpbmRleF9hZGQoKSBubyBsb25nZXIgcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkgX21pYmluZGV4ZXMuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYWRjZWQ0YTg0ODc2YTJlM2NiODY4N2I1ZmZhNTgzMGEzYjUwMDNhYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxMiAwODoxMjo0NyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaXBOZXRUb01lZGlhVGFibGUuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZjAwMTJkZWMyYzk4YmFmMWMwZTI1ZmExN2Q1YmY4OWJhY2QwYTRhNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxMiAwODoxMjo0NyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaXBOZXRUb01lZGlhVGFibGUuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgOGVjZDI5OGRiY2NlZTFlMzI3Y2U2NTg1MmY5ODkyOGQ3YmMwNDFkNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxMiAwODowODo0MSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaWZUYWJsZS4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBkOTYyZmRhNjc3ODE0YjYzNDJhZDFiOWMzZmE4NDIyNWI1NTVjZGEyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDEyIDA4OjA4OjQxIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpZlRhYmxlLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGFhMDMyNzY5YmMzZGE4MzAyYzM4ZGQ5ZDYyZDUzZjdmMDU0ZWIyYzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMTIgMDc6MzM6MDIgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwQWRkclRhYmxlLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDRmZmE5MDhkMDJjZmFkOWZmMzFhMjAxODE5MmQ0YWQ1Zjk1OTQ2N2MKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMTIgMDc6MzM6MDIgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwQWRkclRhYmxlLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDI3MTkxNDUxMmRjODI2OGQ4YmM0OWJhN2VjMzhjYzJhY2VjNjU2YzMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMTIgMDY6NTQ6MzMgMjAxMSArMDAwMAorCisgICAgRG9jdW1lbnRhdGlvbiAvIHNvdXJjZSBjb2RlIGNvbW1lbnQgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMwMDljMTJkNzJiYmMyZTI3OTVkM2E2YjIyY2FiNmJhMDZlNDg1MzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMTIgMDY6NTQ6MzMgMjAxMSArMDAwMAorCisgICAgRG9jdW1lbnRhdGlvbiAvIHNvdXJjZSBjb2RlIGNvbW1lbnQgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMyZDM1YmQ1YzMyMmQ3YTg1MzZhMWZmMzFkNzNlNDFmNzdjODViOTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMTAgMTU6MDI6NTEgMjAxMSArMDAwMAorCisgICAgTWluR1c6IGF2b2lkIHRoYXQgZ2NjIGNvbXBsYWlucyBhYm91dCBwYXNpbmcgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAzZGJlMjc3OTlhM2YwNjViYmYyMTI1OTk0NjY5NjliZWI3MjY5MGQyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTWF5IDEwIDE1OjAyOjUxIDIwMTEgKzAwMDAKKworICAgIE1pbkdXOiBhdm9pZCB0aGF0IGdjYyBjb21wbGFpbnMgYWJvdXQgcGFzaW5nIGEgKGNoYXIgKikgYXJndW1lbnQgd2hpbGUgKHVuc2lnbmVkIGNoYXIgKikgaXMgZXhwZWN0ZWQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgOTRiNTIzOGQ4OGEwMjczMDZhYTkxMTU3NTgxMTFjNzg1YTRhYmFkOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1heSA5IDIwOjUyOjAxIDIwMTEgKzAwMDAKKworICAgIFVzZSBzeW1ib2xpYyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcworICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDA0YjhlMjc5YTdhNzg1YTc2ZWJmNGI2NTc1ZjQxY2U2Mjk5NDUyYzYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXkgOSAyMDo1MjowMSAyMDExICswMDAwCisKKyAgICBVc2Ugc3ltYm9saWMgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAzZGNiZmRkNGYxZmZlYWQ1NTI0MTQ5YjRlZmIwMDEyODY4OGUxNTA1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWF5IDkgMjA6NTI6MDEgMjAxMSArMDAwMAorCisgICAgVXNlIHN5bWJvbGljIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNWJiMWM5YThmZGM0N2IzZWYzNTVjYjQyZTllMThhZDg4Y2U0OTZmYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSA4IDIwOjAxOjI2IDIwMTEgKzAwMDAKKworICAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCisgICAgVGhlc2UgbW9kdWxlcyB3b3JrLCBidXQ6CisgICAgLSBUaGV5IGFyZSBMaW51eCBvbmx5CisgICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZSBwb3B1bGF0ZWQKKyAgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKKyAgICAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuCisgICAgLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdCBiaW5hcnkKKyAgICAgIChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pCisgICAgCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZGJiODc5NWE3ZGY1OTVmMDYwM2YyZWM2MTcwNDc5OWY0YzQ4MjY2NworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSA4IDIwOjAxOjI2IDIwMTEgKzAwMDAKKworICAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCisgICAgVGhlc2UgbW9kdWxlcyB3b3JrLCBidXQ6CisgICAgLSBUaGV5IGFyZSBMaW51eCBvbmx5CisgICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZSBwb3B1bGF0ZWQKKyAgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKKyAgICAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuCisgICAgLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdCBiaW5hcnkKKyAgICAgIChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pCisgICAgCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZTlhYzg2Mjc4YzM1ODgwMjI5MTQ3NThhMzQ1ZmI5ODJiYjVkNGVjNAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSA4IDIwOjAxOjI2IDIwMTEgKzAwMDAKKworICAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCisgICAgVGhlc2UgbW9kdWxlcyB3b3JrLCBidXQ6CisgICAgLSBUaGV5IGFyZSBMaW51eCBvbmx5CisgICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZSBwb3B1bGF0ZWQKKyAgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKKyAgICAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuCisgICAgLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdCBiaW5hcnkKKyAgICAgIChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pCisgICAgCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZTNkYjk1ZTE2MTlkZDU3ZGZiNTVhYzc0OTRmNDhkMmFkZDU2ZDk3MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1heSA3IDE1OjIyOjI3IDIwMTEgKzAwMDAKKworICAgIFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZWE4Y2UwMDc0NGU4MzIzM2Q4NTQzODUyZjg4NGFhMDM3YzExODNhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1heSA3IDE1OjIyOjI3IDIwMTEgKzAwMDAKKworICAgIFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYTU4OTY5ZWRkYjNiNjY5ODc3ZDcyMjlmNzE5MDg3YmJkNzI3ZDAzMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDIxOjMyOjAxIDIwMTEgKzAwMDAKKworICAgIE5FV1M6IFBBVENIIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kIGRpc21hbi90cmFjZXJvdXRlIHRvIGF0IGxlYXN0IGNvbXBpbGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAyY2NhNjEyNWQ1MzhmYWE5YjUxYjc3MjE0MWYxOTJkN2I2M2NjMGNiCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWF5IDYgMjE6MzI6MDEgMjAxMSArMDAwMAorCisgICAgTkVXUzogUEFUQ0ggMzE5ODc4MTogZnJvbSBmZW5uZXI6IEdldCBkaXNtYW4vcGluZyBhbmQgZGlzbWFuL3RyYWNlcm91dGUgdG8gYXQgbGVhc3QgY29tcGlsZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGIxZTc2YmVmODFiZmNlMTZjOGQwYmMwMWU4NTZjYjRjNzU5MzBiNWMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAyMTozMjowMSAyMDExICswMDAwCisKKyAgICBORVdTOiBQQVRDSCAzMTk4NzgxOiBmcm9tIGZlbm5lcjogR2V0IGRpc21hbi9waW5nIGFuZCBkaXNtYW4vdHJhY2Vyb3V0ZSB0byBhdCBsZWFzdCBjb21waWxlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZmNiOGE4ZDI3YzJjYzM3OWRjZTI2M2RiZWU2NzIwZDdiNGUwMmQ3NAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWF5IDYgMTc6NDY6MjkgMjAxMSArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1MTVhZjk5Y2I5ZTZhM2IwOTIzZTY1MDQ2NmY3NDQ2NGUzYjliNWY2CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAxNzozNzo1OSAyMDExICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDZmOTI3ZmQ3M2FmMmE0Y2ViNjdmYzQwOTA4MjZhMjg0YTdlNmZjMTkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDE3OjM1OjUwIDIwMTEgKzAwMDAKKworICAgIG1ha2UgZGVwZW5kCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgODA4MGE4MTg5ZWQ3ZWU3M2NhMzIxOGM4MjgwYzY4NzE3ZDQ1MzVkZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWF5IDYgMTc6MjI6MTQgMjAxMSArMDAwMAorCisgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2MmZiOTNlMjg3MjhiMGU5M2MxMzRjODhiNjViMWQ0NTNiNmU4OWMyCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAxNzoxNzo0NiAyMDExICswMDAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA3NGUxM2NjOTViZWU0NjU1ZGYyM2JhNTE0YmQyNjU3ODg2YzllNGI2CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAxNDoyMzoyNCAyMDExICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDc5MzE4N2FhYTA0Yzg4MWY2YjU3ZmNmMzYxMjk2YjUyYTk0MGUxZjgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDE0OjIxOjQ1IDIwMTEgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzM5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMTQ2NmUxNWU1MjM4MDk2NWY4NDRjNmQ5OGIzZWIyNTc4OTlhNGNlMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWF5IDYgMTQ6MTk6NTcgMjAxMSArMDAwMAorCisgICAgbWFrZSBkZXBlbmQKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBkZWM3ZDQ3Y2EzNzY3YzM3ZDE3OTgxZjFjZjllNTgwYWUyZmUwMjE0CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAxNDowMjowNCAyMDExICswMDAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDBlYzFjOTI5MTY3YWRiM2Q5NmI0MWVhYzI0MzUzNDk2YzMzNzFiMDgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDEzOjU5OjIwIDIwMTEgKzAwMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDFhMDE0NTI5YzVjNGEwN2M4NDA3ZTk1NWE3ZjFmZTY4NmNiN2VlN2MKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDEzOjUwOjA2IDIwMTEgKzAwMDAKKworICAgIEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbCBjb25maWd1cmF0aW9uOgorICAgIC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTAorICAgIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBkYWMxMDJiZDViNjNhMjExODFhODAzMGFkYWY1ZmY5NmI5ZjgyNmMzCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAxMzo1MDowNiAyMDExICswMDAwCisKKyAgICBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwgY29uZmlndXJhdGlvbjoKKyAgICAtIGJyb2tlbiByZW1vdmFsIG9mIE1pY3Jvc29mdCBETEwKKyAgICAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZmMzYjQxNjc5NGNmNzI5MjJmOGIyZDYzNmJiZWQzNzdjYTFhMzZlZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWF5IDYgMTM6NTA6MDYgMjAxMSArMDAwMAorCisgICAgRml4IGluY29tcGxldGUgdW5pbnN0YWxsIGNvbmZpZ3VyYXRpb246CisgICAgLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMCisgICAgLSByZW1vdmUgYXNzb3J0ZWQgbmV3IE1JQnMgYW5kIGhlYWRlciBmaWxlcworICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGYzYjEzNzI1YjdiZDY0YWM5NDhkOTcwZDlmZTk2NTI5ODhlYTQxMTgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDEyOjU4OjI4IDIwMTEgKzAwMDAKKworICAgIFN1cHBvcnQgVGFyL0daaXAgY29tbWFuZCBwYXRocyBjb250YWluaW5nIHNwYWNlcworICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDMzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGVlYzE3ODc2YTY1M2ZkMDUyZmY2MjQyNGE4Nzk1OGZhOGQwMjk0NDIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDEyOjU3OjA3IDIwMTEgKzAwMDAKKworICAgIFJlcG9ydCBHWmlwIGNvbW1hbmQgY29ycmVjdGx5CisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzFmYjM3MjI5MTQ3NDFmYTk5OGU2YjdjZWU5Y2U4ZTA3Y2Q0NzAwZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSA1IDA2OjA3OjUxIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlIE5ldC1TTk1QIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYmM1MjU4ZGUyMDMwMjI4YjM2OWUxM2QyYTQ3NDhjODU3YTBhNGI1ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSA1IDA2OjA3OjUxIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlIE5ldC1TTk1QIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZjY3YzE1MGZiMDVlZDM4ZGY0NGY4YjUyNjA5MWQ2ZTliODhkOWYzMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE1heSAzIDE5OjE1OjI3IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEd1YXJkIG5ldHNubXBfdWRwX3JlY3Zmcm9tKCkgZXRjLiBkZWNsYXJhdGlvbnMgY29uc2lzdGVudGx5LgorICAgIENIQU5HRVM6IFdpbjMyOiBCdWlsZHMgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMTAuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMDk4MWU2MDBhNjJkNTI0YmJhMGZjODc4NDQzNWQ3NmQyNzVkN2YzMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE1heSAzIDE1OjI5OjQ2IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZjNlYTM0MWZiMTk0NGRjNmE2Mzk2YWRkNzJhYzM5ZjU3OTRhMmQ2OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE1heSAzIDE1OjI5OjQ2IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYTI5MDBjNDVkMWQ5MjdlMWQ4OTE4MDBhMTQyMmE5MjJiMzc2ZDg1YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1heSAyIDExOjIyOjM0IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cgZW52aXJvbm1lbnQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNDIwNWY1MzgyOWE3MjViNWI1ZWU4MzVkNzkxOGE3ODM1YjI2YWRjNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1heSAyIDExOjIyOjM0IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cgZW52aXJvbm1lbnQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMmUwMDkxNGQ0MDhiMGVmOWE0NWQyYjMxN2IwMzMyOWU4MTQ1NjU4NgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1heSAyIDExOjEzOjIzIDIwMTEgKzAwMDAKKworICAgIFdpbjMyIERMTCBidWlsZCBmaXhlcy4KKyAgICAoQmFja3BvcnRlZCByMjAxODQgZnJvbSB0cnVuay4pCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZTc4NjQyMDdmODg4MjMwZGU2NzlhY2ZkYTFmZDliNjU3ZDc5MjYxMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEFwciAyOSAxMToxNzoxMSAyMDExICswMDAwCisKKyAgICBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZSBjb2RlIGNvbW1lbnRzIGluIHNubXBsaWIvd2luc2VydmljZS5jLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDI3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGU3YjMzZjQzZDBjMzEyNTE2MmFiYmQyNjRkN2UxZmEzZmE0MDYzMDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgMjkgMTE6MTc6MTEgMjAxMSArMDAwMAorCisgICAgU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UgY29kZSBjb21tZW50cyBpbiBzbm1wbGliL3dpbnNlcnZpY2UuYy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAzMTFhZGUyM2RlNGEwMDE0ZmUwZmMyM2NmODNkMDc3Y2Q2NjNhZDA1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXByIDI3IDIxOjE2OjIzIDIwMTEgKzAwMDAKKworICAgIERvbid0IGZyZWUgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duIGl0CisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZWRlMjQ2ODk0NjFiNzVjNDQxYTM2YTM4NGE2YzU1OTcyM2RkZTJkMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEFwciAyNyAyMToxNjoyMyAyMDExICswMDAwCisKKyAgICBEb24ndCBmcmVlIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDI0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDFhZjA4ZTFkNjA4YjdiZDEzMzYxZWFkNWM0MmY0YzQ3YTI4M2I1OTkKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBcHIgMjcgMjE6MTY6MjMgMjAxMSArMDAwMAorCisgICAgRG9uJ3QgZnJlZSB0aGUgaWZYVGFibGUgcm93IGZvdW5kIG9uIGxvYWQgZmFpbHVyZSBhcyB3ZSBkb24ndCBvd24gaXQKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA0MGFiZDhlNWFiMTFhMDdjNDk2YWIyNWYxYWQ1NGNjM2U1ODMyN2E0CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBBcHIgMTcgMjA6NTY6NDggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNzU2NDA6IFVzZSBJUF9SRUNWRFNUQUREUiBzb2Nrb3B0IHdoZXJlIGF2YWlsYWJsZSAoKkJTRCkKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjMDQ4ZjJjZTQzYmZhODJlOGQzYWQ4YTJiZDMxMjI5MGM2YmEyN2YwCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgMTUgMTM6NDI6MTQgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAorICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAwZTJkOGU4MzM3YWY3MjU3ZjdlYjcyNzY3OGY4MDM0ZTg0YWU3NGNlCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgMTUgMTM6NDI6MTQgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAorICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAzOTE1OTdjZmZkOWFiZGU1ZmY0NmI3NGM1YjZjN2UzMjFhYjdkM2MxCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgMTUgMTM6NDI6MTQgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAorICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBlNDU3NDM3MmU0NzhkMzdlZmEzOTc1Y2EwZmM3MThmY2RhMzA2MDhmCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBcHIgMTQgMjE6MzE6MDkgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2YzA2YTI1OTRmNmU4N2M3MjI1MWZmNzkzZTdkOTE4N2I4OTE1ZmJjCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBcHIgMTQgMjE6MzE6MDkgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA3ZTg5OWI1Y2YyZGIyMTY0ZTBjMWQ1ODcwNmI5NTAyZTg2NTk2OTcwCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBcHIgMTQgMjE6MTA6NTYgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZiAnd2hpbGUgKGZhbHNlKScgYmxvY2tzCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNjk2N2Q3ODk5OWI3ZjRjYjUyNzAyMDc1MGNkMzU5MjdmZTRmMmZlNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXByIDE0IDIxOjEwOjU2IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YgJ3doaWxlIChmYWxzZSknIGJsb2NrcworICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDUwMjM5ZjY2NTA1ODZiYjRiOTkyMDU0MjQ1OTJiN2I1MTkxZDU0MDQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEFwciAxNCAyMToxMDo1NiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzE3NTMyMzogRml4IGhhbmRsaW5nIG9mICd3aGlsZSAoZmFsc2UpJyBibG9ja3MKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1ZDVkNmZkNDgxNTI4YWRmN2NhMDFlYzA3OTA4NDljYTczMTk2ZGMyCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBcHIgMTQgMjA6NTI6NTkgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZiBub24tdGFibGUgb2JqZWN0cyBuYW1lZCBmb29UYWJsZQorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDNhOGRjYTMxNDNjNWNhMTE0NDNmZWIwN2Y3YWY0YmVkODA4YmRkMzIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEFwciAxNCAyMDo1Mjo1OSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIwNDg4MzogRml4IGhhbmRsaW5nIG9mIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYjRiYzdiMjdjZGE0OTkzOTFiOWVjYjJjYmU1NDFlMTBjMTUxYWJkNQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXByIDE0IDIwOjUyOjU5IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2Ygbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2YTI5OTY4Y2JkYzAxNjZhNDdhOTNkMWMxNGQzOWEyZTM5ZmE5OGQyCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBcHIgMTQgMjA6NDQ6MzcgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcworICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDM0MmNhOWRiNTM3MWNiYWQ3ZmE5NmFmMzJhY2VkNzUwYzJkNzdkYjEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEFwciAxNCAyMDo0NDozNyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydCBlbnVtZXJhdGlvbnMgaW4gbm90aWZpY2F0aW9uIHZhcmJpbmRzCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzZhNzFlYWViZWY2YzgzMWRhYTM2ZjU3ZWMxZmYyMzBmMDUyYjMzMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXByIDE0IDIwOjQ0OjM3IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjExNDg0OiBTdXBwb3J0IGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBmMDhhMTk5ODA3MWI2ZDRmNGVjOGQ5ZjVmYmY4YWVmZTU2MjljZTdhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDEyIDIwOjAxOjU1IDIwMTEgKzAwMDAKKworICAgIEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDMzMzFlMDliYmVjNzM0MDM0ZGJkYjc2N2U2NmMwM2UxNGE0NTQ4ZDUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBcHIgMTIgMjA6MDE6NTUgMjAxMSArMDAwMAorCisgICAgQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZGQ4ODlkNTZhYmM0YTZhMmI3NmIxZjc0ODllYTU1YjA0NjdiZTE4NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEFwciAxMiAyMDowMTo1NSAyMDExICswMDAwCisKKyAgICBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBkOTQ3NzI1MWQxNTRmYmI1MjZmNTMzNjdiMGI2ZWJjZDFkMjY3NGFjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDEyIDE5OjUzOjEwIDIwMTEgKzAwMDAKKworICAgIEZpeCBmb3IgZ2FyYmFnZSBvdXRwdXQgd2hlbiBhZ2VudCBwcmVzZW50cyBtb3JlIGNvbHVtbnMgaW4gYnVsaworICAgIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNzljNjk4YTE0NzRlMTA4NTVmMjEwYTY5OTg3MDgwOTY3MTJiZTYwOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEFwciAxMiAxOTo1MzoxMCAyMDExICswMDAwCisKKyAgICBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZSBjb2x1bW5zIGluIGJ1bGsKKyAgICByZXNwb25zZSB0aGFuIG91ciBsb2NhbCBNSUIgZmlsZSAgc3BlY2lmaWVkLgorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGYzOTRhMjY2NjA0YWY5ZjNlMWI1M2VmNmRhMzc1YmFhNGEzOTAxZmUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBcHIgMTIgMTk6NTM6MTAgMjAxMSArMDAwMAorCisgICAgRml4IGZvciBnYXJiYWdlIG91dHB1dCB3aGVuIGFnZW50IHByZXNlbnRzIG1vcmUgY29sdW1ucyBpbiBidWxrCisgICAgcmVzcG9uc2UgdGhhbiBvdXIgbG9jYWwgTUlCIGZpbGUgIHNwZWNpZmllZC4KKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAwMDdlNzZkNmRjMzhhY2RmYWI3NTZmZTliZDhlMjNkODIwOTViNGM2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDEyIDE5OjUwOjA4IDIwMTEgKzAwMDAKKworICAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBmMWVkY2ZkMDQ5Yjc2MGJjNTAxMDRjZmU4MjgzOGVkMmIzNjMyODYxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDEyIDE5OjUwOjA4IDIwMTEgKzAwMDAKKworICAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBhZjUwOTI0MDY5YTg4YjViYWRjMDg0MDY1ZTIxYjY5MWYzMWYzMTNkCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDEyIDE5OjUwOjA4IDIwMTEgKzAwMDAKKworICAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAyZmIwYjg5YzIzMjNkYjMwOWIxNjJkNjBhOTQzYzFlM2EwYTE3ZDA3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgQXByIDkgMjE6NTk6MTEgMjAxMSArMDAwMAorCisgICAgUmVtb3ZlIGJvZ3VzIChMaW51eCkgZGVmaW5lcworICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMzZGJiZDlmYzU3YWNiY2E5OTkzNTZjZGY5YmU5NThjYzExNzM1ZWYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBBcHIgOSAyMTo1NjozMyAyMDExICswMDAwCisKKyAgICBIQVZFX1RNX1RNX0dNVE9GRiBpcyBIQVZFX1NUUlVDVF9UTV9UTV9HTVRPRkYKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBiMWNkMjFhNGQ3MWMxN2MxMjIxMzRhYzMyODQ5MTdmNjUzNjNlNGQyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgQXByIDkgMjA6MDQ6MjkgMjAxMSArMDAwMAorCisgICAgU29sYXJpcyBzdXBwb3J0IGZvciBTQ1RQLU1JQgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGM2NjU5Yzk0YWQ5YmE4MDYwZGRlMTg5NDI3NjFjZTg1ZDFhNWNjMTkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBBcHIgOSAxOTo1MDozMCAyMDExICswMDAwCisKKyAgICBUWiBpcyBvbmUgaG91ciBvZmYgaWYgSEFWRV9UTV9UTV9HTVRPRkYgYW5kIFNZU1YgKHN1Y2ggaXMgTGludXgpCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjUgLT4gVjUuNS4xCisKKzIwMTEtMDMtMTggMTE6MTUgIGR0czEyCiAKICAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCAgIAotICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgCisgICAgICAgIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgogCiAgICBtYWtlIGRlcGVuZAogCi0yMDExLTA2LTAxIDE1OjQyICBkdHMxMgorMjAxMS0wMy0xOCAxMDozNiAgZHRzMTIKIAotICAgKiBwZXJsL1NOTVAvU05NUC54czoKLQotICAgUmVpbnN0YXRlIGFuICJ1bnVzZWQiIGxhYmVsIHRoYXQgaXMgYWN0dWFsbHkgc3RpbGwgcmVxdWlyZWQuCi0gICAocmVmZXJlbmNlZCBpbiBsaW5lIDI3MTApCi0KLTIwMTEtMDYtMDEgMTU6MzIgIGR0czEyCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgotCi0gICBGaXggdHlwbwotCi0yMDExLTA2LTAxIDE1OjA4ICBkdHMxMgotCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAorICAgKiAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCiAgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCkBAIC0xNDEsNDM3ICs0NzkyLDUyIEBACiAgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCiAgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCiAgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCiAgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsICAKLSAgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CiAKICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCiAKLTIwMTEtMDYtMDEgMTQ6NTEgIGR0czEyCisyMDExLTAzLTE4IDEwOjMyICBkdHMxMgogCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6CiAKICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQogCi0yMDExLTA1LTMxIDIyOjQ5ICBoYXJkYWtlcgorMjAxMS0wMy0xMyAyMDowOSAgZHRzMTIKIAotICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgorICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6CiAKLSAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMDY2ODYyOiBmcm9tIGZoZXc6IGZpeCB0aGUgYWdlbnQgZm9yCi0gICBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4KKyAgIEJyaW5nIHRoZSBuYW1pbmcgb2YgdGhlIGxhcmdlX2ZkX3NldCBzZWxlY3QgY2FsbCBpbnRvCisgICBsaW5lIHdpdGggdGhlIHJlc3Qgb2YgdGhlIEFQSS4KIAotMjAxMS0wNS0zMSAxMjozMCAganNhZnJhbmVrCisyMDExLTAzLTEzIDIwOjA2ICBkdHMxMgogCi0gICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOgogCi0gICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgaHJTV1J1blBhdGggb2Ygc3dhcHBlZC1vdXQgcHJvY2Vzc2VzIG9uCi0gICBMaW51eC4KLSAgIAotICAgZmdldHMoKSByZXR1cm5zIE5VTEwgYm90aCB3aGVuIC9wcm9jL1BJRC9jbWRsaW5lIGlzIGVtcHR5ICg9Ci0gICBzd2FwcGVkIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrCi0gICAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuCi0KLTIwMTEtMDUtMjYgMTY6MTIgIGhhcmRha2VyCi0KLSAgICogc25tcGxpYi9zbm1wX2FwaS5jOgotCi0gICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28gdGhleSByZXRyeSBwcm9iaW5nCi0gICBmb3IgYW4gZW5naW5lSUQuCi0KLTIwMTEtMDUtMjYgMTY6MDYgIGhhcmRha2VyCi0KLSAgICogc25tcGxpYi9zbm1wX2FwaS5jOgotCi0gICBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkIHJld3JpdGluZyBleGlzdGluZwotICAgYXV0aGtleS9wcml2a2V5L2V0Y3MKLQotMjAxMS0wNS0yNSAwOToyMSAgYnZhc3NjaGUKLQotICAgKiBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmM6Ci0KLSAgIENIQU5HRVM6IHNubXBkOiBVc2UgcHJvcGVyIGZvcm1hdCBzcGVjaWZpZXIgaW4gZGVidWcgc3RhdGVtZW50cwotICAgZm9yIHByaW50aW5nIHZhbHVlcyBvZiB0eXBlICdvaWQnLgotCi0yMDExLTA1LTI0IDEyOjUxICBqc2FmcmFuZWsKLQotICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jOgotCi0gICBBZGRlZCBOVUxMLWNoZWNrcyBhZnRlciBtYWxsb2MKLQotMjAxMS0wNS0yMiAxOTozNCAgZHRzMTIKLQotICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6Ci0KLSAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDMzMDUxNTc6IEZpeCBpcEFkZHJlc3NQcmVmaXggaGFuZGxpbmcgb2YKLSAgIElQdjYgYWRkcmVzc2VzCi0KLTIwMTEtMDUtMjIgMTk6MDcgIGR0czEyCi0KLSAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKLQotICAgQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDMyOTU0MDc6IEZpeCBoYW5kbGluZyBvZiB2b2lkIHBvaW50ZXIKLQotMjAxMS0wNS0yMiAxODo1NyAgZHRzMTIKLQotICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi9zbm1wX2FwaS5jOgotCi0gICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyNjQ4NTI6IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcwotICAgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKQotCi0yMDExLTA1LTIwIDE1OjQxICBkdHMxMgotCi0gICAqICBzbm1wbGliL3NubXBBQUw1UFZDRG9tYWluLmMsIHNubXBsaWIvc25tcElQWERvbWFpbi5jLCAgIAotICAgICAgc25tcGxpYi9zbm1wU1RERG9tYWluLmMsIHNubXBsaWIvc25tcFRDUERvbWFpbi5jLCAgIAotICAgICAgc25tcGxpYi9zbm1wVENQSVB2NkRvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBEb21haW4uYywgICAKLSAgICAgIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYywgc25tcGxpYi9zbm1wVW5peERvbWFpbi5jOgotCi0gICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyMzQ3NTQ6IEVuc3VyZSBvbGQgZl9jcmVhdGVfZnJvbV90c3RyaW5nCi0gICBob29rIGlzIGluaXRpYWxpemVkIHRvIE5VTEwKLQotMjAxMS0wNS0xOSAxOTo0NiAgaGFyZGFrZXIKLQotICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotCi0gICB1c2UgI2lmZGVmIHJhdGhlciB0aGFuICNpZiBmb3IgZGVmaW5lIGNoZWNrcy4KLQotMjAxMS0wNS0xOSAxNzoxOSAgZHRzMTIKLQotICAgKiBtYW4vc25tcF9hcGkuMy5kZWYsIG1hbi9zbm1wX3Nlc3NfYXBpLjMuZGVmOgotCi0gICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UKLSAgIGFuZCBzbm1wX2FzeW5jX3NlbmQKLQotMjAxMS0wNS0xMiAwOTowMyAgYnZhc3NjaGUKLQotICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0KLSAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gc25tcF9mcmVlX3Nlc3Npb24oKS4KLQotMjAxMS0wNS0xMiAwODoxMiAgYnZhc3NjaGUKLQotICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOgotCi0gICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAKLSAgIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwTmV0VG9NZWRpYVRhYmxlLgotCi0yMDExLTA1LTEyIDA4OjA4ICBidmFzc2NoZQotCi0gICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzoKLQotICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QCi0gICAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpZlRhYmxlLgotCi0yMDExLTA1LTEyIDA3OjMzICBidmFzc2NoZQotCi0gICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jOgotCi0gICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAKLSAgIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwQWRkclRhYmxlLgotCi0yMDExLTA1LTEyIDA2OjU0ICBidmFzc2NoZQotCi0gICAqIENoYW5nZUxvZzoKLQotICAgRG9jdW1lbnRhdGlvbiAvIHNvdXJjZSBjb2RlIGNvbW1lbnQgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+Ci0gICBleGlzdGVudC4KLQotMjAxMS0wNS0xMCAxNTowMiAgYnZhc3NjaGUKLQotICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzoKLQotICAgTWluR1c6IGF2b2lkIHRoYXQgZ2NjIGNvbXBsYWlucyBhYm91dCBwYXNpbmcgYSAoY2hhciAqKSBhcmd1bWVudAotICAgd2hpbGUgKHVuc2lnbmVkIGNoYXIgKikgaXMgZXhwZWN0ZWQuCi0KLTIwMTEtMDUtMDkgMjA6NTIgIG5iYQotCi0gICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYzoKLQotICAgVXNlIHN5bWJvbGljIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzCi0KLTIwMTEtMDUtMDggMjA6MDEgIG5iYQotCi0gICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmM6Ci0KLSAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCi0gICBUaGVzZSBtb2R1bGVzIHdvcmssIGJ1dDoKLSAgIC0gVGhleSBhcmUgTGludXggb25seQotICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5Ci0gICBhcmUgcG9wdWxhdGVkCi0gICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKLSAgIC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4KLSAgIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QKLSAgIGJpbmFyeQotICAgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikKLQotMjAxMS0wNS0wNyAxNToyMiAgYnZhc3NjaGUKLQotICAgKiBwZXJsL1NOTVAvU05NUC54czoKLQotICAgUmVtb3ZlZCBhbiB1bnVzZWQgbGFiZWwgZnJvbSBwZXJsL1NOTVAvU05NUC54cy4KLQotMjAxMS0wNS0wNiAyMTozMiAgaGFyZGFrZXIKLQotICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmg6Ci0KLSAgIE5FV1M6IFBBVENIIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kCi0gICBkaXNtYW4vdHJhY2Vyb3V0ZSB0byBhdCBsZWFzdCBjb21waWxlCi0KLTIwMTEtMDUtMDYgMTc6NDYgIGR0czEyCi0KLSAgICogQ0hBTkdFUzoKLQotICAgdmVyc2lvbiB1cGRhdGUKLQotMjAxMS0wNS0wNiAxNzozNyAgZHRzMTIKLQotICAgKiBDaGFuZ2VMb2c6Ci0KLSAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMTEtMDUtMDYgMTc6MzUgIGR0czEyCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kOgotCi0gICBtYWtlIGRlcGVuZAotCi0yMDExLTA1LTA2IDE3OjIyICBkdHMxMgotCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDExLTA1LTA2IDE3OjE3ICBkdHMxMgotCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0KLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotCi0yMDExLTA1LTA2IDEzOjUwICBkdHMxMgotCi0gICAqIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaToKLQotICAgRml4IGluY29tcGxldGUgdW5pbnN0YWxsIGNvbmZpZ3VyYXRpb246Ci0gICAtIGJyb2tlbiByZW1vdmFsIG9mIE1pY3Jvc29mdCBETEwKLSAgIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMKLQotMjAxMS0wNS0wNSAwNjowNyAgYnZhc3NjaGUKLQotICAgKiBzbm1wbGliL3Rvb2xzLmMsIHRlc3RpbmcvVEVTVENPTkYuc2g6Ci0KLSAgIENIQU5HRVM6IE1pbkdXOiBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlCi0gICBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cwotICAgdGhhdCBmYWlsZWQgcHJldmlvdXNseSBhZnRlciB0aGUgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpCi0gICBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuCi0KLTIwMTEtMDUtMDMgMTU6MjkgIGJ2YXNzY2hlCi0KLSAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6Ci0KLSAgIENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0Ci0gICBvZiAxMjcgY2hhcmFjdGVycyAodGhpcyBsaW1pdGF0aW9uIHdhcyByZXBvcnRlZCBieSBTeWx2YWluIERlcnkpLgotCi0yMDExLTA1LTAyIDExOjIyICBidmFzc2NoZQotCi0gICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKLSAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotCi0gICBDSEFOR0VTOiBXaW4zMjogaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjYW4gbm93Ci0gICBiZSB1c2VkIGluIHRoZSBNaW5HVyBlbnZpcm9ubWVudC4KLQotMjAxMS0wNC0yOSAxMToxNyAgYnZhc3NjaGUKLQotICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzoKLQotICAgU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UgY29kZSBjb21tZW50cyBpbgotICAgc25tcGxpYi93aW5zZXJ2aWNlLmMuCi0KLTIwMTEtMDQtMjcgMjE6MTYgIGhhcmRha2VyCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jOgotCi0gICBEb24ndCBmcmVlIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93bgotICAgaXQKLQotMjAxMS0wNC0xNSAxMzo0MiAgZHRzMTIKLQotICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0KLSAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lECi0gICBwcmVmaXggbGVuZ3RoCi0gICBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOiAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRAotICAgcHJlZml4IGxlbmd0aAotCi0yMDExLTA0LTE0IDIxOjMxICBkdHMxMgotCi0gICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6Ci0KLSAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NTogRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zCi0KLTIwMTEtMDQtMTQgMjE6MTAgIGR0czEyCi0KLSAgICogbG9jYWwvbWliMmM6Ci0KLSAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YgJ3doaWxlIChmYWxzZSknCi0gICBibG9ja3MKLQotMjAxMS0wNC0xNCAyMDo1MiAgZHRzMTIKLQotICAgKiBsb2NhbC9taWIyYzoKLQotICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZiBub24tdGFibGUKLSAgIG9iamVjdHMgbmFtZWQgZm9vVGFibGUKLQotMjAxMS0wNC0xNCAyMDo0NCAgZHRzMTIKLQotICAgKiBsb2NhbC9taWIyYzoKLQotICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQgZW51bWVyYXRpb25zIGluCi0gICBub3RpZmljYXRpb24gdmFyYmluZHMKLQotMjAxMS0wNC0xMiAyMDowMSAgbmJhCi0KLSAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OgotCi0gICBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIKLQotMjAxMS0wNC0xMiAxOTo1MyAgbmJhCi0KLSAgICogYXBwcy9zbm1wdGFibGUuYzoKLQotICAgRml4IGZvciBnYXJiYWdlIG91dHB1dCB3aGVuIGFnZW50IHByZXNlbnRzIG1vcmUgY29sdW1ucyBpbiBidWxrCi0gICByZXNwb25zZSB0aGFuIG91ciBsb2NhbCBNSUIgZmlsZSBzcGVjaWZpZWQuCi0KLTIwMTEtMDQtMTIgMTk6NTAgIG5iYQotCi0gICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6Ci0KLSAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKLQotMjAxMS0wMy0xNSAxMjozNyAgZHRzMTIKLQotICAgKiBDSEFOR0VTLCBORVdTOgotCi0gICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDExLTAzLTE1IDEwOjU3ICBkdHMxMgotCi0gICAqIENoYW5nZUxvZzoKLQotICAgdmVyc2lvbiB1cGRhdGUKLQotMjAxMS0wMy0xNSAxMDo1NiAgZHRzMTIKLQotICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsICAgCi0gICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6Ci0KLSAgIG1ha2UgZGVwZW5kCi0KLTIwMTEtMDMtMTUgMTA6NDIgIGR0czEyCi0KLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAgIAotICAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sICAgCi0gICAgICBwZXJsL1NOTVAvU05NUC5wbSwgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLCAgIAotICAgICAgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sIHBlcmwvYWdlbnQvYWdlbnQucG0sICAgCi0gICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgICAKLSAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgotCi0gICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLQotMjAxMS0wMy0xNSAxMDo0MSAgZHRzMTIKLQotICAgKiBNYWtlZmlsZS50b3A6Ci0KLSAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMTEtMDMtMTIgMDY6NTkgIHJzdG9yeQotCi0gICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgotCi0gICBDSEFOR0VTOiBzbm1wbGliOiByZWFsbG9jK2luaXQgaW5zdGVhZCBvZiBjYWxsb2MKLSAgIAotICAgaW5zcGlyZWQgYnkgcGF0Y2ggMzE5NTUzMiBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyCi0KLTIwMTEtMDMtMTIgMDU6NDcgIHJzdG9yeQotCi0gICAqICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYywgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCi0gICAgICAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAotICAgICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaDoKLQotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiBvcHRpbWl6YXRpb25zIGZvciBsYXJnZSByb3V0ZSB0YWJsZXMgZnJvbQotICAgU3RlcGhlbiBIZW1taW5nZXIKLSAgIAotICAgYXBwbGllZCBwYXJ0cyAxLTMgb2YgNCBmcm9tIGhpbSAobXNncyB0byBjb2RlcnMgb24gMi8yOC8xMTsKLSAgIHN1YmplY3QKLSAgIGlwLWZvcndhcmQtbWliIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50czsgcGFydCA0IG5lZWRzIG1vcmUgd29yaworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IEFkZCB0aGUgZnVuY3Rpb24KKyAgIG5ldHNubXBfbGFyZ2Vfc2VsZWN0KCkKKyAgIChwbHVzIHR3ZWFrcyB0byBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUpCiAKIDIwMTEtMDMtMTEgMTE6MTEgIGpzYWZyYW5lawogCkBAIC02MDYsNiArNDg3Miw4NCBAQAogICAgY29tbWFuZCBpcyBub3cgd3JvbmcgZm9yICphbGwqIGJyYW5jaGVzLCByYXRoZXIKICAgIHRoYW4ganVzdCBtb3N0IG9mIHRoZW0hKQogCisyMDExLTAyLTI1IDExOjQ5ICBkdHMxMgorCisgICAqICBtYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMywgbWFuL25ldHNubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMywgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgbWFuL25ldHNubXBfcm93X21lcmdlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXIuMywgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgbWFuL25ldHNubXBfdGFibGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdG9vbHMuaC4zLCBtYW4vbmV0c25tcF91dGlsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorCisgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorCisyMDExLTAyLTI1IDExOjQxICBkdHMxMgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWMsIHBlcmwvQVNOL0FTTi5wbSwgICAKKyAgICAgIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sIHBlcmwvT0lEL09JRC5wbSwgcGVybC9TTk1QL1NOTVAucG0sIAorICAgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sCisgICAgICBwZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbSwgICAgcGVybC9hZ2VudC9hZ2VudC5wbSwKKyAgICAgIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAgIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG06CisKKyAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCisyMDExLTAyLTI1IDExOjM5ICBkdHMxMgorCisgICAqIENoYW5nZUxvZzoKKworICAgdmVyc2lvbiB1cGRhdGUKKworMjAxMS0wMi0yNSAxMToxNSAgZHRzMTIKKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sICAgCisgICAgICBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sIHBlcmwvU05NUC9TTk1QLnBtLCAKKyAgICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLAorICAgICAgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgICAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOgorCisgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKwogMjAxMS0wMi0yNSAxMToxMCAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXB2My5jOgpAQCAtNjE2LDggKzQ5NjAsNyBAQAogCiAgICAqIGFwcHMvc25tcHRhYmxlLmM6CiAKLSAgIEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleCBjb250YWlucyA6Ci0gICBjaGFyYWN0ZXIKKyAgIEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleCBjb250YWlucyA6IGNoYXJhY3RlcgogCiAyMDExLTAyLTIzIDA5OjMwICBuYmEKIApAQCAtNjI1LDExICs0OTY4LDc4IEBACiAKICAgIEZyZWVCU0QgOCBzdXBwb3J0CiAKLTIwMTEtMDItMjEgMTk6MDggIGhhcmRha2VyCisyMDExLTAyLTIyIDE1OjI1ICBkdHMxMgogCi0gICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOgorICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jOgogCi0gICBVcGRhdGVkIGNvbW1lbnQgYWJvdXQgd2hlcmUgbWFrZXJlbGVhc2UgY29tZXMgZnJvbSAobm93IGdpdGh1YikKKyAgIFJldmVydCBhIGJvZ3VzIGNoYW5nZSB0aGF0IGNyZXB0IGludG8gdGhlIGNvZGUuCisKKzIwMTEtMDItMjIgMDg6NTUgIGR0czEyCisKKyAgICoge2V2ZXJ5dGhpbmd9OgorCisgICBGaXggNS41LnggYnJhbmNoIHN0cnVjdHVyZQorCisyMDExLTAyLTIxIDEzOjQ0ICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZToKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisKKzIwMTEtMDItMjEgMTM6MjQgIGR0czEyCisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisKKyAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisKKzIwMTEtMDItMjEgMTM6MTcgIGR0czEyCisKKyAgICogIEZBUSwgUkVBRE1FLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIGRpc3QvbmV0LXNubXAuc3BlYzoKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCiAKIDIwMTEtMDItMjEgMTE6MTQgIGJ2YXNzY2hlCiAKQEAgLTY4OSw2ICs1MDk5LDEyIEBACiAKICAgIHJlcnVuIGF1dG9oZWFkZXIvYXV0b2NvbmYKIAorMjAxMS0wMi0xNSAyMToyNiAgbmJhCisKKyAgICogbTQvbmV0c25tcF9zZWFyY2hfbGlicy5tNDoKKworICAgVG9vIG11Y2ggcXVvdGluZyBpcyBiYWQKKwogMjAxMS0wMi0xNSAyMToxMSAgbmJhCiAKICAgICogIGFnZW50L21pYmdyb3VwL21pYklJLmgsIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYywgICAKQEAgLTcxMCw2ICs1MTI2LDI1IEBACiAKICAgIEZpbHRlciBJUHY2IGVudHJpZXMgZnJvbSBJUHY0IHRhYmxlCiAKKzIwMTEtMDItMTUgMjA6NDIgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmM6CisKKyAgIFByb3BlciB1c2Ugb2YgZ2V0cHJvYzIgYW5kIGRyYWdvbmZseSBzdXBwb3J0CisKKzIwMTEtMDItMTUgMjA6NDEgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmM6CisKKyAgIGdldHZmc3N0YXQgaXMgb25seSBmb3IgTmV0QlNECisKKzIwMTEtMDItMTUgMjA6MzkgIG5iYQorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOgorCisgICBEZXRlY3QgbmVlZCBmb3IgLWxrdm0gaW4gcHJvcGVyIHRpbWUKKwogMjAxMS0wMi0xNCAxNDozOCAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9zbm1wZC5jOgpAQCAtODExLDYgKzUyNDYsMTIgQEAKICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNTE4OTc6IGZkIGxlYWsgdy8gL3Byb2MvcGFydGl0aW9ucwogICAgcmVhZCBpbiBkaXNraW8KIAorMjAxMS0wMS0yOSAyMzozNiAgdGFuZGVycworCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmM6CisKKyAgIE5FV1M6IHNubXBkOiBCVUc6IDMxNjY1Njg6IGhyU3lzdGVtUHJvY2Vzc2VzIG1pc3NpbmcgaW4gNS42LzUuNi4xCisKIDIwMTEtMDEtMjcgMDk6MzUgIGR0czEyCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzoKQEAgLTgzNiwxMiArNTI3Nyw0MyBAQAogICAgZmdldHMoKSBmcm9tIGl0LiBzbm1wZCBzaG91bGQgY29udGludWUgd2l0aCBvdGhlciBwcm9jZXNzZXMgYW5kCiAgICBub3QgdG8gc3RvcC4KIAorMjAxMS0wMS0xOSAxMzo1NyAganNhZnJhbmVrCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOgorCisgICBNYWtlIHVzIGNvbXBhdGlibGUgd2l0aCBycG0tNC45LCBycG1HZXRGaWxlc3lzdGVtTGlzdCBkb2VzIG5vdAorICAgZXhpc3QgYW55bW9yZSwgc28gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgc2hvdWxkIG5vdCBjaGVjayBpdC4KKworMjAxMS0wMS0xOSAwNjozMSAgbmJhCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOgorCisgICBkaXNrSU9MQXggcmVxdWlyZXMgZXhwIHdoaWNoIG1heSByZXF1aXJlIC1sbQorCiAyMDExLTAxLTE5IDA2OjIwICBuYmEKIAogICAgKiBhY2NvbmZpZy5oOgogCiAgICBEZWZpbmUgRFJBR09ORkxZSUQKIAorMjAxMS0wMS0xOCAyMjowMSAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgorCisgICB0eXBvCisKKzIwMTEtMDEtMTggMjE6NTYgIG5iYQorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMToKKworICAgQ2hlY2sgZm9yIC1sa2luZm8KKworMjAxMS0wMS0xOCAyMTo1NCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oOgorCisgICBGaW5kIHByb3BlciBpZi1taWIgaW50ZXJmYWNlIGZvciBOZXRCU0QKKwogMjAxMS0wMS0xNCAxMjoyOCAganNhZnJhbmVrCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmM6CkBAIC04NjAsNiArNTMzMiwyMiBAQAogICAgWzFdOgogICAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9tYWlsYXJjaGl2ZS9mb3J1bS5waHA/dGhyZWFkX25hbWU9MjAwNjA5MjAxMzQ5MzUuMzViMzZlZDYlNDBkZXYuZnV0ei5vcmcmZm9ydW1fbmFtZT1uZXQtc25tcC1jb2RlcnMKIAorMjAxMS0wMS0xNCAwODozOSAgYnZhc3NjaGUKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MsIG5ldC1zbm1wLWNvbmZpZy5pbiwgICAKKyAgICAgIHNubXBsaWIvTWFrZWZpbGUuaW46CisKKyAgIENIQU5HRVM6IEN5Z3dpbjogbGlibmV0c25tcCBkb2VzIG5vdyBidWlsZCBhcyBhIERMTCB3aGVuCisgICBjb25maWd1cmVkIHdpdGggLS1lbmFibGUtc2hhcmVkLgorICAgQ0hBTkdFUzogQ3lnd2luOiBwZXJsIG1vZHVsZXMgZG8gbm93IGJ1aWxkICgtLXdpdGgtcGVybC1tb2R1bGVzKS4KKyAgIChCYWNrcG9ydGVkIHIxODgyNSBmcm9tIHRoZSB0cnVuay4pCisKKzIwMTEtMDEtMTQgMDg6MjIgIGJ2YXNzY2hlCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgUmVnZW5lcmF0ZWQgd2l0aCBhdXRvcmVjb25mIC1pdi4KKwogMjAxMS0wMS0xNCAwNjoyNSAgcnN0b3J5CiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6CkBAIC04NzMsMTUgKzUzNjEsMTAxIEBACiAgICBFbnN1cmUgcmVsZWFzZXMgYXJlIGluc3RhbGxlZCB0byB0aGUgY29ycmVjdCBwYXRoIHdpdGhpbiB0aGUKICAgIC90YWdzIFNWTiB0cmVlCiAKKzIwMTEtMDEtMTMgMTU6NDUgIGR0czEyCisKKyAgICogQ0hBTkdFUywgTkVXUzoKKworICAgdmVyc2lvbiB1cGRhdGUKKworMjAxMS0wMS0xMyAxNTozMyAgZHRzMTIKKworICAgKiBDaGFuZ2VMb2c6CisKKyAgIHZlcnNpb24gdXBkYXRlCisKKzIwMTEtMDEtMTMgMTU6MjYgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDoKKworICAgbWFrZSBkZXBlbmQKKwogMjAxMS0wMS0xMyAxNToxNSAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmM6CiAKICAgIFJlbW92ZSBDKysgY29tbWVudHMKIAorMjAxMS0wMS0xMyAxNDo1NSAgZHRzMTIKKworICAgKiAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIG1hbi9uZXRzbm1wX3RhYmxlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKworICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKworMjAxMS0wMS0xMyAxNDo0MiAgZHRzMTIKKworICAgKiBjb25maWd1cmU6CisKKyAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCisyMDExLTAxLTEzIDE0OjQxICBkdHMxMgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6CisKKyAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCisyMDExLTAxLTEzIDEzOjE3ICBkdHMxMgorCisgICAqIGFnZW50L2F1dG9fbmxpc3QuYzoKKworICAgRml4IGJyb2tlbiBwYXRjaAorCiAyMDExLTAxLTEzIDEyOjE0ICBkdHMxMgogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnM6CiAKICAgIENvbmZpZ3VyZSBmaXhlcyBmb3IgRHJhZ29uRmx5IHN1cHBvcnQKIApAQCAtOTI5LDcgKzU1MDMsOCBAQAogCiAyMDExLTAxLTEyIDE0OjM3ICByc3RvcnkKIAotICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAgIAorICAgKiAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAgIAogICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMsICAgCiAgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMsCiAgICAgICAgIApAQCAtOTM5LDEwICs1NTE0LDE0IEBACiAgICAgICAKICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jLAogICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jLCAgIAogICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYywgICAKICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMsICAgCiAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmMsICAgCiAgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jLAogICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuYzoKIApAQCAtOTg4LDEyICs1NTY3LDEyIEBACiAgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuYywgICAKICAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jOgogCi0gICBDSEFOR0VTOiBOZXRCU0Q6IERyYWdvbkZseSBzdXBwb3J0CisgICBORVdTOiBOZXRCU0Q6IERyYWdvbkZseSBzdXBwb3J0CiAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KIAogMjAxMS0wMS0xMSAxNDozNiAgZHRzMTIKIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnM6CiAKICAgIE5ldEJTRC9EcmFnb25GbHkgJ3N0cnVjdCBpZm5ldCcgcmVxdWlyZXMgS0VSTkVMLCBidXQgbm90IF9LRVJORUwKICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQpAQCAtMTAyMSw3ICs1NjAwLDcgQEAKIAogMjAxMS0wMS0xMSAxMjoyNCAgZHRzMTIKIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczoKIAogICAgQWRkaXRpb25hbCBoZWFkZXJzIHdoZW4gdGVzdGluZyBmb3IgSVB2NiBoZWFkZXJzCiAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KQEAgLTEwMzMsOSArNTYxMiwxNiBAQAogICAgTWlzc2luZyB0eXBlIHVuZGVyIGRhcndpbgogICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCiAKKzIwMTEtMDEtMTEgMTI6MTAgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CisKKyAgIE5ldEJTRCBzdXBwb3J0IGZvciBEaXNrIEkvTyBzdGF0cworICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKIDIwMTEtMDEtMTEgMTI6MDEgIGR0czEyCiAKLSAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMsICAgCiAgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCiAgICBIYW5kbGUgc3lzdGVtcyB3aXRoICdzdHJ1Y3QgdGltZXNwZWMgaWZuZXQuaWZfbGFzdGNoYW5nZScgKHJhdGhlcgpAQCAtMTA5MSw2ICs1Njc3LDIzIEBACiAgICBGaXggZGl2aWRlLWJ5LXplcm8gZXJyb3IgaW4gQ1BVIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MKICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQogCisyMDExLTAxLTA5IDIyOjU0ICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKKworICAgQ0hBTkdFUzogT3BlbkJTRDogVXBkYXRlIFNXUnVuIGNvZGUgdG8gdXNlIGt2bV9nZXRwcm9jMgorICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTA5IDIxOjMwICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnM6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBPcGVuQlNEOiBGaXggb3JkZXIgb2YgaGVhZGVycyB3aGVuIGNoZWNraW5nCisgICA8bmV0aW5ldC9pbl9wY2IuaD4KKyAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KKwogMjAxMS0wMS0wOSAxOTo0NCAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jOgpAQCAtMTExNSwxMyArNTcxOCwxNCBAQAogCiAgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X25saXN0LmMsICAgCiAgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9uZXRic2QuYzoKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfbmV0YnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmM6CiAKICAgIHN5c2N0bCB0YWtlcyBhICdzaXplX3QnIHZhcmlhYmxlIGZvciB0aGUgc2l6ZSBwYXJhbWV0ZXIKIAogMjAxMS0wMS0wOCAwMDo0NyAgbWFnZnIKIAotICAgKiBhY2NvbmZpZy5oOgorICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCiAgICBVcGRhdGUgYWNjb25maWcuaCB3aXRoIGNoYW5nZXMgZnJvbSByMTk4MTkuCiAgICBSZXJ1biBhdXRvaGVhZGVyLgpAQCAtMTE3MCw2ICs1Nzc0LDEzIEBACiAgICBVcGRhdGUgcmV0cmlldmFsIG9mIGNhY2hlIHVzYWdlIHN0YXRpc3RpY3Mgb24gRnJlZUJTRAogICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQogCisyMDExLTAxLTA3IDE0OjMxICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYzoKKworICAgRml4IGhhbmRsaW5nIG9mIHN5c09iamVjdElEIGxlbmd0aAorICAgKGJhY2twb3J0IG9mIHJldmlzaW9ucyAxOTM4MiAmIDE5NDA0KQorCiAyMDExLTAxLTA3IDE0OjIwICBkdHMxMgogCiAgICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CkBAIC0xMTc3LDYgKzU3ODgsMTIgQEAKICAgIEluY3JlYXNlIG1heGltdW0gc2l6ZSBvZiBleGVjdXRlIG91dHB1dCBjYWNoZQogICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQogCisyMDExLTAxLTA3IDE0OjEwICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5jOgorCisgICBBZGQgbWlzc2luZyBzdGFuZGFyZCBOZXQtU05NUCBoZWFkZXIgZmlsZXMKKwogMjAxMS0wMS0wNyAxNDowOSAgZHRzMTIKIAogICAgKiAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsICAgCkBAIC0xMjc3LDEyICs1ODk0LDEyIEBACiAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjk0MTgxMTogSGFuZGxlIHN1Y2Nlc3NmdWwgcmVxdWVzdHMgd2l0aAogICAgcmVxSUQgMAogCi0yMDExLTAxLTA1IDE2OjMxICBkdHMxMgorMjAxMS0wMS0wNiAwOTozOCAgYnZhc3NjaGUKIAotICAgKiBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jOgorICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmM6CiAKLSAgIFVzZSB0aGUgYXBwcm9wcmlhdGUgQVBJIGNhbGwgZm9yIHJlcG9ydGluZyBjb25maWcgZXJyb3JzLgotICAgKCJEb24ndCBiZSBzbyBpbXBhdGllbnQsIERhdmUuLi4uIikKKyAgIFNwZWxsaW5nIGZpeDogSW5pdGlhbHppZXMgLT4gSW5pdGlhbGl6ZXMuCiAKIDIwMTEtMDEtMDUgMTQ6MDYgIGR0czEyCiAKQEAgLTEzMDQsMTggKzU5MjEsNDcgQEAKIAogICAgQ29weXJpZ2h0IHVwZGF0ZSBmb3IgMjAxMQogCisyMDExLTAxLTA0IDEyOjE5ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jOgorCisgICBGaXggY29tcGlsZXIgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZSBXaW4zMiBNSUItSUkKKyAgIGltcGxlbWVudGF0aW9uIChiYWNrcG9ydGVkIHIxOTc5MCBmcm9tIHRoZSB0cnVuaykuCisKKzIwMTEtMDEtMDQgMTI6MTcgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYzoKKworICAgUmVtb3ZlZCB0d28gdW51c2VkIHZhcmlhYmxlcyBmcm9tIHRoZSBzY3RwLW1pYiBpbXBsZW1lbnRhdGlvbgorICAgKGJhY2twb3J0ZWQgcjE5NzgwIGZyb20gdGhlIHRydW5rKS4KKworMjAxMS0wMS0wNCAxMjoxNSAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6CisKKyAgIEZpeGVkIGEgcmVjZW50bHkgaW50cm9kdWNlZCBtaXNtYXRjaCBiZXR3ZWVuIGZvcm1hdCBzcGVjaWZpY2F0aW9uCisgICBhbmQgYXJndW1lbnQgbGlzdCBpbiB0aGUgaXAtbWliIGltcGxlbWVudGF0aW9uIChiYWNrcG9ydGVkIHIxOTc3OQorICAgZnJvbSB0aGUgdHJ1bmspLgorCisyMDExLTAxLTAyIDA1OjQyICByc3RvcnkKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBza2lwIG5vbi1BRl9JTkVUIGludGVyZmFjZXMgd2hlbiBsb2FkaW5nIGlwdjQKKyAgIGFkZHJzCisKIDIwMTAtMTItMjkgMDE6MzcgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6CiAKLSAgIE5FV1M6IHNubXBkOiBQYXRjaCAzMTQxNDYyOiBmcm9tIGZlbm5lcjogZml4IGFnZW50eCBzdWJhZ2VudAorICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNDE0NjI6IGZpeCBhZ2VudHggc3ViYWdlbnQKICAgIGlzc3VlcyB3aXRoIG11bHRpcGxlLW9iamVjdCByZXF1ZXN0cwogCiAyMDEwLTEyLTI5IDAxOjMzICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvdmFjbS5jOgogCi0gICBORVdTOiBzbm1wZDogUGF0Y2ggZnJvbSBOaWVscyB0byBmaXggVkFDTSBwZXJzaXN0YW50IHN0b3JhZ2UuCisgICBDSEFOR0VTOiBzbm1wZDogUGF0Y2ggZnJvbSBOaWVscyB0byBmaXggVkFDTSBwZXJzaXN0YW50IHN0b3JhZ2UuCiAKIDIwMTAtMTItMjEgMTE6MjkgIGR0czEyCiAKQEAgLTEzMjMsNiArNTk2OSwxNDYgQEAKIAogICAgQnJpbmcgYWxsIHZlcnNpb25zIG9mIG1ha2VyZWxlYXNlLnhtbCBpbnRvIGxpbmUKIAorMjAxMC0xMi0yMSAwOTo0NCAgZHRzMTIKKworICAgKiBDaGFuZ2VMb2c6CisKKyAgIHZlcnNpb24gdXBkYXRlCisKKzIwMTAtMTItMjEgMDk6MjUgIGR0czEyCisKKwkqIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLAorCSAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsCisJICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsCisJICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAorCSAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLAorCSAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLAorCSAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsCisJICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsCisJICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCisJICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLAorCSAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywKKwkgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAorCSAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywKKwkgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywKKwkgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsCisJICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsCisJICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKKwkgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsCisJICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsCisJICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywKKwkgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywKKwkgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywKKwkgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywKKwkgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsCisJICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsCisJICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywKKwkgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLAorCSAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLAorCSAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsCisJICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywKKwkgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLAorCSAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLAorCSAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsCisJICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCisJICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywKKwkgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsCisJICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisJICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorCSAgKHJlLXJ1bm5pbmcgbWFrZXJlbGVhc2UpCisKKzIwMTAtMTItMjEgMDk6MTYgIGR0czEyCisKKwkqIENIQU5HRVMsIE5FV1MsIGNvbmZpZ3VyZToKKwkgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCSAgKHJlLXJ1bm5pbmcgbWFrZXJlbGVhc2UpCisJICBBY3R1YWxseSBsb2cgb2YgcmVjZW50IHNpZ25pZmljYW50IGNoYW5nZXMKKworMjAxMC0xMi0yMCAxNjoxMCAgZHRzMTIKKworCSogQ2hhbmdlTG9nOgorCSAgdmVyc2lvbiB1cGRhdGUKKworMjAxMC0xMi0yMCAxNjowNyAgZHRzMTIKKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsICAgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisKKyAgIG1ha2UgZGVwZW5kCisKKzIwMTAtMTItMjAgMTU6NDUgIGR0czEyCisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisKKyAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisKKzIwMTAtMTItMjAgMTU6MjMgIGR0czEyCisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYywgcGVybC9BU04vQVNOLnBtLCAgIAorICAgICAgcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbSwgcGVybC9PSUQvT0lELnBtLCBwZXJsL1NOTVAvU05NUC5wbSwgCisgICAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwKKyAgICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAgICBwZXJsL2FnZW50L2FnZW50LnBtLAorICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sICAgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbToKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisKKzIwMTAtMTItMjAgMTQ6MDcgIGR0czEyCisKKyAgICogTWFrZWZpbGUudG9wOgorCisgICB2ZXJzaW9uIHVwZGF0ZQorCiAyMDEwLTEyLTEwIDE1OjUwICBoYXJkYWtlcgogCiAgICAqIGFnZW50L2FnZW50X3RyYXAuYywgc25tcGxpYi9zbm1wdXNtLmM6CkBAIC0xMzQzLDYgKzYxMjksMTMgQEAKICAgIHRoZSBsb2FkaW5nCiAgICBvZiB0aGUgbGlzdCBhIGJpdC4KIAorMjAxMC0xMi0wNiAyMzoyMyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jOgorCisgICBQYXRjaCBmcm9tIE5pZWxzIHRvIHJlbW92ZSBleHRyYSBoZWFkZXJzIGZyb20gdGhlIGxpbnV4IGRvdDNzdGF0cworICAgaW1wbGVtZW50YXRpb24KKwogMjAxMC0xMi0wNiAxNjoyNCAgaGFyZGFrZXIKIAogICAgKiBhcHBzL3NubXB0cmFwLmM6CkBAIC0xMzc5LDYgKzYxNzIsMTUgQEAKICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzA1MzQzNjogZnJvbTogdGFrZXZvczogZml4OgogICAgdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2VzcyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MKIAorMjAxMC0xMS0zMCAwNTo1NiAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDMwNTcwOTA6IGZyb20gc2hlbW1pbmdlcjogbWFrZSBldGh0b29sCisgICBzdXBwb3J0IG9uIGxpbnV4IHVzZSB0aGUgaGlnaCBzcGVlZCBzdHJ1Y3QgaW5mbyBmb3IgMTAwRysuCisKIDIwMTAtMTEtMzAgMDQ6NTggIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmM6CkBAIC0xNDA2LDYgKzYyMDgsMTUgQEAKICAgIAogICAgbmV0c25tcF9jYWNoZV9pc192YWxpZCgpIGlzIG5vdCBtZWFudCBmb3IgbWliIG1vZHVsZXMKIAorMjAxMC0xMS0xNiAxMDowNCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IExpbnV4OiBhZ2VudDogaXBOZXRUb1BoeXNpY2FsVGFibGU6IERvIG5vdCBsb2cgYW4gZXJyb3IKKyAgIG1lc3NhZ2UgaWYgb25lIG9yIG1vcmUgaW50ZXJmYWNlcyBhcmUgcHJlc2VudCB0aGF0IGRvIG5vdCBoYXZlCisgICBzdWNoIGluZm9ybWF0aW9uIChOVURfTk9BUlApLCBlLmcuIHR1bm5lbHMuIFJlcG9ydGVkIGJ5IFN0ZXBoZW4KKyAgIEhlbW1pbmdlci4gU2VlIGFsc28gcGF0Y2ggIzMxMDcwMDMuCisKIDIwMTAtMTEtMTUgMTQ6MTUgIGJ2YXNzY2hlCiAKICAgICogc25tcGxpYi9hc24xLmM6CkBAIC0xNDE1LDEyICs2MjI2LDYgQEAKICAgIGFzbl9idWlsZF9zaWduZWRfaW50NjQoKS4gTW9zdCBidXQgbm90IGFsbCBvZiB0aGVzZSBidWdzIHdlcmUKICAgIHNwZWNpZmljIHRvIDY0LWJpdCBzeXN0ZW1zLiBGaXhlcyBidWcgIzMwOTMxOTkuCiAKLTIwMTAtMTEtMTUgMTQ6MTIgIGJ2YXNzY2hlCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvc3RydWN0Lmg6Ci0KLSAgIEJ1aWxkcyBhZ2Fpbi4KLQogMjAxMC0xMS0xMSAyMjo0OCAgbmJhCiAKICAgICogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jOgpAQCAtMTQyOCw5ICs2MjMzLDE3IEBACiAgICBGaXggcjE5NjM2OiBUcmFwT0lEIGlzIG5vdCB0aGUgZmlyc3QgdmFyYmluZCBpbiB0aGUgY29udmVydGVkIHYyCiAgICB0cmFwCiAKKzIwMTAtMTEtMTEgMDg6MzggIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYywgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oOgorCisgICBDbGVhbnVwOiBSZW1vdmVkIHN1cGVyZmx1b3VzIHJlZmVyZW5jZXMgdG8gdGhlIFBPU0lYIHRocmVhZHMKKyAgIGxpYnJhcnkuCisKIDIwMTAtMTEtMTAgMTI6MzEgIGJ2YXNzY2hlCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzOgogCiAgICBDSEFOR0VTOiBCVUc6IDMxMDI5MDQ6IEFsbCBOZXQtU05NUCBDIHNvdXJjZSBmaWxlcyBhcmUgbm93CiAgICBjb21waWxlZCB3aXRoIC1mbm8tc3QKQEAgLTE1MDQsMTIgKzYzMTcsNDggQEAKICAgIENIQU5HRVM6IHNubXBsaWI6IGZvcmNlIGEgOyBhdCB0aGUgZW5kIG9mIHRoZSBzdGF0aWNfYXNzZXJ0CiAgICBtYWNyby4KIAotMjAxMC0xMS0wNyAxNjoyMSAgZHRzMTIKKzIwMTAtMTEtMDUgMTU6NDEgIGJ2YXNzY2hlCiAKLSAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnM6CiAKLSAgIEJhY2twb3J0IG9mIHJldmlzaW9uIDE3NTk2Ci0gICBUcml2aWFsIHdhcm5pbmcgZml4ZXMKKyAgIE1hZGUgc3VyZSB0aGF0IHJwbUdldFBhdGgoKSBjYW4gYmUgZm91bmQgYnkgY29uZmlndXJlLgorCisyMDEwLTExLTA1IDE0OjUyICBidmFzc2NoZQorCisgICAqICBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycywgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczEsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEZpeGVkIG9yZGVyIG9mIHJwbWxpYiBkZXRlY3Rpb24gYW5kIGFnZW50IG1vZHVsZQorICAgY29uZmlndXJhdGlvbiAoYmFja3BvcnRlZCByMTk2MjEgZnJvbSB0aGUgdHJ1bmspLgorCisyMDEwLTExLTA1IDE0OjM2ICBidmFzc2NoZQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFJldmVydGVkIHIxOTYyMy4KKworMjAxMC0xMS0wNSAxMzo0MiAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBSZWdlbmVyYXRlZCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLgorCisyMDEwLTExLTA1IDEwOjAwICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtOiBGaXhlZCBhIG1lbW9yeSBsZWFrCisgICBpbiBuZXRzbm1fc3dpbnN0X2FyY2hfaW5pdCgpLgorCisyMDEwLTExLTA1IDA5OjIzICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtOiBQYXNzIGNvcnJlY3QgcGF0aCB0bworICAgcnBtZGJPcGVuKCkgc3VjaCB0aGF0IG9wZW5pbmcgdGhlIGRhdGFiYXNlIHN1Y2NlZWRzLgorICAgQ0hBTkdFUzogYWdlbnQ6IGhvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbTogTG9nIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGlmIHJwbWRiT3BlbigpIGZhaWxzLgogCiAyMDEwLTExLTA1IDA4OjQ4ICBidmFzc2NoZQogCkBAIC0xNTMxLDE4ICs2MzgwLDExIEBACiAgICBCYWNrcG9ydGVkIHIxOTYwMiwgd2hpY2ggZml4ZXMgdGhlIGRvdWJsZSBmcmVlIGF0IGV4aXQgdGhhdCB3YXMKICAgIGludHJvZHVjZWQgYnkgcjE5NDYyLgogCi0yMDEwLTExLTAzIDE0OjU5ICBidmFzc2NoZQotCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotCi0gICBDSEFOR0VTOiBidWlsZGluZzogVkVSU0lPTiBpcyBhZ2FpbiBhIG51bWJlciBpbnN0ZWFkIG9mIGEgQwotICAgZXhwcmVzc2lvbiwgc3VjaCB0aGF0IHRoZSBQZXJsIG1vZHVsZXMgYnVpbGQgYWdhaW4uCi0KLTIwMTAtMTEtMDMgMTQ6NDcgIGJ2YXNzY2hlCisyMDEwLTExLTAzIDE0OjUxICBidmFzc2NoZQogCiAgICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaDoKIAotICAgRml4ZWQgYW4gaW5jb3JyZWN0IGZpbGUgaGVhZGVyIChhIHNvdXJjZSBjb2RlIGNvbW1lbnQpLgorICAgRm9yd2FyZC1wb3J0ZWQgcjE5NjA4LgogCiAyMDEwLTExLTAxIDE2OjUwICBkdHMxMgogCkBAIC0xNTU5LDEwICs2NDAxLDEwIEBACiAKIDIwMTAtMTEtMDEgMTY6MzAgIGR0czEyCiAKLSAgICogIG1hbi9zbm1wX3Nlc3NfYXBpLjMuZGVmLCBtYW4vc25tcGJ1bGtnZXQuMS5kZWYsICAgCi0gICAgICBtYW4vc25tcGJ1bGt3YWxrLjEuZGVmLCBtYW4vc25tcGdldC4xLmRlZiwgbWFuL3NubXBnZXRuZXh0LjEuZGVmLCAKLSAgICAgICAgbWFuL3NubXBzZXQuMS5kZWYsIG1hbi9zbm1wdHJhcC4xLmRlZiwgbWFuL3NubXB0cmFwZC44LmRlZiwgICAKLSAgICAgIG1hbi9zbm1wd2Fsay4xLmRlZjoKKyAgICogIG1hbi9zZXNzaW9uX2FwaS4zLmRlZiwgbWFuL3NubXBfc2Vzc19hcGkuMy5kZWYsICAgCisgICAgICBtYW4vc25tcGJ1bGtnZXQuMS5kZWYsIG1hbi9zbm1wYnVsa3dhbGsuMS5kZWYsIG1hbi9zbm1wZ2V0LjEuZGVmLCAKKyAgICAgICAgbWFuL3NubXBnZXRuZXh0LjEuZGVmLCBtYW4vc25tcHNldC4xLmRlZiwgbWFuL3NubXB0cmFwLjEuZGVmLCAgIAorICAgICAgbWFuL3NubXB0cmFwZC44LmRlZiwgbWFuL3NubXB3YWxrLjEuZGVmOgogCiAgICBSZW1vdmUgQ01VIGNvcHlyaWdodCBub3RpY2UgZnJvbSBtYW4gcGFnZXMgdGhhdAogICAgd2VyZSBub3QgaW5oZXJpdGVkIGZyb20gQ01VLVNOTVAKQEAgLTE1NzAsMjIgKzY0MTIsMjQgQEAKIAogMjAxMC0xMS0wMSAxMzo1NSAgZHRzMTIKIAotICAgKiAgbWFuL2VuY29kZV9rZXljaGFuZ2UuMS5kZWYsIG1hbi9maXhwcm9jLjEuZGVmLCAgIAotICAgICAgbWFuL21pYjJjLXVwZGF0ZS4xLmRlZiwgbWFuL21pYjJjLjEuZGVmLCBtYW4vbWliX2FwaS4zLmRlZiwgICAKLSAgICAgIG1hbi9uZXQtc25tcC1jb25maWcuMS5kZWYsIG1hbi9yZWFkX2NvbmZpZy4zLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wLmNvbmYuNS5kZWYsIG1hbi9zbm1wX2FnZW50X2FwaS4zLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wX2FsYXJtLjMuZGVmLCBtYW4vc25tcF9hcGkuMy5kZWYsIG1hbi9zbm1wX2NvbmZpZy41LmRlZiwgIAotICAgICAgIG1hbi9zbm1wX3Nlc3NfYXBpLjMuZGVmLCBtYW4vc25tcF90cmFwX2FwaS4zLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wYnVsa2dldC4xLmRlZiwgbWFuL3NubXBidWxrd2Fsay4xLmRlZiwgbWFuL3NubXBjbWQuMS5kZWYsIAotICAgICAgICBtYW4vc25tcGNvbmYuMS5kZWYsIG1hbi9zbm1wZC44LmRlZiwgbWFuL3NubXBkLmNvbmYuNS5kZWYsICAgCi0gICAgICBtYW4vc25tcGQuZXhhbXBsZXMuNS5kZWYsIG1hbi9zbm1wZC5pbnRlcm5hbC41LmRlZiwgICAKLSAgICAgIG1hbi9zbm1wZGVsdGEuMS5kZWYsIG1hbi9zbm1wZGYuMS5kZWYsIG1hbi9zbm1wZ2V0LjEuZGVmLCAgIAotICAgICAgbWFuL3NubXBnZXRuZXh0LjEuZGVmLCBtYW4vc25tcG5ldHN0YXQuMS5kZWYsIG1hbi9zbm1wc2V0LjEuZGVmLCAgCi0gICAgICAgbWFuL3NubXBzdGF0dXMuMS5kZWYsIG1hbi9zbm1wdGFibGUuMS5kZWYsIG1hbi9zbm1wdGVzdC4xLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wdHJhbnNsYXRlLjEuZGVmLCBtYW4vc25tcHRyYXAuMS5kZWYsIG1hbi9zbm1wdHJhcGQuOC5kZWYsIAotICAgICAgICBtYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYsIG1hbi9zbm1wdXNtLjEuZGVmLCBtYW4vc25tcHZhY20uMS5kZWYsCi0gICAgICAgICBtYW4vc25tcHdhbGsuMS5kZWYsIG1hbi90a21pYi4xLmRlZiwgbWFuL3RyYXB0b2VtYWlsLjEuZGVmLCAgIAotICAgICAgbWFuL3ZhcmlhYmxlcy41LmRlZjoKKyAgICogIG1hbi9jb25maWdfYXBpLjMuZGVmLCBtYW4vZW5jb2RlX2tleWNoYW5nZS4xLmRlZiwgICAKKyAgICAgIG1hbi9maXhwcm9jLjEuZGVmLCBtYW4vbWliMmMtdXBkYXRlLjEuZGVmLCBtYW4vbWliMmMuMS5kZWYsICAgCisgICAgICBtYW4vbWliX2FwaS4zLmRlZiwgbWFuL25ldC1zbm1wLWNvbmZpZy4xLmRlZiwgICAKKyAgICAgIG1hbi9uZXQtc25tcC1jcmVhdGUtdjMtdXNlci4xLmRlZiwgbWFuL3BkdV9hcGkuMy5kZWYsICAgCisgICAgICBtYW4vc2Vzc2lvbl9hcGkuMy5kZWYsIG1hbi9zbm1wLmNvbmYuNS5kZWYsICAgCisgICAgICBtYW4vc25tcF9hZ2VudF9hcGkuMy5kZWYsIG1hbi9zbm1wX2FsYXJtLjMuZGVmLCAgIAorICAgICAgbWFuL3NubXBfY29uZmlnLjUuZGVmLCBtYW4vc25tcF9zZXNzX2FwaS4zLmRlZiwgICAKKyAgICAgIG1hbi9zbm1wX3RyYXBfYXBpLjMuZGVmLCBtYW4vc25tcGJ1bGtnZXQuMS5kZWYsICAgCisgICAgICBtYW4vc25tcGJ1bGt3YWxrLjEuZGVmLCBtYW4vc25tcGNtZC4xLmRlZiwgbWFuL3NubXBjb25mLjEuZGVmLCAgIAorICAgICAgbWFuL3NubXBkLjguZGVmLCBtYW4vc25tcGQuY29uZi41LmRlZiwgbWFuL3NubXBkLmV4YW1wbGVzLjUuZGVmLCAgCisgICAgICAgbWFuL3NubXBkLmludGVybmFsLjUuZGVmLCBtYW4vc25tcGRlbHRhLjEuZGVmLCBtYW4vc25tcGRmLjEuZGVmLCAKKyAgICAgICAgbWFuL3NubXBnZXQuMS5kZWYsIG1hbi9zbm1wZ2V0bmV4dC4xLmRlZiwgbWFuL3NubXBuZXRzdGF0LjEuZGVmLAorICAgICAgICAgbWFuL3NubXBzZXQuMS5kZWYsIG1hbi9zbm1wc3RhdHVzLjEuZGVmLCBtYW4vc25tcHRhYmxlLjEuZGVmLCAgCisgICAgICAgbWFuL3NubXB0ZXN0LjEuZGVmLCBtYW4vc25tcHRyYW5zbGF0ZS4xLmRlZiwgbWFuL3NubXB0cmFwLjEuZGVmLCAKKyAgICAgICAgbWFuL3NubXB0cmFwZC44LmRlZiwgbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmLAorICAgICAgbWFuL3NubXB1c20uMS5kZWYsICAgIG1hbi9zbm1wdmFjbS4xLmRlZiwgbWFuL3NubXB3YWxrLjEuZGVmLAorICAgICAgbWFuL3RrbWliLjEuZGVmLCAgICBtYW4vdHJhcHRvZW1haWwuMS5kZWYsIG1hbi92YXJiaW5kX2FwaS4zLmRlZiwgCisgICAgICAgIG1hbi92YXJpYWJsZXMuNS5kZWY6CiAKICAgIFN1cHByZXNzIGZvcmNpbmcgb2YgIkJlcmtlbGV5IERpc3RyaWJ1dGlvbiIgZm9vdGVyCiAgICAoQWxsb3dzIE5ldC1TTk1QIHZlcnNpb24gaW5mb3JtYXRpb24gdG8gYmUgZGlzcGxheWVkIGluIHRoZSBtYW4KQEAgLTE1OTMsOSArNjQzNyw5IEBACiAKIDIwMTAtMTEtMDEgMTM6NDIgIGR0czEyCiAKLSAgICogIG1hbi9taWIyYy4xLmRlZiwgbWFuL21pYl9hcGkuMy5kZWYsIG1hbi9yZWFkX2NvbmZpZy4zLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wLmNvbmYuNS5kZWYsIG1hbi9zbm1wX2FnZW50X2FwaS4zLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wX2FsYXJtLjMuZGVmLCBtYW4vc25tcF9hcGkuMy5kZWYsICAgCisgICAqICBtYW4vY29uZmlnX2FwaS4zLmRlZiwgbWFuL21pYjJjLjEuZGVmLCBtYW4vbWliX2FwaS4zLmRlZiwgICAKKyAgICAgIG1hbi9zZXNzaW9uX2FwaS4zLmRlZiwgbWFuL3NubXAuY29uZi41LmRlZiwgICAKKyAgICAgIG1hbi9zbm1wX2FnZW50X2FwaS4zLmRlZiwgbWFuL3NubXBfYWxhcm0uMy5kZWYsICAgCiAgICAgICBtYW4vc25tcF9zZXNzX2FwaS4zLmRlZiwgbWFuL3NubXBfdHJhcF9hcGkuMy5kZWYsICAgCiAgICAgICBtYW4vc25tcGJ1bGtnZXQuMS5kZWYsIG1hbi9zbm1wYnVsa3dhbGsuMS5kZWYsIG1hbi9zbm1wY21kLjEuZGVmLCAKICAgICAgICAgbWFuL3NubXBjb25mLjEuZGVmLCBtYW4vc25tcGQuOC5kZWYsIG1hbi9zbm1wZC5jb25mLjUuZGVmLCAgIApAQCAtMTYxNSw2ICs2NDU5LDI2IEBACiAKICAgIFNwZWxsaW5nIGZpeCBpbiBsb2cgdGV4dHM6IGNvbnRhaW50ZXIgLT4gY29udGFpbmVyLgogCisyMDEwLTEwLTI5IDExOjM0ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKKworICAgQmFja3BvcnRlZCByMTk1ODggYW5kIHIxOTU4OSBmcm9tIHRoZSB0cnVuay4KKworMjAxMC0xMC0yOSAwNzo1NiAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYzoKKworICAgTW9yZSBjb21waWxlciB3YXJuaW5nIGZpeGVzLgorCisyMDEwLTEwLTI5IDA3OjU1ICBidmFzc2NoZQorCisgICAqIHRlc3RpbmcvZXZhbF90b29scy5zaDoKKworICAgQmFja3BvcnRlZCBJU0RFRklORUQgZnJvbSB0aGUgdHJ1bmsuCisKIDIwMTAtMTAtMjggMTQ6MDIgIGR0czEyCiAKICAgICogbG9jYWwvbWliMmMuY2hlY2tfdmFsdWVzLmNvbmY6CkBAIC0xNjQ0LDEyICs2NTA4LDYgQEAKICAgIGxvbmdlciBuZWNlc3NhcnkgdG8gY2FzdCB0aGVzZSB0d28gYXJndW1lbnRzIChoYXMgYmVlbiByZXZlcnRlZAogICAgdmlhIHIxOTU2OCkuCiAKLTIwMTAtMTAtMjggMTA6MDYgIGJ2YXNzY2hlCi0KLSAgICogdGVzdGluZy9ldmFsX3Rvb2xzLnNoOgotCi0gICBCYWNrcG9ydGVkIElTREVGSU5FRCBmcm9tIHIxODY3MC4KLQogMjAxMC0xMC0yNSAyMDo1OSAgZHRzMTIKIAogICAgKiBNYWtlZmlsZS5pbjoKQEAgLTE2ODQsNiArNjU0MiwyNiBAQAogICAgQ0hBTkdFUzogV2luMzI6IHRlc3Rpbmc6IEF2b2lkIHRoYXQgVDIwMCBmYWlscyBvbiBrbm93biBNaWNyb3NvZnQKICAgIFNOTVAgZXh0ZW5zaW9uIERMTCBidWdzLgogCisyMDEwLTEwLTI1IDA4OjA2ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCwgICAKKyAgICAgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnM6CisKKyAgIE5FV1M6IExpbnV4OiBzbm1wZCBpcyBhZ2FpbiBzaW5nbGUtdGhyZWFkZWQuCisgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0g6IDI5NTk4MTE6IGZyb20gSmFuIFNhZnJhbmVrOiBSZWltcGxlbWVudAorICAgTGludXggTmV0bGluayBJUHY2IHByZWZpeCBsaXN0ZW5lci4KKworMjAxMC0xMC0yMiAwOToyMCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzoKKworICAgQ0hBTkdFUzogYWdlbnQ6IG5ldHNubXBfY2FjaGVfZnJlZSgpOiBBIG1vcmUgZGV0YWlsZWQgbWVzc2FnZSBpcworICAgbm93IGxvZ2dlZCB3aGVuIGF0dGVtcHRpbmcgdG8gZnJlZSBhIGNhY2hlIHRoYXQgaXMgc3RpbGwgaW4gdGhlCisgICBjYWNoZSBsaXN0LgorICAgKEJhY2twb3J0ZWQgcjE5NTI0LikKKwogMjAxMC0xMC0yMiAwOToxOSAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgpAQCAtMTcwMSw3ICs2NTc5LDcgQEAKIAogICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCAgIAogICAgICAgYWdlbnQvc25tcF9hZ2VudC5jLCBhZ2VudC9zbm1wZC5jLCAgIAotICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzoKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaCwgc25tcGxpYi9zbm1wX2FwaS5jOgogCiAgICBDSEFOR0VTOiBzbm1wbGliOiBBZGRlZCBzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAoKS4KICAgIENIQU5HRVM6IGFnZW50OiBDYWxsIHNodXRkb3duX21hc3Rlcl9hZ2VudCgpIGFuZCBzaHV0ZG93bl9hZ2VudCgpCkBAIC0xNzI2LDYgKzY2MDQsMTMgQEAKICAgIGFuYWx5emVyIHN1cHBvcnRzIGZvbGxvd2luZyBjaGlsZCBwcm9jZXNzZXMuCiAgICAoQmFja3BvcnRlZCByMTkyODMgZnJvbSB0aGUgdHJ1bmsuKQogCisyMDEwLTEwLTE5IDIxOjEzICBuYmEKKworICAgKiBzbm1wbGliL3BhcnNlLmM6CisKKyAgIEJVRyAzMDc5MDcyIGZyb20gRGF2ZSBCZWFsOiBmaXggYnVmZmVyIG92ZXJmbG93IGZyb20gYmFkIHVzZSBvZgorICAgc3RybmNhdAorCiAyMDEwLTEwLTE5IDE4OjA4ICBidmFzc2NoZQogCiAgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKQEAgLTE3ODMsNiArNjY2OCwzMyBAQAogICAgdW5pbml0aWFsaXplZCBkYXRhIGZvciB0aGUgYnVmZmVycyByZXR1cm5lZCBieQogICAgbmV0c25tcF9jYWxsYmFja19yZWN2KCkgYW5kIG5ldHNubXBfY2FsbGJhY2tfaG9va19idWlsZCgpLgogCisyMDEwLTEwLTE3IDE2OjUxICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogQXZvaWQgdGhhdCBoclNXUnVuUGF0aCBjb250YWlucyB0cmFpbGluZyBnYXJiYWdlCisgICBjaGFyYWN0ZXJzIG9uIExpbnV4IHN5c3RlbXMuCisgICBGb3VuZCB0aGlzIGJ5IGFuYWx5emluZyBhIFZhbGdyaW5kIGNvbXBsYWludC4gRm9yIGFueW9uZSB3aG8gaXMKKyAgIHdvbmRlcmluZyB3aHkgdGhpcyBwYXRjaCBtYWtlcyBzZW5zZSwgYSBxdW90ZSBmcm9tIHRoZSBnbGliYworICAgc25wcmludGYoKSBkb2N1bWVudGF0aW9uCisgICAoaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbWFudWFsL2h0bWxfbm9kZS9Gb3JtYXR0ZWQtT3V0cHV0LUZ1bmN0aW9ucy5odG1sKToKKyAgIDxxdW90ZT4KKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdoaWNoIHdvdWxkIGJlCisgICBnZW5lcmF0ZWQgZm9yIHRoZSBnaXZlbiBpbnB1dCwgZXhjbHVkaW5nIHRoZSB0cmFpbGluZyBudWxsLiBJZgorICAgdGhpcyB2YWx1ZSBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHNpemUsIG5vdCBhbGwgY2hhcmFjdGVycyBmcm9tCisgICB0aGUgcmVzdWx0IGhhdmUgYmVlbiBzdG9yZWQgaW4gcy4KKyAgIDwvcXVvdGU+CisgICBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZGlmZmVycyBmcm9tIHRoZSBzdGFuZGFyZCBiZWhhdmlvci4gQSBxdW90ZQorICAgZnJvbSBodHRwOi8vb3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwNzkwODc5OS94c2gvc25wcmludGYuaHRtbDoKKyAgIDxxdW90ZT4KKyAgIFJFVFVSTiBWQUxVRQorICAgVXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24sIHRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdGhlIG51bWJlciBvZgorICAgYnl0ZXMgdHJhbnNtaXR0ZWQgZXhjbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyBudWxsIGluIHRoZSBjYXNlIG9mCisgICBzcHJpbnRmKCkgb3Igc25wcmludGYoKSBvciBhIG5lZ2F0aXZlIHZhbHVlIGlmIGFuIG91dHB1dCBlcnJvcgorICAgd2FzIGVuY291bnRlcmVkLgorICAgPC9xdW90ZT4KKwogMjAxMC0xMC0xNyAxNDoyNCAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaDoKQEAgLTE3OTIsNyArNjcwNCw3IEBACiAKIDIwMTAtMTAtMTYgMDg6MzcgIGJ2YXNzY2hlCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQ6CiAKICAgIFNwZWxsaW5nIGZpeDogZHVscGljYXRlIC0+IGR1cGxpY2F0ZS4KIApAQCAtMTgyOCw5ICs2NzQwLDE4IEBACiAgICBoYW5kbGVyIG5vIGxvbmdlciBjYXVzZXMgYSBjcmFzaCAoZG91YmxlIGZyZWUpIHdoZW4KICAgIGhhbmRsZXItPm15dm9pZCBvZiB0aGUgb3JpZ2luYWwgaGFuZGxlciB3YXMgbm9uLU5VTEwuCiAKKzIwMTAtMTAtMTUgMTA6NTYgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogQnVpbGRzIG5vdyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdAorICAgY29tcGlsZXIuCisKIDIwMTAtMTAtMTUgMTA6MDIgIGJ2YXNzY2hlCiAKLSAgICogYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBtYW4vbmV0c25tcF9oYW5kbGVyLjM6CisgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zOgogCiAgICBTcGVsbGluZyBmaXg6IGR1bHBpY2F0ZXMgLT4gZHVwbGljYXRlcy4KIApAQCAtMTg0OCwxMyArNjc2OSwyMSBAQAogICAgc2VfYWRkX3BhaXJfdG9fbGlzdCgpIHdpdGggYSB2YWx1ZSB0aGF0IGFscmVhZHkgZXhpc3RlZCBpbiB0aGUKICAgIGxpc3QuCiAKLTIwMTAtMTAtMTMgMTY6NTMgIGhhcmRha2VyCisyMDEwLTEwLTEzIDE2OjU1ICBoYXJkYWtlcgogCiAgICAqIGRpc3QvYXV0b2NvbmYtdmVyc2lvbiwgdGVzdGluZy90ZXN0cy9UMDAwY29uZmlndXJlOgogCiAgICBhZGRlZCBhIGF1dG9jb25mIHZlcnNpb24gY2hlY2tpbmcgdGVzdCB0byBjYXRjaCBkZXZlbG9wZXJzIGFuZAogICAgc2NyaXB0cyB0aGF0IGZhaWwgdG8gdXNlIHRoZSBjb3JyZWN0IGF1dG9jb25mIHZlcnNpb24KIAorMjAxMC0xMC0xMyAxMTo1MyAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBiYXRjaCBidWlsZCB3aXRoIE9wZW5TU0wgZW5hYmxlZCBhbmQKKyAgIHdpdGggcmVjZW50IE9wZW5TU0wgZGV2ZWxvcG1lbnQgZmlsZXMgd29ya3MgYWdhaW4uCisKIDIwMTAtMTAtMTMgMDc6NDMgIGJ2YXNzY2hlCiAKICAgICogbmV0LXNubXAtY29uZmlnLmluOgpAQCAtMTkwMSw2ICs2ODMwLDIwIEBACiAgICB2ZXJzaW9uIG9mIHRoZSBwYXRjaCB0byB1c2UgTVNHX0RPTlRXQUlUIGZvciB0aGUgdW5peCBkb21haW4KICAgIHNvY2tldAogCisyMDEwLTA5LTAzIDIxOjU2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzA1ODE0MDogZnJvbSB0YWtldm9zOiBjaGVjayB0aGF0IGlub2RlIGlzCisgICBub24temVybworCisyMDEwLTA5LTAzIDIxOjUwICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzA1MzQyODogZnJvbSB0YWtldm9zOiBmaXgKKyAgIGdldF9waWRfZnJvbV9pbm9kZSB3aGVuIHRoZSBpbm9kZSBpcyBub3QgZm91bmQuCisKIDIwMTAtMDgtMjQgMDU6MzcgIG1hZ2ZyCiAKICAgICogYXBwcy9zbm1wdXNtLmM6CkBAIC0xOTI5LDYgKzY4NzIsMTMgQEAKICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAyODI1NjUzOiBmcm9tIGJydTVjZTogZml4IHNlbmRtYWlsLmNmCiAgICBwYXJzaW5nIGluIGNlcnRhaW4gY29uZGl0aW9ucwogCisyMDEwLTA4LTE2IDA3OjQyICBkdHMxMgorCisgICAqIHBlcmwvU05NUC9TTk1QLnhzOgorCisgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMjk5NTA5ODogRml4IGNyZWF0aW9uIG9mIFNOTVB2MyBzZXNzaW9ucworICAgd2l0aCBBUElfU0lOR0xFCisKIDIwMTAtMDgtMTQgMTY6MzAgIGR0czEyCiAKICAgICogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYzoKQEAgLTE5NDIsNiArNjg5MiwxMyBAQAogICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyOTA0OTAwOiBEb2N1bWVudGF0aW9uIHBsdXMgYXNzb3J0ZWQKICAgIGhhbmRsZXIgY29kZSBmaXhlcwogCisyMDEwLTA4LTEzIDIzOjQ0ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMDQ0NTEyOiBmcm9tIHBoaWx3ZWJzdGVyOiBmaXggc3lzb2JqZWN0aWQKKyAgIGRpcmVjdGl2ZS4KKwogMjAxMC0wOC0xMyAxMjoyMiAgZHRzMTIKIAogICAgKiBsb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmY6CkBAIC0xOTYwLDYgKzY5MTcsMTMgQEAKIAogICAgVXBkYXRlICJhdXRoKiIgdXNhZ2UgbWVzc2FnZSB3aXRoIGNvbnRleHQgc3VwcG9ydAogCisyMDEwLTA4LTAzIDA3OjI3ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRjdGwuYzoKKworICAgQUlYIGZpbGVzeXN0ZW0gdHlwZXMgYXJlIHRhZ2dlZCBhcyBpbnRlZ2Vycywgbm90IHN0cmluZ3MuCisgICBGaXggYSBzaWxseSBtaXN0YWtlLgorCiAyMDEwLTA4LTAxIDA2OjAwICBidmFzc2NoZQogCiAgICAqIHNubXBsaWIvc25tcF9lbnVtLmM6CkBAIC0xOTg5LDcgKzY5NTMsOSBAQAogCiAyMDEwLTA3LTI4IDE0OjM2ICBkdHMxMgogCi0gICAqIGFnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKyAgICogIGFnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgogCiAgICBEb24ndCBtaXggU01JdjEgYW5kIFNNSXYyIE1JQnMgaW4gdGhlIGxpc3Qgb2YgZGVmYXVsdCBNSUJzIHRvCiAgICBsb2FkLgpAQCAtMjAwMyw2ICs2OTY5LDE0IEBACiAgICBDSEFOR0VTOiBtaWJzOiBwYXRjaCAyOTc0NzE2OiBmcm9tIGJ2YXNzY2hlOiBmaXggaXNzdWVzIGluIHRoZQogICAgU01VWC1NSUIKIAorMjAxMC0wNy0yNyAwODoxNCAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW50dHlwZXMuaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IHJlcG9ydCBnZnMgZmlsZXN5c3RlbXMgaW4gaHJTdG9yYWdlVGFibGUgYW5kCisgICBockZTVGFibGUuCisKIDIwMTAtMDctMjQgMTU6MzYgIGR0czEyCiAKICAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgpAQCAtMjAxMSw2ICs2OTg1LDEyIEBACiAgICB3aGVuIG9wZW5pbmcgYSBuZXcgU05NUCBzZXNzaW9uLgogICAgRml4ZXMgYSBidWcgd2l0aCByZXBvcnRpbmcgbGF0ZXIgY29uZmlnIGVycm9ycy4KIAorMjAxMC0wNy0yMSAxODowMyAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CisKKyAgIHIxNzQ5NSBlcnJvbmVvdXNseSBkaXNhYmxlZCBkaXNrSU9MQXggZm9yIGxpbnV4CisKIDIwMTAtMDctMjAgMTA6MzggIGpzYWZyYW5lawogCiAgICAqIHNubXBsaWIvc3lzdGVtLmM6CkBAIC0yMDQwLDYgKzcwMjAsMTQgQEAKICAgIGludGVyZmFjZXMgdGFibGUgZG9lcyBub3QgdHJpZ2dlciBvdXQtb2YtcmFuZ2UgYXJyYXkgYWNjZXNzZXMKICAgICh3YXMgZGV0ZWN0ZWQgYnkgQm91bmRzQ2hlY2tlcikuCiAKKzIwMTAtMDctMTEgMTE6MTggIGJ2YXNzY2hlCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zOgorCisgICBDSEFOR0VTOiBCVUc6IDMwMjc5MDA6IHdoZW4gY3Jvc3MtY29tcGlsaW5nIGl0IGlzIG5vdyBhc3N1bWVkCisgICB0aGF0IG1lbWNtcCgpIGlzIGF2YWlsYWJsZSBpbnN0ZWFkIG9mIGFzc3VtaW5nIHRoYXQgaXQgaXMgbm90CisgICBhdmFpbGFibGUuCisKIDIwMTAtMDctMDggMTI6MTcgIGR0czEyCiAKICAgICogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYzoKQEAgLTIwNjQsMjIgKzcwNTIsMjEgQEAKICAgICogIG1hbi9taWJfYXBpLjMuZGVmLCBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9jb250YWluZXIuMywgIAogICAgICAgIG1hbi9uZXRzbm1wX2V4YW1wbGVfc2NhbGFyX2ludC4zLCBtYW4vbmV0c25tcF9oYW5kbGVyLjMsICAgCiAgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9zbm1wY21kLjEuZGVmLCBtYW4vc25tcGQuY29uZi41LmRlZiwgICAKLSAgICAgIG1hbi9zbm1wdHJhcGQuY29uZi41LmRlZjoKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9zbm1wY21kLjEuZGVmLCBtYW4vc25tcHRyYXBkLmNvbmYuNS5kZWY6CiAKICAgIENIQU5HRVM6IG1hbjogY2xlYW4gdXAgbWFudWFsIHBhZ2VzCiAgICAoZnJvbSBEZWJpYW4gcGF0Y2ggNTZfbWFucGFnZSkKIAotMjAxMC0wNi0yOCAwMDoyMSAgdGFuZGVycworMjAxMC0wNi0yOCAwMDoyMCAgdGFuZGVycwogCi0gICAqIGFnZW50L29iamVjdF9tb25pdG9yLmM6CisgICAqIG1hbi9jb25maWdfYXBpLjM6CiAKLSAgIGZpeCBjcHAgc3ludGF4IGVycm9yCisgICByZW1vdmUgZ2VuZXJhdGVkIG1hbnVhbCBwYWdlIGZyb20gcmVwb3NpdG9yeSAocGFydGx5IHJldmVydAorICAgcjE3NTU4KQogCiAyMDEwLTA2LTI3IDIzOjI5ICB0YW5kZXJzCiAKLSAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFwcHMvc25tcHRyYXBkLmMsICAgCi0gICAgICBhcHBzL3NubXB0cmFwZF9hdXRoLmM6CisgICAqIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHRyYXBkX2F1dGguYzoKIAogICAgQ0hBTkdFUzogYnVpbGQ6IERvIG5vdCBjYWxsIHZhY21fc3RhbmRhcmRfdmlld3MoKSBvcgogICAgaW5pdF92YWNtX2NvbmZpZ190b2tlbnMoKSBpZiB0aGUgY29ycmVzcG9uZGluZyBtb2R1bGUgd2FzIG5vdApAQCAtMjExNywxOSArNzEwNCwzNSBAQAogCiAgICBGaXhlZCBhbiBlcnJvciBpbiBhIGNvbW1lbnQgYmxvY2suCiAKLTIwMTAtMDYtMTYgMTk6MTQgIGR0czEyCisyMDEwLTA2LTIxIDA4OjAxICBkdHMxMgogCi0gICAqIHNubXBsaWIvdmFjbS5jOgorICAgKiBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOgogCi0gICBGaXggcHJvY2Vzc2luZyBvZiB2aWV3IG1hc2tzIChtaXNwbGFjZWQgcGFyZW50aGVzZXMpCisgICBFbnN1cmUgdGhhdCBmZHNldCBzdHJ1Y3R1cmUgaXMgcmVzaXplZCBzdWZmaWNpZW50bHkKKyAgIHRvIGFjY29tb2RhdGUgdGhlIHNwZWNpZmllZCBzb2NrZXQgSUQuCisgICBQcm9ibGVtIHJlcG9ydGVkIGJ5IFNoaXlhbGVpLgogCi0yMDEwLTA2LTA3IDIwOjE4ICBqc2FmcmFuZWsKKzIwMTAtMDYtMjEgMDc6NTYgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmM6CiAKICAgIFJldmVydGluZyByZXYuIDE3NjE2LCB0aGUgbmVjZXNzYXJ5IGNoZWNrIGlzIGFscmVhZHkgaW4gcmV2LgogICAgMTc0MTUuCiAKKzIwMTAtMDYtMTggMTc6MDQgIGJ2YXNzY2hlCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczoKKworICAgQ0hBTkdFUzogTGludXg6IGJ1aWxkcyBhZ2FpbiB3aXRoIGVtYmVkZGVkIFBlcmwgZGlzYWJsZWQgKGJ1ZworICAgMjk4NTkxNSkuCisgICAoQmFja3BvcnRlZCByMTg3MjEpCisKKzIwMTAtMDYtMTYgMTk6MTQgIGR0czEyCisKKyAgICogc25tcGxpYi92YWNtLmM6CisKKyAgIEZpeCBwcm9jZXNzaW5nIG9mIHZpZXcgbWFza3MgKG1pc3BsYWNlZCBwYXJlbnRoZXNlcykKKwogMjAxMC0wNi0wMiAxMDo1NyAganNhZnJhbmVrCiAKICAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMsICAgCkBAIC0yMTU5LDE1MCArNzE2MiwyMDYgQEAKICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDI5NzI1Nzk6IGZpeGVkIGNoZWNraW5nIG9mCiAgICBzbm1wVGFyZ2V0QWRkclJvd1N0YXR1cyBTRVQgcmVxdWVzdHMuCiAKLTIwMTAtMDUtMjcgMDY6NDkgIGJ2YXNzY2hlCisyMDEwLTA1LTI3IDExOjE5ICBqc2FmcmFuZWsKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaDoKKworICAgQ0hBTkdFUzogY29ycmVjdGx5IGNhbGN1bGF0ZSBpZlhUYWJsZS5pZkhDSW5VY2FzdFBrdHMgb24gMzItYml0CisgICBMaW51eAorICAgCisgICBMaW51eCBkb2VzIG5vdCBwcm92aWRlIHN0YW5kYWxvbmUgY291bnRlciBmb3IgaW5jb21pbmcgdW5pY2FzdAorICAgcGFja2V0cyAoaXVjYXN0KQorICAgLSBpdCBwcm92aWRlcyBjb3VudGVyIG9mIGFsbCBwYWNrZXRzIChpYWxsKSArIHNlcGFyYXRlIGNvdW50ZXIKKyAgIGZvciB0aGUgbXVsdGljYXN0CisgICBvbmVzIChpbWNhc3QpLiBQcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBvZiBpZlRhYmxlIHJlYWQgdGhlc2UKKyAgIGNvdW50ZXJzIGFuZAorICAgY2FsY3VsYXRlZCBpdWNhc3QgPSBpYWxsIC0gaW1jYXN0ICpiZWZvcmUqIHRoZXNlIHZhbHVlcyB3ZXJlCisgICBleHBhbmRlZCBpbnRvCisgICA2NGJpdHMuIFRoaXMgcHJvZHVjZWQgZXJyb3JzIG9uIDMyYml0IHN5c3RlbXMgd2hlbiBpYWxsCisgICBvdmVyZmxvd2VkIHRvIHplcm8gYW5kCisgICBpbWNhc3Qgd2FzIG5vemVybyAtPiBpdWNhc3QgZ290IG5lZ2F0aXZlIGFuZCAnYzY0IDMyIGJpdCBjaGVjaworICAgZmFpbGVkJyBlcnJvciBpbgorICAgc25tcGQgbG9nLiBOb3cgdGhlIGFnZW50IGV4cGFuZHMgdGhlc2UgdmFsdWVzIHRvIDY0Yml0cyBmaXJzdCBhbmQKKyAgICogICAgICp0aGVuKiBwZXJmb3JtcyAgICB0aGUgY2FsY3VsYXRpb24sIHVzaW5nIGEgbmV3IGZsYWcuIAorICAgICAgMjAxMC0wNS0yNCAxMDoxMCAganNhZnJhbmVrCisKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYzoKKworICAgVXNlIHByb3BlciBzdHJpbmcgc2l6ZXMgYW5kIG1ha2Ugc3VyZSBzdHJpbmdzIGFyZQorICAgemVyby10ZXJtaW5hdGVkLgorCisyMDEwLTA1LTIwIDA4OjQ4ICBidmFzc2NoZQorCisgICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKKworICAgU3dhcHBlZCBsaW5rIG9yZGVyIG9mIC1sbmV0c25tcGhlbHBlcnMgLWxuZXRzbm1wbWliczogbmV0c25tcG1pYnMKKyAgIGRlcGVuZHMgb24gbmV0c25tcGhlbHBlcnMgYW5kIG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZC4KKworMjAxMC0wNS0xOSAxMjowNSAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGN0bC5jOgorCisgICBGaXJzdC1kcmFmdCBzdXBwb3J0IGZvciBBSVggZmlsZXN5c3RlbSBIQUwgbW9kdWxlICh1bnRlc3RlZCkKKworMjAxMC0wNS0xOSAxMToyNSAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmM6CisKKyAgIFN1cHBvcnQgZm9yIFNvbGFyaXMtc3R5bGUgJ2dldG1udGVudCcgQVBJLgorCisyMDEwLTA1LTE5IDA5OjU3ICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL21udHR5cGVzLmg6CisKKyAgIFNpbXBsaWZ5IHRoZSBoYW5kbGluZyBvZiB1bmtub3duL3Vud2FudGVkIGZpbGUgc3lzdGVtcy4KKworMjAxMC0wNS0xOSAwOTozMCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oOgorCisgICBGaXggbWlzc2luZy9icm9rZW4gQVBJIGRlY2xhcmF0aW9ucy4KKworMjAxMC0wNS0xOCAyMzo0NyAgdGFuZGVycworCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMsICAgCisgICAgICBhZ2VudC9vYmplY3RfbW9uaXRvci5jOgorCisgICBmaXggc3ludGF4IGVycm9yczogI2Vsc2lmIC0+ICNlbGlmCisKKzIwMTAtMDUtMTggMTQ6NTYgIGR0czEyCisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKKworICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSDogMjAwMTY1NjogSGFuZGxlIG51bGwtdGVybWluYXRpb24gb2YKKyAgIHN0cmluZyB2YWx1ZXMgcHJvcGVybHkuCisgICBCYXNlZCBvbiB0aGUgcHJpbmNpcGxlcyBvZiB0aGUgcGF0Y2ggZnJvbSBUb21teSBCZWFkbGUuCisKKzIwMTAtMDUtMTggMTQ6MzggIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9tbnR0eXBlcy5oLCBhZ2VudC9taWJncm91cC9ob3N0LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaDoKKworICAgV29ya2luZyg/KSBIQUwtYmFzZWQgdmVyc2lvbiBvZiBockZTVGFibGUuCisKKzIwMTAtMDUtMTcgMTU6MTggIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmg6CisKKyAgIFByb3ZpZGUgbWlzc2luZyBwdWJsaWMgaW50ZXJmYWNlIHRvIEhBTC1iYXNlZCBmaWxlc3RvcmUgbW9kdWxlLgorCisyMDEwLTA1LTE3IDA3OjQ2ICBqc2FmcmFuZWsKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKKworICAgQ2hlY2sgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMgYmVmb3JlCisgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc18qIGFuZCBmaXggbG1fc2Vuc29ycyB2ZXJzaW9uIGRldGVjdGlvbgorCisyMDEwLTA1LTE3IDA2OjUzICBidmFzc2NoZQorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliOgorCisgICBDSEFOR0VTOiBDeWd3aW46IGRvIG5laXRoZXIgY29tcGlsZSBub3IgbGluayBpbmV0X250b3AuYyBhbmQKKyAgIGluZXRfcHRvbi5jLgorCisyMDEwLTA1LTE2IDEwOjA1ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IGRvbid0IHdhcm4gYWJvdXQgc2lnbmVkL3Vuc2lnbmVkCisgICBtaXNtYXRjaGVzIGluIGNvbXBhcmlzb25zLCBqdXN0IGxpa2UgZm9yIHRoZSBVbml4IGJ1aWxkcy4KKyAgIChCYWNrcG9ydGVkIHRoaXMgY2hhbmdlIGZyb20gdGhlIHRydW5rLikKKworMjAxMC0wNS0xNiAwOTo1OSAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYzoKIAotICAgQ0hBTkdFUzogd2luRXh0RExMOiBjb252ZXJ0IGFzc2VydCgpIHN0YXRlbWVudHMgaW50bwotICAgbmV0c25tcF9hc3NlcnQoKSBzdGF0ZW1lbnRzLgorICAgQ0hBTkdFUzogV2luMzI6IHdpbkV4dERMTDogZG9uJ3QgdHJpZ2dlciBhIG5ldHNubXBfYXNzZXJ0KCkgd2hlbgorICAgbm8gZXh0ZW5zaW9uIERMTHMgaGF2ZSBiZWVuIGxvYWRlZC4KIAotMjAxMC0wNS0yMyAyMTowNyAgZHRzMTIKKzIwMTAtMDUtMTQgMTE6MDQgIGJ2YXNzY2hlCiAKLSAgICogQ2hhbmdlTG9nOgorICAgKiBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYzoKIAotICAgdmVyc2lvbiB1cGRhdGUKKyAgIENoYW5nZWQgYXNzZXJ0KCkgaW50byBuZXRzbm1wX2Fzc2VydCgpIChiYWNrcG9ydGVkIHIxODM1MworICAgcGFydGlhbGx5KS4KIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQ2hhbmdlczogVjUuNC4yIC0+IFY1LjQuMworMjAxMC0wNS0xNCAxMTowMCAgYnZhc3NjaGUKIAotMjAxMC0wNS0yMyAyMDo0MiAgZHRzMTIKKyAgICogUkVBRE1FLndpbjMyOgogCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorICAgRG9jdW1lbnRhdGlvbjogdXBkYXRlZCBDeWd3aW4gYnVpbGQgaW5zdHJ1Y3Rpb25zLgogCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorMjAxMC0wNS0xNCAwODo1NCAgYnZhc3NjaGUKIAotMjAxMC0wNS0yMyAyMDozOSAgZHRzMTIKKyAgICogbmV0LXNubXAtY29uZmlnLmluOgogCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvcGFyc2UuYywgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKKyAgIFJldmVydGVkIG5ldC1zbm1wLWNvbmZpZy5pbiBjaGFuZ2VzIGZyb20gcjE4Njg4IGJlY2F1c2UgYWx0aG91Z2gKKyAgIHRoZXNlIGNoYW5nZXMgbWFkZSB0aGUgUGVybCBtb2R1bGVzIGJ1aWxkLCB0aGUgUGVybCBtb2R1bGUKKyAgIHJlZ3Jlc3Npb24gdGVzdHMgc3RpbGwgZmFpbGVkLgogCi0gICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKzIwMTAtMDUtMTMgMTQ6MzUgIGpzYWZyYW5lawogCi0yMDEwLTA1LTE0IDEyOjQ2ICBkdHMxMgorICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmg6CiAKLSAgICogQ0hBTkdFUywgTkVXUzoKKyAgIGFkZCBORVRTTk1QX0xPR09OQ0UgbWFjcm8gZnJvbSB0cnVuawogCi0gICB2ZXJzaW9uIHVwZGF0ZQorMjAxMC0wNS0xMyAwOToxOCAgYnZhc3NjaGUKIAotMjAxMC0wNS0xNCAxMjo0MSAgZHRzMTIKKyAgICogY29uZmlndXJlLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCi0gICAqIENoYW5nZUxvZzoKKyAgIFJhbiBhdXRvcmVjb25mIC1pLgogCi0gICB2ZXJzaW9uIHVwZGF0ZQorMjAxMC0wNS0xMiAxNDoxNCAganNhZnJhbmVrCiAKLTIwMTAtMDUtMTQgMTI6MjggIGR0czEyCisgICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzLmM6CiAKLSAgICogc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgYSBtZW1vcnkgbGVhayBpbiBUQ1AtTUlCLgogCi0gICBtYWtlIGRlcGVuZAorMjAxMC0wNS0xMiAxMzowMiAganNhZnJhbmVrCiAKLTIwMTAtMDUtMTQgMTI6MTkgIGR0czEyCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmM6CiAKLSAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAotICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsICAKLSAgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgbWVtb3J5IGxlYWsgd2hlbiByZWFkaW5nIHNlbnNvcnMgZm9yCisgICBMTS1TRU5TT1JTLU1JQi4KIAotICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLQotMjAxMC0wNS0xNCAxMjoxMCAgZHRzMTIKLQotICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsICAgCi0gICAgICBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgotCi0gICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLQotMjAxMC0wNS0xMSAxNzoyNiAgYnZhc3NjaGUKKzIwMTAtMDUtMTIgMTI6NTcgIGR0czEyCiAKICAgICogcGVybC9hZ2VudC9hZ2VudC54czoKIAotICAgQnVpbGRzIGFnYWluIHdpdGggdGhlIE1pY3Jvc29mdCBWaXN1YWwgQyBjb21waWxlcnMsIHdoaWNoIGRvIG5vdAotICAgcmVjb2duaXplIHRoZSBDOTkgVUxMIHN1ZmZpeC4KKyAgIFJldmVydCByZXZpc2lvbiAxODY4OQorICAgTGF0ZXN0IFdpbjMyIGJ1aWxkcyBpbmNsdWRlIHN1cHBvcnQgZm9yIHN0cnRvdWxsLgorCisyMDEwLTA1LTEyIDEyOjA1ICBqc2FmcmFuZWsKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy5oLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IGFkZGVkIGRldGVjdGlvbiBvZiBsbV9zZW5zb3JzIHZlcnNpb24uCisgICBJIGFtIG5vdCBBdXRvY29uZiBndXJ1LCBzbyBJIGhvcGUgSSBnb3QgaXQgcmlnaHQuIFRoZSBnb2FsIGlzIHRvCisgICBkZWZpbmUgTkVUU05NUF9VU0VfU0VOU09SU19WMyAqYmVmb3JlKiBjb25maWdfbW9kdWxlc19hZ2VudAorICAgcHJvY2Vzc2VzIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMuaC4KIAogMjAxMC0wNS0xMSAxNTo0NiAgZHRzMTIKIAotICAgKiB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiwgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYuaW46CisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmOgogCiAgICBFbnN1cmUgJ25ldHNubXBfcmVhZF9tb2R1bGUnIGlzIGF2YWlsYWJsZSBmb3IgcGVybCBidWlsZC4KIApAQCAtMjMxMiwxMSArNzM3MSw0NyBAQAogCiAgICBGaXggcGVybCBidWlsZCB1bmRlciBXaW5kb3dzIChzdHJ0b3VsbCBub3QgYXZhaWxhYmxlKQogCisyMDEwLTA1LTExIDEwOjE0ICBidmFzc2NoZQorCisgICAqICBuZXQtc25tcC1jb25maWcuaW4sIHBlcmwvQVNOL01ha2VmaWxlLlBMLCBwZXJsL01ha2VmaWxlLlBMLCAgIAorICAgICAgcGVybC9NYWtlZmlsZS5zdWJzLnBsLCBwZXJsL09JRC9NYWtlZmlsZS5QTCwgICAKKyAgICAgIHBlcmwvU05NUC9NYWtlZmlsZS5QTCwgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2FnZW50L01ha2VmaWxlLlBMLCBwZXJsL2FnZW50L1N1cHBvcnQvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEw6CisKKyAgIENIQU5HRVM6IEN5Z3dpbjogYnVpbGRzIG5vdyB3aXRoIGVtYmVkZGVkIFBlcmwgc3VwcG9ydCBlbmFibGVkCisgICAoZW1iZWRkZWQgUGVybCByZWdyZXNzaW9uIHRlc3RzIGRvIG5vdCB5ZXQgcGFzcyBob3dldmVyKS4KKworMjAxMC0wNS0xMCAyMDozMSAgYnZhc3NjaGUKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYjoKKworICAgQ0hBTkdFUzogQ3lnd2luOiByZW1vdmVkIHdpbnBpcGUuYyBmcm9tIHRoZSBsaXN0IG9mIHNvdXJjZSBmaWxlcy4KKyAgIENIQU5HRVM6IEN5Z3dpbjogZW5hYmxlZCBVbml4IHRyYW5zcG9ydC4KKworMjAxMC0wNS0wOSAxNjo0NiAgYnZhc3NjaGUKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMiwgY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfaXB2Nl90eXBlcywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IEN5Z3dpbjogYnVpbGRzIG5vdyB3aXRoIE9wZW5TU0wgZW5hYmxlZC4KKyAgIENIQU5HRVM6IEN5Z3dpbjogYnVpbGRzIG5vdyB3aXRoIElQdjYgc3VwcG9ydCBlbmFibGVkLgorICAgQ0hBTkdFUzogTWluR1c6IGJ1aWxkcyBub3cgd2l0aCBJUHY2IHN1cHBvcnQgZW5hYmxlZC4KKyAgIENIQU5HRVM6IEN5Z3dpbjogYnVpbGRzIG5vdyBhbHNvIHdoZW4gdGhlIHNvdXJjZSBmaWxlcyBhcmUKKyAgIGxvY2F0ZWQgb24gYSBTYW1iYSBmaWxlc3lzdGVtIGluc3RlYWQgb2YgYSBsb2NhbCBmaWxlc3lzdGVtLgorICAgTm90ZTogYWxsIHRoZSBhYm92ZSBjaGFuZ2VzIGFyZSBiYWNrcG9ydHMgZnJvbSB0aGUgdHJ1bmsuCisKIDIwMTAtMDUtMDkgMTY6MzQgIGJ2YXNzY2hlCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vY3lnd2luLmg6CiAKLSAgIENIQU5HRVM6IEN5Z3dpbjogQlVHOiAyOTk3NDkyOiBieXRlIG9yZGVyIG9mIHVkcExvY2FsUG9ydCBpcyBub3cgY29ycmVjdAorICAgTkVXUzogQ3lnd2luOiBCVUc6IDI5OTc0OTI6IGJ5dGUgb3JkZXIgb2YgdWRwTG9jYWxQb3J0IGlzIG5vdworICAgY29ycmVjdC4KICAgIChCYWNrcG9ydGVkIHIxODA3NCBmcm9tIHRydW5rLikKIAogMjAxMC0wNS0wNiAxNDo0OSAgZHRzMTIKQEAgLTIzMjgsODcgKzc0MjMsNzMgQEAKIAogMjAxMC0wNS0wNiAxNDo0NCAgZHRzMTIKIAotICAgKiB3aW4zMi93aW4zMi5kc3csIHdpbjMyL3dpbjMyc2RrLmRzdzoKKyAgICogd2luMzIvd2luMzIuZHN3OgogCiAgICBBZGQgcHJvamVjdCBkZXBlbmRlbmNpZXMgZm9yIE1TVkMgYnVpbGRzLgogCisyMDEwLTA1LTA2IDE0OjQxICBkdHMxMgorCisgICAqIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHRyYXBkX2xvZy5jLCBzbm1wbGliL2NhbGxiYWNrLmM6CisKKyAgIENIQU5HRVM6IFdpbmRvd3M6IEZpeCBidWlsZCB1bmRlciBNaW5HVworICAgYmFjay9mb3J3YXJkIHBvcnQgb2YgcmV2aXNpb24gMTg2MzEKKworMjAxMC0wNS0wNiAwNzoyMSAgYnZhc3NjaGUKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9pcHY2X3R5cGVzLCAgIAorICAgICAgc25tcGxpYi9pbmV0X250b3AuYywgc25tcGxpYi9pbmV0X3B0b24uYywgICAKKyAgICAgIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYywgc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jOgorCisgICBDSEFOR0VTOiBDeWd3aW46IGJ1aWxkaW5nOiAtLWVuYWJsZS1pcHY2IGRvZXMgbm93IHdvcmsuCisgICAocG9ydGVkIHRoZSBwYXRjaGVzIHIxODA2MCBhbmQgcjE4NjE5IHRvIHRoZSBWNS41IGJyYW5jaCkuCisKIDIwMTAtMDUtMDYgMDY6MzMgIGJ2YXNzY2hlCiAKICAgICogIG5ldC1zbm1wLWNvbmZpZy5pbiwgdGVzdGluZy9URVNUQ09ORi5zaCwgICAKICAgICAgIHRlc3RpbmcvdGVzdHMvVDAzMHNubXB2M3VzZXJjcmVhdGlvbiwgICAKICAgICAgIHRlc3RpbmcvdGVzdHMvVDExNWFnZW50eHBlcmw6CiAKLSAgIENIQU5HRVM6IEN5Z3dpbjogRGV0ZWN0IGZyZWUgVURQIHBvcnRzIGNvcnJlY3RseSBmb3IgdXNlIGluIHRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisgICBDSEFOR0VTOiBDeWd3aW46IGZpeGVkIGJ1ZyBpbiByZWdyZXNzaW9uIHRlc3QgaW5mcmFzdHJ1Y3R1cmUKKyAgIHdoaWNoIG1hZGUgZGV0ZWN0aW9uIG9mIGEgZnJlZSBVRFAgcG9ydCBmYWlsLgogICAgKEJhY2twb3J0ZWQgdHJ1bmsgcjE4MDczIGFuZCByMTgwODApLgogCi0yMDEwLTA0LTMwIDE5OjEwICBidmFzc2NoZQotCi0gICAqICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMsIGFwcHMvc25tcHRyYXBkLmMsICAgCi0gICAgICBhcHBzL3NubXB0cmFwZF9sb2cuYywgc25tcGxpYi9jYWxsYmFjay5jOgotCi0gICBDSEFOR0VTOiBXaW5kb3dzOiBGaXggYnVpbGQgdW5kZXIgTWluR1cKLQotMjAxMC0wNC0zMCAxODo0NCAgYnZhc3NjaGUKLQotICAgKiBjb25maWd1cmU6Ci0KLSAgIFNob3VsZCBoYXZlIGJlZW4gaW5jbHVkZWQgaW4gcjE4NjI3LgotCi0yMDEwLTA0LTMwIDE4OjI3ICBidmFzc2NoZQotCi0gICAqIGNvbmZpZ3VyZS5pbjoKLQotICAgbWFkZSBzdXJlIHRoYXQgY3Jvc3MtY29tcGlsaW5nIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgZW5kaWFubmVzcwotICAgZG9lcyBub3QgdHJpZ2dlciBhIHN5bnRheCBlcnJvciBpbiB0aGUgY29uZmlndXJlIHNjcmlwdC4KLQotMjAxMC0wNC0yOCAxMDo0OCAgYnZhc3NjaGUKLQotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLQotICAgbGVmdCBvdXQgaW5ldF9udG9wKCkgYW5kIGluZXRfcHRvbigpIGZyb20gbGlibmV0c25tcCBzaW5jZSB0aGVzZQotICAgZnVuY3Rpb25zIGFyZSBhbHJlYWR5IHByZXNlbnQgaW4gQ3lnd2lucyBDIGxpYnJhcnkuCi0KLTIwMTAtMDQtMjggMTA6MjYgIGJ2YXNzY2hlCi0KLSAgICogUkVBRE1FLndpbjMyOgotCi0gICBGaXhlZCBhIGRvY3VtZW50YXRpb24gYnVnIHdpdGggcmVnYXJkIHRvIHRoZSBDeWd3aW4gYnVpbGQ6Ci0gICBsaW5raW5nIHdpdGggd3MyXzMyIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciByZWFsbHkgYW5jaWVudCBDeWd3aW4gdmVyc2lvbnMuCi0KLTIwMTAtMDQtMjggMDc6MjkgIGJ2YXNzY2hlCi0KLSAgICogIHNubXBsaWIvaW5ldF9udG9wLmMsIHNubXBsaWIvaW5ldF9wdG9uLmMsICAgCi0gICAgICBzbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMsIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKLQotICAgQ0hBTkdFUzogQ3lnd2luOiBidWlsZHMgbm93IHdpdGggSVB2NiBzdXBwb3J0IGVuYWJsZWQuCi0KLTIwMTAtMDQtMjcgMTY6NTUgIGJ2YXNzY2hlCi0KLSAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAotICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Ci0KLSAgIENIQU5HRVM6IFdpbjMyOiBidWlsZHMgYWdhaW4gd2l0aCBJUHY2IHN1cHBvcnQgZW5hYmxlZC4KLQotMjAxMC0wNC0yNyAxNTo0MiAgZHRzMTIKLQotICAgKiAgd2luMzIvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaCwgICAKLSAgICAgIHdpbjMyL25ldHNubXBtaWJzc2RrL01ha2VmaWxlLmluOgotCi0gICBSZS1pbnN0YXRlIE5vdGlmaWNhdGlvbi1Mb2cgTUlCIHN1cHBvcnQgd2hlbiBidWlsZGluZyB3aXRoCi0gICBXaW5kb3dzIFBsYXRmb3JtIFNESy4KLQogMjAxMC0wNC0yNSAxNzozNyAgYnZhc3NjaGUKIAogICAgKiBSRUFETUUud2luMzI6CiAKICAgIERvY3VtZW50YXRpb24gdXBkYXRlLgogCi0yMDEwLTA0LTIxIDExOjA1ICBidmFzc2NoZQorMjAxMC0wNC0yNSAxNzowMSAgYnZhc3NjaGUKIAotICAgKiBzbm1wbGliL3N0cnRvdWxsLmM6CisgICAqICBzbm1wbGliL3dpbnNlcnZpY2UuYywgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKIAotICAgQ29waWVkIHRoZSBzb3VyY2UgZmlsZSBzbm1wbGliL3N0cnRvdWxsLmMgZnJvbSB0aGUgdHJ1bmsgdG8gdGhlCi0gICBWNS40IGJyYW5jaC4KKyAgIFdpbjMyOiBidWlsZHMgYWdhaW4gd2l0aCBNU1ZDIDYgd2l0aG91dCBQU0RLLgorCisyMDEwLTA0LTI1IDE1OjA2ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluOgorCisgICBXaW4zMjogYnVpbGRzIGFnYWluIHdpdGggSEFWRV9XSU4zMl9QTEFURk9STV9TREsgZGlzYWJsZWQuCisKKzIwMTAtMDQtMjUgMTI6MDUgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIE1hZGUgaXQgYWdhaW4gcG9zc2libGUgdG8gZGlzYWJsZSBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESyB3aGVuCisgICBidWlsZGluZyB2aWEgd2luMzIvYnVpbGQuYmF0LgorCisyMDEwLTA0LTIwIDEyOjQ0ICBqc2FmcmFuZWsKKworICAgKiBzbm1wbGliL2FzbjEuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDI5NzEyNzA6IHJlZnVzZSB0byBwYXJzZSBBU04uMSB0b2tlbnMKKyAgIHdpdGggd3JvbmcgdHlwZSBmaWVsZC4KKyAgIFRoaXMgbWF5IHlpZWxkIHRvIHByb2JsZW1zIHdpdGggdGhpcmQtcGFydHkgYXBwbGljYXRpb25zIHdoaWNoCisgICBtYXkgZGVwZW5kIG9uIHBhcnNpbmcgdWdseSBBU04uMSBkYXRhIC0gd2UnbGwgc2VlLi4uCiAKIDIwMTAtMDQtMTggMTM6NDAgIGJ2YXNzY2hlCiAKQEAgLTI0MjAsMTcgKzc1MDEsOSBAQAogICAgaW5jbHVkaW5nIGJvdGgKICAgIDxzdGRhcmdzLmg+IGFuZCA8dmFyYXJncy5oPiBpbiB0aGUgc2FtZSBzb3VyY2UgZmlsZS4KIAotMjAxMC0wNC0xOCAxMzoyNCAgYnZhc3NjaGUKLQotICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCi0gICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKLQotICAgUmV2ZXJ0ZWQgYW5vdGhlciBjaGFuZ2UgdGhhdCB3YXMgaW50cm9kdWNlZCBpbiByMTg0OTUgYW5kIHRoYXQncwotICAgb2J2aW91c2x5IGJyb2tlbi4KLQogMjAxMC0wNC0xNSAxNjo1NSAgYnZhc3NjaGUKIAotICAgKiB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaDoKKyAgICogd2luMzIvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaDoKIAogICAgUGFydGlhbGx5IHJldmVydGVkIHIxODQ5NjoKICAgIC0gQ29tbWVudGVkIG91dCAjZGVmaW5lIE5FVFNOTVBfVVNFX0RMTCBhZ2FpbiBpbiBmaWxlCkBAIC0yNDQ0LDYgKzc1MTcsMjAgQEAKICAgIG9yIFY1LjUgYnJhbmNoZXMgYW5kIGhlbmNlIHRoZXJlIHdhcyBubyByZWFzb24gdG8gZGlzYWJsZSB0aGlzCiAgICBwcmVwcm9jZXNzb3Igc3ltYm9sLgogCisyMDEwLTA0LTE1IDEwOjUyICBqc2FmcmFuZWsKKworICAgKiB0ZXN0aW5nL3Rlc3RzL1QxMjBwcm94eWdldCwgdGVzdGluZy90ZXN0cy9UMTIxcHJveHlzZXQ6CisKKyAgIFRlc3RzIG5vdCB3b3JraW5nIGZvciBUQ1Agc2hvdWxkIGJlIHNraXBwZWQgYWxzbyBmb3IgVENQNi4KKworMjAxMC0wNC0xNCAxMzoxMiAganNhZnJhbmVrCisKKyAgICogIHRlc3RpbmcvdGVzdHMvU3ZhY21jb25maWcsIHRlc3RpbmcvdGVzdHMvVDEyMHByb3h5Z2V0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTIxcHJveHlzZXQsIHRlc3RpbmcvdGVzdHMvVDEyMnByb3h5c2V0ZmFpbDoKKworICAgRml4ZWQgdGVzdHMgJ1Byb3h5IEdFVC9TRVQgc3VwcG9ydCcgYW5kICdTTk1QdjIgdmFjbSBkZW5pYWwKKyAgIHN1cHBvcnQnIHdpdGggdWRwNiB0cmFuc3BvcnQuCisKIDIwMTAtMDQtMTQgMDk6NDcgIGR0czEyCiAKICAgICogIHdpbjMyLCB3aW4zMi9iaW4sIHdpbjMyL2Rpc3QsIHdpbjMyL2Rpc3QvaHRtbGhlbHAsICAgCkBAIC0yNDUyLDEwMiArNzUzOSwzMSBAQAogICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkLCB3aW4zMi9saWJzbm1wLCB3aW4zMi9saWJzbm1wX2RsbCwgICAKICAgICAgIHdpbjMyL2xpYnVjZG1pYnMsIHdpbjMyL2xvY2FsLCB3aW4zMi9uZXQtc25tcCwgICAKICAgICAgIHdpbjMyL25ldC1zbm1wL2FnZW50LCB3aW4zMi9uZXQtc25tcC9saWJyYXJ5LCB3aW4zMi9uZXRzbm1wbWlicywgIAotICAgICAgIHdpbjMyL25ldHNubXBtaWJzc2RrLCB3aW4zMi9zbm1wYnVsa2dldCwgd2luMzIvc25tcGJ1bGt3YWxrLCAgIAotICAgICAgd2luMzIvc25tcGQsIHdpbjMyL3NubXBkZWx0YSwgd2luMzIvc25tcGRmLCB3aW4zMi9zbm1wZHNkaywgICAKLSAgICAgIHdpbjMyL3NubXBnZXQsIHdpbjMyL3NubXBnZXRuZXh0LCB3aW4zMi9zbm1wbmV0c3RhdCwgICAKLSAgICAgIHdpbjMyL3NubXBzZXQsIHdpbjMyL3NubXBzdGF0dXMsIHdpbjMyL3NubXB0YWJsZSwgd2luMzIvc25tcHRlc3QsIAotICAgICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlLCB3aW4zMi9zbm1wdHJhcCwgd2luMzIvc25tcHRyYXBkLCAgIAotICAgICAgd2luMzIvc25tcHVzbSwgd2luMzIvc25tcHZhY20sIHdpbjMyL3NubXB3YWxrOgorICAgICAgIHdpbjMyL3NubXBidWxrZ2V0LCB3aW4zMi9zbm1wYnVsa3dhbGssIHdpbjMyL3NubXBkLCAgIAorICAgICAgd2luMzIvc25tcGRlbHRhLCB3aW4zMi9zbm1wZGYsIHdpbjMyL3NubXBnZXQsIHdpbjMyL3NubXBnZXRuZXh0LCAgCisgICAgICAgd2luMzIvc25tcG5ldHN0YXQsIHdpbjMyL3NubXBzZXQsIHdpbjMyL3NubXBzdGF0dXMsICAgCisgICAgICB3aW4zMi9zbm1wdGFibGUsIHdpbjMyL3NubXB0ZXN0LCB3aW4zMi9zbm1wdHJhbnNsYXRlLCAgIAorICAgICAgd2luMzIvc25tcHRyYXAsIHdpbjMyL3NubXB0cmFwZCwgd2luMzIvc25tcHVzbSwgd2luMzIvc25tcHZhY20sICAgCisgICAgICB3aW4zMi9zbm1wd2FsazoKIAogICAgRG9uJ3QgdHJ5IHRvIFNWTi1tYW5hZ2UgdGhlIFdpbmRvd3MgYmF0Y2ggYnVpbGQgaW5mcmFzdHJ1Y3R1cmUKICAgIChhZGQgcmVsZWFzZSwgZGVidWcsIE1ha2VmaWxlIHRvIHRoZSBwcmV2aW91cyBpZ25vcmUgbGlzdCkKIAogMjAxMC0wNC0xNCAwODoxNiAgZHRzMTIKIAotICAgKiB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiwgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYuaW46CisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmOgogCiAgICBGaXggV2luZG93cyBiYXRjaCBidWlsZCB1c2luZyBWaXN1YWwgU3R1ZGlvIHdpdGggZHluYW1pYyBsaW5raW5nLgogICAgVW5yZWZlcmVuY2VkIHN5bWJvbCBpbnRyb2R1Y2VkIGJ5IFNWTiByZXZpc2lvbiAxODM5MwogCi0yMDEwLTA0LTE0IDA4OjExICBkdHMxMgotCi0gICAqICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmg6Ci0KLSAgIEZpeCBXaW5kb3dzIGJhdGNoIGJ1aWxkIHVzaW5nIFZpc3VhbCBTdHVkaW8gMjAwOCB3aXRoIFBsYXRmb3JtCi0gICBTREsgZW5hYmxlZC4KLQogMjAxMC0wNC0xNCAwODowOCAgZHRzMTIKIAotICAgKiAgd2luMzIvYnVpbGQucGwsIHdpbjMyL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgsICAgCi0gICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKLSAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorICAgKiB3aW4zMi9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oOgogCi0gICBDSEFOR0VTOiBXaW4zMjogRml4IGJhdGNoIGJ1aWxkIHVzaW5nIHJlY2VudCB2ZXJzaW9ucyBvZiBWaXN1YWwgU3R1ZGlvLgorICAgQ0hBTkdFUzogV2luMzI6IEZpeCBiYXRjaCBidWlsZCB1c2luZyByZWNlbnQgdmVyc2lvbnMgb2YgVmlzdWFsCisgICBTdHVkaW8uCiAgICBQYXJ0aWFsIGJhY2sgcG9ydCBvZiBTVk4gcmV2aXNpb25zIDE3NTczIGFuZCAxNzY5Ni4KIAotMjAxMC0wNC0wNyAxNDozNyAgZHRzMTIKLQotICAgKiBDSEFOR0VTLCBORVdTOgotCi0gICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDEwLTA0LTA3IDE0OjIyICBkdHMxMgotCi0gICAqIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kOgotCi0gICBtYWtlIGRlcGVuZAotCi0yMDEwLTA0LTA3IDE0OjEyICBkdHMxMgotCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDEwLTA0LTA3IDE0OjA4ICBkdHMxMgotCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0KLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotCiAyMDEwLTA0LTA3IDE0OjA1ICBkdHMxMgogCiAgICAqIGxvY2FsL21pYjJjLnRhYmxlX2RhdGEuY29uZjoKQEAgLTI1NjAsMTIgKzc1NzYsMjYgQEAKIAogICAgUHl0aG9uIGlzIGFwcGFyZW50bHkgY2xpZW50LXNpZGUgb25seS4KIAotMjAxMC0wNC0wNiAwODo1NiAgZHRzMTIKKzIwMTAtMDQtMDYgMTA6MDYgIGR0czEyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jLCBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6CisgICAqIGFnZW50L3NubXBkLmM6CiAKLSAgIE5FV1M6IHNubXBkOiBMYXRjaCBsYXJnZS1kaXNrIHN0YXRpc3RpY3MgYXQgMlRiIChyYXRoZXIgdGhhbgotICAgd3JhcHBpbmcuCisgICBTZXQgc3VwcGxlbWVudGFyeSBncm91cHMgYmVmb3JlIGNoYW5naW5nIFVJRAorICAgKHdoaWNoIHByb2JhYmx5IGludm9sdmVzIGdpdmluZyB1cCBwcml2aWxlZ2VzKQorCisyMDEwLTA0LTA2IDA4OjU3ICBkdHMxMgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKKworICAgRG9jdW1lbnQgbGFyZ2UtZGlzayBzdGF0aXN0aWNzIGFzIGxhdGNoaW5nIGF0IDJUYiAocmF0aGVyIHRoYW4KKyAgIHdyYXBwaW5nKS4KKworMjAxMC0wMy0yOSAxNzoxNyAgYnZhc3NjaGUKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9nczoKKworICAgUmVtb3ZlZCAtV2lubGluZSBhbmQgLVduby1jaGFyLXN1YnNjcmlwdHMgKGJhY2twb3J0ZWQgcjE4Mjg2IGZyb20KKyAgIHRoZSB0cnVuaykuCiAKIDIwMTAtMDMtMjkgMTU6MjYgIGR0czEyCiAKQEAgLTI1ODYsNiArNzYxNiwxOSBAQAogICAgTm90ZSB0aGF0IHRoaXMgY291bGQgcG90ZW50aWFsbHkgYWZmZWN0IHRoZSBiZWhhdmlvdXIgb2YKICAgIGV4aXN0aW5nIGFjY2VzcyBjb250cm9sIGNvbmZpZ3VyYXRpb25zLgogCisyMDEwLTAzLTI5IDE1OjE2ICBidmFzc2NoZQorCisgICAqIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIENIQU5HRVM6IHBlcmw6CisgICBOZXRTTk1QOjphZ2VudDo6bmV0c25tcF9yZXF1ZXN0X2luZm9QdHI6OmdldFZhbHVlKCk6IGRvbid0IHJldHVybgorICAgYSBwb2ludGVyIHRvIGEgYnVmZmVyIG9uIHRoZSBzdGFjay4gSG93IGNhbiB0aGlzIGhhdmUgd29ya2VkCisgICByZWxpYWJseSA/PworICAgQ0hBTkdFUzogcGVybDoKKyAgIE5ldFNOTVA6OmFnZW50OjpuZXRzbm1wX3JlcXVlc3RfaW5mb1B0cjo6c2V0VmFsdWUoKSwKKyAgIEFTTl9DT1VOVEVSNjQ6IGZpeGVkIGJ1ZyB0aGF0IGNvdWxkIGNhdXNlIHRoaXMgbWV0aG9kIHRvIGZhaWwKKyAgIGV2ZW4gd2hlbiBhIHZhbGlkIG51bWJlciB3YXMgcHJvdmlkZWQuCisKIDIwMTAtMDMtMjkgMTU6MTUgIGR0czEyCiAKICAgICogc25tcGxpYi9zbm1wdXNtLmM6CkBAIC0yNTk0LDYgKzc2MzcsMTUyIEBACiAgICB0cmFwcy4KICAgIFJlcG9ydGVkIGJ5IFNyaWthcGlsYW4gR2FuZGhpCiAKKzIwMTAtMDMtMjkgMTI6NDYgIGJ2YXNzY2hlCisKKyAgICogcGVybC9TTk1QL3Qvc3RhcnRhZ2VudC5wbDoKKworICAgQ2F0Y2ggc3RkZXJyIG9uIFdpbmRvd3MgdG9vLgorCisyMDEwLTAzLTI5IDExOjQ4ICBidmFzc2NoZQorCisgICAqIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIEJ1aWxkcyBhZ2FpbiB3aXRoIHByZS1DOTAgY29tcGlsZXJzLgorCisyMDEwLTAzLTI5IDExOjE5ICBidmFzc2NoZQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgcGVybC9PSUQvT0lELnhzLCAgIAorICAgICAgcGVybC9TTk1QL1NOTVAueHMsIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIENIQU5HRVM6IHBlcmw6IGZpeGVkIGEgbWVtb3J5IGxlYWsgdHJpZ2dlcmVkIGJ5IGRlc3Ryb3lpbmcgYQorICAgTmV0U05NUDo6YWdlbnQ6Om5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gb2JqZWN0LgorICAgQ0hBTkdFUzogcGVybDogZml4ZWQgYSBtZW1vcnkgbGVhayB0cmlnZ2VyZWQgYnkgZmFpbHVyZSBvZgorICAgY3JlYXRpbmcgYSBOZXRTTk1QOjpPSUQgb2JqZWN0LgorICAgQ0hBTkdFUzogcGVybDogZml4ZWQgYSBtZW1vcnkgbGVhayB0cmlnZ2VyZWQgYnkgdGhlCisgICBOZXRTTk1QOjpPSUQ6OmdldHRhYmxlKCkgc3Vicm91dGluZS4KKyAgIENIQU5HRVM6IHBlcmw6IGZpeGVkIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHRyaWdnZXJlZCBieQorICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIE5ldFNOTVA6OlNOTVAuCisgICBDSEFOR0VTOiBwZXJsOiBmaXhlZCBhIG1lbW9yeSBsZWFrIHRyaWdnZXJlZCBieSBhIFBEVSBwcm9jZXNzaW5nCisgICBlcnJvciBpbiBOZXRTTk1QOjpTTk1QLgorICAgQ0hBTkdFUzogcGVybDogZml4ZWQgbWVtb3J5IGxlYWtzIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhbiBTTk1QdjMKKyAgIHNlc3Npb24gdmlhIE5ldFNOTVA6OlNOTVAuCisgICAKKyAgIEFsc28gZml4ZWQgdGhlIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgYWNjZXNzZXMgdHJpZ2dlcmVkIGJ5CisgICBhZGRpbmcgYSB2YXJiaW5kIHRvIGEgUERVIHZpYSBOZXRTTk1QOjpTTk1QIGludHJvZHVjZWQgYSBmZXcgZGF5cworICAgYWdvLgorICAgCisgICBUaGUgYnVncyBtZW50aW9uZWQgYWJvdmUgaGF2ZSBiZWVuIGZvdW5kIGJ5IGluc3BlY3RpbmcgdGhlIG91dHB1dAorICAgb2YgdGhlIGZvbGxvd2luZyBzaGVsbCBjb21tYW5kOgorICAgY2QgcGVybCAmJiB2YWxncmluZCAtLXRyYWNlLWNoaWxkcmVuPXllcyAtLWxlYWstY2hlY2s9ZnVsbCBtYWtlCisgICB0ZXN0CisKKzIwMTAtMDMtMjkgMTA6NTkgIGJ2YXNzY2hlCisKKyAgICogcGVybC9TTk1QL3Qvc3RhcnRhZ2VudC5wbDoKKworICAgU3dpdGNoZWQgYmFjayB0byB0aGUgcHJldmlvdXMgd2F5IG9mIHN0YXJ0aW5nIHByb2Nlc3NlcworICAgYXN5bmNocm9ub3VzbHkgYmVjYXVzZSBpdCBpcyBtb3JlIHJlbGlhYmxlLgorCisyMDEwLTAzLTI5IDA5OjI3ICBidmFzc2NoZQorCisgICAqIHBlcmwvU05NUC90L3N0YXJ0YWdlbnQucGw6CisKKyAgIERvIG5vdCBvbmx5IHNhdmUgc25tcGQgLyBzbm1wdHJhcGQgbG9ncyBidXQgYWxzbyB0aGUgc3Rkb3V0IC8KKyAgIHN0ZGVyciBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHRoZXNlIHByb2Nlc3Nlcy4KKworMjAxMC0wMy0yOCAxODowMCAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgUGFydGlhbGx5IHJldmVydGVkIHIxODM4MiBvbiB0aGUgNS41IGJyYW5jaCBpbiBvcmRlciB0byBwcmVzZXJ2ZQorICAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBhbHJlYWR5IHJlbGVhc2VkIFdpbmRvd3MtaGVhZGVycy4KKworMjAxMC0wMy0yOCAxNjowOSAgYnZhc3NjaGUKKworICAgKiBwZXJsL1NOTVAvdC9zdGFydGFnZW50LnBsOgorCisgICBDaGFuZ2VzIGluIHBlcmwvU05NUC90L3N0YXJ0YWdlbnQucGw6CisgICAtIEFkZGVkIGNvbW1hbmQtbGluZSBvcHRpb24gLWQgZm9yIHNubXBkIGFuZCBzbm1wdHJhcGQuCisgICAtIHNubXBkIGFuZCBzbm1wdHJhcGQgb3V0cHV0IGlzIG5vdyBzYXZlZCB0byBhIGxvZyBmaWxlIChvbmUgcGVyCisgICB0ZXN0KS4KKyAgIC0gUmV3cm90ZSBQZXJsIGNvZGUgZm9yIHN0YXJ0aW5nIHRoZSBzbm1wZC9zbm1wdHJhcGQgcHJvY2Vzc2VzCisgICBzdWNoIHRoYXQgdGhlIHNhbWUgY29kZSB3b3JrcyBvbiBVbml4IGFuZCBvbiBXaW5kb3dzLgorCisyMDEwLTAzLTI4IDEzOjM3ICBidmFzc2NoZQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi90b29scy5jLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogc25tcGxpYjogYWRkZWQgdGhlIGZ1bmN0aW9ucyBuZXRzbm1wX21hbGxvYygpLAorICAgbmV0c25tcF9jYWxsb2MoKSwgbmV0c25tcF9yZWFsbG9jKCksIG5ldHNubXBfc3RyZHVwKCkgYW5kCisgICBuZXRzbm1wX2ZyZWUoKS4KKyAgIENIQU5HRVM6IFdpbjMyOiBzbm1wbGliOiByZW1vdmVkIHRoZSB0cm91Ymxlc29tZSAjZGVmaW5lIG1hbGxvYworICAgbmV0c25tcF9tYWxsb2MgZXRjLiBUaGlzIG1lYW5zIHRoYXQgd2hlbiBjYWxsaW5nIGZ1bmN0aW9ucyBmcm9tCisgICB0aGUgTmV0LVNOTVAgRExMIGZyb20gQyBvciBDKysgY29kZSB0aGF0IGlzIGJlaW5nIGxpbmtlZCBhZ2FpbnN0CisgICBhbm90aGVyIHZlcnNpb24gb2YgdGhlIE1TVkMgcnVudGltZSBETEwgdGhhbiB0aGUgTmV0LVNOTVAgRExMLAorICAgYW5kIHdoZW4gYWxsb2NhdGluZyBtZW1vcnkgdGhhdCB3aWxsIGJlIGZyZWVkIGJ5IHRoZSBOZXQtU05NUAorICAgRExMLCB5b3Ugd2lsbCBlaXRoZXIgaGF2ZSB0byBjYWxsIHRoZSBOZXQtU05NUCBtZW1vcnkgYWxsb2NhdGlvbgorICAgZnVuY3Rpb25zIGV4cGxpY2l0bHkgb3IgcmVkZWZpbmUgbWFsbG9jKCkgZXRjLiB5b3Vyc2VsZi4KKworMjAxMC0wMy0yOCAxMjo0NiAgYnZhc3NjaGUKKworICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgRml4ZWQgYSByZWNlbnRseSByZWludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZy4KKworMjAxMC0wMy0yOCAxMjowNCAgYnZhc3NjaGUKKworICAgKiBwZXJsL2RlZmF1bHRfc3RvcmUvdGVzdC5wbDoKKworICAgQmFja3BvcnRlZCByMTgyODcgZnJvbSB0aGUgdHJ1bmsuCisKKzIwMTAtMDMtMjcgMTk6MTkgIGJ2YXNzY2hlCisKKyAgICogcGVybC9PSUQvT0lELnhzLCBwZXJsL1NOTVAvU05NUC54czoKKworICAgQnVpbGRzIGFnYWluLgorCisyMDEwLTAzLTI3IDE4OjU3ICBidmFzc2NoZQorCisgICAqICBwZXJsL0FTTi9BU04ueHMsIHBlcmwvT0lEL09JRC54cywgcGVybC9TTk1QL1NOTVAueHMsICAgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMsIHBlcmwvVHJhcFJlY2VpdmVyL3BwcG9ydC5oLCAgIAorICAgICAgcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgQmFja3BvcnRlZCByMTgyODIsIHIxODI4MyBhbmQgcjE4MzEyIGZyb20gdHJ1bmssIHdoaWNoIGZpeCBtb3N0CisgICBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgY29tcGlsYXRpb24gb2YgdGhlIFhTVUJzLgorCisyMDEwLTAzLTI3IDE4OjUyICBidmFzc2NoZQorCisgICAqICBwZXJsL0FTTi9BU04ueHMsIHBlcmwvQVNOL01ha2VmaWxlLlBMLCBwZXJsL09JRC9NYWtlZmlsZS5QTCwgICAKKyAgICAgIHBlcmwvT0lEL09JRC54cywgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMsIHBlcmwvYWdlbnQvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2FnZW50L1N1cHBvcnQvTWFrZWZpbGUuUEwsIHBlcmwvYWdlbnQvYWdlbnQueHMsICAgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS54cywgICAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTCwgICAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnhzOgorCisgICBCYWNrcG9ydGVkIHIxODI0OCwgd2hpY2ggbWFrZXMgY29tcGlsYXRpb24gb2YgdGhlIFBlcmwgWFNVQnMgbW9yZQorICAgc2lsZW50LgorCisyMDEwLTAzLTI2IDE5OjE2ICBidmFzc2NoZQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgcGVybC9PSUQvT0lELnhzLCAgIAorICAgICAgcGVybC9TTk1QL1NOTVAueHMsIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci54czoKKworICAgRm9sbG93LXVwIGZvciByMTgzNjggYW5kIHIxODM2OTogbWFkZSBzdXJlIHRoYXQgdGhlIE5ldC1TTk1QIFBlcmwKKyAgIGV4dGVuc2lvbnMgY29tcGlsZSB3aXRob3V0IHRyaWdnZXJpbmcgcHJlcHJvY2Vzc29yIHdhcm5pbmdzIGFib3V0CisgICByZWRlZmluaW5nIG1hbGxvYyBldGMuIG5vciB0cmlnZ2VyICJGcmVlIHRvIHdyb25nIHBvb2wiIGVycm9ycyBvbgorICAgV2luZG93cy4KKworMjAxMC0wMy0yNiAxMjowNCAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3N0cnRvdWxsLmM6CisKKyAgIFJlbW92ZWQgYSBzdXBlcmZsdW91cyAjaW5jbHVkZSBkaXJlY3RpdmUuCisKIDIwMTAtMDMtMjUgMjA6MDcgIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYzoKQEAgLTI2MDQsNiArNzc5Myw1MyBAQAogICAgY29ubmVjdCB0byBhbiBBZ2VudFggbWFzdGVyIGFnZW50IHJ1bm5pbmcgb24gdGhlIHNhbWUgc3lzdGVtCiAgICB3aXRob3V0IGhhdmluZyB0byBzZXQgdGhlIHZhcmlhYmxlIE5FVFNOTVBfRFNfQUdFTlRfWF9TT0NLRVQuCiAKKzIwMTAtMDMtMjUgMTY6MTEgIGJ2YXNzY2hlCisKKyAgICogIHBlcmwvT0lEL09JRC54cywgcGVybC9TTk1QL1NOTVAueHMsICAgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMsIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIENIQU5HRVM6IFdpbjMyOiBwZXJsOiBmaXhlZCBzZXZlcmFsICJGcmVlIHRvIHdyb25nIHBvb2wiIGVycm9ycy4KKyAgIE5vdGU6IHNpbmNlIGNhbGxvYygpIGlzIG5vdCByZWRlZmluZWQgaW4gPENPUkUvWFNVQi5oPiB1c2luZworICAgY2FsbG9jKCkgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBsZWFkcyB0byAiRnJlZSB0byB3cm9uZyBwb29sIgorICAgZXJyb3JzLCBhdCBsZWFzdCBvbiBXaW5kb3dzLgorCisyMDEwLTAzLTI1IDE2OjA0ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IG1hZGUgYnVpbGRpbmcgbW9yZSBzaWxlbnQgYnkgbm90CisgICByZWRlZmluaW5nIG1hbGxvYygpIG9yIGZyZWUoKSBkdXJpbmcgY29tcGlsYXRpb24gb2YgUGVybAorICAgZXh0ZW5zaW9ucyAocmVzdWx0ZWQgaW4gd2FybmluZ3MgYWJvdXQgbWFsbG9jKCkgLyBmcmVlKCkKKyAgIHJlZGVmaW5pdGlvbiBpbiB0aGUgUGVybCBoZWFkZXIgQ09SRS9YU1VCLmgpLgorCisyMDEwLTAzLTI1IDE1OjA2ICBidmFzc2NoZQorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBwZXJsL1NOTVAvU05NUC54cywgICAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIENIQU5HRVM6IEJVRzogMjk2OTg3MjogbWFkZSBzdXJlIHRoYXQgU09DS19TVEFSVFVQIGlzIGludm9rZWQKKyAgIGJlZm9yZSBpbml0X2FnZW50KCkgb24gV2luZG93cy4KKworMjAxMC0wMy0yNSAxMzozMCAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvQ29uZmlndXJlLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiwgICAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLmluOgorCisgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IHNpbXBsaWZpZWQgdGhlIGJ1aWxkIHByb2Nlc3MgYnkKKyAgIHJlbW92aW5nIHRoZSBmaWxlIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLmluLiBXaGljaCBJUHY2CisgICBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGZyb20gbmV0c25tcC5kbGwgaXMgbm93IGRldGVybWluZWQgYnkKKyAgIHdoaWNoIG9mIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBETEwgaGF2ZSBiZWVuIGRlY2xhcmVkIGFzCisgICBORVRTTk1QX0lNUE9SVC4KKworMjAxMC0wMy0yNSAxMzoyNyAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaDoKKworICAgV2luZG93cyBETEwgYnVpbGQgZml4LgorCiAyMDEwLTAzLTIyIDE2OjEwICBkdHMxMgogCiAgICAqIG1pYnMvTkVULVNOTVAtUEFTUy1NSUIudHh0OgpAQCAtMjYxOCw2ICs3ODU0LDE1IEBACiAgICBGb2xsb3ctdXAgZm9yIHIxODM0OTogYWRkZWQgbWlzc2luZyBjb21tYSBzdWNoIHRoYXQgaXQgaXMgYWdhaW4KICAgIHBvc3NpYmxlIHRvIGNvbXBpbGUgVUNELURJU0tJTy1NSUIuCiAKKzIwMTAtMDMtMjIgMTM6NTkgIGR0czEyCisKKyAgICogIG1hbi9zbm1wX2FwaV9lcnJzdHJpbmcuMywgbWFuL3NubXBfY2xvc2UuMywgbWFuL3NubXBfZXJyb3IuMywgICAKKyAgICAgIG1hbi9zbm1wX2ZyZWVfcGR1LjMsIG1hbi9zbm1wX29wZW4uMywgbWFuL3NubXBfcGVycm9yLjMsICAgCisgICAgICBtYW4vc25tcF9yZWFkLjMsIG1hbi9zbm1wX3NlbGVjdF9pbmZvLjMsIG1hbi9zbm1wX3NlbmQuMywgICAKKyAgICAgIG1hbi9zbm1wX3Nlc3NfcGVycm9yLjMsIG1hbi9zbm1wX3RpbWVvdXQuMzoKKworICAgQ0hBTkdFUzogbWFuOiBCVUc6IDI5NzI4NjA6IFVwZGF0ZSBicm9rZW4gcmVmZXJlbmNlcworCiAyMDEwLTAzLTIyIDEzOjQ5ICBkdHMxMgogCiAgICAqICBtaWJzL1VDRC1ESVNLSU8tTUlCLnR4dCwgbWlicy9VQ0QtRExNT0QtTUlCLnR4dCwgICAKQEAgLTI2NDEsNiArNzg4NiwyOSBAQAogCiAgICBGaXhlZCB0aGUgY29tcGlsZXIgd2FybmluZ3MgcmVwb3J0ZWQgYnkgZ2NjIChNaW5HVykuCiAKKzIwMTAtMDMtMjAgMDk6MTQgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmM6CisKKyAgIFJlZmFjdG9yaW5nOiBtb3ZlZCBkdXBsaWNhdGVkIGNvZGUgaW50byBhIG5ldyBmdW5jdGlvbi4KKworMjAxMC0wMy0xOSAxMzoxMiAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogbWFkZSB0aGUgZXJyb3IgbWVzc2FnZSB0aGF0IGlzIGxvZ2dlZCB3aGVuCisgICBkdXBsaWNhdGUgcmVnaXN0cmF0aW9uIGlzIGF0dGVtcHRlZCBtb3JlIGRldGFpbGVkLgorICAgCisgICBBbiBleGFtcGxlOgorICAgKGJlZm9yZSkKKyAgIGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKG1pYklJL3NubXAsCisgICBDOlxXSU5ET1dTXFN5c3RlbTMyXHNubXBtaWIuZGxsKQorICAgaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbGVkLgorICAgKGFmdGVyKQorICAgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbjogTUlCIG1vZHVsZXMgbWliSUkvc25tcCBhbmQKKyAgIEM6XFdJTkRPV1NcU3lzdGVtMzJcc25tcG1pYi5kbGwgKG9pZCAuMS4zLjYuMS4yLjEuMTEpLgorICAgaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbGVkLgorCiAyMDEwLTAzLTE5IDEyOjQwICBidmFzc2NoZQogCiAgICAqICBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYywgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYsICAgCkBAIC0yNjU5LDEzICs3OTI3LDYgQEAKICAgIGJ5IGV2ZXJ5IHJlcXVlc3QgZm9yIHdoaWNoIGEgcmVzcG9uc2Ugd2l0aCBub24temVybyBlcnJvciBzdGF0dXMKICAgIGlzIHNlbnQgYmFjay4KIAotMjAxMC0wMy0xOSAxMTo0MSAgYnZhc3NjaGUKLQotICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6Ci0KLSAgIFJldmVydGVkIHIxODMyNCBzaW5jZSB0aGUgNS40IGJyYW5jaCBpcyBpbiBSQyBzdGFnZSBhbmQgYQotICAgbGVhay1hdC1leGl0IGlzIG5vdCBhIHNob3dzdG9wcGVyLgotCiAyMDEwLTAzLTE3IDEzOjQxICBidmFzc2NoZQogCiAgICAqIG1pYnMvTkVULVNOTVAtQUdFTlQtTUlCLnR4dCwgbWlicy9ORVQtU05NUC1FWFRFTkQtTUlCLnR4dDoKQEAgLTI2ODUsODUgKzc5NDYsMTIgQEAKICAgIENIQU5HRVM6IEJVRzogMjk3MTI1NzogRml4ZWQgd2luRXh0RExMIGhhbmRsaW5nIG9mIG11bHRpLXZhcmJpbmQKICAgIGdldE5leHQgcmVxdWVzdHMgd2l0aCBPSURzIGluIHJldmVyc2UgbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLgogCi0yMDEwLTAzLTE0IDIyOjU2ICBkdHMxMgorMjAxMC0wMy0xNiAxOToxOCAgYnZhc3NjaGUKIAotICAgKiBDSEFOR0VTLCBORVdTOgorICAgKiBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYzoKIAotICAgdmVyc2lvbiB1cGRhdGUKLQotMjAxMC0wMy0xNCAyMjozMSAgZHRzMTIKLQotICAgKiBDaGFuZ2VMb2c6Ci0KLSAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMTAtMDMtMTQgMjI6MjggIGR0czEyCi0KLSAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQ6Ci0KLSAgIG1ha2UgZGVwZW5kCi0KLTIwMTAtMDMtMTQgMjI6MTkgIGR0czEyCi0KLSAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQ6Ci0KLSAgIG1ha2UgZGVwZW5kCi0KLTIwMTAtMDMtMTQgMjI6MTkgIGR0czEyCi0KLSAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQ6Ci0KLSAgIG1ha2UgZGVwZW5kCi0KLTIwMTAtMDMtMTQgMjI6MTAgIGR0czEyCi0KLSAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAotICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsICAKLSAgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCBtYW4vbmV0c25tcF93YXRjaGVyLjM6Ci0KLSAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0KLTIwMTAtMDMtMTQgMjI6MDcgIGR0czEyCi0KLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAgIAotICAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKLQotICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisgICBDSEFOR0VTOiBXaW4zMjogd2luRXh0RExMOiBmaXhlZCBhIGJ1ZyBpbiBnZXROZXh0IGhhbmRsaW5nIHRoYXQKKyAgIGNvdWxkIGNhdXNlIHRoZSBNSUIgb3V0cHV0IHRvIGJlIHRydW5jYXRlZC4KIAogMjAxMC0wMy0xMiAxMTo1MyAgZHRzMTIKIApAQCAtMjc3MywxMSArNzk2MSwxMiBAQAogICAgaGVhZGVyIHRva2VuCiAgICBQYXRjaCBzdXBwbGllZCBieSBEYW4gTmVsc29uCiAKLTIwMTAtMDMtMTEgMTY6NTIgIGR0czEyCisyMDEwLTAzLTEyIDExOjQzICBkdHMxMgogCi0gICAqIG1hbi9zbm1wY21kLjEuZGVmOgorICAgKiBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jOgogCi0gICBEb2N1bWVudCB0aGUgZm9ybWF0IG9mIHRoZSAtZS8tRSBjb21tYW5kIGxpbmUgb3B0aW9ucy4KKyAgIFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbiBvZgorICAgZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKCkKIAogMjAxMC0wMy0xMSAxNjo0NyAgZHRzMTIKIApAQCAtMjgwOCw2ICs3OTk3LDE1IEBACiAgICBDSEFOR0VTOiBQQVRDSDogMjkzNzk5NjogQWRkIERhdGU6IGhlYWRlciB0byBlbWFpbCBzZW5kIGJ5CiAgICB0cmFwdG9lbWFpbAogCisyMDEwLTAzLTExIDE0OjUwICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI5Njc0MDA6IFJldHJpZXZlIGVycm9yIGNvdW50ZXJzIGZvciB0aGUKKyAgIEV0aGVyTGlrZS1NSUIKKyAgIFBhdGNoIHN1cHBsaWVkIGJ5IEpvc2VmIE1vZWxsZXJzLgorCiAyMDEwLTAzLTExIDE0OjIzICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYzoKQEAgLTI4MjMsNiArODAyMSwyMSBAQAogICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyOTU2NjU3OiBIYW5kbGUgb3Zlci1sZW5ndGggQWdlbnRYIE9JRHMuCiAgICBQYXRjaCBwcm92aWRlZCBieSBSb2IgV2VzdAogCisyMDEwLTAzLTExIDEyOjIzICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX2NvbW1vbi5jOgorCisgICBQcm92aWRlIG1pc3NpbmcgZGVidWcgcGFyYW1ldGVyLgorICAgUGF0Y2ggcHJvdmlkZWQgYnkgQW5kcmVhcyBKYWVnZXIuCisKKzIwMTAtMDMtMTEgMTI6MjEgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmM6CisKKyAgIFByb3ZpZGUgbWlzc2luZyAoZHVtbXkpIHJldHVybiB2YWx1ZSwgdG8gc3VwcHJlc3MgY29tcGlsZXIKKyAgIHdhcm5pbmcuCisgICBQYXRjaCBwcm92aWRlZCBieSBBbmRyZWFzIEphZWdlci4KKwogMjAxMC0wMy0xMSAxMjoxOSAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmM6CkBAIC0yODM3LDcgKzgwNTAsNyBAQAogCiAyMDEwLTAzLTExIDExOjU3ICBkdHMxMgogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNDoKIAogICAgUmVwbGFjZSBiYWNrcXVvdGUgd2l0aCBzaW5nbGUgcXVvdGUgaW4gY29uZmlndXJlIG91dHB1dCBtZXNzYWdlLgogICAgV2hpbGUgdGhpcyBjaGFuZ2UgaXMgcHJvYmFibHkgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSwgaXQgZmVlbHMKQEAgLTI4NjgsMjEgKzgwODEsMzEwIEBACiAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI5NTA4NDU6IEZpeCBpZkhpZ2hTcGVlZCBjYWxjdWxhdGlvbgogICAgUGF0Y2ggcHJvdmlkZWQgYnkgTGVvbmFyZG8gQ2hpcXVpdHRvCiAKLTIwMTAtMDMtMDMgMTY6MTEgIGpzYWZyYW5laworMjAxMC0wMy0wOSAxNzo0OCAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaDoKKworICAgQ0hBTkdFUzogV2luMzI6IGV4cG9ydGVkIG5ldHNubXBfcmVhZF9tb2R1bGUoKSBmcm9tIG5ldHNubXAuZGxsCisgICBzdWNoIHRoYXQgTmV0U05NUC5wbSBidWlsZHMgYWdhaW4uCisKKzIwMTAtMDMtMDkgMTc6NDcgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluOgorCisgICBTaW1wbGlmaWVkIHR3byBtYWtlZmlsZXMgdXNlZCBieSBidWlsZC5iYXQgKFdpbjMyKS4KKworMjAxMC0wMy0wOSAxNzo0NCAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBsaWJzbm1wLmRsbCBidWlsZHMgbm93IHdpdGggTVNWQyAyMDAyCisgICBhbmQgYWJvdmUgd2l0aG91dCB0cmlnZ2VyaW5nIGEgbGlua2VyIGVycm9yIGFib3V0IHN0cnRvdWxsLgorICAgKEJhY2twb3J0ZWQgdHJ1bmsgcjE3ODg2LikKKworMjAxMC0wMy0wOSAxNzoyNCAgYnZhc3NjaGUKKworICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBidWlsZGluZyBOZXRTTk1QLnBtIGRvZXMgbm8gbG9uZ2VyCisgICB0cmlnZ2VyIGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHJlZGVmaW5pbmcgX1dJTjMyX1dJTk5UIG5vcgorICAgTlRERElfVkVSU0lPTi4KKworMjAxMC0wMy0wOSAxNzoyMiAgYnZhc3NjaGUKKworICAgKiBwZXJsL1NOTVAvTWFrZWZpbGUuUEw6CisKKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogbWFkZSBidWlsZGluZyBOZXRTTk1QLnBtIG1vcmUgc2lsZW50IGJ5CisgICBhZGRpbmcgdGhlIE1TVkMgY29tcGlsZXIgZmxhZ3MgLURfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworICAgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MuCisKKzIwMTAtMDMtMDIgMTY6NTQgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyL0NvbmZpZ3VyZSwgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9zbm1wZC9NYWtlZmlsZS5pbjoKKworICAgRm9sbG93LXVwIGZvciByMTgxNjcgKG1lcmdlIG9mIHNubXBkIGFuZCBzbm1wZHNkayBhbmQgYWxzbyBvZgorICAgbmV0c25tcG1pYnMgYW5kIG5ldHNubXBtaWJzc2RrKTogdGhlIGJhdGNoIGZpbGUgd2luMzIvYnVpbGQuYmF0CisgICB3b3JrcyBhZ2FpbiB3aXRoIHRoZSBQbGF0Zm9ybSBTREsgZW5hYmxlZC4KKworMjAxMC0wMy0wMiAxNjo1MiAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9NYWtlZmlsZS1hcHBzLmluOgorCisgICBGb2xsb3ctdXAgZm9yIHIxODIxNSAocmVwbGFjZWQgdGhlIG9ic29sZXRlIGNsLmV4ZSBvcHRpb24gL0dYIGJ5CisgICB0aGUgZXF1aXZhbGVudCAvRUhzYzsgYWRkZWQgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiwgYWRkZWQKKyAgIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIGFuZCByZW1vdmVkIC9GcC4uLiBhbmQgL1lYKS4KKworMjAxMC0wMi0yOCAxNTo1NiAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzoKKworICAgV2luMzI6IGZpeGVkIGEgY29tcGlsZXIgd2FybmluZyBhYm91dCByZWRlZmluaXRpb24gb2YKKyAgIF9XSU4zMl9XSU5OVCBieSBtYWtpbmcgc3VyZSB0aGF0IDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gaXMKKyAgIGluY2x1ZGVkIGJlZm9yZSA8d2luZG93cy5oPi4KKworMjAxMC0wMi0yOCAxNToyNCAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYmhlbHBlcnMvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9zbm1wZC9NYWtlZmlsZS5pbiwgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW46CisKKyAgIENIQU5HRVM6IFdpbjMyOiBiYXRjaCBidWlsZDogcmVwbGFjZWQgdGhlIG9ic29sZXRlIC9HWCBieSB0aGUKKyAgIGVxdWl2YWxlbnQgL0VIc2MuCisgICBDSEFOR0VTOiBXaW4zMjogYmF0Y2ggYnVpbGQ6IGFkZGVkIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIKKyAgIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIHRvIG1ha2UgYnVpbGRpbmcgd2l0aCBNU1ZDIDIwMDgKKyAgIG1vcmUgc2lsZW50LgorICAgQ0hBTkdFUzogV2luMzI6IGJhdGNoIGJ1aWxkOiByZW1vdmVkIC9GcC4uLiBhbmQgL1lYLiBUaGVzZQorICAgb3B0aW9ucyBpbmZsdWVuY2UgaG93IHByZWNvbXBpbGVkIGhlYWRlciBmaWxlcyBhcmUgZ2VuZXJhdGVkLAorICAgd2hpY2ggYXJlIG5vdCB1c2VkIGluc2lkZSB0aGUgTmV0LVNOTVAgcHJvamVjdC4gL1lYIGlzIG5vdAorICAgc3VwcG9ydGVkIGJ5IE1TVkMgMjAwOC4KKyAgIENIQU5HRVM6IFdpbjMyOiBiYXRjaCBidWlsZDogcmVtb3ZlZCBhIGR1cGxpY2F0ZSBvY2N1cnJlbmNlIG9mCisgICBzdHJ0b3VsbC5vYmouCisKKzIwMTAtMDItMjggMTQ6MTEgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvQ29uZmlndXJlLCB3aW4zMi9NYWtlZmlsZS5pbjoKKworICAgRm9sbG93LXVwIGZvciByMTgxNjcgKG1lcmdlIG9mIHNubXBkIGFuZCBzbm1wZHNkayBhbmQgYWxzbyBvZgorICAgbmV0c25tcG1pYnMgYW5kIG5ldHNubXBtaWJzc2RrKTogYXBwbGllZCB0aGUgbmVjZXNzYXJ5IGNoYW5nZXMgdG8KKyAgIHRoZSB3aW4zMi9Db25maWd1cmUgc2NyaXB0IGFuZCB3aW4zMi9NYWtlZmlsZS5pbi4KKworMjAxMC0wMi0yOCAxMTo0MCAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgRm9sbG93LXVwIGZvciByMTgxODE6IHN5bmNocm9uaXplZCBuZXQtc25tcC1jb25maWcuaC5pbiB3aXRoCisgICBuZXQtc25tcC1jb25maWcuaC4KKworMjAxMC0wMi0yMyAxOTowMyAgYnZhc3NjaGUKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X21hbnVhbDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IHdoZW4gZ2VuZXJhdGluZyBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBzeXN0ZW0KKyAgIGxvY2F0aW9uIGFuZCBubyBkb21haW4gbmFtZSBpcyBmb3VuZCBpbiAvZXRjL3Jlc29sdi5jb25mLCB1c2UKKyAgICJAbm8ud2hlcmUiIGluc3RlYWQgb2YgIiIuCisKKzIwMTAtMDItMjMgMTg6NTAgIGJ2YXNzY2hlCisKKyAgICogY29uZmlndXJlLCBtNC9hY19wcm9tcHRfdXNlci5tNDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IG1hZGUgc3VyZSB0aGF0IHRoZSBjb25maWd1cmUgc2NyaXB0IGRvZXMgbm8KKyAgIGxvbmdlciBpbnZva2UgInRhaWwgLTEiLCB3aGljaCBpcyBub3QgUE9TSVgtY29tcGxpYW50LgorCisyMDEwLTAyLTIzIDE3OjQzICBidmFzc2NoZQogCiAgICAqIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKIAotICAgUmVnZXJhdGUgY29uZmlndXJlIHNjcmlwdCBhZnRlciByZXYuIDE4MTkzIChhdXRvbWF0aWMgUlBNIHZlcnNpb24KLSAgIGRldGVjdGlvbikuCi0gICBOZXQtU05NUCBzaG91bGQgY29tcGlsZSB3aXRoIHJwbS00LjYgYXV0b21hdGljYWxseS4KKyAgIEZvbGxvdy11cCBmb3IgcjE4MTkzIChqc2FmcmFuZWspOiByZXJhbiBhdXRvcmVjb25mIGZvciB0aGUgdHJ1bmsKKyAgIGFuZCB0aGUgNS41IGJyYW5jaC4KIAogMjAxMC0wMi0yMyAxMjoyNyAganNhZnJhbmVrCiAKLSAgICogY29uZmlndXJlLmluOgorICAgKiBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczoKIAogICAgQ0hBTkdFUzogYnVpbGRpbmc6IEZpeGVkIGNvbXBpbGF0aW9uIHdpdGggcnBtLTQuNi4KICAgIFR1cm4gb24gdGhlIGxlZ2FjeSBBUEkgd2hlbiBycG0tNC42IGlzIGRldGVjdGVkLgogCisyMDEwLTAyLTIyIDE5OjMzICBidmFzc2NoZQorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50LCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsOgorCisgICBDSEFOR0VTOiBidWlsZGluZzogbWFkZSBzdXJlIHRoYXQgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lcyBubworICAgbG9uZ2VyIGludm9rZSAidGFpbCAtMSIsIHdoaWNoIGlzIG5vdCBQT1NJWC1jb21wbGlhbnQuCisKKzIwMTAtMDItMjEgMTk6MjMgIGJ2YXNzY2hlCisKKyAgICogIHNubXBsaWIvdG9vbHMuYywgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IG1hZGUgc3VyZSB0aGF0IHJlZGVmaW5pbmcgbWFsbG9jKCkgZXRjLiBpbgorICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggZG9lcyBub3QgdHJpZ2dlciBzdHJhbmdlCisgICBjb21waWxlciBhbmQgbGlua2VyIGVycm9ycy4KKyAgIAorICAgKEJhY2twb3J0ZWQgdHJ1bmsgcjE3OTEwIGFuZCByMTgxNjUpLgorCisyMDEwLTAyLTIxIDE5OjIwICBidmFzc2NoZQorCisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IGV4cG9ydGVkCisgICBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb25fdW5jaGVja2VkKCkgZnJvbSBuZXRzbm1wLmRsbC4KKyAgIAorICAgKEJhY2twb3J0ZWQgdHJ1bmsgcjE3OTE4LikKKworMjAxMC0wMi0yMSAxODo1OCAgYnZhc3NjaGUKKworICAgKiAgUkVBRE1FLndpbjMyLCB3aW4zMi9saWJzZGxsLmRzdywgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIHdpbjMyL3dpbjMyZGxsLmRzdzoKKworICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiByZW5hbWVkIGxpYnNkbGwuZHN3IGludG8gd2luMzJkbGwuZHN3LgorICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBzaW1wbGlmaWVkIGxpbmtpbmcgdGhlIE5ldC1TTk1QCisgICBhcHBsaWNhdGlvbnMgd2l0aCBuZXRzbm1wLmRsbCBieSBhZGRpbmcgYWxsIGFwcGxpY2F0aW9uIHByb2plY3RzCisgICB0byB0aGUgc2FtZSB3b3Jrc3BhY2UgdGhhdCBpcyB1c2VkIGZvciBidWlsZGluZyB0aGUgRExMLgorICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBtYWRlIGJ1aWxkaW5nIG5ldHNubXAuZGxsIGxlc3MgZXJyb3IKKyAgIHByb25lIGJ5IGxldHRpbmcgdGhlIGNvbXBpbGVyIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgaWYgdGhlCisgICBwcmVwcm9jZXNzb3Igc3ltYm9sIE5FVFNOTVBfVVNFX0RMTCBoYXMgbm90IGJlZW4gZGVmaW5lZC4KKworMjAxMC0wMi0yMSAxODo1MSAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3A6CisKKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogQWRkZWQgbGlic25tcC5kZWYgdG8gdGhlIGxpc3Qgb2YKKyAgIGxpYnNubXBfZGxsLmRzcCBzb3VyY2UgZmlsZXMgc3VjaCB0aGF0IHRoZSBETEwgaXMgcmVidWlsdCB3aGVuCisgICB0aGUgLmRlZiBmaWxlIGhhcyBiZWVuIG1vZGlmaWVkLgorCisyMDEwLTAyLTIxIDE4OjQ1ICBidmFzc2NoZQorCisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IGV4cG9ydGVkIG5ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nKCkgZnJvbQorICAgbmV0c25tcC5kbGwuCisKKzIwMTAtMDItMjEgMTc6MzkgIGJ2YXNzY2hlCisKKyAgICogIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYywgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTW9yZSBXaW4zMiBJUHY2IHNvdXJjZSBjb2RlIGNvbnNpc3RlbmN5IGltcHJvdmVtZW50czoKKyAgIC0gTW92ZWQgI3VuZGVmIEhBVkVfSUZfTkFNRVRPSU5ERVggZnJvbSBzbm1wbGliLyouYyB0bworICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguCisgICAtIENoYW5nZWQgdGhlIGdsb2JhbCBpbjZhZGRyX2FueSB2YXJpYWJsZSBpbnRvIGEgc3RhdGljIHZhcmlhYmxlCisgICBzdWNoIHRoYXQKKyAgIG11bHRpcGxlIGRlZmluaXRpb25zIGRvIG5vdCB0cmlnZ2VyIGEgbGlua2VyIGVycm9yLgorICAgLSBBZGRlZCB0eXBlZGVmcyBmb3IgdWludDhfdCwgaW50OF90LCB1aW50MTZfdCBhbmQgaW50MTZfdC4KKyAgIC0gUmVwbGFjZWQgJyNpZiBORVRTTk1QX0VOQUJMRV9JUFY2JyBieSAnI2lmZGVmCisgICBORVRTTk1QX0VOQUJMRV9JUFY2Jy4KKworMjAxMC0wMi0yMCAwOToxMCAgYnZhc3NjaGUKKworICAgKiBhcHBzL3NubXB0YWJsZS5jOgorCisgICBCYWNrcG9ydGVkIHRydW5rIHIxNzg4Mywgd2hpY2ggZml4ZXMgYSB0eXBvIGludHJvZHVjZWQgaW4gcjE3ODgxLgorCisyMDEwLTAyLTE5IDIwOjIzICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogZG8gbm90IGNvbXBsYWluIHRoYXQgaXF1ZXJ5U2VjTmFtZSBpcyBtaXNzaW5nIGluCisgICBzbm1wZC5jb25mIHdoZW4gaXRzIHZhbHVlIHdvbid0IGJlIHVzZWQuCisgICAKKyAgIChCYWNrcG9ydGVkIHRydW5rIHIxNzkxNy4pCisKKzIwMTAtMDItMTkgMTk6NDQgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvYmluLCB3aW4zMi9saWI6CisKKyAgIFVwZGF0ZWQgU3VidmVyc2lvbiBpZ25vcmUgbGlzdC4KKworMjAxMC0wMi0xOSAxOTozOSAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgU3luY2hyb25pemVkIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIGFuZAorICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4uCisKKzIwMTAtMDItMTkgMTk6MzYgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvc25tcGQuYywgYXBwcy9zbm1wdGFibGUuYywgYXBwcy9zbm1wdHJhcGQuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaCwgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYzoKKworICAgQ0hBTkdFUzogV2luMzI6IGxpbmUgYnVmZmVyaW5nIGRvZXMgbm93IHdvcmsgd2hlbiBOZXQtU05NUCBpcworICAgYnVpbHQgd2l0aCBNU1ZDLiBUaGlzIG1ha2VzIGl0IGEgbG90IGVhc2llciB0byBkZWJ1ZyBOZXQtU05NUCBvbgorICAgV2luMzIgc2luY2UgZWFjaCBsaW5lIGRvZXMgbm93IGFwcGVhciBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgaXQKKyAgIGhhcyBiZWVuIGdlbmVyYXRlZC4KKyAgIAorICAgVGhpcyBpcyBhIGJhY2twb3J0IG9mIHIxNzg4MSBmcm9tIHRoZSB0cnVuay4KKworMjAxMC0wMi0xOSAxNDoxOCAgYnZhc3NjaGUKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiwgCisgICAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLmluOgorCisgICBDSEFOR0VTOiBXaW4zMjogbGlic25tcCBidWlsZHMgYWdhaW4gYXMgYSBETEwgd2hlbiBJUHY2IGlzCisgICBlbmFibGVkLgorCisyMDEwLTAyLTE5IDEzOjAyICBidmFzc2NoZQorCisgICAqICBSRUFETUUud2luMzIsIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jLCBzbm1wbGliL3dpbnNlcnZpY2UuYywgICAKKyAgICAgIHdpbjMyL01nbXRBcGktd2luRXh0RExMLmgsIHdpbjMyL1NubXAtd2luRXh0RExMLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLmRzcCwgd2luMzIvbmV0c25tcG1pYnNzZGssICAgCisgICAgICB3aW4zMi9zbm1wZHNkaywgd2luMzIvd2luMzIuZHN3LCB3aW4zMi93aW4zMnNkay5kc3c6CisKKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogd2luRXh0RExMIG1vZHVsZSBpcyBvbmx5IGJ1aWx0IGlmCisgICBVU0lOR19XSU5FWFRETExfTU9EVUxFIGlzIGRlZmluZWQuCisgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IHNpbXBsaWZpZWQgYnVpbGRpbmcgd2luRXh0RExMIGJ5CisgICBpbmNsdWRpbmcgYSBjb3B5IG9mIHRoZSBNaW5HVyBoZWFkZXJzIDxzbm1wLmg+IGFuZCA8bWdtdGFwaS5oPi4KKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogZHJvcHBlZCBzdXBwb3J0IGZvciBidWlsZGluZyBOZXQtU05NUAorICAgd2l0aCBNU1ZDIDYuMCB3aXRob3V0IFBsYXRmb3JtIFNESy4KKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogYWRkZWQgcHJvamVjdCBkZXBlbmRlbmNpZXMgaW4gd2luMzIuZHN3CisgICBzdWNoIHRoYXQgdGhlIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIElERSBjYW4gZmlndXJlIG91dCB0aGUKKyAgIHByb3BlciBwcm9qZWN0IGJ1aWxkIG9yZGVyLgorICAgCisgICAodGhlc2UgY2hhbmdlcyBoYXZlIGJlZW4gYmFja3BvcnRlZCBmcm9tIHRydW5rIHJldmlzaW9ucyAxNzg4NCwKKyAgIDE4MTU3IGFuZCAxODE2MykuCisKKzIwMTAtMDItMTkgMTI6MzUgIGJ2YXNzY2hlCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oOgorCisgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IGJ1aWxkcyBhZ2FpbiB3aXRoIE1TVkMgNi4wLgorICAgCisgICBCYWNrcG9ydGVkIHIxNzg2OTogY2hhbmdlZCB0aGUgcmV0dXJuIHR5cGUgb2Ygc3RydG91bGwoKSBmcm9tCisgICAndW5zaWduZWQKKyAgIGxvbmcgbG9uZycgKHdoaWNoIGlzIG5vdCB2YWxpZCBDODkpIHRvICd1aW50NjRfdCcgKGRlY2xhcmVkIGluCisgICA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+KS4KKworMjAxMC0wMi0xOCAwOTo0NSAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaDoKKworICAgU291cmNlIGNvZGUgY2xlYW51cDoKKyAgIC0gTW92ZWQgZG9jdW1lbnRhdGlvbiBvZiBuZXRzbm1wX2xhcmdlX2ZkX3NldCBtZW1iZXJzIHRvIHRoZQorICAgY29tbWVudAorICAgYmxvY2sganVzdCBhYm92ZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUuCisgICAtIFJlbW92ZWQgc3VwZXJmbHVvdXMgJ2V4dGVybiAiQyInIHNwZWNpZmllcjogdGhpcyBsaW5rYWdlCisgICBzcGVjaWZpZXIKKyAgIG9ubHkgaGFzIGFuIGVmZmVjdCBvbiBkZWNsYXJhdGlvbnMgb2YgdmFyaWFibGVzIG9mIGZ1bmN0aW9ucyBhbmQKKyAgIG5vdAorICAgb24gdHlwZWRlZnMgb3Igc3RydWN0IGRlZmluaXRpb25zLgorICAgLSBSYW4gdGhpcyBoZWFkZXIgZmlsZSB0aHJvdWdoIGluZGVudC4KKworMjAxMC0wMi0xMCAxNjozOSAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYzoKKworICAgQ0hBTkdFUzogTGludXg6IEltcHJvdmVkIEV0aGVyTGlrZS1NSUIgc3VwcG9ydAorICAgUGF0Y2ggc3VwcGxpZWQgYnkgSm9zZWYgTW9lbGxlcnMKKwogMjAxMC0wMi0xMCAxMDowNCAgZHRzMTIKIAogICAgKiBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOgpAQCAtMjg5MCw0OSArODM5MiwxNSBAQAogICAgQ0hBTkdFUzogcHl0aG9uOiBTdXBwb3J0IG51bGwtYnl0ZXMgaW4gb2N0ZXQgc3RyaW5ncwogICAgUGF0Y2ggc3VwcGxpZWQgYnkgVG9tbXkgQmVhZGxlCiAKLTIwMTAtMDItMDkgMTU6MDUgIGJ2YXNzY2hlCisyMDEwLTAyLTA1IDA5OjUyICBqc2FmcmFuZWsKIAotICAgKiAgLiwgUkVBRE1FLndpbjMyLCBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYywgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5oLCB3aW4zMi9NZ210QXBpLXdpbkV4dERMTC5oLCAgIAotICAgICAgd2luMzIvU25tcC13aW5FeHRETEwuaDoKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jOgogCi0gICBDSEFOR0VTOiBXaW4zMjogd2luRXh0RExMOiB3b3JrcyBub3cgb24gV2luZG93cyBWaXN0YSwgV2luZG93cyA3Ci0gICBhbmQgV2luZG93cyAyMDA4IHRvby4KLSAgIENIQU5HRVM6IFdpbjMyOiBzaW1wbGlmaWVkIGJ1aWxkaW5nIE5ldC1TTk1QICsgd2luRXh0RExMIHdpdGgKLSAgIE1TVkMuCi0gICBDSEFOR0VTOiBNaW5HVzogd2luRXh0RExMOiBidWlsZHMgbm93LgotICAgTm90ZTogYWxsIHRoZXNlIGNoYW5nZXMgaGF2ZSBiZWVuIGJhY2twb3J0ZWQgZnJvbSB0aGUgdHJ1bmsuCi0KLTIwMTAtMDItMDkgMTQ6MjkgIGJ2YXNzY2hlCi0KLSAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oOgotCi0gICBDSEFOR0VTOiBXaW4zMjogYWRkZWQgI2luY2x1ZGUgPHN0ZGlvLmg+IGluCi0gICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmggc3VjaCB0aGF0IE5ldC1TTk1QIDUuNQotICAgYnVpbGRzIGFnYWluIHdpdGggTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gNi4KLQotMjAxMC0wMi0wOCAxOTo0NyAgYnZhc3NjaGUKLQotICAgKiAgLiwgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKLSAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oLCAgIAotICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgsICAgCi0gICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaCwgICAKLSAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oLCAgIAotICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oOgotCi0gICBDSEFOR0VTOiBzbm1wZCwgc25tcGxpYjogUmVtb3ZlIHRoZSBpbmxpbmUgZGVjbGFyYXRpb25zIGZvcgotICAgZnVuY3Rpb25zIHRoYXQgbGFjayBhbiBpbmxpbmUgZGVmaW5pdGlvbi4KLSAgIAotICAgQmFja3BvcnRlZCByMTY5MjYgZnJvbSB0aGUgdHJ1bmsgdG8gdGhlIDUuNCBicmFuY2ggYmVjYXVzZSBNYXJpbwotICAgR2FydG5lciBwb3N0ZWQKLSAgIHBhdGNoIDI5NDUyMDIgaW4gd2hpY2ggaGUgcmVwb3J0ZWQgdGhhdCBnY2MgcHJpbnRlZCBzZXZlcmFsCi0gICB3YXJuaW5ncyBsaWtlIHRoZQotICAgZm9sbG93aW5nIGZvciB0aGUgY29kZSBvbiB0aGUgNS40IGJyYW5jaDoKLSAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oOjI0MTogd2FybmluZzogaW5saW5lCi0gICBmdW5jdGlvbiAndm9pZCoKLSAgIG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKG5ldHNubXBfcmVxdWVzdF9pbmZvKiwgY29uc3QKLSAgIGNoYXIqKScgdXNlZCBidXQKLSAgIG5ldmVyIGRlZmluZWQKKyAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBmaWxlZGVzY3JpcHRpb3IgbGVhayBpbiBFdGhlcmxpa2UtTUlCIGFuZAorICAgUk1PTi1NSUIKIAogMjAxMC0wMi0wNSAwOTo0OCAganNhZnJhbmVrCiAKQEAgLTI5NTgsMTQgKzg0MjYsNiBAQAogCiAgICBDSEFOR0VTOiBidWlsZGluZzogJ21ha2UgdGVzdCBURVNUT1BUUz0iLVAgdGNwIicgd29ya3MgZmluZSBub3cKIAotMjAxMC0wMS0zMSAwMTo0MiAgdGFuZGVycwotCi0gICAqIG1hbi9NYWtlZmlsZS5pbjoKLQotICAgRm9sbG93LXVwIGZvciByMTc3MTAgLyBiYWNrcG9ydCBvZiByMTc3MTI6IHJlbW92ZSBhbiBvYnNvbGV0ZQotICAgbWFudWFsCi0gICBwYWdlIGZyb20gdGhlIHNldCBvZiBmaWxlcyB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQKLQogMjAxMC0wMS0yOSAyMDowNyAganNhZnJhbmVrCiAKICAgICogdGVzdGluZy90ZXN0cy9UMDU5dHJhcGR0cmFwaGFuZGxlOgpAQCAtMzAxNyw5MiArODQ3Nyw0MSBAQAogCiAgICBGaXggbWlub3IgdHlwbyBpbiBtYW4gcGFnZSwgaXQncyBzbm1wbmV0c3RhdCAtQ3AsIG5vdCAtQ1AuCiAKKzIwMTAtMDEtMTQgMTI6MzQgIGpzYWZyYW5laworCisgICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYzoKKworICAgQ0hBTkdFUzogZml4ZWQgbWVtb3J5IGxlYWsgaW4gUk1PTi1NSUIgYW5kIEVUSEVSTElLRS1NSUIgd2hlbgorICAgdGhlcmUgYXJlIG11bHRpcGxlIGFsaWFzZXMgb2YgYW4gbmV0d29yayBpbnRlcmZhY2UKKyAgIFJhdGlvbmFsZTogdGhlIGFsaWFzZWQgaW50ZXJmYWNlcyBoYXZlIHRoZSBzYW1lIGlmSW5kZXggLT4KKyAgIENPTlRBSU5FUl9JTlNFUlQgZmFpbHMsIGJ1dCB0aGUgcmVqZWN0ZWQgZW50cnkgd2FzIG5vdCBmcmVlZC4KKworMjAxMC0wMS0xMyAxMToyMSAganNhZnJhbmVrCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogZml4IG1lbW9yeSBsZWFrIGluIGlwQWRkcmVzc1ByZWZpeFRhYmxlCisgICAtIG5ldF9zbm1wX3NlYXJjaF91cGRhdGVfcHJlZml4X2luZm8gcmV0dXJucyBkaWZmZXJlbnQgY29kZSwgd2hlbgorICAgdGhlIGVudHJ5IHdhcyBub3QgaW5zZXJ0ZWQgdG8gbGlzdCBhbmQgY2FuIGJlIGZyZWVkLgorCisyMDEwLTAxLTEyIDAwOjUyICB0YW5kZXJzCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczoKKworICAgQ0hBTkdFUzogYnVpbGQ6IHJ1biBycG0gY29uZmlndXJlIGNoZWNrcyBmb3IgaHJfc3dpbnN0IHJld3JpdGUKKyAgIChycG0KKyAgIHZlcnNpb24gb25seSkKKwogMjAxMC0wMS0wNyAxOTo0MiAgaGFyZGFrZXIKIAotICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYywgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6CisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmM6CiAKICAgIFBhdGNoIGZyb20gU3RlcGhlbiBIZW1taW5nZXIgdG8gZml4IGEgbWlub3IgbWVtbGVhayBpbiBjcHUKICAgIHN5c2N0cmwgZmV0Y2hpbmcKIAotMjAxMC0wMS0wNiAxNzo1NiAgZHRzMTIKLQotICAgKiBDSEFOR0VTOgotCi0gICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDEwLTAxLTA2IDE3OjI1ICBkdHMxMgotCi0gICAqIENoYW5nZUxvZzoKLQotICAgdmVyc2lvbiB1cGRhdGUKLQotMjAxMC0wMS0wNiAxNzowNiAgZHRzMTIKLQotICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsICAgCi0gICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6Ci0KLSAgIG1ha2UgZGVwZW5kCi0KLTIwMTAtMDEtMDYgMTc6MDYgIGR0czEyCi0KLSAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCAgIAotICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgotCi0gICBtYWtlIGRlcGVuZAotCi0yMDEwLTAxLTA2IDE2OjU1ICBkdHMxMgotCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDEwLTAxLTA2IDE2OjQzICBkdHMxMgotCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0KLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotCiAyMDEwLTAxLTA2IDEzOjMzICBqc2FmcmFuZWsKIAogICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9hdC5oOgpAQCAtMzEyMSw3ICs4NTMwLDggQEAKIAogICAgKiBzbm1wbGliL3NubXBVbml4RG9tYWluLmM6CiAKLSAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDI5MjIzOTA6IEZpeCB0ZXN0IGZvciBtaXNzaW5nIGNvbnRleHROYW1lIHBhcmFtZXRlcgorICAgQ0hBTkdFUzogc25tcGxpYjogQlVHUzogMjkyMjM5MDogRml4IHRlc3QgZm9yIG1pc3NpbmcgY29udGV4dE5hbWUKKyAgIHBhcmFtZXRlcgogCiAyMDEwLTAxLTA1IDIyOjMzICBkdHMxMgogCkBAIC0zMTQ3LDkgKzg1NTcsMzkgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyOTEyNTg0OiBGaXggbnVsbCBPSUQgaGFuZGxpbmcgaW4gQWdlbnR4IG9uIDY0Yml0CisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI5MTI1ODQ6IEZpeCBudWxsIE9JRCBoYW5kbGluZyBpbiBBZ2VudHgKKyAgIG9uIDY0Yml0CiAgICBQYXRjaCBzdXBwbGllZCBieSBMdXR6IEphZW5pY2tlCiAKKzIwMTAtMDEtMDUgMTA6MTEgIHRhbmRlcnMKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4Lmg6CisKKyAgIENIQU5HRVM6IGhwdXg6IGZpeCBidWlsZCBlcnJvciBvbiBIUC1VWCAxMC4yMAorCisyMDEwLTAxLTA1IDA4OjQyICBqc2FmcmFuZWsKKworICAgKiBtYW4sIG1hbi9wZHVfYXBpLjMsIG1hbi9zZXNzaW9uX2FwaS4zLCBtYW4vdmFyYmluZF9hcGkuMzoKKworICAgUmVtb3ZlIGdlbmVyYXRlZCBtYW4gcGFnZXMgZnJvbSByZXBvc2l0b3J5LgorCisyMDA5LTEyLTIzIDA5OjQ5ICBqc2FmcmFuZWsKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jOgorCisgICBGaXggaW52YWxpZCByZWFkIHJlcG9ydGVkIGJ5IHZhbGdyaW5kOgorICAgSW52YWxpZCByZWFkIG9mIHNpemUgMQorICAgbWVtY3B5IChtY19yZXBsYWNlX3N0cm1lbS5jOjQwMikKKyAgIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19jb250YWluZXJfbG9hZF92NAorICAgKGlwYWRkcmVzc19pb2N0bC5jOjI0MCkKKyAgIG5ldHNubXBfYXJjaF9pcGFkZHJlc3NfY29udGFpbmVyX2xvYWQgKGlwYWRkcmVzc19saW51eC5jOjE1OCkKKyAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19jb250YWluZXJfbG9hZCAoaXBhZGRyZXNzX2NvbW1vbi5jOjExMikKKyAgIAorICAgUmV0dXJuaW5nIHN0cnVjdHVyZSB3aXRoIHBvaW50ZXJzIGluc2lkZSBpcyBub3QgdGhlIGJlc3QgdGhpbmcgdG8KKyAgIGRvLgorCiAyMDA5LTEyLTIyIDA3OjU5ICBidmFzc2NoZQogCiAgICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKQEAgLTMxNjMsNiArODYwMywyNSBAQAogICAgc3RyaW5nCiAgICByZWFkIGJ5IHRoaXMgZnVuY3Rpb24uCiAKKzIwMDktMTItMjEgMTQ6MjkgIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IGZpeCBjcmFzaCBpbiBJRi1NSUIgYW5kIElQLU1JQiB3aGVuIHRoZXJlIGFyZQorICAgc29tZSBpbnRlcmZhY2VzIHdpdGggYnJvYWRjYXN0IElQIGFkZHJlc3MgYW5kIHNvbWUgd2l0aG91dC4KKyAgIAorICAgUmVzZXQgdGhlIGJjYXN0ZW50cnkgaW4gdGhlIGxvb3AsIHNvIGl0IGNhbm5vdCBiZSBpbnNlcnRlZCB0byB0aGUKKyAgIGNvbnRhaW5lcgorICAgdHdpY2UuCisgICAKKyAgIFdpdGhvdXQgdGhpcyBwYXRjaCwgd2hlbiBhbiBpbnRlcmZhY2Ugd2l0aG91dCBicm9hZGNhc3QgYWRkcmVzcworICAgaXMgcHJvY2Vzc2VkLAorICAgdGhlIGJjYXN0YWRkcmVzcyBmcm9tIHByZXZpb3VzIGxvb3AgaXMgaW5zZXJ0ZWQgaW50byB0aGUKKyAgIGNvbnRhaW5lci4gVGhpcworICAgb2J2aW91c2x5IGZhaWxzIGFuZCB0aGUgYmNhc3RlbnRyeSBpcyBmcmVlZCwgYnV0IHRoZSBjb250YWluZXIKKyAgIHN0aWxsIGNvbnRhaW5zCisgICByZWZlcmVuY2UgdG8gaXQgLT4gU0lHU0VHVi4KKwogMjAwOS0xMi0yMSAxMzo1MiAgYnZhc3NjaGUKIAogICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CkBAIC0zMjE3LDcgKzg2NzYsOCBAQAogICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmM6CiAKICAgIEFwcGxpZWQgcGF0Y2ggIzI5MTIwNjgsIHdoaWNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgZHVyaW5nIHN0YXJ0dXAuCi0gICBUaGUgZnVuY3Rpb24gbG9nX25vdGlmaWNhdGlvbigpIGFkZHMgYSByb3cgdG8gdGhlIHRhYmxlCisgICBUaGUKKyAgIGZ1bmN0aW9uIGxvZ19ub3RpZmljYXRpb24oKSBhZGRzIGEgcm93IHRvIHRoZSB0YWJsZQogICAgbmxtTG9nVmFyVGFibGUsIGJ1dAogICAgdGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGJlZm9yZSB0aGF0IHRhYmxlIGhhcyBiZWVuCiAgICBpbml0aWFsaXplZC4gSWYKQEAgLTMyNDYsNyArODcwNiw4IEBACiAKICAgICogUkVBRE1FLndpbjMyOgogCi0gICBCYWNrcG9ydGVkIHIxNzkwMSAoc3BlbGxpbmcgZml4ZXMgYW5kIGhyU3lzdGVtVXB0aW1lIGRvY3VtZW50YXRpb24pLgorICAgQmFja3BvcnRlZCByMTc5MDEgKHNwZWxsaW5nIGZpeGVzIGFuZCBoclN5c3RlbVVwdGltZQorICAgZG9jdW1lbnRhdGlvbikuCiAKIDIwMDktMTItMTcgMTA6MDMgIGR0czEyCiAKQEAgLTMyNjcsMTIgKzg3MjgsMjggQEAKICAgIHRyYXBzIGlzIG5vdwogICAgY29ycmVjdC4KIAorMjAwOS0xMi0xMCAxNTo1MiAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKKworICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIRVM6IDI5MTE5NzA6IFByb3Blcmx5IHRlcm1pbmF0ZSBsaW5rZWQgbGlzdAorICAgb2YgcmVnaXN0cmF0aW9ucy4KKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IE1pcmtvIERlY2tlcnQuCisKIDIwMDktMTItMTAgMTU6NDMgIGR0czEyCiAKICAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYywgICAKICAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDI5MTEzMjM6IEZpeCBhZ2VudCBsb2NrdXAgd2hlbiBtb25pdG9yaW5nIEFnZW50WC1kZWxlZ2F0ZWQgaW5mb3JtYXRpb24KKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAyOTExMzIzOiBGaXggYWdlbnQgbG9ja3VwIHdoZW4KKyAgIG1vbml0b3JpbmcgQWdlbnRYLWRlbGVnYXRlZCBpbmZvcm1hdGlvbgorCisyMDA5LTEyLTEwIDE0OjUzICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgorCisgICBCYWNrcG9ydCBvZiBTVk4gcmV2aXNpb25zIDE3ODcwLzE3ODk0LAorICAgdG8gaGFuZGxlIGNvbnN0IHdhcm5pbmdzLgogCiAyMDA5LTEyLTEwIDEyOjU0ICBidmFzc2NoZQogCkBAIC0zMjkyLDcgKzg3NjksOSBAQAogICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jLCAgIAogICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaDoKIAotICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBzdXBwb3J0IG9mIG5ldHdvcmsgaW50ZXJmYWNlcyB3aXRoIEhXIGFkZHJlc3MgYmlnZ2VyIHRoYW4gNiBieXRlcyB0byBpcE5ldFRvTWVkaWFUYWJsZSBhbmQgaXBOZXRUb1BoeXNpY2FsVGFibGUuCisgICBDSEFOR0VTOiBzbm1wZDogQWRkIHN1cHBvcnQgb2YgbmV0d29yayBpbnRlcmZhY2VzIHdpdGggSFcgYWRkcmVzcworICAgYmlnZ2VyIHRoYW4gNiBieXRlcyB0byBpcE5ldFRvTWVkaWFUYWJsZSBhbmQKKyAgIGlwTmV0VG9QaHlzaWNhbFRhYmxlLgogICAgU29tZSBIVywgbGlrZSBJbmZpbmlCYW5kLCB1c2VzIEhXIGFkZHJlc3NlcyB3aXRoIDkgYW5kIG1vcmUKICAgIGJ5dGVzLiBTbm1wZCBvbiBMaW51eCB3YXMgbm90IGFibGUgdG8gcGFyc2UgL3Byb2MvbmV0L2FycCB0aGVuCiAgICBhbmQgcHJvZHVjZWQgdWdseSAnaW9jdGwgMzUxMjMgcmV0dXJuZWQgLTEnIHRvIGxvZy4KQEAgLTMzMDEsNyArODc4MCw4IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLCBzbm1wbGliL3N5c3RlbS5jOgogCi0gICBDSEFOR0VTOiBzbm1wbGliLCBzbm1wZDogTWFrZSBzdXJlIHRoYXQgYSBtYXNrIGlzIGdpdmVuIHRvIG9wZW4gd2hlbiBPX0NSRUFUIGlzIHNwZWNpZmllZAorICAgQ0hBTkdFUzogc25tcGxpYiwgc25tcGQ6IE1ha2Ugc3VyZSB0aGF0IGEgbWFzayBpcyBnaXZlbiB0byBvcGVuCisgICB3aGVuIE9fQ1JFQVQgaXMgc3BlY2lmaWVkCiAKIDIwMDktMTItMDcgMTA6NDYgIGR0czEyCiAKQEAgLTMzMTAsMTIgKzg3OTAsMTkgQEAKICAgIFR3ZWFrIG1pc3Npbmcgc3ViaWRlbnRpZmllciBwcm9jZXNzaW5nIHRvIGJlIG1vcmUgdHlwZS1hd2FyZS4KICAgIChBbiBpc3N1ZSB3aXRoIEFJWCwgYXQgbGVhc3QpCiAKKzIwMDktMTItMDUgMjA6MTkgIHRhbmRlcnMKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmg6CisKKyAgIGZpeCBkZWNsYXJhdGlvbiBvZiBzdHJ0b3VsbAorCiAyMDA5LTEyLTA1IDE3OjQyICB0YW5kZXJzCiAKICAgICogcGVybC9TTk1QL1NOTVAueHM6CiAKICAgIGNhbGwgbmV0c25tcF9yZWFkX21vZHVsZSBpbnN0ZWFkIG9mIHJlYWRfbW9kdWxlIHRvIG1ha2UgaXQKLSAgIGNvbXBpbGUgd2l0aCBORVRTTk1QX0NMRUFOX05BTUVTUEFDRQorICAgY29tcGlsZSB3aXRoCisgICBORVRTTk1QX0NMRUFOX05BTUVTUEFDRQogCiAyMDA5LTEyLTA1IDE3OjE5ICB0YW5kZXJzCiAKQEAgLTMzNDQsNyArODgzMSw3IEBACiAKIDIwMDktMTItMDEgMTI6MzYgIGR0czEyCiAKLSAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg6CisgICAqIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaDoKIAogICAgVXBkYXRlIGEgcmVkdW5kYW50IChhbmQgcHJvYmFibHkgaW5hY2N1cmF0ZSkgY29tbWVudC4KIApAQCAtMzM1MiwxOSArODgzOSwyMiBAQAogCiAgICAqIGFnZW50L2hlbHBlcnMvdGFibGUuYzoKIAotICAgQ0hBTkdFUzogYWdlbnQ6IEJVR1M6IDI4MjIzNjA6IEZpeCBtZW1vcnkgbGVhayB3aGVuIGJ1aWxkaW5nIHRhYmxlIE9JRHMKKyAgIENIQU5HRVM6IGFnZW50OiBCVUdTOiAyODIyMzYwOiBGaXggbWVtb3J5IGxlYWsgd2hlbiBidWlsZGluZworICAgdGFibGUgT0lEcwogCiAyMDA5LTEyLTAxIDEyOjA4ICBkdHMxMgogCiAgICAqIGFwcHMvc25tcHRhYmxlLmM6CiAKLSAgIENIQU5HRVM6IHNubXB0YWJsZTogQlVHUzogMjgzNzk5ODogSGFuZGxlIG1pc3NpbmcgaW5zdGFuY2Ugc3ViaWRlbnRpZmllcnMgaW4gcmVzdWx0cworICAgQ0hBTkdFUzogc25tcHRhYmxlOiBCVUdTOiAyODM3OTk4OiBIYW5kbGUgbWlzc2luZyBpbnN0YW5jZQorICAgc3ViaWRlbnRpZmllcnMgaW4gcmVzdWx0cwogCiAyMDA5LTEyLTAxIDExOjU2ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYzoKIAotICAgQ0hBTkdFUzogYWdlbnQ6IEJVR1M6IDI4NDEwMDg6IFByb3RlY3QgYWdhaW5zdCBjcmFzaCBmb2xsb3dpbmcgZmFpbGVkIEFnZW50WCByZXNwb25zZQorICAgQ0hBTkdFUzogYWdlbnQ6IEJVR1M6IDI4NDEwMDg6IFByb3RlY3QgYWdhaW5zdCBjcmFzaCBmb2xsb3dpbmcKKyAgIGZhaWxlZCBBZ2VudFggcmVzcG9uc2UKIAogMjAwOS0xMS0zMCAxNjo1NSAgZHRzMTIKIApAQCAtMzM3Nyw1MiArODg2Nyw4MiBAQAogCiAgICAqIGxvY2FsL21pYjJjLm9sZC1hcGkuY29uZjoKIAotICAgQ0hBTkdFUzogbWliMmM6IEJVR1M6IDI4ODg1Njk6IEZpeCBnZW5lcmF0aW9uIG9mIHRhYmxlIGNvbHVtbnMgYXJyYXkKKyAgIENIQU5HRVM6IG1pYjJjOiBCVUdTOiAyODg4NTY5OiBGaXggZ2VuZXJhdGlvbiBvZiB0YWJsZSBjb2x1bW5zCisgICBhcnJheQogCiAyMDA5LTExLTMwIDE2OjMwICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKIAotICAgQ0hBTkdFUzogYWdlbnQ6IEJVR1M6IDI4OTQwNTk6IEhhbmRsZSBlcnJvcnMgd2hlbiBjb3VudGluZyBpbnRlcmZhY2VzCisgICBDSEFOR0VTOiBhZ2VudDogQlVHUzogMjg5NDA1OTogSGFuZGxlIGVycm9ycyB3aGVuIGNvdW50aW5nCisgICBpbnRlcmZhY2VzCiAKIDIwMDktMTEtMzAgMTY6MDcgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmM6CiAKLSAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDI4OTcwMDA6IFN1cHByZXNzIDMyLWJpdCBjb3VudGVyIHRydW5jYXRpb24gd2FybmluZ3MuCisgICBDSEFOR0VTOiBhZ2VudDogQlVHOiAyODk3MDAwOiBTdXBwcmVzcyAzMi1iaXQgY291bnRlciB0cnVuY2F0aW9uCisgICB3YXJuaW5ncy4KKworMjAwOS0xMS0zMCAxNTozNCAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6CisKKyAgIENIQU5HRVM6IGFnZW50OiBQQVRDSDogMjkwMzA5MjogRml4IGJyb2tlbiBoYW5kbGluZyBvZiBicm9hZGNhc3QKKyAgIGVudHJpZXMuCiAKIDIwMDktMTEtMzAgMTU6MTkgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmM6CiAKLSAgIENIQU5HRVM6IGFnZW50OiBQQVRDSDogMjkwMTAyOTogRml4IGNvbXBpbGVyIHdhcm5pbmcgb24gQ2xvc2VIYW5kbGUoKQorICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIOiAyOTAxMDI5OiBGaXggY29tcGlsZXIgd2FybmluZyBvbgorICAgQ2xvc2VIYW5kbGUoKQogICAgRW5kaWFuIHByb2JsZW1zIGFscmVhZHkgYWRkcmVzc2VkIGJ5IHBhdGNoICMyODM1NTc2CiAKIDIwMDktMTEtMzAgMTU6MTMgIGR0czEyCiAKICAgICogcGVybC9hZ2VudC9hZ2VudC54czoKIAotICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDI4OTA5MzE6IEJldHRlciBoYW5kbGluZyBvZiBDb3VudGVyNjQgdmFsdWVzLgorICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDI4OTA5MzE6IEJldHRlciBoYW5kbGluZyBvZiBDb3VudGVyNjQKKyAgIHZhbHVlcy4KICAgIFBhdGNoIHByb3ZpZGVkIGJ5IE1heCBSb21hbm92LgogCiAyMDA5LTExLTMwIDE1OjA3ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jOgogCi0gICBDSEFOR0VTOiBhZ2VudDogUEFUQ0g6IDI4ODc4MTY6IFByb3RlY3QgYWdhaW5zdCBkaXZpc2lvbi1ieS16ZXJvIGNyYXNoCisgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0g6IDI4ODc4MTY6IFByb3RlY3QgYWdhaW5zdCBkaXZpc2lvbi1ieS16ZXJvCisgICBjcmFzaAorCisyMDA5LTExLTMwIDE1OjAzICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzoKKworICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIOiAyODgzMjIwOiBGaXggY29tcGlsYXRpb24gcHJvYmxlbXMgd2hlbgorICAgaWZYVGFibGUgaXMgbm90IGluY2x1ZGVkLgogCiAyMDA5LTExLTMwIDE0OjQ5ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6CiAKLSAgIENIQU5HRVM6IGFnZW50OiBQQVRDSDogMjg4MzE1NTogRml4IG1lbW9yeSBsZWFrIGluIHByb3h5IGhhbmRsaW5nLgorICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIOiAyODgzMTU1OiBGaXggbWVtb3J5IGxlYWsgaW4gcHJveHkKKyAgIGhhbmRsaW5nLgogICAgUGF0Y2ggc3VwcGxpZWQgYnkgR293dGhhbSBUaG9tbWFuZHJhLgogCiAyMDA5LTExLTMwIDE0OjEyICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgogCi0gICBDSEFOR0VTOiBhZ2VudDogUEFUQ0g6IDI4Nzc1MTg6IEZpeCBoYW5kbGluZyBvZiBzY29wZWQgQWdlbnRYIHZhcmlhYmxlcworICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIOiAyODc3NTE4OiBGaXggaGFuZGxpbmcgb2Ygc2NvcGVkIEFnZW50WAorICAgdmFyaWFibGVzCisKKzIwMDktMTEtMzAgMTQ6MDEgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0g6IDI4MzU1NzY6IEZpeCBlbmRpYW5uZXNzIGlzc3VlcyBpbgorICAgcGFzcy9wYXNzX3BlcnNpc3QKIAogMjAwOS0xMS0yNyAwODo1NCAganNhZnJhbmVrCiAKQEAgLTM0MzAsMTEgKzg5NTAsMjEgQEAKIAogICAgUmVtb3ZlIGV4ZWN1dGFibGUgYXR0cmlidXRlIGZyb20gc291cmNlIGZpbGVzLgogCisyMDA5LTExLTE5IDIyOjUyICBtYWdmcgorCisgICAqICBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDI5MDAwNzg6IEFkZCBzdXBwb3J0IGZvciBPSUQgdmFyaWFibGVzIHdpdGgKKyAgIHNpemUgaW4gZWxlbWVudHMgaW5zdGVhZCBvZiBieXRlcywgY29ycmVjdCBzeXNPYmplY3RJRCB0byB1c2UKKyAgIHRoaXMuCisKIDIwMDktMTEtMTMgMTI6NTkgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jOgogCi0gICBDSEFOR0VTOiBzbm1wZDogRml4ZWQgbG9nZ2luZyBvZiAndHJ1bmNhdGluZyBpbnRlZ2VyIHZhbHVlID4gMzIgYml0cycgaW4gSVAtTUlCIGFuZCBUQ1AtTUlCCisgICBDSEFOR0VTOiBzbm1wZDogRml4ZWQgbG9nZ2luZyBvZiAndHJ1bmNhdGluZyBpbnRlZ2VyIHZhbHVlID4gMzIKKyAgIGJpdHMnIGluIElQLU1JQiBhbmQgVENQLU1JQgogICAgVGhlIGNvdW50ZXJzLCB3aGljaCBncm93IGZhc3QgYXJlIG5vdyBjdXQgdG8gMzJiaXRzLgogCiAyMDA5LTExLTExIDA5OjAwICBkdHMxMgpAQCAtMzQ0NSw5MCArODk3NSwyMiBAQAogICAgUmV0dXJuIHN1Y2Nlc3MvZmFpbHVyZSB2YWx1ZXMgZnJvbSBjYWNoZSBsb2FkIHJvdXRpbmUuCiAgICBQcm9ibGVtIGlkZW50aWZpZWQgYnkgWHVhbi4KIAotMjAwOS0xMC0yOSAxNjowNSAgZHRzMTIKKzIwMDktMTAtMjcgMDY6NDQgIG1hZ2ZyCiAKLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAgIAotICAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sICAgCi0gICAgICBwZXJsL1NOTVAvU05NUC5wbSwgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLCAgIAotICAgICAgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sIHBlcmwvYWdlbnQvYWdlbnQucG0sICAgCi0gICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgICAKLSAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCBzZWRzY3JpcHQuaW4sICAgCi0gICAgICBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgorICAgKiAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy10by1vaWQubTJpLCAgIAorICAgICAgbG9jYWwvbWliMmMuYWNjZXNzX2Z1bmN0aW9ucy5jb25mLCBsb2NhbC9taWIyYy5jb250YWluZXIuY29uZiwgICAKKyAgICAgIGxvY2FsL21pYjJjLml0ZXJhdGUuY29uZiwgbG9jYWwvbWliMmMuaXRlcmF0ZV9hY2Nlc3MuY29uZiwgICAKKyAgICAgIGxvY2FsL21pYjJjLnJvdy5jb25mLCBsb2NhbC9taWIyYy5zY2FsYXIuY29uZiwgICAKKyAgICAgIGxvY2FsL21pYjJjLnRhYmxlX2RhdGEuY29uZjoKIAotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4zLnByZTEgKQotCi0yMDA5LTEwLTI5IDE0OjI0ICBkdHMxMgotCi0gICAqIENIQU5HRVMsIE5FV1M6Ci0KLSAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMDktMTAtMjkgMTE6NDYgIGR0czEyCi0KLSAgICogQ2hhbmdlTG9nOgotCi0gICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDA5LTEwLTI5IDEwOjMwICBkdHMxMgotCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDA5LTEwLTI5IDEwOjI4ICBkdHMxMgotCi0gICAqIGRveHlnZW4uY29uZjoKLQotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4zLnByZTEgKQotCi0yMDA5LTEwLTI5IDA5OjU1ICBkdHMxMgotCi0gICAqIE1ha2VmaWxlLnRvcDoKLQotICAgdmVyc2lvbiB1cGRhdGUKKyAgIENIQU5HRVM6IG1pYjJjOiBSZW1vdmUgdW5uZWNlc3NhcnkgY2FzdHMgdG8gdV9jaGFyKgogCiAyMDA5LTEwLTA5IDEyOjM4ICBqc2FmcmFuZWsKIAogICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6CiAKLSAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAyODcxNzQ3OiBwbHVnIG1lbW9yeSBsZWFrIGluIE9JRCBwcm9jZXNzaW5nLgorICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6Mjg3MTc0NzogcGx1ZyBtZW1vcnkgbGVhayBpbiBPSUQKKyAgIHByb2Nlc3NpbmcuCiAgICBUaGUgbWVtb3J5IGxlYWtlZCB3aGVuIHNtYWxsIE9JRCwgd2hpY2ggY291bGQgZml0IHByZS1hbGxvY2F0ZWQKICAgIHZwLT5uYW1lX2xvYywgd2FzIHBsYWNlZCBpbiBkaWZmZXJlbnQgKGFsbG9jYXRlZCkgb25lLgogCkBAIC0zNTQ2LDYgKzkwMDgsMTggQEAKICAgIENIQU5HRVM6IHNubXBsaWI6IENoYW5nZSB0aGUgcGFyc2luZyBvZiByYW5nZXMgdG8gYWNjZXB0IGFsbAogICAgdmFsaWQgdmFsdWVzLgogCisyMDA5LTEwLTA3IDIyOjI0ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogbWlzYzogUEFUQ0g6IDI4MzYxMTI6IFVzZSB0aGUgcmlnaHQgbW9kaWZpZXIgd2hlbgorICAgcHJpbnRpbmcgc2l6ZV90IGFuZCBzc2l6ZV90IHZhcmlhYmxlcy4KKwogMjAwOS0xMC0wNyAxMjo1MCAganNhZnJhbmVrCiAKICAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CkBAIC0zNTU2LDEyICs5MDMwLDIwIEBACiAKIDIwMDktMTAtMDUgMTk6MTkgIG1hZ2ZyCiAKLSAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9maWxlX3V0aWxzLmgsICAgCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGlyX3V0aWxzLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmlsZV91dGlscy5oLCAgIAogICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RleHRfdXRpbHMuaDoKIAogICAgQ0hBTkdFUzogc25tcGxpYjogQ29ycmVjdCB0aGUgc3BlbGxpbmcgb2YgX19jcGx1c3BsdXMgd2hlbgogICAgY2hlY2tpbmcgaWYgdGhlIGZpbGUgc2hvdWxkIGJlIHdyYXBwZWQgaW4gZXh0ZXJuICJDIi4KIAorMjAwOS0xMC0wNSAwNjoxMyAgbWFnZnIKKworICAgKiBhcHBzL3NubXB3YWxrLmM6CisKKyAgIENIQU5HRVM6IHNubXB3YWxrOiBIYW5kbGUgdGhlIGNhc2Ugd2hlbiB0aGUgZW5kIG9pZCBpcyBsb25nZXIKKyAgIHRoYW4gdGhlIGN1cnJlbnQgb2lkIGNvcnJlY3RseQorCiAyMDA5LTA5LTMwIDEwOjEyICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6CkBAIC0zNTcwLDE4ICs5MDUyLDM4NiBAQAogICAgaW5mb3JtYXRpb24gY3Jhc2hpbmcgdGhlIGFnZW50LgogICAgUHJvYmxlbSByZXBvcnRlZCBieSBJbnlhdmVuIFNha2FyYWkuCiAKKzIwMDktMDktMjQgMDM6NDkgIGhhcmRha2VyCisKKyAgICogLjoKKworICAgNS41IGJyYW5jaGVkCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS40IC0+IFY1LjUKKworMjAwOS0wOS0yMyAyMzo0MiAgaGFyZGFrZXIKKworICAgKiAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIG1hbi9uZXRzbm1wX3RhYmxlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKworICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKwogMjAwOS0wOS0yMyAyMzo0MCAgaGFyZGFrZXIKIAogICAgKiBGQVE6CiAKKyAgIHJlbW92ZSBTVk4gYnJhbmNoIHdvcmRpbmcKKworMjAwOS0wOS0yMyAyMzozNiAgaGFyZGFrZXIKKworICAgKiBGQVE6CisKICAgIHByb3BlciBwcm9qZWN0IGNhcGl0YWxpemF0aW9uCiAKKzIwMDktMDktMjMgMjM6MzUgIGhhcmRha2VyCisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzoKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisKKzIwMDktMDktMjMgMjM6MzAgIGhhcmRha2VyCisKKyAgICogbWFuL3BkdV9hcGkuMywgbWFuL3Nlc3Npb25fYXBpLjMsIG1hbi92YXJiaW5kX2FwaS4zOgorCisgICB2ZXJzaW9uIHVwZGF0ZQorCiAyMDA5LTA5LTIyIDIxOjUxICB0YW5kZXJzCiAKICAgICogUkVBRE1FLnNvbGFyaXM6CiAKICAgIGZpeCB0eXBvcwogCisyMDA5LTA5LTE0IDIyOjM5ICBoYXJkYWtlcgorCisgICAqICBtYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMywgbWFuL25ldHNubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMywgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgbWFuL25ldHNubXBfcm93X21lcmdlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXIuMywgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgbWFuL25ldHNubXBfdGFibGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdG9vbHMuaC4zLCBtYW4vbmV0c25tcF91dGlsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorCisgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorCisyMDA5LTA5LTE0IDIyOjM2ICBoYXJkYWtlcgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWMsIG1hbi9wZHVfYXBpLjMsIG1hbi9zZXNzaW9uX2FwaS4zLCAgIAorICAgICAgbWFuL3ZhcmJpbmRfYXBpLjM6CisKKyAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCisyMDA5LTA5LTE0IDIyOjE4ICBoYXJkYWtlcgorCisgICAqIFJFQURNRS5haXgsIGFwcHMvc25tcG5ldHN0YXQvaWYuYywgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYWl4Lmg6CisKKyAgIFBhdGNoIGZyb20gbWFnZnIgZm9yIDUuNSBzcGVjaWZpYyBhaXggYnVpbGQgZml4ZXMKKworMjAwOS0wOS0wMiAwNzoxMiAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9iZ3AuYywgYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX29zcGYuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmMsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaDoKKworICAgQ0hBTkdFUzogc25tcGxpYjogcmVuYW1lIE1JQiBtYWNybyB0byBORVRTTk1QX01JQjJfT0lELCBNSUIgaXMKKyAgIHRvbyBnZW5lcmljIGFuZCBtYXkgY29uZmxpY3Qgd2l0aCBhcHBsaWNhdGlvbnMuCisgICAKKyAgIFRoZSBvbGQgTUlCIG1hY3JvIGlzIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHVubGVzcworICAgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMgaXMgZGVmaW5lZC4KKworMjAwOS0wOC0zMSAxOTozOCAgbmJhCisKKyAgICogbWlicy9yZmNsaXN0OgorCisgICBBZGRpdGlvbmFsIFJGQyBtaWJzCisKKzIwMDktMDgtMzEgMTk6MzcgIG5iYQorCisgICAqIG1pYnMvSUFOQWlmVHlwZS1NSUIudHh0OgorCisgICBJQU5BIGZpeGVkIGEgYnVnCisKKzIwMDktMDgtMjkgMDc6MjkgIG1hZ2ZyCisKKyAgICogbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmY6CisKKyAgIG1pYjJjOiBSZW1vdmUgdW5uZWVkZWQgY2FzdHMuCisKKzIwMDktMDgtMjkgMDc6MjggIG1hZ2ZyCisKKyAgICogbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmY6CisKKyAgIG1pYjJjOiByZXQgaXMgb25seSB1c2VkIGluIHNldHRhYmxlIHRhYmxlcyBzbyBvbmx5IGRlY2xhcmUgaXQKKyAgIHRoZW4uCisKKzIwMDktMDgtMjkgMDc6MjQgIG1hZ2ZyCisKKyAgICogbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmY6CisKKyAgIG1pYjJjOiBSZXBsYWNlIHRoZSBfb2lkX2xlbiB2YXJpYWJsZSB3aXRoIGFuIGV4cGxpY2l0IGNhbGwgb2YKKyAgIE9JRF9MRU5HVEguCisKKzIwMDktMDgtMjkgMDc6MjEgIG1hZ2ZyCisKKyAgICogbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmY6CisKKyAgIG1pYjJjOiBNYWtlIGV2ZXJ5IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHN0YXRpYyBzdGF0aWMuIFJlbW92ZSB0aGUKKyAgIGRlY2xhcmF0aW9ucyBvZiB0aGUgc3RhdGljIGZ1bmN0aW9ucyBhbmQgdGhlIHByaXZhdGUgZGVmaW5lcyBmcm9tCisgICB0aGUgaGVhZGVyLgorCisyMDA5LTA4LTI5IDA3OjE5ICBtYWdmcgorCisgICAqIGxvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mOgorCisgICBtaWIyYzogUmVvcmRlciB0aGUgZnVuY3Rpb25zIGluIG9yZGVyIHRvIGF2b2lkIHRoZSBuZWVkIGZvcgorICAgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKzIwMDktMDgtMjkgMDc6MTYgIG1hZ2ZyCisKKyAgICogbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmY6CisKKyAgIG1pYjJjOiBuZXRzbm1wX3RhYmxlX3JlZ2lzdGVyIHNob3VsZCBiZSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlCisgICBhbmQgdGFrZSBvbmx5IHR3byBhcmdtZW50cy4KKworMjAwOS0wOC0yOSAwNzoxNCAgbWFnZnIKKworICAgKiBsb2NhbC9taWIyYy5yYXctdGFibGUuY29uZjoKKworICAgbWliMmM6IGJ1aWxkX29pZCBleHBlY3RzIGEgcG9pbnRlciB0byBhbGxvY2F0ZWQgb2lkLiBDaGFuZ2UgdG8KKyAgIHVzZSBidWlsZF9vaWRfbm9hbGxvYyBhbmQgcmVtb3ZlIG9uZSBjb3B5IG9mIHRoZSBpbmRpY2VzLgorCisyMDA5LTA4LTI5IDA3OjEwICBtYWdmcgorCisgICAqIGxvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mOgorCisgICBtaWIyYzogVGhlcmUgaXMgbm8gaW5kZXhfb2lkX2xlbiBtZW1iZXIgaW4gc3RydWN0IGVudHJ5LiBVc2UgdGhlCisgICBpbnRlbmRlZCBsb2NhbCB2YXJpYWJsZSBpbmRleF9vaWRfbGVuLgorCisyMDA5LTA4LTI5IDA3OjA2ICBtYWdmcgorCisgICAqIGxvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mOgorCisgICBtaWIyYzogQ29ycmVjdCB0aGUgcmV0dXJuIHR5cGUgb2YgJHtpfV9nZXQqZW50cnkgdG8gbWF0Y2ggdGhlCisgICByZXR1cm5lZCB0eXBlLgorCisyMDA5LTA4LTI2IDIyOjM3ICBoYXJkYWtlcgorCisgICAqIENoYW5nZUxvZzoKKworICAgd2h3b29wczsgYmxldyB0aGUgY2hhbmdlbG9nIGZvciByYzIKKworMjAwOS0wOC0yNiAxNzozOCAgaGFyZGFrZXIKKworICAgKiAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIG1hbi9uZXRzbm1wX3RhYmxlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKworICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKworMjAwOS0wOC0yNiAxNzoyOSAgaGFyZGFrZXIKKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOgorCisgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKworMjAwOS0wOC0yNiAxNzozOCAgaGFyZGFrZXIKKworICAgKiAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIG1hbi9uZXRzbm1wX3RhYmxlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKworICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKworMjAwOS0wOC0yNiAxNzoyOSAgaGFyZGFrZXIKKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOgorCisgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKworMjAwOS0wOC0yNiAxNzoyOCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKKworICAgdXBkYXRlZCBiYXNlZCBvbiBuZXcgU0YgdXBsb2FkIG1ldGhvZHM7IG5vIGxvbmdlciBhcyBhdXRvbWF0YWJsZQorCisyMDA5LTA4LTI2IDE3OjI2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCBmcm9tIEphbiB0byBlbmRsZXNzIGxvb3AgaW4gZGVmYXVsdCByb3V0ZXMKKyAgIG9uIGxpbnV4CisKKzIwMDktMDgtMjYgMTc6MjUgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmg6CisKKyAgIGFwcGx5IHBhdGNoIGZyb20gSmFuIHRvIGZpeCBDKysgd3JhcHBlcgorCisyMDA5LTA4LTI2IDE0OjUzICBkdHMxMgorCisgICAqIGxvY2FsL01ha2VmaWxlLmluLCBsb2NhbC9taWIyYy5yYXctdGFibGUuY29uZjoKKworICAgSW5pdGlhbCBzdGFiIGF0IGEgbWluaW1hbC1oZWxwZXIgKHJhdykgdGFibGUgdGVtcGxhdGUsCisgICBsZWF2aW5nIG1vc3Qgb2YgdGhlIHdvcmsgdG8gdGhlIHVzZXItcHJvdmlkZWQgTUlCIGhhbmRsZXIuCisKIDIwMDktMDgtMjYgMTQ6NTAgIGR0czEyCiAKICAgICogc25tcGxpYi9zbm1wX2FwaS5jOgpAQCAtMzU5MSw2ICs5NDQxLDE3MyBAQAogICAgZHVlIHRvIDE1LS8zMS1iaXQgbWFza2luZyB3aGVuIHNlbGVjdGluZyByZXF1ZXN0IElEcy4gSWRlbnRpZmllZAogICAgYnkga3JvbWVza3kuCiAKKzIwMDktMDgtMjAgMTM6MzAgIGpzYWZyYW5laworCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGx1ZyBsZWFrcyBpbiBpcElmU3RhdHNUYWJsZSwKKyAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlLCBpcFN5c3RlbVN0YXRzVGFibGUgYW5kCisgICBpcERlZmF1bHRSb3V0ZXJUYWJsZS4KKyAgIAorICAgSXQgc2VlbXMgdG8gbWUgdGhlIHRhYmxlcyB3ZXJlIHdyb25nbHkgZ2VuZXJhdGVkIHdpdGgKKyAgIG0yY19kYXRhX2FsbG9jYXRlIG9yCisgICBzb21lb25lIGZvcmdvdCB0byByZWxlYXNlIHRoZSB1c2VyIHByb3ZpZGVkIGRhdGEuCisKKzIwMDktMDgtMTIgMTU6MDAgIHRhbmRlcnMKKworICAgKiBORVdTOgorCisgICBmaXggbGlidG9vbCB2ZXJzaW9uIGluIE5FV1MKKworMjAwOS0wOC0xMSAwMDo0MiAgaGFyZGFrZXIKKworICAgKiBDSEFOR0VTLCBDaGFuZ2VMb2c6CisKKyAgIHdob29wczsgYWRkIHJlYWwgY2hhbmdlbG9nIGVudGVyaWVzIGZvciAucmMxCisKKzIwMDktMDgtMTAgMjM6MTAgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGZpeCB0eXBvIGluIHN2bjJjbCBsaW5lCisKKzIwMDktMDgtMTAgMjM6MDUgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisKKyAgIG1ha2UgZGVwZW5kCisKKzIwMDktMDgtMTAgMjE6MzIgIGhhcmRha2VyCisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisKKyAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisKKzIwMDktMDgtMTAgMjM6MTAgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGZpeCB0eXBvIGluIHN2bjJjbCBsaW5lCisKKzIwMDktMDgtMTAgMjM6MDUgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisKKyAgIG1ha2UgZGVwZW5kCisKKzIwMDktMDgtMTAgMjE6MzIgIGhhcmRha2VyCisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisKKyAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisKKzIwMDktMDgtMTAgMjE6MjEgIGhhcmRha2VyCisKKyAgICogIGRpc3QvbWFrZXJlbGVhc2UueG1sLCBtYW4vcGR1X2FwaS4zLCBtYW4vc2Vzc2lvbl9hcGkuMywgICAKKyAgICAgIG1hbi92YXJiaW5kX2FwaS4zOgorCisgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKworMjAwOS0wOC0wNyAxMDozMiAgZHRzMTIKKworICAgKiBDSEFOR0VTLCBORVdTOgorCisgICBDb3JyZWN0LCBjb25zb2xpZGF0ZSwgY2xhcmlmeSBhbmQgY2xlYW51cCB0aGUgY2F0YWxvZyBvZiBjdXJyZW50CisgICBjaGFuZ2VzLgorCisyMDA5LTA4LTA2IDA3OjU3ICBkdHMxMgorCisgICAqIEZBUToKKworICAgRXhwYW5kIG9uIGV4ZWMgdnMgZXh0ZW5kLgorCiAyMDA5LTA4LTA1IDIwOjA3ICBkdHMxMgogCiAgICAqICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jLCAgIApAQCAtMzYwOCw2ICs5NjI1LDIyIEBACiAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjgyMjMzNzogRml4IG1lbW9yeSBsZWFrIGluCiAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZQogCisyMDA5LTA4LTA1IDE1OjE2ICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmM6CisKKyAgIEZpeCBtZW1vcnkgbGVhayBpbiBOZXRUb01lZGlhVGFibGUuCisgICBXaGVuIGRlbGV0aW5nIHJvdyBjb250ZXh0LCBkZWxldGUgYWxzbyBhc3NvY2lhdGVkIGRhdGEuCisKKzIwMDktMDgtMDUgMTU6MTUgIGpzYWZyYW5laworCisgICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgICBGaXggbWVtb3J5IGxlYWsgaW4gTmV0VG9NZWRpYVRhYmxlLgorICAgVGhlIGNvbnRhaW5lciB1c2VkIHRvIHRyYWNrIGVudHJpZXMgdG8gZGVsZXRlIGZyb20gY2FjaGUgc2hvdWxkCisgICBiZSByZWxlYXNlZCB3aGVuIGl0J3Mgbm90IG5lZWRlZC4KKwogMjAwOS0wOC0wNSAxNToxMiAganNhZnJhbmVrCiAKICAgICogCkBAIC0zNjQyLDMyICs5Njc1LDE5MiBAQAogICAgYXMgd2VsbCBhcyBhIGxhcmdlciBncm91cC4KICAgIEFsc28gYWRkcmVzc2VzIGJ1ZyAyMTUwMjg1CiAKKzIwMDktMDgtMDQgMjE6MTYgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zdHJ0b3VsbC5jOgorCisgICBzbm1wbGliOiBmcm9tICJCYXJ0IHZhbiBBc3NjaGUgJiBNYWdudXMgRnJvbXJlaWRlIjogTW9yZSB1cGRhdGVzCisgICB0byBzdHJ0b3VsbC5jCisKIDIwMDktMDgtMDQgMTA6NTcgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19jb21tb24uYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gIk1hcmN1cyBS/GNrZXJ0IjogZml4IHBvc3NpYmxlIGNyYXNoIHdoZW4KKyAgIENIQU5HRVM6IHNubXBkOiBmcm9tICJNYXJjdXMgUsO8Y2tlcnQiOiBmaXggcG9zc2libGUgY3Jhc2ggd2hlbgogICAgNjQtYml0IGNvdW50ZXJzIGluIGlwU3lzdGVtU3RhdHNUYWJsZSBnZXQgYmlnZ2VyIHRoYW4gMl4zMgogCi0yMDA5LTA3LTI3IDEyOjEzICBoYXJkYWtlcgorMjAwOS0wOC0wMyAxOToyNyAgbWFnZnIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIHNubXBsaWIvc3RydG91bGwuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDI4Mjc3MjI6IGZyb20gIkJhcnQgVmFuIEFzc2NoZSI6IEltcHJvdmUKKyAgIHN0cnRvdWxsIHRvIGJlIGxlc3MgTVNWQy1zcGVjaWZpYworCisyMDA5LTA4LTAzIDE4OjM4ICBtYWdmcgorCisgICAqIG1hbi9NYWtlZmlsZS5pbjoKKworICAgcmVtb3ZlIGFuIG9ic29sZXRlIG1hbnVhbCBwYWdlIGZyb20gdGhlIHNldCBvZiBmaWxlcyB0aGF0IHNob3VsZAorICAgYmUgaW5zdGFsbGVkCisKKzIwMDktMDctMjcgMTI6NDEgIGhhcmRha2VyCisKKyAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsICAgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgorCisgICBtYWtlIGRlcGVuZAorCisyMDA5LTA3LTI3IDEyOjExICBoYXJkYWtlcgogCiAgICAqIG1hbi9uZXRzbm1wX0NvbnRhaW5lcl9pdGVyYXRvci4zOgogCi0gICByZW1vdmUgb3V0ZGF0ZSBjYXNlLWNvbmZsaWN0aW5nIG1hbnVhbCBwYWdlCisgICByZW1vdmUgYW4gb2Jzb2xldGUgbWFudWFsIHBhZ2UKIAotMjAwOS0wNy0yNyAxMjowNiAgaGFyZGFrZXIKKzIwMDktMDctMjcgMTI6MDMgIGhhcmRha2VyCiAKICAgICogcGVybC9TTk1QL3QvYnVsa3dhbGsudDoKIAogICAgQ0hBTkdFUzogZnJlZWJzZDogcGF0Y2ggZnJvbSBDZXphcnkgTW9yZ2EgdG8gZml4IGEgbWFrZSB0ZXN0IG9uCiAgICBmcmVlYnNkCiAKKzIwMDktMDctMjcgMTI6MDIgIGhhcmRha2VyCisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisKKyAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisKKzIwMDktMDctMjcgMTE6NTIgIGhhcmRha2VyCisKKyAgICogIEZBUSwgTkVXUywgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzoKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisKKzIwMDktMDctMjcgMDg6MzkgIGhhcmRha2VyCisKKyAgICogdGVzdGluZy90ZXN0cy9UMzUwdW5peDoKKworICAgcmV2ZXJ0IGFjY2lkZW50aWFsbHkgYXBwbGllZCBwYXRjaAorCisyMDA5LTA3LTI3IDA4OjM3ICBoYXJkYWtlcgorCisgICAqICB0ZXN0aW5nL3Rlc3RzL1QzNTB1bml4LCB0ZXN0aW5nL3Rlc3RzL1QzNjBkdGxzdWRwLCAgIAorICAgICAgdGVzdGluZy90ZXN0cy90ZXN0LWxvY2FsaG9zdC5jZXJ0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy90ZXN0LWxvY2FsaG9zdC5wcml2LCB0ZXN0aW5nL3Rlc3RzL3Rlc3QtdXNlci5jZXJ0LCAgCisgICAgICAgdGVzdGluZy90ZXN0cy90ZXN0LXVzZXIucHJpdjoKKworICAgYWRkZWQgYSB0ZXN0IGNhc2UgZm9yIHVkcC9kdGxzCisKKzIwMDktMDctMjcgMDg6MzYgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBkb24ndCByZXF1aXJlIGEgc2Vzc2lvbiB0byBjYXJyeSBhIHNlY05hbWUKKworMjAwOS0wNy0yNiAyMTozNCAgYWxleF9iCisKKyAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWY6CisKKyAgIFdpbjMyOiBNU1ZDIDYgY29tcGlsZSBmaXhlcyBmb3IgV29ya3NwYWNlIGJ1aWxkLgorCisyMDA5LTA3LTI2IDE4OjIwICBhbGV4X2IKKworICAgKiAgUkVBRE1FLndpbjMyLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBzbm1wbGliL3N0cnRvdWxsLmMsICAgCisgICAgICB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5iYXQsIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsLCAgIAorICAgICAgd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpLCB3aW4zMi9saWJzbm1wL01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvbGlic25tcC9saWJzbm1wLmRzcCwgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbiwgICAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIC1BZGRlZCBzdHJ0b3VsbCBmdW5jdGlvbiBhbmQgY29uZmlndXJlIGNoZWNrIGZvciBzeXN0ZW1zIHdpdGhvdXQKKyAgIGl0IHN1Y2ggYXMgV2luMzIgTVNWQyA2CisgICAtV2luMzI6IE1TVkMgNiBjb21waWxlIGZpeGVzIC0gcmVxdWlyZXMgbmV3IHN0cnRvdWxsLmMgZmlsZQorICAgLVdpbjMyOiBOZXcgYnVpbGQtYmluYXJ5IHNjcmlwdCB0byBzaW1wbGlmeSBidWlsZGluZyB0aGUgV2luZG93cworICAgYmluYXJ5IHBhY2thZ2UuCisKKzIwMDktMDctMjUgMDU6MzEgIG1hZ2ZyCisKKyAgICogdGVzdGluZy90ZXN0cy9UMTYwc25tcG5ldHN0YXQ6CisKKyAgIE1ha2Ugc3VyZSBhIG1lc3NhZ2UgaXMgd3JpdHRlbiBpZiB0aGUgcmVsZXZhbnQgdGFibGUgaXMgbWlzc2luZy4KKwogMjAwOS0wNy0yMyAyMToyOSAgYWxleF9iCiAKICAgICogUkVBRE1FOgogCiAgICBVcGRhdGUgZW1haWwgYWRkcmVzcyBpbiBSRUFETUUuCiAKKzIwMDktMDctMjMgMDE6MDcgIGFsZXhfYgorCisgICAqICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy5kc3AsICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3A6CisKKyAgIFdpbjMyIE1TVkMgMjAwOCsgZml4ZXMuCisKKzIwMDktMDctMjMgMDA6NTUgIGFsZXhfYgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgsICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzc2RrL25ldHNubXBtaWJzc2RrLmRzcDoKKworICAgV2luMzIgTVNWQyAyMDA1KyBidWlsZCBmaXhlcy4gVGhhbmtzIHRvIEJhcnQgVmFuIEFzc2NoZS4KKworMjAwOS0wNy0yMSAxMjoyMiAgZHRzMTIKKworICAgKiAgbG9jYWwvbWliMmMuY29udGFpbmVyLmNvbmYsIGxvY2FsL21pYjJjLml0ZXJhdGUuY29uZiwgICAKKyAgICAgIGxvY2FsL21pYjJjLml0ZXJhdGVfYWNjZXNzLmNvbmYsIGxvY2FsL21pYjJjLnJvdy5jb25mLCAgIAorICAgICAgbG9jYWwvbWliMmMudGFibGVfZGF0YS5jb25mOgorCisgICBBZGQgc2ltcGxlIGRlYnVnIG91dHB1dCB0byBtaWIyYyB0ZW1wbGF0ZXMuCisKIDIwMDktMDctMjEgMTI6MTMgIGR0czEyCiAKICAgICogbG9jYWwvbWliMmMudGFibGVfZGF0YS5jb25mOgpAQCAtMzY4NiwxMiArOTg3OSw1MiBAQAogCiAgICBVcGRhdGVzIHRvIENPRElORyBzZWN0aW9uLgogCisyMDA5LTA3LTIwIDExOjA5ICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliLmg6CisKKyAgIEFkZCBtaXNzaW5nIGhlYWRlciBmaWxlIGZyb20gcGF0Y2ggIzIwNTMyNzMuCisKIDIwMDktMDctMTkgMTU6MDkgIGR0czEyCiAKICAgICogRkFROgogCiAgICBVcGRhdGVzIHRvIENPTVBJTElORyBzZWN0aW9uLgogCisyMDA5LTA3LTE2IDEyOjM4ICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYzoKKworICAgQWRkIElQdjYgb2N0ZXQgY291bnRlcnMuCisgICBOZXcgTGludXgga2VybmVscyAoZS5nLiAyLjYuMzEtcmMyLCBtYXliZSBzb21lIGVhcmxpZXIpIHByb3ZpZGUKKyAgIGNvdW50ZXJzIGZvcgorICAgaW5jb21pbmcvb3V0Z29pbmcgSVB2NiB0cmFmZmljIGZvciBpcFN5c3RlbVN0YXRzVGFibGUgYW5kCisgICBpcElmU3RhdHNUYWJsZS4KKworMjAwOS0wNy0xNSAyMjo0NiAgdGFuZGVycworCisgICAqIHRlc3RpbmcvdGVzdHMvVDM1MHVuaXg6CisKKyAgIHB1dCB0ZW1wb3JhcnkgZGF0YSB0byB3aGVyZSB0aGV5IGJlbG9uZworCisyMDA5LTA3LTExIDIxOjUwICB0YW5kZXJzCisKKyAgICogY29uZmlndXJlOgorCisgICByZWdlbmVyYXRlIGNvbmZpZ3VyZQorCisyMDA5LTA3LTExIDIxOjA0ICB0YW5kZXJzCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnM6CisKKyAgIGJ1aWxkIGZpeCAoZS5nLiBmb3IgRnJlZUJTRCk6IGFkanVzdCBrdm0gY29uZmlndXJlIHRlc3RzCisKKzIwMDktMDctMTAgMTI6MzUgIGpzYWZyYW5laworCisgICAqIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKKworICAgQ2hlY2sgSVB2NiBwb3J0IHJhbmdlcyBpbiB0aGUgc2FtZSB3YXkgYXMgSVB2NCBwb3J0cyBhcmUgY2hlY2tlZC4KKwogMjAwOS0wNy0xMCAwNzo0NiAganNhZnJhbmVrCiAKICAgICogCkBAIC0zNzAyLDYgKzk5MzUsNDMgQEAKICAgIEFsc28gZml4IHRoZSBkZWZhdWx0IHR5cGUgZm9eQ0FTTl9JUEFERFJFU1MgaW4gbWliMmMsIHNvIHRoZQogICAgaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYyBjYW4gYmUgc2FmZWx5IHJlZ2VuZXJhdGVkLgogCisyMDA5LTA3LTA5IDIzOjQyICBoYXJkYWtlcgorCisgICAqICB0ZXN0aW5nL3Rlc3RzL1QzMDB1ZHAsIHRlc3RpbmcvdGVzdHMvVDMxMHRjcCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDMyMHVkcHY2LCB0ZXN0aW5nL3Rlc3RzL1QzMzB0Y3B2NiwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDM1MHVuaXg6CisKKyAgIGNsZWFudXAgb2YgdGVzdGluZyBjYXNlcyB0byByZW1vdmUgZG91YmxlIGluY2x1ZGUgYW5kIGRvdWJsZQorICAgZXhwb3J0cworCisyMDA5LTA3LTA5IDIzOjA3ICB0YW5kZXJzCisKKyAgICogdGVzdGluZy90ZXN0cy9UMzAwdWRwOgorCisgICBiZSBjb25zaXN0ZW50IHdpdGggdGhlIFRDUC9JUHY0IHRlc3QKKworMjAwOS0wNy0wOSAyMjoxOCAgaGFyZGFrZXIKKworICAgKiAgdGVzdGluZy90ZXN0cy9TdHJhbnNwb3J0LCB0ZXN0aW5nL3Rlc3RzL1QzMDB1ZHAsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QzMTB0Y3AsIHRlc3RpbmcvdGVzdHMvVDMyMHVkcHY2LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMzMwdGNwdjYsIHRlc3RpbmcvdGVzdHMvVDM1MHVuaXgsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QzOTlhbGlhczoKKworICAgbmV3IHRlc3RzIGZvciB0ZXN0aW5nIGRlZmluZWQgdHJhbnNwb3J0cworCisyMDA5LTA3LTA5IDIyOjE3ICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvVEVTVENPTkYuc2gsIHRlc3RpbmcvZXZhbF90b29scy5zaDoKKworICAgYSBDT05GSUdBUFAgbWFjcm8gZm9yIGFkZGluZyBzdHVmZiB0byBzbm1wLmNvbmYKKworMjAwOS0wNy0wOCAxNToxMiAganNhZnJhbmVrCisKKyAgICogc25tcGxpYi9zbm1wVURQRG9tYWluLmM6CisKKyAgIEZpeCBnZXRob3N0YnlhZGRyIHBhcmFtZXRlciwgbmV0c25tcF91ZHBfZm10YWRkciBuZXZlciByZXR1cm5lZCBhCisgICBob3N0bmFtZS4KKwogMjAwOS0wNy0wNyAxNTo0NiAganNhZnJhbmVrCiAKICAgICogIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmMsICAgCkBAIC0zNzE5LDIzICs5OTg5LDg1IEBACiAgICBwcm9jZXNzaW5nIC0gdV9sb25nIGNhbiBtYWtlIHByb2JsZW1zIG9uIGJpbiBlbmRpYW4gNjQgYml0CiAgICBzeXN0ZW1zCiAKLTIwMDktMDYtMTYgMTU6MTkgIHJzdG9yeQorMjAwOS0wNi0yOSAxMzo1MiAgaGFyZGFrZXIKKworICAgKiBDSEFOR0VTOgorCisgICByZW1vdmUgZW50cnkgZm9yIGEgcGF0Y2ggdGhhdCBnb3QgcmV2ZXJ0ZWQKKworMjAwOS0wNi0yNSAxNToyNCAgZHRzMTIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgsIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCwgICAKKyAgICAgIHNubXBsaWIvTWFrZWZpbGUuaW46CisKKyAgIE1vdmUgbm9uLWNvcmUgZGF0YSB0eXBlcyBpbnRvIGEgc2VwYXJhdGUgKGxpYnJhcnkgaW50ZXJuYWxzKQorICAgaGVhZGVyIGZpbGUuCisgICBNb3ZlIHRoZSBsYXJnZV9mZF9zZXQgZGF0YSBzdHJ1Y3R1cmUgaW50byB0aGlzIGhlYWRlciBmaWxlLgorCisyMDA5LTA2LTE4IDIyOjI5ICB0YW5kZXJzCisKKyAgICogYWdlbnQvc25tcF9wZXJsLmM6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBhbGxvdyBidWlsZGluZyB3aXRoIFBlcmwgdmVyc2lvbnMgdGhhdCBsYWNrCisgICBQRVJMX0VYSVRfREVTVFJVQ1RfRU5ECisKKzIwMDktMDYtMTggMjI6MTMgIHRhbmRlcnMKKworICAgKiBhcHBzL3NubXBuZXRzdGF0L2lmLmM6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBidWlsZCBmaXggZm9yIFRydTY0IFVuaXggYW5kIElSSVg6IG1vdmUgX1hPUEVOKgorICAgZGVmaW5pdGlvbnMgdG8gd2hlcmUgdGhleSBhcmUgaW4gNS40LnggYW5kIGVhcmxpZXIKKworMjAwOS0wNi0xOCAwNjowMiAgbWFnZnIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ2xlYW4gdXAgLS13aXRoLW5sIGNvbmZpZ3VyYXRpb24KKyAgICogIE1vdmUgdGhlIF9BUkdfV0lUSCB0byBjb25maWdfcHJvamVjdF93aXRoX2VuYWJsZSAgMjAwOS0wNi0xNiAxNToxNworICAgICAgIHJzdG9yeQorCiAKICAgICogc25tcGxpYi9jb250YWluZXIuYzoKIAogICAgY2hlY2sgZm9yIG51bGwgcG9pbnRlciBiZWZvcmUgZGVyZWYKIAorMjAwOS0wNi0xNSAyMzo1MiAgcnN0b3J5CisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBhZGQgY29tbWVudCBleHBsYWluaW5nIG5vdCBxdWl0ZSBvYnZpb3VzIGxhY2sgb2YgbWVtbW92ZQorCisyMDA5LTA2LTE1IDE5OjMyICBtYWdmcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaDoKKworICAgUmVtb3ZlICNpZiAwIGNvbW1lbnRlZCBjb2RlCisKIDIwMDktMDYtMTUgMTU6MjUgIGR0czEyCiAKICAgICogRkFROgogCiAgICBVcGRhdGVzIHRvIEFHRU5UIHNlY3Rpb24uCiAKLTIwMDktMDYtMTQgMjI6MDEgIHRhbmRlcnMKKzIwMDktMDYtMTMgMDE6MTIgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgorICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgY29uZmlndXJlLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCi0gICBwb3J0YWJpbGl0eSBmaXggKHN5bmMgd2l0aCA1LjUpCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI1NjQ1NTI6IGZyb20gYWhtYWtlOiBwcm92aWRlIGxpYm5ldGxpbmsKKyAgIHN1cHBvcnQgZm9yIGxvYWRpbmcgdGhlIHRjcCB0YWJsZQorCisyMDA5LTA2LTEyIDE5OjAyICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNDAwMTAxOiByZW1vdmUgZGVsZXRlZCBpbnRlcmZhY2VzIGZyb20KKyAgIGlmVGFibGUKIAogMjAwOS0wNi0xMSAyMzowOSAgaGFyZGFrZXIKIApAQCAtMzc0NCwxOSArMTAwNzYsMzYgQEAKICAgICAgIHdpbjMyL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgsICAgCiAgICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3A6CiAKLSAgIENIQU5HRVM6IHdpbjMyOiBQQVRDSDogMjY5Mzc0NjogZnJvbSBidmFzc2NoZTogaW1wcm92ZWQgc29ja2V0IHN0YXJ0dXAgc3VwcG9ydAorICAgQ0hBTkdFUzogd2luMzI6IFBBVENIOiAyNjkzNzQ2OiBmcm9tIGJ2YXNzY2hlOiBpbXByb3ZlZCBzb2NrZXQKKyAgIHN0YXJ0dXAgc3VwcG9ydAogCiAyMDA5LTA2LTExIDIyOjU3ICBoYXJkYWtlcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyMDEyNDAyOiBkb24ndCBmYWlsIG9uIGZhaWx1cmUgdG8gbG9vayB1cCBpbnRlcmZhY2UgZXJyb3IgY291bnRlcnMuCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDIwMTI0MDI6IGRvbid0IGZhaWwgb24gZmFpbHVyZSB0byBsb29rIHVwCisgICBpbnRlcmZhY2UgZXJyb3IgY291bnRlcnMuCisKKzIwMDktMDYtMTEgMjI6MDMgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgorCisgICByZXZlcnQgcHJldmlvdXMgY29tbWl0IHRvIG1ha2UgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGJhY2sgdG8KKyAgIHRoZWlyIHJlZ3VsYXIgaW5zYW5lIG9yZGVyaW5nOyBJIGRvbid0IGxpa2UgdGhpcyBzaXR1YXRpb24gYXQgYWxsCisKKzIwMDktMDYtMTEgMjE6NDIgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgorCisgICBpbmNsdWRlIGxhcmdlX2ZkX3NldC5oIGJlZm9yZSB0eXBlZGVmaW5nIHNvbWV0aGluZyBiYXNlZCBvbiB0aGUKKyAgIHN0cnVjdHVyZQogCiAyMDA5LTA2LTAzIDEyOjM1ICBkdHMxMgogCiAgICAqIHBlcmwvU05NUC9TTk1QLnhzOgogCi0gICBDSEFOR0VTOiBwZXJsOiBQQVRDSEVTOiAyNzkzODU3OiBSZXBvcnQgZmFpbGVkIGFzeW5jaHJvbm91cyByZXF1ZXN0cy4KKyAgIENIQU5HRVM6IHBlcmw6IFBBVENIRVM6IDI3OTM4NTc6IFJlcG9ydCBmYWlsZWQgYXN5bmNocm9ub3VzCisgICByZXF1ZXN0cy4KIAogMjAwOS0wNi0wMyAxMTo0NiAgZHRzMTIKIApAQCAtMzc2OSw3ICsxMDExOCw4IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jOgogCi0gICBQQVRDSDogMjE4MjU5MjogQ2xlYW4gdXAgdmFjbUNvbnRleHRUYWJsZSBhZnRlciB1bnJlZ2lzdHJhdGlvbnMKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjE4MjU5MjogQ2xlYW4gdXAgdmFjbUNvbnRleHRUYWJsZSBhZnRlcgorICAgdW5yZWdpc3RyYXRpb25zCiAgICBQYXRjaCBzdXBwbGllZCBieSBKb2huIEZvcnN5dGgKIAogMjAwOS0wNi0wMyAxMDoxMiAgZHRzMTIKQEAgLTM3ODAsMTggKzEwMTMwLDIxIEBACiAgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwgc25tcGxpYi9zbm1wVURQRG9tYWluLmMsICAgCiAgICAgICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcHYzLmM6CiAKLSAgIENIQU5HRVM6IFBBVENIOiAyNzk3MjUxOiBTdXBwb3J0IG11bHRpcGxlIGluaXRpYWxpc2F0aW9uIGFuZCBzaHV0ZG93biwgZml4IG1lbW9yeSBsZWFrcworICAgQ0hBTkdFUzogUEFUQ0g6IDI3OTcyNTE6IFN1cHBvcnQgbXVsdGlwbGUgaW5pdGlhbGlzYXRpb24gYW5kCisgICBzaHV0ZG93biwgZml4IG1lbW9yeSBsZWFrcwogICAgUGF0Y2ggc3VwcGxpZWQgYnkgSXZvc2gKIAogMjAwOS0wNi0wMSAxNTo1MyAgZHRzMTIKIAogICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKIAotICAgQ0hBTkdFUzogZG9jczogUEFUQ0hFUzogMjc4ODA3MjogRG9jdW1lbnQgJ2xvZ21hdGNoJyBmdW5jdGlvbmFsaXR5LgorICAgQ0hBTkVHUzogZG9jczogUEFUQ0hFUzogMjc4ODA3MjogRG9jdW1lbnQgJ2xvZ21hdGNoJworICAgZnVuY3Rpb25hbGl0eS4KIAogMjAwOS0wNi0wMSAxNTo1MCAgZHRzMTIKIAogICAgKiAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jLCBzbm1wbGliL21pYi5jLCAgIAorICAgICAgc25tcGxpYi9wYXJzZS5jLCBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMsICAgCiAgICAgICBzbm1wbGliL3N5c3RlbS5jLCB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKICAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCkBAIC0zNzk5LDE3ICsxMDE1MiwzMiBAQAogCiAyMDA5LTA2LTAxIDE1OjM3ICBkdHMxMgogCi0gICAqICBhY2xvY2FsLm00LCBjb25maWd1cmUsIGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC1kYXRhL21vbml0b3IsICAgCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2t2bV9wcm9jLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcnBzaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jLCBjb25maWd1cmUsICAgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcGQtZGF0YS9tb25pdG9yLCBtNC9saWJ0b29sLm00LCAgIAogICAgICAgbWFuL3NubXBkLmNvbmYuNS5kZWYsIG1hbi9zbm1wZC5leGFtcGxlcy41LmRlZjoKIAotICAgQ0hBTkdFUzogZG9jczogUEFUQ0g6IDI3OTU3Mzk6IEZpeCBpbmNvcnJlY3QgZGlzay9maWxlIHNpemUgZGVzY3JpcHRpb25zICYgdW5pdCBzcGVjaWZpZXJzCisgICBDSEFOR0VTOiBkb2NzOiBQQVRDSDogMjc5NTczOTogRml4IGluY29ycmVjdCBkaXNrL2ZpbGUgc2l6ZQorICAgZGVzY3JpcHRpb25zICYgdW5pdCBzcGVjaWZpZXJzCiAKIDIwMDktMDYtMDEgMTM6MTEgIGR0czEyCiAKICAgICogRVhBTVBMRS5jb25mLmRlZjoKIAogICAgUmV3b3JrIGV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIHRvIG1hdGNoIGN1cnJlbnQgc25tcGQuY29uZig1KQotICAgc3RydWN0dXJlLCBhbmQgbW9yZSBjbGVhcmx5IGlsbHVzdHJhdGUgY3VycmVudCBiZXN0IHByYWN0aXNlLgorICAgc3RydWN0dXJlLAorICAgYW5kIG1vcmUgY2xlYXJseSBpbGx1c3RyYXRlIGN1cnJlbnQgYmVzdCBwcmFjdGlzZS4KKworMjAwOS0wNS0zMCAwNjo1OCAgbWFnZnIKKworICAgKiBhZ2VudC9taWJfbW9kdWxlcy5jOgorCisgICBSZW1vdmUgdW51c2VkIGluY2x1ZGUuCiAKIDIwMDktMDUtMjkgMDk6MTQgIGR0czEyCiAKQEAgLTM4MTksMTggKzEwMTg3LDQyIEBACiAKIDIwMDktMDUtMjkgMDk6MDggIGR0czEyCiAKLSAgICogbG9jYWwvcGFzc3Rlc3QucGwsIG1pYnMvTWFrZWZpbGUuaW4sIG1pYnMvTkVULVNOTVAtUEFTUy1NSUIudHh0OgorICAgKiAgbG9jYWwvcGFzc3Rlc3QsIGxvY2FsL3Bhc3N0ZXN0LnBsLCBtaWJzL01ha2VmaWxlLmluLCAgIAorICAgICAgbWlicy9ORVQtU05NUC1QQVNTLU1JQi50eHQ6CiAKICAgIFJld29yayAicGFzc3Rlc3QiIGV4YW1wbGVzIHRvIGZ1bGx5IHZhbGlkYXRlIEdFVE5FWFQgcmVxdWVzdHMsCiAgICBhbmQgdXNlIGEgbGVnaXRpbWF0ZSBNSUIgc3RydWN0dXJlIGZvciBvdXRwdXQuCiAgICBBZGQgYW4gZXhhbXBsZSBNSUIgdG8gZGVmaW5lIHRoYXQgc3RydWN0dXJlLgogCi0yMDA5LTA1LTI4IDEyOjU1ICBkdHMxMgorMjAwOS0wNS0yOCAxMjo0MSAgZHRzMTIKIAogICAgKiBGQVE6CiAKLSAgIFN5bmNocm9uaXNlIHdpdGggbGF0ZXN0IEZBUQotICAgKGluY2x1ZGluZyA1LjUgcmV2aXNpb25zIHVwIHRvIE1JQnMgc2VjdGlvbikKKyAgIFVwZGF0ZXMgdG8gTUlCcyBzZWN0aW9uCisKKzIwMDktMDUtMjggMTE6NTYgIGR0czEyCisKKyAgICogRkFROgorCisgICBUd2VhayBwaHJhc2luZyBvZiBhbiAob3ZlcmxvbmcpIHF1ZXN0aW9uIGluIHRoZSBQZXJsIHNlY3Rpb24KKworMjAwOS0wNS0yOCAxMTozMSAgZHRzMTIKKworICAgKiBGQVE6CisKKyAgIE5ldyBlbnRyeSBpbiB0aGUgQXBwbGljYXRpb25zIHNlY3Rpb24KKworMjAwOS0wNS0yOCAxMDo0MSAgZHRzMTIKKworICAgKiBGQVE6CisKKyAgIFVwZGF0ZXMgdG8gQXBwbGljYXRpb25zIHNlY3Rpb24KKworMjAwOS0wNS0yNyAxNToyNiAgZHRzMTIKKworICAgKiBGQVE6CisKKyAgIFVwZGF0ZXMgdG8gR0VORVJBTCBzZWN0aW9uLgogCiAyMDA5LTA1LTE5IDE3OjUwICBhbGV4X2IKIApAQCAtMzg0OSw3ICsxMDI0MSw5IEBACiAKICAgICogc25tcGxpYi9zY2FwaS5jOgogCi0gICBDSEFOR0VTOiBidWlsZDogQlVHOiAyNzgyNzAwOiBidWlsZCBmYWlsdXJlIHdoZW4gdXNpbmcgLS13aXRoLXBrY3Mgb24gU29sYXJpcworICAgQ0hBTkdFUzogYnVpbGQ6IEJVRzogMjc4MjcwMDogYnVpbGQgZmFpbHVyZSB3aGVuIHVzaW5nCisgICAtLXdpdGgtcGtjcyBvbgorICAgU29sYXJpcwogCiAyMDA5LTA1LTE1IDE0OjU5ICBqc2FmcmFuZWsKIApAQCAtMzg3MSwyOSArMTAyNjUsNTAgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IEFsbG93ICJtb25pdG9yIiB0byBoYW5kbGUgbmVnYXRpdmUgdGhyZXNob2xkIHZhbHVlcy4KKyAgIENIQU5HRVM6IHNubXBkOiBBbGxvdyAibW9uaXRvciIgdG8gaGFuZGxlIG5lZ2F0aXZlIHRocmVzaG9sZAorICAgdmFsdWVzLgogICAgUmVwb3J0ZWQgYnkgUmljaGFyZCBHaXBwcy4KIAogMjAwOS0wNS0xMyAyMjozMiAgdGFuZGVycwogCiAgICAqIHNubXBsaWIvdmFjbS5jOgogCi0gICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI3OTE0MTc6IGZpeCBzbm1wZCBzZWdmYXVsdCB3aGVuIHJ1biB3aXRoIC1EQUxMCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI3OTE0MTc6IGZpeCBzbm1wZCBzZWdmYXVsdCB3aGVuIHJ1biB3aXRoCisgICAtREFMTAogICAgUGF0Y2ggc3VwcGxpZWQgYnkgUm9uIFJvc2tlbnMuCiAKIDIwMDktMDUtMTMgMDg6MDIgIGR0czEyCiAKICAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CiAKLSAgIEJyaW5nIGRvY3VtZW50YXRpb24gb2Ygbm90aWZpY2F0aW9uRXZlbnQgc3ludGF4IGludG8gbGluZSB3aXRoIHJlYWxpdHkuCi0gICAoVXNlcyAiLW0iIHJhdGhlciB0aGFuICItbiIgdG8gcmVnaXN0ZXIgc3RhbmRhcmQgTUlCIHBheWxvYWQgb2JqZWN0cykKKyAgIEJyaW5nIGRvY3VtZW50YXRpb24gb2Ygbm90aWZpY2F0aW9uRXZlbnQgc3ludGF4IGludG8gbGluZSB3aXRoCisgICByZWFsaXR5LgorICAgKFVzZXMgIi1tIiByYXRoZXIgdGhhbiAiLW4iIHRvIHJlZ2lzdGVyIHN0YW5kYXJkIE1JQiBwYXlsb2FkCisgICBvYmplY3RzKQogICAgSW5jb25zaXN0ZW5jeSByZXBvcnRlZCBieSBSaWNoYXJkIEdpcHBzLgogCi0yMDA5LTA1LTEyIDIzOjI2ICBhbGV4X2IKKzIwMDktMDUtMTAgMjE6MTIgIGFsZXhfYgogCi0gICAqIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgsIHBlcmwvYWdlbnQvYWdlbnQueHM6CisgICAqICB3aW4zMi9NYWtlZmlsZS1hcHBzLmluLCB3aW4zMi9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluLCB3aW4zMi9zbm1wZC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL3NubXBkc2RrL01ha2VmaWxlLmluLCB3aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbjoKIAotICAgV2luMzI6IEJ1aWxkIGZpeGVzIC0gY2hhbmdlIHVuc2lnbmVkIGxvbmcgbG9uZyB0byB1aW50NjRfdC4KKyAgIFdpbjMyOiBBZGRlZCBhdXRvbWF0aWMgbWFuaWZlc3QgbWVyZ2luZyB3aXRoIG10LmV4ZSBmb3IgTVNWQyAyMDA4CisgICBldGMuCisKKzIwMDktMDUtMDggMTM6MTIgIGFsZXhfYgorCisgICAqIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jOgorCisgICBDaGFuZ2VzOiBXaW4zMjogQWRkIHN1cHBvcnQgZm9yIFdpbmRvd3MgNywgVmlzdGEgYW5kIDIwMDggZm9yCisgICB3aW5FeHRETEwuCisKKzIwMDktMDUtMDggMDI6MDcgIGFsZXhfYgorCisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbjoKKworICAgV2luMzI6IEJ1aWxkIGZpeGVzIGZvciBETEwuCiAKIDIwMDktMDUtMDcgMjM6MDAgIHRhbmRlcnMKIApAQCAtMzkwMSwxNyArMTAzMTYsMzE1IEBACiAKICAgIGJ1aWxkIGZpeCBmb3IgSFAtVVg6IGluY2x1ZGUgPHN5cy9wYXJhbS5oPiBmb3IgREVWX0JTSVpFCiAKKzIwMDktMDUtMDcgMDU6MTEgIG5iYQorCisgICAqIGFnZW50L3NubXBfcGVybC5oOgorCisgICBVcHMsIG1pc3NlZCBhIG5ldyBwcm90b3R5cGUgaGVhZGVyCisKKzIwMDktMDUtMDYgMjI6MjYgIG5iYQorCisgICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgorCisgICBBIG1hbiBsaW5lIGNhbm5vdCBzdGFydCB3aXRoIGEgJworCisyMDA5LTA1LTA2IDIyOjA3ICBuYmEKKworICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6CisKKyAgIElQdjYgYWRyZXNzZXMgYXJlIGEgYml0IG1vcmUgY29tcGxpY2F0ZWQgdGhlbiAzMmJpdHMKKworMjAwOS0wNS0wNiAyMjowNiAgbmJhCisKKyAgICogIGFnZW50L2FnZW50X3N5c09SVGFibGUuYywgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oLCBzbm1wbGliL29pZF9zdGFzaC5jOgorCisgICBTcHJpbmtsZSBzb21lIGNvbnN0LW5lc3Mgd2hlcmUgcmVsZXZhbnQKKworMjAwOS0wNS0wNiAyMjowMiAgbmJhCisKKyAgICogc25tcGxpYi9zY2FwaS5jLCBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKKworICAgVHJpdmlhbCB3YXJuaW5nIGZpeGVzCisKKzIwMDktMDUtMDYgMjI6MDAgIG5iYQorCisgICAqIG1pYnMvcmZjbWlicy5kaWZmOgorCisgICBIbW1tLCBJQU5BIGZpeGVkIHRoZWlyIGJ1ZyB0b28KKworMjAwOS0wNS0wNiAyMTo1OSAgbmJhCisKKyAgICogUkVBRE1FOgorCisgICBVcGRhdGUgZW1haWwgdG8gY3VycmVudAorCisyMDA5LTA1LTA2IDIxOjU5ICBuYmEKKworICAgKiAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5jLCAgIAorICAgICAgYWdlbnQvc25tcF9hZ2VudC5jLCBhZ2VudC9zbm1wX3BlcmwuYywgYWdlbnQvc25tcF92YXJzLmMsICAgCisgICAgICBhZ2VudC9zbm1wZC5jLCBwZXJsL1NOTVAvU05NUC54cywgICAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci54cywgc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMsIAorICAgICAgICBzbm1wbGliL3NubXBfc2VydmljZS5jOgorCisgICBUcml2aWFsIHdhcm5pbmcgZml4ZXMKKworMjAwOS0wNS0wNiAyMTo0OSAgbmJhCisKKyAgICogYXBwcy9zbm1wdHJhcGRfbG9nLmM6CisKKyAgIGNvbnRleHRFbmdpbmVJRCBpcyBhIGhleHN0cmluZywgbm90IGFuIG9iamVjdCBpZGVudGlmaWVyCisKKzIwMDktMDUtMDYgMjE6NDUgIG5iYQorCisgICAqICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuYywgYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMsICAgCisgICAgICBzbm1wbGliL2FzbjEuYywgc25tcGxpYi9kaXJfdXRpbHMuYywgc25tcGxpYi9pbnQ2NC5jLCAgIAorICAgICAgc25tcGxpYi9taWIuYywgc25tcGxpYi9yZWFkX2NvbmZpZy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYywgc25tcGxpYi9zbm1wX2FsYXJtLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9jbGllbnQuYywgc25tcGxpYi9zbm1wdXNtLmMsICAgCisgICAgICBzbm1wbGliL3NubXB2My5jOgorCisgICBGaXggZm9ybWF0IHdhcm5pbmdzIGZyb20gZGVidWcgb3V0cHV0CisKKzIwMDktMDUtMDYgMjA6NDUgIG5iYQorCisgICAqIG1pYnMvc21pc3RyaXA6CisKKyAgIFByb3Blcmx5IHJlY29nbml6ZSBtZXNzYWdlIHN5bnRheCBtb2R1bGVzICh0byBiZSBhYmxlIHRvIGlnbm9yZQorICAgdGhlbSkKKworMjAwOS0wNS0wNiAyMDozNiAgbmJhCisKKyAgICogbWlicy9yZmNsaXN0OgorCisgICBSRkMgdXBkYXRlcworCisyMDA5LTA1LTA2IDIwOjM1ICBuYmEKKworICAgKiBtaWJzL3JmY21pYnMuZGlmZjoKKworICAgU3ludGF4IGZpeCBmb3IgY3VycmVudCBJQU5BLVBSSU5URVItTUlCCisKKzIwMDktMDUtMDYgMjA6MzQgIG5iYQorCisgICAqIG1pYnMvSUFOQWlmVHlwZS1NSUIudHh0OgorCisgICBVcGRhdGUgdG8gY3VycmVudCBJQU5BIHZlcnNpb24KKworMjAwOS0wNS0wNCAxMzo0NyAgYWxleF9iCisKKyAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYsIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLmluOgorCisgICBXaW4zMjogQnVpbGQgZml4ZXMgZm9yIERMTC4KKworMjAwOS0wNS0wMSAxNTo0MyAgbWFnZnIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oLCBzbm1wbGliL3NubXBfZGVidWcuYzoKKworICAgTkVXUzogc25tcGxpYjogU3RvcCB1c2luZyBhIGZpeGVkIHN0cmluZyBmb3IgaW5kZW50YXRpb24uIFJlbW92ZQorICAgdGhlIERFQlVHSU5ERU5UKCkgbWFjcm8gKHRoYXQgZGlkIG5vdGhpbmcpLiBDaGFuZ2UgdGhlIG1lYW5pbmcgb2YKKyAgIHRoZSBpbnRlcm5hbCBfX0RCR0lOREVOVCgpIG1hY3JvIHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIHNwYWNlcworICAgdG8gaW5kZW50IGluc3RlYWQgb2YgYSBzdHJpbmcgdGhhdCByZXByZXNlbnQgdGhlIGluZGVudGF0aW9uCisgICBsZXZlbC4gRGVwcmVjYXRlIHRoZSBkZWJ1Z19pbmRlbnQgZnVuY3Rpb24uCisKKzIwMDktMDQtMzAgMDY6NTcgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3dhdGNoZWQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYywgbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmY6CisKKyAgIENIQU5HRVM6IHNubXBkOiBVc2Ugc3RhdGljIHdhdGNoZXJfaW5mbyBmb3IgYWxsIHdhdGNoZWQgdmFyaWFibGVzCisgICBhbmQgaW4gaW50X3dhdGNoLgorCisyMDA5LTA0LTMwIDA2OjQxICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaDoKKworICAgQ0hBTkdFUzogc25tcGxpYjogU2VwYXJhdGUgaW5pdGlhbGl6YXRpb24gZnJvbSBhbGxvY2F0aW9uIGZvcgorICAgbmV0c25tcF93YXRjaGVyX2luZm8gc3RydWN0dXJlcyB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHVzZQorICAgc3RhdGljYWxseSBhbGxvY2F0ZWQgZGF0YS4KKworMjAwOS0wNC0zMCAwNjozNCAgbWFnZnIKKworICAgKiBzbm1wbGliL3NubXBEVExTVURQRG9tYWluLmM6CisKKyAgIEFkZCBtaXNzaW5nIHJldHVybiB2YWx1ZS4KKworMjAwOS0wNC0zMCAwMDoxOCAgaGFyZGFrZXIKKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgZG9jdW1lbnQgdGhlIERUTFMgc3VwcG9ydDsgc2VtaSBkb2N1bWVudCB0aGUgU1NIIHN1cHBvcnQgYW5kCisgICBkb2N1bWVudCB0aGUgLXMgc3dpdGNoIHRvIG1hbnkgVkFDTSBzZXR0aW5ncworCisyMDA5LTA0LTI5IDIzOjU0ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgcHJvdGVjdCBhZ2FpbnN0IGNvbm5lY3Rpb24gb3BlbmluZyBlcnJvcnMgYW5kIGZyZWUgbWVtb3J5IG9uCisgICBmYWlsdXJlcworCisyMDA5LTA0LTI5IDEyOjE5ICBhbGV4X2IKKworICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgV2luMzI6IFVwZGF0ZSBkZWZpbmVzIGZvciBfV0lOMzJfV0lOTlQgYW5kIE5URERJX1ZFUlNJT04gdG8KKyAgIHN1cHBvcnQgV2luZG93cyAyMDAwIGFuZCBoaWdoZXIgYW5kIGFkZCBJUFY2IGRlZmluZSB0byBhbGxvdyBJUFY2CisgICBjb2RlIHRvIGNvbXBpbGUuCisKKzIwMDktMDQtMjggMDY6MzQgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmM6CisKKyAgIHNubXBkLCBMaW51eDogUmVtb3ZlIHNvbWUgdW51c2VkIHZhcmlhYmxlcy4KKworMjAwOS0wNC0yOCAwNjowNyAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jOgorCisgICBzbm1wZDogQWRkIG1pc3NpbmcgYXJndW1lbnQgdG8gcHJpbnRmLWxpa2UgY2FsbC4KKworMjAwOS0wNC0yOCAwNTo1MyAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmM6CisKKyAgIHNubXBkOiBNYXJrIG1vcmUgb2lkcyBhcyBjb25zdC4KKworMjAwOS0wNC0yOCAwNTo1MSAgbWFnZnIKKworICAgKiBzbm1wbGliL21pYi5jOgorCisgICBSZXR1cm4gYSB2YWx1ZSBmcm9tIHNwcmludF9yZWFsbG9jX3ZhbHVlIGV2ZW4gaWYgbm8gc3VidHJlZSBpcworICAgbG9jYXRlZC4KKworMjAwOS0wNC0yOCAwMToxMiAgYWxleF9iCisKKyAgICogIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jLCB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBXaW4zMjogTVNWQzogT25seSB1c2UgV2luZG93cyBBUEkgZnVuY3Rpb25zIGF2YWlsYWJsZSBvbiBXaW5YUCBvcgorICAgYmVmb3JlIChJUFY2KSBvciAyMDAwIG9yIGJlZm9yZSAobm8gSVBWNikuCisKKzIwMDktMDQtMjYgMjM6MzAgIGFsZXhfYgorCisgICAqICB3aW4zMi9NYWtlZmlsZS1hcHBzLmluLCB3aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCB3aW4zMi9zbm1wZHNkay9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW46CisKKyAgIFdpbjMyOiBSZW1vdmUgbWFjaGluZSB0eXBlIG9mIEkzODYgZnJvbSBMSU5LMzJfRkxBR1MgdG8gYWxsb3cKKyAgIGNvbXBpbGluZyB3aXRoIE1TVkMgMjAwOCBhcyBlaXRoZXIgMzIgb3IgNjQtYml0LgorCisyMDA5LTA0LTI2IDE3OjM4ICBhbGV4X2IKKworICAgKiAgd2luMzIvTWFrZWZpbGUtYXBwcy5pbiwgd2luMzIvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwgd2luMzIvc25tcGQvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9zbm1wZHNkay9NYWtlZmlsZS5pbiwgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW46CisKKyAgIENIQU5HRVM6IFdpbjMyOiBCdWlsZCBmaXhlcyBmb3IgTVNWQyAyMDA4LiBDb3B5IGFuZCBjbGVhbnVwCisgICBtYW5pZmVzdCBmaWxlcy4KKworMjAwOS0wNC0yNiAxNToyMSAgYWxleF9iCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgV2luMzI6IFJlLWVuYWJsZSBwYXNzIGFuZCBwYXNzX3BlcnNpc3QgQ291bnRlcjY0IGZvciBNU1ZDLgorCisyMDA5LTA0LTI2IDE0OjM0ICBhbGV4X2IKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5oLCBzbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMsIHdpbjMyL2J1aWxkLnBsLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IEJ1aWxkIGZpeGVzIGZvciBNU1ZDIDIwMDguIElGVFlQRSBpcyBkZWZpbmVkIGJ5CisgICBNU1ZDIDIwMDgsIHNvIGludGVyZmFjZXMuYyB2YXJpYWJsZXMgd2VyZSBjaGFuZ2VkIHRvIE5FVFNOTVBfLgorCiAyMDA5LTA0LTI2IDEzOjA2ICBhbGV4X2IKIAogICAgKiBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYzoKIAogICAgV2luMzI6IFVwZGF0ZSBidWlsZCBpbnN0cnVjdGlvbnMgaW4gY29tbWVudHMuCiAKKzIwMDktMDQtMjQgMTM6MjggIGhhcmRha2VyCisKKyAgICogcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgZml4IHRoZSBBU05fT1BBUVVFIHBhdGNoIHRoYXQgd2FzIGNvbW1pdGVkIHdpdGhvdXQgcHJvcGVyIGRpZmYKKyAgIGNvbnRleHQKKwogMjAwOS0wNC0yNCAwNzozMSAgdGFuZGVycwogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNDoKIAotICAgQ0hBTkdFUzogSFAtVVg6IEJVRzogMjc3OTQ3MjogRmlsZXN5c3RlbXMgbWlzc2luZyBpbiBoclN0b3JhZ2UgdGFibGUgb24gSFAtVVggMTEuMzEKKyAgIENIQU5HRVM6IEhQLVVYOiBCVUc6IDI3Nzk0NzI6IEZpbGVzeXN0ZW1zIG1pc3NpbmcgaW4gaHJTdG9yYWdlCisgICB0YWJsZSBvbiBIUC1VWCAxMS4zMQogICAgKGFsbG93IGZvciBtbnR0YWIgdGhhdCBpcyBhIGNoYXJhY3RlciBzcGVjaWFsIGRldmljZSkKIAogMjAwOS0wNC0yNCAwMTozNiAgYWxleF9iCkBAIC0zOTIxLDE4ICsxMDYzNCw3NCBAQAogCiAgICBDSEFOR0VTOiBXaW4zMjogQlVHOiAyNzc5NTQxIEZpeGVkIGhhbmRsZSBsZWFrIGluIHBhc3NfcGVyc2lzdC4KIAotMjAwOS0wNC0yMyAyMzoxNCAgdGFuZGVycwotCi0gICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgotCi0gICBDSEFOR0VTOiBBSVg6IEJVRzogMjcxMjY3MDogQWdlbnQgY3Jhc2hlcyBvbiBBSVggd2l0aCBoclN0b3JhZ2UKLQogMjAwOS0wNC0yMyAyMjo1MyAgaGFyZGFrZXIKIAotICAgKiBzbm1wbGliL3NubXBfYWxhcm0uYzoKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy5oLCBzbm1wbGliL3NubXBfYWxhcm0uYzoKIAogICAgZml4IEMrKyBzdHlsZSBjb21tZW50cwogCisyMDA5LTA0LTIzIDIyOjI1ICBoYXJkYWtlcgorCisgICAqICBtYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMywgbWFuL25ldHNubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMywgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgbWFuL25ldHNubXBfcm93X21lcmdlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXIuMywgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgbWFuL25ldHNubXBfdGFibGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdG9vbHMuaC4zLCBtYW4vbmV0c25tcF91dGlsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorCisgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorCisyMDA5LTA0LTIzIDIyOjIzICBoYXJkYWtlcgorCisgICAqICBtYW4vY29uZmlnX2FwaS4zLCBtYW4vcGR1X2FwaS4zLCBtYW4vc2Vzc2lvbl9hcGkuMywgICAKKyAgICAgIG1hbi92YXJiaW5kX2FwaS4zOgorCisgICBpbml0aWFsIGRveHlnZW4gZXh0cmFjdHMgZm9yIHRoZSBuZXcgaGVhZGVycworCisyMDA5LTA0LTIzIDIyOjE5ICBoYXJkYWtlcgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6CisKKyAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCiAyMDA5LTA0LTIzIDIyOjE2ICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmM6CkBAIC0zOTQxLDI4ICsxMDcxMCw5MSBAQAogCiAyMDA5LTA0LTIzIDIyOjEwICB0YW5kZXJzCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0OgogCi0gICBDSEFOR0VTOiBIUC1VWDogQlVHOiAyNzc5NDcyOiBGaWxlc3lzdGVtcyBtaXNzaW5nIGluIGhyU3RvcmFnZSB0YWJsZSBvbiBIUC1VWCAxMS4zMQorICAgQ0hBTkdFUzogSFAtVVg6IEJVRzogMjc3OTQ3MjogRmlsZXN5c3RlbXMgbWlzc2luZyBpbiBoclN0b3JhZ2UKKyAgIHRhYmxlIG9uCisgICBIUC1VWCAxMS4zMQogCiAyMDA5LTA0LTIzIDIxOjQ4ICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jOgogCi0gICBDSEFOR0VTOiBTb2xhcmlzOiBQQVRDSDogMjc1MTU4ODogSW5jb25zaXN0ZW50IGRhdGEgKGUuZy4gVURQL1RDUCBNSUIgc2NhbGFyIHZhbHVlcyBvZiB6ZXJvKSBjYW4gYmUgcmVwb3J0ZWQgb24gU29sYXJpcyAxMFU0KworICAgQ0hBTkdFUzogU29sYXJpczogUEFUQ0g6IDI3NTE1ODg6IEluY29uc2lzdGVudCBkYXRhIChlLmcuIFVEUC9UQ1AKKyAgIE1JQgorICAgc2NhbGFyIHZhbHVlcyBvZiB6ZXJvKSBjYW4gYmUgcmVwb3J0ZWQgb24gU29sYXJpcyAxMFU0KwogICAgUGF0Y2ggcHJvdmlkZWQgYnkgQW5kZXJzIFBlcnNzb24KIAorMjAwOS0wNC0yMyAxNzozMCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmg6CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTkwMTc2NDogZnJvbSBrcmlzenRvZm9ybyBmb3Igc3VwcG9ydGluZworICAgbG9nd2F0Y2ggZmlsZXMgdGhhdCBhcmUgZGF0ZSBiYXNlZAorCisyMDA5LTA0LTIzIDE3OjIyICBoYXJkYWtlcgorCisgICAqIHBlcmwvU05NUC9TTk1QLnBtLCBwZXJsL1NOTVAvU05NUC54czoKKworICAgTkVXUzogcGVybDogUEFUQ0ggMTk1NjE5MzogZnJvbSBjYWNveWxlOiBiZXRhIHRocmVhZGFibGUgcGVybAorICAgbW9kdWxlIGNvZGUgZm9yIFNOTVB2MS9TTk1QdjJjIHVzYWdlLgorCiAyMDA5LTA0LTIzIDE2OjU3ICBoYXJkYWtlcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYzoKIAotICAgQ0hBTkdFUzogc29sYXJpczogUEFUQ0g6IDIwMTI0MDQ6IGRlYWwgd2l0aCBtb3JlIHRoYW4gMTAgaW50ZXJmYWNlcy4gTmV3IGhhcmRjb2RlZCBsaW1pdCBpcyA1MC4gQSBiZXR0ZXIgc2NhbGluZyBwYXRjaCB3b3VsZCBiZSBhcHByZWNpYXRlZCA6LSkKKyAgIENIQU5HRVM6IHNvbGFyaXM6IFBBVENIOiAyMDEyNDA0OiBkZWFsIHdpdGggbW9yZSB0aGFuIDEwCisgICBpbnRlcmZhY2VzLiBOZXcgaGFyZGNvZGVkIGxpbWl0IGlzIDUwLiBBIGJldHRlciBzY2FsaW5nIHBhdGNoCisgICB3b3VsZCBiZSBhcHByZWNpYXRlZCA6LSkKKworMjAwOS0wNC0yMyAxNjo0NyAgaGFyZGFrZXIKKworICAgKiAgUkVBRE1FLmFnZW50LW1pYnMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgorCisgICBkb2N1bWVudCB0aGF0IHRoZSBldGhlcmxpa2UtbWliIGhhcyBhbiBpbXBsZW1lbnRhdGlvbgorCisyMDA5LTA0LTIzIDE2OjQwICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2VzcywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2dldC5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9nZXQuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfc2V0LmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX3NldC5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZW51bXMuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmgsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9vaWRzLmgsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2lvY3RsX2ltcF9jb21tb24uaDoKKworICAgTkVXUzogc25tcGQ6IFBBVENIOiAyMDUzMjczOiBmcm9tIG5hcmVuZHJhX2tfZGVsbCB0byBpbWxwZW1lbnQKKyAgIHRoZSBldGhlcmxpa2UgbWliIChhdCBsZWFzdCBvbiBsaW51eCkKIAogMjAwOS0wNC0yMyAxNjozNSAgaGFyZGFrZXIKIAogICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1vaWRzLm0yYzoKIAotICAgQ0hBTkdFUzogbWliMmM6IFBBVENIOiAyMTM2NDM3OiBtYWtlIEZMQUcgZGVmaW5lcyBtb3JlIDY0Yml0IGZyaWVuZGx5IHdoZW4gaHVnZSB0YWJsZXMgYXJlIGVuY291bnRlcmVkCisgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0g6IDIxMzY0Mzc6IG1ha2UgRkxBRyBkZWZpbmVzIG1vcmUgNjRiaXQKKyAgIGZyaWVuZGx5IHdoZW4gaHVnZSB0YWJsZXMgYXJlIGVuY291bnRlcmVkCiAKIDIwMDktMDQtMjMgMTY6MjcgIGhhcmRha2VyCiAKQEAgLTM5NzUsMTMgKzEwODA3LDE1IEBACiAKICAgICogcHl0aG9uL25ldHNubXAvY2xpZW50LnB5OgogCi0gICBDSEFOR0VTOiBweXRob246IFBBVENIOiAyMDc0ODE3OiBmcm9tIGZlbm5lciB0byBmaXggcmVnZXhwIGVuZ2luZSBDUFUgcGVyZm9ybWFuY2UgaXNzdWVzCisgICBDSEFOR0VTOiBweXRob246IFBBVENIOiAyMDc0ODE3OiBmcm9tIGZlbm5lciB0byBmaXggcmVnZXhwIGVuZ2luZQorICAgQ1BVIHBlcmZvcm1hbmNlIGlzc3VlcwogCiAyMDA5LTA0LTIzIDE2OjE0ICBoYXJkYWtlcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgogCi0gICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDIxNjI2NTI6IHBhdGNoIHRvIGZpeCBzaW1wbGUgaHJmcyBjaGVja3Mgd2hlbiBORlMgaXMgaW4gdXNlLgorICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyMTYyNjUyOiBwYXRjaCB0byBmaXggc2ltcGxlIGhyZnMgY2hlY2tzCisgICB3aGVuIE5GUyBpcyBpbiB1c2UuCiAKIDIwMDktMDQtMjMgMTY6MTEgIGhhcmRha2VyCiAKQEAgLTQwMzMsNiArMTA4NjcsNTggQEAKIAogICAgRml4IG1lbW9yeSBsZWFrIGluIFNDVFAgY29udGFpbmVycy4KIAorMjAwOS0wNC0yMyAwODoyOSAgZHRzMTIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgorCisgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCBpcyBwcm9iYWJseSBiZXN0IHJlZ2FyZGVkIGFzIGFuICJvcGFxdWUiCisgICBkYXRhCisgICBzdHJ1Y3R1cmUsIGFuZCBpc24ndCByZWFsbHkgaW50ZW5kZWQgZm9yIGRpcmVjdCBtYW5pcHVsYXRpb24uCisgICBNb3ZlIGl0IGJhY2sgaW50byB0aGUgPGxpYnJhcnkvbGFyZ2VfZmRfc2V0Lmg+IGhlYWRlciBmaWxlLgorICAgKExpa2UgaXQgd2FzIGJlZm9yZSBEYXZlIHN0dWNrIGhpcyBvYXIgaW4uLi4uKQorCisyMDA5LTA0LTIzIDA4OjE5ICBkdHMxMgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgsIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCwgICAKKyAgICAgIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBGdWVydGhlciBpbXByb3ZlbWVudHMgdG8gdGhlIGxhcmdlIEZEIHNldCBzdXBwb3J0CisgICAoU2VlIHBhdGNoICMyNzcyNzg3KQorCisyMDA5LTA0LTIzIDA2OjQ1ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaDoKKworICAgYnVpbGRpbmc6IFVzZSBjb25maWdfZXJyb3IoLi4uKSBpbnN0ZWFkIG9mCisgICBjb25maWdfcmVxdWlyZShub24tZXhpc3RpbmcpIHRvIGdldCBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCisKKzIwMDktMDQtMjMgMDY6NDEgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYywgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmg6CisKKyAgIHNubXBsaWIsIExpbnV4OiBNb3ZlIGdldF9waWRfZnJvbV9pbm9kZSB0byBpdCdzIG93biBmaWxlIGFuZCBvbmx5CisgICBjb21waWxlIGl0IGlmIG5lZWRlZCwgYWxzbyByZW5hbWUgaXQgdG8KKyAgIG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlLgorCisyMDA5LTA0LTIzIDA0OjMzICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmgsIGFnZW50L3NubXBkLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjQzMTM1MyBmcm9tIGhucm9zZSB0byBtYWtlIHNvbWUgQysrCisgICBjb21waWxlcnMgaGFwcGllcgorCiAyMDA5LTA0LTIzIDAzOjI3ICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvc25tcF9hbGFybS5jOgpAQCAtNDA0MCwyNyArMTA5MjYsMjY0IEBACiAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMjUwNTQ4ODogZnJvbSBkYWJva2V5IHRvIGZpeCBhbGFybXMgbm90CiAgICBiZWluZyB0cmlnZ2VyZWQgYXQgdGhlIHJpZ2h0IHRpbWVzIGR1ZSB0byBsYXJnZSBjbG9jayBza2V3cy4KIAorMjAwOS0wNC0yMyAwMDowMSAgaGFyZGFrZXIKKworICAgKiAgYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMsIGFwcHMvc25tcG5ldHN0YXQvbWFpbi5jLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgsIG1hbi9zbm1wbmV0c3RhdC4xLmRlZjoKKworICAgTkVXUzogc25tcG5ldHN0YXQ6IFBBVENIOiAyNTY0NTM4OiBmcm9tIGFobWFrZSB0byBzdXBwb3J0IEdFVEJVTEsKKyAgIGluIHYyYysgc25tcCB2ZXJzaW9ucworCiAyMDA5LTA0LTIyIDIzOjQ5ICBoYXJkYWtlcgogCiAgICAqICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMsICAgCi0gICAgICBhcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMsIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMsICAgCi0gICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5oLCBzbm1wbGliL3N5c3RlbS5jOgorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jLCBzbm1wbGliL3N5c3RlbS5jOgogCiAgICBDSEFOR0VTOiBwb3J0czogUEFUQ0g6IDI2ODgzNDI6IGZyb20gYWhtYWtlIHRvIGZpeCB2YXJpb3VzCiAgICBjb21waWxlciB3YXJuaW5nCiAKKzIwMDktMDQtMjIgMjM6MjMgIGhhcmRha2VyCisKKyAgICogcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDI3NjM3MTogZnJvbSBmaGV3IHRvIGFsbG93IHBlcmwgdG8gdXNlCisgICBPUEFRVUVzCisKKzIwMDktMDQtMjIgMjM6MTcgIGhhcmRha2VyCisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKKworICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSDogMjc3NTgwMDogZnJvbSBBZGFtIFJvbWFuZWsgdG8gYWxsb3cKKyAgIHB5dGhvbiB0aHJlYWRpbmcgdG8gY29udGludWUgd2hlbiBhIHJlcXVlc3QgaXMgc2VudAorCiAyMDA5LTA0LTIyIDIyOjExICBhbGV4X2IKIAogICAgKiBSRUFETUUsIFJFQURNRS53aW4zMjoKIAogICAgVXBkYXRlIFRIQU5LUyBzZWN0aW9uLgogCisyMDA5LTA0LTIyIDIxOjIxICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKKworICAgRm9sZCB0aGUgZnVuY3Rpb24gZXh0cmFjdF9pbm9kZS4gd2l0aCBvbmx5IG9uZSB1c2VyLCBpbnRvIGl0J3MKKyAgIHVzZXIuCisgICBSZW1vdmUgdGhlICNkZWZpbmUgRklMRV9ESVNQLCB3aXRoIG9ubHkgb25lIHVzZXIsIHdpdGggdGhlIGFjdHVhbAorICAgdmFsdWUuCisKKzIwMDktMDQtMjIgMjE6MDMgIG1hZ2ZyCisKKyAgICogYWdlbnQvc25tcGQuYzoKKworICAgTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCB3aXRoIFNNVVggZW5hYmxlZC4KKworMjAwOS0wNC0yMiAxMzo0MyAganNhZnJhbmVrCisKKyAgICogUkVBRE1FLmFnZW50LW1pYnM6CisKKyAgIEFkZCBhIG5vdGUgaG93IHRoZSBuZXcgUk1PTi1NSUIgaW1wbGVtZW50YWlvbiB3b3JrcworCisyMDA5LTA0LTIyIDEzOjQxICBkdHMxMgorCisgICAqIG1hbi92YXJiaW5kX2FwaS4zLmRlZjoKKworICAgRmlsbCBvdXQgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIFZhcmJpbmQtcmVsYXRlZCBBUEkgY2FsbHMuCisKKzIwMDktMDQtMjIgMTM6MzcgIGpzYWZyYW5laworCisgICAqICBSRUFETUUuYWdlbnQtbWlicywgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi5oLCBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2VzcywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfZ2V0LmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfc2V0LmgsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9lbnVtcy5oLCAgCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfb2lkcy5oLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2lvY3RsX2ltcF9jb21tb24uaDoKKworICAgTkVXUzogc25tcGQ6IFBBVENIOiAyMTAzNDkyOiBpbXBsZW1lbnQKKyAgIFJNT04tTUlCOjpldGhlclN0YXRzSmFiYmVycworICAgUGF0Y2ggZnJvbSBOYXJlbmRyYSBLLiwgU2FuZGVlcCBLLiBTaGFuZGlseWEgYW5kIFNoeWFtIEl5ZXIKKwogMjAwOS0wNC0yMiAxMDowOCAgZHRzMTIKIAogICAgKiBtYW4vbWliX2FwaS4zLmRlZjoKIAogICAgQ29ycmVjdCBhIHNlcmlvdXNseSBtaXNsZWFkaW5nIChpLmUuIHdyb25nKSBkZXNjcmlwdGlvbiBvZiB0aGUKLSAgIHB1cnBvc2UgYW5kIGJlaGF2aW91ciBvZiB0aGUgcHJpbnRfZGVzY3JpcHRpb24gZmFtaWx5IG9mIGNhbGxzLgorICAgcHVycG9zZQorICAgYW5kIGJlaGF2aW91ciBvZiB0aGUgcHJpbnRfZGVzY3JpcHRpb24gZmFtaWx5IG9mIGNhbGxzLgorCisyMDA5LTA0LTIyIDA5OjMyICBkdHMxMgorCisgICAqIG1hbi9taWJfYXBpLjMuZGVmOgorCisgICBGdXJ0aGVyIHBvbGlzaGluZyBvZiB0aGUgZGVzY3JpcHRpb25zIG9mIE1JQi1yZWxhdGVkIEFQSSBjYWxscy4KKworMjAwOS0wNC0yMiAwNzozOSAgZHRzMTIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIFJlbW92ZSB1bm5lY2Vzc2FyeSByYW5nZSBjaGVja3MuCisgICAoVGhlc2UgYXJlIGhhbmRsZWQgd2l0aGluIHRoZSBsYXJnZV9mZF9zZXQgcm91dGluZXMgdGhlbXNlbHZlcykuCisKKzIwMDktMDQtMjEgMjM6MjcgIGFsZXhfYgorCisgICAqICB3aW4zMi9saWJzbm1wL01ha2VmaWxlLmluLCB3aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwLCAgIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCAgIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYuaW4sICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3A6CisKKyAgIHdpbjMyOiBGaXggV2luZG93cyBidWlsZCBlbnZpcm9ubWVudCB0byBzdXBwb3J0IHBhdGNoIDI3NzI3ODcuCisKKzIwMDktMDQtMjEgMTU6MzMgIGR0czEyCisKKyAgICogIGFnZW50L3NubXBkLmMsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgsIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCwgICAKKyAgICAgIHNubXBsaWIvTWFrZWZpbGUuaW4sIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCAgIAorICAgICAgc25tcGxpYi9sYXJnZV9mZF9zZXQuYywgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBSZXZpc2VkIHZlcnNpb24gb2YgcGF0Y2ggIzI3NzI3ODcKKworMjAwOS0wNC0yMSAxNToxNSAgZHRzMTIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oLCBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgsICAgCisgICAgICBzbm1wbGliL01ha2VmaWxlLmluLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jLCBzbm1wbGliL3NubXBfYXBpLmMsICAKKyAgICAgICB3aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwOgorCisgICBVbmRvIHJldmlzaW9uIDE3NTE1CisgICAoYnJva2VuL2luY29tcGxldGUgcGF0Y2gpCisKKzIwMDktMDQtMjEgMTQ6MzcgIGR0czEyCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaCwgaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oLCAgIAorICAgICAgc25tcGxpYi9NYWtlZmlsZS5pbiwgc25tcGxpYi9sYXJnZV9mZF9zZXQuYywgc25tcGxpYi9zbm1wX2FwaS5jLCAgCisgICAgICAgd2luMzIvbGlic25tcC9saWJzbm1wLmRzcDoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDI3NzI3ODc6IENsZWFuZXIgYXBwcm9hY2ggdG8gaGFuZGxpbmcKKyAgIGxhcmdlIGZkX3NldHMuCisgICBCYXNlZCBvbiBwYXRjaCBzdXBwbGllZCBieSBCYXJ0IFZhbiBBc3NjaGUuCisKKzIwMDktMDQtMjEgMTQ6MzQgIGR0czEyCisKKyAgICogbWFuL01ha2VmaWxlLmluOgorCisgICBQcm9wZXJseSBnZW5lcmF0ZSBuZXcgY29yZSBBUEkgbWFuIHBhZ2VzLgorCisyMDA5LTA0LTIxIDA5OjM4ICBkdHMxMgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaCwgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaCwgaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgsIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaDoKKworICAgRmlyc3QtY3V0IGF0IGlkZW50aWZ5aW5nIHRoZSBjb3JlIE5ldC1TTk1QIEFQSSBjYWxscy4KKyAgIE1vdmUgdGhlc2UgaW50byB0aGUgYXBwcm9wcmlhdGUgdG9wLWxldmVsIGhlYWRlciBmaWxlcy4KKworMjAwOS0wNC0yMSAwOTozNiAgZHRzMTIKKworICAgKiAgbWFuL01ha2VmaWxlLmluLCBtYW4vY29uZmlnX2FwaS4zLmRlZiwgbWFuL3JlYWRfY29uZmlnLjMuZGVmLCAgIAorICAgICAgbWFuL3Nlc3Npb25fYXBpLjMuZGVmLCBtYW4vc25tcF9hcGkuMy5kZWY6CisKKyAgIFJlbmFtZSBjb25maWcvc2Vzc2lvbiBBUEkgbWFuIHBhZ2VzLCBpbiBsaW5lIHdpdGggb3RoZXIgY29yZSBBUEkKKyAgIHN0cnVjdHVyZS4KKworMjAwOS0wNC0yMSAwOTozMiAgZHRzMTIKKworICAgKiAgbWFuL01ha2VmaWxlLmluLCBtYW4vbWliX2FwaS4zLmRlZiwgbWFuL3BkdV9hcGkuMy5kZWYsICAgCisgICAgICBtYW4vcmVhZF9jb25maWcuMy5kZWYsIG1hbi9zbm1wX2FwaS4zLmRlZiwgbWFuL3ZhcmJpbmRfYXBpLjMuZGVmOgorCisgICBEb2N1bWVudCAob3IgcmVzdHJ1Y3R1cmUpIHRoZSBjb3JlIEFQSSBlbGVtZW50cy4KKyAgIEFsaWduIHRoaXMgb3JnYW5pc2F0aW9uIHdpdGggdGhlIGZpcnN0LWN1dCByZXN0cnVjdHVyaW5nCisgICBvZiB0aGUgbWFpbiBoZWFkZXIgZmlsZXMuCisKKzIwMDktMDQtMjAgMTA6MjMgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBTa2lwIGZpbGUgaGFuZGxlcyB0aGF0IGFyZSB0b28gbGFyZ2UgZm9yIGZkX3NldCB0byBjb3BlIHdpdGguCisgICBBIHNpbXBsZSBmaXggZm9yIHRoZSBpbW1lZGlhdGUgcHJvYmxlbSBhZGRyZXNzZWQgYnkgcGF0Y2gKKyAgICMxNjI3MDQ5LgorCisyMDA5LTA0LTIwIDEwOjE5ICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIFJldmVydCBwYXRjaCAjMTYyNzA0OSAoZXh0ZW5zaW9uIHRvIGRlYWwgd2l0aCBsYXJnZSBmaWxlCisgICBoYW5kbGVycykuCisgICBTZWUgdGhlIGRpc2N1c3Npb24gb24gdGhhdCB0cmFja2VyIGVudHJ5IGZvciBiYWNrZ3JvdW5kIGFzIHRvCisgICB3aHkuCisKKzIwMDktMDQtMjAgMDA6NTkgIGFsZXhfYgorCisgICAqICBSRUFETUUud2luMzIsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgsIHBlcmwvYWdlbnQvYWdlbnQueHMsICAgCisgICAgICB3aW4zMi9Db25maWd1cmUsIHdpbjMyL2xpYmFnZW50L01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZHNwLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbiwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9NYWtlZmlsZS5pbiwgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMuZHNwLCAKKyAgICAgICAgd2luMzIvbmV0c25tcG1pYnNzZGsvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3A6CisKKyAgIHdpbjMyOiBCdWlsZCBmaXhlcyBmb3IgV2luZG93cy4gcGFzcyBhbmQgcGFzc19wZXJzaXN0IHN0aWxsIG5lZWQKKyAgIHRvIGJlIGZpeGVkIHRvIHN1cHBvcnQgQ291bnRlcjY0IG9uIFdpbmRvd3MuCisKKzIwMDktMDQtMjAgMDA6NDggIGFsZXhfYgorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICB3aW4zMjogU3luYyBuZXQtc25tcC1jb25maWcuaC5pbiBhbmQgbmV0LXNubXAtY29uZmlnLmgKKworMjAwOS0wNC0xNyAyMToyMSAgbWFnZnIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MsIGx0bWFpbi5zaCwgbTQvbGlidG9vbC5tNCwgCisgICAgICAgIG00L2x0b3B0aW9ucy5tNCwgbTQvbHRzdWdhci5tNCwgbTQvbHR2ZXJzaW9uLm00OgorCisgICBDSEFOR0VTOiBidWlsZDogVXBncmFkZSBsaWJ0b29sIHZlcnNpb24gdG8gMi4yLjYgaW4gb3JkZXIgdG8gd29yaworICAgYXJvdW5kIGEgYnVnbGV0IHRoYXQgbWFkZSBhdXRvcmVjb25mIC12aWYgZXJhc2UgY29uZmlnLnN1YiBhbmQKKyAgIGNvbmZpZy5ndWVzcy4KKworMjAwOS0wNC0xNCAyMTo1OSAgbWFnZnIKKworICAgKiBzbm1wbGliL3BhcnNlLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMTk3Njc3MjogQ2hhbmdlZCB0aGUgbWliIHBhcnNlciB0byBoYW5kbGUKKyAgIGxvbmcgYmluYXJ5IGFuZCBoZXggc3RyaW5ncy4KKworMjAwOS0wNC0xMSAxMjo1MiAgcnN0b3J5CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIHN1Z2dlc3QgdHJ1bmNhdGlvbiBvZiBDaGFuZ2VMb2cucmVhbGx5YWRkCiAKIDIwMDktMDQtMTAgMjM6MTggIGFsZXhfYgogCkBAIC00MDk1LDcgKzExMjE4LDggQEAKIAogMjAwOS0wNC0xMCAyMTo0NSAgYWxleF9iCiAKLSAgICogd2luMzIvQ29uZmlndXJlOgorICAgKiAgd2luMzIvQ29uZmlndXJlLCB3aW4zMi9kaXN0L1JFQURNRS5idWlsZC53aW4zMi50eHQsICAgCisgICAgICB3aW4zMi9kaXN0L1JFQURNRS50eHQ6CiAKICAgIFdpbjMyOiBNaW5vciBidWlsZCBhbmQgcmVhZG1lIHVwZGF0ZXMuCiAKQEAgLTQxMDcsMjQgKzExMjMxLDI3IEBACiAgICBORVdTOiBXaW4zMjogUEFUQ0ggMjY4NjI0ODogQXBwbGllZCBwYXRjaCBieSBCYXJ0IFZhbiBBc3NjaGUKICAgIHdoaWNoIGZpeGVzIHNldmVyYWwgd2luRXh0RExMIGJ1Z3MuCiAKLTIwMDktMDQtMTAgMjA6MTQgIHJzdG9yeQorMjAwOS0wNC0xMCAyMDoxNyAgcnN0b3J5CiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CiAKLSAgIHJlc3RvcmUgYW5ub3lpbmcgbG9nIG1lc3NhZ2UsIGJ1dCBmaXggY2F1c2Ugb2YgaXQgb24gIWZyZWVic2Qgc3lzdGVtcworICAgcmVzdG9yZSBhbm5veWluZyBsb2cgbWVzc2FnZSwgYnV0IGZpeCBjYXVzZSBvZiBpdCBvbiAhZnJlZWJzZAorICAgc3lzdGVtcwogCiAyMDA5LTA0LTA5IDEyOjI4ICBkdHMxMgogCiAgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNTUwNzMwOiBSZXBvcnQgZXJyb3JzIGZyb20gaXRlcmF0b3ItYmFzZWQgaGFuZGxlcnMuCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE1NTA3MzA6IFJlcG9ydCBlcnJvcnMgZnJvbSBpdGVyYXRvci1iYXNlZAorICAgaGFuZGxlcnMuCiAgICBCYXNlZCBvbiBhIHBhdGNoIHByb3ZpZGVkIGJ5IFdheW5lIEdsYW50egogCiAyMDA5LTA0LTA5IDExOjQxICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmM6CiAKLSAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjEyNDI4ODogRml4IHNldHRpbmcgb2YgdXNtVXNlclByaXZQcm90b2NvbCBhdCBjcmVhdGlvbi4KKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjEyNDI4ODogRml4IHNldHRpbmcgb2YKKyAgIHVzbVVzZXJQcml2UHJvdG9jb2wgYXQgY3JlYXRpb24uCiAgICBMb2dpYyBidWcsIHJlcG9ydGVkIGJ5IFJhbWVzaCBLb3RhYmFnaQogCiAyMDA5LTA0LTA5IDA5OjEyICBkdHMxMgpAQCAtNDE0MSw0NyArMTEyNjgsOTggQEAKICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0g6IDIyNjA4Mjg6IEZpeCBweXRob24gc25tcHdhbGsgbWVtb3J5IGxlYWsKICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEdhYnJpZWxlIE1lc3NpbmVvCiAKKzIwMDktMDQtMDkgMDg6NTggIGR0czEyCisKKyAgICogcGVybC9TTk1QL1NOTVAucG0sIHBlcmwvU05NUC9TTk1QLnhzOgorCisgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMjI3MjM0NzogSW1wbGVtZW50ICJpbXBsaWVkIiBpbiBNSUIgaGFzaAorICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKwogMjAwOS0wNC0wOSAwODo1NCAgZHRzMTIKIAogICAgKiBsb2NhbC9taWIyYy5pdGVyYXRlX2FjY2Vzcy5jb25mOgogCi0gICBDSEFOR0VTOiBtaWIyYzogUEFUQ0g6IDIzMTYxMjc6IEZpeCBidWcgaW4gaXRlcmF0ZV9hY2Nlc3MgZ2VuZXJhdGVkIGNvZGUuCisgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0g6IDIzMTYxMjc6IEZpeCBidWcgaW4gaXRlcmF0ZV9hY2Nlc3MKKyAgIGdlbmVyYXRlZCBjb2RlLgorCisyMDA5LTA0LTA5IDA4OjQ4ICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL25ldGJzZC5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI0MzU2ODE6IEVuYWJsZSBpZi1taWIgcmV3cml0ZSAod2l0aAorICAgc3lzY3RsIGJhY2tlbmQpIG9uIE5ldEJTRAogCiAyMDA5LTA0LTA5IDA4OjQ0ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmM6CiAKLSAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjQzNTc5MzogU3VwcG9ydCA2NC1iaXQgSUYtTUlCIGNvdW50ZXJzIG9uIHN5c2N0bCAoKkJTRCkgc3lzdGVtcy4KKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjQzNTc5MzogU3VwcG9ydCA2NC1iaXQgSUYtTUlCIGNvdW50ZXJzIG9uCisgICBzeXNjdGwgKCpCU0QpIHN5c3RlbXMuCiAgICBQYXRjaCBwcm92aWRlZCBieSBKYW4gQW5kcmVzCiAKKzIwMDktMDQtMDkgMDg6MDAgIHRhbmRlcnMKKworICAgKiBwZXJsL2FnZW50L2FnZW50LnhzOgorCisgICBmaXggY29tcGlsYXRpb24gd2FybmluZ3MKKworMjAwOS0wNC0wOCAyMzoxNyAgdGFuZGVycworCisgICAqIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIG1vdmUgY29tbWVudHMgdG8gYSBwbGFjZSB3aGVyZSB0aGV5IGFyZSBsZWdhbAorCisyMDA5LTA0LTA4IDIzOjAzICB0YW5kZXJzCisKKyAgICogcGVybC9hZ2VudC9hZ2VudC5wbSwgcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgLSByZW5hbWUgbmV3IGdldFJlcXVlc3RvcklwIHRvIGdldFNvdXJjZUlQIGFuZCBnZXRUYXJnZXRJcCB0bworICAgZ2V0RGVzdElwCisgICAtIHJlbWluZCB0aGF0IHRoaXMgaXMgZnVsbHkgdHJhbnNwb3J0LXNwZWNpZmljLCBpLmUuIFVEUC9JUHY0CisgICBvbmx5IQorCiAyMDA5LTA0LTA4IDE2OjAwICBkdHMxMgogCiAgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyMzg0Nzc5OiBGaXggaGFuZGxpbmcgb2YgR2V0QnVsayB3aXRoIE4+MCxNPT0wCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDIzODQ3Nzk6IEZpeCBoYW5kbGluZyBvZiBHZXRCdWxrIHdpdGgKKyAgIE4+MCxNPT0wCiAgICBQYXRjaCBwcm92aWRlZCBieSBBbmd1cyBTYWxrZWxkCiAKIDIwMDktMDQtMDggMTU6NTIgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgogCi0gICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI0MDYzNzg6IEZpeCBoclNXUnVuUGVyZk1lbSBvbiA2NC1iaXQgU29sYXJpcyBzeXN0ZW1zCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI0MDYzNzg6IEZpeCBoclNXUnVuUGVyZk1lbSBvbiA2NC1iaXQKKyAgIFNvbGFyaXMgc3lzdGVtcwogICAgUGF0Y2ggcHJvdmlkZWQgYnkgTlR3b08KIAogMjAwOS0wNC0wOCAxNTo0OCAgZHRzMTIKIAogICAgKiBzbm1wbGliL21pYi5jOgogCi0gICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMjQ3OTcwMDogRml4IHpvbmVkIElQIGFkZHJlc3MgdXNlZCBhcyB0YWJsZSBpbmRpY2VzCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMjQ3OTcwMDogRml4IHpvbmVkIElQIGFkZHJlc3MgdXNlZCBhcworICAgdGFibGUgaW5kaWNlcwogICAgUGF0Y2ggcHJvdmlkZWQgYnkgQnJpYW4gUmV0Zm9yZC4KIAogMjAwOS0wNC0wOCAxNTozMyAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgogCi0gICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMjQ5MjM3NzogRml4IHR5cG8vYnVnIGluIHNubXBfZW5hYmxlX2NhbGxiYWNrKCkKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAyNDkyMzc3OiBGaXggdHlwby9idWcgaW4KKyAgIHNubXBfZW5hYmxlX2NhbGxiYWNrKCkKICAgIFJlcG9ydGVkIGJ5IGpveWNlYW5tYWNoaW5lCiAKKzIwMDktMDQtMDggMTU6MjkgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjUwNzI0OTogc2N0cC1taWIgc3VwcG9ydCBmb3IgRnJlZUJTRC4KKwogMjAwOS0wNC0wOCAxNToxNiAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6CkBAIC00MTk0LDcgKzExMzcyLDggQEAKIAogICAgKiBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOgogCi0gICBDSEFOR0VTOiBweXRob246IFBBVENIOiAyNTgwOTc5OiBGaXggcHl0aG9uIHNlc3Npb24gcG9pbnRlcnMgb24gNjQtYml0IHN5c3RlbXMuCisgICBDSEFOR0VTOiBweXRob246IFBBVENIOiAyNTgwOTc5OiBGaXggcHl0aG9uIHNlc3Npb24gcG9pbnRlcnMgb24KKyAgIDY0LWJpdCBzeXN0ZW1zLgogICAgUGF0Y2ggcHJvdmlkZWQgYnkgSm9obiBLaHZhdG92LgogCiAyMDA5LTA0LTA4IDE0OjQ5ICBkdHMxMgpAQCAtNDIwOCw4ICsxMTM4Nyw3IEBACiAyMDA5LTA0LTA4IDE0OjM0ICBkdHMxMgogCiAgICAqICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sICAgCi0gICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMsIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LWMuaW5jLCAKLSAgICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvY29uc3QteHMuaW5jOgorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnhzOgogCiAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIOiAyNzI2MzAyOiBQYXNzIHJlc3VsdHMgb2YgUGVybCB0cmFwCiAgICBoYW5kbGVycyB0byB0cmFwIGRhZW1vbgpAQCAtNDIyMyw2ICsxMTQwMSwxNCBAQAogICAgaGlnaC1BU0NJSSBjaGFycwogICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmFydCBWYW4gQXNzY2hlCiAKKzIwMDktMDQtMDggMTQ6MjQgIGR0czEyCisKKyAgICogcGVybC9hZ2VudC9hZ2VudC5wbSwgcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDI3MDk3MDU6IFJldHJpZXZlIHNyYy90YXJnZXQgSVAgYWRkcmVzcyBpbgorICAgUGVybC1iYXNlZCBhZ2VudHMKKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IGZoZXcKKwogMjAwOS0wNC0wOCAxNDoxNiAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6CkBAIC00MjQ5LDYgKzExNDM1LDI4IEBACiAgICBRbjogRG9lcyB0aGlzIGV2ZW4gcXVhbGlmeSBhcyBhbiBlcnJvcj8gV291bGRuJ3QgYSB3YXJuaW5nIGJlCiAgICBzdWZmaWNpZW50PwogCisyMDA5LTA0LTA2IDE5OjMzICBtYWdmcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oLCBzbm1wbGliL3BhcnNlLmM6CisKKyAgIHNubXBsaWI6IE1ha2UgdGhlIG5vZGUgc3RydWN0IHByaXZhdGUuIEhpZGUgdGhlIG9yaGFuX25vZGVzCisgICB2YXJpYWJsZS4KKworMjAwOS0wNC0wNiAxODo0NSAgbWFnZnIKKworICAgKiBhZ2VudC9zbm1wX3BlcmwuYzoKKworICAgc25tcGQscGVybDogSWYgbXlfcGVybCBpcyBOVUxMIHdoZW4gcGFzc2VkIHRvIHBlcmxfZGVzdHJ1Y3QgdGhlbgorICAgdGhhdCBmdW5jdGlvbiBjcmFzaGVzIGZvciBzb21lIHBlcmwgdmVyc2lvbnMgc28gY2hlY2sgdGhhdCBpdCBpcworICAgbm9uLW51bGwgYmVmb3JlIGRlc3Ryb3lpbmcgaXQuCisKKzIwMDktMDQtMDYgMTg6NDIgIG1hZ2ZyCisKKyAgICogcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgcGVybDogQXZvaWQgc3VycHJpc2VzIGlmIHRoZSBwZXJsIHN0cmluZyBjb250YWlucyBwcmludGYgZXNjYXBlCisgICBjaGFyYWN0ZXJzLgorCiAyMDA5LTA0LTA2IDE4OjIyICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKQEAgLTQyNTcsNyArMTE0NjUsNyBAQAogICAgKEF2b2lkcyB0cnVuY2F0ZWQgd2FsayBvZiBoclNXUnVuUGF0aCBvbiBTdVNFIHN5c3RlbXMpCiAgICBSZXBvcnRlZCBieSBLYW1pbCBLaXNpZWwuCiAKLTIwMDktMDQtMDYgMTI6MDUgIHRhbmRlcnMKKzIwMDktMDQtMDYgMTE6NTggIHRhbmRlcnMKIAogICAgKiBwZXJsL2FnZW50L2FnZW50LnhzLCBwZXJsL2FnZW50L3R5cGVtYXA6CiAKQEAgLTQyNjYsMTEgKzExNDc0LDEwOSBAQAogICAgZ2V0Um9vdE9JRCB3b3JrcyBwcm9wZXJseS4gTm93IHBhc3NlcyAibWFrZSB0ZXN0IiBhbmQgIm1ha2UKICAgIHBlcmx0ZXN0Ii4KIAotMjAwOS0wNC0wNiAxMjowMiAgZHRzMTIKKzIwMDktMDQtMDUgMTA6MDUgIG1hZ2ZyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9saW51eC5jOgorICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgogCi0gICBGaXggdHlwbworICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCisKKzIwMDktMDQtMDUgMDk6NTMgIG1hZ2ZyCisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYywgICAKKyAgICAgIGxvY2FsL21pYjJjLml0ZXJhdGVfYWNjZXNzLmNvbmYsIGxvY2FsL21pYjJjLm5vdGlmeS5jb25mOgorCisgICBNYWtlIGV2ZW4gbW9yZSB2YXJpYWJsZXMgYW5kIHRlbXBsYXRlcyBjb25zdC4KKworMjAwOS0wNC0wNCAyMjoxMyAgbWFnZnIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaCwgCisgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaCwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaCwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaCwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlLmgsCisgICAgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaDoKKworICAgc25tcGQ6IE1ha2UgbW9yZSBsb2NhbCB2YXJpYWJsZXMgY29uc3QgYW5kIGxvY2FsLgorCisyMDA5LTA0LTA0IDEwOjA3ICBtYWdmcgorCisgICAqIGFnZW50L3NubXBkLmMsIGFwcHMvc25tcHRyYXBkLmMsIG5ldC1zbm1wLWNvbmZpZy5pbjoKKworICAgTWFyayB0aGUgcmVjb25maWcgdmFyaWFibGUgYXMgc3RhdGljIHNpbmNlIGl0IGlzIHByaXZhdGUgdG8gdGhlCisgICBtb2R1bGUuCisKKzIwMDktMDQtMDQgMTA6MDMgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmM6CisKKyAgIE1hcmsgdGhlIGZpbGUgc2NvcGUgcHJpdmF0ZSB2YXJpYWJsZSBtaW5pbXVtX3N3YXAgYXMgc3RhdGljLgorCisyMDA5LTA0LTA0IDA5OjU4ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jOgorCisgICBzbm1wbGliOiBNYWtlIG1vcmUgc3ltYm9scyBjb25zdCBpbiBvcmRlciB0byBtb3ZlIHRoZW0gdG8KKyAgIHJlYWRvbmx5IG1lbW9yeS4KIAogMjAwOS0wNC0wMiAyMToyNCAgaGFyZGFrZXIKIApAQCAtNDI3OSw2ICsxMTU4NSwxMjcgQEAKICAgIENIQU5HRVM6IEJVRyAxMTI2OTQ6IFBhdGNoIGZyb20gQmlsbCBGZW5uZXI6IGRvbid0IG9wZW4gKGFuZAogICAgY2xvYmJlcikgYW4gYWdlbnR4IHNvY2tldCBpZiB0aGUgb3RoZXIgdHJhbnNwb3J0cyBmYWlsIHRvIG9wZW4KIAorMjAwOS0wNC0wMSAyMzo0MSAgaGFyZGFrZXIKKworICAgKiBDSEFOR0VTLCBORVdTOgorCisgICB2ZXJzaW9uIHVwZGF0ZQorCisyMDA5LTA0LTAxIDIzOjE5ICBoYXJkYWtlcgorCisgICAqIENoYW5nZUxvZzoKKworICAgdmVyc2lvbiB1cGRhdGUKKworMjAwOS0wNC0wMSAyMzowNCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsICAgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisKKyAgIG1ha2UgZGVwZW5kCisKKzIwMDktMDQtMDEgMjM6MDMgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9wYXJzZS5jLCBzbm1wbGliL3NubXBEVExTVURQRG9tYWluLmMsIHNubXBsaWIvc25tcHRzbS5jOgorCisgICBjb252ZXJ0IGNvbW1lbnRzIHRvIEFOU0kgY29tbWVudHMKKworMjAwOS0wNC0wMSAyMjoyMSAgaGFyZGFrZXIKKworICAgKiAgbWFuL01ha2VmaWxlLmluLCBtYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIG1hbi9uZXRzbm1wX3RhYmxlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKworICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKworMjAwOS0wNC0wMSAyMjowMyAgaGFyZGFrZXIKKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAorICAgICAgZGlzdC9tYWtlcmVsZWFzZS54bWwsIGRpc3QvbmV0LXNubXAuc3BlYzoKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisKKzIwMDktMDQtMDEgMjE6NTggIGhhcmRha2VyCisKKyAgICogbWFuL3NubXAuY29uZi41LmRlZiwgbWFuL3NubXBkLjguZGVmOgorCisgICB1cGRhdGVzIGZvciBTU0gKKworMjAwOS0wNC0wMSAxOTozOSAgbWFnZnIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBNYWtlIHRoZSBzcmMgcG9pbnRlciBvZiBzbm1wX2Nsb25lX21lbSBhIHBvaW50ZXIgdG8gY29uc3RhbnQuCisKKzIwMDktMDQtMDEgMTg6MjMgIGhhcmRha2VyCisKKyAgICogYXBwczoKKworICAgaWdub3JlICdzc2h0b3NubXAnCisKKzIwMDktMDQtMDEgMTc6MzEgIGhhcmRha2VyCisKKyAgICogIGFwcHMvc3NodG9zbm1wLmMsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgsICAgCisgICAgICBtYW4vc25tcGQuOC5kZWYsIHNubXBsaWIvc25tcFNTSERvbWFpbi5jOgorCisgICBNYWtlIHNzaCB0cmFuc3BvcnQgc3VwcG9ydCB1c2UgYSB1bml4IHNvY2tldCB3aXRoIHByb3BlcgorICAgY3JlZGVudGlhbCBwYXNzaW5nCisKKzIwMDktMDQtMDEgMTc6MjkgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jOgorCisgICBtYWtlIHRoZSBleGVjIGNhY2hlIHJlYWRhYmxlIG9ubHkgYnkgdGhlIHVzZXIKKworMjAwOS0wNC0wMSAxNzoyOCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaCwgc25tcGxpYi9zeXN0ZW0uYzoKKworICAgbW92ZSBzdHJpbmcgdG8gdWlkL2dpZCBmdW5jdGlvbmFsaXR5IHRvIHNubXBsaWIgZm9yIHJldXNlCisKIDIwMDktMDMtMzEgMTU6MTIgIGR0czEyCiAKICAgICogbG9jYWwvbWliMmMudGFibGVfZGF0YS5jb25mOgpAQCAtNDMwMCw2ICsxMTcyNyw5MyBAQAogCiAgICBDIGNvbW1lbnRzIHVzZSAvKiAuLi4gKi8sIG5vdCAjCiAKKzIwMDktMDMtMzEgMDg6MDUgIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYzoKKworICAgRml4IGNvbXBpbGF0aW9uIHdpdGggZ2xpYmMgPCAyLjQsIElDTVB2NiBtZXNzYWdlIHR5cGVzIHN0YXJ0aW5nCisgICB3aXRoIE1MRF8qIGhhdmUgZGlmZmVyZW50IG5hbWUgdGhlcmUuCisKKzIwMDktMDMtMjQgMDY6MDQgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zbm1wX29wZW5zc2wuYzoKKworICAgRG8gbm90IGNvbXBpbGUgdGhlIHBhcnRzIHRoYXQgZGVwZW5kIG9uIGxpYnNzbCBpZiBsaWJzc2wgaXMKKyAgIG1pc3NpbmcuCisKKzIwMDktMDMtMjMgMDk6MjEgIGpzYWZyYW5laworCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oLCAKKyAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmg6CisKKyAgIE5FV1M6IHNubXBkOiBpcE5ldFRvUGh5c2ljYWxMYXN0VXBkYXRlZCBPSUQgaW1wbGVtZW50ZWQKKyAgIAorICAgVGhlIHZhbHVlIGlzIGVzdGltYXRlZCB3aXRoIGV2ZXJ5IGNhY2hlIHJlbG9hZCwgd2hpY2ggaXMgb25jZSBpbgorICAgNjAgc2Vjb25kcyBieSBkZWZhdWx0LgorICAgVGhhdCBtZWFucyB0aGUgdmFsdWUgcmVwb3J0ZWQgYnkgc25tcGQgbWF5IGRpZmZlciBmcm9tIHJlYWxpdHkgYnkKKyAgIG9uZSBtaW51dGUuCisgICBJZiBhbnlib2R5IG5lZWRzIGJldHRlciBwcmVjaXNpb24sIHRoZSBjYWNoZSB0aW1lb3V0IGNhbiBiZQorICAgY29uZmlndXJlZCBieSBzZXR0aW5nCisgICBORVQtU05NUC1BR0VOVC1NSUI6Om5zQ2FjaGVUaW1lb3V0LjEuMy42LjEuMi4xLjQuMzUgdG8KKyAgIGFwcHJvcHJpYXRlIHZhbHVlIGJ5IHNubXBzZXQuCisKKzIwMDktMDMtMjAgMTk6MzggIGhhcmRha2VyCisKKyAgICogZGlzdC9leHRyYWN0bmV3czoKKworICAgZml4IGxhY2sgb2Ygd3JhcHBpbmcgbGluZXMgcHJvYmxlbQorCisyMDA5LTAzLTIwIDE4OjMxICBoYXJkYWtlcgorCisgICAqIE5FV1MsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIGNvbmZpZyBvcHRpb25zLCBldGMsIGZvciBTU0ggYW5kIERUTFMKKworMjAwOS0wMy0yMCAxODoyNCAgaGFyZGFrZXIKKworICAgKiBtYW4vc25tcGNtZC4xLmRlZiwgbWFuL3NubXBkLjguZGVmOgorCisgICBjdXJyZW50bHkgbWluaW1hbCBkb2N1bWVudGF0aW9uIG9uIGR0bHMgYW5kIHNzaAorCisyMDA5LTAzLTIwIDE2OjUwICBoYXJkYWtlcgorCisgICAqICBhcHBzL01ha2VmaWxlLmluLCBhcHBzL3NzaHRvc25tcC5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBzbm1wbGliL3NubXBTU0hEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYzoKKworICAgQWRkZWQgYWxwaGEgc25tcCBvdmVyIHNzaCBzdXBwb3J0CisKKzIwMDktMDMtMjAgMTY6MTYgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wRFRMU1VEUERvbWFpbi5jOgorCisgICBjaGVjayB0aGUgc2VjIG5hbWUgbGVuZ3RoLCBub3QganVzdCB0aGUgY29udGVudHMKKworMjAwOS0wMy0yMCAxNjowMSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXB0c20uYzoKKworICAgc2VxdWVuY2UgcGFyc2luZyBmaXgKKworMjAwOS0wMy0yMCAxNTo1MyAgaGFyZGFrZXIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaCwgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBhZGRlZCBhIG5ldyBmbGFnIHRvIGFsbG93IGZvciBzaWduYWxsaW5nIG9mIGxlZ2FsIGVtcHR5IHBhY2tldHMKKyAgIGZyb20gYSB0cmFuc3BvcnQKKworMjAwOS0wMy0xOCAxOTo0MiAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2xpbnV4LmM6CisKKyAgIE1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSBhZ2Fpbi4KKwogMjAwOS0wMy0xOCAxMDo1MiAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmM6CkBAIC00MzI5LDYgKzExODQzLDIwIEBACiAgICBGaXggdmFsZ3JpbmQgd2FybmluZy4KICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFN0ZXBoZW4gSGVtbWluZ2VyCiAKKzIwMDktMDMtMTcgMjI6NTcgIG1hZ2ZyCisKKyAgICogYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuaDoKKworICAgUEFUQ0g6IDI2ODgzNDI6IGZyb20gIkJhcnQgVmFuIEFzc2NoZSI6IFVzZSBwcm9wZXIgZnVuY3Rpb24KKyAgIHBvaW50ZXJzCisKKzIwMDktMDMtMTMgMjE6MjYgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmM6CisKKyAgIFByb2Nlc3MgaHJNZW1vcnlTaXplIChzY2FsYXIpIHNlcGFyYXRlbHkgZnJvbSBoclN0b3JhZ2VUYWJsZS4KKyAgIFRoaXMgc2ltcGxpZmllcyB0aGUgaGFuZGxlciBjb2RlIHN0cnVjdHVyZS4KKwogMjAwOS0wMy0xMyAyMToyMyAgZHRzMTIKIAogICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jLCAgIApAQCAtNDM1Myw2ICsxMTg4MSwyNyBAQAogICAgKEFuIGFsdGVybmF0aXZlIG1pZ2h0IGJlIHRvIGNyZWF0ZSBhIG5ldyBlbnRyeSBpbnN0ZWFkKS4KICAgIFByb2JsZW0gcmVwb3J0ZWQgYnkgTmljayBIaW5kbGV5CiAKKzIwMDktMDMtMTAgMTU6MjUgIGpzYWZyYW5laworCisgICAqIFJFQURNRS5hZ2VudC1taWJzLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jOgorCisgICBORVdTOiBzbm1wZDogaXBBZGRyZXNzU3BpbkxvY2sgaW1wbGVtZW50ZWQKKworMjAwOS0wMy0wMiAxMToyMyAgZHRzMTIKKworICAgKiBDT1BZSU5HOgorCisgICBGaXggYXR0cmlidXRpb24gb2YgbGF0ZXN0IGNvcHlyaWdodCBub3RpY2UuCisKKzIwMDktMDItMjggMTg6MjEgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBNb3ZlIHRoZSAjZGVmaW5lIGNvbmZpZ18qKC4uLikgZnJvbSBhY2NvbmZpZy5oIHRvIHRoZSBjb25maWd1cmUKKyAgIHNjcmlwdCBzbyB0aGF0IHRoZXkgYXJlIG5leHQgdG8gdGhlIGNvZGUgdGhhdCBoYW5kbGUgdGhlCisgICBjb3JyZXNwb25kaW5nIGNvbmZpZ18qIHRva2VuLgorCiAyMDA5LTAyLTI3IDEzOjIwICBqc2FmcmFuZWsKIAogICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYzoKQEAgLTQzNjIsNiArMTE5MTEsMjAgQEAKICAgIEl0J3MgYmVpbmcgd3JpdHRlbiB0byBsb2cgZXZlcnl0aW1lIHNvbWVvbmUgcXVlcmllcwogICAgVUNELVNOTVAtRElTS0lPIE1JQi4KIAorMjAwOS0wMi0yNSAwNjo0MSAgbWFnZnIKKworICAgKiBhcHBzL3NubXBuZXRzdGF0L2lmLmM6CisKKyAgIFVzZSB0aGUgZmVhdHVyZSB0ZXN0IG1hY3JvcyB0byBzZXQgd2hhdCBpcyBuZWVkZWQuCisgICBEbyBub3QgdXNlIHRoZSBpbnRlcm5hbCBHTlUgbGliYyBtYWNyb3MgdGhhdCBhcmUgc2V0IGJ5IHNldHRpbmcKKyAgIHRoZSBmZWF0dXJlIHRlc3QgbWFjcm9zLgorCisyMDA5LTAyLTI1IDA2OjM4ICBtYWdmcgorCisgICAqIHNubXBsaWIvc25tcFVuaXhEb21haW4uYzoKKworICAgQWRkIG1pc3NpbmcgaW5jbHVkZS4KKwogMjAwOS0wMi0yNCAwNzoyNiAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgpAQCAtNDM2OSwyNyArMTE5MzIsOTQgQEAKICAgIENIQU5HRVM6IE1ha2UgLUxOIHN0b3AgZHVtcGluZyBjb3JlLiBNYWtlIGJhZCBkZWJ1ZyBsZXZlbHMgcmVwb3J0CiAgICB0aGUgb2ZmZW5kaW5nIHN5bWJvbC4KIAotMjAwOS0wMi0xOCAxNToyNyAganNhZnJhbmVrCisyMDA5LTAyLTI0IDA2OjUwICBtYWdmcgogCi0gICAqICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5jLCAgIAorICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgsICAgCisgICAgICBzbm1wbGliL3NubXBVbml4RG9tYWluLmM6CisKKyAgIE1vdmUgdGhlIGRpcmVjdG9yeSBjcmVhdGlvbiBjb2RlIHRvIGhhcHBlbiBhZnRlciB0aGUgZG9tYWluCisgICBzZWxlY3Rpb24gY29kZSBzbyB0aGF0IHRoZSBkaXJlY3RvcnkgY3JlYXRpb24gY29kZSBrbm93cyB3aGF0CisgICBkaXJlY3RvcnkgdG8gY3JlYXRlLgorCisyMDA5LTAyLTI0IDA2OjQ3ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIENoYW5nZSB0aGUgZXJyb3IgY2hlY2tpbmcgb3B0aW9uIC0tZW5hYmxlLW15c3FsIHRvIHN1Z2dlc3QgdGhhdAorICAgdGhhdCAtLXdpdGgtbXlzcWwgaXMgdXNlZCByYXRoZXIgdGhhdCAtLXdpdGgtb3BlbnNzbC4KKworMjAwOS0wMi0yNCAwNjo0NCAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFJlZ2VuZXJhdGUgYXV0b2NvbmYgYXJ0aWZhY3RzLgorCisyMDA5LTAyLTIzIDE4OjQzICByc3RvcnkKKworICAgKiBhcHBzL3NubXB0cmFwZF9zcWwuYzoKKworICAgYWRkIGZvcmdvdHRlbiBmaWxlCisKKzIwMDktMDItMjAgMDQ6NDEgIGhhcmRha2VyCisKKyAgICogIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50LCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIsIAorICAgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9pcHY2X3R5cGVzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGF0aHMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3R5cGVzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIGFkZGVkIGVtYWNzIGF1dG9jb25mIG1vZGUgc3BlY2lmaWVyCisKKzIwMDktMDItMTkgMTg6MzIgIHJzdG9yeQorCisgICAqIFJFQURNRS5zcWwsIG1hbi9zbm1wdHJhcGQuY29uZi41LmRlZjoKKworICAgZG9jdW1lbnQgbmV3IHNxbCB0cmFwIGxvZ2dpbmcKKworMjAwOS0wMi0xOSAxODoyMCAgcnN0b3J5CisKKyAgICogIENPUFlJTkcsIE5FV1MsIGFwcHMvTWFrZWZpbGUuaW4sIGFwcHMvc25tcHRyYXBkLmMsICAgCisgICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5oLCBjb25maWd1cmUsICAKKyAgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAgIAorICAgICAgZGlzdC9zY2hlbWEtc25tcHRyYXBkLnNxbCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTkVXUzogc25tcHRyYXBkOiBhZGQgdHJhcCBoYW5kbGVyIGZvciBsb2dnaW5nIHRyYXBzIHRvIGEgbXlzcWwKKyAgIGRhdGFiYXNlCisKKzIwMDktMDItMTkgMTc6NTggIHJzdG9yeQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgsIHNubXBsaWIvY29udGFpbmVyLmMsICAgCisgICAgICBzbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYzoKKworICAgTkVXUzogc25tcGxpYjogYWRkZWQgaXRlcmF0b3IgZm9yIHNpbmdseSBsaW5rZWQgbGlzdHM7IGFkZAorICAgY29udGFpbmVyIG5hbWUgaW4gbW9yZSBlcnJvciBtc2dzCisKKzIwMDktMDItMTggMTg6NTIgIHJzdG9yeQorCisgICAqIGFwcHMvc25tcHVzbS5jLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmg6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IGNoYW5nZSBNQVhfRU5HSU5FSURfTEVOR1RIIHRvIDMyLCBwZXIKKyAgIFNOTVAtRlJBTUVXT1JLLU1JQiBTbm1wRW5naW5lSUQgVEMKKworMjAwOS0wMi0xOCAxNDo0MSAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmMsICAgCiAgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oLCAgIAogICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jOgogCi0gICBGaXggc2N0cC1taWIgY29tcGlsYXRpb24gcHJvYmxlbXMKLQotMjAwOS0wMi0xOCAxNToyNyAganNhZnJhbmVrCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmg6Ci0KLSAgIEJhY2twb3J0IGdldF9waWRfZnJvbV9pbm9kZSBmcm9tIHRydW5rLCBpdCdzIG5lZWRlZCBieSBzY3RwLW1pYgorICAgQ29uZmlndXJlIHNjcmlwdCBkb2VzIG5vdCBsaWtlIG5ldC1zbm1wLWNvbmZpZy5oIGJlaW5nIGluY2x1ZGVkCisgICBmcm9tIGhlYWRlcgorICAgZmlsZXMsIHdoaWNoIGFyZSBhZGRlZCBieSAtLXdpdGgtbWliLW1vZHVsZXM9LCBsZXQncyByZW1vdmUgaXQKKyAgIGZyb20gdGhlcmUuCiAKIDIwMDktMDItMTYgMjE6MjQgIGhhcmRha2VyCiAKQEAgLTQzOTgsNiArMTIwMjgsMTAxIEBACiAgICBDSEFOR0VTOiBwZXJsOiBCVUcgMTU1NDgxNzogUGF0Y2ggZnJvbSB4YW5jbzogZml4IHRoZSBjbGFzcwogICAgYXNzaWdtZW50IHNvIGdldFJvb3RPSUQgd29ya3MgcHJvcGVybHkuCiAKKzIwMDktMDItMTUgMDc6MjAgIG1hZ2ZyCisKKyAgICogYWNjb25maWcuaDoKKworICAgQ29ycmVjdCBjb3B5L3Bhc3RlIG1pc3Rha2UKKworMjAwOS0wMi0xMiAwMDoyNSAgaGFyZGFrZXIKKworICAgKiAgYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wRFRMU1VEUERvbWFpbi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBtaWJzL05FVC1TTk1QLVRDLnR4dCwgICAKKyAgICAgIHNubXBsaWIvc25tcERUTFNVRFBEb21haW4uYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wdHNtLmM6CisKKyAgIEFuIGVhcmx5IGV4cGVyaW1lbnRhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRFRMUyBvdmVyIFVEUAorICAgdHJhbnNwb3J0IGZyb20gdGhlIElFVEYgSVNNUyB3b3JraW5nIGdyb3VwCisKKzIwMDktMDItMTEgMjM6MzAgIGhhcmRha2VyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgdXBkYXRlZCByZWxlYXNlIGluc3RydWN0aW9ucworCisyMDA5LTAyLTA2IDIxOjM2ICBtYWdmcgorCisgICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKKworICAgTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBhcyBDKysgYWdhaW4uCisKKzIwMDktMDItMDUgMjI6NTYgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYywgY29uZmlndXJlLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zdnI1Lmg6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBBc3N1bWUgdGhhdCB0aGUgdGFyZ2V0IHBsYXRmb3JtIHN1cHBvcnRzIG1lbWNweSwKKyAgIG1lbW1vdmUsIG1lbXNldCwgc3RyY2hyIGFuZCBzdHJyY2hyLgorCisyMDA5LTAyLTA0IDA2OjU3ICBtYWdmcgorCisgICAqICBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIHNubXBsaWIvc25tcF9kZWJ1Zy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYywgc25tcGxpYi9zbnByaW50Zi5jLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTkVXUzogUmVtb3ZlIHN1cHBvcnQgZm9yIHVzZSBvZiB2YXJhcmdzLmguIE5vdyBhc3N1bWVzIHRoYXQKKyAgIHN0ZGFyZy5oIGlzIGF2YWlsYWJsZS4KKworMjAwOS0wMi0wNCAwNjo0OSAgbWFnZnIKKworICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9hZ2VudF90cmFwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oLCBzbm1wbGliL3JlYWRfY29uZmlnLmMsICAgCisgICAgICBzbm1wbGliL3NubXB2My5jOgorCisgICBORVdTOiBzbm1wbGliOiBJbnRyb2R1Y2UgcHJpbnRmLWxpa2UgdmVyc2lvbnMgb2YgY29uZmlnX3BlcnJvcgorICAgYW5kIGNvbmZpZ19wd2FybiAobmV0c25tcF9jb25maWdfZXJyb3IgYW5kIG5ldHNubXBfY29uZmlnX3dhcm4pLgorICAgUmVwbGFjZSBtYW55IGluc3RhbmNlcyBvZiB7IHRtcGJ1ZlsuLi5dOyBzcHJpbnRmKHRtcGJ1ZiwgLi4uKTsKKyAgIGNvbmZpZ19wKih0bXBidWYpOyB9IHdpdGggbmV0c25tcF9jb25maWdfKiguLi4pOworCisyMDA5LTAyLTAzIDE2OjE0ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaDoKKworICAgYWRkIHRoZSByZWdpbmZvIGFuZCBhbmQgc2Vzc2lvbiBwb2ludGVyIHRvIHRoZSBSRUdJU1RFUl9PSUQKKyAgIGNhbGxiYWNrCisKKzIwMDktMDItMDMgMDA6MTggIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczoKKworICAgZml4ZWQgLWxzc2wgY2hlY2sKKwogMjAwOS0wMS0yOSAwODozOCAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CkBAIC00NDA5LDE0ICsxMjEzNCwxNCBAQAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKIAogICAgRml4IHNyYy9kc3QgY29uZnVzaW9uCi0gICBQYXRjaCBwcm92aWRlZCBieSBLcnp5c3p0b2YgT2y/ZHpraQorICAgUGF0Y2ggcHJvdmlkZWQgYnkgS3J6eXN6dG9mIE9sxJlkemtpCiAKIDIwMDktMDEtMjggMDk6MjkgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmM6CiAKICAgIENIQU5HRVM6IEZpeCB0d28gYnVncyB3aXRoIHNtdXggcGFzc3dvcmQgc3VwcG9ydC4KLSAgIFBhdGNoIHN1cHBsaWVkIGJ5IEtyenlzenRvZiBPbL9kemtpCisgICBQYXRjaCBzdXBwbGllZCBieSBLcnp5c3p0b2YgT2zEmWR6a2kKIAogMjAwOS0wMS0yMyAxNDo1MyAganNhZnJhbmVrCiAKQEAgLTQ0MjQsNiArMTIxNDksNTEgQEAKIAogICAgRml4IHBhcnNpbmcgb2YgbGV2ZWwgcmFuZ2VzIGluICctTDxjYXBpdGFsPicuCiAKKzIwMDktMDEtMjAgMTQ6NTEgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzOgorCisgICBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiA8cnBtL3JwbWZpbGV1dGlsLmg+IGJlZm9yZSBpbmNsdWRpbmcKKyAgIGl0LgorCisyMDA5LTAxLTE5IDIwOjUwICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYzoKKworICAgTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCB3aXRob3V0IElQdjYgYWdhaW4uCisKKzIwMDktMDEtMTkgMTU6MDEgIGpzYWZyYW5laworCisgICAqICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmgsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDE5Mjc3NTE6IGZyb20gTWl0c3VydSBDaGluZW46IGltcGxlbWVudAorICAgaWNtcE1zZ1N0YXRzVGFibGUgb24gTGludXgKKworMjAwOS0wMS0xOSAwOTo0MSAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oLCAgIAorICAgICAgbWlicy9VQ0QtU05NUC1NSUIudHh0OgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDI0NDkyMTA6IGFkZCA2NC1iaXQgZGlzayB1c2FnZSBzdGF0aXN0aWNzIHRvCisgICBVQ0QtU05NUC1NSUI6OmRza1RhYmxlCisKKzIwMDktMDEtMTggMDc6NDAgIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgQ0hBTkdFUzogQlVHOiAyMTY4MTgwOiBDaGFuZ2VkIC0tZGlzYWJsZS1yZWVudHJhbnQgdG8gbm90CisgICBhY3RpdmF0ZSB0aGUgcmVlbnRyYW50IGNvZGUgYW5kIG1hZGUgLS1lbmFibGUtcmVlbnRyYW50IGFjY2VwdCBubworICAgdmFsdWVzIG90aGVyIHRoYW4geWVzIGFuZCBuby4gRGlkIHRoZSBzYW1lIGZvcgorICAgLS1lbmFibGUtbWliLWNvbmZpZy1jaGVja3MsIC0tZW5hYmxlLW1pYi1jb25maWctZGVidWcsCisgICAtLXdpdGgtZGVmYXVsdHMsIC0tZW5hYmxlLWRldmVsb3BlciBhbmQgLS1lbmFibGUtdGVzdGluZy1jb2RlIGFzCisgICB3ZWxsLgorCiAyMDA5LTAxLTEzIDA5OjE3ICBqc2FmcmFuZWsKIAogICAgKiBzbm1wbGliL2FzbjEuYzoKQEAgLTQ0MzQsNiArMTIyMDQsNjMgQEAKICAgIGVhY2ggc3ViaWRlbnRpZmllci4gVGhpcyBpcyBub3cgY2hlY2tlZCBhbmQgcGFyc2luZyBvZiBPSUQgZmFpbHMsCiAgICBpZiB0aGlzIGNvbmRpdGlvbiBpcyBub3QgbWV0LgogCisyMDA5LTAxLTExIDIxOjU0ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIENIQU5HRVM6IGJ1aWxkaW5nOiBDaGVjayB0aGF0IHRoZSB0ZW1wLWZpbGUtcGF0dGVybiBlbmRzIGluIDYgWCdzCisgICBhcyBta3N0ZW1wIGFuZCBta3RlbXAgcmVxdWlyZSB0aGF0LgorCisyMDA5LTAxLTExIDIxOjM4ICBtYWdmcgorCisgICAqICBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IEJlIGEgbG90IG1vcmUgc3RyaWN0IG9uIHRoZSB2YWx1ZXMgdGhhdCBhcmUKKyAgIGFjY2VwdGFibGUgZm9yIC0td2l0aC1wZXJzaXN0ZW50LW1hc2sgKG9ubHkgYWxsb3cgdGhyZWUgb2N0YWwKKyAgIGRpZ2l0cykKKworMjAwOS0wMS0xMSAyMDo0MiAgbWFnZnIKKworICAgKiAgYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZSwgICAKKyAgICAgIG00L25ldHNubXBfYXJnLm00OgorCisgICBDSEFOR0VTOiBidWlsZGluZzogV2UgYXJlIGN1cnJlbnRseSB1c2luZyB0aGUgcHJhY3RpY2Ugb2YgYWRkaW5nCisgICBhIG1pcnJvcmluZyBBQ19BUkdfV0lUSC9FTkFCTEUgdG8gZWFjaCBBQ19BUkdfRU5BQkxFL1dJVEguIFRoaXMKKyAgIHBhdGNoIGFkZHMgTkVUU05NUF9BUkdfV0lUSC9FTkFCTEUgbWFjcm9zIHRoYXQgYXV0b21hdGljYWxseSBhZGRzCisgICB0aGUgbWlycm9yIHZhcmlhYmxlIGFuZCB0aGVuIGNvbnZlcnRzIHRoZSBjb25maWd1cmUgbWFjaGluZXJ5IHRvCisgICB1c2UgdGhlbS4KKworMjAwOS0wMS0xMSAyMDozNiAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgorCisgICBNb3ZlIEFDX0RFRklORVMgaW4gY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUgdG8gYmUgbG9jYXRlZCBuZXh0CisgICB0byB0aGUgQUNfQVJHXy4uLiB0aGV5IGRlcGVuZCBvbi4KKworMjAwOS0wMS0xMSAyMDozNCAgbWFnZnIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9tYW51YWwsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgQ2hhbmdlIHRoZSBkZWZhdWx0IHZlcnNpb24gbnVtYmVyIGNoZWNraW5nIHRvIGJlIGVhc2llciB0byByZWFkCisKKzIwMDktMDEtMTEgMTk6MTkgIG1hZ2ZyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgTW92ZSB0aGUgbGFzdCBBQ19BUkdfLi4uJ3MgdG8gY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUuCisKKzIwMDktMDEtMTEgMTk6MDggIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IENoYW5nZSB0aGUgbWFjcm8gZm9yIC0td2l0aC1mZWF0dXJlcy1vZiBmcm9tCisgICBBQ19BUkdfRU5BQkxFIHRvIEFDX0FSR19XSVRIIGluIG9yZGVyIHRvIG1ha2UgdGhlIG9wdGlvbiBiZQorICAgLS13aXRoLWZlYXR1cmVzLW9mLgorCiAyMDA5LTAxLTA4IDEwOjQ1ICBqc2FmcmFuZWsKIAogICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgpAQCAtNDQ0OCwxMiArMTIyNzUsMjA5IEBACiAgICBpbiBzdGFibGUKICAgIGJyYW5jaGVzLiBXZSBub3cgc3VwcG9ydCBib3RoIG9mIHRoZW0uCiAKKzIwMDktMDEtMDggMDM6NTEgIG1hZ2ZyCisKKyAgICogTWFrZWZpbGUudG9wOgorCisgICBEbyBub3QgZGVwZW5kIG9uIHRoZSBleGlzdGFuY2Ugb2YgL2Jpbi9zaC4gQWxzbyBmb2xsb3cgdGhlIGFkdmljZQorICAgb2YgdGhlIGF1dG9jb25mIG1hbnVhbCBhbmQgZmluYWxseSBhbGxvdyBmb3IgbGlidG9vbCB0aGF0IGFkb3B0cworICAgdGhlIGdlbmVyYXRlZCBzY3JpcHQgYWZ0ZXIgdGhlIGNhcGFiaWxpdGllcyBvZiBTSEVMTC4KKworMjAwOS0wMS0wNyAxNjowMiAganNhZnJhbmVrCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczoKKworICAgUmVvcmRlciB0aGUgbmV0aW5ldC9pY21wX3Zhci5oIGFuZCBuZXRpbmV0L2lwX2ljbXAuaCwgdGhlIGxhdGVyCisgICBvbmUgbXVzdCBiZSBjaGVja2VkIGZpcnN0IG9uIEZyZWVCU0QgNworCiAyMDA5LTAxLTA2IDIyOjIzICBoYXJkYWtlcgogCiAgICAqIENPUFlJTkc6CiAKICAgIHVwZGF0ZSBTUEFSVEEgZm9yIDIwMDkKIAorMjAwOS0wMS0wMyAyMDoyMyAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIG00L2FjX3Byb21wdF91c2VyLm00OgorCisgICBVcGdyYWRlIHRoZSBBQ19QUk9NUFRfVVNFUiBtYWNyb3MgdG8gYXV0b2NvbmYgMi42MyB3aGVyZQorICAgQUNfRkRfTVNHIGlzIGRlcHJlY2F0ZWQgYW5kIEFTX01FU1NBR0VfRkQgaXMgcmVjb21tZW5kZWQuCisKKzIwMDktMDEtMDMgMTQ6MjAgIG1hZ2ZyCisKKyAgICogIGFjaW5jbHVkZS5tNCwgYWNsb2NhbC5tNCwgY29uZmlndXJlLCBtNC9hY19hZGRfc2VhcmNoX3BhdGgubTQsICAgCisgICAgICBtNC9hY19tc2dfY2FjaGUubTQsIG00L2FjX21zZ19tb2R1bGVfZGJnLm00LCAgIAorICAgICAgbTQvYWNfcHJvbXB0X3VzZXIubTQsIG00L25ldHNubXBfc2VhcmNoX2xpYnMubTQ6CisKKyAgIFNwbGl0IGFjaW5jbHVkZS5tNCBpbnRvIHNtYWxsZXIgcGFydHMgYnkgZnVuY3Rpb24uCisKKzIwMDktMDEtMDMgMTQ6MTUgIG1hZ2ZyCisKKyAgICogTWFrZWZpbGUuYW06CisKKyAgIE1ha2UgYXV0b3JlY29uZiB3b3JrIGFnYWluLgorCisyMDA5LTAxLTAzIDE0OjExICBtYWdmcgorCisgICAqICBhY2xvY2FsLm00LCBjb25maWcuZ3Vlc3MsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgaW5zdGFsbC1zaCwgbHRtYWluLnNoLCBtNCwgCisgICAgICAgIG00L2xpYnRvb2wubTQsIG00L2x0b3B0aW9ucy5tNCwgbTQvbHRzdWdhci5tNCwgbTQvbHR2ZXJzaW9uLm00LCAKKyAgICAgICAgbTQvbHR+b2Jzb2xldGUubTQ6CisKKyAgIFVwZGF0ZSB0byBsaWJ0b29sLTIuMi40CisKKzIwMDktMDEtMDMgMTM6MjggIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczoKKworICAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnM6IENoZWNrIGZvciBhIGZ1bmN0aW9uLCBub3QgYSBtYWNyby4KKyAgIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZQorCisyMDA5LTAxLTAzIDAxOjAzICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzOgorCisgICByZXF1aXJlIC1sc3NsOyB3aWxsIGJlIGNoYW5nZWQgbGF0ZXIgdG8gZG8gJ2lmIG5lZWRlZCcKKworMjAwOS0wMS0wMyAwMDoxOSAgbWFnZnIKKworICAgKiAgUkVBRE1FLmFnZW50LW1pYnMsIGFnZW50L21pYmdyb3VwL21pYklJLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5oLCBhZ2VudC9taWJncm91cC90YXJnZXQuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogVW5pZnkgYWxsIHNubXBkIHN0YXRpc3RpYyB2YXJpYWJsZXMgYW5kIG1ha2UgdGhlCisgICBoYW5kbGVycyBpbnN0YW5jZXMgb2YgYSBjb21tb24gaGFuZGxlci4KKworMjAwOS0wMS0wMSAxNzoyNiAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXB0c20uYzoKKworICAgY2xlYW4gdXAgYSBmZXcgY29tbWVudHMgYW5kIHJlbW92ZSB1bnVzZWQgZnVuY3Rpb24KKworMjAwOS0wMS0wMSAxNzoyNSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXB0c20uYzoKKworICAgZml4IHZhcmlvdXMgbWlub3IgbWVtb3J5IGxlYWsgaXNzdWVzCisKKzIwMDktMDEtMDEgMTQ6MjggIG1hZ2ZyCisKKyAgICogIGFnZW50L2FnZW50X2hhbmRsZXIuYywgYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMsIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oLCBsb2NhbC9taWIyYy1jb25mLmQvbWZkLXRvcC5tMmMsIAorICAgICAgICBsb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmYsIGxvY2FsL21pYjJjLmNvbnRhaW5lci5jb25mLCAgIAorICAgICAgbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZiwgbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmYsICAgCisgICAgICBsb2NhbC9taWIyYy5pdGVyYXRlLmNvbmYsIGxvY2FsL21pYjJjLml0ZXJhdGVfYWNjZXNzLmNvbmYsICAgCisgICAgICBsb2NhbC9taWIyYy5yb3cuY29uZiwgbG9jYWwvbWliMmMuc2NhbGFyLmNvbmYsICAgCisgICAgICBsb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmY6CisKKyAgIE5FV1M6IHNubXBsaWI6IENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgb2lkIGFyZ3VtZW50cyBmcm9tIG9pZCogdG8KKyAgIGNvbnN0IG9pZCouIFVwZGF0ZSBtaWIyYyB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgY2hhbmdlLgorCisyMDA5LTAxLTAxIDEzOjU2ICBtYWdmcgorCisgICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYzoKKworICAgQ2hlY2sgcmV0dXJuIHZhbHVlcyBhbmQgZnJlZSBhbGxvY2F0ZWQgcmVzb3VyY2VzIG9uIGVycm9yLgorCisyMDA5LTAxLTAxIDEyOjU0ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKKworICAgRG8gbm90IGxlYWsgYWxpYXNfbGlzdCBvbiByZXR1cm4gZnJvbSBfbmV4dF9hbGlhcy4KKworMjAwOS0wMS0wMSAxMToyNiAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIE1ha2UgdmFyaWFibGUgY29uc3QgYXMgaXQgbmV2ZXIgaXMgY2hhbmdlZC4KKworMjAwOS0wMS0wMSAxMToyNSAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYzoKKworICAgUmVtb3ZlIGFuIHVudXNlZCB2YXJpYWJsZS4KKworMjAwOC0xMi0zMSAyMTo0MSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfb3BlbnNzbC5jOgorCisgICBkb24ndCB1c2UgdGhlIGZ1bmN0aW9ucyBpZiB3ZSdyZSBub3QgbGlua2VkIHdpdGggb3BlbnNzbAorCisyMDA4LTEyLTMxIDIwOjU2ICBoYXJkYWtlcgorCisgICAqIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LWMuaW5jLCBwZXJsL1RyYXBSZWNlaXZlci9jb25zdC14cy5pbmM6CisKKyAgIG5ld2VyIHBlcmwgZ2VuZXJhdGVkIHVwZGF0ZXMKKworMjAwOC0xMi0zMSAxODowMiAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIGFkZGVkIGEgZmV3IG1vcmUgcmVjdi9zZW5kIGRlYnVnZ2luZyBzdGF0ZW1lbnRzCisKKzIwMDgtMTItMzEgMTg6MDIgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmM6CisKKyAgIEFsbG93IHF1b3RlZCBzZWN1cml0eSBuYW1lcyBmb3Igb25lcyBjb250YWluaW5nIHNwYWNlcworCisyMDA4LTEyLTMxIDE4OjAxICBoYXJkYWtlcgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9vcGVuc3NsLmgsIHNubXBsaWIvTWFrZWZpbGUuaW4sICAgCisgICAgICBzbm1wbGliL3NubXBfb3BlbnNzbC5jOgorCisgICBhbiBvcGVuc3NsIGluaXRpYWxpemF0aW9uIHdyYXBwZXIKKworMjAwOC0xMi0zMCAwMDowMyAgbWFnZnIKKworICAgKiBhcHBzL3NubXB0ZXN0LmMsIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6CisKKyAgIFVzZSBzbm1wX2R1cGxpY2F0ZV9vYmppZCBpbnN0ZWFkIG9mIHZhcmlvdXMgbWFsbG9jK21lbWNweQorICAgdmFyaWFudHMgaW4gb3JkZXIgdG8gbWFrZSBjbGVhcmVyIGNvZGUuCisKKzIwMDgtMTItMjkgMjM6MzQgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaCwgc25tcGxpYi9hc24xLmM6CisKKyAgIFVzZSBmb3JtYXQgc3RyaW5ncyBmb3IgcHJpbnRmLWxpa2UgZnVuY3Rpb25zLgorICAgUHJlZmVyIHN0cmNweSBvdmVyIHNwcmludGYoZGVzdCwgIiVzIiwgc3JjKQorICAgUHJlZmVyIERFQlVHTVNHVEwoKGZvcm1hdCwgYXJncykpIG92ZXIgc3ByaW50Zihsb2NhbCwgZm9ybWF0LAorICAgYXJncyk7IERFQlVHTVNHVEwoKCIlcyIsIGxvY2FsKSkKKworMjAwOC0xMi0xOCAxNzowNCAgaGFyZGFrZXIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaCwgICAKKyAgICAgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jOgorCisgICBleHBvcnQgb3V0IG9mIHRoZSBmaWxlIHNvbWUgaGVscGZ1bCBnZW5lcmljIHVkcCBmdW5jdGlvbnMKKworMjAwOC0xMi0xNiAwMDoxMyAgaGFyZGFrZXIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaDoKKworICAgY2hhbmdlIGxvY2Fsc20gc2VjdXJpdHkgbW9kZWwgdG8gdHNtIChhbmQgYWRkIDEpCisKIDIwMDgtMTItMTUgMjM6MjUgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5jOgpAQCAtNDQ2MSwxMiArMTI0ODUsNjEgQEAKICAgIFBhdGNoIHRvIGNoYW5nZSBhIHR5cGVkZWYgbmFtZSBmcm9tIGxpbmsgdG8gbm9kZWxpbmsgdG8gYXZvaWQKICAgIG5hbWluZyBjb25mbGljdCBpc3N1ZXMuCiAKLTIwMDgtMTItMDkgMDE6MDEgIGhhcmRha2VyCisyMDA4LTEyLTA5IDAxOjQxICBoYXJkYWtlcgogCi0gICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wbG9jYWxzbS5oLCBzbm1wbGliL3NubXBsb2NhbHNtLmM6CisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6CiAKLSAgIEFzIGFncmVlZCBpbiB0aGUgYWRtaW4gbWVldGluZywgcmVtb3ZlIHRoZSBvbGRlciBzbm1wbG9jYWxzbQotICAgc2VjdXJpdHkgbW9kZWwKKyAgIHVzZSBpbnQzMl90IGluc3RlYWQgb2YgaW50XzMyIHdoaWNoIGRvZXNuJ3Qgd29yayBhdCBhbGwgb24gRjEwCisKKzIwMDgtMTItMDkgMDE6MDcgIGhhcmRha2VyCisKKyAgICogTkVXUzoKKworICAgcmVtb3ZlIHRoZSBub3RlIHRoYXQgd2UgbW92ZWQgdG8gc3ZuLi4uIG9ic29sZXRlIGF0IHRoaXMgcG9pbnQsCisgICB0byBzYXkgdGhlIGxlYXN0CisKKzIwMDgtMTItMDkgMDE6MDUgIGhhcmRha2VyCisKKyAgICogTkVXUzoKKworICAgbWVudGlvbiB0aGUgVFNNIGltcGxlbWVudGF0aW9uCisKKzIwMDgtMTItMDkgMDA6NTggIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGZsYWcgc29tZSBzdGVwcyBhbmQgbWFuZGF0b3J5CisKKzIwMDgtMTItMDkgMDA6NTcgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaDoKKworICAgcmVtb3ZlIGFjY2lkZW50aWFsIG5ldyBkZWZpbmVzIHRoYXQgYXJlbid0IG5lZWRlZCB5ZXQKKworMjAwOC0xMi0wOSAwMDo1NiAgaGFyZGFrZXIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBsb2NhbHNtLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oLCBzbm1wbGliL3NubXBsb2NhbHNtLmMsICAgCisgICAgICBzbm1wbGliL3NubXB0c20uYzoKKworICAgcmVtb3ZlIG9sZGVyIGxvY2Fsc20gc2VjdXJpdHkgbW9kZWwgYW5kIHJlcGxhY2Ugd2l0aCBhIG5ld2VyIFRTTQorICAgYmFzZWQgb24gdGhlIHVwY29taW5nIElFVEYgc3BlYworCisyMDA4LTEyLTA5IDAwOjUwICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgZml4IGlzc3VlIHdpdGggY29udGV4dCBwcm9iaW5nCisKKzIwMDgtMTItMDQgMTI6MzMgIGpzYWZyYW5laworCisgICAqIGFnZW50L3NubXBkLmMsIGFwcHMvc25tcHRyYXBkLmM6CisKKyAgIERhZW1vbml6ZSBhZnRlciB0cmFuc3BvcnRzIGFyZSBjcmVhdGVkIGFuZCBsaXN0ZW5pbmcgc29ja2V0cyBhcmUKKyAgIGJvdW5kIHRvIGFwcHJvcHJpYXRlIHBvcnRzLiBUaGlzIGFsbG93cyB0byBleGl0IHdpdGggbm96ZXJvIGV4aXQKKyAgIGNvZGUgd2hlbiB0aGUgYmluZGluZyBmYWlscy4KIAogMjAwOC0xMi0wNCAxMTo0NCAganNhZnJhbmVrCiAKQEAgLTQ0NzUsNiArMTI1NDgsNDAgQEAKIAogICAgUHJpbnQgcG9ydHMgYXMgdW5zaWduZWQgbnVtYmVycy4KIAorMjAwOC0xMS0yNCAxOTowOSAgdGFuZGVycworCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMuaDoKKworICAgX19FWFRFTlNJT05TX18gaXMgbm93IGhhbmRsZWQgYnkgY29uZmlndXJlCisKKzIwMDgtMTEtMjIgMTg6MzYgIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudDoKKworICAgRG8gbm90IHRyeSB0byB1c2UgdGhlIG1vZHVsZSBsaXN0IGFzIGEgZmlsZSB0aGF0IHNob3VsZCBiZQorICAgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLCB0aHVzIG1ha2luZyBpdCBwb3NzaWJsZSB0byBidWlsZCBvbgorICAgU29sYXJpcy4KKworMjAwOC0xMS0yMCAyMjozMCAgbWFnZnIKKworICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9hZ2VudF90cmFwLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMsIAorICAgICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jOgorCisgICBSZXBsYWNlIG1lbWR1cCgodV9jaGFyKiopJngsICh1X2NoYXIqKXksIHogKiBzaXplb2Yob2lkKSkgd2l0aCB4CisgICA9IHNubXBfZHVwbGljYXQKKyAgIGVfb2JqaWQoeSwgeikgc2luY2UgdGhlIGxhdGVyIGlzIGVhc2llciB0byByZWFkIGFuZCBleHByZXNzZXMgdGhlCisgICBpbnRlbnRpb24gb2YgdAorICAgaGUgY29kZSBjbGVhcmVyLgorCisyMDA4LTExLTIwIDIyOjAxICBtYWdmcgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgVXNlIG1lbWNweSBpbnN0ZWFkIG9mIG1lbW1vdmUgdG8gY29weSBvaWRzIGFzIGl0IGlzIGtub3duIHRoYXQKKyAgIHRoZSBhcmVhcyBhcmUgbm9ub3ZlcmxhcHBpbmcuCisKIDIwMDgtMTEtMjAgMjA6NTEgIG1hZ2ZyCiAKICAgICogc25tcGxpYi9zbm1wU1RERG9tYWluLmM6CkBAIC00NDg4LDYgKzEyNTk1LDM1IEBACiAgICBDSEFOR0VTOiBEbyBub3QgdXNlICVtIGluIHByaW50Zi1mb3JtYXR0ZWQgc3RyaW5ncyBzaW5jZSAlbSBpbgogICAgcHJpbnRmIGlzIGEgZ2xpYmMgZXh0ZW5zaW9uLgogCisyMDA4LTExLTE2IDIyOjAxICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZS5hYzoKKworICAgQnVtcCB0aGUgcmVxdWlyZWQgYXV0b2NvbmYgdmVyc2lvbiB0byAyLjYzIGFzIHBlciAxNzMwMS4KKworMjAwOC0xMS0xNiAyMTo1NSAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnM6CisKKyAgIFJlbW92ZSBhbiB1bnVzZWQgZnVuY3Rpb24gZnJvbSB0aGUgY29uZmlndXJlIHRlc3QgZm9yIF9fZnVuY19fLgorCisyMDA4LTExLTE2IDIxOjUxICBtYWdmcgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycywgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0LCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTTQgdXNlcyBkbmwsIG5vdCBcIGZvciBsaW5lIGNvbmNhdGVuYXRpb24uCisgICBcIGludHJvZHVjZWQgYSBzcHVyaW91cyBkZWZpbmUgaW4gbmV0LXNubXAtY29uZmlnLmguaW4sIHRodXMgdGhpcworICAgY2hhbmdlLgorICAgUmVyYW4gYXV0b2NvbmYgYW5kIGF1dG9oZWFkZXIuCisKKzIwMDgtMTEtMTMgMjI6MTQgIHRhbmRlcnMKKworICAgKiBjb25maWd1cmU6CisKKyAgIE5FV1M6IGJ1aWxkOiB1cGRhdGUgdG8gYXV0b2NvbmYgMi42MworCiAyMDA4LTExLTEzIDAwOjMwICB0YW5kZXJzCiAKICAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKQEAgLTQ0OTcsMTEgKzEyNjMzLDE3IEBACiAKIDIwMDgtMTEtMTMgMDA6MjYgIHRhbmRlcnMKIAotICAgKiBjb25maWd1cmUuaW46CisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50OgogCiAgICBmaXggdHlwbwogCi0yMDA4LTExLTEzIDAwOjI0ICB0YW5kZXJzCisyMDA4LTExLTEzIDAwOjI2ICB0YW5kZXJzCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQ6CisKKyAgIGZpeCB0eXBvCisKKzIwMDgtMTEtMTMgMDA6MTkgIHRhbmRlcnMKIAogICAgKiBkaXN0L2V4dHJhY3RuZXdzOgogCkBAIC00NTI3LDEyICsxMjY2OSwxMTcgQEAKICAgIE5FV1M6IHNubXBkOiBBcHBseWluZyBwYXRjaCBmcm9tIE1hZ251cyBGcm9tcmVpZGUgdG8gZml4IHRoZQogICAgZ2V0YnVsayBpc3N1ZSByZXBvcnRlZCBieSBPc2NhciBNaXJhLVNhbmNoZXoKIAorMjAwOC0xMC0zMCAyMjozNCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlOgorCisgICByZW1vdmUgdGhlIG9sZGVyIChvYnNvbGV0ZSkgbWFrZXJlbGVhc2Ugc2NyaXB0CisKKzIwMDgtMTAtMjIgMTc6MjQgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jLCBzbm1wbGliL3NubXBfY2xpZW50LmM6CisKKyAgIE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgdGhlIGxpYiB1c2luZyBhIEMrKyBjb21waWxlciBvbmNlIG1vcmUuCisKIDIwMDgtMTAtMjIgMDc6MjkgIGR0czEyCiAKICAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOgogCiAgICBEb24ndCBjbGVhciBzZXNzaW9uIGZsYWdzIHdoZW4gdGVzdGluZyBvbmUgYml0LgogCisyMDA4LTEwLTIxIDIxOjEwICBtYWdmcgorCisgICAqICBBR0VOVC50eHQsIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL3N0YXRpc3RpY3MuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFeHByZXNzaW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJpbnQuYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMsIGFnZW50L21pYmdyb3VwL21pYklJL210YV9zZW5kbWFpbC5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMsIGFnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfYmdwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfb3NwZi5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfcmlwMi5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2hwdXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9ocHV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaCwgbG9jYWwvbWliMmMub2xkLWFwaS5jb25mLCAgIAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9GQVEuaHRtbDoKKworICAgTkVXUzogbWlzYzogUEFUQ0g6IDE3Mzc3Mjc6IGZyb20gam95Y2Vhbm1hY2hpbmU6IEFkZCBhCisgICBORVRTTk1QX09MREFQSV8gcHJlZml4IHRvIHRoZSBhY2Nlc3MgbWFjcm9zIHRoYXQgYXJlIHVzZWQgaW4gdGhlCisgICBvbGQtYXBpIGhlbHBlci4KKyAgIEkgZGlkIGFkZCB0aGUgcHJlZml4IHRvIGFsbCB1c2VycyBpbiBvdXIgY29kZS4KKworMjAwOC0xMC0yMSAyMTowMCAgbWFnZnIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaCwgCisgICAgICAgIHNubXBsaWIvbWliLmMsIHNubXBsaWIvcGFyc2UuYzoKKworICAgTkVXUzogbWlzYzogUEFUQ0g6IDE3Mzc3Mjc6IGZyb20gam95Y2Vhbm1hY2hpbmU6IFJlcGxhY2UgYWxsIHVzZXMKKyAgIG9mIE5FVFNOTVBfQ0xFQU5fTkFNRVNQQUNFIHdpdGggTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMKKwogMjAwOC0xMC0xNiAwOTo1NiAganNhZnJhbmVrCiAKICAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgICAKQEAgLTQ1NDIsNiArMTI3ODksNTEgQEAKICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjA4MjcyNjogY29ycmVjdGx5IHJlcG9ydCBOSUMgc3BlZWRzCiAgICBoaWdoZXIgdGhhbiA0R2JpdC9zCiAKKzIwMDgtMTAtMTYgMDg6MDAgIGpzYWZyYW5laworCisgICAqIG1hbjoKKworICAgU2NyYXRjaCBwcmV2aW91cyBjb21taXQsIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEgdG8gYmUgaWdub3JlZC4KKworMjAwOC0xMC0xNiAwNzozNyAganNhZnJhbmVrCisKKyAgICogbWFuOgorCisgICBBZGQgY29tcGlsZWQgbmV0LXNubXAtY29uZmlnLjEgdG8gc3ZuOmlnbm9yZSBsaXN0CisKKzIwMDgtMTAtMTUgMTI6NTcgIGpzYWZyYW5laworCisgICAqICBSRUFETUUuYWdlbnQtbWlicywgYWdlbnQvbWliZ3JvdXAvaXAtbWliLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgsCisgICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2dldC5oLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2VudW1zLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgsIAorICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfb2lkcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDE3OTcxMTE6IGltcGxlbWVudCBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlCisKKzIwMDgtMTAtMTUgMDk6MjcgIHRhbmRlcnMKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIHBvcnRhYmlsaXR5IGZpeDogYXZvaWQgdmFyaWFibGUgZGVjbGFyYXRpb25zIGluIHRoZSBtaWRkbGUgb2YKKyAgIGNvZGUKKwogMjAwOC0xMC0xNCAxODo1NSAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKQEAgLTQ1NzAsNiArMTI4NjIsMjMgQEAKICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTk3NzQzOTogRml4IHBhc3MvX3BlcnNpc3QgYnVnIHdpdGggU0VUCiAgICBvaWQgdmFsdWUKIAorMjAwOC0xMC0xMiAxNzoyNCAgbWFnZnIKKworICAgKiAgUkVBRE1FLmFnZW50LW1pYnMsIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogUmVpbXBsZW1lbnRhdGlvbiBvZiBzbm1wTVBEU3RhdHMuCisKKzIwMDgtMTAtMTAgMjE6MTMgIGR0czEyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQ6CisKKyAgIENvbnNvbGlkYXRlIGNoZWNrcyBvbiBnZW5lcmFsIE8vUyBjaGFyYWN0ZXJpc3RpY3MKKwogMjAwOC0xMC0wNyAwODo1MCAganNhZnJhbmVrCiAKICAgICogZGlzdC9maW5kLXJlcXVpcmVzOgpAQCAtNDU3NywxOCArMTI4ODYsNzggQEAKICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBCVUc6IDIwOTU5ODM6IGZpeCBzeW50YXggZXJyb3IgaW4KICAgIGZpbmQtcmVxdWlyZXMgaGVscGVyIHNjcmlwdCBhbmQgbWFrZSBpdCBleGVjdXRhYmxlCiAKKzIwMDgtMTAtMDYgMTk6MzEgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg6CisKKyAgIGlmZGVmIHN5cy9wb2xsCisKKzIwMDgtMTAtMDMgMTQ6MTYgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CisKKyAgIHBhdGNoIGZyb20gU2hhY2hhciBTY2hlbWVzaCB0byBmaXggYSBxdW90ZSBlc2NhcGluZworCisyMDA4LTA5LTMwIDIyOjE5ICBoYXJkYWtlcgorCisgICAqIGFwcHMvc25tcHRyYXBkLmM6CisKKyAgIGFkZGVkIGEgbmVlZGVkIHRyYWlsaW5nIG5ld2xpbmUKKwogMjAwOC0wOS0zMCAyMjoxMSAgZHRzMTIKIAogICAgKiBwZXJsL2FnZW50L2FnZW50LnhzOgogCiAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMjAyMjk0ODogRml4IGZvciBDb3VudGVyNjQgaW4gcGVybCBzdWJhZ2VudAogCisyMDA4LTA5LTMwIDIxOjQwICBoYXJkYWtlcgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgLSBORVdTOiBzbm1wbGliOiBJbXBsZW1lbnRlZCBSRkM1MzQzIGNvbnRleHRFbmdpbmVJRCBwcm9iaW5nLgorICAgVGhpcyBhbGxvd3MgZm9yIHByb2Jpbmcgb2YgdGhlIGNvbnRleHRFbmdpbmVJRCB3aXRob3V0IHJlcXVpcmluZworICAgdGhlIFVTTSBzZWN1cml0eSBtb2RlbC4KKyAgIC0gaW1wbGVtZW50ZWQgZW50aXJlbHkgd2l0aGluIHRoZSBsaWJyYXJ5IGZvciBib3RoIGNsaWVudHMgYW5kCisgICBzZXJ2ZXJzLgorCisyMDA4LTA5LTMwIDIxOjMzICBoYXJkYWtlcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oOgorCisgICBBZGQgYSBsb2NhbCBkZWZpbml0aW9uIGZvciBoYXZpbmcgc2VjdXJpdHkgbW9kZWxzIGRlZmluZSB0aGVpcgorICAgb3duCisgICBjb250ZXh0RW5naW5lSUQgcHJvYmUKKworMjAwOC0wOS0zMCAyMTozMSAgaGFyZGFrZXIKKworICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBBZGQgYSBkZWZpbml0aW9uIGZvciB0aGUgU1NIIGRvbWFpbgorCiAyMDA4LTA5LTMwIDIxOjA4ICBkdHMxMgogCiAgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKIAogICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIOiAxMjU3MzQ3OiBOb24tZml4ZWQgc2l6ZSBjb25uZWN0aW9uIGJ1ZmZlcgogCisyMDA4LTA5LTMwIDA3OjMyICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9NYWtlZmlsZS5pbjoKKworICAgTkVXUzogYnVpbGRpbmc6IFBBVENIOiAyMDkxMTU2OiBjb3JyZWN0bHkgZGVjbGFyZSBkZXBlbmRlbmNpZXMgaW4KKyAgIE1ha2VmaWxlLgorICAgJ21ha2UgLWogPE4+JyBzaG91bGQgd29yayBub3cuCisKKzIwMDgtMDktMjQgMjA6NTggIGR0czEyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVyczoKKworICAgSWRlbnRpZnkgd2hlcmUgcGFydGljdWxhciBjaGVja3MgYXJlIGFjdHVhbGx5IHVzZWQKKyAgIChsaWJyYXJ5LCBhZ2VudCwgYXBwbGljYXRpb25zIG9yIG5vdCBhdCBhbGwpCisKIDIwMDgtMDktMjQgMTI6NTMgIGpzYWZyYW5lawogCiAgICAqICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5jLCAgIApAQCAtNDU5Nyw3NyArMTI5NjYsMTMyIEBACiAgICBVc2UgdGhlIGxvbmdlc3QgaW50ZWdlciBmb3IgaW5vZGUgbnVtYmVycyBhbmQgKHBvc3NpYmx5IDY0IGJpdCkKICAgIGNvdW50ZXJzLgogCi0yMDA4LTA5LTA1IDA5OjI3ICBkdHMxMgorMjAwOC0wOS0yMCAwOTowMSAgbWFnZnIKIAotICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsICAgCi0gICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MzOgogCi0gICAtIHZlcnNpb24gdGFnICggNS40LjIgKQorICAgTkVXUzogYnVpbGQ6IERvIG5vdCByZXF1aXJlIHVzZSBvZiAtLXdpdGgtZW5kaWFubmVzcyB3aGVuCisgICBjcm9zcy1jb21waWxpbmcuCiAKLTIwMDgtMDktMDUgMDk6MjcgIGR0czEyCisyMDA4LTA5LTE5IDE1OjE5ICBkdHMxMgogCi0gICAqIENIQU5HRVM6CisgICAqIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlM6CiAKLSAgIHZlcnNpb24gdXBkYXRlCisgICBDb3JyZWN0IGxvY2F0aW9uIG9mIGRvY3VtZW50YXRpb24gZmlsZXMuCiAKLTIwMDgtMDktMDUgMDk6MjUgIGR0czEyCisyMDA4LTA5LTE5IDA1OjI4ICBtYWdmcgogCi0gICAqIENoYW5nZUxvZzoKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKIAotICAgdmVyc2lvbiB1cGRhdGUKKyAgIEFuZCBhZGQgdGhlIGNodW5rIHRoYXQgSSBsb3N0LgogCi0yMDA4LTA5LTA1IDA5OjIwICBkdHMxMgorMjAwOC0wOS0xOSAwNToyMyAgbWFnZnIKIAotICAgKiAgbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgIAotICAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgTW92ZSBtb3JlIHRoaW5ncyBmcm9tIGFjY29uZmlnLmggdG8gdGhlIHRlbXBsYXRlcyBpbiB0aGUKKyAgIGNvbmZpZ3VyZSBpbnB1dCBmaWxlcy4KIAotMjAwOC0wOS0wNSAwOToxNiAgZHRzMTIKKzIwMDgtMDktMTcgMTM6MzEgIGpzYWZyYW5lawogCi0gICAqIGRveHlnZW4uY29uZjoKKyAgICogZGlzdC9maW5kLXJlcXVpcmVzOgogCi0gICAtIHZlcnNpb24gdGFnICggNS40LjIgKQorICAgbWFrZSBmaW5kLXJlcXVpcmVzIGV4ZWN1dGFibGUgc28gaXQncyBhY3R1YWxseSB1c2FibGUgYnkgdGhlCisgICBuZXQtc25tcC5zcGVjCiAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIwMDgtMDktMTcgMTI6MDggIGpzYWZyYW5lawogCi1DaGFuZ2VzOiBWNS40LjEgLT4gVjUuNC4yCisgICAqIG1hbi9NYWtlZmlsZS5pbiwgbWFuL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEuZGVmOgorCisgICBhZGQgbWFuIHBhZ2UgZm9yIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyCisKKzIwMDgtMDktMTYgMTg6MDIgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzEsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNCwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgRnVydGhlciBtaW5pbWl6YXRpb24gb2YgYWNjb25maWcuaAorCisyMDA4LTA5LTExIDIyOjI4ICBtYWdmcgorCisgICAqICBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIE1vdmUgYSBmZXcgbW9yZSB2YXJpYWJsZXMgb3V0IG9mIGFjY29uZmlnLmgKKworMjAwOC0wOS0xMSAyMDozNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTczNzQzOTogZnJvbSBlbWl5OiBhdXRvbWF0aWMgbGluayB1cC9kb3duCisgICB0cmFwcyBvbiBhIHdhbGs7IHN0aWxsIG5lZWQgYSBiZXR0ZXIgaW50ZXJmYWNlIGZvciBtYW51YWxseSBkb2luZworICAgdGhpbmdzIG9uIGFuIG9jY2FzaW9uYWwgYmFzaXMKKworMjAwOC0wOS0xMSAyMDoyNSAgaGFyZGFrZXIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcFVEUERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBORVdTOiBzbm1wbGliOiBQQVRDSDogNzAwNjgxOiBsaW1pdGVkIHN1cHBvcnQgZm9yIFVEUHY0IGJyb2FkY2FzdAorICAgYWRkcmVzc2VzCisKKzIwMDgtMDktMTAgMDY6MzkgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfdHlwZXMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBidWlsZGluZzogVXNlIEFDX0NIRUNLX1RZUEVTIGluc3RlYWQgb2YgYSBob21lZ3Jvd24KKyAgIGFsdGVybmF0aXZlIHRvIGNoZWNrIGZvciB0eXBlcworCisyMDA4LTA5LTA5IDIwOjI3ICBtYWdmcgorCisgICAqIE1ha2VmaWxlLmluOgorCisgICBBZGQgYWxsIHRoZSBwYXJ0cyBvZiBjb25maWd1cmUuYWMgdG8gdGhlIGRlcGVuZGVuY3kgbGlzdAorCisyMDA4LTA5LTA5IDE4OjEzICBoYXJkYWtlcgorCisgICAqIE1ha2VmaWxlLmluOgorCisgICB1cGRhdGUgdG8gcmVmbGVjdCBjb25maWd1cmUuaW4gLT4gY29uZmlndXJlLmFjIGNoYW5nZQorCisyMDA4LTA5LTA5IDE2OjE1ICBoYXJkYWtlcgorCisgICAqIGRpc3QvcGF0bWU6CisKKyAgIGRlZmF1bHQgdG8gLXAwCisKKzIwMDgtMDktMDggMjM6NDEgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wbG9jYWxzbS5jOgorCisgICBjaGVjayBmb3IgYSBzZXNzaW9uIHR1bm5lbGVkIGZsYWcgYmVmb3JlIHJldHVybmluZyBhbgorICAgYXV0aGVudGljYXRpb24gZmFpbHVyZQorCisyMDA4LTA5LTA4IDIzOjM5ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgU2V0IHRoZSB0dW5uZWxlZCBmbGFnIHdoZW4gZGVhbGluZyB3aXRoIGEgdHVubmVsLWJhc2VkIHRyYW5zcG9ydDsKKyAgIGRvbid0IHJlcXVpcmUgYSBzZWN1cml0eUVuZ2luZUlEIGlmIHRoZSBzZWN1cml0eSBtb2RlbCBkb2Vzbid0CisgICBoYXZlIG9uZSAoanVzdCBVU00gbmVlZHMgaXQpCisKKzIwMDgtMDktMDggMjA6MjQgIG1hZ2ZyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaCwgc25tcGxpYi9zbm1wLXRjLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMjA5OTk4NTogQWRkZWQgY29uc3QgcXVhbGlmaWVycyB0byB0aW1lCisgICBjb252ZXJzaW9uIHJvdXRpbnMKIAogMjAwOC0wOS0wNSAwNzo1MSAgZHRzMTIKIApAQCAtNDY4MCw3NiArMTMxMDQsNzUgQEAKIAogICAgKiBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOgogCi0gICBDSEFOR0VTOiBweXRob246IEJVRzogMTg2ODI3ODogUHl0aG9uIHNlZ2ZhdWx0IChpbnRyb2R1Y2VkIGJ5IHIxNjk2MikKKyAgIENIQU5HRVM6IHB5dGhvbjogQlVHOiAxODY4Mjc4OiBQeXRob24gc2VnZmF1bHQgKGludHJvZHVjZWQgYnkKKyAgIHIxNjk2MikKIAotMjAwOC0wOC0yOSAyMToxOSAgZHRzMTIKKzIwMDgtMDktMDMgMTM6NDMgIGR0czEyCiAKLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAgIAotICAgICAgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKIAotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnJjMyApCisgICBDSEFOR0VTOiBidWlsZDogUEFUQ0g6IDIwMDA4NzQ6IENsZWFudXAgdHJhbnNwb3J0IHNlbGVjdGlvbi4KIAotMjAwOC0wOC0yOSAyMToxOCAgZHRzMTIKKzIwMDgtMDktMDMgMTM6MjkgIGR0czEyCiAKLSAgICogQ0hBTkdFUywgTkVXUzoKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob246CiAKLSAgIHZlcnNpb24gdXBkYXRlCisgICBUaWR5IHVwIHBlcmwvcHl0aG9uIGFuZCBPL1MgZGF0YSBzdHJ1Y3R1cmUgdGVzdHMuCiAKLTIwMDgtMDgtMjkgMjE6MTUgIGR0czEyCisyMDA4LTA4LTMxIDE4OjE0ICBkdHMxMgogCi0gICAqIENoYW5nZUxvZzoKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9pcHY2X3R5cGVzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGF0aHMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF90eXBlcywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgogCi0gICB2ZXJzaW9uIHVwZGF0ZQorICAgVGlkeSB1cCAobW9zdCBvZikgdGhlIGluZGl2aWR1YWwgY29tcG9uZW50cyBvZiB0aGUgY29uZmlndXJlCisgICBmcmFtZXdvcmsuCisgICBUaGlzIGlzIG1vc3RseSByZS1pbmRlbnRhdGlvbiwgcmUtY29tbWVudGluZywgYW5kIGEgY2VydGFpbgorICAgYW1vdW50CisgICBvZiBqdWRpY2lvdXMgcmUtb3JkZXJpbmcgb2YgdGhlIHRlc3RzIHdpdGhpbiBpbmRpdmlkdWFsCisgICBzdWItc2NyaXB0LgogCi0yMDA4LTA4LTI5IDIxOjA4ICBkdHMxMgorMjAwOC0wOC0zMSAxNzozMCAgZHRzMTIKIAotICAgKiAgbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgIAotICAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CiAKLSAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisgICBBbm5vdGF0ZSBjb25maWd1cmUgdGVtcGxhdGUgd2l0aCBzdWdnZXN0ZWQgYmVzdCBwcmFjdGljZQorICAgc3RydWN0dXJlLgorICAgTm90ZSB0aGF0IG5vbmUgb2YgdGhlc2UgY2hhbmdlcyBoYXMgYWx0ZXJlZCB0aGUgY29kZSB3aXRoaW4KKyAgICdjb25maWd1cmUnIGl0c2VsZiAob3RoZXIgdGhhbiBhZmZlY3RpbmcgbGluZSBudW1iZXJzKQogCi0yMDA4LTA4LTI5IDIxOjA0ICBkdHMxMgorMjAwOC0wOC0zMSAxNzoyNiAgZHRzMTIKIAotICAgKiBkb3h5Z2VuLmNvbmY6CisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgY29uZmlndXJlLmQsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliLCAKKyAgICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMsIAorICAgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MxLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X2lwdjZfdHlwZXMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9tYW51YWwsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wYXRocywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfdHlwZXMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKIAotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnJjMyApCisgICBORVdTOiBidWlsZDogc3BsaXQgY29uZmlndXJlIHRlbXBsYXRlIGludG8gc2VwYXJhdGUgcGllY2VzLgorICAgKE1vc3RseSkgc2VsZi1jb250YWluZWQsIGFuZCBzaWduaWZpY2FudGx5IGxlc3MgY29uZnVzaW5nIQogCisyMDA4LTA4LTMxIDE3OjIzICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZS5hYywgY29uZmlndXJlLmluOgorCisgICBSZW5hbWUgY29uZmlndXJlIHRlbXBsYXRlIGluIGxpbmUgd2l0aCBjdXJyZW50IGJlc3QgcHJhY3RpY2UuCiAKIDIwMDgtMDgtMjkgMTk6NTQgIGR0czEyCiAKQEAgLTQ3NTcsMTIgKzEzMTgwLDIwIEBACiAKICAgIFJldGFpbiBmaWxlbmFtZXMgd2hpY2ggZG9uJ3QgaW5jbHVkZSB0aGUgZXhwZWN0ZWQgcHJlZml4LgogCisyMDA4LTA4LTI3IDIxOjU1ICB0YW5kZXJzCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3M6CisKKyAgIGlnbm9yZSAubGlicyBkaXJlY3RvcmllcworCiAyMDA4LTA4LTI3IDEzOjM5ICBqc2FmcmFuZWsKIAogICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmM6CiAKICAgIFMvMzkwIHVzZXMgc2xpZ2h0bHkgZGlmZmVyZW50IGZvcm1hdCBvZiB0aGUgL3Byb2MvY3B1aW5mbyBmaWxlOgotICAgcHJvY2Vzc29yIDA6IHZlcnNpb24gPSBGRiwgaWRlbnRpZmljYXRpb24gPSAwNjBBRkUsIG1hY2hpbmUgPSAyMDk0CisgICBwcm9jZXNzb3IgMDogdmVyc2lvbiA9IEZGLCBpZGVudGlmaWNhdGlvbiA9IDA2MEFGRSwgbWFjaGluZSA9CisgICAyMDk0CiAKIDIwMDgtMDgtMjIgMjM6NDcgIHRhbmRlcnMKIApAQCAtNDc3NiwxNCArMTMyMDcsMTggQEAKIAogICAgTkVXUzogYnVpbGQ6IEJVRzogMjAyMzgwMzogQ29tcGlsYXRpb24gcHJvYmxlbXMgb24gSFAtVVggMTEuMzEKICAgIENIQU5HRVM6IGJ1aWxkOiBMaW1pdCB0aGUgdXNlIG9mIF9LRVJORUwgZGVmaW5pdGlvbnMgaW4gY29uZmlndXJlCi0gICB0ZXN0cyB0byBtYXRjaCB0aGUgdXNlIG9mIF9LRVJORUwgaW4gb3VyIGNvZGViYXNlCisgICB0ZXN0cyB0byBtYXRjaCB0aGUgdXNlCisgICBvZiBfS0VSTkVMIGluIG91ciBjb2RlYmFzZQogCiAyMDA4LTA4LTIyIDAwOjE4ICB0YW5kZXJzCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgorICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgogCi0gICBGaXggYnVpbGQgZmFpbHVyZSBvbiBIUC1VWCAxMS4zMTogdXNlIGdldHBhZ2VzaXplKCkgaW5zdGVhZCBvZiBQR1NISUZULgotICAgU3VjY2Vzc2Z1bGx5IHRlc3RlZCBvbiBIUC1VWCAxMC4yMCwgMTEuMDAsIDExLjExLCAxMS4yMyBhbmQgMTEuMzEuCisgICBGaXggYnVpbGQgZmFpbHVyZSBvbiBIUC1VWCAxMS4zMTogdXNlIGdldHBhZ2VzaXplKCkgaW5zdGVhZCBvZgorICAgUEdTSElGVC4KKyAgIFN1Y2Nlc3NmdWxseSB0ZXN0ZWQgb24gSFAtVVggMTAuMjAsIDExLjAwLCAxMS4xMSwgMTEuMjMgYW5kCisgICAxMS4zMS4KIAogMjAwOC0wOC0yMSAxMDowMyAganNhZnJhbmVrCiAKQEAgLTQ3OTEsMzU0NyArMTMyMjYsNTMyOCBAQAogCiAgICBhZGQgU0NUUC1NSUIKIAorMjAwOC0wOC0yMCAxNzozNyAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKKworICAgSGF2ZSBvbmx5IG9uZSB2YXJpYWJsZSBuYW1lZCBwYXNzd2QgaW4gc211eF9hdXRoX3BlZXIuCisKIDIwMDgtMDgtMTkgMjM6MjIgIHRhbmRlcnMKIAogICAgKiBSRUFETUUudHJ1NjQ6CiAKICAgIHVwZGF0ZSBSRUFETUUgZm9yIFRydTY0IGFmdGVyIHRoZSBzZW5kdG8vcmVjdmZyb20gZml4ZXMKIAotMjAwOC0wOC0xOSAyMDozNiAgZHRzMTIKKzIwMDgtMDgtMTkgMjA6MjcgIHRhbmRlcnMKIAotICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsICAgCi0gICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaDoKIAotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnJjMiApCisgICBmaXggc2lnbmlmaWNhbnQgdHlwbwogCi0yMDA4LTA4LTE5IDIwOjM2ICBkdHMxMgorMjAwOC0wOC0xOSAxMzoyNSAgZHRzMTIKIAotICAgKiBDSEFOR0VTLCBORVdTOgorICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmg6CiAKLSAgIHZlcnNpb24gdXBkYXRlCisgICBGb3JjZSB1c2Ugb2YgL3Byb2MvJWQvcHNpbmZvIGludGVyZmFjZSBvbiBTb2xhcmlzLgorICAgVGVtcG9yYXJ5IGhhY2sgd2hpbGUgd2UgaW52ZXN0aWdhdGUgdGhlIGlzc3VlcyB3aXRoCisgICB0aGUga3ZtX3Byb2MoKSBjb2RlLgorICAgCisgICBUaGUgJ2NvbmZpZ19yZXF1aXJlJyBwcm9jZXNzaW5nIGRvZXNuJ3QgY3VycmVudGx5CisgICBwaWNrIHVwIHRoZSBmdWxsICNpZmRlZiBlbnZpcm9ubWVudCwgc28gZGVmYXVsdHMKKyAgIHRvIHVzaW5nIGt2bV9wcm9jKCkuIEknbSBub3QgY29udmluY2VkIHRoaXMgd2FzCisgICB3b3JraW5nIGJlZm9yZSBhbnl3YXksCiAKLTIwMDgtMDgtMTkgMjA6MjYgIGR0czEyCisyMDA4LTA4LTE5IDEzOjE3ICBkdHMxMgogCi0gICAqIENoYW5nZUxvZzoKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfcHNpbmZvLmM6CiAKLSAgIHZlcnNpb24gdXBkYXRlCisgICBGaXggcHJvYmxlbXMgaW4gL3Byb2MvJWQvcHNpbmZvIGludGVyZmFjZSBwcm9jZXNzaW5nLgogCi0yMDA4LTA4LTE5IDIwOjA4ICBkdHMxMgorMjAwOC0wOC0xOSAwODo0NyAgZHRzMTIKIAotICAgKiBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQ6CisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMsIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3M6CiAKLSAgIG1ha2UgZGVwZW5kCisgICBJZ25vcmUgbGlicmFyeSBhbmQgb2JqZWN0IGZpbGVzCiAKLTIwMDgtMDgtMTkgMjA6MDMgIGR0czEyCisyMDA4LTA4LTE5IDA4OjM2ICBkdHMxMgogCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmM6CiAKLSAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisgICBBY3RpdmF0ZSBzdGF0aXN0aWNzIHRoYXQgYXJlIHN1cHBvcnRlZCBvbiBTb2xhcmlzIGFuZC9vciBMaW51eAorICAgSVB2NgogCi0yMDA4LTA4LTE5IDE5OjU1ICBkdHMxMgorMjAwOC0wOC0xOSAwODoxMSAgZHRzMTIKIAotICAgKiBkb3h5Z2VuLmNvbmY6CisgICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgogCi0gICAtIHZlcnNpb24gdGFnICggNS40LjIucmMyICkKLQorICAgSW1wcm92ZWQgdHJhY2luZyBvZiBTTVVYIGF1dGhlbnRpY2F0aW9uIHByb2JsZW1zLgogCiAyMDA4LTA4LTE5IDA4OjA4ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmM6Ci0gICAgIEJldHRlciB0cmFjaW5nIG9mIERpc01hbiBvYmplY3QgcHJvY2Vzc2luZy4KKworICAgQmV0dGVyIHRyYWNpbmcgb2YgRGlzTWFuIG9iamVjdCBwcm9jZXNzaW5nLgogCiAyMDA4LTA4LTE4IDIyOjQzICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaDoKLSAgICAgcmVtb3ZlIGJvZ3VzIHdoaXRlIHNwYWNlCiAKLTIwMDgtMDgtMTggMjI6MzggIHRhbmRlcnMKLQotICAgKiBSRUFETUUuYWdlbnQtbWliczoKLSAgICAgZG9jdW1lbnQgU0NUUC1NSUIgYWRkaXRpb24KKyAgIHJlbW92ZSBib2d1cyB3aGl0ZSBzcGFjZQogCiAyMDA4LTA4LTE4IDIyOjAxICBkdHMxMgogCiAgICAqIHBlcmwvU05NUC9TTk1QLnBtOgotICAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMjAyMTQ0NDogU3VwcG9ydCBTTk1QdjJjIGluIGdldHRhYmxlIHByb2Nlc3NpbmcKKworICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDIwMjE0NDQ6IFN1cHBvcnQgU05NUHYyYyBpbiBnZXR0YWJsZQorICAgcHJvY2Vzc2luZwogCiAyMDA4LTA4LTE4IDIxOjQ0ICBkdHMxMgogCiAgICAqIHNubXBsaWIvc25tcGtzbS5jOgotICAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMjAwMzQ1MDogRml4IGEgY291cGxlIG9mIDY0LWJpdCBwcm9ibGVtcy4KIAotMjAwOC0wOC0xOCAxOTowNSAgdGFuZGVycworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDIwMDM0NTA6IEZpeCBhIGNvdXBsZSBvZiA2NC1iaXQKKyAgIHByb2JsZW1zLgogCi0gICAqIG1pYnMvTWFrZWZpbGUuaW46Ci0gICAgIGZpeCBTQ1RQLU1JQiBpbnN0YWxsCisyMDA4LTA4LTE4IDE0OjMwICBoYXJkYWtlcgogCi0yMDA4LTA4LTE3IDIxOjI5ICBkdHMxMgorICAgKiBhcHBzL3NubXB1c20uYzoKIAotICAgKiBhZ2VudC9taWJncm91cC9zY3RwLW1pYiwgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5oLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmgsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmgsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5jLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmgsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5jLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5oLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24uYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmgsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmMsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jLCBtaWJzL01ha2VmaWxlLmluLAotICAgICBtaWJzL01ha2VmaWxlLm1pYiwgbWlicy9TQ1RQLU1JQi50eHQ6Ci0gICAgIE5FV1M6IHNubXBkOiBQQVRDSDogMjAyMzYzMzogYWRkIFNDVFAtTUlCIGltcGxlbWVudGF0aW9uIChMaW51eCBvbmx5KQorICAgcmV2ZXJ0IDE3MTU3IHNpbmNlIGl0IGJyb2tlIHNvbWV0aGluZworCisyMDA4LTA4LTE4IDA3OjA2ICBqc2FmcmFuZWsKKworICAgKiBSRUFETUUuYWdlbnQtbWliczoKKworICAgYWRkIFNDVFAtTUlCIGltcGxlbWVudGF0aW9uIChMaW51eCBvbmx5KQogCiAyMDA4LTA4LTE3IDIxOjA4ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDIwMjI5MzY6IEZpeCBBZ2VudFggQ291bnRlcjY0IGRlY29kaW5nIG9uCi0gICAgIDY0LWJpdCBhcmNoaXRlY3R1cmVzCisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjAyMjkzNjogRml4IEFnZW50WCBDb3VudGVyNjQgZGVjb2Rpbmcgb24KKyAgIDY0LWJpdCBhcmNoaXRlY3R1cmVzCiAKIDIwMDgtMDgtMTcgMjA6NTAgIGR0czEyCiAKICAgICogYWdlbnQvc25tcGQuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyMDE0MjA0OiBTdXBwb3J0IC1nIHtncm91cG5hbWV9CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjAxNDIwNDogU3VwcG9ydCAtZyB7Z3JvdXBuYW1lfQorCisyMDA4LTA4LTE1IDEzOjQ1ICBoYXJkYWtlcgorCisgICAqIGFwcHMvc25tcHVzbS5jOgorCisgICBORVdTOiBzbm1wdXNtOiBQQVRDSDogMTU5MTM1NTogZnJvbSBwcGFzc2VyYTogQWxsb3cgY2xvbmluZyB0bworICAgZW5naW5lSURzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBhZ2VudCdzIGVuZ2luZUlECisKKzIwMDgtMDgtMTQgMTU6NTQgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9rdm1fcHJvYy5jOgorCisgICBTV1J1biBwcm9jZXNzaW5nIG5lZWRzIGFjY2VzcyB0byB0aGUgaW50ZXJuYWxzIG9mICdzdHJ1Y3QgdXNlcicKKyAgIChTb2xhcmlzKQogCiAyMDA4LTA4LTEzIDEzOjAyICBqc2FmcmFuZWsKIAotICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmM6Ci0gICAgIENvcnJlY3RseSBwYXJzZSBpbnRlcmZhY2UgaW5kZXhlcyBoaWdoZXIgdGhhbiAweGZmLgorICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmVfbGludXguYzoKKworICAgQ29ycmVjdGx5IHBhcnNlIGludGVyZmFjZSBpbmRleGVzIGhpZ2hlciB0aGFuIDB4ZmYuCiAKIDIwMDgtMDgtMTIgMDg6MjcgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKLSAgICAgQ2xvc2UgZmlsZSB3aGVuIHBhcnNpbmcgb2YgL3Byb2MvWFhYL3N0YXR1cyBmYWlscy4KKworICAgQ2xvc2UgZmlsZSB3aGVuIHBhcnNpbmcgb2YgL3Byb2MvWFhYL3N0YXR1cyBmYWlscy4KKworMjAwOC0wOC0xMiAwNzoyNyAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL3NjdHAtbWliLCBhZ2VudC9taWJncm91cC9zY3RwLW1pYi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jLCBtaWJzL01ha2VmaWxlLmluLCAgIAorICAgICAgbWlicy9NYWtlZmlsZS5taWIsIG1pYnMvU0NUUC1NSUIudHh0OgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDIwMjM2MzM6IGFkZCBTQ1RQLU1JQiBpbXBsZW1lbnRhdGlvbiAoTGludXgKKyAgIG9ubHkpCisKKzIwMDgtMDgtMDcgMTA6MDMgIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKKworICAgRml4IGluZXROZXRUb01lZGlhVGFibGUgdGFibGUgcHJvY2Vzc2luZyAtIGNvbnRpbnVlIHdpdGggbmV4dAorICAgZW50cnkgd2hlbiBmaWxsdXBfZW50cnlfaW5mbygpIGZhaWxzLgogCiAyMDA4LTA4LTA3IDA5OjAwICBqc2FmcmFuZWsKIAogICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKLSAgICAgRml4IGRvY3VtZW50YXRpb24gb2YgZXhlYyBzdGF0YW1lbnQgLSBpdCBkb2VzIG5vdCBjYWNoZSByZXN1bHRzIGFueW1vcmUuCi0gICAgIFJlbGF0ZWQgdG8gYnVnIDg4MzEzNAogCi0yMDA4LTA3LTMxIDE2OjQ4ICBkdHMxMgorICAgRml4IGRvY3VtZW50YXRpb24gb2YgZXhlYyBzdGF0YW1lbnQgLSBpdCBkb2VzIG5vdCBjYWNoZSByZXN1bHRzCisgICBhbnltb3JlLiBSZWxhdGVkIHRvIGJ1ZyA4ODMxMzQKIAotICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKLSAgICAgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgotICAgICAtIHZlcnNpb24gdGFnICggNS40LjIucmMxICkKKzIwMDgtMDctMzEgMjM6MzkgIGR0czEyCiAKLTIwMDgtMDctMzEgMTY6NDcgIGR0czEyCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2luZm8uYzoKIAotICAgKiBDSEFOR0VTOgotICAgICB2ZXJzaW9uIHVwZGF0ZQorICAgRml4IGEgdHlwbywgYW5kIGEgYm9ndXMgZmllbGQgbmFtZSBpbiB0aGUgQUlYIHByb2NpbmZvIHN0cnVjdHVyZS4KIAotMjAwOC0wNy0zMSAxNjoxNCAgZHRzMTIKKzIwMDgtMDctMzEgMjM6MzUgIGR0czEyCiAKLSAgICogQ2hhbmdlTG9nOgotICAgICB2ZXJzaW9uIHVwZGF0ZQorICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2t2bV9wcm9jLmM6CiAKLTIwMDgtMDctMzEgMTY6MDUgIGR0czEyCi0KLSAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwKLSAgICAgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6Ci0gICAgIG1ha2UgZGVwZW5kCi0KLTIwMDgtMDctMzEgMTY6MDMgIGR0czEyCi0KLSAgICogbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywKLSAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLAotICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsCi0gICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywKLSAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAotICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsCi0gICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAotICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAotICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKLSAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAotICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsCi0gICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsCi0gICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotICAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgSW5jbHVkZSBtaXNzaW5nIGhlYWRlcnMsIGFuZCBmaXggb25lIGJvZ3VzIGZpZWxkIG5hbWUgaW4gU29sYXJpcworICAgcHJvYyBzdHJ1Y3R1cmUuCiAKIDIwMDgtMDctMzAgMTc6NDAgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6Ci0gICAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDIwMDMxNDQ6IEluY3JlYXNlIHNpemUgb2YgQWdlbnRYIHBhY2tldCBidWlsZCBidWZmZXIKIAotMjAwOC0wNy0zMCAxNzoyOCAgZHRzMTIKLQotICAgKiBuZXQtc25tcC1jb25maWcuaW46Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTY4MTAzNTogZnJvbSBtYWdmcjogaW1wcm92ZSBuZXQtc25tcC1jb25maWcgL2Jpbi9zaCBjb21wYXRpYmlsaXR5Ci0gICAgIEJhY2stcG9ydCBvZiBTVk4gcmV2aXNpb24gMTU5NjEKLQotMjAwOC0wNy0zMCAwOTo1OCAgZHRzMTIKLQotICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYzoKLSAgICAgQ0hBTkdFUzogYWdlbnQ6IEJVRzogMTU1NzM3MjogUmVhbGlnbiBockZTU3RvcmFnZUluZGV4IHdpdGggaHJTdG9yYWdlVGFibGUKKyAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDIwMDMxNDQ6IEluY3JlYXNlIHNpemUgb2YgQWdlbnRYIHBhY2tldAorICAgYnVpbGQgYnVmZmVyCiAKIDIwMDgtMDctMzAgMDc6NTcgIGR0czEyCiAKICAgICogc25tcGxpYi9taWIuYzoKLSAgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAyMDI3ODM0OiBFeHRlbmQgc3RyaW5nIHByaW50IGJ1ZmZlciBieSB0aGUgbWluaW11bSBuZWNlc3NhcnkuCisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMjAyNzgzNDogRXh0ZW5kIHN0cmluZyBwcmludCBidWZmZXIgYnkgdGhlCisgICBtaW5pbXVtIG5lY2Vzc2FyeS4KKworMjAwOC0wNy0yOSAyMzozNCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9jeWd3aW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa3ZtX3Byb2MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fbmxpc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3BzaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcnBzaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jOgorCisgICBGaXggYXNzb3J0ZWQgc2lsbHkgdHlwb3MgLSB1bmJhbGFuY2VkIHBhcmVudGhlc2VzCisgICBhbmQgdGhlIHdyb25nIHR5cGUgZW51bWVyYXRpb24gdmFsdWUgbmFtZXMuCisKKzIwMDgtMDctMjkgMjM6MzEgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jOgorCisgICBFbnN1cmUgc3dydW4gZGF0YSBpcyBhdmFpbGFibGUgZm9yIHRoZSBwclRhYmxlIGNhbGxzLAorICAgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBoclNXUnVuVGFibGUgdG8gdHJpZ2dlciB0aGlzLgogCiAyMDA4LTA3LTI5IDE2OjE5ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOgotICAgICBhKSBGaXggdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBpbiBqdXN0IG9uZSBwbGFjZQotICAgICAobWFrZXMgaXQgZWFzaWVyIHRvIGNoYW5nZSBpZiBuZWNlc3NhcnkpCi0gICAgIGIpIEZpeCB2YXJpb3VzIHVuZm9ydHVuYXRlIGxpbmUtYnJlYWtzICh3aXRoaW4gInBkdS0+ZmxhZ3MiKQorCisgICBhKSBGaXggdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBpbiBqdXN0IG9uZSBwbGFjZQorICAgKG1ha2VzIGl0IGVhc2llciB0byBjaGFuZ2UgaWYgbmVjZXNzYXJ5KQorICAgYikgRml4IHZhcmlvdXMgdW5mb3J0dW5hdGUgbGluZS1icmVha3MgKHdpdGhpbiAicGR1LT5mbGFncyIpCisKKzIwMDgtMDctMjkgMTY6MDUgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaDoKKworICAgSWYgdGhlIHJlLXdyaXR0ZW4gU1dSdW4gbW9kdWxlIGlmIGF2YWlsYWJsZSwgdGhlbiB1c2UgaXQgZm9yCisgICB0aGUgVUNELXNwZWNpZmljIHByVGFibGUgYXMgd2VsbCBhcyB0aGUgaHJTV1J1blRhYmxlLgorICAgQ29uc2lzdGVuY3kgaXMgZ29vZC4uLi4KKworMjAwOC0wNy0yOSAxNToyMyAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYzoKKworICAgU3VwcHJlc3MganVuayBpbiBoclNXUnVuTmFtZSAmIGhyU1dSdW5QYXJhbWV0ZXJzIHZhbHVlcworCisyMDA4LTA3LTI5IDEwOjI3ICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmM6CisKKyAgIFRoZSBjYWNoZS9jb250YWluZXIgcmVsYXRlIHRvIHRoZSBkYXRhIGl0c2VsZiwgc28gc2hvdWxkCisgICBtb3JlIG5hdHVyYWxseSBiZSBoYW5kbGVkIGJ5IHRoZSBkYXRhX2FjY2VzcyBtb2R1bGUsCisgICByYXRoZXIgdGhhbiBhIHBhcnRpY3VsYXIgTUlCIHRhYmxlIG1vZHVsZS4KKworMjAwOC0wNy0yOCAyMToxOCAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmM6CisKKyAgICd1c2VkJyBhbmQgJ2ZyZWUnIGFyZSBub3QgdGhlIHNhbWUgdGhpbmcsIERhdmUuIFBheSBhdHRlbnRpb24gYXQKKyAgIHRoZSBiYWNrLi4uLgogCiAyMDA4LTA3LTI4IDE0OjM5ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jOgotICAgICBDSEFOR0VTOiBhZ2VudDogQlVHOiAyMDIzODAzOiBFbnN1cmUgY29tcGlsYXRpb24gaXMgbm90IGRlcGVuZGVudAotICAgICBvbiBhbiBpcnJlbGV2YW50IGNvbmZpZ3VyZSBjaGFyYWN0ZXJpc3RpYyBmb3IgSFAtVVggMTEKIAotMjAwOC0wNy0yOCAxMTo0MSAgZHRzMTIKLQotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKLSAgICAgTkVXUzogYnVpbGRpbmc6IGFkZCAtLXdpdGgtdGVtcC1maWxlLXBhdHRlcm4gY29uZmlndXJlIG9wdGlvbgotICAgICBCYWNrcG9ydCBvZiBTVk4gcmV2aXNpb24gMTcxMjEKKyAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDIwMjM4MDM6IEVuc3VyZSBjb21waWxhdGlvbiBpcyBub3QgZGVwZW5kZW50CisgICBvbiBhbiBpcnJlbGV2YW50IGNvbmZpZ3VyZSBjaGFyYWN0ZXJpc3RpYyBmb3IgSFAtVVggMTEKIAogMjAwOC0wNy0yOCAxMDo1NiAgZHRzMTIKIAogICAgKiBhcHBzL3NubXBzZXQuYzoKLSAgICAgQ0hBTkdFUzogYXBwczogQlVHOiAxOTY0MTM2OiBEcm9wIE5VTEwgdHlwZSBmcm9tIHNubXBzZXQgdXNhZ2UgbWVzc2FnZS4KKworICAgQ0hBTkdFUzogYXBwczogQlVHOiAxOTY0MTM2OiBEcm9wIE5VTEwgdHlwZSBmcm9tIHNubXBzZXQgdXNhZ2UKKyAgIG1lc3NhZ2UuCisKKzIwMDgtMDctMjUgMTQ6MTkgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC5oLCBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oOgorCisgICBVc2UgJy0tZW5hYmxlLW5ldy1mZWF0dXJlcycgbWVjaGFuaXNtIHRvIGluY2x1ZGUgaHJTVyogcmUtd3JpdGVzCisKKzIwMDgtMDctMjUgMTQ6MTMgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9udWxsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG0uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fY3lnd2luLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2Rhcndpbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9rdm1fcHJvYy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9ubGlzdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9udWxsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcnBzaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jOgorCisgICBQcmVsaW1pbmFyeSBPUy1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YgUnVubmluZyBhbmQgSW5zdGFsbGVkCisgICBTb2Z0d2FyZSBkYXRhIGFjY2Vzcy4KIAogMjAwOC0wNy0yNCAyMzoyMiAgdGFuZGVycwogCiAgICAqIG1hbi9zbm1wY21kLjEuZGVmOgotICAgICBDSEFOR0VTOiBkb2N1bWVudGF0aW9uOiBCVUc6IDIwMjcxMjk6IGZpeCB0eXBvIGluIHNubXBjbWQuMQorCisgICBDSEFOR0VTOiBkb2N1bWVudGF0aW9uOiBCVUc6IDIwMjcxMjk6IGZpeCB0eXBvIGluIHNubXBjbWQuMQorCisyMDA4LTA3LTI0IDEwOjAwICBqc2FmcmFuZWsKKworICAgKiBtYW4vc25tcC5jb25mLjUuZGVmLCBzZWRzY3JpcHQuaW46CisKKyAgIHJlZmxlY3QgZGVmYXVsdCB0ZW1wIGZpbGUgcGF0dGVybiBpbiBtYW4gcGFnZSBpZiBpdCdzIG1vZGlmaWVkIGJ5CisgICAuL2NvbmZpZ3VyZSBzY3JpcHQKKworMjAwOC0wNy0yNCAwODozNiAganNhZnJhbmVrCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIE5FV1M6IGJ1aWxkaW5nOiBhZGQgLS13aXRoLXRlbXAtZmlsZS1wYXR0ZXJuIGNvbmZpZ3VyZSBvcHRpb24KIAogMjAwOC0wNy0yNCAwNjo1MyAganNhZnJhbmVrCiAKICAgICogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODIzODAwOiByZWxlYXNlIGFuZCByZWxvYWQgYWxsIHRyYXAgZGVzdGluYXRpb25zIG9uIFNJR0hVUAorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4MjM4MDA6IHJlbGVhc2UgYW5kIHJlbG9hZCBhbGwgdHJhcAorICAgZGVzdGluYXRpb25zIG9uIFNJR0hVUAorCisyMDA4LTA3LTIyIDE0OjMzICBqc2FmcmFuZWsKKworICAgKiBuZXQtc25tcC1jcmVhdGUtdjMtdXNlci5pbjoKKworICAgZml4IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIHRvIHJ1biB3aXRob3V0IGFyZ3VtZW50cworCisyMDA4LTA3LTIyIDE0OjIxICBqc2FmcmFuZWsKKworICAgKiAgLiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBuZXQtc25tcC1jb25maWcuaW4sICAgCisgICAgICBuZXQtc25tcC1jcmVhdGUtdjMtdXNlci5pbjoKKworICAgTkVXUzogbWlzYzogc2VwYXJhdGUgdXNlciBtYW5hZ2VtZW50IGZyb20gbmV0LXNubXAtY29uZmlnIGludG8KKyAgIG5ldyBuZXQtc25tcC1jcmVhdGUtdjMtdXNlciBzY3JpcHQKIAogMjAwOC0wNy0yMSAxMzo0NCAgZHRzMTIKIAogICAgKiBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYzoKLSAgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDE5NDQ1ODE6IFByb3RlY3QgYWdhaW5zdCBjb3JlIGR1bXBzIHdpdGggbG9uZyBzdHJpbmcgaW5kZXggdmFsdWVzLgogCi0yMDA4LTA3LTE3IDE1OjA3ICBkdHMxMgorICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDE5NDQ1ODE6IFByb3RlY3QgYWdhaW5zdCBjb3JlIGR1bXBzIHdpdGgKKyAgIGxvbmcgc3RyaW5nIGluZGV4IHZhbHVlcy4KIAotICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLAotICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLAotICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6Ci0gICAgIG1ha2UgZGVwZW5kCisyMDA4LTA3LTE4IDE1OjE5ICBoYXJkYWtlcgogCi0yMDA4LTA3LTE3IDE0OjQyICBkdHMxMgorICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKIAotICAgKiBkb3h5Z2VuLmNvbmY6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMi5yYzEgKQorICAgbmV3IHNpZ25pbmcga2V5CiAKIDIwMDgtMDctMTcgMTA6MDUgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMjAxODAzMTogRG9uJ3QgcHJvYmUgZW5naW5lSUQgaW4gaW50ZXJuYWwgbW9uaXRvciBzZXNzaW9ucy4KKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMjAxODAzMTogRG9uJ3QgcHJvYmUgZW5naW5lSUQgaW4gaW50ZXJuYWwKKyAgIG1vbml0b3Igc2Vzc2lvbnMuCisKKzIwMDgtMDctMTAgMTk6MzMgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGZpeCBhIHJlZ2V4cCBxdW90ZQorCisyMDA4LTA3LTEwIDE0OjEyICB0YW5kZXJzCisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzoKKworICAgYnVpbGQgZml4IGZvciBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZSBnZXRhZGRyaW5mbyAoZS5nLiBIUC1VWAorICAgMTEuMCBhbmQgZWFybGllciwgU29sYXJpcyA3IGFuZCBlYXJsaWVyKQogCiAyMDA4LTA3LTEwIDEzOjUwICBhbGV4X2IKIAogICAgKiB3aW4zMi9NYWtlZmlsZS5pbjoKLSAgICAgQ0hBTkdFUzogYnVpbGRpbmc6IEJVRzogMjAxNDUyNjogV2luMzI6IHNubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oIG5vdCBpbnN0YWxsZWQKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IEJVRzogMjAxNDUyNjogV2luMzI6CisgICBzbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaCBub3QgaW5zdGFsbGVkCiAKIDIwMDgtMDctMDYgMTU6MDUgIGFsZXhfYgogCi0gICAqIFJFQURNRS53aW4zMiwgd2luMzIvQ29uZmlndXJlLCB3aW4zMi9idWlsZC5wbCwKLSAgICAgd2luMzIvbmV0c25tcG1pYnNzZGsvTWFrZWZpbGUuaW46Ci0gICAgIENIQU5HRVM6IGJ1bGRpbmc6IEFkZCBzdXBwb3J0IGZvciB3aW5FeHRETEwgdG8gYnVpbGQuYmF0ICh3aW4zMikKKyAgICogIFJFQURNRS53aW4zMiwgd2luMzIvQ29uZmlndXJlLCB3aW4zMi9idWlsZC5wbCwgICAKKyAgICAgIHdpbjMyL2Rpc3QvUkVBRE1FLmJ1aWxkLndpbjMyLnR4dCwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzc2RrL01ha2VmaWxlLmluOgorCisgICBDSEFOR0VTOiBidWxkaW5nOiBBZGQgc3VwcG9ydCBmb3Igd2luRXh0RExMIHRvIGJ1aWxkLmJhdCAod2luMzIpCiAKIDIwMDgtMDctMDYgMTI6MzggIGFsZXhfYgogCiAgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbjoKLSAgICAgV2luMzIgYnVpbGQgZml4ZXMgLSBhZGQgbWlzc2luZyBmdW5jdGlvbiBmb3IgRExMIGJ1aWxkLgorCisgICBXaW4zMiBidWlsZCBmaXhlcyAtIGFkZCBtaXNzaW5nIGZ1bmN0aW9uIGZvciBETEwgYnVpbGQuCiAKIDIwMDgtMDctMDIgMTI6MzkgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDIwMDY3ODY6IEludGVyZmFjZSBuYW1lIGNhbiBoYXZlIG1vcmUgdGhhbiA4IGNoYXJhY3RlcnMuCisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDIwMDY3ODY6IEludGVyZmFjZSBuYW1lIGNhbiBoYXZlIG1vcmUgdGhhbiA4CisgICBjaGFyYWN0ZXJzLgorCisyMDA4LTA2LTI1IDE3OjM5ICB0YW5kZXJzCisKKyAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L2FnZW50X3RyYXAuYywgYXBwcy9zbm1wdHJhcC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oLCBtYW4vc25tcGQuY29uZi41LmRlZiwgICAKKyAgICAgIHBlcmwvU05NUC9TTk1QLnhzLCBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wVURQRG9tYWluLmMsIHNubXBsaWIvc3lzdGVtLmM6CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTkxNjg0MDogbmV3IGNvbmZpZyBvcHRpb24gdG8gc2V0IFNOTVB2MSB0cmFwCisgICBhZ2VudCBhZGRyZXNzCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTkxNjg0MDogaW50cm9kdWNlCisgICBuZXRzbm1wX2dldGhvc3RieW5hbWVfdjQKIAogMjAwOC0wNi0yNSAxNToxNiAganNhZnJhbmVrCiAKICAgICogcGVybC9TTk1QL1NOTVAueHM6Ci0gICAgIGZpeCBhc3NlcnRpb24gd2hlbiB1c2VkIHdpdGggcGVybCA1LjEwCiAKLTIwMDgtMDYtMjQgMjI6MzYgIHRhbmRlcnMKKyAgIGZpeCBhc3NlcnRpb24gd2hlbiB1c2VkIHdpdGggcGVybCA1LjEwCiAKLSAgICogdGVzdGluZy90ZXN0cy9UMDAxc25tcHYxZ2V0LCB0ZXN0aW5nL3Rlc3RzL1QwMTRzbm1wdjJjZ2V0LAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTVzbm1wdjJjZ2V0bmV4dCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDE2MHNubXB2MmNidWxrZ2V0LAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTZzbm1wdjJjZ2V0ZmFpbCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDE3c25tcHYyY3RvdjFnZXRmYWlsLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMThzbm1wdjF0b3YyY2dldGZhaWwsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDAxOXNubXB2MmNub3N1Y2gsIHRlc3RpbmcvdGVzdHMvVDAyMHNubXB2M2dldCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDIxc25tcHYzZ2V0bmV4dCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDIyMHNubXB2M2J1bGtnZXQ6Ci0gICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBEaXNhYmxlIHRlc3RzIGlmIHRoZSBhZ2VudCBpcyBidWlsdCB3aXRob3V0IHRoZSBtaWIgbW9kdWxlIHRoZXkgZGVwZW5kIG9uLgotICAgICBCYWNrcG9ydCBvZiByMTcwODcuCisyMDA4LTA2LTI0IDA1OjAxICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgc25tcGxpYi9zbm1wdXNtLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWIsIHNubXBkOiBCVUc6IDIwMDExMjQ6IEFsbG93IGVtYmVkZGVkIE5VTAorICAgY2hhcmFjdGVycyBpbiB1c21Vc2VyUHVibGljCisKKzIwMDgtMDYtMjMgMTk6NTcgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBPbmx5IHJlc2VydmUgc3BhY2UgZm9yIHRoZSBleHRyYSBcMCBhZnRlciB0aGUgZGF0YSBmb3IgT0NURVQKKyAgIFNUUklORyB2YWx1ZWQgZW50aXRpZXMKKworMjAwOC0wNi0yMyAxOToxMyAgbWFnZnIKKworICAgKiAgdGVzdGluZy90ZXN0cy9UMDAxc25tcHYxZ2V0LCB0ZXN0aW5nL3Rlc3RzL1QwMTRzbm1wdjJjZ2V0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDE1c25tcHYyY2dldG5leHQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTYwc25tcHYyY2J1bGtnZXQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTZzbm1wdjJjZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxN3NubXB2MmN0b3YxZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxOHNubXB2MXRvdjJjZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxOXNubXB2MmNub3N1Y2gsIHRlc3RpbmcvdGVzdHMvVDAyMHNubXB2M2dldCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAyMXNubXB2M2dldG5leHQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjIwc25tcHYzYnVsa2dldDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IERpc2FibGUgdGVzdHMgaWYgdGhlIGFnZW50IGlzIGJ1aWx0IHdpdGhvdXQKKyAgIHRoZSBtaWIgbW9kdWxlIHRoZXkgZGVwZW5kIG9uLgorCisyMDA4LTA2LTIxIDEyOjE0ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBSZW1vdmUgc3B1cmlvdXMgQUNfTVNHX1JFU1VMVCBpbnNpZGUgYW4gQUNfQ0FDSEVfQ0hFQ0sKKworMjAwOC0wNi0xOCAwNTowNyAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKworICAgSGFuZGxlIHNvbGFyaXMgYXdrIGFzIHdlbGwuCisKKzIwMDgtMDYtMTcgMTY6MDEgIHRhbmRlcnMKKworICAgKiBhZ2VudC9hdXRvX25saXN0LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTk5NTc1MzogZnJvbSB2b2xrb3ZfcGV0ZXI6IG1pbm9yIGNsZWFudXAKKyAgIGFnZW50L2F1dG9fbmxpc3QuYwogCiAyMDA4LTA2LTE3IDA4OjU3ICBkdHMxMgogCiAgICAqIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYzoKLSAgICAgRml4IHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gc3ByaW50ZiBmb3IgVENQL0lQdjYKLSAgICAgQ3Jvc3MtcG9ydCBvZiByZXZpc2lvbiAxNjY2OAorCisgICBGaXggcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBzcHJpbnRmIGZvciBUQ1AvSVB2NgorICAgQ3Jvc3MtcG9ydCBvZiByZXZpc2lvbiAxNjY2OAogCiAyMDA4LTA2LTE2IDIzOjU1ICB0YW5kZXJzCiAKICAgICogY29uZmlndXJlLmluOgotICAgICBDSEFOR0VTOiBidWlsZDogQlVHOiAxOTk1MTcyOiBmaXggLS13aXRob3V0LWVsZiBjb25maWd1cmUgdXNhZ2UgbWVzc2FnZQogCi0yMDA4LTA2LTE1IDIyOjE1ICBkdHMxMgorICAgQ0hBTkdFUzogYnVpbGQ6IEJVRzogMTk5NTE3MjogZml4IC0td2l0aG91dC1lbGYgY29uZmlndXJlIHVzYWdlCisgICBtZXNzYWdlCiAKLSAgICogRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsCi0gICAgIHNlZHNjcmlwdC5pbiwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnByZTIgKQotCi0yMDA4LTA2LTE1IDIyOjE0ICBkdHMxMgotCi0gICAqIENIQU5HRVMsIE5FV1M6Ci0gICAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMDgtMDYtMTUgMjE6NTUgIGR0czEyCi0KLSAgICogQ2hhbmdlTG9nOgotICAgICBWZXJzaW9uIHVwZGF0ZQotICAgICAKLSAgICAgQWxzbyBmaXggYWxsIENoYW5nZUxvZyBlbnRyaWVzIHNpbmNlIHRoZSBDVlMtPlNWTiBtb3ZlLAotICAgICB3aGljaCBoYXZlIGJlZW4gb21pdHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBmaWxlcwotICAgICB3ZXJlIGFmZmVjdGVkIGJ5IGFueSBnaXZlbiBjaGFuZ2UuCi0KLTIwMDgtMDYtMTUgMjE6MzIgIGR0czEyCi0KLSAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwKLSAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgotICAgICBtYWtlIGRlcGVuZAotCi0yMDA4LTA2LTE1IDIxOjA2ICBkdHMxMgotCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnByZTIgKQogMjAwOC0wNi0xMyAyMjoxNiAgZHRzMTIKIAogICAgKiBkaXN0L2ZpbmQtcmVxdWlyZXMsIGRpc3QvbmV0LXNubXAuc3BlYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IEltcHJvdmVkIFJQTSBzcGVjIGZpbGVzLCBmb3IgYmV0dGVyIGNvbnNpc3RlbmN5IHdpdGggdmVuZG9yLXByb3ZpZGVkIHBhY2thZ2VzLgotICAgICBQcm92aWRlZCBieSBKYW4gU2FmcmFuZWsKIAotMjAwOC0wNi0xMyAyMTo1NCAgZHRzMTIKLQotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLSAgICAgUmVzdG9yZSBlbWJlZGRlZCBwZXJsIHRvIGRlZmF1bHQgTWFjIE9TL1ggYnVpbGQuCi0gICAgIChyZXZlcnNpbmcgcmV2aXNpb24gMTY5ODgpCisgICBDSEFOR0VTOiBidWlsZDogSW1wcm92ZWQgUlBNIHNwZWMgZmlsZXMsIGZvciBiZXR0ZXIgY29uc2lzdGVuY3kKKyAgIHdpdGggdmVuZG9yLXByb3ZpZGVkIHBhY2thZ2VzLgorICAgUHJvdmlkZWQgYnkgSmFuIFNhZnJhbmVrCiAKIDIwMDgtMDYtMTMgMjE6MDMgIGR0czEyCiAKICAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTg5OTc2MjogVHdlYWsgZW1iZWRkZWRfcGVybCBjb25maWd1cmUgY2hlY2tzLgorCisgICBDSEFOR0VTOiBidWlsZDogUEFUQ0g6IDE4OTk3NjI6IFR3ZWFrIGVtYmVkZGVkX3BlcmwgY29uZmlndXJlCisgICBjaGVja3MuCisKKzIwMDgtMDYtMTMgMDU6NDMgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGFnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIAorICAgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBORVdTOiBidWlsZGluZzogUmV0aXJlIHRoZSBjb25maWdfb2xkL25ld19yZXF1aXJlIGZlYXR1cmUgYW5kCisgICByZXBsYWNlIGl0IHdpdGggY29uZmlnX3ZlcnNpb25fcmVxdWlyZSB0aGF0IGNvbXBhcmVzIHZlcnNpb24KKyAgIG51bWJlcnMgdG8gYWNoaWV2ZSBhIHNpbWlsYXIgdGhpbmcKIAogMjAwOC0wNi0xMiAxMjo1MCAgZHRzMTIKIAogICAgKiBkaXN0L21ha2VyZWxlYXNlOgotICAgICBPbmx5IGFkZCBub24tZGVmYXVsdCBNSUIgbW9kdWxlcyB0byB0aGUgdGVzdCBidWlsZHMuCi0gICAgIFNwZWNpZnlpbmcgdGhlIGhvc3QgbW9kdWxlIGlzIG5vdCBuZWVkZWQgb24gTGludXggc3lzdGVtcywKLSAgICAgYW5kIG1heSBicmVhayBvbiBvdGhlciBPL1NzLiBTcGVjaWZ5aW5nIHRoZSBkaXNtYW4vZXZlbnQKLSAgICAgTUlCIGlzIHVubmVjZXNzYXJ5IG9uIGFueSBzeXN0ZW0uCiAKLTIwMDgtMDYtMTIgMTI6NDUgIGR0czEyCi0KLSAgICogZGlzdC9tYWtlcmVsZWFzZToKLSAgICAgTWlzc2luZyBNRDUgc2lnbmF0dXJlIGZpbGUgZm9yIHppcCByZWxlYXNlCi0KLTIwMDgtMDYtMTIgMTI6NDQgIGR0czEyCi0KLSAgICogZGlzdC9tYWtlcmVsZWFzZToKLSAgICAgQmFzaWMgZG9jdW1lbnRhdGlvbiBhbmQgaGVscC91c2FnZSBtZXNzYWdlcy4KKyAgIE9ubHkgYWRkIG5vbi1kZWZhdWx0IE1JQiBtb2R1bGVzIHRvIHRoZSB0ZXN0IGJ1aWxkcy4KKyAgIFNwZWNpZnlpbmcgdGhlIGhvc3QgbW9kdWxlIGlzIG5vdCBuZWVkZWQgb24gTGludXggc3lzdGVtcywKKyAgIGFuZCBtYXkgYnJlYWsgb24gb3RoZXIgTy9Tcy4gU3BlY2lmeWluZyB0aGUgZGlzbWFuL2V2ZW50CisgICBNSUIgaXMgdW5uZWNlc3Nhcnkgb24gYW55IHN5c3RlbS4KIAogMjAwOC0wNi0xMSAxMDoxNiAgZHRzMTIKIAogICAgKiBkaXN0L21ha2VyZWxlYXNlOgotICAgICBPbmx5IGVuYWJsZSBJUFggdHJhbnNwb3J0IG9uIExpbnV4IHN5c3RlbXMKKworICAgT25seSBlbmFibGUgSVBYIHRyYW5zcG9ydCBvbiBMaW51eCBzeXN0ZW1zCiAKIDIwMDgtMDYtMTAgMTQ6MzcgIGR0czEyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jLAotICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jOgotICAgICBzbm1wZDogUEFUQ0g6IDE5MTgzODM6IEZpeCBEaXNNYW4gbW9uaXRvcmluZyBvZiBBZ2VudFggc3ViYWdlbnRzCi0gICAgIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgdXNlIHRoZSBjb2RlIHN1Ym1pdHRlZCBpbiB0aGF0Ci0gICAgIHBhdGNoLgotICAgICBJbnN0ZWFkIGl0IGluc2VydHMgYSBjYWxsYmFjayBob29rIGludG8gdGhlCi0gICAgIHNubXBfc3luY2hfcmVzcG9uc2VfY2IKLSAgICAgcm91dGluZSAodXNpbmcgdGhlIG15dm9pZCBwb2ludGVyIGFuZCBhIG5ldyBzZXNzaW9uIGZsYWcpLCB3aGljaAotICAgICBoYXMKLSAgICAgdGhlIHNhbWUgZWZmZWN0IHdpdGhvdXQgbmVlZGluZyB0byBkdXBsaWNhdGUgYW55IGNvZGUuCisgICAqICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBzbm1wZDogUEFUQ0g6IDE5MTgzODM6IEZpeCBEaXNNYW4gbW9uaXRvcmluZyBvZiBBZ2VudFggc3ViYWdlbnRzCisgICBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0IGFjdHVhbGx5IHVzZSB0aGUgY29kZSBzdWJtaXR0ZWQgaW4gdGhhdAorICAgcGF0Y2guCisgICBJbnN0ZWFkIGl0IGluc2VydHMgYSBjYWxsYmFjayBob29rIGludG8gdGhlCisgICBzbm1wX3N5bmNoX3Jlc3BvbnNlX2NiCisgICByb3V0aW5lICh1c2luZyB0aGUgbXl2b2lkIHBvaW50ZXIgYW5kIGEgbmV3IHNlc3Npb24gZmxhZyksIHdoaWNoCisgICBoYXMKKyAgIHRoZSBzYW1lIGVmZmVjdCB3aXRob3V0IG5lZWRpbmcgdG8gZHVwbGljYXRlIGFueSBjb2RlLgogCiAyMDA4LTA2LTEwIDEyOjUyICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmM6Ci0gICAgIEZpeCBsb2dpYyBlcnJvcnMgaW4gaGFuZGxpbmcgb2Ygb2xkL2N1cnJlbnQgdmFyYmluZCBsaXN0cy4KLSAgICAgUmVwb3J0ZWQgYnkgRnJlZCBHYW8gaW4gcGF0Y2ggIzE5MTgzODMKIAotMjAwOC0wNi0xMCAxMDo1MSAgZHRzMTIKKyAgIEZpeCBsb2dpYyBlcnJvcnMgaW4gaGFuZGxpbmcgb2Ygb2xkL2N1cnJlbnQgdmFyYmluZCBsaXN0cy4KKyAgIFJlcG9ydGVkIGJ5IEZyZWQgR2FvIGluIHBhdGNoICMxOTE4MzgzCisKKzIwMDgtMDYtMDkgMTk6MDggIGhhcmRha2VyCiAKICAgICogc25tcGxpYi9zY2FwaS5jOgotICAgICB1cGRhdGUgdG8gbWF0Y2ggcHVibGlzaGVkIHJlbGVhc2UKKworICAgdXBkYXRlIHRvIG1hdGNoIHB1Ymxpc2hlZCByZWxlYXNlCisKKzIwMDgtMDYtMDkgMTY6NTggIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGFkZGVkIHNubXBfdmVyc2lvbi5jCiAKIDIwMDgtMDYtMDkgMDk6MDUgIGR0czEyCiAKICAgICogYXBwcy9zbm1wdHJhcC5jLCBhcHBzL3NubXB1c20uYzoKLSAgICAgQSBjb3VwbGUgbW9yZSBtaXNzaW5nIGVycm9yIGNoZWNrcy4KLSAgICAgQmFzZWQgb24gdGhvc2UgcmVwb3J0ZWQgYnkgQm95YSBTdW4KKworICAgQSBjb3VwbGUgbW9yZSBtaXNzaW5nIGVycm9yIGNoZWNrcy4KKyAgIEJhc2VkIG9uIHRob3NlIHJlcG9ydGVkIGJ5IEJveWEgU3VuCiAKIDIwMDgtMDYtMDYgMTI6MDIgIGR0czEyCiAKICAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0gICAgIEJldHRlciBoYW5kbGluZyBvZiBlbWJlZGRlZCBwZXJsIG9uIE1hYyBPUy9YCi0gICAgIChuZWFybHkgd29ya2luZyBvbiBMZW9wYXJkIG5vdykKIAotMjAwOC0wNi0wNSAyMzowNyAgdGFuZGVycworICAgQmV0dGVyIGhhbmRsaW5nIG9mIGVtYmVkZGVkIHBlcmwgb24gTWFjIE9TL1gKKyAgIChuZWFybHkgd29ya2luZyBvbiBMZW9wYXJkIG5vdykKIAotICAgKiBkaXN0L25ldC1zbm1wLnNwZWM6Ci0gICAgIHN5bmMgd2l0aCB0cnVuaworMjAwOC0wNi0wMyAyMzoxNCAgdGFuZGVycwogCi0yMDA4LTA2LTA1IDIxOjEyICB0YW5kZXJzCisgICAqICBhY2NvbmZpZy5oLCBhZ2VudC9hdXRvX25saXN0LmMsIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMsIAorICAgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgCisgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLCBjb25maWd1cmUuaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBzbm1wbGliL3N5c3RlbS5jOgogCi0gICAqIGNvbmZpZ3VyZToKLSAgICAgcnVuIGF1dG9jb25mCisgICBORVdTOiBhaXg6IEFkZCBzdXBwb3J0IGZvciBBSVggNi54CiAKLTIwMDgtMDYtMDUgMjE6MTEgIHRhbmRlcnMKLQotICAgKiBhY2NvbmZpZy5oLCBhZ2VudC9hdXRvX25saXN0LmMsIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oLAotICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLAotICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLAotICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgY29uZmlndXJlLmluLAotICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBzbm1wbGliL3N5c3RlbS5jOgotICAgICBORVdTOiBBSVg6IEFkZCBzdXBwb3J0IGZvciBBSVggNi54LgotICAgICBTdWNjZXNzZnVsbHkgdGVzdGVkIG9uIHRydW5rIChwYXNzZWQgZXh0ZW5zaXZlIHJlZ3Jlc3Npb24KLSAgICAgdGVzdGluZykuCi0KLTIwMDgtMDYtMDUgMjE6MDQgIHRhbmRlcnMKKzIwMDgtMDYtMDMgMjI6NDYgIHRhbmRlcnMKIAogICAgKiBhY2xvY2FsLm00LCBjb25maWcuZ3Vlc3MsIGNvbmZpZy5zdWIsIGNvbmZpZ3VyZSwgbHRtYWluLnNoOgotICAgICBORVdTOiBidWlsZDogVXBkYXRlIHRvIGxpYnRvb2wgMS41LjI2IChmcm9tIDEuNS4yNCksIGUuZy4gdG8KLSAgICAgYmV0dGVyIHN1cHBvcnQgQUlYIDYuMSBhbmQgTWFjIE9TIFggTGVvcGFyZC4KLSAgICAgU3VjY2Vzc2Z1bGx5IHRlc3RlZCBvbiB0cnVuayAocGFzc2VkIGV4dGVuc2l2ZSByZWdyZXNzaW9uCi0gICAgIHRlc3RpbmcpLgogCi0yMDA4LTA2LTAzIDA5OjM3ICBkdHMxMgorICAgTkVXUzogYnVpbGQ6IFVwZGF0ZSB0byBsaWJ0b29sIDEuNS4yNiAoZnJvbSAxLjUuMjQpLCBlLmcuIHRvCisgICBiZXR0ZXIgc3VwcG9ydCBBSVggNi4xIGFuZCBNYWMgT1MgWCBMZW9wYXJkCiAKLSAgICogUkVBRE1FLm9zWDoKLSAgICAgRG9jdW1lbnQgd2h5IGVtYmVkZGVkIHBlcmwgd2FzIGRpc2FibGVkLgorMjAwOC0wNi0wMyAyMjozOSAgdGFuZGVycwogCi0yMDA4LTA2LTAzIDA4OjU3ICBkdHMxMgorICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICB3aHkgYWRkIGxlZ2FjeSBkZWZpbml0aW9ucyBmb3IgbmV3IHN0dWZmPworCisyMDA4LTA2LTAzIDA5OjAzICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYzoKLSAgICAgRW5zdXJlIHRoZSBkZWZhdWx0IGludGVybmFsIHF1ZXJ5IHNlc3Npb24gaGFzIGEgdmFsaWQgZW5naW5lSUQsCi0gICAgIHRvIGF2b2lkIGhhdmluZyB0byBwcm9iZSBmb3IgaXQgb24gdGhlIGZpcnN0IHVzZS4KIAotMjAwOC0wNi0wMiAxNToxOCAgZHRzMTIKKyAgIEVuc3VyZSB0aGUgZGVmYXVsdCBpbnRlcm5hbCBxdWVyeSBzZXNzaW9uIGhhcyBhIHZhbGlkIGVuZ2luZUlELAorICAgdG8gYXZvaWQgaGF2aW5nIHRvIHByb2JlIGZvciBpdCBvbiB0aGUgZmlyc3QgdXNlLgogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBEcm9wIGVtYmVkZGVkIHBlcmwgZnJvbSB0aGUgZGVmYXVsdCBidWlsZCBvbiBNYWMgT1MvWAotICAgICBUaCBkdWFsLWFyY2hpdGVjdHVyZSBuYXR1cmUgb2YgdGhlIGRlZmF1bHQgcGVybCBiaW5hcnkKLSAgICAgY29uZnVzZXMgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgc3VmZmljaWVudGx5IHRoYXQgdGhlCi0gICAgIGNvZGUgd29uJ3QgYWN0dWFsbHkgY29tcGlsZS4KKzIwMDgtMDYtMDIgMjI6MTcgIG1hZ2ZyCiAKLTIwMDgtMDYtMDIgMTM6MjcgIGR0czEyCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIHNubXBsaWIvc25tcF9hcGkuYywgICAKKyAgICAgIHNubXBsaWIvc25tcF9jbGllbnQuYywgc25tcGxpYi90b29scy5jOgorCisgICBORVdTOiBzbm1wbGliOiBDb252ZXJ0IGdlbmVyaWMgc291cmNlIGFyZ3VtZW50cyBmcm9tIGNvbnN0CisgICB1X2NoYXIqIHRvIGNvbnN0IHZvaWQqIGZvciBzbm1wX3BkdV9hZGRfdmFyaWFibGUsCisgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlLCBzbm1wX3NldF92YXJfdmFsdWUsCisgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUgYW5kIG1lbWR1cC4KKworMjAwOC0wNi0wMiAxMzoyOCAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jOgotICAgICBFbnN1cmUgdGhhdCB0aGUgInRyaWdnZXIgYXJtZWQiIGZsYWcgaXMgY2xlYXJlZCB3aGVuZXZlciB0aGUKLSAgICAgbWF0Y2hpbmcKLSAgICAgZXhwcmVzc2lvbiBpcyBmb3VuZCB0byBob2xkIC0gZXZlbiBpZiB0aGUgdHJpZ2dlciBkb2Vzbid0Ci0gICAgIGFjdHVhbGx5IGZpcmUuCi0gICAgIFRoaXMgYWZmZWN0cyB0aGUgYmVoYXZpb3VyIG9mIGluaXRpYWxseS10cnVlIGV4cHJlc3Npb25zLCB3aGVuCi0gICAgIHRoaXMKLSAgICAgaW5pdGlhbCBmaXJpbmcgaXMgc3VwcHJlc3NlZCB1c2luZyB0aGUgbXRlVHJpZ2dlcipTdGFydHVwIG9iamVjdC4KLSAgICAgV2l0aG91dCB0aGlzIHR3ZWFrLCB0aGUgdHJpZ2dlciB3aWxsIGZpcmUgb24gdGhlIHNlY29uZCBzYW1wbGluZwotICAgICAoYXMgaWYgdGhlIGV4cHJlc3Npb24gaGFkIGV2YWx1YXRlZCBmYWxzZSBmaXJzdCB0aW1lIHJvdW5kKS4KKworICAgRW5zdXJlIHRoYXQgdGhlICJ0cmlnZ2VyIGFybWVkIiBmbGFnIGlzIGNsZWFyZWQgd2hlbmV2ZXIgdGhlCisgICBtYXRjaGluZworICAgZXhwcmVzc2lvbiBpcyBmb3VuZCB0byBob2xkIC0gZXZlbiBpZiB0aGUgdHJpZ2dlciBkb2Vzbid0CisgICBhY3R1YWxseSBmaXJlLgorICAgVGhpcyBhZmZlY3RzIHRoZSBiZWhhdmlvdXIgb2YgaW5pdGlhbGx5LXRydWUgZXhwcmVzc2lvbnMsIHdoZW4KKyAgIHRoaXMKKyAgIGluaXRpYWwgZmlyaW5nIGlzIHN1cHByZXNzZWQgdXNpbmcgdGhlIG10ZVRyaWdnZXIqU3RhcnR1cCBvYmplY3QuCisgICBXaXRob3V0IHRoaXMgdHdlYWssIHRoZSB0cmlnZ2VyIHdpbGwgZmlyZSBvbiB0aGUgc2Vjb25kIHNhbXBsaW5nCisgICAoYXMgaWYgdGhlIGV4cHJlc3Npb24gaGFkIGV2YWx1YXRlZCBmYWxzZSBmaXJzdCB0aW1lIHJvdW5kKS4KIAogMjAwOC0wNi0wMSAyMDowMiAgZHRzMTIKIAotICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuaDoKLSAgICAgSGFuZGxlIHZhcmJpbmQgcGF5bG9hZCBmb3IgaW50ZXJuYWwgbGlua1VwL0Rvd24gbm90aWZpY2F0aW9ucy4KKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmg6CisKKyAgIEhhbmRsZSB2YXJiaW5kIHBheWxvYWQgZm9yIGludGVybmFsIGxpbmtVcC9Eb3duIG5vdGlmaWNhdGlvbnMuCiAKIDIwMDgtMDYtMDEgMDY6NDUgIHRhbmRlcnMKIAogICAgKiBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHM6Ci0gICAgIE5FV1M6IHNubXB0cmFwZDogQlVHOiAxOTU1MjI3OiBNZW1vcnkgbGVhayBmb3IgZW1iZWRkZWQgUGVybCBvbgotICAgICB4ODZfNjQKIAotMjAwOC0wNS0yOSAxNjoxMSAgZHRzMTIKKyAgIE5FV1M6IHNubXB0cmFwZDogQlVHOiAxOTU1MjI3OiBNZW1vcnkgbGVhayBmb3IgZW1iZWRkZWQgUGVybCBvbgorICAgeDg2XzY0CiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9saW51eC5jOgotICAgICBTaWxseSB0eXBvCisyMDA4LTA1LTMxIDEyOjA4ICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBUaGUgc2NhbGFyIGhlbHBlciB0aGF0IHdhcyBjYWxsZWQgZnJvbSB0aGUKKyAgIHNjYWxhcl9ncm91cCBoZWxwZXIgZGlkIG5vdGhpbmcgc2F2ZSBhZGRpbmcgYSB0cmFpbGluZyAwIHRvIHRoZQorICAgYXJndW1lbnQuIFJlbW92ZSB0aGUgdXNlIG9mIHRoZSBzY2FsYXIgaGVscGVyIGZyb20gdGhlCisgICBzY2FsYXJfZ3JvdXAgYW5kIGFkZCB0aGUgdHJhaWxpbmcgMCBpbiB0aGUgc2NhbGFyX2dyb3VwIGhlbHBlci4KKworMjAwOC0wNS0zMCAxMzo1NiAgZHRzMTIKKworICAgKiBkaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TOgorCisgICBUd2VhayBsaXN0IG9mIG9uLWxpbmUgc29mdHdhcmUgZGlyZWN0b3JpZXMgdG8gYmUgdXBkYXRlZC4KIAogMjAwOC0wNS0yOSAwOTo1OSAgZHRzMTIKIAotICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsIGFwcHMvc25tcHRlc3QuYywKLSAgICAgYXBwcy9zbm1wdHJhcC5jLCBhcHBzL3NubXB1c20uYywgc25tcGxpYi9zbm1wdXNtLmM6Ci0gICAgIFZhcmlvdXMgbWlzc2luZyBlcnJvciBjaGVja3MsIGV0Yy4KLSAgICAgUmVwb3J0ZWQgYnkgQm95YSBTdW4uCisgICAqICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYywgYXBwcy9zbm1wdGVzdC5jLCAgIAorICAgICAgYXBwcy9zbm1wdHJhcC5jLCBhcHBzL3NubXB1c20uYywgc25tcGxpYi9zbm1wdXNtLmM6CisKKyAgIFZhcmlvdXMgbWlzc2luZyBlcnJvciBjaGVja3MsIGV0Yy4KKyAgIFJlcG9ydGVkIGJ5IEJveWEgU3VuLgogCiAyMDA4LTA1LTI4IDExOjQ4ICBkdHMxMgogCi0gICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZnJlZWJzZC5jLAotICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYzoKLSAgICAgUmVwb3J0IGNhY2hlZCBtZW1vcnkgc2l6ZS91c2FnZSBwcm9wZXJseSAocGFydGljdWxhcmx5IG9uCi0gICAgIEZyZWVCU0QpLgorICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9mcmVlYnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYzoKKworICAgUmVwb3J0IGNhY2hlZCBtZW1vcnkgc2l6ZS91c2FnZSBwcm9wZXJseSAocGFydGljdWxhcmx5IG9uCisgICBGcmVlQlNEKS4KIAogMjAwOC0wNS0yOCAxMToyMSAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYzoKLSAgICAgQnJpbmcgbWVtQnVmZmVyIGNvZGUgaW50byBsaW5lIHdpdGggcmV2aXNpb24gMTY5NzUuCisKKyAgIEJyaW5nIG1lbUJ1ZmZlciBjb2RlIGludG8gbGluZSB3aXRoIHJldmlzaW9uIDE2OTc1LgogCiAyMDA4LTA1LTI4IDExOjEwICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfbGludXguYzoKLSAgICAgTGludXggMi42IGtlcm5lbCBkb2VzIG5vdCByZXBvcnQgc2hhcmVkIG1lbW9yeSBpbmZvcm1hdGlvbi4KKworICAgTGludXggMi42IGtlcm5lbCBkb2VzIG5vdCByZXBvcnQgc2hhcmVkIG1lbW9yeSBpbmZvcm1hdGlvbi4KIAogMjAwOC0wNS0yOCAwOToxOCAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2xpbnV4LmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE5MzEzOTE6IEZpeCByZXBvcnRpbmcgb2YgTWVtb3J5IGJ1ZmZlcnMgYW5kCi0gICAgIGNhY2hlZCBtZW1vcnkuCi0gICAgIFByb2JsZW0gcmVwb3J0ZWQgYnkgZG9jb25laWxsLgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxOTMxMzkxOiBGaXggcmVwb3J0aW5nIG9mIE1lbW9yeSBidWZmZXJzIGFuZAorICAgY2FjaGVkIG1lbW9yeS4KKyAgIFByb2JsZW0gcmVwb3J0ZWQgYnkgZG9jb25laWxsLgorCisyMDA4LTA1LTI4IDA4OjMwICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgorCisgICBUd2VhayB0aGUgZml4IGZvciBidWcgIzE5MTI2NDcKIAogMjAwOC0wNS0yOCAwNjo1NiAgbWFnZnIKIAogICAgKiBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogRW5mb3JjZSB0aGUgbG93ZXIgbGltaXQgb24gc2NhbGFyX2dyb3VwcwotICAgICBUaGlzIGZpeGVzIHRoZSBjYXNlIG9mIGdldG5leHQgaWNtcC4wIHJldHVybmluZyBpY21wLjAuMCBpbnN0ZWFkCi0gICAgIG9mIHRoZQotICAgICBleHBlY3RlZCBpY21wSW5Nc2dzLjAKKworICAgQ0hBTkdFUzogc25tcGQ6IEVuZm9yY2UgdGhlIGxvd2VyIGxpbWl0IG9uIHNjYWxhcl9ncm91cHMKKyAgIFRoaXMgZml4ZXMgdGhlIGNhc2Ugb2YgZ2V0bmV4dCBpY21wLjAgcmV0dXJuaW5nIGljbXAuMC4wIGluc3RlYWQKKyAgIG9mIHRoZQorICAgZXhwZWN0ZWQgaWNtcEluTXNncy4wCiAKIDIwMDgtMDUtMjcgMjI6MDMgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTkxMjY0NzogRml4IG1lbW9yeSBsZWFrIGZvbGxvd2luZyBmYWlsZWQKLSAgICAgcmVxdWVzdHMuCi0gICAgIEZpeCBwcm92aWRlZCBieSBBbnRvbiBQYWsKKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTkxMjY0NzogRml4IG1lbW9yeSBsZWFrIGZvbGxvd2luZyBmYWlsZWQKKyAgIHJlcXVlc3RzLgorICAgRml4IHByb3ZpZGVkIGJ5IEFudG9uIFBhawogCiAyMDA4LTA1LTI3IDIxOjIyICBkdHMxMgogCiAgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKLSAgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAxOTU4MDQxOiBFbnN1cmUgSURzIGFyZSBub3QgdHJ1bmNhdGVkLgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDE5NTgwNDE6IEVuc3VyZSBJRHMgYXJlIG5vdCB0cnVuY2F0ZWQuCiAKIDIwMDgtMDUtMjcgMTQ6MTggIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9mcmVlYnNkLmM6Ci0gICAgIE1vbml0b3IgbWVtb3J5IGJ1ZmZlcnMgb24gRnJlZUJTRCBzeXN0ZW1zLgotICAgICBBUEkgc3VnZ2VzdGVkIGJ5IENocmlzCisKKyAgIE1vbml0b3IgbWVtb3J5IGJ1ZmZlcnMgb24gRnJlZUJTRCBzeXN0ZW1zLgorICAgQVBJIHN1Z2dlc3RlZCBieSBDaHJpcwogCiAyMDA4LTA1LTI3IDEyOjQ3ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmM6Ci0gICAgIEZpeCBjYXJlbGVzcyB0eXBvIHdoZW4gYXBwbHlpbmcgTWF4aW0ncyBwYXRjaC4KKworICAgRml4IGNhcmVsZXNzIHR5cG8gd2hlbiBhcHBseWluZyBNYXhpbSdzIHBhdGNoLgorCisyMDA4LTA1LTI1IDIxOjM3ICBtYWdmcgorCisgICAqICBSRUFETUUuYWdlbnQtbWlicywgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjNtaWJzLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBSZWltcGxlbWVudGF0aW9uIG9mIHVzbVN0YXRzLgogCiAyMDA4LTA1LTI1IDA3OjI0ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuYzoKLSAgICAgUmVtb3ZlIGEgbG9jYWwgdmFyaWFibGUgb25seSB1c2VkIHRvIHRyYWNrIGEgbG9jYWwgc3RyaW5nCi0gICAgIGNvbnN0YW50IGFuZCByZXBsYWNlIHQgd2l0aCBhIGRpcmVjdCByZWZlcmVuY2UgdG8gdGhlIHN0cmluZwotICAgICBjb25zdGFudC4KLSAgICAgTWFyayB0d28gbG9jYWwgZnVuY3Rpb25zIHN0YXRpYyBhcyB3ZWxsLgorCisgICBSZW1vdmUgYSBsb2NhbCB2YXJpYWJsZSBvbmx5IHVzZWQgdG8gdHJhY2sgYSBsb2NhbCBzdHJpbmcKKyAgIGNvbnN0YW50IGFuZCByZXBsYWNlIHQgd2l0aCBhIGRpcmVjdCByZWZlcmVuY2UgdG8gdGhlIHN0cmluZworICAgY29uc3RhbnQuCisgICBNYXJrIHR3byBsb2NhbCBmdW5jdGlvbnMgc3RhdGljIGFzIHdlbGwuCiAKIDIwMDgtMDUtMjUgMDc6MTcgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jOgotICAgICBSZW9yZGVyIHRvIGF2b2lkIG9uZSBzdHJsZW4gY2FsbC4KLSAgICAgQWRkIG1pc3NpbmcgY2FzdC4KKworICAgUmVvcmRlciB0byBhdm9pZCBvbmUgc3RybGVuIGNhbGwuCisgICBBZGQgbWlzc2luZyBjYXN0LgogCiAyMDA4LTA1LTI1IDA3OjE0ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmM6Ci0gICAgIE1ha2UgaXBmd19uYW1lIGEgc3RhdGljIGFycmF5IGluc3RlYWQgb2YgYSBwb2ludGVyIGFzIGl0IGlzCi0gICAgIHByaXZhdGUgdG8gdGhpcyBtb2R1bGUuCisKKyAgIE1ha2UgaXBmd19uYW1lIGEgc3RhdGljIGFycmF5IGluc3RlYWQgb2YgYSBwb2ludGVyIGFzIGl0IGlzCisgICBwcml2YXRlIHRvIHRoaXMgbW9kdWxlLgogCiAyMDA4LTA1LTI1IDA3OjA1ICBtYWdmcgogCiAgICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYzoKLSAgICAgV2hlbiBjYXN0aW5nLCBjYXN0IHRvIHRoZSByaWdodCB0eXBlLgorCisgICBXaGVuIGNhc3RpbmcsIGNhc3QgdG8gdGhlIHJpZ2h0IHR5cGUuCisKKzIwMDgtMDUtMjUgMDY6MDggIG1hZ2ZyCisKKyAgICogIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCBhZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsIAorICAgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsCisgICAgICAgICBhZ2VudC9zbm1wX2FnZW50LmMsIGFwcHMvc25tcHRlc3QuYywgc25tcGxpYi9yZWFkX2NvbmZpZy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBSZW1vdmUgd2FybmluZ3MgYWJvdXQgdW5yZWFjaGFibGUgY29kZSBvbiBzb2xhcmlzLgogCiAyMDA4LTA1LTI0IDIwOjMwICBkdHMxMgogCiAgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6Ci0gICAgIENIQU5HRVM6IHB5dGhvbjogQlVHOiAxODI2MTc0OiBDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93IHdoZW4KLSAgICAgcHJpbnRpbmcgdmFsdWVzLgotICAgICBBZGRyZXNzZXMgQ1ZFLTIwMDgtMjI5MgorCisgICBDSEFOR0VTOiBweXRob246IEJVRzogMTgyNjE3NDogQ2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvdyB3aGVuCisgICBwcmludGluZyB2YWx1ZXMuCisgICBBZGRyZXNzZXMgQ1ZFLTIwMDgtMjI5MgorCisyMDA4LTA1LTI0IDEzOjExICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBPbiBBSVggbmV0aW5ldC9pbl9wY2IuaCBkZXBlbmRzIG9uIG5ldC9yb3V0ZS5oLiBBZGQgdGhlIGluY2x1ZGUKKyAgIGZvciBjb25maWd1cmUuCisKKzIwMDgtMDUtMjQgMDk6MDYgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTWFrZSB0aGUgY2hlY2tzIGZvciBuZXRpbmV0L2luX3BjYi5oIGFuZCBzeXMvZGlza2xhYmVsLmggdXNlIHRoZQorICAgbm9ybWFsCisgICBtYWNoaW5lcnkuCisgICBBZGQgYSBuZXRzbm1wIHByZWZpeCB0byB0aGUgY2FjaGUgdmFyaWFibGUKKyAgIGN2X3N5c19pb2N0bF9oX2hhc19TSU9DR0lGQUREUiB0bworICAgcGFjaWZ5IGFjbG9jYWwuCiAKIDIwMDgtMDUtMjMgMjA6MjcgIGR0czEyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1LmgsCi0gICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogRml4IGZvciBDUFUgc3RhdHMgb24gRnJlZUJTRAotICAgICBQcm92aWRlZCBieSBNYXhpbSBTb2JvbGV2CisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogRml4IGZvciBDUFUgc3RhdHMgb24gRnJlZUJTRAorICAgUHJvdmlkZWQgYnkgTWF4aW0gU29ib2xldgogCiAyMDA4LTA1LTIzIDIwOjEyICBkdHMxMgogCiAgICAqIGRpc3Qvc25tcGQtaW5pdC5kLCBkaXN0L3NubXB0cmFwZC1pbml0LmQ6Ci0gICAgIENIQU5HRVM6IGluc3RhbGw6IFBBVENIOiAxOTY5NjI3OiBIYW5kbGUgZW1wdHkKLSAgICAgL2V0Yy9zeXNjb25maWcvbmV0d29yayBmaWxlCi0gICAgIEZpeCBwcm92aWRlZCBieSBKb3NoIFdpbG1lcworCisgICBDSEFOR0VTOiBpbnN0YWxsOiBQQVRDSDogMTk2OTYyNzogSGFuZGxlIGVtcHR5CisgICAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrIGZpbGUKKyAgIEZpeCBwcm92aWRlZCBieSBKb3NoIFdpbG1lcwogCiAyMDA4LTA1LTIzIDIwOjA3ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE5NjcxOTQ6IFJlY29nbmlzZSBORlM0IG1vdW50cwotICAgICBTdWJtaXR0ZWQgYnkgRmFicmljZSBCYWNjaGVsbGEKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxOTY3MTk0OiBSZWNvZ25pc2UgTkZTNCBtb3VudHMKKyAgIFN1Ym1pdHRlZCBieSBGYWJyaWNlIEJhY2NoZWxsYQogCiAyMDA4LTA1LTIyIDIwOjU1ICBkdHMxMgogCiAgICAqIHNubXBsaWIvYXNuMS5jOgotICAgICBEb24ndCBjaGFuZ2UgbGVuZ3RoIG9mIE9JRCBidWZmZXIgaWYgcGFyc2luZyB0aGUgT0lEIGZhaWxzLgotICAgICBSZXBvcnRlZCBieSBzYWlmdWxsYSBNb2hkIEFiZHVsLgorCisgICBEb24ndCBjaGFuZ2UgbGVuZ3RoIG9mIE9JRCBidWZmZXIgaWYgcGFyc2luZyB0aGUgT0lEIGZhaWxzLgorICAgUmVwb3J0ZWQgYnkgc2FpZnVsbGEgTW9oZCBBYmR1bC4KKworMjAwOC0wNS0yMiAxMzozNCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKKworICAgdXBkYXRlIHRoZSBhZHZlcnRpc2luZyBzZWN0aW9uIGFuZCBjaGFuZ2Ugbm90ZSBhYm91dCBob3cgdG8KKyAgIHVwbG9hZCBmaWxlcyAoYWRkaW5nIGFuIGF1dG9tYXR0ZWQgcnN5bmMgY29tbWFuZCkKKworMjAwOC0wNS0yMiAwNDowOCAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuYzoKKworICAgQWRkIG1pc3NpbmcgaW5jbHVkZS4KKworMjAwOC0wNS0yMSAyMDoyNyAgbWFnZnIKKworICAgKiBzbm1wbGliL3NubXBBbGlhc0RvbWFpbi5jOgorCisgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHRoZSBhbGlhcyBtb2R1bGUgd2l0aCBhIEMrKyBjb21waWxlci4KKworMjAwOC0wNS0yMSAxMzo0MCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKKworICAgYWRkZWQgRlNGIGRpcmVjdG9yeSBpbmZvCisKKzIwMDgtMDUtMjEgMDk6MjEgIGR0czEyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgQWRkIEZyZWUgU29mdHdhcmUgRGlyZWN0b3J5IHRvIHRoZSBsaXN0IG9mIHBsYWNlcyB0byBiZSB1cGRhdGVkLgorCisyMDA4LTA1LTIwIDIzOjAwICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgsIGFnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2FpeDQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2FpeDQuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcywgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IFRoZSBtYWpvcml0eSBvZiB0aGUgZGVwZW5kZW5jaWVzIG9uIHV0aWxfZnVuY3MgaXMKKyAgIGZvciB0aGUgaGVhZGVyXyogZnVuY3Rpb25zLiBGYWN0b3Igb3V0IHRoZSBoZWFkZXJfKiBmdW5jdGlvbnMgYW5kCisgICBhZGp1c3QgdGhlIHJlcXVpcmVtZW50cy4KKworMjAwOC0wNS0yMCAyMjo0MCAgbWFnZnIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi9hZ3V0aWwuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybS5oLCBhZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmgsIGFnZW50L21pYmdyb3VwL1Jtb24vaGlzdG9yeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmgsIGFnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL3N0YXRpc3RpY3MuaCwgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmgsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jLCBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5oLCBhZ2VudC9zbm1wX2FnZW50LmM6CisKKyAgIENIQU5HRVM6IERvIG5vdCBjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKSBpZiBub3RoaW5nIGZyb20KKyAgIHV0aWxfZnVuY3MgaXMgdXNlZAogCiAyMDA4LTA1LTE0IDEzOjM1ICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jOgotICAgICBmaXggYnVpbGQgZmFpbHVyZXMgd2l0aCBlYXJsaWVyIExpbnV4IGtlcm5lbHMgKGUuZy4gd2l0aCBSSDcuMSkKLSAgICAgaW50cm9kdWNlZCBieSByMTY5MDkKIAotMjAwOC0wNS0wOSAxOTowNCAgZHRzMTIKKyAgIGZpeCBidWlsZCBmYWlsdXJlcyB3aXRoIGVhcmxpZXIgTGludXgga2VybmVscyAoZS5nLiB3aXRoIFJINy4xKQorICAgaW50cm9kdWNlZCBieSByMTY5MDkKIAotICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKLSAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sCi0gICAgIHBlcmwvU05NUC9TTk1QLnBtLCBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sCi0gICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCBwZXJsL2FnZW50L2FnZW50LnBtLAotICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwKLSAgICAgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sIHNlZHNjcmlwdC5pbiwKLSAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnByZTEgKQorMjAwOC0wNS0xMyAxODo1NiAgaGFyZGFrZXIKIAotMjAwOC0wNS0wOSAxOTowNCAgZHRzMTIKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKIAotICAgKiBDSEFOR0VTLCBORVdTOgotICAgICB2ZXJzaW9uIHVwZGF0ZQorICAgZml4IGNvbW1lbnQgdHlwbwogCi0yMDA4LTA1LTA5IDE4OjQ3ICBkdHMxMgorMjAwOC0wNS0xMyAxNTo0NiAgaGFyZGFrZXIKIAotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHZlcnNpb24gdXBkYXRlCisgICAqIE5FV1M6CiAKLTIwMDgtMDUtMDkgMTU6MjQgIGR0czEyCisgICBkb2N1bWVudCB0aGUgLXQgc3dpdGNoIGNoYW5nZQogCi0gICAqIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsCi0gICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsCi0gICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDoKLSAgICAgbWFrZSBkZXBlbmQKKzIwMDgtMDUtMTMgMTU6NDUgIGhhcmRha2VyCiAKLTIwMDgtMDUtMDkgMTU6MTQgIGR0czEyCisgICAqIG1hbi9zbm1wY21kLjEuZGVmOgogCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnByZTEgKQorICAgZG9jdW1lbnQgdGhlIGFsaWFzIGtleXdvcmQKIAotMjAwOC0wNS0wOSAxNDo1MSAgZHRzMTIKKzIwMDgtMDUtMTMgMTU6NDEgIGhhcmRha2VyCiAKLSAgICogbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywKLSAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLAotICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsCi0gICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywKLSAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAotICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsCi0gICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAotICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAotICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKLSAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAotICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsCi0gICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsCi0gICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotICAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgKiBtYW4vc25tcGNtZC4xLmRlZiwgc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYzoKIAotMjAwOC0wNS0wOSAxNDo0NyAgZHRzMTIKKyAgIGFsbG93IGZsb2F0aW5nIHBvaW50IG51bWJlcnMgdG8gYmUgdXNlZCBmb3IgdGltZW91dCB2YWx1ZXMKIAotICAgKiBkb3h5Z2VuLmNvbmY6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMiApCisyMDA4LTA1LTEyIDIxOjExICBoYXJkYWtlcgogCi0yMDA4LTA1LTA5IDE0OjIzICBkdHMxMgorICAgKiBtaWJzL05FVC1TTk1QLVRDLnR4dCwgc25tcGxpYi9zbm1wQWxpYXNEb21haW4uYzoKIAotICAgKiBNYWtlZmlsZS50b3A6Ci0gICAgIHZlcnNpb24gdXBkYXRlCisgICBBZGRlZCBhIHJlYWwgc25tcEFsaWFzRG9tYWluIE9JRCBkZWZpbml0aW9uCiAKLTIwMDgtMDUtMDkgMTM6NTggIGR0czEyCisyMDA4LTA1LTEyIDIxOjA3ICBoYXJkYWtlcgogCi0gICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jOgotICAgICBEZWJ1Z2dpbmcgbWVzc2FnZXMuCisgICAqIE5FV1M6CisKKyAgIHVwZGF0ZWQgTkVXUyB3aXRoIG5ldyBhbGlhcyBibHVyYgorCisyMDA4LTA1LTEyIDIxOjA3ICBoYXJkYWtlcgorCisgICAqICBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQWxpYXNEb21haW4uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIG1hbi9zbm1wLmNvbmYuNS5kZWYsICAgCisgICAgICBzbm1wbGliL3NubXBBbGlhc0RvbWFpbi5jLCBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmM6CisKKyAgIE5FV1M6IHNubXBsaWI6IEFkZGVkIGEgYWxpYXMgdHJhbnNwb3J0IGZvciBtYXBwaW5nIGNvbXBsZXgKKyAgIHRyYW5zcG9ydCBzdHJpbmdzIHRvIHNpbXBsZSBuYW1lIGRlZmluaXRpb25zCisKKzIwMDgtMDUtMTIgMTk6MzggIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIHN0cmlwIG9mZiB0cmFpbGluZyBtb2R1bGUgbmFtZQorCisyMDA4LTA1LTEyIDA2OjAzICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmM6CisKKyAgIE1ha2UgbWliSUkvc25tcCB3b3JrIGFnYWluLgorCisyMDA4LTA1LTEwIDIxOjQ3ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4KKworMjAwOC0wNS0xMCAwOTo1NSAgbWFnZnIKKworICAgKiAgYWdlbnQvYWdlbnRfaW5kZXguYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgYWdlbnQvc25tcF9hZ2VudC5jLCAgIAorICAgICAgc25tcGxpYi9hc24xLmM6CisKKyAgIENIQU5HRVM6IHNubXBkLCBzbm1wbGliOiBSZXBsYWNlIHRoZSBpbnZhbGlkICUwOHAgZm9ybWF0CisgICBzcGVjaWZpZXIgd2l0aCB0aGUgY29ycmVjdCAlOHAuCisKKzIwMDgtMDUtMTAgMDk6NTEgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYywgCisgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYywgYXBwcy9zbm1wZGVsdGEuYywgICAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvaW5ldC5jLCBhcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMsICAgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L21haW4uYywgYXBwcy9zbm1wdHJhcGQuYywgICAKKyAgICAgIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmM6CisKKyAgIENIQU5HRVM6IHNubXBkLCBzbm1wbmV0c3RhdCwgc25tcHRyYXBkLCBzbm1wZGVsdGE6IFVzZSBOVUxMCisgICBpbnN0ZWFkIG9mIDAgZm9yIE5VTEwgcG9pbnRlcnMuIFVzZSBjYXN0ZWQgMCdzIGluc3RlYWQgb2YgMCBmb3IKKyAgIE5VTEwgZnVuY3Rpb24gcG9pbnRlcnMuCisKKzIwMDgtMDUtMTAgMDk6NDAgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBBZGQgbWlzc2luZyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCisKKzIwMDgtMDUtMTAgMDk6MzkgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCBhZ2VudC9zbm1wX3ZhcnMuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBtaXNzaW5nIGluY2x1ZGUgZmlsZXMuCisKKzIwMDgtMDUtMTAgMDk6MzMgIG1hZ2ZyCisKKyAgICogIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L3NubXBfYWdlbnQuYywgbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjLCAgIAorICAgICAgc25tcGxpYi9kYXRhX2xpc3QuYzoKKworICAgQ0hBTkdFUzogc25tcGQsIHNubXBsaWIsIG1pYjJjOiBNb3ZlIHRoZSBkZWZpbml0aW9uIG9mIGlubGluZQorICAgZnVuY3Rpb25zIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNlZXMgdGhlbSBiZWZvcmUgaXQgc2VlcyB1c2VzIG9mCisgICB0aGVtLgorCisyMDA4LTA1LTEwIDA5OjMwICBtYWdmcgorCisgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0Lmg6CisKKyAgIENIQU5HRVM6IHNubXBkLCBzbm1wbGliOiBSZW1vdmUgdGhlIGlubGluZSBkZWNsYXJhdGlvbnMgZm9yCisgICBmdW5jdGlvbnMgdGhhdCBsYWNrIGFuIGlubGluZSBkZWZpbml0aW9uLgorCisyMDA4LTA1LTA5IDIxOjM1ICBtYWdmcgorCisgICAqICBhZ2VudC9hZ2VudF9pbmRleC5jLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9hZ2VudF90cmFwLmMsICAKKyAgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIGFnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBWYWx1ZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2RldmljZS5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcmludC5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3Byb2MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYywgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuYywgIAorICAgICAgIGFnZW50L3NubXBfYWdlbnQuYywgc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmMsICAgCisgICAgICBzbm1wbGliL2NvbnRhaW5lcl9udWxsLmMsIHNubXBsaWIvbGNkX3RpbWUuYywgc25tcGxpYi9tZDUuYywgICAKKyAgICAgIHNubXBsaWIvbWliLmMsIHNubXBsaWIvcGFyc2UuYywgc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wVENQRG9tYWluLmMsIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvc25tcFVuaXhEb21haW4uYywgc25tcGxpYi9zbm1wX2FsYXJtLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9jbGllbnQuYywgc25tcGxpYi9zbm1wX2RlYnVnLmMsICAKKyAgICAgICBzbm1wbGliL3NubXBfbG9nZ2luZy5jLCBzbm1wbGliL3NubXB1c20uYywgc25tcGxpYi90b29scy5jOgorCisgICBDSEFOR0VTOiBzbm1wZCwgc25tcGxpYjogVXNlIE5VTEwgaW5zdGVhZCBvZiAwIGZvciBOVUxMIHBvaW50ZXJzLgorICAgVXNlIGNhc3RlZCAwJ3MgaW5zdGVhZCBvZiAwIGZvciBOVUxMIGZ1bmN0aW9uIHBvaW50ZXJzLgorCisyMDA4LTA1LTA5IDIxOjI3ICBtYWdmcgorCisgICAqICBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsIGFnZW50L3NubXBfYWdlbnQuYywgICAKKyAgICAgIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jLCBzbm1wbGliL3BhcnNlLmMsIHNubXBsaWIvcmVhZF9jb25maWcuYywgIAorICAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisKKyAgIENIQU5HRVM6IHNubXBkLCBzbm1wbGliOiBmaXh1cHMgZm9yIHByb3RvdHlwZSBbKHZvaWQpIHJlcGxhY2luZworICAgKCldLgorCisyMDA4LTA1LTA5IDIxOjIzICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jOgorCisgICBSZW1vdmUgZGVhZCBjb2RlLgorCisyMDA4LTA1LTA5IDE5OjE2ICBkdHMxMgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2U6CisKKyAgIE1pc3NpbmcgTUQ1IHNpZ25hdHVyZSBmaWxlIGZvciB6aXAgcmVsZWFzZQorCisyMDA4LTA1LTA5IDE5OjE1ICBkdHMxMgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2U6CisKKyAgIEJhc2ljIGRvY3VtZW50YXRpb24gYW5kIGhlbHAvdXNhZ2UgbWVzc2FnZXMuCiAKIDIwMDgtMDUtMDggMTQ6MDAgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jOgotICAgICBEcm9wIHN1cHBvcnQgZm9yIHRoZSBpbnRlcmltIFNJT0NERVZQUklWQVRFLWJhc2VkIGlvY3RsIGNhbGxzLgotICAgICBTSU9DR01JSVBIWS9TSU9DR01JSVJFRyBoYXZlIGJlZW4gZGVmaW5lZCBzaW5jZSBhdCBsZWFzdCBTZXB0Ci0gICAgIDIwMDEgKGtlcm5lbCAyLjQuMTApLAotICAgICBzbyB0aGUgcmlzayBvZiBjYWxsaW5nIGFuIGluYXBwcm9wcmlhdGUgcHJpdmF0ZSBpb2N0bCBpcyBwcm9iYWJseQotICAgICBncmVhdGVyIHRoYW4KLSAgICAgdGhhdCBvZiBtaXNzaW5nIGluZm9ybWF0aW9uIGZyb20gYW4gYW5jaWVudCBzeXN0ZW0uCisKKyAgIERyb3Agc3VwcG9ydCBmb3IgdGhlIGludGVyaW0gU0lPQ0RFVlBSSVZBVEUtYmFzZWQgaW9jdGwgY2FsbHMuCisgICBTSU9DR01JSVBIWS9TSU9DR01JSVJFRyBoYXZlIGJlZW4gZGVmaW5lZCBzaW5jZSBhdCBsZWFzdCBTZXB0CisgICAyMDAxIChrZXJuZWwgMi40LjEwKSwKKyAgIHNvIHRoZSByaXNrIG9mIGNhbGxpbmcgYW4gaW5hcHByb3ByaWF0ZSBwcml2YXRlIGlvY3RsIGlzIHByb2JhYmx5CisgICBncmVhdGVyIHRoYW4KKyAgIHRoYXQgb2YgbWlzc2luZyBpbmZvcm1hdGlvbiBmcm9tIGFuIGFuY2llbnQgc3lzdGVtLgogCiAyMDA4LTA1LTA4IDA5OjAyICBkdHMxMgogCiAgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKLSAgICAgRG9uJ3QgdHJ5IHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGFub255bW91cyB1c2Vycy4KLSAgICAgKEFuIGludmFsaWQgdHJhcHNlc3MgZGlyZWN0aXZlIG1heSBjcmFzaCB0aGUgYWdlbnQpCisKKyAgIERvbid0IHRyeSB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhbm9ueW1vdXMgdXNlcnMuCisgICAoQW4gaW52YWxpZCB0cmFwc2VzcyBkaXJlY3RpdmUgbWF5IGNyYXNoIHRoZSBhZ2VudCkKKworMjAwOC0wNS0wNiAwODozOCAganNhZnJhbmVrCisKKyAgICogZGlzdC9uZXQtc25tcC5zcGVjOgorCisgICAtIHJlbW92ZSAle2xpYmN1cnJlbnR9CisgICAtIGFkZCBvcGVuc3NsLWRldmVsIHRvIGJ1aWxkIHJlcXVpcmVtZW50cworICAgLSBkb24ndCB1c2UgUHJvdmlkZXM6IHVubGVzcyBuZWNlc3NhcnksIGxldCBycG1idWlsZCBjb21wdXRlIHRoZQorICAgcHJvdmlkZWQgbGlicmFyaWVzCisgICAtIGRvbid0IHNwZWNpZnkgUFJFRklYIGZvciBwZXJsCisKKzIwMDgtMDUtMDYgMDg6MzggIGpzYWZyYW5laworCisgICAqIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L2FnZW50X3RyYXAuYzoKKworICAgcmV2ZXJ0aW5nIGFjY2lkZW50YWx5IGNvbW1pdGVkIGZpbGVzCisKKzIwMDgtMDUtMDYgMDg6MzQgIGpzYWZyYW5laworCisgICAqIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L2FnZW50X3RyYXAuYzoKKworICAgLSByZW1vdmUgJXtsaWJjdXJyZW50fQorICAgLSBhZGQgb3BlbnNzbC1kZXZlbCB0byBidWlsZCByZXF1aXJlbWVudHMKKyAgIC0gZG9uJ3QgdXNlIFByb3ZpZGVzOiB1bmxlc3MgbmVjZXNzYXJ5LCBsZXQgcnBtYnVpbGQgY29tcHV0ZSB0aGUKKyAgIHByb3ZpZGVkIGxpYnJhcmllcworICAgLSBkb24ndCBzcGVjaWZ5IFBSRUZJWCBmb3IgcGVybAorCisyMDA4LTA1LTA1IDIxOjQzICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBNZWNoYW5pc20gdG8gc2VsZWN0IHVwY29taW5nIG1vZHVsZSByZS13cml0ZXMgYW5kL29yCisgICByZWNlbnRseS1kZXByZWNhdGVkIG1vZHVsZXMuCiAKIDIwMDgtMDUtMDIgMTA6MTkgIGR0czEyCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oOgotICAgICBIYW5kbGUgdWRwVGFibGUgaW5kZXhpbmcgb24gYm90aCBQUEMgYW5kIEludGVsIGhhcmR3YXJlLgorCisgICBIYW5kbGUgdWRwVGFibGUgaW5kZXhpbmcgb24gYm90aCBQUEMgYW5kIEludGVsIGhhcmR3YXJlLgorCisyMDA4LTA0LTMwIDE5OjQ1ICBtYWdmcgorCisgICAqIHNubXBsaWIvc25tcF9kZWJ1Zy5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBSZW1vdmUgdGhlIHN1cHBvcnQgZm9yIGdlbmVyYXRpb24gb2Ygc3RhdGlzdGljcworICAgb2YgaG93IG9mdGVuIGEgY2VydGFpbiBkZWJ1ZyBsb2cgbGV2ZWwgaXMgdHJpZ2dlcmVkLgorCisyMDA4LTA0LTMwIDE5OjQxICBtYWdmcgorCisgICAqIHNubXBsaWIvc25tcF9kZWJ1Zy5jOgorCisgICBORVdTOiBzbm1wbGliOiBSZW1vdmUgdGhlIHZhcmlhYmxlIGRlYnVnX251bV9leGNsdWRlZC4KKyAgIFRoZXJlIGlzIG5vdGhpbmcgdGhhdCBzZXRzIGRlYnVnX251bV9leGNsdWRlZCBhbmQgdGhlcmUgaXMgbm8gd2F5CisgICB0byBmb3IgaXQKKyAgIHRvIGFmZmVjdCB0aGUgcmVzdWx0IG9mIGFueSBmdW5jdGlvbi4KIAogMjAwOC0wNC0zMCAwNToyOCAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBfZGVidWcuYzoKLSAgICAgUmVtb3ZlIHVubmNlc3NhcnkgcHJvdG90eXBlcworCisgICBSZW1vdmUgdW5uY2Vzc2FyeSBwcm90b3R5cGVzCisKKzIwMDgtMDQtMjMgMTY6MzkgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGFjdHVhbGx5IHVzZSB0aGUgYnJhbmNoIHBhdGgsIGRvbid0IGp1c3Qgc2F5IHlvdSdyZSBnb2luZyB0bwogCiAyMDA4LTA0LTE5IDIyOjIwICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmM6Ci0gICAgIGRvbid0IGRlcGVuZCBvbiBPSUQgcmVzb2x1dGlvbiBmb3IgZGlzbWFuIGxpbmtVcERvd25Ob3RpZmljYXRpb25zCisKKyAgIGRvbid0IGRlcGVuZCBvbiBPSUQgcmVzb2x1dGlvbiBmb3IgZGlzbWFuIGxpbmtVcERvd25Ob3RpZmljYXRpb25zCisKKzIwMDgtMDQtMDggMjA6NDMgIG1hZ2ZyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg6CisKKyAgIEFjY2VwdCB0aGF0IHBlb3BsZSB3aWxsIHRyeSB0byBjb21waWxlIHRoaXMgY29kZSB3aXRoIHByZS1BTlNJCisgICBjb21waWxlcnMgYW5kIGNoYW5nZSBpdCB0byBoYW5kbGUgdGhhdCBjYXNlLgogCiAyMDA4LTA0LTA4IDIwOjM4ICBoYXJkYWtlcgogCiAgICAqIHBlcmwvYWdlbnQvYWdlbnQucG06Ci0gICAgIENIQU5HRVM6IHBlcmw6IGZpeGVkIGFuIGV4dHJhIGJyYWNlIGluIHRoZSBkb2NzIHBvaW50ZWQgb3V0IGJ5Ci0gICAgIEphc29uIE1hcnRpbgorCisgICBDSEFOR0VTOiBwZXJsOiBmaXhlZCBhbiBleHRyYSBicmFjZSBpbiB0aGUgZG9jcyBwb2ludGVkIG91dCBieQorICAgSmFzb24gTWFydGluCisKKzIwMDgtMDQtMDggMjA6MzQgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIHVwZGF0ZSBhbmQgcmVzdHJ1Y3R1cmUgYSBiaXQgdG8gZml4IGEgZmV3IHByb2JsZW1zCisKKzIwMDgtMDQtMDcgMjA6MDYgIG1hZ2ZyCisKKyAgICogYWdlbnQvaGVscGVycy9udWxsLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBBcyB0aGUgbnVsbCBoYW5kbGVyIGlzIHBlcmZlY3RseSBjYXBhYmxlIG9mCisgICBoYW5kbGluZyBHRVRfQlVMSyByZXF1ZXN0cyBpdCBpcyBub3cgbWFya2VkIGFzIHN1Y2ggaW4gdGhlCisgICByZWdpc3RyYXRpb24uCiAKIDIwMDgtMDQtMDcgMTQ6MDAgIGR0czEyCiAKICAgICogc25tcGxpYi9wYXJzZS5jOgotICAgICBBbm90aGVyIG92ZXItc2hvcnQgREVTQ1JJUFRJT04gYnVmZmVyLgorCisgICBBbm90aGVyIG92ZXItc2hvcnQgREVTQ1JJUFRJT04gYnVmZmVyLgogCiAyMDA4LTA0LTA3IDEzOjU3ICBkdHMxMgogCiAgICAqIHNubXBsaWIvcGFyc2UuYzoKLSAgICAgSGFuZGxlIGxvbmdlciBERVNDUklQVElPTi9SRUZFUkVOQ0Ugc3RyaW5ncyBpbiBDYXBhYmlsaXRpZXMKLSAgICAgc3RhdGVtZW50cy4KLSAgICAgKENvbnNpc3RlbnQgcHJvY2Vzc2luZyB3aXRoIG90aGVyIE1JQiBkZWZpbml0aW9uIG1hY3JvcykuCi0gICAgIEZpeCBwcm92aWRlZCBieSBBbGVrc2FuZHIgTG9tYW5vdi4KKworICAgSGFuZGxlIGxvbmdlciBERVNDUklQVElPTi9SRUZFUkVOQ0Ugc3RyaW5ncyBpbiBDYXBhYmlsaXRpZXMKKyAgIHN0YXRlbWVudHMuCisgICAoQ29uc2lzdGVudCBwcm9jZXNzaW5nIHdpdGggb3RoZXIgTUlCIGRlZmluaXRpb24gbWFjcm9zKS4KKyAgIEZpeCBwcm92aWRlZCBieSBBbGVrc2FuZHIgTG9tYW5vdi4KKworMjAwOC0wNC0wMiAxOTozNSAgaGFyZGFrZXIKKworICAgKiBGQVE6CisKKyAgIG1lbnRpb24gbGliZWxmIHBhY2thZ2UgcmVuYW1lCisKKzIwMDgtMDMtMjkgMDk6MjkgIG1hZ2ZyCisKKyAgICogIFJFQURNRS5hZ2VudC1taWJzLCBhZ2VudC9NYWtlZmlsZS5pbiwgYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMsIGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYywgCisgICAgICAgIGFnZW50L3NubXBfdmFycy5jLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oOgorCisgICBORVdTOiBzbm1wZDogRW5hYmxlIGF1dG9tYXRpYyByZXJlZ2lzdGVyaW5nIG9mIHN5c09SVGFibGUgZW50cmllcworICAgZnJvbSBBZ2VudFggc3ViYWdlbnRzLiBBZGQgdGhlIHN5c09SVGFibGUgaW50ZXJmYWNlIHRvIHRoZQorICAgaW5jbHVkZSBkaXJlY3RvcnkuIFJld3JpdGUgdGhlIHN5c09SVGFibGUgbW9kdWxlIHRvIHVzZSB0aGUKKyAgIHRhYmxlX2NvbnRhaW5lciBoYW5kbGVyLgorCisyMDA4LTAzLTI3IDAzOjIxICBoYXJkYWtlcgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UsIGRpc3QvbmV0LXNubXAuc3BlYywgZGlzdC9wYXRtZToKKworICAgdW5jb21taXQgMyBhY2NpZGVudGFsIG11bHRpcGxlIGZpbGUgY29tbWl0cworCisyMDA4LTAzLTI3IDAzOjE4ICBoYXJkYWtlcgorCisgICAqICBkaXN0L21ha2VyZWxlYXNlLCBkaXN0L21ha2VyZWxlYXNlLnhtbCwgZGlzdC9uZXQtc25tcC5zcGVjLCAgIAorICAgICAgZGlzdC9wYXRtZToKKworICAgdmFyaW91cyByZXdvcmRpbmcsIHJlc3RydWN0dXJpbmcgYW5kIHByb3BlciBmaWxlIHJlcGxhY2VtZW50CisgICBzY2hlbWUKIAogMjAwOC0wMy0yNiAwNzo1MiAgbWFnZnIKIAogICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6Ci0gICAgIE5FV1M6IHNubXBsaWI6IGZyb20gIkFsZWtzYW5kciBMb21hbm92IjogQ29ycmVjdGVkIHJlZ2lzdGVyaW5nIG9mCi0gICAgIG11bHRpcGxlIHByZW1pYiBjb25maWcgaGFuZGxlcnMgc28gdGhhdCBhbGwgb2YgdGhlbSBnZXQKLSAgICAgcmVnaXN0ZXJlZCBhcyBwcmVtaWIgaGFuZGxlcnMgYXMgb3Bwb3NlZCB0byB0aGUgZWFybGllciBiZWhhdmlvdXIKLSAgICAgd2hlcmUgdGhleSBhbHdheXMgZ290IHJlZ2lzdGVyZWQgYXMgbm9ybWFsIGNvbmZpZyBpdGVtcy4KKworICAgTkVXUzogc25tcGxpYjogZnJvbSAiQWxla3NhbmRyIExvbWFub3YiOiBDb3JyZWN0ZWQgcmVnaXN0ZXJpbmcgb2YKKyAgIG11bHRpcGxlIHByZW1pYiBjb25maWcgaGFuZGxlcnMgc28gdGhhdCBhbGwgb2YgdGhlbSBnZXQKKyAgIHJlZ2lzdGVyZWQgYXMgcHJlbWliIGhhbmRsZXJzIGFzIG9wcG9zZWQgdG8gdGhlIGVhcmxpZXIgYmVoYXZpb3VyCisgICB3aGVyZSB0aGV5IGFsd2F5cyBnb3QgcmVnaXN0ZXJlZCBhcyBub3JtYWwgY29uZmlnIGl0ZW1zLgorCisyMDA4LTAzLTI2IDA3OjE2ICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBHZXQgdGhlIHRhYmxlX2NvbnRhaW5lciBkYXRhIGZyb20gdGhlIHJpZ2h0CisgICBoYW5kbGVyIHdoZW4gdW5yZWdpc3RlcmluZyBhIHRhYmxlX2NvbnRhaW5lci4KIAogMjAwOC0wMy0yNSAwNjowNyAgbWFnZnIKIAogICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgotICAgICBSZW1vdmUgc3B1cmlvdXMgcHJpbnRmIGZyb20gdW5yZWdpc3Rlcl9taWJfY29udGV4dAorCisgICBSZW1vdmUgc3B1cmlvdXMgcHJpbnRmIGZyb20gdW5yZWdpc3Rlcl9taWJfY29udGV4dAogCiAyMDA4LTAzLTI0IDE3OjU0ICBkdHMxMgogCiAgICAqIGxvY2FsL21pYjJjOgotICAgICBDSEFOR0VTOiBtaWIyYzogQlVHOiAxODc0MDU5LDE3MzcwNjg6IEhhbmRsZSBNSUIgb2JqZWN0cyB3aXRoCi0gICAgIGVtYmVkZGVkIGh5cGhlbnMKKworICAgQ0hBTkdFUzogbWliMmM6IEJVRzogMTg3NDA1OSwxNzM3MDY4OiBIYW5kbGUgTUlCIG9iamVjdHMgd2l0aAorICAgZW1iZWRkZWQgaHlwaGVucwogCiAyMDA4LTAzLTI0IDE3OjI5ICBkdHMxMgogCiAgICAqIHNubXBsaWIvYXNuMS5jOgotICAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDE4NjY2NTU6IEhhbmRsZSBwYXJzaW5nIGludmFsaWQgT0lECi0gICAgIHN1YmlkZW50aWZpZXJzCisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMTg2NjY1NTogSGFuZGxlIHBhcnNpbmcgaW52YWxpZCBPSUQKKyAgIHN1YmlkZW50aWZpZXJzCiAKIDIwMDgtMDMtMjQgMTY6NTMgIGR0czEyCiAKICAgICogc25tcGxpYi9hc24xLmM6Ci0gICAgIENIQU5HRVM6IGxpYnJhcnk6IFBBVENIOiAxOTIxODYxOiBBdm9pZCBlbmRsZXNzIGxvb3AgYWZ0ZXIKLSAgICAgdHJ1bmNhdGluZyA2NGJpdCBpbnQKKworICAgQ0hBTkdFUzogbGlicmFyeTogUEFUQ0g6IDE5MjE4NjE6IEF2b2lkIGVuZGxlc3MgbG9vcCBhZnRlcgorICAgdHJ1bmNhdGluZyA2NGJpdCBpbnQKIAogMjAwOC0wMy0yNCAxNTowMCAgZHRzMTIKIAogICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IEJVRzogMTgyMzM4MTogVmFsaWQgTUlCIGRpcmVjdG9yeSBzZWFyY2ggcGF0aCBvbgotICAgICBXaW5kb3dzCisKKyAgIENIQU5HRVM6IGJ1aWxkOiBCVUc6IDE4MjMzODE6IFZhbGlkIE1JQiBkaXJlY3Rvcnkgc2VhcmNoIHBhdGggb24KKyAgIFdpbmRvd3MKKworMjAwOC0wMy0yMiAwODo0MiAgbWFnZnIKKworICAgKiBhcHBzL3NubXB0cmFwZC5jOgorCisgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHNubXB0cmFwZCB3aXRob3V0IGVtYmVkZGVkIHBlcmwgYWdhaW4uCiAKIDIwMDgtMDMtMjEgMTc6NTUgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsIHNubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYywKLSAgICAgc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYywgc25tcGxpYi9zbm1wVENQRG9tYWluLmMsCi0gICAgIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYywgc25tcGxpYi9zbm1wVW5peERvbWFpbi5jLAotICAgICBzbm1wbGliL3dpbnBpcGUuYzoKLSAgICAgTkVXUzogbGlic25tcDogUEFUQ0g6IDE4OTU5Mjc6IGZyb20gamh1bTgxMTE6IGNoYW5nZSBvYnNvbGV0ZQotICAgICByZWN2L3NlbmQgdG8gcmVjdmZyb20vc2VuZHRvCisgICAqICBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYywgc25tcGxpYi9zbm1wVENQRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMsIHNubXBsaWIvc25tcFVuaXhEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvd2lucGlwZS5jOgorCisgICBORVdTOiBsaWJzbm1wOiBQQVRDSDogMTg5NTkyNzogZnJvbSBqaHVtODExMTogY2hhbmdlIG9ic29sZXRlCisgICByZWN2L3NlbmQgdG8gcmVjdmZyb20vc2VuZHRvCiAKIDIwMDgtMDMtMjEgMTc6NDkgIGhhcmRha2VyCiAKICAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKLSAgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSDogMTg2MjE3NzogZnJvbSB3YWZmbGVzb3VmZmxlOiBtYWRlIGNvZGUKLSAgICAgbW9yZSB3aW5kb3dzL2N5Z3dpbiBjb21waWxlciBmcmllbmRsCisKKyAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0g6IDE4NjIxNzc6IGZyb20gd2FmZmxlc291ZmZsZTogbWFkZSBjb2RlCisgICBtb3JlIHdpbmRvd3MvY3lnd2luIGNvbXBpbGVyIGZyaWVuZGwKIAogMjAwOC0wMy0yMSAxNzo0NSAgaGFyZGFrZXIKIAogICAgKiBweXRob24vbmV0c25tcC9jbGllbnQucHk6Ci0gICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0g6IDE4Nzc4NDA6IGZpeCBNSUIgbGFiZWwgYW5kIGluZGV4aW5nIGR1ZQotICAgICB0byBzbGlnaHRseSBicm9rZW4gcmVnZXhwCisKKyAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0g6IDE4Nzc4NDA6IGZpeCBNSUIgbGFiZWwgYW5kIGluZGV4aW5nIGR1ZQorICAgdG8gc2xpZ2h0bHkgYnJva2VuIHJlZ2V4cAogCiAyMDA4LTAzLTIxIDE3OjM5ICBoYXJkYWtlcgogCiAgICAqIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtOgotICAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMTkyMDM5MDogZnJvbSB3aWxtZXNqOiBmaXggcmVnaXN0cmF0aW9uIG9mCi0gICAgIHRhYmxlcyB3aXRoIC4wIGFzIElJRHMKKworICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDE5MjAzOTA6IGZyb20gd2lsbWVzajogZml4IHJlZ2lzdHJhdGlvbiBvZgorICAgdGFibGVzIHdpdGggLjAgYXMgSUlEcwogCiAyMDA4LTAzLTIxIDE3OjMyICBoYXJkYWtlcgogCiAgICAqIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtOgotICAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMTkxNDY0NTogZnJvbSB3aWxtZXNqOiBiZXR0ZXIgZW5kIG9mIG1pYgotICAgICBzdXBwb3J0CisKKyAgIENIQU5HRVM6IHBlcmw6IFBBVENIOiAxOTE0NjQ1OiBmcm9tIHdpbG1lc2o6IGJldHRlciBlbmQgb2YgbWliCisgICBzdXBwb3J0CiAKIDIwMDgtMDMtMjEgMTc6MjggIGhhcmRha2VyCiAKICAgICogcGVybC9hZ2VudC9hZ2VudC54czoKLSAgICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDE5MTQ2NDM6IGZyb20gd2lsbWVzajogZml4IGlzc3VlcyB3aXRoCi0gICAgIGVtYmVkZGVkIHBlcmwgcmV0dXJuaW5nIDAgYmVpbmcgcmVjbGFzc2lmaWVkIGFzIGEgd3JvbmcgZGF0YSB0eXBlCi0gICAgIHdoZW4gYW4gaW50IHdvcmtzLgorCisgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMTkxNDY0MzogZnJvbSB3aWxtZXNqOiBmaXggaXNzdWVzIHdpdGgKKyAgIGVtYmVkZGVkIHBlcmwgcmV0dXJuaW5nIDAgYmVpbmcgcmVjbGFzc2lmaWVkIGFzIGEgd3JvbmcgZGF0YSB0eXBlCisgICB3aGVuIGFuIGludCB3b3Jrcy4KIAogMjAwOC0wMy0yMSAxNzoyMiAgaGFyZGFrZXIKIAogICAgKiBsb2NhbC9NYWtlZmlsZS5pbjoKLSAgICAgQ0hBTkdFUzogbWliMmM6IFBBVENIIDE5MTQzOTg6IGZyb20gd2lsbWVzajogaW5zdGFsbAotICAgICBtaWIyYy5wZXJsLmNvbmYKKworICAgQ0hBTkdFUzogbWliMmM6IFBBVENIIDE5MTQzOTg6IGZyb20gd2lsbWVzajogaW5zdGFsbAorICAgbWliMmMucGVybC5jb25mCiAKIDIwMDgtMDMtMjEgMTc6MDIgIGhhcmRha2VyCiAKICAgICogcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG06Ci0gICAgIENIQU5HRVM6IHBlcmw6IFBBVENIOiAxOTE0MzkzOiBmcm9tIHdpbG1lc2o6IHJlZ2lzdGVyQWdlbnQgY2FuCi0gICAgIG5vdyBiZSBydW4gbXVsdGlwbGUgdGltZXMKKworICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDE5MTQzOTM6IGZyb20gd2lsbWVzajogcmVnaXN0ZXJBZ2VudCBjYW4KKyAgIG5vdyBiZSBydW4gbXVsdGlwbGUgdGltZXMKIAogMjAwOC0wMy0yMSAxNjozNSAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6Ci0gICAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTkwOTgxMzogZml4IHRhYmxlX2l0ZXJhdG9yIGhpbnQgdG8gZ2V0X2ZpcnN0Ci0gICAgIHdoZW4gU09SVEVEIGZsYWcgaXMgc2V0CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTkwOTgxMzogZml4IHRhYmxlX2l0ZXJhdG9yIGhpbnQgdG8gZ2V0X2ZpcnN0CisgICB3aGVuIFNPUlRFRCBmbGFnIGlzIHNldAorCisyMDA4LTAzLTIxIDE2OjI0ICBoYXJkYWtlcgorCisgICAqIGFnZW50L3NubXBfcGVybC5jLCBhcHBzL3NubXB0cmFwZC5jOgorCisgICBORVdTOiBzbm1wdHJhcGQ6IFBBVENIOiAxOTA4Mjg4OiBmcm9tIGFuZWRlbDogSWYgc25tcHRyYXBkIC1mCisgICBpbnRlcnJ1cHRlZCB3aXRoIGN0cmwtQyBydW4gcGVybCBFTkQgYmxvY2sKKworMjAwOC0wMy0yMSAxNjoxNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IFBBVENIOiAxOTAyMTEzOiBmcm9tIGpzYWZyYW5lazogZml4IGVycm9yIGxvZyBpbgorICAgaW5ldE5ldFRvTWVkaWF0YWJsZQorCisyMDA4LTAzLTIxIDE2OjEyICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmM6CisKKyAgIENIQU5HRVM6IFBBVENIOiAxOTAyMTA1OiBmcm9tIGpzYWZyYW5lazogaGlkZSBhbmQgaW1wcm92ZSBkZWJ1ZworICAgbG9nIG1lc3NhZ2VzIGNyZWF0ZWQgYnkgcGF0Y2ggMTcwNTU5NAorCisyMDA4LTAzLTA3IDE1OjQyICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuaDoKKworICAgSEFMLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBockZTVGFibGUuCisKKzIwMDgtMDMtMDcgMTU6NDAgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMsIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9tbnR0eXBlcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9tb3VudHMuaDoKKworICAgSW5pdGlhbCBIQUwgaW1wbGVtZW50YXRpb24gb2YgRmlsZVN5c3RlbSBpbmZvcm1hdGlvbgorCisyMDA4LTAzLTA3IDE1OjM1ICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDaGVjayBmb3IgZ2V0dmZzc3RhdCgpCisKKzIwMDgtMDMtMDcgMTU6MzQgIGR0czEyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBCVUc6IDE4MjMzODE6IFVzZSBhIHNlbnNpYmxlIGRlZmF1bHQgTUlCRElSIHBhdGgKKyAgIG9uIEN5Z3dpbi9NaW5HVworICAgKFNob3VsZCB0aGlzIGJlIGFwcGxpZWQgdG8gb3RoZXIgYnJhbmNoZXM/IElmIHNvLCB3aGljaD8pCiAKIDIwMDgtMDItMjcgMjI6MTIgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYzoKLSAgICAgRml4IEMrKyBzdHlsZSBjb21tZW50CisKKyAgIEZpeCBDKysgc3R5bGUgY29tbWVudAorCisyMDA4LTAyLTI3IDA3OjQ5ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jOgorCisgICBUaGUgTFZNIGRpc2sgcGF0Y2ggaW50cm9kdWNlZCBhIG1lbW9yeSBsZWFrLiBUaGlzIHJlbW92ZXMgdGhlCisgICBsZWFrLgorCisyMDA4LTAyLTI2IDIzOjI3ICBoYXJkYWtlcgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOgorCisgICBtYWtlIHRoZSBzY3JpcHQgbW9yZSBoaWVyYXJjaGlhbC9zdHJ1Y3R1cmVkCisKKzIwMDgtMDItMjYgMjE6MzYgIG5iYQorCisgICAqIGFwcHMvc25tcHRyYW5zbGF0ZS5jOgorCisgICBDSEFOR0VTOiBJbml0YWxpemUgbG9nIHN1YnN5c3RlbQorCisyMDA4LTAyLTI2IDIxOjM0ICBuYmEKKworICAgKiBzbm1wbGliL3BhcnNlLmM6CisKKyAgIENIQU5HRVM6IEZpeCBmb3IgcmVmcyB0byBPQkpFQ1QtR1JPVVAgaW4gYW5vdGhlciBNSUIKKworMjAwOC0wMi0yNiAyMToyMyAgbmJhCisKKyAgICogIG1pYnMvRElTTUFOLUVWRU5ULU1JQi50eHQsIG1pYnMvRElTTUFOLUVYUFJFU1NJT04tTUlCLnR4dCwgICAKKyAgICAgIG1pYnMvSVAtRk9SV0FSRC1NSUIudHh0LCBtaWJzL0lQLU1JQi50eHQsICAgCisgICAgICBtaWJzL0lQVjYtRkxPVy1MQUJFTC1NSUIudHh0LCBtaWJzL05PVElGSUNBVElPTi1MT0ctTUlCLnR4dCwgICAKKyAgICAgIG1pYnMvU05NUC1VU00tQUVTLU1JQi50eHQsIG1pYnMvU05NUC1VU00tREgtT0JKRUNUUy1NSUIudHh0LCAgIAorICAgICAgbWlicy9UUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0LCBtaWJzL1RVTk5FTC1NSUIudHh0OgorCisgICBVcGRhdGUgdG8gYXV0b2V4dHJhY3RlZCBtaWIgZmlsZXMgKGJsYW5rIGxpbmUgY2hhbm1nZXMpCisKKzIwMDgtMDItMjYgMjA6NDYgIG5iYQorCisgICAqIG1pYnMvTWFrZWZpbGUubWliLCBtaWJzL2lhbmFsaXN0LCBtaWJzL3JmY2xpc3Q6CisKKyAgIFVwZGF0ZSBmb3IgY3VycmVudGx5IHJlbGVhc2VkIFJGQyBNSUJTCisKKzIwMDgtMDItMjYgMjA6NDUgIG5iYQorCisgICAqICBtaWJzL0lBTkEtQUREUkVTUy1GQU1JTFktTlVNQkVSUy1NSUIudHh0LCAgIAorICAgICAgbWlicy9JQU5BLUxBTkdVQUdFLU1JQi50eHQsIG1pYnMvSUFOQS1SVFBST1RPLU1JQi50eHQsICAgCisgICAgICBtaWJzL0lBTkFpZlR5cGUtTUlCLnR4dDoKKworICAgVXBkYXRlIElBTkEgTUlCUyB0byBjdXJyZW50IHZlcnNpb24KKworMjAwOC0wMi0yNSAyMjoyMSAgdGFuZGVycworCisgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaDoKKworICAgYWRkIG1pc3NpbmcgI2luY2x1ZGU8cHRocmVhZC5oPiBmb3IgcHRocmVhZF9tdXRleF90CisKKzIwMDgtMDItMjUgMjI6MDYgIHRhbmRlcnMKKworICAgKiBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYzoKKworICAgYSBiZXR0ZXIgcG9ydGFiaWxpdHkgZml4CisKKzIwMDgtMDItMjMgMDA6NTkgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uc3RhbnRzLmgsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmg6CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTcwNTU5NDogZnJvbSBjX3ZhcnVuOiBGaXggdmFyaW91cyBhc3BlY3RzIG9mCisgICBsaW51eCBpcEFkZHJlc3NQcmVmaXhUYWJsZSByZXBvcnRpbmcuCiAKIDIwMDgtMDItMjIgMjM6NTIgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4OTYxMTg6IHBhdGNoIGZyb20ganNhZnJhbmVrOiBmaXggaWZUYWJsZQotICAgICAzMmJpdCBjb3VudGVycyBvbiBsaW51eAorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4OTYxMTg6IHBhdGNoIGZyb20ganNhZnJhbmVrOiBmaXggaWZUYWJsZQorICAgMzJiaXQgY291bnRlcnMgb24gbGludXgKKworMjAwOC0wMi0yMiAyMzo0OSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9saW51eC5jOgorCisgICBwYXRjaCBmcm9tIGpzYWZyYW5lazogQ3JlYXRlIGlwdjZTY29wZVpvbmVFbnRyeSBvbmx5IGZvcgorICAgbGluay1sb2NhbCBhZGRyZXNzZXMgYW5kIG9ubHkgb25jZSBwZXIgaW50ZXJmYWNlLgogCiAyMDA4LTAyLTIyIDIzOjQ0ICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvcGFyc2UuYzoKLSAgICAgQ0hBTkdFUzogbGlic25tcDogUEFUQ0g6IDE4OTgyMDQ6IGZyb20gTWlrZSBXZXNjb3R0OiBmaXggYnVnCi0gICAgIDE4OTgxOTggaW4gcGFyc2UuYyB0byBhdm9pZCBhIHNlZ2ZhdWx0IHdoZW4gcGFyc2luZyBicm9rZW4gbWlicy4KKworICAgQ0hBTkdFUzogbGlic25tcDogUEFUQ0g6IDE4OTgyMDQ6IGZyb20gTWlrZSBXZXNjb3R0OiBmaXggYnVnCisgICAxODk4MTk4IGluIHBhcnNlLmMgdG8gYXZvaWQgYSBzZWdmYXVsdCB3aGVuIHBhcnNpbmcgYnJva2VuIG1pYnMuCiAKIDIwMDgtMDItMTggMTI6MTEgIGR0czEyCiAKICAgICogbWFuL21pYl9hcGkuMy5kZWY6Ci0gICAgIENsYXJpZnkgdGhlIG5lZWQgdG8gcmVzZXQgYnVmZmVyIGxlbmd0aCB3aGVuIGNhbGxpbmcgJ3JlYWRfb2JqaWQnCi0gICAgIHJlcGVhdGVkbHkuCisKKyAgIENsYXJpZnkgdGhlIG5lZWQgdG8gcmVzZXQgYnVmZmVyIGxlbmd0aCB3aGVuIGNhbGxpbmcgJ3JlYWRfb2JqaWQnCisgICByZXBlYXRlZGx5LgorCisyMDA4LTAyLTE4IDEwOjMyICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmM6CisKKyAgIHBvcnRhYmlsaXR5IGZpeAorCisyMDA4LTAyLTE4IDA3OjM5ICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmM6CisKKyAgIG1ha2Ugc3VyZSB0aGF0IG5ldHNubXBfaXF1ZXJ5X3VzZXJfc2Vzc2lvbiBldCBhbC4gYXJlIHByb3Blcmx5CisgICBkZWNsYXJlZAogCiAyMDA4LTAyLTE3IDE4OjAxICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmM6Ci0gICAgIGZpeCB0eXBvIGluIHZhcmlhYmxlIG5hbWUKKworICAgZml4IHR5cG8gaW4gdmFyaWFibGUgbmFtZQogCiAyMDA4LTAyLTE3IDA4OjM4ICB0YW5kZXJzCiAKICAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKLSAgICAgcG9ydGFiaWxpdHkgZml4CisKKyAgIHBvcnRhYmlsaXR5IGZpeAorCisyMDA4LTAyLTE1IDE3OjQ1ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKKworICAgbG93ZXJlZCBmYWlsdXJlIG1lc3NhZ2UgdG8gaW5zZXJ0IHRvIGRlYnVnOyByZW1vdmVkIENWUyBJRCBmcm9tCisgICB0b3Agb2YgbGluZQorCisyMDA4LTAyLTE1IDE3OjM5ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKKworICAgZG9uJ3QgaW5zZXJ0IGVtcHR5IGVudHJpZXMKKworMjAwOC0wMi0xNSAxNzozMSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6CisKKyAgIHBhdGNoIGZyb20ganNhZnJhbmUgb24gaXJjOiBtYWtlIGlwdjYgZW50cmllcyB3b3JrIG9uIDY0IGJpdAorICAgbWFjaGluZXMKKworMjAwOC0wMi0xNSAxNjoyNCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKKworICAgcGFzcyAxIGF0IGEgbmV3IG1ha2VyZWxlYXNlIHNjcmlwdDsgY3VycmVudGx5IGp1c3QgY29udmVydGVkIGNvZGUKKyAgIG1vc3RseQorCisyMDA4LTAyLTE1IDE2OjIyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jOgorCisgICByZW1vdmUgbGludXggY2hlY2tzCisKKzIwMDgtMDItMTUgMTU6NDUgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jOgorCisgICByZW1vdmUgcmVmZXJlbmNlcyB0byBSREFfUlRBCisKKzIwMDgtMDItMTUgMTU6MzcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jOgorCisgICBkb24ndCBjb21waWxlIGluIHRoZSBpcHY2IGNvZGUgaWYgTkRBX1JUQSBpc24ndCBkZWZpbmVkCiAKIDIwMDgtMDItMTUgMTM6MDAgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jOgotICAgICBwb3J0YWJpbGl0eSBmaXgKKworICAgcG9ydGFiaWxpdHkgZml4CisKKzIwMDgtMDItMTUgMDY6MTkgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jOgorCisgICBtaW5vciBidWcgdXBkYXRlIGZyb20gY192YXJ1bgorCisyMDA4LTAyLTE1IDA1OjEzICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKworICAgTkVXUzogc25tcGQ6IFBBVENIOiAxNzA0MTA1OiBmcm9tIGNfdmFydW46IEFkZCBJUHY2IHN1cHBvcnQgdG8KKyAgIHRoZSBpbmV0TmV0VG9NZWRpYVRhYmxlIGZvciBsaW51eAorCisyMDA4LTAyLTE1IDA1OjEyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi5oOgorCisgICByZXF1aXJlIG5ldyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSB0YWJsZQorCisyMDA4LTAyLTE1IDA1OjAwICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmVfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZW51bXMuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmgsCisgICAgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oOgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDE3MTU0MDU6IGZyb20gY192YXJ1bjogSW1wbGVtZW50IHRoZQorICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgb24gbGludXgKIAogMjAwOC0wMi0xNSAwNDozOSAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9zbm1wZC5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3MTY1NDg6IGZyb20gbXlhbWF0bzogRml4IGhlbHAgb3V0cHV0IHNvCi0gICAgIG5vIHNwYWNlIGlzIHByaW50ZWQgYmV0d2VlbiAtRCBhbmQgYXJndW1lbnRzLgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3MTY1NDg6IGZyb20gbXlhbWF0bzogRml4IGhlbHAgb3V0cHV0IHNvCisgICBubyBzcGFjZSBpcyBwcmludGVkIGJldHdlZW4gLUQgYW5kIGFyZ3VtZW50cy4KKworMjAwOC0wMi0xNSAwNDoyNyAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi5oLCBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5oOgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDE3MjM2MTE6IGZyb20gRW1pIFlhbmFnaTogTmV3IGltcGxlbWVudGF0aW9uCisgICBvZiB0aGUgcm1vbiBhbGFybVRhYmxlCiAKIDIwMDgtMDItMTUgMDM6NDQgIGhhcmRha2VyCiAKICAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKLSAgICAgTkVXUzogc25tcGQ6IFBBVENIOiAxODkzNDY4OiBmcm9tIGdrb2VuaWc6IGZpeGVkIHJlZ2lzdHJhdGlvbiBvZgotICAgICBPSURzIHdpdGggcmFuZ2VzCisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTg5MzQ2ODogZnJvbSBna29lbmlnOiBmaXhlZCByZWdpc3RyYXRpb24gb2YKKyAgIE9JRHMgd2l0aCByYW5nZXMKIAogMjAwOC0wMi0xNCAyMTo0MCAgdGFuZGVycwogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jOgotICAgICBmaXggdHlwbyBpbiB2YXJpYWJsZSBkZWNsYXJhdGlvbiAodW5icmVha3MgdGhlIGJ1aWxkIG9uIGEgZmV3Ci0gICAgIHN5c3RlbXMpCisKKyAgIGZpeCB0eXBvIGluIHZhcmlhYmxlIGRlY2xhcmF0aW9uICh1bmJyZWFrcyB0aGUgYnVpbGQgb24gYSBmZXcKKyAgIHN5c3RlbXMpCiAKIDIwMDgtMDItMTQgMDA6MjkgIGhhcmRha2VyCiAKICAgICogQ09QWUlORzoKLSAgICAgeWVhciB1cGRhdGUgZm9yIHNwYXJ0YQorCisgICB5ZWFyIHVwZGF0ZSBmb3Igc3BhcnRhCiAKIDIwMDgtMDItMTMgMjM6MzcgIG1hZ2ZyCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oLCBzbm1wbGliL2NvbnRhaW5lci5jOgotICAgICBORVdTOiBzbm1wbGliOiBDaGFuZ2UgQ09OVEFJTkVSX0lOU0VSVCB0byBub3QgZG8gcGFydGlhbCBpbnNlcnRzCi0gICAgIGluIGNvbnRhaW5lcnMgd2l0aCBtdWx0aXBsZSBpbmRpY2VzIHdoZW4gb25lIGluc2VydCBmYWlscy4KKworICAgTkVXUzogc25tcGxpYjogQ2hhbmdlIENPTlRBSU5FUl9JTlNFUlQgdG8gbm90IGRvIHBhcnRpYWwgaW5zZXJ0cworICAgaW4gY29udGFpbmVycyB3aXRoIG11bHRpcGxlIGluZGljZXMgd2hlbiBvbmUgaW5zZXJ0IGZhaWxzLgogCiAyMDA4LTAyLTEzIDIzOjExICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvc25tcHVzbS5jOgotICAgICBGaXhlZCB0aGUgY3JlYXRlVXNlciBsaW5lIHRvIHNwZWNpZnkgdGhlIC1lIGZsYWcgKHJlc3BvbmRpbmcgdG8gYQotICAgICBjb21wbGFpbnQgYWJvdXQgaXQgYmUgbWlzc2luZykKKworICAgRml4ZWQgdGhlIGNyZWF0ZVVzZXIgbGluZSB0byBzcGVjaWZ5IHRoZSAtZSBmbGFnIChyZXNwb25kaW5nIHRvIGEKKyAgIGNvbXBsYWludCBhYm91dCBpdCBiZSBtaXNzaW5nKQorCisyMDA4LTAyLTEzIDE3OjQyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDE3Nzk1NTg6IGZyb20gYnJ1bWJzOiBJbXBsZW1lbnQgdGhlCisgICBkaXNrSU9MQTEsNSwxMCBvYmplY3Rpb25zIGluIHRoZSBkaXNraW8tbWliIHVuZGVyIGxpbnV4CiAKIDIwMDgtMDItMTMgMTc6MTUgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzgzNzMzOiBQdXQgdGhlIHBhY2thZ2UgdmVyc2lvbiBudW1iZXIKLSAgICAgaW50byB0aGUgaHJTV0luc3QgdGFibGUgZm9yIHNvbGFyaXMuCisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc4MzczMzogUHV0IHRoZSBwYWNrYWdlIHZlcnNpb24gbnVtYmVyCisgICBpbnRvIHRoZSBoclNXSW5zdCB0YWJsZSBmb3Igc29sYXJpcy4KKworMjAwOC0wMi0xMyAxNjo1OCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc4MzQyMzogZnJvbSBqc2FmcmFuZWs6IHJldHVybiBhIGNvcnJlY3QKKyAgIGlwdjZJbnRlcmZhY2VJZGVudGlmaWVyIG9mIGxvb3BiYWNrIG9uIGxpbnV4CiAKIDIwMDgtMDItMTMgMTY6MTIgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3ODQ3NDc6IGZyb20ganNhZnJhbmVrOiBGaXggbG9uZyB1c2FnZQotICAgICBmb3IgaXAgYWRyZXNzZXMgb24gNjQgYml0IHN5c3RlbXMgaW4gdmFyaW91cyBNSUItSUkgdGFibGVzLgorICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc4NDc0NzogZnJvbSBqc2FmcmFuZWs6IEZpeCBsb25nIHVzYWdlCisgICBmb3IgaXAgYWRyZXNzZXMgb24gNjQgYml0IHN5c3RlbXMgaW4gdmFyaW91cyBNSUItSUkgdGFibGVzLgorCisyMDA4LTAyLTEzIDE2OjA3ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmg6CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTgwNjUwMTogZnJvbSBqbWFnZGVyOiBBZGQgYSBzbm1wX3YzdHJhcAorICAgZnVuY3Rpb24gZm9yIHNlbmRpbmcgdHJhcHMgd2l0aCBhIHNubXB2MyBjb250ZXh0CiAKIDIwMDgtMDItMTMgMTY6MDIgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLAotICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaDoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODI2MTAyOiBmcm9tIGpzYWZyYW5lazogc3VwcG9ydCBsb25nZXIKLSAgICAgaW50ZXJmYWNlIG5hbWVzIG9uIGxpbnV4CisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaDoKIAotMjAwOC0wMi0xMyAwOToyMiAgdGFuZGVycwotCi0gICAqIGNvbmZpZ3VyZToKLSAgICAgcmV2ZXJ0IHRvIGF1dG9jb25mIDIuNTkgcGVyIGV4aXN0aW5nIHBvbGljeQorICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODI2MTAyOiBmcm9tIGpzYWZyYW5lazogc3VwcG9ydCBsb25nZXIKKyAgIGludGVyZmFjZSBuYW1lcyBvbiBsaW51eAogCiAyMDA4LTAyLTEyIDIzOjIzICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvbWliLmM6Ci0gICAgIENIQU5HRVM6IGxpYnNubXA6IFBBVENIOiAxODA3NDg5OiBmaXggaWdub3Jpbmcgb2YgZGlzcGxheSBoaW50cy4KKworICAgQ0hBTkdFUzogbGlic25tcDogUEFUQ0g6IDE4MDc0ODk6IGZpeCBpZ25vcmluZyBvZiBkaXNwbGF5IGhpbnRzLgorCisyMDA4LTAyLTEyIDIzOjE5ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKKworICAgCisKKzIwMDgtMDItMTIgMjM6MTYgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMTgyMzQ2NSBmcm9tIGpzYWZyYW5lazogZml4IGljbXAgY2FjaGUKKyAgIHJlZ2lzdHJhdGlvbgorCisyMDA4LTAyLTEyIDIyOjE2ICBoYXJkYWtlcgorCisgICAqICBSRUFETUUuYWdlbnQtbWlicywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jOgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDE4Mjg2MDI6IGZyb20gdGdvaGFkOiBTdXBwb3J0IGlwRGVmYXVsdFRUTAorICAgYW5kIGlwRm9yd2FyZGluZyBTRVRzIG9uIGxpbnV4CiAKIDIwMDgtMDItMTIgMjI6MDkgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTg2NjgyMzogZnJvbSBqc2FmcmFuZWs6IHRydW5jYXRlIDMyIGJpdAotICAgICBjb3VudGVyIHZhbHVlcyBvbiA2NCBiaXQgbWFjaGluZXMgdG8gYXZvaWQgYm9ndXMgd2FybmluZ3MuCisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTg2NjgyMzogZnJvbSBqc2FmcmFuZWs6IHRydW5jYXRlIDMyIGJpdAorICAgY291bnRlciB2YWx1ZXMgb24gNjQgYml0IG1hY2hpbmVzIHRvIGF2b2lkIGJvZ3VzIHdhcm5pbmdzLgogCiAyMDA4LTAyLTEyIDE5OjA1ICBoYXJkYWtlcgogCi0gICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4NDk5MDM6IGZyb20ganNhZnJhbmVrOiBkbyBub3Qgc3BhbSBsb2cKLSAgICAgd2l0aCBhc3NlcnRzIHdoZW4gWEVOIGlzIHVzZWQKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODQ5OTAzOiBmcm9tIGpzYWZyYW5lazogZG8gbm90IHNwYW0gbG9nCisgICB3aXRoIGFzc2VydHMgd2hlbiBYRU4gaXMgdXNlZAogCiAyMDA4LTAyLTEyIDE4OjUwICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvY2FsbGJhY2suYzoKLSAgICAgQ0hBTkdFUzogbGlic25tcDogUEFUQ0g6IDE4NzUwMjI6IGZyb20gc2VtX3ByZzogaW1wcm92ZSBjYWxsYmFjawotICAgICBsb2NraW5nIG1lY2hhbmlzbXMKKworICAgQ0hBTkdFUzogbGlic25tcDogUEFUQ0g6IDE4NzUwMjI6IGZyb20gc2VtX3ByZzogaW1wcm92ZSBjYWxsYmFjaworICAgbG9ja2luZyBtZWNoYW5pc21zCiAKIDIwMDgtMDItMTIgMTc6NDAgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTg3OTI2MTogZnJvbSBhbWVzYnVyeTogQWRkIGluIGluYWN0aXZlCi0gICAgIG1lbW9yeSB0byB0aGUgY2FjaGVkIHJlcG9ydCBmb3IgZnJlZWJzZAogCi0yMDA4LTAyLTEyIDE1OjIyICBoYXJkYWtlcgorICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODc5MjYxOiBmcm9tIGFtZXNidXJ5OiBBZGQgaW4gaW5hY3RpdmUKKyAgIG1lbW9yeSB0byB0aGUgY2FjaGVkIHJlcG9ydCBmb3IgZnJlZWJzZAorCisyMDA4LTAyLTEyIDE1OjMyICBoYXJkYWtlcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaCwgc25tcGxpYi9zbm1wdjMuYzoKKworICAgTkVXUzogbGlic25tcDogUGF0Y2g6IDE4ODIwNjk6IGZyb20gbnNjaHJlbms6IEFkZCBhIGV4YWN0RW5naW5lSUQKKyAgIHRva2VuIGZvciBzcGVjaWZ5aW5nIGFuIGV4YWN0IFNOTVB2MyBlbmdpbmVJRCB0byB1c2UKKworMjAwOC0wMi0xMiAxNToxOCAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYzoKLSAgICAgQ2hhbmdlIHNucHJpbnRmIHByaW50IGxlbmd0aHMgdG8gbGVuLTEgdG8gbGVhdmUgMCBpbiBmaW5hbAotICAgICBwb3NpdGlvbiBmb3IgcHJpbnRpbmcKKworICAgbWlub3IgY2xlYW51cHMgZnJvbSByZXZpZXdpbmcgcGFydHMgb2YgdGhlIGNvZGUKKworMjAwOC0wMi0xMiAxNToxNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYzoKKworICAgTkVXUzogc25tcGQ6IFBBVENIOiAxODgyNjIxOiBmcm9tIGpzYWZyYW5lazogQWRkIExWTSBzdXBwb3J0IHRvCisgICB0aGUgcGFydGl0aW9uIHRhYmxlCiAKIDIwMDgtMDItMTEgMjI6MjYgIGhhcmRha2VyCiAKICAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0gICAgIGZpeCBxdW90ZWQgc3RyaW5ncyBpbiBoZWxwIG91dHB1dAorCisgICBmaXggcXVvdGVkIHN0cmluZ3MgaW4gaGVscCBvdXRwdXQKIAogMjAwOC0wMS0zMCAxNzoyOSAgaGFyZGFrZXIKIAogICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLSAgICAgYWRkZWQgdmFjbV9jb25mIHRvIGV4aXN0aW5nIGNvbmZpZ3VyZSBmaWxlcyAoZm9yIHRyYXBkIHRvbykKKworICAgYWRkZWQgdmFjbV9jb25mIHRvIGV4aXN0aW5nIGNvbmZpZ3VyZSBmaWxlcyAoZm9yIHRyYXBkIHRvbykKIAogMjAwOC0wMS0yMCAwNzo1NSAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBDSEFOR0VTOiBidWlsZDogQlVHOiAxODcyMjY2OiBQRVJMQ0MgY2hlY2sgZmFpbHMgZm9yIENDIHdpdGgKLSAgICAgb3B0aW9ucworCisgICBDSEFOR0VTOiBidWlsZDogQlVHOiAxODcyMjY2OiBQRVJMQ0MgY2hlY2sgZmFpbHMgZm9yIENDIHdpdGgKKyAgIG9wdGlvbnMKIAogMjAwOC0wMS0xNyAwMToxMyAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaDoKLSAgICAgZml4IGRlZmF1bHQgbWlicyB0byBpbmNsdWRlIHZhY21fY29uZiB0b28KKworICAgZml4IGRlZmF1bHQgbWlicyB0byBpbmNsdWRlIHZhY21fY29uZiB0b28KIAogMjAwOC0wMS0xNyAwMDowOSAgbWFnZnIKIAogICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTgyNjA4ODogZnJvbSBKYW4gU2FmcmFuZWs6IFVzZSB0aGUgcmlnaHQKLSAgICAgaW50ZXJmYWNlIHQgcmVhZCB0aGUgbmV0bWFzaworCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4MjYwODg6IGZyb20gSmFuIFNhZnJhbmVrOiBVc2UgdGhlIHJpZ2h0CisgICBpbnRlcmZhY2UgdCByZWFkIHRoZSBuZXRtYXNrCiAKIDIwMDgtMDEtMTYgMjE6NTQgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgotICAgICBDSEFOR0VTOiBIYW5kbGUgZGV2aWNlIG5hbWVzIHdpdGggZW1iZWRkZWQgc3BhY2VzIGluCi0gICAgIFVDRC1TTk1QLU1JQjo6ZHNrRGV2aWNlCisKKyAgIENIQU5HRVM6IEhhbmRsZSBkZXZpY2UgbmFtZXMgd2l0aCBlbWJlZGRlZCBzcGFjZXMgaW4KKyAgIFVDRC1TTk1QLU1JQjo6ZHNrRGV2aWNlCiAKIDIwMDgtMDEtMTYgMDA6NDcgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4Mjg4Mzk6IGZyb20ganNhZnJhbmVrIHRvIHByb3ZpZGUgYmV0dGVyCi0gICAgIGhhbmRsaW5nIG9mIGRpc2tzIG1vdW50ZWQgb24gcGF0aHMgd2l0aCBlbWJlZGRlZCBzcGFjZXMKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODI4ODM5OiBmcm9tIGpzYWZyYW5layB0byBwcm92aWRlIGJldHRlcgorICAgaGFuZGxpbmcgb2YgZGlza3MgbW91bnRlZCBvbiBwYXRocyB3aXRoIGVtYmVkZGVkIHNwYWNlcwogCiAyMDA4LTAxLTE1IDE2OjQ3ICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jOgotICAgICBjb3Zlcml0eSBidWcgMjA1OiBkb3VibGUgY2hlY2sgcG9pbnRlciB0aGF0IHNob3VsZCBuZXZlciBiZSBudWxsCisKKyAgIGNvdmVyaXR5IGJ1ZyAyMDU6IGRvdWJsZSBjaGVjayBwb2ludGVyIHRoYXQgc2hvdWxkIG5ldmVyIGJlIG51bGwKKworMjAwOC0wMS0xNCAyMzo1NSAgbWFnZnIKKworICAgKiAgUkVBRE1FLmFnZW50LW1pYnMsIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5jLCBhZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmg6CisKKyAgIFVwZGF0ZSB0aGUgc25tcCBhbmQgc3lzdGVtIG1pYnMgdG8gYmUgaGFuZGxlciBiYXNlZAorCisyMDA4LTAxLTEzIDAwOjAwICBtYWdmcgorCisgICAqICBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlMsICAKKyAgICAgICBkb3h5Z2VuLmNvbmYsIGxvY2FsL1ZlcnNpb24tTXVuZ2UucGwsIHNlZHNjcmlwdC5pbiwgICAKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisKKyAgIExlc3NlbiB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0aGF0IG5lZWQgdG8gYmUgY2hhbmdlZCBpbiBvcmRlciB0bworICAgZG8gYSByZWxlYXNlLgorICAgQ2hhbmdlIHRvIHVzZSB0aGUgY29uZmlndXJlIHZlcnNpb24gbnVtYmVyIGFzIHRoZSBwYWNrYWdlIHZlcnNpb24KKyAgIG51bWJlci4KIAogMjAwOC0wMS0wOSAyMTo1OCAgbWFnZnIKIAogICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzoKLSAgICAgRGVsZXRlIHVudXNlZCBzdGF0aWMgZnVuY3Rpb25zCisKKyAgIERlbGV0ZSB1bnVzZWQgc3RhdGljIGZ1bmN0aW9ucwogCiAyMDA4LTAxLTA2IDEzOjAxICBtYWdmcgogCiAgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzoKLSAgICAgTWFrZSBlcnJvcl9zdHJpbmcgcHJpdmF0ZSBhbmQgcmVhZG9ubHkKKworICAgTWFrZSBlcnJvcl9zdHJpbmcgcHJpdmF0ZSBhbmQgcmVhZG9ubHkKIAogMjAwNy0xMi0yMiAxOToyMiAgZHRzMTIKIAogICAgKiBwZXJsL1NOTVAvU05NUC54czoKLSAgICAgQ0hBTkdFUzogcGVybDogQlVHOiAxODI2MTc0OiBDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93IHdoZW4KLSAgICAgcHJpbnRpbmcgdmFsdWVzLgorCisgICBDSEFOR0VTOiBwZXJsOiBCVUc6IDE4MjYxNzQ6IENoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3cgd2hlbgorICAgcHJpbnRpbmcgdmFsdWVzLgogCiAyMDA3LTEyLTIxIDIzOjE5ICBkdHMxMgogCiAgICAqIHBlcmwvU05NUC9TTk1QLnBtOgotICAgICBDSEFOR0VTOiBwZXJsOiBCVUc6IDE3NDc3MzM6IE1vcmUgcm9idXN0IGhhbmRsaW5nIG9mIHVuZGVmaW5lZAotICAgICB2YWx1ZXMuCi0gICAgIFBhdGNoIHN1cHBsaWVkIGJ5IE1hdHRpIExpbm5hbnZ1b3JpCisKKyAgIENIQU5HRVM6IHBlcmw6IEJVRzogMTc0NzczMzogTW9yZSByb2J1c3QgaGFuZGxpbmcgb2YgdW5kZWZpbmVkCisgICB2YWx1ZXMuCisgICBQYXRjaCBzdXBwbGllZCBieSBNYXR0aSBMaW5uYW52dW9yaQogCiAyMDA3LTEyLTIxIDIxOjMzICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE3NDgyMDY6IFByb3RlY3QgYWdhaW5zdCBmYWlsdXJlcyB0byBvcGVuCi0gICAgIC9ldGMvbXRhYiAob3IgZXF1aXYpCisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE3NDgyMDY6IFByb3RlY3QgYWdhaW5zdCBmYWlsdXJlcyB0byBvcGVuCisgICAvZXRjL210YWIgKG9yIGVxdWl2KQogCiAyMDA3LTEyLTIxIDE4OjQyICBkdHMxMgogCiAgICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKLSAgICAgQnJpbmcgb3JkZXIgb2YgYWdlbnQgbGlicmFyeSBsaW5raW5nIGludG8gbGluZSB3aXRoIGFnZW50Ci0gICAgIE1ha2VmaWxlLgotICAgICBQcm9ibGVtIHJlcG9ydGVkIGJ5IFN0ZXZlIE1jQ2FydGh5LgotICAgICBRbjogU2hvdWxkIDUuMi54IGFuZCA1LjMueCBhbHNvIHVzZSB0aGUgc2FtZSBvcmRlcj8KLSAgICAgKGZvciBib3RoIGFnZW50IE1ha2VmaWxlIGFuZCBuZXQtc25tcC1jb25maWcpCisKKyAgIEJyaW5nIG9yZGVyIG9mIGFnZW50IGxpYnJhcnkgbGlua2luZyBpbnRvIGxpbmUgd2l0aCBhZ2VudAorICAgTWFrZWZpbGUuCisgICBQcm9ibGVtIHJlcG9ydGVkIGJ5IFN0ZXZlIE1jQ2FydGh5LgorICAgUW46IFNob3VsZCA1LjIueCBhbmQgNS4zLnggYWxzbyB1c2UgdGhlIHNhbWUgb3JkZXI/CisgICAoZm9yIGJvdGggYWdlbnQgTWFrZWZpbGUgYW5kIG5ldC1zbm1wLWNvbmZpZykKIAogMjAwNy0xMi0yMSAxMzoxMSAgZHRzMTIKIAogICAgKiBhcHBzL3NubXB0cmFwZF9sb2cuYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IEJVRzogMTgwMjgzMzogRW5zdXJlIHNubXB0cmFwZCBidWlsZHMgd2l0aAotICAgICAtLWRpc2FibGUtc25tcHYxLzJjCisKKyAgIENIQU5HRVM6IGJ1aWxkOiBCVUc6IDE4MDI4MzM6IEVuc3VyZSBzbm1wdHJhcGQgYnVpbGRzIHdpdGgKKyAgIC0tZGlzYWJsZS1zbm1wdjEvMmMKIAogMjAwNy0xMi0yMCAxNjoyNiAgZHRzMTIKIAogICAgKiBwZXJsL1NOTVAvU05NUC54czoKLSAgICAgQ0hBTkdFUzogcGVybDogQlVHOiAxODM0NTM5OiBDb25zaXN0ZW50IGhhbmRsaW5nIG9mIE9JRCBwYXJzaW5nLgotICAgICBBcHBsaWVzIHBhdGNoICMxODM0OTgzLCBwcm92aWRlZCBieSBEbWl0cnkgS2FyYXNpaworCisgICBDSEFOR0VTOiBwZXJsOiBCVUc6IDE4MzQ1Mzk6IENvbnNpc3RlbnQgaGFuZGxpbmcgb2YgT0lEIHBhcnNpbmcuCisgICBBcHBsaWVzIHBhdGNoICMxODM0OTgzLCBwcm92aWRlZCBieSBEbWl0cnkgS2FyYXNpaworCisyMDA3LTEyLTIwIDE2OjA1ICBkdHMxMgorCisgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzoKKworICAgTW9yZSBpbnRlcm5hbCBxdWVyeSBkZWJ1Z2dpbmcgb3V0cHV0LgogCiAyMDA3LTEyLTIwIDE0OjIwICBkdHMxMgogCiAgICAqIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxODIyMzYwOiBGaXggc3BpbmxvY2sgaGVscGVyIGVycm9yIGhhbmRsaW5nLgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxODIyMzYwOiBGaXggc3BpbmxvY2sgaGVscGVyIGVycm9yIGhhbmRsaW5nLgogCiAyMDA3LTEyLTIwIDE0OjE4ICBkdHMxMgogCiAgICAqIHNubXBsaWIvYXNuMS5jOgotICAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDE3OTU4NDA6IFNpZ25lZCAzMi1iaXQgdHJ1bmNhdGlvbiBsb2dnZWQKLSAgICAgYXMgZGVidWcgbWVzc2FnZSByYXRoZXIgdGhlbiBlcnJvci4KKworICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAxNzk1ODQwOiBTaWduZWQgMzItYml0IHRydW5jYXRpb24gbG9nZ2VkCisgICBhcyBkZWJ1ZyBtZXNzYWdlIHJhdGhlciB0aGVuIGVycm9yLgogCiAyMDA3LTEyLTIwIDE0OjE0ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNzkyODkwOiBpbmNsdWRlIENJRlMgbW91bnRzIHdoZW4gc2tpcHBpbmcKLSAgICAgcmVtb3RlIGZpbGVzeXN0ZW1zCisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE3OTI4OTA6IGluY2x1ZGUgQ0lGUyBtb3VudHMgd2hlbiBza2lwcGluZworICAgcmVtb3RlIGZpbGVzeXN0ZW1zCiAKIDIwMDctMTItMjAgMTQ6MTIgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNzcxMjIxOiBSZXRhaW4gaWZMYXN0Q2hhbmdlIGluZm9ybWF0aW9uIG9uCi0gICAgIGRhdGEgcmVsb2FkLgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNzcxMjIxOiBSZXRhaW4gaWZMYXN0Q2hhbmdlIGluZm9ybWF0aW9uIG9uCisgICBkYXRhIHJlbG9hZC4KIAogMjAwNy0xMi0yMCAxNDowOCAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE3NTgyMTI6IEhhbmRsaW5nIG1pc3NpbmcgdmFyaWFibGUgdHlwZXMKLSAgICAgKElwQWRkcmVzcyxDb3VudGVyLE9wYXF1ZSkKKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTc1ODIxMjogSGFuZGxpbmcgbWlzc2luZyB2YXJpYWJsZSB0eXBlcworICAgKElwQWRkcmVzcyxDb3VudGVyLE9wYXF1ZSkKIAogMjAwNy0xMi0xOSAyMjozOSAgbWFnZnIKIAotICAgKiBzbm1wbGliL2NvbnRhaW5lci5jLCBzbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jLAotICAgICBzbm1wbGliL2NvbnRhaW5lcl9udWxsLmMsIHNubXBsaWIvZGF0YV9saXN0LmMsCi0gICAgIHNubXBsaWIvcmVhZF9jb25maWcuYzoKLSAgICAgQ29ycmVjdCBkb3h5Z2VuIHdhcm5pbmdzCisgICAqICBzbm1wbGliL2NvbnRhaW5lci5jLCBzbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jLCAgIAorICAgICAgc25tcGxpYi9jb250YWluZXJfbnVsbC5jLCBzbm1wbGliL2RhdGFfbGlzdC5jLCAgIAorICAgICAgc25tcGxpYi9yZWFkX2NvbmZpZy5jOgorCisgICBDb3JyZWN0IGRveHlnZW4gd2FybmluZ3MKIAogMjAwNy0xMi0xOSAyMjozMSAgbWFnZnIKIAotICAgKiB0ZXN0aW5nL3Rlc3RzL1N2M3ZhY21jb25maWcsIHRlc3RpbmcvdGVzdHMvVDAwMXNubXB2MWdldCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDE0c25tcHYyY2dldCwgdGVzdGluZy90ZXN0cy9UMDE1c25tcHYyY2dldG5leHQsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDAxNjBzbm1wdjJjYnVsa2dldCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDE2c25tcHYyY2dldGZhaWwsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDAxN3NubXB2MmN0b3YxZ2V0ZmFpbCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDE4c25tcHYxdG92MmNnZXRmYWlsLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTlzbm1wdjJjbm9zdWNoLCB0ZXN0aW5nL3Rlc3RzL1QwMjJzbm1wdjNnZXRNRDUsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDAyM3NubXB2M2dldE1ENUFFUywKLSAgICAgdGVzdGluZy90ZXN0cy9UMDIzc25tcHYzZ2V0TUQ1REVTLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjVzbm1wdjNnZXRTSEFERVMsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDAzMHNubXB2M3VzZXJjcmVhdGlvbiwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDUxc25tcHYyY3RyYXAsIHRlc3RpbmcvdGVzdHMvVDA1MnNubXB2MmNpbmZvcm0sCi0gICAgIHRlc3RpbmcvdGVzdHMvVDA1OGFnZW50YXV0aHRyYXAsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDA1OXRyYXBkdHJhcGhhbmRsZSwgdGVzdGluZy90ZXN0cy9UMDYwdHJhcGRwZXJsLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwNjFhZ2VudHBlcmwsIHRlc3RpbmcvdGVzdHMvVDA2NWFnZW50ZXh0ZW5kLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QxMDBhZ2VudGh1cCwgdGVzdGluZy90ZXN0cy9UMTE1YWdlbnR4cGVybCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMTIwcHJveHlnZXQsIHRlc3RpbmcvdGVzdHMvVDEyMXByb3h5c2V0LAotICAgICB0ZXN0aW5nL3Rlc3RzL1QxMjJwcm94eXNldGZhaWwsIHRlc3RpbmcvdGVzdHMvVDEzMHNubXB2MXZhY21nZXQsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDEzMXNubXB2MmN2YWNtZ2V0LAotICAgICB0ZXN0aW5nL3Rlc3RzL1QxNDBzbm1wdjF2YWNtZ2V0ZmFpbCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMTQxc25tcHYyY3ZhY21nZXRmYWlsLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QxNTBzb2xhcmlzaG9zdGNwdSwKLSAgICAgdGVzdGluZy90ZXN0cy9UMTUxc29sYXJpc2hvc3RkaXNrLCB0ZXN0aW5nL3Rlc3RzL1QxNTJob3N0dXB0aW1lLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QxNTNzb2xhcmlzc3dhcCwgdGVzdGluZy90ZXN0cy9UMTYwc25tcG5ldHN0YXQsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDIwMHNubXB2MmN3YWxrYWxsOgotICAgICBVc2UgTkVUU05NUF8tcHJlZml4ZWQgc3ltYm9scyB3aGVuIGRlY2lkaW5nIHdoYXQgdGVzdHMgdG8gcnVuIGFzCi0gICAgIHRoZSBjb21wYXQgc3ltYm9scyBhcmVuJ3QgZGVmaW5lZC4KKyAgICogIHRlc3RpbmcvdGVzdHMvU3YzdmFjbWNvbmZpZywgdGVzdGluZy90ZXN0cy9UMDAxc25tcHYxZ2V0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDE0c25tcHYyY2dldCwgdGVzdGluZy90ZXN0cy9UMDE1c25tcHYyY2dldG5leHQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTYwc25tcHYyY2J1bGtnZXQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTZzbm1wdjJjZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxN3NubXB2MmN0b3YxZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxOHNubXB2MXRvdjJjZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxOXNubXB2MmNub3N1Y2gsIHRlc3RpbmcvdGVzdHMvVDAyMnNubXB2M2dldE1ENSwgIAorICAgICAgIHRlc3RpbmcvdGVzdHMvVDAyM3NubXB2M2dldE1ENUFFUywgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAyM3NubXB2M2dldE1ENURFUywgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAyNXNubXB2M2dldFNIQURFUywgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAzMHNubXB2M3VzZXJjcmVhdGlvbiwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA1MXNubXB2MmN0cmFwLCB0ZXN0aW5nL3Rlc3RzL1QwNTJzbm1wdjJjaW5mb3JtLCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDU4YWdlbnRhdXRodHJhcCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA1OXRyYXBkdHJhcGhhbmRsZSwgdGVzdGluZy90ZXN0cy9UMDYwdHJhcGRwZXJsLCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDYxYWdlbnRwZXJsLCB0ZXN0aW5nL3Rlc3RzL1QwNjVhZ2VudGV4dGVuZCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDEwMGFnZW50aHVwLCB0ZXN0aW5nL3Rlc3RzL1QxMTVhZ2VudHhwZXJsLCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTIwcHJveHlnZXQsIHRlc3RpbmcvdGVzdHMvVDEyMXByb3h5c2V0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTIycHJveHlzZXRmYWlsLCB0ZXN0aW5nL3Rlc3RzL1QxMzBzbm1wdjF2YWNtZ2V0LCAgCisgICAgICAgdGVzdGluZy90ZXN0cy9UMTMxc25tcHYyY3ZhY21nZXQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxNDBzbm1wdjF2YWNtZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDE0MXNubXB2MmN2YWNtZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDE1MHNvbGFyaXNob3N0Y3B1LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTUxc29sYXJpc2hvc3RkaXNrLCB0ZXN0aW5nL3Rlc3RzL1QxNTJob3N0dXB0aW1lLCAgCisgICAgICAgdGVzdGluZy90ZXN0cy9UMTUzc29sYXJpc3N3YXAsIHRlc3RpbmcvdGVzdHMvVDE2MHNubXBuZXRzdGF0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMjAwc25tcHYyY3dhbGthbGw6CisKKyAgIFVzZSBORVRTTk1QXy1wcmVmaXhlZCBzeW1ib2xzIHdoZW4gZGVjaWRpbmcgd2hhdCB0ZXN0cyB0byBydW4gYXMKKyAgIHRoZSBjb21wYXQgc3ltYm9scyBhcmVuJ3QgZGVmaW5lZC4KIAogMjAwNy0xMi0xOSAyMjowNiAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0gICAgIEJVRyAxODMxNTY4OiBzdHJkdXAgbWlnaHQgZmFpbCBhbmQgcmV0dXJuIE5VTEwgLSB0YWtlIGNhcmUgb2YgaXQKLSAgICAgaW4gdGhpcyBjYXNlIGF0IGxlYXN0LgorCisgICBCVUcgMTgzMTU2ODogc3RyZHVwIG1pZ2h0IGZhaWwgYW5kIHJldHVybiBOVUxMIC0gdGFrZSBjYXJlIG9mIGl0CisgICBpbiB0aGlzIGNhc2UgYXQgbGVhc3QuCiAKIDIwMDctMTItMTkgMjE6NDkgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMsIHNubXBsaWIvc25tcF9hcGkuYzoKLSAgICAgQlVHIDE4MjQ4ODM6IFJlbW92ZSBtZW1vcnkgbGVhaworCisgICBCVUcgMTgyNDg4MzogUmVtb3ZlIG1lbW9yeSBsZWFrCiAKIDIwMDctMTItMTkgMjA6NDYgIG1hZ2ZyCiAKICAgICogYWdlbnQvaGVscGVycy93YXRjaGVyLmM6Ci0gICAgIENIQU5HRVM6IEJVRzogMTg1MTA0NzogRG8gbm90IHRyeSB0byBkbyBtb3JlIGhhbmRsaW5nIG9mIGEgdmFsdWUKLSAgICAgb25jZSBpdCBpcyBmb3VuZCB0byBiZSBjb3JydXB0IGJ5IHRoZSB3YXRjaGVyIGhlbHBlciwgdGh1cwotICAgICBhdm9pZGluZyBjb2RlIHRoYXQgY291bnRzIG9uIGdldHRpbmcgdGhlIHJpZ2h0IHR5cGUuIFRoaXMgYnVnIHdhcwotICAgICBmb3VuZCBieSBDaGFybGllIE1pbGxlciwgSW5kZXBlbmRlbnQgU2VjdXJpdHkgRXZhbHVhdG9ycy4KKworICAgQ0hBTkdFUzogQlVHOiAxODUxMDQ3OiBEbyBub3QgdHJ5IHRvIGRvIG1vcmUgaGFuZGxpbmcgb2YgYSB2YWx1ZQorICAgb25jZSBpdCBpcyBmb3VuZCB0byBiZSBjb3JydXB0IGJ5IHRoZSB3YXRjaGVyIGhlbHBlciwgdGh1cworICAgYXZvaWRpbmcgY29kZSB0aGF0IGNvdW50cyBvbiBnZXR0aW5nIHRoZSByaWdodCB0eXBlLiBUaGlzIGJ1ZyB3YXMKKyAgIGZvdW5kIGJ5IENoYXJsaWUgTWlsbGVyLCBJbmRlcGVuZGVudCBTZWN1cml0eSBFdmFsdWF0b3JzLgogCiAyMDA3LTExLTI3IDA5OjU2ICBkdHMxMgogCiAgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6Ci0gICAgIENsYXJpZnkgdXNlIG9mIHRoZSAtQSAobG9nIGFwcGVuZCkgb3B0aW9uLgorCisgICBDbGFyaWZ5IHVzZSBvZiB0aGUgLUEgKGxvZyBhcHBlbmQpIG9wdGlvbi4KIAogMjAwNy0xMS0yMiAxNTo0MiAgcnN0b3J5CiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmM6Ci0gICAgIGNoZWNrIHJlcXVlc3QsIG5vdCByZXF1ZXN0cy4gcmVwb3J0ZWQgYnkgdWxpbSBvbiBpcmMKIAotMjAwNy0xMS0yMiAxNToxNiAgcnN0b3J5CisgICBjaGVjayByZXF1ZXN0LCBub3QgcmVxdWVzdHMuIHJlcG9ydGVkIGJ5IHVsaW0gb24gaXJjCisKKzIwMDctMTEtMjIgMTU6MTcgIHJzdG9yeQogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jOgotICAgICBjaGVjayByZXF1ZXN0LCBub3QgcmVxdWVzdHMuIHJlcG9ydGVkIGJ5IHVsaW0gb24gaXJjCisKKyAgIGNoZWNrIHJlcXVlc3QsIG5vdCByZXF1ZXN0cy4gcmVwb3J0ZWQgYnkgdWxpbSBvbiBpcmMKIAogMjAwNy0xMS0xOSAyMTozNCAgdGFuZGVycwogCiAgICAqIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYzoKLSAgICAgQ0hBTkdFUzogU29sYXJpczogUEFUQ0g6IDE4MzQ2OTk6IGZyb20gYXBlcnNzb246IEZpeCAxODMzMjk0OgotICAgICBETFBJIHByb2JsZW1zIG9uIFNvbGFyaXMgMi42CisKKyAgIENIQU5HRVM6IFNvbGFyaXM6IFBBVENIOiAxODM0Njk5OiBmcm9tIGFwZXJzc29uOiBGaXggMTgzMzI5NDoKKyAgIERMUEkgcHJvYmxlbXMgb24gU29sYXJpcyAyLjYKKworMjAwNy0xMS0xNyAxNjoyNiAgbWFnZnIKKworICAgKiAgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IHNubXBkOiBVc2UgdGhlIHdvcmtlciBoZWxwZXJzIGZyb20gdGhlCisgICByZWdpc3Rlcl8qX2luc3RhbmNlIGhlbHBlcnMgYW5kIHNjaGVkdWxlIHRoZSBpbnN0YW5jZSBoZWxwZXJzIGZvcgorICAgcmVtb3ZhbCBpbiA1LjYKKworMjAwNy0xMS0xNCAxMjoyMSAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmg6CisKKyAgIFN1cHBvcnQgdjMgbG1zZW5zb3JzIEFQSS4KKworMjAwNy0xMS0xNCAxMjoxOSAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuYzoKKworICAgRml4IG1pc2xlYWRpbmcgZGVidWcgb3V0cHV0IG1lc3NhZ2UuCisKKzIwMDctMTEtMTMgMTM6NTkgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2R1bW15X3NlbnNvcnMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvZHVtbXlfc2Vuc29ycy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMva3N0YXRfc2Vuc29ycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9rc3RhdF9zZW5zb3JzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192Mi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvcGljbGRfc2Vuc29ycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbXNlbnNvcnNNaWIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgIAorICAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oOgorCisgICBQcmVsaW1pbmFyeSByZS13b3JraW5nIG9mIHRoZSBMTS1TRU5TT1JTLU1JQiwgdG8gc2VwYXJhdGUgb3V0CisgICB0aGUgc2Vuc29yIGhhcmR3YXJlIHByb2Nlc3NpbmcgZnJvbSB0aGUgTUlCIHRhYmxlcyB0aGVtc2VsdmVzLgogCiAyMDA3LTExLTA4IDIzOjE3ICB0YW5kZXJzCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jLAotICAgICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOgotICAgICBDSEFOR0VTOiBTb2xhcmlzOiBQQVRDSDogMTgyNDE5Njoge2lmT3BlclN0YXR1cyxpcEFkRW50SWZJbmRleH0KLSAgICAgcmVwb3J0ZWQgaW5jb3JyZWN0bHkKLSAgICAgUGF0Y2ggc3VwcGxpZWQgYnkgQW5kZXJzIFBlcnNzb24uIEZpeGVzIEJ1Z3MgMTgyMjI3NSBhbmQgMTgxOTE4OS4KKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYywgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOgorCisgICBDSEFOR0VTOiBTb2xhcmlzOiBQQVRDSDogMTgyNDE5Njoge2lmT3BlclN0YXR1cyxpcEFkRW50SWZJbmRleH0KKyAgIHJlcG9ydGVkIGluY29ycmVjdGx5CisgICBQYXRjaCBzdXBwbGllZCBieSBBbmRlcnMgUGVyc3Nvbi4gRml4ZXMgQnVncyAxODIyMjc1IGFuZCAxODE5MTg5LgorCisyMDA3LTEwLTI2IDIxOjIyICBtYWdmcgorCisgICAqICBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmg6CisKKyAgIE5FV1M6IHNubXBkOiBBZGRlZCBzdXBwb3J0IGZvciBhIHVzZXIgcHJvdmlkZWQgbGVuZ3RoIHZhcmlhYmxlCisgICBhbmQgQyBzdHJpbmcgdmFsdWVzIHRvIHRoZSB3YXRjaGVyIGhlbHBlci4KKworMjAwNy0xMC0xNiAyMjozOSAgbWFnZnIKKworICAgKiAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9oZWxwZXJzL2RlYnVnX2hhbmRsZXIuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYywgYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFcnJvclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMsICAgCisgICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYywgICAKKyAgICAgIHNubXBsaWIvc25tcFNURERvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvc25tcF9jbGllbnQuYzoKKworICAgVXNlICVwIHRvIHByaW50IHBvaW50ZXJzLiBEbyBub3QgdXNlICVwIHRvIHByaW50IG51bWJlcnMuCisKKzIwMDctMTAtMTYgMDc6MzEgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBNYWtlIHRoZSBsaWJyYXJ5IGJ1aWxkYWJsZSBhcyBDIGFnYWluLgogCiAyMDA3LTEwLTE2IDA3OjE3ICBtYWdmcgogCi0gICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYywgYWdlbnQvaGVscGVycy9zY2FsYXIuYywKLSAgICAgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmM6Ci0gICAgIENIQU5HRVM6IG1pc2M6IGF2b2lkIGNhbGxpbmcgZGVidWcgbWFjcm9zIHdpdGggdG9vIG1hbnkKLSAgICAgYXJndW1lbnRzLgorICAgKiAgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jLCBhZ2VudC9oZWxwZXJzL3NjYWxhci5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgorCisgICBDSEFOR0VTOiBtaXNjOiBhdm9pZCBjYWxsaW5nIGRlYnVnIG1hY3JvcyB3aXRoIHRvbyBtYW55CisgICBhcmd1bWVudHMuCiAKIDIwMDctMTAtMTYgMDY6MTggIG1hZ2ZyCiAKLSAgICogc25tcGxpYi9zbm1wX3NlcnZpY2UuYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgotICAgICBNYWtlIHRoZSBsaWJyYXJ5IGJ1aWxkYWJsZSBhcyBDKysgYWdhaW4uCisgICAqICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9zZXJ2aWNlLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmM6CisKKyAgIE1ha2UgdGhlIGxpYnJhcnkgYnVpbGRhYmxlIGFzIEMrKyBhZ2Fpbi4KKworMjAwNy0xMC0xNSAyMDo1MiAgcnN0b3J5CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgsICAgCisgICAgICBzbm1wbGliL2Rpcl91dGlscy5jOgorCisgICBkZWNsYXJlIG5ldHNubXBfYmluYXJ5X2FycmF5X29wdGlvbnNfc2V0OyBpbmNsdWRlIGhlYWRlciBmb3IgaXQKKyAgIGFzIG5lZWRlZAogCiAyMDA3LTEwLTE1IDIwOjM5ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlVGFibGUuYzoKLSAgICAgQ29udmVydCBhbiBpbmZpbml0ZSBsb29wIHRvIGEgZmluaXRlIG9uZS4KLSAgICAgUmVtb3ZlIGFuIHVudXNlZCB2YXJpYWJsZS4KKworICAgQ29udmVydCBhbiBpbmZpbml0ZSBsb29wIHRvIGEgZmluaXRlIG9uZS4KKyAgIFJlbW92ZSBhbiB1bnVzZWQgdmFyaWFibGUuCiAKIDIwMDctMTAtMTQgMjI6MTAgIG1hZ2ZyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXguYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsCi0gICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9jb21tb24uYzoKLSAgICAgQ0hBTkdFUzogbWlzYzogQXZvaWQgY2FsbGluZyBkZWJ1ZyBtYWNyb3Mgd2l0aCB0b28gZmV3IGFyZ3VtZW50cy4KKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fY29tbW9uLmM6CisKKyAgIENIQU5HRVM6IG1pc2M6IEF2b2lkIGNhbGxpbmcgZGVidWcgbWFjcm9zIHdpdGggdG9vIGZldyBhcmd1bWVudHMuCiAKIDIwMDctMTAtMTQgMjA6NTEgIHRhbmRlcnMKIAogICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxODExNDY5OiByZWFkX2NvbmZpZ19maWxlc19pbl9wYXRoKCkKLSAgICAgcmVhZHMgcGFzdCBtYWxsb2MnZCBidWZmZXIKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE4MTE0Njk6IHJlYWRfY29uZmlnX2ZpbGVzX2luX3BhdGgoKQorICAgcmVhZHMgcGFzdCBtYWxsb2MnZCBidWZmZXIKIAogMjAwNy0xMC0xNCAyMDo0MSAgdGFuZGVycwogCiAgICAqIHBlcmwvU05NUC9TTk1QLnhzOgotICAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMTgxMTQ2MzogcGVybCBhc3luYyBjYWxsYmFjayBjb3JlZHVtcAotICAgICBDSEFOR0VTOiBwZXJsOiBCVUc6IDE2MDYwNjI6IHBlcmwgYnVsa3dhbGsgKGFzeW5jKSBjb3JlZHVtcAorCisgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMTgxMTQ2MzogcGVybCBhc3luYyBjYWxsYmFjayBjb3JlZHVtcAorICAgQ0hBTkdFUzogcGVybDogQlVHOiAxNjA2MDYyOiBwZXJsIGJ1bGt3YWxrIChhc3luYykgY29yZWR1bXAKIAogMjAwNy0xMC0xNCAxOTowNyAgdGFuZGVycwogCiAgICAqIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxODA2MzM2OiBmaXggLUxTIG9wdGlvbiBwYXJzaW5nCisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxODA2MzM2OiBmaXggLUxTIG9wdGlvbiBwYXJzaW5nCiAKIDIwMDctMTAtMTQgMTI6MTIgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jOgotICAgICBmaXggY29tbWVudAorCisgICBmaXggY29tbWVudAogCiAyMDA3LTEwLTEzIDIzOjI4ICB0YW5kZXJzCiAKICAgICogdGVzdGluZy90ZXN0cy9UMTYwc25tcG5ldHN0YXQ6Ci0gICAgIENIQU5HRVM6IHRlc3Q6IGVuaGFuY2Ugc25tcG5ldHN0YXQgdGVzdCB0byBjaGVjayB0Y3BUYWJsZSBpbiBUQ1AKLSAgICAgbW9kZQorCisgICBDSEFOR0VTOiB0ZXN0OiBlbmhhbmNlIHNubXBuZXRzdGF0IHRlc3QgdG8gY2hlY2sgdGNwVGFibGUgaW4gVENQCisgICBtb2RlCiAKIDIwMDctMTAtMTMgMjI6MjggIHRhbmRlcnMKIAotICAgKiBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLAotICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzLmg6Ci0gICAgIENIQU5HRVM6IFNvbGFyaXM6IEJVRzogMTgxMDgxNDogdGNwVGFibGUgbWlzc2luZyBlbnRyaWVzIGFuZAotICAgICB3cm9uZyBwb3J0cworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMuaDoKKworICAgQ0hBTkdFUzogU29sYXJpczogQlVHOiAxODEwODE0OiB0Y3BUYWJsZSBtaXNzaW5nIGVudHJpZXMgYW5kCisgICB3cm9uZyBwb3J0cwogCiAyMDA3LTEwLTEyIDIxOjQ2ICB0YW5kZXJzCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpcy5oOgotICAgICBDSEFOR0VTOiBTb2xhcmlzOiAjZGVmaW5lIE5FV19NSUJfQ09NUExJQU5UIHRvIHN1cHBvcnQgU29sYXJpcwotICAgICAxMFU0KworCisgICBDSEFOR0VTOiBTb2xhcmlzOiAjZGVmaW5lIE5FV19NSUJfQ09NUExJQU5UIHRvIHN1cHBvcnQgU29sYXJpcworICAgMTBVNCsKIAogMjAwNy0xMC0xMSAyMDo0NiAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogc25tcGxpYjogRG8gbm90IGxlYWsgbWVtb3J5IHdoZW5ldmVyIGFuIHVkcCBhZGRyZXNzIGlzCi0gICAgIGZvcm1hdHRlZC4KKworICAgQ0hBTkdFUzogc25tcGxpYjogRG8gbm90IGxlYWsgbWVtb3J5IHdoZW5ldmVyIGFuIHVkcCBhZGRyZXNzIGlzCisgICBmb3JtYXR0ZWQuCisKKzIwMDctMTAtMDMgMDE6MDIgIGFsZXhfYgorCisgICAqICB3aW4zMi9kaXN0L1JFQURNRS5idWlsZC53aW4zMi50eHQsIHdpbjMyL2Rpc3QvUkVBRE1FLnR4dCwgICAKKyAgICAgIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL0FkZDJQYXRoLm5zaSwgICAKKyAgICAgIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaToKKworICAgLUZpeCBmb3IgYnVnIDE3Njg3OTcuIE5TSVMgSW5zdGFsbGVyIHNjcmlwdCBub3cgd2FybnMgdGhlIHVzZXIgaWYKKyAgIHRoZSBQQVRICisgICBpcyA+IDEwMjQgYXMgTlNJUyBjYW4gbm90IGhhbmRsZSB2YXJpYWJsZXMgbGFyZ2VyIHRoYW4gMTAyNC4KKyAgIC1VcGRhdGVzIHRvIGJ1aWxkIGluc3RydWN0aW9ucy4KIAogMjAwNy0wOS0zMCAyMDo1OSAgbWFnZnIKIAotICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jLAotICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgsIHNubXBsaWIvc25tcF9hcGkuYywKLSAgICAgc25tcGxpYi9zbm1wX3NlcnZpY2UuYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgotICAgICBDSEFOR0VTOiBCVUc6IDE4MDE4MzU6IEFkZGVkIHRoZSBhYmlsaXR5IHRvIGhhdmUgbXVsdGlwbGUgZGVmYXVsdAotICAgICB0cmFuc3BvcnRzIGZvciBhbiBhcHBsaWNhdGlvbi4gT24gb3BlbiB0aGUgZGlmZmVyZW50IHRyYW5zcG9ydHMKLSAgICAgd2lsbCBiZSB0cmllZCBpbiBvcmRlci4gQXMgYSBjb25zZXF1ZW5jZSBzbm1wIGFuZCBzbm1wdHJhcCBub3cKLSAgICAgd2lsbCB0cnkgZmlyc3QgdWRwIGFuZCB0aGVuIHVkcDYgYW5kIGFnZW50eCB3aWwgdHJ5IGZpcnN0IHVuaXgKLSAgICAgYW5kIHRoZW4gdGNwLgorICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaCwgc25tcGxpYi9zbm1wX2FwaS5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX3NlcnZpY2UuYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgorCisgICBDSEFOR0VTOiBCVUc6IDE4MDE4MzU6IEFkZGVkIHRoZSBhYmlsaXR5IHRvIGhhdmUgbXVsdGlwbGUgZGVmYXVsdAorICAgdHJhbnNwb3J0cyBmb3IgYW4gYXBwbGljYXRpb24uIE9uIG9wZW4gdGhlIGRpZmZlcmVudCB0cmFuc3BvcnRzCisgICB3aWxsIGJlIHRyaWVkIGluIG9yZGVyLiBBcyBhIGNvbnNlcXVlbmNlIHNubXAgYW5kIHNubXB0cmFwIG5vdworICAgd2lsbCB0cnkgZmlyc3QgdWRwIGFuZCB0aGVuIHVkcDYgYW5kIGFnZW50eCB3aWwgdHJ5IGZpcnN0IHVuaXgKKyAgIGFuZCB0aGVuIHRjcC4KIAogMjAwNy0wOS0yOSAxMzoxMCAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IERvIG5vdCB0cnkgdG8gbG9vayB1cCBlbXB0eSBzdHJpbmdzIGFzCi0gICAgIGhvc3RuYW1lcyBmb3IgSVB2NgotICAgICBBZGRpdGluYWxseSwgcHJpbnQgd2hhdCBzdHJpbmcgZmlsZWQgdG8gcmVzb2x2ZSB1c2luZyBnZXRhZGRyaW5mbwotICAgICBmb3IgSVB2NgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBEbyBub3QgdHJ5IHRvIGxvb2sgdXAgZW1wdHkgc3RyaW5ncyBhcworICAgaG9zdG5hbWVzIGZvciBJUHY2CisgICBBZGRpdGluYWxseSwgcHJpbnQgd2hhdCBzdHJpbmcgZmlsZWQgdG8gcmVzb2x2ZSB1c2luZyBnZXRhZGRyaW5mbworICAgZm9yIElQdjYKKworMjAwNy0wOS0yOSAwNjoyNiAgdGFuZGVycworCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19zb2xhcmlzMi5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4MDQ0NDU6IGZyb20gYXBlcnNzb246IEhpZ2ggb3JkZXIgYml0cyBvZgorICAgSENJbk9jdGV0cyBub3Qgc2V0IG9uIFNvbGFyaXMKIAogMjAwNy0wOS0yNCAyMDo0MyAgaGFyZGFrZXIKIAogICAgKiBDT1BZSU5HOgotICAgICB5ZWFyIHVwZGF0ZQorCisgICB5ZWFyIHVwZGF0ZQorCisyMDA3LTA5LTIzIDA2OjAzICB0YW5kZXJzCisKKyAgICogc25tcGxpYi9kaXJfdXRpbHMuYzoKKworICAgZml4ICNlbGlmCisKKzIwMDctMDktMjEgMjI6MDQgIHRhbmRlcnMKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBzbm1wbGliL2Rpcl91dGlscy5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBhdHRlbXB0IHRvIGZpeCBidWlsZCBmb3IgU29sYXJpcy9BSVgvSFAtVVgKKyAgIGJyb2tlbiBieSByMTY2ODQKIAogMjAwNy0wOS0yMCAyMTo1NSAgdGFuZGVycwogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzQ2ODMxOiBmcm9tIGN1bm5pamQ6IGZpeCBwcm9jZXNzCi0gICAgIGNoZWNraW5nIHJhY2UKLSAgICAgY29uZGl0aW9uIHVuZGVyIExpbnV4IGFuZCBwbGF0Zm9ybSAjaWZkZWZzCisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc0NjgzMTogZnJvbSBjdW5uaWpkOiBmaXggcHJvY2VzcworICAgY2hlY2tpbmcgcmFjZQorICAgY29uZGl0aW9uIHVuZGVyIExpbnV4IGFuZCBwbGF0Zm9ybSAjaWZkZWZzCiAKIDIwMDctMDktMTkgMjE6MDkgIHRhbmRlcnMKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiBDb3Zlcml0eSAjMTgzOiBmaXggbWVtb3J5IGxlYWsgaWYKLSAgICAgSVBfUEtUSU5GTyBmYWlscworCisgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IENvdmVyaXR5ICMxODM6IGZpeCBtZW1vcnkgbGVhayBpZgorICAgSVBfUEtUSU5GTyBmYWlscworCisyMDA3LTA5LTE5IDE5OjU3ICBkdHMxMgorCisgICAqIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlM6CisKKyAgIEZpeCBtaXNudW1iZXJpbmdzIG9mIHN0ZXBzLgorICAgSXQgaXMgKnNvKiBkaWZmaWN1bHQgdG8gZmluZCBwcm9wZXJseSBudW1lcmF0ZSBzdGFmZiB0aGVzZQorICAgZGF5cy4uLi4KIAogMjAwNy0wOS0xNiAwOTo1MSAgbWFnZnIKIAogICAgKiBsb2NhbC9taWIyYy11cGRhdGU6Ci0gICAgIFJlbW92ZSBiYXNoaXNtcy4gVGhpcyBpcyBuZXRic2QgcGF0Y2gtZXQgZnJvbSBidWcgMTc0NTQwNC4KKworICAgUmVtb3ZlIGJhc2hpc21zLiBUaGlzIGlzIG5ldGJzZCBwYXRjaC1ldCBmcm9tIGJ1ZyAxNzQ1NDA0LgogCiAyMDA3LTA5LTE2IDA5OjQ1ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmM6Ci0gICAgIFVzZSBjb25zdCBjaGFyKiBmb3IgdGVtcG9yYXJ5IGNvbnN0YW50IHN0cmluZyB2YXJpYWJsZS4gVGhpcyBpcwotICAgICBuZXRic2QgcGF0Y2gtZWEgZnJvbSBidWcgMTc0NTQwNC4KKworICAgVXNlIGNvbnN0IGNoYXIqIGZvciB0ZW1wb3JhcnkgY29uc3RhbnQgc3RyaW5nIHZhcmlhYmxlLiBUaGlzIGlzCisgICBuZXRic2QgcGF0Y2gtZWEgZnJvbSBidWcgMTc0NTQwNC4KIAogMjAwNy0wOS0xNiAwOTo0MCAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0gICAgIFVzZSB0aGUgbmF0dXJhbCB0eXBlIG9mIGluX2FkZHJfdCdzIGZvciBjb21wYXJpc2lvbnMuIFRoaXMgaXMKLSAgICAgbmV0YnNkIHBhdGNoLWVhIGZyb20gYnVnIDE3NDU0MDQuCisKKyAgIFVzZSB0aGUgbmF0dXJhbCB0eXBlIG9mIGluX2FkZHJfdCdzIGZvciBjb21wYXJpc2lvbnMuIFRoaXMgaXMKKyAgIG5ldGJzZCBwYXRjaC1lYSBmcm9tIGJ1ZyAxNzQ1NDA0LgogCiAyMDA3LTA5LTE2IDA3OjA2ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYzoKLSAgICAgQ0hBTkdFUzogQlVHOiAxNzkzNTQ1OiBUYWtlIHRoZSBuYW1lIGZyb20gdGhlIHNvY2thZGRyX3VuIGluCi0gICAgIG9yZGVyIHRvIGF2b2lkIHRyYW5zcG9ydCBzcGVjaWZpZXJzIGFuZCBvdGhlciBkZWNvcmF0aW9ucy4KIAotMjAwNy0wOS0xNCAxNDo0NCAgZHRzMTIKKyAgIENIQU5HRVM6IEJVRzogMTc5MzU0NTogVGFrZSB0aGUgbmFtZSBmcm9tIHRoZSBzb2NrYWRkcl91biBpbgorICAgb3JkZXIgdG8gYXZvaWQgdHJhbnNwb3J0IHNwZWNpZmllcnMgYW5kIG90aGVyIGRlY29yYXRpb25zLgorCisyMDA3LTA5LTE0IDEzOjE4ICByc3RvcnkKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gaGVhZGVyIGZvciBzd3J1biByZXdyaXRlCisKKzIwMDctMDktMTQgMTM6MTYgIHJzdG9yeQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaDoKKworICAgQXBwbGUgcGF0Y2hlcworICAgLSBhZGQgdXRpbGl0eSBtYWNybworICAgLSBhY3RpdmF0ZSBuZXcgaG9zdCByZXNvdXJjZSByZXdyaXRlcworCisyMDA3LTA5LTE0IDEzOjEzICByc3RvcnkKKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0Lmg6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gY29uZmlnX3JlcXVpcmUgZm9yIG5ldyByZXdyaXRlcywgaWYgZW5hYmxlZAorCisyMDA3LTA5LTE0IDEzOjExICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uYzoKKworICAgQXBwbGUgcGF0Y2hlcworICAgLSBhZGQvZml4IGRpc2svcGFydGl0aW9uIHRhYmxlcyBvbiBkYXJ3aW4KKworMjAwNy0wOS0xNCAxMzowOSAgcnN0b3J5CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dpbnN0Lmg6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gYWRkIGhyU1dJbnN0YWxsZWRUYWJsZSBmb3IgZGFyd2luCisKKzIwMDctMDktMTQgMDg6NDQgIGR0czEyCiAKICAgICogZGlzdC9tYWtlcmVsZWFzZToKLSAgICAgU3luY2ggd2l0aCBtYWluIHRydW5rIHJlbGVhc2Ugc2NyaXB0LgorCisgICBQcm90ZWN0IGFnYWluc3QgdW5leHBlY3RlZCBjb21tYW5kIGFyZ3VtZW50cy4KKworMjAwNy0wOS0xNCAwODowMCAgZHRzMTIKKworICAgKiBkaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TOgorCisgICBEb2N1bWVudCB1c2Ugb2YgInN2biBleHBvcnQiIHJhdGhlciB0aGFuICJzdm4gY2hlY2tvdXQiLgorICAgQ292ZXIgZ2VuZXJhdGlvbiBvZiB0aGUgemlwIGFyY2hpdmUgYXMgd2VsbCBhcyB0aGUgdGFyYmFsbC4KIAogMjAwNy0wOS0xMyAyMToyNSAgdGFuZGVycwogCiAgICAqIFJFQURNRToKLSAgICAgZHJvcCBvYnNvbGV0ZSBtaXJyb3JzCisKKyAgIGRyb3Agb2Jzb2xldGUgbWlycm9ycworCisyMDA3LTA5LTEzIDE3OjI5ICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2VzcywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmg6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gaG9zdCByZXNvdXJjZXMgU1dSdW4gYW5kIFNXUnVuUGVyZiBUYWJsZSBmb3IgZGFyd2luOQorCisyMDA3LTA5LTEzIDE3OjIyICByc3RvcnkKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaDoKKworICAgQXBwbGUgcGF0Y2hlcworICAgLSBpbXByb3ZlIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGluIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMKKworMjAwNy0wOS0xMyAxNzoxOSAgcnN0b3J5CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzoKKworICAgQXBwbGUgcGF0Y2hlcworICAgLSBmb3IgZGFyd2luOSwgcmV4ZWMgYWZ0ZXIgZm9yayB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIHNvbWUgbWFjaAorICAgY2FsbHMKKworMjAwNy0wOS0xMiAxODo1MSAgcnN0b3J5CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaCwgc25tcGxpYi9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHNubXBsaWIvZGlyX3V0aWxzLmM6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gbmV3IHV0aWxpdHkgZnVuY3Rpb24gdG8gcmVhZCBhIGRpcmVjdG9yeSBoaWVyYXJjeSBpbnRvIGEKKyAgIGNvbnRhaW5lcgorCisyMDA3LTA5LTEyIDE3OjU1ICByc3RvcnkKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgsIHNubXBsaWIvY29udGFpbmVyLmM6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gbmV3IHN0cmluZyBjb21wYXJlIGNhbGxiYWNrCisKKzIwMDctMDktMTIgMTc6NTMgIHJzdG9yeQorCisgICAqICBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oOgorCisgICBBcHBsZSBwYXRjaGVzCisgICAtIG5ldyBuZXRzbm1wX2NhY2hlX2ZyZWUgZnVuY3Rpb24KKworMjAwNy0wOS0xMiAxNzo0NiAgcnN0b3J5CisKKyAgICogc25tcGxpYi9zbm1wVURQRG9tYWluLmM6CisKKyAgIGFkZCBtaXNzaW5nIG5ld2xpbmUgaW4gZGVidWcgbXNnCisKKzIwMDctMDktMTIgMTc6NDIgIHJzdG9yeQorCisgICAqIGxvY2FsL21pYjJjLmNvbnRhaW5lci5jb25mOgorCisgICBQYXRjaGVzIGZyb20gQXBwbGUKKyAgIC0gYWRkIG9wdGlvbmFsIGNhY2hlCisgICAtIGNoZWNrL2hhbmRsZSBlcnJvcnMgZm9yIGFsbCBmdW5jdGlvbnMgaW4gaW5pdCBmdW5jCisgICAtIHR5cGVkZWYgZ2VuZXJhdGVkIHN0cnVjdAorICAgLSBza2lwIHByb2Nlc3NlZCByZXF1ZXN0cworICAgLSBjaGVjayBmb3IgbnVsbCB3aGVuIGV4dHJhY3Rpbmcgcm93CisKKzIwMDctMDktMTIgMTc6MzUgIHJzdG9yeQorCisgICAqIENPUFlJTkc6CisKKyAgIGFkZCBuZXcgY29weXJpZ2h0L2NvbnRyaWJ1dG9yCisKKzIwMDctMDktMDUgMjA6MTIgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jOgorCisgICBDb21iaW5lIHN5c3RlbV9wYXJzZV9jb25maWdfc3lze2xvYyxjb24sbmFtZX0gaW50byBvbmUgZnVuY3Rpb24KKyAgIHNpbmNlIHRoZXkgYWxsIGRvIHRoZSBzYW1lIHRoaW5nCiAKIDIwMDctMDgtMjUgMTQ6MjQgIG1hZ2ZyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLAotICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmg6Ci0gICAgIE1ha2UgbW9zdCBvZiBub3RpZmljYXRpb25fbG9nIHN0YXRpYy4gTWluaW1pemUgdGhlIGhlYWRlciBmaWxlLgorICAgKiAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oOgorCisgICBNYWtlIG1vc3Qgb2Ygbm90aWZpY2F0aW9uX2xvZyBzdGF0aWMuIE1pbmltaXplIHRoZSBoZWFkZXIgZmlsZS4KIAogMjAwNy0wOC0yMiAyMTo1NiAgdGFuZGVycwogCiAgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6Ci0gICAgIE5FV1M6IGFnZW50OiBzdXBwcmVzcyBhbm5veWluZyAicmVnaXN0cmF0aW9uICE9IGR1cGxpY2F0ZSIKLSAgICAgd2FybmluZyBmb3Igcm9vdCBvaWRzCi0gICAgIChvdGhlcndpc2UsIHlvdSdsbCBnZXQgdGhpcyBtZXNzYWdlIG9uIGFsbW9zdCBldmVyeSBzdGFydHVwKQorCisgICBORVdTOiBhZ2VudDogc3VwcHJlc3MgYW5ub3lpbmcgInJlZ2lzdHJhdGlvbiAhPSBkdXBsaWNhdGUiCisgICB3YXJuaW5nIGZvciByb290IG9pZHMKKyAgIChvdGhlcndpc2UsIHlvdSdsbCBnZXQgdGhpcyBtZXNzYWdlIG9uIGFsbW9zdCBldmVyeSBzdGFydHVwKQogCiAyMDA3LTA4LTIwIDA4OjA2ICB0YW5kZXJzCiAKICAgICogc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jOgotICAgICBORVdTOiBzbm1wbGliOiBmaXggcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBzcHJpbnRmIGZvcgotICAgICBVRFAvSVB2NgogCi0yMDA3LTA4LTE3IDA5OjA4ICBkdHMxMgorICAgTkVXUzogc25tcGxpYjogZml4IHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gc3ByaW50ZiBmb3IKKyAgIFVEUC9JUHY2CisKKzIwMDctMDgtMTcgMDk6MTAgIGR0czEyCiAKICAgICogRkFROgotICAgICBTeW5jaCB3aXRoIG1haW4gZGV2ZWxvcG1lbnQgKGFuZCBvbi1saW5lKSBGQVEgdGV4dC4KKworICAgU3VidmVyc2lvbiwgbm90IENWUy4KIAogMjAwNy0wOC0xNyAwODo1OSAgZHRzMTIKIAogICAgKiBGQVE6Ci0gICAgIENsYXJpZnkgaGFuZGxpbmcgb2YgdW5rbm93biBjb21tdW5pdGllcworCisgICBDbGFyaWZ5IGhhbmRsaW5nIG9mIHVua25vd24gY29tbXVuaXRpZXMKIAogMjAwNy0wOC0xNiAxNTozNiAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzoKLSAgICAgRG9uJ3QganVzdCByZXBvcnQgdGhlIHByb2JsZW0gLSBpdCBtaWdodCBiZSBzZW5zaWJsZSB0byBhdm9pZAotICAgICBjcmFzaGluZyB0aGUgYWdlbnQgYXMgd2VsbCEKKworICAgRG9uJ3QganVzdCByZXBvcnQgdGhlIHByb2JsZW0gLSBpdCBtaWdodCBiZSBzZW5zaWJsZSB0byBhdm9pZAorICAgY3Jhc2hpbmcgdGhlIGFnZW50IGFzIHdlbGwhCiAKIDIwMDctMDgtMTYgMTU6MzUgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc0NDE1NzogUmVwb3J0IGR1cGxpY2F0ZSAiZXh0ZW5kL2V4ZWMiCi0gICAgIGlkZW50aWZpZXJzLgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3NDQxNTc6IFJlcG9ydCBkdXBsaWNhdGUgImV4dGVuZC9leGVjIgorICAgaWRlbnRpZmllcnMuCiAKIDIwMDctMDgtMTYgMTU6MjQgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmMsIGFwcHMvc25tcHRyYXBkX2RzLmg6Ci0gICAgIENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0g6IDE3NDY5OTI6IEltcHJvdmUgc25tcHRyYXBkCi0gICAgIGFjY2Vzcy1jb250cm9sIGVycm9yIG1lc3NhZ2VzLgorCisgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIOiAxNzQ2OTkyOiBJbXByb3ZlIHNubXB0cmFwZAorICAgYWNjZXNzLWNvbnRyb2wgZXJyb3IgbWVzc2FnZXMuCiAKIDIwMDctMDgtMTYgMTQ6MTIgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3NTI5MzQ6IEZpeCBvZmYtYnktb25lIHFzb3J0IGVycm9yIGluCi0gICAgIHRhYmxlIHV0aWxpdGllcy4KKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzUyOTM0OiBGaXggb2ZmLWJ5LW9uZSBxc29ydCBlcnJvciBpbgorICAgdGFibGUgdXRpbGl0aWVzLgogCiAyMDA3LTA4LTE2IDEzOjMxICBkdHMxMgogCiAgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzUzNDM3OiBGaXggZXJyb3IgaW5kZXggb24gZmFpbGluZyBTRVQKLSAgICAgcmVxdWVzdHMKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzUzNDM3OiBGaXggZXJyb3IgaW5kZXggb24gZmFpbGluZyBTRVQKKyAgIHJlcXVlc3RzCiAKIDIwMDctMDgtMTYgMTM6MjUgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3NTM0NDk6IEZpeCBBZ2VudFggZXJyb3IgcHJvcGFnYXRpb24KKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzUzNDQ5OiBGaXggQWdlbnRYIGVycm9yIHByb3BhZ2F0aW9uCiAKIDIwMDctMDgtMTYgMTI6MzQgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc1MzQ2MzogRml4IEFnZW50WCBzdWJhZ2VudCBwaW5nIGFsYXJtCi0gICAgIGhhbmRsaW5nCisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc1MzQ2MzogRml4IEFnZW50WCBzdWJhZ2VudCBwaW5nIGFsYXJtCisgICBoYW5kbGluZwogCiAyMDA3LTA4LTE2IDEyOjEzICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzU4MjA4OiBGaXggbWVtb3J5IGxlYWsKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzU4MjA4OiBGaXggbWVtb3J5IGxlYWsKIAogMjAwNy0wOC0xNiAxMjowMyAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc3NDYxMjogTW9yZSByZXNpbGllbnQgcHJvY2VzcyBzdGF0dXMKLSAgICAgaGFuZGxpbmcKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzc0NjEyOiBNb3JlIHJlc2lsaWVudCBwcm9jZXNzIHN0YXR1cworICAgaGFuZGxpbmcKIAogMjAwNy0wOC0xNiAxMTo1OCAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE3NzUxMjQ6IEZpeCBjbGllbnRhZGRyIGZ1bmN0aW9uYWxpdHkKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE3NzUxMjQ6IEZpeCBjbGllbnRhZGRyIGZ1bmN0aW9uYWxpdHkKIAogMjAwNy0wOC0xNiAwOTozOCAgZHRzMTIKIAogICAgKiBzbm1wbGliL3BhcnNlLmM6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNzY4Mjg1OiBDb3VudCBNSUIgZmlsZXMgY29ycmVjdGx5IGluCi0gICAgIGFkZF9taWJkaXIoKQorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTc2ODI4NTogQ291bnQgTUlCIGZpbGVzIGNvcnJlY3RseSBpbgorICAgYWRkX21pYmRpcigpCiAKIDIwMDctMDgtMTYgMDk6MzUgIGR0czEyCiAKICAgICogYXBwcy9zbm1wdHJhcGQuYzoKLSAgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSDogMTc2NzcyNTogQ2xvc2UgYWxsIG5vbiBzdGFuZGFyZCBmaWxlCi0gICAgIGhhbmRsZXMKKworICAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSDogMTc2NzcyNTogQ2xvc2UgYWxsIG5vbiBzdGFuZGFyZCBmaWxlCisgICBoYW5kbGVzCiAKIDIwMDctMDgtMTYgMDk6MDAgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwVmFsdWUuYzoKLSAgICAgRGVjbGFyZSBpbml0aWFsaXNhdGlvbiByb3V0aW5lIGNvcnJlY3RseSwgYW5kIG9taXQgdW51c2VkCi0gICAgIHZhcmlhYmxlcy4KLSAgICAgUGF0Y2ggZnJvbSBNYWdudXMgRnJvbXJlaWRlLgorCisgICBEZWNsYXJlIGluaXRpYWxpc2F0aW9uIHJvdXRpbmUgY29ycmVjdGx5LCBhbmQgb21pdCB1bnVzZWQKKyAgIHZhcmlhYmxlcy4KKyAgIFBhdGNoIGZyb20gTWFnbnVzIEZyb21yZWlkZS4KIAogMjAwNy0wOC0xNiAwODo1NSAgZHRzMTIKIAogICAgKiBpbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg6Ci0gICAgIFJlYWQgaW4gYWdlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyAqYmVmb3JlKiB0aGUgaGVhZGVyCi0gICAgIGZpbGVzIHRoYXQgbWlnaHQgcmVseSBvbiB0aGVtLgorCisgICBSZWFkIGluIGFnZW50IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgKmJlZm9yZSogdGhlIGhlYWRlcgorICAgZmlsZXMgdGhhdCBtaWdodCByZWx5IG9uIHRoZW0uCisKKzIwMDctMDgtMDUgMTY6MTYgIGFsZXhfYgorCisgICAqIHdpbjMyL2Rpc3QvUkVBRE1FLmJ1aWxkLndpbjMyLnR4dCwgd2luMzIvZGlzdC9SRUFETUUudHh0OgorCisgICBDaGFuZ2Ugd2luMzIgYnVpbGQgcmVhZG1lIGZpbGVzIHRvIENSTEYuCisKKzIwMDctMDgtMDUgMTQ6MTYgIGFsZXhfYgorCisgICAqIHdpbjMyL2Rpc3QvUkVBRE1FLmJ1aWxkLndpbjMyLnR4dDoKKworICAgV2luMzI6IENoYW5nZSBidWlsZCBkb2NzIHRvIHVzZSBkeW5hbWljIChETEwpIGluc3RlYWQgb2Ygc3RhdGljLgogCiAyMDA3LTA4LTAyIDEzOjQ2ICBkdHMxMgogCiAgICAqIG1pYnMvTkVULVNOTVAtRVhBTVBMRVMtTUlCLnR4dDoKLSAgICAgSXQgbWlnaHQgYmUgc2xpZ2h0bHkgbGVzcyBjb25mdXNpbmcgaWYgdGhlIG5ldFNubXBFeGFtcGxlU3RyaW5nCi0gICAgIE1JQiBvYmplY3QgZGlkIGFjdHVhbGx5IHRha2Ugc3RyaW5nIHZhbHVlcy4gUGlja3ksIEkga25vdy4uLi4KIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgSXQgbWlnaHQgYmUgc2xpZ2h0bHkgbGVzcyBjb25mdXNpbmcgaWYgdGhlIG5ldFNubXBFeGFtcGxlU3RyaW5nCisgICBNSUIgb2JqZWN0IGRpZCBhY3R1YWxseSB0YWtlIHN0cmluZyB2YWx1ZXMuIFBpY2t5LCBJIGtub3cuLi4uCiAKLUNoYW5nZXM6IFY1LTQtcGF0Y2hlcyBicmFuY2ggY3JlYXRlZCAtPiBWNS40LjEKKzIwMDctMDctMjggMTM6MDIgIHJzdG9yeQogCi0yMDA3LTA3LTI3IDE3OjAyICBoYXJkYWtlcgorICAgKiBkaXN0L3N2bnVwOgogCi0gICAqIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLAotICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMSApCi0KLTIwMDctMDctMjcgMTc6MDEgIGhhcmRha2VyCi0KLSAgICogQ0hBTkdFUywgTkVXUzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNy0yNyAxNjo1OCAgaGFyZGFrZXIKLQotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHJlbW92ZSBib2d1cyBlbXB0eSAqIGxpbmVzIGZyb20gdGhlIENoYW5nZUxvZwotCi0yMDA3LTA3LTI3IDE2OjU0ICBoYXJkYWtlcgotCi0gICAqIENoYW5nZUxvZzoKLSAgICAgZml4IHZlcnNpb24gbnVtYmVycyBpbiBDaGFuZ2VMb2cKLQotMjAwNy0wNy0yNyAxNjo1NCAgaGFyZGFrZXIKLQotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMDctMDctMjcgMTY6MTUgIGhhcmRha2VyCi0KLSAgICogbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywKLSAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLAotICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsCi0gICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywKLSAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAotICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsCi0gICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAotICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAotICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKLSAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAotICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsCi0gICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsCi0gICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotICAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDA3LTA3LTI3IDE2OjEzICBoYXJkYWtlcgotCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xICkKKyAgIGZpeCB0YWcgZXh0cmFjdGlvbjsgY2hlY2sgZm9yIGVtcHR5IHRhZyBlYXJsaWVyCiAKIDIwMDctMDctMjUgMjI6NDEgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTc2MDYzMzogZml4IHR5cG8gaW4gZGVidWcgbWVzc2FnZQogCi0yMDA3LTA3LTIyIDAwOjU1ICB0YW5kZXJzCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNzYwNjMzOiBmaXggdHlwbyBpbiBkZWJ1ZyBtZXNzYWdlCiAKLSAgICogTkVXUzoKLSAgICAgcmVtb3ZlIGR1cGxpY2F0ZSBlbnRyeQotCi0yMDA3LTA3LTIyIDAwOjUyICB0YW5kZXJzCi0KLSAgICogTkVXUzoKLSAgICAgaW1wcm92ZSBORVdTIHNlY3Rpb24gZm9yIDUuNC4xCi0KLTIwMDctMDctMjEgMTY6MTcgIGhhcmRha2VyCi0KLSAgICogRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsCi0gICAgIHNlZHNjcmlwdC5pbiwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xLnJjNCApCi0KLTIwMDctMDctMjEgMTY6MTYgIGhhcmRha2VyCi0KLSAgICogQ0hBTkdFUywgTkVXUzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNy0yMSAxNjoxMyAgaGFyZGFrZXIKLQotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMDctMDctMjEgMTU6MDcgIGhhcmRha2VyCi0KLSAgICogbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywKLSAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLAotICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsCi0gICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywKLSAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAotICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsCi0gICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAotICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAotICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKLSAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAotICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsCi0gICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsCi0gICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotICAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDA3LTA3LTIxIDE1OjA2ICBoYXJkYWtlcgotCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xLnJjNCApCi0KLTIwMDctMDctMjEgMTQ6NTEgIGhhcmRha2VyCisyMDA3LTA3LTIxIDIxOjM2ICB0YW5kZXJzCiAKICAgICogc25tcGxpYi9zbm1wX2FwaS5jOgotICAgICBwYXRjaCB0byBmaXggZm9yd2FyZGluZyBlbmNvZGluZworCisgICBDSEFOR0VTOiBzbm1wbGliOiBmaXggZm9yd2FyZGluZyBlbmNvZGluZwogCiAyMDA3LTA3LTIwIDA4OjIxICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYzoKLSAgICAgVHdlYWsgd2FybmluZyBtZXNzYWdlIGZvciAob2xkLXN0eWxlLCBpbnZhbGlkIGZvcm1hdCkgImV4ZWMgT0lEIgotICAgICBkaXJlY3RpdmVzLgogCi0yMDA3LTA3LTE5IDIxOjE2ICB0YW5kZXJzCi0KLSAgICogYWNsb2NhbC5tNCwgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViLCBjb25maWd1cmUsIGx0bWFpbi5zaDoKLSAgICAgTkVXUzogYnVpbGQ6IHVwZGF0ZSB0byBsaWJ0b29sIDEuNS4yNCAoZnJvbSAxLjUuMjIpCi0gICAgIENIQU5HRVM6IEhQLVVYOiBCVUc6IDE3NDIyNzg6IGNvbXBpbGUgZXJyb3Igb24gSFAtVVggMTEuMjMgKElBNjQpCi0KLTIwMDctMDctMTkgMjE6MDEgIGR0czEyCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCBhZ2VudC9zbm1wZC5jOgotICAgICBDaGVjayBmb3IgcHJlc2VuY2Ugb2YgJ2Nob3duJyBhbmQgJ2xvY2FsdGltZV9yJyByb3V0aW5lcyBiZWZvcmUKLSAgICAgdXNpbmcgdGhlbS4KLQotMjAwNy0wNy0xOSAyMTowMCAgZHRzMTIKLQotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwKLSAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsCi0gICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotICAgICBDb25maWd1cmUgY2hlY2tzIGZvciAnY2hvd24nIGFuZCAnbG9jYWx0aW1lX3InIGZ1bmN0aW9ucwotCi0yMDA3LTA3LTE3IDAwOjIwICBoYXJkYWtlcgotCi0gICAqIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLAotICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMS5yYzMgKQotCi0yMDA3LTA3LTE3IDAwOjE5ICBoYXJkYWtlcgotCi0gICAqIENoYW5nZUxvZzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNy0xNyAwMDoxNyAgaGFyZGFrZXIKLQotICAgKiBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLAotICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsCi0gICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywKLSAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLAotICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywKLSAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsCi0gICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsCi0gICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLAotICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywKLSAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywKLSAgICAgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCBtYW4vbmV0c25tcF93YXRjaGVyLjM6Ci0gICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0KLTIwMDctMDctMTcgMDA6MTYgIGhhcmRha2VyCi0KLSAgICogZG94eWdlbi5jb25mOgotICAgICAtIHZlcnNpb24gdGFnICggNS40LjEucmMzICkKKyAgIFR3ZWFrIHdhcm5pbmcgbWVzc2FnZSBmb3IgKG9sZC1zdHlsZSwgaW52YWxpZCBmb3JtYXQpICJleGVjIE9JRCIKKyAgIGRpcmVjdGl2ZXMuCiAKIDIwMDctMDctMTYgMjM6NTkgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLAotICAgICBzbm1wbGliL2RhdGFfbGlzdC5jOgotICAgICBBcHBseSAoY29ycmVjdCkgcGF0Y2ggZnJvbSBNYXJjdXMgUnVlY2tlcnQgdG8gcmVtb3ZlIGFzc2VydHMKLSAgICAgdXNpbmcgc29ydC1vLWlsbGVnYWwgQyBzdHJpbmcgY29tcGFyZXMKKyAgICogIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsICAgCisgICAgICBzbm1wbGliL2RhdGFfbGlzdC5jOgorCisgICBBcHBseSAoY29ycmVjdCkgcGF0Y2ggZnJvbSBNYXJjdXMgUnVlY2tlcnQgdG8gcmVtb3ZlIGFzc2VydHMKKyAgIHVzaW5nIHNvcnQtby1pbGxlZ2FsIEMgc3RyaW5nIGNvbXBhcmVzCiAKIDIwMDctMDctMTYgMjM6NTkgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLAotICAgICBzbm1wbGliL2RhdGFfbGlzdC5jOgotICAgICBSZW1vdmUgcHJldmlvdXMgcGF0Y2ggd2hpY2ggd2FzIHRoZSB3cm9uZyB2ZXJzaW9uCisgICAqICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCAgIAorICAgICAgc25tcGxpYi9kYXRhX2xpc3QuYzoKKworICAgUmVtb3ZlIHByZXZpb3VzIHBhdGNoIHdoaWNoIHdhcyB0aGUgd3JvbmcgdmVyc2lvbgogCiAyMDA3LTA3LTE2IDIzOjU3ICBoYXJkYWtlcgogCi0gICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jLAotICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLAotICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywKLSAgICAgc25tcGxpYi9kYXRhX2xpc3QuYzoKLSAgICAgQXBwbHkgcGF0Y2ggZnJvbSBNYXJjdXMgUnVlY2tlcnQgdG8gcmVtb3ZlIGFzc2VydHMgdXNpbmcKLSAgICAgc29ydC1vLWlsbGVnYWwgQyBzdHJpbmcgY29tcGFyZXMKKyAgICogIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsICAgCisgICAgICBzbm1wbGliL2RhdGFfbGlzdC5jOgorCisgICBBcHBseSBwYXRjaCBmcm9tIE1hcmN1cyBSdWVja2VydCB0byByZW1vdmUgYXNzZXJ0cyB1c2luZworICAgc29ydC1vLWlsbGVnYWwgQyBzdHJpbmcgY29tcGFyZXMKKworMjAwNy0wNy0xMyAxOToyNyAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlOgorCisgICBnZW5lcmF0ZSB6aXAgZmlsZXMKIAogMjAwNy0wNy0xMiAyMTo1MSAgdGFuZGVycwogCiAgICAqIHBlcmwvYWdlbnQvYWdlbnQucG06Ci0gICAgIGZpeCBzdWJhZ2VudCBleGFtcGxlIChkb2N1bWVudGF0aW9uKQorCisgICBmaXggc3ViYWdlbnQgZXhhbXBsZSAoZG9jdW1lbnRhdGlvbikKIAogMjAwNy0wNy0xMiAyMToyNyAgdGFuZGVycwogCiAgICAqIG1hbi9zbm1wX3Nlc3NfYXBpLjMuZGVmOgotICAgICBzbm1wX3Nlc3NfcmVhZCByZXR1cm5zIGludCwgbm90IHZvaWQKIAotMjAwNy0wNy0wNyAwMDoxNyAgaGFyZGFrZXIKLQotICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKLSAgICAgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgotICAgICAtIHZlcnNpb24gdGFnICggNS40LjEucmMyICkKLQotMjAwNy0wNy0wNyAwMDoxNyAgaGFyZGFrZXIKLQotICAgKiBDSEFOR0VTOgotICAgICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDA3LTA3LTA3IDAwOjEzICBoYXJkYWtlcgotCi0gICAqIENoYW5nZUxvZzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNy0wNyAwMDoxMSAgaGFyZGFrZXIKLQotICAgKiBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLAotICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsCi0gICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywKLSAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLAotICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywKLSAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsCi0gICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsCi0gICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLAotICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywKLSAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywKLSAgICAgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCBtYW4vbmV0c25tcF93YXRjaGVyLjM6Ci0gICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0KLTIwMDctMDctMDcgMDA6MTAgIGhhcmRha2VyCi0KLSAgICogZG94eWdlbi5jb25mOgotICAgICAtIHZlcnNpb24gdGFnICggNS40LjEucmMyICkKKyAgIHNubXBfc2Vzc19yZWFkIHJldHVybnMgaW50LCBub3Qgdm9pZAogCiAyMDA3LTA3LTA2IDIzOjM5ICBoYXJkYWtlcgogCiAgICAqIE1ha2VmaWxlLnJ1bGVzLCBNYWtlZmlsZS50b3A6Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiB1c2UgbGlidG9vbCBjbGVhbiBmb3IgcmVtb3ZpbmcgZmlsZXMgdG8gZW5zdXJlIHdlCi0gICAgIGRlbGV0ZSBhbGwgbGlidG9vbCB0ZW1wb3JhcnkgZmlsZXMuCisKKyAgIENIQU5HRVM6IGJ1aWxkOiB1c2UgbGlidG9vbCBjbGVhbiBmb3IgcmVtb3ZpbmcgZmlsZXMgdG8gZW5zdXJlIHdlCisgICBkZWxldGUgYWxsIGxpYnRvb2wgdGVtcG9yYXJ5IGZpbGVzLgorCisyMDA3LTA3LTA2IDIzOjM0ICBoYXJkYWtlcgorCisgICAqIGRpc3QvcGF0bWU6CisKKyAgIHVzZSBhIHJlY3Vyc2l2ZSByZXZlcnQgaW5zdGVhZCBvZiBybS91cGRhdGU7IHJlbW92ZSBkb3VibGUgLyBmcm9tCisgICBlZGl0aW5nIGNhbGxzCiAKIDIwMDctMDctMDYgMjE6MjIgIHJzdG9yeQogCiAgICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKLSAgICAgc3RvcCBzZWFyY2hpbmcgcGF0aHMgd2hlbiBkb25lCisKKyAgIHN0b3Agc2VhcmNoaW5nIHBhdGhzIHdoZW4gZG9uZQogCiAyMDA3LTA3LTA2IDIxOjE0ICByc3RvcnkKIAogICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6Ci0gICAgIGRvIG5vdCBmcmVlIGludGVyZmFjZSBlbnRyeSBqdXN0IGJlY2F1c2Ugd2UgY2FuIG5vdCBnZXQgc3RhdHMgZm9yCi0gICAgIGl0CisKKyAgIGRvIG5vdCBmcmVlIGludGVyZmFjZSBlbnRyeSBqdXN0IGJlY2F1c2Ugd2UgY2FuIG5vdCBnZXQgc3RhdHMgZm9yCisgICBpdAogCiAyMDA3LTA3LTA2IDE1OjMyICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogQlVHIDE3NDUxMTM6IEhhbmRsZSBzaW5nbGUtbGluZSAoYW5kIHplcm8tbGluZSkKLSAgICAgb3V0cHV0IGluIFVDRCBjb21wYXRhYmlsaXR5IG1vZGUuCisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUcgMTc0NTExMzogSGFuZGxlIHNpbmdsZS1saW5lIChhbmQgemVyby1saW5lKQorICAgb3V0cHV0IGluIFVDRCBjb21wYXRhYmlsaXR5IG1vZGUuCisKKzIwMDctMDctMDYgMDk6MDggIGR0czEyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBzbm1wbGliL3NubXBfY2xpZW50LmMsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBsaWJyYXJ5OiBQQVRDSCAxNzI4MjQ3OiBmcm9tIE1pdHN1cnUgQ2hpbmVuOiBjbGVhbnMgdXAKKyAgIHRoZSBpbnQ2NCB0eXBlIGNoZWNraW5nIGFuZCB1c2FnZSBmb3IgYnVpbGRpbmcgcGFja2V0cyBlc3BlY2lhbGx5CisgICB1bmRlciBNU1ZDLgogCiAyMDA3LTA3LTA1IDE0OjQ1ICByc3RvcnkKIAogICAgKiAuLCBSRUFETUUub3NYOgotICAgICByMjAwNDRAZGhjcDIxMTogcnN0b3J5IHwgMjAwNy0wNy0wNSAxMDo0NDowMSAtMDQwMAotICAgICByZW1vdmUgZGlzYWJsZS1zdGF0aWMgZnJvbSByZWNvbW1lbmRlZCBvcHRpb25zCisKKyAgIHIyMDA0NEBkaGNwMjExOiByc3RvcnkgfCAyMDA3LTA3LTA1IDEwOjQ0OjAxIC0wNDAwCisgICByZW1vdmUgZGlzYWJsZS1zdGF0aWMgZnJvbSByZWNvbW1lbmRlZCBvcHRpb25zCiAKIDIwMDctMDctMDUgMTE6MDUgIHJzdG9yeQogCiAgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYzoKLSAgICAgc2tpcCBzdGF0cyBwYXJzaW5nIG9uIGludGVyZmFjZXMgd2l0aCBubyBzdGF0aXN0aWNzCisKKyAgIHNraXAgc3RhdHMgcGFyc2luZyBvbiBpbnRlcmZhY2VzIHdpdGggbm8gc3RhdGlzdGljcworCisyMDA3LTA3LTA1IDExOjAxICByc3RvcnkKKworICAgKiBkaXN0L2NoZWNrLWFwaS1jaGFuZ2U6CisKKyAgIGNoZWNrIGZvciBkaXIgZXhpc3RlbmNlCiAKIDIwMDctMDctMDQgMjM6MjYgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbjoKLSAgICAgQ0hBTkdFUzogcGVybDogaW5zdGFsbCBlbWJlZGRlZCBwZXJsIGluaXQgZmlsZXMgZm9yCi0gICAgIHNubXBkL3NubXB0cmFwZCB3aXRoIG1vZGUgNjQ0IGluc3RlYWQgb2YgNzU1CisKKyAgIENIQU5HRVM6IHBlcmw6IGluc3RhbGwgZW1iZWRkZWQgcGVybCBpbml0IGZpbGVzIGZvcgorICAgc25tcGQvc25tcHRyYXBkIHdpdGggbW9kZSA2NDQgaW5zdGVhZCBvZiA3NTUKIAogMjAwNy0wNy0wNCAyMTo0MiAgdGFuZGVycwogCiAgICAqIFJFQURNRS5vc1g6Ci0gICAgIFBlcmwgcHJvYmxlbXMgKGJlbGlldmVkIHRvIGJlKSBmaXhlZAogCi0yMDA3LTA3LTAzIDIyOjM2ICBoYXJkYWtlcgotCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLAotICAgICBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYywKLSAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsCi0gICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotICAgICBDSEFOR0VTOiBsaWJyYXJ5OiBQYXRjaCBmcm9tICJNaXRzdXJ1IENoaW5lbiI6IGNsZWFucyB1cCB0aGUKLSAgICAgaW50NjQgdHlwZSBjaGVja2luZyBhbmQgdXNhZ2UgZm9yIGJ1aWxkaW5nIHBhY2tldHMgZXNwZWNpYWxseQotICAgICB1bmRlciBNU1ZDLgorICAgUGVybCBwcm9ibGVtcyAoYmVsaWV2ZWQgdG8gYmUpIGZpeGVkCiAKIDIwMDctMDctMDMgMTI6NTYgIHRhbmRlcnMKIAogICAgKiBwZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbToKLSAgICAgcmVtb3ZlIGV4ZWN1dGFibGUgZmxhZyBmcm9tIFNWTiBwcm9wZXJ0aWVzCisKKyAgIHJlbW92ZSBleGVjdXRhYmxlIGZsYWcgZnJvbSBTVk4gcHJvcGVydGllcworCisyMDA3LTA3LTAyIDA2OjUzICBtYWdmcgorCisgICAqIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHZhY20uYzoKKworICAgUmVtb3ZlIHVudXNlZCBvaWQgZGVjbGFyYXRpb25zCiAKIDIwMDctMDctMDIgMDY6MDIgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmM6Ci0gICAgIEFkZCBtaXNzaW5nIHJldHVybiB2YWx1ZSB0byBfbXRlRXZlbnRfZmlyZV9ub3RpZnkuCisKKyAgIEFkZCBtaXNzaW5nIHJldHVybiB2YWx1ZSB0byBfbXRlRXZlbnRfZmlyZV9ub3RpZnkuCiAKIDIwMDctMDctMDIgMDU6MzEgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2NvbW1vbi5jOgotICAgICBSZW1vdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGFuIHVuZGVmaW5lZCBzdGF0aWMgZnVuY3Rpb24uCiAKLTIwMDctMDctMDEgMTk6NTkgIHRhbmRlcnMKKyAgIFJlbW92ZSB0aGUgZGVjbGFyYXRpb24gb2YgYW4gdW5kZWZpbmVkIHN0YXRpYyBmdW5jdGlvbi4KIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLSAgICAgbWlub3IgaGVscCB0ZXh0IGZvcm1hdHRpbmcgZml4CisyMDA3LTA3LTAxIDIwOjMyICB0YW5kZXJzCiAKLTIwMDctMDYtMzAgMDU6MzQgIHRhbmRlcnMKKyAgICogZGlzdC9uc2ItbmlnaHRseSwgZGlzdC9uc2ItcGFja2FnZToKIAotICAgKiBkaXN0L25ldC1zbm1wLnNwZWM6Ci0gICAgIGFkZCAtLWVuYWJsZS1hcy1uZWVkZWQgaWYgYnVpbGRpbmcgd2l0aCBlbWJlZGRlZCBQZXJsIHN1cHBvcnQKKyAgIG1ha2UgZ2V0b3B0cyB3b3JrIG9uIFRydTY0IGJ5IHJlc3Bhd25pbmcgaW4gUG9zaXggbW9kZQogCi0yMDA3LTA2LTMwIDA0OjM3ICBoYXJkYWtlcgorMjAwNy0wNy0wMSAxOTo1NiAgdGFuZGVycwogCi0gICAqIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLAotICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMS5yYzEgKQorICAgKiAgYWdlbnQvTWFrZWZpbGUuaW4sIGFwcHMvTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgbmV0LXNubXAtY29uZmlnLmluOgogCi0yMDA3LTA2LTMwIDA0OjM3ICBoYXJkYWtlcgorICAgQ0hBTkdFUzogYnVpbGQ6IC0tZGlzYWJsZS1hcy1uZWVkZWQgbm93IGFsbG93cyB0byByZXZlcnQgdG8gdGhlCisgICBmb3JtZXIgZGVmYXVsdCBiZWhhdmlvdXIgb2YgbGlua2luZyBsaWJwZXJsIHRvIGFwcGxpY2F0aW9ucworICAgcmF0aGVyIHRoYW4gTmV0LVNOTVAgTGlicmFyaWVzIChpbiBjYXNlIG9mIGFueSBwcm9ibGVtcykKIAotICAgKiBDSEFOR0VTLCBORVdTOgotICAgICB2ZXJzaW9uIHVwZGF0ZQorMjAwNy0wNi0zMCAwNjoxNyAgaGFyZGFrZXIKIAotMjAwNy0wNi0zMCAwNDozNiAgaGFyZGFrZXIKKyAgICogZGlzdC9tYWtlcmVsZWFzZToKIAotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHZlcnNpb24gdXBkYXRlCisgICBhY3R1YWxseSBjYWxsIHJlbW92ZWZpbGVzCiAKLTIwMDctMDYtMzAgMDQ6MzQgIGhhcmRha2VyCisyMDA3LTA2LTI4IDIzOjUwICBtYWdmcgogCi0gICAqIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsCi0gICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywKLSAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLAotICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsCi0gICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywKLSAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLAotICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywKLSAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywKLSAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywKLSAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLAotICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLAotICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLAotICAgICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKLSAgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaDoKIAotMjAwNy0wNi0zMCAwNDozMiAgaGFyZGFrZXIKKyAgIE5FV1M6IHNubXBsaWI6IEFkZGVkIEdDQyBmb3JtYXQgY2hlY2tpbmcgYXR0cmlidXRlcyB0byB0aGUgZGVidWcKKyAgIGZ1bmN0aW9ucy4KIAotICAgKiBkb3h5Z2VuLmNvbmY6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMS5yYzEgKQorMjAwNy0wNi0yOCAyMzozNyAgbWFnZnIKIAotMjAwNy0wNi0yOSAyMjoxOCAgdGFuZGVycworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYzoKIAotICAgKiBSRUFETUUuYWl4LCBSRUFETUUuaXJpeCwgUkVBRE1FLnNvbGFyaXMsIGFnZW50L01ha2VmaWxlLmluLAotICAgICBhcHBzL01ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgbmV0LXNubXAtY29uZmlnLmluOgotICAgICBORVdTOiBwZXJsOiBCVUc6IDE2MTk4Mjc6IGxpbmsgbGlibmV0c25tcGFnZW50L2xpYm5ldHNubXB0cmFwZAotICAgICAocmF0aGVyIHRoYW4gc25tcGQvc25tcHRyYXBkKSBhZ2FpbnN0IGxpYnBlcmwgd2hlbiBjb25maWd1cmVkCi0gICAgIHdpdGggLS1lbmFibGUtYXMtbmVlZGVkCisgICBSZW1vdmUgY2FzdHMgb2YgdW51c2VkIHZhbHVlcworCisyMDA3LTA2LTI4IDIzOjM2ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgorCisgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcwogCiAyMDA3LTA2LTI4IDIyOjA5ICB0YW5kZXJzCiAKICAgICogbmV0LXNubXAtY29uZmlnLmluOgotICAgICByZW5hbWUgbGFzdCBvY2N1cmVuY2Ugb2YgREVGQVVMVF9NSUJbRElSXVMgdG8KLSAgICAgTkVUU05NUF9ERUZBVUxUX01JQltESVJdUworCisgICByZW5hbWUgbGFzdCBvY2N1cmVuY2Ugb2YgREVGQVVMVF9NSUJbRElSXVMgdG8KKyAgIE5FVFNOTVBfREVGQVVMVF9NSUJbRElSXVMKKworMjAwNy0wNi0yOCAwODoxNSAgbWFnZnIKKworICAgKiBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jOgorCisgICBEbyBub3QgdHJhbnNmb3JtIHRoZSBpZ25vcmVkIHJlc3VsdCBvZiByZWFsbG9jX2Zvcm1hdF90cmFwCiAKIDIwMDctMDYtMjYgMjI6MTIgIHRhbmRlcnMKIAogICAgKiBhcHBzL01ha2VmaWxlLmluOgotICAgICBDSEFOR0VTOiBidWlsZDogd29yayBhcm91bmQgbGlibmV0c25tcGFnZW50L2xpYm5ldHNubXBoZWxwZXJzCi0gICAgIGRlcGVuZGVuY3kgaXNzdWVzIHdoZW4gbGlua2luZyBzbm1wdHJhcGQKKworICAgQ0hBTkdFUzogYnVpbGQ6IHdvcmsgYXJvdW5kIGxpYm5ldHNubXBhZ2VudC9saWJuZXRzbm1waGVscGVycworICAgZGVwZW5kZW5jeSBpc3N1ZXMgd2hlbiBsaW5raW5nIHNubXB0cmFwZAogCiAyMDA3LTA2LTI2IDIxOjQ1ICB0YW5kZXJzCiAKICAgICogYWdlbnQvTWFrZWZpbGUuaW4sIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW46Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiB1c2UgTERGTEFHUyB3aGVuIGJ1aWxkaW5nIGFnZW50LCBoZWxwZXJzIGFuZCBtaWIKLSAgICAgbGliIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBsaWJuZXRubXAKKworICAgQ0hBTkdFUzogYnVpbGQ6IHVzZSBMREZMQUdTIHdoZW4gYnVpbGRpbmcgYWdlbnQsIGhlbHBlcnMgYW5kIG1pYgorICAgbGliIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBsaWJuZXRubXAKIAogMjAwNy0wNi0yNiAyMToyOCAgdGFuZGVycwogCiAgICAqIElOU1RBTEw6Ci0gICAgIG1pbm9yIHVwZGF0ZXMKKworICAgbWlub3IgdXBkYXRlcworCisyMDA3LTA2LTI2IDE1OjEwICByc3RvcnkKKworICAgKiBhcHBzL3NubXB0cmFwZC5jLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jOgorCisgICBkb24ndCBpbml0aWFsaXplIHZhciBpbiBleHRlcm4gZGVjbDsgaW5zdGVhZCwgaW5pdGlhbGl6ZSBhY3R1YWwKKyAgIHZhcgorCisyMDA3LTA2LTI1IDIxOjI5ICB0YW5kZXJzCisKKyAgICogYWNsb2NhbC5tNCwgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViLCBjb25maWd1cmUsIGx0bWFpbi5zaDoKKworICAgTkVXUzogYnVpbGQ6IHVwZGF0ZSB0byBsaWJ0b29sIDEuNS4yNCAoZnJvbSAxLjUuMjIpCiAKIDIwMDctMDYtMjQgMTI6NTcgIHRhbmRlcnMKIAotICAgKiBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKLSAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKLSAgICAgSEFWRV9TU0laRV9UIGNsZWFudXAKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgSEFWRV9TU0laRV9UIGNsZWFudXAKIAogMjAwNy0wNi0yMyAyMjo1NiAgdGFuZGVycwogCiAgICAqIFJFQURNRS5ocHV4MTE6Ci0gICAgIGRvbid0IHN1Z2dlc3QgLS13aXRoLWxpYnM9LWxubQogCi0yMDA3LTA2LTIyIDE1OjA5ICBkdHMxMgorICAgZG9uJ3Qgc3VnZ2VzdCAtLXdpdGgtbGlicz0tbG5tCiAKLSAgICogd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLmRzcCwKLSAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZHNwLCB3aW4zMi9saWJoZWxwZXJzL2xpYmhlbHBlcnMuZHNwLAotICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvbGlibmV0c25tcHRyYXBkLmRzcCwgd2luMzIvbGlic2RsbC5kc3csCi0gICAgIHdpbjMyL2xpYnNubXAvbGlic25tcC5kc3AsIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcCwKLSAgICAgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMuZHNwLAotICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3AsCi0gICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LmRzcCwKLSAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay5kc3AsIHdpbjMyL3NubXBkL3NubXBkLmRzcCwKLSAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS5kc3AsIHdpbjMyL3NubXBkZi9zbm1wZGYuZHNwLAotICAgICB3aW4zMi9zbm1wZHNkay9zbm1wZC5kc3AsIHdpbjMyL3NubXBnZXQvc25tcGdldC5kc3AsCi0gICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcCwKLSAgICAgd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQuZHNwLCB3aW4zMi9zbm1wc2V0L3NubXBzZXQuZHNwLAotICAgICB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMuZHNwLCB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLmRzcCwKLSAgICAgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QuZHNwLAotICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUuZHNwLAotICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC5kc3AsIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQuZHNwLAotICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20uZHNwLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS5kc3AsCi0gICAgIHdpbjMyL3NubXB3YWxrL3NubXB3YWxrLmRzcCwgd2luMzIvd2luMzIuZHN3LCB3aW4zMi93aW4zMnNkay5kc3c6Ci0gICAgIEVuZm9yY2UgRE9TLXN0eWxlIGxpbmUgZW5kaW5ncywgdG8ga2VlcCBWaXN1YWwgU3R1ZGlvIGhhcHB5LgorMjAwNy0wNi0yMiAxNTowNSAgZHRzMTIKKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLmRzcCwgICAKKyAgICAgIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRzcCwgd2luMzIvbGliaGVscGVycy9saWJoZWxwZXJzLmRzcCwgICAKKyAgICAgIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9saWJuZXRzbm1wdHJhcGQuZHNwLCB3aW4zMi9saWJzZGxsLmRzdywgICAKKyAgICAgIHdpbjMyL2xpYnNubXAvbGlic25tcC5kc3AsIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcCwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLmRzcCwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzc2RrL25ldHNubXBtaWJzc2RrLmRzcCwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LmRzcCwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwLCB3aW4zMi9zbm1wZC9zbm1wZC5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLmRzcCwgd2luMzIvc25tcGRmL3NubXBkZi5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wZHNkay9zbm1wZC5kc3AsIHdpbjMyL3NubXBnZXQvc25tcGdldC5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC5kc3AsIHdpbjMyL3NubXBzZXQvc25tcHNldC5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMuZHNwLCB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLmRzcCwgICAKKyAgICAgIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LmRzcCwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC5kc3AsIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQuZHNwLCAgIAorICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLmRzcCwgd2luMzIvc25tcHZhY20vc25tcHZhY20uZHNwLCAgIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsuZHNwLCB3aW4zMi93aW4zMi5kc3csIHdpbjMyL3dpbjMyc2RrLmRzdzoKKworICAgRW5mb3JjZSBET1Mtc3R5bGUgbGluZSBlbmRpbmdzLCB0byBrZWVwIFZpc3VhbCBTdHVkaW8gaGFwcHkuCisKKzIwMDctMDYtMjEgMTQ6MDEgIHJzdG9yeQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzLmg6CisKKyAgIGRlZmF1bHQgdG8gdXNpbmcgaWZUYWJsZSByZXdyaXRlcwogCiAyMDA3LTA2LTIwIDIxOjM0ICB0YW5kZXJzCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYzoKLSAgICAgZml4IHR5cG8KKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfb3BlbmJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYzoKKworICAgZml4IHR5cG8KIAogMjAwNy0wNi0xOSAyMjoyMyAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBmaXggUGVybC1yZWxhdGVkIGF1dG9jb25mIG1lc3NhZ2VzCisKKyAgIGZpeCBQZXJsLXJlbGF0ZWQgYXV0b2NvbmYgbWVzc2FnZXMKIAogMjAwNy0wNi0xOSAxNTowOCAgdGFuZGVycwogCiAgICAqIGRpc3QvbmV0LXNubXAuc3BlYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IGFkZCAiQnVpbGRSZXF1aXJlczogcGVybC1FeHRVdGlscy1FbWJlZCIgdG8gdGhlCi0gICAgIHNwZWMgZmlsZSwgZS5nLiBmb3IgRmVkb3JhIDcKKworICAgQ0hBTkdFUzogYnVpbGQ6IGFkZCAiQnVpbGRSZXF1aXJlczogcGVybC1FeHRVdGlscy1FbWJlZCIgdG8gdGhlCisgICBzcGVjIGZpbGUsIGUuZy4gZm9yIEZlZG9yYSA3CiAKIDIwMDctMDYtMTggMjI6MjggIGhhcmRha2VyCiAKICAgICogcGVybC9TTk1QL1NOTVAueHM6Ci0gICAgIGZpeCBicm9rZW4gY29tbWVudC4KIAotMjAwNy0wNi0xOCAyMjowNCAgaGFyZGFrZXIKLQotICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKLSAgICAgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgotICAgICAtIHZlcnNpb24gdGFnICggNS40LjEucHJlMyApCi0KLTIwMDctMDYtMTggMjI6MDMgIGhhcmRha2VyCi0KLSAgICogQ0hBTkdFUywgTkVXUzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNi0xOCAyMTo1NyAgaGFyZGFrZXIKLQotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHZlcnNpb24gdXBkYXRlCisgICBmaXggYnJva2VuIGNvbW1lbnQuCiAKIDIwMDctMDYtMTggMjE6NTQgIGhhcmRha2VyCiAKICAgICogYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbjoKLSAgICAgcmV2ZXJ0IGRvdWJsZSBsaW5raW5nIG9mIGxpYm5ldHNtbnAgcGFydCBvZiBwYXRjaCB0aGF0IHdhcwotICAgICBzdXBwb3NlZCB0byBiZSBwdWxsZWQgYm9mZXIgYXBwbHlpbmcgaW4gcjE2NTM4ICh0aGFua3MgdGFuZGVycwotICAgICBmb3IgY2F0Y2hpbmcgaXQpCiAKLTIwMDctMDYtMTggMjE6NDggIGhhcmRha2VyCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kOgotICAgICBtYWtlIGRlcGVuZAotCi0yMDA3LTA2LTE4IDIxOjQ3ICBoYXJkYWtlcgotCi0gICAqIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsCi0gICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywKLSAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLAotICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsCi0gICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywKLSAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLAotICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywKLSAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywKLSAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywKLSAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLAotICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLAotICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLAotICAgICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKLSAgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLQotMjAwNy0wNi0xOCAyMTo0NiAgaGFyZGFrZXIKLQotICAgKiBkb3h5Z2VuLmNvbmY6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMS5wcmUzICkKKyAgIHJldmVydCBkb3VibGUgbGlua2luZyBvZiBsaWJuZXRzbW5wIHBhcnQgb2YgcGF0Y2ggdGhhdCB3YXMKKyAgIHN1cHBvc2VkIHRvIGJlIHB1bGxlZCBib2ZlciBhcHBseWluZyBpbiByMTY1MzggKHRoYW5rcyB0YW5kZXJzCisgICBmb3IgY2F0Y2hpbmcgaXQpCiAKIDIwMDctMDYtMTggMjE6MzQgIGhhcmRha2VyCiAKICAgICogYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbiwgc25tcGxpYi9NYWtlZmlsZS5pbjoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IHBhdGNoIGZyb20gYXBwbGUgdG8gc2ltcGxpZnkgbWFrZWZpbGUgdGFyZ2V0Ci0gICAgIHJlZmVyZW5jZXMgaW4gc29tZSBydWxlcy4KKworICAgQ0hBTkdFUzogYnVpbGQ6IHBhdGNoIGZyb20gYXBwbGUgdG8gc2ltcGxpZnkgbWFrZWZpbGUgdGFyZ2V0CisgICByZWZlcmVuY2VzIGluIHNvbWUgcnVsZXMuCiAKIDIwMDctMDYtMTggMjE6MTcgIGhhcmRha2VyCiAKICAgICogbWFuL3NubXBfY29uZmlnLjUuZGVmLCBtYW4vc25tcGdldC4xLmRlZjoKLSAgICAgQ0hBTkdFUzogcGF0Y2ggZnJvbSBhcHBsZSB0byBmaXggbWlub3IgZG9jdW1lbnRhdGlvbiBidWdzLgorCisgICBDSEFOR0VTOiBwYXRjaCBmcm9tIGFwcGxlIHRvIGZpeCBtaW5vciBkb2N1bWVudGF0aW9uIGJ1Z3MuCiAKIDIwMDctMDYtMTggMjE6MTMgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oLAotICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45Lmg6Ci0gICAgIAorICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oOgorCisgICAKIAogMjAwNy0wNi0xOCAyMToxMiAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2Rhcndpbi5jOgotICAgICBDSEFOR0VTOiBwYXRjaCBmcm9tIGFwcGxlIHRvIGltcHJvdmUgbWVtb3J5IHJlcG9ydGluZworCisgICBDSEFOR0VTOiBwYXRjaCBmcm9tIGFwcGxlIHRvIGltcHJvdmUgbWVtb3J5IHJlcG9ydGluZwogCiAyMDA3LTA2LTE4IDIxOjA5ICBoYXJkYWtlcgogCiAgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaDoKLSAgICAgQ0hBTkdFUzogcGF0Y2ggZnJvbSBhcHBsZSB0byBmaXggY3Jvc3MtY29tcGlsZSBidWlsZHMgaW4gYXBwbGVzCi0gICAgIGJ1aWxkIGVudmlyb25tZW50LgorCisgICBDSEFOR0VTOiBwYXRjaCBmcm9tIGFwcGxlIHRvIGZpeCBjcm9zcy1jb21waWxlIGJ1aWxkcyBpbiBhcHBsZXMKKyAgIGJ1aWxkIGVudmlyb25tZW50LgogCiAyMDA3LTA2LTE4IDIwOjU0ICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmM6Ci0gICAgIENIQU5HRVM6IHBhdGNoOiAxNzM3MDg1OiBmcm9tIGpzYWZyYW5lazogZml4IHRoZSAtTSBzd2l0Y2ggZm9yCi0gICAgIG1pYiBwYXJzaW5nIGJ5IGxvYWRpbmcgZGVmYXVsdHMgZmlyc3QgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIHNldAotICAgICBzbyBpdCBkb2VzIG5vdCBnZXQgb3ZlcndyaXR0ZW4gYnkgdGhlIGRlZmF1bHRzIGxhdGVyLgorCisgICBDSEFOR0VTOiBwYXRjaDogMTczNzA4NTogZnJvbSBqc2FmcmFuZWs6IGZpeCB0aGUgLU0gc3dpdGNoIGZvcgorICAgbWliIHBhcnNpbmcgYnkgbG9hZGluZyBkZWZhdWx0cyBmaXJzdCBiZWZvcmUgcGVyZm9ybWluZyB0aGUgc2V0CisgICBzbyBpdCBkb2VzIG5vdCBnZXQgb3ZlcndyaXR0ZW4gYnkgdGhlIGRlZmF1bHRzIGxhdGVyLgogCiAyMDA3LTA2LTE4IDIwOjUwICBoYXJkYWtlcgogCiAgICAqIHBlcmwvU05NUC9TTk1QLnhzOgotICAgICBORVdTOiBwZXJsOiBwYXRjaDogMTcyNTA0OTogZml4IGJ1bGt3YWxrIGluIGNhc2VzIG9mIG5vbi1yZXBlYXRlcgotICAgICB1c2FnZS4KKworICAgTkVXUzogcGVybDogcGF0Y2g6IDE3MjUwNDk6IGZpeCBidWxrd2FsayBpbiBjYXNlcyBvZiBub24tcmVwZWF0ZXIKKyAgIHVzYWdlLgogCiAyMDA3LTA2LTE4IDE0OjEwICB0YW5kZXJzCiAKICAgICogcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEw6Ci0gICAgIENIQU5HRVM6IHBlcmw6IGZpeCBwcmVyZXF1aXNpdGVzIGZvciBOZXRTTk1QOjpUcmFwUmVjZWl2ZXIKKworICAgQ0hBTkdFUzogcGVybDogZml4IHByZXJlcXVpc2l0ZXMgZm9yIE5ldFNOTVA6OlRyYXBSZWNlaXZlcgogCiAyMDA3LTA2LTE4IDEzOjM5ICB0YW5kZXJzCiAKICAgICogcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG06Ci0gICAgIENIQU5HRVM6IHBlcmw6IGZpeCBzeW50YXggZXJyb3IgaW4gTmV0U05NUDo6YWdlbnQ6OlN1cHBvcnQKKworICAgQ0hBTkdFUzogcGVybDogZml4IHN5bnRheCBlcnJvciBpbiBOZXRTTk1QOjphZ2VudDo6U3VwcG9ydAorCisyMDA3LTA2LTE2IDIzOjAxICB0YW5kZXJzCisKKyAgICogIGFnZW50L01ha2VmaWxlLmluLCBhcHBzL01ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgICAKKyAgICAgIG5ldC1zbm1wLWNvbmZpZy5pbjoKKworICAgTkVXUzogcGVybDogQlVHOiAxNjE5ODI3OiBsaW5rIGxpYm5ldHNubXBhZ2VudC9saWJuZXRzbm1wdHJhcGQKKyAgIChyYXRoZXIgdGhhbiBzbm1wZC9zbm1wdHJhcGQpIGFnYWluc3QgbGlicGVybC4KIAogMjAwNy0wNi0xNCAxNTo0MSAgcnN0b3J5CiAKICAgICogbG9jYWwvbWliMmMuY29uZjoKLSAgICAgZml4IHR5cG8gaW4gdXNlciBvdXRwdXQsIGFzIG5vdGVkIG9uIGNvZGVycworCisgICBmaXggdHlwbyBpbiB1c2VyIG91dHB1dCwgYXMgbm90ZWQgb24gY29kZXJzCisKKzIwMDctMDYtMTQgMTU6MzYgIHJzdG9yeQorCisgICAqIGRpc3QvY3Zzc2hvdzoKKworICAgdXNlICdzdm4gaW5mbycgdG8gcXVlcnkgZm9yIHVybAogCiAyMDA3LTA2LTE0IDA0OjM3ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5oOgotICAgICBBZGQgbWlzc2luZyBhcmd1bWVudCB0eXBlIGluIG9yZGVyIHRvIHNpbGVuY2UgYSBnY2Mgd2FybmluZworCisgICBBZGQgbWlzc2luZyBhcmd1bWVudCB0eXBlIGluIG9yZGVyIHRvIHNpbGVuY2UgYSBnY2Mgd2FybmluZworCisyMDA3LTA2LTEzIDA2OjM3ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBEbyBub3QgdHJ5IHRvIGJlIGNsZXZlciBpbiB0aGUgaGFuZGluZyBvZiAtbGt2bSBpbiBMQUdFTlRMSUJTLgorICAgSW5jbHVkZSBpdCBpZiBhbnkgc291Z2h0IGZ1bmN0aW9uIGlzIGluIGl0LgogCiAyMDA3LTA2LTExIDEwOjExICB0YW5kZXJzCiAKICAgICogUkVBRE1FLmFpeDoKLSAgICAgZG9jdW1lbnQgeGxjPC0+Y2NfciBjb21waWxlciBpc3N1ZXMgd2l0aCBQZXJsIG9uIEFJWCAoc2VlIGJ1ZwotICAgICAjMTYwMDA5OSkKKworICAgZG9jdW1lbnQgeGxjPC0+Y2NfciBjb21waWxlciBpc3N1ZXMgd2l0aCBQZXJsIG9uIEFJWCAoc2VlIGJ1ZworICAgIzE2MDAwOTkpCiAKIDIwMDctMDYtMTAgMjI6MjkgIHRhbmRlcnMKIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwKLSAgICAgaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgotICAgICBDSEFOR0VTOiBidWlsZDogUEFUQ0g6IDE3MjgyNDc6IGZyb20gbWl0c3VydV9jaGluZW46IEFkZCB0eXBlCi0gICAgIGNoZWNrIGZvciBpbnQ/P190IGFuZCB1aW50Pz9fdAorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmg6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTcyODI0NzogZnJvbSBtaXRzdXJ1X2NoaW5lbjogQWRkIHR5cGUKKyAgIGNoZWNrIGZvciBpbnQ/P190IGFuZCB1aW50Pz9fdAogCiAyMDA3LTA2LTEwIDIyOjIyICB0YW5kZXJzCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sCi0gICAgIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjQ0OiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBBZGQKLSAgICAgY29uZmlndXJlIGNoZWNrIGZvciBzaW42X3Njb3BlX2lkCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKKworICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjQ0OiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBBZGQKKyAgIGNvbmZpZ3VyZSBjaGVjayBmb3Igc2luNl9zY29wZV9pZAogCiAyMDA3LTA2LTEwIDIyOjE1ICB0YW5kZXJzCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sCi0gICAgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jOgotICAgICBDSEFOR0VTOiBQQVRDSDogMTcyODI0MTogZnJvbSBtaXRzdXJ1X2NoaW5lbjogYWRkIGNvbmZpZ3VyZSBjaGVjawotICAgICBmb3IgPHN5cy91aW8uaD4gKG1ha2Ugc3VyZSBpb3Ygc3RydWN0dXJlIGlzIGRlY2xhcmVkKQorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE3MjgyNDE6IGZyb20gbWl0c3VydV9jaGluZW46IGFkZCBjb25maWd1cmUgY2hlY2sKKyAgIGZvciA8c3lzL3Vpby5oPiAobWFrZSBzdXJlIGlvdiBzdHJ1Y3R1cmUgaXMgZGVjbGFyZWQpCisKKzIwMDctMDYtMTAgMDY6MzMgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgVXNlIE5FVFNOTVBfU0VBUkNIX0xJQlMgdG8gc2ltcGxpZnkgc2VhcmNoaW5nIGZvciBzeXN0ZW0gc3BlY2lmaWMKKyAgIGxpYnJhcmllcworCisyMDA3LTA2LTEwIDA2OjI2ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBVc2UgTkVUU05NUF9TRUFSQ0hfTElCUyB0byBzaW1wbGlmeSBzZWFyY2hpbmcgZm9yIC1sc2Vuc29ycworCisyMDA3LTA2LTEwIDA2OjE4ICBtYWdmcgorCisgICAqICBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFVzZSBORVRTTk1QX1NFQVJDSF9MSUJTIHRvIHNpbXBsaWZ5IHNlYXJjaGluZyBmb3IgLWxkZXZzdGF0CisKKzIwMDctMDYtMTAgMDY6MTMgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFVzZSBORVRTTk1QX1NFQVJDSF9MSUJTIHRvIHNpbXBsaWZ5IHNlYXJjaGluZyBmb3IgLWxkbAorCisyMDA3LTA2LTA5IDA4OjU4ICBtYWdmcgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHdpbjMyL2NvbmZpZy5oLmJvcmxhbmQsIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFVzZSBORVRTTk1QX1NFQVJDSF9MSUJTIHRvIHNpbXBsaWZ5IHNlYXJjaGluZyBmb3IgLWxrdm0KIAogMjAwNy0wNi0wOCAyMDozMiAgdGFuZGVycwogCi0gICAqIE1ha2VmaWxlLmluOgotICAgICBGaXggcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IHIxNjQ3OTogJ21ha2UgdGVzdCBURVNUT1BUUz0iLVQKLSAgICAgdGNwIicgbm93Ci0gICAgIHdvcmtzIGFnYWluLiBtYWtlcmVsZWFzZSBub3cgdXNlcyB0aGUgcmlnaHQgb3B0aW9uLgorICAgKiBNYWtlZmlsZS5pbiwgZGlzdC9tYWtlcmVsZWFzZToKKworICAgRml4IHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSByMTY0Nzk6ICdtYWtlIHRlc3QgVEVTVE9QVFM9Ii1UCisgICB0Y3AiJyBub3cKKyAgIHdvcmtzIGFnYWluLiBtYWtlcmVsZWFzZSBub3cgdXNlcyB0aGUgcmlnaHQgb3B0aW9uLgorCisyMDA3LTA2LTA4IDEwOjQ2ICBkdHMxMgorCisgICAqIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmM6CisKKyAgIENIQU5HRVM6IHNubXB0cmFwZDogRkVBVFVSRTogNzQxMzc1OiBFeHRlbmQgLUYgZmxhZyB0byBjb3ZlcgorICAgc3lzbG9nL2V4ZWN1dGUgZm9ybWF0IHN0cmluZ3MuCiAKIDIwMDctMDYtMDggMTA6NDQgIGR0czEyCiAKLSAgICogYXBwcy9zbm1wdHJhcGQuYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYzoKLSAgICAgSW1wcm92ZSBtZW1vcnkgaGFuZGxpbmcgb2Ygc3R5bGUtc3BlY2lmaWMgZm9ybWF0IHN0cmluZ3MuCisgICAqIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmM6CisKKyAgIEltcHJvdmUgbWVtb3J5IGhhbmRsaW5nIG9mIHN0eWxlLXNwZWNpZmljIGZvcm1hdCBzdHJpbmdzLgogCiAyMDA3LTA2LTA4IDEwOjMzICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgotICAgICBEZWZhdWx0IHRvIHJlcG9ydGluZyBORlMgbW91bnRzIGFzIE5ldHdvcmtEaXNrLgorCisgICBEZWZhdWx0IHRvIHJlcG9ydGluZyBORlMgbW91bnRzIGFzIE5ldHdvcmtEaXNrLgorCisyMDA3LTA2LTA4IDA2OjAyICBtYWdmcgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFVzZSBORVRTTk1QX1NFQVJDSF9MSUJTIHRvIHNpbXBsaWZ5IHNlYXJjaGluZyBmb3IgLWxycG0gYW5kCisgICB0aGluZ3MgaXQgZGVwZW5kcworICAgb24KKworMjAwNy0wNi0wOCAwNTo1OSAgbWFnZnIKKworICAgKiBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluOgorCisgICBBZGQgbWlzc2luZyBcCisKKzIwMDctMDYtMDggMDU6MzEgIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIFVzZSBORVRTTk1QX1NFQVJDSF9MSUJTIHRvIHNpbXBsaWZ5IHNlYXJjaGluZyBmb3IgLWxrc3RhdAorCisyMDA3LTA2LTA4IDA1OjI4ICBtYWdmcgorCisgICAqIGFjaW5jbHVkZS5tNDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IEFkZCBhIHZhcmlhdGlvbiBvZiBBQ19TRUFSQ0hfTElCUyB3aGVyZSB0aGUKKyAgIHJlc3VsdCB2YXJpYWJsZSBpcyBzZXR0YWJsZS4KIAogMjAwNy0wNi0wOCAwNToxNiAgbWFnZnIKIAotICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLAotICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwKLSAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Ci0gICAgIFJlbW92ZSB0aGUgdW51c2VkIHVuZGVmIEhBVkVfUEVSTF9FVkFMX1BWLgotICAgICBUaGUgUGVybF9ldmFsX3B2IGZ1bmN0aW9ucyBhcmUgaGFuZGxlZCBieSB0aGUKLSAgICAgSEFWRV9QRVJMX0VWQUxfUFZfW1VMXUMgZGVmaW5lcywKLSAgICAgdGhpcyBvbmUgaXMgbmV2ZXIgc2V0IGJ5IG91ciBjb25maWd1cmUgc2NyaXB0LgorICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgUmVtb3ZlIHRoZSB1bnVzZWQgdW5kZWYgSEFWRV9QRVJMX0VWQUxfUFYuCisgICBUaGUgUGVybF9ldmFsX3B2IGZ1bmN0aW9ucyBhcmUgaGFuZGxlZCBieSB0aGUKKyAgIEhBVkVfUEVSTF9FVkFMX1BWX1tVTF1DIGRlZmluZXMsCisgICB0aGlzIG9uZSBpcyBuZXZlciBzZXQgYnkgb3VyIGNvbmZpZ3VyZSBzY3JpcHQuCiAKIDIwMDctMDYtMDcgMTY6MDIgIGR0czEyCiAKLSAgICogLmN2c2lnbm9yZSwgYWdlbnQvLmN2c2lnbm9yZSwgYWdlbnQvaGVscGVycy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC8uY3ZzaWdub3JlLCBhZ2VudC9taWJncm91cC9SbW9uLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2FnZW50Ly5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50Ly5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5Ly5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2hvc3QvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXBmd2NoYWlucy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9taWJJSS8uY3ZzaWdub3JlLCBhZ2VudC9taWJncm91cC9taXNjLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9zbXV4Ly5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhQYXJhbWV0ZXJzLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL3NubXB2My8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzLy5jdnNpZ25vcmUsIGFwcHMvLmN2c2lnbm9yZSwKLSAgICAgYXBwcy9zbm1wbmV0c3RhdC8uY3ZzaWdub3JlLCBkaXN0Ly5jdnNpZ25vcmUsCi0gICAgIGluY2x1ZGUvbmV0LXNubXAvLmN2c2lnbm9yZSwgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8uY3ZzaWdub3JlLAotICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvLmN2c2lnbm9yZSwgaW5jbHVkZS91Y2Qtc25tcC8uY3ZzaWdub3JlLAotICAgICBsb2NhbC8uY3ZzaWdub3JlLCBtYW4vLmN2c2lnbm9yZSwgbWlicy8uY3ZzaWdub3JlLCBvdi8uY3ZzaWdub3JlLAotICAgICBwZXJsLy5jdnNpZ25vcmUsIHBlcmwvQVNOLy5jdnNpZ25vcmUsCi0gICAgIHBlcmwvQW55RGF0YV9TTk1QLy5jdnNpZ25vcmUsIHBlcmwvT0lELy5jdnNpZ25vcmUsCi0gICAgIHBlcmwvU05NUC8uY3ZzaWdub3JlLCBwZXJsL1NOTVAvdC8uY3ZzaWdub3JlLAotICAgICBwZXJsL1RyYXBSZWNlaXZlci8uY3ZzaWdub3JlLCBwZXJsL2FnZW50Ly5jdnNpZ25vcmUsCi0gICAgIHBlcmwvYWdlbnQvU3VwcG9ydC8uY3ZzaWdub3JlLAotICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvLmN2c2lnbm9yZSwKLSAgICAgcGVybC9kZWZhdWx0X3N0b3JlLy5jdnNpZ25vcmUsIHBlcmwvbWFuYWdlci8uY3ZzaWdub3JlLAotICAgICBzbm1wbGliLy5jdnNpZ25vcmUsIHRlc3RpbmcvLmN2c2lnbm9yZSwgd2luMzIvLmN2c2lnbm9yZSwKLSAgICAgd2luMzIvYmluLy5jdnNpZ25vcmUsIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvLmN2c2lnbm9yZSwKLSAgICAgd2luMzIvbGliLy5jdnNpZ25vcmUsIHdpbjMyL2xpYmFnZW50Ly5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL2xpYmhlbHBlcnMvLmN2c2lnbm9yZSwgd2luMzIvbGlibmV0c25tcHRyYXBkLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL2xpYnNubXAvLmN2c2lnbm9yZSwgd2luMzIvbGlic25tcF9kbGwvLmN2c2lnbm9yZSwKLSAgICAgd2luMzIvbGlidWNkbWlicy8uY3ZzaWdub3JlLCB3aW4zMi9uZXQtc25tcC8uY3ZzaWdub3JlLAotICAgICB3aW4zMi9uZXQtc25tcC9hZ2VudC8uY3ZzaWdub3JlLAotICAgICB3aW4zMi9uZXQtc25tcC9saWJyYXJ5Ly5jdnNpZ25vcmUsIHdpbjMyL25ldHNubXBtaWJzLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL25ldHNubXBtaWJzc2RrLy5jdnNpZ25vcmUsIHdpbjMyL3NubXBidWxrZ2V0Ly5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL3NubXBidWxrd2Fsay8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wZC8uY3ZzaWdub3JlLAotICAgICB3aW4zMi9zbm1wZGVsdGEvLmN2c2lnbm9yZSwgd2luMzIvc25tcGRmLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL3NubXBkc2RrLy5jdnNpZ25vcmUsIHdpbjMyL3NubXBnZXQvLmN2c2lnbm9yZSwKLSAgICAgd2luMzIvc25tcGdldG5leHQvLmN2c2lnbm9yZSwgd2luMzIvc25tcG5ldHN0YXQvLmN2c2lnbm9yZSwKLSAgICAgd2luMzIvc25tcHNldC8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wc3RhdHVzLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL3NubXB0YWJsZS8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wdGVzdC8uY3ZzaWdub3JlLAotICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlLy5jdnNpZ25vcmUsIHdpbjMyL3NubXB0cmFwLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL3NubXB0cmFwZC8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wdXNtLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL3NubXB2YWNtLy5jdnNpZ25vcmUsIHdpbjMyL3NubXB3YWxrLy5jdnNpZ25vcmU6Ci0gICAgIFJlbW92ZSByZWR1bmRhbnQgQ1ZTLWFkbWluIGZpbGVzLgorICAgKiAgLmN2c2lnbm9yZSwgYWdlbnQvLmN2c2lnbm9yZSwgYWdlbnQvaGVscGVycy8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvLmN2c2lnbm9yZSwgYWdlbnQvbWliZ3JvdXAvUm1vbi8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcGZ3Y2hhaW5zLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS8uY3ZzaWdub3JlLCBhZ2VudC9taWJncm91cC9taXNjLy5jdnNpZ25vcmUsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbXV4Ly5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlLy5jdnNpZ25vcmUsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhQYXJhbWV0ZXJzLy5jdnNpZ25vcmUsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvLmN2c2lnbm9yZSwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0Ly5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvLmN2c2lnbm9yZSwgYXBwcy8uY3ZzaWdub3JlLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC8uY3ZzaWdub3JlLCBkaXN0Ly5jdnNpZ25vcmUsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wLy5jdnNpZ25vcmUsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvLmN2c2lnbm9yZSwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS8uY3ZzaWdub3JlLCBpbmNsdWRlL3VjZC1zbm1wLy5jdnNpZ25vcmUsIAorICAgICAgICBsb2NhbC8uY3ZzaWdub3JlLCBtYW4vLmN2c2lnbm9yZSwgbWlicy8uY3ZzaWdub3JlLAorICAgICAgb3YvLmN2c2lnbm9yZSwgICAgcGVybC8uY3ZzaWdub3JlLCBwZXJsL0FTTi8uY3ZzaWdub3JlLCAgIAorICAgICAgcGVybC9BbnlEYXRhX1NOTVAvLmN2c2lnbm9yZSwgcGVybC9PSUQvLmN2c2lnbm9yZSwgICAKKyAgICAgIHBlcmwvU05NUC8uY3ZzaWdub3JlLCBwZXJsL1NOTVAvdC8uY3ZzaWdub3JlLCAgIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvLmN2c2lnbm9yZSwgcGVybC9hZ2VudC8uY3ZzaWdub3JlLCAgIAorICAgICAgcGVybC9hZ2VudC9TdXBwb3J0Ly5jdnNpZ25vcmUsICAgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvLmN2c2lnbm9yZSwgICAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS8uY3ZzaWdub3JlLCBwZXJsL21hbmFnZXIvLmN2c2lnbm9yZSwgICAKKyAgICAgIHNubXBsaWIvLmN2c2lnbm9yZSwgdGVzdGluZy8uY3ZzaWdub3JlLCB3aW4zMi8uY3ZzaWdub3JlLCAgIAorICAgICAgd2luMzIvYmluLy5jdnNpZ25vcmUsIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL2xpYi8uY3ZzaWdub3JlLCB3aW4zMi9saWJhZ2VudC8uY3ZzaWdub3JlLCAgIAorICAgICAgd2luMzIvbGliaGVscGVycy8uY3ZzaWdub3JlLCB3aW4zMi9saWJuZXRzbm1wdHJhcGQvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL2xpYnNubXAvLmN2c2lnbm9yZSwgd2luMzIvbGlic25tcF9kbGwvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL2xpYnVjZG1pYnMvLmN2c2lnbm9yZSwgd2luMzIvbmV0LXNubXAvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL2FnZW50Ly5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9saWJyYXJ5Ly5jdnNpZ25vcmUsIHdpbjMyL25ldHNubXBtaWJzLy5jdnNpZ25vcmUsICAKKyAgICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wYnVsa2dldC8uY3ZzaWdub3JlLCAgIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrLy5jdnNpZ25vcmUsIHdpbjMyL3NubXBkLy5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9zbm1wZGVsdGEvLmN2c2lnbm9yZSwgd2luMzIvc25tcGRmLy5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9zbm1wZHNkay8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wZ2V0Ly5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9zbm1wZ2V0bmV4dC8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wbmV0c3RhdC8uY3ZzaWdub3JlLCAgIAorICAgICAgd2luMzIvc25tcHNldC8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wc3RhdHVzLy5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9zbm1wdGFibGUvLmN2c2lnbm9yZSwgd2luMzIvc25tcHRlc3QvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvLmN2c2lnbm9yZSwgd2luMzIvc25tcHRyYXAvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFwZC8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wdXNtLy5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9zbm1wdmFjbS8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wd2Fsay8uY3ZzaWdub3JlOgorCisgICBSZW1vdmUgcmVkdW5kYW50IENWUy1hZG1pbiBmaWxlcy4KIAogMjAwNy0wNi0wNyAxMjo1NiAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBfc2VjbW9kLmM6Ci0gICAgIEhhbmRsZSB1bnJlZ2lzdGVyaW5nIHRoZSBmaXJzdCBTZWN1cml0eSBNb2RlbCBpbiB0aGUgbGlzdC4KLSAgICAgUmVwb3J0ZWQgYnkgQWxla3NhbmRyIExvbWFub3YuCisKKyAgIEhhbmRsZSB1bnJlZ2lzdGVyaW5nIHRoZSBmaXJzdCBTZWN1cml0eSBNb2RlbCBpbiB0aGUgbGlzdC4KKyAgIFJlcG9ydGVkIGJ5IEFsZWtzYW5kciBMb21hbm92LgogCiAyMDA3LTA2LTA3IDA5OjEzICBkdHMxMgogCiAgICAqIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW46Ci0gICAgIEluc3RhbGwgaGVhZGVyIGZpbGVzIGZvciBzdGFzaF9jYWNoZSBhbmQgc3Rhc2hfdG9fbmV4dCBoZWxwZXJzLgorCisgICBJbnN0YWxsIGhlYWRlciBmaWxlcyBmb3Igc3Rhc2hfY2FjaGUgYW5kIHN0YXNoX3RvX25leHQgaGVscGVycy4KIAogMjAwNy0wNi0wNyAwOTowNyAgZHRzMTIKIAogICAgKiBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluOgotICAgICBTZXBhcmF0ZSBvdXQgaGVhZGVyIGZpbGVzIHRoYXQgZG9uJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgQwotICAgICBzb3VyY2UgZmlsZS4KKworICAgU2VwYXJhdGUgb3V0IGhlYWRlciBmaWxlcyB0aGF0IGRvbid0IGhhdmUgYSBjb3JyZXNwb25kaW5nIEMKKyAgIHNvdXJjZSBmaWxlLgogCiAyMDA3LTA2LTA3IDA4OjU5ICBkdHMxMgogCiAgICAqIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW46Ci0gICAgIFNvcnQgbGlzdHMgb2YgaGVscGVycyAoc291cmNlIGNvZGUsIG9iamVjdCBmaWxlcyBhbmQgaGVhZGVycykuCi0gICAgIFRoaXMgc2hvdWxkIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgZmlsZXMgdGhhdCBoYXZlIGJlZW4gb21pdHRlZC4KKworICAgU29ydCBsaXN0cyBvZiBoZWxwZXJzIChzb3VyY2UgY29kZSwgb2JqZWN0IGZpbGVzIGFuZCBoZWFkZXJzKS4KKyAgIFRoaXMgc2hvdWxkIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgZmlsZXMgdGhhdCBoYXZlIGJlZW4gb21pdHRlZC4KIAogMjAwNy0wNi0wNyAwODo0MiAgZHRzMTIKIAogICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6Ci0gICAgIFByb3RlY3QgYWdhaW5zdCBzeXN0ZW1zIHdpdGhvdXQgU19JU0RJUi4KKworICAgUHJvdGVjdCBhZ2FpbnN0IHN5c3RlbXMgd2l0aG91dCBTX0lTRElSLgorCisyMDA3LTA2LTA2IDIyOjM2ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBXZSBhcmVuJ3QgdXNpbmcgbGlidG9vbHMgZGxvcGVuIHN1cHBvcnQsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8KKyAgIGNvbmZpZ3VyZSBmb3IgaXQKIAogMjAwNy0wNi0wNiAxMjozNyAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBDSEFOR0VTOiBBSVg6IHVzZSAiLVdsLC1icnRsIiB3aGVuIGNvbXBpbGluZyB3aXRoIGdjYworCisgICBDSEFOR0VTOiBBSVg6IHVzZSAiLVdsLC1icnRsIiB3aGVuIGNvbXBpbGluZyB3aXRoIGdjYworCisyMDA3LTA2LTA2IDEwOjI2ICBtYWdmcgorCisgICAqIGFjY29uZmlnLmgsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFJlbW92ZSB0aGUgdW51c2VkIHVuZGVmIEhBVkVfUEVSTF9FVkFMX1BWLgorICAgVGhlIFBlcmxfZXZhbF9wdiBmdW5jdGlvbnMgYXJlIGhhbmRsZWQgYnkgdGhlCisgICBIQVZFX1BFUkxfRVZBTF9QVl9bVUxdQyBkZWZpbmVzLAorICAgdGhpcyBvbmUgaXMgbmV2ZXIgc2V0IGJ5IG91ciBjb25maWd1cmUgc2NyaXB0LgogCiAyMDA3LTA2LTA2IDEwOjIwICBkdHMxMgogCiAgICAqIGFwcHMvc25tcHRyYXBkLmM6Ci0gICAgIEVuc3VyZSBvdXRwdXQgaXMgcHJvcGVybHkgZGlyZWN0ZWQgdG8gc3lzbG9nLgotICAgICBPdGhlcndpc2UsIHByb2JsZW1zIGluIHRoZSBjb25maWcgZW52aXJvbm1lbnQgY2FuIHRyaWdnZXIKLSAgICAgZXJyb3JzIGJlaW5nIGRpcmVjdGVkIHRvIHN0ZGVyciwgYW5kIHN1YnNlcXVlbnQgbG9nZ2luZwotICAgICBvdXRwdXQgZ2V0cyBsb3N0LgorCisgICBFbnN1cmUgb3V0cHV0IGlzIHByb3Blcmx5IGRpcmVjdGVkIHRvIHN5c2xvZy4KKyAgIE90aGVyd2lzZSwgcHJvYmxlbXMgaW4gdGhlIGNvbmZpZyBlbnZpcm9ubWVudCBjYW4gdHJpZ2dlcgorICAgZXJyb3JzIGJlaW5nIGRpcmVjdGVkIHRvIHN0ZGVyciwgYW5kIHN1YnNlcXVlbnQgbG9nZ2luZworICAgb3V0cHV0IGdldHMgbG9zdC4KIAogMjAwNy0wNi0wNiAxMDoxMyAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6Ci0gICAgIE1vcmUgaGVscGZ1bCBkZWJ1Z2dpbmcgb3V0cHV0LgorCisgICBNb3JlIGhlbHBmdWwgZGVidWdnaW5nIG91dHB1dC4KIAogMjAwNy0wNi0wNiAwNTo1MyAgbWFnZnIKIAotICAgKiBhcHBzL3NubXB0cmFwZC5jLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMzVzbm1wdjN0cmFwZHVzZXJtZ210OgotICAgICBDSEFOR0VTOiBtaXNjOiBEb24ndCB1c2UgdGhlIGxlZ2FjeSBzeW1ib2wKLSAgICAgU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYCisgICAqICBhcHBzL3NubXB0cmFwZC5jLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDM1c25tcHYzdHJhcGR1c2VybWdtdDoKKworICAgQ0hBTkdFUzogbWlzYzogRG9uJ3QgdXNlIHRoZSBsZWdhY3kgc3ltYm9sCisgICBTTk1QVFJBUERfRElTQUJMRV9BR0VOVFgKKworMjAwNy0wNi0wNSAxNzo0OSAgbWFnZnIKKworICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBidWlsZGluZzogUmVtb3ZlIGV4cGxpY2l0IGRlZmluaXRpb25zIG9mIGl0ZW1zIHRoYXQKKyAgIGF1dG9oZWFkZXIgYWxzbyBkZWZpbmVzCiAKIDIwMDctMDYtMDUgMTU6NTkgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNzI5NjI5OiBGaXggbWVtb3J5IGxlYWsgaW4gZGlzbWFuCi0gICAgIGFnZW50LgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTcyOTYyOTogRml4IG1lbW9yeSBsZWFrIGluIGRpc21hbgorICAgYWdlbnQuCisKKzIwMDctMDYtMDUgMTQ6NTIgIGR0czEyCisKKyAgICogYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYzoKKworICAgQ0hBTkdFUzogc25tcHRyYXBkOiBTdXBwb3J0IHBlci10cmFwIGZvcm1hdCBzcGVjaWZpY2F0aW9ucworCisyMDA3LTA2LTA1IDA2OjU3ICBtYWdmcgorCisgICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKKworICAgTkVXUzogbWlzYzogQWRkIGNvbmZpZyByZXJlYWRpbmcgc3VwcG9ydCB0byB0aGUgc3ViYWdlbnQKKyAgIGdlbmVyYXRlZCBieSBuZXQtc25tcC1jb25maWcgLS1jb21waWxlLXN1YmFnZW50CisKKzIwMDctMDYtMDQgMjI6MjkgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IFNpbXBsaWZ5IHRoZSBkZXRlY3Rpb24gb2YgbGlicmFyaWVzIG5lZWRlZCBmb3IKKyAgIGdldGhvc3RieW5hbWUKIAogMjAwNy0wNi0wNCAyMjowNiAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0gICAgIE5FV1M6IHNubXBsaWI6IENoYW5nZSBzbm1wX3Nlc3NfYWRkX2V4IHRvIGNvbnNpc3RlbnRseSBjbG9zZSBhbmQKLSAgICAgZGVsZXRlIHRoZSB0cmFuc3BvcnQgYXJndW1lbnQgb24gZmFpbHVyZSwgZWFybGllciB0aGUgbGl2ZW5lc3Mgb2YKLSAgICAgdGhlIHRyYW5zcG9ydCBhcmd1bWVudCB3YXMgdW5kZWNpZGVkLgogCi0yMDA3LTA2LTA0IDE1OjUwICBoYXJkYWtlcgotCi0gICAqIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLAotICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMS5wcmUyICkKLQotMjAwNy0wNi0wNCAxNTo1MCAgaGFyZGFrZXIKLQotICAgKiBDSEFOR0VTLCBORVdTOgotICAgICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDA3LTA2LTA0IDE1OjQ0ICBoYXJkYWtlcgotCi0gICAqIENoYW5nZUxvZzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNi0wNCAxNTo0MiAgaGFyZGFrZXIKLQotICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQ6Ci0gICAgIG1ha2UgZGVwZW5kCi0KLTIwMDctMDYtMDQgMTU6NDEgIGhhcmRha2VyCi0KLSAgICogbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywKLSAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLAotICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsCi0gICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywKLSAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAotICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsCi0gICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAotICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAotICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKLSAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAotICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsCi0gICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsCi0gICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotICAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDA3LTA2LTA0IDE1OjM5ICBoYXJkYWtlcgotCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xLnByZTIgKQorICAgTkVXUzogc25tcGxpYjogQ2hhbmdlIHNubXBfc2Vzc19hZGRfZXggdG8gY29uc2lzdGVudGx5IGNsb3NlIGFuZAorICAgZGVsZXRlIHRoZSB0cmFuc3BvcnQgYXJndW1lbnQgb24gZmFpbHVyZSwgZWFybGllciB0aGUgbGl2ZW5lc3Mgb2YKKyAgIHRoZSB0cmFuc3BvcnQgYXJndW1lbnQgd2FzIHVuZGVjaWRlZC4KIAogMjAwNy0wNi0wNCAxNDozNiAgaGFyZGFrZXIKIAotICAgKiBNYWtlZmlsZS5pbiwgdGVzdGluZy9SVU5URVNUUzoKLSAgICAgQ0hBTkdFUzogdGVzdDogc3VwcG9ydCBhIC1uIGZsYWcgdG8gUlVOVEVTVFMgdG8gcHJpbnQgdGhlIHRlc3QKLSAgICAgbnVtYmVyIGZvdW5kIGluIHRoZSB0ZXN0IGZpbGUgYXMgb3Bwb3NlZCB0byB0aGUgbnVtZXJpY2FsIGNvdW50CisgICAqIE1ha2VmaWxlLmluLCBkaXN0L21ha2VyZWxlYXNlLCB0ZXN0aW5nL1JVTlRFU1RTOgorCisgICBDSEFOR0VTOiB0ZXN0OiBzdXBwb3J0IGEgLW4gZmxhZyB0byBSVU5URVNUUyB0byBwcmludCB0aGUgdGVzdAorICAgbnVtYmVyIGZvdW5kIGluIHRoZSB0ZXN0IGZpbGUgYXMgb3Bwb3NlZCB0byB0aGUgbnVtZXJpY2FsIGNvdW50CiAKIDIwMDctMDYtMDQgMTM6MDkgIHRhbmRlcnMKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjM3OiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBNb3ZlCi0gICAgIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGF0IHRoZSB0b3Agb2YgbmV0c25tcF91ZHBfc2VuZHRvCisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTcyODIzNzogZnJvbSBtaXRzdXJ1X2NoaW5lbjogTW92ZQorICAgdmFyaWFibGUgZGVjbGFyYXRpb24gYXQgdGhlIHRvcCBvZiBuZXRzbm1wX3VkcF9zZW5kdG8KKworMjAwNy0wNi0wNCAxMjo1MiAgdGFuZGVycworCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaDoKKworICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjMzOiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBtYWtlIHN1cmUKKyAgIHR5cGUgbmZkc190IGlzIGRlZmluZWQKIAogMjAwNy0wNi0wNCAxMjoxMyAgdGFuZGVycwogCi0gICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCBjb25maWd1cmUsCi0gICAgIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwKLSAgICAgc25tcGxpYi9zbm1wVURQRG9tYWluLmMsIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjMwOiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBhZGQKLSAgICAgY29uZmlndXJlIGNoZWNrIGZvciBnYWlfc3RyZXJyb3IoKQorICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTcyODIzMDogZnJvbSBtaXRzdXJ1X2NoaW5lbjogYWRkCisgICBjb25maWd1cmUgY2hlY2sgZm9yIGdhaV9zdHJlcnJvcigpCiAKIDIwMDctMDYtMDQgMTA6MzUgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTcyODIyNjogZnJvbSBtaXRzdXJ1X2NoaW5lbjogbWFrZSBzdXJlCi0gICAgIElGX05BTUVTSVpFIGlzIGRlZmluZWQKKworICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjI2OiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBtYWtlIHN1cmUKKyAgIElGX05BTUVTSVpFIGlzIGRlZmluZWQKKworMjAwNy0wNi0wNCAxMDoyOCAgdGFuZGVycworCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTcyODIyMzogZnJvbSBtaXRzdXJ1X2NoaW5lbjogYWRkCisgICBjb25maWd1cmUgY2hlY2sgZm9yIG5ldGxpbmsgc29ja2V0CiAKIDIwMDctMDYtMDQgMDk6NDcgIHRhbmRlcnMKIAogICAgKiB0ZXN0aW5nL3Rlc3RzL1QxNjBzbm1wbmV0c3RhdDoKLSAgICAgYWxzbyBza2lwIHRoaXMgdGVzdCBvbiBJUklYNjQKKworICAgYWxzbyBza2lwIHRoaXMgdGVzdCBvbiBJUklYNjQKKworMjAwNy0wNi0wMiAxNjoxMyAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IEZpeCBjb21waWxhdGlvbiBvbiBJUklYCiAKIDIwMDctMDYtMDIgMDg6MjQgIG1hZ2ZyCiAKLSAgICogYWNjb25maWcuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCi0gICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sCi0gICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2R5bml4LmgsCi0gICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL21pbmd3MzIuaCwgc25tcGxpYi9zbm1wX2FwaS5jLAotICAgICB3aW4zMi9jb25maWcuaC5ib3JsYW5kLCB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwKLSAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Ci0gICAgIENIQU5HRVM6IHNubXBhcGk6IERvIG5vdCB1c2UgZ2V0c2VydmJ5bmFtZSB0byBmaW5kIGRlZmF1bHQgcG9ydAotICAgICBudW1iZXJzLCBqdXN0IGhhcmRjb2RlIHRoZW0gYW5kIGxldCB0aGUgdXNlciBvdmVycmlkZSB0aGVtIGlmCi0gICAgIG5lZWRlZC4KKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2R5bml4LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9taW5ndzMyLmgsIHNubXBsaWIvc25tcF9hcGkuYywgICAKKyAgICAgIHdpbjMyL2NvbmZpZy5oLmJvcmxhbmQsIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IHNubXBhcGk6IERvIG5vdCB1c2UgZ2V0c2VydmJ5bmFtZSB0byBmaW5kIGRlZmF1bHQgcG9ydAorICAgbnVtYmVycywganVzdCBoYXJkY29kZSB0aGVtIGFuZCBsZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlbSBpZgorICAgbmVlZGVkLgogCiAyMDA3LTA2LTAxIDIyOjU1ICB0YW5kZXJzCiAKICAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiBMaW5rIGxpYmRsIGFnYWluc3QgbGlibmV0c25tcG1pYnMgaW5zdGVhZCBvZgotICAgICBzbm1wZC4KLSAgICAgRml4ZXMgdGhlIGJ1aWxkIG9uIChzb21lKSBTb2xhcmlzIHN5c3RlbXMuCiAKLTIwMDctMDYtMDEgMjE6MzYgIGR0czEyCisgICBDSEFOR0VTOiBidWlsZDogTGluayBsaWJkbCBhZ2FpbnN0IGxpYm5ldHNubXBtaWJzIGluc3RlYWQgb2YKKyAgIHNubXBkLgorICAgRml4ZXMgdGhlIGJ1aWxkIG9uIChzb21lKSBTb2xhcmlzIHN5c3RlbXMuCiAKLSAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgotICAgICBDSEFOR0VTOiBzbm1wbGliOiBGRUFUVVJFUzogMTA0MTg4ODogQ2hlY2sgZGlyZWN0b3J5IHBhdGhzIGZvcgotICAgICBjb25maWcgZmlsZXMuCi0gICAgIEJhY2twb3J0IGZyb20gbWFpbiBkZXZlbG9wbWVudCB0cnVuayBvZiBidWcgZml4LgorMjAwNy0wNi0wMSAyMjozNCAgdGFuZGVycwogCi0yMDA3LTA2LTAxIDIxOjIzICBkdHMxMgorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKIAotICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IEZFQVRVUkVTOiA4NTE4ODc6IFJlcG9ydCByYW5nZSBpbmZvcm1hdGlvbiBmb3IKLSAgICAgaW52YWxpZCBTRVQgcmVxdWVzdHMuCi0gICAgIEJhY2twb3J0IGZyb20gbWFpbiB0cnVuayBvZiBidWcgZml4LgorICAgZml4IE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMIGNvbmZpZ3VyZSBjaGVjayBvbiBJUklYCisgICAocmVncmVzc2lvbiBmcm9tIHIxNjQ1MSkKKworMjAwNy0wNi0wMSAxNDozMyAgZHRzMTIKKworICAgKiBhcHBzL3NubXB0cmFwZC5jOgorCisgICBORVdTOiBzbm1wdHJhcGQ6IFdpdGhkcmF3IGRlcHJlY2F0ZWQgb3B0aW9ucy4KKyAgIChUaHJlZSBhbmQgYSBoYWxmIHllYXJzJyB3YXJuaW5nIHNob3VsZCBiZSBlbm91Z2ggZm9yIGFueW9uZSEpCiAKIDIwMDctMDUtMzEgMjM6NTEgIHRhbmRlcnMKIAotICAgKiBhZ2VudC9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCi0gICAgIG5ldC1zbm1wLWNvbmZpZy5pbjoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IExpbmsgbGlia3ZtIGFuZCBsaWJ3cmFwIHRvIGxpYm5ldHNubXBhZ2VudAotICAgICBpbnN0ZWFkIG9mIHNubXBkLgotICAgICBGaXhlcyB0ZXN0ICM0NCAoUGVybCBzdWJhZ2VudCkgb24gc3lzdGVtcyB1c2luZyBvbmUgb2YgdGhvc2UKLSAgICAgbGlicmFyaWVzLgorICAgKiAgYWdlbnQvTWFrZWZpbGUuaW4sIGFwcHMvTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgbmV0LXNubXAtY29uZmlnLmluOgorCisgICBDSEFOR0VTOiBidWlsZDogTGluayBsaWJrdm0gYW5kIGxpYndyYXAgdG8gbGlibmV0c25tcGFnZW50CisgICBpbnN0ZWFkIG9mIHNubXBkLgorICAgRml4ZXMgdGVzdCAjNDQgKFBlcmwgc3ViYWdlbnQpIG9uIHN5c3RlbXMgdXNpbmcgb25lIG9mIHRob3NlCisgICBsaWJyYXJpZXMuCisKKzIwMDctMDUtMzEgMjM6NDIgIG1hZ2ZyCisKKyAgICogIFJFQURNRS5hZ2VudC1taWJzLCBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBNb3ZlIHN5c09STGFzdENoYW5nZSBmcm9tIG1pYklJL3N5c3RlbV9taWIgdG8KKyAgIG1pYklJL3N5c09SVGFibGUgaW4gb3JkZXIgdG8ga2VlcCB0aGUgZGF0YSBhbmQgdGhlIHVzZSB0b2dldGhlci4KIAogMjAwNy0wNS0zMSAxNDozOSAgZHRzMTIKIAogICAgKiBhcHBzL3NubXB0cmFwZF9sb2cuYzoKLSAgICAgRml4IGxvZ2dpbmcgb2YgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uCisKKyAgIEZpeCBsb2dnaW5nIG9mIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uLgogCiAyMDA3LTA1LTMxIDEwOjEwICBkdHMxMgogCiAgICAqIGFwcHMvc25tcHRyYXBkX2xvZy5jOgotICAgICBSZW1vdmUgYm9ndXMgZGVidWcgb3V0cHV0LgorCisgICBSZW1vdmUgYm9ndXMgZGVidWcgb3V0cHV0LgorCisyMDA3LTA1LTMxIDA5OjQ4ICBkdHMxMgorCisgICAqIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmM6CisKKyAgIFJlbW92ZSByZWR1bmRhbnQgY29kZS4KKworMjAwNy0wNS0zMSAwOTo0MyAgZHRzMTIKKworICAgKiBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jOgorCisgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEZFQVRVUkU6IDExNTk5NDc6IEFsbG93IGNvbnRyb2wgb2YgdHJhcGhhbmRsZQorICAgZGF0YSBmb3JtYXQKIAogMjAwNy0wNS0zMCAyMjo1MyAgdGFuZGVycwogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwZXJsL0FTTi9NYWtlZmlsZS5QTCwKLSAgICAgcGVybC9PSUQvTWFrZWZpbGUuUEwsIHBlcmwvU05NUC9NYWtlZmlsZS5QTCwKLSAgICAgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsIHBlcmwvYWdlbnQvTWFrZWZpbGUuUEwsCi0gICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTDoKLSAgICAgQ0hBTkdFUzogQUlYOiBidWlsZCBmaXhlcyBmb3IgZW1iZWRkZWQgUGVybAorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHBlcmwvQVNOL01ha2VmaWxlLlBMLCAgIAorICAgICAgcGVybC9PSUQvTWFrZWZpbGUuUEwsIHBlcmwvU05NUC9NYWtlZmlsZS5QTCwgICAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL01ha2VmaWxlLlBMLCBwZXJsL2FnZW50L01ha2VmaWxlLlBMLCAgIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMOgorCisgICBDSEFOR0VTOiBBSVg6IGJ1aWxkIGZpeGVzIGZvciBlbWJlZGRlZCBQZXJsCisKKzIwMDctMDUtMzAgMjI6MzQgIHRhbmRlcnMKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKworICAgSFAtVVggMTEueCBhbmQgSVJJWCA2LjUgYnVpbGQgZml4IChyZWdyZXNzaW9uIGludHJvZHVjZWQgYnkKKyAgIHIxNjQ1MSkKKworMjAwNy0wNS0yOSAyMzowNCAgdGFuZGVycworCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBDSEFOR0VTOiBidWlsZDogbWFrZSB1c2Ugb2YgQUNfUFJPR19TRUQvQUNfUFJPR19HUkVQIGFuZCAvIHRvCisgICBmdXJ0aGVyIG1pbmltaXplIHNlZC9ncmVwIHByb2JsZW1zCiAKIDIwMDctMDUtMjkgMjI6NDIgIG1hZ2ZyCiAKICAgICogc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jOgotICAgICBDSEFOR0VTOiBzbm1wbGliOiBVc2UgdGhlIGRlZmF1bHRfdGFyZ2V0IGFyZ3VtZW50IGlmIGl0IGlzCi0gICAgIG5vbi1OVUxMLCBub3QgaWYgaXQgaXMgTlVMTC4KKworICAgQ0hBTkdFUzogc25tcGxpYjogVXNlIHRoZSBkZWZhdWx0X3RhcmdldCBhcmd1bWVudCBpZiBpdCBpcworICAgbm9uLU5VTEwsIG5vdCBpZiBpdCBpcyBOVUxMLgorCisyMDA3LTA1LTI5IDEwOjMwICB0YW5kZXJzCisKKyAgICogd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IGJ1aWxkaW5nOiBSZW1vdmUgbW9yZSBuZXQtc25tcCBzcGVjaWFscyBpbiB0aGUgY29uZmlndXJlCisgICBzY3JpcHRzIHRvIGVhc2UgbWFpbnRlbmFuY2UuCisgICBBbHNvIGNoYW5nZSByZWNlbnRseSBhZGRlZCBTVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9IQVNfU1NfRkFNSUxZLgogCiAyMDA3LTA1LTI5IDEwOjI3ICB0YW5kZXJzCiAKICAgICogUkVBRE1FLmFnZW50LW1pYnM6Ci0gICAgIGFkZCByZWNlbnQgbWZkIHJld3JpdGVzCisKKyAgIGFkZCByZWNlbnQgbWZkIHJld3JpdGVzCisKKzIwMDctMDUtMjkgMTA6MjIgIHRhbmRlcnMKKworICAgKiB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IFJlbW92ZSBtb3JlIG5ldC1zbm1wIHNwZWNpYWxzIGluIHRoZSBjb25maWd1cmUKKyAgIHNjcmlwdHMgdG8gZWFzZSBtYWludGVuYW5jZS4KKyAgIEFsc28gY2hhbmdlIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIGZvciBjb25zaXN0ZW5jeS4KKworMjAwNy0wNS0yOCAyMzozMCAgbWFnZnIKKworICAgKiAgUE9SVElORywgYWNjb25maWcuaCwgYWNpbmNsdWRlLm00LCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYywgYWdlbnQvbWliZ3JvdXAvaG9zdF9yZXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgIAorICAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkNS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaXJpeC5oLCBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zdnI1LmgsICAgCisgICAgICBzbm1wbGliL3NjYXBpLmMsIHNubXBsaWIvc25tcC10Yy5jLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMsICAKKyAgICAgICBzbm1wbGliL3N5c3RlbS5jOgorCisgICBDSEFOR0VTOiBidWlsZGluZzogUmVtb3ZlIG1vcmUgbmV0LXNubXAgc3BlY2lhbHMgaW4gdGhlIGNvbmZpZ3VyZQorICAgc2NyaXB0cyB0byBlYXNlIG1haW50ZW5hbmNlLgorCisyMDA3LTA1LTI4IDE2OjMxICBkdHMxMgorCisgICAqIG1hbi9zbm1wLmNvbmYuNS5kZWYsIG1hbi9zbm1wY21kLjEuZGVmLCBzbm1wbGliL21pYi5jOgorCisgICBDSEFOR0VTOiBsaWJyYXJ5OiBGRUFUVVJFUzogMTQwNzQ3NjogUmVuYW1lICdzdHJpY3RDb21tZW50VGVybScKKyAgIHRvIHJlZmxlY3QgdGhlIGFjdHVhbCBiZWhhdmlvdXIuCisKKzIwMDctMDUtMjggMTU6MjUgIGR0czEyCisKKyAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgorCisgICBDSEFOR0VTOiBsaWJyYXJ5OiBGRUFUVVJFUzogMTA0MTg4ODogQ2hlY2sgZGlyZWN0b3J5IHBhdGhzIGZvcgorICAgY29uZmlnIGZpbGVzLgorCisyMDA3LTA1LTI4IDEzOjEzICBkdHMxMgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQ0hBTkdFUzogbGlicmFyeTogRkVBVFVSRVM6IDg1MTg4NzogUmVwb3J0IHJhbmdlIGluZm9ybWF0aW9uIGZvcgorICAgaW52YWxpZCBTRVQgcmVxdWVzdHMuCisKKzIwMDctMDUtMjggMTI6MDggIHRhbmRlcnMKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3NvbGFyaXMyLmM6CisKKyAgIE5FV1M6IFNvbGFyaXM6IFBBVENIOiAxNzE5NzMwOiBmcm9tIGFwZXJzc29uOiBzdXBwb3J0IGZvcgorICAgaXBTeXN0ZW1TdGF0c1RhYmxlIGFuZCBpcEFkZHJlc3NUYWJsZQorICAgUGFydCAyIChTb2xhcmlzLXNwZWNpZmljIG5ldyBmaWxlcykKKworMjAwNy0wNS0yOCAxMjowMiAgdGFuZGVycworCisgICAqIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oOgorCisgICBORVdTOiBMaW51eDogUEFUQ0g6IDE3MjQ2MDI6IGZyb20gbWl0c3VydV9jaGluZW46IG1mZC1iYXNlZAorICAgaXBEZWZhdWx0Um91dGVyVGFibGUgaW1wbGVtZW50YXRpb24KKworMjAwNy0wNS0yOCAxMjowMCAgdGFuZGVycworCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZW51bXMuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRzLmg6CisKKyAgIE5FV1M6IExpbnV4OiBQQVRDSDogMTcyNDYwMjogZnJvbSBtaXRzdXJ1X2NoaW5lbjogbWZkLWJhc2VkCisgICBpcERlZmF1bHRSb3V0ZXJUYWJsZSBpbXBsZW1lbnRhdGlvbgorCisyMDA3LTA1LTI4IDExOjU5ICB0YW5kZXJzCisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oOgorCisgICBORVdTOiBMaW51eDogUEFUQ0g6IDE3MjQ2MDI6IGZyb20gbWl0c3VydV9jaGluZW46IG1mZC1iYXNlZAorICAgaXBEZWZhdWx0Um91dGVyVGFibGUgaW1wbGVtZW50YXRpb24KKworMjAwNy0wNS0yOCAxMDowOSAgZHRzMTIKKworICAgKiBhcHBzL3NubXB3YWxrLmMsIG1hbi9zbm1wd2Fsay4xLmRlZjoKKworICAgRG9jdW1lbnQgdGhlIC1DRSBvcHRpb24uCiAKIDIwMDctMDUtMjcgMjE6NDIgIHRhbmRlcnMKIAogICAgKiBwZXJsL1RyYXBSZWNlaXZlci9NYWtlZmlsZS5QTCwgcGVybC9hZ2VudC9NYWtlZmlsZS5QTDoKLSAgICAgU29tZSBsYW1lIGxpbmtlcnMgKGUuZy4gb24gSFAtVVggMTEuMjMvSUE2NCkgbmVlZCBxdWl0ZSBhIGJpdCBvZgotICAgICBoZWxwIHRvIHN1Y2Nlc3NmdWxseSBsaW5rIHRoZSBQZXJsIG1vZHVsZXMuCisKKyAgIFNvbWUgbGFtZSBsaW5rZXJzIChlLmcuIG9uIEhQLVVYIDExLjIzL0lBNjQpIG5lZWQgcXVpdGUgYSBiaXQgb2YKKyAgIGhlbHAgdG8gc3VjY2Vzc2Z1bGx5IGxpbmsgdGhlIFBlcmwgbW9kdWxlcy4KKworMjAwNy0wNS0yNyAyMTozMyAgZHRzMTIKKworICAgKiBhcHBzL3NubXB3YWxrLmM6CisKKyAgIENIQU5HRVM6IHNubXB3YWxrOiBQQVRDSDogMTcyMzYyMDogU3BlY2lmeSBhbiBleHBsaWNpdCBlbmQtcG9pbnQKKyAgIGZvciB0aGUgd2Fsay4KKyAgIEFuIGFsdGVybmF0aXZlIChtb3JlIGZsZXhpYmxlKSBhcHByb2FjaCB0byB0aGUgcHJvcG9zZWQgcGF0Y2gsCisgICBidXQgb25lIHRoYXQKKyAgIHByb3ZpZGVzIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eS4gQWxzbyBhZGRyZXNzZXMgRmVhdHVyZSBSZXF1ZXN0CisgICAjNzIyNzg0LgogCiAyMDA3LTA1LTI3IDIwOjUyICB0YW5kZXJzCiAKICAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Ci0gICAgIEFkZCBkZXNjcmlwdGlvbnMgdG8gQUNfREVGSU5FOyBkcm9wIG9ic29sZXRlIEFDX0NIRUNLX0xJQihtLAotICAgICBhc2luKS4KIAotMjAwNy0wNS0yNyAxOTo1NCAgZHRzMTIKKyAgIEFkZCBkZXNjcmlwdGlvbnMgdG8gQUNfREVGSU5FOyBkcm9wIG9ic29sZXRlIEFDX0NIRUNLX0xJQihtLAorICAgYXNpbikuCiAKLSAgICogc25tcGxpYi9wYXJzZS5jOgotICAgICBDSEFOR0VTOiBsaWJyYXJ5OiBGRUFUVVJFUzogNDU0MDI4OiBEZXRlY3QgYW5kIGhhbmRsZSBlbXB0eSBNSUIKLSAgICAgaW5kZXggZmlsZXMuCisyMDA3LTA1LTI3IDE5OjI4ICBkdHMxMgorCisgICAqIHNubXBsaWIvbWliLmM6CisKKyAgIENIQU5HRVM6IGxpYnJhcnk6IEZFQVRVUkVTOiA0NTQwMjg6IERldGVjdCBlbXB0eSBNSUIgaW5kZXggZmlsZXMuCisKKzIwMDctMDUtMjcgMTk6MDYgIGR0czEyCisKKyAgICogIGFnZW50L3NubXBkLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogc25tcGQ6IEZFQVRVUkVTOiAxMDE5NDI5OiBTZXQgc3VwcGxlbWVudGFyeSBncm91cHMgdmlhCisgICBpbml0Z3JvdXBzKDMpCisKKzIwMDctMDUtMjcgMDY6MjcgIHRhbmRlcnMKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpcy5oOgorCisgICBORVdTOiBTb2xhcmlzOiBQQVRDSDogMTcxOTczMDogZnJvbSBhcGVyc3Nvbjogc3VwcG9ydCBmb3IKKyAgIGlwU3lzdGVtU3RhdHNUYWJsZSBhbmQgaXBBZGRyZXNzVGFibGUKIAogMjAwNy0wNS0yNyAwNjoyMCAgdGFuZGVycwogCiAgICAqIFJFQURNRS5haXg6Ci0gICAgIGdyYW1tYXIgZml4CisKKyAgIGdyYW1tYXIgZml4CiAKIDIwMDctMDUtMjYgMTY6NDEgIGFsZXhfYgogCi0gICAqIFJFQURNRS53aW4zMiwgd2luMzIvQ29uZmlndXJlLCB3aW4zMi9idWlsZC5wbCwKLSAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsCi0gICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotICAgICBXaW4zMiBJUHY2IGJ1aWxkIGZpeGVzLiBJUHY2IG5vdyByZXF1aXJlcyBQU0RLLgorICAgKiAgUkVBRE1FLndpbjMyLCB3aW4zMi9Db25maWd1cmUsIHdpbjMyL2J1aWxkLnBsLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKIAotMjAwNy0wNS0yNiAxNToxNCAgYWxleF9iCisgICBXaW4zMiBJUHY2IGJ1aWxkIGZpeGVzLiBJUHY2IG5vdyByZXF1aXJlcyBQU0RLLgogCi0gICAqIFJFQURNRS53aW4zMiwgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsCi0gICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotICAgICBJUHY2IGJ1aWxkIGZpeGVzIGZvciBidWlsZC5iYXQsIENvbmZpZ3VyZSBhbmQgUkVBRE1FLndpbjMyLgorMjAwNy0wNS0yNiAxNToxNiAgYWxleF9iCisKKyAgICogIFJFQURNRS53aW4zMiwgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgSVB2NiBidWlsZCBmaXhlcyBmb3IgYnVpbGQuYmF0LCBDb25maWd1cmUgYW5kIFJFQURNRS53aW4zMi4KIAogMjAwNy0wNS0yNSAyMzowMyAgdGFuZGVycwogCiAgICAqIFJFQURNRS5haXgsIFJFQURNRS5zb2xhcmlzLCBSRUFETUUudHJ1NjQ6Ci0gICAgIERvY3VtZW50YXRpb24gdXBkYXRlIHcuci50LiByZWNlbnQgY2hhbmdlcyAobWliSUkvaXB2NiBhbmQgQUlYCi0gICAgIHNoYXJlZCBsaWJyYXJ5IGJ1aWxkaW5nKS4KKworICAgRG9jdW1lbnRhdGlvbiB1cGRhdGUgdy5yLnQuIHJlY2VudCBjaGFuZ2VzIChtaWJJSS9pcHY2IGFuZCBBSVgKKyAgIHNoYXJlZCBsaWJyYXJ5IGJ1aWxkaW5nKS4KKworMjAwNy0wNS0yNSAxODo1NCAgcnN0b3J5CisKKyAgICogZGlzdC9jdnNzaG93OgorCisgICB1cGRhdGUgZm9yIG5ldyB1cmwgZm9ybWF0IGluIHN2biBlbnRyaWVzCiAKIDIwMDctMDUtMjUgMTU6MjggIHRhbmRlcnMKIAogICAgKiBwZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEw6Ci0gICAgIFNvbWUgc3lzdGVtcyAoZS5nLiBIUC1VWCAxMS4yMy9JQTY0KSBjdXJyZW50bHkgc3RpbGwgbmVlZAotICAgICAibmV0LXNubXAtY29uZmlnIC0tbGlicyIgKGluc3RlYWQgb2YganVzdCAtLW5ldHNubXAtbGlicykgZm9yCi0gICAgIGxpbmtpbmcKLSAgICAgbGlibmV0c25tcCB0byBhIFBlcmwgbW9kdWxlLgorCisgICBTb21lIHN5c3RlbXMgKGUuZy4gSFAtVVggMTEuMjMvSUE2NCkgY3VycmVudGx5IHN0aWxsIG5lZWQKKyAgICJuZXQtc25tcC1jb25maWcgLS1saWJzIiAoaW5zdGVhZCBvZiBqdXN0IC0tbmV0c25tcC1saWJzKSBmb3IKKyAgIGxpbmtpbmcKKyAgIGxpYm5ldHNubXAgdG8gYSBQZXJsIG1vZHVsZS4KIAogMjAwNy0wNS0yNCAyMzo1NSAgdGFuZGVycwogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBDSEFOR0VTOiBidWlsZDogb25seSBlbmFibGUgbWliSUkvaXB2NiB0aHJvdWdoIC0tZW5hYmxlLWlwdjYgb24KLSAgICAgc3lzdGVtcyBpdCBidWlsZHMgcHJvcGVybHkgb24gKExpbnV4IGFuZCAqQlNEKQorCisgICBDSEFOR0VTOiBidWlsZDogb25seSBlbmFibGUgbWliSUkvaXB2NiB0aHJvdWdoIC0tZW5hYmxlLWlwdjYgb24KKyAgIHN5c3RlbXMgaXQgYnVpbGRzIHByb3Blcmx5IG9uIChMaW51eCBhbmQgKkJTRCkKIAogMjAwNy0wNS0yNCAyMzoxNSAgdGFuZGVycwogCiAgICAqIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTDoKLSAgICAgU29tZSBzeXN0ZW1zIChlLmcuIEhQLVVYIDExLjIzL0lBNjQpIGN1cnJlbnRseSBzdGlsbCBuZWVkCi0gICAgICJuZXQtc25tcC1jb25maWcgLS1saWJzIiAoaW5zdGVhZCBvZiBqdXN0IC0tbmV0c25tcC1saWJzKSBmb3IKLSAgICAgbGlua2luZyBsaWJzbm1wYWdlbnQgdG8gYSBQZXJsIG1vZHVsZS4KKworICAgU29tZSBzeXN0ZW1zIChlLmcuIEhQLVVYIDExLjIzL0lBNjQpIGN1cnJlbnRseSBzdGlsbCBuZWVkCisgICAibmV0LXNubXAtY29uZmlnIC0tbGlicyIgKGluc3RlYWQgb2YganVzdCAtLW5ldHNubXAtbGlicykgZm9yCisgICBsaW5raW5nIGxpYnNubXBhZ2VudCB0byBhIFBlcmwgbW9kdWxlLgogCiAyMDA3LTA1LTI0IDIyOjAxICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYzoKLSAgICAgQ29ycmVjdCBvYnZpb3VzbHkgYnJva2VuIHVzZSBvZiB0aGUgS0xPT0tVUCBtYWNybyB0byBiZQotICAgICBjb25zaXN0ZW50IGF0IGxlYXN0CisKKyAgIENvcnJlY3Qgb2J2aW91c2x5IGJyb2tlbiB1c2Ugb2YgdGhlIEtMT09LVVAgbWFjcm8gdG8gYmUKKyAgIGNvbnNpc3RlbnQgYXQgbGVhc3QKIAogMjAwNy0wNS0yNCAyMDo1MSAgdGFuZGVycwogCiAgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q3Lmg6Ci0gICAgIENIQU5HRVM6IEZyZWVCU0Q6IGFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIHVwY29taW5nIEZyZWVCU0QgNworCisgICBDSEFOR0VTOiBGcmVlQlNEOiBhZGQgaW5pdGlhbCBzdXBwb3J0IGZvciB1cGNvbWluZyBGcmVlQlNEIDcKKworMjAwNy0wNS0yNCAxNDowNiAgcnN0b3J5CisKKyAgICogTWFrZWZpbGUudG9wOgorCisgICBidW1wIGxpYmN1cnJlbnQgdG8gMjAgdG8gbGVhdmUgc3BhY2UgZm9yIDUuNC54IHJlbGVhc2VzCiAKIDIwMDctMDUtMjQgMTI6NDggIHRhbmRlcnMKIAogICAgKiBhZ2VudC9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbjoKLSAgICAgZml4IGxpYnJhcnkgbGlua2luZyBvbiBIUC1VWCAxMS4yMy9JQTY0CiAKLTIwMDctMDUtMjQgMDg6MzYgIHRhbmRlcnMKLQotICAgKiBNYWtlZmlsZS50b3A6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IGluY3JlbWVudCAiY3VycmVudCIgYW5kICJhZ2UiIGFjY29yZGluZyB0bwotICAgICBsaWJ0b29sCi0gICAgIHZlcnNpb25pbmcgcG9saWN5LCBzaW5jZSBpbnRlcmZhY2VzIGhhdmUgYmVlbiBhZGRlZCBzaW5jZSA1LjQuCi0gICAgIFdlIG5vdyBidWlsZCBsaWJuZXRzbm1wLnNvLjE1LjEuMC4KLSAgICAgNS40LjEucHJlMSB3YXMgYnJva2VuIGluIHRoaXMgcmVnYXJkLgorICAgZml4IGxpYnJhcnkgbGlua2luZyBvbiBIUC1VWCAxMS4yMy9JQTY0CiAKIDIwMDctMDUtMjMgMTk6MDUgIHRhbmRlcnMKIAotICAgKiBNYWtlZmlsZS5pbiwgTWFrZWZpbGUucnVsZXMsIGFnZW50L01ha2VmaWxlLmluLAotICAgICBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluLCBhcHBzL01ha2VmaWxlLmluLCBjb25maWd1cmUsCi0gICAgIGNvbmZpZ3VyZS5pbiwgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsCi0gICAgIHBlcmwvYWdlbnQvTWFrZWZpbGUuUEwsIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTCwKLSAgICAgcGVybC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMLCBzbm1wbGliL01ha2VmaWxlLmluOgotICAgICBORVdTOiBzbm1wbGliOiBCVUc6IDE2MTk4Mjc6IGxpbmsgbmV0LXNubXAgbGlicmFyaWVzIGFuZCBiaW5hcmllcwotICAgICBhZ2FpbnN0IHRoZSBuZXQtc25tcCBsaWJyYXJpZXMgdGhleSByZWFsbHkgZGVwZW5kIG9uCi0gICAgIC0gcmVmbGVjdCBsaWJyYXJ5IGludGVyZGVwZW5kZW5jaWVzIGF0IGxpbmsgdGltZQotICAgICAtIGZpeCBkZXBlbmRlbmNpZXMgb24gbGliY3J5cHRvLCBsaWJwa2NzMTEgYW5kIGxpYmtzdGF0Ci0gICAgIC0gaW5zdGFsbCBsaWJyYXJpZXMgaW4gY29ycmVjdCBvcmRlciAoaW1wb3J0YW50IGZvciBsaWJ0b29sCi0gICAgIHJlbGlua2luZykKLSAgICAgTkVXUzogUGVybDogbGluayBQZXJsIG1vZHVsZXMgYWdhaW5zdCB0aGUgZXhhY3Qgc2V0IG9mIGxpYnJhcmllcwotICAgICB0aGV5IGRlcGVuZCBvbgorICAgKiAgTWFrZWZpbGUuaW4sIE1ha2VmaWxlLnJ1bGVzLCBhZ2VudC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW4sIGFwcHMvTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5pbiwgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2FnZW50L01ha2VmaWxlLlBMLCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsIHNubXBsaWIvTWFrZWZpbGUuaW46CiAKLTIwMDctMDUtMjIgMTQ6NDAgIGhhcmRha2VyCisgICBORVdTOiBzbm1wbGliOiBCVUc6IDE2MTk4Mjc6IGxpbmsgbmV0LXNubXAgbGlicmFyaWVzIGFuZCBiaW5hcmllcworICAgYWdhaW5zdCB0aGUgbmV0LXNubXAgbGlicmFyaWVzIHRoZXkgcmVhbGx5IGRlcGVuZCBvbgorICAgLSByZWZsZWN0IGxpYnJhcnkgaW50ZXJkZXBlbmRlbmNpZXMgYXQgbGluayB0aW1lCisgICAtIGZpeCBkZXBlbmRlbmNpZXMgb24gbGliY3J5cHRvLCBsaWJwa2NzMTEgYW5kIGxpYmtzdGF0CisgICAtIGluc3RhbGwgbGlicmFyaWVzIGluIGNvcnJlY3Qgb3JkZXIgKGltcG9ydGFudCBmb3IgbGlidG9vbAorICAgcmVsaW5raW5nKQorICAgTkVXUzogUGVybDogbGluayBQZXJsIG1vZHVsZXMgYWdhaW5zdCB0aGUgZXhhY3Qgc2V0IG9mIGxpYnJhcmllcworICAgdGhleSBkZXBlbmQgb24KIAotICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKLSAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sCi0gICAgIHBlcmwvU05NUC9TTk1QLnBtLCBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sCi0gICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCBwZXJsL2FnZW50L2FnZW50LnBtLAotICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwKLSAgICAgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sIHNlZHNjcmlwdC5pbiwKLSAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKLSAgICAgdmVyc2lvbiBzdGFtcCA1LjQuMS5wcmUxCisyMDA3LTA1LTIyIDE2OjI2ICBoYXJkYWtlcgogCi0yMDA3LTA1LTIyIDAwOjI0ICBoYXJkYWtlcgorICAgKiBkaXN0L21ha2VyZWxlYXNlOgogCi0gICAqIENIQU5HRVMsIE5FV1M6Ci0gICAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMDctMDUtMjIgMDA6MTkgIGhhcmRha2VyCi0KLSAgICogQ2hhbmdlTG9nOgotICAgICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDA3LTA1LTIyIDAwOjAxICBoYXJkYWtlcgotCi0gICAqIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsCi0gICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsCi0gICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDoKLSAgICAgbWFrZSBkZXBlbmQKKyAgIHVzZSBzdm4gZXhwb3J0IGluc3RlYWQgb2YgY2hlY2tvdXQKIAogMjAwNy0wNS0yMiAwMDowMCAgaGFyZGFrZXIKIAogICAgKiBNYWtlZmlsZS5pbjoKLSAgICAgaWdub3JlIHdpbkV4dERMTCBpbiBjb21tZW50IGNoZWNrCisKKyAgIGlnbm9yZSB3aW5FeHRETEwgaW4gY29tbWVudCBjaGVjawogCiAyMDA3LTA1LTIxIDIzOjU0ICBoYXJkYWtlcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzaW5mby5jOgotICAgICAvLyAtPiBDIGNvbW1lbnQKIAotMjAwNy0wNS0yMSAyMzo1MSAgaGFyZGFrZXIKKyAgIC8vIC0+IEMgY29tbWVudAogCi0gICAqIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsCi0gICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywKLSAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLAotICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsCi0gICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywKLSAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLAotICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywKLSAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywKLSAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywKLSAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLAotICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLAotICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLAotICAgICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKLSAgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKzIwMDctMDUtMjEgMjM6MzMgIHRhbmRlcnMKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuMTAuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMyLjcuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMyLjguaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMyLjkuaDoKKworICAgc3luYyB3aXRoIDUuNCwgdGhlc2UgYXJlIG9ic29sZXRlIG5vdwogCiAyMDA3LTA1LTIxIDIzOjExICBtYWdmcgogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBDSEFOR0VTOiBidWlsZGluZzogRGlzYWJsZSBpbmxpbmluZyBvbiBzb2xhcmlzIGFzIHRoZXJlIGFyZSBzb21lCi0gICAgIGxpbmtpbmcgZXJyb3JzIHRoYXQgc2hvdyB1cCBpZiB0aGUgaW5saW5lIHN1cHBvcnQgaXMgbGVmdAotICAgICBlbmFibGVkLgotCi0yMDA3LTA1LTIxIDIyOjQ2ICBoYXJkYWtlcgotCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xLnByZTEgKQotCi0yMDA3LTA1LTIxIDIyOjIyICBoYXJkYWtlcgotCi0gICAqIE1ha2VmaWxlLnRvcDoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNS0yMSAyMzo1MSAgaGFyZGFrZXIKLQotICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLQotMjAwNy0wNS0yMSAyMzoxMSAgbWFnZnIKIAogICAgQ0hBTkdFUzogYnVpbGRpbmc6IERpc2FibGUgaW5saW5pbmcgb24gc29sYXJpcyBhcyB0aGVyZSBhcmUgc29tZQogICAgbGlua2luZyBlcnJvcnMgdGhhdCBzaG93IHVwIGlmIHRoZSBpbmxpbmUgc3VwcG9ydCBpcyBsZWZ0CiAgICBlbmFibGVkLgogCi0yMDA3LTA1LTIxIDIyOjQ2ICBoYXJkYWtlcgorMjAwNy0wNS0yMSAwNjowNSAgbWFnZnIKIAotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xLnByZTEgKQorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKIAotMjAwNy0wNS0yMSAyMjoyMiAgaGFyZGFrZXIKLQotICAgdmVyc2lvbiB1cGRhdGUKKyAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBdCBsZWFzdCBTdW4gQyA1LjcgZmFpbHMgaWYgb25lIHRyaWVzIHRvCisgICBhY2Nlc3MgX19mdW5jX18gaW4gYSBleHRlcm4gaW5saW5lIGZ1bmN0aW9uLCBzbyB0ZXN0IGZvciB0aGF0CisgICBjYXNlLgogCiAyMDA3LTA1LTIwIDIxOjM0ICB0YW5kZXJzCiAKLQkqIGFnZW50L01ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLQkgIE5FV1M6IHNubXBsaWI6IEJVRzogMTYxOTgyNzogbGluayBhZ2FpbnN0IG5lZWRlZCBleHRlcm5hbAotCSAgbGlicmFyaWVzIGF0IGxpYnJhcnkgbGluayB0aW1lICh3aGVyZSB0aGV5IGFyZSByZWZlcmVuY2VkKSwKLQkgIHJhdGhlciB0aGFuIGFwcGxpY2F0aW9uIGxpbmsgdGltZS4KLQkgIEFscmVhZHkgY292ZXJzIG1vc3Qgb2YgbGlibmV0c25tcG1pYnMnIGV4dGVybmFsIGRlcGVuZGVuY2llcy4KLQkgIEZpeGVzIGJ1aWxkIGlzc3VlcyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiBidWlsZGluZyB3aXRoIHNoYXJlZAotCSAgbGlicmFyaWVzIG9uIEFJWCkuIFRlc3RlZCBvbiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgTGludXgsCi0JICBTb2xhcmlzLCBIUC1VWCwgQUlYIGFuZCBJUklYLgorICAgKiBhZ2VudC9NYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIE5FV1M6IHNubXBsaWI6IEJVRzogMTYxOTgyNzogbGluayBhZ2FpbnN0IG5lZWRlZCBleHRlcm5hbAorICAgbGlicmFyaWVzIGF0IGxpYnJhcnkgbGluayB0aW1lICh3aGVyZSB0aGV5IGFyZSByZWZlcmVuY2VkKSwKKyAgIHJhdGhlciB0aGFuIGFwcGxpY2F0aW9uIGxpbmsgdGltZS4KKyAgIEFscmVhZHkgY292ZXJzIG1vc3Qgb2YgbGlibmV0c25tcG1pYnMnIGV4dGVybmFsIGRlcGVuZGVuY2llcy4KKyAgIEZpeGVzIGJ1aWxkIGlzc3VlcyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiBidWlsZGluZyB3aXRoIHNoYXJlZAorICAgbGlicmFyaWVzIG9uIEFJWCkuIFRlc3RlZCBvbiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgTGludXgsCisgICBTb2xhcmlzLCBIUC1VWCwgQUlYIGFuZCBJUklYLgogCiAyMDA3LTA1LTE5IDE1OjI3ICBtYWdmcgogCi0JKiBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKLQkgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Ci0JICBDSEFOR0VTOiBidWlsZGluZzogQ2hlY2sgZm9yIHN1cHBvcnQgb2Ygc3RhdGljIGlubGluZSBmdW5jdGlvbnMKLQkgIGluc3RlYWQgb2YgbmVzdGVkIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIHdoZW4gZGV0ZXJtaW5pbmcgaWYKLQkgIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIHdvcmsKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IENoZWNrIGZvciBzdXBwb3J0IG9mIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zCisgICBpbnN0ZWFkIG9mIG5lc3RlZCBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyB3aGVuIGRldGVybWluaW5nIGlmCisgICBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyB3b3JrCisKKzIwMDctMDUtMTkgMDg6NDAgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgd2luMzIvY29uZmlnLmguYm9ybGFuZCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgdXNlIG9mIHRoZSBDOTkgcHJlZGVmaW5lZCB2YXJpYWJsZQorICAgX19mdW5jX18gaW4gYWRkaXRpb24gdG8gdGhlIEdDQyBzeW1ib2wgX19GVU5DVElPTl9fIHRvIGdldCB0aGUKKyAgIG5hbWUgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24KKworMjAwNy0wNS0xOCAxODoxMiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoOiAxNzIxMDk2OiBmcm9tIG1pdHN1cnVfY2hpbmVuOiByZW1vdmUKKyAgIHVudXNlZCB2YXJpYWJsZSBzdGF0cyBmcm9tIGtlcm5lbCBleHRyYWN0aW9uIGZvciBiZXR0ZXIKKyAgIHBvcnRhYmlsaXR5LgogCiAyMDA3LTA1LTE4IDE4OjA4ICBoYXJkYWtlcgogCi0JKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBwYXRjaDogMTcxOTI1NDogZnJvbSAiQ2hyaXN0YW4gSnVuZyI6IHVwZGF0ZQotCSAgSFJGU19pZ25vcmUgbGlzdCB0byBjdXJyZW50IGxpbnV4IGxpa2VseWhvb2RzCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDE3MTkyNTQ6IGZyb20gIkNocmlzdGFuIEp1bmciOiB1cGRhdGUKKyAgIEhSRlNfaWdub3JlIGxpc3QgdG8gY3VycmVudCBsaW51eCBsaWtlbHlob29kcwogCiAyMDA3LTA1LTE4IDE4OjAyICBoYXJkYWtlcgogCi0JKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYzoKLQkgIE5FV1M6IHNubXBkOiBwYXRjaDogMTcxOTI1MzogZnJvbSAiQ2hyaXN0aWFuIEp1bmciOiBmaXgKLQkgIHNraXBORlNJbkhvc3RSZXNvdXJjZXMgc28gaXQgZG9lcyBub3QgYnJlYWsgb24gdGhlIHNlY29uZCB3YWxrIG9mCi0JICB0aGUgdGFibGUuCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgorCisgICBORVdTOiBzbm1wZDogcGF0Y2g6IDE3MTkyNTM6IGZyb20gIkNocmlzdGlhbiBKdW5nIjogZml4CisgICBza2lwTkZTSW5Ib3N0UmVzb3VyY2VzIHNvIGl0IGRvZXMgbm90IGJyZWFrIG9uIHRoZSBzZWNvbmQgd2FsayBvZgorICAgdGhlIHRhYmxlLgorCisyMDA3LTA1LTE4IDE3OjU1ICBtYWdmcgorCisgICAqIGFjY29uZmlnLmgsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFJlcmFuIGF1dG9oZWFkZXIgYW5kIGFkanVzdGVkIGFjY29uZmlnLmggYWZ0ZXIgY2hhbmdlcyBpbiByMTYzODcKKworMjAwNy0wNS0xOCAxNzo1NCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBwYXRjaDogMTcxNTQwNjogZnJvbSBtaXRzdXJ1X2NoaW5lbjogcmVnaXN0cmF0aW9uCisgICBvcmRlcmluZyBmaXhlcyBmb3IgaWNtcFN0YXRzVGFibGUKKworMjAwNy0wNS0xOCAxNzo0NiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBwYXRjaDogMTcxNTM5NTogZml4IGljbXAgdGFibGUgZXJyb3JzIGluIG5ldyBpY21wCisgICBjb2RlCisKKzIwMDctMDUtMTggMTc6NDUgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jOgorCisgICAKIAogMjAwNy0wNS0xOCAxNTowNSAgdGFuZGVycwogCi0JKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLQkgIE5FV1M6IEFJWDogZml4IGRlZmF1bHQgc2hhcmVkIGxpYnJhcnkgYnVpbGRpbmcgaW5zdGVhZCBvZiBmb3JjaW5nCi0JICBzdGF0aWMKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIE5FV1M6IEFJWDogZml4IGRlZmF1bHQgc2hhcmVkIGxpYnJhcnkgYnVpbGRpbmcgaW5zdGVhZCBvZiBmb3JjaW5nCisgICBzdGF0aWMKKworMjAwNy0wNS0xOCAxNDoxOCAgbWFnZnIKKworICAgKiAgYWNjb25maWcuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IFVzZSBBQ19DSEVDS19NRU1CRVJTIGluc3RlYWQgb2YKKyAgIEFDX0NIRUNLX1NUUlVDVF9GT1Igd2hlbiBjaGVja2luZyBmb3Igc3RydWN0IGlwc3RhdCBtZW1iZXJzIGluCisgICBvcmRlciB0byBtYWtlIGNvbmZpZ3VyZS5pbiBzbWFsbGVyCiAKIDIwMDctMDUtMTggMTA6MjIgIG1hZ2ZyCiAKLQkqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oOgotCSAgQ0hBTkdFUzogc25tcGQ6IENvcnJlY3QgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gZm9yCi0JICBob3N0L2hyX3N0b3JhZ2UKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBDb3JyZWN0IHRoZSBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZvcgorICAgaG9zdC9ocl9zdG9yYWdlCisKKzIwMDctMDUtMTggMDk6NTcgIG1hZ2ZyCisKKyAgICogdGVzdGluZy9SVU5URVNUUzoKKworICAgQ0hBTkdFUzogdGVzdGluZzogRG8gbm90IHRlcm1pbmF0ZSBvbiBTSUdDSExEIHNpbmNlIGRhc2ggYW5kCisgICBzb3VtZSBib3VybmUgc2hlbGxzIHdpbGwgZXhpdCB0aGUgbWFpbiBzaGVsbCB3aGVuIGEgc3Vic2hlbGwKKyAgIHRlcm1pbmF0ZXMgaW4gdGhhdCBjYXNlLgorCisyMDA3LTA1LTE4IDA5OjIyICB0YW5kZXJzCisKKyAgICogYXBwcy9zbm1wdXNtLmM6CisKKyAgIFVuZG9pbmcgYWNjaWRlbnRhbCBjaGFuZ2UgY29tbWl0dGVkIGluIHIxNjM3My4KKworMjAwNy0wNS0xNyAyMzoyMSAgbWFnZnIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjg3MzM3OiBJbXBsZW1lbnQgX3Nlc3Nfb3BlbiBpbiB0ZXJtcworICAgb2Ygc25tcF9zZXNzX2FkZAogCiAyMDA3LTA1LTE3IDIyOjE2ICBtYWdmcgogCi0JKiBhZ2VudC9hZ2VudF90cmFwLmMsIGFwcHMvc25tcHRyYXAuYywgYXBwcy9zbm1wdHJhcGQuYywKLQkgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMsCi0JICBzbm1wbGliL3NubXBfYXBpLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2MjA0MjQ6IEZpeCBub3RpZmljYXRpb24gc2VuZGluZyBzbyB0aGF0Ci0JICBleHBsaWNpdCBzcGVjaWZpY2F0aW9uIG9mIHBvcnQgMTYyIHNob3VsZCBiZSB1bm5lY2Vzc2FyeQotCSAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSDogMTYyMDQyNDogRml4IG5vdGlmaWNhdGlvbiByZWNlcHRpb24gc28KLQkgIHRoYXQgZXhwbGljaXQgc3BlY2lmaWNhdGlvbiBvZiBwb3J0IDE2MiBzaG91bGQgYmUgdW5uZWNlc3NhcnkKLQkgIENIQU5HRVM6IGFwcHM6IFBBVENIOiAxNjIwNDI0OiBGaXggbm90aWZpY2F0aW9uIHNlbmRpbmcgc28gdGhhdAotCSAgZXhwbGljaXQgc3BlY2lmaWNhdGlvbiBvZiBwb3J0IDE2MiBzaG91bGQgYmUgdW5uZWNlc3NhcnkKLQkgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjIwNDI0OiBIb25vcgotCSAgTkVUU05NUF9EU19MSUJfREVGQVVMVF9QT1JUIG92ZXIgdGhlIGRlZmF1bHQgc3lzdGVtCisgICAqICBhZ2VudC9hZ2VudF90cmFwLmMsIGFwcHMvc25tcHRyYXAuYywgYXBwcy9zbm1wdHJhcGQuYywgICAKKyAgICAgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTYyMDQyNDogRml4IG5vdGlmaWNhdGlvbiBzZW5kaW5nIHNvIHRoYXQKKyAgIGV4cGxpY2l0IHNwZWNpZmljYXRpb24gb2YgcG9ydCAxNjIgc2hvdWxkIGJlIHVubmVjZXNzYXJ5CisgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIOiAxNjIwNDI0OiBGaXggbm90aWZpY2F0aW9uIHJlY2VwdGlvbiBzbworICAgdGhhdCBleHBsaWNpdCBzcGVjaWZpY2F0aW9uIG9mIHBvcnQgMTYyIHNob3VsZCBiZSB1bm5lY2Vzc2FyeQorICAgQ0hBTkdFUzogYXBwczogUEFUQ0g6IDE2MjA0MjQ6IEZpeCBub3RpZmljYXRpb24gc2VuZGluZyBzbyB0aGF0CisgICBleHBsaWNpdCBzcGVjaWZpY2F0aW9uIG9mIHBvcnQgMTYyIHNob3VsZCBiZSB1bm5lY2Vzc2FyeQorICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE2MjA0MjQ6IEhvbm9yCisgICBORVRTTk1QX0RTX0xJQl9ERUZBVUxUX1BPUlQgb3ZlciB0aGUgZGVmYXVsdCBzeXN0ZW0KIAogMjAwNy0wNS0xNyAyMTo1MyAgaGFyZGFrZXIKIAotCSogYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYywKLQkgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYywKLQkgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYywKLQkgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoOiAxNzEwNjMyOiBmcm9tIG1hdmFybGV5OiBmaXggbWVtb3J5IGxlYWsgb24KLQkgIGJyb2tlbiBjb250YWluZXIgaW5zZXJ0aW9ucyBmb3IgdGhlIGlwQWRkcmVzc1RhYmxlCisgICAqICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBwYXRjaDogMTcxMDYzMjogZnJvbSBtYXZhcmxleTogZml4IG1lbW9yeSBsZWFrIG9uCisgICBicm9rZW4gY29udGFpbmVyIGluc2VydGlvbnMgZm9yIHRoZSBpcEFkZHJlc3NUYWJsZQogCiAyMDA3LTA1LTE3IDE4OjA2ICByc3RvcnkKIAotCSogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmFjdGl2ZS1zZXR1cC5tMmM6Ci0JICBDSEFOR0VTOiBQQVRDSDogMTcxOTI0NDogZml4IG1mZCBnZW5lcmF0aW5nIG1hcCBmdW5jdGlvbgorICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE3MTkyNDQ6IGZpeCBtZmQgZ2VuZXJhdGluZyBtYXAgZnVuY3Rpb24KKworMjAwNy0wNS0xNyAxNzo0NiAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmg6CisKKyAgIE5FV1M6IHNubXBkOiBwYXRjaDogMTcwODI0MzogZnJvbSBuaG9ybWFuOiBpbXBsZW1lbnQgdGhlCisgICBpcERlZmF1bHRSb3V0ZVRhYmxlIG9uIGxpbnV4CiAKIDIwMDctMDUtMTcgMTY6MzEgIGhhcmRha2VyCiAKLQkqIGNvbmZpZ3VyZS5pbjoKLQkgIE5FV1M6IHBvcnRzOiBwYXRjaDogMTcwNjM0NDogZnJvbSBuYXlsb3I6IGZpeCBjb21waWxhdGlvbiB3aXRoCi0JICBjeWd3aW4KKyAgICogY29uZmlndXJlLmluOgorCisgICBORVdTOiBwb3J0czogcGF0Y2g6IDE3MDYzNDQ6IGZyb20gbmF5bG9yOiBmaXggY29tcGlsYXRpb24gd2l0aAorICAgY3lnd2luCiAKIDIwMDctMDUtMTcgMTY6MjIgIGhhcmRha2VyCiAKLQkqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYzoKLQkgIE5FV1M6IHNubXBkOiBwYXRjaDogMTcwMDE1NzogZnJvbSBhZnJpa2E6IGZpeGVzIG9yZGVyaW5nIG9mIGV4ZWMKLQkgIHRva2VucyBpbiB0aGUgcmVzdWx0aW5nIG1pYiB0cmVlCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYzoKKworICAgTkVXUzogc25tcGQ6IHBhdGNoOiAxNzAwMTU3OiBmcm9tIGFmcmlrYTogZml4ZXMgb3JkZXJpbmcgb2YgZXhlYworICAgdG9rZW5zIGluIHRoZSByZXN1bHRpbmcgbWliIHRyZWUKIAogMjAwNy0wNS0xNyAxNTo1MyAgaGFyZGFrZXIKIAotCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDE2MTcyNTU6IGZpeCBsZW5ndGggb2YgdGhlIGhpc3RvcnkgYXJyYXkKLQkgIHRvIG1hdGNoIGNvZGUuCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDE2MTcyNTU6IGZpeCBsZW5ndGggb2YgdGhlIGhpc3RvcnkgYXJyYXkKKyAgIHRvIG1hdGNoIGNvZGUuCiAKIDIwMDctMDUtMTcgMTM6NTMgIGhhcmRha2VyCiAKLQkqIGFnZW50L3NubXBkLmMsIGFwcHMvc25tcHRyYXBkLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDEyMjU0NDA6IEFwcGx5IGludGVudCBvZiBwYXRjaDogdG8gZGVsYXkKLQkgIHNpZ2h1cCB0aWxsIGl0IGlzIHNhZmUuCi0JICBDSEFOR0VTOiBzbm1wdHJhcGQ6IHBhdGNoOiAxMjI1NDQwOiBBcHBseSBpbnRlbnQgb2YgcGF0Y2g6IHRvCi0JICBkZWxheSBzaWdodXAgdGlsbCBpdCBpcyBzYWZlLgorICAgKiBhZ2VudC9zbm1wZC5jLCBhcHBzL3NubXB0cmFwZC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDEyMjU0NDA6IEFwcGx5IGludGVudCBvZiBwYXRjaDogdG8gZGVsYXkKKyAgIHNpZ2h1cCB0aWxsIGl0IGlzIHNhZmUuCisgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IHBhdGNoOiAxMjI1NDQwOiBBcHBseSBpbnRlbnQgb2YgcGF0Y2g6IHRvCisgICBkZWxheSBzaWdodXAgdGlsbCBpdCBpcyBzYWZlLgorCisyMDA3LTA1LTE3IDEzOjM1ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmg6CisKKyAgIENIQU5HRVM6IGJ1aWxkaW5nOiBVc2UgY29uZmlnX2Vycm9yIGluc3RlYWQgb2YgY29uZmlnX3JlcXVpcmUgb2YKKyAgIGEgYm9ndXMgZmlsZS8jZXJyb3IgdG8gZ2VuZXJhdGUgZXJyb3IgbWVzc2FnZXMgYXQgY29uZmlndXJlIHRpbWUuCiAKIDIwMDctMDUtMTcgMDQ6MzkgIGhhcmRha2VyCiAKLQkqIHNubXBsaWIvYXNuMS5jOgotCSAgQ0hBTkdFUzogc25tcGxpYjogcGF0Y2g6IDE2NDU2OTg6IGZpeCA2NC1iaXQgc2lnbmVkIGludGVnZXIKLQkgIGVuY29kaW5nCisgICAqIGFwcHMvc25tcHVzbS5jLCBzbm1wbGliL2FzbjEuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogcGF0Y2g6IDE2NDU2OTg6IGZpeCA2NC1iaXQgc2lnbmVkIGludGVnZXIKKyAgIGVuY29kaW5nCiAKIDIwMDctMDUtMTYgMjM6NTMgIHRhbmRlcnMKIAotCSogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaHB1eC5oOgotCSAgQ0hBTkdFUzogSFAtVVg6IEhQLVVYIG5lZWRzIF9SRUVOVFJBTlQgZGVmaW5lZCB0byBwaWNrIHVwCi0JICBzdHJ0b2tfci4KLQkgIE90aGVyd2lzZSwgYXQgbGVhc3QgZm9yIDY0LWJpdCBjb2RlLCBzdHJ0b2tfciB3aWxsIG5vdCB3b3JrCi0JICBhbmQgd2lsbCBtYWtlIG5ldC1zbm1wIHNlZ2ZhdWx0LgorICAgKiBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4Lmg6CisKKyAgIENIQU5HRVM6IEhQLVVYOiBIUC1VWCBuZWVkcyBfUkVFTlRSQU5UIGRlZmluZWQgdG8gcGljayB1cAorICAgc3RydG9rX3IuCisgICBPdGhlcndpc2UsIGF0IGxlYXN0IGZvciA2NC1iaXQgY29kZSwgc3RydG9rX3Igd2lsbCBub3Qgd29yaworICAgYW5kIHdpbGwgbWFrZSBuZXQtc25tcCBzZWdmYXVsdC4KKworMjAwNy0wNS0xNiAyMzozOSAgdGFuZGVycworCisgICAqICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgZml4IHBhdGNoIDE2MjUwNjkgKHIxNjM2NSkgdG8gbm90IGJyZWFrIHRoZSBidWlsZCBvbiBTb2xhcmlzCisgICAyLjYvNworCisyMDA3LTA1LTE1IDE3OjMzICByc3RvcnkKKworICAgKiBkaXN0L3N2bnVwOgorCisgICAtIGFkZCB3YXJuaW5nIGlmIHN0YXIgbm90IGF2YWlsYWJsZQorICAgLSBmaXggcGF0dGVybiB0byBleGNsdWRlIC5zdm4gZGlycyBmcm9tIHRhcmJhbGxzCisKKzIwMDctMDUtMTUgMTU6NTUgIHJzdG9yeQorCisgICAqIGRpc3QvY3ZzdXA6CisKKyAgIHdhcm4gaWYgc3RhciBub3QgYXZhaWxhYmxlCiAKIDIwMDctMDUtMTUgMTQ6MzYgIHRhbmRlcnMKIAotCSogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9zb2xhcmlzLmM6Ci0JICBmaXggdHlwbworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X3NvbGFyaXMuYzoKKworICAgZml4IHR5cG8KIAogMjAwNy0wNS0xNCAyMTo0OSAgdGFuZGVycwogCi0JKiBhcHBzL01ha2VmaWxlLmluOgotCSAgYWRkIG1pc3NpbmcgQ0ZMQUdTIHRvIGxpbmsgbGluZQorICAgKiBhcHBzL01ha2VmaWxlLmluOgorCisgICBhZGQgbWlzc2luZyBDRkxBR1MgdG8gbGluayBsaW5lCiAKIDIwMDctMDUtMTQgMjE6NDggIHRhbmRlcnMKIAotCSogYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbjoKLQkgIGFkZCBtaXNzaW5nIENGTEFHUyB0byBsaW5rIGxpbmUKKyAgICogYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbjoKKworICAgYWRkIG1pc3NpbmcgQ0ZMQUdTIHRvIGxpbmsgbGluZQorCisyMDA3LTA1LTE0IDE1OjU3ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDE2MjUwNjk6IHNwZWVkIGltcHJvdmVtZW50cyBmb3Igc29sYXJpcworICAgcm91dGluZyB0YWJsZSBhY2Nlc3MKIAogMjAwNy0wNS0xNCAxNDo1MCAgaGFyZGFrZXIKIAotCSogYWdlbnQvc25tcF9hZ2VudC5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoOiAxNTk1NTY4OiBmcm9tIGN5cmlsX21hcmdhcmlhOiBmaXgKLQkgIGRlbGVnYXRlZCBTRVQgcmVxdWVzdHMgZnJvbSBhZ2VudHggc3ViYWdlbnRzCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoOiAxNTk1NTY4OiBmcm9tIGN5cmlsX21hcmdhcmlhOiBmaXgKKyAgIGRlbGVnYXRlZCBTRVQgcmVxdWVzdHMgZnJvbSBhZ2VudHggc3ViYWdlbnRzCisKKzIwMDctMDUtMTQgMTQ6MDQgIGhhcmRha2VyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgdXBkYXRlIHRvIHBvaW50IHRvIHdpa2kgYW5kIGEgZmV3IG1vcmUgY3ZzIC0+IHN2biBjaGFuZ2VzCiAKIDIwMDctMDUtMTMgMTQ6MjcgIG1hZ2ZyCiAKLQkqIHNubXBsaWIvc25tcF9zZXJ2aWNlLmM6Ci0JICBDSEFOR0VTOiBzbm1wbGliOiBSZWFkIHRoZSBjb25maWcgcGFyYW1ldGVycyBkZWZUYXJnZXQgYW5kCi0JICBkZWZEb21haW4gZnJvbSBzbm1wLmNvbmYgYXMgd2VsbCBhcyBmcm9tIDxhcHBsaWNhdGlvbj4uY29uZgorICAgKiBzbm1wbGliL3NubXBfc2VydmljZS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBSZWFkIHRoZSBjb25maWcgcGFyYW1ldGVycyBkZWZUYXJnZXQgYW5kCisgICBkZWZEb21haW4gZnJvbSBzbm1wLmNvbmYgYXMgd2VsbCBhcyBmcm9tIDxhcHBsaWNhdGlvbj4uY29uZgorCisyMDA3LTA1LTEyIDExOjE3ICBtYWdmcgorCisgICAqIHNubXBsaWIvbWliLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IERlYWxsb2NhdGUgdGhlIF9taWJpbmRleGVzIGNhY2hlIGluCisgICBzaHV0ZG93bl9taWIgdG8gbWFrZSBmb3IgYSBjbGVhbmVyIGV4aXQgb2YgdGhlIGxpYnJhcnkKIAogMjAwNy0wNS0xMiAxMToxNCAgbWFnZnIKIAotCSogc25tcGxpYi9taWIuYzoKLQkgIENIQU5HRVM6IHNubXBsaWI6IERlYWxsb2NhdGUgdGhlIGNvbmZtaWJzIGFuZCBjb25mbWliZGlycwotCSAgdmFyaWFibGVzIGluIHNodXRkb3duX21pYiB0byBtYWtlIGZvciBhIGNsZWFuZXIgZXhpdCBvZiB0aGUKLQkgIGxpYnJhcnkKKyAgICogc25tcGxpYi9taWIuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogRGVhbGxvY2F0ZSB0aGUgY29uZm1pYnMgYW5kIGNvbmZtaWJkaXJzCisgICB2YXJpYWJsZXMgaW4gc2h1dGRvd25fbWliIHRvIG1ha2UgZm9yIGEgY2xlYW5lciBleGl0IG9mIHRoZQorICAgbGlicmFyeQogCiAyMDA3LTA1LTExIDIxOjA2ICBtYWdmcgogCi0JKiBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjg3MzM2OiBTdGFydCB1c2luZyB0aGUgZW5oYW5jZWQKLQkgIHJlYWRfY29uZmlnIGludGVyZmFjZQorICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2ODczMzY6IFN0YXJ0IHVzaW5nIHRoZSBlbmhhbmNlZAorICAgcmVhZF9jb25maWcgaW50ZXJmYWNlCiAKIDIwMDctMDUtMTEgMjA6MzMgIG1hZ2ZyCiAKLQkqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKLQkgIFBBVENIIDE2ODczMjk6IEFwcGxpZWQgcGFydCAyIG9mIHRoZSBwYXRjaCAtIFdoZW4gcmVnaXN0ZXJpbmcKLQkgIG11bHRpcGxlIHByZW1pYiBoYW5kbGVycyBvbmx5IHRoZSBsYXN0IG9uZSB3YXMgcmVnaXN0ZXJlZCBwcmVtaWIsCi0JICB0aGUgb3RoZXJzIHdlcmUgcmVnaXN0ZXJkIGF0IHRoZSBub3JtYWwgdGltZS4gVGhpcyBwYXRjaCBwdXRzIGFsbAotCSAgcmVnaXN0cmF0aW9uIGluIG9uZSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBwcm9ibGVtYXRpYyB2YWx1ZSBhcwotCSAgYW4gYXJndW1lbnQgYW5kIG1ha2VzIHRoZSBvbGQgZnVuY3Rpb25zIHRoaW4gd3JhcHBlcnMgb2YgdGhlIG5ldwotCSAgb25lCisgICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKKworICAgUEFUQ0ggMTY4NzMyOTogQXBwbGllZCBwYXJ0IDIgb2YgdGhlIHBhdGNoIC0gV2hlbiByZWdpc3RlcmluZworICAgbXVsdGlwbGUgcHJlbWliIGhhbmRsZXJzIG9ubHkgdGhlIGxhc3Qgb25lIHdhcyByZWdpc3RlcmVkIHByZW1pYiwKKyAgIHRoZSBvdGhlcnMgd2VyZSByZWdpc3RlcmQgYXQgdGhlIG5vcm1hbCB0aW1lLiBUaGlzIHBhdGNoIHB1dHMgYWxsCisgICByZWdpc3RyYXRpb24gaW4gb25lIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIHByb2JsZW1hdGljIHZhbHVlIGFzCisgICBhbiBhcmd1bWVudCBhbmQgbWFrZXMgdGhlIG9sZCBmdW5jdGlvbnMgdGhpbiB3cmFwcGVycyBvZiB0aGUgbmV3CisgICBvbmUKIAogMjAwNy0wNS0xMSAyMDoyNCAgbWFnZnIKIAotCSogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgotCSAgQ0hBTkdFOiBzbm1wbGliOiBQQVRDSCAxNjg3MzI5OiBBcHBsaWVkIHBhcnQgMyBvZiB0aGUgcGF0Y2ggLSB1c2UKLQkgIHRoZSBzYW1lIGFsZ29yaXRobSB0byBkZXRlcm1pbmUgd2hhdCB0byB1bnJlZ2lzdGVyIGFzIGlzIHVzZWQgdG8KLQkgIGRldGVybWluZSB3aGF0IHRvIHJlZ3N0ZXIKKyAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgorCisgICBDSEFOR0U6IHNubXBsaWI6IFBBVENIIDE2ODczMjk6IEFwcGxpZWQgcGFydCAzIG9mIHRoZSBwYXRjaCAtIHVzZQorICAgdGhlIHNhbWUgYWxnb3JpdGhtIHRvIGRldGVybWluZSB3aGF0IHRvIHVucmVnaXN0ZXIgYXMgaXMgdXNlZCB0bworICAgZGV0ZXJtaW5lIHdoYXQgdG8gcmVnc3RlcgogCiAyMDA3LTA1LTExIDE2OjMyICBtYWdmcgogCi0JKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3Byb2MuYzoKLQkgIERvbid0IGxvZyBob3N0L2hyX3Byb2MgZXZlbnRzIGluIHRoZSBzbm1wZCBkb21haW4KKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmM6CisKKyAgIERvbid0IGxvZyBob3N0L2hyX3Byb2MgZXZlbnRzIGluIHRoZSBzbm1wZCBkb21haW4KIAogMjAwNy0wNS0xMSAxNjoyNyAgbWFnZnIKIAotCSogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6Ci0JICBEZWNvcmF0ZSBtb3JlIGRlYnVnIGxpbmVzIHdpdGggdGhlIHRhZyB0aGF0IGNvbnRyb2xzIHRoZSBsb2cKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CisKKyAgIERlY29yYXRlIG1vcmUgZGVidWcgbGluZXMgd2l0aCB0aGUgdGFnIHRoYXQgY29udHJvbHMgdGhlIGxvZwogCiAyMDA3LTA1LTExIDE1OjA3ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X3NvbGFyaXMuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2Mjg2MTM6IFJlc3RvcmUgbWVtVG90YWxGcmVlLjAgb24gU29sYXJpcworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X3NvbGFyaXMuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTYyODYxMzogUmVzdG9yZSBtZW1Ub3RhbEZyZWUuMCBvbiBTb2xhcmlzCiAKIDIwMDctMDUtMTAgMjE6NTIgIHRhbmRlcnMKIAotCSogTWFrZWZpbGUuaW4sIHB5dGhvbi9zZXR1cC5weToKLQkgIE5FV1M6IHB5dGhvbjogUEFUQ0g6IDE3MTYxMTQ6IExldCBweXRob24gYnVpbGQgaW4gc291cmNlIHRyZWUKLQkgIFBhdGNoIHByb3ZpZGVkIGJ5IEpvY2hlbiBGcmllZHJpY2ggKERlYmlhbiBwYXRjaCAjMzgpLgorICAgKiBNYWtlZmlsZS5pbiwgcHl0aG9uL3NldHVwLnB5OgorCisgICBORVdTOiBweXRob246IFBBVENIOiAxNzE2MTE0OiBMZXQgcHl0aG9uIGJ1aWxkIGluIHNvdXJjZSB0cmVlCisgICBQYXRjaCBwcm92aWRlZCBieSBKb2NoZW4gRnJpZWRyaWNoIChEZWJpYW4gcGF0Y2ggIzM4KS4KIAogMjAwNy0wNS0xMCAwNToxOCAgbWFnZnIKIAotCSogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgotCSAgUEFUQ0ggMTY4NzMyOTogQXBwbGllZCBwYXJ0IDEgb2YgdGhlIHBhdGNoIC0gbGVzc2VucyB0aGUgc2NvcGUgb2YKLQkgIHRoZSBsdG1wMiB2YXJpYWJsZQorICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CisKKyAgIFBBVENIIDE2ODczMjk6IEFwcGxpZWQgcGFydCAxIG9mIHRoZSBwYXRjaCAtIGxlc3NlbnMgdGhlIHNjb3BlIG9mCisgICB0aGUgbHRtcDIgdmFyaWFibGUKIAogMjAwNy0wNS0wOSAyMzo1NyAgdGFuZGVycwogCi0JKiBSRUFETUUuaXJpeDoKLQkgIGRvY3VtZW50IG9wdGltaXplZCBJUklYIGNwdSBzdGF0cworICAgKiBSRUFETUUuaXJpeDoKKworICAgZG9jdW1lbnQgb3B0aW1pemVkIElSSVggY3B1IHN0YXRzCiAKIDIwMDctMDUtMDkgMjM6NDkgIHRhbmRlcnMKIAotCSogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1LmgsCi0JICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2luZm8uYywKLQkgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzaW5mby5oOgotCSAgTkVXUzogaXJpeDogUEFUQ0g6IDE3MDk3NDg6IE9wdGltaXplZCBJUklYIGNwdSBzdGF0cworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzaW5mby5oOgogCi0yMDA3LTA1LTA5IDIyOjE2ICB0YW5kZXJzCisgICBORVdTOiBpcml4OiBQQVRDSDogMTcwOTc0ODogT3B0aW1pemVkIElSSVggY3B1IHN0YXRzCiAKLQkqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jOgotCSAgRml4IHByb2JsZW1zIHdpdGggc2luZ2xlLWxpbmUgZXh0ZW5kIHNjcmlwdHMuCi0JICAoZml4IHR5cG8gaW4gcjE2MzMyIGZvciA1LjQueCkKKzIwMDctMDUtMDkgMjE6MjMgIHJzdG9yeQogCi0yMDA3LTA1LTA5IDAxOjEwICBhbGV4X2IKKyAgICogZGlzdC9jdnNzaG93OgogCi0JKiB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiwgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYuaW46Ci0JICBXaW4zMiBidWlsZCBmaXhlcy4KKyAgIHVwZGF0ZSB0byBzaG93IHN2biByZXBvIHRvbworCisyMDA3LTA1LTA5IDE1OjM5ICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jOgorCisgICBpY21wU3RhdHNUYWJsZSBpcyBvbmx5IGltcGxlbWVudGVkIGZvciBMaW51eAogCiAyMDA3LTA1LTA4IDE5OjQ4ICBtYWdmcgogCi0JKiBhZ2VudC9zbm1wX2FnZW50LmM6Ci0JICBSZXZlcnQgbWlzdGFrZW5seSBjb21taXR0ZWQgZXh0cmEgdHJhY2UgbG9ncworICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CisKKyAgIFJldmVydCBtaXN0YWtlbmx5IGNvbW1pdHRlZCBleHRyYSB0cmFjZSBsb2dzCiAKIDIwMDctMDUtMDcgMjA6NDYgIGhhcmRha2VyCiAKLQkqIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLAotCSAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUueHMsCi0JICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvdGVzdC5wbDoKLQkgIHVwZGF0ZSBhZ2VudDo6ZGVmYXVsdF9zdG9yZSBwZXJsIG1vZHVsZSBmb3IgbmV3IGRlZnMKKyAgICogIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAgIAorICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUueHMsICAgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvdGVzdC5wbDoKKworICAgdXBkYXRlIGFnZW50OjpkZWZhdWx0X3N0b3JlIHBlcmwgbW9kdWxlIGZvciBuZXcgZGVmcworCisyMDA3LTA1LTA3IDIwOjI0ICBoYXJkYWtlcgorCisgICAqIGRpc3QvcGF0bWU6CisKKyAgIG1vcmUgc3ZuIGNvbnZlcnNpb24gZml4ZXMKIAogMjAwNy0wNS0wNyAyMDoyMyAgaGFyZGFrZXIKIAotCSogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF9hZ2VudC5jLAotCSAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCBtYW4vc25tcGQuY29uZi41LmRlZjoKLQkgIE5FV1M6IHNubXBkOiBCVUc6IDE3MTI5ODg6IGRlZmF1bHQgYW5kIGNvbmZpZ3VyYWJsZSBtYXhpbXVtCi0JICBudW1iZXIgb2YgdmFyYmluZHMgcmV0dXJuYWJsZSB0byBhIEdFVEJVTEsgcmVxdWVzdAorICAgKiAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF9hZ2VudC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgTkVXUzogc25tcGQ6IEJVRzogMTcxMjk4ODogZGVmYXVsdCBhbmQgY29uZmlndXJhYmxlIG1heGltdW0KKyAgIG51bWJlciBvZiB2YXJiaW5kcyByZXR1cm5hYmxlIHRvIGEgR0VUQlVMSyByZXF1ZXN0CisKKzIwMDctMDUtMDcgMjA6MDUgIGhhcmRha2VyCisKKyAgICogZGlzdC9wYXRtZToKKworICAgcmVuYW1lIG9mIGJyYW5jaCBkaXJzCisKKzIwMDctMDUtMDcgMTY6MTQgIGhhcmRha2VyCisKKyAgICogZGlzdC9wYXRtZToKKworICAgYXR0ZW1wdGVkICh1bnRlc3RlZCkgdXBkYXRlCisKKzIwMDctMDUtMDcgMTM6NTUgIHJzdG9yeQorCisgICAqIGRpc3Qvc3ZudXA6CisKKyAgIGRvbid0IGRlbGV0ZSB0YXJiYWxsIGlmIHNjcCBmYWlscwogCiAyMDA3LTA1LTA0IDIwOjI3ICB0YW5kZXJzCiAKLQkqIHBlcmwvU05NUC9TTk1QLnhzOgotCSAgQ0hBTkdFUzogcGVybDogZml4IFNOTVAgU0VUIGZvciBJUCBhZGRyZXNzZXMgb24gNjQtYml0CisgICAqIHBlcmwvU05NUC9TTk1QLnhzOgorCisgICBDSEFOR0VTOiBwZXJsOiBmaXggU05NUCBTRVQgZm9yIElQIGFkZHJlc3NlcyBvbiA2NC1iaXQKIAogMjAwNy0wNS0wNCAxMDoyMiAgdGFuZGVycwogCi0JKiBNYWtlZmlsZS5pbjoKLQkgIGluc3RhbGwgZHJhZ29uZmx5LmgKKyAgICogTWFrZWZpbGUuaW46CisKKyAgIGluc3RhbGwgZHJhZ29uZmx5LmgKIAogMjAwNy0wNS0wMyAyMzowMSAgdGFuZGVycwogCi0JKiBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kcmFnb25mbHkuaDoKLQkgIENIQU5HRVM6IEJVRzogMTcxMDkxMDogaW5pdGlhbCBzdXBwb3J0IGZvciBEcmFnb25GbHkgQlNECisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RyYWdvbmZseS5oOgorCisgICBDSEFOR0VTOiBCVUc6IDE3MTA5MTA6IGluaXRpYWwgc3VwcG9ydCBmb3IgRHJhZ29uRmx5IEJTRAogCiAyMDA3LTA1LTAzIDIyOjEwICB0YW5kZXJzCiAKLQkqIHBlcmwvU05NUC9TTk1QLnhzOgotCSAgQ0hBTkdFUzogcGVybDogZml4IFNOTVAgU0VUIGZvciBJUCBhZGRyZXNzZXMgb24gNjQtYml0Ci0JICBQYXRjaCBwcm9wb3NlZCBieSBKZWZmIExhbmdlLgorICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgQ0hBTkdFUzogcGVybDogZml4IFNOTVAgU0VUIGZvciBJUCBhZGRyZXNzZXMgb24gNjQtYml0CisgICBQYXRjaCBwcm9wb3NlZCBieSBKZWZmIExhbmdlLgorCisyMDA3LTA1LTAzIDE2OjAwICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jOgorCisgICBidWlsZCBmaXggKGUuZy4gZm9yIGVhcmx5IEFJWCk6IHVzZSB1aW50MzJfdCBpLnMuby4gX191aW50MzJfdAogCiAyMDA3LTA1LTAyIDEzOjEzICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzoKLQkgIEZpeCBwcm9ibGVtcyB3aXRoIHNpbmdsZS1saW5lIGV4dGVuZCBzY3JpcHRzLgorICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzoKKworICAgRml4IHByb2JsZW1zIHdpdGggc2luZ2xlLWxpbmUgZXh0ZW5kIHNjcmlwdHMuCisKKzIwMDctMDUtMDEgMTk6NTEgIHJzdG9yeQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYzoKKworICAgLSB0ZXN0IGZvciBJRkFfRl9URU1QT1JBUlkgYmVmb3JlIHVzaW5nCisgICAtIHJlbW92ZSByZWR1bmRhbnQgaWZkZWYKIAogMjAwNy0wNS0wMSAxMTozNCAgZHRzMTIKIAotCSogYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYzoKLQkgIENIQU5HRVM6IHNubXB0cmFwZDogU3VwcG9ydCBmb3IgZm9yd2FyZGluZyB0cmFwcyBieSBPSUQgc3VidHJlZS4KLQkgIChDb25zaXN0ZW50IHdpdGggc3VidHJlZS1iYXNlZCBzY3JpcHQgcHJvY2Vzc2luZykuCisgICAqIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmM6CisKKyAgIENIQU5HRVM6IHNubXB0cmFwZDogU3VwcG9ydCBmb3IgZm9yd2FyZGluZyB0cmFwcyBieSBPSUQgc3VidHJlZS4KKyAgIChDb25zaXN0ZW50IHdpdGggc3VidHJlZS1iYXNlZCBzY3JpcHQgcHJvY2Vzc2luZykuCisKKzIwMDctMDQtMzAgMTQ6NTEgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTcwMzAwNDogQ29uc29saWRhdGUgc25tcDYgaGFuZGxpbmcuCisgICBQYXRjaCBzdXBwbGllZCBieSBOZWlsIEhvcm1hbiwgcGx1cyBzb21lIGV4dHJhIHRpZHlpbmcgdXAuCisKKzIwMDctMDQtMzAgMTQ6MzMgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTcwMjM2NjogU3VwcG9ydCBmb3IgaWNtcFN0YXRzVGFibGUKKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IE5laWwgSG9ybWFuCisKKzIwMDctMDQtMzAgMTQ6MzEgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMsIAorICAgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzAyMzYxOiBSZWFkIHN0YXRzIGZyb20gL3Byb2MvbmV0L3NubXA2CisKKzIwMDctMDQtMzAgMTQ6MTQgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYzoKKworICAgRml4IGNvbXBpbGF0aW9uIHByb2JsZW1zIHdoZW4gSVB2NiBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLgogCiAyMDA3LTA0LTMwIDEzOjI2ICBkdHMxMgogCi0JKiBSRUFETUUuYWdlbnQtbWlicywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYywKLQkgIGFnZW50L21pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmg6Ci0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3MDA3Mzc6IFRpZHkgdXAgc2V0U2VyaWFsTm8KLQkgIGltcGxlbWVudGF0aW9ucy4KKyAgICogIFJFQURNRS5hZ2VudC1taWJzLCBhZ2VudC9taWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzAwNzM3OiBUaWR5IHVwIHNldFNlcmlhbE5vCisgICBpbXBsZW1lbnRhdGlvbnMuCiAKIDIwMDctMDQtMzAgMTM6MDYgIGR0czEyCiAKLQkqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzAwNzMyOiBGaXggZGVidWcgb3V0cHV0IHN0YXRlbWVudHMuCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3MDA3MzI6IEZpeCBkZWJ1ZyBvdXRwdXQgc3RhdGVtZW50cy4KIAogMjAwNy0wNC0zMCAxMzowMiAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzAwNzMwOiBSZW1vdmUgdW51c2VkIGV4dGVybiBkZWNsYXJhdGlvbi4KKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3MDA3MzA6IFJlbW92ZSB1bnVzZWQgZXh0ZXJuIGRlY2xhcmF0aW9uLgogCiAyMDA3LTA0LTMwIDExOjMyICBkdHMxMgogCi0JKiBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2OTgxODQ6IFJlZ2lzdGVyIG5vbi1kZWZhdWx0IGNvbnRleHQKLQkgIGludGVnZXJzIGFzIHdyaXRhYmxlLgotCSAgUGF0Y2ggcHJvdmlkZWQgYnkgTWFyayBOYXlsb3IuCisgICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjk4MTg0OiBSZWdpc3RlciBub24tZGVmYXVsdCBjb250ZXh0CisgICBpbnRlZ2VycyBhcyB3cml0YWJsZS4KKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IE1hcmsgTmF5bG9yLgorCisyMDA3LTA0LTMwIDExOjI2ICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjk4MTc6IEltcHJvdmVkIFJGQyA0MjkzIHN1cHBvcnQuCisgICBJbmNsdWRlcyBub24tdW5pY2FzdCBhbmQgcmFuZG9tbHkgY2hvc2VuIElQIGFkZHJlc3Nlcy4KKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IFZhcnVuIENoYW5kcmFtb2hhbgogCiAyMDA3LTA0LTMwIDExOjA0ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjkyNzY4OiBGaXggY29weWluZyBvZiBub24tb2N0ZXQtYWxpZ25lZAotCSAgSVAgYWRkcmVzcyBwcmVmaXhlcy4KKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjkyNzY4OiBGaXggY29weWluZyBvZiBub24tb2N0ZXQtYWxpZ25lZAorICAgSVAgYWRkcmVzcyBwcmVmaXhlcy4KKworMjAwNy0wNC0zMCAxMDo1MCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2NzA1MTE6IEltcGxlbWVudCBuZXR3b3JrIGNvbm5lY3Rpb24KKyAgIHByb2Nlc3MgSUQgb2JqZWN0cy4KKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IFZhcnVuIENoYW5kcmFtb2hhbgorCisyMDA3LTA0LTMwIDEwOjQ2ICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oOgorCisgICBGaXggZGVjbGFyYXRpb24gb2Ygc25tcF9zZXNzX3JlYWRfZXh0ZCgpCiAKIDIwMDctMDQtMzAgMTA6MjUgIGR0czEyCiAKLQkqIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jOgotCSAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE2ODczMjU6IEZpeCBwcm9ibGVtIHdpdGggb3BlcmF0b3IKLQkgIHByZWNlZGVuY2UuCisgICAqIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTY4NzMyNTogRml4IHByb2JsZW0gd2l0aCBvcGVyYXRvcgorICAgcHJlY2VkZW5jZS4KKworMjAwNy0wNC0zMCAxMDoyMSAgZHRzMTIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaDoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE2ODczMTk6IERlY2xhcmUgc25tcF9zZXNzX3JlYWRfZXh0ZCgpCisKKzIwMDctMDQtMzAgMTA6MTQgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTY4NzMxODogTWFrZSBfc2Vzc19zZWxwb2xfaW5mbyBzdGF0aWMuCisKKzIwMDctMDQtMzAgMTA6MDkgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTY4NzMxNzogUmVtb3ZlIGFuIHVudXNlZCBsb2NhbCB2YXJpYWJsZQogCiAyMDA3LTA0LTMwIDEwOjA3ICBkdHMxMgogCi0JKiBzbm1wbGliL3NubXBVbml4RG9tYWluLmMsIHNubXBsaWIvc25tcF9hcGkuYzoKLQkgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjg3MzE2OiBEb24ndCBkcm9wIGNvbnN0IGZyb20gY2FzdHMuCisgICAqIHNubXBsaWIvc25tcFVuaXhEb21haW4uYywgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTY4NzMxNjogRG9uJ3QgZHJvcCBjb25zdCBmcm9tIGNhc3RzLgorCisyMDA3LTA0LTI3IDEwOjIxICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6CisKKyAgIEJyaW5nIGR5bmFtaWMgbW9kdWxlIHVubG9hZCBwcm9jZXNzaW5nIG1vcmUgaW50byBsaW5lIHdpdGgKKyAgICJub3JtYWwiIE1JQiBtb2R1bGVzLiBTdWdnZXN0ZWQgYnkgTWFnbnVzIEZyb21yZWlkZS4KKyAgIFNlZSBjb2RlcnMgdGhyZWFkICJzaHV0ZG93bl9mb28gb3IgZGVpbml0X2ZvbyIuCisKKzIwMDctMDQtMjcgMTA6MTcgIGR0czEyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgVXBkYXRlIHBvc3QtcmVsZWFzZSBhbm5vdW5jZW1lbnQgaW5zdHJ1Y3Rpb25zLgogCiAyMDA3LTA0LTI0IDEyOjM1ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzoKLQkgIEZpeCBpbmNvbXBsZXRlIE9JRCBoYW5kbGluZyBvZiBzaW5nbGUtbGluZSBleHRlbmQgc2NyaXB0cy4KLQkgIFJlcG9ydGVkIGJ5IE1heCBvbiBjb2RlcnMgbGlzdCwgN3RoIEFwcmlsLiBTZWUgdGhyZWFkCi0JICAiLi4uIHNlZ2ZhdWx0IC4uIHdoZW4gYXR0ZW1wdGluZyBTTk1QIEdFVCBvbiBleHRlbmQgb3IgZXhlYyBpdGVtIgorICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzoKKworICAgRml4IGluY29tcGxldGUgT0lEIGhhbmRsaW5nIG9mIHNpbmdsZS1saW5lIGV4dGVuZCBzY3JpcHRzLgorICAgUmVwb3J0ZWQgYnkgTWF4IG9uIGNvZGVycyBsaXN0LCA3dGggQXByaWwuIFNlZSB0aHJlYWQKKyAgICIuLi4gc2VnZmF1bHQgLi4gd2hlbiBhdHRlbXB0aW5nIFNOTVAgR0VUIG9uIGV4dGVuZCBvciBleGVjIGl0ZW0iCiAKIDIwMDctMDQtMjAgMDg6MzAgIGR0czEyCiAKLQkqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgotCSAgRG9jdW1lbnQgdGhlIGJlaGF2aW91ciBvZiBhIGxvYWQgdGhyZXNob2xkIG9mIDAuCi0JICBSZXBvcnRlZCBieSBGb25nIFRzdWkuCisgICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgorCisgICBEb2N1bWVudCB0aGUgYmVoYXZpb3VyIG9mIGEgbG9hZCB0aHJlc2hvbGQgb2YgMC4KKyAgIFJlcG9ydGVkIGJ5IEZvbmcgVHN1aS4KIAogMjAwNy0wNC0yMCAwODoyMSAgZHRzMTIKIAotCSogbWlicy9VQ0QtU05NUC1NSUIudHh0OgotCSAgTG9uZy10ZXJtIGxvYWQgYXZlcmFnZSBpcyBjYWxjdWxhdGVkIG92ZXIgMTUgbWludXRlcywgbm90IDEwLgotCSAgUmVwb3J0ZWQgYnkgRm9uZyBUc3VpCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKKworICAgTG9uZy10ZXJtIGxvYWQgYXZlcmFnZSBpcyBjYWxjdWxhdGVkIG92ZXIgMTUgbWludXRlcywgbm90IDEwLgorICAgUmVwb3J0ZWQgYnkgRm9uZyBUc3VpCisKKzIwMDctMDQtMTkgMTI6NTMgIGR0czEyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgVHdlYWsgQ2hhbmdlTG9nIGluc3RydWN0aW9ucyBmb3IgU1ZOCiAKIDIwMDctMDQtMTAgMTQ6MTYgIGR0czEyCiAKLQkqIHBlcmwvU05NUC9TTk1QLnhzOgotCSAgRGV0ZWN0IE9JRCByZXRyYWNraW5nIChhcyB3ZWxsIGFzIHNpbXBsZSByZXBldGl0aW9ucykgd2hlbgotCSAgYnVsa3dhbGtpbmcgYW4gT0lEIHRyZWUuCi0JICBTZWUgdXNlcnMgdGhyZWFkICJtaXNzaW5nIGluZGljZXMgaW4gYnVsa3dhbGsgcmVzdWx0Ii4KKyAgICogcGVybC9TTk1QL1NOTVAueHM6CisKKyAgIERldGVjdCBPSUQgcmV0cmFja2luZyAoYXMgd2VsbCBhcyBzaW1wbGUgcmVwZXRpdGlvbnMpIHdoZW4KKyAgIGJ1bGt3YWxraW5nIGFuIE9JRCB0cmVlLgorICAgU2VlIHVzZXJzIHRocmVhZCAibWlzc2luZyBpbmRpY2VzIGluIGJ1bGt3YWxrIHJlc3VsdCIuCiAKIDIwMDctMDQtMTAgMTE6NDkgIGR0czEyCiAKLQkqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL21pbmd3MzIuaDoKLQkgIENsYXJpZnkgY29weXJpZ2h0IHN0YXR1cyBvZiBXaW4zMiBBUEkgZGVmaW5pdGlvbnMuCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL21pbmd3MzIuaDoKKworICAgQ2xhcmlmeSBjb3B5cmlnaHQgc3RhdHVzIG9mIFdpbjMyIEFQSSBkZWZpbml0aW9ucy4KIAogMjAwNy0wNC0xMCAxMToyNyAgZHRzMTIKIAotCSogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZHluaXguaDoKLQkgIENsYXJpZnkgY29weXJpZ2h0IHN0YXR1cyBvZiBCU0QtZGVyaXZlZCBUQ1BUViogZGVmaW5pdGlvbnMuCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2R5bml4Lmg6CiAKLTIwMDctMDQtMDMgMDg6NTkgIHRhbmRlcnMKKyAgIENsYXJpZnkgY29weXJpZ2h0IHN0YXR1cyBvZiBCU0QtZGVyaXZlZCBUQ1BUViogZGVmaW5pdGlvbnMuCiAKLQkqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgotCSAgZml4IHN5bnRheCBlcnJvciBpbnRyb2R1Y2VkIGJ5IGxhc3QgcGF0Y2gKKzIwMDctMDQtMDkgMTQ6MDIgIHJzdG9yeQorCisgICAqIGRpc3Qvc3ZudXA6CisKKyAgIC0gcmVtb3ZlIGRlYnVnZ2luZworICAgLSBjaGVjayByYyBmb3IgdGFyLCBnemlwIGFuZCBzY3Agc3RlcHMKKworMjAwNy0wNC0wNiAxODozOCAgcnN0b3J5CisKKyAgICogZGlzdC9zdm51cDoKKworICAgc3ZuIGVxdWl2YWxlbnQgb2YgY3ZzdXAKIAogMjAwNy0wNC0wMyAwODo1NCAgZHRzMTIKIAotCSogbWFuL3NubXBkLmNvbmYuNS5kZWY6Ci0JICBFbXBoYXNpc2UgdGhlIHVzZSBvZiBTTk1QdjMgaW4gRGlzTWFuIG1vbml0b3JpbmcuCi0JICBGaXggdGhlIHN5bnRheCBvZiBub24tZXhpc3RhbmNlL3ZhbHVlLWNoYW5nZSB0ZXN0cy4KKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CisKKyAgIEVtcGhhc2lzZSB0aGUgdXNlIG9mIFNOTVB2MyBpbiBEaXNNYW4gbW9uaXRvcmluZy4KKyAgIEZpeCB0aGUgc3ludGF4IG9mIG5vbi1leGlzdGFuY2UvdmFsdWUtY2hhbmdlIHRlc3RzLgogCiAyMDA3LTA0LTAyIDE0OjU1ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxMDQ2MzI3OiBSZXNldCAiaW5jbHVkZUFsbERpc2tzIiBmbGFnIHdoZW4KLQkgIHJlbG9hZGluZy4KKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxMDQ2MzI3OiBSZXNldCAiaW5jbHVkZUFsbERpc2tzIiBmbGFnIHdoZW4KKyAgIHJlbG9hZGluZy4KIAogMjAwNy0wNC0wMiAxNDo0NSAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTYwMjI4NjogRG9uJ3QgbGV0IHRhYmxlIGhvbGVzIGJsb2NrIGxhdGVyCi0JICByb3dzLgorICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2MDIyODY6IERvbid0IGxldCB0YWJsZSBob2xlcyBibG9jayBsYXRlcgorICAgcm93cy4KIAogMjAwNy0wNC0wMiAxMzo1MSAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTA3Mzc4MjogUmVzdG9yZSBQZXJmU3RhdCB2YWx1ZXMgZm9yIEZyZWVCU0QKLQkgIDUueCBzeXN0ZW1zLgotCSAgSXQncyB1bmNsZWFyIHdoeSB0aGUgIm5ldyIgY2FsY3VsYXRpb24gd2FzIGEpIHByb3Bvc2VkLCBiKQotCSAgd2l0aGRyYXduLAotCSAgYW5kIGMpIHdoYXQgd2FzIHdyb25nIHdpdGggdGhlIHByZXZpb3VzIGNhbGN1bGF0aW9uICh3aGljaCBzZWVtcwotCSAgdG8KLQkgIG1hdGNoIHRoZSBvdXRwdXQgb2YgJ3BzJykKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxMDczNzgyOiBSZXN0b3JlIFBlcmZTdGF0IHZhbHVlcyBmb3IgRnJlZUJTRAorICAgNS54IHN5c3RlbXMuCisgICBJdCdzIHVuY2xlYXIgd2h5IHRoZSAibmV3IiBjYWxjdWxhdGlvbiB3YXMgYSkgcHJvcG9zZWQsIGIpCisgICB3aXRoZHJhd24sCisgICBhbmQgYykgd2hhdCB3YXMgd3Jvbmcgd2l0aCB0aGUgcHJldmlvdXMgY2FsY3VsYXRpb24gKHdoaWNoIHNlZW1zCisgICB0bworICAgbWF0Y2ggdGhlIG91dHB1dCBvZiAncHMnKQogCiAyMDA3LTA0LTAyIDEzOjA2ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDkwMjYxMDogRG9uJ3QgZGlzY2FyZCBwZW5kaW5nIGRhdGEgZm9sbG93aW5nCi0JICBhIFRSQVAuCisgICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiA5MDI2MTA6IERvbid0IGRpc2NhcmQgcGVuZGluZyBkYXRhIGZvbGxvd2luZworICAgYSBUUkFQLgogCiAyMDA3LTA0LTAyIDEyOjU2ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDkwMjgwMTogRml4IG9yZGVyaW5nIG9mIFNNVVgtcmVnaXN0ZXJlZAotCSAgc3VidHJlZXMuCisgICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiA5MDI4MDE6IEZpeCBvcmRlcmluZyBvZiBTTVVYLXJlZ2lzdGVyZWQKKyAgIHN1YnRyZWVzLgogCiAyMDA3LTA0LTAyIDEyOjM1ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2ODUwNjc6IE1vcmUgcHJlY2lzZSBoYW5kbGluZyBvZgotCSAgU05NUHYzLWFkbWluIE1JQiB0YWJsZXMuCi0JICBUaGlzIGFjdHVhbGx5IGZpeGVzIHRocmVlIHNlcGFyYXRlIHByb2JsZW1zOgotCSAgKiBBIEdFVCByZXF1ZXN0IGZvciAndmFjbUdyb3VwTmFtZS57Z3JvdXB9LjAue2FueXRoaW5nfScgd2lsbAotCSAgc3VjY2VlZAotCSAgKHNpbmNlIHRoZSAwIHN1YmlkIGFjdHMgYXMgYSBudWxsLXRlcm1pbmF0b3IgZm9yIHRoZSBncm91cCBuYW1lKS4KLQkgICogQSBHRVQgcmVxdWVzdCBmb3IgJ3ZhY21WaWV3VHJlZUZhbWlseVR5cGUuIl9ub25lIi4xJyB3aWxsCi0JICBzdWNjZWVkCi0JICAoaW1wbGljaXRseSBhZGRpbmcgdGhlIHN1YmlkIDAgdG8gdGhlIGluY29tcGxldGUgT0lEIGluZGV4IHZhbHVlKQotCSAgKiBBIEdFVCByZXF1ZXN0IGZvciAndmFjbUFjY2Vzc1N0YXR1cy4iZ3JvdXAiLiIiLjMuNCcgd2lsbAotCSAgc3VjY2VlZAotCSAgKHNpbmNlIFZBQ00gY2hlY2tzIGFjY2VwdCB0aGUgZ2l2ZW4gc2VjdXJpdHkgbGV2ZWwgKm9yKmhpZ2hlciopCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgogCi0yMDA3LTA0LTAyIDEyOjI2ICBkdHMxMgorICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTY4NTA2NzogTW9yZSBwcmVjaXNlIGhhbmRsaW5nIG9mCisgICBTTk1QdjMtYWRtaW4gTUlCIHRhYmxlcy4KKyAgIFRoaXMgYWN0dWFsbHkgZml4ZXMgdGhyZWUgc2VwYXJhdGUgcHJvYmxlbXM6CisgICAqICBBIEdFVCByZXF1ZXN0IGZvciAndmFjbUFjY2Vzc1N0YXR1cy4iZ3JvdXAiLiIiLjMuNCcgd2lsbCAgIAorICAgICAgc3VjY2VlZCAgICAoc2luY2UgVkFDTSBjaGVja3MgYWNjZXB0IHRoZSBnaXZlbiBzZWN1cml0eSBsZXZlbAorICAgICAgKm9yKmhpZ2hlciopICAyMDA3LTA0LTAyIDEyOjI2ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYzoKLQkgIENoZWNrIHRoYXQgR0VUIHJlcXVlc3RzIG1hdGNoIGEgdmFsaWQgT0lELgotCSAgKE90aGVyd2lzZSBhIHJlcXVlc3QgZm9yIGhyU3RvcmFnZXtDb2x1bW59LntpbmRleH0ue2FueXRoaW5nfQotCSAgd2lsbCBpZ25vcmUgdGhlIGV4dHJhIHN1YmlkcywgYW5kIHJldHVybiBzdWNjZXNzKQorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgorCisgICBDaGVjayB0aGF0IEdFVCByZXF1ZXN0cyBtYXRjaCBhIHZhbGlkIE9JRC4KKyAgIChPdGhlcndpc2UgYSByZXF1ZXN0IGZvciBoclN0b3JhZ2V7Q29sdW1ufS57aW5kZXh9Lnthbnl0aGluZ30KKyAgIHdpbGwgaWdub3JlIHRoZSBleHRyYSBzdWJpZHMsIGFuZCByZXR1cm4gc3VjY2VzcykKIAogMjAwNy0wNC0wMiAxMjoyMSAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jOgotCSAgUHJldmVudCBjcmFzaCB3aGVuIHdhbGtpbmcgKGludmFsaWQ/KSBFdmVudC1NSUIgT2JqZWN0cyBUYWJsZS4KKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jOgorCisgICBQcmV2ZW50IGNyYXNoIHdoZW4gd2Fsa2luZyAoaW52YWxpZD8pIEV2ZW50LU1JQiBPYmplY3RzIFRhYmxlLgogCiAyMDA3LTA0LTAyIDExOjMwICBkdHMxMgogCi0JKiBkaXN0L21ha2VyZWxlYXNlOgotCSAgRml4IGEgY291cGxlIG9mIHR5cG9zIGluIHRoZSByZS13b3JrZWQgbWFrZXJlbGVhc2Ugc2NyaXB0LgorICAgKiBkaXN0L21ha2VyZWxlYXNlOgorCisgICBGaXggYSBjb3VwbGUgb2YgdHlwb3MgaW4gdGhlIHJlLXdvcmtlZCBtYWtlcmVsZWFzZSBzY3JpcHQuCiAKIDIwMDctMDMtMjkgMTI6MTQgIHRhbmRlcnMKIAotCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0JICBmaXggc3ludGF4IGVycm9yICgiPT0iIGlzIGJhZCkKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIGZpeCBzeW50YXggZXJyb3IgKCI9PSIgaXMgYmFkKQorCisyMDA3LTAzLTI3IDA4OjU1ICBkdHMxMgorCisgICAqIGFjaW5jbHVkZS5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIFJlYWQgdXNlci1wcm9tcHRlZCB2YWx1ZXMgZnJvbSBvcmlnaW5hbCBzdGRpbiAobm90IC9kZXYvbnVsbCkKIAogMjAwNy0wMy0yNyAwODozOCAgZHRzMTIKIAotCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0JICBBY2NlcHQgJzJjJyBhcyBhIHZhbGlkIHJlc3BvbnNlIHdoZW4gY2hvb3NpbmcgdGhlIGRlZmF1bHQgdmVyc2lvbgorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKworICAgQWNjZXB0ICcyYycgYXMgYSB2YWxpZCByZXNwb25zZSB3aGVuIGNob29zaW5nIHRoZSBkZWZhdWx0IHZlcnNpb24KIAogMjAwNy0wMy0yNyAwODoyOSAgZHRzMTIKIAotCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0JICBDSEFOR0VTOiBjb25maWd1cmU6IEJVRzogMTU2NzMyNDogQ2xhcmlmeSBwcm9tcHRpbmcgZm9yCi0JICB1c2VyLXN1cHBsaWVkIHZhbHVlcy4KLQkgIE5vdyBvbmx5IHJlbWVtYmVycyAoYW5kIHVzZXMpIHByZXZpb3VzIHZhbHVlcyB3aGVuIGV4cGxpY2l0bHkKLQkgIHRvbGQgdG8gZG8gc28sCi0JICBlLmcuIGNvbmZpZ3VyZSAtQworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKIAotMjAwNy0wMy0yNSAyMjozMiAgZHRzMTIKKyAgIENIQU5HRVM6IGNvbmZpZ3VyZTogQlVHOiAxNTY3MzI0OiBDbGFyaWZ5IHByb21wdGluZyBmb3IKKyAgIHVzZXItc3VwcGxpZWQgdmFsdWVzLgorICAgTm93IG9ubHkgcmVtZW1iZXJzIChhbmQgdXNlcykgcHJldmlvdXMgdmFsdWVzIHdoZW4gZXhwbGljaXRseQorICAgdG9sZCB0byBkbyBzbywKKyAgIGUuZy4gY29uZmlndXJlIC1DCiAKLQkqIGxvY2FsL21pYjJjLmNvbnRhaW5lci5jb25mLCBsb2NhbC9taWIyYy5pdGVyYXRlLmNvbmYsCi0JICBsb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmY6Ci0JICBWYXJpYWJsZS1sZW5ndGggc3RyaW5nIHZhbHVlcyBhcmUgbW9yZSBsaWtlbHkgdGhhbiBmaXhlZCBsZW5ndGguCisyMDA3LTAzLTI3IDA4OjIzICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBGaXggaW5jb25zaXN0ZW5jeSBpbiBwYXRjaCAjMTYyNzA0OSAtIDxwb2xsLmg+IHZzIDxzeXMvcG9sbC5oPgorCisyMDA3LTAzLTI1IDIyOjMxICBkdHMxMgorCisgICAqICBsb2NhbC9taWIyYy5jb250YWluZXIuY29uZiwgbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mLCAgIAorICAgICAgbG9jYWwvbWliMmMudGFibGVfZGF0YS5jb25mOgorCisgICBWYXJpYWJsZS1sZW5ndGggc3RyaW5nIHZhbHVlcyBhcmUgbW9yZSBsaWtlbHkgdGhhbiBmaXhlZCBsZW5ndGguCiAKIDIwMDctMDMtMjUgMjI6MjggIGR0czEyCiAKLQkqIGxvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZjoKLQkgIENIQU5HRVM6IG1pYjJjOiBCVUc6IDgzMzY3MzogTW9yZSBmb2N1c2VkIHNpemUgY2hlY2tzLgorICAgKiBsb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmY6CisKKyAgIENIQU5HRVM6IG1pYjJjOiBCVUc6IDgzMzY3MzogTW9yZSBmb2N1c2VkIHNpemUgY2hlY2tzLgogCiAyMDA3LTAzLTI1IDIxOjI1ICBkdHMxMgogCi0JKiBhZ2VudC9zbm1wX2FnZW50LmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNjc3MDYzOiBDaGVjayBmb3IgZmFpbGVkIG1hbGxvYyBjYWxscy4KKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNjc3MDYzOiBDaGVjayBmb3IgZmFpbGVkIG1hbGxvYyBjYWxscy4KIAogMjAwNy0wMy0yNSAxOTowMyAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuYzoKLQkgIENoZWNrIFNFVCByZXF1ZXN0cyBhZ2FpbnN0IHRoZSBjb3JyZWN0IHR5cGUgKElQIEFkZHJlc3MgIT0gT2N0ZXQKLQkgIFN0cikKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuYzoKIAotMjAwNy0wMy0yNSAxODo1OCAgZHRzMTIKKyAgIENoZWNrIFNFVCByZXF1ZXN0cyBhZ2FpbnN0IHRoZSBjb3JyZWN0IHR5cGUgKElQIEFkZHJlc3MgIT0gT2N0ZXQKKyAgIFN0cikKIAotCSogYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2ODUwODE6IENoZWNrIGZvciB2YWxpZCBPSUQgb24gRnJlZS9VbmRvCi0JICBwYXNzZXMuCisyMDA3LTAzLTI1IDE4OjU1ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2ODUwODE6IENoZWNrIGZvciB2YWxpZCBPSUQgb24gRnJlZS9VbmRvCisgICBwYXNzZXMuCiAKIDIwMDctMDMtMjMgMDk6NDQgIGR0czEyCiAKLQkqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oOgotCSAgQ0hBTkVHUzogc25tcGxpYjogQlVHOiAxNjg2Mzg0OiBEb2N1bWVudCBub24tdXNlIG9mICdyZW1vdGVfcG9ydCcKLQkgIGZpZWxkLgorICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaDoKKworICAgQ0hBTkVHUzogc25tcGxpYjogQlVHOiAxNjg2Mzg0OiBEb2N1bWVudCBub24tdXNlIG9mICdyZW1vdGVfcG9ydCcKKyAgIGZpZWxkLgogCiAyMDA3LTAzLTIzIDA5OjE5ICBkdHMxMgogCi0JKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLXBlcnNpc3RlbmNlLm0yaToKLQkgIEFsbG93IHNwYWNlIGZvciBleHRlcm5hbCBpbmRleGVzIHdoZW4gc2F2aW5nIHRhYmxlIGVudHJpZXMuCi0JICAoU2VlIHBhdGNoICMxNjQyMjU1KQorICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLXBlcnNpc3RlbmNlLm0yaToKIAotMjAwNy0wMy0yMyAwOToxNSAgZHRzMTIKKyAgIEFsbG93IHNwYWNlIGZvciBleHRlcm5hbCBpbmRleGVzIHdoZW4gc2F2aW5nIHRhYmxlIGVudHJpZXMuCisgICAoU2VlIHBhdGNoICMxNjQyMjU1KQogCi0JKiBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY0MjI1NTogSGFuZGxlIHNhdmluZyBsb25nCi0JICBzbm1wTm90aWZ5RmlsdGVyVGFibGUgZW50cmllcy4KKzIwMDctMDMtMjMgMDk6MTQgIGR0czEyCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjQyMjU1OiBIYW5kbGUgc2F2aW5nIGxvbmcKKyAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZSBlbnRyaWVzLgorCisyMDA3LTAzLTIzIDA5OjA5ICBkdHMxMgorCisgICAqICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oLCBzbm1wbGliL3JlYWRfY29uZmlnLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjgxOTc3OiBBZGQgY2FsbGJhY2tzIHByaW9yIHRvIHJlYWRpbmcKKyAgIGNvbmZpZy4KIAogMjAwNy0wMy0yMyAwOTowNiAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY3NjQ3ODogZml4IHVkcEVuZHBvaW50UmVtb3RlQWRkcmVzcwotCSAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTY3NjQ3NjogZml4IHVkcEVuZHBvaW50UmVtb3RlQWRkcmVzcworICAgKiBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2NzY0Nzg6IGZpeCB1ZHBFbmRwb2ludFJlbW90ZUFkZHJlc3MKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2NzY0NzY6IGZpeCB1ZHBFbmRwb2ludFJlbW90ZUFkZHJlc3MKIAogMjAwNy0wMy0yMyAwOTowMSAgZHRzMTIKIAotCSogc25tcGxpYi9zbm1wX2FwaS5jOgotCSAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE2NTM2NzA6IENvbnNpc3RlbnQgU05NUHYzIGJlaGF2aW91cgotCSAgd2hlbiBvcGVuaW5nIHNlc3Npb25zLgorICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjUzNjcwOiBDb25zaXN0ZW50IFNOTVB2MyBiZWhhdmlvdXIKKyAgIHdoZW4gb3BlbmluZyBzZXNzaW9ucy4KKworMjAwNy0wMy0yMyAwODo1NyAgZHRzMTIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTYyNzA0OTogTmV3IEFQSSB0byBoYW5kbGUgbGFyZ2UgbnVtYmVycworICAgb2YgZmlsZSBkZXNjcmlwdG9ycy4KIAogMjAwNy0wMy0yMiAxOToxNCAgZHRzMTIKIAotCSogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgotCSAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE2ODEwMzA6IEJldHRlciBoYW5kbGluZyBvZiBlbXB0eQotCSAgYXBwdHlwZSBjb25maWdzLgorICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjgxMDMwOiBCZXR0ZXIgaGFuZGxpbmcgb2YgZW1wdHkKKyAgIGFwcHR5cGUgY29uZmlncy4KIAogMjAwNy0wMy0yMiAxOToxMiAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5oLAotCSAgYWdlbnQvc25tcGQuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY3ODc4ODogQmV0dGVyIGhhbmRsaW5nIG9mIFNNVVggc29ja2V0Ci0JICBkZXNjcmlwdG9ycy4KKyAgICogIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguaCwgICAKKyAgICAgIGFnZW50L3NubXBkLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY3ODc4ODogQmV0dGVyIGhhbmRsaW5nIG9mIFNNVVggc29ja2V0CisgICBkZXNjcmlwdG9ycy4KIAogMjAwNy0wMy0yMiAxOTowOSAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY4MzA1NDogc2V0IHVkcEVuZHBvaW50SW5zdGFuY2UgdG8KLQkgIGlkZW50aWZ5IGRpZmZlcmVudCBwcm9jZXNzZXMuCisgICAqIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY4MzA1NDogc2V0IHVkcEVuZHBvaW50SW5zdGFuY2UgdG8KKyAgIGlkZW50aWZ5IGRpZmZlcmVudCBwcm9jZXNzZXMuCiAKIDIwMDctMDMtMjEgMTI6MzUgIGR0czEyCiAKLQkqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbjoKLQkgIERlY2xhcmUgT0lEIGNvbnN0YW50cyBhcyBzdWNoIChyYXRoZXIgdGhhbiBBUEkgY2FsbHMpLgotCSAgUHJvcG9zZWQgYnkgQWxleCBCdXJnZXIKKyAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYsIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLmluOgogCi0yMDA3LTAzLTIwIDIwOjA4ICByc3RvcnkKKyAgIERlY2xhcmUgT0lEIGNvbnN0YW50cyBhcyBzdWNoIChyYXRoZXIgdGhhbiBBUEkgY2FsbHMpLgorICAgUHJvcG9zZWQgYnkgQWxleCBCdXJnZXIKIAotCSogYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmM6Ci0JICBORVdTOiBzbm1wZDogUEFUQ0g6IDE2NjY3Mzc6IGluY2x1ZGUgaXB2NiBjb3VudHMgaW4KLQkgIHVkcEluRGF0YWdyYW1zLCB1ZHBOb1BvcnRzLCB1ZHBJbkVycm9ycywgdWRwT3V0RGF0YWdyYW1zCisyMDA3LTAzLTIwIDIwOjA3ICByc3RvcnkKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYzoKKworICAgTkVXUzogc25tcGQ6IFBBVENIOiAxNjY2NzM3OiBpbmNsdWRlIGlwdjYgY291bnRzIGluCisgICB1ZHBJbkRhdGFncmFtcywgdWRwTm9Qb3J0cywgdWRwSW5FcnJvcnMsIHVkcE91dERhdGFncmFtcwogCiAyMDA3LTAzLTE5IDIyOjA5ICB0YW5kZXJzCiAKLQkqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGNwLmM6Ci0JICB1c2UgcG1GcmVlUmVzdWx0KCkgaW5zdGVhZCBvZiBmcmVlKCkKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wY3AuYzoKIAotMjAwNy0wMy0xNyAwMDoyNSAgdGFuZGVycworICAgdXNlIHBtRnJlZVJlc3VsdCgpIGluc3RlYWQgb2YgZnJlZSgpCiAKLQkqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oLAotCSAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oLAotCSAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLQkgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTY4MTA3MzogI2lmZGVmIGJhc2VkIGNvbmZpZ19lcnJvciBpbnN0ZWFkCi0JICBvZiBzcGVjaWFsIGNhc2VzIGluIGNvbmZpZ3VyZQotCSAgQmFja3BvcnQgZnJvbSBNQUlOLgorMjAwNy0wMy0xOSAwOTozOSAgdGFuZGVycworCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jOgorCisgICBnZXQgcmlkIG9mIEMrKyBjb21tZW50cwogCiAyMDA3LTAzLTE2IDE0OjA0ICBkdHMxMgogCi0JKiBkaXN0L2NoYW5nZWxvZ2ZpeCwgZGlzdC9tYWtlcmVsZWFzZSwgbG9jYWwvVmVyc2lvbi1NdW5nZS5wbDoKLQkgIENvbnZlcnQgYnVpbGQgc3lzdGVtIHRvIFNWTiB2ZXJzaW9uLgorICAgKiAgZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUywgZGlzdC9jaGFuZ2Vsb2dmaXgsIGRpc3QvbWFrZXJlbGVhc2UsICAgCisgICAgICBsb2NhbC9WZXJzaW9uLU11bmdlLnBsOgorCisgICBDb252ZXJ0IGJ1aWxkIHN5c3RlbSB0byBTVk4gdmVyc2lvbi4KKworMjAwNy0wMy0xNSAxMDo1OSAgdGFuZGVycworCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTY4MTA3MzogI2lmZGVmIGJhc2VkIGNvbmZpZ19lcnJvciBpbnN0ZWFkCisgICBvZiBzcGVjaWFsIGNhc2VzIGluIGNvbmZpZ3VyZQorCisyMDA3LTAzLTE1IDEwOjQ3ICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jOgorCisgICBnZXQgcmlkIG9mIEMrKyBjb21tZW50cwogCiAyMDA3LTAzLTE0IDIzOjMxICB0YW5kZXJzCiAKLQkqIFJFQURNRS5pcml4LCBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCwKLQkgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGNwLmMsCi0JICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BjcC5oOgotCSAgTkVXUzogSVJJWDogUEFUQ0g6IDE2NzU4Njk6IGZyb20gYmJpY2U6IENQVSBzdGF0aXN0aWNzIGZvciBJUklYCi0JICBiYXNlZCBvbiBQQ1AKKyAgICogIFJFQURNRS5pcml4LCBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGNwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BjcC5oOgorCisgICBORVdTOiBJUklYOiBQQVRDSDogMTY3NTg2OTogZnJvbSBiYmljZTogQ1BVIHN0YXRpc3RpY3MgZm9yIElSSVgKKyAgIGJhc2VkIG9uIFBDUAorCisyMDA3LTAzLTE0IDIyOjA5ICB0YW5kZXJzCisKKyAgICogIGFnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYywgYWdlbnQvaGVscGVycy9idWxrX3RvX25leHQuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCBhZ2VudC9oZWxwZXJzL2RlYnVnX2hhbmRsZXIuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYywgYWdlbnQvaGVscGVycy9udWxsLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvcm93X21lcmdlLmMsIGFnZW50L2hlbHBlcnMvc2NhbGFyLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jLCBhZ2VudC9oZWxwZXJzL3NlcmlhbGl6ZS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jLCBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjgxMDQzOiBmcm9tIG1hZ2ZyOiBjbGVhbiB1cCBoZWxwZXIKKyAgIGluY2x1ZGVzCisKKzIwMDctMDMtMTQgMjE6NTQgIHRhbmRlcnMKKworICAgKiBuZXQtc25tcC1jb25maWcuaW46CisKKyAgIENIQU5HRVM6IFBBVENIOiAxNjgxMDM1OiBmcm9tIG1hZ2ZyOiBpbXByb3ZlIG5ldC1zbm1wLWNvbmZpZworICAgL2Jpbi9zaCBjb21wYXRpYmlsaXR5CisKKzIwMDctMDMtMTQgMTg6MzEgIHRhbmRlcnMKKworICAgKiBuZXQtc25tcC1jb25maWcuaW46CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTY3ODMwMDogZnJvbSBtYWdmcjogY29tcGlsZS1zdWJhZ2VudAorICAgZG9lc24ndCBjYWxsIHNodXRkb3duXyBtZXRob2RzCiAKIDIwMDctMDMtMTQgMTY6MTIgIGR0czEyCiAKLQkqIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjQ0MjgwOiBEb24ndCBhdXRvbWF0aWNhbGx5IHByb2JlIGZvcgotCSAgdjMgRW5naW5lSURzLgorICAgKiBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjQ0MjgwOiBEb24ndCBhdXRvbWF0aWNhbGx5IHByb2JlIGZvcgorICAgdjMgRW5naW5lSURzLgogCiAyMDA3LTAzLTEzIDEwOjI2ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6Ci0JICBDaGVjayBmb3IgemVyby1zaXplIHBzZXVkby1maWxlc3lzdGVtcy4gUmVwb3J0IHRoZW0gYXMgZW1wdHkKLQkgIHJhdGhlciB0aGFuIGZ1bGwsIHNvIHRoZXkgd29uJ3QgYmUgdHJlYXRlZCBhcyBhbiBlcnJvci4KKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgogCi0yMDA3LTAzLTEzIDA5OjExICB0YW5kZXJzCi0KLQkqIHNubXBsaWIvbWliLmM6Ci0JICBCYWNrIG91dCBjaGFuZ2VzIHRvIGJyYW5jaGVzIGRvbmUgaW4gU1ZOIDE1OTUzIChwYXRjaCAxNjc4MzAyKQotCSAgYmVjYXVzZSB0aGV5IGFyZSBvbmx5IGFwcHJvcHJpYXRlIGZvciBNQUlOCisgICBDaGVjayBmb3IgemVyby1zaXplIHBzZXVkby1maWxlc3lzdGVtcy4gUmVwb3J0IHRoZW0gYXMgZW1wdHkKKyAgIHJhdGhlciB0aGFuIGZ1bGwsIHNvIHRoZXkgd29uJ3QgYmUgdHJlYXRlZCBhcyBhbiBlcnJvci4KIAogMjAwNy0wMy0xMyAwNTo1OSAgdGFuZGVycwogCi0JKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1Lmg6Ci0JICBDSEFOR0VTOiBQQVRDSDogMTY3ODMwNTogZnJvbSBtYWdmcjogRGVhbGxvY2F0ZSB0aGUgY2FjaGUgaW4KLQkgIGhhcmR3YXJlL2NwdS9jcHUgb24gc2h1dGRvd24gKGhlYWRlciBwYXJ0KQorICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1Lmg6CisKKyAgIENIQU5HRVM6IFBBVENIOiAxNjc4MzA1OiBmcm9tIG1hZ2ZyOiBEZWFsbG9jYXRlIHRoZSBjYWNoZSBpbgorICAgaGFyZHdhcmUvY3B1L2NwdSBvbiBzaHV0ZG93biAoaGVhZGVyIHBhcnQpCiAKIDIwMDctMDMtMTIgMjM6MDkgIHRhbmRlcnMKIAotCSogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLAotCSAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oOgotCSAgQ0hBTkdFUzogUEFUQ0g6IDE2NzgzMDY6IGZyb20gbWFnZnI6IERlYWxsb2NhdGUgdGhlIGxvZyBpbgotCSAgbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZworICAgKiAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oOgorCisgICBDSEFOR0VTOiBQQVRDSDogMTY3ODMwNjogZnJvbSBtYWdmcjogRGVhbGxvY2F0ZSB0aGUgbG9nIGluCisgICBub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nCiAKIDIwMDctMDMtMTIgMjM6MDQgIHRhbmRlcnMKIAotCSogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jOgotCSAgQ0hBTkdFUzogUEFUQ0g6IDE2NzgzMDU6IGZyb20gbWFnZnI6IERlYWxsb2NhdGUgdGhlIGNhY2hlIGluCi0JICBoYXJkd2FyZS9jcHUvY3B1IG9uIHNodXRkb3duCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYzoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE2NzgzMDU6IGZyb20gbWFnZnI6IERlYWxsb2NhdGUgdGhlIGNhY2hlIGluCisgICBoYXJkd2FyZS9jcHUvY3B1IG9uIHNodXRkb3duCiAKIDIwMDctMDMtMTIgMjI6NTcgIHRhbmRlcnMKIAotCSogc25tcGxpYi9taWIuYzoKLQkgIENIQU5HRVM6IFBBVENIOiAxNjc4MzAyOiBmcm9tIG1hZ2ZyOiBuZXRzbm1wX21pYmluZGV4X2xvYWQgbGVha3MKLQkgIG1lbW9yeQorICAgKiBzbm1wbGliL21pYi5jOgorCisgICBDSEFOR0VTOiBQQVRDSDogMTY3ODMwMjogZnJvbSBtYWdmcjogbmV0c25tcF9taWJpbmRleF9sb2FkIGxlYWtzCisgICBtZW1vcnkKIAogMjAwNy0wMy0xMiAyMjo1MCAgdGFuZGVycwogCi0JKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0JICBDSEFOR0VTOiBQQVRDSDogMTY3ODMwMTogZnJvbSBtYWdmcjogZGVhbGxvY2F0ZSBkb21haW4gcmVnaXN0cnkKLQkgIGF0IHNodXRkb3duCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE2NzgzMDE6IGZyb20gbWFnZnI6IGRlYWxsb2NhdGUgZG9tYWluIHJlZ2lzdHJ5CisgICBhdCBzaHV0ZG93bgogCiAyMDA3LTAzLTEyIDIyOjMxICB0YW5kZXJzCiAKLQkqIG5ldC1zbm1wLWNvbmZpZy5pbjoKLQkgIENIQU5HRVM6IFBBVENIOiAxNjc4Mjk4OiBmcm9tIG1hZ2ZyOiBjb21waWxlLXN1YmFnZW50IGNoZWNrcyBmb3IKLQkgIGJhZCBIQVZFX1NJR05BTF9ICisgICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE2NzgyOTg6IGZyb20gbWFnZnI6IGNvbXBpbGUtc3ViYWdlbnQgY2hlY2tzIGZvcgorICAgYmFkIEhBVkVfU0lHTkFMX0gKKworMjAwNy0wMy0xMiAyMTo0NyAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjY5MDQ4OiBBZGQgc3VwcG9ydCBmb3IKKyAgIGlwdjZJbnRlcmZhY2VJZGVudGlmaWVyCiAKIDIwMDctMDMtMTIgMjE6MzcgIGR0czEyCiAKLQkqIGFnZW50L2hlbHBlcnMvdGFibGUuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE0MTM3Mjg6IFJlZmVyZW5jZSBpbmRleCB2YWx1ZXMgaW4gZGVidWcKLQkgIG91dHB1dCBjb3JyZWN0bHkuCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGUuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTQxMzcyODogUmVmZXJlbmNlIGluZGV4IHZhbHVlcyBpbiBkZWJ1ZworICAgb3V0cHV0IGNvcnJlY3RseS4KIAogMjAwNy0wMy0xMiAyMTozNCAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTEwMjA1ODogU2tpcCBub24tbW91bnRlZCBkaXNrcyAoZS5nLiBzd2FwCi0JICBwYXJ0aXRpb25zKQorICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDExMDIwNTg6IFNraXAgbm9uLW1vdW50ZWQgZGlza3MgKGUuZy4gc3dhcAorICAgcGFydGl0aW9ucykKIAogMjAwNy0wMy0xMiAyMTozMCAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLAotCSAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jLAotCSAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjY4MTkzOiBVcGRhdGUgcmVnaXN0cmF0aW9uIG9mCi0JICBSZWFzbU1heFNpemUgc3VwcG9ydC4KKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjY4MTkzOiBVcGRhdGUgcmVnaXN0cmF0aW9uIG9mCisgICBSZWFzbU1heFNpemUgc3VwcG9ydC4KIAogMjAwNy0wMy0xMiAyMToyOCAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjY4MTkzOiBGaXggY2hlY2sgZm9yIHY2IFJlYXNtTWF4U2l6ZQotCSAgc3VwcG9ydC4KKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDE2NjgxOTM6IEZpeCBjaGVjayBmb3IgdjYgUmVhc21NYXhTaXplCisgICBzdXBwb3J0LgogCiAyMDA3LTAzLTEyIDE5OjU2ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY2ODk1MjogSWdub3JlIHpvbWJpZSBwcm9jZXNzZXMuCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDE2Njg5NTI6IElnbm9yZSB6b21iaWUgcHJvY2Vzc2VzLgogCiAyMDA3LTAzLTEyIDE5OjU0ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDE2NjU5ODU6IEltcGxlbWVudCBpcFJlYXNtVGltZW91dAotCSAgVGhvdWdoIHRoaXMgcmVnaXN0ZXJzIGFuIGluc3RhbmNlLCByYXRoZXIgdGhhbiB0aGUgZnVsbCBzY2FsYXIKLQkgIG9iamVjdAorICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY2NTk4NTogSW1wbGVtZW50IGlwUmVhc21UaW1lb3V0CisgICBUaG91Z2ggdGhpcyByZWdpc3RlcnMgYW4gaW5zdGFuY2UsIHJhdGhlciB0aGFuIHRoZSBmdWxsIHNjYWxhcgorICAgb2JqZWN0CiAKIDIwMDctMDMtMTIgMTk6NTEgIGR0czEyCiAKLQkqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jLCBzbm1wbGliL3ZhY20uYzoKLQkgIENIQU5HRVM6IGxpYnJhcnk6IFBBVENIRVM6IDE2NjU1NDM6IEhhbmRsZSBWQUNNIGNoZWNrcyBjb3JyZWN0bHkuCi0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY2NTU0OTogSGFuZGxlIGNyZWF0aW5nIFZBQ00gZW50cmllcwotCSAgY29ycmVjdGx5LgotCSAgW0JvdGggcGF0Y2hlcyBhcmUgcmVxdWlyZWQgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uXQorICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywgc25tcGxpYi92YWNtLmM6CisKKyAgIENIQU5HRVM6IGxpYnJhcnk6IFBBVENIRVM6IDE2NjU1NDM6IEhhbmRsZSBWQUNNIGNoZWNrcyBjb3JyZWN0bHkuCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY2NTU0OTogSGFuZGxlIGNyZWF0aW5nIFZBQ00gZW50cmllcworICAgY29ycmVjdGx5LgorICAgW0JvdGggcGF0Y2hlcyBhcmUgcmVxdWlyZWQgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uXQogCiAyMDA3LTAzLTEyIDE5OjQ3ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjU5NjIzOiBIYW5kbGUgU01VWCBwZWVycyB3aXRoIGFuIGVtcHR5Ci0JICBwYXNzd29yZC4KKyAgICogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjU5NjIzOiBIYW5kbGUgU01VWCBwZWVycyB3aXRoIGFuIGVtcHR5CisgICBwYXNzd29yZC4KKworMjAwNy0wMy0xMiAxOTo0NCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjU3NzQxOiBIYW5kbGUgNjQtYml0IHR5cGVzIHZpYSBwYXNzCisgICBtZWNoYW5pc20uCiAKIDIwMDctMDMtMTIgMTk6NDAgIGR0czEyCiAKLQkqIGFnZW50L2FnZW50X3RyYXAuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjQ0MjgwOiBVc2UgdGhlIGNvcnJlY3QgZW5naW5lSUQgd2hlbgotCSAgc2VuZGluZyB2MyB0cmFwcy4KKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY0NDI4MDogVXNlIHRoZSBjb3JyZWN0IGVuZ2luZUlEIHdoZW4KKyAgIHNlbmRpbmcgdjMgdHJhcHMuCiAKIDIwMDctMDMtMTIgMTk6MzIgIGR0czEyCiAKLQkqIHNubXBsaWIvc25tcF9hcGkuYzoKLQkgIENIQU5HRVM6IGxpYnJhcnk6IFBBVENIRVM6IDE2NDIwNzE6IERvbid0IGZpZGRsZSB3aXRoIHRoZSBzdG9yYWdlCi0JICBvZiBwcmUtZXhpc3RpbmcgdXNlcnMuCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQ0hBTkdFUzogbGlicmFyeTogUEFUQ0hFUzogMTY0MjA3MTogRG9uJ3QgZmlkZGxlIHdpdGggdGhlIHN0b3JhZ2UKKyAgIG9mIHByZS1leGlzdGluZyB1c2Vycy4KIAogMjAwNy0wMy0xMiAxOTozMCAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDE2NDE4NjU6IERvbid0IGRvdWJsZSBjaGVjayBzbm1wVHJhcE9JRAotCSAgaW4gdGhlIGZpbHRlciB0YWJsZS4KKyAgICogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY0MTg2NTogRG9uJ3QgZG91YmxlIGNoZWNrIHNubXBUcmFwT0lECisgICBpbiB0aGUgZmlsdGVyIHRhYmxlLgogCiAyMDA3LTAzLTEyIDE5OjI1ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuYywKLQkgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTYzOTcyNjogUmVwb3J0IHBoeXNpY2FsIG1lbW9yeQotCSAgY29ycmVjdGx5IG9uICpCU0QKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDE2Mzk3MjY6IFJlcG9ydCBwaHlzaWNhbCBtZW1vcnkKKyAgIGNvcnJlY3RseSBvbiAqQlNECisKKzIwMDctMDMtMDkgMjE6MzEgIHRhbmRlcnMKKworICAgKiBzbm1wbGliL21pYi5jOgorCisgICBDSEFOR0VTOiBQQVRDSDogMTY3NDI5OTogZnJvbSBtYWdmcjogTGVzc2VuIHRoZSBzY29wZSBvZiB0aGUgem9uZQorICAgdmFyaWFibGUgaW4gZHVtcF9yZWFsbG9jX29pZF90b19pbmV0YWRkcmVzcworCisyMDA3LTAzLTA5IDIxOjI5ICB0YW5kZXJzCisKKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgorCisgICBDSEFOR0VTOiBQQVRDSDogMTY3NDMwMjogZnJvbSBtYWdmcjogTGVzc2VuIHRoZSBzY29wZSBvZiB0aGUgbGVuCisgICB2YXJpYWJsZSBpbiBjb252ZXJ0X3YycGR1X3RvX3YxCiAKIDIwMDctMDMtMDggMTU6NTIgIGR0czEyCiAKLQkqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL25ldGJzZC5oLAotCSAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oOgotCSAgSW5jbHVkZSBIb3N0IFJlc291cmNlcyBNSUIgb24gTmV0QlNEIGFuZCBPcGVuQlNECisgICAqICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaDoKKworICAgSW5jbHVkZSBIb3N0IFJlc291cmNlcyBNSUIgb24gTmV0QlNEIGFuZCBPcGVuQlNECisKKzIwMDctMDMtMDcgMDk6NDMgIHRhbmRlcnMKKworICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6CisKKyAgIENIQU5HRVM6IFBBVENIOiAxNjc0Mjk4OiBmcm9tIG1hZ2ZyOiBSZW1vdmUgdW51c2VkIHNpbmtwb3J0CisgICB2YXJpYWJsZQogCiAyMDA3LTAzLTA2IDEzOjUxICBkdHMxMgogCi0JKiBhZ2VudC9zbm1wX2FnZW50LmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxMTU5OTA4OiBGaXggbWVtb3J5IGxlYWsKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgogCi0yMDA3LTAzLTAyIDIyOjU4ICB0YW5kZXJzCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxMTU5OTA4OiBGaXggbWVtb3J5IGxlYWsKIAotCSogc25tcGxpYi9NU0cwMDAwMS5iaW46Ci0JICBkZS1tYW5nZSBiaW5hcnkgZmlsZQorMjAwNy0wMy0wMiAyMjo0MCAgdGFuZGVycworCisgICAqIHNubXBsaWIvTVNHMDAwMDEuYmluOgorCisgICBubyBlb2wtc3R5bGUgZm9yIGJpbmFyeSBmaWxlcworCisyMDA3LTAzLTAyIDIyOjI2ICB0YW5kZXJzCisKKyAgICogZG9jL3JmYy9zbWlWMi9yZmMyNTc5LmVycmF0YX46CisKKyAgIGRvbid0IHNoaXAgZWRpdG9yIGJhY2t1cCBjb3BpZXMKKworMjAwNy0wMy0wMiAxNjoyMCAgdGFuZGVycworCisgICAqIHNubXBsaWIvTVNHMDAwMDEuYmluOgorCisgICBmbGFnIGFzIGJpbmFyeQogCiAyMDA3LTAzLTAyIDEyOjQ0ICB0YW5kZXJzCiAKLQkqIENvZGluZ1N0eWxlOgotCSAgZml4IHR5cG8KKyAgICogQ29kaW5nU3R5bGU6CisKKyAgIGZpeCB0eXBvCisKKzIwMDctMDMtMDIgMDk6NTcgIGR0czEyCisKKyAgICogVE9ETzoKKworICAgTWlub3IgdHdlYWsgLSBwbGF5aW5nIHdpdGggU1ZOIGFzIG11Y2ggYXMgYW55dGhpbmcuLi4uCisKKzIwMDctMDMtMDEgMjM6NTcgIGhhcmRha2VyCisKKyAgICogTkVXUzoKKworICAgbWVudGlvbiB0aGF0IHdlIG1vdmVkIHRvIFNWTgogCiAyMDA3LTAyLTI4IDE1OjI3ICBkdHMxMgogCi0JKiBDSEFOR0VTLCBDaGFuZ2VMb2csIE5FV1M6Ci0JICBDaGVja3BvaW50IHN1bW1hcnkgb2YgQ1ZTIGNoYW5nZXMsIHByZXBhcmF0b3J5IGZvciB0aGUgU1ZOCi0JICBzd2l0Y2guCisgICAqIENIQU5HRVMsIENoYW5nZUxvZywgTkVXUzoKIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1DaGFuZ2VzOiBWNS40IC0+IFNWTiBjaGVja3BvaW50IChWNS00LXBhdGNoZXMgYnJhbmNoKQorICAgQ2hlY2twb2ludCBzdW1tYXJ5IG9mIENWUyBjaGFuZ2VzLCBwcmVwYXJhdG9yeSBmb3IgdGhlIFNWTgorICAgc3dpdGNoLgogCiAyMDA3LTAyLTI3IDEzOjM2ICByc3RvcnkKIApAQCAtODM1MSwxNyArMTg1NjcsMTIgQEAKIAogICAgYWRkIGhlYWRlciBmb3IgZWFzaWVyIGNvbmZpZ3VyZSAtLXdpdGgtbWliLW1vZHVsZQogCi0yMDA3LTAyLTI3IDEyOjM0ICByc3RvcnkKLQotICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUuaDoKLQotICAgZmlsZSBpcEFkZHJlc3NQcmVmaXhUYWJsZS5oIHdhcyBhZGRlZCBvbiBicmFuY2ggVjUtNC1wYXRjaGVzIG9uIDIwMDctMDItMjcgMTI6MzQ6NTkgKzAwMDAKLQotMjAwNy0wMi0yNiAxNDo1NSAgZHRzMTIKKzIwMDctMDItMjYgMTQ6NTQgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6CiAKICAgIFJlLWNvcnJlY3QgaW50ZXJwcmV0YXRpb24gb2YgIm51bGwgT0lEIiBpbiB0aGUgQWdlbnRYIHNwZWNzLgorICAgKGZvciB0aGUgbGFzdCB0aW1lLCBJIHRydXN0ISkKIAogMjAwNy0wMi0yNiAxNDozNyAgZHRzMTIKIApAQCAtODM3MywxNSArMTg1ODQsMTUgQEAKIAogICAgKiBwZXJsLzogQVNOL01ha2VmaWxlLlBMLCBPSUQvTWFrZWZpbGUuUEwsCiAgICAgIFNOTVAvTWFrZWZpbGUuUEwsIFRyYXBSZWNlaXZlci9NYWtlZmlsZS5QTCwKLSAgICAgYWdlbnQvTWFrZWZpbGUuUEwsIGFnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwKLSwgZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTDoKKyAgICAgYWdlbnQvTWFrZWZpbGUuUEwsIGFnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsCisgICAgIGRlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEw6CiAKICAgIFByb21wdGluZyBmb3IgYSBzaW5nbGUgZGlyZWN0b3J5LCBub3QgYW4gYXJyYXkuCiAKIDIwMDctMDItMjYgMTE6MzIgIGR0czEyCiAKLSAgICogbG9jYWwvOiBtaWIyYy5jb250YWluZXIuY29uZiwgbWliMmMuaXRlcmF0ZS5jb25mCi0sIG1pYjJjLnRhYmxlX2RhdGEuY29uZjoKKyAgICogbG9jYWwvOiBtaWIyYy5jb250YWluZXIuY29uZiwgbWliMmMuaXRlcmF0ZS5jb25mLAorICAgICBtaWIyYy50YWJsZV9kYXRhLmNvbmY6CiAKICAgIENIQU5HRVM6IG1pYjJjOiBCVUc6IDE0Mjk0NzI6IFByb3RlY3QgYWdhaW5zdCBtaXNzaW5nIGluc3RhbmNlcyAoYW5kIGludmFsaWQgb2JqZWN0cykKIApAQCAtODM5OSwxNSArMTg2MTAsMTUgQEAKIAogMjAwNy0wMi0yMyAyMTo1MyAgdGFuZGVycwogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorICAgKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKIAogICAgYWRkIHF1b3RlcyB0byBmaXggc2hlbGwgc3ludGF4IGVycm9yIHdoZW4gZW1wdHkKIAotMjAwNy0wMi0yMiAyMjo0NyAgdGFuZGVycworMjAwNy0wMi0yMiAyMjozNSAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgogCi0gICBMYXN0IGNvbW1pdCBicm9rZSB0aGUgYnVpbGQuIE5vdyBlc2NhcGUgYmFja3NsYXNoZXMgcHJvcGVybHkuIFBsZWFzZSByZW1lbWJlciB0byB1c2UgYXV0b2NvbmYgMi41OSBmb3IgdGhlIHBhdGNoZXMgYnJhbmNoZXMhCisgICBMYXN0IGNvbW1pdCBicm9rZSB0aGUgYnVpbGQuIE5vdyBlc2NhcGUgYmFja3NsYXNoZXMgcHJvcGVybHkuCiAKIDIwMDctMDItMjIgMTU6MzggIGR0czEyCiAKQEAgLTg0NTIsMjAgKzE4NjYzLDE3IEBACiAKICAgIENIQU5HRVM6IGJ1aWxkOiBCVUc6IDEwOTYxNjY6IEhhbmRsZSAtLXdpdGhvdXQtbG9nZmlsZSBjb3JyZWN0bHkuCiAKLTIwMDctMDItMTkgMTY6MzYgIGR0czEyCi0KLSAgICogZGlzdC86IE1ha2VmaWxlLCBuc2ItY29uZmlnLCBuc2ItZnVuY3Rpb25zCi0sIG5zYi1uaWdodGx5LCBuc2ItcGFja2FnZSwKLSAgICAgbnNiLXBsYXRmb3JtLCBwYXRtZSwgUkVBRE1FLmJ1aWxkLXNjcmlwdHMKLToKLQotICAgcmVtb3ZlZCBkaXN0IGZpbGVzIG9ubHkgdG8gYmUgZGlzdHJpYnV0ZWQgaW4gdGhlIG1haW4gQ1ZTIGJyYW5jaAotCi0yMDA3LTAyLTE5IDE2OjMwICBkdHMxMgorMjAwNy0wMi0xOSAxNjozNCAgZHRzMTIKIAogICAgKiBkaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TOgogCi0gICBSZWxlYXNlIEluc3RydWN0aW9ucyBvbmx5IHRvIGJlIGRpc3RyaWJ1dGVkIGluIHRoZSBtYWluIENWUyBicmFuY2gKKyAgIE1lbnRpb24gcmVtb3ZhbCBmcm9tIENWUyBvZiBkZWxldGVkIGZpbGVzCisKKzIwMDctMDItMTkgMTU6NTYgIGR0czEyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgUmV3b3JrIHJlbGVhc2UgaW5zdHJ1Y3Rpb25zIHRvIHRha2UgYWNjb3VudCBvZiAibWFrZXJlbGVhc2UiIHNjcmlwdAogCiAyMDA3LTAyLTE5IDEwOjQ5ICBkdHMxMgogCkBAIC04NDg0LDcgKzE4NjkyLDcgQEAKICAgICogTWFrZWZpbGUuaW46CiAKICAgIERvbid0IGludm9rZSAndmVyc2lvbnRhZycgZm9yIHRhZ2dpbmcgdGhlIENWUyB0cmVlLgotICAgSXQgZG9lc24ndCBoYW5kbGUgdGhpcyBhbnkgbW9yZS4gKFVzZSAnbWFrZXJlbGVhc2UnIGluc3RlYWQpCisgICBJdCBkb2Vzbid0IGhhbmRsZSB0aGlzIGFueSBtb3JlLiAgKFVzZSAnbWFrZXJlbGVhc2UnIGluc3RlYWQpCiAKIDIwMDctMDItMTkgMTA6MDIgIGR0czEyCiAKQEAgLTg1NDUsMTEgKzE4NzUzLDQ4IEBACiAKICAgIGFkZGVkIHRoZSBmbG93IGxhYmxlIG1pYiwgd2hpY2ggdGhlIHR1bm5lbC1taWIgcmVmZXJzIHRvCiAKLTIwMDctMDItMDcgMTc6MTcgIGhhcmRha2VyCisyMDA3LTAyLTA1IDIzOjAyICB0YW5kZXJzCiAKLSAgICogbWlicy9JUFY2LUZMT1ctTEFCRUwtTUlCLnR4dDoKKyAgICogZGlzdC9uc2ItZnVuY3Rpb25zOgogCi0gICBmaWxlIElQVjYtRkxPVy1MQUJFTC1NSUIudHh0IHdhcyBhZGRlZCBvbiBicmFuY2ggVjUtNC1wYXRjaGVzIG9uIDIwMDctMDItMDcgMTc6MTk6MTAgKzAwMDAKKyAgIG1vcmUgcG9ydGFiaWxpdHkgZml4ZXMKKworMjAwNy0wMi0wNSAyMjo1MCAgdGFuZGVycworCisgICAqIGRpc3QvY2hlY2stYXBpLWNoYW5nZToKKworICAgdXNlIC9iaW4vc2ggdW5sZXNzIGJhc2ggZmVhdHVyZXMgYXJlIHJlYWxseSBuZWVkZWQKKworMjAwNy0wMi0wNSAyMTo1MiAgcnN0b3J5CisKKyAgICogTWFrZWZpbGUudG9wOgorCisgICBub3RlIHRoYXQgY3VycmVudCBzaG91bGQgYmUgYnVtcGVkIGJ5IDUgd2hlbiBidW1wZWQKKworMjAwNy0wMi0wNSAyMTo0OSAgcnN0b3J5CisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgLSBub3RlIHRoYXQgY3VycmVudCBzaG91bGQgYmUgYnVtcGVkIGJ5IDUgd2hlbiB1cGRhdGVkCisgICAtIGFkZCBwb2ludGVyIHRvIG5ldyBjaGVjay1hcGktY2hhbmdlcyBzY3JpcHQKKworMjAwNy0wMi0wNSAyMTo0NiAgcnN0b3J5CisKKyAgICogZGlzdC9jaGVjay1hcGktY2hhbmdlOgorCisgICBzaW1wbGlzdGljIG5ldyBzY3JpcHQgdG8gaGVscCBjaGVjayBmb3IgYXBpIGNoYW5nZXMgYmV0d2VlbiByZWxlYXNlcworCisyMDA3LTAyLTA1IDIxOjM4ICByc3RvcnkKKworICAgKiBhZ2VudC9taWJncm91cC9zdHJ1Y3QuaDoKKworICAgbWFrZSBuZXcgc3RydWN0IG1lbWJlciBjb25kaXRpb25hbCwgc2luY2UgdXNlIGlzIGNvbmRpdGlvbmFsCisKKzIwMDctMDItMDUgMjE6MjAgIHRhbmRlcnMKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6CisKKyAgIG1vdmUgZnVuY3Rpb24gY2FsbCBvdXQgb2YgYXNzZXJ0CiAKIDIwMDctMDItMDUgMTU6MTYgIGR0czEyCiAKQEAgLTg1NTgsMTYgKzE4ODAzLDkgQEAKICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjQxODk1OiBFeHRlbmQgc2hvcnQgdmlldyBtYXNrcyAoYXMgcGVyIFJGQyBzcGVjcykKICAgIFBhdGNoIHN1cHBsaWVkIGJ5IE1pY2hhZWwgS2lya2hhbS4KIAotMjAwNy0wMi0wNSAxNToxMCAgcnN0b3J5CisyMDA3LTAyLTA1IDE0OjMxICBkdHMxMgogCi0gICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzoKLQotICAgbW92ZSBmdW5jdGlvbiBjYWxsIG91dCBvZiBhc3NlcnQKLQotMjAwNy0wMi0wNSAxNDozOCAgZHRzMTIKLQotICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jCi06CisgICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmM6CiAKICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTYzOTM2MDogRml4IHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUgcm93IGNyZWF0aW9uLgogICAgUGF0Y2ggc3VwcGxpZWQgYnkgTWljaGFlbCBLaXJraGFtLgpAQCAtODU3OSwyNiArMTg4MTcsODMgQEAKICAgIEZpeCBjb21waWxhdGlvbiBpZiBMT0NLX1BFUl9DQUxMQkFDS19TVUJJRCBub3QgZGVmaW5lZC4KICAgIFJlcG9ydGVkIGJ5IEVtaSBZYW5hZ2kKIAorMjAwNy0wMi0wNSAwOTo0OCAgZHRzMTIKKworICAgKiBGQVE6CisKKyAgIFNwZWxsaW5nIGNvcnJlY3Rpb246ICdzdXBlcmNlZGVkJyAtPiAnc3VwZXJzZWRlZCcKKyAgIChPaCwgdGhlIHNoYW1lIG9mIGl0ISkKKwogMjAwNy0wMS0zMSAxMzo1MSAgdGFuZGVycwogCiAgICAqIE1ha2VmaWxlLnRvcDoKIAogICAgQ0hBTkdFUzogYnVpbGQ6IEJVRzogMTY0Nzk3NjogQ3lnd2luL01pbkdXIFdpbmRvd3MgYnVpbGQgZmFpbHMgZHVlIHRvIGxpYnRvb2wgZXJyb3IKIAotMjAwNy0wMS0zMCAxMzo0MyAgdGFuZGVycworMjAwNy0wMS0zMCAxMzozOSAgdGFuZGVycwogCiAgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYzoKIAogICAgQ0hBTkdFUzogYnVpbGQ6IHlldCBhbm90aGVyIGZpeCB0byBhZGRyZXNzIGJ1aWxkIGlzc3VlcyB3aXRoIGV0aHRvb2wgKG9uIFJIOSkuCiAgICBQYXRjaCBwcm92aWRlZCBieSBNYWdudXMgRnJvbXJlaWRlLgogCisyMDA3LTAxLTMwIDA5OjEwICBkdHMxMgorCisgICAqIEZBUToKKworICAgQ2xhcmlmeSB3aGVuIHN5bWxpbmsgZml4IGlzL2lzbid0IGFwcHJvcHJpYXRlLiAgU3luY2ggd2l0aCBXaWtpLgorCisyMDA3LTAxLTI5IDExOjEyICBkdHMxMgorCisgICAqIEZBUToKKworICAgQXV0aGVudGljYXRlZCBTTk1QdjMgcmVxdWVzdHMgc3RpbGwgbmVlZCBhIHVzZXJuYW1lLiAgKFN5bmNoIHdpdGggV2lraSkKKwogMjAwNy0wMS0yOSAxMTowMyAgdGFuZGVycwogCi0gICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6CisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMsIGFnZW50L2hlbHBlcnMvdGFibGUuYworOgogCiAgICBnZXQgcmlkIG9mIEMrKyBjb21tZW50cwogCi0yMDA3LTAxLTI1IDIyOjQ1ICB0YW5kZXJzCisyMDA3LTAxLTI4IDEzOjM2ICB0YW5kZXJzCisKKyAgICogZGlzdC9uc2ItZnVuY3Rpb25zOgorCisgICBmaXggYmFkIHRlc3QKKworMjAwNy0wMS0yOCAxMzowNiAgdGFuZGVycworCisgICAqIGRpc3QvbnNiLWZ1bmN0aW9uczoKKworICAgcmVuYW1lIHZhcmlhYmxlIHRvIHJlc29sdmUgbmFtZSBjbGFzaCBhbmQgdG8gdW5icmVhayBuaWdodGx5IGJ1aWxkcyBvbiBTb2xhcmlzCisKKzIwMDctMDEtMjggMTI6NTIgIHRhbmRlcnMKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmM6CisKKyAgIGdldCByaWQgb2YgQysrIGNvbW1lbnRzCisKKzIwMDctMDEtMjcgMTQ6NDAgIHRhbmRlcnMKKworICAgKiBkaXN0L25zYi1uaWdodGx5OgorCisgICBmaXggdHlwbworCisyMDA3LTAxLTI3IDE0OjIzICB0YW5kZXJzCisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmM6CisKKyAgIGdldCByaWQgb2YgQysrIGNvbW1lbnRzCisKKzIwMDctMDEtMjYgMTE6MTUgIHRhbmRlcnMKKworICAgKiBkaXN0LzogbnNiLWNvbmZpZywgbnNiLWZ1bmN0aW9ucywgbnNiLW5pZ2h0bHkKKywgbnNiLXBhY2thZ2U6CisKKyAgIG1vcmUgQm91cm5lIHNoZWxsIGNvbXBhdGliaWxpdHkgZml4ZXMKKworMjAwNy0wMS0yNSAyMjo0MSAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgogCkBAIC04NjEyLDYgKzE4OTA3LDcgQEAKIAogMjAwNy0wMS0yNSAyMjowNSAgdGFuZGVycwogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX3N1YmFnZW50LmMKICwgbG9jYWwvbWliMmMtY29uZi5kL3N1YmFnZW50Lm0yYzoKIApAQCAtODYyOSwxMiArMTg5MjUsNzAgQEAKIAogICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjQ0NzE0OiBmcm9tICJMZWxhbmQgV2FsbGFjZSI6IHJlcGxhY2UgbGFzdCByZW1haW5pbmcgaW5zdGFuY2Ugb2YgZGVwcmVjYXRlZCBjb3B5X3dvcmQgYnkgY29weV9ud29yZAogCisyMDA3LTAxLTI1IDE1OjMwICB0YW5kZXJzCisKKyAgICogZGlzdC86IG5zYi1jb25maWcsIG5zYi1mdW5jdGlvbnMsIG5zYi1uaWdodGx5CissIG5zYi1wYWNrYWdlLCBuc2ItcGxhdGZvcm06CisKKyAgIG1hbnkgQm91cm5lIHNoZWxsIHBvcnRhYmlsaXR5IGZpeGVzCisKKzIwMDctMDEtMjQgMTY6MzkgIGR0czEyCisKKyAgICogZGlzdC86IG5zYi1jb25maWcsIG5zYi1mdW5jdGlvbnMsIG5zYi1uaWdodGx5CissIG5zYi1wYWNrYWdlLCBuc2ItcGxhdGZvcm06CisKKyAgIFByZS1Qb3NpeCBCb3VybmUgc2hlbGwgY29tcGF0YWJpbGl0eS4KKwogMjAwNy0wMS0yNCAxNDowMiAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CiAKICAgIFR3ZWFrIGRlYnVnIG91dHB1dAogCisyMDA3LTAxLTI0IDEzOjU4ICBkdHMxMgorCisgICAqIGxvY2FsL21pYjJjLXVwZGF0ZToKKworICAgU2hlbGxzY3JpcHQgcG9ydGFiaWxpdHkuICAoRXZlcnl0aGluZyBoYXMgL2Jpbi9zaCkKKworMjAwNy0wMS0yNCAxMzo0OSAgZHRzMTIKKworICAgKiBkaXN0LzogY3Zzc2hvdywgY3ZzdXAsIG5zYi1jb25maWcsCisgICAgIG5zYi1mdW5jdGlvbnMsIG5zYi1uaWdodGx5LCBuc2ItcGFja2FnZSwKKyAgICAgbnNiLXBsYXRmb3JtOgorCisgICBJbXByb3ZlIHNoZWxsLXNjcmlwdCBwb3J0YWJpbGl0eS4gKEV2ZXJ5dGhpbmcgaGFzIC9iaW4vc2ghKQorCisyMDA3LTAxLTI0IDEzOjQwICBkdHMxMgorCisgICAqIHNubXBsaWIvOiBzbm1wVURQRG9tYWluLmMsIHNubXBfY2xpZW50LmM6CisKKyAgIEV4dHJhIGRlYnVnZ2luZyBvdXRwdXQKKworMjAwNy0wMS0yNCAxMzozOCAgZHRzMTIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmMKKywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMsCisgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCissIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgsCisgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaDoKKworICAgUHJlbGltaW5hcnkgdGFibGUgdW5yZWdpc3RyYXRpb24gQVBJLgorCisyMDA3LTAxLTI0IDEzOjExICBkdHMxMgorCisgICAqIGFwcHMvc25tcHRyYXBkX2xvZy5jOgorCisgICBNb3ZlIGhvc3RuYW1lIHRyYW5zbGF0aW9uIGludG8gdGhlIHRyYW5zcG9ydC1zcGVjaWZpYyBsaWJyYXJ5IHJvdXRpbmVzLgorICAgKFdoZXJlIGl0IGJlbG9uZ3MhKQorCisyMDA3LTAxLTI0IDEzOjA0ICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oLAorICAgICBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKKworICAgQmFzaWMgZnJhbWV3b3JrIGZvciB0cmFuc3BvcnQtc3BlY2lmaWMgdHJhbnNsYXRpb24gb2YgaG9zdG5hbWVzLgorCiAyMDA3LTAxLTI0IDEyOjI3ICBkdHMxMgogCiAgICAqIGFwcHMvc25tcHRyYXBkX2xvZy5jOgpAQCAtODY1MSw4ICsxOTAwNSw3IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvOgogICAgICBpcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jCi0sIGlwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYwotLAorLCBpcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsCiAgICAgIGlwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKICwKICAgICAgaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCkBAIC04NzAyLDYgKzE5MDU1LDcgQEAKIAogICAgQ0hBTkdFUzogc25tcHRyYXBkOiBCVUc6IDE2MzgyMjU6IEZpeCBpbnRlcnByZXRhdGlvbiBvZiB0cmFuc3BvcnQgYWRkcmVzcyBkYXRhLgogICAgKEtlZXAgdGhpcyBjb25zaXN0ZW50IHdpdGggc25tcFVEUERvbWFpbi5jKQorICAgVGhpcyBkb2VzIG5vdCBmZWVsIHRoZSByaWdodCB3YXkgdG8gaGFuZGxlIHRoaXMhCiAKIDIwMDctMDEtMjMgMTQ6MTAgIGR0czEyCiAKQEAgLTg3MzAsOCArMTkwODQsNyBAQAogCiAyMDA3LTAxLTIyIDE2OjE2ICBkdHMxMgogCi0gICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC86IG1hc3Rlcl9hZG1pbi5jLCBtYXN0ZXIuYwotOgorICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvOiBtYXN0ZXIuYywgbWFzdGVyX2FkbWluLmM6CiAKICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY0MTY4NTogSGFuZGxlIHVucmVzcG9uc2l2ZSBBZ2VudFggc3ViYWdlbnRzIG1vcmUgcmVsaWFibHkuCiAgICBGaXggcHJvdmlkZWQgYnkgSm9zZWYgTW9lbGxlcnMKQEAgLTg3NTgsNyArMTkxMTEsMTQgQEAKICAgIENIQU5HRVM6IEZyZWVCU0Q6IEJVRzogMTYzMzQ4MzogU3VwcG9ydCBDUFUgSEFMIG9uIEZyZWVCU0Q0LngKICAgIChiZWZvcmUgQ1BVIGRlZmluaXRpb25zIHdlcmUgbW92ZWQgdG8gPHN5cy9yZXNvdXJjZS5oPikKIAotMjAwNy0wMS0xOSAxNDoyMiAgdGFuZGVycworMjAwNy0wMS0xOSAxNjoxNSAgZHRzMTIKKworICAgKiBhcHBzL3NubXB0cmFwZC5jOgorCisgICBsaWJyYXJ5IGxheWVyaW5nIGltcHJvdmVtZW50czogKm1vdmUqIChyYXRoZXIgdGhhbiBjb3B5KSBnbG9iYWwgdmFyaWFibGVzCisgICBmcm9tIHNubXB0cmFwZCB0byBsaWJuZXRzbm1wdHJhcGQKKworMjAwNy0wMS0xOSAxNDoxOCAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLAogICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6CkBAIC04NzY4LDEzICsxOTEyOCwyNiBAQAogCiAyMDA3LTAxLTE5IDExOjI1ICB0YW5kZXJzCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW4sCisgICAqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlLAogICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLAogICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywKICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmM6CiAKICAgIENIQU5HRVM6IGJ1aWxkOiBhZGQgY29uZmlndXJlIGNoZWNrIGZvciBoYXNtbnRvcHQgdG8gZml4IHRoZSBidWlsZCBvbiBzeXN0ZW1zIHRoYXQgbGFjayBpdAogCisyMDA3LTAxLTE4IDEyOjUwICB0YW5kZXJzCisKKyAgICogYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYzoKKworICAgbGlicmFyeSBsYXllcmluZyBpbXByb3ZlbWVudHM6IG1vdmUgZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIHNubXB0cmFwZCB0byBsaWJuZXRzbm1wdHJhcGQKKworMjAwNy0wMS0xOCAxMToxMyAgdGFuZGVycworCisgICAqIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMsCisgICAgIG1hbi9zbm1wdHJhcGQuOC5kZWYsIG1hbi9zbm1wdHJhcGQuY29uZi41LmRlZjoKKworICAgZHJvcCAiLWUiL3ByaW50RXZlbnROdW1iZXJzIHN1cHBvcnQgZm9yIHNubXB0cmFwZCAob2Jzb2xldGUsIGRlcHJlY2F0ZWQgYW5kIGJyZWFrcyBsaWJyYXJ5IGxheWVyaW5nKQorCiAyMDA3LTAxLTE2IDEwOjA0ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYzoKQEAgLTg3OTUsNiArMTkxNjgsMTIgQEAKIAogICAgRG9uJ3QgaGFyZGNvZGUgdGhlIHNpemUgb2YgY291bnRlcjY0IHN0cnVjdHVyZSAobWF5IGJlIHdyb25nIG9uIDY0LWJpdCBib3hlcykKIAorMjAwNy0wMS0xNiAwOTowMCAgZHRzMTIKKworICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6CisKKyAgIEV4dHJhIGRlYnVnZ2luZyBvdXRwdXQuCisKIDIwMDctMDEtMTEgMjI6MTMgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsCkBAIC04ODA0LDEwICsxOTE4MywxNiBAQAogCiAgICBDSEFOR0VTOiBzbm1wbGliOiBsaWJyYXJ5IGxheWVyaW5nIGltcHJvdmVtZW50czogaW50cm9kdWNlIG5ldHNubXBfbWt0ZW1wIHRvIHByZXZlbnQgbGlibmV0c25tcGFnZW50IGZyb20gZGVwZW5kaW5nIG9uIGxpYm5ldHNubXBtaWJzCiAKKzIwMDctMDEtMTEgMjE6MzUgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLmluOgorCisgICBjaGFuZ2VkIGF1dG9jb25mIHJlcSB0byAyLjYxCisKIDIwMDctMDEtMTEgMjE6MjggIGhhcmRha2VyCiAKLSAgICogc25tcGxpYi86IHNubXBBQUw1UFZDRG9tYWluLmMsIHNubXBJUFhEb21haW4uYwotLCBzbm1wU1RERG9tYWluLmMsIHNubXBUQ1BEb21haW4uYywKKyAgICogc25tcGxpYi86IHNubXBBQUw1UFZDRG9tYWluLmMsIHNubXBJUFhEb21haW4uYywKKyAgICAgc25tcFNURERvbWFpbi5jLCBzbm1wVENQRG9tYWluLmMsCiAgICAgIHNubXBUQ1BJUHY2RG9tYWluLmMsIHNubXBVRFBEb21haW4uYywKICAgICAgc25tcFVEUElQdjZEb21haW4uYywgc25tcF9zZXJ2aWNlLmMsCiAgICAgIHNubXBfdHJhbnNwb3J0LmM6CkBAIC04ODMyLDYgKzE5MjE3LDEyIEBACiAKICAgIENIQU5HRVM6IFNvbGFyaXM6IElGLU1JQiBmaXg6IGFkZCBtaXNzaW5nIHJldHVybiBhdCBlbmQgb2YgZ2V0X2lmX3N0YXRzCiAKKzIwMDctMDEtMDggMDg6MzAgIHRhbmRlcnMKKworICAgKiBhZ2VudC9NYWtlZmlsZS5pbjoKKworICAgQ0hBTkdFUzogYnVpbGQ6IGxpYnJhcnkgbGF5ZXJpbmcgaW1wcm92ZW1lbnRzOiBidWlsZCBsaWJyYXJpZXMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgKGxpYm5ldHNubXBhZ2VudCBiZWZvcmUgbGlibmV0c25tcGhlbHBlcnMgYmVmb3JlIGxpYm5ldHNubXBtaWJzKQorCiAyMDA3LTAxLTA3IDE5OjQ3ICB0YW5kZXJzCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oOgpAQCAtODg0NSw3ICsxOTIzNiw3IEBACiAgICBDSEFOR0VTOiBTb2xhcmlzOiBCVUc6IDE2MjYxNTM6IG5vIGhyU1dSdW4gaW5mb3JtYXRpb25zIG9uIFNvbGFyaXMgem9uZXMKICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEtsYXVzIE11ZWhsZmVsZAogCi0yMDA3LTAxLTA2IDAwOjM0ICB0YW5kZXJzCisyMDA3LTAxLTA2IDAwOjMwICB0YW5kZXJzCiAKICAgICogcGVybC9hZ2VudC9hZ2VudC54czoKIApAQCAtODg1NywxMiArMTkyNDgsMTcgQEAKIAogICAgZ2V0IHJpZCBvZiBDKysgY29tbWVudHMKIAotMjAwNy0wMS0wMyAyMjoyMyAgdGFuZGVycworMjAwNy0wMS0wMiAyMzozMyAgdGFuZGVycwogCi0gICAqIHBlcmwvU05NUC86IFNOTVAueHMsIHQvY29uZi50OgorICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgogCi0gICBjbGVhbiB1cCBjb21waWxlIGFuZCBmaXggdGVzdHMuCi0gICBCYWNrcG9ydCBmcm9tIDUuNS5kZXYKKyAgIEJVRzogQ292ZXJpdHkgIzE3MzogcmVtb3ZlIHN1cGVyZmx1b3VzIE5VTEwgY2hlY2sgKGFscmVhZHkgZGVyZWZlcmVuY2VkIGVhcmxpZXIgYW55d2F5KQorCisyMDA3LTAxLTAyIDIzOjA4ICB0YW5kZXJzCisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzoKKworICAgb25seSBsb2cgYSBtZXNzYWdlIHdoZW4gdGhlIG1pYl9pbmRleGVzIGRpcmVjdG9yeSBpcyAqcmVhbGx5KiBjcmVhdGVkCiAKIDIwMDctMDEtMDIgMjI6NTMgIHRhbmRlcnMKIApAQCAtODg3Niw2ICsxOTI3Miw2MiBAQAogCiAgICBCVUc6IENvdmVyaXR5ICMxOTM6IHByb3Blcmx5IGluaXRpYWxpemUgc2Vzc2lvbiBwb2ludGVyIGJlZm9yZSB1c2UKIAorMjAwNy0wMS0wMiAyMDoxMyAgdGFuZGVycworCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CisKKyAgIGJhY2sgb3V0IHByZXZpb3VzIGJhZCBjaGFuZ2UgdG8gYWdlbnQgcmVnaXN0cnkKKworMjAwNy0wMS0wMiAxOTo1MiAgdGFuZGVycworCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjAxNDUzOiBmcm9tICJSb2JlcnQgV2lsY294IjogRHluYW1pYyBNZW1vcnkgZmFpbHVyZSBoYW5kbGluZyBpbXByb3ZlbWVudHMKKworMjAwNy0wMS0wMiAxOTo1MiAgdGFuZGVycworCisgICAqIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jLCBzbm1wbGliL3JlYWRfY29uZmlnLmMsCisgICAgIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIGFnZW50L2hlbHBlcnMvbnVsbC5jLAorICAgICBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jCissIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jCissIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLAorICAgICBzbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jLCBzbm1wbGliL3NubXB1c20uYywKKyAgICAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYworLCBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLAorICAgICBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jLAorICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsCisgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywKKyAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYywKKyAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLAorICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuYzoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE2MDE0NTM6IGZyb20gIlJvYmVydCBXaWxjb3giOiBEeW5hbWljIE1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nIGltcHJvdmVtZW50cworCisyMDA3LTAxLTAyIDE3OjU2ICB0YW5kZXJzCisKKyAgICogTWFrZWZpbGUuaW46CisKKyAgIHJlbW92ZSBMRF9SVU5fUEFUSCBjb21tZW50IGZvciBweXRob24KKworMjAwNy0wMS0wMiAxNzozOCAgdGFuZGVycworCisgICAqIE1ha2VmaWxlLnRvcCwgY29uZmlndXJlLCBuZXQtc25tcC1jb25maWcuaW4KKzoKKworICAgQ0hBTkdFUzogYnVpbGQ6IHVwZGF0ZSB0byBhdXRvY29uZiAyLjYxCisKKzIwMDctMDEtMDIgMTc6MjMgIHRhbmRlcnMKKworICAgKiBNYWtlZmlsZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0va2ZyZWVic2QuaDoKKworICAgTkVXUzogUG9ydHM6IFBBVENIOiAxNjIzODc0OiBmcm9tICJQZXRyIFNhbGluZ2VyIjogYWRkIEdOVS9rRnJlZUJTRCBzdXBwb3J0CisKKzIwMDctMDEtMDIgMTc6MTcgIHRhbmRlcnMKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBhZGQgd29ya2Fyb3VuZCBmb3IgQUNfRlVOQ19HRVRNTlRFTlQoKSBidWcgaW4gYXV0b2NvbmYgMi42MGIgYW5kIDIuNjEgKHNlZSBEZWJpYW4gYnVncyAjNDAzMjQzLCAjNDAzMDc5KQorCiAyMDA3LTAxLTAyIDE2OjQ4ICBkdHMxMgogCiAgICAqIGxvY2FsL21pYjJjOgpAQCAtODg4NSw4ICsxOTMzNyw4IEBACiAKIDIwMDctMDEtMDIgMTY6MDAgIGR0czEyCiAKLSAgICogc25tcGxpYi86IHNubXBVRFBEb21haW4uYywgc25tcFVEUElQdjZEb21haW4uYwotLCBzbm1wVW5peERvbWFpbi5jOgorICAgKiBzbm1wbGliLzogc25tcFVEUERvbWFpbi5jLCBzbm1wVURQSVB2NkRvbWFpbi5jLAorICAgICBzbm1wVW5peERvbWFpbi5jOgogCiAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDE2MDAxNzE6IFN1cHBvcnQgbG9uZ2VyIGNvbW11bml0eSBzdHJpbmdzIGluIFZBQ00gY29uZmlnLgogICAgUGF0Y2ggcHJvdmlkZWQgYnkgUm9iZXJ0IFdpbGNveApAQCAtODg5OCwyMCArMTkzNTAsMjcgQEAKICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE1NDY4MTc6IEZpeCBzbm1wRW50ZXJwcmlzZSB2YXJiaW5kIHdoZW4gZm9yd2FyZGluZyB2MSB0cmFwcy4KICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFBhYmxvIFBhc3NlcmEuCiAKLTIwMDctMDEtMDIgMTA6MzggIGR0czEyCisyMDA3LTAxLTAyIDEwOjM0ICBkdHMxMgogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgogCiAgICBDSEFOR0VTOiBidWlsZDogUEFUQ0g6IDE2MjUxMzU6IGNvbmZpZ3VyZSBsb2NhdGlvbiBvZiBweXRob24gaW50ZXJwcmV0ZXIKICAgIFByb3ZpZGVkIGJ5IEFuZHJldyBMYW5nbWVhZAogCi0yMDA3LTAxLTAyIDEwOjM4ICBkdHMxMgorMjAwNy0wMS0wMiAxMDozNCAgZHRzMTIKIAogICAgKiBNYWtlZmlsZS5pbiwgTWFrZWZpbGUudG9wOgogCiAgICBORVdTOiBjb25maWd1cmU6IFBBVENIIDE2MjUxMzU6IGNvbmZpZ3VyZSBsb2NhdGlvbiBvZiBweXRob24gaW50ZXJwcmV0ZXIKICAgIFByb3ZpZGVkIGJ5IEFuZHJldyBMYW5nbWVhZAogCisyMDA3LTAxLTAyIDEwOjIyICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgorCisgICBDSEFOR0VTOiBidWlsZDogUEFUQ0g6IDE2MjQ0MDY6IG9wdGlvbiB0byBoYXJkY29kZSBsb2NhdGlvbiBvZiBtb3VudCB0YWJsZQorICAgU3VibWl0dGVkIGJ5IEpvY2hlbgorCiAyMDA3LTAxLTAxIDE3OjQ0ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKQEAgLTg5MTksMTIgKzE5Mzc4LDMzIEBACiAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2MDExODgsIEJVRzogMTYwMDQzMjogSGFuZGxlIHNpZ25hbHMgcHJvcGVybHkgd2hlbiByZXN0YXJ0aW5nIHRoZSBhZ2VudC4KICAgIEZpeCBwcm92aWRlZCBieSBMb2ljIERvbWFpZ25lLgogCi0yMDA3LTAxLTAxIDE2OjEyICBkdHMxMgorMjAwNy0wMS0wMSAxNzozNSAgZHRzMTIKIAotICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6CisgICAqIHNubXBsaWIvbWliLmM6CisKKyAgIEhhbmRsZSBub24td3JpdGFibGUgTUlCIGluZGV4ZXMgKGUuZy4gcnVuIGFzIG5vbi1wcml2aWxlZ2VkIHVzZXIpCisKKzIwMDctMDEtMDEgMTY6MDkgIGR0czEyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYworOgogCiAgICBORVdTOiBzbm1wbGliOiBQQVRDSEVTIDE1OTI3MDY6IEZpeCBtZW1vcnkgbGVhayB3aGVuIGNsb25pbmcgdmFyYmluZHMuCi0gICBQYXRjaCBieSBTdGV2ZW4gRG9yaWdvdHRpLgorICAgQmFzZWQgb24gYSBzdWdnZXN0aW9uIGJ5IFN0ZXZlbiBEb3JpZ290dGkuCisKKzIwMDctMDEtMDEgMTY6MDkgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTU5MjcwNjogRml4IG1lbW9yeSBsZWFrIHdoZW4gY2xvbmluZyB2YXJiaW5kcy4KKyAgIEJhc2VkIG9uIGEgc3VnZ2VzdGlvbiBieSBTdGV2ZW4gRG9yaWdvdHRpLgorCisyMDA3LTAxLTAxIDE1OjQ4ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wLzogcGFzcy5jLCBwYXNzX3BlcnNpc3QuYzoKKworICAgTkVXUzogYWdlbnQ6IFBBVENIIDE1ODUxNDY6IEV4dGVuZCByYW5nZSBvZiBhdmFpbGFibGUgZXJyb3IgY29kZXMKKyAgIFN1Ym1pdHRlZCBieSBBbnRob255IE5vdmF0c2lzLgogCiAyMDA3LTAxLTAxIDE1OjI5ICBkdHMxMgogCkBAIC04OTM1LDggKzE5NDE1LDggQEAKIAogMjAwNy0wMS0wMSAxNToxNiAgZHRzMTIKIAotICAgKiBhcHBzLzogc25tcGRmLmMsIHNubXBnZXQuYywgc25tcGdldG5leHQuYwotLCBzbm1wc2V0LmM6CisgICAqIGFwcHMvOiBzbm1wZGYuYywgc25tcGdldC5jLCBzbm1wZ2V0bmV4dC5jLAorICAgICBzbm1wc2V0LmM6CiAKICAgIE1vdmUgZ2xvYmFsICdmYWlsdXJlcycgdmFyaWFibGUgY2xvc2VyIHRvIHdoZXJlIGl0IGlzIHVzZWQuCiAgICBDSEFOR0VTOiBhcHBzOiBQQVRDSDogMTUyOTUyMzogQ2xvc2UgU05NUCBzZXNzaW9uIG9uIGZhaWx1cmUuCkBAIC04OTQ4LDYgKzE5NDI4LDE2IEBACiAgICBQcm90ZWN0IGFnYWluc3QgcG90ZW50aWFsIGRvdWJsZSBkZWxldGUuCiAgICBQYXRjaCBwcm92aWRlZCBieSBNYWdudXMgRnJvbXJlaWRlLgogCisyMDA3LTAxLTAxIDE0OjIyICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCwgc25tcGxpYi9taWIuYywKKyAgICAgc25tcGxpYi9wYXJzZS5jOgorCisgICBNYWludGFpbiBNSUIgZGlyZWN0b3J5IGluZGV4IGZpbGVzIHVuZGVyIC92YXIvbmV0LXNubXAKKyAgIChpbiBsaW5lIHdpdGggRmlsZSBIaWVyYXJjaHkgU3RhbmRhcmQgc3BlY2lmaWNhdGlvbnMpCisgICBTZWUgaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTM4OTQzNAorICAgYW5kIGRpc2N1c3Npb24gIk1JQnMgaW4gbmV0LXNubXAiIG9uIGNvZGVycyBsaXN0IChPY3QgMjAwNikKKwogMjAwNy0wMS0wMSAxMToyOCAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmM6CkBAIC04OTU1LDYgKzE5NDQ1LDEyIEBACiAgICBFbnN1cmUgc3lzT1JEZXNjcmlwdGlvbnMgYXJlIG51bGwtdGVybWluYXRlZCwgc28gdGhleSBjYW4gYmUKICAgIHNhZmVseSBwYXNzZWQgdG8gJ3N0cmR1cCgpJy4gIFJlcG9ydGVkIGJ5IFdvbGZnYW5nIFBlZG90LgogCisyMDA2LTEyLTI5IDE3OjI1ICBkdHMxMgorCisgICAqIEZBUToKKworICAgU3luY2hyb25pc2Ugd2l0aCBXaWtpIHZlcnNpb24uCisKIDIwMDYtMTItMjggMjM6MjkgIHRhbmRlcnMKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKQEAgLTg5ODQsMTAgKzE5NDgwLDkgQEAKIAogMjAwNi0xMi0xNyAxODowMSAgYWxleF9iCiAKLSAgICogd2luMzIvOiBNYWtlZmlsZS1hcHBzLmluLCBsaWJzbm1wX2RsbC9NYWtlZmlsZS5pbgotLCBzbm1wZC9NYWtlZmlsZS5pbiwgc25tcGRzZGsvTWFrZWZpbGUuaW4KLSwgc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sCi0gICAgIHNubXB0cmFwZC9NYWtlZmlsZS5pbjoKKyAgICogd2luMzIvOiBNYWtlZmlsZS1hcHBzLmluLCBsaWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwKKyAgICAgc25tcGQvTWFrZWZpbGUuaW4sIHNubXBkc2RrL01ha2VmaWxlLmluLAorICAgICBzbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgc25tcHRyYXBkL01ha2VmaWxlLmluOgogCiAgICBBZGQgZ2RpMzIubGliIHRvIGZpeCBsaW5raW5nIHByb2JsZW0gd2hlbiB1c2luZyB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlCiAgICBTU0wgbGlicmFyaWVzLiAgVGhhbmtzIHRvIFNpbW9uIEVkd2FyZHMgZm9yIHRoZSBmaXguCkBAIC05MDAwLDE1ICsxOTQ5NSwxNSBAQAogCiAyMDA2LTEyLTEyIDIzOjUzICB0YW5kZXJzCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC86IGhyX2ZpbGVzeXMuYywgaHJfc3RvcmFnZS5jCi0sIGhyX3N3aW5zdC5jOgorICAgKiBhZ2VudC9taWJncm91cC9ob3N0LzogaHJfZmlsZXN5cy5jLCBocl9zdG9yYWdlLmMsCisgICAgIGhyX3N3aW5zdC5jOgogCiAgICBDSEFOR0VTOiBMaW51eDogUEFUQ0g6IDE1ODEyOTQ6IGZyb20gIk1pY2hhZWwgVGF0YXJpbm92IjogaG9zdC1yZXNvdXJjZXMgaW1wcm92ZW1lbnRzCiAKIDIwMDYtMTItMTIgMjE6MjcgIHRhbmRlcnMKIAotICAgKiB3aW4zMi9uZXQtc25tcC86IG5ldC1zbm1wLWNvbmZpZy5oLAotICAgICBuZXQtc25tcC1jb25maWcuaC5pbjoKKyAgICogd2luMzIvbmV0LXNubXAvOiBuZXQtc25tcC1jb25maWcuaCwgbmV0LXNubXAtY29uZmlnLmguaW4KKzoKIAogICAgcmUtYWRkIFVEUF9BRERSRVNTRVNfSU5fSE9TVF9PUkRFUgogCkBAIC05MDI0LDcgKzE5NTE5LDcgQEAKIAogICAgQ0hBTkdFUzogV2luMzI6IGZpeCB3aW4zMi9Db25maWd1cmUgLS13aXRoLWlwdjYKIAotMjAwNi0xMi0xMiAxODoyMSAgdGFuZGVycworMjAwNi0xMi0xMiAxODoxMCAgdGFuZGVycwogCiAgICAqIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oOgogCkBAIC05MDM2LDEzICsxOTUzMSw4OCBAQAogCiAgICBBZGQgdmVyc2lvbiB0byBGQVEuaHRtbC4KIAotMjAwNi0xMi0wOSAwMDoxNiAgdGFuZGVycworMjAwNi0xMi0wOSAxNzoxMSAgYWxleF9iCiAKLSAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vOiBkYXJ3aW44LmgsIGRhcndpbjkuaAorICAgKiBtYW4vOiBNYWtlZmlsZS5pbiwgbWFrZV9pbmRleC5wbCwgbWFuX3NlY3Rpb25zLnR4dAogOgogCisgICAtQ3JlYXRlIGh0bWwgcGFnZXMgZm9yIEFMTCBtYW4gcGFnZXMuCisgICAtSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gY3JlYXRpbmcgdGhlIGluZGV4Lmh0bWwgZmlsZS4KKworMjAwNi0xMi0wOSAxNzowNiAgYWxleF9iCisKKyAgICogbG9jYWwvOiBodG1sLWFkZC1oZWFkZXItZm9vdGVyLnBsLCBodG1sLXRleHRmaWxlLWZpeC5wbAorOgorCisgICBBZGQgdGlkeSBjb21tYW5kIGxpbmUgb3B0aW9uIGFuZCBhZGQgbWlzc2luZyBSRUFETUUgZmlsZXMuCisKKzIwMDYtMTItMDkgMDA6MTYgIHRhbmRlcnMKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS86IGRhcndpbjguaCwgZGFyd2luOS5oOgorCiAgICBDSEFOR0VTOiBNYWNPU1g6IFBBVENIOiAxNjAwNDUzOiBmcm9tICJDaHJpcyBKYWxiZXJ0IjogT1MgWCBjb21waWxlLXRpbWUgZW5kaWFuIGRldGVybWluYXRpb24KIAorMjAwNi0xMi0wOCAyMjo0NyAgdGFuZGVycworCisgICAqIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlM6CisKKyAgIGRvY3VtZW50IHNvbWUgbW9yZSBwb3N0LXJlbGVhc2UgdGFza3MKKworMjAwNi0xMi0wOCAyMjoyNiAgdGFuZGVycworCisgICAqIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsCisgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMworLCBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsCisgICAgIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMKKywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgbWFuL25ldHNubXBfY29udGFpbmVyLjMKKywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsIG1hbi9uZXRzbm1wX2RlYnVnLjMKKywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCBtYW4vbmV0c25tcF9oYW5kbGVyLjMKKywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywKKyAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywKKyAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMworLCBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsCisgICAgIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMworLCBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCisgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAorICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCisgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAorICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAorICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCisgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAorICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKKyAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAorICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKKyAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAorICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAorICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKKyAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAorICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMKKywgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMKKywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywKKyAgICAgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsCisgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zCissIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgbWFuL25ldHNubXBfdGFibGUuMworLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLAorICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zCissIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywKKyAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMKKywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKKyAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLAorICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMKKywgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zCissIG1hbi9uZXRzbm1wX3dhdGNoZXIuMywgcGVybC9BU04vQVNOLnBtLAorICAgICBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sCisgICAgIHBlcmwvU05NUC9TTk1QLnBtLCBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0KKywgcGVybC9hZ2VudC9hZ2VudC5wbSwgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0KKywgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sCisgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCBjb25maWd1cmUsCisgICAgIGNvbmZpZ3VyZS5pbiwgZG94eWdlbi5jb25mLCBzZWRzY3JpcHQuaW4sCisgICAgIGRpc3QvTWFrZWZpbGUsIGRpc3QvbmV0LXNubXAuc3BlYywKKyAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYywgRkFRLCBSRUFETUU6CisKKyAgIC0gdmVyc2lvbiB0YWcgKCA1LjUuZGV2ICkKKwogMjAwNi0xMi0wOCAyMjoyMCAgdGFuZGVycwogCiAgICAqIGxvY2FsL1ZlcnNpb24tTXVuZ2UucGw6CkBAIC05MDU1LDMxICsxOTYyNSw0NCBAQAogCiAgICBORVdTOiBCVUc6IDE2MTE1MjQ6IGZpeCB0Y3AgY29ubmVjdGlvbiB0YWJsZSBmZCBsZWFrCiAKLTIwMDYtMTItMDcgMTU6NTYgIHRhbmRlcnMKKzIwMDYtMTItMDggMTM6MTcgIG1hcnoKIAotICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS86IGNwdS5oLCBjcHUvY3B1X21hY2guYwotLCBjcHUvY3B1X21hY2guaDoKKyAgICogcGVybC9TTk1QLzogTWFrZWZpbGUuUEwsIFNOTVAucG06CisKKyAgIHJldmVydCB1bmluZm9ybWVkIHZlcnNpb24gY2hhbmdlCisKKzIwMDYtMTItMDcgMjE6NTAgIHVpZDM5MDM5CisKKyAgICogcGVybC9TTk1QLzogTWFrZWZpbGUuUEwsIFNOTVAucG0sIFNOTVAueHMsCisgICAgIHQvY29uZi50OgorCisgICBjbGVhbiB1cCBjb21waWxlIGFuZCBmaXggdGVzdHMKKworMjAwNi0xMi0wNyAxNjo0OCAgbWFyegorCisgICAqIHBlcmwvU05NUC9TTk1QLnBtOgorCisgICBjb21tZW50IGZpeAorCisyMDA2LTEyLTA3IDE1OjUyICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvOiBjcHUuaCwgY3B1L2NwdV9tYWNoLmMsCisgICAgIGNwdS9jcHVfbWFjaC5oOgogCiAgICBORVdTOiBNYWNPU1g6IFBBVENIOiAxNjAwNTIyOiBmcm9tICJCaWxsIEZlbm5lciI6IENQVSBIQUwgaW1wbGVtZW50YXRpb24gZm9yIG1hY2gvZGFyd2luCiAKLTIwMDYtMTItMDcgMTU6NTQgIHRhbmRlcnMKLQotICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X21hY2guYzoKLQotICAgZmlsZSBjcHVfbWFjaC5jIHdhcyBhZGRlZCBvbiBicmFuY2ggVjUtNC1wYXRjaGVzIG9uIDIwMDYtMTItMDcgMTU6NTY6MzggKzAwMDAKLQotMjAwNi0xMi0wNyAxNTo1NCAgdGFuZGVycwotCi0gICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbWFjaC5oOgotCi0gICBmaWxlIGNwdV9tYWNoLmggd2FzIGFkZGVkIG9uIGJyYW5jaCBWNS00LXBhdGNoZXMgb24gMjAwNi0xMi0wNyAxNTo1NjozOCArMDAwMAotCiAyMDA2LTEyLTA3IDEzOjEwICB0YW5kZXJzCiAKICAgICogcGVybC9TTk1QL1NOTVAucG06CiAKICAgIENIQU5HRVM6IGRvY3VtZW50YXRpb246IFBBVENIOiAxNjA0NTgwOiBTTk1QKDMpIG1hbnVhbCBwYWdlIGNvcnJlY3Rpb25zIChzcG90dGVkIGJ5IHRlay1vcHMpCiAKKzIwMDYtMTItMDYgMjA6MzAgIGhhcmRha2VyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgZG9jdW1lbnQgdmFyaW91cyBhc3BlY3RzIG9mIHBvc3QtcmVsZWFzZSB0aGluZ3MgdG8gZG8KKwogMjAwNi0xMi0wNiAxNTozNCAgcnN0b3J5CiAKICAgICogYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jOgpAQCAtOTExOCw2ICsxOTcwMSwzOSBAQAogCiAgICBDSEFOR0VTOiBCVUc6IDE2MDAwOTM6IGF1dG9jb25mIDIuNjAgYnJlYWtzIHRoZSBidWlsZAogCisyMDA2LTEyLTA0IDE3OjQ5ICBoYXJkYWtlcgorCisgICAqIENPUFlJTkc6CisKKyAgIGNoYW5nZSB0b3AgdGV4dCB0byByZW1vdmUgaGlzdG9yeSBzZWN0aW9uIHdoaWNoIHdhcyBvdXQgb2YgZGF0ZQorCisyMDA2LTEyLTAzIDIzOjIwICBhbGV4X2IKKworICAgKiB3aW4zMi86IGRpc3QvUkVBRE1FLmJ1aWxkLndpbjMyLnR4dCwKKyAgICAgbmV0c25tcG1pYnNzZGsvbmV0c25tcG1pYnNzZGsuZHNwOgorCisgICBXaW4zMjogIFdvcmtzcGFjZSBjb21waWxlIGZpeCwgYnVpbGQgaW5zdHJ1Y3Rpb25zIHVwZGF0ZS4KKworMjAwNi0xMS0yNCAxNzo1MyAgaGFyZGFrZXIKKworICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4KKywgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jLAorICAgICBkaXN0L25ldC1zbm1wLnNwZWM6CisKKyAgIC0gdmVyc2lvbiB0YWcgKCA1LjQgKQorCisyMDA2LTExLTI0IDE3OjUyICBoYXJkYWtlcgorCisgICAqIENIQU5HRVMsIE5FV1M6CisKKyAgIHZlcnNpb24gdXBkYXRlCisKKzIwMDYtMTEtMjQgMTc6NDggIGhhcmRha2VyCisKKyAgICogQ2hhbmdlTG9nOgorCisgICB2ZXJzaW9uIHVwZGF0ZQorCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIENoYW5nZXM6IFY1LjQucmMzIC0+IFY1LjQKQEAgLTEyOTQzLDYgKzIzNTU5LDcgQEAKIAogMjAwNi0wOC0xNyAwNzo1MCAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYwogLCBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmM6CiAKQEAgLTEzOTQ1LDYgKzI0NTYyLDcgQEAKIAogMjAwNi0wNi0xMiAxMzowNSAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5jCiA6CiAKQEAgLTE1OTM3LDYgKzI2NTU1LDcgQEAKIAogMjAwNi0wMS0xMCAwMzowNyAgdGFuZGVycwogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMKIDoKIApAQCAtMTU5NDQsNiArMjY1NjMsNyBAQAogCiAyMDA2LTAxLTA5IDE3OjQxICB0YW5kZXJzCiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYwogOgogCkBAIC0xNjk1NSw2ICsyNzU3NSw3IEBACiAKIDIwMDUtMTItMDkgMjA6NTggIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2RhdGFfYWNjZXNzLmMKIDoKIApAQCAtMTY5NzcsNiArMjc1OTgsNyBAQAogCiAyMDA1LTEyLTA5IDIwOjU3ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYwogOgogCkBAIC0xODI1Nyw2ICsyODg3OSw3IEBACiAKIDIwMDUtMTEtMTYgMTU6MTggIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMKIDoKIApAQCAtMTgzOTYsNiArMjkwMTksNyBAQAogCiAyMDA1LTExLTE1IDIxOjE0ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYwogOgogCkBAIC0xODQwOSw2ICsyOTAzMyw3IEBACiAKIDIwMDUtMTEtMTUgMjE6MDggIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwogOgogCkBAIC0xODQzOCw2ICsyOTA2Myw3IEBACiAKIDIwMDUtMTEtMTUgMTk6MjQgIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYwogOgogCkBAIC0xODU1NCw2ICsyOTE4MCw3IEBACiAKIDIwMDUtMTEtMTQgMTc6MjggIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCiA6CiAKQEAgLTE5ODM1LDYgKzMwNDYyLDcgQEAKIAogMjAwNS0xMC0yOCAyMzoyNyAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmgKIDoKIApAQCAtMTk4NDIsNiArMzA0NzAsNyBAQAogCiAyMDA1LTEwLTI4IDIzOjI2ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYwogOgogCkBAIC0yMTkxMCw2ICszMjUzOSw3IEBACiAKIDIwMDUtMDktMjcgMTk6MjUgIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwogOgogCkBAIC0yMjYyMiw2ICszMzI1Miw3IEBACiAKIDIwMDUtMDktMDYgMTk6MTcgIHRhbmRlcnMKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlLy5jdnNpZ25vcmUKIDoKIApAQCAtMjI3MzQsNiArMzMzNjUsNyBAQAogCiAyMDA1LTA4LTMwIDA4OjA2ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb25zdGFudHMuaAogOgogCkBAIC0yNTU3MCw2ICszNjIwMiw3IEBACiAKIDIwMDUtMDMtMjggMTQ6MjkgIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYwogOgogCkBAIC0yNTYxMCw2ICszNjI0Myw3IEBACiAKIDIwMDUtMDMtMjQgMTY6NDggIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2RhdGFfYWNjZXNzLmMKIDoKIApAQCAtMjYzNDcsNiArMzY5ODEsNyBAQAogCiAyMDA1LTAxLTI3IDIyOjUyICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9kYXRhX2FjY2Vzcy5jCiA6CiAKQEAgLTI4MTAyLDYgKzM4NzM3LDcgQEAKIAogMjAwNC0xMC0xNyAyMDo1NiAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5jCiA6CiAKQEAgLTI4NTIyLDYgKzM5MTU4LDcgQEAKIAogMjAwNC0xMC0xNCAxODoxNSAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oCiA6CiAKQEAgLTI4ODcwLDYgKzM5NTA3LDcgQEAKIAogMjAwNC0xMC0wOCAxOToyNyAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGVfaW50ZXJmYWNlLmMKIDoKIApAQCAtMjg4NzcsNiArMzk1MTUsNyBAQAogCiAyMDA0LTEwLTA4IDE5OjI1ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9pbnRlcmZhY2UuYwogOgogCkBAIC0yOTkzMCw2ICs0MDU2OSw3IEBACiAKIDIwMDQtMDktMjQgMDk6MTUgIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKIDoKIApAQCAtMjk5ODksNiArNDA2MjksNyBAQAogCiAyMDA0LTA5LTIzIDEzOjI0ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9kYXRhX3NldC5jCiA6CiAKQEAgLTMwMTY1LDYgKzQwODA2LDcgQEAKIAogMjAwNC0wOS0yMSAwNjo0MyAgaGFyZGFrZXIKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9kYXRhX2dldC5jCiA6CiAKQEAgLTMxMzU3LDYgKzQxOTk5LDcgQEAKIAogMjAwNC0wOC0yNyAyMzoyMiAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5jCiA6CiAKQEAgLTMyMjE3LDYgKzQyODYwLDcgQEAKIAogMjAwNC0wNy0xMCAxOTo1MSAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMKIDoKIApAQCAtMzIzMDEsNiArNDI5NDUsNyBAQAogCiAyMDA0LTA3LTA5IDIyOjU4ICBoYXJkYWtlcgogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2RhdGFfc2V0LmMKIDoKIApAQCAtMzIzNzksNiArNDMwMjQsNyBAQAogCiAyMDA0LTA3LTA5IDA5OjU3ICBoYXJkYWtlcgogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlLy5jdnNpZ25vcmUKIDoKIApAQCAtMzI1MjIsNiArNDMxNjgsNyBAQAogCiAyMDA0LTA3LTA3IDEzOjQxICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKIDoKIApAQCAtMzMzNDksNiArNDM5OTYsNyBAQAogCiAyMDA0LTA2LTI4IDE1OjExICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnN0YW50cy5oCiA6CiAKQEAgLTM2MDE5LDYgKzQ2NjY3LDcgQEAKIAogMjAwNC0wNC0xMyAxMTo0NCAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYwogOgogCkBAIC0zNjAyNiw2ICs0NjY3NSw3IEBACiAKIDIwMDQtMDQtMTMgMTE6NDMgIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwogOgogCkBAIC01MzE5OCw3ICs2Mzg0OCw3IEBACiAKICAgICogYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jOgogCi0gICBSZXBvcnQgbm9uLWV4aXN0ZW50IHN1Ymluc3RhbmNlcyBhcyAnbm9TdWNoSW5zdGFuY2UnIHJhdGhlciB0aGFuICdub1N1Y2hPYmplY3QnLgorICAgUmVwb3J0IG5vbi1leGl0ZW50IHN1Ymluc3RhbmNlcyBhcyAnbm9TdWNoSW5zdGFuY2UnIHJhdGhlciB0aGFuICdub1N1Y2hPYmplY3QnLgogICAgInNubXBnZXQgLi4uLiAuMS4zLjYuMS42LjMuMTIuMS41LjAuOTkiIG5vdyByZXNwb25kcyBjb3JyZWN0bHkuCiAgICAodGhvdWdoICJzbm1wZ2V0IC4uLi4gLjEuMy42LjEuNi4zLjEyLjEuNS4xIiBzdGlsbCByZXR1cm5zICdub1N1Y2hPYmplY3QnKQogICAgCmRpZmYgLS1naXQgYS9GQVEgYi9GQVEKaW5kZXggZjRmNzc1NS4uMGYwNmI1OCAxMDA2NDQKLS0tIGEvRkFRCisrKyBiL0ZBUQpAQCAtMSw3ICsxLDcgQEAKICAgICAgIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zIChGQVEpIGZvciB0aGUgVUNEL05ldC1TTk1QIHBhY2thZ2UKICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAkJICAgICAgIEZBUSBBdXRob3I6IERhdmUgU2hpZWxkCi0JICAgICAgICBOZXQtU05NUCBWZXJzaW9uOiA1LjQuNCBTVk4gYnJhbmNoCisJCQlOZXQtU05NUCBWZXJzaW9uOiA1LjUuMgogCSAgICBOZXQtU05NUC9VQ0QtU05NUCBQcm9qZWN0IExlYWRlcjogV2VzIEhhcmRha2VyCiAJICAgICBFbWFpbDogbmV0LXNubXAtY29kZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAogCkBAIC0yMTU4LDYgKzIxNTgsMTUgQEAKICAgb3V0cHV0IGlzIHJldHVybmVkIGluIGEgZml4ZWQgZm9ybWF0LCBhbmQgaXQgaXMgdXAgdG8gdGhlIHJlY2VpdmluZwogICBhcHBsaWNhdGlvbiB0byBpbnRlcnByZXQgdGhpcyBhcHByb3ByaWF0ZWx5LgogCisgIE5vdGUgdGhhdCB0aGUgInJlbG9jYXRhYmxlIiBmb3JtIG9mIHRoZSAnZXhlYycgZGlyZWN0aXZlICgnZXhlYyBPSUQgLi4uLicpCisgIHByb2R1Y2VzIE1JQiBvdXRwdXQgdGhhdCBpcyBub3Qgc3RyaWN0bHkgdmFsaWQuIEZvciB0aGlzIHJlYXNvbiwgc3VwcG9ydAorICBmb3IgdGhpcyBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZiAnZXh0ZW5kIE9JRCAuLi4nLCB3aGljaCBwcm9kdWNlcworICB3ZWxsLWZvcm1lZCBNSUIgcmVzdWx0cyAoYXMgd2VsbCBhcyBwcm92aWRpbmcgZnVsbGVyIGZ1bmN0aW9uYWxpdHkpLgorICBUaGUgbW9zdCByZWNlbnQgcmVsZWFzZXMgb2YgdGhlIGFnZW50IGRvbid0IGluY2x1ZGUgc3VwcG9ydCBmb3IgInJlbG9jYXRhYmxlCisgIGV4ZWMiIGJ5IGRlZmF1bHQuIFRoaXMgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBpbmNsdWRlZCB3aGVuIHRoZSBhZ2VudCBpcworICBmaXJzdCBjb21waWxlZCwgYnkgaW5jbHVkaW5nIHRoZSBtb2R1bGUgJ3VjZC1zbm1wL2V4dGVuc2libGUnIGluc3RlYWQgb2YKKyAgJ2FnZW50L2V4dGVuZCcuCisKIAogICAncGFzcycgaXMgYSBtb3JlIGdlbmVyYWwgbWVjaGFuaXNtIGZvciBpbXBsZW1lbnRpbmcgYXJiaXRyYXJ5IE1JQgogICBvYmplY3RzLiAgVGhlIHNwZWNpZmllZCBjb21tYW5kIHdpbGwgYmUgaW52b2tlZCBmb3IgYW55IHJlcXVlc3Qgd2l0aGluCkBAIC0yNTk0LDcgKzI2MDMsNyBAQAogCiAKIFdoeSBkb2VzIHRoZSBhZ2VudCBjb21wbGFpbiBhYm91dCAnbm8gYWNjZXNzIGNvbnRyb2wgaW5mb3JtYXRpb24nPwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgIEFsdGhvdWdoIGFuIFNOTVAgYWdlbnQgbWF5IHN1cHBvcnQgYSB3aWRlIHJhbmdlIG9mIG1hbmFnZW1lbnQKICAgaW5mb3JtYXRpb24sIGl0IGlzIG5vdCBuZWNlc3NhcmlseSBhcHByb3ByaWF0ZSB0byByZXBvcnQgdGhlIHdob2xlCmRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOGMxZmEKLS0tIC9kZXYvbnVsbAorKysgYi9NYWtlZmlsZS5hbQpAQCAtMCwwICsxIEBACitBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNApkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgppbmRleCAwZWE0MWFhLi41NDJmNGFiIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5pbgorKysgYi9NYWtlZmlsZS5pbgpAQCAtMTYsMTkgKzE2LDE5IEBACiBJTlNUQUxMSEVBREVSUz12ZXJzaW9uLmgKIElOQ0xVREVTVUJESVI9c3lzdGVtCiBJTkNMVURFU1VCRElSSEVBREVSUz0gYWl4LmggYnNkLmggYnNkaTMuaCBic2RpNC5oIGJzZGkuaCBjeWd3aW4uaCBcCi0JZGFyd2luLmggZGFyd2luNy5oIGRhcndpbjguaCBkYXJ3aW45LmggZHluaXguaCBcCisJZGFyd2luLmggZGFyd2luNy5oIGRhcndpbjguaCBkYXJ3aW45LmggZHJhZ29uZmx5LmggZHluaXguaCBcCiAJZnJlZWJzZDIuaCBmcmVlYnNkMy5oIGZyZWVic2Q0LmggZnJlZWJzZDUuaCBmcmVlYnNkNi5oIFwKIAlmcmVlYnNkNy5oIGZyZWVic2Q4LmggZnJlZWJzZDkuaCBmcmVlYnNkMTAuaCBmcmVlYnNkMTEuaCBcCiAJZnJlZWJzZDEyLmggZnJlZWJzZC5oIFwKLSAgICAgICAgZ2VuZXJpYy5oIGhwdXguaCBcCi0JaXJpeC5oIGxpbnV4LmggbWluZ3czMi5oIG1pcHMuaCBuZXRic2QuaCBvc2Y1LmggXAorICAgICAgICBnZW5lcmljLmggXAorCWhwdXguaCBpcml4LmggbGludXguaCBtaW5ndzMyLmggbWlwcy5oIG5ldGJzZC5oIG9zZjUuaCBcCiAJb3BlbmJzZC5oIG9wZW5ic2Q1Lmggb3BlbmJzZDQuaCBcCiAJc29sYXJpczIuMy5oIHNvbGFyaXMyLjQuaCBzb2xhcmlzMi41Lmggc29sYXJpczIuNi5oIFwKLQlzb2xhcmlzLmggc3Vub3MuaCBzdnI1Lmggc3lzdi5oIHVsdHJpeDQuaCBkcmFnb25mbHkuaAorCXNvbGFyaXMuaCBzdW5vcy5oIHN2cjUuaCBzeXN2LmggdWx0cml4NC5oCiBJTkNMVURFU1VCRElSMj1tYWNoaW5lCiBJTkNMVURFU1VCRElSSEVBREVSUzI9Z2VuZXJpYy5oCiBJTlNUQUxMQlVJTFRIRUFERVJTPWluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLUlOU1RBTExCSU5TQ1JJUFRTPW5ldC1zbm1wLWNvbmZpZworSU5TVEFMTEJJTlNDUklQVFM9bmV0LXNubXAtY29uZmlnIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyCiBJTlNUQUxMVUNESEVBREVSUz11Y2Qtc25tcC1jb25maWcuaCB2ZXJzaW9uLmggbWliX21vZHVsZV9jb25maWcuaAogCiAjCkBAIC02MCw3ICs2MCw3IEBACiAjCiAjIHRhcmdldHMKICMKLWFsbDogICAgc2Vkc2NyaXB0IEVYQU1QTEUuY29uZiBzdGFuZGFyZGFsbCBuZXQtc25tcC1jb25maWcteCBAUEVSTFRBUkdTQCBAUFlUSE9OVEFSR1NACithbGw6ICAgIHNlZHNjcmlwdCBFWEFNUExFLmNvbmYgc3RhbmRhcmRhbGwgbmV0LXNubXAtY29uZmlnLXggbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIgQFBFUkxUQVJHU0AgQFBZVEhPTlRBUkdTQAogCiBzdGFydC1mbGFnOgogCUB0b3VjaCBidWlsZC1pbi1wcm9ncmVzcy1mbGFnCkBAIC05OCw2ICs5OCw3IEBACiAjCiBzZWRzY3JpcHQ6IHNlZHNjcmlwdC5pbiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oICQoc3JjZGlyKS9hZ2VudC9taWJncm91cC9taWJkZWZzLmgKIAkkKENQUCkgJChzcmNkaXIpL3NlZHNjcmlwdC5pbiB8IGVncmVwICdec1svI10nIHwgc2VkICdzL1JFTU9WRU1FLy9nO3MjICovIy8jZztzLyAqIy8jL2c7cyMvICojLyNnO3MvIyBnLyNnLzsnID4gc2Vkc2NyaXB0CisJZWNobyAncy9WRVJTSU9OSU5GTy8kKFZFUlNJT04pL2cnID4+IHNlZHNjcmlwdAogCWVjaG8gJ3MjREFUQURJUiMkKGRhdGFkaXIpI2cnID4+IHNlZHNjcmlwdAogCWVjaG8gJ3MjTElCRElSIyQobGliZGlyKSNnJyA+PiBzZWRzY3JpcHQKIAllY2hvICdzI0JJTkRJUiMkKGJpbmRpcikjZycgPj4gc2Vkc2NyaXB0CkBAIC0xMTIsNyArMTEzLDcgQEAKIGRvY3NkaXI6IGRvY3Nkb3gKIAogZG9jc2RveDogZG94eWdlbi5jb25mCi0Jc3JjZGlyPSQoc3JjZGlyKSBkb3h5Z2VuICQoc3JjZGlyKS9kb3h5Z2VuLmNvbmYKKwlzcmNkaXI9JChzcmNkaXIpIFZFUlNJT049JChWRVJTSU9OKSBkb3h5Z2VuICQoc3JjZGlyKS9kb3h5Z2VuLmNvbmYKIAktcm0gZG9jcy9tYW4vbWFuMy90b2RvLjMKIAktcm0gZG9jcy9tYW4vbWFuMy9kZXByZWNhdGVkLjMKIApAQCAtMTI1LDYgKzEyNiwxMCBAQAogCWNobW9kIGEreCBuZXQtc25tcC1jb25maWcKIAl0b3VjaCBuZXQtc25tcC1jb25maWcteAogCituZXQtc25tcC1jcmVhdGUtdjMtdXNlci14OiBuZXQtc25tcC1jcmVhdGUtdjMtdXNlcgorCWNobW9kIGEreCBuZXQtc25tcC1jcmVhdGUtdjMtdXNlcgorCXRvdWNoIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyLXgKKwogIwogIyBleHRyYSBpbnN0YWxsIHJ1bGVzCiAjCkBAIC0yNDcsNyArMjUyLDggQEAKIGNvbmZpZ2NsZWFuOiBtYWtlZmlsZWNsZWFuCiAJcm0gLWYgY29uZmlnLmNhY2hlIGNvbmZpZy5zdGF0dXMgY29uZmlnLmxvZyBcCiAJCWxpYnRvb2wgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCBcCi0JCW5ldC1zbm1wLWNvbmZpZyBuZXQtc25tcC1jb25maWcteCBjb25maWd1cmUtc3VtbWFyeQorCQluZXQtc25tcC1jb25maWcgbmV0LXNubXAtY29uZmlnLXggY29uZmlndXJlLXN1bW1hcnkgXAorCQluZXQtc25tcC1jcmVhdGUtdjMtdXNlciBuZXQtc25tcC1jcmVhdGUtdjMtdXNlci14CiAJcm0gLWYgbWlicy8uaW5kZXgKIAlybSAtZiBpbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgJCVwKIAkJaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgJCVwKQEAgLTI4MSw4ICsyODcsMjggQEAKIAkgICAgZWNobyAiV0FSTklORzogbm90IHJ1bm5pbmcgY29uZmlnLnN0YXR1cyI7IFwKIAlmaQogCitjb25maWd1cmVfYWMgPSBjb25maWd1cmUuYWMgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50IFwKKwljb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzIFwKKwljb25maWd1cmUuZC9jb25maWdfb3NfbGliczEgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiBcCisJY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MxIFwKKwljb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMyBcCisJY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0IFwKKwljb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycyBcCisJY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfaXB2Nl90eXBlcyBcCisJY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsIFwKKwljb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wYXRocyBcCisJY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24gXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3R5cGVzIFwKKwljb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZQorCiAkKHNyY2RpcikvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogc3RhbXAtaC5pbgotJChzcmNkaXIpL3N0YW1wLWguaW46IGNvbmZpZ3VyZS5pbiBhY2NvbmZpZy5oCiskKHNyY2Rpcikvc3RhbXAtaC5pbjogJChjb25maWd1cmVfYWMpIGFjY29uZmlnLmgKIAlAaWYgdGVzdCAieCQoTk9BVVRPREVQUykiID0gIngiIC1hICJ4JChBVVRPSEVBREVSKSIgIT0gIng6IjsgdGhlbiBcCiAJICAgIGNkICR7c3JjZGlyfSAmJiBMQ19DT0xMQVRFPUMgJChBVVRPSEVBREVSKTsgXAogCSAgICBlY2hvIHRpbWVzdGFtcCA+ICR7c3JjZGlyfS9zdGFtcC1oLmluOyBcCkBAIC0zMDEsNyArMzI3LDcgQEAKIAkgICAgZWNobyAiV0FSTklORzogbm90IHJ1bm5pbmcgY29uZmlnLnN0YXR1cyI7IFwKIAlmaQogCi0kKHNyY2RpcikvY29uZmlndXJlOiBjb25maWd1cmUuaW4gYWNsb2NhbC5tNAorJChzcmNkaXIpL2NvbmZpZ3VyZTogJChjb25maWd1cmVfYWMpIGFjbG9jYWwubTQKIAlAaWYgdGVzdCAieCQoTk9BVVRPREVQUykiID0gIngiIC1hICJ4JChBVVRPQ09ORikiICE9ICJ4OiI7IHRoZW4gXAogCSAgICBjZCAke3NyY2Rpcn0gJiYgJChBVVRPQ09ORik7IFwKIAkgICAgZWNobyAiUGxlYXNlIHJ1biBjb25maWd1cmUgbm93LiI7IFwKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRvcCBiL01ha2VmaWxlLnRvcAppbmRleCBjNGM0NGVlLi5mNGZhNGE4IDEwMDY0NAotLS0gYS9NYWtlZmlsZS50b3AKKysrIGIvTWFrZWZpbGUudG9wCkBAIC0xLDcgKzEsNyBAQAogIwogIyBNaW5pbXVtIGVudmlyb25tZW50IGFuZCB2aXJ0dWFsIHBhdGggc2V0dXAKICMKLVNIRUxMCQk9IC9iaW4vc2gKK1NIRUxMCQk9IEBTSEVMTEAKIHNyY2RpcgkJPSBAc3JjZGlyQAogdG9wX3NyY2Rpcgk9IEB0b3Bfc3JjZGlyQAogVkVSU0lPTgkJPSBAVkVSU0lPTkAKQEAgLTE1LDYgKzE1LDcgQEAKIGJpbmRpcgkJPSBAYmluZGlyQAogc2JpbmRpcgkJPSBAc2JpbmRpckAKIGxpYmRpcgkJPSBAbGliZGlyQAorZGF0YXJvb3RkaXIJPSBAZGF0YXJvb3RkaXJACiBkYXRhZGlyCQk9IEBkYXRhZGlyQAogaW5jbHVkZWRpcgk9IEBpbmNsdWRlZGlyQC9uZXQtc25tcAogdWNkaW5jbHVkZWRpcgk9IEBpbmNsdWRlZGlyQC91Y2Qtc25tcApAQCAtNjEsNyArNjIsNyBAQAogIyBUaGUgKHNsaWdodGx5IGNsYXJpZmllZCkgcnVsZXM6CiAjCiAjIC0gSWYgYW55IGludGVyZmFjZXMvc3RydWN0dXJlcyBoYXZlIGJlZW4gcmVtb3ZlZCBvciBjaGFuZ2VkIHNpbmNlIHRoZQotIyAgIGxhc3QgdXBkYXRlLCBpbmNyZW1lbnQgY3VycmVudCwgYW5kIHNldCBhZ2UgYW5kIHJldmlzaW9uIHRvIDAuIFN0b3AuCisjICAgbGFzdCB1cGRhdGUsIGluY3JlbWVudCBjdXJyZW50ICgrNSksIGFuZCBzZXQgYWdlIGFuZCByZXZpc2lvbiB0byAwLiBTdG9wLgogIwogIyAtIElmIGFueSBpbnRlcmZhY2VzIGhhdmUgYmVlbiBhZGRlZCBzaW5jZSB0aGUgbGFzdCBwdWJsaWMgcmVsZWFzZSwgdGhlbgogIyAgIGluY3JlbWVudCBjdXJyZW50IGFuZCBhZ2UsIGFuZCBzZXQgcmV2aXNpb24gdG8gMC4gU3RvcC4KQEAgLTc2LDkgKzc3LDkgQEAKICMgNS4zIHdhcyBhdCAxMCwgNS40IGlzIGF0IDE1LCAuLi4gIFRoaXMgbGVhdmVzIHNvbWUgcm9vbSBmb3IgbmVlZGVkCiAjIGNoYW5nZXMgZm9yIHBhc3QgcmVsZWFzZXMgaWYgYWJzb2x1dGVseSBuZWNlc3NhcnkuCiAjIAotTElCQ1VSUkVOVCAgPSAxNgotTElCQUdFICAgICAgPSAxCi1MSUJSRVZJU0lPTiA9IDMKK0xJQkNVUlJFTlQgID0gMjAKK0xJQkFHRSAgICAgID0gMAorTElCUkVWSVNJT04gPSAyCiAKIExJQl9MRF9DTUQgICAgICA9ICQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChMSU5LQ0MpICQoQ0ZMQUdTKSAtcnBhdGggJChsaWJkaXIpIC12ZXJzaW9uLWluZm8gJChMSUJDVVJSRU5UKTokKExJQlJFVklTSU9OKTokKExJQkFHRSkgLW8KIExJQl9FWFRFTlNJT04gICA9IGxhCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwppbmRleCAzOGI2MmNmLi5hNjcxM2ZjIDEwMDY0NAotLS0gYS9ORVdTCisrKyBiL05FV1MKQEAgLTMsMTA2ICszLDEzNyBAQAogdGhhdCBoYXZlIGJlZW4gZml4ZWQvYXBwbGllZCwgYW5kIHRoZSBDaGFuZ2VMb2cgZmlsZSBmb3IgYSBjb21wcmVoZW5zaXZlCiBsaXN0aW5nIG9mIGFsbCBjaGFuZ2VzIG1hZGUgdG8gdGhlIGNvZGUuCiAKLSo1LjQuNCoKIAotICAgIHNubXBsaWI6Ci0gICAgICAtIFtCVUcgMzE3MTg3OF06IFVzaW5nIFNOTVB2MyBjb250ZXh0IGRvZXMgbm90IHdvcmsKKyogNS41LjIgKgogCiAgICAgc25tcGQ6Ci0gICAgICAtIFZhcmlvdXMgNjQtYml0IGZpeGVzCisgICAgICAtIFtQQVRDSCAzMTk4NzgxXTogRml4IGNvbXBpbGF0aW9uIG9mIGRpc21hbi97cGluZyx0cmFjZXJvdXRlfSBtb2R1bGVzCisgICAgICAtIFtCVUcgMzUyNjU0OV06IENWRS0yMDEyLTIxNDEgQXJyYXkgaW5kZXggZXJyb3IgbGVhZGluZyB0byBjcmFzaAorICAgICAgLSBbQlVHIDM1MzIwOTBdOiBGaXggaGlnaCBpZkluZGV4IHZhbHVlcyBjcmFzaGluZyBockRldmljZURlc2NyCisgICAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgd2lsbCBhZmZlY3QgdGhlIGluZGV4aW5nIG9mICphbGwqIGVudHJpZXMgaW4KKyAgICAgICAgICAgICB0aGUgaHJEZXZpY2VUYWJsZS4gIEFzc3VtcHRpb25zIGFzIHRvIHdoYXQgaW5kZXggYSBnaXZlbiBkZXZpY2UKKyAgICAgICAgICAgICB3aWxsIHVzZSwgYXJlIG5vIGxvbmdlciB2YWxpZC4KKworICAgIGJ1aWxkaW5nOgorICAgICAgLSBbUEFUQ0ggMjA5MTE1Nl06IEZpeCBwYXJhbGxlbCBidWlsZHMgKHVzaW5nICdtYWtlIC1qIDxOPicpCisKKyogNS41LjEgKgorCisgICAgc25tcGQ6CisgICAgICAtIEZpeCBoYW5kbGluZyBvZiBtdWx0aXBsZSBtYXRjaGluZyBWQUNNIGVudHJpZXMuCisgICAgICAgIChVc2UgdGhlICJiZXN0IiBtYXRjaCwgcmF0aGVyIHRoYW4gdGhlIGZpcnN0IG9uZSkuCisJTm90ZSB0aGF0IHRoaXMgY291bGQgcG90ZW50aWFsbHkgYWZmZWN0IHRoZSBiZWhhdmlvdXIKKwlvZiBleGlzdGluZyBhY2Nlc3MgY29udHJvbCBjb25maWd1cmF0aW9ucy4KIAogICAgIEZyZWVCU0QsTmV0QlNELE9wZW5CU0Q6CiAgICAgICAgIEluY29ycG9yYXRlIGZpeGVzIGZyb20gdGhlc2UgTy9TIHBhdGNoIGFyY2hpdmVzCiAKKyogNS41ICoKIAotKjUuNC4zKgorICAgIEFsbCBhcHBsaWNhdGlvbnM6CisgICAgICAtIEFkZGVkIHRoZSBhYmlsaXR5IHRvICJhbGlhcyIgdHJhbnNwb3J0cyB0byBhIG1vcmUgc2ltcGxlIG5hbWUKKyAgICAgICAgIChzZWUgdGhlICJhbGlhcyIga2V5d29yZCBpbiB0aGUgc25tcC5jb25mIG1hbnVhbCBwYWdlKQorICAgICAgLSBUaGUgLXQgKHRpbWVvdXQpIHN3aXRjaCB3aWxsIGFjY2VwdCBmbG9hdGluZyBwb2ludCBudW1iZXJzIChlZzogLjEpCiAKICAgICBzbm1wZDoKLSAgICAgIC0gQ2hhbmdlIGRlZmF1bHQgQWdlbnRYIHRhcmdldCBmcm9tIDAuMC4wLjA6NzA1IHRvIGxvY2FsaG9zdDo3MDUKLSAgICAgIC0gRml4IENWRS0yMDA4LTQzMDkgKEdFVEJVTEsgaXNzdWUgcmVwb3J0ZWQgYnkgT3NjYXIgTWlyYS1TYW5jaGV6KQotICAgICAgLSBGaXggaGFuZGxpbmcgb2YgbXVsdGlwbGUgbWF0Y2hpbmcgVkFDTSBlbnRyaWVzCi0gICAgICAgIChVc2UgdGhlICJiZXN0IiBtYXRjaCwgcmF0aGVyIHRoYW4gdGhlIGZpcnN0IG9uZSkuCi0gICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBjb3VsZCBwb3RlbnRpYWxseSBhZmZlY3QgdGhlIGJlaGF2aW91ciBvZgotICAgICAgICAgICAgZXhpc3RpbmcgYWNjZXNzIGNvbnRyb2wgY29uZmlndXJhdGlvbnMuCi0gICAgICAtIExhdGNoIGxhcmdlLWRpc2sgc3RhdGlzdGljcyBhdCAyVGIgKHJhdGhlciB0aGFuIHdyYXBwaW5nKQorICAgICAgLSBbQlVHIDE3MTI5ODhdOiBkZWZhdWx0L2NvbmZpZ3VyYWJsZSBtYXggIyB2YXJiaW5kcyByZXR1cm5lZCBieSBHRVRCVUxLCisgICAgICAtIFtQQVRDSCAxNTg1MTQ2XTogRXh0ZW5kIHJhbmdlIG9mIGF2YWlsYWJsZSBlcnJvciBjb2RlcworICAgICAgLSBbUEFUQ0ggMTY1NDQyNF06IEhhbmRsZSByb3cgZGVsZXRpb24gaXNzdWVzIGluIGRhdGFzZXQgdGFibGVzCisgICAgICAtIFtQQVRDSCAxNjY2NzM3XTogSW5jbHVkZSBJUHY2IHRyYWZmaWMgaW4gdmFyaW91cyBVRFAgY291bnRlcnMKKyAgICAgIC0gW1BBVENIIDE3MDAxNTddOiBGaXggb3JkZXJpbmcgb2YgZXhlYyB0b2tlbnMgaW4gTUlCIG91dHB1dAorICAgICAgLSBbUEFUQ0ggMTcxOTI1M106IGZpeCBza2lwTkZTSW5Ib3N0UmVzb3VyY2VzIGZvciBtdWx0aXBsZSB3YWxrcworICAgICAgLSBbUEFUQ0ggMTcyMzYxMV06IE5ldyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUk1PTiBhbGFybVRhYmxlCisgICAgICAtIFtQQVRDSCAxNzM3NDM5XTogYXV0b21hdGljIGxpbmsgdXAvZG93biB0cmFwcyBvbiBhIHdhbGsKKyAgICAgIC0gW1BBVENIIDE4MDY1MDFdOiBBZGQgQVBJIGZvciBzZW5kaW5nIHRyYXBzIHdpdGggYSBzbm1wdjMgY29udGV4dAorICAgICAgLSBbUEFUQ0ggMTg4MjYyMV06IEFkZCBMVk0gc3VwcG9ydCB0byB0aGUgcGFydGl0aW9uIHRhYmxlCisgICAgICAtIFtQQVRDSCAxODkzNDY4XTogZml4ZWQgcmVnaXN0cmF0aW9uIG9mIE9JRHMgd2l0aCByYW5nZXMKKyAgICAgIC0gW1BBVENIIDE5MDE3NjRdOiBTdXBwb3J0IGRhdGUtYmFzZWQgbG9nd2F0Y2ggZmlsZXMKKyAgICAgIC0gW1BBVENIIDE5MDk4MTNdOiBmaXggdGFibGVfaXRlcmF0b3IgaGFuZGxpbmcgb2YgU09SVEVEIGhpbnQKKyAgICAgIC0gW1BBVENIIDE5MTY4NDBdOiBuZXcgY29uZmlnIG9wdGlvbiB0byBzZXQgU05NUHYxIHRyYXAgYWdlbnQgYWRkcmVzcworICAgICAgLSBbUEFUQ0ggMjEwMzQ5Ml06IGltcGxlbWVudCBSTU9OLU1JQjo6ZXRoZXJTdGF0c0phYmJlcnMKKyAgICAgIC0gW1BBVENIIDI0NDkyMTBdOiBhZGQgNjQtYml0IHVzYWdlIHN0YXRpc3RpY3MgdG8gVUNELVNOTVAtTUlCOjpkc2tUYWJsZQorICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgYSB1c2VyIHByb3ZpZGVkIGxlbmd0aCB2YXJpYWJsZQorCSAgIGFuZCBDIHN0cmluZyB2YWx1ZXMgdG8gdGhlIHdhdGNoZXIgaGVscGVyLgorICAgICAgLSBBdXRvbWF0aWNhbGx5IHJlcmVnaXN0ZXIgc3lzT1JUYWJsZSBlbnRyaWVzIGZyb20gQWdlbnRYIHN1YmFnZW50cy4KKyAgICAgIC0gRml4IHZhcmlvdXMgbWVtb3J5IGxlYWtzCisgICAgICAtIEltcGxlbWVudCBpcEFkZHJlc3NTcGluTG9jaworICAgICAgLSBJbXBsZW1lbnQgaXBOZXRUb1BoeXNpY2FsTGFzdFVwZGF0ZWQKKyAgICAgIC0gU3VwcHJlc3MgYW5ub3lpbmcgInJlZ2lzdHJhdGlvbiAhPSBkdXBsaWNhdGUiIHdhcm5pbmcgZm9yIHJvb3Qgb2lkcwogCi0gICAgTGludXg6Ci0gICAgICAtIEZpeCBidWlsZCBvbiBtb2Rlcm4gZGlzdHJpYnV0aW9ucyAodXNpbmcgcnBtLTQuNikKKyAgICBzbm1wdHJhcGQ6CisgICAgICAtIFtQQVRDSCAxOTA4Mjg4XTogUnVuIHBlcmwgRU5EIGJsb2NrIG9uIHRlcm1pbmF0aW9uCisgICAgICAtIEFkZCB0cmFwIGhhbmRsZXIgZm9yIGxvZ2dpbmcgdHJhcHMgdG8gYSBteXNxbCBkYXRhYmFzZQorICAgICAgLSBXaXRoZHJhdyBkZXByZWNhdGVkIG9wdGlvbnMuCiAKLSAgICBXaW5kb3dzOgotICAgICAgLSBGaXggdmFyaW91cyBidWlsZHMgKHJlY2VudCBNU1ZDLCBNaW5HVywgSVB2Niwgd2luRXh0RExMKQorICAgIHNubXBuZXRzdGF0OgorICAgICAgLSBbUEFUQ0ggMjU2NDUzOF06IFN1cHBvcnQgR0VUQlVMSyBpbiB2MmMrIHNubXAgdmVyc2lvbnMKIAotCi0qNS40LjIqCisgICAgc25tcHVzbToKKyAgICAgIC0gW1BBVENIIDE1OTEzNTVdOiBBbGxvdyBjbG9uaW5nIHRvIGFyYml0cmFyeSBlbmdpbmVJRHMKIAogICAgIHNubXBsaWI6Ci0gICAgICAtIFtQQVRDSCAxOTIxODYxXTogQXZvaWQgZW5kbGVzcyBsb29wIGFmdGVyIHRydW5jYXRpbmcgNjRiaXQgaW50Ci0gICAgICAtIEJldHRlciBoYW5kbGluZyBvZiBDT05UQUlORVJfSU5TRVJUIGZhaWx1cmVzIHdpdGggbXVsdGlwbGUgaW5kaWNlcworICAgICAgLSBbQlVHIDE2MTk4MjddOiBJbXByb3ZlIGhhbmRsaW5nIG9mIGxpbmsgZGVwZW5kZW5jaWVzCisgICAgICAtIFtQQVRDSCAgNzAwNjgxXTogbGltaXRlZCBzdXBwb3J0IGZvciBVRFB2NCBicm9hZGNhc3QgYWRkcmVzc2VzCisgICAgICAtIFtQQVRDSCAxODgyMDY5XTogQWRkIHRva2VuIGZvciBzcGVjaWZ5aW5nIGFuIGV4YWN0IFNOTVB2MyBlbmdpbmVJRAorICAgICAgLSBGaXggYXNzb3J0ZWQgbWVtb3J5IGxlYWtzCisgICAgICAtIEltcGxlbWVudGVkIFJGQzUzNDMgY29udGV4dEVuZ2luZUlEIHByb2JpbmcuCisgICAgICAtIFN1cHBvcnQgZm9yIHRoZSBUU00gc2VjdXJpdHkgbW9kZWwgZm9yIHVzZSB3aXRoIHR1bm5lbGluZwogCi0gICAgc25tcGQ6Ci0gICAgICAtIFtQQVRDSCAyMDIzNjMzXTogYWRkIFNDVFAtTUlCIGltcGxlbWVudGF0aW9uIChMaW51eCBvbmx5KQotICAgICAgLSBzdXBwcmVzcyBhbm5veWluZyAicmVnaXN0cmF0aW9uICE9IGR1cGxpY2F0ZSIgd2FybmluZyBmb3Igcm9vdCBvaWRzCisgICAgbWlzYzoKKyAgICAgIC0gQWRkIGNvbmZpZyByZXJlYWQgc3VwcG9ydCB0byAibmV0LXNubXAtY29uZmlnIC0tY29tcGlsZS1zdWJhZ2VudCIgY29kZQorICAgICAgLSBQcmVsaW1pbmFyeSAoYWxwaGEpIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBTU0ggYW5kIERUTFMvVURQLgorICAgICAgLSBQcmVsaW1pbmFyeSAoYWxwaGEpIHN1cHBvcnQgZm9yIHRoZSBUU00gc2VjdXJpdHkgbW9kZWwKKyAgICAgIC0gU2VwYXJhdGUgdXNlciBtYW5hZ2VtZW50IGludG8gbmV3IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIHNjcmlwdAogCi0gICAgYnVpbGQ6Ci0gICAgICAtIFtCVUcgMjAyMzgwM106IENvbXBpbGF0aW9uIHByb2JsZW1zIG9uIEhQLVVYIDExLjMxCi0gICAgICAtIFVwZGF0ZSB0byBsaWJ0b29sIDEuNS4yNgotCi0gICAgQUlYOgotICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgQUlYIDYueC4KLQotCi0qNS40LjEqCi0KLSAgICBzbm1wbGliOgotICAgICAgLSBbQlVHIDE2MTk4MjddOiBsaW5rIGxpYnJhcmllcyBhZ2FpbnN0IG5lZWRlZCBleHRlcm5hbCBsaWJyYXJpZXMKLSAgICAgIC0gW1BBVENIIDE2MTY5MTJdOiBmaXggbWVtb3J5IGxlYWsgaW4gVURQIHRyYW5zcG9ydCBjb2RlCi0gICAgICAtIFtQQVRDSCAxNTkyNzA2XTogZml4IG1lbW9yeSBsZWFrIHdoZW4gY2xvbmluZyB2YXJiaW5kcwotICAgICAgLSBDaGFuZ2Ugc25tcF9zZXNzX2FkZF9leCB0byBjb25zaXN0ZW50bHkgY2xvc2UgYW5kIGRlbGV0ZSB0aGUKLSAgICAgICAgdHJhbnNwb3J0IGFyZ3VtZW50IG9uIGZhaWx1cmUsIGVhcmxpZXIgdGhlIGxpdmVuZXNzIG9mIHRoZQotICAgICAgICB0cmFuc3BvcnQgYXJndW1lbnQgd2FzIHVuZGVjaWRlZC4KLQotICAgIHNubXBkOgotICAgICAgLSBbQlVHIDE1NTg4MjNdOiBmaXggaXBBZGRyZXNzVGFibGUgbWVtb3J5IGxlYWsKLSAgICAgIC0gW0JVRyAxNTk2NjM4XTogZml4IG1lbW9yeSBsZWFrIGluIGlwQ2lkclJvdXRlVGFibGUsIGluZXRDaWRyUm91dGVUYWJsZQotICAgICAgLSBbQlVHIDE2MTE1MjRdOiBmaXggdGNwIGNvbm5lY3Rpb24gdGFibGUgZmlsZSBkZXNjcmlwdG9yIGxlYWsKLSAgICAgIC0gaGFuZGxlIHJvdyBkZWxldGlvbiBpc3N1ZXMgaW4gZGF0YXNldCB0YWJsZXMKLSAgICAgIC0gW0JVRyAxNzEyOTg4XTogZGVmYXVsdCBhbmQgY29uZmlndXJhYmxlIG1heGltdW0gbnVtYmVyIG9mCi0gICAgICAgIHZhcmJpbmRzIHJldHVybmFibGUgdG8gYSBHRVRCVUxLIHJlcXVlc3QuCi0gICAgICAtIFtQQVRDSCAxNjY2NzM3XTogaW5jbHVkZSBpcHY2IGNvdW50cyBpbgotCXVkcEluRGF0YWdyYW1zLCB1ZHBOb1BvcnRzLCB1ZHBJbkVycm9ycywgdWRwT3V0RGF0YWdyYW1zCi0gICAgICAtIFtQQVRDSCAxNzAwMTU3XTogZml4ZXMgb3JkZXJpbmcgb2YgZXhlYyB0b2tlbnMgaW4gdGhlIHJlc3VsdGluZyBtaWIgdHJlZQotICAgICAgLSBbUEFUQ0ggMTcxOTI1M106IGZpeCBza2lwTkZTSW5Ib3N0UmVzb3VyY2VzIHNvIGl0IGRvZXMgbm90IGJyZWFrIG9uIHRoZQotCXNlY29uZCB3YWxrIG9mIHRoZSB0YWJsZS4KKyAgICBidWlsZGluZzoKKyAgICAgIC0gSW1wcm92ZWQgY3Jvc3MtY29tcGlsYXRpb24gc3VwcG9ydAorICAgICAgLSBJbXByb3ZlZCBsaWJyYXJ5IGxheWVyaW5nICYgZGVwZW5kZW5jeSBoYW5kbGluZyB3aGVuIGxpbmtpbmcgYXBwcworICAgICAgLSBJbXByb3ZlZCBSUE0gc3BlYyBmaWxlcywgZm9yIGNvbnNpc3RlbmN5IHdpdGggdmVuZG9yLXByb3ZpZGVkIHBhY2thZ2VzLgorICAgICAgLSBNZWNoYW5pc20gZm9yIHNlbGVjdGluZyBidWlsZCBlbnZpcm9ubWVudCBiYXNlZCBvbiB2ZXJzaW9uCisgICAgICAtIE5ldyB0ZXN0IHNjcmlwdHMgdG8gdGVzdCBOZXQtU05NUCB0cmFuc3BvcnQgZnVuY3Rpb25hbGl0eQorICAgICAgLSBSZXN0cnVjdHVyZSBjb25maWd1cmUgdGVtcGxhdGUKKyAgICAgIC0gVXBkYXRlIHRvIGF1dG9jb25mIDIuNjMgJiBsaWJ0b29sIDIuMi42CiAKICAgICBwZXJsOgotICAgICAgLSBsaW5rIFBlcmwgbW9kdWxlcyBhZ2FpbnN0IHRoZSBleGFjdCBzZXQgb2YgbGlicmFyaWVzIG5lZWRlZAotICAgICAgLSBbQlVHIDE2MTk4MjddOiBwcm9wZXJseSBsaW5rIGFnYWluc3QgbGlicGVybCB3aGVuIGNvbmZpZ3VyZWQgd2l0aAotCS0tZW5hYmxlLWFzLW5lZWRlZAotICAgICAgLSBbUEFUQ0ggMTcyNTA0OV06IGZpeCBidWxrd2FsayBpbiBjYXNlcyBvZiBub24tcmVwZWF0ZXIKLQotICAgIGJ1aWxkOgotICAgICAgLSB1cGRhdGUgdG8gbGlidG9vbCAxLjUuMjQgKGZyb20gMS41LjIyKQorICAgICAgLSBbQlVHIDE2MTk4MjddOiBpbXByb3ZlIGhhbmRsaW5nIG9mIGxpbmsgZGVwZW5kZW5jaWVzCisgICAgICAtIFtQQVRDSCAxOTU2MTkzXTogYmV0YSB0aHJlYWRhYmxlIHBlcmwgbW9kdWxlIGNvZGUgZm9yIFNOTVB2MS8yYyB1c2FnZS4KIAogICAgIHB5dGhvbjoKLSAgICAgIC0gW1BBVENIIDE3MTYxMTRdOiBMZXQgcHl0aG9uIGJ1aWxkIGluIHRoZSBOZXQtU05NUCBzb3VyY2UgdHJlZQorICAgICAgLSBbUEFUQ0ggMTcxNjExNF06IExldCBweXRob24gYnVpbGQgaW4gc291cmNlIHRyZWUgKERlYmlhbiBwYXRjaCAjMzgpCiAKLSAgICBNYWNPU1g6Ci0gICAgICAtIFtQQVRDSCAxNjAwNTIyXTogQ1BVIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIChIQUwpCi0gICAgICAgIGltcGxlbWVudGF0aW9uIGZvciBtYWNoL2RhcndpbgotICAgICAgLSBJRi1NSUIgcmV3cml0ZSBub3cgZW5hYmxlZCBieSBkZWZhdWx0Ci0KLSAgICBXaW4zMjoKLSAgICAgIC0gZml4IEFFUyBzdXBwb3J0Ci0gICAgICAtIFtQQVRDSCAxNzA2MzQ0XTogZml4IGNvbXBpbGF0aW9uIHdpdGggY3lnd2luCi0KLSAgICBJUklYOgotICAgICAgLSBbUEFUQ0ggMTcwOTc0OF06IE9wdGltaXplZCBJUklYIGNwdSBzdGF0cworICAgIExpbnV4OgorICAgICAgLSBbUEFUQ0ggMTcwNDEwNV06IEFkZCBJUHY2IHN1cHBvcnQgdG8gdGhlIGluZXROZXRUb01lZGlhVGFibGUKKyAgICAgIC0gW1BBVENIIDE3MDU1OTRdOiBWYXJpb3VzIGZpeGVzIHRvIGlwQWRkcmVzc1ByZWZpeFRhYmxlIHJlcG9ydGluZworICAgICAgLSBbUEFUQ0ggMTcwODI0M106IEltcGxlbWVudCBpcERlZmF1bHRSb3V0ZVRhYmxlCisgICAgICAtIFtQQVRDSCAxNzE1NDA1XTogSW1wbGVtZW50IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgICAgICAtIFtQQVRDSCAxNzI0NjAyXTogTWZELWJhc2VkIGlwRGVmYXVsdFJvdXRlclRhYmxlIGltcGxlbWVudGF0aW9uCisgICAgICAtIFtQQVRDSCAxODI4NjAyXTogU3VwcG9ydCBpcERlZmF1bHRUVEwgYW5kIGlwRm9yd2FyZGluZyBTRVRzCisgICAgICAtIFtQQVRDSCAxOTI3NzUxXTogSW1wbGVtZW50IGljbXBNc2dTdGF0c1RhYmxlCisgICAgICAtIFtQQVRDSCAyMDIzNjMzXTogSW1wbGVtZW50IFNDVFAtTUlCCisgICAgICAtIFtQQVRDSCAyMDUzMjczXTogSW1wbGVtZW50IEV0aGVyTGlrZSBNSUIKIAogICAgIEFJWDoKLSAgICAgIC0gRml4IGRlZmF1bHQgc2hhcmVkIGxpYnJhcnkgYnVpbGRpbmcgaW5zdGVhZCBvZiBmb3JjaW5nIHN0YXRpYyB1c2UKKyAgICAgIC0gQWRkIHN1cHBvcnQgZm9yIEFJWCA2LngKKyAgICAgIC0gRml4IGRlZmF1bHQgc2hhcmVkIGxpYnJhcnkgYnVpbGRpbmcgaW5zdGVhZCBvZiBmb3JjaW5nIHN0YXRpYwogCiAgICAgRnJlZUJTRDoKICAgICAgIC0gW0JVRyAxNjMzNDgzXTogU3VwcG9ydCBDUFUgSEFMIG9uIEZyZWVCU0Q0LngKKyAgICAgIC0gW1BBVENIIDE2MjM4NzRdOiBhZGQgR05VL2tGcmVlQlNEIHN1cHBvcnQKKworICAgIElSSVg6CisgICAgICAtIFtQQVRDSCAxNzA5NzQ4XTogT3B0aW1pemVkIElSSVggY3B1IHN0YXRzCisgICAgICAtIFtQQVRDSCAxNjc1ODY5XTogQ1BVIHN0YXRpc3RpY3MgZm9yIElSSVggYmFzZWQgb24gUENQCisKKyAgICBNYWNPU1g6CisgICAgICAtIFtQQVRDSCAxNjAwNTIyXTogQ1BVIEhBTCBpbXBsZW1lbnRhdGlvbiBmb3IgbWFjaC9kYXJ3aW4KKworICAgIFNvbGFyaXM6CisgICAgICAtIFtQQVRDSCAxNzE5NzMwXTogc3VwcG9ydCBmb3IgaXBTeXN0ZW1TdGF0c1RhYmxlIGFuZCBpcEFkZHJlc3NUYWJsZQorCisgICAgV2luMzI6CisgICAgICAtIFtQQVRDSCAyNjg2MjQ4XTogRml4IHNldmVyYWwgd2luRXh0RExMIGJ1Z3MuCisgICAgICAtIFtQQVRDSCAxNzA2MzQ0XTogRml4IGNvbXBpbGF0aW9uIHdpdGggY3lnd2luCisgICAgICAtIEZpeCBBRVMgc3VwcG9ydAogCiAKICo1LjQqCmRpZmYgLS1naXQgYS9QT1JUSU5HIGIvUE9SVElORwppbmRleCBkYWNiMTVhLi4wMWUwOTU0IDEwMDY0NAotLS0gYS9QT1JUSU5HCisrKyBiL1BPUlRJTkcKQEAgLTc1LDE3ICs3NSwxMyBAQAogLS0tIFNUUlVDVFVSRSBNRU1CRVIgQ0hFQ0tTCiAKIEluIGNvbmZpZ3VyZS5pbjoKLSAgQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCisgIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBTVFJVQ1RVUkUuTUVNQkVSXSwsLFtbCiAjaW5jbHVkZSBsaW5lcwotXSwgU1RSVUNUVVJFLCBNRU1CRVIpCi0gICBeXl5eXl5eXl4gIF5eXl5eXiAgKGNoYW5nZSkKLQotSW4gYWNjb25maWcuaDoKLSAgI3VuZGVmIFNUUlVDVF9TVFJVQ1RVUkVfSEFTX01FTUJFUgotICAgICAgICAgICAgICAgIF5eXl5eXl5eXiAgICAgXl5eXl5eICAoY2hhbmdlKQorXV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl4gXl5eXl5eICAoY2hhbmdlKQogCiBJbiBzb3VyY2UgY29kZToKLSAgI2lmZGVmIFNUUlVDVF9TVFJVQ1RVUkVfSEFTX01FTUJFUgorICAjaWZkZWYgSEFWRV9TVFJVQ1RfU1RSVUNUVVJFX01FTUJFUgogICAgIC8qIHVzZSBpdCAqLwogICAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDYyOWFmMzEuLmQyNzljZTIgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNCArMSw0IEBACi0JICAgICAgIFJFQURNRSBmaWxlIGZvciBuZXQtc25tcCBWZXJzaW9uOiA1LjQuNAorCSAgICAgICBSRUFETUUgZmlsZSBmb3IgbmV0LXNubXAgVmVyc2lvbjogNS41LjIKIAogRElTQ0xBSU1FUgogCkBAIC0yNTYsNyArMjU2LDcgQEAKICAgICBEYW4gQS4gRGlja2V5IDxkZGlja2V5QHRyYW5zaXRpb24uY29tPgogICAgIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGNzYy5saXYuYWMudWs+CiAgICAgR2lvdmFubmkgUy4gTWFyem90IDxnbWFyem90QG5vcnRlbG5ldHdvcmtzLmNvbT4KLSAgICBOaWVscyBCYWdnZXNlbiA8cmVjbmJhQG1lZGlhdG9yLnVuaS1jLmRrPgorICAgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogICAgIFNpbW9uIExlaW5lbiA8c2ltb25AbGltbWF0LnN3aXRjaC5jaD4KICAgICBEYXZpZCBULiBQZXJraW5zIDxkcGVya2luc0Bkc3BlcmtpbnMuY29tPgogICAgIE1pa2UgUGVyaWsgPG1pa2VwQGNydC5jb20+CmRpZmYgLS1naXQgYS9SRUFETUUuYWdlbnQtbWlicyBiL1JFQURNRS5hZ2VudC1taWJzCmluZGV4IDg3MTZmOGQuLjQyODAyNGYgMTAwNjQ0Ci0tLSBhL1JFQURNRS5hZ2VudC1taWJzCisrKyBiL1JFQURNRS5hZ2VudC1taWJzCkBAIC00MCw2ICs0MCw3IEBACiAgIEcgIHNjYWxhciBncm91cCBoZWxwZXIKICAgVyAgd2F0Y2hlZCBzY2FsYXIgCiAgIE0gIG1mZAorICBDICBjb250YWluZXIgdGFibGUKIAogUGxhdGZvcm0gS2V5cwogLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02Myw5ICs2NCwxMCBAQAogIHRhYmxlL29iamVjdCBncm91cCAgICAgICAgICAgT1MgICAgICAgUmVsICAgU3R5bCBGaWxlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIFNOTVB2Mi1NSUIKLSBzeXN0ZW0uKi4wICAgICAgICAgICAgICAgICAgIEEgICAgICAgICAzLjIgICAgIE8gbWliSUkvc3lzdGVtX21pYi5jCi0gc3lzT1JUYWJsZSAgICAgICAgICAgICAgICAgICBBICAgICAgICAgMy40ICAgICBPIG1pYklJL3N5c09SVGFibGUuYwotIHNubXAuKi4wICAgICAgICAgICAgICAgICAgICAgQSAgICAgICAgIDMuMiAgICAgTyBtaWJJSS9zbm1wX21pYi5jCisgc3lzdGVtLj8uMCAgICAgICAgICAgICAgICAgICBBICAgICAgICAgNS41ICAgICBXIG1pYklJL3N5c3RlbV9taWIuYworIC5zeXNPUkxhc3RDaGFuZ2UuMCAgICAgICAgICAgQSAgICAgICAgIDUuNSAgICAgVyBtaWJJSS9zeXNPUlRhYmxlLmMKKyBzeXNPUlRhYmxlICAgICAgICAgICAgICAgICAgIEEgICAgICAgICA1LjUgICAgIEMgbWliSUkvc3lzT1JUYWJsZS5jCisgc25tcC4qLjAgICAgICAgICAgICAgICAgICAgICBBICAgICAgICAgNS41ICAgICBHIG1pYklJL3NubXBfbWliXzVfNS5jCiAgc2V0U2VyaWFsTm8uMCAgICAgICAgICAgICAgICBBICAgICAgICAgNS4wICAgICBXIG1pYklJL3NldFNlcmlhbE5vLmMKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03NCwxNSArNzYsMTUgQEAKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBTTk1QLU1QRC1NSUIKLSBzbm1wTVBEU3RhdHMuKi4wICAgICAgICAgICAgIEEgICAgICAgICB+NC4wPyAgIE8gc25tcHYzL3NubXBNUERTdGF0cy5jCisgc25tcE1QRFN0YXRzLiouMCAgICAgICAgICAgICBBICAgICAgICAgfjQuMD8gICBHIHNubXB2My9zbm1wTVBEU3RhdHNfNV81LmMKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBTTk1QLVRBUkdFVC1NSUIKICBzbm1wVGFyZ2V0U3BpbkxvY2suMCAgICAgICAgIEEgICAgICAgICAzLjYgICAgIE8gdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYwogIHNubXBUYXJnZXRBZGRyVGFibGUgICAgICAgICAgQSAgICAgICAgIDMuNiAgICAgTyB0YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jCiAgc25tcFRhcmdldFBhcmFtc1RhYmxlICAgICAgICBBICAgICAgICAgMy42ICAgICBPIHRhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYwotIHNubXBVbmF2YWlsYWJsZUNvbnRleHRzLjAgICAgQSAgICAgICAgIDUuMCAgICAgTyB0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMKLSBzbm1wVW5rbm93bkNvbnRleHRzLjAgICAgICAgIEEgICAgICAgICA1LjAgICAgIE8gdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jCisgc25tcFVuYXZhaWxhYmxlQ29udGV4dHMuMCAgICBBICAgICAgICAgNS41ICAgICBHIHRhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMKKyBzbm1wVW5rbm93bkNvbnRleHRzLjAgICAgICAgIEEgICAgICAgICA1LjUgICAgIEcgdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNOTVAtTk9USUZJQ0FUSU9OLU1JQgpAQCAtMTAzLDYgKzEwNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNOTVAtVVNFUi1CQVNFRC1TTS1NSUIKICB1c21TdGF0cy4qLjAgICAgICAgICAgICAgICAgIEEgICAgICAgICB+NC4wICAgIE8gc25tcHYzL3VzbVN0YXRzLmMKKyB1c21TdGF0cy4qLjAgICAgICAgICAgICAgICAgIEEgICAgICAgICA1LjUgICAgIEcgc25tcHYzL3VzbVN0YXRzXzVfNS5jCiAgdXNtVXNlclRhYmxlICAgICAgICAgICAgICAgICBBICAgICAgICAgfjQuMD8gICBPIHNubXB2My91c21Vc2VyLmMKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNTEsMTkgKzE1NCwyMSBAQAogIGljbXAuKi4wICAgICAgICAgICAgICAgICAgICAgVSAkMiAgICAgIH4zLjIgICAgRyBtaWJJSS9pY21wLmMKIAogIGlwU3lzdGVtU3RhdHNUYWJsZSAgICAgICAgICAgTCAgICAgICAgIDUuMiAgICAgTSBpcC1taWIvPS8qCisgaXBTeXN0ZW1TdGF0c1RhYmxlICAgICAgICAgICAgUyAgICAgICAgNS41ICAgICBNIGlwLW1pYi89LyoKICBpcElmU3RhdHNUYWJsZUxhc3RDaGFuZ2UuMCAgIC0tLQotIGlwSWZTdGF0c1RhYmxlICAgICAgICAgICAgICAgLS0tCisgaXBJZlN0YXRzVGFibGUgICAgICAgICAgICAgICBMLS0gICAgICAgNS41ICAgICBNIGlwLW1pYi89LyoKIAogIGlwQWRkclRhYmxlIChEKSAgICAgICAgICAgICAgVSAkMiAgICAgIDQuMiAgICAgTyBtaWJJSS9pcEFkZHIuYwotIGlwQWRkcmVzc1NwaW5Mb2NrLjAgICAgICAgICAgLS0tCisgaXBBZGRyZXNzU3BpbkxvY2suMCAgICAgICAgICBBICAgICAgICAgNS41ICAgICBPIG1pYklJL2lwQWRkci5jCiAgaXBBZGRyZXNzVGFibGUgICAgICAgICAgICAgICBMICAgICAgICAgNS4yICAgICBNIGlwLW1pYi89LyoKKyBpcEFkZHJlc3NUYWJsZSAgICAgICAgICAgICAgICBTICAgICAgICA1LjUgICAgIE0gaXAtbWliLz0vKgogIGlwQWRkcmVzc1ByZWZpeFRhYmxlICAgICAgICAgTCAgICAgICAgIDUuMyAgICAgTSBpcC1taWIvPS8qCiAKICBpcFJvdXRlVGFibGUgKEQpICAgICAgICAgICAgIFUgJDIgICAgICB+My41ICAgIE8gbWliSUkvKnJvdXRlKi5jCiAgaXBOZXRUb01lZGlhVGFibGUgKEQpICAgICAgICBVICQyICAgICAgfjMuNSAgICBPIG1pYklJL2F0LmMKICBpcE5ldFRvUGh5c2ljYWxUYWJsZSAgICAgICAgIChpbXBsZW1lbnRlZCBhcyBpbmV0TmV0VG9NZWRpYVRhYmxlKQogIGluZXROZXRUb01lZGlhVGFibGUgICAgICAgICAgTCAgICAgICAgIDUuMiAgICAgTSBpcC1taWIvPS8qCi0gaXBEZWZhdWx0Um91dGVyVGFibGUgICAgICAgICAtLS0KKyBpcERlZmF1bHRSb3V0ZXJUYWJsZSAgICAgICAgIEwgICAgICAgICA1LjUgICAgIE0gaXAtbWliLz0vKgogCiAgaWNtcFN0YXRzVGFibGUgICAgICAgICAgICAgICAtLS0KICBpY21wTXNnU3RhdHNUYWJsZSAgICAgICAgICAgIC0tLQpAQCAtMTc5LDYgKzE4NCw5IEBACiAgaXB2NlJvdXRlckFkdmVydFNwaW5Mb2NrLjAgICAtLS0KICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSAgICAgIC0tLQogCisgaXBGb3J3YXJkaW5nLjAgICAgICAgICAgICAgICBMICAgICAgICAgIDUuNCAgICBTIGlwLW1pYi9pcF9zY2FsYXJzLmMKKyBpcERlZmF1bHRUVEwuMCAgICAgICAgICAgICAgIEwgICAgICAgICAgNS40ICAgIFMgaXAtbWliL2lwX3NjYWxhcnMuYworCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIElQVjYtTUlCCiAgaXB2Nk1JQk9iamVjdHMuPy4wICAgICAgICAgICBVICAgICAgICAgNC4xICAgICBPIG1pYklJL2lwdjYuYwpAQCAtMjM2LDYgKzI0NCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFJNT04tTUlCCiAgZXRoZXJTdGF0c1RhYmxlICAgICAgICAgICAgICBVICAgICAgICAgNS4wICAgICBPIFJtb24vc3RhdGlzdGljcy5jCisgLmV0aGVyU3RhdHNKYWJiZXJzICAgICAgICAgICBMMyAgICAgICAgNS41ICAgICBNIHJtb24tbWliLz0vKgogIGV0aGVySGlzdG9yeUNvbnRyb2xUYWJsZSAgICAgVSAgICAgICAgIDUuMCAgICAgTyBSbW9uL2hpc3RvcnkuYwogIGV0aGVySGlzdG9yeVRhYmxlICAgICAgICAgICAgVSAgICAgICAgIDUuMCAgICAgTyBSbW9uL2hpc3RvcnkuYwogIGFsYXJtVGFibGUgICAgICAgICAgICAgICAgICAgVSAgICAgICAgIDMuMiAgICAgTyBSbW9uL2FsYXJtLmMKQEAgLTMyMyw3ICszMzIsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIEV0aGVyTGlrZS1NSUIKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLQorIGRvdDNTdGF0c1RhYmxlICAgICAgICAgICAgICAgTCAgICAgICAgNS41ICAgICAgTSBldGhlcmxpa2UtbWliLz0KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBBR0VOVFgtTUlCCkBAIC00MDgsMTYgKzQxNywxNiBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNDVFAtTUlCCi0gc2N0cFN0YXRzICAgICAgICAgICAgICAgICAgICBMICAgICAgICAgNS40LjIgICBTIHNjdHAtbWliL3NjdHBTY2FsYXJzKgotIHNjdHBQYXJhbWV0ZXJzICAgICAgICAgICAgICAgTCAgICAgICAgIDUuNC4yICAgUyBzY3RwLW1pYi9zY3RwU2NhbGFycyoKLSBzY3RwQXNzb2NUYWJsZSAgICAgICAgICAgICAgIEwgICAgICAgICA1LjQuMiAgIEMgc2N0cC1taWIvPQotIHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlICAgICAgTCAgICAgICAgIDUuNC4yICAgQyBzY3RwLW1pYi89Ci0gc2N0cEFzc29jUmVtQWRkclRhYmxlICAgICAgICBMICAgICAgICAgNS40LjIgICBDIHNjdHAtbWliLz0KLSBzY3RwTG9va3VwTG9jYWxQb3J0VGFibGUgICAgIEwgICAgICAgICA1LjQuMiAgIEMgc2N0cC1taWIvPQotIHNjdHBMb29rdXBSZW1Qb3J0VGFibGUgICAgICAgTCAgICAgICAgIDUuNC4yICAgQyBzY3RwLW1pYi89Ci0gc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUgICBMICAgICAgICAgNS40LjIgICBDIHNjdHAtbWliLz0KLSBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlIEwgICAgICAgICA1LjQuMiAgIEMgc2N0cC1taWIvPQotIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSAgICAgTCAgICAgICAgIDUuNC4yICAgQyBzY3RwLW1pYi89Cisgc2N0cFN0YXRzICAgICAgICAgICAgICAgICAgICBMICAgICAgICAgNS41ICAgICBTIHNjdHAtbWliL3NjdHBTY2FsYXJzKgorIHNjdHBQYXJhbWV0ZXJzICAgICAgICAgICAgICAgTCAgICAgICAgIDUuNSAgICAgUyBzY3RwLW1pYi9zY3RwU2NhbGFycyoKKyBzY3RwQXNzb2NUYWJsZSAgICAgICAgICAgICAgIEwgICAgICAgICA1LjUgICAgIEMgc2N0cC1taWIvPQorIHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlICAgICAgTCAgICAgICAgIDUuNSAgICAgQyBzY3RwLW1pYi89Cisgc2N0cEFzc29jUmVtQWRkclRhYmxlICAgICAgICBMICAgICAgICAgNS41ICAgICBDIHNjdHAtbWliLz0KKyBzY3RwTG9va3VwTG9jYWxQb3J0VGFibGUgICAgIEwgICAgICAgICA1LjUgICAgIEMgc2N0cC1taWIvPQorIHNjdHBMb29rdXBSZW1Qb3J0VGFibGUgICAgICAgTCAgICAgICAgIDUuNSAgICAgQyBzY3RwLW1pYi89Cisgc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUgICBMICAgICAgICAgNS41ICAgICBDIHNjdHAtbWliLz0KKyBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlIEwgICAgICAgICA1LjUgICAgIEMgc2N0cC1taWIvPQorIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSAgICAgTCAgICAgICAgIDUuNSAgICAgQyBzY3RwLW1pYi89CiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC00MjUsNiArNDM0LDcgQEAKIC0tLS0tLS0tLS0KICAxOiBhdmFpbGFibGUgZm9yIHN5c3RlbXMgdXNpbmcgS0FNRSBpcHY2CiAgMjogd2l0aCBwbGF0Zm9ybSBTREsuIFNlZSBSRUFETUUud2luMzIKKyAzOiB3b3JrcyBvbmx5IHdpdGggSW50ZWwgYW5kIEJyb2FkY29tIG5ldHdvcmsgY2FyZHMgYW5kIG11c3QgcnVuIGFzIHJvb3Qgb25seQogCiBPdGhlciBmZWF0dXJlIGluZm8KIC0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvUkVBRE1FLmFpeCBiL1JFQURNRS5haXgKaW5kZXggMTZmNzI1ZS4uZTI1ZTliNiAxMDA2NDQKLS0tIGEvUkVBRE1FLmFpeAorKysgYi9SRUFETUUuYWl4CkBAIC02LDcgKzYsNiBAQAogCiBUaGVyZSBhcmUgdGhlIGZvbGxvd2luZyBrbm93biBwcm9ibGVtcyBvbiBBSVg6CiAKLQogMSkgU2hhcmVkIGxpYnJhcmllcyAvIGVtYmVkZGVkIHBlcmwKIAogVXAgdG8gKGFuZCBpbmNsdWRpbmcpIG5ldC1zbm1wIDUuNCwgY29uZmlndXJlIGZvcmNlZCBhIHN0YXRpYyBidWlsZApAQCAtMTQsMTEgKzEzLDEwIEBACiAKIFN0YXJ0aW5nIHdpdGggbmV0LXNubXAgNS40LjEsIHdlIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgYnkgZGVmYXVsdCBvbiBBSVgKIChsaWtlIG9uIGFueSBvdGhlciBwbGF0Zm9ybSkgdXNpbmcgcnVuLXRpbWUgbGlua2luZy4gY29uZmlndXJlIGZvcmNlcyB0aGUKLXVzZSBvZiB0aGUgcmVxdWlyZWQgIi1icnRsIiBsaW5rZXIgZmxhZy4gV2UgYWxzbyByZWNvbW1lbmQKK3VzZSBvZiB0aGUgcmVxdWlyZWQgIi1icnRsIiBsaW5rZXIgZmxhZy4KIAotICAgLi9jb25maWd1cmUgLS1lbmFibGUtYXMtbmVlZGVkIC4uLgotCi1mb3IgcHJvcGVyIGxpYnBlcmwgbGlua2luZy4KK1dpdGggbmV0LXNubXAgNS41IHRoZSBzaGFyZWQgbGlicmFyeSBidWlsZCBpcyBicm9rZW4gYWdhaW4gYnV0IHRoZSB0aGVyZSBpcworbm8gZm9yY2VkIHN0YXRpYyBidWlsZCAtIHVzZSAtLWRpc2FibGUtc2hhcmVkIHdoZW4gYnVpbGRpbmcuCiAKIDIpICJncmVwOiBjYXBhY2l0eSBleGNlZWRlZCIgb3IgInNlZDogQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIiBkdXJpbmcgY29uZmlndXJlCiAKZGlmZiAtLWdpdCBhL1JFQURNRS5pcml4IGIvUkVBRE1FLmlyaXgKaW5kZXggNzliZjdlYy4uYzc5NzdlOSAxMDA2NDQKLS0tIGEvUkVBRE1FLmlyaXgKKysrIGIvUkVBRE1FLmlyaXgKQEAgLTM0LDE3ICszNCw3IEBACiAgIGh0dHA6Ly9zZi5uZXQvc3VwcG9ydC90cmFja2VyLnBocD9haWQ9MTY3NTg2OQogCiAKLTMuIFBlcmwKLS0tLS0tLS0KLQotV2hlbiBjb21waWxpbmcgd2l0aCBQZXJsIHN1cHBvcnQsIGl0J3MgcmVjb21tZW5kZWQgdG8gc3BlY2lmeQotCi0gIC4vY29uZmlndXJlIC0tZW5hYmxlLWFzLW5lZWRlZAotCi1mb3IgcHJvcGVyIGxpYnBlcmwgbGlua2luZy4KLQotCi00LiBLbm93biBJc3N1ZXMKKzMuIEtub3duIElzc3VlcwogLS0tLS0tLS0tLS0tLS0tCiAKIEFjY2Vzc2luZyBjZXJ0YWluIE1JQiBvYmplY3RzIG9uIElSSVg2NCBtYWNoaW5lcyAoaS5lLiB3aGVuIHJ1bm5pbmcgYSA2NC1iaXQgCkBAIC01Niw3ICs0Niw3IEBACiAgICAuL2NvbmZpZ3VyZSAtLXdpdGhvdXQta21lbS11c2FnZSAuLi4KIAogCi01LiBGZWVkYmFjaworMy4gRmVlZGJhY2sKIC0tLS0tLS0tLS0tCiAKIFBsZWFzZSBhbHNvIHNlZSBSRUFETUUgYW5kIFBPUlRJTkcuCmRpZmYgLS1naXQgYS9SRUFETUUub3NYIGIvUkVBRE1FLm9zWAppbmRleCBiMTVhZmE3Li40OWI1OGU3IDEwMDY0NAotLS0gYS9SRUFETUUub3NYCisrKyBiL1JFQURNRS5vc1gKQEAgLTcsMTAgKzcsNiBAQAogCiAgIC0gQUxMCiAKLSAgICAtIFRlc3QgNDQgKFBlcmwgQWdlbnRYIFN1YmFnZW50KSBmYWlscy4KLQotICAgICAgIC0gY29uZmlndXJlIHdpdGggLS1lbmFibGUtYXMtbmVlZGVkIGZvciBwcm9wZXIgbGlicGVybCBsaW5raW5nCi0KICAgICAtIG5saXN0IGRvZXNuJ3Qgc3VwcG9ydCBpY21wc3RhdAogCiAgICAgICAgLSBkaXNhYmxlIHRoZSBpY21wIG1vZHVsZSBkdXJpbmcgY29uZmlndXJlIGJ5IHNwZWNpZnlpbmcKQEAgLTE5LDcgKzE1LDcgQEAKIAogCiAgIC0gMTAuNC43IChVbml2ZXJzYWwpIGFuZCBMZW9wYXJkIHdpdGggNS40IHNvdXJjZXM6Ci0gICAgICAgIFtTdXBwbGllZCBieSBDaHJpcyBKYWxiZXJ0LCBzbGlnaHRseSB1cGRhdGVkXQorICAgICAgICBbU3VwcGxpZWQgYnkgQ2hyaXMgSmFsYmVydF0KIAogICAgICAgIC0gYnVpbGQgdXNpbmcgZ2NjIDQuMCAoc2VlIGJlbG93KSBhbmQgY29uZmlndXJlIHVzaW5nOgogICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXBlcnNpc3RlbnQtZGlyZWN0b3J5PS92YXIvZGIvbmV0LXNubXAgXApAQCAtMjcsNyArMjMsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXJwbSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtbWliLW1vZHVsZXM9Imhvc3QgdWNkLXNubXAvZGlza2lvIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtb3V0LW1pYi1tb2R1bGVzPSJtaWJJSS9pY21wIGhvc3QvaHJfc3dydW4iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFzLW5lZWRlZCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQta21lbS11c2FnZQogCiAgICAgICAgVGhlIGZpcnN0IGxpbmUgc2V0cyB1cCBwZXJzaXN0ZW50IHN0b3JhZ2UgaW4gdGhlIE9TIFggc3RhbmRhcmQgbG9jYXRpb24uCkBAIC02NCwyMCArNTksMyBAQAogICAgICAgICAgICAgICAgICAgIC0tcHJlZml4PS91c3IgLS13aXRoLXBlcnNpc3RlbnQtZGlyZWN0b3J5PS92YXIvZGIvdWNkLXNubXAKICAgICAgICAgICAgICAgICAgICAtLXdpdGgtbWliLW1vZHVsZXM9aG9zdAogCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdpdGggTWFjIE9TIFggMTAuNS4yLCBhbmQgTmV0LVNOTVAgNS40LjIsIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KLXNlZW1zIHRvIGJ1aWxkIGFuZCBydW4gc3VjY2Vzc2Z1bGx5LiAgIFRoZSBtYWluIHR3ZWFrIG5lZWRlZCB0byBnZXQKLXRoaW5ncyB3b3JraW5nIHdhcyB0byBkaXNhYmxlICJlbWJlZGRlZCBwZXJsIiAod2hpY2ggaXMgYWN0aXZlIGJ5Ci1kZWZhdWx0IGluIDUuNCBhbmQgYWJvdmUpLgotCi0gIFRoZSBpc3N1ZSBoZXJlIGlzIHRoYXQgZW5hYmxpbmcgZW1iZWRkZWQgcGVybCB3aWxsIHRyeSB0byB1c2UgdGhlCi1zYW1lIENGTEFHUyB1c2VkIGZvciBjb21waWxpbmcgcGVybCwgd2hlbiBjb21waWxpbmcgdGhlIE5ldC1TTk1QIGNvZGUKLSh3aGljaCBpcyBwcm9iYWJseSByZWFzb25hYmxlKS4gIFVuZm9ydHVuYXRlbHksIHRoZSBkZWZhdWx0IHBlcmwgYmluYXJ5Ci10aGF0IGNvbWVzIHdpdGggTWFjIE9TL1ggMTAuNSAoYXQgbGVhc3QpIGlzIGEgInVuaXZlcnNhbCBiaW5hcnkiLAotc28gdGhlIENGTEFHUyB0aGF0IGl0IHVzZXMgaW5jbHVkZSAiLWFyY2ggaTM4NiAtYXJjaCBwcGMiLiAgVGhpcwotZHVhbC1hcmNoaXRlY3R1cmUgb3B0aW9uIGNvbmZ1c2VzIHRoZSBjb25maWd1cmUgc2NyaXB0LCBhbmQgbWVhbnMKLXRoYXQgaXQgY2Fubm90IGRldGVjdCB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBob3N0IHN5c3RlbSBjb3JyZWN0bHkuCi0KLURhdmUKLUp1bmUgMjAwOApkaWZmIC0tZ2l0IGEvUkVBRE1FLnNvbGFyaXMgYi9SRUFETUUuc29sYXJpcwppbmRleCBhZWJjZTZmLi42MjVhYWUyIDEwMDY0NAotLS0gYS9SRUFETUUuc29sYXJpcworKysgYi9SRUFETUUuc29sYXJpcwpAQCAtOTk0LDEwICs5OTQsOCBAQAogCiAgICAuL2NvbmZpZ3VyZSAtZW5hYmxlLWVtYmVkZGVkLXBlcmwgLi4uCiAKLUl0J3MgcmVjb21tZW5kZWQgdG8gYWRkIC0tZW5hYmxlLWFzLW5lZWRlZCBmb3IgcHJvcGVyIGxpYnBlcmwgbGlua2luZy4KLQotRW5hYmxpbmcgUGVybCBzdXBwb3J0IHNob3VsZCBvbmx5IGJlIGRvbmUgaWYgeW91IGFyZSBzdXJlIHlvdSByZWFsbHkgCi1uZWVkIFBlcmwsIGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbnM6CitUaGlzIHNob3VsZCBvbmx5IGJlIGRvbmUgaWYgeW91IGFyZSBzdXJlIHlvdSByZWFsbHkgbmVlZCBQZXJsLCAKK2ZvciB0aGUgZm9sbG93aW5nIHJlYXNvbnM6CiAKIFNvbGFyaXMgOCBhbmQgbGF0ZXIgc2hpcCB3aXRoIGEgdmVyc2lvbiBvZiBQZXJsIGNvbXBpbGVkIHVzaW5nIFN1bidzIGNjLiAKIApkaWZmIC0tZ2l0IGEvUkVBRE1FLnNxbCBiL1JFQURNRS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJmNzAzOAotLS0gL2Rldi9udWxsCisrKyBiL1JFQURNRS5zcWwKQEAgLTAsMCArMSwyOSBAQAorc25tcHRyYXBkIE15U1FMIExvZ2dpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgdHJhcCBoYW5kbGVyIGZvciBsb2dnaW5nIHRyYXBzIHRvIGEgTXlTUUwgZGF0YWJhc2Ugd2FzIGFkZGVkCitpbiByZWxlYXNlIDUuNS4wLgorCitUaGUgTXlTUUwgZGF0YWJhc2UgbG9jYXRpb24gYW5kIHBhc3N3b3JkIG11c3QgYmUgY29uZmlndXJlZCBpbgorL3Jvb3QvLm15LmNuZjoKKworCVtzbm1wdHJhcGRdCisJaG9zdD1sb2NhbGhvc3QKKwlwYXNzd29yZD1zcWwKKworVXNlciBtYXkgYWxzbyBiZSBjb25maWd1cmVkLCBpZiB1c2luZyBhIE15U1FMIHVzZXIgYmVzaWRlcyByb290LgorCitzbm1wdHJhcGQuY29uZiBtdXN0IGJlIGNvbmZpZ3VyZWQgdG8gZm9yIHRoZSBxdWV1ZSBzaXplIGFuZAorcGVyaW9kaWMgZmx1c2ggaW50ZXJ2YWw6CisKKwkjIG1heGltdW0gbnVtYmVyIG9mIHRyYXBzIHRvIHF1ZXVlIGJlZm9yZSBmb3JjZWQgZmx1c2gKKwlzcWxNYXhRdWV1ZSAxNDAKKworCSMgc2Vjb25kcyBiZXR3ZWVuIHBlcmlvZGljIHF1ZXVlIGZsdXNoZXMKKwlzcWxTYXZlSW50ZXJ2YWwgOQorCitBIHZhbHVlIG9mIDAgZm9yIHNxbFNhdmVJbnRlcnZhbCB3aWxsIGNvbXBsZXRlbHkgZGlzYWJsZSBNeVNRTAorbG9nZ2luZyBvZiB0cmFwcy4KKworVGhlIHNjaGVtYSBtdXN0IGJlIGxvYWRlZCBpbnRvIE15U1FMIGJlZm9yZSBydW5uaW5nIHNubXB0cmFwZC4KK1RoZSBzY2hlbWEgY2FuIGJlIGZvdW5kIGluIGRpc3Qvc2NoZW1hLXNubXB0cmFwZC5zcWwKZGlmZiAtLWdpdCBhL1JFQURNRS53aW4zMiBiL1JFQURNRS53aW4zMgppbmRleCBkOTQyYjhhLi5lOTU0YWVhIDEwMDY0NAotLS0gYS9SRUFETUUud2luMzIKKysrIGIvUkVBRE1FLndpbjMyCkBAIC00NiwxNSArNDYsMTMgQEAKIEFsbCBhcHBsaWNhdGlvbnMgYnVpbGQgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKyA2LjAsIE1pY3Jvc29mdCBEZXZlbG9wbWVudAogRW52aXJvbm1lbnQgMjAwMyAoTVNWQyA3LjAvNy4xKSwgZ2NjIHVuZGVyIEN5Z3dpbiwgYW5kIGdjYyB1bmRlciBNaW5HVy4gIAogCi0gIC0gIEFsbCBvZiB0aGUgYXBwbGljYXRpb25zIHdvcmsKLSAgICAgKHNubXB3YWxrLCBzbm1wZ2V0LCBzbm1wc2V0LCBzbm1wdHJhcCwgZXRjLi4uKS4KLSAgLSAgVGhlIHN5c3RlbSwgc25tcCwgaXAsIHRjcCwgdWRwLCBpY21wIG1pYmdyb3VwcyBmdW5jdGlvbgotICAgICAgICAgKHdoZW4gYWdlbnQgaXMgYnVpbHQgdXNpbmcgdGhlIHNubXBkc2RrIHByb2plY3QpLgorICAtICBBbGwgb2YgdGhlIGFwcGxpY2F0aW9ucyB3b3JrIChzbm1wd2Fsaywgc25tcGdldCwgc25tcHNldCwgc25tcHRyYXAsIC4uLikuCisgIC0gIFRoZSBzeXN0ZW0sIHNubXAsIGlwLCB0Y3AsIHVkcCBhbmQgaWNtcCBNSUItZ3JvdXBzIHdvcmsgKHJlcXVpcmVzIHRoZQorICAgICBQbGF0Zm9ybSBTREspLgogICAtICBUaGUgTmV0LVNOTVAgYWdlbnQgcnVucyBhcyBhbiBBZ2VudFggbWFzdGVyIGFnZW50IG9yIGFzIHN1YmFnZW50LgogICAtICBzbXV4IGlzIHdvcmtpbmcuCiAgIC0gIFRoZSB0YXJnZXQsIG5vdGlmaWNhdGlvbiwgZGlzbWFuL210ZSBncm91cHMgY29tcGlsZSBidXQgYXJlIG5vdCB0ZXN0ZWQuCiAgIC0gIFRoZSBUQ1AvSVB2NiBhbmQgVURQL0lQdjYgdHJhbnNwb3J0cyBjb21waWxlIGJ1dCBhcmUgbm90IHRlc3RlZC4KLSAgICAgICAgIAogICAtICBFeHRlbmRpbmcgdGhlIGFnZW50IHRvIHN1cHBvcnQgZW50ZXJwcmlzZS1zcGVjaWZpYyBNSUJzIHdvcmtzLgogICAtICBSdW5uaW5nIHRoZSBhZ2VudCBvbiBhIG5vbi1zdGFuZGFyZCBVRFAgb3IgVENQIHBvcnQgd29ya3MuCiAgIC0gIFNubXBkIGNhbiBiZSByZWdpc3RlcmVkIGFzIGEgV2luZG93cyBOVC8yMDAwL1hQIHNlcnZpY2UuCkBAIC03OCw4ICs3Niw4IEBACiAgIC0gIEFsbCBEZWJ1ZyBhbmQgUmVsZWFzZSB0YXJnZXRzIGxpbmtlZCB3aXRoIGxpYnNubXAgcHJvamVjdCB0YXJnZXRzCiAgICAgIGJ1aWxkIHdpdGhvdXQgZXJyb3JzLCBhbmQgYXJlIGZ1bGx5IGZ1bmN0aW9uYWwuCiAKLSAgLSAgQm90aCB0aGUgV29ya3NwYWNlIGdyYXBoaWNhbCBlbnZpcm9ubWVudCBhbmQgY29tbWFuZCBsaW5lIG5tYWtlIGlzIAotICAgICBzdXBwb3J0ZWQgZm9yIGJ1aWxkaW5nIHVuZGVyIE1TVkMuCisgIC0gIEJvdGggYnVpbGRpbmcgdmlhIHRoZSBpbnRlcmFjdGl2ZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBhbmQgdmlhIHRoZQorICAgICBjb21tYW5kIGxpbmUgKG5tYWtlKSBpcyBzdXBwb3J0ZWQuCiAKIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC00MDUsMzMgKzQwMywyMiBAQAogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUlmIHlvdSBhcmUgY29tcGlsaW5nIHVzaW5nIE1pY3Jvc29mdCBWaXN1YWwgQysrIDYuMCwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdAoteW91IGluc3RhbGwgdGhlIENvcmUgUGxhdGZvcm0gU0RLIChQU0RLKS4gIFdpdGhvdXQgdGhlIFBTREssIHNvbWUgZnVuY3Rpb25hbGl0eQotd2lsbCBiZSBkaXNhYmxlZCBzdWNoIGFzIHRoZSBjb3JlIGVsZW1lbnRzIG9mIHRoZSBtaWJJSSBncm91cCBvZiB0aGUgYWdlbnQgCi13aGljaCB1c2UgdGhlICJJUCBIZWxwZXIgQVBJIiAoSVBITFBBUEkpLgorSWYgeW91IGFyZSB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyA2LjAsIHlvdSB3aWxsIGhhdmUgdG8gaW5zdGFsbCB0aGUKK1BsYXRmb3JtIFNESyAoUFNESykgZmlyc3QuCiAKLVRvIGRldGVybWluZSB3aGF0IGNvZGUgaXMgZGlzYWJsZWQgd2hlbiB0aGUgUFNESyBpcyBub3QgdXNlZCwgc2VhcmNoIHRoZQotc291cmNlIGNvZGUgZm9yIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLLgorVGhlIFdpbmRvd3MgU2VydmVyIDIwMDMgUGxhdGZvcm0gU0RLIGNhbiBiZSBkb3dubG9hZGVkIHZpYSB0aGUgZm9sbG93aW5nIFVSTAorKHRoaXMgaXMgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgdGhlIFBTREsgdGhhdCBpcyBzdGlsbCBjb21wYXRpYmxlIHdpdGgKK01TVkMgNi4wKTogaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2Rvd25sb2Fkcy9kZXRhaWxzLmFzcHg/RmFtaWx5SWQ9QTU1QjZCNDMtRTI0Ri00RUEzLUE5M0UtNDBDMEVDNEY2OEU1JmRpc3BsYXlsYW5nPWVuCiAKLVRoZSBQU0RLIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gdGhlIE1TRE4gc2l0ZS4gIEdvIHRvIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20gCi1hbmQgZG8gYSBzZWFyY2ggZm9yICdwc2RrIGRvd25sb2FkJyAod2l0aG91dCB0aGUgcXVvdGVzKS4gIFlvdSBzaG91bGQgZmluZCBib3RoCi1hIHdlYiBpbnN0YWxsIGFuZCBhIGZ1bGwgaW5zdGFsbC4gIAorT25jZSB0aGUgUFNESyBoYXMgYmVlbiBpbnN0YWxsZWQsIHNlbGVjdCB0aGUgZm9sbG93aW5nIGFjdGlvbiBmcm9tIHRoZSBTdGFydAorTWVudTogUHJvZ3JhbXMgLyBNaWNyb3NvZnQgV2luZG93cyBTREsgLyBWaXN1YWwgU3R1ZGlvIFJlZ2lzdHJhdGlvbiAvIFdpbmRvd3MKK1NESyBDb25maWd1cmF0aW9uIFRvb2wuCiAKLVdoZW4gaW5zdGFsbGluZyB0aGUgU0RLLCBhbGwgdGhhdCBpcyByZXF1aXJlZCBpcyB0aGUgJ0NvcmUnLgotCi1PbmNlIHRoaXMgcGFja2FnZSBoYXMgaW5zdGFsbGVkLCBmcm9tIHRoZSBTdGFydCBNZW51IHJ1biAKLSAgIlByb2dyYW1zIC0+TWljcm9zb2Z0IFBsYXRmb3JtIFNESy4uLiAtPiAKLSAgIFZpc3VhbCBTdHVkaW8gUmVnaXN0cmF0aW9uIC0+Ci0gICBSZWdpc3RlciBQU0RLIERpcmVjdG9yaWVzIHdpdGggVmlzdWFsIFN0dWRpbyIKLQotSWYgeW91IGFyZSBjb21waWxpbmcgdXNpbmcgYW55IG9mIHRoZSBmb2xsb3dpbmcgc3lzdGVtcywgdGhlIFBTREsgZG93bmxvYWQKLWlzIG5vdCBuZWNlc3NhcnksIGFzIHRoZSByZXF1aXJlZCBwYXJ0cyBvZiB0aGUgUFNESyBhcmUgaW5jbHVkZWQgd2l0aCB0aGUgCi1pbnN0YWxsYXRpb24gb2YgdGhlIGNvbXBpbGVyOgotCi0gICAgLSBNaWNyb3NvZnQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgMjAwMiAoTVNWQyA3LjApCi0gICAgLSBNaWNyb3NvZnQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgMjAwMyAoTVNWQyA3LjEpCi0gICAgLSBDeWd3aW4gKGdjYykKLSAgICAtIE1pbkdXIChnY2MpCitJZiB5b3UgYXJlIHVzaW5nIGFueSBvZiB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50cywgdGhlIFBTREsgZG93bmxvYWQgaXMgbm90CituZWNlc3NhcnkgYXMgdGhlIHJlcXVpcmVkIHBhcnRzIG9mIHRoZSBQU0RLIGFyZSBpbmNsdWRlZDoKKyAgICAtIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDIwMDIgb3IgbGF0ZXIuCisgICAgLSBDeWd3aW4uCisgICAgLSBNaW5HVy4KIAogSW4gb3JkZXIgZm9yIHRoZSBwcm9jZXNzIHBhcnQgb2YgdGhlIGhvc3QgcmVzb3VyY2VzIE1JQiB0byB3b3JrIHVuZGVyIFdpbmRvd3MKIE5UIHlvdSB3aWxsIG5lZWQgdG8gb2J0YWluIFBTQVBJLkRMTC4gVGhpcyBpcyBhdmFpbGFibGUgdW5kZXIgdGhlIGRvd25sb2FkIApAQCAtNDUxLDEyICs0MzgsMTMgQEAKIAogVGhlcmUgYXJlIHR3byB3YXlzIHRvIGJ1aWxkIE5ldC1TTk1QIHVzaW5nIE1pY3Jvc29mdCBWaXN1YWwgQysrLiAgVGhlIGZpcnN0CiBhbmQgZWFzaWVzdCBtZXRob2QgaXMgdXNpbmcgQ29uZmlndXJlIGFuZCBubWFrZSBvbiB0aGUgY29tbWFuZCBsaW5lLCBhbmQgdGhlIAotc2Vjb25kIGlzIHVzaW5nIHRoZSBXb3Jrc3BhY2UgZmlsZXMgd2l0aCB0aGUgZ3JhcGhpY2FsIGludGVyZmFjZS4KK3NlY29uZCBpcyB1c2luZyB0aGUgV29ya3NwYWNlIGZpbGVzIGluc2lkZSB0aGUgaW50ZXJhY3RpdmUgZGV2ZWxvcG1lbnQKK2Vudmlyb25tZW50LgogCiBUbyB1c2Ugbm1ha2Ugb24gdGhlIGNvbW1hbmQgbGluZSwgdGhlIENvbmZpZ3VyZSBzY3JpcHQgaXMgcnVuIGZpcnN0IHRvIGNyZWF0ZQotdGhlIHZhcmlvdXMgbWFrZSBmaWxlcy4gIE9uY2UgdGhleSBhcmUgY3JlYXRlZCwgbm1ha2UgaXMgdXNlZCB0byBidWlsZCB0aGUgCi1hcHBsaWNhdGlvbnMuICBQZXJsIGlzIHJlcXVpcmVkIHRvIHVzZSB0aGlzIG1ldGhvZCwgYXMgdGhlIENvbmZpZ3VyZSBzY3JpcHQKLWlzIHdyaXR0ZW4gaW4gUGVybC4gIEFjdGl2ZVN0YXRlIEFjdGl2ZVBlcmwgaXMgYXZhaWxhYmxlIGF0OgordGhlIHZhcmlvdXMgbWFrZWZpbGVzLiAgT25jZSB0aGVzZSBoYXZlIGJlZW4gY3JlYXRlZCwgbm1ha2UgaXMgdXNlZCB0byBidWlsZAordGhlIGFwcGxpY2F0aW9ucy4gIFBlcmwgaXMgcmVxdWlyZWQgdG8gdXNlIHRoaXMgbWV0aG9kLCBhcyB0aGUgQ29uZmlndXJlCitzY3JpcHQgaXMgd3JpdHRlbiBpbiBQZXJsLiAgQWN0aXZlU3RhdGUgQWN0aXZlUGVybCBpcyBhdmFpbGFibGUgYXQ6CiAKICAgICAgICAgaHR0cDovL3d3dy5hY3RpdmVzdGF0ZS5jb20vUHJvZHVjdHMvQWN0aXZlUGVybC8KIApAQCAtNDY1LDM1ICs0NTMsMjYgQEAKIHJlY29tbWVuZGVkIHRoYXQgeW91IHJlYWQgYW5kIHVuZGVyc3RhbmQgaG93IHRoZSB3b3Jrc3BhY2VzIGFyZSBjb25maWd1cmVkCiBldmVuIGlmIHlvdSB3aWxsIG9ubHkgYmUgdXNpbmcgdGhlIGNvbW1hbmQgbGluZSBDb25maWd1cmUgLyBubWFrZSBzeXN0ZW0uCiAKLUZvciB0aGUgZ3JhcGhpY2FsIGludGVyZmFjZSwgdGhlcmUgYXJlIHR3byBtYWluIFdpbjMyIHdvcmtzcGFjZXMgCi0oJ3dpbjMyLmRzdycgYW5kICd3aW4zMnNkay5kc3cnKSwgY29udGFpbmluZyBtb3JlIG9yIGxlc3MgdGhlIHNhbWUgc2V0IAotb2YgcHJvamVjdHMsIHBsdXMgJ2xpYmRsbC5kc3cnIHdoaWNoIGNvbnRhaW5zIGEgbWluaW1hbCBzZXQgb2YgcHJvamVjdHMgCi1mb3IgdXNlIHdpdGggdGhlIFBlcmwgbW9kdWxlIG9ubHkuICAKLQotV2luMzIuZHN3IGlzIGZvciBkZXZlbG9wZXJzIHdobyBoYXZlIG5vdCBpbnN0YWxsZWQgdGhlIFBsYXRmb3JtIFNESyBmcm9tIAotTWljcm9zb2Z0J3MgTVNETiBTREsgVXBkYXRlIHNpdGUgd2hlbiB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyA2LjAuCi1XaW4zMnNkay5kc3cgaXMgZm9yIHRob3NlIHdobyBoYXZlIG9yIHdobyBhcmUgdXNpbmcgdGhlIE1pY3Jvc29mdCBEZXZlbG9wbWVudCAKLUVudmlyb25tZW50IDIwMDIvMjAwMyAoTVNWQyA3LjAvNy4xKSwgQ3lnd2luIChnY2MpIG9yIE1pbkdXIChnY2MpLgotCi1MaWJkbGwuZHN3IGNvbXBpbGVzIGEgRExMIHZlcnNpb24gb2Ygc25tcGxpYiAobmV0c25tcC5kbGwpLgorRm9yIGJ1aWxkaW5nIHZpYSB0aGUgaW50ZXJhY3RpdmUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIHRoZXJlIGFyZSB0aGUgV2luMzIKK3dvcmtzcGFjZXMgd2luMzIuZHN3IGFuZCBsaWJkbGwuZHN3LiBUaGUgbGFzdCB3b3Jrc3BhY2UgYWxsb3dzIHRvIGJ1aWxkIGEgRExMCit2ZXJzaW9uIG9mIHNubXBsaWIgKG5ldHNubXAuZGxsKS4KIAogVGhlcmUgaXMgb25lIGNvcmUgZGV2ZWxvcG1lbnQgbGlicmFyeSAoJ2xpYnNubXAnKSwgdG9nZXRoZXIgd2l0aCBhIG51bWJlciAKIG9mIHV0aWxpdHkgcHJvamVjdHMgZm9yIHRoZSBpbmRpdmlkdWFsIGV4ZWN1dGFibGUgY29tbWFuZHMgKCdzbm1wZ2V0JywgCiAnc25tcHdhbGsnLCBldGMuLi4pLiAgQWxsIG9mIHRoZXNlIHByb2plY3RzIHJlcXVpcmUgdGhlIC5saWIgY3JlYXRlZCBieSAKIHRoZSBsaWJzbm1wIHByb2plY3QuCiAKLVRoZSBhZ2VudCByZXF1aXJlcyB0aGUgY29yZSBsaWJyYXJ5IHBsdXMgdGhlIG90aGVyIHRocmVlIGxpYnJhcnkgcHJvamVjdHMgCi0oJ2xpYmFnZW50JywgbGliaGVscGVycycgYW5kIGVpdGhlciAnbmV0c25tcG1pYnMnIG9yICduZXRzbm1wbWlic3NkaycgCi1kZXBlbmRpbmcgb24gd2hpY2ggd29ya3NwYWNlIGlzIGJlaW5nIHVzZWQpIHRvZ2V0aGVyIHdpdGggdGhlIG1haW4gYWdlbnQgCi1wcm9qZWN0IChlaXRoZXIgJ3NubXBkJyBvciAnc25tcGRzZGsnKS4KK1RoZSBhZ2VudCByZXF1aXJlcyB0aGUgY29yZSBsaWJyYXJ5IHBsdXMgdGhlIG90aGVyIHRocmVlIGxpYnJhcnkgcHJvamVjdHMKKygnbGliYWdlbnQnLCBsaWJoZWxwZXJzJyBhbmQgJ25ldHNubXBtaWJzJykgdG9nZXRoZXIgd2l0aCB0aGUgbWFpbiBhZ2VudAorcHJvamVjdCAoJ3NubXBkJykuCiAKIFRoZSBmaW5hbCBhcHBsaWNhdGlvbiBwcm9qZWN0IGlzIHRoZSB0cmFwIGhhbmRsZXIgJ3NubXB0cmFwZCcuICBUaGlzIGFsc28KIHJlcXVpcmVzIHRoZSBhZ2VudCBsaWJyYXJpZXMgKCdsaWJhZ2VudCcsICdsaWJoZWxwZXJzJyBhbmQgJ25ldHNubXBtaWJzJykKIGFzIHdlbGwgYXMgdGhlIGNvcmUgZGV2ZWxvcG1lbnQgbGlicmFyeS4KIAotVGhlcmUgaXMgYSBEZWJ1ZyB2ZXJzaW9uIGFuZCBSZWxlYXNlIHZlcnNpb24gZm9yIGVhY2ggc3VicHJvamVjdC4KLVRoaXMgaXMgc28gdGhlIERlYnVnIGFuZCBSZWxlYXNlIHZlcnNpb25zIG9mIGFuIGFwcGxpY2F0aW9uIGNhbiBiZSBidWlsdCBhbmQgCi10ZXN0ZWQgc2VwYXJhdGVseS4KK1RoZXJlIGlzIGEgRGVidWcgdmVyc2lvbiBhbmQgUmVsZWFzZSB2ZXJzaW9uIGZvciBlYWNoIHN1YnByb2plY3QuICBUaGlzIGlzIHNvCit0aGUgRGVidWcgYW5kIFJlbGVhc2UgdmVyc2lvbnMgb2YgYW4gYXBwbGljYXRpb24gY2FuIGJlIGJ1aWx0IGFuZCB0ZXN0ZWQKK3NlcGFyYXRlbHkuCiAKIEJvdGggVkMrKyA2LjAgYW5kIDcuMSBoYXZlIGJlZW4gdGVzdGVkLiAgQnVpbGRpbmcgd2l0aCBlYXJsaWVyIE1pY3Jvc29mdAogY29tcGlsZXIgdmVyc2lvbnMgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KQEAgLTUwOCw5ICs0ODcsOSBAQAogCiBTaW5jZSB0aGUgTVNWQyBidWlsZCBlbnZpcm9ubWVudCBkb2VzIG5vdCBuYXRpdmVseSB1c2UgImNvbmZpZ3VyZSIgbm9yICJtYWtlIgogdG8gZ2VuZXJhdGUgdGhlIHZhcmlvdXMgcGF0aG5hbWVzIHRoYXQgdGhlIHByb2dyYW1zIHJlcXVpcmUsIHRoZSBoZWFkZXIgZmlsZXMgCi1uZWVkIHRvIGJlIG1hbnVhbGx5IG1vZGlmaWVkIHdoZW4gdXNpbmcgdGhlIGdyYXBoaWNhbCBidWlsZCBzeXN0ZW0sIGFuZCBhbiAKLWluc3RhbGwgc2NyaXB0IGlzIHByb3ZpZGVkLiAgV2hlbiB1c2luZyB0aGUgUGVybCBDb25maWd1cmUgLyBubWFrZSBzeXN0ZW0sIAotdGhlIGhlYWRlciBmaWxlcyBhcmUgYXV0b21hdGljYWxseSBtb2RpZmllZCBhbmQgcmVxdWlyZSBubyBtYW51YWwgZWRpdGluZy4KK25lZWQgdG8gYmUgbWFudWFsbHkgbW9kaWZpZWQgd2hlbiB1c2luZyB0aGUgSURFLCBhbmQgYW4gaW5zdGFsbCBzY3JpcHQgaXMKK3Byb3ZpZGVkLiAgV2hlbiB1c2luZyB0aGUgUGVybCBDb25maWd1cmUgLyBubWFrZSBzeXN0ZW0sIHRoZSBoZWFkZXIgZmlsZXMgYXJlCithdXRvbWF0aWNhbGx5IG1vZGlmaWVkIGFuZCByZXF1aXJlIG5vIG1hbnVhbCBlZGl0aW5nLgogCiBUaGUgcHJvamVjdHMgYXJlIGFycmFuZ2VkIHNvIHRoYXQgQUxMIG9mIHRoZSB1c2FibGUgcHJvZHVjdHMsIHRoZSAuZXhlIGZpbGVzLAogYXJlIHdyaXR0ZW4gdG8gdGhlIHdpbjMyXGJpbiBkaXJlY3RvcnkuICBUaGUgd2luMzJcbGliIGRpcmVjdG9yeSBpcyB1c2VkIG9ubHkgCkBAIC03MTUsMTkgKzY5NCwyMCBAQAogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLVRoZSB3aW4zMnNkay5kc3cgd29ya3NwYWNlIHdpbGwgYnVpbGQgdGhlIGFnZW50IHRoYXQgcHJvdmlkZXMgbWliLUlJIG9iamVjdHMKLWZvciBuZXR3b3JrIGludGVyZmFjZSBsYXllcnMsIGFuZCB0aGUgSVAsIElDTVAsIFRDUCBhbmQgVURQIHRhYmxlcy4gIFRoaXMKLXdvcmtzcGFjZSByZXF1aXJlcyB0aGUgUGxhdGZvcm0gU0RLIHRvIGJlIGluc3RhbGxlZC4gIFVzZSB0aGUgd2luMzIuZHN3IAotd29ya3NwYWNlIGlmIHlvdSBkb24ndCBoYXZlIG9yIGRvbid0IG5lZWQgdGhlc2UgZmVhdHVyZXMuICBOb3RlOiAgT3RoZXIgCi1mZWF0dXJlcyBtYXkgYmUgZGlzYWJsZWQgaWYgdGhlIFBsYXRmb3JtIFNESyBpcyBub3QgdXNlZC4gIFNlZSB0aGUgc2VjdGlvbgotJ0luc3RhbGxpbmcgUGxhdGZvcm0gU0RLJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KK1RoZSB3aW4zMi5kc3cgd29ya3NwYWNlIGFsbG93cyB0byBidWlsZCB0aGUgYWdlbnQgdGhhdCBwcm92aWRlcyBtaWItSUkgb2JqZWN0cworZm9yIG5ldHdvcmsgaW50ZXJmYWNlIGxheWVycywgYW5kIHRoZSBJUCwgSUNNUCwgVENQIGFuZCBVRFAgdGFibGVzLiBQcm9jZWVkIGFzCitmb2xsb3dzOgogCi0xLiBJZiBTTk1QdjMgZW5jcnlwdGlvbiBjYXBhYmlsaXRpZXMgb3IgU0hBIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLAorMS4gVXBkYXRlIHRoZSB2ZXJzaW9uIHN0YW1wIGluIHdpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oLiAgVGhlIGN1cnJlbnQKKyAgIHZlcnNpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBVbml4IGNvbmZpZ3VyZSBzY3JpcHQgKHRvcCBsZXZlbCBmb2xkZXIpIGJ5IAorICAgbG9va2luZyBmb3IgdGhlIFBBQ0tBR0VfVkVSU0lPTiB2YXJpYWJsZS4KKworMi4gSWYgU05NUHYzIGVuY3J5cHRpb24gY2FwYWJpbGl0aWVzIG9yIFNIQSBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZCwKICAgIGluc3RhbGwgdGhlIE9wZW5TU0wgRExMIGFuZCBsaWJyYXJ5IGZpbGUgYXMgZGVzY3JpYmVkIGluIHRoZSBzZWN0aW9uIAogICAgJ01pY3Jvc29mdCBWaXN1YWwgQysrIC0gQnVpbGRpbmcgd2l0aCBPcGVuU1NMIiBhbmQgdGhlbiBjb250aW51ZSB3aXRoIAogICAgc3RlcCAyLgogCi0yLiBUaGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gcGF0aCBpcyBjOlx1c3IuICBUaGlzIGZvbGRlciB3aWxsIGNvbnRhaW4gYWxsCiszLiBUaGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gcGF0aCBpcyBjOlx1c3IuICBUaGlzIGZvbGRlciB3aWxsIGNvbnRhaW4gYWxsCiAgICB0aGUgYmluYXJpZXMsIE1JQiBmaWxlcywgY29uZmlndXJhdGlvbiBmaWxlcyBldGMuICBUbyBjaGFuZ2UgdGhlIGxvY2F0aW9uLAogICAgdGhlIHdpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oIGZpbGUgbmVlZHMgdG8gYmUgbW9kaWZpZWQgYnkgY2hhbmdpbmcKICAgIHRoZSBJTlNUQUxMX0JBU0UgdmFyaWFibGUuIApAQCAtNzM5LDE1ICs3MTksNiBAQAogCiAgICAgIEZvciBleGFtcGxlOiAjZGVmaW5lIElOU1RBTExfQkFTRSAiYzovdXNyIi4gIAogCi0zLiBJZiB5b3UgYXJlIHVzaW5nIHdpbjMyc2RrLCB0aGUgUGxhdGZvcm0gU0RLIG11c3QgYmUgZW5hYmxlZC4gIEVkaXQgdGhlIAotICAgdGhlIHdpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oIGZpbGUgYW5kICpjaGFuZ2UqOgotCi0gICAgICAgIC8qICN1bmRlZiBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESyAqLwotCi0gICB0bzoKLQotICAgICAgICAjZGVmaW5lIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLIDEKLQogNC4gQnVpbGQgdGhlIGFwcGxpY2F0aW9ucwogCiAgICBTdGF0aWMgYnVpbGQgKGRvZXMgbm90IHVzZSBOZXRTTk1QLkRMTCkKQEAgLTc1NSw3ICs3MjYsNyBAQAogCiAgICBNUyBWQysrIDYuMDoKICAgIC0tLS0tLS0tLS0tLQotICAgYS4gT3BlbiB3aW4zMi5kc3cgb3Igd2luMzJzZGsuZHN3LgorICAgYS4gT3BlbiB3aW4zMi5kc3cuCiAgICBiLiBDbGljayAiQnVpbGQtPkJhdGNoIEJ1aWxkLi4uIiAgCiAgICBjLiBTZXQgUmVsZWFzZSBhbmQvb3IgRGVidWcgaW4gJ1Byb2plY3QgY29uZmlndXJhdGlvbnMnIHRvIHN1aXQuCiAgICBkLiBDbGljayAiUmVCdWlsZCBBbGwiLgpAQCAtNzY1LDcgKzczNiw3IEBACiAKICAgIE1TIFZDKysgNy4wKzoKICAgIC0tLS0tLS0tLS0tLS0KLSAgIGEuICBPcGVuIHdpbjMyLmRzdyBvciB3aW4zMnNkay5kc3cuCisgICBhLiAgT3BlbiB3aW4zMi5kc3cuCiAgICBiLiAgQ2xpY2sgIlllcyB0byBBbGwiIHRvIGNvbnZlcnQgdGhlIHdvcmtzcGFjZQogICAgYy4gIENsaWNrICJCdWlsZC0+Q29uZmlndXJhdGlvbiBNYW5hZ2VyIiBhbmQgc2VsZWN0IGVpdGhlciBSZWxlYXNlIG9yIERlYnVnIGZvciAKICAgICAgICAnQWN0aXZlIFNvbHV0aW9uIENvbmZpZ3VyYXRpb24nIGFuZCBjbGljayAiQ2xvc2UiCkBAIC03OTIsNyArNzYzLDcgQEAKIAogICAgTVMgVkMrKyA2LjA6CiAgICAtLS0tLS0tLS0tLS0KLSAgIGEuIE9wZW4gd2luMzIuZHN3IG9yIHdpbjMyc2RrLmRzdy4KKyAgIGEuIE9wZW4gd2luMzIuZHN3LgogICAgYi4gQ2xpY2sgIkJ1aWxkLT5CYXRjaCBCdWlsZC4uLiIgIAogICAgYy4gU2V0IFJlbGVhc2UgYW5kL29yIERlYnVnIGluICdQcm9qZWN0IGNvbmZpZ3VyYXRpb25zJyB0byBzdWl0IGZvciB0aGUgCiAgICAgICBhcHBsaWNhdGlvbnMuICBNYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBhcmUgTk9UIHNlbGVjdGVkOgpAQCAtODEwLDcgKzc4MSw3IEBACiAKICAgIE1TIFZDKysgNy4wKzoKICAgIC0tLS0tLS0tLS0tLS0KLSAgIGEuIE9wZW4gd2luMzIuZHN3IG9yIHdpbjMyc2RrLmRzdy4KKyAgIGEuIE9wZW4gd2luMzIuZHN3LgogICAgYi4gQ2xpY2sgIlllcyB0byBBbGwiIHRvIGNvbnZlcnQgdGhlIHdvcmtzcGFjZQogICAgYy4gQ2xpY2sgIkJ1aWxkLT5Db25maWd1cmF0aW9uIE1hbmFnZXIiIGFuZCBzZWxlY3QgZWl0aGVyIFJlbGVhc2Ugb3IgRGVidWcgZm9yIAogICAgICAgJ0FjdGl2ZSBTb2x1dGlvbiBDb25maWd1cmF0aW9uJyBhbmQgY2xpY2sgIkNsb3NlIgpAQCAtODI5LDcgKzgwMCw3IEBACiAgICAgICBzYXZlIHRvIGEgdGV4dCBmaWxlIGlmIHRoZXJlIGlzIHNvbWUgaW5mb3JtYXRpb24gdG8gc2hhcmUuCiAgICBoLiBDbGljayAiRmlsZS0+Q2xvc2UgU29sdXRpb24iLgogICAKLTUuICBJZiB0aGUgUGVybCBtb2R1bGVzIGFyZSByZXF1aXJlZCwgY29udGludWUgd2l0aCB0aGUgbmV4dCBzZWN0aW9uOgorNi4gIElmIHRoZSBQZXJsIG1vZHVsZXMgYXJlIHJlcXVpcmVkLCBjb250aW51ZSB3aXRoIHRoZSBuZXh0IHNlY3Rpb246CiAgICAgJ01pY3Jvc29mdCBWaXN1YWwgQysrIC0gQnVpbGRpbmcgdGhlIFBlcmwgU05NUCBtb2R1bGVzJy4KIAogICAgIE90aGVyd2lzZSwgY29udGludWUgd2l0aCB0aGUgc2VjdGlvbjogCkBAIC04NDIsMTUgKzgxMywxOSBAQAogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLTEuICBPcHRpb25hbDogTWFrZSBhIGJhY2t1cCBvZiB0aGUgZXhpc3RpbmcgbmV0LXNubXAtY29uZmlnLmggd2hpY2ggY29udGFpbnMgCisxLiAgVXBkYXRlIHRoZSB2ZXJzaW9uIHN0YW1wIGluIHdpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oLiAgVGhlIGN1cnJlbnQKKyAgICB2ZXJzaW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgVW5peCBjb25maWd1cmUgc2NyaXB0ICh0b3AgbGV2ZWwgZm9sZGVyKSBieSAKKyAgICBsb29raW5nIGZvciB0aGUgUEFDS0FHRV9WRVJTSU9OIHZhcmlhYmxlLgorCisyLiAgT3B0aW9uYWw6IE1ha2UgYSBiYWNrdXAgb2YgdGhlIGV4aXN0aW5nIG5ldC1zbm1wLWNvbmZpZy5oIHdoaWNoIGNvbnRhaW5zIAogICAgIHNldHRpbmdzIGZvciBhIHN0YXRpYyBidWlsZCBvZiBOZXQtU05NUDoKIAogICAgIENvcHkgd2luMzJcbmV0LXNubXBcbmV0LXNubXAtY29uZmlnLmggdG8gCiAgICAgd2luMzJcbmV0LXNubXBcc3RhdGljLWNvbmZpZy5oLgogCi0yLiAgT3BlbiB3aW4zMlxuZXQtc25tcFxuZXQtc25tcC1jb25maWcuaCB1c2luZyBhIHRleHQgZWRpdG9yLgorMy4gIE9wZW4gd2luMzJcbmV0LXNubXBcbmV0LXNubXAtY29uZmlnLmggdXNpbmcgYSB0ZXh0IGVkaXRvci4KIAotMy4gICpDaGFuZ2UqIHRoZSBmb2xsb3dpbmcgbGluZSB3aGljaCBpcyBsb2NhdGVkIG5lYXIgdGhlIHRvcCBvZiB0aGUgZmlsZToKKzQuICAqQ2hhbmdlKiB0aGUgZm9sbG93aW5nIGxpbmUgd2hpY2ggaXMgbG9jYXRlZCBuZWFyIHRoZSB0b3Agb2YgdGhlIGZpbGU6CiAKICAgICAgICAgLyogI3VuZGVmIE5FVFNOTVBfVVNFX0RMTCAqLwogCkBAIC04NTgsMTMgKzgzMywxMyBAQAogCiAgICAgICAgICNkZWZpbmUgTkVUU05NUF9VU0VfRExMIDEKIAotNC4gIE9wdGlvbmFsOiBNYWtlIGEgYmFja3VwIG9mIHRoZSBuZXcgbmV0LXNubXAtY29uZmlnLmggd2hpY2ggY29udGFpbnMgCis1LiAgT3B0aW9uYWw6IE1ha2UgYSBiYWNrdXAgb2YgdGhlIG5ldyBuZXQtc25tcC1jb25maWcuaCB3aGljaCBjb250YWlucyAKICAgICBzZXR0aW5ncyBmb3IgYSBETEwgYnVpbGQgb2YgTmV0LVNOTVA6CiAKICAgICBDb3B5IHdpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oIHRvIAogICAgIHdpbjMyXG5ldC1zbm1wXGRsbC1jb25maWcuaC4KIAotNS4gQnVpbGQgdGhlIERMTAorNi4gQnVpbGQgdGhlIERMTCBhbmQgdGhlIGFwcGxpY2F0aW9ucwogCiAgICBNUyBWQysrIDYuMDoKICAgIC0tLS0tLS0tLS0tLQpAQCAtODgwLDcgKzg1NSw3IEBACiAKICAgIE1TIFZDKysgNy4wKzoKICAgIC0tLS0tLS0tLS0tLS0KLSAgIGEuIE9wZW4gbGlic2RsbC5kc3cuCisgICBhLiBPcGVuIHdpbjMyZGxsLmRzdy4KICAgIGIuIENsaWNrICJZZXMgdG8gQWxsIiB0byBjb252ZXJ0IHRoZSB3b3Jrc3BhY2UKICAgIGMuIENsaWNrICJCdWlsZC0+QmF0Y2ggQnVpbGQuLi4iIAogICAgZC4gU2V0IFJlbGVhc2UgYW5kL29yIERlYnVnIGluICdQcm9qZWN0IGNvbmZpZ3VyYXRpb25zJyB0byBzdWl0LgpAQCAtMTI3NywxNSArMTI1MiwxNiBAQAogVGhlIGZvbGxvd2luZyBjb25maWd1cmUgb3B0aW9ucyBjcmVhdGVzIGEgd29ya2luZyBzZXQgb2YgcHJvZ3JhbXM6CiAKIC4vY29uZmlndXJlIFwKKwktLWRpc2FibGUtc2hhcmVkIFwKIAktLXdpdGgtbWliLW1vZHVsZXM9Imhvc3QgYWdlbnR4IGRpc21hbi9ldmVudC1taWIgZXhhbXBsZXMvZXhhbXBsZSIgXAogCS0td2l0aC1vdXQtbWliLW1vZHVsZXM9aG9zdC9ocl9uZXR3b3JrIFwKICAgICAgICAgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgLS13aXRob3V0LXBlcmwtbW9kdWxlcyBcCiAKLUlmIHlvdSB3YW50IHRvIHVzZSBTTk1QdjMgYXV0aCBhbmQgcHJpdmFjeSBmZWF0dXJlcywgYWRkOgotCS0td2l0aC1vcGVuc3NsPSIvdXNyIiBcCitJZiB5b3Ugd2FudCB0byBkaXNhYmxlIFNOTVB2MyBhdXRoIGFuZCBwcml2YWN5IGZlYXR1cmVzLCBhZGQ6CisJLS13aXRob3V0LW9wZW5zc2wgXAogCiBJZiB5b3Ugd2FudCB0byB1c2UgSVB2NiB0cmFuc3BvcnRzLCBhZGQ6Ci0JLS1lbmFibGUtaXB2NiAtLXdpdGgtdHJhbnNwb3J0cz0iVENQSVB2NiBVRFBJUHY2IgorCS0tZW5hYmxlLWlwdjYKIAogTm90ZTogIFRoZSBzb3VyY2UgY29kZSBzaG91bGQgKm5vdCogYmUgaW4gYSBmb2xkZXIgdGhhdCBjb250YWlucyBhIHNwYWNlLiAgRm9yCiAgICAgICAgZXhhbXBsZSwgY29tcGlsaW5nIGluIHlvdXIgJ015IERvY3VtZW50cycgb3IgeW91ciBEZXNrdG9wICh1c3VhbGx5CkBAIC0xMzIwLDE3ICsxMjk2LDE2IEBACiBNaW5HVyB0b29scyB3aXRoIHRoZSBNU3lTIGVudmlyb25tZW50LiBNaW5HVywgTVN5UyBhbmQgdGhlIGFzc29jaWF0ZWQKIGRvY3VtZW50YXRpb24gY2FuIGJlIGRvd25sb2FkZWQgZnJvbTogaHR0cDovL3d3dy5taW5ndy5vcmcuCiAKLUNvbXBpbGluZyBuZXQtc25tcCB3aXRoIE1pbkdXIHJlcXVpcmVzIEdOVSByZWdleC4gQSBHTlUgcmVnZXggcGFja2FnZSB0aGF0Ci1idWlsZHMgdW5kZXIgTWluR1cgd2l0aCBNU3lTIGlzIGF2YWlsYWJsZSBhdDogCitDb21waWxpbmcgbmV0LXNubXAgd2l0aCBNaW5HVyByZXF1aXJlcyBHTlUgcmVnZXggYW5kIGxpYmludGwuIEJpbmFyaWVzIGFuZAorZGV2ZWxvcGVyIGhlYWRlciBmaWxlcyBmb3IgdGhlc2UgbGlicmFyaWVzIGFyZSBhdmFpbGFibGUgYXQ6IAogCi0gICAgICAgIGh0dHA6Ly93d3cuYm9lZG9nLmNvbS9uZXQtc25tcC9nbnVfcmVnZXgvcmVnZXgtMC0xMi1taW5ndy1yMi50YXIuZ3oKKyAgICAgICAgaHR0cDovL2dudXdpbjMyLnNvdXJjZWZvcmdlLm5ldC9wYWNrYWdlcy9yZWdleC5odG0KKyAgICAgICAgaHR0cDovL2dudXdpbjMyLnNvdXJjZWZvcmdlLm5ldC9wYWNrYWdlcy9saWJpbnRsLmh0bQogCi1Ob3RlOiAgVGhlIHNvdXJjZSBjb2RlIHNob3VsZCAqbm90KiBiZSBpbiBhIGZvbGRlciB0aGF0IGNvbnRhaW5zIGEgc3BhY2UuICBGb3IKLSAgICAgICBleGFtcGxlLCBjb21waWxpbmcgaW4geW91ciAnTXkgRG9jdW1lbnRzJyBvciB5b3VyIERlc2t0b3AgKHVzdWFsbHkKLSAgICAgICBjOlxEb2N1bWVudHMgYW5kIFNldHRpbmdzXHh4eHhcRGVza3RvcCkgaXMgbm90IHN1cHBvcnRlZC4KLSAgICAgICAKLTEuICBCdWlsZCBhbmQgaW5zdGFsbCBHTlUgcmVnZXggZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIAotICAgIHJlZ2V4LTAtMTItbWluZ3ctcjIgUkVBRE1FLgorUHJvY2VlZCBhcyBmb2xsb3dzIHRvIGJ1aWxkIE5ldC1TTk1QOgorCisxLiAgSW5zdGFsbCBHTlUgcmVnZXggYW5kIEdOVSBsaWJpbnRsIGJpbmFyaWVzIGFuZCBkZXZlbG9wZXIgZmlsZXMgaW4gdGhlCisgICAgTWluR1cgdHJlZS4KIAogMi4gIElmIFNOTVB2MyBlbmNyeXB0aW9uIGNhcGFiaWxpdGllcyBvciBTSEEgYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQsCiAgICAgaW5zdGFsbCB0aGUgT3BlblNTTCBETEwgYW5kIGxpYnJhcnkgZmlsZSBhcyBkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb24gCkBAIC0xMzU3LDcgKzEzMzIsNyBAQAogCiAJLi9jb25maWd1cmUgLS1wcmVmaXg9IiRCQVNFRElSIiBcCiAJCS0td2l0aC1taWJkaXJzPSIkQkFTRURJUi9zaGFyZS9zbm1wL21pYnMiIFwKLQktLXdpdGgtbWliLW1vZHVsZXM9ImFnZW50eCBkaXNtYW4vZXZlbnQtbWliIGV4YW1wbGVzL2V4YW1wbGUiIFwKKwktLXdpdGgtbWliLW1vZHVsZXM9ImFnZW50eCBkaXNtYW4vZXZlbnQtbWliIHdpbkV4dERMTCBleGFtcGxlcy9leGFtcGxlIlwKICAgICAgICAgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgLS13aXRob3V0LXBlcmwtbW9kdWxlcyBcCiAKICAgICBOb3RlOiB3aGlsZSB0aGUgTmV0LVNOTVAgaW1wbGVtZW50YXRpb24gb2YgdGhlIGhvc3QgcmVzb3VyY2VzIE1JQiBpcyBub3QKZGlmZiAtLWdpdCBhL1RPRE8gYi9UT0RPCmluZGV4IDIyMTBiNmUuLjQ5ZDkxM2UgMTAwNjQ0Ci0tLSBhL1RPRE8KKysrIGIvVE9ETwpAQCAtMjQsOCArMjQsOCBAQAogICBUdW5uZWwKICAgV1dXLU1JQgogICBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllcjoKLSAgICBIb3N0UmVzCShjb252ZXJ0IHRvIHVzZSBIQUwgYW5kIGNsZWFuIHVwKQotICAgIFVDRGF2aXMJKGNvbnZlcnQgdG8gdXNlIEhBTCBhbmQgdXBkYXRlIHN0cnVjdHVyZXMpCisgICAgSG9zdFJlcwkoY29udmVydCB0byB1c2UgSEFMIGFuZCBjbGVhbiB1cCAtIGluIHByb2dyZXNzKQorICAgIFVDRGF2aXMJKGNvbnZlcnQgdG8gdXNlIEhBTCBhbmQgdXBkYXRlIHN0cnVjdHVyZXMgLSBpbiBwcm9ncmVzcykKIAogRXh0ZW5zaWJpbGl0eToKICAgQWdlbnRYCShyZWFzb25hYmx5IHN0YWJsZSBub3cpCmRpZmYgLS1naXQgYS9hY2NvbmZpZy5oIGIvYWNjb25maWcuaAppbmRleCAwZWQwNmI5Li41NDkxOTQxIDEwMDY0NAotLS0gYS9hY2NvbmZpZy5oCisrKyBiL2FjY29uZmlnLmgKQEAgLTIzLDIzNiArMjMsNyBAQAogICovCiAjaWZuZGVmIE5FVFNOTVBfTk9fQVVUT0NPTkZfREVGSU5JVElPTlMKIAotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgaW50MzJfdCAqLwotI3VuZGVmIEhBVkVfSU5UMzJfVAogCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgdHlwZSB1aW50MzJfdCAqLwotI3VuZGVmIEhBVkVfVUlOVDMyX1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdV9pbnQzMl90ICovCi0jdW5kZWYgSEFWRV9VX0lOVDMyX1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgaW50NjRfdCAqLwotI3VuZGVmIEhBVkVfSU5UNjRfVAotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgdHlwZSB1aW50NjRfdCAqLwotI3VuZGVmIEhBVkVfVUlOVDY0X1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdV9pbnQ2NF90ICovCi0jdW5kZWYgSEFWRV9VX0lOVDY0X1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgaW50cHRyX3QgKi8KLSN1bmRlZiBIQVZFX0lOVFBUUl9UCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIHVpbnRwdHJfdCAqLwotI3VuZGVmIEhBVkVfVUlOVFBUUl9UCi0KLS8qIGdvdCBzb2NrbGVuX3Q/ICovCi0jdW5kZWYgSEFWRV9TT0NLTEVOX1QKLQotLyogZ290IGluX2FkZHJfdD8gKi8KLSN1bmRlZiBIQVZFX0lOX0FERFJfVAotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgZ2V0ZGV2cygpICovCi0jdW5kZWYgSEFWRV9HRVRERVZTCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSBkZXZzdGF0X2dldGRldnMoKSAqLwotI3VuZGVmIEhBVkVfREVWU1RBVF9HRVRERVZTCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSA8bmV0aW5ldC9pbl9wY2IuaD4gKi8KLSN1bmRlZiBIQVZFX05FVElORVRfSU5fUENCX0gKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIDxzeXMvZGlza2xhYmVsLmg+ICovCi0jdW5kZWYgSEFWRV9TWVNfRElTS0xBQkVMX0gKLQotLyogZGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgKHByb2Nlc3NvcikgZGVmaW5lcyBfX0ZVTkNUSU9OX18gZm9yIHlvdSAqLwotI3VuZGVmIEhBVkVfQ1BQX1VOREVSQkFSX0ZVTkNUSU9OX0RFRklORUQKLQotLyogb24gYWl4LCBpZiB5b3UgaGF2ZSBwZXJmc3RhdCAqLwotI3VuZGVmIEhBVkVfUEVSRlNUQVQKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIGxpYmRiLCBsaWJubSBvciBsaWJycG0sIHJlc3BlY3RpdmVseSAqLwotI3VuZGVmIEhBVkVfTElCREIKLSN1bmRlZiBIQVZFX0xJQk5NCi0jdW5kZWYgSEFWRV9MSUJSUE0KLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHBrZ2luZm8gKi8KLSN1bmRlZiBIQVZFX1BLR0lORk8KLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIGdldGhvc3RieW5hbWUgKi8KLSN1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBwZXJsX2V2YWxfcHYoKSBmdW5jdGlvbiAqLwotI3VuZGVmIEhBVkVfUEVSTF9FVkFMX1BWX0xDCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0aGUgUGVybF9ldmFsX3B2KCkgZnVuY3Rpb24gKi8KLSN1bmRlZiBIQVZFX1BFUkxfRVZBTF9QVl9VQwotCi0vKiBwcmludGluZyBzeXN0ZW0gKi8KLSN1bmRlZiBIQVZFX0xQU1RBVAotI3VuZGVmIExQU1RBVF9QQVRICi0jdW5kZWYgSEFWRV9QUklOVENBUAotLyogVXNlIGRtYWxsb2MgdG8gZG8gbWFsbG9jIGRlYnVnZ2luZz8gKi8KLSN1bmRlZiBIQVZFX0RNQUxMT0NfSAotCi0vKiBsb2NhdGlvbiBvZiBVTklYIGtlcm5lbCAqLwotI2RlZmluZSBLRVJORUxfTE9DICIvdm11bml4IgotCi0vKiBsb2NhdGlvbiBvZiBtb3VudCB0YWJsZSBsaXN0ICovCi0jZGVmaW5lIEVUQ19NTlRUQUIgIi9ldGMvbW50dGFiIgotCi0vKiBsb2NhdGlvbiBvZiBzd2FwIGRldmljZSAob2sgaWYgbm90IGZvdW5kKSAqLwotI3VuZGVmIERNRU1fTE9DCi0KLS8qIENvbW1hbmQgdG8gZ2VuZXJhdGUgcHMgb3V0cHV0LCB0aGUgZmluYWwgY29sdW1uIG11c3QgYmUgdGhlIHByb2Nlc3MKLSAgIG5hbWUgd2l0aE9VVCBhcmd1bWVudHMgKi8KLSNkZWZpbmUgUFNDTUQgIi9iaW4vcHMiCi0KLS8qIFdoZXJlIGlzIHRoZSB1bmFtZSBjb21tYW5kICovCi0jZGVmaW5lIFVOQU1FUFJPRyAiL2Jpbi91bmFtZSIKLQotLyogZGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgbGludXggYW5kIC9wcm9jL25ldC9kZXYgaGFzIHRoZSBjb21wcmVzc2VkCi0gICBmaWVsZCwgd2hpY2ggZXhpc3RzIGluIGxpbnV4IGtlcm5lbHMgMi4yIGFuZCBncmVhdGVyLiAqLwotI3VuZGVmIFBST0NfTkVUX0RFVl9IQVNfQ09NUFJFU1NFRAotCi0vKiBkZWZpbmUgcnRlbnRyeSB0byBvcnRlbnRyeSBvbiBTWVNWIG1hY2hpbmVzIChhbHBoYXMpICovCi0jdW5kZWYgUlRFTlRSWQotCi0vKiBVc2UgQlNEIDQuNCByb3V0aW5nIHRhYmxlIGVudHJpZXM/ICovCi0jdW5kZWYgUlRFTlRSWV80XzQKLQotLyogRG9lcyBzdHJ1Y3Qgc2lnYWN0aW9uIGhhdmUgYSBzYV9zaWdhY3Rpb24gZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NJR0FDVElPTl9IQVNfU0FfU0lHQUNUSU9OCi0KLS8qIERvZXMgc3RydWN0IHRtIGhhdmUgYSB0bV9nbXRvZmYgZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1RNX0hBU19UTV9HTVRPRkZGCi0KLS8qIERvZXMgc3RydWN0IHNvY2thZGRyIGhhdmUgYSBzYV9sZW4gZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NPQ0tBRERSX0hBU19TQV9MRU4KLQotLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHIgaGF2ZSBhIHNhX2ZhbWlseTIgZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NPQ0tBRERSX0hBU19TQV9VTklPTl9TQV9HRU5FUklDX1NBX0ZBTUlMWTIKLQotLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBoYXZlIGEgc3NfZmFtaWx5IGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9TVE9SQUdFX0hBU19TU19GQU1JTFkKLQotLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBoYXZlIGEgX19zc19mYW1pbHkgZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfSEFTX19fU1NfRkFNSUxZCi0KLS8qIERvZXMgc3RydWN0IGluNl9hZGRyIGhhdmUgYSBzNl91bi5zYTZfbGFkZCBmaWVsZD8gKi8KLSN1bmRlZiBTVFJVQ1RfSU42X0FERFJfSEFTX1M2X1VOX1NBNl9MQUREUgotCi0vKiBydGVudHJ5IHN0cnVjdHVyZSB0ZXN0cyAqLwotI3VuZGVmIFJURU5UUllfUlRfTkVYVAotI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKLSN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVU5JVAotI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9VU0UKLSN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfUkVGQ05UCi0jdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX0hBU0gKLQotLyogaWZuZXQgc3RydWN0dXJlIHRlc3RzICovCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9CQVVEUkFURQotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQkFVRFJBVEVfSUZTX1ZBTFVFCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9TUEVFRAotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfVFlQRQotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSU1DQVNUUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSVFEUk9QUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTEFTVENIQU5HRV9UVl9TRUMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0xBU1RDSEFOR0VfVFZfTlNFQwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTk9QUk9UTwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfT01DQVNUUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfWE5BTUUKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09CWVRFUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSUJZVEVTCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9BRERSTElTVAotCi0vKiB0Y3BzdGF0LnRjcHNfcmN2bWVtZHJvcCAqLwotI3VuZGVmIFNUUlVDVF9UQ1BTVEFUX0hBU19UQ1BTX1JDVk1FTURST1AKLQotLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KLSN1bmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19ESVNDQVJECi0KLS8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0jdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfTk9QT1JUCi0KLS8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0jdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfTk9QT1JUQkNBU1QKLQotLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KLSN1bmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19GVUxMU09DSwotCi0vKiBhcnBoZC5hdF9uZXh0ICovCi0jdW5kZWYgU1RSVUNUX0FSUEhEX0hBU19BVF9ORVhUCi0KLS8qIGlmYWRkci5pZmFfbmV4dCAqLwotI3VuZGVmIFNUUlVDVF9JRkFERFJfSEFTX0lGQV9ORVhUCi0KLS8qIGlmbmV0LmlmX210dSAqLwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTVRVCi0KLS8qIHN3ZGV2dC5zd19uYmxrc2VuYWJsZWQgKi8KLSN1bmRlZiBTVFJVQ1RfU1dERVZUX0hBU19TV19OQkxLU0VOQUJMRUQKLQotLyogbmxpc3Qubl92YWx1ZSAqLwotI3VuZGVmIFNUUlVDVF9OTElTVF9IQVNfTl9WQUxVRQotCi0vKiBubGlzdDY0Lm5fdmFsdWUgKi8KLSN1bmRlZiBTVFJVQ1RfTkxJU1Q2NF9IQVNfTl9WQUxVRQotCi0vKiBpcHN0YXQgc3RydWN0dXJlIHRlc3RzICovCi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0NBTlRGT1JXQVJECi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0NBTlRGUkFHCi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0RFTElWRVJFRAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHRFJPUFBFRAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHVElNRU9VVAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19MT0NBTE9VVAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19OT1BST1RPCi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX05PUk9VVEUKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfT0RST1BQRUQKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfT0ZSQUdNRU5UUwotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19SRUFTU0VNQkxFRAotCi0vKiB2ZnNzdGF0LmZfZnJzaXplICovCi0jdW5kZWYgU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRlJTSVpFCi0KLS8qIHZmc3N0YXQuZl9maWxlcyAqLwotI3VuZGVmIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZJTEVTCi0KLS8qIHN0YXRmcyBpbm9kZSBzdHJ1Y3R1cmUgdGVzdHMqLwotI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRklMRVMKLSN1bmRlZiBTVFJVQ1RfU1RBVEZTX0hBU19GX0ZGUkVFCi0jdW5kZWYgU1RSVUNUX1NUQVRGU19IQVNfRl9GQVZBSUwKLQotLyogZGVzX2tzX3N0cnVjdC53ZWFrX2tleSAqLwotI3VuZGVmIFNUUlVDVF9ERVNfS1NfU1RSVUNUX0hBU19XRUFLX0tFWQotCi0vKiBpZm5ldCBuZWVkcyB0byBoYXZlIF9LRVJORUwgZGVmaW5lZCAqLwotI3VuZGVmIElGTkVUX05FRURTX0tFUk5FTAotCi0vKiBzeXNjdGwgd29ya3MgdG8gZ2V0IGJvb3R0aW1lLCBldGMuLi4gKi8KLSN1bmRlZiBORVRTTk1QX0NBTl9VU0VfU1lTQ1RMCi0KLS8qIGRlZmluZSBpZiBTSU9DR0lGQUREUiBleGlzdHMgaW4gc3lzL2lvY3RsLmggKi8KLSN1bmRlZiBTWVNfSU9DVExfSF9IQVNfU0lPQ0dJRkFERFIKLQotLyogRGVmaW5lIGlmIHN0YXRmcyB0YWtlcyAyIGFyZ3MgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgaGFzCi0gICB0eXBlIHN0cnVjdCBmc19kYXRhLiBbVWx0cml4XSAqLwotI3VuZGVmIFNUQVRfU1RBVEZTX0ZTX0RBVEEKLQotLyogRGVmaW5lIGlmIHRoZSBUQ1AgdGltZXIgY29uc3RhbnRzIGluIDxuZXRpbmV0L3RjcF90aW1lci5oPgotICAgZGVwZW5kIG9uIHRoZSBpbnRlZ2VyIHZhcmlhYmxlIGBoeicuICBbRnJlZUJTRCA0LnhdICovCi0jdW5kZWYgVENQVFZfTkVFRFNfSFoKLQotLyogTm90LXRvLWJlLWNvbXBpbGVkIG1hY3JvcyBmb3IgdXNlIGJ5IGNvbmZpZ3VyZSBvbmx5ICovCi0jZGVmaW5lIGNvbmZpZ19yZXF1aXJlKHgpCi0jZGVmaW5lIGNvbmZpZ19leGNsdWRlKHgpCi0jZGVmaW5lIGNvbmZpZ19hcmNoX3JlcXVpcmUoeCx5KQotI2RlZmluZSBjb25maWdfcGFyc2VfZG90X2NvbmYodyx4LHkseikKLSNkZWZpbmUgY29uZmlnX2FkZF9taWIoeCkKLSNkZWZpbmUgY29uZmlnX2JlbG9uZ3NfaW4oeCkKLSNkZWZpbmUgY29uZmlnX2Vycm9yKHgpCi0jZGVmaW5lIGNvbmZpZ193YXJuaW5nKHgpCi0gIAogI2lmIGRlZmluZWQgKFdJTjMyKSB8fCBkZWZpbmVkIChtaW5ndzMyKSB8fCBkZWZpbmVkIChjeWd3aW4pCiAjZGVmaW5lIEVOVl9TRVBBUkFUT1IgIjsiCiAjZGVmaW5lIEVOVl9TRVBBUkFUT1JfQ0hBUiAnOycKQEAgLTI2Nyw0NyArMzgsNiBAQAogCiAvKiBlbmQgb2YgZGVmaW5pdGlvbnMgYWRkZWQgYnkgY29uZmlndXJlIG9uLXRoZS1mbHkgKi8KIAotI2lmbmRlZiBIQVZFX1NUUkNIUgotI2lmZGVmIEhBVkVfSU5ERVgKLSMgZGVmaW5lIHN0cmNociBpbmRleAotIyBkZWZpbmUgc3RycmNociByaW5kZXgKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9JTkRFWAotI2lmZGVmIEhBVkVfU1RSQ0hSCi0jaWZkZWYgbWluZ3czMgotIyBkZWZpbmUgaW5kZXgoYSxiKSBzdHJjaHIoYSxiKQotIyBkZWZpbmUgcmluZGV4KGEsYikgc3RycmNocihhLGIpCi0jZWxzZQotIyBkZWZpbmUgaW5kZXggc3RyY2hyCi0jIGRlZmluZSByaW5kZXggc3RycmNocgotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTUVNQ1BZCi0jaWZkZWYgSEFWRV9CQ09QWQotIyBkZWZpbmUgbWVtY3B5KGQsIHMsIG4pIGJjb3B5ICgocyksIChkKSwgKG4pKQotIyBkZWZpbmUgbWVtbW92ZShkLCBzLCBuKSBiY29weSAoKHMpLCAoZCksIChuKSkKLSMgZGVmaW5lIG1lbWNtcCBiY21wCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTUVNTU9WRQotI2lmZGVmIEhBVkVfTUVNQ1BZCi0jIGRlZmluZSBtZW1tb3ZlIG1lbWNweQotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0JDT1BZCi0jaWZkZWYgSEFWRV9NRU1DUFkKLSMgZGVmaW5lIGJjb3B5KHMsIGQsIG4pIG1lbWNweSAoKGQpLCAocyksIChuKSkKLSMgZGVmaW5lIGJ6ZXJvKHAsbikgbWVtc2V0KChwKSwoMCksKG4pKQotIyBkZWZpbmUgYmNtcCBtZW1jbXAKLSNlbmRpZgotI2VuZGlmCi0KIC8qIElmIHlvdSBoYXZlIG9wZW5zc2wgMC45Ljcgb3IgYWJvdmUsIHlvdSBsaWtlbHkgaGF2ZSBBRVMgc3VwcG9ydC4gKi8KICN1bmRlZiBORVRTTk1QX1VTRV9PUEVOU1NMCiAjaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfT1BFTlNTTF9BRVNfSCkgJiYgZGVmaW5lZChIQVZFX0FFU19DRkIxMjhfRU5DUllQVCkKQEAgLTM2NCwyNyArOTQsNiBAQAogLyogZGVmYXVsdCBsaXN0IG9mIG1pYnMgdG8gbG9hZCAqLwogI2RlZmluZSBORVRTTk1QX0RFRkFVTFRfTUlCUyAiSVAtTUlCOklGLU1JQjpUQ1AtTUlCOlVEUC1NSUI6U05NUHYyLU1JQjpSRkMxMjEzLU1JQiIKIAotLyogZGVmYXVsdCBsb2NhdGlvbiB0byBsb29rIGZvciBtaWJzIHRvIGxvYWQgdXNpbmcgdGhlIGFib3ZlIHRva2VucwotICAgYW5kL29yIHRob3NlIGluIHRoZSBNSUJTIGVudnJpb25tZW50IHZhcmlhYmxlKi8KLSN1bmRlZiBORVRTTk1QX0RFRkFVTFRfTUlCRElSUwotCi0vKiBkZWZhdWx0IG1pYiBmaWxlcyB0byBsb2FkLCBzcGVjaWZpZWQgYnkgcGF0aC4gKi8KLSN1bmRlZiBORVRTTk1QX0RFRkFVTFRfTUlCRklMRVMKLQotLyogc2hvdWxkIHdlIGNvbXBpbGUgdG8gdXNlIHNwZWNpYWwgb3BhcXVlIHR5cGVzOiBmbG9hdCwgZG91YmxlLAotICAgY291bnRlcjY0LCBpNjQsIHVpNjQsIHVuaW9uPyAqLwotI3VuZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUwotCi0vKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gY29tcGlsZSBzdXBwb3J0IGZvciBib3RoIGF1dGhlbnRpY2F0aW9uIGFuZAotICAgcHJpdmFjeSBzdXBwb3J0LiAqLwotI3VuZGVmIE5FVFNOTVBfRU5BQkxFX1NDQVBJX0FVVEhQUklWCi0KLS8qIGRlZmluZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBNRDUgY29kZSAuLi4qLwotI3VuZGVmIE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENQotCi0vKiBkZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgY29kZVMxMSBsaWJyYXJ5IC4uLiovCi0jdW5kZWYgTkVUU05NUF9VU0VfUEtDUzExCi0KIC8qIGRlYnVnZ2luZyBzdHVmZiAqLwogLyogaWYgZGVmaW5lZCwgd2Ugb3B0aW1pemUgdGhlIGNvZGUgdG8gZXhjbHVkZSBhbGwgZGVidWdnaW5nIGNhbGxzLiAqLwogI3VuZGVmIE5FVFNOTVBfTk9fREVCVUdHSU5HCkBAIC00MDAsOSArMTA5LDYgQEAKICAgIGxpbmVzOiBQRVJTSVNURU5UX0RJUkVDVE9SWS9OQU1FLnBlcnNpc3RlbnQuY29uZiAqLwogI2RlZmluZSBORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZICIvdmFyL3NubXAiCiAKLS8qIFBFUlNJU1RFTlRfTUFTSzogdGhlIHVtYXNrIHBlcm1pc3Npb25zIHRvIHNldCB1cCBwZXJzaXN0ZW50IGZpbGVzIHdpdGggKi8KLSNkZWZpbmUgTkVUU05NUF9QRVJTSVNURU5UX01BU0sgMDc3Ci0KIC8qIEFHRU5UX0RJUkVDVE9SWV9NT0RFOiB0aGUgbW9kZSB0aGUgYWdlbnRzIHNob3VsZCB1c2UgdG8gY3JlYXRlCiAgICBkaXJlY3RvcmllcyB3aXRoLiBTaW5jZSB0aGUgZGF0YSBzdG9yZWQgaGVyZSBpcyBwcm9iYWJseSBzZW5zaXRpdmUsIGl0CiAgICBwcm9iYWJseSBzaG91bGQgYmUgcmVhZC1vbmx5IGJ5IHJvb3QvYWRtaW5pc3RyYXRvci4gKi8KQEAgLTQ0NywxOSArMTUzLDYgQEAKIC8qIFVzZSBsaWJ3cmFwIHRvIGhhbmRsZSBhbGxvdy9kZW55IGhvc3RzPyAqLwogI3VuZGVmIE5FVFNOTVBfVVNFX0xJQldSQVAKIAotLyogdGVzdGluZyBjb2RlIHNlY3Rpb25zLiAqLwotI3VuZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERSAKLQotLyogSWYgeW91IGRvbid0IGhhdmUgcm9vdCBhY2Nlc3MgZG9uJ3QgZXhpdCB1cG9uIGttZW0gZXJyb3JzICovCi0jdW5kZWYgTkVUU05NUF9OT19ST09UX0FDQ0VTUwotCi0vKiBJZiB3ZSBkb24ndCB3YW50IHRvIHVzZSBrbWVtLiAqLwotI3VuZGVmIE5FVFNOTVBfTk9fS01FTV9VU0FHRQotCi0vKiBJZiB5b3UgZG9uJ3Qgd2FudCB0aGUgYWdlbnQgdG8gcmVwb3J0IG9uIHZhcmlhYmxlcyBpdCBkb2Vzbid0IGhhdmUgZGF0YSBmb3IgKi8KLSN1bmRlZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUwotCi0KIC8qIE1pYi0yIHRyZWUgSW5mbyAqLwogLyogVGhlc2UgYXJlIHRoZSBzeXN0ZW0gaW5mb3JtYXRpb24gdmFyaWFibGVzLiAqLwogCkBAIC02NTQsOSArMzQ3LDYgQEAKIC8qIGludGVybmFsIGRlZmluZSAqLwogI2RlZmluZSBORVRTTk1QX0xBU1RGSUVMRCAtMQogCi0vKiBjb25maWd1cmUgb3B0aW9ucyBzcGVjaWZpZWQgKi8KLSNkZWZpbmUgTkVUU05NUF9DT05GSUdVUkVfT1BUSU9OUyAiIgotCiAvKiAgUGx1Z2dhYmxlIHRyYW5zcG9ydHMuICAqLwogCiAvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBVRFAvSVAgdHJhbnNwb3J0IGRvbWFpbiBpcwpAQCAtNjkxLDEwICszODEsMjIgQEAKICAgICBhdmFpbGFibGUuICAqLwogI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1RDUElQVjZfRE9NQUlOCiAKLS8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3IgdGhlIFVEUC9JUCB0cmFuc3BvcnQgZG9tYWluIGlzCisvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBUTFMgdHJhbnNwb3J0IGRvbWFpbiBpcwogICAgIGF2YWlsYWJsZS4gICAqLwogI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1RMU19ET01BSU4KIAorLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgQWxpYXMgdHJhbnNwb3J0IGRvbWFpbiBpcworICAgIGF2YWlsYWJsZS4gICAqLworI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX0FMSUFTX0RPTUFJTgorCisvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBTU0ggdHJhbnNwb3J0IGRvbWFpbiBpcworICAgIGF2YWlsYWJsZS4gICAqLworI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1NTSF9ET01BSU4KKworLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgRFRMUy9VRFAgdHJhbnNwb3J0IGRvbWFpbiBpcworICAgIGF2YWlsYWJsZS4gICAqLworI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX0RUTFNVRFBfRE9NQUlOCisKIC8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3Igc3RkaW4vb3V0IHRyYW5zcG9ydCBkb21haW4gaXMgYXZhaWxhYmxlLiAgICovCiAjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfU1REX0RPTUFJTgogCkBAIC03MDcsMTggKzQwOSw5IEBACiAvKiBkZWZpbmUgdGhpcyBpZiB0aGUgbG9jYWwgc2VjdXJpdHkgbW9kdWxlIGlzIGF2YWlsYWJsZSAqLwogI3VuZGVmIE5FVFNOTVBfU0VDTU9EX0xPQ0FMU00KIAotLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggcmVlbnRyYW50L3RocmVhZGVkIGNvZGUgKGluY29tcGxldGUpKi8KLSN1bmRlZiBORVRTTk1QX1JFRU5UUkFOVAotCiAvKiBkZWZpbmUgaWYgY29uZmlndXJlZCBhcyBhICJtaW5pLWFnZW50IiAqLwogI3VuZGVmIE5FVFNOTVBfTUlOSV9BR0VOVAogCi0vKiBkZWZpbmUgaWYgeW91IGFyZSBlbWJlZGRpbmcgcGVybCBpbiB0aGUgbWFpbiBhZ2VudCAqLwotI3VuZGVmIE5FVFNOTVBfRU1CRURERURfUEVSTAotCi0vKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgTUZEIG1vZHVsZSByZXdyaXRlcyovCi0jdW5kZWYgTkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTCi0KIC8qIHRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBuZXQtc25tcCBtaWIgdHJlZS4gIEl0IHNob3VsZG4ndCBiZQogICAgY2hhbmdlZCwgYXMgdGhlIHBsYWNlcyBpdCBpcyB1c2VkIGFyZSBleHBlY3RlZCB0byBiZSBjb25zdGFudAogICAgdmFsdWVzIG9yIGFyZSBkaXJlY3RseSB0aWVkIHRvIHRoZSBVQ0QtU05NUC1NSUIuICovCkBAIC03ODYsMjQgKzQ3OSw2IEBACiAjICBkZWZpbmUgTkVUU05NUF9JTVBPUlQgZXh0ZXJuCiAjZW5kaWYKIAotLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBJUHY2IHN1cHBvcnQgKi8KLSN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2Ci0KLS8qIGRlZmluZSBpZiB5b3Ugd2FudCB0byByZXN0cmljdCBTTVVYIGNvbm5lY3Rpb25zIHRvIGxvY2FsaG9zdCBieSBkZWZhdWx0ICovCi0jdW5kZWYgTkVUU05NUF9FTkFCTEVfTE9DQUxfU01VWAotCi0vKiBkZWZpbmUgaWYgYWdlbnR4IHRyYW5zcG9ydCBpcyB0byB1c2UgZG9tYWluIHNvY2tldHMgb25seSAqLwotI3VuZGVmIE5FVFNOTVBfQUdFTlRYX0RPTV9TT0NLX09OTFkKLQotLyogZGVmaW5lIGlmIHlvdSBkbyBub3Qgd2FudCBzbm1wdHJhcGQgdG8gcmVnaXN0ZXIgYXMgYW4gQWdlbnRYIHN1YmFnZW50ICovCi0jdW5kZWYgTkVUU05NUF9TTk1QVFJBUERfRElTQUJMRV9BR0VOVFgKLQotLyogZGVmaW5lIHRoaXMgaWYgd2UncmUgdXNpbmcgdGhlIG5ldyBNSVQgY3J5cHRvIEFQSSAqLwotI3VuZGVmIE5FVFNOTVBfVVNFX0tFUkJFUk9TX01JVAotCi0vKiBkZWZpbmUgdGhpcyBpZiB5b3UncmUgdXNpbmcgSGVpbWRhbCBLZXJiZXJvcyAqLwotI3VuZGVmIE5FVFNOTVBfVVNFX0tFUkJFUk9TX0hFSU1EQUwKLQogLyogY29tbWVudCB0aGUgbmV4dCBsaW5lIGlmIHlvdSBhcmUgY29tcGlsaW5nIHdpdGggbGlic25tcC5oIAogICAgYW5kIGFyZSBub3QgdXNpbmcgdGhlIFVDLURhdmlzIFNOTVAgbGlicmFyeS4gKi8KICNkZWZpbmUgVUNEX1NOTVBfTElCUkFSWSAxCkBAIC04MTIsNyArNDg3LDcgQEAKICN1bmRlZiBDTVVfQ09NUEFUSUJMRQogCiAvKiBmaW5hbCBjb25jbHVzaW9uIG9uIG5saXN0IHVzYWdlICovCi0jaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKFNUUlVDVF9OTElTVF9IQVNfTl9WQUxVRSkgJiYgIWRlZmluZWQoTkVUU05NUF9ET05UX1VTRV9OTElTVCkgJiYgIWRlZmluZWQoTkVUU05NUF9OT19LTUVNX1VTQUdFKQorI2lmIGRlZmluZWQoSEFWRV9OTElTVCkgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9OTElTVF9OX1ZBTFVFKSAmJiAhZGVmaW5lZChORVRTTk1QX0RPTlRfVVNFX05MSVNUKSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0tNRU1fVVNBR0UpCiAjZGVmaW5lIE5FVFNOTVBfQ0FOX1VTRV9OTElTVAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxMjk4MC4uMDAwMDAwMAotLS0gYS9hY2luY2x1ZGUubTQKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotZG5sIEBzeW5vcHNpcyBBQ19QUk9NUFRfVVNFUl9OT19ERUZJTkUoVkFSSUFCTEVOQU1FLFFVRVNUSU9OLFtERUZBVUxUXSkKLWRubAotZG5sIEFza3MgYSBRVUVTVElPTiBhbmQgcHV0cyB0aGUgcmVzdWx0cyBpbiBWQVJJQUJMRU5BTUUgd2l0aCBhbiBvcHRpb25hbAotZG5sIERFRkFVTFQgdmFsdWUgaWYgdGhlIHVzZXIgbWVyZWx5IGhpdHMgcmV0dXJuLgotZG5sCi1kbmwgQHZlcnNpb24gMS4xNQotZG5sIEBhdXRob3IgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1kbmwKLUFDX0RFRlVOKFtBQ19QUk9NUFRfVVNFUl9OT19ERUZJTkVdLAotZG5sIGNoYW5nZXF1b3RlKDw8LCA+PikgZG5sCi1kbmwgPDwKLVsKLWlmIHRlc3QgIngkZGVmYXVsdHMiID0gInhubyI7IHRoZW4KLWVjaG8gJEVDSE9fTiAiJDIgKCQzKTogJEVDSE9fQyIKLXJlYWQgdG1waW5wdXQKLWlmIHRlc3QgIiR0bXBpbnB1dCIgPSAiIiAtYSAiJDMiICE9ICIiOyB0aGVuCi0gIHRtcGlucHV0PSIkMyIKLWZpCi1ldmFsICQxPVwiJHRtcGlucHV0XCIKLWVsc2UKLXRtcGlucHV0PSIkMyIKLWV2YWwgJDE9XCIkdG1waW5wdXRcIgotZmkKLV0KLWRubCA+PgotZG5sIGNoYW5nZXF1b3RlKFssIF0pCi0pIGRubCBkb25lIEFDX1BST01QVF9VU0VSCi0KLWRubCBAc3lub3BzaXMgQUNfUFJPTVBUX1VTRVIoVkFSSUFCTEVOQU1FLFFVRVNUSU9OLFtERUZBVUxUXSxRVU9URUQpCi1kbmwKLWRubCBBc2tzIGEgUVVFU1RJT04gYW5kIHB1dHMgdGhlIHJlc3VsdHMgaW4gVkFSSUFCTEVOQU1FIHdpdGggYW4gb3B0aW9uYWwKLWRubCBERUZBVUxUIHZhbHVlIGlmIHRoZSB1c2VyIG1lcmVseSBoaXRzIHJldHVybi4gIEFsc28gY2FsbHMgCi1kbmwgQUNfREVGSU5FX1VOUVVPVEVEKCkgb24gdGhlIFZBUklBQkxFTkFNRSBmb3IgVkFSSUFCTEVOQU1FcyB0aGF0IHNob3VsZAotZG5sIGJlIGVudGVyZWQgaW50byB0aGUgY29uZmlnLmggZmlsZSBhcyB3ZWxsLiAgSWYgUVVPVEVEIGlzICJxdW90ZWQiIHRoZW4KLWRubCB0aGUgcmVzdWx0IHdpbGwgYmUgZGVmaW5lZCB3aXRoaW4gcXVvdGVzLgotZG5sCi1kbmwgQHZlcnNpb24gMS4xNQotZG5sIEBhdXRob3IgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1kbmwKLUFDX0RFRlVOKFtBQ19QUk9NUFRfVVNFUl0sCi1bCi1NU0dfQ0hFQ0s9YGVjaG8gIiQyIiB8IHRhaWwgLTFgCi1BQ19DQUNIRV9DSEVDSygkTVNHX0NIRUNLLCBhY19jdl91c2VyX3Byb21wdF8kMSwKLVtlY2hvICIiID4mQUNfRkRfTVNHCi1BQ19QUk9NUFRfVVNFUl9OT19ERUZJTkUoJDEsWyQyXSwkMykKLWV2YWwgYWNfY3ZfdXNlcl9wcm9tcHRfJDE9XCQkMQotZWNobyAkRUNIT19OICJzZXR0aW5nICRNU0dfQ0hFQ0sgdG8uLi4gICRFQ0hPX0MiID4mQUNfRkRfTVNHCi1dKQotaWYgdGVzdCAiJGFjX2N2X3VzZXJfcHJvbXB0XyQxIiAhPSAibm9uZSI7IHRoZW4KLSAgaWYgdGVzdCAieCQ0IiA9ICJ4cXVvdGVkIiAtbyAieCQ0IiA9ICJ4UVVPVEVEIjsgdGhlbgotICAgIEFDX0RFRklORV9VTlFVT1RFRCgkMSwiJGFjX2N2X3VzZXJfcHJvbXB0XyQxIikKLSAgZWxzZQotICAgIEFDX0RFRklORV9VTlFVT1RFRCgkMSwkYWNfY3ZfdXNlcl9wcm9tcHRfJDEpCi0gIGZpCi1maQotXSkgZG5sCi0KLWRubCBAc3lub3BzaXMgQUNfQ0hFQ0tfU1RSVUNUX0ZPUihJTkNMVURFUyxTVFJVQ1QsTUVNQkVSLERFRklORSxbbm9dKQotZG5sCi1kbmwgQ2hlY2tzIFNUUlVDVCBmb3IgTUVNQkVSIGFuZCBkZWZpbmVzIERFRklORSBpZiBmb3VuZC4KLWRubAotZG5sIEB2ZXJzaW9uIDEuMTUKLWRubCBAYXV0aG9yIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotZG5sCi1BQ19ERUZVTihbQUNfQ0hFQ0tfU1RSVUNUX0ZPUl0sWwotCi1hY19zYWZlX3N0cnVjdD1gZWNobyAiJDIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAotYWNfc2FmZV9tZW1iZXI9YGVjaG8gIiQzIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLWFjX3NhZmVfYWxsPSJhY19jdl9zdHJ1Y3RfJHthY19zYWZlX3N0cnVjdH1faGFzXyR7YWNfc2FmZV9tZW1iZXJ9IgotY2hhbmdlcXVvdGUoLCApZG5sCi0gIGFjX3VjX2RlZmluZT1TVFJVQ1RfYGVjaG8gIiR7YWNfc2FmZV9zdHJ1Y3R9X0hBU18ke2FjX3NhZmVfbWVtYmVyfSIgfCBzZWQgJ3klYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lJ2AKLWNoYW5nZXF1b3RlKFssIF0pZG5sCi0KLUFDX01TR19DSEVDS0lORyhbZm9yICQyLiQzXSkKLUFDX0NBQ0hFX1ZBTCgkYWNfc2FmZV9hbGwsCi1bCi1pZiB0ZXN0ICJ4JDQiID0gIngiOyB0aGVuCi0gIGRlZmluZWl0PSI9IDAiCi1lbGlmIHRlc3QgIngkNCIgPSAieG5vIjsgdGhlbgotICBkZWZpbmVpdD0iIgotZWxzZQotICBkZWZpbmVpdD0iJDQiCi1maQotQUNfVFJZX0NPTVBJTEUoWwotJDEKLV0sWwotc3RydWN0ICQyIHRlc3RpdDsgCi10ZXN0aXQuJDMgJGRlZmluZWl0OwotXSwgZXZhbCAiJHthY19zYWZlX2FsbH09eWVzIiwgZXZhbCAiJHthY19zYWZlX2FsbH09bm8iICkKLV0pCi0KLWlmIGV2YWwgInRlc3QgXCJ4JGBlY2hvICR7YWNfc2FmZV9hbGx9YFwiID0gXCJ4eWVzXCIiOyB0aGVuCi0gIEFDX01TR19SRVNVTFQoeWVzKQotICBBQ19ERUZJTkVfVU5RVU9URUQoJGFjX3VjX2RlZmluZSkKLWVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKLWZpCi0KLV0pCi0KLWRubCBBQ19DSEVDS19JRk5FVF9GT1IoU1VCU1RSVUNULFtub10pCi1BQ19ERUZVTihbQUNfQ0hFQ0tfSUZORVRfRk9SXSxbCi1kbmwgY2hlY2sgZm9yICQxIGluIHN0cnVjdCBpZm5ldAotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2lmZGVmIEhBVkVfU1lTX1RJTUVfSAotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZXQvaWYuaD4KLSNpZmRlZiBIQVZFX05FVF9JRl9WQVJfSAotI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX1FVRVVFX0gKLSNpbmNsdWRlIDxzeXMvcXVldWUuaD4KLSNlbmRpZgotI2lmZGVmIGxpbnV4Ci1zdHJ1Y3QgaWZuZXQgewotCWNoYXIJKmlmX25hbWU7CQkvKiBuYW1lLCBlLmcuICJlbiIgb3IgImxvIiAqLwotCXNob3J0CWlmX3VuaXQ7CQkvKiBzdWItdW5pdCBmb3IgbG93ZXIgbGV2ZWwgZHJpdmVyICovCi0Jc2hvcnQJaWZfbXR1OwkJCS8qIG1heGltdW0gdHJhbnNtaXNzaW9uIHVuaXQgKi8KLQlzaG9ydAlpZl9mbGFnczsJCS8qIHVwL2Rvd24sIGJyb2FkY2FzdCwgZXRjLiAqLwotCWludAlpZl9tZXRyaWM7CQkvKiByb3V0aW5nIG1ldHJpYyAoZXh0ZXJuYWwgb25seSkgKi8KLQljaGFyICAgIGlmX2h3YWRkciBbNl07CQkvKiBldGhlcm5ldCBhZGRyZXNzICovCi0JaW50CWlmX3R5cGU7CQkvKiBpbnRlcmZhY2UgdHlwZTogMT1nZW5lcmljLAotCQkJCQkgICAyOD1zbGlwLCBldGhlcj02LCBsb29wYmFjaz0yNCAqLwotCWludAlpZl9zcGVlZDsJCS8qIGludGVyZmFjZSBzcGVlZDogaW4gYml0cy9zZWMgKi8KLQotCXN0cnVjdCBzb2NrYWRkciBpZl9hZGRyOwkvKiBpbnRlcmZhY2UncyBhZGRyZXNzICovCi0Jc3RydWN0IHNvY2thZGRyIGlmdV9icm9hZGFkZHI7CS8qIGJyb2FkY2FzdCBhZGRyZXNzICovCi0Jc3RydWN0IHNvY2thZGRyIGlhX3N1Ym5ldG1hc2s7IAkvKiBpbnRlcmZhY2UncyBtYXNrICovCi0KLQlzdHJ1Y3QJaWZxdWV1ZSB7Ci0JCWludAlpZnFfbGVuOwotCQlpbnQJaWZxX2Ryb3BzOwotCX0gaWZfc25kOwkJCS8qIG91dHB1dCBxdWV1ZSAqLwotCWludAlpZl9pYnl0ZXM7CQkvKiBvY3RldHMgcmVjZWl2ZWQgb24gaW50ZXJmYWNlICovCi0JaW50CWlmX2lwYWNrZXRzOwkJLyogcGFja2V0cyByZWNlaXZlZCBvbiBpbnRlcmZhY2UgKi8KLQlpbnQJaWZfaWVycm9yczsJCS8qIGlucHV0IGVycm9ycyBvbiBpbnRlcmZhY2UgKi8KLSAgICAgICAgaW50ICAgICBpZl9pcWRyb3BzOyAgICAgICAgICAgICAvKiBpbnB1dCBxdWV1ZSBvdmVycnVucyAqLwotCWludAlpZl9vYnl0ZXM7CQkvKiBvY3RldHMgc2VudCBvbiBpbnRlcmZhY2UgKi8KLQlpbnQJaWZfb3BhY2tldHM7CQkvKiBwYWNrZXRzIHNlbnQgb24gaW50ZXJmYWNlICovCi0JaW50CWlmX29lcnJvcnM7CQkvKiBvdXRwdXQgZXJyb3JzIG9uIGludGVyZmFjZSAqLwotCWludAlpZl9jb2xsaXNpb25zOwkJLyogY29sbGlzaW9ucyBvbiBjc21hIGludGVyZmFjZXMgKi8KLS8qIGVuZCBzdGF0aXN0aWNzICovCi0Jc3RydWN0CWlmbmV0ICppZl9uZXh0OwotfTsKLSNlbmRpZgotXSwgaWZuZXQsICQxLCAkMikKLV0pCi0KLWRubAotZG5sIEFkZCBhIHNlYXJjaCBwYXRoIHRvIHRoZSBMSUJTIGFuZCBDRkxBR1MgdmFyaWFibGVzCi1kbmwKLUFDX0RFRlVOKFtBQ19BRERfU0VBUkNIX1BBVEhdLFsKLSAgaWYgdGVzdCAieCQxIiAhPSB4IC1hIC1kICQxOyB0aGVuCi0gICAgIGlmIHRlc3QgLWQgJDEvbGliOyB0aGVuCi0gICAgICAgTERGTEFHUz0iLUwkMS9saWIgJExERkxBR1MiCi0gICAgIGZpCi0gICAgIGlmIHRlc3QgLWQgJDEvaW5jbHVkZTsgdGhlbgotCUNQUEZMQUdTPSItSSQxL2luY2x1ZGUgJENQUEZMQUdTIgotICAgICBmaQotICBmaQotXSkKLQotZG5sCi1kbmwgU3RvcmUgaW5mb3JtYXRpb24gZm9yIGRpc3BsYXlpbmcgbGF0ZXIuCi1kbmwKLUFDX0RFRlVOKFtBQ19NU0dfQ0FDSEVfSU5JVF0sWwotICBybSAtZiBjb25maWd1cmUtc3VtbWFyeQotXSkKLQotQUNfREVGVU4oW0FDX01TR19DQUNIRV9BRERdLFsKLSAgY2F0ID4+IGNvbmZpZ3VyZS1zdW1tYXJ5IDw8IEVPRgotICAkMQotRU9GCi1dKQotCi1BQ19ERUZVTihbQUNfTVNHX0NBQ0hFX0RJU1BMQVldLFsKLSAgZWNobyAiIgotICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0gIGVjaG8gIiAgICAgICAgICAgIE5ldC1TTk1QIGNvbmZpZ3VyYXRpb24gc3VtbWFyeToiCi0gIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSAgZWNobyAiIgotICBjYXQgY29uZmlndXJlLXN1bW1hcnkKLSAgZWNobyAiIgotICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0gIGVjaG8gIiIKLV0pCi0KLUFDX0RFRlVOKFtBQ19NU0dfTU9EVUxFX0RCR10sCi1bCi0gIGlmIHRlc3QgJG1vZHVsZV9kZWJ1ZyA9IDE7IHRoZW4KLSAgICBlY2hvICQxICQyICQzICQ0Ci0gIGZpCi1dCi0pCmRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAppbmRleCA0NDFjNzUyLi5kZTU5NGI4IDEwMDY0NAotLS0gYS9hY2xvY2FsLm00CisrKyBiL2FjbG9jYWwubTQKQEAgLTExLDY2NDAgKzExLDE0IEBACiAjIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEKICMgUEFSVElDVUxBUiBQVVJQT1NFLgogCi0jIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQotCi0jIHNlcmlhbCA1MiBBQ19QUk9HX0xJQlRPT0wKLQotCi0jIEFDX1BST1ZJREVfSUZFTFNFKE1BQ1JPLU5BTUUsIElGLVBST1ZJREVELCBJRi1OT1QtUFJPVklERUQpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIElmIHRoaXMgbWFjcm8gaXMgbm90IGRlZmluZWQgYnkgQXV0b2NvbmYsIGRlZmluZSBpdCBoZXJlLgotbTRfaWZkZWYoW0FDX1BST1ZJREVfSUZFTFNFXSwKLSAgICAgICAgIFtdLAotICAgICAgICAgW200X2RlZmluZShbQUNfUFJPVklERV9JRkVMU0VdLAotCSAgICAgICAgIFttNF9pZmRlZihbQUNfUFJPVklERV8kMV0sCi0JCSAgICAgICAgICAgWyQyXSwgWyQzXSldKV0pCi0KLQotIyBBQ19QUk9HX0xJQlRPT0wKLSMgLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfUFJPR19MSUJUT09MXSwKLVtBQ19SRVFVSVJFKFtfQUNfUFJPR19MSUJUT09MXSlkbmwKLWRubCBJZiBBQ19QUk9HX0NYWCBoYXMgYWxyZWFkeSBiZWVuIGV4cGFuZGVkLCBydW4gQUNfTElCVE9PTF9DWFgKLWRubCBpbW1lZGlhdGVseSwgb3RoZXJ3aXNlLCBob29rIGl0IGluIGF0IHRoZSBlbmQgb2YgQUNfUFJPR19DWFguCi0gIEFDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0NYWF0sCi0gICAgW0FDX0xJQlRPT0xfQ1hYXSwKLSAgICBbZGVmaW5lKFtBQ19QUk9HX0NYWF0sIGRlZm4oW0FDX1BST0dfQ1hYXSlbQUNfTElCVE9PTF9DWFgKLSAgXSldKQotZG5sIEFuZCBhIHNpbWlsYXIgc2V0dXAgZm9yIEZvcnRyYW4gNzcgc3VwcG9ydAotICBBQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19GNzddLAotICAgIFtBQ19MSUJUT09MX0Y3N10sCi0gICAgW2RlZmluZShbQUNfUFJPR19GNzddLCBkZWZuKFtBQ19QUk9HX0Y3N10pW0FDX0xJQlRPT0xfRjc3Ci1dKV0pCi0KLWRubCBRdW90ZSBBXVtNX1BST0dfR0NKIHNvIHRoYXQgYWNsb2NhbCBkb2Vzbid0IGJyaW5nIGl0IGluIG5lZWRsZXNzbHkuCi1kbmwgSWYgZWl0aGVyIEFDX1BST0dfR0NKIG9yIEFdW01fUFJPR19HQ0ogaGF2ZSBhbHJlYWR5IGJlZW4gZXhwYW5kZWQsIHJ1bgotZG5sIEFDX0xJQlRPT0xfR0NKIGltbWVkaWF0ZWx5LCBvdGhlcndpc2UsIGhvb2sgaXQgaW4gYXQgdGhlIGVuZCBvZiBib3RoLgotICBBQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19HQ0pdLAotICAgIFtBQ19MSUJUT09MX0dDSl0sCi0gICAgW0FDX1BST1ZJREVfSUZFTFNFKFtBXVtNX1BST0dfR0NKXSwKLSAgICAgIFtBQ19MSUJUT09MX0dDSl0sCi0gICAgICBbQUNfUFJPVklERV9JRkVMU0UoW0xUX0FDX1BST0dfR0NKXSwKLQlbQUNfTElCVE9PTF9HQ0pdLAotICAgICAgW2lmZGVmKFtBQ19QUk9HX0dDSl0sCi0JICAgICBbZGVmaW5lKFtBQ19QUk9HX0dDSl0sIGRlZm4oW0FDX1BST0dfR0NKXSlbQUNfTElCVE9PTF9HQ0pdKV0pCi0gICAgICAgaWZkZWYoW0FdW01fUFJPR19HQ0pdLAotCSAgICAgW2RlZmluZShbQV1bTV9QUk9HX0dDSl0sIGRlZm4oW0FdW01fUFJPR19HQ0pdKVtBQ19MSUJUT09MX0dDSl0pXSkKLSAgICAgICBpZmRlZihbTFRfQUNfUFJPR19HQ0pdLAotCSAgICAgW2RlZmluZShbTFRfQUNfUFJPR19HQ0pdLAotCQlkZWZuKFtMVF9BQ19QUk9HX0dDSl0pW0FDX0xJQlRPT0xfR0NKXSldKV0pXSkKLV0pXSkjIEFDX1BST0dfTElCVE9PTAotCi0KLSMgX0FDX1BST0dfTElCVE9PTAotIyAtLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0FDX1BST0dfTElCVE9PTF0sCi1bQUNfUkVRVUlSRShbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi1BQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9DWFhdKWRubAotQUNfQkVGT1JFKFskMF0sW0FDX0xJQlRPT0xfRjc3XSlkbmwKLUFDX0JFRk9SRShbJDBdLFtBQ19MSUJUT09MX0dDSl0pZG5sCi0KLSMgVGhpcyBjYW4gYmUgdXNlZCB0byByZWJ1aWxkIGxpYnRvb2wgd2hlbiBuZWVkZWQKLUxJQlRPT0xfREVQUz0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotCi0jIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi1BQ19TVUJTVChMSUJUT09MKWRubAotCi0jIFByZXZlbnQgbXVsdGlwbGUgZXhwYW5zaW9uCi1kZWZpbmUoW0FDX1BST0dfTElCVE9PTF0sIFtdKQotXSkjIF9BQ19QUk9HX0xJQlRPT0wKLQotCi0jIEFDX0xJQlRPT0xfU0VUVVAKLSMgLS0tLS0tLS0tLS0tLS0tLQotQUNfREVGVU4oW0FDX0xJQlRPT0xfU0VUVVBdLAotW0FDX1BSRVJFUSgyLjUwKWRubAotQUNfUkVRVUlSRShbQUNfRU5BQkxFX1NIQVJFRF0pZG5sCi1BQ19SRVFVSVJFKFtBQ19FTkFCTEVfU1RBVElDXSlkbmwKLUFDX1JFUVVJUkUoW0FDX0VOQUJMRV9GQVNUX0lOU1RBTExdKWRubAotQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAotQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKLUFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAotQUNfUkVRVUlSRShbQUNfUFJPR19MRF0pZG5sCi1BQ19SRVFVSVJFKFtBQ19QUk9HX0xEX1JFTE9BRF9GTEFHXSlkbmwKLUFDX1JFUVVJUkUoW0FDX1BST0dfTk1dKWRubAotCi1BQ19SRVFVSVJFKFtBQ19QUk9HX0xOX1NdKWRubAotQUNfUkVRVUlSRShbQUNfREVQTElCU19DSEVDS19NRVRIT0RdKWRubAotIyBBdXRvY29uZiAyLjEzJ3MgQUNfT0JKRVhUIGFuZCBBQ19FWEVFWFQgbWFjcm9zIG9ubHkgd29ya3MgZm9yIEMgY29tcGlsZXJzIQotQUNfUkVRVUlSRShbQUNfT0JKRVhUXSlkbmwKLUFDX1JFUVVJUkUoW0FDX0VYRUVYVF0pZG5sCi1kbmwKLUFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOCi1BQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEUKLUFDX0xJQlRPT0xfT0JKRElSCi0KLUFDX1JFUVVJUkUoW19MVF9BQ19TWVNfQ09NUElMRVJdKWRubAotX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0gKLQotY2FzZSAkaG9zdF9vcyBpbgotYWl4MyopCi0gICMgQUlYIHNvbWV0aW1lcyBoYXMgcHJvYmxlbXMgd2l0aCB0aGUgR0NDIGNvbGxlY3QyIHByb2dyYW0uICBGb3Igc29tZQotICAjIHJlYXNvbiwgaWYgd2Ugc2V0IHRoZSBDT0xMRUNUX05BTUVTIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgcHJvYmxlbXMKLSAgIyB2YW5pc2ggaW4gYSBwdWZmIG9mIHNtb2tlLgotICBpZiB0ZXN0ICJYJHtDT0xMRUNUX05BTUVTK3NldH0iICE9IFhzZXQ7IHRoZW4KLSAgICBDT0xMRUNUX05BTUVTPQotICAgIGV4cG9ydCBDT0xMRUNUX05BTUVTCi0gIGZpCi0gIDs7Ci1lc2FjCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKLSMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1Yc2VkPSdzZWQgLWUgMXMvXlgvLycKLVtzZWRfcXVvdGVfc3Vic3Q9J3MvXChbXFwiXFxgJFxcXFxdXCkvXFxcMS9nJ10KLQotIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCi1bZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1xcIlxcYFxcXFxdXCkvXFxcMS9nJ10KLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNoZWxsIHZhcmlhYmxlIGluIGEKLSMgZG91YmxlX3F1b3RlX3N1YnN0J2VkIHN0cmluZy4KLWRlbGF5X3ZhcmlhYmxlX3N1YnN0PSdzL1xcXFxcXFxcXFxcJC9cXFxcXFwkL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucwotbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCi0KLSMgQ29uc3RhbnRzOgotcm09InJtIC1mIgotCi0jIEdsb2JhbCB2YXJpYWJsZXM6Ci1kZWZhdWx0X29maWxlPWxpYnRvb2wKLWNhbl9idWlsZF9zaGFyZWQ9eWVzCi0KLSMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotIyB3aGljaCBuZWVkcyAnLmxpYicpLgotbGliZXh0PWEKLWx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotb2ZpbGU9IiRkZWZhdWx0X29maWxlIgotd2l0aF9nbnVfbGQ9IiRsdF9jdl9wcm9nX2dudV9sZCIKLQotQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQotQUNfQ0hFQ0tfVE9PTChSQU5MSUIsIHJhbmxpYiwgOikKLUFDX0NIRUNLX1RPT0woU1RSSVAsIHN0cmlwLCA6KQotCi1vbGRfQ0M9IiRDQyIKLW9sZF9DRkxBR1M9IiRDRkxBR1MiCi0KLSMgU2V0IHNhbmUgZGVmYXVsdHMgZm9yIHZhcmlvdXMgdmFyaWFibGVzCi10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotdGVzdCAteiAiJEFTIiAmJiBBUz1hcwotdGVzdCAteiAiJENDIiAmJiBDQz1jYwotdGVzdCAteiAiJExUQ0MiICYmIExUQ0M9JENDCi10ZXN0IC16ICIkTFRDRkxBR1MiICYmIExUQ0ZMQUdTPSRDRkxBR1MKLXRlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLXRlc3QgLXogIiRMRCIgJiYgTEQ9bGQKLXRlc3QgLXogIiRMTl9TIiAmJiBMTl9TPSJsbiAtcyIKLXRlc3QgLXogIiRNQUdJQ19DTUQiICYmIE1BR0lDX0NNRD1maWxlCi10ZXN0IC16ICIkTk0iICYmIE5NPW5tCi10ZXN0IC16ICIkU0VEIiAmJiBTRUQ9c2VkCi10ZXN0IC16ICIkT0JKRFVNUCIgJiYgT0JKRFVNUD1vYmpkdW1wCi10ZXN0IC16ICIkUkFOTElCIiAmJiBSQU5MSUI9OgotdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06Ci10ZXN0IC16ICIkYWNfb2JqZXh0IiAmJiBhY19vYmpleHQ9bwotCi0jIERldGVybWluZSBjb21tYW5kcyB0byBjcmVhdGUgb2xkLXN0eWxlIHN0YXRpYyBhcmNoaXZlcy4KLW9sZF9hcmNoaXZlX2NtZHM9JyRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJwotb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotb2xkX3Bvc3R1bmluc3RhbGxfY21kcz0KLQotaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KLSAgY2FzZSAkaG9zdF9vcyBpbgotICBvcGVuYnNkKikKLSAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkb2xkbGliIgotICAgIDs7Ci0gICopCi0gICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKLSAgICA7OwotICBlc2FjCi0gIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkb2xkbGliIgotZmkKLQotX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQotCi0jIE9ubHkgcGVyZm9ybSB0aGUgY2hlY2sgZm9yIGZpbGUsIGlmIHRoZSBjaGVjayBtZXRob2QgcmVxdWlyZXMgaXQKLWNhc2UgJGRlcGxpYnNfY2hlY2tfbWV0aG9kIGluCi1maWxlX21hZ2ljKikKLSAgaWYgdGVzdCAiJGZpbGVfbWFnaWNfY21kIiA9ICckTUFHSUNfQ01EJzsgdGhlbgotICAgIEFDX1BBVEhfTUFHSUMKLSAgZmkKLSAgOzsKLWVzYWMKLQotX0xUX1JFUVVJUkVEX0RBUldJTl9DSEVDS1MKLQotQUNfUFJPVklERV9JRkVMU0UoW0FDX0xJQlRPT0xfRExPUEVOXSwgZW5hYmxlX2Rsb3Blbj15ZXMsIGVuYWJsZV9kbG9wZW49bm8pCi1BQ19QUk9WSURFX0lGRUxTRShbQUNfTElCVE9PTF9XSU4zMl9ETExdLAotZW5hYmxlX3dpbjMyX2RsbD15ZXMsIGVuYWJsZV93aW4zMl9kbGw9bm8pCi0KLUFDX0FSR19FTkFCTEUoW2xpYnRvb2wtbG9ja10sCi0gICAgW0FDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlidG9vbC1sb2NrXSwKLQlbYXZvaWQgbG9ja2luZyAobWlnaHQgYnJlYWsgcGFyYWxsZWwgYnVpbGRzKV0pXSkKLXRlc3QgIngkZW5hYmxlX2xpYnRvb2xfbG9jayIgIT0geG5vICYmIGVuYWJsZV9saWJ0b29sX2xvY2s9eWVzCi0KLUFDX0FSR19XSVRIKFtwaWNdLAotICAgIFtBQ19IRUxQX1NUUklORyhbLS13aXRoLXBpY10sCi0JW3RyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIEA8OkBkZWZhdWx0PXVzZSBib3RoQDo+QF0pXSwKLSAgICBbcGljX21vZGU9IiR3aXRodmFsIl0sCi0gICAgW3BpY19tb2RlPWRlZmF1bHRdKQotdGVzdCAteiAiJHBpY19tb2RlIiAmJiBwaWNfbW9kZT1kZWZhdWx0Ci0KLSMgVXNlIEMgZm9yIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gaW4gdGhlIGxpYnRvb2wgc2NyaXB0Ci10YWduYW1lPQotQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHCi1fTFRfQUNfVEFHQ09ORklHCi1dKSMgQUNfTElCVE9PTF9TRVRVUAotCi0KLSMgX0xUX0FDX1NZU19DT01QSUxFUgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX1NZU19DT01QSUxFUl0sCi1bQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCi0KLSMgSWYgbm8gQyBjb21waWxlciB3YXMgc3BlY2lmaWVkLCB1c2UgQ0MuCi1MVENDPSR7TFRDQy0iJENDIn0KLQotIyBJZiBubyBDIGNvbXBpbGVyIGZsYWdzIHdlcmUgc3BlY2lmaWVkLCB1c2UgQ0ZMQUdTLgotTFRDRkxBR1M9JHtMVENGTEFHUy0iJENGTEFHUyJ9Ci0KLSMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi1jb21waWxlcj0kQ0MKLV0pIyBfTFRfQUNfU1lTX0NPTVBJTEVSCi0KLQotIyBfTFRfQ0NfQkFTRU5BTUUoQ0MpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ2FsY3VsYXRlIGNjX2Jhc2VuYW1lLiAgU2tpcCBrbm93biBjb21waWxlciB3cmFwcGVycyBhbmQgY3Jvc3MtcHJlZml4LgotQUNfREVGVU4oW19MVF9DQ19CQVNFTkFNRV0sCi1bZm9yIGNjX3RlbXAgaW4gJDEiIjsgZG8KLSAgY2FzZSAkY2NfdGVtcCBpbgotICAgIGNvbXBpbGUgfCAqW1tcXC9dXWNvbXBpbGUgfCBjY2FjaGUgfCAqW1tcXC9dXWNjYWNoZSApIDs7Ci0gICAgZGlzdGNjIHwgKltbXFwvXV1kaXN0Y2MgfCBwdXJpZnkgfCAqW1tcXC9dXXB1cmlmeSApIDs7Ci0gICAgXC0qKSA7OwotICAgICopIGJyZWFrOzsKLSAgZXNhYwotZG9uZQotY2NfYmFzZW5hbWU9YCRlY2hvICJYJGNjX3RlbXAiIHwgJFhzZWQgLWUgJ3MlLiovJSUnIC1lICJzJV4kaG9zdF9hbGlhcy0lJSJgCi1dKQotCi0KLSMgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayBmb3IgY29tcGlsZXIgYm9pbGVycGxhdGUgb3V0cHV0IG9yIHdhcm5pbmdzIHdpdGgKLSMgdGhlIHNpbXBsZSBjb21waWxlciB0ZXN0IGNvZGUuCi1BQ19ERUZVTihbX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFXSwKLVtBQ19SRVFVSVJFKFtMVF9BQ19QUk9HX1NFRF0pZG5sCi1hY19vdXRmaWxlPWNvbmZ0ZXN0LiRhY19vYmpleHQKLWVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID5jb25mdGVzdC4kYWNfZXh0Ci1ldmFsICIkYWNfY29tcGlsZSIgMj4mMSA+L2Rldi9udWxsIHwgJFNFRCAnL14kL2Q7IC9eICorL2QnID5jb25mdGVzdC5lcnIKLV9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZT1gY2F0IGNvbmZ0ZXN0LmVycmAKLSRybSBjb25mdGVzdCoKLV0pIyBfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKLQotCi0jIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayBmb3IgbGlua2VyIGJvaWxlcnBsYXRlIG91dHB1dCBvciB3YXJuaW5ncyB3aXRoCi0jIHRoZSBzaW1wbGUgbGluayB0ZXN0IGNvZGUuCi1BQ19ERUZVTihbX0xUX0xJTktFUl9CT0lMRVJQTEFURV0sCi1bQUNfUkVRVUlSRShbTFRfQUNfUFJPR19TRURdKWRubAotYWNfb3V0ZmlsZT1jb25mdGVzdC4kYWNfb2JqZXh0Ci1lY2hvICIkbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlIiA+Y29uZnRlc3QuJGFjX2V4dAotZXZhbCAiJGFjX2xpbmsiIDI+JjEgPi9kZXYvbnVsbCB8ICRTRUQgJy9eJC9kOyAvXiAqKy9kJyA+Y29uZnRlc3QuZXJyCi1fbHRfbGlua2VyX2JvaWxlcnBsYXRlPWBjYXQgY29uZnRlc3QuZXJyYAotJHJtIC1yIGNvbmZ0ZXN0KgotXSkjIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLQotIyBfTFRfUkVRVUlSRURfREFSV0lOX0NIRUNLUwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayBmb3Igc29tZSB0aGluZ3Mgb24gZGFyd2luCi1BQ19ERUZVTihbX0xUX1JFUVVJUkVEX0RBUldJTl9DSEVDS1NdLFsKLSAgY2FzZSAkaG9zdF9vcyBpbgotICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi0gICAgQUNfQ0hFQ0tfVE9PTChbRFNZTVVUSUxdLCBbZHN5bXV0aWxdLCBbOl0pCi0gICAgQUNfQ0hFQ0tfVE9PTChbTk1FRElUXSwgW25tZWRpdF0sIFs6XSkKLQotICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgLXNpbmdsZV9tb2R1bGUgbGlua2VyIGZsYWddLFtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kXSwKLSAgICAgIFtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPW5vCi0gICAgICBpZiB0ZXN0IC16ICIke0xUX01VTFRJX01PRFVMRX0iOyB0aGVuCi0gICAjIEJ5IGRlZmF1bHQgd2Ugd2lsbCBhZGQgdGhlIC1zaW5nbGVfbW9kdWxlIGZsYWcuIFlvdSBjYW4gb3ZlcnJpZGUKLSAgICMgYnkgZWl0aGVyIHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIExUX01VTFRJX01PRFVMRQotICAgIyBub24tZW1wdHkgYXQgY29uZmlndXJlIHRpbWUsIG9yIGJ5IGFkZGluZyAtbXVsdGlfbW9kdWxlIHRvIHRoZQotICAgIyBsaW5rIGZsYWdzLgotICAgZWNobyAiaW50IGZvbyh2b2lkKXtyZXR1cm4gMTt9IiA+IGNvbmZ0ZXN0LmMKLSAgICRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBsaWJjb25mdGVzdC5keWxpYiBcCi0gICAgIC1keW5hbWljbGliICR7d2x9LXNpbmdsZV9tb2R1bGUgY29uZnRlc3QuYwotICAgaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYjsgdGhlbgotICAgICBsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPXllcwotICAgICBybSAtcmYgbGliY29uZnRlc3QuZHlsaWIqCi0gICBmaQotICAgcm0gY29uZnRlc3QuYwotICAgICAgZmldKQotICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCBsaW5rZXIgZmxhZ10sCi0gICAgICBbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0XSwKLSAgICAgIFtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9bm8KLSAgICAgIHNhdmVfTERGTEFHUz0kTERGTEFHUwotICAgICAgZWNobyAiX21haW4iID4gY29uZnRlc3Quc3ltCi0gICAgICBMREZMQUdTPSIkTERGTEFHUyAtV2wsLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCxjb25mdGVzdC5zeW0iCi0gICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCi0gICBbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PXllc10sCi0gICBbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PW5vXSkKLSAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0gICAgXSkKLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgcmhhcHNvZHkqIHwgZGFyd2luMS5bWzAxMjNdXSkKLSAgICAgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKLSAgICBkYXJ3aW4xLiopCi0gICAgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS1mbGF0X25hbWVzcGFjZSAke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKLSAgICBkYXJ3aW4qKQotICAgICAgIyBpZiBydW5uaW5nIG9uIDEwLjUgb3IgbGF0ZXIsIHRoZSBkZXBsb3ltZW50IHRhcmdldCBkZWZhdWx0cwotICAgICAgIyB0byB0aGUgT1MgdmVyc2lvbiwgaWYgb24geDg2LCBhbmQgMTAuNCwgdGhlIGRlcGxveW1lbnQKLSAgICAgICMgdGFyZ2V0IGRlZmF1bHRzIHRvIDEwLjQuIERvbid0IHlvdSBsb3ZlIGl0PwotICAgICAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0xMC4wfSwkaG9zdCBpbgotICAgMTAuMCwqODYqLWRhcndpbjgqfDEwLjAsKi1kYXJ3aW5bWzkxXV0qKQotICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9ZHluYW1pY19sb29rdXAnIDs7Ci0gICAxMC5bWzAxMl1dKikKLSAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LWZsYXRfbmFtZXNwYWNlICR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OwotICAgMTAuKikKLSAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJyA7OwotICAgICAgZXNhYwotICAgIDs7Ci0gIGVzYWMKLSAgICBpZiB0ZXN0ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgPSAieWVzIjsgdGhlbgotICAgICAgX2x0X2Rhcl9zaW5nbGVfbW9kPSckc2luZ2xlX21vZHVsZScKLSAgICBmaQotICAgIGlmIHRlc3QgIiRsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QiID0gInllcyI7IHRoZW4KLSAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9JyAke3dsfS1leHBvcnRlZF9zeW1ib2xzX2xpc3QsJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bScKLSAgICBlbHNlCi0gICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPSJ+JE5NRURJVCAtcyBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gXCR7bGlifSIKLSAgICBmaQotICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiOyB0aGVuCi0gICAgICBfbHRfZHN5bXV0aWw9In4kRFNZTVVUSUwgXCRsaWIgfHwgOiIKLSAgICBlbHNlCi0gICAgICBfbHRfZHN5bXV0aWw9Ci0gICAgZmkKLSAgICA7OwotICBlc2FjCi1dKQotCi0jIF9MVF9BQ19TWVNfTElCUEFUSF9BSVgKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBMaW5rcyBhIG1pbmltYWwgcHJvZ3JhbSBhbmQgY2hlY2tzIHRoZSBleGVjdXRhYmxlCi0jIGZvciB0aGUgc3lzdGVtIGRlZmF1bHQgaGFyZGNvZGVkIGxpYnJhcnkgcGF0aC4gSW4gbW9zdCBjYXNlcywKLSMgdGhpcyBpcyAvdXNyL2xpYjovbGliLCBidXQgd2hlbiB0aGUgTVBJIGNvbXBpbGVycyBhcmUgdXNlZAotIyB0aGUgbG9jYXRpb24gb2YgdGhlIGNvbW11bmljYXRpb24gYW5kIE1QSSBsaWJzIGFyZSBpbmNsdWRlZCB0b28uCi0jIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcsIHVzZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGggYWNjb3JkaW5nCi0jIHRvIHRoZSBhaXggbGQgbWFudWFsLgotQUNfREVGVU4oW19MVF9BQ19TWVNfTElCUEFUSF9BSVhdLAotW0FDX1JFUVVJUkUoW0xUX0FDX1BST0dfU0VEXSlkbmwKLUFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSxbCi1sdF9haXhfbGlicGF0aF9zZWQ9JwotICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLQkvXjAvIHsKLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0JICAgIHAKLQl9Ci0gICAgfScKLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLWZpXSxbXSkKLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotXSkjIF9MVF9BQ19TWVNfTElCUEFUSF9BSVgKLQotCi0jIF9MVF9BQ19TSEVMTF9JTklUKEFSRykKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQUNfREVGVU4oW19MVF9BQ19TSEVMTF9JTklUXSwKLVtpZmRlZihbQUNfRElWRVJTSU9OX05PVElDRV0sCi0JICAgICBbQUNfRElWRVJUX1BVU0goQUNfRElWRVJTSU9OX05PVElDRSldLAotCSBbQUNfRElWRVJUX1BVU0goTk9USUNFKV0pCi0kMQotQUNfRElWRVJUX1BPUAotXSkjIF9MVF9BQ19TSEVMTF9JTklUCi0KLQotIyBfTFRfQUNfUFJPR19FQ0hPX0JBQ0tTTEFTSAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBBZGQgc29tZSBjb2RlIHRvIHRoZSBzdGFydCBvZiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2gKLSMgd2lsbCBmaW5kIGFuIGVjaG8gY29tbWFuZCB3aGljaCBkb2Vzbid0IGludGVycHJldCBiYWNrc2xhc2hlcy4KLUFDX0RFRlVOKFtfTFRfQUNfUFJPR19FQ0hPX0JBQ0tTTEFTSF0sCi1bX0xUX0FDX1NIRUxMX0lOSVQoWwotIyBDaGVjayB0aGF0IHdlIGFyZSBydW5uaW5nIHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgotU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KLQotY2FzZSBYJEVDSE8gaW4KLVgqLS1mYWxsYmFjay1lY2hvKQotICAjIFJlbW92ZSBvbmUgbGV2ZWwgb2YgcXVvdGF0aW9uICh3aGljaCB3YXMgcmVxdWlyZWQgZm9yIE1ha2UpLgotICBFQ0hPPWBlY2hvICIkRUNITyIgfCBzZWQgJ3MsXFxcXFxbJF1cXFskXTAsJ1skXTAnLCdgCi0gIDs7Ci1lc2FjCi0KLWVjaG89JHtFQ0hPLWVjaG99Ci1pZiB0ZXN0ICJYWyRdMSIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KLSAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gIHNoaWZ0Ci1lbGlmIHRlc3QgIlhbJF0xIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgotICA6Ci1lbGlmIHRlc3QgIlhgKCRlY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JyA7IHRoZW4KLSAgIyBZaXBwZWUsICRlY2hvIHdvcmtzIQotICA6Ci1lbHNlCi0gICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KLSAgZXhlYyAkU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9Ci1maQotCi1pZiB0ZXN0ICJYWyRdMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCi0gIHNoaWZ0Ci0gIGNhdCA8PEVPRgotWyRdKgotRU9GCi0gIGV4aXQgMAotZmkKLQotIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKLSMgaWYgQ0RQQVRIIGlzIHNldC4KLSh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKLQotaWYgdGVzdCAteiAiJEVDSE8iOyB0aGVuCi1pZiB0ZXN0ICJYJHtlY2hvX3Rlc3Rfc3RyaW5nK3NldH0iICE9IFhzZXQ7IHRoZW4KLSMgZmluZCBhIHN0cmluZyBhcyBsYXJnZSBhcyBwb3NzaWJsZSwgYXMgbG9uZyBhcyB0aGUgc2hlbGwgY2FuIGNvcGUgd2l0aCBpdAotICBmb3IgY21kIGluICdzZWQgNTBxICJbJF0wIicgJ3NlZCAyMHEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMnEgIlskXTAiJyAnZWNobyB0ZXN0JzsgZG8KLSAgICAjIGV4cGVjdGVkIHNpemVzOiBsZXNzIHRoYW4gMmtCLCAxa0IsIDUxMiBieXRlcywgMTYgYnl0ZXMsIC4uLgotICAgIGlmIChlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRjbWRgKSAyPi9kZXYvbnVsbCAmJgotICAgICAgIGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJGNtZGAgJiYKLSAgICAgICAodGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbAotICAgIHRoZW4KLSAgICAgIGJyZWFrCi0gICAgZmkKLSAgZG9uZQotZmkKLQotaWYgdGVzdCAiWGAoJGVjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0gICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgOgotZWxzZQotICAjIFRoZSBTb2xhcmlzLCBBSVgsIGFuZCBEaWdpdGFsIFVuaXggZGVmYXVsdCBlY2hvIHByb2dyYW1zIHVucXVvdGUKLSAgIyBiYWNrc2xhc2hlcy4gIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBxdW90ZSBiYWNrc2xhc2hlcyB1c2luZwotICAjICAgZWNobyAiJHNvbWV0aGluZyIgfCBzZWQgJ3MvXFwvXFxcXC9nJwotICAjCi0gICMgU28sIGZpcnN0IHdlIGxvb2sgZm9yIGEgd29ya2luZyBlY2hvIGluIHRoZSB1c2VyJ3MgUEFUSC4KLQotICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKLSAgZm9yIGRpciBpbiAkUEFUSCAvdXNyL3VjYjsgZG8KLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICBpZiAodGVzdCAtZiAkZGlyL2VjaG8gfHwgdGVzdCAtZiAkZGlyL2VjaG8kYWNfZXhlZXh0KSAmJgotICAgICAgIHRlc3QgIlhgKCRkaXIvZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGRpci9lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgICAgZWNobz0iJGRpci9lY2hvIgotICAgICAgYnJlYWsKLSAgICBmaQotICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgotCi0gIGlmIHRlc3QgIlgkZWNobyIgPSBYZWNobzsgdGhlbgotICAgICMgV2UgZGlkbid0IGZpbmQgYSBiZXR0ZXIgZWNobywgc28gbG9vayBmb3IgYWx0ZXJuYXRpdmVzLgotICAgIGlmIHRlc3QgIlhgKHByaW50IC1yICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YChwcmludCAtciAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICAgICMgVGhpcyBzaGVsbCBoYXMgYSBidWlsdGluIHByaW50IC1yIHRoYXQgZG9lcyB0aGUgdHJpY2suCi0gICAgICBlY2hvPSdwcmludCAtcicKLSAgICBlbGlmICh0ZXN0IC1mIC9iaW4va3NoIHx8IHRlc3QgLWYgL2Jpbi9rc2gkYWNfZXhlZXh0KSAmJgotCSB0ZXN0ICJYJENPTkZJR19TSEVMTCIgIT0gWC9iaW4va3NoOyB0aGVuCi0gICAgICAjIElmIHdlIGhhdmUga3NoLCB0cnkgcnVubmluZyBjb25maWd1cmUgYWdhaW4gd2l0aCBpdC4KLSAgICAgIE9SSUdJTkFMX0NPTkZJR19TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQotICAgICAgZXhwb3J0IE9SSUdJTkFMX0NPTkZJR19TSEVMTAotICAgICAgQ09ORklHX1NIRUxMPS9iaW4va3NoCi0gICAgICBleHBvcnQgQ09ORklHX1NIRUxMCi0gICAgICBleGVjICRDT05GSUdfU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9Ci0gICAgZWxzZQotICAgICAgIyBUcnkgdXNpbmcgcHJpbnRmLgotICAgICAgZWNobz0ncHJpbnRmICVzXG4nCi0gICAgICBpZiB0ZXN0ICJYYCgkZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLQkgZWNob190ZXN0aW5nX3N0cmluZz1gKCRlY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkjIENvb2wsIHByaW50ZiB3b3JrcwotCToKLSAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKLQkgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKLQkgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCUNPTkZJR19TSEVMTD0kT1JJR0lOQUxfQ09ORklHX1NIRUxMCi0JZXhwb3J0IENPTkZJR19TSEVMTAotCVNIRUxMPSIkQ09ORklHX1NIRUxMIgotCWV4cG9ydCBTSEVMTAotCWVjaG89IiRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCi0JICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCi0JICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLQkgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQllY2hvPSIkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIgotICAgICAgZWxzZQotCSMgbWF5YmUgd2l0aCBhIHNtYWxsZXIgc3RyaW5nLi4uCi0JcHJldj06Ci0KLQlmb3IgY21kIGluICdlY2hvIHRlc3QnICdzZWQgMnEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCA1MHEgIlskXTAiJzsgZG8KLQkgIGlmICh0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlhgZXZhbCAkY21kYCIpIDI+L2Rldi9udWxsCi0JICB0aGVuCi0JICAgIGJyZWFrCi0JICBmaQotCSAgcHJldj0iJGNtZCIKLQlkb25lCi0KLQlpZiB0ZXN0ICIkcHJldiIgIT0gJ3NlZCA1MHEgIlskXTAiJzsgdGhlbgotCSAgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkcHJldmAKLQkgIGV4cG9ydCBlY2hvX3Rlc3Rfc3RyaW5nCi0JICBleGVjICR7T1JJR0lOQUxfQ09ORklHX1NIRUxMLSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9fSAiWyRdMCIgJHsxKyJbJF1AIn0KLQllbHNlCi0JICAjIE9vcHMuICBXZSBsb3N0IGNvbXBsZXRlbHksIHNvIGp1c3Qgc3RpY2sgd2l0aCBlY2hvLgotCSAgZWNobz1lY2hvCi0JZmkKLSAgICAgIGZpCi0gICAgZmkKLSAgZmkKLWZpCi1maQotCi0jIENvcHkgZWNobyBhbmQgcXVvdGUgdGhlIGNvcHkgc3VpdGFibHkgZm9yIHBhc3NpbmcgdG8gbGlidG9vbCBmcm9tCi0jIHRoZSBNYWtlZmlsZSwgaW5zdGVhZCBvZiBxdW90aW5nIHRoZSBvcmlnaW5hbCwgd2hpY2ggaXMgdXNlZCBsYXRlci4KLUVDSE89JGVjaG8KLWlmIHRlc3QgIlgkRUNITyIgPSAiWCRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCi0gICBFQ0hPPSIkQ09ORklHX1NIRUxMIFxcXCRcWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi1maQotCi1BQ19TVUJTVChFQ0hPKQotXSldKSMgX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0gKLQotCi0jIF9MVF9BQ19MT0NLCi0jIC0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX0xPQ0tdLAotW0FDX0FSR19FTkFCTEUoW2xpYnRvb2wtbG9ja10sCi0gICAgW0FDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlidG9vbC1sb2NrXSwKLQlbYXZvaWQgbG9ja2luZyAobWlnaHQgYnJlYWsgcGFyYWxsZWwgYnVpbGRzKV0pXSkKLXRlc3QgIngkZW5hYmxlX2xpYnRvb2xfbG9jayIgIT0geG5vICYmIGVuYWJsZV9saWJ0b29sX2xvY2s9eWVzCi0KLSMgU29tZSBmbGFncyBuZWVkIHRvIGJlIHByb3BhZ2F0ZWQgdG8gdGhlIGNvbXBpbGVyIG9yIGxpbmtlciBmb3IgZ29vZAotIyBsaWJ0b29sIHN1cHBvcnQuCi1jYXNlICRob3N0IGluCi1pYTY0LSotaHB1eCopCi0gICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCi0gICAgKkVMRi0zMiopCi0gICAgICBIUFVYX0lBNjRfTU9ERT0iMzIiCi0gICAgICA7OwotICAgICpFTEYtNjQqKQotICAgICAgSFBVWF9JQTY0X01PREU9IjY0IgotICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi0gIHJtIC1yZiBjb25mdGVzdCoKLSAgOzsKLSotKi1pcml4NiopCi0gICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnWyNdbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAotICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotICAgaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgotICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KLSAgICAqMzItYml0KikKLSAgICAgIExEPSIke0xELWxkfSAtbWVsZjMyYnNtaXAiCi0gICAgICA7OwotICAgICpOMzIqKQotICAgICAgTEQ9IiR7TEQtbGR9IC1tZWxmMzJibWlwbjMyIgotICAgICAgOzsKLSAgICAqNjQtYml0KikKLSAgICAgIExEPSIke0xELWxkfSAtbWVsZjY0Ym1pcCIKLSAgICAgIDs7Ci0gICAgZXNhYwotICAgZWxzZQotICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KLSAgICAqMzItYml0KikKLSAgICAgIExEPSIke0xELWxkfSAtMzIiCi0gICAgICA7OwotICAgICpOMzIqKQotICAgICAgTEQ9IiR7TEQtbGR9IC1uMzIiCi0gICAgICA7OwotICAgICo2NC1iaXQqKQotICAgICAgTEQ9IiR7TEQtbGR9IC02NCIKLSAgICAgIDs7Ci0gICAgZXNhYwotICAgZmkKLSAgZmkKLSAgcm0gLXJmIGNvbmZ0ZXN0KgotICA7OwotCi14ODZfNjQtKmtmcmVlYnNkKi1nbnV8eDg2XzY0LSpsaW51eCp8cHBjKi0qbGludXgqfHBvd2VycGMqLSpsaW51eCp8IFwKLXMzOTAqLSpsaW51eCp8c3BhcmMqLSpsaW51eCopCi0gICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0Lm9gIGluCi0gICAgKjMyLWJpdCopCi0gICAgICBjYXNlICRob3N0IGluCi0gICAgICAgIHg4Nl82NC0qa2ZyZWVic2QqLWdudSkKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX2kzODZfZmJzZCIKLSAgICAgICAgICA7OwotICAgICAgICB4ODZfNjQtKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX2kzODYiCi0gICAgICAgICAgOzsKLSAgICAgICAgcHBjNjQtKmxpbnV4Knxwb3dlcnBjNjQtKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmMzJwcGNsaW51eCIKLSAgICAgICAgICA7OwotICAgICAgICBzMzkweC0qbGludXgqKQotICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGZfczM5MCIKLSAgICAgICAgICA7OwotICAgICAgICBzcGFyYzY0LSpsaW51eCopCi0gICAgICAgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZjMyX3NwYXJjIgotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgICo2NC1iaXQqKQotICAgICAgY2FzZSAkaG9zdCBpbgotICAgICAgICB4ODZfNjQtKmtmcmVlYnNkKi1nbnUpCi0gICAgICAgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl94ODZfNjRfZmJzZCIKLSAgICAgICAgICA7OwotICAgICAgICB4ODZfNjQtKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKLSAgICAgICAgICA7OwotICAgICAgICBwcGMqLSpsaW51eCp8cG93ZXJwYyotKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRwcGMiCi0gICAgICAgICAgOzsKLSAgICAgICAgczM5MCotKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfczM5MCIKLSAgICAgICAgICA7OwotICAgICAgICBzcGFyYyotKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotICBybSAtcmYgY29uZnRlc3QqCi0gIDs7Ci0KLSotKi1zY28zLjJ2NSopCi0gICMgT24gU0NPIE9wZW5TZXJ2ZXIgNSwgd2UgbmVlZCAtYmVsZiB0byBnZXQgZnVsbC1mZWF0dXJlZCBiaW5hcmllcy4KLSAgU0FWRV9DRkxBR1M9IiRDRkxBR1MiCi0gIENGTEFHUz0iJENGTEFHUyAtYmVsZiIKLSAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGZdLCBsdF9jdl9jY19uZWVkc19iZWxmLAotICAgIFtBQ19MQU5HX1BVU0goQykKLSAgICAgQUNfVFJZX0xJTksoW10sW10sW2x0X2N2X2NjX25lZWRzX2JlbGY9eWVzXSxbbHRfY3ZfY2NfbmVlZHNfYmVsZj1ub10pCi0gICAgIEFDX0xBTkdfUE9QXSkKLSAgaWYgdGVzdCB4IiRsdF9jdl9jY19uZWVkc19iZWxmIiAhPSB4InllcyI7IHRoZW4KLSAgICAjIHRoaXMgaXMgcHJvYmFibHkgZ2NjIDIuOC4wLCBlZ2NzIDEuMCBvciBuZXdlcjsgbm8gbmVlZCBmb3IgLWJlbGYKLSAgICBDRkxBR1M9IiRTQVZFX0NGTEFHUyIKLSAgZmkKLSAgOzsKLXNwYXJjKi0qc29sYXJpcyopCi0gICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0Lm9gIGluCi0gICAgKjY0LWJpdCopCi0gICAgICBjYXNlICRsdF9jdl9wcm9nX2dudV9sZCBpbgotICAgICAgeWVzKikgTEQ9IiR7TEQtbGR9IC1tIGVsZjY0X3NwYXJjIiA7OwotICAgICAgKikKLSAgICAgICAgaWYgJHtMRC1sZH0gLTY0IC1yIC1vIGNvbmZ0ZXN0Mi5vIGNvbmZ0ZXN0Lm8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICBMRD0iJHtMRC1sZH0gLTY0IgotCWZpCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotICBybSAtcmYgY29uZnRlc3QqCi0gIDs7Ci0KLUFDX1BST1ZJREVfSUZFTFNFKFtBQ19MSUJUT09MX1dJTjMyX0RMTF0sCi1bKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqKQotICBBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQotICBBQ19DSEVDS19UT09MKEFTLCBhcywgZmFsc2UpCi0gIEFDX0NIRUNLX1RPT0woT0JKRFVNUCwgb2JqZHVtcCwgZmFsc2UpCi0gIDs7Ci0gIF0pCi1lc2FjCi0KLW5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotCi1dKSMgX0xUX0FDX0xPQ0sKLQotCi0jIEFDX0xJQlRPT0xfQ09NUElMRVJfT1BUSU9OKE1FU1NBR0UsIFZBUklBQkxFLU5BTUUsIEZMQUdTLAotIwkJW09VVFBVVC1GSUxFXSwgW0FDVElPTi1TVUNDRVNTXSwgW0FDVElPTi1GQUlMVVJFXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBjb21waWxlciBvcHRpb24gd29ya3MKLUFDX0RFRlVOKFtBQ19MSUJUT09MX0NPTVBJTEVSX09QVElPTl0sCi1bQUNfUkVRVUlSRShbTFRfQUNfUFJPR19TRURdKQotQUNfQ0FDSEVfQ0hFQ0soWyQxXSwgWyQyXSwKLSAgWyQyPW5vCi0gIGlmZWxzZShbJDRdLCAsIFthY19vdXRmaWxlPWNvbmZ0ZXN0LiRhY19vYmpleHRdLCBbYWNfb3V0ZmlsZT0kNF0pCi0gICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgIGx0X2NvbXBpbGVyX2ZsYWc9IiQzIgotICAgIyBJbnNlcnQgdGhlIG9wdGlvbiBlaXRoZXIgKDEpIGFmdGVyIHRoZSBsYXN0ICpGTEFHUyB2YXJpYWJsZSwgb3IKLSAgICMgKDIpIGJlZm9yZSBhIHdvcmQgY29udGFpbmluZyAiY29uZnRlc3QuIiwgb3IgKDMpIGF0IHRoZSBlbmQuCi0gICAjIE5vdGUgdGhhdCAkYWNfY29tcGlsZSBpdHNlbGYgZG9lcyBub3QgY29udGFpbiBiYWNrc2xhc2hlcyBhbmQgYmVnaW5zCi0gICAjIHdpdGggYSBkb2xsYXIgc2lnbiAobm90IGEgaHlwaGVuKSwgc28gdGhlIGVjaG8gc2hvdWxkIHdvcmsgY29ycmVjdGx5LgotICAgIyBUaGUgb3B0aW9uIGlzIHJlZmVyZW5jZWQgdmlhIGEgdmFyaWFibGUgdG8gYXZvaWQgY29uZnVzaW5nIHNlZC4KLSAgIGx0X2NvbXBpbGU9YGVjaG8gIiRhY19jb21waWxlIiB8ICRTRUQgXAotICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAotICAgLWUgJ3M6IFtbXiBdXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCi0gICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKLSAgIChldmFsICIkbHRfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCi0gICBhY19zdGF0dXM9JD8KLSAgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyAiJGFjX291dGZpbGUiOyB0aGVuCi0gICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCi0gICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncyBvdGhlciB0aGFuIHRoZSB1c3VhbCBvdXRwdXQuCi0gICAgICRlY2hvICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID5jb25mdGVzdC5leHAKLSAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCi0gICAgIGlmIHRlc3QgISAtcyBjb25mdGVzdC5lcjIgfHwgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KLSAgICAgICAkMj15ZXMKLSAgICAgZmkKLSAgIGZpCi0gICAkcm0gY29uZnRlc3QqCi1dKQotCi1pZiB0ZXN0IHgiWyRdJDIiID0geHllczsgdGhlbgotICAgIGlmZWxzZShbJDVdLCAsIDosIFskNV0pCi1lbHNlCi0gICAgaWZlbHNlKFskNl0sICwgOiwgWyQ2XSkKLWZpCi1dKSMgQUNfTElCVE9PTF9DT01QSUxFUl9PUFRJT04KLQotCi0jIEFDX0xJQlRPT0xfTElOS0VSX09QVElPTihNRVNTQUdFLCBWQVJJQUJMRS1OQU1FLCBGTEFHUywKLSMgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQ1RJT04tU1VDQ0VTU10sIFtBQ1RJT04tRkFJTFVSRV0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBjb21waWxlciBvcHRpb24gd29ya3MKLUFDX0RFRlVOKFtBQ19MSUJUT09MX0xJTktFUl9PUFRJT05dLAotW0FDX1JFUVVJUkUoW0xUX0FDX1BST0dfU0VEXSlkbmwKLUFDX0NBQ0hFX0NIRUNLKFskMV0sIFskMl0sCi0gIFskMj1ubwotICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSAgIExERkxBR1M9IiRMREZMQUdTICQzIgotICAgZWNobyAiJGx0X3NpbXBsZV9saW5rX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0Ci0gICBpZiAoZXZhbCAkYWNfbGluayAyPmNvbmZ0ZXN0LmVycikgJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQ7IHRoZW4KLSAgICAgIyBUaGUgbGlua2VyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCi0gICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncwotICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgICAgICMgQXBwZW5kIGFueSBlcnJvcnMgdG8gdGhlIGNvbmZpZy5sb2cuCi0gICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgICRlY2hvICJYJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAotICAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgotICAgICAgIGlmIGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAkMj15ZXMKLSAgICAgICBmaQotICAgICBlbHNlCi0gICAgICAgJDI9eWVzCi0gICAgIGZpCi0gICBmaQotICAgJHJtIC1yIGNvbmZ0ZXN0KgotICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLV0pCi0KLWlmIHRlc3QgeCJbJF0kMiIgPSB4eWVzOyB0aGVuCi0gICAgaWZlbHNlKFskNF0sICwgOiwgWyQ0XSkKLWVsc2UKLSAgICBpZmVsc2UoWyQ1XSwgLCA6LCBbJDVdKQotZmkKLV0pIyBBQ19MSUJUT09MX0xJTktFUl9PUFRJT04KLQotCi0jIEFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfTElCVE9PTF9TWVNfTUFYX0NNRF9MRU5dLAotWyMgZmluZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cwotQUNfTVNHX0NIRUNLSU5HKFt0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50c10pCi1BQ19DQUNIRV9WQUwoW2x0X2N2X3N5c19tYXhfY21kX2xlbl0sIFtkbmwKLSAgaT0wCi0gIHRlc3RzdHJpbmc9IkFCQ0QiCi0KLSAgY2FzZSAkYnVpbGRfb3MgaW4KLSAgbXNkb3NkamdwcCopCi0gICAgIyBPbiBESkdQUCwgdGhpcyB0ZXN0IGNhbiBibG93IHVwIHByZXR0eSBiYWRseSBkdWUgdG8gcHJvYmxlbXMgaW4gbGliYwotICAgICMgKGFueSBzaW5nbGUgYXJndW1lbnQgZXhjZWVkaW5nIDIwMDAgYnl0ZXMgY2F1c2VzIGEgYnVmZmVyIG92ZXJydW4KLSAgICAjIGR1cmluZyBnbG9iIGV4cGFuc2lvbikuICBFdmVuIGlmIGl0IHdlcmUgZml4ZWQsIHRoZSByZXN1bHQgb2YgdGhpcwotICAgICMgY2hlY2sgd291bGQgYmUgbGFyZ2VyIHRoYW4gaXQgc2hvdWxkIGJlLgotICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0xMjI4ODsgICAgIyAxMksgaXMgYWJvdXQgcmlnaHQKLSAgICA7OwotCi0gIGdudSopCi0gICAgIyBVbmRlciBHTlUgSHVyZCwgdGhpcyB0ZXN0IGlzIG5vdCByZXF1aXJlZCBiZWNhdXNlIHRoZXJlIGlzCi0gICAgIyBubyBsaW1pdCB0byB0aGUgbGVuZ3RoIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0gICAgIyBMaWJ0b29sIHdpbGwgaW50ZXJwcmV0IC0xIGFzIG5vIGxpbWl0IHdoYXRzb2V2ZXIKLSAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49LTE7Ci0gICAgOzsKLQotICBjeWd3aW4qIHwgbWluZ3cqKQotICAgICMgT24gV2luOXgvTUUsIHRoaXMgdGVzdCBibG93cyB1cCAtLSBpdCBzdWNjZWVkcywgYnV0IHRha2VzCi0gICAgIyBhYm91dCA1IG1pbnV0ZXMgYXMgdGhlIHRlc3RzdHJpbmcgZ3Jvd3MgZXhwb25lbnRpYWxseS4KLSAgICAjIFdvcnNlLCBzaW5jZSA5eC9NRSBhcmUgbm90IHByZS1lbXB0aXZlbHkgbXVsdGl0YXNraW5nLAotICAgICMgeW91IGVuZCB1cCB3aXRoIGEgImZyb3plbiIgY29tcHV0ZXIsIGV2ZW4gdGhvdWdoIHdpdGggcGF0aWVuY2UKLSAgICAjIHRoZSB0ZXN0IGV2ZW50dWFsbHkgc3VjY2VlZHMgKHdpdGggYSBtYXggbGluZSBsZW5ndGggb2YgMjU2aykuCi0gICAgIyBJbnN0ZWFkLCBsZXQncyBqdXN0IHB1bnQ6IHVzZSB0aGUgbWluaW11bSBsaW5lbGVuZ3RoIHJlcG9ydGVkIGJ5Ci0gICAgIyBhbGwgb2YgdGhlIHN1cHBvcnRlZCBwbGF0Zm9ybXM6IDgxOTIgKG9uIE5ULzJLL1hQKS4KLSAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKLSAgICA7OwotCi0gIGFtaWdhb3MqKQotICAgICMgT24gQW1pZ2FPUyB3aXRoIHBka3NoLCB0aGlzIHRlc3QgdGFrZXMgaG91cnMsIGxpdGVyYWxseS4KLSAgICAjIFNvIHdlIGp1c3QgcHVudCBhbmQgdXNlIGEgbWluaW11bSBsaW5lIGxlbmd0aCBvZiA4MTkyLgotICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyOwotICAgIDs7Ci0KLSAgbmV0YnNkKiB8IGZyZWVic2QqIHwgb3BlbmJzZCogfCBkYXJ3aW4qIHwgZHJhZ29uZmx5KikKLSAgICAjIFRoaXMgaGFzIGJlZW4gYXJvdW5kIHNpbmNlIDM4NkJTRCwgYXQgbGVhc3QuICBMaWtlbHkgZnVydGhlci4KLSAgICBpZiB0ZXN0IC14IC9zYmluL3N5c2N0bDsgdGhlbgotICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWAvc2Jpbi9zeXNjdGwgLW4ga2Vybi5hcmdtYXhgCi0gICAgZWxpZiB0ZXN0IC14IC91c3Ivc2Jpbi9zeXNjdGw7IHRoZW4KLSAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gL3Vzci9zYmluL3N5c2N0bCAtbiBrZXJuLmFyZ21heGAKLSAgICBlbHNlCi0gICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49NjU1MzYJIyB1c2FibGUgZGVmYXVsdCBmb3IgYWxsIEJTRHMKLSAgICBmaQotICAgICMgQW5kIGFkZCBhIHNhZmV0eSB6b25lCi0gICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXC8gNGAKLSAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcKiAzYAotICAgIDs7Ci0KLSAgaW50ZXJpeCopCi0gICAgIyBXZSBrbm93IHRoZSB2YWx1ZSAyNjIxNDQgYW5kIGhhcmRjb2RlIGl0IHdpdGggYSBzYWZldHkgem9uZSAobGlrZSBCU0QpCi0gICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTE5NjYwOAotICAgIDs7Ci0KLSAgb3NmKikKLSAgICAjIERyLiBIYW5zIEVra2VoYXJkIFBsZXNzZXIgcmVwb3J0cyBzZWVpbmcgYSBrZXJuZWwgcGFuaWMgcnVubmluZyBjb25maWd1cmUKLSAgICAjIGR1ZSB0byB0aGlzIHRlc3Qgd2hlbiBleGVjX2Rpc2FibGVfYXJnX2xpbWl0IGlzIDEgb24gVHJ1NjQuIEl0IGlzIG5vdAotICAgICMgbmljZSB0byBjYXVzZSBrZXJuZWwgcGFuaWNzIHNvIGxldHMgYXZvaWQgdGhlIGxvb3AgYmVsb3cuCi0gICAgIyBGaXJzdCBzZXQgYSByZWFzb25hYmxlIGRlZmF1bHQuCi0gICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTE2Mzg0Ci0gICAgIwotICAgIGlmIHRlc3QgLXggL3NiaW4vc3lzY29uZmlnOyB0aGVuCi0gICAgICBjYXNlIGAvc2Jpbi9zeXNjb25maWcgLXEgcHJvYyBleGVjX2Rpc2FibGVfYXJnX2xpbWl0YCBpbgotICAgICAgICAqMSopIGx0X2N2X3N5c19tYXhfY21kX2xlbj0tMSA7OwotICAgICAgZXNhYwotICAgIGZpCi0gICAgOzsKLSAgc2NvMy4ydjUqKQotICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0xMDI0MDAKLSAgICA7OwotICBzeXN2NSogfCBzY281djYqIHwgc3lzdjQuMnV3MiopCi0gICAga2FyZ21heD1gZ3JlcCBBUkdfTUFYIC9ldGMvY29uZi9jZi5kL3N0dW5lIDI+L2Rldi9udWxsYAotICAgIGlmIHRlc3QgLW4gIiRrYXJnbWF4IjsgdGhlbgotICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBlY2hvICRrYXJnbWF4IHwgc2VkICdzLy4qW1sgCV1dLy8nYAotICAgIGVsc2UKLSAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0zMjc2OAotICAgIGZpCi0gICAgOzsKLSAgKikKLSAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YChnZXRjb25mIEFSR19NQVgpIDI+IC9kZXYvbnVsbGAKLSAgICBpZiB0ZXN0IC1uICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIjsgdGhlbgotICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXC8gNGAKLSAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gZXhwciAkbHRfY3Zfc3lzX21heF9jbWRfbGVuIFwqIDNgCi0gICAgZWxzZQotICAgICAgU0hFTEw9JHtTSEVMTC0ke0NPTkZJR19TSEVMTC0vYmluL3NofX0KLSAgICAgIHdoaWxlICh0ZXN0ICJYImAkU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8gIlgkdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKLQkgICAgICAgPSAiWFgkdGVzdHN0cmluZyIpID4vZGV2L251bGwgMj4mMSAmJgotCSAgICAgIG5ld19yZXN1bHQ9YGV4cHIgIlgkdGVzdHN0cmluZyIgOiAiLioiIDI+JjFgICYmCi0JICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPSRuZXdfcmVzdWx0ICYmCi0JICAgICAgdGVzdCAkaSAhPSAxNyAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCi0gICAgICBkbwotICAgICAgICBpPWBleHByICRpICsgMWAKLSAgICAgICAgdGVzdHN0cmluZz0kdGVzdHN0cmluZyR0ZXN0c3RyaW5nCi0gICAgICBkb25lCi0gICAgICB0ZXN0c3RyaW5nPQotICAgICAgIyBBZGQgYSBzaWduaWZpY2FudCBzYWZldHkgZmFjdG9yIGJlY2F1c2UgQysrIGNvbXBpbGVycyBjYW4gdGFjayBvbiBtYXNzaXZlCi0gICAgICAjIGFtb3VudHMgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgYmVmb3JlIHBhc3NpbmcgdGhlbSB0byB0aGUgbGlua2VyLgotICAgICAgIyBJdCBhcHBlYXJzIGFzIHRob3VnaCAxLzIgaXMgYSB1c2FibGUgdmFsdWUuCi0gICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcLyAyYAotICAgIGZpCi0gICAgOzsKLSAgZXNhYwotXSkKLWlmIHRlc3QgLW4gJGx0X2N2X3N5c19tYXhfY21kX2xlbiA7IHRoZW4KLSAgQUNfTVNHX1JFU1VMVCgkbHRfY3Zfc3lzX21heF9jbWRfbGVuKQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vbmUpCi1maQotXSkjIEFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOCi0KLQotIyBfTFRfQUNfQ0hFQ0tfRExGQ04KLSMgLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX0NIRUNLX0RMRkNOXSwKLVtBQ19DSEVDS19IRUFERVJTKGRsZmNuLmgpZG5sCi1dKSMgX0xUX0FDX0NIRUNLX0RMRkNOCi0KLQotIyBfTFRfQUNfVFJZX0RMT1BFTl9TRUxGIChBQ1RJT04tSUYtVFJVRSwgQUNUSU9OLUlGLVRSVUUtVy1VU0NPUkUsCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNUSU9OLUlGLUZBTFNFLCBBQ1RJT04tSUYtQ1JPU1MtQ09NUElMSU5HKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtfTFRfQUNfVFJZX0RMT1BFTl9TRUxGXSwKLVtBQ19SRVFVSVJFKFtfTFRfQUNfQ0hFQ0tfRExGQ05dKWRubAotaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgotICBbJDRdCi1lbHNlCi0gIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSNpZiBIQVZFX0RMRkNOX0gKLSNpbmNsdWRlIDxkbGZjbi5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaWZkZWYgUlRMRF9HTE9CQUwKLSMgIGRlZmluZSBMVF9ETEdMT0JBTAkJUlRMRF9HTE9CQUwKLSNlbHNlCi0jICBpZmRlZiBETF9HTE9CQUwKLSMgICAgZGVmaW5lIExUX0RMR0xPQkFMCQlETF9HTE9CQUwKLSMgIGVsc2UKLSMgICAgZGVmaW5lIExUX0RMR0xPQkFMCQkwCi0jICBlbmRpZgotI2VuZGlmCi0KLS8qIFdlIG1heSBoYXZlIHRvIGRlZmluZSBMVF9ETExBWllfT1JfTk9XIGluIHRoZSBjb21tYW5kIGxpbmUgaWYgd2UKLSAgIGZpbmQgb3V0IGl0IGRvZXMgbm90IHdvcmsgaW4gc29tZSBwbGF0Zm9ybS4gKi8KLSNpZm5kZWYgTFRfRExMQVpZX09SX05PVwotIyAgaWZkZWYgUlRMRF9MQVpZCi0jICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCQlSVExEX0xBWlkKLSMgIGVsc2UKLSMgICAgaWZkZWYgRExfTEFaWQotIyAgICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCQlETF9MQVpZCi0jICAgIGVsc2UKLSMgICAgICBpZmRlZiBSVExEX05PVwotIyAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJUlRMRF9OT1cKLSMgICAgICBlbHNlCi0jICAgICAgICBpZmRlZiBETF9OT1cKLSMgICAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJRExfTk9XCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCTAKLSMgICAgICAgIGVuZGlmCi0jICAgICAgZW5kaWYKLSMgICAgZW5kaWYKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHZvaWQgZXhpdCAoaW50KTsKLSNlbmRpZgotCi12b2lkIGZub3JkKCkgeyBpbnQgaT00Mjt9Ci1pbnQgbWFpbiAoKQotewotICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLSAgaW50IHN0YXR1cyA9ICRsdF9kbHVua25vd247Ci0KLSAgaWYgKHNlbGYpCi0gICAgewotICAgICAgaWYgKGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxub191c2NvcmU7Ci0gICAgICBlbHNlIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOwotICAgICAgLyogZGxjbG9zZSAoc2VsZik7ICovCi0gICAgfQotICBlbHNlCi0gICAgcHV0cyAoZGxlcnJvciAoKSk7Ci0KLSAgICBleGl0IChzdGF0dXMpOwotfV0KLUVPRgotICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9IDI+L2Rldi9udWxsOyB0aGVuCi0gICAgKC4vY29uZnRlc3Q7IGV4aXQ7ICkgPiZBU19NRVNTQUdFX0xPR19GRCAyPi9kZXYvbnVsbAotICAgIGx0X3N0YXR1cz0kPwotICAgIGNhc2UgeCRsdF9zdGF0dXMgaW4KLSAgICAgIHgkbHRfZGxub191c2NvcmUpICQxIDs7Ci0gICAgICB4JGx0X2RsbmVlZF91c2NvcmUpICQyIDs7Ci0gICAgICB4JGx0X2RsdW5rbm93bnx4KikgJDMgOzsKLSAgICBlc2FjCi0gIGVsc2UgOgotICAgICMgY29tcGlsYXRpb24gZmFpbGVkCi0gICAgJDMKLSAgZmkKLWZpCi1ybSAtZnIgY29uZnRlc3QqCi1dKSMgX0xUX0FDX1RSWV9ETE9QRU5fU0VMRgotCi0KLSMgQUNfTElCVE9PTF9ETE9QRU5fU0VMRgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfTElCVE9PTF9ETE9QRU5fU0VMRl0sCi1bQUNfUkVRVUlSRShbX0xUX0FDX0NIRUNLX0RMRkNOXSlkbmwKLWlmIHRlc3QgIngkZW5hYmxlX2Rsb3BlbiIgIT0geHllczsgdGhlbgotICBlbmFibGVfZGxvcGVuPXVua25vd24KLSAgZW5hYmxlX2Rsb3Blbl9zZWxmPXVua25vd24KLSAgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz11bmtub3duCi1lbHNlCi0gIGx0X2N2X2Rsb3Blbj1ubwotICBsdF9jdl9kbG9wZW5fbGlicz0KLQotICBjYXNlICRob3N0X29zIGluCi0gIGJlb3MqKQotICAgIGx0X2N2X2Rsb3Blbj0ibG9hZF9hZGRfb24iCi0gICAgbHRfY3ZfZGxvcGVuX2xpYnM9Ci0gICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCi0gICAgOzsKLQotICBtaW5ndyogfCBwdzMyKikKLSAgICBsdF9jdl9kbG9wZW49IkxvYWRMaWJyYXJ5IgotICAgIGx0X2N2X2Rsb3Blbl9saWJzPQotICAgOzsKLQotICBjeWd3aW4qKQotICAgIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIgotICAgIGx0X2N2X2Rsb3Blbl9saWJzPQotICAgOzsKLQotICBkYXJ3aW4qKQotICAjIGlmIGxpYmRsIGlzIGluc3RhbGxlZCB3ZSBuZWVkIHRvIGxpbmsgYWdhaW5zdCBpdAotICAgIEFDX0NIRUNLX0xJQihbZGxdLCBbZGxvcGVuXSwKLQkJW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCJdLFsKLSAgICBsdF9jdl9kbG9wZW49ImR5bGQiCi0gICAgbHRfY3ZfZGxvcGVuX2xpYnM9Ci0gICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCi0gICAgXSkKLSAgIDs7Ci0KLSAgKikKLSAgICBBQ19DSEVDS19GVU5DKFtzaGxfbG9hZF0sCi0JICBbbHRfY3ZfZGxvcGVuPSJzaGxfbG9hZCJdLAotICAgICAgW0FDX0NIRUNLX0xJQihbZGxkXSwgW3NobF9sb2FkXSwKLQkgICAgW2x0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsZCJdLAotCVtBQ19DSEVDS19GVU5DKFtkbG9wZW5dLAotCSAgICAgIFtsdF9jdl9kbG9wZW49ImRsb3BlbiJdLAotCSAgW0FDX0NIRUNLX0xJQihbZGxdLCBbZGxvcGVuXSwKLQkJW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCJdLAotCSAgICBbQUNfQ0hFQ0tfTElCKFtzdmxkXSwgW2Rsb3Blbl0sCi0JCSAgW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxzdmxkIl0sCi0JICAgICAgW0FDX0NIRUNLX0xJQihbZGxkXSwgW2RsZF9saW5rXSwKLQkJICAgIFtsdF9jdl9kbG9wZW49ImRsZF9saW5rIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiXSkKLQkgICAgICBdKQotCSAgICBdKQotCSAgXSkKLQldKQotICAgICAgXSkKLSAgICA7OwotICBlc2FjCi0KLSAgaWYgdGVzdCAieCRsdF9jdl9kbG9wZW4iICE9IHhubzsgdGhlbgotICAgIGVuYWJsZV9kbG9wZW49eWVzCi0gIGVsc2UKLSAgICBlbmFibGVfZGxvcGVuPW5vCi0gIGZpCi0KLSAgY2FzZSAkbHRfY3ZfZGxvcGVuIGluCi0gIGRsb3BlbikKLSAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0gICAgdGVzdCAieCRhY19jdl9oZWFkZXJfZGxmY25faCIgPSB4eWVzICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURIQVZFX0RMRkNOX0giCi0KLSAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIKLQotICAgIHNhdmVfTElCUz0iJExJQlMiCi0gICAgTElCUz0iJGx0X2N2X2Rsb3Blbl9saWJzICRMSUJTIgotCi0gICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgYSBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmXSwKLQkgIGx0X2N2X2Rsb3Blbl9zZWxmLCBbZG5sCi0JICBfTFRfQUNfVFJZX0RMT1BFTl9TRUxGKAotCSAgICBsdF9jdl9kbG9wZW5fc2VsZj15ZXMsIGx0X2N2X2Rsb3Blbl9zZWxmPXllcywKLQkgICAgbHRfY3ZfZGxvcGVuX3NlbGY9bm8sIGx0X2N2X2Rsb3Blbl9zZWxmPWNyb3NzKQotICAgIF0pCi0KLSAgICBpZiB0ZXN0ICJ4JGx0X2N2X2Rsb3Blbl9zZWxmIiA9IHh5ZXM7IHRoZW4KLSAgICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNcIgotICAgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgYSBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmXSwKLSAgICAJICBsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMsIFtkbmwKLQkgIF9MVF9BQ19UUllfRExPUEVOX1NFTEYoCi0JICAgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz15ZXMsIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz15ZXMsCi0JICAgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz1ubywgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz1jcm9zcykKLSAgICAgIF0pCi0gICAgZmkKLQotICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKLSAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotICAgIExJQlM9IiRzYXZlX0xJQlMiCi0gICAgOzsKLSAgZXNhYwotCi0gIGNhc2UgJGx0X2N2X2Rsb3Blbl9zZWxmIGluCi0gIHllc3xubykgZW5hYmxlX2Rsb3Blbl9zZWxmPSRsdF9jdl9kbG9wZW5fc2VsZiA7OwotICAqKSBlbmFibGVfZGxvcGVuX3NlbGY9dW5rbm93biA7OwotICBlc2FjCi0KLSAgY2FzZSAkbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljIGluCi0gIHllc3xubykgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz0kbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljIDs7Ci0gICopIGVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWM9dW5rbm93biA7OwotICBlc2FjCi1maQotXSkjIEFDX0xJQlRPT0xfRExPUEVOX1NFTEYKLQotCi0jIEFDX0xJQlRPT0xfUFJPR19DQ19DX08oW1RBR05BTUVdKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ2hlY2sgdG8gc2VlIGlmIG9wdGlvbnMgLWMgYW5kIC1vIGFyZSBzaW11bHRhbmVvdXNseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXIKLUFDX0RFRlVOKFtBQ19MSUJUT09MX1BST0dfQ0NfQ19PXSwKLVtBQ19SRVFVSVJFKFtMVF9BQ19QUk9HX1NFRF0pZG5sCi1BQ19SRVFVSVJFKFtfTFRfQUNfU1lTX0NPTVBJTEVSXSlkbmwKLUFDX0NBQ0hFX0NIRUNLKFtpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWMgLW8gZmlsZS4kYWNfb2JqZXh0XSwKLSAgW19MVF9BQ19UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKV0sCi0gIFtfTFRfQUNfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSk9bm8KLSAgICRybSAtciBjb25mdGVzdCAyPi9kZXYvbnVsbAotICAgbWtkaXIgY29uZnRlc3QKLSAgIGNkIGNvbmZ0ZXN0Ci0gICBta2RpciBvdXQKLSAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAotCi0gICBsdF9jb21waWxlcl9mbGFnPSItbyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQiCi0gICAjIEluc2VydCB0aGUgb3B0aW9uIGVpdGhlciAoMSkgYWZ0ZXIgdGhlIGxhc3QgKkZMQUdTIHZhcmlhYmxlLCBvcgotICAgIyAoMikgYmVmb3JlIGEgd29yZCBjb250YWluaW5nICJjb25mdGVzdC4iLCBvciAoMykgYXQgdGhlIGVuZC4KLSAgICMgTm90ZSB0aGF0ICRhY19jb21waWxlIGl0c2VsZiBkb2VzIG5vdCBjb250YWluIGJhY2tzbGFzaGVzIGFuZCBiZWdpbnMKLSAgICMgd2l0aCBhIGRvbGxhciBzaWduIChub3QgYSBoeXBoZW4pLCBzbyB0aGUgZWNobyBzaG91bGQgd29yayBjb3JyZWN0bHkuCi0gICBsdF9jb21waWxlPWBlY2hvICIkYWNfY29tcGlsZSIgfCAkU0VEIFwKLSAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKLSAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAotICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCi0gICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+b3V0L2NvbmZ0ZXN0LmVycikKLSAgIGFjX3N0YXR1cz0kPwotICAgY2F0IG91dC9jb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQKLSAgIHRoZW4KLSAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKLSAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCi0gICAgICRlY2hvICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAotICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgb3V0L2NvbmZ0ZXN0LmVyciA+b3V0L2NvbmZ0ZXN0LmVyMgotICAgICBpZiB0ZXN0ICEgLXMgb3V0L2NvbmZ0ZXN0LmVyMiB8fCBkaWZmIG91dC9jb25mdGVzdC5leHAgb3V0L2NvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCi0gICAgICAgX0xUX0FDX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPXllcwotICAgICBmaQotICAgZmkKLSAgIGNobW9kIHUrdyAuIDI+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAkcm0gY29uZnRlc3QqCi0gICAjIFNHSSBDKysgY29tcGlsZXIgd2lsbCBjcmVhdGUgZGlyZWN0b3J5IG91dC9paV9maWxlcy8gZm9yCi0gICAjIHRlbXBsYXRlIGluc3RhbnRpYXRpb24KLSAgIHRlc3QgLWQgb3V0L2lpX2ZpbGVzICYmICRybSBvdXQvaWlfZmlsZXMvKiAmJiBybWRpciBvdXQvaWlfZmlsZXMKLSAgICRybSBvdXQvKiAmJiBybWRpciBvdXQKLSAgIGNkIC4uCi0gICBybWRpciBjb25mdGVzdAotICAgJHJtIGNvbmZ0ZXN0KgotXSkKLV0pIyBBQ19MSUJUT09MX1BST0dfQ0NfQ19PCi0KLQotIyBBQ19MSUJUT09MX1NZU19IQVJEX0xJTktfTE9DS1MoW1RBR05BTUVdKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayB0byBzZWUgaWYgd2UgY2FuIGRvIGhhcmQgbGlua3MgdG8gbG9jayBzb21lIGZpbGVzIGlmIG5lZWRlZAotQUNfREVGVU4oW0FDX0xJQlRPT0xfU1lTX0hBUkRfTElOS19MT0NLU10sCi1bQUNfUkVRVUlSRShbX0xUX0FDX0xPQ0tdKWRubAotCi1oYXJkX2xpbmtzPSJub3R0ZXN0ZWQiCi1pZiB0ZXN0ICIkX0xUX0FDX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpIiA9IG5vICYmIHRlc3QgIiRuZWVkX2xvY2tzIiAhPSBubzsgdGhlbgotICAjIGRvIG5vdCBvdmVyd3JpdGUgdGhlIHZhbHVlIG9mIG5lZWRfbG9ja3MgcHJvdmlkZWQgYnkgdGhlIHVzZXIKLSAgQUNfTVNHX0NIRUNLSU5HKFtpZiB3ZSBjYW4gbG9jayB3aXRoIGhhcmQgbGlua3NdKQotICBoYXJkX2xpbmtzPXllcwotICAkcm0gY29uZnRlc3QqCi0gIGxuIGNvbmZ0ZXN0LmEgY29uZnRlc3QuYiAyPi9kZXYvbnVsbCAmJiBoYXJkX2xpbmtzPW5vCi0gIHRvdWNoIGNvbmZ0ZXN0LmEKLSAgbG4gY29uZnRlc3QuYSBjb25mdGVzdC5iIDI+JjUgfHwgaGFyZF9saW5rcz1ubwotICBsbiBjb25mdGVzdC5hIGNvbmZ0ZXN0LmIgMj4vZGV2L251bGwgJiYgaGFyZF9saW5rcz1ubwotICBBQ19NU0dfUkVTVUxUKFskaGFyZF9saW5rc10pCi0gIGlmIHRlc3QgIiRoYXJkX2xpbmtzIiA9IG5vOyB0aGVuCi0gICAgQUNfTVNHX1dBUk4oW2AkQ0MnIGRvZXMgbm90IHN1cHBvcnQgYC1jIC1vJywgc28gYG1ha2UgLWonIG1heSBiZSB1bnNhZmVdKQotICAgIG5lZWRfbG9ja3M9d2FybgotICBmaQotZWxzZQotICBuZWVkX2xvY2tzPW5vCi1maQotXSkjIEFDX0xJQlRPT0xfU1lTX0hBUkRfTElOS19MT0NLUwotCi0KLSMgQUNfTElCVE9PTF9PQkpESVIKLSMgLS0tLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtBQ19MSUJUT09MX09CSkRJUl0sCi1bQUNfQ0FDSEVfQ0hFQ0soW2ZvciBvYmpkaXJdLCBbbHRfY3Zfb2JqZGlyXSwKLVtybSAtZiAubGlicyAyPi9kZXYvbnVsbAotbWtkaXIgLmxpYnMgMj4vZGV2L251bGwKLWlmIHRlc3QgLWQgLmxpYnM7IHRoZW4KLSAgbHRfY3Zfb2JqZGlyPS5saWJzCi1lbHNlCi0gICMgTVMtRE9TIGRvZXMgbm90IGFsbG93IGZpbGVuYW1lcyB0aGF0IGJlZ2luIHdpdGggYSBkb3QuCi0gIGx0X2N2X29iamRpcj1fbGlicwotZmkKLXJtZGlyIC5saWJzIDI+L2Rldi9udWxsXSkKLW9iamRpcj0kbHRfY3Zfb2JqZGlyCi1dKSMgQUNfTElCVE9PTF9PQkpESVIKLQotCi0jIEFDX0xJQlRPT0xfUFJPR19MRF9IQVJEQ09ERV9MSUJQQVRIKFtUQUdOQU1FXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayBoYXJkY29kaW5nIGF0dHJpYnV0ZXMuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEhdLAotW0FDX01TR19DSEVDS0lORyhbaG93IHRvIGhhcmRjb2RlIGxpYnJhcnkgcGF0aHMgaW50byBwcm9ncmFtc10pCi1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPQotaWYgdGVzdCAtbiAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIiB8fCBcCi0gICB0ZXN0IC1uICIkX0xUX0FDX1RBR1ZBUihydW5wYXRoX3ZhciwgJDEpIiB8fCBcCi0gICB0ZXN0ICJYJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSkiID0gIlh5ZXMiIDsgdGhlbgotCi0gICMgV2UgY2FuIGhhcmRjb2RlIG5vbi1leGlzdGFudCBkaXJlY3Rvcmllcy4KLSAgaWYgdGVzdCAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSkiICE9IG5vICYmCi0gICAgICMgSWYgdGhlIG9ubHkgbWVjaGFuaXNtIHRvIGF2b2lkIGhhcmRjb2RpbmcgaXMgc2hsaWJwYXRoX3Zhciwgd2UKLSAgICAgIyBoYXZlIHRvIHJlbGluaywgb3RoZXJ3aXNlIHdlIG1pZ2h0IGxpbmsgd2l0aCBhbiBpbnN0YWxsZWQgbGlicmFyeQotICAgICAjIHdoZW4gd2Ugc2hvdWxkIGJlIGxpbmtpbmcgd2l0aCBhIHlldC10by1iZS1pbnN0YWxsZWQgb25lCi0gICAgICMjIHRlc3QgIiRfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKSIgIT0gbm8gJiYKLSAgICAgdGVzdCAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpIiAhPSBubzsgdGhlbgotICAgICMgTGlua2luZyBhbHdheXMgaGFyZGNvZGVzIHRoZSB0ZW1wb3JhcnkgbGlicmFyeSBkaXJlY3RvcnkuCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKT1yZWxpbmsKLSAgZWxzZQotICAgICMgV2UgY2FuIGxpbmsgd2l0aG91dCBoYXJkY29kaW5nLCBhbmQgd2UgY2FuIGhhcmRjb2RlIG5vbmV4aXN0aW5nIGRpcnMuCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKT1pbW1lZGlhdGUKLSAgZmkKLWVsc2UKLSAgIyBXZSBjYW5ub3QgaGFyZGNvZGUgYW55dGhpbmcsIG9yIGVsc2Ugd2UgY2FuIG9ubHkgaGFyZGNvZGUgZXhpc3RpbmcKLSAgIyBkaXJlY3Rvcmllcy4KLSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKT11bnN1cHBvcnRlZAotZmkKLUFDX01TR19SRVNVTFQoWyRfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpXSkKLQotaWYgdGVzdCAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSkiID0gcmVsaW5rOyB0aGVuCi0gICMgRmFzdCBpbnN0YWxsYXRpb24gaXMgbm90IHN1cHBvcnRlZAotICBlbmFibGVfZmFzdF9pbnN0YWxsPW5vCi1lbGlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzIHx8Ci0gICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IG5vOyB0aGVuCi0gICMgRmFzdCBpbnN0YWxsYXRpb24gaXMgbm90IG5lY2Vzc2FyeQotICBlbmFibGVfZmFzdF9pbnN0YWxsPW5lZWRsZXNzCi1maQotXSkjIEFDX0xJQlRPT0xfUFJPR19MRF9IQVJEQ09ERV9MSUJQQVRICi0KLQotIyBBQ19MSUJUT09MX1NZU19MSUJfU1RSSVAKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfTElCVE9PTF9TWVNfTElCX1NUUklQXSwKLVtzdHJpcGxpYj0KLW9sZF9zdHJpcGxpYj0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciBzdHJpcHBpbmcgbGlicmFyaWVzIGlzIHBvc3NpYmxlXSkKLWlmIHRlc3QgLW4gIiRTVFJJUCIgJiYgJFNUUklQIC1WIDI+JjEgfCBncmVwICJHTlUgc3RyaXAiID4vZGV2L251bGw7IHRoZW4KLSAgdGVzdCAteiAiJG9sZF9zdHJpcGxpYiIgJiYgb2xkX3N0cmlwbGliPSIkU1RSSVAgLS1zdHJpcC1kZWJ1ZyIKLSAgdGVzdCAteiAiJHN0cmlwbGliIiAmJiBzdHJpcGxpYj0iJFNUUklQIC0tc3RyaXAtdW5uZWVkZWQiCi0gIEFDX01TR19SRVNVTFQoW3llc10pCi1lbHNlCi0jIEZJWE1FIC0gaW5zZXJ0IHNvbWUgcmVhbCB0ZXN0cywgaG9zdF9vcyBpc24ndCByZWFsbHkgZ29vZCBlbm91Z2gKLSAgY2FzZSAkaG9zdF9vcyBpbgotICAgZGFyd2luKikKLSAgICAgICBpZiB0ZXN0IC1uICIkU1RSSVAiIDsgdGhlbgotICAgICAgICAgc3RyaXBsaWI9IiRTVFJJUCAteCIKLSAgICAgICAgIG9sZF9zdHJpcGxpYj0iJFNUUklQIC1TIgotICAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICAgICBlbHNlCi0gIEFDX01TR19SRVNVTFQoW25vXSkKLWZpCi0gICAgICAgOzsKLSAgICopCi0gIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICA7OwotICBlc2FjCi1maQotXSkjIEFDX0xJQlRPT0xfU1lTX0xJQl9TVFJJUAotCi0KLSMgQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVIKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUE9SVE1FIEZpbGwgaW4geW91ciBsZC5zbyBjaGFyYWN0ZXJpc3RpY3MKLUFDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUl0sCi1bQUNfUkVRVUlSRShbTFRfQUNfUFJPR19TRURdKWRubAotQUNfTVNHX0NIRUNLSU5HKFtkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3NdKQotbGlicmFyeV9uYW1lc19zcGVjPQotbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKLXNvbmFtZV9zcGVjPQotc2hyZXh0X2NtZHM9Ii5zbyIKLXBvc3RpbnN0YWxsX2NtZHM9Ci1wb3N0dW5pbnN0YWxsX2NtZHM9Ci1maW5pc2hfY21kcz0KLWZpbmlzaF9ldmFsPQotc2hsaWJwYXRoX3Zhcj0KLXNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD11bmtub3duCi12ZXJzaW9uX3R5cGU9bm9uZQotZHluYW1pY19saW5rZXI9IiRob3N0X29zIGxkLnNvIgotc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIiCi1tNF9pZigkMSxbXSxbCi1pZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICBjYXNlICRob3N0X29zIGluCi0gICAgZGFyd2luKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LywvTFIvIiA7OwotICAgICopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8iIDs7Ci0gIGVzYWMKLSAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgaWYgZWNobyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgZ3JlcCAnOycgPi9kZXYvbnVsbCA7IHRoZW4KLSAgICAjIGlmIHRoZSBwYXRoIGNvbnRhaW5zICI7IiB0aGVuIHdlIGFzc3VtZSBpdCB0byBiZSB0aGUgc2VwYXJhdG9yCi0gICAgIyBvdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgc3RhbmRhcmQgcGF0aCBzZXBhcmF0b3IgKGkuZS4gIjoiKSAtIGl0IGlzCi0gICAgIyBhc3N1bWVkIHRoYXQgbm8gcGFydCBvZiBhIG5vcm1hbCBwYXRobmFtZSBjb250YWlucyAiOyIgYnV0IHRoYXQgc2hvdWxkCi0gICAgIyBva2F5IGluIHRoZSByZWFsIHdvcmxkIHdoZXJlICI7IiBpbiBkaXJwYXRocyBpcyBpdHNlbGYgcHJvYmxlbWF0aWMuCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gZWNobyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0gIGVsc2UKLSAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWBlY2hvICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSAgZmkKLSAgIyBPaywgbm93IHdlIGhhdmUgdGhlIHBhdGgsIHNlcGFyYXRlZCBieSBzcGFjZXMsIHdlIGNhbiBzdGVwIHRocm91Z2ggaXQKLSAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuCi0gIGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPQotICBsdF9tdWx0aV9vc19kaXI9YCRDQyAkQ1BQRkxBR1MgJENGTEFHUyAkTERGTEFHUyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5IDI+L2Rldi9udWxsYAotICBmb3IgbHRfc3lzX3BhdGggaW4gJGx0X3NlYXJjaF9wYXRoX3NwZWM7IGRvCi0gICAgaWYgdGVzdCAtZCAiJGx0X3N5c19wYXRoLyRsdF9tdWx0aV9vc19kaXIiOyB0aGVuCi0gICAgICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aC8kbHRfbXVsdGlfb3NfZGlyIgotICAgIGVsc2UKLSAgICAgIHRlc3QgLWQgIiRsdF9zeXNfcGF0aCIgJiYgXAotCWx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoIgotICAgIGZpCi0gIGRvbmUKLSAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gZWNobyAkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgfCBhd2sgJwotQkVHSU4ge1JTPSIgIjsgRlM9Ii98XG4iO30gewotICBsdF9mb289IiI7Ci0gIGx0X2NvdW50PTA7Ci0gIGZvciAobHRfaSA9IE5GOyBsdF9pID4gMDsgbHRfaS0tKSB7Ci0gICAgaWYgKCRsdF9pICE9ICIiICYmICRsdF9pICE9ICIuIikgewotICAgICAgaWYgKCRsdF9pID09ICIuLiIpIHsKLSAgICAgICAgbHRfY291bnQrKzsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChsdF9jb3VudCA9PSAwKSB7Ci0gICAgICAgICAgbHRfZm9vPSIvIiAkbHRfaSBsdF9mb287Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgbHRfY291bnQtLTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotICBpZiAobHRfZm9vICE9ICIiKSB7IGx0X2ZyZXFbW2x0X2Zvb11dKys7IH0KLSAgaWYgKGx0X2ZyZXFbW2x0X2Zvb11dID09IDEpIHsgcHJpbnQgbHRfZm9vOyB9Ci19J2AKLSAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBlY2hvICRsdF9zZWFyY2hfcGF0aF9zcGVjYAotZWxzZQotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIiCi1maV0pCi1uZWVkX2xpYl9wcmVmaXg9dW5rbm93bgotaGFyZGNvZGVfaW50b19saWJzPW5vCi0KLSMgd2hlbiB5b3Ugc2V0IG5lZWRfdmVyc2lvbiB0byBubywgbWFrZSBzdXJlIGl0IGRvZXMgbm90IGNhdXNlIC1zZXRfdmVyc2lvbgotIyBmbGFncyB0byBiZSBsZWZ0IHdpdGhvdXQgYXJndW1lbnRzCi1uZWVkX3ZlcnNpb249dW5rbm93bgotCi1jYXNlICRob3N0X29zIGluCi1haXgzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZS5hJwotICBzaGxpYnBhdGhfdmFyPUxJQlBBVEgKLQotICAjIEFJWCAzIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIHdlIGFwcGVuZCBhIG1ham9yIHZlcnNpb24gdG8gdGhlIG5hbWUuCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gIDs7Ci0KLWFpeFtbNC05XV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgbmVlZF9saWJfcHJlZml4PW5vCi0gIG5lZWRfdmVyc2lvbj1ubwotICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0gICAgIyBBSVggNSBzdXBwb3J0cyBJQTY0Ci0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgZWxzZQotICAgICMgV2l0aCBHQ0MgdXAgdG8gMi45NS54LCBjb2xsZWN0MiB3b3VsZCBjcmVhdGUgYW4gaW1wb3J0IGZpbGUKLSAgICAjIGZvciBkZXBlbmRlbmNlIGxpYnJhcmllcy4gIFRoZSBpbXBvcnQgZmlsZSB3b3VsZCBzdGFydCB3aXRoCi0gICAgIyB0aGUgbGluZSBgIyEgLicuICBUaGlzIHdvdWxkIGNhdXNlIHRoZSBnZW5lcmF0ZWQgbGlicmFyeSB0bwotICAgICMgZGVwZW5kIG9uIGAuJywgYWx3YXlzIGFuIGludmFsaWQgbGlicmFyeS4gIFRoaXMgd2FzIGZpeGVkIGluCi0gICAgIyBkZXZlbG9wbWVudCBzbmFwc2hvdHMgb2YgR0NDIHByaW9yIHRvIDMuMC4KLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgICBhaXg0IHwgYWl4NC5bWzAxXV0gfCBhaXg0LltbMDFdXS4qKQotICAgICAgaWYgeyBlY2hvICcjaWYgX19HTlVDX18gPiAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID49IDk3KScKLQkgICBlY2hvICcgeWVzICcKLQkgICBlY2hvICcjZW5kaWYnOyB9IHwgJHtDQ30gLUUgLSB8IGdyZXAgeWVzID4gL2Rldi9udWxsOyB0aGVuCi0JOgotICAgICAgZWxzZQotCWNhbl9idWlsZF9zaGFyZWQ9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICAgIGVzYWMKLSAgICAjIEFJWCAob24gUG93ZXIqKSBoYXMgbm8gdmVyc2lvbmluZyBzdXBwb3J0LCBzbyBjdXJyZW50bHkgd2UgY2FuIG5vdCBoYXJkY29kZSBjb3JyZWN0Ci0gICAgIyBzb25hbWUgaW50byBleGVjdXRhYmxlLiBQcm9iYWJseSB3ZSBjYW4gYWRkIHZlcnNpb25pbmcgc3VwcG9ydCB0bwotICAgICMgY29sbGVjdDIsIHNvIGFkZGl0aW9uYWwgbGlua3MgY2FuIGJlIHVzZWZ1bCBpbiBmdXR1cmUuCi0gICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0gICAgICAjIElmIHVzaW5nIHJ1biB0aW1lIGxpbmtpbmcgKG9uIEFJWCA0LjIgb3IgbGF0ZXIpIHVzZSBsaWI8bmFtZT4uc28KLSAgICAgICMgaW5zdGVhZCBvZiBsaWI8bmFtZT4uYSB0byBsZXQgcGVvcGxlIGtub3cgdGhhdCB0aGVzZSBhcmUgbm90Ci0gICAgICAjIHR5cGljYWwgQUlYIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBlbHNlCi0gICAgICAjIFdlIHByZXNlcnZlIC5hIGFzIGV4dGVuc2lvbiBmb3Igc2hhcmVkIGxpYnJhcmllcyB0aHJvdWdoIEFJWDQuMgotICAgICAgIyBhbmQgbGF0ZXIgd2hlbiB3ZSBhcmUgbm90IGRvaW5nIHJ1biB0aW1lIGxpbmtpbmcuCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9LmEgJGxpYm5hbWUuYScKLSAgICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICAgZmkKLSAgICBzaGxpYnBhdGhfdmFyPUxJQlBBVEgKLSAgZmkKLSAgOzsKLQotYW1pZ2FvcyopCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCi0gICMgQ3JlYXRlICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgZW50cmllcyBpbiAvc3lzL2xpYnMuCi0gIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdcJydzJV4uKi9cKFtbXi9dXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkcm0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCi0gIDs7Ci0KLWJlb3MqKQotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwotICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgbGQuc28iCi0gIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gIDs7Ci0KLWJzZGlbWzQ1XV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAkbGliZGlyJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii9zaGxpYiAvdXNyL2xpYiAvdXNyL1gxMS9saWIgL3Vzci9jb250cmliL2xpYiAvbGliIC91c3IvbG9jYWwvbGliIgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL3NobGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliIgotICAjIHRoZSBkZWZhdWx0IGxkLnNvLmNvbmYgYWxzbyBjb250YWlucyAvdXNyL2NvbnRyaWIvbGliIGFuZAotICAjIC91c3IvWDExUjYvbGliICgvdXNyL1gxMSBpcyBhIGxpbmsgdG8gL3Vzci9YMTFSNiksIGJ1dCBsZXQgdXMgYWxsb3cKLSAgIyBsaWJ0b29sIHRvIGhhcmQtY29kZSB0aGVzZSBpbnRvIHByb2dyYW1zCi0gIDs7Ci0KLWN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKLSAgdmVyc2lvbl90eXBlPXdpbmRvd3MKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0gIG5lZWRfdmVyc2lvbj1ubwotICBuZWVkX2xpYl9wcmVmaXg9bm8KLQotICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7ZWNobyBcJGRsbmFtZSdcJydgfgotICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0gICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWV+Ci0gICAgICBjaG1vZCBhK3ggXCRkbGRpci8kZGxuYW1lJwotICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0gICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotICAgICAgICRybSBcJGRscGF0aCcKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0KLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgY3lnd2luKikKLSAgICAgICMgQ3lnd2luIERMTHMgdXNlICdjeWcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwotICAgICAgc29uYW1lX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9jeWcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliIC9saWIvdzMyYXBpIC9saWIgL3Vzci9sb2NhbC9saWIiCi0gICAgICA7OwotICAgIG1pbmd3KikKLSAgICAgICMgTWluR1cgRExMcyB1c2UgdHJhZGl0aW9uYWwgJ2xpYicgcHJlZml4Ci0gICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGdyZXAgIl5saWJyYXJpZXM6IiB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgICAgIGlmIGVjaG8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgW2dyZXAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgotICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRIIHByaW50ZWQgYnkKLSAgICAgICAgIyBtaW5ndyBnY2MsIGJ1dCB3ZSBhcmUgcnVubmluZyBvbiBDeWd3aW4uIEdjYyBwcmludHMgaXRzIHNlYXJjaAotICAgICAgICAjIHBhdGggd2l0aCA7IHNlcGFyYXRvcnMsIGFuZCB3aXRoIGRyaXZlIGxldHRlcnMuIFdlIGNhbiBoYW5kbGUgdGhlCi0gICAgICAgICMgZHJpdmUgbGV0dGVycyAoY3lnd2luIGZpbGV1dGlscyB1bmRlcnN0YW5kcyB0aGVtKSwgc28gbGVhdmUgdGhlbSwKLSAgICAgICAgIyBlc3BlY2lhbGx5IGFzIHdlIG1pZ2h0IHBhc3MgZmlsZXMgZm91bmQgdGhlcmUgdG8gYSBtaW5ndyBvYmpkdW1wLAotICAgICAgICAjIHdoaWNoIHdvdWxkbid0IHVuZGVyc3RhbmQgYSBjeWd3aW5pZmllZCBwYXRoLiBBaGguCi0gICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gZWNobyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSAgICAgIGVsc2UKLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBlY2hvICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgcHczMiopCi0gICAgICAjIHB3MzIgRExMcyB1c2UgJ3B3JyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgOzsKLSAgICBlc2FjCi0gICAgOzsKLQotICAqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0gICAgOzsKLSAgZXNhYwotICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gIDs7Ci0KLWRhcndpbiogfCByaGFwc29keSopCi0gIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkeWxkIgotICB2ZXJzaW9uX3R5cGU9ZGFyd2luCi0gIG5lZWRfbGliX3ByZWZpeD1ubwotICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7dmVyc3VmZml4fSRzaGFyZWRfZXh0ICR7bGlibmFtZX0ke3JlbGVhc2V9JHttYWpvcn0kc2hhcmVkX2V4dCAke2xpYm5hbWV9JHNoYXJlZF9leHQnCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7bWFqb3J9JHNoYXJlZF9leHQnCi0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgc2hsaWJwYXRoX3Zhcj1EWUxEX0xJQlJBUllfUEFUSAotICBzaHJleHRfY21kcz0nYHRlc3QgLiRtb2R1bGUgPSAueWVzICYmIGVjaG8gLnNvIHx8IGVjaG8gLmR5bGliYCcKLSAgbTRfaWYoWyQxXSwgW10sWwotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgL3Vzci9sb2NhbC9saWIiXSkgCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvdXNyL2xvY2FsL2xpYiAvbGliIC91c3IvbGliJwotICA7OwotCi1kZ3V4KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gIG5lZWRfbGliX3ByZWZpeD1ubwotICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICA7OwotCi1mcmVlYnNkMSopCi0gIGR5bmFtaWNfbGlua2VyPW5vCi0gIDs7Ci0KLWZyZWVic2QqIHwgZHJhZ29uZmx5KikKLSAgIyBEcmFnb25GbHkgZG9lcyBub3QgaGF2ZSBhb3V0LiAgV2hlbi9pZiB0aGV5IGltcGxlbWVudCBhIG5ldwotICAjIHZlcnNpb25pbmcgbWVjaGFuaXNtLCBhZGp1c3QgdGhpcy4KLSAgaWYgdGVzdCAteCAvdXNyL2Jpbi9vYmpmb3JtYXQ7IHRoZW4KLSAgICBvYmpmb3JtYXQ9YC91c3IvYmluL29iamZvcm1hdGAKLSAgZWxzZQotICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBmcmVlYnNkW1sxMjNdXSopIG9iamZvcm1hdD1hb3V0IDs7Ci0gICAgKikgb2JqZm9ybWF0PWVsZiA7OwotICAgIGVzYWMKLSAgZmkKLSAgdmVyc2lvbl90eXBlPWZyZWVic2QtJG9iamZvcm1hdAotICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KLSAgICBmcmVlYnNkLWVsZiopCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICAgIG5lZWRfdmVyc2lvbj1ubwotICAgICAgbmVlZF9saWJfcHJlZml4PW5vCi0gICAgICA7OwotICAgIGZyZWVic2QtKikKLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JwotICAgICAgbmVlZF92ZXJzaW9uPXllcwotICAgICAgOzsKLSAgZXNhYwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBjYXNlICRob3N0X29zIGluCi0gIGZyZWVic2QyKikKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gICAgOzsKLSAgZnJlZWJzZDMuW1swMV1dKiB8IGZyZWVic2RlbGYzLltbMDFdXSopCi0gICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgICA7OwotICBmcmVlYnNkMy5bWzItOV1dKiB8IGZyZWVic2RlbGYzLltbMi05XV0qIHwgXAotICBmcmVlYnNkNC5bWzAtNV1dIHwgZnJlZWJzZGVsZjQuW1swLTVdXSB8IGZyZWVic2Q0LjEuMSB8IGZyZWVic2RlbGY0LjEuMSkKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KLSAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICAgOzsKLSAgKikgIyBmcm9tIDQuNiBvbiwgYW5kIERyYWdvbkZseQotICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICAgOzsKLSAgZXNhYwotICA7OwotCi1nbnUqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgbmVlZF9saWJfcHJlZml4PW5vCi0gIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHttYWpvcn0gJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICi0gIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgOzsKLQotaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCi0gICMgR2l2ZSBhIHNvbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYWpvciB2ZXJzaW9uIHNvIHRoYXQgZGxkLnNsIHJlZnVzZXMgdG8KLSAgIyBsaW5rIGFnYWluc3Qgb3RoZXIgdmVyc2lvbnMuCi0gIHZlcnNpb25fdHlwZT1zdW5vcwotICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgbmVlZF92ZXJzaW9uPW5vCi0gIGNhc2UgJGhvc3RfY3B1IGluCi0gIGlhNjQqKQotICAgIHNocmV4dF9jbWRzPScuc28nCi0gICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc28iCi0gICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzICMgVW5sZXNzICtub2VudnZhciBpcyBzcGVjaWZpZWQuCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgICBpZiB0ZXN0ICJYJEhQVVhfSUE2NF9NT0RFIiA9IFgzMjsgdGhlbgotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYi9ocHV4MzIgL3Vzci9sb2NhbC9saWIvaHB1eDMyIC91c3IvbG9jYWwvbGliIgotICAgIGVsc2UKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvaHB1eDY0IC91c3IvbG9jYWwvbGliL2hwdXg2NCIKLSAgICBmaQotICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMKLSAgICA7OwotICAgaHBwYSo2NCopCi0gICAgIHNocmV4dF9jbWRzPScuc2wnCi0gICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbCIKLSAgICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEggIyBIb3cgc2hvdWxkIHdlIGhhbmRsZSBTSExJQl9QQVRICi0gICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMgIyBVbmxlc3MgK25vZW52dmFyIGlzIHNwZWNpZmllZC4KLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvcGEyMF82NCAvdXNyL2Njcy9saWIvcGEyMF82NCIKLSAgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwotICAgICA7OwotICAgKikKLSAgICBzaHJleHRfY21kcz0nLnNsJwotICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc2wiCi0gICAgc2hsaWJwYXRoX3Zhcj1TSExJQl9QQVRICi0gICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vICMgK3MgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFNITElCX1BBVEgKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgIDs7Ci0gIGVzYWMKLSAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUuCi0gIHBvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDU1NSAkbGliJwotICA7OwotCi1pbnRlcml4W1szLTldXSopCi0gIHZlcnNpb25fdHlwZT1saW51eAotICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gIGR5bmFtaWNfbGlua2VyPSdJbnRlcml4IDMueCBsZC5zby4xIChQRSwgbGlrZSBFTEYpJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICA7OwotCi1pcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICBjYXNlICRob3N0X29zIGluCi0gICAgbm9uc3RvcHV4KikgdmVyc2lvbl90eXBlPW5vbnN0b3B1eCA7OwotICAgICopCi0JaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgotCQl2ZXJzaW9uX3R5cGU9bGludXgKLQllbHNlCi0JCXZlcnNpb25fdHlwZT1pcml4Ci0JZmkgOzsKLSAgZXNhYwotICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgbmVlZF92ZXJzaW9uPW5vCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgY2FzZSAkaG9zdF9vcyBpbgotICBpcml4NSogfCBub25zdG9wdXgqKQotICAgIGxpYnN1ZmY9IHNobGlic3VmZj0KLSAgICA7OwotICAqKQotICAgIGNhc2UgJExEIGluICMgbGlidG9vbC5tNCB3aWxsIGFkZCBvbmUgb2YgdGhlc2Ugc3dpdGNoZXMgdG8gTEQKLSAgICAqLTMyfCoiLTMyICJ8Ki1tZWxmMzJic21pcHwqIi1tZWxmMzJic21pcCAiKQotICAgICAgbGlic3VmZj0gc2hsaWJzdWZmPSBsaWJtYWdpYz0zMi1iaXQ7OwotICAgICotbjMyfCoiLW4zMiAifCotbWVsZjMyYm1pcG4zMnwqIi1tZWxmMzJibWlwbjMyICIpCi0gICAgICBsaWJzdWZmPTMyIHNobGlic3VmZj1OMzIgbGlibWFnaWM9TjMyOzsKLSAgICAqLTY0fCoiLTY0ICJ8Ki1tZWxmNjRibWlwfCoiLW1lbGY2NGJtaXAgIikKLSAgICAgIGxpYnN1ZmY9NjQgc2hsaWJzdWZmPTY0IGxpYm1hZ2ljPTY0LWJpdDs7Ci0gICAgKikgbGlic3VmZj0gc2hsaWJzdWZmPSBsaWJtYWdpYz1uZXZlci1tYXRjaDs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIGVzYWMKLSAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZJHtzaGxpYnN1ZmZ9X1BBVEgKLSAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIke2xpYnN1ZmZ9IC9saWIke2xpYnN1ZmZ9IC91c3IvbG9jYWwvbGliJHtsaWJzdWZmfSIKLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJHtsaWJzdWZmfSAvbGliJHtsaWJzdWZmfSIKLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICA7OwotCi0jIE5vIHNoYXJlZCBsaWIgc3VwcG9ydCBmb3IgTGludXggb2xkbGQsIGFvdXQsIG9yIGNvZmYuCi1saW51eCpvbGRsZCogfCBsaW51eCphb3V0KiB8IGxpbnV4KmNvZmYqKQotICBkeW5hbWljX2xpbmtlcj1ubwotICA7OwotCi0jIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCi1saW51eCogfCBrKmJzZCotZ251KQotICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgbmVlZF9saWJfcHJlZml4PW5vCi0gIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKLSAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0gICMgVGhpcyBpbXBsaWVzIG5vIGZhc3RfaW5zdGFsbCwgd2hpY2ggaXMgdW5hY2NlcHRhYmxlLgotICAjIFNvbWUgcmV3b3JrIHdpbGwgYmUgbmVlZGVkIHRvIGFsbG93IGZvciBmYXN0X2luc3RhbGwKLSAgIyBiZWZvcmUgdGhpcyBjYW4gYmUgZW5hYmxlZC4KLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotCi0gICMgQXBwZW5kIGxkLnNvLmNvbmYgY29udGVudHMgdG8gdGhlIHNlYXJjaCBwYXRoCi0gIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0gICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXFskXTIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFxbJF0wOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWyAJXSpod2NhcFsgCV0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKLSAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAkbHRfbGRfZXh0cmEiCi0gIGZpCi0KLSAgIyBXZSB1c2VkIHRvIHRlc3QgZm9yIC9saWIvbGQuc28uMSBhbmQgZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIG9uCi0gICMgcG93ZXJwYywgYmVjYXVzZSBNa0xpbnV4IG9ubHkgc3VwcG9ydGVkIHNoYXJlZCBsaWJyYXJpZXMgd2l0aCB0aGUKLSAgIyBHTlUgZHluYW1pYyBsaW5rZXIuICBTaW5jZSB0aGlzIHdhcyBicm9rZW4gd2l0aCBjcm9zcyBjb21waWxlcnMsCi0gICMgbW9zdCBwb3dlcnBjLWxpbnV4IGJveGVzIHN1cHBvcnQgZHluYW1pYyBsaW5raW5nIHRoZXNlIGRheXMgYW5kCi0gICMgcGVvcGxlIGNhbiBhbHdheXMgLS1kaXNhYmxlLXNoYXJlZCwgdGhlIHRlc3Qgd2FzIHJlbW92ZWQsIGFuZCB3ZQotICAjIGFzc3VtZSB0aGUgR05VL0xpbnV4IGR5bmFtaWMgbGlua2VyIGlzIGluIHVzZS4KLSAgZHluYW1pY19saW5rZXI9J0dOVS9MaW51eCBsZC5zbycKLSAgOzsKLQotbmV0YnNkKikKLSAgdmVyc2lvbl90eXBlPXN1bm9zCi0gIG5lZWRfbGliX3ByZWZpeD1ubwotICBuZWVkX3ZlcnNpb249bm8KLSAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCi0gICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW0gJGxpYmRpcicKLSAgICBkeW5hbWljX2xpbmtlcj0nTmV0QlNEIChhLm91dCkgbGQuc28nCi0gIGVsc2UKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICAgZHluYW1pY19saW5rZXI9J05ldEJTRCBsZC5lbGZfc28nCi0gIGZpCi0gIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICi0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICA7OwotCi1uZXdzb3M2KQotICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICi0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgOzsKLQotbnRvLXFueCopCi0gIHZlcnNpb25fdHlwZT1saW51eAotICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gIDs7Ci0KLW9wZW5ic2QqKQotICB2ZXJzaW9uX3R5cGU9c3Vub3MKLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliIgotICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgIyBTb21lIG9sZGVyIHZlcnNpb25zIG9mIE9wZW5CU0QgKDMuMyBhdCBsZWFzdCkgKmRvKiBuZWVkIHZlcnNpb25lZCBsaWJzLgotICBjYXNlICRob3N0X29zIGluCi0gICAgb3BlbmJzZDMuMyB8IG9wZW5ic2QzLjMuKikgbmVlZF92ZXJzaW9uPXllcyA7OwotICAgICopICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRfdmVyc2lvbj1ubyAgOzsKLSAgZXNhYwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JwotICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbSAkbGliZGlyJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgICBvcGVuYnNkMi5bWzg5XV0gfCBvcGVuYnNkMi5bWzg5XV0uKikKLQlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KLQk7OwotICAgICAgKikKLQlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0JOzsKLSAgICAgIGVzYWMKLSAgZWxzZQotICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgZmkKLSAgOzsKLQotb3MyKikKLSAgbGlibmFtZV9zcGVjPSckbmFtZScKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0gIG5lZWRfbGliX3ByZWZpeD1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fSAkbGlibmFtZS5hJwotICBkeW5hbWljX2xpbmtlcj0nT1MvMiBsZC5leGUnCi0gIHNobGlicGF0aF92YXI9TElCUEFUSAotICA7OwotCi1vc2YzKiB8IG9zZjQqIHwgb3NmNSopCi0gIHZlcnNpb25fdHlwZT1vc2YKLSAgbmVlZF9saWJfcHJlZml4PW5vCi0gIG5lZWRfdmVyc2lvbj1ubwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL3NobGliIC91c3IvY2NzL2xpYiAvdXNyL2xpYi9jbXBscnMvY2MgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIgL3Zhci9zaGxpYiIKLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiCi0gIDs7Ci0KLXJkb3MqKQotICBkeW5hbWljX2xpbmtlcj1ubwotICA7OwotCi1zb2xhcmlzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gIG5lZWRfbGliX3ByZWZpeD1ubwotICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICi0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAjIGxkZCBjb21wbGFpbnMgdW5sZXNzIGxpYnJhcmllcyBhcmUgZXhlY3V0YWJsZQotICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCAreCAkbGliJwotICA7OwotCi1zdW5vczQqKQotICB2ZXJzaW9uX3R5cGU9c3Vub3MKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKLSAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovdXNyL2V0YyIgbGRjb25maWcgJGxpYmRpcicKLSAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0gICAgbmVlZF9saWJfcHJlZml4PW5vCi0gIGZpCi0gIG5lZWRfdmVyc2lvbj15ZXMKLSAgOzsKLQotc3lzdjQgfCBzeXN2NC4zKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBjYXNlICRob3N0X3ZlbmRvciBpbgotICAgIHNuaSkKLSAgICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubwotICAgICAgbmVlZF9saWJfcHJlZml4PW5vCi0gICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR7d2x9LUJsYXJnZWR5bnN5bScKLSAgICAgIHJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRICi0gICAgICA7OwotICAgIHNpZW1lbnMpCi0gICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgICAgIDs7Ci0gICAgbW90b3JvbGEpCi0gICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgICAgIG5lZWRfdmVyc2lvbj1ubwotICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy9saWIgL3Vzci9saWIgL3Vzci9jY3MvbGliJwotICAgICAgOzsKLSAgZXNhYwotICA7OwotCi1zeXN2NCpNUCopCi0gIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KLSAgICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJwotICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICi0gIGZpCi0gIDs7Ci0KLXN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQotICB2ZXJzaW9uX3R5cGU9ZnJlZWJzZC1lbGYKLSAgbmVlZF9saWJfcHJlZml4PW5vCi0gIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0gICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPScvdXNyL2xvY2FsL2xpYiAvdXNyL2dudS9saWIgL3Vzci9jY3MvbGliIC91c3IvbGliIC9saWInCi0gICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0gIGVsc2UKLSAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy91c3IvY2NzL2xpYiAvdXNyL2xpYicKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICAgc2NvMy4ydjUqKQotICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgL2xpYiIKLQk7OwotICAgIGVzYWMKLSAgZmkKLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy91c3IvbGliJwotICA7OwotCi11dHM0KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICA7OwotCi0qKQotICBkeW5hbWljX2xpbmtlcj1ubwotICA7OwotZXNhYwotQUNfTVNHX1JFU1VMVChbJGR5bmFtaWNfbGlua2VyXSkKLXRlc3QgIiRkeW5hbWljX2xpbmtlciIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCi0KLUFDX0NBQ0hFX1ZBTChbbHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXSwKLVtsdF9jdl9zeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiXSkKLXN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKLUFDX0NBQ0hFX1ZBTChbbHRfY3Zfc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNdLAotW2x0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMiXSkKLXN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIkbHRfY3Zfc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMiCi0KLXZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSJQQVRIICRzaGxpYnBhdGhfdmFyICRydW5wYXRoX3ZhciIKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsgR0NDX0VYRUNfUFJFRklYIENPTVBJTEVSX1BBVEggTElCUkFSWV9QQVRIIgotZmkKLV0pIyBBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUgotCi0KLSMgX0xUX0FDX1RBR0NPTkZJRwotIyAtLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX1RBR0NPTkZJR10sCi1bQUNfUkVRVUlSRShbTFRfQUNfUFJPR19TRURdKWRubAotQUNfQVJHX1dJVEgoW3RhZ3NdLAotICAgIFtBQ19IRUxQX1NUUklORyhbLS13aXRoLXRhZ3NAPDpAPVRBR1NAOj5AXSwKLSAgICAgICAgW2luY2x1ZGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9ucyBAPDpAYXV0b21hdGljQDo+QF0pXSwKLSAgICBbdGFnbmFtZXM9IiR3aXRodmFsIl0pCi0KLWlmIHRlc3QgLWYgIiRsdG1haW4iICYmIHRlc3QgLW4gIiR0YWduYW1lcyI7IHRoZW4KLSAgaWYgdGVzdCAhIC1mICIke29maWxlfSI7IHRoZW4KLSAgICBBQ19NU0dfV0FSTihbb3V0cHV0IGZpbGUgYCRvZmlsZScgZG9lcyBub3QgZXhpc3RdKQotICBmaQotCi0gIGlmIHRlc3QgLXogIiRMVENDIjsgdGhlbgotICAgIGV2YWwgImAkU0hFTEwgJHtvZmlsZX0gLS1jb25maWcgfCBncmVwICdeTFRDQz0nYCIKLSAgICBpZiB0ZXN0IC16ICIkTFRDQyI7IHRoZW4KLSAgICAgIEFDX01TR19XQVJOKFtvdXRwdXQgZmlsZSBgJG9maWxlJyBkb2VzIG5vdCBsb29rIGxpa2UgYSBsaWJ0b29sIHNjcmlwdF0pCi0gICAgZWxzZQotICAgICAgQUNfTVNHX1dBUk4oW3VzaW5nIGBMVENDPSRMVENDJywgZXh0cmFjdGVkIGZyb20gYCRvZmlsZSddKQotICAgIGZpCi0gIGZpCi0gIGlmIHRlc3QgLXogIiRMVENGTEFHUyI7IHRoZW4KLSAgICBldmFsICJgJFNIRUxMICR7b2ZpbGV9IC0tY29uZmlnIHwgZ3JlcCAnXkxUQ0ZMQUdTPSdgIgotICBmaQotCi0gICMgRXh0cmFjdCBsaXN0IG9mIGF2YWlsYWJsZSB0YWdnZWQgY29uZmlndXJhdGlvbnMgaW4gJG9maWxlLgotICAjIE5vdGUgdGhhdCB0aGlzIGFzc3VtZXMgdGhlIGVudGlyZSBsaXN0IGlzIG9uIG9uZSBsaW5lLgotICBhdmFpbGFibGVfdGFncz1gZ3JlcCAiXmF2YWlsYWJsZV90YWdzPSIgIiR7b2ZpbGV9IiB8ICRTRUQgLWUgJ3MvYXZhaWxhYmxlX3RhZ3M9XCguKiRcKS9cMS8nIC1lICdzL1wiLy9nJ2AKLQotICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKLSAgZm9yIHRhZ25hbWUgaW4gJHRhZ25hbWVzOyBkbwotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgICMgQ2hlY2sgd2hldGhlciB0YWduYW1lIGNvbnRhaW5zIG9ubHkgdmFsaWQgY2hhcmFjdGVycwotICAgIGNhc2UgYCRlY2hvICJYJHRhZ25hbWUiIHwgJFhzZWQgLWUgJ3M6W1stX0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY3ODkwLC9dXTo6ZydgIGluCi0gICAgIiIpIDs7Ci0gICAgKikgIEFDX01TR19FUlJPUihbaW52YWxpZCB0YWcgbmFtZTogJHRhZ25hbWVdKQotCTs7Ci0gICAgZXNhYwotCi0gICAgaWYgZ3JlcCAiXiMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogJHRhZ25hbWUkIiA8ICIke29maWxlfSIgPiAvZGV2L251bGwKLSAgICB0aGVuCi0gICAgICBBQ19NU0dfRVJST1IoW3RhZyBuYW1lIFwiJHRhZ25hbWVcIiBhbHJlYWR5IGV4aXN0c10pCi0gICAgZmkKLQotICAgICMgVXBkYXRlIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSB0YWdzLgotICAgIGlmIHRlc3QgLW4gIiR0YWduYW1lIjsgdGhlbgotICAgICAgZWNobyBhcHBlbmRpbmcgY29uZmlndXJhdGlvbiB0YWcgXCIkdGFnbmFtZVwiIHRvICRvZmlsZQotCi0gICAgICBjYXNlICR0YWduYW1lIGluCi0gICAgICBDWFgpCi0JaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKLQkgICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8Ci0JICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgotCSAgQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUcKLQllbHNlCi0JICB0YWduYW1lPSIiCi0JZmkKLQk7OwotCi0gICAgICBGNzcpCi0JaWYgdGVzdCAtbiAiJEY3NyIgJiYgdGVzdCAiWCRGNzciICE9ICJYbm8iOyB0aGVuCi0JICBBQ19MSUJUT09MX0xBTkdfRjc3X0NPTkZJRwotCWVsc2UKLQkgIHRhZ25hbWU9IiIKLQlmaQotCTs7Ci0KLSAgICAgIEdDSikKLQlpZiB0ZXN0IC1uICIkR0NKIiAmJiB0ZXN0ICJYJEdDSiIgIT0gIlhubyI7IHRoZW4KLQkgIEFDX0xJQlRPT0xfTEFOR19HQ0pfQ09ORklHCi0JZWxzZQotCSAgdGFnbmFtZT0iIgotCWZpCi0JOzsKLQotICAgICAgUkMpCi0JQUNfTElCVE9PTF9MQU5HX1JDX0NPTkZJRwotCTs7Ci0KLSAgICAgICopCi0JQUNfTVNHX0VSUk9SKFtVbnN1cHBvcnRlZCB0YWcgbmFtZTogJHRhZ25hbWVdKQotCTs7Ci0gICAgICBlc2FjCi0KLSAgICAgICMgQXBwZW5kIHRoZSBuZXcgdGFnIG5hbWUgdG8gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHRhZ3MuCi0gICAgICBpZiB0ZXN0IC1uICIkdGFnbmFtZSIgOyB0aGVuCi0gICAgICBhdmFpbGFibGVfdGFncz0iJGF2YWlsYWJsZV90YWdzICR0YWduYW1lIgotICAgIGZpCi0gICAgZmkKLSAgZG9uZQotICBJRlM9IiRsdF9zYXZlX2lmcyIKLQotICAjIE5vdyBzdWJzdGl0dXRlIHRoZSB1cGRhdGVkIGxpc3Qgb2YgYXZhaWxhYmxlIHRhZ3MuCi0gIGlmIGV2YWwgInNlZCAtZSAncy9eYXZhaWxhYmxlX3RhZ3M9LipcJC9hdmFpbGFibGVfdGFncz1cIiRhdmFpbGFibGVfdGFnc1wiLycgXCIkb2ZpbGVcIiA+IFwiJHtvZmlsZX1UXCIiOyB0aGVuCi0gICAgbXYgIiR7b2ZpbGV9VCIgIiRvZmlsZSIKLSAgICBjaG1vZCAreCAiJG9maWxlIgotICBlbHNlCi0gICAgcm0gLWYgIiR7b2ZpbGV9VCIKLSAgICBBQ19NU0dfRVJST1IoW3VuYWJsZSB0byB1cGRhdGUgbGlzdCBvZiBhdmFpbGFibGUgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zLl0pCi0gIGZpCi1maQotXSkjIF9MVF9BQ19UQUdDT05GSUcKLQotCi0jIEFDX0xJQlRPT0xfRExPUEVOCi0jIC0tLS0tLS0tLS0tLS0tLS0tCi0jIGVuYWJsZSBjaGVja3MgZm9yIGRsb3BlbiBzdXBwb3J0Ci1BQ19ERUZVTihbQUNfTElCVE9PTF9ETE9QRU5dLAotIFtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pCi1dKSMgQUNfTElCVE9PTF9ETE9QRU4KLQotCi0jIEFDX0xJQlRPT0xfV0lOMzJfRExMCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGRlY2xhcmUgcGFja2FnZSBzdXBwb3J0IGZvciBidWlsZGluZyB3aW4zMiBETExzCi1BQ19ERUZVTihbQUNfTElCVE9PTF9XSU4zMl9ETExdLAotW0FDX0JFRk9SRShbJDBdLCBbQUNfTElCVE9PTF9TRVRVUF0pCi1dKSMgQUNfTElCVE9PTF9XSU4zMl9ETEwKLQotCi0jIEFDX0VOQUJMRV9TSEFSRUQoW0RFRkFVTFRdKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1zaGFyZWQgZmxhZwotIyBERUZBVUxUIGlzIGVpdGhlciBgeWVzJyBvciBgbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYHllcycuCi1BQ19ERUZVTihbQUNfRU5BQkxFX1NIQVJFRF0sCi1bZGVmaW5lKFtBQ19FTkFCTEVfU0hBUkVEX0RFRkFVTFRdLCBpZmVsc2UoJDEsIG5vLCBubywgeWVzKSlkbmwKLUFDX0FSR19FTkFCTEUoW3NoYXJlZF0sCi0gICAgW0FDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1zaGFyZWRAPDpAPVBLR1NAOj5AXSwKLQlbYnVpbGQgc2hhcmVkIGxpYnJhcmllcyBAPDpAZGVmYXVsdD1dQUNfRU5BQkxFX1NIQVJFRF9ERUZBVUxUW0A6PkBdKV0sCi0gICAgW3A9JHtQQUNLQUdFLWRlZmF1bHR9Ci0gICAgY2FzZSAkZW5hYmxldmFsIGluCi0gICAgeWVzKSBlbmFibGVfc2hhcmVkPXllcyA7OwotICAgIG5vKSBlbmFibGVfc2hhcmVkPW5vIDs7Ci0gICAgKikKLSAgICAgIGVuYWJsZV9zaGFyZWQ9bm8KLSAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgotICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgotCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCi0JICBlbmFibGVfc2hhcmVkPXllcwotCWZpCi0gICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICAgIDs7Ci0gICAgZXNhY10sCi0gICAgW2VuYWJsZV9zaGFyZWQ9XUFDX0VOQUJMRV9TSEFSRURfREVGQVVMVCkKLV0pIyBBQ19FTkFCTEVfU0hBUkVECi0KLQotIyBBQ19ESVNBQkxFX1NIQVJFRAotIyAtLS0tLS0tLS0tLS0tLS0tLQotIyBzZXQgdGhlIGRlZmF1bHQgc2hhcmVkIGZsYWcgdG8gLS1kaXNhYmxlLXNoYXJlZAotQUNfREVGVU4oW0FDX0RJU0FCTEVfU0hBUkVEXSwKLVtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi1BQ19FTkFCTEVfU0hBUkVEKG5vKQotXSkjIEFDX0RJU0FCTEVfU0hBUkVECi0KLQotIyBBQ19FTkFCTEVfU1RBVElDKFtERUZBVUxUXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGltcGxlbWVudCB0aGUgLS1lbmFibGUtc3RhdGljIGZsYWcKLSMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgotQUNfREVGVU4oW0FDX0VOQUJMRV9TVEFUSUNdLAotW2RlZmluZShbQUNfRU5BQkxFX1NUQVRJQ19ERUZBVUxUXSwgaWZlbHNlKCQxLCBubywgbm8sIHllcykpZG5sCi1BQ19BUkdfRU5BQkxFKFtzdGF0aWNdLAotICAgIFtBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtc3RhdGljQDw6QD1QS0dTQDo+QF0sCi0JW2J1aWxkIHN0YXRpYyBsaWJyYXJpZXMgQDw6QGRlZmF1bHQ9XUFDX0VOQUJMRV9TVEFUSUNfREVGQVVMVFtAOj5AXSldLAotICAgIFtwPSR7UEFDS0FHRS1kZWZhdWx0fQotICAgIGNhc2UgJGVuYWJsZXZhbCBpbgotICAgIHllcykgZW5hYmxlX3N0YXRpYz15ZXMgOzsKLSAgICBubykgZW5hYmxlX3N0YXRpYz1ubyA7OwotICAgICopCi0gICAgIGVuYWJsZV9zdGF0aWM9bm8KLSAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgotICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgotCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCi0JICBlbmFibGVfc3RhdGljPXllcwotCWZpCi0gICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICAgIDs7Ci0gICAgZXNhY10sCi0gICAgW2VuYWJsZV9zdGF0aWM9XUFDX0VOQUJMRV9TVEFUSUNfREVGQVVMVCkKLV0pIyBBQ19FTkFCTEVfU1RBVElDCi0KLQotIyBBQ19ESVNBQkxFX1NUQVRJQwotIyAtLS0tLS0tLS0tLS0tLS0tLQotIyBzZXQgdGhlIGRlZmF1bHQgc3RhdGljIGZsYWcgdG8gLS1kaXNhYmxlLXN0YXRpYwotQUNfREVGVU4oW0FDX0RJU0FCTEVfU1RBVElDXSwKLVtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi1BQ19FTkFCTEVfU1RBVElDKG5vKQotXSkjIEFDX0RJU0FCTEVfU1RBVElDCi0KLQotIyBBQ19FTkFCTEVfRkFTVF9JTlNUQUxMKFtERUZBVUxUXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGltcGxlbWVudCB0aGUgLS1lbmFibGUtZmFzdC1pbnN0YWxsIGZsYWcKLSMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgotQUNfREVGVU4oW0FDX0VOQUJMRV9GQVNUX0lOU1RBTExdLAotW2RlZmluZShbQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTF9ERUZBVUxUXSwgaWZlbHNlKCQxLCBubywgbm8sIHllcykpZG5sCi1BQ19BUkdfRU5BQkxFKFtmYXN0LWluc3RhbGxdLAotICAgIFtBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtZmFzdC1pbnN0YWxsQDw6QD1QS0dTQDo+QF0sCi0gICAgW29wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbiBAPDpAZGVmYXVsdD1dQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTF9ERUZBVUxUW0A6PkBdKV0sCi0gICAgW3A9JHtQQUNLQUdFLWRlZmF1bHR9Ci0gICAgY2FzZSAkZW5hYmxldmFsIGluCi0gICAgeWVzKSBlbmFibGVfZmFzdF9pbnN0YWxsPXllcyA7OwotICAgIG5vKSBlbmFibGVfZmFzdF9pbnN0YWxsPW5vIDs7Ci0gICAgKikKLSAgICAgIGVuYWJsZV9mYXN0X2luc3RhbGw9bm8KLSAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgotICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgotCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCi0JICBlbmFibGVfZmFzdF9pbnN0YWxsPXllcwotCWZpCi0gICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICAgIDs7Ci0gICAgZXNhY10sCi0gICAgW2VuYWJsZV9mYXN0X2luc3RhbGw9XUFDX0VOQUJMRV9GQVNUX0lOU1RBTExfREVGQVVMVCkKLV0pIyBBQ19FTkFCTEVfRkFTVF9JTlNUQUxMCi0KLQotIyBBQ19ESVNBQkxFX0ZBU1RfSU5TVEFMTAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBzZXQgdGhlIGRlZmF1bHQgdG8gLS1kaXNhYmxlLWZhc3QtaW5zdGFsbAotQUNfREVGVU4oW0FDX0RJU0FCTEVfRkFTVF9JTlNUQUxMXSwKLVtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi1BQ19FTkFCTEVfRkFTVF9JTlNUQUxMKG5vKQotXSkjIEFDX0RJU0FCTEVfRkFTVF9JTlNUQUxMCi0KLQotIyBBQ19MSUJUT09MX1BJQ01PREUoW01PREVdKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBpbXBsZW1lbnQgdGhlIC0td2l0aC1waWMgZmxhZwotIyBNT0RFIGlzIGVpdGhlciBgeWVzJyBvciBgbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGJvdGgnLgotQUNfREVGVU4oW0FDX0xJQlRPT0xfUElDTU9ERV0sCi1bQUNfQkVGT1JFKFskMF0sW0FDX0xJQlRPT0xfU0VUVVBdKWRubAotcGljX21vZGU9aWZlbHNlKCQjLDEsJDEsZGVmYXVsdCkKLV0pIyBBQ19MSUJUT09MX1BJQ01PREUKLQotCi0jIEFDX1BST0dfRUdSRVAKLSMgLS0tLS0tLS0tLS0tLQotIyBUaGlzIGlzIHByZWRlZmluZWQgc3RhcnRpbmcgd2l0aCBBdXRvY29uZiAyLjU0LCBzbyB0aGlzIGNvbmRpdGlvbmFsCi0jIGRlZmluaXRpb24gY2FuIGJlIHJlbW92ZWQgb25jZSB3ZSByZXF1aXJlIEF1dG9jb25mIDIuNTQgb3IgbGF0ZXIuCi1tNF9pZm5kZWYoW0FDX1BST0dfRUdSRVBdLCBbQUNfREVGVU4oW0FDX1BST0dfRUdSRVBdLAotW0FDX0NBQ0hFX0NIRUNLKFtmb3IgZWdyZXBdLCBbYWNfY3ZfcHJvZ19lZ3JlcF0sCi0gICBbaWYgZWNobyBhIHwgKGdyZXAgLUUgJyhhfGIpJykgPi9kZXYvbnVsbCAyPiYxCi0gICAgdGhlbiBhY19jdl9wcm9nX2VncmVwPSdncmVwIC1FJwotICAgIGVsc2UgYWNfY3ZfcHJvZ19lZ3JlcD0nZWdyZXAnCi0gICAgZmldKQotIEVHUkVQPSRhY19jdl9wcm9nX2VncmVwCi0gQUNfU1VCU1QoW0VHUkVQXSkKLV0pXSkKLQotCi0jIEFDX1BBVEhfVE9PTF9QUkVGSVgKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBmaW5kIGEgZmlsZSBwcm9ncmFtIHdoaWNoIGNhbiByZWNvZ25pemUgc2hhcmVkIGxpYnJhcnkKLUFDX0RFRlVOKFtBQ19QQVRIX1RPT0xfUFJFRklYXSwKLVtBQ19SRVFVSVJFKFtBQ19QUk9HX0VHUkVQXSlkbmwKLUFDX01TR19DSEVDS0lORyhbZm9yICQxXSkKLUFDX0NBQ0hFX1ZBTChsdF9jdl9wYXRoX01BR0lDX0NNRCwKLVtjYXNlICRNQUdJQ19DTUQgaW4KLVtbXFwvKl0gfCAgPzpbXFwvXSpdKQotICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJE1BR0lDX0NNRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0qKQotICBsdF9zYXZlX01BR0lDX0NNRD0iJE1BR0lDX0NNRCIKLSAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1kbmwgJGFjX2R1bW15IGZvcmNlcyBzcGxpdHRpbmcgb24gY29uc3RhbnQgdXNlci1zdXBwbGllZCBwYXRocy4KLWRubCBQT1NJWC4yIHdvcmQgc3BsaXR0aW5nIGlzIGRvbmUgb25seSBvbiB0aGUgb3V0cHV0IG9mIHdvcmQgZXhwYW5zaW9ucywKLWRubCBub3QgZXZlcnkgd29yZC4gIFRoaXMgY2xvc2VzIGEgbG9uZ3N0YW5kaW5nIHNoIHNlY3VyaXR5IGhvbGUuCi0gIGFjX2R1bW15PSJpZmVsc2UoWyQyXSwgLCAkUEFUSCwgWyQyXSkiCi0gIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICAgaWYgdGVzdCAtZiAkYWNfZGlyLyQxOyB0aGVuCi0gICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJGFjX2Rpci8kMSIKLSAgICAgIGlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX3Rlc3RfZmlsZSI7IHRoZW4KLQljYXNlICRkZXBsaWJzX2NoZWNrX21ldGhvZCBpbgotCSJmaWxlX21hZ2ljICIqKQotCSAgZmlsZV9tYWdpY19yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICJmaWxlX21hZ2ljIFwoLipcKSJgCi0JICBNQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKLQkgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwkZmlsZV9tYWdpY190ZXN0X2ZpbGUgMj4gL2Rldi9udWxsIHwKLQkgICAgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgOgotCSAgZWxzZQotCSAgICBjYXQgPDxFT0YgMT4mMgotCi0qKiogV2FybmluZzogdGhlIGNvbW1hbmQgbGlidG9vbCB1c2VzIHRvIGRldGVjdCBzaGFyZWQgbGlicmFyaWVzLAotKioqICRmaWxlX21hZ2ljX2NtZCwgcHJvZHVjZXMgb3V0cHV0IHRoYXQgbGlidG9vbCBjYW5ub3QgcmVjb2duaXplLgotKioqIFRoZSByZXN1bHQgaXMgdGhhdCBsaWJ0b29sIG1heSBmYWlsIHRvIHJlY29nbml6ZSBzaGFyZWQgbGlicmFyaWVzCi0qKiogYXMgc3VjaC4gIFRoaXMgd2lsbCBhZmZlY3QgdGhlIGNyZWF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzIHRoYXQKLSoqKiBkZXBlbmQgb24gc2hhcmVkIGxpYnJhcmllcywgYnV0IHByb2dyYW1zIGxpbmtlZCB3aXRoIHN1Y2ggbGlidG9vbAotKioqIGxpYnJhcmllcyB3aWxsIHdvcmsgcmVnYXJkbGVzcyBvZiB0aGlzIHByb2JsZW0uICBOZXZlcnRoZWxlc3MsIHlvdQotKioqIG1heSB3YW50IHRvIHJlcG9ydCB0aGUgcHJvYmxlbSB0byB5b3VyIHN5c3RlbSBtYW5hZ2VyIGFuZC9vciB0bwotKioqIGJ1Zy1saWJ0b29sQGdudS5vcmcKLQotRU9GCi0JICBmaSA7OwotCWVzYWMKLSAgICAgIGZpCi0gICAgICBicmVhawotICAgIGZpCi0gIGRvbmUKLSAgSUZTPSIkbHRfc2F2ZV9pZnMiCi0gIE1BR0lDX0NNRD0iJGx0X3NhdmVfTUFHSUNfQ01EIgotICA7OwotZXNhY10pCi1NQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKLWlmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCi0gIEFDX01TR19SRVNVTFQoJE1BR0lDX0NNRCkKLWVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKLWZpCi1dKSMgQUNfUEFUSF9UT09MX1BSRUZJWAotCi0KLSMgQUNfUEFUSF9NQUdJQwotIyAtLS0tLS0tLS0tLS0tCi0jIGZpbmQgYSBmaWxlIHByb2dyYW0gd2hpY2ggY2FuIHJlY29nbml6ZSBhIHNoYXJlZCBsaWJyYXJ5Ci1BQ19ERUZVTihbQUNfUEFUSF9NQUdJQ10sCi1bQUNfUEFUSF9UT09MX1BSRUZJWCgke2FjX3Rvb2xfcHJlZml4fWZpbGUsIC91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgpCi1pZiB0ZXN0IC16ICIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiOyB0aGVuCi0gIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgICBBQ19QQVRIX1RPT0xfUFJFRklYKGZpbGUsIC91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgpCi0gIGVsc2UKLSAgICBNQUdJQ19DTUQ9OgotICBmaQotZmkKLV0pIyBBQ19QQVRIX01BR0lDCi0KLQotIyBBQ19QUk9HX0xECi0jIC0tLS0tLS0tLS0KLSMgZmluZCB0aGUgcGF0aG5hbWUgdG8gdGhlIEdOVSBvciBub24tR05VIGxpbmtlcgotQUNfREVGVU4oW0FDX1BST0dfTERdLAotW0FDX0FSR19XSVRIKFtnbnUtbGRdLAotICAgIFtBQ19IRUxQX1NUUklORyhbLS13aXRoLWdudS1sZF0sCi0JW2Fzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBAPDpAZGVmYXVsdD1ub0A6PkBdKV0sCi0gICAgW3Rlc3QgIiR3aXRodmFsIiA9IG5vIHx8IHdpdGhfZ251X2xkPXllc10sCi0gICAgW3dpdGhfZ251X2xkPW5vXSkKLUFDX1JFUVVJUkUoW0xUX0FDX1BST0dfU0VEXSlkbmwKLUFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAotQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAotQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKLWFjX3Byb2c9bGQKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgotICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsZCB1c2VkIGJ5ICRDQ10pCi0gIGNhc2UgJGhvc3QgaW4KLSAgKi0qLW1pbmd3KikKLSAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gd2hpY2ggdXBzZXRzIG1pbmd3Ci0gICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1IHwgdHIgLWQgJ1wwMTUnYCA7OwotICAqKQotICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNWAgOzsKLSAgZXNhYwotICBjYXNlICRhY19wcm9nIGluCi0gICAgIyBBY2NlcHQgYWJzb2x1dGUgcGF0aHMuCi0gICAgW1tcXC9dXSogfCA/OltbXFwvXV0qKQotICAgICAgcmVfZGlyZWx0PScvW1teL11dW1teL11dKi9cLlwuLycKLSAgICAgICMgQ2Fub25pY2FsaXplIHRoZSBwYXRobmFtZSBvZiBsZAotICAgICAgYWNfcHJvZz1gZWNobyAkYWNfcHJvZ3wgJFNFRCAncyVcXFxcJS8lZydgCi0gICAgICB3aGlsZSBlY2hvICRhY19wcm9nIHwgZ3JlcCAiJHJlX2RpcmVsdCIgPiAvZGV2L251bGwgMj4mMTsgZG8KLQlhY19wcm9nPWBlY2hvICRhY19wcm9nfCAkU0VEICJzJSRyZV9kaXJlbHQlLyUiYAotICAgICAgZG9uZQotICAgICAgdGVzdCAteiAiJExEIiAmJiBMRD0iJGFjX3Byb2ciCi0gICAgICA7OwotICAiIikKLSAgICAjIElmIGl0IGZhaWxzLCB0aGVuIHByZXRlbmQgd2UgYXJlbid0IHVzaW5nIEdDQy4KLSAgICBhY19wcm9nPWxkCi0gICAgOzsKLSAgKikKLSAgICAjIElmIGl0IGlzIHJlbGF0aXZlLCB0aGVuIHNlYXJjaCBmb3IgdGhlIGZpcnN0IGxkIGluIFBBVEguCi0gICAgd2l0aF9nbnVfbGQ9dW5rbm93bgotICAgIDs7Ci0gIGVzYWMKLWVsaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBHTlUgbGRdKQotZWxzZQotICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBub24tR05VIGxkXSkKLWZpCi1BQ19DQUNIRV9WQUwobHRfY3ZfcGF0aF9MRCwKLVtpZiB0ZXN0IC16ICIkTEQiOyB0aGVuCi0gIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgotICBmb3IgYWNfZGlyIGluICRQQVRIOyBkbwotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyIgfHwgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyRhY19leGVleHQiOyB0aGVuCi0gICAgICBsdF9jdl9wYXRoX0xEPSIkYWNfZGlyLyRhY19wcm9nIgotICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlIHByb2dyYW0gaXMgR05VIGxkLiAgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uLAotICAgICAgIyBidXQgYXBwYXJlbnRseSBzb21lIHZhcmlhbnRzIG9mIEdOVSBsZCBvbmx5IGFjY2VwdCAtdi4KLSAgICAgICMgQnJlYWsgb25seSBpZiBpdCB3YXMgdGhlIEdOVS9ub24tR05VIGxkIHRoYXQgd2UgcHJlZmVyLgotICAgICAgY2FzZSBgIiRsdF9jdl9wYXRoX0xEIiAtdiAyPiYxIDwvZGV2L251bGxgIGluCi0gICAgICAqR05VKiB8ICond2l0aCBCRkQnKikKLQl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IG5vICYmIGJyZWFrCi0JOzsKLSAgICAgICopCi0JdGVzdCAiJHdpdGhfZ251X2xkIiAhPSB5ZXMgJiYgYnJlYWsKLQk7OwotICAgICAgZXNhYwotICAgIGZpCi0gIGRvbmUKLSAgSUZTPSIkbHRfc2F2ZV9pZnMiCi1lbHNlCi0gIGx0X2N2X3BhdGhfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi1maV0pCi1MRD0iJGx0X2N2X3BhdGhfTEQiCi1pZiB0ZXN0IC1uICIkTEQiOyB0aGVuCi0gIEFDX01TR19SRVNVTFQoJExEKQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQotZmkKLXRlc3QgLXogIiRMRCIgJiYgQUNfTVNHX0VSUk9SKFtubyBhY2NlcHRhYmxlIGxkIGZvdW5kIGluIFwkUEFUSF0pCi1BQ19QUk9HX0xEX0dOVQotXSkjIEFDX1BST0dfTEQKLQotCi0jIEFDX1BST0dfTERfR05VCi0jIC0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfUFJPR19MRF9HTlVdLAotW0FDX1JFUVVJUkUoW0FDX1BST0dfRUdSRVBdKWRubAotQUNfQ0FDSEVfQ0hFQ0soW2lmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkXSwgbHRfY3ZfcHJvZ19nbnVfbGQsCi1bIyBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24gaGVyZSwgYnV0IGFwcGFyZW50bHkgc29tZSBHTlUgbGRzIG9ubHkgYWNjZXB0IC12LgotY2FzZSBgJExEIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KLSpHTlUqIHwgKid3aXRoIEJGRCcqKQotICBsdF9jdl9wcm9nX2dudV9sZD15ZXMKLSAgOzsKLSopCi0gIGx0X2N2X3Byb2dfZ251X2xkPW5vCi0gIDs7Ci1lc2FjXSkKLXdpdGhfZ251X2xkPSRsdF9jdl9wcm9nX2dudV9sZAotXSkjIEFDX1BST0dfTERfR05VCi0KLQotIyBBQ19QUk9HX0xEX1JFTE9BRF9GTEFHCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgZmluZCByZWxvYWQgZmxhZyBmb3IgbGlua2VyCi0jICAgLS0gUE9SVE1FIFNvbWUgbGlua2VycyBtYXkgbmVlZCBhIGRpZmZlcmVudCByZWxvYWQgZmxhZy4KLUFDX0RFRlVOKFtBQ19QUk9HX0xEX1JFTE9BRF9GTEFHXSwKLVtBQ19DQUNIRV9DSEVDSyhbZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlc10sCi0gIGx0X2N2X2xkX3JlbG9hZF9mbGFnLAotICBbbHRfY3ZfbGRfcmVsb2FkX2ZsYWc9Jy1yJ10pCi1yZWxvYWRfZmxhZz0kbHRfY3ZfbGRfcmVsb2FkX2ZsYWcKLWNhc2UgJHJlbG9hZF9mbGFnIGluCi0iIiB8ICIgIiopIDs7Ci0qKSByZWxvYWRfZmxhZz0iICRyZWxvYWRfZmxhZyIgOzsKLWVzYWMKLXJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLWNhc2UgJGhvc3Rfb3MgaW4KLSAgZGFyd2luKikKLSAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotICAgIGVsc2UKLSAgICAgIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSAgICBmaQotICAgIDs7Ci1lc2FjCi1dKSMgQUNfUFJPR19MRF9SRUxPQURfRkxBRwotCi0KLSMgQUNfREVQTElCU19DSEVDS19NRVRIT0QKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgaG93IHRvIGNoZWNrIGZvciBsaWJyYXJ5IGRlcGVuZGVuY2llcwotIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcwotQUNfREVGVU4oW0FDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EXSwKLVtBQ19DQUNIRV9DSEVDSyhbaG93IHRvIHJlY29nbml6ZSBkZXBlbmRlbnQgbGlicmFyaWVzXSwKLWx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kLAotW2x0X2N2X2ZpbGVfbWFnaWNfY21kPSckTUFHSUNfQ01EJwotbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9Ci1sdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0ndW5rbm93bicKLSMgTmVlZCB0byBzZXQgdGhlIHByZWNlZGluZyB2YXJpYWJsZSBvbiBhbGwgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydAotIyBpbnRlcmxpYnJhcnkgZGVwZW5kZW5jaWVzLgotIyAnbm9uZScgLS0gZGVwZW5kZW5jaWVzIG5vdCBzdXBwb3J0ZWQuCi0jIGB1bmtub3duJyAtLSBzYW1lIGFzIG5vbmUsIGJ1dCBkb2N1bWVudHMgdGhhdCB3ZSByZWFsbHkgZG9uJ3Qga25vdy4KLSMgJ3Bhc3NfYWxsJyAtLSBhbGwgZGVwZW5kZW5jaWVzIHBhc3NlZCB3aXRoIG5vIGNoZWNrcy4KLSMgJ3Rlc3RfY29tcGlsZScgLS0gY2hlY2sgYnkgbWFraW5nIHRlc3QgcHJvZ3JhbS4KLSMgJ2ZpbGVfbWFnaWMgW1tyZWdleF1dJyAtLSBjaGVjayBieSBsb29raW5nIGZvciBmaWxlcyBpbiBsaWJyYXJ5IHBhdGgKLSMgd2hpY2ggcmVzcG9uZHMgdG8gdGhlICRmaWxlX21hZ2ljX2NtZCB3aXRoIGEgZ2l2ZW4gZXh0ZW5kZWQgcmVnZXguCi0jIElmIHlvdSBoYXZlIGBmaWxlJyBvciBlcXVpdmFsZW50IG9uIHlvdXIgc3lzdGVtIGFuZCB5b3UncmUgbm90IHN1cmUKLSMgd2hldGhlciBgcGFzc19hbGwnIHdpbGwgKmFsd2F5cyogd29yaywgeW91IHByb2JhYmx5IHdhbnQgdGhpcyBvbmUuCi0KLWNhc2UgJGhvc3Rfb3MgaW4KLWFpeFtbNC05XV0qKQotICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICA7OwotCi1iZW9zKikKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgOzsKLQotYnNkaVtbNDVdXSopCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTUxdXVNCIChzaGFyZWQgb2JqZWN0fGR5bmFtaWMgbGliKScKLSAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9Jy91c3IvYmluL2ZpbGUgLUwnCi0gIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS9zaGxpYi9saWJjLnNvCi0gIDs7Ci0KLWN5Z3dpbiopCi0gICMgZnVuY193aW4zMl9saWJpZCBpcyBhIHNoZWxsIGZ1bmN0aW9uIGRlZmluZWQgaW4gbHRtYWluLnNoCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICA7OwotCi1taW5ndyogfCBwdzMyKikKLSAgIyBCYXNlIE1TWVMvTWluR1cgZG8gbm90IHByb3ZpZGUgdGhlICdmaWxlJyBjb21tYW5kIG5lZWRlZCBieQotICAjIGZ1bmNfd2luMzJfbGliaWQgc2hlbGwgZnVuY3Rpb24sIHNvIHVzZSBhIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJywKLSAgIyB1bmxlc3Mgd2UgZmluZCAnZmlsZScsIGZvciBleGFtcGxlIGJlY2F1c2Ugd2UgYXJlIGNyb3NzLWNvbXBpbGluZy4KLSAgaWYgKCBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICBlbHNlCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0gICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICBmaQotICA7OwotCi1kYXJ3aW4qIHwgcmhhcHNvZHkqKQotICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICA7OwotCi1mcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCi0gICAgY2FzZSAkaG9zdF9jcHUgaW4KLSAgICBpKjg2ICkKLSAgICAgICMgTm90IHN1cmUgd2hldGhlciB0aGUgcHJlc2VuY2Ugb2YgT3BlbkJTRCBoZXJlIHdhcyBhIG1pc3Rha2UuCi0gICAgICAjIExldCdzIGFjY2VwdCBib3RoIG9mIHRoZW0gdW50aWwgdGhpcyBpcyBjbGVhcmVkIHVwLgotICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKEZyZWVCU0R8T3BlbkJTRHxEcmFnb25GbHkpL2lbWzMtOV1dODYgKGNvbXBhY3QgKT9kZW1hbmQgcGFnZWQgc2hhcmVkIGxpYnJhcnknCi0gICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCi0gICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvdXNyL2xpYi9saWJjLnNvLipgCi0gICAgICA7OwotICAgIGVzYWMKLSAgZWxzZQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gIGZpCi0gIDs7Ci0KLWdudSopCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gIDs7Ci0KLWhwdXgxMC4yMCogfCBocHV4MTEqKQotICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCi0gIGNhc2UgJGhvc3RfY3B1IGluCi0gIGlhNjQqKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzW1swLTldXVtbMC05XV1bWzAtOV1dfEVMRi1bWzAtOV1dW1swLTldXSkgc2hhcmVkIG9iamVjdCBmaWxlIC0gSUE2NCcKLSAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9ocHV4MzIvbGliYy5zbwotICAgIDs7Ci0gIGhwcGEqNjQqKQotICAgIFtsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxFTEYtWzAtOV1bMC05XSkgc2hhcmVkIG9iamVjdCBmaWxlIC0gUEEtUklTQyBbMC05XS5bMC05XSddCi0gICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvcGEyMF82NC9saWJjLnNsCi0gICAgOzsKLSAgKikKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1tbMC05XV1bWzAtOV1dW1swLTldXXxQQS1SSVNDW1swLTldXS5bWzAtOV1dKSBzaGFyZWQgbGlicmFyeScKLSAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJjLnNsCi0gICAgOzsKLSAgZXNhYwotICA7OwotCi1pbnRlcml4W1szLTldXSopCi0gICMgUElDIGNvZGUgaXMgYnJva2VuIG9uIEludGVyaXggMy54LCB0aGF0J3Mgd2h5IHxcLmEgbm90IHxfcGljXC5hIGhlcmUKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb3xcLmEpJCcKLSAgOzsKLQotaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgY2FzZSAkTEQgaW4KLSAgKi0zMnwqIi0zMiAiKSBsaWJtYWdpYz0zMi1iaXQ7OwotICAqLW4zMnwqIi1uMzIgIikgbGlibWFnaWM9TjMyOzsKLSAgKi02NHwqIi02NCAiKSBsaWJtYWdpYz02NC1iaXQ7OwotICAqKSBsaWJtYWdpYz1uZXZlci1tYXRjaDs7Ci0gIGVzYWMKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgOzsKLQotIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotbGludXgqIHwgaypic2QqLWdudSkKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgOzsKLQotbmV0YnNkKikKLSAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW1teL11dKyhcLnNvXC5bWzAtOV1dK1wuW1swLTldXSt8X3BpY1wuYSkkJwotICBlbHNlCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb3xfcGljXC5hKSQnCi0gIGZpCi0gIDs7Ci0KLW5ld29zNiopCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTUxdXVNCIChleGVjdXRhYmxlfGR5bmFtaWMgbGliKScKLSAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQotICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJubHMuc28KLSAgOzsKLQotbnRvLXFueCopCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAgOzsKLQotb3BlbmJzZCopCi0gIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xcLnNvfF9waWNcLmEpJCcKLSAgZWxzZQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xfcGljXC5hKSQnCi0gIGZpCi0gIDs7Ci0KLW9zZjMqIHwgb3NmNCogfCBvc2Y1KikKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgOzsKLQotcmRvcyopCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gIDs7Ci0KLXNvbGFyaXMqKQotICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICA7OwotCi1zeXN2NCB8IHN5c3Y0LjMqKQotICBjYXNlICRob3N0X3ZlbmRvciBpbgotICBtb3Rvcm9sYSkKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBFTEYgW1swLTldXVtbMC05XV0qLWJpdCBbW01MXV1TQiAoc2hhcmVkIG9iamVjdHxkeW5hbWljIGxpYikgTVtbMC05XV1bWzAtOV1dKiBWZXJzaW9uIFtbMC05XV0nCi0gICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL3Vzci9saWIvbGliYy5zbypgCi0gICAgOzsKLSAgbmNyKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gICAgOzsKLSAgc2VxdWVudCkKLSAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nL2Jpbi9maWxlJwotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTE1dXVNCIChzaGFyZWQgb2JqZWN0fGR5bmFtaWMgbGliICknCi0gICAgOzsKLSAgc25pKQotICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPScvYmluL2ZpbGUnCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9ImZpbGVfbWFnaWMgRUxGIFtbMC05XV1bWzAtOV1dKi1iaXQgW1tMTV1dU0IgZHluYW1pYyBsaWIiCi0gICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L2xpYi9saWJjLnNvCi0gICAgOzsKLSAgc2llbWVucykKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICAgIDs7Ci0gIHBjKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gICAgOzsKLSAgZXNhYwotICA7OwotCi1zeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgOzsKLWVzYWMKLV0pCi1maWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLWRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1dKSMgQUNfREVQTElCU19DSEVDS19NRVRIT0QKLQotCi0jIEFDX1BST0dfTk0KLSMgLS0tLS0tLS0tLQotIyBmaW5kIHRoZSBwYXRobmFtZSB0byBhIEJTRC1jb21wYXRpYmxlIG5hbWUgbGlzdGVyCi1BQ19ERUZVTihbQUNfUFJPR19OTV0sCi1bQUNfQ0FDSEVfQ0hFQ0soW2ZvciBCU0QtY29tcGF0aWJsZSBubV0sIGx0X2N2X3BhdGhfTk0sCi1baWYgdGVzdCAtbiAiJE5NIjsgdGhlbgotICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLSAgbHRfY3ZfcGF0aF9OTT0iJE5NIgotZWxzZQotICBsdF9ubV90b19jaGVjaz0iJHthY190b29sX3ByZWZpeH1ubSIKLSAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IiAmJiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotICAgIGx0X25tX3RvX2NoZWNrPSIkbHRfbm1fdG9fY2hlY2sgbm0iCi0gIGZpCi0gIGZvciBsdF90bXBfbm0gaW4gJGx0X25tX3RvX2NoZWNrOyBkbwotICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgotICAgIGZvciBhY19kaXIgaW4gJFBBVEggL3Vzci9jY3MvYmluL2VsZiAvdXNyL2Njcy9iaW4gL3Vzci91Y2IgL2JpbjsgZG8KLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgICAgIHRtcF9ubT0iJGFjX2Rpci8kbHRfdG1wX25tIgotICAgICAgaWYgdGVzdCAtZiAiJHRtcF9ubSIgfHwgdGVzdCAtZiAiJHRtcF9ubSRhY19leGVleHQiIDsgdGhlbgotCSMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBubSBhY2NlcHRzIGEgQlNELWNvbXBhdCBmbGFnLgotCSMgQWRkaW5nIHRoZSBgc2VkIDFxJyBwcmV2ZW50cyBmYWxzZSBwb3NpdGl2ZXMgb24gSFAtVVgsIHdoaWNoIHNheXM6Ci0JIyAgIG5tOiB1bmtub3duIG9wdGlvbiAiQiIgaWdub3JlZAotCSMgVHJ1NjQncyBubSBjb21wbGFpbnMgdGhhdCAvZGV2L251bGwgaXMgYW4gaW52YWxpZCBvYmplY3QgZmlsZQotCWNhc2UgYCIkdG1wX25tIiAtQiAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgotCSovZGV2L251bGwqIHwgKidJbnZhbGlkIGZpbGUgb3Igb2JqZWN0IHR5cGUnKikKLQkgIGx0X2N2X3BhdGhfTk09IiR0bXBfbm0gLUIiCi0JICBicmVhawotCSAgOzsKLQkqKQotCSAgY2FzZSBgIiR0bXBfbm0iIC1wIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCi0JICAqL2Rldi9udWxsKikKLQkgICAgbHRfY3ZfcGF0aF9OTT0iJHRtcF9ubSAtcCIKLQkgICAgYnJlYWsKLQkgICAgOzsKLQkgICopCi0JICAgIGx0X2N2X3BhdGhfTk09JHtsdF9jdl9wYXRoX05NPSIkdG1wX25tIn0gIyBrZWVwIHRoZSBmaXJzdCBtYXRjaCwgYnV0Ci0JICAgIGNvbnRpbnVlICMgc28gdGhhdCB3ZSBjYW4gdHJ5IHRvIGZpbmQgb25lIHRoYXQgc3VwcG9ydHMgQlNEIGZsYWdzCi0JICAgIDs7Ci0JICBlc2FjCi0JICA7OwotCWVzYWMKLSAgICAgIGZpCi0gICAgZG9uZQotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICBkb25lCi0gIHRlc3QgLXogIiRsdF9jdl9wYXRoX05NIiAmJiBsdF9jdl9wYXRoX05NPW5tCi1maV0pCi1OTT0iJGx0X2N2X3BhdGhfTk0iCi1dKSMgQUNfUFJPR19OTQotCi0KLSMgQUNfQ0hFQ0tfTElCTQotIyAtLS0tLS0tLS0tLS0tCi0jIGNoZWNrIGZvciBtYXRoIGxpYnJhcnkKLUFDX0RFRlVOKFtBQ19DSEVDS19MSUJNXSwKLVtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCi1MSUJNPQotY2FzZSAkaG9zdCBpbgotKi0qLWJlb3MqIHwgKi0qLWN5Z3dpbiogfCAqLSotcHczMiogfCAqLSotZGFyd2luKikKLSAgIyBUaGVzZSBzeXN0ZW0gZG9uJ3QgaGF2ZSBsaWJtLCBvciBkb24ndCBuZWVkIGl0Ci0gIDs7Ci0qLW5jci1zeXN2NC4zKikKLSAgQUNfQ0hFQ0tfTElCKG13LCBfbXd2YWxpZGNoZWNrbCwgTElCTT0iLWxtdyIpCi0gIEFDX0NIRUNLX0xJQihtLCBjb3MsIExJQk09IiRMSUJNIC1sbSIpCi0gIDs7Ci0qKQotICBBQ19DSEVDS19MSUIobSwgY29zLCBMSUJNPSItbG0iKQotICA7OwotZXNhYwotXSkjIEFDX0NIRUNLX0xJQk0KLQotCi0jIEFDX0xJQkxURExfQ09OVkVOSUVOQ0UoW0RJUkVDVE9SWV0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHNldHMgTElCTFRETCB0byB0aGUgbGluayBmbGFncyBmb3IgdGhlIGxpYmx0ZGwgY29udmVuaWVuY2UgbGlicmFyeSBhbmQKLSMgTFRETElOQ0wgdG8gdGhlIGluY2x1ZGUgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGhlYWRlciBhbmQgYWRkcwotIyAtLWVuYWJsZS1sdGRsLWNvbnZlbmllbmNlIHRvIHRoZSBjb25maWd1cmUgYXJndW1lbnRzLiAgTm90ZSB0aGF0Ci0jIEFDX0NPTkZJR19TVUJESVJTIGlzIG5vdCBjYWxsZWQgaGVyZS4gIElmIERJUkVDVE9SWSBpcyBub3QgcHJvdmlkZWQsCi0jIGl0IGlzIGFzc3VtZWQgdG8gYmUgYGxpYmx0ZGwnLiAgTElCTFRETCB3aWxsIGJlIHByZWZpeGVkIHdpdGgKLSMgJyR7dG9wX2J1aWxkZGlyfS8nIGFuZCBMVERMSU5DTCB3aWxsIGJlIHByZWZpeGVkIHdpdGggJyR7dG9wX3NyY2Rpcn0vJwotIyAobm90ZSB0aGUgc2luZ2xlIHF1b3RlcyEpLiAgSWYgeW91ciBwYWNrYWdlIGlzIG5vdCBmbGF0IGFuZCB5b3UncmUgbm90Ci0jIHVzaW5nIGF1dG9tYWtlLCBkZWZpbmUgdG9wX2J1aWxkZGlyIGFuZCB0b3Bfc3JjZGlyIGFwcHJvcHJpYXRlbHkgaW4KLSMgdGhlIE1ha2VmaWxlcy4KLUFDX0RFRlVOKFtBQ19MSUJMVERMX0NPTlZFTklFTkNFXSwKLVtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi0gIGNhc2UgJGVuYWJsZV9sdGRsX2NvbnZlbmllbmNlIGluCi0gIG5vKSBBQ19NU0dfRVJST1IoW3RoaXMgcGFja2FnZSBuZWVkcyBhIGNvbnZlbmllbmNlIGxpYmx0ZGxdKSA7OwotICAiIikgZW5hYmxlX2x0ZGxfY29udmVuaWVuY2U9eWVzCi0gICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWx0ZGwtY29udmVuaWVuY2UiIDs7Ci0gIGVzYWMKLSAgTElCTFRETD0nJHt0b3BfYnVpbGRkaXJ9LydpZmVsc2UoJCMsMSxbJDFdLFsnbGlibHRkbCddKS9saWJsdGRsYy5sYQotICBMVERMSU5DTD0nLUkke3RvcF9zcmNkaXJ9LydpZmVsc2UoJCMsMSxbJDFdLFsnbGlibHRkbCddKQotICAjIEZvciBiYWNrd2FyZHMgbm9uLWdldHRleHQgY29uc2lzdGVudCBjb21wYXRpYmlsaXR5Li4uCi0gIElOQ0xUREw9IiRMVERMSU5DTCIKLV0pIyBBQ19MSUJMVERMX0NPTlZFTklFTkNFCi0KLQotIyBBQ19MSUJMVERMX0lOU1RBTExBQkxFKFtESVJFQ1RPUlldKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBzZXRzIExJQkxUREwgdG8gdGhlIGxpbmsgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGluc3RhbGxhYmxlIGxpYnJhcnkgYW5kCi0jIExURExJTkNMIHRvIHRoZSBpbmNsdWRlIGZsYWdzIGZvciB0aGUgbGlibHRkbCBoZWFkZXIgYW5kIGFkZHMKLSMgLS1lbmFibGUtbHRkbC1pbnN0YWxsIHRvIHRoZSBjb25maWd1cmUgYXJndW1lbnRzLiAgTm90ZSB0aGF0Ci0jIEFDX0NPTkZJR19TVUJESVJTIGlzIG5vdCBjYWxsZWQgaGVyZS4gIElmIERJUkVDVE9SWSBpcyBub3QgcHJvdmlkZWQsCi0jIGFuZCBhbiBpbnN0YWxsZWQgbGlibHRkbCBpcyBub3QgZm91bmQsIGl0IGlzIGFzc3VtZWQgdG8gYmUgYGxpYmx0ZGwnLgotIyBMSUJMVERMIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAnJHt0b3BfYnVpbGRkaXJ9LycjIGFuZCBMVERMSU5DTCB3aXRoCi0jICcke3RvcF9zcmNkaXJ9LycgKG5vdGUgdGhlIHNpbmdsZSBxdW90ZXMhKS4gIElmIHlvdXIgcGFja2FnZSBpcyBub3QKLSMgZmxhdCBhbmQgeW91J3JlIG5vdCB1c2luZyBhdXRvbWFrZSwgZGVmaW5lIHRvcF9idWlsZGRpciBhbmQgdG9wX3NyY2RpcgotIyBhcHByb3ByaWF0ZWx5IGluIHRoZSBNYWtlZmlsZXMuCi0jIEluIHRoZSBmdXR1cmUsIHRoaXMgbWFjcm8gbWF5IGhhdmUgdG8gYmUgY2FsbGVkIGFmdGVyIEFDX1BST0dfTElCVE9PTC4KLUFDX0RFRlVOKFtBQ19MSUJMVERMX0lOU1RBTExBQkxFXSwKLVtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi0gIEFDX0NIRUNLX0xJQihsdGRsLCBsdF9kbGluaXQsCi0gIFt0ZXN0IHgiJGVuYWJsZV9sdGRsX2luc3RhbGwiICE9IHh5ZXMgJiYgZW5hYmxlX2x0ZGxfaW5zdGFsbD1ub10sCi0gIFtpZiB0ZXN0IHgiJGVuYWJsZV9sdGRsX2luc3RhbGwiID0geG5vOyB0aGVuCi0gICAgIEFDX01TR19XQVJOKFtsaWJsdGRsIG5vdCBpbnN0YWxsZWQsIGJ1dCBpbnN0YWxsYXRpb24gZGlzYWJsZWRdKQotICAgZWxzZQotICAgICBlbmFibGVfbHRkbF9pbnN0YWxsPXllcwotICAgZmkKLSAgXSkKLSAgaWYgdGVzdCB4IiRlbmFibGVfbHRkbF9pbnN0YWxsIiA9IHgieWVzIjsgdGhlbgotICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgLS1lbmFibGUtbHRkbC1pbnN0YWxsIgotICAgIExJQkxUREw9JyR7dG9wX2J1aWxkZGlyfS8naWZlbHNlKCQjLDEsWyQxXSxbJ2xpYmx0ZGwnXSkvbGlibHRkbC5sYQotICAgIExURExJTkNMPSctSSR7dG9wX3NyY2Rpcn0vJ2lmZWxzZSgkIywxLFskMV0sWydsaWJsdGRsJ10pCi0gIGVsc2UKLSAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWx0ZGwtaW5zdGFsbD1ubyIKLSAgICBMSUJMVERMPSItbGx0ZGwiCi0gICAgTFRETElOQ0w9Ci0gIGZpCi0gICMgRm9yIGJhY2t3YXJkcyBub24tZ2V0dGV4dCBjb25zaXN0ZW50IGNvbXBhdGliaWxpdHkuLi4KLSAgSU5DTFRETD0iJExURExJTkNMIgotXSkjIEFDX0xJQkxURExfSU5TVEFMTEFCTEUKLQotCi0jIEFDX0xJQlRPT0xfQ1hYCi0jIC0tLS0tLS0tLS0tLS0tCi0jIGVuYWJsZSBzdXBwb3J0IGZvciBDKysgbGlicmFyaWVzCi1BQ19ERUZVTihbQUNfTElCVE9PTF9DWFhdLAotW0FDX1JFUVVJUkUoW19MVF9BQ19MQU5HX0NYWF0pCi1dKSMgQUNfTElCVE9PTF9DWFgKLQotCi0jIF9MVF9BQ19MQU5HX0NYWAotIyAtLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtfTFRfQUNfTEFOR19DWFhdLAotW0FDX1JFUVVJUkUoW0FDX1BST0dfQ1hYXSkKLUFDX1JFUVVJUkUoW19MVF9BQ19QUk9HX0NYWENQUF0pCi1fTFRfQUNfU0hFTExfSU5JVChbdGFnbmFtZXM9JHt0YWduYW1lcyske3RhZ25hbWVzfSx9Q1hYXSkKLV0pIyBfTFRfQUNfTEFOR19DWFgKLQotIyBfTFRfQUNfUFJPR19DWFhDUFAKLSMgLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX1BST0dfQ1hYQ1BQXSwKLVsKLUFDX1JFUVVJUkUoW0FDX1BST0dfQ1hYXSkKLWlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCAiWCRDWFgiICE9ICJYbm8iICYmCi0gICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8Ci0gICAgKHRlc3QgIlgkQ1hYIiAhPSAiWGcrKyIpKSkgOyB0aGVuCi0gIEFDX1BST0dfQ1hYQ1BQCi1maQotXSkjIF9MVF9BQ19QUk9HX0NYWENQUAotCi0jIEFDX0xJQlRPT0xfRjc3Ci0jIC0tLS0tLS0tLS0tLS0tCi0jIGVuYWJsZSBzdXBwb3J0IGZvciBGb3J0cmFuIDc3IGxpYnJhcmllcwotQUNfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwKLVtBQ19SRVFVSVJFKFtfTFRfQUNfTEFOR19GNzddKQotXSkjIEFDX0xJQlRPT0xfRjc3Ci0KLQotIyBfTFRfQUNfTEFOR19GNzcKLSMgLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX0xBTkdfRjc3XSwKLVtBQ19SRVFVSVJFKFtBQ19QUk9HX0Y3N10pCi1fTFRfQUNfU0hFTExfSU5JVChbdGFnbmFtZXM9JHt0YWduYW1lcyske3RhZ25hbWVzfSx9Rjc3XSkKLV0pIyBfTFRfQUNfTEFOR19GNzcKLQotCi0jIEFDX0xJQlRPT0xfR0NKCi0jIC0tLS0tLS0tLS0tLS0tCi0jIGVuYWJsZSBzdXBwb3J0IGZvciBHQ0ogbGlicmFyaWVzCi1BQ19ERUZVTihbQUNfTElCVE9PTF9HQ0pdLAotW0FDX1JFUVVJUkUoW19MVF9BQ19MQU5HX0dDSl0pCi1dKSMgQUNfTElCVE9PTF9HQ0oKLQotCi0jIF9MVF9BQ19MQU5HX0dDSgotIyAtLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtfTFRfQUNfTEFOR19HQ0pdLAotW0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0dDSl0sW10sCi0gIFtBQ19QUk9WSURFX0lGRUxTRShbQV1bTV9QUk9HX0dDSl0sW10sCi0gICAgW0FDX1BST1ZJREVfSUZFTFNFKFtMVF9BQ19QUk9HX0dDSl0sW10sCi0gICAgICBbaWZkZWYoW0FDX1BST0dfR0NKXSxbQUNfUkVRVUlSRShbQUNfUFJPR19HQ0pdKV0sCi0JIFtpZmRlZihbQV1bTV9QUk9HX0dDSl0sW0FDX1JFUVVJUkUoW0FdW01fUFJPR19HQ0pdKV0sCi0JICAgW0FDX1JFUVVJUkUoW0FdW0NfUFJPR19HQ0pfT1JfQV1bTV9QUk9HX0dDSl0pXSldKV0pXSldKQotX0xUX0FDX1NIRUxMX0lOSVQoW3RhZ25hbWVzPSR7dGFnbmFtZXMrJHt0YWduYW1lc30sfUdDSl0pCi1dKSMgX0xUX0FDX0xBTkdfR0NKCi0KLQotIyBBQ19MSUJUT09MX1JDCi0jIC0tLS0tLS0tLS0tLS0KLSMgZW5hYmxlIHN1cHBvcnQgZm9yIFdpbmRvd3MgcmVzb3VyY2UgZmlsZXMKLUFDX0RFRlVOKFtBQ19MSUJUT09MX1JDXSwKLVtBQ19SRVFVSVJFKFtMVF9BQ19QUk9HX1JDXSkKLV9MVF9BQ19TSEVMTF9JTklUKFt0YWduYW1lcz0ke3RhZ25hbWVzKyR7dGFnbmFtZXN9LH1SQ10pCi1dKSMgQUNfTElCVE9PTF9SQwotCi0KLSMgQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJzIGZvciB0aGUgQyBjb21waWxlciBhcmUKLSMgc3VpdGFibHkgZGVmaW5lZC4gIFRob3NlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkKLSMgQUNfTElCVE9PTF9DT05GSUcgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgotQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19DX0NPTkZJR10sIFtfTFRfQUNfTEFOR19DX0NPTkZJR10pCi1BQ19ERUZVTihbX0xUX0FDX0xBTkdfQ19DT05GSUddLAotW2x0X3NhdmVfQ0M9IiRDQyIKLUFDX0xBTkdfUFVTSChDKQotCi0jIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgQyB0ZXN0IHNvdXJjZXMuCi1hY19leHQ9YwotCi0jIE9iamVjdCBmaWxlIGV4dGVuc2lvbiBmb3IgY29tcGlsZWQgQyB0ZXN0IHNvdXJjZXMuCi1vYmpleHQ9bwotX0xUX0FDX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0Ci0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCi1sdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9ImludCBzb21lX3ZhcmlhYmxlID0gMDsiCi0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCi1sdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J2ludCBtYWluKCl7cmV0dXJuKDApO30nCi0KLV9MVF9BQ19TWVNfQ09NUElMRVIKLQotIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKLV9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQotX0xUX0xJTktFUl9CT0lMRVJQTEFURQotCi1BQ19MSUJUT09MX1BST0dfQ09NUElMRVJfTk9fUlRUSSgkMSkKLUFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMoJDEpCi1BQ19MSUJUT09MX1BST0dfQ0NfQ19PKCQxKQotQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUygkMSkKLUFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgoJDEpCi1BQ19MSUJUT09MX1NZU19MSUJfU1RSSVAKLUFDX0xJQlRPT0xfRExPUEVOX1NFTEYKLQotIyBSZXBvcnQgd2hpY2ggbGlicmFyeSB0eXBlcyB3aWxsIGFjdHVhbGx5IGJlIGJ1aWx0Ci1BQ19NU0dfQ0hFQ0tJTkcoW2lmIGxpYnRvb2wgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCi1BQ19NU0dfUkVTVUxUKFskY2FuX2J1aWxkX3NoYXJlZF0pCi0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzXSkKLXRlc3QgIiRjYW5fYnVpbGRfc2hhcmVkIiA9ICJubyIgJiYgZW5hYmxlX3NoYXJlZD1ubwotCi0jIE9uIEFJWCwgc2hhcmVkIGxpYnJhcmllcyBhbmQgc3RhdGljIGxpYnJhcmllcyB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlLCBhbmQKLSMgYXJlIGFsbCBidWlsdCBmcm9tIFBJQy4KLWNhc2UgJGhvc3Rfb3MgaW4KLWFpeDMqKQotICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubwotICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgotICAgIGFyY2hpdmVfY21kcz0iJGFyY2hpdmVfY21kc35cJFJBTkxJQiBcJGxpYiIKLSAgICBwb3N0aW5zdGFsbF9jbWRzPSckUkFOTElCICRsaWInCi0gIGZpCi0gIDs7Ci0KLWFpeFtbNC05XV0qKQotICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQgJiYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0gbm8gOyB0aGVuCi0gICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KLSAgZmkKLSAgICA7OwotZXNhYwotQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zaGFyZWRdKQotCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllc10pCi0jIE1ha2Ugc3VyZSBlaXRoZXIgZW5hYmxlX3NoYXJlZCBvciBlbmFibGVfc3RhdGljIGlzIHllcy4KLXRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyB8fCBlbmFibGVfc3RhdGljPXllcwotQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zdGF0aWNdKQotCi1BQ19MSUJUT09MX0NPTkZJRygkMSkKLQotQUNfTEFOR19QT1AKLUNDPSIkbHRfc2F2ZV9DQyIKLV0pIyBBQ19MSUJUT09MX0xBTkdfQ19DT05GSUcKLQotCi0jIEFDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcnMgZm9yIHRoZSBDIGNvbXBpbGVyIGFyZQotIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhvc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieQotIyBBQ19MSUJUT09MX0NPTkZJRyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUddLCBbX0xUX0FDX0xBTkdfQ1hYX0NPTkZJRyhDWFgpXSkKLUFDX0RFRlVOKFtfTFRfQUNfTEFOR19DWFhfQ09ORklHXSwKLVtBQ19MQU5HX1BVU0goQysrKQotQUNfUkVRVUlSRShbQUNfUFJPR19DWFhdKQotQUNfUkVRVUlSRShbX0xUX0FDX1BST0dfQ1hYQ1BQXSkKLQotX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0KLV9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQotX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwotX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKLV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KLV9MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0KLV9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCi1fTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcwotX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQotX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQotX0xUX0FDX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KLQotIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKLV9MVF9BQ19UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0KLV9MVF9BQ19UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKHByZWRlcHMsICQxKT0KLV9MVF9BQ19UQUdWQVIocG9zdGRlcHMsICQxKT0KLV9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlycywgJDEpPQotCi0jIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgQysrIHRlc3Qgc291cmNlcy4KLWFjX2V4dD1jcHAKLQotIyBPYmplY3QgZmlsZSBleHRlbnNpb24gZm9yIGNvbXBpbGVkIEMrKyB0ZXN0IHNvdXJjZXMuCi1vYmpleHQ9bwotX0xUX0FDX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0Ci0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCi1sdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9ImludCBzb21lX3ZhcmlhYmxlID0gMDsiCi0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCi1sdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J2ludCBtYWluKGludCwgY2hhciAqW1tdXSkgeyByZXR1cm4oMCk7IH0nCi0KLSMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KLV9MVF9BQ19TWVNfQ09NUElMRVIKLQotIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKLV9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQotX0xUX0xJTktFUl9CT0lMRVJQTEFURQotCi0jIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotbHRfc2F2ZV9DQz0kQ0MKLWx0X3NhdmVfTEQ9JExECi1sdF9zYXZlX0dDQz0kR0NDCi1HQ0M9JEdYWAotbHRfc2F2ZV93aXRoX2dudV9sZD0kd2l0aF9nbnVfbGQKLWx0X3NhdmVfcGF0aF9MRD0kbHRfY3ZfcGF0aF9MRAotaWYgdGVzdCAtbiAiJHtsdF9jdl9wcm9nX2dudV9sZGN4eCtzZXR9IjsgdGhlbgotICBsdF9jdl9wcm9nX2dudV9sZD0kbHRfY3ZfcHJvZ19nbnVfbGRjeHgKLWVsc2UKLSAgJGFzX3Vuc2V0IGx0X2N2X3Byb2dfZ251X2xkCi1maQotaWYgdGVzdCAtbiAiJHtsdF9jdl9wYXRoX0xEQ1hYK3NldH0iOyB0aGVuCi0gIGx0X2N2X3BhdGhfTEQ9JGx0X2N2X3BhdGhfTERDWFgKLWVsc2UKLSAgJGFzX3Vuc2V0IGx0X2N2X3BhdGhfTEQKLWZpCi10ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAotQ0M9JHtDWFgtImMrKyJ9Ci1jb21waWxlcj0kQ0MKLV9MVF9BQ19UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLV9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLQotIyBXZSBkb24ndCB3YW50IC1mbm8tZXhjZXB0aW9uIHdlbiBjb21waWxpbmcgQysrIGNvZGUsIHNvIHNldCB0aGUKLSMgbm9fYnVpbHRpbl9mbGFnIHNlcGFyYXRlbHkKLWlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicKLWVsc2UKLSAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPQotZmkKLQotaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLSAgIyBTZXQgdXAgZGVmYXVsdCBHTlUgQysrIGNvbmZpZ3VyYXRpb24KLQotICBBQ19QUk9HX0xECi0KLSAgIyBDaGVjayBpZiBHTlUgQysrIHVzZXMgR05VIGxkIGFzIHRoZSB1bmRlcmx5aW5nIGxpbmtlciwgc2luY2UgdGhlCi0gICMgYXJjaGl2aW5nIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGF0IEdOVSBsZCBpcyBiZWluZyB1c2VkLgotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0gICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0KLSAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0KLSAgICAjIElmIGFyY2hpdmVfY21kcyBydW5zIExELCBub3QgQ0MsIHdsYXJjIHNob3VsZCBiZSBlbXB0eQotICAgICMgWFhYIEkgdGhpbmsgd2xhcmMgY2FuIGJlIGVsaW1pbmF0ZWQgaW4gbHRjZi1jeHgsIGJ1dCBJIG5lZWQgdG8KLSAgICAjICAgICBpbnZlc3RpZ2F0ZSBpdCBhIGxpdHRsZSBiaXQgbW9yZS4gKE1NKQotICAgIHdsYXJjPScke3dsfScKLQotICAgICMgYW5jaWVudCBHTlUgbGQgZGlkbid0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlIGV0LiBhbC4KLSAgICBpZiBldmFsICJgJENDIC1wcmludC1wcm9nLW5hbWU9bGRgIC0taGVscCAyPiYxIiB8IFwKLQlncmVwICduby13aG9sZS1hcmNoaXZlJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJwotICAgIGVsc2UKLSAgICAgIF9MVF9BQ19UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KLSAgICBmaQotICBlbHNlCi0gICAgd2l0aF9nbnVfbGQ9bm8KLSAgICB3bGFyYz0KLQotICAgICMgQSBnZW5lcmljIGFuZCB2ZXJ5IHNpbXBsZSBkZWZhdWx0IHNoYXJlZCBsaWJyYXJ5IGNyZWF0aW9uCi0gICAgIyBjb21tYW5kIGZvciBHTlUgQysrIGZvciB0aGUgY2FzZSB3aGVyZSBpdCB1c2VzIHRoZSBuYXRpdmUKLSAgICAjIGxpbmtlciwgaW5zdGVhZCBvZiBHTlUgbGQuICBJZiBwb3NzaWJsZSwgdGhpcyBzZXR0aW5nIHNob3VsZAotICAgICMgb3ZlcnJpZGRlbiB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgbmF0aXZlIGxpbmtlciBmZWF0dXJlcyBvbgotICAgICMgdGhlIHBsYXRmb3JtIGl0IGlzIGJlaW5nIHVzZWQgb24uCi0gICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkbGliJwotICBmaQotCi0gICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLSAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi0gICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCBncmVwICJcLUwiJwotCi1lbHNlCi0gIEdYWD1ubwotICB3aXRoX2dudV9sZD1ubwotICB3bGFyYz0KLWZpCi0KLSMgUE9SVE1FOiBmaWxsIGluIGEgZGVzY3JpcHRpb24gb2YgeW91ciBzeXN0ZW0ncyBDKysgbGluayBjaGFyYWN0ZXJpc3RpY3MKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKLV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCi1jYXNlICRob3N0X29zIGluCi0gIGFpeDMqKQotICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICA7OwotICBhaXhbWzQtOV1dKikKLSAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotICAgICAgIyBPbiBJQTY0LCB0aGUgbGlua2VyIGRvZXMgcnVuIHRpbWUgbGlua2luZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndAotICAgICAgIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCi0gICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCi0gICAgICBleHBfc3ltX2ZsYWc9Jy1CZXhwb3J0JwotICAgICAgbm9fZW50cnlfZmxhZz0iIgotICAgIGVsc2UKLSAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLQotICAgICAgIyBUZXN0IGlmIHdlIGFyZSB0cnlpbmcgdG8gdXNlIHJ1biB0aW1lIGxpbmtpbmcgb3Igbm9ybWFsCi0gICAgICAjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKLSAgICAgICMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCi0gICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuW1syM11dfGFpeDQuW1syM11dLip8YWl4W1s1LTldXSopCi0JZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCi0JICBjYXNlICRsZF9mbGFnIGluCi0JICAqLWJydGwqKQotCSAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcwotCSAgICBicmVhawotCSAgICA7OwotCSAgZXNhYwotCWRvbmUKLQk7OwotICAgICAgZXNhYwotCi0gICAgICBleHBfc3ltX2ZsYWc9Jy1iZXhwb3J0JwotICAgICAgbm9fZW50cnlfZmxhZz0nLWJub2VudHJ5JwotICAgIGZpCi0KLSAgICAjIFdoZW4gbGFyZ2UgZXhlY3V0YWJsZXMgb3Igc2hhcmVkIG9iamVjdHMgYXJlIGJ1aWx0LCBBSVggbGQgY2FuCi0gICAgIyBoYXZlIHByb2JsZW1zIGNyZWF0aW5nIHRoZSB0YWJsZSBvZiBjb250ZW50cy4gIElmIGxpbmtpbmcgYSBsaWJyYXJ5Ci0gICAgIyBvciBwcm9ncmFtIHJlc3VsdHMgaW4gImVycm9yIFRPQyBvdmVyZmxvdyIgYWRkIC1tbWluaW1hbC10b2MgdG8KLSAgICAjIENYWEZMQUdTL0NGTEFHUyBmb3IgZysrL2djYy4gIEluIHRoZSBjYXNlcyB3aGVyZSB0aGF0IGlzIG5vdAotICAgICMgZW5vdWdoIHRvIGZpeCB0aGUgcHJvYmxlbSwgYWRkIC1XbCwtYmJpZ3RvYyB0byBMREZMQUdTLgotCi0gICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9JzonCi0gICAgX0xUX0FDX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCi0KLSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotICAgICAgY2FzZSAkaG9zdF9vcyBpbiBhaXg0LltbMDEyXV18YWl4NC5bWzAxMl1dLiopCi0gICAgICAjIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIEFJWCA0LjIgYW5kIGxvd2VyLCB0aGUgY2hlY2sKLSAgICAgICMgYmVsb3cgZm9yIGJyb2tlbiBjb2xsZWN0MiBkb2Vzbid0IHdvcmsgdW5kZXIgNC4zKwotCWNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKLQlpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJiBcCi0JICAgc3RyaW5ncyAiJGNvbGxlY3QybmFtZSIgfCBncmVwIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAotCXRoZW4KLQkgICMgV2UgaGF2ZSByZXdvcmtlZCBjb2xsZWN0MgotCSAgOgotCWVsc2UKLQkgICMgV2UgaGF2ZSBvbGQgY29sbGVjdDIKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9dW5zdXBwb3J0ZWQKLQkgICMgSXQgZmFpbHMgdG8gZmluZCB1bmluc3RhbGxlZCBsaWJyYXJpZXMgd2hlbiB0aGUgdW5pbnN0YWxsZWQKLQkgICMgcGF0aCBpcyBub3QgbGlzdGVkIGluIHRoZSBsaWJwYXRoLiAgU2V0dGluZyBoYXJkY29kZV9taW51c19MCi0JICAjIHRvIHVuc3VwcG9ydGVkIGZvcmNlcyByZWxpbmtpbmcKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQotCWZpCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIHNoYXJlZF9mbGFnPSctc2hhcmVkJwotICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0Jc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCi0gICAgICBmaQotICAgIGVsc2UKLSAgICAgICMgbm90IHVzaW5nIGdjYwotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkjIFZpc3VhbEFnZSBDKyssIFZlcnNpb24gNS41IGZvciBBSVggNUwgZm9yIElBLTY0LCBCZXRhIDMgUmVsZWFzZQotCSMgY2hva2VzIG9uIC1XbCwtRy4gVGhlIGZvbGxvd2luZyBsaW5lIGlzIGNvcnJlY3Q6Ci0Jc2hhcmVkX2ZsYWc9Jy1HJwotICAgICAgZWxzZQotCWlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotCSAgc2hhcmVkX2ZsYWc9JyR7d2x9LUcnCi0JZWxzZQotCSAgc2hhcmVkX2ZsYWc9JyR7d2x9LWJNOlNSRScKLQlmaQotICAgICAgZmkKLSAgICBmaQotCi0gICAgIyBJdCBzZWVtcyB0aGF0IC1iZXhwYWxsIGRvZXMgbm90IGV4cG9ydCBzeW1ib2xzIGJlZ2lubmluZyB3aXRoCi0gICAgIyB1bmRlcnNjb3JlIChfKSwgc28gaXQgaXMgYmV0dGVyIHRvIGdlbmVyYXRlIGEgbGlzdCBvZiBzeW1ib2xzIHRvIGV4cG9ydC4KLSAgICBfTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcwotICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotICAgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVudGltZSBsb2FkaW5nIGZsYWdzICgtYnJ0bCksCi0gICAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi0gICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKLSAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eSBleGVjdXRhYmxlLgotICAgICAgX0xUX0FDX1NZU19MSUJQQVRIX0FJWAotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0KLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJcJENDIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBlY2hvICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotICAgICBlbHNlCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKLQlfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Ii16IG5vZGVmcyIKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyIKLSAgICAgIGVsc2UKLQkjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkgZXhlY3V0YWJsZS4KLQlfTFRfQUNfU1lTX0xJQlBBVEhfQUlYCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0JIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLQkjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi0JX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCi0JX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVyb2snCi0JIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCi0JX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcwotCSMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAke3dsfS1ibm9lbnRyeSAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzJHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKLSAgICAgIGZpCi0gICAgZmkKLSAgICA7OwotCi0gIGJlb3MqKQotICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICAjIEpvc2VwaCBCZWNrZW5iYWNoIDxqcmIzQGJlc3QuY29tPiBzYXlzIHNvbWUgcmVsZWFzZXMgb2YgZ2NjCi0gICAgICAjIHN1cHBvcnQgLS11bmRlZmluZWQuICBUaGlzIGRlc2VydmVzIHNvbWUgaW52ZXN0aWdhdGlvbi4gIEZJWE1FCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW5vc3RhcnQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0gICAgZWxzZQotICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgIGZpCi0gICAgOzsKLQotICBjaG9ydXMqKQotICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICAqKQotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgIGVzYWMKLSAgICA7OwotCi0gIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKLSAgICAjIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICBfTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0gICAgX0xUX0FDX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0KLSAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLSAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQljcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0gICAgICBlbHNlCi0JZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSAgICAgIGZpfgotICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotICAgIGVsc2UKLSAgICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICBmaQotICA7OwotICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCi0gICAgICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JycKLSAgICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgICAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCi0gICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyA7IHRoZW4KLSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJwotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKLSAgICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJHtfbHRfZGFyX3NpbmdsZV9tb2R9JHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKLSAgICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAtZSAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKLSAgICAgIGlmIHRlc3QgIiRsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kIiAhPSAieWVzIjsgdGhlbgotICAgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSJcJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCR7bGlifS1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwke2xpYn0tbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJHtfbHRfZHN5bXV0aWx9IgotICAgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCR7bGlifS1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwke2xpYn0tbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKLSAgICAgIGZpCi0gICAgICBlbHNlCi0gICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICB4bGMqKQotICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCi0gICAgICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1xbWtzaHJvYmogJHt3bH0tc2luZ2xlX21vZHVsZSAkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taW5zdGFsbF9uYW1lICR7d2x9YGVjaG8gJHJwYXRoLyRzb25hbWVgICR4bGN2ZXJzdHJpbmcnCi0gICAgICAgICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSckQ0MgJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgLWJ1bmRsZSAkbGlib2JqcyAkZGVwbGlicyRjb21waWxlcl9mbGFncycKLSAgICAgICAgICAjIERvbid0IGZpeCB0aGlzIGJ5IHVzaW5nIHRoZSBsZCAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGZsYWcsIGl0IGRvZXNuJ3QgZXhpc3QgaW4gb2xkZXIgZGFyd2luIGxkcwotICAgICAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgLWUgInMsIy4qLCwiIC1lICJzLF5bICAgIF0qLCwiIC1lICJzLF5cKC4uKlwpLF8mLCIgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltfiRDQyAtcW1rc2hyb2JqICR7d2x9LXNpbmdsZV9tb2R1bGUgJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWluc3RhbGxfbmFtZSAke3dsfSRycGF0aC8kc29uYW1lICR4bGN2ZXJzdHJpbmd+bm1lZGl0IC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JwotICAgICAgICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAtZSAicywjLiosLCIgLWUgInMsXlsgICAgXSosLCIgLWUgInMsXlwoLi4qXCksXyYsIiA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+JENDICRhbGxvd191bmRlZmluZWRfZmxhZyAgLW8gJGxpYiAtYnVuZGxlICRsaWJvYmpzICRkZXBsaWJzJGNvbXBpbGVyX2ZsYWdzfm5tZWRpdCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKLSAgICAgICAgICA7OwotICAgICAgICopCi0gICAgICAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIGZpCi0gICAgICAgIDs7Ci0KLSAgZGd1eCopCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGVjKysqKQotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgICAgZ2hjeCopCi0JIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKLQkjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0JOzsKLSAgICAgICopCi0JIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCTs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIGZyZWVic2RbWzEyXV0qKQotICAgICMgQysrIHNoYXJlZCBsaWJyYXJpZXMgcmVwb3J0ZWQgdG8gYmUgZmFpcmx5IGJyb2tlbiBiZWZvcmUgc3dpdGNoIHRvIEVMRgotICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICA7OwotICBmcmVlYnNkLWVsZiopCi0gICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi0gICAgOzsKLSAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotICAgICMgRnJlZUJTRCAzIGFuZCBsYXRlciB1c2UgR05VIEMrKyBhbmQgR05VIGxkIHdpdGggc3RhbmRhcmQgRUxGCi0gICAgIyBjb252ZW50aW9ucwotICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCi0gICAgOzsKLSAgZ251KikKLSAgICA7OwotICBocHV4OSopCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLSAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzICMgTm90IGluIHRoZSBzZWFyY2ggUEFUSCwKLQkJCQkjIGJ1dCBhcyB0aGUgZGVmYXVsdAotCQkJCSMgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0KLSAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgIENDKikKLSAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgOzsKLSAgICBhQ0MqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJHJtICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1iICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCi0gICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLSAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotICAgICAgIwotICAgICAgIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQotICAgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KLSAgICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKLSAgICAgICMgZGVwZW5kZW5jaWVzLgotICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8IGdyZXAgIltbLV1dTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZWNobyAkbGlzdCcKLSAgICAgIDs7Ci0gICAgKikKLSAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gICAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRybSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgZWxzZQotICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLSAgICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIGhwdXgxMCp8aHB1eDExKikKLSAgICBpZiB0ZXN0ICR3aXRoX2dudV9sZCA9IG5vOyB0aGVuCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06Ci0KLSAgICAgIGNhc2UgJGhvc3RfY3B1IGluCi0gICAgICBocHBhKjY0KnxpYTY0KikgOzsKLSAgICAgICopCi0JX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKLSAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICBmaQotICAgIGNhc2UgJGhvc3RfY3B1IGluCi0gICAgaHBwYSo2NCp8aWE2NCopCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgOzsKLSAgICAqKQotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcyAjIE5vdCBpbiB0aGUgc2VhcmNoIFBBVEgsCi0JCQkJCSAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0Ci0JCQkJCSAgICAgICMgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICA7OwotICAgIGVzYWMKLQotICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBDQyopCi0JIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCTs7Ci0gICAgICBhQ0MqKQotCWNhc2UgJGhvc3RfY3B1IGluCi0JaHBwYSo2NCopCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JICA7OwotCWlhNjQqKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgOzsKLQkqKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JICA7OwotCWVzYWMKLQkjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCi0JIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi0JIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0JIwotCSMgVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB3YXkgdG8gcHJldmVudCB0aGlzIGNvbXBpbGVyIGZyb20KLQkjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQotCSMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKLQkjIGRlcGVuZGVuY2llcy4KLQlvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgZ3JlcCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBlY2hvICRsaXN0JwotCTs7Ci0gICAgICAqKQotCWlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0JICBpZiB0ZXN0ICR3aXRoX2dudV9sZCA9IG5vOyB0aGVuCi0JICAgIGNhc2UgJGhvc3RfY3B1IGluCi0JICAgIGhwcGEqNjQqKQotCSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLQkgICAgICA7OwotCSAgICBpYTY0KikKLQkgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JICAgICAgOzsKLQkgICAgKikKLQkgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLQkgICAgICA7OwotCSAgICBlc2FjCi0JICBmaQotCWVsc2UKLQkgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCSAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCWZpCi0JOzsKLSAgICBlc2FjCi0gICAgOzsKLSAgaW50ZXJpeFtbMy05XV0qKQotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KLSAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJwotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCi0gICAgIyBIYWNrOiBPbiBJbnRlcml4IDMueCwgd2UgY2Fubm90IGNvbXBpbGUgUElDIGJlY2F1c2Ugb2YgYSBicm9rZW4gZ2NjLgotICAgICMgSW5zdGVhZCwgc2hhcmVkIGxpYnJhcmllcyBhcmUgbG9hZGVkIGF0IGFuIGltYWdlIGJhc2UgKDB4MTAwMDAwMDAgYnkKLSAgICAjIGRlZmF1bHQpIGFuZCByZWxvY2F0ZWQgaWYgdGhleSBjb25mbGljdCwgd2hpY2ggaXMgYSBzbG93IHZlcnkgbWVtb3J5Ci0gICAgIyBjb25zdW1pbmcgYW5kIGZyYWdtZW50aW5nIHByb2Nlc3MuICBUbyBhdm9pZCB0aGlzLCB3ZSBwaWNrIGEgcmFuZG9tLAotICAgICMgMjU2IEtpQi1hbGlnbmVkIGltYWdlIGJhc2UgYmV0d2VlbiAweDUwMDAwMDAwIGFuZCAweDZGRkMwMDAwIGF0IGxpbmsKLSAgICAjIHRpbWUuICBNb3ZpbmcgdXAgZnJvbSAweDEwMDAwMDAwIGFsc28gYWxsb3dzIG1vcmUgc2JyaygyKSBzcGFjZS4KLSAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgInMsXixfLCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwotICAgIDs7Ci0gIGlyaXg1KiB8IGlyaXg2KikKLSAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgQ0MqKQotCSMgU0dJIEMrKwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gLXNldF92ZXJzaW9uICR2ZXJzdHJpbmdgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQotCSMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwotCSMgIkNDIC1hciIsIHdoZXJlICJDQyIgaXMgdGhlIElSSVggQysrIGNvbXBpbGVyLiAgVGhpcyBpcwotCSMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSBpbnN0YW50aWF0ZWQgdGVtcGxhdGVzIGFyZSBpbmNsdWRlZAotCSMgaW4gdGhlIGFyY2hpdmUuCi0JX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYXIgLVdSLC11IC1vICRvbGRsaWIgJG9sZG9ianMnCi0JOzsKLSAgICAgICopCi0JaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLQkgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCSAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotCSAgZWxzZQotCSAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nYCAtbyAkbGliJwotCSAgZmkKLQlmaQotCV9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotCTs7Ci0gICAgZXNhYwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgotICAgIDs7Ci0gIGxpbnV4KiB8IGsqYnNkKi1nbnUpCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIEtDQyopCi0JIyBLdWNrIGFuZCBBc3NvY2lhdGVzLCBJbmMuIChLQUkpIEMrKyBDb21waWxlcgotCi0JIyBLQ0Mgd2lsbCBvbmx5IGNyZWF0ZSBhIHNoYXJlZCBsaWJyYXJ5IGlmIHRoZSBvdXRwdXQgZmlsZQotCSMgZW5kcyB3aXRoICIuc28iIChvciAiLnNsIiBmb3IgSFAtVVgpLCBzbyByZW5hbWUgdGhlIGxpYnJhcnkKLQkjIHRvIGl0cyBwcm9wZXIgbmFtZSAod2l0aCB2ZXJzaW9uKSBhZnRlciBsaW5raW5nLgotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW1teKCkwLTlBLVphLXp7fV1dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAkbGliIHwgJFNFRCAtZSAicy9cJHt0ZW1wZXh0fVwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWIgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHM7IG12IFwkdGVtcGxpYiAkbGliJwotCSMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLQkjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLQkjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkjCi0JIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQotCSMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCi0JIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQotCSMgZGVwZW5kZW5jaWVzLgotCW91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCBncmVwICJsZCJgOyBybSAtZiBsaWJjb25mdGVzdCRzaGFyZWRfZXh0OyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZWNobyAkbGlzdCcKLQotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tcnBhdGgsJGxpYmRpcicKLQlfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0KLQkjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKLQkjICJDQyAtQnN0YXRpYyIsIHdoZXJlICJDQyIgaXMgdGhlIEtBSSBDKysgY29tcGlsZXIuCi0JX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtQnN0YXRpYyAtbyAkb2xkbGliICRvbGRvYmpzJwotCTs7Ci0gICAgICBpY3BjKikKLQkjIEludGVsIEMrKwotCXdpdGhfZ251X2xkPXllcwotCSMgdmVyc2lvbiA4LjAgYW5kIGFib3ZlIG9mIGljcGMgY2hva2Ugb24gbXVsdGlwbHkgZGVmaW5lZCBzeW1ib2xzCi0JIyBpZiB3ZSBhZGQgJHByZWRlcF9vYmplY3RzIGFuZCAkcG9zdGRlcF9vYmplY3RzLCBob3dldmVyIDcuMSBhbmQKLQkjIGVhcmxpZXIgZG8gbm90IGFkZCB0aGUgb2JqZWN0cyB0aGVtc2VsdmVzLgotCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotCSoiVmVyc2lvbiA3LiIqKQotICAJICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSAgCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotCSAgOzsKLQkqKSAgIyBWZXJzaW9uIDguMCBvciBuZXdlcgotCSAgdG1wX2lkeW49Ci0JICBjYXNlICRob3N0X2NwdSBpbgotCSAgICBpYTY0KikgdG1wX2lkeW49JyAtaV9keW5hbWljJzs7Ci0JICBlc2FjCi0gIAkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJyIkdG1wX2lkeW4iJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCciJHRtcF9pZHluIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0JICA7OwotCWVzYWMKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQlfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0JX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLQk7OwotICAgICAgcGdDQyogfCBwZ2NwcCopCi0gICAgICAgICMgUG9ydGxhbmQgR3JvdXAgQysrIGNvbXBpbGVyCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0gIAlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLQotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tcnBhdGggJHt3bH0kbGliZGlyJwotCV9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQlfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRlY2hvIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLSAgICAgICAgOzsKLSAgICAgIGN4eCopCi0JIyBDb21wYXEgQysrCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAgLW8gJGxpYiAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scycKLQotCXJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRICi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCSMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLQkjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLQkjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkjCi0JIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQotCSMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCi0JIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQotCSMgZGVwZW5kZW5jaWVzLgotCW91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCBncmVwICJsZCJgOyB0ZW1wbGlzdD1gZWNobyAkdGVtcGxpc3QgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZCAuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGVjaG8gJGxpc3QnCi0JOzsKLSAgICAgICopCi0JY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCi0JKlN1blwgQyopCi0JICAjIFN1biBDKysgNS45Ci0JICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMnCi0JICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotCSAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRlY2hvIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLQotCSAgIyBOb3Qgc3VyZSB3aGV0aGVyIHNvbWV0aGluZyBiYXNlZCBvbgotCSAgIyAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMQotCSAgIyB3b3VsZCBiZSBiZXR0ZXIuCi0JICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZWNobycKLQotCSAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCi0JICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKLQkgICMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSBpbnN0YW50aWF0ZWQgdGVtcGxhdGVzIGFyZSBpbmNsdWRlZAotCSAgIyBpbiB0aGUgYXJjaGl2ZS4KLQkgIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLXhhciAtbyAkb2xkbGliICRvbGRvYmpzJwotCSAgOzsKLQllc2FjCi0JOzsKLSAgICBlc2FjCi0gICAgOzsKLSAgbHlueG9zKikKLSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLSAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgOzsKLSAgbTg4ayopCi0gICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgIDs7Ci0gIG12cyopCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGN4eCopCi0JIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCTs7Ci0gICAgICAqKQotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgIGVzYWMKLSAgICA7OwotICBuZXRic2QqKQotICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkbGlua2VyX2ZsYWdzJwotICAgICAgd2xhcmM9Ci0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgZmkKLSAgICAjIFdvcmthcm91bmQgc29tZSBicm9rZW4gcHJlLTEuNSB0b29sY2hhaW5zCi0gICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgZ3JlcCBjb25mdGVzdC4kb2JqZXh0IHwgJFNFRCAtZSAiczotbGdjYyAtbGMgLWxnY2M6OiInCi0gICAgOzsKLSAgb3BlbmJzZDIqKQotICAgICMgQysrIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGZhaXJseSBicm9rZW4KLSAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgOzsKLSAgb3BlbmJzZCopCi0gICAgaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuc287IHRoZW4KLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkbGliJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0gICAgICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotCV9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCi0JX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJwotICAgICAgZmkKLSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJwotICAgIGVsc2UKLSAgICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICBmaQotICAgIDs7Ci0gIG9zZjMqKQotICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBLQ0MqKQotCSMgS3VjayBhbmQgQXNzb2NpYXRlcywgSW5jLiAoS0FJKSBDKysgQ29tcGlsZXIKLQotCSMgS0NDIHdpbGwgb25seSBjcmVhdGUgYSBzaGFyZWQgbGlicmFyeSBpZiB0aGUgb3V0cHV0IGZpbGUKLQkjIGVuZHMgd2l0aCAiLnNvIiAob3IgIi5zbCIgZm9yIEhQLVVYKSwgc28gcmVuYW1lIHRoZSBsaWJyYXJ5Ci0JIyB0byBpdHMgcHJvcGVyIG5hbWUgKHdpdGggdmVyc2lvbikgYWZ0ZXIgbGlua2luZy4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR7dGVtcGV4dH1cLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYjsgbXYgXCR0ZW1wbGliICRsaWInCi0KLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06Ci0KLQkjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKLQkjICJDQyAtQnN0YXRpYyIsIHdoZXJlICJDQyIgaXMgdGhlIEtBSSBDKysgY29tcGlsZXIuCi0JX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtQnN0YXRpYyAtbyAkb2xkbGliICRvbGRvYmpzJwotCi0JOzsKLSAgICAgIFJDQyopCi0JIyBSYXRpb25hbCBDKysgMi40LjEKLQkjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0JOzsKLSAgICAgIGN4eCopCi0JX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAke3dsfS1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0KLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCSMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLQkjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLQkjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkjCi0JIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQotCSMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCi0JIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQotCSMgZGVwZW5kZW5jaWVzLgotCW91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCBncmVwICJsZCIgfCBncmVwIC12ICJsZDoiYDsgdGVtcGxpc3Q9YGVjaG8gJHRlbXBsaXN0IHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGVjaG8gJGxpc3QnCi0JOzsKLSAgICAgICopCi0JaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZ2AgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCSAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwotCSAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi0JICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8IGdyZXAgIlwtTCInCi0KLQllbHNlCi0JICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLQkgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQlmaQotCTs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIG9zZjQqIHwgb3NmNSopCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIEtDQyopCi0JIyBLdWNrIGFuZCBBc3NvY2lhdGVzLCBJbmMuIChLQUkpIEMrKyBDb21waWxlcgotCi0JIyBLQ0Mgd2lsbCBvbmx5IGNyZWF0ZSBhIHNoYXJlZCBsaWJyYXJ5IGlmIHRoZSBvdXRwdXQgZmlsZQotCSMgZW5kcyB3aXRoICIuc28iIChvciAiLnNsIiBmb3IgSFAtVVgpLCBzbyByZW5hbWUgdGhlIGxpYnJhcnkKLQkjIHRvIGl0cyBwcm9wZXIgbmFtZSAod2l0aCB2ZXJzaW9uKSBhZnRlciBsaW5raW5nLgotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW1teKCkwLTlBLVphLXp7fV1dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAkbGliIHwgJFNFRCAtZSAicy9cJHt0ZW1wZXh0fVwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKLQotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJwotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCSMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwotCSMgdGhlIEtBSSBDKysgY29tcGlsZXIuCi0JX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb2xkbGliICRvbGRvYmpzJwotCTs7Ci0gICAgICBSQ0MqKQotCSMgUmF0aW9uYWwgQysrIDIuNC4xCi0JIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCTs7Ci0gICAgICBjeHgqKQotCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gLXNldF92ZXJzaW9uICR2ZXJzdHJpbmdgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lfgotCSAgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkgICRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgLVdsLC1pbnB1dCAtV2wsJGxpYi5leHAgIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvIC1zZXRfdmVyc2lvbgkkdmVyc3RyaW5nYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+Ci0JICAkcm0gJGxpYi5leHAnCi0KLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgotCi0JIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwotCSMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgotCSMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotCSMKLQkjIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IHRvIHByZXZlbnQgdGhpcyBjb21waWxlciBmcm9tCi0JIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KLQkjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5Ci0JIyBkZXBlbmRlbmNpZXMuCi0Jb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8IGdyZXAgImxkIiB8IGdyZXAgLXYgImxkOiJgOyB0ZW1wbGlzdD1gZWNobyAkdGVtcGxpc3QgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZWNobyAkbGlzdCcKLQk7OwotICAgICAgKikKLQlpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQkgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZ2AgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCSAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwotCSAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi0JICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8IGdyZXAgIlwtTCInCi0KLQllbHNlCi0JICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLQkgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQlmaQotCTs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIHBzb3MqKQotICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICA7OwotICBzdW5vczQqKQotICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBDQyopCi0JIyBTdW4gQysrIDQueAotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgICAgbGNjKikKLQkjIEx1Y2lkCi0JIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCTs7Ci0gICAgICAqKQotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgIGVzYWMKLSAgICA7OwotICBzb2xhcmlzKikKLSAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgQ0MqKQotCSMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAgICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywkMSk9eWVzCi0JX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfiRlY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCSRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICAke3dsfS1NICR7d2x9JGxpYi5leHAgLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRybSAkbGliLmV4cCcKLQotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLQljYXNlICRob3N0X29zIGluCi0JICBzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OwotCSAgKikKLQkgICAgIyBUaGUgY29tcGlsZXIgZHJpdmVyIHdpbGwgY29tYmluZSBhbmQgcmVvcmRlciBsaW5rZXIgb3B0aW9ucywKLQkgICAgIyBidXQgdW5kZXJzdGFuZHMgYC16IGxpbmtlcl9mbGFnJy4KLQkgICAgIyBTdXBwb3J0ZWQgc2luY2UgU29sYXJpcyAyLjYgKG1heWJlIDIuNS4xPykKLQkgICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScteiBhbGxleHRyYWN0JGNvbnZlbmllbmNlIC16IGRlZmF1bHRleHRyYWN0JwotCSAgICA7OwotCWVzYWMKLQlfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKLQotCW91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJwotCi0JIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCi0JIyAiQ0MgLXhhciIsIHdoZXJlICJDQyIgaXMgdGhlIFN1biBDKysgY29tcGlsZXIuICBUaGlzIGlzCi0JIyBuZWNlc3NhcnkgdG8gbWFrZSBzdXJlIGluc3RhbnRpYXRlZCB0ZW1wbGF0ZXMgYXJlIGluY2x1ZGVkCi0JIyBpbiB0aGUgYXJjaGl2ZS4KLQlfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC14YXIgLW8gJG9sZGxpYiAkb2xkb2JqcycKLQk7OwotICAgICAgZ2N4KikKLQkjIEdyZWVuIEhpbGxzIEMrKyBDb21waWxlcgotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLQotCSMgVGhlIEMrKyBjb21waWxlciBtdXN0IGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBhcmNoaXZlLgotCV9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgJExERkxBR1MgLWFyY2hpdmUgLW8gJG9sZGxpYiAkb2xkb2JqcycKLQk7OwotICAgICAgKikKLQkjIEdOVSBDKysgY29tcGlsZXIgd2l0aCBTb2xhcmlzIGxpbmtlcgotCWlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCSAgX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCi0JICBpZiAkQ0MgLS12ZXJzaW9uIHwgZ3JlcCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCi0JICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0JICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH4kZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkJJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JHJtICRsaWIuZXhwJwotCi0JICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLQkgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi0JICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0iJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCBncmVwIFwiXC1MXCIiCi0JICBlbHNlCi0JICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgYC1HJyBOT1QgYC1zaGFyZWQnIG9uIHRoaXMKLQkgICAgIyBwbGF0Zm9ybS4KLQkgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0JICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH4kZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkJJENDIC1HIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRybSAkbGliLmV4cCcKLQotCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCi0JICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgotCSAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9IiRDQyAtRyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8IGdyZXAgXCJcLUxcIiIKLQkgIGZpCi0KLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICR3bCRsaWJkaXInCi0JICBjYXNlICRob3N0X29zIGluCi0JICBzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OwotCSAgKikKLQkgICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS16ICR7d2x9YWxsZXh0cmFjdCRjb252ZW5pZW5jZSAke3dsfS16ICR7d2x9ZGVmYXVsdGV4dHJhY3QnCi0JICAgIDs7Ci0JICBlc2FjCi0JZmkKLQk7OwotICAgIGVzYWMKLSAgICA7OwotICBzeXN2NCp1dzIqIHwgc3lzdjVPcGVuVU5JWCogfCBzeXN2NVVuaXhXYXJlNy5bWzAxXV0uW1sxMF1dKiB8IHVuaXh3YXJlNyogfCBzY28zLjJ2NS4wLltbMDI0XV0qKQotICAgIF9MVF9BQ19UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JwotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJwotCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIENDKikKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCTs7Ci0gICAgICAqKQotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCTs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiopCi0gICAgIyBOb3RlOiBXZSBjYW4gTk9UIHVzZSAteiBkZWZzIGFzIHdlIG1pZ2h0IGRlc2lyZSwgYmVjYXVzZSB3ZSBkbyBub3QKLSAgICAjIGxpbmsgd2l0aCAtbGMsIGFuZCB0aGF0IHdvdWxkIGNhdXNlIGFueSBzeW1ib2xzIHVzZWQgZnJvbSBsaWJjIHRvCi0gICAgIyBhbHdheXMgYmUgdW5yZXNvbHZlZCwgd2hpY2ggbWVhbnMganVzdCBhYm91dCBubyBsaWJyYXJ5IHdvdWxkCi0gICAgIyBldmVyIGxpbmsgY29ycmVjdGx5LiAgSWYgd2UncmUgbm90IHVzaW5nIEdOVSBsZCB3ZSB1c2UgLXogdGV4dAotICAgICMgdGhvdWdoLCB3aGljaCBkb2VzIGNhdGNoIHNvbWUgYmFkIHN5bWJvbHMgYnV0IGlzbid0IGFzIGhlYXZ5LWhhbmRlZAotICAgICMgYXMgLXogZGVmcy4KLSAgICAjIEZvciBzZWN1cml0eSByZWFzb25zLCBpdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgYWx3YXlzCi0gICAgIyB1c2UgYWJzb2x1dGUgcGF0aHMgZm9yIG5hbWluZyBzaGFyZWQgbGlicmFyaWVzLCBhbmQgZXhjbHVkZSB0aGUKLSAgICAjIERUX1JVTlBBVEggdGFnIGZyb20gZXhlY3V0YWJsZXMgYW5kIGxpYnJhcmllcy4gIEJ1dCBkb2luZyBzbwotICAgICMgcmVxdWlyZXMgdGhhdCB5b3UgY29tcGlsZSBldmVyeXRoaW5nIHR3aWNlLCB3aGljaCBpcyBhIHBhaW4uCi0gICAgIyBTbyB0aGF0IGJlaGF2aW91ciBpcyBvbmx5IGVuYWJsZWQgaWYgU0NPQUJTUEFUSCBpcyBzZXQgdG8gYQotICAgICMgbm9uLWVtcHR5IHZhbHVlIGluIHRoZSBlbnZpcm9ubWVudC4gIE1vc3QgbGlrZWx5IG9ubHkgdXNlZnVsIGZvcgotICAgICMgY3JlYXRpbmcgb2ZmaWNpYWwgZGlzdHJpYnV0aW9ucyBvZiBwYWNrYWdlcy4KLSAgICAjIFRoaXMgaXMgYSBoYWNrIHVudGlsIGxpYnRvb2wgb2ZmaWNpYWxseSBzdXBwb3J0cyBhYnNvbHV0ZSBwYXRoCi0gICAgIyBuYW1lcyBmb3Igc2hhcmVkIGxpYnJhcmllcy4KLSAgICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosdGV4dCcKLSAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosbm9kZWZzJwotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9J2B0ZXN0IC16ICIkU0NPQUJTUEFUSCIgJiYgZWNobyAke3dsfS1SLCRsaWJkaXJgJwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JwotICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUJleHBvcnQnCi0gICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJwotCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIENDKikKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCxcJHtTQ09BQlNQQVRIOiske2luc3RhbGxfbGliZGlyfS99JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsXCR7U0NPQUJTUEFUSDorJHtpbnN0YWxsX2xpYmRpcn0vfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JOzsKLSAgICAgICopCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCxcJHtTQ09BQlNQQVRIOiske2luc3RhbGxfbGliZGlyfS99JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCxcJHtTQ09BQlNQQVRIOiske2luc3RhbGxfbGliZGlyfS99JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQk7OwotICAgIGVzYWMKLSAgICA7OwotICB0YW5kZW0qKQotICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBOQ0MqKQotCSMgTm9uU3RvcC1VWCBOQ0MgMy4yMAotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgICAgKikKLQkjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0JOzsKLSAgICBlc2FjCi0gICAgOzsKLSAgdnh3b3JrcyopCi0gICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgIDs7Ci0gICopCi0gICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgIDs7Ci1lc2FjCi1BQ19NU0dfUkVTVUxUKFskX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKV0pCi10ZXN0ICIkX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKSIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCi0KLV9MVF9BQ19UQUdWQVIoR0NDLCAkMSk9IiRHWFgiCi1fTFRfQUNfVEFHVkFSKExELCAkMSk9IiRMRCIKLQotQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUCgkMSkKLUFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMoJDEpCi1BQ19MSUJUT09MX1BST0dfQ0NfQ19PKCQxKQotQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUygkMSkKLUFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgoJDEpCi0KLUFDX0xJQlRPT0xfQ09ORklHKCQxKQotCi1BQ19MQU5HX1BPUAotQ0M9JGx0X3NhdmVfQ0MKLUxEQ1hYPSRMRAotTEQ9JGx0X3NhdmVfTEQKLUdDQz0kbHRfc2F2ZV9HQ0MKLXdpdGhfZ251X2xkY3h4PSR3aXRoX2dudV9sZAotd2l0aF9nbnVfbGQ9JGx0X3NhdmVfd2l0aF9nbnVfbGQKLWx0X2N2X3BhdGhfTERDWFg9JGx0X2N2X3BhdGhfTEQKLWx0X2N2X3BhdGhfTEQ9JGx0X3NhdmVfcGF0aF9MRAotbHRfY3ZfcHJvZ19nbnVfbGRjeHg9JGx0X2N2X3Byb2dfZ251X2xkCi1sdF9jdl9wcm9nX2dudV9sZD0kbHRfc2F2ZV93aXRoX2dudV9sZAotXSkjIEFDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHCi0KLSMgQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUChbVEFHTkFNRV0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQotIyBjb21waWxlciBvdXRwdXQgd2hlbiBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0jIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQotIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUF0sCi1bQUNfUkVRVUlSRShbTFRfQUNfUFJPR19TRURdKWRubAotZG5sIHdlIGNhbid0IHVzZSB0aGUgbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIGhlcmUsCi1kbmwgYmVjYXVzZSBpdCBjb250YWlucyBjb2RlIGludGVuZGVkIGZvciBhbiBleGVjdXRhYmxlLAotZG5sIG5vdCBhIGxpYnJhcnkuICBJdCdzIHBvc3NpYmxlIHdlIHNob3VsZCBsZXQgZWFjaAotZG5sIHRhZyBkZWZpbmUgYSBuZXcgbHRfPz8/P19saW5rX3Rlc3RfY29kZSB2YXJpYWJsZSwKLWRubCBidXQgaXQncyBvbmx5IHVzZWQgaGVyZS4uLgotaWZlbHNlKFskMV0sW10sW2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLWludCBhOwotdm9pZCBmb28gKHZvaWQpIHsgYSA9IDA7IH0KLUVPRgotXSxbJDFdLFtDWFhdLFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi1jbGFzcyBGb28KLXsKLXB1YmxpYzoKLSAgRm9vICh2b2lkKSB7IGEgPSAwOyB9Ci1wcml2YXRlOgotICBpbnQgYTsKLX07Ci1FT0YKLV0sWyQxXSxbRjc3XSxbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotICAgICAgc3Vicm91dGluZSBmb28KLSAgICAgIGltcGxpY2l0IG5vbmUKLSAgICAgIGludGVnZXIqNCBhCi0gICAgICBhPTAKLSAgICAgIHJldHVybgotICAgICAgZW5kCi1FT0YKLV0sWyQxXSxbR0NKXSxbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotcHVibGljIGNsYXNzIGZvbyB7Ci0gIHByaXZhdGUgaW50IGE7Ci0gIHB1YmxpYyB2b2lkIGJhciAodm9pZCkgewotICAgIGEgPSAwOwotICB9Ci19OwotRU9GCi1dKQotZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQotZG5sIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KLWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCi0gICMgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5Ci0gICMgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgotCi0gICMgU2VudGluZWwgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBiZWZvcmUKLSAgIyB0aGUgY29uZnRlc3Qgb2JqZWN0IGZpbGUuCi0gIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KLQotICAjIFRoZSBgKicgaW4gdGhlIGNhc2UgbWF0Y2hlcyBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IHVzZSBgY2FzZScgaW4KLSAgIyAkb3V0cHV0X3ZlcmJvc2VfY21kIGNhbiB0cmlnZ2VyIGdsb2IgZXhwYW5zaW9uIGR1cmluZyB0aGUgbG9vcAotICAjIGV2YWwgd2l0aG91dCB0aGlzIHN1YnN0aXR1dGlvbi4KLSAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9YCRlY2hvICJYJG91dHB1dF92ZXJib3NlX2xpbmtfY21kIiB8ICRYc2VkIC1lICIkbm9fZ2xvYl9zdWJzdCJgCi0KLSAgZm9yIHAgaW4gYGV2YWwgJG91dHB1dF92ZXJib3NlX2xpbmtfY21kYDsgZG8KLSAgICBjYXNlICRwIGluCi0KLSAgICAtTCogfCAtUiogfCAtbCopCi0gICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KLSAgICAgICAjIFJlbW92ZSB0aGUgc3BhY2UuCi0gICAgICAgaWYgdGVzdCAkcCA9ICItTCIgXAotCSAgfHwgdGVzdCAkcCA9ICItUiI7IHRoZW4KLQkgcHJldj0kcAotCSBjb250aW51ZQotICAgICAgIGVsc2UKLQkgcHJldj0KLSAgICAgICBmaQotCi0gICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLQkgY2FzZSAkcCBpbgotCSAtTCogfCAtUiopCi0JICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCi0JICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCi0JICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCi0JICAgaWYgdGVzdCAteiAiJF9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSkiOyB0aGVuCi0JICAgICBfTFRfQUNfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpPSIke3ByZXZ9JHtwfSIKLQkgICBlbHNlCi0JICAgICBfTFRfQUNfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpPSIke19MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSl9ICR7cHJldn0ke3B9IgotCSAgIGZpCi0JICAgOzsKLQkgIyBUaGUgIi1sIiBjYXNlIHdvdWxkIG5ldmVyIGNvbWUgYmVmb3JlIHRoZSBvYmplY3QgYmVpbmcKLQkgIyBsaW5rZWQsIHNvIGRvbid0IGJvdGhlciBoYW5kbGluZyB0aGlzIGNhc2UuCi0JIGVzYWMKLSAgICAgICBlbHNlCi0JIGlmIHRlc3QgLXogIiRfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCAkMSkiOyB0aGVuCi0JICAgX0xUX0FDX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke3ByZXZ9JHtwfSIKLQkgZWxzZQotCSAgIF9MVF9BQ19UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCAkMSl9ICR7cHJldn0ke3B9IgotCSBmaQotICAgICAgIGZpCi0gICAgICAgOzsKLQotICAgICouJG9iamV4dCkKLSAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKLSAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KLSAgICAgICBpZiB0ZXN0ICIkcCIgPSAiY29uZnRlc3QuJG9iamV4dCI7IHRoZW4KLQkgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT15ZXMKLQkgY29udGludWUKLSAgICAgICBmaQotCi0gICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLQkgaWYgdGVzdCAteiAiJF9MVF9BQ19UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKSI7IHRoZW4KLQkgICBfTFRfQUNfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9IiRwIgotCSBlbHNlCi0JICAgX0xUX0FDX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPSIkX0xUX0FDX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpICRwIgotCSBmaQotICAgICAgIGVsc2UKLQkgaWYgdGVzdCAteiAiJF9MVF9BQ19UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSkiOyB0aGVuCi0JICAgX0xUX0FDX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0iJHAiCi0JIGVsc2UKLQkgICBfTFRfQUNfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPSIkX0xUX0FDX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKSAkcCIKLQkgZmkKLSAgICAgICBmaQotICAgICAgIDs7Ci0KLSAgICAqKSA7OyAjIElnbm9yZSB0aGUgcmVzdC4KLQotICAgIGVzYWMKLSAgZG9uZQotCi0gICMgQ2xlYW4gdXAuCi0gIHJtIC1mIGEub3V0IGEuZXhlCi1lbHNlCi0gIGVjaG8gImxpYnRvb2wubTQ6IGVycm9yOiBwcm9ibGVtIGNvbXBpbGluZyAkMSB0ZXN0IHByb2dyYW0iCi1maQotCi0kcm0gLWYgY29uZmVzdC4kb2JqZXh0Ci0KLV9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzLCAkMSk9Ci1pZiB0ZXN0IC1uICIkX0xUX0FDX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKSI7IHRoZW4KLSAgX0xUX0FDX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX2RpcnMsICQxKT1gZWNobyAiICR7X0xUX0FDX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKX0iIHwgJHtTRUR9IC1lICdzISAtTCEgIWcnIC1lICdzIV4gISEnYAotZmkKLQotIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KLWlmZWxzZShbJDFdLFtDWFhdLAotW2Nhc2UgJGhvc3Rfb3MgaW4KLWludGVyaXhbWzMtOV1dKikKLSAgIyBJbnRlcml4IDMuNSBpbnN0YWxscyBjb21wbGV0ZWx5IGhvc2VkIC5sYSBmaWxlcyBmb3IgQysrLCBzbyByYXRoZXIgdGhhbgotICAjIGhhY2sgYWxsIGFyb3VuZCBpdCwgbGV0J3MganVzdCB0cnVzdCAiZysrIiB0byBEVFJULgotICBfTFRfQUNfVEFHVkFSKHByZWRlcF9vYmplY3RzLCQxKT0KLSAgX0xUX0FDX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsJDEpPQotICBfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCQxKT0KLSAgOzsKLQotbGludXgqKQotICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KLSAgKlN1blwgQyopCi0gICAgIyBTdW4gQysrIDUuOQotICAgICMKLSAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKLSAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKLSAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi0gICAgIyAtbGlicmFyeT1zdGxwb3J0NCBkZXBlbmRzIG9uIGl0LgotICAgIGNhc2UgIiAkQ1hYICRDWFhGTEFHUyAiIGluCi0gICAgKiIgLWxpYnJhcnk9c3RscG9ydDQgIiopCi0gICAgICBzb2xhcmlzX3VzZV9zdGxwb3J0ND15ZXMKLSAgICAgIDs7Ci0gICAgZXNhYwotICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCi0gICAgICBfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCQxKT0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJwotICAgIGZpCi0gICAgOzsKLSAgZXNhYwotICA7OwotCi1zb2xhcmlzKikKLSAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgQ0MqKQotICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwotICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwotICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKLSAgICAjIC1saWJyYXJ5PXN0bHBvcnQ0IGRlcGVuZHMgb24gaXQuCi0gICAgY2FzZSAiICRDWFggJENYWEZMQUdTICIgaW4KLSAgICAqIiAtbGlicmFyeT1zdGxwb3J0NCAiKikKLSAgICAgIHNvbGFyaXNfdXNlX3N0bHBvcnQ0PXllcwotICAgICAgOzsKLSAgICBlc2FjCi0KLSAgICAjIEFkZGluZyB0aGlzIHJlcXVpcmVzIGEga25vd24tZ29vZCBzZXR1cCBvZiBzaGFyZWQgbGlicmFyaWVzIGZvcgotICAgICMgU3VuIGNvbXBpbGVyIHZlcnNpb25zIGJlZm9yZSA1LjYsIGVsc2UgUElDIG9iamVjdHMgZnJvbSBhbiBvbGQKLSAgICAjIGFyY2hpdmUgd2lsbCBiZSBsaW5rZWQgaW50byB0aGUgb3V0cHV0LCBsZWFkaW5nIHRvIHN1YnRsZSBidWdzLgotICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCi0gICAgICBfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCQxKT0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJwotICAgIGZpCi0gICAgOzsKLSAgZXNhYwotICA7OwotZXNhYwotXSkKLWNhc2UgIiAkX0xUX0FDX1RBR1ZBUihwb3N0ZGVwcywgJDEpICIgaW4KLSoiIC1sYyAiKikgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vIDs7Ci1lc2FjCi1dKSMgQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUAotCi0jIEFDX0xJQlRPT0xfTEFOR19GNzdfQ09ORklHCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcnMgZm9yIHRoZSBDIGNvbXBpbGVyIGFyZQotIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhvc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieQotIyBBQ19MSUJUT09MX0NPTkZJRyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0Y3N19DT05GSUddLCBbX0xUX0FDX0xBTkdfRjc3X0NPTkZJRyhGNzcpXSkKLUFDX0RFRlVOKFtfTFRfQUNfTEFOR19GNzdfQ09ORklHXSwKLVtBQ19SRVFVSVJFKFtBQ19QUk9HX0Y3N10pCi1BQ19MQU5HX1BVU0goRm9ydHJhbiA3NykKLQotX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0KLV9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQotX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwotX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT1ubwotX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPQotX0xUX0FDX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KLV9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KLV9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCi1fTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubwotCi0jIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgZjc3IHRlc3Qgc291cmNlcy4KLWFjX2V4dD1mCi0KLSMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBmNzcgdGVzdCBzb3VyY2VzLgotb2JqZXh0PW8KLV9MVF9BQ19UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAotCi0jIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cwotbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJcCi0gICAgICBzdWJyb3V0aW5lIHQKLSAgICAgIHJldHVybgotICAgICAgZW5kCi0iCi0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCi1sdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9IlwKLSAgICAgIHByb2dyYW0gdAotICAgICAgZW5kCi0iCi0KLSMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KLV9MVF9BQ19TWVNfQ09NUElMRVIKLQotIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKLV9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQotX0xUX0xJTktFUl9CT0lMRVJQTEFURQotCi0jIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotbHRfc2F2ZV9DQz0iJENDIgotQ0M9JHtGNzctImY3NyJ9Ci1jb21waWxlcj0kQ0MKLV9MVF9BQ19UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLV9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLQotQUNfTVNHX0NIRUNLSU5HKFtpZiBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQotQUNfTVNHX1JFU1VMVChbJGNhbl9idWlsZF9zaGFyZWRdKQotCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllc10pCi10ZXN0ICIkY2FuX2J1aWxkX3NoYXJlZCIgPSAibm8iICYmIGVuYWJsZV9zaGFyZWQ9bm8KLQotIyBPbiBBSVgsIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHN0YXRpYyBsaWJyYXJpZXMgdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSwgYW5kCi0jIGFyZSBhbGwgYnVpbHQgZnJvbSBQSUMuCi1jYXNlICRob3N0X29zIGluCi1haXgzKikKLSAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KLSAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KLSAgICBhcmNoaXZlX2NtZHM9IiRhcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRsaWIiCi0gICAgcG9zdGluc3RhbGxfY21kcz0nJFJBTkxJQiAkbGliJwotICBmaQotICA7OwotYWl4W1s0LTldXSopCi0gIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NCAmJiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSBubyA7IHRoZW4KLSAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubwotICBmaQotICA7OwotZXNhYwotQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zaGFyZWRdKQotCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllc10pCi0jIE1ha2Ugc3VyZSBlaXRoZXIgZW5hYmxlX3NoYXJlZCBvciBlbmFibGVfc3RhdGljIGlzIHllcy4KLXRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyB8fCBlbmFibGVfc3RhdGljPXllcwotQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zdGF0aWNdKQotCi1fTFRfQUNfVEFHVkFSKEdDQywgJDEpPSIkRzc3IgotX0xUX0FDX1RBR1ZBUihMRCwgJDEpPSIkTEQiCi0KLUFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMoJDEpCi1BQ19MSUJUT09MX1BST0dfQ0NfQ19PKCQxKQotQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUygkMSkKLUFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgoJDEpCi0KLUFDX0xJQlRPT0xfQ09ORklHKCQxKQotCi1BQ19MQU5HX1BPUAotQ0M9IiRsdF9zYXZlX0NDIgotXSkjIEFDX0xJQlRPT0xfTEFOR19GNzdfQ09ORklHCi0KLQotIyBBQ19MSUJUT09MX0xBTkdfR0NKX0NPTkZJRwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJzIGZvciB0aGUgQyBjb21waWxlciBhcmUKLSMgc3VpdGFibHkgZGVmaW5lZC4gIFRob3NlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkKLSMgQUNfTElCVE9PTF9DT05GSUcgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgotQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19HQ0pfQ09ORklHXSwgW19MVF9BQ19MQU5HX0dDSl9DT05GSUcoR0NKKV0pCi1BQ19ERUZVTihbX0xUX0FDX0xBTkdfR0NKX0NPTkZJR10sCi1bQUNfTEFOR19TQVZFCi0KLSMgU291cmNlIGZpbGUgZXh0ZW5zaW9uIGZvciBKYXZhIHRlc3Qgc291cmNlcy4KLWFjX2V4dD1qYXZhCi0KLSMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBKYXZhIHRlc3Qgc291cmNlcy4KLW9iamV4dD1vCi1fTFRfQUNfVEFHVkFSKG9iamV4dCwgJDEpPSRvYmpleHQKLQotIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKLWx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iY2xhc3MgZm9vIHt9IgotCi0jIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cwotbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlPSdwdWJsaWMgY2xhc3MgY29uZnRlc3QgeyBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbW11dIGFyZ3YpIHt9OyB9JwotCi0jIGx0bWFpbiBvbmx5IHVzZXMgJENDIGZvciB0YWdnZWQgY29uZmlndXJhdGlvbnMgc28gbWFrZSBzdXJlICRDQyBpcyBzZXQuCi1fTFRfQUNfU1lTX0NPTVBJTEVSCi0KLSMgc2F2ZSB3YXJuaW5ncy9ib2lsZXJwbGF0ZSBvZiBzaW1wbGUgdGVzdCBjb2RlCi1fTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKLV9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLQotIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLWx0X3NhdmVfQ0M9IiRDQyIKLUNDPSR7R0NKLSJnY2oifQotY29tcGlsZXI9JENDCi1fTFRfQUNfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi1fTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi0KLSMgR0NKIGRpZCBub3QgZXhpc3QgYXQgdGhlIHRpbWUgR0NDIGRpZG4ndCBpbXBsaWNpdGx5IGxpbmsgbGliYyBpbi4KLV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotCi1fTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcwotCi1BQ19MSUJUT09MX1BST0dfQ09NUElMRVJfTk9fUlRUSSgkMSkKLUFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMoJDEpCi1BQ19MSUJUT09MX1BST0dfQ0NfQ19PKCQxKQotQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUygkMSkKLUFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgoJDEpCi0KLUFDX0xJQlRPT0xfQ09ORklHKCQxKQotCi1BQ19MQU5HX1JFU1RPUkUKLUNDPSIkbHRfc2F2ZV9DQyIKLV0pIyBBQ19MSUJUT09MX0xBTkdfR0NKX0NPTkZJRwotCi0KLSMgQUNfTElCVE9PTF9MQU5HX1JDX0NPTkZJRwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcnMgZm9yIHRoZSBXaW5kb3dzIHJlc291cmNlIGNvbXBpbGVyIGFyZQotIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhvc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieQotIyBBQ19MSUJUT09MX0NPTkZJRyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX1JDX0NPTkZJR10sIFtfTFRfQUNfTEFOR19SQ19DT05GSUcoUkMpXSkKLUFDX0RFRlVOKFtfTFRfQUNfTEFOR19SQ19DT05GSUddLAotW0FDX0xBTkdfU0FWRQotCi0jIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgUkMgdGVzdCBzb3VyY2VzLgotYWNfZXh0PXJjCi0KLSMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBSQyB0ZXN0IHNvdXJjZXMuCi1vYmpleHQ9bwotX0xUX0FDX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0Ci0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCi1sdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9J3NhbXBsZSBNRU5VIHsgTUVOVUlURU0gIiZTb3VwIiwgMTAwLCBDSEVDS0VEIH0nCi0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCi1sdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9IiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiCi0KLSMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KLV9MVF9BQ19TWVNfQ09NUElMRVIKLQotIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKLV9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQotX0xUX0xJTktFUl9CT0lMRVJQTEFURQotCi0jIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotbHRfc2F2ZV9DQz0iJENDIgotQ0M9JHtSQy0id2luZHJlcyJ9Ci1jb21waWxlcj0kQ0MKLV9MVF9BQ19UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLV9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLV9MVF9BQ19UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKT15ZXMKLQotQUNfTElCVE9PTF9DT05GSUcoJDEpCi0KLUFDX0xBTkdfUkVTVE9SRQotQ0M9IiRsdF9zYXZlX0NDIgotXSkjIEFDX0xJQlRPT0xfTEFOR19SQ19DT05GSUcKLQotCi0jIEFDX0xJQlRPT0xfQ09ORklHKFtUQUdOQU1FXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBJZiBUQUdOQU1FIGlzIG5vdCBwYXNzZWQsIHRoZW4gY3JlYXRlIGFuIGluaXRpYWwgbGlidG9vbCBzY3JpcHQKLSMgd2l0aCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmcm9tIHRoZSB1bnRhZ2dlZCBjb25maWcgdmFycy4gIE90aGVyd2lzZQotIyBhZGQgY29kZSB0byBjb25maWcuc3RhdHVzIGZvciBhcHBlbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZWQgYnkKLSMgVEFHTkFNRSBmcm9tIHRoZSBtYXRjaGluZyB0YWdnZWQgY29uZmlnIHZhcnMuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9DT05GSUddLAotWyMgVGhlIGVsc2UgY2xhdXNlIHNob3VsZCBvbmx5IGZpcmUgd2hlbiBib290c3RyYXBwaW5nIHRoZQotIyBsaWJ0b29sIGRpc3RyaWJ1dGlvbiwgb3RoZXJ3aXNlIHlvdSBmb3Jnb3QgdG8gc2hpcCBsdG1haW4uc2gKLSMgd2l0aCB5b3VyIHBhY2thZ2UsIGFuZCB5b3Ugd2lsbCBnZXQgY29tcGxhaW50cyB0aGF0IHRoZXJlIGFyZQotIyBubyBydWxlcyB0byBnZW5lcmF0ZSBsdG1haW4uc2guCi1pZiB0ZXN0IC1mICIkbHRtYWluIjsgdGhlbgotICAjIFNlZSBpZiB3ZSBhcmUgcnVubmluZyBvbiB6c2gsIGFuZCBzZXQgdGhlIG9wdGlvbnMgd2hpY2ggYWxsb3cgb3VyIGNvbW1hbmRzIHRocm91Z2gKLSAgIyB3aXRob3V0IHJlbW92YWwgb2YgXCBlc2NhcGVzLgotICBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iIDsgdGhlbgotICAgIHNldG9wdCBOT19HTE9CX1NVQlNUCi0gIGZpCi0gICMgTm93IHF1b3RlIGFsbCB0aGUgdGhpbmdzIHRoYXQgbWF5IGNvbnRhaW4gbWV0YWNoYXJhY3RlcnMgd2hpbGUgYmVpbmcKLSAgIyBjYXJlZnVsIG5vdCB0byBvdmVycXVvdGUgdGhlIEFDX1NVQlNUZWQgdmFsdWVzLiAgV2UgdGFrZSBjb3BpZXMgb2YgdGhlCi0gICMgdmFyaWFibGVzIGFuZCBxdW90ZSB0aGUgY29waWVzIGZvciBnZW5lcmF0aW9uIG9mIHRoZSBsaWJ0b29sIHNjcmlwdC4KLSAgZm9yIHZhciBpbiBlY2hvIG9sZF9DQyBvbGRfQ0ZMQUdTIEFSIEFSX0ZMQUdTIEVHUkVQIFJBTkxJQiBMTl9TIExUQ0MgTFRDRkxBR1MgTk0gXAotICAgIFNFRCBTSEVMTCBTVFJJUCBcCi0gICAgbGlibmFtZV9zcGVjIGxpYnJhcnlfbmFtZXNfc3BlYyBzb25hbWVfc3BlYyBleHRyYWN0X2V4cHN5bXNfY21kcyBcCi0gICAgb2xkX3N0cmlwbGliIHN0cmlwbGliIGZpbGVfbWFnaWNfY21kIGZpbmlzaF9jbWRzIGZpbmlzaF9ldmFsIFwKLSAgICBkZXBsaWJzX2NoZWNrX21ldGhvZCByZWxvYWRfZmxhZyByZWxvYWRfY21kcyBuZWVkX2xvY2tzIFwKLSAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIFwKLSAgICBvbGRfcG9zdGluc3RhbGxfY21kcyBvbGRfcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSAgICBfTFRfQUNfVEFHVkFSKGNvbXBpbGVyLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoQ0MsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihMRCwgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUih0aHJlYWRfc2FmZV9mbGFnX3NwZWMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIocHJlZGVwcywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKHBvc3RpbnN0YWxsX2NtZHMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihwb3N0dW5pbnN0YWxsX2NtZHMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihpbmNsdWRlX2V4cHN5bXMsICQxKTsgZG8KLQotICAgIGNhc2UgJHZhciBpbgotICAgIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpIHwgXAotICAgIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpIHwgXAotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgfCBcCi0gICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSkgfCBcCi0gICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpIHwgXAotICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSkgfCBcCi0gICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcywgJDEpIHwgXAotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpIHwgXAotICAgIGV4dHJhY3RfZXhwc3ltc19jbWRzIHwgcmVsb2FkX2NtZHMgfCBmaW5pc2hfY21kcyB8IFwKLSAgICBwb3N0aW5zdGFsbF9jbWRzIHwgcG9zdHVuaW5zdGFsbF9jbWRzIHwgXAotICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzIHwgb2xkX3Bvc3R1bmluc3RhbGxfY21kcyB8IFwKLSAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgfCBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYykKLSAgICAgICMgRG91YmxlLXF1b3RlIGRvdWJsZS1ldmFsZWQgc3RyaW5ncy4KLSAgICAgIGV2YWwgImx0XyR2YXI9XFxcIlxgXCRlY2hvIFwiWFwkJHZhclwiIHwgXCRYc2VkIC1lIFwiXCRkb3VibGVfcXVvdGVfc3Vic3RcIiAtZSBcIlwkc2VkX3F1b3RlX3N1YnN0XCIgLWUgXCJcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XCJcYFxcXCIiCi0gICAgICA7OwotICAgICopCi0gICAgICBldmFsICJsdF8kdmFyPVxcXCJcYFwkZWNobyBcIlhcJCR2YXJcIiB8IFwkWHNlZCAtZSBcIlwkc2VkX3F1b3RlX3N1YnN0XCJcYFxcXCIiCi0gICAgICA7OwotICAgIGVzYWMKLSAgZG9uZQotCi0gIGNhc2UgJGx0X2VjaG8gaW4KLSAgKidcWyRdMCAtLWZhbGxiYWNrLWVjaG8iJykKLSAgICBsdF9lY2hvPWAkZWNobyAiWCRsdF9lY2hvIiB8ICRYc2VkIC1lICdzL1xcXFxcXFxbJF0wIC0tZmFsbGJhY2stZWNobyJbJF0vWyRdMCAtLWZhbGxiYWNrLWVjaG8iLydgCi0gICAgOzsKLSAgZXNhYwotCi1pZmVsc2UoWyQxXSwgW10sCi0gIFtjZmdmaWxlPSIke29maWxlfVQiCi0gIHRyYXAgIiRybSBcIiRjZmdmaWxlXCI7IGV4aXQgMSIgMSAyIDE1Ci0gICRybSAtZiAiJGNmZ2ZpbGUiCi0gIEFDX01TR19OT1RJQ0UoW2NyZWF0aW5nICRvZmlsZV0pXSwKLSAgW2NmZ2ZpbGU9IiRvZmlsZSJdKQotCi0gIGNhdCA8PF9fRU9GX18gPj4gIiRjZmdmaWxlIgotaWZlbHNlKFskMV0sIFtdLAotWyMhICRTSEVMTAotCi0jIGAkZWNobyAiJGNmZ2ZpbGUiIHwgc2VkICdzJV4uKi8lJSdgIC0gUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCi0jIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UgJFZFUlNJT04kVElNRVNUQU1QKQotIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0jCi0jIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOAotIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSMKLSMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2w6Ci0jIE9yaWdpbmFsbHkgYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2Ci0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotIwotIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91Ci0jIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgotIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0KLSMgQSBzZWQgcHJvZ3JhbSB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dC4KLVNFRD0kbHRfU0VECi0KLSMgU2VkIHRoYXQgaGVscHMgdXMgYXZvaWQgYWNjaWRlbnRhbGx5IHRyaWdnZXJpbmcgZWNobygxKSBvcHRpb25zIGxpa2UgLW4uCi1Yc2VkPSIkU0VEIC1lIDFzL15YLy8iCi0KLSMgVGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gc3Rkb3V0Ci0jIGlmIENEUEFUSCBpcyBzZXQuCi0odW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICi0KLSMgVGhlIG5hbWVzIG9mIHRoZSB0YWdnZWQgY29uZmlndXJhdGlvbnMgc3VwcG9ydGVkIGJ5IHRoaXMgc2NyaXB0LgotYXZhaWxhYmxlX3RhZ3M9Ci0KLSMgIyMjIEJFR0lOIExJQlRPT0wgQ09ORklHXSwKLVsjICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lXSkKLQotIyBMaWJ0b29sIHdhcyBjb25maWd1cmVkIG9uIGhvc3QgYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgOgotCi0jIFNoZWxsIHRvIHVzZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHMuCi1TSEVMTD0kbHRfU0hFTEwKLQotIyBXaGV0aGVyIG9yIG5vdCB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzLgotYnVpbGRfbGlidG9vbF9saWJzPSRlbmFibGVfc2hhcmVkCi0KLSMgV2hldGhlciBvciBub3QgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllcy4KLWJ1aWxkX29sZF9saWJzPSRlbmFibGVfc3RhdGljCi0KLSMgV2hldGhlciBvciBub3QgdG8gYWRkIC1sYyBmb3IgYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcy4KLWJ1aWxkX2xpYnRvb2xfbmVlZF9sYz0kX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpCi0KLSMgV2hldGhlciBvciBub3QgdG8gZGlzYWxsb3cgc2hhcmVkIGxpYnMgd2hlbiBydW50aW1lIGxpYnMgYXJlIHN0YXRpYwotYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzPSRfTFRfQUNfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKQotCi0jIFdoZXRoZXIgb3Igbm90IHRvIG9wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbi4KLWZhc3RfaW5zdGFsbD0kZW5hYmxlX2Zhc3RfaW5zdGFsbAotCi0jIFRoZSBob3N0IHN5c3RlbS4KLWhvc3RfYWxpYXM9JGhvc3RfYWxpYXMKLWhvc3Q9JGhvc3QKLWhvc3Rfb3M9JGhvc3Rfb3MKLQotIyBUaGUgYnVpbGQgc3lzdGVtLgotYnVpbGRfYWxpYXM9JGJ1aWxkX2FsaWFzCi1idWlsZD0kYnVpbGQKLWJ1aWxkX29zPSRidWlsZF9vcwotCi0jIEFuIGVjaG8gcHJvZ3JhbSB0aGF0IGRvZXMgbm90IGludGVycHJldCBiYWNrc2xhc2hlcy4KLWVjaG89JGx0X2VjaG8KLQotIyBUaGUgYXJjaGl2ZXIuCi1BUj0kbHRfQVIKLUFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotCi0jIEEgQyBjb21waWxlci4KLUxUQ0M9JGx0X0xUQ0MKLQotIyBMVENDIGNvbXBpbGVyIGZsYWdzLgotTFRDRkxBR1M9JGx0X0xUQ0ZMQUdTCi0KLSMgQSBsYW5ndWFnZS1zcGVjaWZpYyBjb21waWxlci4KLUNDPSRsdF9bXV9MVF9BQ19UQUdWQVIoY29tcGlsZXIsICQxKQotCi0jIElzIHRoZSBjb21waWxlciB0aGUgR05VIEMgY29tcGlsZXI/Ci13aXRoX2djYz0kX0xUX0FDX1RBR1ZBUihHQ0MsICQxKQotCi0jIEFuIEVSRSBtYXRjaGVyLgotRUdSRVA9JGx0X0VHUkVQCi0KLSMgVGhlIGxpbmtlciB1c2VkIHRvIGJ1aWxkIGxpYnJhcmllcy4KLUxEPSRsdF9bXV9MVF9BQ19UQUdWQVIoTEQsICQxKQotCi0jIFdoZXRoZXIgd2UgbmVlZCBoYXJkIG9yIHNvZnQgbGlua3MuCi1MTl9TPSRsdF9MTl9TCi0KLSMgQSBCU0QtY29tcGF0aWJsZSBubSBwcm9ncmFtLgotTk09JGx0X05NCi0KLSMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0KLVNUUklQPSRsdF9TVFJJUAotCi0jIFVzZWQgdG8gZXhhbWluZSBsaWJyYXJpZXMgd2hlbiBmaWxlX21hZ2ljX2NtZCBiZWdpbnMgImZpbGUiCi1NQUdJQ19DTUQ9JE1BR0lDX0NNRAotCi0jIFVzZWQgb24gY3lnd2luOiBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLURMTFRPT0w9IiRETExUT09MIgotCi0jIFVzZWQgb24gY3lnd2luOiBvYmplY3QgZHVtcGVyLgotT0JKRFVNUD0iJE9CSkRVTVAiCi0KLSMgVXNlZCBvbiBjeWd3aW46IGFzc2VtYmxlci4KLUFTPSIkQVMiCi0KLSMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotb2JqZGlyPSRvYmpkaXIKLQotIyBIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLgotcmVsb2FkX2ZsYWc9JGx0X3JlbG9hZF9mbGFnCi1yZWxvYWRfY21kcz0kbHRfcmVsb2FkX2NtZHMKLQotIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotd2w9JGx0X1tdX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkKLQotIyBPYmplY3QgZmlsZSBzdWZmaXggKG5vcm1hbGx5ICJvIikuCi1vYmpleHQ9IiRhY19vYmpleHQiCi0KLSMgT2xkIGFyY2hpdmUgc3VmZml4IChub3JtYWxseSAiYSIpLgotbGliZXh0PSIkbGliZXh0IgotCi0jIFNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkgIi5zbyIpLgotc2hyZXh0X2NtZHM9JyRzaHJleHRfY21kcycKLQotIyBFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIikuCi1leGVleHQ9IiRleGVleHQiCi0KLSMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotcGljX2ZsYWc9JGx0X1tdX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCi1waWNfbW9kZT0kcGljX21vZGUKLQotIyBXaGF0IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGNvbW1hbmQ/Ci1tYXhfY21kX2xlbj0kbHRfY3Zfc3lzX21heF9jbWRfbGVuCi0KLSMgRG9lcyBjb21waWxlciBzaW11bHRhbmVvdXNseSBzdXBwb3J0IC1jIGFuZCAtbyBvcHRpb25zPwotY29tcGlsZXJfY19vPSRsdF9bXV9MVF9BQ19UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKQotCi0jIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotCi0jIERvIHdlIG5lZWQgdGhlIGxpYiBwcmVmaXggZm9yIG1vZHVsZXM/Ci1uZWVkX2xpYl9wcmVmaXg9JG5lZWRfbGliX3ByZWZpeAotCi0jIERvIHdlIG5lZWQgYSB2ZXJzaW9uIGZvciBsaWJyYXJpZXM/Ci1uZWVkX3ZlcnNpb249JG5lZWRfdmVyc2lvbgotCi0jIFdoZXRoZXIgZGxvcGVuIGlzIHN1cHBvcnRlZC4KLWRsb3Blbl9zdXBwb3J0PSRlbmFibGVfZGxvcGVuCi0KLSMgV2hldGhlciBkbG9wZW4gb2YgcHJvZ3JhbXMgaXMgc3VwcG9ydGVkLgotZGxvcGVuX3NlbGY9JGVuYWJsZV9kbG9wZW5fc2VsZgotCi0jIFdoZXRoZXIgZGxvcGVuIG9mIHN0YXRpY2FsbHkgbGlua2VkIHByb2dyYW1zIGlzIHN1cHBvcnRlZC4KLWRsb3Blbl9zZWxmX3N0YXRpYz0kZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYwotCi0jIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi1saW5rX3N0YXRpY19mbGFnPSRsdF9bXV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKQotCi0jIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi1ub19idWlsdGluX2ZsYWc9JGx0X1tdX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpCi0KLSMgQ29tcGlsZXIgZmxhZyB0byBhbGxvdyByZWZsZXhpdmUgZGxvcGVucy4KLWV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0kbHRfW11fTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpCi0KLSMgQ29tcGlsZXIgZmxhZyB0byBnZW5lcmF0ZSBzaGFyZWQgb2JqZWN0cyBkaXJlY3RseSBmcm9tIGFyY2hpdmVzLgotd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JGx0X1tdX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpCi0KLSMgQ29tcGlsZXIgZmxhZyB0byBnZW5lcmF0ZSB0aHJlYWQtc2FmZSBvYmplY3RzLgotdGhyZWFkX3NhZmVfZmxhZ19zcGVjPSRsdF9bXV9MVF9BQ19UQUdWQVIodGhyZWFkX3NhZmVfZmxhZ19zcGVjLCAkMSkKLQotIyBMaWJyYXJ5IHZlcnNpb25pbmcgdHlwZS4KLXZlcnNpb25fdHlwZT0kdmVyc2lvbl90eXBlCi0KLSMgRm9ybWF0IG9mIGxpYnJhcnkgbmFtZSBwcmVmaXguCi1saWJuYW1lX3NwZWM9JGx0X2xpYm5hbWVfc3BlYwotCi0jIExpc3Qgb2YgYXJjaGl2ZSBuYW1lcy4gIEZpcnN0IG5hbWUgaXMgdGhlIHJlYWwgb25lLCB0aGUgcmVzdCBhcmUgbGlua3MuCi0jIFRoZSBsYXN0IG5hbWUgaXMgdGhlIG9uZSB0aGF0IHRoZSBsaW5rZXIgZmluZHMgd2l0aCAtbE5BTUUuCi1saWJyYXJ5X25hbWVzX3NwZWM9JGx0X2xpYnJhcnlfbmFtZXNfc3BlYwotCi0jIFRoZSBjb2RlZCBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBuYW1lLgotc29uYW1lX3NwZWM9JGx0X3NvbmFtZV9zcGVjCi0KLSMgQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhbmQgaW5zdGFsbCBhbiBvbGQtc3R5bGUgYXJjaGl2ZS4KLVJBTkxJQj0kbHRfUkFOTElCCi1vbGRfYXJjaGl2ZV9jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpCi1vbGRfcG9zdGluc3RhbGxfY21kcz0kbHRfb2xkX3Bvc3RpbnN0YWxsX2NtZHMKLW9sZF9wb3N0dW5pbnN0YWxsX2NtZHM9JGx0X29sZF9wb3N0dW5pbnN0YWxsX2NtZHMKLQotIyBDcmVhdGUgYW4gb2xkLXN0eWxlIGFyY2hpdmUgZnJvbSBhIHNoYXJlZCBhcmNoaXZlLgotb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0kbHRfW11fTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKQotCi0jIENyZWF0ZSBhIHRlbXBvcmFyeSBvbGQtc3R5bGUgYXJjaGl2ZSB0byBsaW5rIGluc3RlYWQgb2YgYSBzaGFyZWQgYXJjaGl2ZS4KLW9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMsICQxKQotCi0jIENvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYW5kIGluc3RhbGwgYSBzaGFyZWQgYXJjaGl2ZS4KLWFyY2hpdmVfY21kcz0kbHRfW11fTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpCi1hcmNoaXZlX2V4cHN5bV9jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpCi1wb3N0aW5zdGFsbF9jbWRzPSRsdF9wb3N0aW5zdGFsbF9jbWRzCi1wb3N0dW5pbnN0YWxsX2NtZHM9JGx0X3Bvc3R1bmluc3RhbGxfY21kcwotCi0jIENvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYSBsb2FkYWJsZSBtb2R1bGUgKGFzc3VtZWQgc2FtZSBhcyBhYm92ZSBpZiBlbXB0eSkKLW1vZHVsZV9jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKQotbW9kdWxlX2V4cHN5bV9jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSkKLQotIyBDb21tYW5kcyB0byBzdHJpcCBsaWJyYXJpZXMuCi1vbGRfc3RyaXBsaWI9JGx0X29sZF9zdHJpcGxpYgotc3RyaXBsaWI9JGx0X3N0cmlwbGliCi0KLSMgRGVwZW5kZW5jaWVzIHRvIHBsYWNlIGJlZm9yZSB0aGUgb2JqZWN0cyBiZWluZyBsaW5rZWQgdG8gY3JlYXRlIGEKLSMgc2hhcmVkIGxpYnJhcnkuCi1wcmVkZXBfb2JqZWN0cz0kbHRfW11fTFRfQUNfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSkKLQotIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYWZ0ZXIgdGhlIG9iamVjdHMgYmVpbmcgbGlua2VkIHRvIGNyZWF0ZSBhCi0jIHNoYXJlZCBsaWJyYXJ5LgotcG9zdGRlcF9vYmplY3RzPSRsdF9bXV9MVF9BQ19UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSkKLQotIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIHRoZSBvYmplY3RzIGJlaW5nIGxpbmtlZCB0byBjcmVhdGUgYQotIyBzaGFyZWQgbGlicmFyeS4KLXByZWRlcHM9JGx0X1tdX0xUX0FDX1RBR1ZBUihwcmVkZXBzLCAkMSkKLQotIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYWZ0ZXIgdGhlIG9iamVjdHMgYmVpbmcgbGlua2VkIHRvIGNyZWF0ZSBhCi0jIHNoYXJlZCBsaWJyYXJ5LgotcG9zdGRlcHM9JGx0X1tdX0xUX0FDX1RBR1ZBUihwb3N0ZGVwcywgJDEpCi0KLSMgVGhlIGRpcmVjdG9yaWVzIHNlYXJjaGVkIGJ5IHRoaXMgY29tcGlsZXIgd2hlbiBjcmVhdGluZyBhIHNoYXJlZAotIyBsaWJyYXJ5Ci1jb21waWxlcl9saWJfc2VhcmNoX2RpcnM9JGx0X1tdX0xUX0FDX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX2RpcnMsICQxKQotCi0jIFRoZSBsaWJyYXJ5IHNlYXJjaCBwYXRoIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgY29tcGlsZXIgd2hlbiBsaW5raW5nCi0jIGEgc2hhcmVkIGxpYnJhcnkuCi1jb21waWxlcl9saWJfc2VhcmNoX3BhdGg9JGx0X1tdX0xUX0FDX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKQotCi0jIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0KLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSBmaWxlX21hZ2ljLgotZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0KLSMgRmxhZyB0aGF0IGFsbG93cyBzaGFyZWQgbGlicmFyaWVzIHdpdGggdW5kZWZpbmVkIHN5bWJvbHMgdG8gYmUgYnVpbHQuCi1hbGxvd191bmRlZmluZWRfZmxhZz0kbHRfW11fTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSkKLQotIyBGbGFnIHRoYXQgZm9yY2VzIG5vIHVuZGVmaW5lZCBzeW1ib2xzLgotbm9fdW5kZWZpbmVkX2ZsYWc9JGx0X1tdX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpCi0KLSMgQ29tbWFuZHMgdXNlZCB0byBmaW5pc2ggYSBsaWJ0b29sIGxpYnJhcnkgaW5zdGFsbGF0aW9uIGluIGEgZGlyZWN0b3J5LgotZmluaXNoX2NtZHM9JGx0X2ZpbmlzaF9jbWRzCi0KLSMgU2FtZSBhcyBhYm92ZSwgYnV0IGEgc2luZ2xlIHNjcmlwdCBmcmFnbWVudCB0byBiZSBldmFsZWQgYnV0IG5vdCBzaG93bi4KLWZpbmlzaF9ldmFsPSRsdF9maW5pc2hfZXZhbAotCi0jIFRha2UgdGhlIG91dHB1dCBvZiBubSBhbmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXMuCi1nbG9iYWxfc3ltYm9sX3BpcGU9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUKLQotIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIHByb3BlciBDIGRlY2xhcmF0aW9uCi1nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbAotCi0jIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpcgotZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLQotIyBUaGlzIGlzIHRoZSBzaGFyZWQgbGlicmFyeSBydW50aW1lIHBhdGggdmFyaWFibGUuCi1ydW5wYXRoX3Zhcj0kcnVucGF0aF92YXIKLQotIyBUaGlzIGlzIHRoZSBzaGFyZWQgbGlicmFyeSBwYXRoIHZhcmlhYmxlLgotc2hsaWJwYXRoX3Zhcj0kc2hsaWJwYXRoX3ZhcgotCi0jIElzIHNobGlicGF0aCBzZWFyY2hlZCBiZWZvcmUgdGhlIGhhcmQtY29kZWQgbGlicmFyeSBzZWFyY2ggcGF0aD8KLXNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD0kc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoCi0KLSMgSG93IHRvIGhhcmRjb2RlIGEgc2hhcmVkIGxpYnJhcnkgcGF0aCBpbnRvIGFuIGV4ZWN1dGFibGUuCi1oYXJkY29kZV9hY3Rpb249JF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSkKLQotIyBXaGV0aGVyIHdlIHNob3VsZCBoYXJkY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gbGlicmFyaWVzLgotaGFyZGNvZGVfaW50b19saWJzPSRoYXJkY29kZV9pbnRvX2xpYnMKLQotIyBGbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkgZHVyaW5nIGxpbmtpbmcuCi0jIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgXCRsaWJkaXIgZG9lcyBub3QgZXhpc3QuCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSRsdF9bXV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpCi0KLSMgSWYgbGQgaXMgdXNlZCB3aGVuIGxpbmtpbmcsIGZsYWcgdG8gaGFyZGNvZGUgXCRsaWJkaXIgaW50bwotIyBhIGJpbmFyeSBkdXJpbmcgbGlua2luZy4gVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiBcJGxpYmRpciBkb2VzCi0jIG5vdCBleGlzdC4KLWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9JGx0X1tdX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSkKLQotIyBXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgLXJwYXRoIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KLWhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JGx0X1tdX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSkKLQotIyBTZXQgdG8geWVzIGlmIHVzaW5nIERJUi9saWJOQU1FJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0jIHJlc3VsdGluZyBiaW5hcnkuCi1oYXJkY29kZV9kaXJlY3Q9JF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSkKLQotIyBTZXQgdG8geWVzIGlmIHVzaW5nIHRoZSAtTERJUiBmbGFnIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKLSMgcmVzdWx0aW5nIGJpbmFyeS4KLWhhcmRjb2RlX21pbnVzX0w9JF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpCi0KLSMgU2V0IHRvIHllcyBpZiB1c2luZyBTSExJQlBBVEhfVkFSPURJUiBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8KLSMgdGhlIHJlc3VsdGluZyBiaW5hcnkuCi1oYXJkY29kZV9zaGxpYnBhdGhfdmFyPSRfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKQotCi0jIFNldCB0byB5ZXMgaWYgYnVpbGRpbmcgYSBzaGFyZWQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGhhcmRjb2RlcyBESVIgaW50byB0aGUgbGlicmFyeQotIyBhbmQgYWxsIHN1YnNlcXVlbnQgbGlicmFyaWVzIGFuZCBleGVjdXRhYmxlcyBsaW5rZWQgYWdhaW5zdCBpdC4KLWhhcmRjb2RlX2F1dG9tYXRpYz0kX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKQotCi0jIFZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMgc2hvdWxkIGJlIHNhdmVkIGluIGxpYnRvb2wgd3JhcHBlciBzY3JpcHRzIGFuZAotIyByZXN0b3JlZCBhdCByZWxpbmsgdGltZS4KLXZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiCi0KLSMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotbGlua19hbGxfZGVwbGlicz0kX0xUX0FDX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSkKLQotIyBDb21waWxlLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXMKLXN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kbHRfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCi0KLSMgUnVuLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXMKLXN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRsdF9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYwotCi0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0KLSMgU2V0IHRvIHllcyBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLWFsd2F5c19leHBvcnRfc3ltYm9scz0kX0xUX0FDX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKQotCi0jIFRoZSBjb21tYW5kcyB0byBsaXN0IGV4cG9ydGVkIHN5bWJvbHMuCi1leHBvcnRfc3ltYm9sc19jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpCi0KLSMgVGhlIGNvbW1hbmRzIHRvIGV4dHJhY3QgdGhlIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gYSBzaGFyZWQgYXJjaGl2ZS4KLWV4dHJhY3RfZXhwc3ltc19jbWRzPSRsdF9leHRyYWN0X2V4cHN5bXNfY21kcwotCi0jIFN5bWJvbHMgdGhhdCBzaG91bGQgbm90IGJlIGxpc3RlZCBpbiB0aGUgcHJlbG9hZGVkIHN5bWJvbHMuCi1leGNsdWRlX2V4cHN5bXM9JGx0X1tdX0xUX0FDX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKQotCi0jIFN5bWJvbHMgdGhhdCBtdXN0IGFsd2F5cyBiZSBleHBvcnRlZC4KLWluY2x1ZGVfZXhwc3ltcz0kbHRfW11fTFRfQUNfVEFHVkFSKGluY2x1ZGVfZXhwc3ltcywgJDEpCi0KLWlmZWxzZShbJDFdLFtdLAotWyMgIyMjIEVORCBMSUJUT09MIENPTkZJR10sCi1bIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogJHRhZ25hbWVdKQotCi1fX0VPRl9fCi0KLWlmZWxzZShbJDFdLFtdLCBbCi0gIGNhc2UgJGhvc3Rfb3MgaW4KLSAgYWl4MyopCi0gICAgY2F0IDw8XEVPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgQUlYIHNvbWV0aW1lcyBoYXMgcHJvYmxlbXMgd2l0aCB0aGUgR0NDIGNvbGxlY3QyIHByb2dyYW0uICBGb3Igc29tZQotIyByZWFzb24sIGlmIHdlIHNldCB0aGUgQ09MTEVDVF9OQU1FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHByb2JsZW1zCi0jIHZhbmlzaCBpbiBhIHB1ZmYgb2Ygc21va2UuCi1pZiB0ZXN0ICJYJHtDT0xMRUNUX05BTUVTK3NldH0iICE9IFhzZXQ7IHRoZW4KLSAgQ09MTEVDVF9OQU1FUz0KLSAgZXhwb3J0IENPTExFQ1RfTkFNRVMKLWZpCi1FT0YKLSAgICA7OwotICBlc2FjCi0KLSAgIyBXZSB1c2Ugc2VkIGluc3RlYWQgb2YgY2F0IGJlY2F1c2UgYmFzaCBvbiBESkdQUCBnZXRzIGNvbmZ1c2VkIGlmCi0gICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLSAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLQotICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8IFwKLSAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICBjaG1vZCAreCAiJG9maWxlIgotXSkKLWVsc2UKLSAgIyBJZiB0aGVyZSBpcyBubyBNYWtlZmlsZSB5ZXQsIHdlIHJlbHkgb24gYSBtYWtlIHJ1bGUgdG8gZXhlY3V0ZQotICAjIGBjb25maWcuc3RhdHVzIC0tcmVjaGVjaycgdG8gcmVydW4gdGhlc2UgdGVzdHMgYW5kIGNyZWF0ZSB0aGUKLSAgIyBsaWJ0b29sIHNjcmlwdCB0aGVuLgotICBsdG1haW5faW49YGVjaG8gJGx0bWFpbiB8IHNlZCAtZSAncy9cLnNoJC8uaW4vJ2AKLSAgaWYgdGVzdCAtZiAiJGx0bWFpbl9pbiI7IHRoZW4KLSAgICB0ZXN0IC1mIE1ha2VmaWxlICYmIG1ha2UgIiRsdG1haW4iCi0gIGZpCi1maQotXSkjIEFDX0xJQlRPT0xfQ09ORklHCi0KLQotIyBBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfTk9fUlRUSShbVEFHTkFNRV0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfTk9fUlRUSV0sCi1bQUNfUkVRVUlSRShbX0xUX0FDX1NZU19DT01QSUxFUl0pZG5sCi0KLV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0KLQotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLWZuby1idWlsdGluJwotCi0gIEFDX0xJQlRPT0xfQ09NUElMRVJfT1BUSU9OKFtpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9uc10sCi0gICAgbHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnMsCi0gICAgWy1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnNdLCBbXSwKLSAgICBbX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPSIkX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMiXSkKLWZpCi1dKSMgQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX05PX1JUVEkKLQotCi0jIEFDX0xJQlRPT0xfU1lTX0dMT0JBTF9TWU1CT0xfUElQRQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEVdLAotW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKLUFDX1JFUVVJUkUoW0xUX0FDX1BST0dfU0VEXSkKLUFDX1JFUVVJUkUoW0FDX1BST0dfTk1dKQotQUNfUkVRVUlSRShbQUNfT0JKRVhUXSkKLSMgQ2hlY2sgZm9yIGNvbW1hbmQgdG8gZ3JhYiB0aGUgcmF3IHN5bWJvbCBuYW1lIGZvbGxvd2VkIGJ5IEMgc3ltYm9sIGZyb20gbm0uCi1BQ19NU0dfQ0hFQ0tJTkcoW2NvbW1hbmQgdG8gcGFyc2UgJE5NIG91dHB1dCBmcm9tICRjb21waWxlciBvYmplY3RdKQotQUNfQ0FDSEVfVkFMKFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwKLVsKLSMgVGhlc2UgYXJlIHNhbmUgZGVmYXVsdHMgdGhhdCB3b3JrIG9uIGF0IGxlYXN0IGEgZmV3IG9sZCBzeXN0ZW1zLgotIyBbVGhleSBjb21lIGZyb20gVWx0cml4LiAgV2hhdCBjb3VsZCBiZSBvbGRlciB0aGFuIFVsdHJpeD8hISA7KV0KLQotIyBDaGFyYWN0ZXIgY2xhc3MgZGVzY3JpYmluZyBOTSBnbG9iYWwgc3ltYm9sIGNvZGVzLgotc3ltY29kZT0nW1tCQ0RFR1JTVF1dJwotCi0jIFJlZ2V4cCB0byBtYXRjaCBzeW1ib2xzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGZyb20gQy4KLXN5bXBhdD0nXChbW19BLVphLXpdXVtbX0EtWmEtejAtOV1dKlwpJwotCi0jIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBhIHByb3BlciBDIGRlY2xhcmF0aW9uCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL14uIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMTsvcCciCi0KLSMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsIChsdF9wdHIpIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUgXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKGx0X3B0cikgXCZcMn0sL3AnIgotCi0jIERlZmluZSBzeXN0ZW0tc3BlY2lmaWMgdmFyaWFibGVzLgotY2FzZSAkaG9zdF9vcyBpbgotYWl4KikKLSAgc3ltY29kZT0nW1tCQ0RUXV0nCi0gIDs7Ci1jeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0gIHN5bWNvZGU9J1tbQUJDREdJU1RXXV0nCi0gIDs7Ci1ocHV4KikgIyBJdHMgbGlua2VyIGRpc3Rpbmd1aXNoZXMgZGF0YSBmcm9tIGNvZGUgc3ltYm9scwotICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotICAgIHN5bWNvZGU9J1tbQUJDREVHUlNUXV0nCi0gIGZpCi0gIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAobHRfcHRyKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAobHRfcHRyKSBcJlwyfSwvcCciCi0gIDs7Ci1saW51eCogfCBrKmJzZCotZ251KQotICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotICAgIHN5bWNvZGU9J1tbQUJDREdJUlNUV11dJwotICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsIChsdF9wdHIpIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsIChsdF9wdHIpIFwmXDJ9LC9wJyIKLSAgZmkKLSAgOzsKLWlyaXgqIHwgbm9uc3RvcHV4KikKLSAgc3ltY29kZT0nW1tCQ0RFR1JTVF1dJwotICA7Owotb3NmKikKLSAgc3ltY29kZT0nW1tCQ0RFR1FSU1RdXScKLSAgOzsKLXNvbGFyaXMqKQotICBzeW1jb2RlPSdbW0JEUlRdXScKLSAgOzsKLXNjbzMuMnY1KikKLSAgc3ltY29kZT0nW1tEVF1dJwotICA7Owotc3lzdjQuMnV3MiopCi0gIHN5bWNvZGU9J1tbRFRdXScKLSAgOzsKLXN5c3Y1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCopCi0gIHN5bWNvZGU9J1tbQUJEVF1dJwotICA7Owotc3lzdjQpCi0gIHN5bWNvZGU9J1tbREZOU1RVXV0nCi0gIDs7Ci1lc2FjCi0KLSMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotb3B0X2NyPQotY2FzZSAkYnVpbGRfb3MgaW4KLW1pbmd3KikKLSAgb3B0X2NyPWBlY2hvICd4XHswLDFcfScgfCB0ciB4ICdcMDE1J2AgIyBvcHRpb24gY3IgaW4gcmVnZXhwCi0gIDs7Ci1lc2FjCi0KLSMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHVzZSBpdHMgc3RhbmRhcmQgc3ltYm9sIGNvZGVzLgotY2FzZSBgJE5NIC1WIDI+JjFgIGluCi0qR05VKiB8ICond2l0aCBCRkQnKikKLSAgc3ltY29kZT0nW1tBQkNER0lSU1RXXV0nIDs7Ci1lc2FjCi0KLSMgVHJ5IHdpdGhvdXQgYSBwcmVmaXggdW5kZXJjb3JlLCB0aGVuIHdpdGggaXQuCi1mb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0KLSAgIyBUcmFuc2Zvcm0gc3ltY29kZSwgc3ltcGF0LCBhbmQgc3ltcHJmeCBpbnRvIGEgcmF3IHN5bWJvbCBhbmQgYSBDIHN5bWJvbC4KLSAgc3lteGZybT0iXFwxICRhY19zeW1wcmZ4XFwyIFxcMiIKLQotICAjIFdyaXRlIHRoZSByYXcgYW5kIEMgaWRlbnRpZmllcnMuCi0gIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbWyAJXV1cKCRzeW1jb2RlJHN5bWNvZGUqXClbWyAJXV1bWyAJXV0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0KLSAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gIHBpcGVfd29ya3M9bm8KLQotICBybSAtZiBjb25mdGVzdCoKLSAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotY2hhciBubV90ZXN0X3ZhcjsKLXZvaWQgbm1fdGVzdF9mdW5jKCl7fQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLWludCBtYWluKCl7bm1fdGVzdF92YXI9J2EnO25tX3Rlc3RfZnVuYygpO3JldHVybigwKTt9Ci1FT0YKLQotICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotICAgICMgTm93IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgotICAgIG5saXN0PWNvbmZ0ZXN0Lm5tCi0gICAgaWYgQUNfVFJZX0VWQUwoTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkbmxpc3QpICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KLSAgICAgICMgVHJ5IHNvcnRpbmcgYW5kIHVuaXF1aWZ5aW5nIHRoZSBvdXRwdXQuCi0gICAgICBpZiBzb3J0ICIkbmxpc3QiIHwgdW5pcSA+ICIkbmxpc3QiVDsgdGhlbgotCW12IC1mICIkbmxpc3QiVCAiJG5saXN0IgotICAgICAgZWxzZQotCXJtIC1mICIkbmxpc3QiVAotICAgICAgZmkKLQotICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3ZSBzbmFnZ2VkIGFsbCB0aGUgc3ltYm9scyB3ZSBuZWVkLgotICAgICAgaWYgZ3JlcCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotCWlmIGdyZXAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0JICBjYXQgPDxFT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLUVPRgotCSAgIyBOb3cgZ2VuZXJhdGUgdGhlIHN5bWJvbCBmaWxlLgotCSAgZXZhbCAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIicgPCAiJG5saXN0IiB8IGdyZXAgLXYgbWFpbiA+PiBjb25mdGVzdC4kYWNfZXh0JwotCi0JICBjYXQgPDxFT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotI2lmIGRlZmluZWQgKF9fU1REQ19fKSAmJiBfX1NURENfXwotIyBkZWZpbmUgbHRfcHRyX3Qgdm9pZCAqCi0jZWxzZQotIyBkZWZpbmUgbHRfcHRyX3QgY2hhciAqCi0jIGRlZmluZSBjb25zdAotI2VuZGlmCi0KLS8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAqLwotY29uc3Qgc3RydWN0IHsKLSAgY29uc3QgY2hhciAqbmFtZTsKLSAgbHRfcHRyX3QgYWRkcmVzczsKLX0KLWx0X3ByZWxvYWRlZF9zeW1ib2xzW1tdXSA9Ci17Ci1FT0YKLQkgICRTRUQgInMvXiRzeW1jb2RlJHN5bWNvZGUqIFwoLipcKSBcKC4qXCkkLyAge1wiXDJcIiwgKGx0X3B0cl90KSBcJlwyfSwvIiA8ICIkbmxpc3QiIHwgZ3JlcCAtdiBtYWluID4+IGNvbmZ0ZXN0LiRhY19leHQKLQkgIGNhdCA8PFxFT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotICB7MCwgKGx0X3B0cl90KSAwfQotfTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLUVPRgotCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLQkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLQkgIENGTEFHUz0iJENGTEFHUyRfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCi0JICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0JICAgIHBpcGVfd29ya3M9eWVzCi0JICBmaQotCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotCWVsc2UKLQkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKLQlmaQotICAgICAgZWxzZQotCWVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfdmFyIGluICRubGlzdCIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgZmkKLSAgICBlbHNlCi0gICAgICBlY2hvICJjYW5ub3QgcnVuICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiA+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAgZmkKLSAgZWxzZQotICAgIGVjaG8gIiRwcm9nbmFtZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotICBmaQotICBybSAtcmYgY29uZnRlc3QqIGNvbmZ0c3QqCi0KLSAgIyBEbyBub3QgdXNlIHRoZSBnbG9iYWxfc3ltYm9sX3BpcGUgdW5sZXNzIGl0IHdvcmtzLgotICBpZiB0ZXN0ICIkcGlwZV93b3JrcyIgPSB5ZXM7IHRoZW4KLSAgICBicmVhawotICBlbHNlCi0gICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0KLSAgZmkKLWRvbmUKLV0pCi1pZiB0ZXN0IC16ICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLSAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9Ci1maQotaWYgdGVzdCAteiAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiOyB0aGVuCi0gIEFDX01TR19SRVNVTFQoZmFpbGVkKQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG9rKQotZmkKLV0pICMgQUNfTElCVE9PTF9TWVNfR0xPQkFMX1NZTUJPTF9QSVBFCi0KLQotIyBBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfUElDKFtUQUdOQU1FXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX1BJQ10sCi1bX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Ci0KLUFDX01TR19DSEVDS0lORyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdKQotIGlmZWxzZShbJDFdLFtDWFhdLFsKLSAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgotICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKLQotICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBhaXgqKQotICAgICAgIyBBbGwgQUlYIGNvZGUgaXMgUElDLgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICBmaQotICAgICAgOzsKLSAgICBhbWlnYW9zKikKLSAgICAgICMgRklYTUU6IHdlIG5lZWQgYXQgbGVhc3QgNjgwMjAgY29kZSB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzLCBidXQKLSAgICAgICMgYWRkaW5nIHRoZSBgLW02ODAyMCcgZmxhZyB0byBHQ0MgcHJldmVudHMgYnVpbGRpbmcgYW55dGhpbmcgYmV0dGVyLAotICAgICAgIyBsaWtlIGAtbTY4MDQwJy4KLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLW02ODAyMCAtcmVzaWRlbnQzMiAtbWFsd2F5cy1yZXN0b3JlLWE0JwotICAgICAgOzsKLSAgICBiZW9zKiB8IGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCogfCBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCi0gICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgT1Nlcy4KLSAgICAgIDs7Ci0gICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKikKLSAgICAgICMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKLSAgICAgICMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCi0gICAgICAjIEFsdGhvdWdoIHRoZSBjeWd3aW4gZ2NjIGlnbm9yZXMgLWZQSUMsIHN0aWxsIG5lZWQgdGhpcyBmb3Igb2xkLXN0eWxlCi0gICAgICAjICgtLWRpc2FibGUtYXV0by1pbXBvcnQpIGxpYnJhcmllcwotICAgICAgbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAotCVtfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQotICAgICAgOzsKLSAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgb24gdGhpcyBwbGF0Zm9ybQotICAgICAgIyBDb21tb24gc3ltYm9scyBub3QgYWxsb3dlZCBpbiBNSF9EWUxJQiBmaWxlcwotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZm5vLWNvbW1vbicKLSAgICAgIDs7Ci0gICAgKmRqZ3BwKikKLSAgICAgICMgREpHUFAgZG9lcyBub3Qgc3VwcG9ydCBzaGFyZWQgbGlicmFyaWVzIGF0IGFsbAotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQotICAgICAgOzsKLSAgICBpbnRlcml4W1szLTldXSopCi0gICAgICAjIEludGVyaXggMy54IGdjYyAtZnBpYy8tZlBJQyBvcHRpb25zIGdlbmVyYXRlIGJyb2tlbiBjb2RlLgotICAgICAgIyBJbnN0ZWFkLCB3ZSByZWxvY2F0ZSBzaGFyZWQgbGlicmFyaWVzIGF0IHJ1bnRpbWUuCi0gICAgICA7OwotICAgIHN5c3Y0Kk1QKikKLSAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9LUtjb25mb3JtX3BpYwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgaHB1eCopCi0gICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgSUE2NCBIUC1VWCBhbmQgNjQtYml0IEhQLVVYLCBidXQKLSAgICAgICMgbm90IGZvciBQQSBIUC1VWC4KLSAgICAgIGNhc2UgJGhvc3RfY3B1IGluCi0gICAgICBocHBhKjY0KnxpYTY0KikKLQk7OwotICAgICAgKikKLQlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJwotCTs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgICopCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJwotICAgICAgOzsKLSAgICBlc2FjCi0gIGVsc2UKLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgICBhaXhbWzQtOV1dKikKLQkjIEFsbCBBSVggY29kZSBpcyBQSUMuCi0JaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkgICMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCi0JICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCWVsc2UKLQkgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLWJuc28gLWJJOi9saWIvc3lzY2FsbHMuZXhwJwotCWZpCi0JOzsKLSAgICAgIGNob3J1cyopCi0JY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQljeGNoNjgqKQotCSAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKLQkgICMgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSItLW5vX2F1dG9faW5zdGFudGlhdGlvbiAtdSBfX21haW4gLXUgX19wcmVtYWluIC11IF9hYm9ydCAtciAkQ09PTF9ESVIvbGliL2xpYk9yYi5hICRNVk1FX0RJUi9saWIvQ0MvbGliQy5hICRNVk1FX0RJUi9saWIvY2xhc3NpeC9saWJjeC5zLmEiCi0JICA7OwotCWVzYWMKLQk7OwotICAgICAgIGRhcndpbiopCi0gICAgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBvbiB0aGlzIHBsYXRmb3JtCi0gICAgICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCi0gICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICAgICB4bGMqKQotICAgICAgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1xbm9jb21tb24nCi0gICAgICAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotICAgICAgICAgICA7OwotICAgICAgICAgZXNhYwotICAgICAgIDs7Ci0gICAgICBkZ3V4KikKLQljYXNlICRjY19iYXNlbmFtZSBpbgotCSAgZWMrKyopCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0JICAgIDs7Ci0JICBnaGN4KikKLQkgICAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcGljJwotCSAgICA7OwotCSAgKikKLQkgICAgOzsKLQllc2FjCi0JOzsKLSAgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLQkjIEZyZWVCU0QgdXNlcyBHTlUgQysrCi0JOzsKLSAgICAgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQotCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBDQyopCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR7d2x9LWEgJHt3bH1hcmNoaXZlJwotCSAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQ7IHRoZW4KLQkgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JytaJwotCSAgICBmaQotCSAgICA7OwotCSAgYUNDKikKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nJHt3bH0tYSAke3dsfWFyY2hpdmUnCi0JICAgIGNhc2UgJGhvc3RfY3B1IGluCi0JICAgIGhwcGEqNjQqfGlhNjQqKQotCSAgICAgICMgK1ogdGhlIGRlZmF1bHQKLQkgICAgICA7OwotCSAgICAqKQotCSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nK1onCi0JICAgICAgOzsKLQkgICAgZXNhYwotCSAgICA7OwotCSAgKikKLQkgICAgOzsKLQllc2FjCi0JOzsKLSAgICAgIGludGVyaXgqKQotCSMgVGhpcyBpcyBjODksIHdoaWNoIGlzIE1TIFZpc3VhbCBDKysgKG5vIHNoYXJlZCBsaWJzKQotCSMgQW55b25lIHdhbnRzIHRvIGRvIGEgcG9ydD8KLQk7OwotICAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLQljYXNlICRjY19iYXNlbmFtZSBpbgotCSAgQ0MqKQotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKLQkgICAgIyBDQyBwaWMgZmxhZyAtS1BJQyBpcyB0aGUgZGVmYXVsdC4KLQkgICAgOzsKLQkgICopCi0JICAgIDs7Ci0JZXNhYwotCTs7Ci0gICAgICBsaW51eCogfCBrKmJzZCotZ251KQotCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBLQ0MqKQotCSAgICAjIEtBSSBDKysgQ29tcGlsZXIKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy0tYmFja2VuZCAtV2wsJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJwotCSAgICA7OwotCSAgaWNwYyogfCBlY3BjKikKLQkgICAgIyBJbnRlbCBDKysKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKLQkgICAgOzsKLQkgIHBnQ0MqIHwgcGdjcHAqKQotCSAgICAjIFBvcnRsYW5kIEdyb3VwIEMrKyBjb21waWxlci4KLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZwaWMnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0JICAgIDs7Ci0JICBjeHgqKQotCSAgICAjIENvbXBhcSBDKysKLQkgICAgIyBNYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGlzIGVtcHR5LiAgSXQgYXBwZWFycyB0aGF0IGFsbCBBbHBoYQotCSAgICAjIExpbnV4IGFuZCBDb21wYXEgVHJ1NjQgVW5peCBvYmplY3RzIGFyZSBQSUMuCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKLQkgICAgOzsKLQkgICopCi0JICAgIGNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgotCSAgICAqU3VuXCBDKikKLQkgICAgICAjIFN1biBDKysgNS45Ci0JICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKLQkgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnCi0JICAgICAgOzsKLQkgICAgZXNhYwotCSAgICA7OwotCWVzYWMKLQk7OwotICAgICAgbHlueG9zKikKLQk7OwotICAgICAgbTg4ayopCi0JOzsKLSAgICAgIG12cyopCi0JY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQkgIGN4eCopCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVcgYyxleHBvcnRhbGwnCi0JICAgIDs7Ci0JICAqKQotCSAgICA7OwotCWVzYWMKLQk7OwotICAgICAgbmV0YnNkKikKLQk7OwotICAgICAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQotCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBLQ0MqKQotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLS1iYWNrZW5kIC1XbCwnCi0JICAgIDs7Ci0JICBSQ0MqKQotCSAgICAjIFJhdGlvbmFsIEMrKyAyLjQuMQotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCi0JICAgIDs7Ci0JICBjeHgqKQotCSAgICAjIERpZ2l0YWwvQ29tcGFxIEMrKwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLQkgICAgIyBNYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGlzIGVtcHR5LiAgSXQgYXBwZWFycyB0aGF0IGFsbCBBbHBoYQotCSAgICAjIExpbnV4IGFuZCBDb21wYXEgVHJ1NjQgVW5peCBvYmplY3RzIGFyZSBQSUMuCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKLQkgICAgOzsKLQkgICopCi0JICAgIDs7Ci0JZXNhYwotCTs7Ci0gICAgICBwc29zKikKLQk7OwotICAgICAgc29sYXJpcyopCi0JY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQkgIENDKikKLQkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJwotCSAgICA7OwotCSAgZ2N4KikKLQkgICAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJwotCSAgICA7OwotCSAgKikKLQkgICAgOzsKLQllc2FjCi0JOzsKLSAgICAgIHN1bm9zNCopCi0JY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQkgIENDKikKLQkgICAgIyBTdW4gQysrIDQueAotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0JICAgIDs7Ci0JICBsY2MqKQotCSAgICAjIEx1Y2lkCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXBpYycKLQkgICAgOzsKLQkgICopCi0JICAgIDs7Ci0JZXNhYwotCTs7Ci0gICAgICB0YW5kZW0qKQotCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBOQ0MqKQotCSAgICAjIE5vblN0b3AtVVggTkNDIDMuMjAKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKLQkgICAgOzsKLQkgICopCi0JICAgIDs7Ci0JZXNhYwotCTs7Ci0gICAgICBzeXN2NSogfCB1bml4d2FyZSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgT3BlblVOSVgqKQotCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBDQyopCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCSAgICA7OwotCWVzYWMKLQk7OwotICAgICAgdnh3b3JrcyopCi0JOzsKLSAgICAgICopCi0JX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX2Nhbl9idWlsZF9zaGFyZWQsICQxKT1ubwotCTs7Ci0gICAgZXNhYwotICBmaQotXSwKLVsKLSAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCi0KLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgICBhaXgqKQotICAgICAgIyBBbGwgQUlYIGNvZGUgaXMgUElDLgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIGFtaWdhb3MqKQotICAgICAgIyBGSVhNRTogd2UgbmVlZCBhdCBsZWFzdCA2ODAyMCBjb2RlIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dAotICAgICAgIyBhZGRpbmcgdGhlIGAtbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCi0gICAgICAjIGxpa2UgYC1tNjgwNDAnLgotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctbTY4MDIwIC1yZXNpZGVudDMyIC1tYWx3YXlzLXJlc3RvcmUtYTQnCi0gICAgICA7OwotCi0gICAgYmVvcyogfCBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqIHwgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQotICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZXNlIE9TZXMuCi0gICAgICA7OwotCi0gICAgbWluZ3cqIHwgY3lnd2luKiB8IHB3MzIqIHwgb3MyKikKLSAgICAgICMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKLSAgICAgICMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCi0gICAgICAjIEFsdGhvdWdoIHRoZSBjeWd3aW4gZ2NjIGlnbm9yZXMgLWZQSUMsIHN0aWxsIG5lZWQgdGhpcyBmb3Igb2xkLXN0eWxlCi0gICAgICAjICgtLWRpc2FibGUtYXV0by1pbXBvcnQpIGxpYnJhcmllcwotICAgICAgbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAotCVtfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQotICAgICAgOzsKLQotICAgIGRhcndpbiogfCByaGFwc29keSopCi0gICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBvbiB0aGlzIHBsYXRmb3JtCi0gICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mbm8tY29tbW9uJwotICAgICAgOzsKLQotICAgIGludGVyaXhbWzMtOV1dKikKLSAgICAgICMgSW50ZXJpeCAzLnggZ2NjIC1mcGljLy1mUElDIG9wdGlvbnMgZ2VuZXJhdGUgYnJva2VuIGNvZGUuCi0gICAgICAjIEluc3RlYWQsIHdlIHJlbG9jYXRlIHNoYXJlZCBsaWJyYXJpZXMgYXQgcnVudGltZS4KLSAgICAgIDs7Ci0KLSAgICBtc2Rvc2RqZ3BwKikKLSAgICAgICMgSnVzdCBiZWNhdXNlIHdlIHVzZSBHQ0MgZG9lc24ndCBtZWFuIHdlIHN1ZGRlbmx5IGdldCBzaGFyZWQgbGlicmFyaWVzCi0gICAgICAjIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZW0uCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vCi0gICAgICBlbmFibGVfc2hhcmVkPW5vCi0gICAgICA7OwotCi0gICAgc3lzdjQqTVAqKQotICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0tS2NvbmZvcm1fcGljCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIGhwdXgqKQotICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIElBNjQgSFAtVVggYW5kIDY0LWJpdCBIUC1VWCwgYnV0Ci0gICAgICAjIG5vdCBmb3IgUEEgSFAtVVguCi0gICAgICBjYXNlICRob3N0X2NwdSBpbgotICAgICAgaHBwYSo2NCp8aWE2NCopCi0JIyArWiB0aGUgZGVmYXVsdAotCTs7Ci0gICAgICAqKQotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0KLSAgICAqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKLSAgICAgIDs7Ci0gICAgZXNhYwotICBlbHNlCi0gICAgIyBQT1JUTUUgQ2hlY2sgZm9yIGZsYWcgdG8gcGFzcyBsaW5rZXIgZmxhZ3MgdGhyb3VnaCB0aGUgc3lzdGVtIGNvbXBpbGVyLgotICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBhaXgqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotCSMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCi0JX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ibnNvIC1iSTovbGliL3N5c2NhbGxzLmV4cCcKLSAgICAgIGZpCi0gICAgICA7OwotICAgICAgZGFyd2luKikKLSAgICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgb24gdGhpcyBwbGF0Zm9ybQotICAgICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgIHhsYyopCi0gICAgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1xbm9jb21tb24nCi0gICAgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLSAgICAgICAgIDs7Ci0gICAgICAgZXNhYwotICAgICAgIDs7Ci0KLSAgICBtaW5ndyogfCBjeWd3aW4qIHwgcHczMiogfCBvczIqKQotICAgICAgIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZwotICAgICAgIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KLSAgICAgIG00X2lmKFskMV0sIFtHQ0pdLCBbXSwKLQlbX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKLSAgICAgIDs7Ci0KLSAgICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIElBNjQgSFAtVVggYW5kIDY0LWJpdCBIUC1VWCwgYnV0Ci0gICAgICAjIG5vdCBmb3IgUEEgSFAtVVguCi0gICAgICBjYXNlICRob3N0X2NwdSBpbgotICAgICAgaHBwYSo2NCp8aWE2NCopCi0JIyArWiB0aGUgZGVmYXVsdAotCTs7Ci0gICAgICAqKQotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nK1onCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgICMgSXMgdGhlcmUgYSBiZXR0ZXIgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgdGhhdCB3b3JrcyB3aXRoIHRoZSBidW5kbGVkIENDPwotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPScke3dsfS1hICR7d2x9YXJjaGl2ZScKLSAgICAgIDs7Ci0KLSAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0gICAgICAjIFBJQyAod2l0aCAtS1BJQykgaXMgdGhlIGRlZmF1bHQuCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwotICAgICAgOzsKLQotICAgIG5ld3NvczYpCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLSAgICAgIDs7Ci0KLSAgICBsaW51eCogfCBrKmJzZCotZ251KQotICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGljYyogfCBlY2MqKQotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0JX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJwotICAgICAgICA7OwotICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCi0gICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0JIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLQlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLQlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mcGljJwotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICAgIDs7Ci0gICAgICBjY2MqKQotICAgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLSAgICAgICAgIyBBbGwgQWxwaGEgY29kZSBpcyBQSUMuCi0gICAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCi0gICAgICAgIDs7Ci0gICAgICAqKQotICAgICAgICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KLQkqU3VuXCBDKikKLQkgICMgU3VuIEMgNS45Ci0JICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotCSAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLQkgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotCSAgOzsKLQkqU3VuXCBGKikKLQkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKLQkgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0JICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCSAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9JycKLQkgIDs7Ci0JZXNhYwotCTs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotCi0gICAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0gICAgICAjIEFsbCBPU0YvMSBjb2RlIGlzIFBJQy4KLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCi0gICAgICA7OwotCi0gICAgcmRvcyopCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwotICAgICAgOzsKLQotICAgIHNvbGFyaXMqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICopCi0JX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0KLSAgICBzdW5vczQqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICcKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICA7OwotCi0gICAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLSAgICAgIDs7Ci0KLSAgICBzeXN2NCpNUCopCi0gICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjIDt0aGVuCi0JX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS2NvbmZvcm1fcGljJwotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIHN5c3Y1KiB8IHVuaXh3YXJlKiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCBPcGVuVU5JWCopCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotICAgICAgOzsKLQotICAgIHVuaWNvcyopCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9jYW5fYnVpbGRfc2hhcmVkLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICB1dHM0KikKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXBpYycKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICA7OwotCi0gICAgKikKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9jYW5fYnVpbGRfc2hhcmVkLCAkMSk9bm8KLSAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotXSkKLUFDX01TR19SRVNVTFQoWyRfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQotCi0jCi0jIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0jCi1pZiB0ZXN0IC1uICIkX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIjsgdGhlbgotICBBQ19MSUJUT09MX0NPTVBJTEVSX09QVElPTihbaWYgJGNvbXBpbGVyIFBJQyBmbGFnICRfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkgd29ya3NdLAotICAgIF9MVF9BQ19UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3MsICQxKSwKLSAgICBbJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKWlmZWxzZShbJDFdLFtdLFsgLURQSUNdLFtpZmVsc2UoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKV0sIFtdLAotICAgIFtjYXNlICRfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkgaW4KLSAgICAgIiIgfCAiICIqKSA7OwotICAgICAqKSBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiAkX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIiA7OwotICAgICBlc2FjXSwKLSAgICBbX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQotICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vXSkKLWZpCi1jYXNlICRob3N0X29zIGluCi0gICMgRm9yIHBsYXRmb3JtcyB3aGljaCBkbyBub3Qgc3VwcG9ydCBQSUMsIC1EUElDIGlzIG1lYW5pbmdsZXNzOgotICAqZGpncHAqKQotICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KLSAgICA7OwotICAqKQotICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0iJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKWlmZWxzZShbJDFdLFtdLFsgLURQSUNdLFtpZmVsc2UoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKLSAgICA7OwotZXNhYwotCi0jCi0jIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0jCi13bD0kX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkgZXZhbCBsdF90bXBfc3RhdGljX2ZsYWc9XCIkX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpXCIKLUFDX0xJQlRPT0xfTElOS0VSX09QVElPTihbaWYgJGNvbXBpbGVyIHN0YXRpYyBmbGFnICRsdF90bXBfc3RhdGljX2ZsYWcgd29ya3NdLAotICBfTFRfQUNfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzLCAkMSksCi0gICRsdF90bXBfc3RhdGljX2ZsYWcsCi0gIFtdLAotICBbX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPV0pCi1dKQotCi0KLSMgQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUyhbVEFHTkFNRV0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBTZWUgaWYgdGhlIGxpbmtlciBzdXBwb3J0cyBidWlsZGluZyBzaGFyZWQgbGlicmFyaWVzLgotQUNfREVGVU4oW0FDX0xJQlRPT0xfUFJPR19MRF9TSExJQlNdLAotW0FDX1JFUVVJUkUoW0xUX0FDX1BST0dfU0VEXSlkbmwKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKLWlmZWxzZShbJDFdLFtDWFhdLFsKLSAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSAgY2FzZSAkaG9zdF9vcyBpbgotICBhaXhbWzQtOV1dKikKLSAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLSAgICAjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCi0gICAgaWYgJE5NIC1WIDI+JjEgfCBncmVwICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFxbJF0yID09ICJUIikgfHwgKFxbJF0yID09ICJEIikgfHwgKFxbJF0yID09ICJCIikpICYmIChbc3Vic3RyXShcWyRdMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXFskXTMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCi0gICAgZWxzZQotICAgICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXFskXTIgPT0gIlQiKSB8fCAoXFskXTIgPT0gIkQiKSB8fCAoXFskXTIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFxbJF0zLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcWyRdMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKLSAgICBmaQotICAgIDs7Ci0gIHB3MzIqKQotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSIkbHRkbGxfY21kcyIKLSAgOzsKLSAgY3lnd2luKiB8IG1pbmd3KikKLSAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLzsvXi4qW1sgXV1fX25tX18vcy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotICA7OwotICAqKQotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0gIDs7Ci0gIGVzYWMKLSAgX0xUX0FDX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCi1dLFsKLSAgcnVucGF0aF92YXI9Ci0gIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KLSAgX0xUX0FDX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KLSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0KLSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9Ci0gIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfRnJvbV9uZXdfY21kcywgJDEpPQotICBfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzLCAkMSk9Ci0gIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Ci0gIF9MVF9BQ19UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KLSAgX0xUX0FDX1RBR1ZBUih0aHJlYWRfc2FmZV9mbGFnX3NwZWMsICQxKT0KLSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci0gIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQotICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KLSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwotICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwotICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZAotICBfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCi0gIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KLSAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPQotICBfTFRfQUNfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQotICBfTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0gIF9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0gICMgaW5jbHVkZV9leHBzeW1zIHNob3VsZCBiZSBhIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIHN5bWJvbHMgdG8gYmUgKmFsd2F5cyoKLSAgIyBpbmNsdWRlZCBpbiB0aGUgc3ltYm9sIGxpc3QKLSAgX0xUX0FDX1RBR1ZBUihpbmNsdWRlX2V4cHN5bXMsICQxKT0KLSAgIyBleGNsdWRlX2V4cHN5bXMgY2FuIGJlIGFuIGV4dGVuZGVkIHJlZ2V4cCBvZiBzeW1ib2xzIHRvIGV4Y2x1ZGUKLSAgIyBpdCB3aWxsIGJlIHdyYXBwZWQgYnkgYCAoJyBhbmQgYCkkJywgc28gb25lIG11c3Qgbm90IG1hdGNoIGJlZ2lubmluZyBvcgotICAjIGVuZCBvZiBsaW5lLiAgRXhhbXBsZTogYGF8YmN8LipkLionIHdpbGwgZXhjbHVkZSB0aGUgc3ltYm9scyBgYScgYW5kIGBiYycsCi0gICMgYXMgd2VsbCBhcyBhbnkgc3ltYm9sIHRoYXQgY29udGFpbnMgYGQnLgotICBfTFRfQUNfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KLSAgIyBBbHRob3VnaCBfR0xPQkFMX09GRlNFVF9UQUJMRV8gaXMgYSB2YWxpZCBzeW1ib2wgQyBuYW1lLCBtb3N0IGEub3V0Ci0gICMgcGxhdGZvcm1zIChhYil1c2UgaXQgaW4gUElDIGNvZGUsIGJ1dCB0aGVpciBsaW5rZXJzIGdldCBjb25mdXNlZCBpZgotICAjIHRoZSBzeW1ib2wgaXMgZXhwbGljaXRseSByZWZlcmVuY2VkLiAgU2luY2UgcG9ydGFibGUgY29kZSBjYW5ub3QKLSAgIyByZWx5IG9uIHRoaXMgc3ltYm9sIG5hbWUsIGl0J3MgcHJvYmFibHkgZmluZSB0byBuZXZlciBpbmNsdWRlIGl0IGluCi0gICMgcHJlbG9hZGVkIHN5bWJvbCB0YWJsZXMuCi0gICMgRXhjbHVkZSBzaGFyZWQgbGlicmFyeSBpbml0aWFsaXphdGlvbi9maW5hbGl6YXRpb24gc3ltYm9scy4KLWRubCBOb3RlIGFsc28gYWRqdXN0IGV4Y2x1ZGVfZXhwc3ltcyBmb3IgQysrIGFib3ZlLgotICBleHRyYWN0X2V4cHN5bXNfY21kcz0KLSAgIyBKdXN0IGJlaW5nIHBhcmFub2lkIGFib3V0IGVuc3VyaW5nIHRoYXQgY2NfYmFzZW5hbWUgaXMgc2V0LgotICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi0gIGNhc2UgJGhvc3Rfb3MgaW4KLSAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQotICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKLSAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0gICAgICB3aXRoX2dudV9sZD1ubwotICAgIGZpCi0gICAgOzsKLSAgaW50ZXJpeCopCi0gICAgIyB3ZSBqdXN0IGhvcGUvYXNzdW1lIHRoaXMgaXMgZ2NjIGFuZCBub3QgYzg5ICg9IE1TVkMrKykKLSAgICB3aXRoX2dudV9sZD15ZXMKLSAgICA7OwotICBvcGVuYnNkKikKLSAgICB3aXRoX2dudV9sZD1ubwotICAgIDs7Ci0gIGVzYWMKLQotICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0gICAgIyBJZiBhcmNoaXZlX2NtZHMgcnVucyBMRCwgbm90IENDLCB3bGFyYyBzaG91bGQgYmUgZW1wdHkKLSAgICB3bGFyYz0nJHt3bH0nCi0KLSAgICAjIFNldCBzb21lIGRlZmF1bHRzIGZvciBHTlUgbGQgd2l0aCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LiBUaGVzZQotICAgICMgYXJlIHJlc2V0IGxhdGVyIGlmIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFB1dHRpbmcgdGhlbQotICAgICMgaGVyZSBhbGxvd3MgdGhlbSB0byBiZSBvdmVycmlkZGVuIGlmIG5lY2Vzc2FyeS4KLSAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLSAgICAjIGFuY2llbnQgR05VIGxkIGRpZG4ndCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZSBldC4gYWwuCi0gICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnbm8td2hvbGUtYXJjaGl2ZScgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCi0gICAgICBlbHNlCi0gIAlfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Ci0gICAgZmkKLSAgICBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9bm8KLSAgICBjYXNlIGAkTEQgLXYgMj4vZGV2L251bGxgIGluCi0gICAgICAqXCBbWzAxXV0uKiB8ICpcIDIuW1swLTldXS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQotICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KLSAgICAgICpcIDIuMTEuOTIuMC4xMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIE1hbmRyYWtlIDguMiAuLi4KLSAgICAgICpcIDIuMTEuKikgOzsgIyBvdGhlciAyLjExIHZlcnNpb25zCi0gICAgICAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7Ci0gICAgZXNhYwotCi0gICAgIyBTZWUgaWYgR05VIGxkIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgY2FzZSAkaG9zdF9vcyBpbgotICAgIGFpeFtbMy05XV0qKQotICAgICAgIyBPbiBBSVgvUFBDLCB0aGUgR05VIGxpbmtlciBpcyB2ZXJ5IGJyb2tlbgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCWNhdCA8PEVPRiAxPiYyCi0KLSoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjkuMSwgaXMgcmVwb3J0ZWQKLSoqKiB0byBiZSB1bmFibGUgdG8gcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gQUlYLgotKioqIFRoZXJlZm9yZSwgbGlidG9vbCBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgSWYgeW91Ci0qKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBtb2RpZnkgeW91ciBQQVRICi0qKiogc28gdGhhdCBhIG5vbi1HTlUgbGlua2VyIGlzIGZvdW5kLCBhbmQgdGhlbiByZXN0YXJ0LgotCi1FT0YKLSAgICAgIGZpCi0gICAgICA7OwotCi0gICAgYW1pZ2FvcyopCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckcm0gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kZWNobyAiI2RlZmluZSBOQU1FICRsaWJuYW1lIiA+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JGVjaG8gIiNkZWZpbmUgTElCUkFSWV9JRCAxIiA+PiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRlY2hvICIjZGVmaW5lIFZFUlNJT04gJG1ham9yIiA+PiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRlY2hvICIjZGVmaW5lIFJFVklTSU9OICRyZXZpc2lvbiIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kQVIgJEFSX0ZMQUdTICRsaWIgJGxpYm9ianN+JFJBTkxJQiAkbGlifihjZCAkb3V0cHV0X29iamRpciAmJiBhMml4bGlicmFyeSAtMzIpJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwotCi0gICAgICAjIFNhbXVlbCBBLiBGYWx2byBJSSA8a2M1dGphQGRvbHBoaW4ub3BlbnByb2plY3RzLm5ldD4gcmVwb3J0cwotICAgICAgIyB0aGF0IHRoZSBzZW1hbnRpY3Mgb2YgZHluYW1pYyBsaWJyYXJpZXMgb24gQW1pZ2FPUywgYXQgbGVhc3QgdXAKLSAgICAgICMgdG8gdmVyc2lvbiA0LCBpcyB0byBzaGFyZSBkYXRhIGFtb25nIG11bHRpcGxlIHByb2dyYW1zIGxpbmtlZAotICAgICAgIyB3aXRoIHRoZSBzYW1lIGR5bmFtaWMgbGlicmFyeS4gIFNpbmNlIHRoaXMgZG9lc24ndCBtYXRjaCB0aGUKLSAgICAgICMgYmVoYXZpb3Igb2Ygc2hhcmVkIGxpYnJhcmllcyBvbiBvdGhlciBwbGF0Zm9ybXMsIHdlIGNhbid0IHVzZQotICAgICAgIyB0aGVtLgotICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgOzsKLQotICAgIGJlb3MqKQotICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0JIyBKb3NlcGggQmVja2VuYmFjaCA8anJiM0BiZXN0LmNvbT4gc2F5cyBzb21lIHJlbGVhc2VzIG9mIGdjYwotCSMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW5vc3RhcnQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0gICAgICBlbHNlCi0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0gICAgICAjIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgIF9MVF9BQ19UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KLSAgICAgIF9MVF9BQ19UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotICAgICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIC1lICdcJycvXltbQUlUV11dW1sgXV0vcy8uKltbIF1dLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0KLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLQkjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0JIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQkgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQllbHNlCi0JICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JZml+Ci0JJENDIC1zaGFyZWQgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0gICAgICBlbHNlCi0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBpbnRlcml4W1szLTldXSopCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJwotICAgICAgIyBIYWNrOiBPbiBJbnRlcml4IDMueCwgd2UgY2Fubm90IGNvbXBpbGUgUElDIGJlY2F1c2Ugb2YgYSBicm9rZW4gZ2NjLgotICAgICAgIyBJbnN0ZWFkLCBzaGFyZWQgbGlicmFyaWVzIGFyZSBsb2FkZWQgYXQgYW4gaW1hZ2UgYmFzZSAoMHgxMDAwMDAwMCBieQotICAgICAgIyBkZWZhdWx0KSBhbmQgcmVsb2NhdGVkIGlmIHRoZXkgY29uZmxpY3QsIHdoaWNoIGlzIGEgc2xvdyB2ZXJ5IG1lbW9yeQotICAgICAgIyBjb25zdW1pbmcgYW5kIGZyYWdtZW50aW5nIHByb2Nlc3MuICBUbyBhdm9pZCB0aGlzLCB3ZSBwaWNrIGEgcmFuZG9tLAotICAgICAgIyAyNTYgS2lCLWFsaWduZWQgaW1hZ2UgYmFzZSBiZXR3ZWVuIDB4NTAwMDAwMDAgYW5kIDB4NkZGQzAwMDAgYXQgbGluawotICAgICAgIyB0aW1lLiAgTW92aW5nIHVwIGZyb20gMHgxMDAwMDAwMCBhbHNvIGFsbG93cyBtb3JlIHNicmsoMikgc3BhY2UuCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCi0gICAgICA7OwotCi0gICAgZ251KiB8IGxpbnV4KiB8IGsqYnNkKi1nbnUpCi0gICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQl0bXBfYWRkZmxhZz0KLQljYXNlICRjY19iYXNlbmFtZSwkaG9zdF9jcHUgaW4KLQlwZ2NjKikJCQkJIyBQb3J0bGFuZCBHcm91cCBDIGNvbXBpbGVyCi0JICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRlY2hvIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLQkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwotCSAgOzsKLQlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCSMgUG9ydGxhbmQgR3JvdXAgZjc3IGFuZCBmOTAgY29tcGlsZXJzCi0JICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRlY2hvIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLQkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnIC1Nbm9tYWluJyA7OwotCWVjYyosaWE2NCogfCBpY2MqLGlhNjQqKQkJIyBJbnRlbCBDIGNvbXBpbGVyIG9uIGlhNjQKLQkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYycgOzsKLQllZmMqLGlhNjQqIHwgaWZvcnQqLGlhNjQqKQkjIEludGVsIEZvcnRyYW4gY29tcGlsZXIgb24gaWE2NAotCSAgdG1wX2FkZGZsYWc9JyAtaV9keW5hbWljIC1ub2Zvcl9tYWluJyA7OwotCWlmYyogfCBpZm9ydCopCQkJIyBJbnRlbCBGb3J0cmFuIGNvbXBpbGVyCi0JICB0bXBfYWRkZmxhZz0nIC1ub2Zvcl9tYWluJyA7OwotCWVzYWMKLQljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KLQkqU3VuXCBDKikJCQkjIFN1biBDIDUuOQotCSAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRlY2hvIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLQkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKLQkqU3VuXCBGKikJCQkjIFN1biBGb3J0cmFuIDguMwotCSAgdG1wX3NoYXJlZGZsYWc9Jy1HJyA7OwotCSopCi0JICB0bXBfc2hhcmVkZmxhZz0nLXNoYXJlZCcgOzsKLQllc2FjCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDICciJHRtcF9zaGFyZWRmbGFnIiIkdG1wX2FkZGZsYWciJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQotCWlmIHRlc3QgJHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyA9IHllczsgdGhlbgotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gICRlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICRDQyAnIiR0bXBfc2hhcmVkZmxhZyIiJHRtcF9hZGRmbGFnIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXZlcnNpb24tc2NyaXB0ICR7d2x9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0JZmkKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIG5ldGJzZCopCi0gICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLQl3bGFyYz0KLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIHNvbGFyaXMqKQotICAgICAgaWYgJExEIC12IDI+JjEgfCBncmVwICdCRkQgMlwuOCcgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0JY2F0IDw8RU9GIDE+JjIKLQotKioqIFdhcm5pbmc6IFRoZSByZWxlYXNlcyAyLjguKiBvZiB0aGUgR05VIGxpbmtlciBjYW5ub3QgcmVsaWFibHkKLSoqKiBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBTb2xhcmlzIHN5c3RlbXMuICBUaGVyZWZvcmUsIGxpYnRvb2wKLSoqKiBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgV2UgdXJnZSB5b3UgdG8gdXBncmFkZSBHTlUKLSoqKiBiaW51dGlscyB0byByZWxlYXNlIDIuOS4xIG9yIG5ld2VyLiAgQW5vdGhlciBvcHRpb24gaXMgdG8gbW9kaWZ5Ci0qKiogeW91ciBQQVRIIG9yIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gc28gdGhhdCB0aGUgbmF0aXZlIGxpbmtlciBpcwotKioqIHVzZWQsIGFuZCB0aGVuIHJlc3RhcnQuCi0KLUVPRgotICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICBlbHNlCi0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqKQotICAgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCi0gICAgICAgICpcIFtbMDFdXS4qIHwgKlwgMi5bWzAtOV1dLiogfCAqXCAyLjFbWzAtNV1dLiopCi0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCWNhdCA8PF9MVF9FT0YgMT4mMgotCi0qKiogV2FybmluZzogUmVsZWFzZXMgb2YgdGhlIEdOVSBsaW5rZXIgcHJpb3IgdG8gMi4xNi45MS4wLjMgY2FuIG5vdAotKioqIHJlbGlhYmx5IGNyZWF0ZSBzaGFyZWQgbGlicmFyaWVzIG9uIFNDTyBzeXN0ZW1zLiAgVGhlcmVmb3JlLCBsaWJ0b29sCi0qKiogaXMgZGlzYWJsaW5nIHNoYXJlZCBsaWJyYXJpZXMgc3VwcG9ydC4gIFdlIHVyZ2UgeW91IHRvIHVwZ3JhZGUgR05VCi0qKiogYmludXRpbHMgdG8gcmVsZWFzZSAyLjE2LjkxLjAuMyBvciBuZXdlci4gIEFub3RoZXIgb3B0aW9uIGlzIHRvIG1vZGlmeQotKioqIHlvdXIgUEFUSCBvciBjb21waWxlciBjb25maWd1cmF0aW9uIHNvIHRoYXQgdGhlIG5hdGl2ZSBsaW5rZXIgaXMKLSoqKiB1c2VkLCBhbmQgdGhlbiByZXN0YXJ0LgotCi1fTFRfRU9GCi0JOzsKLQkqKQotCSAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tcnBhdGgsJGxpYmRpcmAnCi0JICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUsXCR7U0NPQUJTUEFUSDorJHtpbnN0YWxsX2xpYmRpcn0vfSRzb25hbWUgLW8gJGxpYicKLQkgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUsXCR7U0NPQUJTUEFUSDorJHtpbnN0YWxsX2xpYmRpcn0vfSRzb25hbWUsLXJldGFpbi1zeW1ib2xzLWZpbGUsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0JICBlbHNlCi0JICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQkgIGZpCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0KLSAgICBzdW5vczQqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1hc3NlcnQgcHVyZS10ZXh0IC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgIHdsYXJjPQotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICA7OwotCi0gICAgKikKLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgICBlc2FjCi0KLSAgICBpZiB0ZXN0ICIkX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKSIgPSBubzsgdGhlbgotICAgICAgcnVucGF0aF92YXI9Ci0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLSAgICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Ci0gICAgICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Ci0gICAgZmkKLSAgZWxzZQotICAgICMgUE9SVE1FIGZpbGwgaW4gYSBkZXNjcmlwdGlvbiBvZiB5b3VyIHN5c3RlbSdzIGxpbmtlciAobm90IEdOVSBsZCkKLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgYWl4MyopCi0gICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgIF9MVF9BQ19UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJExEIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtYkU6JGV4cG9ydF9zeW1ib2xzIC1UNTEyIC1INTEyIC1iTTpTUkV+JEFSICRBUl9GTEFHUyAkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCi0gICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQotICAgICAgIyBhcmUgbm8gZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IC1MLgotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0IC16ICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiOyB0aGVuCi0JIyBOZWl0aGVyIGRpcmVjdCBoYXJkY29kaW5nIG5vciBzdGF0aWMgbGlua2luZyBpcyBzdXBwb3J0ZWQgd2l0aCBhCi0JIyBicm9rZW4gY29sbGVjdDIuCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT11bnN1cHBvcnRlZAotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBhaXhbWzQtOV1dKikKLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0JIyBPbiBJQTY0LCB0aGUgbGlua2VyIGRvZXMgcnVuIHRpbWUgbGlua2luZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndAotCSMgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgotCWFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLQlleHBfc3ltX2ZsYWc9Jy1CZXhwb3J0JwotCW5vX2VudHJ5X2ZsYWc9IiIKLSAgICAgIGVsc2UKLQkjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLQkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCi0JaWYgJE5NIC1WIDI+JjEgfCBncmVwICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0JICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFxbJF0yID09ICJUIikgfHwgKFxbJF0yID09ICJEIikgfHwgKFxbJF0yID09ICJCIikpICYmIChbc3Vic3RyXShcWyRdMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXFskXTMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCi0JZWxzZQotCSAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXFskXTIgPT0gIlQiKSB8fCAoXFskXTIgPT0gIkQiKSB8fCAoXFskXTIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFxbJF0zLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcWyRdMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKLQlmaQotCWFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLQotCSMgVGVzdCBpZiB3ZSBhcmUgdHJ5aW5nIHRvIHVzZSBydW4gdGltZSBsaW5raW5nIG9yIG5vcm1hbAotCSMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQotCSMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCi0JY2FzZSAkaG9zdF9vcyBpbiBhaXg0LltbMjNdXXxhaXg0LltbMjNdXS4qfGFpeFtbNS05XV0qKQotCSAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCi0gIAkgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCi0gIAkgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKLSAgCSAgICBicmVhawotICAJICBmaQotCSAgZG9uZQotCSAgOzsKLQllc2FjCi0KLQlleHBfc3ltX2ZsYWc9Jy1iZXhwb3J0JwotCW5vX2VudHJ5X2ZsYWc9Jy1ibm9lbnRyeScKLSAgICAgIGZpCi0KLSAgICAgICMgV2hlbiBsYXJnZSBleGVjdXRhYmxlcyBvciBzaGFyZWQgb2JqZWN0cyBhcmUgYnVpbHQsIEFJWCBsZCBjYW4KLSAgICAgICMgaGF2ZSBwcm9ibGVtcyBjcmVhdGluZyB0aGUgdGFibGUgb2YgY29udGVudHMuICBJZiBsaW5raW5nIGEgbGlicmFyeQotICAgICAgIyBvciBwcm9ncmFtIHJlc3VsdHMgaW4gImVycm9yIFRPQyBvdmVyZmxvdyIgYWRkIC1tbWluaW1hbC10b2MgdG8KLSAgICAgICMgQ1hYRkxBR1MvQ0ZMQUdTIGZvciBnKysvZ2NjLiAgSW4gdGhlIGNhc2VzIHdoZXJlIHRoYXQgaXMgbm90Ci0gICAgICAjIGVub3VnaCB0byBmaXggdGhlIHByb2JsZW0sIGFkZCAtV2wsLWJiaWd0b2MgdG8gTERGTEFHUy4KLQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JwotICAgICAgX0xUX0FDX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCi0KLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JY2FzZSAkaG9zdF9vcyBpbiBhaXg0LltbMDEyXV18YWl4NC5bWzAxMl1dLiopCi0JIyBXZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyBvbiBBSVggNC4yIGFuZCBsb3dlciwgdGhlIGNoZWNrCi0JIyBiZWxvdyBmb3IgYnJva2VuIGNvbGxlY3QyIGRvZXNuJ3Qgd29yayB1bmRlciA0LjMrCi0JICBjb2xsZWN0Mm5hbWU9YCR7Q0N9IC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCi0JICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJiBcCi0gIAkgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8IGdyZXAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCi0JICB0aGVuCi0gIAkgICMgV2UgaGF2ZSByZXdvcmtlZCBjb2xsZWN0MgotICAJICA6Ci0JICBlbHNlCi0gIAkgICMgV2UgaGF2ZSBvbGQgY29sbGVjdDIKLSAgCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT11bnN1cHBvcnRlZAotICAJICAjIEl0IGZhaWxzIHRvIGZpbmQgdW5pbnN0YWxsZWQgbGlicmFyaWVzIHdoZW4gdGhlIHVuaW5zdGFsbGVkCi0gIAkgICMgcGF0aCBpcyBub3QgbGlzdGVkIGluIHRoZSBsaWJwYXRoLiAgU2V0dGluZyBoYXJkY29kZV9taW51c19MCi0gIAkgICMgdG8gdW5zdXBwb3J0ZWQgZm9yY2VzIHJlbGlua2luZwotICAJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSAgCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9Ci0JICBmaQotCSAgOzsKLQllc2FjCi0Jc2hhcmVkX2ZsYWc9Jy1zaGFyZWQnCi0JaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0JICBzaGFyZWRfZmxhZz0iJHNoYXJlZF9mbGFnICInJHt3bH0tRycKLQlmaQotICAgICAgZWxzZQotCSMgbm90IHVzaW5nIGdjYwotCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0gIAkjIFZpc3VhbEFnZSBDKyssIFZlcnNpb24gNS41IGZvciBBSVggNUwgZm9yIElBLTY0LCBCZXRhIDMgUmVsZWFzZQotICAJIyBjaG9rZXMgb24gLVdsLC1HLiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgY29ycmVjdDoKLQkgIHNoYXJlZF9mbGFnPSctRycKLQllbHNlCi0JICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KLQkgICAgc2hhcmVkX2ZsYWc9JyR7d2x9LUcnCi0JICBlbHNlCi0JICAgIHNoYXJlZF9mbGFnPScke3dsfS1iTTpTUkUnCi0JICBmaQotCWZpCi0gICAgICBmaQotCi0gICAgICAjIEl0IHNlZW1zIHRoYXQgLWJleHBhbGwgZG9lcyBub3QgZXhwb3J0IHN5bWJvbHMgYmVnaW5uaW5nIHdpdGgKLSAgICAgICMgdW5kZXJzY29yZSAoXyksIHNvIGl0IGlzIGJldHRlciB0byBnZW5lcmF0ZSBhIGxpc3Qgb2Ygc3ltYm9scyB0byBleHBvcnQuCi0gICAgICBfTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcwotICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0JIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVudGltZSBsb2FkaW5nIGZsYWdzICgtYnJ0bCksCi0JIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwotICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eSBleGVjdXRhYmxlLgotICAgICAgIF9MVF9BQ19TWVNfTElCUEFUSF9BSVgKLSAgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZWNobyAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLSAgICAgICBlbHNlCi0JaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKLQkgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0iLXogbm9kZWZzIgotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzICR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30gJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMiCi0JZWxzZQotCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkgZXhlY3V0YWJsZS4KLQkgX0xUX0FDX1NZU19MSUJQQVRIX0FJWAotCSBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLQkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi0JICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi0JICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJub3RvaycKLQkgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm9rJwotCSAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCi0JICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKLQkgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR7d2x9LWJub2VudHJ5ICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJwotCWZpCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIGFtaWdhb3MqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJHJtICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JGVjaG8gIiNkZWZpbmUgTkFNRSAkbGlibmFtZSIgPiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRlY2hvICIjZGVmaW5lIExJQlJBUllfSUQgMSIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kZWNobyAiI2RlZmluZSBWRVJTSU9OICRtYWpvciIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kZWNobyAiI2RlZmluZSBSRVZJU0lPTiAkcmV2aXNpb24iID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEFSICRBUl9GTEFHUyAkbGliICRsaWJvYmpzfiRSQU5MSUIgJGxpYn4oY2QgJG91dHB1dF9vYmpkaXIgJiYgYTJpeGxpYnJhcnkgLTMyKScKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgICAgICMgc2VlIGNvbW1lbnQgYWJvdXQgZGlmZmVyZW50IHNlbWFudGljcyBvbiB0aGUgR05VIGxkIHNlY3Rpb24KLSAgICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICBic2RpW1s0NV1dKikKLSAgICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9LXJkeW5hbWljCi0gICAgICA7OwotCi0gICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQotICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKLSAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0gICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0gICAgICBsaWJleHQ9bGliCi0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBlY2hvICIkZGVwbGlicyIgfCAkU0VEIC1lICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotICAgICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9Gcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotICAgICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSAgICAgIF9MVF9BQ19UQUdWQVIoZml4X3NyY2ZpbGVfcGF0aCwgJDEpPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLSAgICAgIF9MVF9BQ19UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotICAgICAgOzsKLQotICAgIGRhcndpbiogfCByaGFwc29keSopCi0gICAgICBjYXNlICRob3N0X29zIGluCi0gICAgICAgIHJoYXBzb2R5KiB8IGRhcndpbjEuW1swMTJdXSkKLSAgICAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnCi0gICAgICAgICA7OwotICAgICAgICopICMgRGFyd2luIDEuMyBvbgotICAgICAgICAgaWYgdGVzdCAteiAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVH0gOyB0aGVuCi0gICAgICAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0tZmxhdF9uYW1lc3BhY2UgJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnCi0gICAgICAgICBlbHNlCi0gICAgICAgICAgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVR9IGluCi0gICAgICAgICAgICAgMTAuW1swMTJdXSkKLSAgICAgICAgICAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0tZmxhdF9uYW1lc3BhY2UgJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnCi0gICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgIDEwLiopCi0gICAgICAgICAgICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJwotICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgZXNhYwotICAgICAgICAgZmkKLSAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZAotICAgICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScnCi0gICAgICBfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKLSAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyA7IHRoZW4KLSAgICAJb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCi0gICAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9IlwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2Qke19sdF9kc3ltdXRpbH0iCi0gICAgICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgotICAgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAke19sdF9kYXJfc2luZ2xlX21vZH0ke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgotICAgICAgICBfTFRfQUNfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPSJzZWQgLWUgJ3MsXixfLCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltflwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyR7X2x0X2Rhcl9leHBvcnRfc3ltc30ke19sdF9kc3ltdXRpbH0iCi0gICAgZWxzZQotICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgeGxjKikKLSAgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJwotICAgICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1xbWtzaHJvYmogJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWluc3RhbGxfbmFtZSAke3dsfWBlY2hvICRycGF0aC8kc29uYW1lYCAkeGxjdmVyc3RyaW5nJwotICAgICAgICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSckQ0MgJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgLWJ1bmRsZSAkbGlib2JqcyAkZGVwbGlicyRjb21waWxlcl9mbGFncycKLSAgICAgICAgICAjIERvbid0IGZpeCB0aGlzIGJ5IHVzaW5nIHRoZSBsZCAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGZsYWcsIGl0IGRvZXNuJ3QgZXhpc3QgaW4gb2xkZXIgZGFyd2luIGxkcwotICAgICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAtZSAicywjLiosLCIgLWUgInMsXlsgICAgXSosLCIgLWUgInMsXlwoLi4qXCksXyYsIiA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+JENDIC1xbWtzaHJvYmogJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWluc3RhbGxfbmFtZSAke3dsfSRycGF0aC8kc29uYW1lICR4bGN2ZXJzdHJpbmd+bm1lZGl0IC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JwotICAgICAgICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAtZSAicywjLiosLCIgLWUgInMsXlsgICAgXSosLCIgLWUgInMsXlwoLi4qXCksXyYsIiA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+JENDICRhbGxvd191bmRlZmluZWRfZmxhZyAgLW8gJGxpYiAtYnVuZGxlICRsaWJvYmpzICRkZXBsaWJzJGNvbXBpbGVyX2ZsYWdzfm5tZWRpdCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKLSAgICAgICAgICA7OwotICAgICAgICopCi0gICAgICAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICBmaQotICAgICAgOzsKLQotICAgIGRndXgqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICA7OwotCi0gICAgZnJlZWJzZDEqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgOzsKLQotICAgICMgRnJlZUJTRCAyLjIuWzAxMl0gYWxsb3dzIHVzIHRvIGluY2x1ZGUgYysrcnQwLm8gdG8gZ2V0IEMrKyBjb25zdHJ1Y3RvcgotICAgICMgc3VwcG9ydC4gIEZ1dHVyZSB2ZXJzaW9ucyBkbyB0aGlzIGF1dG9tYXRpY2FsbHksIGJ1dCBhbiBleHBsaWNpdCBjKytydDAubwotICAgICMgZG9lcyBub3QgYnJlYWsgYW55dGhpbmcsIGFuZCBoZWxwcyBzaWduaWZpY2FudGx5IChhdCB0aGUgY29zdCBvZiBhIGxpdHRsZQotICAgICMgZXh0cmEgc3BhY2UpLgotICAgIGZyZWVic2QyLjIqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAvdXNyL2xpYi9jKytydDAubycKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICAjIFVuZm9ydHVuYXRlbHksIG9sZGVyIHZlcnNpb25zIG9mIEZyZWVCU0QgMiBkbyBub3QgaGF2ZSB0aGlzIGZlYXR1cmUuCi0gICAgZnJlZWJzZDIqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICA7OwotCi0gICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgOzsKLQotICAgIGhwdXg5KikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJHJtICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckcm0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgIGZpCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06Ci0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwotCi0gICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCi0gICAgICA7OwotCi0gICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgZWxzZQotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICBmaQotICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0JX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKLQotCSMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCi0JIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIGhwdXgxMSopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JY2FzZSAkaG9zdF9jcHUgaW4KLQlocHBhKjY0KikKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgOzsKLQlpYTY0KikKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgOzsKLQkqKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQkgIDs7Ci0JZXNhYwotICAgICAgZWxzZQotCWNhc2UgJGhvc3RfY3B1IGluCi0JaHBwYSo2NCopCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JICA7OwotCWlhNjQqKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgOzsKLQkqKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JICA7OwotCWVzYWMKLSAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgotCi0JY2FzZSAkaG9zdF9jcHUgaW4KLQlocHBhKjY0KnxpYTY0KikKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPScrYiAkbGliZGlyJwotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLQkgIDs7Ci0JKikKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0JICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJwotCi0JICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotCSAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0JICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLQkgIDs7Ci0JZXNhYwotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmdgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gICAgICBlbHNlCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gLXNldF92ZXJzaW9uICR2ZXJzdHJpbmdgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCi0gICAgICBmaQotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLSAgICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgICAgOzsKLQotICAgIG5ldGJzZCopCi0gICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycgICMgYS5vdXQKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnICAgICAgIyBFTEYKLSAgICAgIGZpCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICA7OwotCi0gICAgbmV3c29zNikKLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICBvcGVuYnNkKikKLSAgICAgIGlmIHRlc3QgLWYgL3Vzci9saWJleGVjL2xkLnNvOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotCWlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9scycKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJwotCSAgX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKLQllbHNlCi0JICBjYXNlICRob3N0X29zIGluCi0JICAgb3BlbmJzZFtbMDFdXS4qIHwgb3BlbmJzZDIuW1swLTddXSB8IG9wZW5ic2QyLltbMC03XV0uKikKLQkgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0JICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotCSAgICAgOzsKLQkgICAqKQotCSAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JICAgICA7OwotCSAgZXNhYwotICAgICAgICBmaQotICAgICAgZWxzZQotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgIGZpCi0gICAgICA7OwotCi0gICAgb3MyKikKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJGVjaG8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kZWNobyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVjaG8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVjaG8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVjaG8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwotICAgICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9Gcm9tX25ld19jbWRzLCAkMSk9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKLSAgICAgIDs7Ci0KLSAgICBvc2YzKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZ2AgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAtc2V0X3ZlcnNpb24gJHZlcnN0cmluZ2AgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotICAgICAgZmkKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06Ci0gICAgICA7OwotCi0gICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZ2AgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgZWxzZQotCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvIC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZTsgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkkTEQgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1pbnB1dCAkbGliLmV4cCAkbGlua2VyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAtc2V0X3ZlcnNpb24gJHZlcnN0cmluZ2AgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRybSAkbGliLmV4cCcKLQotCSMgQm90aCBjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCi0gICAgICBmaQotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgotICAgICAgOzsKLQotICAgIHNvbGFyaXMqKQotICAgICAgX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXogdGV4dCcKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0Jd2xhcmM9JyR7d2x9JwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH4kZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkgICRDQyAtc2hhcmVkICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kcm0gJGxpYi5leHAnCi0gICAgICBlbHNlCi0Jd2xhcmM9JycKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJGVjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+JGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0gIAkkTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc34kcm0gJGxpYi5leHAnCi0gICAgICBmaQotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICBjYXNlICRob3N0X29zIGluCi0gICAgICBzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OwotICAgICAgKikKLQkjIFRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBjb21iaW5lIGFuZCByZW9yZGVyIGxpbmtlciBvcHRpb25zLAotCSMgYnV0IHVuZGVyc3RhbmRzIGAteiBsaW5rZXJfZmxhZycuICBHQ0MgZGlzY2FyZHMgaXQgd2l0aG91dCBgJHdsJywKLQkjIGJ1dCBpcyBjYXJlZnVsIGVub3VnaCBub3QgdG8gcmVvcmRlci4KLSAJIyBTdXBwb3J0ZWQgc2luY2UgU29sYXJpcyAyLjYgKG1heWJlIDIuNS4xPykKLQlpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCSAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS16ICR7d2x9YWxsZXh0cmFjdCRjb252ZW5pZW5jZSAke3dsfS16ICR7d2x9ZGVmYXVsdGV4dHJhY3QnCi0JZWxzZQotCSAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScteiBhbGxleHRyYWN0JGNvbnZlbmllbmNlIC16IGRlZmF1bHRleHRyYWN0JwotCWZpCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgICAgOzsKLQotICAgIHN1bm9zNCopCi0gICAgICBpZiB0ZXN0ICJ4JGhvc3RfdmVuZG9yIiA9IHhzZXF1ZW50OyB0aGVuCi0JIyBVc2UgJENDIHRvIGxpbmsgdW5kZXIgc2VxdWVudCwgYmVjYXVzZSBpdCB0aHJvd3MgaW4gc29tZSBleHRyYSAubwotCSMgZmlsZXMgdGhhdCBtYWtlIC5pbml0IGFuZCAuZmluaSBzZWN0aW9ucyB3b3JrLgotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICBlbHNlCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1hc3NlcnQgcHVyZS10ZXh0IC1Cc3RhdGljIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgIGZpCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICBzeXN2NCkKLSAgICAgIGNhc2UgJGhvc3RfdmVuZG9yIGluCi0Jc25pKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMgIyBpcyB0aGlzIHJlYWxseSB0cnVlPz8/Ci0JOzsKLQlzaWVtZW5zKQotCSAgIyMgTEQgaXMgbGQgaXQgbWFrZXMgYSBQTEFNTElCCi0JICAjIyBDQyBqdXN0IG1ha2VzIGEgR3Jvc3NNb2R1bGUuCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotCSAgX0xUX0FDX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSckQ0MgLXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KLSAgICAgICAgOzsKLQltb3Rvcm9sYSkKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8gI01vdG9yb2xhIG1hbnVhbCBzYXlzIHllcywgYnV0IG15IHRlc3RzIHNheSB0aGV5IGxpZQotCTs7Ci0gICAgICBlc2FjCi0gICAgICBydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgOzsKLQotICAgIHN5c3Y0LjMqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Jy1CZXhwb3J0JwotICAgICAgOzsKLQotICAgIHN5c3Y0Kk1QKikKLSAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLQlydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAotCWhhcmRjb2RlX3J1bnBhdGhfdmFyPXllcwotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LltbMDFdXS5bWzEwXV0qIHwgdW5peHdhcmU3KiB8IHNjbzMuMnY1LjAuW1swMjRdXSopCi0gICAgICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosdGV4dCcKLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKLQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqKQotICAgICAgIyBOb3RlOiBXZSBjYW4gTk9UIHVzZSAteiBkZWZzIGFzIHdlIG1pZ2h0IGRlc2lyZSwgYmVjYXVzZSB3ZSBkbyBub3QKLSAgICAgICMgbGluayB3aXRoIC1sYywgYW5kIHRoYXQgd291bGQgY2F1c2UgYW55IHN5bWJvbHMgdXNlZCBmcm9tIGxpYmMgdG8KLSAgICAgICMgYWx3YXlzIGJlIHVucmVzb2x2ZWQsIHdoaWNoIG1lYW5zIGp1c3QgYWJvdXQgbm8gbGlicmFyeSB3b3VsZAotICAgICAgIyBldmVyIGxpbmsgY29ycmVjdGx5LiAgSWYgd2UncmUgbm90IHVzaW5nIEdOVSBsZCB3ZSB1c2UgLXogdGV4dAotICAgICAgIyB0aG91Z2gsIHdoaWNoIGRvZXMgY2F0Y2ggc29tZSBiYWQgc3ltYm9scyBidXQgaXNuJ3QgYXMgaGVhdnktaGFuZGVkCi0gICAgICAjIGFzIC16IGRlZnMuCi0gICAgICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosdGV4dCcKLSAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teixub2RlZnMnCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nYHRlc3QgLXogIiRTQ09BQlNQQVRIIiAmJiBlY2hvICR7d2x9LVIsJGxpYmRpcmAnCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0nOicKLSAgICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tQmV4cG9ydCcKLSAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKLQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLFwke1NDT0FCU1BBVEg6KyR7aW5zdGFsbF9saWJkaXJ9L30kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLFwke1NDT0FCU1BBVEg6KyR7aW5zdGFsbF9saWJkaXJ9L30kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgZWxzZQotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLFwke1NDT0FCU1BBVEg6KyR7aW5zdGFsbF9saWJkaXJ9L30kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCxcJHtTQ09BQlNQQVRIOiske2luc3RhbGxfbGliZGlyfS99JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgIGZpCi0gICAgICA7OwotCi0gICAgdXRzNCopCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICAqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi1dKQotQUNfTVNHX1JFU1VMVChbJF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSldKQotdGVzdCAiJF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubwotCi0jCi0jIERvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBsaW5rIGxpYmM/Ci0jCi1jYXNlICJ4JF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKSIgaW4KLXh8eHllcykKLSAgIyBBc3N1bWUgLWxjIHNob3VsZCBiZSBhZGRlZAotICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCi0KLSAgaWYgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgY2FzZSAkX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSBpbgotICAgIConficqKQotICAgICAgIyBGSVhNRTogd2UgbWF5IGhhdmUgdG8gZGVhbCB3aXRoIG11bHRpLWNvbW1hbmQgc2VxdWVuY2VzLgotICAgICAgOzsKLSAgICAnJENDICcqKQotICAgICAgIyBUZXN0IHdoZXRoZXIgdGhlIGNvbXBpbGVyIGltcGxpY2l0bHkgbGlua3Mgd2l0aCAtbGMgc2luY2Ugb24gc29tZQotICAgICAgIyBzeXN0ZW1zLCAtbGdjYyBoYXMgdG8gY29tZSBiZWZvcmUgLWxjLiBJZiBnY2MgYWxyZWFkeSBwYXNzZXMgLWxjCi0gICAgICAjIHRvIGxkLCBkb24ndCBhZGQgLWxjIGJlZm9yZSAtbGdjYy4KLSAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciAtbGMgc2hvdWxkIGJlIGV4cGxpY2l0bHkgbGlua2VkIGluXSkKLSAgICAgICRybSBjb25mdGVzdCoKLSAgICAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAotCi0gICAgICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVycjsgdGhlbgotICAgICAgICBzb25hbWU9Y29uZnRlc3QKLSAgICAgICAgbGliPWNvbmZ0ZXN0Ci0gICAgICAgIGxpYm9ianM9Y29uZnRlc3QuJGFjX29iamV4dAotICAgICAgICBkZXBsaWJzPQotICAgICAgICB3bD0kX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkKLQlwaWNfZmxhZz0kX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCi0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPS12Ci0gICAgICAgIGxpbmtlcl9mbGFncz0tdgotICAgICAgICB2ZXJzdHJpbmc9Ci0gICAgICAgIG91dHB1dF9vYmpkaXI9LgotICAgICAgICBsaWJuYW1lPWNvbmZ0ZXN0Ci0gICAgICAgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKQotICAgICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Ci0gICAgICAgIGlmIEFDX1RSWV9FVkFMKF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgMlw+XCYxIFx8IGdyZXAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKLSAgICAgICAgdGhlbgotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi0gICAgICAgIGVsc2UKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKLSAgICAgICAgZmkKLSAgICAgICAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCi0gICAgICBlbHNlCi0gICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQotICAgICAgZmkKLSAgICAgICRybSBjb25mdGVzdCoKLSAgICAgIEFDX01TR19SRVNVTFQoWyRfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSldKQotICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi0gIDs7Ci1lc2FjCi1dKSMgQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUwotCi0KLSMgX0xUX0FDX0ZJTEVfTFRETExfQwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEJlIGNhcmVmdWwgdGhhdCB0aGUgc3RhcnQgbWFya2VyIGFsd2F5cyBmb2xsb3dzIGEgbmV3bGluZS4KLUFDX0RFRlVOKFtfTFRfQUNfRklMRV9MVERMTF9DXSwgWwotIyAvKiBsdGRsbC5jIHN0YXJ0cyBoZXJlICovCi0jICNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgotIyAjaW5jbHVkZSA8d2luZG93cy5oPgotIyAjdW5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTgotIyAjaW5jbHVkZSA8c3RkaW8uaD4KLSMKLSMgI2lmbmRlZiBfX0NZR1dJTl9fCi0jICMgIGlmZGVmIF9fQ1lHV0lOMzJfXwotIyAjICAgIGRlZmluZSBfX0NZR1dJTl9fIF9fQ1lHV0lOMzJfXwotIyAjICBlbmRpZgotIyAjZW5kaWYKLSMKLSMgI2lmZGVmIF9fY3BsdXNwbHVzCi0jIGV4dGVybiAiQyIgewotIyAjZW5kaWYKLSMgQk9PTCBBUElFTlRSWSBEbGxNYWluIChISU5TVEFOQ0UgaEluc3QsIERXT1JEIHJlYXNvbiwgTFBWT0lEIHJlc2VydmVkKTsKLSMgI2lmZGVmIF9fY3BsdXNwbHVzCi0jIH0KLSMgI2VuZGlmCi0jCi0jICNpZmRlZiBfX0NZR1dJTl9fCi0jICNpbmNsdWRlIDxjeWd3aW4vY3lnd2luX2RsbC5oPgotIyBERUNMQVJFX0NZR1dJTl9ETEwoIERsbE1haW4gKTsKLSMgI2VuZGlmCi0jIEhJTlNUQU5DRSBfX2hEbGxJbnN0YW5jZV9iYXNlOwotIwotIyBCT09MIEFQSUVOVFJZCi0jIERsbE1haW4gKEhJTlNUQU5DRSBoSW5zdCwgRFdPUkQgcmVhc29uLCBMUFZPSUQgcmVzZXJ2ZWQpCi0jIHsKLSMgICBfX2hEbGxJbnN0YW5jZV9iYXNlID0gaEluc3Q7Ci0jICAgcmV0dXJuIFRSVUU7Ci0jIH0KLSMgLyogbHRkbGwuYyBlbmRzIGhlcmUgKi8KLV0pIyBfTFRfQUNfRklMRV9MVERMTF9DCi0KLQotIyBfTFRfQUNfVEFHVkFSKFZBUk5BTUUsIFtUQUdOQU1FXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX1RBR1ZBUl0sIFtpZmVsc2UoWyQyXSwgW10sIFskMV0sIFskMV8kMl0pXSkKLQotCi0jIG9sZCBuYW1lcwotQUNfREVGVU4oW0FNX1BST0dfTElCVE9PTF0sICAgW0FDX1BST0dfTElCVE9PTF0pCi1BQ19ERUZVTihbQU1fRU5BQkxFX1NIQVJFRF0sICBbQUNfRU5BQkxFX1NIQVJFRCgkQCldKQotQUNfREVGVU4oW0FNX0VOQUJMRV9TVEFUSUNdLCAgW0FDX0VOQUJMRV9TVEFUSUMoJEApXSkKLUFDX0RFRlVOKFtBTV9ESVNBQkxFX1NIQVJFRF0sIFtBQ19ESVNBQkxFX1NIQVJFRCgkQCldKQotQUNfREVGVU4oW0FNX0RJU0FCTEVfU1RBVElDXSwgW0FDX0RJU0FCTEVfU1RBVElDKCRAKV0pCi1BQ19ERUZVTihbQU1fUFJPR19MRF0sICAgICAgICBbQUNfUFJPR19MRF0pCi1BQ19ERUZVTihbQU1fUFJPR19OTV0sICAgICAgICBbQUNfUFJPR19OTV0pCi0KLSMgVGhpcyBpcyBqdXN0IHRvIHNpbGVuY2UgYWNsb2NhbCBhYm91dCB0aGUgbWFjcm8gbm90IGJlaW5nIHVzZWQKLWlmZWxzZShbQUNfRElTQUJMRV9GQVNUX0lOU1RBTExdKQotCi1BQ19ERUZVTihbTFRfQUNfUFJPR19HQ0pdLAotW0FDX0NIRUNLX1RPT0woR0NKLCBnY2osIG5vKQotICB0ZXN0ICJ4JHtHQ0pGTEFHUytzZXR9IiA9IHhzZXQgfHwgR0NKRkxBR1M9Ii1nIC1PMiIKLSAgQUNfU1VCU1QoR0NKRkxBR1MpCi1dKQotCi1BQ19ERUZVTihbTFRfQUNfUFJPR19SQ10sCi1bQUNfQ0hFQ0tfVE9PTChSQywgd2luZHJlcywgbm8pCi1dKQotCi0KLSMgQ2hlYXAgYmFja3BvcnQgb2YgQVNfRVhFQ1VUQUJMRV9QIGFuZCByZXF1aXJlZCBtYWNyb3MKLSMgZnJvbSBBdXRvY29uZiAyLjU5OyB3ZSBzaG91bGQgbm90IHVzZSAkYXNfZXhlY3V0YWJsZV9wIGRpcmVjdGx5LgotCi0jIF9BU19URVNUX1BSRVBBUkUKLSMgLS0tLS0tLS0tLS0tLS0tLQotbTRfaWZuZGVmKFtfQVNfVEVTVF9QUkVQQVJFXSwKLVttNF9kZWZ1bihbX0FTX1RFU1RfUFJFUEFSRV0sCi1baWYgdGVzdCAteCAvID4vZGV2L251bGwgMj4mMTsgdGhlbgotICBhc19leGVjdXRhYmxlX3A9J3Rlc3QgLXgnCi1lbHNlCi0gIGFzX2V4ZWN1dGFibGVfcD0ndGVzdCAtZicKLWZpCi1dKV0pIyBfQVNfVEVTVF9QUkVQQVJFCi0KLSMgQVNfRVhFQ1VUQUJMRV9QCi0jIC0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayB3aGV0aGVyIGEgZmlsZSBpcyBleGVjdXRhYmxlLgotbTRfaWZuZGVmKFtBU19FWEVDVVRBQkxFX1BdLAotW200X2RlZnVuKFtBU19FWEVDVVRBQkxFX1BdLAotW0FTX1JFUVVJUkUoW19BU19URVNUX1BSRVBBUkVdKWRubAotJGFzX2V4ZWN1dGFibGVfcCAkMVtdZG5sCi1dKV0pIyBBU19FWEVDVVRBQkxFX1AKLQotIyBOT1RFOiBUaGlzIG1hY3JvIGhhcyBiZWVuIHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGludG8gICAjCi0jICBHTlUgQXV0b2NvbmYgYXMgQUNfUFJPR19TRUQuICBXaGVuIGl0IGlzIGF2YWlsYWJsZSBpbiAgICMKLSMgIGEgcmVsZWFzZWQgdmVyc2lvbiBvZiBBdXRvY29uZiB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgICAgIwotIyAgbWFjcm8gYW5kIHVzZSBpdCBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIExUX0FDX1BST0dfU0VECi0jIC0tLS0tLS0tLS0tLS0tCi0jIENoZWNrIGZvciBhIGZ1bGx5LWZ1bmN0aW9uYWwgc2VkIHByb2dyYW0sIHRoYXQgdHJ1bmNhdGVzCi0jIGFzIGZldyBjaGFyYWN0ZXJzIGFzIHBvc3NpYmxlLiAgUHJlZmVyIEdOVSBzZWQgaWYgZm91bmQuCi1BQ19ERUZVTihbTFRfQUNfUFJPR19TRURdLAotW0FDX01TR19DSEVDS0lORyhbZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0XSkKLUFDX0NBQ0hFX1ZBTChsdF9jdl9wYXRoX1NFRCwKLVsjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIHNlZCBhbmQgZ3NlZC4KLSMgVGhlbiB1c2UgdGhhdCBsaXN0IG9mIHNlZCdzIGFzIG9uZXMgdG8gdGVzdCBmb3IgdHJ1bmNhdGlvbi4KLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgZm9yIGx0X2FjX3Byb2cgaW4gc2VkIGdzZWQ7IGRvCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICAgICBpZiBBU19FWEVDVVRBQkxFX1AoWyIkYXNfZGlyLyRsdF9hY19wcm9nJGFjX2V4ZWNfZXh0Il0pOyB0aGVuCi0gICAgICAgIGx0X2FjX3NlZF9saXN0PSIkbHRfYWNfc2VkX2xpc3QgJGFzX2Rpci8kbHRfYWNfcHJvZyRhY19leGVjX2V4dCIKLSAgICAgIGZpCi0gICAgZG9uZQotICBkb25lCi1kb25lCi1JRlM9JGFzX3NhdmVfSUZTCi1sdF9hY19tYXg9MAotbHRfYWNfY291bnQ9MAotIyBBZGQgL3Vzci94cGc0L2Jpbi9zZWQgYXMgaXQgaXMgdHlwaWNhbGx5IGZvdW5kIG9uIFNvbGFyaXMKLSMgYWxvbmcgd2l0aCAvYmluL3NlZCB0aGF0IHRydW5jYXRlcyBvdXRwdXQuCi1mb3IgbHRfYWNfc2VkIGluICRsdF9hY19zZWRfbGlzdCAvdXNyL3hwZzQvYmluL3NlZDsgZG8KLSAgdGVzdCAhIC1mICRsdF9hY19zZWQgJiYgY29udGludWUKLSAgY2F0IC9kZXYvbnVsbCA+IGNvbmZ0ZXN0LmluCi0gIGx0X2FjX2NvdW50PTAKLSAgZWNobyAkRUNIT19OICIwMTIzNDU2Nzg5JEVDSE9fQyIgPmNvbmZ0ZXN0LmluCi0gICMgQ2hlY2sgZm9yIEdOVSBzZWQgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KLSAgaWYgIiRsdF9hY19zZWQiIC0tdmVyc2lvbiAyPiYxIDwgL2Rldi9udWxsIHwgZ3JlcCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgIGx0X2N2X3BhdGhfU0VEPSRsdF9hY19zZWQKLSAgICBicmVhawotICBmaQotICB3aGlsZSB0cnVlOyBkbwotICAgIGNhdCBjb25mdGVzdC5pbiBjb25mdGVzdC5pbiA+Y29uZnRlc3QudG1wCi0gICAgbXYgY29uZnRlc3QudG1wIGNvbmZ0ZXN0LmluCi0gICAgY3AgY29uZnRlc3QuaW4gY29uZnRlc3QubmwKLSAgICBlY2hvID4+Y29uZnRlc3QubmwKLSAgICAkbHRfYWNfc2VkIC1lICdzL2EkLy8nIDwgY29uZnRlc3QubmwgPmNvbmZ0ZXN0Lm91dCB8fCBicmVhawotICAgIGNtcCAtcyBjb25mdGVzdC5vdXQgY29uZnRlc3QubmwgfHwgYnJlYWsKLSAgICAjIDEwMDAwIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKLSAgICB0ZXN0ICRsdF9hY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKLSAgICBsdF9hY19jb3VudD1gZXhwciAkbHRfYWNfY291bnQgKyAxYAotICAgIGlmIHRlc3QgJGx0X2FjX2NvdW50IC1ndCAkbHRfYWNfbWF4OyB0aGVuCi0gICAgICBsdF9hY19tYXg9JGx0X2FjX2NvdW50Ci0gICAgICBsdF9jdl9wYXRoX1NFRD0kbHRfYWNfc2VkCi0gICAgZmkKLSAgZG9uZQotZG9uZQotXSkKLVNFRD0kbHRfY3ZfcGF0aF9TRUQKLUFDX1NVQlNUKFtTRURdKQotQUNfTVNHX1JFU1VMVChbJFNFRF0pCi1dKQotCi1tNF9pbmNsdWRlKFthY2luY2x1ZGUubTRdKQorbTRfaW5jbHVkZShbbTQvYWNfYWRkX3NlYXJjaF9wYXRoLm00XSkKK200X2luY2x1ZGUoW200L2FjX21zZ19jYWNoZS5tNF0pCittNF9pbmNsdWRlKFttNC9hY19tc2dfbW9kdWxlX2RiZy5tNF0pCittNF9pbmNsdWRlKFttNC9hY19wcm9tcHRfdXNlci5tNF0pCittNF9pbmNsdWRlKFttNC9saWJ0b29sLm00XSkKK200X2luY2x1ZGUoW200L2x0b3B0aW9ucy5tNF0pCittNF9pbmNsdWRlKFttNC9sdHN1Z2FyLm00XSkKK200X2luY2x1ZGUoW200L2x0dmVyc2lvbi5tNF0pCittNF9pbmNsdWRlKFttNC9sdH5vYnNvbGV0ZS5tNF0pCittNF9pbmNsdWRlKFttNC9uZXRzbm1wX2FyZy5tNF0pCittNF9pbmNsdWRlKFttNC9uZXRzbm1wX3NlYXJjaF9saWJzLm00XSkKZGlmZiAtLWdpdCBhL2FnZW50L01ha2VmaWxlLmRlcGVuZCBiL2FnZW50L01ha2VmaWxlLmRlcGVuZAppbmRleCBlZDYxMjVjLi5mZmMxYWNhIDEwMDY0NAotLS0gYS9hZ2VudC9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYWdlbnQvTWFrZWZpbGUuZGVwZW5kCkBAIC04LDMyICs4LDE0IEBACiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDQsMTEgKzI2LDMxIEBACiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTExMCwzMiArMTEyLDE0IEBACiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0NiwxMCArMTMwLDMxIEBACiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIxNSwzMiArMjIwLDE0IEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI1MSwxMSArMjM4LDMxIEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zMTEsMjQgKzMxOCwyMiBAQAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBtaWJncm91cC9zdHJ1Y3QuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogc25tcGQuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudF9tb2R1bGVfaW5jbHVkZXMuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc211eC9zbXV4LmggbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS92YWNtX2NvbmYuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc211eC9zbXV4LmggbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtQ29uZi5oIG1pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luY2x1ZGVzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaCBtaWJncm91cC90ZXN0aGFuZGxlci5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX3N5c3RlbS5oIG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX2RldmljZS5oIG1pYmdyb3VwL2hvc3QvaHJfb3RoZXIuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmggbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJfcHJpbnQuaCBtaWJncm91cC9ob3N0L2hyX2Rpc2suaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmggbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX3N3aW5zdC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuaCBtaWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuaCBtaWJncm91cC9ob3N0L2hyX3N3cnVuLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmggbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9vdGhlci5oIG1pYmdyb3VwL2hvc3QvaHJfcHJvYy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX25ldHdvcmsuaCBtaWJncm91cC9ob3N0L2hyX3ByaW50LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJfZGlzay5oIG1pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL1Jtb24vcm93cy5oIG1pYmdyb3VwL1Jtb24vYWd1dGlsLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5oIG1pYmdyb3VwL1Jtb24vYWxhcm0uaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmggbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL1Jtb24vaGlzdG9yeS5oIG1pYmdyb3VwL1Jtb24vZXZlbnQuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVNjYWxhcnMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaApAQCAtMzQ3LDE2ICszNTIsMTcgQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtU3RhdHMuaCBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmggbWliZ3JvdXAvbWliSUkvYXQuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvbWliSUkvaXAuaCBtaWJncm91cC9taWJJSS92YXJfcm91dGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuaCBtaWJncm91cC9taWJJSS9hdC5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9zbm1wX21pYi5oIG1pYmdyb3VwL21pYklJL3RjcC5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9pY21wLmggbWliZ3JvdXAvbWliSUkvdWRwLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS90Y3AuaCBtaWJncm91cC9taWJJSS9pY21wLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL21pYklJL3VkcC5oIG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oIG1pYmdyb3VwL21pYklJL2lwdjYuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5oIC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaApAQCAtMzcxLDkgKzM3Nyw5IEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2FnZW50L25zRGVidWcuaCBtaWJncm91cC9hZ2VudC9uc0NhY2hlLmgKQEAgLTQyNiw2ICs0MzIsMjAgQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zY29wZXpvbmUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZHMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2VudW1zLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX29pZHMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2VudW1zLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvcm91dGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfaGVhZGVycy5oCkBAIC00NjUsMzIgKzQ4NSwxNCBAQAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC01MDEsMTEgKzUwMywzMSBAQAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNTYyLDI3ICs1ODQsMTUyIEBACiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oIHNubXBkLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IG1pYmdyb3VwL3N0cnVjdC5oIC4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTU5NCwyMSArNzQxLDcgQEAKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNjI2LDExICs3NTksNDMgQEAKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmgKIC4vYXV0b19ubGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hdXRvX25saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCkBAIC02NTIsMzIgKzgxNywxNCBAQAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC02ODgsMTAgKzgzNSwzMSBAQAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC03NDgsMTcgKzkxNiwxNyBAQAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvc3RydWN0LmggLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luY2x1ZGVzLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaCBtaWJncm91cC90ZXN0aGFuZGxlci5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyX3N5c3RlbS5oIG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyX2RldmljZS5oIG1pYmdyb3VwL2hvc3QvaHJfb3RoZXIuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmggbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfcHJpbnQuaCBtaWJncm91cC9ob3N0L2hyX2Rpc2suaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uaCBtaWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5oIG1pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oIG1pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyX3N3aW5zdC5oIG1pYmdyb3VwL2hvc3QvaHJfc3dydW4uaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaCBtaWJncm91cC9ob3N0L2hyX2RldmljZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyX290aGVyLmggbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5oIG1pYmdyb3VwL2hvc3QvaHJfcHJpbnQuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmggbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5oIG1pYmdyb3VwL2V4YW1wbGVzL3dhdGNoZWQuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5oIG1pYmdyb3VwL1Jtb24vcm93cy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9SbW9uL2FndXRpbC5oIG1pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9SbW9uL2FsYXJtLmggbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5oIG1pYmdyb3VwL1Jtb24vaGlzdG9yeS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9SbW9uL2V2ZW50LmggbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVNjYWxhcnMuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oCkBAIC03NzYsMzAgKzk0NCwyOSBAQAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c0NvbmYuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaCBtaWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3NubXB2My91c21TdGF0cy5oIG1pYmdyb3VwL3NubXB2My91c21Vc2VyLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaCBtaWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oIG1pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmggbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9hdC5oIG1pYmdyb3VwL21pYklJL2lwLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oIG1pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL2F0LmggbWliZ3JvdXAvbWliSUkvc25tcF9taWIuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvbWliSUkvdGNwLmggbWliZ3JvdXAvbWliSUkvaWNtcC5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS91ZHAuaCBtaWJncm91cC9taWJJSS92YWNtX3ZhcnMuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uaCBtaWJncm91cC9taWJJSS9pcHY2LmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Byb2MuaCAuLi9hZ2VudC9taWJncm91cC9taWJkZWZzLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmggbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuaCBtaWJncm91cC91Y2Qtc25tcC9kaXNrLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaCBtaWJncm91cC9hZ2VudC9leHRlbmQuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJncm91cC91Y2Qtc25tcC9maWxlLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmggbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9hdC5oIG1pYmdyb3VwL21pYklJL3RjcC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9pY21wLmggbWliZ3JvdXAvbWliSUkvdWRwLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oIG1pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL2lwdjYuaCBtaWJncm91cC91Y2Qtc25tcC9wcm9jLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaCBtaWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC91Y2Qtc25tcC9wYXNzLmggbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL2Rpc2suaCBtaWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2FnZW50L2V4dGVuZC5oIG1pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuaCBtaWJncm91cC91Y2Qtc25tcC9kbG1vZC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC91Y2Qtc25tcC9wcm94eS5oIG1pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5oIG1pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmggbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9hZ2VudC9uc0NhY2hlLmggbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmgKQEAgLTg0OSw2ICsxMDE2LDIwIEBACiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9lbnVtcy5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9vaWRzLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9lbnVtcy5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3JvdXRlLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaApAQCAtODc4LDcgKzEwNTksNiBAQAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2Nlc3MuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9hZ2VudHgvc3ViYWdlbnQuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9zaHV0ZG93bi5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luaXRzLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKQEAgLTg4OSwzMiArMTA2OSwxNCBAQAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05MjUsMTEgKzEwODcsMzEgQEAKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTk5MiwzMiArMTE3NCwxNCBAQAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwMjgsMTAgKzExOTIsMzEgQEAKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTA4NCw0NSArMTI2OSwyNzEgQEAKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc25tcGQuaCBtaWJncm91cC9zdHJ1Y3QuaAotLi9zbm1wX2FnZW50LmxvOiBtaWJncm91cC91dGlsX2Z1bmNzLmggbWliZ3JvdXAvc3RydWN0LmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBzbm1wZC5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIG0ybS5oIHNubXBkLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3N0cnVjdC5oIC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy5oIG1pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggbWliZ3JvdXAvc3RydWN0LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAorLi9zbm1wZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9pbmNsdWRlcy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9leGFtcGxlcy9leGFtcGxlLmggbWliZ3JvdXAvdGVzdGhhbmRsZXIuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmggbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmggbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3N5c3RlbS5oIG1pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfb3RoZXIuaCBtaWJncm91cC9ob3N0L2hyX3Byb2MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmggbWliZ3JvdXAvaG9zdC9ocl9wcmludC5oCisuL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX2Rpc2suaCBtaWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmggbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5oCisuL3NubXBkLmxvOiBtaWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oIG1pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvUm1vbi9yb3dzLmggbWliZ3JvdXAvUm1vbi9hZ3V0aWwuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmggbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL1Jtb24vaGlzdG9yeS5oIG1pYmdyb3VwL1Jtb24vZXZlbnQuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVNjYWxhcnMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQ29uZi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuaAorLi9zbm1wZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oIG1pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaCBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oCisuL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaCBtaWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaCBtaWJncm91cC9taWJJSS9hdC5oCisuL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9pcC5oIG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5oIG1pYmdyb3VwL21pYklJL2F0LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3RjcC5oIG1pYmdyb3VwL21pYklJL2ljbXAuaCBtaWJncm91cC9taWJJSS91ZHAuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmggbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvaXB2Ni5oIG1pYmdyb3VwL3VjZC1zbm1wL3Byb2MuaAorLi9zbm1wZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliZGVmcy5oIG1pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuaCBtaWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oIG1pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmggbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5oIG1pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmggbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmggbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oCisuL3NubXBkLmxvOiBtaWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5oCisuL3NubXBkLmxvOiBtaWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCisuL3NubXBkLmxvOiBtaWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmggbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc0NhY2hlLmggbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuaCBtaWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuaCBtaWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oIG1pYmdyb3VwL21pYklJL3RjcFRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3VkcFRhYmxlLmggbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKKy4vc25tcGQubG86IC4uL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9jb25zdGFudHMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9jb25zdGFudHMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9lbnVtcy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9vaWRzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9lbnVtcy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3JvdXRlLmgKKy4vc25tcGQubG86IC4uL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oCisuL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfY29uc3RhbnRzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2Vzcy5oCisuL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9jb25zdGFudHMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oIG1pYmdyb3VwL3NtdXgvc211eC5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTEzMywxMCArMTU0NCwzMSBAQAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMTkxLDM5ICsxNjIzLDE3IEBACiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBzbm1wX3BlcmwuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTIzNCwxMCArMTY0NCwzMSBAQAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMjkxLDI3NyArMTcyMiwyNyBAQAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oIGtlcm5lbC5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgga2VybmVsLmgKIC4vc25tcF92YXJzLmxvOiBtaWJncm91cC9zdHJ1Y3QuaCBzbm1wZC5oCiAuL3NubXBfdmFycy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuaAogLi9zbm1wX3ZhcnMubG86IC4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oCiAuL3NubXBfdmFycy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnRfbW9kdWxlX2luY2x1ZGVzLmgKLS4vc25tcF92YXJzLmxvOiBtaWJncm91cC9zbXV4L3NtdXguaCBtaWJncm91cC9zbm1wdjMvdXNtQ29uZi5oCi0uL3NubXBfdmFycy5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oIG1pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCisuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvc211eC9zbXV4LmggbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oCisuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuaCBtaWJncm91cC9taWJJSS92YWNtX2NvbmYuaAogLi9zbm1wX3ZhcnMubG86IHNubXBfcGVybC5oIC4uL2FnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9pbml0cy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIG0ybS5oIHNubXBkLmggbWliZ3JvdXAvc3RydWN0LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaCBtaWJncm91cC91dGlsX2Z1bmNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3N0cnVjdC5oIC4uL2FnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfaW5jbHVkZXMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oIG1pYmdyb3VwL3Rlc3RoYW5kbGVyLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmggbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmggbWliZ3JvdXAvaG9zdC9ocl9vdGhlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3Byb2MuaCBtaWJncm91cC9ob3N0L2hyX25ldHdvcmsuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9ocl9wcmludC5oIG1pYmdyb3VwL2hvc3QvaHJfZGlzay5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5oIG1pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3N3cnVuLmggbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5oIG1pYmdyb3VwL2V4YW1wbGVzL3dhdGNoZWQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaCBtaWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL1Jtb24vcm93cy5oIG1pYmdyb3VwL1Jtb24vYWd1dGlsLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5oIG1pYmdyb3VwL1Jtb24vYWxhcm0uaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmggbWliZ3JvdXAvUm1vbi9ldmVudC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlU2NhbGFycy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRDb25mLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmggbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtU3RhdHMuaCBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmggbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9hdC5oIG1pYmdyb3VwL21pYklJL2lwLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oIG1pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL2F0LmggbWliZ3JvdXAvbWliSUkvc25tcF9taWIuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvdGNwLmggbWliZ3JvdXAvbWliSUkvaWNtcC5oIG1pYmdyb3VwL21pYklJL3VkcC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS92YWNtX3ZhcnMuaCBtaWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9pcHY2LmggbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJkZWZzLmggbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5oIG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91Y2Qtc25tcC9kaXNrLmggbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9leHRlbmQuaCBtaWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91Y2Qtc25tcC9maWxlLmggbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuaCBtaWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91Y2Qtc25tcC9tZW1vcnkuaCBtaWJncm91cC91Y2Qtc25tcC92bXN0YXQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5oIG1pYmdyb3VwL2FnZW50L25zRGVidWcuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5oIG1pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmggbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmggbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS92YXJfcm91dGUuaCBtaWJncm91cC9taWJJSS90Y3BUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS91ZHBUYWJsZS5oIG1pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3JvdXRlLmgKLS4vc25tcGQubG86IC4uL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oIG1pYmdyb3VwL3NtdXgvc211eC5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNTcyLDExICsxNzUzLDMxIEBACiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE2MzAsNDAgKzE4MzEsMTkgQEAKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE2NzQsMTEgKzE4NTQsMzEgQEAKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNzMzLDM5ICsxOTMzLDE3IEBACiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTc3NiwxMSArMTk1NCwzMSBAQAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTgzNSwzOSArMjAzMywxNyBAQAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xODc4LDExICsyMDU0LDMxIEBACiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTkzNywzOSArMjEzMywxNyBAQAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE5ODAsMTEgKzIxNTQsMzEgQEAKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yMDM5LDM5ICsyMjMzLDE3IEBACiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjA4MiwxMSArMjI1NCwzMSBAQAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yMTQxLDM5ICsyMzMzLDE3IEBACiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMTg0LDExICsyMzU0LDMxIEBACiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjI0MywzOSArMjQzMywxNyBAQAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTIyODYsMTEgKzI0NTQsMzEgQEAKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjM0NSwzOSArMjUzMywxNyBAQAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjM4OCwxMSArMjU1NCwzMSBAQAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTI0NDcsMzkgKzI2MzMsMTcgQEAKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yNDkwLDExICsyNjU0LDMxIEBACiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjU1MCwzOSArMjczNCwxNyBAQAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yNTkzLDExICsyNzU1LDMxIEBACiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNjUyLDM5ICsyODM0LDE3IEBACiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI2OTUsMTEgKzI4NTUsMzEgQEAKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTI3NTQsMzkgKzI5MzQsMTcgQEAKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjc5NywxMSArMjk1NSwzMSBAQAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjg1NiwzOSArMzAzNCwxNyBAQAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yODk5LDExICszMDU1LDMxIEBACiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yOTU4LDM5ICszMTM0LDE3IEBACiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTMwMDEsMTEgKzMxNTUsMzEgQEAKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMwNjAsMzkgKzMyMzQsMTcgQEAKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzEwMywxMSArMzI1NSwzMSBAQAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zMTY0LDM5ICszMzM2LDE3IEBACiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzIwNywxMSArMzM1NywzMSBAQAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMyNjUsMTQ0ICszNDM1LDIwIEBACiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzQxMywxMSArMzQ1OSwzMSBAQAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zNDcxLDQwICszNTM3LDExOCBAQAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzUxNSwxMSArMzY1OSwzMSBAQAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzU3NCwzOSArMzczOCwxNyBAQAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zNjE3LDExICszNzU5LDMxIEBACiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzY3NiwzOSArMzgzOCwxNyBAQAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTM3MTksMTEgKzM4NTksMzEgQEAKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zNzc4LDM5ICszOTM4LDE3IEBACiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzgyMSwxMSArMzk1OSwzMSBAQAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zODgxLDM5ICs0MDM5LDE3IEBACiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zOTI0LDExICs0MDYwLDMxIEBACiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zOTgzLDM5ICs0MTM5LDE3IEBACiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQwMjYsMTEgKzQxNjAsMzEgQEAKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDA4NSwzOSArNDIzOSwxNyBAQAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDEyOCwxMSArNDI2MCwzMSBAQAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQxODcsMzkgKzQzMzksMTcgQEAKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00MjMwLDExICs0MzYwLDMxIEBACiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00MjkwLDQ0ICs0NDQwLDE4IEBACiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmgKIC4vbWliZ3JvdXAva2VybmVsX3N1bm9zNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9taWJncm91cC9rZXJuZWxfc3Vub3M1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL21pYmdyb3VwL2tlcm5lbF9zdW5vczUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9taWJncm91cC9rZXJuZWxfc3Vub3M1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vbWliZ3JvdXAva2VybmVsX3N1bm9zNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDMzOCwxMSArNDQ2MiwzMSBAQAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDM5OCwzOSArNDU0MiwxNyBAQAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi9taWJncm91cC90ZXN0aGFuZGxlci5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00NDQxLDExICs0NTYzLDMxIEBACiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQ1MDAsMTIgKzQ2NDIsMTEgQEAKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggbWliZ3JvdXAvc3RydWN0LmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi9taWJncm91cC91dGlsX2Z1bmNzLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuL21pYmdyb3VwL3V0aWxpdGllcy9leGVjdXRlLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaAogLi9taWJncm91cC93aW5FeHRETEwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vbWliZ3JvdXAvd2luRXh0RExMLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL21pYmdyb3VwL3dpbkV4dERMTC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL21pYmdyb3VwL3dpbkV4dERMTC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL21pYmdyb3VwL3dpbkV4dERMTC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9taWJncm91cC93aW5FeHRETEwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApkaWZmIC0tZ2l0IGEvYWdlbnQvTWFrZWZpbGUuaW4gYi9hZ2VudC9NYWtlZmlsZS5pbgppbmRleCBhNjQ0OGY4Li43NjZlNWM2IDEwMDY0NAotLS0gYS9hZ2VudC9NYWtlZmlsZS5pbgorKysgYi9hZ2VudC9NYWtlZmlsZS5pbgpAQCAtMjUsNiArMjUsNyBAQAogSU5DTFVERVNVQkRJUkhFQURFUlM9YWdlbnRfcmVhZF9jb25maWcuaCBcCiAJYWdlbnRfcmVnaXN0cnkuaCBcCiAJYWdlbnRfaW5kZXguaCBcCisJYWdlbnRfc3lzT1JUYWJsZS5oIFwKIAlhZ2VudF90cmFwLmggXAogCWF1dG9fbmxpc3QuaCBcCiAJZHNfYWdlbnQuaCBcCkBAIC0zNCw3ICszNSw4IEBACiAJYWdlbnRfaGFuZGxlci5oIFwKIAluZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oIFwKIAltaWJfbW9kdWxlcy5oIFwKLQlhZ2VudF9jYWxsYmFja3MuaAorCWFnZW50X2NhbGxiYWNrcy5oIFwKKwlzeXNPUlRhYmxlLmgKIAogSU5TVEFMTEJVSUxUU1VCRElSSEVBREVSUz0uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmggXAogCQkJICAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaCBcCkBAIC00Miw3ICs0NCw4IEBACiBJTlNUQUxMQlVJTFRTVUJESVI9YWdlbnQKIAogSU5DTFVERU1JQkdST1VQRElSPWFnZW50L21pYmdyb3VwCi1JTkNMVURFTUlCR1JPVVBESVJIRUFERVJTPXV0aWxfZnVuY3MuaAorSU5DTFVERU1JQkdST1VQRElSSEVBREVSUz1zdHJ1Y3QuaCB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIFwKKwl1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIAogT1RIRVJJTlNUQUxMPWluc3RhbGxtaWJncm91cGhlYWRlcnMgQEVNQkVEUEVSTElOU1RBTExACiBPVEhFUlVOSU5TVEFMTD1ARU1CRURQRVJMVU5JTlNUQUxMQApAQCAtNjAsNiArNjMsNyBAQAogCWFnZW50X2luZGV4LmgJXAogCWFnZW50X3JlYWRfY29uZmlnLmggXAogCWFnZW50X3JlZ2lzdHJ5LmggXAorCWFnZW50X3N5c09SVGFibGUuaCBcCiAJYWdlbnRfdHJhcC5oCVwKIAlhdXRvX25saXN0LmgJXAogCWRzX2FnZW50LmgJXApAQCAtMTAzLDExICsxMDcsMTEgQEAKIAogIyBsaWJuZXRzbm1wYWdlbnQgb2JqZWN0cwogTElCQUdFTlRPQkpTPXNubXBfYWdlbnQubyBzbm1wX3ZhcnMubyBhZ2VudF9yZWFkX2NvbmZpZy5vIFwKLQlhZ2VudF9yZWdpc3RyeS5vIGFnZW50X2luZGV4Lm8gYWdlbnRfdHJhcC5vIGtlcm5lbC5vIFwKLQkgYWdlbnRfaGFuZGxlci5vICQoYWdlbnRncm91cF9saXN0X28pIEBPVEhFUkFHRU5UTElCT0JKU0AKKwlhZ2VudF9yZWdpc3RyeS5vIGFnZW50X2luZGV4Lm8gYWdlbnRfc3lzT1JUYWJsZS5vIGFnZW50X3RyYXAubyBcCisJa2VybmVsLm8gYWdlbnRfaGFuZGxlci5vICQoYWdlbnRncm91cF9saXN0X28pIEBPVEhFUkFHRU5UTElCT0JKU0AKIExMSUJBR0VOVE9CSlM9c25tcF9hZ2VudC5sbyBzbm1wX3ZhcnMubG8gYWdlbnRfcmVhZF9jb25maWcubG8gXAotCWFnZW50X3JlZ2lzdHJ5LmxvIGFnZW50X2luZGV4LmxvIGFnZW50X3RyYXAubG8ga2VybmVsLmxvIFwKLQlhZ2VudF9oYW5kbGVyLmxvICQoYWdlbnRncm91cF9saXN0X2xvKSBAT1RIRVJBR0VOVExJQkxPQkpTQAorCWFnZW50X3JlZ2lzdHJ5LmxvIGFnZW50X2luZGV4LmxvIGFnZW50X3N5c09SVGFibGUubG8gYWdlbnRfdHJhcC5sbyBcCisJa2VybmVsLmxvIGFnZW50X2hhbmRsZXIubG8gJChhZ2VudGdyb3VwX2xpc3RfbG8pIEBPVEhFUkFHRU5UTElCTE9CSlNACiAKICMgVGhlIGFnZW50IG9iamVjdHMuCiBBR0VOVE9CSlM9c25tcGQubyBAb3RoZXJfYWdlbnRvYmpzQApAQCAtMTQ2LDcgKzE1MCw3IEBACiAJJChSQU5MSUIpICQoQUdFTlRMSUIpCiAKIGxpYm5ldHNubXBtaWJzLiQoTElCX0VYVEVOU0lPTikkKExJQl9WRVJTSU9OKTogJHtMTUlCT0JKU30gJChIRUxQRVJMSUIpICQoQUdFTlRMSUIpICQoVVNFTElCUykKLQkkKExJQl9MRF9DTUQpICQoTUlCTElCKSAke0xNSUJPQkpTfSAkKEhFTFBFUkxJQikgJChBR0VOVExJQikgJChVU0VMSUJTKSAke0xNSUJMSUJTfSAkKExERkxBR1MpICQoTElCX0xEX0xJQlMpCisJJChMSUJfTERfQ01EKSAkKE1JQkxJQikgJHtMTUlCT0JKU30gJChIRUxQRVJMSUIpICQoQUdFTlRMSUIpICQoVVNFTElCUykgJChMREZMQUdTKSAke0xNSUJMSUJTfSAkKFBFUkxMRE9QVFNfRk9SX0xJQlMpICQoTElCX0xEX0xJQlMpCiAJJChSQU5MSUIpICQoTUlCTElCKQogCiBhZ2VudGxpYjogJChBR0VOVExJQikKQEAgLTE2NSwxNSArMTY5LDE2IEBACiAJICBAZWNobyAicmVtb3ZlZCBzbm1wX3BlcmwucGwgZnJvbSAkKElOU1RBTExfUFJFRklYKSQoc25tcGxpYmRpcikiCiAKIGluc3RhbGxtaWJncm91cGhlYWRlcnM6Ci0JQGlmIHRlc3QgIiQoSU5DTFVERU1JQkdST1VQRElSSEVBREVSUykiICE9ICIiIDsgdGhlbiBcCi0gICAgICAgICAgICAgICAgZWNobyBjcmVhdGluZyBkaXJlY3RvcnkgJChJTlNUQUxMX1BSRUZJWCkkKGluY2x1ZGVkaXIpL2FnZW50IDsgXAotICAgICAgICAgICAgICAgIGl0PSIkKElOQ0xVREVNSUJHUk9VUERJUkhFQURFUlMpIiA7IFwKLSAgICAgICAgICAgICAgICAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChJTlNUQUxMX1BSRUZJWCkkKGluY2x1ZGVkaXIpL2FnZW50IDsgXAotICAgICAgICAgICAgICAgIGZvciBpIGluICQkaXQgOyBkbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAkKElOU1RBTExfREFUQSkgJCh0b3Bfc3JjZGlyKS8kKElOQ0xVREVNSUJHUk9VUERJUikvJCRpICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKS9hZ2VudCA7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gImluc3RhbGxpbmcgJCRpIGluICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKS9hZ2VudCIgOyBcCi0gICAgICAgICAgICAgICAgZG9uZSBcCi0gICAgICAgIGZpCisJQGZvciBpdCBpbiAkKElOQ0xVREVNSUJHUk9VUERJUkhFQURFUlMpIDsgZG8gXAorCQlpdGQ9YGRpcm5hbWUgIiQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKS9hZ2VudC8kJGl0ImAgOyBcCisJCWlmIFsgISAtZCAiJCRpdGQiIF0gOyB0aGVuIFwKKwkJCWVjaG8gImNyZWF0aW5nIGRpcmVjdG9yeSAkJGl0ZCIgOyBcCisJCQkkKFNIRUxMKSAiJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzIiAiJCRpdGQiIDsgXAorCQlmaSA7IFwKKwkJJChJTlNUQUxMX0RBVEEpICIkKHRvcF9zcmNkaXIpLyQoSU5DTFVERU1JQkdST1VQRElSKS8kJGl0IiBcCisJCQkiJCRpdGQiIDsgXAorCQllY2hvICJpbnN0YWxsaW5nICQkaXQgaW4gJCRpdGQiIDsgXAorCWRvbmUKIAogQG1vZHVsZV9saXN0X2RlcHNACiBAYWdlbnRfbW9kdWxlX2xpc3RfZGVwc0AKZGlmZiAtLWdpdCBhL2FnZW50L2FnZW50X2hhbmRsZXIuYyBiL2FnZW50L2FnZW50X2hhbmRsZXIuYwppbmRleCBmY2JjNmRkLi4yYTJmMmQ5IDEwMDY0NAotLS0gYS9hZ2VudC9hZ2VudF9oYW5kbGVyLmMKKysrIGIvYWdlbnQvYWdlbnRfaGFuZGxlci5jCkBAIC0xNjIsNyArMTYyLDcgQEAKIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKgogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZXMpCiB7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqdGhlX3JlZzsKQEAgLTE3OSw3ICsxNzksNyBAQAogICAgIHRoZV9yZWctPnByaW9yaXR5ID0gREVGQVVMVF9NSUJfUFJJT1JJVFk7CiAgICAgaWYgKG5hbWUpCiAgICAgICAgIHRoZV9yZWctPmhhbmRsZXJOYW1lID0gc3RyZHVwKG5hbWUpOwotICAgIHRoZV9yZWctPnJvb3RvaWQgPSBuZXRzbm1wX21lbWR1cChyZWdfb2lkLCByZWdfb2lkX2xlbiAqIHNpemVvZihvaWQpKTsKKyAgICB0aGVfcmVnLT5yb290b2lkID0gc25tcF9kdXBsaWNhdGVfb2JqaWQocmVnX29pZCwgcmVnX29pZF9sZW4pOwogICAgIHRoZV9yZWctPnJvb3RvaWRfbGVuID0gcmVnX29pZF9sZW47CiAgICAgcmV0dXJuIHRoZV9yZWc7CiB9CkBAIC0xODcsMTMgKzE4NywxOSBAQAogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqCiBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbihjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9hY2Nlc3NfbWV0aG9kLCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9hY2Nlc3NfbWV0aG9kLCBjb25zdCBvaWQgKiByZWdfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpCiB7Ci0gICAgcmV0dXJuCi0gICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXIobmFtZSwgaGFuZGxlcl9hY2Nlc3NfbWV0aG9kKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sIG1vZGVzKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpydiA9IE5VTEw7CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXIobmFtZSwgaGFuZGxlcl9hY2Nlc3NfbWV0aG9kKTsKKyAgICBpZiAoaGFuZGxlcikgeworICAgICAgICBydiA9IG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKAorICAgICAgICAgICAgbmFtZSwgaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIG1vZGVzKTsKKyAgICAgICAgaWYgKCFydikKKyAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOworICAgIH0KKyAgICByZXR1cm4gcnY7CiB9CiAKIC8qKiByZWdpc3RlciBhIGhhbmRsZXIsIGFzIGRlZmluZWQgYnkgdGhlIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gcG9pbnRlci4gKi8KQEAgLTY2OSw4ICs2NzUsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlZ2luZm8tPnJvb3RvaWQgIT0gTlVMTCkgewotICAgICAgICAgICAgci0+cm9vdG9pZCA9IG5ldHNubXBfbWVtZHVwKHJlZ2luZm8tPnJvb3RvaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW5mby0+cm9vdG9pZF9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgICAgICAgICByLT5yb290b2lkID0KKyAgICAgICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZChyZWdpbmZvLT5yb290b2lkLCByZWdpbmZvLT5yb290b2lkX2xlbik7CiAgICAgICAgICAgICBpZiAoci0+cm9vdG9pZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTc3LDcgKzk4Myw4IEBACiAgICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgaGFuZGxlcl90b19pbnNlcnQsIHNpemVvZihoYW5kbGVyX3RvX2luc2VydCkpOwogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2dldF9saXN0X2RhdGEoaGFuZGxlcl9yZWcsIGhhbmRsZXJfdG9faW5zZXJ0KTsKICAgICBpZiAoIWhhbmRsZXIpIHsKLSAgICAgICAgY29uZmlnX3BlcnJvcigibm8gc3VjaCBcIiVzXCIgaGFuZGxlciByZWdpc3RlcmVkLiIpOworCW5ldHNubXBfY29uZmlnX2Vycm9yKCJubyBcIiVzXCIgaGFuZGxlciByZWdpc3RlcmVkLiIsCisJCQkgICAgIGhhbmRsZXJfdG9faW5zZXJ0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvYWdlbnRfaW5kZXguYyBiL2FnZW50L2FnZW50X2luZGV4LmMKaW5kZXggZWQ5YmExNC4uOGUzNDlkYyAxMDA2NDQKLS0tIGEvYWdlbnQvYWdlbnRfaW5kZXguYworKysgYi9hZ2VudC9hZ2VudF9pbmRleC5jCkBAIC0xNjMsNyArMTYzLDcgQEAKIAogICAgIERFQlVHTVNHVEwoKCJyZWdpc3Rlcl9pbmRleCIsICJyZWdpc3RlciAiKSk7CiAgICAgREVCVUdNU0dWQVIoKCJyZWdpc3Rlcl9pbmRleCIsIHZhcmJpbmQpKTsKLSAgICBERUJVR01TRygoInJlZ2lzdGVyX2luZGV4IiwgImZvciBzZXNzaW9uICUwOHBcbiIsIHNzKSk7CisgICAgREVCVUdNU0coKCJyZWdpc3Rlcl9pbmRleCIsICJmb3Igc2Vzc2lvbiAlOHBcbiIsIHNzKSk7CiAKICNpZiBkZWZpbmVkKFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUpICYmICFkZWZpbmVkKFRFU1RJTkcpCiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCkBAIC0zMDEsMTIgKzMwMSwxMiBAQAogICAgIGlmIChuZXdfaW5kZXggPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoMCA9PSBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZuZXdfaW5kZXgtPnZhcmJpbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJiaW5kLT5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyYmluZC0+bmFtZV9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJiaW5kLT50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyYmluZC0+dmFsLnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmJpbmQtPnZhbF9sZW4pKSB7CisgICAgaWYgKE5VTEwgPT0gc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmbmV3X2luZGV4LT52YXJiaW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyYmluZC0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmJpbmQtPm5hbWVfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyYmluZC0+dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmJpbmQtPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJiaW5kLT52YWxfbGVuKSkgewogICAgICAgICAvKgogICAgICAgICAgKiBpZiAoc25tcF9jbG9uZV92YXIoIHZhcmJpbmQsIG5ld19pbmRleC0+dmFyYmluZCApICE9IDAgKSAKICAgICAgICAgICovCmRpZmYgLS1naXQgYS9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jIGIvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYwppbmRleCA1MzMwNDJhLi4wNzg2MWFkIDEwMDY0NAotLS0gYS9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jCisrKyBiL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmMKQEAgLTI0NSw2ICsyNDUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wZF9mcmVlX3RyYXBjb21tdW5pdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tdW5pdHktc3RyaW5nIik7CiAjZW5kaWYgLyogc3VwcG9ydCBmb3IgY29tbXVuaXR5IGJhc2VkIFNOTVAgKi8KKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCBhcHAsICJ2MXRyYXBhZGRyZXNzIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9UUkFQX0FERFIpOwogI2lmZGVmIEhBVkVfVU5JU1REX0gKICAgICByZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoImFnZW50dXNlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBkX3NldF9hZ2VudF91c2VyLCBOVUxMLCAidXNlcmlkIik7CkBAIC0yODQsOSArMjg3LDYgQEAKICAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19QUkVfVVBEQVRFX0NPTkZJRywgTlVMTCk7CiAgICAgZnJlZV9jb25maWcoKTsKLSNpZmRlZiBVU0lOR19NSUJJSV9WQUNNX0NPTkZfTU9EVUxFCi0gICAgdmFjbV9zdGFuZGFyZF92aWV3cygwLDAsTlVMTCxOVUxMKTsKLSNlbmRpZgogICAgIHJlYWRfY29uZmlncygpOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9hZ2VudF9yZWdpc3RyeS5jIGIvYWdlbnQvYWdlbnRfcmVnaXN0cnkuYwppbmRleCBkMGQzNWI3Li43YWE4ZDIzIDEwMDY0NAotLS0gYS9hZ2VudC9hZ2VudF9yZWdpc3RyeS5jCisrKyBiL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmMKQEAgLTY4LDExICs2OCwxNDMgQEAKICNpbmNsdWRlICJhZ2VudHgvY2xpZW50LmgiCiAjZW5kaWYKIAotc3RhdGljIHZvaWQgcmVnaXN0ZXJfbWliX2RldGFjaF9ub2RlKG5ldHNubXBfc3VidHJlZSAqcyk7Ci1ORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZCBpbnZhbGlkYXRlX2xvb2t1cF9jYWNoZShjb25zdCBjaGFyICpjb250ZXh0KTsKLXZvaWQgbmV0c25tcF9zZXRfbG9va3VwX2NhY2hlX3NpemUoaW50IG5ld3NpemUpOwotaW50IG5ldHNubXBfZ2V0X2xvb2t1cF9jYWNoZV9zaXplKHZvaWQpOworLyogTG9va3VwIGNhY2hlIGNvZGUgKi8KIAorI2RlZmluZSBTVUJUUkVFX0RFRkFVTFRfQ0FDSEVfU0laRSA4CisjZGVmaW5lIFNVQlRSRUVfTUFYX0NBQ0hFX1NJWkUgICAgIDMyCitpbnQgbG9va3VwX2NhY2hlX3NpemUgPSAwOyAvKmVuYWJsZWQgbGF0ZXIgYWZ0ZXIgcmVnaXN0cmF0aW9ucyBhcmUgbG9hZGVkICovCisKK3R5cGVkZWYgc3RydWN0IGxvb2t1cF9jYWNoZV9zIHsKKyAgIG5ldHNubXBfc3VidHJlZSAqbmV4dDsKKyAgIG5ldHNubXBfc3VidHJlZSAqcHJldmlvdXM7Cit9IGxvb2t1cF9jYWNoZTsKKwordHlwZWRlZiBzdHJ1Y3QgbG9va3VwX2NhY2hlX2NvbnRleHRfcyB7CisgICBjaGFyICpjb250ZXh0OworICAgc3RydWN0IGxvb2t1cF9jYWNoZV9jb250ZXh0X3MgKm5leHQ7CisgICBpbnQgdGhlY2FjaGVjb3VudDsKKyAgIGludCBjdXJyZW50cG9zOworICAgbG9va3VwX2NhY2hlIGNhY2hlW1NVQlRSRUVfTUFYX0NBQ0hFX1NJWkVdOworfSBsb29rdXBfY2FjaGVfY29udGV4dDsKKworc3RhdGljIGxvb2t1cF9jYWNoZV9jb250ZXh0ICp0aGVjb250ZXh0Y2FjaGUgPSBOVUxMOworCisvKiogc2V0IHRoZSBsb29rdXAgY2FjaGUgc2l6ZSBmb3Igb3B0aW1pemVkIGFnZW50IHJlZ2lzdHJhdGlvbiBwZXJmb3JtYW5jZS4KKyAqIEBwYXJhbSBuZXdzaXplIHNldCB0byB0aGUgbWF4aW11bSBzaXplIG9mIGEgY2FjaGUgZm9yIGEgZ2l2ZW4KKyAqIGNvbnRleHQuICBTZXQgdG8gMCB0byBjb21wbGV0ZWx5IGRpc2FibGUgY2FjaGluZywgb3IgdG8gLTEgdG8gc2V0CisgKiB0byB0aGUgZGVmYXVsdCBjYWNoZSBzaXplICg4KSwgb3IgdG8gYSBudW1iZXIgb2YgeW91ciBjaG9zaW5nLiAgVGhlCisgKiByb3VnaCBndWlkZSBpcyB0aGF0IGl0IHNob3VsZCBiZSBlcXVhbCB0byB0aGUgbWF4aW11bSBudW1iZXIgb2YKKyAqIHNpbXVsdGFuaW91cyBtYW5hZ2VycyB5b3UgZXhwZWN0IHRvIHRhbGsgdG8gdGhlIGFnZW50IChNKSB0aW1lcyA4MCUKKyAqIChvciBzbywgaGUgc2F5cyByYW5kb21seSkgdGhlIGF2ZXJhZ2UgbnVtYmVyIChOKSBvZiB2YXJiaW5kcyB5b3UKKyAqIGV4cGVjdCB0byByZWNlaXZlIGluIGEgZ2l2ZW4gcmVxdWVzdCBmb3IgYSBtYW5hZ2VyLiAgaWUsIE0gdGltZXMgTi4KKyAqIEJpZ2dlciBkb2VzIE5PVCBuZWNlc3NhcmlseSBtZWFuIGJldHRlci4gIENlcnRhaW5seSAxNiBzaG91bGQgYmUgYW4KKyAqIHVwcGVyIGxpbWl0LiAgMzIgaXMgdGhlIGhhcmQgY29kZWQgbGltaXQuCisgKi8KK3ZvaWQKK25ldHNubXBfc2V0X2xvb2t1cF9jYWNoZV9zaXplKGludCBuZXdzaXplKSB7CisgICAgaWYgKG5ld3NpemUgPCAwKQorICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IFNVQlRSRUVfREVGQVVMVF9DQUNIRV9TSVpFOworICAgIGVsc2UgaWYgKG5ld3NpemUgPCBTVUJUUkVFX01BWF9DQUNIRV9TSVpFKQorICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IG5ld3NpemU7CisgICAgZWxzZQorICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IFNVQlRSRUVfTUFYX0NBQ0hFX1NJWkU7Cit9CisKKy8qKiByZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGxvb2t1cCBjYWNoZSBzaXplCisgKiAgQHJldHVybiB0aGUgY3VycmVudCBsb29rdXAgY2FjaGUgc2l6ZQorICovCitpbnQKK25ldHNubXBfZ2V0X2xvb2t1cF9jYWNoZV9zaXplKHZvaWQpIHsKKyAgICByZXR1cm4gbG9va3VwX2NhY2hlX3NpemU7Cit9CisKK05FVFNOTVBfU1RBVElDX0lOTElORSBsb29rdXBfY2FjaGVfY29udGV4dCAqCitnZXRfY29udGV4dF9sb29rdXBfY2FjaGUoY29uc3QgY2hhciAqY29udGV4dCkgeworICAgIGxvb2t1cF9jYWNoZV9jb250ZXh0ICpwdHI7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBjb250ZXh0ID0gIiI7CisKKyAgICBmb3IocHRyID0gdGhlY29udGV4dGNhY2hlOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkgeworICAgICAgICBpZiAoc3RyY21wKHB0ci0+Y29udGV4dCwgY29udGV4dCkgPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoIXB0cikgeworICAgICAgICBpZiAobmV0c25tcF9zdWJ0cmVlX2ZpbmRfZmlyc3QoY29udGV4dCkpIHsKKyAgICAgICAgICAgIHB0ciA9IFNOTVBfTUFMTE9DX1RZUEVERUYobG9va3VwX2NhY2hlX2NvbnRleHQpOworICAgICAgICAgICAgcHRyLT5uZXh0ID0gdGhlY29udGV4dGNhY2hlOworICAgICAgICAgICAgcHRyLT5jb250ZXh0ID0gc3RyZHVwKGNvbnRleHQpOworICAgICAgICAgICAgdGhlY29udGV4dGNhY2hlID0gcHRyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHB0cjsKK30KKworTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQKK2xvb2t1cF9jYWNoZV9hZGQoY29uc3QgY2hhciAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgbmV0c25tcF9zdWJ0cmVlICpuZXh0LCBuZXRzbm1wX3N1YnRyZWUgKnByZXZpb3VzKSB7CisgICAgbG9va3VwX2NhY2hlX2NvbnRleHQgKmNwdHI7CisKKyAgICBpZiAoKGNwdHIgPSBnZXRfY29udGV4dF9sb29rdXBfY2FjaGUoY29udGV4dCkpID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjcHRyLT50aGVjYWNoZWNvdW50IDwgbG9va3VwX2NhY2hlX3NpemUpCisgICAgICAgIGNwdHItPnRoZWNhY2hlY291bnQrKzsKKworICAgIGNwdHItPmNhY2hlW2NwdHItPmN1cnJlbnRwb3NdLm5leHQgPSBuZXh0OworICAgIGNwdHItPmNhY2hlW2NwdHItPmN1cnJlbnRwb3NdLnByZXZpb3VzID0gcHJldmlvdXM7CisKKyAgICBpZiAoKytjcHRyLT5jdXJyZW50cG9zID49IGxvb2t1cF9jYWNoZV9zaXplKQorICAgICAgICBjcHRyLT5jdXJyZW50cG9zID0gMDsKK30KKworTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQKK2xvb2t1cF9jYWNoZV9yZXBsYWNlKGxvb2t1cF9jYWNoZSAqcHRyLAorICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zdWJ0cmVlICpuZXh0LCBuZXRzbm1wX3N1YnRyZWUgKnByZXZpb3VzKSB7CisKKyAgICBwdHItPm5leHQgPSBuZXh0OworICAgIHB0ci0+cHJldmlvdXMgPSBwcmV2aW91czsKK30KKworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGxvb2t1cF9jYWNoZSAqCitsb29rdXBfY2FjaGVfZmluZChjb25zdCBjaGFyICpjb250ZXh0LCBvaWQgKm5hbWUsIHNpemVfdCBuYW1lX2xlbiwKKyAgICAgICAgICAgICAgICAgIGludCAqcmV0Y21wKSB7CisgICAgbG9va3VwX2NhY2hlX2NvbnRleHQgKmNwdHI7CisgICAgbG9va3VwX2NhY2hlICpyZXQgPSBOVUxMOworICAgIGludCBjbXA7CisgICAgaW50IGk7CisKKyAgICBpZiAoKGNwdHIgPSBnZXRfY29udGV4dF9sb29rdXBfY2FjaGUoY29udGV4dCkpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yKGkgPSAwOyBpIDwgY3B0ci0+dGhlY2FjaGVjb3VudCAmJiBpIDwgbG9va3VwX2NhY2hlX3NpemU7IGkrKykgeworICAgICAgICBpZiAoY3B0ci0+Y2FjaGVbaV0ucHJldmlvdXMtPnN0YXJ0X2EpCisgICAgICAgICAgICBjbXAgPSBzbm1wX29pZF9jb21wYXJlKG5hbWUsIG5hbWVfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHRyLT5jYWNoZVtpXS5wcmV2aW91cy0+c3RhcnRfYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B0ci0+Y2FjaGVbaV0ucHJldmlvdXMtPnN0YXJ0X2xlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNtcCA9IDE7CisgICAgICAgIGlmIChjbXAgPj0gMCkgeworICAgICAgICAgICAgKnJldGNtcCA9IGNtcDsKKyAgICAgICAgICAgIHJldCA9ICYoY3B0ci0+Y2FjaGVbaV0pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK05FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkCitpbnZhbGlkYXRlX2xvb2t1cF9jYWNoZShjb25zdCBjaGFyICpjb250ZXh0KSB7CisgICAgbG9va3VwX2NhY2hlX2NvbnRleHQgKmNwdHI7CisgICAgaWYgKChjcHRyID0gZ2V0X2NvbnRleHRfbG9va3VwX2NhY2hlKGNvbnRleHQpKSAhPSBOVUxMKSB7CisgICAgICAgIGNwdHItPnRoZWNhY2hlY291bnQgPSAwOworICAgICAgICBjcHRyLT5jdXJyZW50cG9zID0gMDsKKyAgICB9Cit9CisKKy8qIEVuZCBvZiBMb29rdXAgY2FjaGUgY29kZSAqLworCitzdGF0aWMgdm9pZCByZWdpc3Rlcl9taWJfZGV0YWNoX25vZGUobmV0c25tcF9zdWJ0cmVlICpzKTsKIHN1YnRyZWVfY29udGV4dF9jYWNoZSAqY29udGV4dF9zdWJ0cmVlcyA9IE5VTEw7CiAKIHZvaWQKQEAgLTMyMCw5ICs0NTIsNyBAQAogCXJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChjdXJyZW50LT5lbmRfYSAhPSBOVUxMKSB7Ci0JU05NUF9GUkVFKGN1cnJlbnQtPmVuZF9hKTsKLSAgICB9CisgICAgU05NUF9GUkVFKGN1cnJlbnQtPmVuZF9hKTsKICAgICBjdXJyZW50LT5lbmRfYSA9IHRtcF9hOwogICAgIGN1cnJlbnQtPmVuZF9sZW4gPSBuYW1lX2xlbjsKICAgICBpZiAobmV3X3N1Yi0+c3RhcnRfYSAhPSBOVUxMKSB7CkBAIC01MzEsOCArNjYxLDIzIEBACiAJCiAJICAgIGlmIChuZXh0ICYmIChuZXh0LT5uYW1lbGVuICA9PSBuZXdfc3ViLT5uYW1lbGVuKSAmJgogCQkobmV4dC0+cHJpb3JpdHkgPT0gbmV3X3N1Yi0+cHJpb3JpdHkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5ld19zdWItPm5hbWVsZW4gIT0gMSkgLyogaWdub3JlIHJvb3QgT0lEIGR1cHMgKi8KLSAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKCVzLCAlcykiLCBuZXh0LT5sYWJlbF9hLCBuZXdfc3ViLT5sYWJlbF9hKTsKKyAgICAgICAgICAgICAgICBpZiAobmV3X3N1Yi0+bmFtZWxlbiAhPSAxKSB7ICAgIC8qIGlnbm9yZSByb290IE9JRCBkdXBzICovCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICBvdXRfbGVuID0gMDsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgIGJ1Zl9sZW4gPSAwOworICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAqYnVmID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgIGJ1Zl9vdmVyZmxvdyA9IDA7CisKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zcHJpbnRfcmVhbGxvY19vYmppZCgodV9jaGFyICoqKSAmYnVmLCAmYnVmX2xlbiwgJm91dF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgJmJ1Zl9vdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfc3ViLT5zdGFydF9hLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19zdWItPnN0YXJ0X2xlbik7CisgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdXBsaWNhdGUgcmVnaXN0cmF0aW9uOiBNSUIgbW9kdWxlcyAlcyBhbmQgJXMgKG9pZCAlcyVzKS5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQtPmxhYmVsX2EsIG5ld19zdWItPmxhYmVsX2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA/IGJ1ZiA6ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZfb3ZlcmZsb3cgPyAiIFtUUlVOQ0FURURdIiA6ICIiKTsKKyAgICAgICAgICAgICAgICAgICAgZnJlZShidWYpOworICAgICAgICAgICAgICAgIH0KIAkJcmV0dXJuIE1JQl9EVVBMSUNBVEVfUkVHSVNUUkFUSU9OOwogCSAgICB9CiAKQEAgLTczMyw2ICs4NzgsOSBAQAogICAgICAgICByZWdfcGFybXMudGltZW91dCA9IHRpbWVvdXQ7CiAgICAgICAgIHJlZ19wYXJtcy5mbGFncyA9ICh1X2NoYXIpIGZsYWdzOwogICAgICAgICByZWdfcGFybXMuY29udGV4dE5hbWUgPSBjb250ZXh0OworICAgICAgICByZWdfcGFybXMuc2Vzc2lvbiA9IHNzOworICAgICAgICByZWdfcGFybXMucmVnaW5mbyA9IHJlZ2luZm87CisgICAgICAgIHJlZ19wYXJtcy5jb250ZXh0TmFtZSA9IGNvbnRleHQ7CiAgICAgICAgIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdJU1RFUl9PSUQsICZyZWdfcGFybXMpOwogICAgIH0KQEAgLTc2Niw2ICs5MTQsOSBAQAogICAgICAgICByZWdfcGFybXMucmFuZ2VfdWJvdW5kID0gcy0+cmFuZ2VfdWJvdW5kOwogICAgICAgICByZWdfcGFybXMudGltZW91dCA9IHMtPnRpbWVvdXQ7CiAgICAgICAgIHJlZ19wYXJtcy5mbGFncyA9IHMtPmZsYWdzOworICAgICAgICByZWdfcGFybXMuc2Vzc2lvbiA9IHMtPnNlc3Npb247CisgICAgICAgIHJlZ19wYXJtcy5yZWdpbmZvID0gcy0+cmVnaW5mbzsKKyAgICAgICAgLyogWFhYOiBtaXNzaW5nIGluIHN1YnRyZWU6IHJlZ19wYXJtcy5jb250ZXh0TmFtZSA9IHMtPmNvbnRleHQ7ICovCiAgICAgICAgIGlmICgoTlVMTCAhPSBzLT5yZWdpbmZvKSAmJiAoTlVMTCAhPSBzLT5yZWdpbmZvLT5jb250ZXh0TmFtZSkpCiAgICAgICAgICAgICByZWdfcGFybXMuY29udGV4dE5hbWUgPSBzLT5yZWdpbmZvLT5jb250ZXh0TmFtZTsKICAgICAgICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLApAQCAtMTI4Nyw3ICsxNDM4LDcgQEAKIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU4gLSBwZHUgYmVpbmcgY2hlY2tlZCAqLwogICAgIHN0cnVjdCB2aWV3X3BhcmFtZXRlcnMgdmlld19wYXJtczsKICAgICB2aWV3X3Bhcm1zLnBkdSA9IHBkdTsKLSAgICB2aWV3X3Bhcm1zLm5hbWUgPSAwOworICAgIHZpZXdfcGFybXMubmFtZSA9IE5VTEw7CiAgICAgdmlld19wYXJtcy5uYW1lbGVuID0gMDsKICAgICB2aWV3X3Bhcm1zLmVycm9yY29kZSA9IDA7CiAgICAgdmlld19wYXJtcy5jaGVja19zdWJ0cmVlID0gMDsKQEAgLTEzNDksMTM4ICsxNTAwLDYgQEAKICAgICByZXR1cm4gMTsKIH0KIAotI2RlZmluZSBTVUJUUkVFX0RFRkFVTFRfQ0FDSEVfU0laRSA4Ci0jZGVmaW5lIFNVQlRSRUVfTUFYX0NBQ0hFX1NJWkUgICAgIDMyCi1pbnQgbG9va3VwX2NhY2hlX3NpemUgPSAwOyAvKmVuYWJsZWQgbGF0ZXIgYWZ0ZXIgcmVnaXN0cmF0aW9ucyBhcmUgbG9hZGVkICovCi0KLXR5cGVkZWYgc3RydWN0IGxvb2t1cF9jYWNoZV9zIHsKLSAgIG5ldHNubXBfc3VidHJlZSAqbmV4dDsKLSAgIG5ldHNubXBfc3VidHJlZSAqcHJldmlvdXM7Ci19IGxvb2t1cF9jYWNoZTsKLQotdHlwZWRlZiBzdHJ1Y3QgbG9va3VwX2NhY2hlX2NvbnRleHRfcyB7Ci0gICBjaGFyICpjb250ZXh0OwotICAgc3RydWN0IGxvb2t1cF9jYWNoZV9jb250ZXh0X3MgKm5leHQ7Ci0gICBpbnQgdGhlY2FjaGVjb3VudDsKLSAgIGludCBjdXJyZW50cG9zOwotICAgbG9va3VwX2NhY2hlIGNhY2hlW1NVQlRSRUVfTUFYX0NBQ0hFX1NJWkVdOwotfSBsb29rdXBfY2FjaGVfY29udGV4dDsKLQotc3RhdGljIGxvb2t1cF9jYWNoZV9jb250ZXh0ICp0aGVjb250ZXh0Y2FjaGUgPSBOVUxMOwotCi0vKiogc2V0IHRoZSBsb29rdXAgY2FjaGUgc2l6ZSBmb3Igb3B0aW1pemVkIGFnZW50IHJlZ2lzdHJhdGlvbiBwZXJmb3JtYW5jZS4KLSAqIEBwYXJhbSBuZXdzaXplIHNldCB0byB0aGUgbWF4aW11bSBzaXplIG9mIGEgY2FjaGUgZm9yIGEgZ2l2ZW4KLSAqIGNvbnRleHQuICBTZXQgdG8gMCB0byBjb21wbGV0ZWx5IGRpc2FibGUgY2FjaGluZywgb3IgdG8gLTEgdG8gc2V0Ci0gKiB0byB0aGUgZGVmYXVsdCBjYWNoZSBzaXplICg4KSwgb3IgdG8gYSBudW1iZXIgb2YgeW91ciBjaG9zaW5nLiAgVGhlCi0gKiByb3VnaCBndWlkZSBpcyB0aGF0IGl0IHNob3VsZCBiZSBlcXVhbCB0byB0aGUgbWF4aW11bSBudW1iZXIgb2YKLSAqIHNpbXVsdGFuaW91cyBtYW5hZ2VycyB5b3UgZXhwZWN0IHRvIHRhbGsgdG8gdGhlIGFnZW50IChNKSB0aW1lcyA4MCUKLSAqIChvciBzbywgaGUgc2F5cyByYW5kb21seSkgdGhlIGF2ZXJhZ2UgbnVtYmVyIChOKSBvZiB2YXJiaW5kcyB5b3UKLSAqIGV4cGVjdCB0byByZWNlaXZlIGluIGEgZ2l2ZW4gcmVxdWVzdCBmb3IgYSBtYW5hZ2VyLiAgaWUsIE0gdGltZXMgTi4KLSAqIEJpZ2dlciBkb2VzIE5PVCBuZWNlc3NhcmlseSBtZWFuIGJldHRlci4gIENlcnRhaW5seSAxNiBzaG91bGQgYmUgYW4KLSAqIHVwcGVyIGxpbWl0LiAgMzIgaXMgdGhlIGhhcmQgY29kZWQgbGltaXQuCi0gKi8KLXZvaWQKLW5ldHNubXBfc2V0X2xvb2t1cF9jYWNoZV9zaXplKGludCBuZXdzaXplKSB7Ci0gICAgaWYgKG5ld3NpemUgPCAwKQotICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IFNVQlRSRUVfREVGQVVMVF9DQUNIRV9TSVpFOwotICAgIGVsc2UgaWYgKG5ld3NpemUgPCBTVUJUUkVFX01BWF9DQUNIRV9TSVpFKQotICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IG5ld3NpemU7Ci0gICAgZWxzZQotICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IFNVQlRSRUVfTUFYX0NBQ0hFX1NJWkU7Ci19Ci0KLS8qKiByZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGxvb2t1cCBjYWNoZSBzaXplCi0gKiAgQHJldHVybiB0aGUgY3VycmVudCBsb29rdXAgY2FjaGUgc2l6ZQotICovCi1pbnQKLW5ldHNubXBfZ2V0X2xvb2t1cF9jYWNoZV9zaXplKHZvaWQpIHsKLSAgICByZXR1cm4gbG9va3VwX2NhY2hlX3NpemU7Ci19Ci0KLU5FVFNOTVBfU1RBVElDX0lOTElORSBsb29rdXBfY2FjaGVfY29udGV4dCAqCi1nZXRfY29udGV4dF9sb29rdXBfY2FjaGUoY29uc3QgY2hhciAqY29udGV4dCkgewotICAgIGxvb2t1cF9jYWNoZV9jb250ZXh0ICpwdHI7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gIiI7Ci0KLSAgICBmb3IocHRyID0gdGhlY29udGV4dGNhY2hlOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkgewotICAgICAgICBpZiAoc3RyY21wKHB0ci0+Y29udGV4dCwgY29udGV4dCkgPT0gMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoIXB0cikgewotICAgICAgICBpZiAobmV0c25tcF9zdWJ0cmVlX2ZpbmRfZmlyc3QoY29udGV4dCkpIHsKLSAgICAgICAgICAgIHB0ciA9IFNOTVBfTUFMTE9DX1RZUEVERUYobG9va3VwX2NhY2hlX2NvbnRleHQpOwotICAgICAgICAgICAgcHRyLT5uZXh0ID0gdGhlY29udGV4dGNhY2hlOwotICAgICAgICAgICAgcHRyLT5jb250ZXh0ID0gc3RyZHVwKGNvbnRleHQpOwotICAgICAgICAgICAgdGhlY29udGV4dGNhY2hlID0gcHRyOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHB0cjsKLX0KLQotTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQKLWxvb2t1cF9jYWNoZV9hZGQoY29uc3QgY2hhciAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgbmV0c25tcF9zdWJ0cmVlICpuZXh0LCBuZXRzbm1wX3N1YnRyZWUgKnByZXZpb3VzKSB7Ci0gICAgbG9va3VwX2NhY2hlX2NvbnRleHQgKmNwdHI7Ci0KLSAgICBpZiAoKGNwdHIgPSBnZXRfY29udGV4dF9sb29rdXBfY2FjaGUoY29udGV4dCkpID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoY3B0ci0+dGhlY2FjaGVjb3VudCA8IGxvb2t1cF9jYWNoZV9zaXplKQotICAgICAgICBjcHRyLT50aGVjYWNoZWNvdW50Kys7Ci0KLSAgICBjcHRyLT5jYWNoZVtjcHRyLT5jdXJyZW50cG9zXS5uZXh0ID0gbmV4dDsKLSAgICBjcHRyLT5jYWNoZVtjcHRyLT5jdXJyZW50cG9zXS5wcmV2aW91cyA9IHByZXZpb3VzOwotCi0gICAgaWYgKCsrY3B0ci0+Y3VycmVudHBvcyA+PSBsb29rdXBfY2FjaGVfc2l6ZSkKLSAgICAgICAgY3B0ci0+Y3VycmVudHBvcyA9IDA7Ci19Ci0KLU5FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkCi1sb29rdXBfY2FjaGVfcmVwbGFjZShsb29rdXBfY2FjaGUgKnB0ciwKLSAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc3VidHJlZSAqbmV4dCwgbmV0c25tcF9zdWJ0cmVlICpwcmV2aW91cykgewotCi0gICAgcHRyLT5uZXh0ID0gbmV4dDsKLSAgICBwdHItPnByZXZpb3VzID0gcHJldmlvdXM7Ci19Ci0KLU5FVFNOTVBfU1RBVElDX0lOTElORSBsb29rdXBfY2FjaGUgKgotbG9va3VwX2NhY2hlX2ZpbmQoY29uc3QgY2hhciAqY29udGV4dCwgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW4sCi0gICAgICAgICAgICAgICAgICBpbnQgKnJldGNtcCkgewotICAgIGxvb2t1cF9jYWNoZV9jb250ZXh0ICpjcHRyOwotICAgIGxvb2t1cF9jYWNoZSAqcmV0ID0gTlVMTDsKLSAgICBpbnQgY21wOwotICAgIGludCBpOwotCi0gICAgaWYgKChjcHRyID0gZ2V0X2NvbnRleHRfbG9va3VwX2NhY2hlKGNvbnRleHQpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGZvcihpID0gMDsgaSA8IGNwdHItPnRoZWNhY2hlY291bnQgJiYgaSA8IGxvb2t1cF9jYWNoZV9zaXplOyBpKyspIHsKLSAgICAgICAgaWYgKGNwdHItPmNhY2hlW2ldLnByZXZpb3VzLT5zdGFydF9hKQotICAgICAgICAgICAgY21wID0gc25tcF9vaWRfY29tcGFyZShuYW1lLCBuYW1lX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B0ci0+Y2FjaGVbaV0ucHJldmlvdXMtPnN0YXJ0X2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdHItPmNhY2hlW2ldLnByZXZpb3VzLT5zdGFydF9sZW4pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjbXAgPSAxOwotICAgICAgICBpZiAoY21wID49IDApIHsKLSAgICAgICAgICAgICpyZXRjbXAgPSBjbXA7Ci0gICAgICAgICAgICByZXQgPSAmKGNwdHItPmNhY2hlW2ldKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmV0OwotfQotCi1ORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZAotaW52YWxpZGF0ZV9sb29rdXBfY2FjaGUoY29uc3QgY2hhciAqY29udGV4dCkgewotICAgIGxvb2t1cF9jYWNoZV9jb250ZXh0ICpjcHRyOwotICAgIGlmICgoY3B0ciA9IGdldF9jb250ZXh0X2xvb2t1cF9jYWNoZShjb250ZXh0KSkgIT0gTlVMTCkgewotICAgICAgICBjcHRyLT50aGVjYWNoZWNvdW50ID0gMDsKLSAgICAgICAgY3B0ci0+Y3VycmVudHBvcyA9IDA7Ci0gICAgfQotfQotCiBuZXRzbm1wX3N1YnRyZWUgKgogbmV0c25tcF9zdWJ0cmVlX2ZpbmRfcHJldihvaWQgKm5hbWUsIHNpemVfdCBsZW4sIG5ldHNubXBfc3VidHJlZSAqc3VidHJlZSwKIAkJCSAgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKQpAQCAtMTUyOCw4ICsxNTQ3LDggQEAKICAgICAgICAgICAgdG8gYWN0dWFsbHkgcGVyZm9ybSBhIGNvbXBhcmlzb24gKi8KICAgICAgICAgREVCVUdNU0dUTCgoInd0ZXN0Iiwib2lkIGNtcDogIikpOwogICAgICAgICBERUJVR01TR09JRCgoInd0ZXN0IiwgbXlwdHItPnN0YXJ0X2EsIG15cHRyLT5zdGFydF9sZW4pKTsKLSAgICAgICAgREVCVUdNU0coKCJ3dGVzdCIsIiAgLS0tIG9mZiA9ICVkLCBpbiBvZmYgPSAlZCB0ZXN0ID0gJWRcbiIsCi0gICAgICAgICAgICAgICAgICBteXB0ci0+b2lkX29mZiwgbGxfb2ZmLAorICAgICAgICBERUJVR01TRygoInd0ZXN0IiwiICAtLS0gb2ZmID0gJWx1LCBpbiBvZmYgPSAlbHUgdGVzdCA9ICVkXG4iLAorICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpbXlwdHItPm9pZF9vZmYsICh1bnNpZ25lZCBsb25nKWxsX29mZiwKICAgICAgICAgICAgICAgICAgICEobGxfb2ZmICYmIG15cHRyLT5vaWRfb2ZmICYmCiAgICAgICAgICAgICAgICAgICAgIG15cHRyLT5vaWRfb2ZmID4gbGxfb2ZmKSkpOwogICAgICAgICBpZiAoIShsbF9vZmYgJiYgbXlwdHItPm9pZF9vZmYgJiYgbXlwdHItPm9pZF9vZmYgPiBsbF9vZmYpICYmCmRpZmYgLS1naXQgYS9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmMgYi9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk1OWVhZgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L2FnZW50X3N5c09SVGFibGUuYwpAQCAtMCwwICsxLDIzNiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2lmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RSSU5HX0gKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KKwordHlwZWRlZiBzdHJ1Y3QgZGF0YV9ub2RlX3MgeworICAgIHN0cnVjdCBzeXNPUlRhYmxlIGRhdGE7CisgICAgc3RydWN0IGRhdGFfbm9kZV9zKiBuZXh0OworICAgIHN0cnVjdCBkYXRhX25vZGVfcyogcHJldjsKK30qIGRhdGFfbm9kZTsKKworc3RhdGljIGRhdGFfbm9kZSB0YWJsZSA9IE5VTEw7CisKK3N0YXRpYyB2b2lkCitlcmFzZShkYXRhX25vZGUgZW50cnkpCit7CisgICAgZW50cnktPmRhdGEuT1JfdXB0aW1lID0gbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCk7CisgICAgREVCVUdNU0dUTCgoImFnZW50L3N5c09SVGFibGUiLCAiVU5SRUdfU1lTT1IgJXBcbiIsICZlbnRyeS0+ZGF0YSkpOworICAgIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwgU05NUERfQ0FMTEJBQ0tfVU5SRUdfU1lTT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAmZW50cnktPmRhdGEpOworICAgIGZyZWUoZW50cnktPmRhdGEuT1Jfb2lkKTsKKyAgICBmcmVlKGVudHJ5LT5kYXRhLk9SX2Rlc2NyKTsKKyAgICBpZiAoZW50cnktPm5leHQgPT0gZW50cnkpCisgICAgICAgIHRhYmxlID0gTlVMTDsKKyAgICBlbHNlIHsKKyAgICAgICAgZW50cnktPm5leHQtPnByZXYgPSBlbnRyeS0+cHJldjsKKyAgICAgICAgZW50cnktPnByZXYtPm5leHQgPSBlbnRyeS0+bmV4dDsKKyAgICAgICAgaWYgKGVudHJ5ID09IHRhYmxlKQorICAgICAgICAgICAgdGFibGUgPSBlbnRyeS0+bmV4dDsKKyAgICB9CisgICAgZnJlZShlbnRyeSk7Cit9CisKK3ZvaWQKK25ldHNubXBfc3lzT1JUYWJsZV9mb3JlYWNoKHZvaWQgKCpmKShjb25zdCBzdHJ1Y3Qgc3lzT1JUYWJsZSosIHZvaWQqKSwgdm9pZCogYykKK3sKKyAgICBERUJVR01TR1RMKCgiYWdlbnQvc3lzT1JUYWJsZSIsICJmb3JlYWNoKCVwLCAlcClcbiIsIGYsIGMpKTsKKyAgICBpZih0YWJsZSkgeworICAgICAgICBkYXRhX25vZGUgcnVuID0gdGFibGU7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGRhdGFfbm9kZSB0bXAgPSBydW47CisgICAgICAgICAgICBydW4gPSBydW4tPm5leHQ7CisgICAgICAgICAgICBmKCZ0bXAtPmRhdGEsIGMpOworICAgICAgICB9IHdoaWxlKHRhYmxlICYmIHJ1biAhPSB0YWJsZSk7CisgICAgfQorfQorCitpbnQKK3JlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhvaWQgKiBvaWRpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2lkbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlc2NyLCBuZXRzbm1wX3Nlc3Npb24gKiBzcykKK3sKKyAgICBkYXRhX25vZGUgZW50cnk7CisKKyAgICBERUJVR01TR1RMKCgiYWdlbnQvc3lzT1JUYWJsZSIsICJyZWdpc3RlcmluZzogIikpOworICAgIERFQlVHTVNHT0lEKCgiYWdlbnQvc3lzT1JUYWJsZSIsIG9pZGluLCBvaWRsZW4pKTsKKyAgICBERUJVR01TRygoImFnZW50L3N5c09SVGFibGUiLCAiLCBzZXNzaW9uICVwXG4iLCBzcykpOworCisgICAgZW50cnkgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBkYXRhX25vZGVfcykpOworICAgIGlmIChlbnRyeSA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudC9zeXNPUlRhYmxlIiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBuZXcgZW50cnlcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNZU19PUlRBQkxFX1JFR0lTVFJBVElPTl9GQUlMRUQ7CisgICAgfQorCisgICAgZW50cnktPmRhdGEuT1JfZGVzY3IgPSBzdHJkdXAoZGVzY3IpOworICAgIGlmIChlbnRyeS0+ZGF0YS5PUl9kZXNjciA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudC9zeXNPUlRhYmxlIiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBuZXcgc3lzT1JEZXNjclxuIikpOworICAgICAgICBmcmVlKGVudHJ5KTsKKyAgICAgICAgcmV0dXJuIFNZU19PUlRBQkxFX1JFR0lTVFJBVElPTl9GQUlMRUQ7CisgICAgfQorCisgICAgZW50cnktPmRhdGEuT1Jfb2lkID0gKG9pZCAqKSBtYWxsb2Moc2l6ZW9mKG9pZCkgKiBvaWRsZW4pOworICAgIGlmIChlbnRyeS0+ZGF0YS5PUl9vaWQgPT0gTlVMTCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWdlbnQvc3lzT1JUYWJsZSIsICJGYWlsZWQgdG8gYWxsb2NhdGUgbmV3IHN5c09SSURcbiIpKTsKKyAgICAgICAgZnJlZShlbnRyeS0+ZGF0YS5PUl9kZXNjcik7CisgICAgICAgIGZyZWUoZW50cnkpOworICAgICAgICByZXR1cm4gU1lTX09SVEFCTEVfUkVHSVNUUkFUSU9OX0ZBSUxFRDsKKyAgICB9CisKKyAgICBtZW1jcHkoZW50cnktPmRhdGEuT1Jfb2lkLCBvaWRpbiwgc2l6ZW9mKG9pZCkgKiBvaWRsZW4pOworICAgIGVudHJ5LT5kYXRhLk9SX29pZGxlbiA9IG9pZGxlbjsKKyAgICBlbnRyeS0+ZGF0YS5PUl9zZXNzID0gc3M7CisKKyAgICBpZih0YWJsZSkgeworICAgICAgICBlbnRyeS0+bmV4dCA9IHRhYmxlOworICAgICAgICBlbnRyeS0+cHJldiA9IHRhYmxlLT5wcmV2OworICAgICAgICB0YWJsZS0+cHJldi0+bmV4dCA9IGVudHJ5OworICAgICAgICB0YWJsZS0+cHJldiA9IGVudHJ5OworICAgIH0gZWxzZQorICAgICAgICB0YWJsZSA9IGVudHJ5LT5uZXh0ID0gZW50cnktPnByZXYgPSBlbnRyeTsKKworICAgIGVudHJ5LT5kYXRhLk9SX3VwdGltZSA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOworCisgICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVHX1NZU09SLCAmZW50cnktPmRhdGEpOworCisgICAgcmV0dXJuIFNZU19PUlRBQkxFX1JFR0lTVEVSRURfT0s7Cit9CisKK2ludAorcmVnaXN0ZXJfc3lzT1JUYWJsZShvaWQgKiBvaWRpbiwgc2l6ZV90IG9pZGxlbiwgY29uc3QgY2hhciAqZGVzY3IpCit7CisgICAgcmV0dXJuIHJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhvaWRpbiwgb2lkbGVuLCBkZXNjciwgTlVMTCk7Cit9CisKK2ludAordW5yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3Mob2lkICogb2lkaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2lkbGVuLCBuZXRzbm1wX3Nlc3Npb24gKiBzcykKK3sKKyAgICBpbnQgYW55X3VucmVnaXN0ZXJlZCA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWdlbnQvc3lzT1JUYWJsZSIsICJzeXNPUlRhYmxlIHVucmVnaXN0ZXJpbmc6ICIpKTsKKyAgICBERUJVR01TR09JRCgoImFnZW50L3N5c09SVGFibGUiLCBvaWRpbiwgb2lkbGVuKSk7CisgICAgREVCVUdNU0coKCJhZ2VudC9zeXNPUlRhYmxlIiwgIiwgc2Vzc2lvbiAlcFxuIiwgc3MpKTsKKworICAgIGlmKHRhYmxlKSB7CisgICAgICAgIGRhdGFfbm9kZSBydW4gPSB0YWJsZTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgZGF0YV9ub2RlIHRtcCA9IHJ1bjsKKyAgICAgICAgICAgIHJ1biA9IHJ1bi0+bmV4dDsKKyAgICAgICAgICAgIGlmICh0bXAtPmRhdGEuT1Jfc2VzcyA9PSBzcyAmJgorICAgICAgICAgICAgICAgIHNubXBfb2lkX2NvbXBhcmUob2lkaW4sIG9pZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC0+ZGF0YS5PUl9vaWQsIHRtcC0+ZGF0YS5PUl9vaWRsZW4pID09IDApIHsKKyAgICAgICAgICAgICAgICBlcmFzZSh0bXApOworICAgICAgICAgICAgICAgIGFueV91bnJlZ2lzdGVyZWQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlKHRhYmxlICYmIHJ1biAhPSB0YWJsZSk7CisgICAgfQorCisgICAgaWYgKGFueV91bnJlZ2lzdGVyZWQpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFnZW50L3N5c09SVGFibGUiLCAidW5yZWdpc3RlcmluZyBzdWNjZXNzZnVsbFxuIikpOworICAgICAgICByZXR1cm4gU1lTX09SVEFCTEVfVU5SRUdJU1RFUkVEX09LOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudC9zeXNPUlRhYmxlIiwgInVucmVnaXN0ZXJpbmcgZmFpbGVkXG4iKSk7CisgICAgICAgIHJldHVybiBTWVNfT1JUQUJMRV9OT19TVUNIX1JFR0lTVFJBVElPTjsKKyAgICB9Cit9CisKKworaW50Cit1bnJlZ2lzdGVyX3N5c09SVGFibGUob2lkICogb2lkaW4sIHNpemVfdCBvaWRsZW4pCit7CisgICAgcmV0dXJuIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKG9pZGluLCBvaWRsZW4sIE5VTEwpOworfQorCisKK3ZvaWQKK3VucmVnaXN0ZXJfc3lzT1JUYWJsZV9ieV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNzKQoreworICAgIERFQlVHTVNHVEwoKCJhZ2VudC9zeXNPUlRhYmxlIiwKKyAgICAgICAgICAgICAgICAic3lzT1JUYWJsZSB1bnJlZ2lzdGVyaW5nIHNlc3Npb24gJXBcbiIsIHNzKSk7CisKKyAgIGlmKHRhYmxlKSB7CisgICAgICAgIGRhdGFfbm9kZSBydW4gPSB0YWJsZTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgZGF0YV9ub2RlIHRtcCA9IHJ1bjsKKyAgICAgICAgICAgIHJ1biA9IHJ1bi0+bmV4dDsKKyAgICAgICAgICAgIGlmICgoKHNzLT5mbGFncyAmIFNOTVBfRkxBR1NfU1VCU0VTU0lPTikgJiYKKyAgICAgICAgICAgICAgICAgdG1wLT5kYXRhLk9SX3Nlc3MgPT0gc3MpIHx8CisgICAgICAgICAgICAgICAgKCEoc3MtPmZsYWdzICYgU05NUF9GTEFHU19TVUJTRVNTSU9OKSAmJiB0bXAtPmRhdGEuT1Jfc2VzcyAmJgorICAgICAgICAgICAgICAgICB0bXAtPmRhdGEuT1Jfc2Vzcy0+c3Vic2Vzc2lvbiA9PSBzcykpCisgICAgICAgICAgICAgICAgZXJhc2UodG1wKTsKKyAgICAgICAgfSB3aGlsZSh0YWJsZSAmJiBydW4gIT0gdGFibGUpOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJhZ2VudC9zeXNPUlRhYmxlIiwKKyAgICAgICAgICAgICAgICAic3lzT1JUYWJsZSB1bnJlZ2lzdGVyaW5nIHNlc3Npb24gJXAgZG9uZVxuIiwgc3MpKTsKK30KKworc3RhdGljIGludAorcmVnaXN0ZXJfc3lzT1JfY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELCB2b2lkICpzZXJ2ZXJhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpCit7CisgICAgc3RydWN0IHN5c09SVGFibGUgKnBhcm1zID0gKHN0cnVjdCBzeXNPUlRhYmxlICopIHNlcnZlcmFyZzsKKworICAgIHJldHVybiByZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3MocGFybXMtPk9SX29pZCwgcGFybXMtPk9SX29pZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcm1zLT5PUl9kZXNjciwgcGFybXMtPk9SX3Nlc3MpOworfQorCitzdGF0aWMgaW50Cit1bnJlZ2lzdGVyX3N5c09SX2J5X3Nlc3Npb25fY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKQoreworICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbiA9IChuZXRzbm1wX3Nlc3Npb24gKikgc2VydmVyYXJnOworCisgICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX2J5X3Nlc3Npb24oc2Vzc2lvbik7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordW5yZWdpc3Rlcl9zeXNPUl9jYWxsYmFjayhpbnQgbWFqb3JJRCwgaW50IG1pbm9ySUQsIHZvaWQgKnNlcnZlcmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50YXJnKQoreworICAgIHN0cnVjdCBzeXNPUlRhYmxlICpwYXJtcyA9IChzdHJ1Y3Qgc3lzT1JUYWJsZSAqKSBzZXJ2ZXJhcmc7CisKKyAgICByZXR1cm4gdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3MocGFybXMtPk9SX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFybXMtPk9SX29pZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFybXMtPk9SX3Nlc3MpOworfQorCit2b2lkCitpbml0X2FnZW50X3N5c09SVGFibGUodm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgiYWdlbnQvc3lzT1JUYWJsZSIsICJpbml0X2FnZW50X3N5c09SVGFibGVcbiIpKTsKKworICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFUV9SRUdfU1lTT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl9zeXNPUl9jYWxsYmFjaywgTlVMTCk7CisgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5yZWdpc3Rlcl9zeXNPUl9jYWxsYmFjaywgTlVMTCk7CisgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SX1NFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyX3N5c09SX2J5X3Nlc3Npb25fY2FsbGJhY2ssIE5VTEwpOworfQorCit2b2lkCitzaHV0ZG93bl9hZ2VudF9zeXNPUlRhYmxlKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoImFnZW50L3N5c09SVGFibGUiLCAic2h1dGRvd25fc3lzT1JUYWJsZVxuIikpOworICAgIHdoaWxlKHRhYmxlKQorICAgICAgICBlcmFzZSh0YWJsZSk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9hZ2VudF90cmFwLmMgYi9hZ2VudC9hZ2VudF90cmFwLmMKaW5kZXggMTM1OWM5MC4uODg0NzlhYiAxMDA2NDQKLS0tIGEvYWdlbnQvYWdlbnRfdHJhcC5jCisrKyBiL2FnZW50L2FnZW50X3RyYXAuYwpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL3V0aWxpdGllcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CkBAIC0xNTMsNiArMTU0LDcgQEAKIHN0YXRpYyB2b2lkCiBmcmVlX3RyYXBfc2Vzc2lvbihzdHJ1Y3QgdHJhcF9zaW5rICpzcCkKIHsKKyAgICBERUJVR01TR1RMKCgidHJhcCIsICJmcmVlaW5nIGNhbGxiYWNrIHRyYXAgc2Vzc2lvbiAoJXAsICVwKVxuIiwgc3AsIHNwLT5zZXNwKSk7CiAgICAgc25tcF9jbG9zZShzcC0+c2VzcCk7CiAgICAgZnJlZShzcCk7CiB9CkBAIC0xNjgsNyArMTcwLDcgQEAKICAgICAgICAgICogc29tZXRoaW5nIGVsc2Ugd2FudHMgdG8gaGFuZGxlIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb25zIAogICAgICAgICAgKi8KICAgICAgICAgc3RydWN0IGFnZW50X2FkZF90cmFwX2FyZ3MgYXJnczsKLSAgICAgICAgREVCVUdNU0dUTCgoInRyYXAiLCAiYWRkaW5nIGNhbGxiYWNrIHRyYXAgc2lua1xuIikpOworICAgICAgICBERUJVR01TR1RMKCgidHJhcCIsICJhZGRpbmcgY2FsbGJhY2sgdHJhcCBzaW5rICglcClcbiIsIHNzKSk7CiAgICAgICAgIGFyZ3Muc3MgPSBzczsKICAgICAgICAgYXJncy5jb25maXJtID0gY29uZmlybTsKICAgICAgICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLApAQCAtMTk3LDggKzE5OSw5IEBACiBpbnQKIHJlbW92ZV90cmFwX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc3MpCiB7Ci0gICAgc3RydWN0IHRyYXBfc2luayAqc3AgPSBzaW5rcywgKnByZXYgPSAwOworICAgIHN0cnVjdCB0cmFwX3NpbmsgKnNwID0gc2lua3MsICpwcmV2ID0gTlVMTDsKIAorICAgIERFQlVHTVNHVEwoKCJ0cmFwIiwgInJlbW92aW5nIHRyYXAgc2Vzc2lvbnNcbiIpKTsKICAgICB3aGlsZSAoc3ApIHsKICAgICAgICAgaWYgKHNwLT5zZXNwID09IHNzKSB7CiAgICAgICAgICAgICBpZiAocHJldikgewpAQCAtMjE2LDYgKzIxOSw3IEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogZnJlZV90cmFwX3Nlc3Npb24oc3ApOyAgCiAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0cmFwIiwgInJlbW92aW5nIHRyYXAgc2Vzc2lvbiAoJXAsICVwKVxuIiwgc3AsIHNwLT5zZXNwKSk7CiAgICAgICAgICAgICBmcmVlKHNwKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CkBAIC0zMTgsNiArMzIyLDcgQEAKIHNubXBkX2ZyZWVfdHJhcHNpbmtzKHZvaWQpCiB7CiAgICAgc3RydWN0IHRyYXBfc2luayAqc3AgPSBzaW5rczsKKyAgICBERUJVR01TR1RMKCgidHJhcCIsICJmcmVlaW5nIHRyYXAgc2Vzc2lvbnNcbiIpKTsKICAgICB3aGlsZSAoc3ApIHsKICAgICAgICAgc2lua3MgPSBzaW5rcy0+bmV4dDsKICAgICAgICAgZnJlZV90cmFwX3Nlc3Npb24oc3ApOwpAQCAtMzM4LDcgKzM0Myw2IEBACiAgICAgbmV0c25tcF9wZHUgICAgICAgICAgICp0ZW1wbGF0ZV92MXBkdTsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmZpcnN0X3ZiLCAqdmJsaXN0OwogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyOwotICAgIHNpemVfdCAgICAgICAgICAgICAgICAgbGVuOwogCiAgICAgLyoKICAgICAgKiBNYWtlIGEgY29weSBvZiB0aGUgdjIgVHJhcCBQRFUKQEAgLTQxOCw5ICs0MjIsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcHRyYXBlbnRlcnByaXNlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcHRyYXBlbnRlcnByaXNlX29pZF9sZW4pOwogICAgICAgICBpZiAodmFyKSB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZV92MXBkdS0+ZW50ZXJwcmlzZSA9Ci0gICAgICAgICAgICAgICAgbmV0c25tcF9tZW1kdXAodmFyLT52YWwub2JqaWQsIHZhci0+dmFsX2xlbik7CiAgICAgICAgICAgICB0ZW1wbGF0ZV92MXBkdS0+ZW50ZXJwcmlzZV9sZW5ndGggPSB2YXItPnZhbF9sZW4vc2l6ZW9mKG9pZCk7CisgICAgICAgICAgICB0ZW1wbGF0ZV92MXBkdS0+ZW50ZXJwcmlzZSA9CisgICAgICAgICAgICAgICAgc25tcF9kdXBsaWNhdGVfb2JqaWQodmFyLT52YWwub2JqaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVfdjFwZHUtPmVudGVycHJpc2VfbGVuZ3RoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRlbXBsYXRlX3YxcGR1LT5lbnRlcnByaXNlICAgICAgICA9IE5VTEw7CiAgICAgICAgICAgICB0ZW1wbGF0ZV92MXBkdS0+ZW50ZXJwcmlzZV9sZW5ndGggPSAwOwkJLyogWFhYID8/PyAqLwpAQCAtNDMwLDcgKzQzNSw3IEBACiAgICAgICAgICAqIEZvciBlbnRlcnByaXNlLXNwZWNpZmljIHRyYXBzLCBzcGxpdCB0aGUgc25tcFRyYXBPSUQgdmFsdWUKICAgICAgICAgICogICBpbnRvIGVudGVycHJpc2UgYW5kIHNwZWNpZmljIHRyYXAKICAgICAgICAgICovCi0gICAgICAgIGxlbiA9IHZibGlzdC0+dmFsX2xlbiAvIHNpemVvZihvaWQpOworICAgICAgICBzaXplX3QgbGVuID0gdmJsaXN0LT52YWxfbGVuIC8gc2l6ZW9mKG9pZCk7CiAgICAgICAgIGlmICggbGVuIDw9IDIgKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKICAgICAgICAgICAgICAgICAgICAgICJzZW5kX3RyYXA6IHYyIHRyYXBPSUQgdG9vIHNob3J0ICglZClcbiIsIChpbnQpbGVuKTsKQEAgLTQ0NCw3ICs0NDksNyBAQAogICAgICAgICAgICAgbGVuLS07CiAgICAgICAgIFNOTVBfRlJFRSh0ZW1wbGF0ZV92MXBkdS0+ZW50ZXJwcmlzZSk7CiAgICAgICAgIHRlbXBsYXRlX3YxcGR1LT5lbnRlcnByaXNlID0KLSAgICAgICAgICAgIG5ldHNubXBfbWVtZHVwKHZibGlzdC0+dmFsLm9iamlkLCBsZW4qc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgc25tcF9kdXBsaWNhdGVfb2JqaWQodmJsaXN0LT52YWwub2JqaWQsIGxlbik7CiAgICAgICAgIHRlbXBsYXRlX3YxcGR1LT5lbnRlcnByaXNlX2xlbmd0aCA9IGxlbjsKICAgICB9CiAgICAgdmFyID0gZmluZF92YXJiaW5kX2luX2xpc3QoIHZibGlzdCwgYWdlbnRhZGRyX29pZCwKQEAgLTYzNyw2ICs2NDIsOCBAQAogICAgIGluX2FkZHJfdCAgICAgICAgICAgICAqcGR1X2luX2FkZHJfdDsKICAgICB1X2xvbmcgICAgICAgICAgICAgICAgIHVwdGltZTsKICAgICBzdHJ1Y3QgdHJhcF9zaW5rICpzaW5rOworICAgIGNvbnN0IGNoYXIgICAgICAgICAgICAqdjF0cmFwYWRkcmVzczsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgIHJlczsKIAogICAgIERFQlVHTVNHVEwoKCAidHJhcCIsICJzZW5kX3RyYXAgJWQgJWQgIiwgdHJhcCwgc3BlY2lmaWMpKTsKICAgICBERUJVR01TR09JRCgoInRyYXAiLCBlbnRlcnByaXNlLCBlbnRlcnByaXNlX2xlbmd0aCkpOwpAQCAtNzkwLDkgKzc5NywyOSBAQAogICAgICAqIEVuc3VyZSB0aGF0IHRoZSB2MSB0cmFwIFBEVSBpbmNsdWRlcyB0aGUgbG9jYWwgSVAgYWRkcmVzcwogICAgICAqLwogICAgICAgIHBkdV9pbl9hZGRyX3QgPSAoaW5fYWRkcl90ICopIHRlbXBsYXRlX3YxcGR1LT5hZ2VudF9hZGRyOwotICAgICAgKnBkdV9pbl9hZGRyX3QgPSBnZXRfbXlhZGRyKCk7CisgICAgICAgdjF0cmFwYWRkcmVzcyA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1RSQVBfQUREUik7CisgICAgICAgaWYgKHYxdHJhcGFkZHJlc3MgIT0gTlVMTCkgeworICAgICAgICAgICAvKiAidjF0cmFwYWRkcmVzcyIgd2FzIHNwZWNpZmllZCBpbiBjb25maWcsIHRyeSB0byByZXNvbHZlIGl0ICovCisgICAgICAgICAgIHJlcyA9IG5ldHNubXBfZ2V0aG9zdGJ5bmFtZV92NCh2MXRyYXBhZGRyZXNzLCBwZHVfaW5fYWRkcl90KTsKKyAgICAgICB9CisgICAgICAgaWYgKHYxdHJhcGFkZHJlc3MgPT0gTlVMTCB8fCByZXMgPCAwKSB7CisgICAgICAgICAgIC8qICJ2MXRyYXBhZGRyZXNzIiB3YXMgbm90IHNwZWNpZmllZCBpbiBjb25maWcgb3IgdGhlIHJlc29sdXRpb24gZmFpbGVkLAorICAgICAgICAgICAgKiB0cnkgYW55IGxvY2FsIGFkZHJlc3MgKi8KKyAgICAgICAgICAgKnBkdV9pbl9hZGRyX3QgPSBnZXRfbXlhZGRyKCk7CisgICAgICAgfQorCiAgICAgfQogCisgICAgaWYgKHRlbXBsYXRlX3YycGR1KSB7CisJLyogQSBjb250ZXh0IG5hbWUgd2FzIHByb3ZpZGVkLCBzbyBjb3B5IGl0IGFuZCBpdHMgbGVuZ3RoIHRvIHRoZSB2MiBwZHUKKwkgKiB0ZW1wbGF0ZS4gKi8KKwlpZiAoY29udGV4dCAhPSBOVUxMKQorCXsKKwkJdGVtcGxhdGVfdjJwZHUtPmNvbnRleHROYW1lICAgID0gc3RyZHVwKGNvbnRleHQpOworCQl0ZW1wbGF0ZV92MnBkdS0+Y29udGV4dE5hbWVMZW4gPSBzdHJsZW4oY29udGV4dCk7CisJfQorICAgIH0KIAogICAgIC8qCiAgICAgICogIE5vdyBsb29wIHRocm91Z2ggdGhlIGxpc3Qgb2YgdHJhcCBzaW5rcwpAQCAtOTQ5LDYgKzk3NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgodHJhcF92ZXJzaW9uX2lkKSwgdmFycyk7CiB9CiAKKy8qIFNlbmQgYSB0cmFwIHVuZGVyIGEgY29udGV4dCAqLwordm9pZCBzZW5kX3RyYXBfdmFyc193aXRoX2NvbnRleHQoaW50IHRyYXAsIGludCBzcGVjaWZpYywgCisgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgY2hhciAqY29udGV4dCkKK3sKKyAgICBpZiAodHJhcCA9PSBTTk1QX1RSQVBfRU5URVJQUklTRVNQRUNJRklDKQorICAgICAgICBuZXRzbm1wX3NlbmRfdHJhcHModHJhcCwgc3BlY2lmaWMsIG9iamlkX2VudGVycHJpc2V0cmFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgob2JqaWRfZW50ZXJwcmlzZXRyYXApLCB2YXJzLAorCQkJCQkJCQkgIGNvbnRleHQsIDApOworICAgIGVsc2UKKyAgICAgICAgbmV0c25tcF9zZW5kX3RyYXBzKHRyYXAsIHNwZWNpZmljLCB0cmFwX3ZlcnNpb25faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSCh0cmFwX3ZlcnNpb25faWQpLCB2YXJzLCAKKwkJCQkJCQkJICBjb250ZXh0LCAwKTsKKyAgICAJCit9CisKIC8qKgogICogU2VuZHMgYW4gU05NUHYxIHRyYXAgKG9yIHRoZSBTTk1QdjIgZXF1aXZhbGVudCkgdG8gdGhlIGxpc3Qgb2YgIAogICogY29uZmlndXJlZCB0cmFwIGRlc3RpbmF0aW9ucyAob3IgInNpbmtzIiksIHVzaW5nIHRoZSBwcm92aWRlZCAKQEAgLTEwMDcsNiArMTA0OSwyNSBAQAogICAgIHNlbmRfdHJhcF92YXJzKC0xLCAtMSwgdmFycyk7CiB9CiAKKy8qKgorICogU2ltaWxhciB0byBzZW5kX3YydHJhcCgpLCB3aXRoIHRoZSBhZGRlZCBhYmlsaXR5IHRvIHNwZWNpZnkgYSBjb250ZXh0LiAgSWYKKyAqIHRoZSBsYXN0IHBhcmFtZXRlciBpcyBOVUxMLCB0aGVuIHRoaXMgY2FsbCBpcyBlcXVpdmFsZW50IHRvIHNlbmRfdjJ0cmFwKCkuCisgKgorICogQHBhcmFtIHZhcnMgaXMgdXNlZCB0byBzdXBwbHkgdGhlIGxpc3Qgb2YgdmFyaWFibGUgYmluZGluZ3MgZm9yIHRoZSB0cmFwLgorICogCisgKiBAcGFyYW0gY29udGV4dCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNvbnRleHQgb2YgdGhlIHRyYXAuCisgKgorICogQHJldHVybiB2b2lkCisgKgorICogQHNlZSBzZW5kX3YydHJhcAorICovCit2b2lkIHNlbmRfdjN0cmFwKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgY2hhciAqY29udGV4dCkKK3sKKyAgICBuZXRzbm1wX3NlbmRfdHJhcHMoLTEsIC0xLCAKKwkJCQkJdHJhcF92ZXJzaW9uX2lkLCBPSURfTEVOR1RIKHRyYXBfdmVyc2lvbl9pZCksCisgICAgICAgICAgICAgICAgICAgIHZhcnMsIGNvbnRleHQsIDApOworfQorCiB2b2lkCiBzZW5kX3RyYXBfcGR1KG5ldHNubXBfcGR1ICpwZHUpCiB7CkBAIC0xMDczLDcgKzExMzQsNiBAQAogdm9pZAogc25tcGRfcGFyc2VfY29uZmlnX3RyYXBzaW5rKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07CiAgICAgY2hhciAgICAgICAgICAgKnNwLCAqY3AsICpwcCA9IE5VTEw7CiAgICAgY2hhciAgICAgICAgICAgICpzdDsKIApAQCAtMTA4Niw5ICsxMTQ2LDcgQEAKICAgICBpZiAocHApCiAJY29uZmlnX3B3YXJuKCJUaGUgc2VwYXJhdGUgcG9ydCBhcmd1bWVudCB0byB0cmFwc2luayBpcyBkZXByZWNhdGVkIik7CiAgICAgaWYgKGNyZWF0ZV92MV90cmFwX3Nlc3Npb24oc3AsIHBwLCBjcCA/IGNwIDogc25tcF90cmFwY29tbXVuaXR5KSA9PSAwKSB7Ci0gICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJjYW5ub3QgY3JlYXRlIHRyYXBzaW5rOiAlcyIsIGNwdHIpOwotICAgICAgICB0bXBidWZbc2l6ZW9mKHRtcGJ1ZiktMV0gPSAnXDAnOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJbmV0c25tcF9jb25maWdfZXJyb3IoImNhbm5vdCBjcmVhdGUgdHJhcHNpbms6ICVzIiwgY3B0cik7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xMDk3LDkgKzExNTUsNyBAQAogdm9pZAogc25tcGRfcGFyc2VfY29uZmlnX3RyYXAyc2luayhjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07Ci0gICAgY2hhciAgICAgICAgICAgKnNwLCAqY3AsICpwcCA9IE5VTEw7Ci0gICAgY2hhciAgICAgICAgICAgICpzdDsKKyAgICBjaGFyICAgICAgICAgICAqc3QsICpzcCwgKmNwLCAqcHAgPSBOVUxMOwogCiAgICAgaWYgKCFzbm1wX3RyYXBjb21tdW5pdHkpCiAgICAgICAgIHNubXBfdHJhcGNvbW11bml0eSA9IHN0cmR1cCgicHVibGljIik7CkBAIC0xMTEwLDE4ICsxMTY2LDE0IEBACiAgICAgaWYgKHBwKQogCWNvbmZpZ19wd2FybigiVGhlIHNlcGFyYXRlIHBvcnQgYXJndW1lbnQgdG8gdHJhcHNpbmsyIGlzIGRlcHJlY2F0ZWQiKTsKICAgICBpZiAoY3JlYXRlX3YyX3RyYXBfc2Vzc2lvbihzcCwgcHAsIGNwID8gY3AgOiBzbm1wX3RyYXBjb21tdW5pdHkpID09IDApIHsKLSAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwgImNhbm5vdCBjcmVhdGUgdHJhcDJzaW5rOiAlcyIsIGNwdHIpOwotICAgICAgICB0bXBidWZbc2l6ZW9mKHRtcGJ1ZiktMV0gPSAnXDAnOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJbmV0c25tcF9jb25maWdfZXJyb3IoImNhbm5vdCBjcmVhdGUgdHJhcDJzaW5rOiAlcyIsIGNwdHIpOwogICAgIH0KIH0KIAogdm9pZAogc25tcGRfcGFyc2VfY29uZmlnX2luZm9ybXNpbmsoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cikKIHsKLSAgICBjaGFyICAgICAgICAgICAgdG1wYnVmWzEwMjRdOwotICAgIGNoYXIgICAgICAgICAgICpzcCwgKmNwLCAqcHAgPSBOVUxMOwotICAgIGNoYXIgICAgICAgICAgICAqc3Q7CisgICAgY2hhciAgICAgICAgICAgKnN0LCAqc3AsICpjcCwgKnBwID0gTlVMTDsKIAogICAgIGlmICghc25tcF90cmFwY29tbXVuaXR5KQogICAgICAgICBzbm1wX3RyYXBjb21tdW5pdHkgPSBzdHJkdXAoInB1YmxpYyIpOwpAQCAtMTEzMiw5ICsxMTg0LDcgQEAKICAgICBpZiAocHApCiAJY29uZmlnX3B3YXJuKCJUaGUgc2VwYXJhdGUgcG9ydCBhcmd1bWVudCB0byBpbmZvcm1zaW5rIGlzIGRlcHJlY2F0ZWQiKTsKICAgICBpZiAoY3JlYXRlX3YyX2luZm9ybV9zZXNzaW9uKHNwLCBwcCwgY3AgPyBjcCA6IHNubXBfdHJhcGNvbW11bml0eSkgPT0gMCkgewotICAgICAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLCAiY2Fubm90IGNyZWF0ZSBpbmZvcm1zaW5rOiAlcyIsIGNwdHIpOwotICAgICAgICB0bXBidWZbc2l6ZW9mKHRtcGJ1ZiktMV0gPSAnXDAnOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJbmV0c25tcF9jb25maWdfZXJyb3IoImNhbm5vdCBjcmVhdGUgaW5mb3Jtc2luazogJXMiLCBjcHRyKTsKICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L2F1dG9fbmxpc3QuYyBiL2FnZW50L2F1dG9fbmxpc3QuYwppbmRleCBkZmYxZjJiLi4wYjU5OTVhIDEwMDY0NAotLS0gYS9hZ2VudC9hdXRvX25saXN0LmMKKysrIGIvYWdlbnQvYXV0b19ubGlzdC5jCkBAIC0xNDksNyArMTQ5LDYgQEAKIHN0YXRpYyB2b2lkCiBpbml0X25saXN0KHN0cnVjdCBubGlzdCBubFtdKQogewotI2lmZGVmIE5FVFNOTVBfQ0FOX1VTRV9OTElTVAogICAgIGludCAgICAgICAgICAgICByZXQ7CiAjaWYgSEFWRV9LVk1fT1BFTkZJTEVTCiAgICAga3ZtX3QgICAgICAgICAgKmtlcm5lbDsKQEAgLTIyMiw3ICsyMjEsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCkgbmxbcmV0XS5uX3ZhbHVlKSk7CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfQ0FOX1VTRV9OTElTVCAqLwogfQogCiBpbnQKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kIGIvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKaW5kZXggODNmZTU0ZS4uYzI0ZTM0YyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKQEAgLTgsMzIgKzgsMTQgQEAKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDQsMTEgKzI2LDMxIEBACiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMDIsNiArMTA0LDcgQEAKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTExMCwzMiArMTEzLDE0IEBACiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTQ2LDExICsxMzEsMzEgQEAKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjEyLDMyICsyMTcsMTQgQEAKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI0OCwxMSArMjM1LDMxIEBACiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzE0LDMyICszMjEsMTQgQEAKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zNTAsMTEgKzMzOSwzMSBAQAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00MTYsMzIgKzQyNSwxNCBAQAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ1MiwxMSArNDQzLDMxIEBACiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTUxOCwzMiArNTI5LDE0IEBACiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTU1NCwxMSArNTQ3LDMxIEBACiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02MjAsMzIgKzYzMywxNCBAQAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTY1NiwxMSArNjUxLDMxIEBACiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTcyMiwzMiArNzM3LDE0IEBACiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTc1OCwxMSArNzU1LDMxIEBACiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04MjQsMzIgKzg0MSwxNCBAQAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg2MCwxMCArODU5LDMxIEBACiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTkyNSwzMiArOTQ1LDE0IEBACiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtOTYxLDExICs5NjMsMzEgQEAKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTAyOCwzMiArMTA1MCwxNCBAQAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTA2NCwxMSArMTA2OCwzMSBAQAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTExMzAsMzIgKzExNTQsMTQgQEAKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTExNjYsMTEgKzExNzIsMzEgQEAKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMjMyLDMyICsxMjU4LDE0IEBACiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMjY4LDExICsxMjc2LDMxIEBACiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTMzNCwzMiArMTM2MiwxNCBAQAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTM3MCwxMSArMTM4MCwzMSBAQAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE0MzYsMzIgKzE0NjYsMTQgQEAKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0NzIsMTEgKzE0ODQsMzEgQEAKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNTM4LDMyICsxNTcwLDE0IEBACiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE1NzQsMTEgKzE1ODgsMzEgQEAKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE2NDIsMzIgKzE2NzYsMTQgQEAKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNjc4LDExICsxNjk0LDMxIEBACiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE3MzYsMTA5ICsxNzcyLDggQEAKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTg0NywzMiArMTc4MiwxNCBAQAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xODgzLDExICsxODAwLDMxIEBACiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xOTQxLDYgKzE4NzgsMTEwIEBACiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTk0OSwzMiArMTk5MCwxNCBAQAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTk4NSwxMSArMjAwOCwzMSBAQAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIwNTEsMzIgKzIwOTQsMTQgQEAKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMDg3LDExICsyMTEyLDMxIEBACiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIxNTMsMzIgKzIxOTgsMTQgQEAKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMTg5LDExICsyMjE2LDMxIEBACiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIyNTUsMzIgKzIzMDIsMTQgQEAKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjI5MSwxMSArMjMyMCwzMSBAQAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjM1OCwzMiArMjQwNywxNCBAQAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjM5NCwxMSArMjQyNSwzMSBAQAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTI0NjAsMzIgKzI1MTEsMTQgQEAKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjQ5NiwxMSArMjUyOSwzMSBAQAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjU2MiwzMiArMjYxNSwxNCBAQAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI1OTgsMTEgKzI2MzMsMzEgQEAKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbiBiL2FnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW4KaW5kZXggYjgzYWY4OS4uYzZiNzMyZiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbgorKysgYi9hZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluCkBAIC0zMSwxMyArMzEsMTMgQEAKICAgICAgICAgc2VyaWFsaXplLmggXAogCXN0YXNoX2NhY2hlLmggXAogCXN0YXNoX3RvX25leHQuaCBcCi0gICAgICAgIHRhYmxlLmggXAogCXRhYmxlX2FycmF5LmggXAogCXRhYmxlX2NvbnRhaW5lci5oIFwKKyAgICAgICAgdGFibGUuaCBcCiAgICAgICAgIHRhYmxlX2RhdGEuaCBcCiAgICAgICAgIHRhYmxlX2RhdGFzZXQuaCBcCi0gICAgICAgIHRhYmxlX2l0ZXJhdG9yLmggXAogICAgICAgICB0YWJsZV90ZGF0YS5oIFwKKyAgICAgICAgdGFibGVfaXRlcmF0b3IuaCBcCiAJd2F0Y2hlci5oCiAKICMgTm8gaGVhZGVyICd0YWJsZV9yb3cuaCcKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYyBiL2FnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYwppbmRleCAwMmJjOGFmLi4xZWQxMDhhIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMKKysrIGIvYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jCkBAIC01LDE1ICs1LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpZmRlZiBTVElMTF9UT19ETwotICAgICAgICAvKgotICAgICAgICAgKiBJdCBvdWdodCB0byBiZSBwb3NzaWJsZSB0byBqdXN0ICNpbmNsdWRlIHRoZXNlIGZpbGVzLAotICAgICAgICAgKiAgIGJ1dCB0aGV5IHJlbHkgb24gdmFyaW91cyBvdGhlciB0eXBlcyBiZWluZyBkZWZpbmVkIGZpcnN0LgotICAgICAgICAgKgotICAgICAgICAgKiBJIHJlYWxseSBjYW4ndCBmYWNlIHRyYWNraW5nIGRvd24gdGhlIGRlcGVuZGVuY3kgY2hhaW4KLSAgICAgICAgICogICBqdXN0IGF0IHRoZSBtb21lbnQuCi0gICAgICAgICAqIFNvIHdlJ2xsIGp1c3QgaGF2ZSB0byBsaXZlIHdpdGggdGhlIHdhcm5pbmdzLi4uLgotICAgICAgICAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5Lmg+CkBAIC0yMSwxNiArMTIsNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oPgogCi0jZWxzZQotCi12b2lkICBuZXRzbm1wX2luaXRfZGVidWdfaGVscGVyKHZvaWQpOwotdm9pZCAgbmV0c25tcF9pbml0X3NlcmlhbGl6ZSh2b2lkKTsKLXZvaWQgIG5ldHNubXBfaW5pdF9yZWFkX29ubHlfaGVscGVyKHZvaWQpOwotdm9pZCAgbmV0c25tcF9pbml0X2J1bGtfdG9fbmV4dF9oZWxwZXIodm9pZCk7Ci12b2lkICBuZXRzbm1wX2luaXRfdGFibGVfZGF0YXNldCh2b2lkKTsKLXZvaWQgIG5ldHNubXBfaW5pdF9zdGFzaF9jYWNoZV9oZWxwZXIodm9pZCk7Ci0jZW5kaWYKLQogLyoqIGNhbGwgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciBhbGwgaGFuZGxlcnMgd2l0aCBpbml0XyByb3V0aW5lcy4gKi8KIHZvaWQKIG5ldHNubXBfaW5pdF9oZWxwZXJzKHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL2J1bGtfdG9fbmV4dC5jIGIvYWdlbnQvaGVscGVycy9idWxrX3RvX25leHQuYwppbmRleCA0ZGQxOTE0Li5lNjA3ZWRhIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2J1bGtfdG9fbmV4dC5jCisrKyBiL2FnZW50L2hlbHBlcnMvYnVsa190b19uZXh0LmMKQEAgLTEsMTEgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCi0jaWYgSEFWRV9TVFJJTkdfSAotI2luY2x1ZGUgPHN0cmluZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMgYi9hZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYwppbmRleCA1MjBkNDYzLi5iZmQ2ZTBhIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYworKysgYi9hZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYwpAQCAtMSwxNiArMSwyNiBAQAorLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmg+CisKICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZWxzZQogI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgotCi0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oPgotCiBzdGF0aWMgbmV0c25tcF9jYWNoZSAgKmNhY2hlX2hlYWQgPSBOVUxMOwogc3RhdGljIGludCAgICAgICAgICAgICBjYWNoZV9vdXRzdGFuZGluZ192YWxpZCA9IDA7CiBzdGF0aWMgaW50ICAgICAgICAgICAgIF9jYWNoZV9sb2FkKCBuZXRzbm1wX2NhY2hlICpjYWNoZSApOwpAQCAtMTE3LDcgKzEyNyw3IEBACiAvKiogZmluZCBleGlzdGluZyBjYWNoZQogICovCiBuZXRzbm1wX2NhY2hlICoKLW5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWQob2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKQorbmV0c25tcF9jYWNoZV9maW5kX2J5X29pZChjb25zdCBvaWQgKiByb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pCiB7CiAgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlOwogCkBAIC0xMzUsNyArMTQ1LDcgQEAKIG5ldHNubXBfY2FjaGUgKgogbmV0c25tcF9jYWNoZV9jcmVhdGUoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssCiAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQ2FjaGVGcmVlICogZnJlZV9ob29rLAotICAgICAgICAgICAgICAgICAgICAgb2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKQorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKQogewogICAgIG5ldHNubXBfY2FjaGUgICpjYWNoZSA9IE5VTEw7CiAKQEAgLTE3Myw2ICsxODMsNDAgQEAKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKKy8qKiBmcmVlcyBhIGNhY2hlCisgKi8KK2ludAorbmV0c25tcF9jYWNoZV9mcmVlKG5ldHNubXBfY2FjaGUgKmNhY2hlKQoreworICAgIG5ldHNubXBfY2FjaGUgICpwb3M7CisKKyAgICBpZiAoTlVMTCA9PSBjYWNoZSkKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIGZvciAocG9zID0gY2FjaGVfaGVhZDsgcG9zOyBwb3MgPSBwb3MtPm5leHQpIHsKKyAgICAgICAgaWYgKHBvcyA9PSBjYWNoZSkgeworICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgIG91dF9sZW4gPSAwOworICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgIGJ1Zl9sZW4gPSAwOworICAgICAgICAgICAgY2hhciAgICAgICAgICAgKmJ1ZiA9IE5VTEw7CisKKyAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX29iamlkKCh1X2NoYXIgKiopICZidWYsICZidWZfbGVuLCAmb3V0X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIHBvcy0+cm9vdG9pZCwgcG9zLT5yb290b2lkX2xlbik7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKwkJICAgICAibm90IGZyZWVpbmcgY2FjaGUgd2l0aCByb290IE9JRCAlcyAoc3RpbGwgaW4gbGlzdClcbiIsCisJCSAgICAgYnVmKTsKKyAgICAgICAgICAgIGZyZWUoYnVmKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY2FjaGUtPnJvb3RvaWQpCisgICAgICAgIGZyZWUoY2FjaGUtPnJvb3RvaWQpOworCisgICAgZnJlZShjYWNoZSk7CisKKyAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOworfQorCiAvKiogY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCBjYWNoZSBsb2FkIGZ1bmN0aW9uICovCiBzdGF0aWMgdm9pZAogX3RpbWVyX3JlbG9hZCh1bnNpZ25lZCBpbnQgcmVnTm8sIHZvaWQgKmNsaWVudGFyZ3MpCkBAIC0yMTcsNyArMjYxLDcgQEAKIAogICAgIGNhY2hlLT5mbGFncyAmPSB+TkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRDsKICAgICBERUJVR01TR1QoKCJjYWNoZV90aW1lcjpzdGFydCIsCi0gICAgICAgICAgICAgICAic3RhcnRpbmcgdGltZXIgJWQgZm9yIGNhY2hlICVwXG4iLCBjYWNoZS0+dGltZXJfaWQsIGNhY2hlKSk7CisgICAgICAgICAgICAgICAic3RhcnRpbmcgdGltZXIgJWx1IGZvciBjYWNoZSAlcFxuIiwgY2FjaGUtPnRpbWVyX2lkLCBjYWNoZSkpOwogICAgIHJldHVybiBjYWNoZS0+dGltZXJfaWQ7CiB9CiAKQEAgLTIzNCw3ICsyNzgsNyBAQAogICAgIH0KIAogICAgIERFQlVHTVNHVCgoImNhY2hlX3RpbWVyOnN0b3AiLAotICAgICAgICAgICAgICAgInN0b3BwaW5nIHRpbWVyICVkIGZvciBjYWNoZSAlcFxuIiwgY2FjaGUtPnRpbWVyX2lkLCBjYWNoZSkpOworICAgICAgICAgICAgICAgInN0b3BwaW5nIHRpbWVyICVsdSBmb3IgY2FjaGUgJXBcbiIsIGNhY2hlLT50aW1lcl9pZCwgY2FjaGUpKTsKIAogICAgIHNubXBfYWxhcm1fdW5yZWdpc3RlcihjYWNoZS0+dGltZXJfaWQpOwogICAgIGNhY2hlLT5mbGFncyB8PSBORVRTTk1QX0NBQ0hFX0FVVE9fUkVMT0FEOwpAQCAtMjc1LDcgKzMxOSw3IEBACiBuZXRzbm1wX21pYl9oYW5kbGVyICoKIG5ldHNubXBfZ2V0X2NhY2hlX2hhbmRsZXIoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBDYWNoZUZyZWUgKiBmcmVlX2hvb2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKQogewogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKnJldCA9IE5VTEw7CiAgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlID0gTlVMTDsKQEAgLTQ2Myw3ICs1MDcsNyBAQAogICAgIGNhc2UgTU9ERV9HRVQ6CiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgY2FzZSBNT0RFX0dFVEJVTEs6Ci0gICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMTogeworICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAKICAgICAgICAgLyoKICAgICAgICAgICogb25seSB0b3VjaCBjYWNoZSBvbmNlIHBlciBwZHUgcmVxdWVzdCwgdG8gcHJldmVudCBhIGNhY2hlCkBAIC00NzQsNyArNTE4LDcgQEAKICAgICAgICAgICogbWF5YmUgdXNlIGEgcmVmZXJlbmNlIGNvdW50ZXI/CiAgICAgICAgICAqLwogICAgICAgICBpZiAobmV0c25tcF9jYWNoZV9pc192YWxpZChyZXFpbmZvLCBhZGRyc3RyKSkKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyoKICAgICAgICAgICogY2FsbCB0aGUgbG9hZCBob29rLCBhbmQgdXBkYXRlIHRoZSBjYWNoZSB0aW1lc3RhbXAuCkBAIC00ODMsOCArNTI3LDcgQEAKICAgICAgICAgbmV0c25tcF9jYWNoZV9jaGVja19hbmRfcmVsb2FkKGNhY2hlKTsKICAgICAgICAgbmV0c25tcF9jYWNoZV9yZXFpbmZvX2luc2VydChjYWNoZSwgcmVxaW5mbywgYWRkcnN0cik7CiAgICAgICAgIC8qKiBuZXh0IGhhbmRsZXIgY2FsbGVkIGF1dG9tYXRpY2FsbHkgLSAnQVVUT19ORVhUJyAqLwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgpAQCAtNDkyLDcgKzUzNSw3IEBACiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgICAgICBuZXRzbm1wX2Fzc2VydChuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkKHJlcWluZm8sIGFkZHJzdHIpKTsKICAgICAgICAgLyoqIG5leHQgaGFuZGxlciBjYWxsZWQgYXV0b21hdGljYWxseSAtICdBVVRPX05FWFQnICovCi0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICBicmVhazsKIAogICAgICAgICAvKgogICAgICAgICAgKiBBIChzdWNjZXNzZnVsKSBTRVQgcmVxdWVzdCB3b3VsZG4ndCB0eXBpY2FsbHkgdHJpZ2dlciBhIHJlbG9hZCBvZgpAQCAtNTA2LDcgKzU0OSw3IEBACiAgICAgICAgICAgICBjYWNoZS0+dmFsaWQgPSAwOwogICAgICAgICB9CiAgICAgICAgIC8qKiBuZXh0IGhhbmRsZXIgY2FsbGVkIGF1dG9tYXRpY2FsbHkgLSAnQVVUT19ORVhUJyAqLwotICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgImNhY2hlX2hhbmRsZXI6IFVucmVjb2duaXNlZCBtb2RlICglZClcbiIsCkBAIC01MTQsOCArNTU3LDcgQEAKICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7CiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgfQotICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBTTk1QX0VSUl9HRU5FUlIpOwotICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7ICAgICAvKiBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUgKi8KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvZGVidWdfaGFuZGxlci5jIGIvYWdlbnQvaGVscGVycy9kZWJ1Z19oYW5kbGVyLmMKaW5kZXggNGUzNTY5NS4uODMyYWQyZCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9kZWJ1Z19oYW5kbGVyLmMKKysrIGIvYWdlbnQvaGVscGVycy9kZWJ1Z19oYW5kbGVyLmMKQEAgLTksMTMgKzksNiBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgotCi0jaWYgSEFWRV9TVFJJTkdfSAotI2luY2x1ZGUgPHN0cmluZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMTI0LDcgKzExNyw3IEBACiAgICAgZm9yIChocHRyID0gcmVnaW5mby0+aGFuZGxlcjsgaHB0cjsgaHB0ciA9IGhwdHItPm5leHQpIHsKICAgICAgICAgREVCVUdNU0coKCJoZWxwZXI6ZGVidWciLCAiIC0+ICVzIiwgaHB0ci0+aGFuZGxlcl9uYW1lKSk7CiAgICAgICAgIGlmIChocHRyLT5teXZvaWQpCi0gICAgICAgICAgICBERUJVR01TRygoImhlbHBlcjpkZWJ1ZyIsICIgW215dm9pZCA9ICV4XSIsIGhwdHItPm15dm9pZCkpOworICAgICAgICAgICAgREVCVUdNU0coKCJoZWxwZXI6ZGVidWciLCAiIFtteXZvaWQgPSAlcF0iLCBocHRyLT5teXZvaWQpKTsKICAgICB9CiAgICAgREVCVUdNU0coKCJoZWxwZXI6ZGVidWciLCAiXG4iKSk7CiAKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvaW5zdGFuY2UuYyBiL2FnZW50L2hlbHBlcnMvaW5zdGFuY2UuYwppbmRleCA1YzllMTZkLi45ZWJkYjg3IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMKKysrIGIvYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jCkBAIC0xMCw2ICsxMCwxMSBAQAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oPgorCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMTcsMTAgKzIyLDYgQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5Lmg+CiAKQEAgLTEwOCw3ICsxMDksNyBAQAogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqCiBnZXRfcmVnKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgIGNvbnN0IGNoYXIgKm91cm5hbWUsCi0gICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICB2b2lkICppdCwKICAgICAgICAgaW50IG1vZGVzLAogICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHNjYWxhcmgsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwKQEAgLTE0MiwxMTUgKzE0MywxMTQgQEAKIC8qIFdhdGNoZWQgJ2xvbmcnIGluc3RhbmNlcyBhcmUgd3JpdGFibGUgb24gYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBzeXN0ZW1zICAqLwogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlcikKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAidWxvbmdfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksIG5ldHNubXBfaW5zdGFuY2VfdWxvbmdfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgTlVMTCk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2luc3RhbmNlKG15cmVnKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwKKyAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWc7Ci0KLSAgICBteXJlZyA9IGdldF9yZWcobmFtZSwgInVsb25nX2hhbmRsZXIiLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgaXQsCi0gICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLCBOVUxMKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShteXJlZyk7CisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpLAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1X2xvbmcpLAorICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlcikKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAiY291bnRlcjMyX2hhbmRsZXIiLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgaXQsCi0gICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCBuZXRzbm1wX2luc3RhbmNlX2NvdW50ZXIzMl9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLCBOVUxMKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW5zdGFuY2UobXlyZWcpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpLAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1X2xvbmcpLAorICAgICAgICAgICAgICAgICAgIEFTTl9DT1VOVEVSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15cmVnOwotCi0gICAgbXlyZWcgPSBnZXRfcmVnKG5hbWUsICJsb25nX2hhbmRsZXIiLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgaXQsCi0gICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCBuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgTlVMTCk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2luc3RhbmNlKG15cmVnKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YobG9uZyksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWc7Ci0KLSAgICBteXJlZyA9IGdldF9yZWcobmFtZSwgImxvbmdfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgTlVMTCk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfaW5zdGFuY2UobXlyZWcpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YobG9uZyksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogLyogV2F0Y2hlZCAnaW50JyBpbnN0YW5jZXMgYXJlIG9ubHkgd3JpdGFibGUgb24gMzItYml0IHN5c3RlbXMgICovCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3VpbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAidWludF9oYW5kbGVyIiwgcmVnX29pZCwgcmVnX29pZF9sZW4sIGl0LAotICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgbmV0c25tcF9pbnN0YW5jZV91aW50X2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsIE5VTEwpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnN0YW5jZShteXJlZyk7CisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSksCisgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVuc2lnbmVkIGludCksCisgICAgICAgICAgICAgICAgICAgQVNOX1VOU0lHTkVELCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3VpbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAidWludF9oYW5kbGVyIiwgcmVnX29pZCwgcmVnX29pZF9sZW4sIGl0LAotICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsIG5ldHNubXBfaW5zdGFuY2VfdWludF9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLCBOVUxMKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShteXJlZyk7CisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpLAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1bnNpZ25lZCBpbnQpLAorICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWc7Ci0KLSAgICBteXJlZyA9IGdldF9yZWcobmFtZSwgImludF9oYW5kbGVyIiwgcmVnX29pZCwgcmVnX29pZF9sZW4sIGl0LAotICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgbmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgTlVMTCk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2luc3RhbmNlKG15cmVnKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoaW50KSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQogCiAgIC8qCkBAIC0yNTgsNyArMjU4LDcgQEAKICAgICovCiBpbnQKIHJlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZShuYW1lLApAQCAtMjcyLDExNSArMjcyLDEyOSBAQAogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAidWxvbmdfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksIG5ldHNubXBfaW5zdGFuY2VfdWxvbmdfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnN0YW5jZShteXJlZyk7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWcgPQorICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCisgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwgQVNOX1VOU0lHTkVELCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAidWxvbmdfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBuZXRzbm1wX2luc3RhbmNlX3Vsb25nX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsIGNvbnRleHROYW1lKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShteXJlZyk7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWcgPQorICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JXUklURSk7CisgICAgaWYgKG15cmVnICYmIGNvbnRleHROYW1lKQorICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgICAgICBteXJlZywgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVfbG9uZyksIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpCiB7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWc7Ci0KLSAgICBteXJlZyA9IGdldF9yZWcobmFtZSwgImNvdW50ZXIzMl9oYW5kbGVyIiwgcmVnX29pZCwgcmVnX29pZF9sZW4sIGl0LAotICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgbmV0c25tcF9pbnN0YW5jZV9jb3VudGVyMzJfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnN0YW5jZShteXJlZyk7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWcgPQorICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCisgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwgQVNOX0NPVU5URVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3ViaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAibG9uZ19oYW5kbGVyIiwgcmVnX29pZCwgcmVnX29pZF9sZW4sIGl0LAotICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgbmV0c25tcF9pbnN0YW5jZV9sb25nX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsIGNvbnRleHROYW1lKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW5zdGFuY2UobXlyZWcpOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15cmVnID0KKyAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgaWYgKG15cmVnICYmIGNvbnRleHROYW1lKQorICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgICAgICBteXJlZywgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKGxvbmcpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpCiB7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWc7Ci0KLSAgICBteXJlZyA9IGdldF9yZWcobmFtZSwgImxvbmdfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKG15cmVnKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZyA9CisgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKTsKKyAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCisgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YobG9uZyksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICppdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAiaW50X2hhbmRsZXIiLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgaXQsCi0gICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgbmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKG15cmVnKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZyA9CisgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKTsKKyAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCisgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoaW50KSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAiaW50X2hhbmRsZXIiLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgaXQsCi0gICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCBuZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLCBjb250ZXh0TmFtZSk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2luc3RhbmNlKG15cmVnKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZyA9CisgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpOworICAgIGlmIChteXJlZyAmJiBjb250ZXh0TmFtZSkKKyAgICAgIG15cmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7CisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgbXlyZWcsIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihpbnQpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKIC8qCkBAIC0zODgsNyArNDAyLDcgQEAKICAqLwogaW50CiByZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKQpAQCAtNDU5LDE3ICs0NzMsMjEgQEAKICAqLwogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15cmVnOwotCi0gICAgbXlyZWcgPSBnZXRfcmVnKG5hbWUsICJpbnRfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBuZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLCBOVUxMKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShteXJlZyk7CisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpLAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihpbnQpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUworCisvKioKKyAqIFxkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42CisgKi8KIGludAogbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTU0Nyw2ICs1NjUsOSBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCisvKioKKyAqIFxkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42CisgKi8KIGludAogbmV0c25tcF9pbnN0YW5jZV9jb3VudGVyMzJfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApAQCAtNTgzLDYgKzYwNCw5IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKKy8qKgorICogXGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYKKyAqLwogaW50CiBuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTY1OCw2ICs2ODIsOSBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCisvKioKKyAqIFxkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42CisgKi8KIGludAogbmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApAQCAtNzM4LDYgKzc2NSw4IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKKyNlbmRpZiAvKiBORVRTTk1QX05PX0RFUFJFQ0FURURfRlVOQ1RJT05TICovCisKIGludAogbmV0c25tcF9pbnN0YW5jZV9udW1fZmlsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTg2Nyw2ICs4OTYsMTEgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX0RFUFJFQ0FURURfRlVOQ1RJT05TCisKKy8qKgorICogXGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYKKyAqLwogaW50CiBuZXRzbm1wX2luc3RhbmNlX3VpbnRfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTk0Nyw2ICs5ODEsOCBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCisjZW5kaWYgLyogTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUyAqLworCiBpbnQKIG5ldHNubXBfaW5zdGFuY2VfaGVscGVyX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvbnVsbC5jIGIvYWdlbnQvaGVscGVycy9udWxsLmMKaW5kZXggZDExMGViOC4uOTdkZmM5MiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9udWxsLmMKKysrIGIvYWdlbnQvaGVscGVycy9udWxsLmMKQEAgLTEsMTYgKzEsMTYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L251bGwuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9udWxsLmg+Ci0KIGludAogbmV0c25tcF9yZWdpc3Rlcl9udWxsKG9pZCAqIGxvYywgc2l6ZV90IGxvY19sZW4pCiB7CkBAIC0yMywxNCArMjMsMTYgQEAKIHsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvOwogICAgIHJlZ2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24pOwotICAgIHJlZ2luZm8tPmhhbmRsZXJOYW1lID0gc3RyZHVwKCIiKTsKLSAgICByZWdpbmZvLT5yb290b2lkID0gbG9jOwotICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuID0gbG9jX2xlbjsKLSAgICByZWdpbmZvLT5oYW5kbGVyID0KLSAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcigibnVsbCIsIG5ldHNubXBfbnVsbF9oYW5kbGVyKTsKLSAgICBpZiAoY29udGV4dE5hbWUpCi0gICAgICAgIHJlZ2luZm8tPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKLSAgICByZWdpbmZvLT5tb2RlcyA9IEhBTkRMRVJfQ0FOX0RFRkFVTFQ7CisgICAgaWYgKHJlZ2luZm8gIT0gTlVMTCkgeworICAgICAgICByZWdpbmZvLT5oYW5kbGVyTmFtZSA9IHN0cmR1cCgiIik7CisgICAgICAgIHJlZ2luZm8tPnJvb3RvaWQgPSBsb2M7CisgICAgICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuID0gbG9jX2xlbjsKKyAgICAgICAgcmVnaW5mby0+aGFuZGxlciA9CisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyKCJudWxsIiwgbmV0c25tcF9udWxsX2hhbmRsZXIpOworICAgICAgICBpZiAoY29udGV4dE5hbWUpCisgICAgICAgICAgICByZWdpbmZvLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7CisgICAgICAgIHJlZ2luZm8tPm1vZGVzID0gSEFORExFUl9DQU5fREVGQVVMVCB8IEhBTkRMRVJfQ0FOX0dFVEJVTEs7CisgICAgfQogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIocmVnaW5mbyk7CiB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvb2xkX2FwaS5jIGIvYWdlbnQvaGVscGVycy9vbGRfYXBpLmMKaW5kZXggNmUzNjc3Ni4uZWMyNjI2MyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9vbGRfYXBpLmMKKysrIGIvYWdlbnQvaGVscGVycy9vbGRfYXBpLmMKQEAgLTEsMTUgKzEsMTYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L29sZF9hcGkuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9vbGRfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CiAKICNkZWZpbmUgTUlCX0NMSUVOVFNfQVJFX0VWSUwgMQpAQCAtNjcsNiArNjgsOCBAQAogICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZwOwogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvID0KICAgICAgICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbik7CisgICAgICAgIGlmIChyZWdpbmZvID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogCiAgICAgICAgIHZwID0gbmV0c25tcF9tZW1kdXAoKGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY29uc3QgY2hhciAqKSB2YXIgKyB2YXJzaXplICogaSksCkBAIC03Nyw2ICs4MCwxMiBAQAogICAgICAgICByZWdpbmZvLT5yb290b2lkX2xlbiA9IChtaWJsb2NsZW4gKyB2cC0+bmFtZWxlbik7CiAgICAgICAgIHJlZ2luZm8tPnJvb3RvaWQgPQogICAgICAgICAgICAgKG9pZCAqKSBtYWxsb2MocmVnaW5mby0+cm9vdG9pZF9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgICAgIGlmIChyZWdpbmZvLT5yb290b2lkID09IE5VTEwpIHsKKyAgICAgICAgICAgIFNOTVBfRlJFRSh2cCk7CisgICAgICAgICAgICBTTk1QX0ZSRUUocmVnaW5mby0+aGFuZGxlck5hbWUpOworICAgICAgICAgICAgU05NUF9GUkVFKHJlZ2luZm8pOworICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQogCiAgICAgICAgIG1lbWNweShyZWdpbmZvLT5yb290b2lkLCBtaWJsb2MsIG1pYmxvY2xlbiAqIHNpemVvZihvaWQpKTsKICAgICAgICAgbWVtY3B5KHJlZ2luZm8tPnJvb3RvaWQgKyBtaWJsb2NsZW4sIHZwLT5uYW1lLCB2cC0+bmFtZWxlbgpAQCAtNDAzLDcgKzQxMiw3IEBACiAgKi8KIHN0YXRpYyBuZXRzbm1wX2FnZW50X3Nlc3Npb24gKmN1cnJlbnRfYWdlbnRfc2Vzc2lvbiA9IE5VTEw7CiBuZXRzbm1wX2FnZW50X3Nlc3Npb24gKgotbmV0c25tcF9nZXRfY3VycmVudF9hZ2VudF9zZXNzaW9uKCkKK25ldHNubXBfZ2V0X2N1cnJlbnRfYWdlbnRfc2Vzc2lvbih2b2lkKQogewogICAgIHJldHVybiBjdXJyZW50X2FnZW50X3Nlc3Npb247CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jIGIvYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYwppbmRleCA1MTJmOTRiLi5iODVjZmI1IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jCisrKyBiL2FnZW50L2hlbHBlcnMvcmVhZF9vbmx5LmMKQEAgLTEsMTEgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCi0jaWYgSEFWRV9TVFJJTkdfSAotI2luY2x1ZGUgPHN0cmluZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNjQsMTMgKzU4LDEwIEBACiAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CiAgICAgICAgIC8qIG5leHQgaGFuZGxlciBjYWxsZWQgYXV0b21hdGljYWxseSAtICdBVVRPX05FWFQnICovCiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgfQorCiAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7Ci0gICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsgICAgIC8qIHNob3VsZCBuZXZlciBnZXQgaGVyZSAqLworICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiB9CiAKIC8qKiBpbml0aWFsaXplcyB0aGUgcmVhZF9vbmx5IGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHJlYWRfb25seQpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYyBiL2FnZW50L2hlbHBlcnMvcm93X21lcmdlLmMKaW5kZXggNmI2NDQzMC4uOWFlN2VhOCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYworKysgYi9hZ2VudC9oZWxwZXJzL3Jvd19tZXJnZS5jCkBAIC0xLDE2ICsxLDE2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaD4KLQogLyoqIEBkZWZncm91cCByb3dfbWVyZ2Ugcm93X21lcmdlCiAgKiAgQ2FsbHMgc3ViIGhhbmRsZXJzIHdpdGggcmVxdWVzdCBmb3Igb25lIHJvdyBhdCBhIHRpbWUuCiAgKiAgQGluZ3JvdXAgdXRpbGl0aWVzCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3NjYWxhci5jIGIvYWdlbnQvaGVscGVycy9zY2FsYXIuYwppbmRleCA0MmM2NmI0Li4yM2I2YmI3IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3NjYWxhci5jCisrKyBiL2FnZW50L2hlbHBlcnMvc2NhbGFyLmMKQEAgLTEwLDYgKzEwLDExIEBACiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NjYWxhci5oPgorCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMTcsMTAgKzIyLDYgQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NjYWxhci5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5Lmg+CmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jIGIvYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYwppbmRleCBhNWQxMTllLi4wOWNlZTFhIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jCisrKyBiL2FnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmMKQEAgLTEsNSArMSwxMCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmg+CisKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC03LDEzICsxMiw4IEBACiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zY2FsYXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oPgogCiAvKiogQGRlZmdyb3VwIHNjYWxhcl9ncm91cF9ncm91cCBzY2FsYXJfZ3JvdXAKICAqICBQcm9jZXNzIGdyb3VwcyBvZiBzY2FsYXJzLgpAQCAtNDgsNyArNDgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkIGZpcnN0LCBvaWQgbGFzdCkKIHsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIG5ldHNubXBfZ2V0X2luc3RhbmNlX2hhbmRsZXIoKSk7Ci0gICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBuZXRzbm1wX2dldF9zY2FsYXJfaGFuZGxlcigpKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIG5ldHNubXBfZ2V0X3NjYWxhcl9ncm91cF9oYW5kbGVyKGZpcnN0LCBsYXN0KSk7CiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfc2VyaWFsaXplKHJlZ2luZm8pOwogfQpAQCAtMTI4LDEyICsxMjcsMTMgQEAKICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCByZXQpOwogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogCSAgICB9Ci0gICAgICAgICAgICByb290X3RtcFtyZWdpbmZvLT5yb290b2lkX2xlbisrXSA9IHN1YmlkOworICAgICAgICAgICAgcm9vdF90bXBbcmVnaW5mby0+cm9vdG9pZF9sZW5dID0gc3ViaWQ7CisgICAgICAgICAgICByZWdpbmZvLT5yb290b2lkX2xlbiArPSAyOwogICAgICAgICAgICAgcmVnaW5mby0+cm9vdG9pZCA9IHJvb3RfdG1wOwogICAgICAgICAgICAgcmV0ID0gbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcihoYW5kbGVyLCByZWdpbmZvLCByZXFpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7CiAgICAgICAgICAgICByZWdpbmZvLT5yb290b2lkID0gcm9vdF9zYXZlOwotICAgICAgICAgICAgcmVnaW5mby0+cm9vdG9pZF9sZW4tLTsKKyAgICAgICAgICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuIC09IDI7CiAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTYyLDcgKzE2Miw4IEBACiAJZWxzZSBpZiAoc3ViaWQgPiBzZ3JvdXAtPnVib3VuZCkKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogICAgICAgICAKLSAgICAgICAgcm9vdF90bXBbcmVnaW5mby0+cm9vdG9pZF9sZW4rK10gPSBzdWJpZDsKKyAgICAgICAgcm9vdF90bXBbcmVnaW5mby0+cm9vdG9pZF9sZW5dID0gc3ViaWQ7CisgICAgICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuICs9IDI7CiAgICAgICAgIHJlZ2luZm8tPnJvb3RvaWQgPSByb290X3RtcDsKICAgICAgICAgcmV0ID0gbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcihoYW5kbGVyLCByZWdpbmZvLCByZXFpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7CkBAIC0xNzUsMTIgKzE3NiwxMiBAQAogICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgPT0gU05NUF9OT1NVQ0hPQkpFQ1QgfHwKICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UpKSB7CiAgICAgICAgICAgICBzbm1wX3NldF92YXJfb2JqaWQocmVxdWVzdHMtPnJlcXVlc3R2YiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLT5yb290b2lkLCByZWdpbmZvLT5yb290b2lkX2xlbik7Ci0gICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lW3JlZ2luZm8tPnJvb3RvaWRfbGVuLTFdID0gKytzdWJpZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLT5yb290b2lkLCByZWdpbmZvLT5yb290b2lkX2xlbiAtIDEpOworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZVtyZWdpbmZvLT5yb290b2lkX2xlbiAtIDJdID0gKytzdWJpZDsKICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgPSBBU05fUFJJVl9SRVRSWTsKICAgICAgICAgfQogICAgICAgICByZWdpbmZvLT5yb290b2lkID0gcm9vdF9zYXZlOwotICAgICAgICByZWdpbmZvLT5yb290b2lkX2xlbi0tOworICAgICAgICByZWdpbmZvLT5yb290b2lkX2xlbiAtPSAyOwogICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9zZXJpYWxpemUuYyBiL2FnZW50L2hlbHBlcnMvc2VyaWFsaXplLmMKaW5kZXggODkyZjliMy4uZWVjNjZiNCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9zZXJpYWxpemUuYworKysgYi9hZ2VudC9oZWxwZXJzL3NlcmlhbGl6ZS5jCkBAIC0xLDExICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAotI2lmIEhBVkVfU1RSSU5HX0gKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYyBiL2FnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYwppbmRleCBlZmIxZWI0Li41MjUyY2IyIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMKKysrIGIvYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jCkBAIC0xLDE1ICsxLDEwIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKLSNpZiBIQVZFX1NUUklOR19ICi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaD4KKwogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaD4KIAogZXh0ZXJuIE5ldHNubXBDYWNoZUxvYWQgX25ldHNubXBfc3Rhc2hfY2FjaGVfbG9hZDsKQEAgLTMyLDcgKzI3LDggQEAKICAgICBuZXRzbm1wX3N0YXNoX2NhY2hlX2luZm8gKmNpbmZvOwogCiAgICAgY2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfc3Rhc2hfY2FjaGVfaW5mbyk7Ci0gICAgY2luZm8tPmNhY2hlX2xlbmd0aCA9IDMwOworICAgIGlmIChjaW5mbyAhPSBOVUxMKQorICAgICAgICBjaW5mby0+Y2FjaGVfbGVuZ3RoID0gMzA7CiAgICAgcmV0dXJuIGNpbmZvOwogfQogCkBAIC0xNTUsNyArMTUxLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RhdGEtPnZhbC5zdHJpbmcsIGNkYXRhLT52YWxfbGVuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKQEAgLTE3OCw3ICsxNzMsNiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgpAQCAtMTg2LDcgKzE4MCw4IEBACiAgICAgICAgIHJldHVybiBuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyKGhhbmRsZXIsIHJlZ2luZm8sIHJlcWluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzKTsKICAgICB9Ci0gICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsgICAgIC8qIHNob3VsZCBuZXZlciBnZXQgaGVyZSAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKIC8qKiB1cGRhdGVzIGEgZ2l2ZW4gY2FjaGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQgbmVlZHMgdG8gb3Igbm90LgpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMgYi9hZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYwppbmRleCBhYWJhYWE4Li5mNjc5ZTA0IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYworKysgYi9hZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYwpAQCAtMSwxNyArMSwxMiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCi0jaWYgSEFWRV9TVFJJTkdfSAotI2luY2x1ZGUgPHN0cmluZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfdG9fbmV4dC5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaD4KKwogLyoqIEBkZWZncm91cCBzdGFzaF90b19uZXh0IHN0YXNoX3RvX25leHQKICAqICBDb252ZXJ0IEdFVF9TVEFTSCByZXF1ZXN0cyBpbnRvIEdFVE5FWFQgcmVxdWVzdHMgZm9yIHRoZSBoYW5kbGVyLgogICogIFRoZSBwdXJwb3NlIG9mIHRoaXMgaGFuZGxlciBpcyB0byBjb252ZXJ0IGEgR0VUX1NUQVNIIGF1dG8tY2FjaGUgcmVxdWVzdApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZS5jIGIvYWdlbnQvaGVscGVycy90YWJsZS5jCmluZGV4IDMyYTA4MDMuLjM3NGVmNDggMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGUuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlLmMKQEAgLTEyLDIwICsxMiwyNiBAQAogICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGUuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLQotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogCiBzdGF0aWMgdm9pZCAgICAgdGFibGVfaGVscGVyX2NsZWFudXAobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCkBAIC0xMDgsMTAgKzExNCwyMiBAQAogbmV0c25tcF9yZWdpc3Rlcl90YWJsZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJyZXEpCiB7Ci0gICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBuZXRzbm1wX2dldF90YWJsZV9oYW5kbGVyKHRhYnJlcSkpOworICAgIGludCByYyA9IG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcih0YWJyZXEpKTsKKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IHJjKQorICAgICAgICByZXR1cm4gcmM7CisKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKHJlZ2luZm8pOwogfQogCitpbnQKK25ldHNubXBfdW5yZWdpc3Rlcl90YWJsZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvKQoreworICAgIC8qIExvY2F0ZSAidGhpcyIgcmVnaW5mbyAqLworICAgIC8qIFNOTVBfRlJFRShyZWdpbmZvLT5teXZvaWQpOyAqLworICAgIC8qIHJlZ2luZm8tPm15dm9pZCA9IE5VTEw7ICovCisgICAgcmV0dXJuIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKHJlZ2luZm8pOworfQorCiAvKiogRXh0cmFjdHMgdGhlIHByb2Nlc3NlZCB0YWJsZSBpbmZvcm1hdGlvbiBmcm9tIGEgZ2l2ZW4gcmVxdWVzdC4KICAqICBDYWxsIHRoaXMgZnJvbSBzdWJoYW5kbGVycyBvbiBhIHJlcXVlc3QgdG8gZXh0cmFjdCB0aGUgcHJvY2Vzc2VkCiAgKiAgbmV0c25tcF9yZXF1ZXN0X2luZm8gaW5mb3JtYXRpb24uICBUaGUgcmVzdWx0aW5nIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZQpAQCAtMjYwLDcgKzI3OCw3IEBACiAgICAgICAgICAgICAgICAgREVCVUdNU0dPSUQoKCJoZWxwZXI6dGFibGU6c2V0IiwgdmFyLT5uYW1lLCB2YXItPm5hbWVfbGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgb3V0X2xlbiA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKHNwcmludF9yZWFsbG9jX2J5X3R5cGUoJmJ1ZiwgJmJ1Zl9sZW4sICZvdXRfbGVuLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciwgMCwgMCwgMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIsIE5VTEwsIE5VTEwsIE5VTEwpKSB7CiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHKCgiaGVscGVyOnRhYmxlOnNldCIsIiB0eXBlPSVkKCUwMngpLCB2YWx1ZT0lc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+dHlwZSwgdmFyLT50eXBlLCBidWYpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzUyLDYgKzM3MCwxMSBAQAogICAgICAgICB0YmxfcmVxX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKICAgICAgICAgaWYgKE5VTEwgPT0gdGJsX3JlcV9pbmZvKSB7CiAgICAgICAgICAgICB0YmxfcmVxX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvKTsKKyAgICAgICAgICAgIGlmICh0YmxfcmVxX2luZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRibF9yZXFfaW5mby0+cmVnX2luZm8gPSB0YmxfaW5mbzsKICAgICAgICAgICAgIHRibF9yZXFfaW5mby0+aW5kZXhlcyA9IHNubXBfY2xvbmVfdmFyYmluZCh0YmxfaW5mby0+aW5kZXhlcyk7CiAgICAgICAgICAgICB0YmxfcmVxX2luZm8tPm51bWJlcl9pbmRleGVzID0gMDsgICAgICAgLyogbm9uZSB5ZXQgKi8KQEAgLTM3MSw3ICszOTQsNyBAQAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIG9pZCBpcyBsb25nIGVub3VnaCB0byBjb250YWluIENPTFVNTiBpbmZvCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJoZWxwZXI6dGFibGU6Y29sIiwgIiAgaGF2ZSBhdCBsZWFzdCBhIGNvbHVtbiAoJWQpXG4iLAorICAgICAgICAgICAgREVCVUdNU0dUTCgoImhlbHBlcjp0YWJsZTpjb2wiLCAiICBoYXZlIGF0IGxlYXN0IGEgY29sdW1uICglbGQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5uYW1lW29pZF9jb2x1bW5fcG9zXSkpOwogICAgICAgICAgICAgaWYgKHZhci0+bmFtZVtvaWRfY29sdW1uX3Bvc10gPCB0YmxfaW5mby0+bWluX2NvbHVtbikgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJoZWxwZXI6dGFibGU6Y29sIiwKQEAgLTQyNyw3ICs0NTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAodGJsX3JlcV9pbmZvLT5jb2xudW0gIT0gdmFyLT5uYW1lW29pZF9jb2x1bW5fcG9zXSkgewogICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiaGVscGVyOnRhYmxlOmNvbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgd2hpY2ggZG9lc24ndCBtYXRjaCByZXEgJWQgLSB0cnVuY2F0aW5nIGluZGV4IGluZm9cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgd2hpY2ggZG9lc24ndCBtYXRjaCByZXEgJWxkIC0gdHJ1bmNhdGluZyBpbmRleCBpbmZvXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPm5hbWVbb2lkX2NvbHVtbl9wb3NdKSk7CiAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAqIGRpZmZlcmVudCBjb2x1bW4hIHRydW5jYXRlIHVzZWxlc3MgaW5kZXggaW5mbyAKQEAgLTQ0Nyw4ICs0NzAsOCBAQAogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIHRibF9yZXFfaW5mby0+aW5kZXhfb2lkX2xlbiA9CiAgICAgICAgICAgICAgICAgICAgIHZhci0+bmFtZV9sZW5ndGggLSBvaWRfaW5kZXhfcG9zOwotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJoZWxwZXI6dGFibGUiLCAiICAgIGhhdmUgJWQgYnl0ZXMgb2YgaW5kZXhcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJsX3JlcV9pbmZvLT5pbmRleF9vaWRfbGVuKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImhlbHBlcjp0YWJsZSIsICIgICAgaGF2ZSAlbHUgYnl0ZXMgb2YgaW5kZXhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpdGJsX3JlcV9pbmZvLT5pbmRleF9vaWRfbGVuKSk7CiAgICAgICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQodGJsX3JlcV9pbmZvLT5pbmRleF9vaWRfbGVuIDwgTUFYX09JRF9MRU4pOwogICAgICAgICAgICAgICAgIG1lbWNweSh0YmxfcmVxX2luZm8tPmluZGV4X29pZCwgJnZhci0+bmFtZVtvaWRfaW5kZXhfcG9zXSwKICAgICAgICAgICAgICAgICAgICAgICAgdGJsX3JlcV9pbmZvLT5pbmRleF9vaWRfbGVuICogc2l6ZW9mKG9pZCkpOwpAQCAtNTY0LDcgKzU4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrLCB2YiA9IHZiLT5uZXh0X3ZhcmlhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dF9sZW4gPSAwOwogICAgICAgICAgICAgICAgICAgICBpZiAoc3ByaW50X3JlYWxsb2NfYnlfdHlwZSgmYnVmLCAmYnVmX2xlbiwgJm91dF9sZW4sIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZiLCAwLCAwLCAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YiwgTlVMTCwgTlVMTCwgTlVMTCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHKCgiaGVscGVyOnRhYmxlOnJlc3VsdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBpbmRleDogdHlwZT0lZCglMDJ4KSwgdmFsdWU9JXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZiLT50eXBlLCB2Yi0+dHlwZSwgYnVmKSk7CkBAIC03MzMsMTAgKzc1NiwzNSBAQAogbmV0c25tcF9zcGFyc2VfdGFibGVfcmVnaXN0ZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFicmVxKQogewotICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywKLSAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcihTUEFSU0VfVEFCTEVfSEFORExFUl9OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYXJzZV90YWJsZV9oZWxwZXJfaGFuZGxlcikpOwotICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcih0YWJyZXEpKTsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyMSwgKmhhbmRsZXIyOworICAgIGludCByYzsKKworICAgIGhhbmRsZXIxID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcihTUEFSU0VfVEFCTEVfSEFORExFUl9OQU1FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYXJzZV90YWJsZV9oZWxwZXJfaGFuZGxlcik7CisgICAgaWYgKE5VTEwgPT0gaGFuZGxlcjEpCisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisKKyAgICBoYW5kbGVyMiA9IG5ldHNubXBfZ2V0X3RhYmxlX2hhbmRsZXIodGFicmVxKTsKKyAgICBpZiAoTlVMTCA9PSBoYW5kbGVyMiApIHsKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcjEpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKworICAgIHJjID0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyMSk7CisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSByYykgeworICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyMSk7CisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIyKTsKKyAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgIHJjID0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyMik7CisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKiogaGFuZGxlcjEgaXMgaW4gcmVnaW5mby4uLiByZW1vdmUgYW5kIGZyZWU/PyAqLworICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyMik7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICAvKiogYm90aCBoYW5kbGVycyBub3cgaW4gcmVnaW5mbywgc28gbm90aGluZyB0byBkbyBvbiBlcnJvciAqLwogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIocmVnaW5mbyk7CiB9CiAKQEAgLTkyOSw2ICs5NzcsMjYgQEAKICAgICByZXR1cm4gMDsKIH0KIAordm9pZAorbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRyaSkKK3sKKyAgICBpZiAoTlVMTCA9PSB0cmkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChOVUxMICE9IHRyaS0+aW5kZXhlcykKKyAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQodHJpLT5pbmRleGVzKTsKKworI2lmIDAKKyAgICAvKgorICAgICAqIHNpZ2guLi4gZXhhbXBsZSB1c2Ugb2YgdmFsaWRfY29sdW1ucyBwb2ludHMgdG8gc3RhdGljIG1lbW9yeSwKKyAgICAgKiBzbyBmcmVlaW5nIGl0IHdvdWxkIGJlIGJhZC4uLiB3ZSdsbCBqdXN0IGhhdmUgdG8gbGl2ZSB3aXRoIGFueQorICAgICAqIGxlYWtzLCBmb3Igbm93Li4uCisgICAgICovCisjZW5kaWYKKworICAgIGZyZWUodHJpKTsKK30KKwogLyoqIEB9ICovCiAKIC8qCkBAIC0xMDU0LDMwICsxMTIyLDE2IEBACiAgKgogICovCiB2b2lkCi0jaWYgSEFWRV9TVERBUkdfSAogbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXMobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pCi0jZWxzZQotbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModmFfYWxpc3QpCi0gICAgIHZhX2RjbAotI2VuZGlmCiB7CiAgICAgdmFfbGlzdCAgICAgICAgIGRlYnVnYXJnczsKICAgICBpbnQgICAgICAgICAgICAgdHlwZTsKIAotI2lmIEhBVkVfU1REQVJHX0gKICAgICB2YV9zdGFydChkZWJ1Z2FyZ3MsIHRpbmZvKTsKLSNlbHNlCi0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGluZm87Ci0KLSAgICB2YV9zdGFydChkZWJ1Z2FyZ3MpOwotICAgIHRpbmZvID0gdmFfYXJnKGRlYnVnYXJncywgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqKTsKLSNlbmRpZgotCiAgICAgd2hpbGUgKCh0eXBlID0gdmFfYXJnKGRlYnVnYXJncywgaW50KSkgIT0gMCkgewogICAgICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXgodGluZm8sIHR5cGUpOwogICAgIH0KLQogICAgIHZhX2VuZChkZWJ1Z2FyZ3MpOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMKaW5kZXggMTliOWM1Yy4uYzdmNTJmOSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jCisrKyBiL2FnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYwpAQCAtNSwxNyArNSwxOCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oPgorCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaD4KIApAQCAtNTY0LDYgKzU2NSw4IEBACiAgICAgICAgICAgICBERUJVR01TRygoInRhYmxlX2FycmF5Omdyb3VwIiwgIlxuIikpOwogICAgICAgICAgICAgZyA9IChuZXRzbm1wX3JlcXVlc3RfZ3JvdXAgKikgdG1wOwogICAgICAgICAgICAgaSA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9yZXF1ZXN0X2dyb3VwX2l0ZW0pOworICAgICAgICAgICAgaWYgKGkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpLT5yaSA9IGN1cnJlbnQ7CiAgICAgICAgICAgICBpLT50cmkgPSB0YmxyZXFfaW5mbzsKICAgICAgICAgICAgIGktPm5leHQgPSBnLT5saXN0OwpAQCAtNTc5LDYgKzU4MiwxMSBAQAogICAgICAgICBERUJVR01TRygoInRhYmxlX2FycmF5Omdyb3VwIiwgIlxuIikpOwogICAgICAgICBnID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3JlcXVlc3RfZ3JvdXApOwogICAgICAgICBpID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3JlcXVlc3RfZ3JvdXBfaXRlbSk7CisgICAgICAgIGlmIChpID09IE5VTEwgfHwgZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBTTk1QX0ZSRUUoaSk7CisgICAgICAgICAgICBTTk1QX0ZSRUUoZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgZy0+bGlzdCA9IGk7CiAgICAgICAgIGctPnRhYmxlID0gdGFkLT50YWJsZTsKICAgICAgICAgaS0+cmkgPSBjdXJyZW50OwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYyBiL2FnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmMKaW5kZXggZDA4YmZmMi4uODVjZGI0MSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jCkBAIC01LDE3ICs1LDE4IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oPgorCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAKQEAgLTMxNSw2ICszMTYsMjQgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWdpbmZvLCB0YWJyZWcpOwogfQogCitpbnQKK25ldHNubXBfY29udGFpbmVyX3RhYmxlX3VucmVnaXN0ZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbykKK3sKKyAgICBjb250YWluZXJfdGFibGVfZGF0YSAqdGFkOworCisgICAgaWYgKCFyZWdpbmZvKQorICAgICAgICByZXR1cm4gTUlCX1VOUkVHSVNUUkFUSU9OX0ZBSUxFRDsKKyAgICB0YWQgPSAoY29udGFpbmVyX3RhYmxlX2RhdGEgKikKKyAgICAgICAgbmV0c25tcF9maW5kX2hhbmRsZXJfZGF0YV9ieV9uYW1lKHJlZ2luZm8sICJ0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAodGFkKSB7CisgICAgICAgIENPTlRBSU5FUl9GUkVFKCB0YWQtPnRhYmxlICk7CisgICAgICAgIHRhZC0+dGFibGUgPSBOVUxMOworICAgICAgICBmcmVlKHRhZCk7CisgICAgICAgIHJlZ2luZm8tPmhhbmRsZXItPm15dm9pZCA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiBuZXRzbm1wX3VucmVnaXN0ZXJfdGFibGUoIHJlZ2luZm8gKTsKK30KKwogLyoqIHJldHJpZXZlIHRoZSBjb250YWluZXIgdXNlZCBieSB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAqLwogbmV0c25tcF9jb250YWluZXIqCiBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9jb250YWluZXJfZXh0cmFjdChuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCkKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKaW5kZXggMzE3MzMxYS4uYzNhN2Y5ZSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKKysrIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKQEAgLTEsMTYgKzEsMTcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZS5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaD4KIAogLyoqIEBkZWZncm91cCB0YWJsZV9kYXRhIHRhYmxlX2RhdGEKQEAgLTgwLDE2ICs4MSwxNiBAQAogICAgIGlmIChyb3ctPmluZGV4ZXMpIHsKICAgICAgICAgbmV3cm93LT5pbmRleGVzID0gc25tcF9jbG9uZV92YXJiaW5kKG5ld3Jvdy0+aW5kZXhlcyk7CiAgICAgICAgIGlmICghbmV3cm93LT5pbmRleGVzKSB7Ci0gICAgICAgICAgICBmcmVlIChuZXdyb3cpOworICAgICAgICAgICAgZnJlZShuZXdyb3cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAocm93LT5pbmRleF9vaWQpIHsKLSAgICAgICAgbmV3cm93LT5pbmRleF9vaWQgPSBuZXRzbm1wX21lbWR1cChyb3ctPmluZGV4X29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3ctPmluZGV4X29pZF9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgICAgIG5ld3Jvdy0+aW5kZXhfb2lkID0KKyAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHJvdy0+aW5kZXhfb2lkLCByb3ctPmluZGV4X29pZF9sZW4pOwogICAgICAgICBpZiAoIW5ld3Jvdy0+aW5kZXhfb2lkKSB7Ci0gICAgICAgICAgICBmcmVlIChuZXdyb3cpOworICAgICAgICAgICAgZnJlZShuZXdyb3cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjcsNyArMjI4LDcgQEAKIH0KIAogLyoqIHN3YXBzIG91dCBvcmlncm93IHdpdGggbmV3cm93LiAgVGhpcyBkb2VzICpub3QqIGRlbGV0ZS9mcmVlIGFueXRoaW5nISAqLwotTkVUU05NUF9JTkxJTkUgdm9pZAordm9pZAogbmV0c25tcF90YWJsZV9kYXRhX3JlcGxhY2Vfcm93KG5ldHNubXBfdGFibGVfZGF0YSAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yb3cgKm9yaWdyb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yb3cgKm5ld3JvdykKQEAgLTM0Miw4ICszNDMsOCBAQAogICAgIGlmIChvbGRfcm93LT5pbmRleGVzKQogICAgICAgICBuZXdfcm93LT5pbmRleGVzID0gc25tcF9jbG9uZV92YXJiaW5kKG9sZF9yb3ctPmluZGV4ZXMpOwogICAgIGlmIChvbGRfcm93LT5pbmRleF9vaWQpCi0gICAgICAgIG5ld19yb3ctPmluZGV4X29pZCA9IG5ldHNubXBfbWVtZHVwKG9sZF9yb3ctPmluZGV4X29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX3Jvdy0+aW5kZXhfb2lkX2xlbiAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgbmV3X3Jvdy0+aW5kZXhfb2lkID0KKyAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKG9sZF9yb3ctPmluZGV4X29pZCwgb2xkX3Jvdy0+aW5kZXhfb2lkX2xlbik7CiAgICAgLyogWFhYIC0gRG9lc24ndCBjb3B5IHRhYmxlLXNwZWNpZmljIHJvdyBzdHJ1Y3R1cmUgKi8KICAgICByZXR1cm4gMDsKIH0KQEAgLTQxNCw2ICs0MTUsMTMgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9kYXRhKHJlZ2luZm8sIHRhYmxlLCB0YWJsZV9pbmZvKTsKIH0KIAoraW50CituZXRzbm1wX3VucmVnaXN0ZXJfdGFibGVfZGF0YShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvKQoreworICAgIC8qIGZyZWUgdGFibGU7ICovCisgICAgcmV0dXJuIG5ldHNubXBfdW5yZWdpc3Rlcl90YWJsZShyZWdpbmZvKTsKK30KKwogLyoKICAqIFRoZSBoZWxwZXIgaGFuZGxlciB0aGF0IHRha2VzIGNhcmUgb2YgcGFzc2luZyBhIHNwZWNpZmljIHJvdyBvZgogICogZGF0YSBkb3duIHRvIHRoZSBsb3dlciBoYW5kbGVyKHMpLiAgSXQgc2V0cyByZXF1ZXN0LT5wcm9jZXNzZWQgaWYKQEAgLTY3OCw3ICs2ODYsNyBAQAogfQogCiAvKiogaW5zZXJ0cyBhIG5ld2x5IGNyZWF0ZWQgdGFibGVfZGF0YSByb3cgaW50byBhIHJlcXVlc3QgKi8KLU5FVFNOTVBfSU5MSU5FIHZvaWQKK3ZvaWQKIG5ldHNubXBfaW5zZXJ0X3RhYmxlX3JvdyhuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JvdyAqcm93KQogewpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYwppbmRleCBmOTJlM2UxLi4yM2UwZGViIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYwpAQCAtMSwxNCArMSwxNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oPgorCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQogc3RhdGljIG5ldHNubXBfZGF0YV9saXN0ICphdXRvX3RhYmxlczsKIAogdHlwZWRlZiBzdHJ1Y3QgZGF0YV9zZXRfdGFibGVzX3MgewpAQCAtNzIsNzggKzc0LDYgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKLS8qKiBDcmVhdGUgYSBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0IHN0cnVjdHVyZSBnaXZlbiBhIHRhYmxlX2RhdGEgZGVmaW5pdGlvbiAqLwotbmV0c25tcF90YWJsZV9kYXRhX3NldCAqCi1uZXRzbm1wX2NyZWF0ZV90YWJsZV9kYXRhX3NldChjb25zdCBjaGFyICp0YWJsZV9uYW1lKQotewotICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldCA9Ci0gICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9kYXRhX3NldCk7Ci0gICAgaWYgKCF0YWJsZV9zZXQpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHRhYmxlX3NldC0+dGFibGUgPSBuZXRzbm1wX2NyZWF0ZV90YWJsZV9kYXRhKHRhYmxlX25hbWUpOwotICAgIHJldHVybiB0YWJsZV9zZXQ7Ci19Ci0KLXZvaWQgbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQobmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGVfc2V0KQotewotICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSAqcHRyLCAqbmV4dDsKLSAgICBuZXRzbm1wX3RhYmxlX3JvdyAqcHJvdywgKnBuZXh0cm93OwotCi0gICAgZm9yIChwdHIgPSB0YWJsZV9zZXQtPmRlZmF1bHRfcm93OyBwdHI7IHB0ciA9IG5leHQpIHsKLSAgICAgICAgbmV4dCA9IHB0ci0+bmV4dDsKLSAgICAgICAgZnJlZShwdHIpOwotICAgIH0KLSAgICB0YWJsZV9zZXQtPmRlZmF1bHRfcm93ID0gTlVMTDsKLSAgICBmb3IgKHByb3cgPSB0YWJsZV9zZXQtPnRhYmxlLT5maXJzdF9yb3c7IHByb3c7IHByb3cgPSBwbmV4dHJvdykgewotICAgICAgICBwbmV4dHJvdyA9IHByb3ctPm5leHQ7Ci0gICAgICAgIG5ldHNubXBfdGFibGVfZGF0YXNldF9yZW1vdmVfYW5kX2RlbGV0ZV9yb3codGFibGVfc2V0LCBwcm93KTsKLSAgICB9Ci0gICAgdGFibGVfc2V0LT50YWJsZS0+Zmlyc3Rfcm93ID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKHRhYmxlX3NldC0+dGFibGUpOwotICAgIGZyZWUodGFibGVfc2V0KTsKLX0KLQotLyoqIGNsb25lcyBhIGRhdGFzZXQgcm93LCBpbmNsdWRpbmcgYWxsIGRhdGEuICovCi1uZXRzbm1wX3RhYmxlX3JvdyAqCi1uZXRzbm1wX3RhYmxlX2RhdGFfc2V0X2Nsb25lX3JvdyhuZXRzbm1wX3RhYmxlX3JvdyAqcm93KQotewotICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSAqZGF0YSwgKipuZXdyb3dkYXRhOwotICAgIG5ldHNubXBfdGFibGVfcm93ICpuZXdyb3c7Ci0KLSAgICBpZiAoIXJvdykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBuZXdyb3cgPSBuZXRzbm1wX3RhYmxlX2RhdGFfY2xvbmVfcm93KHJvdyk7Ci0gICAgaWYgKCFuZXdyb3cpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZGF0YSA9IChuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2UgKikgcm93LT5kYXRhOwotCi0gICAgaWYgKGRhdGEpIHsKLSAgICAgICAgZm9yIChuZXdyb3dkYXRhID0KLSAgICAgICAgICAgICAobmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlICoqKSAmKG5ld3Jvdy0+ZGF0YSk7IGRhdGE7Ci0gICAgICAgICAgICAgbmV3cm93ZGF0YSA9ICYoKCpuZXdyb3dkYXRhKS0+bmV4dCksIGRhdGEgPSBkYXRhLT5uZXh0KSB7Ci0KLSAgICAgICAgICAgICpuZXdyb3dkYXRhID0gbmV0c25tcF9tZW1kdXAoZGF0YSwKLSAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlKSk7Ci0gICAgICAgICAgICBpZiAoISpuZXdyb3dkYXRhKSB7Ci0gICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9kYXRhc2V0X2RlbGV0ZV9yb3cobmV3cm93KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGRhdGEtPmRhdGEudm9pZHApIHsKLSAgICAgICAgICAgICAgICAoKm5ld3Jvd2RhdGEpLT5kYXRhLnZvaWRwID0gbmV0c25tcF9tZW1kdXAoZGF0YS0+ZGF0YS52b2lkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZGF0YV9sZW4pOwotICAgICAgICAgICAgICAgIGlmICghKCpuZXdyb3dkYXRhKS0+ZGF0YS52b2lkcCkgewotICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfZGVsZXRlX3JvdyhuZXdyb3cpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG5ld3JvdzsKLX0KLQogLyoqIGRlbGV0ZXMgYSBzaW5nbGUgZGF0YXNldCB0YWJsZSBkYXRhLgogICogIHJldHVybnMgdGhlIChwb3NzaWJseSBzdGlsbCBnb29kKSBuZXh0IHBvaW50ZXIgb2YgdGhlIGRlbGV0ZWQgZGF0YSBvYmplY3QuCiAgKi8KQEAgLTIzMCw2ICsxNjAsNzggQEAKICAgICBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfZGVsZXRlX2FsbF9kYXRhKGRhdGEpOwogfQogCisvKiogQ3JlYXRlIGEgbmV0c25tcF90YWJsZV9kYXRhX3NldCBzdHJ1Y3R1cmUgZ2l2ZW4gYSB0YWJsZV9kYXRhIGRlZmluaXRpb24gKi8KK25ldHNubXBfdGFibGVfZGF0YV9zZXQgKgorbmV0c25tcF9jcmVhdGVfdGFibGVfZGF0YV9zZXQoY29uc3QgY2hhciAqdGFibGVfbmFtZSkKK3sKKyAgICBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQgPQorICAgICAgICBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfZGF0YV9zZXQpOworICAgIGlmICghdGFibGVfc2V0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0YWJsZV9zZXQtPnRhYmxlID0gbmV0c25tcF9jcmVhdGVfdGFibGVfZGF0YSh0YWJsZV9uYW1lKTsKKyAgICByZXR1cm4gdGFibGVfc2V0OworfQorCit2b2lkIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldCkKK3sKKyAgICBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2UgKnB0ciwgKm5leHQ7CisgICAgbmV0c25tcF90YWJsZV9yb3cgKnByb3csICpwbmV4dHJvdzsKKworICAgIGZvciAocHRyID0gdGFibGVfc2V0LT5kZWZhdWx0X3JvdzsgcHRyOyBwdHIgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBwdHItPm5leHQ7CisgICAgICAgIGZyZWUocHRyKTsKKyAgICB9CisgICAgdGFibGVfc2V0LT5kZWZhdWx0X3JvdyA9IE5VTEw7CisgICAgZm9yIChwcm93ID0gdGFibGVfc2V0LT50YWJsZS0+Zmlyc3Rfcm93OyBwcm93OyBwcm93ID0gcG5leHRyb3cpIHsKKyAgICAgICAgcG5leHRyb3cgPSBwcm93LT5uZXh0OworICAgICAgICBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfcmVtb3ZlX2FuZF9kZWxldGVfcm93KHRhYmxlX3NldCwgcHJvdyk7CisgICAgfQorICAgIHRhYmxlX3NldC0+dGFibGUtPmZpcnN0X3JvdyA9IE5VTEw7CisgICAgbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSh0YWJsZV9zZXQtPnRhYmxlKTsKKyAgICBmcmVlKHRhYmxlX3NldCk7Cit9CisKKy8qKiBjbG9uZXMgYSBkYXRhc2V0IHJvdywgaW5jbHVkaW5nIGFsbCBkYXRhLiAqLworbmV0c25tcF90YWJsZV9yb3cgKgorbmV0c25tcF90YWJsZV9kYXRhX3NldF9jbG9uZV9yb3cobmV0c25tcF90YWJsZV9yb3cgKnJvdykKK3sKKyAgICBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2UgKmRhdGEsICoqbmV3cm93ZGF0YTsKKyAgICBuZXRzbm1wX3RhYmxlX3JvdyAqbmV3cm93OworCisgICAgaWYgKCFyb3cpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmV3cm93ID0gbmV0c25tcF90YWJsZV9kYXRhX2Nsb25lX3Jvdyhyb3cpOworICAgIGlmICghbmV3cm93KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRhdGEgPSAobmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlICopIHJvdy0+ZGF0YTsKKworICAgIGlmIChkYXRhKSB7CisgICAgICAgIGZvciAobmV3cm93ZGF0YSA9CisgICAgICAgICAgICAgKG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSAqKikgJihuZXdyb3ctPmRhdGEpOyBkYXRhOworICAgICAgICAgICAgIG5ld3Jvd2RhdGEgPSAmKCgqbmV3cm93ZGF0YSktPm5leHQpLCBkYXRhID0gZGF0YS0+bmV4dCkgeworCisgICAgICAgICAgICAqbmV3cm93ZGF0YSA9IG5ldHNubXBfbWVtZHVwKGRhdGEsCisgICAgICAgICAgICAgICAgc2l6ZW9mKG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSkpOworICAgICAgICAgICAgaWYgKCEqbmV3cm93ZGF0YSkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfZGF0YXNldF9kZWxldGVfcm93KG5ld3Jvdyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkYXRhLT5kYXRhLnZvaWRwKSB7CisgICAgICAgICAgICAgICAgKCpuZXdyb3dkYXRhKS0+ZGF0YS52b2lkcCA9CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWVtZHVwKGRhdGEtPmRhdGEudm9pZHAsIGRhdGEtPmRhdGFfbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoISgqbmV3cm93ZGF0YSktPmRhdGEudm9pZHApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9kYXRhc2V0X2RlbGV0ZV9yb3cobmV3cm93KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBuZXdyb3c7Cit9CisKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqCiAgKiBEYXRhIFNldCBBUEk6IERlZmF1bHQgcm93IG9wZXJhdGlvbnMKQEAgLTI4OCw2ICsyOTAsOCBAQAogICAgIH0KIAogICAgIG5ld19jb2wgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSk7CisgICAgaWYgKG5ld19jb2wgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogICAgIG5ld19jb2wtPnR5cGUgPSB0eXBlOwogICAgIG5ld19jb2wtPndyaXRhYmxlID0gd3JpdGFibGU7CiAgICAgbmV3X2NvbC0+Y29sdW1uID0gY29sdW1uOwpAQCAtMzI0LDEzICszMjgsNyBAQAogICogIHJlcGVhdGVkbHkgZm9yIHlvdS4KICAqLwogdm9pZAotI2lmIEhBVkVfU1REQVJHX0gKIG5ldHNubXBfdGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3JvdyhuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0c2V0LCAuLi4pCi0jZWxzZQotbmV0c25tcF90YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93KHZhX2RjbAotICAgICkKLSAgICAgdmFfZGNsCi0jZW5kaWYKIHsKICAgICB2YV9saXN0ICAgICAgICAgZGVidWdhcmdzOwogICAgIHVuc2lnbmVkIGludCAgICBjb2x1bW47CkBAIC0zMzgsMTQgKzMzNiw3IEBACiAgICAgdm9pZCAgICAgICAgICAgKmRhdGE7CiAgICAgc2l6ZV90ICAgICAgICAgIGRhdGFfbGVuOwogCi0jaWYgSEFWRV9TVERBUkdfSAogICAgIHZhX3N0YXJ0KGRlYnVnYXJncywgdHNldCk7Ci0jZWxzZQotICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRzZXQ7Ci0KLSAgICB2YV9zdGFydChkZWJ1Z2FyZ3MpOwotICAgIHRzZXQgPSB2YV9hcmcoZGVidWdhcmdzLCBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICopOwotI2VuZGlmCiAKICAgICB3aGlsZSAoKGNvbHVtbiA9IHZhX2FyZyhkZWJ1Z2FyZ3MsIHVuc2lnbmVkIGludCkpICE9IDApIHsKICAgICAgICAgdHlwZSA9IHZhX2FyZyhkZWJ1Z2FyZ3MsIGludCk7CkBAIC00MDMsNiArMzk0LDggQEAKICAgICAgICAgICogYWxsb2NhdGUgdGhlIHRhYmxlIGlmIG9uZSB3YXNuJ3QgYWxsb2NhdGVkIAogICAgICAgICAgKi8KICAgICAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CisgICAgICAgIGlmICh0YWJsZV9pbmZvID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgIH0KIAogICAgIGlmIChOVUxMID09IHRhYmxlX2luZm8tPmluZGV4ZXMgJiYgZGF0YV9zZXQtPnRhYmxlLT5pbmRleGVzX3RlbXBsYXRlKSB7CkBAIC00NDYsMTEgKzQzOSwxNCBAQAogICAgIG5ldHNubXBfdGFibGVfcm93ICpuZXdyb3cgICA9IE5VTEw7CiAKICAgICBuZXdyb3dzdGFzaCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV3cm93X3N0YXNoKTsKLSAgICBuZXdyb3dzdGFzaC0+Y3JlYXRlZCA9IDE7Ci0gICAgbmV3cm93ID0gbmV0c25tcF90YWJsZV9kYXRhX3NldF9jcmVhdGVfcm93X2Zyb21fZGVmYXVsdHMKLSAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhdGFibGUtPmRlZmF1bHRfcm93KTsKLSAgICBuZXdyb3ctPmluZGV4ZXMgPSBzbm1wX2Nsb25lX3ZhcmJpbmQodGFibGVfaW5mby0+aW5kZXhlcyk7Ci0gICAgbmV3cm93c3Rhc2gtPm5ld3JvdyA9IG5ld3JvdzsKKworICAgIGlmIChuZXdyb3dzdGFzaCAhPSBOVUxMKSB7CisgICAgICAgIG5ld3Jvd3N0YXNoLT5jcmVhdGVkID0gMTsKKyAgICAgICAgbmV3cm93ID0gbmV0c25tcF90YWJsZV9kYXRhX3NldF9jcmVhdGVfcm93X2Zyb21fZGVmYXVsdHMKKyAgICAgICAgICAgIChkYXRhdGFibGUtPmRlZmF1bHRfcm93KTsKKyAgICAgICAgbmV3cm93LT5pbmRleGVzID0gc25tcF9jbG9uZV92YXJiaW5kKHRhYmxlX2luZm8tPmluZGV4ZXMpOworICAgICAgICBuZXdyb3dzdGFzaC0+bmV3cm93ID0gbmV3cm93OworICAgIH0KIAogICAgIHJldHVybiBuZXdyb3dzdGFzaDsKIH0KQEAgLTQ2OSw4ICs0NjUsNiBAQAogICAgIG5ldHNubXBfdGFibGVfcm93ICpyb3csICpuZXdyb3cgPSBOVUxMOwogICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0OwotICAgIG9pZCAgICAgICAgICAgICpzdWZmaXg7Ci0gICAgc2l6ZV90ICAgICAgICAgIHN1ZmZpeF9sZW47CiAgICAgbmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqKnN0YXNocCA9IE5VTEw7CiAKICAgICBpZiAoIWhhbmRsZXIpCkBAIC00ODAsNiArNDc0LDExIEBACiAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKmRhdGF0YWJsZSA9CiAgICAgICAgICAgICAobmV0c25tcF90YWJsZV9kYXRhX3NldCAqKSBoYW5kbGVyLT5teXZvaWQ7CisgICAgICAgIGNvbnN0IG9pZCAqIGNvbnN0IHN1ZmZpeCA9CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lICsgcmVnaW5mby0+cm9vdG9pZF9sZW4gKyAyOworICAgICAgICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCAtIChyZWdpbmZvLT5yb290b2lkX2xlbiArIDIpOworCiAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtNDg4LDkgKzQ4Nyw2IEBACiAgICAgICAgICAqLwogICAgICAgICByb3cgPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfcm93KHJlcXVlc3QpOwogICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7Ci0gICAgICAgIHN1ZmZpeCA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWUgKyByZWdpbmZvLT5yb290b2lkX2xlbiArIDI7Ci0gICAgICAgIHN1ZmZpeF9sZW4gPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCAtCi0gICAgICAgICAgICAocmVnaW5mby0+cm9vdG9pZF9sZW4gKyAyKTsKIAogICAgICAgICBpZiAoTU9ERV9JU19TRVQocmVxaW5mby0+bW9kZSkpIHsKIApAQCAtNTU3LDYgKzU1MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgKiBleGlzdGluZyByb3cgdGhhdCBuZWVkcyB0byBiZSBtb2RpZmllZCAKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgIG5ld3Jvd3N0YXNoID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXdyb3dfc3Rhc2gpOworICAgICAgICAgICAgICAgICAgICBpZiAobmV3cm93c3Rhc2ggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9HRU5FUlIpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbmV3cm93ID0gbmV0c25tcF90YWJsZV9kYXRhX3NldF9jbG9uZV9yb3cocm93KTsKICAgICAgICAgICAgICAgICAgICAgbmV3cm93c3Rhc2gtPm5ld3JvdyA9IG5ld3JvdzsKICAgICAgICAgICAgICAgICB9CkBAIC0xMDQ0LDcgKzEwNDUsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgREVCVUdNU0dUTCgoInRhYmxlX3NldF9hZGRfdGFibGUiLAotICAgICAgICAgICAgICAgICAgICAiYWRkaW5nIGNvbHVtbiAlcyglZCkgb2YgdHlwZSAlZCAoYWNjZXNzICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgImFkZGluZyBjb2x1bW4gJXMoJWxkKSBvZiB0eXBlICVkIChhY2Nlc3MgJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICB0cC0+bGFiZWwsIHRwLT5zdWJpZCwgdHlwZSwgdHAtPmFjY2VzcykpOwogCiAgICAgICAgIHN3aXRjaCAodHAtPmFjY2VzcykgewpAQCAtMTA1Nyw3ICsxMDU4LDcgQEAKICAgICAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovCiAgICAgICAgIGNhc2UgTUlCX0FDQ0VTU19SRUFET05MWToKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0YWJsZV9zZXRfYWRkX3RhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhZGRpbmcgY29sdW1uICVkIG9mIHR5cGUgJWRcbiIsIHRwLT5zdWJpZCwgdHlwZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgImFkZGluZyBjb2x1bW4gJWxkIG9mIHR5cGUgJWRcbiIsIHRwLT5zdWJpZCwgdHlwZSkpOwogICAgICAgICAgICAgbmV0c25tcF90YWJsZV9zZXRfYWRkX2RlZmF1bHRfcm93KHRhYmxlX3NldCwgdHAtPnN1YmlkLCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbndyaXRlLCBOVUxMLCAwKTsKICAgICAgICAgICAgIG1pbmNvbCA9IFNOTVBfTUlOKG1pbmNvbCwgdHAtPnN1YmlkKTsKQEAgLTEzMTEsMjUgKzEzMTIsMTMgQEAKIC8qKiBhZGRzIG11bHRpcGxlIGluZGV4ZXMgdG8gYSB0YWJsZV9kYXRhc2V0IGhlbHBlciBvYmplY3QuCiAgKiAgVG8gZW5kIHRoZSBsaXN0LCB1c2UgYSAwIGFmdGVyIHRoZSBsaXN0IG9mIEFTTiBpbmRleCB0eXBlcy4gKi8KIHZvaWQKLSNpZiBIQVZFX1NUREFSR19ICiBuZXRzbm1wX3RhYmxlX3NldF9hZGRfaW5kZXhlcyhuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKQotI2Vsc2UKLW5ldHNubXBfdGFibGVfc2V0X2FkZF9pbmRleGVzKHZhX2FsaXN0KQotICAgICB2YV9kY2wKLSNlbmRpZgogewogICAgIHZhX2xpc3QgICAgICAgICBkZWJ1Z2FyZ3M7CiAgICAgaW50ICAgICAgICAgICAgIHR5cGU7CiAKLSNpZiBIQVZFX1NUREFSR19ICiAgICAgdmFfc3RhcnQoZGVidWdhcmdzLCB0c2V0KTsKLSNlbHNlCi0gICAgbmV0c25tcF90YWJsZV9kYXRhX3NldCAqdHNldDsKLQotICAgIHZhX3N0YXJ0KGRlYnVnYXJncyk7Ci0gICAgdHNldCA9IHZhX2FyZyhkZWJ1Z2FyZ3MsIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKik7Ci0jZW5kaWYKIAogICAgIGlmICh0c2V0KQogICAgICAgICB3aGlsZSAoKHR5cGUgPSB2YV9hcmcoZGVidWdhcmdzLCBpbnQpKSAhPSAwKQpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jCmluZGV4IGU3NzQyZWQuLmJjY2E3OTcgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMKQEAgLTg0LDE4ICs4NCwxOSBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oPgorCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oPgogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0zNDUsNiArMzQ2LDggQEAKICAgICAvKiBubyBleGlzdGluZyBjYWNoZWQgc3RhdGUuICBtYWtlIGEgbmV3IG9uZS4gKi8KICAgICBpZiAoIXRpX2luZm8pIHsKICAgICAgICAgdGlfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYodGlfY2FjaGVfaW5mbyk7CisgICAgICAgIGlmICh0aV9pbmZvID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUSV9SRVFVRVNUX0NBQ0hFLApAQCAtNDA4LDcgKzQxMSw3IEBACiAgICAgCiAgICAgaWluZm8gPSAobmV0c25tcF9pdGVyYXRvcl9pbmZvICopIGhhbmRsZXItPm15dm9pZDsKICAgICBpZiAoIWlpbmZvIHx8ICFyZWdpbmZvIHx8ICFyZXFpbmZvKQotICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAKICAgICB0YmxfaW5mbyA9IGlpbmZvLT50YWJsZV9yZWdpbmZvOwogCkBAIC00MzcsNiArNDQwLDggQEAKIAogICAgICAgICAvKiBYWFg6IG1vdmUgdGhpcyBtYWxsb2MgdG8gc3Rhc2hfY2FjaGUgaGFuZGxlcj8gKi8KICAgICAgICAgcmVxdG1wID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3JlcXVlc3RfaW5mbyk7CisgICAgICAgIGlmIChyZXF0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgIHJlcXRtcC0+c3VidHJlZSA9IHJlcXVlc3RzLT5zdWJ0cmVlOwogICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdHMpOwogICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF0bXAsCkBAIC00NTMsNiArNDU4LDE0IEBACiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKHRhYmxlX2luZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQ2xlYW51cCAKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQoZnJlZV90aGlzX2luZGV4X3NlYXJjaCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0YWJsZV9pbmZvLT5jb2xudW0gPCB0YmxfaW5mby0+bWluX2NvbHVtbiAtIDEpIHsKICAgICAgICAgICAgICAgICAvKiBYWFg6IG9wdGltaXplIGJldHRlciB0aGFuIHRoaXMgKi8KICAgICAgICAgICAgICAgICAvKiBmb3Igbm93LCBqdXN0IGluY3JlYXNlIHRvIGNvbG51bS0xICovCkBAIC00NjcsNiArNDgwLDE0IEBACiAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdCwgVElfUkVRVUVTVF9DQUNIRSk7CiAgICAgICAgICAgICBpZiAoIXRpX2luZm8pIHsKICAgICAgICAgICAgICAgICB0aV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRih0aV9jYWNoZV9pbmZvKTsKKyAgICAgICAgICAgICAgICBpZiAodGlfaW5mbyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIENsZWFudXAgCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBpZiAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKGZyZWVfdGhpc19pbmRleF9zZWFyY2gpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUSV9SRVFVRVNUX0NBQ0hFLApAQCAtNTU3LDYgKzU3OCwxNiBAQAogCiAgICAgICAgICAgICAgICAgICAgIC8qIFhYWDogc3RvcmUgaW4gYW4gYXJyYXkgZm9yIGZhc3RlciByZXRyaXZhbCAqLwogICAgICAgICAgICAgICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0YWJsZV9pbmZvID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBDbGVhbnVwIAorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZChmcmVlX3RoaXNfaW5kZXhfc2VhcmNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZnJlZV9yZXF1ZXN0X2RhdGFfc2V0cyhyZXF0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9GUkVFKHJlcXRtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNvbG9pZFtyZWdpbmZvLT5yb290b2lkX2xlbiArIDFdID0gdGFibGVfaW5mby0+Y29sbnVtOwogCiAgICAgICAgICAgICAgICAgICAgIHRpX2luZm8gPQpAQCAtNTcxLDExICs2MDIsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlKG15bmFtZSwgbXluYW1lX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBrZWVwIHRoaXMgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2l0ZXJhdG9yX3JlbWVtYmVyKHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteW5hbWUsIG15bmFtZV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19kYXRhX2NvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19sb29wX2NvbnRleHQsIGlpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBrZWVwIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV0c25tcF9pdGVyYXRvcl9yZW1lbWJlcihyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteW5hbWVfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2RhdGFfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19sb29wX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWluZm8pID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQ2xlYW51cCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmcmVlX3RoaXNfaW5kZXhfc2VhcmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZnJlZV9yZXF1ZXN0X2RhdGFfc2V0cyhyZXF0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0ZSRUUocmVxdG1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9jb3VudC0tOyAgIC8qIE9uZSBsZXNzIHRvIGxvb2sgZm9yICovCiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpaW5mby0+ZnJlZV9kYXRhX2NvbnRleHQgJiYgY2FsbGJhY2tfZGF0YV9jb250ZXh0KSB7CkBAIC02MTIsNiArNjU3LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfaW5mby0+Y29sbnVtID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YiA9IHJlcXRtcC0+cmVxdWVzdHZiID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3ZhcmlhYmxlX2xpc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIENsZWFudXAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZyZWVfdGhpc19pbmRleF9zZWFyY2gpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Yi0+dHlwZSA9IEFTTl9OVUxMOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl9vYmppZCh2YiwgbXluYW1lLCBteW5hbWVfbGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyKGhhbmRsZXIsIHJlZ2luZm8sCkBAIC02MzMsMTEgKzY4NywyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ldHNubXBfY2hlY2tfZ2V0bmV4dF9yZXBseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LCBjb2xvaWQsIGNvbG9pZF9sZW4sIGluZGV4X3NlYXJjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRpX2luZm8tPnJlc3VsdHMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9yZW1lbWJlcihyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlfaW5mby0+cmVzdWx0cy0+bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpX2luZm8tPnJlc3VsdHMtPm5hbWVfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfZGF0YV9jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfbG9vcF9jb250ZXh0LCBpaW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ldHNubXBfaXRlcmF0b3JfcmVtZW1iZXIocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aV9pbmZvLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpX2luZm8tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2RhdGFfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19sb29wX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWluZm8pID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQ2xlYW51cCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmcmVlX3RoaXNfaW5kZXhfc2VhcmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogIElmIHdlJ3ZlIGJlZW4gdG9sZCB0aGF0IHRoZSByb3dzIGFyZSBzb3J0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICB0aGVuIHRoZSBmaXJzdCB2YWxpZCBvbmUgd2UgZmluZApAQCAtOTQ1LDcgKzEwMTEsNyBAQAogCiAgICAgdnAxID0gc25tcF9jbG9uZV92YXJiaW5kKGlpbmZvLT5pbmRleGVzKTsKICAgICB2cDIgPSBpaW5mby0+Z2V0X2ZpcnN0X2RhdGFfcG9pbnQoICZjdHgxLCAmY3R4MiwgdnAxLCBpaW5mbyApOwotICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAiZmlyc3QgRFA6ICV4ICV4ICV4XG4iLAorICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAiZmlyc3QgRFA6ICVwICVwICVwXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4MSwgY3R4MiwgdnAyKSk7CiAKICAgICAvKiBYWFggLSBmcmVlIGNvbnRleHQgPyAqLwpAQCAtOTY0LDcgKzEwMzAsNyBAQAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2cDIgPSBpaW5mby0+Z2V0X25leHRfZGF0YV9wb2ludCggJmN0eDEsICZjdHgyLCB2cDIsIGlpbmZvICk7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAibmV4dCBEUDogJXggJXggJXhcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAibmV4dCBEUDogJXAgJXAgJXBcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4MSwgY3R4MiwgdnAyKSk7CiAgICAgICAgIC8qIFhYWCAtIGZyZWUgY29udGV4dCA/ICovCiAgICAgfQpAQCAtOTk0LDcgKzEwNjAsNyBAQAogCiAgICAgdnAxID0gc25tcF9jbG9uZV92YXJiaW5kKGlpbmZvLT5pbmRleGVzKTsKICAgICB2cDIgPSBpaW5mby0+Z2V0X2ZpcnN0X2RhdGFfcG9pbnQoICZjdHgxLCAmY3R4MiwgdnAxLCBpaW5mbyApOwotICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAiZmlyc3QgRFA6ICV4ICV4ICV4XG4iLAorICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAiZmlyc3QgRFA6ICVwICVwICVwXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4MSwgY3R4MiwgdnAyKSk7CiAKICAgICBpZiAoICFpbnN0YW5jZSB8fCAhbGVuICkgewpAQCAtMTAzMSw3ICsxMDk3LDcgQEAKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdnAyID0gaWluZm8tPmdldF9uZXh0X2RhdGFfcG9pbnQoICZjdHgxLCAmY3R4MiwgdnAyLCBpaW5mbyApOwotICAgICAgICBERUJVR01TR1RMKCgidGFibGU6aXRlcmF0b3I6Z2V0IiwgIm5leHQgRFA6ICV4ICV4ICV4XG4iLAorICAgICAgICBERUJVR01TR1RMKCgidGFibGU6aXRlcmF0b3I6Z2V0IiwgIm5leHQgRFA6ICVwICVwICVwXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eDEsIGN0eDIsIHZwMikpOwogICAgICAgICAvKiBYWFggLSBmcmVlIGNvbnRleHQgPyAqLwogICAgIH0KQEAgLTEwNjAsNyArMTEyNiw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKLSAgICBERUJVR01TR1RMKCgidGFibGU6aXRlcmF0b3I6Y291bnQiLCAiZmlyc3QgRFA6ICV4ICV4ICV4XG4iLAorICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpjb3VudCIsICJmaXJzdCBEUDogJXAgJXAgJXBcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eDEsIGN0eDIsIHZwMikpOwogCiAgICAgLyogWFhYIC0gZnJlZSBjb250ZXh0ID8gKi8KQEAgLTEwNjgsNyArMTEzNCw3IEBACiAgICAgd2hpbGUgKHZwMikgewogICAgICAgICBpKys7CiAgICAgICAgIHZwMiA9IGlpbmZvLT5nZXRfbmV4dF9kYXRhX3BvaW50KCAmY3R4MSwgJmN0eDIsIHZwMiwgaWluZm8gKTsKLSAgICAgICAgREVCVUdNU0dUTCgoInRhYmxlOml0ZXJhdG9yOmNvdW50IiwgIm5leHQgRFA6ICV4ICV4ICV4ICglZClcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpjb3VudCIsICJuZXh0IERQOiAlcCAlcCAlcCAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4MSwgY3R4MiwgdnAyLCBpKSk7CiAgICAgICAgIC8qIFhYWCAtIGZyZWUgY29udGV4dCA/ICovCiAgICAgfQpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYyBiL2FnZW50L2hlbHBlcnMvdGFibGVfcm93LmMKaW5kZXggN2M4YTRjNC4uYmJjNDg0ZiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jCkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICBNQVhfT0lEX0xFTi1yb3dfb2lkX2xlbiwgJmxlbiwgTlVMTCwgMCwgaW5kZXgpOwogICAgIHJvd19vaWRfbGVuICs9IGxlbjsKICAgICBmcmVlKHJlZ2luZm8tPnJvb3RvaWQpOwotICAgIHJlZ2luZm8tPnJvb3RvaWQgPSBuZXRzbm1wX21lbWR1cChyb3dfb2lkLCByb3dfb2lkX2xlbiAqIHNpemVvZihvaWQpKTsKKyAgICByZWdpbmZvLT5yb290b2lkID0gc25tcF9kdXBsaWNhdGVfb2JqaWQocm93X29pZCwgcm93X29pZF9sZW4pOwogICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuID0gcm93X29pZF9sZW47CiAKICAgICAgCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmMKaW5kZXggNDZkM2UxOC4uYTU3ZTAwYyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jCisrKyBiL2FnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYwpAQCAtMSwxNiArMSwxNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZS5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5Lmg+CiAKQEAgLTEwOCw4ICsxMDksOCBAQAogICAgIH0KIAogICAgIGlmIChyb3ctPm9pZF9pbmRleC5vaWRzKSB7Ci0gICAgICAgIG5ld3Jvdy0+b2lkX2luZGV4Lm9pZHMgPSBuZXRzbm1wX21lbWR1cChyb3ctPm9pZF9pbmRleC5vaWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy0+b2lkX2luZGV4LmxlbiAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgbmV3cm93LT5vaWRfaW5kZXgub2lkcyA9CisgICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZChyb3ctPm9pZF9pbmRleC5vaWRzLCByb3ctPm9pZF9pbmRleC5sZW4pOwogICAgICAgICBpZiAoIW5ld3Jvdy0+b2lkX2luZGV4Lm9pZHMpIHsKICAgICAgICAgICAgIGlmIChuZXdyb3ctPmluZGV4ZXMpCiAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQobmV3cm93LT5pbmRleGVzKTsKQEAgLTEzOCw4ICsxMzksOCBAQAogICAgIH0KIAogICAgIGlmIChzcmNfcm93LT5vaWRfaW5kZXgub2lkcykgewotICAgICAgICBkc3Rfcm93LT5vaWRfaW5kZXgub2lkcyA9IG5ldHNubXBfbWVtZHVwKHNyY19yb3ctPm9pZF9pbmRleC5vaWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3Jvdy0+b2lkX2luZGV4LmxlbiAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgZHN0X3Jvdy0+b2lkX2luZGV4Lm9pZHMgPSBzbm1wX2R1cGxpY2F0ZV9vYmppZChzcmNfcm93LT5vaWRfaW5kZXgub2lkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfcm93LT5vaWRfaW5kZXgubGVuKTsKICAgICAgICAgaWYgKCFkc3Rfcm93LT5vaWRfaW5kZXgub2lkcykKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0yMTQsNyArMjE1LDcgQEAKICAgICAgKiBhZGQgdGhpcyByb3cgdG8gdGhlIHN0b3JlZCB0YWJsZQogICAgICAqLwogICAgIENPTlRBSU5FUl9JTlNFUlQoIHRhYmxlLT5jb250YWluZXIsIHJvdyApOwotICAgIERFQlVHTVNHVEwoKCJ0ZGF0YV9hZGRfcm93IiwgImFkZGVkIHJvdyAoJXgpXG4iLCByb3cpKTsKKyAgICBERUJVR01TR1RMKCgidGRhdGFfYWRkX3JvdyIsICJhZGRlZCByb3cgKCVwKVxuIiwgcm93KSk7CiAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQpAQCAtMzU0LDYgKzM1NSwxMyBAQAogICAgICAgICAgICAgICAgICAgdGFibGUtPmNvbnRhaW5lciwgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKIH0KIAoraW50CituZXRzbm1wX3RkYXRhX3VucmVnaXN0ZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnaW5mbykKK3sKKyAgICAvKiBmcmVlIHRhYmxlOyAqLworICAgIHJldHVybiBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV91bnJlZ2lzdGVyKHJlZ2luZm8pOworfQorCiAvKiogZXh0cmFjdHMgdGhlIHRkYXRhIHRhYmxlIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlICovCiBuZXRzbm1wX3RkYXRhICoKIG5ldHNubXBfdGRhdGFfZXh0cmFjdF90YWJsZShuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCkKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvd2F0Y2hlci5jIGIvYWdlbnQvaGVscGVycy93YXRjaGVyLmMKaW5kZXggOWNiYjRkMy4uOGVmNDU2YSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy93YXRjaGVyLmMKKysrIGIvYWdlbnQvaGVscGVycy93YXRjaGVyLmMKQEAgLTEsMTkgKzEsMTUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2lmIEhBVkVfU1RSSU5HX0gKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC93YXRjaGVyLmg+CisKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NjYWxhci5oPgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKIC8qKiBAZGVmZ3JvdXAgd2F0Y2hlciB3YXRjaGVyCiAgKiAgV2F0Y2ggYSBzcGVjaWZpZWQgdmFyaWFibGUgYW5kIHByb2Nlc3MgaXQgYXMgYW4gaW5zdGFuY2Ugb3Igc2NhbGFyIG9iamVjdAogICogIEBpbmdyb3VwIGxlYWYKQEAgLTMzLDE5ICsyOSw0NyBAQAogfQogCiBuZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvNihuZXRzbm1wX3dhdGNoZXJfaW5mbyAqd2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgdV9jaGFyIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIHNpemVfdCBtYXhfc2l6ZSwgc2l6ZV90KiBzaXplX3ApCit7CisgICAgd2luZm8tPmRhdGEgPSBkYXRhOworICAgIHdpbmZvLT5kYXRhX3NpemUgPSBzaXplOworICAgIHdpbmZvLT5tYXhfc2l6ZSA9IG1heF9zaXplOworICAgIHdpbmZvLT50eXBlID0gdHlwZTsKKyAgICB3aW5mby0+ZmxhZ3MgPSBmbGFnczsKKyAgICB3aW5mby0+ZGF0YV9zaXplX3AgPSBzaXplX3A7CisgICAgcmV0dXJuIHdpbmZvOworfQorCituZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm82KHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBzaXplX3QgbWF4X3NpemUsIHNpemVfdCogc2l6ZV9wKQoreworICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICp3aW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF93YXRjaGVyX2luZm8pOworICAgIGlmICh3aW5mbykKKyAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbzYod2luZm8sIGRhdGEsIHNpemUsIHR5cGUsIGZsYWdzLCBtYXhfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV9wKTsKKyAgICByZXR1cm4gd2luZm87Cit9CisKK25ldHNubXBfd2F0Y2hlcl9pbmZvICoKK25ldHNubXBfaW5pdF93YXRjaGVyX2luZm8obmV0c25tcF93YXRjaGVyX2luZm8gKndpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgdV9jaGFyIHR5cGUsIGludCBmbGFncykKK3sKKyAgcmV0dXJuIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm82KHdpbmZvLCBkYXRhLCBzaXplLAorCQkJCSAgICB0eXBlLCAoZmxhZ3MgPyBmbGFncyA6IFdBVENIRVJfRklYRURfU0laRSksCisJCQkJICAgIHNpemUsICAvKiBQcm9iYWJseSB3cm9uZyBmb3Igbm9uLWZpeGVkCisJCQkJCSAgICAqIHNpemUgZGF0YSAqLworCQkJCSAgICBOVUxMKTsKK30KKworbmV0c25tcF93YXRjaGVyX2luZm8gKgogbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwgaW50IGZsYWdzKQogewogICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICp3aW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF93YXRjaGVyX2luZm8pOwotCi0gICAgd2luZm8tPmRhdGEgICAgICA9IGRhdGE7Ci0gICAgd2luZm8tPmRhdGFfc2l6ZSA9IHNpemU7Ci0gICAgd2luZm8tPm1heF9zaXplICA9IHNpemU7CS8qIFByb2JhYmx5IHdyb25nIGZvciBub24tZml4ZWQgc2l6ZSBkYXRhICovCi0gICAgd2luZm8tPnR5cGUgICAgICA9IHR5cGU7Ci0gICAgaWYgKGZsYWdzKQotICAgICAgICB3aW5mby0+ZmxhZ3MgPSBmbGFnczsKLSAgICBlbHNlCi0gICAgICAgIHdpbmZvLT5mbGFncyA9IFdBVENIRVJfRklYRURfU0laRTsKLQorICAgIGlmICh3aW5mbykKKyAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbyh3aW5mbywgZGF0YSwgc2l6ZSwgdHlwZSwgZmxhZ3MpOwogICAgIHJldHVybiB3aW5mbzsKIH0KIApAQCAtNzUsNyArOTksNTkgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIocmVnaW5mbyk7CiB9CiAKKy8qKiBAY29uZCAqLwogCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgc2l6ZV90CitnZXRfZGF0YV9zaXplKGNvbnN0IG5ldHNubXBfd2F0Y2hlcl9pbmZvKiB3aW5mbykKK3sKKyAgICBpZiAod2luZm8tPmZsYWdzICYgV0FUQ0hFUl9TSVpFX1NUUkxFTikKKyAgICAgICAgcmV0dXJuIHN0cmxlbigoY29uc3QgY2hhciopd2luZm8tPmRhdGEpOworICAgIGVsc2UgeworICAgICAgICBzaXplX3QgcmVzOworICAgICAgICBpZiAod2luZm8tPmZsYWdzICYgV0FUQ0hFUl9TSVpFX0lTX1BUUikKKyAgICAgICAgICAgIHJlcyA9ICp3aW5mby0+ZGF0YV9zaXplX3A7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHdpbmZvLT5kYXRhX3NpemU7CisgICAgICAgIGlmICh3aW5mby0+ZmxhZ3MgJiBXQVRDSEVSX1NJWkVfVU5JVF9PSURTKQorICAgICAgICAgIHJlcyAqPSBzaXplb2Yob2lkKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9Cit9CisKK05FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkCitzZXRfZGF0YShuZXRzbm1wX3dhdGNoZXJfaW5mbyogd2luZm8sIHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIG1lbWNweSh3aW5mby0+ZGF0YSwgZGF0YSwgc2l6ZSk7CisgICAgaWYgKHdpbmZvLT5mbGFncyAmIFdBVENIRVJfU0laRV9TVFJMRU4pCisgICAgICAgICgoY2hhciopd2luZm8tPmRhdGEpW3NpemVdID0gJ1wwJzsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHdpbmZvLT5mbGFncyAmIFdBVENIRVJfU0laRV9VTklUX09JRFMpCisgICAgICAgICAgc2l6ZSAvPSBzaXplb2Yob2lkKTsKKyAgICAgICAgaWYgKHdpbmZvLT5mbGFncyAmIFdBVENIRVJfU0laRV9JU19QVFIpCisgICAgICAgICAgICAqd2luZm8tPmRhdGFfc2l6ZV9wID0gc2l6ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2luZm8tPmRhdGFfc2l6ZSA9IHNpemU7CisgICAgfQorfQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgc2l6ZV90IHNpemU7CisgICAgY2hhciBkYXRhWzFdOworfSBuZXRzbm1wX3dhdGNoZXJfY2FjaGU7CisKK05FVFNOTVBfU1RBVElDX0lOTElORSBuZXRzbm1wX3dhdGNoZXJfY2FjaGUqCituZXRzbm1wX3dhdGNoZXJfY2FjaGVfY3JlYXRlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIG5ldHNubXBfd2F0Y2hlcl9jYWNoZSAqcmVzID0KKyAgICAgICAgbWFsbG9jKHNpemVvZihuZXRzbm1wX3dhdGNoZXJfY2FjaGUpICsgc2l6ZSAtIDEpOworICAgIGlmIChyZXMpIHsKKyAgICAgICAgcmVzLT5zaXplID0gc2l6ZTsKKyAgICAgICAgbWVtY3B5KHJlcy0+ZGF0YSwgZGF0YSwgc2l6ZSk7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qKiBAZW5kY29uZCAqLwogCiBpbnQKIG5ldHNubXBfd2F0Y2hlcl9oZWxwZXJfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLApAQCAtODMsOCArMTU5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCiB7Ci0gICAgbmV0c25tcF93YXRjaGVyX2luZm8gKndpbmZvID0gKG5ldHNubXBfd2F0Y2hlcl9pbmZvICopIGhhbmRsZXItPm15dm9pZDsKLSAgICB1X2NoYXIgICAgICAgICAgICAgICpvbGRfZGF0YTsKKyAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgKndpbmZvID0gKG5ldHNubXBfd2F0Y2hlcl9pbmZvICopIGhhbmRsZXItPm15dm9pZDsKKyAgICBuZXRzbm1wX3dhdGNoZXJfY2FjaGUgKm9sZF9kYXRhOwogCiAgICAgREVCVUdNU0dUTCgoImhlbHBlcjp3YXRjaGVyIiwgIkdvdCByZXF1ZXN0OiAgJWRcbiIsIHJlcWluZm8tPm1vZGUpKTsKICAgICBERUJVR01TR1RMKCggImhlbHBlcjp3YXRjaGVyIiwgIiAgb2lkOiIpKTsKQEAgLTEwMCw3ICsxNzYsNyBAQAogICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmZvLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZm8tPmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5mby0+ZGF0YV9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9kYXRhX3NpemUod2luZm8pKTsKICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyoKQEAgLTEwOCwxOCArMTg0LDE5IEBACiAgICAgICAgICAqLwogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlICE9IHdpbmZvLT50eXBlKSB7Ci0gICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9XUk9OR1RZUEUpOworICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfV1JPTkdUWVBFKTsKICAgICAgICAgICAgIGhhbmRsZXItPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVF9PVkVSUklERV9PTkNFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCgod2luZm8tPmZsYWdzICYgV0FUQ0hFUl9NQVhfU0laRSkgJiYKLSAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gPiAgd2luZm8tPm1heF9zaXplKSB8fAorICAgICAgICB9IGVsc2UgaWYgKCgod2luZm8tPmZsYWdzICYgV0FUQ0hFUl9NQVhfU0laRSkgJiYKKyAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gPiB3aW5mby0+bWF4X3NpemUpIHx8CiAgICAgICAgICAgICAoKHdpbmZvLT5mbGFncyAmIFdBVENIRVJfRklYRURfU0laRSkgJiYKLSAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gIT0gd2luZm8tPmRhdGFfc2l6ZSkpIHsKLSAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9XUk9OR0xFTkdUSCk7Ci0gICAgICAgICAgICAgaGFuZGxlci0+ZmxhZ3MgfD0gTUlCX0hBTkRMRVJfQVVUT19ORVhUX09WRVJSSURFX09OQ0U7CisgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiAhPSBnZXRfZGF0YV9zaXplKHdpbmZvKSkpIHsKKyAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX1dST05HTEVOR1RIKTsKKyAgICAgICAgICAgIGhhbmRsZXItPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVF9PVkVSUklERV9PTkNFOworICAgICAgICB9IGVsc2UgaWYgKCh3aW5mby0+ZmxhZ3MgJiBXQVRDSEVSX1NJWkVfU1RSTEVOKSAmJgorICAgICAgICAgICAgKG1lbWNocihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nLCAnXDAnLAorICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4pICE9IE5VTEwpKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9XUk9OR1ZBTFVFKTsKKyAgICAgICAgICAgIGhhbmRsZXItPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVF9PVkVSUklERV9PTkNFOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCkBAIC0xMjcsMTYgKzIwNCwxNiBAQAogICAgICAgICAvKgogICAgICAgICAgKiBzdG9yZSBvbGQgaW5mbyBmb3IgdW5kbyBsYXRlciAKICAgICAgICAgICovCi0gICAgICAgIG9sZF9kYXRhID0gbmV0c25tcF9tZW1kdXAod2luZm8tPmRhdGEsIHdpbmZvLT5kYXRhX3NpemUpOworICAgICAgICBvbGRfZGF0YSA9CisgICAgICAgICAgICBuZXRzbm1wX3dhdGNoZXJfY2FjaGVfY3JlYXRlKHdpbmZvLT5kYXRhLCBnZXRfZGF0YV9zaXplKHdpbmZvKSk7CiAgICAgICAgIGlmIChvbGRfZGF0YSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFKTsKICAgICAgICAgICAgIGhhbmRsZXItPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVF9PVkVSUklERV9PTkNFOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci0gICAgICAgIH0KLSAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIndhdGNoZXIiLCBvbGRfZGF0YSwgZnJlZSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9hZGRfbGlzdF9kYXRhKHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIndhdGNoZXIiLCBvbGRfZGF0YSwgZnJlZSkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKQEAgLTE0OSwxOCArMjI2LDE2IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIHVwZGF0ZSBjdXJyZW50IAogICAgICAgICAgKi8KLSAgICAgICAgbWVtY3B5KHdpbmZvLT5kYXRhLCAodm9pZCAqKXJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuKTsKKyAgICAgICAgc2V0X2RhdGEod2luZm8sICh2b2lkICopcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgotICAgICAgICBtZW1jcHkod2luZm8tPmRhdGEsCi0gICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0cywgIndhdGNoZXIiKSwKLSAgICAgICAgICAgICAgIHdpbmZvLT5kYXRhX3NpemUpOworICAgICAgICBvbGRfZGF0YSA9IG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKHJlcXVlc3RzLCAid2F0Y2hlciIpOworICAgICAgICBzZXRfZGF0YSh3aW5mbywgb2xkX2RhdGEtPmRhdGEsIG9sZF9kYXRhLT5zaXplKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKLSAgICAgICAgd2luZm8tPmRhdGFfc2l6ZSA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW47CiAgICAgICAgIGJyZWFrOwogCiAgICAgfQpAQCAtMzQ5LDcgKzQyNCw3IEBACiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewpAQCAtMzY1LDcgKzQ0MCw3IEBACiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKQEAgLTM4MSw3ICs0NTYsNyBAQAogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfbG9uZ19zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKQEAgLTM5Nyw3ICs0NzIsNyBAQAogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7CkBAIC00MTQsNyArNDg5LDcgQEAKIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2ludF9zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewpAQCAtNDMwLDcgKzUwNSw3IEBACiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7CkBAIC00NDcsNyArNTIyLDcgQEAKIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYl9tb2R1bGVzLmMgYi9hZ2VudC9taWJfbW9kdWxlcy5jCmluZGV4IDk1ZTQ2OTUuLmVhODI3MWMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYl9tb2R1bGVzLmMKKysrIGIvYWdlbnQvbWliX21vZHVsZXMuYwpAQCAtNDksOSArNDksNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaD4KICNpbmNsdWRlICJtaWJfbW9kdWxlX2luY2x1ZGVzLmgiCi0jaWZkZWYgVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRQotI2luY2x1ZGUgIm1pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oIgotI2VuZGlmCiAKIHN0YXRpYyBpbnQgbmVlZF9zaHV0ZG93biA9IDA7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCBiL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZAppbmRleCBkZWFiZjAyLi5mZGQ1ZmJiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kCkBAIC04LDMyICs4LDE0IEBACiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ0LDExICsyNiwzMSBAQAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTE1LDMyICsxMTcsMTQgQEAKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTUxLDExICsxMzUsMzEgQEAKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIxNywzMiArMjIxLDE0IEBACiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjUzLDExICsyMzksMzEgQEAKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzExLDcgKzMxNyw4IEBACiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc3RydWN0LmggdXRpbF9mdW5jcy5oCi0uL3V0aWxfZnVuY3MubG86IHV0aWxpdGllcy9leGVjdXRlLmgKKy4vdXRpbF9mdW5jcy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL3V0aWxfZnVuY3MubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCB1dGlsaXRpZXMvZXhlY3V0ZS5oCiAuL3V0aWxfZnVuY3MubG86IHVjZC1zbm1wL2Vycm9ybWliLmggbWliZGVmcy5oCiAuL3dpbkV4dERMTC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi93aW5FeHRETEwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTMxOSw2MjUgKzMyNiw2IEBACiAuL3dpbkV4dERMTC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL3dpbkV4dERMTC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi93aW5FeHRETEwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4vUm1vbi9hZ3V0aWwuaCAuL1Jtb24vYWd1dGlsX2FwaS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaAotLi9SbW9uL2FsYXJtLmxvOiAuL1Jtb24vYWxhcm0uaCAuL1Jtb24vYWd1dGlsX2FwaS5oIC4vUm1vbi9yb3dfYXBpLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oIHN0cnVjdC5oCi0uL1Jtb24vZXZlbnQubG86IC4vUm1vbi9ldmVudC5oIC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuL1Jtb24vaGlzdG9yeS5oIC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmgKLS4vUm1vbi9yb3dzLmxvOiAuL1Jtb24vYWd1dGlsX2FwaS5oIC4vUm1vbi9yb3dzLmggLi9SbW9uL3Jvd19hcGkuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiBzdHJ1Y3QuaCAuL1Jtb24vc3RhdGlzdGljcy5oIC4vUm1vbi9hZ3V0aWxfYXBpLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuL1Jtb24vcm93X2FwaS5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTk0NiwzMiArMzM0LDE0IEBACiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05ODIsMTEgKzM1MiwzMSBAQAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEwNDEsOCArNDMxLDggQEAKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAotLi9hZ2VudC9leHRlbmQubG86IGFnZW50L2V4dGVuZC5oIHV0aWxpdGllcy9leGVjdXRlLmggc3RydWN0LmggdXRpbF9mdW5jcy5oCi0uL2FnZW50L2V4dGVuZC5sbzogbWliZGVmcy5oCisuL2FnZW50L2V4dGVuZC5sbzogYWdlbnQvZXh0ZW5kLmggdXRpbGl0aWVzL2V4ZWN1dGUuaCBzdHJ1Y3QuaAorLi9hZ2VudC9leHRlbmQubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIG1pYmRlZnMuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMDUxLDMyICs0NDEsMTQgQEAKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDg3LDExICs0NTksMzEgQEAKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTE0NSw3ICs1MzcsNiBAQAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIGFnZW50L25zQ2FjaGUuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiB1dGlsX2Z1bmNzLmggc3RydWN0LmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTE1NCwzMiArNTQ1LDE0IEBACiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTE5MCwxMSArNTYzLDMxIEBACiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEyNDgsNyArNjQxLDYgQEAKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBhZ2VudC9uc0RlYnVnLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEyNTcsMzIgKzY0OSwxNCBAQAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTI5MywxMSArNjY3LDMxIEBACiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTM1MSw3ICs3NDUsNiBAQAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIGFnZW50L25zTG9nZ2luZy5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEzNjAsMzIgKzc1MywxNCBAQAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEzOTYsMTEgKzc3MSwzMSBAQAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNDYzLDMyICs4NTgsMTQgQEAKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0OTksMTEgKzg3NiwzMSBAQAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE1NjYsMzIgKzk2MywxNCBAQAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNjAyLDExICs5ODEsMzEgQEAKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE2NjksMzIgKzEwNjgsMTQgQEAKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTcwNSwxMSArMTA4NiwzMSBAQAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTc3MywzMiArMTE3NCwxNCBAQAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE4MDksMTEgKzExOTIsMzEgQEAKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTg2OSwxMDkgKzEyNzIsNiBAQAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaW5kZXguaAogLi9hZ2VudHgvY2xpZW50LmxvOiBhZ2VudHgvcHJvdG9jb2wuaCBhZ2VudHgvY2xpZW50LmggYWdlbnR4L3N1YmFnZW50LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggLi4vLi4vYWdlbnQvc25tcGQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiBhZ2VudHgvcHJvdG9jb2wuaCBhZ2VudHgvbWFzdGVyX2FkbWluLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTk4MCwzMiArMTI4MCwxNCBAQAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTIwMTYsMTEgKzEyOTgsMzEgQEAKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjA3Nyw3ICsxMzc5LDExMyBAQAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiBhZ2VudHgvcHJvdG9jb2wuaCBhZ2VudHgvY2xpZW50LmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9pbmRleC5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogbWliSUkvc3lzT1JUYWJsZS5oIC4vYWdlbnR4L21hc3Rlci5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4vYWdlbnR4L21hc3Rlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCAuLi8uLi9hZ2VudC9zbm1wZC5oCisuL2FnZW50eC9tYXN0ZXIubG86IGFnZW50eC9wcm90b2NvbC5oIGFnZW50eC9tYXN0ZXJfYWRtaW4uaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0yMDg2LDMyICsxNDk0LDE0IEBACiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMTIyLDExICsxNTEyLDMxIEBACiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjE1MywzMiArMTU2MywxNCBAQAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjE4OSwxMSArMTU4MSwzMSBAQAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIyNTAsNyArMTY2Miw5IEBACiAuL2FnZW50eC9zdWJhZ2VudC5sbzogYWdlbnR4L3Byb3RvY29sLmggYWdlbnR4L2NsaWVudC5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogYWdlbnR4L2FnZW50eF9jb25maWcuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiBtaWJJSS9zeXNPUlRhYmxlLmggLi9hZ2VudHgvc3ViYWdlbnQuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuL2FnZW50eC9zdWJhZ2VudC5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTIyNTksMzIgKzE2NzMsMTQgQEAKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjI5NSwxMSArMTY5MSwzMSBAQAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjM2MiwzMiArMTc3OCwxNCBAQAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMzk4LDExICsxNzk2LDMxIEBACiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNDY4LDMyICsxODg2LDE0IEBACiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjUwNCwxMSArMTkwNCwzMSBAQAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNTcyLDMyICsxOTkyLDE0IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI2MDgsMTEgKzIwMTAsMzEgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTI2NzcsMzIgKzIwOTksMTQgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI3MTMsMTEgKzIxMTcsMzEgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNzgyLDMyICsyMjA2LDE0IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjgxOCwxMSArMjIyNCwzMSBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yODg3LDMyICsyMzEzLDE0IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjkyMywxMSArMjMzMSwzMSBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yOTk2LDMyICsyNDI0LDE0IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzAzMiwxMSArMjQ0MiwzMSBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zMTAxLDMyICsyNTMxLDE0IEBACiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTMxMzcsMTEgKzI1NDksMzEgQEAKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMyMDMsMzIgKzI2MzUsMTQgQEAKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zMjM5LDExICsyNjUzLDMxIEBACiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMzMDYsMzIgKzI3NDAsMTQgQEAKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zMzQyLDExICsyNzU4LDMxIEBACiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMzOTksOCArMjgzNSwxMTQgQEAKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IHN0cnVjdC5oIC4vZXhhbXBsZXMvZXhhbXBsZS5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIC4vZXhhbXBsZXMvZXhhbXBsZS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9lbnVtcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTM0MDksMzIgKzI5NTEsMTQgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzQ0NSwxMSArMjk2OSwzMSBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzUwOCwxMTAgKzMwNTIsNiBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9lbnVtcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9lbnVtcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTM2MjAsMzIgKzMwNjAsMTQgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzY1NiwxMSArMzA3OCwzMSBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzY4OSwzMiArMzEzMSwxNCBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zNzI1LDExICszMTQ5LDMxIEBACiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zNzU3LDMyICszMjAxLDE0IEBACiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zNzkzLDExICszMjE5LDMxIEBACiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzg1OSwzMiArMzMwNSwxNCBAQAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTM4OTUsMTEgKzMzMjMsMzEgQEAKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzk2MSwzMiArMzQwOSwxNCBAQAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTM5OTcsMTEgKzM0MjcsMzEgQEAKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDA1NCw4ICszNTA0LDkgQEAKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IHN0cnVjdC5oIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTQwNjQsMzIgKzM1MTUsMTQgQEAKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00MTAwLDExICszNTMzLDMxIEBACiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQxNjcsMzIgKzM2MjAsMTQgQEAKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDIwMywxMSArMzYzOCwzMSBAQAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDI0MCwzMiArMzY5NSwxNCBAQAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDI3NiwxMSArMzcxMywzMSBAQAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQzMTQsMzIgKzM3NzEsMTQgQEAKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQzNTAsMTEgKzM3ODksMzEgQEAKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00NDEwLDcgKzM4NjksMjIzIEBACiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5LmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiBob3N0X3Jlcy5oIC4vaG9zdC9ocl9maWxlc3lzLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuL2hvc3QvaHJfc3RvcmFnZS5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi9ob3N0L2hyX3N0b3JhZ2UuaCAuL2hvc3QvaHJfZGlzay5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL21lbW9yeS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IGhvc3RfcmVzLmggLi9ob3N0L2hyaF9maWxlc3lzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi9ob3N0L2hyaF9zdG9yYWdlLmggLi9ob3N0L2hyX2Rpc2suaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9tZW1vcnkuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiBob3N0X3Jlcy5oIC4vaG9zdC9ocmhfZmlsZXN5cy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4vaG9zdC9ocmhfc3RvcmFnZS5oIC4vaG9zdC9ocl9kaXNrLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNDQxOSwzMiArNDA5NCwxNCBAQAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDQ1NSwxMSArNDExMiwzMSBAQAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQ1MjQsMzIgKzQyMDEsMTQgQEAKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00NTYwLDExICs0MjE5LDMxIEBACiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQ1OTgsMzIgKzQyNzcsMTQgQEAKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDYzNCwxMSArNDI5NSwzMSBAQAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDY3MywzMiArNDM1NCwxNCBAQAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ3MDksMTEgKzQzNzIsMzEgQEAKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDczOCw3ICs0NDIxLDkgQEAKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi9ob3N0L2hyX3ByaW50Lmggc3RydWN0LmgKLS4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy5oCisuL2hvc3QvaHJfcHJpbnQubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKKy4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTQ3NDcsMzIgKzQ0MzIsMTQgQEAKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ3ODMsMTEgKzQ0NTAsMzEgQEAKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00ODU0LDMyICs0NTQxLDE0IEBACiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00ODkwLDExICs0NTU5LDMxIEBACiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDk1Miw2ICs0NjQxLDExMiBAQAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL21lbW9yeS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNDk2MSwzMiArNDc1NiwxNCBAQAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00OTk3LDExICs0Nzc0LDMxIEBACiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC01MDMzLDM2ICs0ODMwLDE1IEBACiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfc3dydW4ubG86IGhvc3RfcmVzLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNTA3MywxMSArNDg0OSwzNCBAQAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiBob3N0X3Jlcy5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTUxMDIsNiArNDkwMSwyMTkgQEAKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi9ob3N0L2hyX3N3cnVuLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vYWdlbnQva2VybmVsLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuL2hvc3QvaHJTV1J1blRhYmxlLmggLi9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNTExMCwzMiArNTEyMiwxNCBAQAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC01MTQ2LDExICs1MTQwLDMxIEBACiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC01MjE0LDMyICs1MjI4LDE0IEBACiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTUyNTAsMTEgKzUyNDYsMzEgQEAKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTUzMjAsMzIgKzUzMzYsMTQgQEAKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNTM1NiwxMSArNTM1NCwzMSBAQAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNTQyNywzMiArNTQ0NSwxNCBAQAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTU0NjMsMTEgKzU0NjMsMzEgQEAKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNTUyMSw4ICs1NTQxLDEwIEBACiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmggdXRpbF9mdW5jcy5oCi0uL21pYklJL2ljbXAubG86IHN0cnVjdC5oIC4vbWliSUkvaWNtcC5oIC4vbWliSUkvc3lzT1JUYWJsZS5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKKy4vbWliSUkvaWNtcC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIC4vbWliSUkvaWNtcC5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTU1MzIsMzIgKzU1NTQsMTQgQEAKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC01NTY4LDExICs1NTcyLDMxIEBACiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTU2MjcsMTE3ICs1NjUxLDExIEBACiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuL21pYklJL2ludGVyZmFjZXMuaCBzdHJ1Y3QuaCB1dGlsX2Z1bmNzLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi9taWJJSS9zeXNPUlRhYmxlLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL21pYklJL2lwLmxvOiAuL21pYklJL21pYklJX2NvbW1vbi5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9hZ2VudC9rZXJuZWwuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCB1dGlsX2Z1bmNzLmgKLS4vbWliSUkvaXAubG86IHN0cnVjdC5oIC4vbWliSUkvaXAuaCAuL21pYklJL3Zhcl9yb3V0ZS5oCi0uL21pYklJL2lwLmxvOiAuL21pYklJL3JvdXRlX3dyaXRlLmggLi9taWJJSS9hdC5oIC4vbWliSUkvaXBBZGRyLmgKLS4vbWliSUkvaXAubG86IC4vbWliSUkvaW50ZXJmYWNlcy5oIC4vbWliSUkvc3lzT1JUYWJsZS5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4vbWliSUkvaW50ZXJmYWNlcy5oIHN0cnVjdC5oCisuL21pYklJL2ludGVyZmFjZXMubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC01NzQ3LDMyICs1NjY1LDE0IEBACiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC01NzgzLDExICs1NjgzLDMxIEBACiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNTg0NCw3ICs1NzY0LDIyNiBAQAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAogLi9taWJJSS9pcEFkZHIubG86IC4vbWliSUkvaXAuaCAuL21pYklJL3Zhcl9yb3V0ZS5oIC4vbWliSUkvcm91dGVfd3JpdGUuaAotLi9taWJJSS9pcEFkZHIubG86IC4vbWliSUkvYXQuaCAuL21pYklJL2ludGVyZmFjZXMuaCAuL21pYklJL3N5c09SVGFibGUuaAorLi9taWJJSS9pcEFkZHIubG86IC4vbWliSUkvYXQuaCAuL21pYklJL2ludGVyZmFjZXMuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vbWliSUkvaXAubG86IC4vbWliSUkvbWliSUlfY29tbW9uLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2FnZW50L2tlcm5lbC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9taWJJSS9pcC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIC4vbWliSUkvaXAuaAorLi9taWJJSS9pcC5sbzogLi9taWJJSS92YXJfcm91dGUuaCAuL21pYklJL3JvdXRlX3dyaXRlLmggLi9taWJJSS9hdC5oCisuL21pYklJL2lwLmxvOiAuL21pYklJL2lwQWRkci5oIC4vbWliSUkvaW50ZXJmYWNlcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi9taWJJSS9yb3V0ZV9oZWFkZXJzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfZW51bXMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC01ODU0LDMyICs1OTkzLDE0IEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNTg5MCwxMSArNjAxMSwzMSBAQAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC01OTU0LDExMSArNjA5NSw2IEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuL21pYklJL3Zhcl9yb3V0ZS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi9taWJJSS9yb3V0ZV9oZWFkZXJzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfZW51bXMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC02MDY3LDMyICs2MTAzLDE0IEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjEwMywxMSArNjEyMSwzMSBAQAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02MTM1LDMyICs2MTczLDE0IEBACiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjE3MSwxMSArNjE5MSwzMSBAQAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02MjMwLDkgKzYyNzAsOCBAQAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9hZ2VudC9rZXJuZWwuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmggLi9taWJJSS9pcHY2LmgKLS4vbWliSUkvaXB2Ni5sbzogLi9taWJJSS92YXJfcm91dGUuaCAuL21pYklJL3JvdXRlX3dyaXRlLmggLi9taWJJSS9hdC5oCi0uL21pYklJL2lwdjYubG86IC4vbWliSUkvaW50ZXJmYWNlcy5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2FnZW50L2tlcm5lbC5oIC4vbWliSUkvaXB2Ni5oIC4vbWliSUkvdmFyX3JvdXRlLmgKKy4vbWliSUkvaXB2Ni5sbzogLi9taWJJSS9yb3V0ZV93cml0ZS5oIC4vbWliSUkvYXQuaCAuL21pYklJL2ludGVyZmFjZXMuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC02MjQxLDMyICs2MjgwLDE0IEBACiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC02Mjc3LDExICs2Mjk4LDMxIEBACiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNjMzNCw4ICs2Mzc1LDcgQEAKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiBzdHJ1Y3QuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuL21pYklJL2tlcm5lbF9saW51eC5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtNjM0NSwzMiArNjM4NSwxNCBAQAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTYzODEsMTEgKzY0MDMsMzEgQEAKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNjQ0OCwzMiArNjQ5MCwxNCBAQAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjQ4NCwxMSArNjUwOCwzMSBAQAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTY1NTEsMzIgKzY1OTUsMTQgQEAKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjU4NywxMSArNjYxMywzMSBAQAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNjY1NSwzMiArNjcwMSwxNCBAQAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC02NjkxLDExICs2NzE5LDMxIEBACiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02NzUwLDYgKzY3OTgsMTE0IEBACiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4vbWliSUkvc2V0U2VyaWFsTm8uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuL21pYklJL3NubXBfbWliXzVfNS5oIC4vbWliSUkvdXBkYXRlcy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTY3NTgsMzIgKzY5MTQsMTQgQEAKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjc5NCwxMSArNjkzMiwzMSBAQAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNjg1MSw4ICs3MDA5LDEwIEBACiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmgKLS4vbWliSUkvc25tcF9taWIubG86IC4vbWliSUkvc25tcF9taWIuaCAuL21pYklJL3N5c09SVGFibGUuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4vbWliSUkvc25tcF9taWIuaCAuL21pYklJL3VwZGF0ZXMuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC02ODYxLDMyICs3MDIxLDE0IEBACiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjg5NywxMSArNzAzOSwzMSBAQAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02OTU1LDkgKzcxMTcsMTAgQEAKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCi0uL21pYklJL3N5c09SVGFibGUubG86IHN0cnVjdC5oIHV0aWxfZnVuY3MuaCAuL21pYklJL3N5c09SVGFibGUuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9hZ2VudC9zbm1wZC5oIGFnZW50eC9zdWJhZ2VudC5oIGFnZW50eC9jbGllbnQuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuL21pYklJL3N5c09SVGFibGUuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC02OTY2LDMyICs3MTI5LDE0IEBACiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzAwMiwxMSArNzE0NywzMSBAQAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC03MDU5LDggKzcyMjQsMTMgQEAKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IHN0cnVjdC5oIC4vbWliSUkvc3lzdGVtX21pYi5oIC4vbWliSUkvc3lzT1JUYWJsZS5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL21pYklJL3N5c3RlbV9taWIubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHN0cnVjdC5oCisuL21pYklJL3N5c3RlbV9taWIubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuL21pYklJL3N5c3RlbV9taWIuaCAuL21pYklJL3VwZGF0ZXMuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC03MDcxLDMyICs3MjQxLDE0IEBACiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC03MTA3LDExICs3MjU5LDMxIEBACiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNzE2NSw5ICs3MzM3LDExIEBACiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCB1dGlsX2Z1bmNzLmgKLS4vbWliSUkvdGNwLmxvOiBzdHJ1Y3QuaCAuL21pYklJL3RjcC5oIC4vbWliSUkvdGNwVGFibGUuaAotLi9taWJJSS90Y3AubG86IC4vbWliSUkvc3lzT1JUYWJsZS5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKKy4vbWliSUkvdGNwLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmggLi9taWJJSS90Y3AuaAorLi9taWJJSS90Y3AubG86IC4vbWliSUkvdGNwVGFibGUuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC03MTc4LDMyICs3MzUyLDE0IEBACiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTcyMTQsMTEgKzczNzAsMzEgQEAKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTcyNzMsNyArNzQ0OSw3IEBACiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oIC4vbWliSUkvdGNwLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4vbWliSUkvdGNwVGFibGUuaCAuL21pYklJL3N5c09SVGFibGUuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi9taWJJSS90Y3BUYWJsZS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTcyODQsMzIgKzc0NjAsMTQgQEAKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTczMjAsMTEgKzc0NzgsMzEgQEAKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC03Mzc4LDkgKzc1NTYsMTEgQEAKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oIHV0aWxfZnVuY3MuaAotLi9taWJJSS91ZHAubG86IHN0cnVjdC5oIC4vbWliSUkvdWRwLmggLi9taWJJSS91ZHBUYWJsZS5oCi0uL21pYklJL3VkcC5sbzogLi9taWJJSS9zeXNPUlRhYmxlLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9taWJJSS91ZHAubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCAuL21pYklJL3VkcC5oCisuL21pYklJL3VkcC5sbzogLi9taWJJSS91ZHBUYWJsZS5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTczOTEsMzIgKzc1NzEsMTQgQEAKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzQyNywxMSArNzU4OSwzMSBAQAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNzQ4Niw3ICs3NjY4LDExMSBAQAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCAuL21pYklJL3VkcC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuL21pYklJL3VkcFRhYmxlLmggLi9taWJJSS9zeXNPUlRhYmxlLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4vbWliSUkvdWRwVGFibGUuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNzQ5NSwzMiArNzc4MSwxNCBAQAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzUzMSwxMSArNzc5OSwzMSBAQAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTc1OTAsOCArNzg3OCw3IEBACiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuL21pYklJL3ZhY21fY29uZi5oIHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4vbWliSUkvc3lzT1JUYWJsZS5oIC4uLy4uL2FnZW50L3NubXBkLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuL21pYklJL3ZhY21fY29uZi5oIC4uLy4uL2FnZW50L3NubXBkLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNzYwMCwzMiArNzg4NywxNCBAQAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzYzNiwxMSArNzkwNSwzMSBAQAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTc3MDMsMzIgKzc5OTIsMTQgQEAKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTc3MzksMTEgKzgwMTAsMzEgQEAKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC03Nzk4LDggKzgwODksOCBAQAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi9taWJJSS92YWNtX3ZhcnMuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuL21pYklJL3N5c09SVGFibGUuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi9taWJJSS92YWNtX3ZhcnMuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNzgwOSwzMiArODEwMCwxNCBAQAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzg0NSwxMSArODExOCwzMSBAQAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTc5MDcsNyArODIwMCw3IEBACiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4vbWliSUkvaXAuaCAuL21pYklJL3Zhcl9yb3V0ZS5oIC4vbWliSUkvcm91dGVfd3JpdGUuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4vbWliSUkvYXQuaCAuLi8uLi9hZ2VudC9rZXJuZWwuaCAuL21pYklJL2ludGVyZmFjZXMuaAotLi9taWJJSS92YXJfcm91dGUubG86IHN0cnVjdC5oIHV0aWxfZnVuY3MuaAorLi9taWJJSS92YXJfcm91dGUubG86IHN0cnVjdC5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTc5MTYsMzIgKzgyMDksMTQgQEAKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTc5NTIsMTEgKzgyMjcsMzEgQEAKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04MDA5LDggKzgzMDQsOCBAQAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaAotLi9taXNjL2lwZndhY2MubG86IC4vbWlzYy9pcGZ3YWNjLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL21pc2MvaXBmd2FjYy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggLi9taXNjL2lwZndhY2MuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC04MDE5LDMyICs4MzE0LDE0IEBACiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtODA1NSwxMSArODMzMiwzMSBAQAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04MTEzLDcgKzg0MTAsOCBAQAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCkBAIC04MTIzLDMyICs4NDIxLDE0IEBACiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTgxNTksMTEgKzg0MzksMzEgQEAKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTgyMjcsMzIgKzg1MjcsMTQgQEAKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC04MjYzLDExICs4NTQ1LDMxIEBACiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTgzMzMsOCArODYzNSw3NDMgQEAKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiBzbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IG5vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCAuL1Jtb24vYWd1dGlsLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4vUm1vbi9hZ3V0aWxfYXBpLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIC4vUm1vbi9hbGFybS5oCisuL1Jtb24vYWxhcm0ubG86IC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxpdGllcy9pcXVlcnkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4vUm1vbi9hbGFybVRhYmxlLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIC4vUm1vbi9ldmVudC5oCisuL1Jtb24vZXZlbnQubG86IC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIC4vUm1vbi9oaXN0b3J5LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuL1Jtb24vYWd1dGlsX2FwaS5oIC4vUm1vbi9yb3dfYXBpLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCAuL1Jtb24vYWd1dGlsX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi9SbW9uL3Jvd3MuaCAuL1Jtb24vcm93X2FwaS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggLi9SbW9uL3N0YXRpc3RpY3MuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC04MzQzLDMyICs5MzgwLDE0IEBACiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTgzNzksMTEgKzkzOTgsMzEgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTg0NDcsMzIgKzk0ODYsMTQgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg0ODMsMTEgKzk1MDQsMzEgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04NTUxLDMyICs5NTkyLDE0IEBACiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg1ODcsMTEgKzk2MTAsMzEgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTg2NTUsMzIgKzk2OTgsMTQgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg2OTEsMTEgKzk3MTYsMzEgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04NzU5LDMyICs5ODA0LDE0IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg3OTUsMTEgKzk4MjIsMzEgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTg4NjMsMzIgKzk5MTAsMTQgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg4OTksMTEgKzk5MjgsMzEgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04OTY3LDMyICsxMDAxNiwxNCBAQAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTkwMDMsMTEgKzEwMDM0LDMxIEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTkwNzEsMzIgKzEwMTIyLDE0IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtOTEwNywxMSArMTAxNDAsMzEgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtOTE3NSwzMiArMTAyMjgsMTQgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtOTIxMSwxMSArMTAyNDYsMzEgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTkyNzksMzIgKzEwMzM0LDE0IEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05MzE1LDExICsxMDM1MiwzMSBAQAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTkzNzQsNiArMTA0MzEsMTExIEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtOTM4MiwzMiArMTA1NDQsMTQgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtOTQxOCwxMSArMTA1NjIsMzEgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTk0NzcsNiArMTA2NDEsMTEyIEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IGtlcm5lbF9zdW5vczUuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC05NDg1LDMyICsxMDc1NSwxNCBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05NTIxLDExICsxMDc3MywzMSBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtOTU4OCw2ICsxMDg2MCwxMTcgQEAKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggc3RydWN0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtOTU5NiwzMiArMTA5NzksMTQgQEAKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05NjMyLDExICsxMDk5NywzMSBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC05Njk0LDcgKzExMDc5LDExOSBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCBzdHJ1Y3QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzoga2VybmVsX3N1bm9zNS5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTk3MDMsMzIgKzExMjAwLDE0IEBACiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05NzM5LDExICsxMTIxOCwzMSBAQAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTk3OTYsOCArMTEyOTUsOCBAQAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHNtdXguaCB1dGlsX2Z1bmNzLmgKLS4vc211eC9zbXV4LmxvOiBzdHJ1Y3QuaCBtaWJkZWZzLmggLi4vLi4vYWdlbnQvc25tcGQuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc211eC5oIG1pYmRlZnMuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2FnZW50L3NubXBkLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtOTgwNiwzMiArMTEzMDUsMTQgQEAKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05ODQyLDExICsxMTMyMywzMSBAQAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC05OTA5LDMyICsxMTQxMCwxNCBAQAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05OTQ1LDExICsxMTQyOCwzMSBAQAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTAwMTIsMzIgKzExNTE1LDE0IEBACiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwMDQ4LDExICsxMTUzMywzMSBAQAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTAxMTUsMzIgKzExNjIwLDE0IEBACiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwMTUxLDExICsxMTYzOCwzMSBAQAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTAyMDgsOCArMTE3MTUsMTE4IEBACiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IHN0cnVjdC5oIG1pYklJL3N5c09SVGFibGUuaCAuL3NubXB2My9zbm1wRW5naW5lLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmggLi9zbm1wdjMvc25tcEVuZ2luZS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMDIxOCwzMiArMTE4MzUsMTQgQEAKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDI1NCwxMSArMTE4NTMsMzEgQEAKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTAzMTIsOCArMTE5MzEsOSBAQAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IG1pYklJL3N5c09SVGFibGUuaCAuL3NubXB2My9zbm1wTVBEU3RhdHMuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiB1dGlsX2Z1bmNzLmggc3RydWN0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuL3NubXB2My9zbm1wTVBEU3RhdHMuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTAzMjIsMzIgKzExOTQyLDE0IEBACiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwMzU4LDExICsxMTk2MCwzMSBAQAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTA0MTYsNiArMTIwMzgsMTE0IEBACiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi9zbm1wdjMvdXNtU3RhdHNfNV81LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTA0MjQsMzIgKzEyMTU0LDE0IEBACiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDQ2MCwxMSArMTIxNzIsMzEgQEAKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMDUxNyw4ICsxMjI0OSwxMCBAQAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IHN0cnVjdC5oIG1pYklJL3N5c09SVGFibGUuaCAuL3NubXB2My91c21TdGF0cy5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3NubXB2My91c21TdGF0cy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEwNTI3LDMyICsxMjI2MSwxNCBAQAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDU2MywxMSArMTIyNzksMzEgQEAKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEwNjIwLDggKzEyMzU2LDggQEAKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi9zbm1wdjMvdXNtVXNlci5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3NubXB2My91c21Vc2VyLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmggLi9zbm1wdjMvdXNtVXNlci5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEwNjMwLDMyICsxMjM2NiwxNCBAQAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDY2NiwxMSArMTIzODQsMzEgQEAKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEwNzI0LDggKzEyNDYyLDggQEAKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oIHV0aWxfZnVuY3MuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogc3RydWN0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEwNzM0LDMyICsxMjQ3MiwxNCBAQAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwNzcwLDExICsxMjQ5MCwzMSBAQAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMDgzNywzMiArMTI1NzcsMTQgQEAKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDg3MywxMSArMTI1OTUsMzEgQEAKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTA5MzMsNiArMTI2NzUsMTEyIEBACiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oIHRhcmdldC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEwOTQxLDMyICsxMjc4OSwxNCBAQAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwOTc3LDExICsxMjgwNywzMSBAQAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMTA0NCwzMiArMTI4OTQsMTQgQEAKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMTA4MCwxMSArMTI5MTIsMzEgQEAKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTExMzcsOCArMTI5ODksMTAgQEAKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oIHN0cnVjdC5oCi0uL3R1bm5lbC90dW5uZWwubG86IHR1bm5lbC5oIGlmLW1pYi9pZlRhYmxlL2lmVGFibGUuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmggdHVubmVsLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaAogLi90dW5uZWwvdHVubmVsLmxvOiBpZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5oCkBAIC0xMTE1MywzMiArMTMwMDcsMTQgQEAKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMTE4OSwxMSArMTMwMjUsMzEgQEAKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTEyNDgsOCArMTMxMDQsOCBAQAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCBzdHJ1Y3QuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuL3VjZC1zbm1wL2Rpc2suaCBtaWJkZWZzLmggdXRpbF9mdW5jcy5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4vdWNkLXNubXAvZXJyb3JtaWIuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuL3VjZC1zbm1wL2Rpc2suaCBtaWJkZWZzLmgKKy4vdWNkLXNubXAvZGlzay5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggLi91Y2Qtc25tcC9lcnJvcm1pYi5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTExMjU4LDMyICsxMzExNCwxNCBAQAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTEyOTQsMTEgKzEzMTMyLDMxIEBACiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTEzNTEsOCArMTMyMDksOCBAQAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IHN0cnVjdC5oIC4vdWNkLXNubXAvZGlza2lvLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggLi91Y2Qtc25tcC9kaXNraW8uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMTM2MSwzMiArMTMyMTksMTQgQEAKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTEzOTcsMTEgKzEzMjM3LDMxIEBACiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMTQ1NSw2ICsxMzMxNSw5IEBACiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc3RydWN0LmggdXRpbF9mdW5jcy5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4vdWNkLXNubXAvZGxtb2QuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtMTE0NjQsMzIgKzEzMzI3LDE0IEBACiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTExNTAwLDExICsxMzM0NSwzMSBAQAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTE1NTksNyArMTM0MjQsOCBAQAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCBzdHJ1Y3QuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi91Y2Qtc25tcC9lcnJvcm1pYi5oIG1pYmRlZnMuaCB1dGlsX2Z1bmNzLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4vdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMTU2OCwzMiArMTM0MzQsMTQgQEAKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMTYwNCwxMSArMTM0NTIsMzEgQEAKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTE2NjUsNyArMTM1MzMsOCBAQAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IHN0cnVjdC5oIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiB1dGlsaXRpZXMvZXhlY3V0ZS5oIHV0aWxfZnVuY3MuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiB1dGlsaXRpZXMvZXhlY3V0ZS5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTExNjc0LDMyICsxMzU0MywxNCBAQAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTExNzEwLDExICsxMzU2MSwzMSBAQAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMTc2OCw3ICsxMzYzOSw4IEBACiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc3RydWN0LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi91Y2Qtc25tcC9maWxlLmggbWliZGVmcy5oIHV0aWxfZnVuY3MuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuL3VjZC1zbm1wL2ZpbGUuaCBtaWJkZWZzLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTE3NzcsMzIgKzEzNjQ5LDE0IEBACiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTE4MTMsMTEgKzEzNjY3LDMxIEBACiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTExODgwLDMyICsxMzc1NCwxNCBAQAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTE5MTYsMTEgKzEzNzcyLDMxIEBACiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTE5NzMsOSArMTM4NDksMTE1IEBACiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogc3RydWN0LmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL3NlbnNvcnMuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IHVjZC1zbm1wL2xtc2Vuc29yc01pYi5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTExOTg0LDMyICsxMzk2NiwxNCBAQAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEyMDIwLDExICsxMzk4NCwzMSBAQAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMjA3OSw4ICsxNDA2Myw4IEBACiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oIHN0cnVjdC5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4vdWNkLXNubXAvbG9hZGF2ZS5oIG1pYmRlZnMuaCB1dGlsX2Z1bmNzLmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vYWdlbnQva2VybmVsLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi91Y2Qtc25tcC9sb2FkYXZlLmggbWliZGVmcy5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIC4uLy4uL2FnZW50L2tlcm5lbC5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEyMDg5LDMyICsxNDA3MywxNCBAQAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMjEyNSwxMSArMTQwOTEsMzEgQEAKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEyMTgzLDcgKzE0MTY5LDExNiBAQAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHN0cnVjdC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiB1dGlsX2Z1bmNzLmggLi91Y2Qtc25tcC9sb2dtYXRjaC5oIG1pYmRlZnMuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi91Y2Qtc25tcC9sb2dtYXRjaC5oIG1pYmRlZnMuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3VjZC1zbm1wL21lbW9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmggbWliZGVmcy5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEyMTkyLDMyICsxNDI4NywxNCBAQAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTIyMjgsMTEgKzE0MzA1LDMxIEBACiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTIyODgsMTExICsxNDM4NSw2IEBACiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5LmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuL3VjZC1zbm1wL21lbW9yeS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvbWVtb3J5LmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4vdWNkLXNubXAvbWVtb3J5X2FpeDQuaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTI0MDEsMzIgKzE0MzkzLDE0IEBACiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEyNDM3LDExICsxNDQxMSwzMSBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTI0OTYsNyArMTQ0OTAsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvbWVtb3J5LmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3VjZC1zbm1wL21lbW9yeS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmggbWliZGVmcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTEyNTA2LDMyICsxNDUwMCwxNCBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTI1NDIsMTEgKzE0NTE4LDMxIEBACiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTI2MDEsNyArMTQ1OTcsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaCAuL3VjZC1zbm1wL21lbW9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIC4vdWNkLXNubXAvbWVtb3J5LmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5oIG1pYmRlZnMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCkBAIC0xMjYxMSwzMiArMTQ2MDcsMTQgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEyNjQ3LDExICsxNDYyNSwzMSBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEyNzA2LDcgKzE0NzA0LDEwIEBACiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvbWVtb3J5LmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggc3RydWN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuL3VjZC1zbm1wL21lbW9yeS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTEyNzE2LDMyICsxNDcxNywxNCBAQAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMjc1MiwxMSArMTQ3MzUsMzEgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEyODIxLDMyICsxNDgyNCwxNCBAQAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMjg1NywxMSArMTQ4NDIsMzEgQEAKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEyOTE2LDcgKzE0OTIxLDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaCAuL3VjZC1zbm1wL21lbW9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmggLi91Y2Qtc25tcC9tZW1vcnkuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5oIG1pYmRlZnMuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCkBAIC0xMjkyNiwzMiArMTQ5MzEsMTQgQEAKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEyOTYyLDExICsxNDk0OSwzMSBAQAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEzMDIxLDcgKzE1MDI4LDggQEAKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzLmggc3RydWN0LmggLi91Y2Qtc25tcC9tZW1vcnkuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4vdWNkLXNubXAvbWVtb3J5LmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5oIG1pYmRlZnMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTEzMDMxLDMyICsxNTAzOSwxNCBAQAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEzMDY3LDExICsxNTA1NywzMSBAQAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMzEyNyw2ICsxNTEzNyw5IEBACiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc3RydWN0LmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi91Y2Qtc25tcC9wYXNzLmggbWliZGVmcy5oIC4vdWNkLXNubXAvcGFzc19jb21tb24uaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuL3VjZC1zbm1wL2V4dGVuc2libGUuaCB1dGlsX2Z1bmNzLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL3Bhc3MubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMzEzNSwzMiArMTUxNDgsMTQgQEAKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTMxNzEsMTEgKzE1MTY2LDMxIEBACiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMzIyOSw3ICsxNTI0NCwxMCBAQAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmggc3RydWN0LmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCBzdHJ1Y3QuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtMTMyMzksMzIgKzE1MjU3LDE0IEBACiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMzI3NSwxMSArMTUyNzUsMzEgQEAKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMzMzNSw3ICsxNTM1NSw5IEBACiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBzdHJ1Y3QuaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmggbWliZGVmcy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5oIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogdXRpbF9mdW5jcy5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEzMzQ0LDMyICsxNTM2NiwxNCBAQAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEzMzgwLDExICsxNTM4NCwzMSBAQAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMzQzOSw3ICsxNTQ2Myw5IEBACiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHN0cnVjdC5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4vdWNkLXNubXAvcHJvYy5oIG1pYmRlZnMuaCAuL3VjZC1zbm1wL2Vycm9ybWliLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogdXRpbF9mdW5jcy5oIC4uLy4uL2FnZW50L2tlcm5lbC5oCisuL3VjZC1zbm1wL3Byb2MubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIC4uLy4uL2FnZW50L2tlcm5lbC5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEzNDQ4LDMyICsxNTQ3NCwxNCBAQAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMzQ4NCwxMSArMTU0OTIsMzEgQEAKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEzNTUwLDMyICsxNTU3OCwxNCBAQAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMzU4NiwxMSArMTU1OTYsMzEgQEAKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEzNjQ1LDYgKzE1Njc1LDIyMiBAQAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHN0cnVjdC5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmggbWliZGVmcy5oIHV0aWxfZnVuY3MuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIG1pYmRlZnMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIC4vdWNkLXNubXAvdm1zdGF0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4vdWNkLXNubXAvdm1zdGF0X2FpeDQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmggLi91Y2Qtc25tcC92bXN0YXQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IG1pYmRlZnMuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMzY1MywzMiArMTU4OTksMTQgQEAKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEzNjg5LDExICsxNTkxNywzMSBAQAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEzNzUwLDIxNSArMTU5OTgsNiBAQAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4vdWNkLXNubXAvdm1zdGF0LmggbWliZGVmcy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvdm1zdGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4vdWNkLXNubXAvdm1zdGF0X2FpeDQuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvdm1zdGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiBtaWJkZWZzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTM5NjcsMzIgKzE2MDA2LDE0IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0MDAzLDExICsxNjAyNCwzMSBAQAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTQwNjIsNyArMTYxMDMsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvdm1zdGF0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3VjZC1zbm1wL3Ztc3RhdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiBtaWJkZWZzLmggLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTE0MDcyLDMyICsxNjExMywxNCBAQAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTQxMDgsMTEgKzE2MTMxLDMxIEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTQxNjYsNyArMTYyMDksNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaCAuL3VjZC1zbm1wL3Ztc3RhdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIC4vdWNkLXNubXAvdm1zdGF0LmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTE0MTc2LDMyICsxNjIxOSwxNCBAQAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTQyMTIsMTEgKzE2MjM3LDMxIEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTQyNzEsOCArMTYzMTYsOSBAQAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaCAuL3VjZC1zbm1wL3Ztc3RhdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogbWliZGVmcy5oIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuL3VjZC1zbm1wL3Ztc3RhdC5oIG1pYmRlZnMuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTQyODEsMzIgKzE2MzI3LDE0IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0MzE3LDExICsxNjM0NSwzMSBAQAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTQzNzUsNyArMTY0MjMsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvdm1zdGF0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3VjZC1zbm1wL3Ztc3RhdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtMTQzODUsMzIgKzE2NDMzLDE0IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNDQyMSwxMSArMTY0NTEsMzEgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNDQ4MSw3ICsxNjUzMSw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IG1pYmRlZnMuaCBzdHJ1Y3QuaCB1dGlsX2Z1bmNzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiBtaWJkZWZzLmggc3RydWN0LmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi91Y2Qtc25tcC92bXN0YXQuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtMTQ0OTEsMzIgKzE2NTQxLDE0IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0NTI3LDExICsxNjU1OSwzMSBAQAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTQ1ODYsNyArMTY2MzgsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvdm1zdGF0LmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3VjZC1zbm1wL3Ztc3RhdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiBtaWJkZWZzLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtMTQ1OTYsMzIgKzE2NjQ4LDE0IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNDYzMiwxMSArMTY2NjYsMzEgQEAKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNDY5MCw4ICsxNjc0NCwyNTUgQEAKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBtaWJkZWZzLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzLmggc3RydWN0LmggLi91Y2Qtc25tcC92bXN0YXQuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4vdWNkLXNubXAvdm1zdGF0LmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTE0NzAwLDMyICsxNzAwMSwxNCBAQAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNDczNiwxMSArMTcwMTksMzEgQEAKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE0Nzk0LDcgKzE3MDk3LDEwIEBACiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IHVjZC1zbm1wL2Vycm9ybWliLmggbWliZGVmcy5oIHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmggdXRpbF9mdW5jcy5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHN0cnVjdC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4vdXRpbGl0aWVzL2V4ZWN1dGUuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTE0ODA0LDMyICsxNzExMCwxNCBAQAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0ODQwLDExICsxNzEyOCwzMSBAQAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNDkwNiwzMiArMTcyMTQsMTQgQEAKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0OTQyLDExICsxNzIzMiwzMSBAQAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE0OTk5LDUgKzE3MzA5LDEwOSBAQAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IHN0cnVjdC5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmgKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24uaCBiL2FnZW50L21pYmdyb3VwL1Jtb24uaAppbmRleCA4NDdlYWE5Li4zYTdkM2E0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi5oCkBAIC00Nyw3ICs0Nyw5IEBACiBjb25maWdfcmVxdWlyZShSbW9uL3Jvd3MpCiBjb25maWdfcmVxdWlyZShSbW9uL2FndXRpbCkKIGNvbmZpZ19yZXF1aXJlKFJtb24vc3RhdGlzdGljcykKLWNvbmZpZ19yZXF1aXJlKFJtb24vYWxhcm0pCisvKiBvbGRlciBpbXBsZW1lbnRhdGlvbjogKi8KKy8qIGNvbmZpZ19yZXF1aXJlKFJtb24vYWxhcm0pICovCitjb25maWdfcmVxdWlyZShSbW9uL2FsYXJtVGFibGUpCiBjb25maWdfcmVxdWlyZShSbW9uL2hpc3RvcnkpCiBjb25maWdfcmVxdWlyZShSbW9uL2V2ZW50KQogY29uZmlnX2FkZF9taWIoUk1PTi1NSUIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9SbW9uL2FndXRpbC5jIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9hZ3V0aWwuYwppbmRleCAzYjBjODdhLi4yNmJhMTczIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2FndXRpbC5jCisrKyBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWd1dGlsLmMKQEAgLTIyLDggKzIyLDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KICNpbmNsdWRlICJhZ3V0aWwuaCIKICNpbmNsdWRlICJhZ3V0aWxfYXBpLmgiCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uYyBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uYwppbmRleCBhMDRkNDE1Li5hYWM1YjQyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybS5jCkBAIC00Myw3ICs0Myw2IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgImFsYXJtLmgiCiAgICAgLyoKICAgICAgKiBJbXBsZW1lbnRhdGlvbiBoZWFkZXJzIApAQCAtNjg0LDIzICs2ODMsMzAgQEAKIG9pZCAgICAgICAgICAgICBvaWRhbGFybVZhcmlhYmxlc09pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxNiwgMyB9OwogCiBzdHJ1Y3QgdmFyaWFibGU3IG9pZGFsYXJtVmFyaWFibGVzW10gPSB7Ci0gICAge0lEYWxhcm1JbmRleCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDF9fSwKLSAgICB7SURhbGFybUludGVydmFsLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDJ9fSwKLSAgICB7SURhbGFybVZhcmlhYmxlLCBBU05fT0JKRUNUX0lELCBSV1JJVEUsIHZhcl9hbGFybUVudHJ5LCAzLCB7MSwgMSwgM319LAotICAgIHtJRGFsYXJtU2FtcGxlVHlwZSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCA0fX0sCi0gICAge0lEYWxhcm1WYWx1ZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDV9fSwKLSAgICB7SURhbGFybVN0YXJ0dXBBbGFybSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2FsYXJtRW50cnksIDMsCi0gICAgIHsxLCAxLCA2fX0sCi0gICAge0lEYWxhcm1SaXNpbmdUaHJlc2hvbGQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9hbGFybUVudHJ5LCAzLAotICAgICB7MSwgMSwgN319LAotICAgIHtJRGFsYXJtRmFsbGluZ1RocmVzaG9sZCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2FsYXJtRW50cnksIDMsCi0gICAgIHsxLCAxLCA4fX0sCi0gICAge0lEYWxhcm1SaXNpbmdFdmVudEluZGV4LCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfYWxhcm1FbnRyeSwgMywKLSAgICAgezEsIDEsIDl9fSwKLSAgICB7SURhbGFybUZhbGxpbmdFdmVudEluZGV4LCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfYWxhcm1FbnRyeSwgMywKLSAgICAgezEsIDEsIDEwfX0sCi0gICAge0lEYWxhcm1Pd25lciwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDExfX0sCi0gICAge0lEYWxhcm1TdGF0dXMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9hbGFybUVudHJ5LCAzLCB7MSwgMSwgMTJ9fQorICAgIHtJRGFsYXJtSW5kZXgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCAxfX0sCisgICAge0lEYWxhcm1JbnRlcnZhbCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCAyfX0sCisgICAge0lEYWxhcm1WYXJpYWJsZSwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDN9fSwKKyAgICB7SURhbGFybVNhbXBsZVR5cGUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9hbGFybUVudHJ5LCAzLCB7MSwgMSwgNH19LAorICAgIHtJRGFsYXJtVmFsdWUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCA1fX0sCisgICAge0lEYWxhcm1TdGFydHVwQWxhcm0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9hbGFybUVudHJ5LCAzLCB7MSwgMSwgNn19LAorICAgIHtJRGFsYXJtUmlzaW5nVGhyZXNob2xkLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDd9fSwKKyAgICB7SURhbGFybUZhbGxpbmdUaHJlc2hvbGQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9hbGFybUVudHJ5LCAzLCB7MSwgMSwgOH19LAorICAgIHtJRGFsYXJtUmlzaW5nRXZlbnRJbmRleCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCA5fX0sCisgICAge0lEYWxhcm1GYWxsaW5nRXZlbnRJbmRleCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCAxMH19LAorICAgIHtJRGFsYXJtT3duZXIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCAxMX19LAorICAgIHtJRGFsYXJtU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDEyfX0KIH07CiAKIHZvaWQKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uaCBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uaAppbmRleCBhZTQ4YzJkLi4wNWYyMTUyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybS5oCkBAIC0yMSw4ICsyMSw2IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9BTEFSTV9ICiAjZGVmaW5lIF9NSUJHUk9VUF9BTEFSTV9ICiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCi0KICAgICAvKgogICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMgCiAgICAgICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YzJhZWEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYwpAQCAtMCwwICsxLDgzMSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgRWRpdGlvbiBIaXN0b3J5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICMgICBEYXRlICAgICBDb21tZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSAgfAorfCAtLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tIHwKK3wgICAxIDA3LzA1LzE4IENyZWF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaSB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBtaWIyYy50YWJsZV9kYXRhLmNvbmYsdiAxLjExLjIuMSAyMDA2LzAxLzExIDE1OjE3OjQ3IGR0czEyIEV4cCAkCisgKi8KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlICJ1dGlsaXRpZXMvaXF1ZXJ5LmgiCisjaW5jbHVkZSAiYWxhcm1UYWJsZS5oIgorCisvKiogSW5pdGlhbGl6ZXMgdGhlIGFsYXJtVGFibGUgbW9kdWxlICovCit2b2lkCitpbml0X2FsYXJtVGFibGUodm9pZCkKK3sKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nIAorICAgICAqLworICAgIGluaXRpYWxpemVfdGFibGVfYWxhcm1UYWJsZSgpOworfQorCisvKiogSW5pdGlhbGl6ZSB0aGUgYWxhcm1UYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfYWxhcm1UYWJsZSh2b2lkKQoreworICAgIHN0YXRpYyBvaWQgICAgICBhbGFybVRhYmxlX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxNiwgMywgMSB9OworICAgIHNpemVfdCAgICAgICAgICBhbGFybVRhYmxlX29pZF9sZW4gPSBPSURfTEVOR1RIKGFsYXJtVGFibGVfb2lkKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWc7CisgICAgbmV0c25tcF90ZGF0YSAgKnRhYmxlX2RhdGE7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKworICAgIERFQlVHTVNHVEwoKCAicm1vbjphbGFybVRhYmxlIiwgImluaXRpYWxpemVfdGFibGVfYWxhcm1UYWJsZSBjYWxsZWQuXG4iKSk7CisgICAgcmVnID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImFsYXJtVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsYXJtVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisKKyAgICB0YWJsZV9kYXRhID0gbmV0c25tcF90ZGF0YV9jcmVhdGVfdGFibGUoImFsYXJtVGFibGUiLCAwKTsKKyAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgICAvKiBpbmRleDogYWxhcm1JbmRleCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworCisgICAgdGFibGVfaW5mby0+bWluX2NvbHVtbiA9IENPTFVNTl9BTEFSTUlOREVYOworICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fQUxBUk1TVEFUVVM7CisKKyAgICBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKHJlZywgdGFibGVfZGF0YSwgdGFibGVfaW5mbyk7CisKKyAgICAvKgorICAgICAqIEluaXRpYWxpc2UgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YWJsZSBoZXJlIAorICAgICAqLworfQorCitleHRlcm4gaW50CitldmVudF9hcGlfc2VuZF9hbGFybSh1X2NoYXIgaXNfcmlzaW5nLAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGFsYXJtX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV2ZW50X2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgb2lkICogYWxhcm1lZF92YXIsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYWxhcm1lZF92YXJfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHNhbXBsZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHRoZV90aHJlc2hvbGQsIGNoYXIgKmFsYXJtX2Rlc2NyKTsKKworI2RlZmluZSBBTEFSTV9TVFIxX0xFTgkzMgordHlwZWRlZiBlbnVtIHsKKyAgICBSTU9OMV9FTlRSWV9WQUxJRCA9IDEsCisgICAgUk1PTjFfRU5UUllfQ1JFQVRFX1JFUVVFU1QsCisgICAgUk1PTjFfRU5UUllfVU5ERVJfQ1JFQVRJT04sCisgICAgUk1PTjFfRU5UUllfSU5WQUxJRAorfSBSTU9OMV9FTlRSWV9TVEFUVVNfVDsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBTQU1QTEVfVFlQRV9BQlNPTFVURSA9CisgICAgMSwKKyAgICBTQU1QTEVfVFlQRV9ERUxURQorfSBTQU1QTEVfVFlQRV9UOworCit0eXBlZGVmIGVudW0geworICAgIEFMQVJNX05PVEhJTkcgPQorICAgIDAsCisgICAgQUxBUk1fUklTSU5HLAorICAgIEFMQVJNX0ZBTExJTkcsCisgICAgQUxBUk1fQk9USAorfSBBTEFSTV9UWVBFX1Q7CisgICAgLyoKKyAgICAgKiBUeXBpY2FsIGRhdGEgc3RydWN0dXJlIGZvciBhIHJvdyBlbnRyeSAKKyAgICAgKi8KK3N0cnVjdCBhbGFybVRhYmxlX2VudHJ5IHsKKyAgICAvKgorICAgICAqIEluZGV4IHZhbHVlcyAKKyAgICAgKi8KKyAgICBsb25nICAgICAgICAgICAgYWxhcm1JbmRleDsKKworICAgIC8qCisgICAgICogQ29sdW1uIHZhbHVlcyAKKyAgICAgKi8KKyAgICBsb25nICAgICAgICAgICAgYWxhcm1JbnRlcnZhbDsKKyAgICBsb25nICAgICAgICAgICAgb2xkX2FsYXJtSW50ZXJ2YWw7CisgICAgb2lkICAgICAgICAgICAgIGFsYXJtVmFyaWFibGVbQUxBUk1fU1RSMV9MRU5dOworICAgIHNpemVfdCAgICAgICAgICBhbGFybVZhcmlhYmxlX2xlbjsKKyAgICBvaWQgICAgICAgICAgICAgb2xkX2FsYXJtVmFyaWFibGVbQUxBUk1fU1RSMV9MRU5dOworICAgIHNpemVfdCAgICAgICAgICBvbGRfYWxhcm1WYXJpYWJsZV9sZW47CisgICAgbG9uZyAgICAgICAgICAgIGFsYXJtU2FtcGxlVHlwZTsKKyAgICBsb25nICAgICAgICAgICAgb2xkX2FsYXJtU2FtcGxlVHlwZTsKKyAgICBsb25nICAgICAgICAgICAgYWxhcm1WYWx1ZTsKKyAgICBsb25nICAgICAgICAgICAgYWxhcm1TdGFydHVwQWxhcm07CisgICAgbG9uZyAgICAgICAgICAgIG9sZF9hbGFybVN0YXJ0dXBBbGFybTsKKyAgICBsb25nICAgICAgICAgICAgYWxhcm1SaXNpbmdUaHJlc2hvbGQ7CisgICAgbG9uZyAgICAgICAgICAgIG9sZF9hbGFybVJpc2luZ1RocmVzaG9sZDsKKyAgICBsb25nICAgICAgICAgICAgYWxhcm1GYWxsaW5nVGhyZXNob2xkOworICAgIGxvbmcgICAgICAgICAgICBvbGRfYWxhcm1GYWxsaW5nVGhyZXNob2xkOworICAgIGxvbmcgICAgICAgICAgICBhbGFybVJpc2luZ0V2ZW50SW5kZXg7CisgICAgbG9uZyAgICAgICAgICAgIG9sZF9hbGFybVJpc2luZ0V2ZW50SW5kZXg7CisgICAgbG9uZyAgICAgICAgICAgIGFsYXJtRmFsbGluZ0V2ZW50SW5kZXg7CisgICAgbG9uZyAgICAgICAgICAgIG9sZF9hbGFybUZhbGxpbmdFdmVudEluZGV4OworICAgIGNoYXIgICAgICAgICAgICBhbGFybU93bmVyW0FMQVJNX1NUUjFfTEVOXTsKKyAgICBzaXplX3QgICAgICAgICAgYWxhcm1Pd25lcl9sZW47CisgICAgY2hhciAgICAgICAgICAgIG9sZF9hbGFybU93bmVyW0FMQVJNX1NUUjFfTEVOXTsKKyAgICBzaXplX3QgICAgICAgICAgb2xkX2FsYXJtT3duZXJfbGVuOworICAgIGxvbmcgICAgICAgICAgICBhbGFybVN0YXR1czsKKyAgICBsb25nICAgICAgICAgICAgb2xkX2FsYXJtU3RhdHVzOworCisgICAgaW50ICAgICAgICAgICAgIHZhbGlkOworICAgIHVuc2lnbmVkIGludCAgICBhbGFybV9yZWc7CisgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOworICAgIHVfbG9uZyAgICAgICAgICBsYXN0X2Fic192YWx1ZTsKKyAgICBBTEFSTV9UWVBFX1QgICAgcHJldl9hbGFybTsgICAgICAgIC8qIE5PVEhJTkcgfCBSSVNJTkcgfCBGQUxMSU5HICovCit9OworCisKK3ZvaWQKK2FsYXJtVGFibGVfcnVuKCB1bnNpZ25lZCBpbnQgcmVnLCB2b2lkICpjbGllbnRhcmcpCit7CisgICAgc3RydWN0IGFsYXJtVGFibGVfZW50cnkgKmVudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopY2xpZW50YXJnOworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyOworICAgIHVfbG9uZyBuZXdfdmFsdWU7CisgICAgaW50IHJjOworCisgICAgaWYgKCFlbnRyeSkgeworICAgICAgICBzbm1wX2FsYXJtX3VucmVnaXN0ZXIoIHJlZyApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8qCisgICAgICogUmV0cmlldmUgdGhlIHJlcXVlc3RlZCBNSUIgdmFsdWUocykuLi4KKyAgICAgKi8KKyAgICBERUJVR01TR1RMKCggInJtb246YWxhcm1UYWJsZSIsICJhbGFybVRhYmxlX3J1biBjYWxsZWRcbiIpKTsKKyAgICB2YXIgPSAobmV0c25tcF92YXJpYWJsZV9saXN0ICopU05NUF9NQUxMT0NfVFlQRURFRiggbmV0c25tcF92YXJpYWJsZV9saXN0ICk7CisgICAgaWYgKCF2YXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZmFpbGVkIHRvIGNyZWF0ZSBhbGFybVRhYmxlIHF1ZXJ5IHZhcmJpbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzbm1wX3NldF92YXJfb2JqaWQoIHZhciwgZW50cnktPmFsYXJtVmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVZhcmlhYmxlX2xlbiApOworICAgIAorICAgIHJjID0gbmV0c25tcF9xdWVyeV9nZXQoICB2YXIsIGVudHJ5LT5zZXNzaW9uICk7CisgICAgaWYgKCByYyAhPSBTTk1QX0VSUl9OT0VSUk9SICkgeworICAgICAgICBERUJVR01TR1RMKCggInJtb246YWxhcm1UYWJsZSIsICJhbGFybVZhcmlhYmxlIHF1ZXJ5IGZhaWxlZCAoJWQpXG4iLCByYykpOworICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisJc3dpdGNoICh2YXItPnR5cGUpIHsKKyAgICBjYXNlIEFTTl9JTlRFR0VSOgorICAgIGNhc2UgQVNOX0NPVU5URVI6CisgICAgY2FzZSBBU05fVElNRVRJQ0tTOgorICAgIGNhc2UgQVNOX0dBVUdFOgorICAgIGNhc2UgQVNOX0NPVU5URVI2NDoKKyAgICAgICAgbmV3X3ZhbHVlID0gKnZhci0+dmFsLmludGVnZXI7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIERFQlVHTVNHVEwoKCJybW9uOmFsYXJtVGFibGUiLCAiaW52YWxpZCB0eXBlICglZClcbiIsIHZhci0+dHlwZSkpOworICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXIpOworICAgICAgICByZXR1cm4gOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1JbmRleC4lZCBsYXN0IHZhbHVlICglZClcbiIsIGVudHJ5LT5hbGFybUluZGV4LCBlbnRyeS0+bGFzdF9hYnNfdmFsdWUpKTsKKyAgICBERUJVR01TR1RMKCgicm1vbjphbGFybVRhYmxlIiwgImFsYXJtSW5kZXguJWQgbmV3X3ZhbHVlICglZClcbiIsIGVudHJ5LT5hbGFybUluZGV4LCBuZXdfdmFsdWUpKTsKKworICAgIGVudHJ5LT5hbGFybVZhbHVlID0gKFNBTVBMRV9UWVBFX0FCU09MVVRFID09IGVudHJ5LT5hbGFybVNhbXBsZVR5cGUpID8KKyAgICAgICAgbmV3X3ZhbHVlIDogbmV3X3ZhbHVlIC0gZW50cnktPmxhc3RfYWJzX3ZhbHVlOworICAgIGVudHJ5LT5sYXN0X2Fic192YWx1ZSA9IG5ld192YWx1ZTsKKworICAgIGlmIChBTEFSTV9SSVNJTkcgIT0gZW50cnktPnByZXZfYWxhcm0gJiYKKyAgICAgICAgZW50cnktPmFsYXJtVmFsdWUgPj0gZW50cnktPmFsYXJtUmlzaW5nVGhyZXNob2xkKSB7CisgICAgICAgIGlmIChTTk1QX0VSUl9OT0VSUk9SID09IGV2ZW50X2FwaV9zZW5kX2FsYXJtKDEsIGVudHJ5LT5hbGFybUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVJpc2luZ0V2ZW50SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFsYXJtVmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFsYXJtVmFyaWFibGVfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVNhbXBsZVR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVJpc2luZ1RocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmlzaW5nIikpCisgICAgICAgICAgICBlbnRyeS0+cHJldl9hbGFybSA9IEFMQVJNX1JJU0lORzsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImZhaWxlZCB0byBzZW5kIHJpc2luZyBhbGFybVxuIik7CisgICAgfQorICAgIGVsc2UgaWYgKEFMQVJNX0ZBTExJTkcgIT0gZW50cnktPnByZXZfYWxhcm0gJiYKKyAgICAgICAgICAgICBlbnRyeS0+YWxhcm1WYWx1ZSA8PSBlbnRyeS0+YWxhcm1GYWxsaW5nVGhyZXNob2xkKSB7CisgICAgICAgIGlmIChTTk1QX0VSUl9OT0VSUk9SID09IGV2ZW50X2FwaV9zZW5kX2FsYXJtKDAsIGVudHJ5LT5hbGFybUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFsYXJtRmFsbGluZ0V2ZW50SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+YWxhcm1WYXJpYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVZhcmlhYmxlX2xlbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+YWxhcm1TYW1wbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFsYXJtVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+YWxhcm1GYWxsaW5nVGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhbGxpbmciKSkKKyAgICAgICAgICAgIGVudHJ5LT5wcmV2X2FsYXJtID0gQUxBUk1fRkFMTElORzsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImZhaWxlZCB0byBzZW5kIGZhbGxpbmcgYWxhcm1cbiIpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIERFQlVHTVNHVEwoKCJybW9uOmFsYXJtVGFibGUiLCAibm8gYWxhcm0gc2VudFxuIikpOworCisgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFyKTsKK30KKwordm9pZAorYWxhcm1UYWJsZV9lbmFibGUoIHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICplbnRyeSApCit7CisgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgREVCVUdNU0dUTCgoICJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1UYWJsZV9lbmFibGUgY2FsbGVkLlxuIikpOworICAgIGlmIChlbnRyeS0+YWxhcm1fcmVnKSB7CisgICAgICAgIHNubXBfYWxhcm1fdW5yZWdpc3RlciggZW50cnktPmFsYXJtX3JlZyApOworICAgICAgICBlbnRyeS0+YWxhcm1fcmVnID0gMDsKKyAgICB9CisKKyAgICBpZiAoZW50cnktPmFsYXJtSW50ZXJ2YWwpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogcmVnaXN0ZXIgb25jZSB0byBydW4gQVNBUCwgYW5kIGFub3RoZXIgdG8gcnVuCisgICAgICAgICAqIGF0IHRoZSB0cmlnZ2VyIGZyZXF1ZW5jeQorICAgICAgICAgKi8KKyAgICAgICAgc25tcF9hbGFybV9yZWdpc3RlcigwLCAwLCBhbGFybVRhYmxlX3J1biwgZW50cnkgKTsKKyAgICAgICAgZW50cnktPmFsYXJtX3JlZyA9IHNubXBfYWxhcm1fcmVnaXN0ZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+YWxhcm1JbnRlcnZhbCwgU0FfUkVQRUFULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9ydW4sIGVudHJ5ICk7CisgICAgfQorfQorCit2b2lkCithbGFybVRhYmxlX2Rpc2FibGUoIHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICplbnRyeSApCit7CisgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgREVCVUdNU0dUTCgoICJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1UYWJsZV9kaXNhYmxlIGNhbGxlZC5cbiIpKTsKKyAgICBpZiAoZW50cnktPmFsYXJtX3JlZykgeworICAgICAgICBzbm1wX2FsYXJtX3VucmVnaXN0ZXIoIGVudHJ5LT5hbGFybV9yZWcgKTsKKyAgICAgICAgZW50cnktPmFsYXJtX3JlZyA9IDA7CisgICAgICAgIC8qIFhYWCAtIHBlcmhhcHMgcmVsZWFzZSBhbnkgcHJldmlvdXMgcmVzdWx0cyAqLworICAgIH0KK30KKworLyoKKyAqIGNyZWF0ZSBhIG5ldyByb3cgaW4gdGhlIHRhYmxlIAorICovCituZXRzbm1wX3RkYXRhX3JvdyAqCithbGFybVRhYmxlX2NyZWF0ZUVudHJ5KG5ldHNubXBfdGRhdGEgKiB0YWJsZV9kYXRhLCBsb25nIGFsYXJtSW5kZXgpCit7CisgICAgc3RydWN0IGFsYXJtVGFibGVfZW50cnkgKmVudHJ5OworICAgIG5ldHNubXBfdGRhdGFfcm93ICpyb3c7CisKKyAgICBERUJVR01TR1RMKCggInJtb246YWxhcm1UYWJsZSIsICJhbGFybVRhYmxlX2NyZWF0ZUVudHJ5IGNhbGxlZC5cbiIpKTsKKyAgICBlbnRyeSA9IFNOTVBfTUFMTE9DX1RZUEVERUYoc3RydWN0IGFsYXJtVGFibGVfZW50cnkpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcm93ID0gbmV0c25tcF90ZGF0YV9jcmVhdGVfcm93KCk7CisgICAgaWYgKCFyb3cpIHsKKyAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJvdy0+ZGF0YSA9IGVudHJ5OworICAgIGVudHJ5LT5hbGFybUluZGV4ID0gYWxhcm1JbmRleDsKKyAgICBlbnRyeS0+YWxhcm1JbnRlcnZhbCA9IDE7CisgICAgZW50cnktPmFsYXJtU2FtcGxlVHlwZSA9IFNBTVBMRV9UWVBFX0FCU09MVVRFOworICAgIGVudHJ5LT5hbGFybVN0YXJ0dXBBbGFybSA9IEFMQVJNX0JPVEg7CisgICAgZW50cnktPmFsYXJtUmlzaW5nVGhyZXNob2xkID0gMTA7CisgICAgZW50cnktPmFsYXJtRmFsbGluZ1RocmVzaG9sZCA9IDU7CisgICAgZW50cnktPmFsYXJtUmlzaW5nRXZlbnRJbmRleCA9IGFsYXJtSW5kZXg7CisgICAgZW50cnktPmFsYXJtRmFsbGluZ0V2ZW50SW5kZXggPSBhbGFybUluZGV4OworICAgIGVudHJ5LT5wcmV2X2FsYXJtID0gQUxBUk1fTk9USElORzsKKyAgICBuZXRzbm1wX3RkYXRhX3Jvd19hZGRfaW5kZXgocm93LCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihlbnRyeS0+YWxhcm1JbmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+YWxhcm1JbmRleCkpOworICAgIG5ldHNubXBfdGRhdGFfYWRkX3Jvdyh0YWJsZV9kYXRhLCByb3cpOworICAgIHJldHVybiByb3c7Cit9CisKKy8qCisgKiByZW1vdmUgYSByb3cgZnJvbSB0aGUgdGFibGUgCisgKi8KK3ZvaWQKK2FsYXJtVGFibGVfcmVtb3ZlRW50cnkobmV0c25tcF90ZGF0YSAqIHRhYmxlX2RhdGEsIG5ldHNubXBfdGRhdGFfcm93ICogcm93KQoreworICAgIHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICplbnRyeTsKKworICAgIERFQlVHTVNHVEwoKCAicm1vbjphbGFybVRhYmxlIiwgImFsYXJtVGFibGVfcmVtb3ZlRW50cnkgY2FsbGVkLlxuIikpOworICAgIGlmICghcm93KQorICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAvKiBOb3RoaW5nIHRvIHJlbW92ZSAqLworICAgIGVudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgIG5ldHNubXBfdGRhdGFfcmVtb3ZlX2FuZF9kZWxldGVfcm93KHRhYmxlX2RhdGEsIHJvdyk7CisgICAgaWYgKGVudHJ5KSB7CisgICAgICAgIGFsYXJtVGFibGVfZGlzYWJsZShlbnRyeSk7CisgICAgICAgIFNOTVBfRlJFRShlbnRyeSk7ICAgICAgIC8qIFhYWCAtIHJlbGVhc2UgYW55IG90aGVyIGludGVybmFsIHJlc291cmNlcyAqLworICAgIH0KK30KKworCisvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIGFsYXJtVGFibGUgdGFibGUgKi8KK2ludAorYWxhcm1UYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3Q7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87CisgICAgbmV0c25tcF90ZGF0YSAgKnRhYmxlX2RhdGE7CisgICAgbmV0c25tcF90ZGF0YV9yb3cgKnRhYmxlX3JvdzsKKyAgICBzdHJ1Y3QgYWxhcm1UYWJsZV9lbnRyeSAqdGFibGVfZW50cnk7CisgICAgaW50ICAgICAgICAgICAgIHJldDsKKyAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3MgPSBOVUxMOworICAgIGNoYXIgICAgICAgICAgICpzZWNOYW1lOworCisgICAgREVCVUdNU0dUTCgoICJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1UYWJsZV9oYW5kbGVyIGNhbGxlZC5cbiIpKTsKKyAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogUmVhZC1zdXBwb3J0IChhbHNvIGNvdmVycyBHZXROZXh0IHJlcXVlc3RzKQorICAgICAgICAgKi8KKyAgICBjYXNlIE1PREVfR0VUOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1JTkRFWDoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybUluZGV4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNSU5URVJWQUw6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1JbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVZBUklBQkxFOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQkpFQ1RfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgdGFibGVfZW50cnktPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybVZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1WYXJpYWJsZV9sZW4gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yob2lkKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNBTVBMRVRZUEU6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1TYW1wbGVUeXBlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNVkFMVUU6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1WYWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVJUVVBBTEFSTToKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVN0YXJ0dXBBbGFybSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybVJpc2luZ1RocmVzaG9sZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTUZBTExJTkdUSFJFU0hPTEQ6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxhcm1GYWxsaW5nVGhyZXNob2xkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybVJpc2luZ0V2ZW50SW5kZXgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybUZhbGxpbmdFdmVudEluZGV4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNT1dORVI6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSB0YWJsZV9lbnRyeS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsYXJtT3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybU93bmVyX2xlbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVRVUzoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVN0YXR1cyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogV3JpdGUtc3VwcG9ydAorICAgICAgICAgKi8KKyAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1JTlRFUlZBTDoKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIG9yIHBvc3NpYmx5ICduZXRzbm1wX2NoZWNrX3ZiX2ludF9yYW5nZScgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcmV0ID0gbmV0c25tcF9jaGVja192Yl9pbnQocmVxdWVzdC0+cmVxdWVzdHZiKTsKKyAgICAgICAgICAgICAgICBpZiAocmV0ICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCByZXQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVZBUklBQkxFOgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUnIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TQU1QTEVUWVBFOgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfaW50X3JhbmdlJyAKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX2ludChyZXF1ZXN0LT5yZXF1ZXN0dmIpOworICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsIHJldCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNU1RBUlRVUEFMQVJNOgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfaW50X3JhbmdlJyAKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX2ludChyZXF1ZXN0LT5yZXF1ZXN0dmIpOworICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsIHJldCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfaW50X3JhbmdlJyAKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX2ludChyZXF1ZXN0LT5yZXF1ZXN0dmIpOworICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsIHJldCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIG9yIHBvc3NpYmx5ICduZXRzbm1wX2NoZWNrX3ZiX2ludF9yYW5nZScgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcmV0ID0gbmV0c25tcF9jaGVja192Yl9pbnQocmVxdWVzdC0+cmVxdWVzdHZiKTsKKyAgICAgICAgICAgICAgICBpZiAocmV0ICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCByZXQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR0VWRU5USU5ERVg6CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBvciBwb3NzaWJseSAnbmV0c25tcF9jaGVja192Yl9pbnRfcmFuZ2UnIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHJldCA9IG5ldHNubXBfY2hlY2tfdmJfaW50KHJlcXVlc3QtPnJlcXVlc3R2Yik7CisgICAgICAgICAgICAgICAgaWYgKHJldCAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwgcmV0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIG9yIHBvc3NpYmx5ICduZXRzbm1wX2NoZWNrX3ZiX2ludF9yYW5nZScgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcmV0ID0gbmV0c25tcF9jaGVja192Yl9pbnQocmVxdWVzdC0+cmVxdWVzdHZiKTsKKyAgICAgICAgICAgICAgICBpZiAocmV0ICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCByZXQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTU9XTkVSOgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUnIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TVEFUVVM6CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBvciBwb3NzaWJseSAnbmV0c25tcF9jaGVja192Yl9pbnRfcmFuZ2UnIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHJldCA9IG5ldHNubXBfY2hlY2tfdmJfaW50KHJlcXVlc3QtPnJlcXVlc3R2Yik7CisgICAgICAgICAgICAgICAgaWYgKHJldCAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwgcmV0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT1RXUklUQUJMRSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX3JvdyA9IG5ldHNubXBfdGRhdGFfZXh0cmFjdF9yb3cocmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9kYXRhID0gbmV0c25tcF90ZGF0YV9leHRyYWN0X3RhYmxlKHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1JTlRFUlZBTDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNVkFSSUFCTEU6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNBTVBMRVRZUEU6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVJUVVBBTEFSTToKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1SSVNJTkdFVkVOVElOREVYOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNT1dORVI6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVRVUzoKKyAgICAgICAgICAgICAgICBpZiAoIXRhYmxlX3JvdykgeworICAgICAgICAgICAgICAgICAgICB0YWJsZV9yb3cgPQorICAgICAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9jcmVhdGVFbnRyeSh0YWJsZV9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGFibGVfaW5mby0+aW5kZXhlcy0+dmFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlZ2VyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlX3JvdykgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pbnNlcnRfdGRhdGFfcm93KHJlcXVlc3QsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CisgICAgICAgIGZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoc3RydWN0IGFsYXJtVGFibGVfZW50cnkgKikKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3RkYXRhX2V4dHJhY3RfZW50cnkocmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9yb3cgPSBuZXRzbm1wX3RkYXRhX2V4dHJhY3Rfcm93KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZGF0YSA9IG5ldHNubXBfdGRhdGFfZXh0cmFjdF90YWJsZShyZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKworICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNSU5URVJWQUw6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVZBUklBQkxFOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TQU1QTEVUWVBFOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TVEFSVFVQQUxBUk06CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR0VWRU5USU5ERVg6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTU9XTkVSOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TVEFUVVM6CisgICAgICAgICAgICAgICAgaWYgKHRhYmxlX2VudHJ5ICYmICF0YWJsZV9lbnRyeS0+dmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9yZW1vdmVFbnRyeSh0YWJsZV9kYXRhLCB0YWJsZV9yb3cpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1JTlRFUlZBTDoKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtSW50ZXJ2YWwgPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1JbnRlcnZhbDsKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1JbnRlcnZhbCA9CisgICAgICAgICAgICAgICAgICAgICpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1WQVJJQUJMRToKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1WYXJpYWJsZV9sZW4gPQorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbF9sZW4gLyBzaXplb2Yob2lkKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQodGFibGVfZW50cnktPmFsYXJtVmFyaWFibGUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+YWxhcm1WYXJpYWJsZSkpOworICAgICAgICAgICAgICAgIG1lbWNweSh0YWJsZV9lbnRyeS0+YWxhcm1WYXJpYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwub2JqaWQsCisgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsX2xlbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNBTVBMRVRZUEU6CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybVNhbXBsZVR5cGUgPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1TYW1wbGVUeXBlOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVNhbXBsZVR5cGUgPQorICAgICAgICAgICAgICAgICAgICAqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNU1RBUlRVUEFMQVJNOgorICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1TdGFydHVwQWxhcm0gPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1TdGFydHVwQWxhcm07CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtU3RhcnR1cEFsYXJtID0KKyAgICAgICAgICAgICAgICAgICAgKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtUmlzaW5nVGhyZXNob2xkID0KKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtUmlzaW5nVGhyZXNob2xkOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVJpc2luZ1RocmVzaG9sZCA9CisgICAgICAgICAgICAgICAgICAgICpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1GYWxsaW5nVGhyZXNob2xkID0KKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtRmFsbGluZ1RocmVzaG9sZDsKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1GYWxsaW5nVGhyZXNob2xkID0KKyAgICAgICAgICAgICAgICAgICAgKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR0VWRU5USU5ERVg6CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybVJpc2luZ0V2ZW50SW5kZXggPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1SaXNpbmdFdmVudEluZGV4OworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVJpc2luZ0V2ZW50SW5kZXggPQorICAgICAgICAgICAgICAgICAgICAqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR0VWRU5USU5ERVg6CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybUZhbGxpbmdFdmVudEluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtRmFsbGluZ0V2ZW50SW5kZXg7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtRmFsbGluZ0V2ZW50SW5kZXggPQorICAgICAgICAgICAgICAgICAgICAqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNT1dORVI6CisgICAgICAgICAgICAgICAgbWVtY3B5KHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1Pd25lciwKKyAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtT3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+YWxhcm1Pd25lcikpOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1Pd25lcl9sZW4gPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1Pd25lcl9sZW47CisgICAgICAgICAgICAgICAgbWVtc2V0KHRhYmxlX2VudHJ5LT5hbGFybU93bmVyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPmFsYXJtT3duZXIpKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkodGFibGVfZW50cnktPmFsYXJtT3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC0+cmVxdWVzdHZiLT52YWxfbGVuKTsKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1Pd25lcl9sZW4gPSByZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbF9sZW47CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVRVUzoKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtU3RhdHVzID0gdGFibGVfZW50cnktPmFsYXJtU3RhdHVzOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVN0YXR1cyA9CisgICAgICAgICAgICAgICAgICAgICpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfcm93ID0gbmV0c25tcF90ZGF0YV9leHRyYWN0X3JvdyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2RhdGEgPSBuZXRzbm1wX3RkYXRhX2V4dHJhY3RfdGFibGUocmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTUlOVEVSVkFMOgorICAgICAgICAgICAgICAgIGlmICh0YWJsZV9lbnRyeSAmJiAhdGFibGVfZW50cnktPnZhbGlkKSB7CisgICAgICAgICAgICAgICAgICAgIGFsYXJtVGFibGVfcmVtb3ZlRW50cnkodGFibGVfZGF0YSwgdGFibGVfcm93KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1JbnRlcnZhbCA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtSW50ZXJ2YWw7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1JbnRlcnZhbCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1WQVJJQUJMRToKKyAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHRhYmxlX2VudHJ5LT5hbGFybVZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybVZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRhYmxlX2VudHJ5LT5hbGFybVZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIG1lbXNldCh0YWJsZV9lbnRyeS0+b2xkX2FsYXJtVmFyaWFibGUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPmFsYXJtVmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtVmFyaWFibGVfbGVuID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1WYXJpYWJsZV9sZW47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TQU1QTEVUWVBFOgorICAgICAgICAgICAgICAgIGlmICh0YWJsZV9lbnRyeSAmJiAhdGFibGVfZW50cnktPnZhbGlkKSB7CisgICAgICAgICAgICAgICAgICAgIGFsYXJtVGFibGVfcmVtb3ZlRW50cnkodGFibGVfZGF0YSwgdGFibGVfcm93KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1TYW1wbGVUeXBlID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1TYW1wbGVUeXBlOworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtU2FtcGxlVHlwZSA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TVEFSVFVQQUxBUk06CisgICAgICAgICAgICAgICAgaWYgKHRhYmxlX2VudHJ5ICYmICF0YWJsZV9lbnRyeS0+dmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9yZW1vdmVFbnRyeSh0YWJsZV9kYXRhLCB0YWJsZV9yb3cpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVN0YXJ0dXBBbGFybSA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtU3RhcnR1cEFsYXJtOworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtU3RhcnR1cEFsYXJtID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtUmlzaW5nVGhyZXNob2xkID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1SaXNpbmdUaHJlc2hvbGQ7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1SaXNpbmdUaHJlc2hvbGQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtRmFsbGluZ1RocmVzaG9sZCA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtRmFsbGluZ1RocmVzaG9sZDsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybUZhbGxpbmdUaHJlc2hvbGQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtUmlzaW5nRXZlbnRJbmRleCA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtUmlzaW5nRXZlbnRJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybVJpc2luZ0V2ZW50SW5kZXggPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR0VWRU5USU5ERVg6CisgICAgICAgICAgICAgICAgaWYgKHRhYmxlX2VudHJ5ICYmICF0YWJsZV9lbnRyeS0+dmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9yZW1vdmVFbnRyeSh0YWJsZV9kYXRhLCB0YWJsZV9yb3cpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybUZhbGxpbmdFdmVudEluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1GYWxsaW5nRXZlbnRJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybUZhbGxpbmdFdmVudEluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTU9XTkVSOgorICAgICAgICAgICAgICAgIGlmICh0YWJsZV9lbnRyeSAmJiAhdGFibGVfZW50cnktPnZhbGlkKSB7CisgICAgICAgICAgICAgICAgICAgIGFsYXJtVGFibGVfcmVtb3ZlRW50cnkodGFibGVfZGF0YSwgdGFibGVfcm93KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkodGFibGVfZW50cnktPmFsYXJtT3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtT3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPmFsYXJtT3duZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1Pd25lciwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+YWxhcm1Pd25lcikpOworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1Pd25lcl9sZW4gPQorICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybU93bmVyX2xlbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVRVUzoKKyAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtU3RhdHVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1TdGF0dXM7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1TdGF0dXMgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1JTlRFUlZBTDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNVkFSSUFCTEU6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNBTVBMRVRZUEU6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVJUVVBBTEFSTToKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1SSVNJTkdFVkVOVElOREVYOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNT1dORVI6CisgICAgICAgICAgICAgICAgaWYgKHRhYmxlX2VudHJ5ICYmICF0YWJsZV9lbnRyeS0+dmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPnZhbGlkID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVRVUzoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKSB7CisgICAgICAgICAgICAgICAgY2FzZSBSTU9OMV9FTlRSWV9WQUxJRDoKKyAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9lbmFibGUoIHRhYmxlX2VudHJ5ICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUk1PTjFfRU5UUllfVU5ERVJfQ1JFQVRJT046CisgICAgICAgICAgICAgICAgICAgIGFsYXJtVGFibGVfZGlzYWJsZSggdGFibGVfZW50cnkgKTsKKyNpZiAwCisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5zZXNzaW9uID0gKG5ldHNubXBfc2Vzc2lvbiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pcXVlcnlfcGR1X3Nlc3Npb24ocmVxaW5mby0+YXNwLT5wZHUpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgc2VjTmFtZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfU0VDTkFNRSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzZWNOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzICAgPSBuZXRzbm1wX2lxdWVyeV91c2VyX3Nlc3Npb24oc2VjTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3F1ZXJ5X3NldF9kZWZhdWx0X3Nlc3Npb24oc2Vzcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicm1vbjphbGFybVRhYmxlIiwgInVzZXIgbmFtZSAlc1xuIiwgc2VjTmFtZSkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1c2VyIG5hbWUgJXMgbm90IGZvdW5kXG4iLCBzZWNOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIlVua25vd24gdXNlciBuYW1lXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChOVUxMID09IHNlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3MgPSBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChOVUxMID09IHNlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiWW91IG11c3Qgc3BlY2lmeSBhIGRlZmF1bHQgdXNlciBuYW1lIHVzaW5nIHRoZSBhZ2VudFNlY05hbWUgdG9rZW5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBSTU9OMV9FTlRSWV9JTlZBTElEOgorICAgICAgICAgICAgICAgICAgICB0YWJsZV9yb3cgPSBuZXRzbm1wX3RkYXRhX2V4dHJhY3Rfcm93KHJlcXVlc3QpOworICAgICAgICAgICAgICAgICAgICB0YWJsZV9kYXRhID0gbmV0c25tcF90ZGF0YV9leHRyYWN0X3RhYmxlKHJlcXVlc3QpOworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEwNzBiMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEVkaXRpb24gSGlzdG9yeTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAjICAgRGF0ZSAgICAgQ29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnkgIHwKK3wgLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLSB8Cit8ICAgMSAwNy8wNS8xOCBDcmVhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWkgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogbWliMmMudGFibGVfZGF0YS5jb25mLHYgMS4xMS4yLjEgMjAwNi8wMS8xMSAxNToxNzo0NyBkdHMxMiBFeHAgJAorICovCisjaWZuZGVmIEFMQVJNVEFCTEVfSAorI2RlZmluZSBBTEFSTVRBQkxFX0gKKworY29uZmlnX3JlcXVpcmUodXRpbGl0aWVzL2lxdWVyeSkKK2NvbmZpZ19yZXF1aXJlKFJtb24vYWd1dGlsKQorY29uZmlnX3JlcXVpcmUoUm1vbi9yb3dzKQorY29uZmlnX3JlcXVpcmUoUm1vbi9ldmVudCkKKworLyoKKyAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKKyAqLwordm9pZCAgICAgICAgICAgIGluaXRfYWxhcm1UYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2FsYXJtVGFibGUodm9pZCk7CitOZXRzbm1wX05vZGVfSGFuZGxlciBhbGFybVRhYmxlX2hhbmRsZXI7CisKKy8qCisgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBhbGFybVRhYmxlIAorICovCisjZGVmaW5lIENPTFVNTl9BTEFSTUlOREVYCQkxCisjZGVmaW5lIENPTFVNTl9BTEFSTUlOVEVSVkFMCQkyCisjZGVmaW5lIENPTFVNTl9BTEFSTVZBUklBQkxFCQkzCisjZGVmaW5lIENPTFVNTl9BTEFSTVNBTVBMRVRZUEUJCTQKKyNkZWZpbmUgQ09MVU1OX0FMQVJNVkFMVUUJCTUKKyNkZWZpbmUgQ09MVU1OX0FMQVJNU1RBUlRVUEFMQVJNCQk2CisjZGVmaW5lIENPTFVNTl9BTEFSTVJJU0lOR1RIUkVTSE9MRAkJNworI2RlZmluZSBDT0xVTU5fQUxBUk1GQUxMSU5HVEhSRVNIT0xECQk4CisjZGVmaW5lIENPTFVNTl9BTEFSTVJJU0lOR0VWRU5USU5ERVgJCTkKKyNkZWZpbmUgQ09MVU1OX0FMQVJNRkFMTElOR0VWRU5USU5ERVgJCTEwCisjZGVmaW5lIENPTFVNTl9BTEFSTU9XTkVSCQkxMQorI2RlZmluZSBDT0xVTU5fQUxBUk1TVEFUVVMJCTEyCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFMQVJNVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jCmluZGV4IGNhYjFkOGIuLjEyN2NmM2YgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYworKysgYi9hZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMKQEAgLTQ1LDggKzQ1LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KICNpbmNsdWRlICJldmVudC5oIgogCiAvKgpAQCAtNzcyLDIzICs3NzAsMzQgQEAKICAgICAvKgogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlLCByby9ydyAsIGNhbGxiYWNrIGZuICAsICAgICAgICAgICBMLCBvaWRzdWZmaXggCiAgICAgICovCi0gICAge0VWRU5USU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCAxfX0sCi0gICAge0VWRU5UREVTQ1JJUFRJT04sIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCAyfX0sCi0gICAge0VWRU5UVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCAzfX0sCi0gICAge0VWRU5UQ09NTVVOSVRZLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9ldmVudFRhYmxlLCAyLCB7MSwgNH19LAotICAgIHtFVkVOVExBU1RUSU1FU0VOVCwgQVNOX1RJTUVUSUNLUywgUk9OTFksIHZhcl9ldmVudFRhYmxlLCAyLCB7MSwgNX19LAotICAgIHtFVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9ldmVudFRhYmxlLCAyLCB7MSwgNn19LAotICAgIHtFVkVOVFNUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCA3fX0KKyAgICB7RVZFTlRJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXZlbnRUYWJsZSwgMiwgezEsIDF9fSwKKyAgICB7RVZFTlRERVNDUklQVElPTiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXZlbnRUYWJsZSwgMiwgezEsIDJ9fSwKKyAgICB7RVZFTlRUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXZlbnRUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7RVZFTlRDT01NVU5JVFksIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCA0fX0sCisgICAge0VWRU5UTEFTVFRJTUVTRU5ULCBBU05fVElNRVRJQ0tTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCA1fX0sCisgICAge0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCA2fX0sCisgICAge0VWRU5UU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXZlbnRUYWJsZSwgMiwgezEsIDd9fQogfTsKIAogc3RydWN0IHZhcmlhYmxlMiBsb2dUYWJsZV92YXJpYWJsZXNbXSA9IHsKICAgICAvKgogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlLCByby9ydyAsIGNhbGxiYWNrIGZuICAsICAgICAgICAgICBMLCBvaWRzdWZmaXggCiAgICAgICovCi0gICAge0xPR0VWRU5USU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ1RhYmxlLCAyLCB7MSwgMX19LAotICAgIHtMT0dJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG9nVGFibGUsIDIsIHsxLCAyfX0sCi0gICAge0xPR1RJTUUsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfbG9nVGFibGUsIDIsIHsxLCAzfX0sCi0gICAge0xPR0RFU0NSSVBUSU9OLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xvZ1RhYmxlLCAyLCB7MSwgNH19CisgICAge0xPR0VWRU5USU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvZ1RhYmxlLCAyLCB7MSwgMX19LAorICAgIHtMT0dJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9nVGFibGUsIDIsIHsxLCAyfX0sCisgICAge0xPR1RJTUUsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9nVGFibGUsIDIsIHsxLCAzfX0sCisgICAge0xPR0RFU0NSSVBUSU9OLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvZ1RhYmxlLCAyLCB7MSwgNH19CiAKIH07CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuaCBiL2FnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuaAppbmRleCBkZmNhY2U3Li5iMDNlMTYyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5oCkBAIC0yMSwxNCArMjEsMTMgQEAKICNpZm5kZWYgX01JQkdST1VQX0VWRU5UX0gKICNkZWZpbmUgX01JQkdST1VQX0VWRU5UX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKLQotY29uZmlnX3JlcXVpcmUoUm1vbi9hZ3V0aWwpCi1jb25maWdfcmVxdWlyZShSbW9uL3Jvd3MpCi0KICAgICAvKgogICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMgCiAgICAgICovCiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X2V2ZW50KHZvaWQpOwogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorCitjb25maWdfcmVxdWlyZShSbW9uL2FndXRpbCkKK2NvbmZpZ19yZXF1aXJlKFJtb24vcm93cykKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX0VWRU5UX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vaGlzdG9yeS5jIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMKaW5kZXggOWM2ODU2Zi4uYWQwM2VlZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMKQEAgLTQ0LDggKzQ0LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KICNpbmNsdWRlICJoaXN0b3J5LmgiCiAKIC8qCkBAIC02NTYsMTggKzY1NCwyMCBAQAogICAgIC8qCiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgICAgICAgICAgIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KLSAgICB7Q1RSTF9JTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaGlzdG9yeUNvbnRyb2xUYWJsZSwgMiwgezEsIDF9fSwKLSAgICB7Q1RSTF9EQVRBU09VUkNFLCBBU05fT0JKRUNUX0lELCBSV1JJVEUsIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLAotICAgICB7MSwgMn19LAotICAgIHtDVFJMX0JVQ0tFVFNSRVFVRVNURUQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLAotICAgICAyLCB7MSwgM319LAotICAgIHtDVFJMX0JVQ0tFVFNHUkFOVEVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLAotICAgICB7MSwgNH19LAotICAgIHtDVFJMX0lOVEVSVkFMLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfaGlzdG9yeUNvbnRyb2xUYWJsZSwgMiwKLSAgICAgezEsIDV9fSwKLSAgICB7Q1RSTF9PV05FUiwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfaGlzdG9yeUNvbnRyb2xUYWJsZSwgMiwKLSAgICAgezEsIDZ9fSwKLSAgICB7Q1RSTF9TVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLCB7MSwgN319LAorICAgIHtDVFJMX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLCB7MSwgMX19LAorICAgIHtDVFJMX0RBVEFTT1VSQ0UsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2hpc3RvcnlDb250cm9sVGFibGUsIDIsIHsxLCAyfX0sCisgICAge0NUUkxfQlVDS0VUU1JFUVVFU1RFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2hpc3RvcnlDb250cm9sVGFibGUsIDIsIHsxLCAzfX0sCisgICAge0NUUkxfQlVDS0VUU0dSQU5URUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hpc3RvcnlDb250cm9sVGFibGUsIDIsIHsxLCA0fX0sCisgICAge0NUUkxfSU5URVJWQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLCB7MSwgNX19LAorICAgIHtDVFJMX09XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLCB7MSwgNn19LAorICAgIHtDVFJMX1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2hpc3RvcnlDb250cm9sVGFibGUsIDIsIHsxLCA3fX0sCiAKIH07CiAKQEAgLTY3OCwzMiArNjc4LDM2IEBACiAgICAgLyoKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgICAgICAgIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KLSAgICB7REFUQV9JTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAxfX0sCi0gICAge0RBVEFfU0FNUExFSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLAotICAgICB7MSwgMn19LAotICAgIHtEQVRBX0lOVEVSVkFMU1RBUlQsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCAzfX0sCi0gICAge0RBVEFfRFJPUEVWRU5UUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCA0fX0sCi0gICAge0RBVEFfT0NURVRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDV9fSwKLSAgICB7REFUQV9QS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDZ9fSwKLSAgICB7REFUQV9CUk9BRENBU1RQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwKLSAgICAgezEsIDd9fSwKLSAgICB7REFUQV9NVUxUSUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwKLSAgICAgezEsIDh9fSwKLSAgICB7REFUQV9DUkNBTElHTkVSUk9SUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCA5fX0sCi0gICAge0RBVEFfVU5ERVJTSVpFUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCAxMH19LAotICAgIHtEQVRBX09WRVJTSVpFUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCAxMX19LAotICAgIHtEQVRBX0ZSQUdNRU5UUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCAxMn19LAotICAgIHtEQVRBX0pBQkJFUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLCB7MSwgMTN9fSwKLSAgICB7REFUQV9DT0xMSVNJT05TLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwKLSAgICAgezEsIDE0fX0sCi0gICAge0RBVEFfVVRJTElaQVRJT04sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLAotICAgICB7MSwgMTV9fSwKKyAgICB7REFUQV9JTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAxfX0sCisgICAge0RBVEFfU0FNUExFSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLCB7MSwgMn19LAorICAgIHtEQVRBX0lOVEVSVkFMU1RBUlQsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAzfX0sCisgICAge0RBVEFfRFJPUEVWRU5UUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCA0fX0sCisgICAge0RBVEFfT0NURVRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDV9fSwKKyAgICB7REFUQV9QS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7REFUQV9CUk9BRENBU1RQS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDd9fSwKKyAgICB7REFUQV9NVUxUSUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDh9fSwKKyAgICB7REFUQV9DUkNBTElHTkVSUk9SUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCA5fX0sCisgICAge0RBVEFfVU5ERVJTSVpFUEtUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAxMH19LAorICAgIHtEQVRBX09WRVJTSVpFUEtUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAxMX19LAorICAgIHtEQVRBX0ZSQUdNRU5UUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAxMn19LAorICAgIHtEQVRBX0pBQkJFUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLCB7MSwgMTN9fSwKKyAgICB7REFUQV9DT0xMSVNJT05TLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDE0fX0sCisgICAge0RBVEFfVVRJTElaQVRJT04sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLCB7MSwgMTV9fSwKIAogfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmggYi9hZ2VudC9taWJncm91cC9SbW9uL2hpc3RvcnkuaAppbmRleCAwOTRiZWU0Li5kMmM0MDFkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2hpc3RvcnkuaAorKysgYi9hZ2VudC9taWJncm91cC9SbW9uL2hpc3RvcnkuaApAQCAtMjEsOCArMjEsNiBAQAogI2lmbmRlZiBfTUlCR1JPVVBfSElTVE9SWV9ICiAjZGVmaW5lIF9NSUJHUk9VUF9ISVNUT1JZX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKLQogICAgIC8qCiAgICAgICogZnVuY3Rpb24gcHJvdG90eXBlcyAKICAgICAgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMKaW5kZXggZDhjM2NjMS4uZDY3YzU2NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KICNpbmNsdWRlICJhZ3V0aWxfYXBpLmgiCiAjaW5jbHVkZSAicm93cy5oIgogI2luY2x1ZGUgInJvd19hcGkuaCIKQEAgLTc1Niw3ICs3NTQsNyBAQAogICAgICAgICBzY3Jsci0+Zmlyc3RfZGF0YV9wdHIgPSBicHRyLT5uZXh0OwogICAgICAgICBzY3Jsci0+bGFzdF9kYXRhX3B0ci0+bmV4dCA9IGJwdHI7CiAgICAgICAgIHNjcmxyLT5sYXN0X2RhdGFfcHRyID0gKE5FWFRFRF9QVFJfVCAqKSBicHRyOwotICAgICAgICBicHRyLT5uZXh0ID0gMDsKKyAgICAgICAgYnB0ci0+bmV4dCA9IE5VTEw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYnB0ciA9IHNjcmxyLT5jdXJyZW50X2RhdGFfcHRyOwogICAgICAgICBzY3Jsci0+Y3VycmVudF9kYXRhX3B0ciA9IGJwdHItPm5leHQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9SbW9uL3N0YXRpc3RpY3MuYyBiL2FnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5jCmluZGV4IGZiNGY1ZjUuLjZjY2I4NDQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5jCkBAIC00Myw3ICs0Myw2IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgInN0YXRpc3RpY3MuaCIKICAgICAgICAgLyoKICAgICAgICAgICogSW1wbGVtZW50YXRpb24gaGVhZGVycyAKQEAgLTQ2OCw1MiArNDY3LDUyIEBACiBvaWQgICAgICAgICAgICAgb2lkc3RhdGlzdGljc1ZhcmlhYmxlc09pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxNiwgMSB9OwogCiBzdHJ1Y3QgdmFyaWFibGU3IG9pZHN0YXRpc3RpY3NWYXJpYWJsZXNbXSA9IHsKLSAgICB7SURldGhlclN0YXRzSW5kZXgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywKLSAgICAgezEsIDEsIDF9fSwKLSAgICB7SURldGhlclN0YXRzRGF0YVNvdXJjZSwgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLAotICAgICB7MSwgMSwgMn19LAotICAgIHtJRGV0aGVyU3RhdHNEcm9wRXZlbnRzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCAzfX0sCi0gICAge0lEZXRoZXJTdGF0c09jdGV0cywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLAotICAgICB7MSwgMSwgNH19LAotICAgIHtJRGV0aGVyU3RhdHNQa3RzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCA1fX0sCi0gICAge0lEZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywKLSAgICAgezEsIDEsIDZ9fSwKLSAgICB7SURldGhlclN0YXRzTXVsdGljYXN0UGt0cywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLAotICAgICB7MSwgMSwgN319LAotICAgIHtJRGV0aGVyU3RhdHNDUkNBbGlnbkVycm9ycywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJTdGF0c0VudHJ5LAotICAgICAzLCB7MSwgMSwgOH19LAotICAgIHtJRGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCA5fX0sCi0gICAge0lEZXRoZXJTdGF0c092ZXJzaXplUGt0cywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLAotICAgICB7MSwgMSwgMTB9fSwKLSAgICB7SURldGhlclN0YXRzRnJhZ21lbnRzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCAxMX19LAotICAgIHtJRGV0aGVyU3RhdHNKYWJiZXJzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCAxMn19LAotICAgIHtJRGV0aGVyU3RhdHNDb2xsaXNpb25zLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCAxM319LAotICAgIHtJRGV0aGVyU3RhdHNQa3RzNjRPY3RldHMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywKLSAgICAgezEsIDEsIDE0fX0sCi0gICAge0lEZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzLCBBU05fQ09VTlRFUiwgUk9OTFksCisgICAge0lEZXRoZXJTdGF0c0luZGV4LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlclN0YXRzRW50cnksIDMsIHsxLCAxLCAxfX0sCisgICAge0lEZXRoZXJTdGF0c0RhdGFTb3VyY2UsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDJ9fSwKKyAgICB7SURldGhlclN0YXRzRHJvcEV2ZW50cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgM319LAorICAgIHtJRGV0aGVyU3RhdHNPY3RldHMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDR9fSwKKyAgICB7SURldGhlclN0YXRzUGt0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgNX19LAorICAgIHtJRGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlclN0YXRzRW50cnksIDMsIHsxLCAxLCA2fX0sCisgICAge0lEZXRoZXJTdGF0c011bHRpY2FzdFBrdHMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDd9fSwKKyAgICB7SURldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDh9fSwKKyAgICB7SURldGhlclN0YXRzVW5kZXJzaXplUGt0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgOX19LAorICAgIHtJRGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDEwfX0sCisgICAge0lEZXRoZXJTdGF0c0ZyYWdtZW50cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTF9fSwKKyAgICB7SURldGhlclN0YXRzSmFiYmVycywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTJ9fSwKKyAgICB7SURldGhlclN0YXRzQ29sbGlzaW9ucywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTN9fSwKKyAgICB7SURldGhlclN0YXRzUGt0czY0T2N0ZXRzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlclN0YXRzRW50cnksIDMsIHsxLCAxLCAxNH19LAorICAgIHtJRGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTV9fSwKLSAgICB7SURldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzLCBBU05fQ09VTlRFUiwgUk9OTFksCisgICAge0lEZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTZ9fSwKLSAgICB7SURldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzLCBBU05fQ09VTlRFUiwgUk9OTFksCisgICAge0lEZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTd9fSwKLSAgICB7SURldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0cywgQVNOX0NPVU5URVIsIFJPTkxZLAorICAgIHtJRGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9ldGhlclN0YXRzRW50cnksIDMsIHsxLCAxLCAxOH19LAotICAgIHtJRGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cywgQVNOX0NPVU5URVIsIFJPTkxZLAorICAgIHtJRGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTl9fSwKLSAgICB7SURldGhlclN0YXRzT3duZXIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywKLSAgICAgezEsIDEsIDIwfX0sCi0gICAge0lEZXRoZXJTdGF0c1N0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywKLSAgICAgezEsIDEsIDIxfX0sCi0gICAge0lEZXRoZXJTdGF0c0Ryb3BwZWRGcmFtZXMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V0aGVyU3RhdHMyRW50cnksCi0gICAgIDMsIHs0LCAxLCAxfX0sCi0gICAge0lEZXRoZXJTdGF0c0NyZWF0ZVRpbWUsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfZXRoZXJTdGF0czJFbnRyeSwgMywKLSAgICAgezQsIDEsIDJ9fSwKKyAgICB7SURldGhlclN0YXRzT3duZXIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDIwfX0sCisgICAge0lEZXRoZXJTdGF0c1N0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDIxfX0sCisgICAge0lEZXRoZXJTdGF0c0Ryb3BwZWRGcmFtZXMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVyU3RhdHMyRW50cnksIDMsIHs0LCAxLCAxfX0sCisgICAge0lEZXRoZXJTdGF0c0NyZWF0ZVRpbWUsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0czJFbnRyeSwgMywgezQsIDEsIDJ9fSwKIH07CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5oIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmgKaW5kZXggOGM2ZDkxZC4uOWI2MjJhNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmgKQEAgLTIxLDcgKzIxLDYgQEAKICNpZm5kZWYgX3N0YXRpc3RpY3NfaF9pbmNsdWRlZF9fCiAjZGVmaW5lIF9zdGF0aXN0aWNzX2hfaW5jbHVkZWRfXwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQogICAgICB2b2lkICAgICAgICAgICAgaW5pdF9zdGF0aXN0aWNzKHZvaWQpOwogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9zdGF0aXN0aWNzX2hfaW5jbHVkZWRfXyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYwppbmRleCAxZjg1ODZhLi43MDA0ZWE1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYwpAQCAtMTAsNyArMTAsNyBAQAogI2luY2x1ZGUgInN0cnVjdC5oIgogCiAjaWZuZGVmIFVTSU5HX1VDRF9TTk1QX0VYVEVOU0lCTEVfTU9EVUxFCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgogI2luY2x1ZGUgIm1pYmRlZnMuaCIKICNkZWZpbmUgU0hFTExDT01NQU5EIDMKICNlbmRpZgpAQCAtNDQsMTcgKzQ0LDI3IEBACiB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgbWF4X2NvbXBhdGFiaWxpdHlfZW50cmllcyA9IDUwOwogbmV0c25tcF9vbGRfZXh0ZW5kICpjb21wYXRhYmlsaXR5X2VudHJpZXM7CiAKK2NoYXIgICAgICAgICAgICpjbWRsaW5lYnVmOworc2l6ZV90ICAgICAgICAgIGNtZGxpbmVzaXplOworCiBXcml0ZU1ldGhvZCBmaXhFeGVjMkVycm9yOwogRmluZFZhck1ldGhvZCB2YXJfZXh0ZW5zaWJsZV9vbGQ7CiBvaWQgIG9sZF9leHRlbnNpYmxlX3ZhcmlhYmxlc19vaWRbXSA9IHsgTkVUU05NUF9VQ0RBVklTX01JQiwgTkVUU05NUF9TSEVMTE1JQk5VTSwgMSB9Owogc3RydWN0IHZhcmlhYmxlMiBvbGRfZXh0ZW5zaWJsZV92YXJpYWJsZXNbXSA9IHsKLSAgICB7TUlCSU5ERVgsICAgICBBU05fSU5URUdFUiwgICBST05MWSwgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7TUlCSU5ERVh9fSwKLSAgICB7RVJST1JOQU1FLCAgICBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JOQU1FfX0sCi0gICAge1NIRUxMQ09NTUFORCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge1NIRUxMQ09NTUFORH19LAotICAgIHtFUlJPUkZMQUcsICAgIEFTTl9JTlRFR0VSLCAgIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUkZMQUd9fSwKLSAgICB7RVJST1JNU0csICAgICBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JNU0d9fSwKLSAgICB7RVJST1JGSVgsICAgICBBU05fSU5URUdFUiwgIFJXUklURSwgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JGSVh9fSwKLSAgICB7RVJST1JGSVhDTUQsICBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JGSVhDTUR9fQorICAgIHtNSUJJTkRFWCwgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtNSUJJTkRFWH19LAorICAgIHtFUlJPUk5BTUUsICAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICB7U0hFTExDT01NQU5ELCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7U0hFTExDT01NQU5EfX0sCisgICAge0VSUk9SRkxBRywgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge0VSUk9SRkxBR319LAorICAgIHtFUlJPUk1TRywgICAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUk1TR319LAorICAgIHtFUlJPUkZJWCwgICAgIEFTTl9JTlRFR0VSLCAgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUkZJWH19LAorICAgIHtFUlJPUkZJWENNRCwgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUkZJWENNRH19CiB9OwogI2VuZGlmCiAKQEAgLTQ3OCwxMCArNDg4LDIxIEBACiAgICAgICAgICAgICAKICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoIHRva2VuLCAic2giICAgKSB8fAogICAgICAgICAgICAgICAgIXN0cmNtcCggdG9rZW4sICJleGVjIiApKSB7Ci0gICAgICAgIGlmICggbnVtX2NvbXBhdGFiaWxpdHlfZW50cmllcyA9PSBtYXhfY29tcGF0YWJpbGl0eV9lbnRyaWVzICkKKyAgICAgICAgaWYgKCBudW1fY29tcGF0YWJpbGl0eV9lbnRyaWVzID09IG1heF9jb21wYXRhYmlsaXR5X2VudHJpZXMgKSB7CiAgICAgICAgICAgICAvKiBYWFggLSBzaG91bGQgcmVhbGx5IHVzZSBkeW5hbWljIGFsbG9jYXRpb24gKi8KLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIk5vIGZ1cnRoZXIgVUNELWNvbXBhdGlibGUgZW50cmllcyIgKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV0c25tcF9vbGRfZXh0ZW5kICpuZXdfY29tcGF0YWJpbGl0eV9lbnRyaWVzOworICAgICAgICAgICAgbmV3X2NvbXBhdGFiaWxpdHlfZW50cmllcyA9IHJlYWxsb2MoY29tcGF0YWJpbGl0eV9lbnRyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfY29tcGF0YWJpbGl0eV9lbnRyaWVzKjIqc2l6ZW9mKG5ldHNubXBfb2xkX2V4dGVuZCkpOworICAgICAgICAgICAgaWYgKCFuZXdfY29tcGF0YWJpbGl0eV9lbnRyaWVzKQorICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIk5vIGZ1cnRoZXIgVUNELWNvbXBhdGlibGUgZW50cmllcyIgKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1lbXNldChuZXdfY29tcGF0YWJpbGl0eV9lbnRyaWVzK251bV9jb21wYXRhYmlsaXR5X2VudHJpZXMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF9vbGRfZXh0ZW5kKSptYXhfY29tcGF0YWJpbGl0eV9lbnRyaWVzKTsKKyAgICAgICAgICAgICAgICBtYXhfY29tcGF0YWJpbGl0eV9lbnRyaWVzICo9IDI7CisgICAgICAgICAgICAgICAgY29tcGF0YWJpbGl0eV9lbnRyaWVzID0gbmV3X2NvbXBhdGFiaWxpdHlfZW50cmllczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAobnVtX2NvbXBhdGFiaWxpdHlfZW50cmllcyAhPSBtYXhfY29tcGF0YWJpbGl0eV9lbnRyaWVzKQogICAgICAgICAgICAgY29tcGF0YWJpbGl0eV9lbnRyaWVzWwogICAgICAgICAgICAgICAgIG51bV9jb21wYXRhYmlsaXR5X2VudHJpZXMrKyBdLmV4ZWNfZW50cnkgPSBleHRlbnNpb247CiAgICAgfQpAQCAtMTEwNiw3ICsxMTI3LDcgQEAKICAgICAgKiAgR0VUIGhhbmRsaW5nIC0gZmluZCB0aGUgZXhhY3QgZW50cnkgYmVpbmcgcmVxdWVzdGVkCiAgICAgICoqKi8KICAgICBpZiAoIG1vZGUgPT0gTU9ERV9HRVQgKSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCAibnNFeHRlbmRUYWJsZTpvdXRwdXQyIiwgIkdFVDogJXMgLyAlZFxuICIsCisgICAgICAgIERFQlVHTVNHVEwoKCAibnNFeHRlbmRUYWJsZTpvdXRwdXQyIiwgIkdFVDogJXMgLyAlbGRcbiAiLAogICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2luZm8tPmluZGV4ZXMtPnZhbC5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAqdGFibGVfaW5mby0+aW5kZXhlcy0+bmV4dF92YXJpYWJsZS0+dmFsLmludGVnZXIpKTsKICAgICAgICAgZm9yICggZXB0ciA9IGVyZWctPmVoZWFkOyBlcHRyOyBlcHRyID0gZXB0ci0+bmV4dCApIHsKQEAgLTExMjksNyArMTE1MCw2IEBACiAgICAgICAgICAgICBpZiAobGluZV9pZHggPCAxIHx8IGxpbmVfaWR4ID4gZXB0ci0+bnVtbGluZXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGVwdHI7CiAgICAgfQogCiAgICAgICAgIC8qKioKQEAgLTEyNDYsOSArMTI2Niw4IEBACiAgICAgICAgICAgICBzbm1wX3NldF92YXJfdmFsdWUoIHRhYmxlX2luZm8tPmluZGV4ZXMtPm5leHRfdmFyaWFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1X2NoYXIqKSZsaW5lX2lkeCwgc2l6ZW9mKGxpbmVfaWR4KSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGVwdHI7ICAvKiBGaW5hbGx5LCBzaWduYWwgc3VjY2VzcyAqLwogICAgIH0KLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gZXB0cjsgIC8qIEZpbmFsbHksIHNpZ25hbCBzdWNjZXNzICovCiB9CiAKIC8qCkBAIC0xMzM4LDYgKzEzNTcsMzIgQEAKICAgICAgICAgICoKICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKiovCiAKK2NoYXIgKiBfZ2V0X2NtZGxpbmUobmV0c25tcF9leHRlbmQgKmV4dGVuZCkKK3sKKyAgICBzaXplX3QgICAgICAgICAgc2l6ZTsKKyAgICBjaGFyICAgICAgICAgICAqbmV3YnVmOworICAgIGNvbnN0IGNoYXIgICAgICphcmdzID0gZXh0ZW5kLT5hcmdzOworCisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgLyogVXNlIGVtcHR5IHN0cmluZyBmb3IgcHJvY2Vzc2VzIHdpdGhvdXQgYXJndW1lbnRzLiAqLworICAgICAgICBhcmdzID0gIiI7CisKKyAgICBzaXplID0gc3RybGVuKGV4dGVuZC0+Y29tbWFuZCkgKyBzdHJsZW4oYXJncykgKyAyOworICAgIGlmIChzaXplID4gY21kbGluZXNpemUpIHsKKyAgICAgICAgbmV3YnVmID0gcmVhbGxvYyhjbWRsaW5lYnVmLCBzaXplKTsKKyAgICAgICAgaWYgKCFuZXdidWYpIHsKKyAgICAgICAgICAgIGZyZWUoY21kbGluZWJ1Zik7CisgICAgICAgICAgICBjbWRsaW5lYnVmID0gTlVMTDsKKyAgICAgICAgICAgIGNtZGxpbmVzaXplID0gMDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGNtZGxpbmVidWYgPSBuZXdidWY7CisgICAgICAgIGNtZGxpbmVzaXplID0gc2l6ZTsKKyAgICB9CisgICAgc3ByaW50ZihjbWRsaW5lYnVmLCAiJXMgJXMiLCBleHRlbmQtPmNvbW1hbmQsIGFyZ3MpOworICAgIHJldHVybiBjbWRsaW5lYnVmOworfQorCiB1X2NoYXIgKgogdmFyX2V4dGVuc2libGVfb2xkKHN0cnVjdCB2YXJpYWJsZSAqIHZwLAogICAgICAgICAgICAgICAgICAgICAgb2lkICogbmFtZSwKQEAgLTEzNDgsNiArMTM5Myw3IEBACiAgICAgbmV0c25tcF9vbGRfZXh0ZW5kICpleHRlbiA9IE5VTEw7CiAgICAgc3RhdGljIGxvbmcgICAgIGxvbmdfcmV0OwogICAgIHVuc2lnbmVkIGludCBpZHg7CisgICAgY2hhciAgICAgICAgICpjbWRsaW5lOwogCiAgICAgaWYgKGhlYWRlcl9zaW1wbGVfdGFibGUKICAgICAgICAgKHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLCB3cml0ZV9tZXRob2QsIG51bV9jb21wYXRhYmlsaXR5X2VudHJpZXMpKQpAQCAtMTM2Niw4ICsxNDEyLDEwIEBACiAgICAgICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihleHRlbi0+ZXhlY19lbnRyeS0+dG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuICgodV9jaGFyICopIChleHRlbi0+ZXhlY19lbnRyeS0+dG9rZW4pKTsKICAgICAgICAgY2FzZSBTSEVMTENPTU1BTkQ6Ci0gICAgICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihleHRlbi0+ZXhlY19lbnRyeS0+Y29tbWFuZCk7Ci0gICAgICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKGV4dGVuLT5leGVjX2VudHJ5LT5jb21tYW5kKSk7CisgICAgICAgICAgICBjbWRsaW5lID0gX2dldF9jbWRsaW5lKGV4dGVuLT5leGVjX2VudHJ5KTsKKyAgICAgICAgICAgIGlmIChjbWRsaW5lKQorICAgICAgICAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGNtZGxpbmUpOworICAgICAgICAgICAgcmV0dXJuICgodV9jaGFyICopIGNtZGxpbmUpOwogICAgICAgICBjYXNlIEVSUk9SRkxBRzogICAgICAgIC8qIHJldHVybiBjb2RlIGZyb20gdGhlIHByb2Nlc3MgKi8KICAgICAgICAgICAgIG5ldHNubXBfY2FjaGVfY2hlY2tfYW5kX3JlbG9hZCggZXh0ZW4tPmV4ZWNfZW50cnktPmNhY2hlICk7CiAgICAgICAgICAgICBsb25nX3JldCA9IGV4dGVuLT5leGVjX2VudHJ5LT5yZXN1bHQ7CkBAIC0xMzkwLDggKzE0MzgsMTAgQEAKIAogICAgICAgICBjYXNlIEVSUk9SRklYQ01EOgogICAgICAgICAgICAgaWYgKGV4dGVuLT5lZml4X2VudHJ5KSB7Ci0gICAgICAgICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oZXh0ZW4tPmVmaXhfZW50cnktPmNvbW1hbmQpOwotICAgICAgICAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSBleHRlbi0+ZWZpeF9lbnRyeS0+Y29tbWFuZCk7CisgICAgICAgICAgICAgICAgY21kbGluZSA9IF9nZXRfY21kbGluZShleHRlbi0+ZWZpeF9lbnRyeSk7CisJCWlmIChjbWRsaW5lKQorICAgICAgICAgICAgICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihjbWRsaW5lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgY21kbGluZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICp2YXJfbGVuID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgJmxvbmdfcmV0dXJuKTsgIC8qIEp1c3QgbmVlZHMgdG8gYmUgbm9uLW51bGwhICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuaCBiL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5oCmluZGV4IDhmMTlkYjMuLjRiMTgxZjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5oCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRlZiBORVRTTk1QX0VYVEVORF9ICiAjZGVmaW5lIE5FVFNOTVBfRVhURU5EX0gKIAotY29uZmlnX3JlcXVpcmUoIHV0aWxfZnVuY3MgKQorY29uZmlnX3JlcXVpcmUoIHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSApCiBjb25maWdfcmVxdWlyZSggdXRpbGl0aWVzL2V4ZWN1dGUgKQogY29uZmlnX2FkZF9taWIoTkVULVNOTVAtRVhURU5ELU1JQikKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jCmluZGV4IGY4ZTczZjAuLmE3NzNhZWIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMKQEAgLTExLDggKzExLDYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaD4KICNpbmNsdWRlICJhZ2VudC9uc0NhY2hlLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgotCiAKIC8qCiAgKiB1c2UgdW5hZHZlcnRpc2VkIGZ1bmN0aW9uIHRvIGdldCBjYWNoZSBoZWFkLiBZb3UgcmVhbGx5IHNob3VsZCBub3QKQEAgLTIxLDYgKzE5LDggQEAKIGV4dGVybiBuZXRzbm1wX2NhY2hlICpuZXRzbm1wX2NhY2hlX2dldF9oZWFkKHZvaWQpOwogCiAKKyNkZWZpbmUgbnNDYWNoZSAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCA1CisKIC8qCiAgKiBPSURzIGZvciB0aGUgY2FjaGVnaW5nIGNvbnRyb2wgc2NhbGFyIG9iamVjdHMKICAqCkBAIC0yOCw4ICsyOCw2IEBACiAgKiAgdGhhbiB0aGUgKHNvbGUpIHZhbGlkIGluc3RhbmNlIGluIGVhY2ggY2FzZSwgaW4gb3JkZXIKICAqICB0byBoYW5kbGUgcmVxdWVzdHMgZm9yIGludmFsaWQgaW5zdGFuY2VzIHByb3Blcmx5LgogICovCi1vaWQgbnNDYWNoZVRpbWVvdXRfb2lkW10gICAgPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDUsIDF9Owotb2lkIG5zQ2FjaGVFbmFibGVkX29pZFtdICAgID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCA1LCAyfTsKIAogLyoKICAqIC4uLiBhbmQgZm9yIHRoZSBjYWNoZSB0YWJsZS4KQEAgLTQ0LDggKzQyLDYgQEAKICNkZWZpbmUgTlNDQUNIRV9TVEFUVVNfQUNUSVZFICAgNAogI2RlZmluZSBOU0NBQ0hFX1NUQVRVU19FWFBJUkVEICA1CiAKLW9pZCBuc0NhY2hlVGFibGVfb2lkW10gICAgICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgNSwgM307Ci0KIGV4dGVybiBzdHJ1Y3Qgc25tcF9hbGFybSAqCiBzYV9maW5kX3NwZWNpZmljKHVuc2lnbmVkIGludCBjbGllbnRyZWcpOwogCkBAIC01Myw2ICs0OSwxMCBAQAogdm9pZAogaW5pdF9uc0NhY2hlKHZvaWQpCiB7CisgICAgY29uc3Qgb2lkIG5zQ2FjaGVUaW1lb3V0X29pZFtdICAgID0geyBuc0NhY2hlLCAxIH07CisgICAgY29uc3Qgb2lkIG5zQ2FjaGVFbmFibGVkX29pZFtdICAgID0geyBuc0NhY2hlLCAyIH07CisgICAgY29uc3Qgb2lkIG5zQ2FjaGVUYWJsZV9vaWRbXSAgICAgID0geyBuc0NhY2hlLCAzIH07CisKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAgICAgICAgICAgKmlpbmZvOwogCkBAIC0zNjEsNyArMzYxLDYgQEAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX0VSUl9OT0NSRUFUSU9OKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9DUkVBVElPTjsJLyogWFhYIC0gaXMgdGhpcyByaWdodCA/ICovCi0gICAgICAgICAgICAgICAgY29udGludWU7CiAJICAgIH0KIAl9CiAJYnJlYWs7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMKaW5kZXggNDBkNTVkNC4uNTM0ZDE4YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zRGVidWcuYwpAQCAtMTAsMzQgKzEwLDMyIEBACiAjZW5kaWYKIAogI2luY2x1ZGUgImFnZW50L25zRGVidWcuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAKLQotCi0vKgotICogT0lEcyBmb3IgdGhlIGRlYnVnZ2luZyBjb250cm9sIHNjYWxhciBvYmplY3RzCi0gKgotICogTm90ZSB0aGF0IHRoZXNlIHdlJ3JlIHJlZ2lzdGVyaW5nIHRoZSBmdWxsIG9iamVjdCByYXRoZXIKLSAqICB0aGFuIHRoZSAoc29sZSkgdmFsaWQgaW5zdGFuY2UgaW4gZWFjaCBjYXNlLCBpbiBvcmRlcgotICogIHRvIGhhbmRsZSByZXF1ZXN0cyBmb3IgaW52YWxpZCBpbnN0YW5jZXMgcHJvcGVybHkuCi0gKi8KLW9pZCBuc0RlYnVnRW5hYmxlZF9vaWRbXSAgICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgNywgMSwgMX07Ci1vaWQgbnNEZWJ1Z091dHB1dEFsbF9vaWRbXSAgPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDcsIDEsIDJ9Owotb2lkIG5zRGVidWdEdW1wUGR1X29pZFtdICAgID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCA3LCAxLCAzfTsKLQotLyoKLSAqIC4uLiBhbmQgZm9yIHRoZSB0b2tlbiB0YWJsZS4KLSAqLwotCi0jZGVmaW5lICBEQkdUT0tFTl9QUkVGSVgJMgotI2RlZmluZSAgREJHVE9LRU5fRU5BQkxFRAkzCi0jZGVmaW5lICBEQkdUT0tFTl9TVEFUVVMJNAotb2lkIG5zRGVidWdUb2tlblRhYmxlX29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCA3LCAxLCA0fTsKLQorI2RlZmluZSBuc0NvbmZpZ0RlYnVnIDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDcsIDEKIAogdm9pZAogaW5pdF9uc0RlYnVnKHZvaWQpCiB7CisgICAgLyoKKyAgICAgKiBPSURzIGZvciB0aGUgZGVidWdnaW5nIGNvbnRyb2wgc2NhbGFyIG9iamVjdHMKKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB0aGVzZSB3ZSdyZSByZWdpc3RlcmluZyB0aGUgZnVsbCBvYmplY3QgcmF0aGVyCisgICAgICogIHRoYW4gdGhlIChzb2xlKSB2YWxpZCBpbnN0YW5jZSBpbiBlYWNoIGNhc2UsIGluIG9yZGVyCisgICAgICogIHRvIGhhbmRsZSByZXF1ZXN0cyBmb3IgaW52YWxpZCBpbnN0YW5jZXMgcHJvcGVybHkuCisgICAgICovCisgICAgY29uc3Qgb2lkIG5zRGVidWdFbmFibGVkX29pZFtdICAgID0geyBuc0NvbmZpZ0RlYnVnLCAxfTsKKyAgICBjb25zdCBvaWQgbnNEZWJ1Z091dHB1dEFsbF9vaWRbXSAgPSB7IG5zQ29uZmlnRGVidWcsIDJ9OworICAgIGNvbnN0IG9pZCBuc0RlYnVnRHVtcFBkdV9vaWRbXSAgICA9IHsgbnNDb25maWdEZWJ1ZywgM307CisKKyAgICAvKgorICAgICAqIC4uLiBhbmQgZm9yIHRoZSB0b2tlbiB0YWJsZS4KKyAgICAgKi8KKworI2RlZmluZSAgREJHVE9LRU5fUFJFRklYCTIKKyNkZWZpbmUgIERCR1RPS0VOX0VOQUJMRUQJMworI2RlZmluZSAgREJHVE9LRU5fU1RBVFVTCTQKKyAgICBjb25zdCBvaWQgbnNEZWJ1Z1Rva2VuVGFibGVfb2lkW10gPSB7IG5zQ29uZmlnRGVidWcsIDR9OworCiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gICAgICAgICAgICppaW5mbzsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYwppbmRleCAzZTViMDJmLi43YTIxZmE4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYwpAQCAtMTEsOSArMTEsNiBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaD4KICNpbmNsdWRlICJhZ2VudC9uc0xvZ2dpbmcuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KLQogCiAvKgogICogT0lEIGFuZCBjb2x1bW5zIGZvciB0aGUgbG9nZ2luZyB0YWJsZS4KQEAgLTIzLDE1ICsyMCwxNCBAQAogI2RlZmluZSAgTlNMT0dHSU5HX01BWExFVkVMCTQKICNkZWZpbmUgIE5TTE9HR0lOR19TVEFUVVMJNQogCi1vaWQgbnNMb2dnaW5nVGFibGVfb2lkW10gICAgICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgNywgMiwgMX07Ci0KLQogdm9pZAogaW5pdF9uc0xvZ2dpbmcodm9pZCkKIHsKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAgICAgICAgICAgKmlpbmZvOwogCisgICAgY29uc3Qgb2lkIG5zTG9nZ2luZ1RhYmxlX29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCA3LCAyLCAxfTsKKwogICAgIC8qCiAgICAgICogUmVnaXN0ZXIgdGhlIHRhYmxlLgogICAgICAqIFdlIG5lZWQgdG8gZGVmaW5lIHRoZSBjb2x1bW4gc3RydWN0dXJlIGFuZCBpbmRleGluZy4uLi4KQEAgLTMwOCw3ICszMDQsNiBAQAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsIFNOTVBfTk9TVUNIT0JKRUNUKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9OT1NVQ0hPQkpFQ1Q7Ci0gICAgICAgICAgICAgICAgY29udGludWU7CiAJICAgIH0KIAl9CiAJYnJlYWs7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMKaW5kZXggNGY0ZWEwMC4uYmM0NTY5MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYwpAQCAtMTgsOCArMTgsNyBAQAogdm9pZAogaW5pdGlhbGl6ZV90YWJsZV9uc01vZHVsZVRhYmxlKHZvaWQpCiB7Ci0gICAgc3RhdGljIG9pZCAgICAgIG5zTW9kdWxlVGFibGVfb2lkW10gPQotICAgICAgICB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDIsIDEgfTsKKyAgICBjb25zdCBvaWQgbnNNb2R1bGVUYWJsZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgMiwgMSB9OwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlfaGFuZGxlcjsKICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvOwpAQCAtNzYsNyArNzUsNyBAQAogICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IobXlfaGFuZGxlciwgaWluZm8pOwogfQogCi0vKiogSW5pdGlhbHppZXMgdGhlIG5zTW9kdWxlVGFibGUgbW9kdWxlICovCisvKiogSW5pdGlhbGl6ZXMgdGhlIG5zTW9kdWxlVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X25zTW9kdWxlVGFibGUodm9pZCkKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMKaW5kZXggMzFiOWZlNS4uZGMxZjdmYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMKQEAgLTE1LDEwICsxNSw3IEBACiB2b2lkCiBpbml0aWFsaXplX3RhYmxlX25zVHJhbnNhY3Rpb25UYWJsZSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgICAgICBuc1RyYW5zYWN0aW9uVGFibGVfb2lkW10gPQotICAgICAgICB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDgsIDEgfTsKLSAgICBzaXplX3QgICAgICAgICAgbnNUcmFuc2FjdGlvblRhYmxlX29pZF9sZW4gPQotICAgICAgICBPSURfTEVOR1RIKG5zVHJhbnNhY3Rpb25UYWJsZV9vaWQpOworICAgIGNvbnN0IG9pZCBuc1RyYW5zYWN0aW9uVGFibGVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDgsIDEgfTsKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15X2hhbmRsZXI7CiAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbzsKQEAgLTMzLDExICszMCwxMCBAQAogICAgICAqIGlmIHlvdXIgdGFibGUgaXMgcmVhZCBvbmx5LCBpdCdzIGVhc2llc3QgdG8gY2hhbmdlIHRoZQogICAgICAqIEhBTkRMRVJfQ0FOX1JXUklURSBkZWZpbml0aW9uIGJlbG93IHRvIEhBTkRMRVJfQ0FOX1JPTkxZIAogICAgICAqLwotICAgIG15X2hhbmRsZXIgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibnNUcmFuc2FjdGlvblRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNUcmFuc2FjdGlvblRhYmxlX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zVHJhbnNhY3Rpb25UYWJsZV9vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zVHJhbnNhY3Rpb25UYWJsZV9vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgbXlfaGFuZGxlciA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAibnNUcmFuc2FjdGlvblRhYmxlIiwgbnNUcmFuc2FjdGlvblRhYmxlX2hhbmRsZXIsCisgICAgICAgIG5zVHJhbnNhY3Rpb25UYWJsZV9vaWQsIE9JRF9MRU5HVEgobnNUcmFuc2FjdGlvblRhYmxlX29pZCksCisgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKIAogICAgIGlmICghbXlfaGFuZGxlciB8fCAhdGFibGVfaW5mbyB8fCAhaWluZm8pIHsKICAgICAgICAgaWYgKG15X2hhbmRsZXIpCkBAIC02OCw3ICs2NCw3IEBACiAgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihteV9oYW5kbGVyLCBpaW5mbyk7CiB9CiAKLS8qKiBJbml0aWFsemllcyB0aGUgbnNUcmFuc2FjdGlvblRhYmxlIG1vZHVsZSAqLworLyoqIEluaXRpYWxpemVzIHRoZSBuc1RyYW5zYWN0aW9uVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X25zVHJhbnNhY3Rpb25UYWJsZSh2b2lkKQogewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMKaW5kZXggZDJjZWUzNS4uNDEwYjAwMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jCkBAIC0xNywxNyArMTcsMTUgQEAKICAgICAgKiBJbml0aWFsaXplIHRoZSBuc1ZhY21BY2Nlc3NUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMKICAgICAgKiAgIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkCiAgICAgICovCi0gICAgc3RhdGljIG9pZCBuc1ZhY21BY2Nlc3NUYWJsZV9vaWRbXSAgID0geyAxLDMsNiwxLDQsMSw4MDcyLDEsOSwxIH07Ci0gICAgc2l6ZV90ICAgICBuc1ZhY21BY2Nlc3NUYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChuc1ZhY21BY2Nlc3NUYWJsZV9vaWQpOworICAgIGNvbnN0IG9pZCBuc1ZhY21BY2Nlc3NUYWJsZV9vaWRbXSAgID0geyAxLDMsNiwxLDQsMSw4MDcyLDEsOSwxIH07CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwogICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAgICAgICAgICAgKmlpbmZvOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKLSAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibnNWYWNtQWNjZXNzVGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc1ZhY21BY2Nlc3NUYWJsZV9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc1ZhY21BY2Nlc3NUYWJsZV9vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zVmFjbUFjY2Vzc1RhYmxlX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICJuc1ZhY21BY2Nlc3NUYWJsZSIsIG5zVmFjbUFjY2Vzc1RhYmxlX2hhbmRsZXIsCisgICAgICAgIG5zVmFjbUFjY2Vzc1RhYmxlX29pZCwgT0lEX0xFTkdUSChuc1ZhY21BY2Nlc3NUYWJsZV9vaWQpLAorICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jCmluZGV4IGQxNTZkNDcuLmVlYzgyNzEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYwpAQCAtMTQsMTMgKzE0LDYgQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2lmIEhBVkVfUFdEX0gKLSNpbmNsdWRlIDxwd2QuaD4KLSNlbmRpZgotI2lmIEhBVkVfR1JQX0gKLSNpbmNsdWRlIDxncnAuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgInNubXBkLmgiCkBAIC00Nyw3ICs0MCw2IEBACiBhZ2VudHhfcGFyc2VfbWFzdGVyKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewogICAgIGludCAgICAgICAgICAgICBpID0gLTE7Ci0gICAgY2hhciAgICAgICAgICAgIGJ1ZltCVUZTSVpdOwogCiAgICAgaWYgKCFzdHJjbXAoY3B0ciwgImFnZW50eCIpIHx8CiAgICAgICAgICFzdHJjbXAoY3B0ciwgImFsbCIpIHx8CkBAIC02MCw4ICs1Miw3IEBACiAgICAgICAgIGkgPSBhdG9pKGNwdHIpOwogCiAgICAgaWYgKGkgPCAwIHx8IGkgPiAxKSB7Ci0gICAgICAgIHNwcmludGYoYnVmLCAibWFzdGVyICclcycgdW5yZWNvZ25pc2VkIiwgY3B0cik7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoYnVmKTsKKwluZXRzbm1wX2NvbmZpZ19lcnJvcigibWFzdGVyICclcycgdW5yZWNvZ25pc2VkIiwgY3B0cik7CiAgICAgfSBlbHNlCiAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgTkVUU05NUF9EU19BR0VOVF9BR0VOVFhfTUFTVEVSLCBpKTsKIH0KQEAgLTc1LDEyICs2Niw2IEBACiAgICAgaW50IHNfcGVybSA9IC0xOwogICAgIGludCBkX3Blcm0gPSAtMTsKICAgICBjaGFyICpzdDsKLSNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKLSAgICBzdHJ1Y3QgcGFzc3dkICpwd2Q7Ci0jZW5kaWYKLSNpZiBIQVZFX0dFVEdSTkFNICYmIEhBVkVfR1JQX0gKLSAgICBzdHJ1Y3QgZ3JvdXAgICpncnA7Ci0jZW5kaWYKIAogICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvY29uZmlnIiwgInBvcnQgcGVybWlzc2lvbnM6ICVzXG4iLCBjcHRyKSk7CiAgICAgc29ja2V0X3Blcm0gPSBzdHJ0b2tfcihjcHRyLCAiIFx0IiwgJnN0KTsKQEAgLTEwNywxNiArOTIsNyBAQAogICAgICAqIFRyeSB0byBoYW5kbGUgbnVtZXJpYyBVSURzIG9yIHVzZXIgbmFtZXMgZm9yIHRoZSBzb2NrZXQgb3duZXIKICAgICAgKi8KICAgICBpZiAoc29ja2V0X3VzZXIpIHsKLSAgICAgICAgdWlkID0gYXRvaShzb2NrZXRfdXNlcik7Ci0gICAgICAgIGlmICggdWlkID09IDAgKSB7Ci0jaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICi0gICAgICAgICAgICBwd2QgPSBnZXRwd25hbSggc29ja2V0X3VzZXIgKTsKLSAgICAgICAgICAgIGlmIChwd2QpCi0gICAgICAgICAgICAgICAgdWlkID0gcHdkLT5wd191aWQ7Ci0gICAgICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIkNhbid0IGlkZW50aWZ5IEFnZW50WCBzb2NrZXQgdXNlciAoJXMpLlxuIiwgc29ja2V0X3VzZXIpOwotICAgICAgICB9CisgICAgICAgIHVpZCA9IG5ldHNubXBfc3RyX3RvX3VpZChzb2NrZXRfdXNlcik7CiAgICAgICAgIGlmICggdWlkICE9IDAgKQogICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9YX1NPQ0tfVVNFUiwgdWlkKTsKQEAgLTEyOCwxNiArMTA0LDcgQEAKICAgICAgKiBhbmQgc2ltaWxhcmx5IGZvciB0aGUgc29ja2V0IGdyb3VwIG93bmVyc2hpcAogICAgICAqLwogICAgIGlmIChzb2NrZXRfZ3JvdXApIHsKLSAgICAgICAgZ2lkID0gYXRvaShzb2NrZXRfZ3JvdXApOwotICAgICAgICBpZiAoIGdpZCA9PSAwICkgewotI2lmIEhBVkVfR0VUR1JOQU0gJiYgSEFWRV9HUlBfSAotICAgICAgICAgICAgZ3JwID0gZ2V0Z3JuYW0oIHNvY2tldF9ncm91cCApOwotICAgICAgICAgICAgaWYgKGdycCkKLSAgICAgICAgICAgICAgICBnaWQgPSBncnAtPmdyX2dpZDsKLSAgICAgICAgICAgIGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiQ2FuJ3QgaWRlbnRpZnkgQWdlbnRYIHNvY2tldCBncm91cCAoJXMpLlxuIiwgc29ja2V0X2dyb3VwKTsKLSAgICAgICAgfQorICAgICAgICBnaWQgPSBuZXRzbm1wX3N0cl90b19naWQoc29ja2V0X2dyb3VwKTsKICAgICAgICAgaWYgKCBnaWQgIT0gMCApCiAgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS19HUk9VUCwgZ2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYwppbmRleCA2YjBmNjVlLi4wNWYxNDhmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jCkBAIC02MCwxMyArNjAsNiBAQAogICAgIGNoYXIgKmFnZW50eF9zb2NrZXRzOwogICAgIGNoYXIgKmNwMTsKIAotI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VOSVhfRE9NQUlOCi0gICAgaW50IGFnZW50eF9kaXJfcGVybTsKLSAgICBpbnQgYWdlbnR4X3NvY2tfcGVybTsKLSAgICBpbnQgYWdlbnR4X3NvY2tfdXNlcjsKLSAgICBpbnQgYWdlbnR4X3NvY2tfZ3JvdXA7Ci0jZW5kaWYKLQogICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIE5FVFNOTVBfRFNfQUdFTlRfUk9MRSkgIT0gTUFTVEVSX0FHRU5UKQogICAgICAgICByZXR1cm47CiAKQEAgLTk4LDYgKzkxLDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfQUdFTlRYX1RJTUVPVVQpOwogICAgIHNlc3MucmV0cmllcyA9IG5ldHNubXBfZHNfZ2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX0FHRU5UWF9SRVRSSUVTKTsKKworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VOSVhfRE9NQUlOCisgICAgeworCWludCBhZ2VudHhfZGlyX3Blcm0gPQorCSAgICBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKwkJCSAgICAgICBORVRTTk1QX0RTX0FHRU5UX1hfRElSX1BFUk0pOworCWlmIChhZ2VudHhfZGlyX3Blcm0gPT0gMCkKKwkgICAgYWdlbnR4X2Rpcl9wZXJtID0gTkVUU05NUF9BR0VOVF9ESVJFQ1RPUllfTU9ERTsKKwluZXRzbm1wX3VuaXhfY3JlYXRlX3BhdGhfd2l0aF9tb2RlKGFnZW50eF9kaXJfcGVybSk7CisgICAgfQorI2VuZGlmCisKICAgICBjcDEgPSBhZ2VudHhfc29ja2V0czsKICAgICB3aGlsZSAoY3AxKSB7CiAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0OwpAQCAtMTExLDQ0ICsxMTYsMTUgQEAKICAgICAgICAgaWYgKGNwMSAhPSBOVUxMKSB7CiAgICAgICAgICAgICAqY3AxKysgPSAnXDAnOwogCX0KLSAgICAKLSAgICAgICAgaWYgKHNlc3MucGVlcm5hbWVbMF0gPT0gJy8nKSB7Ci0jaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVU5JWF9ET01BSU4KLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiAgSWYgdGhpcyBpcyBhIFVuaXggcGF0aG5hbWUsCi0gICAgICAgICAgICAgKiAgdHJ5IGFuZCBjcmVhdGUgdGhlIGRpcmVjdG9yeSBmaXJzdC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgYWdlbnR4X2Rpcl9wZXJtID0gbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfWF9ESVJfUEVSTSk7Ci0gICAgICAgICAgICBpZiAoYWdlbnR4X2Rpcl9wZXJtID09IDApCi0gICAgICAgICAgICAgICAgYWdlbnR4X2Rpcl9wZXJtID0gTkVUU05NUF9BR0VOVF9ESVJFQ1RPUllfTU9ERTsKLSAgICAgICAgICAgIGlmIChta2RpcmhpZXIoc2Vzcy5wZWVybmFtZSwgKG1vZGVfdClhZ2VudHhfZGlyX3Blcm0sIDEpKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5IGZvciB0aGUgYWdlbnRYIHNvY2tldDogJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2Vzcy5wZWVybmFtZSk7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgbmV0c25tcF9zZXNzX2xvZ19lcnJvcihMT0dfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaXggZG9tYWluIHN1cHBvcnQgbm90IGF2YWlsYWJsZVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlc3MpOwotI2VuZGlmCi0gICAgICAgIH0KLSAgICAKKwogICAgICAgICAvKgotICAgICAgICAgKiAgT3RoZXJ3aXNlLCBsZXQgJ3NubXBfb3BlbicgaW50ZXJwcmV0IHRoZSBzdHJpbmcuCisgICAgICAgICAqICBMZXQgJ3NubXBfb3BlbicgaW50ZXJwcmV0IHRoZSBkZXNjcmlwdG9yLgogICAgICAgICAgKi8KICAgICAgICAgc2Vzcy5sb2NhbF9wb3J0ID0gQUdFTlRYX1BPUlQ7ICAgICAgLyogSW5kaWNhdGUgc2VydmVyICYgc2V0IGRlZmF1bHQgcG9ydCAqLwogICAgICAgICBzZXNzLnJlbW90ZV9wb3J0ID0gMDsKICAgICAgICAgc2Vzcy5jYWxsYmFjayA9IGhhbmRsZV9tYXN0ZXJfYWdlbnR4X3BhY2tldDsKICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICB0ID0gbmV0c25tcF90cmFuc3BvcnRfb3Blbl9zZXJ2ZXIoImFnZW50eCIsIHNlc3MucGVlcm5hbWUpOwotICAgICAgICBpZiAodCA9PSBOVUxMICYmIGVycm5vID09IEVBRERSSU5VU0UpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBDb3VsZCBiZSBhIGxlZnQtb3ZlciBzb2NrZXQgKG5vdyBkZWxldGVkKQotICAgICAgICAgICAgICogVHJ5IGFnYWluCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHQgPSBuZXRzbm1wX3RyYW5zcG9ydF9vcGVuX3NlcnZlcigiYWdlbnR4Iiwgc2Vzcy5wZWVybmFtZSk7Ci0gICAgICAgIH0KICAgICAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIGRpYWdub3NlIHNubXBfb3BlbiBlcnJvcnMgd2l0aCB0aGUgaW5wdXQgbmV0c25tcF9zZXNzaW9uCkBAIC0xNzEsMjMgKzE0NywyNCBAQAogICAgICAgICB9IGVsc2UgewogI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VOSVhfRE9NQUlOCiAgICAgICAgICAgICBpZiAodC0+ZG9tYWluID09IG5ldHNubXBfVW5peERvbWFpbiAmJiB0LT5sb2NhbCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBuYW1lW3NpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pICsgMV07Ci0gICAgICAgICAgICAgICAgbWVtY3B5KG5hbWUsIHQtPmxvY2FsLCB0LT5sb2NhbF9sZW5ndGgpOwotICAgICAgICAgICAgICAgIG5hbWVbdC0+bG9jYWxfbGVuZ3RoXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBBcHBseSBhbnkgc2V0dGluZ3MgdG8gdGhlIG93bmVyc2hpcC9wZXJtaXNzaW9ucyBvZiB0aGUKICAgICAgICAgICAgICAgICAgKiBBZ2VudFggc29ja2V0CiAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgYWdlbnR4X3NvY2tfcGVybSA9CisgICAgICAgICAgICAgICAgaW50IGFnZW50eF9zb2NrX3Blcm0gPQogICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfWF9TT0NLX1BFUk0pOwotICAgICAgICAgICAgICAgIGFnZW50eF9zb2NrX3VzZXIgPQorICAgICAgICAgICAgICAgIGludCBhZ2VudHhfc29ja191c2VyID0KICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS19VU0VSKTsKLSAgICAgICAgICAgICAgICBhZ2VudHhfc29ja19ncm91cCA9CisgICAgICAgICAgICAgICAgaW50IGFnZW50eF9zb2NrX2dyb3VwID0KICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS19HUk9VUCk7CiAKKyAgICAgICAgICAgICAgICBjaGFyIG5hbWVbc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl91bikgKyAxXTsKKyAgICAgICAgICAgICAgICBtZW1jcHkobmFtZSwgdC0+bG9jYWwsIHQtPmxvY2FsX2xlbmd0aCk7CisgICAgICAgICAgICAgICAgbmFtZVt0LT5sb2NhbF9sZW5ndGhdID0gJ1wwJzsKKwogICAgICAgICAgICAgICAgIGlmIChhZ2VudHhfc29ja19wZXJtICE9IDApCiAgICAgICAgICAgICAgICAgICAgIGNobW9kKG5hbWUsIGFnZW50eF9zb2NrX3Blcm0pOwogCkBAIC0yMTMsNiArMTkwLDEwIEBACiAgICAgICAgIH0KICAgICB9CiAKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VTklYX0RPTUFJTgorICAgIG5ldHNubXBfdW5peF9kb250X2NyZWF0ZV9wYXRoKCk7CisjZW5kaWYKKwogICAgIFNOTVBfRlJFRShhZ2VudHhfc29ja2V0cyk7CiAgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiaW5pdGlhbGl6aW5nLi4uICAgRE9ORVxuIikpOwogfQpAQCAtMjM0LDcgKzIxNSw3IEBACiAKICAgICBjYWNoZSA9IG5ldHNubXBfaGFuZGxlcl9jaGVja19jYWNoZShjYWNoZSk7CiAgICAgaWYgKCFjYWNoZSkgewotICAgICAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJyZXNwb25zZSB0b28gbGF0ZSBvbiBzZXNzaW9uICUwOHBcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgInJlc3BvbnNlIHRvbyBsYXRlIG9uIHNlc3Npb24gJThwXG4iLAogICAgICAgICAgICAgICAgICAgICBzZXNzaW9uKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTI0Myw4ICsyMjQsOCBAQAogICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CiAgICAgY2FzZSBORVRTTk1QX0NBTExCQUNLX09QX1RJTUVEX09VVDp7CiAgICAgICAgICAgICB2b2lkICAgICAgICAgICAqcyA9IHNubXBfc2Vzc19wb2ludGVyKHNlc3Npb24pOwotICAgICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAidGltZW91dCBvbiBzZXNzaW9uICUwOHBcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJ0aW1lb3V0IG9uIHNlc3Npb24gJThwIHJlcT0weCV4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiwgKHVuc2lnbmVkKXJlcWlkKSk7CiAKICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZChyZXF1ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUVVFU1RfSVNfTk9UX0RFTEVHQVRFRCk7CkBAIC0yODEsMTAgKzI2MiwxMCBAQAogICAgIGNhc2UgTkVUU05NUF9DQUxMQkFDS19PUF9ESVNDT05ORUNUOgogICAgIGNhc2UgTkVUU05NUF9DQUxMQkFDS19PUF9TRU5EX0ZBSUxFRDoKICAgICAgICAgaWYgKG9wZXJhdGlvbiA9PSBORVRTTk1QX0NBTExCQUNLX09QX0RJU0NPTk5FQ1QpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgImRpc2Nvbm5lY3Qgb24gc2Vzc2lvbiAlMDhwXG4iLAorICAgICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiZGlzY29ubmVjdCBvbiBzZXNzaW9uICU4cFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24pKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgInNlbmQgZmFpbGVkIG9uIHNlc3Npb24gJTA4cFxuIiwKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgInNlbmQgZmFpbGVkIG9uIHNlc3Npb24gJThwXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbikpOwogICAgICAgICB9CiAgICAgICAgIGNsb3NlX2FnZW50eF9zZXNzaW9uKHNlc3Npb24sIC0xKTsKQEAgLTMwOCw5ICsyODksMTAgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiZ290IHJlc3BvbnNlIGVycnN0YXQ9JWQsIChyZXE9MHgleCx0cmFucz0iCisgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiZ290IHJlc3BvbnNlIGVycnN0YXQ9JWxkLCAocmVxPTB4JXgsdHJhbnM9IgogICAgICAgICAgICAgICAgICIweCV4LHNlc3M9MHgleClcbiIsCi0gICAgICAgICAgICAgICAgcGR1LT5lcnJzdGF0LHBkdS0+cmVxaWQscGR1LT50cmFuc2lkLCBwZHUtPnNlc3NpZCkpOworICAgICAgICAgICAgICAgIHBkdS0+ZXJyc3RhdCwgKHVuc2lnbmVkKXBkdS0+cmVxaWQsICh1bnNpZ25lZClwZHUtPnRyYW5zaWQsCisJCSh1bnNpZ25lZClwZHUtPnNlc3NpZCkpOwogCiAgICAgaWYgKHBkdS0+ZXJyc3RhdCAhPSBBR0VOVFhfRVJSX05PRVJST1IpIHsKICAgICAgICAgLyogW1JGQyAyNDcxIC0gNy4yLjUuMi5dCkBAIC0zODcsOSArMzY5LDkgQEAKICAgICAgICAgICAgIERFQlVHTVNHT0lEKCgiYWdlbnR4L21hc3RlciIsIHZhci0+bmFtZSwgdmFyLT5uYW1lX2xlbmd0aCkpOwogICAgICAgICAgICAgREVCVUdNU0coKCJhZ2VudHgvbWFzdGVyIiwgIlxuIikpOwogICAgICAgICAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgTkVUU05NUF9EU19BR0VOVF9WRVJCT1NFKSkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIiAgICA+PiAiKSk7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dWQVIoKCJzbm1wX2FnZW50IiwgdmFyKSk7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0coKCJzbm1wX2FnZW50IiwgIlxuIikpOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgIiAgICA+PiAiKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dWQVIoKCJhZ2VudHgvbWFzdGVyIiwgdmFyKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0coKCJhZ2VudHgvbWFzdGVyIiwgIlxuIikpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvKgpAQCAtNjE1LDEyICs1OTcsMTEgQEAKICAgICAvKgogICAgICAqIHNlbmQgdGhlIHJlcXVlc3RzIG91dC4KICAgICAgKi8KLSAgICBERUJVR01TR1RMKCgiYWdlbnR4IiwgInNlbmRpbmcgcGR1IChyZXE9MHgleCx0cmFucz0weCV4LHNlc3M9MHgleClcbiIsCi0gICAgICAgICAgICAgICAgcGR1LT5yZXFpZCxwZHUtPnRyYW5zaWQsIHBkdS0+c2Vzc2lkKSk7CisgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAic2VuZGluZyBwZHUgKHJlcT0weCV4LHRyYW5zPTB4JXgsc2Vzcz0weCV4KVxuIiwKKyAgICAgICAgICAgICAgICAodW5zaWduZWQpcGR1LT5yZXFpZCwgKHVuc2lnbmVkKXBkdS0+dHJhbnNpZCwgKHVuc2lnbmVkKXBkdS0+c2Vzc2lkKSk7CiAgICAgcmVzdWx0ID0gc25tcF9hc3luY19zZW5kKGF4X3Nlc3Npb24sIHBkdSwgYWdlbnR4X2dvdF9yZXNwb25zZSwgY2JfZGF0YSk7Ci0KLSAgICBpZiAocmVzdWx0ID09IDAgKSB7Ci0gICAgICAgIHNubXBfZnJlZV9wZHUoIHBkdSApOworICAgIGlmIChyZXN1bHQgPT0gMCkgeworICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmggYi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmgKaW5kZXggYjZhN2Y2Yi4uYTVkYmZhZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuaApAQCAtNyw3ICs3LDYgQEAKIGNvbmZpZ19yZXF1aXJlKGFnZW50eC9jbGllbnQpCiBjb25maWdfcmVxdWlyZShhZ2VudHgvbWFzdGVyX2FkbWluKQogY29uZmlnX3JlcXVpcmUoYWdlbnR4L2FnZW50eF9jb25maWcpCi1jb25maWdfcmVxdWlyZShtaWJJSS9zeXNPUlRhYmxlKQogCiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X21hc3Rlcih2b2lkKTsKICAgICAgdm9pZCAgICAgICAgICAgIHJlYWxfaW5pdF9tYXN0ZXIodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMKaW5kZXggMTJkZGI1ZC4uYjA3M2RhMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYwpAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2luZGV4Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oPgotI2luY2x1ZGUgIm1pYklJL3N5c09SVGFibGUuaCIKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmg+CiAjaW5jbHVkZSAibWFzdGVyLmgiCiAKIGV4dGVybiBzdHJ1Y3QgdGltZXZhbCBzdGFydHRpbWU7CkBAIC03MCw3ICs3MCw3IEBACiAgICAgbmV0c25tcF9zZXNzaW9uICpzcDsKICAgICBzdHJ1Y3QgdGltZXZhbCAgbm93OwogCi0gICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAib3BlbiAlMDhwXG4iLCBzZXNzaW9uKSk7CisgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAib3BlbiAlOHBcbiIsIHNlc3Npb24pKTsKICAgICBzcCA9IChuZXRzbm1wX3Nlc3Npb24gKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3Nlc3Npb24pKTsKICAgICBpZiAoc3AgPT0gTlVMTCkgewogICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBBR0VOVFhfRVJSX09QRU5fRkFJTEVEOwpAQCAtMTE3LDcgKzExNyw3IEBACiAgICAgc3AtPmZsYWdzIHw9IChwZHUtPmZsYWdzICYgQUdFTlRYX01TR19GTEFHX05FVFdPUktfQllURV9PUkRFUik7CiAgICAgc3AtPm5leHQgPSBzZXNzaW9uLT5zdWJzZXNzaW9uOwogICAgIHNlc3Npb24tPnN1YnNlc3Npb24gPSBzcDsKLSAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJvcGVuZWQgJTA4cCA9ICVkIHdpdGggZmxhZ3MgPSAlMDJ4XG4iLAorICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgIm9wZW5lZCAlOHAgPSAlbGQgd2l0aCBmbGFncyA9ICUwMmx4XG4iLAogICAgICAgICAgICAgICAgIHNwLCBzcC0+c2Vzc2lkLCBzcC0+ZmxhZ3MgJiBBR0VOVFhfTVNHX0ZMQUdTX01BU0spKTsKIAogICAgIHJldHVybiBzcC0+c2Vzc2lkOwpAQCAtMTMxLDcgKzEzMSw3IEBACiAgICAgaWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm4gQUdFTlRYX0VSUl9OT1RfT1BFTjsKIAotICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgImNsb3NlICUwOHAsICVkXG4iLCBzZXNzaW9uLCBzZXNzaWQpKTsKKyAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJjbG9zZSAlOHAsICVkXG4iLCBzZXNzaW9uLCBzZXNzaWQpKTsKICAgICBpZiAoc2Vzc2lkID09IC0xKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFRoZSBmb2xsb3dpbmcgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGxvY2tpbmcgdXAgdGhlIGFnZW50IHdoZW4KQEAgLTE0OSw5ICsxNDksNyBAQAogICAgICAgICAgICAgICAgIAogICAgICAgICB1bnJlZ2lzdGVyX21pYnNfYnlfc2Vzc2lvbihzZXNzaW9uKTsKICAgICAgICAgdW5yZWdpc3Rlcl9pbmRleF9ieV9zZXNzaW9uKHNlc3Npb24pOwotICAgICAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SX1NFU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXNlc3Npb24pOworICAgICAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGVfYnlfc2Vzc2lvbihzZXNzaW9uKTsKIAlTTk1QX0ZSRUUoc2Vzc2lvbi0+bXl2b2lkKTsKICAgICAgICAgcmV0dXJuIEFHRU5UWF9FUlJfTk9FUlJPUjsKICAgICB9CkBAIC0xNjMsOSArMTYxLDcgQEAKICAgICAgICAgaWYgKHNwLT5zZXNzaWQgPT0gc2Vzc2lkKSB7CiAgICAgICAgICAgICB1bnJlZ2lzdGVyX21pYnNfYnlfc2Vzc2lvbihzcCk7CiAgICAgICAgICAgICB1bnJlZ2lzdGVyX2luZGV4X2J5X3Nlc3Npb24oc3ApOwotICAgICAgICAgICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRVFfVU5SRUdfU1lTT1JfU0VTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXNwKTsKKyAgICAgICAgICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9ieV9zZXNzaW9uKHNwKTsKIAogICAgICAgICAgICAgKnByZXZOZXh0ID0gc3AtPm5leHQ7CiAKQEAgLTE3OCw3ICsxNzQsNyBAQAogICAgICAgICAgICAgZnJlZShzcCk7CiAgICAgICAgICAgICBzcCA9IE5VTEw7CiAKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgImNsb3NlZCAlMDhwLCAlZCBva2F5XG4iLAorICAgICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiY2xvc2VkICU4cCwgJWQgb2theVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24sIHNlc3NpZCkpOwogICAgICAgICAgICAgcmV0dXJuIEFHRU5UWF9FUlJfTk9FUlJPUjsKICAgICAgICAgfQpAQCAtMzgwLDIwICszNzYsMTcgQEAKIGFkZF9hZ2VudF9jYXBzX2xpc3QobmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbiwgbmV0c25tcF9wZHUgKnBkdSkKIHsKICAgICBuZXRzbm1wX3Nlc3Npb24gKnNwOwotICAgIHN0cnVjdCBzeXNPUlRhYmxlIHBhcm1zOworICAgIGNoYXIqIGRlc2NyaXB0aW9uOwogCiAgICAgc3AgPSBmaW5kX2FnZW50eF9zZXNzaW9uKHNlc3Npb24sIHBkdS0+c2Vzc2lkKTsKICAgICBpZiAoc3AgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIEFHRU5UWF9FUlJfTk9UX09QRU47CiAKLSAgICBwYXJtcy5PUl9vaWQgPSBwZHUtPnZhcmlhYmxlcy0+bmFtZTsKLSAgICBwYXJtcy5PUl9vaWRsZW4gPSBwZHUtPnZhcmlhYmxlcy0+bmFtZV9sZW5ndGg7Ci0gICAgcGFybXMuT1JfZGVzY3IgID0gbmV0c25tcF9zdHJkdXBfYW5kX251bGwocGR1LT52YXJpYWJsZXMtPnZhbC5zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT52YXJpYWJsZXMtPnZhbF9sZW4pOwotICAgIHBhcm1zLk9SX3Nlc3MgPSBzcDsKLSAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRVFfUkVHX1NZU09SLCAodm9pZCopJnBhcm1zKTsKLSAgICBmcmVlKHBhcm1zLk9SX2Rlc2NyKTsKKyAgICBkZXNjcmlwdGlvbiA9IG5ldHNubXBfc3RyZHVwX2FuZF9udWxsKHBkdS0+dmFyaWFibGVzLT52YWwuc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT52YXJpYWJsZXMtPnZhbF9sZW4pOworICAgIHJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhwZHUtPnZhcmlhYmxlcy0+bmFtZSwgcGR1LT52YXJpYWJsZXMtPm5hbWVfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwgc3ApOworICAgIGZyZWUoZGVzY3JpcHRpb24pOwogICAgIHJldHVybiBBR0VOVFhfRVJSX05PRVJST1I7CiB9CiAKQEAgLTQwMSwyMiArMzk0LDE4IEBACiByZW1vdmVfYWdlbnRfY2Fwc19saXN0KG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24sIG5ldHNubXBfcGR1ICpwZHUpCiB7CiAgICAgbmV0c25tcF9zZXNzaW9uICpzcDsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSBwYXJtczsKKyAgICBpbnQgcmM7CiAKICAgICBzcCA9IGZpbmRfYWdlbnR4X3Nlc3Npb24oc2Vzc2lvbiwgcGR1LT5zZXNzaWQpOwogICAgIGlmIChzcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gQUdFTlRYX0VSUl9OT1RfT1BFTjsKIAotICAgIHBhcm1zLk9SX29pZCA9IHBkdS0+dmFyaWFibGVzLT5uYW1lOwotICAgIHBhcm1zLk9SX29pZGxlbiA9IHBkdS0+dmFyaWFibGVzLT5uYW1lX2xlbmd0aDsKLSAgICBwYXJtcy5PUl9zZXNzID0gc3A7Ci0gICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SLCAodm9pZCopJnBhcm1zKTsKLSAgICAvKgotICAgICAqIG5vIGVhc3kgd2F5IHRvIGdldCBhbiBlcnJvciBjb2RlLi4uCi0gICAgICogaWYgKHJjIDwgMCkKLSAgICAgKiAgIHJldHVybiBBR0VOVFhfRVJSX1VOS05PV05fQUdFTlRDQVBTOwotICAgICAqLworICAgIHJjID0gdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3MocGR1LT52YXJpYWJsZXMtPm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnZhcmlhYmxlcy0+bmFtZV9sZW5ndGgsIHNwKTsKKworICAgIGlmIChyYyA8IDApCisgICAgICByZXR1cm4gQUdFTlRYX0VSUl9VTktOT1dOX0FHRU5UQ0FQUzsKKwogICAgIHJldHVybiBBR0VOVFhfRVJSX05PRVJST1I7CiB9CiAKQEAgLTQ1NCw3ICs0NDMsMTggQEAKICAgICAgKiAgICAgYXMgdGhpcyBpcyB2YWxpZCBBZ2VudFggc3ludGF4LgogICAgICAqLwogCi0gICAgc2VuZF90cmFwX3ZhcnMoLTEsIC0xLCBwZHUtPnZhcmlhYmxlcyk7CisJLyogSWYgYSBjb250ZXh0IG5hbWUgd2FzIHNwZWNpZmllZCwgc2VuZCB0aGUgdHJhcCB1c2luZyB0aGF0IGNvbnRleHQuCisJICogT3RoZXJ3aXNlLCBzZW5kIHRoZSB0cmFwIHdpdGhvdXQgdGhlIGNvbnRleHQgdXNpbmcgdGhlIG9sZCBtZXRob2QgKi8KKwlpZiAocGR1LT5jb250ZXh0TmFtZSAhPSBOVUxMKQorCXsKKyAgICAgICAgc2VuZF90cmFwX3ZhcnNfd2l0aF9jb250ZXh0KC0xLCAtMSwgcGR1LT52YXJpYWJsZXMsIAorICAgICAgICAgICAgICAgICAgICAgICBwZHUtPmNvbnRleHROYW1lKTsKKwl9CisJZWxzZQorCXsKKyAgICAgICAgc2VuZF90cmFwX3ZhcnMoLTEsIC0xLCBwZHUtPnZhcmlhYmxlcyk7CisJfQorCiAgICAgcmV0dXJuIEFHRU5UWF9FUlJfTk9FUlJPUjsKIH0KIApAQCAtNDgxLDEyICs0ODEsMTYgQEAKIAogICAgIGlmIChvcGVyYXRpb24gPT0gTkVUU05NUF9DQUxMQkFDS19PUF9ESVNDT05ORUNUKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwKLSAgICAgICAgICAgICAgICAgICAgInRyYW5zcG9ydCBkaXNjb25uZWN0IG9uIHNlc3Npb24gJTA4cFxuIiwgc2Vzc2lvbikpOworICAgICAgICAgICAgICAgICAgICAidHJhbnNwb3J0IGRpc2Nvbm5lY3Qgb24gc2Vzc2lvbiAlOHBcbiIsIHNlc3Npb24pKTsKICAgICAgICAgLyoKICAgICAgICAgICogU2h1dCB0aGlzIHNlc3Npb24gZG93biBncmFjZWZ1bGx5LiAgCiAgICAgICAgICAqLwogICAgICAgICBjbG9zZV9hZ2VudHhfc2Vzc2lvbihzZXNzaW9uLCAtMSk7CiAgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09IE5FVFNOTVBfQ0FMTEJBQ0tfT1BfQ09OTkVDVCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsCisgICAgICAgICAgICAgICAgICAgICJ0cmFuc3BvcnQgY29ubmVjdCBvbiBzZXNzaW9uICU4cFxuIiwgc2Vzc2lvbikpOworICAgICAgICByZXR1cm4gMTsKICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiAhPSBORVRTTk1QX0NBTExCQUNLX09QX1JFQ0VJVkVEX01FU1NBR0UpIHsKICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAidW5leHBlY3RlZCBjYWxsYmFjayBvcCAlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uKSk7CkBAIC01MDMsOCArNTA3LDkgQEAKICAgICAgICAgYXNwID0gaW5pdF9hZ2VudF9zbm1wX3Nlc3Npb24oc2Vzc2lvbiwgcGR1KTsKICAgICB9CiAKLSAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJoYW5kbGUgcGR1IChyZXE9MHgleCx0cmFucz0weCV4LHNlc3M9MHgleClcbiIsCi0gICAgICAgICAgICAgICAgcGR1LT5yZXFpZCxwZHUtPnRyYW5zaWQsIHBkdS0+c2Vzc2lkKSk7CisgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiaGFuZGxlIHBkdSAocmVxPTB4JWx4LHRyYW5zPTB4JWx4LHNlc3M9MHglbHgpXG4iLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXBkdS0+cmVxaWQsICh1bnNpZ25lZCBsb25nKXBkdS0+dHJhbnNpZCwKKwkJKHVuc2lnbmVkIGxvbmcpcGR1LT5zZXNzaWQpKTsKICAgICAKICAgICBzd2l0Y2ggKHBkdS0+Y29tbWFuZCkgewogICAgIGNhc2UgQUdFTlRYX01TR19PUEVOOgpAQCAtNTc5LDkgKzU4NCwxMCBAQAogICAgIGFzcC0+cGR1LT50aW1lID0gY2FsY3VsYXRlX3RpbWVfZGlmZigmbm93LCAmc3RhcnR0aW1lKTsKICAgICBhc3AtPnBkdS0+Y29tbWFuZCA9IEFHRU5UWF9NU0dfUkVTUE9OU0U7CiAgICAgYXNwLT5wZHUtPmVycnN0YXQgPSBhc3AtPnN0YXR1czsKLSAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJzZW5kIHJlc3BvbnNlLCBzdGF0ICVkIChyZXE9MHgleCx0cmFucz0iCi0gICAgICAgICAgICAgICAgIjB4JXgsc2Vzcz0weCV4KVxuIiwKLSAgICAgICAgICAgICAgICBhc3AtPnN0YXR1cywgcGR1LT5yZXFpZCxwZHUtPnRyYW5zaWQsIHBkdS0+c2Vzc2lkKSk7CisgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAic2VuZCByZXNwb25zZSwgc3RhdCAlZCAocmVxPTB4JWx4LHRyYW5zPSIKKyAgICAgICAgICAgICAgICAiMHglbHgsc2Vzcz0weCVseClcbiIsCisgICAgICAgICAgICAgICAgYXNwLT5zdGF0dXMsICh1bnNpZ25lZCBsb25nKXBkdS0+cmVxaWQsCisJCSh1bnNpZ25lZCBsb25nKXBkdS0+dHJhbnNpZCwgKHVuc2lnbmVkIGxvbmcpcGR1LT5zZXNzaWQpKTsKICAgICBpZiAoIXNubXBfc2VuZChhc3AtPnNlc3Npb24sIGFzcC0+cGR1KSkgewogICAgICAgICBjaGFyICAgICAgICAgICAqZWIgPSBOVUxMOwogICAgICAgICBpbnQgICAgICAgICAgICAgcGUsIHBzZTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMKaW5kZXggYTQ4Mjc3MC4uNzcxYjQ1YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMKQEAgLTEzNSw3ICsxMzUsNyBAQAogI2VuZGlmCiAgICAgfQogICAgIERFQlVHRFVNUFNFVFVQKCJzZW5kIiwgKCpidWYgKyBpbGVuKSwgNCk7Ci0gICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgSW50ZWdlcjpcdCVsdSAoMHglLjJsWClcbiIsIGl2YWx1ZSwKKyAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBJbnRlZ2VyOlx0JXUgKDB4JS4yWClcbiIsIGl2YWx1ZSwKICAgICAgICAgICAgICAgaXZhbHVlKSk7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0xNjgsNyArMTY4LDcgQEAKICNlbmRpZgogICAgIH0KICAgICBERUJVR0RVTVBTRVRVUCgic2VuZCIsIG9yaWdfYnVmcCwgNCk7Ci0gICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgb3JpZ192YWwsCisgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgSW50ZWdlcjpcdCV1ICgweCUuMlgpXG4iLCBvcmlnX3ZhbCwKICAgICAgICAgICAgICAgb3JpZ192YWwpKTsKIH0KIApAQCAtMjY0LDggKzI2NCw4IEBACiAKICAgICBERUJVR0RVTVBIRUFERVIoInNlbmQiLCAiT0lEIEhlYWRlciIpOwogICAgIERFQlVHRFVNUFNFVFVQKCJzZW5kIiwgKCpidWYgKyBpbGVuKSwgNCk7Ci0gICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgIyBzdWJpZHM6XHQlZCAoMHglLjJYKVxuIiwgbmFtZV9sZW4sCi0gICAgICAgICAgICAgIG5hbWVfbGVuKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgIyBzdWJpZHM6XHQlZCAoMHglLjJYKVxuIiwgKGludCluYW1lX2xlbiwKKyAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCluYW1lX2xlbikpOwogICAgIERFQlVHUFJJTlRJTkRFTlQoImR1bXB2X3NlbmQiKTsKICAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBwcmVmaXg6XHQlZCAoMHglLjJYKVxuIiwgcHJlZml4LCBwcmVmaXgpKTsKICAgICBERUJVR1BSSU5USU5ERU5UKCJkdW1wdl9zZW5kIik7CkBAIC00NDksNiArNDQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cC0+bmFtZSwgdnAtPm5hbWVfbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfb3JkZXIpKSB7CiAgICAgICAgIERFQlVHSU5ERU5UTEVTUygpOworICAgICAgICBERUJVR0lOREVOVExFU1MoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIERFQlVHSU5ERU5UTEVTUygpOwpAQCAtNDg4LDcgKzQ4OSw3IEBACiAgICAgY2FzZSBBU05fT1BBUVVFX0RPVUJMRToKICAgICAgICAgREVCVUdEVU1QSEVBREVSKCJzZW5kIiwgIkJ1aWxkIE9wYXF1ZSBEb3VibGUiKTsKICAgICAgICAgREVCVUdQUklOVElOREVOVCgiZHVtcHZfc2VuZCIpOwotICAgICAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBEb3VibGU6XHQlbGZcbiIsICoodnAtPnZhbC5kb3VibGVWYWwpKSk7CisgICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIERvdWJsZTpcdCVmXG4iLCAqKHZwLT52YWwuZG91YmxlVmFsKSkpOwogICAgICAgICBpZiAoIWFnZW50eF9yZWFsbG9jX2J1aWxkX2RvdWJsZQogICAgICAgICAgICAgKGJ1ZiwgYnVmX2xlbiwgb3V0X2xlbiwgYWxsb3dfcmVhbGxvYywgKih2cC0+dmFsLmRvdWJsZVZhbCksCiAgICAgICAgICAgICAgbmV0d29ya19vcmRlcikpIHsKQEAgLTU0OCw2ICs1NDksNyBAQAogICAgICAgICAgICAgICAgIERFQlVHSU5ERU5UTEVTUygpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBERUJVR0RVTVBIRUFERVIoInNlbmQiLCAiQnVpbGQgQ291bnRlcjY0IChsb3csIGhpZ2gpIik7CiAgICAgICAgICAgICBpZiAoIWFnZW50eF9yZWFsbG9jX2J1aWxkX2ludApAQCAtNTYyLDYgKzU2NCw3IEBACiAgICAgICAgICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBERUJVR0lOREVOVExFU1MoKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIApAQCAtNjk5LDYgKzcwMiwxNyBAQAogICAgICAgICBwZHUtPmZsYWdzICY9IH4oQUdFTlRYX01TR19GTEFHX05PTl9ERUZBVUxUX0NPTlRFWFQpOwogICAgIH0KIAorCS8qIFdlJ3ZlIHJlY2VpdmVkIGEgUERVIHRoYXQgaGFzIHNwZWNpZmllZCBhIGNvbnRleHQuICBOZXRTTk1QIGhvd2V2ZXIsIHVzZXMKKwkgKiB0aGUgcGR1LT5jb21tdW5pdHkgZmllbGQgdG8gc3BlY2lmeSBjb250ZXh0IHdoZW4gdXNpbmcgdGhlIEFnZW50WAorCSAqIHByb3RvY29sLiAgVGhlcmVmb3JlIHdlIG5lZWQgdG8gY29weSB0aGUgY29udGV4dCBuYW1lIGFuZCBsZW5ndGggaW50byB0aGUKKwkgKiBwZHUtPmNvbW11bml0eSBhbmQgcGR1LT5jb21tdW5pdHlfbGVuIGZpZWxkcywgcmVzcGVjdGl2ZWx5LiAqLworCWlmIChwZHUtPmNvbnRleHROYW1lICE9IE5VTEwgJiYgcGR1LT5jb21tdW5pdHkgPT0gTlVMTCkKKwl7CQorCQlwZHUtPmNvbW11bml0eSAgICAgPSBzdHJkdXAocGR1LT5jb250ZXh0TmFtZSk7CisJCXBkdS0+Y29tbXVuaXR5X2xlbiA9IHBkdS0+Y29udGV4dE5hbWVMZW47CisJCXBkdS0+ZmxhZ3MgfD0gQUdFTlRYX01TR19GTEFHX05PTl9ERUZBVUxUX0NPTlRFWFQ7CisJfQorCiAgICAgLyoKICAgICAgKiBCdWlsZCB0aGUgaGVhZGVyIChhbmQgY29udGV4dCBpZiBhcHByb3ByaWF0ZSkuICAKICAgICAgKi8KQEAgLTkwMiw3ICs5MTYsNyBAQAogICAgICAgICB9CiAgICAgICAgIERFQlVHRFVNUEhFQURFUigic2VuZCIsICJSZXNwb25zZSIpOwogICAgICAgICBERUJVR0RVTVBTRVRVUCgic2VuZCIsICgqYnVmICsgKm91dF9sZW4gLSA0KSwgNCk7Ci0gICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIHN5c1VwVGltZTpcdCVkXG4iLCBwZHUtPnRpbWUpKTsKKyAgICAgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgc3lzVXBUaW1lOlx0JWx1XG4iLCBwZHUtPnRpbWUpKTsKICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAKICAgICAgICAgaWYgKCFhZ2VudHhfcmVhbGxvY19idWlsZF9zaG9ydApAQCAtOTE4LDkgKzkzMiw5IEBACiAgICAgICAgIH0KICAgICAgICAgREVCVUdEVU1QSEVBREVSKCJzZW5kIiwgIlJlc3BvbnNlIGVycm9ycyIpOwogICAgICAgICBERUJVR0RVTVBTRVRVUCgic2VuZCIsICgqYnVmICsgKm91dF9sZW4gLSA0KSwgNCk7Ci0gICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIGVycnN0YXQ6XHQlZFxuIiwgcGR1LT5lcnJzdGF0KSk7CisgICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIGVycnN0YXQ6XHQlbGRcbiIsIHBkdS0+ZXJyc3RhdCkpOwogICAgICAgICBERUJVR1BSSU5USU5ERU5UKCJkdW1wdl9zZW5kIik7Ci0gICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIGVycmluZGV4Olx0JWRcbiIsIHBkdS0+ZXJyaW5kZXgpKTsKKyAgICAgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgZXJyaW5kZXg6XHQlbGRcbiIsIHBkdS0+ZXJyaW5kZXgpKTsKICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAKICAgICAgICAgLyoKQEAgLTEwNjMsNyArMTA3Nyw3IEBACiAgICAgICAgIHZhbHVlICs9IGRhdGFbMF07CiAjZW5kaWYKICAgICB9Ci0gICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgdmFsdWUsIHZhbHVlKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgSW50ZWdlcjpcdCV1ICgweCUuMlgpXG4iLCB2YWx1ZSwgdmFsdWUpKTsKIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTEwOTQsNyArMTEwOCw3IEBACiAgICAgfQogCiAgICAgREVCVUdEVU1QU0VUVVAoInJlY3YiLCBkYXRhLCAyKTsKLSAgICBERUJVR01TRygoImR1bXB2X3JlY3YiLCAiICBTaG9ydDpcdCVsZCAoMHglLjJYKVxuIiwgdmFsdWUsIHZhbHVlKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgU2hvcnQ6XHQlaHUgKDB4JS4yWClcbiIsIHZhbHVlLCB2YWx1ZSkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTE0MCw3ICsxMTU0LDcgQEAKICAgICAqbGVuZ3RoIC09IDQ7CiAKICAgICBERUJVR01TRygoImRqcCIsICIgIHBhcnNlX29pZFxuIikpOwotICAgIERFQlVHTVNHKCgiZGpwIiwgIiAgc2l6ZW9mKG9pZCkgPSAlZFxuIiwgc2l6ZW9mKG9pZCkpKTsKKyAgICBERUJVR01TRygoImRqcCIsICIgIHNpemVvZihvaWQpID0gJWRcbiIsIChpbnQpc2l6ZW9mKG9pZCkpKTsKICAgICBpZiAobl9zdWJpZCA9PSAwICYmIHByZWZpeCA9PSAwKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIE51bGwgT0lEIApAQCAtMTE1OCw3ICsxMTcyLDkgQEAKICAgICAgKi8KICAgICB0bXBfb2lkX2xlbiA9IChwcmVmaXggPyBuX3N1YmlkICsgNSA6IG5fc3ViaWQpOwogICAgIGlmICgqb2lkX2xlbiA8IHRtcF9vaWRfbGVuKSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgiLCAiT3ZlcnNpemVkIE9iamVjdCBJRFxuIikpOworICAgICAgICBERUJVR01TR1RMKCgiYWdlbnR4IiwgIk92ZXJzaXplZCBPYmplY3QgSUQgKGJ1Zj0lZCBwZHU9JWQpXG4iLAorCQkgICAgKGludCkgKm9pZF9sZW4sIHRtcF9vaWRfbGVuKSk7CisgICAgICAgIERFQlVHSU5ERU5UTEVTUygpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTExNjksNiArMTE4NSw3IEBACiAjZW5kaWYKICAgICBpZiAoKmxlbmd0aCA8IDQgKiBuX3N1YmlkKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgiLCAiSW5jb21wbGV0ZSBPYmplY3QgSURcbiIpKTsKKyAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTIyNywxNCArMTI0NCwxNCBAQAogCiAgICAgaWYgKCpsZW5ndGggPCA0KSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgiLCAiSW5jb21wbGV0ZSBzdHJpbmcgKHRvbyBzaG9ydDogJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChpbnQpKmxlbmd0aCkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBsZW4gPSBhZ2VudHhfcGFyc2VfaW50KGRhdGEsIG5ldHdvcmtfYnl0ZV9vcmRlcik7CiAgICAgaWYgKCpsZW5ndGggPCBsZW4gKyA0KSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgiLCAiSW5jb21wbGV0ZSBzdHJpbmcgKHN0aWxsIHRvbyBzaG9ydDogJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChpbnQpKmxlbmd0aCkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGxlbiA+ICpzdHJfbGVuKSB7CkBAIC0xMzIyLDcgKzEzMzksNyBAQAogICAgICAgICAqb3BhcXVlX2xlbiA9IHNpemVvZihkb3VibGUpOwogICAgICAgICBtZW1jcHkob3BhcXVlX2J1ZiwgJmZ1LmNbMF0sIHNpemVvZihkb3VibGUpKTsKICAgICAgICAgKnR5cGUgPSBBU05fT1BBUVVFX0RPVUJMRTsKLSAgICAgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIkRvdWJsZTogJWxmXG4iLCBmdS5kb3VibGVWYWwpKTsKKyAgICAgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIkRvdWJsZTogJWZcbiIsIGZ1LmRvdWJsZVZhbCkpOwogICAgICAgICByZXR1cm4gY3A7CiAKICAgICBjYXNlIEFTTl9PUEFRVUVfSTY0OgpAQCAtMTM0NSw4ICsxMzYyLDYgQEAKIHsKICAgICB1X2NoYXIgICAgICAgICAqYnVmcCA9IGRhdGE7CiAgICAgdV9pbnQgICAgICAgICAgIGludF92YWw7Ci0gICAgaW50ICAgICAgICAgICAgaW50X29mZnNldDsKLSAgICB1X2ludCAgICAgICAgICAqaW50X3B0ciA9ICh1X2ludCAqKSBkYXRhX2J1ZjsKICAgICBzdHJ1Y3QgY291bnRlcjY0IHRtcDY0OwogCiAgICAgREVCVUdEVU1QSEVBREVSKCJyZWN2IiwgIlZhckJpbmQ6Iik7CkBAIC0xNDAxLDE2ICsxNDE2LDE2IEBACiAKICAgICBjYXNlIEFTTl9DT1VOVEVSNjQ6CiAgICAgICAgIG1lbXNldCgmdG1wNjQsIDAsIHNpemVvZih0bXA2NCkpOwotICAgICAgICBpZiAobmV0d29ya19ieXRlX29yZGVyKSB7Ci0gICAgICAgICAgICB0bXA2NC5oaWdoID0gYWdlbnR4X3BhcnNlX2ludChidWZwLCAgIG5ldHdvcmtfYnl0ZV9vcmRlcik7Ci0gICAgICAgICAgICB0bXA2NC5sb3cgID0gYWdlbnR4X3BhcnNlX2ludChidWZwKzQsIG5ldHdvcmtfYnl0ZV9vcmRlcik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0bXA2NC5oaWdoID0gYWdlbnR4X3BhcnNlX2ludChidWZwKzQsIG5ldHdvcmtfYnl0ZV9vcmRlcik7Ci0gICAgICAgICAgICB0bXA2NC5sb3cgID0gYWdlbnR4X3BhcnNlX2ludChidWZwLCAgIG5ldHdvcmtfYnl0ZV9vcmRlcik7Ci0gICAgICAgIH0KKwlpZiAobmV0d29ya19ieXRlX29yZGVyKSB7CisJICAgIHRtcDY0LmhpZ2ggPSBhZ2VudHhfcGFyc2VfaW50KGJ1ZnAsICAgbmV0d29ya19ieXRlX29yZGVyKTsKKwkgICAgdG1wNjQubG93ICA9IGFnZW50eF9wYXJzZV9pbnQoYnVmcCs0LCBuZXR3b3JrX2J5dGVfb3JkZXIpOworCX0gZWxzZSB7CisJICAgIHRtcDY0LmhpZ2ggPSBhZ2VudHhfcGFyc2VfaW50KGJ1ZnArNCwgbmV0d29ya19ieXRlX29yZGVyKTsKKwkgICAgdG1wNjQubG93ICA9IGFnZW50eF9wYXJzZV9pbnQoYnVmcCwgICBuZXR3b3JrX2J5dGVfb3JkZXIpOworCX0KIAogICAgICAgICBtZW1jcHkoZGF0YV9idWYsICZ0bXA2NCwgc2l6ZW9mKHRtcDY0KSk7Ci0gICAgICAgICpkYXRhX2xlbiA9IHNpemVvZih0bXA2NCk7CisJKmRhdGFfbGVuID0gc2l6ZW9mKHRtcDY0KTsKIAlidWZwICAgICs9IDg7CiAJKmxlbmd0aCAtPSA4OwogICAgICAgICBicmVhazsKQEAgLTE1MjksNiArMTU0NCw3IEBACiAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgYnVmcCArPSA0OwogCisgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgKmxlbmd0aCAtPSAyMDsKICAgICBpZiAoKmxlbmd0aCAhPSBwYXlsb2FkKSB7ICAgLyogU2hvcnQgcGF5bG9hZCAqLwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE2MDQsMTEgKzE2MjAsMjEgQEAKICAgICAgICAgcGR1LT5jb21tdW5pdHlfbGVuID0gYnVmX2xlbjsKICAgICAgICAgc25tcF9jbG9uZV9tZW0oKHZvaWQgKiopICZwZHUtPmNvbW11bml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgYnVmZmVyLCAodW5zaWduZWQpIGJ1Zl9sZW4pOworCQkKKwkJLyogVGhlIE5ldFNOTVAgQVBJIHN0dWZmcyB0aGUgY29udGV4dCBpbnRvIHRoZSBQRFUncyBjb21tdW5pdHkgc3RyaW5nCisJCSAqIGZpZWxkLCB3aGVuIHVzaW5nIHRoZSBBZ2VudFggUHJvdG9jb2wuICBUaGUgcmVzdCBvZiB0aGUgY29kZSBob3dldmVyLAorCQkgKiBleHBlY3RzIHRvIGZpbmQgdGhlIGNvbnRleHQgaW4gdGhlIFBEVSdzIGNvbnRleHQgZmllbGQuICBUaGVyZWZvcmUgd2UKKwkJICogbmVlZCB0byBjb3B5IHRoZSBjb250ZXh0IGludG8gdGhlIFBEVSdzIGNvbnRleHQgZmllbGRzLiAgKi8KKwkJaWYgKHBkdS0+Y29tbXVuaXR5X2xlbiA+IDAgJiYgcGR1LT5jb250ZXh0TmFtZSA9PSBOVUxMKQorCQl7CisJCQlwZHUtPmNvbnRleHROYW1lICAgID0gc3RyZHVwKHBkdS0+Y29tbXVuaXR5KTsKKwkJCXBkdS0+Y29udGV4dE5hbWVMZW4gPSBwZHUtPmNvbW11bml0eV9sZW47CisJCX0KKwogICAgICAgICBidWZfbGVuID0gc2l6ZW9mKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgREVCVUdEVU1QSEVBREVSKCJyZWN2IiwgIlBEVSIpOwotICAgIERFQlVHSU5ERU5UTU9SRSgpOwogICAgIHN3aXRjaCAocGR1LT5jb21tYW5kKSB7CiAgICAgY2FzZSBBR0VOVFhfTVNHX09QRU46CiAgICAgICAgIHBkdS0+dGltZSA9ICpidWZwOyAgICAgIC8qIFRpbWVvdXQgKi8KQEAgLTE2MjEsNyArMTY0Nyw4IEBACiAgICAgICAgIERFQlVHRFVNUEhFQURFUigicmVjdiIsICJTdWJhZ2VudCBPSUQiKTsKICAgICAgICAgYnVmcCA9IGFnZW50eF9wYXJzZV9vaWQoYnVmcCwgbGVuZ3RoLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWRfYnVmZmVyLCAmb2lkX2J1Zl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+ZmxhZ3MgJiBBR0VOVFhfRkxBR1NfTkVUV09SS19CWVRFX09SREVSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJiBBR0VOVFhfRkxBR1NfTkVUV09SS19CWVRFX09SREVSKTsKICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgICAgIGlmIChidWZwID09IE5VTEwpIHsKICAgICAgICAgICAgIERFQlVHSU5ERU5UTEVTUygpOwpAQCAtMTYyOSw3ICsxNjU2LDggQEAKICAgICAgICAgfQogICAgICAgICBERUJVR0RVTVBIRUFERVIoInJlY3YiLCAiU3ViYWdlbnQgRGVzY3JpcHRpb24iKTsKICAgICAgICAgYnVmcCA9IGFnZW50eF9wYXJzZV9zdHJpbmcoYnVmcCwgbGVuZ3RoLCBidWZmZXIsICZidWZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPmZsYWdzICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBR0VOVFhfRkxBR1NfTkVUV09SS19CWVRFX09SREVSKTsKICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgICAgIGlmIChidWZwID09IE5VTEwpIHsKQEAgLTE4NzIsMTQgKzE5MDAsMTEgQEAKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIERFQlVHSU5ERU5UTEVTUygpOwotICAgICAgICBERUJVR0lOREVOVExFU1MoKTsKICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eCIsICJVbnJlY29nbmlzZWQgUERVIHR5cGU6ICVkXG4iLAogICAgICAgICAgICAgICAgICAgICBwZHUtPmNvbW1hbmQpKTsKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVU5LTk9XTl9QRFU7CiAgICAgfQogICAgIERFQlVHSU5ERU5UTEVTUygpOwotICAgIERFQlVHSU5ERU5UTEVTUygpOwotICAgIERFQlVHSU5ERU5UTEVTUygpOwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jCmluZGV4IDMxMmQ4ZGEuLjAzYTM4YjcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jCkBAIC00Niw5ICs0Niw4IEBACiAjaW5jbHVkZSAiYWdlbnR4L2FnZW50eF9jb25maWcuaCIKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmg+Ci0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKLSNpbmNsdWRlICJtaWJJSS9zeXNPUlRhYmxlLmgiCi0jZW5kaWYKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oPgogCiAjaW5jbHVkZSAic3ViYWdlbnQuaCIKIApAQCAtMzMxLDggKzMzMCw5IEBACiAgICAgICogb2ssIHdlIGhhdmUgYSBwZHUgZnJvbSB0aGUgbmV0LiBNb2RpZnkgYXMgbmVlZGVkIAogICAgICAqLwogCi0gICAgREVCVUdNU0dUTCgoImFnZW50eC9zdWJhZ2VudCIsICJoYW5kbGluZyBhZ2VudHggcmVxdWVzdCAocmVxPTB4JXgsdHJhbnM9IgotICAgICAgICAgICAgICAgICIweCV4LHNlc3M9MHgleClcbiIsIHBkdS0+cmVxaWQscGR1LT50cmFuc2lkLCBwZHUtPnNlc3NpZCkpOworICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLCAiaGFuZGxpbmcgQWdlbnRYIHJlcXVlc3QgKHJlcT0weCV4LHRyYW5zPSIKKyAgICAgICAgICAgICAgICAiMHgleCxzZXNzPTB4JXgpXG4iLCAodW5zaWduZWQpcGR1LT5yZXFpZCwKKwkJKHVuc2lnbmVkKXBkdS0+dHJhbnNpZCwgKHVuc2lnbmVkKXBkdS0+c2Vzc2lkKSk7CiAgICAgcGR1LT52ZXJzaW9uID0gQUdFTlRYX1ZFUlNJT05fMTsKICAgICBwZHUtPmZsYWdzIHw9IFVDRF9NU0dfRkxBR19BTFdBWVNfSU5fVklFVzsKIApAQCAtNTA2LDcgKzUwNiw3IEBACiAgICAgcmVzdWx0ID0gc25tcF9hc3luY19zZW5kKGFnZW50eF9jYWxsYmFja19zZXNzLCBpbnRlcm5hbF9wZHUsIG15Y2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgIHJldG1hZ2ljKTsKICAgICBpZiAocmVzdWx0ID09IDApIHsKLSAgICAgICAgc25tcF9mcmVlX3BkdShpbnRlcm5hbF9wZHUpOworICAgICAgICBzbm1wX2ZyZWVfcGR1KCBpbnRlcm5hbF9wZHUgKTsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC01NDUsOCArNTQ1LDExIEBACiAKICAgICBwZHUgPSBzbm1wX2Nsb25lX3BkdShwZHUpOwogICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLAotICAgICAgICAgICAgICAgICJoYW5kbGluZyBBZ2VudFggcmVzcG9uc2UgKGNtZCAweCUwMnggb3JpZ19jbWQgMHglMDJ4KVxuIiwKLSAgICAgICAgICAgICAgICBwZHUtPmNvbW1hbmQsIHNtYWdpYy0+b3JpZ2luYWxfY29tbWFuZCkpOworICAgICAgICAgICAgICAgICJoYW5kbGluZyBBZ2VudFggcmVzcG9uc2UgKGNtZCAweCUwMnggb3JpZ19jbWQgMHglMDJ4KSIKKyAgICAgICAgICAgICAgICAiIChyZXE9MHgleCx0cmFucz0weCV4LHNlc3M9MHgleClcbiIsCisgICAgICAgICAgICAgICAgcGR1LT5jb21tYW5kLCBzbWFnaWMtPm9yaWdpbmFsX2NvbW1hbmQsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkKXBkdS0+cmVxaWQsICh1bnNpZ25lZClwZHUtPnRyYW5zaWQsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkKXBkdS0+c2Vzc2lkKSk7CiAKICAgICBpZiAocGR1LT5jb21tYW5kID09IFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9GUkVFIHx8CiAgICAgICAgIHBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19JTlRFUk5BTF9TRVRfVU5ETyB8fApAQCAtNTg0LDcgKzU4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAqIHNldCB0byBgZW5kT2ZNaWJWaWV3JyIuICAKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl9vYmppZCh2LCB1LT5uYW1lLCB1LT5uYW1lX2xlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSh2LCBTTk1QX0VORE9GTUlCVklFVywgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSh2LCBTTk1QX0VORE9GTUlCVklFVywgTlVMTCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUgdmlvbGF0aW9uIC0tIHJldHVybiBlbmRPZk1pYlZpZXdcbiIpKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MjAsNyArNjIzLDcgQEAKIHsKICAgICBuZXRzbm1wX3Nlc3Npb24gKnJldHNlc3M7CiAgICAgc3RydWN0IGFnZW50X25ldHNubXBfc2V0X2luZm8gKmFzaTsKLSAgICBpbnQgICAgcmVzdWx0OworICAgIGludCByZXN1bHQ7CiAKICAgICBpZiAob3AgIT0gTkVUU05NUF9DQUxMQkFDS19PUF9SRUNFSVZFRF9NRVNTQUdFIHx8IG1hZ2ljID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02MjksNyArNjMyLDggQEAKICAgICBERUJVR01TR1RMKCgiYWdlbnR4L3N1YmFnZW50IiwKICAgICAgICAgICAgICAgICAiaGFuZGxpbmcgYWdlbnR4IHN1YmFnZW50IHNldCByZXNwb25zZSAobW9kZT0lZCxyZXE9MHgleCwiCiAgICAgICAgICAgICAgICAgInRyYW5zPTB4JXgsc2Vzcz0weCV4KVxuIiwKLSAgICAgICAgICAgICAgICBwZHUtPmNvbW1hbmQsIHBkdS0+cmVxaWQscGR1LT50cmFuc2lkLCBwZHUtPnNlc3NpZCkpOworICAgICAgICAgICAgICAgICh1bnNpZ25lZClwZHUtPmNvbW1hbmQsICh1bnNpZ25lZClwZHUtPnJlcWlkLAorCQkodW5zaWduZWQpcGR1LT50cmFuc2lkLCAodW5zaWduZWQpcGR1LT5zZXNzaWQpKTsKICAgICBwZHUgPSBzbm1wX2Nsb25lX3BkdShwZHUpOwogCiAgICAgYXNpID0gKHN0cnVjdCBhZ2VudF9uZXRzbm1wX3NldF9pbmZvICopIG1hZ2ljOwpAQCAtNjQ4LDcgKzY1Miw3IEBACiAgICAgICAgICAgICByZXN1bHQgPSBzbm1wX2FzeW5jX3NlbmQoYWdlbnR4X2NhbGxiYWNrX3Nlc3MsIHBkdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfc3ViYWdlbnRfc2V0X3Jlc3BvbnNlLCBhc2kpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9mcmVlX3BkdShwZHUpOworICAgICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUoIHBkdSApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9zdWJhZ2VudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiICBnb2luZyBmcm9tIFJFU0VSVkUxIC0+IFJFU0VSVkUyXG4iKSk7CkBAIC03MDMsMTMgKzcwNywxMiBAQAogfQogCiAKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQogaW50CiBhZ2VudHhfc3lzT1JfY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELCB2b2lkICpzZXJ2ZXJhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50YXJnKQogewotICAgIHN0cnVjdCByZWdpc3Rlcl9zeXNPUl9wYXJhbWV0ZXJzICpyZWdfcGFybXMgPQotICAgICAgICAoc3RydWN0IHJlZ2lzdGVyX3N5c09SX3BhcmFtZXRlcnMgKikgc2VydmVyYXJnOworICAgIGNvbnN0IHN0cnVjdCByZWdpc3Rlcl9zeXNPUl9wYXJhbWV0ZXJzICpyZWdfcGFybXMgPQorICAgICAgICAoY29uc3Qgc3RydWN0IHJlZ2lzdGVyX3N5c09SX3BhcmFtZXRlcnMgKikgc2VydmVyYXJnOwogICAgIG5ldHNubXBfc2Vzc2lvbiAqYWdlbnR4X3NzID0gKG5ldHNubXBfc2Vzc2lvbiAqKSBjbGllbnRhcmc7CiAKICAgICBpZiAobWlub3JJRCA9PSBTTk1QRF9DQUxMQkFDS19SRUdfU1lTT1IpCkBAIC03MjEsNyArNzI0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19wYXJtcy0+bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19wYXJtcy0+bmFtZWxlbik7CiB9Ci0jZW5kaWYKIAogCiBzdGF0aWMgaW50CkBAIC03NjUsMTQgKzc2NywxMiBAQAogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1VOUkVHSVNURVJfT0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3JlZ2lzdHJhdGlvbl9jYWxsYmFjaywgcyk7Ci0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdfU1lTT1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfc3lzT1JfY2FsbGJhY2ssIHMpOwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1VOUkVHX1NZU09SLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzKTsKLSNlbmRpZgogfQogCiAvKgpAQCAtNzkyLDE1ICs3OTIsMTIgQEAKICAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfVU5SRUdJU1RFUl9PSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9yZWdpc3RyYXRpb25fY2FsbGJhY2ssIHNzLCAxKTsKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQogICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdfU1lTT1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9zeXNPUl9jYWxsYmFjaywgc3MsIDEpOwogICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19VTlJFR19TWVNPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzcywgMSk7Ci0jZW5kaWYKLQogfQogCiAvKgpAQCAtOTE0LDYgKzkxMSwxMyBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZAorYWdlbnR4X3Jlb3Blbl9zeXNPUlRhYmxlKGNvbnN0IHN0cnVjdCBzeXNPUlRhYmxlKiBkYXRhLCB2b2lkKiB2KQoreworICBuZXRzbm1wX3Nlc3Npb24gKmFnZW50eF9zcyA9IChuZXRzbm1wX3Nlc3Npb24gKikgdjsKKyAgYWdlbnR4X2FkZF9hZ2VudGNhcHMoYWdlbnR4X3NzLCBkYXRhLT5PUl9vaWQsIGRhdGEtPk9SX29pZGxlbiwKKyAgCSAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+T1JfZGVzY3IpOworfQogCiAvKgogICogQWxhcm0gY2FsbGJhY2sgZnVuY3Rpb24gdG8gb3BlbiBhIHNlc3Npb24gdG8gdGhlIG1hc3RlciBhZ2VudC4gIElmIGEKQEAgLTk0MiwxNSArOTQ2LDIwIEBACiAgICAgICAgIHJlZ2lzdGVyX21pYl9yZWF0dGFjaCgpOwogCiAgICAgICAgIC8qCisgICAgICAgICAqIFJlcmVnaXN0ZXIgYWxsIG91ciBzeXNPUkVudHJpZXMKKyAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfc3lzT1JUYWJsZV9mb3JlYWNoKCZhZ2VudHhfcmVvcGVuX3N5c09SVGFibGUsIG1haW5fc2Vzc2lvbik7CisKKyAgICAgICAgLyoKICAgICAgICAgICogUmVnaXN0ZXIgYSBwaW5nIGFsYXJtIChpZiBuZWVkIGJlKS4gIAogICAgICAgICAgKi8KLSAgICAgICAgc3ViYWdlbnRfcmVnaXN0ZXJfcGluZ19hbGFybSgwLCAwLCAwLCBtYWluX3Nlc3Npb24pOworICAgICAgICBzdWJhZ2VudF9yZWdpc3Rlcl9waW5nX2FsYXJtKDAsIDAsIE5VTEwsIG1haW5fc2Vzc2lvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGNsaWVudHJlZyA9PSAwKSB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogUmVnaXN0ZXIgYSByZWF0dGFjaCBhbGFybSBmb3IgbGF0ZXIgCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHN1YmFnZW50X3JlZ2lzdGVyX3BpbmdfYWxhcm0oMCwgMCwgMCwgbWFpbl9zZXNzaW9uKTsKKyAgICAgICAgICAgIHN1YmFnZW50X3JlZ2lzdGVyX3BpbmdfYWxhcm0oMCwgMCwgTlVMTCwgbWFpbl9zZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMKaW5kZXggMzI3ZjhiYS4uMmZlNjk3OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMKQEAgLTIzLDcgKzIzLDcgQEAKICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiaW5pdCBldmVudCBjb250YWluZXJcbiIpKTsKICAgICBpZiAoIWV2ZW50X3RhYmxlX2RhdGEpIHsKICAgICAgICAgZXZlbnRfdGFibGVfZGF0YSA9IG5ldHNubXBfdGRhdGFfY3JlYXRlX3RhYmxlKCJtdGVFdmVudFRhYmxlIiwgMCk7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJjcmVhdGUgZXZlbnQgY29udGFpbmVyICgleClcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJjcmVhdGUgZXZlbnQgY29udGFpbmVyICglcClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3RhYmxlX2RhdGEpKTsKICAgICB9CiB9CkBAIC00MywxMiArNDMsMTIgQEAKIAogICAgIC8qCiAgICAgICogSW5zZXJ0IGZpeGVkIGV2ZW50cyBmb3IgdGhlIGRlZmF1bHQgdHJpZ2dlciBub3RpZmljYXRpb25zCi0gICAgICoKKyAgICAgKiAKICAgICAgKiBOQjogaW50ZXJuYWwgZXZlbnRzICh3aXRoIGFuIG93bmVyIG9mICJfc25tcGQiKSB3aWxsIG5vdCBpbgogICAgICAqIGZhY3QgcmVmZXIgdG8gdGhlIG10ZU9iamVjdHNUYWJsZSBmb3IgdGhlIHBheWxvYWQgdmFyYmluZHMuCi0gICAgICogVGhlIHJvdXRpbmUgbXRlT2JqZWN0c19pbnRlcm5hbF92Ymxpc3QoKSBoYXJkY29kZXMgdGhlCisgICAgICogVGhlIHJvdXRpbmUgbXRlT2JqZWN0c19pbnRlcm5hbF92Ymxpc3QoKSBoYXJkY29kZXMgdGhlIAogICAgICAqIGFwcHJvcHJpYXRlIHZhcmJpbmRzIGZvciB0aGVzZSBpbnRlcm5hbCBldmVudHMuCi0gICAgICogICBUaGlzIHJvdXRpbmUgd2lsbCBuZWVkIHRvIGJlIHVwZGF0ZWQgd2hlbmV2ZXIgYSBuZXcKKyAgICAgKiAgIFRoaXMgcm91dGluZSB3aWxsIG5lZWQgdG8gYmUgdXBkYXRlZCB3aGVuZXZlciBhIG5ldyAKICAgICAgKiBpbnRlcm5hbCBldmVudCBpcyBhZGRlZC4KICAgICAgKi8KICAgICBpZiAoIF9kZWZhdWx0c19pbml0KQpAQCAtMTM1LDcgKzEzNSw3IEBACiAgICAgICAgIERFQlVHTVNHKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiKCVzLCAlcykiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3ctPmluZGV4ZXMtPnZhbC5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy0+aW5kZXhlcy0+bmV4dF92YXJpYWJsZS0+dmFsLnN0cmluZykpOwotICAgICAgICBERUJVR01TRygoImRpc21hbjpldmVudDpkdW1wIiwgIjogJXgsICV4XG4iLCByb3csIGVudHJ5KSk7CisgICAgICAgIERFQlVHTVNHKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiOiAlcCwgJXBcbiIsIHJvdywgZW50cnkpKTsKICAgICAgICAgaSsrOwogICAgIH0KICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiRXZlbnRUYWJsZSAlZCBlbnRyaWVzXG4iLCBpKSk7CkBAIC0zMzAsNyArMzMwLDcgQEAKICAgICB2cC0+bmV4dF92YXJpYWJsZSAgICAgPSB2Ymxpc3QtPm5leHRfdmFyaWFibGU7CiAgICAgdmJsaXN0LT5uZXh0X3ZhcmlhYmxlID0gdmFyOwogfQotI2VuZGlmCisjZW5kaWYgLyogX19OT1RfTkVFREVEICovCiAKIGludAogX210ZUV2ZW50X2ZpcmVfbm90aWZ5KCBzdHJ1Y3QgbXRlRXZlbnQgICAqZW50cnksICAgICAvKiBUaGUgZXZlbnQgdG8gZmlyZSAgKi8KQEAgLTQyMSw3ICs0MjEsNyBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9yICh2MiA9IHZhcjsgdjIgJiYgdjItPm5leHRfdmFyaWFibGU7IHYyPXYyLT5uZXh0X3ZhcmlhYmxlKQogICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgIG10ZU9iamVjdHNfaW50ZXJuYWxfdmJsaXN0KHYyLCAgZW50cnktPm10ZU5vdGlmeU9iamVjdHMsIHRyaWdnZXIsIHMpOworICAgICAgICAgICAgbXRlT2JqZWN0c19pbnRlcm5hbF92Ymxpc3QodjIsIGVudHJ5LT5tdGVOb3RpZnlPYmplY3RzLCB0cmlnZ2VyLCBzKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMKaW5kZXggNTg5MmZiNy4uOTM0YTFjNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jCkBAIC00OCw3ICs0OCw3IEBACiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSBldmVudF90YWJsZV9kYXRhIGNvbnRhaW5lciAqLwogICAgIG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCBldmVudF90YWJsZV9kYXRhLCB0YWJsZV9pbmZvKTsKLSAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiRXZlbnQgTm90aWZ5IFRhYmxlIGNvbnRhaW5lciAoJXgpXG4iLAorICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJFdmVudCBOb3RpZnkgVGFibGUgY29udGFpbmVyICglcClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3RhYmxlX2RhdGEpKTsKIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMKaW5kZXggMzY0NjE0NC4uOTc3ODNjMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jCkBAIC00OCw3ICs0OCw3IEBACiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSBldmVudF90YWJsZV9kYXRhIGNvbnRhaW5lciAqLwogICAgIG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCBldmVudF90YWJsZV9kYXRhLCB0YWJsZV9pbmZvKTsKLSAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiRXZlbnQgU2V0IFRhYmxlIGNvbnRhaW5lciAoJXgpXG4iLAorICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJFdmVudCBTZXQgVGFibGUgY29udGFpbmVyICglcClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3RhYmxlX2RhdGEpKTsKIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMKaW5kZXggMTlmZTBhMS4uMmMyMWU2NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jCkBAIC00OSw3ICs0OSw3IEBACiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSBldmVudF90YWJsZV9kYXRhIGNvbnRhaW5lciAqLwogICAgIG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCBldmVudF90YWJsZV9kYXRhLCB0YWJsZV9pbmZvKTsKLSAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiRXZlbnQgVGFibGUgY29udGFpbmVyICgleClcbiIsCisgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDppbml0IiwgIkV2ZW50IFRhYmxlIGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF90YWJsZV9kYXRhKSk7CiB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmMKaW5kZXggM2Y5MjkzYy4uM2U5YzExYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmMKQEAgLTYyLDcgKzYyLDcgQEAKICAgICBsaW5lICA9IHJlYWRfY29uZmlnX3JlYWRfZGF0YShBU05fT0NURVRfU1RSLCBsaW5lLCAmdnAsICAgICZsZW4pOwogICAgIGxpbmUgID0gcmVhZF9jb25maWdfcmVhZF9kYXRhKEFTTl9VTlNJR05FRCwgIGxpbmUsICZpbmRleCwgJmxlbik7CiAKLSAgICBERUJVR01TRygoImRpc21hbjpldmVudDpjb25mIiwgIiglcywgJXMsICVkKSAiLCBvd25lciwgb25hbWUsIGluZGV4KSk7CisgICAgREVCVUdNU0coKCJkaXNtYW46ZXZlbnQ6Y29uZiIsICIoJXMsICVzLCAlbHUpICIsIG93bmVyLCBvbmFtZSwgaW5kZXgpKTsKIAogICAgIHJvdyAgID0gbXRlT2JqZWN0c19jcmVhdGVFbnRyeSggb3duZXIsIG9uYW1lLCBpbmRleCwgMCApOwogICAgIC8qIGVudHJ5ID0gKHN0cnVjdCBtdGVPYmplY3QgKiluZXRzbm1wX3RkYXRhX3Jvd19lbnRyeSggcm93ICk7ICovCkBAIC0xMzEsNyArMTMxLDcgQEAKICAgICAgICAgaWYgKCBlbnRyeS0+ZmxhZ3MgJiBNVEVfT0JKRUNUX0ZMQUdfRklYRUQgKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDpjb25mIiwgIiAgU3RvcmluZyAoJXMgJXMgJWQpXG4iLAorICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmNvbmYiLCAiICBTdG9yaW5nICglcyAlcyAlbGQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5tdGVPd25lciwgZW50cnktPm10ZU9OYW1lLCBlbnRyeS0+bXRlT0luZGV4KSk7CiAgICAgICAgIG1lbXNldChsaW5lLCAwLCBzaXplb2YobGluZSkpOwogICAgICAgICBzdHJjYXQobGluZSwgIl9tdGVPVGFibGUgIik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYwppbmRleCAxMWNiNWI3Li5jZjUxZWRiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJmYWlsZWQgdG8gY3JlYXRlIG10ZVRyaWdnZXJUYWJsZSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJjcmVhdGUgdHJpZ2dlciBjb250YWluZXIgKCV4KVxuIiwKKyAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDppbml0IiwgImNyZWF0ZSB0cmlnZ2VyIGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcl90YWJsZV9kYXRhKSk7CiAgICAgfQogICAgIG10ZVRyaWdnZXJGYWlsdXJlcyA9IDA7CkBAIC02OSw3ICs2OSw3IEBACiAgICAgICAgIERFQlVHTVNHKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiKCVzLCAlcykiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3ctPmluZGV4ZXMtPnZhbC5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy0+aW5kZXhlcy0+bmV4dF92YXJpYWJsZS0+dmFsLnN0cmluZykpOwotICAgICAgICBERUJVR01TRygoImRpc21hbjpldmVudDpkdW1wIiwgIjogJXgsICV4XG4iLCByb3csIGVudHJ5KSk7CisgICAgICAgIERFQlVHTVNHKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiOiAlcCwgJXBcbiIsIHJvdywgZW50cnkpKTsKICAgICAgICAgaSsrOwogICAgIH0KICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiVHJpZ2dlclRhYmxlICVkIGVudHJpZXNcbiIsIGkpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEVycm9yVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEVycm9yVGFibGUuYwppbmRleCA0MWJiZTI5Li5kYmMyMjE3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFcnJvclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jCkBAIC00OCw3ICs0OCw3IEBACiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSBleHByX3RhYmxlX2RhdGEgY29udGFpbmVyICovCiAgICAgbmV0c25tcF90ZGF0YV9yZWdpc3RlcihyZWcsIGV4cHJfdGFibGVfZGF0YSwgdGFibGVfaW5mbyk7Ci0gICAgREVCVUdNU0dUTCgoImRpc21hbjpleHByOmluaXQiLCAiRXhwcmVzc2lvbiBFcnJvciBUYWJsZSBjb250YWluZXIgKCV4KVxuIiwKKyAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV4cHI6aW5pdCIsICJFeHByZXNzaW9uIEVycm9yIFRhYmxlIGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdGFibGVfZGF0YSkpOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmMKaW5kZXggMWMyNGI3OC4uYzkyNDE0MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb24uYwpAQCAtMjEsNyArMjEsNyBAQAogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXhwcjppbml0IiwgImluaXQgZXhwcmVzc2lvbiBjb250YWluZXJcbiIpKTsKICAgICBpZiAoIWV4cHJfdGFibGVfZGF0YSkgewogICAgICAgICAgZXhwcl90YWJsZV9kYXRhID0gbmV0c25tcF90ZGF0YV9jcmVhdGVfdGFibGUoImV4cEV4cHJlc3Npb25UYWJsZSIsIDApOwotICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpleHByOmluaXQiLCAiY3JlYXRlIGV4cHJlc3Npb24gY29udGFpbmVyICgleClcbiIsCisgICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV4cHI6aW5pdCIsICJjcmVhdGUgZXhwcmVzc2lvbiBjb250YWluZXIgKCVwKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdGFibGVfZGF0YSkpOwogICAgIH0KIH0KQEAgLTU3LDcgKzU3LDcgQEAKICAgICAgICAgREVCVUdNU0coKCJkaXNtYW46ZXhwcjpkdW1wIiwgIiglcywgJXMpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93LT5pbmRleGVzLT52YWwuc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3ctPmluZGV4ZXMtPm5leHRfdmFyaWFibGUtPnZhbC5zdHJpbmcpKTsKLSAgICAgICAgREVCVUdNU0coKCJkaXNtYW46ZXhwcjpkdW1wIiwgIjogJXgsICV4XG4iLCByb3csIGVudHJ5KSk7CisgICAgICAgIERFQlVHTVNHKCgiZGlzbWFuOmV4cHI6ZHVtcCIsICI6ICVwLCAlcFxuIiwgcm93LCBlbnRyeSkpOwogICAgICAgICBpKys7CiAgICAgfQogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXhwcjpkdW1wIiwgIkV4cHJlc3Npb25UYWJsZSAlZCBlbnRyaWVzXG4iLCBpKSk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uQ29uZi5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYwppbmRleCA2MTc0NGUxLi5mOWE5ZDk3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uQ29uZi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmMKQEAgLTYsNiArNiw5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKwogI2luY2x1ZGUgInV0aWxpdGllcy9pcXVlcnkuaCIKICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jCmluZGV4IGMwN2U1ZmMuLjkwNmI1ZTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jCkBAIC00OSw3ICs0OSw3IEBACiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSBleHByX3RhYmxlX2RhdGEgY29udGFpbmVyICovCiAgICAgbmV0c25tcF90ZGF0YV9yZWdpc3RlcihyZWcsIGV4cHJfdGFibGVfZGF0YSwgdGFibGVfaW5mbyk7Ci0gICAgREVCVUdNU0dUTCgoImRpc21hbjpleHByOmluaXQiLCAiRXhwcmVzc2lvbiBUYWJsZSBjb250YWluZXIgKCV4KVxuIiwKKyAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV4cHI6aW5pdCIsICJFeHByZXNzaW9uIFRhYmxlIGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdGFibGVfZGF0YSkpOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3QuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdC5jCmluZGV4IGRmZmU0ZTQuLmMyNzQzN2IgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdC5jCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgREVCVUdNU0dUTCgoImRpc21hbjpleHByOmluaXQiLCAiaW5pdCBleHBPYmplY3QgY29udGFpbmVyXG4iKSk7CiAgICAgaWYgKCFleHBPYmplY3RfdGFibGVfZGF0YSkgewogICAgICAgICAgZXhwT2JqZWN0X3RhYmxlX2RhdGEgPSBuZXRzbm1wX3RkYXRhX2NyZWF0ZV90YWJsZSgiZXhwT2JqZWN0VGFibGUiLCAwKTsKLSAgICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXhwcjppbml0IiwgImNyZWF0ZSBleHBPYmplY3QgY29udGFpbmVyICgleClcbiIsCisgICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV4cHI6aW5pdCIsICJjcmVhdGUgZXhwT2JqZWN0IGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwT2JqZWN0X3RhYmxlX2RhdGEpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYwppbmRleCA2ZTYwYjgxLi45YzQ5YzBkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMKQEAgLTUxLDcgKzUxLDcgQEAKIAogICAgIC8qIFJlZ2lzdGVyIHRoaXMgdXNpbmcgdGhlIGNvbW1vbiBleHBPYmplY3RfdGFibGVfZGF0YSBjb250YWluZXIgKi8KICAgICBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKHJlZywgZXhwT2JqZWN0X3RhYmxlX2RhdGEsIHRhYmxlX2luZm8pOwotICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXhwcjppbml0IiwgIkV4cHJlc3Npb24gT2JqZWN0IFRhYmxlIGNvbnRhaW5lciAoJXgpXG4iLAorICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXhwcjppbml0IiwgIkV4cHJlc3Npb24gT2JqZWN0IFRhYmxlIGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cE9iamVjdF90YWJsZV9kYXRhKSk7CiB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlVGFibGUuYwppbmRleCA5N2JjYmFiLi4yZmRiNGZjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBWYWx1ZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwVmFsdWVUYWJsZS5jCkBAIC01OSw3ICs1OSw3IEBACiAgICAgaWYgKCFpbmRleGVzIHx8ICFpbmRleGVzLT5uZXh0X3ZhcmlhYmxlIHx8CiAgICAgICAgICFpbmRleGVzLT5uZXh0X3ZhcmlhYmxlLT5uZXh0X3ZhcmlhYmxlICkgewogICAgICAgICAvKiBYWFggLSBTaG91bGRuJ3QgaGFwcGVuISAqLwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAiZ2V0ICglZCkgZW50cnkgKCVzLCAlcywgIiwgbW9kZSwKQEAgLTc4LDcgKzc4LDcgQEAKICAgICAgICAgICovCiAgICAgICAgIGlmIChtb2RlID09IE1PREVfR0VUTkVYVCB8fCBtb2RlID09IE1PREVfR0VUQlVMSykgewogICAgICAgICAgICAgZXhwID0gZXhwRXhwcmVzc2lvbl9nZXRGaXJzdEVudHJ5KCk7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJmaXJzdCBlbnRyeSAoJXgpXG4iLCBleHAgKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJmaXJzdCBlbnRyeSAoJXApXG4iLCBleHAgKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJpbmNvbXBsZXRlIHJlcXVlc3RcbiIgKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgIC8qIE5vIG1hdGNoICovCkBAIC04Niw3ICs4Niw3IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgZXhwID0gZXhwRXhwcmVzc2lvbl9nZXRFbnRyeSggKGNoYXIqKWluZGV4ZXMtPnZhbC5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKilpbmRleGVzLT5uZXh0X3ZhcmlhYmxlLT52YWwuc3RyaW5nKTsKLSAgICAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAidXNpbmcgZW50cnkgKCV4KVxuIiwgZXhwICkpOworICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJ1c2luZyBlbnRyeSAoJXApXG4iLCBleHAgKSk7CiAgICAgfQogCiAgICAgLyoKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgICAgICB9CiBORVhUX0VYUDoKICAgICAgICAgZXhwID0gZXhwRXhwcmVzc2lvbl9nZXROZXh0RW50cnkoIGV4cC0+ZXhwT3duZXIsIGV4cC0+ZXhwTmFtZSApOwotICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJ1c2luZyBuZXh0IGVudHJ5ICgleClcbiIsIGV4cCApKTsKKyAgICAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAidXNpbmcgbmV4dCBlbnRyeSAoJXApXG4iLCBleHAgKSk7CiAgICAgfQogICAgIGlmICghZXhwKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCAiZGlzbWFuOmV4cHI6dmFsIiwgIm5vIG1vcmUgZW50cmllc1xuIikpOwpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXMgPSBleHBWYWx1ZV9ldmFsdWF0ZUV4cHJlc3Npb24oIGV4cCwgTlVMTCwgMCApOwotICAgICAgICAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAic2NhbGFyIGdldCByZXR1cm5lZCAoJXgpXG4iLCByZXMpKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCAiZGlzbWFuOmV4cHI6dmFsIiwgInNjYWxhciBnZXQgcmV0dXJuZWQgKCVwKVxuIiwgcmVzKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogT3RoZXJ3aXNlLCBza2lwIHRoZSBsZWFkaW5nICcuMCcgYW5kIHVzZQpAQCAtMTQ4LDcgKzE0OCw3IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIHJlcyA9IGV4cFZhbHVlX2V2YWx1YXRlRXhwcmVzc2lvbiggZXhwLCB2cC0+dmFsLm9iamlkKzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnAtPnZhbF9sZW4vc2l6ZW9mKG9pZCktMSk7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJ3L2NhcmQgZ2V0IHJldHVybmVkICgleClcbiIsIHJlcykpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAidy9jYXJkIGdldCByZXR1cm5lZCAoJXApXG4iLCByZXMpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qCkBAIC0xODcsNyArMTg3LDcgQEAKICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggdnAsIEFTTl9QUklWX0lNUExJRURfT0JKRUNUX0lELAogICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKiludWxsSW5zdGFuY2UsIDMqc2l6ZW9mKG9pZCkpOwogICAgICAgICAgICAgcmVzID0gZXhwVmFsdWVfZXZhbHVhdGVFeHByZXNzaW9uKCBleHAsIE5VTEwsIDAgKTsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCAiZGlzbWFuOmV4cHI6dmFsIiwgInNjYWxhciBuZXh0IHJldHVybmVkICgleClcbiIsIHJlcykpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAic2NhbGFyIG5leHQgcmV0dXJuZWQgKCVwKVxuIiwgcmVzKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogTm93IGNvbWVzIHRoZSBpbnRlcmVzdGluZyBjYXNlIC0gZmluZGluZyB0aGUKQEAgLTIzNSw3ICsyMzUsNyBAQAogICAgICAgICAgICAgICAgIGxlbiA9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXMgPSBleHBWYWx1ZV9ldmFsdWF0ZUV4cHJlc3Npb24oIGV4cCwgdnAtPnZhbC5vYmppZCsxLCBsZW4tMSk7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJ3L2NhcmQgbmV4dCByZXR1cm5lZCAoJXgpXG4iLCByZXMpKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCAiZGlzbWFuOmV4cHI6dmFsIiwgIncvY2FyZCBuZXh0IHJldHVybmVkICglcClcbiIsIHJlcykpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXM7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMKaW5kZXggYjdiMjU3ZS4uYzYwNWU5YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXJyb3JUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEVycm9yVGFibGUuYwpAQCAtNjYsMTMgKzY2LDE3IEBACiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KICNkZWZpbmUJRVhQRVJST1JUSU1FICAxCi0gICAge0VYUEVSUk9SVElNRSwgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9leHBFcnJvclRhYmxlLCAyLCB7MSwgMX19LAorICAgIHtFWFBFUlJPUlRJTUUsICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwRXJyb3JUYWJsZSwgMiwgezEsIDF9fSwKICNkZWZpbmUJRVhQRVJST1JJTkRFWCAyCi0gICAge0VYUEVSUk9SSU5ERVgsIEFTTl9JTlRFR0VSLCAgUk9OTFksIHZhcl9leHBFcnJvclRhYmxlLCAyLCB7MSwgMn19LAorICAgIHtFWFBFUlJPUklOREVYLCBBU05fSU5URUdFUiwgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwRXJyb3JUYWJsZSwgMiwgezEsIDJ9fSwKICNkZWZpbmUJRVhQRVJST1JDT0RFIDMKLSAgICB7RVhQRVJST1JDT0RFLCAgQVNOX0lOVEVHRVIsICBST05MWSwgdmFyX2V4cEVycm9yVGFibGUsIDIsIHsxLCAzfX0sCisgICAge0VYUEVSUk9SQ09ERSwgIEFTTl9JTlRFR0VSLCAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHBFcnJvclRhYmxlLCAyLCB7MSwgM319LAogI2RlZmluZQlFWFBFUlJPUklOU1RBTkNFIDQKLSAgICB7RVhQRVJST1JJTlNUQU5DRSwgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9leHBFcnJvclRhYmxlLCAyLCB7MSwgNH19CisgICAge0VYUEVSUk9SSU5TVEFOQ0UsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwRXJyb3JUYWJsZSwgMiwgezEsIDR9fQogfTsKIAogZXh0ZXJuIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqZXhwRXhwcmVzc2lvblRhYmxlU3RvcmFnZTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMKaW5kZXggZGEwZTE5YS4uYTRkZDIxMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMKQEAgLTY1LDE5ICs2NSwyNiBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lCUVYUEVYUFJFU1NJT04gIDMKLSAgICB7RVhQRVhQUkVTU0lPTiwgICAgICAgICAgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfZXhwRXhwcmVzc2lvblRhYmxlLCAyLCB7MSwgM319LAorICAgIHtFWFBFWFBSRVNTSU9OLCAgICAgICAgICBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCAzfX0sCiAjZGVmaW5lCUVYUEVYUFJFU1NJT05WQUxVRVRZUEUgNAotICAgIHtFWFBFWFBSRVNTSU9OVkFMVUVUWVBFLCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCA0fX0sCisgICAge0VYUEVYUFJFU1NJT05WQUxVRVRZUEUsIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4cEV4cHJlc3Npb25UYWJsZSwgMiwgezEsIDR9fSwKICNkZWZpbmUJRVhQRVhQUkVTU0lPTkNPTU1FTlQgNQotICAgIHtFWFBFWFBSRVNTSU9OQ09NTUVOVCwgICBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCA1fX0sCisgICAge0VYUEVYUFJFU1NJT05DT01NRU5ULCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4cEV4cHJlc3Npb25UYWJsZSwgMiwgezEsIDV9fSwKICNkZWZpbmUJRVhQRVhQUkVTU0lPTkRFTFRBTE5URVJWQUwgNgotICAgIHtFWFBFWFBSRVNTSU9OREVMVEFMTlRFUlZBTCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4cEV4cHJlc3Npb25UYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7RVhQRVhQUkVTU0lPTkRFTFRBTE5URVJWQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCA2fX0sCiAjZGVmaW5lCUVYUEVYUFJFU1NJT05QUkVGSVggNwotICAgIHtFWFBFWFBSRVNTSU9OUFJFRklYLCAgICBBU05fT0JKRUNUX0lELCBST05MWSwgIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCA3fX0sCisgICAge0VYUEVYUFJFU1NJT05QUkVGSVgsICAgIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwRXhwcmVzc2lvblRhYmxlLCAyLCB7MSwgN319LAogI2RlZmluZQlFWFBFWFBSRVNTSU9ORVJST1JTIDgKLSAgICB7RVhQRVhQUkVTU0lPTkVSUk9SUywgICAgQVNOX1VOU0lHTkVELCAgUk9OTFksICB2YXJfZXhwRXhwcmVzc2lvblRhYmxlLCAyLCB7MSwgOH19LAorICAgIHtFWFBFWFBSRVNTSU9ORVJST1JTLCAgICBBU05fVU5TSUdORUQsICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4cEV4cHJlc3Npb25UYWJsZSwgMiwgezEsIDh9fSwKICNkZWZpbmUJRVhQRVhQUkVTU0lPTkVOVFJZU1RBVFVTICA5Ci0gICAge0VYUEVYUFJFU1NJT05FTlRSWVNUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4cEV4cHJlc3Npb25UYWJsZSwgMiwgezEsIDl9fQorICAgIHtFWFBFWFBSRVNTSU9ORU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCA5fX0KIH07CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBPYmplY3RUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuYwppbmRleCA4ZDE4NTVkLi4wOGE2MDdjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBPYmplY3RUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMKQEAgLTY2LDIzICs2NiwzMiBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lCUVYUE9CSkVDVElEICAyCi0gICAge0VYUE9CSkVDVElELCAgICAgICAgIEFTTl9PQkpFQ1RfSUQsIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgMn19LAorICAgIHtFWFBPQkpFQ1RJRCwgICAgICAgICBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDJ9fSwKICNkZWZpbmUJRVhQT0JKRUNUSURXSUxEQ0FSRCAzCi0gICAge0VYUE9CSkVDVElEV0lMRENBUkQsIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgM319LAorICAgIHtFWFBPQkpFQ1RJRFdJTERDQVJELCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDN9fSwKICNkZWZpbmUJRVhQT0JKRUNUU0FNUExFVFlQRSA0Ci0gICAge0VYUE9CSkVDVFNBTVBMRVRZUEUsIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgNH19LAorICAgIHtFWFBPQkpFQ1RTQU1QTEVUWVBFLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDR9fSwKICNkZWZpbmUJRVhQT0JKRUNUREVMVEFESVNDT05USU5VSVRZSUQgNQotICAgIHtFWFBPQkpFQ1RERUxUQURJU0NPTlRJTlVJVFlJRCwgIEFTTl9PQkpFQ1RfSUQsIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgNX19LAorICAgIHtFWFBPQkpFQ1RERUxUQURJU0NPTlRJTlVJVFlJRCwgIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgNX19LAogI2RlZmluZQlFWFBPQkpFQ1RESVNDT05USU5VSVRZSURXSUxEQ0FSRCA2Ci0gICAge0VYUE9CSkVDVERJU0NPTlRJTlVJVFlJRFdJTERDQVJELCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXhwT2JqZWN0VGFibGUsIDIsIHsxLCA2fX0sCisgICAge0VYUE9CSkVDVERJU0NPTlRJTlVJVFlJRFdJTERDQVJELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXhwT2JqZWN0VGFibGUsIDIsIHsxLCA2fX0sCiAjZGVmaW5lCUVYUE9CSkVDVERJU0NPTlRJTlVJVFlJRFRZUEUgNwotICAgIHtFWFBPQkpFQ1RESVNDT05USU5VSVRZSURUWVBFLCAgICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgN319LAorICAgIHtFWFBPQkpFQ1RESVNDT05USU5VSVRZSURUWVBFLCAgICAgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgN319LAogI2RlZmluZQlFWFBPQkpFQ1RDT05ESVRJT05BTCAgOAotICAgIHtFWFBPQkpFQ1RDT05ESVRJT05BTCwgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfZXhwT2JqZWN0VGFibGUsIDIsIHsxLCA4fX0sCisgICAge0VYUE9CSkVDVENPTkRJVElPTkFMLCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDh9fSwKICNkZWZpbmUJRVhQT0JKRUNUQ09ORElUSU9OQUxXSUxEQ0FSRCAgOQotICAgIHtFWFBPQkpFQ1RDT05ESVRJT05BTFdJTERDQVJELCAgICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgOX19LAorICAgIHtFWFBPQkpFQ1RDT05ESVRJT05BTFdJTERDQVJELCAgICAgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgOX19LAogI2RlZmluZQlFWFBPQkpFQ1RFTlRSWVNUQVRVUyAgMTAKLSAgICB7RVhQT0JKRUNURU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDEwfX0KKyAgICB7RVhQT0JKRUNURU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDEwfX0KIH07CiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5jCmluZGV4IDBmNWUwYjYuLmQzYzAyOTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cFZhbHVlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmMKQEAgLTc2LDIxICs3NiwyOSBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lCUVYUFZBTFVFQ09VTlRFUjMyVkFMIDIKLSAgICB7RVhQVkFMVUVDT1VOVEVSMzJWQUwsICBBU05fQ09VTlRFUiwgIFJPTkxZLCB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDJ9fSwKKyAgICB7RVhQVkFMVUVDT1VOVEVSMzJWQUwsICBBU05fQ09VTlRFUiwgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDJ9fSwKICNkZWZpbmUJRVhQVkFMVUVVTlNJR05FRDMyVkFMIDMKLSAgICB7RVhQVkFMVUVVTlNJR05FRDMyVkFMLCBBU05fVU5TSUdORUQsIFJPTkxZLCB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7RVhQVkFMVUVVTlNJR05FRDMyVkFMLCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDN9fSwKICNkZWZpbmUJRVhQVkFMVUVUSU1FVElDS1NWQUwgNAotICAgIHtFWFBWQUxVRVRJTUVUSUNLU1ZBTCwgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgNH19LAorICAgIHtFWFBWQUxVRVRJTUVUSUNLU1ZBTCwgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgNH19LAogI2RlZmluZQlFWFBWQUxVRUlOVEVHRVIzMlZBTCA1Ci0gICAge0VYUFZBTFVFSU5URUdFUjMyVkFMLCAgQVNOX0lOVEVHRVIsICBST05MWSwgdmFyX2V4cFZhbHVlVGFibGUsIDIsIHsxLCA1fX0sCisgICAge0VYUFZBTFVFSU5URUdFUjMyVkFMLCAgQVNOX0lOVEVHRVIsICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4cFZhbHVlVGFibGUsIDIsIHsxLCA1fX0sCiAjZGVmaW5lCUVYUFZBTFVFSVBBRERSRVNTVkFMIDYKLSAgICB7RVhQVkFMVUVJUEFERFJFU1NWQUwsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7RVhQVkFMVUVJUEFERFJFU1NWQUwsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDZ9fSwKICNkZWZpbmUJRVhQVkFMVUVPQ1RFVFNUUklOR1ZBTCA3Ci0gICAge0VYUFZBTFVFT0NURVRTVFJJTkdWQUwsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDd9fSwKKyAgICB7RVhQVkFMVUVPQ1RFVFNUUklOR1ZBTCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgN319LAogI2RlZmluZQlFWFBWQUxVRU9JRFZBTCAgOAotICAgIHtFWFBWQUxVRU9JRFZBTCwgICAgICAgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgOH19LAorICAgIHtFWFBWQUxVRU9JRFZBTCwgICAgICAgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgOH19LAogI2RlZmluZQlFWFBWQUxVRUNPVU5URVI2NFZBTCAgOQotICAgIHtFWFBWQUxVRUNPVU5URVI2NFZBTCwgQVNOX0lOVEVHRVIsICAgUk9OTFksIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgOX19CisgICAge0VYUFZBTFVFQ09VTlRFUjY0VkFMLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4cFZhbHVlVGFibGUsIDIsIHsxLCA5fX0KIH07CiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jCmluZGV4IDRmN2U5NWYuLjJjZjJiMGUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMKQEAgLTUzLDEzICs1MywxNCBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgTVRFT0JKRUNUU0lEICAgICAgICAgIDUKLSAgICB7TVRFT0JKRUNUU0lELCBBU05fT0JKRUNUX0lELCBSV1JJVEUsIHZhcl9tdGVPYmplY3RzVGFibGUsIDIsIHsxLCAzfX0sCisgICAge01URU9CSkVDVFNJRCwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbXRlT2JqZWN0c1RhYmxlLCAyLCB7MSwgM319LAogI2RlZmluZSAgIE1URU9CSkVDVFNJRFdJTERDQVJEICA2Ci0gICAge01URU9CSkVDVFNJRFdJTERDQVJELCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfbXRlT2JqZWN0c1RhYmxlLCAyLAotICAgICB7MSwgNH19LAorICAgIHtNVEVPQkpFQ1RTSURXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZU9iamVjdHNUYWJsZSwgMiwgezEsIDR9fSwKICNkZWZpbmUgICBNVEVPQkpFQ1RTRU5UUllTVEFUVVMgIDcKLSAgICB7TVRFT0JKRUNUU0VOVFJZU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfbXRlT2JqZWN0c1RhYmxlLCAyLAotICAgICB7MSwgNX19LAorICAgIHtNVEVPQkpFQ1RTRU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9tdGVPYmplY3RzVGFibGUsIDIsIHsxLCA1fX0sCiAKIH07CiAvKgpAQCAtNjQxLDYgKzY0Miw4IEBACiAKIAogICAgICAgICAgICAgU3RvcmFnZU5ldyA9IFNOTVBfTUFMTE9DX1NUUlVDVChtdGVPYmplY3RzVGFibGVfZGF0YSk7CisgICAgICAgICAgICBpZiAoU3RvcmFnZU5ldyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgICAgICBTdG9yYWdlTmV3LT5tdGVPd25lciA9IG5ldHNubXBfc3RyZHVwX2FuZF9udWxsKHZwLT52YWwuc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cC0+dmFsX2xlbik7CiAgICAgICAgICAgICBTdG9yYWdlTmV3LT5tdGVPd25lckxlbiA9IHZwLT52YWxfbGVuOwpAQCAtODg4LDYgKzg5MSw4IEBACiAgICAgICogbWFsbG9jIGluaXRpYWwgc3RydWN0IAogICAgICAqLwogICAgIFN0b3JhZ2VOZXcgPSBTTk1QX01BTExPQ19TVFJVQ1QobXRlT2JqZWN0c1RhYmxlX2RhdGEpOworICAgIGlmIChTdG9yYWdlTmV3ID09IE5VTEwpCisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgU3RvcmFnZU5ldy0+bXRlT3duZXIgPSBuZXRzbm1wX3N0cmR1cF9hbmRfbnVsbChvd25lciwgc3RybGVuKG93bmVyKSk7CiAgICAgU3RvcmFnZU5ldy0+bXRlT3duZXJMZW4gPSBzdHJsZW4ob3duZXIpOwogICAgIFN0b3JhZ2VOZXctPm10ZU9iamVjdHNOYW1lID0gbmV0c25tcF9zdHJkdXBfYW5kX251bGwob2JqbmFtZSwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jCmluZGV4IDQ5Y2ViNWYuLmZiYTQ5ODAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuYwpAQCAtNTMsMjUgKzUzLDI1IEBACiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KICNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTkNPTVBBUklTT04gIDMKLSAgICB7TVRFVFJJR0dFUkJPT0xFQU5DT01QQVJJU09OLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSQk9PTEVBTkNPTVBBUklTT04sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLCAyLCB7MSwgMX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJCT09MRUFOVkFMVUUgIDQKLSAgICB7TVRFVFJJR0dFUkJPT0xFQU5WQUxVRSwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5WQUxVRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGUsIDIsIHsxLCAyfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkJPT0xFQU5TVEFSVFVQICA1Ci0gICAge01URVRSSUdHRVJCT09MRUFOU1RBUlRVUCwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5TVEFSVFVQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDN9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFNPV05FUiAgNgotICAgIHtNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDR9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFMgIDcKLSAgICB7TVRFVFJJR0dFUkJPT0xFQU5PQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJCT09MRUFOT0JKRUNUUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDV9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTkVWRU5UT1dORVIgIDgKLSAgICB7TVRFVFJJR0dFUkJPT0xFQU5FVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJCT09MRUFORVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDZ9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTkVWRU5UICA5Ci0gICAge01URVRSSUdHRVJCT09MRUFORVZFTlQsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5FVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDd9fSwKIAogfTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKaW5kZXggM2VkYjkzNS4uMTM3ZTA5NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKQEAgLTUzLDEzICs1MywxMyBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgTVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEICAzCi0gICAge01URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRCwgQVNOX09CSkVDVF9JRCwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSUQsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlLCAyLCB7MSwgMX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFdJTERDQVJEICA0Ci0gICAge01URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFdJTERDQVJELCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSURXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlLCAyLCB7MSwgMn19LAogI2RlZmluZSAgIE1URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFRZUEUgIDUKLSAgICB7TVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlLCAyLCB7MSwgM319LAogCiB9OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jCmluZGV4IDFhZDBhNzQuLmM1NzYxYjUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMKQEAgLTUzLDIyICs1MywyMiBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgTVRFVFJJR0dFUkVYSVNURU5DRVRFU1QgIDMKLSAgICB7TVRFVFJJR0dFUkVYSVNURU5DRVRFU1QsIEFTTl9CSVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJFWElTVEVOQ0VURVNULCBBU05fQklUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgMX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJFWElTVEVOQ0VTVEFSVFVQICA0Ci0gICAge01URVRSSUdHRVJFWElTVEVOQ0VTVEFSVFVQLCBBU05fQklUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSRVhJU1RFTkNFU1RBUlRVUCwgQVNOX0JJVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSwgMiwgezEsIDJ9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSRVhJU1RFTkNFT0JKRUNUU09XTkVSICA1Ci0gICAge01URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTT1dORVIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkVYSVNURU5DRU9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgM319LAogI2RlZmluZSAgIE1URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTICA2Ci0gICAge01URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUsIDIsIHsxLCA0fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UT1dORVIgIDcKLSAgICB7TVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSwgMiwgezEsIDV9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSRVhJU1RFTkNFRVZFTlQgIDgKLSAgICB7TVRFVFJJR0dFUkVYSVNURU5DRUVWRU5ULCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJFWElTVEVOQ0VFVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgNn19LAogCiB9OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jCmluZGV4IDRhNDQwOGMuLmY0ZGI2MmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMKQEAgLTgzLDQzICs4Myw0NCBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgTVRFVFJJR0dFUkNPTU1FTlQgICAgIDUKLSAgICB7TVRFVFJJR0dFUkNPTU1FTlQsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwKLSAgICAgezEsIDN9fSwKKyAgICB7TVRFVFJJR0dFUkNPTU1FTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDN9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEVTVCAgICAgICAgNgotICAgIHtNVEVUUklHR0VSVEVTVCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgNH19LAorICAgIHtNVEVUUklHR0VSVEVTVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgNH19LAogI2RlZmluZSAgIE1URVRSSUdHRVJTQU1QTEVUWVBFICA3Ci0gICAge01URVRSSUdHRVJTQU1QTEVUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLAotICAgICB7MSwgNX19LAorICAgIHtNVEVUUklHR0VSU0FNUExFVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDV9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVkFMVUVJRCAgICAgOAotICAgIHtNVEVUUklHR0VSVkFMVUVJRCwgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLAotICAgICB7MSwgNn19LAorICAgIHtNVEVUUklHR0VSVkFMVUVJRCwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgNn19LAogI2RlZmluZSAgIE1URVRSSUdHRVJWQUxVRUlEV0lMRENBUkQgIDkKLSAgICB7TVRFVFJJR0dFUlZBTFVFSURXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX210ZVRyaWdnZXJUYWJsZSwKLSAgICAgMiwgezEsIDd9fSwKKyAgICB7TVRFVFJJR0dFUlZBTFVFSURXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDd9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEFSR0VUVEFHICAgMTAKLSAgICB7TVRFVFJJR0dFUlRBUkdFVFRBRywgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLAotICAgICB7MSwgOH19LAorICAgIHtNVEVUUklHR0VSVEFSR0VUVEFHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCA4fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkNPTlRFWFROQU1FICAxMQotICAgIHtNVEVUUklHR0VSQ09OVEVYVE5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwKLSAgICAgezEsIDl9fSwKKyAgICB7TVRFVFJJR0dFUkNPTlRFWFROQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCA5fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkNPTlRFWFROQU1FV0lMRENBUkQgIDEyCi0gICAge01URVRSSUdHRVJDT05URVhUTkFNRVdJTERDQVJELCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSQ09OVEVYVE5BTUVXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDEwfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkZSRVFVRU5DWSAgIDEzCi0gICAge01URVRSSUdHRVJGUkVRVUVOQ1ksIEFTTl9VTlNJR05FRCwgUldSSVRFLCB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLAotICAgICB7MSwgMTF9fSwKKyAgICB7TVRFVFJJR0dFUkZSRVFVRU5DWSwgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAxMX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJPQkpFQ1RTT1dORVIgIDE0Ci0gICAge01URVRSSUdHRVJPQkpFQ1RTT1dORVIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwKLSAgICAgezEsIDEyfX0sCisgICAge01URVRSSUdHRVJPQkpFQ1RTT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDEyfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUk9CSkVDVFMgICAgIDE1Ci0gICAge01URVRSSUdHRVJPQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsCi0gICAgIHsxLCAxM319LAorICAgIHtNVEVUUklHR0VST0JKRUNUUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgMTN9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSRU5BQkxFRCAgICAgMTYKLSAgICB7TVRFVFJJR0dFUkVOQUJMRUQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsCi0gICAgIHsxLCAxNH19LAorICAgIHtNVEVUUklHR0VSRU5BQkxFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDE0fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkVOVFJZU1RBVFVTICAxNwotICAgIHtNVEVUUklHR0VSRU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsCi0gICAgIHsxLCAxNX19LAorICAgIHtNVEVUUklHR0VSRU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAxNX19LAogCiB9OwogLyoKQEAgLTM1Niw4ICszNTcsNyBAQAogdm9pZAogcGFyc2Vfc2ltcGxlX21vbml0b3IoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCiB7Ci0gICAgY2hhciAgICAgICAgICAgIGJ1ZltTUFJJTlRfTUFYX0xFTl0sICpjcCwgZWJ1ZltTUFJJTlRfTUFYX0xFTl0sCi0gICAgICAgICAgICAgICAgICAgIGV2ZW50bmFtZVs2NF07CisgICAgY2hhciAgICAgICAgICAgIGJ1ZltTUFJJTlRfTUFYX0xFTl0sICpjcCwgZXZlbnRuYW1lWzY0XTsKICAgICBvaWQgICAgICAgICAgICAgb2J1ZltNQVhfT0lEX0xFTl07CiAgICAgc2l6ZV90ICAgICAgICAgIG9idWZMZW47CiAgICAgc3RydWN0IG10ZVRyaWdnZXJUYWJsZV9kYXRhICpTdG9yYWdlTmV3OwpAQCAtNDQ0LDggKzQ0NCw3IEBACiAgICAgICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogICAgICAgICAgICAgb2J1ZkxlbiA9IE1BWF9PSURfTEVOOwogICAgICAgICAgICAgaWYgKCFzbm1wX3BhcnNlX29pZChidWYsIG9idWYsICZvYnVmTGVuKSkgewotICAgICAgICAgICAgICAgIHNwcmludGYoZWJ1ZiwgInVuYWJsZSB0byBwYXJzZSBvaWQ6ICVzIiwgYnVmKTsKLSAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKGVidWYpOworCQluZXRzbm1wX2NvbmZpZ19lcnJvcigidW5hYmxlIHRvIHBhcnNlIG9pZDogJXMiLCBidWYpOwogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogWFhYOiBmcmVlIFN0b3JhZ2VOZXcgCiAgICAgICAgICAgICAgICAgICovCkBAIC01MDYsOCArNTA1LDcgQEAKICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogICAgIG9idWZMZW4gPSBNQVhfT0lEX0xFTjsKICAgICBpZiAoIXNubXBfcGFyc2Vfb2lkKGJ1Ziwgb2J1ZiwgJm9idWZMZW4pKSB7Ci0gICAgICAgIHNwcmludGYoZWJ1ZiwgInVuYWJsZSB0byBwYXJzZSBvaWQ6ICVzIiwgYnVmKTsKLSAgICAgICAgY29uZmlnX3BlcnJvcihlYnVmKTsKKwluZXRzbm1wX2NvbmZpZ19lcnJvcigidW5hYmxlIHRvIHBhcnNlIG9pZDogJXMiLCBidWYpOwogICAgICAgICAvKgogICAgICAgICAgKiBYWFg6IGZyZWUgU3RvcmFnZU5ldyAKICAgICAgICAgICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMKaW5kZXggMDM4YTJmYi4uMjhiMzNkOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYwpAQCAtNTMsNDkgKzUzLDQ5IEBACiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEU1RBUlRVUCAgMwotICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEU1RBUlRVUCwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRFNUQVJUVVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lORyAgNAotICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMn19LAogI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HICA1Ci0gICAge01URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xERkFMTElORywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDN9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkcgIDYKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCA0fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElORyAgNwotICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgNX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERPQkpFQ1RTT1dORVIgIDgKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xET0JKRUNUU09XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCA2fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFMgIDkKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFMsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDd9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlRPV05FUiAgMTAKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDh9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlQgIDExCi0gICAge01URVRSSUdHRVJUSFJFU0hPTERSSVNJTkdFVkVOVCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDl9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5UT1dORVIgIDEyCi0gICAge01URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HRVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDEwfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkdFVkVOVCAgMTMKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkdFVkVOVCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxMX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lOR0VWRU5UT1dORVIgIDE0Ci0gICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMTJ9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkdFVkVOVCAgMTUKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDEzfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5UT1dORVIgIDE2Ci0gICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxNH19LAogI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVCAgMTcKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5ULCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMTV9fSwKIAogfTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMKaW5kZXggYmNlZGQwNy4uMGViNWMxNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMKQEAgLTU1LDEyICs1NSwxOCBAQAogICAgIC8qCiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KLSAgICB7Q09MVU1OX0xPT0tVUENUTFRBUkdFVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCAzfX0sCi0gICAge0NPTFVNTl9MT09LVVBDVExUQVJHRVRBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgNH19LAotICAgIHtDT0xVTU5fTE9PS1VQQ1RMT1BFUlNUQVRVUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA1fX0sCi0gICAge0NPTFVNTl9MT09LVVBDVExUSU1FLCAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9sb29rdXBDdGxUYWJsZSwgMiwgezEsIDZ9fSwKLSAgICB7Q09MVU1OX0xPT0tVUENUTFJDLCAgICAgICAgIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgN319LAotICAgIHtDT0xVTU5fTE9PS1VQQ1RMUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA4fX0KKyAgICB7Q09MVU1OX0xPT0tVUENUTFRBUkdFVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCAzfX0sCisgICAge0NPTFVNTl9MT09LVVBDVExUQVJHRVRBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgNH19LAorICAgIHtDT0xVTU5fTE9PS1VQQ1RMT1BFUlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA1fX0sCisgICAge0NPTFVNTl9MT09LVVBDVExUSU1FLCAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sb29rdXBDdGxUYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7Q09MVU1OX0xPT0tVUENUTFJDLCAgICAgICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgN319LAorICAgIHtDT0xVTU5fTE9PS1VQQ1RMUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA4fX0KIH07CiAKIApAQCAtNjE2LDcgKzYyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB3aGlsZSAoKmxvb2t1cC0+aF9hZGRyX2xpc3QpIHsKLSAgICAgICAgICAgICAgICBiY29weSgqbG9va3VwLT5oX2FkZHJfbGlzdCsrLCAoY2hhciAqKSAmYSwgc2l6ZW9mKGEpKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoJmEsICpsb29rdXAtPmhfYWRkcl9saXN0KyssIHNpemVvZihhKSk7CiAKICAgICAgICAgICAgICAgICB0ZW1wID0gU05NUF9NQUxMT0NfU1RSVUNUKGxvb2t1cFJlc3VsdHNUYWJsZV9kYXRhKTsKICAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKSB7CkBAIC0xMDA1LDcgKzEwMTEsNyBAQAogCiAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+bG9va3VwQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+bG9va3VwQ3RsT3duZXJJbmRleExlbik7ICAgLyogbG9va3VwQ3RsT3duZXJJbmRleCAqLwogICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPmxvb2t1cEN0bE9wZXJhdGlvbk5hbWUsIHRoZWRhdGEtPmxvb2t1cEN0bE9wZXJhdGlvbk5hbWVMZW4pOyAgICAgLyogbG9va3VwQ3RsT3BlcmF0aW9uTmFtZSAqLwotICAgIGJ6ZXJvKG5ld29pZCwgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CisgICAgbWVtc2V0KG5ld29pZCwgJ1wwJywgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CiAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKG5ld29pZCwgJm5ld29pZF9sZW4sIE5VTEwsIDAsIHZhcnMpOwogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuYwppbmRleCBjNWZkMmI3Li5iZmI1NmM5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwUmVzdWx0c1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cFJlc3VsdHNUYWJsZS5jCkBAIC00Miw4ICs0MiwxMCBAQAogICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgODIsIDEsIDQgfTsKIAogc3RydWN0IHZhcmlhYmxlMiBsb29rdXBSZXN1bHRzVGFibGVfdmFyaWFibGVzW10gPSB7Ci0gICAge0NPTFVNTl9MT09LVVBSRVNVTFRTQUREUkVTU1RZUEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvb2t1cFJlc3VsdHNUYWJsZSwgMiwgezEsIDJ9fSwKLSAgICB7Q09MVU1OX0xPT0tVUFJFU1VMVFNBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfbG9va3VwUmVzdWx0c1RhYmxlLCAyLCB7MSwgM319CisgICAge0NPTFVNTl9MT09LVVBSRVNVTFRTQUREUkVTU1RZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvb2t1cFJlc3VsdHNUYWJsZSwgMiwgezEsIDJ9fSwKKyAgICB7Q09MVU1OX0xPT0tVUFJFU1VMVFNBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9va3VwUmVzdWx0c1RhYmxlLCAyLCB7MSwgM319CiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYwppbmRleCAxZTEwMmEwLi4zZjRmMTI4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYwpAQCAtNzUsMjcgKzc1LDQ4IEBACiAgICAgLyoKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAogICAgICAqLwotICAgIHtDT0xVTU5fUElOR0NUTFRBUkdFVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgM319LAotICAgIHtDT0xVTU5fUElOR0NUTFRBUkdFVEFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgNH19LAotICAgIHtDT0xVTU5fUElOR0NUTERBVEFTSVpFLCAgICAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCA1fX0sCi0gICAge0NPTFVNTl9QSU5HQ1RMVElNRU9VVCwgICAgICAgICAgQVNOX1VOU0lHTkVELCBST05MWSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDZ9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExQUk9CRUNPVU5ULCAgICAgICBBU05fVU5TSUdORUQsIFJPTkxZLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgN319LAotICAgIHtDT0xVTU5fUElOR0NUTEFETUlOU1RBVFVTLCAgICAgICBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgOH19LAotICAgIHtDT0xVTU5fUElOR0NUTERBVEFGSUxMLCAgICAgICAgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgOX19LAotICAgIHtDT0xVTU5fUElOR0NUTEZSRVFVRU5DWSwgICAgICAgIEFTTl9VTlNJR05FRCwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTB9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExNQVhST1dTLCAgICAgICAgICBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDExfX0sCi0gICAge0NPTFVNTl9QSU5HQ1RMU1RPUkFHRVRZUEUsICAgICAgIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxMn19LAotICAgIHtDT0xVTU5fUElOR0NUTFRSQVBHRU5FUkFUSU9OLCAgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTN9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExUUkFQUFJPQkVGQUlMVVJFRklMVEVSLCBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDE0fX0sCi0gICAge0NPTFVNTl9QSU5HQ1RMVFJBUFRFU1RGQUlMVVJFRklMVEVSLCAgQVNOX1VOU0lHTkVELCBSV1JJVEUsIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxNX19LAotICAgIHtDT0xVTU5fUElOR0NUTFRZUEUsICAgICAgICAgICAgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTZ9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExERVNDUiwgICAgICAgICAgIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDE3fX0sCi0gICAge0NPTFVNTl9QSU5HQ1RMU09VUkNFQUREUkVTU1RZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxOH19LAotICAgIHtDT0xVTU5fUElOR0NUTFNPVVJDRUFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTl9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExJRklOREVYLCAgICAgICAgICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDIwfX0sCi0gICAge0NPTFVNTl9QSU5HQ1RMQllQQVNTUk9VVEVUQUJMRSwgIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAyMX19LAotICAgIHtDT0xVTU5fUElOR0NUTERTRklFTEQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMjJ9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExST1dTVEFUVVMsICAgICAgICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDIzfX0KKyAgICB7Q09MVU1OX1BJTkdDVExUQVJHRVRBRERSRVNTVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExUQVJHRVRBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDR9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExEQVRBU0laRSwgICAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgNX19LAorICAgIHtDT0xVTU5fUElOR0NUTFRJTUVPVVQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCA2fX0sCisgICAge0NPTFVNTl9QSU5HQ1RMUFJPQkVDT1VOVCwgICAgICAgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDd9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExBRE1JTlNUQVRVUywgICAgICAgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDh9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExEQVRBRklMTCwgICAgICAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDl9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExGUkVRVUVOQ1ksICAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDEwfX0sCisgICAge0NPTFVNTl9QSU5HQ1RMTUFYUk9XUywgICAgICAgICAgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxMX19LAorICAgIHtDT0xVTU5fUElOR0NUTFNUT1JBR0VUWVBFLCAgICAgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTJ9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExUUkFQR0VORVJBVElPTiwgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDEzfX0sCisgICAge0NPTFVNTl9QSU5HQ1RMVFJBUFBST0JFRkFJTFVSRUZJTFRFUiwgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxNH19LAorICAgIHtDT0xVTU5fUElOR0NUTFRSQVBURVNURkFJTFVSRUZJTFRFUiwgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTV9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExUWVBFLCAgICAgICAgICAgIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDE2fX0sCisgICAge0NPTFVNTl9QSU5HQ1RMREVTQ1IsICAgICAgICAgICBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxN319LAorICAgIHtDT0xVTU5fUElOR0NUTFNPVVJDRUFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTh9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExTT1VSQ0VBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDE5fX0sCisgICAge0NPTFVNTl9QSU5HQ1RMSUZJTkRFWCwgICAgICAgICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAyMH19LAorICAgIHtDT0xVTU5fUElOR0NUTEJZUEFTU1JPVVRFVEFCTEUsICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMjF9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExEU0ZJRUxELCAgICAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDIyfX0sCisgICAge0NPTFVNTl9QSU5HQ1RMUk9XU1RBVFVTLCAgICAgICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAyM319CiB9OwogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdQcm9iZUhpc3RvcnlUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMKaW5kZXggMzFmYTBiOC4uNzhjNzViZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMKQEAgLTUwLDEwICs1MCwxNCBAQAogICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgODAsIDEsIDQgfTsKIAogc3RydWN0IHZhcmlhYmxlMiBwaW5nUHJvYmVIaXN0b3J5VGFibGVfdmFyaWFibGVzW10gPSB7Ci0gICAge0NPTFVNTl9QSU5HUFJPQkVISVNUT1JZUkVTUE9OU0UsIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCAyfX0sCi0gICAge0NPTFVNTl9QSU5HUFJPQkVISVNUT1JZU1RBVFVTLCAgICBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9waW5nUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCAzfX0sCi0gICAge0NPTFVNTl9QSU5HUFJPQkVISVNUT1JZTEFTVFJDLCAgICBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9waW5nUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA0fX0sCi0gICAge0NPTFVNTl9QSU5HUFJPQkVISVNUT1JZVElNRSwgICAgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9waW5nUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA1fX0KKyAgICB7Q09MVU1OX1BJTkdQUk9CRUhJU1RPUllSRVNQT05TRSwgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3BpbmdQcm9iZUhpc3RvcnlUYWJsZSwgMiwgezEsIDJ9fSwKKyAgICB7Q09MVU1OX1BJTkdQUk9CRUhJU1RPUllTVEFUVVMsICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3BpbmdQcm9iZUhpc3RvcnlUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7Q09MVU1OX1BJTkdQUk9CRUhJU1RPUllMQVNUUkMsICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3BpbmdQcm9iZUhpc3RvcnlUYWJsZSwgMiwgezEsIDR9fSwKKyAgICB7Q09MVU1OX1BJTkdQUk9CRUhJU1RPUllUSU1FLCAgICBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3BpbmdQcm9iZUhpc3RvcnlUYWJsZSwgMiwgezEsIDV9fQogfTsKIAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMKaW5kZXggMWY3MWZkNS4uMTQ0NWQ4NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Jlc3VsdHNUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdSZXN1bHRzVGFibGUuYwpAQCAtNDksMTYgKzQ5LDI2IEBACiAgICAgeyAxLCAzLCA2LCAxLCAyLCAxLCA4MCwgMSwgMyB9OwogCiBzdHJ1Y3QgdmFyaWFibGUyIHBpbmdSZXN1bHRzVGFibGVfdmFyaWFibGVzW10gPSB7Ci0gICAge0NPTFVNTl9QSU5HUkVTVUxUU09QRVJTVEFUVVMsICAgICAgIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3BpbmdSZXN1bHRzVGFibGUsIDIsIHsxLCAxfX0sCi0gICAge0NPTFVNTl9QSU5HUkVTVUxUU0lQVEFSR0VUQUREUkVTU1RZUEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3BpbmdSZXN1bHRzVGFibGUsIDIsIHsxLCAyfX0sCi0gICAge0NPTFVNTl9QSU5HUkVTVUxUU0lQVEFSR0VUQUREUkVTUywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgM319LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNNSU5SVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgNH19LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNNQVhSVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgNX19LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNBVkVSQUdFUlRULCAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgNn19LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNQUk9CRVJFU1BPTlNFUywgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgN319LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNTRU5UUFJPQkVTLCAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgOH19LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNSVFRTVU1PRlNRVUFSRVMsIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgOX19LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNMQVNUR09PRFBST0JFLCAgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgMTB9fQorICAgIHtDT0xVTU5fUElOR1JFU1VMVFNPUEVSU1RBVFVTLCAgICAgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgMX19LAorICAgIHtDT0xVTU5fUElOR1JFU1VMVFNJUFRBUkdFVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgMn19LAorICAgIHtDT0xVTU5fUElOR1JFU1VMVFNJUFRBUkdFVEFERFJFU1MsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTTUlOUlRULCAgICAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDR9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTTUFYUlRULCAgICAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDV9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTQVZFUkFHRVJUVCwgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTUFJPQkVSRVNQT05TRVMsICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDd9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTU0VOVFBST0JFUywgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDh9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTUlRUU1VNT0ZTUVVBUkVTLCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDl9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTTEFTVEdPT0RQUk9CRSwgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDEwfX0KIH07CiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jCmluZGV4IDQwNTVkNDYuLjI4NDAwZjUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMKQEAgLTIyLDcgKzIyLDcgQEAKICAgICBpZiAoIXNjaGVkdWxlX3RhYmxlKSB7CiAgICAgICAgIHNjaGVkdWxlX3RhYmxlID0gbmV0c25tcF90ZGF0YV9jcmVhdGVfdGFibGUoInNjaGVkVGFibGUiLCAwKTsKICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTppbml0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjcmVhdGUgc2NoZWR1bGUgY29udGFpbmVyKCV4KVxuIiwgc2NoZWR1bGVfdGFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjcmVhdGUgc2NoZWR1bGUgY29udGFpbmVyKCVwKVxuIiwgc2NoZWR1bGVfdGFibGUpKTsKICAgICB9CiB9CiAKQEAgLTUzLDEzICs1MywxMyBAQAogICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOnNjaGVkdWxlOmNhbGxiYWNrIiwgIm1pc3NpbmcgZW50cnlcbiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBlbnRyeS0+c2NoZWRMYXN0UnVuID0gdGltZSgwKTsKKyAgICBlbnRyeS0+c2NoZWRMYXN0UnVuID0gdGltZShOVUxMKTsKICAgICBlbnRyeS0+c2NoZWRUcmlnZ2VycysrOwogCiAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46c2NoZWR1bGU6Y2FsbGJhY2siLCAiYXNzaWdubWVudCAiKSk7CiAgICAgREVCVUdNU0dPSUQoKCJkaXNtYW46c2NoZWR1bGU6Y2FsbGJhY2siLCBlbnRyeS0+c2NoZWRWYXJpYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zY2hlZFZhcmlhYmxlX2xlbikpOwotICAgIERFQlVHTVNHKCggICAiZGlzbWFuOnNjaGVkdWxlOmNhbGxiYWNrIiwgIiA9ICVkXG4iLCBlbnRyeS0+c2NoZWRWYWx1ZSkpOworICAgIERFQlVHTVNHKCggICAiZGlzbWFuOnNjaGVkdWxlOmNhbGxiYWNrIiwgIiA9ICVsZFxuIiwgZW50cnktPnNjaGVkVmFsdWUpKTsKIAogICAgIG1lbXNldCgmYXNzaWduLCAwLCBzaXplb2YobmV0c25tcF92YXJpYWJsZV9saXN0KSk7CiAgICAgc25tcF9zZXRfdmFyX29iamlkKCZhc3NpZ24sIGVudHJ5LT5zY2hlZFZhcmlhYmxlLCBlbnRyeS0+c2NoZWRWYXJpYWJsZV9sZW4pOwpAQCAtMjM5LDIwICsyMzksNiBAQAogfQogCiAKLSNpZm5kZWYgSEFWRV9MT0NBTFRJTUVfUgotc3RydWN0IHRtICoKLWxvY2FsdGltZV9yKGNvbnN0IHRpbWVfdCAqdGltZXAsIHN0cnVjdCB0bSAqcmVzdWx0KSB7Ci0gICAgc3RydWN0IHRtICp0bXA7Ci0KLSAgICB0bXAgPSBsb2NhbHRpbWUoIHRpbWVwICk7Ci0gICAgaWYgKCB0bXAgJiYgcmVzdWx0ICkgewotICAgICAgICBtZW1jcHkoIHJlc3VsdCwgdG1wLCBzaXplb2Yoc3RydWN0IHRtKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuICh0bXAgPyByZXN1bHQgOiBOVUxMICk7Ci19Ci0jZW5kaWYKLQogLyoKICAqIGRldGVybWluZSB0aGUgdGltZSBmb3IgdGhlIG5leHQgc2NoZWR1bGVkIGFjdGlvbiBvZiBhIGdpdmVuIGVudHJ5CiAgKi8KQEAgLTI5MSwxNCArMjc3LDE0IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZW50cnktPnNjaGVkTmV4dFJ1biA9IG5vdyArIGVudHJ5LT5zY2hlZEludGVydmFsOwogICAgICAgICB9Ci0gICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46c2NoZWR1bGU6dGltZSIsICJwZXJpb2RpYzogKCVkKSAlcyIsCisgICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46c2NoZWR1bGU6dGltZSIsICJwZXJpb2RpYzogKCVsZCkgJXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zY2hlZE5leHRSdW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdGltZSgmZW50cnktPnNjaGVkTmV4dFJ1bikpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNDSEVEX1RZUEVfT05FU0hPVDoKICAgICAgICAgaWYgKCBlbnRyeS0+c2NoZWRMYXN0UnVuICkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTp0aW1lIiwgIm9uZS1zaG90OiBleHBpcmVkICglZCkgJXMiLAorICAgICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTp0aW1lIiwgIm9uZS1zaG90OiBleHBpcmVkICglbGQpICVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2NoZWROZXh0UnVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RpbWUoJmVudHJ5LT5zY2hlZE5leHRSdW4pKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MTQsMTMgKzQwMCwxMyBAQAogICAgICAgICAgKiAnbmV4dF90bScgbm93IGNvbnRhaW5zIHRoZSB0aW1lIGZvciB0aGUgbmV4dCBzY2hlZHVsZWQgcnVuCiAgICAgICAgICAqLwogICAgICAgICBlbnRyeS0+c2NoZWROZXh0UnVuID0gbWt0aW1lKCAmbmV4dF90bSApOwotICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOnNjaGVkdWxlOnRpbWUiLCAiY2FsZW5kYXI6ICglZCkgJXMiLAorICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOnNjaGVkdWxlOnRpbWUiLCAiY2FsZW5kYXI6ICglbGQpICVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2NoZWROZXh0UnVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RpbWUoJmVudHJ5LT5zY2hlZE5leHRSdW4pKSk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46c2NoZWR1bGU6dGltZSIsICJ1bmtub3duIHR5cGUgKCVkKVxuIiwKKyAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTp0aW1lIiwgInVua25vd24gdHlwZSAoJWxkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zY2hlZFR5cGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMKaW5kZXggNDJmMjRkYy4uNWM3MGUwZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMKQEAgLTQxLDMxICs0MSw1NiBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExUQVJHRVRBRERSRVNTVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDN9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExUQVJHRVRBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDR9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExCWVBBU1NST1VURVRBQkxFLCAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDV9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExEQVRBU0laRSwgICAgIEFTTl9VTlNJR05FRCwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgNn19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFRJTUVPVVQsICAgICAgQVNOX1VOU0lHTkVELCBSV1JJVEUsIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCA3fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMUFJPQkVTUEVSSE9QLCBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDh9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExQT1JULCAgICAgICAgIEFTTl9VTlNJR05FRCwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgOX19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTE1BWFRUTCwgICAgICAgQVNOX1VOU0lHTkVELCBSV1JJVEUsIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAxMH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTERTRklFTEQsICAgICAgQVNOX1VOU0lHTkVELCBSV1JJVEUsIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAxMX19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFNPVVJDRUFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTJ9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExTT1VSQ0VBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDEzfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMSUZJTkRFWCwgICAgICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE0fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMTUlTQ09QVElPTlMsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE1fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMTUFYRkFJTFVSRVMsICBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE2fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMRE9OVEZSQUdNRU5ULCAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE3fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMSU5JVElBTFRUTCwgICBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE4fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMRlJFUVVFTkNZLCAgICBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE5fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMU1RPUkFHRVRZUEUsICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDIwfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMQURNSU5TVEFUVVMsICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDIxfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMREVTQ1IsICAgICAgIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDIyfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMTUFYUk9XUywgICAgICBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDIzfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMVFJBUEdFTkVSQVRJT04sICBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAyNH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTENSRUFURUhPUFNFTlRSSUVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjV9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExUWVBFLCAgICAgICAgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjZ9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExST1dTVEFUVVMsICAgICBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjd9fQorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFRBUkdFVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgM319LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFRBUkdFVEFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgNH19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTEJZUEFTU1JPVVRFVEFCTEUsICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgNX19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTERBVEFTSVpFLCAgICAgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCA2fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMVElNRU9VVCwgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDd9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExQUk9CRVNQRVJIT1AsIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgOH19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFBPUlQsICAgICAgICAgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCA5fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMTUFYVFRMLCAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDEwfX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMRFNGSUVMRCwgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDExfX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMU09VUkNFQUREUkVTU1RZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAxMn19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFNPVVJDRUFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTN9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExJRklOREVYLCAgICAgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTR9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExNSVNDT1BUSU9OUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTV9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExNQVhGQUlMVVJFUywgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTZ9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExET05URlJBR01FTlQsICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTd9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExJTklUSUFMVFRMLCAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTh9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExGUkVRVUVOQ1ksICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTl9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExTVE9SQUdFVFlQRSwgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjB9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExBRE1JTlNUQVRVUywgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjF9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExERVNDUiwgICAgICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjJ9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExNQVhST1dTLCAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjN9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExUUkFQR0VORVJBVElPTiwgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDI0fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMQ1JFQVRFSE9QU0VOVFJJRVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAyNX19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFRZUEUsICAgICAgICBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAyNn19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFJPV1NUQVRVUywgICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAyN319CiAKIH07CiAKQEAgLTEyNiw3ICsxNTEsOCBAQAogICAgICAgICBleGl0KDEpOwogICAgIH0KIAotICAgIGJ6ZXJvKGhvc3QsIHNpemVvZihjaGFyKSAqIChpdGVtLT50cmFjZVJvdXRlQ3RsVGFyZ2V0QWRkcmVzc0xlbiArIDEpKTsKKyAgICBtZW1zZXQoaG9zdCwgJ1wwJywKKwkgICBzaXplb2YoY2hhcikgKiAoaXRlbS0+dHJhY2VSb3V0ZUN0bFRhcmdldEFkZHJlc3NMZW4gKyAxKSk7CiAgICAgc3RyY3B5KGhvc3QsIGl0ZW0tPnRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzKTsKICAgICBob3N0W2l0ZW0tPnRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzTGVuXSA9ICdcMCc7CiAKQEAgLTIxOSw3ICsyNDUsNyBAQAogICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqaHAgPSBOVUxMOwogICAgICAgICAvKiBzdHJ1Y3QgaG9zdGVudiBocDsgKi8KICAgICAgICAgY2hhciAgICAgICAgICAgIHBhWzY0XTsKLSAgICAgICAgYnplcm8ocGEsIDY0KTsKKyAgICAgICAgbWVtc2V0KHBhLCAnXDAnLCA2NCk7CiAKICAgICAgICAgdG8tPnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CiAgICAgICAgIHRvLT5zaW42X3BvcnQgPSBodG9ucygzMzQzNCk7CkBAIC0yMzQsNyArMjYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpKTsKICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnplcm8oU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZVJlc3VsdHNJcFRndEFkZHIsCisgICAgICAgICAgICBtZW1zZXQoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZVJlc3VsdHNJcFRndEFkZHIsICdcMCcsCiAgICAgICAgICAgICAgICAgICBzaXplb2YoY2hhcikgKiAoc3RybGVuKGhvc3QpICsgMSkpOwogICAgICAgICAgICAgbWVtY3B5KFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVSZXN1bHRzSXBUZ3RBZGRyLCBob3N0LAogICAgICAgICAgICAgICAgICAgIHN0cmxlbihob3N0KSArIDEpOwpAQCAtMjU1LDcgKzI4MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSkpOwogICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBiemVybyhTdG9yYWdlVG1wLT50cmFjZVJvdXRlUmVzdWx0c0lwVGd0QWRkciwKKyAgICAgICAgICAgICAgICBtZW1zZXQoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZVJlc3VsdHNJcFRndEFkZHIsICdcMCcsCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNoYXIpICogKHN0cmxlbihob3N0KSArIDEpKTsKICAgICAgICAgICAgICAgICBtZW1jcHkoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZVJlc3VsdHNJcFRndEFkZHIsIGhvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oaG9zdG5hbWUpICsgMSk7CkBAIC02OTIsNyArNzE4LDcgQEAKICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+dHJhY2VSb3V0ZUN0bE93bmVySW5kZXhMZW4pOyAgIC8qIHRyYWNlUm91dGVDdGxPd25lckluZGV4ICovCiAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+dHJhY2VSb3V0ZUN0bFRlc3ROYW1lLCB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsVGVzdE5hbWVMZW4pOyAgICAgICAvKiB0cmFjZVJvdXRlQ3RsT3BlcmF0aW9uTmFtZSAqLwogCi0gICAgYnplcm8obmV3b2lkLCBzaXplb2Yob2lkKSAqIE1BWF9PSURfTEVOKTsKKyAgICBtZW1zZXQobmV3b2lkLCAnXDAnLCBzaXplb2Yob2lkKSAqIE1BWF9PSURfTEVOKTsKICAgICBoZWFkZXJfY29tcGxleF9nZW5lcmF0ZV9vaWQobmV3b2lkLCAmbmV3b2lkX2xlbiwgTlVMTCwgMCwgdmFycyk7CiAKICAgICBmb3IgKGhjaWxhc3QgPSBoY2lwdHIyID0gdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlU3RvcmFnZTsKQEAgLTEzMjYsNyArMTM1Miw3IEBACiAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+dHJhY2VSb3V0ZUN0bE93bmVySW5kZXgsIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxPd25lckluZGV4TGVuKTsgICAvKiB0cmFjZVJvdXRlQ3RsT3duZXJJbmRleCAqLwogICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxUZXN0TmFtZSwgdGhlZGF0YS0+dHJhY2VSb3V0ZUN0bFRlc3ROYW1lTGVuKTsgICAgICAgLyogdHJhY2VSb3V0ZUN0bFRlc3ROYW1lICovCiAKLSAgICBiemVybyhuZXdvaWQsIHNpemVvZihvaWQpICogTUFYX09JRF9MRU4pOworICAgIG1lbXNldChuZXdvaWQsICdcMCcsIHNpemVvZihvaWQpICogTUFYX09JRF9MRU4pOwogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXJzKTsKIAogICAgIGZvciAoaGNpcHRyMiA9IHRyYWNlUm91dGVSZXN1bHRzVGFibGVTdG9yYWdlOyBoY2lwdHIyICE9IE5VTEw7CkBAIC0xMzU3LDcgKzEzODMsNyBAQAogICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxPd25lckluZGV4LCB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsT3duZXJJbmRleExlbik7ICAgLyogdHJhY2VSb3V0ZUN0bE93bmVySW5kZXggKi8KICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsVGVzdE5hbWUsIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxUZXN0TmFtZUxlbik7ICAgICAgIC8qIHRyYWNlUm91dGVDdGxPcGVyYXRpb25OYW1lICovCiAKLSAgICBiemVybyhuZXdvaWQsIHNpemVvZihvaWQpICogTUFYX09JRF9MRU4pOworICAgIG1lbXNldChuZXdvaWQsICdcMCcsIHNpemVvZihvaWQpICogTUFYX09JRF9MRU4pOwogCiAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKG5ld29pZCwgJm5ld29pZF9sZW4sIE5VTEwsIDAsIHZhcnMpOwogCkBAIC0xMzg4LDcgKzE0MTQsNyBAQAogICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxPd25lckluZGV4LCB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsT3duZXJJbmRleExlbik7ICAgLyogdHJhY2VSb3V0ZUN0bE93bmVySW5kZXggKi8KICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsVGVzdE5hbWUsIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxUZXN0TmFtZUxlbik7ICAgICAgIC8qIHRyYWNlUm91dGVDdGxUZXN0TmFtZSAqLwogCi0gICAgYnplcm8obmV3b2lkLCBzaXplb2Yob2lkKSAqIE1BWF9PSURfTEVOKTsKKyAgICBtZW1zZXQobmV3b2lkLCAnXDAnLCBzaXplb2Yob2lkKSAqIE1BWF9PSURfTEVOKTsKIAogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXJzKTsKIApAQCAtMTQ0Nyw3ICsxNDczLDcgQEAKICAgICAvKgogICAgICAqIHRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzIAogICAgICAqLwotICAgIGJ6ZXJvKG5ld29pZCwgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CisgICAgbWVtc2V0KG5ld29pZCwgJ1wwJywgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CiAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKG5ld29pZCwgJm5ld29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHJhY2VSb3V0ZUN0bFRhcmdldEFkZHJlc3MpIC8KQEAgLTE0NjEsNyArMTQ4Nyw3IEBACiAKICAgICBmb3IgKGhjaXB0ciA9IHRyYWNlUm91dGVIb3BzVGFibGVTdG9yYWdlOyBoY2lwdHIgIT0gTlVMTDsKICAgICAgICAgIGhjaXB0ciA9IGhjaXB0ci0+bmV4dCkgewotICAgICAgICBiemVybyhpbmRleG9pZCwgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CisJbWVtc2V0KGluZGV4b2lkLCAnXDAnLCBNQVhfT0lEX0xFTiAqIHNpemVvZihvaWQpKTsKICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKGluZGV4b2lkLCAmaW5kZXhvaWRfbGVuLCBOVUxMLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFycyk7CiAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlCkBAIC0xNDcwLDEzICsxNDk2LDEzIEBACiAgICAgICAgICAgICAgICAgKHN0cnVjdCB0cmFjZVJvdXRlSG9wc1RhYmxlX2RhdGEgKikKICAgICAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9nZXRfZnJvbV9vaWQodHJhY2VSb3V0ZUhvcHNUYWJsZVN0b3JhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhjaXB0ci0+bmFtZSwgaGNpcHRyLT5uYW1lbGVuKTsKLSAgICAgICAgICAgIGJ6ZXJvKHRlbXBvaWQsIE1BWF9PSURfTEVOICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgbWVtc2V0KHRlbXBvaWQsICdcMCcsIE1BWF9PSURfTEVOICogc2l6ZW9mKG9pZCkpOwogICAgICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKHRlbXBvaWQsICZ0ZW1wb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZVJvdXRlSG9wc0lwVGdBZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0cmFjZVJvdXRlSG9wc0lwVGdBZGRyZXNzKSAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG9pZCksIHZhcnMpOwogICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyX2hvcHMsIE5VTEwsIDAsIEFTTl9VTlNJR05FRCwgKGNoYXIgKikgJlN0b3JhZ2VIb3BzLT50cmFjZVJvdXRlSG9wc0hvcEluZGV4LCBzaXplb2YoU3RvcmFnZUhvcHMtPnRyYWNlUm91dGVIb3BzSG9wSW5kZXgpKTsgICAgLyogdHJhY2VSb3V0ZUN0bFRlc3ROYW1lICovCi0gICAgICAgICAgICBiemVybyhuZXdvaWQsIE1BWF9PSURfTEVOICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgbWVtc2V0KG5ld29pZCwgJ1wwJywgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CiAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9nZW5lcmF0ZV9vaWQobmV3b2lkLCAmbmV3b2lkX2xlbiwgdGVtcG9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wb2lkX2xlbiwgdmFyX2hvcHMpOwogICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyX2xpc3QsIG5ld29pZCwgbmV3b2lkX2xlbiwKQEAgLTQwOTMsMTEgKzQxMTksNyBAQAogICAgICAgICBmcmVlaG9zdGluZm8oaGkpOwogCiAKLSNpZmRlZiBIQVZFX1NFVExJTkVCVUYKLSAgICAgICAgc2V0bGluZWJ1ZihzdGRvdXQpOwotI2Vsc2UKLSAgICAgICAgc2V0dmJ1ZihzdGRvdXQsIE5VTEwsIF9JT0xCRiwgMCk7Ci0jZW5kaWYKKyAgICAgICAgbmV0c25tcF9zZXRfbGluZV9idWZmZXJpbmcoc3Rkb3V0KTsKIAogICAgICAgICBvdXRpcCA9IChzdHJ1Y3QgaXAgKikgbWFsbG9jKHBhY2tsZW4pOwogICAgICAgICBpZiAob3V0aXAgPT0gTlVMTCkgewpAQCAtNDkzOSw3ICs0OTYxLDcgQEAKIAogICAgICAgICBzZXRsaW5lYnVmKHN0ZG91dCk7CiAKLSAgICAgICAgKHZvaWQpIGJ6ZXJvKChjaGFyICopICZ3aGVyZXRvLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOworICAgICAgICBtZW1zZXQoJndoZXJldG8sICdcMCcsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CiAKICAgICAgICAgdG8tPnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CiAgICAgICAgIHRvLT5zaW42X3BvcnQgPSBodG9ucyhwb3J0KTsKQEAgLTUwMzYsNyArNTA1OCw3IEBACiAgICAgICAgICAgICBzYWRkci5zaW42X3BvcnQgPSAwOwogICAgICAgICAgICAgY2xvc2UocHJvYmVfZmQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgKHZvaWQpIGJ6ZXJvKChjaGFyICopICZzYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKyAgICAgICAgICAgIG1lbXNldCgmc2FkZHIsICdcMCcsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CiAgICAgICAgICAgICBzYWRkci5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OwogICAgICAgICAgICAgaWYgKGluZXRfcHRvbihBRl9JTkVUNiwgc291cmNlLCAmc2FkZHIuc2luNl9hZGRyKSA8IDApIHsKICAgICAgICAgICAgICAgICBQcmludGYoInRyYWNlcm91dGU6IHVua25vd24gYWRkciAlc1xuIiwgc291cmNlKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgKaW5kZXggMGJlOGRjNC4uMDcxMTk3OCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgKQEAgLTUyNSw3ICs1MjUsNyBAQAogI2RlZmluZSBGRF9TRVQobiwgcCkgICAgKChwKS0+ZmRzX2JpdHNbKG4pL05GREJJVFNdIHw9ICgxIDw8ICgobikgJSBORkRCSVRTKSkpCiAjZGVmaW5lIEZEX0NMUihuLCBwKSAgICAoKHApLT5mZHNfYml0c1sobikvTkZEQklUU10gJj0gfigxIDw8ICgobikgJSBORkRCSVRTKSkpCiAjZGVmaW5lIEZEX0lTU0VUKG4sIHApICAoKHApLT5mZHNfYml0c1sobikvTkZEQklUU10gJiAoMSA8PCAoKG4pICUgTkZEQklUUykpKQotI2RlZmluZSBGRF9aRVJPKHApICAgICAgYnplcm8oKGNoYXIgKikocCksIHNpemVvZigqKHApKSkKKyNkZWZpbmUgRkRfWkVSTyhwKSAgICAgIG1lbXNldCgocCksICdcMCcsIHNpemVvZigqKHApKSkKICNlbmRpZgogCiAjZGVmaW5lIEZwcmludGYgKHZvaWQpZnByaW50ZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jCmluZGV4IDI5NmRkNTMuLjc2Mzc1N2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlSG9wc1RhYmxlLmMKQEAgLTQwLDE1ICs0MCwyNCBAQAogICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgODEsIDEsIDUgfTsKIAogc3RydWN0IHZhcmlhYmxlMiB0cmFjZVJvdXRlSG9wc1RhYmxlX3ZhcmlhYmxlc1tdID0gewotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNJUFRHVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgMn19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNJUFRHVEFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgM319LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNNSU5SVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNNQVhSVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNX19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNBVkVSQUdFUlRULCAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNn19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNSVFRTVU1PRlNRVUFSRVMsIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgN319LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNTRU5UUFJPQkVTLCAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgOH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNQUk9CRVJFU1BPTlNFUywgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgOX19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNMQVNUR09PRFBST0JFLCAgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgMTB9fQorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNJUFRHVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgMn19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNJUFRHVEFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgM319LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNNSU5SVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNH19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNNQVhSVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNX19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNBVkVSQUdFUlRULCAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNn19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNSVFRTVU1PRlNRVUFSRVMsIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgN319LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNTRU5UUFJPQkVTLCAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgOH19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNQUk9CRVJFU1BPTlNFUywgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgOX19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNMQVNUR09PRFBST0JFLCAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgMTB9fQogfTsKIAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jCmluZGV4IGYzYjdjZTYuLjBiNDEwYzUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jCkBAIC0zOSwxMiArMzksMTggQEAKICAgICB7IDEsIDMsIDYsIDEsIDIsIDEsIDgxLCAxLCA0IH07CiAKIHN0cnVjdCB2YXJpYWJsZTIgdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlX3ZhcmlhYmxlc1tdID0gewotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWUhBRERSVFlQRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgNH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWUhBRERSLCAgIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgNX19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWVJFU1BPTlNFLCBBU05fVU5TSUdORUQsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgNn19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWVNUQVRVUywgICAgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgN319LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWUxBU1RSQywgICAgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgOH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWVRJTUUsICAgIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgOX19CisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZSEFERFJUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA0fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZSEFERFIsICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA1fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZUkVTUE9OU0UsIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA2fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZU1RBVFVTLCAgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA3fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZTEFTVFJDLCAgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA4fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZVElNRSwgICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA5fX0KIH07CiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jCmluZGV4IGQ1NjJhZGMuLjE5ZTczYjYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmMKQEAgLTQ4LDE0ICs0OCwyMiBAQAogICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgODEsIDEsIDMgfTsKIAogc3RydWN0IHZhcmlhYmxlMiB0cmFjZVJvdXRlUmVzdWx0c1RhYmxlX3ZhcmlhYmxlc1tdID0gewotICAgIHtDT0xVTU5fVFJBQ0VST1VURVJFU1VMVFNPUEVSU1RBVFVTLCAgICAgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZSwgMiwgezEsIDF9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTQ1VSSE9QQ09VTlQsICAgICAgQVNOX0dBVUdFLCBST05MWSwgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCAyfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFUkVTVUxUU0NVUlBST0JFQ09VTlQsICAgIEFTTl9HQVVHRSwgUk9OTFksIHZhcl90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLCAyLCB7MSwgM319LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVJFU1VMVFNJUFRHVEFERFJUWVBFLCAgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZSwgMiwgezEsIDR9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTSVBUR1RBRERSLCAgICBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCA1fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFUkVTVUxUU1RFU1RBVFRFTVBUUywgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLCAyLCB7MSwgNn19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVJFU1VMVFNURVNUU1VDQ0VTU0VTLCBBU05fVU5TSUdORUQsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZSwgMiwgezEsIDd9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTTEFTVEdPT0RQQVRILCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCA4fX0KKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTT1BFUlNUQVRVUywgICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCAxfX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUkVTVUxUU0NVUkhPUENPVU5ULCAgICAgIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLCAyLCB7MSwgMn19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURVJFU1VMVFNDVVJQUk9CRUNPVU5ULCAgICBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTSVBUR1RBRERSVFlQRSwgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCA0fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUkVTVUxUU0lQVEdUQUREUiwgICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLCAyLCB7MSwgNX19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURVJFU1VMVFNURVNUQVRURU1QVFMsICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTVEVTVFNVQ0NFU1NFUywgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCA3fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUkVTVUxUU0xBU1RHT09EUEFUSCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLCAyLCB7MSwgOH19CiB9OwogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIuaCBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjRlMjU0Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi5oCkBAIC0wLDAgKzEsNyBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworY29uZmlnX3JlcXVpcmUoZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZSkKK2NvbmZpZ19hZGRfbWliKEV0aGVyTGlrZS1NSUIpCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzLmggYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMmI0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0cy5oCkBAIC0wLDAgKzEsNyBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworI2lmIGRlZmluZWQobGludXgpCitjb25maWdfcmVxdWlyZShldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjExMDk1MAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMKQEAgLTAsMCArMSw5MjggQEAKKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImV0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuaCIKKyNpbmNsdWRlICJldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgiCisjaW5jbHVkZSAiZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9pb2N0bF9pbXBfY29tbW9uLmgiCisKKy8qCisgKiBAcmV0dmFsICAwIHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgZ2V0aWZhZGRycyBmYWlsZWQgCisgKiBAcmV0dmFsIC0yIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZAorICovCisKK3N0cnVjdCBpZm5hbWUgKgorZG90M3N0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IChzdHJ1Y3QgaWZuYW1lICpsaXN0X2hlYWQsIGludCAqcmV0dmFsKQoreworICAgIHN0cnVjdCBpZmFkZHJzICphZGRycyA9IE5VTEwsICpwID0gTlVMTDsKKyAgICBzdHJ1Y3QgaWZuYW1lICpuYW1lcHRyMT1OVUxMLCAqbmFtZXB0cjIgPSBOVUxMOworCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKChnZXRpZmFkZHJzKCZhZGRycykpIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgImdldGlmYWRkcnMgZmFpbGVkXG4iKSk7CisgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmRvdDNTdGF0c1RhYmxlLGludGVyZmFjZV9uYW1lX2xpc3RfZ2V0LCBnZXRpZmFkZHJzIGZhaWxlZFxuIik7CisgICAgICAgICpyZXR2YWwgPSAtMTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChwID0gYWRkcnM7IHA7IHAgPSBwLT5pZmFfbmV4dCkgeworCisgICAgICAgIGlmICghbGlzdF9oZWFkKSB7CisgICAgICAgICAgICBpZiAoIChsaXN0X2hlYWQgPSAoc3RydWN0IGlmbmFtZSAqKSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSkpIDwgMCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9nZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpKTsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZSxpbnRlcmZhY2VfbmFtZV9saXN0X2dldCwgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKKyAgICAgICAgICAgICAgICBmcmVlaWZhZGRycyhhZGRycyk7CisgICAgICAgICAgICAgICAgKnJldHZhbCA9IC0yOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtc2V0KGxpc3RfaGVhZCwgMCwgc2l6ZW9mIChzdHJ1Y3QgaWZuYW1lKSk7CisgICAgICAgICAgICBzdHJsY3B5KGxpc3RfaGVhZC0+bmFtZSwgcC0+aWZhX25hbWUsIElGX05BTUVTSVpFKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgIGZvciAobmFtZXB0cjEgPSBsaXN0X2hlYWQ7IG5hbWVwdHIxOyBuYW1lcHRyMiA9IG5hbWVwdHIxLCBuYW1lcHRyMSA9IG5hbWVwdHIxLT5pZm5fbmV4dCkKKyAgICAgICAgICAgIGlmICghc3RybmNtcChwLT5pZmFfbmFtZSwgbmFtZXB0cjEtPm5hbWUsIElGX05BTUVTSVpFKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAobmFtZXB0cjEpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIChuYW1lcHRyMi0+aWZuX25leHQgPSAoc3RydWN0IGlmbmFtZSAqKSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSkpIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKSk7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZSxpbnRlcmZhY2VfbmFtZV9saXN0X2dldCwgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKKyAgICAgICAgICAgIGRvdDNzdGF0c19pbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWUgKGxpc3RfaGVhZCk7CisgICAgICAgICAgICBmcmVlaWZhZGRycyhhZGRycyk7CisgICAgICAgICAgICAqcmV0dmFsID0gLTI7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBuYW1lcHRyMiA9IG5hbWVwdHIyLT5pZm5fbmV4dDsKKyAgICAgICAgbWVtc2V0KG5hbWVwdHIyLCAwLCBzaXplb2YgKHN0cnVjdCBpZm5hbWUpKTsKKyAgICAgICAgc3RybGNweShuYW1lcHRyMi0+bmFtZSwgcC0+aWZhX25hbWUsIElGX05BTUVTSVpFKTsKKyAgICAgICAgY29udGludWU7CisKKyAgICB9CisKKyAgICBmcmVlaWZhZGRycyhhZGRycyk7CisgICAgcmV0dXJuIGxpc3RfaGVhZDsKK30KKworLyoKKyAqIEByZXR2YWwgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIGludmFsaWQgcG9pbnRlcgorICovCisKK2ludAorZG90M3N0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZnJlZSAoc3RydWN0IGlmbmFtZSAqbGlzdF9oZWFkKQoreworICAgIHN0cnVjdCBpZm5hbWUgKm5hbWVwdHIxID0gTlVMTCwgKm5hbWVwdHIyID0gTlVMTDsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoIWxpc3RfaGVhZCkgeworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWU6IGludmFsaWQgcG9pbnRlciBsaXN0X2hlYWQiKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWUiLAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBwb2ludGVyIGxpc3RfaGVhZFxuIikpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yIChuYW1lcHRyMSA9IGxpc3RfaGVhZDsgbmFtZXB0cjE7IG5hbWVwdHIxID0gbmFtZXB0cjIpIHsKKyAgICAgICAgICAgIG5hbWVwdHIyID0gbmFtZXB0cjEtPmlmbl9uZXh0OworICAgICAgICAgICAgZnJlZSAobmFtZXB0cjEpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICogQHJldHZhbCAgMCA6IG5vdCBmb3VuZAorICogQHJldHZhbCAhMCA6IGlmSW5kZXgKKyAqLworCitpbnQgCitkb3Qzc3RhdHNfaW50ZXJmYWNlX2lvY3RsX2lmaW5kZXhfZ2V0IChpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUpIHsKKyNpZm5kZWYgU0lPQ0dJRklOREVYCisgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIHN0cnVjdCBpZnJlcSAgICBpZnJxOworICAgIGludCByYyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9pZmluZGV4X2dldCIsICJjYWxsZWRcbiIpKTsKKyAgICAgICAgICAgICAgICAgCisgICAgcmMgPSBfZG90M1N0YXRzX2lvY3RsX2dldChmZCwgU0lPQ0dJRklOREVYLCAmaWZycSwgbmFtZSk7CisgICAgaWYgKHJjIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9pZmluZGV4X2dldCIsCisgICAgICAgICAgICAgICAgICAgICJlcnJvciBvbiBpbnRlcmZhY2UgJyVzJ1xuIiwgbmFtZSkpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQsIGVycm9yIG9uIGludGVyZmFjZSAnJXMnXG4iLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB9CisKKyAgICByZXR1cm4gaWZycS5pZnJfaWZpbmRleDsKKyNlbmRpZiAvKiBTSU9DR0lGSU5ERVggKi8KK30KKworIyBpZiBIQVZFX0xJTlVYX1JUTkVUTElOS19IIC8qIHsgTkVUTElOSyAqLworLyoKKyAqIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBiYXNlZCB1cG9uIGNvZGUgSSBnb3QgZnJvbSBTdGVwaGVuIEhlbW1pbmdlcgorICovCisjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKworc3RydWN0IHJ0bmxfaGFuZGxlIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICBmZDsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfbmwgICAgICBsb2NhbDsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfbmwgICAgICBwZWVyOworICAgIF9fdTMyICAgICAgICAgICAgICAgICAgIHNlcTsKKyAgICBfX3UzMiAgICAgICAgICAgICAgICAgICBkdW1wOworfTsKKworc3RydWN0IGlmc3RhdF9lbnQgeworICAgIHN0cnVjdCBpZnN0YXRfZW50ICpuZXh0OworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgaW50IGlmaW5kZXg7CisgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0cyBzdGF0czsKK307CisKK3R5cGVkZWYgaW50ICgqcnRubF9maWx0ZXJfdCkoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICosIHN0cnVjdCBubG1zZ2hkciAqbiwgdm9pZCAqKTsKKworc3RydWN0IHJ0bmxfZHVtcF9maWx0ZXJfYXJnCit7CisgICAgcnRubF9maWx0ZXJfdCBmaWx0ZXI7CisgICAgdm9pZCAqYXJnMTsKKyAgICBydG5sX2ZpbHRlcl90IGp1bms7CisgICAgdm9pZCAqYXJnMjsKK307CisKK3N0YXRpYyBzdHJ1Y3QgaWZzdGF0X2VudCAqa2Vybl9kYjsKK3N0YXRpYyBjb25zdCBpbnQgcmN2YnVmX3NpemUgPSAxMDI0ICogMTAyNDsKKworc3RhdGljIGludAorcnRubF9vcGVuX2J5cHJvdG8oc3RydWN0IHJ0bmxfaGFuZGxlICpydGgsIHVuc2lnbmVkIHN1YnNjcmlwdGlvbnMsIGludCBwcm90b2NvbCkKK3sKKyAgICBzb2NrbGVuX3QgYWRkcl9sZW47CisgICAgaW50IHNuZGJ1ZiA9IDMyNzY4OworCisgICAgbWVtc2V0KHJ0aCwgMCwgc2l6ZW9mKCpydGgpKTsKKworICAgIHJ0aC0+ZmQgPSBzb2NrZXQoQUZfTkVUTElOSywgU09DS19SQVcsIHByb3RvY29sKTsKKyAgICBpZiAocnRoLT5mZCA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNhbm5vdCBvcGVuIG5ldGxpbmsgc29ja2V0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoc2V0c29ja29wdChydGgtPmZkLFNPTF9TT0NLRVQsU09fU05EQlVGLCZzbmRidWYsc2l6ZW9mKHNuZGJ1ZikpIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiU09fU05EQlVGIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoc2V0c29ja29wdChydGgtPmZkLFNPTF9TT0NLRVQsU09fUkNWQlVGLCZyY3ZidWZfc2l6ZSxzaXplb2YocmN2YnVmX3NpemUpKSA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlNPX1JDVkJVRiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWVtc2V0KCZydGgtPmxvY2FsLCAwLCBzaXplb2YocnRoLT5sb2NhbCkpOworICAgIHJ0aC0+bG9jYWwubmxfZmFtaWx5ID0gQUZfTkVUTElOSzsKKyAgICBydGgtPmxvY2FsLm5sX2dyb3VwcyA9IHN1YnNjcmlwdGlvbnM7CisKKyAgICBpZiAoYmluZChydGgtPmZkLCAoc3RydWN0IHNvY2thZGRyKikmcnRoLT5sb2NhbCwgc2l6ZW9mKHJ0aC0+bG9jYWwpKSA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNhbm5vdCBiaW5kIG5ldGxpbmsgc29ja2V0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYWRkcl9sZW4gPSBzaXplb2YocnRoLT5sb2NhbCk7CisgICAgaWYgKGdldHNvY2tuYW1lKHJ0aC0+ZmQsIChzdHJ1Y3Qgc29ja2FkZHIqKSZydGgtPmxvY2FsLCAmYWRkcl9sZW4pIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ2Fubm90IGdldHNvY2tuYW1lIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGFkZHJfbGVuICE9IHNpemVvZihydGgtPmxvY2FsKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiV3JvbmcgYWRkcmVzcyBsZW5ndGggJWRcbiIsIGFkZHJfbGVuKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAocnRoLT5sb2NhbC5ubF9mYW1pbHkgIT0gQUZfTkVUTElOSykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiV3JvbmcgYWRkcmVzcyBmYW1pbHkgJWRcbiIsIHJ0aC0+bG9jYWwubmxfZmFtaWx5KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBydGgtPnNlcSA9IHRpbWUoTlVMTCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3J0bmxfb3BlbihzdHJ1Y3QgcnRubF9oYW5kbGUgKnJ0aCwgdW5zaWduZWQgc3Vic2NyaXB0aW9ucykKK3sKKyAgICByZXR1cm4gcnRubF9vcGVuX2J5cHJvdG8ocnRoLCBzdWJzY3JpcHRpb25zLCBORVRMSU5LX1JPVVRFKTsKK30KKworc3RhdGljIHZvaWQKK3J0bmxfY2xvc2Uoc3RydWN0IHJ0bmxfaGFuZGxlICpydGgpCit7CisgICAgaWYgKHJ0aC0+ZmQgIT0gLTEpCisgICAgICAgIGNsb3NlKHJ0aC0+ZmQpOworICAgIHJ0aC0+ZmQgPSAtMTsKKworICAgIHJldHVybjsKK30KKworc3RhdGljIGludAorcnRubF93aWxkZHVtcF9yZXF1ZXN0KHN0cnVjdCBydG5sX2hhbmRsZSAqcnRoLCBpbnQgZmFtaWx5LCBpbnQgdHlwZSkKK3sKKyAgICBzdHJ1Y3QgeworICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgbmxoOworICAgICAgICBzdHJ1Y3QgcnRnZW5tc2cgZzsKKyAgICB9IHJlcTsKKworICAgIG1lbXNldCgmcmVxLCAwLCBzaXplb2YocmVxKSk7CisgICAgcmVxLm5saC5ubG1zZ19sZW4gPSBzaXplb2YocmVxKTsKKyAgICByZXEubmxoLm5sbXNnX3R5cGUgPSB0eXBlOworICAgIHJlcS5ubGgubmxtc2dfZmxhZ3MgPSBOTE1fRl9ST09UfE5MTV9GX01BVENIfE5MTV9GX1JFUVVFU1Q7CisgICAgcmVxLm5saC5ubG1zZ19waWQgPSAwOworICAgIHJlcS5ubGgubmxtc2dfc2VxID0gcnRoLT5kdW1wID0gKytydGgtPnNlcTsKKyAgICByZXEuZy5ydGdlbl9mYW1pbHkgPSBmYW1pbHk7CisKKyAgICByZXR1cm4gc2VuZChydGgtPmZkLCAodm9pZCopJnJlcSwgc2l6ZW9mKHJlcSksIDApOworfQorCitzdGF0aWMgaW50CitwYXJzZV9ydGF0dHIoc3RydWN0IHJ0YXR0ciAqdGJbXSwgaW50IG1heCwgc3RydWN0IHJ0YXR0ciAqcnRhLCBpbnQgbGVuKQoreworICAgIG1lbXNldCh0YiwgMCwgc2l6ZW9mKHN0cnVjdCBydGF0dHIgKikgKiAobWF4ICsgMSkpOworICAgIHdoaWxlIChSVEFfT0socnRhLCBsZW4pKQorICAgIHsKKyAgICAgICAgaWYgKHJ0YS0+cnRhX3R5cGUgPD0gbWF4KQorICAgICAgICAgICAgdGJbcnRhLT5ydGFfdHlwZV0gPSBydGE7CisgICAgICAgIHJ0YSA9IFJUQV9ORVhUKHJ0YSxsZW4pOworICAgIH0KKworICAgIGlmIChsZW4pCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJwYXJzZV9ydGF0dHI6ICEhIURlZmljaXQgJWQsIHJ0YV9sZW49JWRcbiIsIGxlbiwgcnRhLT5ydGFfbGVuKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitnZXRfbmxtc2coY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8sIHN0cnVjdCBubG1zZ2hkciAqbSwgdm9pZCAqYXJnKQoreworICAgIHN0cnVjdCBpZmluZm9tc2cgKmlmaSA9IE5MTVNHX0RBVEEobSk7CisgICAgc3RydWN0IHJ0YXR0ciAqIHRiW0lGTEFfTUFYKzFdOworICAgIGludCBsZW4gPSBtLT5ubG1zZ19sZW47CisgICAgc3RydWN0IGlmc3RhdF9lbnQgKm47CisKKyAgICBpZiAobS0+bmxtc2dfdHlwZSAhPSBSVE1fTkVXTElOSykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBsZW4gLT0gTkxNU0dfTEVOR1RIKHNpemVvZigqaWZpKSk7CisgICAgaWYgKGxlbiA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHBhcnNlX3J0YXR0cih0YiwgSUZMQV9NQVgsIElGTEFfUlRBKGlmaSksIGxlbik7CisgICAgaWYgKHRiW0lGTEFfSUZOQU1FXSA9PSBOVUxMIHx8IHRiW0lGTEFfU1RBVFNdID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworCisgICAgbiA9IG1hbGxvYyhzaXplb2YoKm4pKTsKKyAgICBtZW1zZXQobiwgMCwgc2l6ZW9mKCpuKSk7CisKKyAgICBuLT5pZmluZGV4ID0gaWZpLT5pZmlfaW5kZXg7CisgICAgbi0+bmFtZSA9IHN0cmR1cChSVEFfREFUQSh0YltJRkxBX0lGTkFNRV0pKTsKKyAgICBtZW1jcHkoJm4tPnN0YXRzLCBSVEFfREFUQSh0YltJRkxBX1NUQVRTXSksIHNpemVvZihuLT5zdGF0cykpOworICAgIG4tPm5leHQgPSBrZXJuX2RiOworICAgIGtlcm5fZGIgPSBuOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitydG5sX2R1bXBfZmlsdGVyX2woc3RydWN0IHJ0bmxfaGFuZGxlICpydGgsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0bmxfZHVtcF9maWx0ZXJfYXJnICphcmcpCit7CisgICAgc3RydWN0IHNvY2thZGRyX25sIG5sYWRkcjsKKyAgICBzdHJ1Y3QgaW92ZWMgaW92OworICAgIHN0cnVjdCBtc2doZHIgbXNnID0geworICAgICAgICAubXNnX25hbWUgPSAmbmxhZGRyLAorICAgICAgICAubXNnX25hbWVsZW4gPSBzaXplb2YobmxhZGRyKSwKKyAgICAgICAgLm1zZ19pb3YgPSAmaW92LAorICAgICAgICAubXNnX2lvdmxlbiA9IDEsCisgICAgfTsKKyAgICBjaGFyIGJ1ZlsxNjM4NF07CisKKyAgICBpb3YuaW92X2Jhc2UgPSBidWY7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaW50IHN0YXR1czsKKyAgICAgICAgY29uc3Qgc3RydWN0IHJ0bmxfZHVtcF9maWx0ZXJfYXJnICphOworCisgICAgICAgIGlvdi5pb3ZfbGVuID0gc2l6ZW9mKGJ1Zik7CisgICAgICAgIHN0YXR1cyA9IHJlY3Ztc2cocnRoLT5mZCwgJm1zZywgMCk7CisKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUiB8fCBlcnJubyA9PSBFQUdBSU4pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm5ldGxpbmsgcmVjZWl2ZSBlcnJvciAlcyAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSwgZXJybm8pOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YXR1cyA9PSAwKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVPRiBvbiBuZXRsaW5rXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoYSA9IGFyZzsgYS0+ZmlsdGVyOyBhKyspIHsKKyAgICAgICAgICAgIHN0cnVjdCBubG1zZ2hkciAqaCA9IChzdHJ1Y3Qgbmxtc2doZHIqKWJ1ZjsKKworICAgICAgICAgICAgd2hpbGUgKE5MTVNHX09LKGgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBpbnQgZXJyOworCisgICAgICAgICAgICAgICAgaWYgKG5sYWRkci5ubF9waWQgIT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgaC0+bmxtc2dfcGlkICE9IHJ0aC0+bG9jYWwubmxfcGlkIHx8CisgICAgICAgICAgICAgICAgICAgICBoLT5ubG1zZ19zZXEgIT0gcnRoLT5kdW1wKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhLT5qdW5rKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBhLT5qdW5rKCZubGFkZHIsIGgsIGEtPmFyZzIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBnb3RvIHNraXBfaXQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGgtPm5sbXNnX3R5cGUgPT0gTkxNU0dfRE9ORSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgaWYgKGgtPm5sbXNnX3R5cGUgPT0gTkxNU0dfRVJST1IpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5sbXNnZXJyICplcnIgPSAoc3RydWN0IG5sbXNnZXJyKilOTE1TR19EQVRBKGgpOworICAgICAgICAgICAgICAgICAgICBpZiAoaC0+bmxtc2dfbGVuIDwgTkxNU0dfTEVOR1RIKHNpemVvZihzdHJ1Y3Qgbmxtc2dlcnIpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUiB0cnVuY2F0ZWRcbiIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8gPSAtZXJyLT5lcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcnJvcigiUlRORVRMSU5LIGFuc3dlcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVyciA9IGEtPmZpbHRlcigmbmxhZGRyLCBoLCBhLT5hcmcxKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKworc2tpcF9pdDoKKyAgICAgICAgICAgICAgICBoID0gTkxNU0dfTkVYVChoLCBzdGF0dXMpOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlICgwKTsKKyAgICAgICAgaWYgKG1zZy5tc2dfZmxhZ3MgJiBNU0dfVFJVTkMpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTWVzc2FnZSB0cnVuY2F0ZWRcbiIpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIhISFSZW1uYW50IG9mIHNpemUgJWRcbiIsIHN0YXR1cyk7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgaW50CitydG5sX2R1bXBfZmlsdGVyKHN0cnVjdCBydG5sX2hhbmRsZSAqcnRoLAorICAgICAgICAgICAgICAgICBydG5sX2ZpbHRlcl90IGZpbHRlciwKKyAgICAgICAgICAgICAgICAgdm9pZCAqYXJnMSwKKyAgICAgICAgICAgICAgICAgcnRubF9maWx0ZXJfdCBqdW5rLAorICAgICAgICAgICAgICAgICB2b2lkICphcmcyKQoreworICAgIGNvbnN0IHN0cnVjdCBydG5sX2R1bXBfZmlsdGVyX2FyZyBhWzJdID0geworICAgICAgICB7IC5maWx0ZXIgPSBmaWx0ZXIsIC5hcmcxID0gYXJnMSwgLmp1bmsgPSBqdW5rLCAuYXJnMiA9IGFyZzIgfSwKKyAgICAgICAgeyAuZmlsdGVyID0gTlVMTCwgICAuYXJnMSA9IE5VTEwsIC5qdW5rID0gTlVMTCwgLmFyZzIgPSBOVUxMIH0KKyAgICB9OworCisgICAgcmV0dXJuIHJ0bmxfZHVtcF9maWx0ZXJfbChydGgsIGEpOworfQorCitpbnQKK19kb3QzU3RhdHNfbmV0bGlua19nZXRfZXJyb3JjbnRycyhkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4LCBjb25zdCBjaGFyICpuYW1lKQoreworICAgIHN0cnVjdCBydG5sX2hhbmRsZSBydGg7CisgICAgc3RydWN0IGlmc3RhdF9lbnQgKmtlOworICAgIGludCBkb25lOworCisgICAgaWYgKHJ0bmxfb3BlbigmcnRoLCAwKSA8IDApCisgICAgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiX2RvdDNTdGF0c19uZXRsaW5rX2dldF9lcnJvcmNudHJzOiBydG5sX29wZW4oKSBmYWlsZWRcbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAocnRubF93aWxkZHVtcF9yZXF1ZXN0KCZydGgsIEFGX0lORVQsIFJUTV9HRVRMSU5LKSA8IDApCisgICAgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiX2RvdDNTdGF0c19uZXRsaW5rX2dldF9lcnJvcmNudHJzOiBDYW5ub3Qgc2VuZCBkdW1wIHJlcXVlc3QiKTsKKyAgICAgICAgcnRubF9jbG9zZSgmcnRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKHJ0bmxfZHVtcF9maWx0ZXIoJnJ0aCwgZ2V0X25sbXNnLCBOVUxMLCBOVUxMLCBOVUxMKSA8IDApCisgICAgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiX2RvdDNTdGF0c19uZXRsaW5rX2dldF9lcnJvcmNudHJzOiBEdW1wIHRlcm1pbmF0ZWRcbiIpOworICAgICAgICBydG5sX2Nsb3NlKCZydGgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBydG5sX2Nsb3NlKCZydGgpOworCisgICAgLyoKKyAgICAgKiBOb3cgc2NhbiBrZXJuX2RiIGZvciB0aGlzIGlmJ3MgZGF0YQorICAgICAqIFdoaWxlIGRvaW5nIHNvLCB3ZSdsbCB0aHJvdyBhd2F5IHRoZSBrZXJuIGRiLgorICAgICAqLworICAgIGRvbmUgPSAwOworCisgICAgd2hpbGUgKChrZSA9IGtlcm5fZGIpICE9IE5VTEwpCisgICAgeworICAgICAgICBpZiAoc3RyY21wKGtlLT5uYW1lLCBuYW1lKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9kYXRhICpkYXRhID0gJnJvd3JlcV9jdHgtPmRhdGE7CisKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGUiLCAiSUZMQV9TVEFUUyBmb3IgJXNcbiIsIG5hbWUpKTsKKworICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRkNTRXJyb3JzID0ga2UtPnN0YXRzLnJ4X2NyY19lcnJvcnM7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNGQ1NFUlJPUlNfRkxBRzsKKworICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zID0ga2UtPnN0YXRzLnR4X2Ryb3BwZWQ7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlNfRkxBRzsKKworICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9ycyA9IGtlLT5zdGF0cy50eF9maWZvX2Vycm9yczsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDVFJBTlNNSVRFUlJPUlNfRkxBRzsKKworICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzID0ga2UtPnN0YXRzLnR4X2NhcnJpZXJfZXJyb3JzOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTQ0FSUklFUlNFTlNFRVJST1JTX0ZMQUc7CisKKyAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3MgPSBrZS0+c3RhdHMucnhfZnJhbWVfZXJyb3JzOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTRlJBTUVUT09MT05HU19GTEFHOworCisgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnMgPSBrZS0+c3RhdHMucnhfZmlmb19lcnJvcnM7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1JFQ0VJVkVFUlJPUlNfRkxBRzsKKworICAgICAgICAgICAgZG9uZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAga2Vybl9kYiA9IGtlLT5uZXh0OworICAgICAgICBmcmVlKGtlKTsKKyAgICB9CisKKyAgICByZXR1cm4gIWRvbmU7Cit9CisjIGVsc2UgLyogfXsgKi8KK2ludAorX2RvdDNTdGF0c19uZXRsaW5rX2dldF9lcnJvcmNudHJzKGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgcmV0dXJuIDE7Cit9CisjIGVuZGlmIC8qIH0gKi8KKworCisvKgorICogTkFNRTogZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzCisgKiBQVVJQT1NFOiBUbyBnZXQgYSBzaW5nbGUgc3RhdGlzdGljcyB2YWx1ZSBmcm9tIC9zeXMvY2xhc3MvbmV0LzxpZm5hbWU+L3N0YXRpc3RpY3MvPGN0cm5hbWU+CisgKiBBUkdVTUVOVFM6IGlmbmFtZTogaW50ZXJmYWNlIG5hbWUKKyAqICAgICAgY3RybmFtZTogY291bnRlciBuYW1lCisgKiAgICAgIHZhbHVlcDogd2hlcmUgdG8gc3RvcmUgdmFsdWUKKyAqIFJFVFVSTlM6IDAgaWYgdmFsdWUgbm90IGF2YWlsYWJsZQorICogICAgICBub24tMCBpZiB2YWx1ZSBhdmFpbGFibGUKKyAqLworc3RhdGljIGludAorZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKGNvbnN0IGNoYXIgKmlmbmFtZSwgY2hhciAqY3RybmFtZSwgdV9sb25nICp2YWx1ZXApCit7CisgICAgY2hhciBwYXRoWzI1Nl07CisgICAgRklMRSAqZnA7CisgICAgaW50IHJ2OworCisgICAgaWYgKGlmbmFtZSA9PSBOVUxMIHx8IGN0cm5hbWUgPT0gTlVMTCB8fCB2YWx1ZXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIvc3lzL2NsYXNzL25ldC8lcy9zdGF0aXN0aWNzLyVzIiwgaWZuYW1lLCBjdHJuYW1lKTsKKyAgICBmcCA9IGZvcGVuKHBhdGgsICJydCIpOworICAgIGlmIChmcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJ2ID0gMTsKKyAgICBpZiAoZnNjYW5mKGZwLCAiJWx1IiwgdmFsdWVwKSAhPSAxKQorICAgICAgICBydiA9IDA7CisKKyAgICBmY2xvc2UoZnApOworCisgICAgcmV0dXJuIHJ2OworfQorCisvKgorICogTkFNRTogaW50ZXJmYWNlX2RvdDNzdGF0c19nZXRfZXJyb3Jjb3VudGVycworICogUFVSUE9TRTogVG8gZ2V0IGV0aGVybmV0IGVycm9yIHN0YXRpc3RpY3MKKyAqIEFSR1VNRU5UUzogcm93cmVxX2N0eDogd2hlcmUgdG8gc3RvcmUgdGhlIHZhbHVlKHMpCisgKiAgICAgIG5hbWU6IGludGVyZmFjZSBuYW1lCisgKiBSRVRVUk5TOiBub3RoaW5nLiBmaWVsZHMgbm90IHNldCBpZiBkYXRhIG5vdCBhdmFpbGFibGUKKyAqLwordm9pZAoraW50ZXJmYWNlX2RvdDNzdGF0c19nZXRfZXJyb3Jjb3VudGVycyAoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICB1X2xvbmcgdmFsdWU7CisgICAgZG90M1N0YXRzVGFibGVfZGF0YSAqZGF0YSA9ICZyb3dyZXFfY3R4LT5kYXRhOworICAgIEZJTEUgKmRldjsKKyAgICBjb25zdCBjaGFyIE5FVERFVl9GSUxFW10gPSAiL3Byb2MvbmV0L2RldiI7CisKKyAgICBpZiAoX2RvdDNTdGF0c19uZXRsaW5rX2dldF9lcnJvcmNudHJzKHJvd3JlcV9jdHgsIG5hbWUpID09IDApCisgICAgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlIiwgImludGVyZmFjZV9kb3Qzc3RhdHNfZ2V0X2Vycm9yY291bnRlcnM6IGdvdCBkYXRhIGZyb20gSUZMQV9TVEFUU1xuIikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKChkZXYgPSBmb3BlbihORVRERVZfRklMRSwgInIiKSkgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIGNoYXIgbGluZVsyNTZdLCAqbHAsICpuZXh0OworICAgICAgICBzaXplX3QgbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHZhbHVlOworICAgICAgICB1bnNpZ25lZCBpbnQgY29sdW1uOworCisgICAgICAgIHdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGRldikgIT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgLyogICAgYnIwOjY4Mzk1NjM1IDEwMzgyMTQgICAgMCAgICAwICAgIDAgICAgIDAgICAgICAgICAgMCAgICA5Mzk0MTEgMjU2MjY2MDYgICA5MDcwOCAgICAwICAgIDAgICAgMCAgICAgMCAgICAgICAwICAgICAgICAgIDAgKi8KKyAgICAgICAgICAgIGxwID0gbGluZTsKKyAgICAgICAgICAgIHdoaWxlICgqbHAgPT0gJyAnIHx8ICpscCA9PSAnXHQnKQorICAgICAgICAgICAgICAgIGxwKys7CisgICAgICAgICAgICBpZiAoc3RybmNtcChscCwgbmFtZSwgbmFtZWxlbikgIT0gMCB8fCBscFtuYW1lbGVuXSAhPSAnOicpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBscCArPSBuYW1lbGVuICsgMTsgICAgICAgICAvKiBTa2lwIG5hbWUgYW5kIGNvbG9uICovCisKKyAgICAgICAgICAgIGNvbHVtbiA9IDE7CisgICAgICAgICAgICB3aGlsZSAoMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0cnRvdWwobHAsICZuZXh0LCAxMCk7CisgICAgICAgICAgICAgICAgaWYgKG5leHQgPT0gbHApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAvKiBubyBtb3JlIGRhdGEgKi8KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAzOiAKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRkNTRXJyb3JzID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0ZDU0VSUk9SU19GTEFHOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDEyOgorICAgICAgICAgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnMgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTREVGRVJSRURUUkFOU01JU1NJT05TX0ZMQUc7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTM6CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTSU5URVJOQUxNQUNUUkFOU01JVEVSUk9SU19GTEFHOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE1OgorICAgICAgICAgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnMgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTQ0FSUklFUlNFTlNFRVJST1JTX0ZMQUc7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRnJhbWVUb29Mb25ncyA9IHZhbHVlOworICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNGUkFNRVRPT0xPTkdTX0ZMQUc7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDUkVDRUlWRUVSUk9SU19GTEFHOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE0OgorICAgICAgICAgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXMgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTU0lOR0xFQ09MTElTSU9ORlJBTUVTX0ZMQUc7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb2x1bW4rKzsKKyAgICAgICAgICAgICAgICBscCA9IG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZjbG9zZShkZXYpOworICAgIH0KKworICAgIGlmICghKHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgJiBDT0xVTU5fRE9UM1NUQVRTRkNTRVJST1JTX0ZMQUcpICYmCisgICAgICAgICAgZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKG5hbWUsICJyeF9lcnJvcnMiLCAmdmFsdWUpKSB7CisgICAgICAgIGRhdGEtPmRvdDNTdGF0c0ZDU0Vycm9ycyA9IHZhbHVlOworICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNGQ1NFUlJPUlNfRkxBRzsKKyAgICB9CisgICAgaWYgKCEocm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyAmIENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlNfRkxBRykgJiYKKyAgICAgICAgICBnZXR1bG9uZ2Zyb21zeXNjbGFzc25ldHN0YXRpc3RpY3MobmFtZSwgInR4X2Ryb3BwZWQiLCAmdmFsdWUpKSB7CisgICAgICAgIGRhdGEtPmRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9ucyA9IHZhbHVlOworICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlNfRkxBRzsKKyAgICB9CisgICAgaWYgKCEocm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyAmIENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1RSQU5TTUlURVJST1JTX0ZMQUcpICYmCisgICAgICAgICAgZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKG5hbWUsICJ0eF9maWZvX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKyAgICAgICAgZGF0YS0+ZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9ycyA9IHZhbHVlOworICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1RSQU5TTUlURVJST1JTX0ZMQUc7CisgICAgfQorICAgIGlmICghKHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgJiBDT0xVTU5fRE9UM1NUQVRTQ0FSUklFUlNFTlNFRVJST1JTX0ZMQUcpICYmCisgICAgICAgICAgZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKG5hbWUsICJ0eF9jYXJyaWVyX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKyAgICAgICAgZGF0YS0+ZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzID0gdmFsdWU7CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0NBUlJJRVJTRU5TRUVSUk9SU19GTEFHOworICAgIH0KKyAgICBpZiAoIShyb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzICYgQ09MVU1OX0RPVDNTVEFUU0ZSQU1FVE9PTE9OR1NfRkxBRykgJiYKKyAgICAgICAgICBnZXR1bG9uZ2Zyb21zeXNjbGFzc25ldHN0YXRpc3RpY3MobmFtZSwgInJ4X2ZyYW1lX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKyAgICAgICAgZGF0YS0+ZG90M1N0YXRzRnJhbWVUb29Mb25ncyA9IHZhbHVlOworICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNGUkFNRVRPT0xPTkdTX0ZMQUc7CisgICAgfQorICAgIGlmICghKHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgJiBDT0xVTU5fRE9UM1NUQVRTSU5URVJOQUxNQUNSRUNFSVZFRVJST1JTX0ZMQUcpICYmCisgICAgICAgICAgZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKG5hbWUsICJyeF9maWZvX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKyAgICAgICAgZGF0YS0+ZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzID0gdmFsdWU7CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDUkVDRUlWRUVSUk9SU19GTEFHOworICAgIH0KKworICAgIHJldHVybjsKK30KKworLyoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBjYW5ub3QgZ2V0IEVUSFRPT0xfRFJWSU5GTyBmYWlsZWQgCisgKiBAcmV0dmFsIC0yIG5zdGF0cyB6ZXJvIC0gbm8gc3RhdGlzdGNzIGF2YWlsYWJsZQorICogQHJldHZhbCAtMyBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgaG9sZGluZyB0aGUgc3RhdGlzdGljcyBmYWlsZWQKKyAqIEByZXR2YWwgLTQgY2Fubm90IGdldCBFVEhUT09MX0dTVFJJTkdTIGluZm9ybWF0aW9uCisgKiBAcmV0dmFsIC01IGNhbm5vdCBnZXQgRVRIVE9PTF9HU1RBVFMgaW5mb3JtYXRpb24KKyAqIEByZXR2YWwgLTYgZnVuY3Rpb24gbm90IHN1cHBvcnRlZCBpZiBIQVZFX0xJTlVYX0VUSFRPT0xfSCBub3QgZGVmaW5lZAorICovCisKKworaW50IAoraW50ZXJmYWNlX2lvY3RsX2RvdDNzdGF0c19nZXQgKGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsIGludCBmZCwgY29uc3QgY2hhciAqbmFtZSkgeworCisjaWZkZWYgSEFWRV9MSU5VWF9FVEhUT09MX0gKKyAgICBkb3QzU3RhdHNUYWJsZV9kYXRhICpkYXRhID0gJnJvd3JlcV9jdHgtPmRhdGE7CisgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyBkcml2ZXJfaW5mbzsKKyAgICBzdHJ1Y3QgZXRodG9vbF9nc3RyaW5ncyAqZXRoX3N0cmluZ3M7CisgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKmV0aF9zdGF0czsKKyAgICBzdHJ1Y3QgaWZyZXEgaWZyOyAKKyAgICB1bnNpZ25lZCBpbnQgbnN0YXRzLCBzaXplX3N0ciwgaTsKKyAgICBpbnQgZXJyOworCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZG90M1N0YXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbWVtc2V0KCZpZnIsIDAsIHNpemVvZihpZnIpKTsKKyAgICBzdHJsY3B5KGlmci5pZnJfbmFtZSwgbmFtZSwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpOworCisgICAgbWVtc2V0KCZkcml2ZXJfaW5mbywgMCwgc2l6ZW9mIChkcml2ZXJfaW5mbykpOworICAgIGRyaXZlcl9pbmZvLmNtZCA9IEVUSFRPT0xfR0RSVklORk87CisgICAgaWZyLmlmcl9kYXRhID0gKGNoYXIgKikmZHJpdmVyX2luZm87CisKKyAgICBlcnIgPSBfZG90M1N0YXRzX2lvY3RsX2dldChmZCwgU0lPQ0VUSFRPT0wsICZpZnIsIG5hbWUpOworICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICAgICAiRVRIVE9PTF9HRVREUlZJTkZPIGZhaWxlZCBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBuc3RhdHMgPSBkcml2ZXJfaW5mby5uX3N0YXRzOworICAgIGlmIChuc3RhdHMgPCAxKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICAgICAibm8gc3RhdHMgYXZhaWxhYmxlIGZvciBpbnRlcmZhY2UgfCVzfCBcbiIsIG5hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIHNpemVfc3RyID0gbnN0YXRzICogRVRIX0dTVFJJTkdfTEVOOworCisgICAgZXRoX3N0cmluZ3MgPSBtYWxsb2Moc2l6ZV9zdHIgKyBzaXplb2YgKHN0cnVjdCBldGh0b29sX2dzdHJpbmdzKSk7CisgICAgaWYgKCFldGhfc3RyaW5ncykgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9kb3QzU3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgIm5vIG1lbW9yeSBhdmFpbGFibGVcbiIpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGUsaW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQsIG5vIG1lbW9yeSBhdmFpbGFibGVcbiIpOworCisgICAgICAgIHJldHVybiAtMzsKKyAgICB9CisgICAgbWVtc2V0IChldGhfc3RyaW5ncywgMCwgKHNpemVfc3RyICsgc2l6ZW9mIChzdHJ1Y3QgZXRodG9vbF9nc3RyaW5ncykpKTsKKworICAgIGV0aF9zdGF0cyA9IG1hbGxvYyAoc2l6ZV9zdHIgKyBzaXplb2YgKHN0cnVjdCBldGh0b29sX3N0YXRzKSk7CisgICAgaWYgKCFldGhfc3RhdHMpIHsKKyAgICAgICAgZnJlZSAoZXRoX3N0cmluZ3MpOworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9kb3QzU3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgIm5vIG1lbW9yeSBhdmFpbGFibGVcbiIpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGUsaW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQsIG5vIG1lbW9yeSBhdmFpbGFibGVcbiIpOworCisgICAgICAgIHJldHVybiAtMzsKKyAgICB9CisgICAgIG1lbXNldCAoZXRoX3N0YXRzLCAwLCAoc2l6ZV9zdHIgKyBzaXplb2YgKHN0cnVjdCBldGh0b29sX3N0YXRzKSkpOworCisgICAgZXRoX3N0cmluZ3MtPmNtZCA9IEVUSFRPT0xfR1NUUklOR1M7CisgICAgZXRoX3N0cmluZ3MtPnN0cmluZ19zZXQgPSBFVEhfU1NfU1RBVFM7CisgICAgZXRoX3N0cmluZ3MtPmxlbiA9IG5zdGF0czsKKyAgICBpZnIuaWZyX2RhdGEgPSAoY2hhciAqKSBldGhfc3RyaW5nczsKKyAgICBlcnIgPSBfZG90M1N0YXRzX2lvY3RsX2dldChmZCwgU0lPQ0VUSFRPT0wsICZpZnIsIG5hbWUpOworICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGdldCBzdGF0cyBzdHJpbmdzIGluZm9ybWF0aW9uIGZvciBpbnRlcmZhY2UgfCVzfCBcbiIsIG5hbWUpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGUsaW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQsIGNhbm5vdCBnZXQgc3RhdHMgc3RyaW5ncyBpbmZvcm1hdGlvbiBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKTsKKworICAgICAgICBmcmVlKGV0aF9zdHJpbmdzKTsKKyAgICAgICAgZnJlZShldGhfc3RhdHMpOworICAgICAgICByZXR1cm4gLTQ7CisgICAgfQorCisgICAgZXRoX3N0YXRzLT5jbWQgPSBFVEhUT09MX0dTVEFUUzsKKyAgICBldGhfc3RhdHMtPm5fc3RhdHMgPSBuc3RhdHM7CisgICAgaWZyLmlmcl9kYXRhID0gKGNoYXIgKikgZXRoX3N0YXRzOworICAgIGVyciA9IF9kb3QzU3RhdHNfaW9jdGxfZ2V0KGZkLCBTSU9DRVRIVE9PTCwgJmlmciwgbmFtZSk7CisgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZG90M1N0YXRzX2dldCIsCisgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZ2V0IHN0YXRzIHN0cmluZ3MgaW5mb3JtYXRpb24gZm9yIGludGVyZmFjZSB8JXN8IFxuIiwgbmFtZSkpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZSxpbnRlcmZhY2VfaW9jdGxfZG90M1N0YXRzX2dldCwgY2Fubm90IGdldCBzdGF0cyBpbmZvcm1hdGlvbiBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKTsKKworICAgICAgICBmcmVlKGV0aF9zdHJpbmdzKTsKKyAgICAgICAgZnJlZShldGhfc3RhdHMpOworICAgICAgICByZXR1cm4gLTU7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG5zdGF0czsgaSsrKSB7CisgICAgICAgIGNoYXIgc1tFVEhfR1NUUklOR19MRU5dOworCisgICAgICAgIHN0cmxjcHkocywgKGNvbnN0IGNoYXIgKikgJmV0aF9zdHJpbmdzLT5kYXRhW2kgKiBFVEhfR1NUUklOR19MRU5dLAorICAgICAgICAgICAgICAgIHNpemVvZihzKSk7CisgICAgCisgICAgICAgIGlmIChET1QzU1RBVFNBTElHTk1FTlRFUlJPUlMocykpIHsKKyAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c0FsaWdubWVudEVycm9ycyA9ICh1X2xvbmcpZXRoX3N0YXRzLT5kYXRhW2ldOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTQUxJR05NRU5URVJST1JTX0ZMQUc7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRE9UM1NUQVRTTVVMVElQTEVDT0xMSVNJT05GUkFNRVMocykpIHsKKyAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c011bHRpcGxlQ29sbGlzaW9uRnJhbWVzID0gKHVfbG9uZylldGhfc3RhdHMtPmRhdGFbaV07CisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNNVUxUSVBMRUNPTExJU0lPTkZSQU1FU19GTEFHOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKERPVDNTVEFUU0xBVEVDT0xMSVNJT05TKHMpKSB7CisgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNMYXRlQ29sbGlzaW9ucyA9ICh1X2xvbmcpZXRoX3N0YXRzLT5kYXRhW2ldOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTTEFURUNPTExJU0lPTlNfRkxBRzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChET1QzU1RBVFNTSU5HTEVDT0xMSVNJT05GUkFNRVMocykpIHsKKyAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lcyA9ICh1X2xvbmcpZXRoX3N0YXRzLT5kYXRhW2ldOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTU0lOR0xFQ09MTElTSU9ORlJBTUVTX0ZMQUc7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRE9UM1NUQVRTRVhDRVNTSVZFQ09MTElTSU9OUyhzKSkgeworICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucyA9ICh1X2xvbmcpZXRoX3N0YXRzLT5kYXRhW2ldOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTRVhDRVNTSVZFQ09MTElTSU9OU19GTEFHOworICAgICAgICB9CisgICAgfQorCisgICAgZnJlZShldGhfc3RyaW5ncyk7CisgICAgZnJlZShldGhfc3RhdHMpOworCisgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIHJldHVybiAtNjsKKyNlbmRpZgorfQorCisKKy8qCisgKiBAcmV0dmFsICAwIHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgRVRIVE9PTF9HU0VUIGZhaWxlZAorICogQHJldHZhbCAtMiBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkIGlmIEhBVkVfTElOVVhfRVRIVE9PTF9IIG5vdCBkZWZpbmVkCisgKi8KKworaW50CitpbnRlcmZhY2VfaW9jdGxfZG90M3N0YXRzX2R1cGxleF9nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgaW50IGZkLCBjb25zdCBjaGFyKiBuYW1lKSB7CisKKyNpZmRlZiBIQVZFX0xJTlVYX0VUSFRPT0xfSAorICAgIGRvdDNTdGF0c1RhYmxlX2RhdGEgKmRhdGEgPSAmcm93cmVxX2N0eC0+ZGF0YTsKKyAgICBzdHJ1Y3QgZXRodG9vbF9jbWQgZWRhdGE7CisgICAgc3RydWN0IGlmcmVxIGlmcjsKKyAgICBpbnQgZXJyOworCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZG90M1N0YXRzX2R1cGxleF9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG1lbXNldCgmZWRhdGEsIDAsIHNpemVvZiAoZWRhdGEpKTsKKyAgICBtZW1zZXQoJmlmciwgMCwgc2l6ZW9mIChpZnIpKTsKKyAgICBlZGF0YS5jbWQgPSBFVEhUT09MX0dTRVQ7CisgICAgaWZyLmlmcl9kYXRhID0gKGNoYXIgKikmZWRhdGE7CisKKyAgICBlcnIgPSBfZG90M1N0YXRzX2lvY3RsX2dldCAoZmQsIFNJT0NFVEhUT09MLCAmaWZyLCBuYW1lKTsKKyAgICBpZiAoZXJyIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9kb3QzU3RhdHNfZHVwbGV4X2dldCIsCisgICAgICAgICAgICAgICAgICAgICJFVEhUT09MX0dTRVQgZmFpbGVkXG4iKSk7CisKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAKKyAgICBpZiAoZXJyID09IDApIHsKKyAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0ZMQUc7CisgICAgICAgIHN3aXRjaCAoZWRhdGEuZHVwbGV4KSB7CisgICAgICAgIGNhc2UgRFVQTEVYX0hBTEY6CisgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNEdXBsZXhTdGF0dXMgPSAodV9sb25nKSBET1QzU1RBVFNEVVBMRVhTVEFUVVNfSEFMRkRVUExFWDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERVUExFWF9GVUxMOgorICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRHVwbGV4U3RhdHVzID0gKHVfbG9uZykgRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0ZVTExEVVBMRVg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c0R1cGxleFN0YXR1cyA9ICh1X2xvbmcpIERPVDNTVEFUU0RVUExFWFNUQVRVU19VTktOT1dOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH07CisgICAgfQorCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZG90M1N0YXRzX2R1cGxleF9nZXQiLAorICAgICAgICAgICAgICAgICJFVEhUT09MX0dTRVQgcHJvY2Vzc2VkXG4iKSk7CisgICAgcmV0dXJuIGVycjsKKyNlbHNlCisgICAgcmV0dXJuIC0yOworI2VuZGlmCit9CisKKworLyoKKyAqIE5BTUU6IGludGVyZmFjZV9zeXNjbGFzc25ldF9kb3Qzc3RhdHNfZ2V0CisgKiBQVVJQT1NFOiBUbyBnZXQgZXRoZXJuZXQgc3RhdGlzdGljcyBmcm9tIC9zeXMvY2xhc3MvbmV0Ly4uLgorICogQVJHVU1FTlRTOiByb3dyZXFfY3R4OiB3aGVyZSB0byBzdG9yZSB0aGUgdmFsdWUocykKKyAqCW5hbWU6IGludGVyZmFjZSBuYW1lCisgKiBSRVRVUk5TOiBub3RoaW5nLiBmaWVsZHMgbm90IHNldCBpZiBkYXRhIG5vdCBhdmFpbGFibGUKKyAqLwordm9pZAoraW50ZXJmYWNlX3N5c2NsYXNzbmV0X2RvdDNzdGF0c19nZXQgKGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgdV9sb25nIHZhbHVlOworICAgIGRvdDNTdGF0c1RhYmxlX2RhdGEgKmRhdGEgPSAmcm93cmVxX2N0eC0+ZGF0YTsKKworICAgIGlmIChnZXR1bG9uZ2Zyb21zeXNjbGFzc25ldHN0YXRpc3RpY3MobmFtZSwgInJ4X2Vycm9ycyIsICZ2YWx1ZSkpIHsKKwlkYXRhLT5kb3QzU3RhdHNGQ1NFcnJvcnMgPSB2YWx1ZTsKKwlyb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNGQ1NFUlJPUlNfRkxBRzsKKyAgICB9CisgICAgaWYgKGdldHVsb25nZnJvbXN5c2NsYXNzbmV0c3RhdGlzdGljcyhuYW1lLCAidHhfZHJvcHBlZCIsICZ2YWx1ZSkpIHsKKwlkYXRhLT5kb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnMgPSB2YWx1ZTsKKwlyb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlNfRkxBRzsKKyAgICB9CisgICAgaWYgKGdldHVsb25nZnJvbXN5c2NsYXNzbmV0c3RhdGlzdGljcyhuYW1lLCAidHhfZmlmb19lcnJvcnMiLCAmdmFsdWUpKSB7CisJZGF0YS0+ZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9ycyA9IHZhbHVlOworCXJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDVFJBTlNNSVRFUlJPUlNfRkxBRzsKKyAgICB9CisgICAgaWYgKGdldHVsb25nZnJvbXN5c2NsYXNzbmV0c3RhdGlzdGljcyhuYW1lLCAidHhfY2Fycmllcl9lcnJvcnMiLCAmdmFsdWUpKSB7CisJZGF0YS0+ZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzID0gdmFsdWU7CisJcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTQ0FSUklFUlNFTlNFRVJST1JTX0ZMQUc7CisgICAgfQorICAgIGlmIChnZXR1bG9uZ2Zyb21zeXNjbGFzc25ldHN0YXRpc3RpY3MobmFtZSwgInJ4X2ZyYW1lX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKwlkYXRhLT5kb3QzU3RhdHNGcmFtZVRvb0xvbmdzID0gdmFsdWU7CisJcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTRlJBTUVUT09MT05HU19GTEFHOworICAgIH0KKyAgICBpZiAoZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKG5hbWUsICJyeF9maWZvX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKwlkYXRhLT5kb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnMgPSB2YWx1ZTsKKwlyb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1JFQ0VJVkVFUlJPUlNfRkxBRzsKKyAgICB9CisKKyAgICByZXR1cm47Cit9CisKKworCisvKiBpb2N0bCB3cmFwcGVyCisgKgorICogQHBhcmFtICAgICAgZmQgOiBzb2NrZXQgZmQgdG8gdXNlIHcvaW9jdGwsIG9yIC0xIHRvIG9wZW4vY2xvc2Ugb25lCisgKiBAcGFyYW0gIHdoaWNoCisgKiBAcGFyYW0gaWZycQorICogcGFyYW0gaWZlbnRyeSA6IGlmZW50cnkgdG8gdXBkYXRlCisgKiBAcGFyYW0gbmFtZQorICoKKyAqIEByZXR2YWwgIDAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIDogaW52YWxpZCBwYXJhbWV0ZXJzCisgKiBAcmV0dmFsIC0yIDogY291bGRuJ3QgY3JlYXRlIHNvY2tldAorICogQHJldHZhbCAtMyA6IGlvY3RsIGNhbGwgZmFpbGVkCisgKi8KK2ludAorX2RvdDNTdGF0c19pb2N0bF9nZXQoaW50IGZkLCBpbnQgd2hpY2gsIHN0cnVjdCBpZnJlcSAqaWZycSwgY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBpbnQgb3VyZmQgPSAtMSwgcmMgPSAwOworCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppb2N0bCIsICJfZG90M1N0YXRzX2lvY3RsX2dldFxuIikpOworCisgICAgLyoKKyAgICAgKiBzYW5pdHkgY2hlY2tzCisgICAgICovCisgICAgaWYoTlVMTCA9PSBuYW1lKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW9jdGwiLAorICAgICAgICAgICAgICAgICAgICAiX2RvdDNTdGF0c19pb2N0bF9nZXQgaW52YWxpZCBpZm5hbWUgJyVzJ1xuIiwgbmFtZSkpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppb2N0bCwgX2RvdDNTdGF0c19pb2N0bF9nZXQgZXJyb3Igb24gaW50ZXJmYWNlICclcydcbiIsIG5hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBjcmVhdGUgc29ja2V0IGZvciBpb2N0bHMKKyAgICAgKi8KKyAgICBpZihmZCA8IDApIHsKKyAgICAgICAgZmQgPSBvdXJmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKKyAgICAgICAgaWYob3VyZmQgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmlvY3RsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNfaW9jdGxfZ2V0IGNvdWxkbid0IGNyZWF0ZSBhIHNvY2tldFxuIiwgbmFtZSkpOworICAgICAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW9jdGwsIF9kb3QzU3RhdHNfaW9jdGxfZ2V0IGVycm9yIG9uIGludGVyZmFjZSAnJXMnXG4iLCBuYW1lKTsKKworICAgICAgICAgICAgcmV0dXJuIC0yOworICAgICAgICB9CisgICAgfQorCisgICAgc3RybGNweShpZnJxLT5pZnJfbmFtZSwgbmFtZSwgc2l6ZW9mKGlmcnEtPmlmcl9uYW1lKSk7CisgICAgcmMgPSBpb2N0bChmZCwgd2hpY2gsIGlmcnEpOworICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppb2N0bCIsCisgICAgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNfaW9jdGxfZ2V0IGlvY3RsICVkIHJldHVybmVkICVkXG4iLCB3aGljaCwgcmMpKTsKKyAgICAgICAgcmMgPSAtMzsKKyAgICB9CisKKyAgICBpZihvdXJmZCA+PSAwKQorICAgICAgICBjbG9zZShvdXJmZCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNGY3YmYKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlLmgKQEAgLTAsMCArMSwxMSBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworY29uZmlnX3JlcXVpcmUoZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHMpCitjb25maWdfcmVxdWlyZShldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlKQorY29uZmlnX3JlcXVpcmUoZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2dldCkKK2NvbmZpZ19yZXF1aXJlKGV0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9zZXQpCitjb25maWdfcmVxdWlyZShldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzKQorY29uZmlnX3JlcXVpcmUoZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UpCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODYzODBhCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZS5jCkBAIC0wLDAgKzEsMjE1IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoqIFxwYWdlIE1GRCBoZWxwZXIgZm9yIGRvdDNTdGF0c1RhYmxlCisgKgorICogXHNlY3Rpb24gaW50cm8gSW50cm9kdWN0aW9uCisgKiBJbnRyb2R1Y3RvcnkgdGV4dC4KKyAqCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJkb3QzU3RhdHNUYWJsZS5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaD4KKworI2luY2x1ZGUgImRvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5oIgorCitvaWQgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfb2lkW10gPSB7IERPVDNTVEFUU1RBQkxFX09JRCB9OworaW50ICAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX29pZF9zaXplID0gT0lEX0xFTkdUSChkb3QzU3RhdHNUYWJsZV9vaWQpOworCitkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gZG90M1N0YXRzVGFibGVfdXNlcl9jb250ZXh0Oworc3RhdGljIGRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqZG90M1N0YXRzVGFibGVfdXNlcl9jb250ZXh0X3A7CisKK3ZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2RvdDNTdGF0c1RhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX2RvdDNTdGF0c1RhYmxlKHZvaWQpOworCisKKy8qKgorICogSW5pdGlhbGl6ZXMgdGhlIGRvdDNTdGF0c1RhYmxlIG1vZHVsZQorICovCit2b2lkCitpbml0X2RvdDNTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6aW5pdF9kb3QzU3RhdHNUYWJsZSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDA6bzogUGVyZm9ybSBkb3QzU3RhdHNUYWJsZSBvbmUtdGltZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nCisgICAgICovCisgICAgaWYgKHNob3VsZF9pbml0KCJkb3QzU3RhdHNUYWJsZSIpKQorICAgICAgICBpbml0aWFsaXplX3RhYmxlX2RvdDNTdGF0c1RhYmxlKCk7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdF9kb3QzU3RhdHNUYWJsZSAqLworCisvKioKKyAqIFNodXQtZG93biB0aGUgZG90M1N0YXRzVGFibGUgbW9kdWxlIChhZ2VudCBpcyBleGl0aW5nKQorICovCit2b2lkCitzaHV0ZG93bl9kb3QzU3RhdHNUYWJsZSh2b2lkKQoreworICAgIGlmIChzaG91bGRfaW5pdCgiZG90M1N0YXRzVGFibGUiKSkKKyAgICAgICAgc2h1dGRvd25fdGFibGVfZG90M1N0YXRzVGFibGUoKTsKKworfQorCisvKioKKyAqIEluaXRpYWxpemUgdGhlIHRhYmxlIGRvdDNTdGF0c1RhYmxlIAorICogICAgKERlZmluZSBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQpCisgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfZG90M1N0YXRzVGFibGUodm9pZCkKK3sKKyAgICB1X2xvbmcgICAgICAgICAgZmxhZ3M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTppbml0aWFsaXplX3RhYmxlX2RvdDNTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAxOm86IFBlcmZvcm0gZG90M1N0YXRzVGFibGUgb25lLXRpbWUgdGFibGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIFRPRE86MzAyOm86IHwtPkluaXRpYWxpemUgZG90M1N0YXRzVGFibGUgdXNlciBjb250ZXh0CisgICAgICogaWYgeW91J2QgbGlrZSB0byBwYXNzIGluIGEgcG9pbnRlciB0byBzb21lIGRhdGEgZm9yIHRoaXMKKyAgICAgKiB0YWJsZSwgYWxsb2NhdGUgb3Igc2V0IGl0IHVwIGhlcmUuCisgICAgICovCisgICAgLyoKKyAgICAgKiBhIG5ldHNubXBfZGF0YV9saXN0IGlzIGEgc2ltcGxlIHdheSB0byBzdG9yZSB2b2lkIHBvaW50ZXJzLiBBIHNpbXBsZQorICAgICAqIHN0cmluZyB0b2tlbiBpcyB1c2VkIHRvIGFkZCwgZmluZCBvciByZW1vdmUgcG9pbnRlcnMuCisgICAgICovCisgICAgZG90M1N0YXRzVGFibGVfdXNlcl9jb250ZXh0X3AKKwk9IG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdCgiZG90M1N0YXRzVGFibGUiLCBOVUxMLCBOVUxMKTsKKworICAgIC8qCisgICAgICogTm8gc3VwcG9ydCBmb3IgYW55IGZsYWdzIHlldCwgYnV0IGluIHRoZSBmdXR1cmUgeW91IHdvdWxkCisgICAgICogc2V0IGFueSBmbGFncyBoZXJlLgorICAgICAqLworICAgIGZsYWdzID0gMDsKKworICAgIC8qCisgICAgICogY2FsbCBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIF9kb3QzU3RhdHNUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZShkb3QzU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcCwgZmxhZ3MpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0aWFsaXplX3RhYmxlX2RvdDNTdGF0c1RhYmxlICovCisKKy8qKgorICogU2h1dGRvd24gdGhlIHRhYmxlIGRvdDNTdGF0c1RhYmxlIAorICovCit2b2lkCitzaHV0ZG93bl90YWJsZV9kb3QzU3RhdHNUYWJsZSh2b2lkKQoreworICAgIC8qCisgICAgICogY2FsbCBpbnRlcmZhY2Ugc2h1dGRvd24gY29kZQorICAgICAqLworICAgIF9kb3QzU3RhdHNUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UoZG90M1N0YXRzVGFibGVfdXNlcl9jb250ZXh0X3ApOworICAgIG5ldHNubXBfZnJlZV9hbGxfbGlzdF9kYXRhKGRvdDNTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wKTsKKyAgICBkb3QzU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcCA9IE5VTEw7Cit9CisKKy8qKgorICogZXh0cmEgY29udGV4dCBpbml0aWFsaXphdGlvbiAoZWcgZGVmYXVsdCB2YWx1ZXMpCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggICAgOiByb3cgcmVxdWVzdCBjb250ZXh0CisgKiBAcGFyYW0gdXNlcl9pbml0X2N0eCA6IHZvaWQgcG9pbnRlciBmb3IgdXNlciAocGFyYW1ldGVyIHRvIHJvd3JlcV9jdHhfYWxsb2NhdGUpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgOiBubyBlcnJvcnMKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgIDogZXJyb3IgKGNvbnRleHQgYWxsb2NhdGUgd2lsbCBmYWlsKQorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMTA6bzogfC0+IFBlcmZvcm0gZXh0cmEgZG90M1N0YXRzVGFibGUgcm93cmVxIGluaXRpYWxpemF0aW9uLiAoZWcgREVGVkFMUykKKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0ICovCisKKy8qKgorICogZXh0cmEgY29udGV4dCBjbGVhbnVwCisgKgorICovCit2b2lkCitkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMTpvOiB8LT4gUGVyZm9ybSBleHRyYSBkb3QzU3RhdHNUYWJsZSByb3dyZXEgY2xlYW51cC4KKyAgICAgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwICovCisKKy8qKgorICogcHJlLXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgICAgICAgOiBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KGRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY29udGV4dCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9wcmVfcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjUxMDpvOiBQZXJmb3JtIGRvdDNTdGF0c1RhYmxlIHByZS1yZXF1ZXN0IGFjdGlvbnMuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0ICovCisKKy8qKgorICogcG9zdC1yZXF1ZXN0IGNhbGxiYWNrCisgKgorICogTm90ZToKKyAqICAgTmV3IHJvd3MgaGF2ZSBiZWVuIGluc2VydGVkIGludG8gdGhlIGNvbnRhaW5lciwgYW5kCisgKiAgIGRlbGV0ZWQgcm93cyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBjb250YWluZXIgYW5kCisgKiAgIHJlbGVhc2VkLgorICoKKyAqIEBwYXJhbSB1c2VyX2NvbnRleHQKKyAqIEBwYXJhbSByYyA6IE1GRF9TVUNDRVNTIGlmIGFsbCByZXF1ZXN0cyBzdWNjZWVkZWQKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBvdGhlciBlcnJvciAoaWdub3JlZCkKKyAqLworaW50Citkb3QzU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByYykKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTE6bzogUGVyZm9ybSBkb3QzU3RhdHNUYWJsZSBwb3N0LXJlcXVlc3QgYWN0aW9ucy4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKworLyoqIEB7ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlLmggYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ3MTNmYwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuaApAQCAtMCwwICsxLDI3MSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBET1QzU1RBVFNUQUJMRV9ICisjZGVmaW5lIERPVDNTVEFUU1RBQkxFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKy8qKiBAYWRkdG9ncm91cCBtaXNjIG1pc2M6IE1pc2NlbGxhbmVvdXMgcm91dGluZXMKKyAqCisgKiBAeworICovCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9hc24xLmg+CisKKyAgICAvKgorICAgICAqIE9JRCBhbmQgY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgZG90M1N0YXRzVGFibGUgCisgICAgICovCisjaW5jbHVkZSAiZG90M1N0YXRzVGFibGVfb2lkcy5oIgorCisgICAgLyoKKyAgICAgKiBlbnVtIGRlZmluaW9ucyAKKyAgICAgKi8KKyNpbmNsdWRlICJkb3QzU3RhdHNUYWJsZV9lbnVtcy5oIgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGluaXRfZG90M1N0YXRzVGFibGUodm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIHNodXRkb3duX2RvdDNTdGF0c1RhYmxlKHZvaWQpOworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgZG90M1N0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c1RhYmxlIGlzIHN1YmlkIDIgb2YgZG90My4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLCBsZW5ndGg6IDkKKyAgICAgKi8KKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBXaGVuIHlvdSByZWdpc3RlciB5b3VyIG1pYiwgeW91IGdldCB0byBwcm92aWRlIGEgZ2VuZXJpYworICAgICAqIHBvaW50ZXIgdGhhdCB3aWxsIGJlIHBhc3NlZCBiYWNrIHRvIHlvdSBmb3IgbW9zdCBvZiB0aGUKKyAgICAgKiBmdW5jdGlvbnMgY2FsbHMuCisgICAgICoKKyAgICAgKiBUT0RPOjEwMDpyOiBSZXZpZXcgYWxsIGNvbnRleHQgc3RydWN0dXJlcworICAgICAqLworICAgIC8qCisgICAgICogVE9ETzoxMDE6bzogfC0+IFJldmlldyBkb3QzU3RhdHNUYWJsZSByZWdpc3RyYXRpb24gY29udGV4dC4KKyAgICAgKi8KKyAgICB0eXBlZGVmIG5ldHNubXBfZGF0YV9saXN0IGRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbjsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBUT0RPOjExMDpyOiB8LT4gUmV2aWV3IGRvdDNTdGF0c1RhYmxlIGRhdGEgY29udGV4dCBzdHJ1Y3R1cmUuCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byByZXByZXNlbnQgdGhlIGRhdGEgZm9yIGRvdDNTdGF0c1RhYmxlLgorICAgICAqLworICAgIC8qCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgc3RvcmFnZSBmb3IgYWxsIHRoZSBjb2x1bW5zIGRlZmluZWQgaW4gdGhlCisgICAgICogZG90M1N0YXRzVGFibGUuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgZG90M1N0YXRzVGFibGVfZGF0YV9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnMoMikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c0FsaWdubWVudEVycm9yczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNGQ1NFcnJvcnMoMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c0ZDU0Vycm9yczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXMoNCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lcyg1KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzU1FFVGVzdEVycm9ycyg2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzU1FFVGVzdEVycm9yczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnMoNykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9uczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNMYXRlQ29sbGlzaW9ucyg4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucyg5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9uczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNJbnRlcm5hbE1hY1RyYW5zbWl0RXJyb3JzKDEwKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnMoMTEpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzRnJhbWVUb29Mb25ncygxMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3M7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzKDE2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c0V0aGVyQ2hpcFNldCgxNykvT0JKRUNUSUQvQVNOX09CSkVDVF9JRC9vaWQob2lkKS8vTC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgb2lkICAgICAgICAgICAgIGRvdDNTdGF0c0V0aGVyQ2hpcFNldFsxMjhdOworICAgICAgICBzaXplX3QgICAgICAgICAgZG90M1N0YXRzRXRoZXJDaGlwU2V0X2xlbjsgICAgICAvKiAjIG9mIG9pZCBlbGVtZW50cywgbm90IGJ5dGVzICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzU3ltYm9sRXJyb3JzKDE4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzU3ltYm9sRXJyb3JzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c0R1cGxleFN0YXR1cygxOSkvSU5URUdFUi9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS93L0Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBkb3QzU3RhdHNEdXBsZXhTdGF0dXM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5KDIwKS9UcnV0aFZhbHVlL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9BL3cvRS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eTsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1cygyMSkvSU5URUdFUi9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS93L0Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1czsKKworICAgIH0gZG90M1N0YXRzVGFibGVfZGF0YTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMDpyOiB8LT4gUmV2aWV3IGRvdDNTdGF0c1RhYmxlIG1pYiBpbmRleC4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaW5kZXggZm9yIGRvdDNTdGF0c1RhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGRvdDNTdGF0c1RhYmxlX21pYl9pbmRleF9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNJbmRleCgxKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9ICisgICAgICAgICAqLworICAgICAgICBsb25nICAgICAgICAgICAgZG90M1N0YXRzSW5kZXg7CisKKworICAgIH0gZG90M1N0YXRzVGFibGVfbWliX2luZGV4OworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMTpyOiB8ICAgfC0+IFJldmlldyBkb3QzU3RhdHNUYWJsZSBtYXggaW5kZXggbGVuZ3RoLgorICAgICAqIElmIHlvdSBLTk9XIHRoYXQgeW91ciBpbmRleGVzIHdpbGwgbmV2ZXIgZXhjZWVkIGEgY2VydGFpbgorICAgICAqIGxlbmd0aCwgdXBkYXRlIHRoaXMgbWFjcm8gdG8gdGhhdCBsZW5ndGguCisgICAgICovCisjZGVmaW5lIE1BWF9kb3QzU3RhdHNUYWJsZV9JRFhfTEVOICAgICAyNTUKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxMzA6bzogfC0+IFJldmlldyBkb3QzU3RhdHNUYWJsZSBSb3cgcmVxdWVzdCAocm93cmVxKSBjb250ZXh0LgorICAgICAqIFdoZW4geW91ciBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgeW91IHdpbGwgYmUgcGFzc2VkIGEKKyAgICAgKiBkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4IHBvaW50ZXIuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eF9zIHsKKworICAgIC8qKiB0aGlzIG11c3QgYmUgZmlyc3QgZm9yIGNvbnRhaW5lciBjb21wYXJlIHRvIHdvcmsgKi8KKyAgICAgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgICAgIG9pZCAgICAgICAgICAgICBvaWRfdG1wW01BWF9kb3QzU3RhdHNUYWJsZV9JRFhfTEVOXTsKKworICAgICAgICBkb3QzU3RhdHNUYWJsZV9taWJfaW5kZXggdGJsX2lkeDsKKworICAgICAgICBkb3QzU3RhdHNUYWJsZV9kYXRhIGRhdGE7CisgICAgICAgIHVuc2lnbmVkIGludCAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzOyAgICAvKiBmbGFncyBmb3IgZXhpc3RlbmNlICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogZmxhZ3MgcGVyIHJvdy4gQ3VycmVudGx5LCB0aGUgZmlyc3QgKGxvd2VyKSA4IGJpdHMgYXJlIHJlc2VydmVkCisgICAgICAgICAqIGZvciB0aGUgdXNlci4gU2VlIG1mZC5oIGZvciBvdGhlciBmbGFncy4KKyAgICAgICAgICovCisgICAgICAgIHVfaW50ICAgICAgICAgICByb3dyZXFfZmxhZ3M7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogVE9ETzoxMzE6bzogfCAgIHwtPiBBZGQgdXNlZnVsIGRhdGEgdG8gZG90M1N0YXRzVGFibGUgcm93cmVxIGNvbnRleHQuCisgICAgICAgICAqLworCisgICAgICAgIC8qCisgICAgICAgICAqIHN0b3JhZ2UgZm9yIGZ1dHVyZSBleHBhbnNpb24KKyAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfZGF0YV9saXN0ICpkb3QzU3RhdHNUYWJsZV9kYXRhX2xpc3Q7CisKKyAgICB9IGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHg7CisKKyAgICB0eXBlZGVmIHN0cnVjdCBkb3QzU3RhdHNUYWJsZV9yZWZfcm93cmVxX2N0eF9zIHsKKyAgICAgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICB9IGRvdDNTdGF0c1RhYmxlX3JlZl9yb3dyZXFfY3R4OworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gcHJvdG90eXBlcworICAgICAqLworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB1c2VyX2NvbnRleHQpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHVzZXJfY29udGV4dCwgaW50IHJjKTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LCB2b2lkICp1c2VyX2luaXRfY3R4KTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKworICAgIGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgKmRvdDNTdGF0c1RhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChkb3QzU3RhdHNUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpOworCisgICAgZXh0ZXJuIG9pZCAgICAgIGRvdDNTdGF0c1RhYmxlX29pZFtdOworICAgIGV4dGVybiBpbnQgICAgICBkb3QzU3RhdHNUYWJsZV9vaWRfc2l6ZTsKKworCisjaW5jbHVkZSAiZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCIKKyNpbmNsdWRlICJkb3QzU3RhdHNUYWJsZV9kYXRhX2dldC5oIgorI2luY2x1ZGUgImRvdDNTdGF0c1RhYmxlX2RhdGFfc2V0LmgiCisKKyAgICAvKgorICAgICAqIERVTU1ZIG1hcmtlcnMsIGlnbm9yZQorICAgICAqCisgICAgICogVE9ETzowOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjI5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzozOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86NDk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9UM1NUQVRTVEFCTEVfSCAqLworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk5MmFiOQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMCwwICsxLDQxNyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImRvdDNTdGF0c1RhYmxlLmgiCisjaW5jbHVkZSAiZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCIKKworI2lmIGRlZmluZWQobGludXgpCisjaW5jbHVkZSAiaW9jdGxfaW1wX2NvbW1vbi5oIgorI2VuZGlmCisKKy8qKiBAaW5ncm91cCBpbnRlcmZhY2UKKyAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQorICoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSB1c2VkIHRvIGxvY2F0ZSB0aGUgZGF0YSB1c2VkIHRvIHNhdGlzZnkKKyAqIHJlcXVlc3RzLgorICogCisgKiBAeworICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgZG90M1N0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBFdGhlckxpa2UtTUlCOjpkb3QzU3RhdHNUYWJsZSBpcyBzdWJpZCAyIG9mIGRvdDMuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIsIGxlbmd0aDogOQorICovCisKKy8qKgorICogaW5pdGlhbGl6YXRpb24gZm9yIGRvdDNTdGF0c1RhYmxlIGRhdGEgYWNjZXNzCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHN0YXJ0dXAgdG8gYWxsb3cgeW91IHRvCisgKiBhbGxvY2F0ZSBhbnkgcmVzb3VyY2VzIHlvdSBuZWVkIGZvciB0aGUgZGF0YSB0YWJsZS4KKyAqCisgKiBAcGFyYW0gZG90M1N0YXRzVGFibGVfcmVnCisgKiAgICAgICAgUG9pbnRlciB0byBkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiB1bnJlY292ZXJhYmxlIGVycm9yLgorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX2luaXRfZGF0YShkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiBkb3QzU3RhdHNUYWJsZV9yZWcpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfaW5pdF9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAzOm86IEluaXRpYWxpemUgZG90M1N0YXRzVGFibGUgZGF0YS4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfaW5pdF9kYXRhICovCisKKy8qKgorICogY29udGFpbmVyIG92ZXJ2aWV3CisgKgorICovCisKKy8qKgorICogY29udGFpbmVyIGluaXRpYWxpemF0aW9uCisgKgorICogQHBhcmFtIGNvbnRhaW5lcl9wdHJfcHRyIEEgcG9pbnRlciB0byBhIGNvbnRhaW5lciBwb2ludGVyLiBJZiB5b3UKKyAqICAgICAgICBjcmVhdGUgYSBjdXN0b20gY29udGFpbmVyLCB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gcmV0dXJuIGl0CisgKiAgICAgICAgdG8gdGhlIE1GRCBoZWxwZXIuIElmIHNldCB0byBOVUxMLCB0aGUgTUZEIGhlbHBlciB3aWxsCisgKiAgICAgICAgYWxsb2NhdGUgYSBjb250YWluZXIgZm9yIHlvdS4KKyAqIEBwYXJhbSAgY2FjaGUgQSBwb2ludGVyIHRvIGEgY2FjaGUgc3RydWN0dXJlLiBZb3UgY2FuIHNldCB0aGUgdGltZW91dAorICogICAgICAgICBhbmQgb3RoZXIgY2FjaGUgZmxhZ3MgdXNpbmcgdGhpcyBwb2ludGVyLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCBzdGFydHVwIHRvIGFsbG93IHlvdSB0byBjdXN0b21pemUgY2VydGFpbgorICogIGFzcGVjdHMgb2YgdGhlIGFjY2VzcyBtZXRob2QuIEZvciB0aGUgbW9zdCBwYXJ0LCBpdCBpcyBmb3IgYWR2YW5jZWQKKyAqICB1c2Vycy4gVGhlIGRlZmF1bHQgY29kZSBzaG91bGQgc3VmZmljZSBmb3IgbW9zdCBjYXNlcy4gSWYgbm8gY3VzdG9tCisgKiAgY29udGFpbmVyIGlzIGFsbG9jYXRlZCwgdGhlIE1GRCBjb2RlIHdpbGwgY3JlYXRlIG9uZSBmb3IgeW91ci4KKyAqCisgKiAgVGhpcyBpcyBhbHNvIHRoZSBwbGFjZSB0byBzZXQgdXAgY2FjaGUgYmVoYXZpb3IuIFRoZSBkZWZhdWx0LCB0bworICogIHNpbXBseSBzZXQgdGhlIGNhY2hlIHRpbWVvdXQsIHdpbGwgd29yayB3ZWxsIHdpdGggdGhlIGRlZmF1bHQKKyAqICBjb250YWluZXIuIElmIHlvdSBhcmUgdXNpbmcgYSBjdXN0b20gY29udGFpbmVyLCB5b3UgbWF5IHdhbnQgdG8KKyAqICBsb29rIGF0IHRoZSBjYWNoZSBoZWxwZXIgZG9jdW1lbnRhdGlvbiB0byBzZWUgaWYgdGhlcmUgYXJlIGFueQorICogIGZsYWdzIHlvdSB3YW50IHRvIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyB3b3VsZCBhbHNvIGJlIGEgZ29vZCBwbGFjZSB0byBkbyBhbnkgaW5pdGlhbGl6YXRpb24gbmVlZGVkCisgKiAgZm9yIHlvdSBkYXRhIHNvdXJjZS4gRm9yIGV4YW1wbGUsIG9wZW5pbmcgYSBjb25uZWN0aW9uIHRvIGFub3RoZXIKKyAqICBwcm9jZXNzIHRoYXQgd2lsbCBzdXBwbHkgdGhlIGRhdGEsIG9wZW5pbmcgYSBkYXRhYmFzZSwgZXRjLgorICovCit2b2lkCitkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChuZXRzbm1wX2NvbnRhaW5lciAqKiBjb250YWluZXJfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUgKiBjYWNoZSkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cl9wdHIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjb250YWluZXIgcGFyYW0gdG8gZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBGb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gdXNlIGEgY3VzdG9tIGNvbnRhaW5lci4gSWYgeW91CisgICAgICogZG8gbm90IGNyZWF0ZSBvbmUsIG9uZSB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdS4KKyAgICAgKi8KKyAgICAqY29udGFpbmVyX3B0cl9wdHIgPSBOVUxMOworCisgICAgaWYgKE5VTEwgPT0gY2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjYWNoZSBwYXJhbSB0byBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRPRE86MzQ1OkE6IFNldCB1cCBkb3QzU3RhdHNUYWJsZSBjYWNoZSBwcm9wZXJ0aWVzLgorICAgICAqCisgICAgICogQWxzbyBmb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gc2V0IHBhcmFtZXRlcnMgZm9yIHRoZQorICAgICAqIGNhY2hlLiBEbyBub3QgY2hhbmdlIHRoZSBtYWdpYyBwb2ludGVyLCBhcyBpdCBpcyB1c2VkCisgICAgICogYnkgdGhlIE1GRCBoZWxwZXIuIFRvIGNvbXBsZXRlbHkgZGlzYWJsZSBjYWNoaW5nLCBzZXQKKyAgICAgKiBjYWNoZS0+ZW5hYmxlZCB0byAwLgorICAgICAqLworICAgIGNhY2hlLT50aW1lb3V0ID0gRE9UM1NUQVRTVEFCTEVfQ0FDSEVfVElNRU9VVDsgICAgICAvKiBzZWNvbmRzICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0ICovCisKKy8qKgorICogY29udGFpbmVyIHNodXRkb3duCisgKgorICogQHBhcmFtIGNvbnRhaW5lcl9wdHIgQSBwb2ludGVyIHRvIHRoZSBjb250YWluZXIuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHNodXRkb3duIHRvIGFsbG93IHlvdSB0byBjdXN0b21pemUgY2VydGFpbgorICogIGFzcGVjdHMgb2YgdGhlIGFjY2VzcyBtZXRob2QuIEZvciB0aGUgbW9zdCBwYXJ0LCBpdCBpcyBmb3IgYWR2YW5jZWQKKyAqICB1c2Vycy4gVGhlIGRlZmF1bHQgY29kZSBzaG91bGQgc3VmZmljZSBmb3IgbW9zdCBjYXNlcy4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKCkuCisgKgorICogQHJlbWFyaworICogIFRoaXMgd291bGQgYWxzbyBiZSBhIGdvb2QgcGxhY2UgdG8gZG8gYW55IGNsZWFudXAgbmVlZGVkCisgKiAgZm9yIHlvdSBkYXRhIHNvdXJjZS4gRm9yIGV4YW1wbGUsIGNsb3NpbmcgYSBjb25uZWN0aW9uIHRvIGFub3RoZXIKKyAqICBwcm9jZXNzIHRoYXQgc3VwcGxpZWQgdGhlIGRhdGEsIGNsb3NpbmcgYSBkYXRhYmFzZSwgZXRjLgorICovCit2b2lkCitkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24obmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXJfcHRyKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIHBhcmFtcyB0byBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd25cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisvKioKKyAqIGxvYWQgaW5pdGlhbCBkYXRhCisgKgorICogVE9ETzozNTA6TTogSW1wbGVtZW50IGRvdDNTdGF0c1RhYmxlIGRhdGEgbG9hZAorICogVGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gYmUgY2FsbGVkIGJ5IHRoZSBjYWNoZSBoZWxwZXIgdG8gbG9hZAorICogdGhlIGNvbnRhaW5lciBhZ2FpbiAoYWZ0ZXIgdGhlIGNvbnRhaW5lciBmcmVlIGZ1bmN0aW9uIGhhcyBiZWVuCisgKiBjYWxsZWQgdG8gZnJlZSB0aGUgcHJldmlvdXMgY29udGVudHMpLgorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHRvIHdoaWNoIGl0ZW1zIHNob3VsZCBiZSBpbnNlcnRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFIDogQ2FuJ3QgYWNjZXNzIGRhdGEgc291cmNlCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2FkIHRoZSBpbmRleChlcykgKGFuZCBkYXRhLCBvcHRpb25hbGx5KQorICogIGZvciB0aGUgZXZlcnkgcm93IGluIHRoZSBkYXRhIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgV2hpbGUgbG9hZGluZyB0aGUgZGF0YSwgdGhlIG9ubHkgaW1wb3J0YW50IHRoaW5nIGlzIHRoZSBpbmRleGVzLgorICogIElmIGFjY2VzcyB0byB5b3VyIGRhdGEgaXMgY2hlYXAvZmFzdCAoZS5nLiB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gYQorICogIHN0cnVjdHVyZSBpbiBtZW1vcnkpLCBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIHVwZGF0ZSB0aGUgZGF0YSBoZXJlLgorICogIElmLCBob3dldmVyLCB0aGUgYWNjZXNzaW5nIHRoZSBkYXRhIGludm92bGVzIG1vcmUgd29yayAoZS5nLiBwYXJzaW5nCisgKiAgc29tZSBvdGhlciBleGlzdGluZyBkYXRhLCBvciBwZWZvcm1pbmcgY2FsY3VsYXRpb25zIHRvIGRlcml2ZSB0aGUgZGF0YSksCisgKiAgdGhlbiB5b3UgY2FuIGxpbWl0IHlvdXJzZWxmIHRvIHNldHRpbmcgdGhlIGluZGV4ZXMgYW5kIHNhdmluZyBhbnkKKyAqICBpbmZvcm1hdGlvbiB5b3Ugd2lsbCBuZWVkIGxhdGVyLiBUaGVuIHVzZSB0aGUgc2F2ZWQgaW5mb3JtYXRpb24gaW4KKyAqICBkb3QzU3RhdHNUYWJsZV9yb3dfcHJlcCgpIGZvciBwb3B1bGF0aW5nIGRhdGEuCisgKgorICogQG5vdGUKKyAqICBJZiB5b3UgbmVlZCBjb25zaXN0ZW5jeSBiZXR3ZWVuIHJvd3MgKGxpa2UgeW91IHdhbnQgc3RhdGlzdGljcworICogIGZvciBlYWNoIHJvdyB0byBiZSBmcm9tIHRoZSBzYW1lIHRpbWUgZnJhbWUpLCB5b3Ugc2hvdWxkIHNldCBhbGwKKyAqICBkYXRhIGhlcmUuCisgKgorICovCisKKy8qCisgKgorICogQHJldHZhbCAgTUZEX1NVQ0NFU1Mgc3VjY2VzcworICogQHJldHZhbCAgTUZEX0VSUk9SIGNvdWxkIG5vdCBnZXQgdGhlIGludGVyZmFjZSBuYW1lcyAKKyAqIEByZXR2YWwgIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRSBmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5CisgKiBAcmV0dmFsICAtMiBjb3VsZCBub3Qgb3BlbiBhIHNvY2tldAorICovCisKKworaW50Citkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OworICAgIHNpemVfdCAgICAgICAgICBjb3VudCA9IDA7CisgICAgaW50ICAgICAgICAgICAgIGZkOworI2lmIGRlZmluZWQobGludXgpCisgICAgbG9uZyAgICAgICAgICAgIGRvdDNTdGF0c0luZGV4OworICAgIGludCAgICAgICAgICAgICByYyA9IDAsIHJldHZhbCA9IDA7CisgICAgc3RydWN0IGlmbmFtZSAqbGlzdF9oZWFkID0gTlVMTCwgKnAgPSBOVUxMOworI2VuZGlmCisgICAgCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKyAgICAgIAorICAgIC8qCisgICAgICogVE9ETzozNTI6TTogfCAgIHwtPiBzZXQgaW5kZXhlcyBpbiBuZXcgZG90M1N0YXRzVGFibGUgcm93cmVxIGNvbnRleHQuCisgICAgICogZGF0YSBjb250ZXh0IHdpbGwgYmUgc2V0IGZyb20gdGhlIHBhcmFtICh1bmxlc3MgTlVMTCwKKyAgICAgKiBpbiB3aGljaCBjYXNlIGEgbmV3IGRhdGEgY29udGV4dCB3aWxsIGJlIGFsbG9jYXRlZCkKKyAgICAgKi8KKyAgICAKKyAgICAvKgorICAgICAqIHRlbXBvcmFyeSBzdG9yYWdlIGZvciBpbmRleCB2YWx1ZXMKKyAgICAgKi8KKworICAgIC8qCisgICAgICogZG90M1N0YXRzSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvSAorICAgICAqLworCisKKworICAgIC8qCisgICAgICogY3JlYXRlIHNvY2tldCBmb3IgaW9jdGxzCisgICAgICovCisgICAgCisgICAgZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisgICAgaWYoZmQgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgY3JlYXRlIHNvY2tldFxuIik7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGdldCB0aGUgaW50ZXJmYWNlIG5hbWVzIG9mIHRoZSBkZXZpY2VzIHByZXNlbnQgaW4gdGhlIHN5c3RlbSwgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHZhbCBzdWdnZXN0cyB0aGUgcmVzb24gZm9yIGZhaWx1cmUKKyAgICAgKiBhbmQgbGlzdF9oZWFkIGNvbnRhaW5zIG51bGwKKyAgICAgKi8KKworI2lmIGRlZmluZWQobGludXgpCisgICAgbGlzdF9oZWFkID0gZG90M3N0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IChsaXN0X2hlYWQsICZyZXR2YWwpOworCisgICAgaWYgKCFsaXN0X2hlYWQpIHsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGUsIGVycm9yIGdldHRpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBwcmVzZW50IGluIHRoZSBzeXN0ZW1cbiIpOworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlIiwgImVycm9yIGdldHRpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBwcmVzZW50IGluIHRoZSBzeXN0ZW0iKSk7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBXYWxrIG92ZXIgdGhlIGxpc3Qgb2YgaW50ZXJmYWNlIG5hbWVzIHByZXNlbnQgaW4gdGhlIHN5c3RlbSBhbmQgcmV0cmVpdmUgdGhlIHN0YXRpc3RpY3MgCisgICAgICovCisKKyAgICBmb3IgKHAgPSBsaXN0X2hlYWQ7IHA7IHAgPSBwLT5pZm5fbmV4dCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlIiwgInByb2Nlc3NpbmcgJyVzJ1xuIiwgcC0+bmFtZSkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIGdldCBpbmRleCB2aWEgaW9jdGwuCisgICAgICAgICAqLworCisgICAgICAgIGRvdDNTdGF0c0luZGV4ID0gKGxvbmcpIGRvdDNzdGF0c19pbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQoLTEsIHAtPm5hbWUpOworCisgICAgICAgIC8qIAorICAgICAgICAgKiAgICBnZXQgdGhlIGRvdDNzdGF0cyBjb250ZW50cyBwb3B1bGF0ZWQsIGlmIHRoZSBkZXZpY2UgaXMgbm90IGFuIGV0aGVybmV0IGRldmljZQorICAgICAgICAgKiAgICB0aGUgb3BlcmF0aW9uIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBhbmQgYW4gZXJyb3IgbWVzc2FnZSB3aWxsIGJlIGxvZ2dlZAorICAgICAgICAgKi8KKyAgICAgICAgCisgICAgICAgIHJvd3JlcV9jdHggPSBkb3QzU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KE5VTEwpOworICAgICAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibWVtb3J5IGFsbG9jYXRpb24gZm9yIGRvdDNTdGF0c1RhYmxlIGZhaWxlZFxuIik7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoTUZEX1NVQ0NFU1MgIT0KKyAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX2luZGV4ZXNfc2V0KHJvd3JlcV9jdHgsIGRvdDNTdGF0c0luZGV4KSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciBzZXR0aW5nIGluZGV4IHdoaWxlIGxvYWRpbmcgIgorICAgICAgICAgICAgICAgICAgICAgImRvdDNTdGF0c1RhYmxlIGRhdGEuXG4iKTsKKyAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogVE9ETzozNTI6cjogfCAgIHwtPiBwb3B1bGF0ZSBkb3QzU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICAgICAqIFBvcHVsYXRlIGRhdGEgY29udGV4dCBoZXJlLiAob3B0aW9uYWxseSwgZGVsYXkgdW50aWwgcm93IHByZXApCisgICAgICAgICAqLworICAgICAgICAvKgorICAgICAgICAgKiBub24tVFJBTlNJRU5UIGRhdGE6IG5vIG5lZWQgdG8gY29weS4gc2V0IHBvaW50ZXIgdG8gZGF0YSAKKyAgICAgICAgICovCisKKyAgICAgICAgbWVtc2V0ICgmcm93cmVxX2N0eC0+ZGF0YSwgMCwgc2l6ZW9mIChyb3dyZXFfY3R4LT5kYXRhKSk7CisgICAgICAgIHJjID0gaW50ZXJmYWNlX2lvY3RsX2RvdDNzdGF0c19nZXQgKHJvd3JlcV9jdHgsIGZkLCBwLT5uYW1lKTsKKworICAgICAgICBpZiAocmMgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlIiwgImVycm9yIGdldHRpbmcgdGhlIHN0YXRpc3RpY3MgZm9yIGludGVyZmFjZSB8JXN8ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNUYWJsZSBkYXRhLCBvcGVyYXRpb24gbWlnaHQgbm90IGJlIHN1cHBvcnRlZFxuIiwgcC0+bmFtZSkpOworICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICByYyA9IGludGVyZmFjZV9pb2N0bF9kb3Qzc3RhdHNfZHVwbGV4X2dldChyb3dyZXFfY3R4LCBmZCwgcC0+bmFtZSk7CisgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGUiLCAiZXJyb3IgZ2V0dGluZyB0aGUgZHVwbGV4IHN0YXR1cyBmb3IgfCVzfCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZG90M1N0YXRzVGFibGUgZGF0YSwgb3BlcmF0aW9uIG1pZ2h0IG5vdCBiZSBzdXBwb3J0ZWRcbiIsIHAtPm5hbWUpKTsKKyAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKwlpbnRlcmZhY2Vfc3lzY2xhc3NuZXRfZG90M3N0YXRzX2dldChyb3dyZXFfY3R4LCBwLT5uYW1lKTsKKworCWludGVyZmFjZV9kb3Qzc3RhdHNfZ2V0X2Vycm9yY291bnRlcnMocm93cmVxX2N0eCwgcC0+bmFtZSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaW5zZXJ0IGludG8gdGFibGUgY29udGFpbmVyCisgICAgICAgICAqLworICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZSIsICJlcnJvciBpbnNlcnRpbmcgfCVzfCIsIHAtPm5hbWUpKTsKKyAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICBjbG9zZShmZCk7CisKKyAgICAvKgorICAgICAqIGZyZWUgdGhlIGludGVyZmFjZSBuYW1lcyBsaXN0IAorICAgICAqLworCisgICAgaWYgKCAoZG90M3N0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZnJlZShsaXN0X2hlYWQpKSA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZSwgZXJyb3IgZnJlZWluZyB0aGUgaW50ZXJmYWNlIG5hbWUgbGlzdCBcbiIpOworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlIiwgImVycm9yIGZyZWVpbmcgdGhlIGludGVyZmFjZSBuYW1lIGxpc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisjZW5kaWYKKworICAgIERFQlVHTVNHVCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgImluc2VydGVkICVkIHJlY29yZHNcbiIsIGNvdW50KSk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkICovCisKKy8qKgorICogY29udGFpbmVyIGNsZWFuIHVwCisgKgorICogQHBhcmFtIGNvbnRhaW5lciBjb250YWluZXIgd2l0aCBhbGwgY3VycmVudCBpdGVtcworICoKKyAqICBUaGlzIG9wdGlvbmFsIGNhbGxiYWNrIGlzIGNhbGxlZCBwcmlvciB0byBhbGwKKyAqICBpdGVtJ3MgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBjb250YWluZXIuIElmIHlvdQorICogIG5lZWQgdG8gZG8gYW55IHByb2Nlc3NpbmcgYmVmb3JlIHRoYXQsIGRvIGl0IGhlcmUuCisgKgorICogQG5vdGUKKyAqICBUaGUgTUZEIGhlbHBlciB3aWxsIHRha2UgY2FyZSBvZiByZWxlYXNpbmcgYWxsIHRoZSByb3cgY29udGV4dHMuCisgKgorICovCit2b2lkCitkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjM4MDpNOiBGcmVlIGRvdDNTdGF0c1RhYmxlIGNvbnRhaW5lciBkYXRhLgorICAgICAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZSAqLworCisvKioKKyAqIHByZXBhcmUgcm93IGZvciBwcm9jZXNzaW5nLgorICoKKyAqICBXaGVuIHRoZSBhZ2VudCBoYXMgbG9jYXRlZCB0aGUgcm93IGZvciBhIHJlcXVlc3QsIHRoaXMgZnVuY3Rpb24gaXMKKyAqICBjYWxsZWQgdG8gcHJlcGFyZSB0aGUgcm93IGZvciBwcm9jZXNzaW5nLiBJZiB5b3UgZnVsbHkgcG9wdWxhdGVkCisgKiAgdGhlIGRhdGEgY29udGV4dCBkdXJpbmcgdGhlIGluZGV4IHNldHVwIHBoYXNlLCB5b3UgbWF5IG5vdCBuZWVkIHRvCisgKiAgZG8gYW55dGhpbmcuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggcG9pbnRlciB0byBhIGNvbnRleHQuCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqLworaW50Citkb3QzU3RhdHNUYWJsZV9yb3dfcHJlcChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9yb3dfcHJlcCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzozOTA6bzogUHJlcGFyZSByb3cgZm9yIHJlcXVlc3QuCisgICAgICogSWYgcG9wdWxhdGluZyByb3cgZGF0YSB3YXMgZGVsYXllZCwgdGhpcyBpcyB0aGUgcGxhY2UgdG8KKyAgICAgKiBmaWxsIGluIHRoZSByb3cgZm9yIHRoaXMgcmVxdWVzdC4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfcm93X3ByZXAgKi8KKworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmggYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRiMzlhOQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIERPVDNTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0gKKyNkZWZpbmUgRE9UM1NUQVRTVEFCTEVfREFUQV9BQ0NFU1NfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgZG90M1N0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c1RhYmxlIGlzIHN1YmlkIDIgb2YgZG90My4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLCBsZW5ndGg6IDkKKyAgICAgKi8KKworCisgICAgaW50ICAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX2luaXRfZGF0YShkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfcmVnKTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjE4MDpvOiBSZXZpZXcgZG90M1N0YXRzVGFibGUgY2FjaGUgdGltZW91dC4KKyAgICAgKiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIHRoZSBjYWNoZSB0aW1lcyBvdXQKKyAgICAgKi8KKyNkZWZpbmUgRE9UM1NUQVRTVEFCTEVfQ0FDSEVfVElNRU9VVCAgIDYwCisKKyAgICB2b2lkICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUgKiBjYWNoZSk7CisgICAgdm9pZCAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfcHRyKTsKKworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisgICAgdm9pZCAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9jYWNoZV9sb2FkKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgIHZvaWQgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9jYWNoZV9mcmVlKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworCisjZGVmaW5lIE1BWF9MSU5FX1NJWkUgMjU2CisKKyAgICBpbnQgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfcm93X3ByZXAoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgdm9pZCAgICAgICAgICAgIGludGVyZmFjZV9zeXNjbGFzc25ldF9kb3Qzc3RhdHNfZ2V0CisgICAgICAgIChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwgY29uc3QgY2hhciAqbmFtZSk7CisgICAgdm9pZCAgICAgICAgICAgIGludGVyZmFjZV9kb3Qzc3RhdHNfZ2V0X2Vycm9yY291bnRlcnMKKyAgICAgICAgKGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LCBjb25zdCBjaGFyICpuYW1lKTsKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPVDNTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9nZXQuYyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9nZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjY0NmUwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2dldC5jCkBAIC0wLDAgKzEsMTQ1MCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwODggJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJkb3QzU3RhdHNUYWJsZS5oIgorCisKKy8qKiBAZGVmZ3JvdXAgZGF0YV9nZXQgZGF0YV9nZXQ6IFJvdXRpbmVzIHRvIGdldCBkYXRhCisgKgorICogVE9ETzoyMzA6TTogSW1wbGVtZW50IGRvdDNTdGF0c1RhYmxlIGdldCByb3V0aW5lcy4KKyAqIFRPRE86MjQwOk06IEltcGxlbWVudCBkb3QzU3RhdHNUYWJsZSBtYXBwaW5nIHJvdXRpbmVzIChpZiBhbnkpLgorICoKKyAqIFRoZXNlIHJvdXRpbmUgYXJlIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzLiBUaGUKKyAqIHJvdyBjb250ZXh0IGlzIHBhc3NlZCwgYWxvbmcgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSB3aGVyZSB0aGUKKyAqIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQuCisgKgorICogQHsKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGRvdDNTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzVGFibGUgaXMgc3ViaWQgMiBvZiBkb3QzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLCBsZW5ndGg6IDkKKyAqLworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAqIFRPRE86MjAwOnI6IEltcGxlbWVudCBkb3QzU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQgZnVuY3Rpb25zLgorICovCisKKworLyoqCisgKiBzZXQgbWliIGluZGV4KGVzKQorICoKKyAqIEBwYXJhbSB0YmxfaWR4IG1pYiBpbmRleCBzdHJ1Y3R1cmUKKyAqIEBwYXJhbSBkb3QzU3RhdHNJbmRleF92YWwKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGlzIHVzZWZ1bCBmb3Igc2V0dGluZyBhbGwgdGhlIE1JQiBpbmRleAorICogIGNvbXBvbmVudHMgd2l0aCBhIHNpbmdsZSBmdW5jdGlvbiBjYWxsLiBJdCBpcyBhc3N1bWUgdGhhdCB0aGUgQyB2YWx1ZXMKKyAqICBoYXZlIGFscmVhZHkgYmVlbiBtYXBwZWQgZnJvbSB0aGVpciBuYXRpdmUvcmF3Zm9ybWF0IHRvIHRoZSBNSUIgZm9ybWF0LgorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoZG90M1N0YXRzVGFibGVfbWliX2luZGV4ICogdGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkb3QzU3RhdHNJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogZG90M1N0YXRzSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvSCAKKyAgICAgKi8KKyAgICB0YmxfaWR4LT5kb3QzU3RhdHNJbmRleCA9IGRvdDNTdGF0c0luZGV4X3ZhbDsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzZXQgcm93IGNvbnRleHQgaW5kZXhlcworICoKKyAqIEBwYXJhbSByZXFyZXFfY3R4IHRoZSByb3cgY29udGV4dCB0aGF0IG5lZWRzIHVwZGF0ZWQgaW5kZXhlcworICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbWliIGluZGV4cywgdGhlbiB1cGRhdGVzIHRoZSBvaWQgaW5kZXhzCisgKiAgZnJvbSB0aGUgbWliIGluZGV4LgorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX2luZGV4ZXNfc2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkb3QzU3RhdHNJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfaW5kZXhlc19zZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChNRkRfU1VDQ0VTUyAhPQorICAgICAgICBkb3QzU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4KCZyb3dyZXFfY3R4LT50YmxfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c0luZGV4X3ZhbCkpCisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQgbWliIGluZGV4IHRvIG9pZCBpbmRleAorICAgICAqLworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgubGVuID0gc2l6ZW9mKHJvd3JlcV9jdHgtPm9pZF90bXApIC8gc2l6ZW9mKG9pZCk7CisgICAgaWYgKDAgIT0gZG90M1N0YXRzVGFibGVfaW5kZXhfdG9fb2lkKCZyb3dyZXFfY3R4LT5vaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+dGJsX2lkeCkpIHsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2luZGV4ZXNfc2V0ICovCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c0FsaWdubWVudEVycm9ycworICogZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzIGlzIHN1YmlkIDIgb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuMgorICogRGVzY3JpcHRpb246CitBIGNvdW50IG9mIGZyYW1lcyByZWNlaXZlZCBvbiBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIHRoYXQgYXJlIG5vdCBhbiBpbnRlZ3JhbCBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgb2N0ZXRzIGluIGxlbmd0aCBhbmQgZG8gbm90IHBhc3MgdGhlIEZDUyBjaGVjay4KKworICAgICAgICAgICAgICAgICAgICBUaGUgY291bnQgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcworICAgICAgICAgICAgICAgICAgICBvYmplY3QgaXMgaW5jcmVtZW50ZWQgd2hlbiB0aGUgYWxpZ25tZW50RXJyb3IKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzIGlzIHJldHVybmVkIGJ5IHRoZSBNQUMgc2VydmljZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgTExDIChvciBvdGhlciBNQUMgdXNlcikuIFJlY2VpdmVkIGZyYW1lcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggbXVsdGlwbGUgZXJyb3IgY29uZGl0aW9ucyBwZXJ0YWluIGFyZSwKKyAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb252ZW50aW9ucyBvZiBJRUVFIDgwMi4zCisgICAgICAgICAgICAgICAgICAgIExheWVyIE1hbmFnZW1lbnQsIGNvdW50ZWQgZXhjbHVzaXZlbHkgYWNjb3JkaW5nCisKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGVycm9yIHN0YXR1cyBwcmVzZW50ZWQgdG8gdGhlIExMQy4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIGNvdW50ZXIgZG9lcyBub3QgaW5jcmVtZW50IGZvciBncm91cAorICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyBzY2hlbWVzIGdyZWF0ZXIgdGhhbiA0IGJpdHMgcGVyIGdyb3VwLgorCisgICAgICAgICAgICAgICAgICAgIEZvciBpbnRlcmZhY2VzIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgY2FuIHJvbGwgb3ZlciBpbiBsZXNzIHRoYW4gNSBtaW51dGVzIGlmCisgICAgICAgICAgICAgICAgICAgIGl0IGlzIGluY3JlbWVudGluZyBhdCBpdHMgbWF4aW11bSByYXRlLiAgU2luY2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhbW91bnQgb2YgdGltZSBjb3VsZCBiZSBsZXNzIHRoYW4gYQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IHN0YXRpb24ncyBwb2xsIGN5Y2xlIHRpbWUsIGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIHRvIGF2b2lkIGEgbG9zcyBvZiBpbmZvcm1hdGlvbiwgYSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN0YXRpb24gaXMgYWR2aXNlZCB0byBwb2xsIHRoZQorICAgICAgICAgICAgICAgICAgICBkb3QzSENTdGF0c0FsaWdubWVudEVycm9ycyBvYmplY3QgZm9yIDEwIEdiL3MKKyAgICAgICAgICAgICAgICAgICAgb3IgZmFzdGVyIGludGVyZmFjZXMuCisKKyAgICAgICAgICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuCisgICAgICAgICAgICAgICAgICAgIG9jY3VyIGF0IHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgYW5kIGF0IG90aGVyIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgaWZDb3VudGVyRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c0FsaWdubWVudEVycm9yc19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGRvdDNTdGF0c0FsaWdubWVudEVycm9yc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0FsaWdubWVudEVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c0ZDU0Vycm9ycworICogZG90M1N0YXRzRkNTRXJyb3JzIGlzIHN1YmlkIDMgb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuMworICogRGVzY3JpcHRpb246CitBIGNvdW50IG9mIGZyYW1lcyByZWNlaXZlZCBvbiBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIHRoYXQgYXJlIGFuIGludGVncmFsIG51bWJlciBvZiBvY3RldHMKKyAgICAgICAgICAgICAgICAgICAgaW4gbGVuZ3RoIGJ1dCBkbyBub3QgcGFzcyB0aGUgRkNTIGNoZWNrLiAgVGhpcworICAgICAgICAgICAgICAgICAgICBjb3VudCBkb2VzIG5vdCBpbmNsdWRlIGZyYW1lcyByZWNlaXZlZCB3aXRoCisgICAgICAgICAgICAgICAgICAgIGZyYW1lLXRvby1sb25nIG9yIGZyYW1lLXRvby1zaG9ydCBlcnJvci4KKworICAgICAgICAgICAgICAgICAgICBUaGUgY291bnQgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcworICAgICAgICAgICAgICAgICAgICBvYmplY3QgaXMgaW5jcmVtZW50ZWQgd2hlbiB0aGUgZnJhbWVDaGVja0Vycm9yCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyBpcyByZXR1cm5lZCBieSB0aGUgTUFDIHNlcnZpY2UgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIExMQyAob3Igb3RoZXIgTUFDIHVzZXIpLiBSZWNlaXZlZCBmcmFtZXMgZm9yCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIG11bHRpcGxlIGVycm9yIGNvbmRpdGlvbnMgcGVydGFpbiBhcmUsCisgICAgICAgICAgICAgICAgICAgIGFjY29yZGluZyB0byB0aGUgY29udmVudGlvbnMgb2YgSUVFRSA4MDIuMworICAgICAgICAgICAgICAgICAgICBMYXllciBNYW5hZ2VtZW50LCBjb3VudGVkIGV4Y2x1c2l2ZWx5IGFjY29yZGluZworICAgICAgICAgICAgICAgICAgICB0byB0aGUgZXJyb3Igc3RhdHVzIHByZXNlbnRlZCB0byB0aGUgTExDLgorCisgICAgICAgICAgICAgICAgICAgIE5vdGU6ICBDb2RpbmcgZXJyb3JzIGRldGVjdGVkIGJ5IHRoZSBwaHlzaWNhbAorICAgICAgICAgICAgICAgICAgICBsYXllciBmb3Igc3BlZWRzIGFib3ZlIDEwIE1iL3Mgd2lsbCBjYXVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUgdG8gZmFpbCB0aGUgRkNTIGNoZWNrLgorCisgICAgICAgICAgICAgICAgICAgIEZvciBpbnRlcmZhY2VzIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgY2FuIHJvbGwgb3ZlciBpbiBsZXNzIHRoYW4gNSBtaW51dGVzIGlmCisKKyAgICAgICAgICAgICAgICAgICAgaXQgaXMgaW5jcmVtZW50aW5nIGF0IGl0cyBtYXhpbXVtIHJhdGUuICBTaW5jZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGFtb3VudCBvZiB0aW1lIGNvdWxkIGJlIGxlc3MgdGhhbiBhCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgc3RhdGlvbidzIHBvbGwgY3ljbGUgdGltZSwgaW4gb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgYSBsb3NzIG9mIGluZm9ybWF0aW9uLCBhIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlvbiBpcyBhZHZpc2VkIHRvIHBvbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIGRvdDNIQ1N0YXRzRkNTRXJyb3JzIG9iamVjdCBmb3IgMTAgR2IvcyBvcgorICAgICAgICAgICAgICAgICAgICBmYXN0ZXIgaW50ZXJmYWNlcy4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0ZDU0Vycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c0ZDU0Vycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzRkNTRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZG90M1N0YXRzRkNTRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNGQ1NFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c0ZDU0Vycm9yc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNGQ1NFcnJvcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c0ZDU0Vycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNGQ1NFcnJvcnNfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c0ZDU0Vycm9yczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzRkNTRXJyb3JzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzCisgKiBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXMgaXMgc3ViaWQgNCBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS40CisgKiBEZXNjcmlwdGlvbjoKK0EgY291bnQgb2YgZnJhbWVzIHRoYXQgYXJlIGludm9sdmVkIGluIGEgc2luZ2xlCisgICAgICAgICAgICAgICAgICAgIGNvbGxpc2lvbiwgYW5kIGFyZSBzdWJzZXF1ZW50bHkgdHJhbnNtaXR0ZWQKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5LgorCisgICAgICAgICAgICAgICAgICAgIEEgZnJhbWUgdGhhdCBpcyBjb3VudGVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0IGlzIGFsc28gY291bnRlZCBieSB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSBvZiBlaXRoZXIgdGhlIGlmT3V0VWNhc3RQa3RzLAorICAgICAgICAgICAgICAgICAgICBpZk91dE11bHRpY2FzdFBrdHMsIG9yIGlmT3V0QnJvYWRjYXN0UGt0cywKKyAgICAgICAgICAgICAgICAgICAgYW5kIGlzIG5vdCBjb3VudGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlIG9mIHRoZSBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lcworICAgICAgICAgICAgICAgICAgICBvYmplY3QuCisKKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb3VudGVyIGRvZXMgbm90IGluY3JlbWVudCB3aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UgaXMgb3BlcmF0aW5nIGluIGZ1bGwtZHVwbGV4IG1vZGUuCisKKyAgICAgICAgICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuCisgICAgICAgICAgICAgICAgICAgIG9jY3VyIGF0IHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgYW5kIGF0IG90aGVyIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgaWZDb3VudGVyRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lc19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXNfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lcyBkYXRhLgorICAgICAqIGNvcHkgKCogZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFdGhlckxpa2UtTUlCOjpkb3QzU3RhdHNFbnRyeS5kb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lcworICogZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXMgaXMgc3ViaWQgNSBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS41CisgKiBEZXNjcmlwdGlvbjoKK0EgY291bnQgb2YgZnJhbWVzIHRoYXQgYXJlIGludm9sdmVkIGluIG1vcmUKKworICAgICAgICAgICAgICAgICAgICB0aGFuIG9uZSBjb2xsaXNpb24gYW5kIGFyZSBzdWJzZXF1ZW50bHkKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNtaXR0ZWQgc3VjY2Vzc2Z1bGx5LgorCisgICAgICAgICAgICAgICAgICAgIEEgZnJhbWUgdGhhdCBpcyBjb3VudGVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0IGlzIGFsc28gY291bnRlZCBieSB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSBvZiBlaXRoZXIgdGhlIGlmT3V0VWNhc3RQa3RzLAorICAgICAgICAgICAgICAgICAgICBpZk91dE11bHRpY2FzdFBrdHMsIG9yIGlmT3V0QnJvYWRjYXN0UGt0cywKKyAgICAgICAgICAgICAgICAgICAgYW5kIGlzIG5vdCBjb3VudGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlIG9mIHRoZSBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXMKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LgorCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY291bnRlciBkb2VzIG5vdCBpbmNyZW1lbnQgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIGlzIG9wZXJhdGluZyBpbiBmdWxsLWR1cGxleCBtb2RlLgorCisgICAgICAgICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbgorICAgICAgICAgICAgICAgICAgICBvY2N1ciBhdCByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0sIGFuZCBhdCBvdGhlciB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIHZhbHVlIG9mIGlmQ291bnRlckRpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c011bHRpcGxlQ29sbGlzaW9uRnJhbWVzX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lcyBkYXRhLgorICAgICAqIGNvcHkgKCogZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c011bHRpcGxlQ29sbGlzaW9uRnJhbWVzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c1NRRVRlc3RFcnJvcnMKKyAqIGRvdDNTdGF0c1NRRVRlc3RFcnJvcnMgaXMgc3ViaWQgNiBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS42CisgKiBEZXNjcmlwdGlvbjoKK0EgY291bnQgb2YgdGltZXMgdGhhdCB0aGUgU1FFIFRFU1QgRVJST1IKKyAgICAgICAgICAgICAgICAgICAgaXMgcmVjZWl2ZWQgb24gYSBwYXJ0aWN1bGFyIGludGVyZmFjZS4gVGhlCisgICAgICAgICAgICAgICAgICAgIFNRRSBURVNUIEVSUk9SIGlzIHNldCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIHJ1bGVzIGZvciB2ZXJpZmljYXRpb24gb2YgdGhlIFNRRSBkZXRlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgbWVjaGFuaXNtIGluIHRoZSBQTFMgQ2FycmllciBTZW5zZSBGdW5jdGlvbiBhcworICAgICAgICAgICAgICAgICAgICBkZXNjcmliZWQgaW4gSUVFRSBTdGQuIDgwMi4zLCAyMDAwIEVkaXRpb24sCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gNy4yLjQuNi4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIGNvdW50ZXIgZG9lcyBub3QgaW5jcmVtZW50IG9uIGludGVyZmFjZXMKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW5nIGF0IHNwZWVkcyBncmVhdGVyIHRoYW4gMTAgTWIvcywgb3Igb24KKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlcyBvcGVyYXRpbmcgaW4gZnVsbC1kdXBsZXggbW9kZS4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c1NRRVRlc3RFcnJvcnMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50Citkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGRvdDNTdGF0c1NRRVRlc3RFcnJvcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGRvdDNTdGF0c1NRRVRlc3RFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1NRRVRlc3RFcnJvcnNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzU1FFVGVzdEVycm9ycyBkYXRhLgorICAgICAqIGNvcHkgKCogZG90M1N0YXRzU1FFVGVzdEVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNTUUVUZXN0RXJyb3JzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zCisgKiBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnMgaXMgc3ViaWQgNyBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS43CisgKiBEZXNjcmlwdGlvbjoKK0EgY291bnQgb2YgZnJhbWVzIGZvciB3aGljaCB0aGUgZmlyc3QKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNtaXNzaW9uIGF0dGVtcHQgb24gYSBwYXJ0aWN1bGFyIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgICBpcyBkZWxheWVkIGJlY2F1c2UgdGhlIG1lZGl1bSBpcyBidXN5LgorCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb3VudCByZXByZXNlbnRlZCBieSBhbiBpbnN0YW5jZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgIG9iamVjdCBkb2VzIG5vdCBpbmNsdWRlIGZyYW1lcyBpbnZvbHZlZCBpbgorICAgICAgICAgICAgICAgICAgICBjb2xsaXNpb25zLgorCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY291bnRlciBkb2VzIG5vdCBpbmNyZW1lbnQgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIGlzIG9wZXJhdGluZyBpbiBmdWxsLWR1cGxleCBtb2RlLgorCisgICAgICAgICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbgorICAgICAgICAgICAgICAgICAgICBvY2N1ciBhdCByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0sIGFuZCBhdCBvdGhlciB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIHZhbHVlIG9mIGlmQ291bnRlckRpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50Citkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9uc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9uc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9uczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnMKKyAqIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zIGlzIHN1YmlkIDggb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuOAorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBjb2xsaXNpb24gaXMKKyAgICAgICAgICAgICAgICAgICAgZGV0ZWN0ZWQgb24gYSBwYXJ0aWN1bGFyIGludGVyZmFjZSBsYXRlciB0aGFuCisgICAgICAgICAgICAgICAgICAgIG9uZSBzbG90VGltZSBpbnRvIHRoZSB0cmFuc21pc3Npb24gb2YgYSBwYWNrZXQuCisKKyAgICAgICAgICAgICAgICAgICAgQSAobGF0ZSkgY29sbGlzaW9uIGluY2x1ZGVkIGluIGEgY291bnQKKyAgICAgICAgICAgICAgICAgICAgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcyBvYmplY3QgaXMKKyAgICAgICAgICAgICAgICAgICAgYWxzbyBjb25zaWRlcmVkIGFzIGEgKGdlbmVyaWMpIGNvbGxpc2lvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgcHVycG9zZXMgb2Ygb3RoZXIgY29sbGlzaW9uLXJlbGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcy4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIGNvdW50ZXIgZG9lcyBub3QgaW5jcmVtZW50IHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZSBpcyBvcGVyYXRpbmcgaW4gZnVsbC1kdXBsZXggbW9kZS4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c0xhdGVDb2xsaXNpb25zX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBkb3QzU3RhdHNMYXRlQ29sbGlzaW9uc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c0xhdGVDb2xsaXNpb25zX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNMYXRlQ29sbGlzaW9uc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNMYXRlQ29sbGlzaW9uc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucworICogZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucyBpcyBzdWJpZCA5IG9mIGRvdDNTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjEwLjcuMi4xLjkKKyAqIERlc2NyaXB0aW9uOgorQSBjb3VudCBvZiBmcmFtZXMgZm9yIHdoaWNoIHRyYW5zbWlzc2lvbiBvbiBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgaW50ZXJmYWNlIGZhaWxzIGR1ZSB0byBleGNlc3NpdmUKKyAgICAgICAgICAgICAgICAgICAgY29sbGlzaW9ucy4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIGNvdW50ZXIgZG9lcyBub3QgaW5jcmVtZW50IHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZSBpcyBvcGVyYXRpbmcgaW4gZnVsbC1kdXBsZXggbW9kZS4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50Citkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9uc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9uczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9uc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMKKyAqIGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMgaXMgc3ViaWQgMTAgb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuMTAKKyAqIERlc2NyaXB0aW9uOgorQSBjb3VudCBvZiBmcmFtZXMgZm9yIHdoaWNoIHRyYW5zbWlzc2lvbiBvbiBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgaW50ZXJmYWNlIGZhaWxzIGR1ZSB0byBhbiBpbnRlcm5hbAorICAgICAgICAgICAgICAgICAgICBNQUMgc3VibGF5ZXIgdHJhbnNtaXQgZXJyb3IuIEEgZnJhbWUgaXMgb25seQorICAgICAgICAgICAgICAgICAgICBjb3VudGVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoaXMgb2JqZWN0IGlmIGl0IGlzCisgICAgICAgICAgICAgICAgICAgIG5vdCBjb3VudGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGluc3RhbmNlIG9mCisgICAgICAgICAgICAgICAgICAgIGVpdGhlciB0aGUgZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnMgb2JqZWN0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucyBvYmplY3QsIG9yIHRoZQorICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnMgb2JqZWN0LgorCisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmVjaXNlIG1lYW5pbmcgb2YgdGhlIGNvdW50IHJlcHJlc2VudGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIGFuIGluc3RhbmNlIG9mIHRoaXMgb2JqZWN0IGlzIGltcGxlbWVudGF0aW9uLQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYy4gIEluIHBhcnRpY3VsYXIsIGFuIGluc3RhbmNlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0IG1heSByZXByZXNlbnQgYSBjb3VudCBvZiB0cmFuc21pc3Npb24KKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzIG9uIGEgcGFydGljdWxhciBpbnRlcmZhY2UgdGhhdCBhcmUgbm90CisgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSBjb3VudGVkLgorCisgICAgICAgICAgICAgICAgICAgIEZvciBpbnRlcmZhY2VzIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgY2FuIHJvbGwgb3ZlciBpbiBsZXNzIHRoYW4gNSBtaW51dGVzIGlmCisgICAgICAgICAgICAgICAgICAgIGl0IGlzIGluY3JlbWVudGluZyBhdCBpdHMgbWF4aW11bSByYXRlLiAgU2luY2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhbW91bnQgb2YgdGltZSBjb3VsZCBiZSBsZXNzIHRoYW4gYQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IHN0YXRpb24ncyBwb2xsIGN5Y2xlIHRpbWUsIGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIHRvIGF2b2lkIGEgbG9zcyBvZiBpbmZvcm1hdGlvbiwgYSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN0YXRpb24gaXMgYWR2aXNlZCB0byBwb2xsIHRoZQorICAgICAgICAgICAgICAgICAgICBkb3QzSENTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMgb2JqZWN0IGZvcgorICAgICAgICAgICAgICAgICAgICAxMCBHYi9zIG9yIGZhc3RlciBpbnRlcmZhY2VzLgorCisgICAgICAgICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbgorCisgICAgICAgICAgICAgICAgICAgIG9jY3VyIGF0IHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgYW5kIGF0IG90aGVyIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgaWZDb3VudGVyRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNJbnRlcm5hbE1hY1RyYW5zbWl0RXJyb3JzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yc19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnNfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9ycworICogZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzIGlzIHN1YmlkIDExIG9mIGRvdDNTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjEwLjcuMi4xLjExCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgdGltZXMgdGhhdCB0aGUgY2FycmllciBzZW5zZQorICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24gd2FzIGxvc3Qgb3IgbmV2ZXIgYXNzZXJ0ZWQgd2hlbgorICAgICAgICAgICAgICAgICAgICBhdHRlbXB0aW5nIHRvIHRyYW5zbWl0IGEgZnJhbWUgb24gYSBwYXJ0aWN1bGFyCisgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS4KKworICAgICAgICAgICAgICAgICAgICBUaGUgY291bnQgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcworICAgICAgICAgICAgICAgICAgICBvYmplY3QgaXMgaW5jcmVtZW50ZWQgYXQgbW9zdCBvbmNlIHBlcgorICAgICAgICAgICAgICAgICAgICB0cmFuc21pc3Npb24gYXR0ZW1wdCwgZXZlbiBpZiB0aGUgY2FycmllciBzZW5zZQorICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24gZmx1Y3R1YXRlcyBkdXJpbmcgYSB0cmFuc21pc3Npb24KKyAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdC4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIGNvdW50ZXIgZG9lcyBub3QgaW5jcmVtZW50IHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZSBpcyBvcGVyYXRpbmcgaW4gZnVsbC1kdXBsZXggbW9kZS4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9yc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9yczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzRnJhbWVUb29Mb25ncworICogZG90M1N0YXRzRnJhbWVUb29Mb25ncyBpcyBzdWJpZCAxMyBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS4xMworICogRGVzY3JpcHRpb246CitBIGNvdW50IG9mIGZyYW1lcyByZWNlaXZlZCBvbiBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIHRoYXQgZXhjZWVkIHRoZSBtYXhpbXVtIHBlcm1pdHRlZAorICAgICAgICAgICAgICAgICAgICBmcmFtZSBzaXplLgorCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb3VudCByZXByZXNlbnRlZCBieSBhbiBpbnN0YW5jZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgIG9iamVjdCBpcyBpbmNyZW1lbnRlZCB3aGVuIHRoZSBmcmFtZVRvb0xvbmcKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzIGlzIHJldHVybmVkIGJ5IHRoZSBNQUMgc2VydmljZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgTExDIChvciBvdGhlciBNQUMgdXNlcikuIFJlY2VpdmVkIGZyYW1lcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggbXVsdGlwbGUgZXJyb3IgY29uZGl0aW9ucyBwZXJ0YWluIGFyZSwKKyAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb252ZW50aW9ucyBvZiBJRUVFIDgwMi4zCisgICAgICAgICAgICAgICAgICAgIExheWVyIE1hbmFnZW1lbnQsIGNvdW50ZWQgZXhjbHVzaXZlbHkgYWNjb3JkaW5nCisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBlcnJvciBzdGF0dXMgcHJlc2VudGVkIHRvIHRoZSBMTEMuCisKKyAgICAgICAgICAgICAgICAgICAgRm9yIGludGVyZmFjZXMgb3BlcmF0aW5nIGF0IDEwIEdiL3MsIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgY291bnRlciBjYW4gcm9sbCBvdmVyIGluIGxlc3MgdGhhbiA4MCBtaW51dGVzIGlmCisgICAgICAgICAgICAgICAgICAgIGl0IGlzIGluY3JlbWVudGluZyBhdCBpdHMgbWF4aW11bSByYXRlLiAgU2luY2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhbW91bnQgb2YgdGltZSBjb3VsZCBiZSBsZXNzIHRoYW4gYQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IHN0YXRpb24ncyBwb2xsIGN5Y2xlIHRpbWUsIGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIHRvIGF2b2lkIGEgbG9zcyBvZiBpbmZvcm1hdGlvbiwgYSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN0YXRpb24gaXMgYWR2aXNlZCB0byBwb2xsIHRoZQorICAgICAgICAgICAgICAgICAgICBkb3QzSENTdGF0c0ZyYW1lVG9vTG9uZ3Mgb2JqZWN0IGZvciAxMCBHYi9zCisgICAgICAgICAgICAgICAgICAgIG9yIGZhc3RlciBpbnRlcmZhY2VzLgorCisgICAgICAgICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbgorICAgICAgICAgICAgICAgICAgICBvY2N1ciBhdCByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0sIGFuZCBhdCBvdGhlciB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIHZhbHVlIG9mIGlmQ291bnRlckRpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzRnJhbWVUb29Mb25ncyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3NfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c0ZyYW1lVG9vTG9uZ3NfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZG90M1N0YXRzRnJhbWVUb29Mb25nc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzRnJhbWVUb29Mb25nc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzRnJhbWVUb29Mb25nc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNGcmFtZVRvb0xvbmdzIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNGcmFtZVRvb0xvbmdzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3NfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3M7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3NfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFdGhlckxpa2UtTUlCOjpkb3QzU3RhdHNFbnRyeS5kb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnMKKyAqIGRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9ycyBpcyBzdWJpZCAxNiBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS4xNgorICogRGVzY3JpcHRpb246CitBIGNvdW50IG9mIGZyYW1lcyBmb3Igd2hpY2ggcmVjZXB0aW9uIG9uIGEKKyAgICAgICAgICAgICAgICAgICAgcGFydGljdWxhciBpbnRlcmZhY2UgZmFpbHMgZHVlIHRvIGFuIGludGVybmFsCisgICAgICAgICAgICAgICAgICAgIE1BQyBzdWJsYXllciByZWNlaXZlIGVycm9yLiBBIGZyYW1lIGlzIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgY291bnRlZCBieSBhbiBpbnN0YW5jZSBvZiB0aGlzIG9iamVjdCBpZiBpdCBpcworICAgICAgICAgICAgICAgICAgICBub3QgY291bnRlZCBieSB0aGUgY29ycmVzcG9uZGluZyBpbnN0YW5jZSBvZgorICAgICAgICAgICAgICAgICAgICBlaXRoZXIgdGhlIGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3Mgb2JqZWN0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzIG9iamVjdCwgb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c0ZDU0Vycm9ycyBvYmplY3QuCisKKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZWNpc2UgbWVhbmluZyBvZiB0aGUgY291bnQgcmVwcmVzZW50ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgYW4gaW5zdGFuY2Ugb2YgdGhpcyBvYmplY3QgaXMgaW1wbGVtZW50YXRpb24tCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljLiAgSW4gcGFydGljdWxhciwgYW4gaW5zdGFuY2Ugb2YgdGhpcworICAgICAgICAgICAgICAgICAgICBvYmplY3QgbWF5IHJlcHJlc2VudCBhIGNvdW50IG9mIHJlY2VpdmUgZXJyb3JzCisgICAgICAgICAgICAgICAgICAgIG9uIGEgcGFydGljdWxhciBpbnRlcmZhY2UgdGhhdCBhcmUgbm90CisgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSBjb3VudGVkLgorCisgICAgICAgICAgICAgICAgICAgIEZvciBpbnRlcmZhY2VzIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgY2FuIHJvbGwgb3ZlciBpbiBsZXNzIHRoYW4gNSBtaW51dGVzIGlmCisKKyAgICAgICAgICAgICAgICAgICAgaXQgaXMgaW5jcmVtZW50aW5nIGF0IGl0cyBtYXhpbXVtIHJhdGUuICBTaW5jZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGFtb3VudCBvZiB0aW1lIGNvdWxkIGJlIGxlc3MgdGhhbiBhCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgc3RhdGlvbidzIHBvbGwgY3ljbGUgdGltZSwgaW4gb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgYSBsb3NzIG9mIGluZm9ybWF0aW9uLCBhIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlvbiBpcyBhZHZpc2VkIHRvIHBvbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIGRvdDNIQ1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzIG9iamVjdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgMTAgR2IvcyBvciBmYXN0ZXIgaW50ZXJmYWNlcy4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9yc19nZXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c0V0aGVyQ2hpcFNldAorICogZG90M1N0YXRzRXRoZXJDaGlwU2V0IGlzIHN1YmlkIDE3IG9mIGRvdDNTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBEZXByZWNhdGVkLCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjEwLjcuMi4xLjE3CisgKiBEZXNjcmlwdGlvbjoKKyoqKioqKioqIFRISVMgT0JKRUNUIElTIERFUFJFQ0FURUQgKioqKioqKioKKworICAgICAgICAgICAgICAgICAgICBUaGlzIG9iamVjdCBjb250YWlucyBhbiBPQkpFQ1QgSURFTlRJRklFUgorICAgICAgICAgICAgICAgICAgICB3aGljaCBpZGVudGlmaWVzIHRoZSBjaGlwc2V0IHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgcmVhbGl6ZSB0aGUgaW50ZXJmYWNlLiBFdGhlcm5ldC1saWtlCisgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZXMgYXJlIHR5cGljYWxseSBidWlsdCBvdXQgb2YKKyAgICAgICAgICAgICAgICAgICAgc2V2ZXJhbCBkaWZmZXJlbnQgY2hpcHMuIFRoZSBNSUIgaW1wbGVtZW50b3IKKyAgICAgICAgICAgICAgICAgICAgaXMgcHJlc2VudGVkIHdpdGggYSBkZWNpc2lvbiBvZiB3aGljaCBjaGlwCisgICAgICAgICAgICAgICAgICAgIHRvIGlkZW50aWZ5IHZpYSB0aGlzIG9iamVjdC4gVGhlIGltcGxlbWVudG9yCisgICAgICAgICAgICAgICAgICAgIHNob3VsZCBpZGVudGlmeSB0aGUgY2hpcCB3aGljaCBpcyB1c3VhbGx5CisgICAgICAgICAgICAgICAgICAgIGNhbGxlZCB0aGUgTWVkaXVtIEFjY2VzcyBDb250cm9sIGNoaXAuCisgICAgICAgICAgICAgICAgICAgIElmIG5vIHN1Y2ggY2hpcCBpcyBlYXNpbHkgaWRlbnRpZmlhYmxlLAorICAgICAgICAgICAgICAgICAgICB0aGUgaW1wbGVtZW50b3Igc2hvdWxkIGlkZW50aWZ5IHRoZSBjaGlwCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGFjdHVhbGx5IGdhdGhlcnMgdGhlIHRyYW5zbWl0CisgICAgICAgICAgICAgICAgICAgIGFuZCByZWNlaXZlIHN0YXRpc3RpY3MgYW5kIGVycm9yCisgICAgICAgICAgICAgICAgICAgIGluZGljYXRpb25zLiBUaGlzIHdvdWxkIGFsbG93IGEKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlciBzdGF0aW9uIHRvIGNvcnJlbGF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcyBhbmQgdGhlIGNoaXAgZ2VuZXJhdGluZworICAgICAgICAgICAgICAgICAgICB0aGVtLCBnaXZpbmcgaXQgdGhlIGFiaWxpdHkgdG8gdGFrZQorICAgICAgICAgICAgICAgICAgICBpbnRvIGFjY291bnQgYW55IGtub3duIGFub21hbGllcworICAgICAgICAgICAgICAgICAgICBpbiB0aGUgY2hpcC4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIG9iamVjdCBoYXMgYmVlbiBkZXByZWNhdGVkLiAgSW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmVlZGJhY2sgaW5kaWNhdGVzIHRoYXQgaXQgaXMgb2YgbGltaXRlZCB1c2UgZm9yCisgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2luZyBuZXR3b3JrIHByb2JsZW1zIGluIHRoZSBmaWVsZCwgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBhZG1pbmlzdHJhdGl2ZSBvdmVyaGVhZCBpbnZvbHZlZCBpbgorICAgICAgICAgICAgICAgICAgICBtYWludGFpbmluZyBhIHJlZ2lzdHJ5IG9mIGNoaXBzZXQgT0lEcyBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAganVzdGlmaWVkLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgT0JKRUNUSUQgKGJhc2VkIG9uIHBlcmx0eXBlIE9CSkVDVElEKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX09CSkVDVF9JRC4gVGhlIEMgdHlwZSBkZWNsIGlzIG9pZCAob2lkKQorICogVGhpcyBkYXRhIHR5cGUgcmVxdWlyZXMgYSBsZW5ndGguCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzRXRoZXJDaGlwU2V0IGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIG9pZCB2YXJpYWJsZQorICogQHBhcmFtIGRvdDNTdGF0c0V0aGVyQ2hpcFNldF92YWxfcHRyX2xlbl9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIGEgc2l6ZV90LiBPbiBlbnRyeSwgaXQgd2lsbCBjb250YWluIHRoZSBzaXplIChpbiBieXRlcykKKyAqICAgICAgICBwb2ludGVkIHRvIGJ5IGRvdDNTdGF0c0V0aGVyQ2hpcFNldC4KKyAqICAgICAgICBPbiBleGl0LCB0aGlzIHZhbHVlIHNob3VsZCBjb250YWluIHRoZSBkYXRhIHNpemUgKGluIGJ5dGVzKS4KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorKgorICogQG5vdGUgSWYgeW91IG5lZWQgbW9yZSB0aGFuICgqZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfbGVuX3B0cikgYnl0ZXMgb2YgbWVtb3J5LAorICogICAgICAgYWxsb2NhdGUgaXQgdXNpbmcgbWFsbG9jKCkgYW5kIHVwZGF0ZSBkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9wdHIuCisgKiAgICAgICA8Yj5ETyBOT1Q8L2I+IGZyZWUgdGhlIHByZXZpb3VzIHBvaW50ZXIuCisgKiAgICAgICBUaGUgTUZEIGhlbHBlciB3aWxsIHJlbGVhc2UgdGhlIG1lbW9yeSB5b3UgYWxsb2NhdGUuCisgKgorICogQHJlbWFyayBJZiB5b3UgY2FsbCB0aGlzIGZ1bmN0aW9uIHlvdXJzZWxmLCB5b3UgYXJlIHJlc3BvbnNpYmxlCisgKiAgICAgICAgIGZvciBjaGVja2luZyBpZiB0aGUgcG9pbnRlciBjaGFuZ2VkLCBhbmQgZnJlZWluZyBhbnkKKyAqICAgICAgICAgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5LiAoTm90IG5lY2Vzc2FyeSBpZiB5b3UgcGFzcworICogICAgICAgICBpbiBhIHBvaW50ZXIgdG8gc3RhdGljIG1lbW9yeSwgb2J2aW91c2x5LikKKyAqLworaW50Citkb3QzU3RhdHNFdGhlckNoaXBTZXRfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiogZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKmRvdDNTdGF0c0V0aGVyQ2hpcFNldF92YWxfcHRyX2xlbl9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyIGFuZCBlbm91Z2ggc3RvcmFnZSAqLworICAgIG5ldHNubXBfYXNzZXJ0KChOVUxMICE9IGRvdDNTdGF0c0V0aGVyQ2hpcFNldF92YWxfcHRyX3B0cikKKyAgICAgICAgICAgICAgICAgICAmJiAoTlVMTCAhPSAqZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyKSk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9sZW5fcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzRXRoZXJDaGlwU2V0X2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0V0aGVyQ2hpcFNldCBkYXRhLgorICAgICAqIGNvcHkgKCogZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyICkgZGF0YSBhbmQgKCogZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfbGVuX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIC8qCisgICAgICogbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCBzcGFjZSBmb3IgZG90M1N0YXRzRXRoZXJDaGlwU2V0IGRhdGEKKyAgICAgKi8KKyAgICBpZiAoKE5VTEwgPT0gKCpkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9wdHIpKSB8fAorICAgICAgICAoKCpkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9sZW5fcHRyKSA8CisgICAgICAgICAocm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNFdGhlckNoaXBTZXRfbGVuICoKKyAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNFdGhlckNoaXBTZXRbMF0pKSkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogYWxsb2NhdGUgc3BhY2UgZm9yIGRvdDNTdGF0c0V0aGVyQ2hpcFNldCBkYXRhCisgICAgICAgICAqLworICAgICAgICAoKmRvdDNTdGF0c0V0aGVyQ2hpcFNldF92YWxfcHRyX3B0cikgPQorICAgICAgICAgICAgbWFsbG9jKHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzRXRoZXJDaGlwU2V0X2xlbiAqCisgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzRXRoZXJDaGlwU2V0WzBdKSk7CisgICAgICAgIGlmIChOVUxMID09ICgqZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyKSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnlcbiIpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICAgICAgfQorICAgIH0KKyAgICAoKmRvdDNTdGF0c0V0aGVyQ2hpcFNldF92YWxfcHRyX2xlbl9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNFdGhlckNoaXBTZXRfbGVuICoKKyAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzRXRoZXJDaGlwU2V0WzBdKTsKKyAgICBtZW1jcHkoKCpkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9wdHIpLAorICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c0V0aGVyQ2hpcFNldCwKKyAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNFdGhlckNoaXBTZXRfbGVuICoKKyAgICAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzRXRoZXJDaGlwU2V0WzBdKSk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0V0aGVyQ2hpcFNldF9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c1N5bWJvbEVycm9ycworICogZG90M1N0YXRzU3ltYm9sRXJyb3JzIGlzIHN1YmlkIDE4IG9mIGRvdDNTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjEwLjcuMi4xLjE4CisgKiBEZXNjcmlwdGlvbjoKK0ZvciBhbiBpbnRlcmZhY2Ugb3BlcmF0aW5nIGF0IDEwMCBNYi9zLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRpbWVzIHRoZXJlIHdhcyBhbiBpbnZhbGlkIGRhdGEgc3ltYm9sCisgICAgICAgICAgICAgICAgICAgIHdoZW4gYSB2YWxpZCBjYXJyaWVyIHdhcyBwcmVzZW50LgorCisgICAgICAgICAgICAgICAgICAgIEZvciBhbiBpbnRlcmZhY2Ugb3BlcmF0aW5nIGluIGhhbGYtZHVwbGV4IG1vZGUKKyAgICAgICAgICAgICAgICAgICAgYXQgMTAwMCBNYi9zLCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSByZWNlaXZpbmcKKyAgICAgICAgICAgICAgICAgICAgbWVkaWEgaXMgbm9uLWlkbGUgKGEgY2FycmllciBldmVudCkgZm9yIGEgcGVyaW9kCisgICAgICAgICAgICAgICAgICAgIG9mIHRpbWUgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIHNsb3RUaW1lLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHdoaWNoIHRoZXJlIHdhcyBhdCBsZWFzdCBvbmUgb2NjdXJyZW5jZQorICAgICAgICAgICAgICAgICAgICBvZiBhbiBldmVudCB0aGF0IGNhdXNlcyB0aGUgUEhZIHRvIGluZGljYXRlCisgICAgICAgICAgICAgICAgICAgICdEYXRhIHJlY2VwdGlvbiBlcnJvcicgb3IgJ2NhcnJpZXIgZXh0ZW5kIGVycm9yJworICAgICAgICAgICAgICAgICAgICBvbiB0aGUgR01JSS4KKworICAgICAgICAgICAgICAgICAgICBGb3IgYW4gaW50ZXJmYWNlIG9wZXJhdGluZyBpbiBmdWxsLWR1cGxleCBtb2RlCisgICAgICAgICAgICAgICAgICAgIGF0IDEwMDAgTWIvcywgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgcmVjZWl2aW5nCisgICAgICAgICAgICAgICAgICAgIG1lZGlhIGlzIG5vbi1pZGxlIChhIGNhcnJpZXIgZXZlbnQpIGZvciBhIHBlcmlvZAorICAgICAgICAgICAgICAgICAgICBvZiB0aW1lIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiBtaW5GcmFtZVNpemUsCisgICAgICAgICAgICAgICAgICAgIGFuZCBkdXJpbmcgd2hpY2ggdGhlcmUgd2FzIGF0IGxlYXN0IG9uZQorICAgICAgICAgICAgICAgICAgICBvY2N1cnJlbmNlIG9mIGFuIGV2ZW50IHRoYXQgY2F1c2VzIHRoZSBQSFkgdG8KKyAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGUgJ0RhdGEgcmVjZXB0aW9uIGVycm9yJyBvbiB0aGUgR01JSS4KKworICAgICAgICAgICAgICAgICAgICBGb3IgYW4gaW50ZXJmYWNlIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRpbWVzIHRoZSByZWNlaXZpbmcgbWVkaWEgaXMgbm9uLWlkbGUKKyAgICAgICAgICAgICAgICAgICAgKGEgY2FycmllciBldmVudCkgZm9yIGEgcGVyaW9kIG9mIHRpbWUgZXF1YWwgdG8KKyAgICAgICAgICAgICAgICAgICAgb3IgZ3JlYXRlciB0aGFuIG1pbkZyYW1lU2l6ZSwgYW5kIGR1cmluZyB3aGljaAorICAgICAgICAgICAgICAgICAgICB0aGVyZSB3YXMgYXQgbGVhc3Qgb25lIG9jY3VycmVuY2Ugb2YgYW4gZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBjYXVzZXMgdGhlIFBIWSB0byBpbmRpY2F0ZSAnUmVjZWl2ZSBFcnJvcicKKyAgICAgICAgICAgICAgICAgICAgb24gdGhlIFhHTUlJLgorCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb3VudCByZXByZXNlbnRlZCBieSBhbiBpbnN0YW5jZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgIG9iamVjdCBpcyBpbmNyZW1lbnRlZCBhdCBtb3N0IG9uY2UgcGVyIGNhcnJpZXIKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQsIGV2ZW4gaWYgbXVsdGlwbGUgc3ltYm9sIGVycm9ycyBvY2N1cgorICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlIGNhcnJpZXIgZXZlbnQuICBUaGlzIGNvdW50IGRvZXMKKyAgICAgICAgICAgICAgICAgICAgbm90IGluY3JlbWVudCBpZiBhIGNvbGxpc2lvbiBpcyBwcmVzZW50LgorCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY291bnRlciBkb2VzIG5vdCBpbmNyZW1lbnQgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIGlzIG9wZXJhdGluZyBhdCAxMCBNYi9zLgorCisgICAgICAgICAgICAgICAgICAgIEZvciBpbnRlcmZhY2VzIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgY2FuIHJvbGwgb3ZlciBpbiBsZXNzIHRoYW4gNSBtaW51dGVzIGlmCisgICAgICAgICAgICAgICAgICAgIGl0IGlzIGluY3JlbWVudGluZyBhdCBpdHMgbWF4aW11bSByYXRlLiAgU2luY2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhbW91bnQgb2YgdGltZSBjb3VsZCBiZSBsZXNzIHRoYW4gYQorCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgc3RhdGlvbidzIHBvbGwgY3ljbGUgdGltZSwgaW4gb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgYSBsb3NzIG9mIGluZm9ybWF0aW9uLCBhIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlvbiBpcyBhZHZpc2VkIHRvIHBvbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIGRvdDNIQ1N0YXRzU3ltYm9sRXJyb3JzIG9iamVjdCBmb3IgMTAgR2IvcworICAgICAgICAgICAgICAgICAgICBvciBmYXN0ZXIgaW50ZXJmYWNlcy4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c1N5bWJvbEVycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c1N5bWJvbEVycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzU3ltYm9sRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZG90M1N0YXRzU3ltYm9sRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNTeW1ib2xFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1N5bWJvbEVycm9yc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNTeW1ib2xFcnJvcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c1N5bWJvbEVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNTeW1ib2xFcnJvcnNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c1N5bWJvbEVycm9yczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzU3ltYm9sRXJyb3JzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzRHVwbGV4U3RhdHVzCisgKiBkb3QzU3RhdHNEdXBsZXhTdGF0dXMgaXMgc3ViaWQgMTkgb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuMTkKKyAqIERlc2NyaXB0aW9uOgorVGhlIGN1cnJlbnQgbW9kZSBvZiBvcGVyYXRpb24gb2YgdGhlIE1BQworICAgICAgICAgICAgICAgICAgICBlbnRpdHkuICAndW5rbm93bicgaW5kaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgZHVwbGV4IG1vZGUgY291bGQgbm90IGJlIGRldGVybWluZWQuCisKKyAgICAgICAgICAgICAgICAgICAgTWFuYWdlbWVudCBjb250cm9sIG9mIHRoZSBkdXBsZXggbW9kZSBpcworICAgICAgICAgICAgICAgICAgICBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0aGUgTUFVIE1JQi4gIFdoZW4KKyAgICAgICAgICAgICAgICAgICAgYW4gaW50ZXJmYWNlIGRvZXMgbm90IHN1cHBvcnQgYXV0b25lZ290aWF0aW9uLAorICAgICAgICAgICAgICAgICAgICBvciB3aGVuIGF1dG9uZWdvdGlhdGlvbiBpcyBub3QgZW5hYmxlZCwgdGhlCisgICAgICAgICAgICAgICAgICAgIGR1cGxleCBtb2RlIGlzIGNvbnRyb2xsZWQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgaWZNYXVEZWZhdWx0VHlwZS4gIFdoZW4gYXV0b25lZ290aWF0aW9uIGlzCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBhbmQgZW5hYmxlZCwgZHVwbGV4IG1vZGUgaXMgY29udHJvbGxlZAorICAgICAgICAgICAgICAgICAgICB1c2luZyBpZk1hdUF1dG9OZWdBZHZlcnRpc2VkQml0cy4gIEluIGVpdGhlcgorICAgICAgICAgICAgICAgICAgICBjYXNlLCB0aGUgY3VycmVudGx5IG9wZXJhdGluZyBkdXBsZXggbW9kZSBpcworICAgICAgICAgICAgICAgICAgICByZWZsZWN0ZWQgYm90aCBpbiB0aGlzIG9iamVjdCBhbmQgaW4gaWZNYXVUeXBlLgorCisgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBwcm92aWRlcyByZWR1bmRhbnQKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gd2l0aCBpZk1hdVR5cGUuICBOb3JtYWxseSwgcmVkdW5kYW50CisgICAgICAgICAgICAgICAgICAgIG9iamVjdHMgYXJlIGRpc2NvdXJhZ2VkLiAgSG93ZXZlciwgaW4gdGhpcworICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSwgaXQgYWxsb3dzIGEgbWFuYWdlbWVudCBhcHBsaWNhdGlvbiB0bworICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgdGhlIGR1cGxleCBzdGF0dXMgb2YgYW4gaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgZXZlcnkgcG9zc2libGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgaWZNYXVUeXBlLiAgVGhpcyB3YXMgZmVsdCB0byBiZSBzdWZmaWNpZW50bHkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWFibGUgdG8ganVzdGlmeSB0aGUgcmVkdW5kYW5jeS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAxICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqIEVudW0gcmFuZ2U6IDMvOC4gVmFsdWVzOiAgdW5rbm93bigxKSwgaGFsZkR1cGxleCgyKSwgZnVsbER1cGxleCgzKQorICoKKyAqIEl0cyBzeW50YXggaXMgSU5URUdFUiAoYmFzZWQgb24gcGVybHR5cGUgSU5URUdFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9JTlRFR0VSLiBUaGUgQyB0eXBlIGRlY2wgaXMgbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0R1cGxleFN0YXR1cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c0R1cGxleFN0YXR1c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIGxvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c0R1cGxleFN0YXR1c19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGRvdDNTdGF0c0R1cGxleFN0YXR1c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzRHVwbGV4U3RhdHVzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNEdXBsZXhTdGF0dXNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzRHVwbGV4U3RhdHVzIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNEdXBsZXhTdGF0dXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzRHVwbGV4U3RhdHVzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNEdXBsZXhTdGF0dXM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0R1cGxleFN0YXR1c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eQorICogZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5IGlzIHN1YmlkIDIwIG9mIGRvdDNTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjEwLjcuMi4xLjIwCisgKiBEZXNjcmlwdGlvbjoKKyd0cnVlJyBmb3IgaW50ZXJmYWNlcyBvcGVyYXRpbmcgYXQgc3BlZWRzIGFib3ZlCisgICAgICAgICAgICAgICAgICAgIDEwMDAgTWIvcyB0aGF0IHN1cHBvcnQgUmF0ZSBDb250cm9sIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgbG93ZXJpbmcgdGhlIGF2ZXJhZ2UgZGF0YSByYXRlIG9mIHRoZSBNQUMKKyAgICAgICAgICAgICAgICAgICAgc3VibGF5ZXIsIHdpdGggZnJhbWUgZ3JhbnVsYXJpdHksIGFuZCAnZmFsc2UnCisgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAxICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqIEVudW0gcmFuZ2U6IDIvOC4gVmFsdWVzOiAgdHJ1ZSgxKSwgZmFsc2UoMikKKyAqCisgKiBJdHMgc3ludGF4IGlzIFRydXRoVmFsdWUgKGJhc2VkIG9uIHBlcmx0eXBlIElOVEVHRVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fSU5URUdFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIGxvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHkgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHlfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBsb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50Citkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHlfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHlfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eV92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5X2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eSBkYXRhLgorICAgICAqIGNvcHkgKCogZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5X3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eV92YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHlfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFdGhlckxpa2UtTUlCOjpkb3QzU3RhdHNFbnRyeS5kb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1cworICogZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXMgaXMgc3ViaWQgMjEgb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuMjEKKyAqIERlc2NyaXB0aW9uOgorVGhlIGN1cnJlbnQgUmF0ZSBDb250cm9sIG1vZGUgb2Ygb3BlcmF0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBNQUMgc3VibGF5ZXIgb2YgdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMSAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKiBFbnVtIHJhbmdlOiAzLzguIFZhbHVlczogIHJhdGVDb250cm9sT2ZmKDEpLCByYXRlQ29udHJvbE9uKDIpLCB1bmtub3duKDMpCisgKgorICogSXRzIHN5bnRheCBpcyBJTlRFR0VSIChiYXNlZCBvbiBwZXJsdHlwZSBJTlRFR0VSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0lOVEVHRVIuIFRoZSBDIHR5cGUgZGVjbCBpcyBsb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIGxvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c1JhdGVDb250cm9sU3RhdHVzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1JhdGVDb250cm9sU3RhdHVzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c1JhdGVDb250cm9sU3RhdHVzIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1JhdGVDb250cm9sU3RhdHVzX2dldCAqLworCisKKworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfZ2V0LmggYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU0M2NkMwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9nZXQuaApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwODggJCBvZiAkCisgKgorICogJElkOiQKKyAqCisgKiBAZmlsZSBkb3QzU3RhdHNUYWJsZV9kYXRhX2dldC5oCisgKgorICogQGFkZHRvZ3JvdXAgZ2V0CisgKgorICogUHJvdG90eXBlcyBmb3IgZ2V0IGZ1bmN0aW9ucworICoKKyAqIEB7CisgKi8KKyNpZm5kZWYgRE9UM1NUQVRTVEFCTEVfREFUQV9HRVRfSAorI2RlZmluZSBET1QzU1RBVFNUQUJMRV9EQVRBX0dFVF9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIEdFVCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIEdFVCBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBkb3QzU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzVGFibGUgaXMgc3ViaWQgMiBvZiBkb3QzLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIsIGxlbmd0aDogOQorICAgICAqLworICAgIC8qCisgICAgICogaW5kZXhlcworICAgICAqLworCisgICAgaW50ICAgICAgICAgICAgIGRvdDNTdGF0c0FsaWdubWVudEVycm9yc19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c0FsaWdubWVudEVycm9yc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZG90M1N0YXRzRkNTRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzRkNTRXJyb3JzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGRvdDNTdGF0c011bHRpcGxlQ29sbGlzaW9uRnJhbWVzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGRvdDNTdGF0c1NRRVRlc3RFcnJvcnNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBkb3QzU3RhdHNJbnRlcm5hbE1hY1RyYW5zbWl0RXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNGcmFtZVRvb0xvbmdzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzRnJhbWVUb29Mb25nc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNFdGhlckNoaXBTZXRfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICoqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9sZW5fcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZG90M1N0YXRzU3ltYm9sRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzU3ltYm9sRXJyb3JzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNEdXBsZXhTdGF0dXNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNEdXBsZXhTdGF0dXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eV9nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eV92YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1c192YWxfcHRyKTsKKworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGRvdDNTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoZG90M1N0YXRzVGFibGVfbWliX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmxfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZG90M1N0YXRzSW5kZXhfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfaW5kZXhlc19zZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZG90M1N0YXRzSW5kZXhfdmFsKTsKKworCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9UM1NUQVRTVEFCTEVfREFUQV9HRVRfSCAqLworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfc2V0LmMgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfc2V0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRjMmRhMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9zZXQuYwpAQCAtMCwwICsxLDI4IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA3NyAkIG9mICQKKyAqCisgKiAkSWQ6JAorICoKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImRvdDNTdGF0c1RhYmxlLmgiCisKKworLyoqIEBkZWZncm91cCBkYXRhX3NldCBkYXRhX3NldDogUm91dGluZXMgdG8gc2V0IGRhdGEKKyAqCisgKiBUaGVzZSByb3V0aW5lcyBhcmUgdXNlZCB0byBzZXQgdGhlIHZhbHVlIGZvciBpbmRpdmlkdWFsIG9iamVjdHMuIFRoZQorICogcm93IGNvbnRleHQgaXMgcGFzc2VkLCBhbG9uZyB3aXRoIHRoZSBuZXcgdmFsdWUuCisgKiAKKyAqIEB7CisgKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX3NldC5oIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX3NldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMDMzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfc2V0LmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwNzcgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgRE9UM1NUQVRTVEFCTEVfREFUQV9TRVRfSAorI2RlZmluZSBET1QzU1RBVFNUQUJMRV9EQVRBX1NFVF9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFNFVCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFNFVCBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET1QzU1RBVFNUQUJMRV9EQVRBX1NFVF9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2VudW1zLmggYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhhNzJlNAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZW51bXMuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICA6IGdlbmVyaWMtdGFibGUtZW51bXMubTJjIDEyNTI2IDIwMDUtMDctMTUgMjI6NDE6MTZaIHJzdG9yeSAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBET1QzU1RBVFNUQUJMRV9FTlVNU19ICisjZGVmaW5lIERPVDNTVEFUU1RBQkxFX0VOVU1TX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBOT1RFUyBvbiBlbnVtcworICAgICAqID09PT09PT09PT09PT09CisgICAgICoKKyAgICAgKiBWYWx1ZSBNYXBwaW5nCisgICAgICogLS0tLS0tLS0tLS0tLQorICAgICAqIElmIHRoZSB2YWx1ZXMgZm9yIHlvdXIgZGF0YSB0eXBlIGRvbid0IGV4YWN0bHkgbWF0Y2ggdGhlCisgICAgICogcG9zc2libGUgdmFsdWVzIGRlZmluZWQgYnkgdGhlIG1pYiwgeW91IHNob3VsZCBtYXAgdGhlbQorICAgICAqIGJlbG93LiBGb3IgZXhhbXBsZSwgYSBib29sZWFuIGZsYWcgKDEvMCkgaXMgdXN1YWxseSByZXByZXNlbnRlZAorICAgICAqIGFzIGEgVHJ1dGhWYWx1ZSBpbiBhIE1JQiwgd2hpY2ggbWFwcyB0byB0aGUgdmFsdWVzICgxLzIpLgorICAgICAqCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBlbnVtIGRlZmluaXRpb25zIGZvciB0YWJsZSBkb3QzU3RhdHNUYWJsZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGNvbnN0YW50cyBmb3IgZW51bXMgZm9yIHRoZSBNSUIgbm9kZQorICogZG90M1N0YXRzRHVwbGV4U3RhdHVzIChJTlRFR0VSIC8gQVNOX0lOVEVHRVIpCisgKgorICogc2luY2UgYSBUZXh0dWFsIENvbnZlbnRpb24gbWF5IGJlIHJlZmVyZW5jZWQgbW9yZSB0aGFuIG9uY2UgaW4gYQorICogTUlCLCBwcm90ZWN0IGFnYWludCByZWRlZmluaXRpb25zIG9mIHRoZSBlbnVtIHZhbHVlcy4KKyAqLworI2lmbmRlZiBET1QzU1RBVFNEVVBMRVhTVEFUVVNfRU5VTVMKKyNkZWZpbmUgRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0VOVU1TCisKKyNkZWZpbmUgRE9UM1NUQVRTRFVQTEVYU1RBVFVTX1VOS05PV04gIDEKKyNkZWZpbmUgRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0hBTEZEVVBMRVggIDIKKyNkZWZpbmUgRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0ZVTExEVVBMRVggIDMKKworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET1QzU1RBVFNEVVBMRVhTVEFUVVNfRU5VTVMgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCisgKiBkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHkgKFRydXRoVmFsdWUgLyBBU05fSU5URUdFUikKKyAqCisgKiBzaW5jZSBhIFRleHR1YWwgQ29udmVudGlvbiBtYXkgYmUgcmVmZXJlbmNlZCBtb3JlIHRoYW4gb25jZSBpbiBhCisgKiBNSUIsIHByb3RlY3QgYWdhaW50IHJlZGVmaW5pdGlvbnMgb2YgdGhlIGVudW0gdmFsdWVzLgorICovCisjaWZuZGVmIFRSVVRIVkFMVUVfRU5VTVMKKyNkZWZpbmUgVFJVVEhWQUxVRV9FTlVNUworCisjZGVmaW5lIFRSVVRIVkFMVUVfVFJVRSAgMQorI2RlZmluZSBUUlVUSFZBTFVFX0ZBTFNFICAyCisKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFJVVEhWQUxVRV9FTlVNUyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBjb25zdGFudHMgZm9yIGVudW1zIGZvciB0aGUgTUlCIG5vZGUKKyAqIGRvdDNTdGF0c1JhdGVDb250cm9sU3RhdHVzIChJTlRFR0VSIC8gQVNOX0lOVEVHRVIpCisgKgorICogc2luY2UgYSBUZXh0dWFsIENvbnZlbnRpb24gbWF5IGJlIHJlZmVyZW5jZWQgbW9yZSB0aGFuIG9uY2UgaW4gYQorICogTUlCLCBwcm90ZWN0IGFnYWludCByZWRlZmluaXRpb25zIG9mIHRoZSBlbnVtIHZhbHVlcy4KKyAqLworI2lmbmRlZiBET1QzU1RBVFNSQVRFQ09OVFJPTFNUQVRVU19FTlVNUworI2RlZmluZSBET1QzU1RBVFNSQVRFQ09OVFJPTFNUQVRVU19FTlVNUworCisjZGVmaW5lIERPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTX1JBVEVDT05UUk9MT0ZGICAxCisjZGVmaW5lIERPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTX1JBVEVDT05UUk9MT04gIDIKKyNkZWZpbmUgRE9UM1NUQVRTUkFURUNPTlRST0xTVEFUVVNfVU5LTk9XTiAgMworCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTX0VOVU1TICovCisKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPVDNTVEFUU1RBQkxFX0VOVU1TX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNjg1Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jCkBAIC0wLDAgKzEsMTE4MiBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTU4OTkgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSElTIEZJTEUgRE9FUyBOT1QgQ09OVEFJTiBBTlkgVVNFUiBFRElUQUJMRSBDT0RFLiAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSEUgR0VORVJBVEVEIENPREUgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04sIEFORCAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICBJUyBTVUJKRUNUIFRPIENIQU5HRSBXSVRIT1VUIFdBUk5JTkcgSU4gRlVUVVJFIFJFTEVBU0VTLiAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiZG90M1N0YXRzVGFibGUuaCIKKworCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKworI2luY2x1ZGUgImRvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5oIgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGRvdDNTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzVGFibGUgaXMgc3ViaWQgMiBvZiBkb3QzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLCBsZW5ndGg6IDkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlX2N0eF9zIHsKKworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlOworCisgICAgZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICp1c2VyX2N0eDsKKworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gdGJsX2luZm87CisKKyAgICBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX21ldGhvZHMgYWNjZXNzX211bHRpcGxleGVyOworCit9IGRvdDNTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHg7CisKK3N0YXRpYyBkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4IGRvdDNTdGF0c1RhYmxlX2lmX2N0eDsKKworc3RhdGljIHZvaWQgICAgIF9kb3QzU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaWZfY3R4KTsKK3N0YXRpYyB2b2lkICAgIAorX2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KTsKKworCituZXRzbm1wX2NvbnRhaW5lciAqCitkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCit7CisgICAgcmV0dXJuIGRvdDNTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXI7Cit9CisKK2RvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCitkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCit7CisgICAgcmV0dXJuIGRvdDNTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eDsKK30KKworZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKK2RvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQoreworICAgIGRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqb2xkID0gZG90M1N0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4OworICAgIGRvdDNTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKKyAgICByZXR1cm4gb2xkOworfQorCitpbnQKK2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCit7CisgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGRvdDNTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIpOworfQorCisvKgorICogbWZkIG11bHRpcGxleGVyIG1vZGVzCisgKi8KK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2RvdDNTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0Oworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZG90M1N0YXRzVGFibGVfcG9zdF9yZXF1ZXN0Oworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZG90M1N0YXRzVGFibGVfb2JqZWN0X2xvb2t1cDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF92YWx1ZXM7CisvKioKKyAqIEBpbnRlcm5hbAorICogSW5pdGlhbGl6ZSB0aGUgdGFibGUgZG90M1N0YXRzVGFibGUgCisgKiAgICAoRGVmaW5lIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCkKKyAqLwordm9pZAorX2RvdDNTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlKGRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHJlZ19wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGZsYWdzKQoreworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyAqYWNjZXNzX211bHRpcGxleGVyID0KKyAgICAgICAgJmRvdDNTdGF0c1RhYmxlX2lmX2N0eC5hY2Nlc3NfbXVsdGlwbGV4ZXI7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGJsX2luZm8gPQorICAgICAgICAmZG90M1N0YXRzVGFibGVfaWZfY3R4LnRibF9pbmZvOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcjsKKyAgICBpbnQgICAgICAgICAgICAgbWZkX21vZGVzID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfZG90M1N0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UiLCAiY2FsbGVkXG4iKSk7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzYXZlIGludGVyZmFjZSBjb250ZXh0IGZvciBkb3QzU3RhdHNUYWJsZQorICAgICAqLworICAgIC8qCisgICAgICogU2V0dGluZyB1cCB0aGUgdGFibGUncyBkZWZpbml0aW9uCisgICAgICovCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGJsX2luZm8sIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGRvdDNTdGF0c0luZGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisKKyAgICAvKgorICAgICAqIERlZmluZSB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBhY2Nlc3NpYmxlIGNvbHVtbnMuICBUaGlzCisgICAgICogb3B0aW1pemVzIHJldHJpdmFsLiAKKyAgICAgKi8KKyAgICB0YmxfaW5mby0+bWluX2NvbHVtbiA9IERPVDNTVEFUU1RBQkxFX01JTl9DT0w7CisgICAgdGJsX2luZm8tPm1heF9jb2x1bW4gPSBET1QzU1RBVFNUQUJMRV9NQVhfQ09MOworCisgICAgLyoKKyAgICAgKiBzYXZlIHVzZXJzIGNvbnRleHQKKyAgICAgKi8KKyAgICBkb3QzU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHggPSByZWdfcHRyOworCisgICAgLyoKKyAgICAgKiBjYWxsIGRhdGEgYWNjZXNzIGluaXRpYWxpemF0aW9uIGNvZGUKKyAgICAgKi8KKyAgICBkb3QzU3RhdHNUYWJsZV9pbml0X2RhdGEocmVnX3B0cik7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgX2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0KCZkb3QzU3RhdHNUYWJsZV9pZl9jdHgpOworICAgIGlmIChOVUxMID09IGRvdDNTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBpbml0aWFsaXplIGNvbnRhaW5lciBmb3IgZG90M1N0YXRzVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBhY2Nlc3NfbXVsdGlwbGV4ZXI6IFJFUVVJUkVEIHdyYXBwZXIgZm9yIGdldCByZXF1ZXN0IGhhbmRsaW5nCisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3RfbG9va3VwID0gX21mZF9kb3QzU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Z2V0X3ZhbHVlcyA9IF9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X3ZhbHVlczsKKworICAgIC8qCisgICAgICogbm8gd3JhcHBlcnMgeWV0CisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCA9IF9tZmRfZG90M1N0YXRzVGFibGVfcHJlX3JlcXVlc3Q7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QgPSBfbWZkX2RvdDNTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdDsKKworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIENyZWF0ZSBhIHJlZ2lzdHJhdGlvbiwgc2F2ZSBvdXIgcmVnIGRhdGEsIHJlZ2lzdGVyIHRhYmxlLgorICAgICAqLworICAgIERFQlVHTVNHVEwoKCJkb3QzU3RhdHNUYWJsZTppbml0X2RvdDNTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAiUmVnaXN0ZXJpbmcgZG90M1N0YXRzVGFibGUgYXMgYSBtaWJzLWZvci1kdW1taWVzIHRhYmxlLlxuIikpOworICAgIGhhbmRsZXIgPQorICAgICAgICBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX211bHRpcGxleGVyX2dldChhY2Nlc3NfbXVsdGlwbGV4ZXIpOworICAgIHJlZ2luZm8gPQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZSgiZG90M1N0YXRzVGFibGUiLCBoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX29pZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgaWYgKE5VTEwgPT0gcmVnaW5mbykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgZG90M1N0YXRzVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlZ2luZm8tPm15X3JlZ192b2lkID0gJmRvdDNTdGF0c1RhYmxlX2lmX2N0eDsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzZXQgdXAgYmFieSBzdGVwcyBoYW5kbGVyLCBjcmVhdGUgaXQgYW5kIGluamVjdCBpdAorICAgICAqLworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfT0JKRUNUX0xPT0tVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9JUlJFVkVSU0lCTEVfQ09NTUlUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9zeW50YXhfY2hlY2tzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX09CSkVDVDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BSRV9SRVFVRVNUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fU0VUVVA7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jbGVhbnVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ0xFQU5VUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHMpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRTOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cm93X2NyZWF0aW9uKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1JPV19DUkVBVEU7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29uc2lzdGVuY3lfY2hlY2tzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX0NPTlNJU1RFTkNZOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7CisKKyAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3Qgcm93X21lcmdlIGhlbHBlciB3aXRoIHByZWZpeCByb290b2lkX2xlbiArIDIgKGVudHJ5LmNvbCkKKyAgICAgKi8KKyAgICBoYW5kbGVyID0gbmV0c25tcF9nZXRfcm93X21lcmdlX2hhbmRsZXIocmVnaW5mby0+cm9vdG9pZF9sZW4gKyAyKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjb250YWluZXJfdGFibGUgaGVscGVyCisgICAgICovCisgICAgaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2hhbmRsZXJfZ2V0KHRibF9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9pZl9jdHguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjYWNoZSBoZWxwZXIKKyAgICAgKi8KKyAgICBpZiAoTlVMTCAhPSBkb3QzU3RhdHNUYWJsZV9pZl9jdHguY2FjaGUpIHsKKyAgICAgICAgaGFuZGxlciA9IG5ldHNubXBfY2FjaGVfaGFuZGxlcl9nZXQoZG90M1N0YXRzVGFibGVfaWZfY3R4LmNhY2hlKTsKKyAgICAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIHJlZ2lzdGVyIHRhYmxlCisgICAgICovCisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWdpbmZvLCB0YmxfaW5mbyk7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2RvdDNTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBTaHV0ZG93biB0aGUgdGFibGUgZG90M1N0YXRzVGFibGUKKyAqLwordm9pZAorX2RvdDNTdGF0c1RhYmxlX3NodXRkb3duX2ludGVyZmFjZShkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiByZWdfcHRyKQoreworICAgIC8qCisgICAgICogc2h1dGRvd24gdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9kb3QzU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oJmRvdDNTdGF0c1RhYmxlX2lmX2N0eCk7Cit9CisKK3ZvaWQKK2RvdDNTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8gKnZjKQoreworICAgIGRvdDNTdGF0c1RhYmxlX2lmX2N0eC50YmxfaW5mby52YWxpZF9jb2x1bW5zID0gdmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBjb252ZXJ0IHRoZSBpbmRleCBjb21wb25lbnQgc3RvcmVkIGluIHRoZSBjb250ZXh0IHRvIGFuIG9pZAorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQoreworICAgIGludCAgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgLyoKKyAgICAgKiB0ZW1wIHN0b3JhZ2UgZm9yIHBhcnNpbmcgaW5kZXhlcworICAgICAqLworICAgIC8qCisgICAgICogZG90M1N0YXRzSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvSAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfZG90M1N0YXRzSW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB2YXJiaW5kcworICAgICAqLworICAgIG1lbXNldCgmdmFyX2RvdDNTdGF0c0luZGV4LCAweDAwLCBzaXplb2YodmFyX2RvdDNTdGF0c0luZGV4KSk7CisgICAgdmFyX2RvdDNTdGF0c0luZGV4LnR5cGUgPSBBU05fSU5URUdFUjsKKworICAgIC8qCisgICAgICogY2hhaW4gdGVtcCBpbmRleCB2YXJiaW5kcyB0b2dldGhlcgorICAgICAqLworICAgIHZhcl9kb3QzU3RhdHNJbmRleC5uZXh0X3ZhcmlhYmxlID0gTlVMTDsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfaW5kZXhfdG9fb2lkIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGRvdDNTdGF0c0luZGV4KDEpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL0ggCisgICAgICovCisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKCZ2YXJfZG90M1N0YXRzSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBtaWJfaWR4LT5kb3QzU3RhdHNJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1pYl9pZHgtPmRvdDNTdGF0c0luZGV4KSk7CisKKworICAgIGVyciA9IGJ1aWxkX29pZF9ub2FsbG9jKG9pZF9pZHgtPm9pZHMsIG9pZF9pZHgtPmxlbiwgJm9pZF9pZHgtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCAmdmFyX2RvdDNTdGF0c0luZGV4KTsKKyAgICBpZiAoZXJyKQorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgJWQgY29udmVydGluZyBpbmRleCB0byBvaWRcbiIsIGVycik7CisKKyAgICAvKgorICAgICAqIHBhcnNpbmcgbWF5IGhhdmUgYWxsb2NhdGVkIG1lbW9yeS4gZnJlZSBpdC4KKyAgICAgKi8KKyAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzKCZ2YXJfZG90M1N0YXRzSW5kZXgpOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfaW5kZXhfdG9fb2lkICovCisKKy8qKgorICogZXh0cmFjdCBkb3QzU3RhdHNUYWJsZSBpbmRleGVzIGZyb20gYSBuZXRzbm1wX2luZGV4CisgKgorICogQHJldHZhbCBTTk1QX0VSUl9OT0VSUk9SICA6IG5vIGVycm9yCisgKiBAcmV0dmFsIFNOTVBfRVJSX0dFTkVSUiAgIDogZXJyb3IKKyAqLworaW50Citkb3QzU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgaW50ICAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICAvKgorICAgICAqIHRlbXAgc3RvcmFnZSBmb3IgcGFyc2luZyBpbmRleGVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBkb3QzU3RhdHNJbmRleCgxKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9ICisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9kb3QzU3RhdHNJbmRleDsKKworICAgIC8qCisgICAgICogc2V0IHVwIHZhcmJpbmRzCisgICAgICovCisgICAgbWVtc2V0KCZ2YXJfZG90M1N0YXRzSW5kZXgsIDB4MDAsIHNpemVvZih2YXJfZG90M1N0YXRzSW5kZXgpKTsKKyAgICB2YXJfZG90M1N0YXRzSW5kZXgudHlwZSA9IEFTTl9JTlRFR0VSOworCisgICAgLyoKKyAgICAgKiBjaGFpbiB0ZW1wIGluZGV4IHZhcmJpbmRzIHRvZ2V0aGVyCisgICAgICovCisgICAgdmFyX2RvdDNTdGF0c0luZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBwYXJzZSB0aGUgb2lkIGludG8gdGhlIGluZGl2aWR1YWwgaW5kZXggY29tcG9uZW50cworICAgICAqLworICAgIGVyciA9IHBhcnNlX29pZF9pbmRleGVzKG9pZF9pZHgtPm9pZHMsIG9pZF9pZHgtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFyX2RvdDNTdGF0c0luZGV4KTsKKyAgICBpZiAoZXJyID09IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY29weSBvdXQgdmFsdWVzCisgICAgICAgICAqLworICAgICAgICBtaWJfaWR4LT5kb3QzU3RhdHNJbmRleCA9CisgICAgICAgICAgICAqKChsb25nICopIHZhcl9kb3QzU3RhdHNJbmRleC52YWwuc3RyaW5nKTsKKworCisgICAgfQorCisgICAgLyoKKyAgICAgKiBwYXJzaW5nIG1heSBoYXZlIGFsbG9jYXRlZCBtZW1vcnkuIGZyZWUgaXQuCisgICAgICovCisgICAgc25tcF9yZXNldF92YXJfYnVmZmVycygmdmFyX2RvdDNTdGF0c0luZGV4KTsKKworICAgIHJldHVybiBlcnI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2luZGV4X2Zyb21fb2lkICovCisKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEBpbnRlcm5hbAorICogYWxsb2NhdGUgcmVzb3VyY2VzIGZvciBhIGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAqLworZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCitkb3QzU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KHZvaWQgKnVzZXJfaW5pdF9jdHgpCit7CisgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgYSAiCisgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4LlxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyA9IHJvd3JlcV9jdHgtPm9pZF90bXA7CisKKyAgICByb3dyZXFfY3R4LT5kb3QzU3RhdHNUYWJsZV9kYXRhX2xpc3QgPSBOVUxMOworCisgICAgLyoKKyAgICAgKiBpZiB3ZSBhbGxvY2F0ZWQgZGF0YSwgY2FsbCBpbml0IHJvdXRpbmUKKyAgICAgKi8KKyAgICBpZiAoIShyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RBVEFfRlJPTV9VU0VSKSkgeworICAgICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9CisgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQocm93cmVxX2N0eCwgdXNlcl9pbml0X2N0eCkpIHsKKyAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHggPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHggKi8KKworLyoKKyAqIEBpbnRlcm5hbAorICogcmVsZWFzZSByZXNvdXJjZXMgZm9yIGEgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eAorICovCit2b2lkCitkb3QzU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAocm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIGZyZWUgaW5kZXggb2lkIHBvaW50ZXIKKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzICE9IHJvd3JlcV9jdHgtPm9pZF90bXApCisgICAgICAgIGZyZWUocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzKTsKKworICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4KTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfZG90M1N0YXRzVGFibGVfcHJlX3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfcHJlX3JlcXVlc3QiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgxICE9IG5ldHNubXBfcm93X21lcmdlX3N0YXR1c19maXJzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgInNraXBwaW5nIGFkZGl0aW9uYWwgcHJlX3JlcXVlc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgfQorCisgICAgcmMgPSBkb3QzU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChkb3QzU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiZG90M1N0YXRzVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNUYWJsZV9wcmVfcmVxdWVzdFxuIiwgcmMpKTsKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZG90M1N0YXRzVGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9kb3QzU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBpbnQgICAgICAgICAgICAgcmMsIHBhY2tldF9yYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiByZWxlYXNlIHJvdyBjb250ZXh0LCBpZiBkZWxldGVkCisgICAgICovCisgICAgaWYgKHJvd3JlcV9jdHggJiYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREVMRVRFRCkpCisgICAgICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogd2FpdCBmb3IgbGFzdCBjYWxsIGJlZm9yZSBjYWxsaW5nIHVzZXIKKyAgICAgKi8KKyAgICBpZiAoMSAhPSBuZXRzbm1wX3Jvd19tZXJnZV9zdGF0dXNfbGFzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIndhaXRpbmcgZm9yIGxhc3QgcG9zdF9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHBhY2tldF9yYyA9IG5ldHNubXBfY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKGFndHJlcV9pbmZvLT5hc3AsIDApOworICAgIHJjID0gZG90M1N0YXRzVGFibGVfcG9zdF9yZXF1ZXN0KGRvdDNTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfcmMpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiZG90M1N0YXRzVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3RcbiIsIHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZG90M1N0YXRzVGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfZG90M1N0YXRzVGFibGVfb2JqZWN0X2xvb2t1cChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworICAgIGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBnZXQgb3VyIGNvbnRleHQgZnJvbSBtZmQKKyAgICAgKiBkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICppZl9jdHggPQorICAgICAqICAgICAgICAgICAgIChkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICopcmVnaW5mby0+bXlfcmVnX3ZvaWQ7CisgICAgICovCisKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9DUkVBVElPTjsKKyAgICB9CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCByYyk7CisgICAgZWxzZQorICAgICAgICBkb3QzU3RhdHNUYWJsZV9yb3dfcHJlcChyb3dyZXFfY3R4KTsKKworICAgIHJldHVybiBTTk1QX1ZBTElEQVRFX0VSUihyYyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZG90M1N0YXRzVGFibGVfb2JqZWN0X2xvb2t1cCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBHRVQgcHJvY2Vzc2luZworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBAaW50ZXJuYWwKKyAqIFJldHJpZXZlIHRoZSB2YWx1ZSBmb3IgYSBwYXJ0aWN1bGFyIGNvbHVtbgorICovCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbihkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkIGZvciAlZFxuIiwgY29sdW1uKSk7CisKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBzd2l0Y2ggKGNvbHVtbikgeworCisgICAgICAgIC8qCisgICAgICAgICAqIChJTkRFWCkgZG90M1N0YXRzSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRE9UM1NUQVRTSU5ERVg6CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9JTlRFR0VSOworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YobG9uZyk7CisgICAgICAgICgqdmFyLT52YWwuaW50ZWdlcikgPSByb3dyZXFfY3R4LT50YmxfaWR4LmRvdDNTdGF0c0luZGV4OworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnMoMikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRE9UM1NUQVRTQUxJR05NRU5URVJST1JTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNBTElHTk1FTlRFUlJPUlNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c0ZDU0Vycm9ycygzKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9ET1QzU1RBVFNGQ1NFUlJPUlM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0RPVDNTVEFUU0ZDU0VSUk9SU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNGQ1NFcnJvcnMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGRvdDNTdGF0c0ZDU0Vycm9yc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzKDQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU1NJTkdMRUNPTExJU0lPTkZSQU1FUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTU0lOR0xFQ09MTElTSU9ORlJBTUVTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lcykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c011bHRpcGxlQ29sbGlzaW9uRnJhbWVzKDUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU01VTFRJUExFQ09MTElTSU9ORlJBTUVTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNNVUxUSVBMRUNPTExJU0lPTkZSQU1FU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lcykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c1NRRVRlc3RFcnJvcnMoNikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRE9UM1NUQVRTU1FFVEVTVEVSUk9SUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTU1FFVEVTVEVSUk9SU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNTUUVUZXN0RXJyb3JzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zKDcpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU0RFRkVSUkVEVFJBTlNNSVNTSU9OUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTREVGRVJSRURUUkFOU01JU1NJT05TX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9ucykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zKDgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU0xBVEVDT0xMSVNJT05TOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNMQVRFQ09MTElTSU9OU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNMYXRlQ29sbGlzaW9ucykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucyg5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9ET1QzU1RBVFNFWENFU1NJVkVDT0xMSVNJT05TOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNFWENFU1NJVkVDT0xMSVNJT05TX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNJbnRlcm5hbE1hY1RyYW5zbWl0RXJyb3JzKDEwKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1RSQU5TTUlURVJST1JTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1RSQU5TTUlURVJST1JTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnMoMTEpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU0NBUlJJRVJTRU5TRUVSUk9SUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTQ0FSUklFUlNFTlNFRVJST1JTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9ycykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNGcmFtZVRvb0xvbmdzKDEzKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9ET1QzU1RBVFNGUkFNRVRPT0xPTkdTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNGUkFNRVRPT0xPTkdTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3MpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3NfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnMoMTYpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDUkVDRUlWRUVSUk9SUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTSU5URVJOQUxNQUNSRUNFSVZFRVJST1JTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9ycykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c0V0aGVyQ2hpcFNldCgxNykvT0JKRUNUSUQvQVNOX09CSkVDVF9JRC9vaWQob2lkKS8vTC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRE9UM1NUQVRTRVRIRVJDSElQU0VUOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNFVEhFUkNISVBTRVRfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZG90M1N0YXRzRXRoZXJDaGlwU2V0KSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9PQkpFQ1RfSUQ7CisgICAgICAgIHJjID0gZG90M1N0YXRzRXRoZXJDaGlwU2V0X2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9pZCAqKikgJiB2YXItPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFyLT52YWxfbGVuKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzU3ltYm9sRXJyb3JzKDE4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9ET1QzU1RBVFNTWU1CT0xFUlJPUlM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0RPVDNTVEFUU1NZTUJPTEVSUk9SU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNTeW1ib2xFcnJvcnMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGRvdDNTdGF0c1N5bWJvbEVycm9yc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzRHVwbGV4U3RhdHVzKDE5KS9JTlRFR0VSL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9BL3cvRS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRE9UM1NUQVRTRFVQTEVYU1RBVFVTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNEVVBMRVhTVEFUVVNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZG90M1N0YXRzRHVwbGV4U3RhdHVzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fSU5URUdFUjsKKyAgICAgICAgcmMgPSBkb3QzU3RhdHNEdXBsZXhTdGF0dXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eSgyMCkvVHJ1dGhWYWx1ZS9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS93L0Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU1JBVEVDT05UUk9MQUJJTElUWToKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTUkFURUNPTlRST0xBQklMSVRZX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eSkgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5X2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1cygyMSkvSU5URUdFUi9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS93L0Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNSQVRFQ09OVFJPTFNUQVRVU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBpZiAoRE9UM1NUQVRTVEFCTEVfTUlOX0NPTCA8PSBjb2x1bW4KKyAgICAgICAgICAgICYmIGNvbHVtbiA8PSBET1QzU1RBVFNUQUJMRV9NQVhfQ09MKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImFzc3VtZSBjb2x1bW4gJWQgaXMgcmVzZXJ2ZWRcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmMgPSBNRkRfU0tJUDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBjb2x1bW4gJWQgaW4gX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW5cbiIsCisgICAgICAgICAgICAgICAgICAgICBjb2x1bW4pOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4gKi8KKworaW50CitfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF92YWx1ZXMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdHJpOworICAgIHVfY2hhciAgICAgICAgICpvbGRfc3RyaW5nOworICAgIHZvaWQgICAgICAgICAgICAoKmRhdGFGcmVlSG9vaykgKHZvaWQgKik7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X3ZhbHVlcyIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIERFQlVHTVNHVEwoKCI5OmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X3ZhbHVlcyIsCisgICAgICAgICAgICAgICAgImV4aXN0cyAldVxuIiwgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncykpOworCisgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNhdmUgb2xkIHBvaW50ZXIsIHNvIHdlIGNhbiBmcmVlIGl0IGlmIHJlcGxhY2VkCisgICAgICAgICAqLworICAgICAgICBvbGRfc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZzsKKyAgICAgICAgZGF0YUZyZWVIb29rID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+ZGF0YUZyZWVIb29rOworICAgICAgICBpZiAoTlVMTCA9PSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmOworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiA9CisgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmID09CisgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gIT0KKyAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuID0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBnZXQgY29sdW1uIGRhdGEKKyAgICAgICAgICovCisgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdHJpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmMgPSBfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbihyb3dyZXFfY3R4LCByZXF1ZXN0cy0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaS0+Y29sbnVtKTsKKyAgICAgICAgaWYgKHJjKSB7CisgICAgICAgICAgICBpZiAoTUZEX1NLSVAgPT0gcmMpIHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlID0gU05NUF9OT1NVQ0hJTlNUQU5DRTsKKyAgICAgICAgICAgICAgICByYyA9IFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoTlVMTCA9PSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTlVMTCB2YXJiaW5kIGRhdGEgcG9pbnRlciFcbiIpOworICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJjKQorICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcihyZXF1ZXN0cywgU05NUF9WQUxJREFURV9FUlIocmMpKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBpZiB0aGUgYnVmZmVyIHdhc24ndCB1c2VkIHByZXZpb3VzbHkgZm9yIHRoZSBvbGQgZGF0YSAoaS5lLiBpdAorICAgICAgICAgKiB3YXMgYWxsY29hdGVkIG1lbW9yeSkgIGFuZCB0aGUgZ2V0IHJvdXRpbmUgcmVwbGFjZWQgdGhlIHBvaW50ZXIsCisgICAgICAgICAqIHdlIG5lZWQgdG8gZnJlZSB0aGUgcHJldmlvdXMgcG9pbnRlci4KKyAgICAgICAgICovCisgICAgICAgIGlmIChvbGRfc3RyaW5nICYmIChvbGRfc3RyaW5nICE9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZikgJiYKKyAgICAgICAgICAgIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nICE9IG9sZF9zdHJpbmcpKSB7CisgICAgICAgICAgICBpZiAoZGF0YUZyZWVIb29rKQorICAgICAgICAgICAgICAgICgqZGF0YUZyZWVIb29rKSAob2xkX3N0cmluZyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJlZShvbGRfc3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgcmVzdWx0cyAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X3ZhbHVlcyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFNFVCBwcm9jZXNzaW5nCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogU0VUIFBST0NFU1NJTkcgTk9UIEFQUExJQ0FCTEUgKHBlciBNSUIgb3IgdXNlciBzZXR0aW5nKQorICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBEQVRBIEFDQ0VTUworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkICAgICBfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpOworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgaW50CitfY2FjaGVfbG9hZChuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKnZtYWdpYykKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X2NhY2hlX2xvYWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoKE5VTEwgPT0gY2FjaGUpIHx8IChOVUxMID09IGNhY2hlLT5tYWdpYykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImludmFsaWQgY2FjaGUgZm9yIGRvdDNTdGF0c1RhYmxlX2NhY2hlX2xvYWRcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoqIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmb3IgYW4gaW52YWxpZCBvciBleHBpcmVkIGNhY2hlICovCisgICAgbmV0c25tcF9hc3NlcnQoKDAgPT0gY2FjaGUtPnZhbGlkKSB8fCAoMSA9PSBjYWNoZS0+ZXhwaXJlZCkpOworCisgICAgLyoKKyAgICAgKiBjYWxsIHVzZXIgY29kZQorICAgICAqLworICAgIHJldHVybiBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZCgobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWdpYyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9sb2FkICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X2NhY2hlX2ZyZWUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoKE5VTEwgPT0gY2FjaGUpIHx8IChOVUxMID09IGNhY2hlLT5tYWdpYykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImludmFsaWQgY2FjaGUgaW4gZG90M1N0YXRzVGFibGVfY2FjaGVfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250YWluZXIgPSAobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPm1hZ2ljOworCisgICAgX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2l0ZW1fZnJlZShkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X2NvbnRhaW5lcl9pdGVtX2ZyZWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NvbnRhaW5lcl9pdGVtX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X2NvbnRhaW5lcl9mcmVlIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvbnRhaW5lciBpbiBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyKTsKKworICAgIC8qCisgICAgICogZnJlZSBhbGwgaXRlbXMuIGluZWZmaWNpZW50LCBidXQgZWFzeS4KKyAgICAgKi8KKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2NvbnRhaW5lcl9pdGVtX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgIE5VTEwpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGluaXRpYWxpemUgdGhlIGNvbnRhaW5lciB3aXRoIGZ1bmN0aW9ucyBvciB3cmFwcGVycworICovCit2b2lkCitfZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2luaXQoZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGNhY2hlIGluaXQKKyAgICAgKi8KKyAgICBpZl9jdHgtPmNhY2hlID0gbmV0c25tcF9jYWNoZV9jcmVhdGUoMzAsICAgIC8qIHRpbWVvdXQgaW4gc2Vjb25kcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2FjaGVfbG9hZCwgX2NhY2hlX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfb2lkX3NpemUpOworCisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jYWNoZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY2FjaGUgZm9yIGRvdDNTdGF0c1RhYmxlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmX2N0eC0+Y2FjaGUtPmZsYWdzID0gTkVUU05NUF9DQUNIRV9ET05UX0lOVkFMSURBVEVfT05fU0VUOworCisgICAgZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2luaXQoJmlmX2N0eC0+Y29udGFpbmVyLCBpZl9jdHgtPmNhY2hlKTsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikKKyAgICAgICAgaWZfY3R4LT5jb250YWluZXIgPQorICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZmluZCgiZG90M1N0YXRzVGFibGU6dGFibGVfY29udGFpbmVyIik7CisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNvbnRhaW5lciBpbiAiCisgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoTlVMTCAhPSBpZl9jdHgtPmNhY2hlKQorICAgICAgICBpZl9jdHgtPmNhY2hlLT5tYWdpYyA9ICh2b2lkICopIGlmX2N0eC0+Y29udGFpbmVyOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHNodXRkb3duIHRoZSBjb250YWluZXIgd2l0aCBmdW5jdGlvbnMgb3Igd3JhcHBlcnMKKyAqLwordm9pZAorX2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfZG90M1N0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duIiwgImNhbGxlZFxuIikpOworCisgICAgZG90M1N0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlmX2N0eC0+Y29udGFpbmVyKTsKKworICAgIF9jb250YWluZXJfZnJlZShpZl9jdHgtPmNvbnRhaW5lcik7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisKK2RvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorZG90M1N0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGRvdDNTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfT0lEX0xFTl07CisgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgc3RvcmFnZSBmb3IgT0lECisgICAgICovCisgICAgb2lkX2lkeC5vaWRzID0gb2lkX3RtcDsKKyAgICBvaWRfaWR4LmxlbiA9IHNpemVvZihvaWRfdG1wKSAvIHNpemVvZihvaWQpOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0CisgICAgICovCisgICAgcmMgPSBkb3QzU3RhdHNUYWJsZV9pbmRleF90b19vaWQoJm9pZF9pZHgsIG1pYl9pZHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByb3dyZXFfY3R4ID0gQ09OVEFJTkVSX0ZJTkQoZG90M1N0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lciwgJm9pZF9pZHgpOworCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5oIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzJiNWE2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisvKiogQGluZ3JvdXAgaW50ZXJmYWNlOiBSb3V0aW5lcyB0byBpbnRlcmZhY2UgdG8gTmV0LVNOTVAKKyAqCisgKiBcd2FybmluZyBUaGlzIGNvZGUgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgY2FsbGVkIGRpcmVjdGx5LAorICogICAgICAgICAgb3IgdXNlZCB0byBpbnRlcnByZXQgZnVuY3Rpb25hbGl0eS4gSXQgaXMgc3ViamVjdCB0bworICogICAgICAgICAgY2hhbmdlIGF0IGFueSB0aW1lLgorICogCisgKiBAeworICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyNpZm5kZWYgRE9UM1NUQVRTVEFCTEVfSU5URVJGQUNFX0gKKyNkZWZpbmUgRE9UM1NUQVRTVEFCTEVfSU5URVJGQUNFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyNpbmNsdWRlICJkb3QzU3RhdHNUYWJsZS5oIgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKiBQVUJMSUMgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9kb3QzU3RhdHNUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZShkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jdHgsIHVfbG9uZyBmbGFncyk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9kb3QzU3RhdHNUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UoZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCk7CisKKyAgICBkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKmRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCk7CisKKyAgICBkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgKmRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3cmVnKTsKKworICAgIG5ldHNubXBfY29udGFpbmVyICpkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKTsKKworICAgIGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKmRvdDNTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgodm9pZCAqKTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgZG90M1N0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfaW5kZXhfdG9fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfbWliX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CisKKyAgICAvKgorICAgICAqIGFjY2VzcyB0byBjZXJ0YWluIGludGVybmFscy4gdXNlIHdpdGggY2F1dGlvbiEKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmMpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPVDNTVEFUU1RBQkxFX0lOVEVSRkFDRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfb2lkcy5oIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9vaWRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzliMTZjZQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfb2lkcy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1vaWRzLm0yYyAxMjg1NSAyMDA1LTA5LTI3IDE1OjU2OjA4WiByc3RvcnkgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgRE9UM1NUQVRTVEFCTEVfT0lEU19ICisjZGVmaW5lIERPVDNTVEFUU1RBQkxFX09JRFNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworICAgIC8qCisgICAgICogY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgdGFibGUgZG90M1N0YXRzVGFibGUgCisgICAgICovCisjZGVmaW5lIERPVDNTVEFUU1RBQkxFX09JRCAgICAgICAgICAgICAgMSwzLDYsMSwyLDEsMTAsNywyCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0lOREVYICAgICAgICAgMQorI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTSU5ERVhfRkxBRyAgICAoMHgxIDw8IDApCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0FMSUdOTUVOVEVSUk9SUyAgICAgICAgIDIKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0FMSUdOTUVOVEVSUk9SU19GTEFHICAgICgweDEgPDwgMSkKKworI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTRkNTRVJST1JTICAgICAgICAgMworI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTRkNTRVJST1JTX0ZMQUcgICAgKDB4MSA8PCAyKQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNTSU5HTEVDT0xMSVNJT05GUkFNRVMgICAgICAgICA0CisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNTSU5HTEVDT0xMSVNJT05GUkFNRVNfRkxBRyAgICAoMHgxIDw8IDMpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU01VTFRJUExFQ09MTElTSU9ORlJBTUVTICAgICAgICAgNQorI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTTVVMVElQTEVDT0xMSVNJT05GUkFNRVNfRkxBRyAgICAoMHgxIDw8IDQpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU1NRRVRFU1RFUlJPUlMgICAgICAgICA2CisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNTUUVURVNURVJST1JTX0ZMQUcgICAgKDB4MSA8PCA1KQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlMgICAgICAgICA3CisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlNfRkxBRyAgICAoMHgxIDw8IDYpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0xBVEVDT0xMSVNJT05TICAgICAgICAgOAorI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTTEFURUNPTExJU0lPTlNfRkxBRyAgICAoMHgxIDw8IDcpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0VYQ0VTU0lWRUNPTExJU0lPTlMgICAgICAgICA5CisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNFWENFU1NJVkVDT0xMSVNJT05TX0ZMQUcgICAgKDB4MSA8PCA4KQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1RSQU5TTUlURVJST1JTICAgICAgICAgMTAKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDVFJBTlNNSVRFUlJPUlNfRkxBRyAgICAoMHgxIDw8IDkpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0NBUlJJRVJTRU5TRUVSUk9SUyAgICAgICAgIDExCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNDQVJSSUVSU0VOU0VFUlJPUlNfRkxBRyAgICAoMHgxIDw8IDEwKQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNGUkFNRVRPT0xPTkdTICAgICAgICAgMTMKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0ZSQU1FVE9PTE9OR1NfRkxBRyAgICAoMHgxIDw8IDEyKQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1JFQ0VJVkVFUlJPUlMgICAgICAgICAxNgorI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTSU5URVJOQUxNQUNSRUNFSVZFRVJST1JTX0ZMQUcgICAgKDB4MSA8PCAxNSkKKworI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTRVRIRVJDSElQU0VUICAgICAgICAgMTcKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0VUSEVSQ0hJUFNFVF9GTEFHICAgICgweDEgPDwgMTYpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU1NZTUJPTEVSUk9SUyAgICAgICAgIDE4CisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNTWU1CT0xFUlJPUlNfRkxBRyAgICAoMHgxIDw8IDE3KQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNEVVBMRVhTVEFUVVMgICAgICAgICAxOQorI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0ZMQUcgICAgKDB4MSA8PCAxOCkKKworI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTUkFURUNPTlRST0xBQklMSVRZICAgICAgICAgMjAKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU1JBVEVDT05UUk9MQUJJTElUWV9GTEFHICAgICgweDEgPDwgMTkpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTICAgICAgICAgMjEKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTX0ZMQUcgICAgKDB4MSA8PCAyMCkKKworCisjZGVmaW5lIERPVDNTVEFUU1RBQkxFX01JTl9DT0wgICBDT0xVTU5fRE9UM1NUQVRTSU5ERVgKKyNkZWZpbmUgRE9UM1NUQVRTVEFCTEVfTUFYX0NPTCAgIENPTFVNTl9ET1QzU1RBVFNSQVRFQ09OVFJPTFNUQVRVUworCisJCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET1QzU1RBVFNUQUJMRV9PSURTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvaW9jdGxfaW1wX2NvbW1vbi5oIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9pb2N0bF9pbXBfY29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY5MjMyYQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvaW9jdGxfaW1wX2NvbW1vbi5oCkBAIC0wLDAgKzEsNjUgQEAKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaW5jbHVkZSA8bGludXgvc29ja2lvcy5oPgorI2luY2x1ZGUgPGlmYWRkcnMuaD4KKworLyogdXNlIGtlcm5lbCdzIGV0aHRvb2wuaCAgKi8KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cit0eXBlZGVmIF9fdTY0IHU2NDsKK3R5cGVkZWYgX191MzIgdTMyOwordHlwZWRlZiBfX3UxNiB1MTY7Cit0eXBlZGVmIF9fdTggdTg7CisjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorCisvKiBzdHJ1Y3R1cmUgZm9yIHN0b3JpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBpbiB0aGUgc3lzdGVtICovCisKK3N0cnVjdCBpZm5hbWUgeworICAgIHN0cnVjdCBpZm5hbWUgKmlmbl9uZXh0OworICAgIGNoYXIgbmFtZSBbSUZfTkFNRVNJWkVdOworfTsKKworc3RydWN0IGlmbmFtZSAqZG90M3N0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IChzdHJ1Y3QgaWZuYW1lICosIGludCAqKTsKK2ludCBkb3Qzc3RhdHNfaW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlIChzdHJ1Y3QgaWZuYW1lICpsaXN0X2hlYWQpOworaW50IGRvdDNzdGF0c19pbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQgKGludCBmZCwgY29uc3QgY2hhciAqbmFtZSk7CitpbnQgX2RvdDNTdGF0c19pb2N0bF9nZXQoaW50IGZkLCBpbnQgd2hpY2gsIHN0cnVjdCBpZnJlcSAqaWZycSwgY29uc3QgY2hhciogbmFtZSk7CitpbnQgaW50ZXJmYWNlX2lvY3RsX2RvdDNzdGF0c19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgaW50IGZkLCBjb25zdCBjaGFyKiBuYW1lKTsKK2ludCBpbnRlcmZhY2VfaW9jdGxfZG90M3N0YXRzX2R1cGxleF9nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgaW50IGZkLCBjb25zdCBjaGFyKiBuYW1lKTsKKworCisvKiBmb3IgbWFpbnRhaW5hYmlsaXR5ICovCisKKyNkZWZpbmUgSU5URUxfUkVDRUlWRV9BTElHTl9FUlJPUlMgICAgICAgICAgICAgICAgICAgICAgInJ4X2FsaWduX2Vycm9ycyIKKyNkZWZpbmUgQlJPQURDT01fUkVDRUlWRV9BTElHTl9FUlJPUlMgICAgICAgICAgICAgICAgICAgSU5URUxfUkVDRUlWRV9BTElHTl9FUlJPUlMKKworI2RlZmluZSBJTlRFTF9UUkFOU01JVF9NVUxUSVBMRV9DT0xMSVNJT05TICAgICAgICAgICAgICAidHhfbXVsdGlfY29sbF9vayIKKyNkZWZpbmUgQlJPQURDT01fVFJBTlNNSVRfTVVMVElQTEVfQ09MTElTSU9OU19CTlgyICAgICAgInR4X211bHRpX2NvbGxpc2lvbnMiCisjZGVmaW5lIEJST0FEQ09NX1RSQU5TTUlUX01VTFRJUExFX0NPTExJU0lPTlNfVEczICAgICAgICJ0eF9tdWx0X2NvbGxpc2lvbnMiCisKKyNkZWZpbmUgSU5URUxfVFJBTlNNSVRfTEFURV9DT0xMSVNJT05TICAgICAgICAgICAgICAgICAgInR4X2Fib3J0X2xhdGVfY29sbCIKKyNkZWZpbmUgQlJPQURDT01fVFJBTlNNSVRfTEFURV9DT0xMSVNJT05TICAgICAgICAgICAgICAgInR4X2xhdGVfY29sbGlzaW9ucyIKKworI2RlZmluZSBJTlRFTF9UUkFOU01JVF9TSU5HTEVfQ09MTElTSU9OUyAgICAgICAgICAgICAgICAidHhfc2luZ2xlX2NvbGxfb2siCisjZGVmaW5lIEJST0FEQ09NX1RSQU5TTUlUX1NJTkdMRV9DT0xMSVNJT05TICAgICAgICAgICAgICJ0eF9zaW5nbGVfY29sbGlzaW9ucyIKKworI2RlZmluZSBCUk9BRENPTV9UUkFOU01JVF9FWENFU1NfQ09MTElTSU9OU19CTlgyICAgICAgICAidHhfZXhjZXNzX2NvbGxpc2lvbnMiCisjZGVmaW5lIEJST0FEQ09NX1RSQU5TTUlUX0VYQ0VTU19DT0xMSVNJT05TX1RHMyAgICAgICAgICJ0eF9leGNlc3NpdmVfY29sbGlzaW9ucyIKKworCisjZGVmaW5lIERPVDNTVEFUU0FMSUdOTUVOVEVSUk9SUyh4KSAgICAgICAgICAgIHN0cnN0cih4LCBJTlRFTF9SRUNFSVZFX0FMSUdOX0VSUk9SUykKKworI2RlZmluZSBET1QzU1RBVFNNVUxUSVBMRUNPTExJU0lPTkZSQU1FUyh4KSAgICAoc3Ryc3RyKHgsIElOVEVMX1RSQU5TTUlUX01VTFRJUExFX0NPTExJU0lPTlMpKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJzdHIoeCwgQlJPQURDT01fVFJBTlNNSVRfTVVMVElQTEVfQ09MTElTSU9OU19CTlgyKSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Ryc3RyKHgsIEJST0FEQ09NX1RSQU5TTUlUX01VTFRJUExFX0NPTExJU0lPTlNfVEczKSkKKworI2RlZmluZSBET1QzU1RBVFNMQVRFQ09MTElTSU9OUyh4KSAgICAgICAgICAgICAoc3Ryc3RyKHgsIElOVEVMX1RSQU5TTUlUX0xBVEVfQ09MTElTSU9OUykpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnN0cih4LCBCUk9BRENPTV9UUkFOU01JVF9MQVRFX0NPTExJU0lPTlMpKQorCisjZGVmaW5lIERPVDNTVEFUU1NJTkdMRUNPTExJU0lPTkZSQU1FUyh4KSAgICAgIChzdHJzdHIoeCwgSU5URUxfVFJBTlNNSVRfU0lOR0xFX0NPTExJU0lPTlMpKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJzdHIoeCwgQlJPQURDT01fVFJBTlNNSVRfU0lOR0xFX0NPTExJU0lPTlMpKQorCisjZGVmaW5lIERPVDNTVEFUU0VYQ0VTU0lWRUNPTExJU0lPTlMoeCkgICAgICAgIChzdHJzdHIoeCwgQlJPQURDT01fVFJBTlNNSVRfRVhDRVNTX0NPTExJU0lPTlNfQk5YMikpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnN0cih4LCBCUk9BRENPTV9UUkFOU01JVF9FWENFU1NfQ09MTElTSU9OU19URzMpKQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMKaW5kZXggMGNlODE3Yi4uNTg2OWQzNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYwpAQCAtMTYsMzggKzE2LDEzIEBACiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLS8qCi0gKiBuZWVkZWQgYnkgdXRpbF9mdW5jcy5oIAotICovCi0jaWYgVElNRV9XSVRIX1NZU19USU1FCi0jIGlmZGVmIFdJTjMyCi0jICBpbmNsdWRlIDxzeXMvdGltZWIuaD4KLSMgZWxzZQotIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSMgZW5kaWYKLSMgaW5jbHVkZSA8dGltZS5oPgotI2Vsc2UKLSMgaWYgSEFWRV9TWVNfVElNRV9ICi0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBlbHNlCi0jICBpbmNsdWRlIDx0aW1lLmg+Ci0jIGVuZGlmCi0jZW5kaWYKLQotI2lmIEhBVkVfV0lOU09DS19ICi0jaW5jbHVkZSA8d2luc29jay5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogLyoKICAqIGhlYWRlcl9nZW5lcmljKCkgY29tZXMgZnJvbSBoZXJlIAogICovCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKIAogLyoKICAqIGluY2x1ZGUgb3VyIC5oIGZpbGUgCkBAIC0xMDYsNyArODEsNyBAQAogICAgICAqICAgICAgMjogQVNOX09DVEVUX1NUUjoKICAgICAgKiAgICAgICAgICBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LgogICAgICAqICAgICAgICAgIFZhbGlkIHR5cGVzIGFyZSBsaXN0ZWQgaW4gPHNubXBfaW1wbC5oPgotICAgICAqICAgICAgMzogUk9OTFkgKG9yIFJXUklURSk6CisgICAgICogICAgICAzOiBORVRTTk1QX09MREFQSV9ST05MWSAob3IgTkVUU05NUF9PTERBUElfUldSSVRFKToKICAgICAgKiAgICAgICAgICBXaGV0aGVyIHRoaXMgb2JqZWN0IGNhbiBiZSBTRVQgb3Igbm90LgogICAgICAqICAgICAgNDogdmFyX2V4YW1wbGU6CiAgICAgICogICAgICAgICAgVGhlIGNhbGxiYWNrIHJvdXRpbmUsIHVzZWQgd2hlbiB0aGUgb2JqZWN0IGlzIHF1ZXJpZWQuCkBAIC0xMjIsMTUgKzk3LDI0IEBACiAgICAgICogICAgICAgICAgICB0byBvYnRhaW4gdGhlIGZ1bGwgT0lEIG9mIGVhY2ggZW50cnkuCiAgICAgICovCiBzdHJ1Y3QgdmFyaWFibGUyIGV4YW1wbGVfdmFyaWFibGVzW10gPSB7Ci0gICAge0VYQU1QTEVTVFJJTkcsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXhhbXBsZSwgMSwgezF9fSwKLSAgICB7RVhBTVBMRUlOVEVHRVIsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leGFtcGxlLCAyLCB7MiwgMX19LAotICAgIHtFWEFNUExFT0JKRUNUSUQsIEFTTl9PQkpFQ1RfSUQsIFJPTkxZLCB2YXJfZXhhbXBsZSwgMiwgezIsIDJ9fSwKLSAgICB7RVhBTVBMRVRJTUVUSUNLUywgQVNOX1RJTUVUSUNLUywgUk9OTFksIHZhcl9leGFtcGxlLCAxLCB7M319LAotICAgIHtFWEFNUExFSVBBRERSRVNTLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2V4YW1wbGUsIDEsIHs0fX0sCi0gICAge0VYQU1QTEVDT1VOVEVSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leGFtcGxlLCAxLCB7NX19LAotICAgIHtFWEFNUExFR0FVR0UsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9leGFtcGxlLCAxLCB7Nn19LAotICAgIHtFWEFNUExFVFJJR0dFUlRSQVAsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leGFtcGxlLCAxLCB7N319LAotICAgIHtFWEFNUExFVFJJR0dFUlRSQVAyLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXhhbXBsZSwgMSwgezh9fQorICAgIHtFWEFNUExFU1RSSU5HLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4YW1wbGUsIDEsIHsxfX0sCisgICAge0VYQU1QTEVJTlRFR0VSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXhhbXBsZSwgMiwgezIsIDF9fSwKKyAgICB7RVhBTVBMRU9CSkVDVElELCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4YW1wbGUsIDIsIHsyLCAyfX0sCisgICAge0VYQU1QTEVUSU1FVElDS1MsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhhbXBsZSwgMSwgezN9fSwKKyAgICB7RVhBTVBMRUlQQUREUkVTUywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leGFtcGxlLCAxLCB7NH19LAorICAgIHtFWEFNUExFQ09VTlRFUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhhbXBsZSwgMSwgezV9fSwKKyAgICB7RVhBTVBMRUdBVUdFLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhhbXBsZSwgMSwgezZ9fSwKKyAgICB7RVhBTVBMRVRSSUdHRVJUUkFQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXhhbXBsZSwgMSwgezd9fSwKKyAgICB7RVhBTVBMRVRSSUdHRVJUUkFQMiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4YW1wbGUsIDEsIHs4fX0KIH07CiAKICAgICAvKgpAQCAtMzM5LDcgKzMyMyw3IEBACiAgICAgICovCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKICAgICBjYXNlIEVYQU1QTEVTVFJJTkc6Ci0gICAgICAgIHNwcmludGYoc3RyaW5nLCBleGFtcGxlX3N0cik7CisgICAgICAgIHN0cmNweShzdHJpbmcsIGV4YW1wbGVfc3RyKTsKICAgICAgICAgLyoKICAgICAgICAgICogTm90ZSB0aGF0IHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIGFuc3dlciB3aWxsIGJlIGFuCiAgICAgICAgICAqICBpbnRlZ2VyIGRvZXMgbm90IGhvbGQgdHJ1ZSBpbiB0aGlzIGNhc2UsIHNvIHRoZSBsZW5ndGgKQEAgLTQ2OCwxMyArNDUyLDE0IEBACiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdUWVBFOwogICAgICAgICB9CiAgICAgICAgIGlmICh2YXJfdmFsX2xlbiA+IHNpemVvZihsb25nKSkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImV4YW1wbGUiLCAid3JvbmcgbGVuZ3RoICV4IiwgdmFyX3ZhbF9sZW4pKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJleGFtcGxlIiwgIndyb25nIGxlbmd0aCAlIiBORVRTTk1QX1BSSXogInUiLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFyX3ZhbF9sZW4pKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0xFTkdUSDsKICAgICAgICAgfQogCiAgICAgICAgIGludHZhbCA9ICooKGxvbmcgKikgdmFyX3ZhbCk7CiAgICAgICAgIGlmIChpbnR2YWwgPiBNQVhfRVhBTVBMRV9JTlQpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJleGFtcGxlIiwgIndyb25nIHZhbHVlICV4IiwgaW50dmFsKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZXhhbXBsZSIsICJ3cm9uZyB2YWx1ZSAlbHgiLCBpbnR2YWwpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNTUzLDEzICs1MzgsMTQgQEAKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHZhcl92YWxfbGVuID4gc2l6ZW9mKGxvbmcpKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgiZXhhbXBsZSIsICJ3cm9uZyBsZW5ndGggJXgiLCB2YXJfdmFsX2xlbikpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImV4YW1wbGUiLCAid3JvbmcgbGVuZ3RoICUiIE5FVFNOTVBfUFJJeiAidSIsCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJfdmFsX2xlbikpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOwogICAgICAgICB9CiAKICAgICAgICAgaW50dmFsID0gKigobG9uZyAqKSB2YXJfdmFsKTsKICAgICAgICAgaWYgKGludHZhbCAhPSAxKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgiZXhhbXBsZSIsICJ3cm9uZyB2YWx1ZSAleCIsIGludHZhbCkpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImV4YW1wbGUiLCAid3JvbmcgdmFsdWUgJWx4IiwgaW50dmFsKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdWQUxVRTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTYyMCwxMCArNjA2LDEwIEBACiAgKiBzZWNvbmQgc2luY2UgdGhlIG5ldHdvayBtYW5hZ2VtZW50IHBvcnRpb24gb2Ygc3lzdGVtIHdhcyBsYXN0CiAgKiByZWluaXRpYWxpemVkLiAgLSBzbm1wVHJhcE9JRC4wIHdoaWNoIGlzIHBhcnQgb2YgdGhlIHRyYXAgZ3JvdXAgU05NUHYyCiAgKiBNSUIgd2hvc2UgdmFsdWUgaXMgdGhlIG9iamVjdC1pZCBvZiB0aGUgc3BlY2lmaWMgdHJhcCB5b3UgaGF2ZSBkZWZpbmVkCi0gKiBpbiB5b3VyIG93biBNSUIuICBPdGhlciB2YXJpYWJsZXMgY2FuIGJlIGFkZGVkIHRvIGNhcmFjdGVyaXplIHRoZQorICogaW4geW91ciBvd24gTUlCLiAgT3RoZXIgdmFyaWFibGVzIGNhbiBiZSBhZGRlZCB0byBjaGFyYWN0ZXJpemUgdGhlCiAgKiB0cmFwLgogICogCi0gKiBUaGUgZnVuY3Rpb24gc2VuZF92MnRyYXAgYWRkcyBhdXRvbWF0aWNhbGx5cyB0aGUgdHdvIG9iamVjdHMgYnV0IHRoZQorICogVGhlIGZ1bmN0aW9uIHNlbmRfdjJ0cmFwIGFkZHMgYXV0b21hdGljYWxseSB0aGUgdHdvIG9iamVjdHMgYnV0IHRoZQogICogdmFsdWUgb2Ygc25tcFRyYXBPSUQuMCBpcyAwLjAgYnkgZGVmYXVsdC4gSWYgeW91IHdhbnQgdG8gYWRkIHlvdXIgdHJhcAogICogbmFtZSwgeW91IGhhdmUgdG8gcmVjb25zdHJ1Y3QgdGhpcyBvYmplY3QgYW5kIHRvIGFkZCB5b3VyIG93bgogICogdmFyaWFibGUuCkBAIC02NjMsMTMgKzY0OSwxNCBAQAogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKICAgICAgICAgfQogICAgICAgICBpZiAodmFyX3ZhbF9sZW4gPiBzaXplb2YobG9uZykpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJleGFtcGxlIiwgIndyb25nIGxlbmd0aCAleCIsIHZhcl92YWxfbGVuKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZXhhbXBsZSIsICJ3cm9uZyBsZW5ndGggJSIgTkVUU05NUF9QUkl6ICJ1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcl92YWxfbGVuKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdMRU5HVEg7CiAgICAgICAgIH0KIAogICAgICAgICBpbnR2YWwgPSAqKChsb25nICopIHZhcl92YWwpOwogICAgICAgICBpZiAoaW50dmFsICE9IDEpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJleGFtcGxlIiwgIndyb25nIHZhbHVlICV4IiwgaW50dmFsKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZXhhbXBsZSIsICJ3cm9uZyB2YWx1ZSAlbHgiLCBpbnR2YWwpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oCmluZGV4IDlkZTU3NDguLjA0YjczZTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaAorKysgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmgKQEAgLTE0LDEwICsxNCwxMCBAQAogI2VuZGlmCiAKICAgICAvKgotICAgICAqIFdlIHVzZSAnaGVhZGVyX2dlbmVyaWMnIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlLAorICAgICAqIFdlIHVzZSAnaGVhZGVyX2dlbmVyaWMnIGZyb20gdGhlIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMgbW9kdWxlLAogICAgICAqICBzbyBtYWtlIHN1cmUgdGhpcyBtb2R1bGUgaXMgaW5jbHVkZWQgaW4gdGhlIGFnZW50LgogICAgICAqLwotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiAKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYwppbmRleCAzNmFiN2UzLi43ZjFlZGFlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMKQEAgLTExNCwxOSArMTE0LDE1IEBACiAKICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKICAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGFibGVfaW5mbzsKLSAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcjsKICAgICBzdHJ1Y3QgY29tbWl0SW5mbyAqY2kgPSBOVUxMOwogCiAgICAgdm9pZCAgICAgICAgICAgKmRhdGFfY29udGV4dCA9IE5VTEw7CiAKLSAgICBvaWQgICAgICAgICAgICAqc3VmZml4OwotICAgIHNpemVfdCAgICAgICAgICBzdWZmaXhfbGVuOwotCiAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgIC8qIGNvbHVtbiBhbmQgcm93IGluZGV4IGVuY29kZWQgcG9ydGlvbiAqLwotICAgICAgICB2YXIgPSByZXF1ZXN0LT5yZXF1ZXN0dmI7Ci0gICAgICAgIHN1ZmZpeCAgICAgPSB2YXItPm5hbWUgKyByZWdpbmZvLT5yb290b2lkX2xlbiArIDE7Ci0gICAgICAgIHN1ZmZpeF9sZW4gPSB2YXItPm5hbWVfbGVuZ3RoIC0gKHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMSk7CisgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyID0gcmVxdWVzdC0+cmVxdWVzdHZiOworICAgICAgICBjb25zdCBvaWQgKiBjb25zdCBzdWZmaXggPSB2YXItPm5hbWUgKyByZWdpbmZvLT5yb290b2lkX2xlbiArIDE7CisgICAgICAgIGNvbnN0IHNpemVfdCBzdWZmaXhfbGVuID0gdmFyLT5uYW1lX2xlbmd0aCAtIChyZWdpbmZvLT5yb290b2lkX2xlbiArIDEpOwogCiAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQgIT0gMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5jIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5jCmluZGV4IDk3YThmNDcuLmVhOTBhYjYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuYworKysgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmMKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAidWNkRGVtb1B1YmxpYy5oIgogCiAjZGVmaW5lIE1ZTUFYIDEwMjQKQEAgLTczLDExICs3MywxNCBAQAogICovCiAKIHN0cnVjdCB2YXJpYWJsZTIgdWNkRGVtb1B1YmxpY192YXJpYWJsZXNbXSA9IHsKLSAgICB7VUNEREVNT1JFU0VUS0VZUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3VjZERlbW9QdWJsaWMsIDEsIHsxfX0sCi0gICAge1VDRERFTU9QVUJMSUNTVFJJTkcsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3VjZERlbW9QdWJsaWMsIDEsCi0gICAgIHsyfX0sCi0gICAge1VDRERFTU9VU0VSTElTVCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdWNkRGVtb1B1YmxpYywgMSwgezN9fSwKLSAgICB7VUNEREVNT1BBU1NQSFJBU0UsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3VjZERlbW9QdWJsaWMsIDEsIHs0fX0sCisgICAge1VDRERFTU9SRVNFVEtFWVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91Y2REZW1vUHVibGljLCAxLCB7MX19LAorICAgIHtVQ0RERU1PUFVCTElDU1RSSU5HLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91Y2REZW1vUHVibGljLCAxLCB7Mn19LAorICAgIHtVQ0RERU1PVVNFUkxJU1QsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VjZERlbW9QdWJsaWMsIDEsIHszfX0sCisgICAge1VDRERFTU9QQVNTUEhSQVNFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91Y2REZW1vUHVibGljLCAxLCB7NH19LAogCiB9OwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmggYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmgKaW5kZXggZmQ5ZjEyZi4uMjUzZjRmZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuaApAQCAtNiwxMCArNiwxMCBAQAogI2RlZmluZSBfTUlCR1JPVVBfVUNEREVNT1BVQkxJQ19ICiAKIC8qCi0gKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgYW5kIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAorICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlCiAgKi8KIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy93YXRjaGVkLmMgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy93YXRjaGVkLmMKaW5kZXggNTgxMjJjNC4uYjQ4NmJhYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL3dhdGNoZWQuYwpAQCAtNDUsNyArNDUsNyBAQAogICAgICAqIHZhcmlhYmxlcyBuZWVkZWQgZm9yIHJlZ2lzdHJhdGlvbgogICAgICAqLwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87Ci0gICAgbmV0c25tcF93YXRjaGVyX2luZm8gKndhdGNoZXJfaW5mbzsKKyAgICBzdGF0aWMgbmV0c25tcF93YXRjaGVyX2luZm8gd2F0Y2hlcl9pbmZvOwogICAgIGludCB3YXRjaGVyX2ZsYWdzOwogCiAgICAgLyoKQEAgLTU3LDggKzU3LDYgQEAKICAgICAgICAgICAgICAgICBteV9zdHJpbmcpKTsKIAogICAgIC8qCi0gICAgICogY3JlYXRlIHRoZSByZWdpc3RyYXRpb24gaW5mbyBmb3Igb3VyIHN0cmluZy4gSWYgeW91IHdhbnQgdG8KLSAgICAgKgogICAgICAqIElmIHdlIHdhbnRlZCBhIGNhbGxiYWNrIHdoZW4gdGhlIHZhbHVlIHdhcyByZXRyaWV2ZWQgb3Igc2V0CiAgICAgICogKGV2ZW4gdGhvdWdoIHRoZSBkZXRhaWxzIG9mIGRvaW5nIHRoaXMgYXJlIGhhbmRsZWQgZm9yIHlvdSksCiAgICAgICogeW91IGNvdWxkIGNoYW5nZSB0aGUgTlVMTCBwb2ludGVyIGJlbG93IHRvIGEgdmFsaWQgaGFuZGxlcgpAQCAtNzIsMzIgKzcwLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIC8qCi0gICAgICogdGhlIHR3byBvcHRpb25zIGZvciBhIHN0cmluZyB3YXRjaGVyIGFyZToKKyAgICAgKiB0aGUgdGhyZWUgb3B0aW9ucyBmb3IgYSBzdHJpbmcgd2F0Y2hlciBhcmU6CiAgICAgICogICBmaXhlZCBzaXplIHN0cmluZyAobGVuZ3RoIG5ldmVyIGNoYW5nZXMpCiAgICAgICogICB2YXJpYWJsZSBzaXplIChsZW5ndGggY2FuIGJlIDAgLSBNQVgsIGZvciBzb21lIE1BWCkKKyAgICAgKiAgIGMgc3RyaW5nIChsZW5ndGggY2FuIGJlIDAgLSBNQVgtMSBmb3Igc29tZSBtYXgsIFwwIGlzIG5vdCBhIHZhbGlkCisgICAgICogICAgIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLCB0aGUgbGVuZ3RoIGlzIHByb3ZpZGVkIGJ5IHN0cmxlbikKICAgICAgKgogICAgICAqIHdlJ2xsIHVzZSBhIHZhcmlhYmxlIGxlbmd0aCBzdHJpbmcuCiAgICAgICovCiAgICAgd2F0Y2hlcl9mbGFncyA9IFdBVENIRVJfTUFYX1NJWkU7CiAKICAgICAvKgotICAgICAqIGNyZWF0ZSB0aGUgd2F0Y2hlciBpbmZvIGZvciBvdXIgc3RyaW5nLCBhbmQgc2V0IHRoZSBtYXggc2l6ZS4KKyAgICAgKiBjcmVhdGUgdGhlIHdhdGNoZXIgaW5mbyBmb3Igb3VyIHN0cmluZy4KICAgICAgKi8KLSAgICB3YXRjaGVyX2luZm8gPQotICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8obXlfc3RyaW5nLCBzdHJsZW4obXlfc3RyaW5nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9PQ1RFVF9TVFIsIHdhdGNoZXJfZmxhZ3MpOwotICAgIHdhdGNoZXJfaW5mby0+bWF4X3NpemUgPSBzaXplb2YobXlfc3RyaW5nKTsKKyAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvNigmd2F0Y2hlcl9pbmZvLCBteV9zdHJpbmcsIHN0cmxlbihteV9zdHJpbmcpLAorCQkJICAgICAgIEFTTl9PQ1RFVF9TVFIsIHdhdGNoZXJfZmxhZ3MsCisJCQkgICAgICAgc2l6ZW9mKG15X3N0cmluZyksIE5VTEwpOwogCiAgICAgLyoKICAgICAgKiB0aGUgbGluZSBiZWxvdyByZWdpc3RlcnMgb3VyICJteV9zdHJpbmciIHZhcmlhYmxlIGFib3ZlIGFzCiAgICAgICogYWNjZXNzaWJsZSBhbmQgbWFrZXMgaXQgd3JpdGFibGUuIAotICAgICAqIAotICAgICAqIElmIHdlIHdhbnRlZCBhIGNhbGxiYWNrIHdoZW4gdGhlIHZhbHVlIHdhcyByZXRyaWV2ZWQgb3Igc2V0Ci0gICAgICogKGV2ZW4gdGhvdWdoIHRoZSBkZXRhaWxzIG9mIGRvaW5nIHRoaXMgYXJlIGhhbmRsZWQgZm9yIHlvdSksCi0gICAgICogeW91IGNvdWxkIGNoYW5nZSB0aGUgTlVMTCBwb2ludGVyIGJlbG93IHRvIGEgdmFsaWQgaGFuZGxlcgotICAgICAqIGZ1bmN0aW9uLiAKICAgICAgKi8KLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UocmVnaW5mbywgd2F0Y2hlcl9pbmZvKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UocmVnaW5mbywgJndhdGNoZXJfaW5mbyk7CiAKICAgICBERUJVR01TR1RMKCgiZXhhbXBsZV9zdHJpbmdfaW5zdGFuY2UiLAogICAgICAgICAgICAgICAgICJEb25lIGluaXRhbGl6aW5nIGV4YW1wbGUgc3RyaW5nIGluc3RhbmNlXG4iKSk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oCmluZGV4IGVkZDMzODcuLjVlNDJlOTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oCkBAIC0xNSw3ICsxNSw3IEBACiAjZWxpZiBkZWZpbmVkKGRyYWdvbmZseSkKIGNvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL2NwdS9jcHVfa2luZm8pCiAKLSNlbGlmIChkZWZpbmVkKG5ldGJzZCkgfHwgZGVmaW5lZChuZXRic2QxKSB8fCBkZWZpbmVkKG5ldGJzZGVsZikgfHwgZGVmaW5lZChuZXRic2RlbGYyKXx8IGRlZmluZWQobmV0YnNkZWxmMykgfHwgZGVmaW5lZChvcGVuYnNkKSB8fCBkZWZpbmVkKGZyZWVic2Q0KSAgfHwgZGVmaW5lZChmcmVlYnNkNSkgfHwgZGVmaW5lZChmcmVlYnNkNikpCisjZWxpZiAoZGVmaW5lZChuZXRic2QpIHx8IGRlZmluZWQobmV0YnNkMSkgfHwgZGVmaW5lZChuZXRic2RlbGYpIHx8IGRlZmluZWQobmV0YnNkZWxmMil8fCBkZWZpbmVkKG5ldGJzZGVsZjMpIHx8IGRlZmluZWQob3BlbmJzZCkgfHwgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChmcmVlYnNkNSkgfHwgZGVmaW5lZChmcmVlYnNkNikpCiBjb25maWdfcmVxdWlyZShoYXJkd2FyZS9jcHUvY3B1X3N5c2N0bCkKIAogI2VsaWYgKGRlZmluZWQoZnJlZWJzZDIpIHx8IGRlZmluZWQoZnJlZWJzZDMpKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9rc3RhdC5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9rc3RhdC5jCmluZGV4IGUxNmFmYjcuLjJlOGRiMjUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa3N0YXQuYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tzdGF0LmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgICAgICAgICAgaSAgICA9IGtzcC0+a3NfaW5zdGFuY2U7CiAgICAgICAgICAgICBjcHUyID0gbmV0c25tcF9jcHVfZ2V0X2J5SWR4KCBpLCAwICk7CiAgICAgICAgICAgICBpZiAoICFjcHUyICkgIAotICAgICAgICAgICAgICAgIGJyZWFrOyAgIC8qIG9yIGNvbnRpbnVlID8gKi8gICAgLyogU2tpcCBuZXcgQ1BVcyAqLworICAgICAgICAgICAgICAgIGJyZWFrOyAgIC8qIG9yIGNvbnRpbnVlID8gKi8gIC8qIFNraXAgbmV3IENQVXMgKi8KICAgICAgICAgICAgIGlmICgoa3NwLT5rc190eXBlICE9IEtTVEFUX1RZUEVfUkFXKSB8fAogICAgICAgICAgICAgICAgIChrc3AtPmtzX2RhdGFfc2l6ZSAhPSBzaXplb2YoY3MpKXx8CiAgICAgICAgICAgICAgICAgKGtzdGF0X3JlYWQoa3N0YXRfZmQsIGtzcCwgJmNzKSA9PSAtMSkpIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYwppbmRleCBlMjdlMTJlLi4yMWNiMWFhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jCkBAIC01Nyw3ICs1Nyw3IEBACiAjZW5kaWYKICAgICAgICAgfQogI2lmIGRlZmluZWQoX19zMzkwX18pIHx8IGRlZmluZWQoX19zMzkweF9fKQotCS8qIHMzOTAgbWF5IGRpZmZlcmVudCBmb3JtYXQgb2YgQ1BVX0ZJTEUgKi8KKwkvKiBzMzkwIG1heSBoYXZlIGRpZmZlcmVudCBmb3JtYXQgb2YgQ1BVX0ZJTEUgKi8KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoc3NjYW5mKCBidWYsICJwcm9jZXNzb3IgJWQ6IiwgJmkgKSA9PSAxKSAgewogICAgICAgICAgICAgICAgIG4rKzsKQEAgLTIzMiw3ICsyMzIsNiBAQAogCSAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2xvc2Uodm1zdGF0ZmQpOwotCiAgICAgICAgIGlmICggYnl0ZXNfcmVhZCA8IDAgKSB7CiAgICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoVk1TVEFUX0ZJTEUgInJlYWQgZXJyb3IiKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jCmluZGV4IGM2MTAyNjkuLjU4MzI4YTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYwpAQCAtMTAzLDggKzEwMywxMyBAQAogICAgICNkZWZpbmUgTlNfVk1fU1dUQ0gJCXN3dGNoCiAgICAgI2RlZmluZSBOU19WTV9QQUdFSU4JcGFnZWlucwogICAgICNkZWZpbmUgTlNfVk1fUEFHRU9VVAlwZHBhZ2VvdXRzCisjaWZkZWYgSEFWRV9TVFJVQ1RfVVZNRVhQX1BHU1dBUElOCisgICAgI2RlZmluZSBOU19WTV9TV0FQSU4JcGdzd2FwaW4KKyAgICAjZGVmaW5lIE5TX1ZNX1NXQVBPVVQJcGdzd2Fwb3V0CisjZWxzZQogICAgICNkZWZpbmUgTlNfVk1fU1dBUElOCXN3YXBpbnMKICAgICAjZGVmaW5lIE5TX1ZNX1NXQVBPVVQJc3dhcG91dHMKKyNlbmRpZgogCiAjaWYgZGVmaW5lZChWTV9VVk1FWFAyKSAgICAgICAgICAgICAgICAgICAvKiBOZXRCU0QgMS42KyAqLwogI2RlZmluZSBORVRTTk1QX1ZNX1NUQVRTICAgICAgIFZNX1VWTUVYUDIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTAyMmZmCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy5oCkBAIC0wLDAgKzEsOCBAQAorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvZnN5cy9od19mc3lzKQorI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsKQorI2VsaWYgZGVmaW5lZChIQVZFX0dFVFZGU1NUQVQpIHx8IGRlZmluZWQoSEFWRV9HRVRGU1NUQVQpCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cykKKyNlbHNlCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50KQorI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cy5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzAwZTAzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYwpAQCAtMCwwICsxLDE2MiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmg+CisjaW5jbHVkZSAiaGFyZHdhcmUvZnN5cy9od19mc3lzLmgiCisKKyNpZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19NT1VOVF9ICisjaW5jbHVkZSA8c3lzL21vdW50Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TVEFUVkZTX0gKKyNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgorI2VuZGlmCisKKworICAgIC8qCisgICAgICogSGFuZGxlIG1pbm9yIG5hbWluZyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHN0YXRmcy9zdGF0dmZzCisgICAgICovCisjaWYgZGVmaW5lZChfVkZTX05BTUVMRU4pCisjZGVmaW5lIE5TRlNfTkFNRUxFTiAgX1ZGU19OQU1FTEVOCisjZWxzZQorI2RlZmluZSBOU0ZTX05BTUVMRU4gIE1OQU1FTEVOCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9HRVRWRlNTVEFUKSAmJiBkZWZpbmVkKF9fTmV0QlNEX18pCisjZGVmaW5lIE5TRlNfR0VURlNTVEFUICBnZXR2ZnNzdGF0CisjZGVmaW5lIE5TRlNfU1RBVEZTICAgICBzdGF0dmZzCisjZGVmaW5lIE5TRlNfRkxBR1MgICAgICBmX2ZsYWcKKyNlbHNlCisjZGVmaW5lIE5TRlNfR0VURlNTVEFUICBnZXRmc3N0YXQKKyNkZWZpbmUgTlNGU19TVEFURlMgICAgIHN0YXRmcworI2RlZmluZSBOU0ZTX0ZMQUdTICAgICAgZl9mbGFncworI2VuZGlmCisKK2ludAorX2ZzX3R5cGUoIGNoYXIgKnR5cGVuYW1lICkKK3sKKyAgICBERUJVR01TR1RMKCgiZnN5czp0eXBlIiwgIkNsYXNzaWZ5aW5nICVzXG4iLCB0eXBlbmFtZSkpOworCisgICAgaWYgKCAhdHlwZW5hbWUgfHwgKnR5cGVuYW1lPT0nXDAnICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX1VOS05PV047CisKKyNpbmNsdWRlICJtb3VudHMuaCIKKworICAgICAgIC8qCisgICAgICAgICogTGlzdCBvZiBtb3VudCB0eXBlcyBmcm9tIDxzeXMvbW91bnQuaD4KKyAgICAgICAgKi8KKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU9VTlRfRkZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNT1VOVF9VRlMpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0JFUktFTEVZOworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNT1VOVF9ORlMpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX05GUzsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU9VTlRfTUZTKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9NRlM7CisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1PVU5UX01TRE9TKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNT1VOVF9NU0RPU0ZTKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9GQVQ7CisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1PVU5UX0FGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfQUZTOworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNT1VOVF9DRDk2NjApICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0lTTzk2NjA7CisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1PVU5UX0VYVDJGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfRVhUMjsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU9VTlRfTlRGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfTlRGUzsKKworICAgICAgIC8qCisgICAgICAgICogTmV0QlNEIGFsc28gcmVjb2duaXNlcyB0aGUgZm9sbG93aW5nIGZpbGVzeXN0ZW0gdHlwZXM6CisgICAgICAgICogICAgIE1PVU5UX05VTEwKKyAgICAgICAgKiAgICAgTU9VTlRfT1ZFUkxBWQorICAgICAgICAqICAgICBNT1VOVF9VTUFQCisgICAgICAgICogICAgIE1PVU5UX1VOSU9OCisgICAgICAgICogICAgIE1PVU5UX0NGUy9DT0RBCisgICAgICAgICogICAgIE1PVU5UX0ZJTEVDT1JFCisgICAgICAgICogICAgIE1PVU5UX1NNQkZTCisgICAgICAgICogICAgIE1PVU5UX1BUWUZTCisgICAgICAgICogT3BlbkJTRCBhbHNvIHJlY29nbmlzZXMgdGhlIGZvbGxvd2luZyBmaWxlc3lzdGVtIHR5cGVzOgorICAgICAgICAqICAgICBNT1VOVF9MT0ZTCisgICAgICAgICogICAgIE1PVU5UX05DUEZTCisgICAgICAgICogICAgIE1PVU5UX1hGUworICAgICAgICAqICAgICBNT1VOVF9VREYKKyAgICAgICAgKiBCb3RoIG9mIHRoZW0gcmVjb2duaXNlIHRoZSBmb2xsb3dpbmcgZmlsZXN5c3RlbSB0eXBlczoKKyAgICAgICAgKiAgICAgTU9VTlRfTEZTCisgICAgICAgICogICAgIE1PVU5UX0ZERVNDCisgICAgICAgICogICAgIE1PVU5UX1BPUlRBTAorICAgICAgICAqICAgICBNT1VOVF9LRVJORlMKKyAgICAgICAgKiAgICAgTU9VTlRfUFJPQ0ZTCisgICAgICAgICogICAgIE1PVU5UX0FET1NGUworICAgICAgICAqCisgICAgICAgICogQWxsIG9mIHRoZXNlIGZpbGVzeXN0ZW1zIGFyZSBtYXBwZWQgdG8gTkVUU05NUF9GU19UWVBFX09USEVSCisgICAgICAgICogICBzbyB3aWxsIGJlIHBpY2tlZCB1cCBieSB0aGUgZm9sbG93aW5nIGRlZmF1bHQgYnJhbmNoLgorICAgICAgICAqLworICAgIGVsc2UKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX09USEVSOworfQorCit2b2lkCituZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCB2b2lkICkKK3sKKyAgICByZXR1cm47Cit9CisKK3ZvaWQKK25ldHNubXBfZnN5c19hcmNoX2xvYWQoIHZvaWQgKQoreworICAgIGludCBuLCBpOworICAgIHN0cnVjdCBOU0ZTX1NUQVRGUyAqc3RhdHM7CisgICAgbmV0c25tcF9mc3lzX2luZm8gKmVudHJ5OworCisgICAgLyoKKyAgICAgKiBSZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IG1vdW50ZWQgZmlsZXN5c3RlbXMuLi4KKyAgICAgKi8KKyAgICBuID0gTlNGU19HRVRGU1NUQVQoIE5VTEwsIDAsIDAgKTsKKyAgICBpZiAoIG49PTAgKQorICAgICAgICByZXR1cm47CisgICAgc3RhdHMgPSBtYWxsb2MoIG4gKiBzaXplb2YoIHN0cnVjdCBOU0ZTX1NUQVRGUyApKTsKKyAgICBuID0gTlNGU19HRVRGU1NUQVQoIHN0YXRzLCBuICogc2l6ZW9mKCBzdHJ1Y3QgTlNGU19TVEFURlMgKSwgTU5UX05PV0FJVCApOworCisgICAgLyoKKyAgICAgKiAuLi4gYW5kIGluc2VydCB0aGlzIGludG8gdGhlIGZpbGVzeXN0ZW0gY29udGFpbmVyLgorICAgICAqLworICAgIGZvciAoIGk9MDsgaTxuOyBpKysgKSB7CisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9mc3lzX2J5X3BhdGgoIHN0YXRzW2ldLmZfbW50b25uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0ZTX0ZJTkRfQ1JFQVRFICk7CisgICAgICAgIGlmICghZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzdHJsY3B5KCBlbnRyeS0+cGF0aCwgICBzdGF0c1tpXS5mX21udG9ubmFtZSwgICBzaXplb2YoZW50cnktPnBhdGgpKTsKKyAgICAgICAgZW50cnktPnBhdGhbc2l6ZW9mKGVudHJ5LT5wYXRoKS0xXSA9ICdcMCc7CisgICAgICAgIHN0cmxjcHkoIGVudHJ5LT5kZXZpY2UsIHN0YXRzW2ldLmZfbW50ZnJvbW5hbWUsIHNpemVvZihlbnRyeS0+ZGV2aWNlKSk7CisgICAgICAgIGVudHJ5LT5kZXZpY2Vbc2l6ZW9mKGVudHJ5LT5kZXZpY2UpLTFdID0gJ1wwJzsKKyAgICAgICAgZW50cnktPnVuaXRzID0gc3RhdHNbaV0uZl9ic2l6ZTsgICAgLyogb3IgZl9mcnNpemUgKi8KKyAgICAgICAgZW50cnktPnNpemUgID0gc3RhdHNbaV0uZl9ibG9ja3M7CisgICAgICAgIGVudHJ5LT51c2VkICA9IChzdGF0c1tpXS5mX2Jsb2NrcyAtIHN0YXRzW2ldLmZfYmZyZWUpOworICAgICAgICAvKiBlbnRyeS0+YXZhaWwgaXMgY3VycmVudGx5IHVuc2lnbmVkLCBzbyBwcm90ZWN0IGFnYWluc3QgbmVnYXRpdmUKKyAgICAgICAgICogdmFsdWVzIQorICAgICAgICAgKiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIHRvIGEgc2lnbmVkIGZpZWxkLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKHN0YXRzW2ldLmZfYmF2YWlsIDwgMCkKKyAgICAgICAgICAgIGVudHJ5LT5hdmFpbCA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5LT5hdmFpbCA9IHN0YXRzW2ldLmZfYmF2YWlsOworICAgICAgICBlbnRyeS0+aW51bXNfdG90YWwgPSBzdGF0c1tpXS5mX2ZpbGVzOworICAgICAgICBlbnRyeS0+aW51bXNfYXZhaWwgPSBzdGF0c1tpXS5mX2ZmcmVlOworCisgICAgICAgIGVudHJ5LT50eXBlID0gX2ZzX3R5cGUoIHN0YXRzW2ldLmZfZnN0eXBlbmFtZSApOworICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX0FDVElWRTsKKworICAgICAgICBpZiAoISAoc3RhdHNbaV0uTlNGU19GTEFHUyAmIE1OVF9MT0NBTCApKSB7CisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX1JFTU9URTsKKyAgICAgICAgfQorICAgICAgICBpZiAoICBzdGF0c1tpXS5OU0ZTX0ZMQUdTICYgTU5UX1JET05MWSApIHsKKyAgICAgICAgICAgIGVudHJ5LT5mbGFncyB8PSBORVRTTk1QX0ZTX0ZMQUdfUk9OTFk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCAgc3RhdHNbaV0uTlNGU19GTEFHUyAmIE1OVF9ST09URlMgKSB7CisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX0JPT1RBQkxFOworICAgICAgICB9CisgICAgICAgIAorICAgIH0KK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRjdGwuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRjdGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTkxNTU3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGN0bC5jCkBAIC0wLDAgKzEsMTc4IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9TWVNfTU5UQ1RMX0gKKyNpbmNsdWRlIDxzeXMvbW50Y3RsLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19WTU9VTlRfSAorI2luY2x1ZGUgPHN5cy92bW91bnQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NUQVRGU19ICisjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU1RBVFZGU19ICisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKyNlbmRpZgorCisKK2ludAorX2ZzeXNfcmVtb3RlKCBjaGFyICpkZXZpY2UsIGludCB0eXBlLCBjaGFyICpob3N0ICkKK3sKKyAgICBpZiAoKCB0eXBlID09IE5FVFNOTVBfRlNfVFlQRV9ORlMpIHx8CisgICAgICAgICggdHlwZSA9PSBORVRTTk1QX0ZTX1RZUEVfQUZTKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworaW50CitfZnN5c190eXBlKCBpbnQgdHlwZSApCit7CisgICAgREVCVUdNU0dUTCgoImZzeXM6dHlwZSIsICJDbGFzc2lmeWluZyAlZFxuIiwgdHlwZSkpOworCisgICAgc3dpdGNoICggdHlwZSApIHsKKyAgICAgICAgY2FzZSBNTlRfQUlYOgorICAgICAgICBjYXNlIE1OVF9KRlM6CisgICAgICAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0JFUktFTEVZOworCisgICAgICAgIGNhc2UgTU5UX0NEUk9NOgorICAgICAgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9JU085NjYwOworCisgICAgICAgIGNhc2UgTU5UX05GUzoKKyAgICAgICAgY2FzZSBNTlRfTkZTMzoKKyAgICAgICAgY2FzZSBNTlRfQVVUT0ZTOgorICAgICAgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9ORlM7CisKKyAgICAvKgorICAgICAqICBUaGUgZm9sbG93aW5nIGNvZGUgY292ZXJzIHNlbGVjdGVkIGZpbGVzeXN0ZW1zCisgICAgICogICAgd2hpY2ggYXJlIG5vdCBjb3ZlcmVkIGJ5IHRoZSBIUi1UWVBFUyBlbnVtZXJhdGlvbnMsCisgICAgICogICAgYnV0IHNob3VsZCBzdGlsbCBiZSBtb25pdG9yZWQuCisgICAgICogIFRoZXNlIGFyZSBhbGwgbWFwcGVkIGludG8gdHlwZSAib3RoZXIiCisgICAgICoKKyAgICAgKi8gICAgCisjaWZkZWYgTU5UX05BTUVGUworICAgICAgICBjYXNlIE1OVF9OQU1FRlM6CisjZW5kaWYKKyNpZmRlZiBNTlRfUFJPQ0ZTCisgICAgICAgIGNhc2UgTU5UX1BST0NGUzoKKyNlbmRpZgorICAgICAgICBjYXNlIE1OVF9TRlM6CisgICAgICAgIGNhc2UgTU5UX0NBQ0hFRlM6CisgICAgICAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX09USEVSOworCisgICAgLyogICAgCisgICAgICogIEFsbCBvdGhlciB0eXBlcyBhcmUgc2lsZW50bHkgc2tpcHBlZAorICAgICAqLworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9JR05PUkU7CisgICAgfQorICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfSUdOT1JFOyAgICAvKiBOb3QgcmVhY2hlZCAqLworfQorCit2b2lkCituZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCB2b2lkICkKK3sKKyAgICByZXR1cm47Cit9CisKK3ZvaWQKK25ldHNubXBfZnN5c19hcmNoX2xvYWQoIHZvaWQgKQoreworICAgIGludCAgcmV0ICA9IDAsIGkgPSAwOworICAgIHVpbnQgc2l6ZSA9IDA7CisKKyAgICBzdHJ1Y3Qgdm1vdW50ICphaXhtbnQsICphaXhjdXJyOworICAgIGNoYXIgICAgICAgICAgKnBhdGg7CisgICAgc3RydWN0IHN0YXRmcyAgc3RhdF9idWY7CisgICAgbmV0c25tcF9mc3lzX2luZm8gKmVudHJ5OworICAgIGNoYXIgICAgICAgICAgICAgICB0bXBidWZbMTAyNF07CisKKyAgICAvKgorICAgICAqIFJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgbW91bnRlZCBmaWxlc3lzdGVtcy4uLgorICAgICAqLworICAgIHJldCA9IG1udGN0bChNQ1RMX1FVRVJZLCBzaXplb2YodWludCksICZzaXplKTsKKyAgICBpZiAoIHJldCAhPSAwIHx8IHNpemU8PTAgKSB7CisgICAgICAgIHNubXBfbG9nX3BlcnJvciggImluaXRpYWwgbW50Y3RsIGZhaWxlZCIgKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFpeG1udCA9IChzdHJ1Y3Qgdm1vdW50ICopbWFsbG9jKCBzaXplICk7CisgICAgaWYgKCBhaXhtbnQgPT0gTlVMTCApIHsKKyAgICAgICAgc25tcF9sb2dfcGVycm9yKCAiY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgbW50Y3RsIGRhdGEiICk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXQgPSBtbnRjdGwoTUNUTF9RVUVSWSwgc2l6ZSwgYWl4bW50ICk7CisgICAgaWYgKCByZXQgPD0gMCApIHsKKyAgICAgICAgZnJlZShhaXhtbnQpOworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoICJtYWluIG1udGN0bCBmYWlsZWQiICk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYWl4Y3VyciA9IGFpeG1udDsKKworCisgICAgLyoKKyAgICAgKiAuLi4gYW5kIGluc2VydCB0aGlzIGludG8gdGhlIGZpbGVzeXN0ZW0gY29udGFpbmVyLgorICAgICAqLworCisgICAgZm9yIChpID0gMDsKKyAgICAgICAgIGkgPCByZXQ7CisgICAgICAgICBpKyssIGFpeGN1cnIgPSAoc3RydWN0IHZtb3VudCAqKSAoKGNoYXIqKWFpeGN1cnIgKyBhaXhjdXJyLT52bXRfbGVuZ3RoKSApIHsKKworICAgICAgICBwYXRoID0gdm10MmRhdGFwdHIoIGFpeGN1cnIsIFZNVF9TVFVCICk7CisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9mc3lzX2J5X3BhdGgoIHBhdGgsIE5FVFNOTVBfRlNfRklORF9DUkVBVEUgKTsKKyAgICAgICAgaWYgKCFlbnRyeSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzdHJsY3B5KGVudHJ5LT5wYXRoLCBwYXRoLCBzaXplb2YoZW50cnktPnBhdGgpKTsKKyAgICAgICAgc3RybGNweShlbnRyeS0+ZGV2aWNlLCB2bXQyZGF0YXB0cihhaXhjdXJyLCBWTVRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICBzaXplb2YoZW50cnktPmRldmljZSkpOworICAgICAgICBlbnRyeS0+dHlwZSAgID0gX2ZzeXNfdHlwZSggYWl4Y3Vyci0+dm10X2dmc3R5cGUgKTsKKworICAgICAgICBpZiAoIShlbnRyeS0+dHlwZSAmIF9ORVRTTk1QX0ZTX1RZUEVfU0tJUF9CSVQpKQorICAgICAgICAgICAgZW50cnktPmZsYWdzIHw9IE5FVFNOTVBfRlNfRkxBR19BQ1RJVkU7CisKKyAgICAgICAgaWYgKCBfZnN5c19yZW1vdGUoIGVudHJ5LT5kZXZpY2UsIGVudHJ5LT50eXBlLCB2bXQyZGF0YXB0ciggYWl4Y3VyciwgVk1UX0hPU1QpICkpCisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX1JFTU9URTsKKyAgICAgICAgaWYgKCBhaXhjdXJyLT52bXRfZmxhZ3MgJiBNTlRfUkVBRE9OTFkgKQorICAgICAgICAgICAgZW50cnktPmZsYWdzIHw9IE5FVFNOTVBfRlNfRkxBR19ST05MWTsKKyAgICAgICAgLyoKKyAgICAgICAgICogIFRoZSByb290IGRldmljZSBpcyBwcmVzdW1hYmx5IGJvb3RhYmxlLgorICAgICAgICAgKiAgT3RoZXIgcGFydGl0aW9ucyBwcm9iYWJseSBhcmVuJ3QhCisgICAgICAgICAqLworICAgICAgICBpZiAoKGVudHJ5LT5wYXRoWzBdID09ICcvJykgJiYgKGVudHJ5LT5wYXRoWzFdID09ICdcMCcpKQorICAgICAgICAgICAgZW50cnktPmZsYWdzIHw9IE5FVFNOTVBfRlNfRkxBR19CT09UQUJMRTsKKworICAgICAgICAvKgorICAgICAgICAgKiAgWFhYIC0gaWRlbnRpZnkgcmVtb3ZlYWJsZSBkaXNrcworICAgICAgICAgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiAgT3B0aW9uYWxseSBza2lwIHJldHJpZXZpbmcgc3RhdGlzdGljcyBmb3IgcmVtb3RlIG1vdW50cworICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAoZW50cnktPmZsYWdzICYgTkVUU05NUF9GU19GTEFHX1JFTU9URSkgJiYKKyAgICAgICAgICAgIG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9TS0lQTkZTSU5IT1NUUkVTT1VSQ0VTKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICggc3RhdGZzKCBlbnRyeS0+cGF0aCwgJnN0YXRfYnVmICkgPCAwICkgeworICAgICAgICAgICAgc25wcmludGYoIHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJDYW5ub3Qgc3RhdGZzICVzIiwgZW50cnktPnBhdGggKTsKKyAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvciggdG1wYnVmICk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBlbnRyeS0+dW5pdHMgPSAgc3RhdF9idWYuZl9ic2l6ZTsKKyAgICAgICAgZW50cnktPnNpemUgID0gIHN0YXRfYnVmLmZfYmxvY2tzOworICAgICAgICBlbnRyeS0+dXNlZCAgPSAoc3RhdF9idWYuZl9ibG9ja3MgLSBzdGF0X2J1Zi5mX2JmcmVlKTsKKyAgICAgICAgZW50cnktPmF2YWlsID0gIHN0YXRfYnVmLmZfYmF2YWlsOworICAgICAgICBlbnRyeS0+aW51bXNfdG90YWwgPSBzdGF0X2J1Zi5mX2ZpbGVzOworICAgICAgICBlbnRyeS0+aW51bXNfYXZhaWwgPSBzdGF0X2J1Zi5mX2ZmcmVlOworICAgIH0KKyAgICBmcmVlKGFpeG1udCk7CisgICAgYWl4bW50ICA9IE5VTEw7CisgICAgYWl4Y3VyciA9IE5VTEw7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTQ1YWY1Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jCkBAIC0wLDAgKzEsMjU4IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9NTlRFTlRfSAorI2luY2x1ZGUgPG1udGVudC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfTU5UVEFCX0gKKyNpbmNsdWRlIDxzeXMvbW50dGFiLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19WRlNfSAorI2luY2x1ZGUgPHN5cy92ZnMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX01PVU5UX0gKKyNpbmNsdWRlIDxzeXMvbW91bnQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NUQVRGU19ICisjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU1RBVFZGU19ICisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKyNlbmRpZgorCisjaWZkZWYgc29sYXJpczIKKyNkZWZpbmUgX05FVFNOTVBfR0VUTU5URU5UX1RXT19BUkdTIDEKKyNlbHNlCisjdW5kZWYgIF9ORVRTTk1QX0dFVE1OVEVOVF9UV09fQVJHUyAKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBIYW5kbGUgbmFtaW5nIGRpZmZlcmVuY2VzIGJldHdlZW4gZ2V0bW50ZW50KCkgQVBJcworICAgICAqLworI2lmZGVmIF9ORVRTTk1QX0dFVE1OVEVOVF9UV09fQVJHUworICAgIC8qIFR3by1hcmd1bWVudCBmb3JtIChTb2xhcmlzKSAqLworI2RlZmluZSBOU0ZTX01OVEVOVCAgIHN0cnVjdCBtbnR0YWIKKyNkZWZpbmUgTlNGU19QQVRIICAgICBtbnRfbW91bnRwCisjZGVmaW5lIE5TRlNfREVWICAgICAgbW50X3NwZWNpYWwKKyNkZWZpbmUgTlNGU19UWVBFICAgICBtbnRfZnN0eXBlCisKKyNkZWZpbmUgTlNGU19TVEFURlMgICBzdGF0dmZzCisjZGVmaW5lIE5TRlNfU0laRSAgICAgZl9mcnNpemUKKworI2Vsc2UKKyAgICAvKiBPbmUtYXJndW1lbnQgZm9ybSAoZXZlcnl0aGluZyBlbHNlPykgKi8KKyNkZWZpbmUgTlNGU19NTlRFTlQgICBzdHJ1Y3QgbW50ZW50CisjZGVmaW5lIE5TRlNfUEFUSCAgICAgbW50X2RpcgorI2RlZmluZSBOU0ZTX0RFViAgICAgIG1udF9mc25hbWUKKyNkZWZpbmUgTlNGU19UWVBFICAgICBtbnRfdHlwZQorCisjZGVmaW5lIE5TRlNfU1RBVEZTICAgc3RhdGZzCisjZGVmaW5lIE5TRlNfU0laRSAgICAgZl9ic2l6ZQorCisjZW5kaWYKKworaW50CitfZnN5c19yZW1vdGUoIGNoYXIgKmRldmljZSwgaW50IHR5cGUgKQoreworICAgIGlmICgoIHR5cGUgPT0gTkVUU05NUF9GU19UWVBFX05GUykgfHwKKyAgICAgICAgKCB0eXBlID09IE5FVFNOTVBfRlNfVFlQRV9BRlMpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitpbnQKK19mc3lzX3R5cGUoIGNoYXIgKnR5cGVuYW1lICkKK3sKKyAgICBERUJVR01TR1RMKCgiZnN5czp0eXBlIiwgIkNsYXNzaWZ5aW5nICVzXG4iLCB0eXBlbmFtZSkpOworCisgICAgaWYgKCAhdHlwZW5hbWUgfHwgKnR5cGVuYW1lPT0nXDAnICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX1VOS05PV047CisKKyNpbmNsdWRlICJtbnR0eXBlcy5oIgorCisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfRkZTKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9CRVJLRUxFWTsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9VRlMpICkKKyAgICAgICByZXR1cm4gX05FVFNOTVBfRlNfVFlQRV9VRlM7ICAgLyogZWl0aGVyIE5fRlNfVFlQRV9CRVJLRUxFWSBvciBOX0ZTX1RZUEVfU1lTViAqLworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX1NZU1YpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX1NZU1Y7CisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfUEMpIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfTVNET1MpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0ZBVDsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9IRlMpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0hGUzsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9NRlMpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX01GUzsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9OVEZTKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9OVEZTOworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0lTTzk2NjApIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfQ0Q5NjYwKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9JU085NjYwOworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0NERlMpICkKKyAgICAgICByZXR1cm4gX05FVFNOTVBfRlNfVFlQRV9DREZTOyAgIC8qIGVpdGhlciBOX0ZTX1RZUEVfSVNPOTY2MCBvciBOX0ZTX1RZUEVfUk9DS1JJREdFICovCisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfSFNGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfUk9DS1JJREdFOworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX05GUykgIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfTkZTMykgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9ORlM0KSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0NJRlMpIHx8ICAvKiBpLmUuIFNNQiAtID8/ICovCisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfU01CRlMpICAgIC8qID8/ICovICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX05GUzsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9OQ1BGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfTkVUV0FSRTsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9BRlMpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0FGUzsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9FWFQyKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0VYVDMpIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfRVhUNCkgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9FWFQyRlMpIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfRVhUM0ZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0VYVDRGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfRVhUMjsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9GQVQzMikgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9WRkFUKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9GQVQzMjsKKworICAgIC8qCisgICAgICogIFRoZSBmb2xsb3dpbmcgY29kZSBjb3ZlcnMgc2VsZWN0ZWQgZmlsZXN5c3RlbXMKKyAgICAgKiAgICB3aGljaCBhcmUgbm90IGNvdmVyZWQgYnkgdGhlIEhSLVRZUEVTIGVudW1lcmF0aW9ucywKKyAgICAgKiAgICBidXQgc2hvdWxkIHN0aWxsIGJlIG1vbml0b3JlZC4KKyAgICAgKiAgVGhlc2UgYXJlIGFsbCBtYXBwZWQgaW50byB0eXBlICJvdGhlciIKKyAgICAgKgorICAgICAqICAgIChUaGUgc3lzdGVtcyBsaXN0ZWQgYXJlIG5vdCBmaXhlZCBpbiBzdG9uZSwKKyAgICAgKiAgICAgYnV0IGFyZSBzaW1wbHkgaGVyZSB0byBpbGx1c3RyYXRlIHRoZSBwcmluY2lwbGUhKQorICAgICAqLyAgICAKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9NVkZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX1RNUEZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0dGUykgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9HRlMyKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX1hGUykgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9KRlMpIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfVlhGUykgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9SRUlTRVJGUykgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9PQ0ZTMikgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9DVkZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX1NJTUZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0xPRlMpKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfT1RIRVI7CisKKyAgICAvKiAgICAKKyAgICAgKiAgQWxsIG90aGVyIHR5cGVzIGFyZSBzaWxlbnRseSBza2lwcGVkCisgICAgICovCisgICAgZWxzZQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfSUdOT1JFOworfQorCit2b2lkCituZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCB2b2lkICkKK3sKKyAgICByZXR1cm47Cit9CisKK3ZvaWQKK25ldHNubXBfZnN5c19hcmNoX2xvYWQoIHZvaWQgKQoreworICAgIEZJTEUgICAgICAgICAgICAgICpmcD1OVUxMOworI2lmZGVmIF9ORVRTTk1QX0dFVE1OVEVOVF9UV09fQVJHUworICAgIHN0cnVjdCBtbnR0YWIgICAgICBtdG1wOworICAgIHN0cnVjdCBtbnR0YWIgICAgICptID0gJm10bXA7CisjZWxzZQorICAgIHN0cnVjdCBtbnRlbnQgICAgICptOworI2VuZGlmCisgICAgc3RydWN0IE5TRlNfU1RBVEZTIHN0YXRfYnVmOworICAgIG5ldHNubXBfZnN5c19pbmZvICplbnRyeTsKKyAgICBjaGFyICAgICAgICAgICAgICAgdG1wYnVmWzEwMjRdOworCisgICAgLyoKKyAgICAgKiBSZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IG1vdW50ZWQgZmlsZXN5c3RlbXMuLi4KKyAgICAgKi8KKyAgICBmcCA9IGZvcGVuKCBFVENfTU5UVEFCLCAiciIgKTsgICAvKiBPUiBzZXRtbnRlbnQoKT8/ICovCisgICAgaWYgKCAhZnAgKSB7CisgICAgICAgIHNucHJpbnRmKCB0bXBidWYsIHNpemVvZih0bXBidWYpLCAiQ2Fubm90IG9wZW4gJXMiLCBFVENfTU5UVEFCICk7CisgICAgICAgIHNubXBfbG9nX3BlcnJvciggdG1wYnVmICk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIC4uLiBhbmQgaW5zZXJ0IHRoaXMgaW50byB0aGUgZmlsZXN5c3RlbSBjb250YWluZXIuCisgICAgICovCisgICAgd2hpbGUgCisjaWZkZWYgX05FVFNOTVBfR0VUTU5URU5UX1RXT19BUkdTCisgICAgICAgICAgKChnZXRtbnRlbnQoZnAsIG0pKSA9PSAwICkKKyNlbHNlCisgICAgICAgICAgKChtID0gZ2V0bW50ZW50KGZwKSkgIT0gTlVMTCApCisjZW5kaWYKKyAgICB7CisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9mc3lzX2J5X3BhdGgoIG0tPk5TRlNfUEFUSCwgTkVUU05NUF9GU19GSU5EX0NSRUFURSApOworICAgICAgICBpZiAoIWVudHJ5KSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN0cmxjcHkoZW50cnktPnBhdGgsIG0tPk5TRlNfUEFUSCwgc2l6ZW9mKGVudHJ5LT5wYXRoKSk7CisgICAgICAgIHN0cmxjcHkoZW50cnktPmRldmljZSwgbS0+TlNGU19ERVYsIHNpemVvZihlbnRyeS0+ZGV2aWNlKSk7CisgICAgICAgIGVudHJ5LT50eXBlID0gX2ZzeXNfdHlwZShtLT5OU0ZTX1RZUEUpOworICAgICAgICBpZiAoIShlbnRyeS0+dHlwZSAmIF9ORVRTTk1QX0ZTX1RZUEVfU0tJUF9CSVQpKQorICAgICAgICAgICAgZW50cnktPmZsYWdzIHw9IE5FVFNOTVBfRlNfRkxBR19BQ1RJVkU7CisKKyAgICAgICAgaWYgKCBfZnN5c19yZW1vdGUoIGVudHJ5LT5kZXZpY2UsIGVudHJ5LT50eXBlICkpCisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX1JFTU9URTsKKyNpZiBIQVZFX0hBU01OVE9QVAorICAgICAgICBpZiAoaGFzbW50b3B0KCBtLCAicm8iICkpCisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX1JPTkxZOworI2VuZGlmCisgICAgICAgIC8qCisgICAgICAgICAqICBUaGUgcm9vdCBkZXZpY2UgaXMgcHJlc3VtYWJseSBib290YWJsZS4KKyAgICAgICAgICogIE90aGVyIHBhcnRpdGlvbnMgcHJvYmFibHkgYXJlbid0IQorICAgICAgICAgKgorICAgICAgICAgKiAgWFhYIC0gd2hhdCBhYm91dCAvYm9vdCA/PworICAgICAgICAgKi8KKyAgICAgICAgaWYgKChlbnRyeS0+cGF0aFswXSA9PSAnLycpICYmCisgICAgICAgICAgICAoZW50cnktPnBhdGhbMV0gPT0gJ1wwJykpCisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX0JPT1RBQkxFOworCisgICAgICAgIC8qCisgICAgICAgICAqICBYWFggLSBpZGVudGlmeSByZW1vdmVhYmxlIGRpc2tzCisgICAgICAgICAqLworCisgICAgICAgIC8qCisgICAgICAgICAqICBPcHRpb25hbGx5IHNraXAgcmV0cmlldmluZyBzdGF0aXN0aWNzIGZvciByZW1vdGUgbW91bnRzCisgICAgICAgICAqLworICAgICAgICBpZiAoIChlbnRyeS0+ZmxhZ3MgJiBORVRTTk1QX0ZTX0ZMQUdfUkVNT1RFKSAmJgorICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1NLSVBORlNJTkhPU1RSRVNPVVJDRVMpKQorICAgICAgICAgICAgY29udGludWU7CisKKyNpZmRlZiBpcml4NgorICAgICAgICBpZiAoIE5TRlNfU1RBVEZTKCBlbnRyeS0+cGF0aCwgJnN0YXRfYnVmLCBzaXplb2Yoc3RydWN0IHN0YXRmcyksIDApIDwgMCApCisjZWxzZQorICAgICAgICBpZiAoIE5TRlNfU1RBVEZTKCBlbnRyeS0+cGF0aCwgJnN0YXRfYnVmICkgPCAwICkKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIkNhbm5vdCBzdGF0ZnMgJXMiLCBlbnRyeS0+cGF0aCApOworICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCB0bXBidWYgKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVudHJ5LT51bml0cyA9ICBzdGF0X2J1Zi5OU0ZTX1NJWkU7CisgICAgICAgIGVudHJ5LT5zaXplICA9ICBzdGF0X2J1Zi5mX2Jsb2NrczsKKyAgICAgICAgZW50cnktPnVzZWQgID0gKHN0YXRfYnVmLmZfYmxvY2tzIC0gc3RhdF9idWYuZl9iZnJlZSk7CisgICAgICAgIC8qIGVudHJ5LT5hdmFpbCBpcyBjdXJyZW50bHkgdW5zaWduZWQsIHNvIHByb3RlY3QgYWdhaW5zdCBuZWdhdGl2ZQorICAgICAgICAgKiB2YWx1ZXMhCisgICAgICAgICAqIFRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgdG8gYSBzaWduZWQgZmllbGQuCisgICAgICAgICAqLworICAgICAgICBpZiAoc3RhdF9idWYuZl9iYXZhaWwgPCAwKQorICAgICAgICAgICAgZW50cnktPmF2YWlsID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPmF2YWlsID0gIHN0YXRfYnVmLmZfYmF2YWlsOworICAgICAgICBlbnRyeS0+aW51bXNfdG90YWwgPSBzdGF0X2J1Zi5mX2ZpbGVzOworICAgICAgICBlbnRyeS0+aW51bXNfYXZhaWwgPSBzdGF0X2J1Zi5mX2ZmcmVlOworICAgIH0KKyAgICBmY2xvc2UoIGZwICk7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE1YTIzMAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jCkBAIC0wLDAgKzEsMjg5IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaD4KKworCitleHRlcm4gdm9pZCAgICAgICAgICAgICBuZXRzbm1wX2ZzeXNfYXJjaF9sb2FkKCB2b2lkICk7CitleHRlcm4gdm9pZCAgICAgICAgICAgICBuZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCB2b2lkICk7CitzdGF0aWMgaW50ICBfZnN5c19sb2FkKCB2b2lkICk7CitzdGF0aWMgdm9pZCBfZnN5c19mcmVlKCB2b2lkICk7CisKK3N0YXRpYyBpbnQgX2ZzeXNBdXRvVXBkYXRlID0gMDsgICAvKiAwIG1lYW5zIG9uLWRlbWFuZCBjYWNoaW5nICovCitzdGF0aWMgdm9pZCBfZnN5c191cGRhdGVfc3RhdHMoIHVuc2lnbmVkIGludCwgdm9pZCogKTsKKworbmV0c25tcF9jYWNoZSAgICAgKl9mc3lzX2NhY2hlICAgICA9IE5VTEw7CituZXRzbm1wX2NvbnRhaW5lciAqX2ZzeXNfY29udGFpbmVyID0gTlVMTDsKK3N0YXRpYyBpbnQgICAgICAgICBfZnN5c19pZHggICAgICAgPSAwOworc3RhdGljIG5ldHNubXBfZnN5c19pbmZvICogX2ZzeXNfY3JlYXRlX2VudHJ5KCB2b2lkICk7CisKK3ZvaWQgaW5pdF9od19mc3lzKCB2b2lkICkgeworCisgICAgaWYgKCBfZnN5c19jb250YWluZXIgKQorICAgICAgICByZXR1cm47ICAgLyogQWxyZWFkeSBpbml0aWFsaXNlZCAqLworCisgICAgREVCVUdNU0dUTCgoImZzeXMiLCAiSW5pdGlhbGlzZSBIYXJkd2FyZSBGaWxlU3lzdGVtIG1vZHVsZVxuIikpOworCisgICAgLyoKKyAgICAgKiBEZWZpbmUgYSBjb250YWluZXIgdG8gaG9sZCB0aGUgbGlzdCBvZiBmaWxlc3lzdGVtcworICAgICAqLworICAgIF9mc3lzX2NvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImZzeXNUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAoIE5VTEwgPT0gX2ZzeXNfY29udGFpbmVyICkgeworICAgICAgICBzbm1wX2xvZyggTE9HX0VSUiwgImZhaWxlZCB0byBjcmVhdGUgY29udGFpbmVyIGZvciBmc3lzVGFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBuZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCApOworCisgICAgLyoKKyAgICAgKiBJZiB3ZSdyZSBzYW1wbGluZyB0aGUgZmlsZSBzeXN0ZW0gaW5mb3JtYXRpb24gYXV0b21hdGljYWxseSwKKyAgICAgKiAgIHRoZW4gYXJyYW5nZSBmb3IgdGhpcyB0byBiZSB0cmlnZ2VyZWQgcmVndWxhcmx5LgorICAgICAqCisgICAgICogSWYgd2UncmUgbm90IHNhbXBsaW5nIHRoZXNlIHZhbHVlcyByZWd1bGFybHksCisgICAgICogICBjcmVhdGUgYSBzdWl0YWJsZSBjYWNoZSBoYW5kbGVyIGluc3RlYWQuCisgICAgICovCisgICAgaWYgKCBfZnN5c0F1dG9VcGRhdGUgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJmc3lzIiwgIlJlbG9hZGluZyBIYXJkd2FyZSBGaWxlU3lzdGVtcyBhdXRvbWF0aWNhbGx5ICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZzeXNBdXRvVXBkYXRlKSk7CisgICAgICAgIHNubXBfYWxhcm1fcmVnaXN0ZXIoIF9mc3lzQXV0b1VwZGF0ZSwgU0FfUkVQRUFULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZnN5c191cGRhdGVfc3RhdHMsIE5VTEwgKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9mc3lzX2NhY2hlID0gbmV0c25tcF9jYWNoZV9jcmVhdGUoIDUsIG5ldHNubXBfZnN5c19sb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2ZzeXNfZnJlZSwgTlVMTCwgMCApOworICAgICAgICBERUJVR01TR1RMKCgiZnN5cyIsICJSZWxvYWRpbmcgSGFyZHdhcmUgRmlsZVN5c3RlbXMgb24tZGVtYW5kICglcClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZzeXNfY2FjaGUpKTsKKyAgICB9Cit9CisKK3ZvaWQgc2h1dGRvd25faHdfZnN5cyggdm9pZCApIHsKKyAgICBfZnN5c19mcmVlKCk7Cit9CisKKy8qCisgKiAgUmV0dXJuIHRoZSBtYWluIGZzeXMgY29udGFpbmVyCisgKi8KK25ldHNubXBfY29udGFpbmVyICpuZXRzbm1wX2ZzeXNfZ2V0X2NvbnRhaW5lciggdm9pZCApIHsgcmV0dXJuIF9mc3lzX2NvbnRhaW5lcjsgfQorCisvKgorICogIFJldHVybiB0aGUgbWFpbiBmc3lzIGNhY2hlIGNvbnRyb2wgc3RydWN0dXJlIChpZiBkZWZpbmVkKQorICovCituZXRzbm1wX2NhY2hlICpuZXRzbm1wX2ZzeXNfZ2V0X2NhY2hlKCB2b2lkICkgeyByZXR1cm4gX2ZzeXNfY2FjaGU7IH0KKworCisvKgorICogV3JhcHBlciByb3V0aW5lIGZvciBhdXRvbWF0aWNhbGx5IHVwZGF0aW5nIGZzeXMgaW5mb3JtYXRpb24KKyAqLwordm9pZAorX2ZzeXNfdXBkYXRlX3N0YXRzKCB1bnNpZ25lZCBpbnQgY2xpZW50cmVnLCB2b2lkICpkYXRhICkKK3sKKyAgICBfZnN5c19mcmVlKCk7CisgICAgX2ZzeXNfbG9hZCgpOworfQorCisvKgorICogV3JhcHBlciByb3V0aW5lIGZvciByZS1sb2FkaW5nIGZpbGVzeXN0ZW0gc3RhdGlzdGljcyBvbiBkZW1hbmQKKyAqLworaW50CituZXRzbm1wX2ZzeXNfbG9hZCggbmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKmRhdGEgKQoreworICAgIHJldHVybiBfZnN5c19sb2FkKCk7Cit9CisKKy8qCisgKiBXcmFwcGVyIHJvdXRpbmUgZm9yIHJlbGVhc2luZyBleHBpcmVkIGZpbGVzeXN0ZW0gc3RhdGlzdGljcworICovCit2b2lkCituZXRzbm1wX2ZzeXNfZnJlZSggbmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKmRhdGEgKQoreworICAgIF9mc3lzX2ZyZWUoKTsKK30KKworCisvKgorICogQXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IHByb2Nlc3Npbmcgb2YgbG9hZGluZyBmaWxlc3lzdGVtIHN0YXRpc3RpY3MKKyAqLworc3RhdGljIGludAorX2ZzeXNfbG9hZCggdm9pZCApCit7CisgICAgbmV0c25tcF9mc3lzX2FyY2hfbG9hZCgpOworICAgIHJldHVybiAwOworfQorCisvKgorICogQXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IHJlbGVhc2Ugb2YgZmlsZXN5c3RlbSBzdGF0aXN0aWNzCisgKi8KK3N0YXRpYyB2b2lkCitfZnN5c19mcmVlKCB2b2lkICkKK3sKKyAgICBuZXRzbm1wX2ZzeXNfaW5mbyAqc3A7CisKKyAgICBmb3IgKHNwID0gQ09OVEFJTkVSX0ZJUlNUKCBfZnN5c19jb250YWluZXIgKTsKKyAgICAgICAgIHNwOworICAgICAgICAgc3AgPSBDT05UQUlORVJfTkVYVCggIF9mc3lzX2NvbnRhaW5lciwgc3AgKSkgeworCisgICAgICAgICBzcC0+ZmxhZ3MgJj0gfk5FVFNOTVBfRlNfRkxBR19BQ1RJVkU7CisgICAgfQorfQorCisKK25ldHNubXBfZnN5c19pbmZvICpuZXRzbm1wX2ZzeXNfZ2V0X2ZpcnN0KCB2b2lkICkgeworICAgIHJldHVybiBDT05UQUlORVJfRklSU1QoIF9mc3lzX2NvbnRhaW5lciApOworfQorbmV0c25tcF9mc3lzX2luZm8gKm5ldHNubXBfZnN5c19nZXRfbmV4dCggbmV0c25tcF9mc3lzX2luZm8gKnRoaXNfcHRyICkgeworICAgIHJldHVybiBDT05UQUlORVJfTkVYVCggX2ZzeXNfY29udGFpbmVyLCB0aGlzX3B0ciApOworfQorCisvKgorICogUmV0cmlldmUgYSBmaWxlc3lzdGVtIGVudHJ5IGJhc2VkIG9uIHRoZSBwYXRoIHdoZXJlIGl0IGlzIG1vdW50ZWQsCisgKiAgb3IgKG9wdGlvbmFsbHkpIGluc2VydCBhIG5ldyBvbmUgaW50byB0aGUgY29udGFpbmVyCisgKi8KK25ldHNubXBfZnN5c19pbmZvICoKK25ldHNubXBfZnN5c19ieV9wYXRoKCBjaGFyICpwYXRoLCBpbnQgY3JlYXRlX3R5cGUgKQoreworICAgIG5ldHNubXBfZnN5c19pbmZvICpzcDsKKworICAgIERFQlVHTVNHVEwoKCJmc3lzOnBhdGgiLCAiR2V0IGZpbGVzeXN0ZW0gZW50cnkgKCVzKVxuIiwgcGF0aCkpOworCisgICAgLyoKKyAgICAgKiAgTG9vayB0aHJvdWdoIHRoZSBsaXN0IGZvciBhIG1hdGNoaW5nIGVudHJ5CisgICAgICovCisgICAgICAgIC8qIC4uIG9yIHVzZSBhIHNlY29uZGFyeSBpbmRleCBjb250YWluZXIgPz8gKi8KKyAgICBmb3IgKHNwID0gQ09OVEFJTkVSX0ZJUlNUKCBfZnN5c19jb250YWluZXIgKTsKKyAgICAgICAgIHNwOworICAgICAgICAgc3AgPSBDT05UQUlORVJfTkVYVCggIF9mc3lzX2NvbnRhaW5lciwgc3AgKSkgeworCisgICAgICAgIGlmICggIXN0cmNtcCggcGF0aCwgc3AtPnBhdGggKSkKKyAgICAgICAgICAgIHJldHVybiBzcDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE5vdCBmb3VuZC4uLgorICAgICAqLworICAgIGlmICggY3JlYXRlX3R5cGUgPT0gTkVUU05NUF9GU19GSU5EX0VYSVNUICkgeworICAgICAgICBERUJVR01TR1RMKCgiZnN5czpwYXRoIiwgIk5vIHN1Y2ggZmlsZXN5c3RlbSBlbnRyeVxuIikpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIC4uLiBzbyBsZXQncyBjcmVhdGUgYSBuZXcgb25lCisgICAgICovCisgICAgc3AgPSBfZnN5c19jcmVhdGVfZW50cnkoKTsKKyAgICBpZiAoc3ApCisgICAgICAgIHN0cmxjcHkoc3AtPnBhdGgsIHBhdGgsIHNpemVvZihzcC0+cGF0aCkpOworICAgIHJldHVybiBzcDsKK30KKworCisvKgorICogUmV0cmlldmUgYSBmaWxlc3lzdGVtIGVudHJ5IGJhc2VkIG9uIHRoZSBoYXJkd2FyZSBkZXZpY2UsCisgKiAgIChvciBleHBvcnRlZCBwYXRoIGZvciByZW1vdGUgbW91bnRzKS4KKyAqIChPcHRpb25hbGx5KSBpbnNlcnQgYSBuZXcgb25lIGludG8gdGhlIGNvbnRhaW5lci4KKyAqLworbmV0c25tcF9mc3lzX2luZm8gKgorbmV0c25tcF9mc3lzX2J5X2RldmljZSggY2hhciAqZGV2aWNlLCBpbnQgY3JlYXRlX3R5cGUgKQoreworICAgIG5ldHNubXBfZnN5c19pbmZvICpzcDsKKworICAgIERFQlVHTVNHVEwoKCJmc3lzOmRldmljZSIsICJHZXQgZmlsZXN5c3RlbSBlbnRyeSAoJXMpXG4iLCBkZXZpY2UpKTsKKworICAgIC8qCisgICAgICogIExvb2sgdGhyb3VnaCB0aGUgbGlzdCBmb3IgYSBtYXRjaGluZyBlbnRyeQorICAgICAqLworICAgICAgICAvKiAuLiBvciB1c2UgYSBzZWNvbmRhcnkgaW5kZXggY29udGFpbmVyID8/ICovCisgICAgZm9yIChzcCA9IENPTlRBSU5FUl9GSVJTVCggX2ZzeXNfY29udGFpbmVyICk7CisgICAgICAgICBzcDsKKyAgICAgICAgIHNwID0gQ09OVEFJTkVSX05FWFQoICBfZnN5c19jb250YWluZXIsIHNwICkpIHsKKworICAgICAgICBpZiAoICFzdHJjbXAoIGRldmljZSwgc3AtPmRldmljZSApKQorICAgICAgICAgICAgcmV0dXJuIHNwOworICAgIH0KKworICAgIC8qCisgICAgICogTm90IGZvdW5kLi4uCisgICAgICovCisgICAgaWYgKCBjcmVhdGVfdHlwZSA9PSBORVRTTk1QX0ZTX0ZJTkRfRVhJU1QgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJmc3lzOmRldmljZSIsICJObyBzdWNoIGZpbGVzeXN0ZW0gZW50cnlcbiIpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyoKKyAgICAgKiAuLi4gc28gbGV0J3MgY3JlYXRlIGEgbmV3IG9uZQorICAgICAqLworICAgIHNwID0gX2ZzeXNfY3JlYXRlX2VudHJ5KCk7CisgICAgaWYgKHNwKQorICAgICAgICBzdHJsY3B5KHNwLT5kZXZpY2UsIGRldmljZSwgc2l6ZW9mKHNwLT5kZXZpY2UpKTsKKyAgICByZXR1cm4gc3A7Cit9CisKKworbmV0c25tcF9mc3lzX2luZm8gKgorX2ZzeXNfY3JlYXRlX2VudHJ5KCB2b2lkICkKK3sKKyAgICBuZXRzbm1wX2ZzeXNfaW5mbyAqc3A7CisKKyAgICBzcCA9IFNOTVBfTUFMTE9DX1RZUEVERUYoIG5ldHNubXBfZnN5c19pbmZvICk7CisgICAgaWYgKCBzcCApIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogU2V0IHVwIHRoZSBpbmRleCB2YWx1ZS4KKyAgICAgICAgICogIAorICAgICAgICAgKiBBbGwgdGhpcyB0cm91YmxlLCBqdXN0IGZvciBhIHNpbXBsZSBpbnRlZ2VyLgorICAgICAgICAgKiBTdXJlbHkgdGhlcmUgbXVzdCBiZSBhIGJldHRlciB3YXk/CisgICAgICAgICAqLworICAgICAgICBzcC0+aWR4LmxlbiAgPSAxOworICAgICAgICBzcC0+aWR4Lm9pZHMgPSBTTk1QX01BTExPQ19UWVBFREVGKCBvaWQgKTsKKyAgICAgICAgc3AtPmlkeC5vaWRzWzBdID0gKytfZnN5c19pZHg7CisgICAgfQorCisgICAgREVCVUdNU0dUTCgoImZzeXM6bmV3IiwgIkNyZWF0ZSBmaWxlc3lzdGVtIGVudHJ5IChpbmRleCA9ICVkXG4iLCBfZnN5c19pZHgpKTsKKyAgICBDT05UQUlORVJfSU5TRVJUKCBfZnN5c19jb250YWluZXIsIHNwICk7CisgICAgcmV0dXJuIHNwOworfQorCisKKy8qCisgKiAgQ29udmVydCBmc3lzIHNpemUgaW5mb3JtYXRpb24gdG8gMUsgdW5pdHMKKyAqICAgIChhdHRlbXB0aW5nIHRvIGF2b2lkIDMyLWJpdCBvdmVyZmxvdyEpCisgKi8KK3Vuc2lnbmVkIGludAorX2ZzeXNfdG9fSyggaW50IHNpemUsIGludCB1bml0cyApCit7CisgICAgaW50IGZhY3RvciA9IDE7CisKKyAgICBpZiAoIHVuaXRzID09IDAgKSB7CisgICAgICAgIHJldHVybiAwOyAgICAvKiBYWFggKi8KKyAgICB9IGVsc2UgaWYgKCB1bml0cyA9PSAxMDI0ICkgeworICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICB9IGVsc2UgaWYgKCB1bml0cyA9PSA1MTIgKSB7ICAgICAgLyogVG8gYXZvaWQgdW5uZWNlc3NhcnkgZGl2aXNpb24gKi8KKyAgICAgICAgcmV0dXJuIHNpemUvMjsKKyAgICB9IGVsc2UgaWYgKCB1bml0cyA8IDEwMjQgKSB7CisgICAgICAgIGZhY3RvciA9IDEwMjQgLyB1bml0czsgICAvKiBBc3N1bWluZyBwb3dlciBvZiB0d28gKi8KKyAgICAgICAgcmV0dXJuIChzaXplICogZmFjdG9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmYWN0b3IgPSB1bml0cyAvIDEwMjQ7ICAgLyogQXNzdW1pbmcgbXVsdGlwbGUgb2YgMUsgKi8KKyAgICAgICAgcmV0dXJuIChzaXplIC8gZmFjdG9yKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludAorbmV0c25tcF9mc3lzX3NpemUoIG5ldHNubXBfZnN5c19pbmZvICpmKSB7CisgICAgaWYgKCAhZiApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBfZnN5c190b19LKCBmLT5zaXplLCBmLT51bml0cyApOworfQorCit1bnNpZ25lZCBpbnQKK25ldHNubXBfZnN5c191c2VkKCBuZXRzbm1wX2ZzeXNfaW5mbyAqZikgeworICAgIGlmICggIWYgKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gX2ZzeXNfdG9fSyggZi0+dXNlZCwgZi0+dW5pdHMgKTsKK30KKwordW5zaWduZWQgaW50CituZXRzbm1wX2ZzeXNfYXZhaWwoIG5ldHNubXBfZnN5c19pbmZvICpmKSB7CisgICAgaWYgKCAhZiApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBfZnN5c190b19LKCBmLT5hdmFpbCwgZi0+dW5pdHMgKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5oIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFmOTBlZgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5oCkBAIC0wLDAgKzEsMiBAQAordm9pZCBpbml0X2h3X2ZzeXModm9pZCk7Cit2b2lkIHNodXRkb3duX2h3X2ZzeXMoIHZvaWQgKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW50dHlwZXMuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW50dHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWM5MzVlCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9tbnR0eXBlcy5oCkBAIC0wLDAgKzEsMTc4IEBACisjaWZuZGVmIF9ORVRTTk1QX0ZTWVNfTU5UVFlQRVNfSAorI2RlZmluZSBfTkVUU05NUF9GU1lTX01OVFRZUEVTX0gKKy8qCisgKiAgU29tZSBtb3VudHMgY2FuIG1hcCB0byBvbmUgb2YgdHdvIGhyRlMgdHlwZXMKKyAqICAgIChkZXBlbmRpbmcgb24gb3RoZXIgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBzeXN0ZW0pCisgKiAgTm90ZSB3aGljaCBzaG91bGQgYmUgdXNlZCAqYmVmb3JlKiBkZWZpbmluZyBhbnkKKyAqICAgIHR5cGUgdG9rZW5zIHdoaWNoIG1heSBiZSBtaXNzaW5nLgorICovCisKKyNpZiAoZGVmaW5lZChCZXJrZWx5RlMpICYmICFkZWZpbmVkKE1OVFRZUEVfSEZTKSkgfHwgZGVmaW5lZChzb2xhcmlzMikKKyNkZWZpbmUgIF9ORVRTTk1QX0ZTX1RZUEVfVUZTICBORVRTTk1QX0ZTX1RZUEVfQkVSS0VMRVkKKyNlbHNlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX1VGUyAgTkVUU05NUF9GU19UWVBFX1NZU1YKKyNlbmRpZgorCisjaWZkZWYgUm9ja1JpZGdlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX0NERlMgIE5FVFNOTVBfRlNfVFlQRV9ST0NLUklER0UKKyNlbHNlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX0NERlMgIE5FVFNOTVBfRlNfVFlQRV9JU085NjYwCisjZW5kaWYKKworCisvKgorICogIEVuc3VyZSBhbGwgcmVjb2duaXNlZCBmaWxlc3lzdGVtIG1vdW50IHR5cGUgdG9rZW5zIGFyZQorICogICAgYXZhaWxhYmxlIChldmVuIG9uIHN5c3RlbXMgd2hlcmUgdGhleSdyZSBub3QgdXNlZCkKKyAqLworI2lmbmRlZiBNTlRUWVBFX0FGUworI2RlZmluZSBNTlRUWVBFX0FGUyAgICAgICJhZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DREZTCisjZGVmaW5lIE1OVFRZUEVfQ0RGUyAgICAgImNkZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DRDk2NjAKKyNkZWZpbmUgTU5UVFlQRV9DRDk2NjAgICAiY2Q5NjYwIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMgorI2RlZmluZSBNTlRUWVBFX0VYVDIgICAgICJleHQyIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMworI2RlZmluZSBNTlRUWVBFX0VYVDMgICAgICJleHQzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUNAorI2RlZmluZSBNTlRUWVBFX0VYVDQgICAgICJleHQ0IgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMkZTCisjZGVmaW5lIE1OVFRZUEVfRVhUMkZTICAgImV4dDJmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0VYVDNGUworI2RlZmluZSBNTlRUWVBFX0VYVDNGUyAgICJleHQzZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9FWFQ0RlMKKyNkZWZpbmUgTU5UVFlQRV9FWFQ0RlMgICAiZXh0NGZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRkFUMzIKKyNkZWZpbmUgTU5UVFlQRV9GQVQzMiAgICAiZmF0MzIiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9GRlMKKyNkZWZpbmUgTU5UVFlQRV9GRlMgICAgICAiZmZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfSEZTCisjZGVmaW5lIE1OVFRZUEVfSEZTICAgICAgImhmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0hTRlMKKyNkZWZpbmUgTU5UVFlQRV9IU0ZTICAgICAiaHNmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0lTTzk2NjAKKyNkZWZpbmUgTU5UVFlQRV9JU085NjYwICAiaXNvOTY2MCIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX01GUworI2RlZmluZSBNTlRUWVBFX01GUyAgICAgICJtZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9NU0RPUworI2RlZmluZSBNTlRUWVBFX01TRE9TICAgICJtc2RvcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX05DUEZTCisjZGVmaW5lIE1OVFRZUEVfTkNQRlMgICAgIm5jcGZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTkZTCisjZGVmaW5lIE1OVFRZUEVfTkZTICAgICAgIm5mcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX05GUzMKKyNkZWZpbmUgTU5UVFlQRV9ORlMzICAgICAibmZzMyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX05GUzQKKyNkZWZpbmUgTU5UVFlQRV9ORlM0ICAgICAibmZzNCIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX05URlMKKyNkZWZpbmUgTU5UVFlQRV9OVEZTICAgICAibnRmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1BDCisjZGVmaW5lIE1OVFRZUEVfUEMgICAgICAgInBjIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfU01CRlMKKyNkZWZpbmUgTU5UVFlQRV9TTUJGUyAgICAic21iZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DSUZTCisjZGVmaW5lIE1OVFRZUEVfQ0lGUyAgICAgImNpZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9TWVNWCisjZGVmaW5lIE1OVFRZUEVfU1lTViAgICAgInN5c3YiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9VRlMKKyNkZWZpbmUgTU5UVFlQRV9VRlMgICAgICAidWZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfVkZBVAorI2RlZmluZSBNTlRUWVBFX1ZGQVQgICAgICJ2ZmF0IgorI2VuZGlmCisKKy8qCisgKiAgRmlsZSBzeXN0ZW1zIHRvIG1vbml0b3IsIGJ1dCBub3QgY292ZXJlZCBieSBIUi1UWVBFUyBlbnVtZXJhdGlvbnMKKyAqLworI2lmbmRlZiBNTlRUWVBFX01WRlMKKyNkZWZpbmUgTU5UVFlQRV9NVkZTICAgICAibXZmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1RNUEZTCisjZGVmaW5lIE1OVFRZUEVfVE1QRlMgICAgInRtcGZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfR0ZTCisjZGVmaW5lIE1OVFRZUEVfR0ZTICAgICAgImdmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0dGUzIKKyNkZWZpbmUgTU5UVFlQRV9HRlMyICAgICAiZ2ZzMiIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1hGUworI2RlZmluZSBNTlRUWVBFX1hGUyAgICAgICJ4ZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9KRlMKKyNkZWZpbmUgTU5UVFlQRV9KRlMgICAgICAiamZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfVlhGUworI2RlZmluZSBNTlRUWVBFX1ZYRlMgICAgICAidnhmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1JFSVNFUkZTCisjZGVmaW5lIE1OVFRZUEVfUkVJU0VSRlMgInJlaXNlcmZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTE9GUworI2RlZmluZSBNTlRUWVBFX0xPRlMgICAgICJsb2ZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfT0NGUzIKKyNkZWZpbmUgTU5UVFlQRV9PQ0ZTMiAgICAib2NmczIiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DVkZTCisjZGVmaW5lIE1OVFRZUEVfQ1ZGUyAgICAgImN2ZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9TSU1GUworI2RlZmluZSBNTlRUWVBFX1NJTUZTICAgICAic2ltZnMiCisjZW5kaWYKKworLyoKKyAqICBGaWxlIHN5c3RlbXMgdG8gc2tpcAorICogICAgKFByb2JhYmx5IG5vdCBzdHJpY3RseSBuZWVkZWQpCisgKi8KKyNpZm5kZWYgTU5UVFlQRV9BUFAKKyNkZWZpbmUgTU5UVFlQRV9BUFAgICAgICAiYXBwIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfREVWUFRTCisjZGVmaW5lIE1OVFRZUEVfREVWUFRTICAgImRldnB0cyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0lHTk9SRQorI2RlZmluZSBNTlRUWVBFX0lHTk9SRSAgICJpZ25vcmUiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9QUk9DCisjZGVmaW5lIE1OVFRZUEVfUFJPQyAgICAgInByb2MiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9TWVNGUworI2RlZmluZSBNTlRUWVBFX1NZU0ZTICAgICJzeXNmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1VTQkZTCisjZGVmaW5lIE1OVFRZUEVfVVNCRlMgICAgInVzYmZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfQklORk1UCisjZGVmaW5lIE1OVFRZUEVfQklORk1UICAgImJpbmZtdF9taXNjIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfUlBDUElQRQorI2RlZmluZSBNTlRUWVBFX1JQQ1BJUEUgICJycGNfcGlwZWZzIgorI2VuZGlmCisKKyNlbmRpZiAvKiBfTkVUU05NUF9GU1lTX01OVFRZUEVTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW91bnRzLmggYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL21vdW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNDg4ODgKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL21vdW50cy5oCkBAIC0wLDAgKzEsMTU5IEBACisjaWZuZGVmIF9ORVRTTk1QX0ZTWVNfTU9VTlRTX0gKKyNkZWZpbmUgX05FVFNOTVBfRlNZU19NT1VOVFNfSAorLyoKKyAqICBTb21lIG1vdW50cyBjYW4gbWFwIHRvIG9uZSBvZiB0d28gaHJGUyB0eXBlcworICogICAgKGRlcGVuZGluZyBvbiBvdGhlciBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIHN5c3RlbSkKKyAqICBOb3RlIHdoaWNoIHNob3VsZCBiZSB1c2VkICpiZWZvcmUqIGRlZmluaW5nIGFueQorICogICAgdHlwZSB0b2tlbnMgd2hpY2ggbWF5IGJlIG1pc3NpbmcuCisgKi8KKworLyoKKyNpZiAoZGVmaW5lZChCZXJrZWx5RlMpICYmICFkZWZpbmVkKE1OVFRZUEVfSEZTKSkgfHwgZGVmaW5lZChzb2xhcmlzMikKKyNkZWZpbmUgIF9ORVRTTk1QX0ZTX1RZUEVfVUZTICBORVRTTk1QX0ZTX1RZUEVfQkVSS0VMRVkKKyNlbHNlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX1VGUyAgTkVUU05NUF9GU19UWVBFX1NZU1YKKyNlbmRpZgorCisjaWZkZWYgUm9ja1JpZGdlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX0NERlMgIE5FVFNOTVBfRlNfVFlQRV9ST0NLUklER0UKKyNlbHNlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX0NERlMgIE5FVFNOTVBfRlNfVFlQRV9JU085NjYwCisjZW5kaWYKKyAqLworCisKKy8qCisgKiAgRW5zdXJlIGFsbCByZWNvZ25pc2VkIGZpbGVzeXN0ZW0gbW91bnQgdHlwZSB0b2tlbnMgYXJlCisgKiAgICBhdmFpbGFibGUgKGV2ZW4gb24gc3lzdGVtcyB3aGVyZSB0aGV5J3JlIG5vdCB1c2VkKQorICovCisjaWZuZGVmIE1PVU5UX0ZGUworI2RlZmluZSBNT1VOVF9GRlMgICAgImZmcyIKKyNlbmRpZgorI2lmbmRlZiBNT1VOVF9ORlMKKyNkZWZpbmUgTU9VTlRfTkZTICAgICJuZnMiCisjZW5kaWYKKyNpZm5kZWYgTU9VTlRfTUZTCisjZGVmaW5lIE1PVU5UX01GUyAgICAibWZzIgorI2VuZGlmCisjaWZuZGVmIE1PVU5UX01TRE9TCisjZGVmaW5lIE1PVU5UX01TRE9TICAibXNkb3MiCisjZW5kaWYKKyNpZm5kZWYgTU9VTlRfTVNET1NGUworI2RlZmluZSBNT1VOVF9NU0RPU0ZTICJtc2Rvc2ZzIgorI2VuZGlmCisjaWZuZGVmIE1PVU5UX0FGUworI2RlZmluZSBNT1VOVF9BRlMgICAgImFmcyIKKyNlbmRpZgorI2lmbmRlZiBNT1VOVF9DRDk2NjAKKyNkZWZpbmUgTU9VTlRfQ0Q5NjYwICJjZDk2NjAiCisjZW5kaWYKKyNpZm5kZWYgTU9VTlRfRVhUMkZTCisjZGVmaW5lIE1PVU5UX0VYVDJGUyAiZXh0MmZzIgorI2VuZGlmCisjaWZuZGVmIE1PVU5UX05URlMKKyNkZWZpbmUgTU9VTlRfTlRGUyAgICJudGZzIgorI2VuZGlmCisjaWZuZGVmIE1PVU5UX1VGUworI2RlZmluZSBNT1VOVF9VRlMgICAgInVmcyIKKyNlbmRpZgorCisvKgorI2lmbmRlZiBNTlRUWVBFX0FGUworI2RlZmluZSBNTlRUWVBFX0FGUyAgICAgICJhZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DREZTCisjZGVmaW5lIE1OVFRZUEVfQ0RGUyAgICAgImNkZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DRDk2NjAKKyNkZWZpbmUgTU5UVFlQRV9DRDk2NjAgICAiY2Q5NjYwIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMgorI2RlZmluZSBNTlRUWVBFX0VYVDIgICAgICJleHQyIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMworI2RlZmluZSBNTlRUWVBFX0VYVDMgICAgICJleHQzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMkZTCisjZGVmaW5lIE1OVFRZUEVfRVhUMkZTICAgImV4dDJmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0VYVDNGUworI2RlZmluZSBNTlRUWVBFX0VYVDNGUyAgICJleHQzZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9GQVQzMgorI2RlZmluZSBNTlRUWVBFX0ZBVDMyICAgICJmYXQzMiIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0ZGUworI2RlZmluZSBNTlRUWVBFX0ZGUyAgICAgICJmZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9IRlMKKyNkZWZpbmUgTU5UVFlQRV9IRlMgICAgICAiaGZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfSFNGUworI2RlZmluZSBNTlRUWVBFX0hTRlMgICAgICJoc2ZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfSVNPOTY2MAorI2RlZmluZSBNTlRUWVBFX0lTTzk2NjAgICJpc285NjYwIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTUZTCisjZGVmaW5lIE1OVFRZUEVfTUZTICAgICAgIm1mcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX01TRE9TCisjZGVmaW5lIE1OVFRZUEVfTVNET1MgICAgIm1zZG9zIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTkNQRlMKKyNkZWZpbmUgTU5UVFlQRV9OQ1BGUyAgICAibmNwZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9ORlMKKyNkZWZpbmUgTU5UVFlQRV9ORlMgICAgICAibmZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTkZTMworI2RlZmluZSBNTlRUWVBFX05GUzMgICAgICJuZnMzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTlRGUworI2RlZmluZSBNTlRUWVBFX05URlMgICAgICJudGZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfUEMKKyNkZWZpbmUgTU5UVFlQRV9QQyAgICAgICAicGMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9SRUlTRVJGUworI2RlZmluZSBNTlRUWVBFX1JFSVNFUkZTICJyZWlzZXJmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1NNQkZTCisjZGVmaW5lIE1OVFRZUEVfU01CRlMgICAgInNtYmZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfU1lTVgorI2RlZmluZSBNTlRUWVBFX1NZU1YgICAgICJzeXN2IgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfVUZTCisjZGVmaW5lIE1OVFRZUEVfVUZTICAgICAgInVmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1ZGQVQKKyNkZWZpbmUgTU5UVFlQRV9WRkFUICAgICAidmZhdCIKKyNlbmRpZgorKi8KKworLyoKKyAqICBGaWxlIHN5c3RlbXMgdG8gc2tpcAorICovCisvKgorI2lmbmRlZiBNTlRUWVBFX0RFVlBUUworI2RlZmluZSBNTlRUWVBFX0RFVlBUUyAgICJkZXZwdHMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9JR05PUkUKKyNkZWZpbmUgTU5UVFlQRV9JR05PUkUgICAiaWdub3JlIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfUFJPQworI2RlZmluZSBNTlRUWVBFX1BST0MgICAgICJwcm9jIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfU1lTRlMKKyNkZWZpbmUgTU5UVFlQRV9TWVNGUyAgICAic3lzZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9UTVBGUworI2RlZmluZSBNTlRUWVBFX1RNUEZTICAgICJ0bXBmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1VTQkZTCisjZGVmaW5lIE1OVFRZUEVfVVNCRlMgICAgInVzYmZzIgorI2VuZGlmCisqLworCisjZW5kaWYgLyogX05FVFNOTVBfRlNZU19NT1VOVFNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy5oIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYWYzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzLmgKQEAgLTAsMCArMSwxNyBAQAorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzKQorCisjaWYgZGVmaW5lZChzb2xhcmlzKQorIyBpZiBkZWZpbmVkKEhBVkVfUElDTF9IKQorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzKQorIyBlbHNlCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMpCisjIGVuZGlmCisjZWxzZQorIyAgaWYgZGVmaW5lZChORVRTTk1QX1VTRV9TRU5TT1JTX1YzKQorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMpCisjICBlbHNlCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192MikKKyMgIGVuZGlmCisjZW5kaWYKKworLyogY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzKSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2R1bW15X3NlbnNvcnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDI1NTVkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmMKQEAgLTAsMCArMSw2MCBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9zZW5zb3JzLmg+CisKKwordm9pZCBuZXRzbm1wX3NlbnNvcl9hcmNoX2luaXQoIHZvaWQgKSB7CisgICAgLyogTm90aGluZyB0byBkbyAqLworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiSW5pdGlhbGlzZSBEdW1teSBTZW5zb3JzIG1vZHVsZVxuIikpOworfQorCitpbnQKK25ldHNubXBfc2Vuc29yX2FyY2hfbG9hZChuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqdnApIHsKKyAgICB0aW1lX3Qgbm93OworICAgIHN0cnVjdCB0bSAgICAgICAgICAgICAgICAgICp0bTsKKyAgICBuZXRzbm1wX3NlbnNvcl9pbmZvICAgICAgICAqc3A7CisKKyAgICB0aW1lKCZub3cpOworICAgIHRtID0gbG9jYWx0aW1lKCZub3cpOworCisgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJSZWxvYWQgRHVtbXkgU2Vuc29ycyBtb2R1bGVcbiIpKTsKKworICAgIC8qIEZpcnN0IHBzZXVkby1zZW5zb3IgLSBzbG93bHktcmlzaW5nIHRlbXBlcmF0dXJlICovCisgICAgc3AgPSBzZW5zb3JfYnlfbmFtZSggIm1pbnV0ZSIsIE5FVFNOTVBfU0VOU09SX1RZUEVfVEVNUEVSQVRVUkUgKTsKKyAgICBzcC0+dmFsdWUgPSB0bS0+dG1fbWluOworICAgIHNucHJpbnRmKCBzcC0+ZGVzY3IsIDI1NiwgIk1pbnV0ZS1iYXNlZCBwc2V1ZG8tc2Vuc29yIC0gc2xvd2x5LXJpc2luZyB0ZW1wZXJhdHVyZSIgKTsKKyAgICBzcC0+ZmxhZ3N8PSBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKworICAgIC8qIFNlY29uZCBwc2V1ZG8tc2Vuc29yIC0gcXVpY2tseS1yaXNpbmcgdGVtcGVyYXR1cmUgKi8KKyAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCAic2Vjb25kIiwgTkVUU05NUF9TRU5TT1JfVFlQRV9URU1QRVJBVFVSRSApOworICAgIHNwLT52YWx1ZSA9IHRtLT50bV9zZWM7CisgICAgc25wcmludGYoIHNwLT5kZXNjciwgMjU2LCAiU2Vjb25kLWJhc2VkIHBzZXVkby1zZW5zb3IgLSBxdWlja2x5LXJpc2luZyB0ZW1wZXJhdHVyZSIgKTsKKyAgICBzcC0+ZmxhZ3N8PSBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKworICAgIC8qIFRoaXJkIHBzZXVkby1zZW5zb3IgLSBhbm51YWwgZmFuIHNwZWVkICovCisgICAgc3AgPSBzZW5zb3JfYnlfbmFtZSggInllYXIiLCBORVRTTk1QX1NFTlNPUl9UWVBFX1JQTSApOworICAgIHNwLT52YWx1ZSA9IHRtLT50bV95ZWFyICsgMTkwMDsKKyAgICBzbnByaW50Ziggc3AtPmRlc2NyLCAyNTYsICJSUE0gcHNldWRvLXNlbnNvciAtIGFubnVhbCBmYW4gc3BlZWQiICk7CisgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisKKyAgICAvKiBGb3VydGggcHNldWRvLXNlbnNvciAtIGRhaWx5IHZvbHRhZ2UgKi8KKyAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCAiZGF5IiwgTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDICk7CisgICAgc3AtPnZhbHVlID0gdG0tPnRtX21kYXktMjA7CisgICAgc25wcmludGYoIHNwLT5kZXNjciwgMjU2LCAiRGF5LWJhc2VkIHBzZXVkby1zZW5zb3IgLSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSB2b2x0YWdlIiApOworICAgIHNwLT5mbGFnc3w9IE5FVFNOTVBfU0VOU09SX0ZMQUdfQUNUSVZFOworCisgICAgLyogRmlmdGggcHNldWRvLXNlbnNvciAtIG1vbnRobHkgdm9sdGFnZSAqLworICAgIHNwID0gc2Vuc29yX2J5X25hbWUoICJtb250aCIsIE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVEFHRV9EQyApOworICAgIHNwLT52YWx1ZSA9IHRtLT50bV9tb247CisgICAgc25wcmludGYoIHNwLT5kZXNjciwgMjU2LCAiTW9udGgtYmFzZWQgcHNldWRvLXNlbnNvciAtIHBvc2l0aXZlIHZvbHRhZ2UiICk7CisgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisKKyAgICAvKiBTaXh0aCBwc2V1ZG8tc2Vuc29yIC0gYW5udWFsIGRhaWx5IHNvbWV0aGluZyAqLworICAgIHNwID0gc2Vuc29yX2J5X25hbWUoICJ5ZGF5IiwgTkVUU05NUF9TRU5TT1JfVFlQRV9PVEhFUiApOworICAgIHNwLT52YWx1ZSA9IHRtLT50bV95ZGF5OworICAgIHNucHJpbnRmKCBzcC0+ZGVzY3IsIDI1NiwgIkRheS1iYXNlZCBwc2V1ZG8tc2Vuc29yIC0gYW5udWFsIHNvbWV0aGluZyIgKTsKKyAgICBzcC0+ZmxhZ3N8PSBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmggYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2R1bW15X3NlbnNvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZmYjRkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmgKQEAgLTAsMCArMSBAQAorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDY2ZWFjCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmMKQEAgLTAsMCArMSwxODkgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oPgorCisKK2V4dGVybiBOZXRzbm1wQ2FjaGVMb2FkIG5ldHNubXBfc2Vuc29yX2FyY2hfbG9hZDsKK2V4dGVybiB2b2lkICAgICAgICAgICAgIG5ldHNubXBfc2Vuc29yX2FyY2hfaW5pdCggdm9pZCApOworc3RhdGljIGludCAgX3NlbnNvcl9sb2FkKCB2b2lkICk7CitzdGF0aWMgdm9pZCBfc2Vuc29yX2ZyZWUoIHZvaWQgKTsKKworc3RhdGljIGludCBfc2Vuc29yQXV0b1VwZGF0ZSA9IDA7ICAgLyogMCBtZWFucyBvbi1kZW1hbmQgY2FjaGluZyAqLworc3RhdGljIHZvaWQgX3NlbnNvcl91cGRhdGVfc3RhdHMoIHVuc2lnbmVkIGludCwgdm9pZCogKTsKKworbmV0c25tcF9jYWNoZSAgICAgKl9zZW5zb3JfY2FjaGUgICAgID0gTlVMTDsKK25ldHNubXBfY29udGFpbmVyICpfc2Vuc29yX2NvbnRhaW5lciA9IE5VTEw7CitzdGF0aWMgaW50ICAgICAgICAgX3NlbnNvcl9pZHggICAgICAgPSAwOworCit2b2lkIGluaXRfaHdfc2Vuc29ycyggdm9pZCApIHsKKworICAgIGlmICggX3NlbnNvcl9jb250YWluZXIgKQorICAgICAgICByZXR1cm47ICAgLyogQWxyZWFkeSBpbml0aWFsaXNlZCAqLworCisgICAgREVCVUdNU0dUTCgoInNlbnNvcnMiLCAiSW5pdGlhbGlzZSBIYXJkd2FyZSBTZW5zb3JzIG1vZHVsZVxuIikpOworCisgICAgLyoKKyAgICAgKiBEZWZpbmUgYSBjb250YWluZXIgdG8gaG9sZCB0aGUgYmFzaWMgbGlzdCBvZiBzZW5zb3JzCisgICAgICogVGhlIGZvdXIgTE0tU0VOU09SLU1JQiBjb250YWluZXJzIHdpbGwgYmUgY3JlYXRlZCBpbgorICAgICAqICB0aGUgcmVsZXZhbnQgaW5pdGlhbGlzYXRpb24gcm91dGluZShzKQorICAgICAqLworICAgIF9zZW5zb3JfY29udGFpbmVyID0gbmV0c25tcF9jb250YWluZXJfZmluZCgic2Vuc29yVGFibGU6dGFibGVfY29udGFpbmVyIik7CisgICAgaWYgKCBOVUxMID09IF9zZW5zb3JfY29udGFpbmVyICkgeworICAgICAgICBzbm1wX2xvZyggTE9HX0VSUiwgImZhaWxlZCB0byBjcmVhdGUgY29udGFpbmVyIGZvciBzZW5zb3JUYWJsZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG5ldHNubXBfc2Vuc29yX2FyY2hfaW5pdCggKTsKKworICAgIC8qCisgICAgICogSWYgd2UncmUgc2FtcGxpbmcgdGhlIHNlbnNvciBpbmZvcm1hdGlvbiBhdXRvbWF0aWNhbGx5LAorICAgICAqICAgdGhlbiBhcnJhbmdlIGZvciB0aGlzIHRvIGJlIHRyaWdnZXJlZCByZWd1bGFybHkuCisgICAgICoKKyAgICAgKiBJZiB3ZSdyZSBub3Qgc2FtcGxpbmcgdGhlc2UgdmFsdWVzIHJlZ3VsYXJseSwKKyAgICAgKiAgIGNyZWF0ZSBhIHN1aXRhYmxlIGNhY2hlIGhhbmRsZXIgaW5zdGVhZC4KKyAgICAgKi8KKyAgICBpZiAoIF9zZW5zb3JBdXRvVXBkYXRlICkgeworICAgICAgICBERUJVR01TR1RMKCgic2Vuc29ycyIsICJSZWxvYWRpbmcgSGFyZHdhcmUgU2Vuc29ycyBhdXRvbWF0aWNhbGx5ICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbnNvckF1dG9VcGRhdGUpKTsKKyAgICAgICAgc25tcF9hbGFybV9yZWdpc3RlciggX3NlbnNvckF1dG9VcGRhdGUsIFNBX1JFUEVBVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbnNvcl91cGRhdGVfc3RhdHMsIE5VTEwgKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9zZW5zb3JfY2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSggNSwgbmV0c25tcF9zZW5zb3JfbG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NlbnNvcl9mcmVlLCBOVUxMLCAwICk7CisgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzIiwgIlJlbG9hZGluZyBIYXJkd2FyZSBTZW5zb3JzIG9uLWRlbWFuZCAoJXApXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZW5zb3JfY2FjaGUpKTsKKyAgICB9Cit9CisKK3ZvaWQgc2h1dGRvd25faHdfc2Vuc29ycyggdm9pZCApIHsKKyAgICBfc2Vuc29yX2ZyZWUoKTsKK30KKworLyoKKyAqICBSZXR1cm4gdGhlIG1haW4gc2Vuc29yIGNvbnRhaW5lcgorICovCituZXRzbm1wX2NvbnRhaW5lciAqZ2V0X3NlbnNvcl9jb250YWluZXIoIHZvaWQgKSB7IHJldHVybiBfc2Vuc29yX2NvbnRhaW5lcjsgfQorCisvKgorICogIFJldHVybiB0aGUgbWFpbiBzZW5zb3IgY2FjaGUgY29udHJvbCBzdHJ1Y3R1cmUgKGlmIGRlZmluZWQpCisgKi8KK25ldHNubXBfY2FjaGUgKmdldF9zZW5zb3JfY2FjaGUoIHZvaWQgKSB7IHJldHVybiBfc2Vuc29yX2NhY2hlOyB9CisKKworLyoKKyAqIFdyYXBwZXIgcm91dGluZSBmb3IgYXV0b21hdGljYWxseSB1cGRhdGluZyBzZW5zb3Igc3RhdGlzdGljcworICovCit2b2lkCitfc2Vuc29yX3VwZGF0ZV9zdGF0cyggdW5zaWduZWQgaW50IGNsaWVudHJlZywgdm9pZCAqZGF0YSApCit7CisgICAgX3NlbnNvcl9mcmVlKCk7CisgICAgX3NlbnNvcl9sb2FkKCk7Cit9CisKKy8qCisgKiBXcmFwcGVyIHJvdXRpbmUgZm9yIHJlLWxvYWRpbmcgc2Vuc29yIHN0YXRpc3RpY3Mgb24gZGVtYW5kCisgKi8KK2ludAorbmV0c25tcF9zZW5zb3JfbG9hZCggbmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKmRhdGEgKQoreworICAgIHJldHVybiBfc2Vuc29yX2xvYWQoKTsKK30KKworLyoKKyAqIFdyYXBwZXIgcm91dGluZSBmb3IgcmVsZWFzaW5nIGV4cGlyZWQgc2Vuc29yIHN0YXRpc3RpY3MKKyAqLwordm9pZAorbmV0c25tcF9zZW5zb3JfZnJlZSggbmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKmRhdGEgKQoreworICAgIF9zZW5zb3JfZnJlZSgpOworfQorCisKKy8qCisgKiBBcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgcHJvY2Vzc2luZyBvZiBsb2FkaW5nIHNlbnNvciBzdGF0aXN0aWNzCisgKi8KK3N0YXRpYyBpbnQKK19zZW5zb3JfbG9hZCggdm9pZCApCit7CisgICAgbmV0c25tcF9zZW5zb3JfYXJjaF9sb2FkKCBOVUxMLCBOVUxMICk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBBcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgcmVsZWFzZSBvZiBzZW5zb3Igc3RhdGlzdGljcworICovCitzdGF0aWMgdm9pZAorX3NlbnNvcl9mcmVlKCB2b2lkICkKK3sKKyAgICBuZXRzbm1wX3NlbnNvcl9pbmZvICpzcDsKKworICAgIGZvciAoc3AgPSBDT05UQUlORVJfRklSU1QoIF9zZW5zb3JfY29udGFpbmVyICk7CisgICAgICAgICBzcDsKKyAgICAgICAgIHNwID0gQ09OVEFJTkVSX05FWFQoICBfc2Vuc29yX2NvbnRhaW5lciwgc3AgKSkgeworCisgICAgICAgICBzcC0+ZmxhZ3MgJj0gfiBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKyAgICB9Cit9CisKKworLyoKKyAqIFJldHJpZXZlIGEgc2Vuc29yIGVudHJ5IGJ5IG5hbWUsCisgKiAgb3IgKG9wdGlvbmFsbHkpIGluc2VydCBhIG5ldyBvbmUgaW50byB0aGUgY29udGFpbmVyCisgKi8KK25ldHNubXBfc2Vuc29yX2luZm8gKgorc2Vuc29yX2J5X25hbWUoIGNoYXIgKm5hbWUsIGludCBjcmVhdGVfdHlwZSApCit7CisgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAqc3A7CisKKyAgICBERUJVR01TR1RMKCgic2Vuc29yczpuYW1lIiwgIkdldCBzZW5zb3IgZW50cnkgKCVzKVxuIiwgbmFtZSkpOworCisgICAgLyoKKyAgICAgKiAgTG9vayB0aHJvdWdoIHRoZSBsaXN0IGZvciBhIG1hdGNoaW5nIGVudHJ5CisgICAgICovCisgICAgICAgIC8qIC4uIG9yIHVzZSBhIHNlY29uZGFyeSBpbmRleCBjb250YWluZXIgPz8gKi8KKyAgICBmb3IgKHNwID0gQ09OVEFJTkVSX0ZJUlNUKCBfc2Vuc29yX2NvbnRhaW5lciApOworICAgICAgICAgc3A7CisgICAgICAgICBzcCA9IENPTlRBSU5FUl9ORVhUKCAgX3NlbnNvcl9jb250YWluZXIsIHNwICkpIHsKKworICAgICAgICBpZiAoICFzdHJjbXAoIG5hbWUsIHNwLT5uYW1lICkpCisgICAgICAgICAgICByZXR1cm4gc3A7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOb3QgZm91bmQuLi4KKyAgICAgKi8KKyAgICBpZiAoIGNyZWF0ZV90eXBlID09IE5FVFNOTVBfU0VOU09SX0ZJTkRfRVhJU1QgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOm5hbWUiLCAiTm8gc3VjaCBzZW5zb3IgZW50cnlcbiIpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyoKKyAgICAgKiAuLi4gc28gbGV0J3MgY3JlYXRlIGEgbmV3IG9uZSwgdXNpbmcgdGhlIHR5cGUgc3VwcGxpZWQKKyAgICAgKi8KKyAgICBzcCA9IFNOTVBfTUFMTE9DX1RZUEVERUYoIG5ldHNubXBfc2Vuc29yX2luZm8gKTsKKyAgICBpZiAoIHNwICkgeworICAgICAgICBpZiAoc3RybGVuKG5hbWUpID49IHNpemVvZihzcC0+bmFtZSkpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJTZW5zb3IgbmFtZSBpcyB0b28gbGFyZ2U6ICVzXG4iLCBuYW1lKTsKKyAgICAgICAgICAgIGZyZWUoc3ApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc3RyY3B5KCBzcC0+bmFtZSwgbmFtZSApOworICAgICAgICBzcC0+dHlwZSA9IGNyZWF0ZV90eXBlOworICAgICAgICAvKgorICAgICAgICAgKiBTZXQgdXAgdGhlIGluZGV4IHZhbHVlLgorICAgICAgICAgKiAgCisgICAgICAgICAqIEFsbCB0aGlzIHRyb3VibGUsIGp1c3QgZm9yIGEgc2ltcGxlIGludGVnZXIuCisgICAgICAgICAqIFN1cmVseSB0aGVyZSBtdXN0IGJlIGEgYmV0dGVyIHdheT8KKyAgICAgICAgICovCisgICAgICAgIHNwLT5pZHgubGVuICA9IDE7CisgICAgICAgIHNwLT5pZHgub2lkcyA9IFNOTVBfTUFMTE9DX1RZUEVERUYoIG9pZCApOworICAgICAgICBzcC0+aWR4Lm9pZHNbMF0gPSArK19zZW5zb3JfaWR4OworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOm5hbWUiLCAiQ3JlYXRlIHNlbnNvciBlbnRyeSAodHlwZSA9ICVkLCBpbmRleCA9ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX3R5cGUsIF9zZW5zb3JfaWR4KSk7CisgICAgQ09OVEFJTkVSX0lOU0VSVCggX3NlbnNvcl9jb250YWluZXIsIHNwICk7CisgICAgcmV0dXJuIHNwOworfQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvaHdfc2Vuc29ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYzI2Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuaApAQCAtMCwwICsxIEBACit2b2lkIGluaXRfaHdfc2Vuc29ycyggdm9pZCApOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9rc3RhdF9zZW5zb3JzLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTAzYzQzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9rc3RhdF9zZW5zb3JzLmMKQEAgLTAsMCArMSwxNjAgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oPgorCisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSA8a3N0YXQuaD4KKyNpbmNsdWRlIDwvdXNyL3BsYXRmb3JtL3N1bjR1L2luY2x1ZGUvc3lzL2VudmN0cmwuaD4KKwordm9pZCBuZXRzbm1wX3NlbnNvcl9hcmNoX2luaXQoIHZvaWQgKSB7CisgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJJbml0aWFsaXNlIEtTdGF0IFNlbnNvcnMgbW9kdWxlXG4iKSk7Cit9CisKKworaW50CituZXRzbm1wX3NlbnNvcl9hcmNoX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZwKSB7CisgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAgICAgICAgKnNwOworCisgICAgaW50ICAgICAgICAgaTsKKyAgICBjb25zdCBjaGFyICpmYW50eXBlc1tdPXsiQ1BVIiwiUFdSIiwiQUZCIn07CisgICAgY2hhciAgICAgICAgbmFtZVsgMjU2IF07CisKKyAgICBrc3RhdF9jdGxfdCAgICAqa2M7CisgICAga3N0YXRfdCAgICAgICAgKmtwOworICAgIGVudmN0cmxfZmFuX3QgICpmYW5faW5mbzsKKyAgICBlbnZjdHJsX3BzX3QgICAqcG93ZXJfaW5mbzsKKyAgICBlbnZjdHJsX2VuY2xfdCAqZW5jX2luZm87CisKKworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiUmVsb2FkIEtTdGF0IFNlbnNvcnMgbW9kdWxlXG4iKSk7CisKKyAgICBrYyA9IGtzdGF0X29wZW4oKTsKKyAgICBpZiAoIGtjID09IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJDb3VsZG4ndCBvcGVuIGtzdGF0XG4iKSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICAKKworICAgIC8qCisgICAgICogUmV0cmlldmUgZmFuIGluZm9ybWF0aW9uCisgICAgICovCisgICAga3AgPSBrc3RhdF9sb29rdXAoIGtjLCBFTlZDVFJMX01PRFVMRV9OQU1FLCAwLCBFTlZDVFJMX0tTVEFUX0ZBTlNUQVQpOworICAgIGlmICgoIGtwID09IDAgKSB8fCAoa3N0YXRfcmVhZCgga2MsIGtwLCAwICkgPT0gLTEgKSkgeworICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoIiwgIk5vIGZhbiBpbmZvcm1hdGlvblxuIikpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZhbl9pbmZvID0gKGVudmN0cmxfZmFuX3QgKilrcC0+a3NfZGF0YTsgICAgICAgIAorICAgICAgICBmb3IgKGk9MDsgaTxrcC0+a3NfbmRhdGE7IGkrKykgeworICAgICAgICAgICAgbWVtc2V0KCBuYW1lLCAwLCAyNTYgKTsKKyAgICAgICAgICAgIHNucHJpbnRmKCBuYW1lLCAyNTUsICIlcyVkIiwgZmFudHlwZXNbZmFuX2luZm8tPnR5cGVdLCBmYW5faW5mby0+aW5zdGFuY2UgKTsKKworICAgICAgICAgICAgc3AgPSBzZW5zb3JfYnlfbmFtZSggbmFtZSwgTkVUU05NUF9TRU5TT1JfVFlQRV9SUE0gKTsKKyAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgc3AtPnZhbHVlID0gZmFuX2luZm8tPmZhbnNwZWVkOworICAgICAgICAgICAgICAgIHNwLT5mbGFnc3w9IE5FVFNOTVBfU0VOU09SX0ZMQUdfQUNUSVZFOworICAgICAgICAgICAgICAgIHNucHJpbnRmKCBzcC0+ZGVzY3IsIDI1NSwgImZhbiB0eXBlICVzIG51bWJlciAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbnR5cGVzW2Zhbl9pbmZvLT50eXBlXSwgZmFuX2luZm8tPmluc3RhbmNlICk7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBmYW5faW5mbysrOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvKgorICAgICAqIFJldHJpZXZlIFBvd2VyIFN1cHBseSBpbmZvcm1hdGlvbgorICAgICAqLworICAgIGtwID0ga3N0YXRfbG9va3VwKCBrYywgRU5WQ1RSTF9NT0RVTEVfTkFNRSwgMCwgRU5WQ1RSTF9LU1RBVF9QU05BTUUpOworICAgIGlmICgoIGtwID09IDAgKSB8fCAoa3N0YXRfcmVhZCgga2MsIGtwLCAwICkgPT0gLTEgKSkgeworICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoIiwgIk5vIFBTVSBpbmZvcm1hdGlvblxuIikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHBvd2VyX2luZm8gPSAoZW52Y3RybF9wc190ICopa3AtPmtzX2RhdGE7ICAgICAgICAKKyAgICAgICAgZm9yIChpPTA7IGk8a3AtPmtzX25kYXRhOyBpKyspIHsKKyAgICAgICAgICAgIG1lbXNldCggbmFtZSwgMCwgMjU2ICk7CisgICAgICAgICAgICBzbnByaW50ZiggbmFtZSwgMjU1LCAiUFNVJWQiLCBwb3dlcl9pbmZvLT5pbnN0YW5jZSApOworCisgICAgICAgICAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCBuYW1lLCBORVRTTk1QX1NFTlNPUl9UWVBFX1RFTVBFUkFUVVJFKTsKKyAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgc3AtPnZhbHVlID0gcG93ZXJfaW5mby0+cHNfdGVtcHI7CisgICAgICAgICAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgICAgICAgICAgICAgc25wcmludGYoIHNwLT5kZXNjciwgMjU1LCAicG93ZXIgc3VwcGx5ICVkIiwgcG93ZXJfaW5mby0+aW5zdGFuY2UgKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIHBvd2VyX2luZm8rKzsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLyoKKyAgICAgKiBSZXRyaWV2ZSBFbmNsb3N1cmUgaW5mb3JtYXRpb24KKyAgICAgKi8KKyAgICBrcCA9IGtzdGF0X2xvb2t1cCgga2MsIEVOVkNUUkxfTU9EVUxFX05BTUUsIDAsIEVOVkNUUkxfS1NUQVRfRU5DTCk7CisgICAgaWYgKCgga3AgPT0gMCApIHx8IChrc3RhdF9yZWFkKCBrYywga3AsIDAgKSA9PSAtMSApKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiTm8gZW5jbG9zdXJlIGluZm9ybWF0aW9uXG4iKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW5jX2luZm8gPSAoZW52Y3RybF9lbmNsX3QgKilrcC0+a3NfZGF0YTsgICAgICAgIAorICAgICAgICBmb3IgKGk9MDsgaTxrcC0+a3NfbmRhdGE7IGkrKykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFRoZSBlbmNsb3N1cmUgaW5mb3JtYXRpb24gY292ZXJzIHNldmVyYWwgZGlmZmVyZW50IHR5cGVzIG9mIHNlbnNvcgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzd2l0Y2ggKCBlbmNfaW5mby0+dHlwZSApIHsKKyAgICAgICAgICAgIGNhc2UgRU5WQ1RSTF9FTkNMX0ZTUDoKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJFbmNsb3N1cmUgRnJvbnQgUGFuZWxcbiIpKTsKKyAgICAgICAgICAgICAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCAiRlNQIiwgTkVUU05NUF9TRU5TT1JfVFlQRV9PVEhFUik7CisgICAgICAgICAgICAgICAgaWYgKCBzcCApIHsKKyAgICAgICAgICAgICAgICAgICAgc3AtPnZhbHVlID0gZW5jX2luZm8tPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBzcC0+ZmxhZ3N8PSBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIEVOVkNUUkxfRU5DTF9BTUJURU1QUjoKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJFbmNsb3N1cmUgQW1iaWVudCBUZW1wZXJhdHVyZVxuIikpOworICAgICAgICAgICAgICAgIHNwID0gc2Vuc29yX2J5X25hbWUoICJBbWJpZW50IiwgTkVUU05NUF9TRU5TT1JfVFlQRV9URU1QRVJBVFVSRSk7CisgICAgICAgICAgICAgICAgaWYgKCBzcCApIHsKKyAgICAgICAgICAgICAgICAgICAgc3AtPnZhbHVlID0gZW5jX2luZm8tPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBzcC0+ZmxhZ3N8PSBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgRU5WQ1RSTF9FTkNMX0NQVVRFTVBSOgorICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgIkVuY2xvc3VyZSBDUFUgVGVtcGVyYXR1cmVcbiIpKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQoIG5hbWUsIDAsIDI1NiApOworICAgICAgICAgICAgICAgIHNucHJpbnRmKCBuYW1lLCAyNTUsICJDUFUlZCIsIGVuY19pbmZvLT5pbnN0YW5jZSApOworICAgICAgICAgICAgICAgIHNwID0gc2Vuc29yX2J5X25hbWUoIG5hbWUsIE5FVFNOTVBfU0VOU09SX1RZUEVfVEVNUEVSQVRVUkUpOworICAgICAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgICAgIHNwLT52YWx1ZSA9IGVuY19pbmZvLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKCBzcC0+ZGVzY3IsIDI1NSwgIkNQVSVkIHRlbXBlcmF0dXJlIiwgZW5jX2luZm8tPmluc3RhbmNlICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEVOVkNUUkxfRU5DTF9CQUNLUExBTkU0OgorICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgIkVuY2xvc3VyZSBCYWNrcGxhbmU0XG4iKSk7CisgICAgICAgICAgICAgICAgc3AgPSBzZW5zb3JfYnlfbmFtZSggIkJhY2twbGFuZTQiLCBORVRTTk1QX1NFTlNPUl9UWVBFX09USEVSKTsKKyAgICAgICAgICAgICAgICBpZiAoIHNwICkgeworICAgICAgICAgICAgICAgICAgICBzcC0+dmFsdWUgPSBlbmNfaW5mby0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHNwLT5mbGFnc3w9IE5FVFNOTVBfU0VOU09SX0ZMQUdfQUNUSVZFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRU5WQ1RSTF9FTkNMX0JBQ0tQTEFORTg6CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiRW5jbG9zdXJlIEJhY2twbGFuZTRcbiIpKTsKKyAgICAgICAgICAgICAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCAiQmFja3BsYW5lNCIsIE5FVFNOTVBfU0VOU09SX1RZUEVfT1RIRVIpOworICAgICAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgICAgIHNwLT52YWx1ZSA9IGVuY19pbmZvLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OiAgICAKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJVbnJlY29nbmlzZWQgRW5jbG9zdXJlIGVudHJ5ICglZCluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNfaW5mby0+dHlwZSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbmNfaW5mbysrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMva3N0YXRfc2Vuc29ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZmZiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMuaApAQCAtMCwwICsxIEBACitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192Mi5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjNmMTQwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuYwpAQCAtMCwwICsxLDc0IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL3NlbnNvcnMuaD4KKworI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzZW5zb3JzL3NlbnNvcnMuaD4KKwordm9pZCBuZXRzbm1wX3NlbnNvcl9hcmNoX2luaXQoIHZvaWQgKSB7CisgICAgRklMRSAqZnAgPSBmb3BlbigiL2V0Yy9zZW5zb3JzLmNvbmYiLCAiciIpOworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiSW5pdGlhbGlzZSBMTSBTZW5zb3JzIG1vZHVsZVxuIikpOworICAgIHNlbnNvcnNfaW5pdCggZnAgKTsKK30KKworaW50CituZXRzbm1wX3NlbnNvcl9hcmNoX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZwKSB7CisgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAgICAgICAgKnNwOworICAgIGNvbnN0IHNlbnNvcnNfY2hpcF9uYW1lICAgICpjaGlwOworICAgIGNvbnN0IHNlbnNvcnNfZmVhdHVyZV9kYXRhICpkYXRhOworICAgIGludCAgICAgICAgICAgICBjaGlwX25yID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiUmVsb2FkIExNIFNlbnNvcnMgbW9kdWxlXG4iKSk7CisgICAgd2hpbGUgKChjaGlwID0gc2Vuc29yc19nZXRfZGV0ZWN0ZWRfY2hpcHMoJmNoaXBfbnIpKSkgeworCWludCAgICAgICAgICAgICBhID0gMDsKKwlpbnQgICAgICAgICAgICAgYiA9IDA7CisKKyAgICAgICAgd2hpbGUgKChkYXRhID0gc2Vuc29yc19nZXRfYWxsX2ZlYXR1cmVzKCpjaGlwLCAmYSwgJmIpKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiZ2V0X2FsbF9mZWF0dXJlcyAoJWQsICVkKVxuIiwgYSwgYikpOworICAgICAgICAgICAgY2hhciAgICAgICAgICAgKmxhYmVsID0gTlVMTDsKKyAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICB2YWw7CisgICAgICAgICAgICBpbnQgICAgICAgICAgICAgdHlwZSA9IE5FVFNOTVBfU0VOU09SX1RZUEVfT1RIRVI7CisKKyAgICAgICAgICAgIGlmICgoZGF0YS0+bW9kZSAmIFNFTlNPUlNfTU9ERV9SKSAmJgorICAgICAgICAgICAgICAgIChkYXRhLT5tYXBwaW5nID09IFNFTlNPUlNfTk9fTUFQUElORykgJiYKKyAgICAgICAgICAgICAgICAhc2Vuc29yc19nZXRfbGFiZWwoKmNoaXAsIGRhdGEtPm51bWJlciwgJmxhYmVsKSAmJgorICAgICAgICAgICAgICAgICFzZW5zb3JzX2dldF9mZWF0dXJlKCpjaGlwLCBkYXRhLT5udW1iZXIsICZ2YWwpKSB7CisKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICIlcyA9ICVmXG4iLCBsYWJlbCwgdmFsKSk7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBEZXRlcm1pbmUgdGhlIHR5cGUgb2Ygc2Vuc29yIGZyb20gdGhlIGRlc2NyaXB0aW9uLgorICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogSWYgdGhlIHRleHQgYmVpbmcgbG9va2VkIGZvciBiZWxvdyBpcyBub3QgaW4gdGhlIGxhYmVsIG9mIGEKKyAgICAgICAgICAgICAgICAgKiBnaXZlbiBzZW5zb3IgKGUuZy4sIHRoZSB0ZW1wMSBzZW5zb3IgaGFzIGJlZW4gbGFiZWxlZCAnQ1BVJworICAgICAgICAgICAgICAgICAqIHJhdGhlciB0aGFuICdDUFUgdGVtcCcpIGl0IHdpbGwgYmUgY2F0ZWdvcmlzZWQgYXMgT1RIRVIuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgaWYgKHN0cnN0cihsYWJlbCwgIlYiKSkgeworICAgICAgICAgICAgICAgICAgICB0eXBlID0gTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3Ryc3RyKGxhYmVsLCAiZmFuIikgfHwgc3Ryc3RyKGxhYmVsLCAiRmFuIikpIHsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IE5FVFNOTVBfU0VOU09SX1RZUEVfUlBNOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3Ryc3RyKGxhYmVsLCAidGVtcCIpIHx8IHN0cnN0cihsYWJlbCwgIlRlbXAiKSkgeworICAgICAgICAgICAgICAgICAgICB0eXBlID0gTkVUU05NUF9TRU5TT1JfVFlQRV9URU1QRVJBVFVSRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFVzZSB0aGlzIHR5cGUgdG8gY3JlYXRlIGEgbmV3IHNlbnNvciBlbnRyeQorICAgICAgICAgICAgICAgICAqICAoaW5zZXJ0aW5nIGl0IGluIHRoZSBhcHByb3ByaWF0ZSBzdWItY29udGFpbmVycykKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCBsYWJlbCwgdHlwZSApOworICAgICAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgICAgIHNwLT52YWx1ZSA9IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCSAgICBpZiAobGFiZWwpIHsKKwkJZnJlZShsYWJlbCk7CisJCWxhYmVsID0gTlVMTDsKKwkgICAgfQorICAgICAgICB9IC8qIGVuZCB3aGlsZSBkYXRhICovCisgICAgfSAvKiBlbmQgd2hpbGUgY2hpcCAqLworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192Mi5oIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZmYjRkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuaApAQCAtMCwwICsxIEBACitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGFmOWU2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYwpAQCAtMCwwICsxLDEwMiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9zZW5zb3JzLmg+CisKKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c2Vuc29ycy9zZW5zb3JzLmg+CisKKwordm9pZCBuZXRzbm1wX3NlbnNvcl9hcmNoX2luaXQoIHZvaWQgKSB7CisgICAgRklMRSAqZnAgPSBmb3BlbigiL2V0Yy9zZW5zb3JzLmNvbmYiLCAiciIpOworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiSW5pdGlhbGlzZSB2MyBMTSBTZW5zb3JzIG1vZHVsZVxuIikpOworICAgIHNlbnNvcnNfaW5pdCggZnAgKTsKK30KKworaW50CituZXRzbm1wX3NlbnNvcl9hcmNoX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZwKSB7CisgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAgICAgICAgKnNwOworICAgIGNvbnN0IHNlbnNvcnNfY2hpcF9uYW1lICAgICpjaGlwOworICAgIGNvbnN0IHNlbnNvcnNfZmVhdHVyZSAgICAgICpkYXRhOworICAgIGNvbnN0IHNlbnNvcnNfc3ViZmVhdHVyZSAgICpkYXRhMjsKKyAgICBpbnQgICAgICAgICAgICAgY2hpcF9uciA9IDA7CisKKyAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoIiwgIlJlbG9hZCB2MyBMTSBTZW5zb3JzIG1vZHVsZVxuIikpOworICAgIHdoaWxlICgoY2hpcCA9IHNlbnNvcnNfZ2V0X2RldGVjdGVkX2NoaXBzKCBOVUxMLCAmY2hpcF9ucikpKSB7CisJaW50ICAgICAgICAgICAgIGEgPSAwOworCisgICAgICAgIHdoaWxlICgoZGF0YSA9IHNlbnNvcnNfZ2V0X2ZlYXR1cmVzKCBjaGlwLCAmYSkpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJnZXRfZmVhdHVyZXMgKCVzLCAlZClcbiIsIGRhdGEtPm5hbWUsIGRhdGEtPm51bWJlcikpOworCSAgICBpbnQgICAgICAgICAgICAgYiA9IDA7CisgCisKKyAgICAgICAgICAgIHdoaWxlICgoZGF0YTIgPSBzZW5zb3JzX2dldF9hbGxfc3ViZmVhdHVyZXMoIGNoaXAsIGRhdGEsICZiKSkpIHsKKyAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAqbGFiZWwgPSBOVUxMOworICAgICAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICB2YWwgPSAwOworICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICB0eXBlID0gTkVUU05NUF9TRU5TT1JfVFlQRV9PVEhFUjsKKworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgIiAgZ2V0X3N1YmZlYXR1cmVzICglcywgJWQpXG4iLCBkYXRhMi0+bmFtZSwgZGF0YTItPm51bWJlcikpOworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQ2hlY2sgdGhlIHR5cGUgb2YgdGhpcyBzdWJmZWF0dXJlLAorICAgICAgICAgICAgICAgICAqICAgY29uY2VudHJhdGluZyBvbiB0aGUgbWFpbiAiaW5wdXQiIG1lYXN1cmVtZW50cy4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCBkYXRhMi0+dHlwZSApIHsKKyAgICAgICAgICAgICAgICBjYXNlIFNFTlNPUlNfU1VCRkVBVFVSRV9JTl9JTlBVVDoKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVEFHRV9EQzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTRU5TT1JTX1NVQkZFQVRVUkVfRkFOX0lOUFVUOgorICAgICAgICAgICAgICAgICAgICB0eXBlID0gTkVUU05NUF9TRU5TT1JfVFlQRV9SUE07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU0VOU09SU19TVUJGRUFUVVJFX1RFTVBfSU5QVVQ6CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBORVRTTk1QX1NFTlNPUl9UWVBFX1RFTVBFUkFUVVJFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNFTlNPUlNfU1VCRkVBVFVSRV9WSUQ6CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBORVRTTk1QX1NFTlNPUl9UWVBFX1ZPTFRBR0VfREM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIC8qIFNraXAgZXZlcnl0aGluZyBvdGhlciB0aGFuIHRoZXNlIGJhc2ljIHNlbnNvciBmZWF0dXJlcyAtID8/PyAqLworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICIgIFNraXAgdHlwZSAleFxuIiwgZGF0YTItPnR5cGUpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBHZXQgdGhlIG5hbWUgYW5kIHZhbHVlIG9mIHRoaXMgc3ViZmVhdHVyZQorICAgICAgICAgICAgICAgICAqLworLyoKKyAgICAgICAgICAgICAgICBpZiAoIShsYWJlbCA9IHNlbnNvcnNfZ2V0X2xhYmVsKGNoaXAsIGRhdGEpKSkgeworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICIgIENhbid0IGdldCBuYW1lICglcylcbiIsIGxhYmVsKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc2Vuc29yc19nZXRfdmFsdWUoY2hpcCwgZGF0YTItPm51bWJlciwgJnZhbCkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgIiAgQ2FuJ3QgZ2V0IHZhbHVlICglZilcbiIsIHZhbCkpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisqLworICAgICAgICAgICAgICAgIGlmICghKGxhYmVsID0gc2Vuc29yc19nZXRfbGFiZWwoY2hpcCwgZGF0YSkpIHx8CisgICAgICAgICAgICAgICAgICAgICAoc2Vuc29yc19nZXRfdmFsdWUoY2hpcCwgZGF0YTItPm51bWJlciwgJnZhbCkgPCAwKSkgeworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICIgIENhbid0IGdldCBuYW1lL3ZhbHVlICglcywgJWYpXG4iLCBsYWJlbCwgdmFsKSk7CisgICAgICAgICAgICAgICAgICAgIGZyZWUobGFiZWwpOworICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICIlcyA9ICVmXG4iLCBsYWJlbCwgdmFsKSk7CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFVzZSB0aGlzIHR5cGUgdG8gY3JlYXRlIGEgbmV3IHNlbnNvciBlbnRyeQorICAgICAgICAgICAgICAgICAqICAoaW5zZXJ0aW5nIGl0IGluIHRoZSBhcHByb3ByaWF0ZSBzdWItY29udGFpbmVycykKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCBsYWJlbCwgdHlwZSApOworICAgICAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgICAgIHNwLT52YWx1ZSA9IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgICAgICAgICAgICAgfQorCSAgICAgICAgaWYgKGxhYmVsKSB7CisJCSAgICBmcmVlKGxhYmVsKTsKKwkJICAgIGxhYmVsID0gTlVMTDsKKwkgICAgICAgIH0KKyAgICAgICAgICAgIH0gLyogZW5kIHdoaWxlIGRhdGEyICovCisgICAgICAgIH0gLyogZW5kIHdoaWxlIGRhdGEgKi8KKyAgICB9IC8qIGVuZCB3aGlsZSBjaGlwICovCisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmggYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZmZiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5oCkBAIC0wLDAgKzEgQEAKK2NvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL3NlbnNvcnMvaHdfc2Vuc29ycykKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvcGljbGRfc2Vuc29ycy5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRjNzAwNgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvcGljbGRfc2Vuc29ycy5jCkBAIC0wLDAgKzEsMzQwIEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL3NlbnNvcnMuaD4KKworI2luY2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgPHBpY2wuaD4KKyNpbmNsdWRlIDwvdXNyL3BsYXRmb3JtL3N1bjR1L2luY2x1ZGUvc3lzL2VudmN0cmwuaD4KKwordm9pZCBuZXRzbm1wX3NlbnNvcl9hcmNoX2luaXQoIHZvaWQgKSB7CisgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJJbml0aWFsaXNlIFBJQ0xkIFNlbnNvcnMgbW9kdWxlXG4iKSk7CisgICAgcGljbF9pbml0aWFsaXplKCk7Cit9CisKKworLyoKKyAqIEhhbmRsZSBhIG51bWVyaWMtdmFsdWVkIHNlbnNvcgorICovCitzdGF0aWMgaW50CityZWFkX251bV9zZW5zb3IoIHBpY2xfbm9kZWhkbF90IGNoaWxkaCwgY2hhciAqcHJvcHZhbCwgZmxvYXQgKnZhbHVlICkKK3sKKyAgICBwaWNsX25vZGVoZGxfdCAgc2Vuc29yaDsKKyAgICBwaWNsX3Byb3BpbmZvX3Qgc2Vuc29yX2luZm87CisgICAgcGljbF9lcnJub190ICAgIGVycm9yX2NvZGU7CisKKyAgICB1bmlvbiB2YWx1IHsKKyAgICAgICAgY2hhciBidWZbUElDTF9QUk9QU0laRV9NQVhdOworICAgICAgICB1aW50MzJfdCB1czQ7CisgICAgICAgIHVpbnQxNl90IHVzMjsKKyAgICAgICAgaW50MzJfdCBpczQ7CisgICAgICAgIGludDE2X3QgaXMyOworICAgICAgICBmbG9hdCBmOworICAgIH0gdmFsOworCisgICAgLyoKKyAgICAgKiAgUmV0cmlldmUgdGhlIHNwZWNpZmllZCBzZW5zb3IgaW5mb3JtYXRpb24gYW5kIHZhbHVlCisgICAgICovCisgICAgZXJyb3JfY29kZSA9IHBpY2xfZ2V0X3Byb3BpbmZvX2J5X25hbWUoY2hpbGRoLCBwcm9wdmFsLCAmc2Vuc29yX2luZm8sICZzZW5zb3JoKTsKKyAgICBpZiAoIGVycm9yX2NvZGUgIT0gUElDTF9TVUNDRVNTICkgeworICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJzZW5zb3IgaW5mbyBsb29rdXAgZmFpbGVkICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGUpKTsKKyAgICAgICAgcmV0dXJuKCBlcnJvcl9jb2RlICk7CisgICAgfQorCisgICAgZXJyb3JfY29kZSA9IHBpY2xfZ2V0X3Byb3B2YWwoc2Vuc29yaCwgJnZhbC5idWYsIHNlbnNvcl9pbmZvLnNpemUpOworICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgInNlbnNvciB2YWx1ZSBsb29rdXAgZmFpbGVkICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGUpKTsKKyAgICAgICAgcmV0dXJuKCBlcnJvcl9jb2RlICk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiAgQ2hlY2sgdGhlIHZhbGlkaXR5ICh0eXBlIGFuZCBzaXplKSBvZiB0aGlzIHZhbHVlCisgICAgICovCisgICAgaWYgKCBzZW5zb3JfaW5mby50eXBlID09IFBJQ0xfUFRZUEVfRkxPQVQgKSB7CisgICAgICAgICp2YWx1ZSA9IHZhbC5mOworICAgIH0gZWxzZSBpZiAoIHNlbnNvcl9pbmZvLnR5cGUgPT0gUElDTF9QVFlQRV9VTlNJR05FRF9JTlQgKSB7CisgICAgICAgIC8qIDE2LWJpdCBvciAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcnMgKi8KKyAgICAgICAgaWYgKCBzZW5zb3JfaW5mby5zaXplID09IDIgKSB7CisgICAgICAgICAgICAqdmFsdWUgPSB2YWwudXMyOworICAgICAgICB9IGVsc2UgaWYgKCBzZW5zb3JfaW5mby5zaXplID09IDQgKSB7IAorICAgICAgICAgICAgKnZhbHVlID0gdmFsLnVzNDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgInVuc2lnbmVkIGludGVnZXIgKCVkIGJpdClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zb3JfaW5mby5zaXplICogOCkpOworICAgICAgICAgICAgcmV0dXJuIFBJQ0xfRkFJTFVSRTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoIHNlbnNvcl9pbmZvLnR5cGUgPT0gUElDTF9QVFlQRV9JTlQgKSB7CisgICAgICAgIC8qIDE2LWJpdCBvciAzMi1iaXQgc2lnbmVkIGludGVnZXJzICovCisgICAgICAgIGlmICggc2Vuc29yX2luZm8uc2l6ZSA9PSAyICkgeworICAgICAgICAgICAgKnZhbHVlID0gdmFsLmlzMjsKKyAgICAgICAgfSBlbHNlIGlmICggc2Vuc29yX2luZm8uc2l6ZSA9PSA0ICkgeyAKKyAgICAgICAgICAgICp2YWx1ZSA9IHZhbC5pczQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJzaWduZWQgaW50ZWdlciAoJWQgYml0KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNvcl9pbmZvLnNpemUgKiA4KSk7CisgICAgICAgICAgICByZXR1cm4gUElDTF9GQUlMVVJFOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAidW5yZWNvZ25pc2VkIHR5cGUgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc29yX2luZm8udHlwZSkpOworICAgICAgICByZXR1cm4gUElDTF9GQUlMVVJFOworICAgIH0KKworICAgIHJldHVybiBlcnJvcl9jb2RlOworfQorCitzdGF0aWMgaW50Citwcm9jZXNzX251bV9zZW5zb3IoIHBpY2xfbm9kZWhkbF90IGNoaWxkaCwgY2hhciAqcHJvcG5hbWUsIGNoYXIgKnByb3B2YWwsIGludCB0eXAgKQoreworICAgIG5ldHNubXBfc2Vuc29yX2luZm8gICAgICAgICpzcDsKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU7CisgICAgcGljbF9lcnJub190ICAgIGVycm9yX2NvZGU7CisKKyAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCBwcm9wbmFtZSwgdHlwICk7CisgICAgaWYgKCAhc3AgKSB7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZXJyb3JfY29kZSA9IHJlYWRfbnVtX3NlbnNvciggY2hpbGRoLCBwcm9wdmFsLCAmdmFsdWUgKTsKKyAgICBpZiAoIGVycm9yX2NvZGUgPT0gUElDTF9TVUNDRVNTICkgeworICAgICAgICBzcC0+dmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiRmFpbGVkIHRvIHJlYWQgJXMgc2Vuc29yIHZhbHVlICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BuYW1lLCBlcnJvcl9jb2RlKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKworCisvKgorICogICAgSGFuZGxlIGFuIGVudW1lcmF0aW9uLXZhbHVlZCBzZW5zb3IKKyAqLworY2hhciAqc3dpdGNoX3NldHRpbmdzW10gPSB7ICJPRkYiLCJPTiIsIk5PUk1BTCIsIkxPQ0tFRCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVOS05PV04iLCJESUFHIiwiU0VDVVJFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMIH07CitjaGFyICpsZWRfc2V0dGluZ3NbXSAgICA9IHsgIk9GRiIsIk9OIiwiQkxJTksiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgfTsKK2NoYXIgKmkyY19zZXR0aW5nc1tdICAgID0geyAiT0siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgfTsKKworc3RhdGljIGludAorcmVhZF9lbnVtX3NlbnNvciggcGljbF9ub2RlaGRsX3QgY2hpbGRoLCBmbG9hdCAqdmFsdWUsIGNoYXIgKipvcHRpb25zICkKK3sKKyAgICBwaWNsX25vZGVoZGxfdCAgc2Vuc29yaDsKKyAgICBwaWNsX3Byb3BpbmZvX3Qgc2Vuc29yX2luZm87CisgICAgcGljbF9lcnJub190ICAgIGVycm9yX2NvZGU7CisgICAgY2hhciAgICAgICAgICAgIHN0YXRlW1BJQ0xfUFJPUFNJWkVfTUFYXTsKKyAgICBpbnQgICAgICAgICAgICAgaTsKKworICAgIC8qCisgICAgICogIFJldHJpZXZlIHRoZSBzcGVjaWZpZWQgc2Vuc29yIGluZm9ybWF0aW9uIGFuZCB2YWx1ZQorICAgICAqLworICAgIGVycm9yX2NvZGUgPSBwaWNsX2dldF9wcm9waW5mb19ieV9uYW1lKGNoaWxkaCwgIlN0YXRlIiwgJnNlbnNvcl9pbmZvLCAmc2Vuc29yaCk7CisgICAgaWYgKCBlcnJvcl9jb2RlICE9IFBJQ0xfU1VDQ0VTUyApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAic2Vuc29yIGluZm8gbG9va3VwIGZhaWxlZCAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlKSk7CisgICAgICAgIHJldHVybiggZXJyb3JfY29kZSApOworICAgIH0KKworICAgIGVycm9yX2NvZGUgPSBwaWNsX2dldF9wcm9wdmFsKHNlbnNvcmgsIHN0YXRlLCBzZW5zb3JfaW5mby5zaXplKTsKKyAgICBpZiAoIGVycm9yX2NvZGUgIT0gUElDTF9TVUNDRVNTICkgeworICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJzZW5zb3IgdmFsdWUgbG9va3VwIGZhaWxlZCAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlKSk7CisgICAgICAgIHJldHVybiggZXJyb3JfY29kZSApOworICAgIH0KKworICAgIC8qCisgICAgICogVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyBlbnRyeSBpbiB0aGUgbGlzdCBvZiBvcHRpb25zLgorICAgICAqIE5vdGUgdGhhdCBzb21lIHBsYXRmb3JtcyBtYXkgdXNlIHVwcGVyIG9yIGxvd2VyIGNhc2UKKyAgICAgKiAgIHZlcnNpb25zIG9mIHRoZXNlIGVudW1lcmF0aW9uIHZhbHVlcworICAgICAqICAoc28gdGhlIGNoZWNrcyBhcmUgY2FzZSBpbnNlbnNpdGl2ZSkKKyAgICAgKi8KKyAgICAqdmFsdWUgPSA5OTsgICAgLyogRHVtbXkgdmFsdWUgKi8KKyAgICBmb3IgKCBpPTA7ICBvcHRpb25zW2ldICE9IE5VTEw7IGkrKyApIHsKKyAgICAgICAgaWYgKHN0cm5jYXNlY21wKHN0YXRlLCBvcHRpb25zW2ldLCBzdHJsZW4ob3B0aW9uc1tpXSkpID09IDApIHsKKyAgICAgICAgICAgICp2YWx1ZSA9IGk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJFbnVtZXJhdGlvbiBzdGF0ZSAlcyBub3QgbWF0Y2hlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSkpOworICAgIHJldHVybiAwOyAgLyogT3IgYW4gZXJyb3IgPyAqLworfQorCitzdGF0aWMgaW50Citwcm9jZXNzX2VudW1fc2Vuc29yKCBwaWNsX25vZGVoZGxfdCBjaGlsZGgsIGNoYXIgKnByb3BuYW1lLCBpbnQgdHlwLCBjaGFyICoqb3B0aW9ucyApCit7CisgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAgICAgICAgKnNwOworICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTsKKyAgICBwaWNsX2Vycm5vX3QgICAgZXJyb3JfY29kZTsKKworICAgIHNwID0gc2Vuc29yX2J5X25hbWUoIHByb3BuYW1lLCB0eXAgKTsKKyAgICBpZiAoICFzcCApIHsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBlcnJvcl9jb2RlID0gcmVhZF9lbnVtX3NlbnNvciggY2hpbGRoLCAmdmFsdWUsIG9wdGlvbnMgKTsKKyAgICBpZiAoIGVycm9yX2NvZGUgPT0gUElDTF9TVUNDRVNTICkgeworICAgICAgICBzcC0+dmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiRmFpbGVkIHRvIHJlYWQgJXMgc2Vuc29yIHZhbHVlICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BuYW1lLCBlcnJvcl9jb2RlKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CitzdGF0aWMgaW50Citwcm9jZXNzX2VudW1fc2Vuc29yKCBwaWNsX25vZGVoZGxfdCBjaGlsZGgsIGNoYXIgKnByb3BuYW1lLCBpbnQgdHlwLCBjaGFyICoqb3B0aW9ucyApCit7CisgICAgcmV0dXJuIDA7Cit9CisKKworCisvKgorICogIFJlY3Vyc2l2ZWx5IHdhbGsgdGhyb3VnaCB0aGUgdHJlZSBvZiBzZW5zb3JzCisgKi8KK3N0YXRpYyBpbnQKK3Byb2Nlc3Nfc2Vuc29ycyggaW50IGxldmVsLCBwaWNsX25vZGVoZGxfdCBub2RlaCApIHsKKyAgICBwaWNsX25vZGVoZGxfdCBjaGlsZGgsIG5leHRoOworICAgIGNoYXIgICAgICAgICAgIHByb3BuYW1lWyAgUElDTF9QUk9QTkFNRUxFTl9NQVggIF07CisgICAgY2hhciAgICAgICAgICAgcHJvcGNsYXNzWyBQSUNMX0NMQVNTTkFNRUxFTl9NQVggXTsKKyAgICBwaWNsX2Vycm5vX3QgICBlcnJvcl9jb2RlOworCisgICAgbGV2ZWwrKzsKKyAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJwcm9jZXNzX3NlbnNvcnMgLSBsZXZlbCAlZFxuIiwgbGV2ZWwpKTsKKworICAgIC8qIExvb2sgdXAgdGhlIGZpcnN0IGNoaWxkIG5vZGUgYXQgdGhpcyBsZXZlbCAqLworICAgIGVycm9yX2NvZGUgPSBwaWNrX2dldF9wcm9wdmFsX2J5X25hbWUoIG5vZGVoLCBQSUNMX1BST1BfQ0hJTEQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoaWxkaCwgc2l6ZW9mKGNoaWxkaCkpOworICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgIkZhaWxlZCB0byBnZXQgZmlyc3QgY2hpbGQgbm9kZSAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlKSk7CisgICAgICAgIHJldHVybiggZXJyb3JfY29kZSApOworICAgIH0KKworICAgIC8qIFN0ZXAgdGhyb3VnaCB0aGUgY2hpbGQgbm9kZXMsIHJldHJpZXZpbmcgdGhlIG5hbWUgYW5kIGNsYXNzIG9mIGVhY2ggb25lICovCisgICAgd2hpbGUgKCBlcnJvcl9jb2RlID09IFBJQ0xfU1VDQ0VTUyApIHsKKyAgICAgICAgZXJyb3JfY29kZSA9IHBpY2tfZ2V0X3Byb3B2YWxfYnlfbmFtZSggY2hpbGRoLCBQSUNMX1BST1BfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcG5hbWUsIHNpemVvZihwcm9wbmFtZSktMSk7CisgICAgICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MgKSB7CisgICAgICAgICAgICAvKiBUaGUgTm9kZSBXaXRoIE5vIE5hbWUgKi8KKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgImdldCBwcm9wZXJ0eSBuYW1lIGZhaWxlZCAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZSkpOworICAgICAgICAgICAgcmV0dXJuKCBlcnJvcl9jb2RlICk7CisgICAgICAgIH0KKworICAgICAgICBlcnJvcl9jb2RlID0gcGlja19nZXRfcHJvcHZhbF9ieV9uYW1lKCBjaGlsZGgsIFBJQ0xfUFJPUF9DTEFTU05BTUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BjbGFzcywgc2l6ZW9mKHByb3BjbGFzcyktMSk7CisgICAgICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MgKSB7CisgICAgICAgICAgICAvKiBUaGUgQ2xhc3NsZXNzIFNvY2lldHkgKi8KKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgImdldCBwcm9wZXJ0eSBjbGFzcyBmYWlsZWQgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGUpKTsKKyAgICAgICAgICAgIHJldHVybiggZXJyb3JfY29kZSApOworICAgICAgICB9CisKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiTmFtZTogJXMsIENsYXNzICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wbmFtZSwgcHJvcGNsYXNzICkpOworCisKKyAgICAgICAgLyoKKyAgICAgICAgICogIFRocmVlIGNsYXNzZXMgcmVwcmVzZW50IGZ1cnRoZXIgZ3JvdXBzIG9mIHNlbnNvcnMsIGV0Yy4KKyAgICAgICAgICogIENhbGwgJ3Byb2Nlc3Nfc2Vuc29ycycgcmVjdXJzaXZlbHkgdG8gaGFuZGxlIHRoaXMgbmV4dCBsZXZlbAorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCggc3Ryc3RyKCBwcm9wY2xhc3MsICJwaWNsIiAgICApKSB8fAorICAgICAgICAgICAgKCBzdHJzdHIoIHByb3BjbGFzcywgImZydXRyZWUiICkpIHx8CisgICAgICAgICAgICAoIHN0cnN0ciggcHJvcGNsYXNzLCAib2JwIiAgICAgKSkpIHsKKyAgICAgICAgICAgIHByb2Nlc3Nfc2Vuc29ycyggbGV2ZWwsIGNoaWxkaCApOworICAgICAgICB9CisgICAgICAgIC8qCisgICAgICAgICAqICBPdGhlcndpc2UgcmV0cmlldmUgdGhlIHZhbHVlIGFwcHJvcHJpYXRlbHkgYmFzZWQgb24gdGhlCisgICAgICAgICAqICAgICBjbGFzcyBvZiB0aGUgc2Vuc29yLgorICAgICAgICAgKgorICAgICAgICAgKiAgV2UgbmVlZCB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBQSUNMIHByb3BlcnR5IHRvIHJldHJpZXZlCisgICAgICAgICAqICAgICBmb3IgdGhpcyBjbGFzcyBvZiBzZW5zb3IsIGFuZCB0aGUgTmV0LVNOTVAgc2Vuc29yIHR5cGUuCisgICAgICAgICAqLworICAgICAgICBlbHNlIGlmICggc3Ryc3RyKCBwcm9wY2xhc3MsICJmYW4tdGFjaG9tZXRlciIgKSkgeworICAgICAgICAgICAgcHJvY2Vzc19udW1fc2Vuc29yKCBjaGlsZGgsIHByb3BuYW1lLCAiQXRvRFNlbnNvclZhbHVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfU0VOU09SX1RZUEVfUlBNICk7CisgICAgICAgIH0gZWxzZSBpZiAoIHN0cnN0ciggcHJvcGNsYXNzLCAiZmFuIiApKSB7CisgICAgICAgICAgICBwcm9jZXNzX251bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsICJTcGVlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX1NFTlNPUl9UWVBFX1JQTSApOworICAgICAgICB9IGVsc2UgaWYgKCBzdHJzdHIoIHByb3BjbGFzcywgInRlbXBlcmF0dXJlLXNlbnNvciIgKSkgeworICAgICAgICAgICAgcHJvY2Vzc19udW1fc2Vuc29yKCBjaGlsZGgsIHByb3BuYW1lLCAiVGVtcGVyYXR1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9TRU5TT1JfVFlQRV9URU1QRVJBVFVSRSApOworICAgICAgICB9IGVsc2UgaWYgKCBzdHJzdHIoIHByb3BjbGFzcywgInZvbHRhZ2Utc2Vuc29yIiApKSB7CisgICAgICAgICAgICBwcm9jZXNzX251bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsICJWb2x0YWdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qID8/ICovIE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVEFHRV9EQyApOworICAgICAgICB9IGVsc2UgaWYgKCBzdHJzdHIoIHByb3BjbGFzcywgImRpZ2l0YWwtc2Vuc29yIiApKSB7CisgICAgICAgICAgICBwcm9jZXNzX251bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsICJBdG9EU2Vuc29yVmFsdWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogPz8gKi8gTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDICk7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRW51bWVyYXRpb24tdmFsdWVkIHNlbnNvcnMgdXNlIGEgZml4ZWQgUElDTCBwcm9wZXJ0eSAoIlN0YXRlIiksCisgICAgICAgICAgICAgKiAgIGJ1dCB0YWtlIGEgbGlzdCBvZiB0aGUgdmFsdWVzIGFwcHJvcHJpYXRlIGZvciB0aGF0IHNlbnNvciwKKyAgICAgICAgICAgICAqICAgYXMgd2VsbCBhcyB0aGUgTmV0LVNOTVAgc2Vuc29yIHR5cGUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgfSBlbHNlIGlmICggc3Ryc3RyKCBwcm9wY2xhc3MsICJzd2l0Y2giICkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NfZW51bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsIE5FVFNOTVBfU0VOU09SX1RZUEVfT1RIRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hfc2V0dGluZ3MgKTsKKyAgICAgICAgfSBlbHNlIGlmICggc3Ryc3RyKCBwcm9wY2xhc3MsICJsZWQiICkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NfZW51bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsIE5FVFNOTVBfU0VOU09SX1RZUEVfT1RIRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWRfc2V0dGluZ3MgKTsKKyAgICAgICAgfSBlbHNlIGlmICggc3Ryc3RyKCBwcm9wY2xhc3MsICJpMmMiICkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NfZW51bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsIE5FVFNOTVBfU0VOU09SX1RZUEVfQk9PTEVBTiwgLyogPz8gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkyY19zZXR0aW5ncyApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogU2tpcCBvdGhlciBjbGFzc2VzIG9mIHNlbnNvciAqLworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiU2tpcHBpbmcgY2xhc3MgJXNcbiIsIHByb3BjbGFzcyApKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqICBNb3ZlIG9uIHRvIHRoZSBuZXh0IGNoaWxkIG5vZGUgYXQgdGhlIGN1cnJlbnQgbGV2ZWwgKGlmIGFueSkKKyAgICAgICAgICovCisgICAgICAgIGVycm9yX2NvZGUgPSBwaWNrX2dldF9wcm9wdmFsX2J5X25hbWUoIGNoaWxkaCwgUElDTF9QUk9QX1BFRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXh0aCwgc2l6ZW9mKG5leHRoKSk7CisgICAgICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MgKSB7CisgICAgICAgICAgICAvKiBUaGF0J3MgQWxsIEZvbGtzISAqLworICAgICAgICAgICAgcmV0dXJuICgoIGVycm9yX2NvZGUgPT0gUElDTF9QUk9QTk9URk9VTkQgKQorICAgICAgICAgICAgICAgICAgICAgICAgICA/IFBJQ0xfU1VDQ0VTUyA6IGVycm9yX2NvZGUgKTsKKyAgICAgICAgfQorICAgICAgICBjaGlsZGggPSBuZXh0aDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGVycm9yX2NvZGU7Cit9CisKKworaW50CituZXRzbm1wX3NlbnNvcl9hcmNoX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZwKSB7CisgICAgaW50ICAgICAgICAgICAgICAgZXJyb3JfY29kZTsKKyAgICBwaWNsX25vZGVoZGxfdCAgICByb290aDsKKworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiUmVsb2FkIFBJQ0xkIFNlbnNvcnMgbW9kdWxlXG4iKSk7CisKKyAgICBlcnJvcl9jb2RlID0gcGljbF9nZXRfcm9vdCgmcm9vdGgpOworICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJDb3VsZG4ndCBnZXQgcm9vdCBub2RlIChlcnJvciAlZClcbiIsIGVycm9yX2NvZGUpKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgZXJyb3JfY29kZSA9IHByb2Nlc3Nfc2Vuc29ycygwLCByb290aCk7CisgICAgaWYgKCBlcnJvcl9jb2RlICE9IDI1NSApCisgICAgICAgIGlmICggZXJyb3JfY29kZSAhPSA3ICkgIC8qIGlnbm9yZSBQSUNMX1BST1BOT1RGT1VORCBlcnJvciAqLworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJJbnRlcm5hbCBQSUNMZCBwcm9ibGVtIChlcnJvciAlZClcbiIsIGVycm9yX2NvZGUpKTsKKworICAgIHJldHVybiAwOworfQorCit2b2lkIG5ldHNubXBfc2Vuc29yX2FyY2hfc2h1dGRvd24oIHZvaWQgKSB7CisgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJTaHV0ZG93biBQaWNMRCBTZW5zb3JzIG1vZHVsZVxuIikpOworICAgIHBpY2xfc2h1dGRvd24oKTsKK30KKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzLmggYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL3BpY2xkX3NlbnNvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZmYjRkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzLmgKQEAgLTAsMCArMSBAQAorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYyBiL2FnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMKaW5kZXggYzM4NWVkZS4uOTU2MWVjZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYworKysgYi9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jCkBAIC05NCw3ICs5NCw3IEBACiAgICAgaWYgKHZhci0+bmFtZV9sZW5ndGggPiBNQVhfT0lEX0xFTikgewogICAgICAgICBERUJVR01TR1RMKCgiaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfdmFyb2lkIiwKICAgICAgICAgICAgICAgICAgICAgIlNvbWV0aGluZyB0ZXJyaWJseSB3cm9uZywgbmFtZWxlbiA9ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICB2YXItPm5hbWVfbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChpbnQpdmFyLT5uYW1lX2xlbmd0aCkpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgfQogCkBAIC0xMzAsNyArMTMwLDcgQEAKICAgICAgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihsb25nKTsKICAgICAgICAgICAgIG9pZExlbi0tOwogICAgICAgICAgICAgREVCVUdNU0dUTCgoImhlYWRlcl9jb21wbGV4X3BhcnNlX29pZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiUGFyc2VkIGludCglZCk6ICVkXG4iLCB2YXItPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAiUGFyc2VkIGludCglZCk6ICVsZFxuIiwgdmFyLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgKnZhci0+dmFsLmludGVnZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC00MDAsNiArNDAwLDggQEAKICAgICAgKi8KICAgICBvdXJzZWxmID0gKHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqKQogICAgICAgICBTTk1QX01BTExPQ19TVFJVQ1QoaGVhZGVyX2NvbXBsZXhfaW5kZXgpOworICAgIGlmIChvdXJzZWxmID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKICAgICAgKiBjaGFuZ2Ugb3VyIHBvaW50ZXJzIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC5oCmluZGV4IDRiNzg3MDYuLmU4ZTY1NTggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QuaAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0LmgKQEAgLTIsOSArMiwxOCBAQAogICogIEhvc3QgUmVzb3VyY2VzICd3cmFwcGVyJyBpbnRlcmZhY2UKICAqCWNhbGxzIHRoZSBwZXItZ3JvdXAgaW50ZXJmYWNlcyBmcm9tICdocl8qLmgnCiAgKi8KKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLwogCiAJY29uZmlnX3JlcXVpcmUoaG9zdC9ocl9zeXN0ZW0pCi0JY29uZmlnX3JlcXVpcmUoaG9zdC9ocl9zdG9yYWdlKQogCWNvbmZpZ19yZXF1aXJlKGhvc3QvaHJfZGV2aWNlKQogCWNvbmZpZ19yZXF1aXJlKGhvc3QvaHJfb3RoZXIpCiAJY29uZmlnX3JlcXVpcmUoaG9zdC9ocl9wcm9jKQpAQCAtMTIsOSArMjEsMTIgQEAKIAljb25maWdfcmVxdWlyZShob3N0L2hyX3ByaW50KQogCWNvbmZpZ19yZXF1aXJlKGhvc3QvaHJfZGlzaykKIAljb25maWdfcmVxdWlyZShob3N0L2hyX3BhcnRpdGlvbikKLQljb25maWdfcmVxdWlyZShob3N0L2hyX2ZpbGVzeXMpCi0JY29uZmlnX3JlcXVpcmUoaG9zdC9ocl9zd3J1bikKLQljb25maWdfcmVxdWlyZShob3N0L2hyX3N3aW5zdCkKKworCWNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKGhvc3QvaHJfc3RvcmFnZSwgNS43LCBob3N0L2hyaF9zdG9yYWdlKSkKKwljb25maWdfdmVyc2lvbl9yZXF1aXJlKChob3N0L2hyX2ZpbGVzeXMsIDUuNywgaG9zdC9ocmhfZmlsZXN5cykpCisKKwljb25maWdfdmVyc2lvbl9yZXF1aXJlKChob3N0L2hyX3N3aW5zdCwgIDUuNiwgaG9zdC9oclNXSW5zdGFsbGVkVGFibGUpKQorCWNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKGhvc3QvaHJfc3dydW4sICAgNS42LCBob3N0L2hyU1dSdW5UYWJsZSkpCiAKIC8qIGFkZCB0aGUgaG9zdCByZXNvdXJjZXMgbWliIHRvIHRoZSBkZWZhdWx0IG1pYnMgdG8gbG9hZCAqLwogY29uZmlnX2FkZF9taWIoSE9TVC1SRVNPVVJDRVMtTUlCKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFiODU3MwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMKQEAgLTAsMCArMSwyMTYgQEAKKy8qCisgKiBzd2luc3QuYyA6IGhyU1dJbnN0YWxsZWRUYWJsZSBkYXRhIGFjY2VzcworICovCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oPgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKK3N0YXRpYyB2b2lkIG5ldHNubXBfc3dpbnN0X2VudHJ5X2ZyZWVfY2IobmV0c25tcF9zd2luc3RfZW50cnkgKiwgdm9pZCAqKTsKKworZXh0ZXJuIHZvaWQgbmV0c25tcF9zd2luc3RfYXJjaF9pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgbmV0c25tcF9zd2luc3RfYXJjaF9zaHV0ZG93bih2b2lkKTsKK2V4dGVybiBpbnQgbmV0c25tcF9zd2luc3RfYXJjaF9sb2FkKG5ldHNubXBfY29udGFpbmVyICosIHVfaW50KTsKKwordm9pZCBpbml0X3N3aW5zdCggdm9pZCApCit7CisgICAgc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7CisKKyAgICBERUJVR01TR1RMKCgic3dpbnN0IiwgImluaXQgY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsgLyogYWxyZWFkeSBpbml0aWFsaXplZCAqLworCisKKyAgICAvKgorICAgICAqIGNhbGwgYXJjaCBpbml0IGNvZGUKKyAgICAgKi8KKyAgICBuZXRzbm1wX3N3aW5zdF9hcmNoX2luaXQoKTsKK30KKwordm9pZCBzaHV0ZG93bl9zd2luc3QoIHZvaWQgKQoreworICAgIERFQlVHTVNHVEwoKCJzd2luc3QiLCAic2h1dGRvd24gY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX3N3aW5zdF9hcmNoX3NodXRkb3duKCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qCisgKiBsb2FkIGEgY29udGFpbmVyIHdpdGggaW5zdGFsbGVkIHNvZnR3YXJlLiBJZiB1c2VyX2NvbnRhaW5lciBpcyBOVUxMLAorICogYSBuZXcgY29udGFpbmVyIHdpbGwgYmUgYWxsb2NhdGVkIGFuZCByZXR1cm5lZCwgYW5kIHRoZSBjYWxsZXIKKyAqIGlzIHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgdGhlIGFsbG9jYXRlZCBtZW1vcnkgd2hlbiBkb25lLgorICoKKyAqIGlmIGZsYWdzIGNvbnRhaW5zIE5FVFNOTVBfU1dJTlNUX0FMTF9PUl9OT05FIGFuZCBhbnkgZXJyb3Igb2NjdXJzLAorICogdGhlIGNvbnRhaW5lciB3aWxsIGJlIGNvbXBsZXRlbHkgY2xlYXJlZC4KKyAqLworbmV0c25tcF9jb250YWluZXIgKgorbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2xvYWQoIG5ldHNubXBfY29udGFpbmVyICp1c2VyX2NvbnRhaW5lciwgaW50IGZsYWdzICkKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gdXNlcl9jb250YWluZXI7CisgICAgaW50IGFyY2hfcmM7CisKKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmNvbnRhaW5lciIsICJsb2FkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGNyZWF0ZSB0aGUgY29udGFpbmVyLCBpZiBuZWVkZWQKKyAgICAgKi8KKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgY29udGFpbmVyID0gbmV0c25tcF9jb250YWluZXJfZmluZCgic3dpbnN0OnRhYmxlX2NvbnRhaW5lciIpOworICAgICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyLT5jb250YWluZXJfbmFtZSkKKyAgICAgICAgY29udGFpbmVyLT5jb250YWluZXJfbmFtZSA9IHN0cmR1cCgic3dpbnN0IGNvbnRhaW5lciIpOworCisgICAgLyoKKyAgICAgKiBjYWxsIHRoZSBhcmNoIHNwZWNpZmljIGNvZGUgdG8gbG9hZCB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgYXJjaF9yYyA9IG5ldHNubXBfc3dpbnN0X2FyY2hfbG9hZCggY29udGFpbmVyLCBmbGFncyApOworICAgIGlmIChhcmNoX3JjICYmIChmbGFncyAmIE5FVFNOTVBfU1dJTlNUX0FMTF9PUl9OT05FKSkgeworICAgICAgICAvKgorICAgICAgICAgKiBjYWxsZXIgZG9lcyBub3Qgd2FudCBhIHBhcnRpYWwgbG9hZCwgc28gZW1wdHkgdGhlIGNvbnRhaW5lci4KKyAgICAgICAgICogaWYgd2UgY3JlYXRlZCB0aGUgY29udGFpbmVyLCBkZXN0cm95IGl0LgorICAgICAgICAgKi8KKyAgICAgICAgbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWVfaXRlbXMoY29udGFpbmVyKTsKKyAgICAgICAgaWYgKGNvbnRhaW5lciAhPSB1c2VyX2NvbnRhaW5lcikgeworICAgICAgICAgICAgbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLCBmbGFncyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbnRhaW5lcjsKK30KKwordm9pZAorbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZnJlZV9mbGFncykKK3sKKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmNvbnRhaW5lciIsICJmcmVlXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY29udGFpbmVyIGZvciBuZXRzbm1wX3N3aW5zdF9jb250YWluZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9TV0lOU1RfRE9OVF9GUkVFX0lURU1TKSkKKyAgICAgICAgbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWVfaXRlbXMoY29udGFpbmVyKTsKKworICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7Cit9CisKKy8qCisgKiBmcmVlIGEgc3dpbnN0IGNvbnRhaW5lcgorICovCit2b2lkIG5ldHNubXBfc3dpbnN0X2NvbnRhaW5lcl9mcmVlX2l0ZW1zKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoInN3aW5zdDpjb250YWluZXIiLCAiZnJlZV9pdGVtc1xuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvbnRhaW5lciBmb3IgbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWVfaXRlbXNcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBmcmVlIGFsbCBpdGVtcy4KKyAgICAgKi8KKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKW5ldHNubXBfc3dpbnN0X2VudHJ5X2ZyZWVfY2IsCisgICAgICAgICAgICAgICAgICAgIE5VTEwpOworfQorCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qCisgKiBjcmVhdGUgYSBuZXcgcm93IGluIHRoZSB0YWJsZSAKKyAqLworbmV0c25tcF9zd2luc3RfZW50cnkgKgorbmV0c25tcF9zd2luc3RfZW50cnlfY3JlYXRlKGludDMyX3Qgc3dJbmRleCkKK3sKKyAgICBuZXRzbm1wX3N3aW5zdF9lbnRyeSAqZW50cnk7CisKKyAgICBlbnRyeSA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9zd2luc3RfZW50cnkpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZW50cnktPnN3SW5kZXggPSBzd0luZGV4OworICAgIGVudHJ5LT5vaWRfaW5kZXgubGVuID0gMTsKKyAgICBlbnRyeS0+b2lkX2luZGV4Lm9pZHMgPSAmZW50cnktPnN3SW5kZXg7CisKKyAgICBlbnRyeS0+c3dUeXBlID0gSFJTV0lOU1RBTExFRFRZUEVfQVBQTElDQVRJT047CisKKyAgICByZXR1cm4gZW50cnk7Cit9CisKKy8qCisgKiBmcmVlIGEgcm93CisgKi8KK3ZvaWQKK25ldHNubXBfc3dpbnN0X2VudHJ5X2ZyZWUobmV0c25tcF9zd2luc3RfZW50cnkgKmVudHJ5KQoreworICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6ZW50cnk6ZnJlZSIsICJpbmRleCAlbHVcbiIsIGVudHJ5LT5zd0luZGV4KSk7CisKKyAgICBmcmVlKGVudHJ5KTsKK30KKworLyoKKyAqIGZyZWUgYSByb3cKKyAqLworc3RhdGljIHZvaWQKK25ldHNubXBfc3dpbnN0X2VudHJ5X2ZyZWVfY2IobmV0c25tcF9zd2luc3RfZW50cnkgKmVudHJ5LCB2b2lkICpjb250ZXh0KQoreworICAgIGZyZWUoZW50cnkpOworfQorCisvKgorICogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlIAorICovCit2b2lkCituZXRzbm1wX3N3aW5zdF9lbnRyeV9yZW1vdmUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zd2luc3RfZW50cnkgKmVudHJ5KQoreworICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6Y29udGFpbmVyIiwgInJlbW92ZVxuIikpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgIC8qIE5vdGhpbmcgdG8gcmVtb3ZlICovCisgICAgQ09OVEFJTkVSX1JFTU9WRShjb250YWluZXIsIGVudHJ5KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lmZGVmIFRFU1QKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgY29uc3QgY2hhciAqdG9rZW5zID0gZ2V0ZW52KCJTTk1QX0RFQlVHIik7CisKKyAgICBuZXRzbm1wX2NvbnRhaW5lcl9pbml0X2xpc3QoKTsKKworICAgIC8qKiBzd2luc3QsdmVyYm9zZTpzd2luc3QgKi8KKyAgICBpZiAodG9rZW5zKQorICAgICAgICBkZWJ1Z19yZWdpc3Rlcl90b2tlbnModG9rZW5zKTsKKyAgICBlbHNlCisgICAgICAgIGRlYnVnX3JlZ2lzdGVyX3Rva2Vucygic3dpbnN0Iik7CisgICAgc25tcF9zZXRfZG9fZGVidWdnaW5nKDEpOworCisgICAgaW5pdF9zd2luc3QoKTsKKyAgICBuZXRzbm1wX3N3aW5zdF9jb250YWluZXJfbG9hZChOVUxMLCAwKTsKKyAgICBzaHV0ZG93bl9zd2luc3QoKTsKKworICAgIHJldHVybiAwOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDRhMzE4Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogc3dpbnN0IGRhdGEgYWNjZXNzIGhlYWRlcgorICoKKyAqICRJZDogc3dpbnN0LmggMTUzNDYgMjAwNi0wOS0yNiAyMzozNDo1MFogcnN0b3J5ICQKKyAqLworLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworI2lmbmRlZiBORVRTTk1QX0FDQ0VTU19TV0lOU1RfQ09ORklHX0gKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfU1dJTlNUX0NPTkZJR19ICisKKy8qCisgKiBhbGwgcGxhdGZvcm1zIHVzZSB0aGlzIGdlbmVyaWMgY29kZQorICovCitjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3aW5zdCkKK2NvbmZpZ19leGNsdWRlKGhvc3QvaHJfc3dpbnN0KQorCisvKgorICogc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW50ZXJmYWNlIGNvZGUKKyAqLworI2lmICAgZGVmaW5lZCggZGFyd2luICkKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9kYXJ3aW4pCisjZWxpZiBkZWZpbmVkKCBIQVZFX0xJQlJQTSApICYmIGRlZmluZWQoIGxpbnV4ICkKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG0pCisjZWxpZiBkZWZpbmVkKCBIQVZFX1BLR0xPQ1NfSCApIHx8IGRlZmluZWQoIGhwdXg5ICkgfHwgZGVmaW5lZCggaHB1eDEwICkgfHwgZGVmaW5lZCggaHB1eDExICkgfHwgZGVmaW5lZCggZnJlZWJzZDIgKSB8fCBkZWZpbmVkKCBsaW51eCApIHx8IGRlZmluZWQoIG9wZW5ic2QgKQorICAgIGNvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8pCisjZWxzZQorICAgIGNvbmZpZ193YXJuaW5nKFRoaXMgcGxhdGZvcm0gZG9lcyBub3QgeWV0IHN1cHBvcnQgaHJTV0luc3RhbGxlZFRhYmxlIHJld3JpdGVzKQorICAgIGNvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X251bGwpCisjZW5kaWYKKworI2VuZGlmIC8qIE5FVFNOTVBfQUNDRVNTX1NXSU5TVF9DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9kYXJ3aW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmM4YjQzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMKQEAgLTAsMCArMSwzOTAgQEAKKy8qCisgKiBzd2luc3QuYyA6IGhyU1dJbnN0YWxsZWRUYWJsZSBkYXRhIGFjY2VzcworICovCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaD4KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKKyNkZWZpbmUgX19BUFBMRV9BUElfRVZPTFZJTkcgMQorI2luY2x1ZGUgPHN5cy9hY2wuaD4gLyogb3IgZWxzZSBDb3JlRm91bmRhdGlvbi5oIGJhcmZzICovCisjdW5kZWYgX19BUFBMRV9BUElfRVZPTFZJTkcgCisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIGludCBfYWRkX2FwcGxpY2F0aW9uc19pbl9kaXIobmV0c25tcF9jb250YWluZXIgKiwgY29uc3QgY2hhciogcGF0aCk7CitzdGF0aWMgaW50MzJfdCBfaW5kZXg7CitzdGF0aWMgaW50IF9jaGVja19idW5kbGVkX2FwcChDRlVSTFJlZiBjdXJyZW50VVJMLCBDRlN0cmluZ1JlZiAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmICppbmZvLCBjb25zdCBjaGFyKiBwYXRoKTsKK3N0YXRpYyBpbnQgX2NoZWNrX2NsYXNzaWNfYXBwKENGVVJMUmVmIGN1cnJlbnRVUkwsIENGU3RyaW5nUmVmICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgKmluZm8sIGNvbnN0IGNoYXIqIHBhdGgpOworc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpkaXJzID0gTlVMTDsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfc3dpbnN0X2FyY2hfaW5pdCggdm9pZCApCit7CisgICAgc3RydWN0IHN0YXQgc3RhdF9idWY7CisgICAgY29uc3QgY2hhciAqZGVmYXVsdF9kaXJzW10gPSB7CisgICAgICAgICIvQXBwbGljYXRpb25zIiwKKyAgICAgICAgIi9BcHBsaWNhdGlvbnMgKE1hYyBPUyA5KSIsCisgICAgICAgICIvU3lzdGVtL0xpYnJhcnkvQ29yZVNlcnZpY2VzIiwKKyAgICAgICAgIi9TeXN0ZW0vTGlicmFyeS9FeHRlbnNpb25zIiwKKyAgICAgICAgIi9TeXN0ZW0vTGlicmFyeS9TZXJ2aWNlcyIKKyNpZmRlZiBURVNUCisgICAgICAgICwgIi9EZXZlbG9wZXIvQXBwbGljYXRpb25zIgorICAgICAgICAsICIvVm9sdW1lcy9hdWRYL0FwcGxpY2F0aW9ucyAoTWFjIE9TIDkpIgorI2VuZGlmCisgICAgfTsKKyAgICBpbnQgaSwgY291bnQgPSBzaXplb2YoZGVmYXVsdF9kaXJzKS9zaXplb2YoZGVmYXVsdF9kaXJzWzBdKTsKKworICAgIC8qCisgICAgICogY3JlYXRlIHRoZSBjb250YWluZXIsIGlmIG5lZWRlZAorICAgICAqLworICAgIGlmIChOVUxMID09IGRpcnMpIHsKKyAgICAgICAgZGlycyA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImRpcmVjdG9yeV9jb250YWluZXI6Y3N0cmluZyIpOworICAgICAgICBpZiAoTlVMTCA9PSBkaXJzKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3QgYWxsb2NhdGUgY29udGFpbmVyIGZvciBkaXIgbGlzdFxuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZGlycy0+Y29udGFpbmVyX25hbWUgPSBzdHJkdXAoImRpcmVjdG9yeSBzZWFyY2ggbGlzdCIpOworICAgICAgICBuZXRzbm1wX2JpbmFyeV9hcnJheV9vcHRpb25zX3NldChkaXJzLCAxLCBDT05UQUlORVJfS0VZX1VOU09SVEVEKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGFkZCBkaXJzCisgICAgICovCisgICAgZm9yKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBjaGFyICogICAgICB0bXA7CisgICAgICAgIC8qKiB4eHg6IGdldC9zYXZlIHRoZSBsYXN0IG1vZCBkYXRlPyAqLworICAgICAgICBpZigtMSA9PSBzdGF0KGRlZmF1bHRfZGlyc1tpXSwgJnN0YXRfYnVmKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInN3aW5zdDphcmNoOmRhcndpbiIsICJza2lwcGluZyBkaXIgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2RpcnNbaV0pKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6YXJjaDpkYXJ3aW4iLCAiYWRkaW5nIGRpciAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfZGlyc1tpXSkpOworICAgICAgICB0bXAgPSBzdHJkdXAoZGVmYXVsdF9kaXJzW2ldKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdG1wKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJzdHJkdXAgZmFpbGVkXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoZGlycywgdG1wKTsKKyAgICB9Cit9CisKK3ZvaWQKK25ldHNubXBfc3dpbnN0X2FyY2hfc2h1dGRvd24oIHZvaWQgKQoreworICAgIG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9mcmVlKGRpcnMpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCitpbnQKK25ldHNubXBfc3dpbnN0X2FyY2hfbG9hZCggbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MgKQoreworICAgIG5ldHNubXBfaXRlcmF0b3IgICAqaXQ7CisgICAgY29uc3QgY2hhciAgICAgICAgICpkaXI7CisgICAgaW50ICAgICAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6YXJjaDpkYXJ3aW4iLCAibG9hZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gZGlycykgeworICAgICAgICBERUJVR01TR1RMKCgic3dpbnN0OmFyY2g6ZGFyd2luIiwgIm5vIGRpcnMgdG8gc2NhbiFcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIF9pbmRleCA9IDA7CisgICAgCisgICAgaXQgPSBDT05UQUlORVJfSVRFUkFUT1IoZGlycyk7CisgICAgZm9yIChkaXIgPSBJVEVSQVRPUl9GSVJTVChpdCk7IGRpcjsgZGlyID0gSVRFUkFUT1JfTkVYVChpdCkpIHsKKyAgICAgICAgcmMgPSBfYWRkX2FwcGxpY2F0aW9uc19pbl9kaXIoY29udGFpbmVyLCBkaXIpOworICAgIH0KKyAgICBJVEVSQVRPUl9SRUxFQVNFKGl0KTsKKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmFyY2g6ZGFyd2luIiwgImxvYWRlZCAlZCBhcHBzXG4iLF9pbmRleCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgIF9kdW1wX2ZsYWdzKHVfbG9uZyBmbGFncykKK3sKKyAgICBzdGF0aWMgc3RydWN0IHsKKyAgICAgICAgY29uc3QgY2hhcipuYW1lOworICAgICAgICB1X2xvbmcgYml0czsKKyAgICB9IG5hbWVzW10gPSB7CisgICAgICAgIHsgImtMU0l0ZW1JbmZvSXNQbGFpbkZpbGUiLCAweDAwMDAwMDAxIH0sCisgICAgICAgIHsgImtMU0l0ZW1JbmZvSXNQYWNrYWdlIiwgMHgwMDAwMDAwMiB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0lzQXBwbGljYXRpb24iLCAweDAwMDAwMDA0IH0sCisgICAgICAgIHsgImtMU0l0ZW1JbmZvSXNDb250YWluZXIiLCAweDAwMDAwMDA4IH0sCisgICAgICAgIHsgImtMU0l0ZW1JbmZvSXNBbGlhc0ZpbGUiLCAweDAwMDAwMDEwIH0sCisgICAgICAgIHsgImtMU0l0ZW1JbmZvSXNTeW1saW5rIiwgMHgwMDAwMDAyMCB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0lzSW52aXNpYmxlIiwgMHgwMDAwMDA0MCB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0lzTmF0aXZlQXBwIiwgMHgwMDAwMDA4MCB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0lzQ2xhc3NpY0FwcCIsIDB4MDAwMDAxMDAgfSwKKyAgICAgICAgeyAia0xTSXRlbUluZm9BcHBQcmVmZXJzTmF0aXZlIiwgMHgwMDAwMDIwMCB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0FwcFByZWZlcnNDbGFzc2ljIiwgMHgwMDAwMDQwMCB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0FwcElzU2NyaXB0YWJsZSIsIDB4MDAwMDA4MDAgfSwKKyAgICAgICAgeyAia0xTSXRlbUluZm9Jc1ZvbHVtZSIsIDB4MDAwMDEwMDAgfSwKKyAgICAgICAgeyAia0xTSXRlbUluZm9FeHRlbnNpb25Jc0hpZGRlbiIsIDB4MDAxMDAwMDAgfQorICAgIH07CisgICAgaW50IGksIGNvdW50ID0gc2l6ZW9mKG5hbWVzKS9zaXplb2YobmFtZXNbMF0pOworCisgICAgZm9yKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoZmxhZ3MgJiBuYW1lc1tpXS5iaXRzKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic3dpbnN0OmFyY2g6ZGFyd2luOmZsYWdzIiwgIlx0JXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzW2ldLm5hbWUpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIGludAorX2FkZF9hcHBsaWNhdGlvbnNfaW5fZGlyKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgICpmaWxlczsKKyAgICBuZXRzbm1wX2l0ZXJhdG9yICAgKml0OworICAgIGNvbnN0IGNoYXIgICAgICAgICAqZmlsZTsKKyAgICBuZXRzbm1wX3N3aW5zdF9lbnRyeSAqZW50cnkgPSBOVUxMOworICAgIHN0cnVjdCBzdGF0CSAgICAgICAgc3RhdF9idWY7CisgICAgc2l6ZV90ICAgICAgICAgICAgICBkYXRlX2xlbjsKKyAgICB1X2NoYXIgICAgICAgICAgICAgKmRhdGVfYnVmOworICAgIGludCAgICAgICAgICAgICAgICAgcmMgPSAwOworCisgICAgQ0ZTdHJpbmdSZWYgICAgICAgICBjdXJyZW50UGF0aCA9IE5VTEw7CisgICAgQ0ZVUkxSZWYgICAgICAgICAgICBjdXJyZW50VVJMID0gTlVMTDsKKyAgICBMU0l0ZW1JbmZvUmVjb3JkICAgIGl0ZW1JbmZvUmVjb3JkOworICAgIENGU3RyaW5nUmVmICAgICAgICAgcHJvZE5hbWUgPSBOVUxMOworICAgIENGU3RyaW5nUmVmICAgICAgICAgdmVyc2lvbiA9IE5VTEw7CisgICAgCisgICAgREVCVUdNU0dUTCgoInN3aW5zdDphcmNoOmRhcndpbiIsICIgYWRkaW5nIGZpbGVzIGZyb20gJXNcbiIsIHBhdGgpKTsKKyAgICBmaWxlcyA9IG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9yZWFkKE5VTEwsIHBhdGgsIDApOworICAgIGlmIChOVUxMID09IGZpbGVzKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJzd2luc3Q6IGNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSAlc1xuIiwgcGF0aCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUihmaWxlcyk7CisgICAgaWYgKE5VTEwgPT0gaXQpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBnZXQgaXRlcmF0b3JcbiIpOworICAgICAgICBuZXRzbm1wX2RpcmVjdG9yeV9jb250YWluZXJfZnJlZShmaWxlcyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZm9yIChmaWxlID0gSVRFUkFUT1JfRklSU1QoaXQpOworICAgICAgICAgZmlsZTsKKyAgICAgICAgIGZpbGUgPSBJVEVSQVRPUl9ORVhUKGl0KSwKKyAgICAgICAgICAgICBDRlJlbGVhc2UoY3VycmVudFBhdGgpLAorICAgICAgICAgICAgIENGUmVsZWFzZShjdXJyZW50VVJMKSkgeworCisgICAgICAgIGludCAgICAgICAgICAgICAgICAgcmMyID0gMDsKKyAgICAgICAgCisgICAgICAgIGN1cnJlbnRQYXRoID0KKyAgICAgICAgICAgIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NGU3RyaW5nRW5jb2RpbmdVVEY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0ZBbGxvY2F0b3JOdWxsKTsKKyAgICAgICAgY3VycmVudFVSTCA9CisgICAgICAgICAgICBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdXJyZW50UGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCB0cnVlKTsgCisgICAgICAgIExTQ29weUl0ZW1JbmZvRm9yVVJMKGN1cnJlbnRVUkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtMU1JlcXVlc3RCYXNpY0ZsYWdzT25seXxrTFNSZXF1ZXN0QXBwVHlwZUZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlbUluZm9SZWNvcmQpOyAKKyAgICAgICAgaWYoKDAgPT0gaXRlbUluZm9SZWNvcmQuZmxhZ3MpIHx8CisgICAgICAgICAgIChrTFNJdGVtSW5mb0lzUGxhaW5GaWxlID09IGl0ZW1JbmZvUmVjb3JkLmZsYWdzKSB8fAorICAgICAgICAgICAoaXRlbUluZm9SZWNvcmQuZmxhZ3MgJiBrTFNJdGVtSW5mb0lzSW52aXNpYmxlKSB8fAorICAgICAgICAgICAoaXRlbUluZm9SZWNvcmQuZmxhZ3MgJiBrTFNJdGVtSW5mb0lzQWxpYXNGaWxlKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgLyoqIHJlY3Vyc2Ugb24gbm9uLWFwcGxpY2F0aW9uIGNvbnRhaW5lcnMgKGkuZS4gZGlyZWN0b3J5KSAqLworICAgICAgICBpZiAoKGl0ZW1JbmZvUmVjb3JkLmZsYWdzICYga0xTSXRlbUluZm9Jc0NvbnRhaW5lcikgJiYKKyAgICAgICAgICAgICghKGl0ZW1JbmZvUmVjb3JkLmZsYWdzICYga0xTSXRlbUluZm9Jc0FwcGxpY2F0aW9uKSkpIHsKKyAgICAgICAgICAgIG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9yZWFkKGZpbGVzLCBmaWxlLCAwKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgIH0KKworICAgICAgICAvKiogc2tpcCBhbnkgb3RoZXIgbm9uLWFwcGxpY2F0aW9uIGZpbGVzICovCisgICAgICAgIGlmICghKGl0ZW1JbmZvUmVjb3JkLmZsYWdzICYga0xTSXRlbUluZm9Jc0FwcGxpY2F0aW9uKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgfQorCisgICAgICAgIGlmICgoaXRlbUluZm9SZWNvcmQuZmxhZ3MgJiBrTFNJdGVtSW5mb0lzUGFja2FnZSkgfHwgICAgICAgICAgIAorICAgICAgICAgICAgKGl0ZW1JbmZvUmVjb3JkLmZsYWdzICYga0xTSXRlbUluZm9Jc0NvbnRhaW5lcikpIHsKKyAgICAgICAgICAgIHJjMiA9IF9jaGVja19idW5kbGVkX2FwcChjdXJyZW50VVJMLCAmcHJvZE5hbWUsICZ2ZXJzaW9uLCBmaWxlKTsKKyAgICAgICAgfSAKKyAgICAgICAgZWxzZSBpZiAoKGl0ZW1JbmZvUmVjb3JkLmZsYWdzICYga0xTSXRlbUluZm9Jc0NsYXNzaWNBcHApIHx8CisgICAgICAgICAgICAgICAgIChpdGVtSW5mb1JlY29yZC5mbGFncyAmIGtMU0l0ZW1JbmZvSXNQbGFpbkZpbGUpKSB7CisgICAgICAgICAgICByYzIgPSBfY2hlY2tfY2xhc3NpY19hcHAoY3VycmVudFVSTCwgJnByb2ROYW1lLCAmdmVyc2lvbiwgZmlsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJzd2luc3Qgc2hvdWxkbid0IGdldCBoZXJlOiAlc1xuIiwgZmlsZSk7CisgICAgICAgICAgICBfZHVtcF9mbGFncyhpdGVtSW5mb1JlY29yZC5mbGFncyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmMyKSB7IC8qIG5vdCBhbiBhcHAuIGlmIGRpcmVjdG9yeSwgcmVjdXJzZTsgZWxzZSBjb250aW51ZSAqLworICAgICAgICAgICAgX2R1bXBfZmxhZ3MoaXRlbUluZm9SZWNvcmQuZmxhZ3MpOworICAgICAgICAgICAgaWYgKDEgPT0gcmMyKQorICAgICAgICAgICAgICAgIG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9yZWFkKGZpbGVzLCBmaWxlLCAwKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKgorICAgICAgICAgKiBhbGxvY2F0ZSBlbnRyeQorICAgICAgICAgKi8KKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX3N3aW5zdF9lbnRyeV9jcmVhdGUoKytfaW5kZXgpOworICAgICAgICBpZiAoTlVMTCA9PSBlbnRyeSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIHN3aW5zdCBlbnRyeVxuIik7CisgICAgICAgICAgICByYyA9IC0xOworICAgICAgICAgICAgU05NUF9DRlJlbGVhc2UocHJvZE5hbWUpOworICAgICAgICAgICAgU05NUF9DRlJlbGVhc2UodmVyc2lvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5LT5zd05hbWVfbGVuID0KKyAgICAgICAgICAgIHNucHJpbnRmKGVudHJ5LT5zd05hbWUsIHNpemVvZihlbnRyeS0+c3dOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICIlcyAlcyIsIENGU3RyaW5nR2V0Q1N0cmluZ1B0cihwcm9kTmFtZSwwKSwKKyAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nR2V0Q1N0cmluZ1B0cih2ZXJzaW9uLDApKTsKKworICAgICAgICBERUJVR01TR1RMKCgic3dpbnN0OmFyY2g6ZGFyd2luIiwgIlx0JXMgJXNcbiIsIGZpbGUsIGVudHJ5LT5zd05hbWUpKTsKKworICAgICAgICAvKiogZ2V0IHRoZSBsYXN0IG1vZCBkYXRlICovCisgICAgICAgIGlmKHN0YXQoZmlsZSwgJnN0YXRfYnVmKSAhPSAtMSkgeworICAgICAgICAgICAgZGF0ZV9idWYgPSBkYXRlX25fdGltZSgmc3RhdF9idWYuc3RfbXRpbWUsICZkYXRlX2xlbik7CisgICAgICAgICAgICBlbnRyeS0+c3dEYXRlX2xlbiA9IGRhdGVfbGVuOworICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5zd0RhdGUsIGRhdGVfYnVmLCBlbnRyeS0+c3dEYXRlX2xlbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisgICAgICAgIGVudHJ5ID0gTlVMTDsKKyAgICAgICAgU05NUF9DRlJlbGVhc2UocHJvZE5hbWUpOworICAgICAgICBTTk1QX0NGUmVsZWFzZSh2ZXJzaW9uKTsKKyAgICB9CisgICAgSVRFUkFUT1JfUkVMRUFTRShpdCk7CisgICAgbmV0c25tcF9kaXJlY3RvcnlfY29udGFpbmVyX2ZyZWUoZmlsZXMpOworCisgICAgcmV0dXJuIHJjOworfQorCitpbnQKK19jaGVja19idW5kbGVkX2FwcChDRlVSTFJlZiBjdXJyZW50VVJMLCBDRlN0cmluZ1JlZiAqcHJvZE5hbWUsCisgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgKnZlcnNpb24sIGNvbnN0IGNoYXIqIGZpbGUpCit7CisgICAgQ0ZCdW5kbGVSZWYgICAgICAgICB0aGVCdW5kbGUgPSBOVUxMOworICAgIENGRGljdGlvbmFyeVJlZiAgICAgaW5mb0RpY3QgPSBOVUxMOworICAgICAgICAgICAgCisgICAgaWYgKChOVUxMID09IHByb2ROYW1lKSB8fCAoTlVMTCA9PSB2ZXJzaW9uKSkKKyAgICAgICByZXR1cm4gLTE7CisKKyAgICB0aGVCdW5kbGUgPSBDRkJ1bmRsZUNyZWF0ZSAoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY3VycmVudFVSTCk7CisgICAgaWYodGhlQnVuZGxlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsgLyogbm90IGEgYnVuZGxlICovCisKKyAgICBpbmZvRGljdCA9IENGQnVuZGxlR2V0SW5mb0RpY3Rpb25hcnkodGhlQnVuZGxlKTsKKyAgICBpZigwID09IENGRGljdGlvbmFyeUdldENvdW50KGluZm9EaWN0KSkgeworICAgICAgICBTTk1QX0NGUmVsZWFzZSh0aGVCdW5kbGUpOworICAgICAgICByZXR1cm4gMTsgLyogZGlyZWN0b3J5ICovCisgICAgfQorCisgICAgKnByb2ROYW1lID0gKENGU3RyaW5nUmVmKQorICAgICAgICBDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoaW5mb0RpY3QsIENGU1RSKCJDRkJ1bmRsZU5hbWUiKSk7CisgICAgaWYgKE5VTEwgPT0gKnByb2ROYW1lKSB7CisgICAgICAgICpwcm9kTmFtZSA9IChDRlN0cmluZ1JlZikKKyAgICAgICAgICAgIENGRGljdGlvbmFyeUdldFZhbHVlIChpbmZvRGljdCwgQ0ZTVFIoIkNGQnVuZGxlRGlzcGxheU5hbWUiKSk7CisgICAgICAgIGlmIChOVUxMID09ICpwcm9kTmFtZSkgeworICAgICAgICAgICAgKnByb2ROYW1lID0gKENGU3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoaW5mb0RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU1RSKCJDRkJ1bmRsZUV4ZWN1dGFibGUiKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYoTlVMTCA9PSAqcHJvZE5hbWUpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3aW5zdDphcmNoOmRhcndpbiIsICJcdG1pc3NpbmcgbmFtZTogJXNcbiIsZmlsZSkpOworICAgICAgICAvKkNGU2hvdyhpbmZvRGljdCk7Ki8KKyAgICAgICAgU05NUF9DRlJlbGVhc2UodGhlQnVuZGxlKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgICp2ZXJzaW9uID0gKENGU3RyaW5nUmVmKQorICAgICAgICBDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoaW5mb0RpY3QsIENGU1RSKCJDRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZyIpKTsKKyAgICBpZihOVUxMID09ICp2ZXJzaW9uKSB7CisgICAgICAgICp2ZXJzaW9uID0gKENGU3RyaW5nUmVmKQorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKGluZm9EaWN0LCBDRlNUUigiQ0ZCdW5kbGVWZXJzaW9uIikpOworICAgICAgICBpZiAoKnZlcnNpb24gPT0gTlVMTCkgCisgICAgICAgICAgICAqdmVyc2lvbiA9IChDRlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKGluZm9EaWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlNUUigiQ0ZCdW5kbGVHZXRJbmZvU3RyaW5nIikpOworICAgIH0KKyAgICBpZihOVUxMID09ICp2ZXJzaW9uKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6YXJjaDpkYXJ3aW4iLCAiXHRtaXNzaW5nIHZlcnNpb246ICVzXG4iLGZpbGUpKTsKKyAgICAgICAgLypDRlNob3coaW5mb0RpY3QpOyovCisgICAgICAgIFNOTVBfQ0ZSZWxlYXNlKHRoZUJ1bmRsZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgCisgICAgaWYodGhlQnVuZGxlICE9IE5VTEwpIHsKKyAgICAgICAgQ0ZSZXRhaW4oKnByb2ROYW1lKTsKKyAgICAgICAgQ0ZSZXRhaW4oKnZlcnNpb24pOworICAgICAgICBTTk1QX0NGUmVsZWFzZSh0aGVCdW5kbGUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2NoZWNrX2NsYXNzaWNfYXBwKENGVVJMUmVmIGN1cnJlbnRVUkwsIENGU3RyaW5nUmVmICpwcm9kTmFtZSwKKyAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiAqdmVyc2lvbiwgY29uc3QgY2hhciogZmlsZSkKK3sKKyAgICAvKgorICAgICAqIGdldCBpbmZvIGZvciBjbGFzc2ljIG9yIHNpbmdsZS1maWxlIGFwcHMKKyAgICAgKi8KKyAgICBGU1JlZiB0aGVGU1JlZjsKKyAgICBpbnQgdGhlUmVzRmlsZTsKKworICAgIGlmICgoTlVMTCA9PSBwcm9kTmFtZSkgfHwgKE5VTEwgPT0gdmVyc2lvbikpCisgICAgICAgcmV0dXJuIC0xOworCisgICAgKnByb2ROYW1lID0gQ0ZVUkxDb3B5TGFzdFBhdGhDb21wb25lbnQoY3VycmVudFVSTCk7CisgICAgaWYgKCEgQ0ZVUkxHZXRGU1JlZihjdXJyZW50VVJMLCAmdGhlRlNSZWYpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6YXJjaDpkYXJ3aW4iLCAiR2V0RlNSZWYgZmFpbGVkOiAlc1xuIiwgZmlsZSkpOworICAgICAgICBTTk1QX0NGUmVsZWFzZSgqcHJvZE5hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHRoZVJlc0ZpbGUgPSBGU09wZW5SZXNGaWxlKCZ0aGVGU1JlZiwgZnNSZFBlcm0pOworICAgIGlmIChSZXNFcnJvcigpICE9IG5vRXJyKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6YXJjaDpkYXJ3aW4iLCAiRlNPcGVuUmVzRmlsZSBmYWlsZWQ6ICVzXG4iLCBmaWxlKSk7CisgICAgICAgIFNOTVBfQ0ZSZWxlYXNlKCpwcm9kTmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgVmVyc1JlY0huZGwgdmVyc0hhbmRsZSA9IChWZXJzUmVjSG5kbClHZXQxSW5kUmVzb3VyY2UoJ3ZlcnMnLCAxKTsKKyAgICBpZiAodmVyc0hhbmRsZSAhPSBOVUxMKSB7CisgICAgICAgICp2ZXJzaW9uID0gQ0ZTdHJpbmdDcmVhdGVXaXRoUGFzY2FsU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICgqKnZlcnNIYW5kbGUpLnNob3J0VmVyc2lvbiwga0NGU3RyaW5nRW5jb2RpbmdNYWNSb21hbik7CisgICAgICAgIGlmICgqdmVyc2lvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICBTdHJpbmdQdHIgbG9uZ1ZlcnNpb25QdHIgPSAoKip2ZXJzSGFuZGxlKS5zaG9ydFZlcnNpb247CisgICAgICAgICAgICBsb25nVmVyc2lvblB0ciA9IChTdHJpbmdQdHIpKCgoUHRyKSBsb25nVmVyc2lvblB0cikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSArICgodW5zaWduZWQgY2hhcikgKmxvbmdWZXJzaW9uUHRyKSk7CisgICAgICAgICAgICAqdmVyc2lvbiA9IENGU3RyaW5nQ3JlYXRlV2l0aFBhc2NhbFN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nVmVyc2lvblB0ciwgIGtDRlN0cmluZ0VuY29kaW5nTWFjUm9tYW4pOworICAgICAgICB9CisgICAgICAgIFJlbGVhc2VSZXNvdXJjZSgoSGFuZGxlKXZlcnNIYW5kbGUpOworICAgIH0KKyAgICBDbG9zZVJlc0ZpbGUodGhlUmVzRmlsZSk7CisgICAgaWYoKnZlcnNpb24gPT0gTlVMTCkgeworICAgICAgICBERUJVR01TR1RMKCgic3dpbnN0OmFyY2g6ZGFyd2luIiwKKyAgICAgICAgICAgICAgICAgICAgIlx0bWlzc2luZyBjbGFzc2ljL2ZpbGUgdmVyc2lvbjogJXNcbiIsIGZpbGUpKTsKKyAgICAgICAgU05NUF9DRlJlbGVhc2UoKnByb2ROYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfbnVsbC5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfbnVsbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YWRjZDcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9udWxsLmMKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIHN3aW5zdF9udWxsLmM6CisgKiAgICAgaHJTV0luc3RhbGxlZFRhYmxlIGRhdGEgYWNjZXNzOgorICogICAgIGR1bW15IGludGVyZmFjZSBmb3Igbm9uLXN1cHBvcnRlZCBzeXN0ZW1zCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaD4KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfc3dpbnN0X2FyY2hfaW5pdCh2b2lkKQoreworICAgIC8qIE5vdGhpbmcgdG8gZG8gKi8KKyAgICByZXR1cm47Cit9CisKK3ZvaWQKK25ldHNubXBfc3dpbnN0X2FyY2hfc2h1dGRvd24odm9pZCkKK3sKKyAgICAvKiBOb3RoaW5nIHRvIGRvICovCisgICAgcmV0dXJuOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworaW50CituZXRzbm1wX3N3aW5zdF9hcmNoX2xvYWQoIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZsYWdzKQoreworICAgIC8qIE5vdGhpbmcgdG8gZG8gKi8KKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKKyAgICAgICAgICAgICAgICBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTYxN2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogc3dpbnN0X3BrZ2luZm8uYzoKKyAqICAgICBoclNXSW5zdGFsbGVkVGFibGUgZGF0YSBhY2Nlc3M6CisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfRElSRU5UX0gKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9QS0dMT0NTX0gKKyNpbmNsdWRlIDxwa2dsb2NzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1BLR0lORk9fSAorI2luY2x1ZGUgPHBrZ2luZm8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dpbnN0Lmg+CisKKyAgIC8qCisgICAgKiBMb2NhdGlvbiBvZiBwYWNrYWdlIGRpcmVjdG9yeS4KKyAgICAqIFVzZWQgZm9yOgorICAgICogICAgLSByZXBvcnRpbmcgaHJTV0luc3RhbGxlZExhc3QqIG9iamVjdHMKKyAgICAqICAgIC0gZGV0ZWN0aW5nIHdoZW4gdGhlIGNhY2hlZCBjb250ZW50cyBhcmUgb3V0IG9mIGRhdGUuCisgICAgKi8KK2NoYXIgcGtnX2RpcmVjdG9yeVtTTk1QX01BWFBBVEhdOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorbmV0c25tcF9zd2luc3RfYXJjaF9pbml0KHZvaWQpCit7CisjaWYgZGVmaW5lZChQS0dMT0MpCisgICAgc25wcmludGYoIHBrZ19kaXJlY3RvcnksIFNOTVBfTUFYUEFUSCwgIiVzIiwgUEtHTE9DICk7CisjZWxpZiBkZWZpbmVkKGhwdXg5KQorICAgIHNucHJpbnRmKCBwa2dfZGlyZWN0b3J5LCBTTk1QX01BWFBBVEgsICIvc3lzdGVtIiApOworI2VsaWYgZGVmaW5lZChocHV4MTApIHx8ICBkZWZpbmVkKGhwdXgxMSkgCisgICAgc25wcmludGYoIHBrZ19kaXJlY3RvcnksIFNOTVBfTUFYUEFUSCwgIi92YXIvYWRtL3N3L3Byb2R1Y3RzIiApOworI2VsaWYgZGVmaW5lZChmcmVlYnNkMikgfHwgZGVmaW5lZChvcGVuYnNkKQorICAgIHNucHJpbnRmKCBwa2dfZGlyZWN0b3J5LCBTTk1QX01BWFBBVEgsICIvdmFyL2RiL3BrZyIgKTsKKyNlbGlmIGRlZmluZWQobGludXgpCisgICAgc25wcmludGYoIHBrZ19kaXJlY3RvcnksIFNOTVBfTUFYUEFUSCwgIi92YXIvY2FjaGUvaHJtaWIiICk7CisjZWxzZQorICAgIHBrZ19kaXJlY3RvcnlbMF0gPSAnXDAnOworICAgIHNubXBfbG9nKCBMT0dfRVJSLCAiU1dJbnN0OiBObyBwYWNrYWdlIGRpcmVjdG9yeVxuIiApOworI2VuZGlmCisKKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmluaXQ6YXJjaCIsIiBwYWNrYWdlIGRpcmVjdG9yeSA9ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfZGlyZWN0b3J5KSk7CisgICAgcmV0dXJuOworfQorCit2b2lkCituZXRzbm1wX3N3aW5zdF9hcmNoX3NodXRkb3duKHZvaWQpCit7CisgICAgcGtnX2RpcmVjdG9yeVswXSA9ICdcMCc7CisgICAgcmV0dXJuOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworaW50CituZXRzbm1wX3N3aW5zdF9hcmNoX2xvYWQoIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZsYWdzKQoreworICAgIERJUiAgICAgICAgICAgICAgICAgICpkOworICAgIHN0cnVjdCBkaXJlbnQgICAgICAgICpkcDsKKyAgICBzdHJ1Y3Qgc3RhdCAgICAgICAgICAgc3RhdF9idWY7CisjaWZkZWYgSEFWRV9QS0dJTkZPCisgICAgY2hhciAgICAgICAgICAgICAgICAgKnYsICpjOworI2VuZGlmCisgICAgY2hhciAgICAgICAgICAgICAgICAgIGJ1ZlsgQlVGU0laIF0sICpjcDsKKyAgICB0aW1lX3QgICAgICAgICAgICAgICAgaW5zdGFsbF90aW1lOworICAgIHNpemVfdCAgICAgICAgICAgICAgICBkYXRlX2xlbjsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgcmMsIGkgPSAxOworICAgIG5ldHNubXBfc3dpbnN0X2VudHJ5ICplbnRyeTsKKworICAgIGlmICggIXBrZ19kaXJlY3RvcnlbMF0gKSB7CisgICAgICAgIHJldHVybiAxOyAgICAvKiBDYW4ndCByZXBvcnQgaW5zdGFsbGVkIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlcmUgaXNuJ3QgYSBsaXN0IG9mIHRoZW0hICovCisgICAgfQorICAgIGQgPSBvcGVuZGlyKCBwa2dfZGlyZWN0b3J5ICk7CisgICAgaWYgKCFkKQorCXJldHVybiAxOworICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGQpKSAhPSBOVUxMKSB7CisgICAgICAgIGlmICggJy4nID09IGRwLT5kX25hbWVbMF0gKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd2luc3RfZW50cnlfY3JlYXRlKCBpKysgKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLworICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisKKyNpZmRlZiBIQVZFX1BLR0lORk8KKyAgICAgICAgdiA9IHBrZ3BhcmFtKCBkcC0+ZF9uYW1lLCAiVkVSU0lPTiIgKTsKKyAgICAgICAgYyA9IHBrZ3BhcmFtKCBkcC0+ZF9uYW1lLCAiQ0FURUdPUlkiICk7CisKKyAgICAgICAgZW50cnktPnN3TmFtZV9sZW4gPSBzbnByaW50ZiggZW50cnktPnN3TmFtZSwgc2l6ZW9mKGVudHJ5LT5zd05hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMtJXMiLCBkcC0+ZF9uYW1lLCB2ICk7CisgICAgICAgIGVudHJ5LT5zd1R5cGUgPSAoTlVMTCAhPSBzdHJzdHIoIGMsICJzeXN0ZW0iKSkKKyAgICAgICAgICAgICAgICAgICAgICAgID8gMiAgICAgIC8qIG9wZXJhdGluZ1N5c3RlbSAqLworICAgICAgICAgICAgICAgICAgICAgICAgOiA0OyAgICAgLyogIGFwcGxpY2F0aW9uICAgICovCisKKyAgICAgICAgLyogRG8gd2UgbmVlZCB0byBmcmVlICd2JyAmICdjJyA/Pz8gKi8KKyNlbHNlCisgICAgICAgIGVudHJ5LT5zd05hbWVfbGVuID0gc25wcmludGYoIGVudHJ5LT5zd05hbWUsIHNpemVvZihlbnRyeS0+c3dOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwgZHAtPmRfbmFtZSApOworCisgICAgICAgIC8qIG5vIGluZm9ybWF0aW9uIGFib3V0IE8vUyB2cyBhcHBsaWNhdGlvbiBwYWNrYWdlcyA/Pz8gKi8KKyNlbmRpZgorCisgICAgICAgIHNucHJpbnRmKCBidWYsIEJVRlNJWiwgIiVzLyVzIiwgcGtnX2RpcmVjdG9yeSwgZHAtPmRfbmFtZSApOworICAgICAgICBzdGF0KCBidWYsICZzdGF0X2J1ZiApOworICAgICAgICBpbnN0YWxsX3RpbWUgPSBzdGF0X2J1Zi5zdF9tdGltZTsKKyAgICAgICAgY3AgPSBkYXRlX25fdGltZSggJmluc3RhbGxfdGltZSwgJmRhdGVfbGVuICk7CisgICAgICAgIG1lbWNweSggZW50cnktPnN3RGF0ZSwgY3AsIGRhdGVfbGVuICk7CisgICAgICAgIGVudHJ5LT5zd0RhdGVfbGVuID0gZGF0ZV9sZW47CisgICAgfQorICAgIGNsb3NlZGlyKCBkICk7CisKKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKKyAgICAgICAgICAgICAgICBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUzYWFlYQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogc3dpbnN0X3JwbS5jOgorICogICAgIGhyU1dJbnN0YWxsZWRUYWJsZSBkYXRhIGFjY2VzczoKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfRkNOVExfSAorI2luY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUlBNX1JQTUxJQl9ICisjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9SUE1fUlBNTElCX0gKKyNpbmNsdWRlIDxycG0vaGVhZGVyLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1JQTUdFVFBBVEgJCS8qIEhBVkVfUlBNX1JQTU1BQ1JPX0ggKi8KKyNpbmNsdWRlIDxycG0vcnBtbWFjcm8uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfUlBNX1JQTVRTX0gKKyNpbmNsdWRlIDxycG0vcnBtdHMuaD4KKyNpbmNsdWRlIDxycG0vcnBtZGIuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dpbnN0Lmg+CisKKyAgIC8qCisgICAgKiBMb2NhdGlvbiBvZiBSUE0gcGFja2FnZSBkaXJlY3RvcnkuCisgICAgKiBVc2VkIGZvcjoKKyAgICAqICAgIC0gcmVwb3J0aW5nIGhyU1dJbnN0YWxsZWRMYXN0KiBvYmplY3RzCisgICAgKiAgICAtIGRldGVjdGluZyB3aGVuIHRoZSBjYWNoZWQgY29udGVudHMgYXJlIG91dCBvZiBkYXRlLgorICAgICovCitjaGFyIHBrZ19kaXJlY3RvcnlbU05NUF9NQVhQQVRIXTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfc3dpbnN0X2FyY2hfaW5pdCh2b2lkKQoreworICAgIGNoYXIgICAgICAgICpycG1kYnBhdGggPSBOVUxMOworICAgIGNvbnN0IGNoYXIgICpkYnBhdGg7CisgICAgc3RydWN0IHN0YXQgIHN0YXRfYnVmOworCisjaWZkZWYgSEFWRV9SUE1HRVRQQVRICisgICAgcnBtUmVhZENvbmZpZ0ZpbGVzKCBOVUxMLCBOVUxMICk7CisgICAgcnBtZGJwYXRoID0gcnBtR2V0UGF0aCggIiV7X2RicGF0aH0iLCBOVUxMICk7CisgICAgZGJwYXRoID0gcnBtZGJwYXRoOworI2Vsc2UKKyAgICBkYnBhdGggPSAiL3Zhci9saWIvcnBtIjsgICAvKiBNb3N0IGxpa2VseSAqLworI2VuZGlmCisKKyAgICBzbnByaW50ZiggcGtnX2RpcmVjdG9yeSwgU05NUF9NQVhQQVRILCAiJXMvUGFja2FnZXMiLCBkYnBhdGggKTsKKyAgICBTTk1QX0ZSRUUocnBtZGJwYXRoKTsKKyAgICBkYnBhdGggPSBOVUxMOworICAgIGlmICgtMSA9PSBzdGF0KCBwa2dfZGlyZWN0b3J5LCAmc3RhdF9idWYgKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ2FuJ3QgZmluZCBkaXJlY3Rvcnkgb2YgUlBNIHBhY2thZ2VzIik7CisgICAgICAgIHBrZ19kaXJlY3RvcnlbMF0gPSAnXDAnOworICAgIH0KK30KKwordm9pZAorbmV0c25tcF9zd2luc3RfYXJjaF9zaHV0ZG93bih2b2lkKQoreworICAgICAvKiBOb3RoaW5nIHRvIGRvICovCisgICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9zd2luc3RfYXJjaF9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBycG10cyAgICAgICAgICAgICAgICAgdHM7CisKKyAgICBycG1kYk1hdGNoSXRlcmF0b3IgICAgbWk7CisgICAgSGVhZGVyICAgICAgICAgICAgICAgIGg7CisgICAgY2hhciAgICAgICAgICAgICAgICAgKm4sICp2LCAqciwgKmc7CisgICAgaW50MzJfdCAgICAgICAgICAgICAgKnQ7CisgICAgdGltZV90ICAgICAgICAgICAgICAgIGluc3RhbGxfdGltZTsKKyAgICBzaXplX3QgICAgICAgICAgICAgICAgZGF0ZV9sZW47CisgICAgaW50ICAgICAgICAgICAgICAgICAgIGkgPSAxOworICAgIG5ldHNubXBfc3dpbnN0X2VudHJ5ICplbnRyeTsKKworICAgIHRzID0gcnBtdHNDcmVhdGUoKTsKKyAgICBycG10c1NldFZTRmxhZ3MoIHRzLCAoX1JQTVZTRl9OT1NJR05BVFVSRVN8X1JQTVZTRl9OT0RJR0VTVFMpKTsKKworICAgIG1pID0gcnBtdHNJbml0SXRlcmF0b3IoIHRzLCBSUE1EQklfUEFDS0FHRVMsIE5VTEwsIDApOworICAgIGlmIChtaSA9PSBOVUxMKQorCU5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgInJwbWRiT3BlbigpIGZhaWxlZFxuIikpOworCisgICAgd2hpbGUgKE5VTEwgIT0gKGggPSBycG1kYk5leHRJdGVyYXRvciggbWkgKSkpCisgICAgeworICAgICAgICBjb25zdCB1X2NoYXIgKmR0OworICAgICAgICBlbnRyeSA9IG5ldHNubXBfc3dpbnN0X2VudHJ5X2NyZWF0ZSggaSsrICk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKworICAgICAgICBoID0gaGVhZGVyTGluayggaCApOworICAgICAgICBoZWFkZXJHZXRFbnRyeSggaCwgUlBNVEFHX05BTUUsICAgICAgICBOVUxMLCAodm9pZCoqKSZuLCBOVUxMKTsKKyAgICAgICAgaGVhZGVyR2V0RW50cnkoIGgsIFJQTVRBR19WRVJTSU9OLCAgICAgTlVMTCwgKHZvaWQqKikmdiwgTlVMTCk7CisgICAgICAgIGhlYWRlckdldEVudHJ5KCBoLCBSUE1UQUdfUkVMRUFTRSwgICAgIE5VTEwsICh2b2lkKiopJnIsIE5VTEwpOworICAgICAgICBoZWFkZXJHZXRFbnRyeSggaCwgUlBNVEFHX0dST1VQLCAgICAgICBOVUxMLCAodm9pZCoqKSZnLCBOVUxMKTsKKyAgICAgICAgaGVhZGVyR2V0RW50cnkoIGgsIFJQTVRBR19JTlNUQUxMVElNRSwgTlVMTCwgKHZvaWQqKikmdCwgTlVMTCk7CisKKyAgICAgICAgZW50cnktPnN3TmFtZV9sZW4gPSBzbnByaW50ZiggZW50cnktPnN3TmFtZSwgc2l6ZW9mKGVudHJ5LT5zd05hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMtJXMtJXMiLCBuLCB2LCByKTsKKyAgICAgICAgZW50cnktPnN3VHlwZSA9IChOVUxMICE9IHN0cnN0ciggZywgIlN5c3RlbSBFbnZpcm9ubWVudCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgPyAyICAgICAgLyogb3BlcmF0aW5nU3lzdGVtICovCisgICAgICAgICAgICAgICAgICAgICAgICA6IDQ7ICAgICAvKiAgYXBwbGljYXRpb24gICAgKi8KKworICAgICAgICBpbnN0YWxsX3RpbWUgPSAqdDsKKyAgICAgICAgZHQgPSBkYXRlX25fdGltZSggJmluc3RhbGxfdGltZSwgJmRhdGVfbGVuICk7CisgICAgICAgIGlmIChkYXRlX2xlbiAhPSA4ICYmIGRhdGVfbGVuICE9IDExKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQm9ndXMgbGVuZ3RoIGZyb20gZGF0ZV9uX3RpbWUgZm9yICVzIiwgZW50cnktPnN3TmFtZSk7CisgICAgICAgICAgICBlbnRyeS0+c3dEYXRlX2xlbiA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbnRyeS0+c3dEYXRlX2xlbiA9IGRhdGVfbGVuOworICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5zd0RhdGUsIGR0LCBlbnRyeS0+c3dEYXRlX2xlbik7CisgICAgICAgIH0KKworICAgICAgICBoZWFkZXJGcmVlKCBoICk7CisgICAgfQorICAgIHJwbWRiRnJlZUl0ZXJhdG9yKCBtaSApOworICAgIHJwbXRzRnJlZSggdHMgKTsKKworICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6bG9hZDphcmNoIiwgImxvYWRlZCAlZCBlbnRyaWVzXG4iLAorICAgICAgICAgICAgICAgIChpbnQpQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI0NjY5ZgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYwpAQCAtMCwwICsxLDM0NyBAQAorLyoKKyAqICBTd3J1biBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQ6IHN3cnVuLmMgMTU3NjggMjAwNy0wMS0yMiAxNjoxODoyOVogcnN0b3J5ICQKKyAqLworLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBsb2NhbCBzdGF0aWMgdmFycworICovCitzdGF0aWMgaW50IF9zd3J1bl9pbml0ID0gMDsKKyAgICAgICBpbnQgX3N3cnVuX21heCAgPSAwOworc3RhdGljIG5ldHNubXBfY2FjaGUgICAgICpzd3J1bl9jYWNoZSAgICAgPSBOVUxMOworc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzd3J1bl9jb250YWluZXIgPSBOVUxMOworCituZXRzbm1wX2NvbnRhaW5lciAqIG5ldHNubXBfc3dydW5fY29udGFpbmVyKHZvaWQpOworbmV0c25tcF9jYWNoZSAgICAgKiBuZXRzbm1wX3N3cnVuX2NhY2hlICAgICh2b2lkKTsKKworLyoKKyAqIGxvY2FsIHN0YXRpYyBwcm90b3R5cGVzCisgKi8KK3N0YXRpYyB2b2lkIF9zd3J1bl9lbnRyeV9yZWxlYXNlKG5ldHNubXBfc3dydW5fZW50cnkgKiBlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdW51c2VkKTsKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBleHRlcm5hbCBwZXItYXJjaGl0ZWN0dXJlIGZ1bmN0aW9ucyBwcm90b3R5cGVzCisgKgorICogVGhlc2Ugc2hvdWxkbid0IGJlIGNhbGxlZCBieSB0aGUgZ2VuZXJhbCBwdWJsaWMsIHNvIHRoZXkgYXJlbid0IGluCisgKiB0aGUgaGVhZGVyIGZpbGUuCisgKi8KK2V4dGVybiB2b2lkIG5ldHNubXBfYXJjaF9zd3J1bl9pbml0KHZvaWQpOworZXh0ZXJuIGludCBuZXRzbm1wX2FyY2hfc3dydW5fY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOworCisvKioKKyAqIGluaXRpYWxpemF0aW9uCisgKi8KK3ZvaWQKK2luaXRfc3dydW4odm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgic3dydW46YWNjZXNzIiwgImluaXRcbiIpKTsKKworICAgIGlmICgxID09IF9zd3J1bl9pbml0KQorICAgICAgICByZXR1cm47CisKKyAgICBfc3dydW5faW5pdCA9IDE7CisKKyAgICAodm9pZCluZXRzbm1wX3N3cnVuX2NvbnRhaW5lcigpOworICAgIG5ldHNubXBfYXJjaF9zd3J1bl9pbml0KCk7CisgICAgKHZvaWQpIG5ldHNubXBfc3dydW5fY2FjaGUoKTsKK30KKwordm9pZAorc2h1dGRvd25fc3dydW4odm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgic3dydW46YWNjZXNzIiwgInNodXRkb3duXG4iKSk7CisKK30KKworaW50Citzd3J1bl9jb3VudF9wcm9jZXNzZXMoIHZvaWQgKQoreworICAgIG5ldHNubXBfY2FjaGVfY2hlY2tfYW5kX3JlbG9hZChzd3J1bl9jYWNoZSk7CisgICAgcmV0dXJuICggc3dydW5fY29udGFpbmVyID8gQ09OVEFJTkVSX1NJWkUoc3dydW5fY29udGFpbmVyKSA6IDAgKTsKK30KKworaW50Citzd3J1bl9tYXhfcHJvY2Vzc2VzKCB2b2lkICkKK3sKKyAgICByZXR1cm4gX3N3cnVuX21heDsKK30KKworaW50Citzd3J1bl9jb3VudF9wcm9jZXNzZXNfYnlfbmFtZSggY2hhciAqbmFtZSApCit7CisgICAgbmV0c25tcF9zd3J1bl9lbnRyeSAqZW50cnk7CisgICAgbmV0c25tcF9pdGVyYXRvciAgKml0OworICAgIGludCBpID0gMDsKKworICAgIG5ldHNubXBfY2FjaGVfY2hlY2tfYW5kX3JlbG9hZChzd3J1bl9jYWNoZSk7CisgICAgaWYgKCAhc3dydW5fY29udGFpbmVyIHx8ICFuYW1lICkKKyAgICAgICAgcmV0dXJuIDA7ICAgIC8qIG9yIC0xICovCisKKyAgICBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUiggc3dydW5fY29udGFpbmVyICk7CisgICAgd2hpbGUgKCBlbnRyeSA9IElURVJBVE9SX05FWFQoIGl0ICkpIHsKKyAgICAgICAgaWYgKDAgPT0gc3RyY21wKCBlbnRyeS0+aHJTV1J1bk5hbWUsIG5hbWUgKSkKKyAgICAgICAgICAgIGkrKzsKKyAgICB9CisgICAgSVRFUkFUT1JfUkVMRUFTRSggaXQgKTsKKworICAgIHJldHVybiBpOworfQorCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogY2FjaGUgZnVuY3Rpb25zCisgKi8KKworc3RhdGljIGludAorX2NhY2hlX2xvYWQoIG5ldHNubXBfY2FjaGUgKmNhY2hlLCAgdm9pZCAqbWFnaWMgKQoreworICAgIG5ldHNubXBfc3dydW5fY29udGFpbmVyX2xvYWQoIHN3cnVuX2NvbnRhaW5lciwgMCApOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUoIG5ldHNubXBfY2FjaGUgKmNhY2hlLCAgdm9pZCAqbWFnaWMgKQoreworICAgIG5ldHNubXBfc3dydW5fY29udGFpbmVyX2ZyZWVfaXRlbXMoIHN3cnVuX2NvbnRhaW5lciApOworICAgIHJldHVybjsKK30KKworLyoqCisgKiBjcmVhdGUgc3dydW4gY2FjaGUKKyAqLworbmV0c25tcF9jYWNoZSAqCituZXRzbm1wX3N3cnVuX2NhY2hlKHZvaWQpCit7CisgICAgb2lkICAgIGhyU1dSdW5UYWJsZV9vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgNCwgMiB9OworICAgIHNpemVfdCBoclNXUnVuVGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgoaHJTV1J1blRhYmxlX29pZCk7CisKKyAgICBpZiAoICFzd3J1bl9jYWNoZSApIHsKKyAgICAgICAgc3dydW5fY2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAvKiB0aW1lb3V0IGluIHNlY29uZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZV9sb2FkLCAgX2NhY2hlX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXUnVuVGFibGVfb2lkLCBoclNXUnVuVGFibGVfb2lkX2xlbik7CisgICAgICAgIGlmIChzd3J1bl9jYWNoZSkKKyAgICAgICAgICAgIHN3cnVuX2NhY2hlLT5mbGFncyA9IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVDsKKyAgICB9CisgICAgcmV0dXJuIHN3cnVuX2NhY2hlOworfQorCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogY29udGFpbmVyIGZ1bmN0aW9ucworICovCisvKioKKyAqIGNyZWF0ZSBzd3J1biBjb250YWluZXIKKyAqLworbmV0c25tcF9jb250YWluZXIgKgorbmV0c25tcF9zd3J1bl9jb250YWluZXIodm9pZCkKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgREVCVUdNU0dUTCgoInN3cnVuOmNvbnRhaW5lciIsICJpbml0XG4iKSk7CisKKyAgICAvKgorICAgICAqIGNyZWF0ZSB0aGUgY29udGFpbmVyLgorICAgICAqLworICBpZiAoIXN3cnVuX2NvbnRhaW5lcikgeworICAgIHN3cnVuX2NvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoInN3cnVuOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGlmIChOVUxMID09IHN3cnVuX2NvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzd3J1bl9jb250YWluZXItPmNvbnRhaW5lcl9uYW1lID0gc3RyZHVwKCJzd3J1biBjb250YWluZXIiKTsKKyAgfQorCisgICAgcmV0dXJuIHN3cnVuX2NvbnRhaW5lcjsKK30KKworLyoqCisgKiBsb2FkIHN3cnVuIGluZm9ybWF0aW9uIGluIHNwZWNpZmllZCBjb250YWluZXIKKyAqCisgKiBAcGFyYW0gY29udGFpbmVyIGVtcHR5IGNvbnRhaW5lciB0byBiZSBmaWxsZWQuCisgKiAgICAgICAgICAgICAgICAgIHBhc3MgTlVMTCB0byBoYXZlIHRoZSBmdW5jdGlvbiBjcmVhdGUgb25lLgorICogQHBhcmFtIGxvYWRfZmxhZ3MgZmxhZ3MgdG8gbW9kaWZ5IGJlaGF2aW91ci4gRXhhbXBsZXM6CisgKiAgICAgICAgICAgICAgICAgICBORVRTTk1QX1NXUlVOX0FMTF9PUl9OT05FCisgKgorICogQHJldHZhbCBOVUxMICBlcnJvcgorICogQHJldHZhbCAhTlVMTCBwb2ludGVyIHRvIGNvbnRhaW5lcgorICovCituZXRzbm1wX2NvbnRhaW5lcioKK25ldHNubXBfc3dydW5fY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIHVzZXJfY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIgPSB1c2VyX2NvbnRhaW5lcjsKKyAgICBpbnQgcmM7CisKKyAgICBERUJVR01TR1RMKCgic3dydW46Y29udGFpbmVyOmxvYWQiLCAibG9hZFxuIikpOworICAgIG5ldHNubXBfYXNzZXJ0KDEgPT0gX3N3cnVuX2luaXQpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKQorICAgICAgICBjb250YWluZXIgPSBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcigpOworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3Igc3dydW5cbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByYyA9ICBuZXRzbm1wX2FyY2hfc3dydW5fY29udGFpbmVyX2xvYWQoY29udGFpbmVyLCBsb2FkX2ZsYWdzKTsKKyAgICBpZiAoMCAhPSByYykgeworICAgICAgICBpZiAoTlVMTCA9PSB1c2VyX2NvbnRhaW5lcikgeworICAgICAgICAgICAgbmV0c25tcF9zd3J1bl9jb250YWluZXJfZnJlZShjb250YWluZXIsIE5FVFNOTVBfU1dSVU5fTk9GTEFHUyk7CisgICAgICAgICAgICBjb250YWluZXIgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX1NXUlVOX0FMTF9PUl9OT05FKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic3dydW46Y29udGFpbmVyOmxvYWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiBkaXNjYXJkaW5nIHBhcnRpYWwgcmVzdWx0c1xuIikpOworICAgICAgICAgICAgbmV0c25tcF9zd3J1bl9jb250YWluZXJfZnJlZV9pdGVtcyhjb250YWluZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNvbnRhaW5lcjsKK30KKwordm9pZAorbmV0c25tcF9zd3J1bl9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmcmVlX2ZsYWdzKQoreworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpjb250YWluZXIiLCAiZnJlZVxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIGNvbnRhaW5lciBmb3IgbmV0c25tcF9zd3J1bl9jb250YWluZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9TV1JVTl9ET05UX0ZSRUVfSVRFTVMpKQorICAgICAgICBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcl9mcmVlX2l0ZW1zKGNvbnRhaW5lcik7CisKKyAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOworfQorCit2b2lkCituZXRzbm1wX3N3cnVuX2NvbnRhaW5lcl9mcmVlX2l0ZW1zKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoInN3cnVuOmNvbnRhaW5lciIsICJmcmVlX2l0ZW1zXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImludmFsaWQgY29udGFpbmVyIGZvciBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcl9mcmVlX2l0ZW1zXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogZnJlZSBhbGwgaXRlbXMuCisgICAgICovCisgICAgQ09OVEFJTkVSX0NMRUFSKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKilfc3dydW5fZW50cnlfcmVsZWFzZSwKKyAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cit9CisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogc3dydW5fZW50cnkgZnVuY3Rpb25zCisgKi8KKy8qKgorICovCituZXRzbm1wX3N3cnVuX2VudHJ5ICoKK25ldHNubXBfc3dydW5fZW50cnlfZ2V0X2J5X2luZGV4KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIG9pZCBpbmRleCkKK3sKKyAgICBuZXRzbm1wX2luZGV4ICAgdG1wOworCisgICAgREVCVUdNU0dUTCgoInN3cnVuOmVudHJ5IiwgImJ5X2luZGV4XG4iKSk7CisgICAgbmV0c25tcF9hc3NlcnQoMSA9PSBfc3dydW5faW5pdCk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY29udGFpbmVyIGZvciBuZXRzbm1wX3N3cnVuX2VudHJ5X2dldF9ieV9pbmRleFxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHRtcC5sZW4gPSAxOworICAgIHRtcC5vaWRzID0gJmluZGV4OworCisgICAgcmV0dXJuIChuZXRzbm1wX3N3cnVuX2VudHJ5ICopIENPTlRBSU5FUl9GSU5EKGNvbnRhaW5lciwgJnRtcCk7Cit9CisKKy8qKgorICovCituZXRzbm1wX3N3cnVuX2VudHJ5ICoKK25ldHNubXBfc3dydW5fZW50cnlfY3JlYXRlKGludDMyX3QgaW5kZXgpCit7CisgICAgbmV0c25tcF9zd3J1bl9lbnRyeSAqZW50cnkgPQorICAgICAgICBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfc3dydW5fZW50cnkpOworCisgICAgaWYoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBlbnRyeS0+aHJTV1J1bkluZGV4ID0gaW5kZXg7CisgICAgZW50cnktPmhyU1dSdW5UeXBlID0gMTsgLyogdW5rbm93biAqLworICAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gMjsgLyogcnVubmFibGUgKi8KKworICAgIGVudHJ5LT5vaWRfaW5kZXgubGVuID0gMTsKKyAgICBlbnRyeS0+b2lkX2luZGV4Lm9pZHMgPSAob2lkICopICYgZW50cnktPmhyU1dSdW5JbmRleDsKKworICAgIHJldHVybiBlbnRyeTsKK30KKworLyoqCisgKi8KK05FVFNOTVBfSU5MSU5FIHZvaWQKK25ldHNubXBfc3dydW5fZW50cnlfZnJlZShuZXRzbm1wX3N3cnVuX2VudHJ5ICogZW50cnkpCit7CisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybjsKKworICAgIC8qCisgICAgICogU05NUF9GUkVFIG5vdCBuZWVkZWQsIGZvciBhbnkgb2YgdGhlc2UsIAorICAgICAqIHNpbmNlIHRoZSB3aG9sZSBlbnRyeSBpcyBhYm91dCB0byBiZSBmcmVlZAorICAgICAqLworICAgIGZyZWUoZW50cnkpOworfQorCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIFV0aWxpdHkgcm91dGluZXMKKyAqLworCisvKioKKyAqLworc3RhdGljIHZvaWQKK19zd3J1bl9lbnRyeV9yZWxlYXNlKG5ldHNubXBfc3dydW5fZW50cnkgKiBlbnRyeSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5X2ZyZWUoZW50cnkpOworfQorCisKKyNpZmRlZiBURVNUCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGNvbnN0IGNoYXIgKnRva2VucyA9IGdldGVudigiU05NUF9ERUJVRyIpOworCisgICAgbmV0c25tcF9jb250YWluZXJfaW5pdF9saXN0KCk7CisKKyAgICAvKiogc3dydW4sdmVyYm9zZTpzd3J1biw5OnN3cnVuLDg6c3dydW4sNTpzd3J1biAqLworICAgIGlmICh0b2tlbnMpCisgICAgICAgIGRlYnVnX3JlZ2lzdGVyX3Rva2Vucyh0b2tlbnMpOworICAgIGVsc2UKKyAgICAgICAgZGVidWdfcmVnaXN0ZXJfdG9rZW5zKCJzd3J1biIpOworICAgIHNubXBfc2V0X2RvX2RlYnVnZ2luZygxKTsKKworICAgIGluaXRfc3dydW4oKTsKKyAgICBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcl9sb2FkKE5VTEwsIDApOworICAgIHNodXRkb3duX3N3cnVuKCk7CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZjE1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIHN3cnVuIGRhdGEgYWNjZXNzIGhlYWRlcgorICoKKyAqICRJZDogc3dydW4uaCAxNTM0NiAyMDA2LTA5LTI2IDIzOjM0OjUwWiByc3RvcnkgJAorICovCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisjaWZuZGVmIE5FVFNOTVBfQUNDRVNTX1NXUlVOX0NPTkZJR19ICisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX1NXUlVOX0NPTkZJR19ICisKKy8qCisgKiBhbGwgcGxhdGZvcm1zIHVzZSB0aGlzIGdlbmVyaWMgY29kZQorICovCitjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuKQorY29uZmlnX2V4Y2x1ZGUoaG9zdC9ocl9zd3J1bikKKworLyoKKyAqIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGludGVyZmFjZSBjb2RlCisgKi8KKyNpZiAgIGRlZmluZWQoIGRhcndpbiApCisgICAgY29uZmlnX3JlcXVpcmUoaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9kYXJ3aW4pCisjZWxpZiBkZWZpbmVkKCBIQVZFX1NZU19QU1RBVF9IICkKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3BzdGF0KQorI2VsaWYgZGVmaW5lZCggZHluaXggKQorICAgIGNvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJwc2luZm8pCisjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCisjIGlmIF9TTEFTSF9QUk9DX01FVEhPRF8KKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8pCisjIGVsc2UKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2t2bV9wcm9jKQorIyBlbmRpZgorI2VsaWYgZGVmaW5lZCggYWl4NCApIHx8IGRlZmluZWQoIGFpeDUgKSB8fCBkZWZpbmVkKCBhaXg2ICkKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2NpbmZvKQorI2VsaWYgSEFWRV9LVk1fR0VUUFJPQ1MKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvKQorI2VsaWYgZGVmaW5lZCggbGludXggKQorICAgIGNvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cykKKyNlbGlmIGRlZmluZWQoIGN5Z3dpbiApCisgICAgY29uZmlnX3JlcXVpcmUoaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9jeWd3aW4pCisjZWxzZQorICAgIGNvbmZpZ193YXJuaW5nKFRoaXMgcGxhdGZvcm0gZG9lcyBub3QgeWV0IHN1cHBvcnQgaHJTV1J1blRhYmxlIHJld3JpdGVzKQorICAgIGNvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fbnVsbCkKKyNlbmRpZgorCituZXRzbm1wX2NhY2hlICAgICAqbmV0c25tcF9zd3J1bl9jYWNoZSh2b2lkKTsKK25ldHNubXBfY29udGFpbmVyICpuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcih2b2lkKTsKKworI2VuZGlmIC8qIE5FVFNOTVBfQUNDRVNTX1NXUlVOX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2N5Z3dpbi5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9jeWd3aW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWUxNDc1Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9jeWd3aW4uYwpAQCAtMCwwICsxLDI4MSBAQAorLyoKKyAqIHN3cnVuX2N5Z3dpbi5jOgorICogICAgIGhyU1dSdW5UYWJsZSBkYXRhIGFjY2VzczoKKyAqICAgICBDeWd3aW4gaW50ZXJmYWNlIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHN5cy9jeWd3aW4uaD4KKyNpbmNsdWRlIDx0bGhlbHAzMi5oPgorI2luY2x1ZGUgPHBzYXBpLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisKKy8qCisgKiBhIGxvdCBvZiB0aGlzIGlzICJzdG9sZW4iIGZyb20gY3lnd2luIHBzLmNjCisgKi8KKwordHlwZWRlZiAgICAgICAgIEJPT0woV0lOQVBJICogRU5VTVBST0NFU1NNT0RVTEVTKSAoSEFORExFIGhQcm9jZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE1PRFVMRSAqIGxwaE1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBEV09SRCBscGNiTmVlZGVkKTsKKwordHlwZWRlZiAgICAgICAgIERXT1JEKFdJTkFQSSAqIEdFVE1PRFVMRUZJTEVOQU1FKSAoSEFORExFIGhQcm9jZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE1PRFVMRSBoTW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBUU1RSIGxwc3RyRklsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBuU2l6ZSk7CisKK3R5cGVkZWYgICAgICAgICBEV09SRChXSU5BUEkgKiBHRVRQUk9DRVNTTUVNT1JZSU5GTykgKEhBTkRMRSBoUHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBQUk9DRVNTX01FTU9SWV9DT1VOVEVSUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG1jLCBEV09SRCBuU2l6ZSk7CisKK3R5cGVkZWYgICAgICAgICBIQU5ETEUoV0lOQVBJICogQ1JFQVRFU05BUFNIT1QpIChEV09SRCBkd0ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIHRoMzJQcm9jZXNzSUQpOworCit0eXBlZGVmICAgICAgICAgQk9PTChXSU5BUEkgKiBQUk9DRVNTV0FMSykgKEhBTkRMRSBoU25hcHNob3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQUFJPQ0VTU0VOVFJZMzIgbHBwZSk7CisKK0VOVU1QUk9DRVNTTU9EVUxFUyBteUVudW1Qcm9jZXNzTW9kdWxlczsKK0dFVE1PRFVMRUZJTEVOQU1FIG15R2V0TW9kdWxlRmlsZU5hbWVFeDsKK0NSRUFURVNOQVBTSE9UICBteUNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdDsKK1BST0NFU1NXQUxLICAgICBteVByb2Nlc3MzMkZpcnN0OworUFJPQ0VTU1dBTEsgICAgIG15UHJvY2VzczMyTmV4dDsKK0dFVFBST0NFU1NNRU1PUllJTkZPIG15R2V0UHJvY2Vzc01lbW9yeUluZm8gPSBOVUxMOworY3lnd2luX2dldGluZm9fdHlwZXMgcXVlcnkgPSBDV19HRVRQSU5GTzsKKworc3RhdGljIEJPT0wgV0lOQVBJCitkdW1teXByb2Nlc3Ntb2R1bGVzKEhBTkRMRSBoUHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgSE1PRFVMRSAqIGxwaE1vZHVsZSwgRFdPUkQgY2IsIExQRFdPUkQgbHBjYk5lZWRlZCkKK3sKKyAgICBscGhNb2R1bGVbMF0gPSAoSE1PRFVMRSkgKiBscGNiTmVlZGVkOworICAgICpscGNiTmVlZGVkID0gMTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIERXT1JEIFdJTkFQSQorR2V0TW9kdWxlRmlsZU5hbWVFeDk1KEhBTkRMRSBoUHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICBITU9EVUxFIGhNb2R1bGUsIExQVFNUUiBscHN0ckZpbGVOYW1lLCBEV09SRCBuKQoreworICAgIEhBTkRMRSAgICAgICAgICBoOworICAgIERXT1JEICAgICAgICAgICBwaWQgPSAoRFdPUkQpIGhNb2R1bGU7CisgICAgUFJPQ0VTU0VOVFJZMzIgIHByb2M7CisKKyAgICBoID0gbXlDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBQUk9DRVNTLCAwKTsKKyAgICBpZiAoIWgpCisgICAgICAgIHJldHVybiAwOworICAgIHByb2MuZHdTaXplID0gc2l6ZW9mKHByb2MpOworICAgIGlmIChteVByb2Nlc3MzMkZpcnN0KGgsICZwcm9jKSkKKyAgICAgICAgZG8KKyAgICAgICAgICAgIGlmIChwcm9jLnRoMzJQcm9jZXNzSUQgPT0gcGlkKSB7CisgICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaCk7CisgICAgICAgICAgICAgICAgc3RyY3B5KGxwc3RyRmlsZU5hbWUsIHByb2Muc3pFeGVGaWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKG15UHJvY2VzczMyTmV4dChoLCAmcHJvYykpOworICAgIENsb3NlSGFuZGxlKGgpOworICAgIHJldHVybiAwOworfQorCisjZGVmaW5lIEZBQ1RPUiAoMHgxOWRiMWRlZDUzZWE3MTBMTCkKKyNkZWZpbmUgTlNQRVJTRUMgMTAwMDAwMDBMTAorI2RlZmluZSBOU1BFUk1TRUMgMTAwMDBMTAorCitzdGF0aWMgdGltZV90ICAgX19zdGRjYWxsCit0b190aW1lX3QoUEZJTEVUSU1FIHB0cikKK3sKKyAgICBsb25nICAgICAgICAgICAgcmVtOworICAgIGxvbmcgbG9uZyAgICAgICB4ID0KKyAgICAgICAgKChsb25nIGxvbmcpIHB0ci0+ZHdIaWdoRGF0ZVRpbWUgPDwgMzIpICsKKyAgICAgICAgKCh1bnNpZ25lZCkgcHRyLT5kd0xvd0RhdGVUaW1lKTsKKyAgICB4IC09IEZBQ1RPUjsKKyAgICByZW0gPSB4ICUgTlNQRVJTRUM7CisgICAgcmVtICs9IE5TUEVSU0VDIC8gMjsKKyAgICB4IC89IE5TUEVSU0VDOworICAgIHggKz0gcmVtIC8gTlNQRVJTRUM7CisgICAgcmV0dXJuIHg7Cit9CisKK3N0YXRpYyBsb25nCit0b19tc2VjKFBGSUxFVElNRSBwdHIpCit7CisgICAgbG9uZyBsb25nICAgICAgIHggPQorICAgICAgICAoKGxvbmcgbG9uZykgcHRyLT5kd0hpZ2hEYXRlVGltZSA8PCAzMikgKworICAgICAgICAodW5zaWduZWQpIHB0ci0+ZHdMb3dEYXRlVGltZTsKKyAgICB4IC89IE5TUEVSTVNFQzsKKyAgICByZXR1cm4geDsKK30KKworT1NWRVJTSU9OSU5GTyAgIHZlcjsKK0hNT0RVTEUgICAgICAgICBoOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorbmV0c25tcF9hcmNoX3N3cnVuX2luaXQodm9pZCkKK3sKKyAgICBtZW1zZXQoJnZlciwgMCwgc2l6ZW9mIHZlcik7CisgICAgdmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2YgdmVyOworICAgIEdldFZlcnNpb25FeCgmdmVyKTsKKworICAgIGlmICh2ZXIuZHdQbGF0Zm9ybUlkID09IFZFUl9QTEFURk9STV9XSU4zMl9OVCkgeworICAgICAgICBoID0gTG9hZExpYnJhcnkoInBzYXBpLmRsbCIpOworICAgICAgICBpZiAoaCkgeworICAgICAgICAgICAgbXlFbnVtUHJvY2Vzc01vZHVsZXMgICA9IChFTlVNUFJPQ0VTU01PRFVMRVMpCisgICAgICAgICAgICAgICAgICAgICAgIEdldFByb2NBZGRyZXNzKGgsICJFbnVtUHJvY2Vzc01vZHVsZXMiKTsKKyAgICAgICAgICAgIG15R2V0TW9kdWxlRmlsZU5hbWVFeCAgPSAoR0VUTU9EVUxFRklMRU5BTUUpCisgICAgICAgICAgICAgICAgICAgICAgIEdldFByb2NBZGRyZXNzKGgsICJHZXRNb2R1bGVGaWxlTmFtZUV4QSIpOworICAgICAgICAgICAgbXlHZXRQcm9jZXNzTWVtb3J5SW5mbyA9IChHRVRQUk9DRVNTTUVNT1JZSU5GTykKKyAgICAgICAgICAgICAgICAgICAgICAgR2V0UHJvY0FkZHJlc3MoaCwgIkdldFByb2Nlc3NNZW1vcnlJbmZvIik7CisgICAgICAgICAgICBpZiAobXlFbnVtUHJvY2Vzc01vZHVsZXMgJiYgbXlHZXRNb2R1bGVGaWxlTmFtZUV4KQorICAgICAgICAgICAgICAgIHF1ZXJ5ID0gQ1dfR0VUUElORk9fRlVMTDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaHJfc3dydW4gZmFpbGVkIE5UIGluaXRcbiIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJocl9zd3J1biBmYWlsZWQgdG8gbG9hZCBwc2FwaS5kbGxcbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGggPSBHZXRNb2R1bGVIYW5kbGUoIktFUk5FTDMyLkRMTCIpOworICAgICAgICBteUNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdCA9IChDUkVBVEVTTkFQU0hPVCkKKyAgICAgICAgICAgICAgICAgICAgICAgR2V0UHJvY0FkZHJlc3MoaCwgIkNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdCIpOworICAgICAgICBteVByb2Nlc3MzMkZpcnN0ID0gKFBST0NFU1NXQUxLKSBHZXRQcm9jQWRkcmVzcyhoLCAiUHJvY2VzczMyRmlyc3QiKTsKKyAgICAgICAgbXlQcm9jZXNzMzJOZXh0ICA9IChQUk9DRVNTV0FMSykgR2V0UHJvY0FkZHJlc3MoaCwgIlByb2Nlc3MzMk5leHQiKTsKKyAgICAgICAgbXlFbnVtUHJvY2Vzc01vZHVsZXMgID0gZHVtbXlwcm9jZXNzbW9kdWxlczsKKyAgICAgICAgbXlHZXRNb2R1bGVGaWxlTmFtZUV4ID0gR2V0TW9kdWxlRmlsZU5hbWVFeDk1OworICAgICAgICBpZiAobXlDcmVhdGVUb29saGVscDMyU25hcHNob3QgJiYgbXlQcm9jZXNzMzJGaXJzdAorICAgICAgICAgICAgJiYgbXlQcm9jZXNzMzJOZXh0KQorI2lmIDAKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBUaGlzIGRvZXNuJ3Qgd29yayBhZnRlciBhbGwgb24gV2luOTggU0UgCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHF1ZXJ5ID0gQ1dfR0VUUElORk9fRlVMTDsKKyNlbHNlCisgICAgICAgICAgICBxdWVyeSA9IENXX0dFVFBJTkZPOworI2VuZGlmCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJocl9zd3J1biBmYWlsZWQgbm9uLU5UIGluaXRcbiIpOworICAgIH0KKyAgICByZXR1cm47Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitpbnQKK25ldHNubXBfYXJjaF9zd3J1bl9jb250YWluZXJfbG9hZCggbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MpCit7CisgICAgc3RydWN0IGV4dGVybmFsX3BpbmZvICAqY3VycHJvYzsKKyAgICBwaWRfdCAgICAgICAgICAgICAgICAgICBjdXJwaWQgPSAwOworICAgIERXT1JEICAgICAgICAgICAgICAgICAgIG47CisgICAgSEFORExFICAgICAgICAgICAgICAgICAgaDsKKyAgICBGSUxFVElNRSAgICAgICAgICAgICAgICBjdCwgZXQsIGt0LCB1dDsKKyAgICBQUk9DRVNTX01FTU9SWV9DT1VOVEVSUyBwbWM7CisgICAgY2hhciAgICAgICAgICAgICAgICAgICAqY3AxLCAqY3AyOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgICAgKmVudHJ5OworCisgICAgY3lnd2luX2ludGVybmFsKENXX0xPQ0tfUElORk8sIDEwMDApOworICAgIHdoaWxlIChjdXJwcm9jID0gKHN0cnVjdCBleHRlcm5hbF9waW5mbyAqKQorICAgICAgICAgICAgICAgY3lnd2luX2ludGVybmFsKHF1ZXJ5LCBjdXJwaWQgfCBDV19ORVhUUElEKSkgeworCisgICAgICAgIGN1cnBpZCA9IGN1cnByb2MtPnBpZDsKKyAgICAgICAgaWYgKCggUElEX0VYSVRFRCAmIGN1cnByb2MucHJvY2Vzc19zdGF0ZSApIHx8CisgICAgICAgICAgICAgICAoIH4weGZmZmYgJiBjdXJwcm9jLmV4aXRjb2RlICkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX3N3cnVuX2VudHJ5X2NyZWF0ZShjdXJwaWQpOworICAgICAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIGVycm9yIGFscmVhZHkgbG9nZ2VkIGJ5IGZ1bmN0aW9uICovCisgICAgICAgIHJjID0gQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKworCisgICAgICAgIG4gPSBsb3dwcm9jLmR3UHJvY2Vzc0lkICYgMHhmZmZmOworICAgICAgICBoID0gT3BlblByb2Nlc3MoUFJPQ0VTU19RVUVSWV9JTkZPUk1BVElPTiB8IFBST0NFU1NfVk1fUkVBRCwgRkFMU0UsIG4pOworCisgICAgICAgIGlmIChjdXJwcm9jLnBwaWQpIHsKKyAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPQorICAgICAgICAgICAgICAgIHNwcmludGYoZW50cnktPmhyU1dSdW5QYXRoLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGN5Z3dpbl9jb252X3RvX3Bvc2l4X3BhdGgoY3VycHJvYy5wcm9nbmFtZSkpOworICAgICAgICB9IGVsc2UgaWYgKHF1ZXJ5ID09IENXX0dFVFBJTkZPX0ZVTEwpIHsKKworICAgICAgICAgICAgaWYgKGgpIHsKKyAgICAgICAgICAgICAgICBITU9EVUxFICAgICAgICAgaG1bMTAwMF07CisgICAgICAgICAgICAgICAgaWYgKCFteUVudW1Qcm9jZXNzTW9kdWxlcyhoLCBobSwgc2l6ZW9mIGhtLCAmbikpCisgICAgICAgICAgICAgICAgICAgIG4gPSAwOworICAgICAgICAgICAgICAgIGlmIChuICYmIG15R2V0TW9kdWxlRmlsZU5hbWVFeChoLCBobVswXSwgc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Ygc3RyaW5nKSkgeworICAgICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPQorICAgICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKGVudHJ5LT5oclNXUnVuUGF0aCwgIiUuKnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKGVudHJ5LT5oclNXUnVuUGF0aCkgLSAxLCBzdHJpbmcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICAgKiBTZXQgaHJTV1J1bk5hbWUgdG8gYmUgdGhlIGxhc3QgY29tcG9uZW50IG9mIGhyU1dSdW5QYXRoLAorICAgICAgICAgKiAgICBidXQgd2l0aG91dCBhbnkgZmlsZSBleHRlbnNpb24KKyAgICAgICAgICovCisgICAgICAgIGlmICggZW50cnktPmhyU1dSdW5QYXRoX2xlbiApIHsKKyAgICAgICAgICAgIGNwMSA9IHN0cnJjaHIoIGVudHJ5LT5oclNXUnVuUGF0aCwgJy4nICk7CisgICAgICAgICAgICBpZiAoIGNwMSApCisgICAgICAgICAgICAgICAgKmNwMSA9ICdcMCc7ICAgIC8qIE1hc2sgdGhlIGZpbGUgZXh0ZW5zaW9uICovCisKKyAgICAgICAgICAgIGNwMiAgPSBzdHJyY2hyKCBlbnRyeS0+aHJTV1J1blBhdGgsICcvJyApOworICAgICAgICAgICAgaWYgKGNwMikgCisgICAgICAgICAgICAgICAgY3AyKys7ICAgICAgICAgICAvKiBGaW5kIHRoZSBmaW5hbCBjb21wb25lbnQgLi4uICovCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3AyID0gZW50cnktPmhyU1dSdW5QYXRoOyAgICAgICAgICAvKiAuLi4gaWYgYW55ICovCisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVfbGVuID0KKyAgICAgICAgICAgICAgICBzcHJpbnRmKGVudHJ5LT5oclNXUnVuTmFtZSwgIiUuKnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSAtIDEsIGNwMik7CisKKyAgICAgICAgICAgIGlmICggY3AxICkKKyAgICAgICAgICAgICAgICAqY3AxID0gJy4nOyAgICAgLyogUmVzdG9yZSB0aGUgZmlsZSBleHRlbnNpb24gKi8KKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIFhYWCAtIE5vIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBwcm9jZXNzIGFyZ3VtZW50cworICAgICAgICAgKiBYWFggLSBObyBpbmZvcm1hdGlvbiByZWdhcmRpbmcgc3lzdGVtIHByb2Nlc3NlcyB2cyBhcHBsaWNhdGlvbnMKKyAgICAgICAgICovCisKKyAgICAgICAgaWYgKFBJRF9TVE9QUEVEICYgY3VycHJvYy5wcm9jZXNzX3N0YXRlICkgeworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX05PVFJVTk5BQkxFOworICAgICAgICB9CisgICAgICAvKiAgZWxzZSBpZiAoUElEX1pPTUJJRSAmIGN1cnByb2MucHJvY2Vzc19zdGF0ZSApICAqLworICAgICAgICAgIGVsc2UgaWYgKCAgIH4weGZmZmYgJiBjdXJwcm9jLmV4aXRjb2RlICkKKyAgICAgICAgeworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX0lOVkFMSUQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgIC8qICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTkFCTEU7ICA/PyAqLworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5JTkc7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaCkgeworICAgICAgICAgICAgaWYgKEdldFByb2Nlc3NUaW1lcyhoLCAmY3QsICZldCwgJmt0LCAmdXQpKQorICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSA9ICh0b19tc2VjKCZrdCkgKyB0b19tc2VjKCZ1dCkpIC8gMTA7CisgICAgICAgICAgICBpZiAobXlHZXRQcm9jZXNzTWVtb3J5SW5mbworICAgICAgICAgICAgICAgICYmIG15R2V0UHJvY2Vzc01lbW9yeUluZm8oaCwgJnBtYywgc2l6ZW9mIHBtYykpCisgICAgICAgICAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmTWVtID0gcG1jLldvcmtpbmdTZXRTaXplIC8gMTAyNDsKKworICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY3lnd2luX2ludGVybmFsKENXX1VOTE9DS19QSU5GTyk7CisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIGxvYWRlZCAlZCBlbnRyaWVzXG4iLAorICAgICAgICAgICAgICAgIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9kYXJ3aW4uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJlZmM0ZQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMKQEAgLTAsMCArMSw0OTUgQEAKKy8qCisgKiBzd3J1bl9kYXJ3aW4uYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAgRGFyd2luCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oPgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxsaWJwcm9jLmg+CisjaW5jbHVkZSA8c3lzL3Byb2NfaW5mby5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4JLyogZm9yIHN5c2N0bCgpIGFuZCBzdHJ1Y3Qga2luZm9fcHJvYyAqLworCisjZGVmaW5lIF9fQVBQTEVfQVBJX0VWT0xWSU5HIDEKKyNpbmNsdWRlIDxzeXMvYWNsLmg+IC8qIG9yIGVsc2UgQ29yZUZvdW5kYXRpb24uaCBiYXJmcyAqLworI3VuZGVmIF9fQVBQTEVfQVBJX0VWT0xWSU5HIAorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZOdW1iZXIuaD4KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJ1bmRsZS5oPgorI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KKyNpbmNsdWRlIDxJT0tpdC9JT0NGQnVuZGxlLmg+CisjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CisjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KKworLyoqIHNpZ2guLi4gY2FuJ3QgZmluZCBQcm9jZXNzZXMuaCAqLworI2lmbmRlZiBrUHJvY2Vzc0RpY3Rpb25hcnlJbmNsdWRlQWxsSW5mb3JtYXRpb25NYXNrIAorI2RlZmluZSBrUHJvY2Vzc0RpY3Rpb25hcnlJbmNsdWRlQWxsSW5mb3JtYXRpb25NYXNrIChsb25nKTB4RkZGRkZGRkYKKyNlbmRpZgorI2lmbmRlZiBwcm9jTm90Rm91bmQKKyNkZWZpbmUgcHJvY05vdEZvdW5kIC02MDAKKyNlbmRpZgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIGludCBfa2Vybl9hcmdtYXg7CitzdGF0aWMgaW50IF9zZXRfY29tbWFuZF9uYW1lKG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5KTsKKworLyoqIGF2b2lkIGtlcm5lbCBidWcgaW4gMTAuMi4gODE5MiBvdWdodGEgYmUgZW5vdWdoIGFueXdheXMsIHJpZ2h0PyAqLworI2RlZmluZSBNQVhfS0VSTl9BUkdNQVggODE5MgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorbmV0c25tcF9hcmNoX3N3cnVuX2luaXQodm9pZCkKK3sKKyAgICBpbnQgICAgbWliWzJdID0geyBDVExfS0VSTiwgS0VSTl9BUkdNQVggfTsKKyAgICBzaXplX3Qgc2l6ZSwgbWliX3NpemUgPSBzaXplb2YobWliKS9zaXplb2YobWliWzBdKTsKKyAgICAKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiaW5pdFxuIikpOworCisgICAgc2l6ZSA9IHNpemVvZihfa2Vybl9hcmdtYXgpOworICAgIGlmIChzeXNjdGwobWliLCBtaWJfc2l6ZSwgJl9rZXJuX2FyZ21heCwgJnNpemUsIE5VTEwsIDApID09IC0xKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJFcnJvciBpbiBBUkdNQVggc3lzY3RsKCk6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgX2tlcm5fYXJnbWF4ID0gTUFYX0tFUk5fQVJHTUFYOworICAgIH0KKyAgICBlbHNlIGlmIChfa2Vybl9hcmdtYXggPiBNQVhfS0VSTl9BUkdNQVgpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsCisgICAgICAgICAgICAgICAgICAgICJhcnRpZmljaWFsbHkgbGltaXRpbmcgQVJHTUFYIHRvICVkIChmcm9tICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgTUFYX0tFUk5fQVJHTUFYLCBfa2Vybl9hcmdtYXgpKTsKKyAgICAgICAgX2tlcm5fYXJnbWF4ID0gTUFYX0tFUk5fQVJHTUFYOworICAgIH0KKworCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIFNXUlVOSU5ERU5UICIgICAgICAgICAgICIKK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBpbnQJICAgICAgICAgICAgICAgICBtaWJbNF0gPSB7Q1RMX0tFUk4sIEtFUk5fUFJPQywgS0VSTl9QUk9DX0FMTH07CisgICAgc2l6ZV90ICAgICAgICAgICAgICAgYnVmX3NpemUsIG1pYl9zaXplID0gc2l6ZW9mKG1pYikvc2l6ZW9mKG1pYlswXSk7CisgICAgc3RydWN0IGtpbmZvX3Byb2MgICAqcHJvY2Vzc2VzID0gTlVMTDsKKyAgICBzdHJ1Y3QgcHJvY190YXNrYWxsaW5mbyB0YXNraW5mbzsKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5ICplbnRyeTsKKyAgICBpbnQgICAgICAgICAgICAgICAgICByYywgbnVtX2VudHJpZXMsIGk7CisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIGxvYWRcbiIpKTsKKworICAgIC8qCisgICAgICogZ2V0IHNpemUgdG8gYWxsb2NhdGUuIFRoaXMgaW50cm9kdWNlcyBhIGJpdCBvZiBhIHJhY2UgY29uZGl0aW9uLAorICAgICAqIGFzIHRoZSBzaXplIGNvdWxkIGNoYW5nZSBiZXR3ZWVuIHRoaXMgY2FsbCBhbmQgdGhlIG5leHQuLi4KKyAgICAgKi8KKyAgICByYyA9IHN5c2N0bChtaWIsIG1pYl9zaXplLCBOVUxMLCAmYnVmX3NpemUsIE5VTEwsIDApOworICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIktFUk5fUFJPQ19BTEwgc2l6ZSBzeXNjdGwgZmFpbGVkOiAlZFxuIiwgcmMpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcHJvY2Vzc2VzID0gKHN0cnVjdCBraW5mb19wcm9jKikgbWFsbG9jKGJ1Zl9zaXplKTsKKyAgICBpZiAoTlVMTCA9PSBwcm9jZXNzZXMpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm1hbGxvYyBmYWlsZWRcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmMgPSBzeXNjdGwobWliLCBtaWJfc2l6ZSwgcHJvY2Vzc2VzLCAmYnVmX3NpemUsIE5VTEwsIDApOworICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIktFUk5fUFJPQ19BTEwgc3lzY3RsIGZhaWxlZDogJWRcbiIsIHJjKTsKKyAgICAgICAgZnJlZShwcm9jZXNzZXMpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIG51bV9lbnRyaWVzID0gYnVmX3NpemUgLyBzaXplb2Yoc3RydWN0IGtpbmZvX3Byb2MpOworICAgIAorICAgIGZvciAoaSA9IDA7IGkgPCBudW1fZW50cmllczsgaSsrKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNraXAgZW1wdHkgbmFtZXMuCisgICAgICAgICAqIHBfc3RhdCA9IChTSURMfFNSVU58U1NMRUVQfFNTVE9QfFNaT01CKQorICAgICAgICAgKi8KKyAgICAgICAgaWYgKChOVUxMID09IHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfY29tbSkgfHwKKyAgICAgICAgICAgICgwID09IHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfcGlkKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiIHNraXBwaW5nIHBfY29tbSAnJXMnLCBwaWQgJTVkLCBwX3BzdGF0ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VzW2ldLmtwX3Byb2MucF9jb21tID8gCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZXNbaV0ua3BfcHJvYy5wX2NvbW0gOiAiTlVMTCIsCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZXNbaV0ua3BfcHJvYy5wX3BpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfc3RhdCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiICVzIHBpZCAlNWRcbiIsCisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfY29tbSwKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VzW2ldLmtwX3Byb2MucF9waWQpKTsKKworICAgICAgICBlbnRyeSA9IG5ldHNubXBfc3dydW5fZW50cnlfY3JlYXRlKHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfcGlkKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIHBfY29tbSBpcyBhIHBhcnRpYWwgbmFtZSwgYnV0IGl0IGlzIGFsbCB3ZSBoYXZlIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAqLworICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGVudHJ5LT5oclNXUnVuTmFtZSktMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsIHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfY29tbSk7CisKKyAgICAgICAgLyoqIHN5c2N0bCBmb3IgbmFtZSwgcGF0aCwgcGFyYW1zICovCisgICAgICAgIHJjID0gX3NldF9jb21tYW5kX25hbWUoZW50cnkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIG1hcCBwX3N0YXQgdG8gUnVuU3RhdHVzLiBPZGQgdGhhdCB0aGVyZSBpcyBubyAncnVubmluZycgc3RhdHVzLgorICAgICAgICAgKi8KKyAgICAgICAgc3dpdGNoKHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfc3RhdCkgeworICAgICAgICAgICAgY2FzZSBTUlVOOgorICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OQUJMRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU1NMRUVQOgorICAgICAgICAgICAgY2FzZSBTU1RPUDoKKyAgICAgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfTk9UUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNJREw6CisgICAgICAgICAgICBjYXNlIFNaT01COgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfSU5WQUxJRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSAKKworICAgICAgICAvKgorICAgICAgICAgKiBjaGVjayBmb3Igc3lzdGVtIHByb2Nlc3NlcworICAgICAgICAgKi8KKyAgICAgICAgaWYgKFBfU1lTVEVNICYgcHJvY2Vzc2VzW2ldLmtwX3Byb2MucF9mbGFnKSB7CisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blR5cGUgPSBIUlNXUlVOVFlQRV9PUEVSQVRJTkdTWVNURU07CisgICAgICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwgU1dSVU5JTkRFTlQgIlNZU1RFTVxuIikpOworICAgICAgICB9CisgICAgICAgIGVsc2UgZW50cnktPmhyU1dSdW5UeXBlID0gSFJTV1JVTlRZUEVfQVBQTElDQVRJT047CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZ2V0IG1lbSBzaXplLCBydW4gdGltZQorICAgICAgICAgKi8KKyAgICAgICAgcmMgPSBwcm9jX3BpZGluZm8oIHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfcGlkLCBQUk9DX1BJRFRBU0tBTExJTkZPLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhc2tpbmZvLCBzaXplb2YodGFza2luZm8pKTsKKyAgICAgICAgaWYgKHNpemVvZih0YXNraW5mbykgIT0gcmMpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2giLCAiIHByb2NfcGlkaW5mbyByZXR1cm5lZCAlZFxuIiwgcmMpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHVpbnQ2NF90IHRhc2tfbWVtID0gdGFza2luZm8ucHRpbmZvLnB0aV9yZXNpZGVudF9zaXplIC8gMTAyNDsKKyAgICAgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgICAgICB1X3F1YWRfdCAgICAgdXE7IC8qIHVfaW50NjRfdCAqLworICAgICAgICAgICAgICAgIFVuc2lnbmVkV2lkZSB1dzsgLyogc3RydWN0IHVfaW50MzJfdCBoaS9sbyAqLworICAgICAgICAgICAgfSBhdCwgbnM7CisgICAgICAgICAgICBhdC51cSA9IHRhc2tpbmZvLnB0aW5mby5wdGlfdG90YWxfdXNlciArCisgICAgICAgICAgICAgICAgICAgIHRhc2tpbmZvLnB0aW5mby5wdGlfdG90YWxfc3lzdGVtOworICAgICAgICAgICAgbnMudXcgPSBBYnNvbHV0ZVRvTmFub3NlY29uZHMoIGF0LnV3ICk7CisgICAgICAgICAgICBucy51cSA9IG5zLnVxIC8gMTAwMDAwMDBMTDsgLyogbmFubyB0byBkZWNpICovCisgICAgICAgICAgICBpZiAodGFza19tZW0gPiBJTlQzMl9NQVgpIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwgU1dSVU5JTkRFTlQgIm1lbSBvdmVyZmxvd1xuIikpOworICAgICAgICAgICAgICAgIHRhc2tfbWVtID0gSU5UMzJfTUFYOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5zLnVxID4gSU5UMzJfTUFYKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsIFNXUlVOSU5ERU5UICJ0aW1lIG92ZXJmbG93XG4iKSk7CisgICAgICAgICAgICAgICAgbnMudXEgPSBJTlQzMl9NQVg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gPSB0YXNrX21lbTsKKyAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSA9IG5zLnVxOworICAgICAgICB9CisgICAgfQorICAgIGZyZWUocHJvY2Vzc2VzKTsKKworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2giLCIgbG9hZGVkICVkIGVudHJpZXNcbiIsCisgICAgICAgICAgICAgICAgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVGhlIGZvbGxvd2luZyBjb2RlIHdhcyBzbmFnZ2VkIGZyb20gRGFyd2luIGNvZGUsIGFuZCB0aGUgb3JpZ2luYWwKKyAqIGZpbGUgaGFkIHRoZSBmb2xsb3dpbmcgbGljZW5jZXM6CisgKi8KKworLyoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBBUFBMRV9MSUNFTlNFX0hFQURFUl9TVEFSVEAKKyAqIAorICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBjb25zdGl0dXRlIE9yaWdpbmFsIENvZGUgYXMgZGVmaW5lZCBpbiBhbmQKKyAqIGFyZSBzdWJqZWN0IHRvIHRoZSBBcHBsZSBQdWJsaWMgU291cmNlIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZQorICogIkxpY2Vuc2UiKS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKKyAqIExpY2Vuc2UuICBQbGVhc2Ugb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICogaHR0cDovL3d3dy5hcHBsZS5jb20vcHVibGljc291cmNlIGFuZCByZWFkIGl0IGJlZm9yZSB1c2luZyB0aGlzIGZpbGUuCisgKiAKKyAqIFRoaXMgT3JpZ2luYWwgQ29kZSBhbmQgYWxsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGFyZQorICogZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSCisgKiBFWFBSRVNTIE9SIElNUExJRUQsIEFORCBBUFBMRSBIRVJFQlkgRElTQ0xBSU1TIEFMTCBTVUNIIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT04tSU5GUklOR0VNRU5ULiAgUGxlYXNlIHNlZSB0aGUKKyAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKiAKKyAqIEBBUFBMRV9MSUNFTlNFX0hFQURFUl9FTkRACisgKi8KKyNpZmRlZiBKQUdVQVIgLyogeHh4IGNvbmZpZ3VyZSB0ZXN0PyAqLworc3RhdGljIGludAorX3NldF9jb21tYW5kX25hbWVfamFndWFyKG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5KQoreworICAgIGludAkgICAgICAgIG1pYlszXSA9IHtDVExfS0VSTiwgS0VSTl9QUk9DQVJHUywgMH07CisgICAgc2l6ZV90ICAgICAgcHJvY2FyZ3NzaXplLCBtaWJfc2l6ZSA9IHNpemVvZihtaWIpL3NpemVvZihtaWJbMF0pOworICAgIGNoYXIgICAgICAgKmFyZ19lbmQsICpleGVjX3BhdGg7CisgICAgaW50ICAgICAgICAqaXA7CisgICAgaW50ICAgICAgICAgbGVuOworICAgIGNoYXIgICAgICAgKmNvbW1hbmRfYmVnLCAqY29tbWFuZCwgKmNvbW1hbmRfZW5kOworICAgIGNoYXIgICAgICAgIGFyZ19idWZbTUFYX0tFUk5fQVJHTUFYXTsgLyogbWF4IHRvIGF2b2lkIGtlcm5lbCBidWcgKi8KKworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwiIHBpZCAlZFxuIiwgZW50cnktPmhyU1dSdW5JbmRleCkpOworCisgICAgbWliWzJdID0gZW50cnktPmhyU1dSdW5JbmRleDsKKworICAgIG1lbXNldChhcmdfYnVmLCAweDAsIHNpemVvZihhcmdfYnVmKSk7CisgICAgcHJvY2FyZ3NzaXplID0gX2tlcm5fYXJnbWF4OworICAgIGlmIChzeXNjdGwobWliLCBtaWJfc2l6ZSwgYXJnX2J1ZiwgJnByb2Nhcmdzc2l6ZSwgTlVMTCwgMCkgPT0gLTEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkVycm9yIGluIFBST0NBUkdTIHN5c2N0bCgpIGZvciAlczogJXNcbiIsCisgICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuTmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IDA7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBTZXQgaXAganVzdCBhYm92ZSB0aGUgZW5kIG9mIGFyZ19idWYuICovCisgICAgYXJnX2VuZCA9ICZhcmdfYnVmW3Byb2Nhcmdzc2l6ZV07CisgICAgaXAgPSAoaW50ICopYXJnX2VuZDsKKyAgICAKKyAgICAvKgorICAgICAqIFNraXAgdGhlIGxhc3QgMiB3b3Jkcywgc2luY2UgdGhlIGxhc3QgaXMgYSAwIHdvcmQsIGFuZAorICAgICAqIHRoZSBzZWNvbmQgdG8gbGFzdCBtYXkgYmUgYXMgd2VsbCwgaWYgdGhlcmUgYXJlIG5vCisgICAgICogYXJndW1lbnRzLgorICAgICAqLworICAgIGlwIC09IDM7CisgICAgCisgICAgLyogSXRlcmF0ZSBkb3duIHRoZSBhcmd1bWVudHMgdW50aWwgYSAwIHdvcmQgaXMgZm91bmQuICovCisgICAgZm9yICg7ICppcCAhPSAwOyBpcC0tKSB7CisgICAgICAgIGlmIChpcCA9PSAoaW50ICopYXJnX2J1ZikgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgdW5leHBlY3RlZCB0b3BhcmdcbiIpKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKiBUaGUgc2F2ZWQgZXhlY19wYXRoIGlzIGp1c3QgYWJvdmUgdGhlIDAgd29yZC4gKi8KKyAgICBpcCsrOworICAgIGV4ZWNfcGF0aCA9IChjaGFyICopaXA7CisgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgZXhlY19wYXRoICVzXG4iLCBleGVjX3BhdGgpKTsKKyAgICBsZW4gPSBzdHJsZW4oZXhlY19wYXRoKTsKKyAgICBzdHJsY3B5KGVudHJ5LT5oclNXUnVuUGF0aCwgZXhlY19wYXRoLCBzaXplb2YoZW50cnktPmhyU1dSdW5QYXRoKSk7CisgICAgaWYgKGxlbiA+IHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgdHJ1bmNhdGluZyBsb25nIHJ1biBwYXRoXG4iKSk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aFtzaXplb2YoZW50cnktPmhyU1dSdW5QYXRoKS0yXSA9ICckJzsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTE7CisgICAgICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwiIGV4ZWNfcGF0aCAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoKSk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IGxlbjsKKyAgICAKKyAgICAvKgorICAgICAqIEdldCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBhcmd1bWVudC4gIEl0IGlzIHdvcmQtYWxpZ25lZCwKKyAgICAgKiBzbyBza2lwIHBhZGRpbmcgJ1wwJyBieXRlcy4KKyAgICAgKi8KKyAgICBjb21tYW5kX2JlZyA9IGV4ZWNfcGF0aCArIHN0cmxlbihleGVjX3BhdGgpOworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwiIGNvbW1hbmRfYmVnICclcydcbiIsIGNvbW1hbmRfYmVnKSk7CisgICAgZm9yICg7ICpjb21tYW5kX2JlZyA9PSAnXDAnOyBjb21tYW5kX2JlZysrKSB7CisgICAgICAgIGlmIChjb21tYW5kX2JlZyA+PSBhcmdfZW5kKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoOl9jbiIsIiBjb21tYW5kX2JlZyAnJXMnXG4iLCBjb21tYW5kX2JlZykpOworICAgIAorICAgIC8qIEdldCB0aGUgYmFzZW5hbWUgb2YgY29tbWFuZC4gKi8KKyAgICBjb21tYW5kID0gY29tbWFuZF9lbmQgPSBjb21tYW5kX2JlZyArIHN0cmxlbihjb21tYW5kX2JlZykgKyAxOworICAgIGZvciAoY29tbWFuZC0tOyBjb21tYW5kID49IGNvbW1hbmRfYmVnOyBjb21tYW5kLS0pIHsKKyAgICAgICAgaWYgKCpjb21tYW5kID09ICcvJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjb21tYW5kKys7CisgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgY29tbWFuZCAnJXMnXG4iLCBjb21tYW5kKSk7CisgICAgCisgICAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBjb21tYW5kIGFuZCBjb3B5LiAqLworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwKKyAgICAgICAgICAgICAgICBTV1JVTklOREVOVCAia2VybmVsIG5hbWUgJXNcbiIsIGNvbW1hbmQpKTsKKyAgICBpZiAoc3RybmNtcChjb21tYW5kLCBlbnRyeS0+aHJTV1J1bk5hbWUsIHNpemVvZihlbnRyeS0+aHJTV1J1bk5hbWUpLTEpKSB7CisgICAgICAgIHN0cmxjcHkoZW50cnktPmhyU1dSdW5OYW1lLCBjb21tYW5kLCBzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4gPSBzdHJsZW4oZW50cnktPmhyU1dSdW5OYW1lKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCAiKioiCisgICAgICAgICAgICAgICAgICAgIFNXUlVOSU5ERU5UICJ1cGRhdGVkIG5hbWUgdG8gJXNcbiIsIGVudHJ5LT5oclNXUnVuTmFtZSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiogbm8gZXJyb3IsIG5vIGNoYW5nZSAqLworICAgIHJldHVybiAxOworfQorI2Vsc2UKK3N0YXRpYyBpbnQKK19zZXRfY29tbWFuZF9uYW1lKG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5KQoreworICAgIGludAkgICAgICAgIG1pYlszXSA9IHtDVExfS0VSTiwgMCwgMH07CisgICAgc2l6ZV90ICAgICAgcHJvY2FyZ3NzaXplLCBtaWJfc2l6ZSA9IHNpemVvZihtaWIpL3NpemVvZihtaWJbMF0pOworICAgIGNoYXIgICAgICAgKmNwOworICAgIGludCAgICAgICAgIGxlbiwgbmFyZ3M7CisgICAgY2hhciAgICAgICAqY29tbWFuZF9iZWcsICpjb21tYW5kLCAqY29tbWFuZF9lbmQsICpleGVjX3BhdGgsICphcmdOOworICAgIGNoYXIgICAgICAgIGFyZ19idWZbTUFYX0tFUk5fQVJHTUFYXTsgLyogbWF4IHRvIGF2b2lkIGtlcm5lbCBidWcgKi8KKworICAgIC8qCisgICAgICogYXJndW1lbnRzCisgICAgICovCisgICAgbWliWzFdID0gS0VSTl9QUk9DQVJHUzI7CisgICAgbWliWzJdID0gZW50cnktPmhyU1dSdW5JbmRleDsKKworICAgIG1lbXNldChhcmdfYnVmLCAweDAsIHNpemVvZihhcmdfYnVmKSk7CisgICAgcHJvY2FyZ3NzaXplID0gX2tlcm5fYXJnbWF4OworICAgIGlmIChzeXNjdGwobWliLCBtaWJfc2l6ZSwgYXJnX2J1ZiwgJnByb2Nhcmdzc2l6ZSwgTlVMTCwgMCkgPT0gLTEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkVycm9yIGluIFBST0NBUkdTMiBzeXNjdGwoKSBmb3IgJXM6ICVzXG4iLAorICAgICAgICAgICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPSAwOworICAgICAgICBlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuID0gMDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbWVtY3B5KCZuYXJncyxhcmdfYnVmLCBzaXplb2YobmFyZ3MpKTsKKyAgICB9CisKKyAgICBleGVjX3BhdGggPSBhcmdfYnVmICsgc2l6ZW9mKG5hcmdzKTsKKyAgICBsZW4gPSBzdHJsZW4oZXhlY19wYXRoKTsKKyAgICBzdHJsY3B5KGVudHJ5LT5oclNXUnVuUGF0aCwgZXhlY19wYXRoLCBzaXplb2YoZW50cnktPmhyU1dSdW5QYXRoKSk7CisgICAgaWYgKGxlbiA+IHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgdHJ1bmNhdGluZyBsb25nIHJ1biBwYXRoXG4iKSk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aFtzaXplb2YoZW50cnktPmhyU1dSdW5QYXRoKS0yXSA9ICckJzsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTE7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IGxlbjsKKworICAgIC8qKiBTa2lwIHRoZSBzYXZlZCBleGVjX3BhdGguICovCisjaWYgMAorICAgIGNwID0gZXhlY19wYXRoICsgbGVuOworI2Vsc2UKKyAgICBmb3IgKGNwID0gZXhlY19wYXRoOyBjcCA8ICZhcmdfYnVmW3Byb2Nhcmdzc2l6ZV07IGNwKyspIHsKKyAgICAgICAgaWYgKCpjcCA9PSAnXDAnKSAKKyAgICAgICAgICAgIGJyZWFrOyAvKiBFbmQgb2YgZXhlY19wYXRoIHJlYWNoZWQuICovCisgICAgfQorICAgIGlmIChjcCAhPSBleGVjX3BhdGggKyBsZW4pIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgT0ZGIEJZICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAoZXhlY19wYXRoICsgbGVuKSAtIGNwKSk7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KCBjcCA9PSBleGVjX3BhdGggKyBsZW4gKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAoY3AgPT0gJmFyZ19idWZbcHJvY2FyZ3NzaXplXSkgeworICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoOl9jbiIsIiB1bmV4cGVjdGVkIGVuZCBvZiBidWZmZXJcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKiBTa2lwIHRyYWlsaW5nICdcMCcgY2hhcmFjdGVycy4gKi8KKyAgICBmb3IgKDsgY3AgPCAmYXJnX2J1Zltwcm9jYXJnc3NpemVdOyBjcCsrKSB7CisgICAgICAgIGlmICgqY3AgIT0gJ1wwJykKKyAgICAgICAgICAgIGJyZWFrOyAvKiBCZWdpbm5pbmcgb2YgZmlyc3QgYXJndW1lbnQgcmVhY2hlZC4gKi8KKyAgICB9CisgICAgaWYgKGNwID09ICZhcmdfYnVmW3Byb2Nhcmdzc2l6ZV0pIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgdW5leHBlY3RlZCBlbmQgb2YgYnVmZmVyXG4iKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgY29tbWFuZF9iZWcgPSBjcDsKKworICAgIC8qCisgICAgICogTWFrZSBzdXJlIHRoYXQgdGhlIGNvbW1hbmQgaXMgJ1wwJy10ZXJtaW5hdGVkLiAgVGhpcyBwcm90ZWN0cworICAgICAqIGFnYWluc3QgbWFsaWNpb3VzIHByb2dyYW1zOyB1bmRlciBub3JtYWwgb3BlcmF0aW9uIHRoaXMgbmV2ZXIKKyAgICAgKiBlbmRzIHVwIGJlaW5nIGEgcHJvYmxlbS4uCisgICAgICovCisgICAgZm9yICg7IGNwIDwgJmFyZ19idWZbcHJvY2FyZ3NzaXplXTsgY3ArKykgeworICAgICAgICBpZiAoKmNwID09ICdcMCcpCisgICAgICAgICAgICBicmVhazsgLyogRW5kIG9mIGZpcnN0IGFyZ3VtZW50IHJlYWNoZWQuICovCisgICAgfQorICAgIGlmIChjcCA9PSAmYXJnX2J1Zltwcm9jYXJnc3NpemVdKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwiIHVuZXhwZWN0ZWQgZW5kIG9mIGJ1ZmZlclxuIikpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGNvbW1hbmRfZW5kID0gY29tbWFuZCA9IGNwOworICAgIC0tbmFyZ3M7CisKKyAgICAvKgorICAgICAqIHNhdmUgYXJndW1lbnRzCisgICAgICovCisgICAgd2hpbGUoIG5hcmdzICYmIGNwIDwgJmFyZ19idWZbcHJvY2FyZ3NzaXplXSApIHsKKyAgICAgICAgLyoqIFNraXAgdHJhaWxpbmcgJ1wwJyBjaGFyYWN0ZXJzIGZyb20gcHJldiBhcmcuICovCisgICAgICAgIGZvciAoOyAoY3AgPCAmYXJnX2J1Zltwcm9jYXJnc3NpemVdKSAmJiAoKmNwID09IDApOyBjcCsrKSAKKyAgICAgICAgICAgIDsgLyogbm9vcCAqLworICAgICAgICBpZiAoY3AgPT0gJmFyZ19idWZbcHJvY2FyZ3NzaXplXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBlZmZlY3RpdmVseSBhIGJyZWFrICovCisgICAgCisgICAgICAgIC8qKiBzYXZlIGFyZ04gc3RhcnQgKi8KKyAgICAgICAgYXJnTiA9IGNwOworICAgICAgICAtLW5hcmdzOworICAgICAgICBpZiAoMCA9PSBuYXJncykKKyAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBlZmZlY3RpdmVseSBhIGJyZWFrICovCisKKyAgICAgICAgLyoqIFNraXAgdG8gZW5kIG9mIGFyZyAqLworICAgICAgICBmb3IgKDsgKGNwIDwgJmFyZ19idWZbcHJvY2FyZ3NzaXplXSkgJiYgKCpjcCAhPSAwKTsgY3ArKykgCisgICAgICAgICAgICA7ICAvKiBub29wICovCisgICAgICAgIGlmIChjcCA9PSAmYXJnX2J1Zltwcm9jYXJnc3NpemVdKQorICAgICAgICAgICAgY29udGludWU7IC8qIGVmZmVjdGl2ZWx5IGEgYnJlYWsgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiBjaGVjayBmb3Igb3ZlcnJ1biBpbnRvIGVudgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCgqYXJnTiAhPSAnLScpICYmIHN0cmNocihhcmdOLCc9JykpICB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoOl9jbiIsICIgKioqIE9WRVJSVU4gSU5UTyBFTlYgJWRcbiIsbmFyZ3MpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogc2F2ZSBhcmcKKyAgICAgICAgICovCisgICAgICAgIGlmKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4gPCBzaXplb2YoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzKS0xKSB7CisgICAgICAgICAgICBzdHJsY2F0KCZlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNbZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzX2xlbl0sCisgICAgICAgICAgICAgICAgICAgIGFyZ04sIHNpemVvZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMpLWVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4tMSk7CisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuID0gc3RybGVuKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVycyk7CisgICAgICAgICAgICBpZiAoKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4rMiA8IHNpemVvZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMpLTEpICYmICgwICE9IG5hcmdzKSkgeworICAgICAgICAgICAgICAgIC8qIGFkZCBzcGFjZSBiZXR3ZWVuIHBhcmFtcyAqLworICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc1tlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuKytdID0gJyAnOworICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc1tlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuXSA9IDA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwiIHRydW5jYXRpbmcgbG9uZyBhcmcgbGlzdFxuIikpOworICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc1tlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuKytdID0gJyQnOworICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc1tlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuXSA9ICcwJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoJyAnID09IGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc1tlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuXSkKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzW2VudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4tLV0gPSAwOworCisgICAgCisgICAgLyogR2V0IHRoZSBiYXNlbmFtZSBvZiBjb21tYW5kLiAqLworICAgIGZvciAoY29tbWFuZC0tOyBjb21tYW5kID49IGNvbW1hbmRfYmVnOyBjb21tYW5kLS0pIHsKKyAgICAgICAgaWYgKCpjb21tYW5kID09ICcvJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjb21tYW5kKys7CisgICAgCisgICAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBjb21tYW5kIGFuZCBjb3B5LiAqLworICAgIGlmIChzdHJuY21wKGNvbW1hbmQsIGVudHJ5LT5oclNXUnVuTmFtZSwgc2l6ZW9mKGVudHJ5LT5oclNXUnVuTmFtZSktMSkpIHsKKyAgICAgICAgc3RybGNweShlbnRyeS0+aHJTV1J1bk5hbWUsIGNvbW1hbmQsIHNpemVvZihlbnRyeS0+aHJTV1J1bk5hbWUpKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5OYW1lX2xlbiA9IHN0cmxlbihlbnRyeS0+aHJTV1J1bk5hbWUpOworICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoOl9jbiIsCisgICAgICAgICAgICAgICAgICAgICIgKip1cGRhdGVkIG5hbWUgdG8gJXNcbiIsIGVudHJ5LT5oclNXUnVuTmFtZSkpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVmM2QwMAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa2luZm8uYwpAQCAtMCwwICsxLDM0MyBAQAorLyoKKyAqIHN3cnVuX2tpbmZvLmM6CisgKiAgICAgaHJTV1J1blRhYmxlIGRhdGEgYWNjZXNzOgorICogICAgIGt2bV9nZXRwcm9jcygpIGludGVyZmFjZSAtIEZyZWVCU0QsIE5ldEJTRCwgT3BlbkJTRAorICoKKyAqIE5COiBsYXRlciBGcmVlQlNEIGFuZCBPcGVuQlNEIHVzZSBkaWZmZXJlbnQga2luZm9fcHJvYyBzdHJ1Y3R1cmVzCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TVFJJTkdfSAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxzdHJpbmdzLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfS1ZNX0gKKyNpbmNsdWRlIDxrdm0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NZU0NUTF9ICisjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUFJPQ19ICisjaW5jbHVkZSA8c3lzL3Byb2MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1VTRVJfSAorI2luY2x1ZGUgPHN5cy91c2VyLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VWTV9VVk1fRVhURVJOQUxfSAorI2luY2x1ZGUgPHV2bS91dm1fZXh0ZXJuYWwuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKworZXh0ZXJuIGt2bV90ICprZDsKKworCisjaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDE0CisgICAgLyoKKyAgICAgKiBsYXRlciBGcmVlQlNEIGtpbmZvX3Byb2MgZmllbGQgbmFtZXMKKyAgICAgKi8KKyNkZWZpbmUgU1dSVU5fVEFCTEUJa2luZm9fcHJvYworI2RlZmluZSBTV1JVTl9LX1NUQVQJa2lfc3RhdAorI2RlZmluZSBTV1JVTl9LX1BJRAlraV9waWQKKyNkZWZpbmUgU1dSVU5fS19QUElECWtpX3BwaWQKKyNkZWZpbmUgU1dSVU5fS19USUQJa2lfdGlkCisjZGVmaW5lIFNXUlVOX0tfQ09NTQlraV9jb21tCisjZGVmaW5lIFNXUlVOX0tfRkxBRwlraV9mbGFnCisjZGVmaW5lIFNXUlVOX0tfQ0xBU1MJa2lfcHJpLnByaV9jbGFzcworCisjZWxpZiBIQVZFX0tWTV9HRVRQUk9DMiB8fCBkZWZpbmVkKG9wZW5ic2Q1KQorICAgIC8qCisgICAgICogbmV3ZXIgTmV0QlNELCBPcGVuQlNEIGtpbmZvX3Byb2MyIGZpZWxkIG5hbWVzCisgICAgICovCisjaWYgZGVmaW5lZChvcGVuYnNkNSkKKyNkZWZpbmUgU1dSVU5fVEFCTEUJa2luZm9fcHJvYworI2Vsc2UKKyNkZWZpbmUgU1dSVU5fVEFCTEUJa2luZm9fcHJvYzIKKyNlbmRpZgorI2RlZmluZSBTV1JVTl9LX1NUQVQJcF9zdGF0CisjZGVmaW5lIFNXUlVOX0tfUElECXBfcGlkCisjZGVmaW5lIFNXUlVOX0tfQ09NTQlwX2NvbW0KKyNkZWZpbmUgU1dSVU5fS19GTEFHCXBfZmxhZworLyogICAgICBTV1JVTl9LX0NMQVNTCW5vdCBkZWZpbmVkICAgICAqLworCisjZWxpZiBkZWZpbmVkKGRyYWdvbmZseSkKKyAgICAvKgorICAgICAqIERyYWdvbkZseSBpcyBkaWZmZXJlbnQgLi4uCisgICAgICovCisjZGVmaW5lIFNXUlVOX1RBQkxFCWtpbmZvX3Byb2MKKyNkZWZpbmUgU1dSVU5fS19TVEFUCWtwX3N0YXQKKyNkZWZpbmUgU1dSVU5fS19QSUQgCWtwX3BpZAorI2RlZmluZSBTV1JVTl9LX0NPTU0Ja3BfY29tbQorI2RlZmluZSBTV1JVTl9LX0ZMQUcJa3BfZmxhZ3MKKy8qICAgICAgU1dSVU5fS19DTEFTUwlub3QgZGVmaW5lZCAgICAgKi8KKworI2Vsc2UKKyAgICAvKgorICAgICAqIGVhcmx5IEZyZWVCU0QsIE5ldEJTRCwgT3BlbkJTRCBraW5mb19wcm9jIGZpZWxkIG5hbWVzCisgICAgICovCisjZGVmaW5lIFNXUlVOX1RBQkxFCWtpbmZvX3Byb2MKKyNkZWZpbmUgU1dSVU5fS19TVEFUCWtwX3Byb2MucF9zdGF0CisjZGVmaW5lIFNXUlVOX0tfUElECWtwX3Byb2MucF9waWQKKyNkZWZpbmUgU1dSVU5fS19DT01NCWtwX3Byb2MucF9jb21tCisjZGVmaW5lIFNXUlVOX0tfRkxBRwlrcF9wcm9jLnBfZmxhZworLyogICAgICBTV1JVTl9LX0NMQVNTCW5vdCBkZWZpbmVkICAgICAqLworI2VuZGlmCisKKy8qCisgKiAgRGVmaW5lIGR1bW15IHZhbHVlcyBpZiBub3QgYWxyZWFkeSBwcm92aWRlZCBieSB0aGUgc3lzdGVtCisgKi8KKworI2lmZGVmIGRyYWdvbmZseQorCisvKgorICogRHJhZ29uRmx5IGlzIHNwZWNpYWwuIHBfc3RhdCBpcyBhbiBlbnVtIQorICovCisKKyNkZWZpbmUgU1JVTgkyMDAKKyNkZWZpbmUgU1NMRUVQCTIwMgorI2RlZmluZSBTV0FJVAkyMDMKKyNkZWZpbmUgU0xPQ0sJMjA1CisjZGVmaW5lIFNERUFECTIwOAorI2RlZmluZSBTT05QUk9DCTIwOQorCisKKyNlbHNlCisKKyNpZm5kZWYgU1JVTgorI2RlZmluZSBTUlVOCTIwMAkvKiBEZWZpbmVkIGJ5IEZyZWVCU0QvT3BlbkJTRCwgbWlzc2luZyBpbiAgTmV0QlNEICovCisjZW5kaWYKKyNpZm5kZWYgU0FDVElWRQorI2RlZmluZSBTQUNUSVZFCTIwMQkvKiBEZWZpbmVkIGJ5ICBOZXRCU0QsIG1pc3NpbmcgaW4gRnJlZUJTRC9PcGVuQlNEICovCisjZW5kaWYKKyNpZm5kZWYgU1NMRUVQCisjZGVmaW5lIFNTTEVFUAkyMDIJLyogRGVmaW5lZCBieSBGcmVlQlNEL09wZW5CU0QsIG1pc3NpbmcgaW4gIE5ldEJTRCAqLworI2VuZGlmCisjaWZuZGVmIFNXQUlUCisjZGVmaW5lIFNXQUlUCTIwMwkvKiBEZWZpbmVkIGJ5IEZyZWVCU0QsIG1pc3NpbmcgaW4gIE5ldEJTRC9PcGVuQlNEICovCisjZW5kaWYKKyNpZm5kZWYgU1NUT1AKKyNkZWZpbmUgU1NUT1AJMjA0CS8qIERlZmluZWQgYnkgRnJlZUJTRC9OZXRCU0QvT3BlbkJTRCAqLworI2VuZGlmCisjaWZuZGVmIFNMT0NLCisjZGVmaW5lIFNMT0NLCTIwNQkvKiBEZWZpbmVkIGJ5IEZyZWVCU0QsIG1pc3NpbmcgaW4gTmV0QlNEL09wZW5CU0QgKi8KKyNlbmRpZgorI2lmbmRlZiBTSURMCisjZGVmaW5lIFNJREwJMjA2CS8qIERlZmluZWQgYnkgRnJlZUJTRC9OZXRCU0QvT3BlbkJTRCAqLworI2VuZGlmCisjaWZuZGVmIFNaT01CCisjZGVmaW5lIFNaT01CCTIwNwkvKiBEZWZpbmVkIGJ5IEZyZWVCU0QvTmV0QlNEL09wZW5CU0QgKi8KKyNlbmRpZgorI2lmbmRlZiBTREVBRAorI2RlZmluZSBTREVBRAkyMDgJLyogRGVmaW5lZCBieSBPcGVuQlNELCBtaXNzaW5nIGluIEZyZWVCU0QvTmV0QlNEICovCisjZW5kaWYKKyNpZm5kZWYgU09OUFJPQworI2RlZmluZSBTT05QUk9DCTIwOQkvKiBEZWZpbmVkIGJ5IE9wZW5CU0QsIG1pc3NpbmcgaW4gRnJlZUJTRC9OZXRCU0QgKi8KKyNlbmRpZgorCisjZW5kaWYKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfYXJjaF9zd3J1bl9pbml0KHZvaWQpCit7CisjaWYgTkVUU05NUF9DQU5fVVNFX1NZU0NUTCAmJiBkZWZpbmVkKENUTF9LRVJOKSAmJiBkZWZpbmVkKEtFUk5fTUFYUFJPQykKKyAgICBleHRlcm4gaW50IF9zd3J1bl9tYXg7CisgICAgc2l6ZV90IG1heF9zaXplID0gc2l6ZW9mKF9zd3J1bl9tYXgpOworICAgIGludCBtYXhwcm9jX21pYltdID0geyBDVExfS0VSTiwgS0VSTl9NQVhQUk9DIH07CisgICAgc3lzY3RsKG1heHByb2NfbWliLCAyLCAmX3N3cnVuX21heCwgJm1heF9zaXplLCBOVUxMLCAwKTsKKyNlbmRpZgorICAgIAorICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBzdHJ1Y3QgU1dSVU5fVEFCTEUgICpwcm9jX3RhYmxlOworICAgIGludCAgICAgICAgICAgICAgICAgIG5wcm9jcywgaSwgcmM7CisgICAgY2hhciAgICAgICAgICAgICAgICAgYnVmW0JVRlNJWisxXSwgKiphcmd2OworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworCisgICAgaWYgKCAwID09IGtkICkgeworICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIENhbid0IHF1ZXJ5IGt2bSBpbmZvXG4iKSk7CisgICAgICAgIHJldHVybiAxOyAgICAgLyogTm8gaGFuZGxlIGZvciByZXRyaWV2aW5nIHByb2Nlc3MgdGFibGUgKi8KKyAgICB9CisjaWYgZGVmaW5lZChvcGVuYnNkNSkKKyAgICBwcm9jX3RhYmxlID0ga3ZtX2dldHByb2NzKGtkLCBLRVJOX1BST0NfS1RIUkVBRCwgMCwgc2l6ZW9mKHN0cnVjdCBraW5mb19wcm9jKSwgJm5wcm9jcyApOworI2VsaWYgZGVmaW5lZChIQVZFX0tWTV9HRVRQUk9DMikKKyAgICBwcm9jX3RhYmxlID0ga3ZtX2dldHByb2MyKGtkLCBLRVJOX1BST0NfQUxMLCAwLCBzaXplb2Yoc3RydWN0IGtpbmZvX3Byb2MyKSwgJm5wcm9jcyApOworI2Vsc2UKKyAgICBwcm9jX3RhYmxlID0ga3ZtX2dldHByb2NzKGtkLCBLRVJOX1BST0NfQUxMLCAwLCAmbnByb2NzICk7CisjZW5kaWYKKyAgICBmb3IgKCBpPTAgOyBpPG5wcm9jczsgaSsrICkgeworICAgICAgICBpZiAoIDAgPT0gcHJvY190YWJsZVtpXS5TV1JVTl9LX1NUQVQgKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICggLTEgPT0gcHJvY190YWJsZVtpXS5TV1JVTl9LX1BJRCApCisgICAgICAgICAgICBjb250aW51ZTsKKyNpZmRlZiBTV1JVTl9LX1RJRAorCWlmICggMCA9PSBwcm9jX3RhYmxlW2ldLlNXUlVOX0tfUFBJRCApCisJICAgIHByb2NfdGFibGVbaV0uU1dSVU5fS19QSUQgPSBwcm9jX3RhYmxlW2ldLlNXUlVOX0tfVElEOworI2VuZGlmCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd3J1bl9lbnRyeV9jcmVhdGUocHJvY190YWJsZVtpXS5TV1JVTl9LX1BJRCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIFRoZXJlIGFyZSB0d28gcG9zc2libGUgc291cmNlcyBmb3IgdGhlIGNvbW1hbmQgYmVpbmcgcnVuOgorICAgICAgICAgKiAgIC0gU1dSVU5fS19DT01NICAoZnJvbSB0aGUgcHJvY190YWJsZSBlbnRyeSBkaXJlY3RseSkKKyAgICAgICAgICogICAtIHJ1bm5pbmcga3ZtX2dldGFyZ3Ygb24gdGhlIHByb2Nlc3MgZW50cnkuCisgICAgICAgICAqCisgICAgICAgICAqIFdlJ2xsIHVzZSBhcmd2WzBdIChpZiBzZXQpIGZvciBoclNXUnVuUGF0aCwKKyAgICAgICAgICogICBzaW5jZSB0aGF0IG1pZ2h0IHBvdGVudGlhbGx5IGNvbnRhaW4gdGhlCisgICAgICAgICAqICAgYWJzb2x1dGUgcGF0aCB0byB0aGUgcnVubmluZyBiaW5hcnkuCisgICAgICAgICAqIFdlJ2xsIHVzZSBTV1JVTl9LX0NPTU0gZm9yIGhyU1dSdW5OYW1lLAorICAgICAgICAgKiAgIGFuZCBhcyBhbiBhbHRlcm5hdGl2ZSBmb3IgaHJTV1J1blBhdGgKKyAgICAgICAgICovCisjaWYgSEFWRV9LVk1fR0VUUFJPQzIKKyAgICAgICAgYXJndiA9IGt2bV9nZXRhcmd2Migga2QsICYocHJvY190YWJsZVtpXSksIDApOworI2Vsc2UKKyAgICAgICAgYXJndiA9IGt2bV9nZXRhcmd2KCAga2QsICYocHJvY190YWJsZVtpXSksIEJVRlNJWik7CisjZW5kaWYKKworICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVfbGVuID0gc3ByaW50ZihlbnRyeS0+aHJTV1J1bk5hbWUsICIlLipzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2NfdGFibGVbaV0uU1dSVU5fS19DT01NKTsKKworICAgICAgICBpZiAoYXJndiAmJiAqYXJndikgeworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IHNwcmludGYoZW50cnktPmhyU1dSdW5QYXRoLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd2WzBdKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweSggZW50cnktPmhyU1dSdW5QYXRoLCBlbnRyeS0+aHJTV1J1bk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmhyU1dSdW5OYW1lX2xlbiApOworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IGVudHJ5LT5oclNXUnVuTmFtZV9sZW47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBTdGl0Y2ggdG9nZXRoZXIgdGhlIHJlc3Qgb2YgYXJndltdIHRvIGJ1aWxkIGhyU1dSdW5QYXJhbWV0ZXJzCisgICAgICAgICAqCisgICAgICAgICAqIE5vdGU6CisgICAgICAgICAqICAgV2UgYWRkIGEgc2VwYXJhdGluZyBzcGFjZSBiZWZvcmUgZWFjaCBhcmd2W10gcGFyYW1ldGVyLAorICAgICAgICAgKiAgICppbmNsdWRpbmcqIHRoZSBmaXJzdCBvbmUuICBTbyB3ZSBuZWVkIHRvIHNraXAgdGhpcworICAgICAgICAgKiAgIGxlYWRpbmcgc3BhY2UgKGJ1ZlswXSkgd2hlbiBzZXR0aW5nIGhyU1dSdW5QYXJhbWV0ZXJzLgorICAgICAgICAgKiBUaGlzIGlzIGFsc28gd2h5IHdlIGNsZWFyZWQgdGhlIGZpcnN0ICp0d28qIGNoYXJhY3RlcnMKKyAgICAgICAgICogICBpbiB0aGUgYnVmZmVyIGluaXRpYWxseS4gSWYgdGhlcmUgd2VyZSBubyBjb21tYW5kLWxpbmUKKyAgICAgICAgICogICBhcmd1bWVudHMsIHRoZW4gYnVmWzFdIHdvdWxkIHN0aWxsIGJlIGEgbnVsbCBzdHJpbmcuCisgICAgICAgICAqLworICAgICAgICBidWZbMF0gPSAnXDAnOworICAgICAgICBidWZbMV0gPSAnXDAnOworICAgICAgICBpZiAoYXJndikKKyAgICAgICAgICAgIGFyZ3YrKzsgICAgLyogU2tpcCBhcmd2WzBdICovCisgICAgICAgIHdoaWxlICggYXJndiAmJiAqYXJndiApIHsKKyAgICAgICAgICAgIHN0cmxjYXQoYnVmLCAiICIsIHNpemVvZihidWYpKTsKKyAgICAgICAgICAgIHN0cmxjYXQoYnVmLCAqYXJndiwgc2l6ZW9mKGJ1ZikpOworICAgICAgICAgICAgYXJndisrOworICAgICAgICB9CisgICAgICAgIGlmIChzdHJsZW4oYnVmKSA+PSBCVUZTSVotMTApCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAicGFyYW1zICVsdS8lZCAlc1xuIiwgc3RybGVuKGJ1ZiksIEJVRlNJWiwgYnVmKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzX2xlbiA9CisgICAgICAgICAgICBzcHJpbnRmKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVycywgIiUuKnMiLAorICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMpIC0gMSwgYnVmKzEpOworCisgICAgICAgIGVudHJ5LT5oclNXUnVuVHlwZSA9IChQX1NZU1RFTSAmIHByb2NfdGFibGVbaV0uU1dSVU5fS19GTEFHKSAKKyNpZmRlZiBTV1JVTl9LX0NMQVNTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKChQUklfSVRIRCA9PSBwcm9jX3RhYmxlW2ldLlNXUlVOX0tfQ0xBU1MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMyAgLyogZGV2aWNlIGRyaXZlciAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDIgIC8qIG9wZXJhdGluZyBzeXN0ZW0gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogNCAgLyogIGFwcGxpY2F0aW9uICAgICAqLworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAyICAvKiBvcGVyYXRpbmcgc3lzdGVtICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogNCAgLyogIGFwcGxpY2F0aW9uICAgICAqLworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKKworICAgICAgICBzd2l0Y2ggKHByb2NfdGFibGVbaV0uU1dSVU5fS19TVEFUKSB7CisgICAgICAgIGNhc2UgU1JVTjogICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5JTkc7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1NMRUVQOgorCWNhc2UgU0FDVElWRToKKyAgICAgICAgY2FzZSBTV0FJVDogICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU0lETDoKKyAgICAgICAgY2FzZSBTU1RPUDoKKyAgICAgICAgY2FzZSBTTE9DSzogICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfTk9UUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1pPTUI6CisgICAgICAgIGRlZmF1bHQ6ICAgICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX0lOVkFMSUQ7ICAgLyogaS5lLiAibm90IGxvYWRlZCIgKi8KKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMTQKKyAgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSAgPSAocHJvY190YWJsZVtpXS5raV9ydXNhZ2UucnVfdXRpbWUudHZfc2VjKjEwMDAwMDAgKyBwcm9jX3RhYmxlW2ldLmtpX3J1c2FnZS5ydV91dGltZS50dl91c2VjKSAvIDEwMDAwOworCSBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKHByb2NfdGFibGVbaV0ua2lfcnVzYWdlLnJ1X3N0aW1lLnR2X3NlYyoxMDAwMDAwICsgcHJvY190YWJsZVtpXS5raV9ydXNhZ2UucnVfc3RpbWUudHZfdXNlYykgLyAxMDAwMDsKKwkgZW50cnktPmhyU1dSdW5QZXJmQ1BVICs9IChwcm9jX3RhYmxlW2ldLmtpX3J1c2FnZV9jaC5ydV91dGltZS50dl9zZWMqMTAwMDAwMCArIHByb2NfdGFibGVbaV0ua2lfcnVzYWdlX2NoLnJ1X3V0aW1lLnR2X3VzZWMpIC8gMTAwMDA7CisJIGVudHJ5LT5oclNXUnVuUGVyZkNQVSArPSAocHJvY190YWJsZVtpXS5raV9ydXNhZ2VfY2gucnVfc3RpbWUudHZfc2VjKjEwMDAwMDAgKyBwcm9jX3RhYmxlW2ldLmtpX3J1c2FnZV9jaC5ydV9zdGltZS50dl91c2VjKSAvIDEwMDAwOworCSBlbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gcHJvY190YWJsZVtpXS5raV9yc3NpemUgKiAoZ2V0cGFnZXNpemUoKS8xMDI0KTsgIC8qIGluIGtCICovCisjZWxpZiBkZWZpbmVkKEhBVkVfS1ZNX0dFVFBST0MyKSB8fCBkZWZpbmVkKG9wZW5ic2Q1KQorICAgICAgICAvKgorICAgICAgICAgKiBuZXdlciBOZXRCU0QsIE9wZW5CU0QKKyAgICAgICAgICovCisJZW50cnktPmhyU1dSdW5QZXJmQ1BVID0gcHJvY190YWJsZVtpXS5wX3J0aW1lX3NlYyoxMDA7CisJZW50cnktPmhyU1dSdW5QZXJmQ1BVICs9IHByb2NfdGFibGVbaV0ucF9ydGltZV91c2VjIC8gMTAwMDA7CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmTWVtICA9IHByb2NfdGFibGVbaV0ucF92bV9yc3NpemU7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZk1lbSAqPSAoZ2V0cGFnZXNpemUoKSAvIDEwMjQpOworI2VsaWYgZGVmaW5lZChkcmFnb25mbHkpICYmIF9fRHJhZ29uRmx5X3ZlcnNpb24gPj0gMTkwMDAwCisJZW50cnktPmhyU1dSdW5QZXJmQ1BVICA9IHByb2NfdGFibGVbaV0ua3BfbHdwLmtsX3V0aWNrczsKKwllbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gcHJvY190YWJsZVtpXS5rcF9sd3Aua2xfc3RpY2tzOworCWVudHJ5LT5oclNXUnVuUGVyZkNQVSArPSBwcm9jX3RhYmxlW2ldLmtwX2x3cC5rbF9pdGlja3M7CisJZW50cnktPmhyU1dSdW5QZXJmQ1BVID0gZW50cnktPmhyU1dSdW5QZXJmQ1BVIC8gMTAwMDA7CisKKwllbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gcHJvY190YWJsZVtpXS5rcF92bV9tYXBfc2l6ZSAvIDEwMjQ7CisjZWxpZiBkZWZpbmVkKGRyYWdvbmZseSkKKwllbnRyeS0+aHJTV1J1blBlcmZDUFUgID0gcHJvY190YWJsZVtpXS5rcF9lcHJvYy5lX3V0aWNrczsKKwllbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gcHJvY190YWJsZVtpXS5rcF9lcHJvYy5lX3N0aWNrczsKKwllbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gcHJvY190YWJsZVtpXS5rcF9lcHJvYy5lX2l0aWNrczsKKworCWVudHJ5LT5oclNXUnVuUGVyZk1lbSAgPSBwcm9jX3RhYmxlW2ldLmtwX3ZtX21hcF9zaXplIC8gMTAyNDsKKworI2Vsc2UKKyAgICAgICAgLyoKKyAgICAgICAgICogZWFybHkgRnJlZUJTRCwgTmV0QlNELCBPcGVuQlNECisgICAgICAgICAqLworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgID0gcHJvY190YWJsZVtpXS5rcF9wcm9jLnBfdXRpY2tzOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gcHJvY190YWJsZVtpXS5rcF9wcm9jLnBfc3RpY2tzOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gcHJvY190YWJsZVtpXS5rcF9wcm9jLnBfaXRpY2tzOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gcHJvY190YWJsZVtpXS5rcF9lcHJvYy5lX3ZtLnZtX3Jzc2l6ZTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmTWVtICo9IChnZXRwYWdlc2l6ZSgpIC8gMTAyNCk7CisjZW5kaWYKKyAgICB9CisgICAgLyoKKyAgICAgKiAncHJvY190YWJsZScgaXMgb3duZWQgYnkgdGhlIGt2bSBsaWJyYXJ5LAorICAgICAqICAgc28gc2hvdWxkbid0IGJlIGZyZWVkIGhlcmUuCisgICAgICovCisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwibG9hZGVkICVkIGVudHJpZXNcbiIsCisgICAgICAgICAgICAgICAgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa3ZtX3Byb2MuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa3ZtX3Byb2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTU2Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9rdm1fcHJvYy5jCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogc3dydW5fa3ZtX3Byb2MuYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAga3ZtX2dldHByb2MoKSBpbnRlcmZhY2UgLSBTb2xhcmlzCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVElNRV9ICisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1VTRVJfSAorI2RlZmluZSBfS01FTVVTRVIKKyNpbmNsdWRlIDxzeXMvdXNlci5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUFJPQ19ICisjaW5jbHVkZSA8c3lzL3Byb2MuaD4KKyNlbmRpZgorICAgIC8qIFhYWCAtIHNob3VsZCByZWFsbHkgYmUgcHJvdGVjdGVkICovCisjaW5jbHVkZSA8c3lzL3Zhci5oPgorCisjaWZkZWYgSEFWRV9ESVJFTlRfSAorI2luY2x1ZGUgPGRpcmVudC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9LVk1fSAorI2luY2x1ZGUgPGt2bS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9LU1RBVF9ICisjaW5jbHVkZSA8a3N0YXQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKyNpbmNsdWRlICJrZXJuZWwuaCIKKyNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCituZXRzbm1wX2FyY2hfc3dydW5faW5pdCh2b2lkKQoreworICAgIGV4dGVybiBpbnQgX3N3cnVuX21heDsKKyAgICBrc3RhdF9jdGxfdCAqa3NjOworICAgIGtzdGF0X3QgICAgICprczsKKyAgICBzdHJ1Y3QgdmFyICAgdjsKKworICAgIGlmIChOVUxMICE9IChrc2MgPSBrc3RhdF9vcGVuKCkpKSB7CisgICAgICAgIGlmICgoTlVMTCAhPSAoa3MgID0ga3N0YXRfbG9va3VwKGtzYywgInVuaXgiLCAwLCAidmFyIikpKSAmJgorICAgICAgICAgICAgKCAtMSAgIT0ga3N0YXRfcmVhZChrc2MsIGtzLCAmdiApKSkgeworICAgICAgICAgICAgX3N3cnVuX21heCA9IHYudl9wcm9jOworICAgICAgICB9CisgICAgICAgIGtzdGF0X2Nsb3NlKGtzYyk7CisgICAgfQorICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBESVIgICAgICAgICAgICAgICAgICpwcm9jZGlyID0gTlVMTDsKKyAgICBzdHJ1Y3QgZGlyZW50ICAgICAgICpwcm9jZW50cnlfcDsKKyAgICBzdHJ1Y3QgcHJvYyAgICAgICAgICpwcm9jX2J1ZjsKKyAgICBpbnQgICAgICAgICAgICAgICAgICBwaWQsIHJjLCBpOworICAgIGNoYXIgICAgICAgICAgICAgICAgKmNwOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworICAgIAorICAgIC8qCisgICAgICogRXZlbiBpZiB3ZSdyZSB1c2luZyBrdm1fcHJvYygpIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uCisgICAgICogICBhYm91dCBhIHBhcnRpY3VsYXIgcHJvY2Vzcywgd2Ugc2VlbSB0byB1c2UgL3Byb2MgdG8gZ2V0CisgICAgICogICB0aGUgaW5pdGlhbCBsaXN0IG9mIHByb2Nlc3NlcyB0byByZXBvcnQgb24uCisgICAgICovCisgICAgcHJvY2RpciA9IG9wZW5kaXIoIi9wcm9jIik7CisgICAgaWYgKCBOVUxMID09IHByb2NkaXIgKSB7CisgICAgICAgIHNubXBfbG9nKCBMT0dfRVJSLCAiRmFpbGVkIHRvIG9wZW4gL3Byb2MiICk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFdhbGsgdGhyb3VnaCB0aGUgbGlzdCBvZiBwcm9jZXNzZXMgaW4gdGhlIC9wcm9jIHRyZWUKKyAgICAgKi8KKyAgICB3aGlsZSAoIE5VTEwgIT0gKHByb2NlbnRyeV9wID0gcmVhZGRpciggcHJvY2RpciApKSkgeworICAgICAgICBwaWQgPSBhdG9pKCBwcm9jZW50cnlfcC0+ZF9uYW1lICk7CisgICAgICAgIGlmICggMCA9PSBwaWQgKQorICAgICAgICAgICAgY29udGludWU7ICAgLyogUHJlc3VtYWJseSAnLicgb3IgJy4uJyAqLworCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd3J1bl9lbnRyeV9jcmVhdGUocGlkKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLworICAgICAgICBpZiAoTlVMTCA9PSAocHJvY19idWYgPSBrdm1fZ2V0cHJvYygga2QsIHBpZCkpKSB7CisgICAgICAgICAgICAvKiByZWxlYXNlIGVudHJ5ICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5OYW1lX2xlbiA9IHNwcmludGYoZW50cnktPmhyU1dSdW5OYW1lLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKGVudHJ5LT5oclNXUnVuTmFtZSktMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY19idWYtPnBfdXNlci51X2NvbW0pOworICAgICAgICAvKgorICAgICAgICAgKiAgU3BsaXQgdV9wc2FyZ3MgaW50byB0d286CisgICAgICAgICAqICAgICBhcmd2WzBdICAgaXMgaHJTV1J1blBhdGgKKyAgICAgICAgICogICAgIGFyZ3ZbMS4uXSBpcyBoclNXUnVuUGFyYW1ldGVycworICAgICAgICAgKi8KKyAgICAgICAgZm9yICggY3AgPSBwcm9jX2J1Zi0+cF91c2VyLnVfcHNhcmdzOyAnICcgPT0gKmNwOyBjcCsrICkKKyAgICAgICAgICAgIDsKKyAgICAgICAgKmNwID0gJ1wwJzsgICAgLyogRW5kIG9mIGFyZ3ZbMF0gKi8KKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IHNwcmludGYoZW50cnktPmhyU1dSdW5QYXRoLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jX2J1Zi0+cF91c2VyLnVfcHNhcmdzKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzX2xlbiA9CisgICAgICAgICAgICBzcHJpbnRmKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVycywgIiUuKnMiLAorICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMpIC0gMSwgY3AgKyAxKTsKKyAgICAgICAgKmNwID0gJyAnOyAgICAgLyogUmVzdG9yZSB1X3BzYXJncyB2YWx1ZSAqLworCisgICAgICAgIC8qCisgICAgICAgICAqIGNoZWNrIGZvciBzeXN0ZW0gcHJvY2Vzc2VzCisgICAgICAgICAqLworICAgICAgICBlbnRyeS0+aHJTV1J1blR5cGUgPSAoU1NZUyAmIHByb2NfYnVmLT5wX2ZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDIgICAvKiBrZXJuZWwgcHJvY2VzcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA0ICAgLyogIGFwcGxpY2F0aW9uICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKKworICAgICAgICBzd2l0Y2ggKHByb2NfYnVmLT5wX3N0YXQpIHsKKyAgICAgICAgY2FzZSBTUlVOOgorICAgICAgICBjYXNlIFNPTlBST0M6IGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OSU5HOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNTTEVFUDogIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OQUJMRTsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTU1RPUDogICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfTk9UUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU0lETDoKKyAgICAgICAgY2FzZSBTWk9NQjoKKyAgICAgICAgZGVmYXVsdDogICAgICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfSU5WQUxJRDsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICA9IChwcm9jX2J1Zi0+cF91dGltZSAqIDEwMCk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSArPSAocHJvY19idWYtPnBfc3RpbWUgKiAxMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gIHByb2NfYnVmLT5wX3N3cnNzOworCQkvKiBYWFggLSBpcyB0aGlzIHJlcG9ydGVkIGluIGtCPyAqLworICAgIH0KKyAgICBjbG9zZWRpciggcHJvY2RpciApOworCisgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKKyAgICAgICAgICAgICAgICBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fbmxpc3QuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fbmxpc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGI2YzljCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9ubGlzdC5jCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogc3dydW5fbmxpc3QuYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAgbmxpc3QoKSBpbnRlcmZhY2UKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCituZXRzbm1wX2FyY2hfc3dydW5faW5pdCh2b2lkKQoreworICAgIGV4dGVybiBpbnQgX3N3cnVuX21heDsKKworICAgIGF1dG9fbmxpc3QoICBQUk9DX1NZTUJPTCwgMCwgMCk7CisgICAgYXV0b19ubGlzdCggTlBST0NfU1lNQk9MLCAoY2hhciAqKSZfc3dydW5fbWF4LCBzaXplb2YoaW50KSk7CisgICAgcmV0dXJuOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworaW50CituZXRzbm1wX2FyY2hfc3dydW5fY29udGFpbmVyX2xvYWQoIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZsYWdzKQoreworICAgIHN0cnVjdCBwcm9jICAgICAgICAgKnByb2NfdGFibGU7CisgICAgaW50ICAgICAgICAgICAgICAgICAgcHJvY190eXBlX2Jhc2U7CisgICAgaW50ICAgICAgICAgICAgICAgICAgbnByb2MsIGksIHJjOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworCisgICAgYXV0b19ubGlzdCggTlBST0NfU1lNQk9MLCAoY2hhciAqKSZucHJvYywgc2l6ZW9mKGludCkpOworICAgIHByb2NfdGFibGUgPSAoc3RydWN0IHByb2MgKikgbWFsbG9jKG5wcm9jKihzaXplb2Yoc3RydWN0IHByb2MpKSk7CisKKyAgICBhdXRvX25saXN0KCAgUFJPQ19TWU1CT0wsIChjaGFyICopJnByb2NfdGFibGVfYmFzZSwgc2l6ZW9mKGludCkpOworICAgIE5FVFNOTVBfS0xPT0tVUChwcm9jX3RhYmxlX2Jhc2UsIChjaGFyICopcHJvY190YWJsZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnByb2MqKHNpemVvZihzdHJ1Y3QgcHJvYykpKTsKKworICAgIGZvciAoIGk9MCA7IGk8bnByb2M7IGkrKyApIHsKKyAgICAgICAgaWYgKDAgPT0gcHJvY190YWJsZVtpXS5wX3N0YXQpCisgICAgICAgICAgICBjb250aW51ZTsJLyogU2tpcCB1bnVzZWQgZW50cmllcyAqLworICAgICAgICBlbnRyeSA9IG5ldHNubXBfc3dydW5fZW50cnlfY3JlYXRlKHByb2NfdGFibGVbaV0ucF9waWQpOworICAgICAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIGVycm9yIGFscmVhZHkgbG9nZ2VkIGJ5IGZ1bmN0aW9uICovCisgICAgICAgIHJjID0gQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKworICAgICAgICAvKgorICAgICAgICAgKiBYWFggLSBXaGF0IGluZm9ybWF0aW9uIGRvZXMgJ3N0cnVjdCBwcm9jJyBjb250YWluPworICAgICAgICAgKi8KKyAgICAgICAgCisvKgorIEFwcGFyZW50bHkgbm8gcHJvY2VzcyBuYW1lL2FyZ3VtZW50IGluZm9ybWF0aW9uCisgICAgICAgIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1bk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1bk5hbWUpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBwcm9jX3RhYmxlW2ldLj8/Pyk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1blBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBwcm9jX3RhYmxlW2ldLj8/Pyk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCA/Pz8pOworICovCisKKyAgICAgICAgc3dpdGNoIChwcm9jX3RhYmxlW2ldLnBfc3RhdCkgeworLyogWFhYIC0gd2hpY2ggbmFtZXMgdG8gdXNlID8/ICovCisgICAgICAgIGNhc2UgU0FDVElWRToKKyAgICAgICAgY2FzZSBTUlVOOgorICAgICAgICBjYXNlIFNPTlBST0M6IGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OSU5HOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNTV0FQOgorICAgICAgICBjYXNlIFNTTEVFUDoKKyAgICAgICAgY2FzZSBTV0FJVDogICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1NUT1A6ICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX05PVFJVTk5BQkxFOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNJREw6CisgICAgICAgIGNhc2UgU1pPTUI6CisgICAgICAgIGRlZmF1bHQ6ICAgICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX0lOVkFMSUQ7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSAgPSAocHJvY190YWJsZVtpXS5wX3V0aW1lLnR2X3NlYyAgKiAxMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKHByb2NfdGFibGVbaV0ucF91dGltZS50dl91c2VjIC8gMTAwMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKHByb2NfdGFibGVbaV0ucF9zdGltZS50dl9zZWMgICogMTAwKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICs9IChwcm9jX3RhYmxlW2ldLnBfc3RpbWUudHZfdXNlYyAvIDEwMDAwKTsKKyAgICAvKgorICAgICBvciBlbnRyeS0+aHJTV1J1blBlcmZDUFUgID0gcHJvY190YWJsZVtpXS5wX3RpbWU7CisgICAgICovCisgICAgfQorICAgIGZyZWUocHJvY190YWJsZSk7CisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIGxvYWRlZCAlZCBlbnRyaWVzXG4iLAorICAgICAgICAgICAgICAgIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9udWxsLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX251bGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDNkNDBlCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9udWxsLmMKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIHN3cnVuX251bGwuYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAgZHVtbXkgaW50ZXJmYWNlIGZvciBub24tc3VwcG9ydGVkIHN5c3RlbXMKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCituZXRzbm1wX2FyY2hfc3dydW5faW5pdCh2b2lkKQoreworICAgIC8qIE5vdGhpbmcgdG8gZG8gKi8KKyAgICByZXR1cm47Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitpbnQKK25ldHNubXBfYXJjaF9zd3J1bl9jb250YWluZXJfbG9hZCggbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MpCit7CisgICAgLyogTm90aGluZyB0byBkbyAqLworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2giLCIgbG9hZGVkICVkIGVudHJpZXNcbiIsCisgICAgICAgICAgICAgICAgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3BzaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MTI0ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8uYwpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIHN3cnVuX3Byb2Nmc19wc2luZm8uYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAgL3Byb2Mve3BpZH0vcHNpbmZvIGludGVyZmFjZSAtIFNvbGFyaXMKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfRElSRU5UX0gKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfRkNOVExfSAorI2luY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYKKworI2RlZmluZSBIQVZFX1NZU19QUk9DRlNfSCAgICAvKiBYWFggLSBOZWVkcyBhIGNvbmZpZ3VyZSBjaGVjayEgKi8KKyNpZmRlZiBIQVZFX1NZU19QUk9DRlNfSAorI2RlZmluZSBfS0VSTkVMICAgICAgICAgICAgICAvKiBGb3IgcHNpbmZvX3QgKi8KKyNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+CisjdW5kZWYgX0tFUk5FTAorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUFJPQ19ICisjaW5jbHVkZSA8c3lzL3Byb2MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfYXJjaF9zd3J1bl9pbml0KHZvaWQpCit7CisgICAgLyogTm90aGluZyB0byBkbyAqLworICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBESVIgICAgICAgICAgICAgICAgICpwcm9jZGlyID0gTlVMTDsKKyAgICBzdHJ1Y3QgZGlyZW50ICAgICAgICpwcm9jZW50cnlfcDsKKyAgICBwc2luZm9fdCAgICAgICAgICAgICBwc2luZm87CisgICAgaW50ICAgICAgICAgICAgICAgICAgcGlkLCByYywgZmQ7CisgICAgY2hhciAgICAgICAgICAgICAgICAqY3AsIGJ1Zls1MTJdOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworCisgICAgcHJvY2RpciA9IG9wZW5kaXIoIi9wcm9jIik7CisgICAgaWYgKCBOVUxMID09IHByb2NkaXIgKSB7CisgICAgICAgIHNubXBfbG9nKCBMT0dfRVJSLCAiRmFpbGVkIHRvIG9wZW4gL3Byb2MiICk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFdhbGsgdGhyb3VnaCB0aGUgbGlzdCBvZiBwcm9jZXNzZXMgaW4gdGhlIC9wcm9jIHRyZWUKKyAgICAgKi8KKyAgICB3aGlsZSAoIE5VTEwgIT0gKHByb2NlbnRyeV9wID0gcmVhZGRpciggcHJvY2RpciApKSkgeworICAgICAgICBwaWQgPSBhdG9pKCBwcm9jZW50cnlfcC0+ZF9uYW1lICk7CisgICAgICAgIGlmICggMCA9PSBwaWQgKQorICAgICAgICAgICAgY29udGludWU7ICAgLyogUHJlc3VtYWJseSAnLicgb3IgJy4uJyAqLworCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd3J1bl9lbnRyeV9jcmVhdGUocGlkKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLworICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogTm93IGV4dHJhY3QgdGhlIGludGVyZXN0aW5nIGluZm9ybWF0aW9uCisgICAgICAgICAqICAgZnJvbSB0aGUgdmFyaW91cyAvcHJvY3tQSUR9LyBpbnRlcmZhY2UgZmlsZXMKKyAgICAgICAgICovCisKKyAgICAgICAgc25wcmludGYoIGJ1Ziwgc2l6ZW9mKGJ1ZiksICIvcHJvYy8lZC9wc2luZm8iLCBwaWQgKTsKKyAgICAgICAgZmQgPSBvcGVuKCBidWYsIE9fUkRPTkxZICk7CisgICAgICAgIHJlYWQoIGZkLCAmcHNpbmZvLCBzaXplb2YocHNpbmZvKSk7CisgICAgICAgIGNsb3NlKGZkKTsKKworICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVfbGVuCisgICAgICAgICAgICA9IHNwcmludGYoZW50cnktPmhyU1dSdW5OYW1lLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgcHNpbmZvLnByX2ZuYW1lKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogIFNwbGl0IHByX3BzYXJncyBpbnRvIHR3bzoKKyAgICAgICAgICogICAgIGFyZ3ZbMF0gICBpcyBoclNXUnVuUGF0aAorICAgICAgICAgKiAgICAgYXJndlsxLi5dIGlzIGhyU1dSdW5QYXJhbWV0ZXJzCisgICAgICAgICAqLworICAgICAgICBmb3IgKCBjcCA9IHBzaW5mby5wcl9wc2FyZ3M7ICcgJyA9PSAqY3A7IGNwKysgKQorICAgICAgICAgICAgOworICAgICAgICAqY3AgPSAnXDAnOyAgICAvKiBFbmQgb2YgYXJndlswXSAqLworICAgICAgICBlbnRyeS0+aHJTV1J1blBhdGhfbGVuCisgICAgICAgICAgICA9IHNwcmludGYoZW50cnktPmhyU1dSdW5QYXRoLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2YoZW50cnktPmhyU1dSdW5QYXRoKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgcHNpbmZvLnByX3BzYXJncyk7CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzX2xlbgorICAgICAgICAgICAgPSBzcHJpbnRmKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVycywgIiUuKnMiLAorICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVycykgLSAxLCBjcCsxKTsKKyAgICAgICAgKmNwID0gJyAnOyAgICAgLyogUmVzdG9yZSBwcl9wc2FyZ3MgdmFsdWUgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiBjaGVjayBmb3Igc3lzdGVtIHByb2Nlc3NlcworICAgICAgICAgKi8KKyAgICAgICAgZW50cnktPmhyU1dSdW5UeXBlID0gKFBSX0lTU1lTICYgcHNpbmZvLnByX2ZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDIgICAvKiBrZXJuZWwgcHJvY2VzcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA0ICAgLyogIGFwcGxpY2F0aW9uICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKKworICAgICAgICBzd2l0Y2ggKHBzaW5mby5wcl9sd3AucHJfc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTUlVOOgorICAgICAgICBjYXNlIFNPTlBST0M6IGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OSU5HOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNTTEVFUDogIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OQUJMRTsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTU1RPUDogICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfTk9UUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU0lETDoKKyAgICAgICAgY2FzZSBTWk9NQjoKKyAgICAgICAgZGVmYXVsdDogICAgICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfSU5WQUxJRDsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICA9IChwc2luZm8ucHJfdGltZS50dl9zZWMgKiAxMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKHBzaW5mby5wcl90aW1lLnR2X25zZWMgLyAxMDAwMDAwMCk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZk1lbSAgPSAgcHNpbmZvLnByX3Jzc2l6ZTsKKwkJLyogWFhYIC0gaXMgdGhpcyByZXBvcnRlZCBpbiBrQj8gKi8KKyAgICB9CisgICAgY2xvc2VkaXIoIHByb2NkaXIgKTsKKworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2giLCIgbG9hZGVkICVkIGVudHJpZXNcbiIsCisgICAgICAgICAgICAgICAgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMmY1OTAKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYwpAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIHN3cnVuX3Byb2Nmc19saW51eC5jOgorICogICAgIGhyU1dSdW5UYWJsZSBkYXRhIGFjY2VzczoKKyAqICAgICAvcHJvYy97cGlkfS9zdGF0dXMgaW50ZXJmYWNlIC0gTGludXgKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9ESVJFTlRfSAorI2luY2x1ZGUgPGRpcmVudC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9MSU5VWF9UQVNLU19ICisjaW5jbHVkZSA8bGludXgvdGFza3MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKworc3RhdGljIGxvbmcgcGFnZXNpemU7CitzdGF0aWMgbG9uZyBzY19jbGtfdGNrOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorbmV0c25tcF9hcmNoX3N3cnVuX2luaXQodm9pZCkKK3sKKyNpZmRlZiBIQVZFX0xJTlVYX1RBU0tTX0gKKyAgICBleHRlcm4gaW50IF9zd3J1bl9tYXggPSBOUl9UQVNLUzsgICAvKiBmcm9tIDxsaW51eC90YXNrcy5oPiAqLworI2VuZGlmCisgICAgCisgICAgcGFnZXNpemUgPSBnZXRwYWdlc2l6ZSgpOworICAgIHNjX2Nsa190Y2sgPSBzeXNjb25mKF9TQ19DTEtfVENLKTsKKyAgICByZXR1cm47Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitpbnQKK25ldHNubXBfYXJjaF9zd3J1bl9jb250YWluZXJfbG9hZCggbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MpCit7CisgICAgRElSICAgICAgICAgICAgICAgICAqcHJvY2RpciA9IE5VTEw7CisgICAgc3RydWN0IGRpcmVudCAgICAgICAqcHJvY2VudHJ5X3A7CisgICAgRklMRSAgICAgICAgICAgICAgICAqZnA7CisgICAgaW50ICAgICAgICAgICAgICAgICAgcGlkLCByYywgaTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgICBjcHU7CisgICAgY2hhciAgICAgICAgICAgICAgICAgYnVmW0JVRlNJWl0sIGJ1ZjJbQlVGU0laXSwgKmNwLCAqY3AxOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworICAgIAorICAgIHByb2NkaXIgPSBvcGVuZGlyKCIvcHJvYyIpOworICAgIGlmICggTlVMTCA9PSBwcm9jZGlyICkgeworICAgICAgICBzbm1wX2xvZyggTE9HX0VSUiwgIkZhaWxlZCB0byBvcGVuIC9wcm9jIiApOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBXYWxrIHRocm91Z2ggdGhlIGxpc3Qgb2YgcHJvY2Vzc2VzIGluIHRoZSAvcHJvYyB0cmVlCisgICAgICovCisgICAgd2hpbGUgKCBOVUxMICE9IChwcm9jZW50cnlfcCA9IHJlYWRkaXIoIHByb2NkaXIgKSkpIHsKKyAgICAgICAgcGlkID0gYXRvaSggcHJvY2VudHJ5X3AtPmRfbmFtZSApOworICAgICAgICBpZiAoIDAgPT0gcGlkICkKKyAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIFByZXN1bWFibHkgJy4nIG9yICcuLicgKi8KKworICAgICAgICBlbnRyeSA9IG5ldHNubXBfc3dydW5fZW50cnlfY3JlYXRlKHBpZCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIE5vdyBleHRyYWN0IHRoZSBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbgorICAgICAgICAgKiAgIGZyb20gdGhlIHZhcmlvdXMgL3Byb2N7UElEfS8gaW50ZXJmYWNlIGZpbGVzCisgICAgICAgICAqLworCisgICAgICAgIC8qCisgICAgICAgICAqICAgTmFtZTogIHByb2Nlc3MgbmFtZQorICAgICAgICAgKi8KKyAgICAgICAgc25wcmludGYoIGJ1ZjIsIEJVRlNJWiwgIi9wcm9jLyVkL3N0YXR1cyIsIHBpZCApOworICAgICAgICBmcCA9IGZvcGVuKCBidWYyLCAiciIgKTsKKyAgICAgICAgbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOworICAgICAgICBmZ2V0cyggYnVmLCBCVUZTSVotMSwgZnAgKTsKKyAgICAgICAgZmNsb3NlKGZwKTsKKworICAgICAgICBmb3IgKCBjcCA9IGJ1ZjsgKmNwICE9ICc6JzsgY3ArKyApCisgICAgICAgICAgICA7CisgICAgICAgIHdoaWxlIChpc3NwYWNlKCooKytjcCkpKQkvKiBTa2lwICc6JyBhbmQgZm9sbG93aW5nIHNwYWNlcyAqLworICAgICAgICAgICAgOworICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKS0xLCAiJXMiLCBjcCk7CisgICAgICAgIGlmICggJ1xuJyA9PSBlbnRyeS0+aHJTV1J1bk5hbWVbIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4tMSBdKSB7CisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVbIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4tMSBdID0gJ1wwJzsKKyAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4tLTsgICAgICAgICAgIC8qIFN0YW1wIG9uIHRyYWlsaW5nIG5ld2xpbmUgKi8KKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqICBDb21tYW5kIExpbmU6CisgICAgICAgICAqICAgICBhcmd2WzBdICdcMCcgYXJndlsxXSAnXDAnIC4uLi4KKyAgICAgICAgICovCisgICAgICAgIHNucHJpbnRmKCBidWYyLCBCVUZTSVosICIvcHJvYy8lZC9jbWRsaW5lIiwgcGlkICk7CisgICAgICAgIGZwID0gZm9wZW4oIGJ1ZjIsICJyIiApOworICAgICAgICBtZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7CisgICAgICAgIGNwID0gZmdldHMoIGJ1ZiwgQlVGU0laLTEsIGZwICk7CisgICAgICAgIGZjbG9zZShmcCk7CisKKyAgICAgICAgaWYgKCBjcCApIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiAgICAgYXJndlswXSAgIGlzIGhyU1dSdW5QYXRoCisgICAgICAgICAgICAgKi8gCisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blBhdGhfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5QYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGVudHJ5LT5oclNXUnVuUGF0aCktMSwgIiVzIiwgYnVmKTsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBTdGl0Y2ggdG9nZXRoZXIgYXJndlsxLi5dIHRvIGNvbnN0cnVjdCBoclNXUnVuUGFyYW1ldGVycworICAgICAgICAgICAgICovCisgICAgICAgICAgICBjcCA9IGJ1ZiArIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4rMTsKKyAgICAgICAgICAgIHdoaWxlICggMSApIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoKmNwKQorICAgICAgICAgICAgICAgICAgICBjcCsrOworICAgICAgICAgICAgICAgIGlmICggJ1wwJyA9PSAqKGNwKzEpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAvKiAnXDAnJ1wwJyA9PiBFbmQgb2YgY29tbWFuZCBsaW5lICovCisgICAgICAgICAgICAgICAgKmNwID0gJyAnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzX2xlbgorICAgICAgICAgICAgICAgID0gc3ByaW50ZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMsICIlLipzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2YoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiArIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gKyAxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweShlbnRyeS0+aHJTV1J1blBhdGgsIGVudHJ5LT5oclNXUnVuTmFtZSwgZW50cnktPmhyU1dSdW5OYW1lX2xlbik7CisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blBhdGhfbGVuICAgICAgID0gZW50cnktPmhyU1dSdW5OYW1lX2xlbjsKKyAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4gPSAwOworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5UeXBlID0gSFJTV1JVTlRZUEVfT1BFUkFUSU5HU1lTVEVNOworICAgICAgICB9CisgCisgICAgICAgIC8qCisgICAgICAgICAqIFhYWCAtIE5vIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBzeXN0ZW0gcHJvY2Vzc2VzIHZzIGFwcGxpY2F0aW9ucworICAgICAgICAgKi8KKyAgICAgICAgZW50cnktPmhyU1dSdW5UeXBlID0gSFJTV1JVTlRZUEVfQVBQTElDQVRJT047CisKKyAgICAgICAgLyoKKyAgICAgICAgICogICB7eHh4fSB7eHh4fSBTVEFUVVMgIHt4eHh9KjEwICBVVElNRSBTVElNRSAge3h4eH0qOCBSU1MKKyAgICAgICAgICovCisgICAgICAgIHNucHJpbnRmKCBidWYsIEJVRlNJWiwgIi9wcm9jLyVkL3N0YXQiLCBwaWQgKTsKKyAgICAgICAgZnAgPSBmb3BlbiggYnVmLCAiciIgKTsKKyAgICAgICAgZmdldHMoIGJ1ZiwgQlVGU0laLTEsIGZwICk7CisgICAgICAgIGZjbG9zZShmcCk7CisKKyAgICAgICAgY3AgPSBidWY7CisgICAgICAgIHdoaWxlICggJyAnICE9ICooY3ArKykpICAgIC8qIFNraXAgZmlyc3QgZmllbGQgKi8KKyAgICAgICAgICAgIDsKKyAgICAgICAgY3AxID0gY3A7ICAgICAgICAgICAgICAgICAgLyogU2tpcCBzZWNvbmQgZmllbGQgKi8KKyAgICAgICAgd2hpbGUgKCpjcDEpIHsKKyAgICAgICAgICAgIGlmICgqY3AxID09ICcpJykgY3AgPSBjcDE7CisgICAgICAgICAgICBjcDErKzsKKyAgICAgICAgfQorICAgICAgICBjcCArPSAyOworICAgICAgICAKKyAgICAgICAgc3dpdGNoICgqY3ApIHsKKyAgICAgICAgY2FzZSAnUic6ICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTklORzsKKyAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnUyc6ICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ0QnOgorICAgICAgICBjYXNlICdUJzogIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19OT1RSVU5OQUJMRTsKKyAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnWic6CisgICAgICAgIGRlZmF1bHQ6ICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX0lOVkFMSUQ7CisgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpPTExOyBpOyBpLS0pIHsgICAvKiBTa2lwIFNUQVRVUyArIDEwIGZpZWxkcyAqLworICAgICAgICAgICAgd2hpbGUgKCcgJyAhPSAqKCsrY3ApKQorICAgICAgICAgICAgICAgIDsKKyAgICAgICAgICAgIGNwKys7CisgICAgICAgIH0KKyAgICAgICAgY3B1ICA9IGF0b2woIGNwICk7ICAgICAgICAgICAgICAgICAgICAgLyogIHV0aW1lICovCisgICAgICAgIHdoaWxlICggJyAnICE9ICooKytjcCkpCisgICAgICAgICAgICA7CisgICAgICAgIGNwdSArPSBhdG9sKCBjcCApOyAgICAgICAgICAgICAgICAgICAgIC8qICtzdGltZSAqLworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgID0gY3B1ICogMTAwIC8gc2NfY2xrX3RjazsKKworICAgICAgICBmb3IgKGk9OTsgaTsgaS0tKSB7ICAgLyogU2tpcCBzdGltZSArIDggZmllbGRzICovCisgICAgICAgICAgICB3aGlsZSAoJyAnICE9ICooKytjcCkpCisgICAgICAgICAgICAgICAgOworICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgfQorICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gYXRvbCggY3AgKTsgICAgICAgLyogcnNzICAgKi8KKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmTWVtICo9IChwYWdlc2l6ZS8xMDI0KTsgIC8qIGluIGtCICovCisgICAgfQorICAgIGNsb3NlZGlyKCBwcm9jZGlyICk7CisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIGxvYWRlZCAlZCBlbnRyaWVzXG4iLAorICAgICAgICAgICAgICAgIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NjQwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2NpbmZvLmMKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBzd3J1bl9wcm9jaW5mby5jOgorICogICAgIGhyU1dSdW5UYWJsZSBkYXRhIGFjY2VzczoKKyAqICAgICBnZXRwcm9jcygpIGludGVyZmFjZSAtIEFJWAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8cHJvY2luZm8uaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisKK2ludCBhdmFpbCA9IDEwMjQ7ICAgIC8qIFNpemUgb2YgdGFibGUgdG8gYWxsb2NhdGUgKi8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfYXJjaF9zd3J1bl9pbml0KHZvaWQpCit7CisgICAgLyogTm90aGluZyB0byBkbyAqLworICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBzdHJ1Y3QgcHJvY3NpbmZvICAgICpwcm9jX3RhYmxlOworICAgIHBpZF90ICAgICAgICAgICAgICAgIHByb2NfaW5kZXggPSAwOworICAgIGludCAgICAgICAgICAgICAgICAgIG5wcm9jcywgaTsKKyAgICBjaGFyICAgICAgICAgICAgICAgICBwZW50cnlbMTI4XSwgKnBwZW50cnksIGZ1bGxwYXRoWzEyOF07CisgICAgbmV0c25tcF9zd3J1bl9lbnRyeSAqZW50cnk7CisKKyAgICAvKgorICAgICAqIENyZWF0ZSBhIGJ1ZmZlciBmb3IgdGhlIHByb2Nlc3MgdGFibGUsIGJhc2VkIG9uIHRoZSBzaXplIG9mCisgICAgICogICB0aGUgdGFibGUgdGhlIGxhc3QgdGltZSB3ZSBsb2FkZWQgdGhpcyBpbmZvcm1hdGlvbi4KKyAgICAgKiBJZiB0aGlzIGlzbid0IGJpZyBlbm91Z2gsIGtlZXAgaW5jcmVhc2luZyB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgKiAgIHRhYmxlIHVudGlsIHdlIGNhbiByZXRyaWV2ZSB0aGUgd2hvbGUgdGhpbmcuCisgICAgICovCisgICAgcHJvY190YWJsZSA9IChzdHJ1Y3QgcHJvY3NpbmZvICopIG1hbGxvYyhhdmFpbCooc2l6ZW9mKHN0cnVjdCBwcm9jc2luZm8pKSk7CisgICAgd2hpbGUgKCBhdmFpbCA9PSAobnByb2NzID0gZ2V0cHJvY3MocHJvY190YWJsZSwgc2l6ZW9mKHN0cnVjdCBwcm9jc2luZm8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHNpemVvZihzdHJ1Y3QgZmRzaW5mbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2NfaW5kZXgsIGF2YWlsKSkpIHsKKyAgICAgICAgYXZhaWwgKz0gMTAyNDsKKyAgICAgICAgZnJlZSggcHJvY190YWJsZSApOworICAgICAgICBwcm9jX3RhYmxlID0gKHN0cnVjdCBwcm9jc2luZm8gKikgbWFsbG9jKGF2YWlsKihzaXplb2Yoc3RydWN0IHByb2NzaW5mbykpKTsKKyAgICB9CisKKyAgICBmb3IgKCBpPTAgOyBpPG5wcm9jczsgaSsrICkgeworICAgICAgICBpZiAoMCA9PSBwcm9jX3RhYmxlW2ldLnBpX3N0YXRlKQorICAgICAgICAgICAgY29udGludWU7CS8qIFNraXAgdW51c2VkIGVudHJpZXMgKi8KKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX3N3cnVuX2VudHJ5X2NyZWF0ZShwcm9jX3RhYmxlW2ldLnBpX3BpZCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKworCW1lbXNldChwZW50cnksIDAsIHNpemVvZihwZW50cnkpKTsJCQkJCQkJCS8qIEVtcHR5IGVhY2ggdGltZSAqLworCWlmKCEoU0tQUk9DICYgcHJvY190YWJsZVtpXS5waV9mbGFncykpIHsJCQkJCQkJLyogUmVtb3ZlIGtlcm5lbCBwcm9jZXNzZXMgKi8KKwkJZ2V0YXJncygmcHJvY190YWJsZVtpXSwgc2l6ZW9mKHN0cnVjdCBwcm9jc2luZm8pLCBwZW50cnksIHNpemVvZihwZW50cnkpKTsgICAgICAgICAgICAgIC8qIENhbGwgZ2V0YXJncygpICovCisJCWZvcihwcGVudHJ5ID0gcGVudHJ5OyAhKCgqcHBlbnRyeSA9PSAnXDAnKSAmJiAoKihwcGVudHJ5KzEpID09ICdcMCcpKTsgcHBlbnRyeSsrKSB7ICAgICAvKiBQcm9jZXNzIHVudGlsIDB4MDAgMHgwMCAqLworCQkJaWYoKCpwcGVudHJ5ID09ICdcMCcpICYmICghKCoocHBlbnRyeSsxKSA9PSAnXDAnKSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpZiAweDAwICEweDAwICovCisJCQkJKnBwZW50cnkgPSAnICc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hhbmdlIHRvIDB4MjAgITB4MDAgKi8KKwkJfQorCQlzbnByaW50ZihmdWxscGF0aCwgc2l6ZW9mKGZ1bGxwYXRoKS0xLCAiJS4qcyIsIChpbnQpKHN0cmNocihwZW50cnksICcgJyktcGVudHJ5KSwgcGVudHJ5KTsKKworCQllbnRyeS0+aHJTV1J1blBhdGhfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5QYXRoLAorCQkJc2l6ZW9mKGVudHJ5LT5oclNXUnVuUGF0aCksICIlcyIsIGZ1bGxwYXRoKTsKKwkJcHBlbnRyeSA9IHN0cnJjaHIoZnVsbHBhdGgsICcvJyk7CisJCWlmKHBwZW50cnkgPT0gTlVMTCkgeworCQkJZW50cnktPmhyU1dSdW5OYW1lX2xlbiA9IHNucHJpbnRmKGVudHJ5LT5oclNXUnVuTmFtZSwKKwkJCQlzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSwgIiVzIiwgZnVsbHBhdGgpOworCQl9CisJCWVsc2UgeworCQkJZW50cnktPmhyU1dSdW5OYW1lX2xlbiA9IHNucHJpbnRmKGVudHJ5LT5oclNXUnVuTmFtZSwKKwkJCQlzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSwgIiVzIiwgcHBlbnRyeSArIDEpOworCQl9CisKKwkJcHBlbnRyeSA9IHN0cmNocihwZW50cnksICcgJyk7CisJCWVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMsCisJCQlzaXplb2YoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzKSwgIiUuKnMiLCAoaW50KShwZW50cnkgLSBwcGVudHJ5KSwgcHBlbnRyeSArIDEpOworCX0KKworICAgICAgICBlbnRyeS0+aHJTV1J1blR5cGUgPSAoU0tQUk9DICYgcHJvY190YWJsZVtpXS5waV9mbGFncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMiAgIC8qIGtlcm5lbCBwcm9jZXNzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDQgICAvKiAgYXBwbGljYXRpb24gICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOworCisgICAgICAgIHN3aXRjaCAocHJvY190YWJsZVtpXS5waV9zdGF0ZSkgeworICAgICAgICBjYXNlIFNBQ1RJVkU6CisgICAgICAgIGNhc2UgU1JVTjogICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5JTkc7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1NMRUVQOiAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5BQkxFOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNTVE9QOiAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19OT1RSVU5OQUJMRTsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTSURMOgorICAgICAgICBjYXNlIFNaT01COgorICAgICAgICBkZWZhdWx0OiAgICAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19JTlZBTElEOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICA9IChwcm9jX3RhYmxlW2ldLnBpX3J1LnJ1X3V0aW1lLnR2X3NlYyAqIDEwMCk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSArPSAocHJvY190YWJsZVtpXS5waV9ydS5ydV91dGltZS50dl91c2VjIC8gMTAwMDAwMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKHByb2NfdGFibGVbaV0ucGlfcnUucnVfc3RpbWUudHZfc2VjICogMTAwKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICs9IChwcm9jX3RhYmxlW2ldLnBpX3J1LnJ1X3N0aW1lLnR2X3VzZWMgLyAxMDAwMDAwMCk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZk1lbSAgPSAgcHJvY190YWJsZVtpXS5waV9zaXplOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gKj0gKGdldHBhZ2VzaXplKCkvMTAyNCk7ICAvKiBpbiBrQiAqLworICAgIH0KKyAgICBmcmVlKHByb2NfdGFibGUpOworCisgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKKyAgICAgICAgICAgICAgICAoaW50KSBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJwc2luZm8uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJwc2luZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2JiYjIzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcnBzaW5mby5jCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogc3dydW5fcHJwc2luZm8uYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAgZ2V0cHJwc2luZm8oKSBpbnRlcmZhY2UgLSBEeW5peAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV8/Pz8/P19ICisjaW5jbHVkZSA8Pz8/Pz8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfYXJjaF9zd3J1bl9pbml0KHZvaWQpCit7CisgICAgLyogTm90aGluZyB0byBkbyAqLworICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBwaWRfdCAgICAgICAgICAgICAgICBuZXh0cHJvYyA9IDA7CisgICAgZ2V0cHJwc2luZm9fdCAgICAgICAqc2VsZWN0ICAgPSAwOworICAgIHBycHNpbmZvX3QgICAgICAgICAgIG15cHNpbmZvOworICAgIGludCAgICAgICAgICAgICAgICAgIHJjOworICAgIGNoYXIgICAgICAgICAgICAgICAgKmNwOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworCisgICAgd2hpbGUgKCAwIDw9ICggbmV4dHByb2MgPSBnZXRwcnBzaW5mbyggbmV4dHByb2MsIHNlbGVjdCwgJm15cHNpbmZvICkpKSB7CisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd3J1bl9lbnRyeV9jcmVhdGUobXlwc2luZm8ucHJfcGlkKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLworICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5OYW1lX2xlbiA9IHNucHJpbnRmKGVudHJ5LT5oclNXUnVuTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGVudHJ5LT5oclNXUnVuTmFtZSktMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsIG15cHNpbmZvLnByX2ZuYW1lKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogIFNwbGl0IHByX3BzYXJncyBpbnRvIHR3bzoKKyAgICAgICAgICogICAgIGFyZ3ZbMF0gICBpcyBoclNXUnVuUGF0aAorICAgICAgICAgKiAgICAgYXJndlsxLi5dIGlzIGhyU1dSdW5QYXJhbWV0ZXJzCisgICAgICAgICAqLworICAgICAgICBmb3IgKCBjcCA9IG15cHNpbmZvLnByX3BzYXJnczsgJyAnID09ICpjcDsgY3ArKyApCisgICAgICAgICAgICA7CisgICAgICAgICpjcCA9ICdcMCc7ICAgIC8qIEVuZCBvZiBhcmd2WzBdICovCisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1blBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBteXBzaW5mby5wcl9wc2FyZ3MpOworICAgICAgICBlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzKS0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwgY3ArMSk7CisgICAgICAgICpjcCA9ICcgJzsgICAgIC8qIFJlc3RvcmUgcHJfcHNhcmdzIHZhbHVlICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogWFhYIC0gTm8gaW5mb3JtYXRpb24gcmVnYXJkaW5nIHN5c3RlbSBwcm9jZXNzZXMgdnMgYXBwbGljYXRpb25zCisgICAgICAgICAqLworCisgICAgICAgIHN3aXRjaCAobXlwc2luZm8ucHJfc3RhdGUpIHsKKy8qIFhYWCAtIHdoaWNoIG5hbWVzIHRvIHVzZSA/PyAqLworICAgICAgICBjYXNlIFNBQ1RJVkU6CisgICAgICAgIGNhc2UgU1JVTjoKKyAgICAgICAgY2FzZSBTT05QUk9DOiBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTklORzsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTU1dBUDoKKyAgICAgICAgY2FzZSBTU0xFRVA6CisgICAgICAgIGNhc2UgU1dBSVQ6ICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5BQkxFOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNTVE9QOiAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19OT1RSVU5OQUJMRTsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTSURMOgorICAgICAgICBjYXNlIFNaT01COgorICAgICAgICBkZWZhdWx0OiAgICAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19JTlZBTElEOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICA9IChteXBzaW5mby5wcl90aW1lLnR2X3NlYyAgKiAxMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKG15cHNpbmZvLnByX3RpbWUudHZfbnNlYyAvIDEwMDAwMDAwKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmTWVtICA9IChteXBzaW5mby5wcl9yc3NpemUpOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gKj0gKE1VX1BBR0VTSVpFLzEwMjQpOyAgLyogaW4ga0IgKi8KKyAgICB9CisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIGxvYWRlZCAlZCBlbnRyaWVzXG4iLAorICAgICAgICAgICAgICAgIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NWNlNzcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3BzdGF0LmMKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBzd3J1bl9wc3RhdC5jOgorICogICAgIGhyU1dSdW5UYWJsZSBkYXRhIGFjY2VzczoKKyAqICAgICBwc3RhdF9nZXRkeW5hbWljKCkgaW50ZXJmYWNlIC0gSFBVWAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUFNUQVRfSAorI2RlZmluZSBfUFNUQVQ2NAorI2luY2x1ZGUgPHN5cy9wc3RhdC5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oPgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorbmV0c25tcF9hcmNoX3N3cnVuX2luaXQodm9pZCkKK3sKKyAgICBleHRlcm4gaW50IF9zd3J1bl9tYXg7CisgICAgc3RydWN0IHBzdF9zdGF0aWMgcHN0X2J1ZjsKKworICAgIHBzdGF0X2dldHN0YXRpYyggJnBzdF9idWYsIHNpemVvZihzdHJ1Y3QgcHN0X3N0YXRpYyksIDEsIDApOworICAgIF9zd3J1bl9tYXggPSBwc3RfYnVmLm1heF9wcm9jOworICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBzdHJ1Y3QgcHN0X3N0YXR1cyAgICpwcm9jX3RhYmxlOworICAgIHN0cnVjdCBwc3RfZHluYW1pYyAgIHBzdF9keW47CisgICAgaW50ICAgICAgICAgICAgICAgICAgbnByb2MsIGksIHJjOworICAgIGNoYXIgICAgICAgICAgICAgICAgKmNwMSwgKmNwMjsKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5ICplbnRyeTsKKworICAgIHBzdGF0X2dldGR5bmFtaWMoICZwc3RfZHluLCBzaXplb2Yoc3RydWN0IHBzdF9keW5hbWljKSwgMSwgMCk7CisgICAgbnByb2MgPSBwc3RfZHluLnBzZF9hY3RpdmVwcm9jczsKKyAgICBwcm9jX3RhYmxlID0gKHN0cnVjdCBwc3Rfc3RhdHVzICopIG1hbGxvYyhucHJvYyooc2l6ZW9mKHN0cnVjdCBwc3Rfc3RhdHVzKSkpOworICAgIHBzdGF0X2dldHByb2MocHJvY190YWJsZSwgc2l6ZW9mKHN0cnVjdCBwc3Rfc3RhdHVzKSwgbnByb2MsIDApOworCisgICAgZm9yICggaT0wIDsgaTxucHJvYzsgaSsrICkgeworICAgICAgICBlbnRyeSA9IG5ldHNubXBfc3dydW5fZW50cnlfY3JlYXRlKHByb2NfdGFibGVbaV0ucHN0X3BpZCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworCisgICAgICAgIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1bk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1bk5hbWUpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBwcm9jX3RhYmxlW2ldLnBzdF91Y29tbSk7CisgICAgICAgIC8qCisgICAgICAgICAqICBTcGxpdCBwc3RfY21kIGludG8gdHdvOgorICAgICAgICAgKiAgICAgYXJndlswXSAgIGlzIGhyU1dSdW5QYXRoCisgICAgICAgICAqICAgICBhcmd2WzEuLl0gaXMgaHJTV1J1blBhcmFtZXRlcnMKKyAgICAgICAgICovCisgICAgICAgIGZvciAoIGNwMSA9IHByb2NfdGFibGVbaV0ucHN0X2NtZDsgJyAnID09ICpjcDE7IGNwMSsrICkKKyAgICAgICAgICAgIDsKKyAgICAgICAgKmNwMSA9ICdcMCc7ICAgIC8qIEVuZCBvZiBhcmd2WzBdICovCisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1blBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBwcm9jX3RhYmxlW2ldLnBzdF9jbWQpOworICAgICAgICBlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzKS0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwgY3AxKzEpOworICAgICAgICAqY3AxID0gJyAnOyAgICAgLyogUmVzdG9yZSBwc3RfY21kIHZhbHVlICovCisKKyAgICAgICAgZW50cnktPmhyU1dSdW5UeXBlID0gKFBTX1NZUyAmIHByb2NfdGFibGVbaV0ucHN0X2ZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDIgICAvKiBrZXJuZWwgcHJvY2VzcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA0ICAgLyogIGFwcGxpY2F0aW9uICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKKworICAgICAgICBzd2l0Y2ggKHByb2NfdGFibGVbaV0ucHN0X3N0YXQpIHsKKyAgICAgICAgY2FzZSBQU19SVU46ICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5JTkc7CisgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBTX1NMRUVQOiBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBTX1NUT1A6ICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfTk9UUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBTX0lETEU6CisgICAgICAgIGNhc2UgUFNfWk9NQklFOgorICAgICAgICBjYXNlIFBTX09USEVSOgorICAgICAgICBkZWZhdWx0OiAgICAgICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfSU5WQUxJRDsKKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgID0gcHJvY190YWJsZVtpXS5wc3RfY3B0aWNrc3RvdGFsOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gcHJvY190YWJsZVtpXS5wc3RfcnNzaXplOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gKj0gZ2V0cGFnZXNpemUoKSAvIDEwMjQ7ICAvKiBpbiBrQiAqLworCQkvKiBYWFggLSBDaGVjayB0aGlzIGxhc3QgY2FsY3VsYXRpb24gKi8KKyAgICB9CisgICAgZnJlZShwcm9jX3RhYmxlKTsKKworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2giLCIgbG9hZGVkICVkIGVudHJpZXNcbiIsCisgICAgICAgICAgICAgICAgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjQ0NzAyCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYwpAQCAtMCwwICsxLDI3MiBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBtaWIyYy5jb250YWluZXIuY29uZix2IDEuOCAyMDA2LzA3LzI2IDE1OjU4OjI2IGR0czEyIEV4cCAkCisgKi8KKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaD4KKyNpbmNsdWRlICJoclNXSW5zdGFsbGVkVGFibGUuaCIKKworI2RlZmluZSBNWVRBQkxFICJoclNXSW5zdGFsbGVkVGFibGUiCisKK3N0YXRpYyB2b2lkIF9jYWNoZV9mcmVlKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqbWFnaWMpOworc3RhdGljIGludCBfY2FjaGVfbG9hZChuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKTsKKworLyoqIEluaXRpYWxpemVzIHRoZSBoclNXSW5zdGFsbGVkVGFibGUgbW9kdWxlICovCit2b2lkCitpbml0X2hyU1dJbnN0YWxsZWRUYWJsZSh2b2lkKQoreworICAgIC8qCisgICAgICogaGVyZSB3ZSBpbml0aWFsaXplIGFsbCB0aGUgdGFibGVzIHdlJ3JlIHBsYW5uaW5nIG9uIHN1cHBvcnRpbmcgCisgICAgICovCisgICAgaW5pdGlhbGl6ZV90YWJsZV9oclNXSW5zdGFsbGVkVGFibGUoKTsKK30KKworLyoqIEluaXRpYWxpemUgdGhlIGhyU1dJbnN0YWxsZWRUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfaHJTV0luc3RhbGxlZFRhYmxlKHZvaWQpCit7CisgICAgc3RhdGljIG9pZCAgICAgIGhyU1dJbnN0YWxsZWRUYWJsZV9vaWRbXSA9CisgICAgICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDYsIDMgfTsKKyAgICBzaXplX3QgICAgICAgICAgaHJTV0luc3RhbGxlZFRhYmxlX29pZF9sZW4gPQorICAgICAgICBPSURfTEVOR1RIKGhyU1dJbnN0YWxsZWRUYWJsZV9vaWQpOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZzsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyOworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisgICAgbmV0c25tcF9jYWNoZSAqY2FjaGU7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKworICAgIERFQlVHTVNHVEwoKCJoclNXSW5zdGFsbGVkIiwgImluaXRpYWxpemVcbiIpKTsKKworICAgIHJlZyA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJoclNXSW5zdGFsbGVkVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXSW5zdGFsbGVkVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV0luc3RhbGxlZFRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV0luc3RhbGxlZFRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAoTlVMTCA9PSByZWcpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgY3JlYXRpbmcgaGFuZGxlciByZWdpc3RyYXRpb24gZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImhyU1dJbnN0YWxsZWRUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgY3JlYXRpbmcgY29udGFpbmVyIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKKyAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKKyAgICBpZiAoTlVMTCA9PSB0YWJsZV9pbmZvKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGFsbG9jYXRpbmcgdGFibGUgcmVnaXN0cmF0aW9uIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgICAvKiBpbmRleDogaHJTV0luc3RhbGxlZEluZGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgdGFibGVfaW5mby0+bWluX2NvbHVtbiA9IENPTFVNTl9IUlNXSU5TVEFMTEVESU5ERVg7CisgICAgdGFibGVfaW5mby0+bWF4X2NvbHVtbiA9IENPTFVNTl9IUlNXSU5TVEFMTEVEREFURTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY29udGFpbmVyX3RhYmxlIGhlbHBlcgorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldCh0YWJsZV9pbmZvLCBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFX0NPTlRBSU5FUl9LRVlfTkVUU05NUF9JTkRFWCk7CisgICAgaWYgKE5VTEwgPT0gaGFuZGxlcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBhbGxvY2F0aW5nIHRhYmxlIHJlZ2lzdHJhdGlvbiBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIGhhbmRsZXIpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGluamVjdGluZyBjb250YWluZXJfdGFibGUgaGFuZGxlciBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGhhbmRsZXIgPSBOVUxMOyAvKiByZWcgaGFzIGl0LCB3aWxsIHJldXNlIGJlbG93ICovCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNhY2hlIGhlbHBlcgorICAgICAqLworICAgIGNhY2hlID0gbmV0c25tcF9jYWNoZV9jcmVhdGUoMzAsICAgIC8qIHRpbWVvdXQgaW4gc2Vjb25kcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlX2xvYWQsIF9jYWNoZV9mcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV0luc3RhbGxlZFRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyU1dJbnN0YWxsZWRUYWJsZV9vaWRfbGVuKTsKKworICAgIGlmIChOVUxMID09IGNhY2hlKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGNhY2hlLT5tYWdpYyA9IGNvbnRhaW5lcjsKKworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0KGNhY2hlKTsKKyAgICBpZiAoTlVMTCA9PSBoYW5kbGVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBoYW5kbGVyIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZywgaGFuZGxlcikpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgaW5qZWN0aW5nIGNhY2hlIGhhbmRsZXIgZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBoYW5kbGVyID0gTlVMTDsgLyogcmVnIGhhcyBpdCovCisKKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorCisgICAgcmV0dXJuOyAvKiBvayAqLworCisKKyAgYmFpbDogLyogbm90IG9rICovCisgICAgCisgICAgaWYgKGhhbmRsZXIpCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOworCisgICAgaWYgKGNhY2hlKQorICAgICAgICBuZXRzbm1wX2NhY2hlX2ZyZWUoY2FjaGUpOworCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKworICAgIGlmIChjb250YWluZXIpCisgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CisKKyAgICBpZiAocmVnKSAKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CisKK30KKworLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBoclNXSW5zdGFsbGVkVGFibGUgdGFibGUgKi8KK2ludAoraHJTV0luc3RhbGxlZFRhYmxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKworICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0OworICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOworICAgIG5ldHNubXBfc3dpbnN0X2VudHJ5ICp0YWJsZV9lbnRyeTsKKworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgICAgICAvKgorICAgICAgICAgKiBSZWFkLXN1cHBvcnQgKGFsc28gY292ZXJzIEdldE5leHQgcmVxdWVzdHMpCisgICAgICAgICAqLworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIGZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAobmV0c25tcF9zd2luc3RfZW50cnkgKikKKyAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGVudHJ5IG9yIGluZm8gZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9HRU5FUlIsIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fSFJTV0lOU1RBTExFRElOREVYOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPnN3SW5kZXgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fSFJTV0lOU1RBTExFRE5BTUU6IHsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIHRhYmxlX2VudHJ5LT5zd05hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5zd05hbWVfbGVuKTsKKyAgICAgICAgICAgICAgICB9IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fSFJTV0lOU1RBTExFRElEOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQkpFQ1RfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJm51bGxPaWQsIG51bGxPaWRMZW4pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fSFJTV0lOU1RBTExFRFRZUEU6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+c3dUeXBlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0hSU1dJTlNUQUxMRUREQVRFOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgdGFibGVfZW50cnktPnN3RGF0ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5zd0RhdGVfbGVuKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBBbiB1bnN1cHBvcnRlZC91bnJlYWRhYmxlIGNvbHVtbiAoaWYgYXBwbGljYWJsZSkgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hPQkpFQ1QsIE5VTEwsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBEQVRBIEFDQ0VTUworICoKKyAqIFRoZSBkYXRhIGFjY2VzcyBtZWNoYW5pc20gaGVyZSBpcyByYXRoZXIgc2ltcGxlOiBsZXQgbmV3c25tcF9zd2luc3RfKgorICogdGFrZSBjYXJlIG9mIGl0LgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIGludAorX2NhY2hlX2xvYWQobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICp2bWFnaWMpCit7CisgICAgREVCVUdNU0dUTCgoImhyU1dJbnN0YWxsZWRUYWJsZTpjYWNoZSIsICJsb2FkXG4iKSk7CisKKyAgICBpZiAoKE5VTEwgPT0gY2FjaGUpIHx8IChOVUxMID09IGNhY2hlLT5tYWdpYykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImludmFsaWQgY2FjaGUgZm9yIGhyU1dJbnN0YWxsZWRUYWJsZV9jYWNoZV9sb2FkXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKiBzaG91bGQgb25seSBiZSBjYWxsZWQgZm9yIGFuIGludmFsaWQgb3IgZXhwaXJlZCBjYWNoZSAqLworICAgIG5ldHNubXBfYXNzZXJ0KCgwID09IGNhY2hlLT52YWxpZCkgfHwgKDEgPT0gY2FjaGUtPmV4cGlyZWQpKTsKKworICAgIGNhY2hlLT5tYWdpYyA9CisgICAgICAgIG5ldHNubXBfc3dpbnN0X2NvbnRhaW5lcl9sb2FkKChuZXRzbm1wX2NvbnRhaW5lciAqKSBjYWNoZS0+bWFnaWMsIDApOworCisgICAgcmV0dXJuIDA7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9sb2FkICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKQoreworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjYWNoZSBpbiBoclNXSW5zdGFsbGVkVGFibGVfY2FjaGVfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgREVCVUdNU0dUTCgoImhyU1dJbnN0YWxsZWRUYWJsZTpjYWNoZSIsICJmcmVlXG4iKSk7CisKKyAgICBuZXRzbm1wX3N3aW5zdF9jb250YWluZXJfZnJlZV9pdGVtcygobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPm1hZ2ljKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2ZyZWUgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMWRhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogbWliMmMuY29udGFpbmVyLmNvbmYsdiAxLjggMjAwNi8wNy8yNiAxNTo1ODoyNiBkdHMxMiBFeHAgJAorICovCisjaWZuZGVmIEhSU1dJTlNUQUxMRURUQUJMRV9ICisjZGVmaW5lIEhSU1dJTlNUQUxMRURUQUJMRV9ICisKK2NvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0KQorCisvKgorICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAorICovCit2b2lkICAgICAgICAgICAgaW5pdF9oclNXSW5zdGFsbGVkVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9oclNXSW5zdGFsbGVkVGFibGUodm9pZCk7CitOZXRzbm1wX05vZGVfSGFuZGxlciBoclNXSW5zdGFsbGVkVGFibGVfaGFuZGxlcjsKKworLyoKKyAqIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGhyU1dJbnN0YWxsZWRUYWJsZSAKKyAqLworI2RlZmluZSBDT0xVTU5fSFJTV0lOU1RBTExFRElOREVYCQkxCisjZGVmaW5lIENPTFVNTl9IUlNXSU5TVEFMTEVETkFNRQkJMgorI2RlZmluZSBDT0xVTU5fSFJTV0lOU1RBTExFRElECQkzCisjZGVmaW5lIENPTFVNTl9IUlNXSU5TVEFMTEVEVFlQRQkJNAorI2RlZmluZSBDT0xVTU5fSFJTV0lOU1RBTExFRERBVEUJCTUKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSFJTV0lOU1RBTExFRFRBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA2N2JiMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICA6IG1pYjJjLmNvbnRhaW5lci5jb25mLHYgMS44IDIwMDYvMDcvMjYgMTU6NTg6MjYgZHRzMTIgRXhwICQKKyAqLworLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKyNpbmNsdWRlICJoclNXUnVuUGVyZlRhYmxlLmgiCisjaW5jbHVkZSAiZGF0YV9hY2Nlc3Mvc3dydW4uaCIKKworI2RlZmluZSBNWVRBQkxFICJoclNXUnVuUGVyZlRhYmxlIgorCisvKiogSW5pdGlhbGl6ZXMgdGhlIGhyU1dSdW5QZXJmVGFibGUgbW9kdWxlICovCit2b2lkCitpbml0X2hyU1dSdW5QZXJmVGFibGUodm9pZCkKK3sKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nIAorICAgICAqLworICAgIGluaXRpYWxpemVfdGFibGVfaHJTV1J1blBlcmZUYWJsZSgpOworfQorCitleHRlcm4gb2lkICAgICAgaHJTV1J1blRhYmxlX29pZFtdOworZXh0ZXJuIHNpemVfdCAgIGhyU1dSdW5UYWJsZV9vaWRfbGVuOworCisvKiogSW5pdGlhbGl6ZSB0aGUgaHJTV1J1blBlcmZUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfaHJTV1J1blBlcmZUYWJsZSh2b2lkKQoreworICAgIHN0YXRpYyBvaWQgICAgICBoclNXUnVuUGVyZlRhYmxlX29pZFtdID0KKyAgICAgICAgeyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgNSwgMSB9OworICAgIHNpemVfdCAgICAgICAgICBoclNXUnVuUGVyZlRhYmxlX29pZF9sZW4gPQorICAgICAgICBPSURfTEVOR1RIKGhyU1dSdW5QZXJmVGFibGVfb2lkKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWc7CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcjsKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOworCisgICAgcmVnID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImhyU1dSdW5QZXJmVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXUnVuUGVyZlRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyU1dSdW5QZXJmVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXUnVuUGVyZlRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAoTlVMTCA9PSByZWcpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgY3JlYXRpbmcgaGFuZGxlciByZWdpc3RyYXRpb24gZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOworICAgIGlmIChOVUxMID09IHRhYmxlX2luZm8pIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgYWxsb2NhdGluZyB0YWJsZSByZWdpc3RyYXRpb24gZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgICAvKiBpbmRleDogaHJTV1J1bkluZGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgdGFibGVfaW5mby0+bWluX2NvbHVtbiA9IENPTFVNTl9IUlNXUlVOUEVSRkNQVTsKKyAgICB0YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gQ09MVU1OX0hSU1dSVU5QRVJGTUVNOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjb250YWluZXJfdGFibGUgaGVscGVyCisgICAgICovCisgICAgaGFuZGxlciA9IG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2hhbmRsZXJfZ2V0KHRhYmxlX2luZm8sIG5ldHNubXBfc3dydW5fY29udGFpbmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFX0NPTlRBSU5FUl9LRVlfTkVUU05NUF9JTkRFWCk7CisgICAgaWYgKE5VTEwgPT0gaGFuZGxlcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBhbGxvY2F0aW5nIHRhYmxlIHJlZ2lzdHJhdGlvbiBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIGhhbmRsZXIpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGluamVjdGluZyBjb250YWluZXJfdGFibGUgaGFuZGxlciBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGhhbmRsZXIgPSBOVUxMOyAvKiByZWcgaGFzIGl0LCB3aWxsIHJldXNlIGJlbG93ICovCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNhY2hlIGhlbHBlcgorICAgICAqLworCisgICAgaGFuZGxlciA9IG5ldHNubXBfY2FjaGVfaGFuZGxlcl9nZXQobmV0c25tcF9zd3J1bl9jYWNoZSgpKTsKKyAgICBpZiAoTlVMTCA9PSBoYW5kbGVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBoYW5kbGVyIGZvciAiIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnLCBoYW5kbGVyKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBpbmplY3RpbmcgY2FjaGUgaGFuZGxlciBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGhhbmRsZXIgPSBOVUxMOyAvKiByZWcgaGFzIGl0Ki8KKworICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIHJlZ2lzdGVyaW5nIHRhYmxlIGhhbmRsZXIgZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgcmVnID0gTlVMTDsgLyogaXQgd2FzIGZyZWVkIGluc2lkZSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlICovCisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKKyAgICByZXR1cm47IC8qIG9rICovCisKKworICBiYWlsOiAvKiBub3Qgb2sgKi8KKyAgICAKKyAgICBpZiAoaGFuZGxlcikKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcik7CisKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCisgICAgaWYgKHJlZykgCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOworfQorCisvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIGhyU1dSdW5QZXJmVGFibGUgdGFibGUgKi8KK2ludAoraHJTV1J1blBlcmZUYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisKKyAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGFibGVfaW5mbzsKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5ICp0YWJsZV9lbnRyeTsKKworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgICAgICAvKgorICAgICAgICAgKiBSZWFkLXN1cHBvcnQgKGFsc28gY292ZXJzIEdldE5leHQgcmVxdWVzdHMpCisgICAgICAgICAqLworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIGZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAobmV0c25tcF9zd3J1bl9lbnRyeSAqKQorICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX0dFTkVSUiwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOUEVSRkNQVToKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5oclNXUnVuUGVyZkNQVSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOUEVSRk1FTToKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5oclNXUnVuUGVyZk1lbSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQW4gdW5zdXBwb3J0ZWQvdW5yZWFkYWJsZSBjb2x1bW4gKGlmIGFwcGxpY2FibGUpIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNIT0JKRUNULCBOVUxMLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc5MzYyNwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogbWliMmMuY29udGFpbmVyLmNvbmYsdiAxLjggMjAwNi8wNy8yNiAxNTo1ODoyNiBkdHMxMiBFeHAgJAorICovCisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpZm5kZWYgSFJTV1JVTlBFUkZUQUJMRV9ICisjZGVmaW5lIEhSU1dSVU5QRVJGVEFCTEVfSAorCitjb25maWdfcmVxdWlyZShob3N0L2hyU1dSdW5UYWJsZSkKKworLyoKKyAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKKyAqLwordm9pZCAgICAgICAgICAgIGluaXRfaHJTV1J1blBlcmZUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2hyU1dSdW5QZXJmVGFibGUodm9pZCk7CitOZXRzbm1wX05vZGVfSGFuZGxlciBoclNXUnVuUGVyZlRhYmxlX2hhbmRsZXI7CisKKy8qCisgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBoclNXUnVuUGVyZlRhYmxlIAorICovCisjZGVmaW5lIENPTFVNTl9IUlNXUlVOUEVSRkNQVQkJMQorI2RlZmluZSBDT0xVTU5fSFJTV1JVTlBFUkZNRU0JCTIKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSFJTV1JVTlBFUkZUQUJMRV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDlmNThmCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYwpAQCAtMCwwICsxLDMzNSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBtaWIyYy5jb250YWluZXIuY29uZix2IDEuOCAyMDA2LzA3LzI2IDE1OjU4OjI2IGR0czEyIEV4cCAkCisgKi8KKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oPgorI2luY2x1ZGUgImhyU1dSdW5UYWJsZS5oIgorI2luY2x1ZGUgImRhdGFfYWNjZXNzL3N3cnVuLmgiCisKKyNpbmNsdWRlIDxzaWduYWwuaD4KKworI2RlZmluZSBNWVRBQkxFICJoclNXUnVuVGFibGUiCisKKy8qKiBJbml0aWFsaXplcyB0aGUgaHJTV1J1blRhYmxlIG1vZHVsZSAqLwordm9pZAoraW5pdF9oclNXUnVuVGFibGUodm9pZCkKK3sKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nIAorICAgICAqLworICAgIGluaXRpYWxpemVfdGFibGVfaHJTV1J1blRhYmxlKCk7Cit9CisKK29pZCAgICAgIGhyU1dSdW5UYWJsZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDQsIDIgfTsKK3NpemVfdCAgIGhyU1dSdW5UYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChoclNXUnVuVGFibGVfb2lkKTsKKworLyoqIEluaXRpYWxpemUgdGhlIGhyU1dSdW5UYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfaHJTV1J1blRhYmxlKHZvaWQpCit7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnOworICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOworCisjaWZkZWYgTkVUU05NUF9JTkNMVURFX0hSU1dSVU5fV1JJVEVfU1VQUE9SVAorIyAgZGVmaW5lIFNXUlVOX0FDQ0VTU19MRVZFTCBIQU5ETEVSX0NBTl9SV1JJVEUKKyNlbHNlCisjICBkZWZpbmUgU1dSVU5fQUNDRVNTX0xFVkVMIEhBTkRMRVJfQ0FOX1JPTkxZCisjZW5kaWYKKyAgICByZWcgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbihNWVRBQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXUnVuVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV1J1blRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV1J1blRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNXUlVOX0FDQ0VTU19MRVZFTCk7CisgICAgaWYgKE5VTEwgPT0gcmVnKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGNyZWF0aW5nIGhhbmRsZXIgcmVnaXN0cmF0aW9uIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisgICAgcmVnLT5tb2RlcyB8PSBIQU5ETEVSX0NBTl9OT1RfQ1JFQVRFOworCisgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CisgICAgaWYgKE5VTEwgPT0gdGFibGVfaW5mbykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBhbGxvY2F0aW5nIHRhYmxlIHJlZ2lzdHJhdGlvbiBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywgQVNOX0lOVEVHRVIsICAgLyogaW5kZXg6IGhyU1dSdW5JbmRleCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIHRhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fSFJTV1JVTklOREVYOworICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fSFJTV1JVTlNUQVRVUzsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY29udGFpbmVyX3RhYmxlIGhlbHBlcgorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldCh0YWJsZV9pbmZvLCBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOworICAgIGlmIChOVUxMID09IGhhbmRsZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgYWxsb2NhdGluZyB0YWJsZSByZWdpc3RyYXRpb24gZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnLCBoYW5kbGVyKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBpbmplY3RpbmcgY29udGFpbmVyX3RhYmxlIGhhbmRsZXIgZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBoYW5kbGVyID0gTlVMTDsgLyogcmVnIGhhcyBpdCwgd2lsbCByZXVzZSBiZWxvdyAqLworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjYWNoZSBoZWxwZXIKKyAgICAgKi8KKyAgICBoYW5kbGVyID0gbmV0c25tcF9jYWNoZV9oYW5kbGVyX2dldChuZXRzbm1wX3N3cnVuX2NhY2hlKCkpOworICAgIGlmIChOVUxMID09IGhhbmRsZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNhY2hlIGhhbmRsZXIgZm9yICIgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIGhhbmRsZXIpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGluamVjdGluZyBjYWNoZSBoYW5kbGVyIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisgICAgaGFuZGxlciA9IE5VTEw7IC8qIHJlZyBoYXMgaXQqLworCisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZywgdGFibGVfaW5mbykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIHJldHVybjsgLyogb2sgKi8KKworCisgIGJhaWw6IC8qIG5vdCBvayAqLworICAgIAorICAgIGlmIChoYW5kbGVyKQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyKTsKKworICAgIGlmICh0YWJsZV9pbmZvKQorICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisKKyAgICBpZiAocmVnKSAKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CisKK30KKworLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBoclNXUnVuVGFibGUgdGFibGUgKi8KK2ludAoraHJTV1J1blRhYmxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGFibGVfaW5mbzsKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5ICp0YWJsZV9lbnRyeTsKKworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgICAgICAvKgorICAgICAgICAgKiBSZWFkLXN1cHBvcnQgKGFsc28gY292ZXJzIEdldE5leHQgcmVxdWVzdHMpCisgICAgICAgICAqLworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIGZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAobmV0c25tcF9zd3J1bl9lbnRyeSAqKQorICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX0dFTkVSUiwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOSU5ERVg6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+aHJTV1J1bkluZGV4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0hSU1dSVU5OQU1FOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgdGFibGVfZW50cnktPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXUnVuTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmhyU1dSdW5OYW1lX2xlbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOSUQ6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX09CSkVDVF9JRCwKKyNpZmRlZiBORVRTTk1QX1NXUlVOX0hBVkVfSUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSB0YWJsZV9lbnRyeS0+aHJTV1J1bklELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+aHJTV1J1bklEX2xlbgorI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmbnVsbE9pZCwgbnVsbE9pZExlbgorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOUEFUSDoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIHRhYmxlX2VudHJ5LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV1J1blBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5oclNXUnVuUGF0aF9sZW4pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fSFJTV1JVTlBBUkFNRVRFUlM6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSB0YWJsZV9lbnRyeS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyU1dSdW5QYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyU1dSdW5QYXJhbWV0ZXJzX2xlbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOVFlQRToKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5oclNXUnVuVHlwZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOU1RBVFVTOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmhyU1dSdW5TdGF0dXMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIEFuIHVuc3VwcG9ydGVkL3VucmVhZGFibGUgY29sdW1uIChpZiBhcHBsaWNhYmxlKSAKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSE9CSkVDVCwgTlVMTCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyNpZmRlZiBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9XUklURV9TVVBQT1JUCisgICAgICAgIC8qCisgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKKyAgICAgICAgICovCisgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICBpbnQgcGlkOworICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAobmV0c25tcF9zd3J1bl9lbnRyeSAqKQorICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX0dFTkVSUiwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOU1RBVFVTOgorICAgICAgICAgICAgICAgIGlmICgqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlciAhPSBIUlNXUlVOU1RBVFVTX0lOVkFMSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1dST05HVkFMVUUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGlkID0gcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lW3JlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGgtMV07CisgICAgICAgICAgICAgICAgaWYgKDEgPT0gcGlkKSB7CisgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCJyZWZ1c2luZyB0byBraWxsIHBpZCAxXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX05PQUNDRVNTKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT1RXUklUQUJMRSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKKyAgICAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChuZXRzbm1wX3N3cnVuX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKChOVUxMID09IHRhYmxlX2VudHJ5KSB8fCAoTlVMTCA9PSB0YWJsZV9pbmZvKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0hSU1dSVU5TVEFUVVM6CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9oclNXUnVuU3RhdHVzID0KKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmhyU1dSdW5TdGF0dXM7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmhyU1dSdW5TdGF0dXMgPQorICAgICAgICAgICAgICAgICAgICAqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKKyAgICAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb250YWluZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChuZXRzbm1wX3N3cnVuX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKChOVUxMID09IHRhYmxlX2VudHJ5KSB8fCAoTlVMTCA9PSB0YWJsZV9pbmZvKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0hSU1dSVU5TVEFUVVM6CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmhyU1dSdW5TdGF0dXMgPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2hyU1dSdW5TdGF0dXM7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9oclNXUnVuU3RhdHVzID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIGludCBwaWQ7CisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBwaWQgPSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWVbcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aC0xXTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJoclNXUnVuVGFibGU6Y29tbWl0IiwgImtpbGwoJWQsVEVSTSlcbiIsIHBpZCkpOworICAgICAgICAgICAga2lsbChwaWQsIFNJR1RFUk0pOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQgKi8KKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmggYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYTQ5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogbWliMmMuY29udGFpbmVyLmNvbmYsdiAxLjggMjAwNi8wNy8yNiAxNTo1ODoyNiBkdHMxMiBFeHAgJAorICovCisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpZm5kZWYgSFJTV1JVTlRBQkxFX0gKKyNkZWZpbmUgSFJTV1JVTlRBQkxFX0gKKworY29uZmlnX3JlcXVpcmUoaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bikKK2NvbmZpZ19yZXF1aXJlKGhvc3QvaHJTV1J1blBlcmZUYWJsZSkKKworLyoKKyAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKKyAqLwordm9pZCAgICAgICAgICAgIGluaXRfaHJTV1J1blRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfaHJTV1J1blRhYmxlKHZvaWQpOworTmV0c25tcF9Ob2RlX0hhbmRsZXIgaHJTV1J1blRhYmxlX2hhbmRsZXI7CisKKy8qCisgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBoclNXUnVuVGFibGUgCisgKi8KKyNkZWZpbmUgQ09MVU1OX0hSU1dSVU5JTkRFWAkJMQorI2RlZmluZSBDT0xVTU5fSFJTV1JVTk5BTUUJCTIKKyNkZWZpbmUgQ09MVU1OX0hSU1dSVU5JRAkJMworI2RlZmluZSBDT0xVTU5fSFJTV1JVTlBBVEgJCTQKKyNkZWZpbmUgQ09MVU1OX0hSU1dSVU5QQVJBTUVURVJTCQk1CisjZGVmaW5lIENPTFVNTl9IUlNXUlVOVFlQRQkJNgorI2RlZmluZSBDT0xVTU5fSFJTV1JVTlNUQVRVUwkJNworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIUlNXUlVOVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmMKaW5kZXggN2IxMzY0ZC4uMjQwMzFiZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX2RldmljZS5jCkBAIC02MywxMiArNjMsMTggQEAKICNkZWZpbmUJSFJERVZfRVJST1JTCQk2CiAKIHN0cnVjdCB2YXJpYWJsZTQgaHJkZXZpY2VfdmFyaWFibGVzW10gPSB7Ci0gICAge0hSREVWX0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocmRldmljZSwgMiwgezEsIDF9fSwKLSAgICB7SFJERVZfVFlQRSwgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9ocmRldmljZSwgMiwgezEsIDJ9fSwKLSAgICB7SFJERVZfREVTQ1IsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJkZXZpY2UsIDIsIHsxLCAzfX0sCi0gICAge0hSREVWX0lELCBBU05fT0JKRUNUX0lELCBST05MWSwgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNH19LAotICAgIHtIUkRFVl9TVEFUVVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNX19LAotICAgIHtIUkRFVl9FUlJPUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNn19CisgICAge0hSREVWX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmRldmljZSwgMiwgezEsIDF9fSwKKyAgICB7SFJERVZfVFlQRSwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmRldmljZSwgMiwgezEsIDJ9fSwKKyAgICB7SFJERVZfREVTQ1IsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJkZXZpY2UsIDIsIHsxLCAzfX0sCisgICAge0hSREVWX0lELCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNH19LAorICAgIHtIUkRFVl9TVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNX19LAorICAgIHtIUkRFVl9FUlJPUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNn19CiB9Owogb2lkICAgICAgICAgICAgIGhyZGV2aWNlX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDMsIDIgfTsKIApAQCAtMTkxLDcgKzE5Nyw3IEBACiAgICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIG5ld25hbWUsCiAgICAgICAgICAgICgoaW50KSB2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOwogICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7Ci0gICAgKndyaXRlX21ldGhvZCA9IDA7CisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsKICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgLyogZGVmYXVsdCB0byAnbG9uZycgcmVzdWx0cyAqLwogCiAgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfZGV2aWNlIiwgIi4uLiBnZXQgZGV2aWNlIHN0YXRzICIpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMKaW5kZXggZjM2NzliNS4uNzcyNWZhOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMKQEAgLTIsNiArMiwxNiBAQAogICogIEhvc3QgUmVzb3VyY2VzIE1JQiAtIGRpc2sgZGV2aWNlIGdyb3VwIGltcGxlbWVudGF0aW9uIC0gaHJfZGlzay5jCiAgKgogICovCisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgImhvc3RfcmVzLmgiCkBAIC02MSwxMCArNzEsMjMgQEAKICMgZW5kaWYKICNlbmRpZgogCisjaWYgZGVmaW5lZChIQVZFX1JFR0VYX0gpICYmIGRlZmluZWQoSEFWRV9SRUdDT01QKQorI2luY2x1ZGUgPHJlZ2V4Lmg+CisjZW5kaWYKKwogI2lmIEhBVkVfTElNSVRTX0gKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNlbmRpZgogCisjaWZkZWYgZGFyd2luCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxJT0tpdC9JT0tpdExpYi5oPgorI2luY2x1ZGUgPElPS2l0L3N0b3JhZ2UvSU9CbG9ja1N0b3JhZ2VEcml2ZXIuaD4KKyNpbmNsdWRlIDxJT0tpdC9zdG9yYWdlL0lPTWVkaWEuaD4KKyNpbmNsdWRlIDxJT0tpdC9JT0JTRC5oPgorI2luY2x1ZGUgPERpc2tBcmJpdHJhdGlvbi9EQURpc2suaD4KKyNlbmRpZgorCiAjaWZkZWYgbGludXgKIC8qCiAgKiBkZWZpbmUgQkxLR0VUU0laRSBmcm9tIDxsaW51eC9mcy5oPjoKQEAgLTc5LDYgKzEwMiwyNyBAQAogCiAjZGVmaW5lIEhSRF9NT05PVE9OSUNBTExZX0lOQ1JFQVNJTkcKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGNvbnN0YW50cyBmb3IgZW51bXMgZm9yIHRoZSBNSUIgbm9kZQorICogaHJEaXNrU3RvcmFnZUFjY2VzcyAoSU5URUdFUiAvIEFTTl9JTlRFR0VSKQorICovCisjZGVmaW5lIEhSRElTS1NUT1JBR0VBQ0NFU1NfUkVBRFdSSVRFICAxCisjZGVmaW5lIEhSRElTS1NUT1JBR0VBQ0NFU1NfUkVBRE9OTFkgIDIKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCisgKiBockRpc2tTdG9yYWdlTWVkaWEgKElOVEVHRVIgLyBBU05fSU5URUdFUikKKyAqLworI2RlZmluZSBIUkRJU0tTVE9SQUdFTUVESUFfT1RIRVIgIDEKKyNkZWZpbmUgSFJESVNLU1RPUkFHRU1FRElBX1VOS05PV04gIDIKKyNkZWZpbmUgSFJESVNLU1RPUkFHRU1FRElBX0hBUkRESVNLICAzCisjZGVmaW5lIEhSRElTS1NUT1JBR0VNRURJQV9GTE9QUFlESVNLICA0CisjZGVmaW5lIEhSRElTS1NUT1JBR0VNRURJQV9PUFRJQ0FMRElTS1JPTSAgNQorI2RlZmluZSBIUkRJU0tTVE9SQUdFTUVESUFfT1BUSUNBTERJU0tXT1JNICA2CisjZGVmaW5lIEhSRElTS1NUT1JBR0VNRURJQV9PUFRJQ0FMRElTS1JXICA3CisjZGVmaW5lIEhSRElTS1NUT1JBR0VNRURJQV9SQU1ESVNLICA4CisKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCiAJICogIEtlcm5lbCAmIGludGVyZmFjZSBpbmZvcm1hdGlvbiwKQEAgLTEzMiw5ICsxNzYsMjUgQEAKIHN0YXRpYyBzdHJ1Y3QgZGlza2xhYmVsIEhSRF9pbmZvOwogI2VuZGlmCiAKKyNpZmRlZiBkYXJ3aW4KK3N0YXRpYyBpbnQ2NF90ICBIUkRfY2FwOworc3RhdGljIGludCAgICAgIEhSRF9hY2Nlc3M7CitzdGF0aWMgaW50ICAgICAgSFJEX3R5cGU7CitzdGF0aWMgaW50ICAgICAgSFJEX3JlbW92ZWJsZTsKK3N0YXRpYyBjaGFyICAgICBIUkRfbW9kZWxbNDBdOworc3RhdGljIGludCAgICAgIEhSRF9zYXZlZF9hY2Nlc3M7CitzdGF0aWMgaW50ICAgICAgSFJEX3NhdmVkX3R5cGU7CitzdGF0aWMgaW50ICAgICAgSFJEX3NhdmVkX3JlbW92ZWJsZTsKK3N0YXRpYyBpbnQgX2dldF90eXBlX2Zyb21fcHJvdG9jb2woIGNvbnN0IGNoYXIgKnByb3QgKTsKK3N0YXRpYyBpbnQgX2dldF90eXBlX3ZhbHVlKCBjb25zdCBjaGFyICpzdHJfdHlwZSApOworI2VuZGlmCisKIHN0YXRpYyB2b2lkICAgICBwYXJzZV9kaXNrX2NvbmZpZyhjb25zdCBjaGFyICosIGNoYXIgKik7CiBzdGF0aWMgdm9pZCAgICAgZnJlZV9kaXNrX2NvbmZpZyh2b2lkKTsKIAorc3RhdGljIHZvaWQgICAgIEFkZF9MVk1fRGlza3Modm9pZCk7CitzdGF0aWMgdm9pZCAgICAgUmVtb3ZlX0xWTV9EaXNrcyh2b2lkKTsKKwogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKIAkgKiAgSW5pdGlhbGlzYXRpb24gJiBjb21tb24gaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCkBAIC0xNDcsMTAgKzIwNywxNCBAQAogI2RlZmluZQlIUkRJU0tfQ0FQQUNJVFkJCTQKIAogc3RydWN0IHZhcmlhYmxlNCBocmRpc2tfdmFyaWFibGVzW10gPSB7Ci0gICAge0hSRElTS19BQ0NFU1MsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyZGlzaywgMiwgezEsIDF9fSwKLSAgICB7SFJESVNLX01FRElBLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocmRpc2ssIDIsIHsxLCAyfX0sCi0gICAge0hSRElTS19SRU1PVkVBQkxFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocmRpc2ssIDIsIHsxLCAzfX0sCi0gICAge0hSRElTS19DQVBBQ0lUWSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJkaXNrLCAyLCB7MSwgNH19CisgICAge0hSRElTS19BQ0NFU1MsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyZGlzaywgMiwgezEsIDF9fSwKKyAgICB7SFJESVNLX01FRElBLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmRpc2ssIDIsIHsxLCAyfX0sCisgICAge0hSRElTS19SRU1PVkVBQkxFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmRpc2ssIDIsIHsxLCAzfX0sCisgICAge0hSRElTS19DQVBBQ0lUWSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJkaXNrLCAyLCB7MSwgNH19CiB9Owogb2lkICAgICAgICAgICAgIGhyZGlza192YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAzLCA2IH07CiAKQEAgLTE3Miw2ICsyMzYsOSBAQAogICAgIEFkZF9IUl9EaXNrX2VudHJ5KCIvZGV2L3NkJWMlZCIsIC0xLCAtMSwgJ2EnLCAncCcsICIvZGV2L3NkJWMiLCAxLCAxNSk7CiAgICAgQWRkX0hSX0Rpc2tfZW50cnkoIi9kZXYvbWQlZCIsIC0xLCAtMSwgMCwgMywgIi9kZXYvbWQlZCIsIDAsIDApOwogICAgIEFkZF9IUl9EaXNrX2VudHJ5KCIvZGV2L2ZkJWQiLCAtMSwgLTEsIDAsIDEsICIvZGV2L2ZkJWQiLCAwLCAwKTsKKworICAgIEFkZF9MVk1fRGlza3MoKTsKKwogI2VsaWYgZGVmaW5lZChocHV4KQogI2lmIGRlZmluZWQoaHB1eDEwKSB8fCBkZWZpbmVkKGhwdXgxMSkKICAgICBBZGRfSFJfRGlza19lbnRyeSgiL2Rldi9yZHNrL2MlZHQleGQlZCIsIDAsIDEsIDAsIDE1LApAQCAtMTg1LDYgKzI1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgIi9kZXYvcmRzay9jJWR0JWRkMHMwIiwgMCwgNyk7CiAgICAgQWRkX0hSX0Rpc2tfZW50cnkoIi9kZXYvcmRzay9jJWRkJWRzJWQiLCAwLCA3LCAwLCAxNSwKICAgICAgICAgICAgICAgICAgICAgICAiL2Rldi9yZHNrL2MlZGQlZHMwIiwgMCwgNyk7CisjZWxpZiBkZWZpbmVkKGRhcndpbikKKyAgICBBZGRfSFJfRGlza19lbnRyeSgiL2Rldi9kaXNrJWRzJWQiLCAtMSwgLTEsIDAsIDMyLCAiL2Rldi9kaXNrJWQiLCAxLCAzMik7CiAjZWxpZiBkZWZpbmVkKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGZyZWVic2Q1KQogICAgIEFkZF9IUl9EaXNrX2VudHJ5KCIvZGV2L2FkJWRzJWQlYyIsIDAsIDEsIDEsIDQsICIvZGV2L2FkJWRzJWQiLCAnYScsICdoJyk7CiAgICAgQWRkX0hSX0Rpc2tfZW50cnkoIi9kZXYvZGElZHMlZCVjIiwgMCwgMSwgMSwgNCwgIi9kZXYvZGElZHMlZCIsICdhJywgJ2gnKTsKQEAgLTIxNSw2ICsyODQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlX2Rpc2tfY29uZmlnLCAibmFtZSIpOwogfQogCit2b2lkCitzaHV0ZG93bl9ocl9kaXNrKHZvaWQpCit7CisgICAgUmVtb3ZlX0xWTV9EaXNrcygpOworfQorCiAjZGVmaW5lIElURU1fU1RSSU5HCTEKICNkZWZpbmUgSVRFTV9TRVQJMgogI2RlZmluZSBJVEVNX1NUQVIJMwpAQCAtMjQwLDEyICszMTUsMTIgQEAKIHN0YXRpYyB2b2lkCiBwYXJzZV9kaXNrX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSAgICBjb25mX2Rpc2tfbGlzdCAqZF9uZXcgPSAwOwotICAgIGNvbmZfZGlza19pdGVtICpkaV9jdXJyID0gMDsKLSAgICBkZXRhaWxzX3NldCAgICAqZF9zZXQgPSAwOwotICAgIGNoYXIgICAgICAgICAgICpuYW1lID0gMCwgKnAgPSAwLCAqZF9zdHIgPSAwLCBjOworICAgIGNvbmZfZGlza19saXN0ICpkX25ldyA9IE5VTEw7CisgICAgY29uZl9kaXNrX2l0ZW0gKmRpX2N1cnIgPSBOVUxMOworICAgIGRldGFpbHNfc2V0ICAgICpkX3NldCA9IE5VTEw7CisgICAgY2hhciAgICAgICAgICAgKm5hbWUgPSBOVUxMLCAqcCA9IE5VTEwsICpkX3N0ciA9IE5VTEwsIGM7CiAgICAgdW5zaWduZWQgaW50ICAgIGksIG5lZywgYzEsIGMyOwotICAgIGNoYXIgICAgICAgICAgICpzdCA9IDA7CisgICAgY2hhciAgICAgICAgICAgKnN0ID0gTlVMTDsKIAogICAgIG5hbWUgPSBzdHJ0b2tfcihjcHRyLCAiIFx0IiwgJnN0KTsKICAgICBpZiAoIW5hbWUpIHsKQEAgLTQ4Miw2ICs1NTcsNyBAQAogICAgIEluaXRfSFJfRGlzaygpOwogICAgIGZvciAoOzspIHsKICAgICAgICAgZGlza19pZHggPSBHZXRfTmV4dF9IUl9EaXNrKCk7CisgICAgICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX2Rpc2siLCAiLi4uIGluZGV4ICVkXG4iLCBkaXNrX2lkeCkpOwogICAgICAgICBpZiAoZGlza19pZHggPT0gLTEpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgbmV3bmFtZVtIUkRJU0tfRU5UUllfTkFNRV9MRU5HVEhdID0gZGlza19pZHg7CkBAIC01MTIsNyArNTg4LDcgQEAKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbmV3bmFtZSwKICAgICAgICAgICAgKChpbnQpIHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAKICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9kaXNrIiwgIi4uLiBnZXQgZGlzayBzdGF0cyAiKSk7CkBAIC02MDEsNyArNjc3LDcgQEAKIAogICAgIHdoaWxlIChmaXJzdF9jdGwgPD0gbGFzdF9jdGwpIHsKICAgICAgIGZvciAobG9kZXYgPSBmaXJzdF9kZXY7Ci0gICAgICAgICAgIGxvZGV2IDwgbGFzdF9kZXYgJiYgTUFYX05VTUJFUl9ESVNLX1RZUEVTID4gSFJfbnVtYmVyX2Rpc2tfdHlwZXM7CisgICAgICAgICAgIGxvZGV2IDw9IGxhc3RfZGV2ICYmIE1BWF9OVU1CRVJfRElTS19UWVBFUyA+IEhSX251bWJlcl9kaXNrX3R5cGVzOwogICAgICAgICAgICBsb2RldiArPSAoMStNQVhfRElTS1NfUEVSX1RZUEUpLCBIUl9udW1iZXJfZGlza190eXBlcysrKQogICAgICAgewogICAgICAgICBuYnJfY3JlYXRlZCsrOwpAQCAtNjU2LDE0ICs3MzIsMTQgQEAKIGludAogR2V0X05leHRfSFJfRGlzayh2b2lkKQogewotICAgIGNoYXIgICAgICAgICAgICBzdHJpbmdbMTAyNF07CisgICAgY2hhciAgICAgICAgICAgIHN0cmluZ1tQQVRIX01BWCsxXTsKICAgICBpbnQgICAgICAgICAgICAgZmQsIHJlc3VsdDsKICAgICBpbnQgICAgICAgICAgICAgaWluZGV4OwogICAgIGludCAgICAgICAgICAgICBtYXhfZGlza3M7CiAgICAgdGltZV90ICAgICAgICAgIG5vdzsKIAogICAgIEhSRF9pbmRleCsrOwotICAgICh2b2lkICopIHRpbWUoJm5vdyk7CisgICAgdGltZSgmbm93KTsKICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9kaXNrIiwgIk5leHRfRGlzayB0eXBlICVkIG9mICVkXG4iLAogICAgICAgICAgICAgICAgIEhSRF90eXBlX2luZGV4LCBIUl9udW1iZXJfZGlza190eXBlcykpOwogICAgIHdoaWxlIChIUkRfdHlwZV9pbmRleCA8IEhSX251bWJlcl9kaXNrX3R5cGVzKSB7CkBAIC02OTcsNiArNzczLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2tfZGV2aWNlc1tIUkRfdHlwZV9pbmRleF0uZGlza19jb250cm9sbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgZGlza19kZXZpY2VzW0hSRF90eXBlX2luZGV4XS5kaXNrX2RldmljZV9maXJzdCArCiAgICAgICAgICAgICAgICAgICAgICAgICBIUkRfaW5kZXgpOworCSAgICB9IGVsc2UgaWYgKGRpc2tfZGV2aWNlc1tIUkRfdHlwZV9pbmRleF0uZGlza19kZXZpY2VfZmlyc3QgPT0gZGlza19kZXZpY2VzW0hSRF90eXBlX2luZGV4XS5kaXNrX2RldmljZV9sYXN0KSB7CisJCS8qIGV4YWN0IGRldmljZSBuYW1lICovCisJCXNucHJpbnRmKHN0cmluZywgc2l6ZW9mKHN0cmluZyktMSwgIiVzIiwgZGlza19kZXZpY2VzW0hSRF90eXBlX2luZGV4XS5kaXNrX2RldmZ1bGxfc3RyaW5nKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgc25wcmludGYoc3RyaW5nLCBzaXplb2Yoc3RyaW5nKS0xLAogICAgICAgICAgICAgICAgICAgICAgICAgZGlza19kZXZpY2VzW0hSRF90eXBlX2luZGV4XS5kaXNrX2RldmZ1bGxfc3RyaW5nLApAQCAtNzQ3LDYgKzgyNiwxMiBAQAogICAgICAgICAgICAgICAgICAgICBIUkRfaGlzdG9yeVtpaW5kZXhdID0gMDsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgoSFJERVZfRElTSyA8PCBIUkRFVl9UWVBFX1NISUZUKSArIGlpbmRleCk7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX2Rpc2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXRfTmV4dF9IUl9EaXNrOiBjYW4ndCBxdWVyeSAlc1xuIiwgc3RyaW5nKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9kaXNrIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0X05leHRfSFJfRGlzazogY2FuJ3Qgb3BlbiAlc1xuIiwgc3RyaW5nKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBIUkRfaGlzdG9yeVtpaW5kZXhdID0gbm93OwogICAgICAgICAgICAgSFJEX2luZGV4Kys7CkBAIC03OTksNiArODg0LDYyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZmRlZiBkYXJ3aW4KK2ludAorR2V0X0hSX0Rpc2tfTGFiZWwoY2hhciAqc3RyaW5nLCBzaXplX3Qgc3RyX2xlbiwgY29uc3QgY2hhciAqZGV2ZnVsbCkKK3sKKyAgICBEQVNlc3Npb25SZWYgICAgICAgIHNlc3NfcmVmOworICAgIERBRGlza1JlZiAgICAgICAgICAgZGlzazsKKyAgICBDRkRpY3Rpb25hcnlSZWYgICAgIGRlc2M7CisgICAgQ0ZTdHJpbmdSZWYgICAgICAgICBzdHJfcmVmOworICAgIENGU3RyaW5nRW5jb2RpbmcgICAgc3lzX2VuY29kaW5nID0gQ0ZTdHJpbmdHZXRTeXN0ZW1FbmNvZGluZygpOworCisgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfZGlzayIsICJEaXNrIExhYmVsIHR5cGUgJXNcbiIsIGRldmZ1bGwpKTsKKworICAgIHNlc3NfcmVmID0gREFTZXNzaW9uQ3JlYXRlKCBOVUxMICk7CisgICAgaWYgKE5VTEwgPT0gc2Vzc19yZWYpIHsKKyAgICAgICAgc3RybGNweShzdHJpbmcsIGRldmZ1bGwsIHN0cl9sZW4pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZGlzayA9IERBRGlza0NyZWF0ZUZyb21CU0ROYW1lKCBOVUxMLCBzZXNzX3JlZiwgZGV2ZnVsbCApOworICAgIGlmIChOVUxMID09IGRpc2spIHsKKyAgICAgICAgQ0ZSZWxlYXNlKHNlc3NfcmVmKTsKKyAgICAgICAgc3RybGNweShzdHJpbmcsIGRldmZ1bGwsIHN0cl9sZW4pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZGVzYyA9IERBRGlza0NvcHlEZXNjcmlwdGlvbiggZGlzayApOworICAgIGlmIChOVUxMID09IGRlc2MpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImRpc2ttZ3I6IGNvdWxkbid0IGdldCBkaXNrIGRlc2NyaXB0aW9uIGZvciAlcywgc2tpcHBpbmdcbiIsCisgICAgICAgICAgICAgICAgIGRldmZ1bGwpOworICAgICAgICBDRlJlbGVhc2UoZGlzayk7CisgICAgICAgIENGUmVsZWFzZShzZXNzX3JlZik7CisgICAgICAgIHN0cmxjcHkoc3RyaW5nLCBkZXZmdWxsLCBzdHJfbGVuKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKiBtb2RlbCAqLworICAgIHN0cl9yZWYgPSAoQ0ZTdHJpbmdSZWYpCisgICAgICAgIENGRGljdGlvbmFyeUdldFZhbHVlKGRlc2MsIGtEQURpc2tEZXNjcmlwdGlvbk1lZGlhTmFtZUtleSk7CisgICAgaWYgKHN0cl9yZWYpIHsKKyAgICAgICAgc3RybGNweShzdHJpbmcsIENGU3RyaW5nR2V0Q1N0cmluZ1B0cihzdHJfcmVmLCBzeXNfZW5jb2RpbmcpLAorICAgICAgICAgICAgICAgIHN0cl9sZW4pOworICAgICAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkaXNrbWdyOmRhcndpbiIsICIgbmFtZSAlc1xuIiwgc3RyaW5nKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdHJsY3B5KHN0cmluZywgZGV2ZnVsbCwgc3RyX2xlbik7CisgICAgfQorICAgIAorICAgIENGUmVsZWFzZShkaXNrKTsKKyAgICBDRlJlbGVhc2UoZGVzYyk7CisgICAgQ0ZSZWxlYXNlKHNlc3NfcmVmKTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBzdGF0aWMgdm9pZAogU2F2ZV9IUl9EaXNrX1NwZWNpZmljKHZvaWQpCiB7CkBAIC04MjAsNiArOTYxLDEzIEBACiAjaWZkZWYgRElPQ0dESU5GTwogICAgIEhSRF9zYXZlZENhcGFjaXR5ID0gSFJEX2luZm8uZF9zZWNwZXJ1bml0IC8gMjsKICNlbmRpZgorI2lmZGVmIGRhcndpbgorICAgIEhSRF9zYXZlZENhcGFjaXR5ID0gSFJEX2NhcCAvIDEwMjQ7CisgICAgSFJEX3NhdmVkX2FjY2VzcyA9IEhSRF9hY2Nlc3M7CisgICAgSFJEX3NhdmVkX3R5cGUgPSBIUkRfdHlwZTsKKyAgICBIUkRfc2F2ZWRfcmVtb3ZlYmxlID0gSFJEX3JlbW92ZWJsZTsKKyNlbmRpZgorCiB9CiAKIHN0YXRpYyB2b2lkCkBAIC04MzksNiArOTg3LDkgQEAKICAgICBzdHJsY3B5KEhSRF9zYXZlZE1vZGVsLCBka3R5cGVuYW1lc1tIUkRfaW5mby5kX3R5cGVdLAogICAgICAgICAgICAgc2l6ZW9mKEhSRF9zYXZlZE1vZGVsKSk7CiAjZW5kaWYKKyNpZmRlZiBkYXJ3aW4KKyAgICBzdHJsY3B5KEhSRF9zYXZlZE1vZGVsLCBIUkRfbW9kZWwsIHNpemVvZihIUkRfc2F2ZWRNb2RlbCkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICoKQEAgLTg3MSw3ICsxMDIyLDcgQEAKICNpZmRlZiBIQVZFX0xJTlVYX0hEUkVHX0gKICAgICBpZiAoSFJEX3R5cGVfaW5kZXggPT0gMCkgICAgLyogSURFIGhhcmQgZGlzayAqLwogICAgICAgICByZXN1bHQgPSBpb2N0bChmZCwgSERJT19HRVRfSURFTlRJVFksICZIUkRfaW5mbyk7Ci0gICAgZWxzZSBpZiAoSFJEX3R5cGVfaW5kZXggPD0gMikgeyAgICAgLyogU0NTSSBoYXJkIGRpc2sgYW5kIG1kIGRldmljZXMgKi8KKyAgICBlbHNlIGlmIChIUkRfdHlwZV9pbmRleCAhPSAzKSB7ICAgICAvKiBTQ1NJIGhhcmQgZGlzaywgbWQgYW5kIExWTSBkZXZpY2VzICovCiAgICAgICAgIGxvbmcgICAgICAgICAgICBoOwogICAgICAgICByZXN1bHQgPSBpb2N0bChmZCwgQkxLR0VUU0laRSwgJmgpOwogICAgICAgICBpZiAocmVzdWx0ICE9IC0xICYmIEhSRF90eXBlX2luZGV4ID09IDIgJiYgaCA9PSAwTCkKQEAgLTg3OSwxMCArMTAzMCwxMyBAQAogICAgICAgICBpZiAocmVzdWx0ICE9IC0xKSB7CiAgICAgICAgICAgICBIUkRfaW5mby5sYmFfY2FwYWNpdHkgPSBoOwogICAgICAgICAgICAgaWYgKEhSRF90eXBlX2luZGV4ID09IDEpCi0gICAgICAgICAgICAgICAgc25wcmludGYoIEhSRF9pbmZvLm1vZGVsLCBzaXplb2YoSFJEX2luZm8ubW9kZWwpLTEsCisgICAgICAgICAgICAgICAgc25wcmludGYoIChjaGFyICopIEhSRF9pbmZvLm1vZGVsLCBzaXplb2YoSFJEX2luZm8ubW9kZWwpLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlNDU0kgZGlzayAoJXMpIiwgZGV2ZnVsbCk7CisJICAgIGVsc2UgaWYgKEhSRF90eXBlX2luZGV4ID49IDQpCisJCXNucHJpbnRmKCAoY2hhciAqKSBIUkRfaW5mby5tb2RlbCwgc2l6ZW9mKEhSRF9pbmZvLm1vZGVsKS0xLAorCQkJICJMVk0gdm9sdW1lICglcykiLCBkZXZmdWxsICsgc3RybGVuKCIvZGV2L21hcHBlci8iKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc25wcmludGYoIEhSRF9pbmZvLm1vZGVsLCBzaXplb2YoSFJEX2luZm8ubW9kZWwpLTEsCisgICAgICAgICAgICAgICAgc25wcmludGYoIChjaGFyICopIEhSRF9pbmZvLm1vZGVsLCBzaXplb2YoSFJEX2luZm8ubW9kZWwpLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAiUkFJRCBkaXNrICglcykiLCBkZXZmdWxsKTsKICAgICAgICAgICAgIEhSRF9pbmZvLm1vZGVsWyBzaXplb2YoSFJEX2luZm8ubW9kZWwpLTEgXSA9IDA7CiAgICAgICAgICAgICBIUkRfaW5mby5jb25maWcgPSAwOwpAQCAtODk0LDYgKzEwNDgsMTAzIEBACiAgICAgcmVzdWx0ID0gaW9jdGwoZmQsIERJT0NHRElORk8sICZIUkRfaW5mbyk7CiAjZW5kaWYKIAorI2lmZGVmIGRhcndpbgorICAgIERBU2Vzc2lvblJlZiAgICAgICAgc2Vzc19yZWY7CisgICAgREFEaXNrUmVmICAgICAgICAgICBkaXNrOworICAgIENGRGljdGlvbmFyeVJlZiAgICAgZGVzYzsKKyAgICBDRlN0cmluZ1JlZiAgICAgICAgIHN0cl9yZWY7CisgICAgQ0ZOdW1iZXJSZWYgICAgICAgICBudW1iZXJfcmVmOworICAgIENGQm9vbGVhblJlZiAgICAgICAgYm9vbF9yZWY7CisgICAgQ0ZTdHJpbmdFbmNvZGluZyAgICBzeXNfZW5jb2RpbmcgPSBDRlN0cmluZ0dldFN5c3RlbUVuY29kaW5nKCk7CisKKyAgICBzZXNzX3JlZiA9IERBU2Vzc2lvbkNyZWF0ZSggTlVMTCApOworICAgIGlmIChOVUxMID09IHNlc3NfcmVmKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBkaXNrID0gREFEaXNrQ3JlYXRlRnJvbUJTRE5hbWUoIE5VTEwsIHNlc3NfcmVmLCBkZXZmdWxsICk7CisgICAgaWYgKE5VTEwgPT0gZGlzaykgeworICAgICAgICBDRlJlbGVhc2Uoc2Vzc19yZWYpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZGVzYyA9IERBRGlza0NvcHlEZXNjcmlwdGlvbiggZGlzayApOworICAgIGlmIChOVUxMID09IGRlc2MpIHsKKyAgICAgICAgQ0ZSZWxlYXNlKGRpc2spOworICAgICAgICBDRlJlbGVhc2Uoc2Vzc19yZWYpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbnVtYmVyX3JlZiA9IChDRk51bWJlclJlZikKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVzYywga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFTaXplS2V5KTsKKyAgICBpZiAobnVtYmVyX3JlZikKKyAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW1iZXJfcmVmLCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmSFJEX2NhcCk7CisgICAgZWxzZQorICAgICAgICBIUkRfY2FwID0gMDsKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkaXNrbWdyOmRhcndpbiIsICIgc2l6ZSAlbGxkXG4iLCBIUkRfY2FwKSk7CisKKyAgICAvKiogd3JpdGFibGU/ICAqLworICAgIGJvb2xfcmVmID0gKENGQm9vbGVhblJlZikKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVzYywga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFXcml0YWJsZUtleSk7CisgICAgaWYgKGJvb2xfcmVmKSB7CisgICAgICAgIEhSRF9hY2Nlc3MgPSBDRkJvb2xlYW5HZXRWYWx1ZShib29sX3JlZik7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgSFJEX2FjY2VzcyA9IDA7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZGlza21ncjpkYXJ3aW4iLCAiIHdyaXRhYmxlICVkXG4iLAorICAgICAgICAgICAgICAgIEhSRF9hY2Nlc3MpKTsKKworICAgIC8qKiByZW1vdmFibGU/ICAqLworICAgIGJvb2xfcmVmID0gKENGQm9vbGVhblJlZikKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVzYywga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFSZW1vdmFibGVLZXkpOworICAgIGlmIChib29sX3JlZikgeworICAgICAgICBIUkRfcmVtb3ZlYmxlID0gQ0ZCb29sZWFuR2V0VmFsdWUoYm9vbF9yZWYpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIEhSRF9yZW1vdmVibGUgPSAwOworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRpc2ttZ3I6ZGFyd2luIiwgIiByZW1vdmFibGUgJWRcbiIsCisgICAgICAgICAgICAgICAgSFJEX3JlbW92ZWJsZSkpOworCisgICAgLyoqIGdldCB0eXBlICovCisgICAgc3RyX3JlZiA9IChDRlN0cmluZ1JlZikKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVzYywga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFUeXBlS2V5KTsKKyAgICBpZiAoc3RyX3JlZikgeworICAgICAgICBIUkRfdHlwZSA9IF9nZXRfdHlwZV92YWx1ZShDRlN0cmluZ0dldENTdHJpbmdQdHIoc3RyX3JlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c19lbmNvZGluZykpOworICAgICAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkaXNrbWdyOmRhcndpbiIsICIgdHlwZSAlcyAvICVkXG4iLAorICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ0dldENTdHJpbmdQdHIoc3RyX3JlZiwgc3lzX2VuY29kaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgSFJEX3R5cGUpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0cl9yZWYgPSAoQ0ZTdHJpbmdSZWYpCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZXNjLCBrREFEaXNrRGVzY3JpcHRpb25EZXZpY2VQcm90b2NvbEtleSk7CisgICAgICAgIGlmIChzdHJfcmVmKSB7CisgICAgICAgICAgICBIUkRfdHlwZSA9IAorICAgICAgICAgICAgICAgIF9nZXRfdHlwZV9mcm9tX3Byb3RvY29sKENGU3RyaW5nR2V0Q1N0cmluZ1B0cihzdHJfcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNfZW5jb2RpbmcpKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRpc2ttZ3I6ZGFyd2luIiwgIiB0eXBlICVzIC8gJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ0dldENTdHJpbmdQdHIoc3RyX3JlZiwgc3lzX2VuY29kaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEhSRF90eXBlKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSFJEX3R5cGUgPSBIUkRJU0tTVE9SQUdFTUVESUFfVU5LTk9XTjsKKyAgICB9CisKKyAgICAvKiogbW9kZWwgKi8KKyAgICBzdHJfcmVmID0gKENGU3RyaW5nUmVmKQorICAgICAgICBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZXNjLCBrREFEaXNrRGVzY3JpcHRpb25EZXZpY2VNb2RlbEtleSk7CisgICAgaWYgKHN0cl9yZWYpIHsKKyAgICAgICAgc3RybGNweShIUkRfbW9kZWwsIENGU3RyaW5nR2V0Q1N0cmluZ1B0cihzdHJfcmVmLCBzeXNfZW5jb2RpbmcpLAorICAgICAgICAgICAgICAgIHNpemVvZihIUkRfbW9kZWwpKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZGlza21ncjpkYXJ3aW4iLCAiIG1vZGVsICVzXG4iLCBIUkRfbW9kZWwpKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBIUkRfbW9kZWxbMF0gPSAwOworICAgIENGUmVsZWFzZShkaXNrKTsKKyAgICBDRlJlbGVhc2UoZGVzYyk7CisgICAgQ0ZSZWxlYXNlKHNlc3NfcmVmKTsKKyAgICByZXN1bHQgPSAwOworI2VuZGlmCisKICAgICByZXR1cm4gKHJlc3VsdCk7CiB9CiAKQEAgLTkxMiw2ICsxMTYzLDExIEBACiAgICAgICAgIHJldHVybiAoMik7ICAgICAgICAgICAgIC8qIHJlYWQgb25seSAqLwogI2VuZGlmCiAKKyNpZmRlZiBkYXJ3aW4KKyAgICBpZiAoIUhSRF9hY2Nlc3MpCisgICAgICAgIHJldHVybiAoMik7CisjZW5kaWYKKwogICAgIHJldHVybiAoMSk7ICAgICAgICAgICAgICAgICAvKiByZWFkLXdyaXRlICovCiB9CiAKQEAgLTk4NCw2ICsxMjQwLDkgQEAKICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIGRhcndpbgorICAgIHJldHVybiBIUkRfdHlwZTsKKyNlbmRpZgogCiAgICAgcmV0dXJuICgyKTsgICAgICAgICAgICAgICAgIC8qIFVua25vd24gKi8KIH0KQEAgLTEwMTQsNSArMTI3MywxNDkgQEAKICAgICAgICAgcmV0dXJuICgxKTsgICAgICAgICAgICAgLyogdHJ1ZSAqLwogI2VuZGlmCiAKKyNpZmRlZiBkYXJ3aW4KKyAgICBpZiAoSFJEX3JlbW92ZWJsZSkKKyAgICAgICAgcmV0dXJuICgxKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuICgyKTsgICAgICAgICAgICAgICAgIC8qIGZhbHNlICovCiB9CisKKyNpZmRlZiBkYXJ3aW4KK3R5cGVkZWYgc3RydWN0IHR5cGVfdmFsdWVfbWFwX3MgeworICAgICBjb25zdCBjaGFyICp0eXBlOworICAgICB1aW50MzJfdCAgICB2YWx1ZTsKK30gdHlwZV92YWx1ZV9tYXA7CisKK3N0YXRpYyB0eXBlX3ZhbHVlX21hcCBtZWRpYV90eXBlX21hcFtdID0geworICAgIHsgIkNELVJPTSIsIEhSRElTS1NUT1JBR0VNRURJQV9PUFRJQ0FMRElTS1JPTX0sCisgICAgeyAiRFZELVIiLCBIUkRJU0tTVE9SQUdFTUVESUFfT1BUSUNBTERJU0tXT1JNfSwKKyAgICB7ICJEVkQrUiIsIEhSRElTS1NUT1JBR0VNRURJQV9PUFRJQ0FMRElTS1dPUk19LAorfTsgIAorc3RhdGljIGludCBtZWRpYV90eXBlcyA9IHNpemVvZihtZWRpYV90eXBlX21hcCkvc2l6ZW9mKG1lZGlhX3R5cGVfbWFwWzBdKTsKKworc3RhdGljIGludAorX2dldF90eXBlX3ZhbHVlKCBjb25zdCBjaGFyICpzdHJfdHlwZSApCit7CisgICAgaW50ICAgICAgICAgICBpLCBsZW47CisgICAgCisgICAgaWYgKE5VTEwgPT0gc3RyX3R5cGUpCisgICAgICAgIHJldHVybiBIUkRJU0tTVE9SQUdFTUVESUFfVU5LTk9XTjsKKworICAgIGxlbiA9IHN0cmxlbihzdHJfdHlwZSk7CisgICAgZm9yKGk9MDsgaSA8IG1lZGlhX3R5cGVzOyArK2kpIHsKKyAgICAgICAgaWYgKDAgPT0gc3RyY21wKG1lZGlhX3R5cGVfbWFwW2ldLnR5cGUsIHN0cl90eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBtZWRpYV90eXBlX21hcFtpXS52YWx1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gSFJESVNLU1RPUkFHRU1FRElBX1VOS05PV047Cit9CisKK3N0YXRpYyB0eXBlX3ZhbHVlX21hcCBwcm90b19tYXBbXSA9IHsKKyAgICB7ICJBVEEiLCBIUkRJU0tTVE9SQUdFTUVESUFfSEFSRERJU0t9LAorICAgIHsgIkFUQVBJIiwgSFJESVNLU1RPUkFHRU1FRElBX09QVElDQUxESVNLUk9NfQorfTsKK3N0YXRpYyBpbnQgcHJvdG9fbWFwcyA9IHNpemVvZihwcm90b19tYXApL3NpemVvZihwcm90b19tYXBbMF0pOworCitzdGF0aWMgaW50IF9nZXRfdHlwZV9mcm9tX3Byb3RvY29sKCBjb25zdCBjaGFyICpwcm90ICkKK3sgICAKKyAgICBpbnQgICAgICAgICAgIGksIGxlbjsKKworICAgIGlmIChOVUxMID09IHByb3QpCisgICAgICAgIHJldHVybiBUVl9GQUxTRTsKKworICAgIGxlbiA9IHN0cmxlbihwcm90KTsKKyAgICBmb3IoaT0wOyBpIDwgcHJvdG9fbWFwczsgKytpKSB7CisgICAgICAgIGlmICgwID09IHN0cmNtcChwcm90b19tYXBbaV0udHlwZSwgcHJvdCkpCisgICAgICAgICAgICByZXR1cm4gcHJvdG9fbWFwW2ldLnZhbHVlOworICAgIH0KKworICAgIHJldHVybiBIUkRJU0tTVE9SQUdFTUVESUFfVU5LTk9XTjsKK30KKyNlbmRpZgorCisKKyNpZiBkZWZpbmVkKEhBVkVfUkVHRVhfSCkgJiYgZGVmaW5lZChIQVZFX1JFR0NPTVApCitzdGF0aWMgY2hhciAgICAqbHZtX2RldmljZV9uYW1lc1tNQVhfTlVNQkVSX0RJU0tfVFlQRVNdOworc3RhdGljIGludCAgICAgIGx2bV9kZXZpY2VfY291bnQ7CisjZW5kaWYKKworc3RhdGljIHZvaWQKK0FkZF9MVk1fRGlza3Modm9pZCkKK3sKKyNpZiBkZWZpbmVkKEhBVkVfUkVHRVhfSCkgJiYgZGVmaW5lZChIQVZFX1JFR0NPTVApCisgICAgLyoKKyAgICAgKiBMVk0gZGV2aWNlcyBhcmUgaGFyZGVyIGJlY2F1c2UgdGhlaXIgbmFtZSBjYW4gYmUgYWxtb3N0IGFueXRoaW5nIChzZWUgCisgICAgICogcmVnZXhwIGJlbG93KS4gRWFjaCBsb2dpY2FsIHZvbHVtZSBpcyBpbnRlcnByZXRlZCBhcyBpdHMgb3duIGRldmljZSB3aXRoCisgICAgICogb25lIHBhcnRpdGlvbiwgZXZlbiBpZiB0d28gbG9naWNhbCB2b2x1bWVzIHNoYXJlIGNvbW1vbiB2b2x1bWUgZ3JvdXAuIAorICAgICAqLworICAgIHJlZ2V4X3QgICAgICAgICBsdm9sOworICAgIGludCAgICAgICAgICAgICByZXM7CisgICAgRElSICAgICAgICAgICAgKmRpcjsKKyAgICBzdHJ1Y3QgZGlyZW50ICAqZDsKKworICAgIHJlcyA9CisgICAgICAgIHJlZ2NvbXAoJmx2b2wsICJbMC05YS16QS1aK19cXC4tXSstWzAtOWEtekEtWitfXFwuLV0rIiwKKyAgICAgICAgICAgICAgICBSRUdfRVhURU5ERUQgfCBSRUdfTk9TVUIpOworICAgIGlmIChyZXMgIT0gMCkgeworICAgICAgICBjaGFyICAgICAgICAgICAgZXJyb3JbMjAwXTsKKyAgICAgICAgcmVnZXJyb3IocmVzLCAmbHZvbCwgZXJyb3IsIHNpemVvZihlcnJvciktMSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX2Rpc2siLAorICAgICAgICAgICAgICAgICAgICAiQWRkX0xWTV9EaXNrczogY2Fubm90IGNvbXBpbGUgcmVnZXhwOiAlcyIsIGVycm9yKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkaXIgPSBvcGVuZGlyKCIvZGV2L21hcHBlci8iKTsKKyAgICBpZiAoZGlyID09IE5VTEwpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfZGlzayIsCisgICAgICAgICAgICAgICAgICAgICJBZGRfTFZNX0Rpc2tzOiBjYW5ub3Qgb3BlbiAvZGV2L21hcHBlciIpKTsKKyAgICAgICAgcmVnZnJlZSgmbHZvbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aGlsZSAoKGQgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsKKyAgICAgICAgcmVzID0gcmVnZXhlYygmbHZvbCwgZC0+ZF9uYW1lLCAwLCBOVUxMLCAwKTsKKyAgICAgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgICAgICBjaGFyICAgICAgICAgICAqcGF0aCA9IG1hbGxvYyhQQVRIX01BWCArIDEpOworICAgICAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX2Rpc2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBZGRfTFZNX0Rpc2tzOiBjYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBkZXZpY2UgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmRfbmFtZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc25wcmludGYocGF0aCwgUEFUSF9NQVgtMSwgIi9kZXYvbWFwcGVyLyVzIiwgZC0+ZF9uYW1lKTsKKyAgICAgICAgICAgIEFkZF9IUl9EaXNrX2VudHJ5KHBhdGgsIC0xLCAtMSwgMCwgMCwgcGF0aCwgMCwgMCk7CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBzdG9yZSB0aGUgZGV2aWNlIG5hbWUgc28gd2UgY2FuIGZyZWUgaXQgaW4gUmVtb3ZlX0xWTV9EaXNrcyAKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbHZtX2RldmljZV9uYW1lc1tsdm1fZGV2aWNlX2NvdW50XSA9IHBhdGg7CisgICAgICAgICAgICArK2x2bV9kZXZpY2VfY291bnQ7CisgICAgICAgICAgICBpZiAobHZtX2RldmljZV9jb3VudCA+PSBNQVhfTlVNQkVSX0RJU0tfVFlQRVMpIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9kaXNrIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWRkX0xWTV9EaXNrczogbWF4aW11bSBjb3VudCBvZiBMVk0gZGV2aWNlcyByZWFjaGVkIikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNsb3NlZGlyKGRpcik7CisgICAgcmVnZnJlZSgmbHZvbCk7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQKK1JlbW92ZV9MVk1fRGlza3Modm9pZCkKK3sKKyNpZiBkZWZpbmVkKEhBVkVfUkVHRVhfSCkgJiYgZGVmaW5lZChIQVZFX1JFR0NPTVApCisgICAgLyoKKyAgICAgKiBqdXN0IGZyZWUgdGhlIGRldmljZSBuYW1lcyBhbGxvY2F0ZWQgaW4gYWRkX2x2bV9kaXNrcyAKKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbHZtX2RldmljZV9jb3VudDsgaSsrKSB7CisgICAgICAgIGZyZWUobHZtX2RldmljZV9uYW1lc1tpXSk7CisgICAgICAgIGx2bV9kZXZpY2VfbmFtZXNbaV0gPSBOVUxMOworICAgIH0KKyAgICBsdm1fZGV2aWNlX2NvdW50ID0gMDsKKyNlbmRpZgorfQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5oCmluZGV4IGVmZjJhNjcuLmIzYzQzOWMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5oCkBAIC04LDYgKzgsOCBAQAogY29uZmlnX3JlcXVpcmUoaG9zdC9ocl9kZXZpY2UpCiAKIGV4dGVybiB2b2lkICAgICBpbml0X2hyX2Rpc2sodm9pZCk7CitleHRlcm4gdm9pZCAgICAgc2h1dGRvd25faHJfZGlzayh2b2lkKTsKKwogZXh0ZXJuIHZvaWQgICAgIEluaXRfSFJfRGlzayh2b2lkKTsKIGV4dGVybiBpbnQgICAgICBHZXRfTmV4dF9IUl9EaXNrKHZvaWQpOwogZXh0ZXJuIGludCAgICAgIEdldF9OZXh0X0hSX0Rpc2tfUGFydGl0aW9uKGNoYXIgKiwgc2l6ZV90LCBpbnQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYwppbmRleCA3ZmEyMDU4Li5lODViZmVjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYwpAQCAtMiw2ICsyLDE2IEBACiAgKiAgSG9zdCBSZXNvdXJjZXMgTUlCIC0gRmlsZSBTeXN0ZW0gZGV2aWNlIGdyb3VwIGltcGxlbWVudGF0aW9uIC0gaHJfZmlsZXN5cy5jCiAgKgogICovCisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CkBAIC0xMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiaG9zdF9yZXMuaCIKICNpbmNsdWRlICJocl9maWxlc3lzLmgiCiAjaW5jbHVkZSAiaHJfc3RvcmFnZS5oIgorI2luY2x1ZGUgImhyX2Rpc2suaCIKICNpbmNsdWRlIDxuZXQtc25tcC91dGlsaXRpZXMuaD4KIAogI2lmIEhBVkVfTU5URU5UX0gKQEAgLTE5NSwxNSArMjA2LDI0IEBACiAjZGVmaW5lIEhSRlNZU19QQVJURFVNUAkJOQogCiBzdHJ1Y3QgdmFyaWFibGU0IGhyZnN5c192YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJGU1lTX0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCAxfX0sCi0gICAge0hSRlNZU19NT1VOVCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCAyfX0sCi0gICAge0hSRlNZU19STU9VTlQsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgM319LAotICAgIHtIUkZTWVNfVFlQRSwgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA0fX0sCi0gICAge0hSRlNZU19BQ0NFU1MsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyZmlsZXN5cywgMiwgezEsIDV9fSwKLSAgICB7SFJGU1lTX0JPT1QsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyZmlsZXN5cywgMiwgezEsIDZ9fSwKLSAgICB7SFJGU1lTX1NUT1JFSURYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA3fX0sCi0gICAge0hSRlNZU19GVUxMRFVNUCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA4fX0sCi0gICAge0hSRlNZU19QQVJURFVNUCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA5fX0sCisgICAge0hSRlNZU19JTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgMX19LAorICAgIHtIUkZTWVNfTU9VTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgMn19LAorICAgIHtIUkZTWVNfUk1PVU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyZmlsZXN5cywgMiwgezEsIDN9fSwKKyAgICB7SFJGU1lTX1RZUEUsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgNH19LAorICAgIHtIUkZTWVNfQUNDRVNTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA1fX0sCisgICAge0hSRlNZU19CT09ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA2fX0sCisgICAge0hSRlNZU19TVE9SRUlEWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgN319LAorICAgIHtIUkZTWVNfRlVMTERVTVAsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgOH19LAorICAgIHtIUkZTWVNfUEFSVERVTVAsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgOX19LAogfTsKIG9pZCAgICAgICAgICAgICBocmZzeXNfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMywgOCB9OwogCkBAIC0yNzksNyArMjk5LDcgQEAKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbmV3bmFtZSwKICAgICAgICAgICAgKHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAKICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9maWxlc3lzIiwgIi4uLiBnZXQgZmlsZXN5cyBzdGF0cyAiKSk7CkBAIC0zMjYsOSArMzQ2LDkgQEAKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oc3RyaW5nKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgc3RyaW5nOwogICAgIGNhc2UgSFJGU1lTX1JNT1VOVDoKLSAgICAgICAgaWYgKENoZWNrX0hSX0ZpbGVTeXNfTkZTKCkpCisgICAgICAgIGlmIChDaGVja19IUl9GaWxlU3lzX05GUygpKSB7CiAgICAgICAgICAgICBzdHJsY3B5KHN0cmluZywgSFJGU19lbnRyeS0+SFJGU19uYW1lLCBzaXplb2Yoc3RyaW5nKSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJpbmdbMF0gPSAnXDAnOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihzdHJpbmcpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBzdHJpbmc7CkBAIC02MjEsOSArNjQxLDcgQEAKICAgICAgICAgZmNsb3NlKGZwKTsKICAgICBmcCA9IGZvcGVuKEVUQ19NTlRUQUIsICJyIik7CiAgICAgaWYgKCFmcCkgewotICAgICAgY2hhciB0bXBidWZbU1RSSU5HTUFYXTsKLSAgICAgIHNucHJpbnRmKCB0bXBidWYsIHNpemVvZih0bXBidWYpLCAiQ2FuJ3Qgb3BlbiBtbnR0YWIgJXNcbiIsIEVUQ19NTlRUQUIgKTsKLSAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJDYW4ndCBvcGVuIG1udHRhYiAlc1xuIiwgRVRDX01OVFRBQik7CiAgICAgfQogI2VuZGlmCiB9CkBAIC02NzgsNyArNjk2LDcgQEAKICAgICAicHJvYyIsCiAgICAgImZkIiwKICNlbmRpZgotICAgIDAKKyAgICBOVUxMCiB9OwogCiBpbnQKQEAgLTcyOSwxMyArNzQ3LDkgQEAKICAgICAgICAgcmV0dXJuIC0xOwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzb2xhcmlzMiAqLwogCi0gICAgREVCVUdNU0dUTCgoImhvc3QvaHJfZmlsZXN5cyIsICJHZXRfTmV4dF9IUkZTICVzXG4iLCBIUkZTX2VudHJ5LT5IUkZTX25hbWUpKTsKLQogICAgIGZvciAoY3BwID0gSFJGU19pZ25vcmVzOyAqY3BwICE9IE5VTEw7ICsrY3BwKQotICAgICAgICBpZiAoIXN0cmNtcChIUkZTX2VudHJ5LT5IUkZTX3R5cGUsICpjcHApKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9maWxlc3lzIiwgIkdldF9OZXh0X0hSRlM6IHNraXBwaW5nICVzICglcylcbiIsIEhSRlNfZW50cnktPkhSRlNfdHlwZSwgKmNwcCkpOworICAgICAgICBpZiAoIXN0cmNtcChIUkZTX2VudHJ5LT5IUkZTX3R5cGUsICpjcHApKQogICAgICAgICAgICAgcmV0dXJuIEdldF9OZXh0X0hSX0ZpbGVTeXMoKTsKLSAgICAgICAgfQogCiAgICAgLyoKICAgICAgKiBUcnkgYW5kIGVuc3VyZSB0aGF0IGluZGV4IHZhbHVlcyBhcmUgcGVyc2lzdGVudApAQCAtOTU1LDcgKzk2OSw3IEBACiAgIAkJICogaW4gY2FzZSBvZiA1MTIgKGZfYmxvY2tzLzIpIGlzIHJldHVybmVkCiAgIAkJICogb3RoZXJ3aXNlIChmX2Jsb2NrcyooZl9ic2l6ZS8xMDI0KSkgaXMgcmV0dXJuZWQKICAgCQkgKi8KLSNpZiBkZWZpbmVkKHNvbGFyaXMyKSAmJiBkZWZpbmVkKFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZSU0laRSkKKyNpZiBkZWZpbmVkKHNvbGFyaXMyKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIChzdGF0ZnNfYnVmLmZfYmxvY2tzKihzdGF0ZnNfYnVmLmZfZnJzaXplLzEwMjQpKTsKICNlbHNlCiAgIAkJaWYgKHN0YXRmc19idWYuZl9ic2l6ZSA9PSA1MTIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX25ldHdvcmsuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jCmluZGV4IDRmODVmOTYuLjQ4ZDc0N2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jCkBAIC01MSw3ICs1MSw4IEBACiAjZGVmaW5lCUhSTkVUX0lGSU5ERVgJCTEKIAogc3RydWN0IHZhcmlhYmxlNCBocm5ldF92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJORVRfSUZJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJuZXQsIDIsIHsxLCAxfX0KKyAgICB7SFJORVRfSUZJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJuZXQsIDIsIHsxLCAxfX0KIH07CiBvaWQgICAgICAgICAgICAgaHJuZXRfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMywgNCB9OwogCkBAIC0xMzYsNyArMTM3LDcgQEAKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbmV3bmFtZSwKICAgICAgICAgICAgKHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAKICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9uZXR3b3JrIiwgIi4uLiBnZXQgbmV0IHN0YXRzICIpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5jCmluZGV4IGFlMGJkOGUuLmFiZTc2OTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uYwpAQCAtMSw4ICsxLDE3IEBACi0KIC8qCiAgKiAgSG9zdCBSZXNvdXJjZXMgTUlCIC0gcGFydGl0aW9uIGRldmljZSBncm91cCBpbXBsZW1lbnRhdGlvbiAtIGhyX3BhcnRpdGlvbi5jCiAgKgogICovCisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CkBAIC0zNSw2ICs0NCw5IEBACiBzdGF0aWMgaW50ICAgICAgSFJQX3NhdmVkRGlza0luZGV4Owogc3RhdGljIGludCAgICAgIEhSUF9zYXZlZFBhcnRJbmRleDsKIHN0YXRpYyBjaGFyICAgICBIUlBfc2F2ZWROYW1lWzEwMjRdOworI2lmZGVmIE5FVFNOTVBfQ0FOX0dFVF9ESVNLX0xBQkVMCitzdGF0aWMgY2hhciAgICAgSFJQX3NhdmVkTGFiZWxbMTAyNF07CisjZW5kaWYKIAogc3RhdGljIGludCAgICAgIEhSUF9EaXNrSW5kZXg7CiAKQEAgLTYwLDExICs3MiwxNiBAQAogI2RlZmluZQlIUlBBUlRfRlNJRFgJCTUKIAogc3RydWN0IHZhcmlhYmxlNCBocnBhcnRpdGlvbl92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJQQVJUX0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnBhcnRpdGlvbiwgMiwgezEsIDF9fSwKLSAgICB7SFJQQVJUX0xBQkVMLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2hycGFydGl0aW9uLCAyLCB7MSwgMn19LAotICAgIHtIUlBBUlRfSUQsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJwYXJ0aXRpb24sIDIsIHsxLCAzfX0sCi0gICAge0hSUEFSVF9TSVpFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnBhcnRpdGlvbiwgMiwgezEsIDR9fSwKLSAgICB7SFJQQVJUX0ZTSURYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnBhcnRpdGlvbiwgMiwgezEsIDV9fQorICAgIHtIUlBBUlRfSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hycGFydGl0aW9uLCAyLCB7MSwgMX19LAorICAgIHtIUlBBUlRfTEFCRUwsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJwYXJ0aXRpb24sIDIsIHsxLCAyfX0sCisgICAge0hSUEFSVF9JRCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnBhcnRpdGlvbiwgMiwgezEsIDN9fSwKKyAgICB7SFJQQVJUX1NJWkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hycGFydGl0aW9uLCAyLCB7MSwgNH19LAorICAgIHtIUlBBUlRfRlNJRFgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hycGFydGl0aW9uLCAyLCB7MSwgNX19CiB9Owogb2lkICAgICAgICAgICAgIGhycGFydGl0aW9uX3ZhcmlhYmxlc19vaWRbXSA9CiAgICAgeyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMywgNyB9OwpAQCAtMTM1LDYgKzE1Miw3IEBACiAgICAgICAgICAgICAobmFtZVtIUlBBUlRfRElTS19OQU1FX0xFTkdUSF0gJgogICAgICAgICAgICAgICgoMSA8PCBIUkRFVl9UWVBFX1NISUZUKSAtIDEpKTsKIAorICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9wYXJ0aXRpb24iLCAiLi4uIGxvdyBpbmRleCAlZFxuIiwgTG93RGlza0luZGV4KSk7CiAgICAgICAgIHdoaWxlIChIUlBfRGlza0luZGV4IDwgTG93RGlza0luZGV4KSB7CiAgICAgICAgICAgICBJbml0X0hSX1BhcnRpdGlvbigpOyAgICAgICAgLyogbW92ZXMgdG8gbmV4dCBkaXNrICovCiAgICAgICAgICAgICBpZiAoSFJQX0Rpc2tJbmRleCA9PSAtMSkKQEAgLTE0NCw2ICsxNjIsNyBAQAogCiAgICAgZm9yICg7OykgewogICAgICAgICBwYXJ0X2lkeCA9IEdldF9OZXh0X0hSX1BhcnRpdGlvbigpOworICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9wYXJ0aXRpb24iLCAiLi4uIHBhcnQgaW5kZXggJWRcbiIsIHBhcnRfaWR4KSk7CiAgICAgICAgIGlmIChwYXJ0X2lkeCA9PSAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIG5ld25hbWVbSFJQQVJUX0RJU0tfTkFNRV9MRU5HVEhdID0KQEAgLTE4NSw3ICsyMDQsNyBAQAogICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAogICAgICAgICAgICAoKGludCkgdnAtPm5hbWVsZW4gKyAyKSAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAyOwotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KIAogICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX3BhcnRpdGlvbiIsICIuLi4gZ2V0IHBhcnRpdGlvbiBzdGF0cyAiKSk7CkBAIC0yMjUsOCArMjQ0LDEzIEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gcGFydF9pZHg7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgY2FzZSBIUlBBUlRfTEFCRUw6CisjaWZkZWYgTkVUU05NUF9DQU5fR0VUX0RJU0tfTEFCRUwKKyAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oSFJQX3NhdmVkTGFiZWwpOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBIUlBfc2F2ZWRMYWJlbDsKKyNlbHNlCiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKEhSUF9zYXZlZE5hbWUpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBIUlBfc2F2ZWROYW1lOworI2VuZGlmCiAgICAgY2FzZSBIUlBBUlRfSUQ6ICAgICAgICAgICAgLyogVXNlIHRoZSBkZXZpY2UgbnVtYmVyICovCiAgICAgICAgIHNwcmludGYoc3RyaW5nLCAiMHgleCIsIChpbnQpIHN0YXRfYnVmLnN0X3JkZXYpOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihzdHJpbmcpOwpAQCAtMjU5LDkgKzI4MywxMSBAQAogc3RhdGljIHZvaWQKIEluaXRfSFJfUGFydGl0aW9uKHZvaWQpCiB7CisgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfcGFydGl0aW9uIiwgIkluaXRfSFJfUGFydGl0aW9uXG4iKSk7CiAgICAgSFJQX0Rpc2tJbmRleCA9IEdldF9OZXh0X0hSX0Rpc2soKTsKICAgICBpZiAoSFJQX0Rpc2tJbmRleCAhPSAtMSkKICAgICAgICAgSFJQX0Rpc2tJbmRleCAmPSAoKDEgPDwgSFJERVZfVFlQRV9TSElGVCkgLSAxKTsKKyAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9wYXJ0aXRpb24iLCAiLi4uICAlZFxuIixIUlBfRGlza0luZGV4KSk7CiAKICAgICBIUlBfaW5kZXggPSAtMTsKIH0KQEAgLTI3Miw2ICsyOTgsNyBAQAogICAgIGNoYXIgICAgICAgICAgICBzdHJpbmdbMTAyNF07CiAgICAgaW50ICAgICAgICAgICAgIGZkOwogCisgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfcGFydGl0aW9uIiwgIkdldF9OZXh0X0hSX1BhcnRpdGlvbiAlZFxuIixIUlBfRGlza0luZGV4KSk7CiAgICAgaWYgKEhSUF9EaXNrSW5kZXggPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMzA5LDQgKzMzNiw3IEBACiAgICAgSFJQX3NhdmVkRGlza0luZGV4ID0gZGlza19pZHg7CiAgICAgSFJQX3NhdmVkUGFydEluZGV4ID0gcGFydF9pZHg7CiAgICAgKHZvaWQpIEdldF9OZXh0X0hSX0Rpc2tfUGFydGl0aW9uKEhSUF9zYXZlZE5hbWUsIHNpemVvZihIUlBfc2F2ZWROYW1lKSwgSFJQX2luZGV4KTsKKyNpZmRlZiBORVRTTk1QX0NBTl9HRVRfRElTS19MQUJFTAorICAgICh2b2lkKSBHZXRfSFJfRGlza19MYWJlbChIUlBfc2F2ZWRMYWJlbCwgc2l6ZW9mKEhSUF9zYXZlZExhYmVsKSwgSFJQX3NhdmVkTmFtZSk7CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJpbnQuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJpbnQuYwppbmRleCAxZDFmMmVmLi40Y2ZhMjViIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcmludC5jCkBAIC00OCw4ICs0OCwxMCBAQAogI2RlZmluZQlIUlBSSU5UX0VSUk9SCQkyCiAKIHN0cnVjdCB2YXJpYWJsZTQgaHJwcmludF92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJQUklOVF9TVEFUVVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hycHJpbnQsIDIsIHsxLCAxfX0sCi0gICAge0hSUFJJTlRfRVJST1IsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJwcmludCwgMiwgezEsIDJ9fQorICAgIHtIUlBSSU5UX1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJwcmludCwgMiwgezEsIDF9fSwKKyAgICB7SFJQUklOVF9FUlJPUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnByaW50LCAyLCB7MSwgMn19CiB9Owogb2lkICAgICAgICAgICAgIGhycHJpbnRfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMywgNSB9OwogCkBAIC0xMzksNyArMTQxLDcgQEAKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbmV3bmFtZSwKICAgICAgICAgICAgKHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAKICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9wcmludCIsICIuLi4gZ2V0IHByaW50IHN0YXRzICIpKTsKQEAgLTE3Nyw5ICsxNzksMTAgQEAKICAgICBjYXNlIEhSUFJJTlRfRVJST1I6CiAjaWYgTkVUU05NUF9OT19EVU1NWV9WQUxVRVMKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jZW5kaWYKKyNlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gMDsgICAgICAgIC8qIE51bGwgc3RyaW5nICovCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9wcmludCIsICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfaHJwcmludFxuIiwKICAgICAgICAgICAgICAgICAgICAgdnAtPm1hZ2ljKSk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3Byb2MuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJvYy5jCmluZGV4IGVjZTMzOGQuLjZmOTMwNzkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJvYy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJvYy5jCkBAIC01MSw4ICs1MSwxMCBAQAogI2RlZmluZQlIUlBST0NfTE9BRAkJMgogCiBzdHJ1Y3QgdmFyaWFibGU0IGhycHJvY192YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJQUk9DX0lELCBBU05fT0JKRUNUX0lELCBST05MWSwgdmFyX2hycHJvYywgMiwgezEsIDF9fSwKLSAgICB7SFJQUk9DX0xPQUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hycHJvYywgMiwgezEsIDJ9fQorICAgIHtIUlBST0NfSUQsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJwcm9jLCAyLCB7MSwgMX19LAorICAgIHtIUlBST0NfTE9BRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJwcm9jLCAyLCB7MSwgMn19CiB9Owogb2lkICAgICAgICAgICAgIGhycHJvY192YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAzLCAzIH07CiAKQEAgLTEzOCw3ICsxNDAsNyBAQAogICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAogICAgICAgICAgICAodnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KIAogICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX3Byb2MiLCAiLi4uIGdldCBwcm9jIHN0YXRzICIpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMKaW5kZXggMjVmZjNkYi4uNzU0ODg0YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMKQEAgLTgsNyArOCw3IEBACiAjaWYgZGVmaW5lZChmcmVlYnNkNSkKIC8qIHVuZGVmaW5lIHRoZXNlIGluIG9yZGVyIHRvIHVzZSBnZXRmc3N0YXQgKi8KICN1bmRlZiBIQVZFX1NUQVRWRlMKLSN1bmRlZiBTVFJVQ1RfU1RBVFZGU19IQVNfRl9GUlNJWkUKKyN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUVkZTX0ZfRlJTSVpFCiAjZW5kaWYKIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtMTg5LDcgKzE4OSw3IEBACiBleHRlcm4gc3RydWN0IG1udHRhYiAqSFJGU19lbnRyeTsKICNkZWZpbmUgSFJGU19tb3VudAltbnRfbW91bnRwCiAjZGVmaW5lIEhSRlNfc3RhdGZzCXN0YXR2ZnMKLSNkZWZpbmUgSFJGU19IQVNfRlJTSVpFIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZSU0laRQorI2RlZmluZSBIUkZTX0hBU19GUlNJWkUgSEFWRV9TVFJVQ1RfU1RBVFZGU19GX0ZSU0laRQogCiAjZWxpZiBkZWZpbmVkKFdJTjMyKQogLyogZmFrZSBibG9jayBzaXplICovCkBAIC0yMDUsMTUgKzIwNSwxNSBAQAogZXh0ZXJuIGludCAgICAgIGZzY291bnQ7CiAjZGVmaW5lIEhSRlNfc3RhdGZzCXN0YXR2ZnMKICNkZWZpbmUgSFJGU19tb3VudAlmX21udG9ubmFtZQotI2RlZmluZSBIUkZTX0hBU19GUlNJWkUgU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRlJTSVpFCisjZGVmaW5lIEhSRlNfSEFTX0ZSU0laRSBIQVZFX1NUUlVDVF9TVEFUVkZTX0ZfRlJTSVpFCiAKLSNlbGlmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAgJiYgZGVmaW5lZChTVFJVQ1RfU1RBVFZGU19IQVNfTU5UX0RJUikKKyNlbGlmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9TVEFUVkZTX01OVF9ESVIpCiAKIGV4dGVybiBzdHJ1Y3QgbW50ZW50ICpIUkZTX2VudHJ5OwogZXh0ZXJuIGludCAgICAgIGZzY291bnQ7CiAjZGVmaW5lIEhSRlNfc3RhdGZzCXN0YXR2ZnMKICNkZWZpbmUgSFJGU19tb3VudAltbnRfZGlyCi0jZGVmaW5lIEhSRlNfSEFTX0ZSU0laRSBTVFJVQ1RfU1RBVFZGU19IQVNfRl9GUlNJWkUKKyNkZWZpbmUgSFJGU19IQVNfRlJTSVpFIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUKIAogI2VsaWYgZGVmaW5lZChIQVZFX0dFVEZTU1RBVCkKIApAQCAtMjIxLDE0ICsyMjEsMTQgQEAKIGV4dGVybiBpbnQgICAgICBmc2NvdW50OwogI2RlZmluZSBIUkZTX3N0YXRmcwlzdGF0ZnMKICNkZWZpbmUgSFJGU19tb3VudAlmX21udG9ubmFtZQotI2RlZmluZSBIUkZTX0hBU19GUlNJWkUgU1RSVUNUX1NUQVRGU19IQVNfRl9GUlNJWkUKKyNkZWZpbmUgSFJGU19IQVNfRlJTSVpFIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZSU0laRQogCiAjZWxzZQogCiBleHRlcm4gc3RydWN0IG1udGVudCAqSFJGU19lbnRyeTsKICNkZWZpbmUgSFJGU19tb3VudAltbnRfZGlyCiAjZGVmaW5lIEhSRlNfc3RhdGZzCXN0YXRmcwotI2RlZmluZSBIUkZTX0hBU19GUlNJWkUgU1RSVUNUX1NUQVRGU19IQVNfRl9GUlNJWkUKKyNkZWZpbmUgSFJGU19IQVNfRlJTSVpFIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZSU0laRQogCiAjZW5kaWYKIAkKQEAgLTI0OSw2ICsyNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqLCBXcml0ZU1ldGhvZCAqKik7CiB2b2lkKiAgICAgICAgICAgaGVhZGVyX2hyc3RvcmVFbnRyeShzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBzaXplX3QgKiwgV3JpdGVNZXRob2QgKiopOworTmV0c25tcF9Ob2RlX0hhbmRsZXIgaGFuZGxlX21lbXNpemU7CiAKICNpZmRlZiBzb2xhcmlzMgogdm9pZCAgICAgICAgICAgIHNvbF9nZXRfc3dhcGluZm8oaW50ICosIGludCAqKTsKQEAgLTI2MywxNyArMjY0LDI1IEBACiAjZGVmaW5lCUhSU1RPUkVfVVNFRAkJNwogI2RlZmluZQlIUlNUT1JFX0ZBSUxTCQk4CiAKLXN0cnVjdCB2YXJpYWJsZTQgaHJzdG9yZV92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJTVE9SRV9NRU1TSVpFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnN0b3JlLCAxLCB7Mn19LAotICAgIHtIUlNUT1JFX0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnN0b3JlLCAzLCB7MywgMSwgMX19LAotICAgIHtIUlNUT1JFX1RZUEUsIEFTTl9PQkpFQ1RfSUQsIFJPTkxZLCB2YXJfaHJzdG9yZSwgMywgezMsIDEsIDJ9fSwKLSAgICB7SFJTVE9SRV9ERVNDUiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9ocnN0b3JlLCAzLCB7MywgMSwgM319LAotICAgIHtIUlNUT1JFX1VOSVRTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnN0b3JlLCAzLCB7MywgMSwgNH19LAotICAgIHtIUlNUT1JFX1NJWkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3RvcmUsIDMsIHszLCAxLCA1fX0sCi0gICAge0hSU1RPUkVfVVNFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJzdG9yZSwgMywgezMsIDEsIDZ9fSwKLSAgICB7SFJTVE9SRV9GQUlMUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaHJzdG9yZSwgMywgezMsIDEsIDd9fQorc3RydWN0IHZhcmlhYmxlMiBocnN0b3JlX3ZhcmlhYmxlc1tdID0geworICAgIHtIUlNUT1JFX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN0b3JlLCAxLCB7MX19LAorICAgIHtIUlNUT1JFX1RZUEUsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezJ9fSwKKyAgICB7SFJTVE9SRV9ERVNDUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN0b3JlLCAxLCB7M319LAorICAgIHtIUlNUT1JFX1VOSVRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN0b3JlLCAxLCB7NH19LAorICAgIHtIUlNUT1JFX1NJWkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3RvcmUsIDEsIHs1fX0sCisgICAge0hSU1RPUkVfVVNFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezZ9fSwKKyAgICB7SFJTVE9SRV9GQUlMUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezd9fQogfTsKIG9pZCAgICAgICAgICAgICBocnN0b3JlX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDIgfTsKK29pZCAgICAgICAgICAgICBock1lbW9yeVNpemVfb2lkW10gICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDIsIDIgfTsKK29pZCAgICAgICAgICAgICBoclN0b3JhZ2VUYWJsZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDIsIDMsIDEgfTsKIAogCiB2b2lkCkBAIC0yODEsOCArMjkwLDEyIEBACiB7CiAgICAgY2hhciAqYXBwbmFtZTsKIAotICAgIFJFR0lTVEVSX01JQigiaG9zdC9ocl9zdG9yYWdlIiwgaHJzdG9yZV92YXJpYWJsZXMsIHZhcmlhYmxlNCwKLSAgICAgICAgICAgICAgICAgaHJzdG9yZV92YXJpYWJsZXNfb2lkKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcigKKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImhvc3QvaHJNZW1vcnlTaXplIiwgaGFuZGxlX21lbXNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBock1lbW9yeVNpemVfb2lkLCBPSURfTEVOR1RIKGhyTWVtb3J5U2l6ZV9vaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpKTsKKyAgICBSRUdJU1RFUl9NSUIoImhvc3QvaHJfc3RvcmFnZSIsIGhyc3RvcmVfdmFyaWFibGVzLCB2YXJpYWJsZTIsCisgICAgICAgICAgICAgICAgIGhyU3RvcmFnZVRhYmxlX29pZCk7CiAKICAgICBhcHBuYW1lID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpOwpAQCAtMzE3LDcgKzMzMCw3IEBACiB9CiAKIC8qCi0gKiBoZWFkZXJfaHJzdG9yZSguLi4KKyAqIGhlYWRlcl9ocnN0b3JlRW50cnkoLi4uCiAgKiBBcmd1bWVudHM6CiAgKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQogICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCkBAIC0zMjgsMzQgKzM0MSw2IEBACiAgKiAKICAqLwogCi1pbnQKLWhlYWRlcl9ocnN0b3JlKHN0cnVjdCB2YXJpYWJsZSAqdnAsCi0gICAgICAgICAgICAgICBvaWQgKiBuYW1lLAotICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKiB2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCi17Ci0jZGVmaW5lIEhSU1RPUkVfTkFNRV9MRU5HVEgJOQotICAgIG9pZCAgICAgICAgICAgICBuZXduYW1lW01BWF9PSURfTEVOXTsKLSAgICBpbnQgICAgICAgICAgICAgcmVzdWx0OwotCi0gICAgREVCVUdNU0dUTCgoImhvc3QvaHJfc3RvcmFnZSIsICJ2YXJfaHJzdG9yZTogIikpOwotICAgIERFQlVHTVNHT0lEKCgiaG9zdC9ocl9zdG9yYWdlIiwgbmFtZSwgKmxlbmd0aCkpOwotICAgIERFQlVHTVNHKCgiaG9zdC9ocl9zdG9yYWdlIiwgIiAlZFxuIiwgZXhhY3QpKTsKLQotICAgIG1lbWNweSgoY2hhciAqKSBuZXduYW1lLCAoY2hhciAqKSB2cC0+bmFtZSwgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7Ci0gICAgbmV3bmFtZVtIUlNUT1JFX05BTUVfTEVOR1RIXSA9IDA7Ci0gICAgcmVzdWx0ID0gc25tcF9vaWRfY29tcGFyZShuYW1lLCAqbGVuZ3RoLCBuZXduYW1lLCB2cC0+bmFtZWxlbiArIDEpOwotICAgIGlmICgoZXhhY3QgJiYgKHJlc3VsdCAhPSAwKSkgfHwgKCFleGFjdCAmJiAocmVzdWx0ID49IDApKSkKLSAgICAgICAgcmV0dXJuIChNQVRDSF9GQUlMRUQpOwotICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAotICAgICAgICAgICAodnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKLSAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotCi0gICAgKndyaXRlX21ldGhvZCA9IDA7Ci0gICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KLSAgICByZXR1cm4gKE1BVENIX1NVQ0NFRURFRCk7Ci19Ci0KIHZvaWQgKgogaGVhZGVyX2hyc3RvcmVFbnRyeShzdHJ1Y3QgdmFyaWFibGUgKnZwLAogICAgICAgICAgICAgICAgICAgICBvaWQgKiBuYW1lLApAQCAtNDY3LDcgKzQ1Miw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAKICAgICAvKgpAQCAtNDc1LDcgKzQ2MCw3IEBACiAgICAgICovCiAgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfc3RvcmFnZSIsICJ2YXJfaHJzdG9yZUVudHJ5OiBwcm9jZXNzICIpKTsKICAgICBERUJVR01TR09JRCgoImhvc3QvaHJfc3RvcmFnZSIsIG5hbWUsICpsZW5ndGgpKTsKLSAgICBERUJVR01TRygoImhvc3QvaHJfc3RvcmFnZSIsICIgKCV4KVxuIiwgbWVtKSk7CisgICAgREVCVUdNU0coKCJob3N0L2hyX3N0b3JhZ2UiLCAiICglcClcbiIsIG1lbSkpOwogICAgIHJldHVybiAodm9pZCopbWVtOwogfQogCkBAIC00ODksMTMgKzQ3NCw0NyBAQAogCSAqCiAJICoqKioqKioqKioqKioqKioqKioqKi8KIAotc3RhdGljIGNvbnN0IGNoYXIgKmhyc19kZXNjcltdID0gewotICAgIE5VTEwsCi0gICAgIk1lbW9yeSBCdWZmZXJzIiwgICAgICAgICAgIC8qIEhSU19UWVBFX01CVUYgKi8KLSAgICAiUmVhbCBNZW1vcnkiLCAgICAgICAgICAgICAgLyogSFJTX1RZUEVfTUVNICovCi0gICAgIlN3YXAgU3BhY2UiICAgICAgICAgICAgICAgIC8qIEhSU19UWVBFX1NXQVAgKi8KLX07CitpbnQKK2hhbmRsZV9tZW1zaXplKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgbmV0c25tcF9tZW1vcnlfaW5mbyAqbWVtX2luZm87CisgICAgaW50IHZhbDsKIAorICAgIC8qCisgICAgICogV2UganVzdCBuZWVkIHRvIGhhbmRsZSB2YWxpZCBHRVQgcmVxdWVzdHMsIGFzIGludmFsaWQgaW5zdGFuY2VzCisgICAgICogICBhcmUgcmVqZWN0ZWQgYXV0b21hdGljYWxseSwgYW5kICh2YWxpZCkgR0VUTkVYVCByZXF1ZXN0cyBhcmUKKyAgICAgKiAgIGNvbnZlcnRlZCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBHRVQgcmVxdWVzdC4KKyAgICAgKgorICAgICAqIFdlIGFsc28gb25seSBldmVyIHJlY2VpdmUgb25lIHJlcXVlc3QgYXQgYSB0aW1lLgorICAgICAqLworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIG5ldHNubXBfbWVtb3J5X2xvYWQoKTsKKyAgICAgICAgbWVtX2luZm8gPSBuZXRzbm1wX21lbW9yeV9nZXRfYnlJZHgoIE5FVFNOTVBfTUVNX1RZUEVfUEhZU01FTSwgMCApOworICAgICAgICBpZiAoICFtZW1faW5mbyB8fCBtZW1faW5mby0+c2l6ZSA9PSAtMSB8fCBtZW1faW5mby0+dW5pdHMgPT0gLTEgKQorICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvciggcmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfTk9TVUNIT0JKRUNUICk7CisJZWxzZSB7CisgICAgICAgICAgICB2YWwgID0gIG1lbV9pbmZvLT5zaXplOyAgICAgLyogbWVtdG90YWwgKi8KKyAgICAgICAgICAgIHZhbCAqPSAobWVtX2luZm8tPnVuaXRzLzEwMjQpOworICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikmdmFsLCBzaXplb2YodmFsKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisKKyAgICBkZWZhdWx0OgorICAgICAgICAvKgorICAgICAgICAgKiB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIHNvIHRoaXMgaXMgYSByZWFsbHkgYmFkIGVycm9yIAorICAgICAgICAgKi8KKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVua25vd24gbW9kZSAoJWQpIGluIGhhbmRsZV9tZW1zaXplXG4iLAorICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KIAogCiB1X2NoYXIgICAgICAgICAqCkBAIC01MTAsMTIgKzUyOSw2IEBACiAgICAgdm9pZCAgICAgICAgICAgICAgICAqcHRyOwogICAgIG5ldHNubXBfbWVtb3J5X2luZm8gKm1lbSA9IE5VTEw7CiAKLSAgICBpZiAodnAtPm1hZ2ljID09IEhSU1RPUkVfTUVNU0laRSkgewotICAgICAgICBpZiAoaGVhZGVyX2hyc3RvcmUodnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCkKLSAgICAgICAgICAgID09IE1BVENIX0ZBSUxFRCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0gZWxzZSB7Ci0KIHJlYWxseV90cnlfbmV4dDoKIAlwdHIgPSBoZWFkZXJfaHJzdG9yZUVudHJ5KHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLAogCQkJCQl3cml0ZV9tZXRob2QpOwpAQCAtNTM1LDE5ICs1NDgsMTAgQEAKIAl9IGVsc2UgewogCSAgICBtZW0gPSAobmV0c25tcF9tZW1vcnlfaW5mbyopcHRyOwogICAgICAgICB9Ci0gICAgfQogCiAKIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBIUlNUT1JFX01FTVNJWkU6Ci0gICAgICAgIG5ldHNubXBfbWVtb3J5X2xvYWQoKTsKLSAgICAgICAgbWVtID0gbmV0c25tcF9tZW1vcnlfZ2V0X2J5SWR4KCBORVRTTk1QX01FTV9UWVBFX1BIWVNNRU0sIDAgKTsKLSAgICAgICAgaWYgKCAhbWVtIHx8IG1lbS0+c2l6ZSA9PSAtMSB8fCBtZW0tPnVuaXRzID09IC0xICkKLQkgICAgcmV0dXJuIE5VTEw7Ci0JbG9uZ19yZXR1cm4gPSBtZW0tPnNpemUgKiAobWVtLT51bml0cyAvIDEwMjQpOwotICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotCiAgICAgY2FzZSBIUlNUT1JFX0lOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IHN0b3JlX2lkeDsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKQEAgLTY1Niw3ICs2NjAsNiBAQAogCSAqCiAJICoqKioqKioqKioqKioqKioqKioqKi8KIAotc3RhdGljIGludCAgICAgIEZTX3N0b3JhZ2U7CiBzdGF0aWMgaW50ICAgICAgSFJTX2luZGV4OwogCiB2b2lkCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oCmluZGV4IGZmYTFmNTIuLjIwMDdjMzIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oCkBAIC0xLDEyICsxLDEyIEBACiAvKgotICogIEhvc3QgUmVzb3VyY2VzIE1JQiAtIHN0b3JhZ2UgZ3JvdXAgaW50ZXJmYWNlIC0gaHJfc3lzdGVtLmgKKyAqICBIb3N0IFJlc291cmNlcyBNSUIgLSBzdG9yYWdlIGdyb3VwIGludGVyZmFjZSAtIGhyX3N0b3JhZ2UuaAogICoKICAqLwogI2lmbmRlZiBfTUlCR1JPVVBfSFJTVE9SQUdFX0gKICNkZWZpbmUgX01JQkdST1VQX0hSU1RPUkFHRV9ICiAKIGNvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL21lbW9yeSkKLWNvbmZpZ19yZXF1aXJlKGhvc3QvaHJfZmlsZXN5cykKKy8qIGNvbmZpZ19yZXF1aXJlKGhvc3QvaHJfZmlsZXN5cykgKi8KIAogZXh0ZXJuIHZvaWQgICAgIGluaXRfaHJfc3RvcmFnZSh2b2lkKTsKIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9ocnN0b3JlOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMKaW5kZXggY2Y5MGRmMi4uZmU5NjlhZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHJwbS9oZWFkZXIuaD4KICNpbmNsdWRlIDxmY250bC5oPgogCisjaWZkZWYgSEFWRV9SUE1fUlBNRklMRVVUSUxfSAorI2luY2x1ZGUgPHJwbS9ycG1maWxldXRpbC5oPgorI2VuZGlmCisKICNpZmRlZiBIQVZFX1JQTUdFVFBBVEgKICNpbmNsdWRlIDxycG0vcnBtbWFjcm8uaD4KICNlbmRpZgpAQCAtMTU3LDEzICsxNjEsMjAgQEAKICNkZWZpbmUJSFJTV0lOU1RfREFURQkJNwogCiBzdHJ1Y3QgdmFyaWFibGU0IGhyc3dpbnN0X3ZhcmlhYmxlc1tdID0gewotICAgIHtIUlNXSU5TVF9DSEFOR0UsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfaHJzd2luc3QsIDEsIHsxfX0sCi0gICAge0hSU1dJTlNUX1VQREFURSwgQVNOX1RJTUVUSUNLUywgUk9OTFksIHZhcl9ocnN3aW5zdCwgMSwgezJ9fSwKLSAgICB7SFJTV0lOU1RfSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3dpbnN0LCAzLCB7MywgMSwgMX19LAotICAgIHtIUlNXSU5TVF9OQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2hyc3dpbnN0LCAzLCB7MywgMSwgMn19LAotICAgIHtIUlNXSU5TVF9JRCwgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9ocnN3aW5zdCwgMywgezMsIDEsIDN9fSwKLSAgICB7SFJTV0lOU1RfVFlQRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJzd2luc3QsIDMsIHszLCAxLCA0fX0sCi0gICAge0hSU1dJTlNUX0RBVEUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJzd2luc3QsIDMsIHszLCAxLCA1fX0KKyAgICB7SFJTV0lOU1RfQ0hBTkdFLCBBU05fVElNRVRJQ0tTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3dpbnN0LCAxLCB7MX19LAorICAgIHtIUlNXSU5TVF9VUERBVEUsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd2luc3QsIDEsIHsyfX0sCisgICAge0hSU1dJTlNUX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3aW5zdCwgMywgezMsIDEsIDF9fSwKKyAgICB7SFJTV0lOU1RfTkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3aW5zdCwgMywgezMsIDEsIDJ9fSwKKyAgICB7SFJTV0lOU1RfSUQsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd2luc3QsIDMsIHszLCAxLCAzfX0sCisgICAge0hSU1dJTlNUX1RZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3dpbnN0LCAzLCB7MywgMSwgNH19LAorICAgIHtIUlNXSU5TVF9EQVRFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3dpbnN0LCAzLCB7MywgMSwgNX19CiB9Owogb2lkICAgICAgICAgICAgIGhyc3dpbnN0X3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDYgfTsKIApAQCAtMTg2LDkgKzE5Nyw2IEBACiAjaWYgZGVmaW5lZChsaW51eCkgJiYgIWRlZmluZWQoSEFWRV9MSUJSUE0pCiAjZGVmaW5lCV9QQVRIX0hSU1dfZGlyZWN0b3J5CSIvdmFyL2NhY2hlL2hybWliIgogI2VuZGlmCi0jaWYgZGVmaW5lZChsaW51eCkgJiYgIWRlZmluZWQoSEFWRV9MSUJSUE0pCi0jZGVmaW5lCV9QQVRIX0hSU1dfZGlyZWN0b3J5CSIvdmFyL2NhY2hlL2hybWliIgotI2VuZGlmCiAKIHZvaWQKIGluaXRfaHJfc3dpbnN0KHZvaWQpCkBAIC0yNDQsNiArMjUyLDcgQEAKICAgICAgICAgICAgICAgICAgaHJzd2luc3RfdmFyaWFibGVzX29pZCk7CiB9CiAKKwogLyoKICAqIGhlYWRlcl9ocnN3aW5zdCguLi4KICAqIEFyZ3VtZW50czoKQEAgLTI3OCw3ICsyODcsNyBAQAogICAgICAgICAgICAodnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwogCi0gICAgKndyaXRlX21ldGhvZCA9IDA7CisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsKICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgLyogZGVmYXVsdCB0byAnbG9uZycgcmVzdWx0cyAqLwogICAgIHJldHVybiAoTUFUQ0hfU1VDQ0VFREVEKTsKIH0KQEAgLTM0OCw3ICszNTcsNyBAQAogICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAogICAgICAgICAgICAodnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KIAogICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX2luc3QiLCAiLi4uIGdldCBpbnN0YWxsZWQgUy9XIHN0YXRzICIpKTsKQEAgLTQ5MiwxMiArNTAxLDEyIEBACiAgICAgY2FzZSBIUlNXSU5TVF9EQVRFOgogICAgICAgICB7CiAjaWZkZWYgSEFWRV9MSUJSUE0KLSAgICAgICAgICAgIGludCAgICAgICAgICpycG1fZGF0YTsKKyAgICAgICAgICAgIGludDMyX3QgICAgICAgICAqcnBtX2RhdGE7CiAgICAgICAgICAgICBpZiAoIGhlYWRlckdldEVudHJ5KHN3aS0+c3dpX2gsIFJQTVRBR19JTlNUQUxMVElNRSwgTlVMTCwgKHZvaWQgKiopICZycG1fZGF0YSwgTlVMTCkgKSB7CiAgICAgICAgICAgICAgICAgdGltZV90ICAgICAgICAgIGluc3RhbGxUaW1lID0gKnJwbV9kYXRhOwogICAgICAgICAgICAgICAgIHJldCA9IGRhdGVfbl90aW1lKCZpbnN0YWxsVGltZSwgdmFyX2xlbik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldCA9IGRhdGVfbl90aW1lKDAsIHZhcl9sZW4pOworICAgICAgICAgICAgICAgIHJldCA9IGRhdGVfbl90aW1lKE5VTEwsIHZhcl9sZW4pOwogICAgICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgICAgIGlmIChzd2ktPnN3aV9kaXJlY3RvcnkgIT0gTlVMTCkgewpAQCAtNTA4LDExICs1MTcsMTIgQEAKICAgICAgICAgICAgICAgICByZXQgPSBkYXRlX25fdGltZSgmc3RhdF9idWYuc3RfbXRpbWUsIHZhcl9sZW4pOwogICAgICAgICAgICAgfSBlbHNlIHsKICNpZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotI2VuZGlmCisgICAgICAgICAgICAgICAgcmV0ID0gTlVMTDsKKyNlbHNlCiAgICAgICAgICAgICAgICAgc3ByaW50ZihzdHJpbmcsICJiYWNrIGluIHRoZSBtaXN0cyBvZiB0aW1lIik7CiAgICAgICAgICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oc3RyaW5nKTsKICAgICAgICAgICAgICAgICByZXQgPSAodV9jaGFyICopIHN0cmluZzsKKyNlbmRpZgogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIH0KQEAgLTY4NCw3ICs2OTQsNyBAQAogICAgICAgICBzd2ktPnN3aV9uYW1lWyBzaXplb2Yoc3dpLT5zd2lfbmFtZSktMSBdID0gMDsKICAgICB9CiAjZWxzZQotICAgIHNucHJpbnRmKHN3aS0+c3dpX25hbWUsIHNpemVvZihzd2ktPnN3aV9uYW1lKSwgc3dpLT5zd2lfZGVwLT5kX25hbWUpOworICAgIHNucHJpbnRmKHN3aS0+c3dpX25hbWUsIHNpemVvZihzd2ktPnN3aV9uYW1lKSwgIiVzIiwgc3dpLT5zd2lfZGVwLT5kX25hbWUpOwogICAgIHN3aS0+c3dpX25hbWVbIHNpemVvZihzd2ktPnN3aV9uYW1lKS0xIF0gPSAwOwogI2VuZGlmCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMKaW5kZXggMTM0YjI3Zi4uYjE3MjdjYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYwpAQCAtMTIyLDYgKzEyMiw4IEBACiAjaWYgZGVmaW5lZChocHV4MTApIHx8IGRlZmluZWQoaHB1eDExKQogc3RydWN0IHBzdF9zdGF0dXMgKnByb2NfdGFibGU7CiBzdHJ1Y3QgcHN0X2R5bmFtaWMgcHN0X2R5bjsKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCitzdHJ1Y3Qga2luZm9fcHJvYzIgKnByb2NfdGFibGU7CiAjZWxpZiBIQVZFX0tWTV9HRVRQUk9DUwogc3RydWN0IGtpbmZvX3Byb2MgKnByb2NfdGFibGU7CiAjZWxpZiBkZWZpbmVkKHNvbGFyaXMyKQpAQCAtMTUwLDE5ICsxNTIsMjkgQEAKICNkZWZpbmUJSFJTV1JVTlBFUkZfTUVNCQkxMAogCiBzdHJ1Y3QgdmFyaWFibGU0IGhyc3dydW5fdmFyaWFibGVzW10gPSB7Ci0gICAge0hSU1dSVU5fT1NJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJzd3J1biwgMSwgezF9fSwKLSAgICB7SFJTV1JVTl9JTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJzd3J1biwgMywgezIsIDEsIDF9fSwKLSAgICB7SFJTV1JVTl9OQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2hyc3dydW4sIDMsIHsyLCAxLCAyfX0sCi0gICAge0hSU1dSVU5fSUQsIEFTTl9PQkpFQ1RfSUQsIFJPTkxZLCB2YXJfaHJzd3J1biwgMywgezIsIDEsIDN9fSwKLSAgICB7SFJTV1JVTl9QQVRILCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2hyc3dydW4sIDMsIHsyLCAxLCA0fX0sCi0gICAge0hSU1dSVU5fUEFSQU1TLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2hyc3dydW4sIDMsIHsyLCAxLCA1fX0sCi0gICAge0hSU1dSVU5fVFlQRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJzd3J1biwgMywgezIsIDEsIDZ9fSwKLSAgICB7SFJTV1JVTl9TVEFUVVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3dydW4sIDMsIHsyLCAxLCA3fX0KKyAgICB7SFJTV1JVTl9PU0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3cnVuLCAxLCB7MX19LAorICAgIHtIUlNXUlVOX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3cnVuLCAzLCB7MiwgMSwgMX19LAorICAgIHtIUlNXUlVOX05BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd3J1biwgMywgezIsIDEsIDJ9fSwKKyAgICB7SFJTV1JVTl9JRCwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3cnVuLCAzLCB7MiwgMSwgM319LAorICAgIHtIUlNXUlVOX1BBVEgsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd3J1biwgMywgezIsIDEsIDR9fSwKKyAgICB7SFJTV1JVTl9QQVJBTVMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd3J1biwgMywgezIsIDEsIDV9fSwKKyAgICB7SFJTV1JVTl9UWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3cnVuLCAzLCB7MiwgMSwgNn19LAorICAgIHtIUlNXUlVOX1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd3J1biwgMywgezIsIDEsIDd9fQogfTsKIAogc3RydWN0IHZhcmlhYmxlNCBocnN3cnVucGVyZl92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJTV1JVTlBFUkZfQ1BVLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnN3cnVuLCAzLCB7MSwgMSwgMX19LAotICAgIHtIUlNXUlVOUEVSRl9NRU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3dydW4sIDMsIHsxLCAxLCAyfX0KKyAgICB7SFJTV1JVTlBFUkZfQ1BVLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3cnVuLCAzLCB7MSwgMSwgMX19LAorICAgIHtIUlNXUlVOUEVSRl9NRU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3dydW4sIDMsIHsxLCAxLCAyfX0KIH07CiAKIG9pZCAgICAgICAgICAgICBocnN3cnVuX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDQgfTsKQEAgLTMyNiw3ICszMzgsNyBAQAogICAgIGF1dG9fbmxpc3QoTlBST0NfU1lNQk9MLCAwLCAwKTsKICNlbmRpZgogCi0gICAgcHJvY190YWJsZSA9IDA7CisgICAgcHJvY190YWJsZSA9IE5VTEw7CiAKICAgICBSRUdJU1RFUl9NSUIoImhvc3QvaHJfc3dydW4iLCBocnN3cnVuX3ZhcmlhYmxlcywgdmFyaWFibGU0LAogICAgICAgICAgICAgICAgICBocnN3cnVuX3ZhcmlhYmxlc19vaWQpOwpAQCAtMzY5LDcgKzM4MSw3IEBACiAgICAgICAgICAgICh2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOwogICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7CiAKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAgICAgcmV0dXJuIChNQVRDSF9TVUNDRUVERUQpOwogfQpAQCAtNDUzLDcgKzQ2NSw3IEBACiAgICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIG5ld25hbWUsCiAgICAgICAgICAgICh2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOwogICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7Ci0gICAgKndyaXRlX21ldGhvZCA9IDA7CisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsKICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgLyogZGVmYXVsdCB0byAnbG9uZycgcmVzdWx0cyAqLwogCiAgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfc3dydW4iLCAiLi4uIGdldCBwcm9jZXNzIHN0YXRzICIpKTsKQEAgLTU3MCw3ICs1ODIsNyBAQAogICAgIHRpbWVfdCAgICAgICAgICBub3c7CiAgICAgc3RhdGljIGludCAgICAgIG9sZHBpZCA9IC0xOwogI2VuZGlmCi0jaWYgSEFWRV9LVk1fR0VUUFJPQ1MKKyNpZiAoZGVmaW5lZChIQVZFX0tWTV9HRVRQUk9DUykgfHwgZGVmaW5lZChIQVZFX0tWTV9HRVRQUk9DMikpCiAgICAgY2hhciAgICAgICAgICAqKmFyZ3Y7CiAjZW5kaWYKICNpZmRlZiBsaW51eApAQCAtNjcyLDYgKzY4NCwxMiBAQAogICAgICAgICBjcCA9IHN0cmNocihzdHJpbmcsICcgJyk7CiAgICAgICAgIGlmIChjcCAhPSBOVUxMKQogICAgICAgICAgICAgKmNwID0gJ1wwJzsKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIHN0cmxjcHkoc3RyaW5nLCBwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ucF9jb21tLCBzaXplb2Yoc3RyaW5nKSk7CisgICAgICAgIC8qIHByb2Nlc3MgbmFtZTogdHJ1bmNhdGUgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgc3BhY2UgKi8KKyAgICAgICAgY3AgPSBzdHJjaHIoc3RyaW5nLCAnICcpOworICAgICAgICBpZiAoY3AgIT0gTlVMTCkKKyAgICAgICAgICAgICpjcCA9ICdcMCc7CiAjZWxpZiBIQVZFX0tWTV9HRVRQUk9DUwogICAgICNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMTQKICAgICAgICAgc3RyY3B5KHN0cmluZywgcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLmtpX2NvbW0pOwpAQCAtNzg5LDYgKzgwNywxMiBAQAogICAgICAgICBjcCA9IHN0cmNocihzdHJpbmcsICcgJyk7CiAgICAgICAgIGlmIChjcCAhPSBOVUxMKQogICAgICAgICAgICAgKmNwID0gJ1wwJzsKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIC8qIFNob3VsZCBiZSBwYXRoLCBidXQgdGhpcyBpcyBub3QgYXZhaWxhYmxlLCBqdXN0IHVzZSBhcmd2WzBdIGFnYWluICovCisgICAgICAgIHN0cmxjcHkoc3RyaW5nLCBwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ucF9jb21tLCBzaXplb2Yoc3RyaW5nKSk7CisgICAgICAgIGNwID0gc3RyY2hyKHN0cmluZywgJyAnKTsKKyAgICAgICAgaWYgKGNwICE9IE5VTEwpCisgICAgICAgICAgICAqY3AgPSAnXDAnOwogI2VsaWYgSEFWRV9LVk1fR0VUUFJPQ1MKICAgICAjaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDE0CiAgICAgICAgIHN0cmNweShzdHJpbmcsIHByb2NfdGFibGVbTG93UHJvY0luZGV4XS5raV9jb21tKTsKQEAgLTg5MCw2ICs5MTQsMTcgQEAKICAgICAgICAgICAgIHNwcmludGYoc3RyaW5nLCAiJXMiLCBjcCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc3RyaW5nWzBdID0gJ1wwJzsKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIHN0cmluZ1swXSA9IDA7CisgICAgICAgIGFyZ3YgPSBrdm1fZ2V0YXJndjIoa2QsIHByb2NfdGFibGUgKyBMb3dQcm9jSW5kZXgsIHNpemVvZihzdHJpbmcpKTsKKyAgICAgICAgaWYgKGFyZ3YpCisgICAgICAgICAgICBhcmd2Kys7CisgICAgICAgIHdoaWxlIChhcmd2ICYmICphcmd2KSB7CisgICAgICAgICAgICBpZiAoc3RyaW5nWzBdICE9IDApCisgICAgICAgICAgICAgICAgc3RyY2F0KHN0cmluZywgIiAiKTsKKyAgICAgICAgICAgIHN0cmNhdChzdHJpbmcsICphcmd2KTsKKyAgICAgICAgICAgIGFyZ3YrKzsKKyAgICAgICAgfQogI2VsaWYgSEFWRV9LVk1fR0VUUFJPQ1MKICAgICAgICAgc3RyaW5nWzBdID0gMDsKICAgICAgICAgYXJndiA9IGt2bV9nZXRhcmd2KGtkLCBwcm9jX3RhYmxlICsgTG93UHJvY0luZGV4LCBzaXplb2Yoc3RyaW5nKSk7CkBAIC05MDMsNyArOTM4LDcgQEAKICAgICAgICAgfQogI2VsaWYgZGVmaW5lZChsaW51eCkKICAgICAgICAgbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICBpZiggKGNwPWdldF9wcm9jX25hbWVfZnJvbV9jbWRsaW5lKHBpZCxidWYsc2l6ZW9mKGJ1ZiktMikpID09IE5VTEwgKSB7CisJaWYoIChjcD1nZXRfcHJvY19uYW1lX2Zyb21fY21kbGluZShwaWQsYnVmLHNpemVvZihidWYpLTIpKSA9PSBOVUxMICkgewogICAgICAgICAgICAgc3RyY3B5KHN0cmluZywgIiIpOwogICAgICAgICAgICAgKnZhcl9sZW4gPSAwOwogICAgICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgc3RyaW5nOwpAQCAtOTU3LDYgKzk5MiwxMSBAQAogCQkJbG9uZ19yZXR1cm4gPSAyOwkvKiBrZXJuZWwgcHJvY2VzcyAqLwogCQl9IGVsc2UKIAkJCWxvbmdfcmV0dXJuID0gNDsJLyogYXBwbGljYXRpb24gKi8KKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIGlmIChwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ucF9mbGFnICYgUF9TWVNURU0pCisJICAgIGxvbmdfcmV0dXJuID0gMjsJLyogb3BlcmF0aW5nU3lzdGVtICovCisJZWxzZQorCSAgICBsb25nX3JldHVybiA9IDQ7CS8qIGFwcGxpY2F0aW9uICovCiAjZWxpZiBIQVZFX0tWTV9HRVRQUk9DUwogICAgICNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMTQKIAlpZiAocHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLmtpX2ZsYWcgJiBQX1NZU1RFTSkgewpAQCAtMTAxNCw3ICsxMDU0LDkgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjZWxzZQotI2lmIEhBVkVfS1ZNX0dFVFBST0NTCisjaWYgSEFWRV9LVk1fR0VUUFJPQzIKKyAgICAgICAgc3dpdGNoIChwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ucF9zdGF0KSB7CisjZWxpZiBIQVZFX0tWTV9HRVRQUk9DUwogICAgICNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMTQKICAgICAgICAgc3dpdGNoIChwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ua2lfc3RhdCkgewogICAgICNlbGlmIGRlZmluZWQoZHJhZ29uZmx5KSAmJiBfX0RyYWdvbkZseV92ZXJzaW9uID49IDE5MDAwMApAQCAtMTEwOSw2ICsxMTUxLDEwIEBACiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IHByb2NfYnVmLT5wX3V0aW1lICogMTAwICsgcHJvY19idWYtPnBfc3RpbWUgKiAxMDA7CiAjZW5kaWYKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIGxvbmdfcmV0dXJuID0gcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLnBfdXRpY2tzICsKKyAgICAgICAgICAgIHByb2NfdGFibGVbTG93UHJvY0luZGV4XS5wX3N0aWNrcyArCisgICAgICAgICAgICBwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ucF9pdGlja3M7CiAjZWxpZiBIQVZFX0tWTV9HRVRQUk9DUwogICAgICNpZiBkZWZpbmVkKE5PVF9ERUZJTkVEKSAmJiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMTQKICAgICAgICAgLyogWFhYOiBBY2Nlc3Npbmcga2lfcGFkZHIgY2F1c2VzIHNpZzEwIC4uLgpAQCAtMTIyNSw2ICsxMjcxLDExIEBACiAjZW5kaWYKICNlbGlmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLnBpX3NpemUgKiBnZXRwYWdlc2l6ZSgpIC8gMTAyNDsKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIGxvbmdfcmV0dXJuID0gcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLnBfdm1fdHNpemUgKworICAgICAgICAgICAgcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLnBfdm1fc3NpemUgKworICAgICAgICAgICAgcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLnBfdm1fZHNpemU7CisgICAgICAgIGxvbmdfcmV0dXJuID0gbG9uZ19yZXR1cm4gKiAoZ2V0cGFnZXNpemUoKSAvIDEwMjQpOwogI2VsaWYgSEFWRV9LVk1fR0VUUFJPQ1MgJiYgIWRlZmluZWQoZGFyd2luOCkKICAgI2lmIGRlZmluZWQoTk9UX0RFRklORUQpICYmIGRlZmluZWQoZnJlZWJzZDUpICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAxNAogCSAgICAvKiBYWFgKQEAgLTE0OTUsNiArMTU0NiwxNCBAQAogCQkJcHJvY190YWJsZSA9IHJlYWxsb2MocHJvY190YWJsZSwgYXZhaWwgKiBzaXplb2YocHJvY190YWJsZVswXSkpOwogCQl9CiAgICAgfQorI2VsaWYgSEFWRV9LVk1fR0VUUFJPQzIKKyAgICB7CisgICAgICAgIGlmIChrZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBucHJvYyA9IDA7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcHJvY190YWJsZSA9IGt2bV9nZXRwcm9jMihrZCwgS0VSTl9QUk9DX0FMTCwgMCwgc2l6ZW9mIChzdHJ1Y3Qga2luZm9fcHJvYzIpLCAmbnByb2MpOworICAgIH0KICNlbGlmIEhBVkVfS1ZNX0dFVFBST0NTCiAgICAgewogICAgICAgICBpZiAoa2QgPT0gTlVMTCkgewpAQCAtMTU1NSw2ICsxNjE0LDkgQEAKICAgICAgICAgcmV0dXJuIHByb2NfdGFibGVbY3VycmVudF9wcm9jX2VudHJ5KytdLnBzdF9waWQ7CiAjZWxpZiBkZWZpbmVkKHNvbGFyaXMyKQogICAgICAgICByZXR1cm4gcHJvY190YWJsZVtjdXJyZW50X3Byb2NfZW50cnkrK107CisjZWxpZiBIQVZFX0tWTV9HRVRQUk9DMgorICAgICAgICBpZiAocHJvY190YWJsZVtjdXJyZW50X3Byb2NfZW50cnldLnBfc3RhdCAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIHByb2NfdGFibGVbY3VycmVudF9wcm9jX2VudHJ5KytdLnBfcGlkOwogI2VsaWYgSEFWRV9LVk1fR0VUUFJPQ1MKICAgICAjaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDE0CiAgICAgICAgIGlmIChwcm9jX3RhYmxlW2N1cnJlbnRfcHJvY19lbnRyeV0ua2lfc3RhdCAhPSAwKQpAQCAtMTU5NSwxMyArMTY1NywxMyBAQAogaW50CiBjb3VudF9wcm9jZXNzZXModm9pZCkKIHsKLSNpZiAhKGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoY3lnd2luKSB8fCBkZWZpbmVkKGhwdXgxMCkgfHwgZGVmaW5lZChocHV4MTEpIHx8IGRlZmluZWQoc29sYXJpczIpIHx8IEhBVkVfS1ZNX0dFVFBST0NTIHx8IGRlZmluZWQoZHluaXgpKQorI2lmICEoZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChjeWd3aW4pIHx8IGRlZmluZWQoaHB1eDEwKSB8fCBkZWZpbmVkKGhwdXgxMSkgfHwgZGVmaW5lZChzb2xhcmlzMikgfHwgSEFWRV9LVk1fR0VUUFJPQ1MgfHwgSEFWRV9LVk1fR0VUUFJPQzIgfHwgZGVmaW5lZChkeW5peCkpCiAgICAgaW50ICAgICAgICAgICAgIGk7CiAjZW5kaWYKICAgICBpbnQgICAgICAgICAgICAgdG90YWwgPSAwOwogCiAgICAgSW5pdF9IUl9TV1J1bigpOwotI2lmIGRlZmluZWQoaHB1eDEwKSB8fCBkZWZpbmVkKGhwdXgxMSkgfHwgSEFWRV9LVk1fR0VUUFJPQ1MgfHwgZGVmaW5lZChzb2xhcmlzMikKKyNpZiBkZWZpbmVkKGhwdXgxMCkgfHwgZGVmaW5lZChocHV4MTEpIHx8IEhBVkVfS1ZNX0dFVFBST0NTIHx8IEhBVkVfS1ZNX0dFVFBST0MyIHx8IGRlZmluZWQoc29sYXJpczIpCiAgICAgdG90YWwgPSBucHJvYzsKICNlbHNlCiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKQEAgLTE2MTUsNyArMTY3Nyw3IEBACiAjZW5kaWYKICAgICAgICAgKyt0b3RhbDsKICAgICB9Ci0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICFocHV4MTAgJiYgIWhwdXgxMSAmJiAhSEFWRV9LVk1fR0VUUFJPQ1MgJiYgIXNvbGFyaXMyICovCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICFocHV4MTAgJiYgIWhwdXgxMSAmJiAhSEFWRV9LVk1fR0VUUFJPQ1MgJiYgIUhBVkVfS1ZNX0dFVFBST0MyICYmICFzb2xhcmlzMiAqLwogICAgIEVuZF9IUl9TV1J1bigpOwogICAgIHJldHVybiB0b3RhbDsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jCmluZGV4IGNiYzhmYzguLjg4YjBmYmIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYwpAQCAtMTA2LDcgKzEwNiw3IEBACiBzdGF0aWMgaW50ICAgICAgZ2V0X2xvYWRfZGV2KHZvaWQpOwogc3RhdGljIGludCAgICAgIGNvdW50X3VzZXJzKHZvaWQpOwogZXh0ZXJuIGludCAgICAgIGNvdW50X3Byb2Nlc3Nlcyh2b2lkKTsKLQorZXh0ZXJuIGludCAgICAgIHN3cnVuX2NvdW50X3Byb2Nlc3Nlcyh2b2lkKTsKIAogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKQEAgLTEyNCwyMyArMTI0LDM3IEBACiAKICNpZiBkZWZpbmVkKHNvbGFyaXMyKQogc3RydWN0IHZhcmlhYmxlMiBocnN5c3RlbV92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJTWVNfVVBUSU1FLCBBU05fVElNRVRJQ0tTLCBST05MWSwgdmFyX2hyc3lzLCAxLCB7MX19LAotICAgIHtIUlNZU19EQVRFLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9ocnN5cywgMSwgezJ9fSwKLSAgICB7SFJTWVNfTE9BRF9ERVYsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3lzLCAxLCB7M319LAotICAgIHtIUlNZU19MT0FEX1BBUkFNLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9ocnN5cywgMSwgezR9fSwKLSAgICB7SFJTWVNfVVNFUlMsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9ocnN5cywgMSwgezV9fSwKLSAgICB7SFJTWVNfUFJPQ1MsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9ocnN5cywgMSwgezZ9fSwKLSAgICB7SFJTWVNfTUFYUFJPQ1MsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3lzLCAxLCB7N319CisgICAge0hSU1lTX1VQVElNRSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezF9fSwKKyAgICB7SFJTWVNfREFURSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfaHJzeXMsIDEsIHsyfX0sCisgICAge0hSU1lTX0xPQURfREVWLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezN9fSwKKyAgICB7SFJTWVNfTE9BRF9QQVJBTSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfaHJzeXMsIDEsIHs0fX0sCisgICAge0hSU1lTX1VTRVJTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs1fX0sCisgICAge0hSU1lTX1BST0NTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs2fX0sCisgICAge0hSU1lTX01BWFBST0NTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezd9fQogfTsKICNlbHNlCiBzdHJ1Y3QgdmFyaWFibGUyIGhyc3lzdGVtX3ZhcmlhYmxlc1tdID0gewotICAgIHtIUlNZU19VUFRJTUUsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfaHJzeXMsIDEsIHsxfX0sCi0gICAge0hSU1lTX0RBVEUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJzeXMsIDEsIHsyfX0sCi0gICAge0hSU1lTX0xPQURfREVWLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnN5cywgMSwgezN9fSwKLSAgICB7SFJTWVNfTE9BRF9QQVJBTSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9ocnN5cywgMSwgezR9fSwKLSAgICB7SFJTWVNfVVNFUlMsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9ocnN5cywgMSwgezV9fSwKLSAgICB7SFJTWVNfUFJPQ1MsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9ocnN5cywgMSwgezZ9fSwKLSAgICB7SFJTWVNfTUFYUFJPQ1MsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3lzLCAxLCB7N319CisgICAge0hSU1lTX1VQVElNRSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezF9fSwKKyAgICB7SFJTWVNfREFURSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezJ9fSwKKyAgICB7SFJTWVNfTE9BRF9ERVYsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7M319LAorICAgIHtIUlNZU19MT0FEX1BBUkFNLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7NH19LAorICAgIHtIUlNZU19VU0VSUywgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7NX19LAorICAgIHtIUlNZU19QUk9DUywgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7Nn19LAorICAgIHtIUlNZU19NQVhQUk9DUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs3fX0KIH07CiAjZW5kaWYKIG9pZCAgICAgICAgICAgICBocnN5c3RlbV92YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAxIH07CkBAIC0xOTEsNyArMjA1LDcgQEAKICAgICAgICAgICAgKHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKIAotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KICAgICByZXR1cm4gKE1BVENIX1NVQ0NFRURFRCk7CiB9IC8qIGVuZCBoZWFkZXJfaHJzeXMgKi8KQEAgLTIzOCw3ICsyNTIsNyBAQAogI2lmIGRlZmluZWQoSEFWRV9NS1RJTUUpICYmIGRlZmluZWQoSEFWRV9TVElNRSkKICAgICAgICAgKndyaXRlX21ldGhvZD1uc19zZXRfdGltZTsKICNlbmRpZgotICAgICAgICAodm9pZCAqKSB0aW1lKCZub3cpOworICAgICAgICB0aW1lKCZub3cpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBkYXRlX25fdGltZSgmbm93LCB2YXJfbGVuKTsKICAgICBjYXNlIEhSU1lTX0xPQURfREVWOgogICAgICAgICBsb25nX3JldHVybiA9IGdldF9sb2FkX2RldigpOwpAQCAtMjcwLDcgKzI4NCw5IEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gY291bnRfdXNlcnMoKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICBjYXNlIEhSU1lTX1BST0NTOgotI2lmIFVTSU5HX0hPU1RfSFJfU1dSVU5fTU9EVUxFCisjaWYgVVNJTkdfSE9TVF9EQVRBX0FDQ0VTU19TV1JVTl9NT0RVTEUKKyAgICAgICAgbG9uZ19yZXR1cm4gPSBzd3J1bl9jb3VudF9wcm9jZXNzZXMoKTsKKyNlbGlmIFVTSU5HX0hPU1RfSFJfU1dSVU5fTU9EVUxFCiAgICAgICAgIGxvbmdfcmV0dXJuID0gY291bnRfcHJvY2Vzc2VzKCk7CiAjZWxzZQogI2lmIE5FVFNOTVBfTk9fRFVNTVlfVkFMVUVTCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM3NWIxYQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYwpAQCAtMCwwICsxLDQyNCBAQAorLyoKKyAqICBIb3N0IFJlc291cmNlcyBNSUIgLSBGaWxlIFN5c3RlbSBkZXZpY2UgZ3JvdXAgaW1wbGVtZW50YXRpb24gKEhBTCByZXdyaXRlKSAtIGhyaF9maWxlc3lzLmMKKyAqCisgKi8KKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL21lbW9yeS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaD4KKyNpbmNsdWRlICJob3N0X3Jlcy5oIgorI2luY2x1ZGUgImhyaF9maWxlc3lzLmgiCisjaW5jbHVkZSAiaHJoX3N0b3JhZ2UuaCIKKyNpbmNsdWRlICJocl9kaXNrLmgiCisjaW5jbHVkZSA8bmV0LXNubXAvdXRpbGl0aWVzLmg+CisKKyNpZiBIQVZFX01OVEVOVF9ICisjaW5jbHVkZSA8bW50ZW50Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19NTlRFTlRfSAorI2luY2x1ZGUgPHN5cy9tbnRlbnQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX01OVFRBQl9ICisjaW5jbHVkZSA8c3lzL21udHRhYi5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU1RBVFZGU19ICisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1ZGU19ICisjaW5jbHVkZSA8c3lzL3Zmcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfTU9VTlRfSAorI2luY2x1ZGUgPHN5cy9tb3VudC5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2lmIEhBVkVfU1RSSU5HX0gKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKKyNpbmNsdWRlIDxzeXMvbW50Y3RsLmg+CisjaW5jbHVkZSA8c3lzL3Ztb3VudC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KKyNlbmRpZgorCisKKyNkZWZpbmUgSFJGU19NT05PVE9OSUNBTExZX0lOQ1JFQVNJTkcKKworICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCisJICoKKwkgKiAgS2VybmVsICYgaW50ZXJmYWNlIGluZm9ybWF0aW9uLAorCSAqICAgYW5kIGludGVybmFsIGZvcndhcmQgZGVjbGFyYXRpb25zCisJICoKKwkgKioqKioqKioqKioqKioqKioqKioqLworbmV0c25tcF9mc3lzX2luZm8gKkhSRlNfZW50cnk7CisKKyNkZWZpbmUJRlVMTF9EVU1QCTAKKyNkZWZpbmUJUEFSVF9EVU1QCTEKKworZXh0ZXJuIHZvaWQgICAgIEluaXRfSFJfRmlsZVN5cyh2b2lkKTsKK2V4dGVybiBpbnQgICAgICBHZXRfTmV4dF9IUl9GaWxlU3lzKHZvaWQpOworY2hhciAgICAgICAgICAgKmNvb2tfZGV2aWNlKGNoYXIgKik7CitzdGF0aWMgdV9jaGFyICAqd2hlbl9kdW1wZWQoY2hhciAqZmlsZXN5cywgaW50IGxldmVsLCBzaXplX3QgKiBsZW5ndGgpOworaW50ICAgICAgICAgICAgIGhlYWRlcl9ocmhmaWxlc3lzKHN0cnVjdCB2YXJpYWJsZSAqLCBvaWQgKiwgc2l6ZV90ICosIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqLCBXcml0ZU1ldGhvZCAqKik7CisKKyAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgorCSAqCisJICogIEluaXRpYWxpc2F0aW9uICYgY29tbW9uIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucworCSAqCisJICoqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBIUkZTWVNfSU5ERVgJCTEKKyNkZWZpbmUgSFJGU1lTX01PVU5UCQkyCisjZGVmaW5lIEhSRlNZU19STU9VTlQJCTMKKyNkZWZpbmUgSFJGU1lTX1RZUEUJCTQKKyNkZWZpbmUgSFJGU1lTX0FDQ0VTUwkJNQorI2RlZmluZSBIUkZTWVNfQk9PVAkJNgorI2RlZmluZSBIUkZTWVNfU1RPUkVJRFgJCTcKKyNkZWZpbmUgSFJGU1lTX0ZVTExEVU1QCQk4CisjZGVmaW5lIEhSRlNZU19QQVJURFVNUAkJOQorCitzdHJ1Y3QgdmFyaWFibGU0IGhyZnN5c192YXJpYWJsZXNbXSA9IHsKKyAgICB7SFJGU1lTX0lOREVYLCAgICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyaGZpbGVzeXMsIDIsIHsxLCAxfX0sCisgICAge0hSRlNZU19NT1VOVCwgICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmhmaWxlc3lzLCAyLCB7MSwgMn19LAorICAgIHtIUkZTWVNfUk1PVU5ULCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJoZmlsZXN5cywgMiwgezEsIDN9fSwKKyAgICB7SFJGU1lTX1RZUEUsICAgICBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyaGZpbGVzeXMsIDIsIHsxLCA0fX0sCisgICAge0hSRlNZU19BQ0NFU1MsICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmhmaWxlc3lzLCAyLCB7MSwgNX19LAorICAgIHtIUkZTWVNfQk9PVCwgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJoZmlsZXN5cywgMiwgezEsIDZ9fSwKKyAgICB7SFJGU1lTX1NUT1JFSURYLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyaGZpbGVzeXMsIDIsIHsxLCA3fX0sCisgICAge0hSRlNZU19GVUxMRFVNUCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmhmaWxlc3lzLCAyLCB7MSwgOH19LAorICAgIHtIUkZTWVNfUEFSVERVTVAsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJoZmlsZXN5cywgMiwgezEsIDl9fSwKK307CitvaWQgICAgICAgICAgICAgaHJmc3lzX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDMsIDggfTsKKwordm9pZAoraW5pdF9ocmhfZmlsZXN5cyh2b2lkKQoreworICAgIFJFR0lTVEVSX01JQigiaG9zdC9ocl9maWxlc3lzIiwgaHJmc3lzX3ZhcmlhYmxlcywgdmFyaWFibGU0LAorICAgICAgICAgICAgICAgICBocmZzeXNfdmFyaWFibGVzX29pZCk7Cit9CisKKy8qCisgKiBoZWFkZXJfaHJoZmlsZXN5cyguLi4KKyAqIEFyZ3VtZW50czoKKyAqIHZwICAgICBJTiAgICAgIC0gcG9pbnRlciB0byB2YXJpYWJsZSBlbnRyeSB0aGF0IHBvaW50cyBoZXJlCisgKiBuYW1lICAgIElOL09VVCAgLSBJTi9uYW1lIHJlcXVlc3RlZCwgT1VUL25hbWUgZm91bmQKKyAqIGxlbmd0aCAgSU4vT1VUICAtIGxlbmd0aCBvZiBJTi9PVVQgb2lkJ3MgCisgKiBleGFjdCAgIElOICAgICAgLSBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQKKyAqIHZhcl9sZW4gT1VUICAgICAtIGxlbmd0aCBvZiB2YXJpYWJsZSBvciAwIGlmIGZ1bmN0aW9uIHJldHVybmVkCisgKiB3cml0ZV9tZXRob2QKKyAqIAorICovCisKK2ludAoraGVhZGVyX2hyaGZpbGVzeXMoc3RydWN0IHZhcmlhYmxlICp2cCwKKyAgICAgICAgICAgICAgICAgb2lkICogbmFtZSwKKyAgICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAorICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKK3sKKyNkZWZpbmUgSFJGU1lTX0VOVFJZX05BTUVfTEVOR1RICTExCisgICAgb2lkICAgICAgICAgICAgIG5ld25hbWVbTUFYX09JRF9MRU5dOworICAgIGludCAgICAgICAgICAgICBmc3lzX2lkeCwgTG93SW5kZXggPSAtMTsKKyAgICBpbnQgICAgICAgICAgICAgcmVzdWx0OworCisgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfZmlsZXN5cyIsICJ2YXJfaHJoZmlsZXN5czogIikpOworICAgIERFQlVHTVNHT0lEKCgiaG9zdC9ocl9maWxlc3lzIiwgbmFtZSwgKmxlbmd0aCkpOworICAgIERFQlVHTVNHKCgiaG9zdC9ocl9maWxlc3lzIiwgIiAlZFxuIiwgZXhhY3QpKTsKKworICAgIG1lbWNweSgoY2hhciAqKSBuZXduYW1lLCAoY2hhciAqKSB2cC0+bmFtZSwgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7CisgICAgLyoKKyAgICAgKiBGaW5kICJuZXh0IiBmaWxlIHN5c3RlbSBlbnRyeSAKKyAgICAgKi8KKworICAgIEluaXRfSFJfRmlsZVN5cygpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgZnN5c19pZHggPSBHZXRfTmV4dF9IUl9GaWxlU3lzKCk7CisgICAgICAgIGlmIChmc3lzX2lkeCA9PSAtMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBuZXduYW1lW0hSRlNZU19FTlRSWV9OQU1FX0xFTkdUSF0gPSBmc3lzX2lkeDsKKyAgICAgICAgcmVzdWx0ID0gc25tcF9vaWRfY29tcGFyZShuYW1lLCAqbGVuZ3RoLCBuZXduYW1lLCB2cC0+bmFtZWxlbiArIDEpOworICAgICAgICBpZiAoZXhhY3QgJiYgKHJlc3VsdCA9PSAwKSkgeworICAgICAgICAgICAgTG93SW5kZXggPSBmc3lzX2lkeDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICgoIWV4YWN0ICYmIChyZXN1bHQgPCAwKSkgJiYKKyAgICAgICAgICAgIChMb3dJbmRleCA9PSAtMSB8fCBmc3lzX2lkeCA8IExvd0luZGV4KSkgeworICAgICAgICAgICAgTG93SW5kZXggPSBmc3lzX2lkeDsKKyNpZmRlZiBIUkZTX01PTk9UT05JQ0FMTFlfSU5DUkVBU0lORworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChMb3dJbmRleCA9PSAtMSkgeworICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9maWxlc3lzIiwgIi4uLiBpbmRleCBvdXQgb2YgcmFuZ2VcbiIpKTsKKyAgICAgICAgcmV0dXJuIChNQVRDSF9GQUlMRUQpOworICAgIH0KKworICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAorICAgICAgICAgICAodnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKKyAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOworICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCisKKyAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9maWxlc3lzIiwgIi4uLiBnZXQgZmlsZXN5cyBzdGF0cyAiKSk7CisgICAgREVCVUdNU0dPSUQoKCJob3N0L2hyX2ZpbGVzeXMiLCBuYW1lLCAqbGVuZ3RoKSk7CisgICAgREVCVUdNU0coKCJob3N0L2hyX2ZpbGVzeXMiLCAiXG4iKSk7CisKKyAgICByZXR1cm4gTG93SW5kZXg7Cit9CisKKworb2lkICAgICAgICAgICAgIGZzeXNfdHlwZV9pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMywgOSwgMSB9OyAgICAgLyogaHJGU090aGVyICovCitpbnQgICAgICAgICAgICAgZnN5c190eXBlX2xlbiA9CisgICAgc2l6ZW9mKGZzeXNfdHlwZV9pZCkgLyBzaXplb2YoZnN5c190eXBlX2lkWzBdKTsKKworCisKKyAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgorCSAqCisJICogIFN5c3RlbSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMKKwkgKgorCSAqKioqKioqKioqKioqKioqKioqKiovCisKKwordV9jaGFyICAgICAgICAgKgordmFyX2hyaGZpbGVzeXMoc3RydWN0IHZhcmlhYmxlICp2cCwKKyAgICAgICAgICAgICAgb2lkICogbmFtZSwKKyAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAorICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgZnN5c19pZHg7CisgICAgc3RhdGljIGNoYXIgICAgIHN0cmluZ1sxMDI0XTsKKworICAgIGZzeXNfaWR4ID0KKyAgICAgICAgaGVhZGVyX2hyaGZpbGVzeXModnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCk7CisgICAgaWYgKGZzeXNfaWR4ID09IE1BVENIX0ZBSUxFRCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworICAgIGNhc2UgSFJGU1lTX0lOREVYOgorICAgICAgICBsb25nX3JldHVybiA9IGZzeXNfaWR4OworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOworICAgIGNhc2UgSFJGU1lTX01PVU5UOgorICAgICAgICBzbnByaW50ZihzdHJpbmcsIHNpemVvZihzdHJpbmcpLCBIUkZTX2VudHJ5LT5wYXRoKTsKKyAgICAgICAgc3RyaW5nWyBzaXplb2Yoc3RyaW5nKS0xIF0gPSAwOworICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihzdHJpbmcpOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBzdHJpbmc7CisgICAgY2FzZSBIUkZTWVNfUk1PVU5UOgorICAgICAgICBpZiAoSFJGU19lbnRyeS0+ZmxhZ3MgJiBORVRTTk1QX0ZTX0ZMQUdfUkVNT1RFKSB7CisgICAgICAgICAgICBzbnByaW50ZihzdHJpbmcsIHNpemVvZihzdHJpbmcpLCBIUkZTX2VudHJ5LT5kZXZpY2UpOworICAgICAgICAgICAgc3RyaW5nWyBzaXplb2Yoc3RyaW5nKS0xIF0gPSAwOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHN0cmluZ1swXSA9ICdcMCc7CisgICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN0cmluZyk7CisgICAgICAgIHJldHVybiAodV9jaGFyICopIHN0cmluZzsKKworICAgIGNhc2UgSFJGU1lTX1RZUEU6CisgICAgICAgIGZzeXNfdHlwZV9pZFtmc3lzX3R5cGVfbGVuIC0gMV0gPSAKKyAgICAgICAgICAgIChIUkZTX2VudHJ5LT50eXBlID4gX05FVFNOTVBfRlNfVFlQRV9MT0NBTCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0ZTX1RZUEVfT1RIRVIgOiBIUkZTX2VudHJ5LT50eXBlKTsKKyAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoZnN5c190eXBlX2lkKTsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgZnN5c190eXBlX2lkOworCisgICAgY2FzZSBIUkZTWVNfQUNDRVNTOgorCWxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+ZmxhZ3MgJiBORVRTTk1QX0ZTX0ZMQUdfUk9OTFkgPyAyIDogMTsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKKyAgICBjYXNlIEhSRlNZU19CT09UOgorCWxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+ZmxhZ3MgJiBORVRTTk1QX0ZTX0ZMQUdfQk9PVEFCTEUgPyAxIDogMjsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKKyAgICBjYXNlIEhSRlNZU19TVE9SRUlEWDoKKyAgICAgICAgbG9uZ19yZXR1cm4gPSBmc3lzX2lkeCArIE5FVFNOTVBfTUVNX1RZUEVfTUFYOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOworICAgIGNhc2UgSFJGU1lTX0ZVTExEVU1QOgorICAgICAgICByZXR1cm4gd2hlbl9kdW1wZWQoSFJGU19lbnRyeS0+cGF0aCwgRlVMTF9EVU1QLCB2YXJfbGVuKTsKKyAgICBjYXNlIEhSRlNZU19QQVJURFVNUDoKKyAgICAgICAgcmV0dXJuIHdoZW5fZHVtcGVkKEhSRlNfZW50cnktPnBhdGgsIFBBUlRfRFVNUCwgdmFyX2xlbik7CisgICAgZGVmYXVsdDoKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBkIiwgInVua25vd24gc3ViLWlkICVkIGluIHZhcl9ocmhmaWxlc3lzXG4iLAorICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCisJICoKKwkgKiAgSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCisJICoKKwkgKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIGludCAgICAgIEhSRlNfaW5kZXg7CisKK3ZvaWQKK0luaXRfSFJfRmlsZVN5cyh2b2lkKQoreworICAgIG5ldHNubXBfY2FjaGUgKmMgPSBuZXRzbm1wX2ZzeXNfZ2V0X2NhY2hlKCk7CisgICAgbmV0c25tcF9jYWNoZV9jaGVja19hbmRfcmVsb2FkKCBjICk7CisKKyAgICBIUkZTX2VudHJ5ID0gTlVMTDsKK30KKworaW50CitHZXRfTmV4dF9IUl9GaWxlU3lzKHZvaWQpCit7CisgICAgaWYgKCBIUkZTX2VudHJ5ICkgeworICAgICAgICBIUkZTX2VudHJ5ID0gbmV0c25tcF9mc3lzX2dldF9uZXh0KCBIUkZTX2VudHJ5ICk7CisgICAgfSBlbHNlIHsgICAgIAorICAgICAgICBIUkZTX2VudHJ5ID0gbmV0c25tcF9mc3lzX2dldF9maXJzdCgpOworICAgIH0KKyAgICAvKiBTa2lwICJpbmFjdGl2ZSIgZW50cmllcyAqLworICAgIHdoaWxlICggSFJGU19lbnRyeSAmJiAhKEhSRlNfZW50cnktPmZsYWdzICYgTkVUU05NUF9GU19GTEFHX0FDVElWRSkpCisgICAgICAgIEhSRlNfZW50cnkgPSBuZXRzbm1wX2ZzeXNfZ2V0X25leHQoIEhSRlNfZW50cnkgKTsKKworICAgIHJldHVybiAoSFJGU19lbnRyeSA/IEhSRlNfZW50cnktPmlkeC5vaWRzWzBdIDogLTEgKTsKK30KKworCisKK3N0YXRpYyB1X2NoYXIgICoKK3doZW5fZHVtcGVkKGNoYXIgKmZpbGVzeXMsIGludCBsZXZlbCwgc2l6ZV90ICogbGVuZ3RoKQoreworICAgIHRpbWVfdCAgICAgICAgICBkdW1wZGF0ZSA9IDAsIHRtcDsKKyAgICBGSUxFICAgICAgICAgICAqZHVtcF9mcDsKKyAgICBjaGFyICAgICAgICAgICAgbGluZVsxMDI0XTsKKyAgICBjaGFyICAgICAgICAgICAqY3AxLCAqY3AyLCAqY3AzOworCisgICAgLyoKKyAgICAgKiBMb29rIGZvciB0aGUgcmVsZXZlbnQgZW50cmllcyBpbiAvZXRjL2R1bXBkYXRlcworICAgICAqCisgICAgICogVGhpcyBpcyBjb21wbGljYXRlZCBieSB0aGUgZmFjdCB0aGF0IGRpc2tzIGFyZQorICAgICAqICAgbW91bnRlZCB1c2luZyBibG9jayBkZXZpY2VzLCBidXQgZHVtcHMgYXJlCisgICAgICogICBkb25lIHZpYSB0aGUgcmF3IGNoYXJhY3RlciBkZXZpY2VzLgorICAgICAqIFRodXMgdGhlIGRldmljZSBuYW1lcyBpbiAvZXRjL2R1bXBkYXRlcyBhbmQKKyAgICAgKiAgIC9ldGMvbW50dGFiIGRvbid0IG1hdGNoLgorICAgICAqICAgVGhlc2UgY29tcGFyaXNvbnMgYXJlIHRoZXJlZm9yZSBtYWRlIHVzaW5nIHRoZQorICAgICAqICAgZmluYWwgcG9ydGlvbiBvZiB0aGUgZGV2aWNlIG5hbWUgb25seS4KKyAgICAgKi8KKworICAgIGlmICgqZmlsZXN5cyA9PSAnXDAnKSAgICAgICAvKiBObyBmaWxlc3lzdGVtIG5hbWU/ICovCisgICAgICAgIHJldHVybiBkYXRlX25fdGltZShOVUxMLCBsZW5ndGgpOworICAgIGNwMSA9IHN0cnJjaHIoZmlsZXN5cywgJy8nKTsgICAgICAgIC8qIEZpbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgY3VycmVudCBGUyAqLworCisgICAgaWYgKGNwMSA9PSBOVUxMKQorICAgICAgICBjcDEgPSBmaWxlc3lzOworCisgICAgaWYgKChkdW1wX2ZwID0gZm9wZW4oIi9ldGMvZHVtcGRhdGVzIiwgInIiKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGRhdGVfbl90aW1lKE5VTEwsIGxlbmd0aCk7CisKKyAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBkdW1wX2ZwKSAhPSBOVUxMKSB7CisgICAgICAgIGNwMiA9IHN0cmNocihsaW5lLCAnICcpOyAgICAgICAgLyogU3RhcnQgYnkgbG9va2luZyBhdCB0aGUgZGV2aWNlIG5hbWUgb25seSAqLworICAgICAgICBpZiAoY3AyICE9IE5VTEwpIHsKKyAgICAgICAgICAgICpjcDIgPSAnXDAnOworICAgICAgICAgICAgY3AzID0gc3RycmNocihsaW5lLCAnLycpOyAgIC8qIGFuZCBmaW5kIHRoZSBsYXN0IGVsZW1lbnQgKi8KKyAgICAgICAgICAgIGlmIChjcDMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBjcDMgPSBsaW5lOworCisgICAgICAgICAgICBpZiAoc3RyY21wKGNwMSwgY3AzKSAhPSAwKSAgLyogV3JvbmcgRlMgKi8KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgKytjcDI7CisgICAgICAgICAgICB3aGlsZSAoaXNzcGFjZSgqY3AyKSkKKyAgICAgICAgICAgICAgICArK2NwMjsgICAgICAgICAgLyogTm93IGZpbmQgdGhlIGR1bXAgbGV2ZWwgKi8KKworICAgICAgICAgICAgaWYgKGxldmVsID09IEZVTExfRFVNUCkgeworICAgICAgICAgICAgICAgIGlmICgqKGNwMisrKSAhPSAnMCcpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIE5vdCBpbnRlcmVzdGVkIGluIHBhcnRpYWwgZHVtcHMgKi8KKyAgICAgICAgICAgICAgICB3aGlsZSAoaXNzcGFjZSgqY3AyKSkKKyAgICAgICAgICAgICAgICAgICAgKytjcDI7CisKKyAgICAgICAgICAgICAgICBkdW1wZGF0ZSA9IGN0aW1lX3RvX3RpbWV0KGNwMik7CisgICAgICAgICAgICAgICAgZmNsb3NlKGR1bXBfZnApOworICAgICAgICAgICAgICAgIHJldHVybiBkYXRlX25fdGltZSgmZHVtcGRhdGUsIGxlbmd0aCk7CisgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgIC8qIFBhcnRpYWwgRHVtcCAqLworICAgICAgICAgICAgICAgIGlmICgqKGNwMisrKSA9PSAnMCcpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIE5vdCBpbnRlcmVzdGVkIGluIGZ1bGwgZHVtcHMgKi8KKyAgICAgICAgICAgICAgICB3aGlsZSAoaXNzcGFjZSgqY3AyKSkKKyAgICAgICAgICAgICAgICAgICAgKytjcDI7CisKKyAgICAgICAgICAgICAgICB0bXAgPSBjdGltZV90b190aW1ldChjcDIpOworICAgICAgICAgICAgICAgIGlmICh0bXAgPiBkdW1wZGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZHVtcGRhdGUgPSB0bXA7ICAgICAvKiBSZW1lbWJlciB0aGUgJ2xhdGVzdCcgcGFydGlhbCBkdW1wICovCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmY2xvc2UoZHVtcF9mcCk7CisKKyAgICByZXR1cm4gZGF0ZV9uX3RpbWUoJmR1bXBkYXRlLCBsZW5ndGgpOworfQorCisKKyNkZWZpbmUgUkFXX0RFVklDRV9QUkVGSVgJIi9kZXYvcmRzayIKKyNkZWZpbmUgQ09PS0VEX0RFVklDRV9QUkVGSVgJIi9kZXYvZHNrIgorCitjaGFyICAgICAgICAgICAqCitjb29rX2RldmljZShjaGFyICpkZXYpCit7CisgICAgc3RhdGljIGNoYXIgICAgIGNvb2tlZF9kZXZbU05NUF9NQVhQQVRIKzFdOworCisgICAgaWYgKCFzdHJuY21wKGRldiwgUkFXX0RFVklDRV9QUkVGSVgsIHN0cmxlbihSQVdfREVWSUNFX1BSRUZJWCkpKSB7CisgICAgICAgIHN0cmxjcHkoY29va2VkX2RldiwgQ09PS0VEX0RFVklDRV9QUkVGSVgsIHNpemVvZihjb29rZWRfZGV2KSk7CisgICAgICAgIHN0cmxjYXQoY29va2VkX2RldiwgZGV2ICsgc3RybGVuKFJBV19ERVZJQ0VfUFJFRklYKSwKKyAgICAgICAgICAgICAgICBzaXplb2YoY29va2VkX2RldikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0cmxjcHkoY29va2VkX2RldiwgZGV2LCBzaXplb2YoY29va2VkX2RldikpOworICAgIH0KKworICAgIHJldHVybiBjb29rZWRfZGV2OworfQorCisKK2ludAorR2V0X0ZTSW5kZXgoY2hhciAqZGV2KQoreworICAgIG5ldHNubXBfZnN5c19pbmZvICpmc3lzOworCisgICAgZnN5cyA9IG5ldHNubXBfZnN5c19ieV9kZXZpY2UoIGRldiwgTkVUU05NUF9GU19GSU5EX0VYSVNUICk7CisgICAgcmV0dXJuIChmc3lzID8gZnN5cy0+aWR4Lm9pZHNbMF0gOiAtMSApOworfQorCitsb25nCitHZXRfRlNTaXplKGNoYXIgKmRldikKK3sKKyAgICBuZXRzbm1wX2ZzeXNfaW5mbyAqZnN5czsKKworICAgIGZzeXMgPSBuZXRzbm1wX2ZzeXNfYnlfZGV2aWNlKCBkZXYsIE5FVFNOTVBfRlNfRklORF9FWElTVCApOworICAgIGlmICggZnN5cyApICAgICAgIAorICAgICAgICByZXR1cm4gbmV0c25tcF9mc3lzX3NpemUoIGZzeXMgKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAtMTsKK30KKworaW50CitDaGVja19IUl9GaWxlU3lzX05GUyAodm9pZCkKK3sKKyAgICByZXR1cm4gKEhSRlNfZW50cnktPmZsYWdzICYgTkVUU05NUF9GU19GTEFHX1JFTU9URSkgPyAxIDogMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Njg5MTdlCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiAgSG9zdCBSZXNvdXJjZXMgTUlCIC0gZmlsZSBzeXN0ZW0gZGV2aWNlIGdyb3VwIGludGVyZmFjZSAoSEFMIHJld3JpdGUpIC0gaHJoX2ZpbGVzeXMuaAorICoKKyAqLworI2lmbmRlZiBfTUlCR1JPVVBfSFJGU1lTX0gKKyNkZWZpbmUgX01JQkdST1VQX0hSRlNZU19ICisKK2V4dGVybiB2b2lkICAgICBpbml0X2hyaF9maWxlc3lzKHZvaWQpOworZXh0ZXJuIHZvaWQgICAgIEluaXRfSFJfRmlsZVN5cyh2b2lkKTsKK2V4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9ocmhmaWxlc3lzOworZXh0ZXJuIGludCAgICAgIEdldF9OZXh0X0hSX0ZpbGVTeXModm9pZCk7CitleHRlcm4gaW50ICAgICAgQ2hlY2tfSFJfRmlsZVN5c19ORlModm9pZCk7CisKK2V4dGVybiBpbnQgICAgICBHZXRfRlNJbmRleChjaGFyICopOworZXh0ZXJuIGxvbmcgICAgIEdldF9GU1NpemUoY2hhciAqKTsgICAgIC8qIFRlbXBvcmFyeSAqLworCitjb25maWdfZXhjbHVkZSggaG9zdC9ocl9maWxlc3lzICkKKworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfSFJGU1lTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDU4ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5jCkBAIC0wLDAgKzEsNTA0IEBACisvKgorICogIEhvc3QgUmVzb3VyY2VzIE1JQiAtIHN0b3JhZ2UgZ3JvdXAgaW1wbGVtZW50YXRpb24gLSBocmhfc3RvcmFnZS5jCisgKgorICovCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oPgorI2luY2x1ZGUgImhvc3RfcmVzLmgiCisjaW5jbHVkZSAiaHJoX2ZpbGVzeXMuaCIKKyNpbmNsdWRlICJocmhfc3RvcmFnZS5oIgorI2luY2x1ZGUgImhyX2Rpc2suaCIKKyNpbmNsdWRlIDxuZXQtc25tcC91dGlsaXRpZXMuaD4KKworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgVElNRV9XSVRIX1NZU19USU1FCisjIGlmZGVmIFdJTjMyCisjICBpbmNsdWRlIDx3aW5kb3dzLmg+CisjICBpbmNsdWRlIDxlcnJuby5oPgorIyAgaW5jbHVkZSA8c3lzL3RpbWViLmg+CisjIGVsc2UKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+CisjIGVuZGlmCisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbHNlCisjIGlmIEhBVkVfU1lTX1RJTUVfSAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZWxzZQorIyAgaW5jbHVkZSA8dGltZS5oPgorIyBlbmRpZgorI2VuZGlmCisKKyNpZiBIQVZFX0ZDTlRMX0gKKyNpbmNsdWRlIDxmY250bC5oPgorI2VuZGlmCisKKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvb3V0cHV0X2FwaS5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmg+CisKKyNkZWZpbmUgSFJTVE9SRV9NT05PVE9OSUNBTExZX0lOQ1JFQVNJTkcKKworICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCisJICoKKwkgKiAgS2VybmVsICYgaW50ZXJmYWNlIGluZm9ybWF0aW9uLAorCSAqICAgYW5kIGludGVybmFsIGZvcndhcmQgZGVjbGFyYXRpb25zCisJICoKKwkgKioqKioqKioqKioqKioqKioqKioqLworCisKK2V4dGVybiBuZXRzbm1wX2ZzeXNfaW5mbyAqSFJGU19lbnRyeTsKKworc3RhdGljIHZvaWQgcGFyc2Vfc3RvcmFnZV9jb25maWcoY29uc3QgY2hhciAqLCBjaGFyICopOworCisgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKKwkgKgorCSAqICBJbml0aWFsaXNhdGlvbiAmIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMKKwkgKgorCSAqKioqKioqKioqKioqKioqKioqKiovCitpbnQgICAgICAgICAgICAgR2V0X05leHRfSFJfU3RvcmUodm9pZCk7Cit2b2lkICAgICAgICAgICAgSW5pdF9IUl9TdG9yZSh2b2lkKTsKK2ludCAgICAgICAgICAgICBoZWFkZXJfaHJzdG9yZShzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICosIFdyaXRlTWV0aG9kICoqKTsKK3ZvaWQqICAgICAgICAgICBoZWFkZXJfaHJzdG9yZUVudHJ5KHN0cnVjdCB2YXJpYWJsZSAqLCBvaWQgKiwgc2l6ZV90ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIHNpemVfdCAqLCBXcml0ZU1ldGhvZCAqKik7CitOZXRzbm1wX05vZGVfSGFuZGxlciBoYW5kbGVfbWVtc2l6ZTsKKworCisjZGVmaW5lCUhSU1RPUkVfTUVNU0laRQkJMQorI2RlZmluZQlIUlNUT1JFX0lOREVYCQkyCisjZGVmaW5lCUhSU1RPUkVfVFlQRQkJMworI2RlZmluZQlIUlNUT1JFX0RFU0NSCQk0CisjZGVmaW5lCUhSU1RPUkVfVU5JVFMJCTUKKyNkZWZpbmUJSFJTVE9SRV9TSVpFCQk2CisjZGVmaW5lCUhSU1RPUkVfVVNFRAkJNworI2RlZmluZQlIUlNUT1JFX0ZBSUxTCQk4CisKK3N0cnVjdCB2YXJpYWJsZTIgaHJzdG9yZV92YXJpYWJsZXNbXSA9IHsKKyAgICB7SFJTVE9SRV9JTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezF9fSwKKyAgICB7SFJTVE9SRV9UWVBFLCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3RvcmUsIDEsIHsyfX0sCisgICAge0hSU1RPUkVfREVTQ1IsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezN9fSwKKyAgICB7SFJTVE9SRV9VTklUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezR9fSwKKyAgICB7SFJTVE9SRV9TSVpFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN0b3JlLCAxLCB7NX19LAorICAgIHtIUlNUT1JFX1VTRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3RvcmUsIDEsIHs2fX0sCisgICAge0hSU1RPUkVfRkFJTFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3RvcmUsIDEsIHs3fX0KK307CitvaWQgICAgICAgICAgICAgaHJzdG9yZV92YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAyIH07CitvaWQgICAgICAgICAgICAgaHJNZW1vcnlTaXplX29pZFtdICAgPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAyLCAyIH07CitvaWQgICAgICAgICAgICAgaHJTdG9yYWdlVGFibGVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAyLCAzLCAxIH07CisKKwordm9pZAoraW5pdF9ocmhfc3RvcmFnZSh2b2lkKQoreworICAgIGNoYXIgKmFwcG5hbWU7CisKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcigKKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImhvc3QvaHJNZW1vcnlTaXplIiwgaGFuZGxlX21lbXNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBock1lbW9yeVNpemVfb2lkLCBPSURfTEVOR1RIKGhyTWVtb3J5U2l6ZV9vaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpKTsKKyAgICBSRUdJU1RFUl9NSUIoImhvc3QvaHJfc3RvcmFnZSIsIGhyc3RvcmVfdmFyaWFibGVzLCB2YXJpYWJsZTIsCisgICAgICAgICAgICAgICAgIGhyU3RvcmFnZVRhYmxlX29pZCk7CisKKyAgICBhcHBuYW1lID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpOworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCBhcHBuYW1lLCAic2tpcE5GU0luSG9zdFJlc291cmNlcyIsIAorCQkJICAgICAgIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCisJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9TS0lQTkZTSU5IT1NUUkVTT1VSQ0VTKTsKKworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzdG9yYWdlVXNlTkZTIiwgcGFyc2Vfc3RvcmFnZV9jb25maWcsIE5VTEwsCisJIjEgfCAyXHRcdCgxID0gZW5hYmxlLCAyID0gZGlzYWJsZSkiKTsKK30KKworc3RhdGljIGludCBzdG9yYWdlVXNlTkZTID0gMTsJLyogRGVmYXVsdCB0byByZXBvcnRpbmcgTkZTIG1vdW50cyBhcyBOZXR3b3JrRGlzayAqLworCitzdGF0aWMgdm9pZAorcGFyc2Vfc3RvcmFnZV9jb25maWcoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCit7CisgICAgY2hhciAqdmFsOworICAgIGludCBpdmFsOworICAgIGNoYXIgKnN0OworCisgICAgdmFsID0gc3RydG9rX3IoY3B0ciwgIiBcdCIsICZzdCk7CisgICAgaWYgKCF2YWwpIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigiTWlzc2luZyBGTEFHIHBhcmFtZXRlciBpbiBzdG9yYWdlVXNlTkZTIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaXZhbCA9IGF0b2kodmFsKTsKKyAgICBpZiAoaXZhbCA8IDEgfHwgaXZhbCA+IDIpIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigic3RvcmFnZVVzZU5GUyBtdXN0IGJlIDEgb3IgMiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHN0b3JhZ2VVc2VORlMgPSAoaXZhbCA9PSAxKSA/IDEgOiAwOworfQorCisvKgorICogaGVhZGVyX2hyc3RvcmVFbnRyeSguLi4KKyAqIEFyZ3VtZW50czoKKyAqIHZwICAgICBJTiAgICAgIC0gcG9pbnRlciB0byB2YXJpYWJsZSBlbnRyeSB0aGF0IHBvaW50cyBoZXJlCisgKiBuYW1lICAgIElOL09VVCAgLSBJTi9uYW1lIHJlcXVlc3RlZCwgT1VUL25hbWUgZm91bmQKKyAqIGxlbmd0aCAgSU4vT1VUICAtIGxlbmd0aCBvZiBJTi9PVVQgb2lkJ3MgCisgKiBleGFjdCAgIElOICAgICAgLSBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQKKyAqIHZhcl9sZW4gT1VUICAgICAtIGxlbmd0aCBvZiB2YXJpYWJsZSBvciAwIGlmIGZ1bmN0aW9uIHJldHVybmVkCisgKiB3cml0ZV9tZXRob2QKKyAqIAorICovCisKK3ZvaWQgKgoraGVhZGVyX2hyc3RvcmVFbnRyeShzdHJ1Y3QgdmFyaWFibGUgKnZwLAorICAgICAgICAgICAgICAgICAgICBvaWQgKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIGludCBleGFjdCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoreworI2RlZmluZSBIUlNUT1JFX0VOVFJZX05BTUVfTEVOR1RICTExCisgICAgb2lkICAgICAgICAgICAgIG5ld25hbWVbTUFYX09JRF9MRU5dOworICAgIGludCAgICAgICAgICAgICBzdG9yYWdlX2lkeCwgTG93SW5kZXggPSAtMTsKKyAgICBpbnQgICAgICAgICAgICAgcmVzdWx0OworICAgIGludCAgICAgICAgICAgICAgICAgIGlkeCA9IC0xOworICAgIG5ldHNubXBfbWVtb3J5X2luZm8gKm1lbSAgPSBOVUxMOworCisgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfc3RvcmFnZSIsICJ2YXJfaHJzdG9yZUVudHJ5OiByZXF1ZXN0ICIpKTsKKyAgICBERUJVR01TR09JRCgoImhvc3QvaHJfc3RvcmFnZSIsIG5hbWUsICpsZW5ndGgpKTsKKyAgICBERUJVR01TRygoImhvc3QvaHJfc3RvcmFnZSIsICIgZXhhY3Q9JWRcbiIsIGV4YWN0KSk7CisKKyAgICBtZW1jcHkoKGNoYXIgKikgbmV3bmFtZSwgKGNoYXIgKikgdnAtPm5hbWUsCisgICAgICAgICAgIChpbnQpIHZwLT5uYW1lbGVuICogc2l6ZW9mKG9pZCkpOworICAgIHJlc3VsdCA9IHNubXBfb2lkX2NvbXBhcmUobmFtZSwgKmxlbmd0aCwgdnAtPm5hbWUsIHZwLT5uYW1lbGVuKTsKKworICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX3N0b3JhZ2UiLCAidmFyX2hyc3RvcmVFbnRyeTogY29tcGFyZSAiKSk7CisgICAgREVCVUdNU0dPSUQoKCJob3N0L2hyX3N0b3JhZ2UiLCB2cC0+bmFtZSwgdnAtPm5hbWVsZW4pKTsKKyAgICBERUJVR01TRygoImhvc3QvaHJfc3RvcmFnZSIsICIgPT4gJWRcbiIsIHJlc3VsdCkpOworCisKKyAgICBpZiAocmVzdWx0IDwgMCB8fAorICAgICAgICAqbGVuZ3RoIDw9IEhSU1RPUkVfRU5UUllfTkFNRV9MRU5HVEggKSB7CisgICAgICAgLyoKKyAgICAgICAgKiBSZXF1ZXN0ZWQgT0lEIHRvbyBlYXJseSBvciB0b28gc2hvcnQgdG8gcmVmZXIKKyAgICAgICAgKiAgIHRvIGEgdmFsaWQgcm93IChmb3IgdGhlIGN1cnJlbnQgY29sdW1uIG9iamVjdCkuCisgICAgICAgICogR0VUIHJlcXVlc3RzIHNob3VsZCBmYWlsLCBHRVRORVhUIHJlcXVlc3RzCisgICAgICAgICogICBzaG91bGQgdXNlIHRoZSBmaXJzdCByb3cuCisgICAgICAgICovCisgICAgICAgIGlmICggZXhhY3QgKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG5ldHNubXBfbWVtb3J5X2xvYWQoKTsKKyAgICAgICAgbWVtID0gbmV0c25tcF9tZW1vcnlfZ2V0X2ZpcnN0KCAwICk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKgorICAgICAgICAgKiBPdGhlcndpc2UsIHJldHJpZXZlIHRoZSByZXF1ZXN0ZWQKKyAgICAgICAgICogIChvciBmb2xsb3dpbmcpIHJvdyBhcyBhcHByb3ByaWF0ZS4KKyAgICAgICAgICovCisgICAgICAgIGlmICggZXhhY3QgJiYgKmxlbmd0aCA+IEhSU1RPUkVfRU5UUllfTkFNRV9MRU5HVEgrMSApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAvKiBUb28gbG9uZyBmb3IgYSB2YWxpZCBpbnN0YW5jZSAqLworICAgICAgICBpZHggPSBuYW1lWyBIUlNUT1JFX0VOVFJZX05BTUVfTEVOR1RIIF07CisgICAgICAgIGlmICggaWR4IDwgTkVUU05NUF9NRU1fVFlQRV9NQVggKSB7CisgICAgICAgICAgICBuZXRzbm1wX21lbW9yeV9sb2FkKCk7CisgICAgICAgICAgICBtZW0gPSAoIGV4YWN0ID8gbmV0c25tcF9tZW1vcnlfZ2V0X2J5SWR4KCBpZHgsIDAgKSA6CisgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWVtb3J5X2dldF9uZXh0X2J5SWR4KCBpZHgsIDAgKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIElmIHRoaXMgbWF0Y2hlZCBhIG1lbW9yeS1iYXNlZCBlbnRyeSwgdGhlbgorICAgICAqICAgIHVwZGF0ZSB0aGUgT0lEIHBhcmFtZXRlcihzKSBmb3IgR0VUTkVYVCByZXF1ZXN0cy4KKyAgICAgKi8KKyAgICBpZiAoIG1lbSApIHsKKyAgICAgICAgaWYgKCAhZXhhY3QgKSB7CisgICAgICAgICAgICBuZXduYW1lWyBIUlNUT1JFX0VOVFJZX05BTUVfTEVOR1RIIF0gPSBtZW0tPmlkeDsKKyAgICAgICAgICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAorICAgICAgICAgICAgICAgICAgICgoaW50KSB2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKgorICAgICAqIElmIHRoaXMgZGlkbid0IG1hdGNoIGEgbWVtb3J5LWJhc2VkIGVudHJ5LAorICAgICAqICAgdGhlbiBjb25zaWRlciB0aGUgZGlzay1iYXNlZCBzdG9yYWdlLgorICAgICAqLworICAgIGVsc2UgeworICAgICAgICBJbml0X0hSX1N0b3JlKCk7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIHN0b3JhZ2VfaWR4ID0gR2V0X05leHRfSFJfU3RvcmUoKTsKKyAgICAgICAgICAgIERFQlVHTVNHKCgiaG9zdC9ocl9zdG9yYWdlIiwgIihpbmRleCAlZCAuLi4uIiwgc3RvcmFnZV9pZHgpKTsKKyAgICAgICAgICAgIGlmIChzdG9yYWdlX2lkeCA9PSAtMSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG5ld25hbWVbSFJTVE9SRV9FTlRSWV9OQU1FX0xFTkdUSF0gPSBzdG9yYWdlX2lkeDsKKyAgICAgICAgICAgIERFQlVHTVNHT0lEKCgiaG9zdC9ocl9zdG9yYWdlIiwgbmV3bmFtZSwgKmxlbmd0aCkpOworICAgICAgICAgICAgREVCVUdNU0coKCJob3N0L2hyX3N0b3JhZ2UiLCAiXG4iKSk7CisgICAgICAgICAgICByZXN1bHQgPSBzbm1wX29pZF9jb21wYXJlKG5hbWUsICpsZW5ndGgsIG5ld25hbWUsIHZwLT5uYW1lbGVuICsgMSk7CisgICAgICAgICAgICBpZiAoZXhhY3QgJiYgKHJlc3VsdCA9PSAwKSkgeworICAgICAgICAgICAgICAgIExvd0luZGV4ID0gc3RvcmFnZV9pZHg7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBTYXZlIHN0b3JhZ2Ugc3RhdHVzIGluZm9ybWF0aW9uIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCghZXhhY3QgJiYgKHJlc3VsdCA8IDApKSAmJgorICAgICAgICAgICAgICAgIChMb3dJbmRleCA9PSAtMSB8fCBzdG9yYWdlX2lkeCA8IExvd0luZGV4KSkgeworICAgICAgICAgICAgICAgIExvd0luZGV4ID0gc3RvcmFnZV9pZHg7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBTYXZlIHN0b3JhZ2Ugc3RhdHVzIGluZm9ybWF0aW9uIAorICAgICAgICAgICAgICAgICAqLworI2lmZGVmIEhSU1RPUkVfTU9OT1RPTklDQUxMWV9JTkNSRUFTSU5HCisgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIExvd0luZGV4ICE9IC0xICkgeworICAgICAgICAgICAgaWYgKCAhZXhhY3QgKSB7CisgICAgICAgICAgICAgICAgbmV3bmFtZVsgSFJTVE9SRV9FTlRSWV9OQU1FX0xFTkdUSCBdID0gTG93SW5kZXg7CisgICAgICAgICAgICAgICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIG5ld25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICgoaW50KSB2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZW0gPSAobmV0c25tcF9tZW1vcnlfaW5mbyopMHhmZmZmZmZmZjsgICAvKiBUbyBpbmRpY2F0ZSAnc3VjY2VzcycgKi8KKyAgICAgICAgfQorICAgIH0KKworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CisgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KKworICAgIC8qCisgICAgICogIC4uLiBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSByb3cKKyAgICAgKi8KKyAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9zdG9yYWdlIiwgInZhcl9ocnN0b3JlRW50cnk6IHByb2Nlc3MgIikpOworICAgIERFQlVHTVNHT0lEKCgiaG9zdC9ocl9zdG9yYWdlIiwgbmFtZSwgKmxlbmd0aCkpOworICAgIERFQlVHTVNHKCgiaG9zdC9ocl9zdG9yYWdlIiwgIiAoJXApXG4iLCBtZW0pKTsKKyAgICByZXR1cm4gKHZvaWQqKW1lbTsKK30KKworb2lkICAgICAgICAgICAgIHN0b3JhZ2VfdHlwZV9pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMiwgMSwgMSB9OyAgLyogaHJTdG9yYWdlT3RoZXIgKi8KK2ludCAgICAgICAgICAgICBzdG9yYWdlX3R5cGVfbGVuID0KKyAgICBzaXplb2Yoc3RvcmFnZV90eXBlX2lkKSAvIHNpemVvZihzdG9yYWdlX3R5cGVfaWRbMF0pOworCisgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKKwkgKgorCSAqICBTeXN0ZW0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCisJICoKKwkgKioqKioqKioqKioqKioqKioqKioqLworCitpbnQKK2hhbmRsZV9tZW1zaXplKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgbmV0c25tcF9tZW1vcnlfaW5mbyAqbWVtX2luZm87CisgICAgaW50IHZhbDsKKworICAgIC8qCisgICAgICogV2UganVzdCBuZWVkIHRvIGhhbmRsZSB2YWxpZCBHRVQgcmVxdWVzdHMsIGFzIGludmFsaWQgaW5zdGFuY2VzCisgICAgICogICBhcmUgcmVqZWN0ZWQgYXV0b21hdGljYWxseSwgYW5kICh2YWxpZCkgR0VUTkVYVCByZXF1ZXN0cyBhcmUKKyAgICAgKiAgIGNvbnZlcnRlZCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBHRVQgcmVxdWVzdC4KKyAgICAgKgorICAgICAqIFdlIGFsc28gb25seSBldmVyIHJlY2VpdmUgb25lIHJlcXVlc3QgYXQgYSB0aW1lLgorICAgICAqLworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIG5ldHNubXBfbWVtb3J5X2xvYWQoKTsKKyAgICAgICAgbWVtX2luZm8gPSBuZXRzbm1wX21lbW9yeV9nZXRfYnlJZHgoIE5FVFNOTVBfTUVNX1RZUEVfUEhZU01FTSwgMCApOworICAgICAgICBpZiAoICFtZW1faW5mbyB8fCBtZW1faW5mby0+c2l6ZSA9PSAtMSB8fCBtZW1faW5mby0+dW5pdHMgPT0gLTEgKQorICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvciggcmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfTk9TVUNIT0JKRUNUICk7CisJZWxzZSB7CisgICAgICAgICAgICB2YWwgID0gIG1lbV9pbmZvLT5zaXplOyAgICAgLyogbWVtdG90YWwgKi8KKyAgICAgICAgICAgIHZhbCAqPSAobWVtX2luZm8tPnVuaXRzLzEwMjQpOworICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikmdmFsLCBzaXplb2YodmFsKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisKKyAgICBkZWZhdWx0OgorICAgICAgICAvKgorICAgICAgICAgKiB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIHNvIHRoaXMgaXMgYSByZWFsbHkgYmFkIGVycm9yIAorICAgICAgICAgKi8KKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVua25vd24gbW9kZSAoJWQpIGluIGhhbmRsZV9tZW1zaXplXG4iLAorICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworCit1X2NoYXIgICAgICAgICAqCit2YXJfaHJzdG9yZShzdHJ1Y3QgdmFyaWFibGUgKnZwLAorICAgICAgICAgICAgb2lkICogbmFtZSwKKyAgICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCwKKyAgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoreworICAgIGludCAgICAgICAgICAgICBzdG9yZV9pZHggPSAwOworICAgIHN0YXRpYyBjaGFyICAgICBzdHJpbmdbMTAyNF07CisgICAgdm9pZCAgICAgICAgICAgICAgICAqcHRyOworICAgIG5ldHNubXBfbWVtb3J5X2luZm8gKm1lbSA9IE5VTEw7CisKK3JlYWxseV90cnlfbmV4dDoKKwlwdHIgPSBoZWFkZXJfaHJzdG9yZUVudHJ5KHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLAorCQkJCQl3cml0ZV9tZXRob2QpOworCWlmIChwdHIgPT0gTlVMTCkKKwkgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgc3RvcmVfaWR4ID0gbmFtZVsgSFJTVE9SRV9FTlRSWV9OQU1FX0xFTkdUSCBdOworICAgICAgICBpZiAoSFJGU19lbnRyeSAmJgorCSAgICBzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCAmJgorICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1NLSVBORlNJTkhPU1RSRVNPVVJDRVMpICYmCisgICAgICAgICAgICBDaGVja19IUl9GaWxlU3lzX05GUygpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChzdG9yZV9pZHggPD0gTkVUU05NUF9NRU1fVFlQRV9NQVggKSB7CisJICAgIG1lbSA9IChuZXRzbm1wX21lbW9yeV9pbmZvKilwdHI7CisgICAgICAgIH0KKworCisKKyAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworICAgIGNhc2UgSFJTVE9SRV9JTkRFWDoKKyAgICAgICAgbG9uZ19yZXR1cm4gPSBzdG9yZV9pZHg7CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CisgICAgY2FzZSBIUlNUT1JFX1RZUEU6CisgICAgICAgIGlmIChzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCkKKyAgICAgICAgICAgIGlmIChIUkZTX2VudHJ5LT5mbGFncyAmIE5FVFNOTVBfRlNfRkxBR19SRU1PVEUgKQorICAgICAgICAgICAgICAgIHN0b3JhZ2VfdHlwZV9pZFtzdG9yYWdlX3R5cGVfbGVuIC0gMV0gPSAxMDsgICAgIC8qIE5ldHdvcmsgRGlzayAqLworICAgICAgICAgICAgZWxzZSBpZiAoSFJGU19lbnRyeS0+ZmxhZ3MgJiBORVRTTk1QX0ZTX0ZMQUdfUkVNT1ZFICkKKyAgICAgICAgICAgICAgICBzdG9yYWdlX3R5cGVfaWRbc3RvcmFnZV90eXBlX2xlbiAtIDFdID0gNTsgICAgICAvKiBSZW1vdmFibGUgRGlzayAqLworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0b3JhZ2VfdHlwZV9pZFtzdG9yYWdlX3R5cGVfbGVuIC0gMV0gPSA0OyAgICAgIC8qIEFzc3VtZSBmaXhlZCAqLworICAgICAgICBlbHNlCisgICAgICAgICAgICBzd2l0Y2ggKHN0b3JlX2lkeCkgeworICAgICAgICAgICAgY2FzZSBORVRTTk1QX01FTV9UWVBFX1BIWVNNRU06CisgICAgICAgICAgICBjYXNlIE5FVFNOTVBfTUVNX1RZUEVfVVNFUk1FTToKKyAgICAgICAgICAgICAgICBzdG9yYWdlX3R5cGVfaWRbc3RvcmFnZV90eXBlX2xlbiAtIDFdID0gMjsgICAgICAvKiBSQU0gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTkVUU05NUF9NRU1fVFlQRV9WSVJUTUVNOgorICAgICAgICAgICAgY2FzZSBORVRTTk1QX01FTV9UWVBFX1NXQVA6CisgICAgICAgICAgICAgICAgc3RvcmFnZV90eXBlX2lkW3N0b3JhZ2VfdHlwZV9sZW4gLSAxXSA9IDM7ICAgICAgLyogVmlydHVhbCBNZW0gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgc3RvcmFnZV90eXBlX2lkW3N0b3JhZ2VfdHlwZV9sZW4gLSAxXSA9IDE7ICAgICAgLyogT3RoZXIgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKnZhcl9sZW4gPSBzaXplb2Yoc3RvcmFnZV90eXBlX2lkKTsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgc3RvcmFnZV90eXBlX2lkOworICAgIGNhc2UgSFJTVE9SRV9ERVNDUjoKKyAgICAgICAgaWYgKHN0b3JlX2lkeCA+IE5FVFNOTVBfTUVNX1RZUEVfTUFYKSB7CisgICAgICAgICAgICBzdHJsY3B5KHN0cmluZywgSFJGU19lbnRyeS0+cGF0aCwgc2l6ZW9mKHN0cmluZykpOworICAgICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oc3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiAodV9jaGFyICopIHN0cmluZzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICggIW1lbSB8fCAhbWVtLT5kZXNjciApCisgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKKyAgICAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKG1lbS0+ZGVzY3IpOworICAgICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgbWVtLT5kZXNjcjsKKyAgICAgICAgfQorICAgIGNhc2UgSFJTVE9SRV9VTklUUzoKKyAgICAgICAgaWYgKHN0b3JlX2lkeCA+IE5FVFNOTVBfTUVNX1RZUEVfTUFYKQorICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBIUkZTX2VudHJ5LT51bml0czsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoICFtZW0gfHwgbWVtLT51bml0cyA9PSAtMSApCisgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKKyAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gbWVtLT51bml0czsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOworICAgIGNhc2UgSFJTVE9SRV9TSVpFOgorICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpCisgICAgICAgICAgICBsb25nX3JldHVybiA9IEhSRlNfZW50cnktPnNpemU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCAhbWVtIHx8IG1lbS0+c2l6ZSA9PSAtMSApCisgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKKyAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gbWVtLT5zaXplOworICAgICAgICB9CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CisgICAgY2FzZSBIUlNUT1JFX1VTRUQ6CisgICAgICAgIGlmIChzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCkKKyAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+dXNlZDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoICFtZW0gfHwgbWVtLT5zaXplID09IC0xIHx8IG1lbS0+ZnJlZSA9PSAtMSApCisgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKKyAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gbWVtLT5zaXplIC0gbWVtLT5mcmVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CisgICAgY2FzZSBIUlNUT1JFX0ZBSUxTOgorICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpCisjaWYgTkVUU05NUF9OT19EVU1NWV9WQUxVRVMKKwkgICAgZ290byB0cnlfbmV4dDsKKyNlbHNlCisgICAgICAgICAgICBsb25nX3JldHVybiA9IDA7CisjZW5kaWYKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoICFtZW0gfHwgbWVtLT5vdGhlciA9PSAtMSApCisgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKKyAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gbWVtLT5vdGhlcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZCIsICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfaHJzdG9yZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgdnAtPm1hZ2ljKSk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworCisgIHRyeV9uZXh0OgorICAgIGlmICghZXhhY3QpCisgICAgICAgIGdvdG8gcmVhbGx5X3RyeV9uZXh0OworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCisJICoKKwkgKiAgSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCisJICoKKwkgKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50ICAgICAgSFJTX2luZGV4OworCit2b2lkCitJbml0X0hSX1N0b3JlKHZvaWQpCit7CisgICAgSFJTX2luZGV4ID0gMDsKKyAgICBJbml0X0hSX0ZpbGVTeXMoKTsKK30KKworaW50CitHZXRfTmV4dF9IUl9TdG9yZSh2b2lkKQoreworICAgIC8qCisgICAgICogRmlsZS1iYXNlZCBzdG9yYWdlIAorICAgICAqLworCWZvciAoOzspIHsKKyAgICAJSFJTX2luZGV4ID0gR2V0X05leHRfSFJfRmlsZVN5cygpOworCQlpZiAoSFJTX2luZGV4ID49IDApIHsKKwkJCWlmICghKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisJCQkJCQkJTkVUU05NUF9EU19BR0VOVF9TS0lQTkZTSU5IT1NUUkVTT1VSQ0VTKSAmJiAKKwkJCQkJCUNoZWNrX0hSX0ZpbGVTeXNfTkZTKCkpKSB7CisJCQkJcmV0dXJuIEhSU19pbmRleCArIE5FVFNOTVBfTUVNX1RZUEVfTUFYOwkKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXJldHVybiAtMTsKKwkJfQkKKwl9Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODcyMzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5oCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiAgSG9zdCBSZXNvdXJjZXMgTUlCIC0gc3RvcmFnZSBncm91cCBpbnRlcmZhY2UgKEhBTCByZXdyaXRlKSAtIGhyaF9zdG9yYWdlLmgKKyAqCisgKi8KKyNpZm5kZWYgX01JQkdST1VQX0hSU1RPUkFHRV9ICisjZGVmaW5lIF9NSUJHUk9VUF9IUlNUT1JBR0VfSAorCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9tZW1vcnkpCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzKQorY29uZmlnX3JlcXVpcmUoaG9zdC9ocmhfZmlsZXN5cykKKworY29uZmlnX2V4Y2x1ZGUoIGhvc3QvaHJfc3RvcmFnZSApCisKK2V4dGVybiB2b2lkICAgICBpbml0X2hyaF9zdG9yYWdlKHZvaWQpOworZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2hyc3RvcmU7CisKKworI2RlZmluZQlIUlNfVFlQRV9NQlVGCQkxCisjZGVmaW5lCUhSU19UWVBFX01FTQkJMgorI2RlZmluZQlIUlNfVFlQRV9TV0FQCQkzCisjZGVmaW5lCUhSU19UWVBFX0ZJWEVEX01BWAkzICAgICAvKiB0aGUgbGFyZ2VzdCBmaXhlZCB0eXBlICovCisKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX0hSU1RPUkFHRV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0X3Jlcy5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdF9yZXMuaAppbmRleCA4Yzk1MDkwLi5kOWY1NGI5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0X3Jlcy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3RfcmVzLmgKQEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC92YXJfc3RydWN0Lmg+CiAKLSNpZiBkZWZpbmVkKElGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkKKyNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQogI2RlZmluZSBfS0VSTkVMIDEKICNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jCmluZGV4IGQ2NWZhZDAuLjYyOWM5OWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMKQEAgLTQ3Nyw3ICs0NzcsNyBAQAogICAgIHRtcCA9IHNlX2ZpbmRfdmFsdWVfaW5fc2xpc3QoImludGVyZmFjZXMiLCBuYW1lKTsKICAgICBpZiAodG1wID09IFNFX0RORSkgewogICAgICAgICBzZV9hZGRfcGFpcl90b19zbGlzdCgiaW50ZXJmYWNlcyIsIHN0cmR1cChuYW1lKSwgaW5kZXgpOwotICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTppZkluZGV4IiwgInNhdmVkIGlmSW5kZXggJWQgZm9yICVzXG4iLAorICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTppZkluZGV4IiwgInNhdmVkIGlmSW5kZXggJWx1IGZvciAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIG5hbWUpKTsKICAgICB9CiAgICAgZWxzZQpAQCAtNDg4LDcgKzQ4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZXMgd2lsbCBhcHBlYXIgbXVsdGlwbGUgdGltZXMgaW4gSUYtTUlCLlxuIik7CiAgICAgICAgICAgICAgICAgbG9nZ2VkID0gMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmlmSW5kZXgiLCAiaW5kZXggJWQgIT0gdG1wIGZvciAlc1xuIiwKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmlmSW5kZXgiLCAiaW5kZXggJWx1ICE9IHRtcCBmb3IgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIG5hbWUpKTsKICAgICAgICAgfQogfQpAQCAtNTM2LDEwICs1MzYsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuaWJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5pYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKLSAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLml1Y2FzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuaXVjYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5pdWNhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKKworCWlmIChuZXdfdmFscy0+bnNfZmxhZ3MgJiBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19DQUxDVUxBVEVfVUNBU1QpIHsKKyAgICAgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5pYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuaWFsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJldl92YWxzLT5vbGRfc3RhdHMtPmlhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBuZXRzbm1wX2M2NF9jaGVjazMyX2FuZF91cGRhdGUoJnByZXZfdmFscy0+c3RhdHMuaXVjYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuaXVjYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+aXVjYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZWVkX3dyYXBfY2hlY2spOworICAgICAgICB9CisKICAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLmltY2FzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuaW1jYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5pbWNhc3QsCkBAIC01OTYsNiArNjA1LDIzIEBACiB9CiAKIC8qKgorICogQ2FsY3VsYXRlIHN0YXRzCisgKgorICogQHJldHZhbCAgMCA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgOiBlcnJvcgorICovCitpbnQKK25ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9lbnRyeV9jYWxjdWxhdGVfc3RhdHMobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKmVudHJ5KQoreworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlIiwgImNhbGN1bGF0ZV9zdGF0c1xuIikpOworICAgIGlmIChlbnRyeS0+bnNfZmxhZ3MgJiBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19DQUxDVUxBVEVfVUNBU1QpIHsKKyAgICAgICAgdTY0U3VidHJhY3QoJmVudHJ5LT5zdGF0cy5pYWxsLCAmZW50cnktPnN0YXRzLmltY2FzdCwKKyAgICAgICAgICAgICAgICAmZW50cnktPnN0YXRzLml1Y2FzdCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKioKICAqIGNvcHkgaW50ZXJmYWNlIGVudHJ5IGRhdGEgKGFmdGVyIGNoZWNraW5nIGZvciBjb3VudGVyIHdyYXBzKQogICoKICAqIEByZXR2YWwgLTIgOiBtYWxsb2MgZmFpbGVkCkBAIC02MTcsNiArNjQzLDcgQEAKICAgICAgKiB1cGRhdGUgc3RhdHMKICAgICAgKi8KICAgICBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfZW50cnlfdXBkYXRlX3N0YXRzKGxocywgcmhzKTsKKyAgICBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfZW50cnlfY2FsY3VsYXRlX3N0YXRzKGxocyk7CiAKICAgICAvKgogICAgICAqIHVwZGF0ZSBkYXRhCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmggYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgKaW5kZXggMjU2ZDA0Ny4uZjRjMGU1ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaApAQCAtMzcsNyArMzcsNyBAQAogCiAjICAgZWxpZiBkZWZpbmVkKCBvcGVuYnNkMyApIHx8IFwKICAgICAgICAgIGRlZmluZWQoIGZyZWVic2Q0ICkgfHwgZGVmaW5lZCggZnJlZWJzZDUgKSB8fCBkZWZpbmVkKCBmcmVlYnNkNiApIHx8IFwKLSAgICAgICAgIGRlZmluZWQgKGRhcndpbikgICAgfHwgZGVmaW5lZCggZHJhZ29uZmx5ICkKKyAgICAgICAgIGRlZmluZWQoIGRhcndpbiApICAgfHwgZGVmaW5lZCggZHJhZ29uZmx5ICkgfHwgZGVmaW5lZCggbmV0YnNkMSApCiAKICAgICBjb25maWdfcmVxdWlyZShpZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3N5c2N0bCkKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jCmluZGV4IDU3MDhjNjQuLmFlYWIwY2UgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmMKQEAgLTQwOCw3ICs0MDgsNyBAQAogICAgIHJjID0gX2lvY3RsX2dldChmZCwgU0lPQ0dJRklOREVYLCAmaWZycSwgbmFtZSk7CiAgICAgaWYgKHJjIDwgMCkgewogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTppb2N0bCIsCi0gICAgICAgICAgICAgICAgICAgImlmaW5kZXhfZ2V0IGVycm9yIG9uIGluZXJmYWNlICclcydcbiIsIG5hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAiaWZpbmRleF9nZXQgZXJyb3Igb24gaW50ZXJmYWNlICclcydcbiIsIG5hbWUpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMKaW5kZXggOTRiZDk4My4uMGVkOTMwMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYwpAQCAtMjksMTggKzI5LDM4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmg+CiAjaW5jbHVkZSAiaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oIgorI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MuaCIKICNpbmNsdWRlICJpbnRlcmZhY2VfaW9jdGwuaCIKIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgogCiAjaW5jbHVkZSA8bGludXgvc29ja2lvcy5oPgorI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CiAKICNpZm5kZWYgSUZfTkFNRVNJWkUKICNkZWZpbmUgSUZfTkFNRVNJWkUgMTYKICNlbmRpZgogCisjaWZuZGVmIFNJT0NHTUlJUEhZCisjZGVmaW5lIFNJT0NHTUlJUEhZIDB4ODk0NworI2VuZGlmCisKKyNpZm5kZWYgU0lPQ0dNSUlSRUcKKyNkZWZpbmUgU0lPQ0dNSUlSRUcgMHg4OTQ4CisjZW5kaWYKKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyNpZiBkZWZpbmVkKEhBVkVfTElOVVhfUlRORVRMSU5LX0gpCisjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisjaWZkZWYgUlRNR1JQX0lQVjZfUFJFRklYCisjZGVmaW5lIFNVUFBPUlRfUFJFRklYX0ZMQUdTIDEKKyNlbmRpZiAgLyogUlRNR1JQX0lQVjZfUFJFRklYICovCisjZW5kaWYgIC8qIEhBVkVfTElOVVhfUlRORVRMSU5LX0ggKi8KKyNlbmRpZiAgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLwogdW5zaWduZWQgbG9uZyBsb25nCiBuZXRzbm1wX2xpbnV4X2ludGVyZmFjZV9nZXRfaWZfc3BlZWQoaW50IGZkLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGVmYXVsdHNwZWVkKTsKQEAgLTYwLDYgKzgwLDE2IEBACiAjZGVmaW5lIFBST0NfU1lTX05FVF9JUFZ4X0JBU0VfUkVBQ0hBQkxFX1RJTUUgIi9wcm9jL3N5cy9uZXQvaXB2JWQvbmVpZ2gvJXMvYmFzZV9yZWFjaGFibGVfdGltZSIKIHN0YXRpYyBjb25zdCBjaGFyICpwcm9jX3N5c19iYXNlcmVhY2hhYmxlX3RpbWU7CiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgYmFzZXJlYWNoYWJsZV90aW1lX21zID0gMDsKKyNpZmRlZiBTVVBQT1JUX1BSRUZJWF9GTEFHUworcHJlZml4X2NieCAqcHJlZml4X2hlYWRfbGlzdCA9IE5VTEw7CituZXRzbm1wX3ByZWZpeF9saXN0ZW5faW5mbyBsaXN0X2luZm87CisjZGVmaW5lIElGX1BSRUZJWF9PTkxJTksgICAgICAgIDB4MDEKKyNkZWZpbmUgSUZfUFJFRklYX0FVVE9DT05GICAgICAgMHgwMgorIAoraW50IG5ldHNubXBfcHJlZml4X2xpc3Rlbih2b2lkKTsKKyNlbmRpZgorCisKIHZvaWQKIG5ldHNubXBfYXJjaF9pbnRlcmZhY2VfaW5pdCh2b2lkKQogewpAQCAtOTIsNiArMTIyLDExIEBACiAgICAgZWxzZSB7CiAgICAgICAgIHByb2Nfc3lzX2Jhc2VyZWFjaGFibGVfdGltZSA9IFBST0NfU1lTX05FVF9JUFZ4X0JBU0VfUkVBQ0hBQkxFX1RJTUU7CiAgICAgfQorCisjaWZkZWYgU1VQUE9SVF9QUkVGSVhfRkxBR1MKKyAgICBsaXN0X2luZm8ubGlzdF9oZWFkID0gJnByZWZpeF9oZWFkX2xpc3Q7CisgICAgbmV0c25tcF9wcmVmaXhfbGlzdGVuKCk7CisjZW5kaWYKIH0KIAogLyoKQEAgLTEyOCwxNCArMTYzLDYgQEAKIAogICAgICpmbGFncyAmPSB+TkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX0lQVjY7CiAKLSNpZm5kZWYgU0lPQ0dNSUlQSFkKLSNkZWZpbmUgU0lPQ0dNSUlQSFkgMHg4OTQ3Ci0jZW5kaWYKLQotI2lmbmRlZiBTSU9DR01JSVJFRwotI2RlZmluZSBTSU9DR01JSVJFRyAweDg5NDgKLSNlbmRpZgotCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgogICAgIC8qCiAgICAgICogZ2V0IGlwdjYgYWRkcmVzc2VzCkBAIC00MDIsMTYgKzQyOSwxNSBAQAogICAgICAqIHN1YnRyYWN0IG91dCBtdWx0aWNhc3QgcGFja2V0cyBmcm9tIHJlY19wa3QgYmVmb3JlCiAgICAgICogd2Ugc3RvcmUgaXQgYXMgdW5pY2FzdCBjb3VudGVyLgogICAgICAqLwotICAgIHJlY19wa3QgLT0gcmVjX21jYXN0OwotCisgICAgZW50cnktPm5zX2ZsYWdzIHw9IE5FVFNOTVBfSU5URVJGQUNFX0ZMQUdTX0NBTENVTEFURV9VQ0FTVDsKICAgICBlbnRyeS0+c3RhdHMuaWJ5dGVzLmxvdyA9IHJlY19vY3QgJiAweGZmZmZmZmZmOwotICAgIGVudHJ5LT5zdGF0cy5pdWNhc3QubG93ID0gcmVjX3BrdCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLmlhbGwubG93ID0gcmVjX3BrdCAmIDB4ZmZmZmZmZmY7CiAgICAgZW50cnktPnN0YXRzLmltY2FzdC5sb3cgPSByZWNfbWNhc3QgJiAweGZmZmZmZmZmOwogICAgIGVudHJ5LT5zdGF0cy5vYnl0ZXMubG93ID0gc25kX29jdCAmIDB4ZmZmZmZmZmY7CiAgICAgZW50cnktPnN0YXRzLm91Y2FzdC5sb3cgPSBzbmRfcGt0ICYgMHhmZmZmZmZmZjsKICNpZmRlZiBTQ051TUFYICAgLyogWFhYIC0gc2hvdWxkIGJlIGZsYWcgZm9yIDY0LWJpdCB2YXJpYWJsZXMgKi8KICAgICBlbnRyeS0+c3RhdHMuaWJ5dGVzLmhpZ2ggPSByZWNfb2N0ID4+IDMyOwotICAgIGVudHJ5LT5zdGF0cy5pdWNhc3QuaGlnaCA9IHJlY19wa3QgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmlhbGwuaGlnaCA9IHJlY19wa3QgPj4gMzI7CiAgICAgZW50cnktPnN0YXRzLmltY2FzdC5oaWdoID0gcmVjX21jYXN0ID4+IDMyOwogICAgIGVudHJ5LT5zdGF0cy5vYnl0ZXMuaGlnaCA9IHNuZF9vY3QgPj4gMzI7CiAgICAgZW50cnktPnN0YXRzLm91Y2FzdC5oaWdoID0gc25kX3BrdCA+PiAzMjsKQEAgLTQ1NSw3ICs0ODEsNyBAQAogICAgIG5ldHNubXBfY29udGFpbmVyICphZGRyX2NvbnRhaW5lcjsKICNlbmRpZgogCi0gICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6Y29udGFpbmVyOmFyY2giLCAibG9hZCAoZmxhZ3MgJXApXG4iLAorICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmNvbnRhaW5lcjphcmNoIiwgImxvYWQgKGZsYWdzICV4KVxuIiwKICAgICAgICAgICAgICAgICBsb2FkX2ZsYWdzKSk7CiAKICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKQEAgLTYyMiw3ICs2NDgsNyBAQAogICAgICAgICAgICAgICAgIHtJQU5BSUZUWVBFX0JBU0lDSVNETiwgImlwcHAifSwKICAgICAgICAgICAgICAgICB7SUFOQUlGVFlQRV9QUk9QVklSVFVBTCwgImJvbmQifSwgLyogQm9uZGluZyBkcml2ZXIgZmluZCBmYXN0ZXN0IHNsYXZlICovCiAgICAgICAgICAgICAgICAge0lBTkFJRlRZUEVfUFJPUFZJUlRVQUwsICJ2YWQifSwgIC8qIEFOUyBkcml2ZXIgLSA/c3BlZWQ/ICovCi0gICAgICAgICAgICAgICAgezAsIDB9ICAgICAgICAgICAgICAgICAgLyogZW5kIG9mIGxpc3QgKi8KKyAgICAgICAgICAgICAgICB7MCwgTlVMTH0gICAgICAgICAgICAgICAgICAvKiBlbmQgb2YgbGlzdCAqLwogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgaW50ICAgICAgICAgICAgIGxlbjsKQEAgLTYzOSw2ICs2NjUsMzYgQEAKICAgICAgICAgICAgICAgICBlbnRyeS0+dHlwZSA9IElBTkFJRlRZUEVfT1RIRVI7CiAgICAgICAgIH0KIAorICAgICAgICAvKgorICAgICAgICAgKiBpbnRlcmZhY2UgaWRlbnRpZmllciBpcyBzcGVjaWZpZWQgYmFzZWQgb24gcGh5c2FkZHIgYW5kIHR5cGUKKyAgICAgICAgICovCisgICAgICAgIHN3aXRjaCAoZW50cnktPnR5cGUpIHsKKyAgICAgICAgY2FzZSBJQU5BSUZUWVBFX0VUSEVSTkVUQ1NNQUNEOgorICAgICAgICBjYXNlIElBTkFJRlRZUEVfRVRIRVJORVQzTUJJVDoKKyAgICAgICAgY2FzZSBJQU5BSUZUWVBFX0ZBU1RFVEhFUjoKKyAgICAgICAgY2FzZSBJQU5BSUZUWVBFX0ZBU1RFVEhFUkZYOgorICAgICAgICBjYXNlIElBTkFJRlRZUEVfR0lHQUJJVEVUSEVSTkVUOgorICAgICAgICBjYXNlIElBTkFJRlRZUEVfRkRESToKKyAgICAgICAgY2FzZSBJQU5BSUZUWVBFX0lTTzg4MDI1VE9LRU5SSU5HOgorICAgICAgICAgICAgaWYgKE5VTEwgIT0gZW50cnktPnBhZGRyICYmIEVUSF9BTEVOICE9IGVudHJ5LT5wYWRkcl9sZW4pCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGVudHJ5LT52Nl9pZl9pZF9sZW4gPSBlbnRyeS0+cGFkZHJfbGVuICsgMjsKKyAgICAgICAgICAgIG1lbWNweShlbnRyeS0+djZfaWZfaWQsIGVudHJ5LT5wYWRkciwgMyk7CisgICAgICAgICAgICBtZW1jcHkoZW50cnktPnY2X2lmX2lkICsgNSwgZW50cnktPnBhZGRyICsgMywgMyk7CisgICAgICAgICAgICBlbnRyeS0+djZfaWZfaWRbMF0gXj0gMjsKKyAgICAgICAgICAgIGVudHJ5LT52Nl9pZl9pZFszXSA9IDB4RkY7CisgICAgICAgICAgICBlbnRyeS0+djZfaWZfaWRbNF0gPSAweEZFOworCisgICAgICAgICAgICBlbnRyeS0+bnNfZmxhZ3MgfD0gTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX1Y2X0lGSUQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElBTkFJRlRZUEVfU09GVFdBUkVMT09QQkFDSzoKKyAgICAgICAgICAgIGVudHJ5LT52Nl9pZl9pZF9sZW4gPSAwOworICAgICAgICAgICAgZW50cnktPm5zX2ZsYWdzIHw9IE5FVFNOTVBfSU5URVJGQUNFX0ZMQUdTX0hBU19WNl9JRklEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoSUFOQUlGVFlQRV9FVEhFUk5FVENTTUFDRCA9PSBlbnRyeS0+dHlwZSkgewogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNwZWVkOwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRzcGVlZCA9IE5PTUlOQUxfTElOS19TUEVFRDsKQEAgLTg3OCwzICs5MzQsMTkwIEBACiAgICAgfQogICAgIHJldHVybiByZXRzcGVlZDsKIH0KKyNpZmRlZiBTVVBQT1JUX1BSRUZJWF9GTEFHUwordm9pZCBuZXRzbm1wX3ByZWZpeF9wcm9jZXNzKGludCBmZCwgdm9pZCAqZGF0YSk7CisKKy8qIE9wZW4gbmV0bGluayBzb2NrZXQgdG8gd2F0Y2ggbmV3IGlwdjYgYWRkcmVzc2VzIGFuZCBwcmVmaXhlcy4gKi8KK2ludCBuZXRzbm1wX3ByZWZpeF9saXN0ZW4oKQoreworICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgc3RydWN0IG5sbXNnaGRyIG47CisgICAgICAgICAgICAgICAgc3RydWN0IGlmaW5mb21zZyByOworICAgICAgICAgICAgICAgIGNoYXIgICBidWZbMTAyNF07CisgICAgfSByZXE7CisKKyAgICBzdHJ1Y3QgcnRhdHRyICAgICAgKnJ0YTsKKyAgICBpbnQgICAgICAgICAgICAgICAgc3RhdHVzOworICAgIHN0cnVjdCBzb2NrYWRkcl9ubCBsb2NhbGFkZHJpbmZvOworICAgIHVuc2lnbmVkICAgICAgICAgICBncm91cHMgPSAwOworCisgICAgaW50IGZkID0gc29ja2V0KFBGX05FVExJTkssIFNPQ0tfREdSQU0sIE5FVExJTktfUk9VVEUpOworICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5ldHNubXBfcHJlZml4X2xpc3RlbjogQ2Fubm90IGNyZWF0ZSBzb2NrZXQuXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG1lbXNldCgmbG9jYWxhZGRyaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9ubCkpOworCisgICAgZ3JvdXBzIHw9IFJUTUdSUF9JUFY2X0lGQUREUjsKKyAgICBncm91cHMgfD0gUlRNR1JQX0lQVjZfUFJFRklYOworICAgIGxvY2FsYWRkcmluZm8ubmxfZmFtaWx5ID0gQUZfTkVUTElOSzsKKyAgICBsb2NhbGFkZHJpbmZvLm5sX2dyb3VwcyA9IGdyb3VwczsKKworICAgIGlmIChiaW5kKGZkLCAoc3RydWN0IHNvY2thZGRyKikmbG9jYWxhZGRyaW5mbywgc2l6ZW9mKGxvY2FsYWRkcmluZm8pKSA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibmV0c25tcF9wcmVmaXhfbGlzdGVuOiBCaW5kIGZhaWxlZC5cbiIpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBtZW1zZXQoJnJlcSwgMCwgc2l6ZW9mKHJlcSkpOworICAgIHJlcS5uLm5sbXNnX2xlbiA9IE5MTVNHX0xFTkdUSChzaXplb2Yoc3RydWN0IHJ0Z2VubXNnKSk7CisgICAgcmVxLm4ubmxtc2dfZmxhZ3MgPSBOTE1fRl9SRVFVRVNUIHwgTkxNX0ZfUk9PVDsKKyAgICByZXEubi5ubG1zZ190eXBlID0gUlRNX0dFVExJTks7CisgICAgcmVxLnIuaWZpX2ZhbWlseSA9IEFGX0lORVQ2OworICAgIHJ0YSA9IChzdHJ1Y3QgcnRhdHRyICopKCgoY2hhciAqKSZyZXEpICsgTkxNU0dfQUxJR04ocmVxLm4ubmxtc2dfbGVuKSk7CisgICAgcnRhLT5ydGFfbGVuID0gUlRBX0xFTkdUSCgxNik7CisKKyAgICBzdGF0dXMgPSBzZW5kKGZkLCAmcmVxLCByZXEubi5ubG1zZ19sZW4sIDApOworICAgIGlmIChzdGF0dXMgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm5ldHNubXBfcHJlZml4X2xpc3Rlbjogc2VuZCBmYWlsZWRcbiIpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAocmVnaXN0ZXJfcmVhZGZkKGZkLCBuZXRzbm1wX3ByZWZpeF9wcm9jZXNzLCBOVUxMKSAhPSAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm5ldHNubXBfcHJlZml4X2xpc3RlbjogZXJyb3IgcmVnaXN0ZXJpbmcgbmV0bGluayBzb2NrZXRcbiIpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFByb2Nlc3Mgb25lIGluY29taW5nIG5ldGxpbmsgcGFja2V0cy4KKyAqIFJUTV9ORVdBRERSIGFuZCBSVE1fTkVXUFJFRklYIHVzdWFsbHkgYXJyaXZlIGluIHNlcGFyYXRlIHBhY2tldHMKKyAqIC0+IGluZm9ybWF0aW9uIGZyb20gdGhlc2UgcGFja2V0cyBtdXN0IGJlIHN0b3JlZCBsb2NhbGx5IGFuZAorICogbmV3IHByZWZpeCBpcyBhZGRlZCB3aGVuIGluZm9ybWF0aW9uIGZyb20gYm90aCBwYWNrZXRzIGlzIGNvbXBsZXRlLgorICovCit2b2lkIG5ldHNubXBfcHJlZml4X3Byb2Nlc3MoaW50IGZkLCB2b2lkICpkYXRhKQoreworICAgIGludCAgICAgICAgICAgICAgICBzdGF0dXM7CisgICAgY2hhciAgICAgICAgICAgICAgIGJ1ZlsxNjM4NF07CisgICAgc3RydWN0IG5sbXNnaGRyICAgICpubG1wOworICAgIHN0cnVjdCBydGF0dHIgICAgICAqcnRhdHA7CisgICAgc3RydWN0IGlmYWRkcm1zZyAgICppZmE7CisgICAgc3RydWN0IHByZWZpeG1zZyAgICpwcmVmaXg7CisgICAgc3RydWN0IGluNl9hZGRyICAgICppbjZwOworCisgICAgLyogdGhlc2UgdmFsdWVzIG11c3QgcGVyc2lzdCBiZXR3ZWVuIGNhbGxzICovCisgICAgc3RhdGljIGNoYXIgICAgICAgICAgICAgICBpbjZwQWRkcls0MF07CisgICAgc3RhdGljIGludCAgICAgICAgICAgICAgICBoYXZlX2FkZHIgPSAwLGhhdmVfcHJlZml4ID0gMDsKKyAgICBzdGF0aWMgaW50ICAgICAgICAgICAgICAgIG9ubGluayA9IDIsYXV0b25vbW91cyA9IDI7IC8qQXNzdW1lIGFzIGZhbHNlKi8KKworICAgIGludCAgICAgICAgICAgICAgICBpcmV0OworICAgIHByZWZpeF9jYnggICAgICAgICAqbmV3OworICAgIGludCAgICAgICAgICAgICAgICBsZW4sIHJlcV9sZW4sIGxlbmd0aDsgCisKKyAgICBzdGF0dXMgPSByZWN2KGZkLCBidWYsIHNpemVvZihidWYpLCAwKTsKKyAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm5ldHNubXBfcHJlZml4X2xpc3RlbjogUmVjZWl2ZSBmYWlsZWQuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmKHN0YXR1cyA9PSAwKXsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6cHJlZml4IiwgIkVuZCBvZiBGaWxlXG4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IobmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIgKilidWY7IHN0YXR1cyA+IHNpemVvZigqbmxtcCk7KXsKKyAgICAgICAgbGVuID0gbmxtcC0+bmxtc2dfbGVuOworICAgICAgICByZXFfbGVuID0gbGVuIC0gc2l6ZW9mKCpubG1wKTsKKworICAgICAgICBpZiAocmVxX2xlbiA8IDAgfHwgbGVuID4gc3RhdHVzKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJuZXRzbm1wX3ByZWZpeF9saXN0ZW46IEVycm9yIGluIGxlbmd0aC5cbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFOTE1TR19PSyhubG1wLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTpwcmVmaXgiLCAiTkxNU0cgbm90IE9LXG4iKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChubG1wLT5ubG1zZ190eXBlID09IFJUTV9ORVdBRERSIHx8IG5sbXAtPm5sbXNnX3R5cGUgPT0gUlRNX0RFTEFERFIpIHsKKyAgICAgICAgICAgIGlmYSA9IE5MTVNHX0RBVEEobmxtcCk7CisgICAgICAgICAgICBsZW5ndGggPSBubG1wLT5ubG1zZ19sZW47CisgICAgICAgICAgICBsZW5ndGggLT0gTkxNU0dfTEVOR1RIKHNpemVvZigqaWZhKSk7CisKKyAgICAgICAgICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6cHJlZml4IiwgIndyb25nIG5sbXNnIGxlbmd0aCAlZFxuIiwgbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmKCFpZmEtPmlmYV9mbGFncykgeworICAgICAgICAgICAgICAgIHJ0YXRwID0gSUZBX1JUQShpZmEpOworICAgICAgICAgICAgICAgIHdoaWxlIChSVEFfT0socnRhdHAsIGxlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ0YXRwLT5ydGFfdHlwZSA9PSBJRkFfQUREUkVTUyl7CisgICAgICAgICAgICAgICAgICAgICAgICBpbjZwID0gKHN0cnVjdCBpbjZfYWRkciAqKSBSVEFfREFUQShydGF0cCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihubG1wLT5ubG1zZ190eXBlID09IFJUTV9ERUxBRERSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25wcmludGYoaW42cEFkZHIsIHNpemVvZihpbjZwQWRkciksICIlMDR4JTA0eCUwNHglMDR4JTA0eCUwNHglMDR4JTA0eCIsIE5JUDYoKmluNnApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlX2FkZHIgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25wcmludGYoaW42cEFkZHIsIHNpemVvZihpbjZwQWRkciksICIlMDR4JTA0eCUwNHglMDR4JTA0eCUwNHglMDR4JTA0eCIsIE5JUDYoKmluNnApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlX2FkZHIgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJ0YXRwID0gUlRBX05FWFQocnRhdHAsbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZihubG1wLT5ubG1zZ190eXBlID09IFJUTV9ORVdQUkVGSVgpIHsKKyAgICAgICAgICAgIHByZWZpeCA9IE5MTVNHX0RBVEEobmxtcCk7CisgICAgICAgICAgICBsZW5ndGggPSBubG1wLT5ubG1zZ19sZW47CisgICAgICAgICAgICBsZW5ndGggLT0gTkxNU0dfTEVOR1RIKHNpemVvZigqcHJlZml4KSk7CisKKyAgICAgICAgICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6cHJlZml4IiwgIndyb25nIG5sbXNnIGxlbmd0aCAlZFxuIiwgbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoYXZlX3ByZWZpeCA9IDE7CisgICAgICAgICAgICBpZiAocHJlZml4LT5wcmVmaXhfZmxhZ3MgJiBJRl9QUkVGSVhfT05MSU5LKSB7CisgICAgICAgICAgICAgICAgb25saW5rID0gMTsgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHJlZml4LT5wcmVmaXhfZmxhZ3MgJiBJRl9QUkVGSVhfQVVUT0NPTkYpIHsKKyAgICAgICAgICAgICAgICBhdXRvbm9tb3VzID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgLT0gTkxNU0dfQUxJR04obGVuKTsKKyAgICAgICAgbmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIqKSgoY2hhciopbmxtcCArIE5MTVNHX0FMSUdOKGxlbikpOworICAgIH0KKworICAgIGlmKChoYXZlX2FkZHIgPT0gMSkgJiYgKGhhdmVfcHJlZml4ID09IDEpKXsKKyAgICAgICAgaWYoIShuZXcgPSBuZXRfc25tcF9jcmVhdGVfcHJlZml4X2luZm8gKG9ubGluaywgYXV0b25vbW91cywgaW42cEFkZHIpKSkKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOnByZWZpeCIsICJVbmFibGUgdG8gY3JlYXRlIHByZWZpeCBpbmZvXG4iKSk7CisgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICBpcmV0ID0gbmV0X3NubXBfc2VhcmNoX3VwZGF0ZV9wcmVmaXhfaW5mbyAobGlzdF9pbmZvLmxpc3RfaGVhZCwgbmV3LCAwKTsKKyAgICAgICAgICAgIGlmKGlyZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6cHJlZml4IiwgIlVuYWJsZSB0byBhZGQvdXBkYXRlIHByZWZpeCBpbmZvXG4iKSk7CisgICAgICAgICAgICAgICAgZnJlZShuZXcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoaXJldCA9PSAyKSAvKk9ubHkgd2hlbiBlbnJ0eSBhbHJlYWR5IGV4aXN0cyBhbmQgd2UgYXJlIG9ubHkgdXBkYXRpbmcqLworICAgICAgICAgICAgICAgIGZyZWUobmV3KTsKKyAgICAgICAgfQorICAgICAgICBoYXZlX2FkZHIgPSBoYXZlX3ByZWZpeCA9IDA7CisgICAgICAgIG9ubGluayA9IGF1dG9ub21vdXMgPSAyOyAvKlNldCB0byBkZWZhdWx0cyBhZ2FpbiovCisgICAgfSBlbHNlIGlmIChoYXZlX2FkZHIgPT0gLTEpIHsKKyAgICAgICAgaXJldCA9IG5ldF9zbm1wX2RlbGV0ZV9wcmVmaXhfaW5mbyAobGlzdF9pbmZvLmxpc3RfaGVhZCwgaW42cEFkZHIpOworICAgICAgICBpZihpcmV0IDwgMCkKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOnByZWZpeCIsICJVbmFibGUgdG8gZGVsZXRlIHRoZSBwcmVmaXggaW5mb1xuIikpOworICAgICAgICAgICAgaWYoIWlyZXQpCisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6cHJlZml4IiwgIlVuYWJsZSB0byBmaW5kIHRoZSBub2RlIHRvIGRlbGV0ZVxuIikpOworICAgICAgICAgICAgaGF2ZV9hZGRyID0gMDsKKyAgICB9Cit9CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9vcGVuYnNkLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX29wZW5ic2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGEyZmRjCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9vcGVuYnNkLmMKQEAgLTAsMCArMSw0MDIgQEAKKy8qCisgKiAgSW50ZXJmYWNlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICoKKyAqICRJZCQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCisjaW5jbHVkZSAiaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaCIKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpZiBIQVZFX1NZU19JT0NUTF9ICisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjZWxzZQorI2Vycm9yICJsaW51eCBzaG91bGQgaGF2ZSBzeXMvaW9jdGwgaGVhZGVyIgorI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaD4KKyNpbmNsdWRlICJpZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2luY2x1ZGUgPG5ldC9pZl9kbC5oPgorI2luY2x1ZGUgPG5ldC9pZl90eXBlcy5oPgorI2luY2x1ZGUgPG5ldC9pZl9tZWRpYS5oPgorCitleHRlcm4gc3RydWN0IHRpbWV2YWwgc3RhcnR0aW1lOworCitpbnQKK25ldHNubXBfb3BlbmJzZF9pbnRlcmZhY2VfZ2V0X2lmX3NwZWVkKGNoYXIgKm5hbWUsIHVfaW50ICpzcGVlZCwgdV9pbnQgKnNwZWVkX2hpZ2gpOworCit2b2lkCituZXRzbm1wX2FyY2hfaW50ZXJmYWNlX2luaXQodm9pZCkKK3sKKyAgICAvKgorICAgICAqIG5vdGhpbmcgdG8gZG8KKyAgICAgKi8KK30KKworLyoKKyAqIGZpbmQgdGhlIGlmSW5kZXggZm9yIGFuIGludGVyZmFjZSBuYW1lCisgKgorICogQHJldHZhbCAwIDogbm8gaW5kZXggZm91bmQKKyAqIEByZXR2YWwgPjA6IGlmSW5kZXggZm9yIGludGVyZmFjZQorICovCitvaWQKK25ldHNubXBfYXJjaF9pbnRlcmZhY2VfaW5kZXhfZmluZChjb25zdCBjaGFyICpuYW1lKQoreworICAgIHJldHVybiBpZl9uYW1ldG9pbmRleChuYW1lKTsKK30KKworLyogc2FfbGVuIHJvdW5kdXAgbWFjcm8uICovCisjZGVmaW5lIFJPVU5EVVAoYSkgXAorICAoKGEpID4gMCA/ICgxICsgKCgoYSkgLSAxKSB8IChzaXplb2YobG9uZykgLSAxKSkpIDogc2l6ZW9mKGxvbmcpKQorCisvKgorICoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBubyBjb250YWluZXIgc3BlY2lmaWVkCisgKiBAcmV0dmFsIC0yIGNvdWxkIG5vdCBnZXQgaW50ZXJmYWNlIGluZm8KKyAqIEByZXR2YWwgLTMgY291bGQgbm90IGNyZWF0ZSBlbnRyeSAocHJvYmFibHkgbWFsbG9jKQorICovCitpbnQKK25ldHNubXBfYXJjaF9pbnRlcmZhY2VfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBuZXRzbm1wX2ludGVyZmFjZV9lbnRyeSAqZW50cnkgPSBOVUxMOworICAgIHVfY2hhciAqaWZfbGlzdCA9IE5VTEwsICpjcDsKKyAgICBzaXplX3QgaWZfbGlzdF9zaXplID0gMDsKKyAgICBzdHJ1Y3QgaWZfbXNnaGRyICppZnA7CisgICAgaW50IHN5c2N0bF9vaWRbXSA9IHsgQ1RMX05FVCwgUEZfUk9VVEUsIDAsIDAsIE5FVF9SVF9JRkxJU1QsIDAgfTsKKyAgICBzdHJ1Y3QgaWZhX21zZ2hkciAqaWZhOworICAgIHN0cnVjdCBzb2NrYWRkciAqYTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfZGwgKmFkbDsKKyAgICBpbnQgYW1hc2s7CisgICAgY2hhciAqaWZfbmFtZTsKKyAgICBpbnQgZmxhZ3M7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTpjb250YWluZXI6YXJjaCIsCisgICAgICAgICAgICAgICAgImxvYWQgKGZsYWdzICVwKVxuIiwgbG9hZF9mbGFncykpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBpbnRlcmZhY2VcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHN5c2N0bChzeXNjdGxfb2lkLCBzaXplb2Yoc3lzY3RsX29pZCkgLyBzaXplb2YoaW50KSwgMCwgJmlmX2xpc3Rfc2l6ZSwgMCwgMCkgPT0gLTEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBnZXQgaW50ZXJmYWNlIGluZm8gKHNpemUpXG4iKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIGlmX2xpc3QgPSBtYWxsb2MoaWZfbGlzdF9zaXplKTsKKyAgICBpZiAoaWZfbGlzdCA9PSBOVUxMKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBpbnRlcmZhY2UgaW5mbyAoJXUgYnl0ZXMpXG4iLCBpZl9saXN0X3NpemUpOworICAgICAgICByZXR1cm4gLTM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6Y29udGFpbmVyOmFyY2giLAorICAgICAgICAgICAgICAgICAgICAiYWxsb2NhdGVkICV1IGJ5dGVzIGZvciBpZl9saXN0XG4iLCBpZl9saXN0X3NpemUpKTsKKyAgICB9CisKKyAgICBpZiAoc3lzY3RsKHN5c2N0bF9vaWQsIHNpemVvZihzeXNjdGxfb2lkKSAvIHNpemVvZihpbnQpLCBpZl9saXN0LCAmaWZfbGlzdF9zaXplLCAwLCAwKSA9PSAtMSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGdldCBpbnRlcmZhY2UgaW5mb1xuIik7CisgICAgICAgIGZyZWUoaWZfbGlzdCk7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICAvKiAxc3QgcGFzczogY3JlYXRlIGludGVyZmFjZSBlbnRyaWVzICovCisgICAgZm9yIChjcCA9IGlmX2xpc3Q7IGNwIDwgaWZfbGlzdCArIGlmX2xpc3Rfc2l6ZTsgY3AgKz0gaWZwLT5pZm1fbXNnbGVuKSB7CisKKyAgICAgICAgaWZwID0gKHN0cnVjdCBpZl9tc2doZHIgKikgY3A7CisgICAgICAgIGlmX25hbWUgPSBOVUxMOworICAgICAgICBmbGFncyA9IDA7CisgICAgICAgIGFkbCA9IE5VTEw7CisKKyAgICAgICAgaWYgKGlmcC0+aWZtX3R5cGUgIT0gUlRNX0lGSU5GTykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChpZnAtPmlmbV9hZGRycyAmIFJUQV9JRlApIHsKKyAgICAgICAgICAgIGEgPSAoc3RydWN0IHNvY2thZGRyICopIChpZnAgKyAxKTsKKyAgICAgICAgICAgIC8qIGlmX21zZ2hkciBpcyBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBzb2NrYWRkcnMsIG9mIHdoaWNoIHdlIG5lZWQgb25seSBSVEFfSUZQICovCisgICAgICAgICAgICAvKiBtb3N0IG9mIHRoZSB0aW1lIFJUQV9JRlAgaXMgdGhlIGZpcnN0IGFkZHJlc3Mgd2UgZ2V0LCBoZW5jZSB0aGUgc2hvcnRjdXQgKi8KKyAgICAgICAgICAgIGlmICgoaWZwLT5pZm1fYWRkcnMgJiAoflJUQV9JRlAgLSAxKSkgIT0gMCkgeworICAgICAgICAgICAgICAgIC8qIHNraXAgYWxsIGFkZHJlc3NlcyB1cCB0byBSVEFfSUZQLiAqLworICAgICAgICAgICAgICAgIGZvciAoYW1hc2sgPSAoUlRBX0lGUCA+PiAxKTsgYW1hc2sgIT0gMDsgYW1hc2sgPj49IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlmcC0+aWZtX2FkZHJzICYgYW1hc2spIHsgYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgKCAoKGNoYXIgKikgYSkgKyBST1VORFVQKGEtPnNhX2xlbikgKTsgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkbCA9IChzdHJ1Y3Qgc29ja2FkZHJfZGwgKikgYTsKKyAgICAgICAgICAgIGlmX25hbWUgPSAoY2hhciAqKSBhZGwtPnNkbF9kYXRhOworICAgICAgICAgICAgaWZfbmFtZVthZGwtPnNkbF9ubGVuXSA9ICdcMCc7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEoaWZwLT5pZm1fYWRkcnMgJiBSVEFfSUZQKSB8fCBpZl9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpZm1faW5kZXggJXU6IG5vIGludGVyZmFjZSBuYW1lIGluIG1lc3NhZ2UsIHNraXBwaW5nXG4iLCBpZnAtPmlmbV9pbmRleCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2VudHJ5X2NyZWF0ZShpZl9uYW1lLCBpZnAtPmlmbV9pbmRleCk7CisgICAgICAgIGlmKE5VTEwgPT0gZW50cnkpIHsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9jb250YWluZXJfZnJlZShjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfSU5URVJGQUNFX0ZSRUVfTk9GTEFHUyk7CisgICAgICAgICAgICBmcmVlKGlmX2xpc3QpOworICAgICAgICAgICAgcmV0dXJuIC0zOworICAgICAgICB9CisKKyAgICAgICAgLyogZ2V0IHBoeXNpY2FsIGFkZHJlc3MgKi8KKyAgICAgICAgaWYgKGFkbCAhPSBOVUxMICYmIGFkbC0+c2RsX2FsZW4gPiAwKSB7CisgICAgICAgICAgICBlbnRyeS0+cGFkZHJfbGVuID0gYWRsLT5zZGxfYWxlbjsKKyAgICAgICAgICAgIGVudHJ5LT5wYWRkciA9IG1hbGxvYyhlbnRyeS0+cGFkZHJfbGVuKTsKKyAgICAgICAgICAgIG1lbWNweShlbnRyeS0+cGFkZHIsIGFkbC0+c2RsX2RhdGEgKyBhZGwtPnNkbF9ubGVuLCBhZGwtPnNkbF9hbGVuKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmNvbnRhaW5lcjphcmNoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlczogcGFkZHJfbGVuPSVkLCBlbnRyeS0+cGFkZHI9JXg6JXg6JXg6JXg6JXg6JXhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpZl9uYW1lLCBlbnRyeS0+cGFkZHJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnBhZGRyWzBdLCBlbnRyeS0+cGFkZHJbMV0sIGVudHJ5LT5wYWRkclsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5wYWRkclszXSwgZW50cnktPnBhZGRyWzRdLCBlbnRyeS0+cGFkZHJbNV0pKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVudHJ5LT5wYWRkciA9IG1hbGxvYyg2KTsKKyAgICAgICAgICAgIGVudHJ5LT5wYWRkcl9sZW4gPSA2OworICAgICAgICAgICAgbWVtc2V0KGVudHJ5LT5wYWRkciwgMCwgNik7CisgICAgICAgIH0KKworICAgICAgICBlbnRyeS0+bXR1ID0gaWZwLT5pZm1fZGF0YS5pZmlfbXR1OworICAgICAgICBlbnRyeS0+dHlwZSA9IGlmcC0+aWZtX2RhdGEuaWZpX3R5cGU7CisKKworICAgICAgICBlbnRyeS0+bnNfZmxhZ3MgfD0gTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX0lGX0ZMQUdTOworICAgICAgICBlbnRyeS0+b3NfZmxhZ3MgPSBpZnAtPmlmbV9mbGFnczsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKGlmcC0+aWZtX2ZsYWdzICYgSUZGX1VQKSB7CisgICAgICAgICAgICBlbnRyeS0+YWRtaW5fc3RhdHVzID0gSUZBRE1JTlNUQVRVU19VUDsKKyNpZiBkZWZpbmVkKCBMSU5LX1NUQVRFX1VQICkgJiYgZGVmaW5lZCggTElOS19TVEFURV9ET1dOICkKKyAgICAgICAgICAgIGlmIChpZnAtPmlmbV9kYXRhLmlmaV9saW5rX3N0YXRlID09IExJTktfU1RBVEVfVVApIHsKKyAgICAgICAgICAgICAgICBlbnRyeS0+b3Blcl9zdGF0dXMgPSBJRk9QRVJTVEFUVVNfVVA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlmcC0+aWZtX2RhdGEuaWZpX2xpbmtfc3RhdGUgPT0gTElOS19TVEFURV9ET1dOKSB7CisgICAgICAgICAgICAgICAgZW50cnktPm9wZXJfc3RhdHVzID0gSUZPUEVSU1RBVFVTX0RPV047CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVudHJ5LT5vcGVyX3N0YXR1cyA9IElGT1BFUlNUQVRVU19VTktOT1dOOworICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIGVudHJ5LT5vcGVyX3N0YXR1cyA9IElGT1BFUlNUQVRVU19VUDsKKyNlbmRpZgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW50cnktPmFkbWluX3N0YXR1cyA9IElGQURNSU5TVEFUVVNfRE9XTjsKKyAgICAgICAgICAgIC8qIElGLU1JQiBzcGVjaWZpY2FsbHkgc2F5cyB0aGF0IGlmT3BlclN0YXR1cyBzaG91bGQgYmUgZG93biBpbiB0aGlzIGNhc2UgKi8gCisgICAgICAgICAgICBlbnRyeS0+b3Blcl9zdGF0dXMgPSBJRk9QRVJTVEFUVVNfRE9XTjsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5LT5uc19mbGFncyB8PSBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19IQVNfVjRfUkVBU01NQVg7CisgICAgICAgIGVudHJ5LT5yZWFzbV9tYXggPSBJUF9NQVhQQUNLRVQ7CisKKyAgICAgICAgLyogZ2V0IGNvdW50ZXJzICovCisgICAgICAgIGVudHJ5LT5zdGF0cy5pYnl0ZXMubG93ID0gaWZwLT5pZm1fZGF0YS5pZmlfaWJ5dGVzOyBlbnRyeS0+c3RhdHMuaWJ5dGVzLmhpZ2ggPSAwOworICAgICAgICBlbnRyeS0+c3RhdHMuaXVjYXN0LmxvdyA9IGlmcC0+aWZtX2RhdGEuaWZpX2lwYWNrZXRzOyBlbnRyeS0+c3RhdHMuaXVjYXN0LmhpZ2ggPSAwOworICAgICAgICBlbnRyeS0+c3RhdHMuaW1jYXN0LmxvdyA9IGlmcC0+aWZtX2RhdGEuaWZpX2ltY2FzdHM7IGVudHJ5LT5zdGF0cy5pbWNhc3QuaGlnaCA9IDA7CisgICAgICAgIGVudHJ5LT5zdGF0cy5pZXJyb3JzID0gaWZwLT5pZm1fZGF0YS5pZmlfaWVycm9yczsKKyAgICAgICAgZW50cnktPnN0YXRzLmlkaXNjYXJkcyA9IGlmcC0+aWZtX2RhdGEuaWZpX2lxZHJvcHM7CisgICAgICAgIGVudHJ5LT5zdGF0cy5pdW5rbm93bl9wcm90b3MgPSBpZnAtPmlmbV9kYXRhLmlmaV9ub3Byb3RvOworCisgICAgICAgIGVudHJ5LT5zdGF0cy5vYnl0ZXMubG93ID0gaWZwLT5pZm1fZGF0YS5pZmlfb2J5dGVzOyBlbnRyeS0+c3RhdHMub2J5dGVzLmhpZ2ggPSAwOworICAgICAgICBlbnRyeS0+c3RhdHMub3VjYXN0LmxvdyA9IGlmcC0+aWZtX2RhdGEuaWZpX29wYWNrZXRzOyBlbnRyeS0+c3RhdHMub3VjYXN0LmhpZ2ggPSAwOworICAgICAgICBlbnRyeS0+c3RhdHMub21jYXN0LmxvdyA9IGlmcC0+aWZtX2RhdGEuaWZpX29tY2FzdHM7IGVudHJ5LT5zdGF0cy5vbWNhc3QuaGlnaCA9IDA7CisgICAgICAgIGVudHJ5LT5zdGF0cy5vZXJyb3JzID0gaWZwLT5pZm1fZGF0YS5pZmlfb2Vycm9yczsKKyAgICAgICAgZW50cnktPm5zX2ZsYWdzIHw9ICBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19IQVNfQllURVMgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfSU5URVJGQUNFX0ZMQUdTX0hBU19EUk9QUyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX01DQVNUX1BLVFM7CisKKyAgICAgICAgaWYgKHRpbWVyY21wKCZpZnAtPmlmbV9kYXRhLmlmaV9sYXN0Y2hhbmdlLCAmc3RhcnR0aW1lLCA+KSkgeworICAgICAgICAgICAgZW50cnktPmxhc3RjaGFuZ2UgPSAoaWZwLT5pZm1fZGF0YS5pZmlfbGFzdGNoYW5nZS50dl9zZWMgLSBzdGFydHRpbWUudHZfc2VjKSAqIDEwMDsKKyAgICAgICAgICAgIGVudHJ5LT5uc19mbGFncyB8PSBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19IQVNfTEFTVENIQU5HRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVudHJ5LT5sYXN0Y2hhbmdlID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpZnAtPmlmbV9mbGFncyAmIElGRl9QUk9NSVNDKSBlbnRyeS0+cHJvbWlzY3VvdXMgPSAxOworCisgICAgICAgIC8qIHRyeSB0byBndWVzcyB0aGUgc3BlZWQgZnJvbSBtZWRpYSB0eXBlICovCisgICAgICAgIG5ldHNubXBfb3BlbmJzZF9pbnRlcmZhY2VfZ2V0X2lmX3NwZWVkKGVudHJ5LT5uYW1lLCAmZW50cnktPnNwZWVkLCAmZW50cnktPnNwZWVkX2hpZ2gpOworICAgICAgICBpZiAoZW50cnktPnNwZWVkX2hpZ2ggIT0gMCkgeworICAgICAgICAgICAgZW50cnktPm5zX2ZsYWdzIHw9IE5FVFNOTVBfSU5URVJGQUNFX0ZMQUdTX0hBU19ISUdIX1NQRUVEOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogb3IgcmVzb3J0IHRvIGlmaV9iYXVkcmF0ZSAqLworICAgICAgICAgICAgZW50cnktPnNwZWVkID0gaWZwLT5pZm1fZGF0YS5pZmlfYmF1ZHJhdGU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9lbnRyeV9vdmVycmlkZXMoZW50cnkpOworCisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmNvbnRhaW5lcjphcmNoIiwKKyAgICAgICAgICAgICAgICAgICAgImNyZWF0ZWQgZW50cnkgJXUgZm9yICVzXG4iLCBlbnRyeS0+aW5kZXgsIGVudHJ5LT5uYW1lKSk7CisgICAgfSAvKiBmb3IgKGVhY2ggaW50ZXJmYWNlIGVudHJ5KSAqLworCisgICAgLyogcGFzcyAyOiB3YWxrIGFkZHJlc3NlcyAqLworICAgIGZvciAoY3AgPSBpZl9saXN0OyBjcCA8IGlmX2xpc3QgKyBpZl9saXN0X3NpemU7IGNwICs9IGlmYS0+aWZhbV9tc2dsZW4pIHsKKworICAgICAgICBpZmEgPSAoc3RydWN0IGlmYV9tc2doZHIgKikgY3A7CisKKyAgICAgICAgaWYgKGlmYS0+aWZhbV90eXBlICE9IFJUTV9ORVdBRERSKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6Y29udGFpbmVyOmFyY2giLAorICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZWQgMHgleCBpbiBSVE1fTkVXQUREUiBmb3IgaWZpbmRleCAldVxuIiwKKyAgICAgICAgICAgICAgICAgICAgaWZhLT5pZmFtX2FkZHJzLCBpZmEtPmlmYW1faW5kZXgpKTsKKworICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9lbnRyeV9nZXRfYnlfaW5kZXgoY29udGFpbmVyLCBpZmEtPmlmYW1faW5kZXgpOworICAgICAgICBpZiAoZW50cnkgPT0gTlVMTCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImFkZHJlc3MgZm9yIGEgbm9uZXhpc3RlbnQgaW50ZXJmYWNlPyBpbmRleD0lZCIsIGlmYS0+aWZhbV9pbmRleCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHdhbGsgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzIHJlY2VpdmVkLgorICAgICAgICAgICB3ZSBkbyBub3QgdXNlIGFjdHVhbCBhZGRyZXNzZXMsIHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBzZXQgZmxhZ3MgKi8KKyAgICAgICAgYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgKGlmYSArIDEpOworICAgICAgICBmb3IgKGFtYXNrID0gaWZhLT5pZmFtX2FkZHJzOyBhbWFzayAhPSAwOyBhbWFzayA+Pj0gMSkgeworICAgICAgICAgICAgaWYgKChhbWFzayAmIDEpICE9IDApIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTpjb250YWluZXI6YXJjaCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBhPSVwLCBzYV9sZW49JWQsIHNhX2ZhbWlseT0weCV4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5uYW1lLCBhLCBhLT5zYV9sZW4sIGEtPnNhX2ZhbWlseSkpOworCisgICAgICAgICAgICAgICAgaWYgKGEtPnNhX2ZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgICAgICAgICAgICAgICBlbnRyeS0+bnNfZmxhZ3MgfD0gTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX0lQVjQ7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYS0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KQorICAgICAgICAgICAgICAgICAgICBlbnRyeS0+bnNfZmxhZ3MgfD0gTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX0lQVjY7CisKKyAgICAgICAgICAgICAgICBhID0gKHN0cnVjdCBzb2NrYWRkciAqKSAoICgoY2hhciAqKSBhKSArIFJPVU5EVVAoYS0+c2FfbGVuKSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmNvbnRhaW5lcjphcmNoIiwKKyAgICAgICAgICAgICAgICAgICAgIiVzOiBmbGFncz0weCV4XG4iLCBlbnRyeS0+bmFtZSwgZW50cnktPm5zX2ZsYWdzKSk7CisgICAgfQorCisgICAgaWYgKGlmX2xpc3QgIT0gTlVMTCkKKyAgICAgICAgZnJlZShpZl9saXN0KTsKKworICAgIHJldHVybiAwOworfQorCisvKgorICogc3Vicm91dGluZSB0byB0cmFuc2xhdGUga25vd24gbWVkaWEgdHlwZWQgdG8gc3BlZWQuCisgKiBzZWUgL3Vzci9pbmNsdWRlL25ldC9pZl9tZWRpYS5oIGZvciBkZWZpbml0aW9ucworICovCisKK3ZvaWQKK19vcGVuYnNkX2ludGVyZmFjZV9pZm1lZGlhX3RvX3NwZWVkKGludCBtZWRpYSwgdV9pbnQgKnNwZWVkLCB1X2ludCAqc3BlZWRfaGlnaCkKK3sKKyAgICAqc3BlZWQgPSAwOyAqc3BlZWRfaGlnaCA9IDA7CisKKyAgICBzd2l0Y2ggKElGTV9UWVBFKG1lZGlhKSkgeworICAgICAgICBjYXNlIElGTV9FVEhFUjoKKyAgICAgICAgICAgIHN3aXRjaCAoSUZNX1NVQlRZUEUobWVkaWEpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTBfVDoKKyAgICAgICAgICAgICAgICBjYXNlIElGTV8xMF8yOgorICAgICAgICAgICAgICAgIGNhc2UgSUZNXzEwXzU6CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTBfU1RQOgorICAgICAgICAgICAgICAgIGNhc2UgSUZNXzEwX0ZMOgorICAgICAgICAgICAgICAgICAgICAqc3BlZWQgPSAxMDAwMDAwMDsgKnNwZWVkX2hpZ2ggPSAxMDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTAwX1RYOgorICAgICAgICAgICAgICAgIGNhc2UgSUZNXzEwMF9GWDoKKyAgICAgICAgICAgICAgICBjYXNlIElGTV8xMDBfVDQ6CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTAwX1ZHOgorICAgICAgICAgICAgICAgIGNhc2UgSUZNXzEwMF9UMjoKKyAgICAgICAgICAgICAgICAgICAgKnNwZWVkID0gMTAwMDAwMDAwOyAqc3BlZWRfaGlnaCA9IDEwMDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTAwMF9MWDoKKwkJY2FzZSBJRk1fMTAwMF9TWDoKKyAgICAgICAgICAgICAgICBjYXNlIElGTV8xMDAwX0NYOgorI2lmZGVmIElGTV8xMDAwX1QKKyAgICAgICAgICAgICAgICBjYXNlIElGTV8xMDAwX1Q6CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgKnNwZWVkID0gMTAwMDAwMDAwMDsgKnNwZWVkX2hpZ2ggPSAxMDAwOyBicmVhazsKKyNpZmRlZiBJRk1fMTBHQkFTRV9TUgorICAgICAgICAgICAgICAgIGNhc2UgSUZNXzEwR0JBU0VfU1I6CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTBHQkFTRV9MUjoKKyAgICAgICAgICAgICAgICAgICAgKnNwZWVkID0gKHVfaW50KSAtMTsgLyogNDI5NDk2NzI5NTsgKi8gKnNwZWVkX2hpZ2ggPSAxMDAwMDsgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm47Cit9CisKKy8qCisgKiBAcmV0dmFsICAwIHNwZWVkIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIChlcnJvciwgdW5rbm93biBtZWRpYSkKKyAqIEByZXR2YWwgPjAgc3BlZWQsIGVxdWFsIHRvICpzcGVlZC4KKyAqICAgICAgICAgICAgc2V0cyAqc3BlZWQ9Ml4zMSBhbmQgcmV0dXJucyAqc3BlZWRfaGlnaD1zcGVlZC8xMF42IGFzIHJlcXVpcmVkIGJ5IGlmU3BlZWQvaWZIaWdoU3BlZWQuCisgKi8KKworaW50CituZXRzbm1wX29wZW5ic2RfaW50ZXJmYWNlX2dldF9pZl9zcGVlZChjaGFyICpuYW1lLCB1X2ludCAqc3BlZWQsIHVfaW50ICpzcGVlZF9oaWdoKQoreworICAgIGludCBzOworICAgIHN0cnVjdCBpZm1lZGlhcmVxIGlmbXI7CisgICAgaW50ICptZWRpYV9saXN0LCBpOworICAgIHVfaW50IHRfc3BlZWQsIHRfc3BlZWRfaGlnaDsgCisgICAgdV9pbnQgbV9zcGVlZCwgbV9zcGVlZF9oaWdoOworCisgICAgKnNwZWVkID0gMDsgKnNwZWVkX2hpZ2ggPSAwOworCisgICAgaWYgKChzID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbWVtc2V0KCZpZm1yLCAwLCBzaXplb2YoaWZtcikpOworICAgIHN0cmxjcHkoaWZtci5pZm1fbmFtZSwgbmFtZSwgc2l6ZW9mKGlmbXIuaWZtX25hbWUpKTsKKworICAgIGlmIChpb2N0bChzLCBTSU9DR0lGTUVESUEsIChjYWRkcl90KSZpZm1yKSA8IDAgfHwgaWZtci5pZm1fY291bnQgPT0gMCkgeworICAgICAgICBjbG9zZShzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyoKKyAgICAgKiB0cnkgdG8gZ2V0IHNwZWVkIGZyb20gY3VycmVudCBtZWRpYS4KKyAgICAgKiBpZiB1bnN1Y2Nlc3NmdWwgKGUuZy4sIGludGVyZmFjZSBpcyBkb3duKSwgZ2V0IGEgbGlzdCBvZiBjYXBhYmlsaXRpZXMsCisgICAgICogdHJ5IGVhY2ggYW5kIHJldHVybiBtYXhpbXVtIHNwZWVkIHRoZSBpbnRlcmZhY2UgaXMgY2FwYWJsZSBvZi4KKyAgICAgKi8KKworICAgIF9vcGVuYnNkX2ludGVyZmFjZV9pZm1lZGlhX3RvX3NwZWVkKGlmbXIuaWZtX2N1cnJlbnQsIHNwZWVkLCBzcGVlZF9oaWdoKTsKKworICAgIGlmICgqc3BlZWQgPT0gMCAmJgorICAgICAgICAobWVkaWFfbGlzdCA9IChpbnQgKikgbWFsbG9jKGlmbXIuaWZtX2NvdW50ICogc2l6ZW9mKGludCkpKSAhPSBOVUxMICkgeworCisgICAgICAgIGlmbXIuaWZtX3VsaXN0ID0gbWVkaWFfbGlzdDsKKworICAgICAgICBpZiAoaW9jdGwocywgU0lPQ0dJRk1FRElBLCAoY2FkZHJfdCkmaWZtcikgPT0gMCkgeworICAgICAgICAgICAgbV9zcGVlZCA9IDA7IG1fc3BlZWRfaGlnaCA9IDA7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaWZtci5pZm1fY291bnQ7IGkrKykgeworCisgICAgICAgICAgICAgICAgX29wZW5ic2RfaW50ZXJmYWNlX2lmbWVkaWFfdG9fc3BlZWQobWVkaWFfbGlzdFtpXSwgJnRfc3BlZWQsICZ0X3NwZWVkX2hpZ2gpOworCisgICAgICAgICAgICAgICAgaWYgKHRfc3BlZWRfaGlnaCA+IG1fc3BlZWRfaGlnaCB8fAorICAgICAgICAgICAgICAgICAgICAodF9zcGVlZF9oaWdoID09IG1fc3BlZWRfaGlnaCAmJiB0X3NwZWVkID4gdF9zcGVlZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zcGVlZF9oaWdoID0gdF9zcGVlZF9oaWdoOyBtX3NwZWVkID0gdF9zcGVlZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqc3BlZWQgPSBtX3NwZWVkOyAqc3BlZWRfaGlnaCA9IG1fc3BlZWRfaGlnaDsKKyAgICAgICAgfQorICAgICAgICBmcmVlKG1lZGlhX2xpc3QpOworICAgIH0KKworICAgIGNsb3NlKHMpOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6Y29udGFpbmVyOmFyY2giLAorICAgICAgICAgICAgICAgICIlczogc3BlZWQ6ICV1LCBzcGVlZF9oaWdoOiAldVxuIiwKKyAgICAgICAgICAgICAgICBuYW1lLCAqc3BlZWQsICpzcGVlZF9oaWdoKSk7CisKKyAgICByZXR1cm4gKnNwZWVkOworfQorCitpbnQKK25ldHNubXBfYXJjaF9zZXRfYWRtaW5fc3RhdHVzKG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICogZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWZBZG1pblN0YXR1c192YWwpCit7CisgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6YXJjaCIsICJzZXRfYWRtaW5fc3RhdHVzXG4iKSk7CisKKyAgICAvKiBUT0RPOiBpbXBsZW1lbnQgdGhpcyBjYWxsICovCisKKyAgICAvKiBub3QgaW1wbGVtZW50ZWQgKi8KKyAgICBzbm1wX2xvZyhMT0dfRVJSLCAibmV0c25tcF9hcmNoX3NldF9hZG1pbl9zdGF0dXMgaXMgbm90ICh5ZXQpIGltcGxlbWVudGVkIGZvciBGcmVlQlNELlxuIik7CisKKyAgICByZXR1cm4gLTQ7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYwppbmRleCA2NmZiMjJmLi4wYmMwYWZhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3NvbGFyaXMyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jCkBAIC0zLDkgKzMsOSBAQAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKICNpbmNsdWRlICJpZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oIgogI2luY2x1ZGUgImtlcm5lbF9zdW5vczUuaCIKKyNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTYzLDcgKzYzLDcgQEAKICAgICByZXFfZSAgICAgICAgICAgICAgICAgICByZXEgPSBHRVRfRklSU1Q7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSAwOwogCi0gICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6Y29udGFpbmVyOmFyY2giLCAibG9hZCAoZmxhZ3MgJXApXG4iLAorICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmNvbnRhaW5lcjphcmNoIiwgImxvYWQgKGZsYWdzICV1KVxuIiwKICAgICAgICAgICAgICAgICBsX2ZsYWdzKSk7CiAKICAgICBpZiAoY29udGFpbmVyID09IE5VTEwpIHsKQEAgLTMwNiw3ICszMDYsNyBAQAogICAgIGlmICgocmMgPSBnZXRNaWJzdGF0KE1JQl9JUF9BRERSLCBpcHY0ZSwgc2l6ZW9mKCppcHY0ZSksIEdFVF9FWEFDVCwgCiAgICAgICAgICZfbWF0Y2hfaWZuYW1lX3Y0YWRkciwgJmlmZS0+aWZEZXNjci5vX2J5dGVzKSkgPT0gMCkKICAgICAgICAgcmV0dXJuICgxKTsKLSAgICBiemVybygodm9pZCAqKWlwdjRlLCBzaXplb2YoKmlwdjRlKSk7CisgICAgbWVtc2V0KGlwdjRlLCAnXDAnLCBzaXplb2YoKmlwdjRlKSk7CiAgICAgcmV0dXJuICgwKTsKIH0KIApAQCAtMzQwLDcgKzM0MCw3IEBACiAgICAgICAgICZfbWF0Y2hfaWZuYW1lX3Y2YWRkciwgJmlmZS0+aWZEZXNjci5vX2J5dGVzKSkgPT0gMCkgewogICAgICAgICByZXR1cm4gKDEpOwogICAgIH0gCi0gICAgYnplcm8oKHZvaWQgKilpcHY2ZSwgc2l6ZW9mKCppcHY2ZSkpOworICAgIG1lbXNldChpcHY2ZSwgJ1wwJywgc2l6ZW9mKCppcHY2ZSkpOwogICAgIHJldHVybiAoMCk7CiB9CiAjZW5kaWYgLyogU09MQVJJU19IQVZFX0lQVjZfTUlCX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYwppbmRleCA2OTQwMGZjLi5jMjEyOTgxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jCkBAIC0zNyw4ICszNyw4IEBACiAjICAgaW5jbHVkZSAiaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgiCiAjZW5kaWYKIAotb2lkICAgICAgICAgICAgIGlmVGFibGVfb2lkW10gPSB7IElGVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaWZUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoaWZUYWJsZV9vaWQpOworY29uc3Qgb2lkICAgICAgIGlmVGFibGVfb2lkW10gPSB7IElGVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaWZUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoaWZUYWJsZV9vaWQpOwogCiBpZlRhYmxlX3JlZ2lzdHJhdGlvbiBpZlRhYmxlX3VzZXJfY29udGV4dDsKIHN0YXRpYyBpZlRhYmxlX3JlZ2lzdHJhdGlvbiAqaWZUYWJsZV91c2VyX2NvbnRleHRfcDsKQEAgLTE0Nyw4ICsxNDcsNyBAQAogICAgICAqIHJlZ2lzdGVyIHNjYWxhciBmb3IgaWZOdW1iZXIKICAgICAgKi8KICAgICB7Ci0gICAgICAgIG9pZCAgICAgICAgICAgICByZWdfb2lkW10gPQotICAgICAgICAgICAgeyBJRlRBQkxFX05VTUJFUiB9OworICAgICAgICBjb25zdCBvaWQgICAgICAgcmVnX29pZFtdID0geyBJRlRBQkxFX05VTUJFUiB9OwogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKIAogICAgICAgICBteXJlZyA9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKaW5kZXggNmE2ZjBlNS4uMmY5NjI5MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaApAQCAtMzYxLDggKzM2MSw4IEBACiAgICAgaWZUYWJsZV9yb3dyZXFfY3R4ICppZlRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpZlRhYmxlX21pYl9pbmRleCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpZlRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBpZlRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgaWZUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50IGlmVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgImlmVGFibGVfaW50ZXJmYWNlLmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggOWZhMGY5My4uYjViYzNiNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMjMsMTIgKzIzLDMwIEBACiAjICAgaW5jbHVkZSAibWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuaCIKICNlbmRpZgogCit0eXBlZGVmIHN0cnVjdCBjZF9jb250YWluZXJfcyB7CisgICAgbmV0c25tcF9jb250YWluZXIgKmN1cnJlbnQ7CisgICAgbmV0c25tcF9jb250YWluZXIgKmRlbGV0ZWQ7Cit9IGNkX2NvbnRhaW5lcjsKKwogLyoKICAqIGZsYWcgc28gd2Uga25vdyBub3QgdG8gc2V0IHJvdy90YWJsZSBsYXN0IGNoYW5nZSB0aW1lcwogICogZHVyaW5nIHN0YXJ0dXAuCiAgKi8KIHN0YXRpYyBpbnQgICAgICBfZmlyc3RfbG9hZCA9IDE7CiAKKy8qCisgKiBWYWx1ZSBvZiBpbnRlcmZhY2VfZmFkZW91dCBjb25maWcgb3B0aW9uCisgKi8KK3N0YXRpYyBpbnQgZmFkZW91dCA9IElGVEFCTEVfUkVNT1ZFX01JU1NJTkdfQUZURVI7CisvKgorICogVmFsdWUgb2YgaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIGNvbmZpZyBvcHRpb24KKyAqLworc3RhdGljIGludCByZXBsYWNlX29sZCA9IDA7CisKK3N0YXRpYyB2b2lkCitfZGVsZXRlX21pc3NpbmdfaW50ZXJmYWNlKGlmVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcik7CisKIC8qKiBAaW5ncm91cCBpbnRlcmZhY2UgCiAgKiBAZGVmZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCiAgKgpAQCAtNTAsNiArNjgsMzIgQEAKICAqIE9JRDogLjEuMy42LjEuMi4xLjIuMiwgbGVuZ3RoOiA4CiAgKi8KIAorc3RhdGljIHZvaWQKK3BhcnNlX2ludGVyZmFjZV9mYWRlb3V0KGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKQoreworICAgIGZhZGVvdXQgPSBhdG9pKGxpbmUpOworfQorc3RhdGljIHZvaWQKK3BhcnNlX2ludGVyZmFjZV9yZXBsYWNlX29sZChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkKK3sKKyAgICBpZiAoc3RyY21wKGxpbmUsICJ5ZXMiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgInkiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgInRydWUiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgIjEiKSA9PSAwKSB7CisgICAgICAgIHJlcGxhY2Vfb2xkID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoc3RyY21wKGxpbmUsICJubyIpID09IDAKKyAgICAgICAgICAgIHx8IHN0cmNtcChsaW5lLCAibiIpID09IDAKKyAgICAgICAgICAgIHx8IHN0cmNtcChsaW5lLCAiZmFsc2UiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgIjAiKSA9PSAwKSB7CisgICAgICAgIHJlcGxhY2Vfb2xkID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzbm1wX2xvZyhMT0dfRVJSLCAiSW52YWxpZCB2YWx1ZSBvZiBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgcGFyYW1ldGVyOiAnJXMnXG4iLAorICAgICAgICAgICAgbGluZSk7Cit9CisKIC8qKgogICogaW5pdGlhbGl6YXRpb24gZm9yIGlmVGFibGUgZGF0YSBhY2Nlc3MKICAqCkBAIC03MCw2ICsxMTQsMTAgQEAKICAgICAvKgogICAgICAqIFRPRE86MzAzOm86IEluaXRpYWxpemUgaWZUYWJsZSBkYXRhLgogICAgICAqLworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJpbnRlcmZhY2VfZmFkZW91dCIsIHBhcnNlX2ludGVyZmFjZV9mYWRlb3V0LCBOVUxMLAorICAgICAgICAgICAgImludGVyZmFjZV9mYWRlb3V0IHNlY29uZHMiKTsKKyAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIiwKKyAgICAgICAgICAgIHBhcnNlX2ludGVyZmFjZV9yZXBsYWNlX29sZCwgTlVMTCwgImludGVyZmFjZV9yZXBsYWNlX29sZCB5ZXN8bm8iKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaWZUYWJsZV9pbml0X2RhdGEgKi8KQEAgLTE1MiwxNiArMjAwLDExNSBAQAogICAgICAgICAgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRCB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmVGFibGVfY29udGFpbmVyX2luaXQgKi8KIAordm9pZAorc2VuZF9saW5rVXBEb3duTm90aWZpY2F0aW9ucyhvaWQgKm5vdGlmaWNhdGlvbl9vaWQsIHNpemVfdCBub3RpZmljYXRpb25fb2lkX2xlbiwgaW50IGlmX2luZGV4LCBpbnQgaWZfYWRtaW5fc3RhdHVzLCBpbnQgaWZfb3Blcl9zdGF0dXMpCit7CisgICAgLyoKKyAgICAgKiBJbiB0aGUgbm90aWZpY2F0aW9uLCB3ZSBoYXZlIHRvIGFzc2lnbiBvdXIgbm90aWZpY2F0aW9uIE9JRCB0bworICAgICAqIHRoZSBzbm1wVHJhcE9JRC4wIG9iamVjdC4gSGVyZSBpcyBpdCdzIGRlZmluaXRpb24uIAorICAgICAqLworICAgIG9pZCAgICAgICAgICAgICBvYmppZF9zbm1wdHJhcFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA0LCAxLCAwIH07CisgICAgc2l6ZV90ICAgICAgICAgIG9iamlkX3NubXB0cmFwX2xlbiA9IE9JRF9MRU5HVEgob2JqaWRfc25tcHRyYXApOworCisgICAgLyoKKyAgICAgKiBkZWZpbmUgdGhlIE9JRHMgZm9yIHRoZSB2YXJiaW5kcyB3ZSdyZSBnb2luZyB0byBpbmNsdWRlCisgICAgICogIHdpdGggdGhlIG5vdGlmaWNhdGlvbiAtCisgICAgICogSUYtTUlCOjppZkluZGV4LAorICAgICAqIElGLU1JQjo6aWZBZG1pblN0YXR1cywgYW5kCisgICAgICogSUYtTUlCOjppZk9wZXJTdGF0dXMKKyAgICAgKi8KKyAgICBvaWQgICAgICBpZl9pbmRleF9vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCAxLCAwIH07CisgICAgc2l6ZV90ICAgaWZfaW5kZXhfb2lkX2xlbiA9IE9JRF9MRU5HVEgoaWZfaW5kZXhfb2lkKTsKKyAgICBvaWQgICAgICBpZl9hZG1pbl9zdGF0dXNfb2lkW10gICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMiwgMiwgMSwgNywgMCB9OworICAgIHNpemVfdCAgIGlmX2FkbWluX3N0YXR1c19vaWRfbGVuID0gT0lEX0xFTkdUSChpZl9hZG1pbl9zdGF0dXNfb2lkKTsKKyAgICBvaWQgICAgICBpZl9vcGVyX3N0YXR1c19vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCA4LCAwIH07CisgICAgc2l6ZV90ICAgaWZfb3Blcl9zdGF0dXNfb2lkX2xlbiA9IE9JRF9MRU5HVEgoaWZfb3Blcl9zdGF0dXNfb2lkKTsKKworICAgIC8qCisgICAgICogaGVyZSBpcyB3aGVyZSB3ZSBzdG9yZSB0aGUgdmFyaWFibGVzIHRvIGJlIHNlbnQgaW4gdGhlIHRyYXAgCisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpub3RpZmljYXRpb25fdmFycyA9IE5VTEw7CisKKyAgICBERUJVR01TR1RMKCgicnN5czpsaW5rVXBEb3duTm90aWZpY2F0aW9ucyIsICJkZWZpbmluZyB0aGUgdHJhcFxuIikpOworCisgICAgLyoKKyAgICAgKiB1cGRhdGUgdGhlIGluc3RhbmNlIGZvciBlYWNoIHZhcmlhYmxlIHRvIGJlIHNlbnQgaW4gdGhlIHRyYXAKKyAgICAgKi8KKyAgICBpZl9pbmRleF9vaWRbMTBdID0gaWZfaW5kZXg7CisgICAgaWZfYWRtaW5fc3RhdHVzX29pZFsxMF0gPSBpZl9pbmRleDsKKyAgICBpZl9vcGVyX3N0YXR1c19vaWRbMTBdID0gaWZfaW5kZXg7CisKKyAgICAvKgorICAgICAqIGFkZCBpbiB0aGUgdHJhcCBkZWZpbml0aW9uIG9iamVjdCAKKyAgICAgKi8KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZub3RpZmljYXRpb25fdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgc25tcFRyYXBPSUQuMCB2YXJpYWJsZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqaWRfc25tcHRyYXAsIG9iamlkX3NubXB0cmFwX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB2YWx1ZSB0eXBlIGlzIGFuIE9JRCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX09CSkVDVF9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB2YWx1ZSBjb250ZW50cyBpcyBvdXIgbm90aWZpY2F0aW9uIE9JRCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSBub3RpZmljYXRpb25fb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpemUgaW4gYnl0ZXMgPSBvaWQgbGVuZ3RoICogc2l6ZW9mKG9pZCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbl9vaWRfbGVuICogc2l6ZW9mKG9pZCkpOworCisgICAgLyoKKyAgICAgKiBhZGQgaW4gdGhlIGFkZGl0aW9uYWwgb2JqZWN0cyBkZWZpbmVkIGFzIHBhcnQgb2YgdGhlIHRyYXAKKyAgICAgKi8KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZub3RpZmljYXRpb25fdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9pbmRleF9vaWQsIGlmX2luZGV4X29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmlmX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpZl9pbmRleCkpOworCisgICAgLyoKKyAgICAgKiBpZiB3ZSB3YW50IHRvIGluc2VydCBhZGRpdGlvbmFsIG9iamVjdHMsIHdlIGRvIGl0IGhlcmUgCisgICAgICovCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmbm90aWZpY2F0aW9uX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfYWRtaW5fc3RhdHVzX29pZCwgaWZfYWRtaW5fc3RhdHVzX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmlmX2FkbWluX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoaWZfYWRtaW5fc3RhdHVzKSk7CisKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZub3RpZmljYXRpb25fdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9vcGVyX3N0YXR1c19vaWQsIGlmX29wZXJfc3RhdHVzX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmlmX29wZXJfc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpZl9vcGVyX3N0YXR1cykpOworCisgICAgLyoKKyAgICAgKiBzZW5kIHRoZSB0cmFwIG91dC4gIFRoaXMgd2lsbCBzZW5kIGl0IHRvIGFsbCByZWdpc3RlcmVkCisgICAgICogcmVjZWl2ZXJzIChzZWUgdGhlICJTRVRUSU5HIFVQIFRSQVAgQU5EL09SIElORk9STSBERVNUSU5BVElPTlMiCisgICAgICogc2VjdGlvbiBvZiB0aGUgc25tcGQuY29uZiBtYW51YWwgcGFnZS4gCisgICAgICovCisgICAgREVCVUdNU0dUTCgoInJzeXM6bGlua1VwRG93bk5vdGlmaWNhdGlvbnMiLCAic2VuZGluZyB0aGUgdHJhcFxuIikpOworICAgIHNlbmRfdjJ0cmFwKG5vdGlmaWNhdGlvbl92YXJzKTsKKworICAgIC8qCisgICAgICogZnJlZSB0aGUgY3JlYXRlZCBub3RpZmljYXRpb24gdmFyaWFibGUgbGlzdCAKKyAgICAgKi8KKyAgICBERUJVR01TR1RMKCgicnN5czpsaW5rVXBEb3duTm90aWZpY2F0aW9ucyIsICJjbGVhbmluZyB1cFxuIikpOworICAgIHNubXBfZnJlZV92YXJiaW5kKG5vdGlmaWNhdGlvbl92YXJzKTsKK30KKwogLyoqCiAgKiBjaGVjayBlbnRyeSBmb3IgdXBkYXRlCiAgKgogICovCiBzdGF0aWMgdm9pZAogX2NoZWNrX2ludGVyZmFjZV9lbnRyeV9mb3JfdXBkYXRlcyhpZlRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqaWZjb250YWluZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNkX2NvbnRhaW5lciAqY2RjKQogewogICAgIGNoYXIgICAgICAgICAgICBvcGVyX2NoYW5nZWQgPSAwOwotICAgIHVfbG9uZyBsYXN0Y2hhbmdlID0gcm93cmVxX2N0eC0+ZGF0YS5pZkxhc3RDaGFuZ2U7CisgICAgaW50IGxhc3RjaGFuZ2VkID0gcm93cmVxX2N0eC0+ZGF0YS5pZkxhc3RDaGFuZ2U7CisgICAgbmV0c25tcF9jb250YWluZXIgKmlmY29udGFpbmVyID0gY2RjLT5jdXJyZW50OwogCiAgICAgLyoKICAgICAgKiBjaGVjayBmb3IgbWF0Y2hpbmcgZW50cnkuIFdlIGNhbiBkbyB0aGlzIGRpcmVjdGx5LCBzaW5jZQpAQCAtMTkzLDE2ICszNDAsMzIgQEAKICAgICAgICAgICogZGVsZXRlZCAoYW5kIHRodXMgbmVlZCB0byB1cGRhdGUgaWZUYWJsZUxhc3RDaGFuZ2VkKT8KICAgICAgICAgICovCiAgICAgICAgIGlmICghcm93cmVxX2N0eC0+a25vd25fbWlzc2luZykgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImlmVGFibGU6YWNjZXNzIiwgInVwZGF0aW5nIG1pc3NpbmcgZW50cnlcbiIpKTsKICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmtub3duX21pc3NpbmcgPSAxOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImlmVGFibGU6YWNjZXNzIiwgInVwZGF0aW5nIG1pc3NpbmcgZW50cnkgJXNcbiIscm93cmVxX2N0eC0+ZGF0YS5pZk5hbWUpKTsKICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZBZG1pblN0YXR1cyA9IElGQURNSU5TVEFUVVNfRE9XTjsKLSAgICAgICAgICAgIGlmICgoIShyb3dyZXFfY3R4LT5kYXRhLmlmZW50cnktPm5zX2ZsYWdzICYgTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX0xBU1RDSEFOR0UpKQotICAgICAgICAgICAgICAgICYmIChyb3dyZXFfY3R4LT5kYXRhLmlmT3BlclN0YXR1cyAhPSBJRk9QRVJTVEFUVVNfRE9XTikpCi0gICAgICAgICAgICAgICAgb3Blcl9jaGFuZ2VkID0gMTsKICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzID0gSUZPUEVSU1RBVFVTX0RPV047CisgICAgICAgICAgICBvcGVyX2NoYW5nZWQgPSAxOworICAgICAgICB9CisgICAgICAgIGlmIChyb3dyZXFfY3R4LT5rbm93bl9taXNzaW5nKSB7CisgICAgICAgICAgICB0aW1lX3Qgbm93ID0gbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCk7CisgICAgICAgICAgICB1X2xvbmcgZGlmZiA9IChub3cgLSByb3dyZXFfY3R4LT5kYXRhLmlmTGFzdENoYW5nZSkgLyAxMDA7CisgICAgICAgICAgICBERUJVR01TR1RMKCgidmVyYm9zZTppZlRhYmxlOmFjY2VzcyIsICJtaXNzaW5nIGVudHJ5IGZvciAlbGQgc2Vjb25kc1xuIiwgZGlmZikpOworICAgICAgICAgICAgaWYgKGRpZmYgPj0gZmFkZW91dCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpZlRhYmxlOmFjY2VzcyIsICJtYXJraW5nIG1pc3NpbmcgZW50cnkgJXMgZm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVtb3ZhbCBhZnRlciAlZCBzZWNvbmRzXG4iLCByb3dyZXFfY3R4LT5kYXRhLmlmTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWRlb3V0KSk7CisgICAgICAgICAgICAgICAgaWYgKE5VTEwgPT0gY2RjLT5kZWxldGVkKQorICAgICAgICAgICAgICAgICAgIGNkYy0+ZGVsZXRlZCA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImlmVGFibGVfZGVsZXRlZDpsaW5rZWRfbGlzdCIpOworICAgICAgICAgICAgICAgIGlmIChOVUxMID09IGNkYy0+ZGVsZXRlZCkKKyAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3QgY3JlYXRlIGNvbnRhaW5lciBmb3IgZGVsZXRlZCBpbnRlcmZhY2VcbiIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY2RjLT5kZWxldGVkLCByb3dyZXFfY3R4KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBERUJVR01TR1RMKCgiaWZUYWJsZTphY2Nlc3MiLCAidXBkYXRpbmcgZXhpc3RpbmcgZW50cnlcbiIpKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImlmVGFibGU6YWNjZXNzIiwgInVwZGF0aW5nIGV4aXN0aW5nIGVudHJ5ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmTmFtZSkpOwogCiAjaWZkZWYgVVNJTkdfSUZfTUlCX0lGWFRBQkxFX0lGWFRBQkxFX01PRFVMRQogICAgICAgICB7CkBAIC0yNTMsMTAgKzQxNiw2MyBAQAogICAgIC8qCiAgICAgICogaWYgaWZPcGVyU3RhdHVzIGNoYW5nZWQsIHVwZGF0ZSBpZkxhc3RDaGFuZ2UKICAgICAgKi8KLSAgICBpZiAob3Blcl9jaGFuZ2VkKQorICAgIGlmIChvcGVyX2NoYW5nZWQpIHsKICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5pZkxhc3RDaGFuZ2UgPSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKKyNpZmRlZiBVU0lOR19JRl9NSUJfSUZYVEFCTEVfSUZYVEFCTEVfTU9EVUxFCisgICAgICAgIGlmIChyb3dyZXFfY3R4LT5kYXRhLmlmTGlua1VwRG93blRyYXBFbmFibGUgPT0gMSkgeworICAgICAgICAgICAgaWYgKHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzID09IElGT1BFUlNUQVRVU19VUCkgeworICAgICAgICAgICAgICAgIG9pZCBub3RpZmljYXRpb25fb2lkW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEsIDEsIDUsIDQgfTsKKyAgICAgICAgICAgICAgICBzZW5kX2xpbmtVcERvd25Ob3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbl9vaWQsIE9JRF9MRU5HVEgobm90aWZpY2F0aW9uX29pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT50YmxfaWR4LmlmSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmQWRtaW5TdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmT3BlclN0YXR1cyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzID09IElGT1BFUlNUQVRVU19ET1dOKSB7CisgICAgICAgICAgICAgICAgb2lkIG5vdGlmaWNhdGlvbl9vaWRbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMSwgMSwgNSwgMyB9OworICAgICAgICAgICAgICAgIHNlbmRfbGlua1VwRG93bk5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uX29pZCwgT0lEX0xFTkdUSChub3RpZmljYXRpb25fb2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPnRibF9pZHguaWZJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZBZG1pblN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCiAgICAgZWxzZQotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmTGFzdENoYW5nZSA9IGxhc3RjaGFuZ2U7CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZMYXN0Q2hhbmdlID0gbGFzdGNoYW5nZWQ7Cit9CisKKy8qKgorICogUmVtb3ZlIGFsbCBvbGQgaW50ZXJmYWNlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIG5ld2x5IGFkZGVkIG9uZS4KKyAqLworc3RhdGljIHZvaWQKK19jaGVja19hbmRfcmVwbGFjZV9vbGQobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKmlmZW50cnksCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKK3sKKyAgICBuZXRzbm1wX2l0ZXJhdG9yICppdDsKKyAgICBpZlRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4OworICAgIG5ldHNubXBfY29udGFpbmVyICp0b19kZWxldGU7CisKKyAgICB0b19kZWxldGUgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJpZlRhYmxlX2RlbGV0ZWQ6bGlua2VkX2xpc3QiKTsKKyAgICBpZiAoTlVMTCA9PSB0b19kZWxldGUpIHsKKyAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3QgY3JlYXRlIGNvbnRhaW5lciBmb3IgZGVsZXRlZCBpbnRlcmZhY2VcbiIpOworICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUihjb250YWluZXIpOworICAgIGZvciAocm93cmVxX2N0eCA9IElURVJBVE9SX0ZJUlNUKGl0KTsgcm93cmVxX2N0eDsgcm93cmVxX2N0eCA9IElURVJBVE9SX05FWFQoaXQpKSB7CisgICAgICAgIGlmIChzdHJjbXAoaWZlbnRyeS0+bmFtZSwgcm93cmVxX2N0eC0+ZGF0YS5pZmVudHJ5LT5uYW1lKSA9PSAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaWZUYWJsZTphY2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAicmVtb3ZpbmcgaW50ZXJmYWNlICVsZCBkdWUgdG8gbmV3ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAobG9uZykgcm93cmVxX2N0eC0+ZGF0YS5pZmVudHJ5LT5pbmRleCwgaWZlbnRyeS0+bmFtZSkpOworICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVCh0b19kZWxldGUsIHJvd3JlcV9jdHgpOworICAgICAgICB9CisgICAgfQorICAgIElURVJBVE9SX1JFTEVBU0UoaXQpOworCisgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKHRvX2RlbGV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9kZWxldGVfbWlzc2luZ19pbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisgICAgQ09OVEFJTkVSX0ZSRUUodG9fZGVsZXRlKTsKIH0KIAogLyoqCkBAIC0yNzcsNiArNDkzLDkgQEAKICAgICByb3dyZXFfY3R4ID0gaWZUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KGlmZW50cnkpOwogICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KSAmJgogICAgICAgICAoTUZEX1NVQ0NFU1MgPT0gaWZUYWJsZV9pbmRleGVzX3NldChyb3dyZXFfY3R4LCBpZmVudHJ5LT5pbmRleCkpKSB7CisgICAgICAgIGlmIChyZXBsYWNlX29sZCkKKyAgICAgICAgICAgICAgICBfY2hlY2tfYW5kX3JlcGxhY2Vfb2xkKGlmZW50cnksIGNvbnRhaW5lcik7CisKICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOwogICAgICAgICAvKgogICAgICAgICAgKiBmaXggdGhpcyB3aGVuIHdlIGhpdCBhbiBhcmNoIHRoYXQgcmVwb3J0cyBpdHMgb3duIGxhc3QgY2hhbmdlCkBAIC0zMTMsNiArNTMyLDIxIEBACiB9CiAKIC8qKgorICogYWRkIG5ldyBlbnRyeQorICovCitzdGF0aWMgdm9pZAorX2RlbGV0ZV9taXNzaW5nX2ludGVyZmFjZShpZlRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoImlmVGFibGU6YWNjZXNzIiwgInJlbW92aW5nIG1pc3NpbmcgZW50cnkgJXNcbiIsCisgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5pZk5hbWUpKTsKKworICAgIENPTlRBSU5FUl9SRU1PVkUoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKworICAgIGlmVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworfQorCisvKioKICAqIGNvbnRhaW5lciBzaHV0ZG93bgogICoKICAqIEBwYXJhbSBjb250YWluZXJfcHRyIEEgcG9pbnRlciB0byB0aGUgY29udGFpbmVyLgpAQCAtMzc2LDcgKzYxMCw3IEBACiBpbnQKIGlmVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKIHsKLSAgICBuZXRzbm1wX2NvbnRhaW5lciAqaWZjb250YWluZXI7CisgICAgY2RfY29udGFpbmVyIGNkYzsKIAogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlmVGFibGU6aWZUYWJsZV9jb250YWluZXJfbG9hZCIsICJjYWxsZWRcbiIpKTsKIApAQCAtMzg5LDIzICs2MjMsMzUgQEAKICAgICAvKgogICAgICAqIGlmVGFibGUgZ2V0cyBpdHMgZGF0YSBmcm9tIHRoZSBuZXRzbm1wX2ludGVyZmFjZSBBUEkuCiAgICAgICovCi0gICAgaWZjb250YWluZXIgPQorICAgIGNkYy5jdXJyZW50ID0KICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2NvbnRhaW5lcl9sb2FkKE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19JTlRFUkZBQ0VfSU5JVF9OT0ZMQUdTKTsKLSAgICBpZiAoTlVMTCA9PSBpZmNvbnRhaW5lcikKKyAgICBpZiAoTlVMTCA9PSBjZGMuY3VycmVudCkKICAgICAgICAgcmV0dXJuIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRTsgICAgICAgIC8qIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLwogCisgICAgY2RjLmRlbGV0ZWQgPSBOVUxMOyAvKiBjcmVhdGVkIGFzIG5lZWRlZCAqLworCiAgICAgLyoKICAgICAgKiB3ZSBqdXN0IGdvdCBhIGZyZXNoIGNvcHkgb2YgaW50ZXJmYWNlIGRhdGEuIGNvbXBhcmUgaXQgdG8KICAgICAgKiB3aGF0IHdlJ3ZlIGFscmVhZHkgZ290LCBhbmQgbWFrZSBhbnkgYWRqdXN0ZW1lbnRzLi4uCiAgICAgICovCiAgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGNvbnRhaW5lciwgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopCi0gICAgICAgICAgICAgICAgICAgICAgIF9jaGVja19pbnRlcmZhY2VfZW50cnlfZm9yX3VwZGF0ZXMsIGlmY29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgX2NoZWNrX2ludGVyZmFjZV9lbnRyeV9mb3JfdXBkYXRlcywgJmNkYyk7CisKKyAgICAvKgorICAgICAqIG5vdyByZW1vdmUgYW55IG1pc3NpbmcgaW50ZXJmYWNlcworICAgICAqLworICAgIGlmIChOVUxMICE9IGNkYy5kZWxldGVkKSB7CisgICAgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGNkYy5kZWxldGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2RlbGV0ZV9taXNzaW5nX2ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICAgICBDT05UQUlORVJfRlJFRShjZGMuZGVsZXRlZCk7CisgICAgfQogCiAgICAgLyoKICAgICAgKiBub3cgYWRkIGFueSBuZXcgaW50ZXJmYWNlcwogICAgICAqLwotICAgIENPTlRBSU5FUl9GT1JfRUFDSChpZmNvbnRhaW5lciwKKyAgICBDT05UQUlORVJfRk9SX0VBQ0goY2RjLmN1cnJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfYWRkX25ld19pbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CiAKQEAgLTQxMywxMSArNjU5LDExIEBACiAgICAgICogZnJlZSB0aGUgY29udGFpbmVyLiB3ZSd2ZSBlaXRoZXIgY2xhaW1lZCBlYWNoIGlmZW50cnksIG9yIHJlbGVhc2VkIGl0LAogICAgICAqIHNvIHRoZSBkYWwgZnVuY3Rpb24gZG9lc24ndCBuZWVkIHRvIGNsZWFyIHRoZSBjb250YWluZXIuCiAgICAgICovCi0gICAgbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2NvbnRhaW5lcl9mcmVlKGlmY29udGFpbmVyLAorICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9jb250YWluZXJfZnJlZShjZGMuY3VycmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfSU5URVJGQUNFX0ZSRUVfRE9OVF9DTEVBUik7CiAKICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmlmVGFibGU6aWZUYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJWx1IHJlY29yZHNcbiIsICh1bnNpZ25lZCBsb25nKUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIGlmIChfZmlyc3RfbG9hZCkKICAgICAgICAgX2ZpcnN0X2xvYWQgPSAwOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5oIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5oCmluZGV4IDlhYWE0MmUuLjE0ZTM1Y2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuaAorKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmgKQEAgLTQ4LDYgKzQ4LDggQEAKICAgICAgKi8KICNkZWZpbmUgSUZUQUJMRV9DQUNIRV9USU1FT1VUICAgMTUKIAorI2RlZmluZSBJRlRBQkxFX1JFTU9WRV9NSVNTSU5HX0FGVEVSICAgICAoNSAqIDYwKSAvKiBzZWNvbmRzICovCisKICAgICB2b2lkICAgICAgICAgICAgaWZUYWJsZV9jb250YWluZXJfaW5pdChuZXRzbm1wX2NvbnRhaW5lcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqY29udGFpbmVyX3B0cl9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWNoZSAqIGNhY2hlKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jCmluZGV4IDI1NzQ5ZTMuLmUzNjJmZGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzcyLDcgKzM3Miw3IEBACiAgICAgICogcmVnaXN0ZXIgaWZUYWJsZUxhc3RDaGFuZ2VkCiAgICAgICovCiAgICAgewotICAgICAgICBvaWQgICAgICAgICAgICAgaWZ0bGNfb2lkW10gPSB7IElGVEFCTEVfTEFTVF9DSEFOR0UgfTsKKyAgICAgICAgY29uc3Qgb2lkICAgICAgIGlmdGxjX29pZFtdID0geyBJRlRBQkxFX0xBU1RfQ0hBTkdFIH07CiAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlmVGFibGVMYXN0Q2hhbmdlZCIsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmdGxjX29pZCwgT0lEX0xFTkdUSChpZnRsY19vaWQpLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYwppbmRleCA4YjliN2NlLi4xYTI0Mjc1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYwpAQCAtMzgsOSArMzgsOCBAQAogICovCiAjdW5kZWYgTkVUU05NUF9FTkFCTEVfUFJPTUlTQ1VPVVNNT0RFX1NFVAogCi1vaWQgICAgICAgICAgICAgaWZYVGFibGVfb2lkW10gPSB7IElGWFRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGlmWFRhYmxlX29pZF9zaXplID0gT0lEX0xFTkdUSChpZlhUYWJsZV9vaWQpOwotY29uc3QgY2hhciAgICAgKnJvd190b2tlbiA9ICJpZlhUYWJsZSI7Citjb25zdCBvaWQgICAgICAgaWZYVGFibGVfb2lkW10gPSB7IElGWFRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIGlmWFRhYmxlX29pZF9zaXplID0gT0lEX0xFTkdUSChpZlhUYWJsZV9vaWQpOwogCiBpZlhUYWJsZV9yZWdpc3RyYXRpb24gaWZYVGFibGVfdXNlcl9jb250ZXh0Owogc3RhdGljIGlmWFRhYmxlX3JlZ2lzdHJhdGlvbiAqaWZYVGFibGVfdXNlcl9jb250ZXh0X3A7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCmluZGV4IGUzMmFjYzguLmY5YjI1ZDQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCkBAIC05NCw4ICs5NCw4IEBACiAgICAgaWZYVGFibGVfcm93cmVxX2N0eCAqaWZYVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGlmWFRhYmxlX21pYl9pbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIGlmWFRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBpZlhUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaWZYVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIGlmWFRhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJpZlhUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBkOWIxODQ3Li45ZjA2NGNmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jCkBAIC0xNzg0LDcgKzE3ODQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwgdV9pbnQgY29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmKTsKIAotc3RhdGljIGNoYXIgICAgIHJvd190b2tlbltdID0gImlmWFRhYmxlIjsKK3N0YXRpYyBjb25zdCBjaGFyIHJvd190b2tlbltdID0gImlmWFRhYmxlIjsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogKl9pbml0X3BlcnNpc3RlbmNlIHNob3VsZCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0YWJsZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlLmgKaW5kZXggZGFjNzBjZS4uYTJiNGVlNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oCkBAIC0yMyw3ICsyMyw3IEBACiBjb25maWdfcmVxdWlyZShpcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eCkKIGNvbmZpZ19yZXF1aXJlKGlwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsKQogI2Vsc2UKLSNlcnJvciAidGhlIHJvdXRlIGRhdGEgYWNjZXNzIGxpYnJhcnkgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybS4iCitjb25maWdfZXJyb3IodGhlIHJvdXRlIGRhdGEgYWNjZXNzIGxpYnJhcnkgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LikKICNlbmRpZgogCiAvKiogbmVlZCBpbnRlcmZhY2UgZm9yIGlmSW5kZXggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKaW5kZXggOTliM2RlNC4uOTc0ZGU1NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKQEAgLTQ3LDEyICs0NywxMSBAQAogCiAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLCAibG9hZFxuIikpOwogCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKQorICAgICAgICBjb250YWluZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJhY2Nlc3M6X3JvdXRlOnRhYmxlX2NvbnRhaW5lciIpOwogICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgewotICAgICAgICBjb250YWluZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJhY2Nlc3M6X3JvdXRlOmZpZm8iKTsKLSAgICAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX3JvdXRlXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBhY2Nlc3Nfcm91dGVcbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICByYyA9ICBuZXRzbm1wX2FjY2Vzc19yb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkKGNvbnRhaW5lciwgbG9hZF9mbGFncyk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9pb2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuYwppbmRleCBkZTQyOTIwLi5jMjBlMGFmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9pb2N0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsLmMKQEAgLTY5LDEwICs2OSwxMCBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9EU1QKICMgICBkZWZpbmUgcnRfZHN0IHJ0X25vZGVzLT5ybl9rZXkKICNlbmRpZgotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfSEFTSAorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0hBU0gKICMgICBkZWZpbmUgcnRfaGFzaCBydF9wYWQxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmMKaW5kZXggNmJmNmIwNC4uYzVkNzYzMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jCkBAIC0yMDEsNyArMjAxLDYgQEAKICAgICBGSUxFICAgICAgICAgICAqaW47CiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbMjU2XTsKICAgICBuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSA9IE5VTEw7Ci0gICAgc3RhdGljIGludCAgICAgIGxvZ19vcGVuX2VyciA9IDE7CiAKICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgInJvdXRlX2NvbnRhaW5lcl9hcmNoX2xvYWQgaXB2NlxuIikpOwpAQCAtMjEyLDE4ICsyMTEsMTAgQEAKICAgICAgKiBmZXRjaCByb3V0ZXMgZnJvbSB0aGUgcHJvYyBmaWxlLXN5c3RlbToKICAgICAgKi8KICAgICBpZiAoIShpbiA9IGZvcGVuKCIvcHJvYy9uZXQvaXB2Nl9yb3V0ZSIsICJyIikpKSB7Ci0gICAgICAgIGlmICgxID09IGxvZ19vcGVuX2VycikgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNhbm5vdCBvcGVuIC9wcm9jL25ldC9pcHY2X3JvdXRlXG4iKTsKLSAgICAgICAgICAgIGxvZ19vcGVuX2VyciA9IDA7Ci0gICAgICAgIH0KKyAgICAgICAgREVCVUdNU0dUTCgoIjk6YWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsICJjYW5ub3Qgb3BlbiAvcHJvYy9uZXQvaXB2Nl9yb3V0ZVxuIikpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQotICAgIC8qCi0gICAgICogaWYgd2UgdHVybmVkIG9mZiBsb2dnaW5nIG9mIG9wZW4gZXJyb3JzLCB0dXJuIGl0IGJhY2sgb24gbm93IHRoYXQKLSAgICAgKiB3ZSBoYXZlIGJlZW4gYWJsZSB0byBvcGVuIHRoZSBmaWxlLgotICAgICAqLwotICAgIGlmICgwID09IGxvZ19vcGVuX2VycikKLSAgICAgICAgbG9nX29wZW5fZXJyID0gMTsKKyAgICAKICAgICBmZ2V0cyhsaW5lLHNpemVvZihsaW5lKSxpbik7IC8qIHNraXAgaGVhZGVyICovCiAgICAgd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pKSB7CiAgICAgICAgIGNoYXIgICAgICAgICAgICBjX25hbWVbSUZOQU1TSVorMV07CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMKaW5kZXggNDFiNWM5NS4uYjQ2MDgwYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAiaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZFtdID0geyBJTkVUQ0lEUlJPVVRFVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZF9zaXplID0KK2NvbnN0IG9pZCAgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkW10gPSB7IElORVRDSURSUk9VVEVUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkX3NpemUgPQogT0lEX0xFTkdUSChpbmV0Q2lkclJvdXRlVGFibGVfb2lkKTsKIAogaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbiBpbmV0Q2lkclJvdXRlVGFibGVfdXNlcl9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oCmluZGV4IDhkOTA0ODUuLmI4MTMyZTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmgKQEAgLTIxNyw4ICsyMTcsOCBAQAogICAgICAgICAqIGluZXRDaWRyUm91dGVUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKGluZXRDaWRyUm91dGVUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIGluZXRDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgImluZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCA5NDYyYmU3Li5iZWViYjJjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0yNjMsNyArMjYzLDcgQEAKICAgICAgICAgbmV0c25tcF9hY2Nlc3Nfcm91dGVfY29udGFpbmVyX2xvYWQoTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfUk9VVEVfTE9BRF9OT0ZMQUdTKTsKICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmluZXRDaWRyUm91dGVUYWJsZTppbmV0Q2lkclJvdXRlVGFibGVfY2FjaGVfbG9hZCIsCi0gICAgICAgICAgICAgICAiJWQgcmVjb3Jkc1xuIiwgQ09OVEFJTkVSX1NJWkUocm91dGVfY29udGFpbmVyKSkpOworICAgICAgICAgICAgICAgIiVkIHJlY29yZHNcbiIsIChpbnQpQ09OVEFJTkVSX1NJWkUocm91dGVfY29udGFpbmVyKSkpOwogCiAgICAgaWYgKE5VTEwgPT0gcm91dGVfY29udGFpbmVyKQogICAgICAgICByZXR1cm4gTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFOyAgICAgICAgLyogbXNnIGFscmVhZHkgbG9nZ2VkICovCkBAIC0yODMsNyArMjgzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19ST1VURV9GUkVFX0RPTlRfQ0xFQVIpOwogCiAgICAgREVCVUdNU0dUKCgidmVyYm9zZTppbmV0Q2lkclJvdXRlVGFibGU6aW5ldENpZHJSb3V0ZVRhYmxlX2NhY2hlX2xvYWQiLAotICAgICAgICAgICAgICAgIiVkIHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCAoaW50KUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9sb2FkICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBmNDg1MzYwLi5mZmVkYjA4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKQEAgLTE1Myw5ICsxNTMsNyBAQAogI2VuZGlmCiAKIE5FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKLSAgICAgICAgICAgICAgICBfaW5ldENpZHJSb3V0ZVRhYmxlX2NoZWNrX2luZGV4ZXMoaW5ldENpZHJSb3V0ZVRhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKLQorICAgICAgICAgICAgICAgIF9pbmV0Q2lkclJvdXRlVGFibGVfY2hlY2tfaW5kZXhlcyhpbmV0Q2lkclJvdXRlVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOwogLyoqCiAgKiBAaW50ZXJuYWwKICAqIEluaXRpYWxpemUgdGhlIHRhYmxlIGluZXRDaWRyUm91dGVUYWJsZSAKQEAgLTIzMDUsNyArMjMwMyw3IEBACiAgICAgLyoKICAgICAgKiBjYWNoZSBpbml0CiAgICAgICovCi0gICAgaWZfY3R4LT5jYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKElORVRDSURSUk9VVEVUQUJMRV9DQUNIRV9USU1FT1VULAorICAgIGlmX2N0eC0+Y2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAgLyogdGltZW91dCBpbiBzZWNvbmRzICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZV9sb2FkLCBfY2FjaGVfZnJlZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZF9zaXplKTsKQEAgLTIzMTgsMjAgKzIzMTYsMTUgQEAKICAgICBpZl9jdHgtPmNhY2hlLT5mbGFncyA9IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVDsKIAogICAgIGluZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfaW5pdCgmaWZfY3R4LT5jb250YWluZXIsIGlmX2N0eC0+Y2FjaGUpOwotICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKSB7CisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpCiAgICAgICAgIGlmX2N0eC0+Y29udGFpbmVyID0KICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImluZXRDaWRyUm91dGVUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKLSAgICAgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjb250YWluZXIgaW4gIgotICAgICAgICAgICAgICAgICAgICAgImluZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfaW5pdFxuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY29udGFpbmVyIGluICIKKyAgICAgICAgICAgICAgICAgImluZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvKiBzZXQgYWxsb3cgZHVwbGljYXRlcyB0aGlzIG1ha2VzIGluc2VydCBPKDEpICovCi0gICAgbmV0c25tcF9iaW5hcnlfYXJyYXlfb3B0aW9uc19zZXQoaWZfY3R4LT5jb250YWluZXIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEFJTkVSX0tFWV9BTExPV19EVVBMSUNBVEVTKTsKLQogICAgIGlmIChOVUxMICE9IGlmX2N0eC0+Y2FjaGUpCiAgICAgICAgIGlmX2N0eC0+Y2FjaGUtPm1hZ2ljID0gKHZvaWQgKikgaWZfY3R4LT5jb250YWluZXI7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pbmV0Q2lkclJvdXRlVGFibGVfY29udGFpbmVyX2luaXQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmMKaW5kZXggNzVmZGU4OC4uYWU3YjcxZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgImlwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmgiCiAKLW9pZCAgICAgICAgICAgICBpcENpZHJSb3V0ZVRhYmxlX29pZFtdID0geyBJUENJRFJST1VURVRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGlwQ2lkclJvdXRlVGFibGVfb2lkX3NpemUgPQorY29uc3Qgb2lkICAgICAgIGlwQ2lkclJvdXRlVGFibGVfb2lkW10gPSB7IElQQ0lEUlJPVVRFVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZSA9CiBPSURfTEVOR1RIKGlwQ2lkclJvdXRlVGFibGVfb2lkKTsKIAogaXBDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb24gaXBDaWRyUm91dGVUYWJsZV91c2VyX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCmluZGV4IDQ5Njk0ODAuLjJjZTMwYmUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCkBAIC0xOTQsOCArMTk0LDggQEAKICAgICAgICAgKiBpcENpZHJSb3V0ZVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcENpZHJSb3V0ZVRhYmxlX21pYl9pbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAiaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggYzI3ZDBhYS4uYmIyNzY3NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTI3MCw3ICsyNzAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1JPVVRFX0ZSRUVfRE9OVF9DTEVBUik7CiAKICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmlwQ2lkclJvdXRlVGFibGU6aXBDaWRyUm91dGVUYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJWQgcmVjb3Jkc1xuIiwgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX2xvYWQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBkMDUxYzI1Li4zN2M0YTAxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCkBAIC0yMjU0LDcgKzIyNTQsNyBAQAogICAgIC8qCiAgICAgICogY2FjaGUgaW5pdAogICAgICAqLwotICAgIGlmX2N0eC0+Y2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZShJUENJRFJST1VURVRBQkxFX0NBQ0hFX1RJTUVPVVQsCisgICAgaWZfY3R4LT5jYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKDMwLCAgICAvKiB0aW1lb3V0IGluIHNlY29uZHMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlX2xvYWQsIF9jYWNoZV9mcmVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcENpZHJSb3V0ZVRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZSk7CkBAIC0yMjY3LDIwICsyMjY3LDE1IEBACiAgICAgaWZfY3R4LT5jYWNoZS0+ZmxhZ3MgPSBORVRTTk1QX0NBQ0hFX0RPTlRfSU5WQUxJREFURV9PTl9TRVQ7CiAKICAgICBpcENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9pbml0KCZpZl9jdHgtPmNvbnRhaW5lciwgaWZfY3R4LT5jYWNoZSk7Ci0gICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikKICAgICAgICAgaWZfY3R4LT5jb250YWluZXIgPQogICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZmluZCgiaXBDaWRyUm91dGVUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKLSAgICAgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjb250YWluZXIgaW4gIgotICAgICAgICAgICAgICAgICAgICAgImlwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX2luaXRcbiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNvbnRhaW5lciBpbiAiCisgICAgICAgICAgICAgICAgICJpcENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8qIHNldCBhbGxvdyBkdXBsaWNhdGVzIHRoaXMgbWFrZXMgaW5zZXJ0IE8oMSkgKi8KLSAgICBuZXRzbm1wX2JpbmFyeV9hcnJheV9vcHRpb25zX3NldChpZl9jdHgtPmNvbnRhaW5lciwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05UQUlORVJfS0VZX0FMTE9XX0RVUExJQ0FURVMpOwotCiAgICAgaWYgKE5VTEwgIT0gaWZfY3R4LT5jYWNoZSkKICAgICAgICAgaWZfY3R4LT5jYWNoZS0+bWFnaWMgPSAodm9pZCAqKSBpZl9jdHgtPmNvbnRhaW5lcjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX2luaXQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliLmgKaW5kZXggYjQ1Y2JiNC4uODM3NTJlNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliLmgKQEAgLTYsNCArNiw4IEBACiBjb25maWdfcmVxdWlyZShpcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZSk7CiBjb25maWdfcmVxdWlyZShpcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlKTsKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcF9zY2FsYXJzKTsKKyNpZmRlZiBsaW51eAorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKTsKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcElmU3RhdHNUYWJsZSk7CisjZW5kaWYKIGNvbmZpZ19hZGRfbWliKElQLU1JQikKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaAppbmRleCA3MGE0NzNjLi5lOWMzNzFiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oCkBAIC0yMyw4ICsyMyw3IEBACiAjZWxzZQogLyoKICAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQotICogcmVxdWlyZSBhIGJvZ3VzIGZpbGUgdG8gZ2VuZXJhdGUgYW4gZXJyb3IuCiAgKi8KLWNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9hcnAtdW5rbm93bi1hcmNoKQorY29uZmlnX2Vycm9yKHRoZSBhcnAgZGF0YSBhY2Nlc3MgbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jCmluZGV4IGMwY2M2ODAuLmM3OTRjM2EgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYwpAQCAtMTQzLDMgKzE0Myw0MSBAQAogewogICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGVudHJ5KTsKIH0KKworLyoqCisgKiBVcGRhdGUgZ2l2ZW4gZW50cnkgd2l0aCBuZXcgZGF0YS4gQ2FsY3VsYXRlIG5ldyBhcnBfbGFzdF91cGRhdGVkLCBpZiBhbnkKKyAqIGZpZWxkIGlzIGNoYW5nZWQuCisgKi8KK3ZvaWQgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X3VwZGF0ZShuZXRzbm1wX2FycF9lbnRyeSAqZW50cnksCisgICAgICAgIG5ldHNubXBfYXJwX2VudHJ5ICpuZXdfZGF0YSkKK3sKKyAgICBpbnQgbW9kaWZpZWQgPSAwOworCisgICAgaWYgKGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiAhPSBuZXdfZGF0YS0+YXJwX2lwYWRkcmVzc19sZW4KKyAgICAgICAgICAgIHx8IG1lbWNtcChlbnRyeS0+YXJwX2lwYWRkcmVzcywgbmV3X2RhdGEtPmFycF9pcGFkZHJlc3MsIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbikgIT0gMCApIHsKKyAgICAgICAgbW9kaWZpZWQgPSAxOworICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSBuZXdfZGF0YS0+YXJwX2lwYWRkcmVzc19sZW47CisgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX2lwYWRkcmVzcywgbmV3X2RhdGEtPmFycF9pcGFkZHJlc3MsIHNpemVvZihlbnRyeS0+YXJwX2lwYWRkcmVzcykpOworICAgIH0KKyAgICBpZiAoZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4gIT0gbmV3X2RhdGEtPmFycF9waHlzYWRkcmVzc19sZW4gfHwKKyAgICAgICAgICAgIG1lbWNtcChlbnRyeS0+YXJwX3BoeXNhZGRyZXNzLCBuZXdfZGF0YS0+YXJwX3BoeXNhZGRyZXNzLCBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbikgIT0gMCkgeworICAgICAgICAgbW9kaWZpZWQgPSAxOworICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4gPSBuZXdfZGF0YS0+YXJwX3BoeXNhZGRyZXNzX2xlbjsKKyAgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX3BoeXNhZGRyZXNzLCBuZXdfZGF0YS0+YXJwX3BoeXNhZGRyZXNzLCBzaXplb2YoZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4pKTsKKyAgICAgfQorICAgIGlmIChlbnRyeS0+YXJwX3N0YXRlICE9IG5ld19kYXRhLT5hcnBfc3RhdGUpIHsKKyAgICAgICAgIG1vZGlmaWVkID0gMTsKKyAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBuZXdfZGF0YS0+YXJwX3N0YXRlOworICAgICB9CisgICAgaWYgKGVudHJ5LT5hcnBfdHlwZSAhPSBuZXdfZGF0YS0+YXJwX3R5cGUpIHsKKyAgICAgICAgIG1vZGlmaWVkID0gMTsKKyAgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IG5ld19kYXRhLT5hcnBfdHlwZTsKKyAgICAgfQorICAgIGlmIChlbnRyeS0+ZmxhZ3MgIT0gbmV3X2RhdGEtPmZsYWdzKSB7CisgICAgICAgICBtb2RpZmllZCA9IDE7CisgICAgICAgICBlbnRyeS0+ZmxhZ3MgPSBuZXdfZGF0YS0+ZmxhZ3M7CisgICAgIH0KKworICAgIGlmIChtb2RpZmllZCkKKyAgICAgICAgZW50cnktPmFycF9sYXN0X3VwZGF0ZWQgPSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYwppbmRleCA3NWQ5NGMwLi4yMDY5ZWYxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jCkBAIC0xLDcgKzEsNSBAQAogLyoKICAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0Ci0gKgotICogJElkJAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KQEAgLTE0LDkgKzEyLDMyIEBACiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPG5ldC9pZl9hcnAuaD4KICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyNpZmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICisjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisjZGVmaW5lIE5JUDYoYWRkcikgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzBdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzFdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzJdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzNdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzRdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzVdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzZdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzddKQorI2RlZmluZSBOSVA2X0ZNVCAiJTA0eDolMDR4OiUwNHg6JTA0eDolMDR4OiUwNHg6JTA0eDolMDR4IgorI2VuZGlmCisjZW5kaWYKIAogaW50IF9sb2FkX3Y0KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KTsKLQorc3RhdGljIGludCBfbG9hZF92NihuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBpbnQgaWR4X29mZnNldCk7CisjaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAoraW50IGdldF90cmFuc2xhdGlvbl90YWJsZV9pbmZvIChpbnQgc2QsIGludCAqc3RhdHVzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmZiwgc2l6ZV90IHNpemUpOworaW50IGZpbGx1cF9lbnRyeV9pbmZvKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgKm5sbXApOworI2VuZGlmCiAvKioKICAqLwogaW50CkBAIC0yOCwxMSArNDksMTAgQEAKICAgICBpZihyYyA8IDApIHsKICAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9LRUVQX0NPTlRBSU5FUjsKICAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOwotICAgICAgICByZXR1cm4gcmM7CiAgICAgfQogCi0jaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikgJiYgMCAvKiB4eC1ya3M6IGFycCBmb3IgdjY/ICovCi0gICAgaWR4X29mZnNldCA9IHJjOworI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCisgICAgaWR4X29mZnNldCA9IChyYyA8IDApID8gMCA6IHJjOwogCiAgICAgcmMgPSBfbG9hZF92Nihjb250YWluZXIsIGlkeF9vZmZzZXQpOwogICAgIGlmKHJjIDwgMCkgewpAQCAtNjcsNyArODcsNyBAQAogCiAjZGVmaW5lIFBST0NGSUxFICIvcHJvYy9uZXQvYXJwIgogICAgIGlmICghKGluID0gZm9wZW4oUFJPQ0ZJTEUsICJyIikpKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsImNvdWxkIG5vdCBvcGVuICIgUFJPQ0ZJTEUgIlxuIik7CisgICAgICAgIHNubXBfbG9nKExPR19ERUJVRywiY291bGQgbm90IG9wZW4gIiBQUk9DRklMRSAiXG4iKTsKICAgICAgICAgcmV0dXJuIC0yOwogICAgIH0KIApAQCAtMTkxLDMgKzIxMSwyMzUgQEAKIAogICAgIHJldHVybiBpZHhfb2Zmc2V0OwogfQorCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKK3N0YXRpYyBpbnQKK19sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KQoreworICAgIGNoYXIgICAgICAgICAgICAgIGJ1ZmZlclsxNjM4NF07CisjaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQorICAgIHN0cnVjdCBubG1zZ2hkciAgICpubG1wOworI2VuZGlmCisgICAgaW50ICAgICAgICAgICAgICAgc2QgPSAwOworICAgIGludCAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7CisgICAgaW50ICAgICAgICAgICAgICAgcmMgPSAwOworICAgIGludCAgICAgICAgICAgICAgIGxlbiwgcmVxX2xlbjsKKyAgICBuZXRzbm1wX2FycF9lbnRyeSAqZW50cnk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisjaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQorICAgIGlmKChzZCA9IHNvY2tldCAoUEZfTkVUTElOSywgU09DS19ER1JBTSwgTkVUTElOS19ST1VURSkpIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJVbmFibGUgdG8gY3JlYXRlIG5ldGxpbmsgc29ja2V0XG4iKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIGlmKGdldF90cmFuc2xhdGlvbl90YWJsZV9pbmZvIChzZCwgJnN0YXR1cywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkgPCAwKSB7CisgICAgICAgc25tcF9sb2coTE9HX0VSUiwiVW5hYmxlIHRvIGZldGNoIHRyYW5zbGF0aW9uIHRhYmxlIGluZm9cbiIpOworICAgICAgIGNsb3NlKHNkKTsKKyAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgZm9yIChubG1wID0gKHN0cnVjdCBubG1zZ2hkciAqKWJ1ZmZlcjsgc3RhdHVzID4gc2l6ZW9mKCpubG1wKTsgKSB7CisgICAgICAgICBsZW4gPSBubG1wLT5ubG1zZ19sZW47CisgICAgICAgICByZXFfbGVuID0gbGVuIC0gc2l6ZW9mKCpubG1wKTsKKyAgICAgICAgIGlmIChyZXFfbGVuIDwgMCB8fCBsZW4gPiBzdGF0dXMpIHsKKyAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJpbnZhbGlkIGxlbmd0aFxuIik7CisgICAgICAgICAgICAgcmV0dXJuIC0yOworICAgICAgICAgfQorICAgICAgICAgaWYgKCFOTE1TR19PSyAobmxtcCwgc3RhdHVzKSkgeworICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIk5MTVNHIG5vdCBPS1xuIik7CisgICAgICAgICAgICAgcmV0dXJuIC0yOworICAgICAgICAgfQorICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfY3JlYXRlKCk7CisgICAgICAgICBpZihOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICByYyA9IC0zOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CisgICAgICAgICBlbnRyeS0+bnNfYXJwX2luZGV4ID0gKytpZHhfb2Zmc2V0OworICAgICAgICAgaWYoZmlsbHVwX2VudHJ5X2luZm8gKGVudHJ5LCBubG1wKSA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6YXJwOmxvYWRfdjYiLCAic2tpcHBpbmcgbmV0bGluayBtZXNzYWdlIHRoYXQiCisgICAgICAgICAgICAgICAgICAgICAgICAiZGlkIG5vdCBjb250YWluIHZhbGlkIEFSUCBpbmZvcm1hdGlvblxuIikpOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgc3RhdHVzIC09IE5MTVNHX0FMSUdOKGxlbik7CisgICAgICAgICAgICBubG1wID0gKHN0cnVjdCBubG1zZ2hkciopKChjaGFyKilubG1wICsgTkxNU0dfQUxJR04obGVuKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisgICAgICAgICBzdGF0dXMgLT0gTkxNU0dfQUxJR04obGVuKTsKKyAgICAgICAgIG5sbXAgPSAoc3RydWN0IG5sbXNnaGRyKikoKGNoYXIqKW5sbXAgKyBOTE1TR19BTElHTihsZW4pKTsKKyAgICB9CisKKyAgICBjbG9zZShzZCk7CisjZW5kaWYKKyAgICBpZihyYzwwKSB7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICByZXR1cm4gaWR4X29mZnNldDsKK30KKyNpZiBkZWZpbmVkKEhBVkVfTElOVVhfUlRORVRMSU5LX0gpCitpbnQgCitnZXRfdHJhbnNsYXRpb25fdGFibGVfaW5mbyAoaW50IHNkLCBpbnQgKnN0YXR1cywgY2hhciAqYnVmZiwgc2l6ZV90IHNpemUpCit7CisgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgbjsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgbmRtc2cgcjsKKyAgICAgICAgICAgICAgICBjaGFyICAgYnVmWzEwMjRdOworICAgIH0gcmVxOworICAgIHN0cnVjdCBydGF0dHIgICAqcnRhOworCisgICAgbWVtc2V0KCZyZXEsIDAsIHNpemVvZihyZXEpKTsKKyAgICByZXEubi5ubG1zZ19sZW4gPSBOTE1TR19MRU5HVEggKHNpemVvZihzdHJ1Y3QgbmRtc2cpKTsKKyAgICByZXEubi5ubG1zZ19mbGFncyA9IE5MTV9GX1JFUVVFU1QgfCBOTE1fRl9ST09UOworICAgIHJlcS5uLm5sbXNnX3R5cGUgPSBSVE1fR0VUTkVJR0g7CisKKyAgICByZXEuci5uZG1fZmFtaWx5ID0gQUZfSU5FVDY7CisgICAgcnRhID0gKHN0cnVjdCBydGF0dHIgKikoKChjaGFyICopJnJlcSkgKyBOTE1TR19BTElHTihyZXEubi5ubG1zZ19sZW4pKTsKKyAgICBydGEtPnJ0YV9sZW4gPSBSVEFfTEVOR1RIKDE2KTsKKworICAgIGlmKHNlbmQoc2QsICZyZXEsIHJlcS5uLm5sbXNnX2xlbiwgMCkgPCAwKSB7CisgICAgICAgc25tcF9sb2coTE9HX0VSUiwiU2VuZGluZyByZXF1ZXN0IGZhaWxlZFxuIik7CisgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZigoKnN0YXR1cyA9IHJlY3Yoc2QsIGJ1ZmYsIHNpemUsIDApKSA8IDApIHsKKyAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJSZWNpZXZpbmcgcmVxdWVzdCBmYWlsZWRcbiIpOworICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYoKnN0YXR1cyA9PSAwKSB7CisgICAgICAgc25tcF9sb2coTE9HX0VSUiwiRW5kIG9mIGZpbGVcbiIpOworICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorZmlsbHVwX2VudHJ5X2luZm8obmV0c25tcF9hcnBfZW50cnkgKmVudHJ5LCBzdHJ1Y3Qgbmxtc2doZHIgKm5sbXApCit7CisgICAgc3RydWN0IG5kbXNnICAgKnJ0bXA7CisgICAgc3RydWN0IGluNl9hZGRyICppbjZwOworICAgIHN0cnVjdCBydGF0dHIgICp0YltOREFfTUFYICsgMV0sICpydGE7CisgICAgc2l6ZV90ICAgICAgICAgIGluX2xlbiwgb3V0X2xlbjsKKyAgICB1bnNpZ25lZCBpbnQgICAgaTsKKyAgICBpbnQgICAgICAgICAgICAgbGVuZ3RoOworICAgIGNoYXIgICAgICAgICAgICBhZGRyWzQwXTsKKyAgICB1X2NoYXIgICAgICAgICAqYnVmOworICAgIHVfY2hhciAgICAgICAgICpod2FkZHI7CisKKyAgICBydG1wID0gKHN0cnVjdCBuZG1zZyAqKSBOTE1TR19EQVRBKG5sbXApOworICAgIGlmIChubG1wLT5ubG1zZ190eXBlICE9IFJUTV9ORVdORUlHSCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiV3JvbmcgbmV0bGluayBtZXNzYWdlIHR5cGUgJWRcbiIsIG5sbXAtPm5sbXNnX3R5cGUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHJ0bXAtPm5kbV9zdGF0ZSAhPSBOVURfTk9BUlApIHsKKyAgICAgICAgbWVtc2V0KHRiLCAwLCBzaXplb2Yoc3RydWN0IHJ0YXR0ciAqKSAqIChOREFfTUFYICsgMSkpOworICAgICAgICBsZW5ndGggPSBubG1wLT5ubG1zZ19sZW4gLSBOTE1TR19MRU5HVEgoc2l6ZW9mKCpydG1wKSk7CisgICAgICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibmV0bGluayBtZXNzYWdlIGxlbmd0aCAlZCA8ICVkIGlzIGludmFsaWRcbiIsCisgICAgICAgICAgICAgICAgICAgICBubG1wLT5ubG1zZ19sZW4sIChpbnQpTkxNU0dfTEVOR1RIKHNpemVvZigqcnRtcCkpKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICAgKiB0aGlzIGlzIHdoYXQgdGhlIGtlcm5lbC1yZW1vdmVkIE5EQV9SVEEgZGVmaW5lIGRpZCAKKyAgICAgICAgICovCisgICAgICAgIHJ0YSA9ICgoc3RydWN0IHJ0YXR0ciAqKSAoKChjaGFyICopIChydG1wKSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MTVNHX0FMSUdOKHNpemVvZihzdHJ1Y3QgbmRtc2cpKSkpOworICAgICAgICB3aGlsZSAoUlRBX09LKHJ0YSwgbGVuZ3RoKSkgeworICAgICAgICAgICAgaWYgKHJ0YS0+cnRhX3R5cGUgPD0gTkRBX01BWCkKKyAgICAgICAgICAgICAgICB0YltydGEtPnJ0YV90eXBlXSA9IHJ0YTsKKyAgICAgICAgICAgIHJ0YSA9IFJUQV9ORVhUKHJ0YSwgbGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGVuZ3RoKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiUmVjZWl2ZWQgdW5ldmVuIG51bWJlciBvZiBuZXRsaW5rIgorICAgICAgICAgICAgICAgICAgICAgICAgIiBtZXNzYWdlcyAtICVkIGJ5dGVzIHJlbWFpbmluZ1xuIiwgbGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICAgKiBGaWxsIHVwIHRoZSBpbmRleAorICAgICAgICAgKi8KKyAgICAgICAgZW50cnktPmlmX2luZGV4ID0gcnRtcC0+bmRtX2lmaW5kZXg7CisgICAgICAgIC8qCisgICAgICAgICAqIEZpbGwgdXAgaXAgYWRkcmVzcyAKKyAgICAgICAgICovCisgICAgICAgIGlmICh0YltOREFfRFNUXSkgeworICAgICAgICAgICAgbWVtc2V0KCZhZGRyLCAnXDAnLCBzaXplb2YoYWRkcikpOworICAgICAgICAgICAgaW42cCA9IChzdHJ1Y3QgaW42X2FkZHIgKikgUlRBX0RBVEEodGJbTkRBX0RTVF0pOworICAgICAgICAgICAgc3ByaW50ZihhZGRyLCBOSVA2X0ZNVCwgTklQNigqaW42cCkpOworICAgICAgICAgICAgaW5fbGVuID0gZW50cnktPmFycF9pcGFkZHJlc3NfbGVuID0KKyAgICAgICAgICAgICAgICBzaXplb2YoZW50cnktPmFycF9pcGFkZHJlc3MpOworICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQoMTYgPT0gaW5fbGVuKTsKKyAgICAgICAgICAgIG91dF9sZW4gPSAwOworICAgICAgICAgICAgYnVmID0gZW50cnktPmFycF9pcGFkZHJlc3M7CisgICAgICAgICAgICBpZiAoMSAhPSBuZXRzbm1wX2hleF90b19iaW5hcnkoJmJ1ZiwgJmluX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0X2xlbiwgMCwgYWRkciwgIjoiKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBwYXJzaW5nICclcycsIHNraXBwaW5nXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXRzbm1wX2Fzc2VydCgxNiA9PSBvdXRfbGVuKTsKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiA9IG91dF9sZW47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRiW05EQV9MTEFERFJdKSB7CisgICAgICAgICAgICBtZW1zZXQoJmFkZHIsICdcMCcsIHNpemVvZihhZGRyKSk7CisgICAgICAgICAgICBod2FkZHIgPSBSVEFfREFUQSh0YltOREFfTExBRERSXSk7CisgICAgICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbiA9IFJUQV9QQVlMT0FEKHRiW05EQV9MTEFERFJdKTsKKyAgICAgICAgICAgIGJ1ZiA9IGVudHJ5LT5hcnBfcGh5c2FkZHJlc3M7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZW50cnktPmFycF9waHlzYWRkcmVzc19sZW47IGkrKykKKyAgICAgICAgICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzW2ldID0gaHdhZGRyW2ldOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChydG1wLT5uZG1fc3RhdGUpIHsKKyAgICAgICAgY2FzZSBOVURfSU5DT01QTEVURToKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0lOQ09NUExFVEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVURfUkVBQ0hBQkxFOgorICAgICAgICBjYXNlIE5VRF9QRVJNQU5FTlQ6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9SRUFDSEFCTEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVURfU1RBTEU6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9TVEFMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5VRF9ERUxBWToKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0RFTEFZOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlVEX1BST0JFOgorICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfUFJPQkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVURfRkFJTEVEOgorICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfSU5WQUxJRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5VRF9OT05FOgorICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfVU5LTk9XTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlVucmVjb2duaXplZCBBUlAgZW50cnkgc3RhdGUgJWQiLCBydG1wLT5uZG1fc3RhdGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHJ0bXAtPm5kbV9zdGF0ZSkgeworICAgICAgICBjYXNlIE5VRF9JTkNPTVBMRVRFOgorICAgICAgICBjYXNlIE5VRF9GQUlMRUQ6CisgICAgICAgIGNhc2UgTlVEX05PTkU6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfSU5WQUxJRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5VRF9SRUFDSEFCTEU6CisgICAgICAgIGNhc2UgTlVEX1NUQUxFOgorICAgICAgICBjYXNlIE5VRF9ERUxBWToKKyAgICAgICAgY2FzZSBOVURfUFJPQkU6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfRFlOQU1JQzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5VRF9QRVJNQU5FTlQ6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfU1RBVElDOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfTE9DQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgIC8qIGNvdWxkIG5vdCBjcmVhdGUgZGF0YSBmb3IgdGhpcyBpbnRlcmZhY2UgKi8KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGRmYmIxCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogZGVmYXVsdHJvdXRlciBkYXRhIGFjY2VzcyBoZWFkZXIKKyAqCisgKiAkSWQ6ICQKKyAqLworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBjb25maWd1cmUgcmVxdWlyZWQgZmlsZXMKKyAqCisgKiBOb3RlczoKKyAqCisgKiAxKSBwcmVmZXIgZnVuY3Rpb25hbGl0eSBvdmVyIHBsYXRmb3JtLCB3aGVyZSBwb3NzaWJsZS4gSWYgYSBtZXRob2QKKyAqICAgIGlzIGF2YWlsYWJsZSBmb3IgbXVsdGlwbGUgcGxhdGZvcm1zLCB0ZXN0IHRoYXQgZmlyc3QuIFRoYXQgd2F5CisgKiAgICB3aGVuIGEgbmV3IHBsYXRmb3JtIGlzIHBvcnRlZCwgaXQgd29uJ3QgbmVlZCBhIG5ldyB0ZXN0IGhlcmUuCisgKgorICogMikgZG9uJ3QgZG8gZGV0YWlsIHJlcXVpcmVtZW50cyBoZXJlLiBJZiwgZm9yIGV4YW1wbGUsCisgKiAgICBIUFVYMTEgaGFkIGRpZmZlcmVudCByZXVpcmVtZW50cyB0aGFuIG90aGVyIEhQVVgsIHRoYXQgc2hvdWxkCisgKiAgICBiZSBoYW5kbGVkIGluIHRoZSAqX2hwdXguaCBoZWFkZXIgZmlsZS4KKyAqLworY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uKQorI2lmIGRlZmluZWQoIGxpbnV4ICkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX2xpbnV4KQorI2Vsc2UKKy8qCisgKiBjb3VsZG4ndCBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgZmlsZSEKKyAqLworY29uZmlnX2Vycm9yKHRoZSBkZWZhdWx0cm91dGVyIGRhdGEgYWNjZXNzIGxpYnJhcnkgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LikKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9jb21tb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTg1YmZhCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uLmMKQEAgLTAsMCArMSwyOTEgQEAKKy8qCisgKiAgZGVmYXVsdHJvdXRlciBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQ6JAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oPgorCisjaW5jbHVkZSAiaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlLmgiCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogbG9jYWwgc3RhdGljIHByb3RvdHlwZXMKKyAqLworc3RhdGljIGludCBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY29tcGFyZV9hZGRyKGNvbnN0IHZvaWQgKmxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpyaHMpOworc3RhdGljIHZvaWQgX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X3JlbGVhc2UobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICogZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1bnVzZWQpOworCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIGV4dGVybmFsIHBlci1hcmNoaXRlY3R1cmUgZnVuY3Rpb25zIHByb3RvdHlwZXMKKyAqCisgKiBUaGVzZSBzaG91bGRuJ3QgYmUgY2FsbGVkIGJ5IHRoZSBnZW5lcmFsIHB1YmxpYywgc28gdGhleSBhcmVuJ3QgaW4KKyAqIHRoZSBoZWFkZXIgZmlsZS4KKyAqLworZXh0ZXJuIGludAorbmV0c25tcF9hcmNoX2RlZmF1bHRyb3V0ZXJfZW50cnlfaW5pdChuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmVudHJ5KTsKKworZXh0ZXJuIGludAorbmV0c25tcF9hcmNoX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOworCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIGNvbnRhaW5lciBmdW5jdGlvbnMKKyAqLworLyoqCisgKi8KK25ldHNubXBfY29udGFpbmVyICoKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2luaXQodV9pbnQgZmxhZ3MpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjE7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXI6Y29udGFpbmVyIiwgImluaXRcbiIpKTsKKworICAgIC8qCisgICAgICogY3JlYXRlIHRoZSBjb250YWluZXJzLiBvbmUgaW5kZXhlZCBieSBpZkluZGV4LCB0aGUgb3RoZXIKKyAgICAgKiBpbmRleGVkIGJ5IGlmTmFtZS4KKyAgICAgKi8KKyAgICBjb250YWluZXIxID0gbmV0c25tcF9jb250YWluZXJfZmluZCgiYWNjZXNzX2RlZmF1bHRyb3V0ZXI6dGFibGVfY29udGFpbmVyIik7CisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyMSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZGVmYXVsdHJvdXRlciBwcmltYXJ5IGNvbnRhaW5lciBpcyBub3QgZm91bmRcbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY29udGFpbmVyMS0+Y29udGFpbmVyX25hbWUgPSBzdHJkdXAoImRyX2luZGV4Iik7CisKKyAgICBpZiAoZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0lOSVRfQURETF9JRFhfQllfQUREUikgeworICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyMiA9CisgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJkZWZhdWx0cm91dGVyX2FkZHI6YWNjZXNzX2RlZmF1bHRyb3V0ZXI6dGFibGVfY29udGFpbmVyIik7CisgICAgICAgIGlmIChOVUxMID09IGNvbnRhaW5lcjIpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkZWZhdWx0cm91dGVyIHNlY29uZGFyeSBjb250YWluZXIgbm90IGZvdW5kXG4iKTsKKyAgICAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcjEpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBjb250YWluZXIyLT5jb21wYXJlID0gX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2NvbXBhcmVfYWRkcjsKKyAgICAgICAgY29udGFpbmVyMi0+Y29udGFpbmVyX25hbWUgPSBzdHJkdXAoImRyX2FkZHIiKTsKKworICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9hZGRfaW5kZXgoY29udGFpbmVyMSwgY29udGFpbmVyMik7CisgICAgfQorCisgICAgcmV0dXJuIGNvbnRhaW5lcjE7Cit9CisKKy8qKgorICogQHJldHZhbCBOVUxMICBlcnJvcgorICogQHJldHZhbCAhTlVMTCBwb2ludGVyIHRvIGNvbnRhaW5lcgorICovCituZXRzbm1wX2NvbnRhaW5lcioKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgcmM7CisgICAgIHVfaW50IGNvbnRhaW5lcl9mbGFncyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXI6Y29udGFpbmVyIiwgImxvYWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBpZiAobG9hZF9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfTE9BRF9BRERMX0lEWF9CWV9BRERSKSB7CisgICAgICAgICAgICBjb250YWluZXJfZmxhZ3MgfD0KKyAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0lOSVRfQURETF9JRFhfQllfQUREUjsKKyAgICAgICAgfQorICAgICAgICBjb250YWluZXIgPQorICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfaW5pdChjb250YWluZXJfZmxhZ3MpOworICAgIH0KKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX2RlZmF1bHRyb3V0ZXJcbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByYyA9ICBuZXRzbm1wX2FyY2hfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfbG9hZChjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIGlmICgwICE9IHJjKSB7CisgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX05PRkxBR1MpOworICAgICAgICBjb250YWluZXIgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiBjb250YWluZXI7Cit9CisKK3ZvaWQKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgZnJlZV9mbGFncykKK3sKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXI6Y29udGFpbmVyIiwgImZyZWVcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiaW52YWxpZCBjb250YWluZXIgZm9yIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX0RPTlRfQ0xFQVIpKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGZyZWUgYWxsIGl0ZW1zLgorICAgICAgICAgKi8KKyAgICAgICAgQ09OVEFJTkVSX0NMRUFSKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyopX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X3JlbGVhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICB9CisKKyAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX0tFRVBfQ09OVEFJTkVSKSkKKyAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKK30KKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBkZWZhdWx0cm91dGVyX2VudHJ5IGZ1bmN0aW9ucworICovCisvKioKKyAqLworLyoqCisgKi8KK25ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqCituZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2NyZWF0ZSh2b2lkKQoreworICAgIGludCByYyA9IDA7CisgICAgbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICplbnRyeSA9CisgICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5KTsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZGVmYXVsdHJvdXRlcjplbnRyeSIsICJjcmVhdGVcbiIpKTsKKworICAgIGlmKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZW50cnktPm9pZF9pbmRleC5sZW4gPSAxOworICAgIGVudHJ5LT5vaWRfaW5kZXgub2lkcyA9ICZlbnRyeS0+bnNfZHJfaW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCBkZWZhdWx0cworICAgICAqLworICAgIGVudHJ5LT5kcl9saWZldGltZSAgID0gSVBERUZBVUxUUk9VVEVSTElGRVRJTUVfTUFYOworICAgIGVudHJ5LT5kcl9wcmVmZXJlbmNlID0gSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRV9NRURJVU07CisKKyAgICByYyA9IG5ldHNubXBfYXJjaF9kZWZhdWx0cm91dGVyX2VudHJ5X2luaXQoZW50cnkpOworICAgIGlmIChTTk1QX0VSUl9OT0VSUk9SICE9IHJjKSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczpkZWZhdWx0cm91dGVyOmNyZWF0ZSIsImVycm9yICVkIGluIGFyY2ggaW5pdFxuIiwgcmMpKTsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICAgICAgZW50cnkgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiBlbnRyeTsKK30KKwordm9pZAorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9mcmVlKG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqIGVudHJ5KQoreworICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm47CisKKyAgICBmcmVlKGVudHJ5KTsKK30KKworLyoqCisgKiB1cGRhdGUgYW4gb2xkIGRlZmF1bHRyb3V0ZXJfZW50cnkgZnJvbSBhIG5ldyBvbmUKKyAqCisgKiBAbm90ZTogb25seSBtaWIgcmVsYXRlZCBpdGVtcyBhcmUgY29tcGFyZWQuIEludGVybmFsIG9iamVjdHMKKyAqIHN1Y2ggYXMgb2lkX2luZGV4LCBuc19kcl9pbmRleCBhbmQgZmxhZ3MgYXJlIG5vdCBjb21wYXJlZC4KKyAqCisgKiBAcmV0dmFsIC0xICA6IGVycm9yCisgKiBAcmV0dmFsID49MCA6IG51bWJlciBvZiBmaWVsZHMgdXBkYXRlZAorICovCitpbnQKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfdXBkYXRlKG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKnJocykKK3sKKyAgICBpbnQgY2hhbmdlZCA9IDA7CisKKyAgICBpZiAobGhzLT5kcl9hZGRyZXNzdHlwZSAhPSByaHMtPmRyX2FkZHJlc3N0eXBlKSB7CisgICAgICAgICsrY2hhbmdlZDsKKyAgICAgICAgbGhzLT5kcl9hZGRyZXNzdHlwZSA9IHJocy0+ZHJfYWRkcmVzc3R5cGU7CisgICAgfQorCisgICAgaWYgKGxocy0+ZHJfYWRkcmVzc19sZW4gIT0gcmhzLT5kcl9hZGRyZXNzX2xlbikgeworICAgICAgICBjaGFuZ2VkICs9IDI7CisgICAgICAgIGxocy0+ZHJfYWRkcmVzc19sZW4gPSByaHMtPmRyX2FkZHJlc3NfbGVuOworICAgICAgICBtZW1jcHkobGhzLT5kcl9hZGRyZXNzLCByaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzc19sZW4pOworICAgIH0KKyAgICBlbHNlIGlmIChtZW1jbXAobGhzLT5kcl9hZGRyZXNzLCByaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzc19sZW4pICE9IDApIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBtZW1jcHkobGhzLT5kcl9hZGRyZXNzLCByaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzc19sZW4pOworICAgIH0KKworICAgIGlmIChsaHMtPmRyX2lmX2luZGV4ICE9IHJocy0+ZHJfaWZfaW5kZXgpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmRyX2lmX2luZGV4ID0gcmhzLT5kcl9pZl9pbmRleDsKKyAgICB9CisKKyAgICBpZiAobGhzLT5kcl9saWZldGltZSAhPSByaHMtPmRyX2xpZmV0aW1lKSB7CisgICAgICAgICsrY2hhbmdlZDsKKyAgICAgICAgbGhzLT5kcl9saWZldGltZSA9IHJocy0+ZHJfbGlmZXRpbWU7CisgICAgfQorCisgICAgaWYgKGxocy0+ZHJfcHJlZmVyZW5jZSAhPSByaHMtPmRyX3ByZWZlcmVuY2UpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmRyX3ByZWZlcmVuY2UgPSByaHMtPmRyX3ByZWZlcmVuY2U7CisgICAgfQorCisgICAgcmV0dXJuIGNoYW5nZWQ7Cit9CisKKy8qKgorICogY29weSBhbiAgZGVmYXVsdHJvdXRlcl9lbnRyeQorICoKKyAqIEByZXR2YWwgLTEgIDogZXJyb3IKKyAqIEByZXR2YWwgMCAgIDogbm8gZXJyb3IKKyAqLworaW50CituZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2NvcHkobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKnJocykKK3sKKyAgICBsaHMtPmRyX2FkZHJlc3N0eXBlID0gcmhzLT5kcl9hZGRyZXNzdHlwZTsKKyAgICBsaHMtPmRyX2FkZHJlc3NfbGVuID0gcmhzLT5kcl9hZGRyZXNzX2xlbjsKKyAgICBtZW1jcHkobGhzLT5kcl9hZGRyZXNzLCByaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzc19sZW4pOworICAgIGxocy0+ZHJfaWZfaW5kZXggICAgPSByaHMtPmRyX2lmX2luZGV4OworICAgIGxocy0+ZHJfbGlmZXRpbWUgICAgPSByaHMtPmRyX2xpZmV0aW1lOworICAgIGxocy0+ZHJfcHJlZmVyZW5jZSAgPSByaHMtPmRyX3ByZWZlcmVuY2U7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBVdGlsaXR5IHJvdXRpbmVzCisgKi8KKworLyoqCisgKi8KK3ZvaWQKK19hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9yZWxlYXNlKG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqIGVudHJ5LCB2b2lkICpjb250ZXh0KQoreworICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShlbnRyeSk7Cit9CisKK3N0YXRpYyBpbnQgX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2NvbXBhcmVfYWRkcihjb25zdCB2b2lkICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpyaHMpCit7CisgICAgY29uc3QgbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICpsaCA9IChjb25zdCBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKilsaHM7CisgICAgY29uc3QgbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICpyaCA9IChjb25zdCBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKilyaHM7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGxocyk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByaHMpOworCisgICAgLyoKKyAgICAgKiBjb21wYXJlIGFkZHJlc3MgbGVuZ3RoCisgICAgICovCisgICAgaWYgKGxoLT5kcl9hZGRyZXNzX2xlbiA8IHJoLT5kcl9hZGRyZXNzX2xlbikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UgaWYgKGxoLT5kcl9hZGRyZXNzX2xlbiA+IHJoLT5kcl9hZGRyZXNzX2xlbikKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAvKgorICAgICAqIGxlbmd0aCBlcXVhbCwgY29tcGFyZSBhZGRyZXNzCisgICAgICovCisgICAgcmV0dXJuIG1lbWNtcChsaC0+ZHJfYWRkcmVzcywgcmgtPmRyX2FkZHJlc3MsIGxoLT5kcl9hZGRyZXNzX2xlbik7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfbGludXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzgwMTZhCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfbGludXguYwpAQCAtMCwwICsxLDMyOCBAQAorLyoKKyAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKgorICogJElkOiQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaD4KKworI2luY2x1ZGUgImlwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oIgorCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAorI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KKyNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjZGVmaW5lIFJDVkJVRl9TSVpFIDMyNzY4CisjZGVmaW5lIFNOREJVRl9TSVpFIDUxMgorCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorI2RlZmluZSBEUl9BRERSU1RSTEVOICBJTkVUNl9BRERSU1RSTEVOCisjZWxzZQorI2RlZmluZSBEUl9BRERSU1RSTEVOICBJTkVUX0FERFJTVFJMRU4KKyNlbmRpZgorCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIGxvY2FsIHN0YXRpYyBwcm90b3R5cGVzCisgKi8KK3N0YXRpYyBpbnQgX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcik7CisKKworLyoKKyAqIGluaXRpYWxpemUgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCisgKgorICogQHJldHZhbCAgMDogc3VjY2VzcworICogQHJldHZhbCA8MDogZXJyb3IKKyAqLworaW50CituZXRzbm1wX2FyY2hfZGVmYXVsdHJvdXRlcl9lbnRyeV9pbml0KG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqZW50cnkpCit7CisgICAgLyoKKyAgICAgKiBpbml0CisgICAgICovCisgICAgcmV0dXJuIDA7Cit9CisKKy8qKgorICoKKyAqIEByZXR2YWwgIDAgbm8gZXJyb3JzCisgKiBAcmV0dmFsICEwIGVycm9ycworICovCitpbnQKK25ldHNubXBfYXJjaF9kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIGludCByYyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXI6ZW50cnk6YXJjaCIsICJsb2FkIChsaW51eClcbiIpKTsKKworICAgIHJjID0gX2xvYWQoY29udGFpbmVyKTsKKyAgICBpZiAocmMgPCAwKSB7CisgICAgICAgIHVfaW50IGZsYWdzID0gTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX0tFRVBfQ09OVEFJTkVSOworICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCBubyBlcnJvcnMKKyAqIEByZXR2YWwgITAgZXJyb3JzCisgKi8KK3N0YXRpYyBpbnQKK19sb2FkKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisjaWZuZGVmIEhBVkVfTElOVVhfUlRORVRMSU5LX0gKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXIiLAorICAgICAgICAgICAgICAgICJjYW5ub3QgZ2V0IGRlZmF1bHQgcm91dGVyIGluZm9ybWF0aW9uIgorICAgICAgICAgICAgICAgICJhcyBuZXRsaW5rIHNvY2tldCBpcyBub3QgYXZhaWxhYmxlXG4iKSk7CisgICAgcmV0dXJuIC0xOworI2Vsc2UKKyAgICBpbnQgcmMgPSAwOworICAgIGludCBpZHhfb2Zmc2V0ID0gMDsKKyAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmVudHJ5OworICAgIGludCBubHNrOworICAgIHN0cnVjdCBzb2NrYWRkcl9ubCBhZGRyOworICAgIGludCByY3ZidWZfc2l6ZSA9IFJDVkJVRl9TSVpFOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IG5sbXNnaGRyIGhkcjsKKyAgICAgICAgdW5zaWduZWQgY2hhciByY3ZidWZbUkNWQlVGX1NJWkVdOworICAgIH0gcmN2YnVmX3VuaW9uOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IG5sbXNnaGRyIGhkcjsKKyAgICAgICAgdW5zaWduZWQgY2hhciBzbmRidWZbU05EQlVGX1NJWkVdOworICAgIH0gc25kYnVmX3VuaW9uOworICAgIHVuc2lnbmVkIGNoYXIgKmNvbnN0IHJjdmJ1ZiA9IHJjdmJ1Zl91bmlvbi5yY3ZidWY7CisgICAgdW5zaWduZWQgY2hhciAqY29uc3Qgc25kYnVmID0gc25kYnVmX3VuaW9uLnNuZGJ1ZjsKKyAgICBzdHJ1Y3Qgbmxtc2doZHIgKmhkcjsKKyAgICBzdHJ1Y3QgcnRtc2cgKnJ0aGRyOworICAgIGludCBjb3VudDsKKyAgICBpbnQgZW5kX29mX21lc3NhZ2UgPSAwOworICAgIGxvbmcgaHogPSBzeXNjb25mKF9TQ19DTEtfVENLKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gY29udGFpbmVyKTsKKworICAgIC8qCisgICAgICogT3BlbiBhIG5ldGxpbmsgc29ja2V0CisgICAgICovCisgICAgbmxzayA9IHNvY2tldChBRl9ORVRMSU5LLCBTT0NLX0RHUkFNLCBORVRMSU5LX1JPVVRFKTsKKyAgICBpZiAobmxzayA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkIG5vdCBvcGVuIG5ldGxpbmsgc29ja2V0IDogJXNcbiIsCisgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoc2V0c29ja29wdChubHNrLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsCisgICAgICAgICAgICAgICAgICAgJnJjdmJ1Zl9zaXplLCBzaXplb2YocmN2YnVmX3NpemUpKSA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkIG5vdCBvcGVuIG5ldGxpbmsgc29ja2V0IDogJXNcbiIsCisgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGNsb3NlKG5sc2spOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIG1lbXNldCgmYWRkciwgJ1wwJywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9ubCkpOworICAgIGFkZHIubmxfZmFtaWx5ID0gQUZfTkVUTElOSzsKKworICAgIG1lbXNldChzbmRidWYsICdcMCcsIFNOREJVRl9TSVpFKTsKKyAgICBoZHIgPSAmc25kYnVmX3VuaW9uLmhkcjsKKyAgICBoZHItPm5sbXNnX3R5cGUgPSBSVE1fR0VUUk9VVEU7CisgICAgaGRyLT5ubG1zZ19waWQgPSBnZXRwaWQoKTsKKyAgICBoZHItPm5sbXNnX3NlcSA9IDA7CisgICAgaGRyLT5ubG1zZ19mbGFncyA9IE5MTV9GX1JPT1QgfCBOTE1fRl9NQVRDSCB8IE5MTV9GX1JFUVVFU1Q7CisgICAgaGRyLT5ubG1zZ19sZW4gPSBOTE1TR19MRU5HVEgoc2l6ZW9mKHN0cnVjdCBydG1zZykpOworICAgIHJ0aGRyID0gKHN0cnVjdCBydG1zZyAqKU5MTVNHX0RBVEEoaGRyKTsKKyAgICBydGhkci0+cnRtX3RhYmxlID0gUlRfVEFCTEVfTUFJTjsKKworICAgIC8qCisgICAgICogU2VuZCBhIHJlcXVlc3QgdG8gdGhlIGtlcm5lbCB0byBkdW1wIHRoZSByb3V0aW5nIHRhYmxlIHRvIHVzCisgICAgICovCisgICAgY291bnQgPSBzZW5kdG8obmxzaywgc25kYnVmLCBoZHItPm5sbXNnX2xlbiwgMCwKKyAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbmwpKTsKKyAgICBpZiAoY291bnQgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmFibGUgdG8gc2VuZCBuZXRsaW5rIG1lc3NhZ2UgdG8ga2VybmVsIDogJXNcbiIsCisgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGNsb3NlKG5sc2spOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOb3cgbGlzdGVuIGZvciByZXNwb25zZQorICAgICAqLworICAgIGRvIHsKKyAgICAgICAgc3RydWN0IG5sbXNnaGRyICpubG1ocDsKKyAgICAgICAgc3RydWN0IHJ0bXNnICpydG1wOworICAgICAgICBzdHJ1Y3QgcnRhdHRyICpydGFwOworICAgICAgICBzdHJ1Y3QgcnRhX2NhY2hlaW5mbyAqcnRjaTsKKyAgICAgICAgc29ja2xlbl90IHNvY2tfbGVuOworICAgICAgICBpbnQgcnRjb3VudDsKKworICAgICAgICBtZW1zZXQocmN2YnVmLCAnXDAnLCBSQ1ZCVUZfU0laRSk7CisgICAgICAgIHNvY2tfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9ubCk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogR2V0IHRoZSBtZXNzYWdlCisgICAgICAgICAqLworICAgICAgICBjb3VudCA9IHJlY3Zmcm9tKG5sc2ssIHJjdmJ1ZiwgUkNWQlVGX1NJWkUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCAmc29ja19sZW4pOworICAgICAgICBpZiAoY291bnQgPCAwKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5hYmxlIHRvIHJlY2VpdmUgbmV0bGluayBtZXNzYWdlczogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogV2FsayBhbGwgb2YgdGhlIHJldHVybmVkIG1lc3NhZ2VzCisgICAgICAgICAqLworICAgICAgICBubG1ocCA9ICZyY3ZidWZfdW5pb24uaGRyOworICAgICAgICB3aGlsZSAoTkxNU0dfT0sobmxtaHAsIGNvdW50KSkgeworICAgICAgICAgICAgdV9jaGFyIGFkZHJlc3N0eXBlOworICAgICAgICAgICAgY2hhciAgIGFkZHJlc3NbTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9CVUZfU0laRSArIDFdOworICAgICAgICAgICAgc2l6ZV90IGFkZHJlc3NfbGVuID0gIDA7CisgICAgICAgICAgICBpbnQgICAgaWZfaW5kZXggICAgPSAtMTsKKyAgICAgICAgICAgIHVfbG9uZyBsaWZldGltZSAgICA9ICAwOworICAgICAgICAgICAgaW50ICAgIHByZWZlcmVuY2UgID0gLTM7CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBNYWtlIHN1cmUgdGhlIG1lc3NhZ2UgaXMgb2sKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKG5sbWhwLT5ubG1zZ190eXBlID09IE5MTVNHX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImtlcm5lbCBwcm9kdWNlZCBubG1zZyBlcnJcbiIpOworICAgICAgICAgICAgICAgIHJjID0gLTE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBFbmQgb2YgbWVzc2FnZSwgd2UncmUgZG9uZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAobmxtaHAtPm5sbXNnX3R5cGUgJiBOTE1TR19ET05FKSB7CisgICAgICAgICAgICAgICAgZW5kX29mX21lc3NhZ2UgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogR2V0IHRoZSBwb2ludGVyIHRvIHRoZSBydG1zZyBzdHJ1Y3QKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcnRtcCA9IE5MTVNHX0RBVEEobmxtaHApOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogemVybyBsZW5ndGggZGVzdGluYXRpb24gaXMgYSBkZWZhdWx0IHJvdXRlCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChydG1wLT5ydG1fZHN0X2xlbiAhPSAwKQorICAgICAgICAgICAgICAgIGdvdG8gbmV4dF9ubG1zZ2hkcjsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFN0YXJ0IHNjYW5uaW5nIHRoZSBhdHRyaWJ1dGVzIGZvciBuZWVkZWQgaW5mbworICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAocnRtcC0+cnRtX2ZhbWlseSA9PSBBRl9JTkVUKSB7CisgICAgICAgICAgICAgICAgYWRkcmVzc3R5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNDsKKyAgICAgICAgICAgICAgICBsaWZldGltZSA9IElQREVGQVVMVFJPVVRFUkxJRkVUSU1FX01BWDsgICAgIC8qIGluZmluaXR5ICovCisgICAgICAgICAgICB9CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgICAgICAgICAgZWxzZSBpZiAocnRtcC0+cnRtX2ZhbWlseSA9PSBBRl9JTkVUNikgeworICAgICAgICAgICAgICAgIGFkZHJlc3N0eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjY7CisgICAgICAgICAgICAgICAgLyogcm91dGVyIGxpZmV0aW1lIGZvciBJUHY2IGlzIHJldHJpZXZlZCBieSBSVEFfQ0FDSEVJTkZPICovCisgICAgICAgICAgICAgICAgbGlmZXRpbWUgPSAwOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ290byBuZXh0X25sbXNnaGRyOyAvKiBza2lwLCB3ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgcm91dGUgKi8KKworICAgICAgICAgICAgcHJlZmVyZW5jZSA9IDA7ICAgICAvKiBwcmVmZXJlbmNlIGlzIG1lZGl1bSgwKSBmb3Igbm93ICovCisKKyAgICAgICAgICAgIHJ0YXAgPSBSVE1fUlRBKHJ0bXApOworICAgICAgICAgICAgcnRjb3VudCA9IFJUTV9QQVlMT0FEKG5sbWhwKTsKKyAgICAgICAgICAgIHdoaWxlIChSVEFfT0socnRhcCwgcnRjb3VudCkpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHJ0YXAtPnJ0YV90eXBlKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgUlRBX09JRjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmX2luZGV4ID0gKihpbnQgKikoUlRBX0RBVEEocnRhcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBSVEFfR0FURVdBWToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGVuID0gUlRBX1BBWUxPQUQocnRhcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1zZXQoYWRkcmVzcywgJ1wwJywgc2l6ZW9mKGFkZHJlc3MpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShhZGRyZXNzLCBSVEFfREFUQShydGFwKSwgYWRkcmVzc19sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgICAgICAgICAgICAgICAgIGNhc2UgUlRBX0NBQ0hFSU5GTzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ0Y2kgPSBSVEFfREFUQShydGFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocnRtcC0+cnRtX2ZsYWdzICYgUlRNX0ZfQ0xPTkVEKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydGNpICYmIHJ0Y2ktPnJ0YV9leHBpcmVzKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZmV0aW1lID0gcnRjaS0+cnRhX2V4cGlyZXMgLyBoejsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gICAvKiBzd2l0Y2ggKi8KKworICAgICAgICAgICAgICAgIHJ0YXAgPSBSVEFfTkVYVChydGFwLCBydGNvdW50KTsKKyAgICAgICAgICAgIH0gLyogd2hpbGUgUlRBX09LKHJ0YXApICovCisKKyAgICAgICAgICAgIGlmIChhZGRyZXNzX2xlbiAhPSAwICYmIGlmX2luZGV4ICE9IC0xICYmCisgICAgICAgICAgICAgICAgbGlmZXRpbWUgIT0gMCAmJiBwcmVmZXJlbmNlICE9IC0zICkgeworICAgICAgICAgICAgICAgIERFQlVHSUYoImFjY2VzczpkZWZhdWx0cm91dGVyIikgeworICAgICAgICAgICAgICAgICAgICBjaGFyIGFkZHJfc3RyW0RSX0FERFJTVFJMRU5dOworICAgICAgICAgICAgICAgICAgICBtZW1zZXQoYWRkcl9zdHIsICdcMCcsIERSX0FERFJTVFJMRU4pOworCisgICAgICAgICAgICAgICAgICAgIGlmIChydG1wLT5ydG1fZmFtaWx5ID09IEFGX0lORVQpCisgICAgICAgICAgICAgICAgICAgICAgICBpbmV0X250b3AoQUZfSU5FVCwgYWRkcmVzcywgYWRkcl9zdHIsIERSX0FERFJTVFJMRU4pOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9wKEFGX0lORVQ2LCBhZGRyZXNzLCBhZGRyX3N0ciwgRFJfQUREUlNUUkxFTik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpkZWZhdWx0cm91dGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvdW5kIGRlZmF1bHQgcm91dGU6ICVzIGlmX2luZGV4ICVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZmV0aW1lICVsdSBwcmVmZXJlbmNlICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3N0ciwgaWZfaW5kZXgsIGxpZmV0aW1lLCBwcmVmZXJlbmNlKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICAgICAgICAgIGlmIChOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgIHJjID0gLTM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGVudHJ5LT5uc19kcl9pbmRleCAgICA9ICsraWR4X29mZnNldDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZHJfYWRkcmVzc3R5cGUgPSBhZGRyZXNzdHlwZTsKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZHJfYWRkcmVzc19sZW4gPSBhZGRyZXNzX2xlbjsKKyAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPmRyX2FkZHJlc3MsIGFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfQlVGX1NJWkUpOworICAgICAgICAgICAgICAgIGVudHJ5LT5kcl9pZl9pbmRleCAgICA9IGlmX2luZGV4OworICAgICAgICAgICAgICAgIGVudHJ5LT5kcl9saWZldGltZSAgICA9IGxpZmV0aW1lOworICAgICAgICAgICAgICAgIGVudHJ5LT5kcl9wcmVmZXJlbmNlICA9IHByZWZlcmVuY2U7CisKKyAgICAgICAgICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmFycDpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3Igd2l0aCBkZWZhdWx0cm91dGVyX2VudHJ5OiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworbmV4dF9ubG1zZ2hkcjoKKyAgICAgICAgICAgIG5sbWhwID0gTkxNU0dfTkVYVChubG1ocCwgY291bnQpOworICAgICAgICB9IC8qIHdoaWxlIE5MTVNHX09LKG5sbWhwKSAqLworCisgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICBicmVhazsKKworICAgIH0gd2hpbGUgKCFlbmRfb2ZfbWVzc2FnZSk7CisKKyAgICBjbG9zZShubHNrKTsKKyAgICByZXR1cm4gcmM7CisjZW5kaWYgIC8qIEhBVkVfTElOVVhfUlRORVRMSU5LX0ggKi8KK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaAppbmRleCBjNjZmMTYxLi45Y2Y4MTgxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCkBAIC0yMCwxMSArMjAsOSBAQAogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24pCiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eCkKKyNlbGlmIGRlZmluZWQoIHNvbGFyaXMyICkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIpCiAjZWxzZQotLyoKLSAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQotICogcmVxdWlyZSBhIGJvZ3VzIGZpbGUgdG8gZ2VuZXJhdGUgYW4gZXJyb3IuCi0gKi8KLWNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MtdW5rbm93bi1hcmNoKQorY29uZmlnX2Vycm9yKHRoZSBpcGFkZHJlc3MgZGF0YSBhY2Nlc3MgbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jCmluZGV4IDMxNzY1NGUuLmFjNjJjNDAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYwpAQCAtMjExLDcgKzIxMSw3IEBACiAgICAgICogbWFrZSBzdXJlIGludGVyZmFjZSBhbmQgaWZJbmRleCBtYXRjaCB1cAogICAgICAqLwogICAgIGlmIChOVUxMID09IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9uYW1lX2ZpbmQoZW50cnktPmlmX2luZGV4KSkgewotICAgICAgICBERUJVR01TR1QoKCJhY2Nlc3M6aXBhZGRyZXNzOnNldCIsICJjYW50IGZpbmQgbmFtZSBmb3IgaW5kZXggJWRcbiIsCisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6c2V0IiwgImNhbnQgZmluZCBuYW1lIGZvciBpbmRleCAlbGRcbiIsCiAgICAgICAgICAgICAgICAgICBlbnRyeS0+aWZfaW5kZXgpKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMwNCw2ICszMDQsMjcgQEAKICAgICAgICAgKytjaGFuZ2VkOwogICAgICAgICBsaHMtPmlhX29yaWdpbiA9IHJocy0+aWFfb3JpZ2luOwogICAgIH0KKyAgIAorICAgIGlmIChsaHMtPmlhX29ubGlua19mbGFnICE9IHJocy0+aWFfb25saW5rX2ZsYWcpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmlhX29ubGlua19mbGFnID0gcmhzLT5pYV9vbmxpbmtfZmxhZzsKKyAgICB9CisKKyAgICBpZiAobGhzLT5pYV9hdXRvbm9tb3VzX2ZsYWcgIT0gcmhzLT5pYV9hdXRvbm9tb3VzX2ZsYWcpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmlhX2F1dG9ub21vdXNfZmxhZyA9IHJocy0+aWFfYXV0b25vbW91c19mbGFnOworICAgIH0KKworICAgIGlmIChsaHMtPmlhX3ByZWZlcmVkX2xpZmV0aW1lICE9IHJocy0+aWFfcHJlZmVyZWRfbGlmZXRpbWUpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmlhX3ByZWZlcmVkX2xpZmV0aW1lID0gcmhzLT5pYV9wcmVmZXJlZF9saWZldGltZTsKKyAgICB9CisKKyAgICBpZiAobGhzLT5pYV92YWxpZF9saWZldGltZSAhPSByaHMtPmlhX3ZhbGlkX2xpZmV0aW1lKSB7CisgICAgICAgICsrY2hhbmdlZDsKKyAgICAgICAgbGhzLT5pYV92YWxpZF9saWZldGltZSA9IHJocy0+aWFfdmFsaWRfbGlmZXRpbWU7CisgICAgfQorCiAKICAgICByZXR1cm4gY2hhbmdlZDsKIH0KQEAgLTQzMSwzICs0NTIsNDkgQEAKICAgICAgKi8KICAgICByZXR1cm4gbWVtY21wKGxoLT5pYV9hZGRyZXNzLCByaC0+aWFfYWRkcmVzcywgbGgtPmlhX2FkZHJlc3NfbGVuKTsKIH0KKworaW50CituZXRzbm1wX2lwYWRkcmVzc19mbGFnc19jb3B5KHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4QWR2UHJlZmVycmVkTGlmZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4QWR2VmFsaWRMaWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeEF1dG9ub21vdXNGbGFnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppYV9wcmVmZXJlZF9saWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppYV92YWxpZF9saWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICppYV9vbmxpbmtfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICppYV9hdXRvbm9tb3VzX2ZsYWcpCit7CisKKyAgICAvKkNvcHkgYWxsIHRoZSBmbGFncyovCisgICAgKmlwQWRkcmVzc1ByZWZpeEFkdlByZWZlcnJlZExpZmV0aW1lID0gKmlhX3ByZWZlcmVkX2xpZmV0aW1lOworICAgICppcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lID0gKmlhX3ZhbGlkX2xpZmV0aW1lOworICAgICppcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnID0gKmlhX29ubGlua19mbGFnOworICAgICppcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZyA9ICppYV9hdXRvbm9tb3VzX2ZsYWc7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9pcGFkZHJlc3NfcHJlZml4X29yaWdpbl9jb3B5KHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4T3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciBpYV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcEFkZHJlc3NBZGRyVHlwZSkKK3sKKyAgICBpZihpcEFkZHJlc3NBZGRyVHlwZSA9PSBJTkVUQUREUkVTU1RZUEVfSVBWNCl7CisgICAgICAgaWYoaWFfb3JpZ2luID09IDYpIC8qUmFuZG9tKi8KKyAgICAgICAgICAoKmlwQWRkcmVzc1ByZWZpeE9yaWdpbikgPSAzIC8qSVBBRERSRVNTUFJFRklYT1JJR0lOVENfV0VMTEtOT1dOKi87CisgICAgICAgZWxzZQorICAgICAgICAgICgqaXBBZGRyZXNzUHJlZml4T3JpZ2luKSA9IGlhX29yaWdpbjsKKyAgICB9IGVsc2UgeworICAgICAgIGlmKGlhX29yaWdpbiA9PSA1KSB7IC8qTGluayBMYXllciovCisgICAgICAgICAgaWYoIWZsYWdzKSAvKkdsb2JhbCBhZGRyZXNzIGFzc2lnbmVkIGJ5IHJvdXRlciBhZHYqLworICAgICAgICAgICAgICgqaXBBZGRyZXNzUHJlZml4T3JpZ2luKSA9IDUgLypJUEFERFJFU1NQUkVGSVhPUklHSU5UQ19ST1VURVJBRFYqLzsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgKCppcEFkZHJlc3NQcmVmaXhPcmlnaW4pID0gMyAvKklQQUREUkVTU1BSRUZJWE9SSUdJTlRDX1dFTExLTk9XTiovOworICAgICAgIH0KKyAgICAgICBlbHNlIGlmKGlhX29yaWdpbiA9PSA2KSAvKlJhbmRvbSovCisgICAgICAgICAgKCppcEFkZHJlc3NQcmVmaXhPcmlnaW4pID0gNSAvKklQQUREUkVTU1BSRUZJWE9SSUdJTlRDX1JPVVRFUkFEViovOworICAgICAgIGVsc2UKKyAgICAgICAgICAoKmlwQWRkcmVzc1ByZWZpeE9yaWdpbikgPSBpYV9vcmlnaW47CisgICAgfQorICAgIHJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMKaW5kZXggYjE5Nzg2ZC4uNTdmYjliYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYwpAQCAtMTM1LDcgKzEzNSw4IEBACiAgICAgc3RydWN0IGlmcmVxICAgKmlmcnA7CiAgICAgc3RydWN0IHNvY2thZGRyIHNhdmVfYWRkcjsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKiBzaTsKLSAgICBuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnk7CisgICAgc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvIGFkZHJfaW5mbzsKKyAgICBpbl9hZGRyX3QgICAgICAgaXB2YWw7CiAgICAgX2lvY3RsX2V4dHJhcyAgICAgICAgICAgKmV4dHJhczsKIAogICAgIGlmICgoc2QgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCkpIDwgMCkgewpAQCAtMTU0LDkgKzE1NSwxOCBAQAogCiAgICAgaWZycCA9IGlmYy5pZmNfcmVxOwogICAgIGZvcihpPTA7IGkgPCBpbnRlcmZhY2VzOyArK2ksICsraWZycCkgeworICAgICAgICBuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnksICpiY2FzdGVudHJ5ID0gTlVMTDsKIAogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLAogICAgICAgICAgICAgICAgICAgICAiIGludGVyZmFjZSAlZCwgJXNcbiIsIGksIGlmcnAtPmlmcl9uYW1lKSk7CisKKyAgICAgICAgaWYgKEFGX0lORVQgIT0gaWZycC0+aWZyX2FkZHIuc2FfZmFtaWx5KSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiBza2lwcGluZyAlczsgbm9uIEFGX0lORVQgZmFtaWx5ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaWZycC0+aWZyX25hbWUsIGlmcnAtPmlmcl9hZGRyLnNhX2ZhbWlseSkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICAvKgogICAgICAgICAgKi8KICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfY3JlYXRlKCk7CkBAIC0xODEsOSArMTkxLDkgQEAKICAgICAgICAgLyoKICAgICAgICAgICogc2V0IGluZGV4ZXMKICAgICAgICAgICovCi0gICAgICAgIG5ldHNubXBfYXNzZXJ0KEFGX0lORVQgPT0gaWZycC0+aWZyX2FkZHIuc2FfZmFtaWx5KTsKICAgICAgICAgc2kgPSAoc3RydWN0IHNvY2thZGRyX2luICopICZpZnJwLT5pZnJfYWRkcjsKICAgICAgICAgZW50cnktPmlhX2FkZHJlc3NfbGVuID0gc2l6ZW9mKHNpLT5zaW5fYWRkci5zX2FkZHIpOworICAgICAgICBpcHZhbCA9IHNpLT5zaW5fYWRkci5zX2FkZHI7CiAgICAgICAgIG1lbWNweShlbnRyeS0+aWFfYWRkcmVzcywgJnNpLT5zaW5fYWRkci5zX2FkZHIsCiAgICAgICAgICAgICAgICBlbnRyeS0+aWFfYWRkcmVzc19sZW4pOwogCkBAIC0yMjAsNiArMjMwLDI2IEBACiAgICAgICAgIH0KIAogICAgICAgICAvKgorICAgICAgICAgKiBnZXQgYnJvYWRjYXN0CisgICAgICAgICAqLworICAgICAgICBtZW1zZXQoJmFkZHJfaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBhZGRyZXNzX2ZsYWdfaW5mbykpOworI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCisgICAgICAgIGFkZHJfaW5mbyA9IG5ldHNubXBfYWNjZXNzX290aGVyX2luZm9fZ2V0KGVudHJ5LT5pZl9pbmRleCwgQUZfSU5FVCk7CisgICAgICAgIGlmKGFkZHJfaW5mby5iY2FzdGZsZykgeworICAgICAgICAgICBiY2FzdGVudHJ5ID0gbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICAgICBpZihOVUxMID09IGJjYXN0ZW50cnkpIHsKKyAgICAgICAgICAgICAgcmMgPSAtMzsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgIH0KKyAgICAgICAgICAgYmNhc3RlbnRyeS0+aWZfaW5kZXggPSBlbnRyeS0+aWZfaW5kZXg7CisgICAgICAgICAgIGJjYXN0ZW50cnktPm5zX2lhX2luZGV4ID0gKytpZHhfb2Zmc2V0OworICAgICAgICAgICBiY2FzdGVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9IHNpemVvZihhZGRyX2luZm8uYWRkcik7CisgICAgICAgICAgIG1lbWNweShiY2FzdGVudHJ5LT5pYV9hZGRyZXNzLCAmYWRkcl9pbmZvLmFkZHIsCisgICAgICAgICAgICAgICAgICBiY2FzdGVudHJ5LT5pYV9hZGRyZXNzX2xlbik7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIC8qCiAgICAgICAgICAqIGdldCBuZXRtYXNrCiAgICAgICAgICAqLwogICAgICAgICBpZnJwLT5pZnJfYWRkciA9IHNhdmVfYWRkcjsKQEAgLTIzMyw2ICsyNjMsOSBAQAogICAgICAgICBzaSA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgJmlmcnAtPmlmcl9hZGRyOwogICAgICAgICBlbnRyeS0+aWFfcHJlZml4X2xlbiA9CiAgICAgICAgICAgICBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X3ByZWZpeF9sZW4oc2ktPnNpbl9hZGRyLnNfYWRkcik7CisgICAgICAgIGlmKGJjYXN0ZW50cnkpCisgICAgICAgICAgIGJjYXN0ZW50cnktPmlhX3ByZWZpeF9sZW4gPSBlbnRyeS0+aWFfcHJlZml4X2xlbjsKKwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIGdldCBmbGFncwpAQCAtMjQ2LDcgKzI3OSwxMiBAQAogICAgICAgICB9CiAgICAgICAgIGV4dHJhcy0+ZmxhZ3MgPSBpZnJwLT5pZnJfZmxhZ3M7CiAKLSAgICAgICAgZW50cnktPmlhX3R5cGUgPSBJUEFERFJFU1NUWVBFX1VOSUNBU1Q7IC8qIGFzc3VtZSB1bmljYXN0PyAqLworICAgICAgICBpZihiY2FzdGVudHJ5KQorICAgICAgICAgICBiY2FzdGVudHJ5LT5pYV90eXBlID0gSVBBRERSRVNTVFlQRV9CUk9BRENBU1Q7CisgICAgICAgIGlmKGFkZHJfaW5mby5hbnljYXN0ZmxnKQorICAgICAgICAgICBlbnRyeS0+aWFfdHlwZSA9IElQQUREUkVTU1RZUEVfQU5ZQ0FTVDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICBlbnRyeS0+aWFfdHlwZSA9IElQQUREUkVTU1RZUEVfVU5JQ0FTVDsKIAogICAgICAgICAvKiogZW50cnktPmlhX3ByZWZpeF9vaWQgPyAqLwogCkBAIC0yNTYsMTIgKzI5NCwyMyBAQAogICAgICAgICAgKiAgIGFsd2F5cyBwcmVmZXJyZWQoMSkuCiAgICAgICAgICAqLwogICAgICAgICBlbnRyeS0+aWFfc3RhdHVzID0gSVBBRERSRVNTU1RBVFVTVENfUFJFRkVSUkVEOworICAgICAgICBpZihiY2FzdGVudHJ5KQorICAgICAgICAgICBiY2FzdGVudHJ5LT5pYV9zdGF0dXMgPSBJUEFERFJFU1NTVEFUVVNUQ19QUkVGRVJSRUQ7CiAKICAgICAgICAgLyoKICAgICAgICAgICogY2FuIHdlIGZpZ3VyZSBvdXQgaWYgYW4gYWRkcmVzcyBpcyBmcm9tIERIQ1A/CiAgICAgICAgICAqIHVzZSBtYW51YWwgdW50aWwgdGhlbi4uLgogICAgICAgICAgKi8KLSAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX01BTlVBTDsKKyAgICAgICAgaWYoSVNfQVBJUEEoaXB2YWwpKSB7CisgICAgICAgICAgIGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19SQU5ET007CisgICAgICAgICAgIGlmKGJjYXN0ZW50cnkpCisgICAgICAgICAgICAgIGJjYXN0ZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX1JBTkRPTTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX01BTlVBTDsKKyAgICAgICAgICAgaWYoYmNhc3RlbnRyeSkKKyAgICAgICAgICAgICAgYmNhc3RlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTUFOVUFMOworICAgICAgICB9CiAKICAgICAgICAgREVCVUdJRigiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiKSB7CiAgICAgICAgICAgICBERUJVR01TR1RfTkMoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsCkBAIC0yNzksOCArMzI4LDE3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGFkZCBlbnRyeSB0byBjb250YWluZXIKICAgICAgICAgICovCi0gICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkKLSAgICAgICAgeworICAgICAgICBpZihiY2FzdGVudHJ5KXsKKyAgICAgICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgYmNhc3RlbnRyeSkgPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwiZXJyb3Igd2l0aCBpcGFkZHJlc3NfZW50cnk6IGluc2VydCBicm9hZGNhc3QgZW50cnkgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOworICAgICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9mcmVlKGJjYXN0ZW50cnkpOworICAgICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJjYXN0ZW50cnkgPSBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSkgPCAwKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCJlcnJvciB3aXRoIGlwYWRkcmVzc19lbnRyeTogaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9mcmVlKGVudHJ5KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzY4LDEwICs0MjYsMTMgQEAKICAgICAgICAgZm9yKGs9MDtrPGo7KytrKQogICAgICAgICAgICAgaWYgKGFsaWFzX2xpc3Rba10gPT0gaSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKGsgPT0gaikKKyAgICAgICAgaWYgKGsgPT0gaikgeworICAgICAgICAgICAgZnJlZShhbGlhc19saXN0KTsKICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CiAgICAgfQogCisgICAgZnJlZShhbGlhc19saXN0KTsKICAgICByZXR1cm4gaW50ZXJmYWNlcyArIDE7CiB9CiAKQEAgLTU5MSw0ICs2NTIsMyBAQAogICAgIGlmKHVua25vd24pCiAgICAgICAgIERFQlVHTVNHVF9OQygoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwiICB1bmtub3duIDB4JXhcbiIsIHVua25vd24pKTsKIH0KLQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oCmluZGV4IGE3YTBlYTIuLmZjNmU3NzEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmgKQEAgLTIsNiArMiwxNyBAQAogZXh0ZXJuICAgICAgICAgICJDIiB7CiAjZW5kaWYKIAorLyoKKyAqIHN0cnVjdCBmb3IgbmV0bGluayBleHRyYXMKKyAqLworc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvIHsKKyAgICBpbnQgYmNhc3RmbGc7CisgICAgaW50IGFueWNhc3RmbGc7CisgICAgaW5fYWRkcl90IGFkZHI7Cit9OworIAorI2RlZmluZSBJU19BUElQQShhKSAgKCgoaW5fYWRkcl90KShhIDw8IDE2KSkgPT0gMHhGRUE5MDAwMCkKKwogaW50CiBfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfY29udGFpbmVyX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlkeF9vZmZzZXQpOwpAQCAtMTMsNiArMjQsOCBAQAogaW50CiBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfaW9jdGxfZ2V0X2ludGVyZmFjZV9jb3VudChpbnQgc2QsIHN0cnVjdCBpZmNvbmYgKiBpZmMpOwogCitzdHJ1Y3QgYWRkcmVzc19mbGFnX2luZm8KK25ldHNubXBfYWNjZXNzX290aGVyX2luZm9fZ2V0KGludCBpbmRleCwgaW50IGZhbWlseSk7CiAKIC8qCiAgKiBzdHJ1Y3QgaW9jdGwgZm9yIGFyY2hfZGF0YQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jCmluZGV4IGU3OGM4YmQuLjhiMzRlODYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMKQEAgLTEyLDYgKzEyLDggQEAKICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KIAogI2luY2x1ZGUgImlwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9jb25zdGFudHMuaCIKKyNpbmNsdWRlICJpcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uc3RhbnRzLmgiCisjaW5jbHVkZSAibWliZ3JvdXAvdXRpbF9mdW5jcy5oIgogCiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KQEAgLTE5LDEyICsyMSwyNyBAQAogI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKyNpZiBkZWZpbmVkKEhBVkVfTElOVVhfUlRORVRMSU5LX0gpCisjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgogI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgorI2lmZGVmIFJUTUdSUF9JUFY2X1BSRUZJWAorI2RlZmluZSBTVVBQT1JUX1BSRUZJWF9GTEFHUyAxCisjZW5kaWYgLyogUlRNR1JQX0lQVjZfUFJFRklYICovCisjZW5kaWYgLyogSEFWRV9MSU5VWF9SVE5FVExJTktfSCAqLwogI2VuZGlmCiAKICNpbmNsdWRlICJpcGFkZHJlc3NfaW9jdGwuaCIKLQorI2lmZGVmIFNVUFBPUlRfUFJFRklYX0ZMQUdTCitleHRlcm4gcHJlZml4X2NieCAqcHJlZml4X2hlYWRfbGlzdDsKKyNlbmRpZgogaW50IF9sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KTsKKyNpZmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICitpbnQKK25ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19leHRyYV9wcmVmaXhfaW5mbyhpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICpwcmVmZXJlZGx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nICp2YWxpZGx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmFkZHIpOworI2VuZGlmCiAKIC8qCiAgKiBpbml0aWFsaXplIGFyY2ggc3BlY2lmaWMgc3RvcmFnZQpAQCAtMTc5LDYgKzE5NiwxMiBAQAogaW50CiBfbG9hZF92NihuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBpbnQgaWR4X29mZnNldCkKIHsKKyNpZm5kZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAorICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgImNhbm5vdCBnZXQgaXAgYWRkcmVzcyBpbmZvcm1hdGlvbiIKKyAgICAgICAgICAgICAgICAiYXMgbmV0bGluayBzb2NrZXQgaXMgbm90IGF2YWlsYWJsZVxuIikpOworICAgIHJldHVybiAtMTsKKyNlbHNlCiAgICAgRklMRSAgICAgICAgICAgKmluOwogICAgIGNoYXIgICAgICAgICAgICBsaW5lWzgwXSwgYWRkcls0MF07CiAgICAgY2hhciAgICAgICAgICAgIGlmX25hbWVbSUZOQU1TSVorMV07LyogKzEgZm9yICdcMCcgYmVjYXVzZSBvZiB0aGUgdWdseSBzc2NhbmYgYmVsb3cgKi8gCkBAIC0xODcsMjQgKzIxMCwxNSBAQAogICAgIHNpemVfdCAgICAgICAgICBpbl9sZW4sIG91dF9sZW47CiAgICAgbmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5OwogICAgIF9pb2N0bF9leHRyYXMgICAgICAgICAgICpleHRyYXM7Ci0gICAgc3RhdGljIGludCAgICAgIGxvZ19vcGVuX2VyciA9IDE7CisgICAgc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvIGFkZHJfaW5mbzsKICAgICAKICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CiAKICNkZWZpbmUgUFJPQ0ZJTEUgIi9wcm9jL25ldC9pZl9pbmV0NiIKICAgICBpZiAoIShpbiA9IGZvcGVuKFBST0NGSUxFLCAiciIpKSkgewotICAgICAgICBpZiAoMSA9PSBsb2dfb3Blbl9lcnIpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImNvdWxkIG5vdCBvcGVuICIgUFJPQ0ZJTEUgIlxuIik7Ci0gICAgICAgICAgICBsb2dfb3Blbl9lcnIgPSAwOwotICAgICAgICB9CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsImNvdWxkIG5vdCBvcGVuICIgUFJPQ0ZJTEUgIlxuIikpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQotICAgIC8qCi0gICAgICogaWYgd2UgaGFkbid0IGJlZW4gYWJsZSB0byBvcGVuIGZpbGUgYW5kIHR1cm5lZCBvZiBlcnIgbG9nZ2luZywKLSAgICAgKiB0dXJuIGl0IGJhY2sgb24gbm93IHRoYXQgd2Ugb3BlbmVkIHRoZSBmaWxlLgotICAgICAqLwotICAgIGlmICgwID09IGxvZ19vcGVuX2VycikKLSAgICAgICAgbG9nX29wZW5fZXJyID0gMTsKIAogICAgIC8qCiAgICAgICogYWRkcmVzcyBpbmRleCBwcmVmaXhfbGVuIHNjb3BlIHN0YXR1cyBpZl9uYW1lCkBAIC0yNDEsNiArMjU1LDcgQEAKICAgICAgICAgaW5fbGVuID0gZW50cnktPmlhX2FkZHJlc3NfbGVuID0gc2l6ZW9mKGVudHJ5LT5pYV9hZGRyZXNzKTsKICAgICAgICAgbmV0c25tcF9hc3NlcnQoMTYgPT0gaW5fbGVuKTsKICAgICAgICAgb3V0X2xlbiA9IDA7CisgICAgICAgIGVudHJ5LT5mbGFncyA9IGZsYWdzOwogICAgICAgICBidWYgPSBlbnRyeS0+aWFfYWRkcmVzczsKICAgICAgICAgaWYoMSAhPSBuZXRzbm1wX2hleF90b19iaW5hcnkoJmJ1ZiwgJmluX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9sZW4sIDAsIGFkZHIsICI6IikpIHsKQEAgLTI2OCw2ICsyODMsOCBAQAogICAgICAgICAgKiBldmVyeSB0aW1lIGl0IGlzIGNhbGxlZC4KICAgICAgICAgICovCiAgICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9pbmRleF9maW5kKGlmX25hbWUpOworICAgICAgICBtZW1zZXQoJmFkZHJfaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBhZGRyZXNzX2ZsYWdfaW5mbykpOworICAgICAgICBhZGRyX2luZm8gPSBuZXRzbm1wX2FjY2Vzc19vdGhlcl9pbmZvX2dldChlbnRyeS0+aWZfaW5kZXgsIEFGX0lORVQ2KTsKIAogICAgICAgICAvKgogICAgICAgICAgICNkZWZpbmUgSVBBRERSRVNTU1RBVFVTVENfUFJFRkVSUkVEICAxCkBAIC0yNzgsOCArMjk1LDEyIEBACiAgICAgICAgICAgI2RlZmluZSBJUEFERFJFU1NTVEFUVVNUQ19URU5UQVRJVkUgIDYKICAgICAgICAgICAjZGVmaW5lIElQQUREUkVTU1NUQVRVU1RDX0RVUExJQ0FURSAgNwogICAgICAgICAqLwotICAgICAgICBpZihmbGFncyAmIElGQV9GX1BFUk1BTkVOVCkKKyAgICAgICAgaWYoKGZsYWdzICYgSUZBX0ZfUEVSTUFORU5UKSB8fCAoIWZsYWdzKSkKICAgICAgICAgICAgIGVudHJ5LT5pYV9zdGF0dXMgPSBJUEFERFJFU1NTVEFUVVNUQ19QUkVGRVJSRUQ7IC8qID8/ICovCisjaWZkZWYgSUZBX0ZfVEVNUE9SQVJZCisgICAgICAgIGVsc2UgaWYoZmxhZ3MgJiBJRkFfRl9URU1QT1JBUlkpCisgICAgICAgICAgICBlbnRyeS0+aWFfc3RhdHVzID0gSVBBRERSRVNTU1RBVFVTVENfUFJFRkVSUkVEOyAvKiA/PyAqLworI2VuZGlmCiAgICAgICAgIGVsc2UgaWYoZmxhZ3MgJiBJRkFfRl9ERVBSRUNBVEVEKQogICAgICAgICAgICAgZW50cnktPmlhX3N0YXR1cyA9IElQQUREUkVTU1NUQVRVU1RDX0RFUFJFQ0FURUQ7CiAgICAgICAgIGVsc2UgaWYoZmxhZ3MgJiBJRkFfRl9URU5UQVRJVkUpCkBAIC0yOTQsNyArMzE1LDcgQEAKICAgICAgICAgICogaWYgaXQncyBub3QgbXVsdGksIGl0IG11c3QgYmUgdW5pLgogICAgICAgICAgKiAgKGFuIGlwdjYgYWRkcmVzcyBpcyBuZXZlciBicm9hZGNhc3QpCiAgICAgICAgICAqLwotICAgICAgICBpZiAoSU42X0lTX0FERFJfTVVMVElDQVNUKGVudHJ5LT5pYV9hZGRyZXNzKSkKKyAgICAgICAgaWYoYWRkcl9pbmZvLmFueWNhc3RmbGcpCiAgICAgICAgICAgICBlbnRyeS0+aWFfdHlwZSA9IElQQUREUkVTU1RZUEVfQU5ZQ0FTVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW50cnktPmlhX3R5cGUgPSBJUEFERFJFU1NUWVBFX1VOSUNBU1Q7CkBAIC0zMTQsMTMgKzMzNSw0OCBAQAogICAgICAgICAgKgogICAgICAgICAgKiBhcmUgJ2xvY2FsJyBhZGRyZXNzIGFzc2lnbmVkIGJ5IGxpbmsgbGF5ZXI/PwogICAgICAgICAgKi8KLSAgICAgICAgaWYgKElONl9JU19BRERSX0xJTktMT0NBTChlbnRyeS0+aWFfYWRkcmVzcykgfHwKLSAgICAgICAgICAgIElONl9JU19BRERSX1NJVEVMT0NBTChlbnRyeS0+aWFfYWRkcmVzcykpCi0gICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTElOS0xBWUVSOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTUFOVUFMOworICAgICAgICAgaWYgKCFmbGFncykKKyAgICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTElOS0xBWUVSOworI2lmZGVmIElGQV9GX1RFTVBPUkFSWQorICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBJRkFfRl9URU1QT1JBUlkpCisgICAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX1JBTkRPTTsKKyNlbmRpZgorICAgICAgICAgZWxzZSBpZiAoSU42X0lTX0FERFJfTElOS0xPQ0FMKGVudHJ5LT5pYV9hZGRyZXNzKSkKKyAgICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTElOS0xBWUVSOworICAgICAgICAgZWxzZQorICAgICAgICAgICAgIGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19NQU5VQUw7CisKKyAgICAgICAgIGlmKGVudHJ5LT5pYV9vcmlnaW4gPT0gSVBBRERSRVNTT1JJR0lOVENfTElOS0xBWUVSKQorICAgICAgICAgICAgZW50cnktPmlhX3N0b3JhZ2V0eXBlID0gU1RPUkFHRVRZUEVfUEVSTUFORU5UOwogCiAgICAgICAgIC8qIHh4eC1ya3M6IHdoYXQgY2FuIHdlIGRvIHdpdGggc2NvcGU/ICovCisjaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAorICAgICAgICBpZihuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZXh0cmFfcHJlZml4X2luZm8oZW50cnktPmlmX2luZGV4LCAmZW50cnktPmlhX3ByZWZlcmVkX2xpZmV0aW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsJmVudHJ5LT5pYV92YWxpZF9saWZldGltZSwgYWRkcikgPCAwKXsKKyAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgInVuYWJsZSB0byBmZXRjaCBleHRyYSBwcmVmaXggaW5mb1xuIikpOworICAgICAgICB9CisjZWxzZQorICAgICAgICBlbnRyeS0+aWFfcHJlZmVyZWRfbGlmZXRpbWUgPSAwOworICAgICAgICBlbnRyeS0+aWFfdmFsaWRfbGlmZXRpbWUgPSAwOworI2VuZGlmCisjaWZkZWYgU1VQUE9SVF9QUkVGSVhfRkxBR1MKKyAgICAgICAgeworICAgICAgICBwcmVmaXhfY2J4ICAgICAgcHJlZml4X3ZhbDsKKyAgICAgICAgbWVtc2V0KCZwcmVmaXhfdmFsLCAwLCBzaXplb2YocHJlZml4X2NieCkpOworICAgICAgICBpZihuZXRfc25tcF9maW5kX3ByZWZpeF9pbmZvKCZwcmVmaXhfaGVhZF9saXN0LCBhZGRyLCAmcHJlZml4X3ZhbCkgPCAwKSB7CisgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJ1bmFibGUgdG8gZmluZCBpbmZvXG4iKSk7CisgICAgICAgICAgIGVudHJ5LT5pYV9vbmxpbmtfZmxhZyA9IDE7ICAvKlNldCBieSBkZWZhdWx0IGFzIHRydWUqLworICAgICAgICAgICBlbnRyeS0+aWFfYXV0b25vbW91c19mbGFnID0gMjsgLypTZXQgYnkgZGVmYXVsdCBhcyBmYWxzZSovCisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgZW50cnktPmlhX29ubGlua19mbGFnID0gcHJlZml4X3ZhbC5pcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnOyAKKyAgICAgICAgICAgZW50cnktPmlhX2F1dG9ub21vdXNfZmxhZyA9IHByZWZpeF92YWwuaXBBZGRyZXNzUHJlZml4QXV0b25vbW91c0ZsYWc7CisgICAgICAgIH0KKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgZW50cnktPmlhX29ubGlua19mbGFnID0gMTsgIC8qU2V0IGJ5IGRlZmF1bHQgYXMgdHJ1ZSovCisgICAgICAgIGVudHJ5LT5pYV9hdXRvbm9tb3VzX2ZsYWcgPSAyOyAvKlNldCBieSBkZWZhdWx0IGFzIGZhbHNlKi8KKyNlbmRpZgogCiAgICAgICAgIC8qCiAgICAgICAgICAqIGFkZCBlbnRyeSB0byBjb250YWluZXIKQEAgLTMzOSw0ICszOTUsMTkwIEBACiAKICAgICByZXR1cm4gaWR4X29mZnNldDsKIH0KKworc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvCituZXRzbm1wX2FjY2Vzc19vdGhlcl9pbmZvX2dldChpbnQgaW5kZXgsIGludCBmYW1pbHkpCit7CisgICBzdHJ1Y3QgeworICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgbjsKKyAgICAgICAgICAgc3RydWN0IGlmYWRkcm1zZyByOworICAgICAgICAgICBjaGFyICAgYnVmWzEwMjRdOworICAgfSByZXE7CisgICBzdHJ1Y3QgYWRkcmVzc19mbGFnX2luZm8gYWRkcjsKKyAgIHN0cnVjdCBydGF0dHIgICAgKnJ0YTsKKyAgIGludCAgICBzdGF0dXM7CisgICBjaGFyICAgYnVmWzE2Mzg0XTsKKyAgIHN0cnVjdCBubG1zZ2hkciAgKm5sbXA7CisgICBzdHJ1Y3QgaWZhZGRybXNnICpydG1wOworICAgc3RydWN0IHJ0YXR0ciAgICAqcnRhdHA7CisgICBpbnQgICAgcnRhdHRybGVuOworICAgaW50ICAgIHNkOworCisgICBtZW1zZXQoJmFkZHIsIDAsIHNpemVvZihzdHJ1Y3QgYWRkcmVzc19mbGFnX2luZm8pKTsKKyAgIHNkID0gc29ja2V0KFBGX05FVExJTkssIFNPQ0tfREdSQU0sIE5FVExJTktfUk9VVEUpOworICAgaWYoc2QgPCAwKSB7CisgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IG9wZW4gbmV0bGluayBzb2NrZXRcbiIpOworICAgICAgcmV0dXJuIGFkZHI7CisgICB9CisKKyAgIG1lbXNldCgmcmVxLCAwLCBzaXplb2YocmVxKSk7CisgICByZXEubi5ubG1zZ19sZW4gPSBOTE1TR19MRU5HVEgoc2l6ZW9mKHN0cnVjdCBpZmFkZHJtc2cpKTsKKyAgIHJlcS5uLm5sbXNnX2ZsYWdzID0gTkxNX0ZfUkVRVUVTVCB8IE5MTV9GX1JPT1Q7CisgICByZXEubi5ubG1zZ190eXBlID0gUlRNX0dFVEFERFI7CisgICByZXEuci5pZmFfZmFtaWx5ID0gZmFtaWx5OworICAgcnRhID0gKHN0cnVjdCBydGF0dHIgKikoKChjaGFyICopJnJlcSkgKyBOTE1TR19BTElHTihyZXEubi5ubG1zZ19sZW4pKTsKKyAgIGlmKGZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgcnRhLT5ydGFfbGVuID0gUlRBX0xFTkdUSCg0KTsKKyAgIGVsc2UKKyAgICAgIHJ0YS0+cnRhX2xlbiA9IFJUQV9MRU5HVEgoMTYpOworCisgICAgc3RhdHVzID0gc2VuZChzZCwgJnJlcSwgcmVxLm4ubmxtc2dfbGVuLCAwKTsKKyAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IHNlbmQgbmV0bGluayByZXF1ZXN0XG4iKTsKKyAgICAgICAgcmV0dXJuIGFkZHI7CisgICAgfQorCisgICAgc3RhdHVzID0gcmVjdihzZCwgYnVmLCBzaXplb2YoYnVmKSwgMCk7CisgICAgaWYgKHN0YXR1cyA8IDApIHsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJjb3VsZCBub3QgcmVjaWV2ZSBuZXRsaW5rIHJlcXVlc3RcbiIpOworICAgICAgICByZXR1cm4gYWRkcjsKKyAgICB9CisKKyAgICBpZihzdGF0dXMgPT0gMCkgeworICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAibm90aGluZyB0byByZWFkXG4iKTsKKyAgICAgICByZXR1cm4gYWRkcjsKKyAgICB9CisKKyAgICBmb3IobmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIgKilidWY7IHN0YXR1cyA+IHNpemVvZigqbmxtcCk7KSB7CisgICAgICAgIGludCBsZW4gPSBubG1wLT5ubG1zZ19sZW47CisgICAgICAgIGludCByZXFfbGVuID0gbGVuIC0gc2l6ZW9mKCpubG1wKTsKKworICAgICAgICBpZiAocmVxX2xlbiA8IDAgfHwgbGVuID4gc3RhdHVzKSB7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImludmFsaWQgbmV0bGluayBtZXNzYWdlXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBhZGRyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFOTE1TR19PSyhubG1wLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImludmFsaWQgTkxNU0cgbWVzc2FnZVxuIik7CisgICAgICAgICAgICByZXR1cm4gYWRkcjsKKyAgICAgICAgfQorICAgICAgICBydG1wID0gKHN0cnVjdCBpZmFkZHJtc2cgKilOTE1TR19EQVRBKG5sbXApOworICAgICAgICBydGF0cCA9IChzdHJ1Y3QgcnRhdHRyICopSUZBX1JUQShydG1wKTsKKyAgICAgICAgcnRhdHRybGVuID0gSUZBX1BBWUxPQUQobmxtcCk7CisgICAgICAgIGlmKGluZGV4ID09IHJ0bXAtPmlmYV9pbmRleCl7CisgICAgICAgICAgIGZvciAoOyBSVEFfT0socnRhdHAsIHJ0YXR0cmxlbik7IHJ0YXRwID0gUlRBX05FWFQocnRhdHAsIHJ0YXR0cmxlbikpIHsKKyAgICAgICAgICAgICAgICBpZihydGF0cC0+cnRhX3R5cGUgPT0gSUZBX0JST0FEQ0FTVCl7CisgICAgICAgICAgICAgICAgICAgYWRkci5hZGRyID0gKChzdHJ1Y3QgaW5fYWRkciAqKVJUQV9EQVRBKHJ0YXRwKSktPnNfYWRkcjsKKyAgICAgICAgICAgICAgICAgICBhZGRyLmJjYXN0ZmxnID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYocnRhdHAtPnJ0YV90eXBlID09IElGQV9BTllDQVNUKXsKKyAgICAgICAgICAgICAgICAgICBhZGRyLmFkZHIgPSAoKHN0cnVjdCBpbl9hZGRyICopUlRBX0RBVEEocnRhdHApKS0+c19hZGRyOworICAgICAgICAgICAgICAgICAgIGFkZHIuYW55Y2FzdGZsZyA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzIC09IE5MTVNHX0FMSUdOKGxlbik7CisgICAgICAgIG5sbXAgPSAoc3RydWN0IG5sbXNnaGRyKikoKGNoYXIqKW5sbXAgKyBOTE1TR19BTElHTihsZW4pKTsKKyAgICB9CisgICAgY2xvc2Uoc2QpOworICAgIHJldHVybiBhZGRyOwogI2VuZGlmCit9CisKKyNpZmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICitpbnQKK25ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19leHRyYV9wcmVmaXhfaW5mbyhpbnQgaW5kZXgsIHVfbG9uZyAqcHJlZmVyZWRsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyAqdmFsaWRsdCwgY2hhciAqYWRkcikKK3sKKworICAgIHN0cnVjdCB7CisgICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgbmxoZHI7CisgICAgICAgICAgICBzdHJ1Y3QgaWZhZGRybXNnIGlmYWNlaW5mbzsKKyAgICAgICAgICAgIGNoYXIgICBidWZbMTAyNF07CisgICAgfSByZXE7CisKKyAgICBzdHJ1Y3QgcnRhdHRyICAgICAgICAqcnRhOworICAgIGludCAgICAgICAgICAgICAgICAgIHN0YXR1czsKKyAgICBjaGFyICAgICAgICAgICAgICAgICBidWZbMTYzODRdOworICAgIGNoYXIgICAgICAgICAgICAgICAgIHRtcGFkZHJbNDBdOworICAgIHN0cnVjdCBubG1zZ2hkciAgICAgICpubG1wOworICAgIHN0cnVjdCBpZmFkZHJtc2cgICAgICpydG1wOworICAgIHN0cnVjdCBydGF0dHIgICAgICAgICpydGF0cDsKKyAgICBzdHJ1Y3QgaWZhX2NhY2hlaW5mbyAqY2FjaGVfaW5mbzsKKyAgICBzdHJ1Y3QgaW42X2FkZHIgICAgICAqaW42cDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICBydGF0dHJsZW47CisgICAgaW50ICAgICAgICAgICAgICAgICAgc2Q7CisgICAgaW50ICAgICAgICAgICAgICAgICAgcmVxYWRkciA9IDA7CisgICAgc2QgPSBzb2NrZXQoUEZfTkVUTElOSywgU09DS19ER1JBTSwgTkVUTElOS19ST1VURSk7CisgICAgaWYoc2QgPCAwKSB7CisgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBvcGVuIG5ldGxpbmsgc29ja2V0XG4iKTsKKyAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG1lbXNldCgmcmVxLCAwLCBzaXplb2YocmVxKSk7CisgICAgcmVxLm5saGRyLm5sbXNnX2xlbiA9IE5MTVNHX0xFTkdUSChzaXplb2Yoc3RydWN0IGlmYWRkcm1zZykpOworICAgIHJlcS5ubGhkci5ubG1zZ19mbGFncyA9IE5MTV9GX1JFUVVFU1QgfCBOTE1fRl9ST09UOworICAgIHJlcS5ubGhkci5ubG1zZ190eXBlID0gUlRNX0dFVEFERFI7CisgICAgcmVxLmlmYWNlaW5mby5pZmFfZmFtaWx5ID0gQUZfSU5FVDY7CisgICAgcnRhID0gKHN0cnVjdCBydGF0dHIgKikoKChjaGFyICopJnJlcSkgKyBOTE1TR19BTElHTihyZXEubmxoZHIubmxtc2dfbGVuKSk7CisgICAgcnRhLT5ydGFfbGVuID0gUlRBX0xFTkdUSCgxNik7IC8qRm9yIGlwdjYqLworCisgICAgc3RhdHVzID0gc2VuZCAoc2QsICZyZXEsIHJlcS5ubGhkci5ubG1zZ19sZW4sIDApOworICAgIGlmIChzdGF0dXMgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3Qgc2VuZCBuZXRsaW5rIHJlcXVlc3RcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHN0YXR1cyA9IHJlY3YgKHNkLCBidWYsIHNpemVvZihidWYpLCAwKTsKKyAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImNvdWxkIG5vdCByZWNpZXZlIG5ldGxpbmsgcmVxdWVzdFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHN0YXR1cyA9PSAwKSB7CisgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJub3RoaW5nIHRvIHJlYWRcbiIpOworICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZm9yIChubG1wID0gKHN0cnVjdCBubG1zZ2hkciAqKWJ1Zjsgc3RhdHVzID4gc2l6ZW9mKCpubG1wKTsgKXsKKworICAgICAgICBpbnQgbGVuID0gbmxtcC0+bmxtc2dfbGVuOworICAgICAgICBpbnQgcmVxX2xlbiA9IGxlbiAtIHNpemVvZigqbmxtcCk7CisKKyAgICAgICAgaWYgKHJlcV9sZW4gPCAwIHx8IGxlbiA+IHN0YXR1cykgeworICAgICAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJpbnZhbGlkIG5ldGxpbmsgbWVzc2FnZVxuIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIU5MTVNHX09LIChubG1wLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImludmFsaWQgTkxNU0cgbWVzc2FnZVxuIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcnRtcCA9IChzdHJ1Y3QgaWZhZGRybXNnICopTkxNU0dfREFUQShubG1wKTsKKyAgICAgICAgcnRhdHAgPSAoc3RydWN0IHJ0YXR0ciAqKUlGQV9SVEEocnRtcCk7CisgICAgICAgIHJ0YXR0cmxlbiA9IElGQV9QQVlMT0FEKG5sbXApOworICAgICAgICBpZihpbmRleCA9PSBydG1wLT5pZmFfaW5kZXgpIHsKKyAgICAgICAgICAgZm9yICg7IFJUQV9PSyhydGF0cCwgcnRhdHRybGVuKTsgcnRhdHAgPSBSVEFfTkVYVChydGF0cCwgcnRhdHRybGVuKSkgeworICAgICAgICAgICAgICAgIGlmKHJ0YXRwLT5ydGFfdHlwZSA9PSBJRkFfQUREUkVTUykgeworICAgICAgICAgICAgICAgICAgIGluNnAgPSAoc3RydWN0IGluNl9hZGRyICopUlRBX0RBVEEocnRhdHApOworICAgICAgICAgICAgICAgICAgIHNwcmludGYodG1wYWRkciwgIiUwNHglMDR4JTA0eCUwNHglMDR4JTA0eCUwNHglMDR4IiwgTklQNigqaW42cCkpOworICAgICAgICAgICAgICAgICAgIGlmKCFzdHJjbXAodG1wYWRkciAsYWRkcikpCisgICAgICAgICAgICAgICAgICAgICAgIHJlcWFkZHIgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZihydGF0cC0+cnRhX3R5cGUgPT0gSUZBX0NBQ0hFSU5GTykgeworICAgICAgICAgICAgICAgICAgIGNhY2hlX2luZm8gPSAoc3RydWN0IGlmYV9jYWNoZWluZm8gKilSVEFfREFUQShydGF0cCk7CisgICAgICAgICAgICAgICAgICAgaWYocmVxYWRkcikgeworICAgICAgICAgICAgICAgICAgICAgIHJlcWFkZHIgPSAwOworICAgICAgICAgICAgICAgICAgICAgICp2YWxpZGx0ID0gY2FjaGVfaW5mby0+aWZhX3ZhbGlkOworICAgICAgICAgICAgICAgICAgICAgICpwcmVmZXJlZGx0ID0gY2FjaGVfaW5mby0+aWZhX3ByZWZlcmVkOworICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzIC09IE5MTVNHX0FMSUdOKGxlbik7CisgICAgICAgIG5sbXAgPSAoc3RydWN0IG5sbXNnaGRyKikoKGNoYXIqKW5sbXAgKyBOTE1TR19BTElHTihsZW4pKTsKKyAgICB9CisgICAgY2xvc2Uoc2QpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZDhlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMKQEAgLTAsMCArMSwyODYgQEAKKy8qCisgKiAgSVAtTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKgorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmg+CisKKyNpbmNsdWRlICJpcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfY29uc3RhbnRzLmgiCisKKyNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCisjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCisKK3N0YXRpYyBpbnQgX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOworI2lmIGRlZmluZWQoIE5FVFNOTVBfRU5BQkxFX0lQVjYgKQorc3RhdGljIGludCBfbG9hZF92NihuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBpbnQgaWR4X29mZnNldCk7CisjZW5kaWYKKworLyoKKyAqIGluaXRpYWxpemUgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCisgKgorICogQHJldHZhbCAgMDogc3VjY2VzcworICogQHJldHZhbCA8MDogZXJyb3IKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2VudHJ5X2luaXQobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5KQoreworICAgIGluaXRfa2VybmVsX3N1bm9zNSgpOworICAgIHJldHVybiAwOworfQorCisvKgorICogY2xlYW51cCBhcmNoIHNwZWNpZmljIHN0b3JhZ2UKKyAqLwordm9pZAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19lbnRyeV9jbGVhbnVwKG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSkKK3sKKyAgICAvKgorICAgICAqIE5vdGhpbmcgdG8gZG8uCisgICAgICovCit9CisKKy8qCisgKiBjb3B5IGFyY2ggc3BlY2lmaWMgc3RvcmFnZQorICovCitpbnQKK25ldHNubXBfYXJjaF9pcGFkZHJlc3NfZW50cnlfY29weShuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICpyaHMpCit7CisgICAgLyoKKyAgICAgKiBOb3RoaW5nIHRvIGRvLiAKKyAgICAgKi8KKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIGNyZWF0ZSBhIG5ldyBlbnRyeQorICovCitpbnQKK25ldHNubXBfYXJjaF9pcGFkZHJlc3NfY3JlYXRlKG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgREVCVUdNU0dUKCgiYWNjZXNzOmlwYWRkcmVzczpjcmVhdGUiLCAibm90IGFwcGxpY2FibGVcbiIpKTsKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBkZWxldGUgYW4gZW50cnkKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2RlbGV0ZShuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnkpCit7CisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6Y3JlYXRlIiwgIm5vdCBhcHBsaWNhYmxlXG4iKSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qKgorICoKKyAqIEByZXR2YWwgIDAgbm8gZXJyb3JzCisgKiBAcmV0dmFsICEwIGVycm9ycworICovCitpbnQKK25ldHNubXBfYXJjaF9pcGFkZHJlc3NfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgcmMgPSAwLCBpZHhfb2Zmc2V0ID0gMDsKKworICAgIGlmICghKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19JUEFERFJFU1NfTE9BRF9JUFY2X09OTFkpKSB7CisgICAgICAgIHJjID0gX2xvYWRfdjQoY29udGFpbmVyLCBpZHhfb2Zmc2V0KTsKKyAgICAgICAgaWYocmMgPCAwKSB7CisgICAgICAgICAgICB1X2ludCBmbGFncyA9IE5FVFNOTVBfQUNDRVNTX0lQQUREUkVTU19GUkVFX0tFRVBfQ09OVEFJTkVSOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOworICAgICAgICB9CisgICAgfQorCisjaWYgZGVmaW5lZCggTkVUU05NUF9FTkFCTEVfSVBWNiApCisKKyAgICBpZiAoIShsb2FkX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfSVBBRERSRVNTX0xPQURfSVBWNF9PTkxZKSkgeworICAgICAgICBpZiAocmMgPCAwKQorICAgICAgICAgICAgcmMgPSAwOworCisgICAgICAgIGlkeF9vZmZzZXQgPSByYzsKKworICAgICAgICByYyA9IF9sb2FkX3Y2KGNvbnRhaW5lciwgaWR4X29mZnNldCk7CisgICAgICAgIGlmKHJjIDwgMCkgeworICAgICAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19JUEFERFJFU1NfRlJFRV9LRUVQX0NPTlRBSU5FUjsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19jb250YWluZXJfZnJlZShjb250YWluZXIsIGZsYWdzKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiByZXR1cm4gbm8gZXJyb3JzICgwKSBpZiB3ZSBmb3VuZCBhbnkgaW50ZXJmYWNlcworICAgICAqLworICAgIGlmKHJjID4gMCkKKyAgICAgICAgcmMgPSAwOworICAgIHJldHVybiByYzsKK30KKworLyoKKyAqIEByZXR2YWwgPj1pZHhfb2Zmc2V0IG9rCisgKiBAcmV0dmFsIC0xIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yCisgKiBAcmV0dmFsIC0yIGludGVyZmFjZSBsb29rdXAgZXJyb3IKKyAqIEByZXR2YWwgLTMgY29udGFpbmVyIGVycm9yCisgKi8KK3N0YXRpYyBpbnQKK19sb2FkX3Y0KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KQoreworICAgIG1pYjJfaXBBZGRyRW50cnlfdCAgICAgIGlwYWU7CisgICAgbmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5OworICAgIHJlcV9lICAgICAgICAgICAgICAgICAgIHJlcSA9IEdFVF9GSVJTVDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICByYyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCAibG9hZGluZyB2NFxuIikpOworICAgIHdoaWxlICgocmMgPSBnZXRNaWJzdGF0KE1JQl9JUF9BRERSLCAmaXBhZSwgc2l6ZW9mKGlwYWUpLCByZXEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdldF9ldmVyeXRoaW5nLCBOVUxMKSkgPT0gMCkgeworICAgICAgICByZXEgPSBHRVRfTkVYVDsKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfY3JlYXRlKCk7CisgICAgICAgIGlmIChlbnRyeSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuICgtMSk7ICAgIAorICAgICAgICBpZiAoaXBhZS5pcEFkRW50QWRkciA9PSBJTkFERFJfQU5ZKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaXBhZS5pcEFkRW50SWZJbmRleC5vX2J5dGVzW2lwYWUuaXBBZEVudElmSW5kZXgub19sZW5ndGhdID0gJ1wwJzsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgImZvdW5kIGlmICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcGFlLmlwQWRFbnRJZkluZGV4Lm9fYnl0ZXMpKTsKKyAgICAgICAgLyogT2J0YWluIGludGVyZmFjZSBpbmRleCAqLworICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSAKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9pbmRleF9maW5kKGlwYWUuaXBBZEVudElmSW5kZXgub19ieXRlcyk7CisgICAgICAgIGlmIChlbnRyeS0+aWZfaW5kZXggPT0gMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgImNhbm5vdCBmaW5kIGlmICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZS5pcEFkRW50SWZJbmRleCkpOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgcmV0dXJuICgtMik7ICAgIAorICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0cmNocigoY29uc3QgY2hhciAqKSZpcGFlLmlwQWRFbnRJZkluZGV4Lm9fYnl0ZXMsICc6JykgIT0gMCkKKyAgICAgICAgICAgIGVudHJ5LT5mbGFncyB8PSBORVRTTk1QX0FDQ0VTU19JUEFERFJFU1NfSVNBTElBUzsKKworICAgICAgICAvKiBHZXQgdGhlIGFkZHJlc3MgKi8KKyAgICAgICAgZW50cnktPmlhX2FkZHJlc3NfbGVuID0gc2l6ZW9mKGlwYWUuaXBBZEVudEFkZHIpOworICAgICAgICBuZXRzbm1wX2Fzc2VydChlbnRyeS0+aWFfYWRkcmVzc19sZW4gPT0gNCAmJgorICAgICAgICAgICAgZW50cnktPmlhX2FkZHJlc3NfbGVuIDw9IHNpemVvZihlbnRyeS0+aWFfYWRkcmVzcykpOworICAgICAgICBtZW1jcHkoJmVudHJ5LT5pYV9hZGRyZXNzLCAmaXBhZS5pcEFkRW50QWRkciwgZW50cnktPmlhX2FkZHJlc3NfbGVuKTsKKworICAgICAgICAvKiBwcmVmaXggKi8KKyAgICAgICAgZW50cnktPmlhX3ByZWZpeF9sZW4gPSBpcGFlLmlwQWRFbnRJbmZvLmFlX3N1Ym5ldF9sZW47CisKKyAgICAgICAgLyogc2V0IHRoZSBPcmlnaW4gKi8KKyAgICAgICAgaWYgKGlwYWUuaXBBZEVudEluZm8uYWVfZmxhZ3MgJiBJRkZfREhDUFJVTk5JTkcpCisgICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfREhDUDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX01BTlVBTDsKKworICAgICAgICAvKiBzZXQgaXB2NCBjb25zdGFudHMgKi8KKyAgICAgICAgZW50cnktPmlhX3R5cGUgPSBJUEFERFJFU1NUWVBFX1VOSUNBU1Q7CisgICAgICAgIGVudHJ5LT5pYV9zdGF0dXMgPSBJUEFERFJFU1NTVEFUVVNUQ19QUkVGRVJSRUQ7CisKKyAgICAgICAgZW50cnktPm5zX2lhX2luZGV4ID0gKytpZHhfb2Zmc2V0OworCisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJpbnNlcnQgaWYgJSIgTkVUU05NUF9QUklvICJ1LCBhZGRybGVuICVkXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPmlmX2luZGV4LCBlbnRyeS0+aWFfYWRkcmVzc19sZW4pKTsKKworICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJ1bmFibGUgdG8gaW5zZXJ0ICVzXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWUuaXBBZEVudElmSW5kZXgub19ieXRlcykpOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgcmV0dXJuICgtMyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIChpZHhfb2Zmc2V0KTsKK30KKworLyoKKyAqIEByZXR2YWwgPj1pZHhfb2Zmc2V0IG9rCisgKiBAcmV0dmFsIC0xIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yCisgKiBAcmV0dmFsIC0yIGludGVyZmFjZSBsb29rdXAgZXJyb3IKKyAqIEByZXR2YWwgLTMgY29udGFpbmVyIGVycm9yCisgKi8KKyNpZiBkZWZpbmVkKCBORVRTTk1QX0VOQUJMRV9JUFY2ICkKK3N0YXRpYyBpbnQKK19sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KQoreworICAgIG1pYjJfaXB2NkFkZHJFbnRyeV90ICAgIGlwNmFlOworICAgIG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeTsKKyAgICByZXFfZSAgICAgICAgICAgICAgICAgICByZXEgPSBHRVRfRklSU1Q7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgcmMgPSAwOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgImxvYWRpbmcgdjYuLi4gY2FjaGUgJWRcbiIsCisgICAgICAgICAgICAgICAgTUlCX0lQNl9BRERSKSk7CisgICAgd2hpbGUgKChyYyA9IGdldE1pYnN0YXQoTUlCX0lQNl9BRERSLCAmaXA2YWUsIHNpemVvZihpcDZhZSksIHJlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmR2V0X2V2ZXJ5dGhpbmcsIE5VTEwpKSA9PSAwKSB7CisgICAgICAgIHJlcSA9IEdFVF9ORVhUOworICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9jcmVhdGUoKTsKKyAgICAgICAgaWYgKGVudHJ5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gKC0xKTsgICAgCisgICAgICAgIGlmIChtZW1jbXAoKGNvbnN0IHZvaWQgKikmaXA2YWUuaXB2NkFkZHJBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgIChjb25zdCB2b2lkICopJmluNmFkZHJfYW55LAorICAgICAgICAgICAgICAgICAgIHNpemVvZiAoaXA2YWUuaXB2NkFkZHJBZGRyZXNzKSkgPT0gMCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlwNmFlLmlwdjZBZGRySWZJbmRleC5vX2J5dGVzW2lwNmFlLmlwdjZBZGRySWZJbmRleC5vX2xlbmd0aF0gPSAnXDAnOworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCAiZm91bmQgaWYgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwNmFlLmlwdjZBZGRySWZJbmRleC5vX2J5dGVzKSk7CisKKyAgICAgICAgLyogT2J0YWluIGludGVyZmFjZSBpbmRleCAqLworICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSAKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9pbmRleF9maW5kKAorICAgICAgICAgICAgaXA2YWUuaXB2NkFkZHJJZkluZGV4Lm9fYnl0ZXMpOworICAgICAgICBpZiAoZW50cnktPmlmX2luZGV4ID09IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJjYW5ub3QgZmluZCBpZiAlc1xuIiwgCisgICAgICAgICAgICAgICAgICAgICAgICBpcDZhZS5pcHY2QWRkcklmSW5kZXgub19ieXRlcykpOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgcmV0dXJuICgtMik7ICAgIAorICAgICAgICB9CisKKyAgICAgICAgLyogR2V0IHRoZSBhZGRyZXNzICovCisgICAgICAgIGVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9IHNpemVvZihpcDZhZS5pcHY2QWRkckFkZHJlc3MpOworICAgICAgICBuZXRzbm1wX2Fzc2VydChlbnRyeS0+aWFfYWRkcmVzc19sZW4gPT0gMTYgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmlhX2FkZHJlc3NfbGVuIDw9IHNpemVvZihlbnRyeS0+aWFfYWRkcmVzcykpOworICAgICAgICBtZW1jcHkoJmVudHJ5LT5pYV9hZGRyZXNzLCAmaXA2YWUuaXB2NkFkZHJBZGRyZXNzLCAKKyAgICAgICAgICAgICAgIGVudHJ5LT5pYV9hZGRyZXNzX2xlbik7CisgICAgICAgICAgICAgICAKKyAgICAgICAgLyogcHJlZml4ICovCisgICAgICAgIGVudHJ5LT5pYV9wcmVmaXhfbGVuID0gaXA2YWUuaXB2NkFkZHJQZnhMZW5ndGg7CisKKyAgICAgICAgLyogdHlwZSBpcyBhbnljYXN0PyAobWliMi5oOiAxID0geWVzLCAyID0gbm8pICovCisgICAgICAgIGVudHJ5LT5pYV90eXBlID0gKGlwNmFlLmlwdjZBZGRyQW55Y2FzdEZsYWcgPT0gMSkgPyAKKyAgICAgICAgICAgIElQQUREUkVTU1RZUEVfQU5ZQ0FTVCA6IElQQUREUkVTU1RZUEVfVU5JQ0FTVDsKKworICAgICAgICAvKiBvcmlnaW4gKG1pYjIuaDogMSA9IHN0YXRlbGVzcywgMiA9IHN0YXRlZnVsLCAzID0gdW5rbm93bikgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgIm9yaWdpbiAlZFxuIiwgCisgICAgICAgICAgICAgICAgICAgICAgICBpcDZhZS5pcHY2QWRkclR5cGUpKTsKKyAgICAgICAgaWYgKGlwNmFlLmlwdjZBZGRyVHlwZSA9PSAxKQorICAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX0xJTktMQVlFUjsKKyAgICAgICAgZWxzZSBpZiAoaXA2YWUuaXB2NkFkZHJJbmZvLmFlX2ZsYWdzICYgSUZGX0RIQ1BSVU5OSU5HKQorICAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX0RIQ1A7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19NQU5VQUw7CisgICAgICAgIAorICAgICAgICAvKiBzdGF0dXMgKi8KKyAgICAgICAgZW50cnktPmlhX3N0YXR1cyA9IGlwNmFlLmlwdjZBZGRyU3RhdHVzOworCisgICAgICAgIGVudHJ5LT5uc19pYV9pbmRleCA9ICsraWR4X29mZnNldDsKKyAgICAgICAgCisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJpbnNlcnQgaWYgJSIgTkVUU05NUF9QUklvICJ1LCBhZGRybGVuICVkXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPmlmX2luZGV4LCBlbnRyeS0+aWFfYWRkcmVzc19sZW4pKTsKKworICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJ1bmFibGUgdG8gaW5zZXJ0ICVzXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlwNmFlLmlwdjZBZGRySWZJbmRleC5vX2J5dGVzKSk7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfZnJlZShlbnRyeSk7CisgICAgICAgICAgICByZXR1cm4gKC0zKTsKKyAgICAgICAgfQorICAgIH0gICAgCisgICAgcmV0dXJuIChpZHhfb2Zmc2V0KTsKK30KKyNlbmRpZiAvKiBkZWZpbmVkKCBORVRTTk1QX0VOQUJMRV9JUFY2ICkgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkODFiM2YKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZS5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBzY29wZXpvbmUgZGF0YSBhY2Nlc3MgaGVhZGVyCisgKgorICogJElkOiBpcHY2c2NvcGV6b25lLmggMTQxNzAgMjAwNy0wNC0yOSAwMjoyMjoxMlogdmFydW5fYyAkCisgKi8KKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogY29uZmlndXJlIHJlcXVpcmVkIGZpbGVzCisgKgorICogTm90ZXM6CisgKgorICogMSkgcHJlZmVyIGZ1bmN0aW9uYWxpdHkgb3ZlciBwbGF0Zm9ybSwgd2hlcmUgcG9zc2libGUuIElmIGEgbWV0aG9kCisgKiAgICBpcyBhdmFpbGFibGUgZm9yIG11bHRpcGxlIHBsYXRmb3JtcywgdGVzdCB0aGF0IGZpcnN0LiBUaGF0IHdheQorICogICAgd2hlbiBhIG5ldyBwbGF0Zm9ybSBpcyBwb3J0ZWQsIGl0IHdvbid0IG5lZWQgYSBuZXcgdGVzdCBoZXJlLgorICoKKyAqIDIpIGRvbid0IGRvIGRldGFpbCByZXF1aXJlbWVudHMgaGVyZS4gSWYsIGZvciBleGFtcGxlLAorICogICAgSFBVWDExIGhhZCBkaWZmZXJlbnQgcmV1aXJlbWVudHMgdGhhbiBvdGhlciBIUFVYLCB0aGF0IHNob3VsZAorICogICAgYmUgaGFuZGxlZCBpbiB0aGUgKl9ocHV4LmggaGVhZGVyIGZpbGUuCisgKi8KK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lX2NvbW1vbikKKyNpZiBkZWZpbmVkKCBsaW51eCApCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9saW51eCkKKyNlbHNlCisvKgorICogY291bGRuJ3QgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGZpbGUhCisgKiByZXF1aXJlIGEgYm9ndXMgZmlsZSB0byBnZW5lcmF0ZSBhbiBlcnJvci4KKyAqLworY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmUtdW5rbm93bi1hcmNoKTsKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lX2NvbW1vbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZjcxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9jb21tb24uYwpAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqICBpcHY2U2NvcGVJbmRleFRhYmxlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICoKKyAqICRJZDogaXB2NnNjb3Blem9uZV9jb21tb24uYyAxNDE3MCAyMDA3LTA0LTI5IDAyOjIyOjEyWiB2YXJ1bl9jICQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oPgorLyoKKyAqIGxvY2FsIHN0YXRpYyBwcm90b3R5cGVzCisgKi8KK3N0YXRpYyB2b2lkIF9lbnRyeV9yZWxlYXNlKG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkgKiBlbnRyeSwgdm9pZCAqdW51c2VkKTsKKworCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIGV4dGVybmFsIHBlci1hcmNoaXRlY3R1cmUgZnVuY3Rpb25zIHByb3RvdHlwZXMKKyAqCisgKiBUaGVzZSBzaG91bGRuJ3QgYmUgY2FsbGVkIGJ5IHRoZSBnZW5lcmFsIHB1YmxpYywgc28gdGhleSBhcmVuJ3QgaW4KKyAqIHRoZSBoZWFkZXIgZmlsZS4KKyAqLworZXh0ZXJuIGludAorbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2NvbnRhaW5lcl9hcmNoX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOworZXh0ZXJuIHZvaWQKK25ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9hcmNoX2luaXQodm9pZCk7CisKKy8qKgorICogaW5pdGlhbGl6ZSBzeXN0ZW1zdGF0cyBjb250YWluZXIKKyAqLworbmV0c25tcF9jb250YWluZXIgKgorbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2NvbnRhaW5lcl9pbml0KHVfaW50IGZsYWdzKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTpjb250YWluZXIiLCAiaW5pdFxuIikpOworICAgIC8qCisgICAgICogY3JlYXRlIHRoZSBjb250YWluZXJzLiBvbmUgaW5kZXhlZCBieSBpZkluZGV4LCB0aGUgb3RoZXIKKyAgICAgKiBpbmRleGVkIGJ5IGlmTmFtZS4KKyAgICAgKi8KKyAgICBjb250YWluZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJhY2Nlc3Nfc2NvcGV6b25lOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gY29udGFpbmVyOworfQorCisvKioKKyAqIGxvYWQgc2NvcGV6b25lIGluZm9ybWF0aW9uIGluIHNwZWNpZmllZCBjb250YWluZXIKKyAqCisgKiBAcGFyYW0gY29udGFpbmVyIGVtcHR5IGNvbnRhaW5lciwgb3IgTlVMTCB0byBoYXZlIG9uZSBjcmVhdGVkIGZvciB5b3UKKyAqIEBwYXJhbSBsb2FkX2ZsYWdzIGZsYWdzIHRvIG1vZGlmeSBiZWhhdmlvdXIuCisgKgorICogQHJldHZhbCBOVUxMICBlcnJvcgorICogQHJldHZhbCAhTlVMTCBwb2ludGVyIHRvIGNvbnRhaW5lcgorICovCituZXRzbm1wX2NvbnRhaW5lcioKK25ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIGludCByYzsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c2NvcGV6b25lOmNvbnRhaW5lciIsICJsb2FkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpCisgICAgICAgIGNvbnRhaW5lciA9IG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfaW5pdChsb2FkX2ZsYWdzKTsKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGFjY2Vzc19zY29wZXpvbmVcbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByYyA9ICBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2FyY2hfbG9hZChjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIGlmICgwICE9IHJjKSB7CisgICAgICAgIG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfZnJlZShjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19TQ09QRVpPTkVfRlJFRV9OT0ZMQUdTKTsKKyAgICAgICAgY29udGFpbmVyID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gY29udGFpbmVyOworfQorCit2b2lkCituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZnJlZV9mbGFncykKK3sKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTpjb250YWluZXIiLCAiZnJlZVxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIGNvbnRhaW5lciBmb3IgbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2ZyZWVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYoISAoZnJlZV9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX1NDT1BFWk9ORV9GUkVFX0RPTlRfQ0xFQVIpKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGZyZWUgYWxsIGl0ZW1zLgorICAgICAgICAgKi8KKyAgICAgICAgQ09OVEFJTkVSX0NMRUFSKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyopX2VudHJ5X3JlbGVhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICB9CisKKyAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOworfQorCisvKioKKyAqLworbmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqCituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfY3JlYXRlKHZvaWQpCit7CisgICAgbmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqZW50cnkgPQorICAgICAgICBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkpOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpzY29wZXpvbmU6ZW50cnkiLCAiY3JlYXRlXG4iKSk7CisKKyAgICBpZihOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm4gTlVMTDsKKworCisgICAgZW50cnktPm9pZF9pbmRleC5sZW4gPSAxOworICAgIGVudHJ5LT5vaWRfaW5kZXgub2lkcyA9ICAmZW50cnktPm5zX3Njb3Blem9uZV9pbmRleDsKKworICAgIHJldHVybiBlbnRyeTsKK30KKworLyoqCisgKi8KK3ZvaWQKK25ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9lbnRyeV9mcmVlKG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkgKiBlbnRyeSkKK3sKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTplbnRyeSIsICJmcmVlXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuOworCisKKyAgICBmcmVlKGVudHJ5KTsKK30KKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBVdGlsaXR5IHJvdXRpbmVzCisgKi8KKworLyoqCisgKiBcaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19lbnRyeV9yZWxlYXNlKG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkgKiBlbnRyeSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfZnJlZShlbnRyeSk7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9saW51eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MTRmNjAKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9saW51eC5jCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogIEludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQ6IGlwdjZzY29wZXpvbmVfbGludXguYyAxNDE3MCAyMDA3LTA0LTI5IDAyOjIyOjEyWiB2YXJ1bl9jICQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oPgorCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKK3N0YXRpYyBpbnQgX3Njb3Blem9uZV92NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCBpbnQgaWR4X29mZnNldCk7CisjZW5kaWYKKworLyoKKyAqCisgKiBAcmV0dmFsICAwIHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgbm8gY29udGFpbmVyIHNwZWNpZmllZAorICogQHJldHZhbCAtMiBjb3VsZCBub3Qgb3BlbiBmaWxlCisgKiBAcmV0dmFsIC0zIGNvdWxkIG5vdCBjcmVhdGUgZW50cnkgKHByb2JhYmx5IG1hbGxvYykKKyAqIEByZXR2YWwgLTQgZmlsZSBmb3JtYXQgZXJyb3IKKyAqLworaW50CituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgcmMxID0gMCwgaWR4X29mZnNldCA9IDA7CisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX3Njb3Blem9uZV9cbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmMxID0gX3Njb3Blem9uZV92Nihjb250YWluZXIsIGlkeF9vZmZzZXQpOworI2VuZGlmCisgICAgaWYocmMxID4gMCkKKyAgICAgICAgcmMxID0gMDsKKyAgICByZXR1cm4gcmMxOworfQorCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKworLyogc2NvcGUgaWRlbnRpZmllcnMsIGZyb20ga2VybmVsIC0gaW5jbHVkZS9uZXQvaXB2Ni5oICovCisjZGVmaW5lIElQVjZfQUREUl9MT09QQkFDSyAgICAgIDB4MDAxMFUKKyNkZWZpbmUgSVBWNl9BRERSX0xJTktMT0NBTCAgICAgMHgwMDIwVQorI2RlZmluZSBJUFY2X0FERFJfU0lURUxPQ0FMICAgICAweDAwNDBVCisKK3N0YXRpYyBpbnQKK19zY29wZXpvbmVfdjYobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpCit7CisKKyAgICAvKgorICAgICAqIE9uIExpbnV4LCB3ZSBzdXBwb3J0IG9ubHkgbGluay1sb2NhbCBzY29wZSB6b25lcy4KKyAgICAgKiBFYWNoIGludGVyZmFjZSwgd2hpY2ggaGFzIGxpbmstbG9jYWwgYWRkcmVzcywgZ2V0cyB1bmlxdWUgc2NvcGUKKyAgICAgKiB6b25lIGluZGV4LgorICAgICAqLworICAgIEZJTEUgICAgICAgICAgICppbjsKKyAgICBjaGFyICAgICAgICAgICAgbGluZVs4MF0sIGFkZHJbNDBdOworICAgIGludCAgICAgICAgICAgICBpZl9pbmRleCwgcGZ4X2xlbiwgc2NvcGUsIGZsYWdzLCByYyA9IDA7CisgICAgaW50ICAgICAgICAgICAgIGxhc3RfaWZfaW5kZXggPSAtMTsKKyAgICBuZXRzbm1wX3Y2c2NvcGV6b25lX2VudHJ5ICplbnRyeTsKKyAgICAKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisKKyNkZWZpbmUgUFJPQ0ZJTEUgIi9wcm9jL25ldC9pZl9pbmV0NiIKKyAgICBpZiAoIShpbiA9IGZvcGVuKFBST0NGSUxFLCAiciIpKSkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTpjb250YWluZXIiLCJjb3VsZCBub3Qgb3BlbiAiIFBST0NGSUxFICJcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICAKKyAgICAvKgorICAgICAqIGFkZHJlc3MgaW5kZXggcHJlZml4X2xlbiBzY29wZSBzdGF0dXMgaWZfbmFtZQorICAgICAqLworICAgIHdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGluKSkgeworICAgICAgICAvKgorICAgICAgICAgKiBmZTgwMDAwMDAwMDAwMDAwMDIwMGU4ZmZmZTViNWM5MyAwNSA0MCAyMCA4MCBldGgwCisgICAgICAgICAqICAgICAgICAgICAgIEEgICAgICAgICAgICAgICAgICAgIEQgIFAgIFMgIEYgIEkKKyAgICAgICAgICogQTogYWRkcmVzcworICAgICAgICAgKiBEOiBkZXZpY2UgbnVtYmVyCisgICAgICAgICAqIFA6IHByZWZpeCBsZW4KKyAgICAgICAgICogUzogc2NvcGUgKHNlZSBpbmNsdWRlL25ldC9pcHY2LmgsIG5ldC9pcHY2L2FkZHJjb25mLmMpCisgICAgICAgICAqIEY6IGZsYWdzIChzZWUgaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCwgbmV0L2lwdjYvYWRkcmNvbmYuYykKKyAgICAgICAgICogSTogaW50ZXJmYWNlCisgICAgICAgICAqLworICAgICAgICByYyA9IHNzY2FuZihsaW5lLCAiJTM5cyAlMDR4ICUwMnggJTAyeCAlMDJ4XG4iLAorICAgICAgICAgICAgICAgICAgICBhZGRyLCAmaWZfaW5kZXgsICZwZnhfbGVuLCAmc2NvcGUsICZmbGFncyk7CisgICAgICAgIGlmKCA1ICE9IHJjICkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgUFJPQ0ZJTEUgIiBkYXRhIGZvcm1hdCBlcnJvciAoJWQhPTUpLCBsaW5lID09fCVzfFxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHJjLCBsaW5lKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c2NvcGV6b25lOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgICAgICJhZGRyICVzLCBpbmRleCAlZCwgcGZ4ICVkLCBzY29wZSAlZCwgZmxhZ3MgMHglWFxuIiwKKyAgICAgICAgICAgICAgICAgICAgYWRkciwgaWZfaW5kZXgsIHBmeF9sZW4sIHNjb3BlLCBmbGFncykpOworCisgICAgICAgIGlmICghIChzY29wZSAmIElQVjZfQUREUl9MSU5LTE9DQUwpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTpjb250YWluZXIiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgYWRkcmVzcyBpcyBub3QgbGluay1sb2NhbCwgc2tpcHBpbmdcbiIpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIC8qIAorICAgICAgICAgKiBDaGVjayB0aGF0IHRoZSBpbnRlcmZhY2Ugd2FzIG5vdCBpbnNlcnRlZCBiZWZvcmUsIGp1c3QgaW4gY2FzZQorICAgICAgICAgKiBvbmUgaW50ZXJmYWNlIGhhcyB0d28gb3IgbW9yZSBsaW5rLWxvY2FsIGFkZHJlc3Nlcy4KKyAgICAgICAgICovCisgICAgICAgIGlmIChsYXN0X2lmX2luZGV4ID09IGlmX2luZGV4KSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTpjb250YWluZXIiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgaW50ZXJmYWNlIHdhcyBhbHJlYWR5IGluc2VydGVkLCBza2lwcGluZ1xuIikpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBsYXN0X2lmX2luZGV4ID0gaWZfaW5kZXg7IAorICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9lbnRyeV9jcmVhdGUoKTsKKyAgICAgICAgaWYoTlVMTCA9PSBlbnRyeSkgeworICAgICAgICAgICAgcmMgPSAtMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGVudHJ5LT5uc19zY29wZXpvbmVfaW5kZXggPSArK2lkeF9vZmZzZXQ7CisgICAgICAgIGVudHJ5LT5pbmRleCA9IGlmX2luZGV4OworICAgICAgICBlbnRyeS0+c2NvcGV6b25lX2xpbmtsb2NhbCA9IGlmX2luZGV4OworIAorICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworICAgIH0KKyAgICBmY2xvc2UoaW4pOworICAgIGlmKHJjPDApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHJldHVybiBpZHhfb2Zmc2V0OworfQorI2VuZGlmIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmMKaW5kZXggZDljMzkxNC4uMDJjNDE2YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jCkBAIC04LDcgKzgsNzYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwX3NjYWxhcnMuaD4KIAotc3RhdGljIGNvbnN0IGNoYXIgaXBmd19uYW1lW10gPSAiL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvYWxsL2ZvcndhcmRpbmciOworc3RhdGljIGNvbnN0IGNoYXIgaXBmd19uYW1lW10gPSAiL3Byb2Mvc3lzL25ldC9pcHY0L2NvbmYvYWxsL2ZvcndhcmRpbmciOworc3RhdGljIGNvbnN0IGNoYXIgaXBmdzZfbmFtZVtdID0gIi9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mL2FsbC9mb3J3YXJkaW5nIjsKKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfZ2V0KHVfbG9uZyAqdmFsdWUpCit7CisgICAgRklMRSAqZmlsZXA7CisgICAgaW50IHJjOworCisgICAgaWYgKE5VTEwgPT0gdmFsdWUpCisgICAgICAgIHJldHVybiAtMTsKKworCisgICAgZmlsZXAgPSBmb3BlbihpcGZ3X25hbWUsICJyIik7CisgICAgaWYgKE5VTEwgPT0gZmlsZXApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcEZvcndhcmRpbmciLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwZndfbmFtZSkpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgcmMgPSBmc2NhbmYoZmlsZXAsICIlbGQiLCB2YWx1ZSk7CisgICAgZmNsb3NlKGZpbGVwKTsKKyAgICBpZiAoMSAhPSByYykgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRm9yd2FyZGluZyIsICJjb3VsZCBub3QgcmVhZCAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaXBmd19uYW1lKSk7CisgICAgICAgIHJldHVybiAtMzsKKyAgICB9CisKKyAgICBpZiAoKDAgIT0gKnZhbHVlKSAmJiAoMSAhPSAqdmFsdWUpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwgInVuZXhwZWN0ZWQgdmFsdWUgJWxkIGluICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAqdmFsdWUsIGlwZndfbmFtZSkpOworICAgICAgICByZXR1cm4gLTQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX3NldCh1X2xvbmcgdmFsdWUpCit7CisgICAgRklMRSAqZmlsZXA7CisgICAgaW50IHJjOworCisgICAgaWYgKDEgPT0gdmFsdWUpCisgICAgICAgIDsKKyAgICBlbHNlIGlmICgyID09IHZhbHVlKQorICAgICAgICB2YWx1ZSA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwgImJhZCB2YWx1ZSAlbGQgZm9yICVzXG4iLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgaXBmd19uYW1lKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0KKworICAgIGZpbGVwID0gZm9wZW4oaXBmd19uYW1lLCAidyIpOworICAgIGlmIChOVUxMID09IGZpbGVwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwgImNvdWxkIG5vdCBvcGVuICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcGZ3X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgfQorCisgICAgcmMgPSBmcHJpbnRmKGZpbGVwLCAiJWxkIiwgdmFsdWUpOworICAgIGZjbG9zZShmaWxlcCk7CisgICAgaWYgKDEgIT0gcmMpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcEZvcndhcmRpbmciLCAiY291bGQgbm90IHdyaXRlICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcGZ3X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KIAogaW50CiBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBGb3J3YXJkaW5nX2dldCh1X2xvbmcgKnZhbHVlKQpAQCAtMjAsMTAgKzg5LDEwIEBACiAgICAgICAgIHJldHVybiAtMTsKIAogCi0gICAgZmlsZXAgPSBmb3BlbihpcGZ3X25hbWUsICJyIik7CisgICAgZmlsZXAgPSBmb3BlbihpcGZ3Nl9uYW1lLCAiciIpOwogICAgIGlmIChOVUxMID09IGZpbGVwKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXB2NklwRm9yd2FyZGluZyIsICJjb3VsZCBub3Qgb3BlbiAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaXBmd19uYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIGlwZnc2X25hbWUpKTsKICAgICAgICAgcmV0dXJuIC0yOwogICAgIH0KIApAQCAtMzEsMTMgKzEwMCwxMyBAQAogICAgIGZjbG9zZShmaWxlcCk7CiAgICAgaWYgKDEgIT0gcmMpIHsKICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcHY2SXBGb3J3YXJkaW5nIiwgImNvdWxkIG5vdCByZWFkICVzXG4iLAotICAgICAgICAgICAgICAgICAgICBpcGZ3X25hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgaXBmdzZfbmFtZSkpOwogICAgICAgICByZXR1cm4gLTM7CiAgICAgfQogCiAgICAgaWYgKCgwICE9ICp2YWx1ZSkgJiYgKDEgIT0gKnZhbHVlKSkgewogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwdjZJcEZvcndhcmRpbmciLCAidW5leHBlY3RlZCB2YWx1ZSAlbGQgaW4gJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICp2YWx1ZSwgaXBmd19uYW1lKSk7CisgICAgICAgICAgICAgICAgICAgICp2YWx1ZSwgaXBmdzZfbmFtZSkpOwogICAgICAgICByZXR1cm4gLTQ7CiAgICAgfQogCkBAIC02MCwxMCArMTI5LDEwIEBACiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOwogICAgIH0KIAotICAgIGZpbGVwID0gZm9wZW4oaXBmd19uYW1lLCAidyIpOworICAgIGZpbGVwID0gZm9wZW4oaXBmdzZfbmFtZSwgInciKTsKICAgICBpZiAoTlVMTCA9PSBmaWxlcCkgewogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwdjZJcEZvcndhcmRpbmciLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgIGlwZndfbmFtZSkpOworICAgICAgICAgICAgICAgICAgICBpcGZ3Nl9uYW1lKSk7CiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOwogICAgIH0KIApAQCAtNzEsNyArMTQwLDcgQEAKICAgICBmY2xvc2UoZmlsZXApOwogICAgIGlmICgxICE9IHJjKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXB2NklwRm9yd2FyZGluZyIsICJjb3VsZCBub3Qgd3JpdGUgJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgIGlwZndfbmFtZSkpOworICAgICAgICAgICAgICAgICAgICBpcGZ3Nl9uYW1lKSk7CiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCmluZGV4IDZiYmE2ZDkuLjI4ODEwZTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCkBAIC0yMCwxMSArMjAsOCBAQAogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbikKICNpZiBkZWZpbmVkKCBsaW51eCApCiBjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXgpCisjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc29sYXJpczIpCiAjZWxzZQotLyoKLSAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQotICogcmVxdWlyZSBhIGJvZ3VzIGZpbGUgdG8gZ2VuZXJhdGUgYW4gZXJyb3IuCi0gKi8KLWNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy11bmtub3duLWFyY2gpOworY29uZmlnX2Vycm9yKHRoZSBzeXN0ZW1zdGF0cyBkYXRhIGFjY2VzcyBsaWJyYXJ5IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC4pCiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbi5jCmluZGV4IGYyN2UwZWEuLmY3YzAyMTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogIFN5c3RlbXN0YXRzIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICogIGlwU3lzdGVtU3RhdHNUYWJsZSBhbmQgaXBJZlN0YXRzVGFibGUgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CiAgKgogICogJElkJAogICovCkBAIC0xNjMsNyArMTYzLDcgQEAKIC8qKgogICovCiBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICoKLW5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZShpbnQgdmVyc2lvbikKK25ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZShpbnQgdmVyc2lvbiwgaW50IGlmX2luZGV4KQogewogICAgIG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgKmVudHJ5ID0KICAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5KTsKQEAgLTE3MywxMCArMTczLDEwIEBACiAgICAgaWYoTlVMTCA9PSBlbnRyeSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBlbnRyeS0+bnNfaXBfdmVyc2lvbiA9IHZlcnNpb247Ci0KLSAgICBlbnRyeS0+b2lkX2luZGV4LmxlbiA9IDE7Ci0gICAgZW50cnktPm9pZF9pbmRleC5vaWRzID0gKG9pZCAqKSAmIGVudHJ5LT5uc19pcF92ZXJzaW9uOworICAgIGVudHJ5LT5vaWRfaW5kZXgubGVuID0gMjsKKyAgICBlbnRyeS0+b2lkX2luZGV4Lm9pZHMgPSBlbnRyeS0+aW5kZXg7CisgICAgZW50cnktPmluZGV4WzBdID0gdmVyc2lvbjsKKyAgICBlbnRyeS0+aW5kZXhbMV0gPSBpZl9pbmRleDsKIAogICAgIHJldHVybiBlbnRyeTsKIH0KQEAgLTIxNyw2ICsyMTcsNjIgQEAKICAgICBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9mcmVlKGVudHJ5KTsKIH0KIAorLyoKKyAqIENhbGN1bGF0ZXMgdGhlIGVudHJpZXMsIHdoaWNoIGFyZSBub3QgcHJvdmlkZWQgYnkgT1MsIGJ1dCBjYW4gYmUgCisgKiBjb21wdXRlZCBmcm9tIHRoZSBvdGhlcnMuCisgKi8KK3N0YXRpYyB2b2lkCitfY2FsY3VsYXRlX2VudHJpZXMobmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqIGVudHJ5KQoreworICAgIC8qCisgICAgICogSENJbkZvcndEYXRhZ3JhbXMgPSBIQ0luTm9Sb3V0ZXMgKyBIQ091dEZvcndEYXRhZ3JhbXMKKyAgICAgKi8KKyAgICBpZiAoIWVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkZPUldEQVRBR1JBTVNdCisgICAgICAgICYmIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGT1JXREFUQUdSQU1TXQorICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5OT1JPVVRFU10pIHsKKyAgICAgICAgCisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcyA9IGVudHJ5LT5zdGF0cy5IQ0luTm9Sb3V0ZXM7CisgICAgICAgIHU2NEluY3IoJmVudHJ5LT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcywgJmVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMpOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5GT1JXREFUQUdSQU1TXSA9IDE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBIQ091dEZyYWdSZXFkcyA9IEhDT3V0RnJhZ09LcyArIEhDT3V0RnJhZ0ZhaWxzCisgICAgICovCisgICAgaWYgKCFlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR1JFUURTXQorICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR09LU10KKyAgICAgICAgICAgJiYgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdGQUlMU10pIHsKKyAgICAgICAgCisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdSZXFkcyA9IGVudHJ5LT5zdGF0cy5IQ091dEZyYWdPS3M7CisgICAgICAgIHU2NEluY3IoJmVudHJ5LT5zdGF0cy5IQ091dEZyYWdSZXFkcywgJmVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscyk7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHUkVRRFNdID0gMTsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBIQ091dFRyYW5zbWl0cyA9IEhDT3V0UmVxdWVzdHMgICsgSENPdXRGb3J3RGF0YWdyYW1zICsgSENPdXRGcmFnQ3JlYXRlcyAgCisgICAgICogICAgICAgICAgICAgICAgICAtIEhDT3V0RnJhZ1JlcWRzIC0gSENPdXROb1JvdXRlcyAgLSBIQ091dERpc2NhcmRzCisgICAgICovCisgICAgaWYgKCFlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUVFJBTlNNSVRTXQorICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdCisgICAgICAgICYmIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGT1JXREFUQUdSQU1TXQorICAgICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR1JFUURTXQorICAgICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdCisgICAgICAgICAgICYmIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFU10KKyAgICAgICAgJiYgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVERJU0NBUkRTXSkgeworCisgICAgICAgIFU2NCB0bXAsIHRtcDIsIHRtcDM7CisgICAgICAgIHRtcCA9IGVudHJ5LT5zdGF0cy5IQ091dFJlcXVlc3RzOworICAgICAgICB1NjRJbmNyKCZ0bXAsICZlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zKTsKKyAgICAgICAgdTY0SW5jcigmdG1wLCAmZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMpOworICAgICAgICAKKyAgICAgICAgdTY0U3VidHJhY3QoJnRtcCwgJmVudHJ5LT5zdGF0cy5IQ091dEZyYWdSZXFkcywgJnRtcDIpOworICAgICAgICB1NjRTdWJ0cmFjdCgmdG1wMiwgJmVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLCAmdG1wMyk7CisgICAgICAgIHU2NFN1YnRyYWN0KCZ0bXAzLCAmZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMsICZlbnRyeS0+c3RhdHMuSENPdXRUcmFuc21pdHMpOworICAgICAgICAgICAgICAgIAorICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUVFJBTlNNSVRTXSA9IDE7CisgICAgfQorfQorCiAvKioKICAqIHVwZGF0ZSBlbnRyeSBzdGF0cyAoY2hlY2tpbmcgZm9yIGNvdW50ZXIgd3JhcCkKICAqCkBAIC0yMzMsNyArMjg5LDggQEAKICAgICAgKiBzYW5pdHkgY2hlY2tzCiAgICAgICovCiAgICAgaWYgKChOVUxMID09IHByZXZfdmFscykgfHwgKE5VTEwgPT0gbmV3X3ZhbHMpIHx8Ci0gICAgICAgIChwcmV2X3ZhbHMtPm5zX2lwX3ZlcnNpb24gIT0gbmV3X3ZhbHMtPm5zX2lwX3ZlcnNpb24pKQorICAgICAgICAocHJldl92YWxzLT5pbmRleFswXSAhPSBuZXdfdmFscy0+aW5kZXhbMF0pCisgICAgICAgIHx8IChwcmV2X3ZhbHMtPmluZGV4WzFdICE9IG5ld192YWxzLT5pbmRleFsxXSkpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8qCkBAIC0yNDEsNiArMjk4LDcgQEAKICAgICAgKi8KICAgICBpZiAoMCA9PSBuZWVkX3dyYXBfY2hlY2spIHsKICAgICAgICAgbWVtY3B5KCZwcmV2X3ZhbHMtPnN0YXRzLCAmbmV3X3ZhbHMtPnN0YXRzLCBzaXplb2YobmV3X3ZhbHMtPnN0YXRzKSk7CisgICAgICAgIF9jYWxjdWxhdGVfZW50cmllcyhwcmV2X3ZhbHMpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTI1OCw4ICszMTYsOCBAQAogICAgICAgICAvKgogICAgICAgICAgKiB1cGRhdGUgc3RyYWlnaHQgMzIgYml0IGNvdW50ZXJzCiAgICAgICAgICAqLworICAgICAgICBtZW1jcHkoJnByZXZfdmFscy0+c3RhdHMuY29sdW1uQXZhaWxbMF0sICZuZXdfdmFscy0+c3RhdHMuY29sdW1uQXZhaWxbMF0sIHNpemVvZihuZXdfdmFscy0+c3RhdHMuY29sdW1uQXZhaWwpKTsKICAgICAgICAgcHJldl92YWxzLT5zdGF0cy5JbkhkckVycm9ycyA9IG5ld192YWxzLT5zdGF0cy5JbkhkckVycm9yczsKLSAgICAgICAgcHJldl92YWxzLT5zdGF0cy5Jbk5vUm91dGVzID0gbmV3X3ZhbHMtPnN0YXRzLkluTm9Sb3V0ZXM7CiAgICAgICAgIHByZXZfdmFscy0+c3RhdHMuSW5BZGRyRXJyb3JzID0gbmV3X3ZhbHMtPnN0YXRzLkluQWRkckVycm9yczsKICAgICAgICAgcHJldl92YWxzLT5zdGF0cy5JblVua25vd25Qcm90b3MgPSBuZXdfdmFscy0+c3RhdHMuSW5Vbmtub3duUHJvdG9zOwogICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLkluVHJ1bmNhdGVkUGt0cyA9IG5ld192YWxzLT5zdGF0cy5JblRydW5jYXRlZFBrdHM7CkBAIC0yNjcsMTYgKzMyNSwzOCBAQAogICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLlJlYXNtT0tzID0gbmV3X3ZhbHMtPnN0YXRzLlJlYXNtT0tzOwogICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLlJlYXNtRmFpbHMgPSBuZXdfdmFscy0+c3RhdHMuUmVhc21GYWlsczsKICAgICAgICAgcHJldl92YWxzLT5zdGF0cy5JbkRpc2NhcmRzID0gbmV3X3ZhbHMtPnN0YXRzLkluRGlzY2FyZHM7Ci0gICAgICAgIHByZXZfdmFscy0+c3RhdHMuT3V0Tm9Sb3V0ZXMgPSBuZXdfdmFscy0+c3RhdHMuT3V0Tm9Sb3V0ZXM7Ci0gICAgICAgIHByZXZfdmFscy0+c3RhdHMuT3V0RGlzY2FyZHMgPSBuZXdfdmFscy0+c3RhdHMuT3V0RGlzY2FyZHM7Ci0gICAgICAgIHByZXZfdmFscy0+c3RhdHMuT3V0RnJhZ1JlcWRzID0gbmV3X3ZhbHMtPnN0YXRzLk91dEZyYWdSZXFkczsKLSAgICAgICAgcHJldl92YWxzLT5zdGF0cy5PdXRGcmFnT0tzID0gbmV3X3ZhbHMtPnN0YXRzLk91dEZyYWdPS3M7Ci0gICAgICAgIHByZXZfdmFscy0+c3RhdHMuT3V0RnJhZ0ZhaWxzID0gbmV3X3ZhbHMtPnN0YXRzLk91dEZyYWdGYWlsczsKLSAgICAgICAgcHJldl92YWxzLT5zdGF0cy5PdXRGcmFnQ3JlYXRlcyA9IG5ld192YWxzLT5zdGF0cy5PdXRGcmFnQ3JlYXRlczsKIAogICAgICAgICAvKgogICAgICAgICAgKiB1cGRhdGUgNjRiaXQgY291bnRlcnMKICAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ0luTm9Sb3V0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3ZhbHMtPnN0YXRzLkhDSW5Ob1JvdXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+SENJbk5vUm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dE5vUm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld192YWxzLT5zdGF0cy5IQ091dE5vUm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5IQ091dE5vUm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dERpc2NhcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld192YWxzLT5zdGF0cy5IQ091dERpc2NhcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5IQ091dERpc2NhcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dEZyYWdSZXFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuSENPdXRGcmFnUmVxZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJldl92YWxzLT5vbGRfc3RhdHMtPkhDT3V0RnJhZ1JlcWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dEZyYWdPS3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3ZhbHMtPnN0YXRzLkhDT3V0RnJhZ09LcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+SENPdXRGcmFnT0tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dEZyYWdGYWlscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuSENPdXRGcmFnRmFpbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJldl92YWxzLT5vbGRfc3RhdHMtPkhDT3V0RnJhZ0ZhaWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld192YWxzLT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5IQ091dEZyYWdDcmVhdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CiAgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ0luUmVjZWl2ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3ZhbHMtPnN0YXRzLkhDSW5SZWNlaXZlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+SENJblJlY2VpdmVzLApAQCAtMzM0LDIwICs0MTQsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+SENPdXRCY2FzdFBrdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKICAgICB9Ci0gICAgCisKICAgICAvKgogICAgICAqIGlmIHdlJ3ZlIGRlY2lkZWQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gY2hlY2sgd3JhcHMsIGZyZWUgb2xkIHN0YXRzCiAgICAgICovCiAgICAgaWYgKDAgPT0gbmVlZF93cmFwX2NoZWNrKSB7CiAgICAgICAgIFNOTVBfRlJFRShwcmV2X3ZhbHMtPm9sZF9zdGF0cyk7Ci0gICAgfQotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIHVwZGF0ZSBvbGQgc3RhdHMgZnJvbSBuZXcgc3RhdHMuCiAgICAgICAgICAqIGNhcmVmdWwgLSBvbGRfc3RhdHMgaXMgYSBwb2ludGVyIHRvIHN0YXRzLi4uCiAgICAgICAgICAqLwogICAgICAgICBtZW1jcHkocHJldl92YWxzLT5vbGRfc3RhdHMsICZuZXdfdmFscy0+c3RhdHMsIHNpemVvZihuZXdfdmFscy0+c3RhdHMpKTsKICAgICB9CisKKyAgICBfY2FsY3VsYXRlX2VudHJpZXMocHJldl92YWxzKTsKKwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNjgsNyArNDUwLDggQEAKICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzIiwgImNvcHlcbiIpKTsKICAgICAKICAgICBpZiAoKE5VTEwgPT0gbGhzKSB8fCAoTlVMTCA9PSByaHMpIHx8Ci0gICAgICAgIChsaHMtPm5zX2lwX3ZlcnNpb24gIT0gcmhzLT5uc19pcF92ZXJzaW9uKSkKKyAgICAgICAgKGxocy0+aW5kZXhbMF0gIT0gcmhzLT5pbmRleFswXSkKKyAgICAgICAgfHwgKGxocy0+aW5kZXhbMV0gIT0gcmhzLT5pbmRleFsxXSkpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jCmluZGV4IDNlMGZkODcuLjNiYTg2NDYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKiAgaXBTeXN0ZW1TdGF0c1RhYmxlIGFuZCBpcElmU3RhdHNUYWJsZSBpbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CiAgKgogICogJElkJAogICovCkBAIC0xMCwxMiArMTAsMjAgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pcHN0YXRzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaD4KIAorI2luY2x1ZGUgIi4uL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaCIKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisKIHN0YXRpYyBpbnQgX3N5c3RlbXN0YXRzX3Y0KG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpOworc3RhdGljIGludCBfYWRkaXRpb25hbF9zeXN0ZW1zdGF0c192NChuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5KiBlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncyk7CisKICNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQogc3RhdGljIGludCBfc3lzdGVtc3RhdHNfdjYobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncyk7CiAjZW5kaWYKIAotCiB2b2lkCiBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19hcmNoX2luaXQodm9pZCkKIHsKQEAgLTYyLDcgKzcwLDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGFjY2Vzc19zeXN0ZW1zdGF0c19cbiIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotCisgICAgCiAgICAgLyoKICAgICAgKiBsb2FkIHY0IGFuZCB2NiBzdGF0cy4gRXZlbiBpZiBvbmUgZmFpbHMsIHRyeSB0aGUgb3RoZXIuCiAgICAgICogSWYgdGhleSBoYXZlIHRoZSBzYW1lIHJjLCByZXR1cm4gaXQuIGlmIHRoZSBkaWZmZXIsIHJldHVybgpAQCAtODEsNiArODksOSBAQAogI2VuZGlmCiB9CiAKKy8qCisgKiBCYXNlZCBvbiBsb2FkX2ZsYWdzLCBsb2FkIGlwU3lzdGVtU3RhdHNUYWJsZSBvciBpcElmU3RhdHNUYWJsZSBmb3IgaXB2NCBlbnRyaWVzLiAKKyAqLwogc3RhdGljIGludAogX3N5c3RlbXN0YXRzX3Y0KG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCiB7CkBAIC05MiwxMSArMTAzLDE2IEBACiAgICAgaW50ICAgICAgICAgICAgIGxlbjsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2Nhbl92YWxzWzE5XTsKIAotICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NCAoZmxhZ3MgJXApXG4iLAorICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NCAoZmxhZ3MgJXgpXG4iLAogICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKIAogICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLwogCisgICAgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX0lGVEFCTEUpIHsKKyAgICAgICAgLyogd2UgZG8gbm90IHN1cHBvcnQgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjQgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKCEoZGV2aW4gPSBmb3BlbigiL3Byb2MvbmV0L3NubXAiLCAiciIpKSkgewogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzIiwKICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBsb2FkIFN5c3RlbXN0YXRzIFRhYmxlIChsaW51eDEpXG4iKSk7CkBAIC0xNDQsNyArMTYwLDcgQEAKICAgICAgICAgd2hpbGUgKCpzdGF0cyA9PSAnICcpIC8qIHNraXAgc3BhY2VzIGJlZm9yZSBzdGF0cyAqLwogICAgICAgICAgICAgc3RhdHMrKzsKIAotICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZSgxKTsKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoMSwgMCk7CiAgICAgICAgIGlmKE5VTEwgPT0gZW50cnkpIHsKICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0ZSRUVfTk9GTEFHUyk7CkBAIC0xODUsMjMgKzIwMSw1NCBAQAogICAgICAgICBlbnRyeS0+c3RhdHMuSENJblJlY2VpdmVzLmhpZ2ggPSBzY2FuX3ZhbHNbMl0gPj4gMzI7CiAgICAgICAgIGVudHJ5LT5zdGF0cy5JbkhkckVycm9ycyA9IHNjYW5fdmFsc1szXTsKICAgICAgICAgZW50cnktPnN0YXRzLkluQWRkckVycm9ycyA9IHNjYW5fdmFsc1s0XTsKLSAgICAgICAgZW50cnktPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zLmxvdyA9IHNjYW5fdmFsc1s1XSAmIDB4ZmZmZmZmZmY7Ci0gICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5oaWdoID0gc2Nhbl92YWxzWzVdID4+IDMyOworICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdyA9IHNjYW5fdmFsc1s1XSAmIDB4ZmZmZmZmZmY7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMuaGlnaCA9IHNjYW5fdmFsc1s1XSA+PiAzMjsKICAgICAgICAgZW50cnktPnN0YXRzLkluVW5rbm93blByb3RvcyA9IHNjYW5fdmFsc1s2XTsKICAgICAgICAgZW50cnktPnN0YXRzLkluRGlzY2FyZHMgPSBzY2FuX3ZhbHNbN107CiAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luRGVsaXZlcnMubG93ID0gc2Nhbl92YWxzWzhdICYgMHhmZmZmZmZmZjsKICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5EZWxpdmVycy5oaWdoID0gc2Nhbl92YWxzWzhdID4+IDMyOwogICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3cgPSBzY2FuX3ZhbHNbOV0gJiAweGZmZmZmZmZmOwogICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5oaWdoID0gc2Nhbl92YWxzWzldID4+IDMyOwotICAgICAgICBlbnRyeS0+c3RhdHMuT3V0RGlzY2FyZHMgPSBzY2FuX3ZhbHNbMTBdOwotICAgICAgICBlbnRyeS0+c3RhdHMuT3V0Tm9Sb3V0ZXMgPSBzY2FuX3ZhbHNbMTFdOworICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcy5sb3cgPSBzY2FuX3ZhbHNbMTBdICYgMHhmZmZmZmZmZjs7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dERpc2NhcmRzLmhpZ2ggPSBzY2FuX3ZhbHNbMTBdID4+IDMyOworICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXROb1JvdXRlcy5sb3cgPSBzY2FuX3ZhbHNbMTFdICYgMHhmZmZmZmZmZjs7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmhpZ2ggPSBzY2FuX3ZhbHNbMTFdID4+IDMyOwogICAgICAgICAvKiBlbnRyeS0+c3RhdHMuID0gc2Nhbl92YWxzWzEyXTsgLyAqIFJlYXNtVGltZW91dCAqLwogICAgICAgICBlbnRyeS0+c3RhdHMuUmVhc21SZXFkcyA9IHNjYW5fdmFsc1sxM107CiAgICAgICAgIGVudHJ5LT5zdGF0cy5SZWFzbU9LcyA9IHNjYW5fdmFsc1sxNF07CiAgICAgICAgIGVudHJ5LT5zdGF0cy5SZWFzbUZhaWxzID0gc2Nhbl92YWxzWzE1XTsKLSAgICAgICAgZW50cnktPnN0YXRzLk91dEZyYWdPS3MgPSBzY2FuX3ZhbHNbMTZdOwotICAgICAgICBlbnRyeS0+c3RhdHMuT3V0RnJhZ0ZhaWxzID0gc2Nhbl92YWxzWzE3XTsKLSAgICAgICAgZW50cnktPnN0YXRzLk91dEZyYWdDcmVhdGVzID0gc2Nhbl92YWxzWzE4XTsKKyAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5sb3cgPSBzY2FuX3ZhbHNbMTZdICYgMHhmZmZmZmZmZjs7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdPS3MuaGlnaCA9IHNjYW5fdmFsc1sxNl0gPj4gMzI7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscy5sb3cgPSBzY2FuX3ZhbHNbMTddICYgMHhmZmZmZmZmZjs7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscy5oaWdoID0gc2Nhbl92YWxzWzE3XSA+PiAzMjsKKyAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93ID0gc2Nhbl92YWxzWzE4XSAmIDB4ZmZmZmZmZmY7OworICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5oaWdoID0gc2Nhbl92YWxzWzE4XSA+PiAzMjsKKworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5BRERSRVJST1JTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGT1JXREFUQUdSQU1TXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5VTktOT1dOUFJPVE9TXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5ESVNDQVJEU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5ERUxJVkVSU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVERJU0NBUkRTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVROT1JPVVRFU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNRkFJTFNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1NdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdGQUlMU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0NSRUFURVNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFRlJFU0hSQVRFXSA9IDE7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogbG9hZCBhZGR0aW9uYWwgc3RhdGlzdGljcyBkZWZpbmVkIGJ5IFJGQyA0MjkzCisgICAgICAgICAqIEFzIHRoZXNlIGFyZSBzdXBwb3J0ZWQgbGludXggMi42LjIyIG9yIGxhdGVyLCBpdCBpcyBubyBwcm9ibGVtCisgICAgICAgICAqIGlmIGxvYWRpbmcgdGhlbSBhcmUgZmFpbGVkLgorICAgICAgICAgKi8KKyAgICAgICAgX2FkZGl0aW9uYWxfc3lzdGVtc3RhdHNfdjQoZW50cnksIGxvYWRfZmxhZ3MpOwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIGFkZCB0byBjb250YWluZXIKQEAgLTIxNiw0OCArMjYzLDEyMSBAQAogICAgIHJldHVybiAwOwogfQogICAgIAotI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCisjZGVmaW5lIElQX0VYVF9IRUFEICJJcEV4dDoiCiBzdGF0aWMgaW50Ci1fc3lzdGVtc3RhdHNfdjYobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK19hZGRpdGlvbmFsX3N5c3RlbXN0YXRzX3Y0KG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkqIGVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKIHsKICAgICBGSUxFICAgICAgICAgICAqZGV2aW47CiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF07Ci0gICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPSBOVUxMOwotICAgIGNoYXIgICAgICAgICAgICpzdGF0cywgKnN0YXJ0ID0gbGluZTsKLSAgICBpbnQgICAgICAgICAgICAgbGVuLCByYzsKLSAgICB1aW50bWF4X3QgICAgICAgc2Nhbl92YWw7Ci0gICAgY29uc3QgY2hhciAgICAgKmZpbGVuYW1lID0gIi9wcm9jL25ldC9zbm1wNiI7Ci0gICAgc3RhdGljIGludCAgICAgIHdhcm5lZF9vcGVuID0gMDsKKyAgICBpbnQgICAgICAgICAgICAgc2Nhbl9jb3VudDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2Nhbl92YWxzWzEyXTsKKyAgICBpbnQgICAgICAgICAgICAgcmV0dmFsID0gMDsKIAotICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NiAoZmxhZ3MgJXUpXG4iLAotICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzOmNvbnRhaW5lcjphcmNoIiwKKyAgICAgICAgICAgICAgICAibG9hZCBhZGR0aW9uYWwgdjQgKGZsYWdzICV1KVxuIiwgbG9hZF9mbGFncykpOwogCi0gICAgbmV0c25tcF9hc3NlcnQoY29udGFpbmVyICE9IE5VTEwpOyAvKiBsb2FkIGZ1bmN0aW9uIHNob3VsZGEgY2hlY2tlZCB0aGlzICovCi0KLSAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZSgyKTsKLSAgICBpZihOVUxMID09IGVudHJ5KQotICAgICAgICByZXR1cm4gLTM7Ci0gICAgCi0gICAgLyoKLSAgICAgKiB0cnkgdG8gb3BlbiBmaWxlLiBJZiB3ZSBjYW4ndCwgdGhhdCdzIG9rIC0gbWF5YmUgdGhlIG1vZHVsZSBoYXNuJ3QKLSAgICAgKiBiZWVuIGxvYWRlZCB5ZXQuCi0gICAgICovCi0gICAgaWYgKCEoZGV2aW4gPSBmb3BlbihmaWxlbmFtZSwgInIiKSkpIHsKKyAgICBpZiAoIShkZXZpbiA9IGZvcGVuKCIvcHJvYy9uZXQvbmV0c3RhdCIsICJyIikpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHMiLAotICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGxvYWQgU3lzdGVtc3RhdHMgVGFibGUgKGxpbnV4MSlcbiIpKTsKLSAgICAgICAgaWYoIXdhcm5lZF9vcGVuKSB7Ci0gICAgICAgICAgICArK3dhcm5lZF9vcGVuOwotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNhbm5vdCBvcGVuICVzIC4uLlxuIiwgZmlsZW5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGZyZWUoZW50cnkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBvcGVuIC9wcm9jL25ldC9uZXRzdGF0XG4iKSk7CisgICAgICAgIHJldHVybiAtMjsKICAgICB9CiAKICAgICAvKgotICAgICAqIFRoaXMgZmlsZSBwcm92aWRlcyB0aGUgc3RhdGlzdGljcyBmb3IgZWFjaCBzeXN0ZW1zdGF0cy4KKyAgICAgKiBHZXQgaGVhZGVyIGFuZCBzdGF0IGxpbmVzCisgICAgICovCisgICAgd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZGV2aW4pKSB7CisgICAgICAgIGlmIChzdHJuY21wKElQX0VYVF9IRUFELCBsaW5lLCBzaXplb2YoSVBfRVhUX0hFQUQpIC0gMSkgPT0gMCkgeworICAgICAgICAgICAgLyogbmV4dCBsaW5lIHNob3VsZCBpbmNsdWRlcyBJUHY0IGFkZHRpb25hbCBzdGF0aXN0aWNzICovCisgICAgICAgICAgICBpZiAoKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZGV2aW4pKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dmFsID0gLTQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RybmNtcChJUF9FWFRfSEVBRCwgbGluZSwgc2l6ZW9mKElQX0VYVF9IRUFEKSAtIDEpICE9IDApIHsKKyAgICAgICAgICAgICAgICByZXR2YWwgPSAtNDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWVtc2V0KHNjYW5fdmFscywgMHgwLCBzaXplb2Yoc2Nhbl92YWxzKSk7CisgICAgICAgICAgICBzY2FuX2NvdW50ID0gc3NjYW5mKGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlKnMiICAgLyogaWdub3JlIGBJcEV4dDonICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzY2FuX3ZhbHNbMF0sICZzY2FuX3ZhbHNbMV0sICZzY2FuX3ZhbHNbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzY2FuX3ZhbHNbM10sICZzY2FuX3ZhbHNbNF0sICZzY2FuX3ZhbHNbNV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzY2FuX3ZhbHNbNl0sICZzY2FuX3ZhbHNbN10sICZzY2FuX3ZhbHNbOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzY2FuX3ZhbHNbOV0sICZzY2FuX3ZhbHNbMTBdLCAmc2Nhbl92YWxzWzExXSk7CisgICAgICAgICAgICBpZiAoc2Nhbl9jb3VudCA8IDYpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yIHNjYW5uaW5nIGFkZHRpb25hbCBzeXN0ZW1zdGF0cyBkYXRhIgorICAgICAgICAgICAgICAgICAgICAgICAgIihtaW5pbXVtIGV4cGVjdGVkICVkLCBnb3QgJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgNiwgc2Nhbl9jb3VudCk7CisgICAgICAgICAgICAgICAgcmV0dmFsID0gLTQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTm9Sb3V0ZXMubG93ICAgID0gc2Nhbl92YWxzWzBdICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTm9Sb3V0ZXMuaGlnaCAgID0gc2Nhbl92YWxzWzBdID4+IDMyOworICAgICAgICAgICAgZW50cnktPnN0YXRzLkluVHJ1bmNhdGVkUGt0cyAgICAgPSBzY2FuX3ZhbHNbMV07CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0UGt0cy5sb3cgICA9IHNjYW5fdmFsc1syXSAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0UGt0cy5oaWdoICA9IHNjYW5fdmFsc1syXSA+PiAzMjsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5sb3cgID0gc2Nhbl92YWxzWzNdICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5oaWdoID0gc2Nhbl92YWxzWzNdID4+IDMyOworICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5CY2FzdFBrdHMubG93ICAgPSBzY2FuX3ZhbHNbNF0gJiAweGZmZmZmZmZmOworICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5CY2FzdFBrdHMuaGlnaCAgPSBzY2FuX3ZhbHNbNF0gPj4gMzI7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRCY2FzdFBrdHMubG93ICA9IHNjYW5fdmFsc1s1XSAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRCY2FzdFBrdHMuaGlnaCA9IHNjYW5fdmFsc1s1XSA+PiAzMjsKKworICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTk9ST1VURVNdID0gMTsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5UUlVOQ0FURURQS1RTXSA9IDE7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVFBLVFNdID0gMTsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVFBLVFNdID0gMTsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkJDQVNUUEtUU10gPSAxOworICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEJDQVNUUEtUU10gPSAxOworCSAgICBpZiAoc2Nhbl9jb3VudCA+PSAxMikgeworCQllbnRyeS0+c3RhdHMuSENJbk9jdGV0cy5sb3cgICAgICAgID0gc2Nhbl92YWxzWzZdICYgMHhmZmZmZmZmZjsKKwkJZW50cnktPnN0YXRzLkhDSW5PY3RldHMuaGlnaCAgICAgICA9IHNjYW5fdmFsc1s2XSA+PiAzMjsKKwkJZW50cnktPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdyAgICAgICA9IHNjYW5fdmFsc1s3XSAmIDB4ZmZmZmZmZmY7CisJCWVudHJ5LT5zdGF0cy5IQ091dE9jdGV0cy5oaWdoICAgICAgPSBzY2FuX3ZhbHNbN10gPj4gMzI7CisJCWVudHJ5LT5zdGF0cy5IQ0luTWNhc3RPY3RldHMubG93ICAgPSBzY2FuX3ZhbHNbOF0gJiAweGZmZmZmZmZmOworCQllbnRyeS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmhpZ2ggID0gc2Nhbl92YWxzWzhdID4+IDMyOworCQllbnRyeS0+c3RhdHMuSENPdXRNY2FzdE9jdGV0cy5sb3cgID0gc2Nhbl92YWxzWzldICYgMHhmZmZmZmZmZjsKKwkJZW50cnktPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMuaGlnaCA9IHNjYW5fdmFsc1s5XSA+PiAzMjsKKwkJLyogMTAgYW5kIDExIGFyZSBJbi9PdXRCY2FzdE9jdGV0cyAqLworCQllbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5PQ1RFVFNdID0gMTsKKwkJZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE9DVEVUU10gPSAxOworCQllbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVE9DVEVUU10gPSAxOworCQllbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RPQ1RFVFNdID0gMTsKKwkgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZmNsb3NlKGRldmluKTsKKworICAgIGlmIChyZXR2YWwgPCAwKQorICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzIiwKKyAgICAgICAgICAgICAgICAgICAgIi9wcm9jL25ldC9uZXRzdGF0IGRvZXMgbm90IGluY2x1ZGUgYWRkdGlvbmFsIHN0YXRzXG4iKSk7CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorICAgCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKworLyoKKyAqIExvYWQgb25lIC9wcm9jL25ldC9zbm1wNiAtIGxpa2UgZmlsZSAoZS5nLiAvcHJvYy9uZXQvZGV2X3NubXA2KQorICovIAorc3RhdGljIGludCAKK19zeXN0ZW1zdGF0c192Nl9sb2FkX2ZpbGUobmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnksIEZJTEUgKmRldmluKQoreworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdOworICAgIGNoYXIgICAgICAgICAgICpzdGF0cywgKnN0YXJ0ID0gbGluZTsKKyAgICBpbnQgICAgICAgICAgICAgbGVuLCByYzsKKyAgICB1aW50bWF4X3QgICAgICAgc2Nhbl92YWw7CisKKyAgICAvKgogICAgICAqIFJlYWQgaW4gZWFjaCBsaW5lIGluIHR1cm4sIGlzb2xhdGUgdGhlIHN5c3RlbXN0YXRzIG5hbWUKICAgICAgKiAgIGFuZCByZXRyaWV2ZSAob3IgY3JlYXRlKSB0aGUgY29ycmVzcG9uZGluZyBkYXRhIHN0cnVjdHVyZS4KICAgICAgKi8KKyAgICByYyA9IDA7CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgc3RhcnQgPSBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGRldmluKTsKICAgICAgICAgaWYgKE5VTEwgPT0gc3RhcnQpCkBAIC0yODcsNzcgKzQwNywxMjMgQEAKICAgICAgICAgICogICAgICBkYXRhIHN0cnVjdHVyZSBhY2NvcmRpbmdseS4KICAgICAgICAgICovCiAgICAgICAgIHNjYW5fdmFsID0gYXRvbGwoc3RhdHMpOwotICAgICAgICBpZiAoMCA9PSBzY2FuX3ZhbCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHJjID0gMDsKICAgICAgICAgaWYgKCdJJyA9PSBsaW5lWzNdKSB7IC8qIEluICovCiAgICAgICAgICAgICBpZiAoJ0EnID09IGxpbmVbNV0pIHsKICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSW5BZGRyRXJyb3JzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlNdID0gMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ0QnID09IGxpbmVbNV0pIHsKICAgICAgICAgICAgICAgICBpZiAoJ2UnID09IGxpbmVbNl0pIHsKICAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5EZWxpdmVycy5sb3cgPSBzY2FuX3ZhbCAgJiAweGZmZmZmZmZmOwogICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdpJyA9PSBsaW5lWzZdKQorICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5ERUxJVkVSU10gPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2knID09IGxpbmVbNl0pIHsKICAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkluRGlzY2FyZHMgPSBzY2FuX3ZhbDsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5ESVNDQVJEU10gPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICByYyA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdIJyA9PSBsaW5lWzVdKSB7CiAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkluSGRyRXJyb3JzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkhEUkVSUk9SU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnTScgPT0gbGluZVs1XSkgewotICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTWNhc3RQa3RzLmxvdyA9IHNjYW5fdmFsICAmIDB4ZmZmZmZmZmY7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5NY2FzdFBrdHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGlmICgnUCcgPT0gbGluZVsxMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5NY2FzdFBrdHMubG93ID0gc2Nhbl92YWwgICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5NY2FzdFBrdHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVFBLVFNdID0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdPJyA9PSBsaW5lWzEwXSkgeworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmxvdyA9IHNjYW5fdmFsICAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTWNhc3RPY3RldHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVE9DVEVUU10gPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICByYyA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdOJyA9PSBsaW5lWzVdKSB7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkluTm9Sb3V0ZXMgPSBzY2FuX3ZhbDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk5vUm91dGVzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk5vUm91dGVzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5OT1JPVVRFU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnUicgPT0gbGluZVs1XSkgewogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOwogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTlJFQ0VJVkVTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdUJyA9PSBsaW5lWzVdKSB7CiAgICAgICAgICAgICAgICAgaWYgKCdyJyA9PSBsaW5lWzZdKSB7CiAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5JblRydW5jYXRlZFBrdHMgPSBzY2FuX3ZhbCAgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOVFJVTkNBVEVEUEtUU10gPSAxOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ28nID09IGxpbmVbNl0pCiAgICAgICAgICAgICAgICAgICAgIDsgLyogVG9vQmlnIGlzbid0IGluIHRoZSBNSUIsIHNvIGlnbm9yZSBpdCAqLwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmMgPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnVScgPT0gbGluZVs1XSkgewogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5JblVua25vd25Qcm90b3MgPSBzY2FuX3ZhbDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOVU5LTk9XTlBST1RPU10gPSAxOworICAgICAgICAgICAgfSBlbHNlIGlmICgnTycgPT0gbGluZVs1XSkgeworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luT2N0ZXRzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk9jdGV0cy5oaWdoID0gc2Nhbl92YWwgID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk9DVEVUU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmMgPSAxOwogICAgICAgICB9IGVsc2UgaWYgKCdPJyA9PSBsaW5lWzNdKSB7IC8qIE91dCAqLwogICAgICAgICAgICAgaWYgKCdEJyA9PSBsaW5lWzZdKSB7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLk91dERpc2NhcmRzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dERpc2NhcmRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdID0gMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ0YnID09IGxpbmVbNl0pIHsKICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnTScgPT0gbGluZVs2XSkgewotICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBpZiAoJ1AnID09IGxpbmVbMTFdKSB7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVFBLVFNdID0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdPJyA9PSBsaW5lWzExXSkgeworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRNY2FzdE9jdGV0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUT0NURVRTXSA9IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJjID0gLTE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdOJyA9PSBsaW5lWzZdKSB7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLk91dE5vUm91dGVzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdID0gMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ1InID09IGxpbmVbNl0pIHsKICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CiAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10gPSAxOworICAgICAgICAgICAgfSBlbHNlIGlmICgnTycgPT0gbGluZVs2XSkgeworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE9jdGV0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0T2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUT0NURVRTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICByYyA9IDE7CiAgICAgICAgIH0gZWxzZSBpZiAoJ1InID09IGxpbmVbM10pIHsgLyogUmVhc20gKi8KICAgICAgICAgICAgIGlmICgnRicgPT0gbGluZVs4XSkgewogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5SZWFzbUZhaWxzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTUZBSUxTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdPJyA9PSBsaW5lWzhdKSB7CiAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLlJlYXNtT0tzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnUicgPT0gbGluZVs4XSkgewogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5SZWFzbVJlcWRzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTVJFUURTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdUJyA9PSBsaW5lWzhdKSB7CiAgICAgICAgICAgICAgICAgOyAvKiBubyBtaWIgZW50cnkgZm9yIHJlYXNtIHRpbWVvdXQgKi8KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHJjID0gMTsKICAgICAgICAgfSBlbHNlIGlmICgnRicgPT0gbGluZVszXSkgeyAvKiBGcmFnICovCi0gICAgICAgICAgICBpZiAoJ0MnID09IGxpbmVbN10pCi0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLk91dEZyYWdDcmVhdGVzID0gc2Nhbl92YWw7Ci0gICAgICAgICAgICBlbHNlIGlmICgnTycgPT0gbGluZVs3XSkKLSAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuT3V0RnJhZ09LcyA9IHNjYW5fdmFsOwotICAgICAgICAgICAgZWxzZSBpZiAoJ0YnID09IGxpbmVbN10pCi0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLk91dEZyYWdGYWlscyA9IHNjYW5fdmFsOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKCdDJyA9PSBsaW5lWzddKSB7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0NSRUFURVNdID0gMTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoJ08nID09IGxpbmVbN10pIHsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR09LU10gPSAxOworICAgICAgICAgICAgfSBlbHNlIGlmICgnRicgPT0gbGluZVs3XSkgeworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSA9IDE7CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICByYyA9IDE7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmMgPSAxOwpAQCAtMzY1LDYgKzUzMSw0MiBAQAogICAgICAgICBpZiAocmMpCiAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzIiwgInVua25vd24gc3RhdCAlc1xuIiwgbGluZSkpOwogICAgIH0KKyAgICAvKgorICAgICAqIExldCBEaXNjb250aW51aXR5VGltZSBhbmQgUmVmcmVzaFJhdGUgYWN0aXZlCisgICAgICovCisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVGUkVTSFJBVEVdID0gMTsKKworICAgIHJldHVybiByYzsKK30KKworLyoKKyAqIGxvYWQgaXBTeXN0ZW1TdGF0c1RhYmxlIGZvciBpcHY2IGVudHJpZXMKKyAqLworc3RhdGljIGludCAKK19zeXN0ZW1zdGF0c192Nl9sb2FkX3N5c3RlbXN0YXRzKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgRklMRSAqZGV2aW47CisgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgICAgICpmaWxlbmFtZSA9ICIvcHJvYy9uZXQvc25tcDYiOworICAgIGludCByYyA9IDA7CisgICAgCisgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoMiwgMCk7CisgICAgaWYoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0zOworICAgIAorICAgIC8qCisgICAgICogdHJ5IHRvIG9wZW4gZmlsZS4gSWYgd2UgY2FuJ3QsIHRoYXQncyBvayAtIG1heWJlIHRoZSBtb2R1bGUgaGFzbid0CisgICAgICogYmVlbiBsb2FkZWQgeWV0LgorICAgICAqLworICAgIGlmICghKGRldmluID0gZm9wZW4oZmlsZW5hbWUsICJyIikpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHMiLAorICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gbG9hZCBTeXN0ZW1zdGF0cyBUYWJsZSAobGludXgxKSwgY2Fubm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgZmlsZW5hbWUpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIHJjID0gX3N5c3RlbXN0YXRzX3Y2X2xvYWRfZmlsZShlbnRyeSwgZGV2aW4pOwogCiAgICAgZmNsb3NlKGRldmluKTsKIApAQCAtMzgwLDQgKzU4MiwxMTcgQEAKIAogICAgIHJldHVybiByYzsKIH0KKworI2RlZmluZSBERVZfU05NUDZfRElSTkFNRSAgICIvcHJvYy9uZXQvZGV2X3NubXA2IgorI2RlZmluZSBJRklOREVYX0xJTkUgICAgICAgICJpZkluZGV4IgorI2RlZmluZSBERVZfRklMRU5BTUVfTEVOICAgIDY0CisKKy8qCisgKiBsb2FkIGlwSWZTdGF0c1RhYmxlIGZvciBpcHY2IGVudHJpZXMKKyAqLworc3RhdGljIGludCAKK19zeXN0ZW1zdGF0c192Nl9sb2FkX2lmc3RhdHMobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBESVIgICAgICAgICAgICAqZGV2X3NubXA2X2RpcjsKKyAgICBzdHJ1Y3QgZGlyZW50ICAqZGV2X3NubXA2X2VudHJ5OworICAgIGNoYXIgICAgICAgICAgIGRldl9maWxlbmFtZVtERVZfRklMRU5BTUVfTEVOXTsKKyAgICBGSUxFICAgICAgICAgICAqZGV2aW47CisgICAgY2hhciAgICAgICAgICAgbGluZVsxMDI0XTsKKyAgICBjaGFyICAgICAgICAgICAqc3RhcnQgPSBsaW5lOworICAgIGNoYXIgICAgICAgICAgICpzY2FuX3N0cjsKKyAgICB1aW50bWF4X3QgICAgICAgc2Nhbl92YWw7CisgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPSBOVUxMOworICAgICAgICAgICAgCisgICAgLyoKKyAgICAgKiB0cnkgdG8gb3BlbiAvcHJvYy9uZXQvZGV2X3NubXA2IGRpcmVjdG9yeS4gSWYgd2UgY2FuJ3QsIHRoYXQnIG9rIC0KKyAgICAgKiBtYXliZSBpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IHJ1bm5pbmcga2VybmVsLgorICAgICAqLworICAgIGlmICgoZGV2X3NubXA2X2RpciA9IG9wZW5kaXIoREVWX1NOTVA2X0RJUk5BTUUpKSA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aWZzdGF0cyIsCisgICAgICAgICJGYWlsZWQgdG8gbG9hZCBJUHY2IElmU3RhdHMgVGFibGUgKGxpbnV4KVxuIikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBSZWFkIGVhY2ggcGVyIGludGVyZmFjZSBzdGF0aXN0aWNzIHByb2MgZmlsZQorICAgICAqLworICAgIHdoaWxlICgoZGV2X3NubXA2X2VudHJ5ID0gcmVhZGRpcihkZXZfc25tcDZfZGlyKSkgIT0gTlVMTCkgeworICAgICAgICBpZiAoZGV2X3NubXA2X2VudHJ5LT5kX25hbWVbMF0gPT0gJy4nKQorICAgICAgICAgICAgY29udGludWU7CisgICAgCisgICAgICAgIGlmIChzbnByaW50ZihkZXZfZmlsZW5hbWUsIERFVl9GSUxFTkFNRV9MRU4sICIlcy8lcyIsIERFVl9TTk1QNl9ESVJOQU1FLAorICAgICAgICAgICAgICAgIGRldl9zbm1wNl9lbnRyeS0+ZF9uYW1lKSA+IERFVl9GSUxFTkFNRV9MRU4pIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJJbnRlcmZhY2UgbmFtZSAlcyBpcyB0b28gbG9uZ1xuIiwKKyAgICAgICAgICAgICAgICAgICAgZGV2X3NubXA2X2VudHJ5LT5kX25hbWUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5VTEwgPT0gKGRldmluID0gZm9wZW4oZGV2X2ZpbGVuYW1lLCAiciIpKSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkZhaWxlZCB0byBvcGVuICVzXG4iLCBkZXZfZmlsZW5hbWUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogSWYgYSBzdGF0IGZpbGUgbmFtZSBpcyBtYWRlIG9mIGRpZ2l0cywgdGhlIG5hbWUgaXMgaW50ZXJmYWNlIGluZGV4LgorICAgICAgICAgKiBJZiBpdCBpcyBhbiBpbnRlcmZhY2UgbmFtZSwgdGhlIGZpbGUgaW5jbHVkZXMgYSBsaW5lIGxhYmVsZWQgaWZJbmRleC4KKyAgICAgICAgICovCisgICAgICAgIGlmIChpc2RpZ2l0KGRldl9zbm1wNl9lbnRyeS0+ZF9uYW1lWzBdKSkgeworICAgICAgICAgICAgc2Nhbl92YWwgPSBzdHJ0b3VsbChkZXZfc25tcDZfZW50cnktPmRfbmFtZSwgTlVMTCwgMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSAoc3RhcnQgPSBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGRldmluKSkpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXMgZG9lc24ndCBpbmNsdWRlIGFueSBsaW5lc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldl9maWxlbmFtZSk7CisgICAgICAgICAgICAgICAgZmNsb3NlKGRldmluKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIGlmICgwICE9IHN0cm5jbXAoc3RhcnQsIElGSU5ERVhfTElORSwgNykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXMgZG9lc24ndCBpbmNsdWRlIGlmSW5kZXggbGluZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIGZjbG9zZShkZXZpbik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNjYW5fc3RyID0gc3RycmNocihsaW5lLCAnICcpOworICAgICAgICAgICAgaWYgKE5VTEwgPT0gc2Nhbl9zdHIpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXMgaXMgd3JvbmcgZm9ybWF0IiwgZGV2X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICBmY2xvc2UoZGV2aW4pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2Nhbl92YWwgPSBzdHJ0b3VsbChzY2FuX3N0ciwgTlVMTCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKDIsIHNjYW5fdmFsKTsKKyAgICAgICAgaWYoTlVMTCA9PSBlbnRyeSkgeworICAgICAgICAgICAgZmNsb3NlKGRldmluKTsKKyAgICAgICAgICAgIGNsb3NlZGlyKGRldl9zbm1wNl9kaXIpOworICAgICAgICAgICAgcmV0dXJuIC0zOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBfc3lzdGVtc3RhdHNfdjZfbG9hZF9maWxlKGVudHJ5LCBkZXZpbik7CisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisgICAgICAgIGZjbG9zZShkZXZpbik7CisgICAgfQorICAgIGNsb3NlZGlyKGRldl9zbm1wNl9kaXIpOworICAgIHJldHVybiAwOworfQorCisvKgorICogQmFzZWQgb24gbG9hZF9mbGFncywgbG9hZCBpcFN5c3RlbVN0YXRzVGFibGUgb3IgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjYgZW50cmllcy4gCisgKi8KK3N0YXRpYyBpbnQKK19zeXN0ZW1zdGF0c192NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NiAoZmxhZ3MgJXUpXG4iLAorICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLworCisgICAgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX0lGVEFCTEUpIHsKKyAgICAgICAgLyogbG9hZCBpcElmU3RhdHNUYWJsZSAqLworICAgICAgICByZXR1cm4gX3N5c3RlbXN0YXRzX3Y2X2xvYWRfaWZzdGF0cyhjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGxvYWQgaXBTeXN0ZW1TdGF0c1RhYmxlICovCisgICAgICAgIHJldHVybiBfc3lzdGVtc3RhdHNfdjZfbG9hZF9zeXN0ZW1zdGF0cyhjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIH0KK30KICNlbmRpZiAvKiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19zb2xhcmlzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMmFiMWEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc29sYXJpczIuYwpAQCAtMCwwICsxLDIxMiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oPgorCisjaW5jbHVkZSAia2VybmVsX3N1bm9zNS5oIgorCitzdGF0aWMgaW50IF9zeXN0ZW1zdGF0cyhtaWJncm91cF9lLCBuZXRzbm1wX2NvbnRhaW5lciAqLCB1X2ludCk7CitzdGF0aWMgdm9pZCBfYWRkX2lwc3RhdHMobWliMl9pcElmU3RhdHNFbnRyeV90ICosIG1pYjJfaXBJZlN0YXRzRW50cnlfdCAqKTsKK3N0YXRpYyBpbnQgX2luc2VydF9lbnRyeShuZXRzbm1wX2NvbnRhaW5lciAqLCBtaWIyX2lwSWZTdGF0c0VudHJ5X3QgKik7CisKK3ZvaWQKK25ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2FyY2hfaW5pdCh2b2lkKQoreworICAgIGluaXRfa2VybmVsX3N1bm9zNSgpOworfQorCisvKgorICogQHJldHZhbCAgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIGNvbnRhaW5lciBlcnJvcgorICogQHJldHZhbCAtMiBjb3VsZCBub3QgY3JlYXRlIGVudHJ5IChwcm9iYWJseSBtYWxsb2MpCisgKi8KK2ludAorbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgcmM7IAorICAgIAorICAgIGlmIChjb250YWluZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICgtMSk7CisKKyAgICBpZiAobG9hZF9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfSUZUQUJMRSkKKwlyZXR1cm4gMDsgLyogd2UgZG8gbm90IHN1cHBvcnQgaXBJZlN0YXRzVGFibGUgeWV0ICovCisKKyAgICBpZiAoKHJjID0gX3N5c3RlbXN0YXRzKE1JQl9JUF9UUkFGRklDX1NUQVRTLCBjb250YWluZXIsIGxvYWRfZmxhZ3MpKSA8IDApCisgICAgICAgIHJldHVybiAocmMpOworI2lmIGRlZmluZWQoTkVUU05NUF9FTkFCTEVfSVBWNikKKyAgICBpZiAoKHJjID0gX3N5c3RlbXN0YXRzKE1JQl9JUDYsIGNvbnRhaW5lciwgbG9hZF9mbGFncykpIDwgMCkgeworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLAorICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0ZSRUVfTk9GTEFHUyk7CisgICAgICAgIHJldHVybiAocmMpOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiAoMCk7Cit9CisKKy8qCisgKiBAcmV0dmFsIDAgc3VjY2VzcyAKKyAqIEByZXR2YWwgPDAgZXJyb3IKKyAqLworc3RhdGljIGludAorX3N5c3RlbXN0YXRzKG1pYmdyb3VwX2UgbWliLCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIG1pYjJfaXBJZlN0YXRzRW50cnlfdCBpcGUsIGlwdG90OworICAgIHJlcV9lIHJlcSA9IEdFVF9GSVJTVDsKKyAgICBpbnQgaXB2ZXJzaW9uID0gKG1pYiA9PSBNSUJfSVA2KSA/IE1JQjJfSU5FVEFERFJFU1NUWVBFX2lwdjYgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlCMl9JTkVUQUREUkVTU1RZUEVfaXB2NDsKKyAgICBtZW1zZXQoJmlwdG90LCAnXDAnLCBzaXplb2YoaXB0b3QpKTsKKworICAgIHdoaWxlIChnZXRNaWJzdGF0KG1pYiwgJmlwZSwgc2l6ZW9mKGlwZSksIHJlcSwgCisgICAgICAgICAgICAgICAgICAgICAgJkdldF9ldmVyeXRoaW5nLCBOVUxMKSA9PSAwKSB7IAorICAgICAgICByZXEgPSBHRVRfTkVYVDsKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoaXBlLmlwSWZTdGF0c0lQVmVyc2lvbiA9PSBpcHZlcnNpb24pOworICAgICAgICBfYWRkX2lwc3RhdHMoJmlwdG90LCAmaXBlKTsKKyAgICB9CisgICAgaXB0b3QuaXBJZlN0YXRzSVBWZXJzaW9uID0gaXB2ZXJzaW9uOworICAgIHJldHVybiBfaW5zZXJ0X2VudHJ5KGNvbnRhaW5lciwgJmlwdG90KTsKK30KKworc3RhdGljIHZvaWQKK19hZGRfaXBzdGF0cyhtaWIyX2lwSWZTdGF0c0VudHJ5X3QgKm8xLCBtaWIyX2lwSWZTdGF0c0VudHJ5X3QgKm8yKQoreworICAgIG8xLT5pcElmU3RhdHNJbkhkckVycm9ycyArPSBvMi0+aXBJZlN0YXRzSW5IZHJFcnJvcnM7CisgICAgbzEtPmlwSWZTdGF0c0luVG9vQmlnRXJyb3JzICs9IG8yLT5pcElmU3RhdHNJblRvb0JpZ0Vycm9yczsKKyAgICBvMS0+aXBJZlN0YXRzSW5Ob1JvdXRlcyArPSBvMi0+aXBJZlN0YXRzSW5Ob1JvdXRlczsKKyAgICBvMS0+aXBJZlN0YXRzSW5BZGRyRXJyb3JzICs9IG8yLT5pcElmU3RhdHNJbkFkZHJFcnJvcnM7CisgICAgbzEtPmlwSWZTdGF0c0luVW5rbm93blByb3RvcyArPSBvMi0+aXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zOworICAgIG8xLT5pcElmU3RhdHNJblRydW5jYXRlZFBrdHMgKz0gbzItPmlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0czsKKyAgICBvMS0+aXBJZlN0YXRzSW5EaXNjYXJkcyArPSBvMi0+aXBJZlN0YXRzSW5EaXNjYXJkczsKKyAgICBvMS0+aXBJZlN0YXRzT3V0RGlzY2FyZHMgKz0gbzItPmlwSWZTdGF0c091dERpc2NhcmRzOworICAgIG8xLT5pcElmU3RhdHNPdXRGcmFnT0tzICs9IG8yLT5pcElmU3RhdHNPdXRGcmFnT0tzOworICAgIG8xLT5pcElmU3RhdHNPdXRGcmFnRmFpbHMgKz0gbzItPmlwSWZTdGF0c091dEZyYWdGYWlsczsKKyAgICBvMS0+aXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXMgKz0gbzItPmlwSWZTdGF0c091dEZyYWdDcmVhdGVzOworICAgIG8xLT5pcElmU3RhdHNSZWFzbVJlcWRzICs9IG8yLT5pcElmU3RhdHNSZWFzbVJlcWRzOworICAgIG8xLT5pcElmU3RhdHNSZWFzbU9LcyArPSBvMi0+aXBJZlN0YXRzUmVhc21PS3M7CisgICAgbzEtPmlwSWZTdGF0c1JlYXNtRmFpbHMgKz0gbzItPmlwSWZTdGF0c1JlYXNtRmFpbHM7CisgICAgbzEtPmlwSWZTdGF0c091dE5vUm91dGVzICs9IG8yLT5pcElmU3RhdHNPdXROb1JvdXRlczsKKyAgICBvMS0+aXBJZlN0YXRzUmVhc21EdXBsaWNhdGVzICs9IG8yLT5pcElmU3RhdHNSZWFzbUR1cGxpY2F0ZXM7CisgICAgbzEtPmlwSWZTdGF0c1JlYXNtUGFydER1cHMgKz0gbzItPmlwSWZTdGF0c1JlYXNtUGFydER1cHM7CisgICAgbzEtPmlwSWZTdGF0c0ZvcndQcm9oaWJpdHMgKz0gbzItPmlwSWZTdGF0c0ZvcndQcm9oaWJpdHM7CisgICAgbzEtPnVkcEluQ2tzdW1FcnJzICs9IG8yLT51ZHBJbkNrc3VtRXJyczsKKyAgICBvMS0+dWRwSW5PdmVyZmxvd3MgKz0gbzItPnVkcEluT3ZlcmZsb3dzOworICAgIG8xLT5yYXdpcEluT3ZlcmZsb3dzICs9IG8yLT5yYXdpcEluT3ZlcmZsb3dzOworICAgIG8xLT5pcElmU3RhdHNJbldyb25nSVBWZXJzaW9uICs9IG8yLT5pcElmU3RhdHNJbldyb25nSVBWZXJzaW9uOworICAgIG8xLT5pcElmU3RhdHNPdXRXcm9uZ0lQVmVyc2lvbiArPSBvMi0+aXBJZlN0YXRzT3V0V3JvbmdJUFZlcnNpb247CisgICAgbzEtPmlwSWZTdGF0c091dFN3aXRjaElQVmVyc2lvbiArPSBvMi0+aXBJZlN0YXRzT3V0U3dpdGNoSVBWZXJzaW9uOworICAgIG8xLT5pcElmU3RhdHNIQ0luUmVjZWl2ZXMgKz0gbzItPmlwSWZTdGF0c0hDSW5SZWNlaXZlczsKKyAgICBvMS0+aXBJZlN0YXRzSENJbk9jdGV0cyArPSBvMi0+aXBJZlN0YXRzSENJbk9jdGV0czsKKyAgICBvMS0+aXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMgKz0gbzItPmlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zOworICAgIG8xLT5pcElmU3RhdHNIQ0luRGVsaXZlcnMgKz0gbzItPmlwSWZTdGF0c0hDSW5EZWxpdmVyczsKKyAgICBvMS0+aXBJZlN0YXRzSENPdXRSZXF1ZXN0cyArPSBvMi0+aXBJZlN0YXRzSENPdXRSZXF1ZXN0czsKKyAgICBvMS0+aXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zICs9IG8yLT5pcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXM7CisgICAgbzEtPmlwSWZTdGF0c091dEZyYWdSZXFkcyArPSBvMi0+aXBJZlN0YXRzT3V0RnJhZ1JlcWRzOworICAgIG8xLT5pcElmU3RhdHNIQ091dFRyYW5zbWl0cyArPSBvMi0+aXBJZlN0YXRzSENPdXRUcmFuc21pdHM7CisgICAgbzEtPmlwSWZTdGF0c0hDT3V0T2N0ZXRzICs9IG8yLT5pcElmU3RhdHNIQ091dE9jdGV0czsKKyAgICBvMS0+aXBJZlN0YXRzSENJbk1jYXN0UGt0cyArPSBvMi0+aXBJZlN0YXRzSENJbk1jYXN0UGt0czsKKyAgICBvMS0+aXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzICs9IG8yLT5pcElmU3RhdHNIQ0luTWNhc3RPY3RldHM7CisgICAgbzEtPmlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzICs9IG8yLT5pcElmU3RhdHNIQ091dE1jYXN0UGt0czsKKyAgICBvMS0+aXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0cyArPSBvMi0+aXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0czsKKyAgICBvMS0+aXBJZlN0YXRzSENJbkJjYXN0UGt0cyArPSBvMi0+aXBJZlN0YXRzSENJbkJjYXN0UGt0czsKKyAgICBvMS0+aXBJZlN0YXRzSENPdXRCY2FzdFBrdHMgKz0gbzItPmlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzOworICAgIG8xLT5pcHNlY0luU3VjY2VlZGVkICs9IG8yLT5pcHNlY0luU3VjY2VlZGVkOworICAgIG8xLT5pcHNlY0luRmFpbGVkICs9IG8yLT5pcHNlY0luRmFpbGVkOworICAgIG8xLT5pcEluQ2tzdW1FcnJzICs9IG8yLT5pcEluQ2tzdW1FcnJzOworICAgIG8xLT50Y3BJbkVycnMgKz0gbzItPnRjcEluRXJyczsKKyAgICBvMS0+dWRwTm9Qb3J0cyArPSBvMi0+dWRwTm9Qb3J0czsKK30KKworLyoKKyAqIEByZXR2YWwgMCBlbnRyeSB3YXMgc3VjY2Vzc2Z1bGx5IGluc2VydGVkIGluIHRoZSBjb250YWluZXIgCisgKiBAcmV0dmFsIC0xIGNvbnRhaW5lciBlcnJvcgorICogQHJldHZhbCAtMiBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvcgorICovCitzdGF0aWMgaW50IAorX2luc2VydF9lbnRyeShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBtaWIyX2lwSWZTdGF0c0VudHJ5X3QgKmlwZSkKK3sKKyAgICBpbnQgaTsKKyAgICAKKyAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplcCA9CisgICAgICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZShpcGUtPmlwSWZTdGF0c0lQVmVyc2lvbiwgMCk7IAorCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czphcmNoIiwgImluc2VydCBlbnRyeSBmb3IgdiVkXG4iLAorICAgICAgICAgICAgICAgIGlwZS0+aXBJZlN0YXRzSVBWZXJzaW9uKSk7IAorICAgIGlmIChlcCA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczpzeXN0ZW1zdGF0czphcmNoIiwgImluc2VydCBmYWlsZWQgKGFsbG9jKSIpKTsKKyAgICAgICAgcmV0dXJuICgtMik7CisgICAgfQorCisgICAgZXAtPnN0YXRzLkhDSW5SZWNlaXZlcy5sb3cgPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ0luUmVjZWl2ZXMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ0luUmVjZWl2ZXMuaGlnaCA9IGlwZS0+aXBJZlN0YXRzSENJblJlY2VpdmVzID4+IDMyOworICAgIGVwLT5zdGF0cy5IQ0luT2N0ZXRzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDSW5PY3RldHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ0luT2N0ZXRzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDSW5PY3RldHMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkluSGRyRXJyb3JzID0gaXBlLT5pcElmU3RhdHNJbkhkckVycm9yczsKKyAgICBlcC0+c3RhdHMuSW5BZGRyRXJyb3JzID0gaXBlLT5pcElmU3RhdHNJbkFkZHJFcnJvcnM7CisgICAgZXAtPnN0YXRzLkluVW5rbm93blByb3RvcyA9IGlwZS0+aXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zOworICAgIGVwLT5zdGF0cy5JblRydW5jYXRlZFBrdHMgPSBpcGUtPmlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0czsKKyAgICBlcC0+c3RhdHMuSENJbkZvcndEYXRhZ3JhbXMubG93ID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5oaWdoID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMgPj4gMzI7CisgICAgZXAtPnN0YXRzLlJlYXNtUmVxZHMgPSBpcGUtPmlwSWZTdGF0c1JlYXNtUmVxZHM7IAorICAgIGVwLT5zdGF0cy5SZWFzbU9LcyA9IGlwZS0+aXBJZlN0YXRzUmVhc21PS3M7IAorICAgIGVwLT5zdGF0cy5SZWFzbUZhaWxzID0gaXBlLT5pcElmU3RhdHNSZWFzbUZhaWxzOyAKKyAgICBlcC0+c3RhdHMuSW5EaXNjYXJkcyA9IGlwZS0+aXBJZlN0YXRzSW5EaXNjYXJkczsKKyAgICBlcC0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDSW5EZWxpdmVycyAmIDB4ZmZmZmZmZmY7IAorICAgIGVwLT5zdGF0cy5IQ0luRGVsaXZlcnMuaGlnaCA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDSW5EZWxpdmVycyA+PiAzMjsgCisgICAgZXAtPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93ID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENPdXRSZXF1ZXN0cyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0UmVxdWVzdHMuaGlnaCA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDT3V0UmVxdWVzdHMgPj4gMzI7IAorICAgIGVwLT5zdGF0cy5IQ091dE5vUm91dGVzLmxvdyA9IGlwZS0+aXBJZlN0YXRzT3V0Tm9Sb3V0ZXMgJiAweGZmZmZmZmZmOyAKKyAgICBlcC0+c3RhdHMuSENPdXROb1JvdXRlcy5oaWdoID0gMDsKKyAgICBlcC0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtcyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5oaWdoID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zID4+IDMyOworICAgIGVwLT5zdGF0cy5IQ091dERpc2NhcmRzLmxvdyA9IGlwZS0+aXBJZlN0YXRzT3V0RGlzY2FyZHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ091dERpc2NhcmRzLmhpZ2ggPSAwOyAKKyAgICBlcC0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdyA9IGlwZS0+aXBJZlN0YXRzT3V0RnJhZ09LcyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0RnJhZ09Lcy5oaWdoID0gMDsKKyAgICBlcC0+c3RhdHMuSENPdXRGcmFnRmFpbHMubG93ID0gaXBlLT5pcElmU3RhdHNPdXRGcmFnRmFpbHMgJiAweGZmZmZmZmZmOyAKKyAgICBlcC0+c3RhdHMuSENPdXRGcmFnRmFpbHMuaGlnaCA9IDA7CisgICAgZXAtPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93ID0gaXBlLT5pcElmU3RhdHNPdXRGcmFnQ3JlYXRlcyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMuaGlnaCA9IDA7CisgICAgZXAtPnN0YXRzLkhDT3V0VHJhbnNtaXRzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzICYgMHhmZmZmZmZmZjsKKyAgICBlcC0+c3RhdHMuSENPdXRUcmFuc21pdHMuaGlnaCA9IGlwZS0+aXBJZlN0YXRzSENPdXRUcmFuc21pdHMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdyA9IGlwZS0+aXBJZlN0YXRzSENPdXRPY3RldHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ091dE9jdGV0cy5oaWdoID0gaXBlLT5pcElmU3RhdHNIQ091dE9jdGV0cyA+PiAzMjsKKyAgICBlcC0+c3RhdHMuSENJbk1jYXN0UGt0cy5sb3cgPSBpcGUtPmlwSWZTdGF0c0hDSW5NY2FzdFBrdHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ0luTWNhc3RQa3RzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDSW5NY2FzdFBrdHMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkhDSW5NY2FzdE9jdGV0cy5sb3cgPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ0luTWNhc3RPY3RldHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ0luTWNhc3RPY3RldHMuaGlnaCA9IGlwZS0+aXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzID4+IDMyOworICAgIGVwLT5zdGF0cy5IQ091dE1jYXN0UGt0cy5sb3cgPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ091dE1jYXN0UGt0cyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzID4+IDMyOworICAgIGVwLT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkhDSW5CY2FzdFBrdHMubG93ID0gaXBlLT5pcElmU3RhdHNIQ0luQmNhc3RQa3RzICYgMHhmZmZmZmZmZjsKKyAgICBlcC0+c3RhdHMuSENJbkJjYXN0UGt0cy5oaWdoID0gaXBlLT5pcElmU3RhdHNIQ0luQmNhc3RQa3RzID4+IDMyOworICAgIGVwLT5zdGF0cy5IQ091dEJjYXN0UGt0cy5sb3cgPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ091dEJjYXN0UGt0cyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzID4+IDMyOworCisgICAgZm9yIChpPTA7IGk8PUlQU1lTVEVNU1RBVFNUQUJMRV9MQVNUOyBpKyspCisgICAgICAgIGVwLT5zdGF0cy5jb2x1bW5BdmFpbFtpXSA9IDE7CisgICAgCisgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlcCkgPCAwKSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczpzeXN0ZW1zdGF0czphcmNoIiwgInVuYWJsZSB0byBpbnNlcnQgZW50cnkiKSk7IAorICAgICAgICBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9mcmVlKGVwKTsgCisgICAgICAgIHJldHVybiAoLTEpOworICAgIH0KKyAgICByZXR1cm4gKDApOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5jCmluZGV4IDY1YWE4ZTMuLmFhYWUyZTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgImluZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmgiCiAKLW9pZCAgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX29pZFtdID0geyBJTkVUTkVUVE9NRURJQVRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfb2lkX3NpemUgPQorY29uc3Qgb2lkICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfb2lkW10gPSB7IElORVRORVRUT01FRElBVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRfc2l6ZSA9CiBPSURfTEVOR1RIKGluZXROZXRUb01lZGlhVGFibGVfb2lkKTsKIAogaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWdpc3RyYXRpb24gaW5ldE5ldFRvTWVkaWFUYWJsZV91c2VyX2NvbnRleHQ7CkBAIC0xNTksMTAgKzE1OSwxMCBAQAogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmluZXROZXRUb01lZGlhVGFibGU6aW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAiLCAiY2FsbGVkXG4iKSk7CiAKICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOwotCiAgICAgLyoKICAgICAgKiBUT0RPOjIxMTpvOiB8LT4gUGVyZm9ybSBleHRyYSBpbmV0TmV0VG9NZWRpYVRhYmxlIHJvd3JlcSBjbGVhbnVwLgogICAgICAqLworICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4LT5kYXRhKTsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAgKi8KIAogLyoqCkBAIC01MzYsMTEgKzUzNiw3IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGluZXROZXRUb01lZGlhTGFzdFVwZGF0ZWQgZGF0YS4KICAgICAgKiBjb3B5ICgqIGluZXROZXRUb01lZGlhTGFzdFVwZGF0ZWRfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLwotICAgIC8qCi0gICAgICogeHh4LXJrczogZ2V0IHRoaXMgdmFsdWU/Ci0gICAgICovCi0gICAgcmV0dXJuIE1GRF9TS0lQOwotCisgICAgKmluZXROZXRUb01lZGlhTGFzdFVwZGF0ZWRfdmFsX3B0ciA9IHJvd3JlcV9jdHgtPmRhdGEtPmFycF9sYXN0X3VwZGF0ZWQ7CiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmV0TmV0VG9NZWRpYUxhc3RVcGRhdGVkX2dldCAqLwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgKaW5kZXggN2YzZmNlMi4uNjMyODU0YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaApAQCAtMTU1LDYgKzE1NSw5IEBACiAgICAgICAgIGludCAgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVJvd1N0YXR1cywKICAgICAgICAgICAgIGluZXROZXRUb01lZGlhUm93U3RhdHVzX3VuZG87CiAKKyAgICAgICAgLyogZmxhZywgaWYgdGhlIHJvdyB3YXMgcHJlc2VudCBpbiBsYXN0IHJlYWQgZnJvbSBvcGVyYXRpbmcgc3lzdGVtICovCisgICAgICAgIGludCB2YWxpZDsKKwogICAgICAgICAvKgogICAgICAgICAgKiBzdG9yYWdlIGZvciBmdXR1cmUgZXhwYW5zaW9uCiAgICAgICAgICAqLwpAQCAtMjAwLDggKzIwMyw4IEBACiAgICAgICAgICogaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKGluZXROZXRUb01lZGlhVGFibGVfbWliX2luZGV4ICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAiaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCA4MTk0NTM0Li5lMThmOThhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0xMjksMTcgKzEyOSwzNCBAQAogICAgICAqIGNhY2hlLT5lbmFibGVkIHRvIDAuCiAgICAgICovCiAgICAgY2FjaGUtPnRpbWVvdXQgPSBJTkVUTkVUVE9NRURJQVRBQkxFX0NBQ0hFX1RJTUVPVVQ7IC8qIHNlY29uZHMgKi8KKworICAgIC8qIFdlIHdhbnQgdG8gbWFudWFsbHkgZGVsZXRlIGVudHJpZXMgaW4gdGhlIGNhY2hlIHRvIGtlZXAgTGFzdFVwZGF0ZWQKKyAgICAgKiB0aW1lc3RhbXAuICovCisgICAgY2FjaGUtPmZsYWdzIHw9IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FECisgICAgICAgICAgICAgICAgICAgIHwgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRDsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfaW5pdCAqLwogCiAvKioKLSAqIGNoZWNrIGVudHJ5IGZvciB1cGRhdGUKLSAqCisgKiBQdXQgYWxsIGVudHJpZXMgd2l0aCB2YWxpZCAhPTEgdG8gdGhlIGxpc3QgdG8gZGVsZXRlLgogICovCiBzdGF0aWMgdm9pZAotX3NuYXJmX2FycF9lbnRyeShuZXRzbm1wX2FycF9lbnRyeSAqYXJwX2VudHJ5LAorX2NvbGxlY3RfaW52YWxpZF9hcnBfY3R4KGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqY3R4LAorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG9fZGVsZXRlKQoreworICAgIGlmIChjdHgtPnZhbGlkKQorICAgICAgICAgICAgY3R4LT52YWxpZCA9IDA7CisgICAgZWxzZQorICAgICAgICBDT05UQUlORVJfSU5TRVJUKHRvX2RlbGV0ZSwgY3R4KTsKK30KKworLyoqCisgKiBjaGVjayBlbnRyeSBmb3IgdXBkYXRlCisgKi8KK3N0YXRpYyB2b2lkCitfYWRkX29yX3VwZGF0ZV9hcnBfZW50cnkobmV0c25tcF9hcnBfZW50cnkgKmFycF9lbnRyeSwKICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKIHsKLSAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4LCAqb2xkOwogICAgIGludCAgICAgICAgICAgICBpbmV0QWRkcmVzc1R5cGU7CiAKICAgICBERUJVR1RSQUNFOwpAQCAtMTU1LDcgKzE3Miw3IEBACiAgICAgICAgIGluZXRBZGRyZXNzVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY0OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgNjoKKyAgICBjYXNlIDE2OgogICAgICAgICBpbmV0QWRkcmVzc1R5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNjsKICAgICAgICAgYnJlYWs7CiAKQEAgLTE2Niw4ICsxODMsOCBAQAogICAgIH0KIAogICAgIC8qCi0gICAgICogYWxsb2NhdGUgYW4gcm93IGNvbnRleHQgYW5kIHNldCB0aGUgaW5kZXgoZXMpLCB0aGVuIGFkZCBpdCB0bwotICAgICAqIHRoZSBjb250YWluZXIKKyAgICAgKiBhbGxvY2F0ZSBhbiByb3cgY29udGV4dCBhbmQgc2V0IHRoZSBpbmRleChlcyksIHRoZW4gdHJ5IHRvIGZpbmQgaXQgaW4KKyAgICAgKiB0aGUgY2FjaGUuCiAgICAgICovCiAgICAgcm93cmVxX2N0eCA9IGluZXROZXRUb01lZGlhVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChhcnBfZW50cnksIE5VTEwpOwogICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KSAmJgpAQCAtMTc1LDggKzE5MiwyMyBAQAogICAgICAgICAgKHJvd3JlcV9jdHgsIHJvd3JlcV9jdHgtPmRhdGEtPmlmX2luZGV4LCBpbmV0QWRkcmVzc1R5cGUsCiAgICAgICAgICAgKGNoYXIgKikgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2lwYWRkcmVzcywKICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5hcnBfaXBhZGRyZXNzX2xlbikpKSB7Ci0gICAgICAgIHJvd3JlcV9jdHgtPmluZXROZXRUb01lZGlhUm93U3RhdHVzID0gUk9XU1RBVFVTX0FDVElWRTsKLSAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOworCisgICAgICAgIC8qIHRyeSB0byBmaW5kIG9sZCBlbnRyeSAqLworICAgICAgICBvbGQgPSBDT05UQUlORVJfRklORChjb250YWluZXIsIHJvd3JlcV9jdHgpOworICAgICAgICBpZiAob2xkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIHRoZSBlbnRyeSBpcyBhbHJlYWR5IHRoZXJlLCB1cGRhdGUgaXQgKi8KKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV91cGRhdGUob2xkLT5kYXRhLCBhcnBfZW50cnkpOworICAgICAgICAgICAgb2xkLT52YWxpZCA9IDE7IC8qIGRvIG5vdCBkZWxldGUgaXQgaW4gZm9sbG93aW5nIHN3ZWVwICovCisgICAgICAgICAgICAvKiBkZWxldGUgdGhlIGF1eGlsaWFyeSBjb250ZXh0IHdlIHVzZWQgdG8gZmluZCB0aGUgZW50cnkKKyAgICAgICAgICAgICAqICh0aGlzIGRlbGV0ZXMgYWxzbyBhcnBfZW50cnkpICovCisgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGNyZWF0ZSBuZXcgZW50cnkgYW5kIGFkZCBpdCB0byB0aGUgY2FjaGUqLworICAgICAgICAgICAgcm93cmVxX2N0eC0+aW5ldE5ldFRvTWVkaWFSb3dTdGF0dXMgPSBST1dTVEFUVVNfQUNUSVZFOworICAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2xhc3RfdXBkYXRlZCA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOworICAgICAgICAgICAgcm93cmVxX2N0eC0+dmFsaWQgPSAxOyAvKiBkbyBub3QgZGVsZXRlIGl0IGluIGZvbGxvd2luZyBzd2VlcCAqLworICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJvd3JlcV9jdHgpIHsKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBzZXR0aW5nIGluZGV4IHdoaWxlIGxvYWRpbmcgIgpAQCAtMjUzLDYgKzI4NSw3IEBACiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCiB7CiAgICAgbmV0c25tcF9jb250YWluZXIgKmFycF9jb250YWluZXI7CisgICAgbmV0c25tcF9jb250YWluZXIgKnRvX2RlbGV0ZSA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImxpZm8iKTsKIAogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmluZXROZXRUb01lZGlhVGFibGU6aW5ldE5ldFRvTWVkaWFUYWJsZV9jYWNoZV9sb2FkIiwgImNhbGxlZFxuIikpOwogCkBAIC0yNzIsMTcgKzMwNSwzMyBAQAogICAgICAqIHdlIGp1c3QgZ290IGEgZnJlc2ggY29weSBvZiBkYXRhLiBzbmFyZiBkYXRhCiAgICAgICovCiAgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGFycF9jb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfc25hcmZfYXJwX2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2FkZF9vcl91cGRhdGVfYXJwX2VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOwogCiAgICAgLyoKKyAgICAgKiBEZWxldGUgYWxsIGNhY2hlZCBlbnRyaWVzLCB3aGljaCB3ZXJlIG5vdCBwcm92aWRlZCBieQorICAgICAqIG5ldHNubXBfYWNjZXNzX2FycF9jb250YWluZXJfbG9hZAorICAgICAqLworICAgIENPTlRBSU5FUl9GT1JfRUFDSChjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfY29sbGVjdF9pbnZhbGlkX2FycF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgIHRvX2RlbGV0ZSk7CisgICAgd2hpbGUgKENPTlRBSU5FUl9TSVpFKHRvX2RlbGV0ZSkpIHsKKyAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4ICpjdHggPSBDT05UQUlORVJfRklSU1QodG9fZGVsZXRlKTsKKyAgICAgICAgQ09OVEFJTkVSX1JFTU9WRShjb250YWluZXIsIGN0eCk7CisgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KGN0eCk7CisgICAgICAgIENPTlRBSU5FUl9SRU1PVkUodG9fZGVsZXRlLCBOVUxMKTsKKyAgICB9CisgICAgQ09OVEFJTkVSX0ZSRUUodG9fZGVsZXRlKTsKKworICAgIC8qCiAgICAgICogZnJlZSB0aGUgY29udGFpbmVyLiB3ZSd2ZSBlaXRoZXIgY2xhaW1lZCBlYWNoIGVudHJ5LCBvciByZWxlYXNlZCBpdCwKICAgICAgKiBzbyB0aGUgYWNjZXNzIGZ1bmN0aW9uIGRvZXNuJ3QgbmVlZCB0byBjbGVhciB0aGUgY29udGFpbmVyLgogICAgICAqLwogICAgIG5ldHNubXBfYWNjZXNzX2FycF9jb250YWluZXJfZnJlZShhcnBfY29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9ET05UX0NMRUFSKTsKIAotICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aW5ldE5ldFRvTWVkaWFUYWJsZTppbmV0TmV0VG9NZWRpYVRhYmxlX2NhY2hlX2xvYWQiLCAiJWQgcmVjb3Jkc1xuIiwgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aW5ldE5ldFRvTWVkaWFUYWJsZTppbmV0TmV0VG9NZWRpYVRhYmxlX2NhY2hlX2xvYWQiLAorICAgICAgICAgICAgICAgIiUiIE5FVFNOTVBfUFJJeiAidSByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX2xvYWQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jCmluZGV4IDQyZWJjYzAuLjE4Y2MzM2EgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYwpAQCAtNzM1LDYgKzczNSw3IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaW5ldE5ldFRvTWVkaWFUYWJsZV9wb3N0X3JlcXVlc3QgKi8KIAorCiAvKioKICAqIEBpbnRlcm5hbAogICogd3JhcHBlcgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYwppbmRleCAxNmUyMjAwLi4xNmRiNTA5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYwpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAiaXBBZGRyZXNzUHJlZml4VGFibGVfaW50ZXJmYWNlLmgiCiAKLW9pZCAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9vaWRbXSA9IHsgSVBBRERSRVNTUFJFRklYVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaXBBZGRyZXNzUHJlZml4VGFibGVfb2lkX3NpemUgPQorY29uc3Qgb2lkICAgICAgIGlwQWRkcmVzc1ByZWZpeFRhYmxlX29pZFtdID0geyBJUEFERFJFU1NQUkVGSVhUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9vaWRfc2l6ZSA9CiBPSURfTEVOR1RIKGlwQWRkcmVzc1ByZWZpeFRhYmxlX29pZCk7CiAKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX3JlZ2lzdHJhdGlvbiBpcEFkZHJlc3NQcmVmaXhUYWJsZV91c2VyX2NvbnRleHQ7CkBAIC0zOTUsMTAgKzM5NSw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwQWRkcmVzc1ByZWZpeE9yaWdpbiBkYXRhLgogICAgICAqIGNvcHkgKCogaXBBZGRyZXNzUHJlZml4T3JpZ2luX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KLSAgICAoKmlwQWRkcmVzc1ByZWZpeE9yaWdpbl92YWxfcHRyKSA9Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaXBBZGRyZXNzUHJlZml4T3JpZ2luOwotCi0gICAgcmV0dXJuIE1GRF9TVUNDRVNTOworICAgICAgICAgICgqaXBBZGRyZXNzUHJlZml4T3JpZ2luX3ZhbF9wdHIpID0gcm93cmVxX2N0eC0+ZGF0YS5pcEFkZHJlc3NQcmVmaXhPcmlnaW47CisgICAgCisgICAgICAgICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBBZGRyZXNzUHJlZml4T3JpZ2luX2dldCAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaAppbmRleCBkZmU5NzNlLi4yMDFlNTU3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaApAQCAtMjExLDggKzIxMSw4IEBACiAgICAgICAgICogaXBBZGRyZXNzUHJlZml4VGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CiAgICAgICAgIChpcEFkZHJlc3NQcmVmaXhUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgaXBBZGRyZXNzUHJlZml4VGFibGVfb2lkX3NpemU7CisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIGlwQWRkcmVzc1ByZWZpeFRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAiaXBBZGRyZXNzUHJlZml4VGFibGVfaW50ZXJmYWNlLmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uc3RhbnRzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uc3RhbnRzLmgKaW5kZXggNjZmMjEwOS4uNWVjYWRlNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2NvbnN0YW50cy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9jb25zdGFudHMuaApAQCAtMTM3LDMgKzEzNywxNyBAQAogfQogI2VuZGlmCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQQUREUkVTU1BSRUZJWFRBQkxFX09JRFNfSCAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQWRkaXRpb25hbCBjb25zdGFudHMgYW5kIGRlZmluaXRpb25zIGZvciBjb21tb24gaW1wbGVtZW50YXRpb24KKyovCisjZGVmaW5lIElORklOSVRZX0xJRkVfVElNRSAgICAgIDB4RkZGRkZGRkZVCisjZGVmaW5lIE5JUDYoYWRkcikgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzBdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzFdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzJdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzNdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzRdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzVdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzZdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzddKQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDJmNjRjYmUuLjkxNTllMTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0yNTEsNiArMjUxLDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhX2FkZHJlc3NfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3Jvd3JlcV9jdHgtPmRhdGEtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV9wcmVmaXhfbGVuKTsKKyAgICAgICAgbmV0c25tcF9pcGFkZHJlc3NfZmxhZ3NfY29weSgmcm93cmVxX2N0eC0+ZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhBZHZQcmVmZXJyZWRMaWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+ZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyb3dyZXFfY3R4LT5kYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1ByZWZpeE9uTGlua0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJvd3JlcV9jdHgtPmRhdGEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBBZGRyZXNzUHJlZml4QXV0b25vbW91c0ZsYWcsICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV9wcmVmZXJlZF9saWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV92YWxpZF9saWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV9vbmxpbmtfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV9hdXRvbm9tb3VzX2ZsYWcpOworCiAgICAgICAgIGlmIChNRkRfU1VDQ0VTUyAhPQogICAgICAgICAgICAgaXBBZGRyZXNzUHJlZml4VGFibGVfaW5kZXhlc19zZXQocm93cmVxX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfcm93cmVxX2N0eC0+ZGF0YS0+CkBAIC0yNzgsOCArMjk1LDE0IEBACiAgICAgICAgICAqIFRPRE86MzUyOnI6IHwgICB8LT4gcG9wdWxhdGUgaXBBZGRyZXNzUHJlZml4VGFibGUgZGF0YSBjb250ZXh0LgogICAgICAgICAgKiBQb3B1bGF0ZSBkYXRhIGNvbnRleHQgaGVyZS4gKG9wdGlvbmFsbHksIGRlbGF5IHVudGlsIHJvdyBwcmVwKQogICAgICAgICAgKi8KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5pcEFkZHJlc3NQcmVmaXhPcmlnaW4gPQotICAgICAgICAgICAgYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT5pYV9vcmlnaW47CisgICAgICAgICAgIG5ldHNubXBfaXBhZGRyZXNzX3ByZWZpeF9vcmlnaW5fY29weSgmcm93cmVxX2N0eC0+ZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1ByZWZpeE9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfcm93cmVxX2N0eC0+ZGF0YS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3Jvd3JlcV9jdHgtPmRhdGEtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3Jvd3JlcV9jdHgtPnRibF9pZHguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NBZGRyVHlwZSk7CiAKICAgICAgICAgLyoqIGRlZmVyIHRoZSByZXN0IHRpbCByb3cgcHJlcCAqLwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCmluZGV4IDg0OGM2M2QuLmMxZmFkNzQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJpcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIGlwQWRkcmVzc1RhYmxlX29pZFtdID0geyBJUEFERFJFU1NUQUJMRV9PSUQgfTsKLWludCAgICAgICAgICAgICBpcEFkZHJlc3NUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoaXBBZGRyZXNzVGFibGVfb2lkKTsKK2NvbnN0IG9pZCAgICAgICBpcEFkZHJlc3NUYWJsZV9vaWRbXSA9IHsgSVBBRERSRVNTVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaXBBZGRyZXNzVGFibGVfb2lkX3NpemUgPSBPSURfTEVOR1RIKGlwQWRkcmVzc1RhYmxlX29pZCk7CiAKIGlwQWRkcmVzc1RhYmxlX3JlZ2lzdHJhdGlvbiBpcEFkZHJlc3NUYWJsZV91c2VyX2NvbnRleHQ7CiBzdGF0aWMgaXBBZGRyZXNzVGFibGVfcmVnaXN0cmF0aW9uICppcEFkZHJlc3NUYWJsZV91c2VyX2NvbnRleHRfcDsKQEAgLTk0NCw3ICs5NDQsMTAgQEAKICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwQWRkcmVzc1Jvd1N0YXR1c192YWxfcHRyKTsKIAogICAgIC8qKiBXQVJOSU5HOiB0aGlzIGNvZGUgbWlnaHQgbm90IHdvcmsgZm9yIG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICovCi0gICAgKCppcEFkZHJlc3NSb3dTdGF0dXNfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5pcEFkZHJlc3NSb3dTdGF0dXM7CisgICAgaWYocm93cmVxX2N0eC0+ZGF0YS0+aWZfaW5kZXgpCisgICAgICAgKCppcEFkZHJlc3NSb3dTdGF0dXNfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5pcEFkZHJlc3NSb3dTdGF0dXM7CisgICAgZWxzZQorICAgICAgICgqaXBBZGRyZXNzUm93U3RhdHVzX3ZhbF9wdHIpID0gUk9XU1RBVFVTX05PVFJFQURZOwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcEFkZHJlc3NSb3dTdGF0dXNfZ2V0ICovCkBAIC0xNDg2LDcgKzE0ODksNyBAQAogICAgICAqIGZpbmQgbmFtZSBmb3IgaWZJbmRleAogICAgICAqLwogICAgIGlmIChOVUxMID09IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9uYW1lX2ZpbmQoaXBBZGRyZXNzSWZJbmRleF92YWwpKSB7Ci0gICAgICAgIERFQlVHTVNHVCgoImlwQWRkcmVzc1RhYmxlIiwgImNhbnQgZmluZCBuYW1lIGZvciBpbmRleCAlZFxuIiwKKyAgICAgICAgREVCVUdNU0dUKCgiaXBBZGRyZXNzVGFibGUiLCAiY2FudCBmaW5kIG5hbWUgZm9yIGluZGV4ICVsZFxuIiwKICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NJZkluZGV4X3ZhbCkpOwogICAgICAgICByZXR1cm4gTUZEX05PVF9WQUxJRF9OT1c7CiAgICAgfQpAQCAtMjAzMiw3ICsyMDM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1Jvd1N0YXR1c192YWwpOwogICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgewogICAgICAgICBERUJVR01TR1RMKCgiaXBBZGRyZXNzVGFibGUiLAotICAgICAgICAgICAgICAgICAgICAicm93IHN0YXR1cyB0cmFuc2l0aW9uIGZyb20gJWQgdG8gJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICJyb3cgc3RhdHVzIHRyYW5zaXRpb24gZnJvbSAlZCB0byAlbHVcbiIsCiAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmlwQWRkcmVzc1Jvd1N0YXR1cywKICAgICAgICAgICAgICAgICAgICAgaXBBZGRyZXNzUm93U3RhdHVzX3ZhbCkpOwogICAgICAgICByZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oCmluZGV4IDUwYWQxODguLjc0MGY0ZmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oCkBAIC0xOTcsOCArMTk3LDggQEAKICAgICAgICAgKiBpcEFkZHJlc3NUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaXBBZGRyZXNzVGFibGVfbWliX2luZGV4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgaXBBZGRyZXNzVGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIGlwQWRkcmVzc1RhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpcEFkZHJlc3NUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaXBBZGRyZXNzVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgImlwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCBhMGQ4YzRhLi43YTRhMjNkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMzk1LDcgKzM5NSw3IEBACiAgICAgfQogCiAgICAgREVCVUdNU0dUKCgidmVyYm9zZTppcEFkZHJlc3NUYWJsZTppcEFkZHJlc3NUYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJWx1IHJlY29yZHNcbiIsICh1bnNpZ25lZCBsb25nKUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYwppbmRleCAwYzg1MDczLi5lMjRlNDZmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5jCkBAIC02ODYsNiArNjg2LDcgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcEFkZHJlc3NUYWJsZV9wb3N0X3JlcXVlc3QgKi8KIAorCiAvKioKICAqIEBpbnRlcm5hbAogICogd3JhcHBlcgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGVkODRiCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlLmgKQEAgLTAsMCArMSw1IEBACisvKgorICogbW9kdWxlIHRvIGluY2x1ZGUgdGhlIG1vZHVsZXMKKyAqLworCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MGUzMTcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYwpAQCAtMCwwICsxLDIxOCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qKiBccGFnZSBNRkQgaGVscGVyIGZvciBpcERlZmF1bHRSb3V0ZXJUYWJsZQorICoKKyAqIFxzZWN0aW9uIGludHJvIEludHJvZHVjdGlvbgorICogSW50cm9kdWN0b3J5IHRleHQuCisgKgorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGUuaCIKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmg+CisKKyNpbmNsdWRlICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuaCIKKworY29uc3Qgb2lkICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZFtdID0geyBJUERFRkFVTFRST1VURVJUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRfc2l6ZSA9CitPSURfTEVOR1RIKGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZCk7CisKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiBpcERlZmF1bHRSb3V0ZXJUYWJsZV91c2VyX2NvbnRleHQ7CitzdGF0aWMgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICppcERlZmF1bHRSb3V0ZXJUYWJsZV91c2VyX2NvbnRleHRfcDsKKwordm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfaXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fdGFibGVfaXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCk7CisKKworLyoqCisgKiBJbml0aWFsaXplcyB0aGUgaXBEZWZhdWx0Um91dGVyVGFibGUgbW9kdWxlCisgKi8KK3ZvaWQKK2luaXRfaXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppbml0X2lwRGVmYXVsdFJvdXRlclRhYmxlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAwOm86IFBlcmZvcm0gaXBEZWZhdWx0Um91dGVyVGFibGUgb25lLXRpbWUgbW9kdWxlIGluaXRpYWxpemF0aW9uLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBoZXJlIHdlIGluaXRpYWxpemUgYWxsIHRoZSB0YWJsZXMgd2UncmUgcGxhbm5pbmcgb24gc3VwcG9ydGluZworICAgICAqLworICAgIGlmIChzaG91bGRfaW5pdCgiaXBEZWZhdWx0Um91dGVyVGFibGUiKSkKKyAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9pcERlZmF1bHRSb3V0ZXJUYWJsZSgpOworCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRfaXBEZWZhdWx0Um91dGVyVGFibGUgKi8KKworLyoqCisgKiBTaHV0LWRvd24gdGhlIGlwRGVmYXVsdFJvdXRlclRhYmxlIG1vZHVsZSAoYWdlbnQgaXMgZXhpdGluZykKKyAqLwordm9pZAorc2h1dGRvd25faXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCkKK3sKKyAgICBpZiAoc2hvdWxkX2luaXQoImlwRGVmYXVsdFJvdXRlclRhYmxlIikpCisgICAgICAgIHNodXRkb3duX3RhYmxlX2lwRGVmYXVsdFJvdXRlclRhYmxlKCk7CisKK30KKworLyoqCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSAKKyAqICAgIChEZWZpbmUgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkKQorICovCit2b2lkCitpbml0aWFsaXplX3RhYmxlX2lwRGVmYXVsdFJvdXRlclRhYmxlKHZvaWQpCit7CisgICAgdV9sb25nICAgICAgICAgIGZsYWdzOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aW5pdGlhbGl6ZV90YWJsZV9pcERlZmF1bHRSb3V0ZXJUYWJsZSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDE6bzogUGVyZm9ybSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBvbmUtdGltZSB0YWJsZSBpbml0aWFsaXphdGlvbi4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogVE9ETzozMDI6bzogfC0+SW5pdGlhbGl6ZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSB1c2VyIGNvbnRleHQKKyAgICAgKiBpZiB5b3UnZCBsaWtlIHRvIHBhc3MgaW4gYSBwb2ludGVyIHRvIHNvbWUgZGF0YSBmb3IgdGhpcworICAgICAqIHRhYmxlLCBhbGxvY2F0ZSBvciBzZXQgaXQgdXAgaGVyZS4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIGEgbmV0c25tcF9kYXRhX2xpc3QgaXMgYSBzaW1wbGUgd2F5IHRvIHN0b3JlIHZvaWQgcG9pbnRlcnMuIEEgc2ltcGxlCisgICAgICogc3RyaW5nIHRva2VuIGlzIHVzZWQgdG8gYWRkLCBmaW5kIG9yIHJlbW92ZSBwb2ludGVycy4KKyAgICAgKi8KKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV91c2VyX2NvbnRleHRfcCA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdCgiaXBEZWZhdWx0Um91dGVyVGFibGUiLCBOVUxMLCBOVUxMKTsKKworICAgIC8qCisgICAgICogTm8gc3VwcG9ydCBmb3IgYW55IGZsYWdzIHlldCwgYnV0IGluIHRoZSBmdXR1cmUgeW91IHdvdWxkCisgICAgICogc2V0IGFueSBmbGFncyBoZXJlLgorICAgICAqLworICAgIGZsYWdzID0gMDsKKworICAgIC8qCisgICAgICogY2FsbCBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZQorCShpcERlZmF1bHRSb3V0ZXJUYWJsZV91c2VyX2NvbnRleHRfcCwgZmxhZ3MpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0aWFsaXplX3RhYmxlX2lwRGVmYXVsdFJvdXRlclRhYmxlICovCisKKy8qKgorICogU2h1dGRvd24gdGhlIHRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlIAorICovCit2b2lkCitzaHV0ZG93bl90YWJsZV9pcERlZmF1bHRSb3V0ZXJUYWJsZSh2b2lkKQoreworICAgIC8qCisgICAgICogY2FsbCBpbnRlcmZhY2Ugc2h1dGRvd24gY29kZQorICAgICAqLworICAgIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UKKyAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX3VzZXJfY29udGV4dF9wKTsKKyAgICBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YShpcERlZmF1bHRSb3V0ZXJUYWJsZV91c2VyX2NvbnRleHRfcCk7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfdXNlcl9jb250ZXh0X3AgPSBOVUxMOworfQorCisvKioKKyAqIGV4dHJhIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gKGVnIGRlZmF1bHQgdmFsdWVzKQorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4ICAgIDogcm93IHJlcXVlc3QgY29udGV4dAorICogQHBhcmFtIHVzZXJfaW5pdF9jdHggOiB2b2lkIHBvaW50ZXIgZm9yIHVzZXIgKHBhcmFtZXRlciB0byByb3dyZXFfY3R4X2FsbG9jYXRlKQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgIDogbm8gZXJyb3JzCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICA6IGVycm9yIChjb250ZXh0IGFsbG9jYXRlIHdpbGwgZmFpbCkKKyAqLworaW50CitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4X2luaXQoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwgdm9pZCAqdXNlcl9pbml0X2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4X2luaXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMDpvOiB8LT4gUGVyZm9ybSBleHRyYSBpcERlZmF1bHRSb3V0ZXJUYWJsZSByb3dyZXEgaW5pdGlhbGl6YXRpb24uIChlZyBERUZWQUxTKQorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4X2luaXQgKi8KKworLyoqCisgKiBleHRyYSBjb250ZXh0IGNsZWFudXAKKyAqCisgKi8KK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjExOm86IHwtPiBQZXJmb3JtIGV4dHJhIGlwRGVmYXVsdFJvdXRlclRhYmxlIHJvd3JlcSBjbGVhbnVwLgorICAgICAqLworICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShyb3dyZXFfY3R4LT5kYXRhKTsKKyAgICByb3dyZXFfY3R4LT5kYXRhID0gTlVMTDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwICovCisKKy8qKgorICogcHJlLXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgICAgICAgOiBvdGhlciBlcnJvcgorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3ByZV9yZXF1ZXN0KGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2NvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86NTEwOm86IFBlcmZvcm0gaXBEZWZhdWx0Um91dGVyVGFibGUgcHJlLXJlcXVlc3QgYWN0aW9ucy4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBwb3N0LXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKiBOb3RlOgorICogICBOZXcgcm93cyBoYXZlIGJlZW4gaW5zZXJ0ZWQgaW50byB0aGUgY29udGFpbmVyLCBhbmQKKyAqICAgZGVsZXRlZCByb3dzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvbnRhaW5lciBhbmQKKyAqICAgcmVsZWFzZWQuCisgKgorICogQHBhcmFtIHVzZXJfY29udGV4dAorICogQHBhcmFtIHJjIDogTUZEX1NVQ0NFU1MgaWYgYWxsIHJlcXVlc3RzIHN1Y2NlZWRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IG90aGVyIGVycm9yIChpZ25vcmVkKQorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCwgaW50IHJjKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTE6bzogUGVyZm9ybSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBwb3N0LXJlcXVlc3QgYWN0aW9ucy4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKworLyoqIEB7ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZWYyOWEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaApAQCAtMCwwICsxLDIxMiBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBJUERFRkFVTFRST1VURVJUQUJMRV9ICisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKy8qKiBAYWRkdG9ncm91cCBtaXNjIG1pc2M6IE1pc2NlbGxhbmVvdXMgcm91dGluZXMKKyAqCisgKiBAeworICovCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9hc24xLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oPgorCisgICAgLyoKKyAgICAgKiBvdGhlciByZXF1aXJlZCBtb2R1bGUgY29tcG9uZW50cyAKKyAgICAgKi8KKyAgICAvKiAqSU5ERU5ULU9GRiogICovCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcikKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UpCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MpCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQpCisgICAgLyogKklOREVOVC1PTiogICovCisKKyAgICAvKgorICAgICAqIE9JRCBhbmQgY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGUgCisgICAgICovCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkcy5oIgorCisgICAgLyoKKyAgICAgKiBlbnVtIGRlZmluaW9ucyAKKyAgICAgKi8KKyNpbmNsdWRlICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9lbnVtcy5oIgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGluaXRfaXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIHNodXRkb3duX2lwRGVmYXVsdFJvdXRlclRhYmxlKHZvaWQpOworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyVGFibGUgaXMgc3ViaWQgMzcgb2YgaXAuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzcsIGxlbmd0aDogOAorICAgICAqLworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFdoZW4geW91IHJlZ2lzdGVyIHlvdXIgbWliLCB5b3UgZ2V0IHRvIHByb3ZpZGUgYSBnZW5lcmljCisgICAgICogcG9pbnRlciB0aGF0IHdpbGwgYmUgcGFzc2VkIGJhY2sgdG8geW91IGZvciBtb3N0IG9mIHRoZQorICAgICAqIGZ1bmN0aW9ucyBjYWxscy4KKyAgICAgKgorICAgICAqIFRPRE86MTAwOnI6IFJldmlldyBhbGwgY29udGV4dCBzdHJ1Y3R1cmVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBUT0RPOjEwMTpvOiB8LT4gUmV2aWV3IGlwRGVmYXVsdFJvdXRlclRhYmxlIHJlZ2lzdHJhdGlvbiBjb250ZXh0LgorICAgICAqLworICAgIHR5cGVkZWYgbmV0c25tcF9kYXRhX2xpc3QgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIFRPRE86MTEwOnI6IHwtPiBSZXZpZXcgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YSBjb250ZXh0IHN0cnVjdHVyZS4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgZGF0YSBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGUuCisgICAgICovCisgICAgdHlwZWRlZiBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMDpyOiB8LT4gUmV2aWV3IGlwRGVmYXVsdFJvdXRlclRhYmxlIG1pYiBpbmRleC4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaW5kZXggZm9yIGlwRGVmYXVsdFJvdXRlclRhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGlwRGVmYXVsdFJvdXRlclRhYmxlX21pYl9pbmRleF9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSgxKS9JbmV0QWRkcmVzc1R5cGUvQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGU7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzcygyKS9JbmV0QWRkcmVzcy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvYS93L2UvUi9kL2gKKyAgICAgICAgICovCisgICAgICAgIC8qKiAxMjggLSAyKG90aGVyIGluZGV4ZXMpIC0gb2lkIGxlbmd0aCgxMCkgPSAxMTUgKi8KKyAgICAgICAgY2hhciAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NbMTE1XTsKKyAgICAgICAgc2l6ZV90ICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfbGVuOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwRGVmYXVsdFJvdXRlcklmSW5kZXgoMykvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAgICAgKi8KKyAgICAgICAgbG9uZyAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlcklmSW5kZXg7CisKKworICAgIH0gaXBEZWZhdWx0Um91dGVyVGFibGVfbWliX2luZGV4OworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMTpyOiB8ICAgfC0+IFJldmlldyBpcERlZmF1bHRSb3V0ZXJUYWJsZSBtYXggaW5kZXggbGVuZ3RoLgorICAgICAqIElmIHlvdSBLTk9XIHRoYXQgeW91ciBpbmRleGVzIHdpbGwgbmV2ZXIgZXhjZWVkIGEgY2VydGFpbgorICAgICAqIGxlbmd0aCwgdXBkYXRlIHRoaXMgbWFjcm8gdG8gdGhhdCBsZW5ndGguCisgICAgICoKKyAgICAgKiBCRSBWRVJZIENBUkVGVUwgVE8gVEFLRSBJTlRPIEFDQ09VTlQgVEhFIE1BWElNVU0KKyAgICAgKiBQT1NTSUJMRSBMRU5HSFQgRk9SIEVWRVJZIFZBUklBQkxFIExFTkdUSCBJTkRFWCEKKyAgICAgKiBHdWVzc2luZyAxMjggLSBjb2wvZW50cnkoMikgIC0gb2lkIGxlbig4KQorICAgICAqLworI2RlZmluZSBNQVhfaXBEZWZhdWx0Um91dGVyVGFibGVfSURYX0xFTiAgICAgMTE4CisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTMwOm86IHwtPiBSZXZpZXcgaXBEZWZhdWx0Um91dGVyVGFibGUgUm93IHJlcXVlc3QgKHJvd3JlcSkgY29udGV4dC4KKyAgICAgKiBXaGVuIHlvdXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIHlvdSB3aWxsIGJlIHBhc3NlZCBhCisgICAgICogaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCBwb2ludGVyLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfcyB7CisKKyAgICAvKiogdGhpcyBtdXN0IGJlIGZpcnN0IGZvciBjb250YWluZXIgY29tcGFyZSB0byB3b3JrICovCisgICAgICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworICAgICAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfaXBEZWZhdWx0Um91dGVyVGFibGVfSURYX0xFTl07CisKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfbWliX2luZGV4IHRibF9pZHg7CisKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YSAqZGF0YTsKKworICAgICAgICAvKgorICAgICAgICAgKiBmbGFncyBwZXIgcm93LiBDdXJyZW50bHksIHRoZSBmaXJzdCAobG93ZXIpIDggYml0cyBhcmUgcmVzZXJ2ZWQKKyAgICAgICAgICogZm9yIHRoZSB1c2VyLiBTZWUgbWZkLmggZm9yIG90aGVyIGZsYWdzLgorICAgICAgICAgKi8KKyAgICAgICAgdV9pbnQgICAgICAgICAgIHJvd3JlcV9mbGFnczsKKworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjEzMTpvOiB8ICAgfC0+IEFkZCB1c2VmdWwgZGF0YSB0byBpcERlZmF1bHRSb3V0ZXJUYWJsZSByb3dyZXEgY29udGV4dC4KKyAgICAgICAgICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogc3RvcmFnZSBmb3IgZnV0dXJlIGV4cGFuc2lvbgorICAgICAgICAgKi8KKyAgICAgICAgbmV0c25tcF9kYXRhX2xpc3QgKmlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfbGlzdDsKKworICAgIH0gaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eDsKKworICAgIHR5cGVkZWYgc3RydWN0IGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZl9yb3dyZXFfY3R4X3MgeworICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OworICAgIH0gaXBEZWZhdWx0Um91dGVyVGFibGVfcmVmX3Jvd3JlcV9jdHg7CisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBwcm90b3R5cGVzCisgICAgICovCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3ByZV9yZXF1ZXN0KGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHVzZXJfY29udGV4dCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdXNlcl9jb250ZXh0LCBpbnQgcmMpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfaW5pdAorICAgICAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwCisgICAgICAgIChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CisKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhICppcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX2RhdGEoaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKTsKKworCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eAorICAgICAgICAqaXBEZWZhdWx0Um91dGVyVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CisgICAgICAgIChpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKKworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkX3NpemU7CisKKworI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5oIgorI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmgiCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuaCIKKworICAgIC8qCisgICAgICogRFVNTVkgbWFya2VycywgaWdub3JlCisgICAgICoKKyAgICAgKiBUT0RPOjA5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86Mjk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjM5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzo0OTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUERFRkFVTFRST1VURVJUQUJMRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM1NGMzZAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0wLDAgKzEsNDIwIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlLmgiCisKKworI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmgiCisKKy8qKiBAaW5ncm91cCBpbnRlcmZhY2UKKyAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQorICoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSB1c2VkIHRvIGxvY2F0ZSB0aGUgZGF0YSB1c2VkIHRvIHNhdGlzZnkKKyAqIHJlcXVlc3RzLgorICogCisgKiBAeworICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlclRhYmxlIGlzIHN1YmlkIDM3IG9mIGlwLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNywgbGVuZ3RoOiA4CisgKi8KKworLyoqCisgKiBpbml0aWFsaXphdGlvbiBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YSBhY2Nlc3MKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgc3RhcnR1cCB0byBhbGxvdyB5b3UgdG8KKyAqIGFsbG9jYXRlIGFueSByZXNvdXJjZXMgeW91IG5lZWQgZm9yIHRoZSBkYXRhIHRhYmxlLgorICoKKyAqIEBwYXJhbSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWcKKyAqICAgICAgICBQb2ludGVyIHRvIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IHVucmVjb3ZlcmFibGUgZXJyb3IuCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfaW5pdF9kYXRhKGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX2luaXRfZGF0YSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDM6bzogSW5pdGlhbGl6ZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBkYXRhLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0X2RhdGEgKi8KKworLyoqCisgKiBjb250YWluZXIgb3ZlcnZpZXcKKyAqCisgKi8KKworLyoqCisgKiBjb250YWluZXIgaW5pdGlhbGl6YXRpb24KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyX3B0cl9wdHIgQSBwb2ludGVyIHRvIGEgY29udGFpbmVyIHBvaW50ZXIuIElmIHlvdQorICogICAgICAgIGNyZWF0ZSBhIGN1c3RvbSBjb250YWluZXIsIHVzZSB0aGlzIHBhcmFtZXRlciB0byByZXR1cm4gaXQKKyAqICAgICAgICB0byB0aGUgTUZEIGhlbHBlci4gSWYgc2V0IHRvIE5VTEwsIHRoZSBNRkQgaGVscGVyIHdpbGwKKyAqICAgICAgICBhbGxvY2F0ZSBhIGNvbnRhaW5lciBmb3IgeW91LgorICogQHBhcmFtICBjYWNoZSBBIHBvaW50ZXIgdG8gYSBjYWNoZSBzdHJ1Y3R1cmUuIFlvdSBjYW4gc2V0IHRoZSB0aW1lb3V0CisgKiAgICAgICAgIGFuZCBvdGhlciBjYWNoZSBmbGFncyB1c2luZyB0aGlzIHBvaW50ZXIuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHN0YXJ0dXAgdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLiBJZiBubyBjdXN0b20KKyAqICBjb250YWluZXIgaXMgYWxsb2NhdGVkLCB0aGUgTUZEIGNvZGUgd2lsbCBjcmVhdGUgb25lIGZvciB5b3VyLgorICoKKyAqICBUaGlzIGlzIGFsc28gdGhlIHBsYWNlIHRvIHNldCB1cCBjYWNoZSBiZWhhdmlvci4gVGhlIGRlZmF1bHQsIHRvCisgKiAgc2ltcGx5IHNldCB0aGUgY2FjaGUgdGltZW91dCwgd2lsbCB3b3JrIHdlbGwgd2l0aCB0aGUgZGVmYXVsdAorICogIGNvbnRhaW5lci4gSWYgeW91IGFyZSB1c2luZyBhIGN1c3RvbSBjb250YWluZXIsIHlvdSBtYXkgd2FudCB0bworICogIGxvb2sgYXQgdGhlIGNhY2hlIGhlbHBlciBkb2N1bWVudGF0aW9uIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55CisgKiAgZmxhZ3MgeW91IHdhbnQgdG8gc2V0LgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIHdvdWxkIGFsc28gYmUgYSBnb29kIHBsYWNlIHRvIGRvIGFueSBpbml0aWFsaXphdGlvbiBuZWVkZWQKKyAqICBmb3IgeW91IGRhdGEgc291cmNlLiBGb3IgZXhhbXBsZSwgb3BlbmluZyBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgorICogIHByb2Nlc3MgdGhhdCB3aWxsIHN1cHBseSB0aGUgZGF0YSwgb3BlbmluZyBhIGRhdGFiYXNlLCBldGMuCisgKi8KK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0KG5ldHNubXBfY29udGFpbmVyICoqIGNvbnRhaW5lcl9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWNoZSAqIGNhY2hlKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cl9wdHIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjb250YWluZXIgcGFyYW0gdG8gaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBGb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gdXNlIGEgY3VzdG9tIGNvbnRhaW5lci4gSWYgeW91CisgICAgICogZG8gbm90IGNyZWF0ZSBvbmUsIG9uZSB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdS4KKyAgICAgKi8KKyAgICAqY29udGFpbmVyX3B0cl9wdHIgPSBOVUxMOworCisgICAgaWYgKE5VTEwgPT0gY2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjYWNoZSBwYXJhbSB0byBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRPRE86MzQ1OkE6IFNldCB1cCBpcERlZmF1bHRSb3V0ZXJUYWJsZSBjYWNoZSBwcm9wZXJ0aWVzLgorICAgICAqCisgICAgICogQWxzbyBmb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gc2V0IHBhcmFtZXRlcnMgZm9yIHRoZQorICAgICAqIGNhY2hlLiBEbyBub3QgY2hhbmdlIHRoZSBtYWdpYyBwb2ludGVyLCBhcyBpdCBpcyB1c2VkCisgICAgICogYnkgdGhlIE1GRCBoZWxwZXIuIFRvIGNvbXBsZXRlbHkgZGlzYWJsZSBjYWNoaW5nLCBzZXQKKyAgICAgKiBjYWNoZS0+ZW5hYmxlZCB0byAwLgorICAgICAqLworICAgIGNhY2hlLT50aW1lb3V0ID0gSVBERUZBVUxUUk9VVEVSVEFCTEVfQ0FDSEVfVElNRU9VVDsgICAgICAgIC8qIHNlY29uZHMgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBjb250YWluZXIgc2h1dGRvd24KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyX3B0ciBBIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5lci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc2h1dGRvd24gdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2ZyZWUoKS4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyB3b3VsZCBhbHNvIGJlIGEgZ29vZCBwbGFjZSB0byBkbyBhbnkgY2xlYW51cCBuZWVkZWQKKyAqICBmb3IgeW91IGRhdGEgc291cmNlLiBGb3IgZXhhbXBsZSwgY2xvc2luZyBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgorICogIHByb2Nlc3MgdGhhdCBzdXBwbGllZCB0aGUgZGF0YSwgY2xvc2luZyBhIGRhdGFiYXNlLCBldGMuCisgKi8KK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcl9wdHIpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX3NodXRkb3duIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIHBhcmFtcyB0byBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd25cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisvKioKKyAqIGNoZWNrIGVudHJ5IGZvciB1cGRhdGUKKyAqLworc3RhdGljIHZvaWQKK19jaGVja19lbnRyeV9mb3JfdXBkYXRlcyhpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqbWFnaWMpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmRlZmF1bHRyb3V0ZXJfY29udGFpbmVyID0gbWFnaWNbMF07CisgICAgbmV0c25tcF9jb250YWluZXIgKnRvX2RlbGV0ZSA9IChuZXRzbm1wX2NvbnRhaW5lciAqKSBtYWdpY1sxXTsKKworICAgIC8qCisgICAgICogY2hlY2sgZm9yIG1hdGNoaW5nIGVudHJ5IHVzaW5nIHNlY29uZGFyeSBpbmRleC4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmRlZmF1bHRyb3V0ZXJfZW50cnkgPQorICAgICAgICBDT05UQUlORVJfRklORChkZWZhdWx0cm91dGVyX2NvbnRhaW5lciwgcm93cmVxX2N0eC0+ZGF0YSk7CisgICAgaWYgKE5VTEwgPT0gZGVmYXVsdHJvdXRlcl9lbnRyeSkgeworICAgICAgICBERUJVR01TR1RMKCgiaXBEZWZhdWx0Um91dGVyVGFibGU6YWNjZXNzIiwgInJlbW92aW5nIG1pc3NpbmcgZW50cnlcbiIpKTsKKworICAgICAgICBpZiAoTlVMTCA9PSB0b19kZWxldGUpIHsKKyAgICAgICAgICAgIG1hZ2ljWzFdID0gdG9fZGVsZXRlID0gbmV0c25tcF9jb250YWluZXJfZmluZCgibGlmbyIpOworICAgICAgICAgICAgaWYgKE5VTEwgPT0gdG9fZGVsZXRlKQorICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZG4ndCBjcmVhdGUgZGVsZXRlIGNvbnRhaW5lclxuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5VTEwgIT0gdG9fZGVsZXRlKQorICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVCh0b19kZWxldGUsIHJvd3JlcV9jdHgpOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpcERlZmF1bHRSb3V0ZXJUYWJsZTphY2Nlc3MiLCAidXBkYXRpbmcgZXhpc3RpbmcgZW50cnlcbiIpKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBDaGVjayBmb3IgY2hhbmdlcyAmIHVwZGF0ZQorICAgICAgICAgKi8KKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV91cGRhdGUocm93cmVxX2N0eC0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHJvdXRlcl9lbnRyeSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogcmVtb3ZlIGVudHJ5IGZyb20gaWZjb250YWluZXIKKyAgICAgICAgICovCisgICAgICAgIENPTlRBSU5FUl9SRU1PVkUoZGVmYXVsdHJvdXRlcl9jb250YWluZXIsIGRlZmF1bHRyb3V0ZXJfZW50cnkpOworICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2ZyZWUoZGVmYXVsdHJvdXRlcl9lbnRyeSk7CisgICAgfQorfQorCisvKioKKyAqIGFkZCBuZXcgZW50cnkKKyAqLworc3RhdGljIHZvaWQKK19hZGRfbmV3X2VudHJ5KG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqZGVmYXVsdHJvdXRlcl9lbnRyeSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKworICAgIERFQlVHTVNHVEwoKCJpcERlZmF1bHRSb3V0ZXJUYWJsZTphY2Nlc3MiLCAiY3JlYXRpbmcgbmV3IGVudHJ5XG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGRlZmF1bHRyb3V0ZXJfZW50cnkpOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gY29udGFpbmVyKTsKKworICAgIC8qCisgICAgICogYWxsb2NhdGUgYW4gcm93IGNvbnRleHQgYW5kIHNldCB0aGUgaW5kZXgoZXMpCisgICAgICovCisgICAgcm93cmVxX2N0eCA9IGlwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoZGVmYXVsdHJvdXRlcl9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAoKE5VTEwgIT0gcm93cmVxX2N0eCkgJiYKKyAgICAgICAgICAgIChNRkRfU1VDQ0VTUyA9PQorICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4ZXNfc2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgIGRlZmF1bHRyb3V0ZXJfZW50cnktPmRyX2FkZHJlc3N0eXBlLAorICAgICAgICAgICAgICAgICBkZWZhdWx0cm91dGVyX2VudHJ5LT5kcl9hZGRyZXNzLAorICAgICAgICAgICAgICAgICBkZWZhdWx0cm91dGVyX2VudHJ5LT5kcl9hZGRyZXNzX2xlbiwKKyAgICAgICAgICAgICAgICAgZGVmYXVsdHJvdXRlcl9lbnRyeS0+ZHJfaWZfaW5kZXgpKSkgeworICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImlwQWRkcmVzc1RhYmxlOmFjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRhaW5lciBpbnNlcnQgZmFpbGVkIGZvciBuZXcgZW50cnlcbiIpKTsKKyAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChOVUxMICE9IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBzZXR0aW5nIGluZGV4IHdoaWxlIGxvYWRpbmcgIgorICAgICAgICAgICAgICAgICAgICAiaXBEZWZhdWx0Um91dGVyVGFibGUgY2FjaGUuXG4iKTsKKyAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQgd2hpbGUgbG9hZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAiaXBEZWZhdWx0Um91dGVyVGFibGUgY2FjaGUuXG4iKTsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShkZWZhdWx0cm91dGVyX2VudHJ5KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKy8qKgorICogbG9hZCBpbml0aWFsIGRhdGEKKyAqCisgKiBUT0RPOjM1MDpNOiBJbXBsZW1lbnQgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YSBsb2FkCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyBiZSBjYWxsZWQgYnkgdGhlIGNhY2hlIGhlbHBlciB0byBsb2FkCisgKiB0aGUgY29udGFpbmVyIGFnYWluIChhZnRlciB0aGUgY29udGFpbmVyIGZyZWUgZnVuY3Rpb24gaGFzIGJlZW4KKyAqIGNhbGxlZCB0byBmcmVlIHRoZSBwcmV2aW91cyBjb250ZW50cykuCisgKgorICogQHBhcmFtIGNvbnRhaW5lciBjb250YWluZXIgdG8gd2hpY2ggaXRlbXMgc2hvdWxkIGJlIGluc2VydGVkCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfUkVTT1VSQ0VfVU5BVkFJTEFCTEUgOiBDYW4ndCBhY2Nlc3MgZGF0YSBzb3VyY2UKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGxvYWQgdGhlIGluZGV4KGVzKSAoYW5kIGRhdGEsIG9wdGlvbmFsbHkpCisgKiAgZm9yIHRoZSBldmVyeSByb3cgaW4gdGhlIGRhdGEgc2V0LgorICoKKyAqIEByZW1hcmsKKyAqICBXaGlsZSBsb2FkaW5nIHRoZSBkYXRhLCB0aGUgb25seSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhlIGluZGV4ZXMuCisgKiAgSWYgYWNjZXNzIHRvIHlvdXIgZGF0YSBpcyBjaGVhcC9mYXN0IChlLmcuIHlvdSBoYXZlIGEgcG9pbnRlciB0byBhCisgKiAgc3RydWN0dXJlIGluIG1lbW9yeSksIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8gdXBkYXRlIHRoZSBkYXRhIGhlcmUuCisgKiAgSWYsIGhvd2V2ZXIsIHRoZSBhY2Nlc3NpbmcgdGhlIGRhdGEgaW52b3ZsZXMgbW9yZSB3b3JrIChlLmcuIHBhcnNpbmcKKyAqICBzb21lIG90aGVyIGV4aXN0aW5nIGRhdGEsIG9yIHBlZm9ybWluZyBjYWxjdWxhdGlvbnMgdG8gZGVyaXZlIHRoZSBkYXRhKSwKKyAqICB0aGVuIHlvdSBjYW4gbGltaXQgeW91cnNlbGYgdG8gc2V0dGluZyB0aGUgaW5kZXhlcyBhbmQgc2F2aW5nIGFueQorICogIGluZm9ybWF0aW9uIHlvdSB3aWxsIG5lZWQgbGF0ZXIuIFRoZW4gdXNlIHRoZSBzYXZlZCBpbmZvcm1hdGlvbiBpbgorICogIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd19wcmVwKCkgZm9yIHBvcHVsYXRpbmcgZGF0YS4KKyAqCisgKiBAbm90ZQorICogIElmIHlvdSBuZWVkIGNvbnNpc3RlbmN5IGJldHdlZW4gcm93cyAobGlrZSB5b3Ugd2FudCBzdGF0aXN0aWNzCisgKiAgZm9yIGVhY2ggcm93IHRvIGJlIGZyb20gdGhlIHNhbWUgdGltZSBmcmFtZSksIHlvdSBzaG91bGQgc2V0IGFsbAorICogIGRhdGEgaGVyZS4KKyAqCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmRlZmF1bHRyb3V0ZXJfY29udGFpbmVyOworICAgIHZvaWQgICAgICAgICAgICAgICp0bXBfcHRyWzJdOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2xvYWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzUxOk06IHwtPiBMb2FkL3VwZGF0ZSBkYXRhIGluIHRoZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBjb250YWluZXIuCisgICAgICogbG9vcCBvdmVyIHlvdXIgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YSwgYWxsb2NhdGUgYSByb3dyZXEgY29udGV4dCwKKyAgICAgKiBzZXQgdGhlIGluZGV4KGVzKSBbYW5kIGRhdGEsIG9wdGlvbmFsbHldIGFuZCBpbnNlcnQgaW50bworICAgICAqIHRoZSBjb250YWluZXIuCisgICAgICovCisgICAgZGVmYXVsdHJvdXRlcl9jb250YWluZXIgPQorICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9sb2FkKE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0xPQURfQURETF9JRFhfQllfQUREUik7CisKKyAgICBpZiAoTlVMTCA9PSBkZWZhdWx0cm91dGVyX2NvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRTsgICAgICAgIC8qIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLworCisgICAgLyoKKyAgICAgKiB3ZSBqdXN0IGdvdCBhIGZyZXNoIGNvcHkgb2YgaW50ZXJmYWNlIGRhdGEuIGNvbXBhcmUgaXQgdG8KKyAgICAgKiB3aGF0IHdlJ3ZlIGFscmVhZHkgZ290LCBhbmQgbWFrZSBhbnkgYWRqdXN0bWVudHMsIHNhdmluZworICAgICAqIG1pc3NpbmcgYWRkcmVzc2VzIHRvIGJlIGRlbGV0ZWQuCisgICAgICovCisgICAgdG1wX3B0clswXSA9IGRlZmF1bHRyb3V0ZXJfY29udGFpbmVyLT5uZXh0OworICAgIHRtcF9wdHJbMV0gPSBOVUxMOworICAgIENPTlRBSU5FUl9GT1JfRUFDSChjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfY2hlY2tfZW50cnlfZm9yX3VwZGF0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgIHRtcF9wdHIpOworCisgICAgLyoKKyAgICAgKiBub3cgYWRkIGFueSBuZXcgaW50ZXJmYWNlcworICAgICAqLworICAgIENPTlRBSU5FUl9GT1JfRUFDSChkZWZhdWx0cm91dGVyX2NvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9hZGRfbmV3X2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworCisgICAgLyoKKyAgICAgKiBmcmVlIHRoZSBjb250YWluZXIuIHdlJ3ZlIGVpdGhlciBjbGFpbWVkIGVhY2ggZW50cnksIG9yIHJlbGVhc2VkIGl0LAorICAgICAqIHNvIHRoZSBhY2Nlc3MgZnVuY3Rpb24gZG9lc24ndCBuZWVkIHRvIGNsZWFyIHRoZSBjb250YWluZXIuCisgICAgICovCisgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfZnJlZShkZWZhdWx0cm91dGVyX2NvbnRhaW5lciwKKyAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0ZSRUVfRE9OVF9DTEVBUik7CisKKyAgICAvKgorICAgICAqIHJlbW92ZSBkZWxldGVkIGFkZHJlc3NlcyBmcm9tIHRhYmxlIGNvbnRhaW5lcgorICAgICAqLworICAgIGlmIChOVUxMICE9IHRtcF9wdHJbMV0pIHsKKyAgICAgICAgbmV0c25tcF9jb250YWluZXIgKnRtcF9jb250YWluZXIgPQorICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyICopIHRtcF9wdHJbMV07CisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKnRtcF9jdHg7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogdGhpcyB3b3JrcyBiZWNhdXNlIHRoZSB0bXBfY29udGFpbmVyIGlzIGEgbGlua2VkIGxpc3QsCisgICAgICAgICAqIHdoaWNoIGNhbiBiZSB1c2VkIGxpa2UgYSBzdGFjay4uLgorICAgICAgICAgKi8KKyAgICAgICAgd2hpbGUgKENPTlRBSU5FUl9TSVpFKHRtcF9jb250YWluZXIpKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogZ2V0IGZyb20gZGVsZXRlIGxpc3QKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgdG1wX2N0eCA9IENPTlRBSU5FUl9GSVJTVCh0bXBfY29udGFpbmVyKTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHJlbGVhc2UgY29udGV4dCwgZGVsZXRlIGZyb20gdGFibGUgY29udGFpbmVyCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIENPTlRBSU5FUl9SRU1PVkUoY29udGFpbmVyLCB0bXBfY3R4KTsKKyAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCh0bXBfY3R4KTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHBvcCBvZmYgZGVsZXRlIGxpc3QKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgQ09OVEFJTkVSX1JFTU9WRSh0bXBfY29udGFpbmVyLCBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgIiUiIE5FVFNOTVBfUFJJeiAiZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9CisKKy8qKgorICogY29udGFpbmVyIGNsZWFuIHVwCisgKgorICogQHBhcmFtIGNvbnRhaW5lciBjb250YWluZXIgd2l0aCBhbGwgY3VycmVudCBpdGVtcworICoKKyAqICBUaGlzIG9wdGlvbmFsIGNhbGxiYWNrIGlzIGNhbGxlZCBwcmlvciB0byBhbGwKKyAqICBpdGVtJ3MgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBjb250YWluZXIuIElmIHlvdQorICogIG5lZWQgdG8gZG8gYW55IHByb2Nlc3NpbmcgYmVmb3JlIHRoYXQsIGRvIGl0IGhlcmUuCisgKgorICogQG5vdGUKKyAqICBUaGUgTUZEIGhlbHBlciB3aWxsIHRha2UgY2FyZSBvZiByZWxlYXNpbmcgYWxsIHRoZSByb3cgY29udGV4dHMuCisgKgorICovCit2b2lkCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozODA6TTogRnJlZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBjb250YWluZXIgZGF0YS4KKyAgICAgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBwcmVwYXJlIHJvdyBmb3IgcHJvY2Vzc2luZy4KKyAqCisgKiAgV2hlbiB0aGUgYWdlbnQgaGFzIGxvY2F0ZWQgdGhlIHJvdyBmb3IgYSByZXF1ZXN0LCB0aGlzIGZ1bmN0aW9uIGlzCisgKiAgY2FsbGVkIHRvIHByZXBhcmUgdGhlIHJvdyBmb3IgcHJvY2Vzc2luZy4gSWYgeW91IGZ1bGx5IHBvcHVsYXRlZAorICogIHRoZSBkYXRhIGNvbnRleHQgZHVyaW5nIHRoZSBpbmRleCBzZXR1cCBwaGFzZSwgeW91IG1heSBub3QgbmVlZCB0bworICogIGRvIGFueXRoaW5nLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4IHBvaW50ZXIgdG8gYSBjb250ZXh0LgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfcm93X3ByZXAoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfcm93X3ByZXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjM5MDpvOiBQcmVwYXJlIHJvdyBmb3IgcmVxdWVzdC4KKyAgICAgKiBJZiBwb3B1bGF0aW5nIHJvdyBkYXRhIHdhcyBkZWxheWVkLCB0aGlzIGlzIHRoZSBwbGFjZSB0bworICAgICAqIGZpbGwgaW4gdGhlIHJvdyBmb3IgdGhpcyByZXF1ZXN0LgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dfcHJlcCAqLworCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQwMzNmMAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgSVBERUZBVUxUUk9VVEVSVEFCTEVfREFUQV9BQ0NFU1NfSAorI2RlZmluZSBJUERFRkFVTFRST1VURVJUQUJMRV9EQVRBX0FDQ0VTU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZSBpcyBzdWJpZCAzNyBvZiBpcC4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNywgbGVuZ3RoOiA4CisgICAgICovCisKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0X2RhdGEoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZyk7CisKKworICAgIC8qCisgICAgICogVE9ETzoxODA6bzogUmV2aWV3IGlwRGVmYXVsdFJvdXRlclRhYmxlIGNhY2hlIHRpbWVvdXQuCisgICAgICogVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUgY2FjaGUgdGltZXMgb3V0CisgICAgICovCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX0NBQ0hFX1RJTUVPVVQgICA2MAorCisgICAgdm9pZCAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0KG5ldHNubXBfY29udGFpbmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhY2hlICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUpOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd24obmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cik7CisKKyAgICBpbnQgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgIHZvaWQgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisKKyAgICBpbnQgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfY2FjaGVfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICB2b2lkICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfY2FjaGVfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93X3ByZXAoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBERUZBVUxUUk9VVEVSVEFCTEVfREFUQV9BQ0NFU1NfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfZ2V0LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTc3ODk3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfZ2V0LmMKQEAgLTAsMCArMSwzMjUgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDEyMDg4ICQgb2YgJCAKKyAqCisgKiAkSWQ6JAorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGUuaCIKKworCisvKiogQGRlZmdyb3VwIGRhdGFfZ2V0IGRhdGFfZ2V0OiBSb3V0aW5lcyB0byBnZXQgZGF0YQorICoKKyAqIFRPRE86MjMwOk06IEltcGxlbWVudCBpcERlZmF1bHRSb3V0ZXJUYWJsZSBnZXQgcm91dGluZXMuCisgKiBUT0RPOjI0MDpNOiBJbXBsZW1lbnQgaXBEZWZhdWx0Um91dGVyVGFibGUgbWFwcGluZyByb3V0aW5lcyAoaWYgYW55KS4KKyAqCisgKiBUaGVzZSByb3V0aW5lIGFyZSB1c2VkIHRvIGdldCB0aGUgdmFsdWUgZm9yIGluZGl2aWR1YWwgb2JqZWN0cy4gVGhlCisgKiByb3cgY29udGV4dCBpcyBwYXNzZWQsIGFsb25nIHdpdGggYSBwb2ludGVyIHRvIHRoZSBtZW1vcnkgd2hlcmUgdGhlCisgKiB2YWx1ZSBzaG91bGQgYmUgY29waWVkLgorICoKKyAqIEB7CisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyVGFibGUgaXMgc3ViaWQgMzcgb2YgaXAuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM3LCBsZW5ndGg6IDgKKyAqLworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAqIFRPRE86MjAwOnI6IEltcGxlbWVudCBpcERlZmF1bHRSb3V0ZXJUYWJsZSBkYXRhIGNvbnRleHQgZnVuY3Rpb25zLgorICovCisvKgorICogaXBEZWZhdWx0Um91dGVyVGFibGVfYWxsb2NhdGVfZGF0YQorICoKKyAqIFB1cnBvc2U6IGNyZWF0ZSBuZXcgaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YS4KKyAqLworaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YSAqCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBUT0RPOjIwMTpyOiB8LT4gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YSBjb250ZXh0LgorICAgICAqLworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGEgKnJ0biA9CisgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY3JlYXRlKCk7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9kYXRhIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcnRuKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmFibGUgdG8gbWFsbG9jIG1lbW9yeSBmb3IgbmV3ICIKKyAgICAgICAgICAgICAgICAgImlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGEuXG4iKTsKKyAgICB9CisKKyAgICByZXR1cm4gcnRuOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9kYXRhICovCisKKy8qCisgKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX2RhdGEKKyAqCisgKiBQdXJwb3NlOiByZWxlYXNlIGlwRGVmYXVsdFJvdXRlclRhYmxlIGRhdGEuCisgKi8KK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2VfZGF0YShpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhICogZGF0YSkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX2RhdGEiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjAyOnI6IHwtPiByZWxlYXNlIG1lbW9yeSBmb3IgdGhlIGlwRGVmYXVsdFJvdXRlclRhYmxlIGRhdGEgY29udGV4dC4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2ZyZWUoZGF0YSk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2VfZGF0YSAqLworCisKKworLyoqCisgKiBzZXQgbWliIGluZGV4KGVzKQorICoKKyAqIEBwYXJhbSB0YmxfaWR4IG1pYiBpbmRleCBzdHJ1Y3R1cmUKKyAqIEBwYXJhbSBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZV92YWwKKyAqIEBwYXJhbSBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzX3B0cgorICogQHBhcmFtIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfcHRyX2xlbgorICogQHBhcmFtIGlwRGVmYXVsdFJvdXRlcklmSW5kZXhfdmFsCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBpcyB1c2VmdWwgZm9yIHNldHRpbmcgYWxsIHRoZSBNSUIgaW5kZXgKKyAqICBjb21wb25lbnRzIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24gY2FsbC4gSXQgaXMgYXNzdW1lIHRoYXQgdGhlIEMgdmFsdWVzCisgKiAgaGF2ZSBhbHJlYWR5IGJlZW4gbWFwcGVkIGZyb20gdGhlaXIgbmF0aXZlL3Jhd2Zvcm1hdCB0byB0aGUgTUlCIGZvcm1hdC4KKyAqLworaW50CitpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4KGlwRGVmYXVsdFJvdXRlclRhYmxlX21pYl9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRibF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXBEZWZhdWx0Um91dGVySWZJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUoMSkvSW5ldEFkZHJlc3NUeXBlL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9hL3cvRS9yL2QvaCAKKyAgICAgKi8KKyAgICAvKiogV0FSTklORzogdGhpcyBjb2RlIG1pZ2h0IG5vdCB3b3JrIGZvciBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKi8KKyAgICB0YmxfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSA9IGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlX3ZhbDsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzcygyKS9JbmV0QWRkcmVzcy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvYS93L2UvUi9kL2ggCisgICAgICovCisgICAgdGJsX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc19sZW4gPSBzaXplb2YodGJsX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzcykgLyBzaXplb2YodGJsX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc1swXSk7IC8qIG1heCBsZW5ndGggKi8KKyAgICAvKiogV0FSTklORzogdGhpcyBjb2RlIG1pZ2h0IG5vdCB3b3JrIGZvciBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKi8KKyAgICAvKgorICAgICAqIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yIGlwRGVmYXVsdFJvdXRlckFkZHJlc3MgZGF0YQorICAgICAqLworICAgIGlmICgoTlVMTCA9PSB0YmxfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzKSB8fAorICAgICAgICAodGJsX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc19sZW4gPAorICAgICAgICAgKGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW4pKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm90IGVub3VnaCBzcGFjZSBmb3IgdmFsdWVcbiIpOworICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworICAgIH0KKyAgICB0YmxfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzX2xlbiA9CisgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW47CisgICAgbWVtY3B5KHRibF9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3MsIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0ciwKKyAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyX2xlbiAqCisgICAgICAgICAgIHNpemVvZihpcERlZmF1bHRSb3V0ZXJBZGRyZXNzX3ZhbF9wdHJbMF0pKTsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVySWZJbmRleCgzKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9IIAorICAgICAqLworICAgIC8qKiBXQVJOSU5HOiB0aGlzIGNvZGUgbWlnaHQgbm90IHdvcmsgZm9yIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqLworICAgIHRibF9pZHgtPmlwRGVmYXVsdFJvdXRlcklmSW5kZXggPSBpcERlZmF1bHRSb3V0ZXJJZkluZGV4X3ZhbDsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzZXQgcm93IGNvbnRleHQgaW5kZXhlcworICoKKyAqIEBwYXJhbSByZXFyZXFfY3R4IHRoZSByb3cgY29udGV4dCB0aGF0IG5lZWRzIHVwZGF0ZWQgaW5kZXhlcworICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbWliIGluZGV4cywgdGhlbiB1cGRhdGVzIHRoZSBvaWQgaW5kZXhzCisgKiAgZnJvbSB0aGUgbWliIGluZGV4LgorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4ZXNfc2V0KGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICppcERlZmF1bHRSb3V0ZXJBZGRyZXNzX3ZhbF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXBEZWZhdWx0Um91dGVySWZJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhlc19zZXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0KKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCgmcm93cmVxX2N0eC0+dGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVySWZJbmRleF92YWwpKQorICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0IG1pYiBpbmRleCB0byBvaWQgaW5kZXgKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4LT5vaWRfaWR4LmxlbiA9IHNpemVvZihyb3dyZXFfY3R4LT5vaWRfdG1wKSAvIHNpemVvZihvaWQpOworICAgIGlmICgwICE9IGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X3RvX29pZCgmcm93cmVxX2N0eC0+b2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJvd3JlcV9jdHgtPnRibF9pZHgpKSB7CisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisgICAgfQorCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleGVzX3NldCAqLworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlckVudHJ5LmlwRGVmYXVsdFJvdXRlckxpZmV0aW1lCisgKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZSBpcyBzdWJpZCA0IG9mIGlwRGVmYXVsdFJvdXRlckVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzcuMS40CisgKiBEZXNjcmlwdGlvbjoKK1RoZSByZW1haW5pbmcgbGVuZ3RoIG9mIHRpbWUsIGluIHNlY29uZHMsIHRoYXQgdGhpcyByb3V0ZXIKKyAgICAgICAgICAgIHdpbGwgY29udGludWUgdG8gYmUgdXNlZnVsIGFzIGEgZGVmYXVsdCByb3V0ZXIuICBBIHZhbHVlIG9mCisgICAgICAgICAgICB6ZXJvIGluZGljYXRlcyB0aGF0IGl0IGlzIG5vIGxvbmdlciB1c2VmdWwgYXMgYSBkZWZhdWx0CisgICAgICAgICAgICByb3V0ZXIuICBJdCBpcyBsZWZ0IHRvIHRoZSBpbXBsZW1lbnRlciBvZiB0aGUgTUlCIGFzIHRvCisgICAgICAgICAgICB3aGV0aGVyIGEgcm91dGVyIHdpdGggYSBsaWZldGltZSBvZiB6ZXJvIGlzIHJlbW92ZWQgZnJvbSB0aGUKKyAgICAgICAgICAgIGxpc3QuCisKKyAgICAgICAgICAgIEZvciBJUHY2LCB0aGlzIHZhbHVlIHNob3VsZCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgcm91dGVyCisgICAgICAgICAgICBhZHZlcnRpc2VtZW50IG1lc3NhZ2VzLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAxICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICogUmFuZ2VzOiAgMCAtIDY1NTM1OworICoKKyAqIEl0cyBzeW50YXggaXMgVU5TSUdORUQzMiAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBEZWZhdWx0Um91dGVyTGlmZXRpbWVfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlckxpZmV0aW1lX2dldChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZV92YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBEZWZhdWx0Um91dGVyTGlmZXRpbWVfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlckxpZmV0aW1lX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lIGRhdGEuCisgICAgICogY29weSAoKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZV92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcERlZmF1bHRSb3V0ZXJMaWZldGltZV92YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmRhdGEtPmRyX2xpZmV0aW1lOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZV9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyRW50cnkuaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZQorICogaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZSBpcyBzdWJpZCA1IG9mIGlwRGVmYXVsdFJvdXRlckVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzcuMS41CisgKiBEZXNjcmlwdGlvbjoKK0FuIGluZGljYXRpb24gb2YgcHJlZmVyZW5jZSBnaXZlbiB0byB0aGlzIHJvdXRlciBhcyBhCisgICAgICAgICAgICBkZWZhdWx0IHJvdXRlciBhcyBkZXNjcmliZWQgaW4gaGUgRGVmYXVsdCBSb3V0ZXIKKyAgICAgICAgICAgIFByZWZlcmVuY2VzIGRvY3VtZW50LiAgVHJlYXRpbmcgdGhlIHZhbHVlIGFzIGEKKyAgICAgICAgICAgIDIgYml0IHNpZ25lZCBpbnRlZ2VyIGFsbG93cyBmb3Igc2ltcGxlIGFyaXRobWV0aWMKKyAgICAgICAgICAgIGNvbXBhcmlzb25zLgorCisgICAgICAgICAgICBGb3IgSVB2NCByb3V0ZXJzIG9yIElQdjYgcm91dGVycyB0aGF0IGFyZSBub3QgdXNpbmcgdGhlCisgICAgICAgICAgICB1cGRhdGVkIHJvdXRlciBhZHZlcnRpc2VtZW50IGZvcm1hdCwgdGhpcyBvYmplY3QgaXMgc2V0IHRvCisgICAgICAgICAgICBtZWRpdW0gKDApLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDEgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICogRW51bSByYW5nZTogMy84LiBWYWx1ZXM6ICByZXNlcnZlZCgtMiksIGxvdygtMSksIG1lZGl1bSgwKSwgaGlnaCgxKQorICoKKyAqIEl0cyBzeW50YXggaXMgSU5URUdFUiAoYmFzZWQgb24gcGVybHR5cGUgSU5URUdFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9JTlRFR0VSLiBUaGUgQyB0eXBlIGRlY2wgaXMgbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2UgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZV9nZXQoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlIGRhdGEuCisgICAgICogY29weSAoKiBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2VfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5kYXRhLT5kcl9wcmVmZXJlbmNlOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX2dldCAqLworCisKKworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2dldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2OTg2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA4OCAkIG9mICQKKyAqCisgKiAkSWQ6JAorICoKKyAqIEBmaWxlIGlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfZ2V0LmgKKyAqCisgKiBAYWRkdG9ncm91cCBnZXQKKyAqCisgKiBQcm90b3R5cGVzIGZvciBnZXQgZnVuY3Rpb25zCisgKgorICogQHsKKyAqLworI2lmbmRlZiBJUERFRkFVTFRST1VURVJUQUJMRV9EQVRBX0dFVF9ICisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX0RBVEFfR0VUX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogR0VUIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogR0VUIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlclRhYmxlIGlzIHN1YmlkIDM3IG9mIGlwLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM3LCBsZW5ndGg6IDgKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGluZGV4ZXMKKyAgICAgKi8KKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJMaWZldGltZV9nZXQoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX2dldChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZV92YWxfcHRyKTsKKworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgKKyAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX21pYl9pbmRleCAqIHRibF9pZHgsCisgICAgICAgICB1X2xvbmcgaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGVfdmFsLAorICAgICAgICAgY2hhciAqaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyLAorICAgICAgICAgc2l6ZV90IGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW4sCisgICAgICAgICBsb25nIGlwRGVmYXVsdFJvdXRlcklmSW5kZXhfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhlc19zZXQoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXBEZWZhdWx0Um91dGVySWZJbmRleF92YWwpOworCisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUERFRkFVTFRST1VURVJUQUJMRV9EQVRBX0dFVF9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9lbnVtcy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI0NmQxMAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9lbnVtcy5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1lbnVtcy5tMmMgMTI1MjYgMjAwNS0wNy0xNSAyMjo0MToxNlogcnN0b3J5ICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIElQREVGQVVMVFJPVVRFUlRBQkxFX0VOVU1TX0gKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSVEFCTEVfRU5VTVNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqIE5PVEVTIG9uIGVudW1zCisgICAgICogPT09PT09PT09PT09PT0KKyAgICAgKgorICAgICAqIFZhbHVlIE1hcHBpbmcKKyAgICAgKiAtLS0tLS0tLS0tLS0tCisgICAgICogSWYgdGhlIHZhbHVlcyBmb3IgeW91ciBkYXRhIHR5cGUgZG9uJ3QgZXhhY3RseSBtYXRjaCB0aGUKKyAgICAgKiBwb3NzaWJsZSB2YWx1ZXMgZGVmaW5lZCBieSB0aGUgbWliLCB5b3Ugc2hvdWxkIG1hcCB0aGVtCisgICAgICogYmVsb3cuIEZvciBleGFtcGxlLCBhIGJvb2xlYW4gZmxhZyAoMS8wKSBpcyB1c3VhbGx5IHJlcHJlc2VudGVkCisgICAgICogYXMgYSBUcnV0aFZhbHVlIGluIGEgTUlCLCB3aGljaCBtYXBzIHRvIHRoZSB2YWx1ZXMgKDEvMikuCisgICAgICoKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIGVudW0gZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCisgKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZSAoVU5TSUdORUQzMiAvIEFTTl9VTlNJR05FRCkKKyAqCisgKiBzaW5jZSBhIFRleHR1YWwgQ29udmVudGlvbiBtYXkgYmUgcmVmZXJlbmNlZCBtb3JlIHRoYW4gb25jZSBpbiBhCisgKiBNSUIsIHByb3RlY3QgYWdhaW50IHJlZGVmaW5pdGlvbnMgb2YgdGhlIGVudW0gdmFsdWVzLgorICovCisjaWZuZGVmIElQREVGQVVMVFJPVVRFUkxJRkVUSU1FX0VOVU1TCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUkxJRkVUSU1FX0VOVU1TCisKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSTElGRVRJTUVfTUlOICAwCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUkxJRkVUSU1FX01BWCAgMHhGRkZGRkZGRlVMCisKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBERUZBVUxUUk9VVEVSTElGRVRJTUVfRU5VTVMgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCisgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSAoSW5ldEFkZHJlc3NUeXBlIC8gQVNOX0lOVEVHRVIpCisgKgorICogc2luY2UgYSBUZXh0dWFsIENvbnZlbnRpb24gbWF5IGJlIHJlZmVyZW5jZWQgbW9yZSB0aGFuIG9uY2UgaW4gYQorICogTUlCLCBwcm90ZWN0IGFnYWludCByZWRlZmluaXRpb25zIG9mIHRoZSBlbnVtIHZhbHVlcy4KKyAqLworI2lmbmRlZiBJTkVUQUREUkVTU1RZUEVfRU5VTVMKKyNkZWZpbmUgSU5FVEFERFJFU1NUWVBFX0VOVU1TCisKKyNkZWZpbmUgSU5FVEFERFJFU1NUWVBFX1VOS05PV04gIDAKKyNkZWZpbmUgSU5FVEFERFJFU1NUWVBFX0lQVjQgIDEKKyNkZWZpbmUgSU5FVEFERFJFU1NUWVBFX0lQVjYgIDIKKyNkZWZpbmUgSU5FVEFERFJFU1NUWVBFX0lQVjRaICAzCisjZGVmaW5lIElORVRBRERSRVNTVFlQRV9JUFY2WiAgNAorI2RlZmluZSBJTkVUQUREUkVTU1RZUEVfRE5TICAxNgorCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElORVRBRERSRVNTVFlQRV9FTlVNUyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBjb25zdGFudHMgZm9yIGVudW1zIGZvciB0aGUgTUlCIG5vZGUKKyAqIGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2UgKElOVEVHRVIgLyBBU05fSU5URUdFUikKKyAqCisgKiBzaW5jZSBhIFRleHR1YWwgQ29udmVudGlvbiBtYXkgYmUgcmVmZXJlbmNlZCBtb3JlIHRoYW4gb25jZSBpbiBhCisgKiBNSUIsIHByb3RlY3QgYWdhaW50IHJlZGVmaW5pdGlvbnMgb2YgdGhlIGVudW0gdmFsdWVzLgorICovCisjaWZuZGVmIElQREVGQVVMVFJPVVRFUlBSRUZFUkVOQ0VfRU5VTVMKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRV9FTlVNUworCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlBSRUZFUkVOQ0VfUkVTRVJWRUQgIC0yCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlBSRUZFUkVOQ0VfTE9XICAtMQorI2RlZmluZSBJUERFRkFVTFRST1VURVJQUkVGRVJFTkNFX01FRElVTSAgMAorI2RlZmluZSBJUERFRkFVTFRST1VURVJQUkVGRVJFTkNFX0hJR0ggIDEKKworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUERFRkFVTFRST1VURVJQUkVGRVJFTkNFX0VOVU1TICovCisKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQREVGQVVMVFJPVVRFUlRBQkxFX0VOVU1TX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGE3YmEwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5jCkBAIC0wLDAgKzEsMTAyMSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTU4OTkgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSElTIEZJTEUgRE9FUyBOT1QgQ09OVEFJTiBBTlkgVVNFUiBFRElUQUJMRSBDT0RFLiAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSEUgR0VORVJBVEVEIENPREUgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04sIEFORCAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICBJUyBTVUJKRUNUIFRPIENIQU5HRSBXSVRIT1VUIFdBUk5JTkcgSU4gRlVUVVJFIFJFTEVBU0VTLiAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGUuaCIKKworCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKworI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5oIgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZSBpcyBzdWJpZCAzNyBvZiBpcC4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzcsIGxlbmd0aDogOAorICovCit0eXBlZGVmIHN0cnVjdCBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2VfY3R4X3MgeworCisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKyAgICBuZXRzbm1wX2NhY2hlICAqY2FjaGU7CisKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKnVzZXJfY3R4OworCisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyB0YmxfaW5mbzsKKworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyBhY2Nlc3NfbXVsdGlwbGV4ZXI7CisKK30gaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlX2N0eDsKKworc3RhdGljIGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHggaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4OworCitzdGF0aWMgdm9pZCAgICAKK19pcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfaW5pdChpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2VfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOworc3RhdGljIHZvaWQgICAgCitfaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpZl9jdHgpOworCisKK25ldHNubXBfY29udGFpbmVyICoKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKK30KKworaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICoKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LnVzZXJfY3R4OworfQorCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKgoraXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uX3NldChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpCit7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICpvbGQgPQorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHgudXNlcl9jdHg7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOworICAgIHJldHVybiBvbGQ7Cit9CisKK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKK3sKKyAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LmNvbnRhaW5lcik7Cit9CisKKy8qCisgKiBtZmQgbXVsdGlwbGV4ZXIgbW9kZXMKKyAqLworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9wb3N0X3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vYmplY3RfbG9va3VwOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X3ZhbHVlczsKKy8qKgorICogQGludGVybmFsCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSAKKyAqICAgIChEZWZpbmUgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkKQorICovCit2b2lkCitfaXBEZWZhdWx0Um91dGVyVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UKKyAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICogcmVnX3B0ciwgdV9sb25nIGZsYWdzKQoreworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyAqYWNjZXNzX211bHRpcGxleGVyID0KKyAgICAgICAgJmlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC5hY2Nlc3NfbXVsdGlwbGV4ZXI7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGJsX2luZm8gPQorICAgICAgICAmaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LnRibF9pbmZvOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcjsKKyAgICBpbnQgICAgICAgICAgICAgbWZkX21vZGVzID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfaXBEZWZhdWx0Um91dGVyVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UiLCAiY2FsbGVkXG4iKSk7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzYXZlIGludGVyZmFjZSBjb250ZXh0IGZvciBpcERlZmF1bHRSb3V0ZXJUYWJsZQorICAgICAqLworICAgIC8qCisgICAgICogU2V0dGluZyB1cCB0aGUgdGFibGUncyBkZWZpbml0aW9uCisgICAgICovCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGJsX2luZm8sIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGlwRGVmYXVsdFJvdXRlckFkZHJlc3MgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIGluZGV4OiBpcERlZmF1bHRSb3V0ZXJJZkluZGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisKKyAgICAvKgorICAgICAqIERlZmluZSB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBhY2Nlc3NpYmxlIGNvbHVtbnMuICBUaGlzCisgICAgICogb3B0aW1pemVzIHJldHJpdmFsLiAKKyAgICAgKi8KKyAgICB0YmxfaW5mby0+bWluX2NvbHVtbiA9IElQREVGQVVMVFJPVVRFUlRBQkxFX01JTl9DT0w7CisgICAgdGJsX2luZm8tPm1heF9jb2x1bW4gPSBJUERFRkFVTFRST1VURVJUQUJMRV9NQVhfQ09MOworCisgICAgLyoKKyAgICAgKiBzYXZlIHVzZXJzIGNvbnRleHQKKyAgICAgKi8KKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHgudXNlcl9jdHggPSByZWdfcHRyOworCisgICAgLyoKKyAgICAgKiBjYWxsIGRhdGEgYWNjZXNzIGluaXRpYWxpemF0aW9uIGNvZGUKKyAgICAgKi8KKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0X2RhdGEocmVnX3B0cik7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgX2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0KCZpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHgpOworICAgIGlmIChOVUxMID09IGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBpbml0aWFsaXplIGNvbnRhaW5lciBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBhY2Nlc3NfbXVsdGlwbGV4ZXI6IFJFUVVJUkVEIHdyYXBwZXIgZm9yIGdldCByZXF1ZXN0IGhhbmRsaW5nCisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3RfbG9va3VwID0KKyAgICAgICAgX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vYmplY3RfbG9va3VwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Z2V0X3ZhbHVlcyA9IF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X3ZhbHVlczsKKworICAgIC8qCisgICAgICogbm8gd3JhcHBlcnMgeWV0CisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCA9CisgICAgICAgIF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3Q7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QgPQorICAgICAgICBfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdDsKKworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIENyZWF0ZSBhIHJlZ2lzdHJhdGlvbiwgc2F2ZSBvdXIgcmVnIGRhdGEsIHJlZ2lzdGVyIHRhYmxlLgorICAgICAqLworICAgIERFQlVHTVNHVEwoKCJpcERlZmF1bHRSb3V0ZXJUYWJsZTppbml0X2lwRGVmYXVsdFJvdXRlclRhYmxlIiwKKyAgICAgICAgICAgICAgICAiUmVnaXN0ZXJpbmcgaXBEZWZhdWx0Um91dGVyVGFibGUgYXMgYSBtaWJzLWZvci1kdW1taWVzIHRhYmxlLlxuIikpOworICAgIGhhbmRsZXIgPQorICAgICAgICBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX211bHRpcGxleGVyX2dldChhY2Nlc3NfbXVsdGlwbGV4ZXIpOworICAgIHJlZ2luZm8gPQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZSgiaXBEZWZhdWx0Um91dGVyVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgaWYgKE5VTEwgPT0gcmVnaW5mbykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlZ2luZm8tPm15X3JlZ192b2lkID0gJmlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eDsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzZXQgdXAgYmFieSBzdGVwcyBoYW5kbGVyLCBjcmVhdGUgaXQgYW5kIGluamVjdCBpdAorICAgICAqLworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfT0JKRUNUX0xPT0tVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QUkVfUkVRVUVTVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOworCisjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorICAgIC8qIFhYWCAtIGFyZSB0aGVzZSBhY3R1YWxseSBuZWNlc3Nhcnk/ICovCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfSVJSRVZFUlNJQkxFX0NPTU1JVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3Rfc3ludGF4X2NoZWNrcykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DSEVDS19PQkpFQ1Q7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fU0VUVVA7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jbGVhbnVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ0xFQU5VUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHMpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRTOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cm93X2NyZWF0aW9uKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1JPV19DUkVBVEU7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29uc2lzdGVuY3lfY2hlY2tzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX0NPTlNJU1RFTkNZOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7CisjZW5kaWYKKworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCByb3dfbWVyZ2UgaGVscGVyIHdpdGggcHJlZml4IHJvb3RvaWRfbGVuICsgMiAoZW50cnkuY29sKQorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2dldF9yb3dfbWVyZ2VfaGFuZGxlcihyZWdpbmZvLT5yb290b2lkX2xlbiArIDIpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNvbnRhaW5lcl90YWJsZSBoZWxwZXIKKyAgICAgKi8KKyAgICBoYW5kbGVyID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQodGJsX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNhY2hlIGhlbHBlcgorICAgICAqLworICAgIGlmIChOVUxMICE9IGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC5jYWNoZSkgeworICAgICAgICBoYW5kbGVyID0KKyAgICAgICAgICAgIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9nZXQoaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LmNhY2hlKTsKKyAgICAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIHJlZ2lzdGVyIHRhYmxlCisgICAgICovCisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWdpbmZvLCB0YmxfaW5mbyk7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwRGVmYXVsdFJvdXRlclRhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBTaHV0ZG93biB0aGUgdGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUKKyAqLwordm9pZAorX2lwRGVmYXVsdFJvdXRlclRhYmxlX3NodXRkb3duX2ludGVyZmFjZShpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZWdfcHRyKQoreworICAgIC8qCisgICAgICogc2h1dGRvd24gdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd24oJmlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eCk7Cit9CisKK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8gKnZjKQoreworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC50YmxfaW5mby52YWxpZF9jb2x1bW5zID0gdmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBjb252ZXJ0IHRoZSBpbmRleCBjb21wb25lbnQgc3RvcmVkIGluIHRoZSBjb250ZXh0IHRvIGFuIG9pZAorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQoreworICAgIGludCAgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgLyoKKyAgICAgKiB0ZW1wIHN0b3JhZ2UgZm9yIHBhcnNpbmcgaW5kZXhlcworICAgICAqLworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUoMSkvSW5ldEFkZHJlc3NUeXBlL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9hL3cvRS9yL2QvaAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGU7CisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzKDIpL0luZXRBZGRyZXNzL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9hL3cvZS9SL2QvaAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzczsKKyAgICAvKgorICAgICAqIGlwRGVmYXVsdFJvdXRlcklmSW5kZXgoMykvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleDsKKworICAgIC8qCisgICAgICogc2V0IHVwIHZhcmJpbmRzCisgICAgICovCisgICAgbWVtc2V0KCZ2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUpKTsKKyAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUudHlwZSA9IEFTTl9JTlRFR0VSOworICAgIG1lbXNldCgmdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3MsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcykpOworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzLnR5cGUgPSBBU05fT0NURVRfU1RSOworICAgIG1lbXNldCgmdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleCkpOworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4LnR5cGUgPSBBU05fSU5URUdFUjsKKworICAgIC8qCisgICAgICogY2hhaW4gdGVtcCBpbmRleCB2YXJiaW5kcyB0b2dldGhlcgorICAgICAqLworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZS5uZXh0X3ZhcmlhYmxlID0KKyAgICAgICAgJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzOworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzLm5leHRfdmFyaWFibGUgPSAmdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXg7CisgICAgdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgubmV4dF92YXJpYWJsZSA9IE5VTEw7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X3RvX29pZCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUoMSkvSW5ldEFkZHJlc3NUeXBlL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9hL3cvRS9yL2QvaCAKKyAgICAgKi8KKyAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUpKTsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzcygyKS9JbmV0QWRkcmVzcy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvYS93L2UvUi9kL2ggCisgICAgICovCisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKCZ2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3NfbGVuICoKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3NbMF0pKTsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVySWZJbmRleCgzKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9IIAorICAgICAqLworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBtaWJfaWR4LT5pcERlZmF1bHRSb3V0ZXJJZkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXBEZWZhdWx0Um91dGVySWZJbmRleCkpOworCisKKyAgICBlcnIgPSBidWlsZF9vaWRfbm9hbGxvYyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sICZvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSk7CisgICAgaWYgKGVycikKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yICVkIGNvbnZlcnRpbmcgaW5kZXggdG8gb2lkXG4iLCBlcnIpOworCisgICAgLyoKKyAgICAgKiBwYXJzaW5nIG1heSBoYXZlIGFsbG9jYXRlZCBtZW1vcnkuIGZyZWUgaXQuCisgICAgICovCisgICAgc25tcF9yZXNldF92YXJfYnVmZmVycygmdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlKTsKKworICAgIHJldHVybiBlcnI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X3RvX29pZCAqLworCisvKioKKyAqIGV4dHJhY3QgaXBEZWZhdWx0Um91dGVyVGFibGUgaW5kZXhlcyBmcm9tIGEgbmV0c25tcF9pbmRleAorICoKKyAqIEByZXR2YWwgU05NUF9FUlJfTk9FUlJPUiAgOiBubyBlcnJvcgorICogQHJldHZhbCBTTk1QX0VSUl9HRU5FUlIgICA6IGVycm9yCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhfZnJvbV9vaWQobmV0c25tcF9pbmRleCAqIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgZXJyID0gU05NUF9FUlJfTk9FUlJPUjsKKworICAgIC8qCisgICAgICogdGVtcCBzdG9yYWdlIGZvciBwYXJzaW5nIGluZGV4ZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlKDEpL0luZXRBZGRyZXNzVHlwZS9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvYS93L0Uvci9kL2gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlOworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzcygyKS9JbmV0QWRkcmVzcy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvYS93L2UvUi9kL2gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3M7CisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJJZkluZGV4KDMpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB2YXJiaW5kcworICAgICAqLworICAgIG1lbXNldCgmdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlLCAweDAwLAorICAgICAgICAgICBzaXplb2YodmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlKSk7CisgICAgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlLnR5cGUgPSBBU05fSU5URUdFUjsKKyAgICBtZW1zZXQoJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzLCAweDAwLAorICAgICAgICAgICBzaXplb2YodmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3MpKTsKKyAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcy50eXBlID0gQVNOX09DVEVUX1NUUjsKKyAgICBtZW1zZXQoJnZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4LCAweDAwLAorICAgICAgICAgICBzaXplb2YodmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgpKTsKKyAgICB2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleC50eXBlID0gQVNOX0lOVEVHRVI7CisKKyAgICAvKgorICAgICAqIGNoYWluIHRlbXAgaW5kZXggdmFyYmluZHMgdG9nZXRoZXIKKyAgICAgKi8KKyAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUubmV4dF92YXJpYWJsZSA9CisgICAgICAgICZ2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzczsKKyAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcy5uZXh0X3ZhcmlhYmxlID0gJnZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4OworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleF9mcm9tX29pZCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogcGFyc2UgdGhlIG9pZCBpbnRvIHRoZSBpbmRpdmlkdWFsIGluZGV4IGNvbXBvbmVudHMKKyAgICAgKi8KKyAgICBlcnIgPSBwYXJzZV9vaWRfaW5kZXhlcyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSk7CisgICAgaWYgKGVyciA9PSBTTk1QX0VSUl9OT0VSUk9SKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGNvcHkgb3V0IHZhbHVlcworICAgICAgICAgKi8KKyAgICAgICAgbWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUgPQorICAgICAgICAgICAgKigodV9sb25nICopIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZS52YWwuc3RyaW5nKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogTk9URTogdmFsX2xlbiBpcyBpbiBieXRlcywgaXBEZWZhdWx0Um91dGVyQWRkcmVzc19sZW4gbWlnaHQgbm90IGJlCisgICAgICAgICAqLworICAgICAgICBpZiAodmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3MudmFsX2xlbiA+CisgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzcykpCisgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3MudmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcy52YWxfbGVuKTsKKyAgICAgICAgICAgIG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3NfbGVuID0KKyAgICAgICAgICAgICAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcy52YWxfbGVuIC8KKyAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc1swXSk7CisgICAgICAgIH0KKyAgICAgICAgbWliX2lkeC0+aXBEZWZhdWx0Um91dGVySWZJbmRleCA9CisgICAgICAgICAgICAqKChsb25nICopIHZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4LnZhbC5zdHJpbmcpOworCisKKyAgICB9CisKKyAgICAvKgorICAgICAqIHBhcnNpbmcgbWF5IGhhdmUgYWxsb2NhdGVkIG1lbW9yeS4gZnJlZSBpdC4KKyAgICAgKi8KKyAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzKCZ2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUpOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhfZnJvbV9vaWQgKi8KKworCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQGludGVybmFsCisgKiBhbGxvY2F0ZSByZXNvdXJjZXMgZm9yIGEgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eAorICovCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YSAqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfaW5pdF9jdHgpCit7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgYSAiCisgICAgICAgICAgICAgICAgICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4LlxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChOVUxMICE9IGRhdGEpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiB0cmFjayBpZiB3ZSBnb3QgZGF0YSBmcm9tIHVzZXIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzIHw9IE1GRF9ST1dfREFUQV9GUk9NX1VTRVI7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhID0gZGF0YTsKKyAgICAgICAgfSBlbHNlIGlmIChOVUxMID09CisgICAgICAgICAgICAgICAgICAgKHJvd3JlcV9jdHgtPmRhdGEgPQorICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9kYXRhKCkpKSB7CisgICAgICAgICAgICBTTk1QX0ZSRUUocm93cmVxX2N0eCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogdW5kbyBjb250ZXh0IHdpbGwgYmUgYWxsb2NhdGVkIHdoZW4gbmVlZGVkIChpbiAqX3VuZG9fc2V0dXApCisgICAgICovCisKKyAgICByb3dyZXFfY3R4LT5vaWRfaWR4Lm9pZHMgPSByb3dyZXFfY3R4LT5vaWRfdG1wOworCisgICAgcm93cmVxX2N0eC0+aXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9saXN0ID0gTlVMTDsKKworICAgIC8qCisgICAgICogaWYgd2UgYWxsb2NhdGVkIGRhdGEsIGNhbGwgaW5pdCByb3V0aW5lCisgICAgICovCisgICAgaWYgKCEocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19EQVRBX0ZST01fVVNFUikpIHsKKyAgICAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPQorICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eF9pbml0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pbml0X2N0eCkpIHsKKyAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHggPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHggKi8KKworLyoKKyAqIEBpbnRlcm5hbAorICogcmVsZWFzZSByZXNvdXJjZXMgZm9yIGEgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eAorICovCit2b2lkCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChyb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogZm9yIG5vbi10cmFuc2llbnQgZGF0YSwgZG9uJ3QgZnJlZSBkYXRhIHdlIGdvdCBmcm9tIHRoZSB1c2VyCisgICAgICovCisgICAgaWYgKChyb3dyZXFfY3R4LT5kYXRhKSAmJgorICAgICAgICAhKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREFUQV9GUk9NX1VTRVIpKQorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX2RhdGEocm93cmVxX2N0eC0+ZGF0YSk7CisKKyAgICAvKgorICAgICAqIGZyZWUgaW5kZXggb2lkIHBvaW50ZXIKKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzICE9IHJvd3JlcV9jdHgtPm9pZF90bXApCisgICAgICAgIGZyZWUocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzKTsKKworICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4KTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoMSAhPSBuZXRzbm1wX3Jvd19tZXJnZV9zdGF0dXNfZmlyc3QocmVnaW5mbywgYWd0cmVxX2luZm8pKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICJza2lwcGluZyBhZGRpdGlvbmFsIHByZV9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHJjID0gaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QoaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiaXBEZWZhdWx0Um91dGVyVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9wcmVfcmVxdWVzdFxuIiwgcmMpKTsKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9wb3N0X3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworICAgIGludCAgICAgICAgICAgICByYywgcGFja2V0X3JjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiByZWxlYXNlIHJvdyBjb250ZXh0LCBpZiBkZWxldGVkCisgICAgICovCisgICAgaWYgKHJvd3JlcV9jdHggJiYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREVMRVRFRCkpCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogd2FpdCBmb3IgbGFzdCBjYWxsIGJlZm9yZSBjYWxsaW5nIHVzZXIKKyAgICAgKi8KKyAgICBpZiAoMSAhPSBuZXRzbm1wX3Jvd19tZXJnZV9zdGF0dXNfbGFzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIndhaXRpbmcgZm9yIGxhc3QgcG9zdF9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHBhY2tldF9yYyA9IG5ldHNubXBfY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKGFndHJlcV9pbmZvLT5hc3AsIDApOworICAgIHJjID0gaXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0KGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCwgcGFja2V0X3JjKTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImlwRGVmYXVsdFJvdXRlclRhYmxlIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiaXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0XG4iLCByYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX29iamVjdF9sb29rdXAobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBfRVJSX05PRVJST1I7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX29iamVjdF9sb29rdXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGdldCBvdXIgY29udGV4dCBmcm9tIG1mZAorICAgICAqIGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHggKmlmX2N0eCA9CisgICAgICogICAgICAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHggKilyZWdpbmZvLT5teV9yZWdfdm9pZDsKKyAgICAgKi8KKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0NSRUFUSU9OOworICAgIH0KKworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIHJjKTsKKyAgICBlbHNlCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd19wcmVwKHJvd3JlcV9jdHgpOworCisgICAgcmV0dXJuIFNOTVBfVkFMSURBVEVfRVJSKHJjKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vYmplY3RfbG9va3VwICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEdFVCBwcm9jZXNzaW5nCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIEBpbnRlcm5hbAorICogUmV0cmlldmUgdGhlIHZhbHVlIGZvciBhIHBhcnRpY3VsYXIgY29sdW1uCisgKi8KK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK19pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfY29sdW1uKGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6X21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfY29sdW1uIiwgImNhbGxlZCBmb3IgJWRcbiIsIGNvbHVtbikpOworCisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgc3dpdGNoIChjb2x1bW4pIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZSg0KS9VTlNJR05FRDMyL0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9SL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBERUZBVUxUUk9VVEVSTElGRVRJTUU6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXBEZWZhdWx0Um91dGVyTGlmZXRpbWVfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZSg1KS9JTlRFR0VSL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9BL3cvRS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRToKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9JTlRFR0VSOworICAgICAgICByYyA9IGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2VfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChJUERFRkFVTFRST1VURVJUQUJMRV9NSU5fQ09MIDw9IGNvbHVtbgorICAgICAgICAgICAgJiYgY29sdW1uIDw9IElQREVGQVVMVFJPVVRFUlRBQkxFX01BWF9DT0wpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX2dldF9jb2x1bW4iLCAiYXNzdW1lIGNvbHVtbiAlZCBpcyByZXNlcnZlZFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByYyA9IE1GRF9TS0lQOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIGNvbHVtbiAlZCBpbiBfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X2NvbHVtblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbHVtbik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X2NvbHVtbiAqLworCitpbnQKK19tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X3ZhbHVlcyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICB1X2NoYXIgICAgICAgICAqb2xkX3N0cmluZzsKKyAgICB2b2lkICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spICh2b2lkICopOworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX2dldF92YWx1ZXMiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNhdmUgb2xkIHBvaW50ZXIsIHNvIHdlIGNhbiBmcmVlIGl0IGlmIHJlcGxhY2VkCisgICAgICAgICAqLworICAgICAgICBvbGRfc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZzsKKyAgICAgICAgZGF0YUZyZWVIb29rID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+ZGF0YUZyZWVIb29rOworICAgICAgICBpZiAoTlVMTCA9PSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmOworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiA9CisgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmID09CisgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gIT0KKyAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuID0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBnZXQgY29sdW1uIGRhdGEKKyAgICAgICAgICovCisgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdHJpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmMgPSBfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X2NvbHVtbihyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIGlmIChNRkRfU0tJUCA9PSByYykgeworICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgPSBTTk1QX05PU1VDSElOU1RBTkNFOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChOVUxMID09IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJOVUxMIHZhcmJpbmQgZGF0YSBwb2ludGVyIVxuIik7CisgICAgICAgICAgICByYyA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICBpZiAocmMpCisgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlmIHRoZSBidWZmZXIgd2Fzbid0IHVzZWQgcHJldmlvdXNseSBmb3IgdGhlIG9sZCBkYXRhIChpLmUuIGl0CisgICAgICAgICAqIHdhcyBhbGxjb2F0ZWQgbWVtb3J5KSAgYW5kIHRoZSBnZXQgcm91dGluZSByZXBsYWNlZCB0aGUgcG9pbnRlciwKKyAgICAgICAgICogd2UgbmVlZCB0byBmcmVlIHRoZSBwcmV2aW91cyBwb2ludGVyLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKG9sZF9zdHJpbmcgJiYgKG9sZF9zdHJpbmcgIT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSAmJgorICAgICAgICAgICAgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcgIT0gb2xkX3N0cmluZykpIHsKKyAgICAgICAgICAgIGlmIChkYXRhRnJlZUhvb2spCisgICAgICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spIChvbGRfc3RyaW5nKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmVlKG9sZF9zdHJpbmcpOworICAgICAgICB9CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfdmFsdWVzICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogU0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBTRVQgUFJPQ0VTU0lORyBOT1QgQVBQTElDQUJMRSAocGVyIE1JQiBvciB1c2VyIHNldHRpbmcpCisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIERBVEEgQUNDRVNTCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgICAgIF9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcik7CisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyBpbnQKK19jYWNoZV9sb2FkKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqdm1hZ2ljKQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfY2FjaGVfbG9hZCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiaW52YWxpZCBjYWNoZSBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGVfY2FjaGVfbG9hZFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiogc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZvciBhbiBpbnZhbGlkIG9yIGV4cGlyZWQgY2FjaGUgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoMCA9PSBjYWNoZS0+dmFsaWQpIHx8ICgxID09IGNhY2hlLT5leHBpcmVkKSk7CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgcmV0dXJuIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9sb2FkKChuZXRzbm1wX2NvbnRhaW5lciAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS0+bWFnaWMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfbG9hZCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9jYWNoZV9mcmVlIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNhY2hlIGluIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NhY2hlX2ZyZWVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29udGFpbmVyID0gKG5ldHNubXBfY29udGFpbmVyICopIGNhY2hlLT5tYWdpYzsKKworICAgIF9jb250YWluZXJfZnJlZShjb250YWluZXIpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfZnJlZSAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NvbnRhaW5lcl9pdGVtX2ZyZWUoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb250ZXh0KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfY29udGFpbmVyX2l0ZW1fZnJlZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY29udGFpbmVyX2l0ZW1fZnJlZSAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfY29udGFpbmVyX2ZyZWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiaW52YWxpZCBjb250YWluZXIgaW4gaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2ZyZWVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBjYWxsIHVzZXIgY29kZQorICAgICAqLworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7CisKKyAgICAvKgorICAgICAqIGZyZWUgYWxsIGl0ZW1zLiBpbmVmZmljaWVudCwgYnV0IGVhc3kuCisgICAgICovCisgICAgQ09OVEFJTkVSX0NMRUFSKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9jb250YWluZXJfaXRlbV9mcmVlLAorICAgICAgICAgICAgICAgICAgICBOVUxMKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NvbnRhaW5lcl9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBpbml0aWFsaXplIHRoZSBjb250YWluZXIgd2l0aCBmdW5jdGlvbnMgb3Igd3JhcHBlcnMKKyAqLwordm9pZAorX2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0KGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6X2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBjYWNoZSBpbml0CisgICAgICovCisgICAgaWZfY3R4LT5jYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKDMwLCAgICAvKiB0aW1lb3V0IGluIHNlY29uZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlX2xvYWQsIF9jYWNoZV9mcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZF9zaXplKTsKKworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImVycm9yIGNyZWF0aW5nIGNhY2hlIGZvciBpcERlZmF1bHRSb3V0ZXJUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZl9jdHgtPmNhY2hlLT5mbGFncyA9IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVDsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0KCZpZl9jdHgtPmNvbnRhaW5lciwgaWZfY3R4LT5jYWNoZSk7CisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpCisgICAgICAgIGlmX2N0eC0+Y29udGFpbmVyID0KKyAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImlwRGVmYXVsdFJvdXRlclRhYmxlOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjb250YWluZXIgaW4gIgorICAgICAgICAgICAgICAgICAiaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKE5VTEwgIT0gaWZfY3R4LT5jYWNoZSkKKyAgICAgICAgaWZfY3R4LT5jYWNoZS0+bWFnaWMgPSAodm9pZCAqKSBpZl9jdHgtPmNvbnRhaW5lcjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzaHV0ZG93biB0aGUgY29udGFpbmVyIHdpdGggZnVuY3Rpb25zIG9yIHdyYXBwZXJzCisgKi8KK3ZvaWQKK19pcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6X2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsICJjYWxsZWRcbiIpKTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpZl9jdHgtPmNvbnRhaW5lcik7CisKKyAgICBfY29udGFpbmVyX2ZyZWUoaWZfY3R4LT5jb250YWluZXIpOworCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KKworCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpCit7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfT0lEX0xFTl07CisgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgc3RvcmFnZSBmb3IgT0lECisgICAgICovCisgICAgb2lkX2lkeC5vaWRzID0gb2lkX3RtcDsKKyAgICBvaWRfaWR4LmxlbiA9IHNpemVvZihvaWRfdG1wKSAvIHNpemVvZihvaWQpOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0CisgICAgICovCisgICAgcmMgPSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleF90b19vaWQoJm9pZF9pZHgsIG1pYl9pZHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByb3dyZXFfY3R4ID0KKyAgICAgICAgQ09OVEFJTkVSX0ZJTkQoaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LmNvbnRhaW5lciwgJm9pZF9pZHgpOworCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc4MDQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisvKiogQGluZ3JvdXAgaW50ZXJmYWNlOiBSb3V0aW5lcyB0byBpbnRlcmZhY2UgdG8gTmV0LVNOTVAKKyAqCisgKiBcd2FybmluZyBUaGlzIGNvZGUgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgY2FsbGVkIGRpcmVjdGx5LAorICogICAgICAgICAgb3IgdXNlZCB0byBpbnRlcnByZXQgZnVuY3Rpb25hbGl0eS4gSXQgaXMgc3ViamVjdCB0bworICogICAgICAgICAgY2hhbmdlIGF0IGFueSB0aW1lLgorICogCisgKiBAeworICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyNpZm5kZWYgSVBERUZBVUxUUk9VVEVSVEFCTEVfSU5URVJGQUNFX0gKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSVEFCTEVfSU5URVJGQUNFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyNpbmNsdWRlICJpcERlZmF1bHRSb3V0ZXJUYWJsZS5oIgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKiBQVUJMSUMgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZQorICAgICAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jdHgsIHVfbG9uZyBmbGFncyk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UKKyAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY3R4KTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAqaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAqaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uX3NldAorICAgICAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKTsKKworICAgIG5ldHNubXBfY29udGFpbmVyICppcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpOworICAgIGludCAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgKmlwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLCB2b2lkICopOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgKKyAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleF90b19vaWQobmV0c25tcF9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOworICAgIGludCAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CisKKyAgICAvKgorICAgICAqIGFjY2VzcyB0byBjZXJ0YWluIGludGVybmFscy4gdXNlIHdpdGggY2F1dGlvbiEKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbyAqdmMpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQREVGQVVMVFJPVVRFUlRBQkxFX0lOVEVSRkFDRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MTRlNzEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkcy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1vaWRzLm0yYyAxMjg1NSAyMDA1LTA5LTI3IDE1OjU2OjA4WiByc3RvcnkgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgSVBERUZBVUxUUk9VVEVSVEFCTEVfT0lEU19ICisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX09JRFNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworICAgIC8qCisgICAgICogY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgdGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUgCisgICAgICovCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX09JRCAgICAgICAgICAgICAgMSwzLDYsMSwyLDEsNCwzNworCisjZGVmaW5lIENPTFVNTl9JUERFRkFVTFRST1VURVJBRERSRVNTVFlQRSAgICAgICAgIDEKKworI2RlZmluZSBDT0xVTU5fSVBERUZBVUxUUk9VVEVSQUREUkVTUyAgICAgICAgIDIKKworI2RlZmluZSBDT0xVTU5fSVBERUZBVUxUUk9VVEVSSUZJTkRFWCAgICAgICAgIDMKKworI2RlZmluZSBDT0xVTU5fSVBERUZBVUxUUk9VVEVSTElGRVRJTUUgICAgICAgICA0CisKKyNkZWZpbmUgQ09MVU1OX0lQREVGQVVMVFJPVVRFUlBSRUZFUkVOQ0UgICAgICAgICA1CisKKworI2RlZmluZSBJUERFRkFVTFRST1VURVJUQUJMRV9NSU5fQ09MICAgQ09MVU1OX0lQREVGQVVMVFJPVVRFUkxJRkVUSU1FCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX01BWF9DT0wgICBDT0xVTU5fSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRQorCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBERUZBVUxUUk9VVEVSVEFCTEVfT0lEU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMWQ4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUuaApAQCAtMCwwICsxLDggQEAKKy8qCisgKiBtb2R1bGUgdG8gaW5jbHVkZSB0aGUgbW9kdWxlcworICovCisKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cykKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZSkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UpCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZDgwN2UKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuYwpAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qKiBccGFnZSBNRkQgaGVscGVyIGZvciBpcElmU3RhdHNUYWJsZQorICoKKyAqIFxzZWN0aW9uIGludHJvIEludHJvZHVjdGlvbgorICogSW50cm9kdWN0b3J5IHRleHQuCisgKgorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGUuaCIKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmg+CisKKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCIKKworY29uc3Qgb2lkICAgICAgIGlwSWZTdGF0c1RhYmxlX29pZFtdID0geyBJUElGU1RBVFNUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpcElmU3RhdHNUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoaXBJZlN0YXRzVGFibGVfb2lkKTsKKworaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uIGlwSWZTdGF0c1RhYmxlX3VzZXJfY29udGV4dDsKK3N0YXRpYyBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKmlwSWZTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wOworCit2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9pcElmU3RhdHNUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl90YWJsZV9pcElmU3RhdHNUYWJsZSh2b2lkKTsKKworCisvKioKKyAqIEluaXRpYWxpemVzIHRoZSBpcElmU3RhdHNUYWJsZSBtb2R1bGUKKyAqLwordm9pZAoraW5pdF9pcElmU3RhdHNUYWJsZSh2b2lkKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmluaXRfaXBJZlN0YXRzVGFibGUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAwOm86IFBlcmZvcm0gaXBJZlN0YXRzVGFibGUgb25lLXRpbWUgbW9kdWxlIGluaXRpYWxpemF0aW9uLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBoZXJlIHdlIGluaXRpYWxpemUgYWxsIHRoZSB0YWJsZXMgd2UncmUgcGxhbm5pbmcgb24gc3VwcG9ydGluZworICAgICAqLworICAgIGlmIChzaG91bGRfaW5pdCgiaXBJZlN0YXRzVGFibGUiKSkKKyAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9pcElmU3RhdHNUYWJsZSgpOworCisgICAgLyoKKyAgICAgKiBsYXN0IGNoYW5nZWQgc2hvdWxkIGJlIDAgYXQgc3RhcnR1cAorICAgICAqLworICAgIGlwSWZTdGF0c1RhYmxlX2xhc3RDaGFuZ2Vfc2V0KDApOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0X2lwSWZTdGF0c1RhYmxlICovCisKKy8qKgorICogU2h1dC1kb3duIHRoZSBpcElmU3RhdHNUYWJsZSBtb2R1bGUgKGFnZW50IGlzIGV4aXRpbmcpCisgKi8KK3ZvaWQKK3NodXRkb3duX2lwSWZTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgaWYgKHNob3VsZF9pbml0KCJpcElmU3RhdHNUYWJsZSIpKQorICAgICAgICBzaHV0ZG93bl90YWJsZV9pcElmU3RhdHNUYWJsZSgpOworCit9CisKKy8qKgorICogSW5pdGlhbGl6ZSB0aGUgdGFibGUgaXBJZlN0YXRzVGFibGUgCisgKiAgICAoRGVmaW5lIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCkKKyAqLwordm9pZAoraW5pdGlhbGl6ZV90YWJsZV9pcElmU3RhdHNUYWJsZSh2b2lkKQoreworICAgIHVfbG9uZyAgICAgICAgICBmbGFnczsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmluaXRpYWxpemVfdGFibGVfaXBJZlN0YXRzVGFibGUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDE6bzogUGVyZm9ybSBpcElmU3RhdHNUYWJsZSBvbmUtdGltZSB0YWJsZSBpbml0aWFsaXphdGlvbi4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogVE9ETzozMDI6bzogfC0+SW5pdGlhbGl6ZSBpcElmU3RhdHNUYWJsZSB1c2VyIGNvbnRleHQKKyAgICAgKiBpZiB5b3UnZCBsaWtlIHRvIHBhc3MgaW4gYSBwb2ludGVyIHRvIHNvbWUgZGF0YSBmb3IgdGhpcworICAgICAqIHRhYmxlLCBhbGxvY2F0ZSBvciBzZXQgaXQgdXAgaGVyZS4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIGEgbmV0c25tcF9kYXRhX2xpc3QgaXMgYSBzaW1wbGUgd2F5IHRvIHN0b3JlIHZvaWQgcG9pbnRlcnMuIEEgc2ltcGxlCisgICAgICogc3RyaW5nIHRva2VuIGlzIHVzZWQgdG8gYWRkLCBmaW5kIG9yIHJlbW92ZSBwb2ludGVycy4KKyAgICAgKi8KKyAgICBpcElmU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcAorCT0gbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0KCJpcElmU3RhdHNUYWJsZSIsIE5VTEwsIE5VTEwpOworCisgICAgLyoKKyAgICAgKiBObyBzdXBwb3J0IGZvciBhbnkgZmxhZ3MgeWV0LCBidXQgaW4gdGhlIGZ1dHVyZSB5b3Ugd291bGQKKyAgICAgKiBzZXQgYW55IGZsYWdzIGhlcmUuCisgICAgICovCisgICAgZmxhZ3MgPSAwOworCisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBpbml0aWFsaXphdGlvbiBjb2RlCisgICAgICovCisgICAgX2lwSWZTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlCisJKGlwSWZTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wLCBmbGFncyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWxpemVfdGFibGVfaXBJZlN0YXRzVGFibGUgKi8KKworLyoqCisgKiBTaHV0ZG93biB0aGUgdGFibGUgaXBJZlN0YXRzVGFibGUgCisgKi8KK3ZvaWQKK3NodXRkb3duX3RhYmxlX2lwSWZTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBzaHV0ZG93biBjb2RlCisgICAgICovCisgICAgX2lwSWZTdGF0c1RhYmxlX3NodXRkb3duX2ludGVyZmFjZShpcElmU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcCk7CisgICAgbmV0c25tcF9mcmVlX2FsbF9saXN0X2RhdGEoaXBJZlN0YXRzVGFibGVfdXNlcl9jb250ZXh0X3ApOworICAgIGlwSWZTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wID0gTlVMTDsKK30KKworLyoqCisgKiBleHRyYSBjb250ZXh0IGluaXRpYWxpemF0aW9uIChlZyBkZWZhdWx0IHZhbHVlcykKKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eCAgICA6IHJvdyByZXF1ZXN0IGNvbnRleHQKKyAqIEBwYXJhbSB1c2VyX2luaXRfY3R4IDogdm9pZCBwb2ludGVyIGZvciB1c2VyIChwYXJhbWV0ZXIgdG8gcm93cmVxX2N0eF9hbGxvY2F0ZSkKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICA6IG5vIGVycm9ycworICogQHJldHZhbCBNRkRfRVJST1IgICAgOiBlcnJvciAoY29udGV4dCBhbGxvY2F0ZSB3aWxsIGZhaWwpCisgKi8KK2ludAoraXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfaW5pdF9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMDpvOiB8LT4gUGVyZm9ybSBleHRyYSBpcElmU3RhdHNUYWJsZSByb3dyZXEgaW5pdGlhbGl6YXRpb24uIChlZyBERUZWQUxTKQorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQgKi8KKworLyoqCisgKiBleHRyYSBjb250ZXh0IGNsZWFudXAKKyAqCisgKi8KK3ZvaWQKK2lwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjExOm86IHwtPiBQZXJmb3JtIGV4dHJhIGlwSWZTdGF0c1RhYmxlIHJvd3JlcSBjbGVhbnVwLgorICAgICAqLworICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUocm93cmVxX2N0eC0+ZGF0YSk7CisgICAgcm93cmVxX2N0eC0+ZGF0YSA9IE5VTEw7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cCAqLworCisvKioKKyAqIHByZS1yZXF1ZXN0IGNhbGxiYWNrCisgKgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICAgICAgIDogb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiB1c2VyX2NvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3QiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTA6bzogUGVyZm9ybSBpcElmU3RhdHNUYWJsZSBwcmUtcmVxdWVzdCBhY3Rpb25zLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9wcmVfcmVxdWVzdCAqLworCisvKioKKyAqIHBvc3QtcmVxdWVzdCBjYWxsYmFjaworICoKKyAqIE5vdGU6CisgKiAgIE5ldyByb3dzIGhhdmUgYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBjb250YWluZXIsIGFuZAorICogICBkZWxldGVkIHJvd3MgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY29udGFpbmVyIGFuZAorICogICByZWxlYXNlZC4KKyAqCisgKiBAcGFyYW0gdXNlcl9jb250ZXh0CisgKiBAcGFyYW0gcmMgOiBNRkRfU1VDQ0VTUyBpZiBhbGwgcmVxdWVzdHMgc3VjY2VlZGVkCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogb3RoZXIgZXJyb3IgKGlnbm9yZWQpCisgKi8KK2ludAoraXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0KGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmMpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86NTExOm86IFBlcmZvcm0gaXBJZlN0YXRzVGFibGUgcG9zdC1yZXF1ZXN0IGFjdGlvbnMuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCAqLworCisKKy8qKiBAeyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGE5NTZmCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgKQEAgLTAsMCArMSwyMDAgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgSVBJRlNUQVRTVEFCTEVfSAorI2RlZmluZSBJUElGU1RBVFNUQUJMRV9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisvKiogQGFkZHRvZ3JvdXAgbWlzYyBtaXNjOiBNaXNjZWxsYW5lb3VzIHJvdXRpbmVzCisgKgorICogQHsKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvYXNuMS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oPgorCisgICAgLyoKKyAgICAgKiBvdGhlciByZXF1aXJlZCBtb2R1bGUgY29tcG9uZW50cyAKKyAgICAgKi8KKyAgICAvKiAqSU5ERU5ULU9GRiogICovCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0KQorICAgIC8qICpJTkRFTlQtT04qICAqLworCisgICAgLyoKKyAgICAgKiBPSUQgYW5kIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIGlwSWZTdGF0c1RhYmxlIAorICAgICAqLworI2luY2x1ZGUgImlwSWZTdGF0c1RhYmxlX29pZHMuaCIKKworICAgIC8qCisgICAgICogZW51bSBkZWZpbmlvbnMgCisgICAgICovCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGVfZW51bXMuaCIKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICAgICAqLworICAgIHZvaWQgICAgICAgICAgICBpbml0X2lwSWZTdGF0c1RhYmxlKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9pcElmU3RhdHNUYWJsZSh2b2lkKTsKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwSWZTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlIGlzIHN1YmlkIDMgb2YgaXBUcmFmZmljU3RhdHMuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMywgbGVuZ3RoOiA5CisgICAgICovCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogV2hlbiB5b3UgcmVnaXN0ZXIgeW91ciBtaWIsIHlvdSBnZXQgdG8gcHJvdmlkZSBhIGdlbmVyaWMKKyAgICAgKiBwb2ludGVyIHRoYXQgd2lsbCBiZSBwYXNzZWQgYmFjayB0byB5b3UgZm9yIG1vc3Qgb2YgdGhlCisgICAgICogZnVuY3Rpb25zIGNhbGxzLgorICAgICAqCisgICAgICogVE9ETzoxMDA6cjogUmV2aWV3IGFsbCBjb250ZXh0IHN0cnVjdHVyZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIFRPRE86MTAxOm86IHwtPiBSZXZpZXcgaXBJZlN0YXRzVGFibGUgcmVnaXN0cmF0aW9uIGNvbnRleHQuCisgICAgICovCisgICAgdHlwZWRlZiBuZXRzbm1wX2RhdGFfbGlzdCBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb247CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogVE9ETzoxMTA6cjogfC0+IFJldmlldyBpcElmU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQgc3RydWN0dXJlLgorICAgICAqIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBkYXRhIGZvciBpcElmU3RhdHNUYWJsZS4KKyAgICAgKi8KKyAgICB0eXBlZGVmIG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgaXBJZlN0YXRzVGFibGVfZGF0YTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMDpyOiB8LT4gUmV2aWV3IGlwSWZTdGF0c1RhYmxlIG1pYiBpbmRleC4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaW5kZXggZm9yIGlwSWZTdGF0c1RhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleF9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJUFZlcnNpb24oMSkvSW5ldFZlcnNpb24vQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgaXBJZlN0YXRzSVBWZXJzaW9uOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0lmSW5kZXgoMikvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAgICAgKi8KKyAgICAgICAgbG9uZyAgICAgICAgICAgIGlwSWZTdGF0c0lmSW5kZXg7CisKKworICAgIH0gaXBJZlN0YXRzVGFibGVfbWliX2luZGV4OworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMTpyOiB8ICAgfC0+IFJldmlldyBpcElmU3RhdHNUYWJsZSBtYXggaW5kZXggbGVuZ3RoLgorICAgICAqIElmIHlvdSBLTk9XIHRoYXQgeW91ciBpbmRleGVzIHdpbGwgbmV2ZXIgZXhjZWVkIGEgY2VydGFpbgorICAgICAqIGxlbmd0aCwgdXBkYXRlIHRoaXMgbWFjcm8gdG8gdGhhdCBsZW5ndGguCisgICAgICovCisjZGVmaW5lIE1BWF9pcElmU3RhdHNUYWJsZV9JRFhfTEVOICAgICAyCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTMwOm86IHwtPiBSZXZpZXcgaXBJZlN0YXRzVGFibGUgUm93IHJlcXVlc3QgKHJvd3JlcSkgY29udGV4dC4KKyAgICAgKiBXaGVuIHlvdXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIHlvdSB3aWxsIGJlIHBhc3NlZCBhCisgICAgICogaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCBwb2ludGVyLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfcyB7CisKKyAgICAvKiogdGhpcyBtdXN0IGJlIGZpcnN0IGZvciBjb250YWluZXIgY29tcGFyZSB0byB3b3JrICovCisgICAgICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworICAgICAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfaXBJZlN0YXRzVGFibGVfSURYX0xFTl07CisKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfbWliX2luZGV4IHRibF9pZHg7CisKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfZGF0YSAqZGF0YTsKKworICAgICAgICAvKgorICAgICAgICAgKiBmbGFncyBwZXIgcm93LiBDdXJyZW50bHksIHRoZSBmaXJzdCAobG93ZXIpIDggYml0cyBhcmUgcmVzZXJ2ZWQKKyAgICAgICAgICogZm9yIHRoZSB1c2VyLiBTZWUgbWZkLmggZm9yIG90aGVyIGZsYWdzLgorICAgICAgICAgKi8KKyAgICAgICAgdV9pbnQgICAgICAgICAgIHJvd3JlcV9mbGFnczsKKworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjEzMTpvOiB8ICAgfC0+IEFkZCB1c2VmdWwgZGF0YSB0byBpcElmU3RhdHNUYWJsZSByb3dyZXEgY29udGV4dC4KKyAgICAgICAgICovCisgICAgICAgIGNoYXIgICAgICAgICAgICBrbm93bl9taXNzaW5nOworICAgICAgICB1aW50MzJfdCAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWU7CisgICAgICAgIHVpbnQzMl90ICAgICAgICBpcElmU3RhdHNSZWZyZXNoUmF0ZTsKKworICAgICAgICAvKgorICAgICAgICAgKiBzdG9yYWdlIGZvciBmdXR1cmUgZXhwYW5zaW9uCisgICAgICAgICAqLworICAgICAgICBuZXRzbm1wX2RhdGFfbGlzdCAqaXBJZlN0YXRzVGFibGVfZGF0YV9saXN0OworCisgICAgfSBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4OworCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXBJZlN0YXRzVGFibGVfcmVmX3Jvd3JlcV9jdHhfcyB7CisgICAgICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgfSBpcElmU3RhdHNUYWJsZV9yZWZfcm93cmVxX2N0eDsKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3QoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdXNlcl9jb250ZXh0KTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0KGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB1c2VyX2NvbnRleHQsIGludCByYyk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwgdm9pZCAqdXNlcl9pbml0X2N0eCk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaXBJZlN0YXRzVGFibGVfZGF0YSAqaXBJZlN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YSh2b2lkKTsKKyAgICB2b2lkICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9kYXRhKGlwSWZTdGF0c1RhYmxlX2RhdGEgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSk7CisKKworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgKmlwSWZTdGF0c1RhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcElmU3RhdHNUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpOworCisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIGlwSWZTdGF0c1RhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpcElmU3RhdHNUYWJsZV9vaWRfc2l6ZTsKKworCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCIKKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZV9kYXRhX2dldC5oIgorCisgICAgLyoKKyAgICAgKiBEVU1NWSBtYXJrZXJzLCBpZ25vcmUKKyAgICAgKgorICAgICAqIFRPRE86MDk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjE5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoyOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86Mzk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjQ5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQSUZTVEFUU1RBQkxFX0ggKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGE2YWY4Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTAsMCArMSw0MDggQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJCAKKyAqCisgKiAkSWQ6JAorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGUuaCIKKworCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCIKKworc3RhdGljIGludCAgICAgIGlwaXNfY2FjaGVfcmVmcmVzaCA9IElQSUZTVEFUU1RBQkxFX0NBQ0hFX1RJTUVPVVQ7CisKKy8qKiBAaW5ncm91cCBpbnRlcmZhY2UKKyAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQorICoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSB1c2VkIHRvIGxvY2F0ZSB0aGUgZGF0YSB1c2VkIHRvIHNhdGlzZnkKKyAqIHJlcXVlc3RzLgorICogCisgKiBAeworICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBJZlN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlIGlzIHN1YmlkIDMgb2YgaXBUcmFmZmljU3RhdHMuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMsIGxlbmd0aDogOQorICovCisKKy8qKgorICogaW5pdGlhbGl6YXRpb24gZm9yIGlwSWZTdGF0c1RhYmxlIGRhdGEgYWNjZXNzCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHN0YXJ0dXAgdG8gYWxsb3cgeW91IHRvCisgKiBhbGxvY2F0ZSBhbnkgcmVzb3VyY2VzIHlvdSBuZWVkIGZvciB0aGUgZGF0YSB0YWJsZS4KKyAqCisgKiBAcGFyYW0gaXBJZlN0YXRzVGFibGVfcmVnCisgKiAgICAgICAgUG9pbnRlciB0byBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiB1bnJlY292ZXJhYmxlIGVycm9yLgorICovCitpbnQKK2lwSWZTdGF0c1RhYmxlX2luaXRfZGF0YShpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiBpcElmU3RhdHNUYWJsZV9yZWcpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfaW5pdF9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAzOm86IEluaXRpYWxpemUgaXBJZlN0YXRzVGFibGUgZGF0YS4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19pbml0KCk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2luaXRfZGF0YSAqLworCisvKioKKyAqIGNvbnRhaW5lciBvdmVydmlldworICoKKyAqLworCisvKioKKyAqIGNvbnRhaW5lciBpbml0aWFsaXphdGlvbgorICoKKyAqIEBwYXJhbSBjb250YWluZXJfcHRyX3B0ciBBIHBvaW50ZXIgdG8gYSBjb250YWluZXIgcG9pbnRlci4gSWYgeW91CisgKiAgICAgICAgY3JlYXRlIGEgY3VzdG9tIGNvbnRhaW5lciwgdXNlIHRoaXMgcGFyYW1ldGVyIHRvIHJldHVybiBpdAorICogICAgICAgIHRvIHRoZSBNRkQgaGVscGVyLiBJZiBzZXQgdG8gTlVMTCwgdGhlIE1GRCBoZWxwZXIgd2lsbAorICogICAgICAgIGFsbG9jYXRlIGEgY29udGFpbmVyIGZvciB5b3UuCisgKiBAcGFyYW0gIGNhY2hlIEEgcG9pbnRlciB0byBhIGNhY2hlIHN0cnVjdHVyZS4gWW91IGNhbiBzZXQgdGhlIHRpbWVvdXQKKyAqICAgICAgICAgYW5kIG90aGVyIGNhY2hlIGZsYWdzIHVzaW5nIHRoaXMgcG9pbnRlci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc3RhcnR1cCB0byBhbGxvdyB5b3UgdG8gY3VzdG9taXplIGNlcnRhaW4KKyAqICBhc3BlY3RzIG9mIHRoZSBhY2Nlc3MgbWV0aG9kLiBGb3IgdGhlIG1vc3QgcGFydCwgaXQgaXMgZm9yIGFkdmFuY2VkCisgKiAgdXNlcnMuIFRoZSBkZWZhdWx0IGNvZGUgc2hvdWxkIHN1ZmZpY2UgZm9yIG1vc3QgY2FzZXMuIElmIG5vIGN1c3RvbQorICogIGNvbnRhaW5lciBpcyBhbGxvY2F0ZWQsIHRoZSBNRkQgY29kZSB3aWxsIGNyZWF0ZSBvbmUgZm9yIHlvdXIuCisgKgorICogIFRoaXMgaXMgYWxzbyB0aGUgcGxhY2UgdG8gc2V0IHVwIGNhY2hlIGJlaGF2aW9yLiBUaGUgZGVmYXVsdCwgdG8KKyAqICBzaW1wbHkgc2V0IHRoZSBjYWNoZSB0aW1lb3V0LCB3aWxsIHdvcmsgd2VsbCB3aXRoIHRoZSBkZWZhdWx0CisgKiAgY29udGFpbmVyLiBJZiB5b3UgYXJlIHVzaW5nIGEgY3VzdG9tIGNvbnRhaW5lciwgeW91IG1heSB3YW50IHRvCisgKiAgbG9vayBhdCB0aGUgY2FjaGUgaGVscGVyIGRvY3VtZW50YXRpb24gdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkKKyAqICBmbGFncyB5b3Ugd2FudCB0byBzZXQuCisgKgorICogQHJlbWFyaworICogIFRoaXMgd291bGQgYWxzbyBiZSBhIGdvb2QgcGxhY2UgdG8gZG8gYW55IGluaXRpYWxpemF0aW9uIG5lZWRlZAorICogIGZvciB5b3UgZGF0YSBzb3VyY2UuIEZvciBleGFtcGxlLCBvcGVuaW5nIGEgY29ubmVjdGlvbiB0byBhbm90aGVyCisgKiAgcHJvY2VzcyB0aGF0IHdpbGwgc3VwcGx5IHRoZSBkYXRhLCBvcGVuaW5nIGEgZGF0YWJhc2UsIGV0Yy4KKyAqLwordm9pZAoraXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKiogY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhY2hlICogY2FjaGUpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2luaXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcl9wdHJfcHRyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgY29udGFpbmVyIHBhcmFtIHRvIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogRm9yIGFkdmFuY2VkIHVzZXJzLCB5b3UgY2FuIHVzZSBhIGN1c3RvbSBjb250YWluZXIuIElmIHlvdQorICAgICAqIGRvIG5vdCBjcmVhdGUgb25lLCBvbmUgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UuCisgICAgICovCisgICAgLyoKKyAgICAgKiBXZSBjcmVhdGUgYSBjdXN0b20gY29udGFpbmVyIGhlcmUgc28gd2UgY2FuIHByZS1sb2FkIGl0LCB3aGljaAorICAgICAqIHdpbGwgcmVzdWx0IGluIGFsbCBuZXcgZW50cmllcyB3aXRoIGxhc3QgY2hhbmdlZCB2YWx1ZXMuIHdlIG5lZWQKKyAgICAgKiB0byBjbGVhciB0aG9zZS4uLiAgV2UgYWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSBpZkluZGV4ZXMgaGF2ZSBiZWVuCisgICAgICogYXNzaWduZWQuLi4KKyAgICAgKi8KKyAgICAqY29udGFpbmVyX3B0cl9wdHIgPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJpcElmU3RhdHNUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAoTlVMTCAhPSAqY29udGFpbmVyX3B0cl9wdHIpCisgICAgICAgIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKCpjb250YWluZXJfcHRyX3B0cik7CisgICAgaWYgKE5VTEwgPT0gY2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjYWNoZSBwYXJhbSB0byBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRPRE86MzQ1OkE6IFNldCB1cCBpcElmU3RhdHNUYWJsZSBjYWNoZSBwcm9wZXJ0aWVzLgorICAgICAqCisgICAgICogQWxzbyBmb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gc2V0IHBhcmFtZXRlcnMgZm9yIHRoZQorICAgICAqIGNhY2hlLiBEbyBub3QgY2hhbmdlIHRoZSBtYWdpYyBwb2ludGVyLCBhcyBpdCBpcyB1c2VkCisgICAgICogYnkgdGhlIE1GRCBoZWxwZXIuIFRvIGNvbXBsZXRlbHkgZGlzYWJsZSBjYWNoaW5nLCBzZXQKKyAgICAgKiBjYWNoZS0+ZW5hYmxlZCB0byAwLgorICAgICAqLworICAgIGNhY2hlLT50aW1lb3V0ID0gSVBJRlNUQVRTVEFCTEVfQ0FDSEVfVElNRU9VVDsgICAgICAvKiBzZWNvbmRzICovCisKKyAgICBjYWNoZS0+ZmxhZ3MgfD0KKyAgICAgICAgKE5FVFNOTVBfQ0FDSEVfRE9OVF9BVVRPX1JFTEVBU0UgfCBORVRTTk1QX0NBQ0hFX0RPTlRfRlJFRV9FWFBJUkVECisgICAgICAgICB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FEIHwKKyAgICAgICAgIE5FVFNOTVBfQ0FDSEVfQVVUT19SRUxPQUQpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCAqLworCisvKioKKyAqIGNoZWNrIGVudHJ5IGZvciB1cGRhdGUKKyAqLworc3RhdGljIHZvaWQKK19jaGVja19mb3JfdXBkYXRlcyhpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqc3RhdHMpCit7CisgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqaWZzdGF0c19lbnRyeTsKKworICAgIC8qCisgICAgICogY2hlY2sgZm9yIG1hdGNoaW5nIGVudHJ5LiB3b3JrcyBiZWNhdXNlIGluZGV4ZXMgYXJlIHRoZSBzYW1lLgorICAgICAqLworICAgIGlmc3RhdHNfZW50cnkgPSBDT05UQUlORVJfRklORChzdGF0cywgcm93cmVxX2N0eC0+ZGF0YSk7CisgICAgaWYgKE5VTEwgPT0gaWZzdGF0c19lbnRyeSkgeworICAgICAgICBERUJVR01TR1RMKCgiaXBJZlN0YXRzVGFibGU6YWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgInVwZGF0aW5nIG1pc3NpbmcgZW50cnlcbiIpKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBtYXJrIHJvdyBhcyBtaXNzaW5nLCBzbyB3ZSBjYW4gc2V0IGRpc2NvbnRpbnVpdHkKKyAgICAgICAgICogd2hlbiBpdCBjb21lcyBiYWNrLgorICAgICAgICAgKgorICAgICAgICAgKiB3aGF0IGVsc2Ugc2hvdWxkIHdlIGRvPyBzZXQgcmVmcmVzaCB0byAwPyB0aGF0J3Mgbm90IHF1aXRlIHJpZ2h0Li4uCisgICAgICAgICAqLworICAgICAgICByb3dyZXFfY3R4LT5rbm93bl9taXNzaW5nID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICBERUJVR01TR1RMKCgiaXBJZlN0YXRzVGFibGU6YWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgInVwZGF0aW5nIGV4aXN0aW5nIGVudHJ5XG4iKSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQ2hlY2sgZm9yIGNoYW5nZXMgJiB1cGRhdGUKKyAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X3VwZGF0ZShyb3dyZXFfY3R4LT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnN0YXRzX2VudHJ5KTsKKworICAgICAgICAvKgorICAgICAgICAgKiBzZXQgZGlzY29udGludWl0eSBpZiBwcmV2aW91c2x5IG1pc3NpbmcuCisgICAgICAgICAqLworICAgICAgICBpZiAoMSA9PSByb3dyZXFfY3R4LT5rbm93bl9taXNzaW5nKSB7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5rbm93bl9taXNzaW5nID0gMDsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKKyAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2xhc3RDaGFuZ2Vfc2V0KG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIHJlbW92ZSBlbnRyeSBmcm9tIGNvbnRhaW5lcgorICAgICAgICAgKi8KKyAgICAgICAgQ09OVEFJTkVSX1JFTU9WRShzdGF0cywgaWZzdGF0c19lbnRyeSk7CisgICAgICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUoaWZzdGF0c19lbnRyeSk7CisgICAgfQorfQorCisvKioKKyAqIGFkZCBuZXcgZW50cnkKKyAqLworc3RhdGljIHZvaWQKK19hZGRfbmV3KG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgKmlmc3RhdHNfZW50cnksCisgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQoreworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisKKyAgICBERUJVR01TR1RMKCgiaXBJZlN0YXRzVGFibGU6YWNjZXNzIiwgImNyZWF0aW5nIG5ldyBlbnRyeVxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpZnN0YXRzX2VudHJ5KTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisKKyAgICAvKgorICAgICAqIGFsbG9jYXRlIGFuIHJvdyBjb250ZXh0IGFuZCBzZXQgdGhlIGluZGV4KGVzKQorICAgICAqLworICAgIHJvd3JlcV9jdHggPQorICAgICAgICBpcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KGlmc3RhdHNfZW50cnksIE5VTEwpOworICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KQorICAgICAgICAmJiAoTUZEX1NVQ0NFU1MgPT0KKyAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnN0YXRzX2VudHJ5LT5pbmRleFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmc3RhdHNfZW50cnktPmluZGV4WzFdKSkpIHsKKyAgICAgICAgcm93cmVxX2N0eC0+aXBJZlN0YXRzUmVmcmVzaFJhdGUgPSBpcGlzX2NhY2hlX3JlZnJlc2ggKiAxMDAwOyAgIC8qIG1pbGxpLXNlY29uZHMgKi8KKyAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOworICAgICAgICBpcElmU3RhdHNUYWJsZV9sYXN0Q2hhbmdlX3NldChuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKE5VTEwgIT0gcm93cmVxX2N0eCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGUgY2FjaGUuXG4iKTsKKyAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQgd2hpbGUgbG9hZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGUgY2FjaGUuXG4iKTsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUoaWZzdGF0c19lbnRyeSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qKgorICogY29udGFpbmVyIHNodXRkb3duCisgKgorICogQHBhcmFtIGNvbnRhaW5lcl9wdHIgQSBwb2ludGVyIHRvIHRoZSBjb250YWluZXIuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHNodXRkb3duIHRvIGFsbG93IHlvdSB0byBjdXN0b21pemUgY2VydGFpbgorICogIGFzcGVjdHMgb2YgdGhlIGFjY2VzcyBtZXRob2QuIEZvciB0aGUgbW9zdCBwYXJ0LCBpdCBpcyBmb3IgYWR2YW5jZWQKKyAqICB1c2Vycy4gVGhlIGRlZmF1bHQgY29kZSBzaG91bGQgc3VmZmljZSBmb3IgbW9zdCBjYXNlcy4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKCkuCisgKgorICogQHJlbWFyaworICogIFRoaXMgd291bGQgYWxzbyBiZSBhIGdvb2QgcGxhY2UgdG8gZG8gYW55IGNsZWFudXAgbmVlZGVkCisgKiAgZm9yIHlvdSBkYXRhIHNvdXJjZS4gRm9yIGV4YW1wbGUsIGNsb3NpbmcgYSBjb25uZWN0aW9uIHRvIGFub3RoZXIKKyAqICBwcm9jZXNzIHRoYXQgc3VwcGxpZWQgdGhlIGRhdGEsIGNsb3NpbmcgYSBkYXRhYmFzZSwgZXRjLgorICovCit2b2lkCitpcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24obmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXJfcHRyKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIHBhcmFtcyB0byBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd25cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisvKioKKyAqIGxvYWQgaW5pdGlhbCBkYXRhCisgKgorICogVE9ETzozNTA6TTogSW1wbGVtZW50IGlwSWZTdGF0c1RhYmxlIGRhdGEgbG9hZAorICogVGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gYmUgY2FsbGVkIGJ5IHRoZSBjYWNoZSBoZWxwZXIgdG8gbG9hZAorICogdGhlIGNvbnRhaW5lciBhZ2FpbiAoYWZ0ZXIgdGhlIGNvbnRhaW5lciBmcmVlIGZ1bmN0aW9uIGhhcyBiZWVuCisgKiBjYWxsZWQgdG8gZnJlZSB0aGUgcHJldmlvdXMgY29udGVudHMpLgorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHRvIHdoaWNoIGl0ZW1zIHNob3VsZCBiZSBpbnNlcnRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFIDogQ2FuJ3QgYWNjZXNzIGRhdGEgc291cmNlCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2FkIHRoZSBpbmRleChlcykgKGFuZCBkYXRhLCBvcHRpb25hbGx5KQorICogIGZvciB0aGUgZXZlcnkgcm93IGluIHRoZSBkYXRhIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgV2hpbGUgbG9hZGluZyB0aGUgZGF0YSwgdGhlIG9ubHkgaW1wb3J0YW50IHRoaW5nIGlzIHRoZSBpbmRleGVzLgorICogIElmIGFjY2VzcyB0byB5b3VyIGRhdGEgaXMgY2hlYXAvZmFzdCAoZS5nLiB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gYQorICogIHN0cnVjdHVyZSBpbiBtZW1vcnkpLCBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIHVwZGF0ZSB0aGUgZGF0YSBoZXJlLgorICogIElmLCBob3dldmVyLCB0aGUgYWNjZXNzaW5nIHRoZSBkYXRhIGludm92bGVzIG1vcmUgd29yayAoZS5nLiBwYXJzaW5nCisgKiAgc29tZSBvdGhlciBleGlzdGluZyBkYXRhLCBvciBwZWZvcm1pbmcgY2FsY3VsYXRpb25zIHRvIGRlcml2ZSB0aGUgZGF0YSksCisgKiAgdGhlbiB5b3UgY2FuIGxpbWl0IHlvdXJzZWxmIHRvIHNldHRpbmcgdGhlIGluZGV4ZXMgYW5kIHNhdmluZyBhbnkKKyAqICBpbmZvcm1hdGlvbiB5b3Ugd2lsbCBuZWVkIGxhdGVyLiBUaGVuIHVzZSB0aGUgc2F2ZWQgaW5mb3JtYXRpb24gaW4KKyAqICBpcElmU3RhdHNUYWJsZV9yb3dfcHJlcCgpIGZvciBwb3B1bGF0aW5nIGRhdGEuCisgKgorICogQG5vdGUKKyAqICBJZiB5b3UgbmVlZCBjb25zaXN0ZW5jeSBiZXR3ZWVuIHJvd3MgKGxpa2UgeW91IHdhbnQgc3RhdGlzdGljcworICogIGZvciBlYWNoIHJvdyB0byBiZSBmcm9tIHRoZSBzYW1lIHRpbWUgZnJhbWUpLCB5b3Ugc2hvdWxkIHNldCBhbGwKKyAqICBkYXRhIGhlcmUuCisgKgorICovCitpbnQKK2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpzdGF0czsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisKKyAgICBzdGF0cyA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2NvbnRhaW5lcl9sb2FkKE5VTEwsIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfSUZUQUJMRSk7CisgICAgaWYgKE5VTEwgPT0gc3RhdHMpCisgICAgICAgIHJldHVybiBNRkRfUkVTT1VSQ0VfVU5BVkFJTEFCTEU7ICAgICAgICAvKiBtc2cgYWxyZWFkeSBsb2dnZWQgKi8KKworICAgIC8qCisgICAgICogVE9ETzozNTE6TTogfC0+IExvYWQvdXBkYXRlIGRhdGEgaW4gdGhlIGlwSWZTdGF0c1RhYmxlIGNvbnRhaW5lci4KKyAgICAgKiBsb29wIG92ZXIgeW91ciBpcElmU3RhdHNUYWJsZSBkYXRhLCBhbGxvY2F0ZSBhIHJvd3JlcSBjb250ZXh0LAorICAgICAqIHNldCB0aGUgaW5kZXgoZXMpIFthbmQgZGF0YSwgb3B0aW9uYWxseV0gYW5kIGluc2VydCBpbnRvCisgICAgICogdGhlIGNvbnRhaW5lci4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogd2UganVzdCBnb3QgYSBmcmVzaCBjb3B5IG9mIGRhdGEuIGNvbXBhcmUgaXQgdG8KKyAgICAgKiB3aGF0IHdlJ3ZlIGFscmVhZHkgZ290LCBhbmQgbWFrZSBhbnkgYWRqdXN0ZW1lbnRzLi4uCisgICAgICovCisgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGNvbnRhaW5lciwgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopCisgICAgICAgICAgICAgICAgICAgICAgIF9jaGVja19mb3JfdXBkYXRlcywgc3RhdHMpOworCisgICAgLyoKKyAgICAgKiBub3cgYWRkIGFueSBuZXcgZW50cmllcworICAgICAqLworICAgIENPTlRBSU5FUl9GT1JfRUFDSChzdGF0cywgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopCisgICAgICAgICAgICAgICAgICAgICAgIF9hZGRfbmV3LCBjb250YWluZXIpOworCisKKyAgICAvKgorICAgICAgKiBmcmVlIHRoZSBjb250YWluZXIuIHdlJ3ZlIGVpdGhlciBjbGFpbWVkIGVhY2ggaWZlbnRyeSwgb3IgcmVsZWFzZWQgaXQsCisgICAgICogc28gdGhlIGRhbCBmdW5jdGlvbiBkb2Vzbid0IG5lZWQgdG8gY2xlYXIgdGhlIGNvbnRhaW5lci4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19jb250YWluZXJfZnJlZShzdGF0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0ZSRUVfRE9OVF9DTEVBUik7CisKKyAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkIiwKKyAgICAgICAgICAgICAgICIlbHUgcmVjb3Jkc1xuIiwgKHVuc2lnbmVkIGxvbmcpQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZCAqLworCisvKioKKyAqIGNvbnRhaW5lciBjbGVhbiB1cAorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHdpdGggYWxsIGN1cnJlbnQgaXRlbXMKKyAqCisgKiAgVGhpcyBvcHRpb25hbCBjYWxsYmFjayBpcyBjYWxsZWQgcHJpb3IgdG8gYWxsCisgKiAgaXRlbSdzIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgY29udGFpbmVyLiBJZiB5b3UKKyAqICBuZWVkIHRvIGRvIGFueSBwcm9jZXNzaW5nIGJlZm9yZSB0aGF0LCBkbyBpdCBoZXJlLgorICoKKyAqIEBub3RlCisgKiAgVGhlIE1GRCBoZWxwZXIgd2lsbCB0YWtlIGNhcmUgb2YgcmVsZWFzaW5nIGFsbCB0aGUgcm93IGNvbnRleHRzLgorICoKKyAqLwordm9pZAoraXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozODA6TTogRnJlZSBpcElmU3RhdHNUYWJsZSBjb250YWluZXIgZGF0YS4KKyAgICAgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBwcmVwYXJlIHJvdyBmb3IgcHJvY2Vzc2luZy4KKyAqCisgKiAgV2hlbiB0aGUgYWdlbnQgaGFzIGxvY2F0ZWQgdGhlIHJvdyBmb3IgYSByZXF1ZXN0LCB0aGlzIGZ1bmN0aW9uIGlzCisgKiAgY2FsbGVkIHRvIHByZXBhcmUgdGhlIHJvdyBmb3IgcHJvY2Vzc2luZy4gSWYgeW91IGZ1bGx5IHBvcHVsYXRlZAorICogIHRoZSBkYXRhIGNvbnRleHQgZHVyaW5nIHRoZSBpbmRleCBzZXR1cCBwaGFzZSwgeW91IG1heSBub3QgbmVlZCB0bworICogIGRvIGFueXRoaW5nLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4IHBvaW50ZXIgdG8gYSBjb250ZXh0LgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKi8KK2ludAoraXBJZlN0YXRzVGFibGVfcm93X3ByZXAoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfcm93X3ByZXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzkwOm86IFByZXBhcmUgcm93IGZvciByZXF1ZXN0LgorICAgICAqIElmIHBvcHVsYXRpbmcgcm93IGRhdGEgd2FzIGRlbGF5ZWQsIHRoaXMgaXMgdGhlIHBsYWNlIHRvCisgICAgICogZmlsbCBpbiB0aGUgcm93IGZvciB0aGlzIHJlcXVlc3QuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3Jvd19wcmVwICovCisKKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWY3NjgyCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBJUElGU1RBVFNUQUJMRV9EQVRBX0FDQ0VTU19ICisjZGVmaW5lIElQSUZTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwSWZTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlIGlzIHN1YmlkIDMgb2YgaXBUcmFmZmljU3RhdHMuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMywgbGVuZ3RoOiA5CisgICAgICovCisKKworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9pbml0X2RhdGEoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX3JlZyk7CisKKworICAgIC8qCisgICAgICogVE9ETzoxODA6bzogUmV2aWV3IGlwSWZTdGF0c1RhYmxlIGNhY2hlIHRpbWVvdXQuCisgICAgICogVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUgY2FjaGUgdGltZXMgb3V0CisgICAgICovCisjZGVmaW5lIElQSUZTVEFUU1RBQkxFX0NBQ0hFX1RJTUVPVVQgICA2MAorCisgICAgdm9pZCAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0KG5ldHNubXBfY29udGFpbmVyICoqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhY2hlICogY2FjaGUpOworICAgIHZvaWQgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24obmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cik7CisKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgIHZvaWQgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfY2FjaGVfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICB2b2lkICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfY2FjaGVfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9yb3dfcHJlcChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQSUZTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2dldC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2NzNkYwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2dldC5jCkBAIC0wLDAgKzEsMzAxNSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwODggJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZS5oIgorCisKKy8qKiBAZGVmZ3JvdXAgZGF0YV9nZXQgZGF0YV9nZXQ6IFJvdXRpbmVzIHRvIGdldCBkYXRhCisgKgorICogVE9ETzoyMzA6TTogSW1wbGVtZW50IGlwSWZTdGF0c1RhYmxlIGdldCByb3V0aW5lcy4KKyAqIFRPRE86MjQwOk06IEltcGxlbWVudCBpcElmU3RhdHNUYWJsZSBtYXBwaW5nIHJvdXRpbmVzIChpZiBhbnkpLgorICoKKyAqIFRoZXNlIHJvdXRpbmUgYXJlIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzLiBUaGUKKyAqIHJvdyBjb250ZXh0IGlzIHBhc3NlZCwgYWxvbmcgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSB3aGVyZSB0aGUKKyAqIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQuCisgKgorICogQHsKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwSWZTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogSVAtTUlCOjppcElmU3RhdHNUYWJsZSBpcyBzdWJpZCAzIG9mIGlwVHJhZmZpY1N0YXRzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLCBsZW5ndGg6IDkKKyAqLworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAqIFRPRE86MjAwOnI6IEltcGxlbWVudCBpcElmU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQgZnVuY3Rpb25zLgorICovCisvKgorICogaXBJZlN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YQorICoKKyAqIFB1cnBvc2U6IGNyZWF0ZSBuZXcgaXBJZlN0YXRzVGFibGVfZGF0YS4KKyAqLworaXBJZlN0YXRzVGFibGVfZGF0YSAqCitpcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBUT0RPOjIwMTpyOiB8LT4gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgaXBJZlN0YXRzVGFibGUgZGF0YSBjb250ZXh0LgorICAgICAqLworICAgIGlwSWZTdGF0c1RhYmxlX2RhdGEgKnJ0biA9IFNOTVBfTUFMTE9DX1RZUEVERUYoaXBJZlN0YXRzVGFibGVfZGF0YSk7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBydG4pIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVuYWJsZSB0byBtYWxsb2MgbWVtb3J5IGZvciBuZXcgIgorICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGVfZGF0YS5cbiIpOworICAgIH0KKworICAgIHJldHVybiBydG47Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEgKi8KKworLyoKKyAqIGlwSWZTdGF0c1RhYmxlX3JlbGVhc2VfZGF0YQorICoKKyAqIFB1cnBvc2U6IHJlbGVhc2UgaXBJZlN0YXRzVGFibGUgZGF0YS4KKyAqLwordm9pZAoraXBJZlN0YXRzVGFibGVfcmVsZWFzZV9kYXRhKGlwSWZTdGF0c1RhYmxlX2RhdGEgKiBkYXRhKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX3JlbGVhc2VfZGF0YSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIwMjpyOiB8LT4gcmVsZWFzZSBtZW1vcnkgZm9yIHRoZSBpcElmU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICovCisgICAgZnJlZShkYXRhKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9kYXRhICovCisKKworCisvKioKKyAqIHNldCBtaWIgaW5kZXgoZXMpCisgKgorICogQHBhcmFtIHRibF9pZHggbWliIGluZGV4IHN0cnVjdHVyZQorICogQHBhcmFtIGlwSWZTdGF0c0lQVmVyc2lvbl92YWwKKyAqIEBwYXJhbSBpcElmU3RhdHNJZkluZGV4X3ZhbAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgY29udmVuaWVuY2UgZnVuY3Rpb24gaXMgdXNlZnVsIGZvciBzZXR0aW5nIGFsbCB0aGUgTUlCIGluZGV4CisgKiAgY29tcG9uZW50cyB3aXRoIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuIEl0IGlzIGFzc3VtZSB0aGF0IHRoZSBDIHZhbHVlcworICogIGhhdmUgYWxyZWFkeSBiZWVuIG1hcHBlZCBmcm9tIHRoZWlyIG5hdGl2ZS9yYXdmb3JtYXQgdG8gdGhlIE1JQiBmb3JtYXQuCisgKi8KK2ludAoraXBJZlN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeChpcElmU3RhdHNUYWJsZV9taWJfaW5kZXggKiB0YmxfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgaXBJZlN0YXRzSVBWZXJzaW9uX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpcElmU3RhdHNJZkluZGV4X3ZhbCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBpcElmU3RhdHNJUFZlcnNpb24oMSkvSW5ldFZlcnNpb24vQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oIAorICAgICAqLworICAgIC8qKiBXQVJOSU5HOiB0aGlzIGNvZGUgbWlnaHQgbm90IHdvcmsgZm9yIG5ldHNubXBfaWZzdGF0c19lbnRyeSAqLworICAgIHRibF9pZHgtPmlwSWZTdGF0c0lQVmVyc2lvbiA9IGlwSWZTdGF0c0lQVmVyc2lvbl92YWw7CisKKyAgICAvKgorICAgICAqIGlwSWZTdGF0c0lmSW5kZXgoMikvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSCAKKyAgICAgKi8KKyAgICAvKiogV0FSTklORzogdGhpcyBjb2RlIG1pZ2h0IG5vdCB3b3JrIGZvciBuZXRzbm1wX2lmc3RhdHNfZW50cnkgKi8KKyAgICB0YmxfaWR4LT5pcElmU3RhdHNJZkluZGV4ID0gaXBJZlN0YXRzSWZJbmRleF92YWw7CisKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogc2V0IHJvdyBjb250ZXh0IGluZGV4ZXMKKyAqCisgKiBAcGFyYW0gcmVxcmVxX2N0eCB0aGUgcm93IGNvbnRleHQgdGhhdCBuZWVkcyB1cGRhdGVkIGluZGV4ZXMKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIG1pYiBpbmRleHMsIHRoZW4gdXBkYXRlcyB0aGUgb2lkIGluZGV4cworICogIGZyb20gdGhlIG1pYiBpbmRleC4KKyAqLworaW50CitpcElmU3RhdHNUYWJsZV9pbmRleGVzX3NldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcElmU3RhdHNJUFZlcnNpb25fdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpcElmU3RhdHNJZkluZGV4X3ZhbCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9pbmRleGVzX3NldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE1GRF9TVUNDRVNTICE9CisgICAgICAgIGlwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoJnJvd3JlcV9jdHgtPnRibF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSVBWZXJzaW9uX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJZkluZGV4X3ZhbCkpCisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQgbWliIGluZGV4IHRvIG9pZCBpbmRleAorICAgICAqLworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgubGVuID0gc2l6ZW9mKHJvd3JlcV9jdHgtPm9pZF90bXApIC8gc2l6ZW9mKG9pZCk7CisgICAgaWYgKDAgIT0gaXBJZlN0YXRzVGFibGVfaW5kZXhfdG9fb2lkKCZyb3dyZXFfY3R4LT5vaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+dGJsX2lkeCkpIHsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0ICovCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5SZWNlaXZlcworICogaXBJZlN0YXRzSW5SZWNlaXZlcyBpcyBzdWJpZCAzIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjMKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgcmVjZWl2ZWQsIGluY2x1ZGluZworICAgICAgICAgICAgdGhvc2UgcmVjZWl2ZWQgaW4gZXJyb3IuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5SZWNlaXZlcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luUmVjZWl2ZXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luUmVjZWl2ZXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5SZWNlaXZlc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5SZWNlaXZlc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzSW5SZWNlaXZlc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJblJlY2VpdmVzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJblJlY2VpdmVzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOUkVDRUlWRVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luUmVjZWl2ZXNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJblJlY2VpdmVzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ0luUmVjZWl2ZXMKKyAqIGlwSWZTdGF0c0hDSW5SZWNlaXZlcyBpcyBzdWJpZCA0IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjQKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgcmVjZWl2ZWQsIGluY2x1ZGluZworICAgICAgICAgICAgdGhvc2UgcmVjZWl2ZWQgaW4gZXJyb3IuICBUaGlzIG9iamVjdCBjb3VudHMgdGhlIHNhbWUKKyAgICAgICAgICAgIGRhdGFncmFtcyBhcyBpcElmU3RhdHNJblJlY2VpdmVzLCBidXQgYWxsb3dzIGZvciBsYXJnZXIKKyAgICAgICAgICAgIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ0luUmVjZWl2ZXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBVNjQgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0hDSW5SZWNlaXZlc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ0luUmVjZWl2ZXMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOUkVDRUlWRVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKS5sb3cgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93OworICAgICgqaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luUmVjZWl2ZXMuaGlnaDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSENJblJlY2VpdmVzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbk9jdGV0cworICogaXBJZlN0YXRzSW5PY3RldHMgaXMgc3ViaWQgNSBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS41CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIGlucHV0IElQIGRhdGFncmFtcywKKyAgICAgICAgICAgIGluY2x1ZGluZyB0aG9zZSByZWNlaXZlZCBpbiBlcnJvci4gIE9jdGV0cyBmcm9tIGRhdGFncmFtcworICAgICAgICAgICAgY291bnRlZCBpbiBpcElmU3RhdHNJblJlY2VpdmVzIE1VU1QgYmUgY291bnRlZCBoZXJlLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luT2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5PY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luT2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbk9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5PY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luT2N0ZXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luT2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJbk9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5PY3RldHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luT2N0ZXRzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSW5PY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDSW5PY3RldHMKKyAqIGlwSWZTdGF0c0hDSW5PY3RldHMgaXMgc3ViaWQgNiBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS42CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIGlucHV0IElQIGRhdGFncmFtcywKKyAgICAgICAgICAgIGluY2x1ZGluZyB0aG9zZSByZWNlaXZlZCBpbiBlcnJvci4gIFRoaXMgb2JqZWN0IGNvdW50cyB0aGUKKyAgICAgICAgICAgIHNhbWUgb2N0ZXRzIGFzIGlwSWZTdGF0c0luT2N0ZXRzLCBidXQgYWxsb3dzIGZvciBsYXJnZXIKKyAgICAgICAgICAgIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ0luT2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENJbk9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ0luT2N0ZXRzIGRhdGEuCisgICAgICogZ2V0ICgqIGlwSWZTdGF0c0hDSW5PY3RldHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5PY3RldHMubG93OworICAgICgqaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyKS5oaWdoID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk9jdGV0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ0luT2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbkhkckVycm9ycworICogaXBJZlN0YXRzSW5IZHJFcnJvcnMgaXMgc3ViaWQgNyBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS43CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgaW5wdXQgSVAgZGF0YWdyYW1zIGRpc2NhcmRlZCBkdWUgdG8gZXJyb3JzIGluCisgICAgICAgICAgICB0aGVpciBJUCBoZWFkZXJzLCBpbmNsdWRpbmcgdmVyc2lvbiBudW1iZXIgbWlzbWF0Y2gsIG90aGVyCisgICAgICAgICAgICBmb3JtYXQgZXJyb3JzLCBob3AgY291bnQgZXhjZWVkZWQsIGVycm9ycyBkaXNjb3ZlcmVkIGluCisgICAgICAgICAgICBwcm9jZXNzaW5nIHRoZWlyIElQIG9wdGlvbnMsIGV0Yy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkhkckVycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luSGRyRXJyb3JzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNJbkhkckVycm9yc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5IZHJFcnJvcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0luSGRyRXJyb3JzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJbkhkckVycm9yc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkhkckVycm9ycyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzSW5IZHJFcnJvcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJbkhkckVycm9yc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkluSGRyRXJyb3JzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJbkhkckVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5Ob1JvdXRlcworICogaXBJZlN0YXRzSW5Ob1JvdXRlcyBpcyBzdWJpZCA4IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjgKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgZGlzY2FyZGVkIGJlY2F1c2Ugbm8gcm91dGUKKyAgICAgICAgICAgIGNvdWxkIGJlIGZvdW5kIHRvIHRyYW5zbWl0IHRoZW0gdG8gdGhlaXIgZGVzdGluYXRpb24uCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5Ob1JvdXRlcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luTm9Sb3V0ZXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luTm9Sb3V0ZXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5Ob1JvdXRlc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5Ob1JvdXRlc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzSW5Ob1JvdXRlc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbk5vUm91dGVzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJbk5vUm91dGVzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTk9ST1VURVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luTm9Sb3V0ZXNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTm9Sb3V0ZXMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJbk5vUm91dGVzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbkFkZHJFcnJvcnMKKyAqIGlwSWZTdGF0c0luQWRkckVycm9ycyBpcyBzdWJpZCA5IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjkKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgZGlzY2FyZGVkIGJlY2F1c2UgdGhlIElQCisgICAgICAgICAgICBhZGRyZXNzIGluIHRoZWlyIElQIGhlYWRlcidzIGRlc3RpbmF0aW9uIGZpZWxkIHdhcyBub3QgYQorICAgICAgICAgICAgdmFsaWQgYWRkcmVzcyB0byBiZSByZWNlaXZlZCBhdCB0aGlzIGVudGl0eS4gIFRoaXMgY291bnQKKyAgICAgICAgICAgIGluY2x1ZGVzIGludmFsaWQgYWRkcmVzc2VzIChlLmcuLCA6OjApLiAgRm9yIGVudGl0aWVzIHRoYXQKKyAgICAgICAgICAgIGFyZSBub3QgSVAgcm91dGVycyBhbmQgdGhlcmVmb3JlIGRvIG5vdCBmb3J3YXJkIGRhdGFncmFtcywKKyAgICAgICAgICAgIHRoaXMgY291bnRlciBpbmNsdWRlcyBkYXRhZ3JhbXMgZGlzY2FyZGVkIGJlY2F1c2UgdGhlCisgICAgICAgICAgICBkZXN0aW5hdGlvbiBhZGRyZXNzIHdhcyBub3QgYSBsb2NhbCBhZGRyZXNzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luQWRkckVycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luQWRkckVycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5BZGRyRXJyb3JzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5BZGRyRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJbkFkZHJFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luQWRkckVycm9yc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkFkZHJFcnJvcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luQWRkckVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5BRERSRVJST1JTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJbkFkZHJFcnJvcnNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5JbkFkZHJFcnJvcnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luQWRkckVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zCisgKiBpcElmU3RhdHNJblVua25vd25Qcm90b3MgaXMgc3ViaWQgMTAgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTAKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBsb2NhbGx5LWFkZHJlc3NlZCBJUCBkYXRhZ3JhbXMgcmVjZWl2ZWQKKyAgICAgICAgICAgIHN1Y2Nlc3NmdWxseSBidXQgZGlzY2FyZGVkIGJlY2F1c2Ugb2YgYW4gdW5rbm93biBvcgorICAgICAgICAgICAgdW5zdXBwb3J0ZWQgcHJvdG9jb2wuCisKKyAgICAgICAgICAgIFdoZW4gdHJhY2tpbmcgaW50ZXJmYWNlIHN0YXRpc3RpY3MsIHRoZSBjb3VudGVyIG9mIHRoZQorICAgICAgICAgICAgaW50ZXJmYWNlIHRvIHdoaWNoIHRoZXNlIGRhdGFncmFtcyB3ZXJlIGFkZHJlc3NlZCBpcworICAgICAgICAgICAgaW5jcmVtZW50ZWQuICBUaGlzIGludGVyZmFjZSBtaWdodCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgICAgICBpbnB1dCBpbnRlcmZhY2UgZm9yIHNvbWUgb2YgdGhlIGRhdGFncmFtcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorCisKKworICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJblVua25vd25Qcm90b3MgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNJblVua25vd25Qcm90b3NfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luVW5rbm93blByb3Rvc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0luVW5rbm93blByb3Rvc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJblVua25vd25Qcm90b3NfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJblVua25vd25Qcm90b3NfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOVU5LTk9XTlBST1RPU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5Vbmtub3duUHJvdG9zOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJblVua25vd25Qcm90b3NfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0cworICogaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzIGlzIHN1YmlkIDExIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjExCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgaW5wdXQgSVAgZGF0YWdyYW1zIGRpc2NhcmRlZCBiZWNhdXNlIHRoZQorICAgICAgICAgICAgZGF0YWdyYW0gZnJhbWUgZGlkbid0IGNhcnJ5IGVub3VnaCBkYXRhLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJblRydW5jYXRlZFBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJblRydW5jYXRlZFBrdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5UUlVOQ0FURURQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJblRydW5jYXRlZFBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5JblRydW5jYXRlZFBrdHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zCisgKiBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXMgaXMgc3ViaWQgMTIgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTIKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBpbnB1dCBkYXRhZ3JhbXMgZm9yIHdoaWNoIHRoaXMgZW50aXR5IHdhcyBub3QKKyAgICAgICAgICAgIHRoZWlyIGZpbmFsIElQIGRlc3RpbmF0aW9uIGFuZCBmb3Igd2hpY2ggdGhpcyBlbnRpdHkKKyAgICAgICAgICAgIGF0dGVtcHRlZCB0byBmaW5kIGEgcm91dGUgdG8gZm9yd2FyZCB0aGVtIHRvIHRoYXQgZmluYWwKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLiAgSW4gZW50aXRpZXMgdGhhdCBkbyBub3QgYWN0IGFzIElQIHJvdXRlcnMsCisgICAgICAgICAgICB0aGlzIGNvdW50ZXIgd2lsbCBpbmNsdWRlIG9ubHkgdGhvc2UgZGF0YWdyYW1zIHRoYXQgd2VyZQorICAgICAgICAgICAgU291cmNlLVJvdXRlZCB2aWEgdGhpcyBlbnRpdHksIGFuZCB0aGUgU291cmNlLVJvdXRlCisgICAgICAgICAgICBwcm9jZXNzaW5nIHdhcyBzdWNjZXNzZnVsLgorCisgICAgICAgICAgICBXaGVuIHRyYWNraW5nIGludGVyZmFjZSBzdGF0aXN0aWNzLCB0aGUgY291bnRlciBvZiB0aGUKKyAgICAgICAgICAgIGluY29taW5nIGludGVyZmFjZSBpcyBpbmNyZW1lbnRlZCBmb3IgZWFjaCBkYXRhZ3JhbS4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luRm9yd0RhdGFncmFtc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5GT1JXREFUQUdSQU1TXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMKKyAqIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zIGlzIHN1YmlkIDEzIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjEzCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgaW5wdXQgZGF0YWdyYW1zIGZvciB3aGljaCB0aGlzIGVudGl0eSB3YXMgbm90CisgICAgICAgICAgICB0aGVpciBmaW5hbCBJUCBkZXN0aW5hdGlvbiBhbmQgZm9yIHdoaWNoIHRoaXMgZW50aXR5CisgICAgICAgICAgICBhdHRlbXB0ZWQgdG8gZmluZCBhIHJvdXRlIHRvIGZvcndhcmQgdGhlbSB0byB0aGF0IGZpbmFsCisgICAgICAgICAgICBkZXN0aW5hdGlvbi4gIFRoaXMgb2JqZWN0IGNvdW50cyB0aGUgc2FtZSBwYWNrZXRzIGFzCisKKworCisgICAgICAgICAgICBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXMsIGJ1dCBhbGxvd3MgZm9yIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkZPUldEQVRBR1JBTVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzUmVhc21SZXFkcworICogaXBJZlN0YXRzUmVhc21SZXFkcyBpcyBzdWJpZCAxNCBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4xNAorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIElQIGZyYWdtZW50cyByZWNlaXZlZCB0aGF0IG5lZWRlZCB0byBiZQorICAgICAgICAgICAgcmVhc3NlbWJsZWQgYXQgdGhpcyBpbnRlcmZhY2UuCisKKyAgICAgICAgICAgIFdoZW4gdHJhY2tpbmcgaW50ZXJmYWNlIHN0YXRpc3RpY3MsIHRoZSBjb3VudGVyIG9mIHRoZQorICAgICAgICAgICAgaW50ZXJmYWNlIHRvIHdoaWNoIHRoZXNlIGZyYWdtZW50cyB3ZXJlIGFkZHJlc3NlZCBpcworICAgICAgICAgICAgaW5jcmVtZW50ZWQuICBUaGlzIGludGVyZmFjZSBtaWdodCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgICAgICBpbnB1dCBpbnRlcmZhY2UgZm9yIHNvbWUgb2YgdGhlIGZyYWdtZW50cy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNSZWFzbVJlcWRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzUmVhc21SZXFkc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzUmVhc21SZXFkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNSZWFzbVJlcWRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c1JlYXNtUmVxZHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c1JlYXNtUmVxZHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c1JlYXNtUmVxZHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5SZWFzbVJlcWRzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNSZWFzbVJlcWRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNSZWFzbU9LcworICogaXBJZlN0YXRzUmVhc21PS3MgaXMgc3ViaWQgMTUgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTUKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgc3VjY2Vzc2Z1bGx5IHJlYXNzZW1ibGVkLgorCisgICAgICAgICAgICBXaGVuIHRyYWNraW5nIGludGVyZmFjZSBzdGF0aXN0aWNzLCB0aGUgY291bnRlciBvZiB0aGUKKyAgICAgICAgICAgIGludGVyZmFjZSB0byB3aGljaCB0aGVzZSBkYXRhZ3JhbXMgd2VyZSBhZGRyZXNzZWQgaXMKKyAgICAgICAgICAgIGluY3JlbWVudGVkLiAgVGhpcyBpbnRlcmZhY2UgbWlnaHQgbm90IGJlIHRoZSBzYW1lIGFzIHRoZQorICAgICAgICAgICAgaW5wdXQgaW50ZXJmYWNlIGZvciBzb21lIG9mIHRoZSBkYXRhZ3JhbXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVhc21PS3MgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNSZWFzbU9Lc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzUmVhc21PS3NfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c1JlYXNtT0tzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNSZWFzbU9Lc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzUmVhc21PS3NfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVhc21PS3MgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c1JlYXNtT0tzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzUmVhc21PS3NfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5SZWFzbU9LczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzUmVhc21PS3NfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c1JlYXNtRmFpbHMKKyAqIGlwSWZTdGF0c1JlYXNtRmFpbHMgaXMgc3ViaWQgMTYgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTYKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBmYWlsdXJlcyBkZXRlY3RlZCBieSB0aGUgSVAgcmUtYXNzZW1ibHkKKyAgICAgICAgICAgIGFsZ29yaXRobSAoZm9yIHdoYXRldmVyIHJlYXNvbjogdGltZWQgb3V0LCBlcnJvcnMsIGV0Yy4pLgorICAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IGEgY291bnQgb2YgZGlzY2FyZGVkIElQCisgICAgICAgICAgICBmcmFnbWVudHMgc2luY2Ugc29tZSBhbGdvcml0aG1zIChub3RhYmx5IHRoZSBhbGdvcml0aG0gaW4KKyAgICAgICAgICAgIFJGQyA4MTUpIGNhbiBsb3NlIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgZnJhZ21lbnRzIGJ5CisgICAgICAgICAgICBjb21iaW5pbmcgdGhlbSBhcyB0aGV5IGFyZSByZWNlaXZlZC4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisgICAgICAgICAgICBpbnRlcmZhY2UgdG8gd2hpY2ggdGhlc2UgZnJhZ21lbnRzIHdlcmUgYWRkcmVzc2VkIGlzCisgICAgICAgICAgICBpbmNyZW1lbnRlZC4gIFRoaXMgaW50ZXJmYWNlIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUKKyAgICAgICAgICAgIGlucHV0IGludGVyZmFjZSBmb3Igc29tZSBvZiB0aGUgZnJhZ21lbnRzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c1JlYXNtRmFpbHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNSZWFzbUZhaWxzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNSZWFzbUZhaWxzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c1JlYXNtRmFpbHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c1JlYXNtRmFpbHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1JlYXNtRmFpbHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVhc21GYWlscyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzUmVhc21GYWlsc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01GQUlMU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzUmVhc21GYWlsc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLlJlYXNtRmFpbHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1JlYXNtRmFpbHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0luRGlzY2FyZHMKKyAqIGlwSWZTdGF0c0luRGlzY2FyZHMgaXMgc3ViaWQgMTcgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTcKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgZm9yIHdoaWNoIG5vIHByb2JsZW1zIHdlcmUKKyAgICAgICAgICAgIGVuY291bnRlcmVkIHRvIHByZXZlbnQgdGhlaXIgY29udGludWVkIHByb2Nlc3NpbmcsIGJ1dAorICAgICAgICAgICAgd2VyZSBkaXNjYXJkZWQgKGUuZy4sIGZvciBsYWNrIG9mIGJ1ZmZlciBzcGFjZSkuICBOb3RlIHRoYXQKKyAgICAgICAgICAgIHRoaXMgY291bnRlciBkb2VzIG5vdCBpbmNsdWRlIGFueSBkYXRhZ3JhbXMgZGlzY2FyZGVkIHdoaWxlCisgICAgICAgICAgICBhd2FpdGluZyByZS1hc3NlbWJseS4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkRpc2NhcmRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5EaXNjYXJkc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5EaXNjYXJkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbkRpc2NhcmRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJbkRpc2NhcmRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJbkRpc2NhcmRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luRGlzY2FyZHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luRGlzY2FyZHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lORElTQ0FSRFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luRGlzY2FyZHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5JbkRpc2NhcmRzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJbkRpc2NhcmRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbkRlbGl2ZXJzCisgKiBpcElmU3RhdHNJbkRlbGl2ZXJzIGlzIHN1YmlkIDE4IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjE4CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgZGF0YWdyYW1zIHN1Y2Nlc3NmdWxseSBkZWxpdmVyZWQgdG8gSVAKKyAgICAgICAgICAgIHVzZXItcHJvdG9jb2xzIChpbmNsdWRpbmcgSUNNUCkuCisKKyAgICAgICAgICAgIFdoZW4gdHJhY2tpbmcgaW50ZXJmYWNlIHN0YXRpc3RpY3MsIHRoZSBjb3VudGVyIG9mIHRoZQorICAgICAgICAgICAgaW50ZXJmYWNlIHRvIHdoaWNoIHRoZXNlIGRhdGFncmFtcyB3ZXJlIGFkZHJlc3NlZCBpcworICAgICAgICAgICAgaW5jcmVtZW50ZWQuICBUaGlzIGludGVyZmFjZSBtaWdodCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlCisKKworCisgICAgICAgICAgICBpbnB1dCBpbnRlcmZhY2UgZm9yIHNvbWUgb2YgdGhlIGRhdGFncmFtcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkRlbGl2ZXJzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5EZWxpdmVyc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5EZWxpdmVyc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbkRlbGl2ZXJzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJbkRlbGl2ZXJzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJbkRlbGl2ZXJzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luRGVsaXZlcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luRGVsaXZlcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5ERUxJVkVSU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5EZWxpdmVyc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5EZWxpdmVycy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luRGVsaXZlcnNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDSW5EZWxpdmVycworICogaXBJZlN0YXRzSENJbkRlbGl2ZXJzIGlzIHN1YmlkIDE5IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjE5CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgZGF0YWdyYW1zIHN1Y2Nlc3NmdWxseSBkZWxpdmVyZWQgdG8gSVAKKyAgICAgICAgICAgIHVzZXItcHJvdG9jb2xzIChpbmNsdWRpbmcgSUNNUCkuICBUaGlzIG9iamVjdCBjb3VudHMgdGhlCisgICAgICAgICAgICBzYW1lIHBhY2tldHMgYXMgaXBJZlN0YXRzSW5EZWxpdmVycywgYnV0IGFsbG93cyBmb3IgbGFyZ2VyCisgICAgICAgICAgICB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENJbkRlbGl2ZXJzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENJbkRlbGl2ZXJzIGRhdGEuCisgICAgICogZ2V0ICgqIGlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKS5oaWdoID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkRlbGl2ZXJzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDSW5EZWxpdmVyc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0UmVxdWVzdHMKKyAqIGlwSWZTdGF0c091dFJlcXVlc3RzIGlzIHN1YmlkIDIwIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjIwCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgbG9jYWwgSVAgdXNlci0KKyAgICAgICAgICAgIHByb3RvY29scyAoaW5jbHVkaW5nIElDTVApIHN1cHBsaWVkIHRvIElQIGluIHJlcXVlc3RzIGZvcgorICAgICAgICAgICAgdHJhbnNtaXNzaW9uLiAgTm90ZSB0aGF0IHRoaXMgY291bnRlciBkb2VzIG5vdCBpbmNsdWRlIGFueQorICAgICAgICAgICAgZGF0YWdyYW1zIGNvdW50ZWQgaW4gaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRSZXF1ZXN0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dFJlcXVlc3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNPdXRSZXF1ZXN0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c091dFJlcXVlc3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNPdXRSZXF1ZXN0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRSZXF1ZXN0cyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dFJlcXVlc3RzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c091dFJlcXVlc3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ091dFJlcXVlc3RzCisgKiBpcElmU3RhdHNIQ091dFJlcXVlc3RzIGlzIHN1YmlkIDIxIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjIxCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgbG9jYWwgSVAgdXNlci0KKyAgICAgICAgICAgIHByb3RvY29scyAoaW5jbHVkaW5nIElDTVApIHN1cHBsaWVkIHRvIElQIGluIHJlcXVlc3RzIGZvcgorICAgICAgICAgICAgdHJhbnNtaXNzaW9uLiAgVGhpcyBvYmplY3QgY291bnRzIHRoZSBzYW1lIHBhY2tldHMgYXMKKworCisKKyAgICAgICAgICAgIGlwSWZTdGF0c091dFJlcXVlc3RzLCBidXQgYWxsb3dzIGZvciBsYXJnZXIgdmFsdWVzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVI2NCAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUjY0KQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVI2NC4gVGhlIEMgdHlwZSBkZWNsIGlzIFU2NCAoVTY0KQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ091dFJlcXVlc3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwSWZTdGF0c0hDT3V0UmVxdWVzdHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3c7CisgICAgKCppcElmU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFJlcXVlc3RzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXMKKyAqIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXMgaXMgc3ViaWQgMjMgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjMKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBkYXRhZ3JhbXMgZm9yIHdoaWNoIHRoaXMgZW50aXR5IHdhcyBub3QgdGhlaXIKKyAgICAgICAgICAgIGZpbmFsIElQIGRlc3RpbmF0aW9uIGFuZCBmb3Igd2hpY2ggaXQgd2FzIHN1Y2Nlc3NmdWwgaW4KKyAgICAgICAgICAgIGZpbmRpbmcgYSBwYXRoIHRvIHRoZWlyIGZpbmFsIGRlc3RpbmF0aW9uLiAgSW4gZW50aXRpZXMKKyAgICAgICAgICAgIHRoYXQgZG8gbm90IGFjdCBhcyBJUCByb3V0ZXJzLCB0aGlzIGNvdW50ZXIgd2lsbCBpbmNsdWRlCisgICAgICAgICAgICBvbmx5IHRob3NlIGRhdGFncmFtcyB0aGF0IHdlcmUgU291cmNlLVJvdXRlZCB2aWEgdGhpcworICAgICAgICAgICAgZW50aXR5LCBhbmQgdGhlIFNvdXJjZS1Sb3V0ZSBwcm9jZXNzaW5nIHdhcyBzdWNjZXNzZnVsLgorCisgICAgICAgICAgICBXaGVuIHRyYWNraW5nIGludGVyZmFjZSBzdGF0aXN0aWNzLCB0aGUgY291bnRlciBvZiB0aGUKKyAgICAgICAgICAgIG91dGdvaW5nIGludGVyZmFjZSBpcyBpbmNyZW1lbnRlZCBmb3IgYSBzdWNjZXNzZnVsbHkKKyAgICAgICAgICAgIGZvcndhcmRlZCBkYXRhZ3JhbS4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtcworICogaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zIGlzIHN1YmlkIDI0IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjI0CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgZGF0YWdyYW1zIGZvciB3aGljaCB0aGlzIGVudGl0eSB3YXMgbm90IHRoZWlyCisgICAgICAgICAgICBmaW5hbCBJUCBkZXN0aW5hdGlvbiBhbmQgZm9yIHdoaWNoIGl0IHdhcyBzdWNjZXNzZnVsIGluCisgICAgICAgICAgICBmaW5kaW5nIGEgcGF0aCB0byB0aGVpciBmaW5hbCBkZXN0aW5hdGlvbi4gIFRoaXMgb2JqZWN0CisgICAgICAgICAgICBjb3VudHMgdGhlIHNhbWUgcGFja2V0cyBhcyBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zLCBidXQKKyAgICAgICAgICAgIGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorCisKKworICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBVNjQgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKS5sb3cgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMubG93OworICAgICgqaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMuaGlnaDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXREaXNjYXJkcworICogaXBJZlN0YXRzT3V0RGlzY2FyZHMgaXMgc3ViaWQgMjUgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjUKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBvdXRwdXQgSVAgZGF0YWdyYW1zIGZvciB3aGljaCBubyBwcm9ibGVtIHdhcworICAgICAgICAgICAgZW5jb3VudGVyZWQgdG8gcHJldmVudCB0aGVpciB0cmFuc21pc3Npb24gdG8gdGhlaXIKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLCBidXQgd2VyZSBkaXNjYXJkZWQgKGUuZy4sIGZvciBsYWNrIG9mCisgICAgICAgICAgICBidWZmZXIgc3BhY2UpLiAgTm90ZSB0aGF0IHRoaXMgY291bnRlciB3b3VsZCBpbmNsdWRlCisgICAgICAgICAgICBkYXRhZ3JhbXMgY291bnRlZCBpbiBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zIGlmIGFueSBzdWNoCisgICAgICAgICAgICBkYXRhZ3JhbXMgbWV0IHRoaXMgKGRpc2NyZXRpb25hcnkpIGRpc2NhcmQgY3JpdGVyaW9uLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dERpc2NhcmRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0RGlzY2FyZHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dERpc2NhcmRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXREaXNjYXJkc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0RGlzY2FyZHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dERpc2NhcmRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dERpc2NhcmRzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXREaXNjYXJkc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRESVNDQVJEU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0RGlzY2FyZHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dERpc2NhcmRzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0RGlzY2FyZHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dEZyYWdSZXFkcworICogaXBJZlN0YXRzT3V0RnJhZ1JlcWRzIGlzIHN1YmlkIDI2IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjI2CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgd291bGQgcmVxdWlyZSBmcmFnbWVudGF0aW9uCisgICAgICAgICAgICBpbiBvcmRlciB0byBiZSB0cmFuc21pdHRlZC4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisgICAgICAgICAgICBvdXRnb2luZyBpbnRlcmZhY2UgaXMgaW5jcmVtZW50ZWQgZm9yIGEgc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBmcmFnbWVudGVkIGRhdGFncmFtLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdSZXFkcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dEZyYWdSZXFkc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0RnJhZ1JlcWRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0RnJhZ1JlcWRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRGcmFnUmVxZHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dEZyYWdSZXFkc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRGcmFnUmVxZHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dEZyYWdSZXFkc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHUkVRRFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dEZyYWdSZXFkc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RnJhZ1JlcWRzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0RnJhZ1JlcWRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXRGcmFnT0tzCisgKiBpcElmU3RhdHNPdXRGcmFnT0tzIGlzIHN1YmlkIDI3IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjI3CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseQorICAgICAgICAgICAgZnJhZ21lbnRlZC4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisKKworCisgICAgICAgICAgICBvdXRnb2luZyBpbnRlcmZhY2UgaXMgaW5jcmVtZW50ZWQgZm9yIGEgc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBmcmFnbWVudGVkIGRhdGFncmFtLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdPS3MgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXRGcmFnT0tzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNPdXRGcmFnT0tzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dEZyYWdPS3NfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c091dEZyYWdPS3NfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dEZyYWdPS3NfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0RnJhZ09LcyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzT3V0RnJhZ09Lc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHT0tTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXRGcmFnT0tzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0RnJhZ09Lc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzCisgKiBpcElmU3RhdHNPdXRGcmFnRmFpbHMgaXMgc3ViaWQgMjggb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjgKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgdGhhdCBoYXZlIGJlZW4gZGlzY2FyZGVkIGJlY2F1c2UKKyAgICAgICAgICAgIHRoZXkgbmVlZGVkIHRvIGJlIGZyYWdtZW50ZWQgYnV0IGNvdWxkIG5vdCBiZS4gIFRoaXMKKyAgICAgICAgICAgIGluY2x1ZGVzIElQdjQgcGFja2V0cyB0aGF0IGhhdmUgdGhlIERGIGJpdCBzZXQgYW5kIElQdjYKKyAgICAgICAgICAgIHBhY2tldHMgdGhhdCBhcmUgYmVpbmcgZm9yd2FyZGVkIGFuZCBleGNlZWQgdGhlIG91dGdvaW5nCisgICAgICAgICAgICBsaW5rIE1UVS4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisgICAgICAgICAgICBvdXRnb2luZyBpbnRlcmZhY2UgaXMgaW5jcmVtZW50ZWQgZm9yIGFuIHVuc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBmcmFnbWVudGVkIGRhdGFncmFtLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdGYWlscyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dEZyYWdGYWlsc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0RnJhZ0ZhaWxzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRGcmFnRmFpbHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dEZyYWdGYWlsc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRGcmFnRmFpbHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dEZyYWdGYWlsc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHRkFJTFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dEZyYWdGYWlsc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXRGcmFnQ3JlYXRlcworICogaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXMgaXMgc3ViaWQgMjkgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjkKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBvdXRwdXQgZGF0YWdyYW0gZnJhZ21lbnRzIHRoYXQgaGF2ZSBiZWVuCisgICAgICAgICAgICBnZW5lcmF0ZWQgYXMgYSByZXN1bHQgb2YgSVAgZnJhZ21lbnRhdGlvbi4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisgICAgICAgICAgICBvdXRnb2luZyBpbnRlcmZhY2UgaXMgaW5jcmVtZW50ZWQgZm9yIGEgc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBmcmFnbWVudGVkIGRhdGFncmFtLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdDcmVhdGVzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dEZyYWdDcmVhdGVzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dEZyYWdDcmVhdGVzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdDcmVhdGVzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dFRyYW5zbWl0cworICogaXBJZlN0YXRzT3V0VHJhbnNtaXRzIGlzIHN1YmlkIDMwIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjMwCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgdGhpcyBlbnRpdHkgc3VwcGxpZWQKKyAgICAgICAgICAgIHRvIHRoZSBsb3dlciBsYXllcnMgZm9yIHRyYW5zbWlzc2lvbi4gIFRoaXMgaW5jbHVkZXMKKyAgICAgICAgICAgIGRhdGFncmFtcyBnZW5lcmF0ZWQgbG9jYWxseSBhbmQgdGhvc2UgZm9yd2FyZGVkIGJ5IHRoaXMKKyAgICAgICAgICAgIGVudGl0eS4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRUcmFuc21pdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXRUcmFuc21pdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dFRyYW5zbWl0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dFRyYW5zbWl0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0VHJhbnNtaXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNPdXRUcmFuc21pdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0VHJhbnNtaXRzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRUcmFuc21pdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUVFJBTlNNSVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXRUcmFuc21pdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFRyYW5zbWl0cy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c091dFRyYW5zbWl0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENPdXRUcmFuc21pdHMKKyAqIGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzIGlzIHN1YmlkIDMxIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjMxCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgdGhpcyBlbnRpdHkgc3VwcGxpZWQKKyAgICAgICAgICAgIHRvIHRoZSBsb3dlciBsYXllcnMgZm9yIHRyYW5zbWlzc2lvbi4gIFRoaXMgb2JqZWN0IGNvdW50cworICAgICAgICAgICAgdGhlIHNhbWUgZGF0YWdyYW1zIGFzIGlwSWZTdGF0c091dFRyYW5zbWl0cywgYnV0IGFsbG93cyBmb3IKKyAgICAgICAgICAgIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENPdXRUcmFuc21pdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENPdXRUcmFuc21pdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENPdXRUcmFuc21pdHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRUUkFOU01JVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0VHJhbnNtaXRzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFRyYW5zbWl0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ091dFRyYW5zbWl0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0T2N0ZXRzCisgKiBpcElmU3RhdHNPdXRPY3RldHMgaXMgc3ViaWQgMzIgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzIKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgaW4gSVAgZGF0YWdyYW1zIGRlbGl2ZXJlZCB0byB0aGUKKyAgICAgICAgICAgIGxvd2VyIGxheWVycyBmb3IgdHJhbnNtaXNzaW9uLiAgT2N0ZXRzIGZyb20gZGF0YWdyYW1zCisgICAgICAgICAgICBjb3VudGVkIGluIGlwSWZTdGF0c091dFRyYW5zbWl0cyBNVVNUIGJlIGNvdW50ZWQgaGVyZS4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXRPY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dE9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0T2N0ZXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNPdXRPY3RldHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0T2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXRPY3RldHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE9jdGV0cy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c091dE9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENPdXRPY3RldHMKKyAqIGlwSWZTdGF0c0hDT3V0T2N0ZXRzIGlzIHN1YmlkIDMzIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjMzCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIGluIElQIGRhdGFncmFtcyBkZWxpdmVyZWQgdG8gdGhlCisgICAgICAgICAgICBsb3dlciBsYXllcnMgZm9yIHRyYW5zbWlzc2lvbi4gIFRoaXMgb2JqZWN0cyBjb3VudHMgdGhlIHNhbWUKKyAgICAgICAgICAgIG9jdGV0cyBhcyBpcElmU3RhdHNPdXRPY3RldHMsIGJ1dCBhbGxvd3MgZm9yIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENPdXRPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ091dE9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENPdXRPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dE9jdGV0c192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENPdXRPY3RldHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENPdXRPY3RldHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENPdXRPY3RldHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE9jdGV0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ091dE9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5NY2FzdFBrdHMKKyAqIGlwSWZTdGF0c0luTWNhc3RQa3RzIGlzIHN1YmlkIDM0IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjM0CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgbXVsdGljYXN0IGRhdGFncmFtcyByZWNlaXZlZC4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbk1jYXN0UGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNJbk1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJbk1jYXN0UGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbk1jYXN0UGt0cyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0UGt0cy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luTWNhc3RQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ0luTWNhc3RQa3RzCisgKiBpcElmU3RhdHNIQ0luTWNhc3RQa3RzIGlzIHN1YmlkIDM1IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjM1CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgbXVsdGljYXN0IGRhdGFncmFtcyByZWNlaXZlZC4gIFRoaXMgb2JqZWN0CisgICAgICAgICAgICBjb3VudHMgdGhlIHNhbWUgZGF0YWdyYW1zIGFzIGlwSWZTdGF0c0luTWNhc3RQa3RzLCBidXQKKyAgICAgICAgICAgIGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ0luTWNhc3RQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENJbk1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ0luTWNhc3RQa3RzIGRhdGEuCisgICAgICogZ2V0ICgqIGlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5NY2FzdFBrdHMubG93OworICAgICgqaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyKS5oaWdoID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0UGt0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbk1jYXN0T2N0ZXRzCisgKiBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzIGlzIHN1YmlkIDM2IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjM2CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIElQIG11bHRpY2FzdAorCisKKworICAgICAgICAgICAgZGF0YWdyYW1zLiAgT2N0ZXRzIGZyb20gZGF0YWdyYW1zIGNvdW50ZWQgaW4KKyAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RQa3RzIE1VU1QgYmUgY291bnRlZCBoZXJlLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luTWNhc3RPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNJbk1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0luTWNhc3RPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0luTWNhc3RPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luTWNhc3RPY3RldHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5NY2FzdE9jdGV0cyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzSW5NY2FzdE9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIpID0KKyAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RPY3RldHMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ0luTWNhc3RPY3RldHMKKyAqIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0cyBpcyBzdWJpZCAzNyBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4zNworICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyByZWNlaXZlZCBpbiBJUCBtdWx0aWNhc3QKKyAgICAgICAgICAgIGRhdGFncmFtcy4gIFRoaXMgb2JqZWN0IGNvdW50cyB0aGUgc2FtZSBvY3RldHMgYXMKKyAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RPY3RldHMsIGJ1dCBhbGxvd3MgZm9yIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzIGRhdGEuCisgICAgICogZ2V0ICgqIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKS5oaWdoID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0TWNhc3RQa3RzCisgKiBpcElmU3RhdHNPdXRNY2FzdFBrdHMgaXMgc3ViaWQgMzggb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzgKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBtdWx0aWNhc3QgZGF0YWdyYW1zIHRyYW5zbWl0dGVkLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dE1jYXN0UGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dE1jYXN0UGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0TWNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0TWNhc3RQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRNY2FzdFBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dE1jYXN0UGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRNY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dE1jYXN0UGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dE1jYXN0UGt0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0TWNhc3RQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ091dE1jYXN0UGt0cworICogaXBJZlN0YXRzSENPdXRNY2FzdFBrdHMgaXMgc3ViaWQgMzkgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzkKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBtdWx0aWNhc3QgZGF0YWdyYW1zIHRyYW5zbWl0dGVkLiAgVGhpcworICAgICAgICAgICAgb2JqZWN0IGNvdW50cyB0aGUgc2FtZSBkYXRhZ3JhbXMgYXMgaXBJZlN0YXRzT3V0TWNhc3RQa3RzLAorICAgICAgICAgICAgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorCisKKworICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ091dE1jYXN0UGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ091dE1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ091dE1jYXN0UGt0cyBkYXRhLgorICAgICAqIGdldCAoKiBpcElmU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRNY2FzdFBrdHMubG93OworICAgICgqaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cikuaGlnaCA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXRNY2FzdE9jdGV0cworICogaXBJZlN0YXRzT3V0TWNhc3RPY3RldHMgaXMgc3ViaWQgNDAgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNDAKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgaW4gSVAgbXVsdGljYXN0CisgICAgICAgICAgICBkYXRhZ3JhbXMuICBPY3RldHMgZnJvbSBkYXRhZ3JhbXMgY291bnRlZCBpbgorICAgICAgICAgICAgaXBJZlN0YXRzT3V0TWNhc3RQa3RzIE1VU1QgYmUgY291bnRlZCBoZXJlLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dE1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXRNY2FzdE9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dE1jYXN0T2N0ZXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRNY2FzdE9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVE9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHMKKyAqIGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHMgaXMgc3ViaWQgNDEgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNDEKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgaW4gSVAgbXVsdGljYXN0CisgICAgICAgICAgICBkYXRhZ3JhbXMuICBUaGlzIG9iamVjdCBjb3VudHMgdGhlIHNhbWUgb2N0ZXRzIGFzCisgICAgICAgICAgICBpcElmU3RhdHNPdXRNY2FzdE9jdGV0cywgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzIGRhdGEuCisgICAgICogZ2V0ICgqIGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMubG93OworICAgICgqaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKS5oaWdoID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRNY2FzdE9jdGV0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbkJjYXN0UGt0cworICogaXBJZlN0YXRzSW5CY2FzdFBrdHMgaXMgc3ViaWQgNDIgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNDIKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBicm9hZGNhc3QgZGF0YWdyYW1zIHJlY2VpdmVkLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luQmNhc3RQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5CY2FzdFBrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luQmNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5CY2FzdFBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luQmNhc3RQa3RzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luQmNhc3RQa3RzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkJDQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5CY2FzdFBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luQmNhc3RQa3RzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSW5CY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDSW5CY2FzdFBrdHMKKyAqIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHMgaXMgc3ViaWQgNDMgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNDMKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBicm9hZGNhc3QgZGF0YWdyYW1zIHJlY2VpdmVkLiAgVGhpcyBvYmplY3QKKyAgICAgICAgICAgIGNvdW50cyB0aGUgc2FtZSBkYXRhZ3JhbXMgYXMgaXBJZlN0YXRzSW5CY2FzdFBrdHMsIGJ1dAorICAgICAgICAgICAgYWxsb3dzIGZvciBsYXJnZXIgdmFsdWVzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVI2NCAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUjY0KQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVI2NC4gVGhlIEMgdHlwZSBkZWNsIGlzIFU2NCAoVTY0KQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ0luQmNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwSWZTdGF0c0hDSW5CY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENJbkJjYXN0UGt0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5CQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkJjYXN0UGt0cy5sb3c7CisgICAgKCppcElmU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luQmNhc3RQa3RzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dEJjYXN0UGt0cworICogaXBJZlN0YXRzT3V0QmNhc3RQa3RzIGlzIHN1YmlkIDQ0IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjQ0CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgYnJvYWRjYXN0IGRhdGFncmFtcyB0cmFuc21pdHRlZC4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRCY2FzdFBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXRCY2FzdFBrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dEJjYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dEJjYXN0UGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0QmNhc3RQa3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNPdXRCY2FzdFBrdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0QmNhc3RQa3RzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRCY2FzdFBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUQkNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXRCY2FzdFBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEJjYXN0UGt0cy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c091dEJjYXN0UGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENPdXRCY2FzdFBrdHMKKyAqIGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzIGlzIHN1YmlkIDQ1IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjQ1CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgYnJvYWRjYXN0IGRhdGFncmFtcyB0cmFuc21pdHRlZC4gIFRoaXMKKyAgICAgICAgICAgIG9iamVjdCBjb3VudHMgdGhlIHNhbWUgZGF0YWdyYW1zIGFzIGlwSWZTdGF0c091dEJjYXN0UGt0cywKKyAgICAgICAgICAgIGJ1dCBhbGxvd3MgZm9yIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENPdXRCY2FzdFBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENPdXRCY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRCQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEJjYXN0UGt0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ091dEJjYXN0UGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUKKyAqIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lIGlzIHN1YmlkIDQ2IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjQ2CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB2YWx1ZSBvZiBzeXNVcFRpbWUgb24gdGhlIG1vc3QgcmVjZW50IG9jY2FzaW9uIGF0IHdoaWNoCisKKworCisgICAgICAgICAgICBhbnkgb25lIG9yIG1vcmUgb2YgdGhpcyBlbnRyeSdzIGNvdW50ZXJzIHN1ZmZlcmVkIGEKKyAgICAgICAgICAgIGRpc2NvbnRpbnVpdHkuCisKKyAgICAgICAgICAgIElmIG5vIHN1Y2ggZGlzY29udGludWl0aWVzIGhhdmUgb2NjdXJyZWQgc2luY2UgdGhlIGxhc3QgcmUtCisgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBvZiB0aGUgbG9jYWwgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIHRoZW4gdGhpcworICAgICAgICAgICAgb2JqZWN0IGNvbnRhaW5zIGEgemVybyB2YWx1ZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIFRpbWVTdGFtcCAoYmFzZWQgb24gcGVybHR5cGUgVElDS1MpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVElNRVRJQ0tTLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5pcElmU3RhdHNEaXNjb250aW51aXR5VGltZTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c1JlZnJlc2hSYXRlCisgKiBpcElmU3RhdHNSZWZyZXNoUmF0ZSBpcyBzdWJpZCA0NyBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS40NworICogRGVzY3JpcHRpb246CitUaGUgbWluaW11bSByZWFzb25hYmxlIHBvbGxpbmcgaW50ZXJ2YWwgZm9yIHRoaXMgZW50cnkuCisgICAgICAgICAgICBUaGlzIG9iamVjdCBwcm92aWRlcyBhbiBpbmRpY2F0aW9uIG9mIHRoZSBtaW5pbXVtIGFtb3VudCBvZgorICAgICAgICAgICAgdGltZSByZXF1aXJlZCB0byB1cGRhdGUgdGhlIGNvdW50ZXJzIGluIHRoaXMgZW50cnkuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBVTlNJR05FRDMyIChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVmcmVzaFJhdGUgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzUmVmcmVzaFJhdGVfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c1JlZnJlc2hSYXRlX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzUmVmcmVzaFJhdGVfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVmcmVzaFJhdGUgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c1JlZnJlc2hSYXRlX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUZSRVNIUkFURV0pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzUmVmcmVzaFJhdGVfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5pcElmU3RhdHNSZWZyZXNoUmF0ZTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzUmVmcmVzaFJhdGVfZ2V0ICovCisKKworCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2dldC5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNjN2U0NwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2dldC5oCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA4OCAkIG9mICQKKyAqCisgKiAkSWQ6JAorICoKKyAqIEBmaWxlIGlwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKKyAqCisgKiBAYWRkdG9ncm91cCBnZXQKKyAqCisgKiBQcm90b3R5cGVzIGZvciBnZXQgZnVuY3Rpb25zCisgKgorICogQHsKKyAqLworI2lmbmRlZiBJUElGU1RBVFNUQUJMRV9EQVRBX0dFVF9ICisjZGVmaW5lIElQSUZTVEFUU1RBQkxFX0RBVEFfR0VUX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogR0VUIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogR0VUIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwSWZTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlIGlzIHN1YmlkIDMgb2YgaXBUcmFmZmljU3RhdHMuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMywgbGVuZ3RoOiA5CisgICAgICovCisgICAgLyoKKyAgICAgKiBpbmRleGVzCisgICAgICovCisKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5SZWNlaXZlc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luUmVjZWl2ZXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5SZWNlaXZlc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5PY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbk9jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5PY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luSGRyRXJyb3JzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSW5IZHJFcnJvcnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luTm9Sb3V0ZXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbk5vUm91dGVzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJbkFkZHJFcnJvcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbkFkZHJFcnJvcnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luVW5rbm93blByb3Rvc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luVW5rbm93blByb3Rvc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c1JlYXNtUmVxZHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNSZWFzbU9Lc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1JlYXNtT0tzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNSZWFzbUZhaWxzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzUmVhc21GYWlsc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5EaXNjYXJkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luRGlzY2FyZHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luRGVsaXZlcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbkRlbGl2ZXJzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dFJlcXVlc3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXREaXNjYXJkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dERpc2NhcmRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRGcmFnUmVxZHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRGcmFnUmVxZHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dEZyYWdPS3NfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRGcmFnT0tzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRGcmFnRmFpbHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRGcmFnRmFpbHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dEZyYWdDcmVhdGVzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dFRyYW5zbWl0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dFRyYW5zbWl0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJbk1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5NY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0TWNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0TWNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dE1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRNY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5CY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJbkJjYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dEJjYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dEJjYXN0UGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV92YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzUmVmcmVzaFJhdGVfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyKTsKKworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoaXBJZlN0YXRzVGFibGVfbWliX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmxfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcElmU3RhdHNJUFZlcnNpb25fdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXBJZlN0YXRzSWZJbmRleF92YWwpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9pbmRleGVzX3NldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0lQVmVyc2lvbl92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXBJZlN0YXRzSWZJbmRleF92YWwpOworCisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUElGU1RBVFNUQUJMRV9EQVRBX0dFVF9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9lbnVtcy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM2NTdkNQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9lbnVtcy5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1lbnVtcy5tMmMgMTI1MjYgMjAwNS0wNy0xNSAyMjo0MToxNlogcnN0b3J5ICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIElQSUZTVEFUU1RBQkxFX0VOVU1TX0gKKyNkZWZpbmUgSVBJRlNUQVRTVEFCTEVfRU5VTVNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqIE5PVEVTIG9uIGVudW1zCisgICAgICogPT09PT09PT09PT09PT0KKyAgICAgKgorICAgICAqIFZhbHVlIE1hcHBpbmcKKyAgICAgKiAtLS0tLS0tLS0tLS0tCisgICAgICogSWYgdGhlIHZhbHVlcyBmb3IgeW91ciBkYXRhIHR5cGUgZG9uJ3QgZXhhY3RseSBtYXRjaCB0aGUKKyAgICAgKiBwb3NzaWJsZSB2YWx1ZXMgZGVmaW5lZCBieSB0aGUgbWliLCB5b3Ugc2hvdWxkIG1hcCB0aGVtCisgICAgICogYmVsb3cuIEZvciBleGFtcGxlLCBhIGJvb2xlYW4gZmxhZyAoMS8wKSBpcyB1c3VhbGx5IHJlcHJlc2VudGVkCisgICAgICogYXMgYSBUcnV0aFZhbHVlIGluIGEgTUlCLCB3aGljaCBtYXBzIHRvIHRoZSB2YWx1ZXMgKDEvMikuCisgICAgICoKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIGVudW0gZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGlwSWZTdGF0c1RhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCisgKiBpcElmU3RhdHNJUFZlcnNpb24gKEluZXRWZXJzaW9uIC8gQVNOX0lOVEVHRVIpCisgKgorICogc2luY2UgYSBUZXh0dWFsIENvbnZlbnRpb24gbWF5IGJlIHJlZmVyZW5jZWQgbW9yZSB0aGFuIG9uY2UgaW4gYQorICogTUlCLCBwcm90ZWN0IGFnYWludCByZWRlZmluaXRpb25zIG9mIHRoZSBlbnVtIHZhbHVlcy4KKyAqLworI2lmbmRlZiBJTkVUVkVSU0lPTl9FTlVNUworI2RlZmluZSBJTkVUVkVSU0lPTl9FTlVNUworCisjZGVmaW5lIElORVRWRVJTSU9OX1VOS05PV04gIDAKKyNkZWZpbmUgSU5FVFZFUlNJT05fSVBWNCAgMQorI2RlZmluZSBJTkVUVkVSU0lPTl9JUFY2ICAyCisKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5FVFZFUlNJT05fRU5VTVMgKi8KKworCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBJRlNUQVRTVEFCTEVfRU5VTVNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MTVhODMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTAsMCArMSwxMzk1IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRISVMgRklMRSBET0VTIE5PVCBDT05UQUlOIEFOWSBVU0VSIEVESVRBQkxFIENPREUuICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRIRSBHRU5FUkFURUQgQ09ERSBJUyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiwgQU5EICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgIElTIFNVQkpFQ1QgVE8gQ0hBTkdFIFdJVEhPVVQgV0FSTklORyBJTiBGVVRVUkUgUkVMRUFTRVMuICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZS5oIgorCisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBJZlN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlIGlzIHN1YmlkIDMgb2YgaXBUcmFmZmljU3RhdHMuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMsIGxlbmd0aDogOQorICovCit0eXBlZGVmIHN0cnVjdCBpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4X3MgeworCisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKyAgICBuZXRzbm1wX2NhY2hlICAqY2FjaGU7CisKKyAgICBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKnVzZXJfY3R4OworCisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyB0YmxfaW5mbzsKKworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyBhY2Nlc3NfbXVsdGlwbGV4ZXI7CisKKyAgICB1X2xvbmcgbGFzdF9jaGFuZ2VkOworCit9IGlwSWZTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHg7CisKK3N0YXRpYyBpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4IGlwSWZTdGF0c1RhYmxlX2lmX2N0eDsKKworc3RhdGljIHZvaWQgICAgIF9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaWZfY3R4KTsKK3N0YXRpYyB2b2lkICAgIAorX2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KTsKKworCituZXRzbm1wX2NvbnRhaW5lciAqCitpcElmU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCit7CisgICAgcmV0dXJuIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXI7Cit9CisKK2lwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCitpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCit7CisgICAgcmV0dXJuIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eDsKK30KKworaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKK2lwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQoreworICAgIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqb2xkID0gaXBJZlN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4OworICAgIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKKyAgICByZXR1cm4gb2xkOworfQorCitpbnQKK2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCit7CisgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGlwSWZTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIpOworfQorCisvKgorICogaXBJZlN0YXRzVGFibGVMYXN0Q2hhbmdlZCwgd2hpY2ggaXMgdGhlIGxhc3QgdGltZSB0aGF0IGEgcm93IGluCisgKiB0aGUgdGFibGUgd2FzIGNoYW5nZWQgb3IgdGhlIGxhc3QgdGltZSBhIHJvdyB3YXMgYWRkZWQvZGVsZXRlZCBmcm9tIHRoZQorICogdGFibGUuCisgKi8KK3ZvaWQKK2lwSWZTdGF0c1RhYmxlX2xhc3RDaGFuZ2Vfc2V0KHVfbG9uZyB0YWJsZV9jaGFuZ2VkKQoreworICAgIERFQlVHTVNHVEwoKCJpcElmU3RhdHNUYWJsZTpsYXN0Q2hhbmdlZF9zZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWQuIHdhcyAlbGQsIG5vdyAlbGRcbiIsCisgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfaWZfY3R4Lmxhc3RfY2hhbmdlZCwgdGFibGVfY2hhbmdlZCkpOworICAgIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC5sYXN0X2NoYW5nZWQgPSB0YWJsZV9jaGFuZ2VkOworfQorCisvKgorICogbWZkIG11bHRpcGxleGVyIG1vZGVzCisgKi8KK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwSWZTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0Oworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0Oworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBJZlN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwSWZTdGF0c1RhYmxlX2dldF92YWx1ZXM7CisvKioKKyAqIEBpbnRlcm5hbAorICogSW5pdGlhbGl6ZSB0aGUgdGFibGUgaXBJZlN0YXRzVGFibGUgCisgKiAgICAoRGVmaW5lIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCkKKyAqLwordm9pZAorX2lwSWZTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlKGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHJlZ19wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGZsYWdzKQoreworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyAqYWNjZXNzX211bHRpcGxleGVyID0KKyAgICAgICAgJmlwSWZTdGF0c1RhYmxlX2lmX2N0eC5hY2Nlc3NfbXVsdGlwbGV4ZXI7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGJsX2luZm8gPQorICAgICAgICAmaXBJZlN0YXRzVGFibGVfaWZfY3R4LnRibF9pbmZvOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcjsKKyAgICBpbnQgICAgICAgICAgICAgbWZkX21vZGVzID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfaXBJZlN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UiLCAiY2FsbGVkXG4iKSk7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzYXZlIGludGVyZmFjZSBjb250ZXh0IGZvciBpcElmU3RhdHNUYWJsZQorICAgICAqLworICAgIC8qCisgICAgICogU2V0dGluZyB1cCB0aGUgdGFibGUncyBkZWZpbml0aW9uCisgICAgICovCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGJsX2luZm8sIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGlwSWZTdGF0c0lQVmVyc2lvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGlwSWZTdGF0c0lmSW5kZXggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKworICAgIC8qCisgICAgICogRGVmaW5lIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGFjY2Vzc2libGUgY29sdW1ucy4gIFRoaXMKKyAgICAgKiBvcHRpbWl6ZXMgcmV0cml2YWwuIAorICAgICAqLworICAgIHRibF9pbmZvLT5taW5fY29sdW1uID0gSVBJRlNUQVRTVEFCTEVfTUlOX0NPTDsKKyAgICB0YmxfaW5mby0+bWF4X2NvbHVtbiA9IElQSUZTVEFUU1RBQkxFX01BWF9DT0w7CisKKyAgICAvKgorICAgICAqIHNhdmUgdXNlcnMgY29udGV4dAorICAgICAqLworICAgIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCA9IHJlZ19wdHI7CisKKyAgICAvKgorICAgICAqIGNhbGwgZGF0YSBhY2Nlc3MgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIGlwSWZTdGF0c1RhYmxlX2luaXRfZGF0YShyZWdfcHRyKTsKKworICAgIC8qCisgICAgICogc2V0IHVwIHRoZSBjb250YWluZXIKKyAgICAgKi8KKyAgICBfaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2luaXQoJmlwSWZTdGF0c1RhYmxlX2lmX2N0eCk7CisgICAgaWYgKE5VTEwgPT0gaXBJZlN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiY291bGQgbm90IGluaXRpYWxpemUgY29udGFpbmVyIGZvciBpcElmU3RhdHNUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGFjY2Vzc19tdWx0aXBsZXhlcjogUkVRVUlSRUQgd3JhcHBlciBmb3IgZ2V0IHJlcXVlc3QgaGFuZGxpbmcKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXAgPSBfbWZkX2lwSWZTdGF0c1RhYmxlX29iamVjdF9sb29rdXA7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5nZXRfdmFsdWVzID0gX21mZF9pcElmU3RhdHNUYWJsZV9nZXRfdmFsdWVzOworCisgICAgLyoKKyAgICAgKiBubyB3cmFwcGVycyB5ZXQKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0ID0gX21mZF9pcElmU3RhdHNUYWJsZV9wcmVfcmVxdWVzdDsKKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0OworCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogQ3JlYXRlIGEgcmVnaXN0cmF0aW9uLCBzYXZlIG91ciByZWcgZGF0YSwgcmVnaXN0ZXIgdGFibGUuCisgICAgICovCisgICAgREVCVUdNU0dUTCgoImlwSWZTdGF0c1RhYmxlOmluaXRfaXBJZlN0YXRzVGFibGUiLAorICAgICAgICAgICAgICAgICJSZWdpc3RlcmluZyBpcElmU3RhdHNUYWJsZSBhcyBhIG1pYnMtZm9yLWR1bW1pZXMgdGFibGUuXG4iKSk7CisgICAgaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbXVsdGlwbGV4ZXJfZ2V0KGFjY2Vzc19tdWx0aXBsZXhlcik7CisgICAgcmVnaW5mbyA9CisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKCJpcElmU3RhdHNUYWJsZSIsIGhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfb2lkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAoTlVMTCA9PSByZWdpbmZvKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBpcElmU3RhdHNUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVnaW5mby0+bXlfcmVnX3ZvaWQgPSAmaXBJZlN0YXRzVGFibGVfaWZfY3R4OworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIHNldCB1cCBiYWJ5IHN0ZXBzIGhhbmRsZXIsIGNyZWF0ZSBpdCBhbmQgaW5qZWN0IGl0CisgICAgICovCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X2xvb2t1cCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9PQkpFQ1RfTE9PS1VQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0lSUkVWRVJTSUJMRV9DT01NSVQ7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X3N5bnRheF9jaGVja3MpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfT0JKRUNUOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cHJlX3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUFJFX1JFUVVFU1Q7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0dXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NsZWFudXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DTEVBTlVQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0cykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX1NFVFM7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5yb3dfY3JlYXRpb24pCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUk9XX0NSRUFURTsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfQ09OU0lTVEVOQ1k7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKKworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCByb3dfbWVyZ2UgaGVscGVyIHdpdGggcHJlZml4IHJvb3RvaWRfbGVuICsgMiAoZW50cnkuY29sKQorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2dldF9yb3dfbWVyZ2VfaGFuZGxlcihyZWdpbmZvLT5yb290b2lkX2xlbiArIDIpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNvbnRhaW5lcl90YWJsZSBoZWxwZXIKKyAgICAgKi8KKyAgICBoYW5kbGVyID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQodGJsX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNhY2hlIGhlbHBlcgorICAgICAqLworICAgIGlmIChOVUxMICE9IGlwSWZTdGF0c1RhYmxlX2lmX2N0eC5jYWNoZSkgeworICAgICAgICBoYW5kbGVyID0gbmV0c25tcF9jYWNoZV9oYW5kbGVyX2dldChpcElmU3RhdHNUYWJsZV9pZl9jdHguY2FjaGUpOworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworICAgIH0KKworICAgIC8qCisgICAgICogcmVnaXN0ZXIgdGFibGUKKyAgICAgKi8KKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZ2luZm8sIHRibF9pbmZvKTsKKyAgICAKKyAgICAvKgorICAgICAqIHJlZ2lzdGVyIExhc3RDaGFuZ2VkCisgICAgICovCisgICAgeworICAgICAgICBvaWQgICAgIGxjX29pZFtdID0geyBJUElGU1RBVFNUQUJMRUxBU1RDSEFOR0VfT0lEIH07CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAoImlwSWZTdGF0c1RhYmxlTGFzdENoYW5nZWQiLCBOVUxMLAorICAgICAgICAgICAgICAgICBsY19vaWQsIE9JRF9MRU5HVEgobGNfb2lkKSwKKyAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLAorICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygodm9pZAorICAgICAgICAgICAgICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICAgICAgJmlwSWZTdGF0c1RhYmxlX2lmX2N0eC4KKyAgICAgICAgICAgICAgICAgICAgbGFzdF9jaGFuZ2VkLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YKKyAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyksCisgICAgICAgICAgICAgICAgICAgIEFTTl9USU1FVElDS1MsCisgICAgICAgICAgICAgICAgICAgIFdBVENIRVJfRklYRURfU0laRSkpOworICAgIH0KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwSWZTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBTaHV0ZG93biB0aGUgdGFibGUgaXBJZlN0YXRzVGFibGUKKyAqLwordm9pZAorX2lwSWZTdGF0c1RhYmxlX3NodXRkb3duX2ludGVyZmFjZShpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiByZWdfcHRyKQoreworICAgIC8qCisgICAgICogc2h1dGRvd24gdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oJmlwSWZTdGF0c1RhYmxlX2lmX2N0eCk7Cit9CisKK3ZvaWQKK2lwSWZTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8gKnZjKQoreworICAgIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC50YmxfaW5mby52YWxpZF9jb2x1bW5zID0gdmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBjb252ZXJ0IHRoZSBpbmRleCBjb21wb25lbnQgc3RvcmVkIGluIHRoZSBjb250ZXh0IHRvIGFuIG9pZAorICovCitpbnQKK2lwSWZTdGF0c1RhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQoreworICAgIGludCAgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgLyoKKyAgICAgKiB0ZW1wIHN0b3JhZ2UgZm9yIHBhcnNpbmcgaW5kZXhlcworICAgICAqLworICAgIC8qCisgICAgICogaXBJZlN0YXRzSVBWZXJzaW9uKDEpL0luZXRWZXJzaW9uL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9hL3cvRS9yL2QvaAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBJZlN0YXRzSVBWZXJzaW9uOworICAgIC8qCisgICAgICogaXBJZlN0YXRzSWZJbmRleCgyKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9ICisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9pcElmU3RhdHNJZkluZGV4OworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdmFyYmluZHMKKyAgICAgKi8KKyAgICBtZW1zZXQoJnZhcl9pcElmU3RhdHNJUFZlcnNpb24sIDB4MDAsIHNpemVvZih2YXJfaXBJZlN0YXRzSVBWZXJzaW9uKSk7CisgICAgdmFyX2lwSWZTdGF0c0lQVmVyc2lvbi50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgbWVtc2V0KCZ2YXJfaXBJZlN0YXRzSWZJbmRleCwgMHgwMCwgc2l6ZW9mKHZhcl9pcElmU3RhdHNJZkluZGV4KSk7CisgICAgdmFyX2lwSWZTdGF0c0lmSW5kZXgudHlwZSA9IEFTTl9JTlRFR0VSOworCisgICAgLyoKKyAgICAgKiBjaGFpbiB0ZW1wIGluZGV4IHZhcmJpbmRzIHRvZ2V0aGVyCisgICAgICovCisgICAgdmFyX2lwSWZTdGF0c0lQVmVyc2lvbi5uZXh0X3ZhcmlhYmxlID0gJnZhcl9pcElmU3RhdHNJZkluZGV4OworICAgIHZhcl9pcElmU3RhdHNJZkluZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9pbmRleF90b19vaWQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogaXBJZlN0YXRzSVBWZXJzaW9uKDEpL0luZXRWZXJzaW9uL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9hL3cvRS9yL2QvaCAKKyAgICAgKi8KKyAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl9pcElmU3RhdHNJUFZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBtaWJfaWR4LT5pcElmU3RhdHNJUFZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihtaWJfaWR4LT5pcElmU3RhdHNJUFZlcnNpb24pKTsKKworICAgIC8qCisgICAgICogaXBJZlN0YXRzSWZJbmRleCgyKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9IIAorICAgICAqLworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyX2lwSWZTdGF0c0lmSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBtaWJfaWR4LT5pcElmU3RhdHNJZkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXBJZlN0YXRzSWZJbmRleCkpOworCisKKyAgICBlcnIgPSBidWlsZF9vaWRfbm9hbGxvYyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sICZvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnZhcl9pcElmU3RhdHNJUFZlcnNpb24pOworICAgIGlmIChlcnIpCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciAlZCBjb252ZXJ0aW5nIGluZGV4IHRvIG9pZFxuIiwgZXJyKTsKKworICAgIC8qCisgICAgICogcGFyc2luZyBtYXkgaGF2ZSBhbGxvY2F0ZWQgbWVtb3J5LiBmcmVlIGl0LgorICAgICAqLworICAgIHNubXBfcmVzZXRfdmFyX2J1ZmZlcnMoJnZhcl9pcElmU3RhdHNJUFZlcnNpb24pOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfaW5kZXhfdG9fb2lkICovCisKKy8qKgorICogZXh0cmFjdCBpcElmU3RhdHNUYWJsZSBpbmRleGVzIGZyb20gYSBuZXRzbm1wX2luZGV4CisgKgorICogQHJldHZhbCBTTk1QX0VSUl9OT0VSUk9SICA6IG5vIGVycm9yCisgKiBAcmV0dmFsIFNOTVBfRVJSX0dFTkVSUiAgIDogZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgaW50ICAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICAvKgorICAgICAqIHRlbXAgc3RvcmFnZSBmb3IgcGFyc2luZyBpbmRleGVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBpcElmU3RhdHNJUFZlcnNpb24oMSkvSW5ldFZlcnNpb24vQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oCisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9pcElmU3RhdHNJUFZlcnNpb247CisgICAgLyoKKyAgICAgKiBpcElmU3RhdHNJZkluZGV4KDIpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwSWZTdGF0c0lmSW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB2YXJiaW5kcworICAgICAqLworICAgIG1lbXNldCgmdmFyX2lwSWZTdGF0c0lQVmVyc2lvbiwgMHgwMCwgc2l6ZW9mKHZhcl9pcElmU3RhdHNJUFZlcnNpb24pKTsKKyAgICB2YXJfaXBJZlN0YXRzSVBWZXJzaW9uLnR5cGUgPSBBU05fSU5URUdFUjsKKyAgICBtZW1zZXQoJnZhcl9pcElmU3RhdHNJZkluZGV4LCAweDAwLCBzaXplb2YodmFyX2lwSWZTdGF0c0lmSW5kZXgpKTsKKyAgICB2YXJfaXBJZlN0YXRzSWZJbmRleC50eXBlID0gQVNOX0lOVEVHRVI7CisKKyAgICAvKgorICAgICAqIGNoYWluIHRlbXAgaW5kZXggdmFyYmluZHMgdG9nZXRoZXIKKyAgICAgKi8KKyAgICB2YXJfaXBJZlN0YXRzSVBWZXJzaW9uLm5leHRfdmFyaWFibGUgPSAmdmFyX2lwSWZTdGF0c0lmSW5kZXg7CisgICAgdmFyX2lwSWZTdGF0c0lmSW5kZXgubmV4dF92YXJpYWJsZSA9IE5VTEw7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2luZGV4X2Zyb21fb2lkIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIHBhcnNlIHRoZSBvaWQgaW50byB0aGUgaW5kaXZpZHVhbCBpbmRleCBjb21wb25lbnRzCisgICAgICovCisgICAgZXJyID0gcGFyc2Vfb2lkX2luZGV4ZXMob2lkX2lkeC0+b2lkcywgb2lkX2lkeC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YXJfaXBJZlN0YXRzSVBWZXJzaW9uKTsKKyAgICBpZiAoZXJyID09IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY29weSBvdXQgdmFsdWVzCisgICAgICAgICAqLworICAgICAgICBtaWJfaWR4LT5pcElmU3RhdHNJUFZlcnNpb24gPQorICAgICAgICAgICAgKigodV9sb25nICopIHZhcl9pcElmU3RhdHNJUFZlcnNpb24udmFsLnN0cmluZyk7CisgICAgICAgIG1pYl9pZHgtPmlwSWZTdGF0c0lmSW5kZXggPQorICAgICAgICAgICAgKigobG9uZyAqKSB2YXJfaXBJZlN0YXRzSWZJbmRleC52YWwuc3RyaW5nKTsKKworCisgICAgfQorCisgICAgLyoKKyAgICAgKiBwYXJzaW5nIG1heSBoYXZlIGFsbG9jYXRlZCBtZW1vcnkuIGZyZWUgaXQuCisgICAgICovCisgICAgc25tcF9yZXNldF92YXJfYnVmZmVycygmdmFyX2lwSWZTdGF0c0lQVmVyc2lvbik7CisKKyAgICByZXR1cm4gZXJyOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZCAqLworCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBAaW50ZXJuYWwKKyAqIGFsbG9jYXRlIHJlc291cmNlcyBmb3IgYSBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgKi8KK2lwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgoraXBJZlN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChpcElmU3RhdHNUYWJsZV9kYXRhICogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9pbml0X2N0eCkKK3sKKyAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4KTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBhICIKKyAgICAgICAgICAgICAgICAgImlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHguXG4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKE5VTEwgIT0gZGF0YSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHRyYWNrIGlmIHdlIGdvdCBkYXRhIGZyb20gdXNlcgorICAgICAgICAgICAgICovCisgICAgICAgICAgICByb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgfD0gTUZEX1JPV19EQVRBX0ZST01fVVNFUjsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEgPSBkYXRhOworICAgICAgICB9IGVsc2UgaWYgKE5VTEwgPT0KKyAgICAgICAgICAgICAgICAgICAocm93cmVxX2N0eC0+ZGF0YSA9IGlwSWZTdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEoKSkpIHsKKyAgICAgICAgICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiB1bmRvIGNvbnRleHQgd2lsbCBiZSBhbGxvY2F0ZWQgd2hlbiBuZWVkZWQgKGluICpfdW5kb19zZXR1cCkKKyAgICAgKi8KKworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyA9IHJvd3JlcV9jdHgtPm9pZF90bXA7CisKKyAgICByb3dyZXFfY3R4LT5pcElmU3RhdHNUYWJsZV9kYXRhX2xpc3QgPSBOVUxMOworCisgICAgLyoKKyAgICAgKiBpZiB3ZSBhbGxvY2F0ZWQgZGF0YSwgY2FsbCBpbml0IHJvdXRpbmUKKyAgICAgKi8KKyAgICBpZiAoIShyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RBVEFfRlJPTV9VU0VSKSkgeworICAgICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9CisgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQocm93cmVxX2N0eCwgdXNlcl9pbml0X2N0eCkpIHsKKyAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHggPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHggKi8KKworLyoKKyAqIEBpbnRlcm5hbAorICogcmVsZWFzZSByZXNvdXJjZXMgZm9yIGEgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAorICovCit2b2lkCitpcElmU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAocm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIGZvciBub24tdHJhbnNpZW50IGRhdGEsIGRvbid0IGZyZWUgZGF0YSB3ZSBnb3QgZnJvbSB0aGUgdXNlcgorICAgICAqLworICAgIGlmICgocm93cmVxX2N0eC0+ZGF0YSkgJiYKKyAgICAgICAgIShyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RBVEFfRlJPTV9VU0VSKSkKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9kYXRhKHJvd3JlcV9jdHgtPmRhdGEpOworCisgICAgLyoKKyAgICAgKiBmcmVlIGluZGV4IG9pZCBwb2ludGVyCisgICAgICovCisgICAgaWYgKHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyAhPSByb3dyZXFfY3R4LT5vaWRfdG1wKQorICAgICAgICBmcmVlKHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyk7CisKKyAgICBTTk1QX0ZSRUUocm93cmVxX2N0eCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2lwSWZTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfbWZkX2lwSWZTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoMSAhPSBuZXRzbm1wX3Jvd19tZXJnZV9zdGF0dXNfZmlyc3QocmVnaW5mbywgYWd0cmVxX2luZm8pKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICJza2lwcGluZyBhZGRpdGlvbmFsIHByZV9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHJjID0gaXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3QoaXBJZlN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImlwSWZTdGF0c1RhYmxlIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3RcbiIsIHJjKSk7CisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwSWZTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgaW50ICAgICAgICAgICAgIHJjLCBwYWNrZXRfcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBJZlN0YXRzVGFibGU6X21mZF9pcElmU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogcmVsZWFzZSByb3cgY29udGV4dCwgaWYgZGVsZXRlZAorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4ICYmIChyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RFTEVURUQpKQorICAgICAgICBpcElmU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIHdhaXQgZm9yIGxhc3QgY2FsbCBiZWZvcmUgY2FsbGluZyB1c2VyCisgICAgICovCisgICAgaWYgKDEgIT0gbmV0c25tcF9yb3dfbWVyZ2Vfc3RhdHVzX2xhc3QocmVnaW5mbywgYWd0cmVxX2luZm8pKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICJ3YWl0aW5nIGZvciBsYXN0IHBvc3RfcmVxdWVzdFxuIikpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICB9CisKKyAgICBwYWNrZXRfcmMgPSBuZXRzbm1wX2NoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcihhZ3RyZXFfaW5mby0+YXNwLCAwKTsKKyAgICByYyA9IGlwSWZTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdChpcElmU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3JjKTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImlwSWZTdGF0c1RhYmxlIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0XG4iLCByYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwSWZTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2lwSWZTdGF0c1RhYmxlX29iamVjdF9sb29rdXAobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9tZmRfaXBJZlN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogZ2V0IG91ciBjb250ZXh0IGZyb20gbWZkCisgICAgICogaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqaWZfY3R4ID0KKyAgICAgKiAgICAgICAgICAgICAoaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqKXJlZ2luZm8tPm15X3JlZ192b2lkOworICAgICAqLworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICByYyA9IFNOTVBfRVJSX05PQ1JFQVRJT047CisgICAgfQorCisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgcmMpOworICAgIGVsc2UKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfcm93X3ByZXAocm93cmVxX2N0eCk7CisKKyAgICByZXR1cm4gU05NUF9WQUxJREFURV9FUlIocmMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwSWZTdGF0c1RhYmxlX29iamVjdF9sb29rdXAgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogR0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogQGludGVybmFsCisgKiBSZXRyaWV2ZSB0aGUgdmFsdWUgZm9yIGEgcGFydGljdWxhciBjb2x1bW4KKyAqLworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2lwSWZTdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsIGludCBjb2x1bW4pCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gU05NUEVSUl9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9tZmRfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsCisgICAgICAgICAgICAgICAgImNhbGxlZCBmb3IgJWRcbiIsIGNvbHVtbikpOworCisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgc3dpdGNoIChjb2x1bW4pIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJblJlY2VpdmVzKDMpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOUkVDRUlWRVM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJblJlY2VpdmVzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENJblJlY2VpdmVzKDQpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lOUkVDRUlWRVM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDSW5SZWNlaXZlc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5PY3RldHMoNSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSU5PQ1RFVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbk9jdGV0c19nZXQocm93cmVxX2N0eCwgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ0luT2N0ZXRzKDYpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lOT0NURVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luT2N0ZXRzX2dldChyb3dyZXFfY3R4LCAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luSGRyRXJyb3JzKDcpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOSERSRVJST1JTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5IZHJFcnJvcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5Ob1JvdXRlcyg4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTk5PUk9VVEVTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5Ob1JvdXRlc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luQWRkckVycm9ycyg5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTkFERFJFUlJPUlM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbkFkZHJFcnJvcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luVW5rbm93blByb3RvcygxMCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSU5VTktOT1dOUFJPVE9TOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJblRydW5jYXRlZFBrdHMoMTEpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOVFJVTkNBVEVEUEtUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zKDEyKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTkZPUldEQVRBR1JBTVM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zKDEzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTkZPUldEQVRBR1JBTVM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c1JlYXNtUmVxZHMoMTQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU1JFQVNNUkVRRFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNSZWFzbVJlcWRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzUmVhc21PS3MoMTUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU1JFQVNNT0tTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzUmVhc21PS3NfZ2V0KHJvd3JlcV9jdHgsICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzUmVhc21GYWlscygxNikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTUkVBU01GQUlMUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c1JlYXNtRmFpbHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJbkRpc2NhcmRzKDE3KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTkRJU0NBUkRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5EaXNjYXJkc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luRGVsaXZlcnMoMTgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOREVMSVZFUlM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbkRlbGl2ZXJzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENJbkRlbGl2ZXJzKDE5KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTkRFTElWRVJTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dFJlcXVlc3RzKDIwKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNPVVRSRVFVRVNUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dFJlcXVlc3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHMoMjEpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVFJFUVVFU1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dFJlcXVlc3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtcygyMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTT1VURk9SV0RBVEFHUkFNUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXMoMjQpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVEZPUldEQVRBR1JBTVM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0RGlzY2FyZHMoMjUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVERJU0NBUkRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0RGlzY2FyZHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0RnJhZ1JlcWRzKDI2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNPVVRGUkFHUkVRRFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNPdXRGcmFnUmVxZHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dEZyYWdPS3MoMjcpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVEZSQUdPS1M6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNPdXRGcmFnT0tzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzKDI4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNPVVRGUkFHRkFJTFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNPdXRGcmFnRmFpbHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dEZyYWdDcmVhdGVzKDI5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNPVVRGUkFHQ1JFQVRFUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dEZyYWdDcmVhdGVzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dFRyYW5zbWl0cygzMCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTT1VUVFJBTlNNSVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0VHJhbnNtaXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ091dFRyYW5zbWl0cygzMSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUVFJBTlNNSVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dFRyYW5zbWl0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNPdXRPY3RldHMoMzIpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVE9DVEVUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dE9jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENPdXRPY3RldHMoMzMpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVE9DVEVUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRPY3RldHNfZ2V0KHJvd3JlcV9jdHgsIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5NY2FzdFBrdHMoMzQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOTUNBU1RQS1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5NY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENJbk1jYXN0UGt0cygzNSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDSU5NQ0FTVFBLVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzKDM2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTk1DQVNUT0NURVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5NY2FzdE9jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0cygzNykvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDSU5NQ0FTVE9DVEVUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNPdXRNY2FzdFBrdHMoMzgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVE1DQVNUUEtUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dE1jYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENPdXRNY2FzdFBrdHMoMzkpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVE1DQVNUUEtUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0TWNhc3RPY3RldHMoNDApL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVE1DQVNUT0NURVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0cyg0MSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUTUNBU1RPQ1RFVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJbkJjYXN0UGt0cyg0MikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSU5CQ0FTVFBLVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbkJjYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ0luQmNhc3RQa3RzKDQzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTkJDQVNUUEtUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENJbkJjYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dEJjYXN0UGt0cyg0NCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTT1VUQkNBU1RQS1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0QmNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ091dEJjYXN0UGt0cyg0NSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUQkNBU1RQS1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dEJjYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZSg0NikvVGltZVN0YW1wL0FTTl9USU1FVElDS1MvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0RJU0NPTlRJTlVJVFlUSU1FOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1RJTUVUSUNLUzsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNSZWZyZXNoUmF0ZSg0NykvVU5TSUdORUQzMi9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU1JFRlJFU0hSQVRFOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwSWZTdGF0c1JlZnJlc2hSYXRlX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKElQSUZTVEFUU1RBQkxFX01JTl9DT0wgPD0gY29sdW1uCisgICAgICAgICAgICAmJiBjb2x1bW4gPD0gSVBJRlNUQVRTVEFCTEVfTUFYX0NPTCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9tZmRfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJhc3N1bWUgY29sdW1uICVkIGlzIHJlc2VydmVkXG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJjID0gTUZEX1NLSVA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgInVua25vd24gY29sdW1uICVkIGluIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uXG4iLAorICAgICAgICAgICAgICAgICAgICAgY29sdW1uKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uICovCisKK2ludAorX21mZF9pcElmU3RhdHNUYWJsZV9nZXRfdmFsdWVzKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICB1X2NoYXIgICAgICAgICAqb2xkX3N0cmluZzsKKyAgICB2b2lkICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spICh2b2lkICopOworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfbWZkX2lwSWZTdGF0c1RhYmxlX2dldF92YWx1ZXMiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBmb3IgKDsgcmVxdWVzdHM7IHJlcXVlc3RzID0gcmVxdWVzdHMtPm5leHQpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogc2F2ZSBvbGQgcG9pbnRlciwgc28gd2UgY2FuIGZyZWUgaXQgaWYgcmVwbGFjZWQKKyAgICAgICAgICovCisgICAgICAgIG9sZF9zdHJpbmcgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nOworICAgICAgICBkYXRhRnJlZUhvb2sgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5kYXRhRnJlZUhvb2s7CisgICAgICAgIGlmIChOVUxMID09IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWY7CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuID0KKyAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKTsKKyAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYgPT0KKyAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiAhPQorICAgICAgICAgICAgICAgIHNpemVvZihyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpKQorICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gPQorICAgICAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIGdldCBjb2x1bW4gZGF0YQorICAgICAgICAgKi8KKyAgICAgICAgdHJpID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdHMpOworICAgICAgICBpZiAoTlVMTCA9PSB0cmkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByYyA9IF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKHJvd3JlcV9jdHgsIHJlcXVlc3RzLT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIGlmIChNRkRfU0tJUCA9PSByYykgeworICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgPSBTTk1QX05PU1VDSElOU1RBTkNFOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChOVUxMID09IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJOVUxMIHZhcmJpbmQgZGF0YSBwb2ludGVyIVxuIik7CisgICAgICAgICAgICByYyA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICBpZiAocmMpCisgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlmIHRoZSBidWZmZXIgd2Fzbid0IHVzZWQgcHJldmlvdXNseSBmb3IgdGhlIG9sZCBkYXRhIChpLmUuIGl0CisgICAgICAgICAqIHdhcyBhbGxjb2F0ZWQgbWVtb3J5KSAgYW5kIHRoZSBnZXQgcm91dGluZSByZXBsYWNlZCB0aGUgcG9pbnRlciwKKyAgICAgICAgICogd2UgbmVlZCB0byBmcmVlIHRoZSBwcmV2aW91cyBwb2ludGVyLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKG9sZF9zdHJpbmcgJiYgKG9sZF9zdHJpbmcgIT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSAmJgorICAgICAgICAgICAgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcgIT0gb2xkX3N0cmluZykpIHsKKyAgICAgICAgICAgIGlmIChkYXRhRnJlZUhvb2spCisgICAgICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spIChvbGRfc3RyaW5nKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmVlKG9sZF9zdHJpbmcpOworICAgICAgICB9CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcElmU3RhdHNUYWJsZV9nZXRfdmFsdWVzICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogU0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBTRVQgUFJPQ0VTU0lORyBOT1QgQVBQTElDQUJMRSAocGVyIE1JQiBvciB1c2VyIHNldHRpbmcpCisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIERBVEEgQUNDRVNTCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgICAgIF9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcik7CisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyBpbnQKK19jYWNoZV9sb2FkKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqdm1hZ2ljKQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfY2FjaGVfbG9hZCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjYWNoZSBmb3IgaXBJZlN0YXRzVGFibGVfY2FjaGVfbG9hZFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiogc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZvciBhbiBpbnZhbGlkIG9yIGV4cGlyZWQgY2FjaGUgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoMCA9PSBjYWNoZS0+dmFsaWQpIHx8ICgxID09IGNhY2hlLT5leHBpcmVkKSk7CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgcmV0dXJuIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKChuZXRzbm1wX2NvbnRhaW5lciAqKSBjYWNoZS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ2ljKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2xvYWQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19jYWNoZV9mcmVlKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqbWFnaWMpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfY2FjaGVfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjYWNoZSBpbiBpcElmU3RhdHNUYWJsZV9jYWNoZV9mcmVlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRhaW5lciA9IChuZXRzbm1wX2NvbnRhaW5lciAqKSBjYWNoZS0+bWFnaWM7CisKKyAgICBfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19jb250YWluZXJfaXRlbV9mcmVlKGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LCB2b2lkICpjb250ZXh0KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfY29udGFpbmVyX2l0ZW1fZnJlZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY29udGFpbmVyX2l0ZW1fZnJlZSAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfY29udGFpbmVyX2ZyZWUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY29udGFpbmVyIGluIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogY2FsbCB1c2VyIGNvZGUKKyAgICAgKi8KKyAgICBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZShjb250YWluZXIpOworCisgICAgLyoKKyAgICAgKiBmcmVlIGFsbCBpdGVtcy4gaW5lZmZpY2llbnQsIGJ1dCBlYXN5LgorICAgICAqLworICAgIENPTlRBSU5FUl9DTEVBUihjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfY29udGFpbmVyX2l0ZW1fZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jb250YWluZXJfZnJlZSAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogaW5pdGlhbGl6ZSB0aGUgY29udGFpbmVyIHdpdGggZnVuY3Rpb25zIG9yIHdyYXBwZXJzCisgKi8KK3ZvaWQKK19pcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2luaXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogY2FjaGUgaW5pdAorICAgICAqLworICAgIGlmX2N0eC0+Y2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAgLyogdGltZW91dCBpbiBzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZV9sb2FkLCBfY2FjaGVfZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9vaWRfc2l6ZSk7CisKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNhY2hlKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBmb3IgaXBJZlN0YXRzVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWZfY3R4LT5jYWNoZS0+ZmxhZ3MgPSBORVRTTk1QX0NBQ0hFX0RPTlRfSU5WQUxJREFURV9PTl9TRVQ7CisKKyAgICBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCgmaWZfY3R4LT5jb250YWluZXIsIGlmX2N0eC0+Y2FjaGUpOworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKQorICAgICAgICBpZl9jdHgtPmNvbnRhaW5lciA9CisgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJpcElmU3RhdHNUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY29udGFpbmVyIGluICIKKyAgICAgICAgICAgICAgICAgImlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChOVUxMICE9IGlmX2N0eC0+Y2FjaGUpCisgICAgICAgIGlmX2N0eC0+Y2FjaGUtPm1hZ2ljID0gKHZvaWQgKikgaWZfY3R4LT5jb250YWluZXI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogc2h1dGRvd24gdGhlIGNvbnRhaW5lciB3aXRoIGZ1bmN0aW9ucyBvciB3cmFwcGVycworICovCit2b2lkCitfaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlwSWZTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24iLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaWZfY3R4LT5jb250YWluZXIpOworCisgICAgX2NvbnRhaW5lcl9mcmVlKGlmX2N0eC0+Y29udGFpbmVyKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCisKKworaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCitpcElmU3RhdHNUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaXBJZlN0YXRzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKK3sKKyAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OworICAgIG9pZCAgICAgICAgICAgICBvaWRfdG1wW01BWF9PSURfTEVOXTsKKyAgICBuZXRzbm1wX2luZGV4ICAgb2lkX2lkeDsKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICAvKgorICAgICAqIHNldCB1cCBzdG9yYWdlIGZvciBPSUQKKyAgICAgKi8KKyAgICBvaWRfaWR4Lm9pZHMgPSBvaWRfdG1wOworICAgIG9pZF9pZHgubGVuID0gc2l6ZW9mKG9pZF90bXApIC8gc2l6ZW9mKG9pZCk7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQKKyAgICAgKi8KKyAgICByYyA9IGlwSWZTdGF0c1RhYmxlX2luZGV4X3RvX29pZCgmb2lkX2lkeCwgbWliX2lkeCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJvd3JlcV9jdHggPSBDT05UQUlORVJfRklORChpcElmU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyLCAmb2lkX2lkeCk7CisKKyAgICByZXR1cm4gcm93cmVxX2N0eDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDNkZTg0Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE1ODk5ICQgb2YgJAorICoKKyAqICRJZDokCisgKi8KKy8qKiBAaW5ncm91cCBpbnRlcmZhY2U6IFJvdXRpbmVzIHRvIGludGVyZmFjZSB0byBOZXQtU05NUAorICoKKyAqIFx3YXJuaW5nIFRoaXMgY29kZSBzaG91bGQgbm90IGJlIG1vZGlmaWVkLCBjYWxsZWQgZGlyZWN0bHksCisgKiAgICAgICAgICBvciB1c2VkIHRvIGludGVycHJldCBmdW5jdGlvbmFsaXR5LiBJdCBpcyBzdWJqZWN0IHRvCisgKiAgICAgICAgICBjaGFuZ2UgYXQgYW55IHRpbWUuCisgKiAKKyAqIEB7CisgKi8KKy8qCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSElTIEZJTEUgRE9FUyBOT1QgQ09OVEFJTiBBTlkgVVNFUiBFRElUQUJMRSBDT0RFLiAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSEUgR0VORVJBVEVEIENPREUgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04sIEFORCAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICBJUyBTVUJKRUNUIFRPIENIQU5HRSBXSVRIT1VUIFdBUk5JTkcgSU4gRlVUVVJFIFJFTEVBU0VTLiAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2lmbmRlZiBJUElGU1RBVFNUQUJMRV9JTlRFUkZBQ0VfSAorI2RlZmluZSBJUElGU1RBVFNUQUJMRV9JTlRFUkZBQ0VfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworI2luY2x1ZGUgImlwSWZTdGF0c1RhYmxlLmgiCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqIFBVQkxJQyBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZSAKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgX2lwSWZTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlKGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCwgdV9sb25nIGZsYWdzKTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgX2lwSWZTdGF0c1RhYmxlX3NodXRkb3duX2ludGVyZmFjZShpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY3R4KTsKKworICAgIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKTsKKworICAgIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAqaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX3NldChpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpOworCisgICAgbmV0c25tcF9jb250YWluZXIgKmlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCk7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpOworCisgICAgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAqaXBJZlN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChpcElmU3RhdHNUYWJsZV9kYXRhICosIHZvaWQgKik7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfaW5kZXhfZnJvbV9vaWQobmV0c25tcF9pbmRleCAqIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOworCisgICAgLyoKKyAgICAgKiBhY2Nlc3MgdG8gY2VydGFpbiBpbnRlcm5hbHMuIHVzZSB3aXRoIGNhdXRpb24hCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZjKTsKKworICAgIC8qCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2xhc3RDaGFuZ2Vfc2V0KHVfbG9uZyB1cHRpbWUpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQSUZTVEFUU1RBQkxFX0lOVEVSRkFDRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9vaWRzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfb2lkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NjA3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfb2lkcy5oCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICA6IGdlbmVyaWMtdGFibGUtb2lkcy5tMmMgMTI4NTUgMjAwNS0wOS0yNyAxNTo1NjowOFogcnN0b3J5ICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIElQSUZTVEFUU1RBQkxFX09JRFNfSAorI2RlZmluZSBJUElGU1RBVFNUQUJMRV9PSURTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKgorICAgICAqIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGlwSWZTdGF0c1RhYmxlIAorICAgICAqLworI2RlZmluZSBJUElGU1RBVFNUQUJMRV9PSUQgICAgICAgICAgICAgIDEsMyw2LDEsMiwxLDQsMzEsMworI2RlZmluZSBJUElGU1RBVFNUQUJMRUxBU1RDSEFOR0VfT0lEICAgIDEsMyw2LDEsMiwxLDQsMzEsMgorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNJUFZFUlNJT04gICAgICAgICAxCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lGSU5ERVggICAgICAgICAyCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOUkVDRUlWRVMgICAgICAgICAzCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDSU5SRUNFSVZFUyAgICAgICAgIDQKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSU5PQ1RFVFMgICAgICAgICA1CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDSU5PQ1RFVFMgICAgICAgICA2CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOSERSRVJST1JTICAgICAgICAgNworCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNJTk5PUk9VVEVTICAgICAgICAgOAorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNJTkFERFJFUlJPUlMgICAgICAgICA5CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOVU5LTk9XTlBST1RPUyAgICAgICAgIDEwCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOVFJVTkNBVEVEUEtUUyAgICAgICAgIDExCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lORk9SV0RBVEFHUkFNUyAgICAgICAgIDEyCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDSU5GT1JXREFUQUdSQU1TICAgICAgICAgMTMKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTUkVBU01SRVFEUyAgICAgICAgIDE0CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU1JFQVNNT0tTICAgICAgICAgMTUKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTUkVBU01GQUlMUyAgICAgICAgIDE2CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lORElTQ0FSRFMgICAgICAgICAxNworCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNJTkRFTElWRVJTICAgICAgICAgMTgKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENJTkRFTElWRVJTICAgICAgICAgMTkKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VUUkVRVUVTVFMgICAgICAgICAyMAorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ09VVFJFUVVFU1RTICAgICAgICAgMjEKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VURk9SV0RBVEFHUkFNUyAgICAgICAgIDIzCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDT1VURk9SV0RBVEFHUkFNUyAgICAgICAgIDI0CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVERJU0NBUkRTICAgICAgICAgMjUKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VURlJBR1JFUURTICAgICAgICAgMjYKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VURlJBR09LUyAgICAgICAgIDI3CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVEZSQUdGQUlMUyAgICAgICAgIDI4CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVEZSQUdDUkVBVEVTICAgICAgICAgMjkKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VUVFJBTlNNSVRTICAgICAgICAgMzAKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRUUkFOU01JVFMgICAgICAgICAzMQorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNPVVRPQ1RFVFMgICAgICAgICAzMgorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ09VVE9DVEVUUyAgICAgICAgIDMzCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOTUNBU1RQS1RTICAgICAgICAgMzQKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENJTk1DQVNUUEtUUyAgICAgICAgIDM1CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOTUNBU1RPQ1RFVFMgICAgICAgICAzNgorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ0lOTUNBU1RPQ1RFVFMgICAgICAgICAzNworCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNPVVRNQ0FTVFBLVFMgICAgICAgICAzOAorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ09VVE1DQVNUUEtUUyAgICAgICAgIDM5CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVE1DQVNUT0NURVRTICAgICAgICAgNDAKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRNQ0FTVE9DVEVUUyAgICAgICAgIDQxCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOQkNBU1RQS1RTICAgICAgICAgNDIKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENJTkJDQVNUUEtUUyAgICAgICAgIDQzCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVEJDQVNUUEtUUyAgICAgICAgIDQ0CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDT1VUQkNBU1RQS1RTICAgICAgICAgNDUKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTRElTQ09OVElOVUlUWVRJTUUgICAgICAgICA0NgorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNSRUZSRVNIUkFURSAgICAgICAgIDQ3CisKKworI2RlZmluZSBJUElGU1RBVFNUQUJMRV9NSU5fQ09MICAgQ09MVU1OX0lQSUZTVEFUU0lOUkVDRUlWRVMKKyNkZWZpbmUgSVBJRlNUQVRTVEFCTEVfTUFYX0NPTCAgIENPTFVNTl9JUElGU1RBVFNSRUZSRVNIUkFURQorCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBJRlNUQVRTVEFCTEVfT0lEU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYwppbmRleCBjODY1NjA3Li4xMDU4N2UyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgImlwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9vaWRbXSA9IHsgSVBTWVNURU1TVEFUU1RBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX29pZFtdID0geyBJUFNZU1RFTVNUQVRTVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoaXBTeXN0ZW1TdGF0c1RhYmxlX29pZCk7CiAKIGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gaXBTeXN0ZW1TdGF0c1RhYmxlX3VzZXJfY29udGV4dDsKQEAgLTE2Myw2ICsxNjMsOCBAQAogICAgIC8qCiAgICAgICogVE9ETzoyMTE6bzogfC0+IFBlcmZvcm0gZXh0cmEgaXBTeXN0ZW1TdGF0c1RhYmxlIHJvd3JlcSBjbGVhbnVwLgogICAgICAqLworICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUocm93cmVxX2N0eC0+ZGF0YSk7CisgICAgcm93cmVxX2N0eC0+ZGF0YSA9IE5VTEw7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAgKi8KIAogLyoqCkBAIC0zOTAsMTEgKzM5MiwxNCBAQAogICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKIAogICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7Ci0KKyAgICAKICAgICAvKgogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzSW5SZWNlaXZlcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luUmVjZWl2ZXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0luUmVjZWl2ZXNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93OwogCkBAIC00NTYsNiArNDYxLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENJblJlY2VpdmVzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOUkVDRUlWRVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJblJlY2VpdmVzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cikuaGlnaCA9CkBAIC01MjAsNiArNTI4LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luT2N0ZXRzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5PY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5PQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbk9jdGV0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5PY3RldHMubG93OwogCkBAIC01NzcsNiArNTg4LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENJbk9jdGV0cyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENJbk9jdGV0c192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENJbk9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENJbk9jdGV0c192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luT2N0ZXRzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtNjQ0LDYgKzY1OCw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNJbkhkckVycm9ycyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luSGRyRXJyb3JzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkhEUkVSUk9SU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0luSGRyRXJyb3JzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5IZHJFcnJvcnM7CiAKQEAgLTcwNSw4ICs3MjIsMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luTm9Sb3V0ZXMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNJbk5vUm91dGVzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTk9ST1VURVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbk5vUm91dGVzX3ZhbF9wdHIpID0KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5Ob1JvdXRlczsKKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk5vUm91dGVzLmxvdzsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c0luTm9Sb3V0ZXNfZ2V0ICovCkBAIC03NzIsNiArNzkyLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luQWRkckVycm9ycyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luQWRkckVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5BRERSRVJST1JTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5BZGRyRXJyb3JzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5BZGRyRXJyb3JzOwogCkBAIC04NDMsNiArODY2LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luVW5rbm93blByb3RvcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luVW5rbm93blByb3Rvc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5VTktOT1dOUFJPVE9TXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5Vbmtub3duUHJvdG9zX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5Vbmtub3duUHJvdG9zOwogCkBAIC05MDUsNiArOTMxLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luVHJ1bmNhdGVkUGt0cyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luVHJ1bmNhdGVkUGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5UUlVOQ0FURURQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5UcnVuY2F0ZWRQa3RzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5UcnVuY2F0ZWRQa3RzOwogCkBAIC05NzYsNiArMTAwNSw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNJbkZvcndEYXRhZ3JhbXMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5GT1JXREFUQUdSQU1TXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkZvcndEYXRhZ3JhbXMubG93OwogCkBAIC0xMDM2LDYgKzEwNjgsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ0luRm9yd0RhdGFncmFtcyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5GT1JXREFUQUdSQU1TXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkZvcndEYXRhZ3JhbXMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtMTEwNSw2ICsxMTQwLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c1JlYXNtUmVxZHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTVJFUURTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzUmVhc21SZXFkc192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLlJlYXNtUmVxZHM7CiAKQEAgLTExNzUsNiArMTIxMyw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNSZWFzbU9LcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c1JlYXNtT0tzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c1JlYXNtT0tzX3ZhbF9wdHIpID0gcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuUmVhc21PS3M7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CkBAIC0xMjQ1LDYgKzEyODYsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzUmVhc21GYWlscyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c1JlYXNtRmFpbHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNRkFJTFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNSZWFzbUZhaWxzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuUmVhc21GYWlsczsKIApAQCAtMTMwOSw2ICsxMzUzLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luRGlzY2FyZHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNJbkRpc2NhcmRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkRJU0NBUkRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5EaXNjYXJkc192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkluRGlzY2FyZHM7CiAKQEAgLTEzNzYsNiArMTQyMyw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNJbkRlbGl2ZXJzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5EZWxpdmVyc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5EZWxpdmVyc192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5EZWxpdmVycy5sb3c7CiAKQEAgLTE0MzMsNiArMTQ4Myw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBTeXN0ZW1TdGF0c0hDSW5EZWxpdmVycyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5EZWxpdmVycy5sb3c7CiAgICAgKCppcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtMTQ5OCw2ICsxNTUxLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dFJlcXVlc3RzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXRSZXF1ZXN0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93OwogCkBAIC0xNTU1LDYgKzE2MTEsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikuaGlnaCA9CkBAIC0xNjE5LDggKzE2NzgsMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dE5vUm91dGVzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0Tm9Sb3V0ZXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXROb1JvdXRlc192YWxfcHRyKSA9Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLk91dE5vUm91dGVzOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE5vUm91dGVzLmxvdzsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c091dE5vUm91dGVzX2dldCAqLwpAQCAtMTY5NCw2ICsxNzU2LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dEZvcndEYXRhZ3JhbXMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdzsKIApAQCAtMTc1NCw2ICsxODE5LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENPdXRGb3J3RGF0YWdyYW1zIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cikuaGlnaCA9CkBAIC0xODIxLDggKzE4ODksMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dERpc2NhcmRzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0RGlzY2FyZHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXREaXNjYXJkc192YWxfcHRyKSA9Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLk91dERpc2NhcmRzOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dERpc2NhcmRzLmxvdzsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c091dERpc2NhcmRzX2dldCAqLwpAQCAtMTg5MCw4ICsxOTYxLDExIEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNPdXRGcmFnUmVxZHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRGcmFnUmVxZHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR1JFUURTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzT3V0RnJhZ1JlcWRzX3ZhbF9wdHIpID0KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuT3V0RnJhZ1JlcWRzOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZyYWdSZXFkcy5sb3c7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwU3lzdGVtU3RhdHNPdXRGcmFnUmVxZHNfZ2V0ICovCkBAIC0xOTU2LDkgKzIwMzAsMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dEZyYWdPS3MgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRGcmFnT0tzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KLSAgICBzbm1wX2xvZyhMT0dfRVJSLAotICAgICAgICAgICAgICJpcFN5c3RlbVN0YXRzVGFibGUgbm9kZSBpcFN5c3RlbVN0YXRzT3V0RnJhZ09LcyBub3QgaW1wbGVtZW50ZWQ6IHNraXBwaW5nXG4iKTsKLSAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHT0tTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcFN5c3RlbVN0YXRzT3V0RnJhZ09Lc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RnJhZ09Lcy5sb3c7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwU3lzdGVtU3RhdHNPdXRGcmFnT0tzX2dldCAqLwpAQCAtMjAyNiw4ICsyMTAyLDExIEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNPdXRGcmFnRmFpbHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRGcmFnRmFpbHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzT3V0RnJhZ0ZhaWxzX3ZhbF9wdHIpID0KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuT3V0RnJhZ0ZhaWxzOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZyYWdGYWlscy5sb3c7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwU3lzdGVtU3RhdHNPdXRGcmFnRmFpbHNfZ2V0ICovCkBAIC0yMDkyLDggKzIxNzEsMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dEZyYWdDcmVhdGVzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0RnJhZ0NyZWF0ZXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0NSRUFURVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyKSA9Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLk91dEZyYWdDcmVhdGVzOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmxvdzsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c091dEZyYWdDcmVhdGVzX2dldCAqLwpAQCAtMjE1NSw2ICsyMjM3LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dFRyYW5zbWl0cyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c091dFRyYW5zbWl0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRUUkFOU01JVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXRUcmFuc21pdHNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFRyYW5zbWl0cy5sb3c7CiAKQEAgLTIyMTIsNiArMjI5Nyw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBTeXN0ZW1TdGF0c0hDT3V0VHJhbnNtaXRzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRUUkFOU01JVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFRyYW5zbWl0cy5sb3c7CiAgICAgKCppcFN5c3RlbVN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0cikuaGlnaCA9CkBAIC0yMjc2LDYgKzIzNjQsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0T2N0ZXRzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0T2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dE9jdGV0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdzsKIApAQCAtMjMzMyw2ICsyNDI0LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENPdXRPY3RldHMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ091dE9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dE9jdGV0c192YWxfcHRyKS5oaWdoID0KQEAgLTIzOTUsNiArMjQ4OSw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNJbk1jYXN0UGt0cyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RQa3RzLmxvdzsKIApAQCAtMjQ1MSw2ICsyNTQ4LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENJbk1jYXN0UGt0cyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RQa3RzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtMjUxNCw2ICsyNjE0LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luTWNhc3RPY3RldHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmxvdzsKIApAQCAtMjU3Miw2ICsyNjc1LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikuaGlnaCA9CkBAIC0yNjM0LDYgKzI3NDAsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0TWNhc3RQa3RzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0TWNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dE1jYXN0UGt0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmxvdzsKIApAQCAtMjY5MCw2ICsyNzk5LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdFBrdHMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyKS5oaWdoID0KQEAgLTI3NTQsNiArMjg2Niw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNPdXRNY2FzdE9jdGV0cyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmxvdzsKIApAQCAtMjgxNiw2ICsyOTMxLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0cyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtMjg3OCw2ICsyOTk2LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luQmNhc3RQa3RzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5CY2FzdFBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5CQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5CY2FzdFBrdHMubG93OwogCkBAIC0yOTM0LDYgKzMwNTUsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5CQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5CY2FzdFBrdHMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cikuaGlnaCA9CkBAIC0yOTk2LDYgKzMxMjAsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0QmNhc3RQa3RzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0QmNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEJDQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dEJjYXN0UGt0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmxvdzsKIApAQCAtMzA1Miw2ICszMTc5LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENPdXRCY2FzdFBrdHMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEJDQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKS5oaWdoID0KQEAgLTMxMTYsNiArMzI0Niw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNEaXNjb250aW51aXR5VGltZSBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+aXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lOwogCkBAIC0zMTcyLDYgKzMzMDUsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzUmVmcmVzaFJhdGUgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVGUkVTSFJBVEVdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKaW5kZXggOWFhMDE2ZC4uY2ExZTFmMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oCkBAIC0yMzQsOCArMjM0LDggQEAKICAgICAgICAgKiBpcFN5c3RlbVN0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CiAgICAgICAgIChpcFN5c3RlbVN0YXRzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfb2lkX3NpemU7CisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJpcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCBiNjMzMjliLi5hOTAyN2FlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTE5LDcgKzE5LDcgQEAKIAogI2luY2x1ZGUgImlwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oIgogCi1zdGF0aWMgaW50ICAgICAgaXBzc19jYWNoZV9yZWZyZXNoID0gMzA7CitzdGF0aWMgaW50ICAgICAgaXBzc19jYWNoZV9yZWZyZXNoID0gSVBTWVNURU1TVEFUU1RBQkxFX0NBQ0hFX1RJTUVPVVQ7CiAKIC8qKiBAaW5ncm91cCBpbnRlcmZhY2UgCiAgKiBAYWRkdG9ncm91cCBkYXRhX2FjY2VzcyBkYXRhX2FjY2VzczogUm91dGluZXMgdG8gYWNjZXNzIGRhdGEKQEAgLTU4LDYxICs1OCwxMCBAQAogaXBTeXN0ZW1TdGF0c1RhYmxlX2luaXRfZGF0YShpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX3JlZykKIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IG15X2NvbHVtbnNbXSA9IHsKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNJTlJFQ0VJVkVTLCBDT0xVTU5fSVBTWVNURU1TVEFUU0hDSU5SRUNFSVZFUywKLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSU5PQ1RFVFMsICovCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTk9DVEVUUywKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNJTkhEUkVSUk9SUywKLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSU5OT1JPVVRFUywgKi8KLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNJTkFERFJFUlJPUlMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSU5VTktOT1dOUFJPVE9TLAotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNJTlRSVU5DQVRFRFBLVFMsICovCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSU5GT1JXREFUQUdSQU1TLAotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU0hDSU5GT1JXREFUQUdSQU1TLAotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU1JFQVNNUkVRRFMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTUkVBU01PS1MsIENPTFVNTl9JUFNZU1RFTVNUQVRTUkVBU01GQUlMUywKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNJTkRJU0NBUkRTLCBDT0xVTU5fSVBTWVNURU1TVEFUU0lOREVMSVZFUlMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTkRFTElWRVJTLCBDT0xVTU5fSVBTWVNURU1TVEFUU09VVFJFUVVFU1RTLAotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU0hDT1VUUkVRVUVTVFMsIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VUTk9ST1VURVMsCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU09VVEZPUldEQVRBR1JBTVMsICovCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRGT1JXREFUQUdSQU1TLAotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU09VVERJU0NBUkRTLAotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNPVVRGUkFHUkVRRFMsICovCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VURlJBR09LUywgQ09MVU1OX0lQU1lTVEVNU1RBVFNPVVRGUkFHRkFJTFMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VURlJBR0NSRUFURVMsCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU09VVFRSQU5TTUlUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRUUkFOU01JVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU09VVE9DVEVUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRPQ1RFVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU0lOTUNBU1RQS1RTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lOTUNBU1RQS1RTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNJTk1DQVNUT0NURVRTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lOTUNBU1RPQ1RFVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU09VVE1DQVNUUEtUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRNQ0FTVFBLVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU09VVE1DQVNUT0NURVRTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVE1DQVNUT0NURVRTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNJTkJDQVNUUEtUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTkJDQVNUUEtUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VUQkNBU1RQS1RTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVEJDQVNUUEtUUywgKi8KLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNESVNDT05USU5VSVRZVElNRSwKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNSRUZSRVNIUkFURQotICAgIH07Ci0gICAgc3RhdGljIG5ldHNubXBfY29sdW1uX2luZm8gdmFsaWRfY29sdW1uczsKLQotICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwU3lzdGVtU3RhdHNUYWJsZTppcFN5c3RlbVN0YXRzVGFibGVfaW5pdF9kYXRhIiwKKyAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwU3lzdGVtU3RhdHNUYWJsZTppcFN5c3RlbVN0YXRzVGFibGVfaW5pdF9kYXRhIiwKICAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CiAKICAgICAvKgotICAgICAqIHdlIG9ubHkgd2FudCB0byBwcm9jZXNzIGNlcnRhaW4gY29sdW1ucywgYW5kIGlnbm9yZQotICAgICAqIGFueXRoaW5nIGVsc2UuCi0gICAgICovCi0gICAgdmFsaWRfY29sdW1ucy5pc1JhbmdlID0gMDsKLSAgICB2YWxpZF9jb2x1bW5zLmRldGFpbHMubGlzdCA9IG15X2NvbHVtbnM7Ci0gICAgdmFsaWRfY29sdW1ucy5saXN0X2NvdW50ID0gc2l6ZW9mKG15X2NvbHVtbnMpIC8gc2l6ZW9mKHVuc2lnbmVkIGludCk7Ci0gICAgaXBTeXN0ZW1TdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KCZ2YWxpZF9jb2x1bW5zKTsKLSAgICAvKgogICAgICAqIFRPRE86MzAzOm86IEluaXRpYWxpemUgaXBTeXN0ZW1TdGF0c1RhYmxlIGRhdGEuCiAgICAgICovCiAKQEAgLTE2Nyw3ICsxMTYsOSBAQAogICAgICAqIEZvciBhZHZhbmNlZCB1c2VycywgeW91IGNhbiB1c2UgYSBjdXN0b20gY29udGFpbmVyLiBJZiB5b3UKICAgICAgKiBkbyBub3QgY3JlYXRlIG9uZSwgb25lIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91LgogICAgICAqLwotICAgICpjb250YWluZXJfcHRyX3B0ciA9IE5VTEw7CisKKworICAgICpjb250YWluZXJfcHRyX3B0ciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImlwU3lzdGVtU3RhdHNUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKIAogICAgIGlmIChOVUxMID09IGNhY2hlKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCkBAIC0xOTIsNiArMTQzLDcgQEAKICAgICAgICAgKE5FVFNOTVBfQ0FDSEVfRE9OVF9BVVRPX1JFTEVBU0UgfCBORVRTTk1QX0NBQ0hFX0RPTlRfRlJFRV9FWFBJUkVECiAgICAgICAgICB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FEIHwKICAgICAgICAgIE5FVFNOTVBfQ0FDSEVfQVVUT19SRUxPQUQpOworICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZCgqY29udGFpbmVyX3B0cl9wdHIpOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcFN5c3RlbVN0YXRzVGFibGVfY29udGFpbmVyX2luaXQgKi8KIAogLyoqCkBAIC0yNjcsNyArMjE5LDcgQEAKICAgICAgICAgJiYgKE1GRF9TVUNDRVNTID09CiAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfaW5kZXhlc19zZXQocm93cmVxX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zdGF0c19lbnRyeS0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNfaXBfdmVyc2lvbikpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhbMF0pKSkgewogICAgICAgICByb3dyZXFfY3R4LT5pcFN5c3RlbVN0YXRzUmVmcmVzaFJhdGUgPSBpcHNzX2NhY2hlX3JlZnJlc2ggKiAxMDAwOyAgICAgICAvKiBtaWxsaS1zZWNvbmRzICovCiAgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKICAgICB9IGVsc2UgewpAQCAtMzg2LDcgKzMzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfRlJFRV9ET05UX0NMRUFSKTsKIAogICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aXBTeXN0ZW1TdGF0c1RhYmxlOmlwU3lzdGVtU3RhdHNUYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJSIgTkVUU05NUF9QUkl6ICJ1IHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuYwppbmRleCA4YWY5NjEzLi5kOWFiNTI5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMKQEAgLTEyLDE5ICsxMiw0MiBAQAogI2luY2x1ZGUgImlwX3NjYWxhcnMuaCIKIAogaW50CitoYW5kbGVfaXBGb3J3YXJkaW5nKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpOworCitpbnQKK2hhbmRsZV9pcERlZmF1bHRUVEwobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cyk7CisKK2ludAogaGFuZGxlX2lwdjZJcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cyk7CiAKK2ludCBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlOworCitpbnQKK2hhbmRsZV9pcEFkZHJlc3NTcGluTG9jayhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKTsKKwogLyoqIEluaXRpYWxpemVzIHRoZSBpcCBtb2R1bGUgKi8KIHZvaWQKIGluaXRfaXBfc2NhbGFycyh2b2lkKQogeworICAgIHN0YXRpYyBvaWQgCSAgICBpcEZvcndhcmRpbmdfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDEgfTsKKyAgICBzdGF0aWMgb2lkIAkgICAgaXBEZWZhdWx0VFRMX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAyLCAwIH07CiAgICAgc3RhdGljIG9pZCAgICAgIGlwUmVhc21UaW1lb3V0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAxMywgMCB9OwogICAgIHN0YXRpYyBvaWQgICAgICBpcHY2SXBGb3J3YXJkaW5nX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAyNSB9OwogICAgIHN0YXRpYyBvaWQgICAgICBpcHY2SXBEZWZhdWx0SG9wTGltaXRfb2lkW10gPQogICAgICAgICB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDI2LCAwIH07CisgICAgc3RhdGljIG9pZCAgICAgIGlwQWRkcmVzc1NwaW5Mb2NrX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAzMyB9OwogCiAgICAgREVCVUdNU0dUTCgoImlwX3NjYWxhciIsICJJbml0aWFsaXppbmdcbiIpKTsKIApAQCAtMzUsMjAgKzU4LDEzOSBAQAogICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcEZvcndhcmRpbmciLCBoYW5kbGVfaXBGb3J3YXJkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBGb3J3YXJkaW5nX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoaXBGb3J3YXJkaW5nX29pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpKTsKKworICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcHY2SXBGb3J3YXJkaW5nIiwgaGFuZGxlX2lwdjZJcEZvcndhcmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZJcEZvcndhcmRpbmdfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKGlwdjZJcEZvcndhcmRpbmdfb2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKSk7CiAKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXBBZGRyZXNzU3BpbkxvY2siLCBoYW5kbGVfaXBBZGRyZXNzU3BpbkxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1NwaW5Mb2NrX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChpcEFkZHJlc3NTcGluTG9ja19vaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpKTsKKworICAgIC8qIEluaXRpYWxpemUgc3BpbiBsb2NrIHdpdGggcmFuZG9tIHZhbHVlICovCisgICAgaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSA9IChpbnQpIHJhbmRvbSgpOworCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZQogICAgICAgICAoImlwdjZJcERlZmF1bHRIb3BMaW1pdCIsCiAgICAgICAgICBpcHY2SXBEZWZhdWx0SG9wTGltaXRfb2lkLCBPSURfTEVOR1RIKGlwdjZJcERlZmF1bHRIb3BMaW1pdF9vaWQpLAogICAgICAgICAgIi9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mL2RlZmF1bHQvaG9wX2xpbWl0IiwgQVNOX0lOVEVHRVIsCiAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsIE5VTEwsIE5VTEwpOworCisgICAgIG5ldHNubXBfcmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2UKKyAgICAgICAgKCJpcERlZmF1bHRUVEwiLAorICAgICAgICAgaXBEZWZhdWx0VFRMX29pZCwgT0lEX0xFTkdUSChpcERlZmF1bHRUVExfb2lkKSwKKyAgICAgICAgICIvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZGVmYXVsdF90dGwiLCBBU05fSU5URUdFUiwKKyAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIH0KIAogaW50CitoYW5kbGVfaXBGb3J3YXJkaW5nKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICAgKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICAgKnJlcXVlc3RzKQoreworICAgIGludCAgICAgIHJjOworICAgIHVfbG9uZyAgIHZhbHVlOworCisgICAgLyogV2UgYXJlIG5ldmVyIGNhbGxlZCBmb3IgYSBHRVRORVhUIGlmIGl0J3MgcmVnaXN0ZXJlZCBhcyBhCisgICAgICAgImluc3RhbmNlIiwgYXMgaXQncyAibWFnaWNhbGx5IiBoYW5kbGVkIGZvciB1cy4gICovCisKKyAgICAvKiBhIGluc3RhbmNlIGhhbmRsZXIgYWxzbyBvbmx5IGhhbmRzIHVzIG9uZSByZXF1ZXN0IGF0IGEgdGltZSwgc28KKyAgICAgICB3ZSBkb24ndCBuZWVkIHRvIGxvb3Agb3ZlciBhIGxpc3Qgb2YgcmVxdWVzdHM7IHdlJ2xsIG9ubHkgZ2V0IG9uZS4gKi8KKworICAgIHN3aXRjaChyZXFpbmZvLT5tb2RlKSB7CisKKyAgICAgICAgY2FzZSBNT0RFX0dFVDoKKyAgICAgICAgICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX2dldCgmdmFsdWUpOworICAgICAgICAgICAgaWYgKHJjICE9IDApIHsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSElOU1RBTkNFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPyAxIDogMjsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBTRVQgUkVRVUVTVAorICAgICAgICAgKgorICAgICAgICAgKiBtdWx0aXBsZSBzdGF0ZXMgaW4gdGhlIHRyYW5zYWN0aW9uLiAgU2VlOgorICAgICAgICAgKiBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01L3Rvb2xraXQvbWliX21vZHVsZS9zZXQtYWN0aW9ucy5qcGcKKyAgICAgICAgICovCisgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHN0b3JlIG9sZCBpbmZvIGZvciB1bmRvIGxhdGVyCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX2dldCgmdmFsdWUpOworICAgICAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT0NSRUFUSU9OKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdV9sb25nICp2YWx1ZV9zYXZlOworICAgICAgICAgICAgICAgIHZhbHVlX3NhdmUgPSBuZXRzbm1wX21lbWR1cCgmdmFsdWUsIHNpemVvZih2YWx1ZSkpOworICAgICAgICAgICAgICAgIGlmICggTlVMTCA9PSB2YWx1ZV9zYXZlICkKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXBmdyIsIHZhbHVlX3NhdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUpKTsKKwkgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgorICAgICAgICAgICAgLyogWFhYOiBmcmVlIHJlc291cmNlcyBhbGxvY2F0ZWQgaW4gUkVTRVJWRTEgYW5kL29yCisgICAgICAgICAgICAgICBSRVNFUlZFMi4gIFNvbWV0aGluZyBmYWlsZWQgc29tZXdoZXJlLCBhbmQgdGhlIHN0YXRlcworICAgICAgICAgICAgICAgYmVsb3cgd29uJ3QgYmUgY2FsbGVkLiAqLworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CisgICAgICAgICAgICAvKiBYWFg6IHBlcmZvcm0gdGhlIHZhbHVlIGNoYW5nZSBoZXJlICovCisgICAgICAgICAgICB2YWx1ZSA9ICAqKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKTsKKyAgICAgICAgICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX3NldCh2YWx1ZSk7CisgICAgICAgICAgICBpZiAoIDAgIT0gcmMgKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgcmMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX1VORE86CisgICAgICAgICAgICAgdmFsdWUgPQorICAgICAgICAgICAgICAgICAqKCh1X2xvbmcgKikgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXBmdyIpKTsKKyAgICAgICAgICAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRm9yd2FyZGluZ19zZXQodmFsdWUpOworICAgICAgICAgICAgIGlmICggMCAhPSByYyApIHsKKyAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfVU5ET0ZBSUxFRCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvKiB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIHNvIHRoaXMgaXMgYSByZWFsbHkgYmFkIGVycm9yICovCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5rbm93biBtb2RlICglZCkgaW4gaGFuZGxlX2lwRm9yd2FyZGluZ1xuIiwgcmVxaW5mby0+bW9kZSApOworICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworCitpbnQKIGhhbmRsZV9pcHY2SXBGb3J3YXJkaW5nKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCkBAIC0xNTEsMyArMjkzLDcwIEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKworaW50CitoYW5kbGVfaXBBZGRyZXNzU3BpbkxvY2sobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgICAqcmVxdWVzdHMpCit7CisgICAgdV9sb25nICAgdmFsdWU7CisKKyAgICAvKiBXZSBhcmUgbmV2ZXIgY2FsbGVkIGZvciBhIEdFVE5FWFQgaWYgaXQncyByZWdpc3RlcmVkIGFzIGEKKyAgICAgICAiaW5zdGFuY2UiLCBhcyBpdCdzICJtYWdpY2FsbHkiIGhhbmRsZWQgZm9yIHVzLiAgKi8KKworICAgIC8qIGEgaW5zdGFuY2UgaGFuZGxlciBhbHNvIG9ubHkgaGFuZHMgdXMgb25lIHJlcXVlc3QgYXQgYSB0aW1lLCBzbworICAgICAgIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIGEgbGlzdCBvZiByZXF1ZXN0czsgd2UnbGwgb25seSBnZXQgb25lLiAqLworCisgICAgc3dpdGNoKHJlcWluZm8tPm1vZGUpIHsKKworICAgICAgICBjYXNlIE1PREVfR0VUOgorICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikmaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGlwQWRkcmVzc1NwaW5Mb2NrVmFsdWUpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIFNFVCBSRVFVRVNUCisgICAgICAgICAqCisgICAgICAgICAqIG11bHRpcGxlIHN0YXRlcyBpbiB0aGUgdHJhbnNhY3Rpb24uICBTZWU6CisgICAgICAgICAqIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvdG9vbGtpdC9taWJfbW9kdWxlL3NldC1hY3Rpb25zLmpwZworICAgICAgICAgKi8KKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKKyAgICAgICAgICAgIC8qIGp1c3QgY2hlY2sgdGhlIHZhbHVlICovCisgICAgICAgICAgICB2YWx1ZSA9ICAqKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlKQorICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX0lOQ09OU0lTVEVOVFZBTFVFKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgorICAgICAgICAgICAgLyogcGVyZm9ybSB0aGUgZmluYWwgc3BpbmxvY2sgY2hlY2sgYW5kIGluY3JlYXNlIGl0cyB2YWx1ZSAqLworICAgICAgICAgICAgdmFsdWUgPSAgKihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcik7CisgICAgICAgICAgICBpZiAodmFsdWUgIT0gaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX0lOQ09OU0lTVEVOVFZBTFVFKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSsrOworICAgICAgICAgICAgICAgIC8qIGFuZCBjaGVjayBpdCBmb3Igb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgICAgICBpZiAoaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSA+IDIxNDc0ODM2NDcgfHwgaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSA8IDApCisgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1NwaW5Mb2NrVmFsdWUgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX1VORE86CisgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8qIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgc28gdGhpcyBpcyBhIHJlYWxseSBiYWQgZXJyb3IgKi8KKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmtub3duIG1vZGUgKCVkKSBpbiBoYW5kbGVfaXBBZGRyZXNzU3BpbkxvY2tcbiIsIHJlcWluZm8tPm1vZGUgKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuYwppbmRleCBiZDI3Yjc4Li4zNTFkZGQxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgImlwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIGlwdjRJbnRlcmZhY2VUYWJsZV9vaWRbXSA9IHsgSVBWNElOVEVSRkFDRVRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGlwdjRJbnRlcmZhY2VUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgaXB2NEludGVyZmFjZVRhYmxlX29pZFtdID0geyBJUFY0SU5URVJGQUNFVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaXB2NEludGVyZmFjZVRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoaXB2NEludGVyZmFjZVRhYmxlX29pZCk7CiAKIGlwdjRJbnRlcmZhY2VUYWJsZV9yZWdpc3RyYXRpb24gaXB2NEludGVyZmFjZVRhYmxlX3VzZXJfY29udGV4dDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5oCmluZGV4IGFkNWE2NzguLjQxZTc5MWYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuaApAQCAtMTA3LDggKzEwNyw4IEBACiAgICAgICAgICogaXB2NEludGVyZmFjZVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAogICAgICAgICAoaXB2NEludGVyZmFjZVRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIGlwdjRJbnRlcmZhY2VUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgaXB2NEludGVyZmFjZVRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpcHY0SW50ZXJmYWNlVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIGlwdjRJbnRlcmZhY2VUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAiaXB2NEludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlLmMKaW5kZXggZjljYWFlZi4uOTJmMGE1YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5jCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJpcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmgiCiAKLW9pZCAgICAgICAgICAgICBpcHY2SW50ZXJmYWNlVGFibGVfb2lkW10gPSB7IElQVjZJTlRFUkZBQ0VUQUJMRV9PSUQgfTsKLWludCAgICAgICAgICAgICBpcHY2SW50ZXJmYWNlVGFibGVfb2lkX3NpemUgPQorY29uc3Qgb2lkICAgICAgIGlwdjZJbnRlcmZhY2VUYWJsZV9vaWRbXSA9IHsgSVBWNklOVEVSRkFDRVRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIGlwdjZJbnRlcmZhY2VUYWJsZV9vaWRfc2l6ZSA9CiBPSURfTEVOR1RIKGlwdjZJbnRlcmZhY2VUYWJsZV9vaWQpOwogCiBpcHY2SW50ZXJmYWNlVGFibGVfcmVnaXN0cmF0aW9uIGlwdjZJbnRlcmZhY2VUYWJsZV91c2VyX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuaAppbmRleCA4MjkyZWMwLi5hMjYwNzMyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlLmgKQEAgLTE5MSw4ICsxOTEsOCBAQAogICAgICAgICAqIGlwdjZJbnRlcmZhY2VUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKGlwdjZJbnRlcmZhY2VUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpcHY2SW50ZXJmYWNlVGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIGlwdjZJbnRlcmZhY2VUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaXB2NkludGVyZmFjZVRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpcHY2SW50ZXJmYWNlVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgImlwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc5YmQ3NQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oCkBAIC0wLDAgKzEsNSBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzk0MDkzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmMKQEAgLTAsMCArMSwxMDA5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlLmMgMTQxNzAgMjAwNy0wNC0yOSAwMDoxMjozMlogdmFydW5fYyQKKyAqLworLyoqIFxwYWdlIE1GRCBoZWxwZXIgZm9yIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgKgorICogXHNlY3Rpb24gaW50cm8gSW50cm9kdWN0aW9uCisgKiBJbnRyb2R1Y3RvcnkgdGV4dC4KKyAqCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaD4KKworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oIgorCitjb25zdCBvaWQgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkW10gPQorICAgIHsgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkX3NpemUgPQorT0lEX0xFTkdUSChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWQpOworCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdXNlcl9jb250ZXh0Oworc3RhdGljIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdXNlcl9jb250ZXh0X3A7CisKK3ZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKHZvaWQpOworCisKKy8qKgorICogSW5pdGlhbGl6ZXMgdGhlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIG1vZHVsZQorICovCit2b2lkCitpbml0X2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aW5pdF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDA6bzogUGVyZm9ybSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBvbmUtdGltZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nCisgICAgICovCisgICAgaWYgKHNob3VsZF9pbml0KCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZSIpKQorICAgICAgICBpbml0aWFsaXplX3RhYmxlX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKCk7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSAqLworCisvKioKKyAqIFNodXQtZG93biB0aGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgbW9kdWxlIChhZ2VudCBpcyBleGl0aW5nKQorICovCit2b2lkCitzaHV0ZG93bl9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSh2b2lkKQoreworICAgIGlmIChzaG91bGRfaW5pdCgiaXB2NlNjb3BlWm9uZUluZGV4VGFibGUiKSkKKyAgICAgICAgc2h1dGRvd25fdGFibGVfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUoKTsKKworfQorCisvKioKKyAqIEluaXRpYWxpemUgdGhlIHRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIAorICogICAgKERlZmluZSBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQpCisgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUodm9pZCkKK3sKKyAgICB1X2xvbmcgICAgICAgICAgZmxhZ3M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppbml0aWFsaXplX3RhYmxlX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMTpvOiBQZXJmb3JtIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIG9uZS10aW1lIHRhYmxlIGluaXRpYWxpemF0aW9uLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMjpvOiB8LT5Jbml0aWFsaXplIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIHVzZXIgY29udGV4dAorICAgICAqIGlmIHlvdSdkIGxpa2UgdG8gcGFzcyBpbiBhIHBvaW50ZXIgdG8gc29tZSBkYXRhIGZvciB0aGlzCisgICAgICogdGFibGUsIGFsbG9jYXRlIG9yIHNldCBpdCB1cCBoZXJlLgorICAgICAqLworICAgIC8qCisgICAgICogYSBuZXRzbm1wX2RhdGFfbGlzdCBpcyBhIHNpbXBsZSB3YXkgdG8gc3RvcmUgdm9pZCBwb2ludGVycy4gQSBzaW1wbGUKKyAgICAgKiBzdHJpbmcgdG9rZW4gaXMgdXNlZCB0byBhZGQsIGZpbmQgb3IgcmVtb3ZlIHBvaW50ZXJzLgorICAgICAqLworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3VzZXJfY29udGV4dF9wID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0KCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZSIsIE5VTEwsIE5VTEwpOworCisgICAgLyoKKyAgICAgKiBObyBzdXBwb3J0IGZvciBhbnkgZmxhZ3MgeWV0LCBidXQgaW4gdGhlIGZ1dHVyZSB5b3Ugd291bGQKKyAgICAgKiBzZXQgYW55IGZsYWdzIGhlcmUuCisgICAgICovCisgICAgZmxhZ3MgPSAwOworCisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBpbml0aWFsaXphdGlvbiBjb2RlCisgICAgICovCisgICAgX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlCisJKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3VzZXJfY29udGV4dF9wLCBmbGFncyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWxpemVfdGFibGVfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgKi8KKworLyoqCisgKiBTaHV0ZG93biB0aGUgdGFibGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgCisgKi8KK3ZvaWQKK3NodXRkb3duX3RhYmxlX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBzaHV0ZG93biBjb2RlCisgICAgICovCisgICAgX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3NodXRkb3duX2ludGVyZmFjZQorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdXNlcl9jb250ZXh0X3ApOworICAgIG5ldHNubXBfZnJlZV9hbGxfbGlzdF9kYXRhKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3VzZXJfY29udGV4dF9wKTsKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV91c2VyX2NvbnRleHRfcCA9IE5VTEw7Cit9CisKKy8qKgorICogZXh0cmEgY29udGV4dCBpbml0aWFsaXphdGlvbiAoZWcgZGVmYXVsdCB2YWx1ZXMpCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggICAgOiByb3cgcmVxdWVzdCBjb250ZXh0CisgKiBAcGFyYW0gdXNlcl9pbml0X2N0eCA6IHZvaWQgcG9pbnRlciBmb3IgdXNlciAocGFyYW1ldGVyIHRvIHJvd3JlcV9jdHhfYWxsb2NhdGUpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgOiBubyBlcnJvcnMKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgIDogZXJyb3IgKGNvbnRleHQgYWxsb2NhdGUgd2lsbCBmYWlsKQorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfaW5pdChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LCB2b2lkICp1c2VyX2luaXRfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfaW5pdCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjEwOm86IHwtPiBQZXJmb3JtIGV4dHJhIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIHJvd3JlcSBpbml0aWFsaXphdGlvbi4gKGVnIERFRlZBTFMpCisgICAgICovCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4X2luaXQgKi8KKworLyoqCisgKiBleHRyYSBjb250ZXh0IGNsZWFudXAKKyAqCisgKi8KK3ZvaWQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cAorICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMTpvOiB8LT4gUGVyZm9ybSBleHRyYSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSByb3dyZXEgY2xlYW51cC4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfZnJlZShyb3dyZXFfY3R4LT5kYXRhKTsKKyAgICByb3dyZXFfY3R4LT5kYXRhID0gTlVMTDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9jbGVhbnVwICovCisKKy8qKgorICogcHJlLXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgICAgICAgOiBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3ByZV9yZXF1ZXN0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2NvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3QiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86NTEwOm86IFBlcmZvcm0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgcHJlLXJlcXVlc3QgYWN0aW9ucy4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBwb3N0LXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKiBOb3RlOgorICogICBOZXcgcm93cyBoYXZlIGJlZW4gaW5zZXJ0ZWQgaW50byB0aGUgY29udGFpbmVyLCBhbmQKKyAqICAgZGVsZXRlZCByb3dzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvbnRhaW5lciBhbmQKKyAqICAgcmVsZWFzZWQuCisgKgorICogQHBhcmFtIHVzZXJfY29udGV4dAorICogQHBhcmFtIHJjIDogTUZEX1NVQ0NFU1MgaWYgYWxsIHJlcXVlc3RzIHN1Y2NlZWRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IG90aGVyIGVycm9yIChpZ25vcmVkKQorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCwgaW50IHJjKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTE6bzogUGVyZm9ybSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBwb3N0LXJlcXVlc3QgYWN0aW9ucy4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKy8qCisgKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9kYXRhCisgKgorICogUHVycG9zZTogY3JlYXRlIG5ldyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhLgorICovCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICoKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCkKK3sKKyAgICAvKgorICAgICAqIFRPRE86MjAxOnI6IHwtPiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICovCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YSAqcnRuID0gbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2VudHJ5X2NyZWF0ZSgpOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfZGF0YSIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJ0bikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5hYmxlIHRvIG1hbGxvYyBtZW1vcnkgZm9yIG5ldyAiCisgICAgICAgICAgICAgICAgICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhLlxuIik7CisgICAgfQorCisgICAgcmV0dXJuIHJ0bjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfZGF0YSAqLworCisvKgorICogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVsZWFzZV9kYXRhCisgKgorICogUHVycG9zZTogcmVsZWFzZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBkYXRhLgorICovCit2b2lkCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX2RhdGEoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YSAqIGRhdGEpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVsZWFzZV9kYXRhIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIwMjpyOiB8LT4gcmVsZWFzZSBtZW1vcnkgZm9yIHRoZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICovCisgICAgbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2VudHJ5X2ZyZWUoZGF0YSk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2VfZGF0YSAqLworCisvKiogQGRlZmdyb3VwIGRhdGFfZ2V0IGRhdGFfZ2V0OiBSb3V0aW5lcyB0byBnZXQgZGF0YQorICoKKyAqIFRPRE86MjMwOk06IEltcGxlbWVudCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBnZXQgcm91dGluZXMuCisgKiBUT0RPOjI0MDpNOiBJbXBsZW1lbnQgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgbWFwcGluZyByb3V0aW5lcyAoaWYgYW55KS4KKyAqCisgKiBUaGVzZSByb3V0aW5lIGFyZSB1c2VkIHRvIGdldCB0aGUgdmFsdWUgZm9yIGluZGl2aWR1YWwgb2JqZWN0cy4gVGhlCisgKiByb3cgY29udGV4dCBpcyBwYXNzZWQsIGFsb25nIHdpdGggYSBwb2ludGVyIHRvIHRoZSBtZW1vcnkgd2hlcmUgdGhlCisgKiB2YWx1ZSBzaG91bGQgYmUgY29waWVkLgorICoKKyAqIEB7CisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4VGFibGUgaXMgc3ViaWQgMzYgb2YgaXAuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LCBsZW5ndGg6IDgKKyAqLworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAqIFRPRE86MjAwOnI6IEltcGxlbWVudCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBkYXRhIGNvbnRleHQgZnVuY3Rpb25zLgorICovCisKKworLyoqCisgKiBzZXQgbWliIGluZGV4KGVzKQorICoKKyAqIEBwYXJhbSB0YmxfaWR4IG1pYiBpbmRleCBzdHJ1Y3R1cmUKKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4X3ZhbAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgY29udmVuaWVuY2UgZnVuY3Rpb24gaXMgdXNlZnVsIGZvciBzZXR0aW5nIGFsbCB0aGUgTUlCIGluZGV4CisgKiAgY29tcG9uZW50cyB3aXRoIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuIEl0IGlzIGFzc3VtZSB0aGF0IHRoZSBDIHZhbHVlcworICogIGhhdmUgYWxyZWFkeSBiZWVuIG1hcHBlZCBmcm9tIHRoZWlyIG5hdGl2ZS9yYXdmb3JtYXQgdG8gdGhlIE1JQiBmb3JtYXQuCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeAorICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggKiB0YmxfaWR4LAorICAgICBsb25nIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXhfdmFsKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAqLworICAgIHRibF9pZHgtPmlwdjZTY29wZVpvbmVJbmRleElmSW5kZXggPSBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4X3ZhbDsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzZXQgcm93IGNvbnRleHQgaW5kZXhlcworICoKKyAqIEBwYXJhbSByZXFyZXFfY3R4IHRoZSByb3cgY29udGV4dCB0aGF0IG5lZWRzIHVwZGF0ZWQgaW5kZXhlcworICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbWliIGluZGV4cywgdGhlbiB1cGRhdGVzIHRoZSBvaWQgaW5kZXhzCisgKiAgZnJvbSB0aGUgbWliIGluZGV4LgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4ZXNfc2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0KKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCgmcm93cmVxX2N0eC0+dGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4X3ZhbCkpCisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQgbWliIGluZGV4IHRvIG9pZCBpbmRleAorICAgICAqLworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgubGVuID0gc2l6ZW9mKHJvd3JlcV9jdHgtPm9pZF90bXApIC8gc2l6ZW9mKG9pZCk7CisgICAgaWYgKDAgIT0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhfdG9fb2lkKCZyb3dyZXFfY3R4LT5vaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+dGJsX2lkeCkpIHsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4ZXNfc2V0ICovCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4TGlua0xvY2FsCisgKiBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWwgaXMgc3ViaWQgMiBvZiBpcHY2U2NvcGVab25lSW5kZXhFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LjEuMgorICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3IgdGhlIGxpbmstbG9jYWwgc2NvcGUgb24gdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMQorICogICBzZXR0YWJsZSAgIDAKKyAqICAgaGludDogZAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIEluZXRab25lSW5kZXggKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWwgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF92YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4TGlua0xvY2FsX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbCBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4TGlua0xvY2FsX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF92YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnNjb3Blem9uZV9saW5rbG9jYWw7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4MworICogaXB2NlNjb3BlWm9uZUluZGV4MyBpcyBzdWJpZCAzIG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS4zCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciBzY29wZSAzIG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4MyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleDNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleDNfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4M192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4M192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4M19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXgzIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXgzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleDNfdmFsX3B0cikgPSAwOworCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleDNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleEVudHJ5LmlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWwKKyAqIGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWwgaXMgc3ViaWQgNCBvZiBpcHY2U2NvcGVab25lSW5kZXhFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LjEuNAorICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3IgdGhlIGFkbWluLWxvY2FsIHNjb3BlIG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbCBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWwKKyAqIGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbCBpcyBzdWJpZCA1IG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS41CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciB0aGUgc2l0ZS1sb2NhbCBzY29wZSBvbiB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAxCisgKiAgIHNldHRhYmxlICAgMAorICogICBoaW50OiBkCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgSW5ldFpvbmVJbmRleCAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbCBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbF92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWxfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbF9nZXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWxfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX3ZhbF9wdHIpID0gMDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXg2CisgKiBpcHY2U2NvcGVab25lSW5kZXg2IGlzIHN1YmlkIDYgb2YgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNi4xLjYKKyAqIERlc2NyaXB0aW9uOgorVGhlIHpvbmUgaW5kZXggZm9yIHNjb3BlIDYgb24gdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMQorICogICBzZXR0YWJsZSAgIDAKKyAqICAgaGludDogZAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIEluZXRab25lSW5kZXggKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXg2IGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXB2NlNjb3BlWm9uZUluZGV4Nl92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4Nl9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXg2X3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXg2X3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXg2X2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleDYgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwdjZTY29wZVpvbmVJbmRleDZfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4Nl92YWxfcHRyKSA9IDA7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleDZfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleEVudHJ5LmlwdjZTY29wZVpvbmVJbmRleDcKKyAqIGlwdjZTY29wZVpvbmVJbmRleDcgaXMgc3ViaWQgNyBvZiBpcHY2U2NvcGVab25lSW5kZXhFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LjEuNworICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3Igc2NvcGUgNyBvbiB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAxCisgKiAgIHNldHRhYmxlICAgMAorICogICBoaW50OiBkCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgSW5ldFpvbmVJbmRleCAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleDcgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXg3X3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXg3X2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleDdfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwdjZTY29wZVpvbmVJbmRleDdfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleDdfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4NyBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4N192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcHY2U2NvcGVab25lSW5kZXg3X3ZhbF9wdHIpID0gMDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4N19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWwKKyAqIGlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsIGlzIHN1YmlkIDggb2YgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNi4xLjgKKyAqIERlc2NyaXB0aW9uOgorVGhlIHpvbmUgaW5kZXggZm9yIHRoZSBvcmdhbml6YXRpb24tbG9jYWwgc2NvcGUgb24gdGhpcworICAgICAgICAgICAgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWwgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWxfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF92YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWxfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbCBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWxfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWxfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4OQorICogaXB2NlNjb3BlWm9uZUluZGV4OSBpcyBzdWJpZCA5IG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS45CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciBzY29wZSA5IG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4OSBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleDlfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleDlfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4OV92YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4OV92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4OV9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXg5IGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXg5X3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleDlfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXg5X2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXhBCisgKiBpcHY2U2NvcGVab25lSW5kZXhBIGlzIHN1YmlkIDEwIG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS4xMAorICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3Igc2NvcGUgQSBvbiB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAxCisgKiAgIHNldHRhYmxlICAgMAorICogICBoaW50OiBkCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgSW5ldFpvbmVJbmRleCAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleEEgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhBX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXhBX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleEFfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwdjZTY29wZVpvbmVJbmRleEFfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleEFfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4QSBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4QV92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcHY2U2NvcGVab25lSW5kZXhBX3ZhbF9wdHIpID0gMDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4QV9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4QgorICogaXB2NlNjb3BlWm9uZUluZGV4QiBpcyBzdWJpZCAxMSBvZiBpcHY2U2NvcGVab25lSW5kZXhFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LjEuMTEKKyAqIERlc2NyaXB0aW9uOgorVGhlIHpvbmUgaW5kZXggZm9yIHNjb3BlIEIgb24gdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMQorICogICBzZXR0YWJsZSAgIDAKKyAqICAgaGludDogZAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIEluZXRab25lSW5kZXggKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhCIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXB2NlNjb3BlWm9uZUluZGV4Ql92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4Ql9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXhCX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXhCX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhCX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleEIgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwdjZTY29wZVpvbmVJbmRleEJfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4Ql92YWxfcHRyKSA9IDA7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleEJfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleEVudHJ5LmlwdjZTY29wZVpvbmVJbmRleEMKKyAqIGlwdjZTY29wZVpvbmVJbmRleEMgaXMgc3ViaWQgMTIgb2YgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNi4xLjEyCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciBzY29wZSBDIG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4QyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleENfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleENfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4Q192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4Q192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4Q19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhDIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXhDX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleENfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhDX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXhECisgKiBpcHY2U2NvcGVab25lSW5kZXhEIGlzIHN1YmlkIDEzIG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS4xMworICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3Igc2NvcGUgRCBvbiB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAxCisgKiAgIHNldHRhYmxlICAgMAorICogICBoaW50OiBkCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgSW5ldFpvbmVJbmRleCAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleEQgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhEX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXhEX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleERfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwdjZTY29wZVpvbmVJbmRleERfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleERfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4RCBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4RF92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcHY2U2NvcGVab25lSW5kZXhEX3ZhbF9wdHIpID0gMDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4RF9nZXQgKi8KKworCisvKiogQHsgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk3NGZlZQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oCkBAIC0wLDAgKzEsMjY5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQKKyAqCisgKiAkSWQ6aXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaCAxNDE3MCAyMDA3LTA0LTI5IDAwOjEyOjMyWiB2YXJ1bl9jJAorICovCisjaWZuZGVmIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0gKKyNkZWZpbmUgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworLyoqIEBhZGR0b2dyb3VwIG1pc2MgbWlzYzogTWlzY2VsbGFuZW91cyByb3V0aW5lcworICoKKyAqIEB7CisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2FzbjEuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zY29wZXpvbmUuaD4KKyAgICAvKgorICAgICAqIG90aGVyIHJlcXVpcmVkIG1vZHVsZSBjb21wb25lbnRzIAorICAgICAqLworICAgIC8qICpJTkRFTlQtT0ZGKiAgKi8KK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZSkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2VzcykKKyAgICAvKiAqSU5ERU5ULU9OKiAgKi8KKworICAgIC8qCisgICAgICogT0lEIGFuZCBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSAKKyAgICAgKi8KKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmgiCisKKyAgICAvKgorICAgICAqIGVudW0gZGVmaW5pb25zIAorICAgICAqLworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2VudW1zLmgiCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgaW5pdF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSh2b2lkKTsKKyAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25faXB2NlNjb3BlWm9uZUluZGV4VGFibGUodm9pZCk7CisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhUYWJsZSBpcyBzdWJpZCAzNiBvZiBpcC4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNiwgbGVuZ3RoOiA4CisgICAgICovCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogV2hlbiB5b3UgcmVnaXN0ZXIgeW91ciBtaWIsIHlvdSBnZXQgdG8gcHJvdmlkZSBhIGdlbmVyaWMKKyAgICAgKiBwb2ludGVyIHRoYXQgd2lsbCBiZSBwYXNzZWQgYmFjayB0byB5b3UgZm9yIG1vc3Qgb2YgdGhlCisgICAgICogZnVuY3Rpb25zIGNhbGxzLgorICAgICAqCisgICAgICogVE9ETzoxMDA6cjogUmV2aWV3IGFsbCBjb250ZXh0IHN0cnVjdHVyZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIFRPRE86MTAxOm86IHwtPiBSZXZpZXcgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgcmVnaXN0cmF0aW9uIGNvbnRleHQuCisgICAgICovCisgICAgdHlwZWRlZiBuZXRzbm1wX2RhdGFfbGlzdCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb247CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIFRPRE86MTEwOnI6IHwtPiBSZXZpZXcgaXB2NlNjb3BlWm9uZVRhYmxlIGRhdGEgY29udGV4dCBzdHJ1Y3R1cmUuCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byByZXByZXNlbnQgdGhlIGRhdGEgZm9yIGlwdjZTY29wZVpvbmVUYWJsZS4KKyAgICAgKi8KKyAgICB0eXBlZGVmIG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMDpyOiB8LT4gUmV2aWV3IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIG1pYiBpbmRleC4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaW5kZXggZm9yIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleF9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4KDEpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgICAgICovCisgICAgICAgIGxvbmcgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4OworCisKKyAgICB9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleDsKKworICAgIC8qCisgICAgICogVE9ETzoxMjE6cjogfCAgIHwtPiBSZXZpZXcgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgbWF4IGluZGV4IGxlbmd0aC4KKyAgICAgKiBJZiB5b3UgS05PVyB0aGF0IHlvdXIgaW5kZXhlcyB3aWxsIG5ldmVyIGV4Y2VlZCBhIGNlcnRhaW4KKyAgICAgKiBsZW5ndGgsIHVwZGF0ZSB0aGlzIG1hY3JvIHRvIHRoYXQgbGVuZ3RoLgorICAgICAqLworI2RlZmluZSBNQVhfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfSURYX0xFTiAgICAgMQorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxMzA6bzogfC0+IFJldmlldyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBSb3cgcmVxdWVzdCAocm93cmVxKSBjb250ZXh0LgorICAgICAqIFdoZW4geW91ciBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgeW91IHdpbGwgYmUgcGFzc2VkIGEKKyAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4IHBvaW50ZXIuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9zIHsKKworICAgIC8qKiB0aGlzIG11c3QgYmUgZmlyc3QgZm9yIGNvbnRhaW5lciBjb21wYXJlIHRvIHdvcmsgKi8KKyAgICAgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgICAgIG9pZCAgICAgICAgICAgICBvaWRfdG1wW01BWF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9JRFhfTEVOXTsKKworICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggdGJsX2lkeDsKKworICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICpkYXRhOworCisgICAgICAgIC8qCisgICAgICAgICAqIGZsYWdzIHBlciByb3cuIEN1cnJlbnRseSwgdGhlIGZpcnN0IChsb3dlcikgOCBiaXRzIGFyZSByZXNlcnZlZAorICAgICAgICAgKiBmb3IgdGhlIHVzZXIuIFNlZSBtZmQuaCBmb3Igb3RoZXIgZmxhZ3MuCisgICAgICAgICAqLworICAgICAgICB1X2ludCAgICAgICAgICAgcm93cmVxX2ZsYWdzOworCisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86MTMxOm86IHwgICB8LT4gQWRkIHVzZWZ1bCBkYXRhIHRvIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIHJvd3JlcSBjb250ZXh0LgorICAgICAgICAgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiBzdG9yYWdlIGZvciBmdXR1cmUgZXhwYW5zaW9uCisgICAgICAgICAqLworICAgICAgICBuZXRzbm1wX2RhdGFfbGlzdCAqaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9saXN0OworCisgICAgfSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4OworCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVmX3Jvd3JlcV9jdHhfcyB7CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgfSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWZfcm93cmVxX2N0eDsKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3QKKyAgICAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY29udGV4dCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jb250ZXh0LCBpbnQgcmMpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfaW5pdAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9jbGVhbnVwCisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CisKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgKmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4ICogbWliX2lkeCk7CisKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICoKKyAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpOworCisgICAgdm9pZAorICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2VfZGF0YShpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICogZGF0YSk7CisKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZF9zaXplOworCisKKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5oIgorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGlzIHN1YmlkIDM2IG9mIGlwLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LCBsZW5ndGg6IDgKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGluZGV4ZXMKKyAgICAgKi8KKworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfdmFsX3B0cik7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleDNfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXgzX3ZhbF9wdHIpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbF92YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX3ZhbF9wdHIpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXg2X2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4Nl92YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4N19nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleDdfdmFsX3B0cik7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsX2dldAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF92YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4OV9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleDlfdmFsX3B0cik7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleEFfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXhBX3ZhbF9wdHIpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhCX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4Ql92YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4Q19nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleENfdmFsX3B0cik7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleERfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXhEX3ZhbF9wdHIpOworCisKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4ICogdGJsX2lkeCwKKyAgICAgICAgIGxvbmcgaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleF92YWwpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleGVzX3NldAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICBsb25nIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXhfdmFsKTsKKworICAgIC8qCisgICAgICogRFVNTVkgbWFya2VycywgaWdub3JlCisgICAgICoKKyAgICAgKiBUT0RPOjA5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86Mjk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjM5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzo0OTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAyNWRkMwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0wLDAgKzEsMzA0IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmMgMTQxNzAgMjAwNy0wNC0yOSAwMDoxMjozMlogdmFydW5fYyQKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgiCisKKworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmgiCisKKy8qKiBAaW5ncm91cCBpbnRlcmZhY2UKKyAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQorICoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSB1c2VkIHRvIGxvY2F0ZSB0aGUgZGF0YSB1c2VkIHRvIHNhdGlzZnkKKyAqIHJlcXVlc3RzLgorICogCisgKiBAeworICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGlzIHN1YmlkIDM2IG9mIGlwLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNiwgbGVuZ3RoOiA4CisgKi8KKworLyoqCisgKiBpbml0aWFsaXphdGlvbiBmb3IgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgZGF0YSBhY2Nlc3MKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgc3RhcnR1cCB0byBhbGxvdyB5b3UgdG8KKyAqIGFsbG9jYXRlIGFueSByZXNvdXJjZXMgeW91IG5lZWQgZm9yIHRoZSBkYXRhIHRhYmxlLgorICoKKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWcKKyAqICAgICAgICBQb2ludGVyIHRvIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IHVucmVjb3ZlcmFibGUgZXJyb3IuCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdF9kYXRhKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luaXRfZGF0YSIsICJjYWxsZWRcbiIpKTsKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luaXRfZGF0YSAqLworCisvKioKKyAqIGNvbnRhaW5lciBvdmVydmlldworICoKKyAqLworCisvKioKKyAqIGNvbnRhaW5lciBpbml0aWFsaXphdGlvbgorICoKKyAqIEBwYXJhbSBjb250YWluZXJfcHRyX3B0ciBBIHBvaW50ZXIgdG8gYSBjb250YWluZXIgcG9pbnRlci4gSWYgeW91CisgKiAgICAgICAgY3JlYXRlIGEgY3VzdG9tIGNvbnRhaW5lciwgdXNlIHRoaXMgcGFyYW1ldGVyIHRvIHJldHVybiBpdAorICogICAgICAgIHRvIHRoZSBNRkQgaGVscGVyLiBJZiBzZXQgdG8gTlVMTCwgdGhlIE1GRCBoZWxwZXIgd2lsbAorICogICAgICAgIGFsbG9jYXRlIGEgY29udGFpbmVyIGZvciB5b3UuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHN0YXJ0dXAgdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLiBJZiBubyBjdXN0b20KKyAqICBjb250YWluZXIgaXMgYWxsb2NhdGVkLCB0aGUgTUZEIGNvZGUgd2lsbCBjcmVhdGUgb25lIGZvciB5b3VyLgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIHdvdWxkIGFsc28gYmUgYSBnb29kIHBsYWNlIHRvIGRvIGFueSBpbml0aWFsaXphdGlvbiBuZWVkZWQKKyAqICBmb3IgeW91IGRhdGEgc291cmNlLiBGb3IgZXhhbXBsZSwgb3BlbmluZyBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgorICogIHByb2Nlc3MgdGhhdCB3aWxsIHN1cHBseSB0aGUgZGF0YSwgb3BlbmluZyBhIGRhdGFiYXNlLCBldGMuCisgKi8KK3ZvaWQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0KG5ldHNubXBfY29udGFpbmVyICoqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUgKiBjYWNoZSkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfaW5pdCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcl9wdHJfcHRyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgY29udGFpbmVyIHBhcmFtIHRvIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogRm9yIGFkdmFuY2VkIHVzZXJzLCB5b3UgY2FuIHVzZSBhIGN1c3RvbSBjb250YWluZXIuIElmIHlvdQorICAgICAqIGRvIG5vdCBjcmVhdGUgb25lLCBvbmUgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UuCisgICAgICovCisgICAgKmNvbnRhaW5lcl9wdHJfcHRyID0gTlVMTDsKKyAgICBpZiAoTlVMTCA9PSBjYWNoZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIGNhY2hlIHBhcmFtIHRvIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogVE9ETzozNDU6QTogU2V0IHVwIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGNhY2hlIHByb3BlcnRpZXMuCisgICAgICoKKyAgICAgKiBBbHNvIGZvciBhZHZhbmNlZCB1c2VycywgeW91IGNhbiBzZXQgcGFyYW1ldGVycyBmb3IgdGhlCisgICAgICogY2FjaGUuIERvIG5vdCBjaGFuZ2UgdGhlIG1hZ2ljIHBvaW50ZXIsIGFzIGl0IGlzIHVzZWQKKyAgICAgKiBieSB0aGUgTUZEIGhlbHBlci4gVG8gY29tcGxldGVseSBkaXNhYmxlIGNhY2hpbmcsIHNldAorICAgICAqIGNhY2hlLT5lbmFibGVkIHRvIDAuCisgICAgICovCisgICAgY2FjaGUtPnRpbWVvdXQgPSA2MDsgLyogc2Vjb25kcyAqLworCisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBjb250YWluZXIgc2h1dGRvd24KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyX3B0ciBBIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5lci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc2h1dGRvd24gdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2ZyZWUoKS4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyB3b3VsZCBhbHNvIGJlIGEgZ29vZCBwbGFjZSB0byBkbyBhbnkgY2xlYW51cCBuZWVkZWQKKyAqICBmb3IgeW91IGRhdGEgc291cmNlLiBGb3IgZXhhbXBsZSwgY2xvc2luZyBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgorICogIHByb2Nlc3MgdGhhdCBzdXBwbGllZCB0aGUgZGF0YSwgY2xvc2luZyBhIGRhdGFiYXNlLCBldGMuCisgKi8KK3ZvaWQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyX3B0cikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2h1dGRvd24iLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXJfcHRyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgcGFyYW1zIHRvIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93blxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NodXRkb3duICovCisKKy8qKgorICogY2hlY2sgZW50cnkgZm9yIHVwZGF0ZQorICoKKyAqLworc3RhdGljIHZvaWQKK19zbmFyZl96b25laW5kZXhfZW50cnkobmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqc2NvcGV6b25lX2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQoreworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisKKyAgICBERUJVR1RSQUNFOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gc2NvcGV6b25lX2VudHJ5KTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisgICAgcm93cmVxX2N0eCA9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoc2NvcGV6b25lX2VudHJ5LE5VTEwpOworICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KSAmJgorICAgICAgICAgKE1GRF9TVUNDRVNTID09IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4ZXNfc2V0CisgICAgICAgICAocm93cmVxX2N0eCwgcm93cmVxX2N0eC0+ZGF0YS0+aW5kZXgpKSkgeworICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisgICAgfSBlbHNlIHsKKyAgICAgICBpZiAocm93cmVxX2N0eCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAiaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgY2FjaGUuXG4iKTsKKyAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfZnJlZShzY29wZXpvbmVfZW50cnkpOworICAgIH0KKyAgICAgIAorfQorCisvKioKKyAqIGxvYWQgaW5pdGlhbCBkYXRhCisgKgorICogVE9ETzozNTA6TTogSW1wbGVtZW50IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGRhdGEgbG9hZAorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHRvIHdoaWNoIGl0ZW1zIHNob3VsZCBiZSBpbnNlcnRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFIDogQ2FuJ3QgYWNjZXNzIGRhdGEgc291cmNlCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2FkIHRoZSBpbmRleChlcykgKGFuZCBkYXRhLCBvcHRpb25hbGx5KQorICogIGZvciB0aGUgZXZlcnkgcm93IGluIHRoZSBkYXRhIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgV2hpbGUgbG9hZGluZyB0aGUgZGF0YSwgdGhlIG9ubHkgaW1wb3J0YW50IHRoaW5nIGlzIHRoZSBpbmRleGVzLgorICogIElmIGFjY2VzcyB0byB5b3VyIGRhdGEgaXMgY2hlYXAvZmFzdCAoZS5nLiB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gYQorICogIHN0cnVjdHVyZSBpbiBtZW1vcnkpLCBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIHVwZGF0ZSB0aGUgZGF0YSBoZXJlLgorICogIElmLCBob3dldmVyLCB0aGUgYWNjZXNzaW5nIHRoZSBkYXRhIGludm92bGVzIG1vcmUgd29yayAoZS5nLiBwYXJzaW5nCisgKiAgc29tZSBvdGhlciBleGlzdGluZyBkYXRhLCBvciBwZWZvcm1pbmcgY2FsY3VsYXRpb25zIHRvIGRlcml2ZSB0aGUgZGF0YSksCisgKiAgdGhlbiB5b3UgY2FuIGxpbWl0IHlvdXJzZWxmIHRvIHNldHRpbmcgdGhlIGluZGV4ZXMgYW5kIHNhdmluZyBhbnkKKyAqICBpbmZvcm1hdGlvbiB5b3Ugd2lsbCBuZWVkIGxhdGVyLiBUaGVuIHVzZSB0aGUgc2F2ZWQgaW5mb3JtYXRpb24gaW4KKyAqICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dfcHJlcCgpIGZvciBwb3B1bGF0aW5nIGRhdGEuCisgKgorICogQG5vdGUKKyAqICBJZiB5b3UgbmVlZCBjb25zaXN0ZW5jeSBiZXR3ZWVuIHJvd3MgKGxpa2UgeW91IHdhbnQgc3RhdGlzdGljcworICogIGZvciBlYWNoIHJvdyB0byBiZSBmcm9tIHRoZSBzYW1lIHRpbWUgZnJhbWUpLCB5b3Ugc2hvdWxkIHNldCBhbGwKKyAqICBkYXRhIGhlcmUuCisgKgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworCisgICAgLyoKKyAgICAgKiB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3IgaW5kZXggdmFsdWVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4KDEpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgKi8KKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqem9uZWluZGV4ID0gbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2NvbnRhaW5lcl9sb2FkKE5VTEwsIDApOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2xvYWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSB6b25laW5kZXgpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmNvbnRhaW5lcl9sb2FkIiwKKyAgICAgICAgICAgICAgICAgICAgImNvdWxkbid0IGdldCBzY29wZXpvbmUgaXRlcmF0b3JcbiIpKTsKKyAgICAgICAgcmV0dXJuIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRTsKKyAgICB9CisgICAgLyoKKyAgICAgKiBUT0RPOjM1MTpNOiB8LT4gTG9hZC91cGRhdGUgZGF0YSBpbiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgY29udGFpbmVyLgorICAgICAqIGxvb3Agb3ZlciB5b3VyIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGRhdGEsIGFsbG9jYXRlIGEgcm93cmVxIGNvbnRleHQsCisgICAgICogc2V0IHRoZSBpbmRleChlcykgW2FuZCBkYXRhLCBvcHRpb25hbGx5XSBhbmQgaW5zZXJ0IGludG8KKyAgICAgKiB0aGUgY29udGFpbmVyLgorICAgICAqLworCisgICAgIENPTlRBSU5FUl9GT1JfRUFDSCh6b25laW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfc25hcmZfem9uZWluZGV4X2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICAvKgorICAgICAqIGZyZWUgdGhlIGNvbnRhaW5lci4gd2UndmUgZWl0aGVyIGNsYWltZWQgZWFjaCBlbnRyeSwgb3IgcmVsZWFzZWQgaXQsCisgICAgICogc28gdGhlIGFjY2VzcyBmdW5jdGlvbiBkb2Vzbid0IG5lZWQgdG8gY2xlYXIgdGhlIGNvbnRhaW5lci4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2ZyZWUoem9uZWluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEpOworCisgICAgREVCVUdNU0dUKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfbG9hZCIsICJpbnNlcnRlZCAlbHUgcmVjb3Jkc1xuIiwgKHVuc2lnbmVkIGxvbmcpQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfbG9hZCAqLworCisvKioKKyAqIGNvbnRhaW5lciBjbGVhbiB1cAorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHdpdGggYWxsIGN1cnJlbnQgaXRlbXMKKyAqCisgKiAgVGhpcyBvcHRpb25hbCBjYWxsYmFjayBpcyBjYWxsZWQgcHJpb3IgdG8gYWxsCisgKiAgaXRlbSdzIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgY29udGFpbmVyLiBJZiB5b3UKKyAqICBuZWVkIHRvIGRvIGFueSBwcm9jZXNzaW5nIGJlZm9yZSB0aGF0LCBkbyBpdCBoZXJlLgorICoKKyAqIEBub3RlCisgKiAgVGhlIE1GRCBoZWxwZXIgd2lsbCB0YWtlIGNhcmUgb2YgcmVsZWFzaW5nIGFsbCB0aGUgcm93IGNvbnRleHRzLgorICoKKyAqLwordm9pZAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2ZyZWUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzgwOk06IEZyZWUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgY29udGFpbmVyIGRhdGEuCisgICAgICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9mcmVlICovCisKKy8qKgorICogcHJlcGFyZSByb3cgZm9yIHByb2Nlc3NpbmcuCisgKgorICogIFdoZW4gdGhlIGFnZW50IGhhcyBsb2NhdGVkIHRoZSByb3cgZm9yIGEgcmVxdWVzdCwgdGhpcyBmdW5jdGlvbiBpcworICogIGNhbGxlZCB0byBwcmVwYXJlIHRoZSByb3cgZm9yIHByb2Nlc3NpbmcuIElmIHlvdSBmdWxseSBwb3B1bGF0ZWQKKyAqICB0aGUgZGF0YSBjb250ZXh0IGR1cmluZyB0aGUgaW5kZXggc2V0dXAgcGhhc2UsIHlvdSBtYXkgbm90IG5lZWQgdG8KKyAqICBkbyBhbnl0aGluZy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eCBwb2ludGVyIHRvIGEgY29udGV4dC4KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICA6IG90aGVyIGVycm9yLgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19wcmVwKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dfcHJlcCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzkwOm86IFByZXBhcmUgcm93IGZvciByZXF1ZXN0LgorICAgICAqIElmIHBvcHVsYXRpbmcgcm93IGRhdGEgd2FzIGRlbGF5ZWQsIHRoaXMgaXMgdGhlIHBsYWNlIHRvCisgICAgICogZmlsbCBpbiB0aGUgcm93IGZvciB0aGlzIHJlcXVlc3QuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19wcmVwICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY5OGU5MQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJAorICoKKyAqICRJZDppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5oIDE0MTcwIDIwMDctMDQtMjkgMDA6MTI6MzJaIHZhcnVuX2MkCisgKi8KKyNpZm5kZWYgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfREFUQV9BQ0NFU1NfSAorI2RlZmluZSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9EQVRBX0FDQ0VTU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhUYWJsZSBpcyBzdWJpZCAzNiBvZiBpcC4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNiwgbGVuZ3RoOiA4CisgICAgICovCisKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbml0X2RhdGEKKyAgICAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWcpOworCisKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZSk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfcHRyKTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKworI2RlZmluZSBNQVhfTElORV9TSVpFIDI1NgorICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dfcHJlcChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9EQVRBX0FDQ0VTU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZW51bXMuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9lbnVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3OWVjODgKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZW51bXMuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICA6IGdlbmVyaWMtdGFibGUtZW51bXMubTJjIDEyNTI2IDIwMDUtMDctMTUgMjI6NDE6MTZaIHJzdG9yeSAkCisgKgorICogJElkOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2VudW1zLmggMTQxNzAgMjAwNy0wNC0yOSAwMDoxMjozMlogdmFydW5fYyQKKyAqLworI2lmbmRlZiBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9FTlVNU19ICisjZGVmaW5lIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0VOVU1TX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBOT1RFUyBvbiBlbnVtcworICAgICAqID09PT09PT09PT09PT09CisgICAgICoKKyAgICAgKiBWYWx1ZSBNYXBwaW5nCisgICAgICogLS0tLS0tLS0tLS0tLQorICAgICAqIElmIHRoZSB2YWx1ZXMgZm9yIHlvdXIgZGF0YSB0eXBlIGRvbid0IGV4YWN0bHkgbWF0Y2ggdGhlCisgICAgICogcG9zc2libGUgdmFsdWVzIGRlZmluZWQgYnkgdGhlIG1pYiwgeW91IHNob3VsZCBtYXAgdGhlbQorICAgICAqIGJlbG93LiBGb3IgZXhhbXBsZSwgYSBib29sZWFuIGZsYWcgKDEvMCkgaXMgdXN1YWxseSByZXByZXNlbnRlZAorICAgICAqIGFzIGEgVHJ1dGhWYWx1ZSBpbiBhIE1JQiwgd2hpY2ggbWFwcyB0byB0aGUgdmFsdWVzICgxLzIpLgorICAgICAqCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBlbnVtIGRlZmluaXRpb25zIGZvciB0YWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0VOVU1TX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDc2OWFkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jCkBAIC0wLDAgKzEsMTEyNCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTU4OTkgJCBvZiAkIAorICoKKyAqICRJZDppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYyAxNDE3MCAyMDA3LTA0LTI5IDAwOjEyOjMyWiB2YXJ1bl9jJAorICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgiCisKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisKKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaCIKKworI2luY2x1ZGUgPGN0eXBlLmg+CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4VGFibGUgaXMgc3ViaWQgMzYgb2YgaXAuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LCBsZW5ndGg6IDgKKyAqLwordHlwZWRlZiBzdHJ1Y3QgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlX2N0eF9zIHsKKworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlOworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqdXNlcl9jdHg7CisKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIHRibF9pbmZvOworCisgICAgbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tZXRob2RzIGFjY2Vzc19tdWx0aXBsZXhlcjsKKworfSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4OworCitzdGF0aWMgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlX2N0eAorICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eDsKKworc3RhdGljIHZvaWQgICAgCitfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQKKyhpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KTsKK3N0YXRpYyB2b2lkICAgIAorX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bgorKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpOworc3RhdGljIGludAorX2NhY2hlX2xvYWQobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICp2bWFnaWMpOworc3RhdGljIHZvaWQKK19jYWNoZV9mcmVlKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqbWFnaWMpOworCisKK25ldHNubXBfY29udGFpbmVyICoKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKK30KKworaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICoKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnVzZXJfY3R4OworfQorCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKgoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uX3NldAorICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpCit7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICpvbGQgPQorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHgudXNlcl9jdHg7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOworICAgIHJldHVybiBvbGQ7Cit9CisKK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKK3sKKyAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LmNvbnRhaW5lcik7Cit9CisKKy8qCisgKiBtZmQgbXVsdGlwbGV4ZXIgbW9kZXMKKyAqLworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wb3N0X3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vYmplY3RfbG9va3VwOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X3ZhbHVlczsKKy8qKgorICogQGludGVybmFsCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSAKKyAqICAgIChEZWZpbmUgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkKQorICovCit2b2lkCitfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UKKyAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogcmVnX3B0ciwgdV9sb25nIGZsYWdzKQoreworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyAqYWNjZXNzX211bHRpcGxleGVyID0KKyAgICAgICAgJmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC5hY2Nlc3NfbXVsdGlwbGV4ZXI7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGJsX2luZm8gPQorICAgICAgICAmaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnRibF9pbmZvOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcjsKKyAgICBpbnQgICAgICAgICAgICAgbWZkX21vZGVzID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UiLCAiY2FsbGVkXG4iKSk7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzYXZlIGludGVyZmFjZSBjb250ZXh0IGZvciBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICAgICAqLworICAgIC8qCisgICAgICogU2V0dGluZyB1cCB0aGUgdGFibGUncyBkZWZpbml0aW9uCisgICAgICovCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGJsX2luZm8sIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKworICAgIC8qCisgICAgICogRGVmaW5lIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGFjY2Vzc2libGUgY29sdW1ucy4gIFRoaXMKKyAgICAgKiBvcHRpbWl6ZXMgcmV0cml2YWwuIAorICAgICAqLworICAgIHRibF9pbmZvLT5taW5fY29sdW1uID0gSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfTUlOX0NPTDsKKyAgICB0YmxfaW5mby0+bWF4X2NvbHVtbiA9IElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX01BWF9DT0w7CisKKyAgICAvKgorICAgICAqIHNhdmUgdXNlcnMgY29udGV4dAorICAgICAqLworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IHJlZ19wdHI7CisKKyAgICAvKgorICAgICAqIGNhbGwgZGF0YSBhY2Nlc3MgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luaXRfZGF0YShyZWdfcHRyKTsKKworICAgIC8qCisgICAgICogc2V0IHVwIHRoZSBjb250YWluZXIKKyAgICAgKi8KKyAgICBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQKKyAgICAgICAgKCZpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHgpOworICAgIGlmIChOVUxMID09IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBpbml0aWFsaXplIGNvbnRhaW5lciBmb3IgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBhY2Nlc3NfbXVsdGlwbGV4ZXI6IFJFUVVJUkVEIHdyYXBwZXIgZm9yIGdldCByZXF1ZXN0IGhhbmRsaW5nCisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3RfbG9va3VwID0KKyAgICAgICAgX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vYmplY3RfbG9va3VwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Z2V0X3ZhbHVlcyA9CisgICAgICAgIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X3ZhbHVlczsKKworICAgIC8qCisgICAgICogbm8gd3JhcHBlcnMgeWV0CisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCA9CisgICAgICAgIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3Q7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QgPQorICAgICAgICBfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdDsKKworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIENyZWF0ZSBhIHJlZ2lzdHJhdGlvbiwgc2F2ZSBvdXIgcmVnIGRhdGEsIHJlZ2lzdGVyIHRhYmxlLgorICAgICAqLworICAgIERFQlVHTVNHVEwoKCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZTppbml0X2lwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwKKyAgICAgICAgICAgICAgICAiUmVnaXN0ZXJpbmcgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgYXMgYSBtaWJzLWZvci1kdW1taWVzIHRhYmxlLlxuIikpOworICAgIGhhbmRsZXIgPQorICAgICAgICBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX211bHRpcGxleGVyX2dldChhY2Nlc3NfbXVsdGlwbGV4ZXIpOworICAgIHJlZ2luZm8gPQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZSgiaXB2NlNjb3BlWm9uZUluZGV4VGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgaWYgKE5VTEwgPT0gcmVnaW5mbykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlZ2luZm8tPm15X3JlZ192b2lkID0gJmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eDsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzZXQgdXAgYmFieSBzdGVwcyBoYW5kbGVyLCBjcmVhdGUgaXQgYW5kIGluamVjdCBpdAorICAgICAqLworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfT0JKRUNUX0xPT0tVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9JUlJFVkVSU0lCTEVfQ09NTUlUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9zeW50YXhfY2hlY2tzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX09CSkVDVDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BSRV9SRVFVRVNUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fU0VUVVA7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jbGVhbnVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ0xFQU5VUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHMpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRTOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cm93X2NyZWF0aW9uKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1JPV19DUkVBVEU7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29uc2lzdGVuY3lfY2hlY2tzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX0NPTlNJU1RFTkNZOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7CisKKyAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3Qgcm93X21lcmdlIGhlbHBlciB3aXRoIHByZWZpeCByb290b2lkX2xlbiArIDIgKGVudHJ5LmNvbCkKKyAgICAgKi8KKyAgICBoYW5kbGVyID0gbmV0c25tcF9nZXRfcm93X21lcmdlX2hhbmRsZXIocmVnaW5mby0+cm9vdG9pZF9sZW4gKyAyKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjb250YWluZXJfdGFibGUgaGVscGVyCisgICAgICovCisgICAgaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2hhbmRsZXJfZ2V0KHRibF9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworICAgCisgICAgaWYgKE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LmNhY2hlKSB7CisgICAgICAgIGhhbmRsZXIgPQorICAgICAgICAgICAgbmV0c25tcF9jYWNoZV9oYW5kbGVyX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHguY2FjaGUpOworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworICAgIH0KKworICAgIC8qCisgICAgICogcmVnaXN0ZXIgdGFibGUKKyAgICAgKi8KKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZ2luZm8sIHRibF9pbmZvKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFNodXRkb3duIHRoZSB0YWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICovCit2b2lkCitfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfc2h1dGRvd25faW50ZXJmYWNlCisgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqIHJlZ19wdHIpCit7CisgICAgLyoKKyAgICAgKiBzaHV0ZG93biB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bgorICAgICAgICAoJmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eCk7Cit9CisKK3ZvaWQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8gKnZjKQoreworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC50YmxfaW5mby52YWxpZF9jb2x1bW5zID0gdmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBjb252ZXJ0IHRoZSBpbmRleCBjb21wb25lbnQgc3RvcmVkIGluIHRoZSBjb250ZXh0IHRvIGFuIG9pZAorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpCit7CisgICAgaW50ICAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICAvKgorICAgICAqIHRlbXAgc3RvcmFnZSBmb3IgcGFyc2luZyBpbmRleGVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4KDEpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB2YXJiaW5kcworICAgICAqLworICAgIG1lbXNldCgmdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXgsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCkpOworICAgIHZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4LnR5cGUgPSBBU05fSU5URUdFUjsKKworICAgIC8qCisgICAgICogY2hhaW4gdGVtcCBpbmRleCB2YXJiaW5kcyB0b2dldGhlcgorICAgICAqLworICAgIHZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF90b19vaWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSCAKKyAgICAgKi8KKyAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgbWliX2lkeC0+aXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1pYl9pZHgtPmlwdjZTY29wZVpvbmVJbmRleElmSW5kZXgpKTsKKworCisgICAgZXJyID0gYnVpbGRfb2lkX25vYWxsb2Mob2lkX2lkeC0+b2lkcywgb2lkX2lkeC0+bGVuLCAmb2lkX2lkeC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsICZ2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCk7CisgICAgaWYgKGVycikKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yICVkIGNvbnZlcnRpbmcgaW5kZXggdG8gb2lkXG4iLCBlcnIpOworCisgICAgLyoKKyAgICAgKiBwYXJzaW5nIG1heSBoYXZlIGFsbG9jYXRlZCBtZW1vcnkuIGZyZWUgaXQuCisgICAgICovCisgICAgc25tcF9yZXNldF92YXJfYnVmZmVycygmdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXgpOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhfdG9fb2lkICovCisKKy8qKgorICogZXh0cmFjdCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBpbmRleGVzIGZyb20gYSBuZXRzbm1wX2luZGV4CisgKgorICogQHJldHZhbCBTTk1QX0VSUl9OT0VSUk9SICA6IG5vIGVycm9yCisgKiBAcmV0dmFsIFNOTVBfRVJSX0dFTkVSUiAgIDogZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQoreworICAgIGludCAgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgLyoKKyAgICAgKiB0ZW1wIHN0b3JhZ2UgZm9yIHBhcnNpbmcgaW5kZXhlcworICAgICAqLworICAgIC8qCisgICAgICogaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCgxKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9ICisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4OworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdmFyYmluZHMKKyAgICAgKi8KKyAgICBtZW1zZXQoJnZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4LCAweDAwLAorICAgICAgICAgICBzaXplb2YodmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXgpKTsKKyAgICB2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleC50eXBlID0gQVNOX0lOVEVHRVI7CisKKyAgICAvKgorICAgICAqIGNoYWluIHRlbXAgaW5kZXggdmFyYmluZHMgdG9nZXRoZXIKKyAgICAgKi8KKyAgICB2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleC5uZXh0X3ZhcmlhYmxlID0gTlVMTDsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhfZnJvbV9vaWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIHBhcnNlIHRoZSBvaWQgaW50byB0aGUgaW5kaXZpZHVhbCBpbmRleCBjb21wb25lbnRzCisgICAgICovCisgICAgZXJyID0gcGFyc2Vfb2lkX2luZGV4ZXMob2lkX2lkeC0+b2lkcywgb2lkX2lkeC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCk7CisgICAgaWYgKGVyciA9PSBTTk1QX0VSUl9OT0VSUk9SKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGNvcHkgb3V0IHZhbHVlcworICAgICAgICAgKi8KKyAgICAgICAgbWliX2lkeC0+aXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCA9CisgICAgICAgICAgICAqKChsb25nICopIHZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4LnZhbC5zdHJpbmcpOworCisKKyAgICB9CisKKyAgICAvKgorICAgICAqIHBhcnNpbmcgbWF5IGhhdmUgYWxsb2NhdGVkIG1lbW9yeS4gZnJlZSBpdC4KKyAgICAgKi8KKyAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzKCZ2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCk7CisKKyAgICByZXR1cm4gZXJyOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF9mcm9tX29pZCAqLworCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBAaW50ZXJuYWwKKyAqIGFsbG9jYXRlIHJlc291cmNlcyBmb3IgYSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4CisgKi8KK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9pbml0X2N0eCkKK3sKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4KTsKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgYSAiCisgICAgICAgICAgICAgICAgICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4LlxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChOVUxMICE9IGRhdGEpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiB0cmFjayBpZiB3ZSBnb3QgZGF0YSBmcm9tIHVzZXIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzIHw9IE1GRF9ST1dfREFUQV9GUk9NX1VTRVI7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhID0gZGF0YTsKKyAgICAgICAgfSBlbHNlIGlmIChOVUxMID09CisgICAgICAgICAgICAgICAgICAgKHJvd3JlcV9jdHgtPmRhdGEgPQorICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9kYXRhKCkpKSB7CisgICAgICAgICAgICBTTk1QX0ZSRUUocm93cmVxX2N0eCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgcm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzID0gcm93cmVxX2N0eC0+b2lkX3RtcDsKKworICAgIHJvd3JlcV9jdHgtPmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfbGlzdCA9IE5VTEw7CisKKyAgICAvKgorICAgICAqIGlmIHdlIGFsbG9jYXRlZCBkYXRhLCBjYWxsIGluaXQgcm91dGluZQorICAgICAqLworICAgIGlmICghKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREFUQV9GUk9NX1VTRVIpKSB7CisgICAgICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0KKyAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfaW5pdChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaW5pdF9jdHgpKSB7CisgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgICAgICByb3dyZXFfY3R4ID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByb3dyZXFfY3R4OworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4ICovCisKKy8qCisgKiBAaW50ZXJuYWwKKyAqIHJlbGVhc2UgcmVzb3VyY2VzIGZvciBhIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAqLwordm9pZAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4CisgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKHJvd3JlcV9jdHgpOworICAgIC8qCisgICAgICogZm9yIG5vbi10cmFuc2llbnQgZGF0YSwgZG9uJ3QgZnJlZSBkYXRhIHdlIGdvdCBmcm9tIHRoZSB1c2VyCisgICAgICovCisgICAgaWYgKChyb3dyZXFfY3R4LT5kYXRhKSAmJgorICAgICAgICAhKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREFUQV9GUk9NX1VTRVIpKQorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX2RhdGEocm93cmVxX2N0eC0+ZGF0YSk7CisKKworICAgIC8qCisgICAgICogZnJlZSBpbmRleCBvaWQgcG9pbnRlcgorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4LT5vaWRfaWR4Lm9pZHMgIT0gcm93cmVxX2N0eC0+b2lkX3RtcCkKKyAgICAgICAgZnJlZShyb3dyZXFfY3R4LT5vaWRfaWR4Lm9pZHMpOworCisgICAgU05NUF9GUkVFKHJvd3JlcV9jdHgpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHggKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgxICE9IG5ldHNubXBfcm93X21lcmdlX3N0YXR1c19maXJzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgInNraXBwaW5nIGFkZGl0aW9uYWwgcHJlX3JlcXVlc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgfQorCisgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnVzZXJfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImlwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3RcbiIsIHJjKSk7CisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3ByZV9yZXF1ZXN0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBpbnQgICAgICAgICAgICAgcmMsIHBhY2tldF9yYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogcmVsZWFzZSByb3cgY29udGV4dCwgaWYgZGVsZXRlZAorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4ICYmIChyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RFTEVURUQpKQorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIHdhaXQgZm9yIGxhc3QgY2FsbCBiZWZvcmUgY2FsbGluZyB1c2VyCisgICAgICovCisgICAgaWYgKDEgIT0gbmV0c25tcF9yb3dfbWVyZ2Vfc3RhdHVzX2xhc3QocmVnaW5mbywgYWd0cmVxX2luZm8pKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICJ3YWl0aW5nIGZvciBsYXN0IHBvc3RfcmVxdWVzdFxuIikpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICB9CisKKyAgICBwYWNrZXRfcmMgPSBuZXRzbm1wX2NoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcihhZ3RyZXFfaW5mby0+YXNwLCAwKTsKKyAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnVzZXJfY3R4LCBwYWNrZXRfcmMpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiaXB2NlNjb3BlWm9uZUluZGV4VGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wb3N0X3JlcXVlc3RcbiIsIHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKK19tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2Zyb21faW5kZXgobmV0c25tcF9pbmRleCAqIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpyY19wdHIpCit7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggbWliX2lkeDsKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfZnJvbV9pbmRleCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJjX3B0cikKKyAgICAgICAgcmNfcHRyID0gJnJjOworICAgICpyY19wdHIgPSBNRkRfU1VDQ0VTUzsKKworICAgIG1lbXNldCgmbWliX2lkeCwgMHgwLCBzaXplb2YobWliX2lkeCkpOworCisgICAgLyoKKyAgICAgKiB0cnkgdG8gcGFyc2Ugb2lkCisgICAgICovCisgICAgKnJjX3B0ciA9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4X2Zyb21fb2lkKG9pZF9pZHgsICZtaWJfaWR4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gKnJjX3B0cikgeworICAgICAgICBERUJVR01TR1QoKCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZSIsICJlcnJvciBwYXJzaW5nIGluZGV4XG4iKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qCisgICAgICogYWxsb2NhdGUgbmV3IGNvbnRleHQKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4ID0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChOVUxMLCBOVUxMKTsKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgICpyY19wdHIgPSBNRkRfRVJST1I7CisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgIC8qIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLworICAgIH0KKworICAgIG1lbWNweSgmcm93cmVxX2N0eC0+dGJsX2lkeCwgJm1pYl9pZHgsIHNpemVvZihtaWJfaWR4KSk7CisKKworICAgIC8qCisgICAgICogY29weSBpbmRleGVzCisgICAgICovCisgICAgcm93cmVxX2N0eC0+b2lkX2lkeC5sZW4gPSBvaWRfaWR4LT5sZW47CisgICAgbWVtY3B5KHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcywgb2lkX2lkeC0+b2lkcywKKyAgICAgICAgICAgb2lkX2lkeC0+bGVuICogc2l6ZW9mKG9pZCkpOworCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2Zyb21faW5kZXggKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vYmplY3RfbG9va3VwKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vYmplY3RfbG9va3VwIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBnZXQgb3VyIGNvbnRleHQgZnJvbSBtZmQKKyAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4ICppZl9jdHggPQorICAgICAqICAgICAgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4ICopcmVnaW5mby0+bXlfcmVnX3ZvaWQ7CisgICAgICovCisKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YmxyZXFfaW5mbzsKKyAgICAgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisKKyAgICAgICAgdGJscmVxX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0cyk7CisgICAgICAgIGlmIChOVUxMID09IHRibHJlcV9pbmZvKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAicmVxdWVzdCBoYWQgbm8gdGFibGUgaW5mb1xuIik7CisgICAgICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogdHJ5IGNyZWF0ZSByb3dyZXEKKyAgICAgICAgICovCisgICAgICAgIG9pZF9pZHgub2lkcyA9IHRibHJlcV9pbmZvLT5pbmRleF9vaWQ7CisgICAgICAgIG9pZF9pZHgubGVuID0gdGJscmVxX2luZm8tPmluZGV4X29pZF9sZW47CisKKyAgICAgICAgcm93cmVxX2N0eCA9CisgICAgICAgICAgICBfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9mcm9tX2luZGV4KCZvaWRfaWR4LCAmcmMpOworICAgICAgICBpZiAoTUZEX1NVQ0NFU1MgPT0gcmMpIHsKKyAgICAgICAgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgfD0gTUZEX1JPV19DUkVBVEVEOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIGFkZCByb3dyZXFfY3R4IHRvIHJlcXVlc3QgZGF0YSBsaXN0cworICAgICAgICAgICAgICovCisgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfaW5zZXJ0KHJlcXVlc3RzLCAobmV0c25tcF9pbmRleCAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgcmMpOworICAgIGVsc2UKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93X3ByZXAocm93cmVxX2N0eCk7CisKKyAgICByZXR1cm4gU05NUF9WQUxJREFURV9FUlIocmMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX29iamVjdF9sb29rdXAgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogR0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogQGludGVybmFsCisgKiBSZXRyaWV2ZSB0aGUgdmFsdWUgZm9yIGEgcGFydGljdWxhciBjb2x1bW4KKyAqLworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF9jb2x1bW4oaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9nZXRfY29sdW1uIiwgImNhbGxlZCBmb3IgJWRcbiIsIGNvbHVtbikpOworCisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgc3dpdGNoIChjb2x1bW4pIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWwoMikvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWExJTktMT0NBTDoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleDMoMykvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWDM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4M19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWwoNCkvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWEFETUlOTE9DQUw6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbF9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbCg1KS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYU0lURUxPQ0FMOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbF9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4Nig2KS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYNjoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXg2X2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4Nyg3KS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYNzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXg3X2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWwoOCkvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWE9SR0FOSVpBVElPTkxPQ0FMOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXg5KDkpL0luZXRab25lSW5kZXgvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9IIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVg5OgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleDlfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhBKDEwKS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYQToKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXhBX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4QigxMSkvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWEI6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4Ql9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleEMoMTIpL0luZXRab25lSW5kZXgvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9IIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhDOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleENfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhEKDEzKS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYRDoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXhEX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBpZiAoSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfTUlOX0NPTCA8PSBjb2x1bW4KKyAgICAgICAgICAgICYmIGNvbHVtbiA8PSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9NQVhfQ09MKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9nZXRfY29sdW1uIiwgImFzc3VtZSBjb2x1bW4gJWQgaXMgcmVzZXJ2ZWRcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmMgPSBNRkRfU0tJUDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBjb2x1bW4gJWQgaW4gX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF9jb2x1bW5cbiIsCisgICAgICAgICAgICAgICAgICAgICBjb2x1bW4pOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF9jb2x1bW4gKi8KKworaW50CitfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF92YWx1ZXMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICB1X2NoYXIgICAgICAgICAqb2xkX3N0cmluZzsKKyAgICB2b2lkICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spICh2b2lkICopOworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF92YWx1ZXMiLCAiY2FsbGVkXG4iKSk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIGZvciAoOyByZXF1ZXN0czsgcmVxdWVzdHMgPSByZXF1ZXN0cy0+bmV4dCkgeworICAgICAgICAvKgorICAgICAgICAgKiBzYXZlIG9sZCBwb2ludGVyLCBzbyB3ZSBjYW4gZnJlZSBpdCBpZiByZXBsYWNlZAorICAgICAgICAgKi8KKyAgICAgICAgb2xkX3N0cmluZyA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmc7CisgICAgICAgIGRhdGFGcmVlSG9vayA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPmRhdGFGcmVlSG9vazsKKyAgICAgICAgaWYgKE5VTEwgPT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZyA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZjsKKyAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gPQorICAgICAgICAgICAgICAgIHNpemVvZihyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpOworICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZiA9PQorICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuICE9CisgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZikpCisgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiA9CisgICAgICAgICAgICAgICAgICAgIHNpemVvZihyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZ2V0IGNvbHVtbiBkYXRhCisgICAgICAgICAqLworICAgICAgICB0cmkgPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0cyk7CisgICAgICAgIGlmIChOVUxMID09IHRyaSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJjID0gX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF9jb2x1bW4ocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaS0+Y29sbnVtKTsKKyAgICAgICAgaWYgKHJjKSB7CisgICAgICAgICAgICBpZiAoTUZEX1NLSVAgPT0gcmMpIHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlID0gU05NUF9OT1NVQ0hJTlNUQU5DRTsKKyAgICAgICAgICAgICAgICByYyA9IFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoTlVMTCA9PSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTlVMTCB2YXJiaW5kIGRhdGEgcG9pbnRlciFcbiIpOworICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJjKQorICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcihyZXF1ZXN0cywgU05NUF9WQUxJREFURV9FUlIocmMpKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBpZiB0aGUgYnVmZmVyIHdhc24ndCB1c2VkIHByZXZpb3VzbHkgZm9yIHRoZSBvbGQgZGF0YSAoaS5lLiBpdAorICAgICAgICAgKiB3YXMgYWxsY29hdGVkIG1lbW9yeSkgIGFuZCB0aGUgZ2V0IHJvdXRpbmUgcmVwbGFjZWQgdGhlIHBvaW50ZXIsCisgICAgICAgICAqIHdlIG5lZWQgdG8gZnJlZSB0aGUgcHJldmlvdXMgcG9pbnRlci4KKyAgICAgICAgICovCisgICAgICAgIGlmIChvbGRfc3RyaW5nICYmIChvbGRfc3RyaW5nICE9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZikgJiYKKyAgICAgICAgICAgIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nICE9IG9sZF9zdHJpbmcpKSB7CisgICAgICAgICAgICBpZiAoZGF0YUZyZWVIb29rKQorICAgICAgICAgICAgICAgICgqZGF0YUZyZWVIb29rKSAob2xkX3N0cmluZyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJlZShvbGRfc3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgcmVzdWx0cyAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X3ZhbHVlcyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFNFVCBwcm9jZXNzaW5nCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogU0VUIFBST0NFU1NJTkcgTk9UIEFQUExJQ0FCTEUgKHBlciBNSUIgb3IgdXNlciBzZXR0aW5nKQorICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBEQVRBIEFDQ0VTUworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2l0ZW1fZnJlZShpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOl9jb250YWluZXJfaXRlbV9mcmVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KQorICAgICAgICByZXR1cm47CisKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jb250YWluZXJfaXRlbV9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOl9jb250YWluZXJfZnJlZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvbnRhaW5lciBpbiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyKTsKKworICAgIC8qCisgICAgICogZnJlZSBhbGwgaXRlbXMuIGluZWZmaWNpZW50LCBidXQgZWFzeS4KKyAgICAgKi8KKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2NvbnRhaW5lcl9pdGVtX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgIE5VTEwpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGluaXRpYWxpemUgdGhlIGNvbnRhaW5lciB3aXRoIGZ1bmN0aW9ucyBvciB3cmFwcGVycworICovCit2b2lkCitfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQKKyAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBjb250YWluZXIgaW5pdAorICAgICAqLworICAgIGlmX2N0eC0+Y2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAgLyogdGltZW91dCBpbiBzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZV9sb2FkLCBfY2FjaGVfZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRfc2l6ZSk7CisKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNhY2hlKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBmb3IgaXBTY29wZVpvbmVJbmRleFRhYmxlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmX2N0eC0+Y2FjaGUtPmZsYWdzID0gTkVUU05NUF9DQUNIRV9ET05UX0lOVkFMSURBVEVfT05fU0VUOworCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQoJmlmX2N0eC0+Y29udGFpbmVyLCBpZl9jdHgtPmNhY2hlKTsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikKKyAgICAgICAgaWZfY3R4LT5jb250YWluZXIgPQorICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZmluZAorICAgICAgICAgICAgKCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY29udGFpbmVyIGluICIKKyAgICAgICAgICAgICAgICAgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoTlVMTCAhPSBpZl9jdHgtPmNhY2hlKQorICAgICAgICBpZl9jdHgtPmNhY2hlLT5tYWdpYyA9ICh2b2lkICopIGlmX2N0eC0+Y29udGFpbmVyOworCisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzaHV0ZG93biB0aGUgY29udGFpbmVyIHdpdGggZnVuY3Rpb25zIG9yIHdyYXBwZXJzCisgKi8KK3ZvaWQKK19pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2h1dGRvd24KKyAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsICJjYWxsZWRcbiIpKTsKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpZl9jdHgtPmNvbnRhaW5lcik7CisKKyAgICBfY29udGFpbmVyX2ZyZWUoaWZfY3R4LT5jb250YWluZXIpOworCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KKworCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAorICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQoreworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgb2lkICAgICAgICAgICAgIG9pZF90bXBbTUFYX09JRF9MRU5dOworICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIC8qCisgICAgICogc2V0IHVwIHN0b3JhZ2UgZm9yIE9JRAorICAgICAqLworICAgIG9pZF9pZHgub2lkcyA9IG9pZF90bXA7CisgICAgb2lkX2lkeC5sZW4gPSBzaXplb2Yob2lkX3RtcCkgLyBzaXplb2Yob2lkKTsKKworICAgIC8qCisgICAgICogY29udmVydAorICAgICAqLworICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhfdG9fb2lkKCZvaWRfaWR4LCBtaWJfaWR4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcm93cmVxX2N0eCA9CisgICAgICAgIENPTlRBSU5FUl9GSU5EKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC5jb250YWluZXIsICZvaWRfaWR4KTsKKworICAgIHJldHVybiByb3dyZXFfY3R4OworfQorCitzdGF0aWMgaW50CitfY2FjaGVfbG9hZChuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKnZtYWdpYykKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBTY29wZVpvbmVJbmRleFRhYmxlOl9jYWNoZV9sb2FkIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNhY2hlIGZvciBpcFNjb3BlWm9uZUluZGV4VGFibGVfY2FjaGVfbG9hZFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgLyoqIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmb3IgYW4gaW52YWxpZCBvciBleHBpcmVkIGNhY2hlICovCisgICAgbmV0c25tcF9hc3NlcnQoKDAgPT0gY2FjaGUtPnZhbGlkKSB8fCAoMSA9PSBjYWNoZS0+ZXhwaXJlZCkpOworCisgICAgLyoKKyAgICAgKiBjYWxsIHVzZXIgY29kZQorICAgICAqLworICAgIHJldHVybiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfbG9hZCgobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFnaWMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfbG9hZCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwU2NvcGVab25lSW5kZXhUYWJsZTpfY2FjaGVfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiaW52YWxpZCBjYWNoZSBpbiBpcFNjb3BlWm9uZUluZGV4VGFibGVfY2FjaGVfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250YWluZXIgPSAobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPm1hZ2ljOworCisgICAgX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9mcmVlICovCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmMzMTA5Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE1ODk5ICQgb2YgJAorICoKKyAqICRJZDppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaCAxNDE3MCAyMDA3LTA0LTI5IDAwOjEyOjMyWiB2YXJ1bl9jJAorICovCisvKiogQGluZ3JvdXAgaW50ZXJmYWNlOiBSb3V0aW5lcyB0byBpbnRlcmZhY2UgdG8gTmV0LVNOTVAKKyAqCisgKiBcd2FybmluZyBUaGlzIGNvZGUgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgY2FsbGVkIGRpcmVjdGx5LAorICogICAgICAgICAgb3IgdXNlZCB0byBpbnRlcnByZXQgZnVuY3Rpb25hbGl0eS4gSXQgaXMgc3ViamVjdCB0bworICogICAgICAgICAgY2hhbmdlIGF0IGFueSB0aW1lLgorICogCisgKiBAeworICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyNpZm5kZWYgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfSU5URVJGQUNFX0gKKyNkZWZpbmUgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfSU5URVJGQUNFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oIgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKiBQVUJMSUMgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZQorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jdHgsIHVfbG9uZyBmbGFncyk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UKKyAgICAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY3R4KTsKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAqaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKTsKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAqaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uX3NldAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKTsKKworICAgIG5ldHNubXBfY29udGFpbmVyICppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpOworICAgIGludCAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKTsKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgKmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YSAqLCB2b2lkICopOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgKKyAgICAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF90b19vaWQobmV0c25tcF9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOworICAgIGludCAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CisKKyAgICAvKgorICAgICAqIGFjY2VzcyB0byBjZXJ0YWluIGludGVybmFscy4gdXNlIHdpdGggY2F1dGlvbiEKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbyAqdmMpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0lOVEVSRkFDRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNGRhYTIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkcy5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1vaWRzLm0yYyAxMjg1NSAyMDA1LTA5LTI3IDE1OjU2OjA4WiByc3RvcnkgJAorICoKKyAqICRJZDppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmggMTQxNzAgMjAwNy0wNC0yOSAwMDoxMjozMlogdmFydW5fYyQKKyAqLworI2lmbmRlZiBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9PSURTX0gKKyNkZWZpbmUgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfT0lEU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisgICAgLyoKKyAgICAgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSAKKyAgICAgKi8KKyNkZWZpbmUgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfT0lEICAgICAgICAgICAgICAxLDMsNiwxLDIsMSw0LDM2CisKKyNkZWZpbmUgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWElGSU5ERVggICAgICAgICAxCisKKyNkZWZpbmUgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWExJTktMT0NBTCAgICAgICAgIDIKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYMyAgICAgICAgIDMKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYQURNSU5MT0NBTCAgICAgICAgIDQKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYU0lURUxPQ0FMICAgICAgICAgNQorCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVg2ICAgICAgICAgNgorCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVg3ICAgICAgICAgNworCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhPUkdBTklaQVRJT05MT0NBTCAgICAgICAgIDgKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYOSAgICAgICAgIDkKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYQSAgICAgICAgIDEwCisKKyNkZWZpbmUgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWEIgICAgICAgICAxMQorCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhDICAgICAgICAgMTIKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYRCAgICAgICAgIDEzCisKKworI2RlZmluZSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9NSU5fQ09MICAgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWExJTktMT0NBTAorI2RlZmluZSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9NQVhfQ09MICAgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWEQKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX09JRFNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jIGIvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jCmluZGV4IDZhM2I4MTIuLjNiOTE1YzYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYworKysgYi9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlIDxrc3RhdC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpbmNsdWRlIDxzeXMvc29ja2lvLmg+CiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgpAQCAtMTAzLDEyICsxMDQsMjcgQEAKICAgICB7TUlCX1RSQU5TTUlTU0lPTiwgMCwgKHZvaWQgKikgLTEsIDAsIDAsIDAsIDB9LAogICAgIHtNSUJfU05NUCwgMCwgKHZvaWQgKikgLTEsIDAsIDAsIDAsIDB9LAogI2lmZGVmIFNPTEFSSVNfSEFWRV9JUFY2X01JQl9TVVBQT1JUCisjaWZkZWYgU09MQVJJU19IQVZFX1JGQzQyOTNfU1VQUE9SVAorICAgIHtNSUJfSVBfVFJBRkZJQ19TVEFUUywgMjAgKiBzaXplb2YobWliMl9pcElmU3RhdHNFbnRyeV90KSwgKHZvaWQgKiktMSwgMCwKKyAgICAgMzAsIDAsIDB9LAorICAgIHtNSUJfSVA2LCAyMCAqIHNpemVvZihtaWIyX2lwSWZTdGF0c0VudHJ5X3QpLCAodm9pZCAqKS0xLCAwLCAzMCwgMCwgMH0sCisjZWxzZQorICAgIHtNSUJfSVA2LCAyMCAqIHNpemVvZihtaWIyX2lwdjZJZlN0YXRzRW50cnlfdCksICh2b2lkICopLTEsIDAsIDMwLCAwLCAwfSwKKyNlbmRpZgogICAgIHtNSUJfSVA2X0FERFIsIDIwICogc2l6ZW9mKG1pYjJfaXB2NkFkZHJFbnRyeV90KSwgKHZvaWQgKiktMSwgMCwgMzAsIDAsIDB9LAogICAgIHtNSUJfVENQNl9DT05OLCAxMDAwICogc2l6ZW9mKG1pYjJfdGNwNkNvbm5FbnRyeV90KSwgKHZvaWQgKikgLTEsIDAsIDMwLAogICAgICAwLCAwfSwKICAgICB7TUlCX1VEUDZfRU5EUE9JTlQsIDEwMDAgKiBzaXplb2YobWliMl91ZHA2RW50cnlfdCksICh2b2lkICopIC0xLCAwLCAzMCwKICAgICAgMCwgMH0sCiAjZW5kaWYKKyNpZmRlZiBNSUIyX1NDVFAKKyAgICB7TUlCX1NDVFAsIHNpemVvZihtaWIyX3NjdHBfdCksICh2b2lkICopLTEsIDAsIDYwLCAwLCAwfSwKKyAgICB7TUlCX1NDVFBfQ09OTiwgc2l6ZW9mKG1pYjJfc2N0cENvbm5FbnRyeV90KSwgKHZvaWQgKiktMSwgMCwgNjAsIDAsIDB9LAorICAgIHtNSUJfU0NUUF9DT05OX0xPQ0FMLCBzaXplb2YobWliMl9zY3RwQ29ubkxvY2FsRW50cnlfdCksICh2b2lkICopLTEsIDAsCisgICAgIDYwLCAwLCAwfSwKKyAgICB7TUlCX1NDVFBfQ09OTl9SRU1PVEUsIHNpemVvZihtaWIyX3NjdHBDb25uUmVtb3RlRW50cnlfdCksICh2b2lkICopLTEsIDAsCisgICAgIDYwLCAwLCAwfSwKKyNlbmRpZgogICAgIHswfSwKIH07CiAKQEAgLTEzMSwxMCArMTQ3LDIwIEBACiAgICAge01JQjJfVFJBTlNNSVNTSU9OLCAwLH0sCiAgICAge01JQjJfU05NUCwgMCx9LAogI2lmZGVmIFNPTEFSSVNfSEFWRV9JUFY2X01JQl9TVVBQT1JUCisjaWZkZWYgU09MQVJJU19IQVZFX1JGQzQyOTNfU1VQUE9SVAorICAgIHtNSUIyX0lQLCBNSUIyX0lQX1RSQUZGSUNfU1RBVFN9LAorI2VuZGlmCisgICAge01JQjJfSVA2LCAwfSwKICAgICB7TUlCMl9JUDYsIE1JQjJfSVA2X0FERFJ9LAogICAgIHtNSUIyX1RDUDYsIE1JQjJfVENQNl9DT05OfSwKICAgICB7TUlCMl9VRFA2LCBNSUIyX1VEUDZfRU5UUll9LAogI2VuZGlmCisjaWZkZWYgTUlCMl9TQ1RQCisgICAge01JQjJfU0NUUCwgMH0sCisgICAge01JQjJfU0NUUCwgTUlCMl9TQ1RQX0NPTk59LAorICAgIHtNSUIyX1NDVFAsIE1JQjJfU0NUUF9DT05OX0xPQ0FMfSwKKyAgICB7TUlCMl9TQ1RQLCBNSUIyX1NDVFBfQ09OTl9SRU1PVEV9LAorI2VuZGlmCiAgICAgezB9LAogfTsKIApAQCAtMTQ5LDcgKzE3NSw3IEBACiAgICAgICAgICB2b2lkICpyZXNwLCBpbnQgKCpjb21wKSh2b2lkICosIHZvaWQgKiksIHZvaWQgKmFyZyk7CiAKIHN0YXRpYyBpbnQKLWdldG1pYihpbnQgZ3JvdXBuYW1lLCBpbnQgc3ViZ3JvdXBuYW1lLCB2b2lkICpzdGF0YnVmLCBzaXplX3Qgc2l6ZSwKK2dldG1pYihpbnQgZ3JvdXBuYW1lLCBpbnQgc3ViZ3JvdXBuYW1lLCB2b2lkICoqc3RhdGJ1Ziwgc2l6ZV90ICpzaXplLAogICAgICAgIHNpemVfdCBlbnRyeXNpemUsIHJlcV9lIHJlcV90eXBlLCB2b2lkICpyZXNwLCBzaXplX3QgKmxlbmd0aCwKICAgICAgICBpbnQgKCpjb21wKSh2b2lkICosIHZvaWQgKiksIHZvaWQgKmFyZyk7CiAKQEAgLTM0OCw3ICszNzQsOCBAQAogICAgIGtzdGF0X2N0bF90ICAgICprc2M7CiAgICAga3N0YXRfdCAgICAgICAgKmtzLCAqa3N0YXRfZGF0YTsKICAgICBrc3RhdF9uYW1lZF90ICAqZDsKLSAgICBzaXplX3QgICAgICAgICAgaSwgaW5zdGFuY2U7CisgICAgdWludF90ICAgICAgICAgIGk7CisgICAgaW50ICAgICAgICAgICAgIGluc3RhbmNlOwogICAgIGNoYXIgICAgICAgICAgICBtb2R1bGVfbmFtZVs2NF07CiAgICAgaW50ICAgICAgICAgICAgIHJldDsKICAgICB1X2xvbmdsb25nX3QgICAgdmFsOyAgICAvKiBUaGUgbGFyZ2VzdCB2YWx1ZSAqLwpAQCAtNjk4LDggKzcyNSw4IEBACiAJCSAgICAgICBjYWNoZXAtPmNhY2hlX3NpemUsIHJlcV90eXBlLAogCQkgICAgICAgKG1pYjJfaWZFbnRyeV90ICopICYgZXAsICZsZW5ndGgsIGNvbXAsIGFyZyk7CiAJfSBlbHNlIHsKLQkgICAgcmMgPSBnZXRtaWIobWliZ3IsIG1pYnRiLCBjYWNoZXAtPmNhY2hlX2FkZHIsCi0JCQljYWNoZXAtPmNhY2hlX3NpemUsIGVudHJ5c2l6ZSwgcmVxX3R5cGUsICZlcCwKKwkgICAgcmMgPSBnZXRtaWIobWliZ3IsIG1pYnRiLCAmKGNhY2hlcC0+Y2FjaGVfYWRkciksCisJCQkmKGNhY2hlcC0+Y2FjaGVfc2l6ZSksIGVudHJ5c2l6ZSwgcmVxX3R5cGUsICZlcCwKIAkJCSZsZW5ndGgsIGNvbXAsIGFyZyk7CiAJfQogCkBAIC04NDEsNyArODY4LDcgQEAKICAqLwogCiBzdGF0aWMgaW50Ci1nZXRtaWIoaW50IGdyb3VwbmFtZSwgaW50IHN1Ymdyb3VwbmFtZSwgdm9pZCAqc3RhdGJ1Ziwgc2l6ZV90IHNpemUsCitnZXRtaWIoaW50IGdyb3VwbmFtZSwgaW50IHN1Ymdyb3VwbmFtZSwgdm9pZCAqKnN0YXRidWYsIHNpemVfdCAqc2l6ZSwKICAgICAgICBzaXplX3QgZW50cnlzaXplLCByZXFfZSByZXFfdHlwZSwgdm9pZCAqcmVzcCwKICAgICAgICBzaXplX3QgKmxlbmd0aCwgaW50ICgqY29tcCkodm9pZCAqLCB2b2lkICopLCB2b2lkICphcmcpCiB7CkBAIC04NTMsNiArODgwLDcgQEAKICAgICBzdHJ1Y3QgVF9lcnJvcl9hY2sgKnRlYSA9IChzdHJ1Y3QgVF9lcnJvcl9hY2sgKikgYnVmOwogICAgIHN0cnVjdCBvcHRoZHIgICpyZXE7CiAgICAgZm91bmRfZSAgICAgICAgIHJlc3VsdCA9IEZPVU5EOworICAgIHNpemVfdCBvbGRzaXplOwogCiAgICAgREVCVUdNU0dUTCgoImtlcm5lbF9zdW5vczUiLCAiLi4uLi4uIGdldG1pYiAoJWQsICVkLCAuLi4pXG4iLAogCQlncm91cG5hbWUsIHN1Ymdyb3VwbmFtZSkpOwpAQCAtOTY2LDIzICs5OTQsNDIgQEAKIAkgKiByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGdldG1zZyBjYWxscwogCSAqLwogCi0Jc3RyYnVmLmJ1ZiA9IHN0YXRidWY7Ci0Jc3RyYnVmLm1heGxlbiA9IHNpemU7CisJc3RyYnVmLmJ1ZiA9ICpzdGF0YnVmOworCXN0cmJ1Zi5tYXhsZW4gPSAqc2l6ZTsKIAlzdHJidWYubGVuID0gMDsKIAlmbGFncyA9IDA7CiAJZG8gewogCSAgICByYyA9IGdldG1zZyhzZCwgTlVMTCwgJnN0cmJ1ZiwgJmZsYWdzKTsKIAkgICAgc3dpdGNoIChyYykgewogCSAgICBjYXNlIC0xOgotCQlyYyA9IC1FTk9TUjsKKwkJcmV0ID0gLUVOT1NSOworCQlzbm1wX3BlcnJvcigiZ2V0bXNnIik7CiAJCWdvdG8gUmV0dXJuOwogCiAJICAgIGRlZmF1bHQ6Ci0JCXJjID0gLUVOT0RBVEE7CisJCXNubXBfbG9nKExPR19FUlIsICJrZXJuZWxfc3Vub3M1L2dldG1pYjogZ2V0bXNnIHJldHVybmVkICVkXG4iLCByYyk7CisJCXJldCA9IC1FTk9EQVRBOwogCQlnb3RvIFJldHVybjsKIAogCSAgICBjYXNlIE1PUkVEQVRBOgorCQlERUJVR01TR1RMKCgia2VybmVsX3N1bm9zNSIsICIuLi4uLi4gZ2V0bWliIGluY3JlYXNlZCBidWZmZXIgc2l6ZVxuIikpOworCQlvbGRzaXplID0gKCBzdHJidWYuYnVmIC0gKGNoYXIgKikqc3RhdGJ1ZikgKyBzdHJidWYubGVuOworCQlzdHJidWYuYnVmID0gKGNoYXIgKilyZWFsbG9jKCpzdGF0YnVmLCBvbGRzaXplKzQwOTYpOworCQlpZihzdHJidWYuYnVmICE9IE5VTEwpIHsKKwkJICAgICpzdGF0YnVmID0gc3RyYnVmLmJ1ZjsKKwkJICAgICpzaXplID0gb2xkc2l6ZSArIDQwOTY7CisJCSAgICBzdHJidWYuYnVmID0gKGNoYXIgKikqc3RhdGJ1ZiArIG9sZHNpemU7CisJCSAgICBzdHJidWYubWF4bGVuID0gNDA5NjsKKwkJICAgIHJlc3VsdCA9IE5PVF9GT1VORDsKKwkJICAgIGJyZWFrOworCQl9CisJCXN0cmJ1Zi5idWYgPSAoY2hhciAqKSpzdGF0YnVmICsgKG9sZHNpemUgLSBzdHJidWYubGVuKTsKIAkgICAgY2FzZSAwOgorCQkvKiBmaXggYnVmZmVyIHRvIHJlYWwgc2l6ZSAmIHBvc2l0aW9uICovCisJCXN0cmJ1Zi5sZW4gKz0gc3RyYnVmLmJ1ZiAtIChjaGFyKikqc3RhdGJ1ZjsKKwkJc3RyYnVmLmJ1ZiA9ICpzdGF0YnVmOworCQlzdHJidWYubWF4bGVuID0gKnNpemU7CisKIAkJaWYgKHJlcV90eXBlID09IEdFVF9ORVhUICYmIHJlc3VsdCA9PSBORUVEX05FWFQpCiAJCSAgICAvKgogCQkgICAgICogRW5kIG9mIGJ1ZmZlciwgc28gIm5leHQiIGlzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBuZXh0CkBAIC05OTYsNiArMTA0Myw4IEBACiAJICAgIH0KIAl9IHdoaWxlIChyYyA9PSBNT1JFREFUQSAmJiByZXN1bHQgIT0gRk9VTkQpOwogCisJREVCVUdNU0dUTCgoImtlcm5lbF9zdW5vczUiLCAiLi4uLi4uIGdldG1pYiBidWZmZXIgc2l6ZSBpcyAlZFxuIiwgKnNpemUpKTsKKwogCWlmIChyZXN1bHQgPT0gRk9VTkQpIHsgICAgICAvKiBTZWFyY2ggaXMgc3VjY2Vzc2Z1bCAqLwogCSAgICBpZiAocmMgIT0gTU9SRURBVEEpIHsKIAkJcmV0ID0gMDsgICAgLyogRm91bmQgYW5kIG5vIG1vcmUgZGF0YSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oIGIvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oCmluZGV4IGNkZDIzNzUuLjBiZmZjYjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaAorKysgYi9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmgKQEAgLTcxLDEwICs3MSwyMCBAQAogICAgIE1JQl9UUkFOU01JU1NJT04gPSAxNCwKICAgICBNSUJfU05NUCA9IDE1LAogI2lmZGVmIFNPTEFSSVNfSEFWRV9JUFY2X01JQl9TVVBQT1JUCi0gICAgTUlCX0lQNl9BRERSID0gMTYsCisjaWZkZWYgU09MQVJJU19IQVZFX1JGQzQyOTNfU1VQUE9SVAorICAgIE1JQl9JUF9UUkFGRklDX1NUQVRTLAorI2VuZGlmCisgICAgTUlCX0lQNiwKKyAgICBNSUJfSVA2X0FERFIsCiAgICAgTUlCX1RDUDZfQ09OTiwKICAgICBNSUJfVURQNl9FTkRQT0lOVCwKICNlbmRpZgorI2lmZGVmIE1JQjJfU0NUUAorICAgIE1JQl9TQ1RQLAorICAgIE1JQl9TQ1RQX0NPTk4sCisgICAgTUlCX1NDVFBfQ09OTl9MT0NBTCwKKyAgICBNSUJfU0NUUF9DT05OX1JFTU9URSwKKyNlbmRpZgogICAgIE1JQkNBQ0hFX1NJWkUJCiB9IG1pYmdyb3VwX2U7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJLmggYi9hZ2VudC9taWJncm91cC9taWJJSS5oCmluZGV4IGM1NGQyMzMuLjFiMjEwNTcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkuaApAQCAtNyw3ICs3LDcgQEAKIGNvbmZpZ19yZXF1aXJlKG1pYklJL2F0KQogY29uZmlnX3JlcXVpcmUobWliSUkvaWZUYWJsZSkKIGNvbmZpZ19yZXF1aXJlKG1pYklJL2lwKQotY29uZmlnX3JlcXVpcmUobWliSUkvc25tcF9taWIpCitjb25maWdfdmVyc2lvbl9yZXF1aXJlKChtaWJJSS9zbm1wX21pYiwgNS41LCBtaWJJSS9zbm1wX21pYl81XzUpKQogY29uZmlnX3JlcXVpcmUobWliSUkvdGNwKQogY29uZmlnX3JlcXVpcmUobWliSUkvaWNtcCkKIGNvbmZpZ19yZXF1aXJlKG1pYklJL3VkcCkKQEAgLTMwLDMgKzMwLDEwIEBACiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUoaXAtbWliIGlwLWZvcndhcmQtbWliIHRjcC1taWIgdWRwLW1pYikKICNlbmRpZgorCisvKgorICogRm9yIFNvbGFyaXMsIGVuYWJsZSBhZGRpdGlvbmFsIHRhYmxlcyB3aGVuIGl0IGhhcyBleHRlbmRlZCBNSUIgc3VwcG9ydC4KKyAqLworI2lmIGRlZmluZWQoIHNvbGFyaXMyICkgJiYgZGVmaW5lZCggSEFWRV9NSUIyX0lQSUZTVEFUU0VOVFJZX1QgKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZSBpcC1taWIvaXBBZGRyZXNzVGFibGUpCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2F0LmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9hdC5jCmluZGV4IDQ1YWI1MTYuLmViZTRhMDMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2F0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYwpAQCAtMjUsNyArMjUsNyBAQAogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNlbmRpZgotI2lmIGRlZmluZWQoSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQorI2lmIGRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpCiAjZGVmaW5lIF9LRVJORUwgMQogI2RlZmluZSBfSV9ERUZJTkVEX0tFUk5FTAogI2VuZGlmCkBAIC0xNDYsOSArMTQ2LDEyIEBACiAgKiBpbmZvcm1hdGlvbiBhdCAKICAqLwogc3RydWN0IHZhcmlhYmxlMSBhdF92YXJpYWJsZXNbXSA9IHsKLSAgICB7QVRJRklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9hdEVudHJ5LCAxLCB7MX19LAotICAgIHtBVFBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2F0RW50cnksIDEsIHsyfX0sCi0gICAge0FUTkVUQUREUkVTUywgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9hdEVudHJ5LCAxLCB7M319CisgICAge0FUSUZJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYXRFbnRyeSwgMSwgezF9fSwKKyAgICB7QVRQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7Mn19LAorICAgIHtBVE5FVEFERFJFU1MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYXRFbnRyeSwgMSwgezN9fQogfTsKIAogLyoKQEAgLTMwNCw3ICszMDcsNyBAQAogCiAgICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIGxvd2VzdCwgb2lkX2xlbmd0aCAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gb2lkX2xlbmd0aDsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBJUE1FRElBSUZJTkRFWDogICAgICAgLyogYWxzbyBBVElGSU5ERVggKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YgbG9uZ19yZXR1cm47CkBAIC01MTAsNyArNTEzLDcgQEAKIHN0YXRpYyBjaGFyICAgICpsaW0sICpydG5leHQ7CiBzdGF0aWMgY2hhciAgICAqYXQgPSAwOwogI2Vsc2UKLSNpZmRlZiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQKKyNpZmRlZiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUCiBzdGF0aWMgc3RydWN0IGFycGhkICphdCA9IDA7CiBzdGF0aWMgc3RydWN0IGFycHRhYiAqYXRfcHRyLCBhdF9lbnRyeTsKIHN0YXRpYyBzdHJ1Y3QgYXJwY29tIGF0X2NvbTsKQEAgLTU4Myw3ICs1ODYsNyBAQAogI2lmZGVmIEFSUFRBQl9TSVpFX1NZTUJPTAogICAgICAgICBhdXRvX25saXN0KEFSUFRBQl9TSVpFX1NZTUJPTCwgKGNoYXIgKikgJmFycHRhYl9zaXplLAogICAgICAgICAgICAgICAgICAgIHNpemVvZiBhcnB0YWJfc2l6ZSk7Ci0jaWZkZWYgU1RSVUNUX0FSUEhEX0hBU19BVF9ORVhUCisjaWZkZWYgSEFWRV9TVFJVQ1RfQVJQSERfQVRfTkVYVAogICAgICAgICBhdCA9IChzdHJ1Y3QgYXJwaGQgKikgbWFsbG9jKGFycHRhYl9zaXplICogc2l6ZW9mKHN0cnVjdCBhcnBoZCkpOwogI2Vsc2UKICAgICAgICAgYXQgPSAoc3RydWN0IGFycHRhYiAqKSBtYWxsb2MoYXJwdGFiX3NpemUgKiBzaXplb2Yoc3RydWN0IGFycHRhYikpOwpAQCAtNTkyLDcgKzU5NSw3IEBACiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIH0KLSNpZmRlZiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQKKyNpZmRlZiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUCiAgICAgYXV0b19ubGlzdChBUlBUQUJfU1lNQk9MLCAoY2hhciAqKSBhdCwKICAgICAgICAgICAgICAgIGFycHRhYl9zaXplICogc2l6ZW9mKHN0cnVjdCBhcnBoZCkpOwogICAgIGF0X3B0ciA9IGF0WzBdLmF0X25leHQ7CkBAIC03NzksNyArNzgyLDcgQEAKICAgICByZWdpc3RlciBzdHJ1Y3QgYXJwdGFiICphdGFiOwogCiAgICAgd2hpbGUgKGFycHRhYl9jdXJyZW50IDwgYXJwdGFiX3NpemUpIHsKLSNpZmRlZiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQKKyNpZmRlZiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFRoZSBhcnAgdGFibGUgaXMgYW4gYXJyYXkgb2YgbGlua2VkIGxpc3RzIG9mIGFycHRhYiBlbnRyaWVzLgogICAgICAgICAgKiBVbnVzZWQgc2xvdHMgaGF2ZSBwb2ludGVycyBiYWNrIHRvIHRoZSBhcnJheSBlbnRyeSBpdHNlbGYgCkBAIC04MDgsOSArODExLDkgQEAKICAgICAgICAgYXRfcHRyID0gYXRfZW50cnkuYXRfbmV4dDsKICAgICAgICAgYXRhYiA9ICZhdF9lbnRyeTsKICAgICAgICAgKmlmSW5kZXggPSBhdF9jb20uYWNfaWYuaWZfaW5kZXg7ICAgICAgIC8qIG5vdCBzdHJpY3RseSBBUlBIRCAqLwotI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQgKi8KKyNlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFWRV9TVFJVQ1RfQVJQSERfQVRfTkVYVCAqLwogICAgICAgICBhdGFiID0gJmF0W2FycHRhYl9jdXJyZW50KytdOwotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQgKi8KKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFWRV9TVFJVQ1RfQVJQSERfQVRfTkVYVCAqLwogICAgICAgICBpZiAoIShhdGFiLT5hdF9mbGFncyAmIEFURl9DT00pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICppZlR5cGUgPSAoYXRhYi0+YXRfZmxhZ3MgJiBBVEZfUEVSTSkgPyA0IDogMzsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYwppbmRleCBjODBmMGVlLi5lNDMzODBhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqICBJQ01QIE1JQiBncm91cCBpbXBsZW1lbnRhdGlvbiAtIGljbXAuYwotICoKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CkBAIC05LDYgKzgsMTMgQEAKICNpZiBIQVZFX05FVElORVRfSVBfSUNNUF9ICiAjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CiAjZW5kaWYKKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyNpZiBIQVZFX05FVElORVRfSUNNUDZfSAorI2luY2x1ZGUgPG5ldGluZXQvaWNtcDYuaD4KKyNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KKwogI2lmIEhBVkVfTkVUSU5FVF9JQ01QX1ZBUl9ICiAjaW5jbHVkZSA8bmV0aW5ldC9pY21wX3Zhci5oPgogI2VuZGlmCkBAIC0xOSwxMCArMjUsMTAgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIgogI2luY2x1ZGUgImljbXAuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCiAKICNpZm5kZWYgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQKICNkZWZpbmUgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQJNQpAQCAtMzEsNiArMzcsMTQgQEAKICNkZWZpbmUgSUNNUF9TVEFUU19DQUNIRV9USU1FT1VUCU1JQl9TVEFUU19DQUNIRV9USU1FT1VUCiAjZW5kaWYKIAorLyogcmVkZWZpbmUgSUNNUDYgbWVzc2FnZSB0eXBlcyBmcm9tIGdsaWJjIDwgMi40IHRvIG5ld2VyIG5hbWVzICovCisjaWZkZWYgSUNNUDZfTUVNQkVSU0hJUF9RVUVSWQorI2RlZmluZSBNTERfTElTVEVORVJfUVVFUlkgSUNNUDZfTUVNQkVSU0hJUF9RVUVSWQorI2RlZmluZSBNTERfTElTVEVORVJfUkVQT1JUIElDTVA2X01FTUJFUlNISVBfUkVQT1JUCisjZGVmaW5lIE1MRF9MSVNURU5FUl9SRURVQ1RJT04gSUNNUDZfTUVNQkVSU0hJUF9SRURVQ1RJT04KKyNlbmRpZiAvKiBJQ01QNl9NRU1CRVJTSElQX1FVRVJZICovCisKKwogI2lmIGRlZmluZWQoSEFWRV9MSUJQRVJGU1RBVF9IKSAmJiAoZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikpICYmICFkZWZpbmVkKEZJUlNUX1BST1RPQ09MKQogI2luY2x1ZGUgPGxpYnBlcmZzdGF0Lmg+CiAjaWZkZWYgRklSU1RfUFJPVE9DT0wKQEAgLTU0LDQwICs2OCw1MDkgQEAKIAkgKioqKioqKioqKioqKioqKioqKioqLwogCiAKLQogLyoKICAqIERlZmluZSB0aGUgT0lEIHBvaW50ZXIgdG8gdGhlIHRvcCBvZiB0aGUgbWliIHRyZWUgdGhhdCB3ZSdyZQogICogcmVnaXN0ZXJpbmcgdW5kZXJuZWF0aCAKICAqLwotb2lkICAgICAgICAgICAgIGljbXBfb2lkW10gPSB7IFNOTVBfT0lEX01JQjIsIDUgfTsKK3N0YXRpYyBjb25zdCBvaWQgaWNtcF9vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgNSB9Oworc3RhdGljIGNvbnN0IG9pZCBpY21wX3N0YXRzX3RibF9vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgNSwgMjkgfTsKK3N0YXRpYyBjb25zdCBvaWQgaWNtcF9tc2dfc3RhdHNfdGJsX29pZFtdID0geyBTTk1QX09JRF9NSUIyLCA1LCAzMCB9OwogI2lmZGVmIFVTSU5HX01JQklJX0lQX01PRFVMRQogZXh0ZXJuIG9pZCAgICAgIGlwX21vZHVsZV9vaWRbXTsKIGV4dGVybiBpbnQgICAgICBpcF9tb2R1bGVfb2lkX2xlbjsKIGV4dGVybiBpbnQgICAgICBpcF9tb2R1bGVfY291bnQ7CiAjZW5kaWYKIAorI2lmZGVmIGxpbnV4CitzdHJ1Y3QgaWNtcF9zdGF0c190YWJsZV9lbnRyeSB7CisJdWludDMyX3QgaXBWZXI7CisgICAgICAgIHVpbnQzMl90IGljbXBTdGF0c0luTXNnczsKKyAgICAgICAgdWludDMyX3QgaWNtcFN0YXRzSW5FcnJvcnM7CisgICAgICAgIHVpbnQzMl90IGljbXBTdGF0c091dE1zZ3M7CisgICAgICAgIHVpbnQzMl90IGljbXBTdGF0c091dEVycm9yczsKK307CisKK3N0cnVjdCBpY21wX3N0YXRzX3RhYmxlX2VudHJ5IGljbXBfc3RhdHNfdGFibGVbMl07CisgCisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX0hBU19JTiAxCisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX0hBU19PVVQgMgorCitzdHJ1Y3QgaWNtcF9tc2dfc3RhdHNfdGFibGVfZW50cnkgeworICAgICAgICB1aW50MzJfdCBpcFZlcjsKKyAgICAgICAgdWludDMyX3QgaWNtcE1zZ1N0YXRzVHlwZTsKKyAgICAgICAgdWludDMyX3QgaWNtcE1zZ1N0YXRzSW5Qa3RzOworICAgICAgICB1aW50MzJfdCBpY21wTXNnU3RhdHNPdXRQa3RzOworICAgICAgICBpbnQgZmxhZ3M7Cit9OworCisjaWZkZWYgbGludXgKKy8qIExpbnV4IGtlZXBzIHRyYWNrIG9mIGFsbCBwb3NzaWJsZSBtZXNzYWdlIHR5cGVzICovCisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQgMjU2CisjZWxzZQorI2RlZmluZSBJQ01QX01TR19TVEFUU19JUFY0X0NPVU5UIDExCisjZW5kaWYKKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyNpZmRlZiBsaW51eAorLyogTGludXgga2VlcHMgdHJhY2sgb2YgYWxsIHBvc3NpYmxlIG1lc3NhZ2UgdHlwZXMgKi8KKyNkZWZpbmUgSUNNUF9NU0dfU1RBVFNfSVBWNl9DT1VOVCAyNTYKKyNlbHNlCisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX0lQVjZfQ09VTlQgMTQKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgSUNNUF9NU0dfU1RBVFNfSVBWNl9DT1VOVCAwCisjZW5kaWYgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLworCitzdHJ1Y3QgaWNtcF9tc2dfc3RhdHNfdGFibGVfZW50cnkgaWNtcF9tc2dfc3RhdHNfdGFibGVbSUNNUF9NU0dfU1RBVFNfSVBWNF9DT1VOVCArIElDTVBfTVNHX1NUQVRTX0lQVjZfQ09VTlRdOworCitpbnQKK2ljbXBfc3RhdHNfbG9hZChuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqdm1hZ2ljKQoreworCisJLyoKKyAgICAgICAgICogbm90ZSBkb24ndCBib3RoZXIgdXNpbmcgdGhlIHBhc3NlZCBpbiBjYWNoZQorCSAqIGFuZCB2bWFnaWMgcG9pbnRlcnMuICBUaGV5IGFyZSB1c2VsZXNzIGFzIHRoZXkgCisJICogY3VycmVudGx5IHBvaW50IHRvIHRoZSBpY21wIHN5c3RlbSBzdGF0cyBjYWNoZQkKKwkgKiBzaW5jZSBJIHNlZSBsaXR0bGUgcG9pbnQgaW4gcmVnaXN0ZXJpbmcgYW5vdGhlcgorCSAqIGNhY2hlIGZvciB0aGlzIHRhYmxlLiAgSXRzIG5vdCByZWFsbHkgbmVlZGVkCisJICovCisKKwlpbnQgaTsKKwlzdHJ1Y3QgaWNtcF9taWIgdjRpY21wOworCXN0cnVjdCBpY21wNl9taWIgdjZpY21wOworCWZvcihpPTA7aTwyO2krKykgeworCQlzd2l0Y2goaSkgeworCQkJY2FzZSAwOgorCQkJCWxpbnV4X3JlYWRfaWNtcF9zdGF0KCZ2NGljbXApOworCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzSW5Nc2dzID0gdjRpY21wLmljbXBJbk1zZ3M7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbkVycm9ycyA9IHY0aWNtcC5pY21wSW5FcnJvcnM7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRNc2dzID0gdjRpY21wLmljbXBPdXRNc2dzOworCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0RXJyb3JzID0gdjRpY21wLmljbXBPdXRFcnJvcnM7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCW1lbXNldCgmaWNtcF9zdGF0c190YWJsZVtpXSwwLAorCQkJCQlzaXplb2Yoc3RydWN0IGljbXBfc3RhdHNfdGFibGVfZW50cnkpKTsKKwkJCQlsaW51eF9yZWFkX2ljbXA2X3N0YXQoJnY2aWNtcCk7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbk1zZ3MgPSB2NmljbXAuaWNtcDZJbk1zZ3M7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbkVycm9ycyA9IHY2aWNtcC5pY21wNkluRXJyb3JzOworCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0TXNncyA9IHY2aWNtcC5pY21wNk91dE1zZ3M7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRFcnJvcnMgPSB2NmljbXAuaWNtcDZPdXREZXN0VW5yZWFjaHMgKworCQkJCQl2NmljbXAuaWNtcDZPdXRQa3RUb29CaWdzICsgIHY2aWNtcC5pY21wNk91dFRpbWVFeGNkcyArCisJCQkJCXY2aWNtcC5pY21wNk91dFBhcm1Qcm9ibGVtczsKKwkJCQlicmVhazsKKwkJfQorCQlpY21wX3N0YXRzX3RhYmxlW2ldLmlwVmVyPWkrMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworaW50CitpY21wX21zZ19zdGF0c19sb2FkKG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICp2bWFnaWMpCit7CisgICAgc3RydWN0IGljbXBfbWliIHY0aWNtcDsKKyAgICBzdHJ1Y3QgaWNtcDRfbXNnX21pYiB2NGljbXBtc2c7CisgICAgc3RydWN0IGljbXA2X21pYiB2NmljbXA7CisgICAgc3RydWN0IGljbXA2X21zZ19taWIgdjZpY21wbXNnOworICAgIGludCBpLCBqLCBrLCBmbGFnLCBpbmM7CisKKyAgICBtZW1zZXQoJmljbXBfbXNnX3N0YXRzX3RhYmxlLCAwLCBzaXplb2YoaWNtcF9tc2dfc3RhdHNfdGFibGUpKTsKKworICAgIGkgPSAwOworICAgIGZsYWcgPSAwOworICAgIGsgPSAwOworICAgIGluYyA9IDA7CisgICAgbGludXhfcmVhZF9pY21wX21zZ19zdGF0KCZ2NGljbXAsICZ2NGljbXBtc2csICZmbGFnKTsKKyAgICBpZiAoZmxhZykgeworICAgICAgICB3aGlsZSAoMjU1ID49IGspIHsKKyAgICAgICAgICAgIGlmICh2NGljbXBtc2cudmFsc1trXS5JblR5cGUpIHsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IGs7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wbXNnLnZhbHNba10uSW5UeXBlOworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgfCBJQ01QX01TR19TVEFUU19IQVNfSU47CisgICAgICAgICAgICAgICAgaW5jID0gMTsgLyogU2V0IHRoaXMgaWYgd2UgZm91bmQgYSB2YWxpZCBlbnRyeSAqLworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHY0aWNtcG1zZy52YWxzW2tdLk91dFR5cGUpIHsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IGs7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcG1zZy52YWxzW2tdLk91dFR5cGU7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgICAgICAgICAgaW5jID0gMTsgLyogU2V0IHRoaXMgaWYgd2UgZm91bmQgYSB2YWxpZCBlbnRyeSAqLworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGluYykgeworICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICBpbmMgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaysrOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfRUNIT1JFUExZOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluRWNob1JlcHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dEVjaG9SZXBzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfREVTVF9VTlJFQUNIOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluRGVzdFVucmVhY2hzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXREZXN0VW5yZWFjaHM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9TT1VSQ0VfUVVFTkNIOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluU3JjUXVlbmNoczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0U3JjUXVlbmNoczsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX1JFRElSRUNUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluUmVkaXJlY3RzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRSZWRpcmVjdHM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9FQ0hPOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluRWNob3M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dEVjaG9zOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfVElNRV9FWENFRURFRDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJblRpbWVFeGNkczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0VGltZUV4Y2RzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfUEFSQU1FVEVSUFJPQjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJblBhcm1Qcm9iczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0UGFybVByb2JzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfVElNRVNUQU1QOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluVGltZXN0YW1wczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0VGltZXN0YW1wczsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX1RJTUVTVEFNUFJFUExZOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluVGltZXN0YW1wUmVwczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0VGltZXN0YW1wUmVwczsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX0FERFJFU1M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5BZGRyTWFza3M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dEFkZHJNYXNrczsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX0FERFJFU1NSRVBMWTsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJbkFkZHJNYXNrUmVwczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0QWRkck1hc2tSZXBzOworICAgICAgICBpKys7CisKKyAgICAgICAgLyogc2V0IHRoZSBJUCB2ZXJzaW9uIGFuZCBkZWZhdWx0IGZsYWdzICovCisgICAgICAgIGZvciAoaiA9IDA7IGogPCBJQ01QX01TR19TVEFUU19JUFY0X0NPVU5UOyBqKyspIHsKKyAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2pdLmlwVmVyID0gMTsKKyAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2pdLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgfQorICAgIH0KKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBmbGFnID0gMDsKKyAgICBrID0gMDsKKyAgICBpbmMgPSAwOworICAgIGxpbnV4X3JlYWRfaWNtcDZfbXNnX3N0YXQoJnY2aWNtcCwgJnY2aWNtcG1zZywgJmZsYWcpOworICAgIGlmIChmbGFnKSB7CisgICAgICAgIHdoaWxlICgyNTUgPj0gaykgeworICAgICAgICAgICAgaWYgKHY2aWNtcG1zZy52YWxzW2tdLkluVHlwZSkgeworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gazsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXBtc2cudmFsc1trXS5JblR5cGU7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyB8IElDTVBfTVNHX1NUQVRTX0hBU19JTjsKKyAgICAgICAgICAgICAgICBpbmMgPSAxOyAvKiBTZXQgdGhpcyBpZiB3ZSBmb3VuZCBhIHZhbGlkIGVudHJ5ICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodjZpY21wbXNnLnZhbHNba10uT3V0VHlwZSkgeworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gazsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wbXNnLnZhbHNba10uT3V0VHlwZTsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgICAgICAgICBpbmMgPSAxOyAvKiBTZXQgdGhpcyBpZiB3ZSBmb3VuZCBhIHZhbGlkIGVudHJ5ICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaW5jKSB7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIGluYyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBrKys7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfRFNUX1VOUkVBQ0g7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluRGVzdFVucmVhY2hzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0RGVzdFVucmVhY2hzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X1BBQ0tFVF9UT09fQklHOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJblBrdFRvb0JpZ3M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRQa3RUb29CaWdzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X1RJTUVfRVhDRUVERUQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluVGltZUV4Y2RzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0VGltZUV4Y2RzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X1BBUkFNX1BST0I7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUGFybVByb2JsZW1zOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0UGFybVByb2JsZW1zOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X0VDSE9fUkVRVUVTVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5FY2hvczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IDA7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X0VDSE9fUkVQTFk7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluRWNob1JlcGxpZXM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRFY2hvUmVwbGllczsKKyAgICAgICAgaSsrOworCisjaWZkZWYgTUxEX0xJU1RFTkVSX1FVRVJZCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBNTERfTElTVEVORVJfUVVFUlk7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluR3JvdXBNZW1iUXVlcmllczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IDA7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOOworICAgICAgICBpKys7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBNTERfTElTVEVORVJfUkVQT1JUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkdyb3VwTWVtYlJlc3BvbnNlczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlczsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBNTERfTElTVEVORVJfUkVEVUNUSU9OOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkdyb3VwTWVtYlJlZHVjdGlvbnM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRHcm91cE1lbWJSZWR1Y3Rpb25zOworICAgICAgICBpKys7CisjZW5kaWYKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTkRfUk9VVEVSX1NPTElDSVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUm91dGVyU29saWNpdHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRSb3V0ZXJTb2xpY2l0czsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9ST1VURVJfQURWRVJUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJblJvdXRlckFkdmVydGlzZW1lbnRzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gMDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU47CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTkRfTkVJR0hCT1JfU09MSUNJVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5OZWlnaGJvclNvbGljaXRzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0TmVpZ2hib3JTb2xpY2l0czsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9ORUlHSEJPUl9BRFZFUlQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluTmVpZ2hib3JBZHZlcnRpc2VtZW50czsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTkRfUkVESVJFQ1Q7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUmVkaXJlY3RzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0UmVkaXJlY3RzOworCisgICAgICAgIGZvciAoaiA9IDA7IGogPCBJQ01QX01TR19TVEFUU19JUFY2X0NPVU5UOyBqKyspIHsKKyAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW0lDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQgKyBqXS5pcFZlciA9IDI7CisgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtJQ01QX01TR19TVEFUU19JUFY0X0NPVU5UICsgal0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICB9CisgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KKyAgICByZXR1cm4gMDsKK30KKworbmV0c25tcF92YXJpYWJsZV9saXN0ICoKK2ljbXBfc3RhdHNfbmV4dF9lbnRyeSggdm9pZCAqKmxvb3BfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipkYXRhX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICpkYXRhKQoreworCWludCBpID0gKGludCkoKmxvb3BfY29udGV4dCk7CisJbmV0c25tcF92YXJpYWJsZV9saXN0ICppZHggPSBpbmRleDsKKworCWlmKGkgPiAxKQorCQlyZXR1cm4gTlVMTDsKKworCisJLyoKKwkgKnNldCBJUCB2ZXJzaW9uCisJICovCisJc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKGlkeCwgQVNOX0lOVEVHRVIsICh1X2NoYXIgKikmaWNtcF9zdGF0c190YWJsZVtpXS5pcFZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSk7CisJaWR4ID0gaWR4LT5uZXh0X3ZhcmlhYmxlOworCisJKmRhdGFfY29udGV4dCA9ICZpY21wX3N0YXRzX3RhYmxlW2ldOworCisJKmxvb3BfY29udGV4dCA9ICh2b2lkICopKCsraSk7CisJCisJcmV0dXJuIGluZGV4OworfQorCisKK25ldHNubXBfdmFyaWFibGVfbGlzdCAqCitpY21wX3N0YXRzX2ZpcnN0X2VudHJ5KCB2b2lkICoqbG9vcF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmRhdGFfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmRhdGEpCit7CisKKyAgICAgICAgKmxvb3BfY29udGV4dCA9IE5VTEw7CisgICAgICAgICpkYXRhX2NvbnRleHQgPSBOVUxMOworICAgICAgICByZXR1cm4gaWNtcF9zdGF0c19uZXh0X2VudHJ5KGxvb3BfY29udGV4dCwgZGF0YV9jb250ZXh0LCBpbmRleCwgZGF0YSk7Cit9CisKK25ldHNubXBfdmFyaWFibGVfbGlzdCAqCitpY21wX21zZ19zdGF0c19uZXh0X2VudHJ5KHZvaWQgKipsb29wX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipkYXRhX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqZGF0YSkKK3sKKyAgICBpbnQgaSA9IChpbnQpKCpsb29wX2NvbnRleHQpOworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqaWR4ID0gaW5kZXg7CisKKyAgICBpZihpID49IElDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQgKyBJQ01QX01TR19TVEFUU19JUFY2X0NPVU5UKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIHNldCBJUCB2ZXJzaW9uICovCisgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKGlkeCwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAodV9jaGFyICopJmljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyLAorICAgICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSk7CisKKyAgICAvKiBzZXQgcGFja2V0IHR5cGUgKi8KKyAgICBpZHggPSBpZHgtPm5leHRfdmFyaWFibGU7CisgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKGlkeCwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAodV9jaGFyICopJmljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUsCisgICAgICAgICAgICBzaXplb2YodWludDMyX3QpKTsKKworICAgICpkYXRhX2NvbnRleHQgPSAmaWNtcF9tc2dfc3RhdHNfdGFibGVbaV07CisgICAgKmxvb3BfY29udGV4dCA9ICh2b2lkICopKCsraSk7CisKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKKworbmV0c25tcF92YXJpYWJsZV9saXN0ICoKK2ljbXBfbXNnX3N0YXRzX2ZpcnN0X2VudHJ5KHZvaWQgKipsb29wX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqZGF0YV9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICppbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqZGF0YSkKK3sKKyAgICAqbG9vcF9jb250ZXh0ID0gMDsKKyAgICAqZGF0YV9jb250ZXh0ID0gTlVMTDsKKyAgICByZXR1cm4gaWNtcF9tc2dfc3RhdHNfbmV4dF9lbnRyeShsb29wX2NvbnRleHQsIGRhdGFfY29udGV4dCwgaW5kZXgsIGRhdGEpOworfQorI2VuZGlmCisKIHZvaWQKIGluaXRfaWNtcCh2b2lkKQogewotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisjaWZkZWYgbGludXgKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICp0YWJsZV9yZWdpbmZvID0gTlVMTDsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICptc2dfc3RhdHNfcmVnaW5mbyA9IE5VTEw7CisgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbyA9IE5VTEw7CisgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICptc2dfc3RhdHNfaWluZm8gPSBOVUxMOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKm1zZ19zdGF0c190YWJsZV9pbmZvID0gTlVMTDsKKyNlbmRpZgorICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnNjYWxhcl9yZWdpbmZvID0gTlVMTDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgIHJjOwogCiAgICAgLyoKICAgICAgKiByZWdpc3RlciBvdXJzZWx2ZXMgd2l0aCB0aGUgYWdlbnQgYXMgYSBncm91cCBvZiBzY2FsYXJzLi4uCiAgICAgICovCiAgICAgREVCVUdNU0dUTCgoIm1pYklJL2ljbXAiLCAiSW5pdGlhbGlzaW5nIElDTVAgZ3JvdXBcbiIpKTsKLSAgICByZWdpbmZvID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImljbXAiLCBpY21wX2hhbmRsZXIsCisgICAgc2NhbGFyX3JlZ2luZm8gPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiaWNtcCIsIGljbXBfaGFuZGxlciwKIAkJICAgIGljbXBfb2lkLCBPSURfTEVOR1RIKGljbXBfb2lkKSwgSEFORExFUl9DQU5fUk9OTFkpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKHJlZ2luZm8sIElDTVBJTk1TR1MsIElDTVBPVVRBRERSTUFTS1JFUFMpOworICAgIGlmICghc2NhbGFyX3JlZ2luZm8pCisgICAgICAgIHJldHVybjsKKworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAoc2NhbGFyX3JlZ2luZm8sIElDTVBJTk1TR1MsIElDTVBPVVRBRERSTUFTS1JFUFMpOworICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8qCiAgICAgICogLi4uLiB3aXRoIGEgbG9jYWwgY2FjaGUKICAgICAgKiAgICAoZXhjZXB0IGZvciBIUC1VWCAxMSwgd2hpY2ggZXh0cmFjdHMgb2JqZWN0cyBpbmRpdmlkdWFsbHkpCiAgICAgICovCiAjaWZuZGVmIGhwdXgxMQotICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIoIHJlZ2luZm8sCisgICAgcmMgPSBuZXRzbm1wX2luamVjdF9oYW5kbGVyKCBzY2FsYXJfcmVnaW5mbywKIAkJICAgIG5ldHNubXBfZ2V0X2NhY2hlX2hhbmRsZXIoSUNNUF9TVEFUU19DQUNIRV9USU1FT1VULAogCQkJICAgCQlpY21wX2xvYWQsIGljbXBfZnJlZSwKIAkJCQkJaWNtcF9vaWQsIE9JRF9MRU5HVEgoaWNtcF9vaWQpKSk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgZ290byBiYWlsOwogI2VuZGlmCisjaWZkZWYgbGludXgKKworICAgIC8qIHJlZ2lzdGVyIGljbXBTdGF0c1RhYmxlICovCisKKyAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKKyAgICBpZiAoIXRhYmxlX2luZm8pCisgICAgICAgIGdvdG8gYmFpbDsKKworICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sIEFTTl9JTlRFR0VSLCAwKTsKKyAgICB0YWJsZV9pbmZvLT5taW5fY29sdW1uID0gSUNNUF9TVEFUX0lOTVNHOworICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBJQ01QX1NUQVRfT1VURVJSOworCisKKyAgICBpaW5mbyAgICAgID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2l0ZXJhdG9yX2luZm8pOworICAgIGlmICghaWluZm8pIAorICAgICAgICBnb3RvIGJhaWw7CisKKyAgICBpaW5mby0+Z2V0X2ZpcnN0X2RhdGFfcG9pbnQgPSBpY21wX3N0YXRzX2ZpcnN0X2VudHJ5OworICAgIGlpbmZvLT5nZXRfbmV4dF9kYXRhX3BvaW50ICA9IGljbXBfc3RhdHNfbmV4dF9lbnRyeTsKKyAgICBpaW5mby0+dGFibGVfcmVnaW5mbyAgICAgICAgPSB0YWJsZV9pbmZvOworCisgICAgdGFibGVfcmVnaW5mbyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJpY21wU3RhdHNUYWJsZSIsCisJCWljbXBfc3RhdHNfdGFibGVfaGFuZGxlciwgaWNtcF9zdGF0c190Ymxfb2lkLAorCQlPSURfTEVOR1RIKGljbXBfc3RhdHNfdGJsX29pZCksIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAoIXRhYmxlX3JlZ2luZm8pCisgICAgICAgIGdvdG8gYmFpbDsKKworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcih0YWJsZV9yZWdpbmZvLCBpaW5mbyk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICB0YWJsZV9yZWdpbmZvID0gTlVMTDsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIC8qIHJlZ2lzdGVyIGljbXBNc2dTdGF0c1RhYmxlICovCisgICAgbXNnX3N0YXRzX3RhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOworICAgIGlmICghbXNnX3N0YXRzX3RhYmxlX2luZm8pCisgICAgICAgIGdvdG8gYmFpbDsKKworICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKG1zZ19zdGF0c190YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgQVNOX0lOVEVHRVIsIDApOworICAgIG1zZ19zdGF0c190YWJsZV9pbmZvLT5taW5fY29sdW1uID0gSUNNUF9NU0dfU1RBVF9JTl9QS1RTOworICAgIG1zZ19zdGF0c190YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gSUNNUF9NU0dfU1RBVF9PVVRfUEtUUzsKKworICAgIG1zZ19zdGF0c19paW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9pdGVyYXRvcl9pbmZvKTsKKyAgICBpZiAoIW1zZ19zdGF0c19paW5mbykKKyAgICAgICAgZ290byBiYWlsOworCisgICAgbXNnX3N0YXRzX2lpbmZvLT5nZXRfZmlyc3RfZGF0YV9wb2ludCA9IGljbXBfbXNnX3N0YXRzX2ZpcnN0X2VudHJ5OworICAgIG1zZ19zdGF0c19paW5mby0+Z2V0X25leHRfZGF0YV9wb2ludCAgPSBpY21wX21zZ19zdGF0c19uZXh0X2VudHJ5OworICAgIG1zZ19zdGF0c19paW5mby0+dGFibGVfcmVnaW5mbyAgICAgICAgPSBtc2dfc3RhdHNfdGFibGVfaW5mbzsKKworICAgIG1zZ19zdGF0c19yZWdpbmZvID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImljbXBNc2dTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlX2hhbmRsZXIsIGljbXBfbXNnX3N0YXRzX3RibF9vaWQsCisgICAgICAgICAgICBPSURfTEVOR1RIKGljbXBfbXNnX3N0YXRzX3RibF9vaWQpLCBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgaWYgKCFtc2dfc3RhdHNfcmVnaW5mbykKKyAgICAgICAgZ290byBiYWlsOworCisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKG1zZ19zdGF0c19yZWdpbmZvLCBtc2dfc3RhdHNfaWluZm8pOworICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgbXNnX3N0YXRzX3JlZ2luZm8gPSBOVUxMOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIAorICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIoIG1zZ19zdGF0c19yZWdpbmZvLAorICAgICAgICAgICAgbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcihJQ01QX1NUQVRTX0NBQ0hFX1RJTUVPVVQsCisgICAgICAgICAgICAgICAgaWNtcF9sb2FkLCBpY21wX2ZyZWUsCisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGJsX29pZCwgT0lEX0xFTkdUSChpY21wX21zZ19zdGF0c190Ymxfb2lkKSkpOworI2lmbmRlZiBocHV4MTEKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKCB0YWJsZV9yZWdpbmZvLAorCQkgICAgbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcihJQ01QX1NUQVRTX0NBQ0hFX1RJTUVPVVQsCisJCQkgICAJCWljbXBfbG9hZCwgaWNtcF9mcmVlLAorCQkJCQlpY21wX3N0YXRzX3RibF9vaWQsIE9JRF9MRU5HVEgoaWNtcF9zdGF0c190Ymxfb2lkKSkpOworI2VuZGlmIC8qICEgaHB1eDExICovCisjZW5kaWYgLyogbGludXggKi8KIAogI2lmZGVmIFVTSU5HX01JQklJX0lQX01PRFVMRQogICAgIGlmICgrK2lwX21vZHVsZV9jb3VudCA9PSAyKQpAQCAtMTAzLDYgKzU4NiwxOSBAQAogICAgIGluaXRfa2VybmVsX3N1bm9zNSgpOwogI2VuZGlmCiAjZW5kaWYKKyAgICByZXR1cm47CisKKyNpZm5kZWYgaHB1eDExCitiYWlsOgorI2VuZGlmCisjaWZkZWYgbGludXgKKyAgICBpZiAobXNnX3N0YXRzX3JlZ2luZm8pCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShtc2dfc3RhdHNfcmVnaW5mbyk7CisgICAgaWYgKHRhYmxlX3JlZ2luZm8pCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZSh0YWJsZV9yZWdpbmZvKTsKKyNlbmRpZgorICAgIGlmIChzY2FsYXJfcmVnaW5mbykKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHNjYWxhcl9yZWdpbmZvKTsKIH0KIAogCkBAIC01NTEsNiArMTA0NywxNDkgQEAKIH0KIAogCisjaWZkZWYgbGludXgKK2ludAoraWNtcF9zdGF0c190YWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAgICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAgICAgICAgICpyZXF1ZXN0cykKK3sKKwluZXRzbm1wX3JlcXVlc3RfaW5mbyAgKnJlcXVlc3Q7CisJbmV0c25tcF92YXJpYWJsZV9saXN0ICpyZXF1ZXN0dmI7CisJbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87CisJc3RydWN0IGljbXBfc3RhdHNfdGFibGVfZW50cnkgICAqZW50cnk7CisJb2lkICAgICAgc3ViaWQ7CisKKwlzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKKwkJY2FzZSBNT0RFX0dFVDoKKwkJCWZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisJCQkJcmVxdWVzdHZiID0gcmVxdWVzdC0+cmVxdWVzdHZiOworCQkJCWVudHJ5ID0gKHN0cnVjdCBpY21wX3N0YXRzX3RhYmxlX2VudHJ5ICopbmV0c25tcF9leHRyYWN0X2l0ZXJhdG9yX2NvbnRleHQocmVxdWVzdCk7CisJCQkJaWYgKCFlbnRyeSkKKwkJCQkJY29udGludWU7CisJCQkJdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCQkJCXN1YmlkICAgICAgPSB0YWJsZV9pbmZvLT5jb2xudW07CisJCQkJREVCVUdNU0dUTCgoICJtaWJJSS9pY21wU3RhdHNUYWJsZSIsICJvaWQ6ICIgKSk7CisJCQkJREVCVUdNU0dPSUQoKCAibWliSUkvaWNtcFN0YXRzVGFibGUiLCByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWUsCisJCQkJCQkgcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCApKTsKKwkJCQlERUJVR01TRygoICJtaWJJSS9pY21wU3RhdHNUYWJsZSIsICIgSW4gJWQgSW5FcnIgJWQgT3V0ICVkIE91dEVyciAlZFxuIiwKKwkJCQkJICAgICAgZW50cnktPmljbXBTdGF0c0luTXNncywgZW50cnktPmljbXBTdGF0c0luRXJyb3JzLAorCQkJCQkgICAgICBlbnRyeS0+aWNtcFN0YXRzT3V0TXNncywgZW50cnktPmljbXBTdGF0c091dEVycm9ycyApKTsKKworCQkJCXN3aXRjaCAoc3ViaWQpIHsKKwkJCQkJY2FzZSBJQ01QX1NUQVRfSU5NU0c6CisJCQkJCQlzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKwkJCQkJCQkodV9jaGFyICopJmVudHJ5LT5pY21wU3RhdHNJbk1zZ3MsIHNpemVvZih1aW50MzJfdCkpOworCQkJCQkJYnJlYWs7CQorCQkJCQljYXNlIElDTVBfU1RBVF9JTkVSUjoKKwkJCQkJCXNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAorCQkJCQkJCSh1X2NoYXIgKikmZW50cnktPmljbXBTdGF0c0luRXJyb3JzLCBzaXplb2YodWludDMyX3QpKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIElDTVBfU1RBVF9PVVRNU0c6CisJCQkJCQlzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKwkJCQkJCQkodV9jaGFyICopJmVudHJ5LT5pY21wU3RhdHNPdXRNc2dzLCBzaXplb2YodWludDMyX3QpKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIElDTVBfU1RBVF9PVVRFUlI6CisJCQkJCQlzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKwkJCQkJCQkodV9jaGFyICopJmVudHJ5LT5pY21wU3RhdHNPdXRFcnJvcnMsIHNpemVvZih1aW50MzJfdCkpOworCQkJCQkJYnJlYWs7CisJCQkJCWRlZmF1bHQ6CisJCQkJCQlzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXBTdGF0c1RhYmxlOiBVbnJlY29nbmlzZWQgY29sdW1uICglZClcbiIsKGludClzdWJpZCk7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgTU9ERV9HRVRORVhUOgorCQljYXNlIE1PREVfR0VUQlVMSzoKKwkJY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKwkJY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKKwkJY2FzZSBNT0RFX1NFVF9BQ1RJT046CisJCWNhc2UgTU9ERV9TRVRfQ09NTUlUOgorCQljYXNlIE1PREVfU0VUX0ZSRUU6CisJCWNhc2UgTU9ERV9TRVRfVU5ETzoKKwkJCXNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcFN0YXRzVGFibGU6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKKwkJCQlyZXFpbmZvLT5tb2RlKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wU3RhdHNUYWJsZTogVW5yZWNvZ25pc2VkIG1vZGUgKCVkKVxuIiwKKwkJCQlyZXFpbmZvLT5tb2RlKTsKKwkJCWJyZWFrOworCisJfQorCisJcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKK2ludAoraWNtcF9tc2dfc3RhdHNfdGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICAgICAgICAgICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAgICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAgICAgICAgICpyZXF1ZXN0cykKK3sKKyAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnJlcXVlc3R2YjsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGFibGVfaW5mbzsKKyAgICBzdHJ1Y3QgaWNtcF9tc2dfc3RhdHNfdGFibGVfZW50cnkgKmVudHJ5OworICAgIG9pZCBzdWJpZDsKKworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgICAgICBjYXNlIE1PREVfR0VUOgorICAgICAgICAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdHZiID0gcmVxdWVzdC0+cmVxdWVzdHZiOworICAgICAgICAgICAgICAgIGVudHJ5ID0gKHN0cnVjdCBpY21wX21zZ19zdGF0c190YWJsZV9lbnRyeSAqKW5ldHNubXBfZXh0cmFjdF9pdGVyYXRvcl9jb250ZXh0KHJlcXVlc3QpOworICAgICAgICAgICAgICAgIGlmICghZW50cnkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgICAgICBzdWJpZCA9IHRhYmxlX2luZm8tPmNvbG51bTsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggIm1pYklJL2ljbXBNc2dTdGF0c1RhYmxlIiwgIm9pZDogIiApKTsKKyAgICAgICAgICAgICAgICBERUJVR01TR09JRCgoICJtaWJJSS9pY21wTXNnU3RhdHNUYWJsZSIsIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGggKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0coKCAibWliSUkvaWNtcE1zZ1N0YXRzVGFibGUiLCAiIEluICVkIE91dCAlZCBGbGFncyAweCV4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmljbXBNc2dTdGF0c0luUGt0cywgZW50cnktPmljbXBNc2dTdGF0c091dFBrdHMsIGVudHJ5LT5mbGFncyApKTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAoc3ViaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJQ01QX01TR19TVEFUX0lOX1BLVFM6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmZsYWdzICYgSUNNUF9NU0dfU1RBVFNfSEFTX0lOKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmVudHJ5LT5pY21wTXNnU3RhdHNJblBrdHMsIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0dmItPnR5cGUgPSBTTk1QX05PU1VDSElOU1RBTkNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgSUNNUF9NU0dfU1RBVF9PVVRfUEtUUzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+ZmxhZ3MgJiBJQ01QX01TR19TVEFUU19IQVNfT1VUKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmVudHJ5LT5pY21wTXNnU3RhdHNPdXRQa3RzLCBzaXplb2YodWludDMyX3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHZiLT50eXBlID0gU05NUF9OT1NVQ0hJTlNUQU5DRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wTXNnU3RhdHNUYWJsZTogVW5yZWNvZ25pc2VkIGNvbHVtbiAoJWQpXG4iLChpbnQpc3ViaWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1PREVfR0VUTkVYVDoKKyAgICAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CisgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CisgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CisgICAgICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgorICAgICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgorICAgICAgICBjYXNlIE1PREVfU0VUX1VORE86CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXBTdGF0c1RhYmxlOiBVbnN1cHBvcnRlZCBtb2RlICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXBTdGF0c1RhYmxlOiBVbnJlY29nbmlzZWQgbW9kZSAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisjZW5kaWYJCS8qIGxpbnV4ICovCisKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCiAJICogIEludGVybmFsIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucwpAQCAtNjgwLDYgKzEzMTksOCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkxvYWRlZCBJQ01QIEdyb3VwIChsaW51eClcbiIpKTsKICAgICB9CisgICAgaWNtcF9zdGF0c19sb2FkKGNhY2hlLCB2bWFnaWMpOworICAgIGljbXBfbXNnX3N0YXRzX2xvYWQoY2FjaGUsIHZtYWdpYyk7CiAgICAgcmV0dXJuIHJldF92YWx1ZTsKIH0KICNlbGlmIGRlZmluZWQoc29sYXJpczIpCkBAIC03MTQsNyArMTM1NSw2IEBACiAgICAgfQogICAgIHJldHVybiByZXRfdmFsdWU7CiB9Ci0KICNlbGlmIGRlZmluZWQgKFdJTjMyKSB8fCBkZWZpbmVkIChjeWd3aW4pCiBpbnQKIGljbXBfbG9hZChuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqdm1hZ2ljKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oCmluZGV4IGNkYWFjNWQuLjkzMDc2NTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmgKQEAgLTE0LDYgKzE0LDggQEAKIAogZXh0ZXJuIHZvaWQgICAgIGluaXRfaWNtcCh2b2lkKTsKIGV4dGVybiBOZXRzbm1wX05vZGVfSGFuZGxlciBpY21wX2hhbmRsZXI7CitleHRlcm4gTmV0c25tcF9Ob2RlX0hhbmRsZXIgaWNtcF9zdGF0c190YWJsZV9oYW5kbGVyOworZXh0ZXJuIE5ldHNubXBfTm9kZV9IYW5kbGVyIGljbXBfbXNnX3N0YXRzX3RhYmxlX2hhbmRsZXI7CiBleHRlcm4gTmV0c25tcENhY2hlTG9hZCBpY21wX2xvYWQ7CiBleHRlcm4gTmV0c25tcENhY2hlRnJlZSBpY21wX2ZyZWU7CiAKQEAgLTQ0LDQgKzQ2LDE3IEBACiAjZGVmaW5lIElDTVBPVVRBRERSTUFTS1MgICAgIDI1CiAjZGVmaW5lIElDTVBPVVRBRERSTUFTS1JFUFMgIDI2CiAKKyNkZWZpbmUgSUNNUFNUQVRTVEFCTEUgICAgICAgMjkKKyNkZWZpbmUgSUNNUF9TVEFUX0lQVkVSICAgICAgIDEKKyNkZWZpbmUgSUNNUF9TVEFUX0lOTVNHICAgICAgIDIgCisjZGVmaW5lIElDTVBfU1RBVF9JTkVSUiAgICAgICAzIAorI2RlZmluZSBJQ01QX1NUQVRfT1VUTVNHICAgICAgNCAKKyNkZWZpbmUgSUNNUF9TVEFUX09VVEVSUiAgICAgIDUgCisKKyNkZWZpbmUgSUNNUE1TR1NUQVRTVEFCTEUgICAgIDMwCisjZGVmaW5lIElDTVBfTVNHX1NUQVRfSVBWRVIgICAgMQorI2RlZmluZSBJQ01QX01TR19TVEFUX1RZUEUgICAgIDIKKyNkZWZpbmUgSUNNUF9NU0dfU1RBVF9JTl9QS1RTICAzCisjZGVmaW5lIElDTVBfTVNHX1NUQVRfT1VUX1BLVFMgNAorCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9JQ01QX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYwppbmRleCBjODk2ZmYyLi4zMjg4M2YzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jCkBAIC0xNiw3ICsxNiw3IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAotI2lmIGRlZmluZWQoSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKSAmJiAhZGVmaW5lZChJRk5FVF9ORUVEU19LRVJORUxfTEFURSkKKyNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKSAmJiAhZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9MQVRFKQogI2RlZmluZSBfS0VSTkVMIDEKICNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKICNlbmRpZgpAQCAtNDAsNyArNDAsNyBAQAogI2lmIEhBVkVfV0lOU09DS19ICiAjaW5jbHVkZSA8d2luc29jay5oPgogI2VuZGlmCi0jaWYgZGVmaW5lZChJRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpICYmIGRlZmluZWQoSUZORVRfTkVFRFNfS0VSTkVMX0xBVEUpCisjaWYgZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkgJiYgZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9MQVRFKQogI2RlZmluZSBfS0VSTkVMIDEKICNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKICNlbmRpZgpAQCAtMTk3LDEyICsxOTcsMTIgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KIAogI2luY2x1ZGUgImludGVyZmFjZXMuaCIKICNpbmNsdWRlICJzdHJ1Y3QuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0jaW5jbHVkZSAic3lzT1JUYWJsZS5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKIAogLyogaWYgeW91IHdhbnQgY2FjaGluZyBlbmFibGVkIGZvciBzcGVlZCByZXRyaXZhbCBwdXJwb3Nlcywgc2V0IHRoaXMgdG8gNT8qLwogI2RlZmluZSBNSU5MT0FERlJFUSAwICAgICAgICAgICAgICAgICAgICAgLyogbWluIHJlbG9hZCBmcmVxdWVuY3kgaW4gc2Vjb25kcyAqLwpAQCAtMjEzLDMzICsyMTMsNTcgQEAKIGV4dGVybiBzdHJ1Y3QgdGltZXZhbCBzdGFydHRpbWU7CiAKIHN0cnVjdCB2YXJpYWJsZTMgaW50ZXJmYWNlc192YXJpYWJsZXNbXSA9IHsKLSAgICB7SUZOVU1CRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2ludGVyZmFjZXMsIDEsIHsxfX0sCi0gICAge0lGSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxfX0sCi0gICAge0lGREVTQ1IsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDJ9fSwKLSAgICB7TkVUU05NUF9JRlRZUEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAzfX0sCi0gICAge0lGTVRVLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgNH19LAotICAgIHtJRlNQRUVELCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDV9fSwKLSAgICB7SUZQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgNn19LAorICAgIHtORVRTTk1QX0lGTlVNQkVSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pbnRlcmZhY2VzLCAxLCB7MX19LAorICAgIHtORVRTTk1QX0lGSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxfX0sCisgICAge05FVFNOTVBfSUZERVNDUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMn19LAorICAgIHtORVRTTk1QX0lGVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDN9fSwKKyAgICB7TkVUU05NUF9JRk1UVSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDR9fSwKKyAgICB7TkVUU05NUF9JRlNQRUVELCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDV9fSwKKyAgICB7TkVUU05NUF9JRlBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA2fX0sCiAjaWYgZGVmaW5lZCAoV0lOMzIpIHx8IGRlZmluZWQgKGN5Z3dpbikKLSAgICB7SUZBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA3fX0sCisgICAge05FVFNOTVBfSUZBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA3fX0sCiAjZWxzZQotICAgIHtJRkFETUlOU1RBVFVTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgN319LAorICAgIHtORVRTTk1QX0lGQURNSU5TVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA3fX0sCiAjZW5kaWYKLSAgICB7SUZPUEVSU1RBVFVTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgOH19LAotICAgIHtJRkxBU1RDSEFOR0UsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDl9fSwKLSAgICB7SUZJTk9DVEVUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDEwfX0sCi0gICAge0lGSU5VQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxMX19LAotICAgIHtJRklOTlVDQVNUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDEyfX0sCi0gICAge0lGSU5ESVNDQVJEUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDEzfX0sCi0gICAge0lGSU5FUlJPUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxNH19LAotICAgIHtJRklOVU5LTk9XTlBST1RPUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDE1fX0sCi0gICAge0lGT1VUT0NURVRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTZ9fSwKLSAgICB7SUZPVVRVQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxN319LAotICAgIHtJRk9VVE5VQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxOH19LAotICAgIHtJRk9VVERJU0NBUkRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTl9fSwKLSAgICB7SUZPVVRFUlJPUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAyMH19LAotICAgIHtJRk9VVFFMRU4sIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMjF9fSwKLSAgICB7SUZTUEVDSUZJQywgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMjJ9fQorICAgIHtORVRTTk1QX0lGT1BFUlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDh9fSwKKyAgICB7TkVUU05NUF9JRkxBU1RDSEFOR0UsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDl9fSwKKyAgICB7TkVUU05NUF9JRklOT0NURVRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTB9fSwKKyAgICB7TkVUU05NUF9JRklOVUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTF9fSwKKyAgICB7TkVUU05NUF9JRklOTlVDQVNUUEtUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDEyfX0sCisgICAge05FVFNOTVBfSUZJTkRJU0NBUkRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTN9fSwKKyAgICB7TkVUU05NUF9JRklORVJST1JTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTR9fSwKKyAgICB7TkVUU05NUF9JRklOVU5LTk9XTlBST1RPUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDE1fX0sCisgICAge05FVFNOTVBfSUZPVVRPQ1RFVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxNn19LAorICAgIHtORVRTTk1QX0lGT1VUVUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTd9fSwKKyAgICB7TkVUU05NUF9JRk9VVE5VQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxOH19LAorICAgIHtORVRTTk1QX0lGT1VURElTQ0FSRFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxOX19LAorICAgIHtORVRTTk1QX0lGT1VURVJST1JTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMjB9fSwKKyAgICB7TkVUU05NUF9JRk9VVFFMRU4sIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMjF9fSwKKyAgICB7TkVUU05NUF9JRlNQRUNJRklDLCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAyMn19CiB9OwogCiAvKgpAQCAtMzg1LDcgKzQwOSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKLSAgICBjYXNlIElGTlVNQkVSOgorICAgIGNhc2UgTkVUU05NUF9JRk5VTUJFUjoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBJbnRlcmZhY2VfU2Nhbl9HZXRfQ291bnQoKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICBkZWZhdWx0OgpAQCAtNTcyLDEwICs1OTYsMTAgQEAKICAgICBpZl9wdHIgPSBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfZW50cnlfb3ZlcnJpZGVzX2dldChpZl9uYW1lKTsKIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRklOREVYOgorICAgIGNhc2UgTkVUU05NUF9JRklOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IGludGVyZmFjZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGREVTQ1I6CisgICAgY2FzZSBORVRTTk1QX0lGREVTQ1I6CiAgICAgICAgIGNwID0gaWZfbmFtZTsKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oaWZfbmFtZSk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIGNwOwpAQCAtNTg1LDE0ICs2MDksMTQgQEAKICAgICAgICAgZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IChsb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX3R5cGU7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk1UVToKKyAgICBjYXNlIE5FVFNOTVBfSUZNVFU6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKGxvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfbXR1OwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZTUEVFRDoKKyAgICBjYXNlIE5FVFNOTVBfSUZTUEVFRDoKICAgICAgICAgaWYgKGlmX3B0cikKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZfcHRyLT5zcGVlZDsKICAgICAgICAgZWxzZSB7Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9CQVVEUkFURV9JRlNfVkFMVUUKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURV9JRlNfVkFMVUUKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX2JhdWRyYXRlLmlmc192YWx1ZSA8PAogICAgICAgICAgICAgaWZfbXNnLmlmbV9kYXRhLmlmaV9iYXVkcmF0ZS5pZnNfbG9nMjsKICNlbHNlCkBAIC02MDAsNTIgKzYyNCw1MiBAQAogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGUEhZU0FERFJFU1M6CisgICAgY2FzZSBORVRTTk1QX0lGUEhZU0FERFJFU1M6CiAgICAgICAgIC8qCiAgICAgICAgICAqIFhYWCAKICAgICAgICAgICovCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGNhc2UgSUZBRE1JTlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZBRE1JTlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZl9tc2cuaWZtX2ZsYWdzICYgSUZGX1VQID8gMSA6IDI7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9QRVJTVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGT1BFUlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZl9tc2cuaWZtX2ZsYWdzICYgSUZGX1JVTk5JTkcgPyAxIDogMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICAgICAgLyoKICAgICAgICAgICogaWZMYXN0Q2hhbmdlIAogICAgICAgICAgKi8KLSAgICBjYXNlIElGSU5PQ1RFVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5PQ1RFVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZfbXNnLmlmbV9kYXRhLmlmaV9pYnl0ZXM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9CiAgICAgICAgICAgICAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX2lwYWNrZXRzIC0KICAgICAgICAgICAgIGlmX21zZy5pZm1fZGF0YS5pZmlfaW1jYXN0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5OVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX2ltY2FzdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORElTQ0FSRFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5ESVNDQVJEUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX2lxZHJvcHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRklORVJST1JTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfaWVycm9yczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VTktOT1dOUFJPVE9TOgorICAgIGNhc2UgTkVUU05NUF9JRklOVU5LTk9XTlBST1RPUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX25vcHJvdG87CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE9DVEVUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRPQ1RFVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZfbXNnLmlmbV9kYXRhLmlmaV9vYnl0ZXM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVFVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRVQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0KICAgICAgICAgICAgICh1X2xvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfb3BhY2tldHMgLQogICAgICAgICAgICAgaWZfbXNnLmlmbV9kYXRhLmlmaV9vbWNhc3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVROVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVE5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZfbXNnLmlmbV9kYXRhLmlmaV9vbWNhc3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRESVNDQVJEUzoKICNpZmRlZiBpZl9vZHJvcHMKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX29kcm9wczsKICNlbHNlCkBAIC02NTUsMTAgKzY3OSwxMCBAQAogICAgICAgICBsb25nX3JldHVybiA9IDA7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVEVSUk9SUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX29lcnJvcnM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRkxBU1RDSEFOR0U6CisgICAgY2FzZSBORVRTTk1QX0lGTEFTVENIQU5HRToKICNpZmRlZiBpcml4NgogICAgICAgICBsb25nX3JldHVybiA9IDA7CiAjZWxzZQpAQCAtNzUyLDcgKzc3Niw3IEBACiAgICAgc3RhdGljIGNoYXIgICAgIE5hbWVbMTZdOwogICAgIGNoYXIgICAgICAgICAgICpjcDsKICAgICBjb25mX2lmX2xpc3QgICAqaWZfcHRyOwotI2lmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTEFTVENIQU5HRV9UVl9TRUMKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9MQVNUQ0hBTkdFX1RWX1NFQwogICAgIHN0cnVjdCB0aW1ldmFsICBub3c7CiAjZW5kaWYKIApAQCAtNzY1LDEwICs3ODksMTAgQEAKICAgICBpZl9wdHIgPSBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfZW50cnlfb3ZlcnJpZGVzX2dldChOYW1lKTsKIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRklOREVYOgorICAgIGNhc2UgTkVUU05NUF9JRklOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IGludGVyZmFjZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGREVTQ1I6CisgICAgY2FzZSBORVRTTk1QX0lGREVTQ1I6CiAgICAgICAgIGNwID0gTmFtZTsKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oY3ApOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBjcDsKQEAgLTc3NiwyNiArODAwLDI2IEBACiAgICAgICAgIGlmIChpZl9wdHIpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmX3B0ci0+dHlwZTsKICAgICAgICAgZWxzZSB7Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9UWVBFCisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfVFlQRQogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl90eXBlOwogI2Vsc2UKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gMTsgICAgLyogT1RIRVIgKi8KICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk1UVTp7CisgICAgY2FzZSBORVRTTk1QX0lGTVRVOnsKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKGxvbmcpIGlmbmV0LmlmX210dTsKICAgICAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgICAgIH0KLSAgICBjYXNlIElGU1BFRUQ6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFRUQ6CiAgICAgICAgIGlmIChpZl9wdHIpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmX3B0ci0+c3BlZWQ7CiAgICAgICAgIGVsc2UgewotI2lmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQkFVRFJBVEUKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURQogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9iYXVkcmF0ZTsKLSNlbGlmIFNUUlVDVF9JRk5FVF9IQVNfSUZfU1BFRUQKKyNlbGlmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1NQRUVECiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX3NwZWVkOwotI2VsaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9UWVBFICYmIGRlZmluZWQoSUZUX0VUSEVSKQorI2VsaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfVFlQRSAmJiBkZWZpbmVkKElGVF9FVEhFUikKICAgICAgICAgICAgIGlmIChpZm5ldC5pZl90eXBlID09IElGVF9FVEhFUikKICAgICAgICAgICAgICAgICBsb25nX3JldHVybiA9IDEwMDAwMDAwOwogICAgICAgICAgICAgaWYgKGlmbmV0LmlmX3R5cGUgPT0gSUZUX1AxMCkKQEAgLTgxNCw3ICs4MzgsNyBAQAogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGUEhZU0FERFJFU1M6CisgICAgY2FzZSBORVRTTk1QX0lGUEhZU0FERFJFU1M6CiAgICAgICAgIEludGVyZmFjZV9HZXRfRXRoZXJfQnlfSW5kZXgoaW50ZXJmYWNlLCByZXR1cm5fYnVmKTsKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogCSp2YXJfbGVuID0gMDsKQEAgLTgyNywxNCArODUxLDE0IEBACiAgICAgICAgICAgICAqdmFyX2xlbiA9IDY7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgcmV0dXJuX2J1ZjsKLSAgICBjYXNlIElGQURNSU5TVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGQURNSU5TVEFUVVM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZmxhZ3MgJiBJRkZfVVAgPyAxIDogMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1BFUlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPUEVSU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2ZsYWdzICYgSUZGX1JVTk5JTkcgPyAxIDogMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTEFTVENIQU5HRToKLSNpZiBkZWZpbmVkKFNUUlVDVF9JRk5FVF9IQVNfSUZfTEFTVENIQU5HRV9UVl9TRUMpICYmICEoZGVmaW5lZChmcmVlYnNkMikgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCAxOTk2MDcpCisgICAgY2FzZSBORVRTTk1QX0lGTEFTVENIQU5HRToKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX0lGTkVUX0lGX0xBU1RDSEFOR0VfVFZfU0VDKSAmJiAhKGRlZmluZWQoZnJlZWJzZDIpICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgMTk5NjA3KQogICAgICAgICAvKgogICAgICAgICAgKiBYWFggLSBTTk1QJ3MgaWZMYXN0Y2hhbmdlIGlzIHRpbWUgd2hlbiBvcC4gc3RhdHVzIGNoYW5nZWQKICAgICAgICAgICogKiBGcmVlQlNEJ3MgaWZfbGFzdGNoYW5nZSBpcyB0aW1lIHdoZW4gcGFja2V0IHdhcyBpbnB1dCBvciBvdXRwdXQKQEAgLTg2Myw4ICs4ODcsOCBAQAogICAgICAgICBsb25nX3JldHVybiA9IDA7ICAgICAgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTk9DVEVUUzoKLSNpZmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lCWVRFUworICAgIGNhc2UgTkVUU05NUF9JRklOT0NURVRTOgorI2lmZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lCWVRFUwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaWJ5dGVzICYgMHhmZmZmZmZmZjsKICNlbHNlCkBAIC04NzcsMTQgKzkwMSwxNCBAQAogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX2lwYWNrZXRzICogMzA4OyAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVDQVNUUEtUUzoKICAgICAgICAgewogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX2lwYWNrZXRzICYgMHhmZmZmZmZmZjsKICNlbHNlCiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX2lwYWNrZXRzOwogI2VuZGlmCi0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9JTUNBU1RTCisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSU1DQVNUUwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgICAgICBsb25nX3JldHVybiAtPSAodV9sb25nKSBpZm5ldC5pZl9pbWNhc3RzICYgMHhmZmZmZmZmZjsKICNlbHNlCkBAIC04OTMsOCArOTE3LDggQEAKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOTlVDQVNUUEtUUzoKLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lNQ0FTVFMKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk5VQ0FTVFBLVFM6CisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSU1DQVNUUwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaW1jYXN0cyAmIDB4ZmZmZmZmZmY7CiAjZWxzZQpAQCAtOTA3LDggKzkzMSw4IEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAgICAgLyogWFhYICovCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5ESVNDQVJEUzoKLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lRRFJPUFMKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkRJU0NBUkRTOgorI2lmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lRRFJPUFMKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX2lxZHJvcHMgJiAweGZmZmZmZmZmOwogI2Vsc2UKQEAgLTkyMSwxNSArOTQ1LDE1IEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAgICAgLyogWFhYICovCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5FUlJPUlM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5FUlJPUlM6CiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9pZXJyb3JzICYgMHhmZmZmZmZmZjsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaWVycm9yczsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTlVOS05PV05QUk9UT1M6Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9OT1BST1RPCisgICAgY2FzZSBORVRTTk1QX0lGSU5VTktOT1dOUFJPVE9TOgorI2lmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX05PUFJPVE8KICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX25vcHJvdG8gJiAweGZmZmZmZmZmOwogI2Vsc2UKQEAgLTk0Miw4ICs5NjYsOCBAQAogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIDA7ICAgICAgIC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE9DVEVUUzoKLSNpZmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09CWVRFUworICAgIGNhc2UgTkVUU05NUF9JRk9VVE9DVEVUUzoKKyNpZmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9PQllURVMKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX29ieXRlcyAmIDB4ZmZmZmZmZmY7CiAjZWxzZQpAQCAtOTU2LDE0ICs5ODAsMTQgQEAKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9vcGFja2V0cyAqIDMwODsgLyogWFhYICovCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFVDQVNUUEtUUzoKICAgICAgICAgewogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX29wYWNrZXRzICYgMHhmZmZmZmZmZjsKICNlbHNlCiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX29wYWNrZXRzOwogI2VuZGlmCi0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9PTUNBU1RTCisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfT01DQVNUUwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgICAgICBsb25nX3JldHVybiAtPSAodV9sb25nKSBpZm5ldC5pZl9vbWNhc3RzICYgMHhmZmZmZmZmZjsKICNlbHNlCkBAIC05NzIsOCArOTk2LDggQEAKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE5VQ0FTVFBLVFM6Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9PTUNBU1RTCisgICAgY2FzZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUzoKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9PTUNBU1RTCiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9vbWNhc3RzICYgMHhmZmZmZmZmZjsKICNlbHNlCkBAIC05ODYsMjggKzEwMTAsMjggQEAKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSAwOyAgICAgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRESVNDQVJEUzoKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX3NuZC5pZnFfZHJvcHMgJiAweGZmZmZmZmZmOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9zbmQuaWZxX2Ryb3BzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVEVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRFUlJPUlM6CiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9vZXJyb3JzICYgMHhmZmZmZmZmZjsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfb2Vycm9yczsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRRTEVOOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFFMRU46CiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9zbmQuaWZxX2xlbiAmIDB4ZmZmZmZmZmY7CiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX3NuZC5pZnFfbGVuOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlNQRUNJRklDOgorICAgIGNhc2UgTkVUU05NUF9JRlNQRUNJRklDOgogICAgICAgICAqdmFyX2xlbiA9IG51bGxPaWRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIG51bGxPaWQ7CiAgICAgZGVmYXVsdDoKQEAgLTEwNDAsNyArMTA2NCw3IEBACiAgICAgc3RhdGljIGNoYXIgICAgIE5hbWVbMTZdOwogI2VuZGlmCiAgICAgcmVnaXN0ZXIgY2hhciAgKmNwOwotI2lmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTEFTVENIQU5HRV9UVl9TRUMKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9MQVNUQ0hBTkdFX1RWX1NFQwogICAgIHN0cnVjdCB0aW1ldmFsICBub3c7CiAjZW5kaWYKICNpZiAhZGVmaW5lZChocHV4MTEpCkBAIC0xMDgzLDEwICsxMTA3LDEwIEBACiAgICAgaWZfcHRyID0gbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2VudHJ5X292ZXJyaWRlc19nZXQoTmFtZSk7CiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewotICAgIGNhc2UgSUZJTkRFWDoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkRFWDoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpbnRlcmZhY2U7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRkRFU0NSOgorICAgIGNhc2UgTkVUU05NUF9JRkRFU0NSOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBjcCA9IGlmbmV0LmlmX2VudHJ5LmlmRGVzY3I7CiAjZWxzZQpAQCAtMTExMSw3ICsxMTM1LDcgQEAKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk1UVTp7CisgICAgY2FzZSBORVRTTk1QX0lGTVRVOnsKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKGxvbmcpIGlmbmV0LmlmX2VudHJ5LmlmTXR1OwogI2Vsc2UKQEAgLTExMTksNyArMTE0Myw3IEBACiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgICAgIH0KLSAgICBjYXNlIElGU1BFRUQ6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFRUQ6CiAgICAgICAgIGlmIChpZl9wdHIpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmX3B0ci0+c3BlZWQ7CiAgICAgICAgIGVsc2UgewpAQCAtMTEzMyw3ICsxMTU3LDcgQEAKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlBIWVNBRERSRVNTOgorICAgIGNhc2UgTkVUU05NUF9JRlBIWVNBRERSRVNTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICAqdmFyX2xlbiA9IGlmbmV0LmlmX2VudHJ5LmlmUGh5c0FkZHJlc3Mub19sZW5ndGg7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIGlmbmV0LmlmX2VudHJ5LmlmUGh5c0FkZHJlc3Mub19ieXRlczsKQEAgLTExNDcsMjEgKzExNzEsMjEgQEAKICAgICAgICAgICAgICp2YXJfbGVuID0gNjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgcmV0dXJuX2J1ZjsKICNlbmRpZgotICAgIGNhc2UgSUZBRE1JTlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZBRE1JTlNUQVRVUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZkFkbWluOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9mbGFncyAmIElGRl9VUCA/IDEgOiAyOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9QRVJTVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGT1BFUlNUQVRVUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZk9wZXI7CiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2ZsYWdzICYgSUZGX1JVTk5JTkcgPyAxIDogMjsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZMQVNUQ0hBTkdFOgorICAgIGNhc2UgTkVUU05NUF9JRkxBU1RDSEFOR0U6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZMYXN0Q2hhbmdlOwogI2Vsc2UKQEAgLTExNzEsNyArMTE5NSw3IEBACiAgICAgICAgICAgICBsb25nX3JldHVybiA9IDA7ICAgIC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOT0NURVRTOgorICAgIGNhc2UgTkVUU05NUF9JRklOT0NURVRTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmSW5PY3RldHM7CiAjZWxzZQpAQCAtMTE4MSw3ICsxMjA1LDcgQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaXBhY2tldHMgKiAzMDg7ICAgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVDQVNUUEtUUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZkluVWNhc3RQa3RzOwogI2Vsc2UKQEAgLTExOTEsNyArMTIxNSw3IEBACiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX2lwYWNrZXRzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk5VQ0FTVFBLVFM6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZJbk5VY2FzdFBrdHM7CiAjZWxzZQpAQCAtMTIwMSw3ICsxMjI1LDcgQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkRJU0NBUkRTOgorICAgIGNhc2UgTkVUU05NUF9JRklORElTQ0FSRFM6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZJbkRpc2NhcmRzOwogI2Vsc2UKQEAgLTEyMTEsMTQgKzEyMzUsMTQgQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkVSUk9SUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZkluRXJyb3JzOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9pZXJyb3JzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVU5LTk9XTlBST1RPUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVOS05PV05QUk9UT1M6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZJblVua25vd25Qcm90b3M7CiAjZWxzZQpAQCAtMTIyOCw3ICsxMjUyLDcgQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRPQ1RFVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUT0NURVRTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmT3V0T2N0ZXRzOwogI2Vsc2UKQEAgLTEyMzgsNyArMTI2Miw3IEBACiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX29wYWNrZXRzICogMzA4OyAgICAgLyogWFhYICovCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFVDQVNUUEtUUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZk91dFVjYXN0UGt0czsKICNlbHNlCkBAIC0xMjQ4LDcgKzEyNzIsNyBAQAogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9vcGFja2V0czsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVROVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVE5VQ0FTVFBLVFM6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZPdXROVWNhc3RQa3RzOwogI2Vsc2UKQEAgLTEyNTgsMjggKzEyODIsMjggQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRESVNDQVJEUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZk91dERpc2NhcmRzOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9zbmQuaWZxX2Ryb3BzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVEVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRFUlJPUlM6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZPdXRFcnJvcnM7CiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX29lcnJvcnM7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUUUxFTjoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRRTEVOOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmT3V0UWxlbjsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfc25kLmlmcV9sZW47CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGU1BFQ0lGSUM6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFQ0lGSUM6CiAgICAgICAgICp2YXJfbGVuID0gbnVsbE9pZExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgbnVsbE9pZDsKICAgICBkZWZhdWx0OgpAQCAtMTMzMSwxMCArMTM1NSwxMCBAQAogICAgICAqIGlmX3B0ciA9IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9lbnRyeV9vdmVycmlkZXNfZ2V0KE5hbWUpOwogICAgICAqLwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRklOREVYOgorICAgIGNhc2UgTkVUU05NUF9JRklOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IGlmc3RhdC5pZkluZGV4OwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZERVNDUjoKKyAgICBjYXNlIE5FVFNOTVBfSUZERVNDUjoKICAgICAgICAgKnZhcl9sZW4gPSBpZnN0YXQuaWZEZXNjci5vX2xlbmd0aDsKICAgICAgICAgKHZvaWQpIG1lbWNweShyZXR1cm5fYnVmLCBpZnN0YXQuaWZEZXNjci5vX2J5dGVzLCAqdmFyX2xlbik7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIHJldHVybl9idWY7CkBAIC0xMzQ0LDY1ICsxMzY4LDY1IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZUeXBlOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZNVFU6CisgICAgY2FzZSBORVRTTk1QX0lGTVRVOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZk10dTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGU1BFRUQ6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFRUQ6CiAgICAgICAgIGlmIChpZl9wdHIpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmX3B0ci0+c3BlZWQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZTcGVlZDsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGUEhZU0FERFJFU1M6CisgICAgY2FzZSBORVRTTk1QX0lGUEhZU0FERFJFU1M6CiAgICAgICAgICp2YXJfbGVuID0gaWZzdGF0LmlmUGh5c0FkZHJlc3Mub19sZW5ndGg7CiAgICAgICAgICh2b2lkKSBtZW1jcHkocmV0dXJuX2J1ZiwgaWZzdGF0LmlmUGh5c0FkZHJlc3Mub19ieXRlcywgKnZhcl9sZW4pOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSByZXR1cm5fYnVmOwotICAgIGNhc2UgSUZBRE1JTlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZBRE1JTlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZBZG1pblN0YXR1czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1BFUlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPUEVSU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZk9wZXJTdGF0dXM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRkxBU1RDSEFOR0U6CisgICAgY2FzZSBORVRTTk1QX0lGTEFTVENIQU5HRToKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZMYXN0Q2hhbmdlOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTk9DVEVUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk9DVEVUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZJbk9jdGV0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmSW5VY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmSW5OVWNhc3RQa3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkRJU0NBUkRTOgorICAgIGNhc2UgTkVUU05NUF9JRklORElTQ0FSRFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmSW5EaXNjYXJkczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5FUlJPUlM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5FUlJPUlM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmSW5FcnJvcnM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVU5LTk9XTlBST1RPUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVOS05PV05QUk9UT1M6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmSW5Vbmtub3duUHJvdG9zOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRPQ1RFVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUT0NURVRTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZk91dE9jdGV0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZPdXRVY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZPdXROVWNhc3RQa3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRESVNDQVJEUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZPdXREaXNjYXJkczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVEVSUk9SUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZPdXRFcnJvcnM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVFFMRU46CisgICAgY2FzZSBORVRTTk1QX0lGT1VUUUxFTjoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZPdXRRTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZTUEVDSUZJQzoKKyAgICBjYXNlIE5FVFNOTVBfSUZTUEVDSUZJQzoKIAlsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZlNwZWNpZmljOwogCXJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgZGVmYXVsdDoKQEAgLTE5NDcsMTAgKzE5NzEsMTMgQEAKICAgICBpbnQgICAgICAgICAgICAgcmV0OwogCiAgICAgaWYgKCFpZl9wdHIpIHsKLSAgICAgICAgaWYgKGNvdW50KQorICAgICAgICBpZiAoY291bnQpIHsKICAgICAgICAgICAgIGlmX3B0ciA9CiAgICAgICAgICAgICAgICAgKG5tYXBpX3BoeXN0YXQgKikgbWFsbG9jKHNpemVvZihubWFwaV9waHlzdGF0KSAqIGNvdW50KTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKGlmX3B0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAoMCk7CisKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXR1cm4gKDApOyAgICAgICAgIC8qIEVPRiAqLwogICAgIH0KIApAQCAtMTk5Nyw3ICsyMDI0LDcgQEAKICAgICBzdHJ1Y3QgaWZuZXQgICAgaWZuZXQ7CiAgICAgc3RydWN0IGluX2lmYWRkciAqaWEsIGluX2lmYWRkcjsKICAgICBzaG9ydCAgICAgICAgICAgaGFzX2lwYWRkciA9IDA7Ci0jaWYgIVNUUlVDVF9JRk5FVF9IQVNfSUZfWE5BTUUKKyNpZiAhSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKICAgICByZWdpc3RlciBjaGFyICAqY3A7CiAjZW5kaWYKIApAQCAtMjAwOSw3ICsyMDM2LDcgQEAKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pbnRlcmZhY2VzOkludGVyZmFjZV9TY2FuX05leHQiLCAia2xvb2t1cCBmYWlsZWRcbiIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9YTkFNRQorI2lmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1hOQU1FCiAjaWYgZGVmaW5lZChuZXRic2QxKSB8fCBkZWZpbmVkKG9wZW5ic2QyKQogICAgICAgICBzdHJsY3B5KHNhdmVOYW1lLCBpZm5ldC5pZl94bmFtZSwgc2l6ZW9mKHNhdmVOYW1lKSk7CiAjZWxzZQpAQCAtMjA2OCw3ICsyMDk1LDcgQEAKICNlbmRpZgogICAgICAgICAgICAgfQogCi0jaWYgIWRlZmluZWQobmV0YnNkMSkgJiYgIWRlZmluZWQoZnJlZWJzZDIpICYmICFkZWZpbmVkKG9wZW5ic2QyKSAmJiAhZGVmaW5lZChTVFJVQ1RfSUZORVRfSEFTX0lGX0FERFJMSVNUKQorI2lmICFkZWZpbmVkKG5ldGJzZDEpICYmICFkZWZpbmVkKGZyZWVic2QyKSAmJiAhZGVmaW5lZChvcGVuYnNkMikgJiYgIWRlZmluZWQoSEFWRV9TVFJVQ1RfSUZORVRfSUZfQUREUkxJU1QpCiAgICAgICAgICAgICBpZm5ldC5pZl9hZGRybGlzdCA9IChzdHJ1Y3QgaWZhZGRyICopIGlhOyAgIC8qIFdST05HIERBVEEgVFlQRTsgT05MWSBBIEZMQUcgKi8KICNlbmRpZgogICAgICAgICAgICAgLyoKQEAgLTI1MjksMTAgKzI1NTYsMTAgQEAKICAgICAgKi8KIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRklOREVYOgorICAgIGNhc2UgTkVUU05NUF9JRklOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IGludGVyZmFjZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGREVTQ1I6CisgICAgY2FzZSBORVRTTk1QX0lGREVTQ1I6CiAgICAgICAgIGNwID0gaWZtZC5pZm1kX25hbWU7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGNwKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgY3A7CkBAIC0yNTQyLDE2ICsyNTY5LDE2IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm1kLmlmbWRfZGF0YS5pZmlfdHlwZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTVRVOgorICAgIGNhc2UgTkVUU05NUF9JRk1UVToKICAgICAgICAgbG9uZ19yZXR1cm4gPSAobG9uZykgaWZtZC5pZm1kX2RhdGEuaWZpX210dTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGU1BFRUQ6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFRUQ6CiAgICAgICAgIGlmIChpZl9wdHIpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmX3B0ci0+c3BlZWQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm1kLmlmbWRfZGF0YS5pZmlfYmF1ZHJhdGU7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlBIWVNBRERSRVNTOgorICAgIGNhc2UgTkVUU05NUF9JRlBIWVNBRERSRVNTOgogICAgICAgICB7CiAgICAgICAgICAgICBjaGFyICAgICAgICAgICAqY3A7CiAgICAgICAgICAgICBpZiAoZ2V0X3BoeXNfYWRkcmVzcyhpbnRlcmZhY2UsICZjcCwgdmFyX2xlbikpCkBAIC0yNTU5LDEzICsyNTg2LDEzIEBACiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNwOwogICAgICAgICB9Ci0gICAgY2FzZSBJRkFETUlOU1RBVFVTOgorICAgIGNhc2UgTkVUU05NUF9JRkFETUlOU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmbWQuaWZtZF9mbGFncyAmIElGRl9VUCA/IDEgOiAyOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPUEVSU1RBVFVTOgorICAgIGNhc2UgTkVUU05NUF9JRk9QRVJTVEFUVVM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZtZC5pZm1kX2ZsYWdzICYgSUZGX1JVTk5JTkcgPyAxIDogMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTEFTVENIQU5HRToKKyAgICBjYXNlIE5FVFNOTVBfSUZMQVNUQ0hBTkdFOgogICAgICAgICBpZiAoaWZtZC5pZm1kX2RhdGEuaWZpX2xhc3RjaGFuZ2UudHZfc2VjID09IDAgJiYKICAgICAgICAgICAgIGlmbWQuaWZtZF9kYXRhLmlmaV9sYXN0Y2hhbmdlLnR2X3VzZWMgPT0gMCkgewogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAwOwpAQCAtMjU3OSw0NSArMjYwNiw0NSBAQAogICAgICAgICAgICAgICAgICAgIHN0YXJ0dGltZS50dl91c2VjKSAvIDEwMDAwKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5PQ1RFVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5PQ1RFVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZtZC5pZm1kX2RhdGEuaWZpX2lieXRlczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZtZC5pZm1kX2RhdGEuaWZpX2lwYWNrZXRzOwogICAgICAgICBsb25nX3JldHVybiAtPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfaW1jYXN0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5OVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfaW1jYXN0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5ESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkRJU0NBUkRTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbWQuaWZtZF9kYXRhLmlmaV9pcWRyb3BzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkVSUk9SUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm1kLmlmbWRfZGF0YS5pZmlfaWVycm9yczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VTktOT1dOUFJPVE9TOgorICAgIGNhc2UgTkVUU05NUF9JRklOVU5LTk9XTlBST1RPUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfbm9wcm90bzsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUT0NURVRTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVE9DVEVUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfb2J5dGVzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRVQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbWQuaWZtZF9kYXRhLmlmaV9vcGFja2V0czsKICAgICAgICAgbG9uZ19yZXR1cm4gLT0gKHVfbG9uZykgaWZtZC5pZm1kX2RhdGEuaWZpX29tY2FzdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfb21jYXN0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURElTQ0FSRFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VURElTQ0FSRFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZtZC5pZm1kX3NuZF9kcm9wczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVEVSUk9SUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm1kLmlmbWRfZGF0YS5pZmlfb2Vycm9yczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUUUxFTjoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRRTEVOOgogICAgICAgICBsb25nX3JldHVybiA9IGlmbWQuaWZtZF9zbmRfbGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZTUEVDSUZJQzoKKyAgICBjYXNlIE5FVFNOTVBfSUZTUEVDSUZJQzoKICAgICAgICAgKnZhcl9sZW4gPSBudWxsT2lkTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBudWxsT2lkOwogICAgIGRlZmF1bHQ6CkBAIC0yNzEyLDcgKzI3MzksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRk5VTUJFUjoKKyAgICBjYXNlIE5FVFNOTVBfSUZOVU1CRVI6CiAgICAgICAgIG5ldHNubXBfYXNzZXJ0KHNpemVvZihEV09SRCkgPT0gc2l6ZW9mKGxvbmdfcmV0dXJuKSk7CiAgICAgICAgIEdldE51bWJlck9mSW50ZXJmYWNlcygoRFdPUkQgKikgJmxvbmdfcmV0dXJuKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKQEAgLTI3NTAsMTAgKzI3NzcsMTAgQEAKICAgICBpZiAoR2V0SWZFbnRyeSgmaWZSb3cpICE9IE5PX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewotICAgIGNhc2UgSUZJTkRFWDoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkRFWDoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZkluZGV4OwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZERVNDUjoKKyAgICBjYXNlIE5FVFNOTVBfSUZERVNDUjoKICAgICAgICAgKnZhcl9sZW4gPSBpZlJvdy5kd0Rlc2NyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBpZlJvdy5iRGVzY3I7CiAgICAgY2FzZSBORVRTTk1QX0lGVFlQRToKQEAgLTI3NjIsNjggKzI3ODksNjggQEAKICAgICAgICAgZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3VHlwZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTVRVOgorICAgIGNhc2UgTkVUU05NUF9JRk1UVToKICAgICAgICAgbG9uZ19yZXR1cm4gPSAobG9uZykgaWZSb3cuZHdNdHU7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlNQRUVEOgorICAgIGNhc2UgTkVUU05NUF9JRlNQRUVEOgogICAgICAgICBpZiAoaWZfcHRyKQogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZl9wdHItPnNwZWVkOwogICAgICAgICBlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKGxvbmcpIGlmUm93LmR3U3BlZWQ7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlBIWVNBRERSRVNTOgorICAgIGNhc2UgTkVUU05NUF9JRlBIWVNBRERSRVNTOgogICAgICAgICAqdmFyX2xlbiA9IGlmUm93LmR3UGh5c0FkZHJMZW47CiAgICAgICAgIG1lbWNweShyZXR1cm5fYnVmLCBpZlJvdy5iUGh5c0FkZHIsICp2YXJfbGVuKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgcmV0dXJuX2J1ZjsKLSAgICBjYXNlIElGQURNSU5TVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGQURNSU5TVEFUVVM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdBZG1pblN0YXR1czsKICAgICAgICAgYWRtaW5fc3RhdHVzID0gbG9uZ19yZXR1cm47CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZUlmRW50cnk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9QRVJTVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGT1BFUlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPQogICAgICAgICAgICAoTUlCX0lGX09QRVJfU1RBVFVTX09QRVJBVElPTkFMID09IGlmUm93LmR3T3BlclN0YXR1cykgPyAxIDogMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTEFTVENIQU5HRToKKyAgICBjYXNlIE5FVFNOTVBfSUZMQVNUQ0hBTkdFOgogICAgICAgICBsb25nX3JldHVybiA9IDAgLyogWFhYIG5vdCBhIFVOSVggZXBvY2hhbCB0aW1lIGlmUm93LmR3TGFzdENoYW5nZSAqLyA7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOT0NURVRTOgorICAgIGNhc2UgTkVUU05NUF9JRklOT0NURVRTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3SW5PY3RldHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3SW5VY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdJbk5VY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORElTQ0FSRFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5ESVNDQVJEUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd0luRGlzY2FyZHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRklORVJST1JTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3SW5FcnJvcnM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVU5LTk9XTlBST1RPUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVOS05PV05QUk9UT1M6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdJblVua25vd25Qcm90b3M7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE9DVEVUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRPQ1RFVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdPdXRPY3RldHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVFVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRVQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdPdXRVY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd091dE5VY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVERJU0NBUkRTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVERJU0NBUkRTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3T3V0RGlzY2FyZHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVEVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRFUlJPUlM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdPdXRFcnJvcnM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVFFMRU46CisgICAgY2FzZSBORVRTTk1QX0lGT1VUUUxFTjoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd091dFFMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlNQRUNJRklDOgorICAgIGNhc2UgTkVUU05NUF9JRlNQRUNJRklDOgogICAgICAgICAqdmFyX2xlbiA9IG51bGxPaWRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIG51bGxPaWQ7CiAgICAgZGVmYXVsdDoKQEAgLTI4NDIsNyArMjg2OSw3IEBACiAgICAgICAgICAgICAgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKIHsKICAgICBNSUJfSUZST1cgICAgICAgaWZFbnRyeVJvdzsKLSAgICBpZiAoKGNoYXIpIG5hbWVbOV0gIT0gSUZBRE1JTlNUQVRVUykgeworICAgIGlmICgoY2hhcikgbmFtZVs5XSAhPSBORVRTTk1QX0lGQURNSU5TVEFUVVMpIHsKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PVFdSSVRBQkxFOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5oCmluZGV4IDUxZDRiMWQuLmMxOWI3YTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmgKQEAgLTgsNyArOCw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIGNvbmZpZ3VyZSBtYWNyb3MKICAqLwotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiAKIC8qCiAgKiBjb25mbGljdHMgd2l0aCB0aGUgbmV3IE1GRCByZXdyaXRlCkBAIC02MSwyOSArNjEsMjkgQEAKIAogI2VuZGlmIC8qIFVTSU5HX0lGX01JQl9JRlRBQkxFX01PRFVMRSAqLwogCi0jZGVmaW5lIElGTlVNQkVSICAgICAgICAwCi0jZGVmaW5lIElGSU5ERVggICAgICAgICAxCi0jZGVmaW5lIElGREVTQ1IgICAgICAgICAyCisjZGVmaW5lIE5FVFNOTVBfSUZOVU1CRVIgICAgICAgIDAKKyNkZWZpbmUgTkVUU05NUF9JRklOREVYICAgICAgICAgMQorI2RlZmluZSBORVRTTk1QX0lGREVTQ1IgICAgICAgICAyCiAjZGVmaW5lIE5FVFNOTVBfSUZUWVBFICAgICAgICAgIDMKLSNkZWZpbmUgSUZNVFUgICAgICAgICAgIDQKLSNkZWZpbmUgSUZTUEVFRCAgICAgICAgIDUKLSNkZWZpbmUgSUZQSFlTQUREUkVTUyAgIDYKLSNkZWZpbmUgSUZBRE1JTlNUQVRVUyAgIDcKLSNkZWZpbmUgSUZPUEVSU1RBVFVTICAgIDgKLSNkZWZpbmUgSUZMQVNUQ0hBTkdFICAgIDkKLSNkZWZpbmUgSUZJTk9DVEVUUyAgICAgIDEwCi0jZGVmaW5lIElGSU5VQ0FTVFBLVFMgICAxMQotI2RlZmluZSBJRklOTlVDQVNUUEtUUyAgMTIKLSNkZWZpbmUgSUZJTkRJU0NBUkRTICAgIDEzCi0jZGVmaW5lIElGSU5FUlJPUlMgICAgICAxNAotI2RlZmluZSBJRklOVU5LTk9XTlBST1RPUyAxNQotI2RlZmluZSBJRk9VVE9DVEVUUyAgICAgMTYKLSNkZWZpbmUgSUZPVVRVQ0FTVFBLVFMgIDE3Ci0jZGVmaW5lIElGT1VUTlVDQVNUUEtUUyAxOAotI2RlZmluZSBJRk9VVERJU0NBUkRTICAgMTkKLSNkZWZpbmUgSUZPVVRFUlJPUlMgICAgIDIwCi0jZGVmaW5lIElGT1VUUUxFTiAgICAgICAyMQotI2RlZmluZSBJRlNQRUNJRklDICAgICAgMjIKKyNkZWZpbmUgTkVUU05NUF9JRk1UVSAgICAgICAgICAgNAorI2RlZmluZSBORVRTTk1QX0lGU1BFRUQgICAgICAgICA1CisjZGVmaW5lIE5FVFNOTVBfSUZQSFlTQUREUkVTUyAgIDYKKyNkZWZpbmUgTkVUU05NUF9JRkFETUlOU1RBVFVTICAgNworI2RlZmluZSBORVRTTk1QX0lGT1BFUlNUQVRVUyAgICA4CisjZGVmaW5lIE5FVFNOTVBfSUZMQVNUQ0hBTkdFICAgIDkKKyNkZWZpbmUgTkVUU05NUF9JRklOT0NURVRTICAgICAgMTAKKyNkZWZpbmUgTkVUU05NUF9JRklOVUNBU1RQS1RTICAgMTEKKyNkZWZpbmUgTkVUU05NUF9JRklOTlVDQVNUUEtUUyAgMTIKKyNkZWZpbmUgTkVUU05NUF9JRklORElTQ0FSRFMgICAgMTMKKyNkZWZpbmUgTkVUU05NUF9JRklORVJST1JTICAgICAgMTQKKyNkZWZpbmUgTkVUU05NUF9JRklOVU5LTk9XTlBST1RPUyAxNQorI2RlZmluZSBORVRTTk1QX0lGT1VUT0NURVRTICAgICAxNgorI2RlZmluZSBORVRTTk1QX0lGT1VUVUNBU1RQS1RTICAxNworI2RlZmluZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUyAxOAorI2RlZmluZSBORVRTTk1QX0lGT1VURElTQ0FSRFMgICAxOQorI2RlZmluZSBORVRTTk1QX0lGT1VURVJST1JTICAgICAyMAorI2RlZmluZSBORVRTTk1QX0lGT1VUUUxFTiAgICAgICAyMQorI2RlZmluZSBORVRTTk1QX0lGU1BFQ0lGSUMgICAgICAyMgogCiAjaWZkZWYgbGludXgKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pcC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYwppbmRleCA2NzE3ZTJlLi4xNDAxYmQxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pcC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwLmMKQEAgLTE5LDEyICsxOSwxMiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCIKICNpbmNsdWRlICJpcC5oIgogI2luY2x1ZGUgImlwQWRkci5oIgogI2luY2x1ZGUgImludGVyZmFjZXMuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCiAKICNpZm5kZWYgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQKICNkZWZpbmUgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQJNQpAQCAtNjQsNDMgKzY0LDY5IEBACiAgKiBpbmZvcm1hdGlvbiBhdCAKICAqLwogc3RydWN0IHZhcmlhYmxlMSBpcGFkZHJfdmFyaWFibGVzW10gPSB7Ci0gICAge0lQQURBRERSLCAgICAgIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfaXBBZGRyRW50cnksIDEsIHsxfX0sCi0gICAge0lQQURJRklOREVYLCAgIEFTTl9JTlRFR0VSLCAgIFJPTkxZLCB2YXJfaXBBZGRyRW50cnksIDEsIHsyfX0sCisgICAge0lQQURBRERSLCAgICAgIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBBZGRyRW50cnksIDEsIHsxfX0sCisgICAge0lQQURJRklOREVYLCAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBBZGRyRW50cnksIDEsIHsyfX0sCiAjaWZuZGVmIHN1blYzCi0gICAge0lQQURORVRNQVNLLCAgIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfaXBBZGRyRW50cnksIDEsIHszfX0sCisgICAge0lQQURORVRNQVNLLCAgIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBBZGRyRW50cnksIDEsIHszfX0sCiAjZW5kaWYKLSAgICB7SVBBREJDQVNUQUREUiwgQVNOX0lOVEVHRVIsICAgUk9OTFksIHZhcl9pcEFkZHJFbnRyeSwgMSwgezR9fSwKLSAgICB7SVBBRFJFQVNNTUFYLCAgQVNOX0lOVEVHRVIsICAgUk9OTFksIHZhcl9pcEFkZHJFbnRyeSwgMSwgezV9fQorICAgIHtJUEFEQkNBU1RBRERSLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwQWRkckVudHJ5LCAxLCB7NH19LAorICAgIHtJUEFEUkVBU01NQVgsICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwQWRkckVudHJ5LCAxLCB7NX19CiB9OwogCiBzdHJ1Y3QgdmFyaWFibGUxIGlwcm91dGVfdmFyaWFibGVzW10gPSB7Ci0gICAge0lQUk9VVEVERVNULCAgICBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxfX0sCi0gICAge0lQUk9VVEVJRklOREVYLCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHsyfX0sCi0gICAge0lQUk9VVEVNRVRSSUMxLCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHszfX0sCi0gICAge0lQUk9VVEVNRVRSSUMyLCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHs0fX0sCi0gICAge0lQUk9VVEVNRVRSSUMzLCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHs1fX0sCi0gICAge0lQUk9VVEVNRVRSSUM0LCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHs2fX0sCi0gICAge0lQUk9VVEVORVhUSE9QLCBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHs3fX0sCi0gICAge0lQUk9VVEVUWVBFLCAgICBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHs4fX0sCi0gICAge0lQUk9VVEVQUk9UTywgICBBU05fSU5URUdFUiwgICBST05MWSwgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs5fX0sCi0gICAge0lQUk9VVEVBR0UsICAgICBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxMH19LAotICAgIHtJUFJPVVRFTUFTSywgICAgQVNOX0lQQUREUkVTUywgUldSSVRFLCB2YXJfaXBSb3V0ZUVudHJ5LCAxLCB7MTF9fSwKLSAgICB7SVBST1VURU1FVFJJQzUsIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2lwUm91dGVFbnRyeSwgMSwgezEyfX0sCi0gICAge0lQUk9VVEVJTkZPLCAgICBBU05fT0JKRUNUX0lELCBST05MWSwgIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxM319CisgICAge0lQUk9VVEVERVNULCAgICBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxfX0sCisgICAge0lQUk9VVEVJRklOREVYLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHsyfX0sCisgICAge0lQUk9VVEVNRVRSSUMxLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHszfX0sCisgICAge0lQUk9VVEVNRVRSSUMyLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs0fX0sCisgICAge0lQUk9VVEVNRVRSSUMzLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs1fX0sCisgICAge0lQUk9VVEVNRVRSSUM0LCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs2fX0sCisgICAge0lQUk9VVEVORVhUSE9QLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs3fX0sCisgICAge0lQUk9VVEVUWVBFLCAgICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs4fX0sCisgICAge0lQUk9VVEVQUk9UTywgICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezl9fSwKKyAgICB7SVBST1VURUFHRSwgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezEwfX0sCisgICAge0lQUk9VVEVNQVNLLCAgICBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxMX19LAorICAgIHtJUFJPVVRFTUVUUklDNSwgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfaXBSb3V0ZUVudHJ5LCAxLCB7MTJ9fSwKKyAgICB7SVBST1VURUlORk8sICAgIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBSb3V0ZUVudHJ5LCAxLCB7MTN9fQogfTsKIAogc3RydWN0IHZhcmlhYmxlMSBpcG1lZGlhX3ZhcmlhYmxlc1tdID0gewogI2lmZGVmIFVTSU5HX01JQklJX0FUX01PRFVMRQogI2lmIGRlZmluZWQgKFdJTjMyKSB8fCBkZWZpbmVkIChjeWd3aW4pCi0gICAge0lQTUVESUFJRklOREVYLCAgICAgQVNOX0lOVEVHRVIsICAgUldSSVRFLCB2YXJfYXRFbnRyeSwgMSwgezF9fSwKLSAgICB7SVBNRURJQVBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9hdEVudHJ5LCAxLCB7Mn19LAotICAgIHtJUE1FRElBTkVUQUREUkVTUywgIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX2F0RW50cnksIDEsIHszfX0sCi0gICAge0lQTUVESUFUWVBFLCAgICAgICAgQVNOX0lOVEVHRVIsICAgUldSSVRFLCB2YXJfYXRFbnRyeSwgMSwgezR9fQorICAgIHtJUE1FRElBSUZJTkRFWCwgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2F0RW50cnksIDEsIHsxfX0sCisgICAge0lQTUVESUFQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfYXRFbnRyeSwgMSwgezJ9fSwKKyAgICB7SVBNRURJQU5FVEFERFJFU1MsICBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7M319LAorICAgIHtJUE1FRElBVFlQRSwgICAgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2F0RW50cnksIDEsIHs0fX0KICNlbHNlCi0gICAge0lQTUVESUFJRklOREVYLCAgICAgQVNOX0lOVEVHRVIsICAgUk9OTFksIHZhcl9hdEVudHJ5LCAxLCB7MX19LAotICAgIHtJUE1FRElBUEhZU0FERFJFU1MsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfYXRFbnRyeSwgMSwgezJ9fSwKLSAgICB7SVBNRURJQU5FVEFERFJFU1MsICBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2F0RW50cnksIDEsIHszfX0sCi0gICAge0lQTUVESUFUWVBFLCAgICAgICAgQVNOX0lOVEVHRVIsICAgUk9OTFksIHZhcl9hdEVudHJ5LCAxLCB7NH19CisgICAge0lQTUVESUFJRklOREVYLCAgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7MX19LAorICAgIHtJUE1FRElBUEhZU0FERFJFU1MsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYXRFbnRyeSwgMSwgezJ9fSwKKyAgICB7SVBNRURJQU5FVEFERFJFU1MsICBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2F0RW50cnksIDEsIHszfX0sCisgICAge0lQTUVESUFUWVBFLCAgICAgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7NH19CiAjZW5kaWYKICNlbmRpZgogfTsKQEAgLTEyMiw2ICsxNDgsNyBAQAogaW5pdF9pcCh2b2lkKQogewogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisgICAgaW50IHJjOwogCiAgICAgLyoKICAgICAgKiByZWdpc3RlciBvdXJzZWx2ZXMgd2l0aCB0aGUgYWdlbnQgYXMgYSBncm91cCBvZiBzY2FsYXJzLi4uCkBAIC0xMjksNyArMTU2LDkgQEAKICAgICBERUJVR01TR1RMKCgibWliSUkvaXAiLCAiSW5pdGlhbGlzaW5nIElQIGdyb3VwXG4iKSk7CiAgICAgcmVnaW5mbyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJpcCIsIGlwX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBfb2lkLCBPSURfTEVOR1RIKGlwX29pZCksIEhBTkRMRVJfQ0FOX1JPTkxZKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChyZWdpbmZvLCBJUEZPUldBUkRJTkcsIElQUk9VVEVESVNDQVJEUyk7CisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChyZWdpbmZvLCBJUEZPUldBUkRJTkcsIElQUk9VVEVESVNDQVJEUyk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLyoKICAgICAgKiAuLi4uIHdpdGggYSBsb2NhbCBjYWNoZQpAQCAtMjAwLDcgKzIyOSw3IEBACiAjZW5kaWYKIAogI2lmZGVmIE5FVEJTRF9TVEFUU19WSUFfU1lTQ1RMCi0jZGVmaW5lIElQX1NUQVRfU1RSVUNUVVJFICAgICAgc3RydWN0IGlwX21pYgorI2RlZmluZSBJUF9TVEFUX1NUUlVDVFVSRQlzdHJ1Y3QgaXBfbWliCiAjZGVmaW5lIFVTRVNfU05NUF9ERVNJR05FRF9JUFNUQVQKICN1bmRlZiBJUF9OU1RBVFMKICNlbmRpZgpAQCAtMzc4LDcgKzQwNyw3IEBACiAgICAgICAgIHJldF92YWx1ZSA9IGlwc3RhdC5pcHNfZm9yd2FyZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJUElOVU5LTk9XTlBST1RPUzoKLSNpZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTk9QUk9UTworI2lmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfTk9QUk9UTwogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX25vcHJvdG87CiAgICAgICAgIGJyZWFrOwogI2Vsc2UKQEAgLTM4Niw3ICs0MTUsNyBAQAogICAgICAgICBjb250aW51ZTsKICNlbmRpZgogICAgIGNhc2UgSVBJTkRJU0NBUkRTOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHRFJPUFBFRAorI2lmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfRlJBR0RST1BQRUQKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19mcmFnZHJvcHBlZDsgICAvKiA/PyAqLwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC0zOTQsNyArNDIzLDcgQEAKICAgICAgICAgY29udGludWU7CiAjZW5kaWYKICAgICBjYXNlIElQSU5ERUxJVkVSUzoKLSNpZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfREVMSVZFUkVECisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19ERUxJVkVSRUQKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19kZWxpdmVyZWQgJiAweGZmZmZmZmZmOwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC00MDIsNyArNDMxLDcgQEAKICAgICAgICAgY29udGludWU7CiAjZW5kaWYKICAgICBjYXNlIElQT1VUUkVRVUVTVFM6Ci0jaWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0xPQ0FMT1VUCisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19MT0NBTE9VVAogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX2xvY2Fsb3V0ICYgMHhmZmZmZmZmZjsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtNDEwLDcgKzQzOSw3IEBACiAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCiAgICAgY2FzZSBJUE9VVERJU0NBUkRTOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19PRFJPUFBFRAorI2lmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfT0RST1BQRUQKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19vZHJvcHBlZDsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtNDMzLDcgKzQ2Miw3IEBACiAgICAgICAgIHJldF92YWx1ZSA9IGlwc3RhdC5pcHNfZnJhZ21lbnRzOwogICAgICAgICBicmVhazsKICAgICBjYXNlIElQUkVBU01PS1M6Ci0jaWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX1JFQVNTRU1CTEVECisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19SRUFTU0VNQkxFRAogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX3JlYXNzZW1ibGVkOwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC00NDQsNyArNDczLDcgQEAKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19mcmFnZHJvcHBlZCArIGlwc3RhdC5pcHNfZnJhZ3RpbWVvdXQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSVBGUkFHT0tTOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHTUVOVEVECisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHTUVOVEVECiAgICAgICAgIHJldF92YWx1ZSA9IGlwc3RhdC5pcHNfZnJhZ21lbnRzOwogICAgICAgICBicmVhazsKICNlbHNlICAgICAgICAgICAgLyogWFhYICovCkBAIC00NTMsNyArNDgyLDcgQEAKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIElQRlJBR0ZBSUxTOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19DQU5URlJBRworI2lmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfQ0FOVEZSQUcKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19jYW50ZnJhZzsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtNDYxLDcgKzQ5MCw3IEBACiAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCiAgICAgY2FzZSBJUEZSQUdDUkVBVEVTOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19PRlJBR01FTlRTCisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19PRlJBR01FTlRTCiAgICAgICAgIHJldF92YWx1ZSA9IGlwc3RhdC5pcHNfb2ZyYWdtZW50czsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtNDY5LDcgKzQ5OCw3IEBACiAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCiAgICAgY2FzZSBJUFJPVVRFRElTQ0FSRFM6Ci0jaWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX05PUk9VVEUKKyNpZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX05PUk9VVEUKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19ub3JvdXRlOwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC04MDYsOSArODM1LDkgQEAKICAgICByZXRfdmFsdWUgPSBuZXRic2RfcmVhZF9pcF9zdGF0KCZpcHN0YXQpOwogCiAgICAgaWYgKCByZXRfdmFsdWUgPCAwKSB7Ci0gICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2lwIiwgIkZhaWxlZCB0byBsb2FkIElQIEdyb3VwIChuZXRic2QpXG4iKSk7CisJREVCVUdNU0dUTCgoIm1pYklJL2lwIiwgIkZhaWxlZCB0byBsb2FkIElQIEdyb3VwIChuZXRic2QpXG4iKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICBERUJVR01TR1RMKCgibWliSUkvaXAiLCAiTG9hZGVkIElQIEdyb3VwIChuZXRic2QpXG4iKSk7CisJREVCVUdNU0dUTCgoIm1pYklJL2lwIiwgIkxvYWRlZCBJUCBHcm91cCAobmV0YnNkKVxuIikpOwogICAgIH0KICAgICByZXR1cm4gcmV0X3ZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYwppbmRleCBmNTlhNjNhLi40MTk5MzkyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYwpAQCAtMTYsNyArMTYsNyBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKLSNpZiBkZWZpbmVkKElGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkKKyNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQogI2RlZmluZSBfS0VSTkVMIDEKICNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKICNlbmRpZgpAQCAtMTE4LDcgKzExOCw2IEBACiAKICNpbmNsdWRlICJpcC5oIgogI2luY2x1ZGUgImludGVyZmFjZXMuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCiAKICNpZmRlZiBjeWd3aW4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0yMjEsNyArMjIwLDcgQEAKICNpZiAhZGVmaW5lZChmcmVlYnNkMikgJiYgIWRlZmluZWQoaHB1eDExKSAmJiAhZGVmaW5lZChsaW51eCkKICAgICAgICAgaWYgKEludGVyZmFjZV9TY2FuX05leHQoJmludGVyZmFjZSwgTlVMTCwgJmlmbmV0LCAmaW5faWZhZGRyKSA9PSAwKQogICAgICAgICAgICAgYnJlYWs7Ci0jaWZkZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9BRERSTElTVAorI2lmZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0FERFJMSVNUCiAgICAgICAgIGlmIChpZm5ldC5pZl9hZGRybGlzdCA9PSAwKQogICAgICAgICAgICAgY29udGludWU7ICAgICAgICAgICAvKiBObyBhZGRyZXNzIGZvdW5kIGZvciBpbnRlcmZhY2UgKi8KICNlbmRpZgpAQCAtMjkwLDcgKzI4OSw3IEBACiAgICAgICAgIHJldHVybiAoTlVMTCk7CiAgICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIGxvd2VzdCwgMTQgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IDE0OwotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXR1cm4pOwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBJUEFEQUREUjoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmgKaW5kZXggNTI2YTA2MC4uZWM2OWNmMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmgKQEAgLTUsNyArNSw2IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9JUEFERFJfSAogI2RlZmluZSBfTUlCR1JPVVBfSVBBRERSX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKICNpZiAhZGVmaW5lZChORVRTTk1QX0VOQUJMRV9NRkRfUkVXUklURVMpCiBjb25maWdfcmVxdWlyZShtaWJJSS9pcCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jCmluZGV4IDAwZDdkMTcuLjgxZTYyNTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMKQEAgLTI2MCwxMiArMjYwLDEwIEBACiAKICAgICB2b2lkICAgICAgICAgICAqZGF0YV9jb250ZXh0OwogCi0gICAgb2lkICAgICAgICAgICAgKnN1ZmZpeDsKLSAgICBzaXplX3QgICAgICAgICAgc3VmZml4X2xlbjsKLQogICAgIC8qKiBjb2x1bW4gYW5kIHJvdyBpbmRleCBlbmNvZGVkIHBvcnRpb24gKi8KLSAgICBzdWZmaXggPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lICsgcmVnaW5mby0+cm9vdG9pZF9sZW4gKyAxOwotICAgIHN1ZmZpeF9sZW4gPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCAtCisgICAgY29uc3Qgb2lkICogY29uc3Qgc3VmZml4ID0KKyAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZSArIHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMTsKKyAgICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVfbGVuZ3RoIC0KICAgICAgICAgKHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMSk7CiAKICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYwppbmRleCA0ZTE4NjhiLi41OTQxY2IwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jCkBAIC00LDEwICs0LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgotI2lmIGRlZmluZWQoSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQorI2lmIGRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpCiAjZGVmaW5lIF9LRVJORUwgMQogI2RlZmluZSBfSV9ERUZJTkVEX0tFUk5FTAogI2VuZGlmCisjaWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUworI2RlZmluZSBfS0VSTkVMX1NUUlVDVFVSRVMKKyNlbmRpZgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KQEAgLTEzNyw3ICsxNDAsNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KIAogI2luY2x1ZGUgImtlcm5lbC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKICNpbmNsdWRlICJpcHY2LmgiCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgogCkBAIC0xNjEsMTAxICsxNjMsMTMwIEBACiAjZW5kaWYKIAogc3RydWN0IHZhcmlhYmxlMyBpcHY2X3ZhcmlhYmxlc1tdID0gewotICAgIHtJUFY2Rk9SV0FSRElORywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXB2NiwgMSwgezF9fSwKLSAgICB7SVBWNkRFRkFVTFRIT1BMSU1JVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXB2NiwgMSwgezJ9fSwKLSAgICB7SVBWNklOVEVSRkFDRVMsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9pcHY2LCAxLCB7M319LAotICAgIHtJUFY2SUZUQkxMQVNUQ0hHLCBBU05fVElNRVRJQ0tTLCBST05MWSwgdmFyX2lwdjYsIDEsIHs0fX0sCisgICAge0lQVjZGT1JXQVJESU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2LCAxLCB7MX19LAorICAgIHtJUFY2REVGQVVMVEhPUExJTUlULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2LCAxLCB7Mn19LAorICAgIHtJUFY2SU5URVJGQUNFUywgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjYsIDEsIHszfX0sCisgICAge0lQVjZJRlRCTExBU1RDSEcsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NiwgMSwgezR9fSwKIAotICAgIHtJUFY2SUZERVNDUiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCAyfX0sCi0gICAge0lQVjZJRkxPV0xBWUVSLCBBU05fT0JKRUNUX0lELCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDN9fSwKLSAgICB7SVBWNklGRUZGRUNUTVRVLCBBU05fVU5TSUdORUQsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgNH19LAotICAgIHtJUFY2SUZSRUFTTU1BWFNJWkUsIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA1fX0sCisgICAge0lQVjZJRkRFU0NSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDJ9fSwKKyAgICB7SVBWNklGTE9XTEFZRVIsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgM319LAorICAgIHtJUFY2SUZFRkZFQ1RNVFUsIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA0fX0sCisgICAge0lQVjZJRlJFQVNNTUFYU0laRSwgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDV9fSwKIAotICAgIHtJUFY2SUZUT0tFTiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA2fX0sCi0gICAge0lQVjZJRlRPS0VOTEVOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA3fX0sCi0gICAge0lQVjZJRlBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDh9fSwKLSAgICB7SVBWNklGQURNU1RBVFVTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA5fX0sCi0gICAge0lQVjZJRk9QRVJTVEFUVVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDEwfX0sCi0gICAge0lQVjZJRkxBU1RDSEFOR0UsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgMTF9fSwKKyAgICB7SVBWNklGVE9LRU4sIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgNn19LAorICAgIHtJUFY2SUZUT0tFTkxFTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgN319LAorICAgIHtJUFY2SUZQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA4fX0sCisgICAge0lQVjZJRkFETVNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgOX19LAorICAgIHtJUFY2SUZPUEVSU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCAxMH19LAorICAgIHtJUFY2SUZMQVNUQ0hBTkdFLCBBU05fVElNRVRJQ0tTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDExfX0sCiAKLSAgICB7SVBWNklGU1RBVFNJTlJDVlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDF9fSwKLSAgICB7SVBWNklGU1RBVFNJTkhEUkVSUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDJ9fSwKLSAgICB7SVBWNklGU1RBVFNUT09CSUdFUlJTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCAzfX0sCi0gICAge0lQVjZJRlNUQVRTSU5OT1JPVVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgNH19LAotICAgIHtJUFY2SUZTVEFUU0lOQUREUkVSUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDV9fSwKLSAgICB7SVBWNklGU1RBVFNJTlVOS05PV1BST1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCA2fX0sCi0gICAge0lQVjZJRlNUQVRTSU5UUlVOQ0FUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgN319LAotICAgIHtJUFY2SUZTVEFUU0lORElTQ0FSRFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDh9fSwKLSAgICB7SVBWNklGU1RBVFNJTkRFTElWRVJTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCA5fX0sCi0gICAge0lQVjZJRlNUQVRTT1VURk9SV0RBVEFTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCAxMH19LAotICAgIHtJUFY2SUZTVEFUU09VVFJFUVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDExfX0sCi0gICAge0lQVjZJRlNUQVRTT1VURElTQ0FSRFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDEyfX0sCi0gICAge0lQVjZJRlNUQVRTT1VURlJBR09LUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTN9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRGUkFHRkFJTFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDE0fX0sCi0gICAge0lQVjZJRlNUQVRTT1VURlJBR0NSRUFUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTV9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRSRUFTTVJFUVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDE2fX0sCi0gICAge0lQVjZJRlNUQVRTT1VUUkVBU01PS1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDE3fX0sCi0gICAge0lQVjZJRlNUQVRTT1VUUkVBU01GQUlMUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTh9fSwKLSAgICB7SVBWNklGU1RBVFNJTk1DQVNUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTl9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRNQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDIwfX0sCisgICAge0lQVjZJRlNUQVRTSU5SQ1ZTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxfX0sCisgICAge0lQVjZJRlNUQVRTSU5IRFJFUlJTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAyfX0sCisgICAge0lQVjZJRlNUQVRTVE9PQklHRVJSUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgM319LAorICAgIHtJUFY2SUZTVEFUU0lOTk9ST1VURVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDR9fSwKKyAgICB7SVBWNklGU1RBVFNJTkFERFJFUlJTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCA1fX0sCisgICAge0lQVjZJRlNUQVRTSU5VTktOT1dQUk9UUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgNn19LAorICAgIHtJUFY2SUZTVEFUU0lOVFJVTkNBVFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDd9fSwKKyAgICB7SVBWNklGU1RBVFNJTkRJU0NBUkRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCA4fX0sCisgICAge0lQVjZJRlNUQVRTSU5ERUxJVkVSUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgOX19LAorICAgIHtJUFY2SUZTVEFUU09VVEZPUldEQVRBUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgMTB9fSwKKyAgICB7SVBWNklGU1RBVFNPVVRSRVFTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxMX19LAorICAgIHtJUFY2SUZTVEFUU09VVERJU0NBUkRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxMn19LAorICAgIHtJUFY2SUZTVEFUU09VVEZSQUdPS1MsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDEzfX0sCisgICAge0lQVjZJRlNUQVRTT1VURlJBR0ZBSUxTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxNH19LAorICAgIHtJUFY2SUZTVEFUU09VVEZSQUdDUkVBVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDE1fX0sCisgICAge0lQVjZJRlNUQVRTT1VUUkVBU01SRVFTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxNn19LAorICAgIHtJUFY2SUZTVEFUU09VVFJFQVNNT0tTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxN319LAorICAgIHtJUFY2SUZTVEFUU09VVFJFQVNNRkFJTFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDE4fX0sCisgICAge0lQVjZJRlNUQVRTSU5NQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDE5fX0sCisgICAge0lQVjZJRlNUQVRTT1VUTUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAyMH19LAogCiAjaWYgMAotICAgIHtJUFY2QUREUlBSRUZJWE9OTElOS0ZMRywgSU5URUdFUiwgUk9OTFksIHZhcl9pcHY2QWRkckVudHJ5LCAzLAotICAgICB7NywgMSwgM319LAotICAgIHtJUFY2QUREUlBSRUZJWEFVVE9OT01PVVNGTEFHLCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsCi0gICAgIHs3LCAxLCA0fX0sCi0gICAge0lQVjZBRERSUFJFRklYQURWUFJFRkVSTElGRSwgVU5TSUdORUQzMiwgUk9OTFksIHZhcl9pcHY2QWRkckVudHJ5LCAzLAotICAgICB7NywgMSwgNX19LAotICAgIHtJUFY2QUREUlBSRUZJWFZBTElETElGRSwgVU5TSUdORUQzMiwgUk9OTFksIHZhcl9pcHY2QWRkckVudHJ5LCAzLAotICAgICB7NywgMSwgNn19LAorICAgIHtJUFY2QUREUlBSRUZJWE9OTElOS0ZMRywgSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2QWRkckVudHJ5LCAzLCB7NywgMSwgM319LAorICAgIHtJUFY2QUREUlBSRUZJWEFVVE9OT01PVVNGTEFHLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs3LCAxLCA0fX0sCisgICAge0lQVjZBRERSUFJFRklYQURWUFJFRkVSTElGRSwgVU5TSUdORUQzMiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2QWRkckVudHJ5LCAzLCB7NywgMSwgNX19LAorICAgIHtJUFY2QUREUlBSRUZJWFZBTElETElGRSwgVU5TSUdORUQzMiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2QWRkckVudHJ5LCAzLCB7NywgMSwgNn19LAogCi0gICAge0lQVjZBRERSUEZYTEVOLCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCAyfX0sCi0gICAge0lQVjZBRERSVFlQRSwgSU5URUdFUiwgUk9OTFksIHZhcl9pcHY2QWRkckVudHJ5LCAzLCB7OCwgMSwgM319LAotICAgIHtJUFY2QUREUkFOWUNBU1RGTEFHLCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCA0fX0sCi0gICAge0lQVjZBRERSU1RBVFVTLCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCA1fX0sCisgICAge0lQVjZBRERSUEZYTEVOLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCAyfX0sCisgICAge0lQVjZBRERSVFlQRSwgSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2QWRkckVudHJ5LCAzLCB7OCwgMSwgM319LAorICAgIHtJUFY2QUREUkFOWUNBU1RGTEFHLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCA0fX0sCisgICAge0lQVjZBRERSU1RBVFVTLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCA1fX0sCiAKLSAgICB7SVBWNlJPVVRFSUZJTkRFWCwgSXBWNklGSU5ERVgsIFJPTkxZLCB2YXJfaXB2NlJvdXRlRW50cnksIDMsCi0gICAgIHsxMSwgMSwgNH19LAotICAgIHtJUFY2Uk9VVEVORVhUSE9QLCBJcFY2QUREUkVTUywgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywKLSAgICAgezExLCAxLCA1fX0sCi0gICAge0lQVjZST1VURVRZUEUsIElOVEVHRVIsIFJPTkxZLCB2YXJfaXB2NlJvdXRlRW50cnksIDMsIHsxMSwgMSwgNn19LAotICAgIHtJUFY2Uk9VVEVQUk9UT0NPTCwgSU5URUdFUiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCA3fX0sCi0gICAge0lQVjZST1VURVBPTElDWSwgVU5TSUdORUQzMiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywKLSAgICAgezExLCAxLCA4fX0sCi0gICAge0lQVjZST1VURUFHRSwgVU5TSUdORUQzMiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCA5fX0sCi0gICAge0lQVjZST1VURU5FWFRIT1BSREksIFVOU0lHTkVEMzIsIFJPTkxZLCB2YXJfaXB2NlJvdXRlRW50cnksIDMsCi0gICAgIHsxMSwgMSwgMTB9fSwKLSAgICB7SVBWNlJPVVRFTUVUUklDLCBVTlNJR05FRDMyLCBST05MWSwgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLAotICAgICB7MTEsIDEsIDExfX0sCi0gICAge0lQVjZST1VURVdFSUdIVCwgVU5TSUdORUQzMiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywKLSAgICAgezExLCAxLCAxMn19LAotICAgIHtJUFY2Uk9VVEVJTkZPLCBPQkpJRCwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCAxM319LAotICAgIHtJUFY2Uk9VVEVWQUxJRCwgSU5URUdFUiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCAxNH19LAorICAgIHtJUFY2Uk9VVEVJRklOREVYLCBJcFY2SUZJTkRFWCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCA0fX0sCisgICAge0lQVjZST1VURU5FWFRIT1AsIElwVjZBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDV9fSwKKyAgICB7SVBWNlJPVVRFVFlQRSwgSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCA2fX0sCisgICAge0lQVjZST1VURVBST1RPQ09MLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDd9fSwKKyAgICB7SVBWNlJPVVRFUE9MSUNZLCBVTlNJR05FRDMyLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDh9fSwKKyAgICB7SVBWNlJPVVRFQUdFLCBVTlNJR05FRDMyLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDl9fSwKKyAgICB7SVBWNlJPVVRFTkVYVEhPUFJESSwgVU5TSUdORUQzMiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCAxMH19LAorICAgIHtJUFY2Uk9VVEVNRVRSSUMsIFVOU0lHTkVEMzIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NlJvdXRlRW50cnksIDMsIHsxMSwgMSwgMTF9fSwKKyAgICB7SVBWNlJPVVRFV0VJR0hULCBVTlNJR05FRDMyLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDEyfX0sCisgICAge0lQVjZST1VURUlORk8sIE9CSklELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDEzfX0sCisgICAge0lQVjZST1VURVZBTElELCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDE0fX0sCiAKLSAgICB7SVBWNk5FVFRPTUVESUFQSFlBRERSLCBTVFJJTkcsIFJPTkxZLCB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgMn19LAotICAgIHtJUFY2TkVUVE9NRURJQVRZUEUsIElOVEVHRVIsIFJPTkxZLCB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgM319LAotICAgIHtJUFY2TkVUVE9NRURJQVNUQVRFLCBJTlRFR0VSLCBST05MWSwgdmFyX25kcEVudHJ5LCAzLCB7MTIsIDEsIDR9fSwKLSAgICB7SVBWNk5FVFRPTUVESUFMQVNUVVBEQVRFLCBUSU1FVElDS1MsIFJPTkxZLCB2YXJfbmRwRW50cnksIDMsCi0gICAgIHsxMiwgMSwgNX19LAotICAgIHtJUFY2TkVUVE9NRURJQVZBTElELCBJTlRFR0VSLCBST05MWSwgdmFyX25kcEVudHJ5LCAzLCB7MTIsIDEsIDZ9fSwKKyAgICB7SVBWNk5FVFRPTUVESUFQSFlBRERSLCBTVFJJTkcsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgMn19LAorICAgIHtJUFY2TkVUVE9NRURJQVRZUEUsIElOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgM319LAorICAgIHtJUFY2TkVUVE9NRURJQVNUQVRFLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX25kcEVudHJ5LCAzLCB7MTIsIDEsIDR9fSwKKyAgICB7SVBWNk5FVFRPTUVESUFMQVNUVVBEQVRFLCBUSU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgNX19LAorICAgIHtJUFY2TkVUVE9NRURJQVZBTElELCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX25kcEVudHJ5LCAzLCB7MTIsIDEsIDZ9fSwKICNlbmRpZgogfTsKIG9pZCAgICAgICAgICAgICBpcHY2X3ZhcmlhYmxlc19vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgNTUsIDEgfTsKQEAgLTI2NSw3NCArMjk2LDc0IEBACiAgICAgY29uZmlnX2FkZF9taWIoSVBWNiAtIE1JQikKICNlbmRpZgogICAgICBzdHJ1Y3QgdmFyaWFibGUzIGlwdjZpY21wX3ZhcmlhYmxlc1tdID0gewotICAgICAgICAge0lQVjZJRklDTVBJTk1TRywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDF9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QSU5FUlJPUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAyfX0sCi0gICAgICAgICB7SVBWNklGSUNNUElORFNUVU5SQ0hTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgM319LAotICAgICAgICAge0lQVjZJRklDTVBJTkFETVBST0hTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgNH19LAotICAgICAgICAge0lQVjZJRklDTVBJTlRJTUVYQ0RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgNX19LAotICAgICAgICAge0lQVjZJRklDTVBJTlBBUk1QUk9CUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDZ9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QSU5QS1RUT09CSUdTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgN319LAotICAgICAgICAge0lQVjZJRklDTVBJTkVDSE9TLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgOH19LAotICAgICAgICAge0lQVjZJRklDTVBJTkVDSE9SRVBTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgOX19LAotICAgICAgICAge0lQVjZJRklDTVBJTlJUUlNMSUNJVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxMH19LAotICAgICAgICAge0lQVjZJRklDTVBJTlJUUkFEVlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxMX19LAotICAgICAgICAge0lQVjZJRklDTVBJTk5CUlNMSUNJVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxMn19LAotICAgICAgICAge0lQVjZJRklDTVBJTk5CUkFEVlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxM319LAotICAgICAgICAge0lQVjZJRklDTVBJTlJFRElSRUNUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDE0fX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOR1JQTUVRRVJZUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDE1fX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOR1JQTUVSU1BTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMTZ9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QSU5HUlBNRVJFRENTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMTd9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUTVNHLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMTh9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VURVJST1JTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMTl9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VURFNUVU5SQ0hTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMjB9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUQURNUFJPSFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAyMX19LAotICAgICAgICAge0lQVjZJRklDTVBPVVRUSU1FWENEUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDIyfX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVFBBUk1QUk9CUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDIzfX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVFBLVFRPT0JJR1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAyNH19LAotICAgICAgICAge0lQVjZJRklDTVBPVVRFQ0hPUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDI1fX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVEVDSE9SRVBTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMjZ9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUUlRSU0xJQ0lUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDI3fX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVFJUUkFEVlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAyOH19LAotICAgICAgICAge0lQVjZJRklDTVBPVVROQlJTTElDSVRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMjl9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUTkJSQURWUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDMwfX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVFJFRElSRUNUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDMxfX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVEdSUE1FUUVSWVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAzMn19LAotICAgICAgICAge0lQVjZJRklDTVBPVVRHUlBNRVJTUFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAzM319LAotICAgICAgICAge0lQVjZJRklDTVBPVVRHUlBNRVJFRENTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMzR9fQorICAgICAgICAge0lQVjZJRklDTVBJTk1TRywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDF9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QSU5FUlJPUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAyfX0sCisgICAgICAgICB7SVBWNklGSUNNUElORFNUVU5SQ0hTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgM319LAorICAgICAgICAge0lQVjZJRklDTVBJTkFETVBST0hTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgNH19LAorICAgICAgICAge0lQVjZJRklDTVBJTlRJTUVYQ0RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgNX19LAorICAgICAgICAge0lQVjZJRklDTVBJTlBBUk1QUk9CUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDZ9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QSU5QS1RUT09CSUdTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgN319LAorICAgICAgICAge0lQVjZJRklDTVBJTkVDSE9TLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgOH19LAorICAgICAgICAge0lQVjZJRklDTVBJTkVDSE9SRVBTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgOX19LAorICAgICAgICAge0lQVjZJRklDTVBJTlJUUlNMSUNJVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxMH19LAorICAgICAgICAge0lQVjZJRklDTVBJTlJUUkFEVlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxMX19LAorICAgICAgICAge0lQVjZJRklDTVBJTk5CUlNMSUNJVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxMn19LAorICAgICAgICAge0lQVjZJRklDTVBJTk5CUkFEVlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxM319LAorICAgICAgICAge0lQVjZJRklDTVBJTlJFRElSRUNUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDE0fX0sCisgICAgICAgICB7SVBWNklGSUNNUElOR1JQTUVRRVJZUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDE1fX0sCisgICAgICAgICB7SVBWNklGSUNNUElOR1JQTUVSU1BTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMTZ9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QSU5HUlBNRVJFRENTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMTd9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUTVNHLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMTh9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VURVJST1JTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMTl9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VURFNUVU5SQ0hTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMjB9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUQURNUFJPSFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAyMX19LAorICAgICAgICAge0lQVjZJRklDTVBPVVRUSU1FWENEUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDIyfX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVFBBUk1QUk9CUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDIzfX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVFBLVFRPT0JJR1MsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAyNH19LAorICAgICAgICAge0lQVjZJRklDTVBPVVRFQ0hPUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDI1fX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVEVDSE9SRVBTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMjZ9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUUlRSU0xJQ0lUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDI3fX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVFJUUkFEVlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAyOH19LAorICAgICAgICAge0lQVjZJRklDTVBPVVROQlJTTElDSVRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMjl9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUTkJSQURWUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDMwfX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVFJFRElSRUNUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDMxfX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVEdSUE1FUUVSWVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAzMn19LAorICAgICAgICAge0lQVjZJRklDTVBPVVRHUlBNRVJTUFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAzM319LAorICAgICAgICAge0lQVjZJRklDTVBPVVRHUlBNRVJFRENTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMzR9fQogICAgICB9Owogb2lkICAgICAgICAgICAgIGlwdjZpY21wX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNTYsIDEgfTsKICNpZiAwCkBAIC0zNDAsNyArMzcxLDggQEAKICAgICBjb25maWdfYWRkX21pYihJUFY2IC0gSUNNUCAtIE1JQikKICNlbmRpZgogICAgICBzdHJ1Y3QgdmFyaWFibGUyIGlwdjZ1ZHBfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgICB7SVBWNlVEUElGSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3VkcDYsIDIsIHsxLCAzfX0KKyAgICAgICAgIHtJUFY2VURQSUZJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl91ZHA2LCAyLCB7MSwgM319CiAgICAgIH07CiBvaWQgICAgICAgICAgICAgaXB2NnVkcF92YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDcsIDYgfTsKICNpZiAwCkBAIC0zNDgsMTUgKzM4MCwxNyBAQAogICAgIGNvbmZpZ19hZGRfbWliKElQVjYgLSBVRFAgLSBNSUIpCiAjZW5kaWYKICAgICAgc3RydWN0IHZhcmlhYmxlMiBpcHY2dGNwX3ZhcmlhYmxlc1tdID0gewotICAgICAgICAge0lQVjZUQ1BDT05OU1RBVEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3RjcDYsIDIsIHsxLCA2fX0sCisgICAgICAgICB7SVBWNlRDUENPTk5TVEFURSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl90Y3A2LCAyLCB7MSwgNn19LAogICAgICB9Owogb2lkICAgICAgICAgICAgIGlwdjZ0Y3BfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA2LCAxNiB9OwogI2lmIDAKIGNvbmZpZ19sb2FkX21pYigxLjMgLjYgLjEgLjMgLjg2IC4xLCA3LCBpcHY2dGNwX3ZhcmlhYmxlcykKICAgICBjb25maWdfYWRkX21pYihJUFY2IC0gVENQIC0gTUlCKQogI2VuZGlmCi0gICAgIHZvaWQKLSAgICAgICAgICAgICAgICAgICAgIGluaXRfaXB2NigpCisKK3ZvaWQKK2luaXRfaXB2Nih2b2lkKQogewogICAgIC8qCiAgICAgICogcmVnaXN0ZXIgb3Vyc2VsdmVzIHdpdGggdGhlIGFnZW50IHRvIGhhbmRsZSBvdXIgbWliIHRyZWUgCkBAIC00MDAsNyArNDM0LDcgQEAKICAgICAgICAgICAgKChpbnQpIHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKIAotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KICAgICByZXR1cm4gKE1BVENIX1NVQ0NFRURFRCk7CiB9CkBAIC00NDAsNyArNDc0LDcgQEAKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbmV3bmFtZSwKICAgICAgICAgICAgKChpbnQpIHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAgICAgcmV0dXJuIChNQVRDSF9TVUNDRUVERUQpOwogfQpAQCAtOTMxLDcgKzk2NSw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogI2VuZGlmCi0jaWZkZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9MQVNUQ0hBTkdFX1RWX1NFQworI2lmZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0xBU1RDSEFOR0VfVFZfU0VDCiAgICAgICAgICAgICBpZiAoIWdvdGFuc3dlcikgewogICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldCAgICBpZm5ldDsKIApAQCAtMTk2MCw3ICsxOTk0LDcgQEAKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBsaW51eF9yZWFkX2lwNl9zdGF0KHN0cnVjdCBpcDZfbWliICppcDZzdGF0KQogewogICAgIGlmICghaXA2c3RhdCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKaW5kZXggYmI2Zjg2Ny4uMjZiODk5YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKQEAgLTcsOCArNyw2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgotCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2VuZGlmCkBAIC0xNiw0MyArMTQsMTA5IEBACiAjaWYgSEFWRV9TWVNfUEFSQU1fSAogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2VuZGlmCisjaW5jbHVkZSA8ZXJybm8uaD4KIAogI2luY2x1ZGUgImtlcm5lbF9saW51eC5oIgogCiBzdHJ1Y3QgaXBfbWliICAgY2FjaGVkX2lwX21pYjsKK3N0cnVjdCBpcDZfbWliICAgY2FjaGVkX2lwNl9taWI7CiBzdHJ1Y3QgaWNtcF9taWIgY2FjaGVkX2ljbXBfbWliOworc3RydWN0IGljbXA2X21pYiBjYWNoZWRfaWNtcDZfbWliOworc3RydWN0IGljbXA0X21zZ19taWIgY2FjaGVkX2ljbXA0X21zZ19taWI7CiBzdHJ1Y3QgdGNwX21pYiAgY2FjaGVkX3RjcF9taWI7CiBzdHJ1Y3QgdWRwX21pYiAgY2FjaGVkX3VkcF9taWI7CitzdHJ1Y3QgdWRwNl9taWIgIGNhY2hlZF91ZHA2X21pYjsKIAogI2RlZmluZSBJUF9TVEFUU19MSU5FCSJJcDogJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1IgogI2RlZmluZSBJQ01QX1NUQVRTX0xJTkUJIkljbXA6ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUiCisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX0xJTkUgIkljbXBNc2c6ICIKICNkZWZpbmUgVENQX1NUQVRTX0xJTkUJIlRjcDogJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSIKICNkZWZpbmUgVURQX1NUQVRTX0xJTkUJIlVkcDogJWx1ICVsdSAlbHUgJWx1IgorI2RlZmluZSBJUDZfU1RBVFNfTElORSAgICJJcDYiCisjZGVmaW5lIElDTVA2X1NUQVRTX0xJTkUgIkljbXA2IgogI2RlZmluZSBVRFA2X1NUQVRTX0xJTkUgIlVkcDYiCiAKICNkZWZpbmUgSVBfU1RBVFNfUFJFRklYX0xFTgk0CiAjZGVmaW5lIElDTVBfU1RBVFNfUFJFRklYX0xFTgk2CisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX1BSRUZJWF9MRU4gOQogI2RlZmluZSBUQ1BfU1RBVFNfUFJFRklYX0xFTgk1CiAjZGVmaW5lIFVEUF9TVEFUU19QUkVGSVhfTEVOCTUKKyNkZWZpbmUgSVA2X1NUQVRTX1BSRUZJWF9MRU4JMworI2RlZmluZSBJQ01QNl9TVEFUU19QUkVGSVhfTEVOCTUKICNkZWZpbmUgVURQNl9TVEFUU19QUkVGSVhfTEVOICAgNAogCitpbnQKK2RlY29kZV9pY21wX21zZyhjaGFyICpsaW5lLCBjaGFyICpkYXRhLCBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqbXNnKQoreworICAgIGNoYXIgKnRva2VuLCAqc2F2ZXB0ciwgKmxpbmVwdHIsICpzYXZlcHRyMSwgKmRhdGFwdHIsICpkZWxpbSA9IE5VTEw7CisgICAgY2hhciBsaW5lX2NweVsxMDI0XTsKKyAgICBjaGFyIGRhdGFfY3B5WzEwMjRdOworICAgIGxvbmcgaW5kZXg7CisKKyAgICBpZihkYXRhID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qCisgICAgICogU2luY2Ugd2UgYXJlIHVzaW5nIHN0cnRvaywgdGhlcmUgaXMgYSBwb3NzaWJsaXR5IG9mIHRoZSBvcmdpbmFsIGRhdGEKKyAgICAgKiBnZXR0aW5nIG1vZGlmaWVkLiBTbyB3ZSB0YWtlIGEgbG9jYWwgY29weSBmb3IgdGhpcyBwdXJwb3NlIGV2ZW4gdGhvdWdoCisgICAgICogaXRzIGV4cGVuc2l2ZS4KKyAgICAgKi8KKyAgICBzdHJsY3B5KGxpbmVfY3B5LCBsaW5lLCBzaXplb2YobGluZV9jcHkpKTsKKyAgICBzdHJsY3B5KGRhdGFfY3B5LCBkYXRhLCBzaXplb2YoZGF0YV9jcHkpKTsKKworICAgIGxpbmVwdHIgPSBsaW5lX2NweTsKKyAgICBkYXRhcHRyID0gZGF0YV9jcHk7CisgICAgc2F2ZXB0cjEgPSBOVUxMOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmKE5VTEwgPT0gKHRva2VuID0gc3RydG9rX3IobGluZXB0ciwgIiAiLCAmc2F2ZXB0cikpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGxpbmVwdHIgPSBOVUxMOworICAgICAgICBlcnJubyA9IDA7CisgICAgICAgIGlmICgwID09IHN0cm5jbXAoc3Ryc2VwKCZ0b2tlbiwgImUiKSwgIk91dFR5cCIsIDYpKSB7CisgICAgICAgICAgICBpbmRleCA9IHN0cnRvbCh0b2tlbiwgJmRlbGltLCAwKTsKKyAgICAgICAgICAgIGlmIChFUkFOR0UgPT0gZXJybm8pIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPiAyNTUpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoTlVMTCA9PSAodG9rZW4gPSBzdHJ0b2tfcihkYXRhcHRyLCAiICIsICZzYXZlcHRyMSkpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGF0YXB0ciA9IE5VTEw7CisgICAgICAgICAgICBtc2ctPnZhbHNbaW5kZXhdLk91dFR5cGUgPSBhdG9pKHRva2VuKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluZGV4ID0gc3RydG9sKHRva2VuLCAmZGVsaW0sIDApOworICAgICAgICAgICAgaWYgKEVSQU5HRSA9PSBlcnJubykgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA+IDI1NSkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKE5VTEwgPT0gKHRva2VuID0gc3RydG9rX3IoZGF0YXB0ciwgIiAiLCAmc2F2ZXB0cjEpKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRhdGFwdHIgPSBOVUxMOworICAgICAgICAgICAgbXNnLT52YWxzW2luZGV4XS5JblR5cGUgPSBhdG9pKHRva2VuKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KIAogaW50CiBsaW51eF9yZWFkX21pYklJX3N0YXRzKHZvaWQpCiB7CiAgICAgRklMRSAgICAgICAgICAgKmluID0gZm9wZW4oIi9wcm9jL25ldC9zbm1wIiwgInIiKTsKLSNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2Ci0gICAgRklMRSAgICAgICAgICAgKmluNjsKLSAgICB1bnNpZ25lZCBsb25nICAgdmFsdWU7Ci0jZW5kaWYKLSAgICBjaGFyICAgICAgICAgICAgbGluZVsxMDI0XTsKLQorICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdLCBkYXRhWzEwMjRdOworICAgIGludCByZXQgPSAwOwogICAgIGlmICghaW4pIHsKICAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eCIsIlVuYWJsZSB0byBvcGVuIC9wcm9jL25ldC9zbm1wIikpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAKKyAgICBtZW1zZXQobGluZSwgJ1wwJywgc2l6ZW9mKGxpbmUpKTsKKyAgICBtZW1zZXQoZGF0YSwgJ1wwJywgc2l6ZW9mKGRhdGEpKTsKICAgICB3aGlsZSAobGluZSA9PSBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGluKSkgewogICAgICAgICBpZiAoIXN0cm5jbXAobGluZSwgSVBfU1RBVFNfTElORSwgSVBfU1RBVFNfUFJFRklYX0xFTikpIHsKICAgICAgICAgICAgIHNzY2FuZihsaW5lLCBJUF9TVEFUU19MSU5FLApAQCAtMTA0LDYgKzE2OCwxOSBAQAogICAgICAgICAgICAgICAgICAgICZjYWNoZWRfaWNtcF9taWIuaWNtcE91dFRpbWVzdGFtcFJlcHMsCiAgICAgICAgICAgICAgICAgICAgJmNhY2hlZF9pY21wX21pYi5pY21wT3V0QWRkck1hc2tzLAogICAgICAgICAgICAgICAgICAgICZjYWNoZWRfaWNtcF9taWIuaWNtcE91dEFkZHJNYXNrUmVwcyk7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAobGluZSwgSUNNUF9NU0dfU1RBVFNfTElORSwgSUNNUF9NU0dfU1RBVFNfUFJFRklYX0xFTikpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBOb3RlOiBXZSBoYXZlIHRvIGRvIHRoaXMgZGlmZmVyZW50bHkgZnJvbSBvdGhlciBzdGF0cyBhcyB0aGUKKyAgICAgICAgICAgICAqIGNvdW50ZXJzIHRvIHRoaXMgc3RhdHMgYXJlIGR5bmFtaWMuIFNvIHdlIHdpbGwgbm90IGtub3cgdGhlCisgICAgICAgICAgICAgKiBudW1iZXIgb2YgY291bnRlcnMgYXQgYSBnaXZlbiB0aW1lLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBmZ2V0cyhkYXRhLCBzaXplb2YoZGF0YSksIGluKTsKKyAgICAgICAgICAgIGlmKGRlY29kZV9pY21wX21zZyhsaW5lICsgSUNNUF9NU0dfU1RBVFNfUFJFRklYX0xFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKyBJQ01QX01TR19TVEFUU19QUkVGSVhfTEVOLAorICAgICAgICAgICAgICAgICAgICAgICAgJmNhY2hlZF9pY21wNF9tc2dfbWliKSA8IDApIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldCA9IDE7CiAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAobGluZSwgVENQX1NUQVRTX0xJTkUsIFRDUF9TVEFUU19QUkVGSVhfTEVOKSkgewogICAgICAgICAgICAgaW50ICAgICAgICAgICAgIHJldCA9IHNzY2FuZihsaW5lLCBUQ1BfU1RBVFNfTElORSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNhY2hlZF90Y3BfbWliLnRjcFJ0b0FsZ29yaXRobSwKQEAgLTEzMiwzNSArMjA5LDYgQEAKICAgICB9CiAgICAgZmNsb3NlKGluKTsKIAotI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKLSAgICBpbjYgPSBmb3BlbigiL3Byb2MvbmV0L3NubXA2IiwgInIiKTsKLSAgICBpZiAoaW42KSB7Ci0gICAgICAKLSAgICAgICAgd2hpbGUgKGxpbmUgPT0gZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbjYpKSB7Ci0KLSAgICAgICAgICAgIGlmICgoJ1UnICE9IGxpbmVbMF0pIHx8Ci0gICAgICAgICAgICAgICAgKDAgIT0gc3RybmNtcChsaW5lLCBVRFA2X1NUQVRTX0xJTkUsIFVEUDZfU1RBVFNfUFJFRklYX0xFTikpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBzc2NhbmYobGluZSwgIiUqcyAlbHUiICwgJnZhbHVlKTsKLSAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoJ08nID09IGxpbmVbNF0pIC8qIFVkcDZPdXREYXRhZ3JhbXMgKi8KLSAgICAgICAgICAgICAgICBjYWNoZWRfdWRwX21pYi51ZHBPdXREYXRhZ3JhbXMgKz0gdmFsdWU7Ci0gICAgICAgICAgICBlbHNlIGlmICgnTicgPT0gbGluZVs0XSkgLyogVWRwNk5vUG9ydHMgKi8KLSAgICAgICAgICAgICAgICBjYWNoZWRfdWRwX21pYi51ZHBOb1BvcnRzICs9IHZhbHVlOwotICAgICAgICAgICAgZWxzZSBpZiAoJ0QnID09IGxpbmVbNl0pIC8qIFVkcDZJbkRhdGFncmFtcyAqLwotICAgICAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcEluRGF0YWdyYW1zICs9IHZhbHVlOwotICAgICAgICAgICAgZWxzZSBpZiAoJ0UnID09IGxpbmVbNl0pIC8qIFVkcDZJbkVycm9ycyAqLwotICAgICAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcEluRXJyb3JzICs9IHZhbHVlOwotCi0gICAgICAgIH0KLSAgICAgICAgZmNsb3NlKGluNik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eCIsIlVuYWJsZSB0byBvcGVuIC9wcm9jL25ldC9zbm1wNiIpKTsKLSAgICB9Ci0KLSNlbmRpZgotCiAgICAgLyoKICAgICAgKiBUd2VhayBpbGxlZ2FsIHZhbHVlczoKICAgICAgKgpAQCAtMTc2LDcgKzIyNCw4IEBACiAgICAgICovCiAgICAgaWYgKCFjYWNoZWRfdGNwX21pYi50Y3BSdG9BbGdvcml0aG0pCiAgICAgICAgIGNhY2hlZF90Y3BfbWliLnRjcFJ0b0FsZ29yaXRobSA9IDE7Ci0gICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gcmV0OwogfQogCiBpbnQKQEAgLTE4OSw2ICsyMzgsMTM2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK2ludCBsaW51eF9yZWFkX2lwNl9zdGF0KCBzdHJ1Y3QgaXA2X21pYiAqaXA2c3RhdCkKK3sKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgRklMRSAgICAgICAgICAgKmluOworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdOworICAgIHVuc2lnbmVkIGxvbmcgICBzdGF0czsKKyAgICBjaGFyICAgICAgICAgICAqZW5kcDsKKyAgICBpbnQgICAgICAgICAgICAgbWF0Y2g7CisjZW5kaWYKKworICAgIG1lbXNldCgoY2hhciAqKSBpcDZzdGF0LCAoMCksIHNpemVvZigqaXA2c3RhdCkpOworCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaXA2c3RhdHMiLAorICAgICAgICAgICAgICAgICJSZWFkaW5nIC9wcm9jL25ldC9zbm1wNiBzdGF0c1xuIikpOworICAgIGlmIChOVUxMID09IChpbiA9IGZvcGVuKCIvcHJvYy9uZXQvc25tcDYiLCAiciIpKSkgeworICAgICAgICBERUJVR01TR1RMKCgibWliSUkva2VybmVsX2xpbnV4L2lwNnN0YXRzIiwKKyAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBvcGVuIC9wcm9jL25ldC9zbm1wNlxuIikpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd2hpbGUgKE5VTEwgIT0gZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKKyAgICAgICAgaWYgKDAgIT0gc3RybmNtcChsaW5lLCBJUDZfU1RBVFNfTElORSwgSVA2X1NUQVRTX1BSRUZJWF9MRU4pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKDEgIT0gc3NjYW5mKGxpbmUsICIlKnMgJWx1IiwgJnN0YXRzKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGVuZHAgPSBzdHJjaHIobGluZSwgJyAnKTsKKyAgICAgICAgKmVuZHAgPSAnXDAnOworICAgICAgICBERUJVR01TR1RMKCgibWliSUkva2VybmVsX2xpbnV4L2lwNnN0YXRzIiwgIkZpbmQgdGFnOiAlc1xuIiwgbGluZSkpOworCisgICAgICAgIG1hdGNoID0gMTsKKyAgICAgICAgaWYgKDAgPT0gc3RybmNtcChsaW5lICsgMywgIkluIiwgMikpIHsgIC8qIEluICovCisgICAgICAgICAgICBpZiAoMCA9PSBzdHJjbXAobGluZSArIDUsICJBZGRyRXJyb3JzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJbkFkZHJFcnJvcnMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDUsICJEZWxpdmVycyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2SW5EZWxpdmVycyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNSwgIkRpc2NhcmRzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJbkRpc2NhcmRzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA1LCAiSGRyRXJyb3JzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJbkhkckVycm9ycyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNSwgIk1jYXN0UGt0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2SW5NY2FzdFBrdHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDUsICJOb1JvdXRlcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2SW5Ob1JvdXRlcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNSwgIlJlY2VpdmVzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJblJlY2VpdmVzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA1LCAiVHJ1bmNhdGVkUGt0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2SW5UcnVuY2F0ZWRQa3RzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA1LCAiVG9vQmlnRXJyb3JzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJblRvb0JpZ0Vycm9ycyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNSwgIlVua25vd25Qcm90b3MiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNkluVW5rbm93blByb3RvcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtYXRjaCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJuY21wKGxpbmUgKyAzLCAiT3V0IiwgMykpIHsgIC8qIE91dCAqLworICAgICAgICAgICAgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA2LCAiRGlzY2FyZHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNk91dERpc2NhcmRzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA2LCAiRm9yd0RhdGFncmFtcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2T3V0Rm9yd0RhdGFncmFtcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNiwgIk1jYXN0UGt0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2T3V0TWNhc3RQa3RzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA2LCAiTm9Sb3V0ZXMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNk91dE5vUm91dGVzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA2LCAiUmVxdWVzdHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNk91dFJlcXVlc3RzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1hdGNoID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cm5jbXAobGluZSArIDMsICJSZWFzbSIsIDUpKSB7ICAvKiBSZWFzbSAqLworICAgICAgICAgICAgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiRmFpbHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNlJlYXNtRmFpbHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJPS3MiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNlJlYXNtT0tzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiUmVxZHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNlJlYXNtUmVxZHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJUaW1lb3V0IikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZSZWFzbVRpbWVvdXQgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RybmNtcChsaW5lICsgMywgIkZyYWciLCA0KSkgeyAgLyogRnJhZyAqLworICAgICAgICAgICAgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiQ3JlYXRlcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2RnJhZ0NyZWF0ZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJGYWlscyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2RnJhZ0ZhaWxzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiT0tzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZGcmFnT0tzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1hdGNoID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1hdGNoID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmKCFtYXRjaCkKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaXA2c3RhdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGlzIGFuIHVua25vd24gdGFnXG4iLCBsaW5lKSk7CisgICAgfQorCisgICAgZmNsb3NlKGluKTsKKyNlbmRpZgorCisgICAgbWVtY3B5KChjaGFyICopIGlwNnN0YXQsIChjaGFyICopICZjYWNoZWRfaXA2X21pYiwgc2l6ZW9mKCppcDZzdGF0KSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbGludXhfcmVhZF9pY21wX21zZ19zdGF0KHN0cnVjdCBpY21wX21pYiAqaWNtcHN0YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA0X21zZ19taWIgKmljbXBtc2dzdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZmxhZykKK3sKKyAgICBpbnQgcmV0OworCisgICAgbWVtc2V0KGljbXBzdGF0LCAwLCBzaXplb2YoKmljbXBzdGF0KSk7CisgICAgbWVtc2V0KGljbXBtc2dzdGF0LCAwLCBzaXplb2YoKmljbXBtc2dzdGF0KSk7CisKKyAgICBpZiAoKHJldCA9IGxpbnV4X3JlYWRfbWliSUlfc3RhdHMoKSkgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSBpZiAocmV0KSB7CisgICAgICAgbWVtY3B5KGljbXBtc2dzdGF0LCAmY2FjaGVkX2ljbXA0X21zZ19taWIsIHNpemVvZigqaWNtcG1zZ3N0YXQpKTsKKyAgICAgICAqZmxhZyA9IDE7IC8qIFdlIGhhdmUgYSB2YWxpZCBpY21wbXNnICovCisgICAgfQorCisgICAgbWVtY3B5KGljbXBzdGF0LCAmY2FjaGVkX2ljbXBfbWliLCBzaXplb2YoKmljbXBzdGF0KSk7CisgICAgcmV0dXJuIDA7Cit9CisKIGludAogbGludXhfcmVhZF9pY21wX3N0YXQoc3RydWN0IGljbXBfbWliICppY21wc3RhdCkKIHsKQEAgLTIwMSw2ICszODAsMTY3IEBACiB9CiAKIGludAorbGludXhfcmVhZF9pY21wNl9wYXJzZShzdHJ1Y3QgaWNtcDZfbWliICppY21wNnN0YXQsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpY21wNl9tc2dfbWliICppY21wNm1zZ3N0YXQsCisgICAgICAgICAgICAgICAgICAgICAgIGludCAqc3VwcG9ydCkKK3sKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgRklMRSAgICAgICAgICAgKmluOworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdOworICAgIGNoYXIgICAgICAgICAgICBuYW1lWzI1NV07CisgICAgdW5zaWduZWQgbG9uZyAgIHN0YXRzOworICAgIGNoYXIgICAgICAgICAgICplbmRwLCAqdmFsczsKKyAgICBpbnQgICAgICAgICAgICAgbWF0Y2g7CisjZW5kaWYKKworICAgIG1lbXNldChpY21wNnN0YXQsIDAsIHNpemVvZigqaWNtcDZzdGF0KSk7CisgICAgaWYgKE5VTEwgIT0gaWNtcDZtc2dzdGF0KQorICAgICAgICBtZW1zZXQoaWNtcDZtc2dzdGF0LCAwLCBzaXplb2YoKmljbXA2bXNnc3RhdCkpOworCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaWNtcDZzdGF0cyIsCisgICAgICAgICAgICAgICAgIlJlYWRpbmcgL3Byb2MvbmV0L3NubXA2IHN0YXRzXG4iKSk7CisgICAgaWYgKE5VTEwgPT0gKGluID0gZm9wZW4oIi9wcm9jL25ldC9zbm1wNiIsICJyIikpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaWNtcDZzdGF0cyIsCisgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gb3BlbiAvcHJvYy9uZXQvc25tcDZcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHdoaWxlIChOVUxMICE9IGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pKSB7CisgICAgICAgIGlmICgwICE9IHN0cm5jbXAobGluZSwgSUNNUDZfU1RBVFNfTElORSwgSUNNUDZfU1RBVFNfUFJFRklYX0xFTikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoMiAhPSBzc2NhbmYobGluZSwgIiVzICVsdSIsIG5hbWUsICZzdGF0cykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBlbmRwID0gc3RyY2hyKGxpbmUsICcgJyk7CisgICAgICAgICplbmRwID0gJ1wwJzsKKyAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eC9pY21wNnN0YXRzIiwgIkZpbmQgdGFnOiAlc1xuIiwgbGluZSkpOworCisgICAgICAgIHZhbHMgPSBuYW1lOworICAgICAgICBpZiAoTlVMTCAhPSBpY21wNm1zZ3N0YXQpIHsKKyAgICAgICAgICAgIGludCB0eXBlOworICAgICAgICAgICAgaWYgKDAgPT0gc3RybmNtcChuYW1lLCAiSWNtcDZPdXRUeXBlIiwgMTIpKSB7CisgICAgICAgICAgICAgICAgc3Ryc2VwKCZ2YWxzLCAiZSIpOworICAgICAgICAgICAgICAgIHR5cGUgPSBhdG9pKHZhbHMpOworICAgICAgICAgICAgICAgIGlmICggdHlwZSA8IDAgfHwgdHlwZSA+IDI1NSApCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGljbXA2bXNnc3RhdC0+dmFsc1t0eXBlXS5PdXRUeXBlID0gc3RhdHM7CisgICAgICAgICAgICAgICAgKnN1cHBvcnQgPSAxOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cm5jbXAobmFtZSwgIkljbXA2SW5UeXBlIiwgMTEpKSB7CisgICAgICAgICAgICAgICAgc3Ryc2VwKCZ2YWxzLCAiZSIpOworICAgICAgICAgICAgICAgIHR5cGUgPSBhdG9pKHZhbHMpOworICAgICAgICAgICAgICAgIGlmICggdHlwZSA8IDAgfHwgdHlwZSA+IDI1NSApCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGljbXA2bXNnc3RhdC0+dmFsc1t0eXBlXS5JblR5cGUgPSBzdGF0czsKKyAgICAgICAgICAgICAgICAqc3VwcG9ydCA9IDE7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtYXRjaCA9IDE7CisgICAgICAgIGlmICgwID09IHN0cm5jbXAobGluZSArIDUsICJJbiIsIDIpKSB7ICAvKiBJbiAqLworICAgICAgICAgICAgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiRGVzdFVucmVhY2hzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5EZXN0VW5yZWFjaHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJFY2hvcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluRWNob3MgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJFY2hvUmVwbGllcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluRWNob1JlcGxpZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJFcnJvcnMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJbkVycm9ycyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIkdyb3VwTWVtYlF1ZXJpZXMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJbkdyb3VwTWVtYlF1ZXJpZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJHcm91cE1lbWJSZWR1Y3Rpb25zIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Hcm91cE1lbWJSZWR1Y3Rpb25zID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiR3JvdXBNZW1iUmVzcG9uc2VzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Hcm91cE1lbWJSZXNwb25zZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJNc2dzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Nc2dzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiTmVpZ2hib3JBZHZlcnRpc2VtZW50cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluTmVpZ2hib3JBZHZlcnRpc2VtZW50cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIk5laWdoYm9yU29saWNpdHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJbk5laWdoYm9yU29saWNpdHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJQa3RUb29CaWdzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Qa3RUb29CaWdzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiUGFybVByb2JsZW1zIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5QYXJtUHJvYmxlbXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJSZWRpcmVjdHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJblJlZGlyZWN0cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIlJvdXRlckFkdmVydGlzZW1lbnRzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Sb3V0ZXJBZHZlcnRpc2VtZW50cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIlJvdXRlclNvbGljaXRzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Sb3V0ZXJTb2xpY2l0cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIlRpbWVFeGNkcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluVGltZUV4Y2RzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1hdGNoID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cm5jbXAobGluZSArIDUsICJPdXQiLCAzKSkgeyAgLyogT3V0ICovCisgICAgICAgICAgICBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJEZXN0VW5yZWFjaHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXREZXN0VW5yZWFjaHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJFY2hvUmVwbGllcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dEVjaG9SZXBsaWVzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiR3JvdXBNZW1iUmVkdWN0aW9ucyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dEdyb3VwTWVtYlJlZHVjdGlvbnMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJHcm91cE1lbWJSZXNwb25zZXMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXRHcm91cE1lbWJSZXNwb25zZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJNc2dzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0TXNncyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIk5laWdoYm9yQWR2ZXJ0aXNlbWVudHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXROZWlnaGJvckFkdmVydGlzZW1lbnRzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiTmVpZ2hib3JTb2xpY2l0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dE5laWdoYm9yU29saWNpdHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJQa3RUb29CaWdzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0UGt0VG9vQmlncyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIlBhcm1Qcm9ibGVtcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dFBhcm1Qcm9ibGVtcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIlJlZGlyZWN0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dFJlZGlyZWN0cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIlJvdXRlclNvbGljaXRzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0Um91dGVyU29saWNpdHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJUaW1lRXhjZHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXRUaW1lRXhjZHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWF0Y2ggPSAwOworICAgICAgICB9CisgICAgICAgIGlmKCFtYXRjaCkKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaWNtcDZzdGF0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAiJXMgaXMgYW4gdW5rbm93biB0YWdcbiIsIGxpbmUpKTsKKyAgICB9CisKKyAgICBmY2xvc2UoaW4pOworI2VuZGlmCisKKyAgICBtZW1jcHkoKGNoYXIgKikgaWNtcDZzdGF0LCAoY2hhciAqKSAmY2FjaGVkX2ljbXA2X21pYiwKKyAgICAgICAgICAgc2l6ZW9mKCppY21wNnN0YXQpKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50CitsaW51eF9yZWFkX2ljbXA2X21zZ19zdGF0KHN0cnVjdCBpY21wNl9taWIgKmljbXA2c3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA2X21zZ19taWIgKmljbXA2bXNnc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzdXBwb3J0KQoreworICAgICBpZiAobGludXhfcmVhZF9pY21wNl9wYXJzZShpY21wNnN0YXQsIGljbXA2bXNnc3RhdCwgc3VwcG9ydCkgPCAwKQorICAgICAgICAgcmV0dXJuIC0xOworICAgICBlbHNlCisgICAgICAgICByZXR1cm4gMDsKK30KKworaW50CitsaW51eF9yZWFkX2ljbXA2X3N0YXQoc3RydWN0IGljbXA2X21pYiAqaWNtcDZzdGF0KQoreworICAgaWYgKGxpbnV4X3JlYWRfaWNtcDZfcGFyc2UoaWNtcDZzdGF0LCBOVUxMLCBOVUxMKSA8IDApCisgICAgICAgcmV0dXJuIC0xOworICAgZWxzZQorICAgICAgIHJldHVybiAwOworfQorCitpbnQKIGxpbnV4X3JlYWRfdGNwX3N0YXQoc3RydWN0IHRjcF9taWIgKnRjcHN0YXQpCiB7CiAgICAgbWVtc2V0KChjaGFyICopIHRjcHN0YXQsICgwKSwgc2l6ZW9mKCp0Y3BzdGF0KSk7CkBAIC0yMTYsNiArNTU2LDczIEBACiAgICAgbWVtc2V0KChjaGFyICopIHVkcHN0YXQsICgwKSwgc2l6ZW9mKCp1ZHBzdGF0KSk7CiAgICAgaWYgKGxpbnV4X3JlYWRfbWliSUlfc3RhdHMoKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOworCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIHsKKyAgICAgICAgc3RydWN0IHVkcDZfbWliIHVkcDZzdGF0OworICAgICAgICBtZW1zZXQoJnVkcDZzdGF0LCAwLCBzaXplb2YodWRwNnN0YXQpKTsKKworICAgICAgICBpZiAobGludXhfcmVhZF91ZHA2X3N0YXQoJnVkcDZzdGF0KSA9PSAwKSB7CisgICAgICAgICAgICBjYWNoZWRfdWRwX21pYi51ZHBPdXREYXRhZ3JhbXMgKz0gdWRwNnN0YXQudWRwNk91dERhdGFncmFtczsKKyAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcE5vUG9ydHMgICAgICArPSB1ZHA2c3RhdC51ZHA2Tm9Qb3J0czsKKyAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcEluRGF0YWdyYW1zICArPSB1ZHA2c3RhdC51ZHA2SW5EYXRhZ3JhbXM7CisgICAgICAgICAgICBjYWNoZWRfdWRwX21pYi51ZHBJbkVycm9ycyAgICAgKz0gdWRwNnN0YXQudWRwNkluRXJyb3JzOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiAgICAgbWVtY3B5KChjaGFyICopIHVkcHN0YXQsIChjaGFyICopICZjYWNoZWRfdWRwX21pYiwgc2l6ZW9mKCp1ZHBzdGF0KSk7CiAgICAgcmV0dXJuIDA7CiB9CisKK2ludAorbGludXhfcmVhZF91ZHA2X3N0YXQoc3RydWN0IHVkcDZfbWliICp1ZHA2c3RhdCkKK3sKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgRklMRSAgICAgICAgICAgKmluOworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdOworICAgIHVuc2lnbmVkIGxvbmcgICBzdGF0czsKKyAgICBjaGFyICAgICAgICAgICAqZW5kcDsKKyNlbmRpZgorCisgICAgbWVtc2V0KHVkcDZzdGF0LCAwLCBzaXplb2YoKnVkcDZzdGF0KSk7CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eC91ZHA2c3RhdHMiLAorICAgICAgICAgICAgICAgICJSZWFkaW5nIC9wcm9jL25ldC9zbm1wNiBzdGF0c1xuIikpOworICAgIGlmIChOVUxMID09IChpbiA9IGZvcGVuKCIvcHJvYy9uZXQvc25tcDYiLCAiciIpKSkgeworICAgICAgICBERUJVR01TR1RMKCgibWliSUkva2VybmVsX2xpbnV4L3VkcDZzdGF0cyIsCisgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gb3BlbiAvcHJvYy9uZXQvc25tcDZcbiIpKTsKKyAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd2hpbGUgKE5VTEwgIT0gZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKKyAgICAgICAgaWYgKDAgIT0gc3RybmNtcChsaW5lLCBVRFA2X1NUQVRTX0xJTkUsIFVEUDZfU1RBVFNfUFJFRklYX0xFTikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoMSAhPSBzc2NhbmYobGluZSwgIiUqcyAlbHUiLCAmc3RhdHMpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZW5kcCA9IHN0cmNocihsaW5lLCAnICcpOworICAgICAgICAqZW5kcCA9ICdcMCc7CisgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvdWRwNnN0YXRzIiwgIkZpbmQgdGFnOiAlc1xuIiwgbGluZSkpOworCisgICAgICAgIGlmICgwID09IHN0cmNtcChsaW5lICsgNCwgIk91dERhdGFncmFtcyIpKSB7CisgICAgICAgICAgICBjYWNoZWRfdWRwNl9taWIudWRwNk91dERhdGFncmFtcyA9IHN0YXRzOworICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA0LCAiTm9Qb3J0cyIpKSB7CisgICAgICAgICAgICBjYWNoZWRfdWRwNl9taWIudWRwNk5vUG9ydHMgPSBzdGF0czsKKyAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNCwgIkluRGF0YWdyYW1zIikpIHsKKyAgICAgICAgICAgIGNhY2hlZF91ZHA2X21pYi51ZHA2SW5EYXRhZ3JhbXMgPSBzdGF0czsKKyAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNCwgIkluRXJyb3JzIikpIHsKKyAgICAgICAgICAgIGNhY2hlZF91ZHA2X21pYi51ZHA2SW5FcnJvcnMgPSBzdGF0czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvdWRwNnN0YXRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlcyBpcyBhbiB1bmtub3duIHRhZ1xuIiwgbGluZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZmNsb3NlKGluKTsKKyNlbmRpZgorCisgICAgbWVtY3B5KChjaGFyICopIHVkcDZzdGF0LCAoY2hhciAqKSAmY2FjaGVkX3VkcDZfbWliLCBzaXplb2YoKnVkcDZzdGF0KSk7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaCBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5oCmluZGV4IGZiN2RiOTYuLmM2ZGZjYTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5oCkBAIC0yOSw2ICsyOSwzMSBAQAogICAgIHVuc2lnbmVkIGxvbmcgICBpcFJvdXRpbmdEaXNjYXJkczsKIH07CiAKK3N0cnVjdCBpcDZfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluUmVjZWl2ZXM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJbkhkckVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluVG9vQmlnRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5Ob1JvdXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluQWRkckVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluVW5rbm93blByb3RvczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluVHJ1bmNhdGVkUGt0czsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluRGlzY2FyZHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJbkRlbGl2ZXJzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0Rm9yd0RhdGFncmFtczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNk91dFJlcXVlc3RzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0RGlzY2FyZHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZPdXROb1JvdXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtVGltZW91dDsKKyAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtUmVxZHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbU9LczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtRmFpbHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZGcmFnT0tzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2RnJhZ0ZhaWxzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2RnJhZ0NyZWF0ZXM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJbk1jYXN0UGt0czsKKyAgICB1bnNpZ25lZCBsb25nIGlwNk91dE1jYXN0UGt0czsKK307CisKIHN0cnVjdCBpY21wX21pYiB7CiAgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbk1zZ3M7CiAgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkVycm9yczsKQEAgLTU4LDYgKzgzLDUxIEBACiAgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRBZGRyTWFza1JlcHM7CiB9OwogCitzdHJ1Y3QgaWNtcDZfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Nc2dzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5EZXN0VW5yZWFjaHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluUGt0VG9vQmlnczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5UaW1lRXhjZHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluUGFybVByb2JsZW1zOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkVjaG9zOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkVjaG9SZXBsaWVzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkdyb3VwTWVtYlF1ZXJpZXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluR3JvdXBNZW1iUmVzcG9uc2VzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkdyb3VwTWVtYlJlZHVjdGlvbnM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluUm91dGVyU29saWNpdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluUm91dGVyQWR2ZXJ0aXNlbWVudHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluTmVpZ2hib3JTb2xpY2l0czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5OZWlnaGJvckFkdmVydGlzZW1lbnRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblJlZGlyZWN0czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0TXNnczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0RGVzdFVucmVhY2hzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRQa3RUb29CaWdzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRUaW1lRXhjZHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFBhcm1Qcm9ibGVtczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0RWNob1JlcGxpZXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFJvdXRlclNvbGljaXRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXROZWlnaGJvclNvbGljaXRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXROZWlnaGJvckFkdmVydGlzZW1lbnRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRSZWRpcmVjdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0R3JvdXBNZW1iUmVkdWN0aW9uczsKK307CisKK3N0cnVjdCBpY21wX21zZ19taWIgeworICAgIHVuc2lnbmVkIGxvbmcgSW5UeXBlOworICAgIHVuc2lnbmVkIGxvbmcgT3V0VHlwZTsKK307CisKKy8qIExldHMgdXNlIHdyYXBwZXIgc3RydWN0dXJlcyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworc3RydWN0IGljbXA0X21zZ19taWIgeworICAgIHN0cnVjdCBpY21wX21zZ19taWIgdmFsc1syNTZdOworfTsKKworc3RydWN0IGljbXA2X21zZ19taWIgeworICAgIHN0cnVjdCBpY21wX21zZ19taWIgdmFsc1syNTZdOworfTsKKwogc3RydWN0IHVkcF9taWIgewogICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBJbkRhdGFncmFtczsKICAgICB1bnNpZ25lZCBsb25nICAgdWRwTm9Qb3J0czsKQEAgLTY1LDYgKzEzNSwxMyBAQAogICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBPdXREYXRhZ3JhbXM7CiB9OwogCitzdHJ1Y3QgdWRwNl9taWIgeworICAgIHVuc2lnbmVkIGxvbmcgdWRwNkluRGF0YWdyYW1zOworICAgIHVuc2lnbmVkIGxvbmcgdWRwNk5vUG9ydHM7CisgICAgdW5zaWduZWQgbG9uZyB1ZHA2SW5FcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyB1ZHA2T3V0RGF0YWdyYW1zOworfTsKKwogc3RydWN0IHRjcF9taWIgewogICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSdG9BbGdvcml0aG07CiAgICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b01pbjsKQEAgLTg2LDggKzE2MywxNyBAQAogCiAKIGludCAgICAgICAgICAgICBsaW51eF9yZWFkX2lwX3N0YXQoc3RydWN0IGlwX21pYiAqKTsKK2ludCAgICAgICAgICAgICBsaW51eF9yZWFkX2lwNl9zdGF0KHN0cnVjdCBpcDZfbWliICopOwogaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfaWNtcF9zdGF0KHN0cnVjdCBpY21wX21pYiAqKTsKK2ludCAgICAgICAgICAgICBsaW51eF9yZWFkX2ljbXA2X3N0YXQoc3RydWN0IGljbXA2X21pYiAqKTsKIGludCAgICAgICAgICAgICBsaW51eF9yZWFkX3VkcF9zdGF0KHN0cnVjdCB1ZHBfbWliICopOworaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfdWRwNl9zdGF0KHN0cnVjdCB1ZHA2X21pYiAqKTsKIGludCAgICAgICAgICAgICBsaW51eF9yZWFkX3RjcF9zdGF0KHN0cnVjdCB0Y3BfbWliICopOworaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfaWNtcF9tc2dfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA0X21zZ19taWIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpmbGFnKTsKK2ludCAgICAgICAgICAgICBsaW51eF9yZWFkX2ljbXA2X21zZ19zdGF0KHN0cnVjdCBpY21wNl9taWIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpY21wNl9tc2dfbWliICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnN1cHBvcnQpOwogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9LRVJORUxfTElOVVhfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaAppbmRleCA0MGE4YzkzLi5jNzQ5OWQzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEhBVkVfU1lTX1RDUElQU1RBVFNfSAogI2luY2x1ZGUgPHN5cy90Y3BpcHN0YXRzLmg+CiAjZW5kaWYKLSNpZiBkZWZpbmVkKElGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkKKyNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQogI2RlZmluZSBfS0VSTkVMIDEKICNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYwppbmRleCA1OTIxZDY4Li5jMWVkZDA3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYwpAQCAtMTAxLDEzICsxMDEsOCBAQAogIyBlbmRpZgogI2VuZGlmCiAKLSNpZiBIQVZFX1NUREFSR19ICi0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHZhcmFyZ3MuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KIAogIC8qKi8KIC8qKiAibWFjcm9zIGFuZCB2YXJpYWJsZXMgZm9yIHJlZ2lzdGVyaW5nIHRoZSBPSUQgdHJlZSIgKi8KQEAgLTE1MiwzMSArMTQ3LDM3IEBACiAgKiBzdHJ1Y3R1cmUgdGhhdCB0ZWxscyB0aGUgYWdlbnQsIHdoaWNoIGZ1bmN0aW9uIHJldHVybnMgd2hhdCB2YWx1ZXMgCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgdmFyaWFibGUzIG10YV92YXJpYWJsZXNbXSA9IHsKLSAgICB7TVRBUkVDRUlWRURNRVNTQUdFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCAxfX0sCi0gICAge01UQVNUT1JFRE1FU1NBR0VTLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCAyfX0sCi0gICAge01UQVRSQU5TTUlUVEVETUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX210YUVudHJ5LCAzLAotICAgICB7MSwgMSwgM319LAotICAgIHtNVEFSRUNFSVZFRFZPTFVNRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCA0fX0sCi0gICAge01UQVNUT1JFRFZPTFVNRSwgQVNOX0dBVUdFLCBST05MWSwgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgNX19LAotICAgIHtNVEFUUkFOU01JVFRFRFZPTFVNRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCA2fX0sCisgICAge01UQVJFQ0VJVkVETUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgMX19LAorICAgIHtNVEFTVE9SRURNRVNTQUdFUywgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgMn19LAorICAgIHtNVEFUUkFOU01JVFRFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFFbnRyeSwgMywgezEsIDEsIDN9fSwKKyAgICB7TVRBUkVDRUlWRURWT0xVTUUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgNH19LAorICAgIHtNVEFTVE9SRURWT0xVTUUsIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFFbnRyeSwgMywgezEsIDEsIDV9fSwKKyAgICB7TVRBVFJBTlNNSVRURURWT0xVTUUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgNn19LAogCi0gICAge01UQUdST1VQUkVDRUlWRURNRVNTQUdFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbXRhR3JvdXBFbnRyeSwgMywKLSAgICAgezIsIDEsIDJ9fSwKLSAgICB7TVRBR1JPVVBSRUpFQ1RFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9tdGFHcm91cEVudHJ5LCAzLAotICAgICB7MiwgMSwgM319LAotICAgIHtNVEFHUk9VUFNUT1JFRE1FU1NBR0VTLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfbXRhR3JvdXBFbnRyeSwgMywKLSAgICAgezIsIDEsIDR9fSwKLSAgICB7TVRBR1JPVVBUUkFOU01JVFRFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9tdGFHcm91cEVudHJ5LCAzLAotICAgICB7MiwgMSwgNX19LAotICAgIHtNVEFHUk9VUFJFQ0VJVkVEVk9MVU1FLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9tdGFHcm91cEVudHJ5LCAzLAotICAgICB7MiwgMSwgNn19LAotICAgIHtNVEFHUk9VUFNUT1JFRFZPTFVNRSwgQVNOX0dBVUdFLCBST05MWSwgdmFyX210YUdyb3VwRW50cnksIDMsCi0gICAgIHsyLCAxLCA3fX0sCi0gICAge01UQUdST1VQVFJBTlNNSVRURURWT0xVTUUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX210YUdyb3VwRW50cnksIDMsCi0gICAgIHsyLCAxLCA4fX0sCi0gICAge01UQUdST1VQTkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgMjV9fSwKLSAgICB7TVRBR1JPVVBISUVSQVJDSFksIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX210YUdyb3VwRW50cnksIDMsCi0gICAgIHsyLCAxLCAzMX19CisgICAge01UQUdST1VQUkVDRUlWRURNRVNTQUdFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRhR3JvdXBFbnRyeSwgMywgezIsIDEsIDJ9fSwKKyAgICB7TVRBR1JPVVBSRUpFQ1RFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgM319LAorICAgIHtNVEFHUk9VUFNUT1JFRE1FU1NBR0VTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRhR3JvdXBFbnRyeSwgMywgezIsIDEsIDR9fSwKKyAgICB7TVRBR1JPVVBUUkFOU01JVFRFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgNX19LAorICAgIHtNVEFHUk9VUFJFQ0VJVkVEVk9MVU1FLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgNn19LAorICAgIHtNVEFHUk9VUFNUT1JFRFZPTFVNRSwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUdyb3VwRW50cnksIDMsIHsyLCAxLCA3fX0sCisgICAge01UQUdST1VQVFJBTlNNSVRURURWT0xVTUUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUdyb3VwRW50cnksIDMsIHsyLCAxLCA4fX0sCisgICAge01UQUdST1VQTkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgMjV9fSwKKyAgICB7TVRBR1JPVVBISUVSQVJDSFksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUdyb3VwRW50cnksIDMsIHsyLCAxLCAzMX19CiB9OwogIC8qKi8KIC8qKiAib3RoZXIgbWFjcm9zIGFuZCBzdHJ1Y3R1cmVzIiAqLwpAQCAtMzQyLDM3ICszNDMsMTUgQEAKICAqICAgIC4uLjogICAgICAgICBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgdG8gaW5zZXJ0IGludG8gdGhlIGVycm9yIG1lc3NhZ2Ugc3RyaW5nCiAgKgogICovCi0jaWYgSEFWRV9TVERBUkdfSAotICAgIHN0YXRpYyB2b2lkCitzdGF0aWMgdm9pZAogcHJpbnRfZXJyb3IoaW50IHByaW9yaXR5LCBCT09MIGNvbmZpZywgQk9PTCBjb25maWdfb25seSwKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSNlbHNlCi0gICAgc3RhdGljIHZvaWQKLXByaW50X2Vycm9yKHZhX2FsaXN0KQotICAgICB2YV9kY2wKLSNlbmRpZgogewogICAgIHZhX2xpc3QgICAgICAgICBhcDsKICAgICBjaGFyICAgICAgICAgICAgYnVmZmVyWzIgKiBGSUxFTkFNRUxFTiArIDIwMF07ICAgICAgLyogSSBrbm93LCB0aGF0J3Mgbm90IHBlcmZlY3RseSBzYWZlLCBidXQgc2luY2UgSSBkb24ndCB1c2UgbW9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGFuIHR3byBmaWxlbmFtZXMgaW4gb25lIGVycm9yIG1lc3NhZ2UsIHRoYXQgc2hvdWxkIGJlIGVub3VnaCAqLwogCi0jaWYgSEFWRV9TVERBUkdfSAogICAgIHZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotI2Vsc2UKLSAgICBpbnQgICAgICAgICAgICAgcHJpb3JpdHk7Ci0gICAgQk9PTCAgICAgICAgICAgIGNvbmZpZzsKLSAgICBCT09MICAgICAgICAgICAgY29uZmlnX29ubHk7Ci0gICAgY29uc3QgY2hhciAgICAgKmZ1bmN0aW9uOwotICAgIGNvbnN0IGNoYXIgICAgICpmb3JtYXQ7Ci0KLSAgICB2YV9zdGFydChhcCk7Ci0gICAgcHJpb3JpdHkgPSB2YV9hcmcoYXAsIGludCk7Ci0gICAgY29uZmlnID0gdmFfYXJnKGFwLCBCT09MKTsKLSAgICBjb25maWdfb25seSA9IHZhX2FyZyhhcCwgQk9PTCk7Ci0gICAgZnVuY3Rpb24gPSB2YV9hcmcoYXAsIGNoYXIgKik7Ci0gICAgZm9ybWF0ID0gdmFfYXJnKGFwLCBjaGFyICopOwotI2VuZGlmCi0KICAgICB2c25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZm9ybWF0LCBhcCk7CiAKICAgICBpZiAoY29uZmlnKSB7CkBAIC0xMDU0LDkgKzEwMzMsNyBAQAogICAgICAgICBvcGVuX3NlbmRtYWlsc3QoVFJVRSk7CiAKICAgICAgICAgaWYgKHNlbmRtYWlsc3RfZmggPT0gLTEpIHsKLSAgICAgICAgICAgIGNoYXIgICAgICAgICAgICBzdHJbRklMRU5BTUVMRU4gKyA1MF07Ci0gICAgICAgICAgICBzcHJpbnRmKHN0ciwgImNvdWxkbid0IG9wZW4gZmlsZSBcIiVzXCIiLCBzZW5kbWFpbHN0X2ZuKTsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3Ioc3RyKTsKKwkgICAgbmV0c25tcF9jb25maWdfZXJyb3IoImNvdWxkbid0IG9wZW4gZmlsZSBcIiVzXCIiLCBzZW5kbWFpbHN0X2ZuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgKaW5kZXggMzQ4MzBmMi4uYmY3ZTgwNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfaGVhZGVycy5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaApAQCAtMjcsOCArMjcsNiBAQAogI2luY2x1ZGUgImlwLmgiCiAjaW5jbHVkZSAia2VybmVsLmgiCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgotI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKIAogI2Vsc2UgLyogIU5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwgKi8KIApAQCAtOTQsMjggKzkyLDI4IEBACiAjZW5kaWYKICN1bmRlZglLRVJORUwKICNpZmRlZiBSVEVOVFJZXzRfNAotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVU5JVAorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1VOSVQKICNkZWZpbmUgcnRfdW5pdCBydF9yZWZjbnQgICAgICAgLyogUmV1c2UgdGhpcyBmaWVsZCBmb3IgZGV2aWNlICMgKi8KICNlbmRpZgotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfRFNUCisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfRFNUCiAjZGVmaW5lIHJ0X2RzdCBydF9ub2Rlcy0+cm5fa2V5CiAjZW5kaWYKICNlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlRFTlRSWV80XzMgKi8KLSNpZm5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX0RTVAorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0RTVAogI2RlZmluZSBydF9kc3QgcnRfbm9kZXMtPnJuX2tleQogI2VuZGlmCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9IQVNICisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfSEFTSAogI2RlZmluZSBydF9oYXNoIHJ0X3BhZDEKICNlbmRpZgotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfUkVGQ05UCisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfUkVGQ05UCiAjaWZuZGVmIGhwdXgxMAogI2RlZmluZSBydF9yZWZjbnQgcnRfcGFkMgogI2VuZGlmCiAjZW5kaWYKLSNpZm5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1VTRQorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1VTRQogI2RlZmluZSBydF91c2UgcnRfcGFkMwogI2VuZGlmCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9VTklUCisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfVU5JVAogI2RlZmluZSBydF91bml0IHJ0X3JlZmNudCAgICAgICAvKiBSZXVzZSB0aGlzIGZpZWxkIGZvciBkZXZpY2UgIyAqLwogI2VuZGlmCiAjZW5kaWYKQEAgLTE2MSw2ICsxNTksMTcgQEAKIAogI2lmZGVmIHNvbGFyaXMyCiAjaW5jbHVkZSAia2VybmVsX3N1bm9zNS5oIgorLyogU29sYXJpcyAyLjYvNyBuZWVkIHN5cy9zdHJlYW0uaCAobWJsa190KSB0byBpbmNsdWRlIGluZXQvaXAuaCAqLworI2lmZGVmIEhBVkVfU1lTX1NUUkVBTV9ICisjaW5jbHVkZSA8c3lzL3N0cmVhbS5oPgorI2VuZGlmCisvKiBTb2xhcmlzIDIuNiBuZWVkcyBpbmV0L2NvbW1vbi5oICh1MTYpIHRvIGluY2x1ZGUgaW5ldC9pcC5oICovCisjaWZkZWYgSEFWRV9JTkVUX0NPTU1PTl9ICisjaW5jbHVkZSA8aW5ldC9jb21tb24uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfSU5FVF9JUF9ICisjaW5jbHVkZSA8aW5ldC9pcC5oPgorI2VuZGlmIC8qIEhBVkVfSU5FVF9JUF9IICovCiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfU1lTX1NZU0NUTF9ICmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuYwppbmRleCBmNmE0ZjNlLi4zZTI3OTllIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmMKQEAgLTc2LDEwICs3NiwxMCBAQAogCiAjaWYgIWRlZmluZWQgKFdJTjMyKSAmJiAhZGVmaW5lZCAoY3lnd2luKQogCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9EU1QKICNkZWZpbmUgcnRfZHN0IHJ0X25vZGVzLT5ybl9rZXkKICNlbmRpZgotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfSEFTSAorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0hBU0gKICNkZWZpbmUgcnRfaGFzaCBydF9wYWQxCiAjZW5kaWYKIApAQCAtMjY5LDcgKzI2OSw3IEBACiB9CiAKIAotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfRFNUCisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfRFNUCiAjdW5kZWYgcnRfZHN0CiAjZW5kaWYKIApAQCAtMzEzLDcgKzMxMyw3IEBACiAgICAgICAgICAgICByZXR1cm4gKCZydGNhY2hlW2ldKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RydWN0IHJ0ZW50ICAgKgpAQCAtMzI5LDcgKzMyOSw3IEBACiAgICAgICAgICAgICByZXR1cm4gKCZydGNhY2hlW2ldKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKIAogfQogCkBAIC0zNTEsNyArMzUxLDcgQEAKIHN0cnVjdCBydGVudCAgICoKIGNhY2hlS2VybmVsUlRFKHVfbG9uZyBkc3QpCiB7Ci0gICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgIC8qIGZvciBub3cgKi8KKyAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogZm9yIG5vdyAqLwogICAgIC8qCiAgICAgICogLi4uLi4uIAogICAgICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMKaW5kZXggYjE0M2JmNy4uMGEyM2M5ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jCkBAIC0xLDk3ICsxLDE1IEBACi0vKgotICogIFNOTVB2MSBNSUIgZ3JvdXAgaW1wbGVtZW50YXRpb24gLSBzbm1wLmMKLSAqCi0gKi8KLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfU1RSSU5HX0gKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLQotI2lmIEhBVkVfV0lOU09DS19ICi0jaW5jbHVkZSA8d2luc29jay5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgInNubXBfbWliLmgiCi0jaW5jbHVkZSAic3lzT1JUYWJsZS5oIgorI2luY2x1ZGUgInVwZGF0ZXMuaCIKIAorc3RhdGljIGNvbnN0IG9pZCBzbm1wX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxMSB9OwogCi0gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKLQkgKgotCSAqICBLZXJuZWwgJiBpbnRlcmZhY2UgaW5mb3JtYXRpb24sCi0JICogICBhbmQgaW50ZXJuYWwgZm9yd2FyZCBkZWNsYXJhdGlvbnMKLQkgKgotCSAqKioqKioqKioqKioqKioqKioqKiovCi0KLWV4dGVybiBsb25nICAgICBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzOwotZXh0ZXJuIGludCAgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQ7Ci1pbnQgICAgICAgICAgICAgb2xkX3NubXBfZW5hYmxlYXV0aGVudHJhcHM7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgSW5pdGlhbGlzYXRpb24gJiBjb21tb24gaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCi0gKgotICoqKioqKioqKioqKioqKioqKioqKi8KLQotLyoKLSAqIGRlZmluZSB0aGUgc3RydWN0dXJlIHdlJ3JlIGdvaW5nIHRvIGFzayB0aGUgYWdlbnQgdG8gcmVnaXN0ZXIgb3VyCi0gKiBpbmZvcm1hdGlvbiBhdCAKLSAqLwotc3RydWN0IHZhcmlhYmxlMSBzbm1wX3ZhcmlhYmxlc1tdID0gewotICAgIHtTTk1QSU5QS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MX19LAotICAgIHtTTk1QT1VUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezJ9fSwKLSAgICB7U05NUElOQkFEVkVSU0lPTlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHszfX0sCi0jaWYgIWRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NOTVBWMSkgfHwgIWRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMpCi0gICAge1NOTVBJTkJBRENPTU1VTklUWU5BTUVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7NH19LAotICAgIHtTTk1QSU5CQURDT01NVU5JVFlVU0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7NX19LAotI2VuZGlmIC8qIHN1cHBvcnQgZm9yIGNvbW11bml0eSBiYXNlZCBTTk1QICovCi0gICAge1NOTVBJTkFTTlBBUlNFRVJST1JTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7Nn19LAotICAgIHtTTk1QSU5UT09CSUdTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7OH19LAotICAgIHtTTk1QSU5OT1NVQ0hOQU1FUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezl9fSwKLSAgICB7U05NUElOQkFEVkFMVUVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTB9fSwKLSAgICB7U05NUElOUkVBRE9OTFlTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTF9fSwKLSAgICB7U05NUElOR0VORVJSUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezEyfX0sCi0gICAge1NOTVBJTlRPVEFMUkVRVkFSUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezEzfX0sCi0gICAge1NOTVBJTlRPVEFMU0VUVkFSUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezE0fX0sCi0gICAge1NOTVBJTkdFVFJFUVVFU1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTV9fSwKLSAgICB7U05NUElOR0VUTkVYVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsxNn19LAotICAgIHtTTk1QSU5TRVRSRVFVRVNUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezE3fX0sCi0gICAge1NOTVBJTkdFVFJFU1BPTlNFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezE4fX0sCi0gICAge1NOTVBJTlRSQVBTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTl9fSwKLSAgICB7U05NUE9VVFRPT0JJR1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyMH19LAotICAgIHtTTk1QT1VUTk9TVUNITkFNRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyMX19LAotICAgIHtTTk1QT1VUQkFEVkFMVUVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MjJ9fSwKLSAgICB7U05NUE9VVEdFTkVSUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyNH19LAotICAgIHtTTk1QT1VUR0VUUkVRVUVTVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyNX19LAotICAgIHtTTk1QT1VUR0VUTkVYVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyNn19LAotICAgIHtTTk1QT1VUU0VUUkVRVUVTVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyN319LAotICAgIHtTTk1QT1VUR0VUUkVTUE9OU0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7Mjh9fSwKLSAgICB7U05NUE9VVFRSQVBTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7Mjl9fSwKLSAgICB7U05NUEVOQUJMRUFVVEhFTlRSQVBTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfc25tcCwgMSwgezMwfX0sCi0gICAge1NOTVBTSUxFTlREUk9QUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezMxfX0sCi0gICAge1NOTVBQUk9YWURST1BTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MzJ9fQotfTsKLQotLyoKLSAqIERlZmluZSB0aGUgT0lEIHBvaW50ZXIgdG8gdGhlIHRvcCBvZiB0aGUgbWliIHRyZWUgdGhhdCB3ZSdyZQotICogcmVnaXN0ZXJpbmcgdW5kZXJuZWF0aCAKLSAqLwotb2lkICAgICAgICAgICAgIHNubXBfdmFyaWFibGVzX29pZFtdID0geyBTTk1QX09JRF9NSUIyLCAxMSB9OwotI2lmZGVmIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCi1leHRlcm4gb2lkICAgICAgc3lzdGVtX21vZHVsZV9vaWRbXTsKLWV4dGVybiBpbnQgICAgICBzeXN0ZW1fbW9kdWxlX29pZF9sZW47Ci1leHRlcm4gaW50ICAgICAgc3lzdGVtX21vZHVsZV9jb3VudDsKLSNlbmRpZgorZXh0ZXJuIGxvbmcgc25tcF9lbmFibGVhdXRoZW50cmFwczsKK2V4dGVybiBpbnQgc25tcF9lbmFibGVhdXRoZW50cmFwc3NldDsKIAogc3RhdGljIGludAogc25tcF9lbmFibGVhdXRoZW50cmFwc19zdG9yZShpbnQgYSwgaW50IGIsIHZvaWQgKmMsIHZvaWQgKmQpCkBAIC0xMDYsMTQgKzI0LDEwMSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitoYW5kbGVfdHJ1dGh2YWx1ZShuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxKSB7CisgICAgICAgIGludCByZXMgPSBuZXRzbm1wX2NoZWNrX3ZiX3RydXRodmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2Yik7CisgICAgICAgIGlmIChyZXMgIT0gU05NUF9FUlJfTk9FUlJPUikKKyAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IocmVxdWVzdHMsIHJlcyk7CisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCitzdGF0aWMgbmV0c25tcF9taWJfaGFuZGxlcioKK25ldHNubXBfZ2V0X3RydXRodmFsdWUodm9pZCkKK3sKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyKiBobmQgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyKCJ0cnV0aHZhbHVlIiwgaGFuZGxlX3RydXRodmFsdWUpOworICAgIGlmIChobmQpCisgICAgICAgIGhuZC0+ZmxhZ3MgfD0gTUlCX0hBTkRMRVJfQVVUT19ORVhUOworICAgIHJldHVybiBobmQ7Cit9CisKK3N0YXRpYyBpbnQKK2hhbmRsZV9zbm1wKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisJICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisJICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorCSAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CisgICAgY2FzZSBNT0RFX0dFVDoKKwl7CisJICAgIG9pZCBpZHggPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lW09JRF9MRU5HVEgoc25tcF9vaWQpXTsKKwkgICAgc3dpdGNoKGlkeCkgeworCSAgICBjYXNlIDc6CisJICAgIGNhc2UgMjM6CisgICAgICAgICAgICBjYXNlIDMwOgorCQluZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAorCQkJCQkgIFNOTVBfTk9TVUNIT0JKRUNUKTsKKwkJYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJCXsKKwkJICAgIHVfaW50IHZhbHVlID0KKwkJCXNubXBfZ2V0X3N0YXRpc3RpYyhpZHggLSAxICsgU1RBVF9TTk1QSU5QS1RTKTsKKwkJICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKwkJCQkJICAgICAodV9jaGFyICopJnZhbHVlLCBzaXplb2YodmFsdWUpKTsKKwkJfQorCQlicmVhazsKKwkgICAgfQorCX0KKwlicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJ1bmtub3duIG1vZGUgKCVkKSBpbiBoYW5kbGVfc25tcFxuIiwgcmVxaW5mby0+bW9kZSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKKyNpZmRlZiBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorZXh0ZXJuIG9pZCAgICAgIHN5c3RlbV9tb2R1bGVfb2lkW107CitleHRlcm4gaW50ICAgICAgc3lzdGVtX21vZHVsZV9vaWRfbGVuOworZXh0ZXJuIGludCAgICAgIHN5c3RlbV9tb2R1bGVfY291bnQ7CisjZW5kaWYKKworLyoqIEluaXRpYWxpemVzIHRoZSBzbm1wIG1vZHVsZSAqLwogdm9pZAogaW5pdF9zbm1wX21pYih2b2lkKQogewotICAgIC8qCi0gICAgICogcmVnaXN0ZXIgb3Vyc2VsdmVzIHdpdGggdGhlIGFnZW50IHRvIGhhbmRsZSBvdXIgbWliIHRyZWUgCi0gICAgICovCi0gICAgUkVHSVNURVJfTUlCKCJtaWJJSS9zbm1wIiwgc25tcF92YXJpYWJsZXMsIHZhcmlhYmxlMSwKLSAgICAgICAgICAgICAgICAgc25tcF92YXJpYWJsZXNfb2lkKTsKKyAgICBERUJVR01TR1RMKCgic25tcCIsICJJbml0aWFsaXppbmdcbiIpKTsKKworICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKAorICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisJIm1pYklJL3NubXAiLCBoYW5kbGVfc25tcCwgc25tcF9vaWQsIE9JRF9MRU5HVEgoc25tcF9vaWQpLAorCUhBTkRMRVJfQ0FOX1JPTkxZKSwgMSwgMzIpOworICAgIHsKKyAgICAgICAgY29uc3Qgb2lkIHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMTEsIDMwLCAwIH07CisJc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIGVuYWJsZWF1dGhlbl9pbmZvOworICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPQorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zbm1wRW5hYmxlQXV0aGVuVHJhcHMiLAorICAgICAgICAgICAgICAgIHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWQsCisgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkKSwKKyAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsICZzbm1wX2VuYWJsZWF1dGhlbnRyYXBzc2V0KTsKKyAgICAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIG5ldHNubXBfZ2V0X3RydXRodmFsdWUoKSk7CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgICAgIHJlZywKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCisJCSZlbmFibGVhdXRoZW5faW5mbywKKyAgICAgICAgICAgICAgICAmc25tcF9lbmFibGVhdXRoZW50cmFwcywgc2l6ZW9mKHNubXBfZW5hYmxlYXV0aGVudHJhcHMpLAorICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKKyAgICB9CiAKICNpZmRlZiBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQogICAgIGlmICgrK3N5c3RlbV9tb2R1bGVfY291bnQgPT0gMykKQEAgLTEyMywxMzEgKzEyOCwzIEBACiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksIFNOTVBfQ0FMTEJBQ0tfU1RPUkVfREFUQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHNfc3RvcmUsIE5VTEwpOwogfQotCi0vKgotICogaGVhZGVyX3NubXAoLi4uCi0gKiBBcmd1bWVudHM6Ci0gKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQotICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCi0gKiBsZW5ndGggIElOL09VVCAgLSBsZW5ndGggb2YgSU4vT1VUIG9pZCdzIAotICogZXhhY3QgICBJTiAgICAgIC0gVFJVRSBpZiBhbiBleGFjdCBtYXRjaCB3YXMgcmVxdWVzdGVkCi0gKiB2YXJfbGVuIE9VVCAgICAgLSBsZW5ndGggb2YgdmFyaWFibGUgb3IgMCBpZiBmdW5jdGlvbiByZXR1cm5lZAotICogd3JpdGVfbWV0aG9kCi0gKiAKLSAqLwotCi0gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKLQkgKgotCSAqICBTeXN0ZW0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCi0JICoJKGFjdHVhbGx5IGNvbW1vbiEpCi0JICoKLQkgKioqKioqKioqKioqKioqKioqKioqLwotCi0KLXVfY2hhciAgICAgICAgICoKLXZhcl9zbm1wKHN0cnVjdCB2YXJpYWJsZSAqdnAsCi0gICAgICAgICBvaWQgKiBuYW1lLAotICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKiB2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCi17Ci0gICAgc3RhdGljIGxvbmcgICAgIGxvbmdfcmV0OwotCi0gICAgKndyaXRlX21ldGhvZCA9IDA7ICAgICAgICAgIC8qIGFzc3VtZSBpdCBpc250IHdyaXRhYmxlIGZvciB0aGUgdGltZSBiZWluZyAqLwotICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsgICAgICAgIC8qIGFzc3VtZSBhbiBpbnRlZ2VyIGFuZCBjaGFuZ2UgbGF0ZXIgaWYgbm90ICovCi0KLSAgICBpZiAoaGVhZGVyX2dlbmVyaWModnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCkKLSAgICAgICAgPT0gTUFUQ0hfRkFJTEVEKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qCi0gICAgICogdGhpcyBpcyB3aGVyZSB3ZSBkbyB0aGUgdmFsdWUgYXNzaWdubWVudHMgZm9yIHRoZSBtaWIgcmVzdWx0cy4gCi0gICAgICovCi0gICAgaWYgKHZwLT5tYWdpYyA9PSBTTk1QRU5BQkxFQVVUSEVOVFJBUFMpIHsKLSAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3NubXA7Ci0gICAgICAgIGxvbmdfcmV0dXJuID0gc25tcF9lbmFibGVhdXRoZW50cmFwczsKLSAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICB9IGVsc2UgaWYgKCh2cC0+bWFnaWMgPj0gMSkKLSAgICAgICAgICAgICAgICYmICh2cC0+bWFnaWMgPD0KLSAgICAgICAgICAgICAgICAgICAoU1RBVF9TTk1QX1NUQVRTX0VORCAtIFNUQVRfU05NUF9TVEFUU19TVEFSVCArIDEpKSkgewotICAgICAgICBsb25nX3JldCA9Ci0gICAgICAgICAgICBzbm1wX2dldF9zdGF0aXN0aWModnAtPm1hZ2ljICsgU1RBVF9TTk1QX1NUQVRTX1NUQVJUIC0gMSk7Ci0gICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSAmbG9uZ19yZXQ7Ci0gICAgfQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKgotICogb25seSBmb3Igc25tcEVuYWJsZUF1dGhlblRyYXBzOgotICovCi0KLWludAotd3JpdGVfc25tcChpbnQgYWN0aW9uLAotICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLAotICAgICAgICAgICB1X2NoYXIgdmFyX3ZhbF90eXBlLAotICAgICAgICAgICBzaXplX3QgdmFyX3ZhbF9sZW4sIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCi17Ci0gICAgbG9uZyAgICAgICAgICAgIGludHZhbCA9IDA7Ci0KLSAgICBzd2l0Y2ggKGFjdGlvbikgewotICAgIGNhc2UgUkVTRVJWRTE6ICAgICAgICAgICAgIC8qIENoZWNrIHZhbHVlcyBmb3IgYWNjZXB0YWJpbGl0eSAqLwotICAgICAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9JTlRFR0VSKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgibWliSUkvc25tcF9taWIiLCAiJXggbm90IGludGVnZXIgdHlwZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXJfdmFsX3R5cGUpKTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnR2YWwgPSAqKChsb25nICopIHZhcl92YWwpOwotICAgICAgICBpZiAoaW50dmFsICE9IDEgJiYgaW50dmFsICE9IDIpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9zbm1wX21pYiIsICJub3QgdmFsaWQgJXhcbiIsIGludHZhbCkpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQgPCAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhlIG9iamVjdCBpcyBzZXQgaW4gYSByZWFkLW9ubHkgY29uZmlndXJhdGlvbiBmaWxlLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgUkVTRVJWRTI6ICAgICAgICAgICAgIC8qIEFsbG9jYXRlIG1lbW9yeSBhbmQgc2ltaWxhciByZXNvdXJjZXMgKi8KLQotICAgICAgICAvKgotICAgICAgICAgKiBVc2luZyBzdGF0aWMgdmFyaWFibGVzLCBzbyBub3RoaW5nIG5lZWRzIHRvIGJlIGRvbmUgCi0gICAgICAgICAqLwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUNUSU9OOiAgICAgICAgICAgICAgIC8qIFBlcmZvcm0gdGhlIFNFVCBhY3Rpb24gKGlmIHJldmVyc2libGUpICovCi0KLSAgICAgICAgLyoKLSAgICAgICAgICogU2F2ZSB0aGUgb2xkIHZhbHVlLCBpbiBjYXNlIG9mIFVORE8gCi0gICAgICAgICAqLwotICAgICAgICBpbnR2YWwgPSAqKChsb25nICopIHZhcl92YWwpOwotICAgICAgICBvbGRfc25tcF9lbmFibGVhdXRoZW50cmFwcyA9IHNubXBfZW5hYmxlYXV0aGVudHJhcHM7Ci0gICAgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgPSBpbnR2YWw7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBVTkRPOiAgICAgICAgICAgICAgICAgLyogUmV2ZXJzZSB0aGUgU0VUIGFjdGlvbiBhbmQgZnJlZSByZXNvdXJjZXMgKi8KLQotICAgICAgICBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzID0gb2xkX3NubXBfZW5hYmxlYXV0aGVudHJhcHM7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDT01NSVQ6Ci0gICAgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQgPSAxOwotICAgICAgICBzbm1wX3NhdmVfcGVyc2lzdGVudChuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9BUFBUWVBFKSk7Ci0gICAgICAgICh2b2lkKSBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9DQUxMQkFDS19TVE9SRV9EQVRBLCBOVUxMKTsKLSAgICAgICAgc25tcF9jbGVhbl9wZXJzaXN0ZW50KG5ldHNubXBfZHNfZ2V0X3N0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfQVBQVFlQRSkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRlJFRTogICAgICAgICAgICAgICAgIC8qIEZyZWUgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIEludGVybmFsIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucwotICoKLSAqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuaAppbmRleCA2NDFmMTFlLi4zOWUwYTNjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmgKQEAgLTEsODMgKzEsOSBAQAotLyoKLSAqICBTTk1QIE1JQiBncm91cCBpbnRlcmZhY2UgLSBzbm1wLmgKLSAqCi0gKi8KICNpZm5kZWYgX01JQkdST1VQX1NOTVBfSAogI2RlZmluZSBfTUlCR1JPVVBfU05NUF9ICiAKLXN0cnVjdCB2YXJpYWJsZTsKLQotZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX3NubXA7Ci1leHRlcm4gV3JpdGVNZXRob2Qgd3JpdGVfc25tcDsKK2NvbmZpZ19yZXF1aXJlKG1pYklJL3VwZGF0ZXMpCitjb25maWdfZXhjbHVkZShtaWJJSS9zbm1wX21pYl81XzUpCiAKIHZvaWQgICAgICAgICAgICBpbml0X3NubXBfbWliKHZvaWQpOwogCi1leHRlcm4gaW50ICAgICAgc25tcF9pbnBrdHM7ICAgIC8qICAxIC0gY3VycmVudCAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfb3V0cGt0czsgICAvKiAgMiAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbmJhZHZlcnNpb25zOyAgICAgLyogIDMgLSBjdXJyZW50ICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbmJhZGNvbW11bml0eW5hbWVzOyAgICAgICAvKiAgNCAtIGN1cnJlbnQgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2luYmFkY29tbXVuaXR5dXNlczsgICAgICAgIC8qICA1IC0gY3VycmVudCAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW5hc25wYXJzZWVycm9yczsgIC8qICA2IC0gY3VycmVudCAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW50b29iaWdzOyAvKiAgOCAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbm5vc3VjaG5hbWVzOyAgICAgLyogIDkgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW5iYWR2YWx1ZXM7ICAgICAgIC8qIDEwIC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2lucmVhZG9ubHlzOyAgICAgICAvKiAxMSAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbmdlbmVycnM7IC8qIDEyIC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2ludG90YWxyZXF2YXJzOyAgICAvKiAxMyAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbnRvdGFsc2V0dmFyczsgICAgLyogMTQgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW5nZXRyZXF1ZXN0czsgICAgIC8qIDE1IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2luZ2V0bmV4dHM7ICAgICAgICAvKiAxNiAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbnNldHJlcXVlc3RzOyAgICAgLyogMTcgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW5nZXRyZXNwb25zZXM7ICAgIC8qIDE4IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2ludHJhcHM7ICAgLyogMTkgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfb3V0dG9vYmlnczsgICAgICAgIC8qIDIwIC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX291dG5vc3VjaG5hbWVzOyAgICAvKiAyMSAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9vdXRiYWR2YWx1ZXM7ICAgICAgLyogMjIgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfb3V0Z2VuZXJyczsgICAgICAgIC8qIDI0IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX291dGdldHJlcXVlc3RzOyAgICAvKiAyNSAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9vdXRnZXRuZXh0czsgICAgICAgLyogMjYgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfb3V0c2V0cmVxdWVzdHM7ICAgIC8qIDI3IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX291dGdldHJlc3BvbnNlczsgICAvKiAyOCAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9vdXR0cmFwczsgIC8qIDI5IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBsb25nICAgICBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzOyAvKiAzMCAtIGN1cnJlbnQgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX3NpbGVudGRyb3BzOyAgICAgICAvKiAzMSAtIGN1cnJlbnQgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX3Byb3h5ZHJvcHM7ICAgICAgICAvKiAzMiAtIGN1cnJlbnQgKi8KLQotZXh0ZXJuIGNoYXIgICAgKnNubXBfdHJhcHNpbms7Ci1leHRlcm4gY2hhciAgICAqc25tcF90cmFwY29tbXVuaXR5OwotCi0KLSNkZWZpbmUgU05NUElOUEtUUwkJMQotI2RlZmluZSBTTk1QT1VUUEtUUwkJMgotI2RlZmluZSBTTk1QSU5CQURWRVJTSU9OUwkzCi0jZGVmaW5lIFNOTVBJTkJBRENPTU1VTklUWU5BTUVTCTQKLSNkZWZpbmUgU05NUElOQkFEQ09NTVVOSVRZVVNFUwk1Ci0jZGVmaW5lIFNOTVBJTkFTTlBBUlNFRVJST1JTCTYKLSNkZWZpbmUgU05NUElOQkFEVFlQRVMJCTcKLSNkZWZpbmUgU05NUElOVE9PQklHUwkJOAotI2RlZmluZSBTTk1QSU5OT1NVQ0hOQU1FUwk5Ci0jZGVmaW5lIFNOTVBJTkJBRFZBTFVFUwkJMTAKLSNkZWZpbmUgU05NUElOUkVBRE9OTFlTCQkxMQotI2RlZmluZSBTTk1QSU5HRU5FUlJTCQkxMgotI2RlZmluZSBTTk1QSU5UT1RBTFJFUVZBUlMJMTMKLSNkZWZpbmUgU05NUElOVE9UQUxTRVRWQVJTCTE0Ci0jZGVmaW5lIFNOTVBJTkdFVFJFUVVFU1RTCTE1Ci0jZGVmaW5lIFNOTVBJTkdFVE5FWFRTCQkxNgotI2RlZmluZSBTTk1QSU5TRVRSRVFVRVNUUwkxNwotI2RlZmluZSBTTk1QSU5HRVRSRVNQT05TRVMJMTgKLSNkZWZpbmUgU05NUElOVFJBUFMJCTE5Ci0jZGVmaW5lIFNOTVBPVVRUT09CSUdTCQkyMAotI2RlZmluZSBTTk1QT1VUTk9TVUNITkFNRVMJMjEKLSNkZWZpbmUgU05NUE9VVEJBRFZBTFVFUwkyMgotI2RlZmluZSBTTk1QT1VUUkVBRE9OTFlTCTIzCi0jZGVmaW5lIFNOTVBPVVRHRU5FUlJTCQkyNAotI2RlZmluZSBTTk1QT1VUR0VUUkVRVUVTVFMJMjUKLSNkZWZpbmUgU05NUE9VVEdFVE5FWFRTCQkyNgotI2RlZmluZSBTTk1QT1VUU0VUUkVRVUVTVFMJMjcKLSNkZWZpbmUgU05NUE9VVEdFVFJFU1BPTlNFUwkyOAotI2RlZmluZSBTTk1QT1VUVFJBUFMJCTI5Ci0jZGVmaW5lIFNOTVBFTkFCTEVBVVRIRU5UUkFQUwkzMAotI2RlZmluZSBTTk1QU0lMRU5URFJPUFMJCTMxCi0jZGVmaW5lIFNOTVBQUk9YWURST1BTCQkzMgotCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9TTk1QX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYxZTY1ZAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jCkBAIC0wLDAgKzEsMTE1IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KKworI2luY2x1ZGUgPHV0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaD4KKworI2luY2x1ZGUgInNubXBfbWliXzVfNS5oIgorI2luY2x1ZGUgInVwZGF0ZXMuaCIKKworI2RlZmluZSBTTk1QX09JRCAxLCAzLCA2LCAxLCAyLCAxLCAxMQorCitzdGF0aWMgb2lkIHNubXBfb2lkW10gPSB7IFNOTVBfT0lEIH07CisKK2V4dGVybiBsb25nIHNubXBfZW5hYmxlYXV0aGVudHJhcHM7CitleHRlcm4gaW50IHNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQ7CisKK3N0YXRpYyBpbnQKK3NubXBfZW5hYmxlYXV0aGVudHJhcHNfc3RvcmUoaW50IGEsIGludCBiLCB2b2lkICpjLCB2b2lkICpkKQoreworICAgIGNoYXIgICAgICAgICAgICBsaW5lW1NOTVBfTUFYQlVGX1NNQUxMXTsKKworICAgIGlmIChzbm1wX2VuYWJsZWF1dGhlbnRyYXBzc2V0ID4gMCkgeworICAgICAgICBzbnByaW50ZihsaW5lLCBTTk1QX01BWEJVRl9TTUFMTCwgInBhdXRodHJhcGVuYWJsZSAlbGQiLAorICAgICAgICAgICAgICAgICBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzKTsKKyAgICAgICAgc25tcGRfc3RvcmVfY29uZmlnKGxpbmUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAoraGFuZGxlX3RydXRodmFsdWUobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMSkgeworICAgICAgICBpbnQgcmVzID0gbmV0c25tcF9jaGVja192Yl90cnV0aHZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIpOworICAgICAgICBpZiAocmVzICE9IFNOTVBfRVJSX05PRVJST1IpCisgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCByZXMpOworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworc3RhdGljIG5ldHNubXBfbWliX2hhbmRsZXIqCituZXRzbm1wX2dldF90cnV0aHZhbHVlKHZvaWQpCit7CisgICAgbmV0c25tcF9taWJfaGFuZGxlciogaG5kID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcigidHJ1dGh2YWx1ZSIsIGhhbmRsZV90cnV0aHZhbHVlKTsKKyAgICBpZiAoaG5kKQorICAgICAgICBobmQtPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVDsKKyAgICByZXR1cm4gaG5kOworfQorCitzdGF0aWMgaW50CitoYW5kbGVfc25tcChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorCSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorCSAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKwkgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIHN3aXRjaChyZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lW09JRF9MRU5HVEgoc25tcF9vaWQpXSkgeworICAgIGNhc2UgNzoKKyAgICBjYXNlIDIzOgorICAgIGNhc2UgMzA6CisgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfTk9TVUNIT0JKRUNUKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKwlicmVhazsKKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKKyNpZmRlZiBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorZXh0ZXJuIG9pZCAgICAgIHN5c3RlbV9tb2R1bGVfb2lkW107CitleHRlcm4gaW50ICAgICAgc3lzdGVtX21vZHVsZV9vaWRfbGVuOworZXh0ZXJuIGludCAgICAgIHN5c3RlbV9tb2R1bGVfY291bnQ7CisjZW5kaWYKKworLyoqIEluaXRpYWxpemVzIHRoZSBzbm1wIG1vZHVsZSAqLwordm9pZAoraW5pdF9zbm1wX21pYl81XzUodm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgic25tcCIsICJJbml0aWFsaXppbmdcbiIpKTsKKworICAgIE5FVFNOTVBfUkVHSVNURVJfU1RBVElTVElDX0hBTkRMRVIoCisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgIm1pYklJL3NubXAiLCBoYW5kbGVfc25tcCwgc25tcF9vaWQsIE9JRF9MRU5HVEgoc25tcF9vaWQpLAorICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLAorICAgICAgICAxLCBTTk1QKTsKKyAgICB7CisgICAgICAgIG9pZCBzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkW10gPSB7IFNOTVBfT0lELCAzMCwgMCB9OworCXN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBlbmFibGVhdXRoZW5faW5mbzsKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnID0KKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc25tcEVuYWJsZUF1dGhlblRyYXBzIiwKKyAgICAgICAgICAgICAgICBzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkLAorICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoc25tcEVuYWJsZUF1dGhlblRyYXBzX29pZCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCAmc25tcF9lbmFibGVhdXRoZW50cmFwc3NldCk7CisgICAgICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnLCBuZXRzbm1wX2dldF90cnV0aHZhbHVlKCkpOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgICAgICByZWcsCisgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAorCQkmZW5hYmxlYXV0aGVuX2luZm8sCisgICAgICAgICAgICAgICAgJnNubXBfZW5hYmxlYXV0aGVudHJhcHMsIHNpemVvZihzbm1wX2VuYWJsZWF1dGhlbnRyYXBzKSwKKyAgICAgICAgICAgICAgICBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CisgICAgfQorCisjaWZkZWYgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKKyAgICBpZiAoKytzeXN0ZW1fbW9kdWxlX2NvdW50ID09IDMpCisgICAgICAgIFJFR0lTVEVSX1NZU09SX1RBQkxFKHN5c3RlbV9tb2R1bGVfb2lkLCBzeXN0ZW1fbW9kdWxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgTUlCIG1vZHVsZSBmb3IgU05NUHYyIGVudGl0aWVzIik7CisjZW5kaWYKKyAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwgU05NUF9DQUxMQkFDS19TVE9SRV9EQVRBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9lbmFibGVhdXRoZW50cmFwc19zdG9yZSwgTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTQ1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaApAQCAtMCwwICsxLDUgQEAKK2NvbmZpZ19yZXF1aXJlKG1pYklJL3VwZGF0ZXMpCitjb25maWdfcmVxdWlyZSh1dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljKQorY29uZmlnX2V4Y2x1ZGUobWliSUkvc25tcF9taWIpCisKK3ZvaWQgICAgICAgICAgICBpbml0X3NubXBfbWliXzVfNSh2b2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYwppbmRleCBmOGZmYTUwLi45NDFkNTNkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jCkBAIC0xLDM0NCArMSwyODkgQEAKLS8qCi0gKiAgVGVtcGxhdGUgTUlCIGdyb3VwIGltcGxlbWVudGF0aW9uIC0gc3lzT1JUYWJsZS5jCi0gKgotICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0jaWYgSEFWRV9TVERMSUJfSAotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgVElNRV9XSVRIX1NZU19USU1FCi0jIGlmZGVmIFdJTjMyCi0jICBpbmNsdWRlIDxzeXMvdGltZWIuaD4KLSMgZWxzZQotIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSMgZW5kaWYKLSMgaW5jbHVkZSA8dGltZS5oPgotI2Vsc2UKLSMgaWYgSEFWRV9TWVNfVElNRV9ICi0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBlbHNlCi0jICBpbmNsdWRlIDx0aW1lLmg+Ci0jIGVuZGlmCi0jZW5kaWYKLSNpZiBIQVZFX1NUUklOR19ICi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNlbmRpZgotCi0jaWYgSEFWRV9XSU5TT0NLX0gKLSNpbmNsdWRlIDx3aW5zb2NrLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KIAotI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKICNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCi0jaW5jbHVkZSAic25tcGQuaCIKIAotI2lmZGVmIFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUKLSNpbmNsdWRlICJhZ2VudHgvc3ViYWdlbnQuaCIKLSNpbmNsdWRlICJhZ2VudHgvY2xpZW50LmgiCi0jZW5kaWYKLQotCi1zdGF0aWMgaW50Ci1fcmVnaXN0ZXJfc3lzT1JfY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELAotICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKTsKLXN0YXRpYyBpbnQKLV91bnJlZ2lzdGVyX3N5c09SX2NhbGxiYWNrKGludCBtYWpvcklELCBpbnQgbWlub3JJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzZXJ2ZXJhcmcsIHZvaWQgKmNsaWVudGFyZyk7Ci1zdGF0aWMgaW50Ci1fdW5yZWdpc3Rlcl9zeXNPUl9ieV9zZXNzaW9uX2NhbGxiYWNrKGludCBtYWpvcklELCBpbnQgbWlub3JJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2VydmVyYXJnLCB2b2lkICpjbGllbnRhcmcpOwotCi1zdHJ1Y3QgdGltZXZhbCAgc3lzT1JfbGFzdGNoYW5nZTsKLXN0YXRpYyBzdHJ1Y3Qgc3lzT1JUYWJsZSAqdGFibGUgPSBOVUxMOwotc3RhdGljIGludCAgICAgIG51bUVudHJpZXMgPSAwOworLyoqIFR5cGljYWwgZGF0YSBzdHJ1Y3R1cmUgZm9yIGEgcm93IGVudHJ5ICovCit0eXBlZGVmIHN0cnVjdCBzeXNPUlRhYmxlX2VudHJ5X3MgeworICAgIG5ldHNubXBfaW5kZXggICAgICAgICAgICBvaWRfaW5kZXg7CisgICAgb2lkICAgICAgICAgICAgICAgICAgICAgIHN5c09SSW5kZXg7CisgICAgY29uc3Qgc3RydWN0IHN5c09SVGFibGUqIGRhdGE7Cit9IHN5c09SVGFibGVfZW50cnk7CiAKIC8qCi0gKiBkZWZpbmUgdGhlIHN0cnVjdHVyZSB3ZSdyZSBnb2luZyB0byBhc2sgdGhlIGFnZW50IHRvIHJlZ2lzdGVyIG91cgotICogaW5mb3JtYXRpb24gYXQgCisgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBzeXNPUlRhYmxlCiAgKi8KLXN0cnVjdCB2YXJpYWJsZTEgc3lzT1JUYWJsZV92YXJpYWJsZXNbXSA9IHsKLSAgICB7U1lTT1JUQUJMRUlELCBBU05fT0JKRUNUX0lELCBST05MWSwgdmFyX3N5c09SVGFibGUsIDEsIHsyfX0sCi0gICAge1NZU09SVEFCTEVERVNDUiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9zeXNPUlRhYmxlLCAxLCB7M319LAotICAgIHtTWVNPUlRBQkxFVVBUSU1FLCBBU05fVElNRVRJQ0tTLCBST05MWSwgdmFyX3N5c09SVGFibGUsIDEsIHs0fX0KLX07CisjZGVmaW5lIENPTFVNTl9TWVNPUklOREVYCTEKKyNkZWZpbmUgQ09MVU1OX1NZU09SSUQJCTIKKyNkZWZpbmUgQ09MVU1OX1NZU09SREVTQ1IJMworI2RlZmluZSBDT0xVTU5fU1lTT1JVUFRJTUUJNAogCi0vKgotICogRGVmaW5lIHRoZSBPSUQgcG9pbnRlciB0byB0aGUgdG9wIG9mIHRoZSBtaWIgdHJlZSB0aGF0IHdlJ3JlCi0gKiByZWdpc3RlcmluZyB1bmRlcm5lYXRoIAotICovCi1vaWQgICAgICAgICAgICAgc3lzT1JUYWJsZV92YXJpYWJsZXNfb2lkW10gPSB7IFNOTVBfT0lEX01JQjIsIDEsIDksIDEgfTsKK3N0YXRpYyBuZXRzbm1wX2NvbnRhaW5lciAqdGFibGUgPSBOVUxMOworc3RhdGljIHVfbG9uZyAgICAgICAgICAgICBzeXNPUkxhc3RDaGFuZ2U7CitzdGF0aWMgb2lkICAgICAgICAgICAgICAgIHN5c09STmV4dEluZGV4ID0gMTsKKworLyoqIGNyZWF0ZSBhIG5ldyByb3cgaW4gdGhlIHRhYmxlICovCitzdGF0aWMgdm9pZAorcmVnaXN0ZXJfZm9yZWFjaChjb25zdCBzdHJ1Y3Qgc3lzT1JUYWJsZSogZGF0YSwgdm9pZCogZHVtbXkpCit7CisgICAgc3lzT1JUYWJsZV9lbnRyeSAqZW50cnk7CisKKyAgICBzeXNPUkxhc3RDaGFuZ2UgPSBkYXRhLT5PUl91cHRpbWU7CisKKyAgICBlbnRyeSA9IFNOTVBfTUFMTE9DX1RZUEVERUYoc3lzT1JUYWJsZV9lbnRyeSk7CisgICAgaWYgKCFlbnRyeSkgeworCXNubXBfbG9nKExPR19FUlIsCisJCSAiY291bGQgbm90IGFsbG9jYXRlIHN0b3JhZ2UsIHN5c09SVGFibGUgaXMgaW5jb25zaXN0ZW50XG4iKTsKKyAgICB9IGVsc2UgeworCWNvbnN0IG9pZCBmaXJzdE5leHQgPSBzeXNPUk5leHRJbmRleDsKKwluZXRzbm1wX2l0ZXJhdG9yKiBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUih0YWJsZSk7CisKKwlkbyB7CisJICAgIGNvbnN0IHN5c09SVGFibGVfZW50cnkqIHZhbHVlOworCSAgICBjb25zdCBvaWQgY3VyID0gc3lzT1JOZXh0SW5kZXg7CisKKwkgICAgaWYgKHN5c09STmV4dEluZGV4ID09IFNOTVBfTUlOKE1BWF9TVUJJRCwgMjE0NzQ4MzY0N1VMKSkKKwkJc3lzT1JOZXh0SW5kZXggPSAxOworCSAgICBlbHNlCisJCSsrc3lzT1JOZXh0SW5kZXg7CisKKwkgICAgZm9yICh2YWx1ZSA9IGl0LT5jdXJyKGl0KTsKKwkJIHZhbHVlICYmIHZhbHVlLT5zeXNPUkluZGV4IDwgY3VyOworCQkgdmFsdWUgPSBJVEVSQVRPUl9ORVhUKGl0KSkgeworCSAgICB9CisKKwkgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5zeXNPUkluZGV4ID09IGN1cikgeworCQlpZiAoc3lzT1JOZXh0SW5kZXggPCBjdXIpCisJCSAgICBpdC0+cmVzZXQoaXQpOworCSAgICB9IGVsc2UgeworCQllbnRyeS0+c3lzT1JJbmRleCA9IGN1cjsKKwkJYnJlYWs7CisJICAgIH0KKwl9IHdoaWxlIChmaXJzdE5leHQgIT0gc3lzT1JOZXh0SW5kZXgpOworCisJSVRFUkFUT1JfUkVMRUFTRShpdCk7CisKKwlpZihmaXJzdE5leHQgPT0gc3lzT1JOZXh0SW5kZXgpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJGYWlsZWQgdG8gbG9jYXRlIGEgZnJlZSBpbmRleCBpbiBzeXNPUlRhYmxlXG4iKTsKKyAgICAgICAgICAgIGZyZWUoZW50cnkpOworCX0gZWxzZSB7CisJICAgIGVudHJ5LT5kYXRhID0gZGF0YTsKKwkgICAgZW50cnktPm9pZF9pbmRleC5sZW4gPSAxOworCSAgICBlbnRyeS0+b2lkX2luZGV4Lm9pZHMgPSAmZW50cnktPnN5c09SSW5kZXg7CisKKwkgICAgQ09OVEFJTkVSX0lOU0VSVCh0YWJsZSwgZW50cnkpOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3JlZ2lzdGVyX2NiKGludCBtYWpvciwgaW50IG1pbm9yLCB2b2lkKiBzZXJ2LCB2b2lkKiBjbGllbnQpCit7CisgICAgREVCVUdNU0dUTCgoIm1pYklJL3N5c09SVGFibGUvcmVnaXN0ZXJfY2IiLAorICAgICAgICAgICAgICAgICJyZWdpc3Rlcl9jYiglZCwgJWQsICVwLCAlcClcbiIsIG1ham9yLCBtaW5vciwgc2VydiwgY2xpZW50KSk7CisgICAgcmVnaXN0ZXJfZm9yZWFjaCgoc3RydWN0IHN5c09SVGFibGUqKXNlcnYsIE5VTEwpOworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisvKiogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlICovCitzdGF0aWMgaW50Cit1bnJlZ2lzdGVyX2NiKGludCBtYWpvciwgaW50IG1pbm9yLCB2b2lkKiBzZXJ2LCB2b2lkKiBjbGllbnQpCit7CisgICAgc3lzT1JUYWJsZV9lbnRyeSAqdmFsdWU7CisgICAgbmV0c25tcF9pdGVyYXRvciogaXQgPSBDT05UQUlORVJfSVRFUkFUT1IodGFibGUpOworCisgICAgREVCVUdNU0dUTCgoIm1pYklJL3N5c09SVGFibGUvdW5yZWdpc3Rlcl9jYiIsCisgICAgICAgICAgICAgICAgInVucmVnaXN0ZXJfY2IoJWQsICVkLCAlcCwgJXApXG4iLCBtYWpvciwgbWlub3IsIHNlcnYsIGNsaWVudCkpOworICAgIHN5c09STGFzdENoYW5nZSA9ICgoc3RydWN0IHN5c09SVGFibGUqKShzZXJ2KSktPk9SX3VwdGltZTsKKworICAgIHdoaWxlICgodmFsdWUgPSBJVEVSQVRPUl9ORVhUKGl0KSkgJiYgdmFsdWUtPmRhdGEgIT0gc2Vydik7CisgICAgSVRFUkFUT1JfUkVMRUFTRShpdCk7CisgICAgaWYodmFsdWUpIHsKKwlDT05UQUlORVJfUkVNT1ZFKHRhYmxlLCB2YWx1ZSk7CisJZnJlZSh2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHN5c09SVGFibGUgdGFibGUgKi8KK3N0YXRpYyBpbnQKK3N5c09SVGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0OworCisgICAgREVCVUdNU0dUTCgoIm1pYklJL3N5c09SVGFibGUvc3lzT1JUYWJsZV9oYW5kbGVyIiwKKyAgICAgICAgICAgICAgICAic3lzT1JUYWJsZV9oYW5kbGVyIGNhbGxlZFxuIikpOworCisgICAgaWYgKHJlcWluZm8tPm1vZGUgIT0gTU9ERV9HRVQpIHsKKwlzbm1wX2xvZyhMT0dfRVJSLAorCQkgIkdvdCB1bmV4cGVjdGVkIG9wZXJhdGlvbiBmb3Igc3lzT1JUYWJsZVxuIik7CisJcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFJlYWQtc3VwcG9ydCAoYWxzbyBjb3ZlcnMgR2V0TmV4dCByZXF1ZXN0cykKKyAgICAgKi8KKyAgICByZXF1ZXN0ID0gcmVxdWVzdHM7CisgICAgd2hpbGUocmVxdWVzdCAmJiByZXF1ZXN0LT5wcm9jZXNzZWQpCisJcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQ7CisgICAgd2hpbGUocmVxdWVzdCkgeworCXN5c09SVGFibGVfZW50cnkgKnRhYmxlX2VudHJ5OworCW5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOworCisJaWYgKE5VTEwgPT0gKHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KSkpIHsKKwkgICAgc25tcF9sb2coTE9HX0VSUiwKKwkJICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgaW5mbyBmb3Igc3lzT1JUYWJsZVxuIik7CisJICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSgKKwkJICAgIHJlcXVlc3QtPnJlcXVlc3R2YiwgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKwl9IGVsc2UgaWYoTlVMTCA9PSAodGFibGVfZW50cnkgPSAoc3lzT1JUYWJsZV9lbnRyeSAqKQorCQkJICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpKSkgeworCSAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworCSAgICBjYXNlIENPTFVNTl9TWVNPUklEOgorCSAgICBjYXNlIENPTFVNTl9TWVNPUkRFU0NSOgorCSAgICBjYXNlIENPTFVNTl9TWVNPUlVQVElNRToKKwkJbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorCQkJCQkgIFNOTVBfTk9TVUNISU5TVEFOQ0UpOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX05PU1VDSE9CSkVDVCk7CisJCWJyZWFrOworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKwkgICAgY2FzZSBDT0xVTU5fU1lTT1JJRDoKKwkJc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKAorCQkJcmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fT0JKRUNUX0lELAorCQkJKGNvbnN0IHVfY2hhciopdGFibGVfZW50cnktPmRhdGEtPk9SX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5kYXRhLT5PUl9vaWRsZW4gKiBzaXplb2Yob2lkKSk7CisJCWJyZWFrOworCSAgICBjYXNlIENPTFVNTl9TWVNPUkRFU0NSOgorCQlzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoCisJCQlyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQ1RFVF9TVFIsCisJCQkoY29uc3QgdV9jaGFyKil0YWJsZV9lbnRyeS0+ZGF0YS0+T1JfZGVzY3IsCisJCQlzdHJsZW4odGFibGVfZW50cnktPmRhdGEtPk9SX2Rlc2NyKSk7CisJCWJyZWFrOworCSAgICBjYXNlIENPTFVNTl9TWVNPUlVQVElNRToKKwkJc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoCisJCQlyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9USU1FVElDS1MsCisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+ZGF0YS0+T1JfdXB0aW1lKTsKKwkJYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJCW5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwgU05NUF9OT1NVQ0hPQkpFQ1QpOworCQlicmVhazsKKwkgICAgfQorCX0KKwlkbyB7CisJICAgIHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0OworCX0gd2hpbGUocmVxdWVzdCAmJiByZXF1ZXN0LT5wcm9jZXNzZWQpOworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKwogI2lmZGVmIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCiBleHRlcm4gb2lkICAgICAgc3lzdGVtX21vZHVsZV9vaWRbXTsKIGV4dGVybiBpbnQgICAgICBzeXN0ZW1fbW9kdWxlX29pZF9sZW47CiBleHRlcm4gaW50ICAgICAgc3lzdGVtX21vZHVsZV9jb3VudDsKICNlbmRpZgogCitzdGF0aWMgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqc3lzT1JMYXN0Q2hhbmdlX3JlZzsKK3N0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBzeXNPUkxhc3RDaGFuZ2Vfd2luZm87CitzdGF0aWMgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqc3lzT1JUYWJsZV9yZWc7CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqc3lzT1JUYWJsZV90YWJsZV9pbmZvOworCisvKiogSW5pdGlhbGl6ZXMgdGhlIHN5c09SVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X3N5c09SVGFibGUodm9pZCkKIHsKKyAgICBjb25zdCBvaWQgc3lzT1JMYXN0Q2hhbmdlX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCA4IH07CisgICAgY29uc3Qgb2lkIHN5c09SVGFibGVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDkgfTsKKworICAgIHN5c09SVGFibGVfdGFibGVfaW5mbyA9CisgICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CisKKyAgICB0YWJsZSA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoInN5c09SVGFibGU6dGFibGVfY29udGFpbmVyIik7CisKKyAgICBpZiAoc3lzT1JUYWJsZV90YWJsZV9pbmZvID09IE5VTEwgfHwgdGFibGUgPT0gTlVMTCkgeworICAgICAgICBTTk1QX0ZSRUUoc3lzT1JUYWJsZV90YWJsZV9pbmZvKTsKKyAgICAgICAgQ09OVEFJTkVSX0ZSRUUodGFibGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXMoc3lzT1JUYWJsZV90YWJsZV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLCAvKiogaW5kZXg6IHN5c09SSW5kZXggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICBzeXNPUlRhYmxlX3RhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fU1lTT1JJRDsKKyAgICBzeXNPUlRhYmxlX3RhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fU1lTT1JVUFRJTUU7CisKKyAgICBzeXNPUkxhc3RDaGFuZ2VfcmVnID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAibWliSUkvc3lzT1JMYXN0Q2hhbmdlIiwgTlVMTCwKKyAgICAgICAgICAgIHN5c09STGFzdENoYW5nZV9vaWQsIE9JRF9MRU5HVEgoc3lzT1JMYXN0Q2hhbmdlX29pZCksCisgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKKwkgICAgJnN5c09STGFzdENoYW5nZV93aW5mbywKKyAgICAgICAgICAgICZzeXNPUkxhc3RDaGFuZ2UsIHNpemVvZih1X2xvbmcpLAorICAgICAgICAgICAgQVNOX1RJTUVUSUNLUywgV0FUQ0hFUl9GSVhFRF9TSVpFKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKHN5c09STGFzdENoYW5nZV9yZWcsCisJCQkJICAgICZzeXNPUkxhc3RDaGFuZ2Vfd2luZm8pOworCisgICAgc3lzT1JUYWJsZV9yZWcgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICJtaWJJSS9zeXNPUlRhYmxlIiwgc3lzT1JUYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgc3lzT1JUYWJsZV9vaWQsIE9JRF9MRU5HVEgoc3lzT1JUYWJsZV9vaWQpLCBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcmVnaXN0ZXIoc3lzT1JUYWJsZV9yZWcsIHN5c09SVGFibGVfdGFibGVfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZSwgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKKworICAgIHN5c09STGFzdENoYW5nZSA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOworCiAgICAgLyoKLSAgICAgKiByZWdpc3RlciBvdXJzZWx2ZXMgd2l0aCB0aGUgYWdlbnQgdG8gaGFuZGxlIG91ciBtaWIgdHJlZSAKKyAgICAgKiBJbml0aWFsaXNlIHRoZSBjb250ZW50cyBvZiB0aGUgdGFibGUgaGVyZQogICAgICAqLworICAgIG5ldHNubXBfc3lzT1JUYWJsZV9mb3JlYWNoKCZyZWdpc3Rlcl9mb3JlYWNoLCBOVUxMKTsKIAotI2lmZGVmIFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUKLSAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX0FHRU5UX1JPTEUpID09IE1BU1RFUl9BR0VOVCkKLSAgICAgICAgKHZvaWQpIHJlZ2lzdGVyX21pYl9wcmlvcml0eSgibWliSUkvc3lzT1JUYWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCB2YXJpYWJsZSAqKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c09SVGFibGVfdmFyaWFibGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgdmFyaWFibGUxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3lzT1JUYWJsZV92YXJpYWJsZXMpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHZhcmlhYmxlMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzT1JUYWJsZV92YXJpYWJsZXNfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzeXNPUlRhYmxlX3ZhcmlhYmxlc19vaWQpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yob2lkKSwgMSk7Ci0gICAgZWxzZQotI2VuZGlmCi0gICAgICAgIFJFR0lTVEVSX01JQigibWliSUkvc3lzT1JUYWJsZSIsIHN5c09SVGFibGVfdmFyaWFibGVzLCB2YXJpYWJsZTEsCi0gICAgICAgICAgICAgICAgICAgICBzeXNPUlRhYmxlX3ZhcmlhYmxlc19vaWQpOwotCisgICAgLyoKKyAgICAgKiBSZWdpc3RlciBjYWxsYmFja3MKKyAgICAgKi8KICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRVFfUkVHX1NZU09SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgX3JlZ2lzdGVyX3N5c09SX2NhbGxiYWNrLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFR19TWVNPUiwgcmVnaXN0ZXJfY2IsIE5VTEwpOwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFUV9VTlJFR19TWVNPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF91bnJlZ2lzdGVyX3N5c09SX2NhbGxiYWNrLCBOVUxMKTsKLSAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRVFfVU5SRUdfU1lTT1JfU0VTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF91bnJlZ2lzdGVyX3N5c09SX2J5X3Nlc3Npb25fY2FsbGJhY2ssIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfVU5SRUdfU1lTT1IsIHVucmVnaXN0ZXJfY2IsIE5VTEwpOwogCiAjaWZkZWYgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKICAgICBpZiAoKytzeXN0ZW1fbW9kdWxlX2NvdW50ID09IDMpCiAgICAgICAgIFJFR0lTVEVSX1NZU09SX1RBQkxFKHN5c3RlbV9tb2R1bGVfb2lkLCBzeXN0ZW1fbW9kdWxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgTUlCIG1vZHVsZSBmb3IgU05NUHYyIGVudGl0aWVzIik7CiAjZW5kaWYKLQotICAgIGdldHRpbWVvZmRheSgmc3lzT1JfbGFzdGNoYW5nZSwgTlVMTCk7Ci19Ci0KLSAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgotCSAqCi0JICogIFN5c3RlbSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMKLQkgKgotCSAqKioqKioqKioqKioqKioqKioqKiovCi0KLXVfY2hhciAgICAgICAgICoKLXZhcl9zeXNPUlRhYmxlKHN0cnVjdCB2YXJpYWJsZSAqdnAsCi0gICAgICAgICAgICAgICBvaWQgKiBuYW1lLAotICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKiB2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCi17Ci0gICAgdW5zaWduZWQgbG9uZyAgIGkgPSAwOwotICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIHJldDsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSAqcHRyID0gdGFibGU7Ci0KLSAgICBpZiAoaGVhZGVyX3NpbXBsZV90YWJsZQotICAgICAgICAodnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCwgbnVtRW50cmllcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZm9yIChpID0gMTsgcHRyICE9IE5VTEwgJiYgaSA8IG5hbWVbKmxlbmd0aCAtIDFdOyBwdHIgPSBwdHItPm5leHQsIGkrKykgewotICAgICAgICBERUJVR01TR1RMKCgibWliSUkvc3lzT1JUYWJsZSIsICJzeXNPUlRhYmxlIC0tICVsdSAhPSAlbHVcbiIsCi0gICAgICAgICAgICAgICAgICAgIGksIG5hbWVbKmxlbmd0aCAtIDFdKSk7Ci0gICAgfQotICAgIGlmIChwdHIgPT0gTlVMTCkgewotICAgICAgICBERUJVR01TR1RMKCgibWliSUkvc3lzT1JUYWJsZSIsICJzeXNPUlRhYmxlIC0tIG5vIG1hdGNoOiAlbHVcbiIsCi0gICAgICAgICAgICAgICAgICAgIGkpKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIERFQlVHTVNHVEwoKCJtaWJJSS9zeXNPUlRhYmxlIiwgInN5c09SVGFibGUgLS0gbWF0Y2g6ICVsdVxuIiwgaSkpOwotCi0gICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKLSAgICBjYXNlIFNZU09SVEFCTEVJRDoKLSAgICAgICAgKnZhcl9sZW4gPSBwdHItPk9SX29pZGxlbiAqIHNpemVvZihwdHItPk9SX29pZFswXSk7Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopIHB0ci0+T1Jfb2lkOwotCi0gICAgY2FzZSBTWVNPUlRBQkxFREVTQ1I6Ci0gICAgICAgICp2YXJfbGVuID0gc3RybGVuKHB0ci0+T1JfZGVzY3IpOwotICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBwdHItPk9SX2Rlc2NyOwotCi0gICAgY2FzZSBTWVNPUlRBQkxFVVBUSU1FOgotICAgICAgICByZXQgPSBuZXRzbm1wX3RpbWV2YWxfdXB0aW1lKCZwdHItPk9SX3VwdGltZSk7Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopICYgcmV0OwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBkIiwgInVua25vd24gc3ViLWlkICVkIGluIHZhcl9zeXNPUlRhYmxlXG4iLAotICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLQotaW50Ci1yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3Mob2lkICogb2lkaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9pZGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkZXNjciwgbmV0c25tcF9zZXNzaW9uICogc3MpCi17Ci0gICAgc3RydWN0IHN5c09SVGFibGUgKnB0ciwgKipucHRyOwotICAgIHN0cnVjdCByZWdpc3Rlcl9zeXNPUl9wYXJhbWV0ZXJzIHJlZ19zeXNPUl9wYXJtczsKLQotICAgIERFQlVHTVNHVEwoKCJtaWJJSS9zeXNPUlRhYmxlIiwgInN5c09SVGFibGUgcmVnaXN0ZXJpbmc6ICIpKTsKLSAgICBERUJVR01TR09JRCgoIm1pYklJL3N5c09SVGFibGUiLCBvaWRpbiwgb2lkbGVuKSk7Ci0gICAgREVCVUdNU0coKCJtaWJJSS9zeXNPUlRhYmxlIiwgIlxuIikpOwotCi0gICAgcHRyID0gKHN0cnVjdCBzeXNPUlRhYmxlICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IHN5c09SVGFibGUpKTsKLSAgICBpZiAocHRyID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFNZU19PUlRBQkxFX1JFR0lTVFJBVElPTl9GQUlMRUQ7Ci0gICAgfQotICAgIHB0ci0+T1JfZGVzY3IgPSAoY2hhciAqKSBzdHJkdXAoZGVzY3IpOwotICAgIGlmIChwdHItPk9SX2Rlc2NyID09IE5VTEwpIHsKLSAgICAgICAgZnJlZShwdHIpOwotICAgICAgICByZXR1cm4gU1lTX09SVEFCTEVfUkVHSVNUUkFUSU9OX0ZBSUxFRDsKLSAgICB9Ci0gICAgcHRyLT5PUl9vaWRsZW4gPSBvaWRsZW47Ci0gICAgcHRyLT5PUl9vaWQgPSAob2lkICopIG1hbGxvYyhzaXplb2Yob2lkKSAqIG9pZGxlbik7Ci0gICAgaWYgKHB0ci0+T1Jfb2lkID09IE5VTEwpIHsKLSAgICAgICAgZnJlZShwdHItPk9SX2Rlc2NyKTsKLSAgICAgICAgZnJlZShwdHIpOwotICAgICAgICByZXR1cm4gU1lTX09SVEFCTEVfUkVHSVNUUkFUSU9OX0ZBSUxFRDsKLSAgICB9Ci0gICAgbWVtY3B5KHB0ci0+T1Jfb2lkLCBvaWRpbiwgc2l6ZW9mKG9pZCkgKiBvaWRsZW4pOwotICAgIGdldHRpbWVvZmRheSgmKHB0ci0+T1JfdXB0aW1lKSwgTlVMTCk7Ci0gICAgZ2V0dGltZW9mZGF5KCYoc3lzT1JfbGFzdGNoYW5nZSksIE5VTEwpOwotICAgIHB0ci0+T1Jfc2VzcyA9IHNzOwotICAgIHB0ci0+bmV4dCA9IE5VTEw7Ci0gICAgbnVtRW50cmllcysrOwotCi0gICAgLyogYWRkIHRoaXMgZW50cnkgdG8gdGhlIGVuZCBvZiB0aGUgY2hhaW5lZCBsaXN0ICovCi0gICAgbnB0ciA9ICZ0YWJsZTsKLSAgICB3aGlsZSAoKm5wdHIgIT0gTlVMTCkKLSAgICAgICAgbnB0ciA9ICYoKCpucHRyKS0+bmV4dCk7Ci0gICAgKm5wdHIgPSBwdHI7Ci0KLSAgICByZWdfc3lzT1JfcGFybXMubmFtZSA9IG9pZGluOwotICAgIHJlZ19zeXNPUl9wYXJtcy5uYW1lbGVuID0gb2lkbGVuOwotICAgIHJlZ19zeXNPUl9wYXJtcy5kZXNjciA9IGRlc2NyOwotICAgIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFR19TWVNPUiwgJnJlZ19zeXNPUl9wYXJtcyk7Ci0KLSAgICByZXR1cm4gU1lTX09SVEFCTEVfUkVHSVNURVJFRF9PSzsKLX0KLQotaW50Ci1yZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqIG9pZGluLCBzaXplX3Qgb2lkbGVuLCBjb25zdCBjaGFyICpkZXNjcikKLXsKLSAgICByZXR1cm4gcmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKG9pZGluLCBvaWRsZW4sIGRlc2NyLCBOVUxMKTsKLX0KLQotCi0KLWludAotdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3Mob2lkICogb2lkaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2lkbGVuLCBuZXRzbm1wX3Nlc3Npb24gKiBzcykKLXsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSAqcHRyLCAqcHJldiA9IE5VTEwsICpuZXh0OwotICAgIGludCAgICAgICAgICAgICBmb3VuZCA9IFNZU19PUlRBQkxFX05PX1NVQ0hfUkVHSVNUUkFUSU9OOwotICAgIHN0cnVjdCByZWdpc3Rlcl9zeXNPUl9wYXJhbWV0ZXJzIHJlZ19zeXNPUl9wYXJtczsKLQotICAgIERFQlVHTVNHVEwoKCJtaWJJSS9zeXNPUlRhYmxlIiwgInN5c09SVGFibGUgdW5yZWdpc3RlcmluZzogIikpOwotICAgIERFQlVHTVNHT0lEKCgibWliSUkvc3lzT1JUYWJsZSIsIG9pZGluLCBvaWRsZW4pKTsKLSAgICBERUJVR01TRygoIm1pYklJL3N5c09SVGFibGUiLCAiXG4iKSk7Ci0KLSAgICBmb3IgKHB0ciA9IHRhYmxlOyBwdHI7IHB0ciA9IG5leHQpCi0gICAgewotICAgICAgICBuZXh0ID0gcHRyLT5uZXh0OwotICAgICAgICBpZiAocHRyLT5PUl9zZXNzID09IHNzICYmCi0gICAgICAgICAgKHNubXBfb2lkX2NvbXBhcmUob2lkaW4sIG9pZGxlbiwgcHRyLT5PUl9vaWQsIHB0ci0+T1Jfb2lkbGVuKSA9PSAwKSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHByZXYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICB0YWJsZSA9IHB0ci0+bmV4dDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwcmV2LT5uZXh0ID0gcHRyLT5uZXh0OwotCi0gICAgICAgICAgICBmcmVlKHB0ci0+T1Jfb2lkKTsKLSAgICAgICAgICAgIGZyZWUocHRyLT5PUl9kZXNjcik7Ci0gICAgICAgICAgICBmcmVlKHB0cik7Ci0gICAgICAgICAgICBudW1FbnRyaWVzLS07Ci0gICAgICAgICAgICBnZXR0aW1lb2ZkYXkoJihzeXNPUl9sYXN0Y2hhbmdlKSwgTlVMTCk7Ci0gICAgICAgICAgICBmb3VuZCA9IFNZU19PUlRBQkxFX1VOUkVHSVNURVJFRF9PSzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHByZXYgPSBwdHI7Ci0gICAgfQotCi0gICAgcmVnX3N5c09SX3Bhcm1zLm5hbWUgPSBvaWRpbjsKLSAgICByZWdfc3lzT1JfcGFybXMubmFtZWxlbiA9IG9pZGxlbjsKLSAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19VTlJFR19TWVNPUiwgJnJlZ19zeXNPUl9wYXJtcyk7Ci0KLSAgICByZXR1cm4gZm91bmQ7Ci19Ci0KLQotaW50Ci11bnJlZ2lzdGVyX3N5c09SVGFibGUob2lkICogb2lkaW4sIHNpemVfdCBvaWRsZW4pCi17Ci0gICAgcmV0dXJuIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKG9pZGluLCBvaWRsZW4sIE5VTEwpOwogfQogCiB2b2lkCi11bnJlZ2lzdGVyX3N5c09SVGFibGVfYnlfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzcykKK3NodXRkb3duX3N5c09SVGFibGUodm9pZCkKIHsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSAqcHRyLCAqcHJldiA9IE5VTEwsICpuZXh0OworI2lmZGVmIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCisgICAgaWYgKHN5c3RlbV9tb2R1bGVfY291bnQtLSA9PSAzKQorICAgICAgICBVTlJFR0lTVEVSX1NZU09SX1RBQkxFKHN5c3RlbV9tb2R1bGVfb2lkLCBzeXN0ZW1fbW9kdWxlX29pZF9sZW4pOworI2VuZGlmCiAKLSAgICBmb3IgKHB0ciA9IHRhYmxlOyBwdHI7IHB0ciA9IG5leHQpCi0gICAgewotICAgICAgICBuZXh0ID0gcHRyLT5uZXh0OwotICAgICAgICBpZiAoKChzcy0+ZmxhZ3MgJiBTTk1QX0ZMQUdTX1NVQlNFU1NJT04pICYmIHB0ci0+T1Jfc2VzcyA9PSBzcykgfHwKLSAgICAgICAgICAgICghKHNzLT5mbGFncyAmIFNOTVBfRkxBR1NfU1VCU0VTU0lPTikgJiYgcHRyLT5PUl9zZXNzICYmCi0gICAgICAgICAgICAgcHRyLT5PUl9zZXNzLT5zdWJzZXNzaW9uID09IHNzKSkgewotICAgICAgICAgICAgaWYgKHByZXYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICB0YWJsZSA9IG5leHQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcHJldi0+bmV4dCA9IG5leHQ7Ci0gICAgICAgICAgICBmcmVlKHB0ci0+T1Jfb2lkKTsKLSAgICAgICAgICAgIGZyZWUocHRyLT5PUl9kZXNjcik7Ci0gICAgICAgICAgICBmcmVlKHB0cik7Ci0gICAgICAgICAgICBudW1FbnRyaWVzLS07Ci0gICAgICAgICAgICBnZXR0aW1lb2ZkYXkoJihzeXNPUl9sYXN0Y2hhbmdlKSwgTlVMTCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJldiA9IHB0cjsKLSAgICB9CisgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1VOUkVHX1NZU09SLCB1bnJlZ2lzdGVyX2NiLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKKyAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVHX1NZU09SLCByZWdpc3Rlcl9jYiwgTlVMTCwgMSk7CisKKyAgICBpZiAodGFibGUpCisgICAgICAgIENPTlRBSU5FUl9DTEVBUih0YWJsZSwgbmV0c25tcF9jb250YWluZXJfc2ltcGxlX2ZyZWUsIE5VTEwpOworICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3VucmVnaXN0ZXIoc3lzT1JUYWJsZV9yZWcpOworICAgIHN5c09SVGFibGVfcmVnID0gTlVMTDsKKyAgICB0YWJsZSA9IE5VTEw7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHN5c09SVGFibGVfdGFibGVfaW5mbyk7CisgICAgc3lzT1JUYWJsZV90YWJsZV9pbmZvID0gTlVMTDsKKyAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlcihzeXNPUkxhc3RDaGFuZ2VfcmVnKTsKKyAgICBzeXNPUkxhc3RDaGFuZ2VfcmVnID0gTlVMTDsKIH0KLQotc3RhdGljIGludAotX3JlZ2lzdGVyX3N5c09SX2NhbGxiYWNrKGludCBtYWpvcklELCBpbnQgbWlub3JJRCwgdm9pZCAqc2VydmVyYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudGFyZykKLXsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSAqcGFybXMgPSAoc3RydWN0IHN5c09SVGFibGUgKikgc2VydmVyYXJnOwotCi0gICAgcmV0dXJuIHJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhwYXJtcy0+T1Jfb2lkLCBwYXJtcy0+T1Jfb2lkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFybXMtPk9SX2Rlc2NyLCBwYXJtcy0+T1Jfc2Vzcyk7Ci19Ci0KLXN0YXRpYyBpbnQKLV91bnJlZ2lzdGVyX3N5c09SX2J5X3Nlc3Npb25fY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzZXJ2ZXJhcmcsIHZvaWQgKmNsaWVudGFyZykKLXsKLSAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24gPSAobmV0c25tcF9zZXNzaW9uICopIHNlcnZlcmFyZzsKLQotICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9ieV9zZXNzaW9uKHNlc3Npb24pOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLV91bnJlZ2lzdGVyX3N5c09SX2NhbGxiYWNrKGludCBtYWpvcklELCBpbnQgbWlub3JJRCwgdm9pZCAqc2VydmVyYXJnLAotICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpCi17Ci0gICAgc3RydWN0IHN5c09SVGFibGUgKnBhcm1zID0gKHN0cnVjdCBzeXNPUlRhYmxlICopIHNlcnZlcmFyZzsKLQotICAgIHJldHVybiB1bnJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhwYXJtcy0+T1Jfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJtcy0+T1Jfb2lkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJtcy0+T1Jfc2Vzcyk7Ci19Ci0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaAppbmRleCA1OWZiN2UwLi5lOTg4ZmRhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oCkBAIC0xLDU3ICsxLDE1IEBACi0vKgotICogIFRlbXBsYXRlIE1JQiBncm91cCBpbnRlcmZhY2UgLSBzeXNPUlRhYmxlLmgKLSAqCi0gKi8KLSNpZm5kZWYgX01JQkdST1VQX1NZU09SVEFCTEVfSAotI2RlZmluZSBfTUlCR1JPVVBfU1lTT1JUQUJMRV9ICisjaWZuZGVmIE1JQkdST1VQX1NZU09SVEFCTEVfSAorI2RlZmluZSBNSUJHUk9VUF9TWVNPUlRBQkxFX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKLWNvbmZpZ19yZXF1aXJlKG1pYklJL3N5c3RlbV9taWIpCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCiAKLSAgICAgc3RydWN0IHN5c09SVGFibGUgewotICAgICAgICAgY2hhciAgICAgICAgICAgKk9SX2Rlc2NyOwotICAgICAgICAgb2lkICAgICAgICAgICAgKk9SX29pZDsKLSAgICAgICAgIHNpemVfdCAgICAgICAgICBPUl9vaWRsZW47Ci0gICAgICAgICBzdHJ1Y3QgdGltZXZhbCAgT1JfdXB0aW1lOwotICAgICAgICAgbmV0c25tcF9zZXNzaW9uICpPUl9zZXNzOwotICAgICAgICAgc3RydWN0IHN5c09SVGFibGUgKm5leHQ7Ci0gICAgIH07CitleHRlcm4gdm9pZCAgICAgaW5pdF9zeXNPUlRhYmxlKHZvaWQpOworZXh0ZXJuIHZvaWQgICAgIHNodXRkb3duX3N5c09SVGFibGUodm9pZCk7CiAKLSAgICAgc3RydWN0IHJlZ2lzdGVyX3N5c09SX3BhcmFtZXRlcnMgewotICAgICAgICAgb2lkICAgICAgICAgICAgKm5hbWU7Ci0gICAgICAgICBpbnQgICAgICAgICAgICAgbmFtZWxlbjsKLSAgICAgICAgIGNvbnN0IGNoYXIgICAgICpkZXNjcjsKLSAgICAgfTsKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCiAKLSAgICAgZXh0ZXJuIHZvaWQgICAgIGluaXRfc3lzT1JUYWJsZSh2b2lkKTsKLSAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX3N5c09SVGFibGU7Ci0gICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9zeXNPUkxhc3RDaGFuZ2U7Ci0gICAgIGV4dGVybiBpbnQgICAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKik7Ci0gICAgIGV4dGVybiBpbnQgICAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGUob2lkICosIHNpemVfdCk7Ci0gICAgIGV4dGVybiBpbnQgICAgICByZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3Mob2lkICosIHNpemVfdCwgY29uc3QgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqKTsKLSAgICAgZXh0ZXJuIGludCAgICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKG9pZCAqLCBzaXplX3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKik7Ci0gICAgIGV4dGVybiB2b2lkICAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGVfYnlfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKik7Ci0KLSNkZWZpbmUJU1lTT1JUQUJMRUlOREVYCQkgICAgICAgIDEKLSNkZWZpbmUJU1lTT1JUQUJMRUlECQkgICAgICAgIDIKLSNkZWZpbmUJU1lTT1JUQUJMRURFU0NSCQkgICAgICAgIDMKLSNkZWZpbmUJU1lTT1JUQUJMRVVQVElNRQkgICAgICAgIDQKLQotI2RlZmluZSBTWVNfT1JUQUJMRV9SRUdJU1RFUkVEX09LICAgICAgICAgICAgICAwCi0jZGVmaW5lIFNZU19PUlRBQkxFX1JFR0lTVFJBVElPTl9GQUlMRUQgICAgICAgLTEKLSNkZWZpbmUgU1lTX09SVEFCTEVfVU5SRUdJU1RFUkVEX09LICAgICAgICAgICAgMAotI2RlZmluZSBTWVNfT1JUQUJMRV9OT19TVUNIX1JFR0lTVFJBVElPTiAgICAgIC0xCi0KLSNpZmRlZiAgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKLSNkZWZpbmUgUkVHSVNURVJfU1lTT1JfRU5UUlkodGhlb2lkLCBkZXNjcikgICAgICAgICAgICAgICAgICAgICAgXAotICAodm9pZClyZWdpc3Rlcl9zeXNPUlRhYmxlKHRoZW9pZCwgc2l6ZW9mKHRoZW9pZCkvc2l6ZW9mKG9pZCksIGRlc2NyKTsKLSNkZWZpbmUgUkVHSVNURVJfU1lTT1JfVEFCTEUodGhlb2lkLCBsZW4sIGRlc2NyKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICh2b2lkKXJlZ2lzdGVyX3N5c09SVGFibGUodGhlb2lkLCBsZW4sIGRlc2NyKTsKLQotI2Vsc2UKLSNkZWZpbmUgUkVHSVNURVJfU1lTT1JfRU5UUlkoeCx5KQotI2RlZmluZSBSRUdJU1RFUl9TWVNPUl9UQUJMRSh4LHkseikKLSNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUgKi8KLSNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX1NZU09SVEFCTEVfSCAqLworI2VuZGlmIC8qIE1JQkdST1VQX1NZU09SVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCmluZGV4IGVkOTdhZjMuLjUzMmVhMjIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMKQEAgLTMxLDExICszMSw2IEBACiAjaW5jbHVkZSA8d2luc29jay5oPgogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChtaW5ndzMyKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1RJTUVfSCkKLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxjdHlwZS5oPgogI2lmIEhBVkVfVVRTTkFNRV9ICiAjaW5jbHVkZSA8dXRzbmFtZS5oPgogI2Vsc2UKQEAgLTQzLDE4ICszOCwxNCBAQAogI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CiAjZW5kaWYKICNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCiAjaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgInN5c3RlbV9taWIuaCIKLSNpbmNsdWRlICJzdHJ1Y3QuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCi0KKyNpbmNsdWRlICJ1cGRhdGVzLmgiCiAKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCkBAIC02NCwzMyArNTUsMjQgQEAKIAkgKioqKioqKioqKioqKioqKioqKioqLwogCiAjZGVmaW5lIFNZU19TVFJJTkdfTEVOCTI1NgotY2hhciAgICAgICAgICAgIHZlcnNpb25fZGVzY3JbU1lTX1NUUklOR19MRU5dID0gTkVUU05NUF9WRVJTX0RFU0M7Ci1jaGFyICAgICAgICAgICAgc3lzQ29udGFjdFtTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1NZU19DT05UQUNUOwotY2hhciAgICAgICAgICAgIHN5c05hbWVbU1lTX1NUUklOR19MRU5dID0gTkVUU05NUF9TWVNfTkFNRTsKLWNoYXIgICAgICAgICAgICBzeXNMb2NhdGlvbltTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1NZU19MT0M7Ci1vaWQgICAgICAgICAgICAgc3lzT2JqZWN0SURbTUFYX09JRF9MRU5dOwotc2l6ZV90ICAgICAgICAgIHN5c09iamVjdElETGVuZ3RoOworc3RhdGljIGNoYXIgICAgIHZlcnNpb25fZGVzY3JbU1lTX1NUUklOR19MRU5dID0gTkVUU05NUF9WRVJTX0RFU0M7CitzdGF0aWMgY2hhciAgICAgc3lzQ29udGFjdFtTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1NZU19DT05UQUNUOworc3RhdGljIGNoYXIgICAgIHN5c05hbWVbU1lTX1NUUklOR19MRU5dID0gTkVUU05NUF9TWVNfTkFNRTsKK3N0YXRpYyBjaGFyICAgICBzeXNMb2NhdGlvbltTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1NZU19MT0M7CitzdGF0aWMgb2lkICAgICAgc3lzT2JqZWN0SURbTUFYX09JRF9MRU5dOworc3RhdGljIHNpemVfdCBzeXNPYmplY3RJREJ5dGVMZW5ndGg7CiAKIGV4dGVybiBvaWQgICAgICB2ZXJzaW9uX3N5c29pZFtdOwogZXh0ZXJuIGludCAgICAgIHZlcnNpb25fc3lzb2lkX2xlbjsKIAotY2hhciAgICAgICAgICAgIG9sZHZlcnNpb25fZGVzY3JbU1lTX1NUUklOR19MRU5dOwotY2hhciAgICAgICAgICAgIG9sZHN5c0NvbnRhY3RbU1lTX1NUUklOR19MRU5dOwotY2hhciAgICAgICAgICAgIG9sZHN5c05hbWVbU1lTX1NUUklOR19MRU5dOwotY2hhciAgICAgICAgICAgIG9sZHN5c0xvY2F0aW9uW1NZU19TVFJJTkdfTEVOXTsKLQotaW50ICAgICAgICAgICAgIHN5c1NlcnZpY2VzID0gNzI7Ci1pbnQgICAgICAgICAgICAgc3lzU2VydmljZXNDb25maWdlZCA9IDA7CitzdGF0aWMgaW50ICAgICAgc3lzU2VydmljZXMgPSA3MjsKK3N0YXRpYyBpbnQgICAgICBzeXNTZXJ2aWNlc0NvbmZpZ2VkID0gMDsKIAogZXh0ZXJuIG9pZCAgICAgIHZlcnNpb25faWRbXTsKIGV4dGVybiBpbnQgICAgICB2ZXJzaW9uX2lkX2xlbjsKIAogc3RhdGljIGludCAgICAgIHN5c0NvbnRhY3RTZXQgPSAwLCBzeXNMb2NhdGlvblNldCA9IDAsIHN5c05hbWVTZXQgPSAwOwogCi1Xcml0ZU1ldGhvZCAgICAgd3JpdGVTeXN0ZW07Ci1pbnQgICAgICAgICAgICAgaGVhZGVyX3N5c3RlbShzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiwgV3JpdGVNZXRob2QgKiopOwotCiAjaWYgKGRlZmluZWQgKFdJTjMyKSAmJiBkZWZpbmVkIChIQVZFX1dJTjMyX1BMQVRGT1JNX1NESykpIHx8IGRlZmluZWQgKG1pbmd3MzIpCiBzdGF0aWMgdm9pZCAgICAgd2luZG93c09TVmVyc2lvblN0cmluZyhjaGFyIFtdLCBzaXplX3QpOwogI2VuZGlmCkBAIC0xMDEsMTggKzgzLDEyIEBACiAJICoKIAkgKioqKioqKioqKioqKioqKioqKioqLwogCi12b2lkCitzdGF0aWMgdm9pZAogc3lzdGVtX3BhcnNlX2NvbmZpZ19zeXNkZXNjcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSAgICBjaGFyICAgICAgICAgICAgdG1wYnVmWzEwMjRdOwotCiAgICAgaWYgKHN0cmxlbihjcHRyKSA+PSBzaXplb2YodmVyc2lvbl9kZXNjcikpIHsKLSAgICAgICAgc25wcmludGYodG1wYnVmLAotICAgICAgICAgICAgICAgICBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAgICAgInN5c2Rlc2NyIHRva2VuIHRvbyBsb25nIChtdXN0IGJlIDwgJWx1KTpcblx0JXMiLAotICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylzaXplb2YodmVyc2lvbl9kZXNjciksCi0gICAgICAgICAgICAgICAgIGNwdHIpOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJbmV0c25tcF9jb25maWdfZXJyb3IoInN5c2Rlc2NyIHRva2VuIHRvbyBsb25nIChtdXN0IGJlIDwgJWx1KTpcblx0JXMiLAorCQkJICAgICAodW5zaWduZWQgbG9uZylzaXplb2YodmVyc2lvbl9kZXNjciksIGNwdHIpOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKGNwdHIsICJcIlwiIikgPT0gMCkgewogICAgICAgICB2ZXJzaW9uX2Rlc2NyWzBdID0gJ1wwJzsKICAgICB9IGVsc2UgewpAQCAtMTIwLDE2OCArOTYsODkgQEAKICAgICB9CiB9CiAKLXZvaWQKK05FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkCitzeXN0ZW1fcGFyc2VfY29uZmlnX3N0cmluZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIqIHZhbHVlLCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogZ3VhcmQpCit7CisgICAgaWYgKHN0cmxlbihjcHRyKSA+PSBzaXplKSB7CisJbmV0c25tcF9jb25maWdfZXJyb3IoIiVzIHRva2VuIHRvbyBsb25nIChtdXN0IGJlIDwgJWx1KTpcblx0JXMiLAorCQkJICAgICB0b2tlbiwgKHVuc2lnbmVkIGxvbmcpc2l6ZSwgY3B0cik7CisgICAgfQorCisgICAgaWYgKCp0b2tlbiA9PSAncCcgJiYgc3RyY2FzZWNtcCh0b2tlbiArIDEsIG5hbWUpID09IDApIHsKKyAgICAgICAgaWYgKCpndWFyZCA8IDApIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBUaGlzIGlzIGJvZ3VzIChhbmQgc2hvdWxkbid0IGhhcHBlbiBhbnl3YXkpIC0tIHRoZSB2YWx1ZSBpcworICAgICAgICAgICAgICogYWxyZWFkeSBjb25maWd1cmVkIHJlYWQtb25seS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAiaWdub3JpbmcgYXR0ZW1wdGVkIG92ZXJyaWRlIG9mIHJlYWQtb25seSAlcy4wXG4iLCBuYW1lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICsrKCpndWFyZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoKmd1YXJkID4gMCkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFRoaXMgaXMgYm9ndXMgKGFuZCBzaG91bGRuJ3QgaGFwcGVuIGFueXdheSkgLS0gd2UgYWxyZWFkeSByZWFkIGEKKyAgICAgICAgICAgICAqIHBlcnNpc3RlbnQgdmFsdWUgd2hpY2ggd2Ugc2hvdWxkIGlnbm9yZSBpbiBmYXZvdXIgb2YgdGhpcyBvbmUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgImlnbm9yaW5nIGF0dGVtcHRlZCBvdmVycmlkZSBvZiByZWFkLW9ubHkgJXMuMFxuIiwgbmFtZSk7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRmFsbCB0aHJvdWdoIGFuZCBjb3B5IGluIHRoaXMgdmFsdWUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgfQorICAgICAgICAqZ3VhcmQgPSAtMTsKKyAgICB9CisKKyAgICBpZiAoc3RyY21wKGNwdHIsICJcIlwiIikgPT0gMCkgeworICAgICAgICAqdmFsdWUgPSAnXDAnOworICAgIH0gZWxzZSBpZiAoc3RybGVuKGNwdHIpIDwgc2l6ZSkgeworICAgICAgICBzdHJjcHkodmFsdWUsIGNwdHIpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKIHN5c3RlbV9wYXJzZV9jb25maWdfc3lzbG9jKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07Ci0KLSAgICBpZiAoc3RybGVuKGNwdHIpID49IHNpemVvZihzeXNMb2NhdGlvbikpIHsKLSAgICAgICAgc25wcmludGYodG1wYnVmLCAxMDI0LAotICAgICAgICAgICAgICAgICAic3lzbG9jYXRpb24gdG9rZW4gdG9vIGxvbmcgKG11c3QgYmUgPCAlbHUpOlxuXHQlcyIsCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXNpemVvZihzeXNMb2NhdGlvbiksIGNwdHIpOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7Ci0gICAgfQotCi0gICAgaWYgKHN0cmNtcCh0b2tlbiwgInBzeXNsb2NhdGlvbiIpID09IDApIHsKLSAgICAgICAgaWYgKHN5c0xvY2F0aW9uU2V0IDwgMCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFRoaXMgaXMgYm9ndXMgKGFuZCBzaG91bGRuJ3QgaGFwcGVuIGFueXdheSkgLS0gdGhlIHN5c0xvY2F0aW9uCi0gICAgICAgICAgICAgKiBpcyBhbHJlYWR5IGNvbmZpZ3VyZWQgcmVhZC1vbmx5LiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgImlnbm9yaW5nIGF0dGVtcHRlZCBvdmVycmlkZSBvZiByZWFkLW9ubHkgc3lzTG9jYXRpb24uMFxuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzeXNMb2NhdGlvblNldCsrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHN5c0xvY2F0aW9uU2V0ID4gMCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFRoaXMgaXMgYm9ndXMgKGFuZCBzaG91bGRuJ3QgaGFwcGVuIGFueXdheSkgLS0gd2UgYWxyZWFkeSByZWFkIGEKLSAgICAgICAgICAgICAqIHBlcnNpc3RlbnQgdmFsdWUgb2Ygc3lzTG9jYXRpb24sIHdoaWNoIHdlIHNob3VsZCBpZ25vcmUgaW4KLSAgICAgICAgICAgICAqIGZhdm91ciBvZiB0aGlzIG9uZS4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICJpZ25vcmluZyBhdHRlbXB0ZWQgb3ZlcnJpZGUgb2YgcmVhZC1vbmx5IHN5c0xvY2F0aW9uLjBcbiIpOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIEZhbGwgdGhyb3VnaCBhbmQgY29weSBpbiB0aGlzIHZhbHVlLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgfQotICAgICAgICBzeXNMb2NhdGlvblNldCA9IC0xOwotICAgIH0KLQotICAgIGlmIChzdHJjbXAoY3B0ciwgIlwiXCIiKSA9PSAwKSB7Ci0gICAgICAgIHN5c0xvY2F0aW9uWzBdID0gJ1wwJzsKLSAgICB9IGVsc2UgaWYgKHN0cmxlbihjcHRyKSA8IHNpemVvZihzeXNMb2NhdGlvbikpIHsKLSAgICAgICAgc3RyY3B5KHN5c0xvY2F0aW9uLCBjcHRyKTsKLSAgICB9CisgICAgc3lzdGVtX3BhcnNlX2NvbmZpZ19zdHJpbmcodG9rZW4sIGNwdHIsICJzeXNMb2NhdGlvbiIsIHN5c0xvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzeXNMb2NhdGlvbiksICZzeXNMb2NhdGlvblNldCk7CiB9CiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c2Nvbihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSAgICBjaGFyICAgICAgICAgICAgdG1wYnVmWzEwMjRdOwotCi0gICAgaWYgKHN0cmxlbihjcHRyKSA+PSBzaXplb2Yoc3lzQ29udGFjdCkpIHsKLSAgICAgICAgc25wcmludGYodG1wYnVmLCAxMDI0LAotICAgICAgICAgICAgICAgICAic3lzY29udGFjdCB0b2tlbiB0b28gbG9uZyAobXVzdCBiZSA8ICVsdSk6XG5cdCVzIiwKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpc2l6ZW9mKHN5c0NvbnRhY3QpLCBjcHRyKTsKLSAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOwotICAgIH0KLQotICAgIGlmIChzdHJjbXAodG9rZW4sICJwc3lzY29udGFjdCIpID09IDApIHsKLSAgICAgICAgaWYgKHN5c0NvbnRhY3RTZXQgPCAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhpcyBpcyBib2d1cyAoYW5kIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5KSAtLSB0aGUgc3lzQ29udGFjdAotICAgICAgICAgICAgICogaXMgYWxyZWFkeSBjb25maWd1cmVkIHJlYWQtb25seS4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICJpZ25vcmluZyBhdHRlbXB0ZWQgb3ZlcnJpZGUgb2YgcmVhZC1vbmx5IHN5c0NvbnRhY3QuMFxuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzeXNDb250YWN0U2V0Kys7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoc3lzQ29udGFjdFNldCA+IDApIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBUaGlzIGlzIGJvZ3VzIChhbmQgc2hvdWxkbid0IGhhcHBlbiBhbnl3YXkpIC0tIHdlIGFscmVhZHkgcmVhZCBhCi0gICAgICAgICAgICAgKiBwZXJzaXN0ZW50IHZhbHVlIG9mIHN5c0NvbnRhY3QsIHdoaWNoIHdlIHNob3VsZCBpZ25vcmUgaW4gZmF2b3VyCi0gICAgICAgICAgICAgKiBvZiB0aGlzIG9uZS4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICJpZ25vcmluZyBhdHRlbXB0ZWQgb3ZlcnJpZGUgb2YgcmVhZC1vbmx5IHN5c0NvbnRhY3QuMFxuIik7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogRmFsbCB0aHJvdWdoIGFuZCBjb3B5IGluIHRoaXMgdmFsdWUuICAKLSAgICAgICAgICAgICAqLwotICAgICAgICB9Ci0gICAgICAgIHN5c0NvbnRhY3RTZXQgPSAtMTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyY21wKGNwdHIsICJcIlwiIikgPT0gMCkgewotICAgICAgICBzeXNDb250YWN0WzBdID0gJ1wwJzsKLSAgICB9IGVsc2UgaWYgKHN0cmxlbihjcHRyKSA8IHNpemVvZihzeXNDb250YWN0KSkgewotICAgICAgICBzdHJjcHkoc3lzQ29udGFjdCwgY3B0cik7Ci0gICAgfQorICAgIHN5c3RlbV9wYXJzZV9jb25maWdfc3RyaW5nKHRva2VuLCBjcHRyLCAic3lzQ29udGFjdCIsIHN5c0NvbnRhY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN5c0NvbnRhY3QpLCAmc3lzQ29udGFjdFNldCk7CiB9CiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c25hbWUoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCiB7Ci0gICAgY2hhciAgICAgICAgICAgIHRtcGJ1ZlsxMDI0XTsKLQotICAgIGlmIChzdHJsZW4oY3B0cikgPj0gc2l6ZW9mKHN5c05hbWUpKSB7Ci0gICAgICAgIHNucHJpbnRmKHRtcGJ1ZiwgMTAyNCwKLSAgICAgICAgICAgICAgICAgInN5c25hbWUgdG9rZW4gdG9vIGxvbmcgKG11c3QgYmUgPCAlbHUpOlxuXHQlcyIsCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXNpemVvZihzeXNOYW1lKSwgY3B0cik7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyY21wKHRva2VuLCAicHN5c25hbWUiKSA9PSAwKSB7Ci0gICAgICAgIGlmIChzeXNOYW1lU2V0IDwgMCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFRoaXMgaXMgYm9ndXMgKGFuZCBzaG91bGRuJ3QgaGFwcGVuIGFueXdheSkgLS0gdGhlIHN5c05hbWUKLSAgICAgICAgICAgICAqIGlzIGFscmVhZHkgY29uZmlndXJlZCByZWFkLW9ubHkuICAKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAiaWdub3JpbmcgYXR0ZW1wdGVkIG92ZXJyaWRlIG9mIHJlYWQtb25seSBzeXNOYW1lLjBcbiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3lzTmFtZVNldCsrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHN5c05hbWVTZXQgPiAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhpcyBpcyBib2d1cyAoYW5kIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5KSAtLSB3ZSBhbHJlYWR5IHJlYWQgYQotICAgICAgICAgICAgICogcGVyc2lzdGVudCB2YWx1ZSBvZiBzeXNOYW1lLCB3aGljaCB3ZSBzaG91bGQgaWdub3JlIGluIGZhdm91cgotICAgICAgICAgICAgICogb2YgdGhpcyBvbmUuICAKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAiaWdub3JpbmcgYXR0ZW1wdGVkIG92ZXJyaWRlIG9mIHJlYWQtb25seSBzeXNOYW1lLjBcbiIpOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIEZhbGwgdGhyb3VnaCBhbmQgY29weSBpbiB0aGlzIHZhbHVlLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgfQotICAgICAgICBzeXNOYW1lU2V0ID0gLTE7Ci0gICAgfQotCi0gICAgaWYgKHN0cmNtcChjcHRyLCAiXCJcIiIpID09IDApIHsKLSAgICAgICAgc3lzTmFtZVswXSA9ICdcMCc7Ci0gICAgfSBlbHNlIGlmIChzdHJsZW4oY3B0cikgPCBzaXplb2Yoc3lzTmFtZSkpIHsKLSAgICAgICAgc3RyY3B5KHN5c05hbWUsIGNwdHIpOwotICAgIH0KKyAgICBzeXN0ZW1fcGFyc2VfY29uZmlnX3N0cmluZyh0b2tlbiwgY3B0ciwgInN5c05hbWUiLCBzeXNOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzeXNOYW1lKSwgJnN5c05hbWVTZXQpOwogfQogCi12b2lkCitzdGF0aWMgdm9pZAogc3lzdGVtX3BhcnNlX2NvbmZpZ19zeXNTZXJ2aWNlcyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKICAgICBzeXNTZXJ2aWNlcyA9IGF0b2koY3B0cik7CiAgICAgc3lzU2VydmljZXNDb25maWdlZCA9IDE7CiB9CiAKLXZvaWQgc3lzdGVtX3BhcnNlX2NvbmZpZ19zeXNPYmplY3RJRChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKK3N0YXRpYyB2b2lkCitzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c09iamVjdElEKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotICAgIGNoYXIgdG1wYnVmWzEwMjRdOwotCi0gICAgc3lzT2JqZWN0SURMZW5ndGggPSBNQVhfT0lEX0xFTjsKKyAgICBzaXplX3Qgc3lzT2JqZWN0SURMZW5ndGggPSBNQVhfT0lEX0xFTjsKICAgICBpZiAoIXJlYWRfb2JqaWQoY3B0ciwgc3lzT2JqZWN0SUQsICZzeXNPYmplY3RJRExlbmd0aCkpIHsKLSAgICAgICAgc25wcmludGYodG1wYnVmLAotICAgICAgICAgICAgICAgICBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAgICAgInN5c29iamVjdGlkIHRva2VuIG5vdCBhIHBhcnNhYmxlIE9JRDpcblx0JXMiLAotICAgICAgICAgICAgICAgICBjcHRyKTsKLSAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOwotICAgICAgICBtZW1jcHkoc3lzT2JqZWN0SUQsIHZlcnNpb25fc3lzb2lkLCB2ZXJzaW9uX3N5c29pZF9sZW4gKiBzaXplb2Yob2lkKSk7Ci0gICAgICAgIHN5c09iamVjdElETGVuZ3RoID0gdmVyc2lvbl9zeXNvaWRfbGVuOwotICAgIH0KKwluZXRzbm1wX2NvbmZpZ19lcnJvcigic3lzb2JqZWN0aWQgdG9rZW4gbm90IGEgcGFyc2FibGUgT0lEOlxuXHQlcyIsCisJCQkgICAgIGNwdHIpOworICAgICAgICBzeXNPYmplY3RJREJ5dGVMZW5ndGggPSB2ZXJzaW9uX3N5c29pZF9sZW4gICogc2l6ZW9mKG9pZCk7CisgICAgICAgIG1lbWNweShzeXNPYmplY3RJRCwgdmVyc2lvbl9zeXNvaWQsIHN5c09iamVjdElEQnl0ZUxlbmd0aCk7CisgICAgfSBlbHNlCisgICAgICAgIHN5c09iamVjdElEQnl0ZUxlbmd0aCA9IHN5c09iamVjdElETGVuZ3RoICogc2l6ZW9mKG9pZCk7CiB9CiAKIApAQCAtMjkxLDI4ICsxODgsOCBAQAogCSAqCiAJICoqKioqKioqKioqKioqKioqKioqKi8KIAotLyoKLSAqIGRlZmluZSB0aGUgc3RydWN0dXJlIHdlJ3JlIGdvaW5nIHRvIGFzayB0aGUgYWdlbnQgdG8gcmVnaXN0ZXIgb3VyCi0gKiBpbmZvcm1hdGlvbiBhdCAKLSAqLwotc3RydWN0IHZhcmlhYmxlMSBzeXN0ZW1fdmFyaWFibGVzW10gPSB7Ci0gICAge1ZFUlNJT05fREVTQ1IsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfc3lzdGVtLCAxLCB7MX19LAotICAgIHtWRVJTSU9OSUQsIEFTTl9PQkpFQ1RfSUQsIFJPTkxZLCB2YXJfc3lzdGVtLCAxLCB7Mn19LAotICAgIHtVUFRJTUUsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfc3lzdGVtLCAxLCB7M319LAotICAgIHtTWVNDT05UQUNULCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9zeXN0ZW0sIDEsIHs0fX0sCi0gICAge1NZU1RFTU5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3N5c3RlbSwgMSwgezV9fSwKLSAgICB7U1lTTE9DQVRJT04sIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3N5c3RlbSwgMSwgezZ9fSwKLSAgICB7U1lTU0VSVklDRVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3N5c3RlbSwgMSwgezd9fSwKLSAgICB7U1lTT1JMQVNUQ0hBTkdFLCBBU05fVElNRVRJQ0tTLCBST05MWSwgdmFyX3N5c3RlbSwgMSwgezh9fQotfTsKLS8qCi0gKiBEZWZpbmUgdGhlIE9JRCBwb2ludGVyIHRvIHRoZSB0b3Agb2YgdGhlIG1pYiB0cmVlIHRoYXQgd2UncmUKLSAqIHJlZ2lzdGVyaW5nIHVuZGVybmVhdGggCi0gKi8KLW9pZCAgICAgICAgICAgICBzeXN0ZW1fdmFyaWFibGVzX29pZFtdID0geyBTTk1QX09JRF9NSUIyLCAxIH07CiBvaWQgICAgICAgICAgICAgc3lzdGVtX21vZHVsZV9vaWRbXSA9IHsgU05NUF9PSURfU05NUE1PRFVMRVMsIDEgfTsKLWludCAgICAgICAgICAgICBzeXN0ZW1fbW9kdWxlX29pZF9sZW4gPQotICAgIHNpemVvZihzeXN0ZW1fbW9kdWxlX29pZCkgLyBzaXplb2Yob2lkKTsKK2ludCAgICAgICAgICAgICBzeXN0ZW1fbW9kdWxlX29pZF9sZW4gPSBPSURfTEVOR1RIKHN5c3RlbV9tb2R1bGVfb2lkKTsKIGludCAgICAgICAgICAgICBzeXN0ZW1fbW9kdWxlX2NvdW50ID0gMDsKIAogc3RhdGljIGludApAQCAtMzM2LDYgKzIxMywzMCBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitoYW5kbGVfc3lzU2VydmljZXMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyNpZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUworICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUICYmICFzeXNTZXJ2aWNlc0NvbmZpZ2VkKQorICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX05PU1VDSElOU1RBTkNFKTsKKyNlbmRpZgorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCitzdGF0aWMgaW50CitoYW5kbGVfc3lzVXBUaW1lKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX1RJTUVUSUNLUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKSk7CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKIHZvaWQKIGluaXRfc3lzdGVtX21pYih2b2lkKQogewpAQCAtMzk5LDMwICszMDAsOTkgQEAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFWRV9HRVRIT1NUTkFNRSAqLwogCiAjaWYgKGRlZmluZWQgKFdJTjMyKSAmJiBkZWZpbmVkIChIQVZFX1dJTjMyX1BMQVRGT1JNX1NESykpIHx8IGRlZmluZWQgKG1pbmd3MzIpCi0gIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgLyogRGVmYXVsdCBzeXNDb250YWN0IGlzIHRoZSByZWdpc3RlcmVkIHdpbmRvd3MgdXNlciAqLwotICAgIGlmIChSZWdPcGVuS2V5RXgoSEtFWV9MT0NBTF9NQUNISU5FLCAiU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93cyBOVFxcQ3VycmVudFZlcnNpb24iLCAwLCBLRVlfUVVFUllfVkFMVUUsICZoS2V5KSA9PSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgY2hhciByZWdpc3RlcmVkT3duZXJbMjU2XSA9ICIiOwotICAgICAgIERXT1JEIHJlZ2lzdGVyZWRPd25lclN6ID0gMjU2OwotICAgICAgIGlmIChSZWdRdWVyeVZhbHVlRXgoaEtleSwgIlJlZ2lzdGVyZWRPd25lciIsIE5VTEwsIE5VTEwsIChMUEJZVEUpcmVnaXN0ZXJlZE93bmVyLCAmcmVnaXN0ZXJlZE93bmVyU3opID09IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgICBzdHJjcHkoc3lzQ29udGFjdCwgcmVnaXN0ZXJlZE93bmVyKTsKLSAgICAgICB9Ci0gICAgICAgUmVnQ2xvc2VLZXkoaEtleSk7CisgICAgeworICAgICAgSEtFWSBoS2V5OworICAgICAgLyogRGVmYXVsdCBzeXNDb250YWN0IGlzIHRoZSByZWdpc3RlcmVkIHdpbmRvd3MgdXNlciAqLworICAgICAgaWYgKFJlZ09wZW5LZXlFeChIS0VZX0xPQ0FMX01BQ0hJTkUsCisgICAgICAgICAgICAgICAgICAgICAgICJTT0ZUV0FSRVxcTWljcm9zb2Z0XFxXaW5kb3dzIE5UXFxDdXJyZW50VmVyc2lvbiIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgIEtFWV9RVUVSWV9WQUxVRSwgJmhLZXkpID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICBjaGFyIHJlZ2lzdGVyZWRPd25lclsyNTZdID0gIiI7CisgICAgICAgICAgRFdPUkQgcmVnaXN0ZXJlZE93bmVyU3ogPSAyNTY7CisgICAgICAgICAgaWYgKFJlZ1F1ZXJ5VmFsdWVFeChoS2V5LCAiUmVnaXN0ZXJlZE93bmVyIiwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMUEJZVEUpcmVnaXN0ZXJlZE93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlZ2lzdGVyZWRPd25lclN6KSA9PSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgIHN0cmNweShzeXNDb250YWN0LCByZWdpc3RlcmVkT3duZXIpOworICAgICAgICAgIH0KKyAgICAgICAgICBSZWdDbG9zZUtleShoS2V5KTsKKyAgICAgIH0KICAgICB9Ci0gIH0KICNlbmRpZgogCiAgICAgLyogZGVmYXVsdCBzeXNPYmplY3RJRCAqLwogICAgIG1lbWNweShzeXNPYmplY3RJRCwgdmVyc2lvbl9zeXNvaWQsIHZlcnNpb25fc3lzb2lkX2xlbiAqIHNpemVvZihvaWQpKTsKLSAgICBzeXNPYmplY3RJRExlbmd0aCA9IHZlcnNpb25fc3lzb2lkX2xlbjsKKyAgICBzeXNPYmplY3RJREJ5dGVMZW5ndGggPSB2ZXJzaW9uX3N5c29pZF9sZW4gKiBzaXplb2Yob2lkKTsKIAotICAgIC8qCi0gICAgICogcmVnaXN0ZXIgb3Vyc2VsdmVzIHdpdGggdGhlIGFnZW50IHRvIGhhbmRsZSBvdXIgbWliIHRyZWUgCi0gICAgICovCi0gICAgUkVHSVNURVJfTUlCKCJtaWJJSS9zeXN0ZW0iLCBzeXN0ZW1fdmFyaWFibGVzLCB2YXJpYWJsZTEsCi0gICAgICAgICAgICAgICAgIHN5c3RlbV92YXJpYWJsZXNfb2lkKTsKLQorICAgIHsKKyAgICAgICAgY29uc3Qgb2lkIHN5c0Rlc2NyX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCAxIH07CisgICAgICAgIHN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBzeXNEZXNjcl93aW5mbzsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zeXNEZXNjciIsIE5VTEwsIHN5c0Rlc2NyX29pZCwgT0lEX0xFTkdUSChzeXNEZXNjcl9vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oJnN5c0Rlc2NyX3dpbmZvLCB2ZXJzaW9uX2Rlc2NyLCAwLAorCQkJCSAgICAgIEFTTl9PQ1RFVF9TVFIsIFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyAgICB9CisgICAgeworICAgICAgICBjb25zdCBvaWQgc3lzT2JqZWN0SURfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDIgfTsKKyAgICAgICAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIHN5c09iamVjdElEX3dpbmZvOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm1pYklJL3N5c09iamVjdElEIiwgTlVMTCwKKyAgICAgICAgICAgICAgICBzeXNPYmplY3RJRF9vaWQsIE9JRF9MRU5HVEgoc3lzT2JqZWN0SURfb2lkKSwKKyAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCisgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvNigKKwkJJnN5c09iamVjdElEX3dpbmZvLCBzeXNPYmplY3RJRCwgMCwgQVNOX09CSkVDVF9JRCwKKyAgICAgICAgICAgICAgICBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX0lTX1BUUiwKKyAgICAgICAgICAgICAgICBNQVhfT0lEX0xFTiwgJnN5c09iamVjdElEQnl0ZUxlbmd0aCkpOworICAgIH0KKyAgICB7CisgICAgICAgIGNvbnN0IG9pZCBzeXNVcFRpbWVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDMgfTsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIoCisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc3lzVXBUaW1lIiwgaGFuZGxlX3N5c1VwVGltZSwKKyAgICAgICAgICAgICAgICBzeXNVcFRpbWVfb2lkLCBPSURfTEVOR1RIKHN5c1VwVGltZV9vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgY29uc3Qgb2lkIHN5c0NvbnRhY3Rfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDQgfTsKKyAgICAgICAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIHN5c0NvbnRhY3Rfd2luZm87CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm1pYklJL3N5c0NvbnRhY3QiLCBzeXNDb250YWN0X29pZCwgT0lEX0xFTkdUSChzeXNDb250YWN0X29pZCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCAmc3lzQ29udGFjdFNldCksCisgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAorCQkmc3lzQ29udGFjdF93aW5mbywgc3lzQ29udGFjdCwgU1lTX1NUUklOR19MRU4gLSAxLAorCQlBU05fT0NURVRfU1RSLCBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX1NUUkxFTikpOworICAgIH0KKyAgICB7CisgICAgICAgIGNvbnN0IG9pZCBzeXNOYW1lX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCA1IH07CisgICAgICAgIHN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBzeXNOYW1lX3dpbmZvOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zeXNOYW1lIiwgc3lzTmFtZV9vaWQsIE9JRF9MRU5HVEgoc3lzTmFtZV9vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgJnN5c05hbWVTZXQpLAorICAgICAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAmc3lzTmFtZV93aW5mbywgc3lzTmFtZSwgU1lTX1NUUklOR19MRU4gLSAxLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgIFdBVENIRVJfTUFYX1NJWkUgfCBXQVRDSEVSX1NJWkVfU1RSTEVOKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgY29uc3Qgb2lkIHN5c0xvY2F0aW9uX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCA2IH07CisgICAgICAgIHN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBzeXNMb2NhdGlvbl93aW5mbzsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc3lzTG9jYXRpb24iLCBzeXNMb2NhdGlvbl9vaWQsCisgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzeXNMb2NhdGlvbl9vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgJnN5c0xvY2F0aW9uU2V0KSwKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCisJCSZzeXNMb2NhdGlvbl93aW5mbywgc3lzTG9jYXRpb24sIFNZU19TVFJJTkdfTEVOIC0gMSwKKwkJQVNOX09DVEVUX1NUUiwgV0FUQ0hFUl9NQVhfU0laRSB8IFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyAgICB9CisgICAgeworICAgICAgICBjb25zdCBvaWQgc3lzU2VydmljZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDcgfTsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X3NjYWxhcigKKyAgICAgICAgICAgICJtaWJJSS9zeXNTZXJ2aWNlcyIsIHN5c1NlcnZpY2VzX29pZCwgT0lEX0xFTkdUSChzeXNTZXJ2aWNlc19vaWQpLAorICAgICAgICAgICAgJnN5c1NlcnZpY2VzLCBoYW5kbGVfc3lzU2VydmljZXMpOworICAgIH0KICAgICBpZiAoKytzeXN0ZW1fbW9kdWxlX2NvdW50ID09IDMpCiAgICAgICAgIFJFR0lTVEVSX1NZU09SX0VOVFJZKHN5c3RlbV9tb2R1bGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIE1JQiBtb2R1bGUgZm9yIFNOTVB2MiBlbnRpdGllcyIpOwpAQCAtNDU2LDE4NyArNDI2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0lEIik7CiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksIFNOTVBfQ0FMTEJBQ0tfU1RPUkVfREFUQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zdG9yZSwgTlVMTCk7Ci0KIH0KIAotCi0gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKLQkgKgotCSAqICBTeXN0ZW0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCi0JICoKLQkgKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKLWV4dGVybiBzdHJ1Y3QgdGltZXZhbCBzeXNPUl9sYXN0Y2hhbmdlOwotI2VuZGlmCi0KLXVfY2hhciAgICAgICAgICoKLXZhcl9zeXN0ZW0oc3RydWN0IHZhcmlhYmxlICp2cCwKLSAgICAgICAgICAgb2lkICogbmFtZSwKLSAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKLXsKLSAgICBzdGF0aWMgdV9sb25nICAgdWxyZXQ7Ci0KLSAgICBpZiAoaGVhZGVyX2dlbmVyaWModnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCkgPT0KLSAgICAgICAgTUFUQ0hfRkFJTEVEKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBWRVJTSU9OX0RFU0NSOgotICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbih2ZXJzaW9uX2Rlc2NyKTsKLSAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgdmVyc2lvbl9kZXNjcjsKLSAgICBjYXNlIFZFUlNJT05JRDoKLSAgICAgICAgKnZhcl9sZW4gPSBzeXNPYmplY3RJRExlbmd0aCAqIHNpemVvZihzeXNPYmplY3RJRFswXSk7Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopc3lzT2JqZWN0SUQ7Ci0gICAgY2FzZSBVUFRJTUU6Ci0gICAgICAgIHVscmV0ID0gbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCk7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAmIHVscmV0KTsKLSAgICBjYXNlIFNZU0NPTlRBQ1Q6Ci0gICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN5c0NvbnRhY3QpOwotICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVTeXN0ZW07Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopIHN5c0NvbnRhY3Q7Ci0gICAgY2FzZSBTWVNURU1OQU1FOgotICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihzeXNOYW1lKTsKLSAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlU3lzdGVtOwotICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBzeXNOYW1lOwotICAgIGNhc2UgU1lTTE9DQVRJT046Ci0gICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN5c0xvY2F0aW9uKTsKLSAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlU3lzdGVtOwotICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBzeXNMb2NhdGlvbjsKLSAgICBjYXNlIFNZU1NFUlZJQ0VTOgotI2lmIE5FVFNOTVBfTk9fRFVNTVlfVkFMVUVTCi0gICAgICAgIGlmICghc3lzU2VydmljZXNDb25maWdlZCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotI2VuZGlmCi0gICAgICAgIGxvbmdfcmV0dXJuID0gc3lzU2VydmljZXM7Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0KLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQotICAgIGNhc2UgU1lTT1JMQVNUQ0hBTkdFOgotICAgICAgICB1bHJldCA9IG5ldHNubXBfdGltZXZhbF91cHRpbWUoJnN5c09SX2xhc3RjaGFuZ2UpOwotICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgJiB1bHJldCk7Ci0jZW5kaWYKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZCIsICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfc3lzdGVtXG4iLAotICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLQotCi1pbnQKLXdyaXRlU3lzdGVtKGludCBhY3Rpb24sCi0gICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLAotICAgICAgICAgICAgdV9jaGFyIHZhcl92YWxfdHlwZSwKLSAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwKLSAgICAgICAgICAgIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCi17Ci0gICAgdV9jaGFyICAgICAgICAgKmNwOwotICAgIGNoYXIgICAgICAgICAgICpidWYgPSBOVUxMLCAqb2xkYnVmID0gTlVMTDsKLSAgICBpbnQgICAgICAgICAgICAgY291bnQsICpzZXR2YXIgPSBOVUxMOwotCi0gICAgc3dpdGNoICgoY2hhcikgbmFtZVs3XSkgewotICAgIGNhc2UgVkVSU0lPTl9ERVNDUjoKLSAgICBjYXNlIFZFUlNJT05JRDoKLSAgICBjYXNlIFVQVElNRToKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkF0dGVtcHQgdG8gd3JpdGUgdG8gUi9PIE9JRFxuIik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKLSAgICBjYXNlIFNZU0NPTlRBQ1Q6Ci0gICAgICAgIGJ1ZiA9IHN5c0NvbnRhY3Q7Ci0gICAgICAgIG9sZGJ1ZiA9IG9sZHN5c0NvbnRhY3Q7Ci0gICAgICAgIHNldHZhciA9ICZzeXNDb250YWN0U2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNZU1RFTU5BTUU6Ci0gICAgICAgIGJ1ZiA9IHN5c05hbWU7Ci0gICAgICAgIG9sZGJ1ZiA9IG9sZHN5c05hbWU7Ci0gICAgICAgIHNldHZhciA9ICZzeXNOYW1lU2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNZU0xPQ0FUSU9OOgotICAgICAgICBidWYgPSBzeXNMb2NhdGlvbjsKLSAgICAgICAgb2xkYnVmID0gb2xkc3lzTG9jYXRpb247Ci0gICAgICAgIHNldHZhciA9ICZzeXNMb2NhdGlvblNldDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTWVNTRVJWSUNFUzoKLSAgICBjYXNlIFNZU09STEFTVENIQU5HRToKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkF0dGVtcHQgdG8gd3JpdGUgdG8gUi9PIE9JRFxuIik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOyAvKiA/Pz8gKi8KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKGFjdGlvbikgewotICAgIGNhc2UgUkVTRVJWRTE6ICAgICAgICAgICAgIC8qIENoZWNrIHZhbHVlcyBmb3IgYWNjZXB0YWJpbGl0eSAqLwotICAgICAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9PQ1RFVF9TVFIpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJub3Qgc3RyaW5nXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHZhcl92YWxfbGVuID4gc2l6ZW9mKHN5c0xvY2F0aW9uKSAtIDEpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJiYWQgbGVuZ3RoXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0xFTkdUSDsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoY3AgPSB2YXJfdmFsLCBjb3VudCA9IDA7IGNvdW50IDwgKGludCkgdmFyX3ZhbF9sZW47Ci0gICAgICAgICAgICAgY291bnQrKywgY3ArKykgewotICAgICAgICAgICAgaWYgKCFpc3ByaW50KCpjcCkpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm90IHByaW50ICV4XG4iLCAqY3ApOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChzZXR2YXIgIT0gTlVMTCAmJiAqc2V0dmFyIDwgMCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFRoZSBvYmplY3QgaXMgc2V0IGluIGEgcmVhZC1vbmx5IGNvbmZpZ3VyYXRpb24gZmlsZS4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFJFU0VSVkUyOiAgICAgICAgICAgICAvKiBBbGxvY2F0ZSBtZW1vcnkgYW5kIHNpbWlsYXIgcmVzb3VyY2VzICovCi0KLSAgICAgICAgLyoKLSAgICAgICAgICogVXNpbmcgc3RhdGljIHN0cmluZ3MsIHNvIG5vdGhpbmcgbmVlZHMgdG8gYmUgZG9uZSAKLSAgICAgICAgICovCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQ1RJT046ICAgICAgICAgICAgICAgLyogUGVyZm9ybSB0aGUgU0VUIGFjdGlvbiAoaWYgcmV2ZXJzaWJsZSkgKi8KLQotICAgICAgICAvKgotICAgICAgICAgKiBTYXZlIHRoZSBvbGQgdmFsdWUsIGluIGNhc2Ugb2YgVU5ETyAKLSAgICAgICAgICovCi0gICAgICAgIHN0cmNweShvbGRidWYsIGJ1Zik7Ci0gICAgICAgIG1lbWNweShidWYsIHZhcl92YWwsIHZhcl92YWxfbGVuKTsKLSAgICAgICAgYnVmW3Zhcl92YWxfbGVuXSA9IDA7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBVTkRPOiAgICAgICAgICAgICAgICAgLyogUmV2ZXJzZSB0aGUgU0VUIGFjdGlvbiBhbmQgZnJlZSByZXNvdXJjZXMgKi8KLQotICAgICAgICBzdHJjcHkoYnVmLCBvbGRidWYpOwotICAgICAgICBvbGRidWZbMF0gPSAwOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ09NTUlUOgotICAgICAgICBpZiAoc2V0dmFyICE9IE5VTEwpIHsKLSAgICAgICAgICAgICpzZXR2YXIgPSAxOwotICAgICAgICB9Ci0gICAgICAgIHNubXBfc2F2ZV9wZXJzaXN0ZW50KG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpKTsKLSAgICAgICAgKHZvaWQpIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19MSUJSQVJZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsIE5VTEwpOwotICAgICAgICBzbm1wX2NsZWFuX3BlcnNpc3RlbnQobmV0c25tcF9kc19nZXRfc3RyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9BUFBUWVBFKSk7Ci0KLSAgICBjYXNlIEZSRUU6ICAgICAgICAgICAgICAgICAvKiBGcmVlIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkICovCi0KLSAgICAgICAgLyoKLSAgICAgICAgICogTm8gcmVzb3VyY2VzIGhhdmUgYmVlbiBhbGxvY2F0ZWQsIGJ1dCAiZW1wdHkiIHRoZSAnb2xkYnVmJyAKLSAgICAgICAgICovCi0gICAgICAgIG9sZGJ1ZlswXSA9IDA7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIG9mIHdyaXRlU3lzdGVtICovCi0KICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCiAJICogIEludGVybmFsIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucyAtIE5vbmUKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuaAppbmRleCBlYzMzMTJkLi5kZDE2ZjA4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5oCkBAIC0xLDMxICsxLDE2IEBACi0vKgotICogIFN5c3RlbSBNSUIgZ3JvdXAgaW50ZXJmYWNlIC0gc3lzdGVtLmgKLSAqCi0gKi8KICNpZm5kZWYgX01JQkdST1VQX1NZU1RFTV9NSUJfSAogI2RlZmluZSBfTUlCR1JPVVBfU1lTVEVNX01JQl9ICiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCiAKLSAgICAgZXh0ZXJuIGNoYXIgICAgIHZlcnNpb25fZGVzY3JbXTsKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MgbWliSUkvdXBkYXRlcykKIAotICAgICB2b2lkICAgICAgICAgICAgaW5pdF9zeXN0ZW1fbWliKHZvaWQpOwotICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfc3lzdGVtOwordm9pZCBpbml0X3N5c3RlbV9taWIodm9pZCk7CiAKLS8qCi0gKiBjb25maWcgZmlsZSBwYXJzaW5nIHJvdXRpbmVzIAotICovCi0gICAgIHZvaWQgICAgICAgICAgICBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c2xvYyhjb25zdCBjaGFyICosIGNoYXIgKik7Ci0gICAgIHZvaWQgICAgICAgICAgICBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c2Nvbihjb25zdCBjaGFyICosIGNoYXIgKik7Ci0gICAgIHZvaWQgICAgICAgICAgICBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c25hbWUoY29uc3QgY2hhciAqLCBjaGFyICopOwotCi0jZGVmaW5lCVZFUlNJT05fREVTQ1IJCTEKLSNkZWZpbmUJVkVSU0lPTklECQkyCi0jZGVmaW5lCVVQVElNRQkJCTMKLSNkZWZpbmUgU1lTQ09OVEFDVAkJNAotI2RlZmluZSBTWVNURU1OQU1FCQk1Ci0jZGVmaW5lIFNZU0xPQ0FUSU9OCQk2Ci0jZGVmaW5lIFNZU1NFUlZJQ0VTCQk3Ci0jZGVmaW5lIFNZU09STEFTVENIQU5HRQkJOAorI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfU1lTVEVNX01JQl9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3AuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5jCmluZGV4IGJjMmUyZDAuLmQ5NWNiOTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5jCkBAIC00OSwxMSArNDksMTEgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgiCiAjaW5jbHVkZSAidGNwLmgiCiAjaW5jbHVkZSAidGNwVGFibGUuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCiAKICNpZm5kZWYgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQKICNkZWZpbmUgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQJNQpAQCAtMzg5LDcgKzM4OSw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVENQSU5FUlJTOgogICAgICAgICByZXRfdmFsdWUgPSB0Y3BzdGF0LnRjcHNfcmN2YmFkc3VtICsgdGNwc3RhdC50Y3BzX3JjdmJhZG9mZgotI2lmZGVmIFNUUlVDVF9UQ1BTVEFUX0hBU19UQ1BTX1JDVk1FTURST1AKKyNpZmRlZiBIQVZFX1NUUlVDVF9UQ1BTVEFUX1RDUFNfUkNWTUVNRFJPUAogICAgICAgICAgICAgKyB0Y3BzdGF0LnRjcHNfcmN2bWVtZHJvcAogI2VuZGlmCiAgICAgICAgICAgICArIHRjcHN0YXQudGNwc19yY3ZzaG9ydDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmgKaW5kZXggOTI2ZGY0OS4uMDQ5ZGRkMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmgKQEAgLTYsNyArNiw3IEBACiAjZGVmaW5lIF9NSUJHUk9VUF9UQ1BfSAogCiAKLWNvbmZpZ19yZXF1aXJlKG1pYklJL3RjcFRhYmxlIHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZShtaWJJSS90Y3BUYWJsZSkKIAogY29uZmlnX2FyY2hfcmVxdWlyZShzb2xhcmlzMiwgICAgICAgIGtlcm5lbF9zdW5vczUpCiBjb25maWdfYXJjaF9yZXF1aXJlKGxpbnV4LCAgICAgbWliSUkva2VybmVsX2xpbnV4KQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMKaW5kZXggMmIxYzJjNi4uOTM2OGM4OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jCkBAIC0yOSw2ICsyOSwxMSBAQAogI2lmIEhBVkVfTkVUSU5FVF9UQ1BfVkFSX0gKICNpbmNsdWRlIDxuZXRpbmV0L3RjcF92YXIuaD4KICNlbmRpZgorI2lmIEhBVkVfTkVUTElOS19ORVRMSU5LX0gKKyNpbmNsdWRlIDxuZXRsaW5rL25ldGxpbmsuaD4KKyNpbmNsdWRlIDxuZXRsaW5rL21zZy5oPgorI2luY2x1ZGUgPGxpbnV4L2luZXRfZGlhZy5oPgorI2VuZGlmCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0zNiw3ICs0MSw2IEBACiAKICNpbmNsdWRlICJ0Y3AuaCIKICNpbmNsdWRlICJ0Y3BUYWJsZS5oIgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKIAogI2lmZGVmIGhwdXgxMQogI2RlZmluZQlUQ1BUQUJMRV9FTlRSWV9UWVBFCW1pYl90Y3BDb25uRW50IApAQCAtMTI5LDExICsxMzMsMTEgQEAKICNkZWZpbmUgVENQX1BPUlRfVE9fSE9TVF9PUkRFUih4KSBudG9ocyh4KQogI2VuZGlmCiAKLW9pZCAgICAgICAgICAgICB0Y3BUYWJsZV9vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgNiwgMTMgfTsKLQogdm9pZAogaW5pdF90Y3BUYWJsZSh2b2lkKQogeworICAgIGNvbnN0IG9pZCB0Y3BUYWJsZV9vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgNiwgMTMgfTsKKwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICAgICAgICAgICAqaWluZm87CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnaW5mbzsKQEAgLTQwNCw3ICs0MDgsNyBAQAogICAgICAqIFhYWCAtIEhvdyBjYW4gd2UgdGVsbCBpZiB0aGUgY2FjaGUgaXMgdmFsaWQ/CiAgICAgICogICAgICAgTm8gYWNjZXNzIHRvICdyZXFpbmZvJwogICAgICAqLwotICAgIGlmICh0Y3BfaGVhZCA9PSAwKQorICAgIGlmICh0Y3BfaGVhZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qCkBAIC01NDcsNiArNTUxLDExOCBAQAogI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBocHV4MTEgKi8KIAogI2lmZGVmIGxpbnV4CisKKy8qICBzZWUgPG5ldGluZXQvdGNwLmg+ICovCisjZGVmaW5lIFRDUF9BTEwgKCgxIDw8IChUQ1BfQ0xPU0lORyArIDEpKSAtIDEpCisKK2NvbnN0IHN0YXRpYyBpbnQgbGludXhfc3RhdGVzWzEyXSA9IHsgMSwgNSwgMywgNCwgNiwgNywgMTEsIDEsIDgsIDksIDIsIDEwIH07CisKKyNpZiBIQVZFX05FVExJTktfTkVUTElOS19ICitzdGF0aWMgaW50Cit0Y3BUYWJsZV9sb2FkX25ldGxpbmsodm9pZCkKK3sKKwkvKiAgVE9ETzogcGVyaGFwcyB1c2UgcGVybWFuZW50IG5sIGhhbmRsZT8gKi8KKwlzdHJ1Y3QgbmxfaGFuZGxlICpubCA9IG5sX2hhbmRsZV9hbGxvYygpOworCXN0cnVjdCBpbmV0X2RpYWdfcmVxIHJlcSA9IHsKKwkJLmlkaWFnX2ZhbWlseSA9IEFGX0lORVQsCisJCS5pZGlhZ19zdGF0ZXMgPSBUQ1BfQUxMLAorCX07CisKKwlzdHJ1Y3QgbmxfbXNnICpubTsKKworCXN0cnVjdCBzb2NrYWRkcl9ubCBwZWVyOworCXVuc2lnbmVkIGNoYXIgKmJ1ZiA9IE5VTEw7CisJaW50IHJ1bm5pbmcgPSAxLCBsZW47CisKKwlpZiAobmwgPT0gTlVMTCkgeworCQlERUJVR01TR1RMKCgibWliSUkvdGNwVGFibGUiLCAiRmFpbGVkIHRvIGFsbG9jYXRlIG5ldGxpbmsgaGFuZGxlXG4iKSk7CisJCXNubXBfbG9nKExPR19FUlIsICJzbm1wZDogRmFpbGVkIHRvIGFsbG9jYXRlIG5ldGxpbmsgaGFuZGxlXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmIChubF9jb25uZWN0KG5sLCBORVRMSU5LX0lORVRfRElBRykgPCAwKSB7CisJCURFQlVHTVNHVEwoKCJtaWJJSS90Y3BUYWJsZSIsICJGYWlsZWQgdG8gY29ubmVjdCB0byBuZXRsaW5rOiAlc1xuIiwgbmxfZ2V0ZXJyb3IoKSkpOworCQlzbm1wX2xvZyhMT0dfRVJSLCAic25tcGQ6IENvdWxkbid0IGNvbm5lY3QgdG8gbmV0bGluazogJXNcbiIsIG5sX2dldGVycm9yKCkpOworCQlubF9oYW5kbGVfZGVzdHJveShubCk7CisJCXJldHVybiAtMTsKKwl9CisKKwlubSA9IG5sbXNnX2FsbG9jX3NpbXBsZShUQ1BESUFHX0dFVFNPQ0ssIE5MTV9GX1JPT1R8TkxNX0ZfTUFUQ0h8TkxNX0ZfUkVRVUVTVCk7CisJbmxtc2dfYXBwZW5kKG5tLCAmcmVxLCBzaXplb2Yoc3RydWN0IGluZXRfZGlhZ19yZXEpLCAwKTsKKworCWlmIChubF9zZW5kX2F1dG9fY29tcGxldGUobmwsIG5tKSA8IDApIHsKKwkJREVCVUdNU0dUTCgoIm1pYklJL3RjcFRhYmxlIiwgIm5sX3NlbmRfYXV0b2NvbXBsZXRlKCk6ICVzXG4iLCBubF9nZXRlcnJvcigpKSk7CisJCXNubXBfbG9nKExPR19FUlIsICJzbm1wZDogbmxfc2VuZF9hdXRvY29tcGxldGUoKTogJXNcbiIsIG5sX2dldGVycm9yKCkpOworCQlubF9oYW5kbGVfZGVzdHJveShubCk7CisJCXJldHVybiAtMTsKKwl9CisJbmxtc2dfZnJlZShubSk7CisKKwl3aGlsZSAocnVubmluZykgeworCQlzdHJ1Y3Qgbmxtc2doZHIgKmg7CisJCWlmICgobGVuID0gbmxfcmVjdihubCwgJnBlZXIsICZidWYsIE5VTEwpKSA8PSAwKSB7CisJCQlERUJVR01TR1RMKCgibWliSUkvdGNwVGFibGUiLCAibmxfcmVjdigpOiAlc1xuIiwgbmxfZ2V0ZXJyb3IoKSkpOworCQkJc25tcF9sb2coTE9HX0VSUiwgInNubXBkOiBubF9yZWN2KCk6ICVzXG4iLCBubF9nZXRlcnJvcigpKTsKKwkJCW5sX2hhbmRsZV9kZXN0cm95KG5sKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCWggPSAoc3RydWN0IG5sbXNnaGRyKilidWY7CisKKwkJd2hpbGUgKG5sbXNnX29rKGgsIGxlbikpIHsKKwkJCXN0cnVjdCBpbmV0X2RpYWdfbXNnICpyID0gbmxtc2dfZGF0YShoKTsKKwkJCXN0cnVjdCBpbnBjYiAgICBwY2IsICpubmV3OworCisJCQlpZiAoaC0+bmxtc2dfdHlwZSA9PSBOTE1TR19ET05FKSB7CisJCQkJcnVubmluZyA9IDA7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCXIgPSBubG1zZ19kYXRhKGgpOworCisJCQlpZiAoci0+aWRpYWdfZmFtaWx5ICE9IEFGX0lORVQpIHsKKwkJCQloID0gbmxtc2dfbmV4dChoLCAmbGVuKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJbWVtY3B5KCZwY2IuaW5wX2xhZGRyLnNfYWRkciwgci0+aWQuaWRpYWdfc3JjLCByLT5pZGlhZ19mYW1pbHkgPT0gQUZfSU5FVCA/IDQgOiA2KTsKKwkJCW1lbWNweSgmcGNiLmlucF9mYWRkci5zX2FkZHIsIHItPmlkLmlkaWFnX2RzdCwgci0+aWRpYWdfZmFtaWx5ID09IEFGX0lORVQgPyA0IDogNik7CisKKwkJCXBjYi5pbnBfbHBvcnQgPSByLT5pZC5pZGlhZ19zcG9ydDsKKwkJCXBjYi5pbnBfZnBvcnQgPSByLT5pZC5pZGlhZ19kcG9ydDsKKworCQkJcGNiLmlucF9zdGF0ZSA9IChyLT5pZGlhZ19zdGF0ZSAmIDB4ZikgPCAxMiA/IGxpbnV4X3N0YXRlc1tyLT5pZGlhZ19zdGF0ZSAmIDB4Zl0gOiAyOworCQkJaWYgKHBjYi5pbnBfc3RhdGUgPT0gNSAvKiBlc3RhYmxpc2hlZCAqLyB8fAorCQkJCXBjYi5pbnBfc3RhdGUgPT0gOCAvKiAgY2xvc2VXYWl0ICAqLyApCisJCQkJdGNwX2VzdGFiKys7CisJCQlwY2IudWlkID0gci0+aWRpYWdfdWlkOworCisJCQlubmV3ID0gU05NUF9NQUxMT0NfVFlQRURFRihzdHJ1Y3QgaW5wY2IpOworCQkJaWYgKG5uZXcgPT0gTlVMTCkgeworCQkJCXJ1bm5pbmcgPSAwOworCQkJCS8qICBYWFggcmVwb3J0IG1hbGxvYyBlcnJvciBhbmQgcmV0dXJuIC0xPyAqLworCQkJCWJyZWFrOworCQkJfQorCQkJbWVtY3B5KG5uZXcsICZwY2IsIHNpemVvZihzdHJ1Y3QgaW5wY2IpKTsKKwkJCW5uZXctPmlucF9uZXh0ID0gdGNwX2hlYWQ7CisJCQl0Y3BfaGVhZCAgICAgICA9IG5uZXc7CisKKwkJCWggPSBubG1zZ19uZXh0KGgsICZsZW4pOworCQl9CisJCWZyZWUoYnVmKTsKKwl9CisKKwlubF9oYW5kbGVfZGVzdHJveShubCk7CisKKwlpZiAodGNwX2hlYWQpIHsKKwkJREVCVUdNU0dUTCgoIm1pYklJL3RjcFRhYmxlIiwgIkxvYWRlZCBUQ1AgVGFibGUgdXNpbmcgbmV0bGlua1xuIikpOworCQlyZXR1cm4gMDsKKwl9CisJREVCVUdNU0dUTCgoIm1pYklJL3RjcFRhYmxlIiwgIkZhaWxlZCB0byBsb2FkIFRDUCBUYWJsZSAobmV0bGluaylcbiIpKTsKKwlyZXR1cm4gLTE7Cit9CisjZW5kaWYKKwogaW50CiB0Y3BUYWJsZV9sb2FkKG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICp2bWFnaWMpCiB7CkBAIC01NTUsNiArNjcxLDEyIEBACiAKICAgICB0Y3BUYWJsZV9mcmVlKGNhY2hlLCBOVUxMKTsKIAorI2lmIEhBVkVfTkVUTElOS19ORVRMSU5LX0gKKwlpZiAodGNwVGFibGVfbG9hZF9uZXRsaW5rKCkgPT0gMCkgeworCQlyZXR1cm4gMDsKKwl9CisjZW5kaWYKKwogICAgIGlmICghKGluID0gZm9wZW4oIi9wcm9jL25ldC90Y3AiLCAiciIpKSkgewogICAgICAgICBERUJVR01TR1RMKCgibWliSUkvdGNwVGFibGUiLCAiRmFpbGVkIHRvIGxvYWQgVENQIFRhYmxlIChsaW51eDEpXG4iKSk7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJzbm1wZDogY2Fubm90IG9wZW4gL3Byb2MvbmV0L3RjcCAuLi5cbiIpOwpAQCAtNTY4LDggKzY5MCw2IEBACiAgICAgICovCiAgICAgd2hpbGUgKGxpbmUgPT0gZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKICAgICAgICAgc3RydWN0IGlucGNiICAgIHBjYiwgKm5uZXc7Ci0gICAgICAgIHN0YXRpYyBpbnQgICAgICBsaW51eF9zdGF0ZXNbMTJdID0KLSAgICAgICAgICAgIHsgMSwgNSwgMywgNCwgNiwgNywgMTEsIDEsIDgsIDksIDIsIDEwIH07CiAgICAgICAgIGludCAgICAgICAgICAgICBzdGF0ZSwgbHAsIGZwLCB1aWQ7CiAKICAgICAgICAgaWYgKDYgIT0gc3NjYW5mKGxpbmUsCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuaAppbmRleCBhNWE2Zjc2Li41NWZlOTdiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmgKQEAgLTYsNyArNiw2IEBACiAjZGVmaW5lIF9NSUJHUk9VUF9UQ1BUQUJMRV9ICiAKIGNvbmZpZ19hcmNoX3JlcXVpcmUoc29sYXJpczIsIGtlcm5lbF9zdW5vczUpCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQogI2lmICFkZWZpbmVkKE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUykKIGNvbmZpZ19yZXF1aXJlKG1pYklJL2lwKQogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS91ZHAuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5jCmluZGV4IGUxNWEyZGUuLjgzMmQzMmYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5jCkBAIC0xNiwxNSArMTYsMTUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgiCiAKICNpZmRlZiBsaW51eAogI2luY2x1ZGUgInRjcC5oIgogI2VuZGlmCiAjaW5jbHVkZSAidWRwLmgiCiAjaW5jbHVkZSAidWRwVGFibGUuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCiAKICNpZmRlZiBORVRTTk1QX0NBTl9VU0VfU1lTQ1RMCiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgpAQCAtMjM1LDcgKzIzNSw3IEBACiAjZGVmaW5lIHVkcHN0YXQgICAgICAgICAgdWRwc3RhdC51ZHBzdGF0CiAjZW5kaWYKICAgICBjYXNlIFVEUElOREFUQUdSQU1TOgotI2lmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX0lQQUNLRVRTCisjaWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0lQQUNLRVRTCiAgICAgICAgIHJldF92YWx1ZSA9IHVkcHN0YXQudWRwc19pcGFja2V0czsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtMjQ0LDcgKzI0NCw3IEBACiAjZW5kaWYKIAogICAgIGNhc2UgVURQTk9QT1JUUzoKLSNpZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19OT1BPUlQKKyNpZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfTk9QT1JUCiAgICAgICAgIHJldF92YWx1ZSA9IHVkcHN0YXQudWRwc19ub3BvcnQ7CiAgICAgICAgIGJyZWFrOwogI2Vsc2UKQEAgLTI1Myw3ICsyNTMsNyBAQAogI2VuZGlmCiAKICAgICBjYXNlIFVEUE9VVERBVEFHUkFNUzoKLSNpZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19PUEFDS0VUUworI2lmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19PUEFDS0VUUwogICAgICAgICByZXRfdmFsdWUgPSB1ZHBzdGF0LnVkcHNfb3BhY2tldHM7CiAgICAgICAgIGJyZWFrOwogI2Vsc2UKQEAgLTI2MywxMCArMjYzLDEwIEBACiAKICAgICBjYXNlIFVEUElORVJST1JTOgogICAgICAgICByZXRfdmFsdWUgPSB1ZHBzdGF0LnVkcHNfaGRyb3BzICsgdWRwc3RhdC51ZHBzX2JhZHN1bSArCi0jaWZkZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRElTQ0FSRAorI2lmZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19ESVNDQVJECiAgICAgICAgICAgICB1ZHBzdGF0LnVkcHNfZGlzY2FyZCArCiAjZW5kaWYKLSNpZmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19GVUxMU09DSworI2lmZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19GVUxMU09DSwogICAgICAgICAgICAgdWRwc3RhdC51ZHBzX2Z1bGxzb2NrICsKICNlbmRpZgogICAgICAgICAgICAgdWRwc3RhdC51ZHBzX2JhZGxlbjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmgKaW5kZXggMDgxNmYwMS4uOWQ0NjcxYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmgKQEAgLTYsNyArNiw3IEBACiAjZGVmaW5lIF9NSUJHUk9VUF9VRFBfSAogCiAKLWNvbmZpZ19yZXF1aXJlKG1pYklJL3VkcFRhYmxlIHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZShtaWJJSS91ZHBUYWJsZSkKIAogY29uZmlnX2FyY2hfcmVxdWlyZShzb2xhcmlzMiwgICAgICAgIGtlcm5lbF9zdW5vczUpCiBjb25maWdfYXJjaF9yZXF1aXJlKGxpbnV4LCAgICAgbWliSUkva2VybmVsX2xpbnV4KQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMKaW5kZXggNTdlOTY3Yy4uODdkMWM1NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jCkBAIC0zMyw3ICszMyw2IEBACiAjZW5kaWYKICNpbmNsdWRlICJ1ZHAuaCIKICNpbmNsdWRlICJ1ZHBUYWJsZS5oIgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKIAogI2lmZGVmIGhwdXgxMQogI2RlZmluZQlVRFBUQUJMRV9FTlRSWV9UWVBFCW1pYl91ZHBMc25FbnQgCkBAIC0xNTEsNiArMTUwLDcgQEAKICAgICAgKi8KICAgICBpaW5mbyAgICAgID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2l0ZXJhdG9yX2luZm8pOwogICAgIGlmICghaWluZm8pIHsKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlpbmZvLT5nZXRfZmlyc3RfZGF0YV9wb2ludCA9IHVkcFRhYmxlX2ZpcnN0X2VudHJ5OwpAQCAtMzQ5LDcgKzM0OSw3IEBACiAgICAgICogWFhYIC0gSG93IGNhbiB3ZSB0ZWxsIGlmIHRoZSBjYWNoZSBpcyB2YWxpZD8KICAgICAgKiAgICAgICBObyBhY2Nlc3MgdG8gJ3JlcWluZm8nCiAgICAgICovCi0gICAgaWYgKHVkcF9oZWFkID09IDApCisgICAgaWYgKHVkcF9oZWFkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5oCmluZGV4IDJjNjFjZGEuLmY5YWZkNWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuaApAQCAtNiw3ICs2LDcgQEAKICNkZWZpbmUgX01JQkdST1VQX1VEUFRBQkxFX0gKIAogY29uZmlnX2FyY2hfcmVxdWlyZShzb2xhcmlzMiwga2VybmVsX3N1bm9zNSkKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MgbWliSUkvaXApCitjb25maWdfcmVxdWlyZShtaWJJSS9pcCkKIAogZXh0ZXJuIHZvaWQgICAgIGluaXRfdWRwVGFibGUodm9pZCk7CiBleHRlcm4gTmV0c25tcF9Ob2RlX0hhbmRsZXIgdWRwVGFibGVfaGFuZGxlcjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGQ1ODM2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5jCkBAIC0wLDAgKzEsNDEgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKK3N0YXRpYyBpbnQKK2hhbmRsZV91cGRhdGVzKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICpzZXQgPSAoaW50KiloYW5kbGVyLT5teXZvaWQ7CisKKyAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMSAmJiAqc2V0IDwgMCkKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcihyZXF1ZXN0cywgU05NUF9FUlJfTk9UV1JJVEFCTEUpOworICAgIGVsc2UgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfQ09NTUlUKQorICAgICAgICAqc2V0ID0gMTsKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbioKK25ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBvaWQqIGlkLCBzaXplX3QgaWRsZW4sIGludCBtb2RlLCBpbnQqIHNldCkKK3sKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZXM7CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaG5kOworCisgICAgaG5kID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcigidXBkYXRlIiwgaGFuZGxlX3VwZGF0ZXMpOworICAgIGlmIChobmQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBobmQtPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVDsKKyAgICBobmQtPm15dm9pZCA9IHNldDsKKworICAgIHJlcyA9IG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKG5hbWUsIGhuZCwgaWQsIGlkbGVuLCBtb2RlKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaG5kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlczsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDE0ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5oCkBAIC0wLDAgKzEsMTYgQEAKKyNpZm5kZWYgVVBEQVRFU19ICisjZGVmaW5lIFVQREFURVNfSAorCisvKioKKyAqIENyZWF0ZSBhIGhhbmRsZXJfcmVnaXN0cmF0aW9uIHRoYXQgY2hlY2tzICpzZXQgdG8gZGV0ZXJtaW5lIGhvdyB0byBwcm9jZWVkZSwKKyAqIGlmICpzZXQgaXMgbGVzcyB0aGFuIDAgdGhlbiB0aGUgb2JqZWN0IGlzIG5vbndyaXRlYWJsZSwgb3RoZXJ3aXNlLCAqc2V0IGlzCisgKiBzZXQgdG8gMSBpbiB0aGUgY29tbWl0IHBoYXNlLiBBbGwgb3RoZXIgcGFyYW1ldGVycyBhcmUgYXMgaW4KKyAqIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uLgorICovCisKK2V4dGVybiBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uKgorbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkKiBpZCwgc2l6ZV90IGlkbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2RlLCBpbnQqIHNldCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYwppbmRleCA3ZDc4YTFmLi44YjJhZTc3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYwpAQCAtNDksMjUgKzQ5LDYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oPgogI2luY2x1ZGUgInZhY21fY29uZi5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKLQotI2lmZGVmIFVTSU5HX01JQklJX1NZU09SVEFCTEVfTU9EVUxFCi0jaWYgVElNRV9XSVRIX1NZU19USU1FCi0jIGlmZGVmIFdJTjMyCi0jICBpbmNsdWRlIDxzeXMvdGltZWIuaD4KLSMgZWxzZQotIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSMgZW5kaWYKLSMgaW5jbHVkZSA8dGltZS5oPgotI2Vsc2UKLSMgaWYgSEFWRV9TWVNfVElNRV9ICi0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBlbHNlCi0jICBpbmNsdWRlIDx0aW1lLmg+Ci0jIGVuZGlmCi0jZW5kaWYKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCi0jZW5kaWYKIAogI2luY2x1ZGUgInNubXBkLmgiCiAKQEAgLTExOSw3ICsxMDAsNyBAQAogICAgICAqIERlZmluZSBzdGFuZGFyZCB2aWV3cyAiX2FsbF8iIGFuZCAiX25vbmVfIgogICAgICAqLwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9DQUxMQkFDS19QT1NUX1BSRU1JQl9SRUFEX0NPTkZJRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfUFJFX1JFQURfQ09ORklHLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFjbV9zdGFuZGFyZF92aWV3cywgTlVMTCk7CiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1BPU1RfUkVBRF9DT05GSUcsCkBAIC0xNzQsMjQgKzE1NSwyNCBAQAogdm9pZAogdmFjbV9wYXJzZV9ncm91cChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqcGFyYW0pCiB7Ci0gICAgY2hhciAgICAgICAgICAgKmdyb3VwLCAqbW9kZWwsICpzZWN1cml0eTsKKyAgICBjaGFyICAgICAgICAgICAgZ3JvdXBbVkFDTVNUUklOR0xFTl0sIG1vZGVsW1ZBQ01TVFJJTkdMRU5dLCBzZWN1cml0eVtWQUNNU1RSSU5HTEVOXTsKICAgICBpbnQgICAgICAgICAgICAgaW1vZGVsOwogICAgIHN0cnVjdCB2YWNtX2dyb3VwRW50cnkgKmdwID0gTlVMTDsKICAgICBjaGFyICAgICAgICAgICAqc3Q7CiAKLSAgICBncm91cCA9IHN0cnRva19yKHBhcmFtLCAiIFx0XG4iLCAmc3QpOwotICAgIG1vZGVsID0gc3RydG9rX3IoTlVMTCwgIiBcdFxuIiwgJnN0KTsKLSAgICBzZWN1cml0eSA9IHN0cnRva19yKE5VTEwsICIgXHRcbiIsICZzdCk7CisgICAgc3QgPSBjb3B5X253b3JkKHBhcmFtLCBncm91cCwgc2l6ZW9mKGdyb3VwKS0xKTsKKyAgICBzdCA9IGNvcHlfbndvcmQoc3QsIG1vZGVsLCBzaXplb2YobW9kZWwpLTEpOworICAgIHN0ID0gY29weV9ud29yZChzdCwgc2VjdXJpdHksIHNpemVvZihzZWN1cml0eSktMSk7CiAKLSAgICBpZiAoZ3JvdXAgPT0gTlVMTCB8fCAqZ3JvdXAgPT0gMCkgeworICAgIGlmIChncm91cFswXSA9PSAwKSB7CiAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1pc3NpbmcgR1JPVVAgcGFyYW1ldGVyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1vZGVsID09IE5VTEwgfHwgKm1vZGVsID09IDApIHsKKyAgICBpZiAobW9kZWxbMF0gPT0gMCkgewogICAgICAgICBjb25maWdfcGVycm9yKCJtaXNzaW5nIE1PREVMIHBhcmFtZXRlciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChzZWN1cml0eSA9PSBOVUxMIHx8ICpzZWN1cml0eSA9PSAwKSB7CisgICAgaWYgKHNlY3VyaXR5WzBdID09IDApIHsKICAgICAgICAgY29uZmlnX3BlcnJvcigibWlzc2luZyBTRUNVUklUWSBwYXJhbWV0ZXIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwMTcsNyArOTk4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIWlzYWxudW0oKnRtcCkpCiAgICAgICAgICAgICAgICAgICAgICp0bXAgPSAnXyc7CiAgICAgICAgICAgICBzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksCi0gICAgICAgICAgICAgICAgICAgICAiJXMgJXMgJXMiLCBncnBuYW1lLCBtb2RlbCwgc2VjbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAiJXMgJXMgXCIlc1wiIiwgZ3JwbmFtZSwgbW9kZWwsIHNlY25hbWUpOwogICAgICAgICAgICAgbGluZVsgc2l6ZW9mKGxpbmUpLTEgXSA9IDA7CiAgICAgICAgICAgICBERUJVR01TR1RMKCh0b2tlbiwgInBhc3Npbmc6ICVzICVzXG4iLCAiZ3JvdXAiLCBsaW5lKSk7CiAgICAgICAgICAgICB2YWNtX3BhcnNlX2dyb3VwKCJncm91cCIsIGxpbmUpOwpAQCAtMTI2Miw2ICsxMjQzLDE0IEBACiB2YWNtX2NoZWNrX3ZpZXcobmV0c25tcF9wZHUgKnBkdSwgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVsZW4sCiAgICAgICAgICAgICAgICAgaW50IGNoZWNrX3N1YnRyZWUsIGludCB2aWV3dHlwZSkKIHsKKyAgICByZXR1cm4gdmFjbV9jaGVja192aWV3X2NvbnRlbnRzKHBkdSwgbmFtZSwgbmFtZWxlbiwgY2hlY2tfc3VidHJlZSwgdmlld3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUNNX0NIRUNLX1ZJRVdfQ09OVEVOVFNfTk9fRkxBR1MpOworfQorCitpbnQKK3ZhY21fY2hlY2tfdmlld19jb250ZW50cyhuZXRzbm1wX3BkdSAqcGR1LCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hlY2tfc3VidHJlZSwgaW50IHZpZXd0eXBlLCBpbnQgZmxhZ3MpCit7CiAgICAgc3RydWN0IHZhY21fYWNjZXNzRW50cnkgKmFwOwogICAgIHN0cnVjdCB2YWNtX2dyb3VwRW50cnkgKmdwOwogICAgIHN0cnVjdCB2YWNtX3ZpZXdFbnRyeSAqdnA7CkBAIC0xNDIxLDcgKzE0MTAsOCBAQAogICAgICAgICBjb250ZXh0TmFtZUluZGV4WzBdID0gJ1wwJzsKIAogICAgIGNvbnRleHROYW1lSW5kZXhbcGR1LT5jb250ZXh0TmFtZUxlbl0gPSAnXDAnOwotICAgIGlmICghbmV0c25tcF9zdWJ0cmVlX2ZpbmRfZmlyc3QoY29udGV4dE5hbWVJbmRleCkpIHsKKyAgICBpZiAoIShmbGFncyAmIFZBQ01fQ0hFQ0tfVklFV19DT05URU5UU19ETkVfQ09OVEVYVF9PSykgJiYKKyAgICAgICAgIW5ldHNubXBfc3VidHJlZV9maW5kX2ZpcnN0KGNvbnRleHROYW1lSW5kZXgpKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIHJmYyAzNDE1IHNlY3Rpb24gMy4yLCBzdGVwIDEKICAgICAgICAgICogbm8gc3VjaCBjb250ZXh0IGhlcmU7IHJldHVybiBubyBzdWNoIGNvbnRleHQgZXJyb3IgCkBAIC0xNDQ3LDcgKzE0MzcsNyBAQAogICAgICAgICByZXR1cm4gVkFDTV9OT0FDQ0VTUzsKICAgICB9CiAKLSAgICBpZiAobmFtZSA9PSAwKSB7ICAgICAgICAgICAgLyogb25seSBjaGVjayB0aGUgc2V0dXAgb2YgdGhlIHZhY20gZm9yIHRoZSByZXF1ZXN0ICovCisgICAgaWYgKG5hbWUgPT0gTlVMTCkgeyAvKiBvbmx5IGNoZWNrIHRoZSBzZXR1cCBvZiB0aGUgdmFjbSBmb3IgdGhlIHJlcXVlc3QgKi8KICAgICAgICAgREVCVUdNU0coKCJtaWJJSS92YWNtX3ZhcnMiLCAiLCBEb25lIGNoZWNraW5nIHNldHVwXG4iKSk7CiAgICAgICAgIHJldHVybiBWQUNNX1NVQ0NFU1M7CiAgICAgfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmggYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaAppbmRleCA4ZTE1OTc4Li43ODY0Y2UxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaApAQCAtNyw3ICs3LDYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdmFjbS5oPgogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQogY29uZmlnX2JlbG9uZ3NfaW4oYWdlbnRfbW9kdWxlKQogCiAjZGVmaW5lIFZBQ01fQ1JFQVRFX1NJTVBMRV9WMyAgICAgICAxCkBAIC00Myw1ICs0MiwxMCBAQAogCiAgICAgIGludCAgICAgICAgICAgICB2YWNtX2luX3ZpZXcobmV0c25tcF9wZHUgKiwgb2lkICosIHNpemVfdCwgaW50KTsKICAgICAgaW50ICAgICAgICAgICAgIHZhY21fY2hlY2tfdmlldyhuZXRzbm1wX3BkdSAqLCBvaWQgKiwgc2l6ZV90LCBpbnQsIGludCk7CisgICAgIGludCAgICAgICAgICAgICB2YWNtX2NoZWNrX3ZpZXdfY29udGVudHMobmV0c25tcF9wZHUgKiwgb2lkICosIHNpemVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCwgaW50KTsKKworI2RlZmluZSBWQUNNX0NIRUNLX1ZJRVdfQ09OVEVOVFNfTk9fRkxBR1MgICAgICAgIDAKKyNkZWZpbmUgVkFDTV9DSEVDS19WSUVXX0NPTlRFTlRTX0RORV9DT05URVhUX09LICAxCiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX1ZBQ01fQ09ORl9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCmluZGV4IDA5MzdmYzUuLjZiNzNhOTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCkBAIC00OCwxMCArNDgsMTAgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogI2luY2x1ZGUgInZhY21fdmFycy5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQogI2lmIFRJTUVfV0lUSF9TWVNfVElNRQogIyBpZmRlZiBXSU4zMgogIyAgaW5jbHVkZSA8c3lzL3RpbWViLmg+CkBAIC02Niw0MSArNjYsNTIgQEAKICMgIGluY2x1ZGUgPHRpbWUuaD4KICMgZW5kaWYKICNlbmRpZgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKLSNlbmRpZgorCiBzdGF0aWMgdW5zaWduZWQgaW50IHZhY21WaWV3U3BpbkxvY2sgPSAwOwogCiB2b2lkCiBpbml0X3ZhY21fdmFycyh2b2lkKQogewogCi0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKLSAgICBzdGF0aWMgb2lkICAgICAgcmVnW10gPSB7IFNOTVBfT0lEX1NOTVBNT0RVTEVTLCAxNiwgMiwgMiwgMSB9OwotI2VuZGlmCisgICAgb2lkICAgICAgcmVnW10gPSB7IFNOTVBfT0lEX1NOTVBNT0RVTEVTLCAxNiwgMiwgMiwgMSB9OwogCiAjZGVmaW5lIFBSSVZSVwkoTkVUU05NUF9TTk1QVjJBTlkgfCAweDUwMDApCiAKICAgICBzdHJ1Y3QgdmFyaWFibGUxIHZhY21fc2VjMmdyb3VwW10gPSB7Ci0gICAgICAgIHtTRUNVUklUWUdST1VQLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl92YWNtX3NlYzJncm91cCwgMSwgezN9fSwKLSAgICAgICAge1NFQ1VSSVRZU1RPUkFHRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3ZhY21fc2VjMmdyb3VwLCAxLCB7NH19LAotICAgICAgICB7U0VDVVJJVFlTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl92YWNtX3NlYzJncm91cCwgMSwgezV9fSwKKyAgICAgICAge1NFQ1VSSVRZR1JPVVAsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX3NlYzJncm91cCwgMSwgezN9fSwKKyAgICAgICAge1NFQ1VSSVRZU1RPUkFHRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX3NlYzJncm91cCwgMSwgezR9fSwKKyAgICAgICAge1NFQ1VSSVRZU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fc2VjMmdyb3VwLCAxLCB7NX19LAogICAgIH07CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUxIHZhY21fYWNjZXNzW10gPSB7Ci0gICAgICAgIHtBQ0NFU1NNQVRDSCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3ZhY21fYWNjZXNzLCAxLCB7NH19LAotICAgICAgICB7QUNDRVNTUkVBRCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs1fX0sCi0gICAgICAgIHtBQ0NFU1NXUklURSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs2fX0sCi0gICAgICAgIHtBQ0NFU1NOT1RJRlksIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3ZhY21fYWNjZXNzLCAxLCB7N319LAotICAgICAgICB7QUNDRVNTU1RPUkFHRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3ZhY21fYWNjZXNzLCAxLCB7OH19LAotICAgICAgICB7QUNDRVNTU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs5fX0sCisgICAgICAgIHtBQ0NFU1NNQVRDSCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX2FjY2VzcywgMSwgezR9fSwKKyAgICAgICAge0FDQ0VTU1JFQUQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX2FjY2VzcywgMSwgezV9fSwKKyAgICAgICAge0FDQ0VTU1dSSVRFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs2fX0sCisgICAgICAgIHtBQ0NFU1NOT1RJRlksIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX2FjY2VzcywgMSwgezd9fSwKKyAgICAgICAge0FDQ0VTU1NUT1JBR0UsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs4fX0sCisgICAgICAgIHtBQ0NFU1NTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs5fX0sCiAgICAgfTsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTMgdmFjbV92aWV3W10gPSB7Ci0gICAgICAgIHtWQUNNVklFV1NQSU5MT0NLLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdmFjbV92aWV3LCAxLCB7MX19LAotICAgICAgICB7VklFV01BU0ssIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3ZhY21fdmlldywgMywgezIsIDEsIDN9fSwKLSAgICAgICAge1ZJRVdUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdmFjbV92aWV3LCAzLCB7MiwgMSwgNH19LAotICAgICAgICB7VklFV1NUT1JBR0UsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl92YWNtX3ZpZXcsIDMsIHsyLCAxLCA1fX0sCi0gICAgICAgIHtWSUVXU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdmFjbV92aWV3LCAzLCB7MiwgMSwgNn19LAorICAgICAgICB7VkFDTVZJRVdTUElOTE9DSywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX3ZpZXcsIDEsIHsxfX0sCisgICAgICAgIHtWSUVXTUFTSywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fdmlldywgMywgezIsIDEsIDN9fSwKKyAgICAgICAge1ZJRVdUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fdmlldywgMywgezIsIDEsIDR9fSwKKyAgICAgICAge1ZJRVdTVE9SQUdFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fdmlldywgMywgezIsIDEsIDV9fSwKKyAgICAgICAge1ZJRVdTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV92aWV3LCAzLCB7MiwgMSwgNn19LAogICAgIH07CiAKICAgICAvKgpAQCAtMTI2LDExICsxMzcsNyBAQAogICAgICAgICAgICAgICAgICB2YWNtX2FjY2Vzc19vaWQpOwogICAgIFJFR0lTVEVSX01JQigibWliSUkvdmFjbTp2aWV3IiwgdmFjbV92aWV3LCB2YXJpYWJsZTMsIHZhY21fdmlld19vaWQpOwogCi0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKLSAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKHJlZywgMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAiVmlldy1iYXNlZCBBY2Nlc3MgQ29udHJvbCBNb2RlbCBmb3IgU05NUC4iKTsKLSNlbmRpZgotCisgICAgUkVHSVNURVJfU1lTT1JfRU5UUlkocmVnLCAiVmlldy1iYXNlZCBBY2Nlc3MgQ29udHJvbCBNb2RlbCBmb3IgU05NUC4iKTsKIH0KIAogCkBAIC0xODEsMTMgKzE4OCwxMyBAQAogICAgICAgICBncm91cFN1YnRyZWUgPSBuYW1lICsgMTM7CiAgICAgICAgIGdyb3VwU3VidHJlZUxlbiA9ICpsZW5ndGggLSAxMzsKICAgICAgICAgaWYgKCBuYW1lWzEyXSAhPSBncm91cFN1YnRyZWVMZW4gKQotICAgICAgICAgICAgcmV0dXJuIDA7CQkvKiBFaXRoZXIgZXh0cmEgc3ViaWRzLCBvciBhbiBpbmNvbXBsZXRlIHN0cmluZyAqLworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CS8qIEVpdGhlciBleHRyYSBzdWJpZHMsIG9yIGFuIGluY29tcGxldGUgc3RyaW5nICovCiAgICAgICAgIGNwID0gc2VjbmFtZTsKICAgICAgICAgd2hpbGUgKGdyb3VwU3VidHJlZUxlbi0tID4gMCkgewogICAgICAgICAgICAgaWYgKCpncm91cFN1YnRyZWUgPiAyNTUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7ICAgICAgIC8qIGlsbGVnYWwgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgLyogaWxsZWdhbCB2YWx1ZSAqLwogICAgICAgICAgICAgaWYgKGNwIC0gc2VjbmFtZSA+IFZBQ01fTUFYX1NUUklORykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICpjcCsrID0gKGNoYXIpICpncm91cFN1YnRyZWUrKzsKICAgICAgICAgfQogICAgICAgICAqY3AgPSAwOwpAQCAtMjAwLDkgKzIwNyw5IEBACiAgICAgICAgIGNwID0gc2VjbmFtZTsKICAgICAgICAgd2hpbGUgKGdyb3VwU3VidHJlZUxlbi0tID4gMCkgewogICAgICAgICAgICAgaWYgKCpncm91cFN1YnRyZWUgPiAyNTUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7ICAgICAgIC8qIGlsbGVnYWwgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgLyogaWxsZWdhbCB2YWx1ZSAqLwogICAgICAgICAgICAgaWYgKGNwIC0gc2VjbmFtZSA+IFZBQ01fTUFYX1NUUklORykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICpjcCsrID0gKGNoYXIpICpncm91cFN1YnRyZWUrKzsKICAgICAgICAgfQogICAgICAgICAqY3AgPSAwOwpAQCAtMzE1LDExICszMjIsMTEgQEAKICAgICAgICAgb3AgPSBuYW1lICsgMTE7CiAgICAgICAgIGxlbiA9ICpvcCsrOwogICAgICAgICBpZiAobGVuID4gVkFDTV9NQVhfU1RSSU5HKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgY3AgPSBncm91cE5hbWU7CiAgICAgICAgIHdoaWxlIChsZW4tLSA+IDApIHsKICAgICAgICAgICAgIGlmICgqb3AgPiAyNTUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7ICAgICAgIC8qIGlsbGVnYWwgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgLyogaWxsZWdhbCB2YWx1ZSAqLwogICAgICAgICAgICAgKmNwKysgPSAoY2hhcikgKm9wKys7CiAgICAgICAgIH0KICAgICAgICAgKmNwID0gMDsKQEAgLTMyOSwxMSArMzM2LDExIEBACiAgICAgICAgICAqLwogICAgICAgICBsZW4gPSAqb3ArKzsKICAgICAgICAgaWYgKGxlbiA+IFZBQ01fTUFYX1NUUklORykKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGNwID0gY29udGV4dFByZWZpeDsKICAgICAgICAgd2hpbGUgKGxlbi0tID4gMCkgewogICAgICAgICAgICAgaWYgKCpvcCA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsgICAgICAgLyogaWxsZWdhbCB2YWx1ZSAqLworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAvKiBpbGxlZ2FsIHZhbHVlICovCiAgICAgICAgICAgICAqY3ArKyA9IChjaGFyKSAqb3ArKzsKICAgICAgICAgfQogICAgICAgICAqY3AgPSAwOwpAQCAtMzYxLDExICszNjgsMTEgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxlbiA9ICpvcDsKICAgICAgICAgICAgIGlmIChsZW4gPiBWQUNNX01BWF9TVFJJTkcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBjcCA9IGdyb3VwTmFtZTsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gbGVuOyBpKyspIHsKICAgICAgICAgICAgICAgICBpZiAoKm9wID4gMjU1KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOyAgIC8qIGlsbGVnYWwgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgLyogaWxsZWdhbCB2YWx1ZSAqLwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAqY3ArKyA9IChjaGFyKSAqb3ArKzsKICAgICAgICAgICAgIH0KQEAgLTM3NSwxMSArMzgyLDExIEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsZW4gPSAqb3A7CiAgICAgICAgICAgICBpZiAobGVuID4gVkFDTV9NQVhfU1RSSU5HKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgY3AgPSBjb250ZXh0UHJlZml4OwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBsZW47IGkrKykgewogICAgICAgICAgICAgICAgIGlmICgqb3AgPiAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7ICAgLyogaWxsZWdhbCB2YWx1ZSAqLworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAvKiBpbGxlZ2FsIHZhbHVlICovCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICpjcCsrID0gKGNoYXIpICpvcCsrOwogICAgICAgICAgICAgfQpAQCAtNTI4LDExICs1MzUsMTEgQEAKICAgICAgICAgICAgIG9wID0gbmFtZSArIDEyOwogICAgICAgICAgICAgbGVuID0gKm9wKys7CiAgICAgICAgICAgICBpZiAobGVuID4gVkFDTV9NQVhfU1RSSU5HKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgY3AgPSB2aWV3TmFtZTsKICAgICAgICAgICAgIHdoaWxlIChsZW4tLSA+IDApIHsKICAgICAgICAgICAgICAgICBpZiAoKm9wID4gMjU1KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgKmNwKysgPSAoY2hhcikgKm9wKys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAqY3AgPSAwOwpAQCAtNTQzLDcgKzU1MCw3IEBACiAgICAgICAgICAgICBzdWJ0cmVlWzBdID0gbGVuID0gKm9wKys7CiAgICAgICAgICAgICBzdWJ0cmVlTGVuID0gMTsKICAgICAgICAgICAgIGlmIChsZW4gPiBNQVhfT0lEX0xFTikKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGlmICggKG9wK2xlbikgIT0gKG5hbWUgKyAqbGVuZ3RoKSApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAvKiBEZWNsYXJlZCBsZW5ndGggZG9lc24ndCBtYXRjaCB3aGF0IHdlIGFjdHVhbGx5IGdvdCAqLwogICAgICAgICAgICAgb3AxID0gJihzdWJ0cmVlWzFdKTsKQEAgLTU2NiwxMSArNTczLDExIEBACiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGxlbiA9ICpvcDsKICAgICAgICAgICAgICAgICBpZiAobGVuID4gVkFDTV9NQVhfU1RSSU5HKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgY3AgPSB2aWV3TmFtZTsKICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IGxlbiAmJiBvcCA8IG5hbWUgKyAqbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCpvcCA+IDI1NSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAqY3ArKyA9IChjaGFyKSAqb3ArKzsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCmluZGV4IDgwOTMxNTcuLjg4OGMxYjggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCkBAIC03LDcgKzcsNyBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS92YWNtLmg+CiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQogY29uZmlnX3JlcXVpcmUobWliSUkvdmFjbV9jb250ZXh0KQogY29uZmlnX3JlcXVpcmUobWliSUkvdmFjbV9jb25mKQogY29uZmlnX2FkZF9taWIoU05NUC1WSUVXLUJBU0VELUFDTS1NSUIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jCmluZGV4IDVjZWYxY2YuLmRmYzFlOGQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jCkBAIC02MSw3ICs2MSw2IEBACiAjaW5jbHVkZSAia2VybmVsLmgiCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKIAogI2lmbmRlZiAgTUlOCiAjZGVmaW5lICBNSU4oYSxiKSAgICAgICAgICAgICAgICAgICAgICgoKGEpIDwgKGIpKSA/IChhKSA6IChiKSkKQEAgLTMxMyw3ICszMTIsNyBAQAogc3RhdGljIG1pYl9pcFJvdXRlRW50ICpydCA9IChtaWJfaXBSb3V0ZUVudCAqKSAwOwogc3RhdGljIHZvaWQgICAgIFJvdXRlX1NjYW5fUmVsb2FkKHZvaWQpOwogI2VsaWYgIWRlZmluZWQoc29sYXJpczIpCi1zdGF0aWMgUlRFTlRSWSAqKnJ0aGVhZCA9IDA7CitzdGF0aWMgUlRFTlRSWSAqKnJ0aGVhZCA9IE5VTEw7CiBzdGF0aWMgaW50ICAgICAgcnRzaXplID0gMCwgcnRhbGxvY2F0ZSA9IDA7CiAKIHN0YXRpYyB2b2lkICAgICBSb3V0ZV9TY2FuX1JlbG9hZCh2b2lkKTsKQEAgLTc2Miw2ICs3NjEsMTAgQEAKICAgICAgICAgaWYgKGdldE1pYnN0YXQoTUlCX0lQX1JPVVRFLCAmZW50cnksIHNpemVvZihtaWIyX2lwUm91dGVFbnRyeV90KSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVxX3R5cGUsICZJUF9DbXBfUm91dGUsICZOZXh0ZW50cnkpICE9IDApCiAgICAgICAgICAgICBicmVhazsKKyNpZmRlZiBIQVZFX0RFRklORURfSVJFX0NBQ0hFCisgICAgICAgIGlmKGVudHJ5LmlwUm91dGVJbmZvLnJlX2lyZV90eXBlJklSRV9DQUNIRSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmIC8qIEhBVkVfREVGSU5FRF9JUkVfQ0FDSEUgKi8KICAgICAgICAgQ09QWV9JUEFERFIoY3AsICh1X2NoYXIgKikgJiBlbnRyeS5pcFJvdXRlRGVzdCwgb3AsCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgKyBJUF9ST1VURUFERFJfT0ZGKTsKICAgICAgICAgaWYgKGV4YWN0KSB7CkBAIC04NjUsNyArODY4LDcgQEAKIHN0YXRpYyBpbnQgICAgICBxc29ydF9jb21wYXJlKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChSVEVOVFJZXzRfNCkgfHwgZGVmaW5lZChSVEVOVFJZX1JUX05FWFQpIHx8IGRlZmluZWQoaHB1eDExKQorI2lmIGRlZmluZWQoUlRFTlRSWV80XzQpIHx8IGRlZmluZWQoUlRFTlRSWV9SVF9ORVhUKSB8fCBkZWZpbmVkIChocHV4MTEpCiAKICNpZiBkZWZpbmVkKFJURU5UUllfNF80KSAmJiAhZGVmaW5lZChocHV4MTEpCiB2b2lkCkBAIC04NzUsNyArODc4LDcgQEAKICAgICBSVEVOVFJZICAgICAgICAgcnQ7CiAgICAgc3RydWN0IGlmbmV0ICAgIGlmbmV0OwogICAgIGNoYXIgICAgICAgICAgICBuYW1lWzE2XSwgdGVtcFsxNl07Ci0jaWYgIVNUUlVDVF9JRk5FVF9IQVNfSUZfWE5BTUUKKyNpZiAhSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKICAgICByZWdpc3RlciBjaGFyICAqY3A7CiAjZW5kaWYKIApAQCAtOTA4LDcgKzkxMSw3IEBACiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL3Zhcl9yb3V0ZSIsICJrbG9va3VwIGZhaWxlZFxuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1hOQU1FCisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKICNpZiBkZWZpbmVkKG5ldGJzZDEpIHx8IGRlZmluZWQob3BlbmJzZDIpCiAgICAgICAgICAgICBzdHJsY3B5KG5hbWUsIGlmbmV0LmlmX3huYW1lLCBzaXplb2YobmFtZSkpOwogI2Vsc2UKQEAgLTE0NjYsNyArMTQ2OSw3IEBACiAgICAgICogMS4zLjYuMS4yLjEuNC4yMS4xLj8uQS5CLkMuRCwgIHdoZXJlIEEuQi5DLkQgaXMgSVAgYWRkcmVzcy4KICAgICAgKiBJUEFERFIgc3RhcnRzIGF0IG9mZnNldCAxMC4KICAgICAgKi8KLSAgICByZWdpc3RlciBpbnQgICAgU2F2ZV9WYWxpZCwgcmVzdWx0LCBSdEluZGV4OworICAgIHJlZ2lzdGVyIGludCAgICBTYXZlX1ZhbGlkLCByZXN1bHQsIFJ0SW5kZXggPSAwOwogICAgIHN0YXRpYyBpbnQgICAgICBzYXZlTmFtZUxlbiA9IDAsIHNhdmVFeGFjdCA9IDAsIHNhdmVSdEluZGV4ID0KICAgICAgICAgMCwgcnRzaXplID0gMDsKICAgICBzdGF0aWMgb2lkICAgICAgc2F2ZU5hbWVbTUFYX09JRF9MRU5dLCBDdXJyZW50W01BWF9PSURfTEVOXTsKQEAgLTE0NzcsOCArMTQ4MCw2IEBACiAgICAgc3RhdGljIFBNSUJfSVBGT1JXQVJEVEFCTEUgcElwUnRyVGFibGUgPSBOVUxMOwogICAgIHN0cnVjdCB0aW1ldmFsICBub3c7CiAgICAgc3RhdGljIGxvbmcgICAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQgPSAwOwotICAgIHVfY2hhciAgICAgICAgICBkZXN0X2FkZHJbNF07Ci0gICAgTUlCX0lQRk9SV0FSRFJPVyB0ZW1wX3JvdzsKICAgICBzdGF0aWMgaW5fYWRkcl90IGFkZHJfcmV0OwogCiAKQEAgLTE1NzMsMTIgKzE1NzQsMTYgQEAKICAgICAgICAgICAgICAqIGZvciBjcmVhdGlvbiBvZiBuZXcgcm93LCBvbmx5IGlwTmV0VG9NZWRpYVRhYmxlIGNhc2UgaXMgY29uc2lkZXJlZCAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKCpsZW5ndGggPT0gMTQpIHsKKyAgICAgICAgICAgICAgICB1X2NoYXIgICAgICAgICAgIGRlc3RfYWRkcls0XTsKKyAgICAgICAgICAgICAgICBNSUJfSVBGT1JXQVJEUk9XIHRlbXBfcm93OworCiAgICAgICAgICAgICAgICAgY3JlYXRlX2ZsYWcgPSAxOwogICAgICAgICAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9ydGU7CiAgICAgICAgICAgICAgICAgZGVzdF9hZGRyWzBdID0gKHVfY2hhcikgbmFtZVsxMF07CiAgICAgICAgICAgICAgICAgZGVzdF9hZGRyWzFdID0gKHVfY2hhcikgbmFtZVsxMV07CiAgICAgICAgICAgICAgICAgZGVzdF9hZGRyWzJdID0gKHVfY2hhcikgbmFtZVsxMl07CiAgICAgICAgICAgICAgICAgZGVzdF9hZGRyWzNdID0gKHVfY2hhcikgbmFtZVsxM107CisgICAgICAgICAgICAgICAgbWVtc2V0KCZ0ZW1wX3JvdywgMCwgc2l6ZW9mKHRlbXBfcm93KSk7CiAgICAgICAgICAgICAgICAgdGVtcF9yb3cuZHdGb3J3YXJkRGVzdCA9ICooKERXT1JEICopIGRlc3RfYWRkcik7CiAgICAgICAgICAgICAgICAgdGVtcF9yb3cuZHdGb3J3YXJkUG9saWN5ID0gMDsKICAgICAgICAgICAgICAgICB0ZW1wX3Jvdy5kd0ZvcndhcmRQcm90byA9IE1JQl9JUFBST1RPX05FVE1HTVQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oCmluZGV4IDkxZWNlZTguLjc4NjJjNDMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oCkBAIC01LDcgKzUsNyBAQAogI2lmbmRlZiBfTUlCR1JPVVBfVkFSX1JPVVRFX0gKICNkZWZpbmUgX01JQkdST1VQX1ZBUl9ST1VURV9ICiAKLWNvbmZpZ19yZXF1aXJlKG1pYklJL2lwIHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZShtaWJJSS9pcCkKIGNvbmZpZ19hcmNoX3JlcXVpcmUoc29sYXJpczIsIGtlcm5lbF9zdW5vczUpCiAKICAgICAgdm9pZCAgICAgICAgICAgIGluaXRfdmFyX3JvdXRlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmMgYi9hZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYwppbmRleCA2NjNhNWU1Li5jY2E5ODcxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYworKysgYi9hZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYwpAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKICNpbmNsdWRlICJpcGZ3YWNjLmgiCiAKIC8qCkBAIC0xODUsNDAgKzE4NSw1OCBAQAogICovCiAKIHN0cnVjdCB2YXJpYWJsZTIgaXBmd2FjY192YXJpYWJsZXNbXSA9IHsKLSAgICB7SVBGV0FDQ0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0lOREVYfX0sCi0gICAge0lQRldBQ0NTUkNBRERSLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2lwZndhY2MsIDEsCi0gICAgIHtJUEZXQUNDU1JDQUREUn19LAotICAgIHtJUEZXQUNDU1JDTk0sIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NTUkNOTX19LAotICAgIHtJUEZXQUNDRFNUQUREUiwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLAotICAgICB7SVBGV0FDQ0RTVEFERFJ9fSwKLSAgICB7SVBGV0FDQ0RTVE5NLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDRFNUTk19fSwKLSAgICB7SVBGV0FDQ1ZJQU5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwKLSAgICAge0lQRldBQ0NWSUFOQU1FfX0sCi0gICAge0lQRldBQ0NWSUFBRERSLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2lwZndhY2MsIDEsCi0gICAgIHtJUEZXQUNDVklBQUREUn19LAotICAgIHtJUEZXQUNDUFJPVE8sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUFJPVE99fSwKLSAgICB7SVBGV0FDQ0JJRElSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0JJRElSfX0sCi0gICAge0lQRldBQ0NESVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDRElSfX0sCi0gICAge0lQRldBQ0NCWVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NCWVRFU319LAotICAgIHtJUEZXQUNDUEFDS0VUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQQUNLRVRTfX0sCi0gICAge0lQRldBQ0NOU1JDUFJUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwKLSAgICAge0lQRldBQ0NOU1JDUFJUU319LAotICAgIHtJUEZXQUNDTkRTVFBSVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsCi0gICAgIHtJUEZXQUNDTkRTVFBSVFN9fSwKLSAgICB7SVBGV0FDQ1NSQ0lTUk5HLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLAotICAgICB7SVBGV0FDQ1NSQ0lTUk5HfX0sCi0gICAge0lQRldBQ0NEU1RJU1JORywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwKLSAgICAge0lQRldBQ0NEU1RJU1JOR319LAotICAgIHtJUEZXQUNDUE9SVDEsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDF9fSwKLSAgICB7SVBGV0FDQ1BPUlQyLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQyfX0sCi0gICAge0lQRldBQ0NQT1JUMywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUM319LAotICAgIHtJUEZXQUNDUE9SVDQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDR9fSwKLSAgICB7SVBGV0FDQ1BPUlQ1LCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ1fX0sCi0gICAge0lQRldBQ0NQT1JUNiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUNn19LAotICAgIHtJUEZXQUNDUE9SVDcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDd9fSwKLSAgICB7SVBGV0FDQ1BPUlQ4LCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ4fX0sCi0gICAge0lQRldBQ0NQT1JUOSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUOX19LAotICAgIHtJUEZXQUNDUE9SVDEwLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQxMH19CisgICAge0lQRldBQ0NJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NJTkRFWH19LAorICAgIHtJUEZXQUNDU1JDQUREUiwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1NSQ0FERFJ9fSwKKyAgICB7SVBGV0FDQ1NSQ05NLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDU1JDTk19fSwKKyAgICB7SVBGV0FDQ0RTVEFERFIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NEU1RBRERSfX0sCisgICAge0lQRldBQ0NEU1ROTSwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0RTVE5NfX0sCisgICAge0lQRldBQ0NWSUFOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDVklBTkFNRX19LAorICAgIHtJUEZXQUNDVklBQUREUiwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1ZJQUFERFJ9fSwKKyAgICB7SVBGV0FDQ1BST1RPLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BST1RPfX0sCisgICAge0lQRldBQ0NCSURJUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NCSURJUn19LAorICAgIHtJUEZXQUNDRElSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0RJUn19LAorICAgIHtJUEZXQUNDQllURVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDQllURVN9fSwKKyAgICB7SVBGV0FDQ1BBQ0tFVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUEFDS0VUU319LAorICAgIHtJUEZXQUNDTlNSQ1BSVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDTlNSQ1BSVFN9fSwKKyAgICB7SVBGV0FDQ05EU1RQUlRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ05EU1RQUlRTfX0sCisgICAge0lQRldBQ0NTUkNJU1JORywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NTUkNJU1JOR319LAorICAgIHtJUEZXQUNDRFNUSVNSTkcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDRFNUSVNSTkd9fSwKKyAgICB7SVBGV0FDQ1BPUlQxLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQxfX0sCisgICAge0lQRldBQ0NQT1JUMiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUMn19LAorICAgIHtJUEZXQUNDUE9SVDMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDN9fSwKKyAgICB7SVBGV0FDQ1BPUlQ0LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ0fX0sCisgICAge0lQRldBQ0NQT1JUNSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUNX19LAorICAgIHtJUEZXQUNDUE9SVDYsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDZ9fSwKKyAgICB7SVBGV0FDQ1BPUlQ3LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ3fX0sCisgICAge0lQRldBQ0NQT1JUOCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUOH19LAorICAgIHtJUEZXQUNDUE9SVDksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDl9fSwKKyAgICB7SVBGV0FDQ1BPUlQxMCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUMTB9fQogfTsKIAogb2lkICAgICAgICAgICAgIGlwZndhY2NfdmFyaWFibGVzX29pZFtdID0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5oIGIvYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmgKaW5kZXggZDliNmU2MS4uNjM5YzczOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmgKQEAgLTYsMTAgKzYsMTAgQEAKICNkZWZpbmUgX01JQkdST1VQX0lQRldBQ0NfSAogCiAvKgotICogd2UgdXNlIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAorICogd2UgdXNlIGhlYWRlcl9zaW1wbGVfdGFibGUgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUKICAqLwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQogCiAgICAgLyoKICAgICAgKiBhZGQgdGhlIG1pYiB3ZSBpbXBsZW1lbnQgdG8gdGhlIGxpc3Qgb2YgZGVmYXVsdCBtaWJzIHRvIGxvYWQgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMKaW5kZXggOWIxZmY1MS4uZDZhMWVlNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jCisrKyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYwpAQCAtMTYsNyArMTYsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaD4KLSNpbmNsdWRlICJtaWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmgiCisjaW5jbHVkZSAibmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oIgogI2luY2x1ZGUgIm5vdGlmaWNhdGlvbl9sb2cuaCIKIAogLyoKQEAgLTE0MywxMSArMTQzLDExIEBACiAgICAgICovCiAgICAgY291bnQgPSBuZXRzbm1wX3RhYmxlX3NldF9udW1fcm93cyhubG1Mb2dUYWJsZSk7CiAgICAgREVCVUdNU0dUTCgoIm5vdGlmaWNhdGlvbl9sb2ciLAotICAgICAgICAgICAgICAgICJsb2dnZWQgbm90aWZpY2F0aW9ucyAlZDsgbWF4ICVkXG4iLAorICAgICAgICAgICAgICAgICJsb2dnZWQgbm90aWZpY2F0aW9ucyAlbHU7IG1heCAlbHVcbiIsCiAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBtYXhfbG9nZ2VkKSk7CiAgICAgaWYgKGNvdW50ID4gbWF4X2xvZ2dlZCkgewogICAgICAgICBjb3VudCA9IGNvdW50IC0gbWF4X2xvZ2dlZDsKLSAgICAgICAgREVCVUdNU0dUTCgoIm5vdGlmaWNhdGlvbl9sb2ciLCAicmVtb3ZpbmcgJWQgZXh0cmEgbm90aWZpY2F0aW9uc1xuIiwKKyAgICAgICAgREVCVUdNU0dUTCgoIm5vdGlmaWNhdGlvbl9sb2ciLCAicmVtb3ZpbmcgJWx1IGV4dHJhIG5vdGlmaWNhdGlvbnNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7CiAgICAgICAgIG5ldHNubXBfbm90aWZfbG9nX3JlbW92ZV9vbGRlc3QoY291bnQpOwogICAgIH0KQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgIH0KIAogICAgIGlmIChjb3VudCkgewotICAgICAgICBERUJVR01TR1RMKCgibm90aWZpY2F0aW9uX2xvZyIsICJyZW1vdmluZyAlZCBleHBpcmVkIG5vdGlmaWNhdGlvbnNcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJub3RpZmljYXRpb25fbG9nIiwgInJlbW92aW5nICVsdSBleHBpcmVkIG5vdGlmaWNhdGlvbnNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7CiAgICAgICAgIG5ldHNubXBfbm90aWZfbG9nX3JlbW92ZV9vbGRlc3QoY291bnQpOwogICAgIH0KQEAgLTU2Miw3ICs1NjIsNyBAQAogICAgIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KG5sbUxvZ1RhYmxlKTsKICAgICBubG1Mb2dUYWJsZSA9IE5VTEw7CiAKLSAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGUobmxtX21vZHVsZV9vaWQsIE9JRF9MRU5HVEgobmxtX21vZHVsZV9vaWQpKTsKKyAgICBVTlJFR0lTVEVSX1NZU09SX0VOVFJZKG5sbV9tb2R1bGVfb2lkKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMKaW5kZXggODk3MzU0Ni4uMjBhOTU1YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jCkBAIC01NywxMyArNTcsMTMgQEAKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAogICAgICAqLwogI2RlZmluZSAgIFNOTVBOT1RJRllGSUxURVJQUk9GSUxFTkFNRSAgMwotICAgIHtTTk1QTk9USUZZRklMVEVSUFJPRklMRU5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7U05NUE5PVElGWUZJTFRFUlBST0ZJTEVOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLCAyLCB7MSwgMX19LAogI2RlZmluZSAgIFNOTVBOT1RJRllGSUxURVJQUk9GSUxFU1RPUlRZUEUgIDQKLSAgICB7U05NUE5PVElGWUZJTFRFUlBST0ZJTEVTVE9SVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7U05NUE5PVElGWUZJTFRFUlBST0ZJTEVTVE9SVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUsIDIsIHsxLCAyfX0sCiAjZGVmaW5lICAgU05NUE5PVElGWUZJTFRFUlBST0ZJTEVST1dTVEFUVVMgIDUKLSAgICB7U05NUE5PVElGWUZJTFRFUlBST0ZJTEVST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBOT1RJRllGSUxURVJQUk9GSUxFUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZSwgMiwgezEsIDN9fSwKIAogfTsKQEAgLTY0OSw2ICs2NDksOCBAQAogCiAgICAgICAgICAgICBTdG9yYWdlTmV3ID0KICAgICAgICAgICAgICAgICBTTk1QX01BTExPQ19TVFJVQ1Qoc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZV9kYXRhKTsKKyAgICAgICAgICAgIGlmIChTdG9yYWdlTmV3ID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKICAgICAgICAgICAgIFN0b3JhZ2VOZXctPnNubXBUYXJnZXRQYXJhbXNOYW1lID0KICAgICAgICAgICAgICAgICBuZXRzbm1wX21lbWR1cCh2YXJzLT52YWwuc3RyaW5nLCB2YXJzLT52YWxfbGVuKTsKICAgICAgICAgICAgIFN0b3JhZ2VOZXctPnNubXBUYXJnZXRQYXJhbXNOYW1lTGVuID0gdmFycy0+dmFsX2xlbjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYwppbmRleCAzZDNlNDAxLi5mMWFiZWFiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmg+Ci0jaW5jbHVkZSAibWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oIgorI2luY2x1ZGUgIm5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaCIKIAogI2lmZGVmIFVTSU5HX05PVElGSUNBVElPTl9MT0dfTUlCX05PVElGSUNBVElPTl9MT0dfTU9EVUxFCiAjICAgaW5jbHVkZSAibm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oIgpAQCAtNjIsNyArNjIsNyBAQAogCiB2b2lkIHNodXRkb3duX3NubXBOb3RpZnlUYWJsZSh2b2lkKQogewotICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZShzbm1wTm90aWZ5RnVsbENvbXBsaWFuY2UsIE9JRF9MRU5HVEgoc25tcE5vdGlmeUZ1bGxDb21wbGlhbmNlKSk7CisgICAgVU5SRUdJU1RFUl9TWVNPUl9FTlRSWShzbm1wTm90aWZ5RnVsbENvbXBsaWFuY2UpOwogfQogCiAKQEAgLTc4LDE1ICs3OCwxNyBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgU05NUE5PVElGWVRBRyAgICAgICAgIDQKLSAgICB7U05NUE5PVElGWVRBRywgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfc25tcE5vdGlmeVRhYmxlLCAyLCB7MSwgMn19LAorICAgIHtTTk1QTk9USUZZVEFHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9zbm1wTm90aWZ5VGFibGUsIDIsIHsxLCAyfX0sCiAjZGVmaW5lICAgU05NUE5PVElGWVRZUEUgICAgICAgIDUKLSAgICB7U05NUE5PVElGWVRZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9zbm1wTm90aWZ5VGFibGUsIDIsIHsxLCAzfX0sCisgICAge1NOTVBOT1RJRllUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfc25tcE5vdGlmeVRhYmxlLCAyLCB7MSwgM319LAogI2RlZmluZSAgIFNOTVBOT1RJRllTVE9SQUdFVFlQRSAgNgotICAgIHtTTk1QTk9USUZZU1RPUkFHRVRZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9zbm1wTm90aWZ5VGFibGUsIDIsCi0gICAgIHsxLCA0fX0sCisgICAge1NOTVBOT1RJRllTVE9SQUdFVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3NubXBOb3RpZnlUYWJsZSwgMiwgezEsIDR9fSwKICNkZWZpbmUgICBTTk1QTk9USUZZUk9XU1RBVFVTICAgNwotICAgIHtTTk1QTk9USUZZUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfc25tcE5vdGlmeVRhYmxlLCAyLAotICAgICB7MSwgNX19LAorICAgIHtTTk1QTk9USUZZUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfc25tcE5vdGlmeVRhYmxlLCAyLCB7MSwgNX19LAogCiB9OwogLyoKQEAgLTIxOSw3ICsyMjEsNyBAQAogICAgIG5ldHNubXBfcGR1ICAgICp0ZW1wbGF0ZV9wZHUgPSAobmV0c25tcF9wZHUgKikgc2VydmVyYXJnOwogICAgIGludCAgICAgICAgICAgICBjb3VudCA9IDAsIHNlbmQgPSAwOwogCi0gICAgREVCVUdNU0dUTCgoInNlbmRfbm90aWZpY2F0aW9ucyIsICJzdGFydGluZzogcGR1PSV4LCB2YXJzPSV4XG4iLAorICAgIERFQlVHTVNHVEwoKCJzZW5kX25vdGlmaWNhdGlvbnMiLCAic3RhcnRpbmc6IHBkdT0lcCwgdmFycz0lcFxuIiwKICAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9wZHUsIHRlbXBsYXRlX3BkdS0+dmFyaWFibGVzKSk7CiAKICAgICBmb3IgKGhwdHIgPSBzbm1wTm90aWZ5VGFibGVTdG9yYWdlOyBocHRyOyBocHRyID0gaHB0ci0+bmV4dCkgewpAQCAtMzUzLDYgKzM1NSwxMCBAQAogICAgICAgICBwcHRyLT5zZWNNb2RlbCA9IHNzLT5zZWN1cml0eU1vZGVsOwogICAgICAgICBwcHRyLT5zZWNMZXZlbCA9IHNzLT5zZWN1cml0eUxldmVsOwogICAgICAgICBwcHRyLT5zZWNOYW1lID0gKGNoYXIgKikgbWFsbG9jKHNzLT5zZWN1cml0eU5hbWVMZW4gKyAxKTsKKyAgICAgICAgaWYgKHBwdHItPnNlY05hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgc25tcFRhcmdldFBhcmFtVGFibGVfZGlzcG9zZShwcHRyKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAgICAgICAgIG1lbWNweSgodm9pZCAqKSBwcHRyLT5zZWNOYW1lLCAodm9pZCAqKSBzcy0+c2VjdXJpdHlOYW1lLAogICAgICAgICAgICAgICAgc3MtPnNlY3VyaXR5TmFtZUxlbik7CiAgICAgICAgIHBwdHItPnNlY05hbWVbc3MtPnNlY3VyaXR5TmFtZUxlbl0gPSAwOwpAQCAtMzY4LDYgKzM3NCwxMCBAQAogICAgICAgICBwcHRyLT5zZWNOYW1lID0gTlVMTDsKICAgICAgICAgaWYgKHNzLT5jb21tdW5pdHkgJiYgKHNzLT5jb21tdW5pdHlfbGVuID4gMCkpIHsKICAgICAgICAgICAgIHBwdHItPnNlY05hbWUgPSAoY2hhciAqKSBtYWxsb2Moc3MtPmNvbW11bml0eV9sZW4gKyAxKTsKKyAgICAgICAgICAgIGlmIChwcHRyLT5zZWNOYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKHBwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbWVtY3B5KCh2b2lkICopIHBwdHItPnNlY05hbWUsICh2b2lkICopIHNzLT5jb21tdW5pdHksCiAgICAgICAgICAgICAgICAgICAgc3MtPmNvbW11bml0eV9sZW4pOwogICAgICAgICAgICAgcHB0ci0+c2VjTmFtZVtzcy0+Y29tbXVuaXR5X2xlbl0gPSAwOwpAQCAtMzg1LDYgKzM5NSw4IEBACiAgICAgICogbm90aWZ5IHRhYmxlIAogICAgICAqLwogICAgIG5wdHIgPSBTTk1QX01BTExPQ19TVFJVQ1Qoc25tcE5vdGlmeVRhYmxlX2RhdGEpOworICAgIGlmIChucHRyID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOwogICAgIG5wdHItPnNubXBOb3RpZnlOYW1lID0gc3RyZHVwKGJ1Zik7CiAgICAgbnB0ci0+c25tcE5vdGlmeU5hbWVMZW4gPSBzdHJsZW4oYnVmKTsKICAgICBucHRyLT5zbm1wTm90aWZ5VGFnID0gc3RyZHVwKGJ1Zik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi5oIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjA5ZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIuaApAQCAtMCwwICsxLDggQEAKKy8qCisgKiBtb2R1bGUgdG8gaW5jbHVkZSB0aGUgbW9kdWxlcworICovCisKK2NvbmZpZ19yZXF1aXJlKHJtb24tbWliL2V0aGVyU3RhdHNUYWJsZSkKK2NvbmZpZ19hZGRfbWliKFJNT04tTUlCKQorCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHMuaCBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzVkZDYxCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0cy5oCkBAIC0wLDAgKzEsNyBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworI2lmIGRlZmluZWQobGludXgpCitjb25maWdfcmVxdWlyZShybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4KQorI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI2NDZmZAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYwpAQCAtMCwwICsxLDMxNSBAQAorLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgInJtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGUuaCIKKyNpbmNsdWRlICJybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgiCisjaW5jbHVkZSAicm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2lvY3RsX2ltcF9jb21tb24uaCIKKworLyoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBnZXRpZmFkZHJzIGZhaWxlZCAKKyAqIEByZXR2YWwgLTIgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkCisgKi8KKworc3RydWN0IGlmbmFtZSAqCitldGhlcnN0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IChzdHJ1Y3QgaWZuYW1lICpsaXN0X2hlYWQsIGludCAqcmV0dmFsKQoreworICAgIHN0cnVjdCBpZmFkZHJzICphZGRycyA9IE5VTEwsICpwID0gTlVMTDsKKyAgICBzdHJ1Y3QgaWZuYW1lICpuYW1lcHRyMT1OVUxMLCAqbmFtZXB0cjIgPSBOVUxMOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoZ2V0aWZhZGRycygmYWRkcnMpKSA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9nZXQiLAorICAgICAgICAgICAgICAgICAgICAiZ2V0aWZhZGRycyBmYWlsZWRcbiIpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLGludGVyZmFjZV9uYW1lX2xpc3RfZ2V0LCBnZXRpZmFkZHJzIGZhaWxlZFxuIik7CisgICAgICAgICpyZXR2YWwgPSAtMTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChwID0gYWRkcnM7IHA7IHAgPSBwLT5pZmFfbmV4dCkgeworCisgICAgICAgIGlmICghbGlzdF9oZWFkKSB7CisgICAgICAgICAgICBpZiAoIChsaXN0X2hlYWQgPSAoc3RydWN0IGlmbmFtZSAqKSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSkpIDwgMCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKSk7CisgICAgICAgICAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLGludGVyZmFjZV9uYW1lX2xpc3RfZ2V0LCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOworICAgICAgICAgICAgICAgIGZyZWVpZmFkZHJzKGFkZHJzKTsKKyAgICAgICAgICAgICAgICAqcmV0dmFsID0gLTI7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZW1zZXQobGlzdF9oZWFkLCAwLCBzaXplb2Yoc3RydWN0IGlmbmFtZSkpOworICAgICAgICAgICAgc3RybGNweShsaXN0X2hlYWQtPm5hbWUsIHAtPmlmYV9uYW1lLCBJRl9OQU1FU0laRSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAgZm9yIChuYW1lcHRyMSA9IGxpc3RfaGVhZDsgbmFtZXB0cjE7IG5hbWVwdHIyID0gbmFtZXB0cjEsIG5hbWVwdHIxID0gbmFtZXB0cjEtPmlmbl9uZXh0KQorICAgICAgICAgICAgaWYgKCFzdHJuY21wKHAtPmlmYV9uYW1lLCBuYW1lcHRyMS0+bmFtZSwgSUZfTkFNRVNJWkUpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChuYW1lcHRyMSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICggKG5hbWVwdHIyLT5pZm5fbmV4dCA9IChzdHJ1Y3QgaWZuYW1lICopIG1hbGxvYyAoc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKSkgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKSk7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7CisgICAgICAgICAgICBldGhlcnN0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZnJlZSAobGlzdF9oZWFkKTsKKyAgICAgICAgICAgIGZyZWVpZmFkZHJzKGFkZHJzKTsKKyAgICAgICAgICAgICpyZXR2YWwgPSAtMjsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG5hbWVwdHIyID0gbmFtZXB0cjItPmlmbl9uZXh0OworICAgICAgICBtZW1zZXQobmFtZXB0cjIsIDAsIHNpemVvZihzdHJ1Y3QgaWZuYW1lKSk7CisgICAgICAgIHN0cmxjcHkobmFtZXB0cjItPm5hbWUsIHAtPmlmYV9uYW1lLCBJRl9OQU1FU0laRSk7CisgICAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGZyZWVpZmFkZHJzKGFkZHJzKTsKKyAgICAqcmV0dmFsID0gMDsKKyAgICByZXR1cm4gbGlzdF9oZWFkOworfQorCisKKy8qCisgKiBAcmV0dmFsIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBpbnZhbGlkIHBvaW50ZXIKKyAqLworCitpbnQKK2V0aGVyc3RhdHNfaW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlIChzdHJ1Y3QgaWZuYW1lICpsaXN0X2hlYWQpCit7CisgICAgc3RydWN0IGlmbmFtZSAqbmFtZXB0cjEgPSBOVUxMLCAqbmFtZXB0cjIgPSBOVUxMOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoIWxpc3RfaGVhZCkgeworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlOiBpbnZhbGlkIHBvaW50ZXIgbGlzdF9oZWFkIik7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9uYW1lX2xpc3RfZnJlZSIsCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHBvaW50ZXIgbGlzdF9oZWFkXG4iKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKG5hbWVwdHIxID0gbGlzdF9oZWFkOyBuYW1lcHRyMTsgbmFtZXB0cjEgPSBuYW1lcHRyMikgeworICAgICAgICAgICAgbmFtZXB0cjIgPSBuYW1lcHRyMS0+aWZuX25leHQ7CisgICAgICAgICAgICBmcmVlIChuYW1lcHRyMSk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBAcmV0dmFsICAwIDogbm90IGZvdW5kCisgKiBAcmV0dmFsICEwIDogaWZJbmRleAorICovCisKK2ludAorZXRoZXJzdGF0c19pbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQgKGludCBmZCwgY29uc3QgY2hhciAqbmFtZSkgeworI2lmbmRlZiBTSU9DR0lGSU5ERVgKKyAgICByZXR1cm4gMDsKKyNlbHNlCisgICAgc3RydWN0IGlmcmVxICAgIGlmcnE7CisgICAgaW50IHJjID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmlvY3RsIiwgImlmaW5kZXhfZ2V0XG4iKSk7CisKKyAgICByYyA9IF9ldGhlclN0YXRzX2lvY3RsX2dldChmZCwgU0lPQ0dJRklOREVYLCAmaWZycSwgbmFtZSk7CisgICAgaWYgKHJjIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHM6aW9jdGwiLAorICAgICAgICAgICAgICAgICAgICAiaWZpbmRleF9nZXQgZXJyb3Igb24gaW5lcmZhY2UgJyVzJ1xuIiwgbmFtZSkpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGU6aW9jdGwsIGlmaW5kZXhfZ2V0IGVycm9yIG9uIGluZXJmYWNlICclcydcbiIsIG5hbWUpOworICAgICAgICByZXR1cm4gMDsKKworICAgIH0KKworICAgIHJldHVybiBpZnJxLmlmcl9pZmluZGV4OworI2VuZGlmIC8qIFNJT0NHSUZJTkRFWCAqLworfQorCisvKgorICogQHJldHZhbCAgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIGNhbm5vdCBnZXQgRVRIVE9PTF9EUlZJTkZPIGZhaWxlZCAKKyAqIEByZXR2YWwgLTIgbl9zdGF0cyB6ZXJvIC0gbm8gc3RhdGlzdGNzIGF2YWlsYWJsZQorICogQHJldHZhbCAtMyBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgaG9sZGluZyB0aGUgc3RhdGlzdGljcyBmYWlsZWQKKyAqIEByZXR2YWwgLTQgY2Fubm90IGdldCBFVEhUT09MX0dTVFJJTkdTIGluZm9ybWF0aW9uCisgKiBAcmV0dmFsIC01IGNhbm5vdCBnZXQgRVRIVE9PTF9HU1RBVFMgaW5mb3JtYXRpb24KKyAqIEByZXR2YWwgLTYgZnVuY3Rpb24gbm90IHN1cHBvcnRlZCBpZiBIQVZFX0xJTlVYX0VUSFRPT0xfSCBub3QgZGVmaW5lZAorICovCisKK2ludAoraW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCAsIGludCBmZCwgY29uc3QgY2hhciAqbmFtZSkgeworCisjaWZkZWYgSEFWRV9MSU5VWF9FVEhUT09MX0gKKworICAgIGV0aGVyU3RhdHNUYWJsZV9kYXRhICpkYXRhID0gJnJvd3JlcV9jdHgtPmRhdGE7CisgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyBkcml2ZXJfaW5mbzsKKyAgICBzdHJ1Y3QgZXRodG9vbF9nc3RyaW5ncyAqZXRoX3N0cmluZ3M7CisgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKmV0aF9zdGF0czsKKyAgICBzdHJ1Y3QgaWZyZXEgaWZyOworICAgIHVuc2lnbmVkIGludCBuc3RhdHMsIHNpemVfc3RyLCBpOworICAgIGludCBlcnI7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG1lbXNldCgmaWZyLCAwLCBzaXplb2YoaWZyKSk7CisgICAgc3RybGNweShpZnIuaWZyX25hbWUsIG5hbWUsIHNpemVvZihpZnIuaWZyX25hbWUpKTsKKworICAgIG1lbXNldCgmZHJpdmVyX2luZm8sIDAsIHNpemVvZihkcml2ZXJfaW5mbykpOworICAgIGRyaXZlcl9pbmZvLmNtZCA9IEVUSFRPT0xfR0RSVklORk87CisgICAgaWZyLmlmcl9kYXRhID0gKGNoYXIgKikmZHJpdmVyX2luZm87CisKKyAgICBlcnIgPSBfZXRoZXJTdGF0c19pb2N0bF9nZXQoZmQsIFNJT0NFVEhUT09MLCAmaWZyLCBuYW1lKTsKKyAgICBpZiAoZXJyIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICAgICAiRVRIVE9PTF9HRVREUlZJTkZPIGZhaWxlZCBvbiBpbnRlcmZhY2UgfCVzfCBcbiIsIG5hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG5zdGF0cyA9IGRyaXZlcl9pbmZvLm5fc3RhdHM7CisgICAgaWYgKG5zdGF0cyA8IDEpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgIm5vIHN0YXRzIGF2YWlsYWJsZSBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKSk7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICBzaXplX3N0ciA9IG5zdGF0cyAqIEVUSF9HU1RSSU5HX0xFTjsKKworICAgIGV0aF9zdHJpbmdzID0gbWFsbG9jKHNpemVfc3RyICsgc2l6ZW9mIChzdHJ1Y3QgZXRodG9vbF9nc3RyaW5ncykpOworICAgIGlmICghZXRoX3N0cmluZ3MpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgIm5vIG1lbW9yeSBhdmFpbGFibGVcbiIpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLGludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCwgbm8gbWVtb3J5IGF2YWlsYWJsZVxuIik7CisKKyAgICAgICAgcmV0dXJuIC0zOworICAgIH0KKyAgICBtZW1zZXQgKGV0aF9zdHJpbmdzLCAwLCAoc2l6ZV9zdHIgKyBzaXplb2YgKHN0cnVjdCBldGh0b29sX2dzdHJpbmdzKSkpOworCisgICAgZXRoX3N0YXRzID0gbWFsbG9jIChzaXplX3N0ciArIHNpemVvZiAoc3RydWN0IGV0aHRvb2xfc3RhdHMpKTsKKyAgICBpZiAoIWV0aF9zdGF0cykgeworICAgICAgICBmcmVlIChldGhfc3RyaW5ncyk7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCIsCisgICAgICAgICAgICAgICAgICAgICJubyBtZW1vcnkgYXZhaWxhYmxlXG4iKSk7CisgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSxpbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQsIG5vIG1lbW9yeSBhdmFpbGFibGVcbiIpOworCisgICAgICAgIHJldHVybiAtMzsKKyAgICB9CisgICAgbWVtc2V0IChldGhfc3RhdHMsIDAsIChzaXplX3N0ciArIHNpemVvZiAoc3RydWN0IGV0aHRvb2xfc3RhdHMpKSk7CisKKyAgICBldGhfc3RyaW5ncy0+Y21kID0gRVRIVE9PTF9HU1RSSU5HUzsKKyAgICBldGhfc3RyaW5ncy0+c3RyaW5nX3NldCA9IEVUSF9TU19TVEFUUzsKKyAgICBldGhfc3RyaW5ncy0+bGVuID0gbnN0YXRzOworICAgIGlmci5pZnJfZGF0YSA9IChjaGFyICopIGV0aF9zdHJpbmdzOworCisgICAgZXJyID0gX2V0aGVyU3RhdHNfaW9jdGxfZ2V0KGZkLCBTSU9DRVRIVE9PTCwgJmlmciwgbmFtZSk7CisgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBnZXQgc3RhdHMgc3RyaW5ncyBpbmZvcm1hdGlvbiBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKSk7CisgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSxpbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQsIGNhbm5vdCBnZXQgc3RhdHMgc3RyaW5ncyBpbmZvcm1hdGlvbiBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKTsKKworICAgICAgICBmcmVlKGV0aF9zdHJpbmdzKTsKKyAgICAgICAgZnJlZShldGhfc3RhdHMpOworICAgICAgICByZXR1cm4gLTQ7CisgICAgfQorCisgICAgZXRoX3N0YXRzLT5jbWQgPSBFVEhUT09MX0dTVEFUUzsKKyAgICBldGhfc3RhdHMtPm5fc3RhdHMgPSBuc3RhdHM7CisgICAgaWZyLmlmcl9kYXRhID0gKGNoYXIgKikgZXRoX3N0YXRzOworICAgIGVyciA9IF9ldGhlclN0YXRzX2lvY3RsX2dldChmZCwgU0lPQ0VUSFRPT0wsICZpZnIsIG5hbWUpOworICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCIsCisgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZ2V0IHN0YXRzIHN0cmluZ3MgaW5mb3JtYXRpb24gZm9yIGludGVyZmFjZSB8JXN8IFxuIiwgbmFtZSkpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsaW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0LCBjYW5ub3QgZ2V0IHN0YXRzIGluZm9ybWF0aW9uIGZvciBpbnRlcmZhY2UgfCVzfCBcbiIsIG5hbWUpOworCisgICAgICAgIGZyZWUoZXRoX3N0cmluZ3MpOworICAgICAgICBmcmVlKGV0aF9zdGF0cyk7CisgICAgICAgIHJldHVybiAtNTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnN0YXRzOyBpKyspIHsKKyAgICAgICAgY2hhciBzW0VUSF9HU1RSSU5HX0xFTl07CisKKyAgICAgICAgc3RybGNweShzLCAoY29uc3QgY2hhciAqKSAmZXRoX3N0cmluZ3MtPmRhdGFbaSAqIEVUSF9HU1RSSU5HX0xFTl0sCisgICAgICAgICAgICAgICAgc2l6ZW9mKHMpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChFVEhFUlNUQVRTSkFCQkVSUyhzKSkgeworICAgICAgICAgICAgZGF0YS0+ZXRoZXJTdGF0c0phYmJlcnMgPSAodV9sb25nKWV0aF9zdGF0cy0+ZGF0YVtpXTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0VUSEVSU1RBVFNKQUJCRVJTX0ZMQUc7CisgICAgICAgIH0KKyAgICB9CisgICAgZnJlZShldGhfc3RyaW5ncyk7CisgICAgZnJlZShldGhfc3RhdHMpOworCisgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIHJldHVybiAtNjsKKyNlbmRpZgorCit9CisKKworLyogaW9jdGwgd3JhcHBlcgorICoKKyAqIEBwYXJhbSBmZCA6IHNvY2tldCBmZCB0byB1c2Ugdy9pb2N0bCwgb3IgLTEgdG8gb3Blbi9jbG9zZSBvbmUKKyAqIEBwYXJhbSB3aGljaAorICogQHBhcmFtIGlmcnEKKyAqIHBhcmFtIGlmZW50cnkgOiBpZmVudHJ5IHRvIHVwZGF0ZQorICogQHBhcmFtIG5hbWUKKyAqCisgKiBAcmV0dmFsICAwIDogc3VjY2VzcworICogQHJldHZhbCAtMSA6IGludmFsaWQgcGFyYW1ldGVycworICogQHJldHZhbCAtMiA6IGNvdWxkbid0IGNyZWF0ZSBzb2NrZXQKKyAqIEByZXR2YWwgLTMgOiBpb2N0bCBjYWxsIGZhaWxlZAorICovCitpbnQKK19ldGhlclN0YXRzX2lvY3RsX2dldChpbnQgZmQsIGludCB3aGljaCwgc3RydWN0IGlmcmVxICppZnJxLCBjb25zdCBjaGFyKiBuYW1lKQoreworICAgIGludCBvdXJmZCA9IC0xLCByYyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppb2N0bCIsICJfZXRoZXJTdGF0c19pb2N0bF9nZXRcbiIpKTsKKyAgICAvKgorICAgICAqIHNhbml0eSBjaGVja3MKKyAgICAgKi8KKyAgICBpZihOVUxMID09IG5hbWUpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW9jdGwiLAorICAgICAgICAgICAgICAgICAgICAiX2V0aGVyU3RhdHNfaW9jdGxfZ2V0IGludmFsaWQgaWZuYW1lICclcydcbiIsIG5hbWUpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmlvY3RsLCBfZXRoZXJTdGF0c19pb2N0bF9nZXQgZXJyb3Igb24gaW5lcmZhY2UgJyVzJ1xuIiwgbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNyZWF0ZSBzb2NrZXQgZm9yIGlvY3RscworICAgICAqLworICAgIGlmKGZkIDwgMCkgeworICAgICAgICBmZCA9IG91cmZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOworICAgICAgICBpZihvdXJmZCA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmlvY3RsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJfZXRoZXJTdGF0c19pb2N0bF9nZXQgY291bGRuJ3QgY3JlYXRlIGEgc29ja2V0XG4iLCBuYW1lKSk7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGU6aW9jdGwsIF9ldGhlclN0YXRzX2lvY3RsX2dldCBlcnJvciBvbiBpbmVyZmFjZSAnJXMnXG4iLCBuYW1lKTsKKworICAgICAgICAgICAgcmV0dXJuIC0yOworICAgICAgICB9CisgICAgfQorCisgICAgc3RybGNweShpZnJxLT5pZnJfbmFtZSwgbmFtZSwgc2l6ZW9mKGlmcnEtPmlmcl9uYW1lKSk7CisgICAgcmMgPSBpb2N0bChmZCwgd2hpY2gsIGlmcnEpOworICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW9jdGwiLAorICAgICAgICAgICAgICAgICAgICAiX2V0aGVyU3RhdHNfaW9jdGxfZ2V0IGlvY3RsICVkIHJldHVybmVkICVkXG4iLCB3aGljaCwgcmMpKTsKKyAgICAgICAgcmMgPSAtMzsKKyAgICB9CisKKyAgICBpZihvdXJmZCA+PSAwKQorICAgICAgICBjbG9zZShvdXJmZCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcyODQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS5oCkBAIC0wLDAgKzEsMTEgQEAKKy8qCisgKiBtb2R1bGUgdG8gaW5jbHVkZSB0aGUgbW9kdWxlcworICovCisKK2NvbmZpZ19yZXF1aXJlKHJtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHMpCitjb25maWdfcmVxdWlyZShybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlKQorY29uZmlnX3JlcXVpcmUocm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldCkKK2NvbmZpZ19yZXF1aXJlKHJtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQpCitjb25maWdfcmVxdWlyZShybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzKSAKK2NvbmZpZ19yZXF1aXJlKHJtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlKQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVhNmUyMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGUuYwpAQCAtMCwwICsxLDIzMyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qKiBccGFnZSBNRkQgaGVscGVyIGZvciBldGhlclN0YXRzVGFibGUKKyAqCisgKiBcc2VjdGlvbiBpbnRybyBJbnRyb2R1Y3Rpb24KKyAqIEludHJvZHVjdG9yeSB0ZXh0LgorICoKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZS5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaD4KKworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCIKKworb2lkICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9vaWRbXSA9IHsgRVRIRVJTVEFUU1RBQkxFX09JRCB9OworaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoZXRoZXJTdGF0c1RhYmxlX29pZCk7CisKK2V0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gZXRoZXJTdGF0c1RhYmxlX3VzZXJfY29udGV4dDsKK3N0YXRpYyBldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICpldGhlclN0YXRzVGFibGVfdXNlcl9jb250ZXh0X3A7CisKK3ZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2V0aGVyU3RhdHNUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl90YWJsZV9ldGhlclN0YXRzVGFibGUodm9pZCk7CisKKworLyoqCisgKiBJbml0aWFsaXplcyB0aGUgZXRoZXJTdGF0c1RhYmxlIG1vZHVsZQorICovCit2b2lkCitpbml0X2V0aGVyU3RhdHNUYWJsZSh2b2lkKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTppbml0X2V0aGVyU3RhdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMDpvOiBQZXJmb3JtIGV0aGVyU3RhdHNUYWJsZSBvbmUtdGltZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nCisgICAgICovCisgICAgaWYgKHNob3VsZF9pbml0KCJldGhlclN0YXRzVGFibGUiKSkKKyAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9ldGhlclN0YXRzVGFibGUoKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0X2V0aGVyU3RhdHNUYWJsZSAqLworCisvKioKKyAqIFNodXQtZG93biB0aGUgZXRoZXJTdGF0c1RhYmxlIG1vZHVsZSAoYWdlbnQgaXMgZXhpdGluZykKKyAqLwordm9pZAorc2h1dGRvd25fZXRoZXJTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgaWYgKHNob3VsZF9pbml0KCJldGhlclN0YXRzVGFibGUiKSkKKyAgICAgICAgc2h1dGRvd25fdGFibGVfZXRoZXJTdGF0c1RhYmxlKCk7CisKK30KKworLyoqCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBldGhlclN0YXRzVGFibGUgCisgKiAgICAoRGVmaW5lIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCkKKyAqLwordm9pZAoraW5pdGlhbGl6ZV90YWJsZV9ldGhlclN0YXRzVGFibGUodm9pZCkKK3sKKyAgICB1X2xvbmcgICAgICAgICAgZmxhZ3M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6aW5pdGlhbGl6ZV90YWJsZV9ldGhlclN0YXRzVGFibGUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDE6bzogUGVyZm9ybSBldGhlclN0YXRzVGFibGUgb25lLXRpbWUgdGFibGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIFRPRE86MzAyOm86IHwtPkluaXRpYWxpemUgZXRoZXJTdGF0c1RhYmxlIHVzZXIgY29udGV4dAorICAgICAqIGlmIHlvdSdkIGxpa2UgdG8gcGFzcyBpbiBhIHBvaW50ZXIgdG8gc29tZSBkYXRhIGZvciB0aGlzCisgICAgICogdGFibGUsIGFsbG9jYXRlIG9yIHNldCBpdCB1cCBoZXJlLgorICAgICAqLworICAgIC8qCisgICAgICogYSBuZXRzbm1wX2RhdGFfbGlzdCBpcyBhIHNpbXBsZSB3YXkgdG8gc3RvcmUgdm9pZCBwb2ludGVycy4gQSBzaW1wbGUKKyAgICAgKiBzdHJpbmcgdG9rZW4gaXMgdXNlZCB0byBhZGQsIGZpbmQgb3IgcmVtb3ZlIHBvaW50ZXJzLgorICAgICAqLworICAgIGV0aGVyU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcAorCT0gbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0KCJldGhlclN0YXRzVGFibGUiLCBOVUxMLCBOVUxMKTsKKworICAgIC8qCisgICAgICogTm8gc3VwcG9ydCBmb3IgYW55IGZsYWdzIHlldCwgYnV0IGluIHRoZSBmdXR1cmUgeW91IHdvdWxkCisgICAgICogc2V0IGFueSBmbGFncyBoZXJlLgorICAgICAqLworICAgIGZsYWdzID0gMDsKKworICAgIC8qCisgICAgICogY2FsbCBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIF9ldGhlclN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UKKwkoZXRoZXJTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wLCBmbGFncyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWxpemVfdGFibGVfZXRoZXJTdGF0c1RhYmxlICovCisKKy8qKgorICogU2h1dGRvd24gdGhlIHRhYmxlIGV0aGVyU3RhdHNUYWJsZSAKKyAqLwordm9pZAorc2h1dGRvd25fdGFibGVfZXRoZXJTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBzaHV0ZG93biBjb2RlCisgICAgICovCisgICAgX2V0aGVyU3RhdHNUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UoZXRoZXJTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wKTsKKyAgICBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YShldGhlclN0YXRzVGFibGVfdXNlcl9jb250ZXh0X3ApOworICAgIGV0aGVyU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcCA9IE5VTEw7Cit9CisKKy8qKgorICogZXh0cmEgY29udGV4dCBpbml0aWFsaXphdGlvbiAoZWcgZGVmYXVsdCB2YWx1ZXMpCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggICAgOiByb3cgcmVxdWVzdCBjb250ZXh0CisgKiBAcGFyYW0gdXNlcl9pbml0X2N0eCA6IHZvaWQgcG9pbnRlciBmb3IgdXNlciAocGFyYW1ldGVyIHRvIHJvd3JlcV9jdHhfYWxsb2NhdGUpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgOiBubyBlcnJvcnMKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgIDogZXJyb3IgKGNvbnRleHQgYWxsb2NhdGUgd2lsbCBmYWlsKQorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMDpvOiB8LT4gUGVyZm9ybSBleHRyYSBldGhlclN0YXRzVGFibGUgcm93cmVxIGluaXRpYWxpemF0aW9uLiAoZWcgREVGVkFMUykKKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdCAqLworCisvKioKKyAqIGV4dHJhIGNvbnRleHQgY2xlYW51cAorICoKKyAqLwordm9pZAorZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMTpvOiB8LT4gUGVyZm9ybSBleHRyYSBldGhlclN0YXRzVGFibGUgcm93cmVxIGNsZWFudXAuCisgICAgICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAgKi8KKworLyoqCisgKiBwcmUtcmVxdWVzdCBjYWxsYmFjaworICoKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgICAgICA6IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiB1c2VyX2NvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjUxMDpvOiBQZXJmb3JtIGV0aGVyU3RhdHNUYWJsZSBwcmUtcmVxdWVzdCBhY3Rpb25zLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBwb3N0LXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKiBOb3RlOgorICogICBOZXcgcm93cyBoYXZlIGJlZW4gaW5zZXJ0ZWQgaW50byB0aGUgY29udGFpbmVyLCBhbmQKKyAqICAgZGVsZXRlZCByb3dzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvbnRhaW5lciBhbmQKKyAqICAgcmVsZWFzZWQuCisgKgorICogQHBhcmFtIHVzZXJfY29udGV4dAorICogQHBhcmFtIHJjIDogTUZEX1NVQ0NFU1MgaWYgYWxsIHJlcXVlc3RzIHN1Y2NlZWRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IG90aGVyIGVycm9yIChpZ25vcmVkKQorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJjKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86NTExOm86IFBlcmZvcm0gZXRoZXJTdGF0c1RhYmxlIHBvc3QtcmVxdWVzdCBhY3Rpb25zLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBjaGVjayB0byBzZXQgaWYgYW55IHJvd3Mgd2VyZSBjaGFuZ2VkLgorICAgICAqLworICAgIGlmIChldGhlclN0YXRzVGFibGVfZGlydHlfZ2V0KCkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY2hlY2sgaWYgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bC4gSWYgc28sIHRoaXMgd291bGQgYmUKKyAgICAgICAgICogYSBnb29kIHBsYWNlIHRvIHNhdmUgZGF0YSB0byBpdHMgcGVyc2lzdGVudCBzdG9yZS4KKyAgICAgICAgICovCisgICAgICAgIGlmIChNRkRfU1VDQ0VTUyA9PSByYykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHNhdmUgY2hhbmdlZCByb3dzLCBpZiB5b3UgaGF2ZW4ndCBhbHJlYWR5CisgICAgICAgICAgICAgKi8KKyAgICAgICAgfQorCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9zZXQoMCk7ICAgLyogY2xlYXIgdGFibGUgZGlydHkgZmxhZyAqLworICAgIH0KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCAqLworCisKKy8qKiBAeyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmN2YwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmgKQEAgLTAsMCArMSwzMDMgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgRVRIRVJTVEFUU1RBQkxFX0gKKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKy8qKiBAYWRkdG9ncm91cCBtaXNjIG1pc2M6IE1pc2NlbGxhbmVvdXMgcm91dGluZXMKKyAqCisgKiBAeworICovCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9hc24xLmg+CisKKyAgICAvKgorICAgICAqIE9JRCBhbmQgY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgZXRoZXJTdGF0c1RhYmxlIAorICAgICAqLworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9vaWRzLmgiCisKKyAgICAvKgorICAgICAqIGVudW0gZGVmaW5pb25zIAorICAgICAqLworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9lbnVtcy5oIgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGluaXRfZXRoZXJTdGF0c1RhYmxlKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9ldGhlclN0YXRzVGFibGUodm9pZCk7CisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBldGhlclN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEsIGxlbmd0aDogOQorICAgICAqLworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFdoZW4geW91IHJlZ2lzdGVyIHlvdXIgbWliLCB5b3UgZ2V0IHRvIHByb3ZpZGUgYSBnZW5lcmljCisgICAgICogcG9pbnRlciB0aGF0IHdpbGwgYmUgcGFzc2VkIGJhY2sgdG8geW91IGZvciBtb3N0IG9mIHRoZQorICAgICAqIGZ1bmN0aW9ucyBjYWxscy4KKyAgICAgKgorICAgICAqIFRPRE86MTAwOnI6IFJldmlldyBhbGwgY29udGV4dCBzdHJ1Y3R1cmVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBUT0RPOjEwMTpvOiB8LT4gUmV2aWV3IGV0aGVyU3RhdHNUYWJsZSByZWdpc3RyYXRpb24gY29udGV4dC4KKyAgICAgKi8KKyAgICB0eXBlZGVmIG5ldHNubXBfZGF0YV9saXN0IGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb247CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogVE9ETzoxMTA6cjogfC0+IFJldmlldyBldGhlclN0YXRzVGFibGUgZGF0YSBjb250ZXh0IHN0cnVjdHVyZS4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgZGF0YSBmb3IgZXRoZXJTdGF0c1RhYmxlLgorICAgICAqLworICAgIC8qCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgc3RvcmFnZSBmb3IgYWxsIHRoZSBjb2x1bW5zIGRlZmluZWQgaW4gdGhlCisgICAgICogZXRoZXJTdGF0c1RhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGV0aGVyU3RhdHNUYWJsZV9kYXRhX3MgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNEYXRhU291cmNlKDIpL09CSkVDVElEL0FTTl9PQkpFQ1RfSUQvb2lkKG9pZCkvL0wvQS9XL2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIG9pZCAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZVsxMjhdOworICAgICAgICBzaXplX3QgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuOyAgICAgICAvKiAjIG9mIG9pZCBlbGVtZW50cywgbm90IGJ5dGVzICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0Ryb3BFdmVudHMoMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPY3RldHMoNCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNPY3RldHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMoNSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNQa3RzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzKDYpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzQnJvYWRjYXN0UGt0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzTXVsdGljYXN0UGt0cyg3KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c011bHRpY2FzdFBrdHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzKDgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHMoOSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHMoMTApL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzT3ZlcnNpemVQa3RzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNGcmFnbWVudHMoMTEpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzRnJhZ21lbnRzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNKYWJiZXJzKDEyKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c0phYmJlcnM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0NvbGxpc2lvbnMoMTMpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzQ29sbGlzaW9uczsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czY0T2N0ZXRzKDE0KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHMoMTUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cygxNikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cygxNykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHMoMTgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHMoMTkpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c093bmVyKDIwKS9Pd25lclN0cmluZy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvQS9XL2UvUi9kL2gKKyAgICAgICAgICovCisgICAgICAgIGNoYXIgICAgICAgICAgICBldGhlclN0YXRzT3duZXJbMTI3XTsKKyAgICAgICAgc2l6ZV90ICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl9sZW47ICAgIC8qICMgb2YgY2hhciBlbGVtZW50cywgbm90IGJ5dGVzICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1N0YXR1cygyMSkvRW50cnlTdGF0dXMvQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL0EvVy9FL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c1N0YXR1czsKKworICAgIH0gZXRoZXJTdGF0c1RhYmxlX2RhdGE7CisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTE1Om86IHwtPiBSZXZpZXcgZXRoZXJTdGF0c1RhYmxlIHVuZG8gY29udGV4dC4KKyAgICAgKiBXZSdyZSBqdXN0IGdvaW5nIHRvIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBmb3Igb3VyCisgICAgICogdW5kb19jb250ZXh0LiBJZiB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgbW9yZSBlZmZpY2VudCwKKyAgICAgKiBkZWZpbmUgeW91ciB0eXBlZGVmIGhlcmUuCisgICAgICovCisgICAgdHlwZWRlZiBldGhlclN0YXRzVGFibGVfZGF0YSBldGhlclN0YXRzVGFibGVfdW5kb19kYXRhOworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMDpyOiB8LT4gUmV2aWV3IGV0aGVyU3RhdHNUYWJsZSBtaWIgaW5kZXguCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byByZXByZXNlbnQgdGhlIGluZGV4IGZvciBldGhlclN0YXRzVGFibGUuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleF9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzSW5kZXgoMSkvSU5URUdFUjMyL0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL2gKKyAgICAgICAgICovCisgICAgICAgIGxvbmcgICAgICAgICAgICBldGhlclN0YXRzSW5kZXg7CisKKworICAgIH0gZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleDsKKworICAgIC8qCisgICAgICogVE9ETzoxMjE6cjogfCAgIHwtPiBSZXZpZXcgZXRoZXJTdGF0c1RhYmxlIG1heCBpbmRleCBsZW5ndGguCisgICAgICogSWYgeW91IEtOT1cgdGhhdCB5b3VyIGluZGV4ZXMgd2lsbCBuZXZlciBleGNlZWQgYSBjZXJ0YWluCisgICAgICogbGVuZ3RoLCB1cGRhdGUgdGhpcyBtYWNybyB0byB0aGF0IGxlbmd0aC4KKyAgICAgKi8KKyNkZWZpbmUgTUFYX2V0aGVyU3RhdHNUYWJsZV9JRFhfTEVOICAgICAxCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTMwOm86IHwtPiBSZXZpZXcgZXRoZXJTdGF0c1RhYmxlIFJvdyByZXF1ZXN0IChyb3dyZXEpIGNvbnRleHQuCisgICAgICogV2hlbiB5b3VyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLCB5b3Ugd2lsbCBiZSBwYXNzZWQgYQorICAgICAqIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4IHBvaW50ZXIuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfcyB7CisKKyAgICAvKiogdGhpcyBtdXN0IGJlIGZpcnN0IGZvciBjb250YWluZXIgY29tcGFyZSB0byB3b3JrICovCisgICAgICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworICAgICAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfZXRoZXJTdGF0c1RhYmxlX0lEWF9MRU5dOworCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9taWJfaW5kZXggdGJsX2lkeDsKKworICAgICAgICBldGhlclN0YXRzVGFibGVfZGF0YSBkYXRhOworICAgICAgICB1bnNpZ25lZCBpbnQgICAgY29sdW1uX2V4aXN0c19mbGFnczsgICAgLyogZmxhZ3MgZm9yIGV4aXN0ZW5jZSAqLworICAgICAgICBldGhlclN0YXRzVGFibGVfdW5kb19kYXRhICp1bmRvOworICAgICAgICB1bnNpZ25lZCBpbnQgICAgY29sdW1uX3NldF9mbGFnczsgICAgICAgLyogZmxhZ3MgZm9yIHNldCBjb2x1bW5zICovCisKKworICAgICAgICAvKgorICAgICAgICAgKiBmbGFncyBwZXIgcm93LiBDdXJyZW50bHksIHRoZSBmaXJzdCAobG93ZXIpIDggYml0cyBhcmUgcmVzZXJ2ZWQKKyAgICAgICAgICogZm9yIHRoZSB1c2VyLiBTZWUgbWZkLmggZm9yIG90aGVyIGZsYWdzLgorICAgICAgICAgKi8KKyAgICAgICAgdV9pbnQgICAgICAgICAgIHJvd3JlcV9mbGFnczsKKworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjEzMTpvOiB8ICAgfC0+IEFkZCB1c2VmdWwgZGF0YSB0byBldGhlclN0YXRzVGFibGUgcm93cmVxIGNvbnRleHQuCisgICAgICAgICAqLworCisgICAgICAgIC8qCisgICAgICAgICAqIHN0b3JhZ2UgZm9yIGZ1dHVyZSBleHBhbnNpb24KKyAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfZGF0YV9saXN0ICpldGhlclN0YXRzVGFibGVfZGF0YV9saXN0OworCisgICAgfSBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eDsKKworICAgIHR5cGVkZWYgc3RydWN0IGV0aGVyU3RhdHNUYWJsZV9yZWZfcm93cmVxX2N0eF9zIHsKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgfSBldGhlclN0YXRzVGFibGVfcmVmX3Jvd3JlcV9jdHg7CisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBwcm90b3R5cGVzCisgICAgICovCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jb250ZXh0LCBpbnQgcmMpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsIHZvaWQgKnVzZXJfaW5pdF9jdHgpOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfY29tbWl0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICpldGhlclN0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGV0aGVyU3RhdHNUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KTsKKworICAgIGV4dGVybiBvaWQgICAgICBldGhlclN0YXRzVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGludCAgICAgIGV0aGVyU3RhdHNUYWJsZV9vaWRfc2l6ZTsKKworCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5oIgorI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oIgorI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5oIgorI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9kYXRhX3NldC5oIgorCisgICAgLyoKKyAgICAgKiBEVU1NWSBtYXJrZXJzLCBpZ25vcmUKKyAgICAgKgorICAgICAqIFRPRE86MDk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjE5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoyOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86Mzk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjQ5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVUSEVSU1RBVFNUQUJMRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjY3MWQwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0wLDAgKzEsNTI1IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZS5oIgorI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oIgorCisjaWYgZGVmaW5lZChsaW51eCkKKyNpbmNsdWRlICJpb2N0bF9pbXBfY29tbW9uLmgiCisjZW5kaWYKKworLyoqIEBpbmdyb3VwIGludGVyZmFjZQorICogQGFkZHRvZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCisgKgorICogVGhlc2Ugcm91dGluZXMgYXJlIHVzZWQgdG8gbG9jYXRlIHRoZSBkYXRhIHVzZWQgdG8gc2F0aXNmeQorICogcmVxdWVzdHMuCisgKiAKKyAqIEB7CisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBldGhlclN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c1RhYmxlIGlzIHN1YmlkIDEgb2Ygc3RhdGlzdGljcy4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMSwgbGVuZ3RoOiA5CisgKi8KKworLyoqCisgKiBpbml0aWFsaXphdGlvbiBmb3IgZXRoZXJTdGF0c1RhYmxlIGRhdGEgYWNjZXNzCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHN0YXJ0dXAgdG8gYWxsb3cgeW91IHRvCisgKiBhbGxvY2F0ZSBhbnkgcmVzb3VyY2VzIHlvdSBuZWVkIGZvciB0aGUgZGF0YSB0YWJsZS4KKyAqCisgKiBAcGFyYW0gZXRoZXJTdGF0c1RhYmxlX3JlZworICogICAgICAgIFBvaW50ZXIgdG8gZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IHVucmVjb3ZlcmFibGUgZXJyb3IuCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX2luaXRfZGF0YShldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlZykKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2luaXRfZGF0YSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMzpvOiBJbml0aWFsaXplIGV0aGVyU3RhdHNUYWJsZSBkYXRhLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfaW5pdF9kYXRhICovCisKKy8qKgorICogY29udGFpbmVyIG92ZXJ2aWV3CisgKgorICovCisKKy8qKgorICogY29udGFpbmVyIGluaXRpYWxpemF0aW9uCisgKgorICogQHBhcmFtIGNvbnRhaW5lcl9wdHJfcHRyIEEgcG9pbnRlciB0byBhIGNvbnRhaW5lciBwb2ludGVyLiBJZiB5b3UKKyAqICAgICAgICBjcmVhdGUgYSBjdXN0b20gY29udGFpbmVyLCB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gcmV0dXJuIGl0CisgKiAgICAgICAgdG8gdGhlIE1GRCBoZWxwZXIuIElmIHNldCB0byBOVUxMLCB0aGUgTUZEIGhlbHBlciB3aWxsCisgKiAgICAgICAgYWxsb2NhdGUgYSBjb250YWluZXIgZm9yIHlvdS4KKyAqIEBwYXJhbSAgY2FjaGUgQSBwb2ludGVyIHRvIGEgY2FjaGUgc3RydWN0dXJlLiBZb3UgY2FuIHNldCB0aGUgdGltZW91dAorICogICAgICAgICBhbmQgb3RoZXIgY2FjaGUgZmxhZ3MgdXNpbmcgdGhpcyBwb2ludGVyLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCBzdGFydHVwIHRvIGFsbG93IHlvdSB0byBjdXN0b21pemUgY2VydGFpbgorICogIGFzcGVjdHMgb2YgdGhlIGFjY2VzcyBtZXRob2QuIEZvciB0aGUgbW9zdCBwYXJ0LCBpdCBpcyBmb3IgYWR2YW5jZWQKKyAqICB1c2Vycy4gVGhlIGRlZmF1bHQgY29kZSBzaG91bGQgc3VmZmljZSBmb3IgbW9zdCBjYXNlcy4gSWYgbm8gY3VzdG9tCisgKiAgY29udGFpbmVyIGlzIGFsbG9jYXRlZCwgdGhlIE1GRCBjb2RlIHdpbGwgY3JlYXRlIG9uZSBmb3IgeW91ci4KKyAqCisgKiAgVGhpcyBpcyBhbHNvIHRoZSBwbGFjZSB0byBzZXQgdXAgY2FjaGUgYmVoYXZpb3IuIFRoZSBkZWZhdWx0LCB0bworICogIHNpbXBseSBzZXQgdGhlIGNhY2hlIHRpbWVvdXQsIHdpbGwgd29yayB3ZWxsIHdpdGggdGhlIGRlZmF1bHQKKyAqICBjb250YWluZXIuIElmIHlvdSBhcmUgdXNpbmcgYSBjdXN0b20gY29udGFpbmVyLCB5b3UgbWF5IHdhbnQgdG8KKyAqICBsb29rIGF0IHRoZSBjYWNoZSBoZWxwZXIgZG9jdW1lbnRhdGlvbiB0byBzZWUgaWYgdGhlcmUgYXJlIGFueQorICogIGZsYWdzIHlvdSB3YW50IHRvIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyB3b3VsZCBhbHNvIGJlIGEgZ29vZCBwbGFjZSB0byBkbyBhbnkgaW5pdGlhbGl6YXRpb24gbmVlZGVkCisgKiAgZm9yIHlvdSBkYXRhIHNvdXJjZS4gRm9yIGV4YW1wbGUsIG9wZW5pbmcgYSBjb25uZWN0aW9uIHRvIGFub3RoZXIKKyAqICBwcm9jZXNzIHRoYXQgd2lsbCBzdXBwbHkgdGhlIGRhdGEsIG9wZW5pbmcgYSBkYXRhYmFzZSwgZXRjLgorICovCit2b2lkCitldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKiogY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWNoZSAqIGNhY2hlKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcl9wdHJfcHRyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgY29udGFpbmVyIHBhcmFtIHRvIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIEZvciBhZHZhbmNlZCB1c2VycywgeW91IGNhbiB1c2UgYSBjdXN0b20gY29udGFpbmVyLiBJZiB5b3UKKyAgICAgKiBkbyBub3QgY3JlYXRlIG9uZSwgb25lIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91LgorICAgICAqLworICAgICpjb250YWluZXJfcHRyX3B0ciA9IE5VTEw7CisKKyAgICBpZiAoTlVMTCA9PSBjYWNoZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIGNhY2hlIHBhcmFtIHRvIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRPRE86MzQ1OkE6IFNldCB1cCBldGhlclN0YXRzVGFibGUgY2FjaGUgcHJvcGVydGllcy4KKyAgICAgKgorICAgICAqIEFsc28gZm9yIGFkdmFuY2VkIHVzZXJzLCB5b3UgY2FuIHNldCBwYXJhbWV0ZXJzIGZvciB0aGUKKyAgICAgKiBjYWNoZS4gRG8gbm90IGNoYW5nZSB0aGUgbWFnaWMgcG9pbnRlciwgYXMgaXQgaXMgdXNlZAorICAgICAqIGJ5IHRoZSBNRkQgaGVscGVyLiBUbyBjb21wbGV0ZWx5IGRpc2FibGUgY2FjaGluZywgc2V0CisgICAgICogY2FjaGUtPmVuYWJsZWQgdG8gMC4KKyAgICAgKi8KKyAgICBjYWNoZS0+dGltZW91dCA9IEVUSEVSU1RBVFNUQUJMRV9DQUNIRV9USU1FT1VUOyAgICAgLyogc2Vjb25kcyAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBjb250YWluZXIgc2h1dGRvd24KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyX3B0ciBBIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5lci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc2h1dGRvd24gdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKCkuCisgKgorICogQHJlbWFyaworICogIFRoaXMgd291bGQgYWxzbyBiZSBhIGdvb2QgcGxhY2UgdG8gZG8gYW55IGNsZWFudXAgbmVlZGVkCisgKiAgZm9yIHlvdSBkYXRhIHNvdXJjZS4gRm9yIGV4YW1wbGUsIGNsb3NpbmcgYSBjb25uZWN0aW9uIHRvIGFub3RoZXIKKyAqICBwcm9jZXNzIHRoYXQgc3VwcGxpZWQgdGhlIGRhdGEsIGNsb3NpbmcgYSBkYXRhYmFzZSwgZXRjLgorICovCit2b2lkCitldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyX3B0cikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcl9wdHIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBwYXJhbXMgdG8gZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93blxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisvKioKKyAqIGxvYWQgaW5pdGlhbCBkYXRhCisgKgorICogVE9ETzozNTA6TTogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBkYXRhIGxvYWQKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvIGJlIGNhbGxlZCBieSB0aGUgY2FjaGUgaGVscGVyIHRvIGxvYWQKKyAqIHRoZSBjb250YWluZXIgYWdhaW4gKGFmdGVyIHRoZSBjb250YWluZXIgZnJlZSBmdW5jdGlvbiBoYXMgYmVlbgorICogY2FsbGVkIHRvIGZyZWUgdGhlIHByZXZpb3VzIGNvbnRlbnRzKS4KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyIGNvbnRhaW5lciB0byB3aGljaCBpdGVtcyBzaG91bGQgYmUgaW5zZXJ0ZWQKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRSA6IENhbid0IGFjY2VzcyBkYXRhIHNvdXJjZQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgICAgICAgOiBvdGhlciBlcnJvci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gbG9hZCB0aGUgaW5kZXgoZXMpIChhbmQgZGF0YSwgb3B0aW9uYWxseSkKKyAqICBmb3IgdGhlIGV2ZXJ5IHJvdyBpbiB0aGUgZGF0YSBzZXQuCisgKgorICogQHJlbWFyaworICogIFdoaWxlIGxvYWRpbmcgdGhlIGRhdGEsIHRoZSBvbmx5IGltcG9ydGFudCB0aGluZyBpcyB0aGUgaW5kZXhlcy4KKyAqICBJZiBhY2Nlc3MgdG8geW91ciBkYXRhIGlzIGNoZWFwL2Zhc3QgKGUuZy4geW91IGhhdmUgYSBwb2ludGVyIHRvIGEKKyAqICBzdHJ1Y3R1cmUgaW4gbWVtb3J5KSwgaXQgd291bGQgbWFrZSBzZW5zZSB0byB1cGRhdGUgdGhlIGRhdGEgaGVyZS4KKyAqICBJZiwgaG93ZXZlciwgdGhlIGFjY2Vzc2luZyB0aGUgZGF0YSBpbnZvdmxlcyBtb3JlIHdvcmsgKGUuZy4gcGFyc2luZworICogIHNvbWUgb3RoZXIgZXhpc3RpbmcgZGF0YSwgb3IgcGVmb3JtaW5nIGNhbGN1bGF0aW9ucyB0byBkZXJpdmUgdGhlIGRhdGEpLAorICogIHRoZW4geW91IGNhbiBsaW1pdCB5b3Vyc2VsZiB0byBzZXR0aW5nIHRoZSBpbmRleGVzIGFuZCBzYXZpbmcgYW55CisgKiAgaW5mb3JtYXRpb24geW91IHdpbGwgbmVlZCBsYXRlci4gVGhlbiB1c2UgdGhlIHNhdmVkIGluZm9ybWF0aW9uIGluCisgKiAgZXRoZXJTdGF0c1RhYmxlX3Jvd19wcmVwKCkgZm9yIHBvcHVsYXRpbmcgZGF0YS4KKyAqCisgKiBAbm90ZQorICogIElmIHlvdSBuZWVkIGNvbnNpc3RlbmN5IGJldHdlZW4gcm93cyAobGlrZSB5b3Ugd2FudCBzdGF0aXN0aWNzCisgKiAgZm9yIGVhY2ggcm93IHRvIGJlIGZyb20gdGhlIHNhbWUgdGltZSBmcmFtZSksIHlvdSBzaG91bGQgc2V0IGFsbAorICogIGRhdGEgaGVyZS4KKyAqCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OworICAgIHNpemVfdCAgICAgICAgICBjb3VudCA9IDA7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzUyOk06IHwgICB8LT4gc2V0IGluZGV4ZXMgaW4gbmV3IGV0aGVyU3RhdHNUYWJsZSByb3dyZXEgY29udGV4dC4KKyAgICAgKiBkYXRhIGNvbnRleHQgd2lsbCBiZSBzZXQgZnJvbSB0aGUgcGFyYW0gKHVubGVzcyBOVUxMLAorICAgICAqICAgICAgaW4gd2hpY2ggY2FzZSBhIG5ldyBkYXRhIGNvbnRleHQgd2lsbCBiZSBhbGxvY2F0ZWQpCisgICAgICovCisKKyAgICAvKgorICAgICAqIHRlbXBvcmFyeSBzdG9yYWdlIGZvciBpbmRleCB2YWx1ZXMKKyAgICAgKi8KKyAgICAKKyAgICAvKgorICAgICAqIGV0aGVyU3RhdHNJbmRleCgxKS9JTlRFR0VSMzIvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvaAorICAgICAqLworCisgICAgbG9uZyAgICAgICAgICAgIGV0aGVyU3RhdHNJbmRleDsKKyAgICBpbnQgICAgICAgICAgICAgZmQ7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gMCwgcmV0dmFsID0gMDsKKworI2lmIGRlZmluZWQobGludXgpCisgICAgc3RydWN0IGlmbmFtZSAqbGlzdF9oZWFkID0gTlVMTCwgKnAgPSBOVUxMOworI2VuZGlmCisgICAgCisgICAgLyoKKyAgICAgKiBjcmVhdGUgc29ja2V0IGZvciBpb2N0bHMKKyAgICAgKi8KKworICAgIGZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOworICAgIGlmKGZkIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGNyZWF0ZSBzb2NrZXRcbiIpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBnZXQgdGhlIGludGVyZmFjZSBuYW1lcyBvZiB0aGUgZGV2aWNlcyBwcmVzZW50IGluIHRoZSBzeXN0ZW0sIGluIGNhc2Ugb2YgZmFpbHVyZSByZXR2YWwgc3VnZ2VzdHMgdGhlIHJlc29uIGZvciBmYWlsdXJlCisgICAgICogYW5kIGxpc3RfaGVhZCBjb250YWlucyBudWxsCisgICAgICovCisKKyNpZiBkZWZpbmVkKGxpbnV4KQorICAgIGxpc3RfaGVhZCA9IGV0aGVyc3RhdHNfaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQgKGxpc3RfaGVhZCwgJnJldHZhbCk7CisKKyAgICBpZiAoIWxpc3RfaGVhZCkgeworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsIGVycm9yIGdldHRpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBwcmVzZW50IGluIHRoZSBzeXN0ZW1cbiIpOworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSIsICJlcnJvciBnZXR0aW5nIHRoZSBpbnRlcmZhY2UgbmFtZXMgcHJlc2VudCBpbiB0aGUgc3lzdGVtIikpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBXYWxrIG92ZXIgdGhlIGxpc3Qgb2YgaW50ZXJmYWNlIG5hbWVzIHByZXNlbnQgaW4gdGhlIHN5c3RlbSBhbmQgcmV0cmVpdmUgdGhlIHN0YXRpc3RpY3MgCisgICAgICovCisKKyAgICBmb3IgKHAgPSBsaXN0X2hlYWQ7IHA7IHAgPSBwLT5pZm5fbmV4dCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSIsICJwcm9jZXNzaW5nICclcydcbiIsIHAtPm5hbWUpKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBnZXQgaW5kZXggdmlhIGlvY3RsLgorICAgICAgICAgKi8KKworICAgICAgICBldGhlclN0YXRzSW5kZXggPSAobG9uZykgZXRoZXJzdGF0c19pbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQoLTEsIHAtPm5hbWUpOworCisgICAgICAgIC8qIAorICAgICAgICAgKiAgZ2V0IHRoZSBldGhlcnN0YXRzIGNvbnRlbnRzIHBvcHVsYXRlZCwgaWYgdGhlIGRldmljZSBpcyBub3QgYW4gZXRoZXJuZXQgZGV2aWNlCisgICAgICAgICAqICB0aGUgb3BlcmF0aW9uIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBhbmQgYW4gZXJyb3IgbWVzc2FnZSB3aWxsIGJlIGxvZ2dlZAorICAgICAgICAgKi8KKyAgICAgICAgCisgICAgICAgIHJvd3JlcV9jdHggPSBldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChOVUxMKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKE1GRF9TVUNDRVNTICE9CisgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXQocm93cmVxX2N0eCwgZXRoZXJTdGF0c0luZGV4KSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciBzZXR0aW5nIGluZGV4IHdoaWxlIGxvYWRpbmcgIgorICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBkYXRhLlxuIik7CisgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjM1MjpyOiB8ICAgfC0+IHBvcHVsYXRlIGV0aGVyU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICAgICAqIFBvcHVsYXRlIGRhdGEgY29udGV4dCBoZXJlLiAob3B0aW9uYWxseSwgZGVsYXkgdW50aWwgcm93IHByZXApCisgICAgICAgICAqLworICAgICAgICAvKgorICAgICAgICAgKiBub24tVFJBTlNJRU5UIGRhdGE6IG5vIG5lZWQgdG8gY29weS4gc2V0IHBvaW50ZXIgdG8gZGF0YSAKKyAgICAgICAgICovCisKKyAgICAgICAgbWVtc2V0ICgmcm93cmVxX2N0eC0+ZGF0YSwgMCwgc2l6ZW9mIChyb3dyZXFfY3R4LT5kYXRhKSk7CisgICAgICAgIHJjID0gaW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IChyb3dyZXFfY3R4LCBmZCwgcC0+bmFtZSk7CisKKyAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgZ2V0dGluZyB0aGUgc3RhdGlzdGljcyBmb3IgaW50ZXJmYWNlIHwlc3wgIgorICAgICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBkYXRhLCBvcGVyYXRpb24gbWlnaHQgbm90IGJlIHN1cHBvcnRlZFxuIiwgcC0+bmFtZSkpOworICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaW5zZXJ0IGludG8gdGFibGUgY29udGFpbmVyCisgICAgICAgICAqLworICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgaW5zZXJ0aW5nIHwlc3wgIiwgcC0+bmFtZSkpOworICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICBjbG9zZShmZCk7CisKKyAgICAvKgorICAgICAqIGZyZWUgdGhlIGludGVyZmFjZSBuYW1lcyBsaXN0IAorICAgICAqLworCisgICAgaWYgKCAoZXRoZXJzdGF0c19pbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWUobGlzdF9oZWFkKSkgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLCBlcnJvciBmcmVlaW5nIHRoZSBpbnRlcmZhY2UgbmFtZSBsaXN0IFxuIik7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlIiwgImVycm9yIGZyZWVpbmcgdGhlIGludGVyZmFjZSBuYW1lIGxpc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisjZW5kaWYKKyAgICAKKyAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgImluc2VydGVkICVkIHJlY29yZHNcbiIsIGNvdW50KSk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkICovCisKKworLyoqCisgKiBjb250YWluZXIgY2xlYW4gdXAKKyAqCisgKiBAcGFyYW0gY29udGFpbmVyIGNvbnRhaW5lciB3aXRoIGFsbCBjdXJyZW50IGl0ZW1zCisgKgorICogIFRoaXMgb3B0aW9uYWwgY2FsbGJhY2sgaXMgY2FsbGVkIHByaW9yIHRvIGFsbAorICogIGl0ZW0ncyBiZWluZyByZW1vdmVkIGZyb20gdGhlIGNvbnRhaW5lci4gSWYgeW91CisgKiAgbmVlZCB0byBkbyBhbnkgcHJvY2Vzc2luZyBiZWZvcmUgdGhhdCwgZG8gaXQgaGVyZS4KKyAqCisgKiBAbm90ZQorICogIFRoZSBNRkQgaGVscGVyIHdpbGwgdGFrZSBjYXJlIG9mIHJlbGVhc2luZyBhbGwgdGhlIHJvdyBjb250ZXh0cy4KKyAqCisgKi8KK3ZvaWQKK2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzgwOk06IEZyZWUgZXRoZXJTdGF0c1RhYmxlIGNvbnRhaW5lciBkYXRhLgorICAgICAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBwcmVwYXJlIHJvdyBmb3IgcHJvY2Vzc2luZy4KKyAqCisgKiAgV2hlbiB0aGUgYWdlbnQgaGFzIGxvY2F0ZWQgdGhlIHJvdyBmb3IgYSByZXF1ZXN0LCB0aGlzIGZ1bmN0aW9uIGlzCisgKiAgY2FsbGVkIHRvIHByZXBhcmUgdGhlIHJvdyBmb3IgcHJvY2Vzc2luZy4gSWYgeW91IGZ1bGx5IHBvcHVsYXRlZAorICogIHRoZSBkYXRhIGNvbnRleHQgZHVyaW5nIHRoZSBpbmRleCBzZXR1cCBwaGFzZSwgeW91IG1heSBub3QgbmVlZCB0bworICogIGRvIGFueXRoaW5nLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4IHBvaW50ZXIgdG8gYSBjb250ZXh0LgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX3Jvd19wcmVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX3Jvd19wcmVwIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjM5MDpvOiBQcmVwYXJlIHJvdyBmb3IgcmVxdWVzdC4KKyAgICAgKiBJZiBwb3B1bGF0aW5nIHJvdyBkYXRhIHdhcyBkZWxheWVkLCB0aGlzIGlzIHRoZSBwbGFjZSB0bworICAgICAqIGZpbGwgaW4gdGhlIHJvdyBmb3IgdGhpcyByZXF1ZXN0LgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfcm93X3ByZXAgKi8KKworLyoKKyAqIFRPRE86NDIwOnI6IEltcGxlbWVudCBldGhlclN0YXRzVGFibGUgaW5kZXggdmFsaWRhdGlvbi4KKyAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c0luZGV4CisgKiBldGhlclN0YXRzSW5kZXggaXMgc3ViaWQgMSBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMQorICogRGVzY3JpcHRpb246CitUaGUgdmFsdWUgb2YgdGhpcyBvYmplY3QgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzCisgICAgICAgIGV0aGVyU3RhdHMgZW50cnkuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDEgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKiBSYW5nZXM6ICAxIC0gNjU1MzU7CisgKgorICogSXRzIHN5bnRheCBpcyBJTlRFR0VSMzIgKGJhc2VkIG9uIHBlcmx0eXBlIElOVEVHRVIzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9JTlRFR0VSLiBUaGUgQyB0eXBlIGRlY2wgaXMgbG9uZyAobG9uZykKKyAqLworLyoqCisgKiBjaGVjayB2YWxpZGl0eSBvZiBldGhlclN0YXRzSW5kZXggaW5kZXggcG9ydGlvbgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICA6IHRoZSBpbmNvbWluZyB2YWx1ZSBpcyBsZWdhbAorICogQHJldHZhbCBNRkRfRVJST1IgICAgIDogdGhlIGluY29taW5nIHZhbHVlIGlzIE5PVCBsZWdhbAorICoKKyAqIEBub3RlIHRoaXMgaXMgbm90IHRoZSBwbGFjZSB0byBkbyBhbnkgY2hlY2tzIGZvciB0aGUgc2FuaXR5CisgKiAgICAgICBvZiBtdWx0aXBsZSBpbmRleGVzLiBUaG9zZSB0eXBlcyBvZiBjaGVja3Mgc2hvdWxkIGJlIGRvbmUgaW4gdGhlCisgKiAgICAgICBldGhlclN0YXRzVGFibGVfdmFsaWRhdGVfaW5kZXgoKSBmdW5jdGlvbi4KKyAqCisgKiBAbm90ZSBBbHNvIGtlZXAgaW4gbWluZCB0aGF0IGlmIHRoZSBpbmRleCByZWZlcnMgdG8gYSByb3cgaW4gdGhpcyBvcgorICogICAgICAgc29tZSBvdGhlciB0YWJsZSwgeW91IGNhbid0IGNoZWNrIGZvciB0aGF0IHJvdyBoZXJlIHRvIG1ha2UKKyAqICAgICAgIGRlY2lzaW9ucywgc2luY2UgdGhhdCByb3cgbWlnaHQgbm90IGJlIGNyZWF0ZWQgeWV0LCBidXQgbWF5CisgKiAgICAgICBiZSBjcmVhdGVkIGR1cmluZyB0aGUgcHJvY2Vzc2luZyB0aGlzIHJlcXVlc3QuIElmIHlvdSBoYXZlCisgKiAgICAgICBzdWNoIGNoZWNrcywgdGhleSBzaG91bGQgYmUgZG9uZSBpbiB0aGUgY2hlY2tfZGVwZW5kZW5jaWVzCisgKiAgICAgICBmdW5jdGlvbiwgYmVjYXVzZSBhbnkgbmV3L2RlbGV0ZWQvY2hhbmdlZCByb3dzIHNob3VsZCBiZQorICogICAgICAgYXZhaWxhYmxlIHRoZW4uCisgKgorICogVGhlIGZvbGxvd2luZyBjaGVja3MgaGF2ZSBhbHJlYWR5IGJlZW4gZG9uZSBmb3IgeW91OgorICogICAgVGhlIHZhbHVlIGlzIGluIChvbmUgb2YpIHRoZSByYW5nZSBzZXQocyk6ICAxIC0gNjU1MzUKKyAqCisgKiBJZiB0aGVyZSBhIG5vIG90aGVyIGNoZWNrcyB5b3UgbmVlZCB0byBkbywgc2ltcGx5IHJldHVybiBNRkRfU1VDQ0VTUy4KKyAqLworaW50CitldGhlclN0YXRzSW5kZXhfY2hlY2tfaW5kZXgoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzSW5kZXhfY2hlY2tfaW5kZXgiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDI2Ok06IHwtPiBDaGVjayBldGhlclN0YXRzVGFibGUgaW5kZXggZXRoZXJTdGF0c0luZGV4LgorICAgICAqIGNoZWNrIHRoYXQgaW5kZXggdmFsdWUgaW4gdGhlIHRhYmxlIGNvbnRleHQgaXMgbGVnYWwuCisgICAgICogKHJvd3JlcV9jdHgtPnRibF9pbmRleC5ldGhlclN0YXRzSW5kZXgpCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7ICAgICAgICAgLyogZXRoZXJTdGF0c0luZGV4IGluZGV4IG9rICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNJbmRleF9jaGVja19pbmRleCAqLworCisvKioKKyAqIHZlcmlmeSBzcGVjaWZpZWQgaW5kZXggaXMgdmFsaWQuCisgKgorICogVGhpcyBjaGVjayBpcyBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgdmFsdWVzIHNwZWNpZmllZCBmb3IKKyAqIHRoZSBjb2x1bW5zIG9mIHRoZSBuZXcgcm93IGFyZSB2YWxpZC4gQ29sdW1uIHZhbHVlcyBhbmQgcm93IGNvbnNpc3RlbmN5CisgKiB3aWxsIGJlIGNoZWNrZWQgbGF0ZXIuIEF0IHRoaXMgcG9pbnQsIG9ubHkgdGhlIGluZGV4IHZhbHVlcyBzaG91bGQgYmUKKyAqIGNoZWNrZWQuCisgKgorICogQWxsIG9mIHRoZSBpbmRpdmlkdWFsIGluZGV4IHZhbGlkYXRpb24gZnVuY3Rpb25zIGhhdmUgYmVlbiBjYWxsZWQsIHNvIHRoaXMKKyAqIGlzIHRoZSBwbGFjZSB0byBtYWtlIHN1cmUgdGhleSBhcmUgdmFsaWQgYXMgYSB3aG9sZSB3aGVuIGNvbWJpbmVkLiBJZgorICogeW91IG9ubHkgaGF2ZSBvbmUgaW5kZXgsIHRoZW4geW91IHByb2JhYmx5IGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgZWxzZQorICogaGVyZS4KKyAqIAorICogQG5vdGUgS2VlcCBpbiBtaW5kIHRoYXQgaWYgdGhlIGluZGV4ZXMgcmVmZXIgdG8gYSByb3cgaW4gdGhpcyBvcgorICogICAgICAgc29tZSBvdGhlciB0YWJsZSwgeW91IGNhbid0IGNoZWNrIGZvciB0aGF0IHJvdyBoZXJlIHRvIG1ha2UKKyAqICAgICAgIGRlY2lzaW9ucywgc2luY2UgdGhhdCByb3cgbWlnaHQgbm90IGJlIGNyZWF0ZWQgeWV0LCBidXQgbWF5CisgKiAgICAgICBiZSBjcmVhdGVkIGR1cmluZyB0aGUgcHJvY2Vzc2luZyB0aGlzIHJlcXVlc3QuIElmIHlvdSBoYXZlCisgKiAgICAgICBzdWNoIGNoZWNrcywgdGhleSBzaG91bGQgYmUgZG9uZSBpbiB0aGUgY2hlY2tfZGVwZW5kZW5jaWVzCisgKiAgICAgICBmdW5jdGlvbiwgYmVjYXVzZSBhbnkgbmV3L2RlbGV0ZWQvY2hhbmdlZCByb3dzIHNob3VsZCBiZQorICogICAgICAgYXZhaWxhYmxlIHRoZW4uCisgKgorICoKKyAqIEBwYXJhbSBldGhlclN0YXRzVGFibGVfcmVnCisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlciByZWdpc3RyYXRpb24gZGF0YQorICogQHBhcmFtIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4KKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0NBTk5PVF9DUkVBVEVfTk9XICA6IGluZGV4IG5vdCB2YWxpZCByaWdodCBub3cKKyAqIEByZXR2YWwgTUZEX0NBTk5PVF9DUkVBVEVfRVZFUiA6IGluZGV4IG5ldmVyIHZhbGlkCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX3ZhbGlkYXRlX2luZGV4KGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICByYyA9IE1GRF9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV92YWxpZGF0ZV9pbmRleCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDMwOk06IHwtPiBWYWxpZGF0ZSBwb3RlbnRpYWwgZXRoZXJTdGF0c1RhYmxlIGluZGV4LgorICAgICAqLworICAgIGlmICgxKSB7CisgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiaW52YWxpZCBpbmRleCBmb3IgYSBuZXcgcm93IGluIHRoZSAiCisgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGUgdGFibGUuXG4iKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogZGV0ZXJtaW5lIGZhaWx1cmUgdHlwZS4KKyAgICAgICAgICoKKyAgICAgICAgICogSWYgdGhlIGluZGV4IGNvdWxkIG5vdCBldmVyIGJlIGNyZWF0ZWQsIHJldHVybiBNRkRfTk9UX0VWRVIKKyAgICAgICAgICogSWYgdGhlIGluZGV4IGNhbiBub3QgYmUgY3JlYXRlZCB1bmRlciB0aGUgcHJlc2VudCBjaXJjdW1zdGFuY2VzCisgICAgICAgICAqIChldmVuIHRob3VnaCBpdCBjb3VsZCBiZSBjcmVhdGVkIHVuZGVyIG90aGVyIGNpcmN1bXN0YW5jZXMpLAorICAgICAgICAgKiByZXR1cm4gTUZEX05PVF9OT1cuCisgICAgICAgICAqLworICAgICAgICBpZiAoMCkgeworICAgICAgICAgICAgcmV0dXJuIE1GRF9DQU5OT1RfQ1JFQVRFX0VWRVI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gTUZEX0NBTk5PVF9DUkVBVEVfTk9XOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdmFsaWRhdGVfaW5kZXggKi8KKworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA3MDBmNAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIEVUSEVSU1RBVFNUQUJMRV9EQVRBX0FDQ0VTU19ICisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9EQVRBX0FDQ0VTU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBldGhlclN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEsIGxlbmd0aDogOQorICAgICAqLworCisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2luaXRfZGF0YShldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBldGhlclN0YXRzVGFibGVfcmVnKTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjE4MDpvOiBSZXZpZXcgZXRoZXJTdGF0c1RhYmxlIGNhY2hlIHRpbWVvdXQuCisgICAgICogVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUgY2FjaGUgdGltZXMgb3V0CisgICAgICovCisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9DQUNIRV9USU1FT1VUICAgNjAKKworICAgIHZvaWQgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWNoZSAqIGNhY2hlKTsKKyAgICB2b2lkICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cik7CisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisgICAgdm9pZCAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9jYWNoZV9sb2FkKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICB2b2lkICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2NhY2hlX2ZyZWUobmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworCisjZGVmaW5lIE1BWF9MSU5FX1NJWkUgMjU2CisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd19wcmVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV92YWxpZGF0ZV9pbmRleChldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0luZGV4X2NoZWNrX2luZGV4KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7ICAgICAgIC8qIGludGVybmFsICovCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRVRIRVJTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmE1MWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5jCkBAIC0wLDAgKzEsMTQxMSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwODggJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJldGhlclN0YXRzVGFibGUuaCIKKworCisvKiogQGRlZmdyb3VwIGRhdGFfZ2V0IGRhdGFfZ2V0OiBSb3V0aW5lcyB0byBnZXQgZGF0YQorICoKKyAqIFRPRE86MjMwOk06IEltcGxlbWVudCBldGhlclN0YXRzVGFibGUgZ2V0IHJvdXRpbmVzLgorICogVE9ETzoyNDA6TTogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBtYXBwaW5nIHJvdXRpbmVzIChpZiBhbnkpLgorICoKKyAqIFRoZXNlIHJvdXRpbmUgYXJlIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzLiBUaGUKKyAqIHJvdyBjb250ZXh0IGlzIHBhc3NlZCwgYWxvbmcgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSB3aGVyZSB0aGUKKyAqIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQuCisgKgorICogQHsKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGV0aGVyU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLCBsZW5ndGg6IDkKKyAqLworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAqIFRPRE86MjAwOnI6IEltcGxlbWVudCBldGhlclN0YXRzVGFibGUgZGF0YSBjb250ZXh0IGZ1bmN0aW9ucy4KKyAqLworCisKKy8qKgorICogc2V0IG1pYiBpbmRleChlcykKKyAqCisgKiBAcGFyYW0gdGJsX2lkeCBtaWIgaW5kZXggc3RydWN0dXJlCisgKiBAcGFyYW0gZXRoZXJTdGF0c0luZGV4X3ZhbAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgY29udmVuaWVuY2UgZnVuY3Rpb24gaXMgdXNlZnVsIGZvciBzZXR0aW5nIGFsbCB0aGUgTUlCIGluZGV4CisgKiAgY29tcG9uZW50cyB3aXRoIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuIEl0IGlzIGFzc3VtZSB0aGF0IHRoZSBDIHZhbHVlcworICogIGhhdmUgYWxyZWFkeSBiZWVuIG1hcHBlZCBmcm9tIHRoZWlyIG5hdGl2ZS9yYXdmb3JtYXQgdG8gdGhlIE1JQiBmb3JtYXQuCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleCAqIHRibF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGV0aGVyU3RhdHNJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBldGhlclN0YXRzSW5kZXgoMSkvSU5URUdFUjMyL0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL2ggCisgICAgICovCisgICAgdGJsX2lkeC0+ZXRoZXJTdGF0c0luZGV4ID0gZXRoZXJTdGF0c0luZGV4X3ZhbDsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogc2V0IHJvdyBjb250ZXh0IGluZGV4ZXMKKyAqCisgKiBAcGFyYW0gcmVxcmVxX2N0eCB0aGUgcm93IGNvbnRleHQgdGhhdCBuZWVkcyB1cGRhdGVkIGluZGV4ZXMKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIG1pYiBpbmRleHMsIHRoZW4gdXBkYXRlcyB0aGUgb2lkIGluZGV4cworICogIGZyb20gdGhlIG1pYiBpbmRleC4KKyAqLworaW50CitldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZXRoZXJTdGF0c0luZGV4X3ZhbCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2luZGV4ZXNfc2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0KKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoJnJvd3JlcV9jdHgtPnRibF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNJbmRleF92YWwpKQorICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0IG1pYiBpbmRleCB0byBvaWQgaW5kZXgKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4LT5vaWRfaWR4LmxlbiA9IHNpemVvZihyb3dyZXFfY3R4LT5vaWRfdG1wKSAvIHNpemVvZihvaWQpOworICAgIGlmICgwICE9IGV0aGVyU3RhdHNUYWJsZV9pbmRleF90b19vaWQoJnJvd3JlcV9jdHgtPm9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+dGJsX2lkeCkpIHsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9pbmRleGVzX3NldCAqLworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNEYXRhU291cmNlCisgKiBldGhlclN0YXRzRGF0YVNvdXJjZSBpcyBzdWJpZCAyIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgQ3JlYXRlLgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMgorICogRGVzY3JpcHRpb246CitUaGlzIG9iamVjdCBpZGVudGlmaWVzIHRoZSBzb3VyY2Ugb2YgdGhlIGRhdGEgdGhhdAorICAgICAgICB0aGlzIGV0aGVyU3RhdHMgZW50cnkgaXMgY29uZmlndXJlZCB0byBhbmFseXplLiAgVGhpcworICAgICAgICBzb3VyY2UgY2FuIGJlIGFueSBldGhlcm5ldCBpbnRlcmZhY2Ugb24gdGhpcyBkZXZpY2UuCisgICAgICAgIEluIG9yZGVyIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBpbnRlcmZhY2UsIHRoaXMgb2JqZWN0CisgICAgICAgIHNoYWxsIGlkZW50aWZ5IHRoZSBpbnN0YW5jZSBvZiB0aGUgaWZJbmRleCBvYmplY3QsCisgICAgICAgIGRlZmluZWQgaW4gUkZDIDIyMzMgWzE3XSwgZm9yIHRoZSBkZXNpcmVkIGludGVyZmFjZS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGlmIGFuIGVudHJ5IHdlcmUgdG8gcmVjZWl2ZSBkYXRhIGZyb20KKyAgICAgICAgaW50ZXJmYWNlICMxLCB0aGlzIG9iamVjdCB3b3VsZCBiZSBzZXQgdG8gaWZJbmRleC4xLgorCisgICAgICAgIFRoZSBzdGF0aXN0aWNzIGluIHRoaXMgZ3JvdXAgcmVmbGVjdCBhbGwgcGFja2V0cworICAgICAgICBvbiB0aGUgbG9jYWwgbmV0d29yayBzZWdtZW50IGF0dGFjaGVkIHRvIHRoZSBpZGVudGlmaWVkCisgICAgICAgIGludGVyZmFjZS4KKworICAgICAgICBBbiBhZ2VudCBtYXkgb3IgbWF5IG5vdCBiZSBhYmxlIHRvIHRlbGwgaWYgZnVuZGFtZW50YWwKKyAgICAgICAgY2hhbmdlcyB0byB0aGUgbWVkaWEgb2YgdGhlIGludGVyZmFjZSBoYXZlIG9jY3VycmVkIGFuZAorICAgICAgICBuZWNlc3NpdGF0ZSBhbiBpbnZhbGlkYXRpb24gb2YgdGhpcyBlbnRyeS4gIEZvciBleGFtcGxlLCBhCisgICAgICAgIGhvdC1wbHVnZ2FibGUgZXRoZXJuZXQgY2FyZCBjb3VsZCBiZSBwdWxsZWQgb3V0IGFuZCByZXBsYWNlZAorICAgICAgICBieSBhIHRva2VuLXJpbmcgY2FyZC4gIEluIHN1Y2ggYSBjYXNlLCBpZiB0aGUgYWdlbnQgaGFzIHN1Y2gKKyAgICAgICAga25vd2xlZGdlIG9mIHRoZSBjaGFuZ2UsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgaXQKKyAgICAgICAgaW52YWxpZGF0ZSB0aGlzIGVudHJ5LgorCisgICAgICAgIFRoaXMgb2JqZWN0IG1heSBub3QgYmUgbW9kaWZpZWQgaWYgdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgZXRoZXJTdGF0c1N0YXR1cyBvYmplY3QgaXMgZXF1YWwgdG8gdmFsaWQoMSkuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDEKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBPQkpFQ1RJRCAoYmFzZWQgb24gcGVybHR5cGUgT0JKRUNUSUQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fT0JKRUNUX0lELiBUaGUgQyB0eXBlIGRlY2wgaXMgb2lkIChvaWQpCisgKiBUaGlzIGRhdGEgdHlwZSByZXF1aXJlcyBhIGxlbmd0aC4KKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzRGF0YVNvdXJjZSBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIG9pZCB2YXJpYWJsZQorICogQHBhcmFtIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gYSBzaXplX3QuIE9uIGVudHJ5LCBpdCB3aWxsIGNvbnRhaW4gdGhlIHNpemUgKGluIGJ5dGVzKQorICogICAgICAgIHBvaW50ZWQgdG8gYnkgZXRoZXJTdGF0c0RhdGFTb3VyY2UuCisgKiAgICAgICAgT24gZXhpdCwgdGhpcyB2YWx1ZSBzaG91bGQgY29udGFpbiB0aGUgZGF0YSBzaXplIChpbiBieXRlcykuCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyoKKyAqIEBub3RlIElmIHlvdSBuZWVkIG1vcmUgdGhhbiAoKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cikgYnl0ZXMgb2YgbWVtb3J5LAorICogICAgICAgYWxsb2NhdGUgaXQgdXNpbmcgbWFsbG9jKCkgYW5kIHVwZGF0ZSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0ci4KKyAqICAgICAgIDxiPkRPIE5PVDwvYj4gZnJlZSB0aGUgcHJldmlvdXMgcG9pbnRlci4KKyAqICAgICAgIFRoZSBNRkQgaGVscGVyIHdpbGwgcmVsZWFzZSB0aGUgbWVtb3J5IHlvdSBhbGxvY2F0ZS4KKyAqCisgKiBAcmVtYXJrIElmIHlvdSBjYWxsIHRoaXMgZnVuY3Rpb24geW91cnNlbGYsIHlvdSBhcmUgcmVzcG9uc2libGUKKyAqICAgICAgICAgZm9yIGNoZWNraW5nIGlmIHRoZSBwb2ludGVyIGNoYW5nZWQsIGFuZCBmcmVlaW5nIGFueQorICogICAgICAgICBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkuIChOb3QgbmVjZXNzYXJ5IGlmIHlvdSBwYXNzCisgKiAgICAgICAgIGluIGEgcG9pbnRlciB0byBzdGF0aWMgbWVtb3J5LCBvYnZpb3VzbHkuKQorICovCitpbnQKK2V0aGVyU3RhdHNEYXRhU291cmNlX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICoqIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW5fcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciBhbmQgZW5vdWdoIHN0b3JhZ2UgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoTlVMTCAhPSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0cikKKyAgICAgICAgICAgICAgICAgICAmJiAoTlVMTCAhPSAqZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9wdHIpKTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzRGF0YVNvdXJjZV9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzRGF0YVNvdXJjZSBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9wdHIgKSBkYXRhIGFuZCAoKiBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbl9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAvKgorICAgICAqIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yIGV0aGVyU3RhdHNEYXRhU291cmNlIGRhdGEKKyAgICAgKi8KKyAgICBpZiAoKE5VTEwgPT0gKCpldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0cikpIHx8CisgICAgICAgICgoKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cikgPAorICAgICAgICAgKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuICoKKyAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZVswXSkpKSkgeworICAgICAgICAvKgorICAgICAgICAgKiBhbGxvY2F0ZSBzcGFjZSBmb3IgZXRoZXJTdGF0c0RhdGFTb3VyY2UgZGF0YQorICAgICAgICAgKi8KKyAgICAgICAgKCpldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0cikgPQorICAgICAgICAgICAgbWFsbG9jKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuICoKKyAgICAgICAgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZVswXSkpOworICAgICAgICBpZiAoTlVMTCA9PSAoKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyKSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnlcbiIpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICAgICAgfQorICAgIH0KKyAgICAoKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiAqCisgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlWzBdKTsKKyAgICBtZW1jcHkoKCpldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0ciksCisgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2UsCisgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuICoKKyAgICAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VbMF0pKTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0RhdGFTb3VyY2VfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNEcm9wRXZlbnRzCisgKiBldGhlclN0YXRzRHJvcEV2ZW50cyBpcyBzdWJpZCAzIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4zCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgZXZlbnRzIGluIHdoaWNoIHBhY2tldHMKKyAgICAgICAgd2VyZSBkcm9wcGVkIGJ5IHRoZSBwcm9iZSBkdWUgdG8gbGFjayBvZiByZXNvdXJjZXMuCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIG51bWJlciBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIG51bWJlciBvZgorICAgICAgICBwYWNrZXRzIGRyb3BwZWQ7IGl0IGlzIGp1c3QgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzCisgICAgICAgIGNvbmRpdGlvbiBoYXMgYmVlbiBkZXRlY3RlZC4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNEcm9wRXZlbnRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0Ryb3BFdmVudHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNEcm9wRXZlbnRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c0Ryb3BFdmVudHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNEcm9wRXZlbnRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c0Ryb3BFdmVudHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0Ryb3BFdmVudHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNEcm9wRXZlbnRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNEcm9wRXZlbnRzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRHJvcEV2ZW50czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0Ryb3BFdmVudHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNPY3RldHMKKyAqIGV0aGVyU3RhdHNPY3RldHMgaXMgc3ViaWQgNCBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuNAorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyBvZiBkYXRhIChpbmNsdWRpbmcKKyAgICAgICAgdGhvc2UgaW4gYmFkIHBhY2tldHMpIHJlY2VpdmVkIG9uIHRoZQorICAgICAgICBuZXR3b3JrIChleGNsdWRpbmcgZnJhbWluZyBiaXRzIGJ1dCBpbmNsdWRpbmcKKyAgICAgICAgRkNTIG9jdGV0cykuCisKKyAgICAgICAgVGhpcyBvYmplY3QgY2FuIGJlIHVzZWQgYXMgYSByZWFzb25hYmxlIGVzdGltYXRlIG9mCisgICAgICAgIDEwLU1lZ2FiaXQgZXRoZXJuZXQgdXRpbGl6YXRpb24uICBJZiBncmVhdGVyIHByZWNpc2lvbiBpcworICAgICAgICBkZXNpcmVkLCB0aGUgZXRoZXJTdGF0c1BrdHMgYW5kIGV0aGVyU3RhdHNPY3RldHMgb2JqZWN0cworICAgICAgICBzaG91bGQgYmUgc2FtcGxlZCBiZWZvcmUgYW5kIGFmdGVyIGEgY29tbW9uIGludGVydmFsLiAgVGhlCisgICAgICAgIGRpZmZlcmVuY2VzIGluIHRoZSBzYW1wbGVkIHZhbHVlcyBhcmUgUGt0cyBhbmQgT2N0ZXRzLAorICAgICAgICByZXNwZWN0aXZlbHksIGFuZCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgaW4gdGhlIGludGVydmFsIGlzCisgICAgICAgIEludGVydmFsLiAgVGhlc2UgdmFsdWVzIGFyZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgVXRpbGl6YXRpb24KKyAgICAgICAgYXMgZm9sbG93czoKKworICAgICAgICAgICAgICAgICAgICAgICAgIFBrdHMgKiAoOS42ICsgNi40KSArIChPY3RldHMgKiAuOCkKKyAgICAgICAgIFV0aWxpemF0aW9uID0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJ2YWwgKiAxMCwwMDAKKworICAgICAgICBUaGUgcmVzdWx0IG9mIHRoaXMgZXF1YXRpb24gaXMgdGhlIHZhbHVlIFV0aWxpemF0aW9uIHdoaWNoCisgICAgICAgIGlzIHRoZSBwZXJjZW50IHV0aWxpemF0aW9uIG9mIHRoZSBldGhlcm5ldCBzZWdtZW50IG9uIGEKKyAgICAgICAgc2NhbGUgb2YgMCB0byAxMDAgcGVyY2VudC4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzT2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzT2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzT2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzT2N0ZXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c09jdGV0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzT2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzT2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNPY3RldHNfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPY3RldHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNPY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNQa3RzCisgKiBldGhlclN0YXRzUGt0cyBpcyBzdWJpZCA1IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS41CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyAoaW5jbHVkaW5nIGJhZCBwYWNrZXRzLAorICAgICAgICBicm9hZGNhc3QgcGFja2V0cywgYW5kIG11bHRpY2FzdCBwYWNrZXRzKSByZWNlaXZlZC4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c1BrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c1BrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNQa3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1BrdHNfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzUGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzUGt0c192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1BrdHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzQnJvYWRjYXN0UGt0cworICogZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHMgaXMgc3ViaWQgNiBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuNgorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIGdvb2QgcGFja2V0cyByZWNlaXZlZCB0aGF0IHdlcmUKKyAgICAgICAgZGlyZWN0ZWQgdG8gdGhlIGJyb2FkY2FzdCBhZGRyZXNzLiAgTm90ZSB0aGF0IHRoaXMKKyAgICAgICAgZG9lcyBub3QgaW5jbHVkZSBtdWx0aWNhc3QgcGFja2V0cy4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzQnJvYWRjYXN0UGt0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzCisgKiBldGhlclN0YXRzTXVsdGljYXN0UGt0cyBpcyBzdWJpZCA3IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS43CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgZ29vZCBwYWNrZXRzIHJlY2VpdmVkIHRoYXQgd2VyZQorICAgICAgICBkaXJlY3RlZCB0byBhIG11bHRpY2FzdCBhZGRyZXNzLiAgTm90ZSB0aGF0IHRoaXMgbnVtYmVyCisgICAgICAgIGRvZXMgbm90IGluY2x1ZGUgcGFja2V0cyBkaXJlY3RlZCB0byB0aGUgYnJvYWRjYXN0CisKKyAgICAgICAgYWRkcmVzcy4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c011bHRpY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzTXVsdGljYXN0UGt0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNDUkNBbGlnbkVycm9ycworICogZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzIGlzIHN1YmlkIDggb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjgKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIHRoYXQKKyAgICAgICAgaGFkIGEgbGVuZ3RoIChleGNsdWRpbmcgZnJhbWluZyBiaXRzLCBidXQKKyAgICAgICAgaW5jbHVkaW5nIEZDUyBvY3RldHMpIG9mIGJldHdlZW4gNjQgYW5kIDE1MTgKKyAgICAgICAgb2N0ZXRzLCBpbmNsdXNpdmUsIGJ1dCBoYWQgZWl0aGVyIGEgYmFkCisgICAgICAgIEZyYW1lIENoZWNrIFNlcXVlbmNlIChGQ1MpIHdpdGggYW4gaW50ZWdyYWwKKyAgICAgICAgbnVtYmVyIG9mIG9jdGV0cyAoRkNTIEVycm9yKSBvciBhIGJhZCBGQ1Mgd2l0aAorICAgICAgICBhIG5vbi1pbnRlZ3JhbCBudW1iZXIgb2Ygb2N0ZXRzIChBbGlnbm1lbnQgRXJyb3IpLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHMKKyAqIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzIGlzIHN1YmlkIDkgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjkKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIHRoYXQgd2VyZQorICAgICAgICBsZXNzIHRoYW4gNjQgb2N0ZXRzIGxvbmcgKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMsCisgICAgICAgIGJ1dCBpbmNsdWRpbmcgRkNTIG9jdGV0cykgYW5kIHdlcmUgb3RoZXJ3aXNlIHdlbGwKKyAgICAgICAgZm9ybWVkLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzVW5kZXJzaXplUGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzVW5kZXJzaXplUGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVW5kZXJzaXplUGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzVW5kZXJzaXplUGt0cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNVbmRlcnNpemVQa3RzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVW5kZXJzaXplUGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c092ZXJzaXplUGt0cworICogZXRoZXJTdGF0c092ZXJzaXplUGt0cyBpcyBzdWJpZCAxMCBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMTAKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIHRoYXQgd2VyZQorICAgICAgICBsb25nZXIgdGhhbiAxNTE4IG9jdGV0cyAoZXhjbHVkaW5nIGZyYW1pbmcgYml0cywKKyAgICAgICAgYnV0IGluY2x1ZGluZyBGQ1Mgb2N0ZXRzKSBhbmQgd2VyZSBvdGhlcndpc2UKKyAgICAgICAgd2VsbCBmb3JtZWQuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzT3ZlcnNpemVQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c092ZXJzaXplUGt0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c092ZXJzaXplUGt0cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzT3ZlcnNpemVQa3RzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3ZlcnNpemVQa3RzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzT3ZlcnNpemVQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzRnJhZ21lbnRzCisgKiBldGhlclN0YXRzRnJhZ21lbnRzIGlzIHN1YmlkIDExIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xMQorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdGhhdCB3ZXJlIGxlc3MgdGhhbgorICAgICAgICA2NCBvY3RldHMgaW4gbGVuZ3RoIChleGNsdWRpbmcgZnJhbWluZyBiaXRzIGJ1dCBpbmNsdWRpbmcKKyAgICAgICAgRkNTIG9jdGV0cykgYW5kIGhhZCBlaXRoZXIgYSBiYWQgRnJhbWUgQ2hlY2sgU2VxdWVuY2UKKyAgICAgICAgKEZDUykgd2l0aCBhbiBpbnRlZ3JhbCBudW1iZXIgb2Ygb2N0ZXRzIChGQ1MgRXJyb3IpIG9yIGEKKyAgICAgICAgYmFkIEZDUyB3aXRoIGEgbm9uLWludGVncmFsIG51bWJlciBvZiBvY3RldHMgKEFsaWdubWVudAorICAgICAgICBFcnJvcikuCisKKyAgICAgICAgTm90ZSB0aGF0IGl0IGlzIGVudGlyZWx5IG5vcm1hbCBmb3IgZXRoZXJTdGF0c0ZyYWdtZW50cyB0bworICAgICAgICBpbmNyZW1lbnQuICBUaGlzIGlzIGJlY2F1c2UgaXQgY291bnRzIGJvdGggcnVudHMgKHdoaWNoIGFyZQorICAgICAgICBub3JtYWwgb2NjdXJyZW5jZXMgZHVlIHRvIGNvbGxpc2lvbnMpIGFuZCBub2lzZSBoaXRzLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0ZyYWdtZW50cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNGcmFnbWVudHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNGcmFnbWVudHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGV0aGVyU3RhdHNGcmFnbWVudHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNGcmFnbWVudHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzRnJhZ21lbnRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNGcmFnbWVudHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNGcmFnbWVudHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c0ZyYWdtZW50c192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0ZyYWdtZW50czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0ZyYWdtZW50c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c0phYmJlcnMKKyAqIGV0aGVyU3RhdHNKYWJiZXJzIGlzIHN1YmlkIDEyIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xMgorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdGhhdCB3ZXJlCisgICAgICAgIGxvbmdlciB0aGFuIDE1MTggb2N0ZXRzIChleGNsdWRpbmcgZnJhbWluZyBiaXRzLAorICAgICAgICBidXQgaW5jbHVkaW5nIEZDUyBvY3RldHMpLCBhbmQgaGFkIGVpdGhlciBhIGJhZAorICAgICAgICBGcmFtZSBDaGVjayBTZXF1ZW5jZSAoRkNTKSB3aXRoIGFuIGludGVncmFsIG51bWJlcgorICAgICAgICBvZiBvY3RldHMgKEZDUyBFcnJvcikgb3IgYSBiYWQgRkNTIHdpdGggYSBub24taW50ZWdyYWwKKyAgICAgICAgbnVtYmVyIG9mIG9jdGV0cyAoQWxpZ25tZW50IEVycm9yKS4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBkZWZpbml0aW9uIG9mIGphYmJlciBpcyBkaWZmZXJlbnQKKyAgICAgICAgdGhhbiB0aGUgZGVmaW5pdGlvbiBpbiBJRUVFLTgwMi4zIHNlY3Rpb24gOC4yLjEuNQorICAgICAgICAoMTBCQVNFNSkgYW5kIHNlY3Rpb24gMTAuMy4xLjQgKDEwQkFTRTIpLiAgVGhlc2UKKyAgICAgICAgZG9jdW1lbnRzIGRlZmluZSBqYWJiZXIgYXMgdGhlIGNvbmRpdGlvbiB3aGVyZSBhbnkKKyAgICAgICAgcGFja2V0IGV4Y2VlZHMgMjAgbXMuICBUaGUgYWxsb3dlZCByYW5nZSB0byBkZXRlY3QKKyAgICAgICAgamFiYmVyIGlzIGJldHdlZW4gMjAgbXMgYW5kIDE1MCBtcy4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNKYWJiZXJzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0phYmJlcnNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNKYWJiZXJzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c0phYmJlcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNKYWJiZXJzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c0phYmJlcnNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNKYWJiZXJzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzSmFiYmVyc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzSmFiYmVyc192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0phYmJlcnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNKYWJiZXJzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzQ29sbGlzaW9ucworICogZXRoZXJTdGF0c0NvbGxpc2lvbnMgaXMgc3ViaWQgMTMgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjEzCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBiZXN0IGVzdGltYXRlIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sbGlzaW9ucworICAgICAgICBvbiB0aGlzIEV0aGVybmV0IHNlZ21lbnQuCisKKyAgICAgICAgVGhlIHZhbHVlIHJldHVybmVkIHdpbGwgZGVwZW5kIG9uIHRoZSBsb2NhdGlvbiBvZiB0aGUKKyAgICAgICAgUk1PTiBwcm9iZS4gU2VjdGlvbiA4LjIuMS4zICgxMEJBU0UtNSkgYW5kIHNlY3Rpb24KKyAgICAgICAgMTAuMy4xLjMgKDEwQkFTRS0yKSBvZiBJRUVFIHN0YW5kYXJkIDgwMi4zIHN0YXRlcyB0aGF0IGEKKyAgICAgICAgc3RhdGlvbiBtdXN0IGRldGVjdCBhIGNvbGxpc2lvbiwgaW4gdGhlIHJlY2VpdmUgbW9kZSwgaWYKKyAgICAgICAgdGhyZWUgb3IgbW9yZSBzdGF0aW9ucyBhcmUgdHJhbnNtaXR0aW5nIHNpbXVsdGFuZW91c2x5LiAgQQorICAgICAgICByZXBlYXRlciBwb3J0IG11c3QgZGV0ZWN0IGEgY29sbGlzaW9uIHdoZW4gdHdvIG9yIG1vcmUKKworICAgICAgICBzdGF0aW9ucyBhcmUgdHJhbnNtaXR0aW5nIHNpbXVsdGFuZW91c2x5LiAgVGh1cyBhIHByb2JlCisgICAgICAgIHBsYWNlZCBvbiBhIHJlcGVhdGVyIHBvcnQgY291bGQgcmVjb3JkIG1vcmUgY29sbGlzaW9ucworICAgICAgICB0aGFuIGEgcHJvYmUgY29ubmVjdGVkIHRvIGEgc3RhdGlvbiBvbiB0aGUgc2FtZSBzZWdtZW50CisgICAgICAgIHdvdWxkLgorCisgICAgICAgIFByb2JlIGxvY2F0aW9uIHBsYXlzIGEgbXVjaCBzbWFsbGVyIHJvbGUgd2hlbiBjb25zaWRlcmluZworICAgICAgICAxMEJBU0UtVC4gIDE0LjIuMS40ICgxMEJBU0UtVCkgb2YgSUVFRSBzdGFuZGFyZCA4MDIuMworICAgICAgICBkZWZpbmVzIGEgY29sbGlzaW9uIGFzIHRoZSBzaW11bHRhbmVvdXMgcHJlc2VuY2Ugb2Ygc2lnbmFscworICAgICAgICBvbiB0aGUgRE8gYW5kIFJEIGNpcmN1aXRzICh0cmFuc21pdHRpbmcgYW5kIHJlY2VpdmluZworICAgICAgICBhdCB0aGUgc2FtZSB0aW1lKS4gIEEgMTBCQVNFLVQgc3RhdGlvbiBjYW4gb25seSBkZXRlY3QKKyAgICAgICAgY29sbGlzaW9ucyB3aGVuIGl0IGlzIHRyYW5zbWl0dGluZy4gIFRodXMgcHJvYmVzIHBsYWNlZCBvbgorICAgICAgICBhIHN0YXRpb24gYW5kIGEgcmVwZWF0ZXIsIHNob3VsZCByZXBvcnQgdGhlIHNhbWUgbnVtYmVyIG9mCisgICAgICAgIGNvbGxpc2lvbnMuCisKKyAgICAgICAgTm90ZSBhbHNvIHRoYXQgYW4gUk1PTiBwcm9iZSBpbnNpZGUgYSByZXBlYXRlciBzaG91bGQKKyAgICAgICAgaWRlYWxseSByZXBvcnQgY29sbGlzaW9ucyBiZXR3ZWVuIHRoZSByZXBlYXRlciBhbmQgb25lIG9yCisgICAgICAgIG1vcmUgb3RoZXIgaG9zdHMgKHRyYW5zbWl0IGNvbGxpc2lvbnMgYXMgZGVmaW5lZCBieSBJRUVFCisgICAgICAgIDgwMi4zaykgcGx1cyByZWNlaXZlciBjb2xsaXNpb25zIG9ic2VydmVkIG9uIGFueSBjb2F4CisgICAgICAgIHNlZ21lbnRzIHRvIHdoaWNoIHRoZSByZXBlYXRlciBpcyBjb25uZWN0ZWQuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzQ29sbGlzaW9ucyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNDb2xsaXNpb25zX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzQ29sbGlzaW9uc19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGV0aGVyU3RhdHNDb2xsaXNpb25zX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzQ29sbGlzaW9uc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNDb2xsaXNpb25zX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNDb2xsaXNpb25zIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzQ29sbGlzaW9uc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzQ29sbGlzaW9uc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0NvbGxpc2lvbnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNDb2xsaXNpb25zX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzUGt0czY0T2N0ZXRzCisgKiBldGhlclN0YXRzUGt0czY0T2N0ZXRzIGlzIHN1YmlkIDE0IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xNAorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgKGluY2x1ZGluZyBiYWQKKyAgICAgICAgcGFja2V0cykgcmVjZWl2ZWQgdGhhdCB3ZXJlIDY0IG9jdGV0cyBpbiBsZW5ndGgKKyAgICAgICAgKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMgYnV0IGluY2x1ZGluZyBGQ1Mgb2N0ZXRzKS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzNjRPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzUGt0czY0T2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1BrdHM2NE9jdGV0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czY0T2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNQa3RzNjRPY3RldHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNQa3RzNjRPY3RldHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0cworICogZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzIGlzIHN1YmlkIDE1IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xNQorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgKGluY2x1ZGluZyBiYWQKKyAgICAgICAgcGFja2V0cykgcmVjZWl2ZWQgdGhhdCB3ZXJlIGJldHdlZW4KKyAgICAgICAgNjUgYW5kIDEyNyBvY3RldHMgaW4gbGVuZ3RoIGluY2x1c2l2ZQorICAgICAgICAoZXhjbHVkaW5nIGZyYW1pbmcgYml0cyBidXQgaW5jbHVkaW5nIEZDUyBvY3RldHMpLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cworICogZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cyBpcyBzdWJpZCAxNiBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMTYKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIChpbmNsdWRpbmcgYmFkCisgICAgICAgIHBhY2tldHMpIHJlY2VpdmVkIHRoYXQgd2VyZSBiZXR3ZWVuCisgICAgICAgIDEyOCBhbmQgMjU1IG9jdGV0cyBpbiBsZW5ndGggaW5jbHVzaXZlCisgICAgICAgIChleGNsdWRpbmcgZnJhbWluZyBiaXRzIGJ1dCBpbmNsdWRpbmcgRkNTIG9jdGV0cykuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cworICogZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cyBpcyBzdWJpZCAxNyBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMTcKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIChpbmNsdWRpbmcgYmFkCisgICAgICAgIHBhY2tldHMpIHJlY2VpdmVkIHRoYXQgd2VyZSBiZXR3ZWVuCisgICAgICAgIDI1NiBhbmQgNTExIG9jdGV0cyBpbiBsZW5ndGggaW5jbHVzaXZlCisgICAgICAgIChleGNsdWRpbmcgZnJhbWluZyBiaXRzIGJ1dCBpbmNsdWRpbmcgRkNTIG9jdGV0cykuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHMKKyAqIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzIGlzIHN1YmlkIDE4IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xOAorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgKGluY2x1ZGluZyBiYWQKKyAgICAgICAgcGFja2V0cykgcmVjZWl2ZWQgdGhhdCB3ZXJlIGJldHdlZW4KKyAgICAgICAgNTEyIGFuZCAxMDIzIG9jdGV0cyBpbiBsZW5ndGggaW5jbHVzaXZlCisgICAgICAgIChleGNsdWRpbmcgZnJhbWluZyBiaXRzIGJ1dCBpbmNsdWRpbmcgRkNTIG9jdGV0cykuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHMKKyAqIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cyBpcyBzdWJpZCAxOSBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMTkKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIChpbmNsdWRpbmcgYmFkCisgICAgICAgIHBhY2tldHMpIHJlY2VpdmVkIHRoYXQgd2VyZSBiZXR3ZWVuCisgICAgICAgIDEwMjQgYW5kIDE1MTggb2N0ZXRzIGluIGxlbmd0aCBpbmNsdXNpdmUKKyAgICAgICAgKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMgYnV0IGluY2x1ZGluZyBGQ1Mgb2N0ZXRzKS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzT3duZXIKKyAqIGV0aGVyU3RhdHNPd25lciBpcyBzdWJpZCAyMCBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIENyZWF0ZS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjIwCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBlbnRpdHkgdGhhdCBjb25maWd1cmVkIHRoaXMgZW50cnkgYW5kIGlzIHRoZXJlZm9yZQorICAgICAgICB1c2luZyB0aGUgcmVzb3VyY2VzIGFzc2lnbmVkIHRvIGl0LgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAxICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAxCisgKgorICogUmFuZ2VzOiAgMCAtIDEyNzsKKyAqCisgKiBJdHMgc3ludGF4IGlzIE93bmVyU3RyaW5nIChiYXNlZCBvbiBwZXJsdHlwZSBPQ1RFVFNUUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9PQ1RFVF9TVFIuIFRoZSBDIHR5cGUgZGVjbCBpcyBjaGFyIChjaGFyKQorICogVGhpcyBkYXRhIHR5cGUgcmVxdWlyZXMgYSBsZW5ndGguICAoTWF4IDEyNykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzT3duZXIgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgY2hhciB2YXJpYWJsZQorICogQHBhcmFtIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbl9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIGEgc2l6ZV90LiBPbiBlbnRyeSwgaXQgd2lsbCBjb250YWluIHRoZSBzaXplIChpbiBieXRlcykKKyAqICAgICAgICBwb2ludGVkIHRvIGJ5IGV0aGVyU3RhdHNPd25lci4KKyAqICAgICAgICBPbiBleGl0LCB0aGlzIHZhbHVlIHNob3VsZCBjb250YWluIHRoZSBkYXRhIHNpemUgKGluIGJ5dGVzKS4KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorKgorICogQG5vdGUgSWYgeW91IG5lZWQgbW9yZSB0aGFuICgqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuX3B0cikgYnl0ZXMgb2YgbWVtb3J5LAorICogICAgICAgYWxsb2NhdGUgaXQgdXNpbmcgbWFsbG9jKCkgYW5kIHVwZGF0ZSBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIuCisgKiAgICAgICA8Yj5ETyBOT1Q8L2I+IGZyZWUgdGhlIHByZXZpb3VzIHBvaW50ZXIuCisgKiAgICAgICBUaGUgTUZEIGhlbHBlciB3aWxsIHJlbGVhc2UgdGhlIG1lbW9yeSB5b3UgYWxsb2NhdGUuCisgKgorICogQHJlbWFyayBJZiB5b3UgY2FsbCB0aGlzIGZ1bmN0aW9uIHlvdXJzZWxmLCB5b3UgYXJlIHJlc3BvbnNpYmxlCisgKiAgICAgICAgIGZvciBjaGVja2luZyBpZiB0aGUgcG9pbnRlciBjaGFuZ2VkLCBhbmQgZnJlZWluZyBhbnkKKyAqICAgICAgICAgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5LiAoTm90IG5lY2Vzc2FyeSBpZiB5b3UgcGFzcworICogICAgICAgICBpbiBhIHBvaW50ZXIgdG8gc3RhdGljIG1lbW9yeSwgb2J2aW91c2x5LikKKyAqLworaW50CitldGhlclN0YXRzT3duZXJfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgY2hhciAqKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpldGhlclN0YXRzT3duZXJfdmFsX3B0cl9sZW5fcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciBhbmQgZW5vdWdoIHN0b3JhZ2UgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoTlVMTCAhPSBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIpCisgICAgICAgICAgICAgICAgICAgJiYgKE5VTEwgIT0gKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0cikpOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzT3duZXJfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c093bmVyIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIgKSBkYXRhIGFuZCAoKiBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9sZW5fcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgLyoKKyAgICAgKiBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGZvciBldGhlclN0YXRzT3duZXIgZGF0YQorICAgICAqLworICAgIGlmICgoTlVMTCA9PSAoKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0cikpIHx8CisgICAgICAgICgoKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbl9wdHIpIDwKKyAgICAgICAgIChyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcl9sZW4gKgorICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lclswXSkpKSkgeworICAgICAgICAvKgorICAgICAgICAgKiBhbGxvY2F0ZSBzcGFjZSBmb3IgZXRoZXJTdGF0c093bmVyIGRhdGEKKyAgICAgICAgICovCisgICAgICAgICgqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfcHRyKSA9CisgICAgICAgICAgICBtYWxsb2Mocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJfbGVuICoKKyAgICAgICAgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJbMF0pKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gKCpldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeVxuIik7CisgICAgICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworICAgICAgICB9CisgICAgfQorICAgICgqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcl9sZW4gKgorICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJbMF0pOworICAgIG1lbWNweSgoKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0ciksCisgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyLAorICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcl9sZW4gKgorICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJbMF0pKTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c093bmVyX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzU3RhdHVzCisgKiBldGhlclN0YXRzU3RhdHVzIGlzIHN1YmlkIDIxIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgQ3JlYXRlLgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMjEKKyAqIERlc2NyaXB0aW9uOgorVGhlIHN0YXR1cyBvZiB0aGlzIGV0aGVyU3RhdHMgZW50cnkuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMSAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDEKKyAqCisgKiBFbnVtIHJhbmdlOiAyLzguIFZhbHVlczogIHZhbGlkKDEpLCBjcmVhdGVSZXF1ZXN0KDIpLCB1bmRlckNyZWF0aW9uKDMpLCBpbnZhbGlkKDQpCisgKgorICogSXRzIHN5bnRheCBpcyBFbnRyeVN0YXR1cyAoYmFzZWQgb24gcGVybHR5cGUgSU5URUdFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9JTlRFR0VSLiBUaGUgQyB0eXBlIGRlY2wgaXMgbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNTdGF0dXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzU3RhdHVzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1N0YXR1c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c1N0YXR1c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c1N0YXR1c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNTdGF0dXNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1N0YXR1cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c1N0YXR1c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzU3RhdHVzX3ZhbF9wdHIpID0gcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzU3RhdHVzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzU3RhdHVzX2dldCAqLworCisKKworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfZ2V0LmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc3NTIxMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuaApAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwODggJCBvZiAkCisgKgorICogJElkOiQKKyAqCisgKiBAZmlsZSBldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuaAorICoKKyAqIEBhZGR0b2dyb3VwIGdldAorICoKKyAqIFByb3RvdHlwZXMgZm9yIGdldCBmdW5jdGlvbnMKKyAqCisgKiBAeworICovCisjaWZuZGVmIEVUSEVSU1RBVFNUQUJMRV9EQVRBX0dFVF9ICisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9EQVRBX0dFVF9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIEdFVCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIEdFVCBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBldGhlclN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEsIGxlbmd0aDogOQorICAgICAqLworICAgIC8qCisgICAgICogaW5kZXhlcworICAgICAqLworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNEYXRhU291cmNlX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICoqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c1BrdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzTXVsdGljYXN0UGt0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzTXVsdGljYXN0UGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0ZyYWdtZW50c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzRnJhZ21lbnRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzSmFiYmVyc19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzSmFiYmVyc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0NvbGxpc2lvbnNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0NvbGxpc2lvbnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT3duZXJfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbl9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzU3RhdHVzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNTdGF0dXNfdmFsX3B0cik7CisKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeChldGhlclN0YXRzVGFibGVfbWliX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBldGhlclN0YXRzSW5kZXhfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2luZGV4ZXNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGV0aGVyU3RhdHNJbmRleF92YWwpOworCisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFVEhFUlNUQVRTVEFCTEVfREFUQV9HRVRfSCAqLworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfc2V0LmMgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfc2V0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmM2EyNgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuYwpAQCAtMCwwICsxLDk3NyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwNzcgJCBvZiAkCisgKgorICogJElkOiQKKyAqCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJldGhlclN0YXRzVGFibGUuaCIKKworCisvKiogQGRlZmdyb3VwIGRhdGFfc2V0IGRhdGFfc2V0OiBSb3V0aW5lcyB0byBzZXQgZGF0YQorICoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSB1c2VkIHRvIHNldCB0aGUgdmFsdWUgZm9yIGluZGl2aWR1YWwgb2JqZWN0cy4gVGhlCisgKiByb3cgY29udGV4dCBpcyBwYXNzZWQsIGFsb25nIHdpdGggdGhlIG5ldyB2YWx1ZS4KKyAqIAorICogQHsKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGV0aGVyU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLCBsZW5ndGg6IDkKKyAqLworICAgIC8qCisgICAgICogTk9URTogaWYgeW91IHVwZGF0ZSB0aGlzIGNoYXJ0LCBwbGVhc2UgdXBkYXRlIHRoZSB2ZXJzaW9ucyBpbgorICAgICAqICAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9wYXJlbnQtc2V0Lm0yaQorICAgICAqICAgICAgIGFnZW50L21pYmdyb3VwL2hlbHBlcnMvYmFieV9zdGVwcy5jCisgICAgICogd2hpbGUgeW91J3JlIGF0IGl0LgorICAgICAqLworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogQmFieSBTdGVwcyBGbG93IENoYXJ0ICgyMDA0LjA2LjA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICAgICogKy0tLS0tLS0tLS0tLS0tKyAgICArPT09PT09PT09PT09PT09PSsgICAgVSA9IHVuY29uZGl0aW9uYWwgcGF0aCAgICAqCisgICAgICogfG9wdGlvbmFsIHN0YXRlfCAgICB8fHJlcXVpcmVkIHN0YXRlfHwgICAgUyA9IHBhdGggZm9yIHN1Y2Nlc3MgICAgICAqCisgICAgICogKy0tLS0tLS0tLS0tLS0tKyAgICArPT09PT09PT09PT09PT09PSsgICAgRSA9IHBhdGggZm9yIGVycm9yICAgICAgICAqCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHByZSAgICAgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHwgICByZXF1ZXN0ICAgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFUKKyAgICAgKiArLS0tLS0tLS0tLS0tLSsgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiB8ICAgIHJvdyAgICB8Znw8LS0tLS0tLXx8ICBvYmplY3QgICAgfHwKKyAgICAgKiB8ICBjcmVhdGUgICB8MXwgICAgICBFIHx8ICBsb29rdXAgICAgfHwKKyAgICAgKiArLS0tLS0tLS0tLS0tLSsgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiAgICAgRSB8ICAgfCBTICAgICAgICAgICAgICAgICB8IFMKKyAgICAgKiAgICAgICB8ICAgKy0tLS0tLS0tLS0tLS0tLS0tLT58CisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICAgICAgICAgRSB8fCAgIGNoZWNrICAgIHx8CisgICAgICogICAgICAgfDwtLS0tLS0tLS0tLS0tLS18fCAgIHZhbHVlcyAgIHx8CisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCBTCisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICArPC0tLS0tLS18fCAgIHVuZG8gICAgIHx8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgRSB8fCAgIHNldHVwICAgIHx8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgfCBTCisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICB8fCAgICBzZXQgICAgIHx8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+KworICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgfHwgICB2YWx1ZSAgICB8fCBFICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICs9PT09PT09PT09PT09PSsgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgfCBTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgIHwgICAgY2hlY2sgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT58CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICB8ICBjb25zaXN0ZW5jeSB8IEUgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgICB8IFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICArPT09PT09PT09PT09PT0rICAgICAgICAgKz09PT09PT09PT09PT09KyAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgfHwgICBjb21taXQgICB8fC0tLS0tLS0tPnx8ICAgICB1bmRvICAgfHwgIHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgIHx8ICAgICAgICAgICAgfHwgRSAgICAgICB8fCAgICBjb21taXQgIHx8ICB8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICArPT09PT09PT09PT09PT0rICAgICAgICAgKz09PT09PT09PT09PT09KyAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICAgIHwgUyAgICAgICAgICAgICAgICAgICAgIFUgfDwtLS0tLS0tLSsKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICstLS0tLS0tLS0tLS0tLSsgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICB8IGlycmV2ZXJzaWJsZSB8ICAgICAgICAgfHwgICAgdW5kbyAgICB8fAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgfCAgICBjb21taXQgICAgfCAgICAgICAgIHx8ICAgICBzZXQgICAgfHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICstLS0tLS0tLS0tLS0tLSsgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgfCBVICAgICAgICAgICAgICAgICAgICAgVSB8CisgICAgICogICAgICAgfCAgICAgICArLS0tLS0tLS0tLS0tLS0+fDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICB8fCAgIHVuZG8gICAgIHx8CisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICB8fCAgY2xlYW51cCAgIHx8CisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+fCBVCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyICYmIGYxKS0tLS0tLS0tLS0tLS0tLS0tLS0+KworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgcG9zdCAgICAgIHw8LS0tLS0tLS18ICAgICAgcm93ICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICB8ICAgcmVxdWVzdCAgICB8ICAgICAgIFUgfCAgICByZWxlYXNlICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgKgorICAgICAqLworCisvKioKKyAqIFNldHVwIHVwIGNvbnRleHQgd2l0aCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdW5kbyBhIHNldCByZXF1ZXN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBpbmRpdmlkdWFsIG5vZGUgdW5kbyBzZXR1cAorICogZnVuY3Rpb25zIGFyZSBjYWxsZWQuIElmIHlvdSBuZWVkIHRvIGRvIGFueSB1bmRvIHNldHVwIHRoYXQgaXMgbm90CisgKiByZWxhdGVkIHRvIGEgc3BlY2lmaWMgY29sdW1uLCB5b3UgY2FuIGRvIGl0IGhlcmUuCisgKgorICogTm90ZSB0aGF0IHRoZSB1bmRvIGNvbnRleHQgaGFzIGJlZW4gYWxsb2NhdGVkIHdpdGgKKyAqIGV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhKCksIGJ1dCBtYXkgbmVlZCBleHRyYQorICogaW5pdGlhbGl6YXRpb24gc2ltaWxhciB0byB3aGF0IHlvdSBtYXkgaGF2ZSBkb25lIGluCisgKiBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0KCkuCisgKiBOb3RlIHRoYXQgYW4gaW5kaXZpZHVhbCBub2RlJ3MgdW5kb19zZXR1cCBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgY2FsbGVkCisgKiBpZiB0aGF0IG5vZGUgaXMgYmVpbmcgc2V0IHRvIGEgbmV3IHZhbHVlLgorICoKKyAqIElmIHRoZXJlIGlzIGFueSBzZXR1cCBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgY29sdW1uIChlLmcuIGFsbG9jYXRpbmcKKyAqIG1lbW9yeSBmb3IgYSBzdHJpbmcpLCB5b3Ugc2hvdWxkIGRvIHRoYXQgc2V0dXAgaW4gdGhlIG5vZGUncyB1bmRvX3NldHVwCisgKiBmdW5jdGlvbiwgc28gaXQgd29uJ3QgYmUgZG9uZSB1bmxlc3MgaXQgaXMgbmVjZXNzYXJ5LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdGFibGUgY29udGV4dCAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBlcnJvci4gc2V0IHdpbGwgZmFpbC4KKyAqLworaW50CitldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gTUZEX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ1MTpNOiB8LT4gU2V0dXAgZXRoZXJTdGF0c1RhYmxlIHVuZG8uCisgICAgICogc2V0IHVwIGV0aGVyU3RhdHNUYWJsZSB1bmRvIGluZm9ybWF0aW9uLCBpbiBwcmVwYXJhdGlvbiBmb3IgYSBzZXQuCisgICAgICogVW5kbyBzdG9yYWdlIGlzIGluICgqIGV0aGVyU3RhdHNTdGF0dXNfdmFsX3B0ciApKgorICAgICAqLworCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cCAqLworCisvKioKKyAqIFVuZG8gYSBzZXQgcmVxdWVzdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgaW5kaXZpZHVhbCBub2RlIHVuZG8KKyAqIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLiBJZiB5b3UgbmVlZCB0byBkbyBhbnkgdW5kbyB0aGF0IGlzIG5vdAorICogcmVsYXRlZCB0byBhIHNwZWNpZmljIGNvbHVtbiwgeW91IGNhbiBkbyBpdCBoZXJlLgorICoKKyAqIE5vdGUgdGhhdCBhbiBpbmRpdmlkdWFsIG5vZGUncyB1bmRvIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBjYWxsZWQKKyAqIGlmIHRoYXQgbm9kZSBpcyBiZWluZyBzZXQgdG8gYSBuZXcgdmFsdWUuCisgKgorICogSWYgdGhlcmUgaXMgYW55dGhpbmcgIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBjb2x1bW4gKGUuZy4gcmVsZWFzaW5nCisgKiBtZW1vcnkgZm9yIGEgc3RyaW5nKSwgeW91IHNob3VsZCBkbyB0aGF0IHNldHVwIGluIHRoZSBub2RlJ3MgdW5kbworICogZnVuY3Rpb24sIHNvIGl0IHdvbid0IGJlIGRvbmUgdW5sZXNzIGl0IGlzIG5lY2Vzc2FyeS4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHRhYmxlIGNvbnRleHQgKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4KQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogZXJyb3IuIHNldCB3aWxsIGZhaWwuCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICByYyA9IE1GRF9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV91bmRvIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NTE6TTogfC0+IGV0aGVyU3RhdHNUYWJsZSB1bmRvLgorICAgICAqIGV0aGVyU3RhdHNUYWJsZSB1bmRvIGluZm9ybWF0aW9uLCBpbiByZXNwb25zZSB0byBhIGZhaWxlZCBzZXQuCisgICAgICogVW5kbyBzdG9yYWdlIGlzIGluICgqIGV0aGVyU3RhdHNTdGF0dXNfdmFsX3B0ciApKgorICAgICAqLworCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cCAqLworCisvKioKKyAqIENsZWFudXAgdXAgY29udGV4dCB1bmRvIGluZm9ybWF0aW9uLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgc2V0L2NvbW1pdCBwcm9jZXNzaW5nLiBJZiB5b3UKKyAqIGFsbG9jYXRlZCBhbnkgcmVzb3VyY2VzIGluIHVuZG9fc2V0dXAsIHRoaXMgaXMgdGhlIHBsYWNlIHRvIHJlbGVhc2UKKyAqIHRob3NlIHJlc291cmNlcy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCByZWdhcmRsZXNzIG9mIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIHNldAorICogcmVxdWVzdC4gSWYgeW91IG5lZWQgdG8gcGVyZm9ybSBkaWZmZXJlbnQgc3RlcHMgZm9yIGNsZWFudXAgZGVwZW5kaW5nCisgKiBvbiBzdWNjZXNzIG9yIGZhaWx1cmUsIHlvdSBjYW4gYWRkIGEgZmxhZyB0byB0aGUgcm93cmVxX2N0eC4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHRhYmxlIGNvbnRleHQgKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4KQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzVGFibGVfdW5kb19jbGVhbnVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBNRkRfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfdW5kb19jbGVhbnVwIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NTI6TTogfC0+IENsZWFudXAgZXRoZXJTdGF0c1RhYmxlIHVuZG8uCisgICAgICogVW5kbyBzdG9yYWdlIGlzIGluICgqIGV0aGVyU3RhdHNTdGF0dXNfdmFsX3B0ciApKgorICAgICAqLworCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdW5kb19jbGVhbnVwICovCisKKy8qKgorICogY29tbWl0IG5ldyB2YWx1ZXMuCisgKgorICogQXQgdGhpcyBwb2ludCwgeW91IHNob3VsZCBoYXZlIGRvbmUgZXZlcnl0aGluZyB5b3UgY2FuIHRvIGVuc3VyZSB0aGF0CisgKiB0aGlzIGNvbW1pdCB3aWxsIG5vdCBmYWlsLgorICoKKyAqIFNob3VsZCB5b3UgbmVlZCBkaWZmZXJlbnQgYmVoYXZpb3IgZGVwZW5kaW5nIG9uIHdoaWNoIGNvbHVtbnMgd2VyZQorICogc2V0LCByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHdpbGwgaW5kaWNhdGUgd2hpY2ggd3JpdGVhYmxlIGNvbHVtbnMgd2VyZQorICogc2V0LiBUaGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBDT0xVTU5fKl9GTEFHIGJpdHMgY2FuIGJlIGZvdW5kIGluCisgKiBldGhlclN0YXRzVGFibGVfb2lkcy5oLgorICogQSBuZXcgcm93IHdpbGwgaGF2ZSB0aGUgTUZEX1JPV19DUkVBVEVEIGJpdCBzZXQgaW4gcm93cmVxX2ZsYWdzLgorICoKKyAqIEBwYXJhbSBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHVzZXJzIGNvbnRleHQuCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV9jb21taXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICByYyA9IE1GRF9TVUNDRVNTOworICAgIGludCAgICAgICAgICAgICBzYXZlX2ZsYWdzOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9jb21taXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBzYXZlIGZsYWdzLCB0aGVuIGNsZWFyIHVudGlsIHdlIGFjdHVhbGx5IGRvIHNvbWV0aGluZworICAgICAqLworICAgIHNhdmVfZmxhZ3MgPSByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzOworICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgPSAwOworCisgICAgLyoKKyAgICAgKiBjb21taXQgZXRoZXJTdGF0c1RhYmxlIGRhdGEKKyAgICAgKiAxKSBjaGVjayB0aGUgY29sdW1uJ3MgZmxhZyBpbiBzYXZlX2ZsYWdzIHRvIHNlZSBpZiBpdCB3YXMgc2V0LgorICAgICAqIDIpIGNsZWFyIHRoZSBmbGFnIHdoZW4geW91IGhhbmRsZSB0aGF0IGNvbHVtbgorICAgICAqIDMpIHNldCB0aGUgY29sdW1uJ3MgZmxhZyBpbiBjb2x1bW5fc2V0X2ZsYWdzIGlmIGl0IG5lZWRzIHVuZG8KKyAgICAgKiAgICBwcm9jZXNzaW5nIGluIGNhc2Ugb2YgYSBmYWlsdXJlLgorICAgICAqLworICAgIGlmIChzYXZlX2ZsYWdzICYgQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUcpIHsKKyAgICAgICAgc2F2ZV9mbGFncyAmPSB+Q09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUc7ICAgICAgICAvKiBjbGVhciBldGhlclN0YXRzRGF0YVNvdXJjZSAqLworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjQ4MjpvOiB8LT4gY29tbWl0IGNvbHVtbiBldGhlclN0YXRzRGF0YVNvdXJjZS4KKyAgICAgICAgICovCisgICAgICAgIHJjID0gLTE7CisgICAgICAgIGlmICgtMSA9PSByYykgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGUgY29sdW1uIGV0aGVyU3RhdHNEYXRhU291cmNlIGNvbW1pdCBmYWlsZWRcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHNldCBmbGFnLCBpbiBjYXNlIHdlIG5lZWQgdG8gdW5kbyBldGhlclN0YXRzRGF0YVNvdXJjZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHw9CisgICAgICAgICAgICAgICAgQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2F2ZV9mbGFncyAmIENPTFVNTl9FVEhFUlNUQVRTT1dORVJfRkxBRykgeworICAgICAgICBzYXZlX2ZsYWdzICY9IH5DT0xVTU5fRVRIRVJTVEFUU09XTkVSX0ZMQUc7ICAgICAvKiBjbGVhciBldGhlclN0YXRzT3duZXIgKi8KKyAgICAgICAgLyoKKyAgICAgICAgICogVE9ETzo0ODI6bzogfC0+IGNvbW1pdCBjb2x1bW4gZXRoZXJTdGF0c093bmVyLgorICAgICAgICAgKi8KKyAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgaWYgKC0xID09IHJjKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBjb2x1bW4gZXRoZXJTdGF0c093bmVyIGNvbW1pdCBmYWlsZWRcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHNldCBmbGFnLCBpbiBjYXNlIHdlIG5lZWQgdG8gdW5kbyBldGhlclN0YXRzT3duZXIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyB8PSBDT0xVTU5fRVRIRVJTVEFUU09XTkVSX0ZMQUc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2F2ZV9mbGFncyAmIENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTX0ZMQUcpIHsKKyAgICAgICAgc2F2ZV9mbGFncyAmPSB+Q09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRzsgICAgLyogY2xlYXIgZXRoZXJTdGF0c1N0YXR1cyAqLworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjQ4MjpvOiB8LT4gY29tbWl0IGNvbHVtbiBldGhlclN0YXRzU3RhdHVzLgorICAgICAgICAgKi8KKyAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgaWYgKC0xID09IHJjKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBjb2x1bW4gZXRoZXJTdGF0c1N0YXR1cyBjb21taXQgZmFpbGVkXG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBzZXQgZmxhZywgaW4gY2FzZSB3ZSBuZWVkIHRvIHVuZG8gZXRoZXJTdGF0c1N0YXR1cworICAgICAgICAgICAgICovCisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHw9IENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTX0ZMQUc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIGlmIHdlIHN1Y2Nlc3NmdWxseSBjb21taXRlZCB0aGlzIHJvdywgc2V0IHRoZSBkaXJ0eSBmbGFnLgorICAgICAqLworICAgIGlmIChNRkRfU1VDQ0VTUyA9PSByYykgeworICAgICAgICByb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgfD0gTUZEX1JPV19ESVJUWTsKKyAgICB9CisKKyAgICBpZiAoc2F2ZV9mbGFncykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5oYW5kbGVkIGNvbHVtbnMgKDB4JXgpIGluIGNvbW1pdFxuIiwKKyAgICAgICAgICAgICAgICAgc2F2ZV9mbGFncyk7CisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfY29tbWl0ICovCisKKy8qKgorICogdW5kbyBjb21taXQgbmV3IHZhbHVlcy4KKyAqCisgKiBTaG91bGQgeW91IG5lZWQgZGlmZmVyZW50IGJlaGF2aW9yIGRlcGVuZGluZyBvbiB3aGljaCBjb2x1bW5zIHdlcmUKKyAqIHNldCwgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyB3aWxsIGluZGljYXRlIHdoaWNoIHdyaXRlYWJsZSBjb2x1bW5zIHdlcmUKKyAqIHNldC4gVGhlIGRlZmluaXRpb25zIGZvciB0aGUgQ09MVU1OXypfRkxBRyBiaXRzIGNhbiBiZSBmb3VuZCBpbgorICogZXRoZXJTdGF0c1RhYmxlX29pZHMuaC4KKyAqIEEgbmV3IHJvdyB3aWxsIGhhdmUgdGhlIE1GRF9ST1dfQ1JFQVRFRCBiaXQgc2V0IGluIHJvd3JlcV9mbGFncy4KKyAqCisgKiBAcGFyYW0gZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB1c2VycyBjb250ZXh0LgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzVGFibGVfdW5kb19jb21taXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICByYyA9IE1GRF9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV91bmRvX2NvbW1pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDg1Ok06IHwtPiBVbmRvIGV0aGVyU3RhdHNUYWJsZSBjb21taXQuCisgICAgICogY2hlY2sgdGhlIGNvbHVtbidzIGZsYWcgaW4gcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyB0byBzZWUKKyAgICAgKiBpZiBpdCB3YXMgc2V0IGR1cmluZyBjb21taXQsIHRoZW4gdW5kbyBpdC4KKyAgICAgKgorICAgICAqIGVnOiBpZiAocm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyAmIENPTFVNTl9fRkxBRykge30KKyAgICAgKi8KKworCisgICAgLyoKKyAgICAgKiBpZiB3ZSBzdWNjZXNzZnVsbHkgdW4tY29tbWl0ZWQgdGhpcyByb3csIGNsZWFyIHRoZSBkaXJ0eSBmbGFnLgorICAgICAqLworICAgIGlmIChNRkRfU1VDQ0VTUyA9PSByYykgeworICAgICAgICByb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJj0gfk1GRF9ST1dfRElSVFk7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdW5kb19jb21taXQgKi8KKworLyoKKyAqIFRPRE86NDQwOk06IEltcGxlbWVudCBldGhlclN0YXRzVGFibGUgbm9kZSB2YWx1ZSBjaGVja3MuCisgKiBUT0RPOjQ1MDpNOiBJbXBsZW1lbnQgZXRoZXJTdGF0c1RhYmxlIHVuZG8gZnVuY3Rpb25zLgorICogVE9ETzo0NjA6TTogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBzZXQgZnVuY3Rpb25zLgorICogVE9ETzo0ODA6TTogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBjb21taXQgZnVuY3Rpb25zLgorICovCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzRGF0YVNvdXJjZQorICogZXRoZXJTdGF0c0RhdGFTb3VyY2UgaXMgc3ViaWQgMiBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIENyZWF0ZS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjIKKyAqIERlc2NyaXB0aW9uOgorVGhpcyBvYmplY3QgaWRlbnRpZmllcyB0aGUgc291cmNlIG9mIHRoZSBkYXRhIHRoYXQKKyAgICAgICAgdGhpcyBldGhlclN0YXRzIGVudHJ5IGlzIGNvbmZpZ3VyZWQgdG8gYW5hbHl6ZS4gIFRoaXMKKyAgICAgICAgc291cmNlIGNhbiBiZSBhbnkgZXRoZXJuZXQgaW50ZXJmYWNlIG9uIHRoaXMgZGV2aWNlLgorICAgICAgICBJbiBvcmRlciB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlLCB0aGlzIG9iamVjdAorICAgICAgICBzaGFsbCBpZGVudGlmeSB0aGUgaW5zdGFuY2Ugb2YgdGhlIGlmSW5kZXggb2JqZWN0LAorICAgICAgICBkZWZpbmVkIGluIFJGQyAyMjMzIFsxN10sIGZvciB0aGUgZGVzaXJlZCBpbnRlcmZhY2UuCisgICAgICAgIEZvciBleGFtcGxlLCBpZiBhbiBlbnRyeSB3ZXJlIHRvIHJlY2VpdmUgZGF0YSBmcm9tCisgICAgICAgIGludGVyZmFjZSAjMSwgdGhpcyBvYmplY3Qgd291bGQgYmUgc2V0IHRvIGlmSW5kZXguMS4KKworICAgICAgICBUaGUgc3RhdGlzdGljcyBpbiB0aGlzIGdyb3VwIHJlZmxlY3QgYWxsIHBhY2tldHMKKyAgICAgICAgb24gdGhlIGxvY2FsIG5ldHdvcmsgc2VnbWVudCBhdHRhY2hlZCB0byB0aGUgaWRlbnRpZmllZAorICAgICAgICBpbnRlcmZhY2UuCisKKyAgICAgICAgQW4gYWdlbnQgbWF5IG9yIG1heSBub3QgYmUgYWJsZSB0byB0ZWxsIGlmIGZ1bmRhbWVudGFsCisgICAgICAgIGNoYW5nZXMgdG8gdGhlIG1lZGlhIG9mIHRoZSBpbnRlcmZhY2UgaGF2ZSBvY2N1cnJlZCBhbmQKKyAgICAgICAgbmVjZXNzaXRhdGUgYW4gaW52YWxpZGF0aW9uIG9mIHRoaXMgZW50cnkuICBGb3IgZXhhbXBsZSwgYQorICAgICAgICBob3QtcGx1Z2dhYmxlIGV0aGVybmV0IGNhcmQgY291bGQgYmUgcHVsbGVkIG91dCBhbmQgcmVwbGFjZWQKKyAgICAgICAgYnkgYSB0b2tlbi1yaW5nIGNhcmQuICBJbiBzdWNoIGEgY2FzZSwgaWYgdGhlIGFnZW50IGhhcyBzdWNoCisgICAgICAgIGtub3dsZWRnZSBvZiB0aGUgY2hhbmdlLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IGl0CisgICAgICAgIGludmFsaWRhdGUgdGhpcyBlbnRyeS4KKworICAgICAgICBUaGlzIG9iamVjdCBtYXkgbm90IGJlIG1vZGlmaWVkIGlmIHRoZSBhc3NvY2lhdGVkCisgICAgICAgIGV0aGVyU3RhdHNTdGF0dXMgb2JqZWN0IGlzIGVxdWFsIHRvIHZhbGlkKDEpLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAxCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgT0JKRUNUSUQgKGJhc2VkIG9uIHBlcmx0eXBlIE9CSkVDVElEKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX09CSkVDVF9JRC4gVGhlIEMgdHlwZSBkZWNsIGlzIG9pZCAob2lkKQorICogVGhpcyBkYXRhIHR5cGUgcmVxdWlyZXMgYSBsZW5ndGguCisgKi8KKy8qKgorICogQ2hlY2sgdGhhdCB0aGUgcHJvcG9zZWQgbmV3IHZhbHVlIGlzIHBvdGVudGlhbGx5IHZhbGlkLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyCisgKiAgICAgICAgQSBvaWQgY29udGFpbmluZyB0aGUgbmV3IHZhbHVlLgorICogQHBhcmFtIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuCisgKiAgICAgICAgVGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgZGF0YSBwb2ludGVkIHRvIGJ5IGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICA6IGluY29taW5nIHZhbHVlIGlzIGxlZ2FsCisgKiBAcmV0dmFsIE1GRF9OT1RfVkFMSURfTk9XICA6IGluY29taW5nIHZhbHVlIGlzIG5vdCB2YWxpZCBub3cKKyAqIEByZXR2YWwgTUZEX05PVF9WQUxJRF9FVkVSIDogaW5jb21pbmcgdmFsdWUgaXMgbmV2ZXIgdmFsaWQKKyAqCisgKiBUaGlzIGlzIHRoZSBwbGFjZSB0byBjaGVjayBmb3IgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIG5vdAorICogZXhwcmVzc2VkIGluIHRoZSBtaWIgc3ludGF4IChmb3IgZXhhbXBsZSwgYSByZXF1aXJlbWVudCB0aGF0CisgKiBpcyBkZXRhaWxlZCBpbiB0aGUgZGVzY3JpcHRpb24gZm9yIGFuIG9iamVjdCkuCisgKgorICogWW91IHNob3VsZCBjaGVjayB0aGF0IHRoZSByZXF1ZXN0ZWQgY2hhbmdlIGJldHdlZW4gdGhlIHVuZG8gdmFsdWUgYW5kIHRoZQorICogbmV3IHZhbHVlIGlzIGxlZ2FsIChpZSwgdGhlIHRyYW5zaXN0aW9uIGZyb20gb25lIHZhbHVlIHRvIGFub3RoZXIKKyAqIGlzIGxlZ2FsKS4KKyAqICAgICAgCisgKkBub3RlCisgKiBUaGlzIGNoZWNrIGlzIG9ubHkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBuZXcgdmFsdWUKKyAqIGlzIFxiIHBvdGVudGlhbGx5IHZhbGlkLiBUaGlzIGlzIHRoZSBmaXJzdCBjaGVjayBvZiBtYW55LCBhbmQKKyAqIGlzIG9uZSBvZiB0aGUgc2ltcGxlc3Qgb25lcy4KKyAqIAorICpAbm90ZQorICogdGhpcyBpcyBub3QgdGhlIHBsYWNlIHRvIGRvIGFueSBjaGVja3MgZm9yIHZhbHVlcworICogd2hpY2ggZGVwZW5kIG9uIHNvbWUgb3RoZXIgdmFsdWUgaW4gdGhlIG1pYi4gVGhvc2UKKyAqIHR5cGVzIG9mIGNoZWNrcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUKKyAqIGV0aGVyU3RhdHNUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMoKSBmdW5jdGlvbi4KKyAqCisgKiBUaGUgZm9sbG93aW5nIGNoZWNrcyBoYXZlIGFscmVhZHkgYmVlbiBkb25lIGZvciB5b3U6CisgKiAgICBUaGUgc3ludGF4IGlzIEFTTl9PQkpFQ1RfSUQKKyAqICAgIFRoZSBsZW5ndGggaXMgPCBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZSkuCisgKgorICogSWYgdGhlcmUgYSBubyBvdGhlciBjaGVja3MgeW91IG5lZWQgdG8gZG8sIHNpbXBseSByZXR1cm4gTUZEX1NVQ0NFU1MuCisgKgorICovCitpbnQKK2V0aGVyU3RhdHNEYXRhU291cmNlX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW4pCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNEYXRhU291cmNlX2NoZWNrX3ZhbHVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogc2hvdWxkIG5ldmVyIGdldCBhIE5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzo0NDE6bzogfC0+IENoZWNrIGZvciB2YWxpZCBldGhlclN0YXRzRGF0YVNvdXJjZSB2YWx1ZS4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsgICAgICAgICAvKiBldGhlclN0YXRzRGF0YVNvdXJjZSB2YWx1ZSBub3QgaWxsZWdhbCAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzRGF0YVNvdXJjZV9jaGVja192YWx1ZSAqLworCisvKioKKyAqIFNhdmUgb2xkIHZhbHVlIGluZm9ybWF0aW9uCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB0YWJsZSBjb250ZXh0IChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCkKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfRVJST1IgICA6IGVycm9yLiBzZXQgd2lsbCBmYWlsLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHRhYmxlIGxldmVsIHVuZG8gc2V0dXAgZnVuY3Rpb24KKyAqIGV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwIGhhcyBiZWVuIGNhbGxlZC4KKyAqCisgKkBub3RlCisgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgYSBuZXcgdmFsdWUgaXMgc2V0IGZvciB0aGlzIGNvbHVtbi4KKyAqCisgKiBJZiB0aGVyZSBpcyBhbnkgc2V0dXAgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGNvbHVtbiAoZS5nLiBhbGxvY2F0aW5nCisgKiBtZW1vcnkgZm9yIGEgc3RyaW5nKSwgeW91IHNob3VsZCBkbyB0aGF0IHNldHVwIGluIHRoaXMgZnVuY3Rpb24sIHNvIGl0CisgKiB3b24ndCBiZSBkb25lIHVubGVzcyBpdCBpcyBuZWNlc3NhcnkuCisgKi8KK2ludAorZXRoZXJTdGF0c0RhdGFTb3VyY2VfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNEYXRhU291cmNlX3VuZG9fc2V0dXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBzaG91bGQgbmV2ZXIgZ2V0IGEgTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NTU6bzogfC0+IFNldHVwIGV0aGVyU3RhdHNEYXRhU291cmNlIHVuZG8uCisgICAgICovCisgICAgLyoKKyAgICAgKiBjb3B5IGV0aGVyU3RhdHNEYXRhU291cmNlIGFuZCBldGhlclN0YXRzRGF0YVNvdXJjZV9sZW4gZGF0YQorICAgICAqIHNldCByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzRGF0YVNvdXJjZSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2UKKyAgICAgKi8KKyAgICBtZW1jcHkocm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c0RhdGFTb3VyY2UsCisgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2UsCisgICAgICAgICAgIChyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiAqCisgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c0RhdGFTb3VyY2VbMF0pKSk7CisgICAgcm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZV9sZW47CisKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0RhdGFTb3VyY2VfdW5kb19zZXR1cCAqLworCisvKioKKyAqIFNldCB0aGUgbmV3IHZhbHVlLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4gWW91IHNob3VsZCBrbm93IGhvdyB0bworICogICAgICAgIG1hbmlwdWxhdGUgdGhlIHZhbHVlIGZyb20gdGhpcyBvYmplY3QuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cgorICogICAgICAgIEEgb2lkIGNvbnRhaW5pbmcgdGhlIG5ldyB2YWx1ZS4KKyAqIEBwYXJhbSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbgorICogICAgICAgIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIGRhdGEgcG9pbnRlZCB0byBieSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyCisgKi8KK2ludAorZXRoZXJTdGF0c0RhdGFTb3VyY2Vfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbikKK3sKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzRGF0YVNvdXJjZV9zZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBzaG91bGQgbmV2ZXIgZ2V0IGEgTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ2MTpNOiB8LT4gU2V0IGV0aGVyU3RhdHNEYXRhU291cmNlIHZhbHVlLgorICAgICAqIHNldCBldGhlclN0YXRzRGF0YVNvdXJjZSB2YWx1ZSBpbiByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgbWVtY3B5KHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2UsCisgICAgICAgICAgIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIsIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuKTsKKyAgICAvKiogY29udmVydCBieXRlcyB0byBudW1iZXIgb2Ygb2lkICovCisgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZV9sZW4gPQorICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbiAvCisgICAgICAgIHNpemVvZihldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyWzBdKTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0RhdGFTb3VyY2Vfc2V0ICovCisKKy8qKgorICogdW5kbyB0aGUgcHJldmlvdXMgc2V0LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4KKyAqLworaW50CitldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ1NjpvOiB8LT4gQ2xlYW4gdXAgZXRoZXJTdGF0c0RhdGFTb3VyY2UgdW5kby4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIGNvcHkgZXRoZXJTdGF0c0RhdGFTb3VyY2UgYW5kIGV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiBkYXRhCisgICAgICogc2V0IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2UgZnJvbSByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzRGF0YVNvdXJjZQorICAgICAqLworICAgIG1lbWNweShyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlLAorICAgICAgICAgICByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzRGF0YVNvdXJjZSwKKyAgICAgICAgICAgKHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiAqCisgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZVswXSkpKTsKKyAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiA9CisgICAgICAgIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbjsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNPd25lcgorICogZXRoZXJTdGF0c093bmVyIGlzIHN1YmlkIDIwIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgQ3JlYXRlLgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMjAKKyAqIERlc2NyaXB0aW9uOgorVGhlIGVudGl0eSB0aGF0IGNvbmZpZ3VyZWQgdGhpcyBlbnRyeSBhbmQgaXMgdGhlcmVmb3JlCisgICAgICAgIHVzaW5nIHRoZSByZXNvdXJjZXMgYXNzaWduZWQgdG8gaXQuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDEgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDEKKyAqCisgKiBSYW5nZXM6ICAwIC0gMTI3OworICoKKyAqIEl0cyBzeW50YXggaXMgT3duZXJTdHJpbmcgKGJhc2VkIG9uIHBlcmx0eXBlIE9DVEVUU1RSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX09DVEVUX1NUUi4gVGhlIEMgdHlwZSBkZWNsIGlzIGNoYXIgKGNoYXIpCisgKiBUaGlzIGRhdGEgdHlwZSByZXF1aXJlcyBhIGxlbmd0aC4gIChNYXggMTI3KQorICovCisvKioKKyAqIENoZWNrIHRoYXQgdGhlIHByb3Bvc2VkIG5ldyB2YWx1ZSBpcyBwb3RlbnRpYWxseSB2YWxpZC4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c093bmVyX3ZhbF9wdHIKKyAqICAgICAgICBBIGNoYXIgY29udGFpbmluZyB0aGUgbmV3IHZhbHVlLgorICogQHBhcmFtIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbgorICogICAgICAgIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIGRhdGEgcG9pbnRlZCB0byBieSBldGhlclN0YXRzT3duZXJfdmFsX3B0cgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgIDogaW5jb21pbmcgdmFsdWUgaXMgbGVnYWwKKyAqIEByZXR2YWwgTUZEX05PVF9WQUxJRF9OT1cgIDogaW5jb21pbmcgdmFsdWUgaXMgbm90IHZhbGlkIG5vdworICogQHJldHZhbCBNRkRfTk9UX1ZBTElEX0VWRVIgOiBpbmNvbWluZyB2YWx1ZSBpcyBuZXZlciB2YWxpZAorICoKKyAqIFRoaXMgaXMgdGhlIHBsYWNlIHRvIGNoZWNrIGZvciByZXF1aXJlbWVudHMgdGhhdCBhcmUgbm90CisgKiBleHByZXNzZWQgaW4gdGhlIG1pYiBzeW50YXggKGZvciBleGFtcGxlLCBhIHJlcXVpcmVtZW50IHRoYXQKKyAqIGlzIGRldGFpbGVkIGluIHRoZSBkZXNjcmlwdGlvbiBmb3IgYW4gb2JqZWN0KS4KKyAqCisgKiBZb3Ugc2hvdWxkIGNoZWNrIHRoYXQgdGhlIHJlcXVlc3RlZCBjaGFuZ2UgYmV0d2VlbiB0aGUgdW5kbyB2YWx1ZSBhbmQgdGhlCisgKiBuZXcgdmFsdWUgaXMgbGVnYWwgKGllLCB0aGUgdHJhbnNpc3Rpb24gZnJvbSBvbmUgdmFsdWUgdG8gYW5vdGhlcgorICogaXMgbGVnYWwpLgorICogICAgICAKKyAqQG5vdGUKKyAqIFRoaXMgY2hlY2sgaXMgb25seSB0byBkZXRlcm1pbmUgaWYgdGhlIG5ldyB2YWx1ZQorICogaXMgXGIgcG90ZW50aWFsbHkgdmFsaWQuIFRoaXMgaXMgdGhlIGZpcnN0IGNoZWNrIG9mIG1hbnksIGFuZAorICogaXMgb25lIG9mIHRoZSBzaW1wbGVzdCBvbmVzLgorICogCisgKkBub3RlCisgKiB0aGlzIGlzIG5vdCB0aGUgcGxhY2UgdG8gZG8gYW55IGNoZWNrcyBmb3IgdmFsdWVzCisgKiB3aGljaCBkZXBlbmQgb24gc29tZSBvdGhlciB2YWx1ZSBpbiB0aGUgbWliLiBUaG9zZQorICogdHlwZXMgb2YgY2hlY2tzIHNob3VsZCBiZSBkb25lIGluIHRoZQorICogZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2RlcGVuZGVuY2llcygpIGZ1bmN0aW9uLgorICoKKyAqIFRoZSBmb2xsb3dpbmcgY2hlY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGRvbmUgZm9yIHlvdToKKyAqICAgIFRoZSBzeW50YXggaXMgQVNOX09DVEVUX1NUUgorICogICAgVGhlIGxlbmd0aCBpcyA8IHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcikuCisgKiAgICBUaGUgbGVuZ3RoIGlzIGluIChvbmUgb2YpIHRoZSByYW5nZSBzZXQocyk6ICAwIC0gMTI3CisgKgorICogSWYgdGhlcmUgYSBubyBvdGhlciBjaGVja3MgeW91IG5lZWQgdG8gZG8sIHNpbXBseSByZXR1cm4gTUZEX1NVQ0NFU1MuCisgKgorICovCitpbnQKK2V0aGVyU3RhdHNPd25lcl9jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c093bmVyX2NoZWNrX3ZhbHVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogc2hvdWxkIG5ldmVyIGdldCBhIE5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzT3duZXJfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86NDQxOm86IHwtPiBDaGVjayBmb3IgdmFsaWQgZXRoZXJTdGF0c093bmVyIHZhbHVlLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOyAgICAgICAgIC8qIGV0aGVyU3RhdHNPd25lciB2YWx1ZSBub3QgaWxsZWdhbCAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzT3duZXJfY2hlY2tfdmFsdWUgKi8KKworLyoqCisgKiBTYXZlIG9sZCB2YWx1ZSBpbmZvcm1hdGlvbgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdGFibGUgY29udGV4dCAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBlcnJvci4gc2V0IHdpbGwgZmFpbC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSB0YWJsZSBsZXZlbCB1bmRvIHNldHVwIGZ1bmN0aW9uCisgKiBldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cCBoYXMgYmVlbiBjYWxsZWQuCisgKgorICpAbm90ZQorICogdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIGEgbmV3IHZhbHVlIGlzIHNldCBmb3IgdGhpcyBjb2x1bW4uCisgKgorICogSWYgdGhlcmUgaXMgYW55IHNldHVwIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBjb2x1bW4gKGUuZy4gYWxsb2NhdGluZworICogbWVtb3J5IGZvciBhIHN0cmluZyksIHlvdSBzaG91bGQgZG8gdGhhdCBzZXR1cCBpbiB0aGlzIGZ1bmN0aW9uLCBzbyBpdAorICogd29uJ3QgYmUgZG9uZSB1bmxlc3MgaXQgaXMgbmVjZXNzYXJ5LgorICovCitpbnQKK2V0aGVyU3RhdHNPd25lcl91bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c093bmVyX3VuZG9fc2V0dXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBzaG91bGQgbmV2ZXIgZ2V0IGEgTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NTU6bzogfC0+IFNldHVwIGV0aGVyU3RhdHNPd25lciB1bmRvLgorICAgICAqLworICAgIC8qCisgICAgICogY29weSBldGhlclN0YXRzT3duZXIgYW5kIGV0aGVyU3RhdHNPd25lcl9sZW4gZGF0YQorICAgICAqIHNldCByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzT3duZXIgZnJvbSByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcgorICAgICAqLworICAgIG1lbWNweShyb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzT3duZXIsCisgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyLAorICAgICAgICAgICAocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJfbGVuICoKKyAgICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzT3duZXJbMF0pKSk7CisgICAgcm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c093bmVyX2xlbiA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyX2xlbjsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzT3duZXJfdW5kb19zZXR1cCAqLworCisvKioKKyAqIFNldCB0aGUgbmV3IHZhbHVlLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4gWW91IHNob3VsZCBrbm93IGhvdyB0bworICogICAgICAgIG1hbmlwdWxhdGUgdGhlIHZhbHVlIGZyb20gdGhpcyBvYmplY3QuCisgKiBAcGFyYW0gZXRoZXJTdGF0c093bmVyX3ZhbF9wdHIKKyAqICAgICAgICBBIGNoYXIgY29udGFpbmluZyB0aGUgbmV3IHZhbHVlLgorICogQHBhcmFtIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbgorICogICAgICAgIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIGRhdGEgcG9pbnRlZCB0byBieSBldGhlclN0YXRzT3duZXJfdmFsX3B0cgorICovCitpbnQKK2V0aGVyU3RhdHNPd25lcl9zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICBjaGFyICpldGhlclN0YXRzT3duZXJfdmFsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbikKK3sKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzT3duZXJfc2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogc2hvdWxkIG5ldmVyIGdldCBhIE5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzT3duZXJfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86NDYxOk06IHwtPiBTZXQgZXRoZXJTdGF0c093bmVyIHZhbHVlLgorICAgICAqIHNldCBldGhlclN0YXRzT3duZXIgdmFsdWUgaW4gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIG1lbWNweShyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lciwgZXRoZXJTdGF0c093bmVyX3ZhbF9wdHIsCisgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbik7CisgICAgLyoqIGNvbnZlcnQgYnl0ZXMgdG8gbnVtYmVyIG9mIGNoYXIgKi8KKyAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcl9sZW4gPQorICAgICAgICBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9sZW4gLyBzaXplb2YoZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJbMF0pOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzT3duZXJfc2V0ICovCisKKy8qKgorICogdW5kbyB0aGUgcHJldmlvdXMgc2V0LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4KKyAqLworaW50CitldGhlclN0YXRzT3duZXJfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c093bmVyX3VuZG8iLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDU2Om86IHwtPiBDbGVhbiB1cCBldGhlclN0YXRzT3duZXIgdW5kby4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIGNvcHkgZXRoZXJTdGF0c093bmVyIGFuZCBldGhlclN0YXRzT3duZXJfbGVuIGRhdGEKKyAgICAgKiBzZXQgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXIgZnJvbSByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzT3duZXIKKyAgICAgKi8KKyAgICBtZW1jcHkocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXIsCisgICAgICAgICAgIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNPd25lciwKKyAgICAgICAgICAgKHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNPd25lcl9sZW4gKgorICAgICAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyWzBdKSkpOworICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyX2xlbiA9CisgICAgICAgIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNPd25lcl9sZW47CisKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c093bmVyX3VuZG8gKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1N0YXR1cworICogZXRoZXJTdGF0c1N0YXR1cyBpcyBzdWJpZCAyMSBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIENyZWF0ZS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjIxCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBzdGF0dXMgb2YgdGhpcyBldGhlclN0YXRzIGVudHJ5LgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDEgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAxCisgKgorICogRW51bSByYW5nZTogMi84LiBWYWx1ZXM6ICB2YWxpZCgxKSwgY3JlYXRlUmVxdWVzdCgyKSwgdW5kZXJDcmVhdGlvbigzKSwgaW52YWxpZCg0KQorICoKKyAqIEl0cyBzeW50YXggaXMgRW50cnlTdGF0dXMgKGJhc2VkIG9uIHBlcmx0eXBlIElOVEVHRVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fSU5URUdFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIGxvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBDaGVjayB0aGF0IHRoZSBwcm9wb3NlZCBuZXcgdmFsdWUgaXMgcG90ZW50aWFsbHkgdmFsaWQuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNTdGF0dXNfdmFsCisgKiAgICAgICAgQSBsb25nIGNvbnRhaW5pbmcgdGhlIG5ldyB2YWx1ZS4KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICA6IGluY29taW5nIHZhbHVlIGlzIGxlZ2FsCisgKiBAcmV0dmFsIE1GRF9OT1RfVkFMSURfTk9XICA6IGluY29taW5nIHZhbHVlIGlzIG5vdCB2YWxpZCBub3cKKyAqIEByZXR2YWwgTUZEX05PVF9WQUxJRF9FVkVSIDogaW5jb21pbmcgdmFsdWUgaXMgbmV2ZXIgdmFsaWQKKyAqCisgKiBUaGlzIGlzIHRoZSBwbGFjZSB0byBjaGVjayBmb3IgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIG5vdAorICogZXhwcmVzc2VkIGluIHRoZSBtaWIgc3ludGF4IChmb3IgZXhhbXBsZSwgYSByZXF1aXJlbWVudCB0aGF0CisgKiBpcyBkZXRhaWxlZCBpbiB0aGUgZGVzY3JpcHRpb24gZm9yIGFuIG9iamVjdCkuCisgKgorICogWW91IHNob3VsZCBjaGVjayB0aGF0IHRoZSByZXF1ZXN0ZWQgY2hhbmdlIGJldHdlZW4gdGhlIHVuZG8gdmFsdWUgYW5kIHRoZQorICogbmV3IHZhbHVlIGlzIGxlZ2FsIChpZSwgdGhlIHRyYW5zaXN0aW9uIGZyb20gb25lIHZhbHVlIHRvIGFub3RoZXIKKyAqIGlzIGxlZ2FsKS4KKyAqICAgICAgCisgKkBub3RlCisgKiBUaGlzIGNoZWNrIGlzIG9ubHkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBuZXcgdmFsdWUKKyAqIGlzIFxiIHBvdGVudGlhbGx5IHZhbGlkLiBUaGlzIGlzIHRoZSBmaXJzdCBjaGVjayBvZiBtYW55LCBhbmQKKyAqIGlzIG9uZSBvZiB0aGUgc2ltcGxlc3Qgb25lcy4KKyAqIAorICpAbm90ZQorICogdGhpcyBpcyBub3QgdGhlIHBsYWNlIHRvIGRvIGFueSBjaGVja3MgZm9yIHZhbHVlcworICogd2hpY2ggZGVwZW5kIG9uIHNvbWUgb3RoZXIgdmFsdWUgaW4gdGhlIG1pYi4gVGhvc2UKKyAqIHR5cGVzIG9mIGNoZWNrcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUKKyAqIGV0aGVyU3RhdHNUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMoKSBmdW5jdGlvbi4KKyAqCisgKiBUaGUgZm9sbG93aW5nIGNoZWNrcyBoYXZlIGFscmVhZHkgYmVlbiBkb25lIGZvciB5b3U6CisgKiAgICBUaGUgc3ludGF4IGlzIEFTTl9JTlRFR0VSCisgKiAgICBUaGUgdmFsdWUgaXMgb25lIG9mICB2YWxpZCgxKSwgY3JlYXRlUmVxdWVzdCgyKSwgdW5kZXJDcmVhdGlvbigzKSwgaW52YWxpZCg0KQorICoKKyAqIElmIHRoZXJlIGEgbm8gb3RoZXIgY2hlY2tzIHlvdSBuZWVkIHRvIGRvLCBzaW1wbHkgcmV0dXJuIE1GRF9TVUNDRVNTLgorICoKKyAqLworaW50CitldGhlclN0YXRzU3RhdHVzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNTdGF0dXNfdmFsKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzU3RhdHVzX2NoZWNrX3ZhbHVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogc2hvdWxkIG5ldmVyIGdldCBhIE5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDQxOm86IHwtPiBDaGVjayBmb3IgdmFsaWQgZXRoZXJTdGF0c1N0YXR1cyB2YWx1ZS4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsgICAgICAgICAvKiBldGhlclN0YXRzU3RhdHVzIHZhbHVlIG5vdCBpbGxlZ2FsICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNTdGF0dXNfY2hlY2tfdmFsdWUgKi8KKworLyoqCisgKiBTYXZlIG9sZCB2YWx1ZSBpbmZvcm1hdGlvbgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdGFibGUgY29udGV4dCAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBlcnJvci4gc2V0IHdpbGwgZmFpbC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSB0YWJsZSBsZXZlbCB1bmRvIHNldHVwIGZ1bmN0aW9uCisgKiBldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cCBoYXMgYmVlbiBjYWxsZWQuCisgKgorICpAbm90ZQorICogdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIGEgbmV3IHZhbHVlIGlzIHNldCBmb3IgdGhpcyBjb2x1bW4uCisgKgorICogSWYgdGhlcmUgaXMgYW55IHNldHVwIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBjb2x1bW4gKGUuZy4gYWxsb2NhdGluZworICogbWVtb3J5IGZvciBhIHN0cmluZyksIHlvdSBzaG91bGQgZG8gdGhhdCBzZXR1cCBpbiB0aGlzIGZ1bmN0aW9uLCBzbyBpdAorICogd29uJ3QgYmUgZG9uZSB1bmxlc3MgaXQgaXMgbmVjZXNzYXJ5LgorICovCitpbnQKK2V0aGVyU3RhdHNTdGF0dXNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNTdGF0dXNfdW5kb19zZXR1cCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoqIHNob3VsZCBuZXZlciBnZXQgYSBOVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ1NTpvOiB8LT4gU2V0dXAgZXRoZXJTdGF0c1N0YXR1cyB1bmRvLgorICAgICAqLworICAgIC8qCisgICAgICogY29weSBldGhlclN0YXRzU3RhdHVzIGRhdGEKKyAgICAgKiBzZXQgcm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c1N0YXR1cyBmcm9tIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1N0YXR1cworICAgICAqLworICAgIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNTdGF0dXMgPSByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNTdGF0dXM7CisKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1N0YXR1c191bmRvX3NldHVwICovCisKKy8qKgorICogU2V0IHRoZSBuZXcgdmFsdWUuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB1c2VycyBjb250ZXh0LiBZb3Ugc2hvdWxkIGtub3cgaG93IHRvCisgKiAgICAgICAgbWFuaXB1bGF0ZSB0aGUgdmFsdWUgZnJvbSB0aGlzIG9iamVjdC4KKyAqIEBwYXJhbSBldGhlclN0YXRzU3RhdHVzX3ZhbAorICogICAgICAgIEEgbG9uZyBjb250YWluaW5nIHRoZSBuZXcgdmFsdWUuCisgKi8KK2ludAorZXRoZXJTdGF0c1N0YXR1c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNTdGF0dXNfdmFsKQoreworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNTdGF0dXNfc2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogc2hvdWxkIG5ldmVyIGdldCBhIE5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDYxOk06IHwtPiBTZXQgZXRoZXJTdGF0c1N0YXR1cyB2YWx1ZS4KKyAgICAgKiBzZXQgZXRoZXJTdGF0c1N0YXR1cyB2YWx1ZSBpbiByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzU3RhdHVzID0gZXRoZXJTdGF0c1N0YXR1c192YWw7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNTdGF0dXNfc2V0ICovCisKKy8qKgorICogdW5kbyB0aGUgcHJldmlvdXMgc2V0LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4KKyAqLworaW50CitldGhlclN0YXRzU3RhdHVzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNTdGF0dXNfdW5kbyIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NTY6bzogfC0+IENsZWFuIHVwIGV0aGVyU3RhdHNTdGF0dXMgdW5kby4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIGNvcHkgZXRoZXJTdGF0c1N0YXR1cyBkYXRhCisgICAgICogc2V0IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1N0YXR1cyBmcm9tIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNTdGF0dXMKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNTdGF0dXMgPSByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzU3RhdHVzOworCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNTdGF0dXNfdW5kbyAqLworCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuaCBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNThlMDg3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX3NldC5oCkBAIC0wLDAgKzEsMzU2IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA3NyAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBFVEhFUlNUQVRTVEFCTEVfREFUQV9TRVRfSAorI2RlZmluZSBFVEhFUlNUQVRTVEFCTEVfREFUQV9TRVRfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBTRVQgZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBTRVQgVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgZXRoZXJTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c1RhYmxlIGlzIHN1YmlkIDEgb2Ygc3RhdGlzdGljcy4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLCBsZW5ndGg6IDkKKyAgICAgKi8KKworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfY29tbWl0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29tbWl0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworCisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW4pOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2Vfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW4pOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzRHJvcEV2ZW50c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBldGhlclN0YXRzRHJvcEV2ZW50c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzRHJvcEV2ZW50c191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0Ryb3BFdmVudHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPY3RldHNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c09jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT2N0ZXRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPY3RldHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c09jdGV0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzUGt0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBldGhlclN0YXRzUGt0c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzUGt0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQnJvYWRjYXN0UGt0c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzQnJvYWRjYXN0UGt0c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQnJvYWRjYXN0UGt0c191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzTXVsdGljYXN0UGt0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVW5kZXJzaXplUGt0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c092ZXJzaXplUGt0c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzT3ZlcnNpemVQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c092ZXJzaXplUGt0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT3ZlcnNpemVQa3RzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c0ZyYWdtZW50c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c0ZyYWdtZW50c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzRnJhZ21lbnRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNGcmFnbWVudHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNGcmFnbWVudHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0ZyYWdtZW50c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNKYWJiZXJzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNKYWJiZXJzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNKYWJiZXJzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzSmFiYmVyc19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBldGhlclN0YXRzSmFiYmVyc192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzSmFiYmVyc191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQ29sbGlzaW9uc19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBldGhlclN0YXRzQ29sbGlzaW9uc192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQ29sbGlzaW9uc191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0NvbGxpc2lvbnNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNDb2xsaXNpb25zX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNDb2xsaXNpb25zX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c19jaGVja192YWx1ZQorICAgICAgICAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX2NoZWNrX3ZhbHVlCisgICAgICAgIChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c191bmRvX3NldHVwCisgICAgICAgIChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl9jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9sZW4pOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT3duZXJfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT3duZXJfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl91bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1N0YXR1c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzU3RhdHVzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNTdGF0dXNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1N0YXR1c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c1N0YXR1c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzU3RhdHVzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVUSEVSU1RBVFNUQUJMRV9EQVRBX1NFVF9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2VudW1zLmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEzYzBiNwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZW51bXMuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICA6IGdlbmVyaWMtdGFibGUtZW51bXMubTJjIDEyNTI2IDIwMDUtMDctMTUgMjI6NDE6MTZaIHJzdG9yeSAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBFVEhFUlNUQVRTVEFCTEVfRU5VTVNfSAorI2RlZmluZSBFVEhFUlNUQVRTVEFCTEVfRU5VTVNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqIE5PVEVTIG9uIGVudW1zCisgICAgICogPT09PT09PT09PT09PT0KKyAgICAgKgorICAgICAqIFZhbHVlIE1hcHBpbmcKKyAgICAgKiAtLS0tLS0tLS0tLS0tCisgICAgICogSWYgdGhlIHZhbHVlcyBmb3IgeW91ciBkYXRhIHR5cGUgZG9uJ3QgZXhhY3RseSBtYXRjaCB0aGUKKyAgICAgKiBwb3NzaWJsZSB2YWx1ZXMgZGVmaW5lZCBieSB0aGUgbWliLCB5b3Ugc2hvdWxkIG1hcCB0aGVtCisgICAgICogYmVsb3cuIEZvciBleGFtcGxlLCBhIGJvb2xlYW4gZmxhZyAoMS8wKSBpcyB1c3VhbGx5IHJlcHJlc2VudGVkCisgICAgICogYXMgYSBUcnV0aFZhbHVlIGluIGEgTUlCLCB3aGljaCBtYXBzIHRvIHRoZSB2YWx1ZXMgKDEvMikuCisgICAgICoKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIGVudW0gZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGV0aGVyU3RhdHNUYWJsZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGNvbnN0YW50cyBmb3IgZW51bXMgZm9yIHRoZSBNSUIgbm9kZQorICogZXRoZXJTdGF0c1N0YXR1cyAoRW50cnlTdGF0dXMgLyBBU05fSU5URUdFUikKKyAqCisgKiBzaW5jZSBhIFRleHR1YWwgQ29udmVudGlvbiBtYXkgYmUgcmVmZXJlbmNlZCBtb3JlIHRoYW4gb25jZSBpbiBhCisgKiBNSUIsIHByb3RlY3QgYWdhaW50IHJlZGVmaW5pdGlvbnMgb2YgdGhlIGVudW0gdmFsdWVzLgorICovCisjaWZuZGVmIEVOVFJZU1RBVFVTX0VOVU1TCisjZGVmaW5lIEVOVFJZU1RBVFVTX0VOVU1TCisKKyNkZWZpbmUgRU5UUllTVEFUVVNfVkFMSUQgIDEKKyNkZWZpbmUgRU5UUllTVEFUVVNfQ1JFQVRFUkVRVUVTVCAgMgorI2RlZmluZSBFTlRSWVNUQVRVU19VTkRFUkNSRUFUSU9OICAzCisjZGVmaW5lIEVOVFJZU1RBVFVTX0lOVkFMSUQgIDQKKworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFTlRSWVNUQVRVU19FTlVNUyAqLworCisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFVEhFUlNUQVRTVEFCTEVfRU5VTVNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEwMzYyYQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTAsMCArMSwyMjIzIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRISVMgRklMRSBET0VTIE5PVCBDT05UQUlOIEFOWSBVU0VSIEVESVRBQkxFIENPREUuICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRIRSBHRU5FUkFURUQgQ09ERSBJUyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiwgQU5EICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgIElTIFNVQkpFQ1QgVE8gQ0hBTkdFIFdJVEhPVVQgV0FSTklORyBJTiBGVVRVUkUgUkVMRUFTRVMuICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJldGhlclN0YXRzVGFibGUuaCIKKworCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCIKKworI2luY2x1ZGUgPGN0eXBlLmg+CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBldGhlclN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c1RhYmxlIGlzIHN1YmlkIDEgb2Ygc3RhdGlzdGljcy4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMSwgbGVuZ3RoOiA5CisgKi8KK3R5cGVkZWYgc3RydWN0IGV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4X3MgeworCisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKyAgICBuZXRzbm1wX2NhY2hlICAqY2FjaGU7CisKKyAgICBldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICp1c2VyX2N0eDsKKworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gdGJsX2luZm87CisKKyAgICBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX21ldGhvZHMgYWNjZXNzX211bHRpcGxleGVyOworCisgICAgdV9pbnQgICAgICAgICAgIHRhYmxlX2RpcnR5OworCit9IGV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4OworCitzdGF0aWMgZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggZXRoZXJTdGF0c1RhYmxlX2lmX2N0eDsKKworc3RhdGljIHZvaWQgICAgCitfZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0KGV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KTsKK3N0YXRpYyB2b2lkICAgIAorX2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKKworCituZXRzbm1wX2NvbnRhaW5lciAqCitldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2dldCh2b2lkKQoreworICAgIHJldHVybiBldGhlclN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKK30KKworZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCitldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQoreworICAgIHJldHVybiBldGhlclN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4OworfQorCitldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKK2V0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqb2xkID0gZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eDsKKyAgICBldGhlclN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOworICAgIHJldHVybiBvbGQ7Cit9CisKK2ludAorZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCit7CisgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKK30KKwordV9pbnQKK2V0aGVyU3RhdHNUYWJsZV9kaXJ0eV9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC50YWJsZV9kaXJ0eTsKK30KKwordm9pZAorZXRoZXJTdGF0c1RhYmxlX2RpcnR5X3NldCh1X2ludCBzdGF0dXMpCit7CisgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfZGlydHlfc2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkLiB3YXMgJWQsIG5vdyAlZFxuIiwKKyAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfaWZfY3R4LnRhYmxlX2RpcnR5LCBzdGF0dXMpKTsKKyAgICBldGhlclN0YXRzVGFibGVfaWZfY3R4LnRhYmxlX2RpcnR5ID0gc3RhdHVzOworfQorCisvKgorICogbWZkIG11bHRpcGxleGVyIG1vZGVzCisgKi8KK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9ldGhlclN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfdmFsdWVzOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX29iamVjdHM7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9zZXRfdmFsdWVzOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY2xlYW51cDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX3ZhbHVlczsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9jb21taXQ7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19jb21taXQ7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9ldGhlclN0YXRzVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdDsKKworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NvbHVtbihldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgaW50IGNvbHVtbik7CisKK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK19ldGhlclN0YXRzVGFibGVfY2hlY2tfaW5kZXhlcyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOworCitldGhlclN0YXRzVGFibGVfZGF0YSAqZXRoZXJTdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCk7CisKKy8qKgorICogQGludGVybmFsCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBldGhlclN0YXRzVGFibGUgCisgKiAgICAoRGVmaW5lIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCkKKyAqLwordm9pZAorX2V0aGVyU3RhdHNUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZShldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX3B0ciwgdV9sb25nIGZsYWdzKQoreworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyAqYWNjZXNzX211bHRpcGxleGVyID0KKyAgICAgICAgJmV0aGVyU3RhdHNUYWJsZV9pZl9jdHguYWNjZXNzX211bHRpcGxleGVyOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRibF9pbmZvID0KKyAgICAgICAgJmV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudGJsX2luZm87CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbzsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyOworICAgIGludCAgICAgICAgICAgICBtZmRfbW9kZXMgPSAwOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlIiwgImNhbGxlZFxuIikpOworCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogc2F2ZSBpbnRlcmZhY2UgY29udGV4dCBmb3IgZXRoZXJTdGF0c1RhYmxlCisgICAgICovCisgICAgLyoKKyAgICAgKiBTZXR0aW5nIHVwIHRoZSB0YWJsZSdzIGRlZmluaXRpb24KKyAgICAgKi8KKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YmxfaW5mbywgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBpbmRleDogZXRoZXJTdGF0c0luZGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisKKyAgICAvKgorICAgICAqIERlZmluZSB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBhY2Nlc3NpYmxlIGNvbHVtbnMuICBUaGlzCisgICAgICogb3B0aW1pemVzIHJldHJpdmFsLiAKKyAgICAgKi8KKyAgICB0YmxfaW5mby0+bWluX2NvbHVtbiA9IEVUSEVSU1RBVFNUQUJMRV9NSU5fQ09MOworICAgIHRibF9pbmZvLT5tYXhfY29sdW1uID0gRVRIRVJTVEFUU1RBQkxFX01BWF9DT0w7CisKKyAgICAvKgorICAgICAqIHNhdmUgdXNlcnMgY29udGV4dAorICAgICAqLworICAgIGV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHggPSByZWdfcHRyOworCisgICAgLyoKKyAgICAgKiBjYWxsIGRhdGEgYWNjZXNzIGluaXRpYWxpemF0aW9uIGNvZGUKKyAgICAgKi8KKyAgICBldGhlclN0YXRzVGFibGVfaW5pdF9kYXRhKHJlZ19wdHIpOworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9ldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQoJmV0aGVyU3RhdHNUYWJsZV9pZl9jdHgpOworICAgIGlmIChOVUxMID09IGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgaW5pdGlhbGl6ZSBjb250YWluZXIgZm9yIGV0aGVyU3RhdHNUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGFjY2Vzc19tdWx0aXBsZXhlcjogUkVRVUlSRUQgd3JhcHBlciBmb3IgZ2V0IHJlcXVlc3QgaGFuZGxpbmcKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXAgPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Z2V0X3ZhbHVlcyA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF92YWx1ZXM7CisKKyAgICAvKgorICAgICAqIG5vIHdyYXBwZXJzIHlldAorICAgICAqLworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+cHJlX3JlcXVlc3QgPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdDsKKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdDsKKworCisgICAgLyoKKyAgICAgKiBSRVFVSVJFRCB3cmFwcGVycyBmb3Igc2V0IHJlcXVlc3QgaGFuZGxpbmcKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9zeW50YXhfY2hlY2tzID0KKyAgICAgICAgX21mZF9ldGhlclN0YXRzVGFibGVfY2hlY2tfb2JqZWN0czsKKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0dXAgPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jbGVhbnVwID0gX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19jbGVhbnVwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcyA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX3NldF92YWx1ZXM7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHMgPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX3ZhbHVlczsKKworICAgIC8qCisgICAgICogbm8gd3JhcHBlcnMgeWV0CisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5jb21taXQgPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV9jb21taXQ7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29tbWl0OworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCA9CisgICAgICAgIF9tZmRfZXRoZXJTdGF0c1RhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQ7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogQ3JlYXRlIGEgcmVnaXN0cmF0aW9uLCBzYXZlIG91ciByZWcgZGF0YSwgcmVnaXN0ZXIgdGFibGUuCisgICAgICovCisgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTppbml0X2V0aGVyU3RhdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgIlJlZ2lzdGVyaW5nIGV0aGVyU3RhdHNUYWJsZSBhcyBhIG1pYnMtZm9yLWR1bW1pZXMgdGFibGUuXG4iKSk7CisgICAgaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbXVsdGlwbGV4ZXJfZ2V0KGFjY2Vzc19tdWx0aXBsZXhlcik7CisgICAgcmVnaW5mbyA9CisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKCJldGhlclN0YXRzVGFibGUiLCBoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfb2lkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisgICAgaWYgKE5VTEwgPT0gcmVnaW5mbykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgZXRoZXJTdGF0c1RhYmxlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZWdpbmZvLT5teV9yZWdfdm9pZCA9ICZldGhlclN0YXRzVGFibGVfaWZfY3R4OworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIHNldCB1cCBiYWJ5IHN0ZXBzIGhhbmRsZXIsIGNyZWF0ZSBpdCBhbmQgaW5qZWN0IGl0CisgICAgICovCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X2xvb2t1cCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9PQkpFQ1RfTE9PS1VQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0lSUkVWRVJTSUJMRV9DT01NSVQ7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X3N5bnRheF9jaGVja3MpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfT0JKRUNUOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cHJlX3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUFJFX1JFUVVFU1Q7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0dXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NsZWFudXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DTEVBTlVQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0cykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX1NFVFM7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5yb3dfY3JlYXRpb24pCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUk9XX0NSRUFURTsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfQ09OU0lTVEVOQ1k7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKKworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCByb3dfbWVyZ2UgaGVscGVyIHdpdGggcHJlZml4IHJvb3RvaWRfbGVuICsgMiAoZW50cnkuY29sKQorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2dldF9yb3dfbWVyZ2VfaGFuZGxlcihyZWdpbmZvLT5yb290b2lkX2xlbiArIDIpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNvbnRhaW5lcl90YWJsZSBoZWxwZXIKKyAgICAgKi8KKyAgICBoYW5kbGVyID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQodGJsX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjYWNoZSBoZWxwZXIKKyAgICAgKi8KKyAgICBpZiAoTlVMTCAhPSBldGhlclN0YXRzVGFibGVfaWZfY3R4LmNhY2hlKSB7CisgICAgICAgIGhhbmRsZXIgPSBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0KGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY2FjaGUpOworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworICAgIH0KKworICAgIC8qCisgICAgICogcmVnaXN0ZXIgdGFibGUKKyAgICAgKi8KKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZ2luZm8sIHRibF9pbmZvKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZXRoZXJTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBTaHV0ZG93biB0aGUgdGFibGUgZXRoZXJTdGF0c1RhYmxlCisgKi8KK3ZvaWQKK19ldGhlclN0YXRzVGFibGVfc2h1dGRvd25faW50ZXJmYWNlKGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiByZWdfcHRyKQoreworICAgIC8qCisgICAgICogc2h1dGRvd24gdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9ldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duKCZldGhlclN0YXRzVGFibGVfaWZfY3R4KTsKK30KKwordm9pZAorZXRoZXJTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8gKnZjKQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudGJsX2luZm8udmFsaWRfY29sdW1ucyA9IHZjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdmFsaWRfY29sdW1uc19zZXQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGNvbnZlcnQgdGhlIGluZGV4IGNvbXBvbmVudCBzdG9yZWQgaW4gdGhlIGNvbnRleHQgdG8gYW4gb2lkCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgaW50ICAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICAvKgorICAgICAqIHRlbXAgc3RvcmFnZSBmb3IgcGFyc2luZyBpbmRleGVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBldGhlclN0YXRzSW5kZXgoMSkvSU5URUdFUjMyL0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL2gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2V0aGVyU3RhdHNJbmRleDsKKworICAgIC8qCisgICAgICogc2V0IHVwIHZhcmJpbmRzCisgICAgICovCisgICAgbWVtc2V0KCZ2YXJfZXRoZXJTdGF0c0luZGV4LCAweDAwLCBzaXplb2YodmFyX2V0aGVyU3RhdHNJbmRleCkpOworICAgIHZhcl9ldGhlclN0YXRzSW5kZXgudHlwZSA9IEFTTl9JTlRFR0VSOworCisgICAgLyoKKyAgICAgKiBjaGFpbiB0ZW1wIGluZGV4IHZhcmJpbmRzIHRvZ2V0aGVyCisgICAgICovCisgICAgdmFyX2V0aGVyU3RhdHNJbmRleC5uZXh0X3ZhcmlhYmxlID0gTlVMTDsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9pbmRleF90b19vaWQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogZXRoZXJTdGF0c0luZGV4KDEpL0lOVEVHRVIzMi9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9oIAorICAgICAqLworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyX2V0aGVyU3RhdHNJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIG1pYl9pZHgtPmV0aGVyU3RhdHNJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1pYl9pZHgtPmV0aGVyU3RhdHNJbmRleCkpOworCisKKyAgICBlcnIgPSBidWlsZF9vaWRfbm9hbGxvYyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sICZvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnZhcl9ldGhlclN0YXRzSW5kZXgpOworICAgIGlmIChlcnIpCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciAlZCBjb252ZXJ0aW5nIGluZGV4IHRvIG9pZFxuIiwgZXJyKTsKKworICAgIC8qCisgICAgICogcGFyc2luZyBtYXkgaGF2ZSBhbGxvY2F0ZWQgbWVtb3J5LiBmcmVlIGl0LgorICAgICAqLworICAgIHNubXBfcmVzZXRfdmFyX2J1ZmZlcnMoJnZhcl9ldGhlclN0YXRzSW5kZXgpOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX2luZGV4X3RvX29pZCAqLworCisvKioKKyAqIGV4dHJhY3QgZXRoZXJTdGF0c1RhYmxlIGluZGV4ZXMgZnJvbSBhIG5ldHNubXBfaW5kZXgKKyAqCisgKiBAcmV0dmFsIFNOTVBfRVJSX05PRVJST1IgIDogbm8gZXJyb3IKKyAqIEByZXR2YWwgU05NUF9FUlJfR0VORVJSICAgOiBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgZXJyID0gU05NUF9FUlJfTk9FUlJPUjsKKworICAgIC8qCisgICAgICogdGVtcCBzdG9yYWdlIGZvciBwYXJzaW5nIGluZGV4ZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGV0aGVyU3RhdHNJbmRleCgxKS9JTlRFR0VSMzIvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvaAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfZXRoZXJTdGF0c0luZGV4OworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdmFyYmluZHMKKyAgICAgKi8KKyAgICBtZW1zZXQoJnZhcl9ldGhlclN0YXRzSW5kZXgsIDB4MDAsIHNpemVvZih2YXJfZXRoZXJTdGF0c0luZGV4KSk7CisgICAgdmFyX2V0aGVyU3RhdHNJbmRleC50eXBlID0gQVNOX0lOVEVHRVI7CisKKyAgICAvKgorICAgICAqIGNoYWluIHRlbXAgaW5kZXggdmFyYmluZHMgdG9nZXRoZXIKKyAgICAgKi8KKyAgICB2YXJfZXRoZXJTdGF0c0luZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2luZGV4X2Zyb21fb2lkIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIHBhcnNlIHRoZSBvaWQgaW50byB0aGUgaW5kaXZpZHVhbCBpbmRleCBjb21wb25lbnRzCisgICAgICovCisgICAgZXJyID0gcGFyc2Vfb2lkX2luZGV4ZXMob2lkX2lkeC0+b2lkcywgb2lkX2lkeC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YXJfZXRoZXJTdGF0c0luZGV4KTsKKyAgICBpZiAoZXJyID09IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY29weSBvdXQgdmFsdWVzCisgICAgICAgICAqLworICAgICAgICBtaWJfaWR4LT5ldGhlclN0YXRzSW5kZXggPQorICAgICAgICAgICAgKigobG9uZyAqKSB2YXJfZXRoZXJTdGF0c0luZGV4LnZhbC5zdHJpbmcpOworCisKKyAgICB9CisKKyAgICAvKgorICAgICAqIHBhcnNpbmcgbWF5IGhhdmUgYWxsb2NhdGVkIG1lbW9yeS4gZnJlZSBpdC4KKyAgICAgKi8KKyAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzKCZ2YXJfZXRoZXJTdGF0c0luZGV4KTsKKworICAgIHJldHVybiBlcnI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZCAqLworCisKKy8qCisgKiBldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YQorICoKKyAqIFB1cnBvc2U6IGNyZWF0ZSBuZXcgZXRoZXJTdGF0c1RhYmxlX2RhdGEuCisgKi8KK2V0aGVyU3RhdHNUYWJsZV9kYXRhICoKK2V0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX2RhdGEgKnJ0biA9IFNOTVBfTUFMTE9DX1RZUEVERUYoZXRoZXJTdGF0c1RhYmxlX2RhdGEpOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBydG4pIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVuYWJsZSB0byBtYWxsb2MgbWVtb3J5IGZvciBuZXcgIgorICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX2RhdGEuXG4iKTsKKyAgICB9CisKKyAgICByZXR1cm4gcnRuOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YSAqLworCisvKgorICogZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2VfZGF0YQorICoKKyAqIFB1cnBvc2U6IHJlbGVhc2UgZXRoZXJTdGF0c1RhYmxlIGRhdGEuCisgKi8KK3ZvaWQKK2V0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX2RhdGEoZXRoZXJTdGF0c1RhYmxlX2RhdGEgKiBkYXRhKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfcmVsZWFzZV9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBmcmVlKGRhdGEpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9kYXRhICovCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBAaW50ZXJuYWwKKyAqIGFsbG9jYXRlIHJlc291cmNlcyBmb3IgYSBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICovCitldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCitldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCh2b2lkICp1c2VyX2luaXRfY3R4KQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBhICIKKyAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4LlxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyA9IHJvd3JlcV9jdHgtPm9pZF90bXA7CisKKyAgICByb3dyZXFfY3R4LT5ldGhlclN0YXRzVGFibGVfZGF0YV9saXN0ID0gTlVMTDsKKworICAgIC8qCisgICAgICogaWYgd2UgYWxsb2NhdGVkIGRhdGEsIGNhbGwgaW5pdCByb3V0aW5lCisgICAgICovCisgICAgaWYgKCEocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19EQVRBX0ZST01fVVNFUikpIHsKKyAgICAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPQorICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdChyb3dyZXFfY3R4LCB1c2VyX2luaXRfY3R4KSkgeworICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHggPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4ICovCisKKy8qCisgKiBAaW50ZXJuYWwKKyAqIHJlbGVhc2UgcmVzb3VyY2VzIGZvciBhIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgKi8KK3ZvaWQKK2V0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKHJvd3JlcV9jdHgpOworCisgICAgaWYgKHJvd3JlcV9jdHgtPnVuZG8pCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX2RhdGEocm93cmVxX2N0eC0+dW5kbyk7CisKKyAgICAvKgorICAgICAqIGZyZWUgaW5kZXggb2lkIHBvaW50ZXIKKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzICE9IHJvd3JlcV9jdHgtPm9pZF90bXApCisgICAgICAgIGZyZWUocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzKTsKKworICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4KTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKDEgIT0gbmV0c25tcF9yb3dfbWVyZ2Vfc3RhdHVzX2ZpcnN0KHJlZ2luZm8sIGFndHJlcV9pbmZvKSkgeworICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgInNraXBwaW5nIGFkZGl0aW9uYWwgcHJlX3JlcXVlc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgfQorCisgICAgcmMgPSBldGhlclN0YXRzVGFibGVfcHJlX3JlcXVlc3QoZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IGl0IGJ1dCBsb2cgaXQKKyAgICAgICAgICovCisgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfcHJlX3JlcXVlc3RcbiIsIHJjKSk7CisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2V0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgaW50ICAgICAgICAgICAgIHJjLCBwYWNrZXRfcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogcmVsZWFzZSByb3cgY29udGV4dCwgaWYgZGVsZXRlZAorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4ICYmIChyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RFTEVURUQpKQorICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiB3YWl0IGZvciBsYXN0IGNhbGwgYmVmb3JlIGNhbGxpbmcgdXNlcgorICAgICAqLworICAgIGlmICgxICE9IG5ldHNubXBfcm93X21lcmdlX3N0YXR1c19sYXN0KHJlZ2luZm8sIGFndHJlcV9pbmZvKSkgeworICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIndhaXRpbmcgZm9yIGxhc3QgcG9zdF9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHBhY2tldF9yYyA9IG5ldHNubXBfY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKGFndHJlcV9pbmZvLT5hc3AsIDApOworICAgIGlmICgoTUZEX1NVQ0NFU1MgIT0gcGFja2V0X3JjKSAmJiBldGhlclN0YXRzVGFibGVfZGlydHlfZ2V0KCkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogd2Ugc2hvdWxkbid0IGdldCBoZXJlLiB0aGUgdW5kbyBzdGVwcyBzaG91bGQgYWxzbyBjbGVhcgorICAgICAgICAgKiB0aGUgZGlydHkgZmxhZ3MuCisgICAgICAgICAqLworICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBkaXJ0eSBmbGFnIHNldCBpbiBwb3N0X3JlcXVlc3QgIgorICAgICAgICAgICAgICAgICAiYnV0IHN0YXR1cyAhPSBTVUNDRVNTLlxuIik7CisgICAgfQorCisgICAgcmMgPSBldGhlclN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0KGV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9yYyk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IGl0IGJ1dCBsb2cgaXQKKyAgICAgICAgICovCisgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0XG4iLCByYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2V0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKK19tZmRfZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9mcm9tX2luZGV4KG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpyY19wdHIpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleCBtaWJfaWR4OworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfcm93cmVxX2Zyb21faW5kZXgiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSByY19wdHIpCisgICAgICAgIHJjX3B0ciA9ICZyYzsKKyAgICAqcmNfcHRyID0gTUZEX1NVQ0NFU1M7CisKKyAgICBtZW1zZXQoJm1pYl9pZHgsIDB4MCwgc2l6ZW9mKG1pYl9pZHgpKTsKKworICAgIC8qCisgICAgICogdHJ5IHRvIHBhcnNlIG9pZAorICAgICAqLworICAgICpyY19wdHIgPSBldGhlclN0YXRzVGFibGVfaW5kZXhfZnJvbV9vaWQob2lkX2lkeCwgJm1pYl9pZHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSAqcmNfcHRyKSB7CisgICAgICAgIERFQlVHTVNHVCgoImV0aGVyU3RhdHNUYWJsZSIsICJlcnJvciBwYXJzaW5nIGluZGV4XG4iKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qCisgICAgICogYWxsb2NhdGUgbmV3IGNvbnRleHQKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4ID0gZXRoZXJTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoTlVMTCk7CisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICAqcmNfcHRyID0gTUZEX0VSUk9SOworICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAvKiBtc2cgYWxyZWFkeSBsb2dnZWQgKi8KKyAgICB9CisKKyAgICBtZW1jcHkoJnJvd3JlcV9jdHgtPnRibF9pZHgsICZtaWJfaWR4LCBzaXplb2YobWliX2lkeCkpOworCisgICAgLyoKKyAgICAgKiBjaGVjayBpbmRleGVzCisgICAgICovCisgICAgKnJjX3B0ciA9IF9ldGhlclN0YXRzVGFibGVfY2hlY2tfaW5kZXhlcyhyb3dyZXFfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gKnJjX3B0cikgeworICAgICAgICBuZXRzbm1wX2Fzc2VydCgoKnJjX3B0ciA9PSBTTk1QX0VSUl9OT0NSRUFUSU9OKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAoKnJjX3B0ciA9PSBTTk1QX0VSUl9JTkNPTlNJU1RFTlROQU1FKSk7CisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qCisgICAgICogY29weSBpbmRleGVzCisgICAgICovCisgICAgcm93cmVxX2N0eC0+b2lkX2lkeC5sZW4gPSBvaWRfaWR4LT5sZW47CisgICAgbWVtY3B5KHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcywgb2lkX2lkeC0+b2lkcywKKyAgICAgICAgICAgb2lkX2lkeC0+bGVuICogc2l6ZW9mKG9pZCkpOworCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9mcm9tX2luZGV4ICovCisKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9ldGhlclN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBnZXQgb3VyIGNvbnRleHQgZnJvbSBtZmQKKyAgICAgKiBldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqaWZfY3R4ID0KKyAgICAgKiAgICAgICAgICAgICAoZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggKilyZWdpbmZvLT5teV9yZWdfdm9pZDsKKyAgICAgKi8KKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRibHJlcV9pbmZvOworICAgICAgICBuZXRzbm1wX2luZGV4ICAgb2lkX2lkeDsKKworICAgICAgICB0YmxyZXFfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdGJscmVxX2luZm8pIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJyZXF1ZXN0IGhhZCBubyB0YWJsZSBpbmZvXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiB0cnkgY3JlYXRlIHJvd3JlcQorICAgICAgICAgKi8KKyAgICAgICAgb2lkX2lkeC5vaWRzID0gdGJscmVxX2luZm8tPmluZGV4X29pZDsKKyAgICAgICAgb2lkX2lkeC5sZW4gPSB0YmxyZXFfaW5mby0+aW5kZXhfb2lkX2xlbjsKKworICAgICAgICByb3dyZXFfY3R4ID0gX21mZF9ldGhlclN0YXRzVGFibGVfcm93cmVxX2Zyb21faW5kZXgoJm9pZF9pZHgsICZyYyk7CisgICAgICAgIGlmIChNRkRfU1VDQ0VTUyA9PSByYykgeworICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyB8PSBNRkRfUk9XX0NSRUFURUQ7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogYWRkIHJvd3JlcV9jdHggdG8gcmVxdWVzdCBkYXRhIGxpc3RzCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19pbnNlcnQocmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2luZGV4ICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgcmMpOworICAgIGVsc2UKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd19wcmVwKHJvd3JlcV9jdHgpOworCisgICAgcmV0dXJuIFNOTVBfVkFMSURBVEVfRVJSKHJjKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9ldGhlclN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBHRVQgcHJvY2Vzc2luZworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBAaW50ZXJuYWwKKyAqIFJldHJpZXZlIHRoZSB2YWx1ZSBmb3IgYSBwYXJ0aWN1bGFyIGNvbHVtbgorICovCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLAorICAgICAgICAgICAgICAgICJjYWxsZWQgZm9yICVkXG4iLCBjb2x1bW4pKTsKKworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIHN3aXRjaCAoY29sdW1uKSB7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogKElOREVYKSBldGhlclN0YXRzSW5kZXgoMSkvSU5URUdFUjMyL0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNJTkRFWDoKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihsb25nKTsKKyAgICAgICAgKCp2YXItPnZhbC5pbnRlZ2VyKSA9IHJvd3JlcV9jdHgtPnRibF9pZHguZXRoZXJTdGF0c0luZGV4OworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzRGF0YVNvdXJjZSgyKS9PQkpFQ1RJRC9BU05fT0JKRUNUX0lEL29pZChvaWQpLy9ML0EvVy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRToKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0VfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzRGF0YVNvdXJjZSkgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnR5cGUgPSBBU05fT0JKRUNUX0lEOworICAgICAgICByYyA9IGV0aGVyU3RhdHNEYXRhU291cmNlX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2lkICoqKSAmIHZhci0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhci0+dmFsX2xlbik7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNEcm9wRXZlbnRzKDMpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNEUk9QRVZFTlRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTRFJPUEVWRU5UU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNEcm9wRXZlbnRzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzRHJvcEV2ZW50c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT2N0ZXRzKDQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNPQ1RFVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNPQ1RFVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzT2N0ZXRzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzT2N0ZXRzX2dldChyb3dyZXFfY3R4LCAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzKDUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTUEtUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNQa3RzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzUGt0c19nZXQocm93cmVxX2N0eCwgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzQnJvYWRjYXN0UGt0cyg2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTQlJPQURDQVNUUEtUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU0JST0FEQ0FTVFBLVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzQnJvYWRjYXN0UGt0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c011bHRpY2FzdFBrdHMoNykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU01VTFRJQ0FTVFBLVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNNVUxUSUNBU1RQS1RTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c011bHRpY2FzdFBrdHMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9ycyg4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTQ1JDQUxJR05FUlJPUlM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNDUkNBTElHTkVSUk9SU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNDUkNBbGlnbkVycm9ycykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzVW5kZXJzaXplUGt0cyg5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTVU5ERVJTSVpFUEtUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU1VOREVSU0laRVBLVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzVW5kZXJzaXplUGt0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c092ZXJzaXplUGt0cygxMCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU09WRVJTSVpFUEtUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU09WRVJTSVpFUEtUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzRnJhZ21lbnRzKDExKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTRlJBR01FTlRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTRlJBR01FTlRTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c0ZyYWdtZW50cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0ZyYWdtZW50c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNKYWJiZXJzKDEyKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTSkFCQkVSUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU0pBQkJFUlNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzSmFiYmVycykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0phYmJlcnNfZ2V0KHJvd3JlcV9jdHgsICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0NvbGxpc2lvbnMoMTMpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNDT0xMSVNJT05TOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTQ09MTElTSU9OU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNDb2xsaXNpb25zKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzQ29sbGlzaW9uc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czY0T2N0ZXRzKDE0KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzY0T0NURVRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTUEtUUzY0T0NURVRTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c1BrdHM2NE9jdGV0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1BrdHM2NE9jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0cygxNSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM2NVRPMTI3T0NURVRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTUEtUUzY1VE8xMjdPQ1RFVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cygxNikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMjhUTzI1NU9DVEVUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMjhUTzI1NU9DVEVUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzKDE3KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzI1NlRPNTExT0NURVRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTUEtUUzI1NlRPNTExT0NURVRTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzKDE4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzUxMlRPMTAyM09DVEVUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU1BLVFM1MTJUTzEwMjNPQ1RFVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzKDE5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzEwMjRUTzE1MThPQ1RFVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTAyNFRPMTUxOE9DVEVUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPd25lcigyMCkvT3duZXJTdHJpbmcvQVNOX09DVEVUX1NUUi9jaGFyKGNoYXIpLy9ML0EvVy9lL1IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTT1dORVI6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNPV05FUl9GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNPd25lcikgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnR5cGUgPSBBU05fT0NURVRfU1RSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNPd25lcl9nZXQocm93cmVxX2N0eCwgKGNoYXIgKiopICZ2YXItPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFyLT52YWxfbGVuKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1N0YXR1cygyMSkvRW50cnlTdGF0dXMvQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL0EvVy9FL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c1N0YXR1cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1N0YXR1c19nZXQocm93cmVxX2N0eCwgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChFVEhFUlNUQVRTVEFCTEVfTUlOX0NPTCA8PSBjb2x1bW4KKyAgICAgICAgICAgICYmIGNvbHVtbiA8PSBFVEhFUlNUQVRTVEFCTEVfTUFYX0NPTCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImFzc3VtZSBjb2x1bW4gJWQgaXMgcmVzZXJ2ZWRcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmMgPSBNRkRfU0tJUDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBjb2x1bW4gJWQgaW4gX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbHVtbik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4gKi8KKworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfdmFsdWVzKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0cmk7CisgICAgdV9jaGFyICAgICAgICAgKm9sZF9zdHJpbmc7CisgICAgdm9pZCAgICAgICAgICAgICgqZGF0YUZyZWVIb29rKSAodm9pZCAqKTsKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF92YWx1ZXMiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBERUJVR01TR1RMKCgiOTpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X3ZhbHVlcyIsCisgICAgICAgICAgICAgICAgImV4aXN0cyAldVxuIiwgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncykpOworCisgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNhdmUgb2xkIHBvaW50ZXIsIHNvIHdlIGNhbiBmcmVlIGl0IGlmIHJlcGxhY2VkCisgICAgICAgICAqLworICAgICAgICBvbGRfc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZzsKKyAgICAgICAgZGF0YUZyZWVIb29rID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+ZGF0YUZyZWVIb29rOworICAgICAgICBpZiAoTlVMTCA9PSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmOworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiA9CisgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmID09CisgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gIT0KKyAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuID0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBnZXQgY29sdW1uIGRhdGEKKyAgICAgICAgICovCisgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdHJpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmMgPSBfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4ocm93cmVxX2N0eCwgcmVxdWVzdHMtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIGlmIChNRkRfU0tJUCA9PSByYykgeworICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgPSBTTk1QX05PU1VDSElOU1RBTkNFOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChOVUxMID09IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJOVUxMIHZhcmJpbmQgZGF0YSBwb2ludGVyIVxuIik7CisgICAgICAgICAgICByYyA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICBpZiAocmMpCisgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlmIHRoZSBidWZmZXIgd2Fzbid0IHVzZWQgcHJldmlvdXNseSBmb3IgdGhlIG9sZCBkYXRhIChpLmUuIGl0CisgICAgICAgICAqIHdhcyBhbGxjb2F0ZWQgbWVtb3J5KSAgYW5kIHRoZSBnZXQgcm91dGluZSByZXBsYWNlZCB0aGUgcG9pbnRlciwKKyAgICAgICAgICogd2UgbmVlZCB0byBmcmVlIHRoZSBwcmV2aW91cyBwb2ludGVyLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKG9sZF9zdHJpbmcgJiYgKG9sZF9zdHJpbmcgIT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSAmJgorICAgICAgICAgICAgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcgIT0gb2xkX3N0cmluZykpIHsKKyAgICAgICAgICAgIGlmIChkYXRhRnJlZUhvb2spCisgICAgICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spIChvbGRfc3RyaW5nKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmVlKG9sZF9zdHJpbmcpOworICAgICAgICB9CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X3ZhbHVlcyAqLworCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2luZGV4ZXMoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X2V0aGVyU3RhdHNUYWJsZV9jaGVja19pbmRleGVzIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisKKyAgICAvKgorICAgICAqIChJTkRFWCkgZXRoZXJTdGF0c0luZGV4KDEpL0lOVEVHRVIzMi9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9oIAorICAgICAqLworICAgIC8qCisgICAgICogY2hlY2sgZGVmaW5lZCByYW5nZShzKS4gCisgICAgICovCisgICAgaWYgKChTTk1QRVJSX1NVQ0NFU1MgPT0gcmMpCisgICAgICAgICYmICgocm93cmVxX2N0eC0+dGJsX2lkeC5ldGhlclN0YXRzSW5kZXggPCAxKQorICAgICAgICAgICAgfHwgKHJvd3JlcV9jdHgtPnRibF9pZHguZXRoZXJTdGF0c0luZGV4ID4gNjU1MzUpKQorICAgICAgICApIHsKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0KKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIHJldHVybiByYzsKKyAgICByYyA9IGV0aGVyU3RhdHNJbmRleF9jaGVja19pbmRleChyb3dyZXFfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOworCisgICAgLyoKKyAgICAgKiBpZiBpbmRpdmlkdWFsIHBhcnRzIGxvb2sgb2ssIGNoZWNrIHRoZW0gYXMgYSB3aG9sZQorICAgICAqLworICAgIHJldHVybiBldGhlclN0YXRzVGFibGVfdmFsaWRhdGVfaW5kZXgoZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2luZGV4ZXMgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogU0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNFVDogU3ludGF4IGNoZWNrcworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBAaW50ZXJuYWwKKyAqIENoZWNrIHRoZSBzeW50YXggZm9yIGEgcGFydGljdWxhciBjb2x1bW4KKyAqLworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2V0aGVyU3RhdHNUYWJsZV9jaGVja19jb2x1bW4oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLCBpbnQgY29sdW1uKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X2V0aGVyU3RhdHNUYWJsZV9jaGVja19jb2x1bW4iLAorICAgICAgICAgICAgICAgICJjYWxsZWQgZm9yICVkXG4iLCBjb2x1bW4pKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBzd2l0Y2ggKGNvbHVtbikgeworICAgICAgICAvKgorICAgICAgICAgKiAoSU5ERVgpIGV0aGVyU3RhdHNJbmRleCgxKS9JTlRFR0VSMzIvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0lOREVYOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOyAgICAgIC8qIGNhbiBub3QgY2hhbmdlIGluZGV4IG9mIGFjdGl2ZSByb3cgKi8KKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0RhdGFTb3VyY2UoMikvT0JKRUNUSUQvQVNOX09CSkVDVF9JRC9vaWQob2lkKS8vTC9BL1cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0U6CisgICAgICAgIHJjID0gbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSh2YXIsIEFTTl9PQkpFQ1RfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZSkpOworICAgICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOl9ldGhlclN0YXRzVGFibGVfY2hlY2tfY29sdW1uOmV0aGVyU3RhdHNEYXRhU291cmNlIiwgInZhcmJpbmQgdmFsaWRhdGlvbiBmYWlsZWQgKGVnIGJhZCB0eXBlIG9yIHNpemUpXG4iKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByYyA9IGV0aGVyU3RhdHNEYXRhU291cmNlX2NoZWNrX3ZhbHVlKHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvaWQgKikgdmFyLT52YWwuc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKChNRkRfU1VDQ0VTUyAhPSByYykgJiYgKE1GRF9OT1RfVkFMSURfRVZFUiAhPSByYykKKyAgICAgICAgICAgICAgICAmJiAoTUZEX05PVF9WQUxJRF9OT1cgIT0gcmMpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIHJjICVkIGZyb20gZXRoZXJTdGF0c0RhdGFTb3VyY2VfY2hlY2tfdmFsdWVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmMpOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNEcm9wRXZlbnRzKDMpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNEUk9QRVZFTlRTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT2N0ZXRzKDQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNPQ1RFVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzKDUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzQnJvYWRjYXN0UGt0cyg2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTQlJPQURDQVNUUEtUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c011bHRpY2FzdFBrdHMoNykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU01VTFRJQ0FTVFBLVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9ycyg4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTQ1JDQUxJR05FUlJPUlM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzKDkpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNVTkRFUlNJWkVQS1RTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT3ZlcnNpemVQa3RzKDEwKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTT1ZFUlNJWkVQS1RTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzRnJhZ21lbnRzKDExKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTRlJBR01FTlRTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzSmFiYmVycygxMikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0pBQkJFUlM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNDb2xsaXNpb25zKDEzKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTQ09MTElTSU9OUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHM2NE9jdGV0cygxNCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM2NE9DVEVUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzKDE1KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzY1VE8xMjdPQ1RFVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHMoMTYpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTI4VE8yNTVPQ1RFVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHMoMTcpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMjU2VE81MTFPQ1RFVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzKDE4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzUxMlRPMTAyM09DVEVUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzKDE5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzEwMjRUTzE1MThPQ1RFVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPd25lcigyMCkvT3duZXJTdHJpbmcvQVNOX09DVEVUX1NUUi9jaGFyKGNoYXIpLy9ML0EvVy9lL1IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTT1dORVI6CisgICAgICAgIHJjID0gbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSh2YXIsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzT3duZXIpKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogY2hlY2sgZGVmaW5lZCByYW5nZShzKS4gCisgICAgICAgICAqLworICAgICAgICBpZiAoKFNOTVBFUlJfU1VDQ0VTUyA9PSByYykKKyAgICAgICAgICAgICYmICgodmFyLT52YWxfbGVuIDwgMCkgfHwgKHZhci0+dmFsX2xlbiA+IDEyNykpCisgICAgICAgICAgICApIHsKKyAgICAgICAgICAgIHJjID0gU05NUF9FUlJfV1JPTkdMRU5HVEg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2NvbHVtbjpldGhlclN0YXRzT3duZXIiLCAidmFyYmluZCB2YWxpZGF0aW9uIGZhaWxlZCAoZWcgYmFkIHR5cGUgb3Igc2l6ZSlcbiIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJjID0gZXRoZXJTdGF0c093bmVyX2NoZWNrX3ZhbHVlKHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSB2YXItPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKChNRkRfU1VDQ0VTUyAhPSByYykgJiYgKE1GRF9OT1RfVkFMSURfRVZFUiAhPSByYykKKyAgICAgICAgICAgICAgICAmJiAoTUZEX05PVF9WQUxJRF9OT1cgIT0gcmMpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIHJjICVkIGZyb20gZXRoZXJTdGF0c093bmVyX2NoZWNrX3ZhbHVlXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJjKTsKKyAgICAgICAgICAgICAgICByYyA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzU3RhdHVzKDIxKS9FbnRyeVN0YXR1cy9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS9XL0Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVM6CisgICAgICAgIHJjID0gbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplKHZhciwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1N0YXR1cykpOworICAgICAgICAvKgorICAgICAgICAgKiBjaGVjayB0aGF0IHRoZSB2YWx1ZSBpcyBvbmUgb2YgZGVmaW5lZCBlbnVtcyAKKyAgICAgICAgICovCisgICAgICAgIGlmICgoU05NUEVSUl9TVUNDRVNTID09IHJjKQorICAgICAgICAgICAgJiYgKCp2YXItPnZhbC5pbnRlZ2VyICE9IEVOVFJZU1RBVFVTX1ZBTElEKQorICAgICAgICAgICAgJiYgKCp2YXItPnZhbC5pbnRlZ2VyICE9IEVOVFJZU1RBVFVTX0NSRUFURVJFUVVFU1QpCisgICAgICAgICAgICAmJiAoKnZhci0+dmFsLmludGVnZXIgIT0gRU5UUllTVEFUVVNfVU5ERVJDUkVBVElPTikKKyAgICAgICAgICAgICYmICgqdmFyLT52YWwuaW50ZWdlciAhPSBFTlRSWVNUQVRVU19JTlZBTElEKQorICAgICAgICAgICAgKSB7CisgICAgICAgICAgICByYyA9IFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2NvbHVtbjpldGhlclN0YXRzU3RhdHVzIiwgInZhcmJpbmQgdmFsaWRhdGlvbiBmYWlsZWQgKGVnIGJhZCB0eXBlIG9yIHNpemUpXG4iKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByYyA9IGV0aGVyU3RhdHNTdGF0dXNfY2hlY2tfdmFsdWUocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKCh1X2xvbmcgKikgdmFyLT52YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcpKTsKKyAgICAgICAgICAgIGlmICgoTUZEX1NVQ0NFU1MgIT0gcmMpICYmIChNRkRfTk9UX1ZBTElEX0VWRVIgIT0gcmMpCisgICAgICAgICAgICAgICAgJiYgKE1GRF9OT1RfVkFMSURfTk9XICE9IHJjKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCByYyAlZCBmcm9tIGV0aGVyU3RhdHNTdGF0dXNfY2hlY2tfdmFsdWVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmMpOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDogICAgLyoqIFdlIHNob3VsZG4ndCBnZXQgaGVyZSAqLworICAgICAgICByYyA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgInVua25vd24gY29sdW1uICVkIGluIF9ldGhlclN0YXRzVGFibGVfY2hlY2tfY29sdW1uXG4iLAorICAgICAgICAgICAgICAgICBjb2x1bW4pOworICAgIH0KKworICAgIHJldHVybiByYzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2V0aGVyU3RhdHNUYWJsZV9jaGVja19jb2x1bW4gKi8KKworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9jaGVja19vYmplY3RzKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0cmk7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9jaGVja19vYmplY3RzIiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIGZvciAoOyByZXF1ZXN0czsgcmVxdWVzdHMgPSByZXF1ZXN0cy0+bmV4dCkgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGdldCBjb2x1bW4gbnVtYmVyIGZyb20gdGFibGUgcmVxdWVzdCBpbmZvLCBhbmQgY2hlY2sgdGhhdCBjb2x1bW4KKyAgICAgICAgICovCisgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdHJpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmMgPSBfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2NvbHVtbihyb3dyZXFfY3R4LCByZXF1ZXN0cy0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaS0+Y29sbnVtKTsKKyAgICAgICAgaWYgKHJjKSB7CisgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgcmVzdWx0cyAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX29iamVjdHMgKi8KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTRVQ6IFVuZG8gc2V0dXAKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogQGludGVybmFsCisgKiBTZXQgdGhlIHZhbHVlIGZvciBhIHBhcnRpY3VsYXIgY29sdW1uCisgKi8KK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK19ldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cF9jb2x1bW4oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X2V0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwX2NvbHVtbiIsICJjYWxsZWQgZm9yICVkXG4iLCBjb2x1bW4pKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBzd2l0Y2ggKGNvbHVtbikgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNEYXRhU291cmNlKDIpL09CSkVDVElEL0FTTl9PQkpFQ1RfSUQvb2lkKG9pZCkvL0wvQS9XL2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFOgorICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHw9IENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRV9GTEFHOworICAgICAgICByYyA9IGV0aGVyU3RhdHNEYXRhU291cmNlX3VuZG9fc2V0dXAocm93cmVxX2N0eCk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPd25lcigyMCkvT3duZXJTdHJpbmcvQVNOX09DVEVUX1NUUi9jaGFyKGNoYXIpLy9ML0EvVy9lL1IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTT1dORVI6CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgfD0gQ09MVU1OX0VUSEVSU1RBVFNPV05FUl9GTEFHOworICAgICAgICByYyA9IGV0aGVyU3RhdHNPd25lcl91bmRvX3NldHVwKHJvd3JlcV9jdHgpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzU3RhdHVzKDIxKS9FbnRyeVN0YXR1cy9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS9XL0Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVM6CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgfD0gQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRzsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzU3RhdHVzX3VuZG9fc2V0dXAocm93cmVxX2N0eCk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgInVua25vd24gY29sdW1uICVkIGluIF9ldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cF9jb2x1bW5cbiIsCisgICAgICAgICAgICAgICAgIGNvbHVtbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2V0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwX2NvbHVtbiAqLworCisKKy8qKgorICogQGludGVybmFsCisgKiB1bmRvIHNldHVwCisgKi8KK2ludAorX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIGFsbG9jYXRlIHVuZG8gY29udGV4dAorICAgICAqLworICAgIHJvd3JlcV9jdHgtPnVuZG8gPSBldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YSgpOworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgtPnVuZG8pIHsKKyAgICAgICAgLyoqIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLworICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIC8qCisgICAgICogcm93IHVuZG8gc2V0dXAKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzID0gMDsKKyAgICByYyA9IGV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwKHJvd3JlcV9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOm1mZCIsICJlcnJvciAlZCBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwXG4iLCByYykpOworICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgU05NUF9WQUxJREFURV9FUlIocmMpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKgorICAgICAgICAgKiBjb2x1bW4gdW5kbyBzZXR1cAorICAgICAgICAgKi8KKyAgICAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICAgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogc2V0IGNvbHVtbiBkYXRhCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgICAgIGlmIChOVUxMID09IHRyaSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgcmMgPSBfZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXBfY29sdW1uKHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICAgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTptZmQiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwX2NvbHVtblxuIiwgcmMpKTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKGFndHJlcV9pbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXAgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHVuZG8gc2V0dXAKKyAqLworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGZhaWxlZCByb3cgY3JlYXRlIGluIGVhcmx5IHN0YWdlcyBoYXMgbm8gcm93cmVxX2N0eAorICAgICAqLworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpCisgICAgICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKKworICAgIC8qCisgICAgICogY2FsbCB1c2VyIGNsZWFudXAKKyAgICAgKi8KKyAgICByYyA9IGV0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAocm93cmVxX2N0eCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IGl0IGJ1dCBsb2cgaXQKKyAgICAgICAgICovCisgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGU6bWZkIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX3VuZG9fY2xlYW51cFxuIiwgcmMpKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIHJlbGVhc2UgdW5kbyBjb250ZXh0LCBpZiBuZWVkZWQKKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eC0+dW5kbykgeworICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9kYXRhKHJvd3JlcV9jdHgtPnVuZG8pOworICAgICAgICByb3dyZXFfY3R4LT51bmRvID0gTlVMTDsKKyAgICB9CisKKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogU0VUOiBTZXQgdmFsdWVzCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIEBpbnRlcm5hbAorICogU2V0IHRoZSB2YWx1ZSBmb3IgYSBwYXJ0aWN1bGFyIGNvbHVtbgorICovCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfZXRoZXJTdGF0c1RhYmxlX3NldF9jb2x1bW4oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9ldGhlclN0YXRzVGFibGVfc2V0X2NvbHVtbiIsCisgICAgICAgICAgICAgICAgImNhbGxlZCBmb3IgJWRcbiIsIGNvbHVtbikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIHN3aXRjaCAoY29sdW1uKSB7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0RhdGFTb3VyY2UoMikvT0JKRUNUSUQvQVNOX09CSkVDVF9JRC9vaWQob2lkKS8vTC9BL1cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0U6CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgfD0gQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUc7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0RhdGFTb3VyY2Vfc2V0KHJvd3JlcV9jdHgsIChvaWQgKikgdmFyLT52YWwuc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPnZhbF9sZW4pOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT3duZXIoMjApL093bmVyU3RyaW5nL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9BL1cvZS9SL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU09XTkVSOgorICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHw9IENPTFVNTl9FVEhFUlNUQVRTT1dORVJfRkxBRzsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzT3duZXJfc2V0KHJvd3JlcV9jdHgsIChjaGFyICopIHZhci0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+dmFsX2xlbik7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNTdGF0dXMoMjEpL0VudHJ5U3RhdHVzL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9BL1cvRS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1NUQVRVUzoKKyAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyB8PSBDT0xVTU5fRVRIRVJTVEFUU1NUQVRVU19GTEFHOworICAgICAgICByYyA9IGV0aGVyU3RhdHNTdGF0dXNfc2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKigodV9sb25nICopIHZhci0+dmFsLnN0cmluZykpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJ1bmtub3duIGNvbHVtbiAlZCBpbiBfZXRoZXJTdGF0c1RhYmxlX3NldF9jb2x1bW5cbiIsCisgICAgICAgICAgICAgICAgIGNvbHVtbik7CisgICAgICAgIHJjID0gU05NUF9FUlJfR0VORVJSOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9ldGhlclN0YXRzVGFibGVfc2V0X2NvbHVtbiAqLworCitpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX3NldF92YWx1ZXMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9zZXRfdmFsdWVzIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyA9IDA7CisgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNldCBjb2x1bW4gZGF0YQorICAgICAgICAgKi8KKyAgICAgICAgdHJpID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdHMpOworICAgICAgICBpZiAoTlVMTCA9PSB0cmkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByYyA9IF9ldGhlclN0YXRzVGFibGVfc2V0X2NvbHVtbihyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLCB0cmktPmNvbG51bSk7CisgICAgICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTptZmQiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX3NldF9jb2x1bW5cbiIsIHJjKSk7CisgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKGFndHJlcV9pbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9WQUxJREFURV9FUlIocmMpKTsKKyAgICAgICAgfQorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgcmVzdWx0cyAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3NldF92YWx1ZXMgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogU0VUOiBjb21taXQKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKioKKyAqIEBpbnRlcm5hbAorICogY29tbWl0IHRoZSB2YWx1ZXMKKyAqLworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9jb21taXQobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjOworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9jb21taXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICByYyA9IGV0aGVyU3RhdHNUYWJsZV9jb21taXQocm93cmVxX2N0eCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGU6bWZkIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX2NvbW1pdFxuIiwgcmMpKTsKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgfQorCisgICAgaWYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfRElSVFkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogaWYgd2Ugc3VjY2Vzc2Z1bGx5IGNvbW1pdGVkIHRoaXMgcm93LCBzZXQgdGhlIGRpcnR5IGZsYWcuIFVzZSB0aGUKKyAgICAgICAgICogY3VycmVudCB2YWx1ZSArIDEgKGkuZS4gZGlydHkgPSAjIHJvd3MgY2hhbmdlZCkuCisgICAgICAgICAqIHRoaXMgaXMgY2hlY2tlZCBpbiBwb3N0X3JlcXVlc3QuLi4KKyAgICAgICAgICovCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9zZXQoZXRoZXJTdGF0c1RhYmxlX2RpcnR5X2dldCgpICsgMSk7ICAgICAvKiBzZXQgdGFibGUgZGlydHkgZmxhZyAqLworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCitpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29tbWl0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYzsKKyAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19jb21taXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgaWYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfRElSVFkpIHsKKyAgICAgICAgdV9pbnQgICAgICAgICAgIGQgPSBldGhlclN0YXRzVGFibGVfZGlydHlfZ2V0KCk7CisKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoZCAhPSAwKTsKKyAgICAgICAgaWYgKGQpCisgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfZGlydHlfc2V0KGQgLSAxKTsKKyAgICB9CisKKyAgICByYyA9IGV0aGVyU3RhdHNUYWJsZV91bmRvX2NvbW1pdChyb3dyZXFfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTptZmQiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfdW5kb19jb21taXRcbiIsIHJjKSk7CisgICAgfQorCisgICAgaWYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfRElSVFkpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGUgcm93IGRpcnR5IGZsYWcgc3RpbGwgc2V0IGFmdGVyIHVuZG9fY29tbWl0XG4iKTsKKyAgICAgICAgcm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICY9IH5NRkRfUk9XX0RJUlRZOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2V0aGVyU3RhdHNUYWJsZV9jb21taXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogU0VUOiBVbmRvCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHVuZG8gdGhlIHZhbHVlIGZvciBhIHBhcnRpY3VsYXIgY29sdW1uCisgKi8KK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK19ldGhlclN0YXRzVGFibGVfdW5kb19jb2x1bW4oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsIGludCBjb2x1bW4pCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gU05NUEVSUl9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29sdW1uIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkIGZvciAlZFxuIiwgY29sdW1uKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgc3dpdGNoIChjb2x1bW4pIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzRGF0YVNvdXJjZSgyKS9PQkpFQ1RJRC9BU05fT0JKRUNUX0lEL29pZChvaWQpLy9ML0EvVy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRToKKyAgICAgICAgcmMgPSBldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvKHJvd3JlcV9jdHgpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT3duZXIoMjApL093bmVyU3RyaW5nL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9BL1cvZS9SL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU09XTkVSOgorICAgICAgICByYyA9IGV0aGVyU3RhdHNPd25lcl91bmRvKHJvd3JlcV9jdHgpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzU3RhdHVzKDIxKS9FbnRyeVN0YXR1cy9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS9XL0Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVM6CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1N0YXR1c191bmRvKHJvd3JlcV9jdHgpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJ1bmtub3duIGNvbHVtbiAlZCBpbiBfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29sdW1uXG4iLAorICAgICAgICAgICAgICAgICBjb2x1bW4pOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9ldGhlclN0YXRzVGFibGVfdW5kb19jb2x1bW4gKi8KKworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX3ZhbHVlcyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfdW5kb192YWx1ZXMiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgcmMgPSBldGhlclN0YXRzVGFibGVfdW5kbyhyb3dyZXFfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTptZmQiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfdW5kb1xuIiwgcmMpKTsKKyAgICB9CisKKyAgICBmb3IgKDsgcmVxdWVzdHM7IHJlcXVlc3RzID0gcmVxdWVzdHMtPm5leHQpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogc2V0IGNvbHVtbiBkYXRhCisgICAgICAgICAqLworICAgICAgICB0cmkgPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0cyk7CisgICAgICAgIGlmIChOVUxMID09IHRyaSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJjID0gX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NvbHVtbihyb3dyZXFfY3R4LCByZXF1ZXN0cy0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGU6bWZkIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV91bmRvX2NvbHVtblxuIiwgcmMpKTsKKyAgICAgICAgfQorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgcmVzdWx0cyAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fdmFsdWVzICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNFVDogaXJyZXZlcnNpYmxlIGNvbW1pdAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKgorICogQGludGVybmFsCisgKiBjb21taXQgaXJyZXZlcnNpYmxlIGFjdGlvbnMKKyAqLworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9pcnJldmVyc2libGVfY29tbWl0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9pcnJldmVyc2libGU6Y29tbWl0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogY2hlY2sgZm9yIGFuZCBoYW5kbGUgcm93IGNyZWF0aW9uL2RlbGV0aW9uCisgICAgICogYW5kIHVwZGF0ZSBjb2x1bW4gZXhpc3QgZmxhZ3MuLi4KKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19ERUxFVEVEKSB7CisgICAgICAgIGlmICghKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfQ1JFQVRFRCkpCisgICAgICAgICAgICBDT05UQUlORVJfUkVNT1ZFKGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAocm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncykgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2lycmV2ZXJzaWJsZV9jb21taXQiLCAidXBkYXRpbmcgZXhpc3RzICglI3gpIHcvc2V0ICglI3gpID0gJSN4XG4iLCByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzLCByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzLCAocm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8IHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MpKSk7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9CisgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFnczsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0NSRUFURUQpIHsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmPSB+TUZEX1JPV19DUkVBVEVEOworICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChldGhlclN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9ldGhlclN0YXRzVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBEQVRBIEFDQ0VTUworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkICAgICBfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpOworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgaW50CitfY2FjaGVfbG9hZChuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKnZtYWdpYykKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9jYWNoZV9sb2FkIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNhY2hlIGZvciBldGhlclN0YXRzVGFibGVfY2FjaGVfbG9hZFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiogc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZvciBhbiBpbnZhbGlkIG9yIGV4cGlyZWQgY2FjaGUgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoMCA9PSBjYWNoZS0+dmFsaWQpIHx8ICgxID09IGNhY2hlLT5leHBpcmVkKSk7CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgcmV0dXJuIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZCgobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFnaWMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfbG9hZCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfY2FjaGVfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjYWNoZSBpbiBldGhlclN0YXRzVGFibGVfY2FjaGVfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250YWluZXIgPSAobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPm1hZ2ljOworCisgICAgX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2l0ZW1fZnJlZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb250ZXh0KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X2NvbnRhaW5lcl9pdGVtX2ZyZWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpCisgICAgICAgIHJldHVybjsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jb250YWluZXJfaXRlbV9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfY29udGFpbmVyX2ZyZWUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY29udGFpbmVyIGluIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7CisKKyAgICAvKgorICAgICAqIGZyZWUgYWxsIGl0ZW1zLiBpbmVmZmljaWVudCwgYnV0IGVhc3kuCisgICAgICovCisgICAgQ09OVEFJTkVSX0NMRUFSKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9jb250YWluZXJfaXRlbV9mcmVlLAorICAgICAgICAgICAgICAgICAgICBOVUxMKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NvbnRhaW5lcl9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBpbml0aWFsaXplIHRoZSBjb250YWluZXIgd2l0aCBmdW5jdGlvbnMgb3Igd3JhcHBlcnMKKyAqLwordm9pZAorX2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9ldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogY2FjaGUgaW5pdAorICAgICAqLworICAgIGlmX2N0eC0+Y2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAgLyogdGltZW91dCBpbiBzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZV9sb2FkLCBfY2FjaGVfZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX29pZF9zaXplKTsKKworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNhY2hlIGZvciBldGhlclN0YXRzVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWZfY3R4LT5jYWNoZS0+ZmxhZ3MgPSBORVRTTk1QX0NBQ0hFX0RPTlRfSU5WQUxJREFURV9PTl9TRVQ7CisKKyAgICBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQoJmlmX2N0eC0+Y29udGFpbmVyLCBpZl9jdHgtPmNhY2hlKTsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikKKyAgICAgICAgaWZfY3R4LT5jb250YWluZXIgPQorICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZmluZCgiZXRoZXJTdGF0c1RhYmxlOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjb250YWluZXIgaW4gIgorICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChOVUxMICE9IGlmX2N0eC0+Y2FjaGUpCisgICAgICAgIGlmX2N0eC0+Y2FjaGUtPm1hZ2ljID0gKHZvaWQgKikgaWZfY3R4LT5jb250YWluZXI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9ldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHNodXRkb3duIHRoZSBjb250YWluZXIgd2l0aCBmdW5jdGlvbnMgb3Igd3JhcHBlcnMKKyAqLwordm9pZAorX2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsICJjYWxsZWRcbiIpKTsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaWZfY3R4LT5jb250YWluZXIpOworCisgICAgX2NvbnRhaW5lcl9mcmVlKGlmX2N0eC0+Y29udGFpbmVyKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisKK2V0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKK2V0aGVyU3RhdHNUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgb2lkICAgICAgICAgICAgIG9pZF90bXBbTUFYX09JRF9MRU5dOworICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIC8qCisgICAgICogc2V0IHVwIHN0b3JhZ2UgZm9yIE9JRAorICAgICAqLworICAgIG9pZF9pZHgub2lkcyA9IG9pZF90bXA7CisgICAgb2lkX2lkeC5sZW4gPSBzaXplb2Yob2lkX3RtcCkgLyBzaXplb2Yob2lkKTsKKworICAgIC8qCisgICAgICogY29udmVydAorICAgICAqLworICAgIHJjID0gZXRoZXJTdGF0c1RhYmxlX2luZGV4X3RvX29pZCgmb2lkX2lkeCwgbWliX2lkeCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJvd3JlcV9jdHggPQorICAgICAgICBDT05UQUlORVJfRklORChldGhlclN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lciwgJm9pZF9pZHgpOworCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5oIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTE0NTdiCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuaApAQCAtMCwwICsxLDk4IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisvKiogQGluZ3JvdXAgaW50ZXJmYWNlOiBSb3V0aW5lcyB0byBpbnRlcmZhY2UgdG8gTmV0LVNOTVAKKyAqCisgKiBcd2FybmluZyBUaGlzIGNvZGUgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgY2FsbGVkIGRpcmVjdGx5LAorICogICAgICAgICAgb3IgdXNlZCB0byBpbnRlcnByZXQgZnVuY3Rpb25hbGl0eS4gSXQgaXMgc3ViamVjdCB0bworICogICAgICAgICAgY2hhbmdlIGF0IGFueSB0aW1lLgorICogCisgKiBAeworICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyNpZm5kZWYgRVRIRVJTVEFUU1RBQkxFX0lOVEVSRkFDRV9ICisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9JTlRFUkZBQ0VfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZS5oIgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKiBQVUJMSUMgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9ldGhlclN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdXNlcl9jdHgsIHVfbG9uZyBmbGFncyk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9ldGhlclN0YXRzVGFibGVfc2h1dGRvd25faW50ZXJmYWNlKGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCk7CisKKyAgICBldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICpldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKTsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgKmV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3cmVnKTsKKworICAgIG5ldHNubXBfY29udGFpbmVyICpldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2dldCh2b2lkKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpOworCisgICAgdV9pbnQgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9nZXQodm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9zZXQodV9pbnQgc3RhdHVzKTsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCh2b2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfaW5kZXhfdG9fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9taWJfaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfaW5kZXhfZnJvbV9vaWQobmV0c25tcF9pbmRleCAqIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOworCisgICAgLyoKKyAgICAgKiBhY2Nlc3MgdG8gY2VydGFpbiBpbnRlcm5hbHMuIHVzZSB3aXRoIGNhdXRpb24hCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV92YWxpZF9jb2x1bW5zX3NldChuZXRzbm1wX2NvbHVtbl9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmMpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVUSEVSU1RBVFNUQUJMRV9JTlRFUkZBQ0VfSCAqLworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX29pZHMuaCBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfb2lkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZjFkYTMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX29pZHMuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBnZW5lcmljLXRhYmxlLW9pZHMubTJjIDEyODU1IDIwMDUtMDktMjcgMTU6NTY6MDhaIHJzdG9yeSAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBFVEhFUlNUQVRTVEFCTEVfT0lEU19ICisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9PSURTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKgorICAgICAqIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGV0aGVyU3RhdHNUYWJsZSAKKyAgICAgKi8KKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX09JRCAgICAgICAgICAgICAgMSwzLDYsMSwyLDEsMTYsMSwxCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNJTkRFWCAgICAgICAgIDEKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNJTkRFWF9GTEFHICAgICgweDEgPDwgMCkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0UgICAgICAgICAyCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRV9GTEFHICAgICgweDEgPDwgMSkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0RST1BFVkVOVFMgICAgICAgICAzCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTRFJPUEVWRU5UU19GTEFHICAgICgweDEgPDwgMikKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU09DVEVUUyAgICAgICAgIDQKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNPQ1RFVFNfRkxBRyAgICAoMHgxIDw8IDMpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTICAgICAgICAgNQorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFNfRkxBRyAgICAoMHgxIDw8IDQpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNCUk9BRENBU1RQS1RTICAgICAgICAgNgorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0JST0FEQ0FTVFBLVFNfRkxBRyAgICAoMHgxIDw8IDUpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNNVUxUSUNBU1RQS1RTICAgICAgICAgNworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU01VTFRJQ0FTVFBLVFNfRkxBRyAgICAoMHgxIDw8IDYpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNDUkNBTElHTkVSUk9SUyAgICAgICAgIDgKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNDUkNBTElHTkVSUk9SU19GTEFHICAgICgweDEgPDwgNykKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1VOREVSU0laRVBLVFMgICAgICAgICA5CisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTVU5ERVJTSVpFUEtUU19GTEFHICAgICgweDEgPDwgOCkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU09WRVJTSVpFUEtUUyAgICAgICAgIDEwCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTT1ZFUlNJWkVQS1RTX0ZMQUcgICAgKDB4MSA8PCA5KQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTRlJBR01FTlRTICAgICAgICAgMTEKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNGUkFHTUVOVFNfRkxBRyAgICAoMHgxIDw8IDEwKQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTSkFCQkVSUyAgICAgICAgIDEyCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTSkFCQkVSU19GTEFHICAgICgweDEgPDwgMTEpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNDT0xMSVNJT05TICAgICAgICAgMTMKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNDT0xMSVNJT05TX0ZMQUcgICAgKDB4MSA8PCAxMikKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM2NE9DVEVUUyAgICAgICAgIDE0CisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTUEtUUzY0T0NURVRTX0ZMQUcgICAgKDB4MSA8PCAxMykKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM2NVRPMTI3T0NURVRTICAgICAgICAgMTUKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNjVUTzEyN09DVEVUU19GTEFHICAgICgweDEgPDwgMTQpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTI4VE8yNTVPQ1RFVFMgICAgICAgICAxNgorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMjhUTzI1NU9DVEVUU19GTEFHICAgICgweDEgPDwgMTUpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMjU2VE81MTFPQ1RFVFMgICAgICAgICAxNworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMyNTZUTzUxMU9DVEVUU19GTEFHICAgICgweDEgPDwgMTYpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNTEyVE8xMDIzT0NURVRTICAgICAgICAgMTgKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNTEyVE8xMDIzT0NURVRTX0ZMQUcgICAgKDB4MSA8PCAxNykKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMDI0VE8xNTE4T0NURVRTICAgICAgICAgMTkKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTAyNFRPMTUxOE9DVEVUU19GTEFHICAgICgweDEgPDwgMTgpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNPV05FUiAgICAgICAgIDIwCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTT1dORVJfRkxBRyAgICAoMHgxIDw8IDE5KQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTICAgICAgICAgMjEKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRyAgICAoMHgxIDw8IDIwKQorCisKKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX01JTl9DT0wgICBDT0xVTU5fRVRIRVJTVEFUU0lOREVYCisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9NQVhfQ09MICAgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVMKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjQwNTpyOiBSZXZpZXcgRVRIRVJTVEFUU1RBQkxFX1NFVFRBQkxFX0NPTFMgbWFjcm8uCisgICAgICogT1IgdG9nZXRoZXIgYWxsIHRoZSB3cml0YWJsZSBjb2xzLgorICAgICAqLworI2RlZmluZSBFVEhFUlNUQVRTVEFCTEVfU0VUVEFCTEVfQ09MUyAoQ09MVU1OX0VUSEVSU1RBVFNJTkRFWF9GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU0RST1BFVkVOVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTT0NURVRTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU1BLVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTQlJPQURDQVNUUEtUU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNNVUxUSUNBU1RQS1RTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU0NSQ0FMSUdORVJST1JTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU1VOREVSU0laRVBLVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTT1ZFUlNJWkVQS1RTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU0ZSQUdNRU5UU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNKQUJCRVJTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU0NPTExJU0lPTlNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTUEtUUzY0T0NURVRTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU1BLVFM2NVRPMTI3T0NURVRTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMjhUTzI1NU9DVEVUU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMjU2VE81MTFPQ1RFVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTUEtUUzUxMlRPMTAyM09DVEVUU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTAyNFRPMTUxOE9DVEVUU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNPV05FUl9GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRykKKyAgICAvKgorICAgICAqIFRPRE86NDA1OnI6IFJldmlldyBFVEhFUlNUQVRTVEFCTEVfUkVRVUlSRURfQ09MUyBtYWNyby4KKyAgICAgKiBPUiB0b2dldGhlciBhbGwgdGhlIHJlcXVpcmVkIHJvd3MgZm9yIHJvdyBjcmVhdGlvbi4KKyAgICAgKiBkZWZhdWx0IGlzIHdyaXRhYmxlIGNvbHMgdy9vdXQgZGVmYXVsdHMuCisgICAgICovCisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9SRVFVSVJFRF9DT0xTIChDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0VfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTT1dORVJfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTX0ZMQUcpCisKKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX1ZBTElEX0NPTCAgICBDT0xVTU5fRVRIRVJTVEFUU0pBQkJFUlNfRkxBRyAKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVUSEVSU1RBVFNUQUJMRV9PSURTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9pb2N0bF9pbXBfY29tbW9uLmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvaW9jdGxfaW1wX2NvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MTk4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvaW9jdGxfaW1wX2NvbW1vbi5oCkBAIC0wLDAgKzEsMzUgQEAKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaW5jbHVkZSA8bGludXgvc29ja2lvcy5oPgorI2luY2x1ZGUgPGlmYWRkcnMuaD4KKworLyogdXNlIGtlcm5lbCdzIGV0aHRvb2wuaCAgKi8KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cit0eXBlZGVmIF9fdTY0IHU2NDsKK3R5cGVkZWYgX191MzIgdTMyOwordHlwZWRlZiBfX3UxNiB1MTY7Cit0eXBlZGVmIF9fdTggdTg7CisjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorCisvKiBzdHJ1Y3R1cmUgZm9yIHN0b3JpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBpbiB0aGUgc3lzdGVtICovCisKK3N0cnVjdCBpZm5hbWUgeworICAgIHN0cnVjdCBpZm5hbWUgKmlmbl9uZXh0OworICAgIGNoYXIgbmFtZSBbSUZfTkFNRVNJWkVdOworfTsKKworc3RydWN0IGlmbmFtZSAqZXRoZXJzdGF0c19pbnRlcmZhY2VfbmFtZV9saXN0X2dldCAoc3RydWN0IGlmbmFtZSAqLCBpbnQgKik7CitpbnQgZXRoZXJzdGF0c19pbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWUgKHN0cnVjdCBpZm5hbWUgKmxpc3RfaGVhZCk7CitpbnQgZXRoZXJzdGF0c19pbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQgKGludCBmZCwgY29uc3QgY2hhciAqbmFtZSk7CitpbnQgX2V0aGVyU3RhdHNfaW9jdGxfZ2V0KGludCBmZCwgaW50IHdoaWNoLCBzdHJ1Y3QgaWZyZXEgKmlmcnEsIGNvbnN0IGNoYXIqIG5hbWUpOworaW50IGludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgaW50IGZkLCBjb25zdCBjaGFyKiBuYW1lKTsKKworLyogZm9yIG1haW50YWluYWJpbGl0eSAqLworCisjZGVmaW5lIEJST0FEQ09NX1JFQ0VJVkVfSkFCQkVSUyAgICAgICAgICAgICAgICAicnhfamFiYmVycyIKKworI2RlZmluZSBFVEhFUlNUQVRTSkFCQkVSUyh4KSAgICAgICAgICAgICAgICAgICAgc3Ryc3RyKHgsIEJST0FEQ09NX1JFQ0VJVkVfSkFCQkVSUykKKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmMKaW5kZXggNDM1ZjU2MC4uYzAzYWVmNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jCkBAIC0xMDMsNiArMTAzLDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cEFzc29jTG9jYWxBZGRyVGFibGVcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIApAQCAtMTIxLDYgKzEyMiw5IEBACiAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOwogCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKaW5kZXggNjAxMGQ4NC4uYWQxNGE0NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKQEAgLTEwMSw2ICsxMDEsNyBAQAogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciBzY3RwQXNzb2NSZW1BZGRyVGFibGVcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIApAQCAtMTE5LDYgKzEyMCw4IEBACiAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOwogCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKIAogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYwppbmRleCBlNzIwYTM4Li5mM2E2OGEzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmMKQEAgLTEzMyw2ICsxMzMsNyBAQAogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciBzY3RwQXNzb2NUYWJsZVxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogCkBAIC0xNTEsNiArMTUyLDEyIEBACiAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOwogCisgICAgaWYgKGNhY2hlKQorICAgICAgICBuZXRzbm1wX2NhY2hlX2ZyZWUoY2FjaGUpOworCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKaW5kZXggYjc5OGI3ZS4uN2EyYjBiMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKQEAgLTk4LDYgKzk4LDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlXG4iKTsKKyAgICAgICAgcmVnID0gTlVMTDsgLyogaXQgd2FzIGZyZWVkIGluc2lkZSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlICovCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAKQEAgLTExNiw2ICsxMTcsOCBAQAogICAgIGlmIChoYW5kbGVyKQogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyKTsKIAorICAgIGlmICh0YWJsZV9pbmZvKQorICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CiAKICAgICBpZiAoY29udGFpbmVyKQogICAgICAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmMKaW5kZXggZWQxYjg0OS4uMzM3MGY1MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jCkBAIC0xMDAsNiArMTAwLDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGVcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIApAQCAtMTE4LDYgKzExOSw5IEBACiAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOwogCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMKaW5kZXggZmI3ZmY0Yi4uMjU0MmVhNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMKQEAgLTk5LDYgKzk5LDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlXG4iKTsKKyAgICAgICAgcmVnID0gTlVMTDsgLyogaXQgd2FzIGZyZWVkIGluc2lkZSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlICovCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAKQEAgLTExMiw2ICsxMTMsOCBAQAogICAgIGlmIChoYW5kbGVyKQogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyKTsKIAorICAgIGlmICh0YWJsZV9pbmZvKQorICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CiAKICAgICBpZiAoY29udGFpbmVyKQogICAgICAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jCmluZGV4IGIwNjIwNWMuLmE3Njc0ZTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMKQEAgLTk4LDYgKzk4LDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cExvb2t1cFJlbVBvcnRUYWJsZVxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogCkBAIC0xMTEsNiArMTEyLDggQEAKICAgICBpZiAoaGFuZGxlcikKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcik7CiAKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOwogCiAgICAgaWYgKGNvbnRhaW5lcikKICAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYwppbmRleCA0NDJlMjA3Li42YmMwZGU2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jCkBAIC0xMDAsNiArMTAwLDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZVxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogCkBAIC0xMTMsNiArMTE0LDggQEAKICAgICBpZiAoaGFuZGxlcikKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcik7CiAKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOwogCiAgICAgaWYgKGNvbnRhaW5lcikKICAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5jCmluZGV4IDAzNmY0MGMuLjgyMTA3OWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYwpAQCAtMTgsNiArMTgsNyBAQAogewogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm9fc3RhdHM7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mb19wYXJhbXM7CisgICAgaW50IHJjOwogCiAgICAgREVCVUdNU0dUTCgoInNjdHA6c2NhbGFyczppbml0IiwgIkluaXRpYWxpemluZ1xuIikpOwogCkBAIC0yNyw4ICsyOCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3RwX3N0YXRzX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzY3RwX3N0YXRzX29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChyZWdpbmZvX3N0YXRzLCBTQ1RQX0NVUlJFU1RBQiwKKyAgICBpZiAoIXJlZ2luZm9fc3RhdHMpCisgICAgICAgIHJldHVybjsKKworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAocmVnaW5mb19zdGF0cywgU0NUUF9DVVJSRVNUQUIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9ESVNDT05USU5VSVRZVElNRSk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuOworCiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvX3N0YXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNDVFBfU1RBVFNfQ0FDSEVfVElNRU9VVCwKQEAgLTQzLDggKzUwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjdHBfcGFyYW1zX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzY3RwX3BhcmFtc19vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAocmVnaW5mb19wYXJhbXMsIFNDVFBfUlRPQUxHT1JJVEhNLAorICAgIGlmICghcmVnaW5mb19wYXJhbXMpCisgICAgICAgIHJldHVybjsKKworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAocmVnaW5mb19wYXJhbXMsIFNDVFBfUlRPQUxHT1JJVEhNLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfTUFYSU5JVFJFVFIpOworICAgIGlmICghcmMpCisgICAgICAgIHJldHVybjsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm9fcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNDVFBfUEFSQU1TX0NBQ0hFX1RJTUVPVVQsCkBAIC02NSw3ICs3Nyw2IEBACiB7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpyZXF1ZXN0dmI7CiAgICAgaW50ICAgICAgICAgICAgIHN1YmlkOwotICAgIGludCAgICAgICAgICAgICByZXQ7CiAKICAgICBERUJVR01TR1RMKCgic2N0cDpzY2FsYXJzOnN0YXRzIiwgIkhhbmRsZXIgLSBtb2RlICVzXG4iLAogICAgICAgICAgICAgICAgIHNlX2ZpbmRfbGFiZWxfaW5fc2xpc3QoImFnZW50X21vZGUiLCByZXFpbmZvLT5tb2RlKSkpOwpAQCAtMjE1LDcgKzIyNiw2IEBACiB7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpyZXF1ZXN0dmI7CiAgICAgaW50ICAgICAgICAgICAgIHN1YmlkOwotICAgIGludCAgICAgICAgICAgICByZXQ7CiAKICAgICBERUJVR01TR1RMKCgic2N0cDpzY2FsYXJzOnBhcmFtcyIsICJIYW5kbGVyIC0gbW9kZSAlc1xuIiwKICAgICAgICAgICAgICAgICBzZV9maW5kX2xhYmVsX2luX3NsaXN0KCJhZ2VudF9tb2RlIiwgcmVxaW5mby0+bW9kZSkpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmggYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5oCmluZGV4IDI1YjE4N2EuLjhkYmI4YjUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaApAQCAtNyw2ICs3LDEwIEBACiBjb25maWdfcmVxdWlyZShzY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24pCiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUoc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgpCisjZWxpZiBkZWZpbmVkKCBmcmVlYnNkOCApIHx8IGRlZmluZWQgKCBmcmVlYnNkNyApCitjb25maWdfcmVxdWlyZShzY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkKQkgCisjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCitjb25maWdfcmVxdWlyZShzY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMikJIAogI2Vsc2UKIC8qCiAgKiBjb3VsZG4ndCBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgZmlsZSEKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGM3MjNmCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5jCkBAIC0wLDAgKzEsOTMgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlICJzY3RwU2NhbGFyc19jb21tb24uaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxuZXRpbmV0L3NjdHAuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfY29uc3RhbnRzLmg+CisKK3ZvaWQKK25ldHNubXBfYWNjZXNzX3NjdHBfc3RhdHNfYXJjaF9pbml0KCkKK3sKK30KKworaW50CituZXRzbm1wX2FjY2Vzc19zY3RwX3N0YXRzX2FyY2hfbG9hZChuZXRzbm1wX3NjdHBfc3RhdHMgKiBzY3RwX3N0YXRzKQoreworICBzdHJ1Y3Qgc2N0cHN0YXQgc3RhdDsKKyAgc2l6ZV90IGxlbiA9IHNpemVvZihzdHJ1Y3Qgc2N0cHN0YXQpOworCisgIGlmIChzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnNjdHAuc3RhdHMiLCAmc3RhdCwgJmxlbiwgTlVMTCwgMCkgPCAwKSB7CisJcmV0dXJuKC0xKTsKKyAgfQorICBtZW1zZXQoc2N0cF9zdGF0cywgMCwgc2l6ZW9mKG5ldHNubXBfc2N0cF9zdGF0cykpOworICBzY3RwX3N0YXRzLT5jdXJyX2VzdGFiID0gc3RhdC5zY3Rwc19jdXJyZXN0YWI7CisgIHNjdHBfc3RhdHMtPmFjdGl2ZV9lc3RhYnMgPSBzdGF0LnNjdHBzX2FjdGl2ZWVzdGFiOworICBzY3RwX3N0YXRzLT5wYXNzaXZlX2VzdGFicyA9IHN0YXQuc2N0cHNfcGFzc2l2ZWVzdGFiOworICBzY3RwX3N0YXRzLT5hYm9ydGVkcyA9IHN0YXQuc2N0cHNfYWJvcnRlZDsKKyAgc2N0cF9zdGF0cy0+c2h1dGRvd25zID0gc3RhdC5zY3Rwc19zaHV0ZG93bjsKKyAgc2N0cF9zdGF0cy0+b3V0X29mX2JsdWVzID0gc3RhdC5zY3Rwc19vdXRvZnRoZWJsdWU7CisgIHNjdHBfc3RhdHMtPmNoZWNrc3VtX2Vycm9ycyA9IHN0YXQuc2N0cHNfY2hlY2tzdW1lcnJvcnM7CisgIHNjdHBfc3RhdHMtPm91dF9jdHJsX2NodW5rcy5sb3cgPSBzdGF0LnNjdHBzX291dGNvbnRyb2xjaHVua3M7CisgIHNjdHBfc3RhdHMtPm91dF9vcmRlcl9jaHVua3MubG93ID0gc3RhdC5zY3Rwc19vdXRvcmRlcmNodW5rczsKKyAgc2N0cF9zdGF0cy0+b3V0X3Vub3JkZXJfY2h1bmtzLmxvdyA9IHN0YXQuc2N0cHNfb3V0dW5vcmRlcmNodW5rczsKKyAgc2N0cF9zdGF0cy0+aW5fY3RybF9jaHVua3MubG93ID0gc3RhdC5zY3Rwc19pbmNvbnRyb2xjaHVua3M7CisgIHNjdHBfc3RhdHMtPmluX29yZGVyX2NodW5rcy5sb3cgPSBzdGF0LnNjdHBzX2lub3JkZXJjaHVua3M7CisgIHNjdHBfc3RhdHMtPmluX3Vub3JkZXJfY2h1bmtzLmxvdyA9IHN0YXQuc2N0cHNfaW51bm9yZGVyY2h1bmtzOworICBzY3RwX3N0YXRzLT5mcmFnX3Vzcl9tc2dzLmxvdyA9IHN0YXQuc2N0cHNfZnJhZ3Vzcm1zZ3M7CisgIHNjdHBfc3RhdHMtPnJlYXNtX3Vzcl9tc2dzLmxvdyA9IHN0YXQuc2N0cHNfcmVhc211c3Jtc2dzOworICBzY3RwX3N0YXRzLT5vdXRfc2N0cF9wYWNrcy5sb3cgPSBzdGF0LnNjdHBzX291dHBhY2tldHM7CisgIHNjdHBfc3RhdHMtPmluX3NjdHBfcGFja3MubG93ID0gc3RhdC5zY3Rwc19pbnBhY2tldHM7CisgIHNjdHBfc3RhdHMtPmRpc2NvbnRpbnVpdHlfdGltZSA9IDA7CisgIHJldHVybiAwOworfQorCit2b2lkCituZXRzbm1wX2FjY2Vzc19zY3RwX3BhcmFtc19hcmNoX2luaXQoKQoreworfQorCitpbnQKK25ldHNubXBfYWNjZXNzX3NjdHBfcGFyYW1zX2FyY2hfbG9hZChuZXRzbm1wX3NjdHBfcGFyYW1zICogc2N0cF9wYXJhbXMpCit7CisJc2l6ZV90IGxlbiA9IHNpemVvZih1aW50MzJfdCk7CisKKyAgICBzY3RwX3BhcmFtcy0+cnRvX2FsZ29yaXRobSA9IE5FVFNOTVBfU0NUUF9BTEdPUklUSE1fVkFOSjsKKyAgICBzY3RwX3BhcmFtcy0+bWF4X2Fzc29jcyA9ICBTQ1RQX01BWF9OVU1fT0ZfQVNPQzsgCisJaWYgKHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuc2N0cC5ydG9fbWF4IiwKKwkJCQkJICZzY3RwX3BhcmFtcy0+cnRvX21heCwKKwkJCQkJICZsZW4sIE5VTEwsIDApIDwgMCkgeworCSAgcmV0dXJuKC0xKTsKKwl9CisJaWYgKHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuc2N0cC5ydG9fbWluIiwKKwkJCQkJICZzY3RwX3BhcmFtcy0+cnRvX21pbiwKKwkJCQkJICZsZW4sIE5VTEwsIDApIDwgMCkgeworCSAgcmV0dXJuKC0xKTsKKwl9CisJaWYgKHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuc2N0cC5ydG9faW5pdGlhbCIsCisJCQkJCSAmc2N0cF9wYXJhbXMtPnJ0b19pbml0aWFsLAorCQkJCQkgJmxlbiwgTlVMTCwgMCkgPCAwKSB7CisJICByZXR1cm4oLTEpOworCX0KKwlpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldC5zY3RwLnZhbGlkX2Nvb2tpZV9saWZlIiwKKwkJCQkJICZzY3RwX3BhcmFtcy0+dmFsX2Nvb2tpZV9saWZlLAorCQkJCQkgJmxlbiwgTlVMTCwgMCkgPCAwKSB7CisJICByZXR1cm4oLTEpOworCX0KKwlpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldC5zY3RwLmluaXRfcnR4X21heCIsCisJCQkJCSAmc2N0cF9wYXJhbXMtPm1heF9pbml0X3JldHIsCisJCQkJCSAmbGVuLCBOVUxMLCAwKSA8IDApIHsKKwkgIHJldHVybigtMSk7CisJfQorICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdhYjU0NgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmMKQEAgLTAsMCArMSw5NSBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgInNjdHBTY2FsYXJzX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxpbmV0L21pYjIuaD4KKworI2luY2x1ZGUgImtlcm5lbF9zdW5vczUuaCIKKwordm9pZAorbmV0c25tcF9hY2Nlc3Nfc2N0cF9zdGF0c19hcmNoX2luaXQoKQoreworfQorCitpbnQKK25ldHNubXBfYWNjZXNzX3NjdHBfc3RhdHNfYXJjaF9sb2FkKG5ldHNubXBfc2N0cF9zdGF0cyAqIHNjdHBfc3RhdHMpCit7CisgICAgbWliMl9zY3RwX3Qgc2N0cHN0YXQ7CisgICAgc2l6ZV90IGxlbiA9IHNpemVvZihzY3Rwc3RhdCk7CisgICAgaW50IHJldDsKKworICAgIHJldCA9IGdldE1pYnN0YXQoTUlCX1NDVFAsICZzY3Rwc3RhdCwgbGVuLCBHRVRfRklSU1QsICZHZXRfZXZlcnl0aGluZywgTlVMTCk7CisgICAgaWYgKHJldCkgeworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoImdldE1pYnN0YXQgTUlCX1NDVFAiKTsKKwlyZXR1cm4gLTE7CisgICAgfQorICAgIG1lbXNldChzY3RwX3N0YXRzLCAwLCBzaXplb2YobmV0c25tcF9zY3RwX3N0YXRzKSk7CisgICAgc2N0cF9zdGF0cy0+Y3Vycl9lc3RhYiA9IHNjdHBzdGF0LnNjdHBDdXJyRXN0YWI7CisgICAgc2N0cF9zdGF0cy0+YWN0aXZlX2VzdGFicyA9IHNjdHBzdGF0LnNjdHBBY3RpdmVFc3RhYjsKKyAgICBzY3RwX3N0YXRzLT5wYXNzaXZlX2VzdGFicyA9IHNjdHBzdGF0LnNjdHBQYXNzaXZlRXN0YWI7CisgICAgc2N0cF9zdGF0cy0+YWJvcnRlZHMgPSBzY3Rwc3RhdC5zY3RwQWJvcnRlZDsKKyAgICBzY3RwX3N0YXRzLT5zaHV0ZG93bnMgPSBzY3Rwc3RhdC5zY3RwU2h1dGRvd25zOworICAgIHNjdHBfc3RhdHMtPm91dF9vZl9ibHVlcyA9IHNjdHBzdGF0LnNjdHBPdXRPZkJsdWU7CisgICAgc2N0cF9zdGF0cy0+Y2hlY2tzdW1fZXJyb3JzID0gc2N0cHN0YXQuc2N0cENoZWNrc3VtRXJyb3I7CisgICAgc2N0cF9zdGF0cy0+b3V0X2N0cmxfY2h1bmtzLmxvdyA9IHNjdHBzdGF0LnNjdHBPdXRDdHJsQ2h1bmtzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5vdXRfY3RybF9jaHVua3MuaGlnaCA9IHNjdHBzdGF0LnNjdHBPdXRDdHJsQ2h1bmtzID4+IDMyOworICAgIHNjdHBfc3RhdHMtPm91dF9vcmRlcl9jaHVua3MubG93ID0gc2N0cHN0YXQuc2N0cE91dE9yZGVyQ2h1bmtzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5vdXRfb3JkZXJfY2h1bmtzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwT3V0T3JkZXJDaHVua3MgPj4gMzI7CisgICAgc2N0cF9zdGF0cy0+b3V0X3Vub3JkZXJfY2h1bmtzLmxvdyA9IHNjdHBzdGF0LnNjdHBPdXRVbm9yZGVyQ2h1bmtzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5vdXRfdW5vcmRlcl9jaHVua3MuaGlnaCA9IHNjdHBzdGF0LnNjdHBPdXRVbm9yZGVyQ2h1bmtzID4+IDMyOworICAgIHNjdHBfc3RhdHMtPmluX2N0cmxfY2h1bmtzLmxvdyA9IHNjdHBzdGF0LnNjdHBJbkN0cmxDaHVua3MgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPmluX2N0cmxfY2h1bmtzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwSW5DdHJsQ2h1bmtzID4+IDMyOworICAgIHNjdHBfc3RhdHMtPmluX29yZGVyX2NodW5rcy5sb3cgPSBzY3Rwc3RhdC5zY3RwSW5PcmRlckNodW5rcyAmIDB4RkZGRkZGRkY7CisgICAgc2N0cF9zdGF0cy0+aW5fb3JkZXJfY2h1bmtzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwSW5PcmRlckNodW5rcyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5pbl91bm9yZGVyX2NodW5rcy5sb3cgPSBzY3Rwc3RhdC5zY3RwSW5Vbm9yZGVyQ2h1bmtzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5pbl91bm9yZGVyX2NodW5rcy5oaWdoID0gc2N0cHN0YXQuc2N0cEluVW5vcmRlckNodW5rcyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5pbl9vcmRlcl9jaHVua3MubG93ID0gc2N0cHN0YXQuc2N0cEluT3JkZXJDaHVua3MgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPmluX29yZGVyX2NodW5rcy5oaWdoID0gc2N0cHN0YXQuc2N0cEluT3JkZXJDaHVua3MgPj4gMzI7CisgICAgc2N0cF9zdGF0cy0+ZnJhZ191c3JfbXNncy5sb3cgPSBzY3Rwc3RhdC5zY3RwRnJhZ1Vzck1zZ3MgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPmZyYWdfdXNyX21zZ3MuaGlnaCA9IHNjdHBzdGF0LnNjdHBGcmFnVXNyTXNncyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5yZWFzbV91c3JfbXNncy5sb3cgPSBzY3Rwc3RhdC5zY3RwUmVhc21Vc3JNc2dzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5yZWFzbV91c3JfbXNncy5oaWdoID0gc2N0cHN0YXQuc2N0cFJlYXNtVXNyTXNncyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5vdXRfc2N0cF9wYWNrcy5sb3cgPSBzY3Rwc3RhdC5zY3RwT3V0U0NUUFBrdHMgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPm91dF9zY3RwX3BhY2tzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwT3V0U0NUUFBrdHMgPj4gMzI7CisgICAgc2N0cF9zdGF0cy0+aW5fc2N0cF9wYWNrcy5sb3cgPSBzY3Rwc3RhdC5zY3RwSW5TQ1RQUGt0cyAmIDB4RkZGRkZGRkY7CisgICAgc2N0cF9zdGF0cy0+aW5fc2N0cF9wYWNrcy5oaWdoID0gc2N0cHN0YXQuc2N0cEluU0NUUFBrdHMgPj4gMzI7CisgICAgc2N0cF9zdGF0cy0+ZGlzY29udGludWl0eV90aW1lID0gMDsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZAorbmV0c25tcF9hY2Nlc3Nfc2N0cF9wYXJhbXNfYXJjaF9pbml0KCkKK3sKK30KKworaW50CituZXRzbm1wX2FjY2Vzc19zY3RwX3BhcmFtc19hcmNoX2xvYWQobmV0c25tcF9zY3RwX3BhcmFtcyAqIHNjdHBfcGFyYW1zKQoreworICAgIG1pYjJfc2N0cF90IHNjdHBzdGF0OworICAgIHNpemVfdCBsZW4gPSBzaXplb2Yoc2N0cHN0YXQpOworICAgIGludCByZXQ7CisKKyAgICByZXQgPSBnZXRNaWJzdGF0KE1JQl9TQ1RQLCAmc2N0cHN0YXQsIGxlbiwgR0VUX0ZJUlNULCAmR2V0X2V2ZXJ5dGhpbmcsIE5VTEwpOworICAgIGlmIChyZXQpIHsKKyAgICAgICAgc25tcF9sb2dfcGVycm9yKCJnZXRNaWJzdGF0IE1JQl9TQ1RQIik7CisJcmV0dXJuIC0xOworICAgIH0KKworICAgIHNjdHBfcGFyYW1zLT5ydG9fYWxnb3JpdGhtID0gc2N0cHN0YXQuc2N0cFJ0b0FsZ29yaXRobTsKKyAgICBzY3RwX3BhcmFtcy0+bWF4X2Fzc29jcyA9ICBzY3Rwc3RhdC5zY3RwTWF4QXNzb2NzOyAKKyAgICBzY3RwX3BhcmFtcy0+cnRvX21heCA9IHNjdHBzdGF0LnNjdHBSdG9NYXg7CisgICAgc2N0cF9wYXJhbXMtPnJ0b19taW4gPSBzY3Rwc3RhdC5zY3RwUnRvTWluOworICAgIHNjdHBfcGFyYW1zLT5ydG9faW5pdGlhbCA9IHNjdHBzdGF0LnNjdHBSdG9Jbml0aWFsOworICAgIHNjdHBfcGFyYW1zLT52YWxfY29va2llX2xpZmUgPSBzY3Rwc3RhdC5zY3RwVmFsQ29va2llTGlmZTsKKyAgICBzY3RwX3BhcmFtcy0+bWF4X2luaXRfcmV0ciA9IHNjdHBzdGF0LnNjdHBNYXhJbml0UmV0cjsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaAppbmRleCA1NDQxNDRhLi5kMjJhZWEwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlcy5oCkBAIC0xNCwxMSArMTQsMTIgQEAKIGNvbmZpZ19yZXF1aXJlKHNjdHAtbWliL3NjdHBBc3NvY1RhYmxlKQogI2lmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKHNjdHAtbWliL3NjdHBUYWJsZXNfbGludXgpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZSkKKyNlbGlmIGRlZmluZWQoIGZyZWVic2Q3ICkgfHwgZGVmaW5lZCggZnJlZWJzZDggKQorY29uZmlnX3JlcXVpcmUoc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkKQorI2VsaWYgZGVmaW5lZCggc29sYXJpczIgKQorY29uZmlnX3JlcXVpcmUoc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMikKICNlbHNlCi0vKgotKiBjb3VsZG4ndCBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgZmlsZSEKLSogcmVxdWlyZSBhIGJvZ3VzIGZpbGUgdG8gZ2VuZXJhdGUgYW4gZXJyb3IuCi0qLwotY29uZmlnX3JlcXVpcmUoc2N0cC1taWIvdGFibGVzLXVua25vd24tYXJjaCkKK2NvbmZpZ19lcnJvcihTQ1RQLU1JQiBpcyBub3QgYXZhaWxhYmxlIGluIHRpaHMgZW52aXJvbm1lbnQpCiAjZW5kaWYKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NUUF9UQUJMRVNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmgKaW5kZXggZWI3Zjk5MC4uZjQ1NzYwNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oCkBAIC0xLDYgKzEsMTAgQEAKICNpZm5kZWYgU0NUUF9UQUJMRVNfQ09NTU9OX0gKICNkZWZpbmUgU0NUUF9UQUJMRVNfQ09NTU9OX0gKIAorI2lmIGRlZmluZWQoZnJlZWJzZDgpIHx8IGRlZmluZWQoZnJlZWJzZDcpCisjZGVmaW5lIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSBTTk1QX0ZSRUUKKyNlbmRpZgorCiAjZGVmaW5lIFNDVFBfSVBBRERSRVNTX1NJWkUgMTYKICNkZWZpbmUgU0NUUF9IT1NUTkFNRV9TSVpFIDI1NQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNmU5ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QuYwpAQCAtMCwwICsxLDI0NCBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgInNjdHBBc3NvY1RhYmxlLmgiCisjaW5jbHVkZSAic2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaCIKKyNpbmNsdWRlICJzY3RwQXNzb2NSZW1BZGRyVGFibGUuaCIKKyNpbmNsdWRlICJzY3RwVGFibGVzX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8dXRpbF9mdW5jcy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGluZXQvc2N0cC5oPgorI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9jb25zdGFudHMuaD4KKworCitzdGF0aWMgaW50CitwYXJzZV9hc3NvY19sb2NhbF9hZGRyZXNzZXMoc2N0cFRhYmxlc19jb250YWluZXJzICogY29udGFpbmVycywKKwkJCQkJCQlzdHJ1Y3QgeHNjdHBfbGFkZHIgKnhsYWRkcikKK3sKKyAgaW50IHJldDsKKyAgc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfZW50cnkgKmVudHJ5OworICBlbnRyeSA9IHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2VudHJ5X2NyZWF0ZSgpOworICBpZiAoZW50cnkgPT0gTlVMTCkKKwlyZXR1cm4gU05NUF9FUlJfR0VORVJSOworCisgIGVudHJ5LT5zY3RwQXNzb2NJZCA9IDA7CisgIGlmICh4bGFkZHItPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpIHsKKwllbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY0OworCWVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJfbGVuID0gNDsKKwltZW1jcHkoZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkciwKKwkJICAgJnhsYWRkci0+YWRkcmVzcy5zaW4uc2luX2FkZHIsCisJCSAgIGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJfbGVuKTsKKyAgfSBlbHNlIGlmICh4bGFkZHItPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7CisJZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkclR5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNjsKKwllbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyX2xlbiA9IDE2OworCW1lbWNweShlbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyLAorCQkgICAmeGxhZGRyLT5hZGRyZXNzLnNpbjYuc2luNl9hZGRyLAorCQkgICBlbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyX2xlbik7CisgIH0KKyAgZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkclN0YXJ0VGltZSA9IHhsYWRkci0+c3RhcnRfdGltZS50dl9zZWM7CisgIHJldCA9IHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2FkZF9vcl91cGRhdGUoY29udGFpbmVycy0+c2N0cEFzc29jTG9jYWxBZGRyVGFibGUsCisJCQkJCQkJCQkJCSAgZW50cnkpOworICBpZiAocmV0ICE9IFNOTVBfRVJSX05PRVJST1IpCisJcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKworICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworc3RhdGljIGludAorcGFyc2VfYXNzb2NfeHN0Y2Ioc2N0cFRhYmxlc19jb250YWluZXJzICogY29udGFpbmVycywgc3RydWN0IHhzY3RwX3RjYiAqeHN0Y2IpCit7CisgIGludCAgICAgICAgICAgICByZXQ7CisgIHNjdHBBc3NvY1RhYmxlX2VudHJ5ICplbnRyeTsKKworICBlbnRyeSA9IHNjdHBBc3NvY1RhYmxlX2VudHJ5X2NyZWF0ZSgpOworICBpZiAoZW50cnkgPT0gTlVMTCkKKwlyZXR1cm4gU05NUF9FUlJfR0VORVJSOworCisgIHN3aXRjaCAoeHN0Y2ItPnN0YXRlKSB7CisgIGNhc2UgU0NUUF9TVEFURV9JTlVTRToKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9ERUxFVEVUQ0I7CisJYnJlYWs7CisgIGNhc2UgU0NUUF9TVEFURV9DT09LSUVfV0FJVDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9DT09LSUVXQUlUOworCWJyZWFrOworICBjYXNlIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9DT09LSUVFQ0hPRUQ7CisJYnJlYWs7CisgIGNhc2UgU0NUUF9TVEFURV9PUEVOOgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX0VTVEFCTElTSEVEOworCWJyZWFrOworICBjYXNlIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9TSFVURE9XTlNFTlQ7CisJYnJlYWs7CisgIGNhc2UgU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9TSFVURE9XTlJFQ0VJVkVEOworCWJyZWFrOworICBjYXNlIFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQ6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfU0hVVERPV05BQ0tTRU5UOworCWJyZWFrOworICBkZWZhdWx0OgorICBjYXNlIFNDVFBfU1RBVEVfRU1QVFk6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfQ0xPU0VEOworCWJyZWFrOworICB9OworICBlbnRyeS0+c2N0cEFzc29jSGVhcnRCZWF0SW50ZXJ2YWwgPSB4c3RjYi0+aGVhcnRiZWF0X2ludGVydmFsOworICBlbnRyeS0+c2N0cEFzc29jSWQgPSAwOworICBlbnRyeS0+c2N0cEFzc29jUHJpbVByb2Nlc3MgPSB4c3RjYi0+cHJpbWFyeV9wcm9jZXNzOworICBlbnRyeS0+c2N0cEFzc29jTG9jYWxQb3J0ID0geHN0Y2ItPmxvY2FsX3BvcnQ7CisgIGVudHJ5LT5zY3RwQXNzb2NSZW1Qb3J0ID0geHN0Y2ItPnJlbW90ZV9wb3J0OworICBlbnRyeS0+c2N0cEFzc29jSGVhcnRCZWF0SW50ZXJ2YWwgPSB4c3RjYi0+aGVhcnRiZWF0X2ludGVydmFsOworICBlbnRyeS0+c2N0cEFzc29jSW5TdHJlYW1zID0geHN0Y2ItPmluX3N0cmVhbXM7CisgIGVudHJ5LT5zY3RwQXNzb2NPdXRTdHJlYW1zID0geHN0Y2ItPm91dF9zdHJlYW1zOworICBlbnRyeS0+c2N0cEFzc29jTWF4UmV0ciA9IHhzdGNiLT5tYXhfbnJfcmV0cmFuczsKKyAgZW50cnktPnNjdHBBc3NvY1QxZXhwaXJlZHMgPSB4c3RjYi0+VDFfZXhwaXJlcmllczsKKyAgZW50cnktPnNjdHBBc3NvY1J0eENodW5rcyA9IHhzdGNiLT5yZXRyYW5zbWl0dGVkX3RzbnM7CisgIGVudHJ5LT5zY3RwQXNzb2NUMmV4cGlyZWRzID0geHN0Y2ItPlQyX2V4cGlyZXJpZXM7IAorICBlbnRyeS0+c2N0cEFzc29jUmVtSG9zdE5hbWVbMF0gPSAwOworICBlbnRyeS0+c2N0cEFzc29jUmVtSG9zdE5hbWVfbGVuID0gMDsKKyAgZW50cnktPnNjdHBBc3NvY0Rpc2NvbnRpbnVpdHlUaW1lID0geHN0Y2ItPmRpc2NvbnRpbnVpdHlfdGltZS50dl9zZWM7CisgIGVudHJ5LT5zY3RwQXNzb2NTdGFydFRpbWUgPSB4c3RjYi0+c3RhcnRfdGltZS50dl9zZWM7CQorCisgIHJldCA9IHNjdHBBc3NvY1RhYmxlX2FkZF9vcl91cGRhdGUoY29udGFpbmVycy0+c2N0cEFzc29jVGFibGUsIGVudHJ5KTsKKyAgaWYgKHJldCAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7CisJcmV0dXJuIHJldDsKKyAgfQorCisgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisKK3N0YXRpYyBpbnQKK3BhcnNlX3JlbWFkZHJfeHJhZGRyKHNjdHBUYWJsZXNfY29udGFpbmVycyAqIGNvbnRhaW5lcnMsCisJCQkJCSBzdHJ1Y3QgeHNjdHBfcmFkZHIgKnhyYWRkcikKK3sKKyAgaW50ICAgICAgICAgICAgIHJldDsKKyAgc2N0cEFzc29jUmVtQWRkclRhYmxlX2VudHJ5ICplbnRyeTsKKworICBlbnRyeSA9IHNjdHBBc3NvY1JlbUFkZHJUYWJsZV9lbnRyeV9jcmVhdGUoKTsKKyAgaWYgKGVudHJ5ID09IE5VTEwpCisJcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKworCQorICBlbnRyeS0+c2N0cEFzc29jSWQgPSAwOworCisgIGlmKHhyYWRkci0+YWN0aXZlKSAKKyAgICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkckFjdGl2ZSA9IFRSVVRIVkFMVUVfVFJVRTsKKyAgZWxzZQorCWVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyQWN0aXZlID0gVFJVVEhWQUxVRV9GQUxTRTsKKyAgCisgIGlmICh4cmFkZHItPmhlYXJ0YmVhdF9lbmFibGVkKSAKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkckhCQWN0aXZlID0gVFJVVEhWQUxVRV9UUlVFOworICBlbHNlCisJZW50cnktPnNjdHBBc3NvY1JlbUFkZHJIQkFjdGl2ZSA9IFRSVVRIVkFMVUVfRkFMU0U7CisKKyAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJSVE8gPSB4cmFkZHItPnJ0bzsKKyAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJNYXhQYXRoUnR4ID0geHJhZGRyLT5tYXhfcGF0aF9ydHg7CisgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyUnR4ID0geHJhZGRyLT5ydHg7CisgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyU3RhcnRUaW1lID0geHJhZGRyLT5zdGFydF90aW1lLnR2X3NlYzsKKworICBpZiAoeHJhZGRyLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKSB7CisJZW50cnktPnNjdHBBc3NvY1JlbUFkZHJUeXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjQ7CisJZW50cnktPnNjdHBBc3NvY1JlbUFkZHJfbGVuID0gNDsKKwltZW1jcHkoZW50cnktPnNjdHBBc3NvY1JlbUFkZHIsCisJCSAgICZ4cmFkZHItPmFkZHJlc3Muc2luLnNpbl9hZGRyLAorCQkgICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkcl9sZW4pOworICB9IGVsc2UgaWYgKHhyYWRkci0+YWRkcmVzcy5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkclR5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNjsKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkcl9sZW4gPSAxNjsKKwltZW1jcHkoZW50cnktPnNjdHBBc3NvY1JlbUFkZHIsCisJCSAgICZ4cmFkZHItPmFkZHJlc3Muc2luNi5zaW42X2FkZHIsCisJCSAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyX2xlbik7CisgIH0KKyAgcmV0ID0KKwlzY3RwQXNzb2NSZW1BZGRyVGFibGVfYWRkX29yX3VwZGF0ZShjb250YWluZXJzLT4KKwkJCQkJCQkJCQlzY3RwQXNzb2NSZW1BZGRyVGFibGUsIGVudHJ5KTsKKyAgaWYgKHJldCAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7CisJcmV0dXJuIHJldDsKKyAgfQorICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworCitpbnQKK3NjdHBUYWJsZXNfYXJjaF9sb2FkKHNjdHBUYWJsZXNfY29udGFpbmVycyAqIGNvbnRhaW5lcnMsIHVfbG9uZyAqIGZsYWdzKQoreworICBpbnQgICAgICAgICAgICAgcmV0ID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgc2l6ZV90IGxlbjsKKyAgY2FkZHJfdCBidWY7CisgIHVuc2lnbmVkIGludCBvZmZzZXQ7CisgIHN0cnVjdCB4c2N0cF9pbnBjYiAqeGlucDsKKyAgc3RydWN0IHhzY3RwX3RjYiAqeHN0Y2I7CisgIHN0cnVjdCB4c2N0cF9sYWRkciAqeGxhZGRyOworICBzdHJ1Y3QgeHNjdHBfcmFkZHIgKnhyYWRkcjsKKworCisgICpmbGFncyB8PSBTQ1RQX1RBQkxFU19MT0FEX0ZMQUdfREVMRVRFX0lOVkFMSUQ7CisgICpmbGFncyB8PSBTQ1RQX1RBQkxFU19MT0FEX0ZMQUdfQVVUT19MT09LVVA7CisgIGxlbiA9IDA7CisgIGlmIChzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnNjdHAuYXNzb2NsaXN0IiwgMCwgJmxlbiwgMCwgMCkgPCAwKSB7CisJcHJpbnRmKCJFcnJvciAlZCAoJXMpIGNvdWxkIG5vdCBnZXQgdGhlIGFzc29jbGlzdFxuIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisJcmV0dXJuKC0xKTsKKyAgfQorICBpZiAoKGJ1ZiA9IChjYWRkcl90KW1hbGxvYyhsZW4pKSA9PSAwKSB7CisJcHJpbnRmKCJtYWxsb2MgJWx1IGJ5dGVzIGZhaWxlZC5cbiIsIChsb25nIHVuc2lnbmVkKWxlbik7CisJcmV0dXJuKC0xKTsKKyAgfQorICBpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldC5zY3RwLmFzc29jbGlzdCIsIGJ1ZiwgJmxlbiwgMCwgMCkgPCAwKSB7CisJcHJpbnRmKCJFcnJvciAlZCAoJXMpIGNvdWxkIG5vdCBnZXQgdGhlIGFzc29jbGlzdFxuIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisJZnJlZShidWYpOworCXJldHVybigtMSk7CisgIH0KKyAgb2Zmc2V0ID0gMDsKKyAgeGlucCA9IChzdHJ1Y3QgeHNjdHBfaW5wY2IgKikoYnVmICsgb2Zmc2V0KTsKKyAgd2hpbGUgKHhpbnAtPmxhc3QgPT0gMCkgeworCS8qIGZvciBlYWNoIElOUCAqLworCW9mZnNldCArPSBzaXplb2Yoc3RydWN0IHhzY3RwX2lucGNiKTsKKwkvKiBMb2NhbCBhZGRyZXNzZXMgKi8KKwl4bGFkZHIgPSAoc3RydWN0IHhzY3RwX2xhZGRyICopKGJ1ZiArIG9mZnNldCk7CisJd2hpbGUgKHhsYWRkci0+bGFzdCA9PSAwKSB7CisJICBvZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCB4c2N0cF9sYWRkcik7CisJICB4bGFkZHIgPSAoc3RydWN0IHhzY3RwX2xhZGRyICopKGJ1ZiArIG9mZnNldCk7CisJfQorCW9mZnNldCArPSBzaXplb2Yoc3RydWN0IHhzY3RwX2xhZGRyKTsKKwkvKiBBc3NvY2lhdGlvbnMgKi8KKwl4c3RjYiA9IChzdHJ1Y3QgeHNjdHBfdGNiICopKGJ1ZiArIG9mZnNldCk7CisJd2hpbGUgKHhzdGNiLT5sYXN0ID09IDApIHsKKwkgIHhzdGNiID0gKHN0cnVjdCB4c2N0cF90Y2IgKikoYnVmICsgb2Zmc2V0KTsKKwkgIG9mZnNldCArPSBzaXplb2Yoc3RydWN0IHhzY3RwX3RjYik7CisJICBwYXJzZV9hc3NvY194c3RjYihjb250YWluZXJzLCB4c3RjYik7CisJICAvKiBMb2NhbCBhZGRyZXNzZXMgKi8KKwkgIHhsYWRkciA9IChzdHJ1Y3QgeHNjdHBfbGFkZHIgKikoYnVmICsgb2Zmc2V0KTsKKwkgIHdoaWxlICh4bGFkZHItPmxhc3QgPT0gMCkgeworCQlwYXJzZV9hc3NvY19sb2NhbF9hZGRyZXNzZXMoY29udGFpbmVycywgeGxhZGRyKTsKKwkJb2Zmc2V0ICs9IHNpemVvZihzdHJ1Y3QgeHNjdHBfbGFkZHIpOworCQl4bGFkZHIgPSAoc3RydWN0IHhzY3RwX2xhZGRyICopKGJ1ZiArIG9mZnNldCk7CisJICB9CisJICBvZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCB4c2N0cF9sYWRkcik7CisKKwkgIC8qIFJlbW90ZSBhZGRyZXNzZXMgKi8KKwkgIHhyYWRkciA9IChzdHJ1Y3QgeHNjdHBfcmFkZHIgKikoYnVmICsgb2Zmc2V0KTsKKwkgIHdoaWxlICh4cmFkZHItPmxhc3QgPT0gMCkgeworCQlwYXJzZV9yZW1hZGRyX3hyYWRkcihjb250YWluZXJzLCB4cmFkZHIpOworCQlvZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCB4c2N0cF9yYWRkcik7CisJCXhyYWRkciA9IChzdHJ1Y3QgeHNjdHBfcmFkZHIgKikoYnVmICsgb2Zmc2V0KTsKKwkgIH0KKwkgIG9mZnNldCArPSBzaXplb2Yoc3RydWN0IHhzY3RwX3JhZGRyKTsKKwkgIHhzdGNiID0gKHN0cnVjdCB4c2N0cF90Y2IgKikoYnVmICsgb2Zmc2V0KTsKKwl9CisJb2Zmc2V0ICs9IHNpemVvZihzdHJ1Y3QgeHNjdHBfdGNiKTsKKwl4aW5wID0gKHN0cnVjdCB4c2N0cF9pbnBjYiAqKShidWYgKyBvZmZzZXQpOworICB9CisgIGZyZWUoKHZvaWQgKilidWYpOworICByZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jCmluZGV4IGQ2ZmQ4MTAuLjE1ODY1NTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmMKQEAgLTcsNyArNyw3IEBACiAjaW5jbHVkZSAic2N0cEFzc29jUmVtQWRkclRhYmxlLmgiCiAjaW5jbHVkZSAic2N0cFRhYmxlc19jb21tb24uaCIKIAotI2luY2x1ZGUgPHV0aWxfZnVuY3MuaD4KKyNpbmNsdWRlICJtaWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oIgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgpAQCAtMTUwLDEzICsxNTAsNyBAQAogICAgIH0KICAgICBlbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBzdHJ0b2wodG9rZW4sIE5VTEwsIDEwKTsKIAotICAgIHRva2VuID0gc3RydG9rKE5VTEwsICIgIik7ICAvKiBIQktUICovCi0gICAgaWYgKHRva2VuID09IE5VTEwpIHsKLSAgICAgICAgcmV0ID0gU05NUF9FUlJfR0VORVJSOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBlbnRyeS0+c2N0cEFzc29jSGVhcnRCZWF0SW50ZXJ2YWwgPSBzdHJ0b2wodG9rZW4sIE5VTEwsIDEwKTsKLQorICAgIHRva2VuID0gc3RydG9rKE5VTEwsICIgIik7ICAvKiBIQktULCBpZ25vcmUgKi8KICAgICB0b2tlbiA9IHN0cnRvayhOVUxMLCAiICIpOyAgLyogQVNTT0MtSUQsIHN0b3JlICovCiAgICAgaWYgKHRva2VuID09IE5VTEwpIHsKICAgICAgICAgcmV0ID0gU05NUF9FUlJfR0VORVJSOwpAQCAtMTc0LDcgKzE2OCw3IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGlub2RlID0gc3RydG91bGwodG9rZW4sIE5VTEwsIDEwKTsKLSAgICBlbnRyeS0+c2N0cEFzc29jUHJpbVByb2Nlc3MgPSBnZXRfcGlkX2Zyb21faW5vZGUoaW5vZGUpOworICAgIGVudHJ5LT5zY3RwQXNzb2NQcmltUHJvY2VzcyA9IG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlub2RlKTsKIAogICAgIHRva2VuID0gc3RydG9rKE5VTEwsICIgIik7ICAvKiBMUE9SVCAqLwogICAgIGlmICh0b2tlbiA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk5M2FiMwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIuYwpAQCAtMCwwICsxLDE4MiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgInNjdHBBc3NvY1RhYmxlLmgiCisjaW5jbHVkZSAic2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaCIKKyNpbmNsdWRlICJzY3RwQXNzb2NSZW1BZGRyVGFibGUuaCIKKyNpbmNsdWRlICJzY3RwVGFibGVzX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8dXRpbF9mdW5jcy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxpbmV0L21pYjIuaD4KKworI2luY2x1ZGUgImtlcm5lbF9zdW5vczUuaCIKKworc3RhdGljIGludAorcGFyc2VfYXNzb2NfbG9jYWxfYWRkcmVzcyhzY3RwVGFibGVzX2NvbnRhaW5lcnMgKiBjb250YWluZXJzLAorCQkJICAgIG1pYjJfc2N0cENvbm5Mb2NhbEVudHJ5X3QgKmxjZSkKK3sKKyAgICBpbnQgcmV0OworICAgIHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2VudHJ5ICplbnRyeTsKKyAgICBlbnRyeSA9IHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2VudHJ5X2NyZWF0ZSgpOworICAgIGlmIChlbnRyeSA9PSBOVUxMKQorCXJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisKKyAgICBlbnRyeS0+c2N0cEFzc29jSWQgPSAwOworICAgIGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJUeXBlID0gbGNlLT5zY3RwQXNzb2NMb2NhbEFkZHJUeXBlOworICAgIGlmIChsY2UtPnNjdHBBc3NvY0xvY2FsQWRkclR5cGUgPT0gSU5FVEFERFJFU1NUWVBFX0lQVjQpIHsKKwllbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyX2xlbiA9IDQ7CisJbWVtY3B5KGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHIsCisJCSAgIGxjZS0+c2N0cEFzc29jTG9jYWxBZGRyLnM2X2FkZHIrMTIsCisJCSAgIGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJfbGVuKTsKKyAgICB9IGVsc2UgaWYgKGxjZS0+c2N0cEFzc29jTG9jYWxBZGRyVHlwZSA9PSBJTkVUQUREUkVTU1RZUEVfSVBWNikgeworCWVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJfbGVuID0gMTY7CisJbWVtY3B5KGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHIsCisJCSAgICZsY2UtPnNjdHBBc3NvY0xvY2FsQWRkciwKKwkJICAgZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkcl9sZW4pOworICAgIH0KKyAgICBlbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyU3RhcnRUaW1lID0gMDsKKyAgICByZXQgPSBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9hZGRfb3JfdXBkYXRlKGNvbnRhaW5lcnMtPnNjdHBBc3NvY0xvY2FsQWRkclRhYmxlLAorCQkJCQkgICAgICBlbnRyeSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAorcGFyc2VfYXNzb2Moc2N0cFRhYmxlc19jb250YWluZXJzICogY29udGFpbmVycywgbWliMl9zY3RwQ29ubkVudHJ5X3QgKnNjZSkKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmV0OworICAgIHNjdHBBc3NvY1RhYmxlX2VudHJ5ICplbnRyeTsKKworICAgIGVudHJ5ID0gc2N0cEFzc29jVGFibGVfZW50cnlfY3JlYXRlKCk7CisgICAgaWYgKGVudHJ5ID09IE5VTEwpCisJcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKworICAgIHN3aXRjaCAoc2NlLT5zY3RwQXNzb2NTdGF0ZSkgeworICAgIGNhc2UgTUlCMl9TQ1RQX2Nsb3NlZDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9DTE9TRUQ7CisJYnJlYWs7CisgICAgY2FzZSBNSUIyX1NDVFBfY29va2llV2FpdDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9DT09LSUVXQUlUOworCWJyZWFrOworICAgIGNhc2UgTUlCMl9TQ1RQX2Nvb2tpZUVjaG9lZDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9DT09LSUVFQ0hPRUQ7CisJYnJlYWs7CisgICAgY2FzZSBNSUIyX1NDVFBfZXN0YWJsaXNoZWQ6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfRVNUQUJMSVNIRUQ7CisJYnJlYWs7CisgICAgY2FzZSBNSUIyX1NDVFBfc2h1dGRvd25QZW5kaW5nOgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX1NIVVRET1dOUEVORElORzsKKwlicmVhazsKKyAgICBjYXNlIE1JQjJfU0NUUF9zaHV0ZG93blNlbnQ6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfU0hVVERPV05TRU5UOworCWJyZWFrOworICAgIGNhc2UgTUlCMl9TQ1RQX3NodXRkb3duUmVjZWl2ZWQ6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfU0hVVERPV05SRUNFSVZFRDsKKwlicmVhazsKKyAgICBjYXNlIE1JQjJfU0NUUF9zaHV0ZG93bkFja1NlbnQ6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfU0hVVERPV05BQ0tTRU5UOworCWJyZWFrOworICAgIH0KKyAgICBlbnRyeS0+c2N0cEFzc29jSGVhcnRCZWF0SW50ZXJ2YWwgPSBzY2UtPnNjdHBBc3NvY0hlYXJ0QmVhdEludGVydmFsOworICAgIGVudHJ5LT5zY3RwQXNzb2NJZCA9IHNjZS0+c2N0cEFzc29jSWQ7CisgICAgZW50cnktPnNjdHBBc3NvY1ByaW1Qcm9jZXNzID0gc2NlLT5zY3RwQXNzb2NQcmltUHJvY2VzczsKKyAgICBlbnRyeS0+c2N0cEFzc29jTG9jYWxQb3J0ID0gc2NlLT5zY3RwQXNzb2NMb2NhbFBvcnQ7CisgICAgZW50cnktPnNjdHBBc3NvY1JlbVByaW1BZGRyVHlwZSA9IHNjZS0+c2N0cEFzc29jUmVtUHJpbUFkZHJUeXBlOworICAgIGlmIChlbnRyeS0+c2N0cEFzc29jUmVtUHJpbUFkZHJUeXBlID09IElORVRBRERSRVNTVFlQRV9JUFY0KSB7CisJZW50cnktPnNjdHBBc3NvY1JlbVByaW1BZGRyX2xlbiA9IDQ7CisJbWVtY3B5KGVudHJ5LT5zY3RwQXNzb2NSZW1QcmltQWRkciwgc2NlLT5zY3RwQXNzb2NSZW1QcmltQWRkci5zNl9hZGRyKzEyLAorCSAgICBlbnRyeS0+c2N0cEFzc29jUmVtUHJpbUFkZHJfbGVuKTsKKyAgICB9CisgICAgZWxzZSB7CisJZW50cnktPnNjdHBBc3NvY1JlbVByaW1BZGRyX2xlbiA9IDE2OworCW1lbWNweShlbnRyeS0+c2N0cEFzc29jUmVtUHJpbUFkZHIsIHNjZS0+c2N0cEFzc29jUmVtUHJpbUFkZHIuczZfYWRkciwKKwkgICAgZW50cnktPnNjdHBBc3NvY1JlbVByaW1BZGRyX2xlbik7CisgICAgfQorICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1Qb3J0ID0gc2NlLT5zY3RwQXNzb2NSZW1Qb3J0OworICAgIGVudHJ5LT5zY3RwQXNzb2NJblN0cmVhbXMgPSBzY2UtPnNjdHBBc3NvY0luU3RyZWFtczsKKyAgICBlbnRyeS0+c2N0cEFzc29jT3V0U3RyZWFtcyA9IHNjZS0+c2N0cEFzc29jT3V0U3RyZWFtczsKKyAgICBlbnRyeS0+c2N0cEFzc29jTWF4UmV0ciA9IHNjZS0+c2N0cEFzc29jTWF4UmV0cjsKKyAgICBlbnRyeS0+c2N0cEFzc29jVDFleHBpcmVkcyA9IHNjZS0+c2N0cEFzc29jVDFleHBpcmVkOworICAgIGVudHJ5LT5zY3RwQXNzb2NSdHhDaHVua3MgPSBzY2UtPnNjdHBBc3NvY1J0eENodW5rczsKKyAgICBlbnRyeS0+c2N0cEFzc29jVDJleHBpcmVkcyA9IHNjZS0+c2N0cEFzc29jVDJleHBpcmVkOyAKKyAgICBlbnRyeS0+c2N0cEFzc29jUmVtSG9zdE5hbWVbMF0gPSAwOworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1Ib3N0TmFtZV9sZW4gPSAwOworICAgIGVudHJ5LT5zY3RwQXNzb2NEaXNjb250aW51aXR5VGltZSA9IDA7CisgICAgZW50cnktPnNjdHBBc3NvY1N0YXJ0VGltZSA9IHNjZS0+c2N0cEFzc29jU3RhcnRUaW1lOwkKKworICAgIHJldCA9IHNjdHBBc3NvY1RhYmxlX2FkZF9vcl91cGRhdGUoY29udGFpbmVycy0+c2N0cEFzc29jVGFibGUsIGVudHJ5KTsKKyAgICByZXR1cm4gcmV0OworfQorCisKK3N0YXRpYyBpbnQKK3BhcnNlX2Fzc29jX3JlbW90ZV9hZGRyZXNzKHNjdHBUYWJsZXNfY29udGFpbmVycyAqIGNvbnRhaW5lcnMsCisJCSAgICBtaWIyX3NjdHBDb25uUmVtb3RlRW50cnlfdCAqcmNlKQoreworICAgIGludCAgICAgICAgICAgICByZXQ7CisgICAgc2N0cEFzc29jUmVtQWRkclRhYmxlX2VudHJ5ICplbnRyeTsKKworICAgIGVudHJ5ID0gc2N0cEFzc29jUmVtQWRkclRhYmxlX2VudHJ5X2NyZWF0ZSgpOworICAgIGlmIChlbnRyeSA9PSBOVUxMKQorCXJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisKKyAgICBlbnRyeS0+c2N0cEFzc29jSWQgPSByY2UtPnNjdHBBc3NvY0lkOworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyQWN0aXZlID0gcmNlLT5zY3RwQXNzb2NSZW1BZGRyQWN0aXZlOworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRySEJBY3RpdmUgPSByY2UtPnNjdHBBc3NvY1JlbUFkZHJIQkFjdGl2ZTsKKyAgICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkclJUTyA9IHJjZS0+c2N0cEFzc29jUmVtQWRkclJUTzsKKyAgICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkck1heFBhdGhSdHggPSByY2UtPnNjdHBBc3NvY1JlbUFkZHJNYXhQYXRoUnR4OworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyUnR4ID0gcmNlLT5zY3RwQXNzb2NSZW1BZGRyUnR4OworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyU3RhcnRUaW1lID0gMDsKKworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyVHlwZSA9IHJjZS0+c2N0cEFzc29jUmVtQWRkclR5cGU7CisgICAgaWYgKHJjZS0+c2N0cEFzc29jUmVtQWRkclR5cGUgPT0gSU5FVEFERFJFU1NUWVBFX0lQVjQpIHsKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkcl9sZW4gPSA0OworCW1lbWNweShlbnRyeS0+c2N0cEFzc29jUmVtQWRkciwKKwkJICAgcmNlLT5zY3RwQXNzb2NSZW1BZGRyLnM2X2FkZHIrMTIsCisJCSAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyX2xlbik7CisgICAgfSBlbHNlIGlmIChyY2UtPnNjdHBBc3NvY1JlbUFkZHJUeXBlID09IElORVRBRERSRVNTVFlQRV9JUFY2KSB7CisJZW50cnktPnNjdHBBc3NvY1JlbUFkZHJfbGVuID0gMTY7CisJbWVtY3B5KGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyLAorCQkgICAmcmNlLT5zY3RwQXNzb2NSZW1BZGRyLAorCQkgICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkcl9sZW4pOworICAgIH0KKyAgICByZXQgPQorCXNjdHBBc3NvY1JlbUFkZHJUYWJsZV9hZGRfb3JfdXBkYXRlKGNvbnRhaW5lcnMtPnNjdHBBc3NvY1JlbUFkZHJUYWJsZSwKKwkJCQkJICAgIGVudHJ5KTsKKyAgICByZXR1cm4gcmV0OworfQorCisKK2ludAorc2N0cFRhYmxlc19hcmNoX2xvYWQoc2N0cFRhYmxlc19jb250YWluZXJzICogY29udGFpbmVycywgdV9sb25nICogZmxhZ3MpCit7CisgICAgaW50ICAgICAgICAgICAgICAgIHJldCA9IFNOTVBfRVJSX05PRVJST1I7CisgICAgbWliMl9zY3RwQ29ubkVudHJ5X3Qgc2NlOworICAgIG1pYjJfc2N0cENvbm5Mb2NhbEVudHJ5X3QgbGNlOworICAgIG1pYjJfc2N0cENvbm5SZW1vdGVFbnRyeV90IHJjZTsKKyAgICByZXFfZSAgICAgICAgICAgICAgcmVxID0gR0VUX0ZJUlNUOworCisgICAgd2hpbGUgKGdldE1pYnN0YXQoTUlCX1NDVFBfQ09OTiwgJnNjZSwgc2l6ZW9mKHNjZSksIHJlcSwgJkdldF9ldmVyeXRoaW5nLCAwKSA9PSAwKSB7CisJcmVxID0gR0VUX05FWFQ7CisJcGFyc2VfYXNzb2MoY29udGFpbmVycywgJnNjZSk7CisgICAgfQorICAgIHJlcSA9IEdFVF9GSVJTVDsKKyAgICB3aGlsZSAoZ2V0TWlic3RhdChNSUJfU0NUUF9DT05OX0xPQ0FMLCAmbGNlLCBzaXplb2YobGNlKSwgcmVxLCAmR2V0X2V2ZXJ5dGhpbmcsIDApID09IDApIHsKKwlyZXEgPSBHRVRfTkVYVDsKKwlwYXJzZV9hc3NvY19sb2NhbF9hZGRyZXNzKGNvbnRhaW5lcnMsICZsY2UpOworICAgIH0KKyAgICByZXEgPSBHRVRfRklSU1Q7CisgICAgd2hpbGUgKGdldE1pYnN0YXQoTUlCX1NDVFBfQ09OTl9SRU1PVEUsICZyY2UsIHNpemVvZihyY2UpLCByZXEsICZHZXRfZXZlcnl0aGluZywgMCkgPT0gMCkgeworCXJlcSA9IEdFVF9ORVhUOworCXBhcnNlX2Fzc29jX3JlbW90ZV9hZGRyZXNzKGNvbnRhaW5lcnMsICZyY2UpOworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMgYi9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYwppbmRleCA0MDA2YmY3Li5jZDMzODVhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYworKysgYi9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYwpAQCAtNzEsNyArNzEsNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KIAogI2luY2x1ZGUgInNtdXguaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAjaW5jbHVkZSAibWliZGVmcy5oIgogI2luY2x1ZGUgInNubXBkLmgiCiAKQEAgLTEyMiw3ICsxMjEsOCBAQAogICAgIC8qCiAgICAgICogYm9ndXMgZW50cnksIGFzIGluIHBhc3MuYyAKICAgICAgKi8KLSAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9zbXV4LCAwLCB7TUlCSU5ERVh9fSwKKyAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9zbXV4LCAwLCB7TUlCSU5ERVh9fSwKIH07CiAKIApAQCAtNDI5LDcgKzQyOSw3IEBACiAgICAgICAgICAgICAgKiBwZWVrIGF0IHdoYXQncyByZWNlaXZlZCAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKChsZW4gPSByZWN2ZnJvbShycHRyLT5zcl9mZCwgYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNVVhNQVhQS1RTSVpFLCBNU0dfUEVFSywgTlVMTCwgMCkpIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTVVYTUFYUEtUU0laRSwgTVNHX1BFRUssIE5VTEwsIE5VTEwpKSA8PSAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKChsZW4gPT0gLTEpICYmICgoZXJybm8gPT0gRUlOVFIpIHx8IChlcnJubyA9PSBFQUdBSU4pKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC00NDQsOCArNDQ0LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbdmFyX3NtdXhfd3JpdGVdIFBlZWtlZCBhdCAlZCBieXRlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbikpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNtdXgiLCAiW3Zhcl9zbXV4X3dyaXRlXSBQZWVrZWQgYXQgJSIgTkVUU05NUF9QUkl6CisgICAgICAgICAgICAgICAgICAgICAgICAiZCBieXRlc1xuIiwgbGVuKSk7CiAgICAgICAgICAgICBERUJVR0RVTVBTRVRVUCgidmFyX3NtdXhfd3JpdGUiLCBidWYsIGxlbik7CiAKICAgICAgICAgICAgIC8qCkBAIC00NjgsNyArNDY4LDcgQEAKICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsZW4gPSB0bXBfbGVuOwotICAgICAgICAgICAgICAgbGVuID0gcmVjdmZyb20ocnB0ci0+c3JfZmQsIGJ1ZiwgbGVuLCAwLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgIGxlbiA9IHJlY3Zmcm9tKHJwdHItPnNyX2ZkLCBidWYsIGxlbiwgMCwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB3aGlsZSgobGVuID09IC0xKSAmJiAoKGVycm5vID09IEVJTlRSKSB8fCAoZXJybm8gPT0gRUFHQUlOKSkpOwogCkBAIC00ODAsOCArNDgwLDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbdmFyX3NtdXhfd3JpdGVdIFJlY2VpdmVkICVkIGJ5dGVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbdmFyX3NtdXhfd3JpdGVdIFJlY2VpdmVkICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICAgICAgICAgImQgYnl0ZXNcbiIsIGxlbikpOwogCiAgICAgICAgICAgICBpZiAoYnVmWzBdID09IFNNVVhfVFJBUCkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIlt2YXJfc211eF93cml0ZV0gUmVjZWl2ZWQgdHJhcFxuIikpOwpAQCAtNjEwLDcgKzYxMCw3IEBACiAgICAgICAgICAqLwogICAgICAgICBkbwogICAgICAgICB7Ci0gICAgICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKGZkLCAoY2hhciAqKSBkYXRhLCBTTVVYTUFYUEtUU0laRSwgMCwgTlVMTCwgMCk7CisgICAgICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKGZkLCAoY2hhciAqKSBkYXRhLCBTTVVYTUFYUEtUU0laRSwgMCwgTlVMTCwgTlVMTCk7CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUoKGxlbmd0aCA9PSAtMSkgJiYgKChlcnJubyA9PSBFSU5UUikgfHwgKGVycm5vID09IEVBR0FJTikpKTsKIApAQCAtNjg4LDcgKzY4OCw4IEBACiAKICAgICBkbwogICAgIHsKLSAgICAgICBsZW5ndGggPSByZWN2ZnJvbShmZCwgKGNoYXIgKikgZGF0YSwgU01VWE1BWFBLVFNJWkUsIE1TR19QRUVLLCBOVUxMLCAwKTsKKyAgICAgICBsZW5ndGggPSByZWN2ZnJvbShmZCwgKGNoYXIgKikgZGF0YSwgU01VWE1BWFBLVFNJWkUsIE1TR19QRUVLLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIH0KICAgICB3aGlsZSgobGVuZ3RoID09IC0xKSAmJiAoKGVycm5vID09IEVJTlRSKSB8fCAoZXJybm8gPT0gRUFHQUlOKSkpOwogCkBAIC03MTYsNyArNzE3LDcgQEAKICAgICBkbwogICAgIHsKICAgICAgICBsZW5ndGggPSB0bXBfbGVuZ3RoOwotICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKGZkLCAoY2hhciAqKSBkYXRhLCBsZW5ndGgsIDAsIE5VTEwsIDApOworICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKGZkLCAoY2hhciAqKSBkYXRhLCBsZW5ndGgsIDAsIE5VTEwsIE5VTEwpOwogICAgIH0KICAgICB3aGlsZSgobGVuZ3RoID09IC0xKSAmJiAoKGVycm5vID09IEVJTlRSKSB8fCAoZXJybm8gPT0gRUFHQUlOKSkpOwogCkBAIC03NDIsOCArNzQzLDggQEAKICAgICBzaXplX3QgICAgICAgICAgbGVuOwogICAgIHVfY2hhciAgICAgICAgICpwdHIsIHR5cGU7CiAKLSAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9wZHVfcHJvY2Vzc10gUHJvY2Vzc2luZyAlZCBieXRlc1xuIiwKLSAgICAgICAgICAgICAgICBsZW5ndGgpKTsKKyAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9wZHVfcHJvY2Vzc10gUHJvY2Vzc2luZyAlIiBORVRTTk1QX1BSSXoKKyAgICAgICAgICAgICAgICAiZCBieXRlc1xuIiwgbGVuZ3RoKSk7CiAKICAgICBlcnJvciA9IDA7CiAgICAgcHRyID0gZGF0YTsKQEAgLTc4NSw3ICs3ODYsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU01VWF9UUkFQOgogICAgICAgICAgICAgc25tcF9sb2coTE9HX0lORk8sICJHb3QgdHJhcCBmcm9tIHBlZXIgb24gZmQgJWRcbiIsIGZkKTsKLSAgICAgICAgICAgIGlmIChwdHIgIT0gMCkKKyAgICAgICAgICAgIGlmIChwdHIpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9wZHVfcHJvY2Vzc10gY2FsbCBzbXV4X3RyYXBfcHJvY2Vzcy5cbiIpKTsKICAgICAgICAgICAgICAgIHB0ciA9IHNtdXhfdHJhcF9wcm9jZXNzKHB0ciwgJmxlbik7CkBAIC04MjksOCArODMwLDggQEAKICAgICAgICAgcmV0dXJuICgocHRyICs9ICpsZW4pKTsKICAgICB9CiAgICAgREVCVUdNU0dUTCgoInNtdXgiLAotICAgICAgICAgICAgICAgICJbc211eF9vcGVuX3Byb2Nlc3NdIHZlcnNpb24gJWQsIGxlbiAlZCwgdHlwZSAlZFxuIiwKLSAgICAgICAgICAgICAgICB2ZXJzaW9uLCAqbGVuLCAoaW50KSB0eXBlKSk7CisgICAgICAgICAgICAgICAgIltzbXV4X29wZW5fcHJvY2Vzc10gdmVyc2lvbiAlbGQsIGxlbiAlIiBORVRTTk1QX1BSSXoKKyAgICAgICAgICAgICAgICAidSwgdHlwZSAlZFxuIiwgdmVyc2lvbiwgKmxlbiwgKGludCkgdHlwZSkpOwogCiAgICAgb2lkX25hbWVfbGVuID0gTUFYX09JRF9MRU47CiAgICAgaWYgKChwdHIgPSBhc25fcGFyc2Vfb2JqaWQocHRyLCBsZW4sICZ0eXBlLCBvaWRfbmFtZSwKQEAgLTg0NCw4ICs4NDUsOCBAQAogICAgIGlmIChzbm1wX2dldF9kb19kZWJ1Z2dpbmcoKSkgewogICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9vcGVuX3Byb2Nlc3NdIHNtdXggcGVlcjogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIG9pZF9wcmludCkpOwotICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9vcGVuX3Byb2Nlc3NdIGxlbiAlZCwgdHlwZSAlZFxuIiwgKmxlbiwKLSAgICAgICAgICAgICAgICAgICAgKGludCkgdHlwZSkpOworICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9vcGVuX3Byb2Nlc3NdIGxlbiAlIiBORVRTTk1QX1BSSXoKKyAgICAgICAgICAgICAgICAgICAgInUsIHR5cGUgJWRcbiIsICpsZW4sIChpbnQpIHR5cGUpKTsKICAgICB9CiAKICAgICBzdHJpbmdfbGVuID0gU01VWE1BWFNUUkxFTjsKQEAgLTg2MSw4ICs4NjIsOCBAQAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgc3RyaW5nX2xlbjsgaSsrKQogICAgICAgICAgICAgREVCVUdNU0coKCJzbXV4IiwgIiVjIiwgZGVzY3JbaV0pKTsKICAgICAgICAgREVCVUdNU0coKCJzbXV4IiwgIlxuIikpOwotICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9vcGVuX3Byb2Nlc3NdIGxlbiAlZCwgdHlwZSAlZFxuIiwgKmxlbiwKLSAgICAgICAgICAgICAgICAgICAgKGludCkgdHlwZSkpOworICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9vcGVuX3Byb2Nlc3NdIGxlbiAlIiBORVRTTk1QX1BSSXoKKyAgICAgICAgICAgICAgICAgICAgInUsIHR5cGUgJWRcbiIsICpsZW4sIChpbnQpIHR5cGUpKTsKICAgICB9CiAgICAgZGVzY3Jbc3RyaW5nX2xlbl0gPSAwOwogCkBAIC04NzksOCArODgwLDggQEAKICAgICAgICAgZm9yIChpID0gMDsgaSA8IChpbnQpIHN0cmluZ19sZW47IGkrKykKICAgICAgICAgICAgIERFQlVHTVNHKCgic211eCIsICIlYyIsIHBhc3N3ZFtpXSkpOwogICAgICAgICBERUJVR01TRygoInNtdXgiLCAiXG4iKSk7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X29wZW5fcHJvY2Vzc10gbGVuICVkLCB0eXBlICVkXG4iLCAqbGVuLAotICAgICAgICAgICAgICAgICAgICAoaW50KSB0eXBlKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X29wZW5fcHJvY2Vzc10gbGVuICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICAgICAidSwgdHlwZSAlZFxuIiwgKmxlbiwgKGludCkgdHlwZSkpOwogICAgIH0KICAgICBwYXNzd2Rbc3RyaW5nX2xlbl0gPSAnXDAnOwogICAgIGlmICghc211eF9hdXRoX3BlZXIob2lkX25hbWUsIG9pZF9uYW1lX2xlbiwgcGFzc3dkLCBmZCkpIHsKQEAgLTkyNiwxMCArOTI3LDI3IEBACiBzbXV4X2F1dGhfcGVlcihvaWQgKiBuYW1lLCBzaXplX3QgbmFtZWxlbiwgY2hhciAqcGFzc3dkLCBpbnQgZmQpCiB7CiAgICAgaW50ICAgICAgICAgICAgIGk7CisgICAgY2hhciAgICAgICAgICAgIG9pZF9wcmludFtTTVVYTUFYU1RSTEVOXTsKKworICAgIGlmIChzbm1wX2dldF9kb19kZWJ1Z2dpbmcoKSkgeworICAgICAgICBzbnByaW50X29iamlkKG9pZF9wcmludCwgc2l6ZW9mKG9pZF9wcmludCksIG5hbWUsIG5hbWVsZW4pOworICAgICAgICBERUJVR01TR1RMKCgic211eDphdXRoIiwgIltzbXV4X2F1dGhfcGVlcl0gQXV0aG9yaXppbmc6ICVzLCAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgb2lkX3ByaW50LCBwYXNzd2QpKTsKKyAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbmF1dGhzOyBpKyspIHsKKyAgICAgICAgaWYgKHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpKSB7CisgICAgICAgICAgICBzbnByaW50X29iamlkKG9pZF9wcmludCwgc2l6ZW9mKG9pZF9wcmludCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhzW2ldLT5zYV9vaWQsIEF1dGhzW2ldLT5zYV9vaWRfbGVuKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4OmF1dGgiLCAiW3NtdXhfYXV0aF9wZWVyXSBDaGVja2luZyBPSUQ6ICVzICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgIG9pZF9wcmludCwgaSkpOworICAgICAgICB9CiAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlKEF1dGhzW2ldLT5zYV9vaWQsIEF1dGhzW2ldLT5zYV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBuYW1lbGVuKSA9PSAwKSB7CisgICAgICAgICAgICBpZiAoc25tcF9nZXRfZG9fZGVidWdnaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic211eDphdXRoIiwgIltzbXV4X2F1dGhfcGVlcl0gQ2hlY2tpbmcgUC9XOiAlcyAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgQXV0aHNbaV0tPnNhX3Bhc3N3ZCwgQXV0aHNbaV0tPnNhX2FjdGl2ZV9mZCkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCEoc3RyY21wKEF1dGhzW2ldLT5zYV9wYXNzd2QsIHBhc3N3ZCkpICYmCiAgICAgICAgICAgICAgICAgKEF1dGhzW2ldLT5zYV9hY3RpdmVfZmQgPT0gLTEpKSB7CiAgICAgICAgICAgICAgICAgLyoKQEAgLTk2Niw3ICs5ODQsNyBAQAogICAgIH0KIAogICAgIERFQlVHTVNHVEwoKCJzbXV4IiwKLSAgICAgICAgICAgICAgICAiW3NtdXhfY2xvc2VfcHJvY2Vzc10gY2xvc2UgZnJvbSBwZWVyIG9uIGZkICVkIHJlYXNvbiAlZFxuIiwKKyAgICAgICAgICAgICAgICAiW3NtdXhfY2xvc2VfcHJvY2Vzc10gY2xvc2UgZnJvbSBwZWVyIG9uIGZkICVkIHJlYXNvbiAlbGRcbiIsCiAgICAgICAgICAgICAgICAgZmQsIGRvd24pKTsKICAgICBzbXV4X3BlZXJfY2xlYW51cChmZCk7CiAKQEAgLTk5OCw3ICsxMDE2LDcgQEAKICAgICAgICAgc211eF9zZW5kX3Jyc3Aoc2QsIC0xKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X3JyZXFfcHJvY2Vzc10gcHJpb3JpdHkgJWRcbiIsIHByaW9yaXR5KSk7CisgICAgREVCVUdNU0dUTCgoInNtdXgiLCAiW3NtdXhfcnJlcV9wcm9jZXNzXSBwcmlvcml0eSAlbGRcbiIsIHByaW9yaXR5KSk7CiAKICAgICBpZiAoKHB0ciA9IGFzbl9wYXJzZV9pbnQocHRyLCBsZW4sICZ0eXBlLCAmb3BlcmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yob3BlcmF0aW9uKSkpID09IE5VTEwpIHsKQEAgLTEwMDcsNyArMTAyNSw3IEBACiAgICAgICAgIHNtdXhfc2VuZF9ycnNwKHNkLCAtMSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9ycmVxX3Byb2Nlc3NdIG9wZXJhdGlvbiAlZFxuIiwgb3BlcmF0aW9uKSk7CisgICAgREVCVUdNU0dUTCgoInNtdXgiLCAiW3NtdXhfcnJlcV9wcm9jZXNzXSBvcGVyYXRpb24gJWxkXG4iLCBvcGVyYXRpb24pKTsKIAogICAgIGlmIChvcGVyYXRpb24gPT0gU01VWF9SRUdPUF9ERUxFVEUpIHsKICAgICAgICAgLyoKQEAgLTExNDYsNyArMTE2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIG5ycHRyLT5zcl9uYW1lLCBucnB0ci0+c3JfbmFtZV9sZW4pCiAgICAgICAgICAgICAgICAgICAgICAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKIAkJREVCVUdNU0dUTCgoInNtdXgiLCAiW3NtdXhfcnJlcV9wcm9jZXNzXSBGYWlsZWQgdG8gcmVnaXN0ZXIgc3VidHJlZVxuIikpOwotCQlzbXV4X2xpc3RfZGV0YWNoKCZBY3RpdmVSZWdzLCAmbnJwdHIpOworCQlzbXV4X2xpc3RfZGV0YWNoKCZBY3RpdmVSZWdzLCBucnB0cik7CiAJCWZyZWUobnJwdHIpOwogCQlzbXV4X3NlbmRfcnJzcChzZCwgLTEpOwogCQlyZXR1cm4gTlVMTDsKQEAgLTEyNDgsNTAgKzEyNjYsNjEgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHByZXYgPSBOVUxMOwotICAgIGZvciAocnB0ciA9ICpoZWFkOyBycHRyLT5zcl9uZXh0OyBycHRyID0gcnB0ci0+c3JfbmV4dCkgeworICAgIGZvciAocnB0ciA9ICpoZWFkOyBycHRyOyBycHRyID0gcnB0ci0+c3JfbmV4dCkgewogICAgICAgICByZXN1bHQgPSBzbm1wX29pZF9jb21wYXJlKGFkZC0+c3JfbmFtZSwgYWRkLT5zcl9uYW1lX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHRyLT5zcl9uYW1lLCBycHRyLT5zcl9uYW1lX2xlbik7Ci0gICAgICAgIGlmICgocmVzdWx0ID09IDApICYmIChhZGQtPnNyX3ByaW9yaXR5ID09IHJwdHItPnNyX3ByaW9yaXR5KSkgeworICAgICAgICBpZiAocmVzdWx0ID09IDApIHsKICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBzYW1lIHRyZWUsIHNhbWUgcHJpLCBub3BlIAorICAgICAgICAgICAgICogU2FtZSB0cmVlLi4uCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChhZGQtPnNyX3ByaW9yaXR5ID09IHJwdHItPnNyX3ByaW9yaXR5KSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiAuLi4gc2FtZSBwcmkgOiBub3BlIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYWRkLT5zcl9wcmlvcml0eSA8IHJwdHItPnNyX3ByaW9yaXR5KSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiAuLi4gbG93ZXIgcHJpIDogaW5zZXJ0IGFuZCByZXR1cm4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBhZGQtPnNyX25leHQgPSBycHRyOworICAgICAgICAgICAgICAgIGlmICggcHJldiApIHsgcHJldi0+c3JfbmV4dCA9IGFkZDsgfQorICAgICAgICAgICAgICAgIGVsc2UgICAgICAgIHsgICAgICAgICAqaGVhZCA9IGFkZDsgfQorICAgICAgICAgICAgICAgIHJldHVybiAwOworI2lmZGVmIFhYWAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIC4uLiBoaWdoZXIgcHJpIDogcHV0IGFmdGVyIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGFkZC0+c3JfbmV4dCAgPSBycHRyLT5zcl9uZXh0OworICAgICAgICAgICAgICAgIHJwdHItPnNyX25leHQgPSBhZGQ7CisjZW5kaWYKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPCAwKSB7CiAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICogdGhpcyBjYW4gb25seSBoYXBwZW4gaWYgd2UgZ28gYmVmb3JlIHRoZSBoZWFkIAorICAgICAgICAgICAgICogRWFybGllciB0cmVlIDogaW5zZXJ0IGFuZCByZXR1cm4KICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgYWRkLT5zcl9uZXh0ID0gKmhlYWQ7Ci0gICAgICAgICAgICAqaGVhZCA9IGFkZDsKKyAgICAgICAgICAgIGFkZC0+c3JfbmV4dCA9IHJwdHI7CisgICAgICAgICAgICBpZiAoIHByZXYgKSB7IHByZXYtPnNyX25leHQgPSBhZGQ7IH0KKyAgICAgICAgICAgIGVsc2UgICAgICAgIHsgICAgICAgICAqaGVhZCA9IGFkZDsgfQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxzZSBpZiAoKHNubXBfb2lkX2NvbXBhcmUoYWRkLT5zcl9uYW1lLCBhZGQtPnNyX25hbWVfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwdHItPnNyX25leHQtPnNyX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnB0ci0+c3JfbmV4dC0+c3JfbmFtZV9sZW4pKSA8IDApIHsKKyNpZmRlZiBYWFgKKyAgICAgICAgfSBlbHNlICB7CiAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICogaW5zZXJ0IGhlcmUgCisgICAgICAgICAgICAgKiBMYXRlciB0cmVlIDogcHV0IGFmdGVyCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGFkZC0+c3JfbmV4dCA9IHJwdHItPnNyX25leHQ7CiAgICAgICAgICAgICBycHRyLT5zcl9uZXh0ID0gYWRkOwogICAgICAgICAgICAgcmV0dXJuIDA7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICBwcmV2ID0gcnB0cjsKICAgICB9CiAgICAgLyoKLSAgICAgKiBjb21wYXJlIHRoZSBsYXN0IG9uZSAKKyAgICAgKiBPdGhlcndpc2UsIHRoaXMgZW50cnkgbXVzdCBjb21lIGxhc3QKICAgICAgKi8KLSAgICByZXN1bHQgPSBzbm1wX29pZF9jb21wYXJlKGFkZC0+c3JfbmFtZSwgYWRkLT5zcl9uYW1lX2xlbiwgcnB0ci0+c3JfbmFtZSwgcnB0ci0+c3JfbmFtZV9sZW4pOwotICAgIGlmICgocmVzdWx0ID09IDApICYmIGFkZC0+c3JfcHJpb3JpdHkgPT0gcnB0ci0+c3JfcHJpb3JpdHkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBlbHNlICBpZiAocmVzdWx0IDwgMCApIHsKLSAgICAgICAgYWRkLT5zcl9uZXh0ID0gcnB0cjsKLSAgICAgICAgaWYgKCBwcmV2ICkgewotICAgICAgICAgICAgcHJldi0+c3JfbmV4dCA9IGFkZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpoZWFkID0gYWRkOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcnB0ci0+c3JfbmV4dCA9IGFkZDsKLSAgICAgICAgYWRkLT5zcl9uZXh0ID0gTlVMTDsKLSAgICB9CisgICAgaWYgKCBwcmV2ICkgeyBwcmV2LT5zcl9uZXh0ID0gYWRkOyB9CisgICAgZWxzZSAgICAgICAgeyAgICAgICAgICpoZWFkID0gYWRkOyB9CisgICAgYWRkLT5zcl9uZXh0ID0gTlVMTDsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTM1Myw3ICsxMzgyLDcgQEAKICAgICAgICAgdHlwZSA9IFNNVVhfR0VUTkVYVDsKIAogICAgIGlmIChzbXV4X2J1aWxkKHR5cGUsIHNtdXhfcmVxaWQsIG9iamlkLCBsZW4sIDAsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgKmxlbiwgcGFja2V0LCAmbGVuZ3RoKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAqbGVuLCBwYWNrZXQsIChzaXplX3QgKikgJmxlbmd0aCkgPCAwKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJbc211eF9zbm1wX3Byb2Nlc3NdOiBzbXV4X2J1aWxkIGZhaWxlZFxuIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEzNzMsNyArMTQwMiw4IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIHBlZWsgYXQgd2hhdCdzIHJlY2VpdmVkIAogICAgICAgICAgKi8KLSAgICAgICAgbGVuZ3RoID0gcmVjdmZyb20oc2QsIChjaGFyICopIHJlc3VsdCwgU01VWE1BWFBLVFNJWkUsIE1TR19QRUVLLCBOVUxMLCAwKTsKKyAgICAgICAgbGVuZ3RoID0gcmVjdmZyb20oc2QsIChjaGFyICopIHJlc3VsdCwgU01VWE1BWFBLVFNJWkUsIE1TR19QRUVLLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICAgICAgaWYgKGxlbmd0aCA8PSAwKSB7CiAgICAgICAgICAgICBpZiAoKGxlbmd0aCA9PSAtMSkgJiYgKChlcnJubyA9PSBFSU5UUikgfHwgKGVycm5vID09IEVBR0FJTikpKQogICAgICAgICAgICAgewpAQCAtMTQxMiw3ICsxNDQyLDcgQEAKICAgICAgICAgZG8KICAgICAgICAgewogICAgICAgICAgICBsZW5ndGggPSB0bXBfbGVuZ3RoOwotICAgICAgICAgICBsZW5ndGggPSByZWN2ZnJvbShzZCwgKGNoYXIgKikgcmVzdWx0LCBsZW5ndGgsIDAsIE5VTEwsIDApOworICAgICAgICAgICBsZW5ndGggPSByZWN2ZnJvbShzZCwgKGNoYXIgKikgcmVzdWx0LCBsZW5ndGgsIDAsIE5VTEwsIE5VTEwpOwogICAgICAgICB9CiAgICAgICAgIHdoaWxlKChsZW5ndGggPT0gLTEpICYmICgoZXJybm8gPT0gRUlOVFIpIHx8IChlcnJubyA9PSBFQUdBSU4pKSk7CiAKQEAgLTE0MjksOCArMTQ1OSw4IEBACiAgICAgICAgIGlmIChyZXN1bHRbMF0gPT0gU01VWF9UUkFQKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9zbm1wX3Byb2Nlc3NdIFJlY2VpdmVkIHRyYXBcbiIpKTsKICAgICAgICAgICAgIHNubXBfbG9nKExPR19JTkZPLCAiR290IHRyYXAgZnJvbSBwZWVyIG9uIGZkICVkXG4iLCBzZCk7Ci0gICAgICAgICAgICBwdHIgPSBhc25fcGFyc2VfaGVhZGVyKHJlc3VsdCwgJmxlbmd0aCwgJnR5cGUpOwotICAgICAgICAgICAgc211eF90cmFwX3Byb2Nlc3MocHRyLCAmbGVuZ3RoKTsKKyAgICAgICAgICAgIHB0ciA9IGFzbl9wYXJzZV9oZWFkZXIocmVzdWx0LCAoc2l6ZV90ICopICZsZW5ndGgsICZ0eXBlKTsKKyAgICAgICAgICAgIHNtdXhfdHJhcF9wcm9jZXNzKHB0ciwgKHNpemVfdCAqKSAmbGVuZ3RoKTsKIAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIGdvIGFuZCBwZWVrIGF0IHJlY2VpdmVkIGRhdGEgYWdhaW4gCkBAIC0xNDk2LDcgKzE1MjYsNyBAQAogICAgICAqIFhYWCBIb3cgdG8gc2VuZCBzb21ldGhpbmcgaW50ZWxsaWdlbnQgYmFjayBpbiBjYXNlIG9mIGFuIGVycm9yIAogICAgICAqLwogICAgIERFQlVHTVNHVEwoKCJzbXV4IiwKLSAgICAgICAgICAgICAgICAiW3NtdXhfcGFyc2VdIE1lc3NhZ2UgdHlwZSAlZCwgcmVxaWQgJWQsIGVycnN0YXQgJWQsIFxuXHRlcnJpbmRleCAlZFxuIiwKKyAgICAgICAgICAgICAgICAiW3NtdXhfcGFyc2VdIE1lc3NhZ2UgdHlwZSAlZCwgcmVxaWQgJWxkLCBlcnJzdGF0ICVsZCwgXG5cdGVycmluZGV4ICVsZFxuIiwKICAgICAgICAgICAgICAgICAoaW50KSB0eXBlLCByZXFpZCwgZXJyc3RhdCwgZXJyaW5kZXgpKTsKICAgICBpZiAocHRyID09IE5VTEwgfHwgZXJyc3RhdCAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE1NTYsOCArMTU4Niw4IEBACiAgICAgICovCiAgICAgbGVuID0gU01VWE1BWFBLVFNJWkU7CiAgICAgREVCVUdNU0dUTCgoInNtdXgiLAotICAgICAgICAgICAgICAgICJbc211eF9wYXJzZV92YXJdIEFzbiBjb2RlZCBsZW4gb2YgdmFyICVkLCB0eXBlICVkXG4iLAotICAgICAgICAgICAgICAgIHZhcl92YWxfbGVuLCAoaW50KSAqdmFydHlwZSkpOworICAgICAgICAgICAgICAgICJbc211eF9wYXJzZV92YXJdIEFzbiBjb2RlZCBsZW4gb2YgdmFyICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICJ1LCB0eXBlICVkXG4iLCB2YXJfdmFsX2xlbiwgKGludCkgKnZhcnR5cGUpKTsKIAogICAgIHN3aXRjaCAoKHNob3J0KSAqdmFydHlwZSkgewogICAgIGNhc2UgQVNOX0lOVEVHRVI6CkBAIC0yMDcwLDcgKzIxMDAsNyBAQAogICAgcmV0dXJuKDApOwogfQogCi1pbnQgc211eF9zbm1wX3NlbGVjdF9saXN0X2dldF9sZW5ndGgoKQoraW50IHNtdXhfc25tcF9zZWxlY3RfbGlzdF9nZXRfbGVuZ3RoKHZvaWQpCiB7CiAgICByZXR1cm4oc2RsZW4pOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX2JncC5jIGIvYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX2JncC5jCmluZGV4IDNlNWQ1Y2UuLjE2YjAxODUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NtdXgvc25tcF9iZ3AuYworKysgYi9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfYmdwLmMKQEAgLTUyLDMyICs1Miw1NSBAQAogI2luY2x1ZGUgInNubXBfYmdwLmgiCiAKIHN0cnVjdCB2YXJpYWJsZTEzIGJncF92YXJpYWJsZXNbXSA9IHsKLSAgICB7QkdQVkVSU0lPTiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9iZ3AsIDEsIHsxfX0sCi0gICAge0JHUExPQ0FMQVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2JncCwgMSwgezJ9fSwKLSAgICB7QkdQSURFTlRJRklFUiwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9iZ3AsIDEsIHs0fX0sCi0gICAge0JHUFBFRVJJREVOVElGSUVSLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDF9fSwKLSAgICB7QkdQUEVFUlNUQVRFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHszLCAxLCAyfX0sCi0gICAge0JHUFBFRVJBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgM319LAotICAgIHtCR1BQRUVSTkVHT1RJQVRFRFZFUlNJT04sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDR9fSwKLSAgICB7QkdQUEVFUkxPQ0FMQUREUiwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9iZ3AsIDMsIHszLCAxLCA1fX0sCi0gICAge0JHUFBFRVJMT0NBTFBPUlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDZ9fSwKLSAgICB7QkdQUEVFUlJFTU9URUFERFIsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgN319LAotICAgIHtCR1BQRUVSUkVNT1RFUE9SVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgOH19LAotICAgIHtCR1BQRUVSUkVNT1RFQVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDl9fSwKLSAgICB7QkdQUEVFUklOVVBEQVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgMTB9fSwKLSAgICB7QkdQUEVFUk9VVFVQREFURVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDExfX0sCi0gICAge0JHUFBFRVJJTlRPVEFMTUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDEyfX0sCi0gICAge0JHUFBFRVJPVVRUT1RBTE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHszLCAxLCAxM319LAotICAgIHtCR1BQRUVSTEFTVEVSUk9SLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDE0fX0sCi0gICAge0JHUFBBVEhBVFRSUEVFUiwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9iZ3AsIDMsIHs1LCAxLCAxfX0sCi0gICAge0JHUFBBVEhBVFRSREVTVE5FVFdPUkssIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfYmdwLCAzLCB7NSwgMSwgMn19LAotICAgIHtCR1BQQVRIQVRUUk9SSUdJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7NSwgMSwgM319LAotICAgIHtCR1BQQVRIQVRUUkFTUEFUSCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHs1LCAxLCA0fX0sCi0gICAge0JHUFBBVEhBVFRSTkVYVEhPUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7NSwgMSwgNX19LAotICAgIHtCR1BQQVRIQVRUUklOVEVSQVNNRVRSSUMsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7NSwgMSwgNn19CisgICAge0JHUFZFUlNJT04sIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAxLCB7MX19LAorICAgIHtCR1BMT0NBTEFTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDEsIHsyfX0sCisgICAge0JHUElERU5USUZJRVIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAxLCB7NH19LAorICAgIHtCR1BQRUVSSURFTlRJRklFUiwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCAxfX0sCisgICAge0JHUFBFRVJTVEFURSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7MywgMSwgMn19LAorICAgIHtCR1BQRUVSQURNSU5TVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDN9fSwKKyAgICB7QkdQUEVFUk5FR09USUFURURWRVJTSU9OLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCA0fX0sCisgICAge0JHUFBFRVJMT0NBTEFERFIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7MywgMSwgNX19LAorICAgIHtCR1BQRUVSTE9DQUxQT1JULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCA2fX0sCisgICAge0JHUFBFRVJSRU1PVEVBRERSLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDd9fSwKKyAgICB7QkdQUEVFUlJFTU9URVBPUlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDh9fSwKKyAgICB7QkdQUEVFUlJFTU9URUFTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCA5fX0sCisgICAge0JHUFBFRVJJTlVQREFURVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDEwfX0sCisgICAge0JHUFBFRVJPVVRVUERBVEVTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCAxMX19LAorICAgIHtCR1BQRUVSSU5UT1RBTE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCAxMn19LAorICAgIHtCR1BQRUVST1VUVE9UQUxNRVNTQUdFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7MywgMSwgMTN9fSwKKyAgICB7QkdQUEVFUkxBU1RFUlJPUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCAxNH19LAorICAgIHtCR1BQQVRIQVRUUlBFRVIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7NSwgMSwgMX19LAorICAgIHtCR1BQQVRIQVRUUkRFU1RORVRXT1JLLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezUsIDEsIDJ9fSwKKyAgICB7QkdQUEFUSEFUVFJPUklHSU4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezUsIDEsIDN9fSwKKyAgICB7QkdQUEFUSEFUVFJBU1BBVEgsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7NSwgMSwgNH19LAorICAgIHtCR1BQQVRIQVRUUk5FWFRIT1AsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezUsIDEsIDV9fSwKKyAgICB7QkdQUEFUSEFUVFJJTlRFUkFTTUVUUklDLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezUsIDEsIDZ9fQogfTsKIAotb2lkICAgICAgICAgICAgIGJncF92YXJpYWJsZXNfb2lkW10gPSB7IE1JQiwgMTUgfTsKK29pZCAgICAgICAgICAgICBiZ3BfdmFyaWFibGVzX29pZFtdID0geyBORVRTTk1QX01JQjJfT0lELCAxNSB9OwogCiB2b2lkCiBpbml0X3NubXBfYmRwKHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfb3NwZi5jIGIvYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX29zcGYuYwppbmRleCA0ZjQ3NThjLi43M2YwZTQzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfb3NwZi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NtdXgvc25tcF9vc3BmLmMKQEAgLTU3LDEyOSArNTcsMjI1IEBACiBleHRlcm4gdV9jaGFyICAgc211eF90eXBlOwogCiBzdHJ1Y3QgdmFyaWFibGUxMyBvc3BmX3ZhcmlhYmxlc1tdID0gewotICAgIHtvc3BmUm91dGVySWQsIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX29zcGYsIDMsIHsxLCAxLCAxfX0sCi0gICAge29zcGZBZG1pblN0YXQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MSwgMSwgMn19LAotICAgIHtvc3BmVmVyc2lvbk51bWJlciwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEsIDEsIDN9fSwKLSAgICB7b3NwZkFyZWFCZHJSdHJTdGF0dXMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHsxLCAxLCA0fX0sCi0gICAge29zcGZBU0JkclJ0clN0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsxLCAxLCA1fX0sCi0gICAge29zcGZFeHRlcm5Mc2FDb3VudCwgQVNOX0dBVUdFLCBST05MWSwgdmFyX29zcGYsIDMsIHsxLCAxLCA2fX0sCi0gICAge29zcGZFeHRlcm5Mc2FDa3N1bVN1bSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEsIDEsIDd9fSwKLSAgICB7b3NwZlRPU1N1cHBvcnQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MSwgMSwgOH19LAotICAgIHtvc3BmT3JpZ2luYXRlTmV3THNhcywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEsIDEsIDl9fSwKLSAgICB7b3NwZlJ4TmV3THNhcywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEsIDEsIDEwLCAwfX0sCi0gICAge29zcGZFeHRMc2RiTGltaXQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MSwgMSwgMTF9fSwKLSAgICB7b3NwZk11bHRpY2FzdEV4dGVuc2lvbnMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLAotICAgICB7MSwgMSwgMTJ9fSwKLSAgICB7b3NwZkFyZWFJZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MiwgMSwgMX19LAotICAgIHtvc3BmQXV0aFR5cGUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MiwgMSwgMn19LAotICAgIHtvc3BmSW1wb3J0QXNFeHRlcm4sIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MiwgMSwgM319LAotICAgIHtvc3BmU3BmUnVucywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezIsIDEsIDR9fSwKLSAgICB7b3NwZkFyZWFCZHJSdHJDb3VudCwgQVNOX0dBVUdFLCBST05MWSwgdmFyX29zcGYsIDMsIHsyLCAxLCA1fX0sCi0gICAge29zcGZBc0JkclJ0ckNvdW50LCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfb3NwZiwgMywgezIsIDEsIDZ9fSwKLSAgICB7b3NwZkFyZWFMc2FDb3VudCwgQVNOX0dBVUdFLCBST05MWSwgdmFyX29zcGYsIDMsIHsyLCAxLCA3fX0sCi0gICAge29zcGZBcmVhTHNhQ2tzdW1TdW0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHsyLCAxLCA4fX0sCi0gICAge29zcGZBcmVhU3VtbWFyeSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsyLCAxLCA5fX0sCi0gICAge29zcGZBcmVhU3RhdHVzLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezIsIDEsIDEwfX0sCi0gICAge29zcGZTdHViQXJlYUlkLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHszLCAxLCAxfX0sCi0gICAge29zcGZTdHViVE9TLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MywgMSwgMn19LAotICAgIHtvc3BmU3R1Yk1ldHJpYywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHszLCAxLCAzfX0sCi0gICAge29zcGZTdHViU3RhdHVzLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezMsIDEsIDR9fSwKLSAgICB7b3NwZlN0dWJNZXRyaWNUeXBlLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezMsIDEsIDV9fSwKLSAgICB7b3NwZkxzZGJBcmVhSWQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezQsIDEsIDF9fSwKLSAgICB7b3NwZkxzZGJUeXBlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7NCwgMSwgMn19LAotICAgIHtvc3BmTHNkYkxzaWQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezQsIDEsIDN9fSwKLSAgICB7b3NwZkxzZGJSb3V0ZXJJZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7NCwgMSwgNH19LAotICAgIHtvc3BmTHNkYlNlcXVlbmNlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7NCwgMSwgNX19LAotICAgIHtvc3BmTHNkYkFnZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezQsIDEsIDZ9fSwKLSAgICB7b3NwZkxzZGJDaGVja3N1bSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezQsIDEsIDd9fSwKLSAgICB7b3NwZkxzZGJBZHZlcnRpc2VtZW50LCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX29zcGYsIDMsIHs0LCAxLCA4fX0sCi0gICAge29zcGZBcmVhUmFuZ2VBcmVhSWQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezUsIDEsIDF9fSwKLSAgICB7b3NwZkFyZWFSYW5nZU5ldCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7NSwgMSwgMn19LAotICAgIHtvc3BmQXJlYVJhbmdlTWFzaywgQVNOX0lQQUREUkVTUywgUldSSVRFLCB2YXJfb3NwZiwgMywgezUsIDEsIDN9fSwKLSAgICB7b3NwZkFyZWFSYW5nZVN0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs1LCAxLCA0fX0sCi0gICAge29zcGZBcmVhUmFuZ2VFZmZlY3QsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NSwgMSwgNX19LAotICAgIHtvc3BmSG9zdElwQWRkcmVzcywgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7NiwgMSwgMX19LAotICAgIHtvc3BmSG9zdFRPUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezYsIDEsIDJ9fSwKLSAgICB7b3NwZkhvc3RNZXRyaWMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NiwgMSwgM319LAotICAgIHtvc3BmSG9zdFN0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs2LCAxLCA0fX0sCi0gICAge29zcGZIb3N0QXJlYUlELCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHs2LCAxLCA1fX0sCi0gICAge29zcGZJZklwQWRkcmVzcywgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7NywgMSwgMX19LAotICAgIHtvc3BmQWRkcmVzc0xlc3NJZiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezcsIDEsIDJ9fSwKLSAgICB7b3NwZklmQXJlYUlkLCBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgM319LAotICAgIHtvc3BmSWZUeXBlLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezcsIDEsIDR9fSwKLSAgICB7b3NwZklmQWRtaW5TdGF0LCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezcsIDEsIDV9fSwKLSAgICB7b3NwZklmUnRyUHJpb3JpdHksIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgNn19LAotICAgIHtvc3BmSWZUcmFuc2l0RGVsYXksIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgN319LAotICAgIHtvc3BmSWZSZXRyYW5zSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgOH19LAotICAgIHtvc3BmSWZIZWxsb0ludGVydmFsLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezcsIDEsIDl9fSwKLSAgICB7b3NwZklmUnRyRGVhZEludGVydmFsLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezcsIDEsIDEwfX0sCi0gICAge29zcGZJZlBvbGxJbnRlcnZhbCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs3LCAxLCAxMX19LAotICAgIHtvc3BmSWZTdGF0ZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezcsIDEsIDEyfX0sCi0gICAge29zcGZJZkRlc2lnbmF0ZWRSb3V0ZXIsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywKLSAgICAgezcsIDEsIDEzfX0sCi0gICAge29zcGZJZkJhY2t1cERlc2lnbmF0ZWRSb3V0ZXIsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywKLSAgICAgezcsIDEsIDE0fX0sCi0gICAge29zcGZJZkV2ZW50cywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezcsIDEsIDE1fX0sCi0gICAge29zcGZJZkF1dGhLZXksIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs3LCAxLCAxNn19LAotICAgIHtvc3BmSWZTdGF0dXMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgMTd9fSwKLSAgICB7b3NwZklmTXVsdGljYXN0Rm9yd2FyZGluZywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsCi0gICAgIHs3LCAxLCAxOH19LAotICAgIHtvc3BmSWZNZXRyaWNJcEFkZHJlc3MsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezgsIDEsIDF9fSwKLSAgICB7b3NwZklmTWV0cmljQWRkcmVzc0xlc3NJZiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywKLSAgICAgezgsIDEsIDJ9fSwKLSAgICB7b3NwZklmTWV0cmljVE9TLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7OCwgMSwgM319LAotICAgIHtvc3BmSWZNZXRyaWNWYWx1ZSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs4LCAxLCA0fX0sCi0gICAge29zcGZJZk1ldHJpY1N0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs4LCAxLCA1fX0sCi0gICAge29zcGZWaXJ0SWZBcmVhSWQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezksIDEsIDF9fSwKLSAgICB7b3NwZlZpcnRJZk5laWdoYm9yLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHs5LCAxLCAyfX0sCi0gICAge29zcGZWaXJ0SWZUcmFuc2l0RGVsYXksIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7OSwgMSwgM319LAotICAgIHtvc3BmVmlydElmUmV0cmFuc0ludGVydmFsLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywKLSAgICAgezksIDEsIDR9fSwKLSAgICB7b3NwZlZpcnRJZkhlbGxvSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7OSwgMSwgNX19LAotICAgIHtvc3BmVmlydElmUnRyRGVhZEludGVydmFsLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywKLSAgICAgezksIDEsIDZ9fSwKLSAgICB7b3NwZlZpcnRJZlN0YXRlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7OSwgMSwgN319LAotICAgIHtvc3BmVmlydElmRXZlbnRzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7OSwgMSwgOH19LAotICAgIHtvc3BmVmlydElmQXV0aEtleSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezksIDEsIDl9fSwKLSAgICB7b3NwZlZpcnRJZlN0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs5LCAxLCAxMH19LAotICAgIHtvc3BmTmJySXBBZGRyLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMCwgMSwgMX19LAotICAgIHtvc3BmTmJyQWRkcmVzc0xlc3NJbmRleCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEwLCAxLCAyfX0sCi0gICAge29zcGZOYnJSdHJJZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDN9fSwKLSAgICB7b3NwZk5ick9wdGlvbnMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMCwgMSwgNH19LAotICAgIHtvc3BmTmJyUHJpb3JpdHksIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDV9fSwKLSAgICB7b3NwZk5iclN0YXRlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDZ9fSwKLSAgICB7b3NwZk5ickV2ZW50cywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEwLCAxLCA3fX0sCi0gICAge29zcGZOYnJMc1JldHJhbnNRTGVuLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEwLCAxLCA4fX0sCi0gICAge29zcGZOYm1hTmJyU3RhdHVzLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezEwLCAxLCA5fX0sCi0gICAge29zcGZOYm1hTmJyUGVybWFuZW5jZSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsxMCwgMSwgMTB9fSwKLSAgICB7b3NwZlZpcnROYnJBcmVhLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMSwgMSwgMX19LAotICAgIHtvc3BmVmlydE5iclJ0cklkLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMSwgMSwgMn19LAotICAgIHtvc3BmVmlydE5icklwQWRkciwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDN9fSwKLSAgICB7b3NwZlZpcnROYnJPcHRpb25zLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDR9fSwKLSAgICB7b3NwZlZpcnROYnJTdGF0ZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezExLCAxLCA1fX0sCi0gICAge29zcGZWaXJ0TmJyRXZlbnRzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDZ9fSwKLSAgICB7b3NwZlZpcnROYnJMc1JldHJhbnNRTGVuLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfb3NwZiwgMywgezExLCAxLCA3fX0sCi0gICAge29zcGZFeHRMc2RiVHlwZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEyLCAxLCAxfX0sCi0gICAge29zcGZFeHRMc2RiTHNpZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDJ9fSwKLSAgICB7b3NwZkV4dExzZGJSb3V0ZXJJZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDN9fSwKLSAgICB7b3NwZkV4dExzZGJTZXF1ZW5jZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEyLCAxLCA0fX0sCi0gICAge29zcGZFeHRMc2RiQWdlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDV9fSwKLSAgICB7b3NwZkV4dExzZGJDaGVja3N1bSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEyLCAxLCA2fX0sCi0gICAge29zcGZFeHRMc2RiQWR2ZXJ0aXNlbWVudCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9vc3BmLCAzLAotICAgICB7MTIsIDEsIDd9fSwKLSAgICB7b3NwZkFyZWFBZ2dyZWdhdGVBcmVhSUQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywKLSAgICAgezE0LCAxLCAxfX0sCi0gICAge29zcGZBcmVhQWdncmVnYXRlTHNkYlR5cGUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsCi0gICAgIHsxNCwgMSwgMn19LAotICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZU5ldCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDN9fSwKLSAgICB7b3NwZkFyZWFBZ2dyZWdhdGVNYXNrLCBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9vc3BmLCAzLAotICAgICB7MTQsIDEsIDR9fSwKLSAgICB7b3NwZkFyZWFBZ2dyZWdhdGVTdGF0dXMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLAotICAgICB7MTQsIDEsIDV9fSwKLSAgICB7b3NwZkFyZWFBZ2dyZWdhdGVFZmZlY3QsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDZ9fQorICAgIHtvc3BmUm91dGVySWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCAxfX0sCisgICAge29zcGZBZG1pblN0YXQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgMn19LAorICAgIHtvc3BmVmVyc2lvbk51bWJlciwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDN9fSwKKyAgICB7b3NwZkFyZWFCZHJSdHJTdGF0dXMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCA0fX0sCisgICAge29zcGZBU0JkclJ0clN0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCA1fX0sCisgICAge29zcGZFeHRlcm5Mc2FDb3VudCwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCA2fX0sCisgICAge29zcGZFeHRlcm5Mc2FDa3N1bVN1bSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDd9fSwKKyAgICB7b3NwZlRPU1N1cHBvcnQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgOH19LAorICAgIHtvc3BmT3JpZ2luYXRlTmV3THNhcywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDl9fSwKKyAgICB7b3NwZlJ4TmV3THNhcywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDEwLCAwfX0sCisgICAge29zcGZFeHRMc2RiTGltaXQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgMTF9fSwKKyAgICB7b3NwZk11bHRpY2FzdEV4dGVuc2lvbnMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgMTJ9fSwKKyAgICB7b3NwZkFyZWFJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MiwgMSwgMX19LAorICAgIHtvc3BmQXV0aFR5cGUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MiwgMSwgMn19LAorICAgIHtvc3BmSW1wb3J0QXNFeHRlcm4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MiwgMSwgM319LAorICAgIHtvc3BmU3BmUnVucywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezIsIDEsIDR9fSwKKyAgICB7b3NwZkFyZWFCZHJSdHJDb3VudCwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsyLCAxLCA1fX0sCisgICAge29zcGZBc0JkclJ0ckNvdW50LCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezIsIDEsIDZ9fSwKKyAgICB7b3NwZkFyZWFMc2FDb3VudCwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsyLCAxLCA3fX0sCisgICAge29zcGZBcmVhTHNhQ2tzdW1TdW0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsyLCAxLCA4fX0sCisgICAge29zcGZBcmVhU3VtbWFyeSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsyLCAxLCA5fX0sCisgICAge29zcGZBcmVhU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezIsIDEsIDEwfX0sCisgICAge29zcGZTdHViQXJlYUlkLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHszLCAxLCAxfX0sCisgICAge29zcGZTdHViVE9TLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MywgMSwgMn19LAorICAgIHtvc3BmU3R1Yk1ldHJpYywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHszLCAxLCAzfX0sCisgICAge29zcGZTdHViU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezMsIDEsIDR9fSwKKyAgICB7b3NwZlN0dWJNZXRyaWNUeXBlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezMsIDEsIDV9fSwKKyAgICB7b3NwZkxzZGJBcmVhSWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezQsIDEsIDF9fSwKKyAgICB7b3NwZkxzZGJUeXBlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NCwgMSwgMn19LAorICAgIHtvc3BmTHNkYkxzaWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezQsIDEsIDN9fSwKKyAgICB7b3NwZkxzZGJSb3V0ZXJJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NCwgMSwgNH19LAorICAgIHtvc3BmTHNkYlNlcXVlbmNlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NCwgMSwgNX19LAorICAgIHtvc3BmTHNkYkFnZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezQsIDEsIDZ9fSwKKyAgICB7b3NwZkxzZGJDaGVja3N1bSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezQsIDEsIDd9fSwKKyAgICB7b3NwZkxzZGJBZHZlcnRpc2VtZW50LCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs0LCAxLCA4fX0sCisgICAge29zcGZBcmVhUmFuZ2VBcmVhSWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezUsIDEsIDF9fSwKKyAgICB7b3NwZkFyZWFSYW5nZU5ldCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NSwgMSwgMn19LAorICAgIHtvc3BmQXJlYVJhbmdlTWFzaywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezUsIDEsIDN9fSwKKyAgICB7b3NwZkFyZWFSYW5nZVN0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs1LCAxLCA0fX0sCisgICAge29zcGZBcmVhUmFuZ2VFZmZlY3QsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NSwgMSwgNX19LAorICAgIHtvc3BmSG9zdElwQWRkcmVzcywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NiwgMSwgMX19LAorICAgIHtvc3BmSG9zdFRPUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezYsIDEsIDJ9fSwKKyAgICB7b3NwZkhvc3RNZXRyaWMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NiwgMSwgM319LAorICAgIHtvc3BmSG9zdFN0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs2LCAxLCA0fX0sCisgICAge29zcGZIb3N0QXJlYUlELCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs2LCAxLCA1fX0sCisgICAge29zcGZJZklwQWRkcmVzcywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgMX19LAorICAgIHtvc3BmQWRkcmVzc0xlc3NJZiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDJ9fSwKKyAgICB7b3NwZklmQXJlYUlkLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgM319LAorICAgIHtvc3BmSWZUeXBlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDR9fSwKKyAgICB7b3NwZklmQWRtaW5TdGF0LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDV9fSwKKyAgICB7b3NwZklmUnRyUHJpb3JpdHksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgNn19LAorICAgIHtvc3BmSWZUcmFuc2l0RGVsYXksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgN319LAorICAgIHtvc3BmSWZSZXRyYW5zSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgOH19LAorICAgIHtvc3BmSWZIZWxsb0ludGVydmFsLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDl9fSwKKyAgICB7b3NwZklmUnRyRGVhZEludGVydmFsLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDEwfX0sCisgICAge29zcGZJZlBvbGxJbnRlcnZhbCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCAxMX19LAorICAgIHtvc3BmSWZTdGF0ZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDEyfX0sCisgICAge29zcGZJZkRlc2lnbmF0ZWRSb3V0ZXIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDEzfX0sCisgICAge29zcGZJZkJhY2t1cERlc2lnbmF0ZWRSb3V0ZXIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDE0fX0sCisgICAge29zcGZJZkV2ZW50cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDE1fX0sCisgICAge29zcGZJZkF1dGhLZXksIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCAxNn19LAorICAgIHtvc3BmSWZTdGF0dXMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgMTd9fSwKKyAgICB7b3NwZklmTXVsdGljYXN0Rm9yd2FyZGluZywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCAxOH19LAorICAgIHtvc3BmSWZNZXRyaWNJcEFkZHJlc3MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezgsIDEsIDF9fSwKKyAgICB7b3NwZklmTWV0cmljQWRkcmVzc0xlc3NJZiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezgsIDEsIDJ9fSwKKyAgICB7b3NwZklmTWV0cmljVE9TLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7OCwgMSwgM319LAorICAgIHtvc3BmSWZNZXRyaWNWYWx1ZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs4LCAxLCA0fX0sCisgICAge29zcGZJZk1ldHJpY1N0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs4LCAxLCA1fX0sCisgICAge29zcGZWaXJ0SWZBcmVhSWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezksIDEsIDF9fSwKKyAgICB7b3NwZlZpcnRJZk5laWdoYm9yLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs5LCAxLCAyfX0sCisgICAge29zcGZWaXJ0SWZUcmFuc2l0RGVsYXksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgM319LAorICAgIHtvc3BmVmlydElmUmV0cmFuc0ludGVydmFsLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezksIDEsIDR9fSwKKyAgICB7b3NwZlZpcnRJZkhlbGxvSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgNX19LAorICAgIHtvc3BmVmlydElmUnRyRGVhZEludGVydmFsLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezksIDEsIDZ9fSwKKyAgICB7b3NwZlZpcnRJZlN0YXRlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgN319LAorICAgIHtvc3BmVmlydElmRXZlbnRzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgOH19LAorICAgIHtvc3BmVmlydElmQXV0aEtleSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezksIDEsIDl9fSwKKyAgICB7b3NwZlZpcnRJZlN0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs5LCAxLCAxMH19LAorICAgIHtvc3BmTmJySXBBZGRyLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMCwgMSwgMX19LAorICAgIHtvc3BmTmJyQWRkcmVzc0xlc3NJbmRleCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEwLCAxLCAyfX0sCisgICAge29zcGZOYnJSdHJJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDN9fSwKKyAgICB7b3NwZk5ick9wdGlvbnMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMCwgMSwgNH19LAorICAgIHtvc3BmTmJyUHJpb3JpdHksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDV9fSwKKyAgICB7b3NwZk5iclN0YXRlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDZ9fSwKKyAgICB7b3NwZk5ickV2ZW50cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEwLCAxLCA3fX0sCisgICAge29zcGZOYnJMc1JldHJhbnNRTGVuLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEwLCAxLCA4fX0sCisgICAge29zcGZOYm1hTmJyU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezEwLCAxLCA5fX0sCisgICAge29zcGZOYm1hTmJyUGVybWFuZW5jZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMCwgMSwgMTB9fSwKKyAgICB7b3NwZlZpcnROYnJBcmVhLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMSwgMSwgMX19LAorICAgIHtvc3BmVmlydE5iclJ0cklkLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMSwgMSwgMn19LAorICAgIHtvc3BmVmlydE5icklwQWRkciwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDN9fSwKKyAgICB7b3NwZlZpcnROYnJPcHRpb25zLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDR9fSwKKyAgICB7b3NwZlZpcnROYnJTdGF0ZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezExLCAxLCA1fX0sCisgICAge29zcGZWaXJ0TmJyRXZlbnRzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDZ9fSwKKyAgICB7b3NwZlZpcnROYnJMc1JldHJhbnNRTGVuLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezExLCAxLCA3fX0sCisgICAge29zcGZFeHRMc2RiVHlwZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEyLCAxLCAxfX0sCisgICAge29zcGZFeHRMc2RiTHNpZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDJ9fSwKKyAgICB7b3NwZkV4dExzZGJSb3V0ZXJJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDN9fSwKKyAgICB7b3NwZkV4dExzZGJTZXF1ZW5jZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEyLCAxLCA0fX0sCisgICAge29zcGZFeHRMc2RiQWdlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDV9fSwKKyAgICB7b3NwZkV4dExzZGJDaGVja3N1bSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEyLCAxLCA2fX0sCisgICAge29zcGZFeHRMc2RiQWR2ZXJ0aXNlbWVudCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDd9fSwKKyAgICB7b3NwZkFyZWFBZ2dyZWdhdGVBcmVhSUQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezE0LCAxLCAxfX0sCisgICAge29zcGZBcmVhQWdncmVnYXRlTHNkYlR5cGUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxNCwgMSwgMn19LAorICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZU5ldCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDN9fSwKKyAgICB7b3NwZkFyZWFBZ2dyZWdhdGVNYXNrLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDR9fSwKKyAgICB7b3NwZkFyZWFBZ2dyZWdhdGVTdGF0dXMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDV9fSwKKyAgICB7b3NwZkFyZWFBZ2dyZWdhdGVFZmZlY3QsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDZ9fQogfTsKIAotb2lkICAgICAgICAgICAgIG9zcGZfdmFyaWFibGVzX29pZFtdID0geyBNSUIsIDE0IH07CitvaWQgICAgICAgICAgICAgb3NwZl92YXJpYWJsZXNfb2lkW10gPSB7IE5FVFNOTVBfTUlCMl9PSUQsIDE0IH07CiAKIHZvaWQKIGluaXRfc25tcF9vc3BmKHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfcmlwMi5jIGIvYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX3JpcDIuYwppbmRleCBjNWIxMzY0Li5iOTg3YTA5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfcmlwMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmMKQEAgLTU3LDMxICs1Nyw1MyBAQAogZXh0ZXJuIHVfY2hhciAgIHNtdXhfdHlwZTsKIAogc3RydWN0IHZhcmlhYmxlMTMgcmlwMl92YXJpYWJsZXNbXSA9IHsKLSAgICB7UklQMkdMT0JBTFJPVVRFQ0hBTkdFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfcmlwMiwgMiwgezEsIDF9fSwKLSAgICB7UklQMkdMT0JBTFFVRVJJRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3JpcDIsIDIsIHsxLCAyfX0sCi0gICAge1JJUDJJRlNUQVRBRERSRVNTLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX3JpcDIsIDMsIHsyLCAxLCAxfX0sCi0gICAge1JJUDJJRlNUQVRSQ1ZCQURQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9yaXAyLCAzLCB7MiwgMSwgMn19LAotICAgIHtSSVAySUZTVEFUUkNWQkFEUk9VVEVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9yaXAyLCAzLCB7MiwgMSwgM319LAotICAgIHtSSVAySUZTVEFUU0VOVFVQREFURVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3JpcDIsIDMsIHsyLCAxLCA0fX0sCi0gICAge1JJUDJJRlNUQVRTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MiwgMSwgNX19LAotICAgIHtSSVAySUZDT05GQUREUkVTUywgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9yaXAyLCAzLCB7MywgMSwgMX19LAotICAgIHtSSVAySUZDT05GRE9NQUlOLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MywgMSwgMn19LAotICAgIHtSSVAySUZDT05GQVVUSFRZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MywgMSwgM319LAotICAgIHtSSVAySUZDT05GQVVUSEtFWSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfcmlwMiwgMywgezMsIDEsIDR9fSwKLSAgICB7UklQMklGQ09ORlNFTkQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MywgMSwgNX19LAotICAgIHtSSVAySUZDT05GUkVDRUlWRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3JpcDIsIDMsIHszLCAxLCA2fX0sCi0gICAge1JJUDJJRkNPTkZERUZBVUxUTUVUUklDLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfcmlwMiwgMywgezMsIDEsIDd9fSwKLSAgICB7UklQMklGQ09ORlNUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3JpcDIsIDMsIHszLCAxLCA4fX0sCi0gICAge1JJUDJJRkNPTkZTUkNBRERSRVNTLCBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MywgMSwgOX19LAotICAgIHtSSVAyUEVFUkFERFJFU1MsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfcmlwMiwgMywgezQsIDEsIDF9fSwKLSAgICB7UklQMlBFRVJET01BSU4sIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfcmlwMiwgMywgezQsIDEsIDJ9fSwKLSAgICB7UklQMlBFRVJMQVNUVVBEQVRFLCBBU05fVElNRVRJQ0tTLCBST05MWSwgdmFyX3JpcDIsIDMsIHs0LCAxLCAzfX0sCi0gICAge1JJUDJQRUVSVkVSU0lPTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfcmlwMiwgMywgezQsIDEsIDR9fSwKLSAgICB7UklQMlBFRVJSQ1ZCQURQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9yaXAyLCAzLCB7NCwgMSwgNX19LAotICAgIHtSSVAyUEVFUlJDVkJBRFJPVVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfcmlwMiwgMywgezQsIDEsIDZ9fQorICAgIHtSSVAyR0xPQkFMUk9VVEVDSEFOR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAyLCB7MSwgMX19LAorICAgIHtSSVAyR0xPQkFMUVVFUklFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMiwgezEsIDJ9fSwKKyAgICB7UklQMklGU1RBVEFERFJFU1MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMywgezIsIDEsIDF9fSwKKyAgICB7UklQMklGU1RBVFJDVkJBRFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHsyLCAxLCAyfX0sCisgICAge1JJUDJJRlNUQVRSQ1ZCQURST1VURVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHsyLCAxLCAzfX0sCisgICAge1JJUDJJRlNUQVRTRU5UVVBEQVRFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMywgezIsIDEsIDR9fSwKKyAgICB7UklQMklGU1RBVFNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHsyLCAxLCA1fX0sCisgICAge1JJUDJJRkNPTkZBRERSRVNTLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCAxfX0sCisgICAge1JJUDJJRkNPTkZET01BSU4sIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCAyfX0sCisgICAge1JJUDJJRkNPTkZBVVRIVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCAzfX0sCisgICAge1JJUDJJRkNPTkZBVVRIS0VZLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9yaXAyLCAzLCB7MywgMSwgNH19LAorICAgIHtSSVAySUZDT05GU0VORCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCA1fX0sCisgICAge1JJUDJJRkNPTkZSRUNFSVZFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcmlwMiwgMywgezMsIDEsIDZ9fSwKKyAgICB7UklQMklGQ09ORkRFRkFVTFRNRVRSSUMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9yaXAyLCAzLCB7MywgMSwgN319LAorICAgIHtSSVAySUZDT05GU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcmlwMiwgMywgezMsIDEsIDh9fSwKKyAgICB7UklQMklGQ09ORlNSQ0FERFJFU1MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCA5fX0sCisgICAge1JJUDJQRUVSQUREUkVTUywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAzLCB7NCwgMSwgMX19LAorICAgIHtSSVAyUEVFUkRPTUFJTiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAzLCB7NCwgMSwgMn19LAorICAgIHtSSVAyUEVFUkxBU1RVUERBVEUsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMywgezQsIDEsIDN9fSwKKyAgICB7UklQMlBFRVJWRVJTSU9OLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAzLCB7NCwgMSwgNH19LAorICAgIHtSSVAyUEVFUlJDVkJBRFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHs0LCAxLCA1fX0sCisgICAge1JJUDJQRUVSUkNWQkFEUk9VVEVTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAzLCB7NCwgMSwgNn19CiB9OwogCi1vaWQgICAgICAgICAgICAgcmlwMl92YXJpYWJsZXNfb2lkW10gPSB7IE1JQiwgMjMgfTsKK29pZCAgICAgICAgICAgICByaXAyX3ZhcmlhYmxlc19vaWRbXSA9IHsgTkVUU05NUF9NSUIyX09JRCwgMjMgfTsKIAogdm9pZAogaW5pdF9zbm1wX3JpcDIodm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jCmluZGV4IGNiMDBmNjUuLmM4NTEyNWQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYwpAQCAtMjYsOSArMjYsOSBAQAogCiAjaW5jbHVkZSAic25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZFtdID0KK2NvbnN0IG9pZCAgICAgICBzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkW10gPQogICAgIHsgU05NUE5PVElGWUZJTFRFUlRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBpbnQgICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZCk7CiAKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9yZWdpc3RyYXRpb24gc25tcE5vdGlmeUZpbHRlclRhYmxlX3VzZXJfY29udGV4dDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmggYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5oCmluZGV4IDViZmViN2QuLjNmZjJmOTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaApAQCAtMzExLDggKzMxMSw4IEBACiAgICAgICAgICogc25tcE5vdGlmeUZpbHRlclRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAogICAgICAgICAoc25tcE5vdGlmeUZpbHRlclRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAic25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggMzQyZTA2NC4uM2M2YmNjNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0yNDMsNyArMjQzLDggQEAKICAgICAgICAgKytjb3VudDsKICAgICB9CiAKLSAgICBERUJVR01TR1QoKCJ2ZXJib3NlOnNubXBOb3RpZnlGaWx0ZXJUYWJsZTpzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX2xvYWQiLCAiaW5zZXJ0ZWQgJWQgcmVjb3Jkc1xuIiwgY291bnQpKTsKKyAgICBERUJVR01TR1QoKCJ2ZXJib3NlOnNubXBOb3RpZnlGaWx0ZXJUYWJsZTpzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgImluc2VydGVkICUiIE5FVFNOTVBfUFJJeiAidSByZWNvcmRzXG4iLCBjb3VudCkpOwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX2xvYWQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggNDhmM2U3ZS4uOWY2NGI0NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMKQEAgLTc3NCw2ICs3NzQsNyBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9wb3N0X3JlcXVlc3QgKi8KIAorCiAvKioKICAqIEBpbnRlcm5hbAogICogd3JhcHBlcgpAQCAtMjA0MSw3ICsyMDQyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9BUFBUWVBFKTsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqYyA9IChuZXRzbm1wX2NvbnRhaW5lciAqKSBjbGllbnRhcmc7CiAKLSAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6c25tcE5vdGlmeUZpbHRlclRhYmxlOl9zbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX3NhdmVfcm93cyIsICJzYXZpbmcgJWQgcm93c1xuIiwgQ09OVEFJTkVSX1NJWkUoYykpKTsKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6c25tcE5vdGlmeUZpbHRlclRhYmxlOiIKKyAgICAgICAgICAgICAgICAiX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfc2F2ZV9yb3dzIiwKKyAgICAgICAgICAgICAgICAic2F2aW5nICUiIE5FVFNOTVBfUFJJeiAidSByb3dzXG4iLCBDT05UQUlORVJfU0laRShjKSkpOwogCiAgICAgcmVhZF9jb25maWdfc3RvcmUoKGNoYXIgKikgdHlwZSwgc2VwKTsKICAgICByZWFkX2NvbmZpZ19zdG9yZSgoY2hhciAqKSB0eXBlLCBidWYpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlLmMKaW5kZXggMDVkODMxMS4uNTAxMDE5NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZS5jCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJ1c21ESFVzZXJLZXlUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIHVzbURIVXNlcktleVRhYmxlX29pZFtdID0geyBVU01ESFVTRVJLRVlUQUJMRV9PSUQgfTsKLWludCAgICAgICAgICAgICB1c21ESFVzZXJLZXlUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgdXNtREhVc2VyS2V5VGFibGVfb2lkW10gPSB7IFVTTURIVVNFUktFWVRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIHVzbURIVXNlcktleVRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgodXNtREhVc2VyS2V5VGFibGVfb2lkKTsKIAogdXNtREhVc2VyS2V5VGFibGVfcmVnaXN0cmF0aW9uIHVzbURIVXNlcktleVRhYmxlX3VzZXJfY29udGV4dDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZS5oCmluZGV4IGUyMGQ1YmMuLmIzNDNkNzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGUuaApAQCAtMTk5LDggKzE5OSw4IEBACiAgICAgICAgICp1c21ESFVzZXJLZXlUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKHVzbURIVXNlcktleVRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIHVzbURIVXNlcktleVRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICB1c21ESFVzZXJLZXlUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgdXNtREhVc2VyS2V5VGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIHVzbURIVXNlcktleVRhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJ1c21ESFVzZXJLZXlUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jCmluZGV4IDRjYTI5ODcuLmQ1OTk4ZjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYwpAQCAtMTAsMjEgKzEwLDI3IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgotI2luY2x1ZGUgIm1pYklJL3N5c09SVGFibGUuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAic25tcEVuZ2luZS5oIgogCiBzdHJ1Y3QgdmFyaWFibGUyIHNubXBFbmdpbmVfdmFyaWFibGVzW10gPSB7Ci0gICAge1NOTVBFTkdJTkVJRCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9zbm1wRW5naW5lLCAxLCB7MX19LAorICAgIHtTTk1QRU5HSU5FSUQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfc25tcEVuZ2luZSwgMSwgezF9fSwKICNpZmRlZiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUKLSAgICB7U05NUEVOR0lORUJPT1RTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfc25tcEVuZ2luZSwgMSwgezJ9fSwKLSAgICB7U05NUEVOR0lORVRJTUUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9zbm1wRW5naW5lLCAxLCB7M319LAorICAgIHtTTk1QRU5HSU5FQk9PVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7Mn19LAorICAgIHtTTk1QRU5HSU5FVElNRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3NubXBFbmdpbmUsIDEsIHszfX0sCiAjZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICFORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUgKi8KLSAgICB7U05NUEVOR0lORUJPT1RTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9zbm1wRW5naW5lLCAxLCB7Mn19LAotICAgIHtTTk1QRU5HSU5FVElNRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfc25tcEVuZ2luZSwgMSwgezN9fSwKKyAgICB7U05NUEVOR0lORUJPT1RTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7Mn19LAorICAgIHtTTk1QRU5HSU5FVElNRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfc25tcEVuZ2luZSwgMSwgezN9fSwKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFICovCi0gICAge1NOTVBFTkdJTkVNQVhNRVNTQUdFU0laRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfc25tcEVuZ2luZSwgMSwgezR9fSwKKyAgICB7U05NUEVOR0lORU1BWE1FU1NBR0VTSVpFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7NH19LAogfTsKIAogLyoKQEAgLTU2LDEwICs2Miw4IEBACiB2b2lkCiBpbml0X3NubXBFbmdpbmUodm9pZCkKIHsKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQotICAgIHN0YXRpYyBvaWQgICAgICByZWdbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTAsIDMsIDEsIDEgfTsKLSAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKHJlZywgMTAsICJUaGUgU05NUCBNYW5hZ2VtZW50IEFyY2hpdGVjdHVyZSBNSUIuIik7Ci0jZW5kaWYKKyAgICBvaWQgICAgICByZWdbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTAsIDMsIDEsIDEgfTsKKyAgICBSRUdJU1RFUl9TWVNPUl9FTlRSWShyZWcsICJUaGUgU05NUCBNYW5hZ2VtZW50IEFyY2hpdGVjdHVyZSBNSUIuIik7CiAgICAgcmVnaXN0ZXJfc25tcEVuZ2luZV9zY2FsYXJzKCk7CiB9CiAKQEAgLTg1LDExICs4OSwxMSBAQAogICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKICAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBlbmdpbmVJRFtTTk1QX01BWEJVRl07CiAKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsgICAgICAgICAgLyogYXNzdW1lIGl0IGlzbnQgd3JpdGFibGUgZm9yIHRoZSB0aW1lIGJlaW5nICovCisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsgICAgLyogYXNzdW1lIGl0IGlzbnQgd3JpdGFibGUgZm9yIHRoZSB0aW1lIGJlaW5nICovCiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXQpOyAgICAgICAgLyogYXNzdW1lIGFuIGludGVnZXIgYW5kIGNoYW5nZSBsYXRlciBpZiBub3QgKi8KIAogICAgIGlmIChoZWFkZXJfZ2VuZXJpYyh2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwgdmFyX2xlbiwgd3JpdGVfbWV0aG9kKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKICAgICAgKiB0aGlzIGlzIHdoZXJlIHdlIGRvIHRoZSB2YWx1ZSBhc3NpZ25tZW50cyBmb3IgdGhlIG1pYiByZXN1bHRzLiAKQEAgLTEyNSw3ICsxMjksNyBAQAogICAgICAgICBERUJVR01TR1RMKCgic25tcGQiLCAidW5rbm93biBzdWItaWQgJWQgaW4gdmFyX3NubXBFbmdpbmVcbiIsCiAgICAgICAgICAgICAgICAgICAgIHZwLT5tYWdpYykpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmgKaW5kZXggMzQzZWVhYS4uYjYyYTIyMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5oCkBAIC0xMCwxMCArMTAsMTAgQEAKICNkZWZpbmUgX01JQkdST1VQX1NOTVBFTkdJTkVfSAogCiAvKgotICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGFuZCBjaGVja21pYiBmcm9tIHRoZSB1dGlsX2Z1bmNzIG1vZHVsZSAKKyAqIHdlIHVzZSBoZWFkZXJfZ2VuZXJpYyBmcm9tIHRoZSB1dGlsX2Z1bmNzIG1vZHVsZQogICovCiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQogY29uZmlnX2FkZF9taWIoU05NUC1GUkFNRVdPUkstTUlCKQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuYyBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuYwppbmRleCBjN2VmYmM4Li4zNzM0YWNkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5jCkBAIC0xMCwxNyArMTAsMTkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CiAKLSNpbmNsdWRlICJtaWJJSS9zeXNPUlRhYmxlLmgiCiAjaW5jbHVkZSAic25tcE1QRFN0YXRzLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKIAogCiBzdHJ1Y3QgdmFyaWFibGUyIHNubXBNUERTdGF0c192YXJpYWJsZXNbXSA9IHsKLSAgICB7U05NUFVOS05PV05TRUNVUklUWU1PREVMUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcE1QRFN0YXRzLCAxLAotICAgICB7MX19LAotICAgIHtTTk1QSU5WQUxJRE1TR1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXBNUERTdGF0cywgMSwgezJ9fSwKLSAgICB7U05NUFVOS05PV05QRFVIQU5ETEVSUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcE1QRFN0YXRzLCAxLCB7M319LAorICAgIHtTTk1QVU5LTk9XTlNFQ1VSSVRZTU9ERUxTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wTVBEU3RhdHMsIDEsIHsxfX0sCisgICAge1NOTVBJTlZBTElETVNHUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfc25tcE1QRFN0YXRzLCAxLCB7Mn19LAorICAgIHtTTk1QVU5LTk9XTlBEVUhBTkRMRVJTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wTVBEU3RhdHMsIDEsIHszfX0sCiB9OwogCiAvKgpAQCAtMzIsMTIgKzM0LDkgQEAKIHZvaWQKIGluaXRfc25tcE1QRFN0YXRzKHZvaWQpCiB7Ci0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKICAgICBzdGF0aWMgb2lkICAgICAgcmVnW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDExLCAzLCAxLCAxIH07Ci0gICAgcmVnaXN0ZXJfc3lzT1JUYWJsZShyZWcsIDEwLAotICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBNSUIgZm9yIE1lc3NhZ2UgUHJvY2Vzc2luZyBhbmQgRGlzcGF0Y2hpbmcuIik7Ci0jZW5kaWYKLQorICAgIFJFR0lTVEVSX1NZU09SX0VOVFJZKHJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIE1JQiBmb3IgTWVzc2FnZSBQcm9jZXNzaW5nIGFuZCBEaXNwYXRjaGluZy4iKTsKICAgICBSRUdJU1RFUl9NSUIoInNubXB2My9zbm1wTVBEU3RhdHMiLCBzbm1wTVBEU3RhdHNfdmFyaWFibGVzLCB2YXJpYWJsZTIsCiAgICAgICAgICAgICAgICAgIHNubXBNUERTdGF0c192YXJpYWJsZXNfb2lkKTsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuaAppbmRleCBkMTdjMzcxLi40MWVhYjFkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5oCkBAIC04LDEwICs4LDExIEBACiAjZGVmaW5lIF9NSUJHUk9VUF9TTk1QTVBEU1RBVFNfSAogCiAvKgotICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGFuZCBjaGVja21pYiBmcm9tIHRoZSB1dGlsX2Z1bmNzIG1vZHVsZSAKKyAqIHdlIHVzZSBoZWFkZXJfZ2VuZXJpYyBmcm9tIHRoZSB1dGlsX2Z1bmNzIG1vZHVsZSAKICAqLwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKK2NvbmZpZ19leGNsdWRlKHNubXB2My9zbm1wTVBEU3RhdHNfNV81KQogY29uZmlnX2FkZF9taWIoU05NUC1NUEQtTUlCKQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMmE5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5jCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBzbm1wTVBEU3RhdHMuYzogdGFsbGllcyBlcnJvcnMgZm9yIFNOTVB2MyBtZXNzYWdlIHByb2Nlc3NpbmcuCisgKi8KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KKworI2luY2x1ZGUgInNubXBNUERTdGF0c181XzUuaCIKKworI2luY2x1ZGUgPHV0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaD4KKworI2RlZmluZSBzbm1wTVBETUlCIDEsIDMsIDYsIDEsIDYsIDMsIDExCisjZGVmaW5lIHNubXBNUERNSUJPYmplY3RzIHNubXBNUERNSUIsIDIKKyNkZWZpbmUgc25tcE1QRE1JQkNvbXBsaWFuY2VzIHNubXBNUERNSUIsIDMsIDEKKworc3RhdGljIG9pZCBzbm1wTVBEU3RhdHNbXSA9IHsgc25tcE1QRE1JQk9iamVjdHMsIDEgfTsKKworc3RhdGljIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24qIHNubXBNUERTdGF0c19yZWcgPSBOVUxMOworc3RhdGljIG9pZCBzbm1wTVBEQ29tcGxpYW5jZVtdID0geyBzbm1wTVBETUlCQ29tcGxpYW5jZXMsIDEgfTsKKwordm9pZAoraW5pdF9zbm1wTVBEU3RhdHNfNV81KHZvaWQpCit7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiogcyA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgInNubXBNUERTdGF0cyIsIE5VTEwsIHNubXBNUERTdGF0cywgT0lEX0xFTkdUSChzbm1wTVBEU3RhdHMpLAorICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworICAgIGlmIChzICYmCisJTkVUU05NUF9SRUdJU1RFUl9TVEFUSVNUSUNfSEFORExFUihzLCAxLCBNUEQpID09IE1JQl9SRUdJU1RFUkVEX09LKSB7CisgICAgICAgIFJFR0lTVEVSX1NZU09SX0VOVFJZKHNubXBNUERDb21wbGlhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIE1JQiBmb3IgTWVzc2FnZSBQcm9jZXNzaW5nIGFuZCBEaXNwYXRjaGluZy4iKTsKKyAgICAgICAgc25tcE1QRFN0YXRzX3JlZyA9IHM7CisgICAgfQorfQorCit2b2lkCitzaHV0ZG93bl9zbm1wTVBEU3RhdHNfNV81KHZvaWQpCit7CisgICAgVU5SRUdJU1RFUl9TWVNPUl9FTlRSWShzbm1wTVBEQ29tcGxpYW5jZSk7CisgICAgaWYgKHNubXBNUERTdGF0c19yZWcpIHsKKyAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIoc25tcE1QRFN0YXRzX3JlZyk7CisgICAgICAgIHNubXBNUERTdGF0c19yZWcgPSBOVUxMOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmggYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZGEwM2EKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oCkBAIC0wLDAgKzEsMTEgQEAKKyNpZm5kZWYgX01JQkdST1VQX1NOTVBNUERTVEFUU19ICisjZGVmaW5lIF9NSUJHUk9VUF9TTk1QTVBEU1RBVFNfSAorCitjb25maWdfcmVxdWlyZSh1dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljKQorY29uZmlnX2V4Y2x1ZGUoc25tcHYzL3NubXBNUERTdGF0cykKK2NvbmZpZ19hZGRfbWliKFNOTVAtTVBELU1JQikKKwordm9pZCBpbml0X3NubXBNUERTdGF0c181XzUodm9pZCk7Cit2b2lkIHNodXRkb3duX3NubXBNUERTdGF0c181XzUodm9pZCk7CisKKyNlbmRpZiAvKiBfTUlCR1JPVVBfU05NUE1QRFNUQVRTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKaW5kZXggZDgxZTEyNy4uNzQ1MWZlNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKQEAgLTExLDE5ICsxMSwyNCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKLSNpbmNsdWRlICJtaWJJSS9zeXNPUlRhYmxlLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInVzbVN0YXRzLmgiCiAKIHN0cnVjdCB2YXJpYWJsZTIgdXNtU3RhdHNfdmFyaWFibGVzW10gPSB7Ci0gICAge1VTTVNUQVRTVU5TVVBQT1JURURTRUNMRVZFTFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3VzbVN0YXRzLCAxLAotICAgICB7MX19LAotICAgIHtVU01TVEFUU05PVElOVElNRVdJTkRPV1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3VzbVN0YXRzLCAxLCB7Mn19LAotICAgIHtVU01TVEFUU1VOS05PV05VU0VSTkFNRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3VzbVN0YXRzLCAxLCB7M319LAotICAgIHtVU01TVEFUU1VOS05PV05FTkdJTkVJRFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3VzbVN0YXRzLCAxLCB7NH19LAotICAgIHtVU01TVEFUU1dST05HRElHRVNUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfdXNtU3RhdHMsIDEsIHs1fX0sCi0gICAge1VTTVNUQVRTREVDUllQVElPTkVSUk9SUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfdXNtU3RhdHMsIDEsIHs2fX0sCisgICAge1VTTVNUQVRTVU5TVVBQT1JURURTRUNMRVZFTFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3VzbVN0YXRzLCAxLCB7MX19LAorICAgIHtVU01TVEFUU05PVElOVElNRVdJTkRPV1MsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3VzbVN0YXRzLCAxLCB7Mn19LAorICAgIHtVU01TVEFUU1VOS05PV05VU0VSTkFNRVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3VzbVN0YXRzLCAxLCB7M319LAorICAgIHtVU01TVEFUU1VOS05PV05FTkdJTkVJRFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3VzbVN0YXRzLCAxLCB7NH19LAorICAgIHtVU01TVEFUU1dST05HRElHRVNUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdXNtU3RhdHMsIDEsIHs1fX0sCisgICAge1VTTVNUQVRTREVDUllQVElPTkVSUk9SUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdXNtU3RhdHMsIDEsIHs2fX0sCiB9OwogCiAvKgpAQCAtMzUsMTIgKzQwLDEwIEBACiB2b2lkCiBpbml0X3VzbVN0YXRzKHZvaWQpCiB7Ci0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKICAgICBzdGF0aWMgb2lkICAgICAgcmVnW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDE1LCAyLCAxLCAxIH07Ci0gICAgcmVnaXN0ZXJfc3lzT1JUYWJsZShyZWcsIDEwLAotICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBtYW5hZ2VtZW50IGluZm9ybWF0aW9uIGRlZmluaXRpb25zIGZvciB0aGUgU05NUCBVc2VyLWJhc2VkIFNlY3VyaXR5IE1vZGVsLiIpOwotI2VuZGlmCi0KKyAgICBSRUdJU1RFUl9TWVNPUl9FTlRSWShyZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBtYW5hZ2VtZW50IGluZm9ybWF0aW9uIGRlZmluaXRpb25zIGZvciB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJTTk1QIFVzZXItYmFzZWQgU2VjdXJpdHkgTW9kZWwuIik7CiAgICAgUkVHSVNURVJfTUlCKCJzbm1wdjMvdXNtU3RhdHMiLCB1c21TdGF0c192YXJpYWJsZXMsIHZhcmlhYmxlMiwKICAgICAgICAgICAgICAgICAgdXNtU3RhdHNfdmFyaWFibGVzX29pZCk7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5oCmluZGV4IDcxODhlMWEuLjU2ODUzODEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5oCkBAIC05LDEwICs5LDExIEBACiAjZGVmaW5lIF9NSUJHUk9VUF9VU01TVEFUU19ICiAKIC8qCi0gKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgYW5kIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAorICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAogICovCiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorY29uZmlnX2V4Y2x1ZGUoc25tcHYzL3VzbVN0YXRzXzVfNSkKIGNvbmZpZ19hZGRfbWliKFNOTVAtVVNFUi1CQVNFRC1TTS1NSUIpCiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNDhhZTcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIHVzbVN0YXRzLmM6IGltcGxlbWVudHMgdGhlIHVzbVN0YXRzIHBvcnRpb24gb2YgdGhlIFNOTVAtVVNFUi1CQVNFRC1TTS1NSUIKKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgorCisjaW5jbHVkZSAidXNtU3RhdHNfNV81LmgiCisKKyNpbmNsdWRlIDx1dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmg+CisKKyNkZWZpbmUgc25tcFVzbU1JQiAxLCAzLCA2LCAxLCA2LCAzLCAxNQorI2RlZmluZSB1c21NSUJDb21wbGlhbmNlcyBzbm1wVXNtTUlCLCAyLCAxCisKK3N0YXRpYyBvaWQgdXNtU3RhdHNbXSA9IHsgc25tcFVzbU1JQiwgMSwgMSB9OworCitzdGF0aWMgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiogdXNtU3RhdHNfcmVnID0gTlVMTDsKK3N0YXRpYyBvaWQgdXNtTUlCQ29tcGxpYW5jZVtdID0geyB1c21NSUJDb21wbGlhbmNlcywgMSB9OworCit2b2lkCitpbml0X3VzbVN0YXRzXzVfNSh2b2lkKQoreworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24qIHMgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICJ1c21TdGF0cyIsIE5VTEwsIHVzbVN0YXRzLCBPSURfTEVOR1RIKHVzbVN0YXRzKSwKKyAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAocyAmJgorCU5FVFNOTVBfUkVHSVNURVJfU1RBVElTVElDX0hBTkRMRVIocywgMSwgVVNNKSA9PSBNSUJfUkVHSVNURVJFRF9PSykgeworICAgICAgICBSRUdJU1RFUl9TWVNPUl9FTlRSWSh1c21NSUJDb21wbGlhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gZGVmaW5pdGlvbnMgZm9yIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTTk1QIFVzZXItYmFzZWQgU2VjdXJpdHkgTW9kZWwuIik7CisgICAgICAgIHVzbVN0YXRzX3JlZyA9IHM7CisgICAgfQorfQorCit2b2lkCitzaHV0ZG93bl91c21TdGF0c181XzUodm9pZCkKK3sKKyAgICBVTlJFR0lTVEVSX1NZU09SX0VOVFJZKHVzbU1JQkNvbXBsaWFuY2UpOworICAgIGlmICh1c21TdGF0c19yZWcpIHsKKyAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIodXNtU3RhdHNfcmVnKTsKKyAgICAgICAgdXNtU3RhdHNfcmVnID0gTlVMTDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmggYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZjOWY3NgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaApAQCAtMCwwICsxLDExIEBACisjaWZuZGVmIF9NSUJHUk9VUF9VU01TVEFUU19ICisjZGVmaW5lIF9NSUJHUk9VUF9VU01TVEFUU19ICisKK2NvbmZpZ19yZXF1aXJlKHV0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMpCitjb25maWdfZXhjbHVkZShzbm1wdjMvdXNtU3RhdHMpCitjb25maWdfYWRkX21pYihTTk1QLVVTRVItQkFTRUQtU00tTUlCKQorCit2b2lkIGluaXRfdXNtU3RhdHNfNV81KHZvaWQpOwordm9pZCBzaHV0ZG93bl91c21TdGF0c181XzUodm9pZCk7CisKKyNlbmRpZiAvKiBfTUlCR1JPVVBfVVNNU1RBVFNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMKaW5kZXggMGViMGRhYy4uMjY2YTYzYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jCkBAIC0xOCwzMCArMTgsMzYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInVzbVVzZXIuaCIKIAogaW50IHVzbVN0YXR1c0NoZWNrKHN0cnVjdCB1c21Vc2VyICp1cHRyKTsKIAogc3RydWN0IHZhcmlhYmxlNCB1c21Vc2VyX3ZhcmlhYmxlc1tdID0gewotICAgIHtVU01VU0VSU1BJTkxPQ0ssIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl91c21Vc2VyLCAxLCB7MX19LAotICAgIHtVU01VU0VSU0VDVVJJVFlOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCAzfX0sCi0gICAge1VTTVVTRVJDTE9ORUZST00sIEFTTl9PQkpFQ1RfSUQsIFJXUklURSwgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCA0fX0sCi0gICAge1VTTVVTRVJBVVRIUFJPVE9DT0wsIEFTTl9PQkpFQ1RfSUQsIFJXUklURSwgdmFyX3VzbVVzZXIsIDMsCi0gICAgIHsyLCAxLCA1fX0sCi0gICAge1VTTVVTRVJBVVRIS0VZQ0hBTkdFLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl91c21Vc2VyLCAzLAotICAgICB7MiwgMSwgNn19LAotICAgIHtVU01VU0VST1dOQVVUSEtFWUNIQU5HRSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywKLSAgICAgezIsIDEsIDd9fSwKLSAgICB7VVNNVVNFUlBSSVZQUk9UT0NPTCwgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywKLSAgICAgezIsIDEsIDh9fSwKLSAgICB7VVNNVVNFUlBSSVZLRVlDSEFOR0UsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3VzbVVzZXIsIDMsCi0gICAgIHsyLCAxLCA5fX0sCi0gICAge1VTTVVTRVJPV05QUklWS0VZQ0hBTkdFLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl91c21Vc2VyLCAzLAotICAgICB7MiwgMSwgMTB9fSwKLSAgICB7VVNNVVNFUlBVQkxJQywgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywgezIsIDEsIDExfX0sCi0gICAge1VTTVVTRVJTVE9SQUdFVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCAxMn19LAotICAgIHtVU01VU0VSU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywgezIsIDEsIDEzfX0sCisgICAge1VTTVVTRVJTUElOTE9DSywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VzbVVzZXIsIDEsIHsxfX0sCisgICAge1VTTVVTRVJTRUNVUklUWU5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDN9fSwKKyAgICB7VVNNVVNFUkNMT05FRlJPTSwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDR9fSwKKyAgICB7VVNNVVNFUkFVVEhQUk9UT0NPTCwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDV9fSwKKyAgICB7VVNNVVNFUkFVVEhLRVlDSEFOR0UsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCA2fX0sCisgICAge1VTTVVTRVJPV05BVVRIS0VZQ0hBTkdFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgN319LAorICAgIHtVU01VU0VSUFJJVlBST1RPQ09MLCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgOH19LAorICAgIHtVU01VU0VSUFJJVktFWUNIQU5HRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDl9fSwKKyAgICB7VVNNVVNFUk9XTlBSSVZLRVlDSEFOR0UsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCAxMH19LAorICAgIHtVU01VU0VSUFVCTElDLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgMTF9fSwKKyAgICB7VVNNVVNFUlNUT1JBR0VUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDEyfX0sCisgICAge1VTTVVTRVJTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgMTN9fSwKIAogfTsKIApAQCAtMzAxLDcgKzMwNyw3IEBACiAgICAgaWYgKCF2cCB8fCAhbmFtZSB8fCAhbGVuZ3RoIHx8ICF2YXJfbGVuKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICp3cml0ZV9tZXRob2QgPSAwOyAgICAgICAgICAvKiBhc3N1bWUgaXQgaXNudCB3cml0YWJsZSBmb3IgdGhlIHRpbWUgYmVpbmcgKi8KKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOyAgICAvKiBhc3N1bWUgaXQgaXNudCB3cml0YWJsZSBmb3IgdGhlIHRpbWUgYmVpbmcgKi8KICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldCk7ICAgICAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLwogCiAgICAgaWYgKHZwLT5tYWdpYyAhPSBVU01VU0VSU1BJTkxPQ0spIHsKQEAgLTMxNSw3ICszMjEsNyBAQAogICAgICAgICAgICAgKGV4YWN0ID09IDEgJiYgcnRlc3QgIT0gMCkpIHsKICAgICAgICAgICAgIGlmICh2YXJfbGVuKQogICAgICAgICAgICAgICAgICp2YXJfbGVuID0gMDsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgbWVtc2V0KG5ld25hbWUsIDAsIHNpemVvZihuZXduYW1lKSk7CiAgICAgICAgIGlmICgoKGludCkgKmxlbmd0aCkgPD0gKGludCkgdnAtPm5hbWVsZW4gfHwgcnRlc3QgPT0gLTEpIHsKQEAgLTM4NCw3ICszOTAsNyBAQAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGhlYWRlcl9nZW5lcmljKHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLCB3cml0ZV9tZXRob2QpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kaWYgLS0gdnAtPm1hZ2ljICE9IFVTTVVTRVJTUElOTE9DSyAqLwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKQEAgLTQ1OCw3ICs0NjQsNyBAQAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdXNtVXNlclB1YmxpYzsKICAgICAgICAgaWYgKHVwdHIpIHsKICAgICAgICAgICAgIGlmICh1cHRyLT51c2VyUHVibGljU3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oKGNoYXIgKikgdXB0ci0+dXNlclB1YmxpY1N0cmluZyk7CisgICAgICAgICAgICAgICAgKnZhcl9sZW4gPSB1cHRyLT51c2VyUHVibGljU3RyaW5nTGVuOwogICAgICAgICAgICAgICAgIHJldHVybiB1cHRyLT51c2VyUHVibGljU3RyaW5nOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKnN0cmluZyA9IDA7CkBAIC00ODgsNyArNDk0LDcgQEAKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBkIiwgInVua25vd24gc3ViLWlkICVkIGluIHZhcl91c21Vc2VyXG4iLAogICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIE5VTEw7CiAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIHZhcl91c21Vc2VyKCkgKi8KIApAQCAtMTE3NywxNCArMTE4MywxNSBAQAogICAgICAgICB9CiAgICAgICAgIGlmICh1cHRyLT51c2VyUHVibGljU3RyaW5nKQogICAgICAgICAgICAgZnJlZSh1cHRyLT51c2VyUHVibGljU3RyaW5nKTsKLSAgICAgICAgdXB0ci0+dXNlclB1YmxpY1N0cmluZyA9ICh1X2NoYXIgKikgbWFsbG9jKHZhcl92YWxfbGVuICsgMSk7CisgICAgICAgIHVwdHItPnVzZXJQdWJsaWNTdHJpbmcgPSAodV9jaGFyICopIG1hbGxvYyh2YXJfdmFsX2xlbik7CiAgICAgICAgIGlmICh1cHRyLT51c2VyUHVibGljU3RyaW5nID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgIH0KICAgICAgICAgbWVtY3B5KHVwdHItPnVzZXJQdWJsaWNTdHJpbmcsIHZhcl92YWwsIHZhcl92YWxfbGVuKTsKLSAgICAgICAgdXB0ci0+dXNlclB1YmxpY1N0cmluZ1t2YXJfdmFsX2xlbl0gPSAwOwotICAgICAgICBERUJVR01TRygoInVzbVVzZXIiLCAic2V0dGluZyBwdWJsaWMgc3RyaW5nOiAlZCAtICVzXG4iLAotICAgICAgICAgICAgICAgICAgdmFyX3ZhbF9sZW4sIHVwdHItPnVzZXJQdWJsaWNTdHJpbmcpKTsKKyAgICAgICAgdXB0ci0+dXNlclB1YmxpY1N0cmluZ0xlbiA9IHZhcl92YWxfbGVuOworICAgICAgICBERUJVR01TRygoInVzbVVzZXIiLCAic2V0dGluZyBwdWJsaWMgc3RyaW5nOiAlZCAtICIsIChpbnQpdmFyX3ZhbF9sZW4pKTsKKyAgICAgICAgREVCVUdNU0dIRVgoKCJ1c21Vc2VyIiwgdXB0ci0+dXNlclB1YmxpY1N0cmluZywgdmFyX3ZhbF9sZW4pKTsKKyAgICAgICAgREVCVUdNU0coKCJ1c21Vc2VyIiwgIlxuIikpOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIHdyaXRlX3VzbVVzZXJQdWJsaWMoKSAqLwpAQCAtMTI0MSw3ICsxMjQ4LDcgQEAKICAgICAgICAgICAgICAqIENvbnZlbnRpb24gYXBwbHkuICAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbVVzZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgImxvbmdfcmV0ICVkIHVwdHItPnN0ICVkIHVwdHItPnN0YXR1cyAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsb25nX3JldCAlbGQgdXB0ci0+c3QgJWQgdXB0ci0+c3RhdHVzICVkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ19yZXQsIHVwdHItPnVzZXJTdG9yYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVwdHItPnVzZXJTdGF0dXMpKTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmgKaW5kZXggZTkyMGIyMC4uMmFmZWNiNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oCkBAIC0xNSwxMCArMTUsMTAgQEAKICNkZWZpbmUgVVNNX0xFTkdUSF9PSURfTUFYCTY2CiAKIC8qCi0gKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgYW5kIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAorICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlCiAgKi8KIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiBjb25maWdfYWRkX21pYihTTk1QLVVTRVItQkFTRUQtU00tTUlCKQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaAppbmRleCA2MGY2NjZkLi44ZTVhMDE1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjNtaWJzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oCkBAIC03LDggKzcsOCBAQAogICovCiAKIGNvbmZpZ19yZXF1aXJlKHNubXB2My9zbm1wRW5naW5lKQotY29uZmlnX3JlcXVpcmUoc25tcHYzL3NubXBNUERTdGF0cykKLWNvbmZpZ19yZXF1aXJlKHNubXB2My91c21TdGF0cykKK2NvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKHNubXB2My9zbm1wTVBEU3RhdHMsIDUuNSwgc25tcHYzL3NubXBNUERTdGF0c181XzUpKQorY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgoc25tcHYzL3VzbVN0YXRzLCA1LjUsIHNubXB2My91c21TdGF0c181XzUpKQogY29uZmlnX3JlcXVpcmUoc25tcHYzL3VzbUNvbmYpCiBjb25maWdfcmVxdWlyZShzbm1wdjMvdXNtVXNlcikKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTlNNUFYzTUlCU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zdHJ1Y3QuaCBiL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCmluZGV4IDEwYjg0M2QuLmMzM2M5NmIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCkBAIC0xOSw3ICsxOSw3IEBACiAgICAgdW5zaWduZWQgbG9uZyAgIG1pYm9pZFtNSUJNQVhdOwogICAgIHNpemVfdCAgICAgICAgICBtaWJsZW47CiAgICAgaW50ICAgICAgICAgICAgIHBpZDsKLSNpZiBkZWZpbmVkKFdJTjMyKQorI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkIChtaW5ndzMyKQogICAgIEhBTkRMRSAgICAgICAgICB0aWQ7ICAgICAgICAgICAgICAgIC8qIFdJTjMyIHRocmVhZCAqLwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0LmggYi9hZ2VudC9taWJncm91cC90YXJnZXQuaAppbmRleCAzOWZhZGZlLi41OGM1YjRiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQuaAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQuaApAQCAtMSw1ICsxLDUgQEAKIGNvbmZpZ19yZXF1aXJlKHRhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5KQogY29uZmlnX3JlcXVpcmUodGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeSkKIGNvbmZpZ19yZXF1aXJlKHRhcmdldC90YXJnZXQpCi1jb25maWdfcmVxdWlyZSh0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzKQorY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgodGFyZ2V0L3RhcmdldF9jb3VudGVycywgNS41LCB0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNSkpCiBjb25maWdfYWRkX21pYihTTk1QLVRBUkdFVC1NSUIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYwppbmRleCBiYjczMDJkLi41MmY3N2I0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSAic25tcFRhcmdldEFkZHJFbnRyeS5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAKICNkZWZpbmUgc25tcFRhcmdldEFkZHJPSURMZW4gMTEgLypUaGlzIGlzIGJhc2UrY29sdW1uLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaS5lLiBldmVyeXRoaW5nIGJ1dCBpbmRleCAqLwpAQCAtMzIsNyArMzIsNyBAQAogICAgIHsgMSwgMywgNiwgMSwgNiwgMywgMTIsIDEsIDIsIDEsIDAgfTsKIAogc3RhdGljIHVuc2lnbmVkIGxvbmcgc25tcFRhcmdldFNwaW5Mb2NrID0gMDsKLXN0YXRpYyBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqYUFkZHJUYWJsZSA9IDA7CitzdGF0aWMgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmFBZGRyVGFibGUgPSBOVUxMOwogCiAKIC8qCkBAIC02NywyMSArNjcsMjEgQEAKICAgICBuZXdFbnRyeSA9IG1hbGxvYyhzaXplb2YoKm5ld0VudHJ5KSk7CiAKICAgICBpZiAobmV3RW50cnkpIHsKLSAgICAgICAgbmV3RW50cnktPm5hbWUgPSAwOworICAgICAgICBuZXdFbnRyeS0+bmFtZSA9IE5VTEw7CiAKICAgICAgICAgbmV3RW50cnktPnREb21haW5MZW4gPSAwOwotICAgICAgICBuZXdFbnRyeS0+dEFkZHJlc3MgPSAwOworICAgICAgICBuZXdFbnRyeS0+dEFkZHJlc3MgPSBOVUxMOwogCiAgICAgICAgIG5ld0VudHJ5LT50aW1lb3V0ID0gMTUwMDsKICAgICAgICAgbmV3RW50cnktPnJldHJ5Q291bnQgPSAzOwogCiAgICAgICAgIG5ld0VudHJ5LT50YWdMaXN0ID0gc3RyZHVwKCIiKTsKLSAgICAgICAgbmV3RW50cnktPnBhcmFtcyA9IDA7CisgICAgICAgIG5ld0VudHJ5LT5wYXJhbXMgPSBOVUxMOwogCiAgICAgICAgIG5ld0VudHJ5LT5zdG9yYWdlVHlwZSA9IFNOTVBfU1RPUkFHRV9OT05WT0xBVElMRTsKICAgICAgICAgbmV3RW50cnktPnJvd1N0YXR1cyA9IFNOTVBfUk9XX05PTkVYSVNURU5UOwogICAgICAgICBuZXdFbnRyeS0+c2VzcyA9IE5VTEw7Ci0gICAgICAgIG5ld0VudHJ5LT5uZXh0ID0gMDsKKyAgICAgICAgbmV3RW50cnktPm5leHQgPSBOVUxMOwogICAgIH0KIAogICAgIHJldHVybiBuZXdFbnRyeTsKQEAgLTE5NywxNCArMTk3LDE0IEBACiB7CiAgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKnRwdHI7CiAKLSAgICBpZiAoKHRwdHIgPSAqbGlzdFB0cikgPT0gMCkKKyAgICBpZiAoKHRwdHIgPSAqbGlzdFB0cikgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogICAgIGVsc2UgaWYgKHRwdHIgPT0gb2xkRW50cnkpIHsKICAgICAgICAgKmxpc3RQdHIgPSAoKmxpc3RQdHIpLT5uZXh0OwogICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2Rpc3Bvc2UodHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgewotICAgICAgICB3aGlsZSAodHB0ci0+bmV4dCAhPSAwKSB7CisgICAgICAgIHdoaWxlICh0cHRyLT5uZXh0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmICh0cHRyLT5uZXh0ID09IG9sZEVudHJ5KSB7CiAgICAgICAgICAgICAgICAgdHB0ci0+bmV4dCA9IHRwdHItPm5leHQtPm5leHQ7CiAgICAgICAgICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG9sZEVudHJ5KTsKQEAgLTIzNCw3ICsyMzQsNyBAQAogICAgICAqLwogICAgIG1lbWNweShuZXdOdW0sIGJhc2VOYW1lLCBiYXNlTmFtZUxlbiAqIHNpemVvZihvaWQpKTsKIAotICAgIGZvciAodGVtcF9zdHJ1Y3QgPSBhQWRkclRhYmxlOyB0ZW1wX3N0cnVjdCAhPSAwOworICAgIGZvciAodGVtcF9zdHJ1Y3QgPSBhQWRkclRhYmxlOyB0ZW1wX3N0cnVjdCAhPSBOVUxMOwogICAgICAgICAgdGVtcF9zdHJ1Y3QgPSB0ZW1wX3N0cnVjdC0+bmV4dCkgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgc3RybGVuKHRlbXBfc3RydWN0LT5uYW1lKTsgaSsrKSB7CiAgICAgICAgICAgICBuZXdOdW1bYmFzZU5hbWVMZW4gKyBpXSA9IHRlbXBfc3RydWN0LT5uYW1lW2ldOwpAQCAtMjUyLDcgKzI1Miw3IEBACiAgICAgICAgICAgICByZXR1cm4gdGVtcF9zdHJ1Y3Q7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuICgwKTsKKyAgICByZXR1cm4gTlVMTDsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VhcmNoX3NubXBUYXJnZXRBZGRyVGFibGUgICovCiAKIApAQCAtMjc4LDI3ICsyNzgsMjggQEAKICAqLwogCiBzdHJ1Y3QgdmFyaWFibGUyIHNubXBUYXJnZXRBZGRyRW50cnlfdmFyaWFibGVzW10gPSB7Ci0gICAge1NOTVBUQVJHRVRBRERSVERPTUFJTiwgQVNOX09CSkVDVF9JRCwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUQUREUlRET01BSU4sIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlRET01BSU5DT0xVTU59fSwKLSAgICB7U05NUFRBUkdFVEFERFJUQUREUkVTUywgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUQUREUlRBRERSRVNTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5LCAxLCB7U05NUFRBUkdFVEFERFJUQUREUkVTU0NPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUQUREUlRJTUVPVVQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRBRERSVElNRU9VVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlRJTUVPVVRDT0xVTU59fSwKLSAgICB7U05NUFRBUkdFVEFERFJSRVRSWUNPVU5ULCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUQUREUlJFVFJZQ09VTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5LCAxLCB7U05NUFRBUkdFVEFERFJSRVRSWUNPVU5UQ09MVU1OfX0sCi0gICAge1NOTVBUQVJHRVRBRERSVEFHTElTVCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUQUREUlRBR0xJU1QsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlRBR0xJU1RDT0xVTU59fSwKLSAgICB7U05NUFRBUkdFVEFERFJQQVJBTVMsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7U05NUFRBUkdFVEFERFJQQVJBTVMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlBBUkFNU0NPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUQUREUlNUT1JBR0VUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUQUREUlNUT1JBR0VUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldEFkZHJFbnRyeSwgMSwge1NOTVBUQVJHRVRBRERSU1RPUkFHRVRZUEVDT0xVTU59fSwKLSAgICB7U05NUFRBUkdFVEFERFJST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRBRERSUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldEFkZHJFbnRyeSwgMSwge1NOTVBUQVJHRVRBRERSUk9XU1RBVFVTQ09MVU1OfX0sCiAKIH07CiAKIHN0cnVjdCB2YXJpYWJsZTIgc25tcFRhcmdldFNwaW5Mb2NrX3ZhcltdID0gewotICAgIHtTTk1QVEFSR0VUU1BJTkxPQ0ssIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl90YXJnZXRTcGluTG9jaywgMSwgezF9fQorICAgIHtTTk1QVEFSR0VUU1BJTkxPQ0ssIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90YXJnZXRTcGluTG9jaywgMSwgezF9fQogfTsKIAogc3RhdGljIG9pZCAgICAgIHNubXBUYXJnZXRTcGluTG9ja19vaWRbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTIsIDEgfTsKQEAgLTMxMyw3ICszMTQsNyBAQAogdm9pZAogaW5pdF9zbm1wVGFyZ2V0QWRkckVudHJ5KHZvaWQpCiB7Ci0gICAgYUFkZHJUYWJsZSA9IDA7CisgICAgYUFkZHJUYWJsZSA9IE5VTEw7CiAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLCAiaW5pdFxuIikpOwogICAgIFJFR0lTVEVSX01JQigidGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkckVudHJ5X3ZhcmlhYmxlcywgdmFyaWFibGUyLApAQCAtMzIyLDcgKzMyMyw4IEBACiAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMiwgc25tcFRhcmdldFNwaW5Mb2NrX29pZCk7CiAKICAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigidGFyZ2V0QWRkciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcGRfcGFyc2VfY29uZmlnX3RhcmdldEFkZHIsIDAsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBkX3BhcnNlX2NvbmZpZ190YXJnZXRBZGRyLAorCQkJCSAgKHZvaWQgKCopKHZvaWQpKTAsIE5VTEwpOwogCiAgICAgLyoKICAgICAgKiB3ZSBuZWVkIHRvIGJlIGNhbGxlZCBiYWNrIGxhdGVyIApAQCAtMzM3LDcgKzMzOSw3IEBACiBzbm1wVGFyZ2V0QWRkcl9hZGROYW1lKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwgY2hhciAqY3B0cikKIHsKICAgICBzaXplX3QgICAgICAgICAgbGVuOwotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IG5vIG5hbWUgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtMzYyLDcgKzM2NCw3IEBACiB7CiAgICAgc2l6ZV90ICAgICAgICAgIGxlbiA9IDEyODsKIAotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IG5vIHREb21haW4gaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtMzkyLDcgKzM5NCw3IEBACiBzbm1wVGFyZ2V0QWRkcl9hZGRUQWRkcmVzcyhzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcHRyLCBzaXplX3QgbGVuKQogewotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IG5vIHRBZGRyZXNzIGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTQxOCw3ICs0MjAsNyBAQAogaW50CiBzbm1wVGFyZ2V0QWRkcl9hZGRUaW1lb3V0KHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwgY2hhciAqY3B0cikKIHsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIFRpbWVvdXQgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtNDQzLDcgKzQ0NSw3IEBACiBzbm1wVGFyZ2V0QWRkcl9hZGRSZXRyeUNvdW50KHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIFJldHJ5IENvdW50IGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTQ3MSw3ICs0NzMsNyBAQAogc25tcFRhcmdldEFkZHJfYWRkVGFnTGlzdChzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqZW50cnksIGNoYXIgKmNwdHIpCiB7CiAgICAgc2l6ZV90ICAgICAgICAgIGxlbjsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyB0YWcgbGlzdCBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC00OTYsNyArNDk4LDcgQEAKIHNubXBUYXJnZXRBZGRyX2FkZFBhcmFtcyhzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqZW50cnksIGNoYXIgKmNwdHIpCiB7CiAgICAgc2l6ZV90ICAgICAgICAgIGxlbjsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyBwYXJhbXMgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtNTIwLDE1ICs1MjIsMTUgQEAKIHNubXBUYXJnZXRBZGRyX2FkZFN0b3JhZ2VUeXBlKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwdHIpCiB7Ci0gICAgY2hhciAgICAgICAgICAgIGJ1ZmZbMTAyNF07Ci0KLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCi0gICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyBzdG9yYWdlIHR5cGUgaW4gY29uZmlnIHN0cmluZ1xuIikpOworICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbm8gc3RvcmFnZSB0eXBlIGluIGNvbmZpZyAiCisgICAgICAgICAgICAgICAgICAgICJzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKICAgICB9IGVsc2UgaWYgKCEoaXNkaWdpdCgqY3B0cikpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKLSAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IHN0b3JhZ2UgdHlwZSBpcyBub3QgYSBkaWdpdCBpbiBjb25maWcgc3RyaW5nXG4iKSk7CisgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBzdG9yYWdlIHR5cGUgaXMgbm90IGEgZGlnaXQgIgorICAgICAgICAgICAgICAgICAgICAiaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwogICAgIH0KICAgICAvKgpAQCAtNTQwLDE0ICs1NDIsMTMgQEAKICAgICAgICAgICAgICAoZW50cnktPnN0b3JhZ2VUeXBlICE9IFNOTVBfU1RPUkFHRV9OT05WT0xBVElMRSkgJiYKICAgICAgICAgICAgICAoZW50cnktPnN0b3JhZ2VUeXBlICE9IFNOTVBfU1RPUkFHRV9QRVJNQU5FTlQpICYmCiAgICAgICAgICAgICAgKGVudHJ5LT5zdG9yYWdlVHlwZSAhPSBTTk1QX1NUT1JBR0VfUkVBRE9OTFkpKSB7Ci0gICAgICAgIHNucHJpbnRmKGJ1ZmYsIHNpemVvZihidWZmKSwKLSAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogc3RvcmFnZSB0eXBlIG5vdCBhIHZhbGlkIHZhbHVlIG9mIG90aGVyKCVkKSwgdm9sYXRpbGUoJWQpLCBub252b2xhdGlsZSglZCksIHBlcm1hbmVudCglZCksIG9yIHJlYWRvbmx5KCVkKSBpbiBjb25maWcgc3RyaW5nLlxuIiwKLSAgICAgICAgICAgICAgICBTTk1QX1NUT1JBR0VfT1RIRVIsIFNOTVBfU1RPUkFHRV9WT0xBVElMRSwKLSAgICAgICAgICAgICAgICBTTk1QX1NUT1JBR0VfTk9OVk9MQVRJTEUsIFNOTVBfU1RPUkFHRV9QRVJNQU5FTlQsCi0gICAgICAgICAgICAgICAgU05NUF9TVE9SQUdFX1JFQURPTkxZKTsKLSAgICAgICAgYnVmZlsgc2l6ZW9mKGJ1ZmYpLTEgXSA9IDA7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwgYnVmZikpOwotCisJREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAorICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogc3RvcmFnZSB0eXBlIG5vdCBhIHZhbGlkICIKKyAgICAgICAgICAgICAgICAgICAgInZhbHVlIG9mIG90aGVyKCVkKSwgdm9sYXRpbGUoJWQpLCBub252b2xhdGlsZSglZCksICIKKyAgICAgICAgICAgICAgICAgICAgInBlcm1hbmVudCglZCksIG9yIHJlYWRvbmx5KCVkKSBpbiBjb25maWcgc3RyaW5nLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgU05NUF9TVE9SQUdFX09USEVSLCBTTk1QX1NUT1JBR0VfVk9MQVRJTEUsCisgICAgICAgICAgICAgICAgICAgIFNOTVBfU1RPUkFHRV9OT05WT0xBVElMRSwgU05NUF9TVE9SQUdFX1BFUk1BTkVOVCwKKyAgICAgICAgICAgICAgICAgICAgU05NUF9TVE9SQUdFX1JFQURPTkxZKSk7CiAgICAgICAgIHJldHVybiAoMCk7CiAgICAgfQogICAgIHJldHVybiAoMSk7CkBAIC01NTgsMTUgKzU1OSwxNSBAQAogc25tcFRhcmdldEFkZHJfYWRkUm93U3RhdHVzKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICBidWZmWzEwMjRdOwotCi0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAotICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbm8gUm93IFN0YXR1cyBpbiBjb25maWcgc3RyaW5nXG4iKSk7CisgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyBSb3cgU3RhdHVzIGluIGNvbmZpZyAiCisgICAgICAgICAgICAgICAgICAgICJzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKICAgICB9IGVsc2UgaWYgKCEoaXNkaWdpdCgqY3B0cikpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKLSAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IFJvdyBTdGF0dXMgaXMgbm90IGEgZGlnaXQgaW4gY29uZmlnIHN0cmluZ1xuIikpOworICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogUm93IFN0YXR1cyBpcyBub3QgYSBkaWdpdCBpbiAiCisgICAgICAgICAgICAgICAgICAgICJjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CiAgICAgfQogICAgIC8qCkBAIC01NzYsMTIgKzU3NywxMSBAQAogICAgICAgICAgICAgICAhPSBTTk1QX1JPV19BQ1RJVkUpICYmCiAgICAgICAgICAgICAgKGVudHJ5LT5yb3dTdGF0dXMgIT0gU05NUF9ST1dfTk9USU5TRVJWSUNFKSAmJgogICAgICAgICAgICAgIChlbnRyeS0+cm93U3RhdHVzICE9IFNOTVBfUk9XX05PVFJFQURZKSkgewotICAgICAgICBzbnByaW50ZihidWZmLCBzaXplb2YoYnVmZiksCi0gICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IFJvdyBTdGF0dXMgaXMgbm90IGEgdmFsaWQgdmFsdWUgb2YgYWN0aXZlKCVkKSwgbm90aW5zZXJ2aWNlKCVkKSwgb3Igbm90cmVhZHkoJWQpIGluIGNvbmZpZyBzdHJpbmcuXG4iLAotICAgICAgICAgICAgICAgIFNOTVBfUk9XX0FDVElWRSwgU05NUF9ST1dfTk9USU5TRVJWSUNFLCBTTk1QX1JPV19OT1RSRUFEWSk7Ci0gICAgICAgIGJ1ZmZbIHNpemVvZihidWZmKS0xIF0gPSAwOwotICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsIGJ1ZmYpKTsKLQorICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCisgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBSb3cgU3RhdHVzIGlzIG5vdCBhIHZhbGlkICIKKyAgICAgICAgICAgICAgICAgICAgInZhbHVlIG9mIGFjdGl2ZSglZCksIG5vdGluc2VydmljZSglZCksIG9yIG5vdHJlYWR5KCVkKSAiCisgICAgICAgICAgICAgICAgICAgICJpbiBjb25maWcgc3RyaW5nLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgU05NUF9ST1dfQUNUSVZFLCBTTk1QX1JPV19OT1RJTlNFUlZJQ0UsIFNOTVBfUk9XX05PVFJFQURZKSk7CiAgICAgICAgIHJldHVybiAoMCk7CiAgICAgfQogICAgIHJldHVybiAoMSk7CkBAIC02NjEsNyArNjYxLDcgQEAKICAgICAgICAgICAgIG5ld0VudHJ5LT50YWdMaXN0LCBuZXdFbnRyeS0+cGFyYW1zLCBuZXdFbnRyeS0+c3RvcmFnZVR5cGUsCiAgICAgICAgICAgICBuZXdFbnRyeS0+cm93U3RhdHVzKTsKICAgICBidWZmWyBzaXplb2YoYnVmZiktMSBdID0gMDsKLSAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsIGJ1ZmYpKTsKKyAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsICIlcyIsIGJ1ZmYpKTsKIAogICAgIHNubXBUYXJnZXRBZGRyVGFibGVfYWRkVG9MaXN0KG5ld0VudHJ5LCAmYUFkZHJUYWJsZSk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNubXBkX3BhcnNlX2NvbmZpZ190YXJnZXQgKi8KQEAgLTY4NSw4ICs2ODUsOCBAQAogICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdOwogICAgIGludCAgICAgICAgICAgICBpOwogCi0gICAgaWYgKChjdXJyX3N0cnVjdCA9IGFBZGRyVGFibGUpICE9IDApIHsKLSAgICAgICAgd2hpbGUgKGN1cnJfc3RydWN0ICE9IDApIHsKKyAgICBpZiAoKGN1cnJfc3RydWN0ID0gYUFkZHJUYWJsZSkgIT0gTlVMTCkgeworICAgICAgICB3aGlsZSAoY3Vycl9zdHJ1Y3QgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKChjdXJyX3N0cnVjdC0+c3RvcmFnZVR5cGUgPT0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFIHx8CiAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5zdG9yYWdlVHlwZSA9PSBTTk1QX1NUT1JBR0VfUEVSTUFORU5UKQogICAgICAgICAgICAgICAgICYmCkBAIC03OTIsOCArNzkyLDggQEAKICAgICAgKi8KICAgICBpZiAoKHRlbXBfc3RydWN0ID0gc2VhcmNoX3NubXBUYXJnZXRBZGRyVGFibGUodnAtPm5hbWUsIHZwLT5uYW1lbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0KSkgPT0gMCkgewotICAgICAgICByZXR1cm4gKDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdCkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyoKQEAgLTgwNSw3ICs4MDUsNyBAQAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBTTk1QVEFSR0VUQUREUlRET01BSU46CiAgICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+dERvbWFpbkxlbiA8PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gKDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGVtcF9zdHJ1Y3QtPnREb21haW5MZW47IGkrKykgewogICAgICAgICAgICAgICAgIG9iamlkW2ldID0gdGVtcF9zdHJ1Y3QtPnREb21haW5baV07CkBAIC04MTUsOCArODE1LDggQEAKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopIG9iamlkOwogCiAgICAgY2FzZSBTTk1QVEFSR0VUQUREUlRBRERSRVNTOgotICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPnRBZGRyZXNzID09IDApCi0gICAgICAgICAgICByZXR1cm4gKDApOworICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPnRBZGRyZXNzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgKnZhcl9sZW4gPSB0ZW1wX3N0cnVjdC0+dEFkZHJlc3NMZW47CiAgICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSB0ZW1wX3N0cnVjdC0+dEFkZHJlc3M7CiAKQEAgLTgzMCw3ICs4MzAsNyBAQAogCiAgICAgY2FzZSBTTk1QVEFSR0VUQUREUlRBR0xJU1Q6CiAgICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+dGFnTGlzdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBzdHJjcHkoc3RyaW5nLCB0ZW1wX3N0cnVjdC0+dGFnTGlzdCk7CisgICAgICAgICAgICBzdHJsY3B5KHN0cmluZywgdGVtcF9zdHJ1Y3QtPnRhZ0xpc3QsIHNpemVvZihzdHJpbmcpKTsKICAgICAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN0cmluZyk7CiAgICAgICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgc3RyaW5nOwogICAgICAgICB9IGVsc2UgewpAQCAtODM4LDkgKzgzOCw5IEBACiAgICAgICAgIH0KIAogICAgIGNhc2UgU05NUFRBUkdFVEFERFJQQVJBTVM6Ci0gICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+cGFyYW1zID09IDApCi0gICAgICAgICAgICByZXR1cm4gKDApOwotICAgICAgICBzdHJjcHkoc3RyaW5nLCB0ZW1wX3N0cnVjdC0+cGFyYW1zKTsKKyAgICAgICAgaWYgKHRlbXBfc3RydWN0LT5wYXJhbXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBzdHJsY3B5KHN0cmluZywgdGVtcF9zdHJ1Y3QtPnBhcmFtcywgc2l6ZW9mKHN0cmluZykpOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihzdHJpbmcpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgc3RyaW5nOwogCkBAIC04NTcsNyArODU3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgInVua25vd24gc3ViLWlkICVkIGluIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5XG4iLAogICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIE5VTEw7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5ICovCiAKIApAQCAtODkwLDcgKzg5MCw3IEBACiAgICAgICAgIGlmICgodGFyZ2V0ID0KICAgICAgICAgICAgICBzZWFyY2hfc25tcFRhcmdldEFkZHJUYWJsZShzbm1wVGFyZ2V0QWRkck9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkck9JRExlbiwgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZV9sZW4sIDEpKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWVfbGVuLCAxKSkgPT0gTlVMTCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlIHRvIHNubXBUYXJnZXRBZGRyVERvbWFpbjogQkFEIE9JRCFcbiIpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9JTkNPTlNJU1RFTlROQU1FOwpAQCAtOTc2LDcgKzk3Niw3IEBACiAgICAgICAgIGlmICgodGFyZ2V0ID0KICAgICAgICAgICAgICBzZWFyY2hfc25tcFRhcmdldEFkZHJUYWJsZShzbm1wVGFyZ2V0QWRkck9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkck9JRExlbiwgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZV9sZW4sIDEpKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWVfbGVuLCAxKSkgPT0gTlVMTCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlIHRvIHNubXBUYXJnZXRBZGRyVEFkZHJlc3M6IEJBRCBPSUQhXG4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfSU5DT05TSVNURU5UTkFNRTsKQEAgLTEwODIsNyArMTA4Miw3IEBACiAgICAgICAgIGlmICgodGVtcF9zdHJ1Y3QgPQogICAgICAgICAgICAgIHNlYXJjaF9zbm1wVGFyZ2V0QWRkclRhYmxlKHNubXBUYXJnZXRBZGRyT0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBUYXJnZXRBZGRyT0lETGVuLCBuYW1lLCAmbmFtZV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSkpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgPT0gTlVMTCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlIHRvIHNubXBUYXJnZXRBZGRyVGltZW91dCA6IEJBRCBPSURcbiIpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1NVQ0hOQU1FOwpAQCAtMTI5Niw3ICsxMjk2LDcgQEAKICAgICAgICAgaWYgKCh0YXJnZXQgPQogICAgICAgICAgICAgIHNlYXJjaF9zbm1wVGFyZ2V0QWRkclRhYmxlKHNubXBUYXJnZXRBZGRyT0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBUYXJnZXRBZGRyT0lETGVuLCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lX2xlbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZV9sZW4sIDEpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAid3JpdGUgdG8gc25tcFRhcmdldEFkZHJQYXJhbXM6IEJBRCBPSUQhXG4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfSU5DT05TSVNURU5UTkFNRTsKQEAgLTE1MDQsNyArMTUwNCw3IEBACiAgICAgICAgIGlmIChuYW1lX2xlbiA8IHNubXBUYXJnZXRBZGRyT0lETGVuICsgMSB8fAogICAgICAgICAgICAgbmFtZV9sZW4gPiBzbm1wVGFyZ2V0QWRkck9JRExlbiArIDMyKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsICJiYWQgaW5kZXggbGVuZ3RoICVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9sZW4gLSBzbm1wVGFyZ2V0QWRkck9JRExlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgKGludCkobmFtZV9sZW4gLSBzbm1wVGFyZ2V0QWRkck9JRExlbikpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmggYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCmluZGV4IGIxYjVhZDEuLjdlZDgzOGYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaApAQCAtMTAsMTAgKzEwLDEwIEBACiAjZGVmaW5lIF9NSUJHUk9VUF9TTk1QVEFSR0VUQUREUkVOVFJZX0gKIAogLyoKLSAqIHdlIHVzZSBoZWFkZXJfZ2VuZXJpYyBhbmQgY2hlY2ttaWIgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUgCisgKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUKICAqLwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIAogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYwppbmRleCAwNjkzNmIxLi4zOTY3YjgyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jCkBAIC0zMCw3ICszMCw3IEBACiBvaWQgICAgICAgICAgICAgc25tcFRhcmdldFBhcmFtc09JRFtzbm1wVGFyZ2V0UGFyYW1zT0lETGVuXSA9CiAgICAgeyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSwgMywgMSwgMCB9OwogCi1zdGF0aWMgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICphUFRhYmxlID0gMDsKK3N0YXRpYyBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmFQVGFibGUgPSBOVUxMOwogCiAKIC8qCkBAIC01MSwxNiArNTEsMTYgQEAKICAgICBuZXdFbnRyeSA9IChzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKikKICAgICAgICAgbWFsbG9jKHNpemVvZihzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QpKTsKIAotICAgIG5ld0VudHJ5LT5wYXJhbU5hbWUgPSAwOworICAgIG5ld0VudHJ5LT5wYXJhbU5hbWUgPSBOVUxMOwogICAgIG5ld0VudHJ5LT5tcE1vZGVsID0gLTE7CiAKICAgICBuZXdFbnRyeS0+c2VjTW9kZWwgPSAtMTsKLSAgICBuZXdFbnRyeS0+c2VjTmFtZSA9IDA7CisgICAgbmV3RW50cnktPnNlY05hbWUgPSBOVUxMOwogICAgIG5ld0VudHJ5LT5zZWNMZXZlbCA9IC0xOwogCiAgICAgbmV3RW50cnktPnN0b3JhZ2VUeXBlID0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFOwogICAgIG5ld0VudHJ5LT5yb3dTdGF0dXMgPSBTTk1QX1JPV19OT05FWElTVEVOVDsKLSAgICBuZXdFbnRyeS0+bmV4dCA9IDA7CisgICAgbmV3RW50cnktPm5leHQgPSBOVUxMOwogICAgIHJldHVybiBuZXdFbnRyeTsKIH0KIApAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIHNlYXJjaCB0aHJvdWdoIHRoZSBsaXN0IGZvciBhbiBlcXVhbCBvciBncmVhdGVyIE9JRCB2YWx1ZSAKICAgICAgICAgICovCi0gICAgICAgIHdoaWxlIChjdXJyX3N0cnVjdCAhPSAwKSB7CisgICAgICAgIHdoaWxlIChjdXJyX3N0cnVjdCAhPSBOVUxMKSB7CiAgICAgICAgICAgICBjdXJyT0lETGVuID0gc3RybGVuKGN1cnJfc3RydWN0LT5wYXJhbU5hbWUpOwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IChpbnQpIGN1cnJPSURMZW47IGkrKykgewogICAgICAgICAgICAgICAgIGN1cnJPSURbaV0gPSBjdXJyX3N0cnVjdC0+cGFyYW1OYW1lW2ldOwpAQCAtMTY4LDE0ICsxNjgsMTQgQEAKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKnRwdHI7CiAKLSAgICBpZiAoKHRwdHIgPSAqbGlzdFB0cikgPT0gMCkKKyAgICBpZiAoKHRwdHIgPSAqbGlzdFB0cikgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogICAgIGVsc2UgaWYgKHRwdHIgPT0gb2xkRW50cnkpIHsKICAgICAgICAgKmxpc3RQdHIgPSAoKmxpc3RQdHIpLT5uZXh0OwogICAgICAgICBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKHRwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKLSAgICAgICAgd2hpbGUgKHRwdHItPm5leHQgIT0gMCkgeworICAgICAgICB3aGlsZSAodHB0ci0+bmV4dCAhPSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAodHB0ci0+bmV4dCA9PSBvbGRFbnRyeSkgewogICAgICAgICAgICAgICAgIHRwdHItPm5leHQgPSB0cHRyLT5uZXh0LT5uZXh0OwogICAgICAgICAgICAgICAgIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2Uob2xkRW50cnkpOwpAQCAtMjA1LDcgKzIwNSw3IEBACiAgICAgICovCiAgICAgbWVtY3B5KG5ld051bSwgYmFzZU5hbWUsIGJhc2VOYW1lTGVuICogc2l6ZW9mKG9pZCkpOwogCi0gICAgZm9yICh0ZW1wX3N0cnVjdCA9IGFQVGFibGU7IHRlbXBfc3RydWN0ICE9IDA7CisgICAgZm9yICh0ZW1wX3N0cnVjdCA9IGFQVGFibGU7IHRlbXBfc3RydWN0ICE9IE5VTEw7CiAgICAgICAgICB0ZW1wX3N0cnVjdCA9IHRlbXBfc3RydWN0LT5uZXh0KSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBzdHJsZW4odGVtcF9zdHJ1Y3QtPnBhcmFtTmFtZSk7IGkrKykgewogICAgICAgICAgICAgbmV3TnVtW2Jhc2VOYW1lTGVuICsgaV0gPSB0ZW1wX3N0cnVjdC0+cGFyYW1OYW1lW2ldOwpAQCAtMjIzLDcgKzIyMyw3IEBACiAgICAgICAgICAgICByZXR1cm4gdGVtcF9zdHJ1Y3Q7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuICgwKTsKKyAgICByZXR1cm4gTlVMTDsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VhcmNoX3NubXBUYXJnZXRQYXJhbXNUYWJsZSAqLwogCiAKQEAgLTIzNiw3ICsyMzYsNyBAQAogc25tcFRhcmdldFBhcmFtc19yb3dTdGF0dXNDaGVjayhzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmVudHJ5KQogewogICAgIGlmICgoZW50cnktPm1wTW9kZWwgPCAwKSB8fCAoZW50cnktPnNlY01vZGVsIDwgMCkgfHwKLSAgICAgICAgKGVudHJ5LT5zZWNMZXZlbCA8IDApIHx8IChlbnRyeS0+c2VjTmFtZSA9PSAwKSkKKyAgICAgICAgKGVudHJ5LT5zZWNMZXZlbCA8IDApIHx8IChlbnRyeS0+c2VjTmFtZSA9PSBOVUxMKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gMTsKQEAgLTI1NCwxNyArMjU0LDE3IEBACiAgKi8KIAogc3RydWN0IHZhcmlhYmxlMiBzbm1wVGFyZ2V0UGFyYW1zRW50cnlfdmFyaWFibGVzW10gPSB7Ci0gICAge1NOTVBUQVJHRVRQQVJBTVNNUE1PREVMLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUUEFSQU1TTVBNT0RFTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRQYXJhbXNFbnRyeSwgMSwge1NOTVBUQVJHRVRQQVJBTVNNUE1PREVMQ09MVU1OfX0sCi0gICAge1NOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlNT0RFTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRQYXJhbXNFbnRyeSwgMSwge1NOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMQ09MVU1OfX0sCi0gICAge1NOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7U05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5LCAxLCB7U05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTkFNRUNPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlMRVZFTCwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7U05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTEVWRUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wVGFyZ2V0UGFyYW1zRW50cnksIDEsIHtTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlMRVZFTENPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUUEFSQU1TU1RPUkFHRVRZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRQYXJhbXNFbnRyeSwgMSwge1NOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRUNPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUUEFSQU1TUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUUEFSQU1TUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5LCAxLCB7U05NUFRBUkdFVFBBUkFNU1JPV1NUQVRVU0NPTFVNTn19CiB9OwogCkBAIC0yNzgsMTUgKzI3OCwxNSBAQAogdm9pZAogaW5pdF9zbm1wVGFyZ2V0UGFyYW1zRW50cnkodm9pZCkKIHsKLSAgICBhUFRhYmxlID0gMDsKKyAgICBhUFRhYmxlID0gTlVMTDsKIAogICAgIFJFR0lTVEVSX01JQigidGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeSIsCiAgICAgICAgICAgICAgICAgIHNubXBUYXJnZXRQYXJhbXNFbnRyeV92YXJpYWJsZXMsIHZhcmlhYmxlMiwKICAgICAgICAgICAgICAgICAgc25tcFRhcmdldFBhcmFtc0VudHJ5X3ZhcmlhYmxlc19vaWQpOwogCiAgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInRhcmdldFBhcmFtcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcGRfcGFyc2VfY29uZmlnX3RhcmdldFBhcmFtcywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wZF9wYXJzZV9jb25maWdfdGFyZ2V0UGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICgqKSh2b2lkKSkwLCBOVUxMKTsKIAogICAgIC8qCiAgICAgICogd2UgbmVlZCB0byBiZSBjYWxsZWQgYmFjayBsYXRlciAKQEAgLTMwMSw3ICszMDEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKICAgICBzaXplX3QgICAgICAgICAgbGVuOwotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldFBhcmFtc0VudHJ5OiBubyBwYXJhbSBuYW1lIGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTMyNSw3ICszMjUsNyBAQAogc25tcFRhcmdldFBhcmFtc19hZGRNUE1vZGVsKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldFBhcmFtc0VudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRQYXJhbXNFbnRyeTogbm8gbXAgbW9kZWwgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtMzUwLDcgKzM1MCw3IEBACiBzbm1wVGFyZ2V0UGFyYW1zX2FkZFNlY01vZGVsKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwdHIpCiB7Ci0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRQYXJhbXNFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIHNlYyBtb2RlbCBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC0zNzYsNyArMzc2LDcgQEAKIHNubXBUYXJnZXRQYXJhbXNfYWRkU2VjTmFtZShzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwdHIpCiB7Ci0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRQYXJhbXNFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIHNlY3VyaXR5IG5hbWUgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtMzkxLDcgKzM5MSw3IEBACiBzbm1wVGFyZ2V0UGFyYW1zX2FkZFNlY0xldmVsKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwdHIpCiB7Ci0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRQYXJhbXNFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIHNlY3VyaXR5IGxldmVsIGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTQxNyw3ICs0MTcsNyBAQAogc25tcFRhcmdldFBhcmFtc19hZGRTdG9yYWdlVHlwZShzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcHRyKQogewotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldFBhcmFtc0VudHJ5OiBubyBzdG9yYWdlIHR5cGUgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtNDU1LDcgKzQ1NSw3IEBACiBzbm1wVGFyZ2V0UGFyYW1zX2FkZFJvd1N0YXR1cyhzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldFBhcmFtc0VudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRQYXJhbXNFbnRyeTogbm8gcm93IHN0YXR1cyBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC01MzUsMTMgKzUzNSwxMSBAQAogICAgICAgICBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzbnByaW50ZihidWZmLCBzaXplb2YoYnVmZiksCi0gICAgICAgICAgICAic25tcF9wYXJzZV9jb25maWdfdGFyZ2V0UGFyYW1zLCByZWFkOiAlcyAlZCAlZCAlcyAlZCAlZCAlZFxuIiwKLSAgICAgICAgICAgIG5ld0VudHJ5LT5wYXJhbU5hbWUsIG5ld0VudHJ5LT5tcE1vZGVsLCBuZXdFbnRyeS0+c2VjTW9kZWwsCi0gICAgICAgICAgICBuZXdFbnRyeS0+c2VjTmFtZSwgbmV3RW50cnktPnNlY0xldmVsLCBuZXdFbnRyeS0+c3RvcmFnZVR5cGUsCi0gICAgICAgICAgICBuZXdFbnRyeS0+cm93U3RhdHVzKTsKLSAgICBidWZmWyBzaXplb2YoYnVmZiktMSBdID0gMDsKLSAgICBERUJVR01TR1RMKCgic25tcFRhcmdldFBhcmFtc0VudHJ5IiwgYnVmZikpOworICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLAorICAgICAgICAgICAgICAgICJzbm1wX3BhcnNlX2NvbmZpZ190YXJnZXRQYXJhbXMsIHJlYWQ6ICVzICVkICVkICVzICVkICVkICVkXG4iLAorICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5wYXJhbU5hbWUsIG5ld0VudHJ5LT5tcE1vZGVsLCBuZXdFbnRyeS0+c2VjTW9kZWwsCisgICAgICAgICAgICAgICAgbmV3RW50cnktPnNlY05hbWUsIG5ld0VudHJ5LT5zZWNMZXZlbCwgbmV3RW50cnktPnN0b3JhZ2VUeXBlLAorICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5yb3dTdGF0dXMpKTsKIAogICAgIHVwZGF0ZV90aW1lc3RhbXAobmV3RW50cnkpOwogICAgIHNubXBUYXJnZXRQYXJhbVRhYmxlX2FkZFRvTGlzdChuZXdFbnRyeSwgJmFQVGFibGUpOwpAQCAtNTY2LDggKzU2NCw4IEBACiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF07CiAKICAgICBzdHJjcHkobGluZSwgIiIpOwotICAgIGlmICgoY3Vycl9zdHJ1Y3QgPSBhUFRhYmxlKSAhPSAwKSB7Ci0gICAgICAgIHdoaWxlIChjdXJyX3N0cnVjdCAhPSAwKSB7CisgICAgaWYgKChjdXJyX3N0cnVjdCA9IGFQVGFibGUpICE9IE5VTEwpIHsKKyAgICAgICAgd2hpbGUgKGN1cnJfc3RydWN0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmICgoY3Vycl9zdHJ1Y3QtPnN0b3JhZ2VUeXBlID09IFNOTVBfU1RPUkFHRV9OT05WT0xBVElMRSB8fAogICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+c3RvcmFnZVR5cGUgPT0gU05NUF9TVE9SQUdFX1BFUk1BTkVOVCkKICAgICAgICAgICAgICAgICAmJgpAQCAtNjQyLDggKzY0MCw4IEBACiAgICAgICovCiAgICAgaWYgKCh0ZW1wX3N0cnVjdCA9IHNlYXJjaF9zbm1wVGFyZ2V0UGFyYW1zVGFibGUodnAtPm5hbWUsIHZwLT5uYW1lbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdCkpID09IDApIHsKLSAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdCkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyoKQEAgLTY1OSw3ICs2NTcsNyBAQAogICAgICAgICAgKiBpZiB1bnNldCB2YWx1ZSwgKGkuZS4gbmV3IHJvdykgCiAgICAgICAgICAqLwogICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPm1wTW9kZWwgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gKDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGxvbmdfcmV0ID0gdGVtcF9zdHJ1Y3QtPm1wTW9kZWw7CiAgICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSAmbG9uZ19yZXQ7CiAKQEAgLTY2OCw3ICs2NjYsNyBAQAogICAgICAgICAgKiBpZiB1bnNldCB2YWx1ZSwgKGkuZS4gbmV3IHJvdykgCiAgICAgICAgICAqLwogICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPnNlY01vZGVsID09IC0xKQotICAgICAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBsb25nX3JldCA9IHRlbXBfc3RydWN0LT5zZWNNb2RlbDsKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopICZsb25nX3JldDsKIApAQCAtNjc2LDggKzY3NCw4IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGlmIHVuc2V0IHZhbHVlLCAoaS5lLiBuZXcgcm93KSAKICAgICAgICAgICovCi0gICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+c2VjTmFtZSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgaWYgKHRlbXBfc3RydWN0LT5zZWNOYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgLyoKICAgICAgICAgICogaW5jbHVkaW5nIG51bGwgY2hhcmFjdGVyLiAKICAgICAgICAgICovCkBAIC02OTEsNyArNjg5LDcgQEAKICAgICAgICAgICogaWYgdW5zZXQgdmFsdWUsIChpLmUuIG5ldyByb3cpIAogICAgICAgICAgKi8KICAgICAgICAgaWYgKHRlbXBfc3RydWN0LT5zZWNMZXZlbCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgbG9uZ19yZXQgPSB0ZW1wX3N0cnVjdC0+c2VjTGV2ZWw7CiAgICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSAmbG9uZ19yZXQ7CiAKQEAgLTcwOCw3ICs3MDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAidW5rbm93biBzdWItaWQgJWQgaW4gdmFyX3NubXBUYXJnZXRQYXJhbXNFbnRyeVxuIiwKICAgICAgICAgICAgICAgICAgICAgdnAtPm1hZ2ljKSk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBOVUxMOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5ICovCiAKIC8qCkBAIC04NDIsNyArODQwLDcgQEAKICAgICAgICAgfQogICAgICAgICBpZiAoZmluZF9zZWNfbW9kKGxvbmdfcmV0KSA9PSBOVUxMICYmIGxvbmdfcmV0ID49IDMpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlIHRvIHNubXBUYXJnZXRQYXJhbXNTZWNNb2RlbDogc2VjTW9kZWwgJWQgdW5zdXBwb3J0ZWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAid3JpdGUgdG8gc25tcFRhcmdldFBhcmFtc1NlY01vZGVsOiBzZWNNb2RlbCAlbGQgdW5zdXBwb3J0ZWRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb25nX3JldCkpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0lOQ09OU0lTVEVOVFZBTFVFOwogICAgICAgICB9CkBAIC0xMjczLDcgKzEyNzEsNyBAQAogICAgICAgICBpZiAobmFtZV9sZW4gPCBzbm1wVGFyZ2V0UGFyYW1zT0lETGVuICsgMSB8fAogICAgICAgICAgICAgbmFtZV9sZW4gPiBzbm1wVGFyZ2V0UGFyYW1zT0lETGVuICsgMzIpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLCAiYmFkIGluZGV4IGxlbmd0aCAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfbGVuIC0gc25tcFRhcmdldFBhcmFtc09JRExlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgKGludCkobmFtZV9sZW4gLSBzbm1wVGFyZ2V0UGFyYW1zT0lETGVuKSkpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PQ1JFQVRJT047CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCmluZGV4IDliNWFiODUuLjgyODZhNjQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmgKQEAgLTksMTIgKzksNiBAQAogI2lmbmRlZiBfTUlCR1JPVVBfU05NUFRBUkdFVFBBUkFNU0VOVFJZX0gKICNkZWZpbmUgX01JQkdST1VQX1NOTVBUQVJHRVRQQVJBTVNFTlRSWV9ICiAKLS8qCi0gKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgYW5kIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAotICovCi0KLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCi0KICAgICAvKgogICAgICAqIE1hZ2ljIG51bWJlciBkZWZpbml0aW9uczogCiAgICAgICovCkBAIC01Myw2ICs0Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmV3RW50cnkpOwogICAgICBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKnNubXBUYXJnZXRQYXJhbVRhYmxlX2NyZWF0ZSh2b2lkKTsKKyAgICAgdm9pZCBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqKTsKIAogLyoKICAqIGZ1bmN0aW9uIGRlZmluaXRpb25zIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jCmluZGV4IDNjY2JhMWMuLjg4ZWU3NzAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYworKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMKQEAgLTE2Myw3ICsxNjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNzZXNzLnRpbWVvdXQgPSAodGFyZ2FkZHJzLT50aW1lb3V0KSAqIDEwMDAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNzZXNzLnJldHJpZXMgPSB0YXJnYWRkcnMtPnJldHJ5Q291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInRhcmdldF9zZXNzaW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQ6ICVkIC0+ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0OiAlZCAtPiAlbGRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2FkZHJzLT50aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNzZXNzLnRpbWVvdXQpKTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jCmluZGV4IDAyZWJiNzIuLjhhMmYwZDEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuYworKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMKQEAgLTEyLDEyICsxMiwxMiBAQAogI2luY2x1ZGUgInRhcmdldF9jb3VudGVycy5oIgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2luc3RhbmNlLmg+CiAKLXN0YXRpYyBvaWQgICB1bmF2YWlsYWJsZV9jb250ZXh0X29pZFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSwgNCB9Owotc3RhdGljIG9pZCAgIHVua25vd25fY29udGV4dF9vaWRbXSAgICAgPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxLCA1IH07Ci0KIHZvaWQKIGluaXRfdGFyZ2V0X2NvdW50ZXJzKHZvaWQpCiB7CisgICAgY29uc3Qgb2lkIHVuYXZhaWxhYmxlX2NvbnRleHRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxLCA0IH07CisgICAgY29uc3Qgb2lkIHVua25vd25fY29udGV4dF9vaWRbXSAgICAgPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxLCA1IH07CisKICAgICBERUJVR01TR1RMKCgidGFyZ2V0X2NvdW50ZXJzIiwgImluaXRpYWxpemluZ1xuIikpOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaCBiL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaAppbmRleCBhN2RiZjBhLi5jNDg1YzRjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oCkBAIC0yLDYgKzIsOCBAQAogICogdGVzdGhhbmRsZXIuaCAKICAqLwogCitjb25maWdfZXhjbHVkZSh0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzKQorCiB2b2lkICAgICAgICAgICAgaW5pdF90YXJnZXRfY291bnRlcnModm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBnZXRfdW5hdmFpbGFibGVfY29udGV4dF9jb3VudDsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGdldF91bmtub3duX2NvbnRleHRfY291bnQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZThiMjViCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYwpAQCAtMCwwICsxLDI3IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSAidGFyZ2V0X2NvdW50ZXJzXzVfNS5oIgorCisjaW5jbHVkZSA8dXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5oPgorCit2b2lkCitpbml0X3RhcmdldF9jb3VudGVyc181XzUodm9pZCkKK3sKKyAgICBvaWQgdGFyZ2V0X29pZFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSB9OworCisgICAgREVCVUdNU0dUTCgoInRhcmdldF9jb3VudGVycyIsICJpbml0aWFsaXppbmdcbiIpKTsKKworICAgIE5FVFNOTVBfUkVHSVNURVJfU1RBVElTVElDX0hBTkRMRVIoCisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgInRhcmdldF9jb3VudGVycyIsIE5VTEwsIHRhcmdldF9vaWQsIE9JRF9MRU5HVEgodGFyZ2V0X29pZCksCisgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksIDQsIFRBUkdFVCk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5oIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjgxMmZiCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuaApAQCAtMCwwICsxLDQgQEAKK2NvbmZpZ19yZXF1aXJlKHV0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMpCitjb25maWdfZXhjbHVkZSh0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzKQorCit2b2lkICAgICAgICAgICAgaW5pdF90YXJnZXRfY291bnRlcnNfNV81KHZvaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uLmggYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaAppbmRleCA1MDAzMTU3Li4xZWMzNTg4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaAorKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaApAQCAtMjAsNiArMjAsNyBAQAogY29uZmlnX3JlcXVpcmUodGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2NvbW1vbikKICNpZiBkZWZpbmVkKCBsaW51eCApCiBjb25maWdfcmVxdWlyZSh0Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXgpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZSkKICNlbGlmIGRlZmluZWQoIHNvbGFyaXMyICkKIGNvbmZpZ19yZXF1aXJlKHRjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9zb2xhcmlzMikKICNlbHNlCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXguYyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCmluZGV4IDhlYTA4MmIuLjM3NmNmNWMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCkBAIC0xMSw3ICsxMSw3IEBACiAKICNpbmNsdWRlICJ0Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAidGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX3ByaXZhdGUuaCIKLQorI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgiCiBzdGF0aWMgaW50CiBsaW51eF9zdGF0ZXNbMTJdID0geyAxLCA1LCAzLCA0LCA2LCA3LCAxMSwgMSwgOCwgOSwgMiwgMTAgfTsKIApAQCAtODEsNyArODEsNyBAQAogICAgIGludCByYyA9IDA7CiAKICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnRjcGNvbm46Y29udGFpbmVyIiwKLSAgICAgICAgICAgICAgICAidGNwY29ubl9jb250YWluZXJfYXJjaF9sb2FkIChmbGFncyAlcClcbiIsIGxvYWRfZmxhZ3MpKTsKKyAgICAgICAgICAgICAgICAidGNwY29ubl9jb250YWluZXJfYXJjaF9sb2FkIChmbGFncyAleClcbiIsIGxvYWRfZmxhZ3MpKTsKIAogICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX3RjcGNvbm5cbiIpOwpAQCAtMTM1LDE2ICsxMzUsMTkgQEAKICAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKICAgICAgICAgbmV0c25tcF90Y3Bjb25uX2VudHJ5ICplbnRyeTsKICAgICAgICAgaW50ICAgICAgICAgICAgIHN0YXRlLCByYywgbG9jYWxfcG9ydCwgcmVtb3RlX3BvcnQsIHRtcF9zdGF0ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlub2RlOwogICAgICAgICBzaXplX3QgICAgICAgICAgYnVmX2xlbiwgb2Zmc2V0OwogICAgICAgICBjaGFyICAgICAgICAgICAgbG9jYWxfYWRkclsxMF0sIHJlbW90ZV9hZGRyWzEwXTsKICAgICAgICAgdV9jaGFyICAgICAgICAgKnRtcF9wdHI7CiAKLSAgICAgICAgaWYgKDUgIT0gKHJjID0gc3NjYW5mKGxpbmUsICIlKmQ6ICU4WzAtOUEtWl06JXggJThbMC05QS1aXToleCAleCIsCisgICAgICAgIGlmICg2ICE9IChyYyA9IHNzY2FuZihsaW5lLCAiJSpkOiAlOFswLTlBLVpdOiV4ICU4WzAtOUEtWl06JXggJXggJSp4OiUqeCAlKng6JSp4ICUqeCAlKnggJSp4ICVsbHUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfYWRkciwgJmxvY2FsX3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfYWRkciwgJnJlbW90ZV9wb3J0LCAmdG1wX3N0YXRlKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9hZGRyLCAmcmVtb3RlX3BvcnQsICZ0bXBfc3RhdGUsICZpbm9kZSkpKSB7CiAgICAgICAgICAgICBERUJVR01TR1QoKCJhY2Nlc3M6dGNwY29ubjpjb250YWluZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgcGFyc2luZyBsaW5lICglZCAhPSA1KVxuIiwgcmMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgImVycm9yIHBhcnNpbmcgbGluZSAoJWQgIT0gNilcbiIsIHJjKSk7CiAgICAgICAgICAgICBERUJVR01TR1QoKCJhY2Nlc3M6dGNwY29ubjpjb250YWluZXIiLCIgbGluZSAnJXMnXG4iLCBsaW5lKSk7CisJICAgIHNubXBfbG9nKExPR19FUlIsICJ0Y3A6X2xvYWQ0OiBiYWQgbGluZSBpbiAiIFBST0NGSUxFICI6ICVzXG4iLCBsaW5lKTsKKwkgICAgcmMgPSAwOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgREVCVUdNU0dUKCgidmVyYm9zZTphY2Nlc3M6dGNwY29ubjpjb250YWluZXIiLCIgbGluZSAnJXMnXG4iLCBsaW5lKSk7CkBAIC0xODAsNiArMTgzLDcgQEAKICAgICAgICAgZW50cnktPmxvY19wb3J0ID0gKHVuc2lnbmVkIHNob3J0KSBsb2NhbF9wb3J0OwogICAgICAgICBlbnRyeS0+cm10X3BvcnQgPSAodW5zaWduZWQgc2hvcnQpIHJlbW90ZV9wb3J0OwogICAgICAgICBlbnRyeS0+dGNwQ29ublN0YXRlID0gc3RhdGU7CisgICAgICAgIGVudHJ5LT5waWQgPSBuZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZShpbm9kZSk7CiAgICAgICAgIAogICAgICAgICAvKiogdGhlIGFkZHIgc3RyaW5nIG1heSBuZWVkIHdvcmsgKi8KICAgICAgICAgYnVmX2xlbiA9IHN0cmxlbihsb2NhbF9hZGRyKTsKQEAgLTI1MywyOCArMjU3LDE3IEBACiB7CiAgICAgaW50ICAgICAgICAgICAgIHJjID0gMDsKICAgICBGSUxFICAgICAgICAgICAqaW47Ci0gICAgY2hhciAgICAgICAgICAgIGxpbmVbMTgwXTsKLSAgICBzdGF0aWMgaW50ICAgICAgbG9nX29wZW5fZXJyID0gMTsKKyAgICBjaGFyICAgICAgICAgICAgbGluZVszNjBdOwogCiAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOwogCiAjdW5kZWYgUFJPQ0ZJTEUKICNkZWZpbmUgUFJPQ0ZJTEUgIi9wcm9jL25ldC90Y3A2IgogICAgIGlmICghKGluID0gZm9wZW4oUFJPQ0ZJTEUsICJyIikpKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsImNvdWxkIG5vdCBvcGVuICIgUFJPQ0ZJTEUgIlxuIik7Ci0gICAgICAgIGlmICgxID09IGxvZ19vcGVuX2VycikgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiY291bGQgbm90IG9wZW4gIiBQUk9DRklMRSAiXG4iKTsKLSAgICAgICAgICAgIGxvZ19vcGVuX2VyciA9IDA7Ci0gICAgICAgIH0KKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczp0Y3Bjb25uOmNvbnRhaW5lciIsImNvdWxkIG5vdCBvcGVuICIgUFJPQ0ZJTEUgIlxuIikpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQotICAgIC8qCi0gICAgICogaWYgd2UgdHVybmVkIG9mZiBsb2dnaW5nIG9mIG9wZW4gZXJyb3JzLCB0dXJuIGl0IGJhY2sgb24gbm93IHRoYXQKLSAgICAgKiB3ZSBoYXZlIGJlZW4gYWJsZSB0byBvcGVuIHRoZSBmaWxlLgotICAgICAqLwotICAgIGlmICgwID09IGxvZ19vcGVuX2VycikKLSAgICAgICAgbG9nX29wZW5fZXJyID0gMTsKLSAgICAKKwogICAgIGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pOyAvKiBza2lwIGhlYWRlciAqLwogCiAgICAgLyoKQEAgLTI4NiwxNiArMjc5LDE5IEBACiAgICAgd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pKSB7CiAgICAgICAgIG5ldHNubXBfdGNwY29ubl9lbnRyeSAqZW50cnk7CiAgICAgICAgIGludCAgICAgICAgICAgICBzdGF0ZSwgbG9jYWxfcG9ydCwgcmVtb3RlX3BvcnQsIHRtcF9zdGF0ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nICBpbm9kZTsKICAgICAgICAgc2l6ZV90ICAgICAgICAgIGJ1Zl9sZW4sIG9mZnNldDsKICAgICAgICAgY2hhciAgICAgICAgICAgIGxvY2FsX2FkZHJbNDhdLCByZW1vdGVfYWRkcls0OF07CiAgICAgICAgIHVfY2hhciAgICAgICAgICp0bXBfcHRyOwogCi0gICAgICAgIGlmICg1ICE9IChyYyA9IHNzY2FuZihsaW5lLCAiJSpkOiAlNDdbMC05QS1aXToleCAlNDdbMC05QS1aXToleCAleCIsCisgICAgICAgIGlmICg2ICE9IChyYyA9IHNzY2FuZihsaW5lLCAiJSpkOiAlNDdbMC05QS1aXToleCAlNDdbMC05QS1aXToleCAleCAlKng6JSp4ICUqeDolKnggJSp4ICUqeCAlKnggJWxsdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9hZGRyLCAmbG9jYWxfcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9hZGRyLCAmcmVtb3RlX3BvcnQsICZ0bXBfc3RhdGUpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2FkZHIsICZyZW1vdGVfcG9ydCwgJnRtcF9zdGF0ZSwgJmlub2RlKSkpIHsKICAgICAgICAgICAgIERFQlVHTVNHVCgoImFjY2Vzczp0Y3Bjb25uOmNvbnRhaW5lciIsCi0gICAgICAgICAgICAgICAgICAgICAgICJlcnJvciBwYXJzaW5nIGxpbmUgKCVkICE9IDUpXG4iLCByYykpOworICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgcGFyc2luZyBsaW5lICglZCAhPSA2KVxuIiwgcmMpKTsKICAgICAgICAgICAgIERFQlVHTVNHVCgoImFjY2Vzczp0Y3Bjb25uOmNvbnRhaW5lciIsIiBsaW5lICclcydcbiIsIGxpbmUpKTsKKwkgICAgc25tcF9sb2coTE9HX0VSUiwgInRjcDpfbG9hZDY6IGJhZCBsaW5lIGluICIgUFJPQ0ZJTEUgIjogJXNcbiIsIGxpbmUpOworCSAgICByYyA9IDA7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmFjY2Vzczp0Y3Bjb25uOmNvbnRhaW5lciIsIiBsaW5lICclcydcbiIsIGxpbmUpKTsKQEAgLTMzMSw2ICszMjcsNyBAQAogICAgICAgICBlbnRyeS0+bG9jX3BvcnQgPSAodW5zaWduZWQgc2hvcnQpIGxvY2FsX3BvcnQ7CiAgICAgICAgIGVudHJ5LT5ybXRfcG9ydCA9ICh1bnNpZ25lZCBzaG9ydCkgcmVtb3RlX3BvcnQ7CiAgICAgICAgIGVudHJ5LT50Y3BDb25uU3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgZW50cnktPnBpZCA9IG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlub2RlKTsKIAogICAgICAgICAvKiogdGhlIGFkZHIgc3RyaW5nIG1heSBuZWVkIHdvcmsgKi8KICAgICAgICAgYnVmX2xlbiA9IHN0cmxlbihsb2NhbF9hZGRyKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmMKaW5kZXggZWI5MGY0MC4uZjVkMDU0ZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgInRjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9vaWRbXSA9IHsgVENQQ09OTkVDVElPTlRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgdGNwQ29ubmVjdGlvblRhYmxlX29pZFtdID0geyBUQ1BDT05ORUNUSU9OVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgdGNwQ29ubmVjdGlvblRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgodGNwQ29ubmVjdGlvblRhYmxlX29pZCk7CiAKIHRjcENvbm5lY3Rpb25UYWJsZV9yZWdpc3RyYXRpb24gdGNwQ29ubmVjdGlvblRhYmxlX3VzZXJfY29udGV4dDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKaW5kZXggOWE3YjI5Yi4uMTdkMzEwNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKQEAgLTMwMSw4ICszMDEsOCBAQAogICAgICAgICAqIHRjcENvbm5lY3Rpb25UYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKHRjcENvbm5lY3Rpb25UYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICB0Y3BDb25uZWN0aW9uVGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgdGNwQ29ubmVjdGlvblRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICB0Y3BDb25uZWN0aW9uVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgInRjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggNjZjNDJiNS4uYTRmNWJiZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTE4Nyw3ICsxODcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+cm10X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnJtdF9hZGRyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+cm10X3BvcnQpKSkgewotICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisgICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCkpIHsKKyAgICAgICAgICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX0RFQlVHLAorICAgICAgICAgICAgICAgICAgICAiRXJyb3IgaW5zZXJ0aW5nIGVudHJ5IHRvIHRjcENvbm5lY3Rpb25UYWJsZSwiXAorICAgICAgICAgICAgICAgICAgICAiIGVudHJ5IGFscmVhZHkgZXhpc3RzLiIpKTsKKyAgICAgICAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAocm93cmVxX2N0eCkgewogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCkBAIC0yNjAsNyArMjY1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1RDUENPTk5fRlJFRV9ET05UX0NMRUFSKTsKIAogICAgIERFQlVHTVNHVCgoInZlcmJvc2U6dGNwQ29ubmVjdGlvblRhYmxlOnRjcENvbm5lY3Rpb25UYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJWQgcmVjb3Jkc1xuIiwgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRjcENvbm5lY3Rpb25UYWJsZV9jb250YWluZXJfbG9hZCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmMKaW5kZXggMmE2ZmU3Yi4uZWJkNjcyYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5jCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJ0Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgdGNwTGlzdGVuZXJUYWJsZV9vaWRbXSA9IHsgVENQTElTVEVORVJUQUJMRV9PSUQgfTsKLWludCAgICAgICAgICAgICB0Y3BMaXN0ZW5lclRhYmxlX29pZF9zaXplID0KK2NvbnN0IG9pZCAgICAgICB0Y3BMaXN0ZW5lclRhYmxlX29pZFtdID0geyBUQ1BMSVNURU5FUlRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIHRjcExpc3RlbmVyVGFibGVfb2lkX3NpemUgPQogT0lEX0xFTkdUSCh0Y3BMaXN0ZW5lclRhYmxlX29pZCk7CiAKIHRjcExpc3RlbmVyVGFibGVfcmVnaXN0cmF0aW9uIHRjcExpc3RlbmVyVGFibGVfdXNlcl9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmgKaW5kZXggMDg5OGY5Yy4uMDhhNzQxYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5oCkBAIC0xODIsOCArMTgyLDggQEAKICAgICAgICAgKiB0Y3BMaXN0ZW5lclRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleCh0Y3BMaXN0ZW5lclRhYmxlX21pYl9pbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgdGNwTGlzdGVuZXJUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgdGNwTGlzdGVuZXJUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgdGNwTGlzdGVuZXJUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgdGNwTGlzdGVuZXJUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAidGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDA1MDNmYjMuLjRhYTE0ZmYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMjU4LDcgKzI1OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19UQ1BDT05OX0ZSRUVfRE9OVF9DTEVBUik7CiAKICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOnRjcExpc3RlbmVyVGFibGU6dGNwTGlzdGVuZXJUYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJWQgcmVjb3Jkc1xuIiwgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRjcExpc3RlbmVyVGFibGVfY29udGFpbmVyX2xvYWQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMgYi9hZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jCmluZGV4IDgwODU5Y2UuLmMwODY2ZGQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYwpAQCAtNzQsNiArNzQsOCBAQAogICAgICAgICByZXR1cm47CiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKKyAgICBpZiAodGFibGVfaW5mbyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CiAKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgQVNOX0lOVEVHRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CkBAIC0xMjMsNiArMTI1LDggQEAKICAgICAgKiBhdXRvbWF0aWNhbGx5IHBhcnNlZCBjb2x1bW4gYW5kIGluZGV4IGluZm9ybWF0aW9uIAogICAgICAqLwogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOworICAgIGlmICh0YWJsZV9pbmZvID09IE5VTEwpCisgICAgICAgIHJldHVybjsKIAogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sIEFTTl9JTlRFR0VSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9PQ1RFVF9TVFIsIDApOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jIGIvYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jCmluZGV4IGNmYmVlNDYuLmNmNmVlZGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYworKysgYi9hZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmMKQEAgLTYyLDggKzYyLDggQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgInR1bm5lbC5oIgogCiAjaWZuZGVmIE1JTgpAQCAtMTM3LDMyICsxMzcsMzUgQEAKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAogICAgICAqLwogI2RlZmluZSAgIExPQ0FMQUREUkVTUyAgICAgICAgICAxCi0gICAge0xPQ0FMQUREUkVTUywgQVNOX0lQQUREUkVTUywgUldSSVRFLCB2YXJfdHVubmVsSWZFbnRyeSwgMywgezEsIDEsIDF9fSwKKyAgICB7TE9DQUxBRERSRVNTLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90dW5uZWxJZkVudHJ5LCAzLCB7MSwgMSwgMX19LAogI2RlZmluZSAgIFJFTU9URUFERFJFU1MgICAgICAgICAyCi0gICAge1JFTU9URUFERFJFU1MsIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX3R1bm5lbElmRW50cnksIDMsCi0gICAgIHsxLCAxLCAyfX0sCisgICAge1JFTU9URUFERFJFU1MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCAyfX0sCiAjZGVmaW5lICAgRU5DQVBTTUVUSE9EICAgICAgICAgIDMKLSAgICB7RU5DQVBTTUVUSE9ELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl90dW5uZWxJZkVudHJ5LCAzLCB7MSwgMSwgM319LAorICAgIHtFTkNBUFNNRVRIT0QsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCAzfX0sCiAjZGVmaW5lICAgSE9QTElNSVQgICAgICAgICAgICAgIDQKLSAgICB7SE9QTElNSVQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl90dW5uZWxJZkVudHJ5LCAzLCB7MSwgMSwgNH19LAorICAgIHtIT1BMSU1JVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCA0fX0sCiAjZGVmaW5lICAgU0VDVVJJVFkgICAgICAgICAgICAgIDUKLSAgICB7U0VDVVJJVFksIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCA1fX0sCisgICAge1NFQ1VSSVRZLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90dW5uZWxJZkVudHJ5LCAzLCB7MSwgMSwgNX19LAogI2RlZmluZSAgIFRPUyAgICAgICAgICAgICAgICAgICA2Ci0gICAge1RPUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCA2fX0sCisgICAge1RPUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCA2fX0sCiAKICNkZWZpbmUgICBJRklOREVYICAgICAgICAgICAgICAgNwotICAgIHtJRklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl90dW5uZWxDb25maWdFbnRyeSwgMywgezIsIDEsIDV9fSwKKyAgICB7SUZJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdHVubmVsQ29uZmlnRW50cnksIDMsIHsyLCAxLCA1fX0sCiAjZGVmaW5lICAgUk9XU1RBVFVTICAgICAgICAgICAgIDgKLSAgICB7Uk9XU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdHVubmVsQ29uZmlnRW50cnksIDMsIHsyLCAxLCA2fX0sCisgICAge1JPV1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3R1bm5lbENvbmZpZ0VudHJ5LCAzLCB7MiwgMSwgNn19LAogfTsKIAogCiAKLWV4dGVybiBpbnQgICAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKik7Ci1leHRlcm4gaW50ICAgICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqLCBzaXplX3QpOwotCiBzdGF0aWMgb2lkICAgICAgc3lzT1JUYWJsZV9yZWdbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMTAsIDEzMSB9Owotc3RhdGljIHNpemVfdCAgIHN5c09SVGFibGVfcmVnbGVuID0gODsKIAogc3RhdGljIHN0cnVjdCB0dW5uZWwgKnR1bm5lbHM7CiAKQEAgLTE3MSw3ICsxNzQsNyBAQAogdm9pZAogZGVpbml0X3R1bm5lbCh2b2lkKQogewotICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZShzeXNPUlRhYmxlX3JlZywgc3lzT1JUYWJsZV9yZWdsZW4pOworICAgIFVOUkVHSVNURVJfU1lTT1JfRU5UUlkoc3lzT1JUYWJsZV9yZWcpOwogfQogCiAKQEAgLTE4OCw3ICsxOTEsNyBAQAogdm9pZAogaW5pdF90dW5uZWwodm9pZCkKIHsKLSAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKHN5c09SVGFibGVfcmVnLCBzeXNPUlRhYmxlX3JlZ2xlbiwKKyAgICBSRUdJU1RFUl9TWVNPUl9FTlRSWShzeXNPUlRhYmxlX3JlZywKICAgICAgICAgICAgICAgICAgICAgICAgICJSRkMgMjY2NyBUVU5ORUwtTUlCIGltcGxlbWVudGF0aW9uIGZvciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiTGludXggMi4yLngga2VybmVscy4iKTsKIApAQCAtMjEzLDggKzIxNiw4IEBACiAgICAgb2lkICAgICAgICAgICAgIG5hbWVbTUFYX09JRF9MRU5dID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCAzIH07CiAgICAgc2l6ZV90ICAgICAgICAgIGxlbmd0aCA9IDEwOwogICAgIHN0cnVjdCB2YXJpYWJsZSBpZlR5cGVfdmFyaWFibGUgPQotICAgICAgICB7IDMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmRW50cnksIDEwLAotICAgICAgICB7MSwgMywgNiwgMSwgMiwgMSwgMiwgMiwgMSwgM30KKyAgICAgICAgeyAzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2lmRW50cnksIDEwLCB7MSwgMywgNiwgMSwgMiwgMSwgMiwgMiwgMSwgM30KICAgICB9OwogICAgIHVuc2lnbmVkIGNoYXIgICpwOwogICAgIHNpemVfdCAgICAgICAgICB2YXJfbGVuOwpAQCAtMjUyLDggKzI1NSw4IEBACiAgICAgb2lkICAgICAgICAgICAgIG5hbWVbTUFYX09JRF9MRU5dID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCAyIH07CiAgICAgc2l6ZV90ICAgICAgICAgIGxlbmd0aCA9IDEwOwogICAgIHN0cnVjdCB2YXJpYWJsZSBpZk5hbWVfdmFyaWFibGUgPQotICAgICAgICB7IDIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmRW50cnksIDEwLAotICAgICAgICB7MSwgMywgNiwgMSwgMiwgMSwgMiwgMiwgMSwgMn0KKyAgICAgICAgeyAyLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2lmRW50cnksIDEwLCB7MSwgMywgNiwgMSwgMiwgMSwgMiwgMiwgMSwgMn0KICAgICB9OwogICAgIHVuc2lnbmVkIGNoYXIgICpwOwogICAgIHNpemVfdCAgICAgICAgICB2YXJfbGVuOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jCmluZGV4IGJkNzg0ZmMuLjRkM2FmYTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMKQEAgLTQsNiArNCwxMiBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKy8qIHdvcmthcm91bmQgZm9yIGJ1ZyBpbiBhdXRvY29uZiAyLjYwYiBhbmQgMi42MSAqLworI2lmZGVmIEhBVkVfR0VUTU5URU5UCisjdW5kZWYgSEFWRV9HRVRNTlRFTlQKKyNkZWZpbmUgSEFWRV9HRVRNTlRFTlQgMSAvKiBwcmV2aW91c2x5IG1pZ2h0IGJlIG9ubHkgIiNkZWZpbmUgSEFWRV9HRVRNTlRFTlQiICovCisjZW5kaWYKKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpZiBIQVZFX1NURExJQl9ICkBAIC0xNDAsNyArMTQ2LDcgQEAKIAogI2luY2x1ZGUgInN0cnVjdC5oIgogI2luY2x1ZGUgImRpc2suaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgiCiAjaWYgVVNJTkdfVUNEX1NOTVBfRVJST1JNSUJfTU9EVUxFCiAjaW5jbHVkZSAiZXJyb3JtaWIuaCIKICNlbHNlCkBAIC0xNzAsMTAgKzE3Niw4IEBACiAgICAgaW50ICAgICAgICAgICAgIG1pbnBlcmNlbnQ7CiB9OwogCi0jaWZuZGVmICBJTlQzMl9NQVgKLSNkZWZpbmUgIElOVDMyX01BWCAgMHg3ZmZmZmZmZgotI2VuZGlmCi0KKyNkZWZpbmUgTUFYX0lOVF8zMiAweDdmZmZmZmZmCisjZGVmaW5lIE1BWF9VSU5UXzMyIDB4ZmZmZmZmZmYKIAogdW5zaWduZWQgaW50ICAgIG51bWRpc2tzOwogaW50ICAgICAgICAgICAgIGFsbERpc2tzSW5jbHVkZWQgPSAwOwpAQCAtMTgxLDIzICsxODUsNDIgQEAKIHN0cnVjdCBkaXNrcGFydCAqZGlza3M7CiAKIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV9kaXNrX3ZhcmlhYmxlc1tdID0gewotICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge01JQklOREVYfX0sCi0gIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RVJST1JOQU1FfX0sCi0gIHtESVNLREVWSUNFLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwKLSAgIHtESVNLREVWSUNFfX0sCi0gIHtESVNLTUlOSU1VTSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLAotICAge0RJU0tNSU5JTVVNfX0sCi0gIHtESVNLTUlOUEVSQ0VOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLAotICAge0RJU0tNSU5QRVJDRU5UfX0sCi0gIHtESVNLVE9UQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tUT1RBTH19LAotICB7RElTS0FWQUlMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLQVZBSUx9fSwKLSAge0RJU0tVU0VELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLVVNFRH19LAotICB7RElTS1BFUkNFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwKLSAgIHtESVNLUEVSQ0VOVH19LAotICB7RElTS1BFUkNFTlROT0RFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsCi0gICB7RElTS1BFUkNFTlROT0RFfX0sCi0gIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0VSUk9SRkxBR319LAotICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RVJST1JNU0d9fQorICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtNSUJJTkRFWH19LAorICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtFUlJPUk5BTUV9fSwKKyAge0RJU0tERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tERVZJQ0V9fSwKKyAge0RJU0tNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS01JTklNVU19fSwKKyAge0RJU0tNSU5QRVJDRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS01JTlBFUkNFTlR9fSwKKyAge0RJU0tUT1RBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tUT1RBTH19LAorICB7RElTS0FWQUlMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS0FWQUlMfX0sCisgIHtESVNLVVNFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tVU0VEfX0sCisgIHtESVNLUEVSQ0VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tQRVJDRU5UfX0sCisgIHtESVNLUEVSQ0VOVE5PREUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLUEVSQ0VOVE5PREV9fSwKKyAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0VSUk9SRkxBR319LAorICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0VSUk9STVNHfX0sCisgICB7RElTS1RPVEFMTE9XLCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLVE9UQUxMT1d9fSwKKyAgIHtESVNLVE9UQUxISUdILCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLVE9UQUxISUdIfX0sCisgICB7RElTS0FWQUlMTE9XLCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLQVZBSUxMT1d9fSwKKyAgIHtESVNLQVZBSUxISUdILCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLQVZBSUxISUdIfX0sCisgICB7RElTS1VTRURMT1csIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tVU0VETE9XfX0sCisgICB7RElTS1VTRURISUdILCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLVVNFREhJR0h9fSwKIH07CiAKIC8qCkBAIC0yNDMsNyArMjY2LDYgQEAKIGRpc2tfcGFyc2VfY29uZmlnKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewogI2lmIEhBVkVfRlNUQUJfSCB8fCBIQVZFX0dFVE1OVEVOVCB8fCBIQVZFX1NUQVRGUwotICBjaGFyICAgICAgICAgICAgdG1wYnVmWzEwMjRdOwogICBjaGFyICAgICAgICAgICAgcGF0aFtTVFJNQVhdOwogICBpbnQgICAgICAgICAgICAgbWlucGVyY2VudDsKICAgaW50ICAgICAgICAgICAgIG1pbnNwYWNlOwpAQCAtMjU0LDkgKzI3Niw3IEBACiAgICAgICAgICAgZGlza3MgPSBtYWxsb2MobWF4ZGlza3MgKiBzaXplb2Yoc3RydWN0IGRpc2twYXJ0KSk7CiAgICAgICAgICAgaWYgKCFkaXNrcykgewogICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJtYWxsb2MgZmFpbGVkIGZvciBuZXcgZGlzayBhbGxvY2F0aW9uLiIpOwotICAgICAgICAgICAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLCAiXHRpZ25vcmluZzogICVzIiwgY3B0cik7Ci0gICAgICAgICAgICAgIHRtcGJ1Zlsgc2l6ZW9mKHRtcGJ1ZiktMSBdID0gMDsKLSAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCSAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIH0KICAgICAgICAgICBtZW1zZXQoZGlza3MsIDAsIG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwpAQCAtMjY1LDkgKzI4NSw3IEBACiAgICAgICAgICAgZGlza3MgPSByZWFsbG9jKGRpc2tzLCBtYXhkaXNrcyAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKICAgICAgICAgICBpZiAoIWRpc2tzKSB7CiAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1hbGxvYyBmYWlsZWQgZm9yIG5ldyBkaXNrIGFsbG9jYXRpb24uIik7Ci0gICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKLSAgICAgICAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIlx0aWdub3Jpbmc6ICAlcyIsIGNwdHIpOwogICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgfQogICAgICAgICAgIG1lbXNldChkaXNrcyArIG1heGRpc2tzLzIsIDAsIG1heGRpc2tzLzIgKiBzaXplb2Yoc3RydWN0IGRpc2twYXJ0KSk7CkBAIC0yODUsNyArMzAzLDcgQEAKICAgICogcmVhZCBvcHRpb25hbCBtaW5pbXVtIGRpc2sgdXNhZ2Ugc3BlYyAKICAgICovCiAgIGlmKGNwdHIgIT0gTlVMTCkgewotICAgICAgaWYoc3RyY2hyKGNwdHIsICclJykgPT0gMCkgeworICAgICAgaWYoc3RyY2hyKGNwdHIsICclJykgPT0gTlVMTCkgewogICAgICAgICAgIG1pbnNwYWNlID0gYXRvaShjcHRyKTsKICAgICAgICAgICBtaW5wZXJjZW50ID0gLTE7CiAgICAgICB9CkBAIC0zMTAsNyArMzI4LDYgQEAKIGRpc2tfcGFyc2VfY29uZmlnX2FsbChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKICNpZiBIQVZFX0ZTVEFCX0ggfHwgSEFWRV9HRVRNTlRFTlQgfHwgSEFWRV9TVEFURlMKLSAgY2hhciAgICAgICAgICAgIHRtcGJ1ZlsxMDI0XTsKICAgaW50ICAgICAgICAgICAgIG1pbnBlcmNlbnQgPSBESVNLTUlOUEVSQ0VOVDsKICAgICAKICAgaWYgKG51bWRpc2tzID09IG1heGRpc2tzKSB7CkBAIC0zMTksOCArMzM2LDcgQEAKICAgICAgICAgICBkaXNrcyA9IG1hbGxvYyhtYXhkaXNrcyAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKICAgICAgICAgICBpZiAoIWRpc2tzKSB7CiAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1hbGxvYyBmYWlsZWQgZm9yIG5ldyBkaXNrIGFsbG9jYXRpb24uIik7Ci0gICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKLSAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCSAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIH0KICAgICAgICAgICBtZW1zZXQoZGlza3MsIDAsIG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwpAQCAtMzI5LDggKzM0NSw3IEBACiAgICAgICAgICAgZGlza3MgPSByZWFsbG9jKGRpc2tzLCBtYXhkaXNrcyAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKICAgICAgICAgICBpZiAoIWRpc2tzKSB7CiAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1hbGxvYyBmYWlsZWQgZm9yIG5ldyBkaXNrIGFsbG9jYXRpb24uIik7Ci0gICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKLSAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCSAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIH0KICAgICAgICAgICBtZW1zZXQoZGlza3MgKyBtYXhkaXNrcy8yLCAwLCBtYXhkaXNrcy8yICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwpAQCAtMzQwLDcgKzM1NSw3IEBACiAgICAqIHJlYWQgdGhlIG1pbmltdW0gZGlzayB1c2FnZSBwZXJjZW50CiAgICAqLwogICBpZihjcHRyICE9IE5VTEwpIHsKLSAgICAgIGlmKHN0cmNocihjcHRyLCAnJScpICE9IDApIHsKKyAgICAgIGlmKHN0cmNocihjcHRyLCAnJScpICE9IE5VTEwpIHsKICAgICAgICAgICBtaW5wZXJjZW50ID0gYXRvaShjcHRyKTsKICAgICAgIH0KICAgfQpAQCAtMzUyLDggKzM2Nyw3IEBACiAgICAqLwogICBpZihhbGxEaXNrc0luY2x1ZGVkKSB7CiAgICAgICBjb25maWdfcGVycm9yKCJpbmNsdWRlQWxsRGlza3MgYWxyZWFkeSBzcGVjaWZpZWQuIik7Ci0gICAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLCAiXHRpZ25vcmluZzogaW5jbHVkZUFsbERpc2tzICVzIiwgY3B0cik7Ci0gICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiXHRpZ25vcmluZzogaW5jbHVkZUFsbERpc2tzICVzIiwgY3B0cik7CiAgIH0KICAgZWxzZSB7CiAgICAgICBhbGxEaXNrc0luY2x1ZGVkID0gMTsKQEAgLTM3OCwxMCArMzkyLDcgQEAKICAgICAgICAgICBtYXhkaXNrcyA9IDUwOwogICAgICAgICAgIGRpc2tzID0gbWFsbG9jKG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwogICAgICAgICAgIGlmICghZGlza3MpIHsKLSAgICAgICAgICAgICAgY2hhciB0bXBidWZbMTAyNF07Ci0gICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJcdGlnbm9yaW5nOiAgJXMiLCBkZXZpY2UpOwotICAgICAgICAgICAgICB0bXBidWZbIHNpemVvZih0bXBidWYpLTEgXSA9IDA7Ci0gICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKwkgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiXHRpZ25vcmluZzogICVzIiwgZGV2aWNlKTsKICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIH0KICAgICAgICAgICBtZW1zZXQoZGlza3MsIDAsIG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwpAQCAtMzg5LDExICs0MDAsOCBAQAogICAgICAgICAgIG1heGRpc2tzICo9IDI7CiAgICAgICAgICAgZGlza3MgPSByZWFsbG9jKGRpc2tzLCBtYXhkaXNrcyAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKICAgICAgICAgICBpZiAoIWRpc2tzKSB7Ci0gICAgICAgICAgICAgIGNoYXIgdG1wYnVmWzEwMjRdOwogICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJtYWxsb2MgZmFpbGVkIGZvciBuZXcgZGlzayBhbGxvY2F0aW9uLiIpOwotICAgICAgICAgICAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLCAiXHRpZ25vcmluZzogICVzIiwgZGV2aWNlKTsKLSAgICAgICAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIlx0aWdub3Jpbmc6ICAlcyIsIGRldmljZSk7CiAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICB9CiAgICAgICAgICAgbWVtc2V0KGRpc2tzICsgbWF4ZGlza3MvMiwgMCwgbWF4ZGlza3MvMiAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKQEAgLTQ2NCw3ICs0NzIsNyBAQAogI2lmIGRlZmluZWQoSEFWRV9HRVRNTlRFTlQpIHx8IGRlZmluZWQoSEFWRV9GU1RBQl9IKQogICBpbnQgZHVtbXkgPSAwOwogI2VuZGlmCi0gIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07CisKICAgLyogCiAgICAqIGZpbmQgdGhlIGRldmljZSBmb3IgdGhlIHBhdGggYW5kIGNvcHkgdGhlIGRldmljZSBpbnRvIHRoZQogICAgKiBzdHJpbmcgZGVjbGFyZWQgYWJvdmUgYW5kIGF0IHRoZSBlbmQgb2YgdGhlIHJvdXRpbmUgcmV0dXJuIGl0CkBAIC00NzUsOCArNDgzLDcgQEAKICNpZiBIQVZFX1NFVE1OVEVOVAogICBtbnRmcCA9IHNldG1udGVudChFVENfTU5UVEFCLCAiciIpOwogICBpZiAoIW1udGZwKSB7Ci0gICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIkNhbid0IG9wZW4gJXMgKHNldG1udGVudClcbiIsIEVUQ19NTlRUQUIgKTsKLSAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJDYW4ndCBvcGVuICVzIChzZXRtbnRlbnQpXG4iLCBFVENfTU5UVEFCKTsKICAgICAgIHJldHVybjsKICAgfQogICB3aGlsZSAobW50ZnAgJiYgTlVMTCAhPSAobW50ZW50ID0gZ2V0bW50ZW50KG1udGZwKSkpIHsKQEAgLTQ5Myw4ICs1MDAsNyBAQAogI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBnZXRtZW50ZW50IGJ1dCBub3Qgc2V0bW50ZW50ICovCiAgIG1udGZwID0gZm9wZW4oRVRDX01OVFRBQiwgInIiKTsKICAgaWYgKCFtbnRmcCkgewotICAgICAgc25wcmludGYoIHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJDYW4ndCBvcGVuICVzIChmb3BlbilcbiIsIEVUQ19NTlRUQUIgKTsKLSAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJDYW4ndCBvcGVuICVzIChmb3BlbilcbiIsIEVUQ19NTlRUQUIpOwogICAgICAgcmV0dXJuOwogICB9CiAgIHdoaWxlICgoaSA9IGdldG1udGVudChtbnRmcCwgJm1udHRhYikpID09IDApIHsKQEAgLTU0NSwxMSArNTUxLDggQEAKICAgICBpZiAobnVtZGlza3MgPT0gbWF4ZGlza3MpIHsKICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAiQ291bGRuJ3QgZmluZCBkZXZpY2UgZm9yIGRpc2sgJXMiLAotICAgICAgICAgICAgIGRpc2tzW251bWRpc2tzXS5wYXRoKTsKLSAgICB0bXBidWZbIHNpemVvZih0bXBidWYpLTEgXSA9IDA7Ci0gICAgY29uZmlnX3B3YXJuKHRtcGJ1Zik7CisgICAgbmV0c25tcF9jb25maWdfd2FybigiQ291bGRuJ3QgZmluZCBkZXZpY2UgZm9yIGRpc2sgJXMiLAorCQkJZGlza3NbbnVtZGlza3NdLnBhdGgpOwogICAgIGRpc2tzW251bWRpc2tzXS5taW5pbXVtc3BhY2UgPSAtMTsKICAgICBkaXNrc1tudW1kaXNrc10ubWlucGVyY2VudCA9IC0xOwogICAgIGRpc2tzW251bWRpc2tzXS5wYXRoWzBdID0gMDsKQEAgLTU3Niw3ICs1NzksNiBAQAogI2VsaWYgSEFWRV9TVEFURlMKICAgc3RydWN0IHN0YXRmcyAgIHN0YXRmOwogI2VuZGlmCi0gIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07CiAgIHN0YXRpYyBjaGFyICAgICBkZXZpY2VbU1RSTUFYXTsKICNpZiBkZWZpbmVkKEhBVkVfR0VUTU5URU5UKSAmJiAhZGVmaW5lZChIQVZFX1NFVE1OVEVOVCkKICAgaW50ICAgICAgICAgICAgIGk7CkBAIC01OTQsOCArNTk2LDcgQEAKICNpZiBIQVZFX1NFVE1OVEVOVAogICBtbnRmcCA9IHNldG1udGVudChFVENfTU5UVEFCLCAiciIpOwogICBpZiAoIW1udGZwKSB7Ci0gICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIkNhbid0IG9wZW4gJXMgKHNldG1udGVudClcbiIsIEVUQ19NTlRUQUIgKTsKLSAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJDYW4ndCBvcGVuICVzIChzZXRtbnRlbnQpXG4iLCBFVENfTU5UVEFCKTsKICAgICAgIHJldHVybiBOVUxMOwogICB9CiAgIHdoaWxlIChtbnRmcCAmJiBOVUxMICE9IChtbnRlbnQgPSBnZXRtbnRlbnQobW50ZnApKSkKQEAgLTYxMyw4ICs2MTQsNyBAQAogI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBnZXRtZW50ZW50IGJ1dCBub3Qgc2V0bW50ZW50ICovCiAgIG1udGZwID0gZm9wZW4oRVRDX01OVFRBQiwgInIiKTsKICAgaWYgKCFtbnRmcCkgewotICAgICAgc25wcmludGYoIHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJDYW4ndCBvcGVuICVzIChmb3BlbilcbiIsIEVUQ19NTlRUQUIgKTsKLSAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJDYW4ndCBvcGVuICVzIChmb3BlbilcbiIsIEVUQ19NTlRUQUIpOwogICAgICAgcmV0dXJuIE5VTEw7CiAgIH0KICAgd2hpbGUgKChpID0gZ2V0bW50ZW50KG1udGZwLCAmbW50dGFiKSkgPT0gMCkKQEAgLTY0OCw5ICs2NDgsNyBAQAogICB9CiAjZW5kaWYKICAgZWxzZSB7Ci0gICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIkNvdWxkbid0IGZpbmQgZGV2aWNlIGZvciBkaXNrICVzIiwKLQkgICAgcGF0aCk7Ci0gICAgY29uZmlnX3B3YXJuKHRtcGJ1Zik7CisgICAgbmV0c25tcF9jb25maWdfd2FybigiQ291bGRuJ3QgZmluZCBkZXZpY2UgZm9yIGRpc2sgJXMiLCBwYXRoKTsKICAgfQogI2Vsc2UKICAgY29uZmlnX3BlcnJvcigiJ2Rpc2snIGNoZWNrcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiIpOwpAQCAtNjU5LDM5ICs2NTcsMzMgQEAKIH0KICNlbmRpZgogCi0KIC8qCi0gKiB2YXJfZXh0ZW5zaWJsZV9kaXNrKC4uLgotICogQXJndW1lbnRzOgotICogdnAgICAgIElOICAgICAgLSBwb2ludGVyIHRvIHZhcmlhYmxlIGVudHJ5IHRoYXQgcG9pbnRzIGhlcmUKLSAqIG5hbWUgICAgSU4vT1VUICAtIElOL25hbWUgcmVxdWVzdGVkLCBPVVQvbmFtZSBmb3VuZAotICogbGVuZ3RoICBJTi9PVVQgIC0gbGVuZ3RoIG9mIElOL09VVCBvaWQncyAKLSAqIGV4YWN0ICAgSU4gICAgICAtIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggd2FzIHJlcXVlc3RlZAotICogdmFyX2xlbiBPVVQgICAgIC0gbGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQKLSAqIHdyaXRlX21ldGhvZAotICogCisgKiBQYXJ0IG9mIFVDRC1TTk1QLU1JQjo6ZHNrRW50cnksIHdoaWNoIGlzIHNvIGhhcmQgdG8gZmlsbCAKKyAqIChpLmUuIHBsYXRmb3JtIGRlcGVuZGVudCBwYXJ0cykuCiAgKi8KLXVfY2hhciAgICAgICAgICoKLXZhcl9leHRlbnNpYmxlX2Rpc2soc3RydWN0IHZhcmlhYmxlICp2cCwKLSAgICAgICAgICAgICAgICAgICAgb2lkICogbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsCi0gICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKLXsKK3N0cnVjdCBkc2tfZW50cnkgeworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAgZHNrVG90YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nICBkc2tVc2VkOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAgZHNrQXZhaWw7CisgICAgdW5zaWduZWQgbG9uZyAgICAgICBkc2tQZXJjZW50OworICAgIHVuc2lnbmVkIGxvbmcgICAgICAgZHNrUGVyY2VudElub2RlOworICAgIHVuc2lnbmVkIGxvbmcgICAgICAgZHNrRXJyb3JGbGFnOworfTsKIAotICAgIGludCAgICAgICAgICAgICBwZXJjZW50LCBpc2Vycm9yOwotICAgIHVuc2lnbmVkIGludCAgICBkaXNrbnVtID0gMDsKLSNpZiAhZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpICYmICFkZWZpbmVkKEhBVkVfU1RBVEZTKQotICAgIGRvdWJsZSAgICAgICAgICB0b3RhbGJsa3MsIGZyZWUsIHVzZWQsIGF2YWlsLCBhdmFpbGJsa3M7Ci0jZWxzZQotICAgIHN0YXRpYyBsb25nICAgICBhdmFpbDsKLSNpZiBkZWZpbmVkKFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZJTEVTKSB8fCBkZWZpbmVkKFNUUlVDVF9TVEFURlNfSEFTX0ZfRklMRVMpCi0gICAgaW50ICAgICAgICAgICAgIHBlcmNlbnRfaW5vZGU7Ci0jZW5kaWYKLSNlbmRpZgotICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKLSAgICBzdGF0aWMgY2hhciAgICAgZXJybXNnWzMwMF07CisvKioKKyAqIEZpbGwgaW4gdGhlIHByb3ZpZGVkIGRza19lbnRyeSBzdHJ1Y3R1cmUuCisgKiBSZXR1cm5zIC0xIG9uIGVycm9yLCAwIG9uIHN1Y2Nlc3MuCisgKi8KKworc3RhdGljIGludAorZmlsbF9kc2tfZW50cnkoaW50IGRpc2tudW0sIHN0cnVjdCBkc2tfZW50cnkgKmVudHJ5KQoreworI2lmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSB8fCBkZWZpbmVkKEhBVkVfU1RBVEZTKQogICAgIGZsb2F0ICAgICAgICAgICBtdWx0aXBsaWVyOworI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX0ZTVEFCX0gpICYmICFkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkgJiYgIWRlZmluZWQoSEFWRV9TVEFURlMpCisgICAgZG91YmxlICAgICAgICAgIHRvdGFsYmxrcywgZnJlZSwgdXNlZCwgYXZhaWwsIGF2YWlsYmxrczsKKyNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX1NUQVRWRlMpIHx8IGRlZmluZWQoSEFWRV9TVEFURlMpCiAjaWZkZWYgU1RBVF9TVEFURlNfRlNfREFUQQpAQCAtNzEzLDYgKzcwNSwxMzIgQEAKICNlbmRpZgogI2VuZGlmCiAKKyAgICBlbnRyeS0+ZHNrUGVyY2VudElub2RlID0gLTE7CisKKyNpZiBkZWZpbmVkKEhBVkVfU1RBVFZGUykgfHwgZGVmaW5lZChIQVZFX1NUQVRGUykKKyNpZmRlZiBTVEFUX1NUQVRGU19GU19EQVRBCisgICAgaWYgKHN0YXR2ZnMoZGlza3NbZGlza251bV0ucGF0aCwgJmZzZCkgPT0gLTEpCisjZWxzZQorICAgIGlmIChzdGF0dmZzKGRpc2tzW2Rpc2tudW1dLnBhdGgsICZ2ZnMpID09IC0xKQorI2VuZGlmCisgICAgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3Qgb3BlbiBkZXZpY2UgJXNcbiIsCisgICAgICAgICAgICAgICAgIGRpc2tzW2Rpc2tudW1dLmRldmljZSk7CisgICAgICAgIHNldFBlcnJvcnN0YXR1cygic3RhdHZmcyBkZXYvZGlzayIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2lmZGVmIFNUQVRfU1RBVEZTX0ZTX0RBVEEKKyAgICB2ZnMuZl9ibG9ja3MgPSBmc2QuZmRfYnRvdDsKKyAgICB2ZnMuZl9iZnJlZSA9IGZzZC5mZF9iZnJlZTsKKyAgICB2ZnMuZl9iYXZhaWwgPSBmc2QuZmRfYmZyZWVuOworICAgIHZmcy5mX2JzaXplID0gMTAyNDsgICAgICAgICAvKiAgVWx0cml4IGZfYnNpemUgaXMgYSBWTSBwYXJhbWV0ZXIgYXBwYXJlbnRseS4gICovCisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfT0RTKQorICAgIHZmcy5mX2Jsb2NrcyA9IHZmcy5mX3NwYXJlWzBdOworICAgIHZmcy5mX2JmcmVlID0gdmZzLmZfc3BhcmVbMV07CisgICAgdmZzLmZfYmF2YWlsID0gdmZzLmZfc3BhcmVbMl07CisjZW5kaWYKKworICAgIG11bHRpcGxpZXIgPSAoZmxvYXQpdmZzLmZfYnNpemUgLyAoZmxvYXQpMTAyNC4wOworI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUKKyAgICBpZiAodmZzLmZfZnJzaXplID4gMjU1KQorICAgICAgICBtdWx0aXBsaWVyID0gKGZsb2F0KXZmcy5mX2Zyc2l6ZSAvIChmbG9hdCkxMDI0LjA7CisjZW5kaWYKKworICAgIGVudHJ5LT5kc2tUb3RhbCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpKHZmcy5mX2Jsb2NrcyAqIG11bHRpcGxpZXIpOworICAgIGVudHJ5LT5kc2tBdmFpbCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpKHZmcy5mX2JhdmFpbCAqIG11bHRpcGxpZXIpOworICAgIGVudHJ5LT5kc2tVc2VkID0gKHVuc2lnbmVkIGxvbmcgbG9uZykoKHZmcy5mX2Jsb2NrcyAtIHZmcy5mX2JmcmVlKSAqIG11bHRpcGxpZXIpOworCisgICAgZW50cnktPmRza1BlcmNlbnQgPSAKKyAgICAgICAgdmZzLmZfYmxvY2tzID09IDAgPyAwIDoKKyAgICAgICAgdmZzLmZfYmF2YWlsIDw9IDAgPyAxMDAgOgorICAgICAgICAoaW50KSAoKGRvdWJsZSkgKHZmcy5mX2Jsb2NrcyAtIHZmcy5mX2JmcmVlKSAvCisgICAgICAgICAgICAgICAoZG91YmxlKSAodmZzLmZfYmxvY2tzIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAodmZzLmZfYmZyZWUgLSB2ZnMuZl9iYXZhaWwpKSAqIDEwMC4wICsgMC41KTsKKworI2lmIGRlZmluZWQoSEFWRV9TVFJVQ1RfU1RBVFZGU19GX0ZJTEVTKSB8fCBkZWZpbmVkIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZBVkFJTAorICAgIGVudHJ5LT5kc2tQZXJjZW50SW5vZGUgPSB2ZnMuZl9mYXZhaWwgPD0gMCA/IDEwMCA6CisgICAgICAgIChpbnQpICgoZG91YmxlKSAodmZzLmZfZmlsZXMgLSB2ZnMuZl9mZnJlZSkgLworICAgICAgICAgICAgICAgKGRvdWJsZSkgKHZmcy5mX2ZpbGVzIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAodmZzLmZfZmZyZWUgLSB2ZnMuZl9mYXZhaWwpKSAqIDEwMC4wICsgMC41KTsKKyNlbHNlCisjaWYgZGVmaW5lZChIQVZFX1NUUlVDVF9TVEFURlNfRl9GSUxFUykgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9TVEFURlNfRl9GRlJFRSkKKyAgICBlbnRyeS0+ZHNrUGVyY2VudElub2RlID0gdmZzLmZfZmlsZXMgPT0gMCA/IDEwMC4wIDoKKyAgICAgIChpbnQpICgoZG91YmxlKSAodmZzLmZfZmlsZXMgLSB2ZnMuZl9mZnJlZSkgLworICAgICAgICAgICAgICAoZG91YmxlKSAodmZzLmZfZmlsZXMpICogMTAwLjAgKyAwLjUpOworI2VuZGlmIAorI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TVFJVQ1RfU1RBVFZGU19GX0ZJTEVTKSAqLworCisjZWxzZQorI2lmIEhBVkVfRlNUQUJfSAorICAgIC8qCisgICAgICogcmVhZCB0aGUgZGlzayBpbmZvcm1hdGlvbiAKKyAgICAgKi8KKyAgICBpZiAoKGZpbGUgPSBvcGVuKGRpc2tzW2Rpc2tudW1dLmRldmljZSwgMCkpIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3Qgb3BlbiBkZXZpY2UgJXNcbiIsCisgICAgICAgICAgICAgICAgIGRpc2tzW2Rpc2tudW1dLmRldmljZSk7CisgICAgICAgIHNldFBlcnJvcnN0YXR1cygib3BlbiBkZXYvZGlzayIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGxzZWVrKGZpbGUsIChsb25nKSAoU0JMT0NLICogREVWX0JTSVpFKSwgMCk7CisgICAgaWYgKHJlYWQoZmlsZSwgKGNoYXIgKikgJmZpbGVzeXMsIFNCU0laRSkgIT0gU0JTSVpFKSB7CisgICAgICAgIHNldFBlcnJvcnN0YXR1cygib3BlbiBkZXYvZGlzayIpOworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRXJyb3IgcmVhZGluZyBkZXZpY2UgJXNcbiIsCisgICAgICAgICAgICAgICAgIGRpc2tzW2Rpc2tudW1dLmRldmljZSk7CisgICAgICAgIGNsb3NlKGZpbGUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGNsb3NlKGZpbGUpOworCisgICAgdG90YWxibGtzID0gZmlsZXN5cy5mc19kc2l6ZTsKKyAgICBmcmVlID0gZmlsZXN5cy5mc19jc3RvdGFsLmNzX25iZnJlZSAqIGZpbGVzeXMuZnNfZnJhZyArCisgICAgICAgIGZpbGVzeXMuZnNfY3N0b3RhbC5jc19uZmZyZWU7CisgICAgdXNlZCA9IHRvdGFsYmxrcyAtIGZyZWU7CisgICAgYXZhaWxibGtzID0gdG90YWxibGtzICogKDEwMCAtIGZpbGVzeXMuZnNfbWluZnJlZSkgLyAxMDA7CisgICAgYXZhaWwgPSBhdmFpbGJsa3MgPiB1c2VkID8gYXZhaWxibGtzIC0gdXNlZCA6IDA7CisgICAgZW50cnktPmRza1BlcmNlbnQgPQorICAgICAgICB0b3RhbGJsa3MgPT0gMCA/IDAgOgorICAgICAgICBhdmFpbGJsa3MgPT0gMCA/IDEwMCA6CisgICAgICAgIChpbnQpICgoZG91YmxlKSB1c2VkIC8gKGRvdWJsZSkgdG90YWxibGtzICogMTAwLjAgKyAwLjUpOworICAgIG11bHRpcGxpZXIgPSAoZmxvYXQpZmlsZXN5cy5mc19mc2l6ZSAvIChmbG9hdCkxMDI0LjA7CisgICAgZW50cnktPmRza1RvdGFsID0gKHVuc2lnbmVkIGxvbmcgbG9uZykodG90YWxibGtzICogbXVsdGlwbGllcik7CisgICAgZW50cnktPmRza0F2YWlsID0gKHVuc2lnbmVkIGxvbmcgbG9uZykoYXZhaWwgKiBtdWx0aXBsaWVyKTsKKyAgICBlbnRyeS0+ZHNrVXNlZCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpKHVzZWQgKiBtdWx0aXBsaWVyKTsKKyNlbmRpZgorI2VuZGlmCisKKyAgICBlbnRyeS0+ZHNrRXJyb3JGbGFnID0KKyAgICAgICAgKGRpc2tzW2Rpc2tudW1dLm1pbmltdW1zcGFjZSA+PSAwCisgICAgICAgICAgICA/IGVudHJ5LT5kc2tBdmFpbCA8IGRpc2tzW2Rpc2tudW1dLm1pbmltdW1zcGFjZQorICAgICAgICAgICAgOiAxMDAgLSBlbnRyeS0+ZHNrUGVyY2VudCA8PSBkaXNrc1tkaXNrbnVtXS5taW5wZXJjZW50KSA/IDEgOiAwOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiB2YXJfZXh0ZW5zaWJsZV9kaXNrKC4uLgorICogQXJndW1lbnRzOgorICogdnAgICAgIElOICAgICAgLSBwb2ludGVyIHRvIHZhcmlhYmxlIGVudHJ5IHRoYXQgcG9pbnRzIGhlcmUKKyAqIG5hbWUgICAgSU4vT1VUICAtIElOL25hbWUgcmVxdWVzdGVkLCBPVVQvbmFtZSBmb3VuZAorICogbGVuZ3RoICBJTi9PVVQgIC0gbGVuZ3RoIG9mIElOL09VVCBvaWQncyAKKyAqIGV4YWN0ICAgSU4gICAgICAtIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggd2FzIHJlcXVlc3RlZAorICogdmFyX2xlbiBPVVQgICAgIC0gbGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQKKyAqIHdyaXRlX21ldGhvZAorICogCisgKi8KK3VfY2hhciAgICAgICAgICoKK3Zhcl9leHRlbnNpYmxlX2Rpc2soc3RydWN0IHZhcmlhYmxlICp2cCwKKyAgICAgICAgICAgICAgICAgICAgb2lkICogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmV0OworCXVuc2lnbmVkIGludAlkaXNrbnVtID0gMDsKKyAgICBzdHJ1Y3QgZHNrX2VudHJ5IGVudHJ5OworICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKKyAgICBzdGF0aWMgY2hhciAgICAgZXJybXNnWzMwMF07CisKIHRyeUFnYWluOgogICAgIGlmIChoZWFkZXJfc2ltcGxlX3RhYmxlCiAgICAgICAgICh2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwgdmFyX2xlbiwgd3JpdGVfbWV0aG9kLCBudW1kaXNrcykpCkBAIC03MzcsMTg5ICs4NTUsODYgQEAKICAgICAgICAgbG9uZ19yZXQgPSBkaXNrc1tkaXNrbnVtXS5taW5wZXJjZW50OwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOwogICAgIH0KLSNpZiBkZWZpbmVkKEhBVkVfU1RBVFZGUykgfHwgZGVmaW5lZChIQVZFX1NUQVRGUykKLSNpZmRlZiBTVEFUX1NUQVRGU19GU19EQVRBCi0gICAgaWYgKHN0YXR2ZnMoZGlza3NbZGlza251bV0ucGF0aCwgJmZzZCkgPT0gLTEpCi0jZWxzZQotICAgIGlmIChzdGF0dmZzKGRpc2tzW2Rpc2tudW1dLnBhdGgsICZ2ZnMpID09IC0xKQotI2VuZGlmCi0gICAgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3Qgb3BlbiBkZXZpY2UgJXNcbiIsCi0gICAgICAgICAgICAgICAgIGRpc2tzW2Rpc2tudW1dLmRldmljZSk7Ci0gICAgICAgIHNldFBlcnJvcnN0YXR1cygic3RhdHZmcyBkZXYvZGlzayIpOworCisgICAgcmV0ID0gZmlsbF9kc2tfZW50cnkoZGlza251bSwgJmVudHJ5KTsKKyAgICBpZiAocmV0IDwgMCkgewogICAgICAgICBpZiAoIWV4YWN0KQogICAgICAgICAgICAgZ290byB0cnlBZ2FpbjsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI2lmZGVmIFNUQVRfU1RBVEZTX0ZTX0RBVEEKLSAgICB2ZnMuZl9ibG9ja3MgPSBmc2QuZmRfYnRvdDsKLSAgICB2ZnMuZl9iZnJlZSA9IGZzZC5mZF9iZnJlZTsKLSAgICB2ZnMuZl9iYXZhaWwgPSBmc2QuZmRfYmZyZWVuOwotICAgIHZmcy5mX2JzaXplID0gMTAyNDsgICAgICAgICAvKiAgVWx0cml4IGZfYnNpemUgaXMgYSBWTSBwYXJhbWV0ZXIgYXBwYXJlbnRseS4gICovCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfT0RTKQotICAgIHZmcy5mX2Jsb2NrcyA9IHZmcy5mX3NwYXJlWzBdOwotICAgIHZmcy5mX2JmcmVlID0gdmZzLmZfc3BhcmVbMV07Ci0gICAgdmZzLmZfYmF2YWlsID0gdmZzLmZfc3BhcmVbMl07Ci0jZW5kaWYKLSAgICBwZXJjZW50ID0KLSAgICAgICAgdmZzLmZfYmxvY2tzID09IDAgPyAwIDoKLSAgICAgICAgdmZzLmZfYmF2YWlsIDw9IDAgPyAxMDAgOgotICAgICAgICAoaW50KSAoKGRvdWJsZSkgKHZmcy5mX2Jsb2NrcyAtIHZmcy5mX2JmcmVlKSAvCi0gICAgICAgICAgICAgICAoZG91YmxlKSAodmZzLmZfYmxvY2tzIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAodmZzLmZfYmZyZWUgLSB2ZnMuZl9iYXZhaWwpKSAqIDEwMC4wICsgMC41KTsKLSAgICBtdWx0aXBsaWVyID0gKGZsb2F0KXZmcy5mX2JzaXplIC8gKGZsb2F0KTEwMjQuMDsKLSNpZmRlZiBTVFJVQ1RfU1RBVFZGU19IQVNfRl9GUlNJWkUKLSAgICBpZiAodmZzLmZfZnJzaXplID4gMjU1KQotICAgICAgICBtdWx0aXBsaWVyID0gKGZsb2F0KXZmcy5mX2Zyc2l6ZSAvIChmbG9hdCkxMDI0LjA7Ci0jZW5kaWYKLSAgICBhdmFpbCA9IChsb25nKSh2ZnMuZl9iYXZhaWwgKiBtdWx0aXBsaWVyKTsKLSAgICBpc2Vycm9yID0gKGRpc2tzW2Rpc2tudW1dLm1pbmltdW1zcGFjZSA+PSAwID8KLSAgICAgICAgICAgICAgIHZmcy5mX2JhdmFpbCA8IChkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UvbXVsdGlwbGllcikgOgotICAgICAgICAgICAgICAgMTAwIC0gcGVyY2VudCA8PSBkaXNrc1tkaXNrbnVtXS5taW5wZXJjZW50KSA/IDEgOiAwOwotI2lmIGRlZmluZWQoU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRklMRVMpIHx8IGRlZmluZWQgU1RSVUNUX1NUQVRGU19IQVNfRl9GQVZBSUwKLSAgICBwZXJjZW50X2lub2RlID0gdmZzLmZfZmF2YWlsIDw9IDAgPyAxMDAgOgotICAgICAgICAoaW50KSAoKGRvdWJsZSkgKHZmcy5mX2ZpbGVzIC0gdmZzLmZfZmZyZWUpIC8KLSAgICAgICAgICAgICAgIChkb3VibGUpICh2ZnMuZl9maWxlcyAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHZmcy5mX2ZmcmVlIC0gdmZzLmZfZmF2YWlsKSkgKiAxMDAuMCArIDAuNSk7Ci0jZWxzZQotI2lmIGRlZmluZWQoU1RSVUNUX1NUQVRGU19IQVNfRl9GSUxFUykgJiYgZGVmaW5lZChTVFJVQ1RfU1RBVEZTX0hBU19GX0ZGUkVFKQotICAgcGVyY2VudF9pbm9kZSA9IHZmcy5mX2ZpbGVzID09IDAgPyAxMDAuMCA6Ci0gICAgICAoaW50KSAoKGRvdWJsZSkgKHZmcy5mX2ZpbGVzIC0gdmZzLmZfZmZyZWUpIC8KLQkgICAgICAgICAgKGRvdWJsZSkgKHZmcy5mX2ZpbGVzKSAqIDEwMC4wICsgMC41KTsKLSNlbmRpZiAKLSNlbmRpZiAvKiBkZWZpbmVkKFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZJTEVTKSAqLyAKKwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBESVNLVE9UQUw6Ci0gICAgICAgIGlmICggdmZzLmZfYmxvY2tzID4gKCBJTlQzMl9NQVggLyBtdWx0aXBsaWVyICkpCi0gICAgICAgICAgICBsb25nX3JldCA9IElOVDMyX01BWDsKKyAgICAgICAgaWYgKGVudHJ5LmRza1RvdGFsID4gTUFYX0lOVF8zMikKKyAgICAgICAgICAgIGxvbmdfcmV0ID0gTUFYX0lOVF8zMjsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9uZ19yZXQgPSAobG9uZykodmZzLmZfYmxvY2tzICogbXVsdGlwbGllcik7CisgICAgICAgICAgICBsb25nX3JldCA9IChsb25nKShlbnRyeS5kc2tUb3RhbCk7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CisgICAgY2FzZSBESVNLVE9UQUxMT1c6CisgICAgICAgIGxvbmdfcmV0ID0gZW50cnkuZHNrVG90YWwgJiBNQVhfVUlOVF8zMjsKKyAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKyAgICBjYXNlIERJU0tUT1RBTEhJR0g6CisgICAgICAgIGxvbmdfcmV0ID0gZW50cnkuZHNrVG90YWwgPj4gMzI7CisgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CisgICAgICAgIAogICAgIGNhc2UgRElTS0FWQUlMOgotICAgICAgICBpZiAoIHZmcy5mX2JhdmFpbCA+ICggSU5UMzJfTUFYIC8gbXVsdGlwbGllciApKQotICAgICAgICAgICAgbG9uZ19yZXQgPSBJTlQzMl9NQVg7CisgICAgICAgIGlmIChlbnRyeS5kc2tBdmFpbCA+IE1BWF9JTlRfMzIpCisgICAgICAgICAgICBsb25nX3JldCA9IE1BWF9JTlRfMzI7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gKGxvbmcpKHZmcy5mX2JhdmFpbCAqIG11bHRpcGxpZXIpOworICAgICAgICAgICAgbG9uZ19yZXQgPSAobG9uZykoZW50cnkuZHNrQXZhaWwpOwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOworICAgIGNhc2UgRElTS0FWQUlMTE9XOgorICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza0F2YWlsICYgTUFYX1VJTlRfMzI7CisgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CisgICAgY2FzZSBESVNLQVZBSUxISUdIOgorICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza0F2YWlsID4+IDMyOworICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOworCiAgICAgY2FzZSBESVNLVVNFRDoKLSAgICAgICAgaWYgKCAodmZzLmZfYmxvY2tzIC0gdmZzLmZfYmZyZWUpID4gKCBJTlQzMl9NQVggLyBtdWx0aXBsaWVyICkpCi0gICAgICAgICAgICBsb25nX3JldCA9IElOVDMyX01BWDsKKyAgICAgICAgaWYgKGVudHJ5LmRza1VzZWQgPiBNQVhfSU5UXzMyKQorICAgICAgICAgICAgbG9uZ19yZXQgPSBNQVhfSU5UXzMyOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb25nX3JldCA9IChsb25nKSgodmZzLmZfYmxvY2tzIC0gdmZzLmZfYmZyZWUpICogbXVsdGlwbGllcik7CisgICAgICAgICAgICBsb25nX3JldCA9IChsb25nKShlbnRyeS5kc2tVc2VkKTsKICAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKyAgICBjYXNlIERJU0tVU0VETE9XOgorICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza1VzZWQgJiBNQVhfVUlOVF8zMjsKKyAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKyAgICBjYXNlIERJU0tVU0VESElHSDoKKyAgICAgICAgbG9uZ19yZXQgPSBlbnRyeS5kc2tVc2VkID4+IDMyOworICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOworCiAgICAgY2FzZSBESVNLUEVSQ0VOVDoKLSAgICAgICAgbG9uZ19yZXQgPSBwZXJjZW50OworICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza1BlcmNlbnQ7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0jaWYgZGVmaW5lZChTVFJVQ1RfU1RBVFZGU19IQVNfRl9GSUxFUykgfHwgZGVmaW5lZCAoU1RSVUNUX1NUQVRGU19IQVNfRl9GSUxFUykKKwogICAgIGNhc2UgRElTS1BFUkNFTlROT0RFOgotICAgICAgICBsb25nX3JldCA9IHBlcmNlbnRfaW5vZGU7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKGVudHJ5LmRza1BlcmNlbnRJbm9kZSA+PSAwKSB7CisgICAgICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza1BlcmNlbnRJbm9kZTsKKyAgICAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBjYXNlIEVSUk9SRkxBRzoKLSAgICAgICAgbG9uZ19yZXQgPSBpc2Vycm9yOworICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza0Vycm9yRmxhZzsKICAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKwogICAgIGNhc2UgRVJST1JNU0c6Ci0gICAgICAgIGlmIChpc2Vycm9yKSB7CisgICAgICAgIGlmIChlbnRyeS5kc2tFcnJvckZsYWcpIHsKICAgICAgICAgICAgIGlmIChkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UgPj0gMCkKICAgICAgICAgICAgICAgICBzbnByaW50ZihlcnJtc2csIHNpemVvZihlcnJtc2cpLAogICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBsZXNzIHRoYW4gJWQgZnJlZSAoPSAlZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0ucGF0aCwgZGlza3NbZGlza251bV0ubWluaW11bXNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgKGludCkgYXZhaWwpOworICAgICAgICAgICAgICAgICAgICAgICAgKGludCkgZW50cnkuZHNrQXZhaWwpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNucHJpbnRmKGVycm1zZywgc2l6ZW9mKGVycm1zZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6IGxlc3MgdGhhbiAlZCUlIGZyZWUgKD0gJWQlJSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0ucGF0aCwgZGlza3NbZGlza251bV0ubWlucGVyY2VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgKGludCllbnRyeS5kc2tQZXJjZW50KTsKICAgICAgICAgICAgIGVycm1zZ1sgc2l6ZW9mKGVycm1zZyktMSBdID0gMDsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBlcnJtc2dbMF0gPSAwOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihlcnJtc2cpOwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKGVycm1zZykpOwogICAgIH0KLSNlbHNlCi0jaWYgSEFWRV9GU1RBQl9ICi0gICAgLyoKLSAgICAgKiByZWFkIHRoZSBkaXNrIGluZm9ybWF0aW9uIAotICAgICAqLwotICAgIGlmICgoZmlsZSA9IG9wZW4oZGlza3NbZGlza251bV0uZGV2aWNlLCAwKSkgPCAwKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZG4ndCBvcGVuIGRldmljZSAlc1xuIiwKLSAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0uZGV2aWNlKTsKLSAgICAgICAgc2V0UGVycm9yc3RhdHVzKCJvcGVuIGRldi9kaXNrIik7Ci0gICAgICAgIGlmICghZXhhY3QpCi0gICAgICAgICAgICBnb3RvIHRyeUFnYWluOwotICAgICAgICByZXR1cm4gKE5VTEwpOwotICAgIH0KLSAgICBsc2VlayhmaWxlLCAobG9uZykgKFNCTE9DSyAqIERFVl9CU0laRSksIDApOwotICAgIGlmIChyZWFkKGZpbGUsIChjaGFyICopICZmaWxlc3lzLCBTQlNJWkUpICE9IFNCU0laRSkgewotICAgICAgICBzZXRQZXJyb3JzdGF0dXMoIm9wZW4gZGV2L2Rpc2siKTsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkVycm9yIHJlYWRpbmcgZGV2aWNlICVzXG4iLAotICAgICAgICAgICAgICAgICBkaXNrc1tkaXNrbnVtXS5kZXZpY2UpOwotICAgICAgICBjbG9zZShmaWxlKTsKLSAgICAgICAgaWYgKCFleGFjdCkKLSAgICAgICAgICAgIGdvdG8gdHJ5QWdhaW47Ci0gICAgICAgIHJldHVybiAoTlVMTCk7Ci0gICAgfQotICAgIGNsb3NlKGZpbGUpOwotICAgIHRvdGFsYmxrcyA9IGZpbGVzeXMuZnNfZHNpemU7Ci0gICAgZnJlZSA9IGZpbGVzeXMuZnNfY3N0b3RhbC5jc19uYmZyZWUgKiBmaWxlc3lzLmZzX2ZyYWcgKwotICAgICAgICBmaWxlc3lzLmZzX2NzdG90YWwuY3NfbmZmcmVlOwotICAgIHVzZWQgPSB0b3RhbGJsa3MgLSBmcmVlOwotICAgIGF2YWlsYmxrcyA9IHRvdGFsYmxrcyAqICgxMDAgLSBmaWxlc3lzLmZzX21pbmZyZWUpIC8gMTAwOwotICAgIGF2YWlsID0gYXZhaWxibGtzID4gdXNlZCA/IGF2YWlsYmxrcyAtIHVzZWQgOiAwOwotICAgIHBlcmNlbnQgPQotICAgICAgICB0b3RhbGJsa3MgPT0gMCA/IDAgOgotICAgICAgICBhdmFpbGJsa3MgPT0gMCA/IDEwMCA6Ci0gICAgICAgIChpbnQpICgoZG91YmxlKSB1c2VkIC8gKGRvdWJsZSkgdG90YWxibGtzICogMTAwLjAgKyAwLjUpOwotICAgIG11bHRpcGxpZXIgPSAoZmxvYXQpZmlsZXN5cy5mc19mc2l6ZSAvIChmbG9hdCkxMDI0LjA7Ci0gICAgaXNlcnJvciA9Ci0gICAgICAgIChkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UgPj0gMAotICAgICAgICAgICAgPyBhdmFpbCAqIG11bHRpcGxpZXIgPCBkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UKLSAgICAgICAgICAgIDogMTAwIC0gcGVyY2VudCA8PSBkaXNrc1tkaXNrbnVtXS5taW5wZXJjZW50KSA/IDEgOiAwOwotICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBESVNLVE9UQUw6Ci0gICAgICAgIGlmICggdG90YWxibGtzID4gKCBJTlQzMl9NQVggLyBtdWx0aXBsaWVyICkpCi0gICAgICAgICAgICBsb25nX3JldCA9IElOVDMyX01BWDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9uZ19yZXQgPSAobG9uZykodG90YWxibGtzICogbXVsdGlwbGllcik7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0gICAgY2FzZSBESVNLQVZBSUw6Ci0gICAgICAgIGlmICggYXZhaWwgPiAoIElOVDMyX01BWCAvIG11bHRpcGxpZXIgKSkKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gSU5UMzJfTUFYOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb25nX3JldCA9IChsb25nKShhdmFpbCAqIG11bHRpcGxpZXIpOwotICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOwotICAgIGNhc2UgRElTS1VTRUQ6Ci0gICAgICAgIGlmICggdXNlZCA+ICggIElOVDMyX01BWCAvIG11bHRpcGxpZXIgKSkKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gSU5UMzJfTUFYOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb25nX3JldCA9IChsb25nKSh1c2VkICogbXVsdGlwbGllcik7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0gICAgY2FzZSBESVNLUEVSQ0VOVDoKLSAgICAgICAgbG9uZ19yZXQgPSBwZXJjZW50OwotICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOwotICAgIGNhc2UgRVJST1JGTEFHOgotICAgICAgICBsb25nX3JldCA9IGlzZXJyb3I7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0gICAgY2FzZSBFUlJPUk1TRzoKLSAgICAgICAgaWYgKGlzZXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UgPj0gMCkKLSAgICAgICAgICAgICAgICBzbnByaW50ZihlcnJtc2csIHNpemVvZihlcnJtc2cpLAotICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBsZXNzIHRoYW4gJWQgZnJlZSAoPSAlZCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0ucGF0aCwgZGlza3NbZGlza251bV0ubWluaW11bXNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWwgKiBmaWxlc3lzLmZzX2ZzaXplIC8gMTAyNCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc25wcmludGYoZXJybXNnLCBzaXplb2YoZXJybXNnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIlczogbGVzcyB0aGFuICVkJSUgZnJlZSAoPSAlZCUlKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNrc1tkaXNrbnVtXS5wYXRoLCBkaXNrc1tkaXNrbnVtXS5taW5wZXJjZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudCk7Ci0gICAgICAgICAgICBlcnJtc2dbIHNpemVvZihlcnJtc2cpLTEgXSA9IDA7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZXJybXNnWzBdID0gMDsKLSAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oZXJybXNnKTsKLSAgICAgICAgcmV0dXJuICgodV9jaGFyICopIChlcnJtc2cpKTsKLSAgICB9Ci0jZW5kaWYKLSNlbmRpZgogICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oCmluZGV4IDZiYzViMTQuLjIwZTkzMzIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmgKQEAgLTcsNyArNyw3IEBACiAKIHZvaWQgICAgICAgICAgICBpbml0X2Rpc2sodm9pZCk7CiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUpCiAKICAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2V4dGVuc2libGVfZGlzazsKIApAQCAtMjEsNSArMjEsMTEgQEAKICNkZWZpbmUgRElTS1VTRUQgOAogI2RlZmluZSBESVNLUEVSQ0VOVCA5CiAjZGVmaW5lIERJU0tQRVJDRU5UTk9ERSAxMAorI2RlZmluZSBESVNLVE9UQUxMT1cgMTEKKyNkZWZpbmUgRElTS1RPVEFMSElHSCAxMgorI2RlZmluZSBESVNLQVZBSUxMT1cgMTMKKyNkZWZpbmUgRElTS0FWQUlMSElHSCAxNAorI2RlZmluZSBESVNLVVNFRExPVyAxNQorI2RlZmluZSBESVNLVVNFREhJR0ggMTYKIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfRElTS19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jCmluZGV4IDA4ZWYzZjEuLmYyOTM4OGUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jCkBAIC0yNSwxMyArMjUsMTIgQEAKICMgZW5kaWYKICNlbmRpZgogCisjaW5jbHVkZSA8bWF0aC5oPgorCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCi0vKgotICogaGVhZGVyX2dlbmVyaWMoKSBjb21lcyBmcm9tIGhlcmUgCi0gKi8KLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgiCiAKIC8qCiAgKiBpbmNsdWRlIG91ciAuaCBmaWxlIApAQCAtNjEsMTggKzYwLDIyIEBACiBzdGF0aWMgaW50IHBzX251bWRpc2tzOwkJCS8qIG51bWJlciBvZiBkaXNrcyBpbiBzeXN0ZW0sIG1heSBjaGFuZ2Ugd2hpbGUgcnVubmluZyAqLwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKGJzZGkzKSB8fCBkZWZpbmVkKGJzZGk0KQorI2lmIGRlZmluZWQoYnNkaTMpIHx8IGRlZmluZWQoYnNkaTQpIHx8IGRlZmluZWQob3BlbmJzZDQpCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2lmZGVmIG9wZW5ic2Q0CisjaW5jbHVkZSA8c3lzL2Rpc2suaD4KKyNlbHNlCiAjaW5jbHVkZSA8c3lzL2Rpc2tzdGF0cy5oPgorI2VuZGlmCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJzZGkgKi8KIAotI2lmIGRlZmluZWQgKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGZyZWVic2Q1KQorI2lmIGRlZmluZWQoSEFWRV9HRVRERVZTKSB8fCBkZWZpbmVkKEhBVkVfREVWU1RBVF9HRVRERVZTKQogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDEwMQorI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+ICAgICAgIC8qIGZvciBDUFVTVEFURVMgaW4gZGV2c3RhdC5oICovCi0jZWxpZiAhZGVmaW5lZChkcmFnb25mbHkpCisjZWxpZiBIQVZFX1NZU19ES1NUQVRfSAogI2luY2x1ZGUgPHN5cy9ka3N0YXQuaD4KICNlbmRpZgogI2luY2x1ZGUgPGRldnN0YXQuaD4KQEAgLTg0LDEyICs4NywxNyBAQAogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZyZWVic2QgKi8KIAotI2lmIGRlZmluZWQoZnJlZWJzZDUpICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDEwNworI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAgICNkZWZpbmUgR0VUREVWUyh4KSBkZXZzdGF0X2dldGRldnMoTlVMTCwgKHgpKQogI2Vsc2UKICAgI2RlZmluZSBHRVRERVZTKHgpIGdldGRldnMoKHgpKQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkIChsaW51eCkKKyNkZWZpbmUgRElTS0lPX1NBTVBMRV9JTlRFUlZBTCA1Cit2b2lkIGRldmxhX2dldHN0YXRzKHVuc2lnbmVkIGludCByZWdubywgdm9pZCAqIGR1bW15KTsKKyNlbmRpZiAvKiBsaW51eCAqLworCiAjaWYgZGVmaW5lZCAoZGFyd2luKQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8SU9LaXQvSU9LaXRMaWIuaD4KQEAgLTEwMiw3ICsxMTAsNyBAQAogCiB2b2lkICAgICAgICAgICAgZGlza2lvX3BhcnNlX2NvbmZpZyhjb25zdCBjaGFyICosIGNoYXIgKik7CiAKLSNpZiBkZWZpbmVkIChmcmVlYnNkNCkgfHwgZGVmaW5lZChmcmVlYnNkNSkKKyNpZiBkZWZpbmVkIChIQVZFX0dFVERFVlMpIHx8IGRlZmluZWQoSEFWRV9ERVZTVEFUX0dFVERFVlMpCiB2b2lkCQlkZXZsYV9nZXRzdGF0cyh1bnNpZ25lZCBpbnQgcmVnbm8sIHZvaWQgKmR1bW15KTsKICNlbmRpZgogCkBAIC0xNDIsMTkgKzE1MCwzMCBAQAogICAgICAqLwogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBkaXNraW9fdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtESVNLSU9fSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezF9fSwKLSAgICAgICAge0RJU0tJT19ERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZGlza2lvLCAxLCB7Mn19LAotICAgICAgICB7RElTS0lPX05SRUFELCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9kaXNraW8sIDEsIHszfX0sCi0gICAgICAgIHtESVNLSU9fTldSSVRURU4sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezR9fSwKLSAgICAgICAge0RJU0tJT19SRUFEUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZGlza2lvLCAxLCB7NX19LAotICAgICAgICB7RElTS0lPX1dSSVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZGlza2lvLCAxLCB7Nn19LAotI2lmIGRlZmluZWQoZnJlZWJzZDQpIHx8IGRlZmluZWQoZnJlZWJzZDUpCi0gICAgICAgIHtESVNLSU9fTEExLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9kaXNraW8sIDEsIHs5fX0sCi0gICAgICAgIHtESVNLSU9fTEE1LCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9kaXNraW8sIDEsIHsxMH19LAotICAgICAgICB7RElTS0lPX0xBMTUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezExfX0sCisgICAgICAgIHtESVNLSU9fSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHsxfX0sCisgICAgICAgIHtESVNLSU9fREVWSUNFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHsyfX0sCisgICAgICAgIHtESVNLSU9fTlJFQUQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHszfX0sCisgICAgICAgIHtESVNLSU9fTldSSVRURU4sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHs0fX0sCisgICAgICAgIHtESVNLSU9fUkVBRFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHs1fX0sCisgICAgICAgIHtESVNLSU9fV1JJVEVTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZGlza2lvLCAxLCB7Nn19LAorI2lmIGRlZmluZWQoSEFWRV9HRVRERVZTKSB8fCBkZWZpbmVkKEhBVkVfREVWU1RBVF9HRVRERVZTKSB8fCBkZWZpbmVkKGxpbnV4KQorICAgICAgICB7RElTS0lPX0xBMSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2Rpc2tpbywgMSwgezl9fSwKKyAgICAgICAge0RJU0tJT19MQTUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHsxMH19LAorICAgICAgICB7RElTS0lPX0xBMTUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHsxMX19LAogI2VuZGlmCi0gICAgICAgIHtESVNLSU9fTlJFQURYLCBBU05fQ09VTlRFUjY0LCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezEyfX0sCi0gICAgICAgIHtESVNLSU9fTldSSVRURU5YLCBBU05fQ09VTlRFUjY0LCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezEzfX0sCisgICAgICAgIHtESVNLSU9fTlJFQURYLCBBU05fQ09VTlRFUjY0LCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHsxMn19LAorICAgICAgICB7RElTS0lPX05XUklUVEVOWCwgQVNOX0NPVU5URVI2NCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZGlza2lvLCAxLCB7MTN9fSwKICAgICB9OwogCiAgICAgLyoKQEAgLTIwMCwxMCArMjE5LDEwIEBACiAgICAgcHNfZGlzayA9IE5VTEw7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQgKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGZyZWVic2Q1KQotCWRldmxhX2dldHN0YXRzKDAsIE5VTEwpOwotCS8qIGNvbGxlY3QgTEEgZGF0YSByZWd1bGFybHkgKi8KLQlzbm1wX2FsYXJtX3JlZ2lzdGVyKERJU0tJT19TQU1QTEVfSU5URVJWQUwsIFNBX1JFUEVBVCwgZGV2bGFfZ2V0c3RhdHMsIE5VTEwpOworI2lmIGRlZmluZWQgKEhBVkVfR0VUREVWUykgfHwgZGVmaW5lZChIQVZFX0RFVlNUQVRfR0VUREVWUykgfHwgZGVmaW5lZChsaW51eCkKKyAgICBkZXZsYV9nZXRzdGF0cygwLCBOVUxMKTsKKyAgICAvKiBjb2xsZWN0IExBIGRhdGEgcmVndWxhcmx5ICovCisgICAgc25tcF9hbGFybV9yZWdpc3RlcihESVNLSU9fU0FNUExFX0lOVEVSVkFMLCBTQV9SRVBFQVQsIGRldmxhX2dldHN0YXRzLCBOVUxMKTsKICNlbmRpZgogCiB9CkBAIC00MjIsMTIgKzQ0MSwyODkgQEAKIH0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYnNkaSAqLwogCi0jaWYgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChmcmVlYnNkNSkKKyNpZiBkZWZpbmVkKG9wZW5ic2Q0KQorc3RhdGljIGludCAgICAgIG5kaXNrOworc3RhdGljIHN0cnVjdCBkaXNrc3RhdHMgKmRrOworc3RhdGljIGNoYXIgICAqKmRrbmFtZTsKKworc3RhdGljIGludAorZ2V0c3RhdHModm9pZCkKK3sKKyAgICB0aW1lX3QgICAgICAgICAgbm93OworICAgIGludCAgICAgICAgICAgICBtaWJbMl07CisgICAgY2hhciAgICAgICAgICAgKnQsICp0cCwqdGU7CisgICAgc2l6ZV90ICAgICAgICAgIHNpemUsIGRrbl9zaXplOworICAgIGludCAgICAgICAgICAgICBpOworCisgICAgbm93ID0gdGltZShOVUxMKTsKKyAgICBpZiAoY2FjaGVfdGltZSArIENBQ0hFX1RJTUVPVVQgPiBub3cpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIG1pYlswXSA9IENUTF9IVzsKKyAgICBtaWJbMV0gPSBIV19ESVNLU1RBVFM7CisgICAgc2l6ZSA9IDA7CisgICAgaWYgKHN5c2N0bChtaWIsIDIsIE5VTEwsICZzaXplLCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgcGVycm9yKCJDYW4ndCBnZXQgc2l6ZSBvZiBIV19ESVNLU1RBVFMgbWliIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAobmRpc2sgIT0gc2l6ZSAvIHNpemVvZigqZGspKSB7CisgICAgICAgIGlmIChkaykKKyAgICAgICAgICAgIGZyZWUoZGspOworICAgICAgICBpZiAoZGtuYW1lKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmRpc2s7IGkrKykKKyAgICAgICAgICAgICAgICBpZiAoZGtuYW1lW2ldKQorICAgICAgICAgICAgICAgICAgICBmcmVlKGRrbmFtZVtpXSk7CisgICAgICAgICAgICBmcmVlKGRrbmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgbmRpc2sgPSBzaXplIC8gc2l6ZW9mKCpkayk7CisgICAgICAgIGlmIChuZGlzayA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRrbmFtZSA9IG1hbGxvYyhuZGlzayAqIHNpemVvZihjaGFyICopKTsKKyAgICAgICAgbWliWzBdID0gQ1RMX0hXOworICAgICAgICBtaWJbMV0gPSBIV19ESVNLTkFNRVM7CisgICAgICAgIGlmIChzeXNjdGwobWliLCAyLCBOVUxMLCAmZGtuX3NpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICAgICAgcGVycm9yKCJDYW4ndCBnZXQgc2l6ZSBvZiBIV19ESVNLTkFNRVMgbWliIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICB0ZSA9IHRwID0gdCA9IG1hbGxvYyhka25fc2l6ZSk7CisgICAgICAgIGlmIChzeXNjdGwobWliLCAyLCB0LCAmZGtuX3NpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICAgICAgcGVycm9yKCJDYW4ndCBnZXQgc2l6ZSBvZiBIV19ESVNLTkFNRVMgbWliIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmRpc2s7IGkrKykgeworCSAgICB3aGlsZSAodGUtdCA8IGRrbl9zaXplICYmICp0ZSAhPSAnLCcpIHRlKys7CisJICAgICp0ZSsrID0gJ1wwJzsKKyAgICAgICAgICAgIGRrbmFtZVtpXSA9IHN0cmR1cCh0cCk7CisgICAgICAgICAgICB0cCA9IHRlOworICAgICAgICB9CisgICAgICAgIGZyZWUodCk7CisgICAgICAgIGRrID0gbWFsbG9jKG5kaXNrICogc2l6ZW9mKCpkaykpOworICAgIH0KKyAgICBtaWJbMF0gPSBDVExfSFc7CisgICAgbWliWzFdID0gSFdfRElTS1NUQVRTOworICAgIGlmIChzeXNjdGwobWliLCAyLCBkaywgJnNpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBwZXJyb3IoIkNhbid0IGdldCBIV19ESVNLU1RBVFMgbWliIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjYWNoZV90aW1lID0gbm93OworICAgIHJldHVybiAxOworfQorCit1X2NoYXIgICAgICAgICAqCit2YXJfZGlza2lvKHN0cnVjdCB2YXJpYWJsZSAqIHZwLAorICAgICAgICAgICBvaWQgKiBuYW1lLAorICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCisgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoreworICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKKyAgICBzdGF0aWMgc3RydWN0IGNvdW50ZXI2NCBjNjRfcmV0OworICAgIHVuc2lnbmVkIGludCAgICBpbmR4OworCisgICAgaWYgKGdldHN0YXRzKCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoaGVhZGVyX3NpbXBsZV90YWJsZQorICAgICAgICAodnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCwgbmRpc2spKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGluZHggPSAodW5zaWduZWQgaW50KSAobmFtZVsqbGVuZ3RoIC0gMV0gLSAxKTsKKyAgICBpZiAoaW5keCA+PSBuZGlzaykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworICAgIGNhc2UgRElTS0lPX0lOREVYOgorICAgICAgICBsb25nX3JldCA9IChsb25nKSBpbmR4ICsgMTsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKyAgICBjYXNlIERJU0tJT19ERVZJQ0U6CisgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGRrbmFtZVtpbmR4XSk7CisgICAgICAgIHJldHVybiAodV9jaGFyICopIGRrbmFtZVtpbmR4XTsKKyAgICBjYXNlIERJU0tJT19OUkVBRDoKKyAgICAgICAgbG9uZ19yZXQgPSAodW5zaWduZWQgbG9uZykgKGRrW2luZHhdLmRzX3JieXRlcykgJiAweGZmZmZmZmZmOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OworICAgIGNhc2UgRElTS0lPX05XUklUVEVOOgorICAgICAgICBsb25nX3JldCA9ICh1bnNpZ25lZCBsb25nKSAoZGtbaW5keF0uZHNfd2J5dGVzKSAmIDB4ZmZmZmZmZmY7CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisgICAgY2FzZSBESVNLSU9fUkVBRFM6CisgICAgICAgIGxvbmdfcmV0ID0gKHVuc2lnbmVkIGxvbmcpIGRrW2luZHhdLmRzX3J4ZmVyICYgMHhmZmZmZmZmZjsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKyAgICBjYXNlIERJU0tJT19XUklURVM6CisgICAgICAgIGxvbmdfcmV0ID0gKHVuc2lnbmVkIGxvbmcpIGRrW2luZHhdLmRzX3d4ZmVyICYgMHhmZmZmZmZmZjsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKyAgICBjYXNlIERJU0tJT19OUkVBRFg6CisgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICBjNjRfcmV0LmxvdyA9IGRrW2luZHhdLmRzX3JieXRlcyAmIDB4ZmZmZmZmZmY7CisgICAgICAgIGM2NF9yZXQuaGlnaCA9IGRrW2luZHhdLmRzX3JieXRlcyA+PiAzMjsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBjNjRfcmV0OworICAgIGNhc2UgRElTS0lPX05XUklUVEVOWDoKKyAgICAgICAgKnZhcl9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgIGM2NF9yZXQubG93ID0gZGtbaW5keF0uZHNfcmJ5dGVzICYgMHhmZmZmZmZmZjsKKyAgICAgICAgYzY0X3JldC5oaWdoID0gZGtbaW5keF0uZHNfcmJ5dGVzID4+IDMyOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGM2NF9yZXQ7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBFUlJPUl9NU0coImRpc2tpby5jOiBkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgdGhpcyByZXF1ZXN0LiIpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3BlbmJzZCAqLworCisjaWZkZWYgX19OZXRCU0RfXworI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KK3N0YXRpYyBpbnQgICAgICBuZGlzazsKKyNpZmRlZiBIV19JT1NUQVROQU1FUworc3RhdGljIGludCBubWliWzJdID0ge0NUTF9IVywgSFdfSU9TVEFUTkFNRVN9OworI2Vsc2UKK3N0YXRpYyBpbnQgbm1pYlsyXSA9IHtDVExfSFcsIEhXX0RJU0tOQU1FU307CisjZW5kaWYKKyNpZmRlZiBIV19ESVNLU1RBVFMKKyNpbmNsdWRlIDxzeXMvZGlzay5oPgorc3RhdGljIGludCBkbWliWzNdID0ge0NUTF9IVywgSFdfRElTS1NUQVRTLCBzaXplb2Yoc3RydWN0IGRpc2tfc3lzY3RsKX07CitzdGF0aWMgc3RydWN0IGRpc2tfc3lzY3RsICpkazsKKyNlbmRpZgorI2lmZGVmIEhXX0lPU1RBVFMKKyNpbmNsdWRlIDxzeXMvaW9zdGF0Lmg+CitzdGF0aWMgaW50IGRtaWJbM10gPSB7Q1RMX0hXLCBIV19JT1NUQVRTLCBzaXplb2Yoc3RydWN0IGlvX3N5c2N0bCl9Oworc3RhdGljIHN0cnVjdCBpb19zeXNjdGwgKmRrOworI2VuZGlmCitzdGF0aWMgY2hhciAgICoqZGtuYW1lOworCitzdGF0aWMgaW50CitnZXRzdGF0cyh2b2lkKQoreworICAgIHRpbWVfdCAgICAgICAgICBub3c7CisgICAgY2hhciAgICAgICAgICAgKnQsICp0cDsKKyAgICBzaXplX3QgICAgICAgICAgc2l6ZSwgZGtuX3NpemU7CisgICAgaW50ICAgICAgICAgICAgIGk7CisKKyAgICBub3cgPSB0aW1lKE5VTEwpOworICAgIGlmIChjYWNoZV90aW1lICsgQ0FDSEVfVElNRU9VVCA+IG5vdykgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgc2l6ZSA9IDA7CisgICAgaWYgKHN5c2N0bChkbWliLCAzLCBOVUxMLCAmc2l6ZSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIHBlcnJvcigiQ2FuJ3QgZ2V0IHNpemUgb2YgSFdfRElTS1NUQVRTL0hXX0lPU1RBVFMgbWliIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAobmRpc2sgIT0gc2l6ZSAvIGRtaWJbMl0pIHsKKyAgICAgICAgaWYgKGRrKQorICAgICAgICAgICAgZnJlZShkayk7CisgICAgICAgIGlmIChka25hbWUpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZGlzazsgaSsrKQorICAgICAgICAgICAgICAgIGlmIChka25hbWVbaV0pCisgICAgICAgICAgICAgICAgICAgIGZyZWUoZGtuYW1lW2ldKTsKKyAgICAgICAgICAgIGZyZWUoZGtuYW1lKTsKKyAgICAgICAgfQorICAgICAgICBuZGlzayA9IHNpemUgLyBkbWliWzJdOworICAgICAgICBpZiAobmRpc2sgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBka25hbWUgPSBtYWxsb2MobmRpc2sgKiBzaXplb2YoY2hhciAqKSk7CisgICAgICAgIGRrbl9zaXplID0gMDsKKyAgICAgICAgaWYgKHN5c2N0bChubWliLCAyLCBOVUxMLCAmZGtuX3NpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICAgICAgcGVycm9yKCJDYW4ndCBnZXQgc2l6ZSBvZiBIV19ESVNLTkFNRVMgbWliIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICB0ID0gbWFsbG9jKGRrbl9zaXplKTsKKyAgICAgICAgaWYgKHN5c2N0bChubWliLCAyLCB0LCAmZGtuX3NpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICAgICAgcGVycm9yKCJDYW4ndCBnZXQgc2l6ZSBvZiBIV19ESVNLTkFNRVMgbWliIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwLCB0cCA9IHN0cnRvayh0LCAiICIpOyB0cCAmJiBpIDwgbmRpc2s7IGkrKywKKwkgICAgdHAgPSBzdHJ0b2soTlVMTCwgIiAiKSkgeworICAgICAgICAgICAgZGtuYW1lW2ldID0gc3RyZHVwKHRwKTsKKyAgICAgICAgfQorICAgICAgICBmcmVlKHQpOworICAgICAgICBkayA9IG1hbGxvYyhuZGlzayAqIHNpemVvZigqZGspKTsKKyAgICB9CisgICAgaWYgKHN5c2N0bChkbWliLCAzLCBkaywgJnNpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBwZXJyb3IoIkNhbid0IGdldCBIV19ESVNLU1RBVFMvSFdfSU9TVEFUUyBtaWIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGNhY2hlX3RpbWUgPSBub3c7CisgICAgcmV0dXJuIDE7Cit9CisKK3VfY2hhciAqCit2YXJfZGlza2lvKHN0cnVjdCB2YXJpYWJsZSAqIHZwLAorICAgICAgICAgICBvaWQgKiBuYW1lLAorICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCisgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoreworICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKKyAgICB1bnNpZ25lZCBpbnQgICAgaW5keDsKKworICAgIGlmIChnZXRzdGF0cygpID09IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGhlYWRlcl9zaW1wbGVfdGFibGUKKyAgICAgICAgKHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLCB3cml0ZV9tZXRob2QsIG5kaXNrKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpbmR4ID0gKHVuc2lnbmVkIGludCkgKG5hbWVbKmxlbmd0aCAtIDFdIC0gMSk7CisgICAgaWYgKGluZHggPj0gbmRpc2spCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKKyAgICBjYXNlIERJU0tJT19JTkRFWDoKKyAgICAgICAgbG9uZ19yZXQgPSAobG9uZykgaW5keCArIDE7CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisKKyAgICBjYXNlIERJU0tJT19ERVZJQ0U6CisgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGRrbmFtZVtpbmR4XSk7CisgICAgICAgIHJldHVybiAodV9jaGFyICopIGRrbmFtZVtpbmR4XTsKKworICAgIGNhc2UgRElTS0lPX05SRUFEOgorI2lmZGVmIEhXX0RJU0tTVEFUUworICAgICAJbG9uZ19yZXQgPSBka1tpbmR4XS5ka19yYnl0ZXM7CisjZW5kaWYKKyNpZmRlZiBIV19JT1NUQVRTCisJaWYgKGRrW2luZHhdLnR5cGUgPT0gSU9TVEFUX0RJU0spCisJICAgIGxvbmdfcmV0ID0gZGtbaW5keF0ucmJ5dGVzOworI2VuZGlmCisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisKKyAgICBjYXNlIERJU0tJT19OV1JJVFRFTjoKKyNpZmRlZiBIV19ESVNLU1RBVFMKKyAgICAgCWxvbmdfcmV0ID0gZGtbaW5keF0uZGtfd2J5dGVzOworI2VuZGlmCisjaWZkZWYgSFdfSU9TVEFUUworCWlmIChka1tpbmR4XS50eXBlID09IElPU1RBVF9ESVNLKQorCSAgICBsb25nX3JldCA9IGRrW2luZHhdLndieXRlczsKKyNlbmRpZgorICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OworCisgICAgY2FzZSBESVNLSU9fUkVBRFM6CisjaWZkZWYgSFdfRElTS1NUQVRTCisgICAgIAlsb25nX3JldCA9IGRrW2luZHhdLmRrX3J4ZmVyOworI2VuZGlmCisjaWZkZWYgSFdfSU9TVEFUUworCWlmIChka1tpbmR4XS50eXBlID09IElPU1RBVF9ESVNLKQorCSAgICBsb25nX3JldCA9IGRrW2luZHhdLnJ4ZmVyOworI2VuZGlmCisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisKKyAgICBjYXNlIERJU0tJT19XUklURVM6CisjaWZkZWYgSFdfRElTS1NUQVRTCisgICAgIAlsb25nX3JldCA9IGRrW2luZHhdLmRrX3d4ZmVyOworI2VuZGlmCisjaWZkZWYgSFdfSU9TVEFUUworCWlmIChka1tpbmR4XS50eXBlID09IElPU1RBVF9ESVNLKQorCSAgICBsb25nX3JldCA9IGRrW2luZHhdLnd4ZmVyOworI2VuZGlmCisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBFUlJPUl9NU0coImRpc2tpby5jOiBkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgdGhpcyByZXF1ZXN0LiIpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZiAvKiBfX05ldEJTRF9fICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUREVWUykgfHwgZGVmaW5lZChIQVZFX0RFVlNUQVRfR0VUREVWUykKIAogLyogZGlzayBsb2FkIGF2ZXJhZ2UgcGF0Y2ggYnkgUm9qZXIgKi8KIAogc3RydWN0IGRldl9sYSB7Ci0jaWYgKCBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcgKQorI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAgICAgICAgIHN0cnVjdCBiaW50aW1lIHByZXY7CiAjZWxzZQogICAgICAgICBzdHJ1Y3QgdGltZXZhbCBwcmV2OwpAQCAtNDM5LDcgKzczNSw3IEBACiBzdGF0aWMgc3RydWN0IGRldl9sYSAqZGV2bG9hZHMgPSBOVUxMOwogc3RhdGljIGludCBuZGV2cyA9IDA7CiAKLSNpZiAhICggZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMTA3ICkKKyNpZiAhIEhBVkVfREVWU1RBVF9HRVRERVZTCiBkb3VibGUgZGV2bGFfdGltZXZhbF9kaWZmKHN0cnVjdCB0aW1ldmFsICp0MSwgc3RydWN0IHRpbWV2YWwgKnQyKSB7CiAKICAgICAgICAgZG91YmxlIGR0MSA9IChkb3VibGUpIHQxLT50dl9zZWMgKyAoZG91YmxlKSB0MS0+dHZfdXNlYyAqIDAuMDAwMDAxOwpAQCAtNDg4LDcgKzc4NCw3IEBACiAgICAgICAgIGlmIChuZGV2cyA9PSAwKSB7CiAgICAgICAgICAgICAgICAgbmRldnMgPSBsYXN0YXQtPmRpbmZvLT5udW1kZXZzOwogICAgICAgICAgICAgICAgIGRldmxvYWRzID0gKHN0cnVjdCBkZXZfbGEgKikgbWFsbG9jKG5kZXZzICogc2l6ZW9mKHN0cnVjdCBkZXZfbGEpKTsKLSAgICAgICAgICAgICAgICBiemVybyhkZXZsb2FkcywgbmRldnMgKiBzaXplb2Yoc3RydWN0IGRldl9sYSkpOworICAgICAgICAgICAgICAgIG1lbXNldChkZXZsb2FkcywgJ1wwJywgbmRldnMgKiBzaXplb2Yoc3RydWN0IGRldl9sYSkpOwogICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgbmRldnM7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgZGV2bG9hZHNbaV0ubGExID0gZGV2bG9hZHNbaV0ubGE1ID0gZGV2bG9hZHNbaV0ubGExNSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkoJmRldmxvYWRzW2ldLnByZXYsICZsYXN0YXQtPmRpbmZvLT5kZXZpY2VzW2ldLmJ1c3lfdGltZSwgc2l6ZW9mKGRldmxvYWRzW2ldLnByZXYpKTsKQEAgLTUwMSw3ICs3OTcsNyBAQAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGk9MDsgaTxuZGV2czsgaSsrKSB7Ci0jaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMTA3CisjaWYgSEFWRV9ERVZTVEFUX0dFVERFVlMKICAgICAgICAgICAgICAgICBidXN5X3RpbWUgPSBkZXZzdGF0X2NvbXB1dGVfZXRpbWUoJmxhc3RhdC0+ZGluZm8tPmRldmljZXNbaV0uYnVzeV90aW1lLCAmZGV2bG9hZHNbaV0ucHJldik7CiAjZWxzZQogICAgICAgICAgICAgICAgIGJ1c3lfdGltZSA9IGRldmxhX3RpbWV2YWxfZGlmZigmZGV2bG9hZHNbaV0ucHJldiwgJmxhc3RhdC0+ZGluZm8tPmRldmljZXNbaV0uYnVzeV90aW1lKTsKQEAgLTU5NywxNCArODkzLDE0IEBACiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLmRldmljZV9uYW1lKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0uZGV2aWNlX25hbWU7CiAgICAgY2FzZSBESVNLSU9fTlJFQUQ6Ci0jaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMTA3CisjaWYgSEFWRV9ERVZTVEFUX0dFVERFVlMKICAgICAgICAgbG9uZ19yZXQgPSAoc2lnbmVkIGxvbmcpIHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLmJ5dGVzW0RFVlNUQVRfUkVBRF07CiAjZWxzZQogICAgICAgICBsb25nX3JldCA9IChzaWduZWQgbG9uZykgc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0uYnl0ZXNfcmVhZDsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OwogICAgIGNhc2UgRElTS0lPX05XUklUVEVOOgotI2lmIGRlZmluZWQoZnJlZWJzZDUpICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDEwNworI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAgICAgICAgIGxvbmdfcmV0ID0gKHNpZ25lZCBsb25nKSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5ieXRlc1tERVZTVEFUX1dSSVRFXTsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0ID0gKHNpZ25lZCBsb25nKSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5ieXRlc193cml0dGVuOwpAQCAtNjEyLDcgKzkwOCw3IEBACiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CiAgICAgY2FzZSBESVNLSU9fTlJFQURYOgogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcKKyNpZiBIQVZFX0RFVlNUQVRfR0VUREVWUwogICAgICAgICBsb25nbG9uZ19yZXQgPSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5ieXRlc1tERVZTVEFUX1JFQURdOwogI2Vsc2UKICAgICAgICAgbG9uZ2xvbmdfcmV0ID0gc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0uYnl0ZXNfcmVhZDsKQEAgLTYyMiw3ICs5MTgsNyBAQAogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGM2NF9yZXQ7CiAgICAgY2FzZSBESVNLSU9fTldSSVRURU5YOgogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcKKyNpZiBIQVZFX0RFVlNUQVRfR0VUREVWUwogICAgICAgICBsb25nbG9uZ19yZXQgPSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5ieXRlc1tERVZTVEFUX1dSSVRFXTsKICNlbHNlCiAgICAgICAgIGxvbmdsb25nX3JldCA9IHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLmJ5dGVzX3dyaXR0ZW47CkBAIC02MzEsMTQgKzkyNywxNCBAQAogICAgICAgICBjNjRfcmV0LmhpZ2ggPSBsb25nbG9uZ19yZXQgPj4gMzI7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgYzY0X3JldDsKICAgICBjYXNlIERJU0tJT19SRUFEUzoKLSNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcKKyNpZiBIQVZFX0RFVlNUQVRfR0VUREVWUwogICAgICAgICBsb25nX3JldCA9IChzaWduZWQgbG9uZykgc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0ub3BlcmF0aW9uc1tERVZTVEFUX1JFQURdOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXQgPSAoc2lnbmVkIGxvbmcpIHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLm51bV9yZWFkczsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OwogICAgIGNhc2UgRElTS0lPX1dSSVRFUzoKLSNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcKKyNpZiBIQVZFX0RFVlNUQVRfR0VUREVWUwogICAgICAgICBsb25nX3JldCA9IChzaWduZWQgbG9uZykgc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0ub3BlcmF0aW9uc1tERVZTVEFUX1dSSVRFXTsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0ID0gKHNpZ25lZCBsb25nKSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5udW1fd3JpdGVzOwpAQCAtNjg1LDYgKzk4MSwxMyBAQAogICAgIHVuc2lnbmVkIGxvbmcgIGF2ZXE7CiB9IGxpbnV4X2Rpc2tpbzsKIAorLyogZGlzayBsb2FkIGF2ZXJhZ2VzICovCit0eXBlZGVmIHN0cnVjdCBsaW51eF9kaXNraW9fbGEKK3sKKyAgICB1bnNpZ25lZCBsb25nIHVzZV9wcmV2OworICAgIGRvdWJsZSBsYTEsIGxhNSwgbGExNTsKK30gbGludXhfZGlza2lvX2xhOworCiB0eXBlZGVmIHN0cnVjdCBsaW51eF9kaXNraW9faGVhZGVyCiB7CiAgICAgbGludXhfZGlza2lvKiBpbmRpY2VzOwpAQCAtNjkyLDggKzk5NSw1OSBAQAogICAgIGludCBhbGxvYzsKIH0gbGludXhfZGlza2lvX2hlYWRlcjsKIAotc3RhdGljIGxpbnV4X2Rpc2tpb19oZWFkZXIgaGVhZDsKK3R5cGVkZWYgc3RydWN0IGxpbnV4X2Rpc2tpb19sYV9oZWFkZXIKK3sKKyAgICBsaW51eF9kaXNraW9fbGEgKiBpbmRpY2VzOyAgIAorICAgIGludCBsZW5ndGg7Cit9IGxpbnV4X2Rpc2tpb19sYV9oZWFkZXI7CiAKK3N0YXRpYyBsaW51eF9kaXNraW9faGVhZGVyIGhlYWQ7CitzdGF0aWMgbGludXhfZGlza2lvX2xhX2hlYWRlciBsYV9oZWFkOworCit2b2lkIGRldmxhX2dldHN0YXRzKHVuc2lnbmVkIGludCByZWdubywgdm9pZCAqIGR1bW15KSB7CisKKyAgICBzdGF0aWMgZG91YmxlIGV4cG9uMSwgZXhwb241LCBleHBvbjE1OworICAgIGRvdWJsZSBidXN5X3RpbWUsIGJ1c3lfcGVyY2VudDsKKyAgICBpbnQgaWR4OworCisgICAgaWYgKGdldHN0YXRzKCkgPT0gMSkgeworICAgICAgICBFUlJPUl9NU0coImNhbid0IGRvIGRpc2tpbyBnZXRzdGF0cygpXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbGFfaGVhZC5sZW5ndGgpIHsKKyAgICAgICAgbGFfaGVhZC5pbmRpY2VzID0gKGxpbnV4X2Rpc2tpb19sYSAqKSBtYWxsb2MoaGVhZC5sZW5ndGggKiBzaXplb2YobGludXhfZGlza2lvX2xhKSk7CisgICAgICAgIGZvciAoaWR4PTA7IGlkeDxoZWFkLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgICAgICAgIGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhMSA9IGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhNSA9IGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhMTUgPSAwLjsgCisgICAgICAgICAgICBsYV9oZWFkLmluZGljZXNbaWR4XS51c2VfcHJldiA9IGhlYWQuaW5kaWNlc1tpZHhdLnVzZTsKKyAgICAgICAgfQorICAgICAgICBsYV9oZWFkLmxlbmd0aCA9IGhlYWQubGVuZ3RoOworICAgICAgICBleHBvbjEgPSBleHAoLSgoKGRvdWJsZSlESVNLSU9fU0FNUExFX0lOVEVSVkFMKSAvICgoZG91YmxlKTYwKSkpOworICAgICAgICBleHBvbjUgPSBleHAoLSgoKGRvdWJsZSlESVNLSU9fU0FNUExFX0lOVEVSVkFMKSAvICgoZG91YmxlKTMwMCkpKTsKKyAgICAgICAgZXhwb24xNSA9IGV4cCgtKCgoZG91YmxlKURJU0tJT19TQU1QTEVfSU5URVJWQUwpIC8gKChkb3VibGUpOTAwKSkpOworICAgIH0KKyAgICBlbHNlIGlmIChoZWFkLmxlbmd0aCAtIGxhX2hlYWQubGVuZ3RoKSB7CisgICAgICAgIGxhX2hlYWQuaW5kaWNlcyA9IChsaW51eF9kaXNraW9fbGEgKikgcmVhbGxvYyhsYV9oZWFkLmluZGljZXMsIGhlYWQubGVuZ3RoICogc2l6ZW9mKGxpbnV4X2Rpc2tpb19sYSkpOworICAgICAgICBmb3IgKGlkeD1sYV9oZWFkLmxlbmd0aDsgaWR4PGhlYWQubGVuZ3RoOyBpZHgrKykgeworICAgICAgICAgICAgbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGExID0gbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGE1ID0gbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGExNSA9IDAuOyAKKyAgICAgICAgICAgIGxhX2hlYWQuaW5kaWNlc1tpZHhdLnVzZV9wcmV2ID0gaGVhZC5pbmRpY2VzW2lkeF0udXNlOworICAgICAgICB9CisgICAgICAgIGxhX2hlYWQubGVuZ3RoID0gaGVhZC5sZW5ndGg7CisgICAgfQorCisgICAgZm9yIChpZHg9MDsgaWR4PGhlYWQubGVuZ3RoOyBpZHgrKykgeworICAgICAgICBidXN5X3RpbWUgPSBoZWFkLmluZGljZXNbaWR4XS51c2UgLSBsYV9oZWFkLmluZGljZXNbaWR4XS51c2VfcHJldjsKKyAgICAgICAgYnVzeV9wZXJjZW50ID0gYnVzeV90aW1lICogMTAwLiAvICgoZG91YmxlKSBESVNLSU9fU0FNUExFX0lOVEVSVkFMKSAvIDEwMDAuOworICAgICAgICBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTEgPSBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTEgKiBleHBvbjEgKyBidXN5X3BlcmNlbnQgKiAoMS4gLSBleHBvbjEpOworICAgICAgICBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTUgPSBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTUgKiBleHBvbjUgKyBidXN5X3BlcmNlbnQgKiAoMS4gLSBleHBvbjUpOworICAgICAgICBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTE1ID0gbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGExNSAqIGV4cG9uMTUgKyBidXN5X3BlcmNlbnQgKiAoMS4gLSBleHBvbjE1KTsKKyAgICAgICAgLyoKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiglZCkgdXBkYXRlIGxhMT0lZiBsYTU9JWYgbGExNT0lZlxuIiwKKyAgICAgICAgICBpZHgsIGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhMSwgbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGE1LCBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTE1KTsgICAKKyAgICAgICAgKi8KKyAgICAgICAgbGFfaGVhZC5pbmRpY2VzW2lkeF0udXNlX3ByZXYgPSBoZWFkLmluZGljZXNbaWR4XS51c2U7CisgICAgfQorfQogCiBpbnQgZ2V0c3RhdHModm9pZCkKIHsKQEAgLTgyNiw2ICsxMTgwLDE1IEBACiAgICAgY2FzZSBESVNLSU9fV1JJVEVTOgogICAgICAgbG9uZ19yZXQgPSBoZWFkLmluZGljZXNbaW5keF0ud2lvICYgMHhmZmZmZmZmZjsKICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisgICAgY2FzZSBESVNLSU9fTEExOgorICAgICAgbG9uZ19yZXQgPSBsYV9oZWFkLmluZGljZXNbaW5keF0ubGExOworICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKyAgICBjYXNlIERJU0tJT19MQTU6CisgICAgICBsb25nX3JldCA9IGxhX2hlYWQuaW5kaWNlc1tpbmR4XS5sYTU7CisgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OworICAgIGNhc2UgRElTS0lPX0xBMTU6CisgICAgICBsb25nX3JldCA9IGxhX2hlYWQuaW5kaWNlc1tpbmR4XS5sYTE1OworICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKICAgICBjYXNlIERJU0tJT19OUkVBRFg6CiAgICAgICAqdmFyX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKICAgICAgIGM2NF9yZXQubG93ID0gaGVhZC5pbmRpY2VzW2luZHhdLnJzZWN0ICogNTEyICYgMHhmZmZmZmZmZjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmgKaW5kZXggMDU1OTZhYi4uOGNkMjA2YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmgKQEAgLTEsNyArMSw3IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9ESVNLSU9fSAogI2RlZmluZSBfTUlCR1JPVVBfRElTS0lPX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSkKIGNvbmZpZ19hZGRfbWliKFVDRC1ESVNLSU8tTUlCKQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jCmluZGV4IGE2YjliMzQuLjBhODUyMTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYwpAQCAtMjksOSArMjksNiBAQAogI2luY2x1ZGUgInN0cnVjdC5oIgogI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKIAotI2lmIGRlZmluZWQoSEFWRV9ETEZDTl9IKSAmJiAoZGVmaW5lZChIQVZFX0RMT1BFTikgfHwgZGVmaW5lZChIQVZFX0xJQkRMKSkgXAotICAgIHx8IGRlZmluZWQoV0lOMzIpCi0KICNpZiBkZWZpbmVkKFdJTjMyKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbHNlCkBAIC01MSwxMSArNDgsMTYgQEAKICAqIGluZm9ybWF0aW9uIGZvciB0aGUgZGxtb2QgbWliCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgdmFyaWFibGU0IGRsbW9kX3ZhcmlhYmxlc1tdID0gewotICAgIHtETE1PRE5FWFRJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZGxtb2QsIDEsIHsxfX0sCi0gICAge0RMTU9ETkFNRSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDJ9fSwKLSAgICB7RExNT0RQQVRILCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgM319LAotICAgIHtETE1PREVSUk9SLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCA0fX0sCi0gICAge0RMTU9EU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDV9fSwKKyAgICB7RExNT0RORVhUSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2RsbW9kLCAxLCB7MX19LAorICAgIHtETE1PRE5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCAyfX0sCisgICAge0RMTU9EUEFUSCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDN9fSwKKyAgICB7RExNT0RFUlJPUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgNH19LAorICAgIHtETE1PRFNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCA1fX0sCiB9OwogCiBzdGF0aWMgb2lkICAgICAgZGxtb2RfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCAyMDIxLCAxMywgMTQgfTsKQEAgLTI5MywxMSArMjk1LDE4IEBACiAKICAgICBzbnByaW50ZihzeW1fZGVpbml0LCBzaXplb2Yoc3ltX2RlaW5pdCksICJkZWluaXRfJXMiLCBkbG0tPm5hbWUpOwogICAgIGRsX2RlaW5pdCA9IGRsbW9kX2Rsc3ltKGRsbS0+aGFuZGxlLCBzeW1fZGVpbml0KTsKLSAgICBpZiAoZGxfZGVpbml0ID09IE5VTEwpIHsKLSAgICAgICAgc25wcmludGYoZGxtLT5lcnJvciwgc2l6ZW9mKGRsbS0+ZXJyb3IpLAotICAgICAgICAgICAgICAgICAiZGxzeW0gZmFpbGVkOiBjYW4ndCBmaW5kIFwnJXNcJyIsIHN5bV9kZWluaXQpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKGRsX2RlaW5pdCkgeworICAgICAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiQ2FsbGluZyBkZWluaXRfJXMoKVxuIiwgZGxtLT5uYW1lKSk7CiAgICAgICAgIGRsX2RlaW5pdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNucHJpbnRmKHN5bV9kZWluaXQsIHNpemVvZihzeW1fZGVpbml0KSwgInNodXRkb3duXyVzIiwgZGxtLT5uYW1lKTsKKyAgICAgICAgZGxfZGVpbml0ID0gZGxtb2RfZGxzeW0oZGxtLT5oYW5kbGUsIHN5bV9kZWluaXQpOworICAgICAgICBpZiAoZGxfZGVpbml0KSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiQ2FsbGluZyBzaHV0ZG93bl8lcygpXG4iLCBkbG0tPm5hbWUpKTsKKyAgICAgICAgICAgIGRsX2RlaW5pdCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgIk5vIGRlc3RydWN0b3IgZm9yICVzXG4iLCBkbG0tPm5hbWUpKTsKKyAgICAgICAgfQogICAgIH0KICAgICBkbG1vZF9kbGNsb3NlKGRsbS0+aGFuZGxlKTsKICAgICBkbG0tPnN0YXR1cyA9IERMTU9EX1VOTE9BREVEOwpAQCAtNjU4LDE0ICs2NjcsMyBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KLQotI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBubyBkbG9wZW4gc3VwcG9ydCAqLwotCi12b2lkCi1pbml0X2RsbW9kKHZvaWQpCi17Ci0gICAgREVCVUdNU0dUTCgoImRsbW9kIiwKLSAgICAgICAgICAgICAgICAiRHluYW1pYyBtb2R1bGVzIG5vdCBzdXBwb3J0IG9uIHRoaXMgcGxhdGZvcm1cbiIpKTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaAppbmRleCA2OTBiYzQ1Li40ZmJmYjllIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgKQEAgLTcsOCArNywxMSBAQAogI2RlZmluZSBfTUlCR1JPVVBfRExNT0RfSAogCiAvKgotICogVE9ETyAjaW5jbHVkZSAibWliZGVmcy5oIiAKKyAqIFRPRE8gI2luY2x1ZGUgIm1pYmRlZnMuaCIKICAqLworI2lmICghZGVmaW5lZChIQVZFX0RMRkNOX0gpIHx8ICFkZWZpbmVkKEhBVkVfRExPUEVOKSkgJiYgIWRlZmluZWQoV0lOMzIpCitjb25maWdfZXJyb3IoRHluYW1pYyBtb2R1bGVzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSkKKyNlbmRpZgogCiBjb25maWdfYWRkX21pYihVQ0QtRExNT0QtTUlCKQogI2lmbmRlZiBTTk1QRExNT0RQQVRICmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuYwppbmRleCAwZjExZTk5Li4wZmFmYjU0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmMKQEAgLTEyMiw3ICsxMjIsNyBAQAogCiAjaW5jbHVkZSAic3RydWN0LmgiCiAjaW5jbHVkZSAiZXJyb3JtaWIuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogCiBzdGF0aWMgdGltZV90ICAgZXJyb3JzdGF0dXN0aW1lID0gMDsKIHN0YXRpYyBpbnQgICAgICBlcnJvcnN0YXR1c3ByaW9yID0gMDsKQEAgLTE1OSwxNCArMTU5LDE0IEBACiAgICAgICogaW5mb3JtYXRpb24gYXQgCiAgICAgICovCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX2Vycm9yX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZXJyb3JzLCAxLAotICAgICAgICAge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9lcnJvcnMsIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZXJyb3JzLCAxLAotICAgICAgICAge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9lcnJvcnMsIDEsCi0gICAgICAgICB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX2Vycm9ycywgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfZXJyb3JzLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX2Vycm9ycywgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfZXJyb3JzLCAxLCB7RVJST1JNU0d9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmgKaW5kZXggNWRjYjJjYy4uNTAxNjQyYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oCkBAIC02LDcgKzYsNyBAQAogCiB2b2lkICAgICAgICAgICAgaW5pdF9lcnJvcm1pYih2b2lkKTsKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiAKICAgICAgdm9pZCAgICAgICAgICAgIHNldFBlcnJvcnN0YXR1cyhjb25zdCBjaGFyICopOwogICAgICB2b2lkICAgICAgICAgICAgc2V0ZXJyb3JzdGF0dXMoY29uc3QgY2hhciAqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jCmluZGV4IDQyOTkyMTcuLmRiMTdhOWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMKQEAgLTExNSw3ICsxMTUsNyBAQAogI2luY2x1ZGUgInN0cnVjdC5oIgogI2luY2x1ZGUgImV4dGVuc2libGUuaCIKICNpbmNsdWRlICJ1dGlsaXRpZXMvZXhlY3V0ZS5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKIAogZXh0ZXJuIHN0cnVjdCBteXByb2MgKnByb2N3YXRjaDsgICAgICAgIC8qIG1vdmVkIHRvIHByb2MuYyAqLwogZXh0ZXJuIGludCAgICAgIG51bXByb2NzOyAgICAgICAvKiBkaXR0byAqLwpAQCAtMTMzLDIwICsxMzMsMjAgQEAKICAqIHRoZSByZWxvY2F0YWJsZSBleHRlbnNpYmxlIGNvbW1hbmRzIHZhcmlhYmxlcyAKICAqLwogc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3JlbG9jYXRhYmxlX3ZhcmlhYmxlc1tdID0gewotICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwKLSAgICAge01JQklOREVYfX0sCi0gICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLAotICAgICB7RVJST1JOQU1FfX0sCi0gICAge1NIRUxMQ09NTUFORCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLAotICAgICB7U0hFTExDT01NQU5EfX0sCi0gICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwKLSAgICAge0VSUk9SRkxBR319LAotICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLAotICAgICB7RVJST1JNU0d9fSwKLSAgICB7RVJST1JGSVgsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLAotICAgICB7RVJST1JGSVh9fSwKLSAgICB7RVJST1JGSVhDTUQsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwKLSAgICAge0VSUk9SRklYQ01EfX0KKyAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfcmVsb2NhdGFibGUsIDEsIHtNSUJJTkRFWH19LAorICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwge0VSUk9STkFNRX19LAorICAgIHtTSEVMTENPTU1BTkQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwge1NIRUxMQ09NTUFORH19LAorICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfcmVsb2NhdGFibGUsIDEsIHtFUlJPUkZMQUd9fSwKKyAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwge0VSUk9STVNHfX0sCisgICAge0VSUk9SRklYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwge0VSUk9SRklYfX0sCisgICAge0VSUk9SRklYQ01ELCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfcmVsb2NhdGFibGUsIDEsIHtFUlJPUkZJWENNRH19CiB9OwogCiAKQEAgLTE1NSwyMCArMTU1LDIwIEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfZXh0ZW5zaWJsZV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NIRUxMQ09NTUFORCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge1NIRUxMQ09NTUFORH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwKLSAgICAgICAgIHtFUlJPUk1TR319LAotICAgICAgICB7RVJST1JGSVgsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge0VSUk9SRklYfX0sCi0gICAgICAgIHtFUlJPUkZJWENNRCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge0VSUk9SRklYQ01EfX0KKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfc2hlbGwsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1NIRUxMQ09NTUFORCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge1NIRUxMQ09NTUFORH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfc2hlbGwsIDEsIHtFUlJPUk1TR319LAorICAgICAgICB7RVJST1JGSVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge0VSUk9SRklYfX0sCisgICAgICAgIHtFUlJPUkZJWENNRCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge0VSUk9SRklYQ01EfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuaAppbmRleCA1NThmMTRiLi45MjgzNjkyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5oCkBAIC03LDcgKzcsNyBAQAogCiB2b2lkICAgICAgICAgICAgaW5pdF9leHRlbnNpYmxlKHZvaWQpOwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQogY29uZmlnX3JlcXVpcmUodXRpbGl0aWVzL2V4ZWN1dGUpCiAKICAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2V4dGVuc2libGVfc2hlbGw7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmMKaW5kZXggMDBjOThkNC4uYThkZDE1NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuYwpAQCAtNDEsNyArNDEsNyBAQAogCiAjaW5jbHVkZSAic3RydWN0LmgiCiAjaW5jbHVkZSAiZmlsZS5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKIAogI2RlZmluZSBNQVhGSUxFICAgMjAKIApAQCAtNTIsMTIgKzUyLDE4IEBACiBpbml0X2ZpbGUodm9pZCkKIHsKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGZpbGVfdGFibGVbXSA9IHsKLSAgICAgICAge0ZJTEVfSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2ZpbGVfdGFibGUsIDEsIHsxfX0sCi0gICAgICAgIHtGSUxFX05BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZmlsZV90YWJsZSwgMSwgezJ9fSwKLSAgICAgICAge0ZJTEVfU0laRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZmlsZV90YWJsZSwgMSwgezN9fSwKLSAgICAgICAge0ZJTEVfTUFYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9maWxlX3RhYmxlLCAxLCB7NH19LAotICAgICAgICB7RklMRV9FUlJPUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZmlsZV90YWJsZSwgMSwgezEwMH19LAotICAgICAgICB7RklMRV9NU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZmlsZV90YWJsZSwgMSwgezEwMX19CisgICAgICAgIHtGSUxFX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZmlsZV90YWJsZSwgMSwgezF9fSwKKyAgICAgICAge0ZJTEVfTkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZmlsZV90YWJsZSwgMSwgezJ9fSwKKyAgICAgICAge0ZJTEVfU0laRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2ZpbGVfdGFibGUsIDEsIHszfX0sCisgICAgICAgIHtGSUxFX01BWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2ZpbGVfdGFibGUsIDEsIHs0fX0sCisgICAgICAgIHtGSUxFX0VSUk9SLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZmlsZV90YWJsZSwgMSwgezEwMH19LAorICAgICAgICB7RklMRV9NU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2ZpbGVfdGFibGUsIDEsIHsxMDF9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5oCmluZGV4IDhiMjIyYzUuLjQ1NTA4NmYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmgKQEAgLTcsNiArNyw4IEBACiAKICNpbmNsdWRlICJtaWJkZWZzLmgiCiAKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSkKKwogdm9pZCAgICAgICAgICAgIGluaXRfZmlsZSh2b2lkKTsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2hwdXguYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2hwdXguYwppbmRleCBkYjA5NGQzLi45YzVmOWY5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9ocHV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvaHB1eC5jCkBAIC0zMCwxNSArMzAsMjEgQEAKICAgICAgKiBpbmZvcm1hdGlvbiBhdCAKICAgICAgKi8KICAgICBzdHJ1Y3QgdmFyaWFibGUyIGhwX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7SFBDT05GLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfaHAsIDEsIHtIUENPTkZ9fSwKLSAgICAgICAge0hQUkVDT05GSUcsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9ocCwgMSwge0hQUkVDT05GSUd9fSwKLSAgICAgICAge0hQRkxBRywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2hwLCAxLCB7SFBGTEFHfX0sCi0gICAgICAgIHtIUExPR01BU0ssIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9ocCwgMSwge0VSUk9SRkxBR319LAotICAgICAgICB7SFBTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9ocCwgMSwge0VSUk9STVNHfX0KKyAgICAgICAge0hQQ09ORiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9ocCwgMSwge0hQQ09ORn19LAorICAgICAgICB7SFBSRUNPTkZJRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9ocCwgMSwge0hQUkVDT05GSUd9fSwKKyAgICAgICAge0hQRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9ocCwgMSwge0hQRkxBR319LAorICAgICAgICB7SFBMT0dNQVNLLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX2hwLCAxLCB7RVJST1JGTEFHfX0sCisgICAgICAgIHtIUFNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9ocCwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBocHRyYXBfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtIUFRSQVAsIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX2hwLCAxLCB7SFBUUkFQfX0sCisgICAgICAgIHtIUFRSQVAsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9ocCwgMSwge0hQVFJBUH19LAogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYwppbmRleCBjNWNlOTA2Li41MTljODBlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYwpAQCAtNzMsNyArNzMsNyBAQAogICogbWluaW1hbCBpbmNsdWRlIGRpcmVjdGl2ZXMgCiAgKi8KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKICNpbmNsdWRlIDx0aW1lLmg+CiAKIC8qCkBAIC0xMzEsNDEgKzEzMSw0MSBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgTE1URU1QU0VOU09SU0lOREVYICAgIDMKLSAgICB7TE1URU1QU0VOU09SU0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezIsIDEsIDF9fSwKKyAgICB7TE1URU1QU0VOU09SU0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezIsIDEsIDF9fSwKICNkZWZpbmUgICBMTVRFTVBTRU5TT1JTREVWSUNFICAgNAotICAgIHtMTVRFTVBTRU5TT1JTREVWSUNFLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7MiwgMSwgMn19LAorICAgIHtMTVRFTVBTRU5TT1JTREVWSUNFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7MiwgMSwgMn19LAogI2RlZmluZSAgIExNVEVNUFNFTlNPUlNWQUxVRSAgICA1Ci0gICAge0xNVEVNUFNFTlNPUlNWQUxVRSwgQVNOX0dBVUdFLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7MiwgMSwgM319LAorICAgIHtMTVRFTVBTRU5TT1JTVkFMVUUsIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezIsIDEsIDN9fSwKICNkZWZpbmUgICBMTUZBTlNFTlNPUlNJTkRFWCAgICAgOAotICAgIHtMTUZBTlNFTlNPUlNJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG1TZW5zb3JzVGFibGUsIDMsCi0gICAgIHszLCAxLCAxfX0sCisgICAge0xNRkFOU0VOU09SU0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezMsIDEsIDF9fSwKICNkZWZpbmUgICBMTUZBTlNFTlNPUlNERVZJQ0UgICAgOQotICAgIHtMTUZBTlNFTlNPUlNERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfbG1TZW5zb3JzVGFibGUsIDMsCi0gICAgIHszLCAxLCAyfX0sCisgICAge0xNRkFOU0VOU09SU0RFVklDRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezMsIDEsIDJ9fSwKICNkZWZpbmUgICBMTUZBTlNFTlNPUlNWQUxVRSAgICAgMTAKLSAgICB7TE1GQU5TRU5TT1JTVkFMVUUsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezMsIDEsIDN9fSwKKyAgICB7TE1GQU5TRU5TT1JTVkFMVUUsIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezMsIDEsIDN9fSwKICNkZWZpbmUgICBMTVZPTFRTRU5TT1JTSU5ERVggICAgMTMKLSAgICB7TE1WT0xUU0VOU09SU0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezQsIDEsIDF9fSwKKyAgICB7TE1WT0xUU0VOU09SU0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezQsIDEsIDF9fSwKICNkZWZpbmUgICBMTVZPTFRTRU5TT1JTREVWSUNFICAgMTQKLSAgICB7TE1WT0xUU0VOU09SU0RFVklDRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezQsIDEsIDJ9fSwKKyAgICB7TE1WT0xUU0VOU09SU0RFVklDRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezQsIDEsIDJ9fSwKICNkZWZpbmUgICBMTVZPTFRTRU5TT1JTVkFMVUUgICAgMTUKLSAgICB7TE1WT0xUU0VOU09SU1ZBTFVFLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfbG1TZW5zb3JzVGFibGUsIDMsCi0gICAgIHs0LCAxLCAzfX0sCisgICAge0xNVk9MVFNFTlNPUlNWQUxVRSwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7NCwgMSwgM319LAogI2RlZmluZSAgIExNTUlTQ1NFTlNPUlNJTkRFWCAgICAxOAotICAgIHtMTU1JU0NTRU5TT1JTSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7NSwgMSwgMX19LAorICAgIHtMTU1JU0NTRU5TT1JTSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7NSwgMSwgMX19LAogI2RlZmluZSAgIExNTUlTQ1NFTlNPUlNERVZJQ0UgICAxOQotICAgIHtMTU1JU0NTRU5TT1JTREVWSUNFLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7NSwgMSwgMn19LAorICAgIHtMTU1JU0NTRU5TT1JTREVWSUNFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7NSwgMSwgMn19LAogI2RlZmluZSAgIExNTUlTQ1NFTlNPUlNWQUxVRSAgICAyMAotICAgIHtMTU1JU0NTRU5TT1JTVkFMVUUsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezUsIDEsIDN9fSwKKyAgICB7TE1NSVNDU0VOU09SU1ZBTFVFLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG1TZW5zb3JzVGFibGUsIDMsIHs1LCAxLCAzfX0sCiB9OwogCiB0eXBlZGVmIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5oCmluZGV4IGFmZWQ2ZmEuLjkyMDk4YTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5oCkBAIC02LDcgKzYsNyBAQAogI2lmbmRlZiBfTUlCR1JPVVBfTE1TRU5TT1JTX0gKICNkZWZpbmUgX01JQkdST1VQX0xNU0VOU09SU19ICiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUpCiBjb25maWdfYWRkX21pYihMTS1TRU5TT1JTLU1JQikKIAogICAgICB2b2lkICAgICAgICAgICAgaW5pdF9sbVNlbnNvcnModm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbXNlbnNvcnNNaWIuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZWE3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbXNlbnNvcnNNaWIuYwpAQCAtMCwwICsxLDIwNSBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9zZW5zb3JzLmg+CisjaW5jbHVkZSAidWNkLXNubXAvbG1zZW5zb3JzTWliLmgiCisKK25ldHNubXBfY29udGFpbmVyICpzZW5zb3JDb250YWluZXIgPSBOVUxMOworCit2b2lkIGluaXRpYWxpemVfbG1TZW5zb3JzVGFibGUoY29uc3QgY2hhciAqdGFibGVOYW1lLCBjb25zdCBvaWQgKnRhYmxlT0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX29wICpmaWx0ZXIsIGludCBtdWx0ICk7CisKK2ludCBfc2Vuc29yX2ZpbHRlcl90ZW1wKCBuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3Qgdm9pZCAqdiApOworaW50IF9zZW5zb3JfZmlsdGVyX2ZhbiggIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICp2ICk7CitpbnQgX3NlbnNvcl9maWx0ZXJfdm9sdCggbmV0c25tcF9jb250YWluZXIgKmMsIGNvbnN0IHZvaWQgKnYgKTsKK2ludCBfc2Vuc29yX2ZpbHRlcl9taXNjKCBuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3Qgdm9pZCAqdiApOworCitzdGF0aWMgY29uc3Qgb2lkIGxtVGVtcFNlbnNvcnNUYWJsZV9vaWRbXSAgID0gezEsMyw2LDEsNCwxLDIwMjEsMTMsMTYsMn07CitzdGF0aWMgY29uc3Qgb2lkIGxtRmFuU2Vuc29yc1RhYmxlX29pZFtdICAgID0gezEsMyw2LDEsNCwxLDIwMjEsMTMsMTYsM307CitzdGF0aWMgY29uc3Qgb2lkIGxtVm9sdFNlbnNvcnNUYWJsZV9vaWRbXSAgID0gezEsMyw2LDEsNCwxLDIwMjEsMTMsMTYsNH07CitzdGF0aWMgY29uc3Qgb2lkIGxtTWlzY1NlbnNvcnNUYWJsZV9vaWRbXSAgID0gezEsMyw2LDEsNCwxLDIwMjEsMTMsMTYsNX07CisgICAgICAgICAgICAvKiBBbGwgdGhlIHRhYmxlcyBoYXZlIHRoZSBzYW1lIGxlbmd0aCByb290IE9JRCAqLworY29uc3Qgc2l6ZV90IGxtU2Vuc29yc1RhYmxlc19vaWRfbGVuID0gT0lEX0xFTkdUSChsbU1pc2NTZW5zb3JzVGFibGVfb2lkKTsKKworCisvKiBJbml0aWFsaXNlIHRoZSBMTSBTZW5zb3JzIE1JQiBtb2R1bGUgKi8KK3ZvaWQKK2luaXRfbG1zZW5zb3JzTWliKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoInVjZC1zbm1wL2xtc2Vuc29yc01pYiIsIkluaXRpYWxpemluZyBMTS1TRU5TT1JTLU1JQiB0YWJsZXNcbiIpKTsKKworICAgIC8qIAorICAgICAqIEluaXRpYWxpc2UgdGhlIGZvdXIgTE0tU0VOU09SUy1NSUIgdGFibGVzCisgICAgICoKKyAgICAgKiBUaGV5IGFyZSBhbG1vc3QgaWRlbnRpY2FsLCBzbyB3ZSBjYW4gdXNlIHRoZSBzYW1lIHJlZ2lzdHJhdGlvbiBjb2RlLgorICAgICAqLworICAgIGluaXRpYWxpemVfbG1TZW5zb3JzVGFibGUoICJsbVRlbXBTZW5zb3JzVGFibGUiLCBsbVRlbXBTZW5zb3JzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2Vuc29yX2ZpbHRlcl90ZW1wLCAxMDAwICk7ICAvKiBNSUIgYXNrcyBmb3IgbUMgKi8KKyAgICBpbml0aWFsaXplX2xtU2Vuc29yc1RhYmxlKCAibG1GYW5TZW5zb3JzVGFibGUiLCAgbG1GYW5TZW5zb3JzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2Vuc29yX2ZpbHRlcl9mYW4sICAxKTsKKyAgICBpbml0aWFsaXplX2xtU2Vuc29yc1RhYmxlKCAibG1Wb2x0U2Vuc29yc1RhYmxlIiwgbG1Wb2x0U2Vuc29yc1RhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbnNvcl9maWx0ZXJfdm9sdCwgMTAwMCApOyAgLyogTUlCIGFza3MgZm9yIG1WICovCisgICAgaW5pdGlhbGl6ZV9sbVNlbnNvcnNUYWJsZSggImxtTWlzY1NlbnNvcnNUYWJsZSIsIGxtTWlzY1NlbnNvcnNUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZW5zb3JfZmlsdGVyX21pc2MsIDEgKTsKK30KKworLyoKKyAqIENvbW1vbiBpbml0aWFsaXNhdGlvbiBjb2RlLCB1c2VkIGZvciBzZXR0aW5nIHVwIGFsbCBmb3VyIHRhYmxlcworICovCit2b2lkCitpbml0aWFsaXplX2xtU2Vuc29yc1RhYmxlKGNvbnN0IGNoYXIgKnRhYmxlTmFtZSwgY29uc3Qgb2lkICp0YWJsZU9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfb3AgKmZpbHRlciwgaW50IG11bHQgKQoreworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOworICAgIG5ldHNubXBfY2FjaGUgICAgICpjYWNoZTsKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgLyoKKyAgICAgKiBFbnN1cmUgdGhlIEhBTCBzZW5zb3JzIG1vZHVsZSBoYXMgYmVlbiBpbml0aWFsaXNlZCwKKyAgICAgKiAgIGFuZCByZXRyaWV2ZSB0aGUgbWFpbiBzZW5zb3JzIGNvbnRhaW5lci4KKyAgICAgKiBUaGlzIHRhYmxlIHdpbGwgdGhlbiBiZSByZWdpc3RlcmVkIHVzaW5nIGEgZmlsdGVyIG9uIHRoaXMgY29udGFpbmVyLgorICAgICAqLworICAgIHNlbnNvckNvbnRhaW5lciA9IGdldF9zZW5zb3JfY29udGFpbmVyKCk7CisgICAgaWYgKCAhc2Vuc29yQ29udGFpbmVyICkgeworICAgICAgICBpbml0X2h3X3NlbnNvcnMoICk7CisgICAgICAgIHNlbnNvckNvbnRhaW5lciA9IGdldF9zZW5zb3JfY29udGFpbmVyKCk7CisgICAgfQorICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoInNlbnNvclRhYmxlOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGNvbnRhaW5lci0+aW5zZXJ0X2ZpbHRlciA9IGZpbHRlcjsKKyAgICBuZXRzbm1wX2NvbnRhaW5lcl9hZGRfaW5kZXgoIHNlbnNvckNvbnRhaW5lciwgY29udGFpbmVyICk7CisKKworICAgIC8qCisgICAgICogQ3JlYXRlIGEgYmFzaWMgcmVnaXN0cmF0aW9uIHN0cnVjdHVyZSBmb3IgdGhlIHRhYmxlCisgICAgICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICB0YWJsZU5hbWUsIGxtU2Vuc29yc1RhYmxlc19oYW5kbGVyLAorICAgICAgICAgICAgICAgdGFibGVPSUQsICBsbVNlbnNvcnNUYWJsZXNfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkKKyAgICAgICAgICAgICAgKTsKKworICAgIC8qCisgICAgICogUmVnaXN0ZXIgdGhlIHRhYmxlIHVzaW5nIHRoZSBmaWx0ZXJlZCBjb250YWluZXIKKyAgICAgKiBJbmNsdWRlIGFuIGluZGljYXRvciBvZiBhbnkgc2NhbGluZyB0byBiZSBhcHBsaWVkIHRvIHRoZSBzZW5zb3IgdmFsdWUKKyAgICAgKi8KKyAgICByZWctPm15X3JlZ192b2lkID0gKHZvaWQgKiltdWx0OworICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKCBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICk7CisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywgQVNOX0lOVEVHRVIsIDApOworICAgIHRhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fTE1TRU5TT1JTX0lOREVYOworICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fTE1TRU5TT1JTX1ZBTFVFOworICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3JlZ2lzdGVyKCByZWcsIHRhYmxlX2luZm8sIGNvbnRhaW5lciwgMCApOworCisgICAgLyoKKyAgICAgKiBJZiB0aGUgSEFMIHNlbnNvcnMgbW9kdWxlIHdhcyBjb25maWd1cmVkIGFzIGFuIG9uLWRlbWFuZCBjYWNoaW5nCisgICAgICogIG1vZHVsZSAocmF0aGVyIHRoYW4gYmVpbmcgYXV0b21hdGljYWxseSBsb2FkZWQgcmVndWxhcmx5KSwKKyAgICAgKiAgdGhlbiBlbnN1cmUgdGhpcyB0YWJsZSBtYWtlcyB1c2Ugb2YgdGhhdCBjYWNoZS4KKyAgICAgKi8KKyAgICBjYWNoZSA9IGdldF9zZW5zb3JfY2FjaGUoKTsKKyAgICBpZiAoIGNhY2hlICkgeworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyX2JlZm9yZSggcmVnLCBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0KCBjYWNoZSApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFibGVfY29udGFpbmVyIik7CisgICAgfQorCit9CisKKworLyoKKyAqICBDb250YWluZXIgZmlsdGVycyBmb3IgdGhlIGZvdXIgdGFibGVzCisgKgorICogIFVzZWQgdG8gZW5zdXJlIHRoYXQgc2Vuc29yIGVudHJpZXMgYXBwZWFyIGluIHRoZSBhcHByb3ByaWF0ZSB0YWJsZS4KKyAqLworaW50IF9zZW5zb3JfZmlsdGVyX3RlbXAoIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICp2ICkgeworICAgIGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKnNwID0gKGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKil2OworICAgIC8qIE9ubHkgbWF0Y2hlcyB0ZW1wZXJhdHVyZSBzZW5zb3JzICovCisgICAgcmV0dXJuICgoIHNwLT50eXBlID09IE5FVFNOTVBfU0VOU09SX1RZUEVfVEVNUEVSQVRVUkUgKSA/IDAgOiAxICk7Cit9CisKK2ludCBfc2Vuc29yX2ZpbHRlcl9mYW4oIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICp2ICkgeworICAgIGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKnNwID0gKGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKil2OworICAgIC8qIE9ubHkgbWF0Y2hlcyBmYW4gc2Vuc29ycyAqLworICAgIHJldHVybiAoKCBzcC0+dHlwZSA9PSBORVRTTk1QX1NFTlNPUl9UWVBFX1JQTSApID8gMCA6IDEgKTsKK30KKworaW50IF9zZW5zb3JfZmlsdGVyX3ZvbHQoIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICp2ICkgeworICAgIGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKnNwID0gKGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKil2OworICAgIC8qIE9ubHkgbWF0Y2hlcyB2b2x0YWdlIHNlbnNvcnMgKEFDIG9yIERDKSAqLworICAgIHJldHVybiAoKCggc3AtPnR5cGUgPT0gTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDICkgfHwKKyAgICAgICAgICAgICAoIHNwLT50eXBlID09IE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVEFHRV9BQyApKSA/IDAgOiAxICk7Cit9CisKK2ludCBfc2Vuc29yX2ZpbHRlcl9taXNjKCBuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3Qgdm9pZCAqdiApIHsKKyAgICBjb25zdCBuZXRzbm1wX3NlbnNvcl9pbmZvICpzcCA9IChjb25zdCBuZXRzbm1wX3NlbnNvcl9pbmZvICopdjsKKyAgICAvKiBNYXRjaGVzIGV2ZXJ5dGhpbmcgZXhjZXB0IHRlbXBlcmF0dXJlLCBmYW4gb3Igdm9sdGFnZSBzZW5zb3JzICovCisgICAgcmV0dXJuICgoKCBzcC0+dHlwZSA9PSBORVRTTk1QX1NFTlNPUl9UWVBFX1RFTVBFUkFUVVJFICkgfHwKKyAgICAgICAgICAgICAoIHNwLT50eXBlID09IE5FVFNOTVBfU0VOU09SX1RZUEVfUlBNICAgICAgICAgKSB8fAorICAgICAgICAgICAgICggc3AtPnR5cGUgPT0gTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDICApIHx8CisgICAgICAgICAgICAgKCBzcC0+dHlwZSA9PSBORVRTTk1QX1NFTlNPUl9UWVBFX1ZPTFRBR0VfQUMgICkpID8gMSA6IDAgKTsKK30KKworCisvKgorICogSGFuZGxlIHJlcXVlc3RzIGZvciBhbnkgb2YgdGhlIGZvdXIgbG1YeHh4U2Vuc29yc1RhYmxlcyAKKyAqCisgKiBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgYWxsIHRoZSB0YWJsZSBzaGFyZSB0aGUKKyAqICBzYW1lIHN0cnVjdHVyZSBhbmQgYmVoYXZpb3VyLgorICovCitpbnQKK2xtU2Vuc29yc1RhYmxlc19oYW5kbGVyKAorICAgIG5ldHNubXBfbWliX2hhbmRsZXIgICAgICAgICAgICAgICAqaGFuZGxlciwKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICAgKnJlZ2luZm8sCisgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAgICAgICpyZXFpbmZvLAorICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICAgICAgICAqcmVxdWVzdHMpIHsKKworICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICpyZXF1ZXN0OworICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOworICAgIG5ldHNubXBfc2Vuc29yX2luZm8gICAgICAgICpzZW5zb3JfaW5mbzsKKyAgICBpbnQgbXVsdCAgPSAoaW50KXJlZ2luZm8tPm15X3JlZ192b2lkOworCisgICAgREVCVUdNU0dUTCgoICJ1Y2Qtc25tcC9sbXNlbnNvcnNNaWIiLCJsbVNlbnNvcnNUYWJsZXNfaGFuZGxlciAtIHJvb3Q6ICIpKTsKKyAgICBERUJVR01TR09JRCgoInVjZC1zbm1wL2xtc2Vuc29yc01pYiIsIHJlZ2luZm8tPnJvb3RvaWQsIHJlZ2luZm8tPnJvb3RvaWRfbGVuKSk7CisgICAgREVCVUdNU0coKCAgICJ1Y2Qtc25tcC9sbXNlbnNvcnNNaWIiLCIsIG1vZGUgJWRcbiIsIHJlcWluZm8tPm1vZGUgKSk7CisgICAgLyoKKyAgICAgKiBUaGlzIGlzIGEgcmVhZC1vbmx5IHRhYmxlLCBzbyB3ZSBvbmx5IG5lZWQgdG8gaGFuZGxlIEdFVCByZXF1ZXN0cy4KKyAgICAgKiAgICAoVGhlIGNvbnRhaW5lciBoZWxwZXIgY29udmVydHMgR0VUTkVYVC0+R0VUIHJlcXVlc3RzIGF1dG9tYXRpY2FsbHkpLgorICAgICAqLworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICBzZW5zb3JfaW5mbyA9IChuZXRzbm1wX3NlbnNvcl9pbmZvICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKCAhc2Vuc29yX2luZm8gKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX05PU1VDSElOU1RBTkNFKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIHRhYmxlX2luZm8gICA9ICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9MTVNFTlNPUlNfSU5ERVg6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNvcl9pbmZvLT5pZHgub2lkc1swXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9MTVNFTlNPUlNfREVWSUNFOgorICAgICAgICAgICAgICAgIGlmICggc2Vuc29yX2luZm8tPmRlc2NyWzBdICE9ICdcMCcgKSB7CisgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggcmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNvcl9pbmZvLT5kZXNjciwgc3RybGVuKHNlbnNvcl9pbmZvLT5kZXNjcikpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggcmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNvcl9pbmZvLT5uYW1lLCAgc3RybGVuKHNlbnNvcl9pbmZvLT5uYW1lKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fTE1TRU5TT1JTX1ZBTFVFOgorICAgICAgICAgICAgICAgIC8qIE11bHRpcGx5IHRoZSB2YWx1ZSBieSB0aGUgYXBwcm9wcmlhdGUgc2NhbGluZyBmYWN0b3IgZm9yIHRoaXMgdGFibGUgKi8KKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlciggcmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fR0FVR0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKG11bHQqc2Vuc29yX2luZm8tPnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNIT0JKRUNUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ4NWRkMQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5oCkBAIC0wLDAgKzEsMjMgQEAKKyNpZm5kZWYgTE1fU0VOU09SU19NSUJfSAorI2RlZmluZSBMTV9TRU5TT1JTX01JQl9ICisKK2NvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL3NlbnNvcnMpCitjb25maWdfYWRkX21pYihMTS1TRU5TT1JTLU1JQikKKworLyogZnVuY3Rpb24gZGVjbGFyYXRpb25zICovCit2b2lkIGluaXRfbG1zZW5zb3JzTWliKHZvaWQpOworCisvKgorICogSGFuZGxlciBhbmQgQ29sdW1uIGRlZmluaXRpb25zIGZvciBsbVh4eHhTZW5zb3JzVGFibGUKKyAqCisgKiBOb3RlIHRoYXQgdGhlIHNhbWUgaGFuZGxlciAoYW5kIGhlbmNlIHRoZSBzYW1lCisgKiAgY29sdW1uIGlkZW50aWZpZXJzKSBhcmUgdXNlZCBmb3IgYWxsIGZvdXIgdGFibGVzLgorICogVGhpcyBpcyBwb3NzaWJsZSBiZWNhdXNlIGFsbCB0aGUgdGFibGUgc2hhcmUgdGhlCisgKiAgc2FtZSBzdHJ1Y3R1cmUgYW5kIGJlaGF2aW91ci4KKyAqLworTmV0c25tcF9Ob2RlX0hhbmRsZXIgbG1TZW5zb3JzVGFibGVzX2hhbmRsZXI7CisjZGVmaW5lIENPTFVNTl9MTVNFTlNPUlNfSU5ERVgJCTEKKyNkZWZpbmUgQ09MVU1OX0xNU0VOU09SU19ERVZJQ0UJCTIKKyNkZWZpbmUgQ09MVU1OX0xNU0VOU09SU19WQUxVRQkJMworCisjZW5kaWYgLyogTE1fU0VOU09SU19NSUJfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jCmluZGV4IGMzMDY1MDYuLjI1NDhlZDggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMKQEAgLTEzNCw3ICsxMzQsNyBAQAogCiAjaW5jbHVkZSAic3RydWN0LmgiCiAjaW5jbHVkZSAibG9hZGF2ZS5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKICNpbmNsdWRlICJrZXJuZWwuaCIKIAogZG91YmxlICAgICAgICAgIG1heGxvYWRbM107CkBAIC0xNDgsMjQgKzE0OCwyNCBAQAogICAgICAqIGluZm9ybWF0aW9uIGF0IAogICAgICAqLwogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV9sb2FkYXZlX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge0xPQURBVkUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLAotICAgICAgICAge0xPQURBVkV9fSwKLSAgICAgICAge0xPQURNQVhWQUwsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLAotICAgICAgICAge0xPQURNQVhWQUx9fSwKLSAgICAgICAge0xPQURBVkVJTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwKLSAgICAgICAgIHtMT0FEQVZFSU5UfX0sCisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7TE9BREFWRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLCB7TE9BREFWRX19LAorICAgICAgICB7TE9BRE1BWFZBTCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLCB7TE9BRE1BWFZBTH19LAorICAgICAgICB7TE9BREFWRUlOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwge0xPQURBVkVJTlR9fSwKICNpZmRlZiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMKLSAgICAgICAge0xPQURBVkVGTE9BVCwgQVNOX09QQVFVRV9GTE9BVCwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2xvYWRhdmUsIDEsCi0gICAgICAgICB7TE9BREFWRUZMT0FUfX0sCisgICAgICAgIHtMT0FEQVZFRkxPQVQsIEFTTl9PUEFRVUVfRkxPQVQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwge0xPQURBVkVGTE9BVH19LAogI2VuZGlmCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwKLSAgICAgICAgIHtFUlJPUk1TR319CisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX2xvYWRhdmUsIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX2xvYWRhdmUsIDEsIHtFUlJPUk1TR319CiAgICAgfTsKIAogICAgIC8qCkBAIC0zNDMsNyArMzQzLDcgQEAKICAgICB9CiAgICAgaWYgKHRyeV9nZXRsb2FkYXZnKCZhdmVucnVuWzBdLCBzaXplb2YoYXZlbnJ1bikgLyBzaXplb2YoYXZlbnJ1blswXSkpCiAgICAgICAgID09IC0xKQotICAgICAgICByZXR1cm4gKDApOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewogICAgIGNhc2UgTE9BREFWRToKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5oCmluZGV4IDQ5N2JmYjguLjRmNWU3YTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmgKQEAgLTQsNyArNCw3IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9MT0FEQVZFX0gKICNkZWZpbmUgX01JQkdST1VQX0xPQURBVkVfSAogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQogCiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X2xvYWRhdmUodm9pZCk7CiAgICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9leHRlbnNpYmxlX2xvYWRhdmU7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guYwppbmRleCA2YjY3MmZhLi44ZDAxNzMyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMKQEAgLTM4LDExICszOCwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlICJzdHJ1Y3QuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAjaW5jbHVkZSAibG9nbWF0Y2guaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgogCi0jZGVmaW5lIE1BWExPR01BVENIICAgNTAKKyNkZWZpbmUgTUFYTE9HTUFUQ0ggICAyNTAKIAogc3RydWN0IGxvZ21hdGNoc3RhdCBsb2dtYXRjaFRhYmxlW01BWExPR01BVENIXTsKIGludCAgICAgICAgICAgICBsb2dtYXRjaENvdW50OwpAQCAtNTEsMjggKzUxLDM3IEBACiBpbml0X2xvZ21hdGNoKHZvaWQpCiB7CiAgICAgc3RydWN0IHZhcmlhYmxlMiBsb2dtYXRjaF9pbmZvW10gPSB7Ci0gICAgICAgIHtMT0dNQVRDSF9JTkZPLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9sb2dtYXRjaF90YWJsZSwgMH0KKyAgICAgICAge0xPR01BVENIX0lORk8sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMH0KICAgICB9OwogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBsb2dtYXRjaF90YWJsZVtdID0gewotICAgICAgICB7TE9HTUFUQ0hfSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MX19LAotICAgICAgICB7TE9HTUFUQ0hfTkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezJ9fSwKLSAgICAgICAge0xPR01BVENIX0ZJTEVOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLAotICAgICAgICAgezN9fSwKLSAgICAgICAge0xPR01BVENIX1JFR0VYLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7NH19LAotICAgICAgICB7TE9HTUFUQ0hfR0xPQkFMQ1RSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwKLSAgICAgICAgIHs1fX0sCi0gICAgICAgIHtMT0dNQVRDSF9HTE9CQUxDTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLAotICAgICAgICAgezZ9fSwKLSAgICAgICAge0xPR01BVENIX0NVUlJFTlRDVFIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLAotICAgICAgICAgezd9fSwKLSAgICAgICAge0xPR01BVENIX0NVUlJFTlRDTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLAotICAgICAgICAgezh9fSwKLSAgICAgICAge0xPR01BVENIX0NPVU5URVIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7OX19LAotICAgICAgICB7TE9HTUFUQ0hfQ09VTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTB9fSwKLSAgICAgICAge0xPR01BVENIX0ZSRVEsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTF9fSwKLSAgICAgICAge0xPR01BVENIX0VSUk9SLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezEwMH19LAotICAgICAgICB7TE9HTUFUQ0hfTVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTAxfX0KKyAgICAgICAge0xPR01BVENIX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHsxfX0sCisgICAgICAgIHtMT0dNQVRDSF9OQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezJ9fSwKKyAgICAgICAge0xPR01BVENIX0ZJTEVOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezN9fSwKKyAgICAgICAge0xPR01BVENIX1JFR0VYLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezR9fSwKKyAgICAgICAge0xPR01BVENIX0dMT0JBTENUUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7NX19LAorICAgICAgICB7TE9HTUFUQ0hfR0xPQkFMQ05ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHs2fX0sCisgICAgICAgIHtMT0dNQVRDSF9DVVJSRU5UQ1RSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHs3fX0sCisgICAgICAgIHtMT0dNQVRDSF9DVVJSRU5UQ05ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHs4fX0sCisgICAgICAgIHtMT0dNQVRDSF9DT1VOVEVSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHs5fX0sCisgICAgICAgIHtMT0dNQVRDSF9DT1VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTB9fSwKKyAgICAgICAge0xPR01BVENIX0ZSRVEsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezExfX0sCisgICAgICAgIHtMT0dNQVRDSF9FUlJPUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTAwfX0sCisgICAgICAgIHtMT0dNQVRDSF9NU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTAxfX0KICAgICB9OwogCiAgICAgLyoKQEAgLTE3MCwxMSArMTc5LDE1IEBACiAgICAgICAgIHNzY2FuZihjcHRyLCAiJTI1NXMlYyUyNTVzJWMgJWQgJTI1NWNcbiIsCiAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2xvZ21hdGNoQ291bnRdLm5hbWUsCiAJICAgICAgICZzcGFjZV9uYW1lLAotICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5maWxlbmFtZSwKKyAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbbG9nbWF0Y2hDb3VudF0uZmlsZW5hbWVQYXR0ZXJuLAogCSAgICAgICAmc3BhY2VfcGF0aCwKICAgICAgICAgICAgICAgICYobG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5mcmVxdWVuY3kpLAogICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5yZWdFeCk7CiAKKyAgICAgICAgLyogZmlsbCBpbiBmaWxlbmFtZSB3aXRoIGluaXRpYWwgZGF0YSAqLworICAgICAgICBzdHJjcHkobG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5maWxlbmFtZSwgbG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5maWxlbmFtZVBhdHRlcm4pOworICAgICAgICBsb2dtYXRjaF91cGRhdGVfZmlsZW5hbWUobG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5maWxlbmFtZVBhdHRlcm4sIGxvZ21hdGNoVGFibGVbbG9nbWF0Y2hDb3VudF0uZmlsZW5hbWUpOworCiAJLyoKIAkgKiBMb2cgYW4gZXJyb3IgdGhlbiByZXR1cm4gaWYgYW55IG9mIHRoZSBzdHJpbmdzIHNjYW5uZWQgaW4gd2VyZQogCSAqIGxhcmdlciB0aGVuIHRoZXkgc2hvdWxkIGhhdmUgYmVlbi4KQEAgLTI1MCw2ICsyNjMsNyBAQAogICAgIGludCAgICAgICAgICAgICB0b29iaWc7CiAgICAgaW50ICAgICAgICAgICAgIGFueUNoYW5nZXMgPSBGQUxTRTsKICAgICBzdHJ1Y3Qgc3RhdCAgICAgc2I7CisgICAgY2hhciAgICAgICAgICAgIGxhc3RGaWxlbmFtZVsyNTZdOwogCiAgICAgLyoKICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCkBAIC0yNzcsNyArMjkxLDYgQEAKIAogICAgICAgICBpZiAoKHBlcmZpbGUgPSBmb3BlbihwZXJmaWxlbmFtZSwgInIiKSkpIHsKIAotCiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAogICAgICAgICAgICAgICogdGhlIHBlcnNpc3RlbnQgZGF0YSBmaWxlIGV4aXN0cyBzbyAgIApAQCAtMjg4LDcgKzMwMSw3IEBACiAKICAgICAgICAgICAgIHBvcyA9IGNvdW50ZXIgPSBjY291bnRlciA9IDA7CiAKLSAgICAgICAgICAgIGlmIChmc2NhbmYocGVyZmlsZSwgIiVsdSAlbHUgJWx1IiwgJnBvcywgJmNjb3VudGVyLCAmY291bnRlcikpIHsKKyAgICAgICAgICAgIGlmIChmc2NhbmYocGVyZmlsZSwgIiVsdSAlbHUgJWx1ICVzIiwgJnBvcywgJmNjb3VudGVyLCAmY291bnRlciwgbGFzdEZpbGVuYW1lKSkgewogCiAKICAgICAgICAgICAgICAgICAvKgpAQCAtMjk5LDQxICszMTIsNTIgQEAKICAgICAgICAgICAgICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCiAgICAgICAgICAgICAgICAgICovCiAKLSAgICAgICAgICAgICAgICBpZiAoKGxvZ21hdGNoVGFibGVbaWluZGV4XS5sb2dmaWxlID0KLSAgICAgICAgICAgICAgICAgICAgZm9wZW4obG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmZpbGVuYW1lLCAiciIpKSkgewotCisgICAgICAgICAgICAgICAgaWYgKGxvZ21hdGNoX3VwZGF0ZV9maWxlbmFtZShsb2dtYXRjaFRhYmxlW2lpbmRleF0uZmlsZW5hbWVQYXR0ZXJuLCBsYXN0RmlsZW5hbWUpID09IDApIHsKIAogICAgICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCi0gICAgICAgICAgICAgICAgICAgICAqIHRoZSBsb2cgZmlsZSBjb3VsZCBiZSBvcGVuZWQ7IG5vdyAgICAKLSAgICAgICAgICAgICAgICAgICAgICogbGV0J3MgdHJ5IHRvIHNldCB0aGUgcG9pbnRlciAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCisgICAgICAgICAgICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgKiB0aGUgZmlsZW5hbWUgaXMgc3RpbGwgdGhlIHNhbWUgYXMgCisgICAgICAgICAgICAgICAgICAgICAqIHRoZSBvbmUgc3RvcmVkIGluIHRoZSBwZXJzaXN0ZW50CisgICAgICAgICAgICAgICAgICAgICAqIGRhdGEgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAgICAgICAqLwogCi0gICAgICAgICAgICAgICAgICAgIGlmICghZnNlZWsKLSAgICAgICAgICAgICAgICAgICAgICAgIChsb2dtYXRjaFRhYmxlW2lpbmRleF0ubG9nZmlsZSwgcG9zLCBTRUVLX1NFVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChsb2dtYXRjaFRhYmxlW2lpbmRleF0ubG9nZmlsZSA9CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Blbihsb2dtYXRjaFRhYmxlW2lpbmRleF0uZmlsZW5hbWUsICJyIikpKSB7CiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBwb2ludGVyIGNvdWxkIGJlIHNldCAtIHRoaXMgaXMgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBtb3N0IHRoYXQgd2UgY2FuIGRvOiBpZiB0aGUgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHBvaW50ZXIgaXMgc21hbGxlciB0aGFuIHRoZSBmaWxlICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpemUgd2UgbXVzdCBhc3N1bWUgdGhhdCB0aGUgcG9pbnRlciAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHN0aWxsIHBvaW50cyB0byB3aGVyZSBpdCByZWFkIHRoZSAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIGZpbGUgbGFzdCB0aW1lOyBsZXQncyByZXN0b3JlIHRoZSAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBsb2cgZmlsZSBjb3VsZCBiZSBvcGVuZWQ7IG5vdyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGxldCdzIHRyeSB0byBzZXQgdGhlIHBvaW50ZXIgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uY3VycmVudEZpbGVQb3NpdGlvbiA9IHBvczsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5jdXJyZW50TWF0Y2hDb3VudGVyID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY291bnRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5nbG9iYWxNYXRjaENvdW50ZXIgPSBjb3VudGVyOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZzZWVrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ21hdGNoVGFibGVbaWluZGV4XS5sb2dmaWxlLCBwb3MsIFNFRUtfU0VUKSkgewogCi0gICAgICAgICAgICAgICAgICAgIGZjbG9zZShsb2dtYXRjaFRhYmxlW2lpbmRleF0ubG9nZmlsZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgcG9pbnRlciBjb3VsZCBiZSBzZXQgLSB0aGlzIGlzICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIG1vc3QgdGhhdCB3ZSBjYW4gZG86IGlmIHRoZSAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHBvaW50ZXIgaXMgc21hbGxlciB0aGFuIHRoZSBmaWxlICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaXplIHdlIG11c3QgYXNzdW1lIHRoYXQgdGhlIHBvaW50ZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3RpbGwgcG9pbnRzIHRvIHdoZXJlIGl0IHJlYWQgdGhlICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZpbGUgbGFzdCB0aW1lOyBsZXQncyByZXN0b3JlIHRoZSAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmN1cnJlbnRGaWxlUG9zaXRpb24gPSBwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmN1cnJlbnRNYXRjaENvdW50ZXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY291bnRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKGxvZ21hdGNoVGFibGVbaWluZGV4XS5sb2dmaWxlKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uZ2xvYmFsTWF0Y2hDb3VudGVyID0gY291bnRlcjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZmNsb3NlKHBlcmZpbGUpOwpAQCAtMzQyLDYgKzM2NiwxOCBAQAogICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0udmlyZ2luID0gRkFMU0U7CiAgICAgfQogCisgICAgLyoKKyAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICogY2hlY2sgaWYgYSBuZXcgaW5wdXQgZmlsZSBuZWVkcyB0byBiZSBvcGVuZWQKKyAgICAgKiBpZiB5ZXMsIHJlc2V0IGNvdW50ZXIgYW5kIHBvc2l0aW9uCisgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAqLworCisgICAgaWYgKGxvZ21hdGNoX3VwZGF0ZV9maWxlbmFtZShsb2dtYXRjaFRhYmxlW2lpbmRleF0uZmlsZW5hbWVQYXR0ZXJuLCBsb2dtYXRjaFRhYmxlW2lpbmRleF0uZmlsZW5hbWUpID09IDEpIHsKKyAgICAgICAgbG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmN1cnJlbnRGaWxlUG9zaXRpb24gPSAwOyAKKyAgICAgICAgbG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmN1cnJlbnRNYXRjaENvdW50ZXIgPSAwOworICAgIH0KKwogCiAgICAgLyoKICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCkBAIC00MjksMTAgKzQ2NSwxMSBAQAogICAgICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCiAgICAgICAgICAqLwogCi0gICAgICAgIGZwcmludGYocGVyZmlsZSwgIiVsdSAlbHUgJWx1XG4iLAorICAgICAgICBmcHJpbnRmKHBlcmZpbGUsICIlbHUgJWx1ICVsdSAlc1xuIiwKICAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uY3VycmVudEZpbGVQb3NpdGlvbiwKICAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uY3VycmVudE1hdGNoQ291bnRlciwKLSAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uZ2xvYmFsTWF0Y2hDb3VudGVyKTsKKyAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uZ2xvYmFsTWF0Y2hDb3VudGVyLAorICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5maWxlbmFtZSk7CiAKICAgICAgICAgZmNsb3NlKHBlcmZpbGUpOwogICAgIH0KQEAgLTU0OSw0ICs1ODYsNTQgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBmaWxlbmFtZSBwYXR0ZXJuIAorICogIGNvbnRhaW5zIHRoZSAlIGNoYXJhY3RlciBpbmRpY2F0aW5nIGEgdmFyaWFibGUKKyAqICBmaWxlbmFtZSAoaS5lLiBpdCB1c2VzIGRhdGUvdGltZSBmb3JtYXQgY29udHJvbCAKKyAqICBjb2Rlcywgc2VlICdtYW4gZGF0ZScpIHRoZW4gZXhwYW5kcyB0aG9zZSBjb250cm9sCisgKiAgY29kZXMgYmFzZWQgb24gY3VycmVudCB0aW1lIGFuZCBzZXRzIHRoZSAKKyAqICBmaWxlbmFtZSBmaWVsZCBpbiB0aGUgc3RydWN0LgorICogIFJldHVybnMgMSBpZiB0aGUgZmlsZW5hbWUgY2hhbmdlZCwgMCBvdGhlcndpc2UKKyAqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworaW50IGxvZ21hdGNoX3VwZGF0ZV9maWxlbmFtZShjaGFyICogcGF0dGVybiwgY2hhciAqIGN1cnJlbnRGaWxlbmFtZSkgeworICAgIHRpbWVfdCB0OworICAgIHN0cnVjdCB0bSAqdG1wOworICAgIGNoYXIgbmV3RmlsZW5hbWVbMjU2XTsKKworICAgIC8qIAorICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgKiBpZiB0aGUgZmlsZW5hbWUgcGF0dGVybiBkb2Vzbid0IGhhdmUgdGhlICIlIiBjaGFyYWN0ZXIganVzdCByZXR1cm4sIAorICAgICAqIHNpbmNlIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZworICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgKi8KKyAgICBpZiAoc3Ryc3RyKHBhdHRlcm4sICIlIikgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB0ID0gdGltZShOVUxMKTsKKyAgICB0bXAgPSBsb2NhbHRpbWUoJnQpOworCisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHBlcnJvcigibG9jYWx0aW1lIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIHJlc3VsdCBvZiBleHBhbnNpb24gbXVzdCBmaXQgaW50byBuZXdGaWxlbmFtZSwgb3RoZXJ3aXNlIHJldHVybmluZyAqLyAKKyAgICBpZiAoc3RyZnRpbWUobmV3RmlsZW5hbWUsIHNpemVvZihuZXdGaWxlbmFtZSksIHBhdHRlcm4sIHRtcCkgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBpZiBzYW1lIGFzIGN1cnJlbnQgZmlsZW5hbWUsIGp1c3QgcmV0dXJuICovCisgICAgaWYgKHN0cmNtcChjdXJyZW50RmlsZW5hbWUsIG5ld0ZpbGVuYW1lKSA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIG90aGVyd2lzZSB1cGRhdGUgY3VycmVudEZpbGVuYW1lIGFuZCByZXR1cm4gMSAqLworICAgICAgICBzdHJjcHkoY3VycmVudEZpbGVuYW1lLCBuZXdGaWxlbmFtZSk7IAorICAgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CisKICNlbmRpZiAvKiBIQVZFX1JFR0VYICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guaAppbmRleCBlYjJjMDcwLi4zNWFkMjdmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmgKQEAgLTUsMTAgKzUsMTQgQEAKICNpZm5kZWYgX01JQkdST1VQX0xPR01BVENIX0gKICNkZWZpbmUgX01JQkdST1VQX0xPR01BVENIX0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSkKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKICNpbmNsdWRlIDxyZWdleC5oPgogCiBzdHJ1Y3QgbG9nbWF0Y2hzdGF0IHsKKyAgICBjaGFyICAgICAgICAgICAgZmlsZW5hbWVQYXR0ZXJuWzI1Nl07CiAgICAgY2hhciAgICAgICAgICAgIGZpbGVuYW1lWzI1Nl07CiAgICAgY2hhciAgICAgICAgICAgIHJlZ0V4WzI1Nl07CiAgICAgY2hhciAgICAgICAgICAgIG5hbWVbMjU2XTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmMKaW5kZXggMTA5ZTk2Zi4uYTI3OWNkZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmMKQEAgLTEwLDMyICsxMCwzMCBAQAogI2luY2x1ZGUgIm1lbW9yeS5oIgogCiAjZGVmaW5lIERFRkFVTFRNSU5JTVVNU1dBUCAxNjAwMCAgICAgICAgLyoga2lsb2J5dGVzICovCi1pbnQgbWVtb3J5X29iamVjdF9pbmRleDsKLWludCBtaW5pbXVtX3N3YXA7CitzdGF0aWMgaW50IG1pbmltdW1fc3dhcDsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBtZW1vcnkgbW9kdWxlICovCiB2b2lkCiBpbml0X21lbW9yeSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgICAgICBtZW1vcnlfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDQgfTsKLSAgICBzdGF0aWMgb2lkICAgICAgbWVtU3dhcEVycm9yX29pZFtdICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgMjAyMSwgNCwgMTAwIH07Ci0gICAgc3RhdGljIG9pZCAgICAgIG1lbVN3YXBFcnJNc2dfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDQsIDEwMSB9OworICAgIGNvbnN0IG9pZCAgICAgIG1lbW9yeV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgNCwgMSwgMjAyMSwgNCB9OworICAgIGNvbnN0IG9pZCAgICAgIG1lbVN3YXBFcnJvcl9vaWRbXSAgPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDQsIDEwMCB9OworICAgIGNvbnN0IG9pZCAgICAgIG1lbVN3YXBFcnJNc2dfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDQsIDEwMSB9OwogCiAgICAgREVCVUdNU0dUTCgoIm1lbW9yeSIsICJJbml0aWFsaXppbmdcbiIpKTsKIAotICAgIG1lbW9yeV9vYmplY3RfaW5kZXggPSBPSURfTEVOR1RIKG1lbW9yeV9vaWQpOwogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKAogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibWVtb3J5IiwgaGFuZGxlX21lbW9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9vaWQsIG1lbW9yeV9vYmplY3RfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfb2lkLCBPSURfTEVOR1RIKG1lbW9yeV9vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMTcpOwogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKAogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibWVtU3dhcEVycm9yIiwgaGFuZGxlX21lbW9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbVN3YXBFcnJvcl9vaWQsIG1lbW9yeV9vYmplY3RfaW5kZXgrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbVN3YXBFcnJvcl9vaWQsIE9JRF9MRU5HVEgobWVtU3dhcEVycm9yX29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSkpOwogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKAogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibWVtU3dhcEVyck1zZyIsIGhhbmRsZV9tZW1vcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1lbVN3YXBFcnJNc2dfb2lkLCBtZW1vcnlfb2JqZWN0X2luZGV4KzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbVN3YXBFcnJNc2dfb2lkLCBPSURfTEVOR1RIKG1lbVN3YXBFcnJNc2dfb2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSk7CiAKICAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic3dhcCIsIG1lbW9yeV9wYXJzZV9jb25maWcsCkBAIC03NCw3ICs3Miw3IEBACiAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgY2FzZSBNT0RFX0dFVDoKICAgICAgICAgbmV0c25tcF9tZW1vcnlfbG9hZCgpOwotICAgICAgICBzd2l0Y2ggKHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVbIG1lbW9yeV9vYmplY3RfaW5kZXggXSkgeworICAgICAgICBzd2l0Y2ggKHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVbIHJlZ2luZm8tPnJvb3RvaWRfbGVuIC0gMiBdKSB7CiAgICAgICAgIGNhc2UgTUVNT1JZX0lOREVYOgogICAgICAgICAgICAgdmFsID0gMDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjA1LDcgKzIwMyw3IEBACiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmtub3duIG9iamVjdCAoJWx1KSBpbiBoYW5kbGVfbWVtb3J5XG4iLAotICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZVsgbWVtb3J5X29iamVjdF9pbmRleCBdKTsKKyAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVbIHJlZ2luZm8tPnJvb3RvaWRfbGVuIC0gMiBdKTsKIE5PU1VDSDoKICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoIHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX05PU1VDSE9CSkVDVCApOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2FpeDQuYwppbmRleCAzMThlZWUwLi44MjBmNjI4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmMKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIgICAgICAgICAvKiB1dGlsaXR5IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAqLworI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIgLyogdXRpbGl0eSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKi8KICNpbmNsdWRlICJtZW1vcnkuaCIgICAgICAgICAgICAgLyogdGhlIG1vZHVsZS1zcGVjaWZpYyBoZWFkZXIgKi8KICNpbmNsdWRlICJtZW1vcnlfYWl4NC5oIiAgICAvKiB0aGUgbW9kdWxlLXNwZWNpZmljIGhlYWRlciAqLwogCkBAIC01NSwzOCArNTUsNDAgQEAKIHsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV9tZW1fdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7TUVNVE9UQUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVB9fSwKLSAgICAgICAge01FTUFWQUlMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQVZBSUxTV0FQfX0sCi0gICAgICAgIHtNRU1UT1RBTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMUkVBTH19LAotICAgICAgICB7TUVNQVZBSUxSRUFMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFJFQUx9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxTV0FQVFhUfX0sCi0gICAgICAgIHtNRU1VU0VEU1dBUFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVVNFRFNXQVBUWFR9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1VU0VEUkVBTFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVVNFRFJFQUxUWFR9fSwKLSAgICAgICAge01FTVRPVEFMRlJFRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxGUkVFfX0sCi0gICAgICAgIHtNRU1TV0FQTUlOSU1VTSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNU1dBUE1JTklNVU19fSwKLSAgICAgICAge01FTVNIQVJFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNU0hBUkVEfX0sCi0gICAgICAgIHtNRU1CVUZGRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUJVRkZFUn19LAotICAgICAgICB7TUVNQ0FDSEVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1DQUNIRUR9fSwKLSAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JGTEFHfX0sCi0gICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7TUVNVE9UQUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVB9fSwKKyAgICAgICAge01FTUFWQUlMU1dBUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQVZBSUxTV0FQfX0sCisgICAgICAgIHtNRU1UT1RBTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMUkVBTH19LAorICAgICAgICB7TUVNQVZBSUxSRUFMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFJFQUx9fSwKKyAgICAgICAge01FTVRPVEFMU1dBUFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxTV0FQVFhUfX0sCisgICAgICAgIHtNRU1VU0VEU1dBUFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVVNFRFNXQVBUWFR9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMVFhUfX0sCisgICAgICAgIHtNRU1VU0VEUkVBTFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVVNFRFJFQUxUWFR9fSwKKyAgICAgICAge01FTVRPVEFMRlJFRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxGUkVFfX0sCisgICAgICAgIHtNRU1TV0FQTUlOSU1VTSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNU1dBUE1JTklNVU19fSwKKyAgICAgICAge01FTVNIQVJFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNU0hBUkVEfX0sCisgICAgICAgIHtNRU1CVUZGRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUJVRkZFUn19LAorICAgICAgICB7TUVNQ0FDSEVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1DQUNIRUR9fSwKKyAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JGTEFHfX0sCisgICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk1TR319CiAgICAgfTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2FpeDQuaAppbmRleCA5ZjU4MDQxLi5jMzk1OTZjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmgKQEAgLTUsNiArNSw4IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9NRU1PUllfQUlYNF9ICiAjZGVmaW5lIF9NSUJHUk9VUF9NRU1PUllfQUlYNF9ICiAKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCisKICNpbmNsdWRlICJtaWJkZWZzLmgiCiAKIHZvaWQgICAgICAgICAgICBpbml0X21lbW9yeV9haXg0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmMKaW5kZXggNzljYzRjOS4uNzRkNTM2NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5jCkBAIC00NCw3ICs0NCw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgIm1lbW9yeS5oIgogI2luY2x1ZGUgIm1lbW9yeV9kYXJ3aW43LmgiCiAKQEAgLTczLDIzICs3Myw0MCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX21lbV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVB9fSwKLSAgICAgICAge01FTUFWQUlMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUx9fSwKLSAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFJFQUx9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKLSAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURTV0FQVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1VU0VEUkVBTFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAotICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMRlJFRX19LAotICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNU1dBUE1JTklNVU19fSwKLSAgICAgICAge01FTVNIQVJFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKLSAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1CVUZGRVJ9fSwKLSAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1DQUNIRUR9fSwKLSAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAorICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMfX0sCisgICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAorICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKKyAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEU1dBUFRYVH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKKyAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAorICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTEZSRUV9fSwKKyAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAorICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKKyAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQlVGRkVSfX0sCisgICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5oCmluZGV4IGVmYTk5YzguLmFiNWQyNjQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgX01JQkdST1VQX01FTU9SWV9EQVJXSU43X0gKICNkZWZpbmUgX01JQkdST1VQX01FTU9SWV9EQVJXSU43X0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogZXh0ZXJuIHZvaWQgICAgIGluaXRfbWVtb3J5X2Rhcndpbjcodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZHluaXguYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5jCmluZGV4IGIxZDZjYjMuLjI2MWM0Y2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5jCkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgogCiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiICAgICAgICAgLyogdXRpbGl0eSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKi8KKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiIC8qIHV0aWxpdHkgZnVuY3Rpb24gZGVjbGFyYXRpb25zICovCiAjaW5jbHVkZSAibWVtb3J5LmgiICAgICAgICAgICAgIC8qIHRoZSBtb2R1bGUtc3BlY2lmaWMgaGVhZGVyICovCiAjaW5jbHVkZSAibWVtb3J5X2R5bml4LmgiICAgICAgIC8qIHRoZSBtb2R1bGUtc3BlY2lmaWMgaGVhZGVyICovCiAKQEAgLTM0LDM4ICszNCw0MCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX21lbV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUH19LAotICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFNXQVB9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMfX0sCi0gICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMUkVBTH19LAotICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVBUWFR9fSwKLSAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEU1dBUFRYVH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUxUWFR9fSwKLSAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEUkVBTFRYVH19LAotICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTEZSRUV9fSwKLSAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TV0FQTUlOSU1VTX19LAotICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TSEFSRUR9fSwKLSAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQlVGRkVSfX0sCi0gICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUNBQ0hFRH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAorICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMfX0sCisgICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAorICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKKyAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEU1dBUFRYVH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKKyAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAorICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTEZSRUV9fSwKKyAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAorICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKKyAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQlVGRkVSfX0sCisgICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmgKaW5kZXggMGE2OTk4ZC4uNGZiNTI5NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmgKQEAgLTUsNiArNSw4IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9NRU1PUllfRFlOSVhfSAogI2RlZmluZSBfTUlCR1JPVVBfTUVNT1JZX0RZTklYX0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmMKaW5kZXggMmJlZTUxNy4uMjJkZGU0YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmMKQEAgLTg3LDM4ICs4Nyw0MCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX21lbV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUH19LAotICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFNXQVB9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMfX0sCi0gICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMUkVBTH19LAotICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVBUWFR9fSwKLSAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEU1dBUFRYVH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUxUWFR9fSwKLSAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEUkVBTFRYVH19LAotICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTEZSRUV9fSwKLSAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TV0FQTUlOSU1VTX19LAotICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TSEFSRUR9fSwKLSAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQlVGRkVSfX0sCi0gICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUNBQ0hFRH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAorICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMfX0sCisgICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAorICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKKyAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEU1dBUFRYVH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKKyAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAorICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTEZSRUV9fSwKKyAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAorICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKKyAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQlVGRkVSfX0sCisgICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9ocHV4LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfaHB1eC5jCmluZGV4IDViZjk5YWQuLmMyYjI0NzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9ocHV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2hwdXguYwpAQCAtNDksMzggKzQ5LDQwIEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfbWVtX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxTV0FQfX0sCi0gICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMU1dBUH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUx9fSwKLSAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQVZBSUxSRUFMfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUFRYVH19LAotICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURTV0FQVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMUkVBTFRYVH19LAotICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMRlJFRX19LAotICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNXQVBNSU5JTVVNfX0sCi0gICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNIQVJFRH19LAotICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1CVUZGRVJ9fSwKLSAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQ0FDSEVEfX0sCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk1TR319CisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxTV0FQfX0sCisgICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMU1dBUH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUx9fSwKKyAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQVZBSUxSRUFMfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUFRYVH19LAorICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURTV0FQVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMUkVBTFRYVH19LAorICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURSRUFMVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMRlJFRX19LAorICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNXQVBNSU5JTVVNfX0sCisgICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNIQVJFRH19LAorICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1CVUZGRVJ9fSwKKyAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQ0FDSEVEfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmMKaW5kZXggNjYzMjkyMS4uM2QyNmE0NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5jCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgIm1lbW9yeS5oIgogI2luY2x1ZGUgIm1lbW9yeV9uZXRic2QxLmgiCiAKQEAgLTc1LDM4ICs3NSw0MCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX21lbV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUH19LAotICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFNXQVB9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMfX0sCi0gICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMUkVBTH19LAotICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVBUWFR9fSwKLSAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEU1dBUFRYVH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUxUWFR9fSwKLSAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEUkVBTFRYVH19LAotICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTEZSRUV9fSwKLSAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TV0FQTUlOSU1VTX19LAotICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TSEFSRUR9fSwKLSAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQlVGRkVSfX0sCi0gICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUNBQ0hFRH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAorICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMfX0sCisgICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAorICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKKyAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEU1dBUFRYVH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKKyAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAorICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTEZSRUV9fSwKKyAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAorICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKKyAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQlVGRkVSfX0sCisgICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5oCmluZGV4IGE5Mzc1NGEuLmExOTVmODUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgX01JQkdST1VQX01FTU9SWV9ORVRCU0QxX0gKICNkZWZpbmUgX01JQkdST1VQX01FTU9SWV9ORVRCU0QxX0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogZXh0ZXJuIHZvaWQgICAgIGluaXRfbWVtb3J5X25ldGJzZDEodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jCmluZGV4IDMzZjQxYjIuLjJkMzYyNzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jCkBAIC0xMiw3ICsxMiw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiICAgICAgICAgLyogdXRpbGl0eSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKi8KKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiIC8qIHV0aWxpdHkgZnVuY3Rpb24gZGVjbGFyYXRpb25zICovCiAjaW5jbHVkZSAibWVtb3J5LmgiICAgICAgICAgICAgIC8qIHRoZSBtb2R1bGUtc3BlY2lmaWMgaGVhZGVyICovCiAjaW5jbHVkZSAibWVtb3J5X3NvbGFyaXMyLmgiICAgIC8qIHRoZSBtb2R1bGUtc3BlY2lmaWMgaGVhZGVyICovCiAKQEAgLTQyLDM4ICs0Miw0MCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX21lbV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUH19LAotICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFNXQVB9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMfX0sCi0gICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMUkVBTH19LAotICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVBUWFR9fSwKLSAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEU1dBUFRYVH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUxUWFR9fSwKLSAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEUkVBTFRYVH19LAotICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTEZSRUV9fSwKLSAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TV0FQTUlOSU1VTX19LAotICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TSEFSRUR9fSwKLSAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQlVGRkVSfX0sCi0gICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUNBQ0hFRH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAorICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMfX0sCisgICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAorICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKKyAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEU1dBUFRYVH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKKyAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAorICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTEZSRUV9fSwKKyAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAorICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKKyAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQlVGRkVSfX0sCisgICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmgKaW5kZXggMzM2YjNkZC4uZmZmNWY3OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmgKQEAgLTUsNiArNSw4IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9NRU1PUllfU09MQVJJUzJfSAogI2RlZmluZSBfTUlCR1JPVVBfTUVNT1JZX1NPTEFSSVMyX0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogdm9pZCAgICAgICAgICAgIGluaXRfbWVtb3J5X3NvbGFyaXMyKHZvaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jCmluZGV4IGE0MmE5MWIuLmZhOTMzYjYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMKQEAgLTQ5LDcgKzQ5LDggQEAKICAgICAvKgogICAgICAqIGJvZ3VzIGVudHJ5LiAgT25seSBzb21lIG9mIGl0IGlzIGFjdHVhbGx5IHVzZWQuIAogICAgICAqLwotICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4dGVuc2libGVfcGFzcywgMCwge01JQklOREVYfX0sCisgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXh0ZW5zaWJsZV9wYXNzLCAwLCB7TUlCSU5ERVh9fSwKIH07CiAKIApAQCAtMTQ4LDcgKzE0OSw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZm9yIChpID0gMCwgcHRtcCA9IChzdHJ1Y3QgZXh0ZW5zaWJsZSAqKSBwYXNzdGhydXM7Ci0gICAgICAgICAgICAgaSA8IG51bXBhc3N0aHJ1cyAmJiBwdG1wICE9IDA7IGkrKywgcHRtcCA9IHB0bXAtPm5leHQpCisgICAgICAgICAgICAgaSA8IG51bXBhc3N0aHJ1cyAmJiBwdG1wICE9IE5VTEw7IGkrKywgcHRtcCA9IHB0bXAtPm5leHQpCiAgICAgICAgICAgICBldG1wW2ldID0gcHRtcDsKICAgICAgICAgcXNvcnQoZXRtcCwgbnVtcGFzc3RocnVzLCBzaXplb2Yoc3RydWN0IGV4dGVuc2libGUgKiksCiAgICAgICAgICAgICAgIHBhc3NfY29tcGFyZSk7CkBAIC0zMDAsMTIgKzMwMSw3IEBACiAgICAgICAgICAgICBleGVjX2NvbW1hbmQocGFzc3RocnUpOwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVjZC1zbm1wL3Bhc3MiLCAicGFzcy1ydW5uaW5nIHJldHVybmVkOiAlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzdGhydS0+b3V0cHV0KSk7Ci0gICAgICAgICAgICBpZiAoIXN0cm5jYXNlY21wKHBhc3N0aHJ1LT5vdXRwdXQsICJub3Qtd3JpdGFibGUiLCAxMikpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChwYXNzdGhydS0+b3V0cHV0LCAid3JvbmctdHlwZSIsIDEwKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIHJldHVybiBuZXRzbm1wX2ludGVybmFsX3Bhc3Nfc3RyX3RvX2Vycm5vKHBhc3N0aHJ1LT5vdXRwdXQpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChzbm1wX2dldF9kb19kZWJ1Z2dpbmcoKSkgewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmMKaW5kZXggYWNlMGYwNy4uZTNkOWEwMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX2NvbW1vbi5jCkBAIC02MSw2ICs2MSw1MSBAQAogICAgIHJldHVybiAzICogbiAtIDE7CiB9CiAKK2ludAorbmV0c25tcF9pbnRlcm5hbF9wYXNzX3N0cl90b19lcnJubyhjb25zdCBjaGFyICpidWYpCit7CisgICAgaWYgKCFzdHJuY2FzZWNtcChidWYsICJ0b28tYmlnIiwgNykpIHsKKyAgICAgICAgLyogU2hvdWxkbid0IGhhcHBlbiAqLworICAgICAgICByZXR1cm4gU05NUF9FUlJfVE9PQklHOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIm5vLXN1Y2gtbmFtZSIsIDEyKSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9TVUNITkFNRTsKKyAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJiYWQtdmFsdWUiLCA5KSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfQkFEVkFMVUU7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAicmVhZC1vbmx5IiwgOSkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFQURPTkxZOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImdlbi1lcnJvciIsIDkpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAibm8tYWNjZXNzIiwgOSkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PQUNDRVNTOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLXR5cGUiLCAxMCkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKKyAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJ3cm9uZy1sZW5ndGgiLCAxMikpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLWVuY29kaW5nIiwgMTQpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0VOQ09ESU5HOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLXZhbHVlIiwgMTEpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIm5vLWNyZWF0aW9uIiwgMTEpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImluY29uc2lzdGVudC12YWx1ZSIsIDE4KSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfSU5DT05TSVNURU5UVkFMVUU7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAicmVzb3VyY2UtdW5hdmFpbGFibGUiLCAyMCkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiY29tbWl0LWZhaWxlZCIsIDEzKSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfQ09NTUlURkFJTEVEOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgInVuZG8tZmFpbGVkIiwgMTEpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9VTkRPRkFJTEVEOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImF1dGhvcml6YXRpb24tZXJyb3IiLCAxOSkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0FVVEhPUklaQVRJT05FUlJPUjsKKyAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJub3Qtd3JpdGFibGUiLCAxMikpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImluY29uc2lzdGVudC1uYW1lIiwgMTcpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9JTkNPTlNJU1RFTlROQU1FOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCiB1bnNpZ25lZCBjaGFyICoKIG5ldHNubXBfaW50ZXJuYWxfcGFzc19wYXJzZShjaGFyICogYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiBidWYyLApAQCAtODIsNyArMTI3LDE5IEBACiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGJ1ZjIpOwogICAgICAgICB2cC0+dHlwZSA9IEFTTl9PQ1RFVF9TVFI7CiAgICAgICAgIHJldHVybiAoKHVuc2lnbmVkIGNoYXIgKikgYnVmMik7Ci0gICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiaW50ZWdlciIsIDcpKSB7CisgICAgfQorI2lmZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUworICAgIGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJpbnRlZ2VyNjQiLCA5KSkgeworICAgICAgICBzdGF0aWMgc3RydWN0IGNvdW50ZXI2NCBjNjQ7CisgICAgICAgIHVpbnQ2NF90IHY2NCA9IHN0cnRvdWxsKGJ1ZjIsIE5VTEwsIDEwKTsKKyAgICAgICAgYzY0LmhpZ2ggPSAodW5zaWduZWQgbG9uZykodjY0ID4+IDMyKTsKKyAgICAgICAgYzY0LmxvdyAgPSAodW5zaWduZWQgbG9uZykodjY0ICYgMHhmZmZmZmZmZik7CisgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKGM2NCk7CisgICAgICAgIHZwLT50eXBlID0gQVNOX0lOVEVHRVI2NDsKKyAgICAgICAgcmV0dXJuICgodW5zaWduZWQgY2hhciAqKSAmYzY0KTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiaW50ZWdlciIsIDcpKSB7CiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsKICAgICAgICAgbG9uZ19yZXQgPSBzdHJ0b2woYnVmMiwgTlVMTCwgMTApOwogICAgICAgICB2cC0+dHlwZSA9IEFTTl9JTlRFR0VSOwpAQCAtOTIsNyArMTQ5LDE3IEBACiAgICAgICAgIGxvbmdfcmV0ID0gc3RydG91bChidWYyLCBOVUxMLCAxMCk7CiAgICAgICAgIHZwLT50eXBlID0gQVNOX1VOU0lHTkVEOwogICAgICAgICByZXR1cm4gKCh1bnNpZ25lZCBjaGFyICopICZsb25nX3JldCk7Ci0gICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiY291bnRlciIsIDcpKSB7CisgICAgfQorICAgIGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJjb3VudGVyNjQiLCA5KSkgeworICAgICAgICBzdGF0aWMgc3RydWN0IGNvdW50ZXI2NCBjNjQ7CisgICAgICAgIHVpbnQ2NF90IHY2NCA9IHN0cnRvdWxsKGJ1ZjIsIE5VTEwsIDEwKTsKKyAgICAgICAgYzY0LmhpZ2ggPSAodW5zaWduZWQgbG9uZykodjY0ID4+IDMyKTsKKyAgICAgICAgYzY0LmxvdyAgPSAodW5zaWduZWQgbG9uZykodjY0ICYgMHhmZmZmZmZmZik7CisgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKGM2NCk7CisgICAgICAgIHZwLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmV0dXJuICgodW5zaWduZWQgY2hhciAqKSAmYzY0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImNvdW50ZXIiLCA3KSkgewogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldCk7CiAgICAgICAgIGxvbmdfcmV0ID0gc3RydG91bChidWYyLCBOVUxMLCAxMCk7CiAgICAgICAgIHZwLT50eXBlID0gQVNOX0NPVU5URVI7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX2NvbW1vbi5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19jb21tb24uaAppbmRleCAyY2U2YWZkLi5iMWQ3ZTRiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX2NvbW1vbi5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmgKQEAgLTYsNiArNiw5IEBACiAgKiBvciBkaXNhcHBlYXIgYXQgYW55IHRpbWUKICAqLwogCitpbnQKK25ldHNubXBfaW50ZXJuYWxfcGFzc19zdHJfdG9fZXJybm8oY29uc3QgY2hhciAqYnVmKTsKKwogdW5zaWduZWQgY2hhciAqCiBuZXRzbm1wX2ludGVybmFsX3Bhc3NfcGFyc2UoY2hhciAqYnVmLCBjaGFyICpidWYyLCBzaXplX3QgKnZhcl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhcmlhYmxlICp2cCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCmluZGV4IGMzZjM4OTkuLmY2ODU0MTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCkBAIC02Niw4ICs2Niw4IEBACiAgICAgLyoKICAgICAgKiBib2d1cyBlbnRyeS4gIE9ubHkgc29tZSBvZiBpdCBpcyBhY3R1YWxseSB1c2VkLiAKICAgICAgKi8KLSAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3Bhc3NfcGVyc2lzdCwgMCwKLSAgICAge01JQklOREVYfX0sCisgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXh0ZW5zaWJsZV9wYXNzX3BlcnNpc3QsIDAsIHtNSUJJTkRFWH19LAogfTsKIAogdm9pZApAQCAtMTc5LDcgKzE3OSw3IEBACiAgICAgICAgIGlmIChldG1wID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGZvciAoaSA9IDAsIHB0bXAgPSAoc3RydWN0IGV4dGVuc2libGUgKikgcGVyc2lzdHBhc3N0aHJ1czsKLSAgICAgICAgICAgICBpIDwgbnVtcGVyc2lzdHBhc3N0aHJ1cyAmJiBwdG1wICE9IDA7IGkrKywgcHRtcCA9IHB0bXAtPm5leHQpCisgICAgICAgICAgICAgaSA8IG51bXBlcnNpc3RwYXNzdGhydXMgJiYgcHRtcCAhPSBOVUxMOyBpKyssIHB0bXAgPSBwdG1wLT5uZXh0KQogICAgICAgICAgICAgZXRtcFtpXSA9IHB0bXA7CiAgICAgICAgIHFzb3J0KGV0bXAsIG51bXBlcnNpc3RwYXNzdGhydXMsIHNpemVvZihzdHJ1Y3QgZXh0ZW5zaWJsZSAqKSwKICAgICAgICAgICAgICAgcGFzc19wZXJzaXN0X2NvbXBhcmUpOwpAQCAtMzgxLDE4ICszODEsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFzdHJuY2FzZWNtcChidWYsICJub3Qtd3JpdGFibGUiLCAxMikpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJ3cm9uZy10eXBlIiwgMTApKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLWxlbmd0aCIsIDEyKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0xFTkdUSDsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLXZhbHVlIiwgMTEpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJpbmNvbnNpc3RlbnQtdmFsdWUiLCAxOCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfSU5DT05TSVNURU5UVkFMVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIHJldHVybiBuZXRzbm1wX2ludGVybmFsX3Bhc3Nfc3RyX3RvX2Vycm5vKGJ1Zik7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpKSB7CkBAIC03MjUsNyArNzE0LDcgQEAKIAogICAgIGlmIChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkICE9IC0xKSB7CiAjaWYgSEFWRV9TWVNfV0FJVF9ICi0gICAgICAgIHdhaXRwaWQocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCwgMCwgMCk7CisgICAgICAgIHdhaXRwaWQocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCwgTlVMTCwgMCk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZCAobWluZ3czMikgJiYgIWRlZmluZWQgKEhBVkVfU0lHTkFMKQogICAgICAgICBpZiAoIUNsb3NlSGFuZGxlKChIQU5ETEUpcGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCkpIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYwppbmRleCA3MjUyMWEwLi40Mjg0ZDA4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jCkBAIC01NCw2ICs1NCw5IEBACiAKICNpbmNsdWRlICJzdHJ1Y3QuaCIKICNpbmNsdWRlICJwcm9jLmgiCisjaWZkZWYgVVNJTkdfSE9TVF9EQVRBX0FDQ0VTU19TV1JVTl9NT0RVTEUKKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oPgorI2VuZGlmCiAjaWZkZWYgVVNJTkdfVUNEX1NOTVBfRVJST1JNSUJfTU9EVUxFCiAjaW5jbHVkZSAiZXJyb3JtaWIuaCIKICNlbHNlCkBAIC03NiwyMSArNzksMjQgQEAKICAgICAgKiBpbmZvcm1hdGlvbiBhdCAKICAgICAgKi8KICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfcHJvY192YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcHJvYywgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1BST0NNSU4sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcHJvYywgMSwge1BST0NNSU59fSwKLSAgICAgICAge1BST0NNQVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcHJvYywgMSwge1BST0NNQVh9fSwKLSAgICAgICAge1BST0NDT1VOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLAotICAgICAgICAge1BST0NDT1VOVH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsCi0gICAgICAgICB7RVJST1JGTEFHfX0sCi0gICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsCi0gICAgICAgICB7RVJST1JNU0d9fSwKLSAgICAgICAge0VSUk9SRklYLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLAotICAgICAgICAge0VSUk9SRklYfX0sCi0gICAgICAgIHtFUlJPUkZJWENNRCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsCi0gICAgICAgICB7RVJST1JGSVhDTUR9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1BST0NNSU4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtQUk9DTUlOfX0sCisgICAgICAgIHtQUk9DTUFYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLCB7UFJPQ01BWH19LAorICAgICAgICB7UFJPQ0NPVU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLCB7UFJPQ0NPVU5UfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtFUlJPUk1TR319LAorICAgICAgICB7RVJST1JGSVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLCB7RVJST1JGSVh9fSwKKyAgICAgICAge0VSUk9SRklYQ01ELCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtFUlJPUkZJWENNRH19CiAgICAgfTsKIAogICAgIC8qCkBAIC0zNDgsNiArMzU0LDE0IEBACiAgICAgcmV0dXJuIChwcm9jKTsKIH0KIAorI2lmZGVmIFVTSU5HX0hPU1RfREFUQV9BQ0NFU1NfU1dSVU5fTU9EVUxFCitpbnQKK3NoX2NvdW50X3Byb2NzKGNoYXIgKnByb2NuYW1lKQoreworICAgIHJldHVybiBzd3J1bl9jb3VudF9wcm9jZXNzZXNfYnlfbmFtZSggcHJvY25hbWUgKTsKK30KKyNlbHNlCisKICNpZmRlZiBic2RpMgogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KQEAgLTg1MiwzICs4NjYsNCBAQAogICAgIHJldHVybiAocmV0KTsKIH0KICNlbmRpZgorI2VuZGlmICAgLyogIVVTSU5HX0hPU1RfREFUQV9BQ0NFU1NfU1dSVU5fTU9EVUxFICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYwppbmRleCA1NjkyMTBkLi4xZjhmNDcwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMKQEAgLTQxOSw3ICs0MTksNyBAQAogICAgICAgICAgICAgICogc3VmZml4IGFwcGVuZGVkPyAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInByb3h5IiwgImxlbmd0aD0lZCwgYmFzZV9sZW49JWQsIG5hbWVfbGVuPSVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgb3VybGVuZ3RoLCBzcC0+YmFzZV9sZW4sIHNwLT5uYW1lX2xlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgKGludClvdXJsZW5ndGgsIChpbnQpc3AtPmJhc2VfbGVuLCAoaW50KXNwLT5uYW1lX2xlbikpOwogICAgICAgICAgICAgaWYgKG91cmxlbmd0aCA+IChpbnQpIHNwLT5uYW1lX2xlbikKICAgICAgICAgICAgICAgICBtZW1jcHkoJihzcC0+YmFzZVtzcC0+YmFzZV9sZW5dKSwgJihvdXJuYW1lW3NwLT5uYW1lX2xlbl0pLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yob2lkKSAqIChvdXJsZW5ndGggLSBzcC0+bmFtZV9sZW4pKTsKQEAgLTQ5NSw3ICs0OTUsNyBAQAogICAgICAgICAgKiBXV1dYWFg6IGRvbid0IGxlYXZlIHJlcXVlc3RzIGRlbGF5ZWQgaWYgb3BlcmF0aW9uIGlzCiAgICAgICAgICAqIHNvbWV0aGluZyBsaWtlIFRJTUVPVVQgCiAgICAgICAgICAqLwotICAgICAgICBERUJVR01TR1RMKCgicHJveHkiLCAiZ290IHRpbWVkIG91dC4uLiByZXF1ZXN0cyA9ICUwOHBcbiIsIHJlcXVlc3RzKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwcm94eSIsICJnb3QgdGltZWQgb3V0Li4uIHJlcXVlc3RzID0gJThwXG4iLCByZXF1ZXN0cykpOwogCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZChyZXF1ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUVVFU1RfSVNfTk9UX0RFTEVHQVRFRCk7CkBAIC01MjMsNyArNTIzLDcgQEAKICAgICAgICAgICAgICAqIE5vdCBzdXJlIGlmIGFueSBvdGhlciBlcnJvciBjb2RlcyBuZWVkIHRoZSBzYW1lIHRyZWF0bWVudC4gTGVmdAogICAgICAgICAgICAgICogYXMgYW4gZXhlcmNpc2UgdG8gdGhlIHJlYWRlci4uLgogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBERUJVR01TR1RMKCgicHJveHkiLCAiZ290IGVycm9yIHJlc3BvbnNlICglZClcbiIsIHBkdS0+ZXJyc3RhdCkpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInByb3h5IiwgImdvdCBlcnJvciByZXNwb25zZSAoJWxkKVxuIiwgcGR1LT5lcnJzdGF0KSk7CiAgICAgICAgICAgICBpZigoY2FjaGUtPnJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRORVhUKSAmJgogICAgICAgICAgICAgICAgKFNOTVBfRVJSX05PU1VDSE5BTUUgPT0gcGR1LT5lcnJzdGF0KSkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwcm94eSIsICIgIGlnbm9yaW5nIGVycm9yIHJlc3BvbnNlXG4iKSk7CkBAIC01MzksNyArNTM5LDcgQEAKIAkJICoJP2Z1bmM9ZGV0YWlsJmF0aWQ9MTEyNjk0JmFpZD0xNTU0MjYxJmdyb3VwX2lkPTEyNjk0CiAJCSAqLwogCQlERUJVR01TR1RMKCgicHJveHkiLAotCQkgICAgImdvdCBTRVQgZXJyb3IgJXMsIGluZGV4ICVkXG4iLAorCQkgICAgImdvdCBTRVQgZXJyb3IgJXMsIGluZGV4ICVsZFxuIiwKIAkJICAgIHNubXBfZXJyc3RyaW5nKHBkdS0+ZXJyc3RhdCksIHBkdS0+ZXJyaW5kZXgpKTsKIAkJbmV0c25tcF9oYW5kbGVyX21hcmtfcmVxdWVzdHNfYXNfZGVsZWdhdGVkKAogCQkgICAgcmVxdWVzdHMsIFJFUVVFU1RfSVNfTk9UX0RFTEVHQVRFRCk7CkBAIC01ODMsNyArNTgzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcC0+YmFzZV9sZW4pICE9IDApKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJwcm94eSIsICJvdXQgb2YgcmVnaXN0ZXJlZCByYW5nZS4uLiAiKSk7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dPSUQoKCJwcm94eSIsIHZhci0+bmFtZSwgc3AtPmJhc2VfbGVuKSk7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0coKCAgICJwcm94eSIsICIgKCVkKSAhPSAiLCBzcC0+YmFzZV9sZW4pKTsKKyAgICAgICAgICAgICAgICBERUJVR01TRygoICAgInByb3h5IiwgIiAoJWQpICE9ICIsIChpbnQpc3AtPmJhc2VfbGVuKSk7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dPSUQoKCJwcm94eSIsIHNwLT5iYXNlLCBzcC0+YmFzZV9sZW4pKTsKICAgICAgICAgICAgICAgICBERUJVR01TRygoICAgInByb3h5IiwgIlxuIikpOwogICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9OVUxMLCBOVUxMLCAwKTsKQEAgLTU5NSw3ICs1OTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcC0+bmFtZV9sZW4pICE9IDApKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJwcm94eSIsICJvdXQgb2YgcmVnaXN0ZXJlZCBiYXNlIHJhbmdlLi4uICIpKTsKICAgICAgICAgICAgICAgICBERUJVR01TR09JRCgoInByb3h5IiwgdmFyLT5uYW1lLCBzcC0+bmFtZV9sZW4pKTsKLSAgICAgICAgICAgICAgICBERUJVR01TRygoICAgInByb3h5IiwgIiAoJWQpICE9ICIsIHNwLT5uYW1lX2xlbikpOworICAgICAgICAgICAgICAgIERFQlVHTVNHKCggICAicHJveHkiLCAiICglZCkgIT0gIiwgKGludClzcC0+bmFtZV9sZW4pKTsKICAgICAgICAgICAgICAgICBERUJVR01TR09JRCgoInByb3h5Iiwgc3AtPm5hbWUsIHNwLT5uYW1lX2xlbikpOwogICAgICAgICAgICAgICAgIERFQlVHTVNHKCggICAicHJveHkiLCAiXG4iKSk7CiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX05VTEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMKaW5kZXggYTk0YWY1Yy4uNGExMDllZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jCkBAIC00MSwyOCArNDEsMjggQEAKICAgICAgKiBpbmZvcm1hdGlvbiBhdCAKICAgICAgKi8KICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfdmVyc2lvbl92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge1ZFUlRBRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7VkVSVEFHfX0sCi0gICAgICAgIHtWRVJEQVRFLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJEQVRFfX0sCi0gICAgICAgIHtWRVJDREFURSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7VkVSQ0RBVEV9fSwKLSAgICAgICAge1ZFUklERU5ULCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJJREVOVH19LAotICAgICAgICB7VkVSQ09ORklHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJDT05GSUd9fSwKLSAgICAgICAge1ZFUkNMRUFSQ0FDSEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7VkVSQ0xFQVJDQUNIRX19LAotICAgICAgICB7VkVSVVBEQVRFQ09ORklHLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLAotICAgICAgICAge1ZFUlVQREFURUNPTkZJR319LAotICAgICAgICB7VkVSUkVTVEFSVEFHRU5ULCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLAotICAgICAgICAge1ZFUlJFU1RBUlRBR0VOVH19LAotICAgICAgICB7VkVSU0FWRVBFUlNJU1RFTlQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7VkVSU0FWRVBFUlNJU1RFTlR9fSwKLSAgICAgICAge1ZFUkRFQlVHR0lORywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJERUJVR0dJTkd9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7VkVSVEFHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtWRVJUQUd9fSwKKyAgICAgICAge1ZFUkRBVEUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUkRBVEV9fSwKKyAgICAgICAge1ZFUkNEQVRFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtWRVJDREFURX19LAorICAgICAgICB7VkVSSURFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUklERU5UfX0sCisgICAgICAgIHtWRVJDT05GSUcsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUkNPTkZJR319LAorICAgICAgICB7VkVSQ0xFQVJDQUNIRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtWRVJDTEVBUkNBQ0hFfX0sCisgICAgICAgIHtWRVJVUERBVEVDT05GSUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLCB7VkVSVVBEQVRFQ09ORklHfX0sCisgICAgICAgIHtWRVJSRVNUQVJUQUdFTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLCB7VkVSUkVTVEFSVEFHRU5UfX0sCisgICAgICAgIHtWRVJTQVZFUEVSU0lTVEVOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtWRVJTQVZFUEVSU0lTVEVOVH19LAorICAgICAgICB7VkVSREVCVUdHSU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUkRFQlVHR0lOR319CiAgICAgfTsKIAogICAgIC8qCkBAIC0xMDksMjIgKzEwOSwyMSBAQAogICAgICAgICBsb25nX3JldCA9IG5hbWVbOF07CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CiAgICAgY2FzZSBWRVJUQUc6Ci0gICAgICAgIHNwcmludGYoZXJybXNnLCBuZXRzbm1wX2dldF92ZXJzaW9uKCkpOworICAgICAgICBzdHJsY3B5KGVycm1zZywgbmV0c25tcF9nZXRfdmVyc2lvbigpLCBzaXplb2YoZXJybXNnKSk7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGVycm1zZyk7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSBlcnJtc2cpOwogICAgIGNhc2UgVkVSREFURToKLSAgICAgICAgc3ByaW50ZihlcnJtc2csICIkRGF0ZSQiKTsKKyAgICAgICAgc3RybGNweShlcnJtc2csICIkRGF0ZSQiLCBzaXplb2YoZXJybXNnKSk7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGVycm1zZyk7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSBlcnJtc2cpOwogICAgIGNhc2UgVkVSQ0RBVEU6CiAgICAgICAgIGN1cnRpbWUgPSB0aW1lKE5VTEwpOwogICAgICAgICBjcHRyID0gY3RpbWUoJmN1cnRpbWUpOwotICAgICAgICBzcHJpbnRmKGVycm1zZywgY3B0cik7CisgICAgICAgIHN0cmxjcHkoZXJybXNnLCBjcHRyLCBzaXplb2YoZXJybXNnKSk7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGVycm1zZykgLSAxOyAvKiAtIDEgdG8gc3RyaXAgdHJhaWxpbmcgbmV3bGluZSAqLwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgZXJybXNnKTsKICAgICBjYXNlIFZFUklERU5UOgotICAgICAgICBzcHJpbnRmKGVycm1zZywKLSAgICAgICAgICAgICAgICAiJElkJCIpOworICAgICAgICBzdHJsY3B5KGVycm1zZywgIiRJZCQiLCBzaXplb2YoZXJybXNnKSk7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGVycm1zZyk7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSBlcnJtc2cpOwogICAgIGNhc2UgVkVSQ09ORklHOgpAQCAtMTM0LDcgKzEzMyw3IEBACiAgICAgICAgICAgICAqdmFyX2xlbiA9IDEwMjQ7ICAgIC8qIG1pYiBpbXBvc2VkIHJlc3RyaWN0aW9uICovCiAgICAgICAgIHJldHVybiAodV9jaGFyICopIGNvbmZpZ19vcHRzOwogI2Vsc2UKLSAgICAgICAgc3ByaW50ZihlcnJtc2csICIiKTsKKyAgICAgICAgc3RybGNweShlcnJtc2csICIiLCBzaXplb2YoZXJybXNnKSkpOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihlcnJtc2cpOwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgZXJybXNnKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYwppbmRleCA3OWYxMDA0Li5lYWRiZjVhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYwpAQCAtMTMsNyArMTMsNyBAQAogdm9pZAogaW5pdF92bXN0YXQodm9pZCkKIHsKLSAgICBzdGF0aWMgb2lkICB2bXN0YXRfb2lkW10gPSB7IE5FVFNOTVBfVUNEQVZJU19NSUIsIDExIH07CisgICAgY29uc3Qgb2lkICB2bXN0YXRfb2lkW10gPSB7IE5FVFNOTVBfVUNEQVZJU19NSUIsIDExIH07CiAKICAgICBERUJVR01TR1RMKCgidm1zdGF0IiwgIkluaXRpYWxpemluZ1xuIikpOwogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2FpeDQuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmMKaW5kZXggZDQ5MDRmOS4uNjlmYzM3MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2FpeDQuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5jCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgIm1pYmRlZnMuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogCiAvKgogICogSGVhZGVyIGZpbGUgZm9yIHRoaXMgbW9kdWxlIApAQCAtMTUzLDQ1ICsxNTMsNTIgQEAKIAkgKiBXaGljaCB2YXJpYWJsZXMgZG8gd2Ugc2VydmljZSA/IAogCSAqLwogCXN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0JCXtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7TUlCSU5ERVh9fSwKLQkJe0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtFUlJPUk5BTUV9fSwKLQkJe1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLQkJe1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotCQl7SU9TRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAotCQl7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtJT1JFQ0VJVkV9fSwKLQkJe1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge1NZU0lOVEVSUlVQVFN9fSwKLQkJe1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge1NZU0NPTlRFWFR9fSwKLQkJe0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotCQl7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtDUFVTWVNURU19fSwKLQkJe0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotCQl7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7Q1BVUkFXVVNFUn19LAotCQl7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtDUFVSQVdTWVNURU19fSwKLQkJe0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge0NQVVJBV0lETEV9fSwKLQkJe0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge0NQVVJBV1dBSVR9fSwKLQkJe0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7Q1BVUkFXS0VSTkVMfX0sCi0JCXtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge0lPUkFXU0VOVH19LAotCQl7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtJT1JBV1JFQ0VJVkV9fSwKLQkJe1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge1NZU1JBV0lOVEVSUlVQVFN9fSwKLQkJe1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge1NZU1JBV0NPTlRFWFR9fSwKKwkJe01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge01JQklOREVYfX0sCisJCXtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk5BTUV9fSwKKwkJe1NXQVBJTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKKwkJe1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAorCQl7SU9TRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAorCQl7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkVDRUlWRX19LAorCQl7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNJTlRFUlJVUFRTfX0sCisJCXtTWVNDT05URVhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0NPTlRFWFR9fSwKKwkJe0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAorCQl7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVNZU1RFTX19LAorCQl7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCisJCXtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1VTRVJ9fSwKKwkJe0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdTWVNURU19fSwKKwkJe0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSURMRX19LAorCQl7Q1BVUkFXV0FJVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdXQUlUfX0sCisJCXtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXS0VSTkVMfX0sCisJCXtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SQVdTRU5UfX0sCisJCXtJT1JBV1JFQ0VJVkUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SQVdSRUNFSVZFfX0sCisJCXtTWVNSQVdJTlRFUlJVUFRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0lOVEVSUlVQVFN9fSwKKwkJe1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTUkFXQ09OVEVYVH19LAogCQkvKgogCQkgKiBGdXR1cmUgdXNlOiAKLQkJICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCi0JCSAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STVNHIH19CisJCSAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorCQkgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQogCQkgKi8KIAl9OwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2FpeDQuaAppbmRleCA1MDg2OWFiLi5hMTNmY2NlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmgKQEAgLTE1LDcgKzE1LDcgQEAKICAgICAvKgogICAgICAqIERpcmVjdGl2ZSB0byBpbmNsdWRlIHV0aWxpdHkgbW9kdWxlIAogICAgICAqLwotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiAKICAgICAvKgogICAgICAqIHdlIGhhdmUgdG8gZGVmaW5lIHRoZSBpbmRleCBvdXJzZWx2ZXMsIGJlY2F1c2UgcGVyZnN0YXQgc3RydWN0dXJlcwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuYwppbmRleCA5NGQzMmIzLi5lMzViNmNkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuYwpAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKICNpbmNsdWRlICJ2bXN0YXQuaCIKIAogLyoKQEAgLTU3LDQxICs1Nyw0OCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3Ztc3RhdF92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAotICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCi0gICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCi0gICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkVDRUlWRX19LAotICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTSU5URVJSVVBUU319LAotICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTQ09OVEVYVH19LAotICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCi0gICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVNZU1RFTX19LAotICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCi0gICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdVU0VSfX0sCi0gICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdOSUNFfX0sCi0gICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1NZU1RFTX19LAotICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXSURMRX19LAotICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdLRVJORUx9fSwKLSAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lOVFJ9fSwKKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKKyAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKKyAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCisgICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkVDRUlWRX19LAorICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTSU5URVJSVVBUU319LAorICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTQ09OVEVYVH19LAorICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAorICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVTWVNURU19fSwKKyAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKKyAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1VTRVJ9fSwKKyAgICAgICAge0NQVVJBV05JQ0UsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV05JQ0V9fSwKKyAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXU1lTVEVNfX0sCisgICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJRExFfX0sCisgICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0tFUk5FTH19LAorICAgICAgICB7Q1BVUkFXSU5UUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSU5UUn19LAogICAgICAgICAvKgogICAgICAgICAgKiBGdXR1cmUgdXNlOiAKICAgICAgICAgICovCiAgICAgICAgIC8qCi0gICAgICAgICAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAotICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQorICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCisgICAgICAgICAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQogICAgICAgICAgKi8KICAgICB9OwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5oCmluZGV4IDBiNjdhMTIuLjc0YmYzMWIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5oCkBAIC01LDYgKzUsOCBAQAogI2lmbmRlZiBfTUlCR1JPVVBfVk1TVEFUX0JTREk0X0gKICNkZWZpbmUgX01JQkdST1VQX1ZNU1RBVF9CU0RJNF9ICiAKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCisKICNpbmNsdWRlICJtaWJkZWZzLmgiCiAKIHZvaWQgICAgICAgICAgICBpbml0X3Ztc3RhdF9ic2RpNCh2b2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5jCmluZGV4IDcwNDE1ZTUuLmQ5NmM1NWMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuYwpAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKICNpbmNsdWRlICJ2bXN0YXQuaCIKICNpbmNsdWRlICJ2bXN0YXRfZGFyd2luNy5oIgogCkBAIC03NCw0NSArNzQsNTIgQEAKIHsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLSAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAotICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JFQ0VJVkV9fSwKLSAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVTWVNURU19fSwKLSAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXVVNFUn19LAotICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXTklDRX19LAotICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTWVNURU19fSwKLSAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lETEV9fSwKLSAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXS0VSTkVMfX0sCi0gICAgICAgIHtDUFVSQVdJTlRSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJTlRSfX0sCi0gICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTfX0sCi0gICAgICAgIHtTWVNSQVdDT05URVhULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdDT05URVhUfX0sCisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCisgICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCisgICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAorICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JFQ0VJVkV9fSwKKyAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0NPTlRFWFR9fSwKKyAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKKyAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVU1lTVEVNfX0sCisgICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCisgICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdVU0VSfX0sCisgICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdOSUNFfX0sCisgICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1NZU1RFTX19LAorICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSURMRX19LAorICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdLRVJORUx9fSwKKyAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lOVFJ9fSwKKyAgICAgICAge1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0NPTlRFWFR9fSwKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCiAgICAgICAgICAqLwogICAgICAgICAvKgotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmgKaW5kZXggZjkyZTUwOS4uYjFhMzAxZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5oCkBAIC01LDYgKzUsOCBAQAogI2lmbmRlZiBfTUlCR1JPVVBfVk1TVEFUX0RBUldJTjdfSAogI2RlZmluZSBfTUlCR1JPVVBfVk1TVEFUX0RBUldJTjdfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorCiAjaW5jbHVkZSAibWliZGVmcy5oIgogCiB2b2lkICAgICAgICAgICAgaW5pdF92bXN0YXRfZGFyd2luNyh2b2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmMKaW5kZXggOTE3MGIyNi4uMzNmNTQxMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmMKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSAibWliZGVmcy5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAKIC8qCiAgKiBIZWFkZXIgZmlsZSBmb3IgdGhpcyBtb2R1bGUgCkBAIC0xNjUsNDMgKzE2NSw1MCBAQAogICAgICAqIFdoaWNoIHZhcmlhYmxlcyBkbyB3ZSBzZXJ2aWNlID8gCiAgICAgICovCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3Ztc3RhdF92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAotICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCi0gICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCi0gICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkVDRUlWRX19LAotICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTSU5URVJSVVBUU319LAotICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTQ09OVEVYVH19LAotICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCi0gICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVNZU1RFTX19LAotICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCi0gICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdVU0VSfX0sCi0gICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1NZU1RFTX19LAotICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXSURMRX19LAotICAgICAgICB7Q1BVUkFXV0FJVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXV0FJVH19LAotICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdLRVJORUx9fSwKLSAgICAgICAge0lPUkFXU0VOVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7SU9SQVdTRU5UfX0sCi0gICAgICAgIHtJT1JBV1JFQ0VJVkUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkFXUkVDRUlWRX19LAorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtTV0FQSU4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAorICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAorICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKKyAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SRUNFSVZFfX0sCisgICAgICAgIHtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNJTlRFUlJVUFRTfX0sCisgICAgICAgIHtTWVNDT05URVhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNDT05URVhUfX0sCisgICAgICAgIHtDUFVVU0VSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCisgICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVNZU1RFTX19LAorICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAorICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXVVNFUn19LAorICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdTWVNURU19fSwKKyAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lETEV9fSwKKyAgICAgICAge0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1dBSVR9fSwKKyAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXS0VSTkVMfX0sCisgICAgICAgIHtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkFXU0VOVH19LAorICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1JFQ0VJVkV9fSwKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCiAgICAgICAgICAqLwogICAgICAgICAvKgotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZHluaXguaAppbmRleCBhYWUxNzkwLi44OTU0ZTM1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZHluaXguaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZHluaXguaApAQCAtMTQsNyArMTQsNyBAQAogLyoKICAqIERpcmVjdGl2ZSB0byBpbmNsdWRlIHV0aWxpdHkgbW9kdWxlIAogICovCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIAogICAgIC8qCiAgICAgICogTUlCIHdhbnRzIFZfQ1BVX1NZU1RFTSB3aGljaCBpcyBzeXNpbmZvIFZfQ1BVX0tFUk5FTCArIFZfQ1BVX1dBSVQgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jCmluZGV4IDkxODViYzYuLjNkZTg5YjIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jCkBAIC01Nyw3ICs1Nyw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInZtc3RhdC5oIgogI2luY2x1ZGUgInZtc3RhdF9mcmVlYnNkMi5oIgogCkBAIC04OCw0NSArODgsNTIgQEAKIHsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLSAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAotICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JFQ0VJVkV9fSwKLSAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVTWVNURU19fSwKLSAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXVVNFUn19LAotICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXTklDRX19LAotICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTWVNURU19fSwKLSAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lETEV9fSwKLSAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXS0VSTkVMfX0sCi0gICAgICAgIHtDUFVSQVdJTlRSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJTlRSfX0sCi0gICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTfX0sCi0gICAgICAgIHtTWVNSQVdDT05URVhULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdDT05URVhUfX0sCisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCisgICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCisgICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAorICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JFQ0VJVkV9fSwKKyAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0NPTlRFWFR9fSwKKyAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKKyAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVU1lTVEVNfX0sCisgICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCisgICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdVU0VSfX0sCisgICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdOSUNFfX0sCisgICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1NZU1RFTX19LAorICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSURMRX19LAorICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdLRVJORUx9fSwKKyAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lOVFJ9fSwKKyAgICAgICAge1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0NPTlRFWFR9fSwKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCiAgICAgICAgICAqLwogICAgICAgICAvKgotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuaAppbmRleCBmMGU2MGI4Li4yNmI0NGI2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgX01JQkdST1VQX1ZNU1RBVF9GUkVFQlNEMl9ICiAjZGVmaW5lIF9NSUJHUk9VUF9WTVNUQVRfRlJFRUJTRDJfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorCiAjaW5jbHVkZSAibWliZGVmcy5oIgogCiB2b2lkICAgICAgICAgICAgaW5pdF92bXN0YXRfZnJlZWJzZDIodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfaHB1eC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguYwppbmRleCA4OTJmYjdlLi5hNzg0NTAyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfaHB1eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmMKQEAgLTQ1LDcgKzQ1LDcgQEAKIC8qCiAgKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgVUNELVNOTVAgCiAgKi8KLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogCiAvKgogICogSGVhZGVyIGZpbGUgZm9yIHRoaXMgbW9kdWxlIApAQCAtMTcxLDQ1ICsxNzEsNTIgQEAKICAgICAgKiBXaGljaCB2YXJpYWJsZXMgZG8gd2Ugc2VydmljZSA/IAogICAgICAqLwogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLSAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAotICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JFQ0VJVkV9fSwKLSAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVTWVNURU19fSwKLSAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXVVNFUn19LAotICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXTklDRX19LAotICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTWVNURU19fSwKLSAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lETEV9fSwKLSAgICAgICAge0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1dBSVR9fSwKLSAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXS0VSTkVMfX0sCi0gICAgICAgIHtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkFXU0VOVH19LAotICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JBV1JFQ0VJVkV9fSwKKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKKyAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKKyAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCisgICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkVDRUlWRX19LAorICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTSU5URVJSVVBUU319LAorICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTQ09OVEVYVH19LAorICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAorICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVTWVNURU19fSwKKyAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKKyAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1VTRVJ9fSwKKyAgICAgICAge0NQVVJBV05JQ0UsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV05JQ0V9fSwKKyAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXU1lTVEVNfX0sCisgICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJRExFfX0sCisgICAgICAgIHtDUFVSQVdXQUlULCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdXQUlUfX0sCisgICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0tFUk5FTH19LAorICAgICAgICB7SU9SQVdTRU5ULCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1NFTlR9fSwKKyAgICAgICAge0lPUkFXUkVDRUlWRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SQVdSRUNFSVZFfX0sCiAgICAgICAgIC8qCiAgICAgICAgICAqIEZ1dHVyZSB1c2U6IAogICAgICAgICAgKi8KICAgICAgICAgLyoKLSAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCi0gICAgICAgICAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STVNHIH19CisgICAgICAgICAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICogIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKKyAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICogIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STVNHIH19CiAgICAgICAgICAqLwogICAgIH07CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfaHB1eC5oCmluZGV4IGUxMDA5NWUuLjhmMjY1OTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguaApAQCAtMTQsNyArMTQsNyBAQAogLyoKICAqIERpcmVjdGl2ZSB0byBpbmNsdWRlIHV0aWxpdHkgbW9kdWxlIAogICovCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIAogICAgIC8qCiAgICAgICogTWFrZSA2NC1iaXQgcHN0YXQgY2FsbHMgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jCmluZGV4IGYwOWVkMzQuLjc1MzhhMTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jCkBAIC0xMDgsNyArMTA4LDcgQEAKIAogI2luY2x1ZGUgIm1pYmRlZnMuaCIKICNpbmNsdWRlICJzdHJ1Y3QuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInZtc3RhdC5oIgogCiBGaW5kVmFyTWV0aG9kIHZhcl9leHRlbnNpYmxlX3Ztc3RhdDsKQEAgLTEyOCw1NCArMTI4LDY0IEBACiBpbml0X3Ztc3RhdCh2b2lkKQogewogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLSAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotICAgICAgICB7UkFXU1dBUElOLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1JBV1NXQVBJTn19LAotICAgICAgICB7UkFXU1dBUE9VVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtSQVdTV0FQT1VUfX0sCi0gICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCi0gICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkVDRUlWRX19LAotICAgICAgICB7SU9SQVdTRU5ULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkFXU0VOVH19LAotICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JBV1JFQ0VJVkV9fSwKLSAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVTWVNURU19fSwKLSAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXVVNFUn19LAotICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXTklDRX19LAotICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTWVNURU19fSwKLSAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXS0VSTkVMfX0sCi0gICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJRExFfX0sCi0gICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTfX0sCi0gICAgICAgIHtTWVNSQVdDT05URVhULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdDT05URVhUfX0sCi0gICAgICAgIHtDUFVSQVdXQUlULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdXQUlUfX0sCi0gICAgICAgIHtDUFVSQVdJTlRSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJTlRSfX0sCi0gICAgICAgIHtDUFVSQVdTT0ZUSVJRLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTT0ZUSVJRfX0sCisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCisgICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCisgICAgICAgIHtSQVdTV0FQSU4sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1JBV1NXQVBJTn19LAorICAgICAgICB7UkFXU1dBUE9VVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7UkFXU1dBUE9VVH19LAorICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKKyAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SRUNFSVZFfX0sCisgICAgICAgIHtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkFXU0VOVH19LAorICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1JFQ0VJVkV9fSwKKyAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0NPTlRFWFR9fSwKKyAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKKyAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVU1lTVEVNfX0sCisgICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCisgICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdVU0VSfX0sCisgICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdOSUNFfX0sCisgICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1NZU1RFTX19LAorICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdLRVJORUx9fSwKKyAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lETEV9fSwKKyAgICAgICAge1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0NPTlRFWFR9fSwKKyAgICAgICAge0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1dBSVR9fSwKKyAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lOVFJ9fSwKKyAgICAgICAge0NQVVJBV1NPRlRJUlEsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1NPRlRJUlF9fSwKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCiAgICAgICAgICAqLwogICAgICAgICAvKgotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguaAppbmRleCA3MzhlMmYxLi42ZjdjNTBmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguaApAQCAtNSw2ICs1LDcgQEAKICNpZm5kZWYgX01JQkdST1VQX1ZNU1RBVF9ICiAjZGVmaW5lIF9NSUJHUk9VUF9WTVNUQVRfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQogY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvY3B1KQogCiAjaW5jbHVkZSAibWliZGVmcy5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmMKaW5kZXggMTJjNzNkYi4uOTcwNmM0MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jCkBAIC00OSw3ICs0OSw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInZtc3RhdC5oIgogCiAvKgpAQCAtNjYsNDIgKzY2LDQ5IEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfdm1zdGF0X3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtTV0FQSU4sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCi0gICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKLSAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKLSAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7SU9SRUNFSVZFfX0sCi0gICAgICAgIHtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNJTlRFUlJVUFRTfX0sCi0gICAgICAgIHtTWVNDT05URVhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNDT05URVhUfX0sCi0gICAgICAgIHtDUFVVU0VSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKLSAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVU1lTVEVNfX0sCi0gICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKLSAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1VTRVJ9fSwKLSAgICAgICAge0NQVVJBV05JQ0UsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV05JQ0V9fSwKLSAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXU1lTVEVNfX0sCi0gICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJRExFfX0sCi0gICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0tFUk5FTH19LAotICAgICAgICB7Q1BVUkFXSU5UUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXSU5UUn19LAorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtTV0FQSU4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAorICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAorICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKKyAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SRUNFSVZFfX0sCisgICAgICAgIHtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNJTlRFUlJVUFRTfX0sCisgICAgICAgIHtTWVNDT05URVhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNDT05URVhUfX0sCisgICAgICAgIHtDUFVVU0VSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCisgICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVNZU1RFTX19LAorICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAorICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXVVNFUn19LAorICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXTklDRX19LAorICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdTWVNURU19fSwKKyAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lETEV9fSwKKyAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXS0VSTkVMfX0sCisgICAgICAgIHtDUFVSQVdJTlRSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJTlRSfX0sCiAKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCiAgICAgICAgICAqLwogICAgICAgICAvKgotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApAQCAtMTkyLDcgKzE5OSw3IEBACiAgICAgICAgICAgICBtZW1zZXQoY3B1X25ldywgMCwgc2l6ZW9mKGNwdV9uZXcpKTsKICNlbGlmIGRlZmluZWQoS0VSTl9DUFRJTUUpCiAgICAgICAgIGludCAgICAgICAgICAgICBtaWJbMl0gPSB7IENUTF9LRVJOLCBLRVJOX0NQVElNRSB9OwotICAgICAgICBpbnQgICAgICAgICAgICAgc3NpemUgPSBzaXplb2YoY3B1X25ldyk7CisgICAgICAgIHNpemVfdCAgICAgICAgICBzc2l6ZSA9IHNpemVvZihjcHVfbmV3KTsKIAogICAgICAgICBpZiAoc3lzY3RsKG1pYiwgMiwgY3B1X25ldywgJnNzaXplLCBOVUxMLCAwKSA8IDApCiAgICAgICAgICAgICBtZW1zZXQoY3B1X25ldywgMCwgc2l6ZW9mKGNwdV9uZXcpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5oCmluZGV4IGViNmIxNzIuLmFkZjVkNDYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgX01JQkdST1VQX1ZNU1RBVF9ORVRCU0QxX0gKICNkZWZpbmUgX01JQkdST1VQX1ZNU1RBVF9ORVRCU0QxX0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogdm9pZCAgICAgICAgICAgIGluaXRfdm1zdGF0X25ldGJzZDEodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jCmluZGV4IGNhOGE4N2YuLjM3MTUwNDUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgIm1pYmRlZnMuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogCiAvKgogICogSGVhZGVyIGZpbGUgZm9yIHRoaXMgbW9kdWxlIApAQCAtMTY5LDQxICsxNjksNDggQEAKICAgICAgKiBXaGljaCB2YXJpYWJsZXMgZG8gd2Ugc2VydmljZSA/IAogICAgICAqLwogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLSAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAotICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JFQ0VJVkV9fSwKLSAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVTWVNURU19fSwKLSAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXVVNFUn19LAotICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTWVNURU19fSwKLSAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lETEV9fSwKLSAgICAgICAge0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1dBSVR9fSwKLSAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXS0VSTkVMfX0sCi0gICAgICAgIHtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkFXU0VOVH19LAotICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JBV1JFQ0VJVkV9fSwKKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKKyAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKKyAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCisgICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkVDRUlWRX19LAorICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTSU5URVJSVVBUU319LAorICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTQ09OVEVYVH19LAorICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAorICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVTWVNURU19fSwKKyAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKKyAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1VTRVJ9fSwKKyAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXU1lTVEVNfX0sCisgICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJRExFfX0sCisgICAgICAgIHtDUFVSQVdXQUlULCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdXQUlUfX0sCisgICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0tFUk5FTH19LAorICAgICAgICB7SU9SQVdTRU5ULCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1NFTlR9fSwKKyAgICAgICAge0lPUkFXUkVDRUlWRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SQVdSRUNFSVZFfX0sCiAgICAgICAgIC8qCiAgICAgICAgICAqIEZ1dHVyZSB1c2U6IAotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuaAppbmRleCA4MjgyMjg4Li43N2ZiYjNiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuaApAQCAtMjMsNyArMjMsNyBAQAogICAgIC8qCiAgICAgICogRGlyZWN0aXZlIHRvIGluY2x1ZGUgdXRpbGl0eSBtb2R1bGUgCiAgICAgICovCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIAogICAgIC8qCiAgICAgICogTUlCIHdhbnRzIENQVV9TWVNURU0gd2hpY2ggaXMgc3lzaW5mbyBDUFVfS0VSTkVMICsgQ1BVX1dBSVQgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Rfc25tcC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkX3NubXAuaAppbmRleCAzNGMyZmJiLi5mOTJjMmM0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Rfc25tcC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZF9zbm1wLmgKQEAgLTgsNyArOCw5IEBACiBjb25maWdfcmVxdWlyZShhZ2VudC9leHRlbmQpCiBjb25maWdfcmVxdWlyZSh1Y2Qtc25tcC9lcnJvcm1pYikKIGNvbmZpZ19yZXF1aXJlKHVjZC1zbm1wL2ZpbGUpCisjaWYgZGVmaW5lZChIQVZFX0RMRkNOX0gpICYmIGRlZmluZWQoSEFWRV9ETE9QRU4pCiBjb25maWdfcmVxdWlyZSh1Y2Qtc25tcC9kbG1vZCkKKyNlbmRpZgogY29uZmlnX3JlcXVpcmUodWNkLXNubXAvcHJveHkpCiBjb25maWdfcmVxdWlyZSh1Y2Qtc25tcC9sb2dtYXRjaCkKIGNvbmZpZ19yZXF1aXJlKHVjZC1zbm1wL21lbW9yeSkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmggYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oCmluZGV4IGZkMDczOTQuLjcwZTI5ZDIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaApAQCAtMjAsNiArMjAsNyBAQAogY29uZmlnX3JlcXVpcmUodWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uKQogI2lmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKHVkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4KQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUpCiAjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCiBjb25maWdfcmVxdWlyZSh1ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMikKICNlbHNlCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jCmluZGV4IDUxZTMzNzUuLmJjYjAwMmUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jCkBAIC0xMDUsNyArMTA1LDggQEAKICAgICAgICAgICogZnJlZSBhbGwgaXRlbXMuCiAgICAgICAgICAqLwogICAgICAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKilmcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX3VkcF9lbmRwb2ludF9lbnRyeV9mcmVlLAogICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgfQogCkBAIC0xNTMsMjMgKzE1NCwzIEBACiAKICAgICBmcmVlKGVudHJ5KTsKIH0KLQotCi0vKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyoKLSAqIFV0aWxpdHkgcm91dGluZXMKLSAqLwotCi0vKioKLSAqIFxpbnRlcm5hbAotICovCi1zdGF0aWMgdm9pZAotX2VudHJ5X3JlbGVhc2UobmV0c25tcF91ZHBfZW5kcG9pbnRfZW50cnkgKiBlbnRyeSwgdm9pZCAqY29udGV4dCkKLXsKLSAgICBuZXRzbm1wX2FjY2Vzc191ZHBfZW5kcG9pbnRfZW50cnlfZnJlZShlbnRyeSk7Ci19Ci0KLS8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKgotICoKLSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMKaW5kZXggYmE4ZjdhMi4uYzg3ZGMyNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50Lmg+CiAKICNpbmNsdWRlICJ1ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9jb25zdGFudHMuaCIKLQorI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgiCiAjaW5jbHVkZSAidWRwX2VuZHBvaW50X3ByaXZhdGUuaCIKIAogI2luY2x1ZGUgPGZjbnRsLmg+CkBAIC0xNTAsMTQgKzE1MCwxNCBAQAogICAgIGxlbiA9IChzZXAgLSBwdHIpOwogICAgIGlmICgtMSA9PSBuZXRzbm1wX2FkZHJzdHJfaHRvbihwdHIsIGxlbikpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInRleHQ6dXRpbDp0dmkiLCAiYmFkIGxlbmd0aCAlZCBmb3IgbG9jIGFkZHIgJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgdV9wdHJfbGVuLCBsaW5lX2luZm8tPnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgIChpbnQpdV9wdHJfbGVuLCBsaW5lX2luZm8tPnN0YXJ0KSk7CiAgICAgICAgIHJldHVybiBQTUxQX1JDX01FTU9SWV9VTlVTRUQ7CiAgICAgfQogICAgIG9mZnNldCA9IDA7CiAgICAgbmV0c25tcF9oZXhfdG9fYmluYXJ5KCZ1X3B0ciwgJnVfcHRyX2xlbiwgJm9mZnNldCwgMCwgcHRyLCBOVUxMKTsKICAgICBpZiAoKDQgIT0gb2Zmc2V0KSAmJiAoMTYgIT0gb2Zmc2V0KSkgewogICAgICAgICBERUJVR01TR1RMKCgidGV4dDp1dGlsOnR2aSIsICJiYWQgb2Zmc2V0ICVkIGZvciBsb2MgYWRkciAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIGxpbmVfaW5mby0+c3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgKGludClvZmZzZXQsIGxpbmVfaW5mby0+c3RhcnQpKTsKICAgICAgICAgcmV0dXJuIFBNTFBfUkNfTUVNT1JZX1VOVVNFRDsKICAgICB9CiAgICAgZXAtPmxvY19hZGRyX2xlbiA9IG9mZnNldDsKQEAgLTE4NiwxNCArMTg2LDE0IEBACiAgICAgbGVuID0gKHNlcCAtIHB0cik7CiAgICAgaWYgKC0xID09IG5ldHNubXBfYWRkcnN0cl9odG9uKHB0ciwgbGVuKSkgewogICAgICAgICBERUJVR01TR1RMKCgidGV4dDp1dGlsOnR2aSIsICJiYWQgbGVuZ3RoICVkIGZvciBybXQgYWRkciAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICB1X3B0cl9sZW4sIGxpbmVfaW5mby0+c3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgKGludCl1X3B0cl9sZW4sIGxpbmVfaW5mby0+c3RhcnQpKTsKICAgICAgICAgcmV0dXJuIFBNTFBfUkNfTUVNT1JZX1VOVVNFRDsKICAgICB9CiAgICAgb2Zmc2V0ID0gMDsKICAgICBuZXRzbm1wX2hleF90b19iaW5hcnkoJnVfcHRyLCAmdV9wdHJfbGVuLCAmb2Zmc2V0LCAwLCBwdHIsIE5VTEwpOwogICAgIGlmICgoNCAhPSBvZmZzZXQpICYmICgxNiAhPSBvZmZzZXQpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJ0ZXh0OnV0aWw6dHZpIiwgImJhZCBvZmZzZXQgJWQgZm9yIHJtdCBhZGRyICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgIG9mZnNldCwgbGluZV9pbmZvLT5zdGFydCkpOworICAgICAgICAgICAgICAgICAgICAoaW50KW9mZnNldCwgbGluZV9pbmZvLT5zdGFydCkpOwogICAgICAgICByZXR1cm4gUE1MUF9SQ19NRU1PUllfVU5VU0VEOwogICAgIH0KICAgICBlcC0+cm10X2FkZHJfbGVuID0gb2Zmc2V0OwpAQCAtMjIyLDYgKzIyMiwxMSBAQAogICAgIGlub2RlID0gc3RydG91bGwocHRyLCAmcHRyLCAwKTsKICAgICBlcC0+aW5zdGFuY2UgPSAodV9pbnQpaW5vZGU7CiAKKyAgICAvKgorICAgICAqIGdldCB0aGUgcGlkIGFsc28KKyAgICAgKi8KKyAgICBlcC0+cGlkID0gbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGUoaW5vZGUpOworCiAgICAgZXAtPmluZGV4ID0gKHVfaW50KShscGktPnVzZXJfY29udGV4dCk7CiAgICAgbHBpLT51c2VyX2NvbnRleHQgPSAodm9pZCopKCh1X2ludCkobHBpLT51c2VyX2NvbnRleHQpICsgMSk7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5jCmluZGV4IDgwM2Y1MDQuLjE0NWY0Y2UgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuYwpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAidWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIHVkcEVuZHBvaW50VGFibGVfb2lkW10gPSB7IFVEUEVORFBPSU5UVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgdWRwRW5kcG9pbnRUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgdWRwRW5kcG9pbnRUYWJsZV9vaWRbXSA9IHsgVURQRU5EUE9JTlRUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICB1ZHBFbmRwb2ludFRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgodWRwRW5kcG9pbnRUYWJsZV9vaWQpOwogCiB1ZHBFbmRwb2ludFRhYmxlX3JlZ2lzdHJhdGlvbiB1ZHBFbmRwb2ludFRhYmxlX3VzZXJfY29udGV4dDsKQEAgLTIyNiw3ICsyMjYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UmVtb3RlQWRkcmVzc192YWxfcHRyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRSZW1vdGVQb3J0X3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHVkcEVuZHBvaW50SW5zdGFuY2VfdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludFByb2Nlc3NfdmFsKQogewogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOnVkcEVuZHBvaW50VGFibGU6dWRwRW5kcG9pbnRUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4IiwgImNhbGxlZFxuIikpOwogCkBAIC0yOTUsNiArMjk2LDEwIEBACiAgICAgICogdWRwRW5kcG9pbnRJbnN0YW5jZSg3KS9VTlNJR05FRDMyL0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9hL3cvZS9SL2QvaCAKICAgICAgKi8KICAgICB0YmxfaWR4LT51ZHBFbmRwb2ludEluc3RhbmNlID0gdWRwRW5kcG9pbnRJbnN0YW5jZV92YWw7CisgICAgLyoKKyAgICAgKiB1ZHBFbmRwb2ludFByb2Nlc3MoOCkvVU5TSUdORUQzMi9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvYS93L2UvUi9kL2ggCisgICAgICovCisgICAgdGJsX2lkeC0+dWRwRW5kcG9pbnRQcm9jZXNzID0gdWRwRW5kcG9pbnRQcm9jZXNzX3ZhbDsKIAogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwpAQCAtMzIzLDcgKzMyOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnVkcEVuZHBvaW50UmVtb3RlQWRkcmVzc192YWxfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdWRwRW5kcG9pbnRSZW1vdGVBZGRyZXNzX3ZhbF9wdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRSZW1vdGVQb3J0X3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHVkcEVuZHBvaW50SW5zdGFuY2VfdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludFByb2Nlc3NfdmFsKQogewogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOnVkcEVuZHBvaW50VGFibGU6dWRwRW5kcG9pbnRUYWJsZV9pbmRleGVzX3NldCIsCiAgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOwpAQCAtMzM4LDcgKzM0NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZHBFbmRwb2ludFJlbW90ZUFkZHJlc3NfdmFsX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UmVtb3RlQWRkcmVzc192YWxfcHRyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UmVtb3RlUG9ydF92YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UHJvY2Vzc192YWwpKQogICAgICAgICByZXR1cm4gTUZEX0VSUk9SOwogCiAgICAgLyoKQEAgLTQwNSw5ICs0MTIsOSBAQAogCiAgICAgLyoKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgdWRwRW5kcG9pbnRQcm9jZXNzIGRhdGEuCi0gICAgICogY29weSAoKiB1ZHBFbmRwb2ludFByb2Nlc3NfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqIGNvcHkgKCogdWRwRW5kcG9pbnRQcm9jZXNzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPnRibF9pZHgudWRwRW5kcG9pbnRQcm9jZXNzCiAgICAgICovCi0gICAgKCp1ZHBFbmRwb2ludFByb2Nlc3NfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5kYXRhLnVkcEVuZHBvaW50UHJvY2VzczsKKyAgICAoKnVkcEVuZHBvaW50UHJvY2Vzc192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPnRibF9pZHgudWRwRW5kcG9pbnRQcm9jZXNzOwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB1ZHBFbmRwb2ludFByb2Nlc3NfZ2V0ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaAppbmRleCAzNjc1MmJmLi4wZGVkYTAzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgKQEAgLTEzMiw2ICsxMzIsMTEgQEAKICAgICAgICAgICovCiAgICAgICAgIHVfbG9uZyAgICAgICAgICB1ZHBFbmRwb2ludEluc3RhbmNlOwogCisgICAgICAgIC8qCisgICAgICAgICAqIHVkcEVuZHBvaW50UHJvY2Vzcyg4KS9VTlNJR05FRDMyL0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9hL3cvZS9SL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIHVkcEVuZHBvaW50UHJvY2VzczsKKwogCiAgICAgfSB1ZHBFbmRwb2ludFRhYmxlX21pYl9pbmRleDsKIApAQCAtMjAwLDggKzIwNSw4IEBACiAgICAgICAgICogdWRwRW5kcG9pbnRUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgodWRwRW5kcG9pbnRUYWJsZV9taWJfaW5kZXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIHVkcEVuZHBvaW50VGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIHVkcEVuZHBvaW50VGFibGVfb2lkX3NpemU7CisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIHVkcEVuZHBvaW50VGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIHVkcEVuZHBvaW50VGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgInVkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLmgiCkBAIC0yNTcsNyArMjYyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRSZW1vdGVQb3J0X3ZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UHJvY2Vzc192YWwpOwogICAgIGludAogICAgICAgICB1ZHBFbmRwb2ludFRhYmxlX2luZGV4ZXNfc2V0KHVkcEVuZHBvaW50VGFibGVfcm93cmVxX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKQEAgLTI3Myw3ICsyODAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UmVtb3RlQWRkcmVzc192YWxfcHRyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRSZW1vdGVQb3J0X3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRQcm9jZXNzX3ZhbCk7CiAKIAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCBkMjIzYjk2Li5lZjgzYjlhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTI2NSw3ICsyNjUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSBlcC0+cm10X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwLT5ybXRfYWRkcl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwLT5ybXRfcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXAtPmluc3RhbmNlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcC0+aW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwLT5waWQpKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAgICAgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCiAgICAgICAgICAgICAgICAgICAgICAidWRwRW5kcG9pbnRUYWJsZSBkYXRhLlxuIik7CkBAIC0yOTMsNyArMjk0LDcgQEAKIAogCiAgICAgREVCVUdNU0dUKCgidmVyYm9zZTp1ZHBFbmRwb2ludFRhYmxlOnVkcEVuZHBvaW50VGFibGVfY29udGFpbmVyX2xvYWQiLAotICAgICAgICAgICAgICAgImluc2VydGVkICVkIHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAgICAgICAgICAgICJpbnNlcnRlZCAlZCByZWNvcmRzXG4iLCAoaW50KUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdWRwRW5kcG9pbnRUYWJsZV9jb250YWluZXJfbG9hZCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jCmluZGV4IGEwMTc2NTguLjc0OWVmYjIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYworKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMKQEAgLTg2LDIxICs4Niw2IEBACiAjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZgotI2lmIEhBVkVfRElSRU5UX0gKLSNpbmNsdWRlIDxkaXJlbnQuaD4KLSNlbHNlCi0jIGRlZmluZSBkaXJlbnQgZGlyZWN0Ci0jIGlmIEhBVkVfU1lTX05ESVJfSAotIyAgaW5jbHVkZSA8c3lzL25kaXIuaD4KLSMgZW5kaWYKLSMgaWYgSEFWRV9TWVNfRElSX0gKLSMgIGluY2x1ZGUgPHN5cy9kaXIuaD4KLSMgZW5kaWYKLSMgaWYgSEFWRV9ORElSX0gKLSMgIGluY2x1ZGUgPG5kaXIuaD4KLSMgZW5kaWYKLSNlbmRpZgotCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0yNzAsNyArMjU1LDcgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBYWFggIFVzZSBTTk1QX0ZJTEVNT0RFX0NMT1NFRCBpbnN0ZWFkIG9mIDY0ND8gCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgaWYgKChjZmQgPSBvcGVuKGNhY2hlZmlsZSwgT19XUk9OTFkgfCBPX1RSVU5DIHwgT19DUkVBVCwgMDY0NCkpIDwgMCkgeworICAgICAgICBpZiAoKGNmZCA9IG9wZW4oY2FjaGVmaWxlLCBPX1dST05MWSB8IE9fVFJVTkMgfCBPX0NSRUFULCAwNjAwKSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiY2FuIG5vdCBjcmVhdGUgY2FjaGUgZmlsZVxuIik7CiAgICAgICAgICAgICAgICAgc2V0UGVycm9yc3RhdHVzKGNhY2hlZmlsZSk7CiAjaWZkZWYgTkVUU05NUF9FWENBQ0hFVElNRQpAQCAtNzY2LDE2OCArNzUxLDYgQEAKICAgICAgICAgYnVmICs9IHNwcmludGYoYnVmLCAiLiV1IiwgKHVuc2lnbmVkKSBuYW1lW2ldKTsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKLSAqIGhlYWRlcl9zaW1wbGVfdGFibGUKLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoJICAqdnAJCSBWYXJpYWJsZSBkYXRhLgotICoJICAqbmFtZQkJIEZ1bGx5IGluc3RhbnRpYXRlZCBPSUQgbmFtZS4KLSAqCSAgKmxlbmd0aAkgTGVuZ3RoIG9mIG5hbWUuCi0gKgkgICBleGFjdAkgVFJVRSBpZiBhbiBleGFjdCBtYXRjaCBpcyBkZXNpcmVkLgotICoJICAqdmFyX2xlbgkgSG9vayBmb3Igc2l6ZSBvZiByZXR1cm5lZCBkYXRhIHR5cGUuCi0gKgkoKip3cml0ZV9tZXRob2QpIEhvb2sgZm9yIHdyaXRlIG1ldGhvZCAoVU5VU0VEKS4KLSAqCSAgIG1heAotICogICAgICAKLSAqIFJldHVybnM6Ci0gKgkwCUlmIG5hbWUgbWF0Y2hlcyB2cC0+bmFtZSAoYWNjb3VudGluZyBmb3IgJ2V4YWN0JykgYW5kIGlzCi0gKgkJCW5vdCBncmVhdGVyIGluIGxlbmd0aCB0aGFuICdtYXgnLgotICoJMQlPdGhlcndpc2UuCi0gKgotICoKLSAqIENvbXBhcmUgJ25hbWUnIHRvIHZwLT5uYW1lIGZvciB0aGUgYmVzdCBtYXRjaCBvciBhbiBleGFjdCBtYXRjaCAoaWYKLSAqCXJlcXVlc3RlZCkuICBBbHNvIGNoZWNrIHRoYXQgJ25hbWUnIGlzIG5vdCBsb25nZXIgdGhhbiAnbWF4JyBpZgotICoJbWF4IGlzIGdyZWF0ZXItdGhhbi9lcXVhbCAwLgotICogU3RvcmUgYSBzdWNjZXNzZnVsIG1hdGNoIGluICduYW1lJywgYW5kIGluY3JlbWVudCB0aGUgT0lEIGluc3RhbmNlIGlmCi0gKgl0aGUgbWF0Y2ggd2FzIG5vdCBleGFjdC4gIAotICoKLSAqICduYW1lJyBhbmQgJ2xlbmd0aCcgYXJlIHVuZGVmaW5lZCB1cG9uIGZhaWx1cmUuCi0gKgotICovCi1pbnQKLWhlYWRlcl9zaW1wbGVfdGFibGUoc3RydWN0IHZhcmlhYmxlICp2cCwgb2lkICogbmFtZSwgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sCi0gICAgICAgICAgICAgICAgICAgIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCwgaW50IG1heCkKLXsKLSAgICBpbnQgICAgICAgICAgICAgaSwgcnRlc3Q7ICAgLyogU2V0IHRvOiAgICAgIC0xICAgICAgSWYgbmFtZSA8IHZwLT5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAgMSAgICAgICBJZiBuYW1lID4gdnAtPm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAwICAgICAgIE90aGVyd2lzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgb2lkICAgICAgICAgICAgIG5ld25hbWVbTUFYX09JRF9MRU5dOwotCi0gICAgZm9yIChpID0gMCwgcnRlc3QgPSAwOwotICAgICAgICAgaSA8IChpbnQpIHZwLT5uYW1lbGVuICYmIGkgPCAoaW50KSAoKmxlbmd0aCkgJiYgIXJ0ZXN0OyBpKyspIHsKLSAgICAgICAgaWYgKG5hbWVbaV0gIT0gdnAtPm5hbWVbaV0pIHsKLSAgICAgICAgICAgIGlmIChuYW1lW2ldIDwgdnAtPm5hbWVbaV0pCi0gICAgICAgICAgICAgICAgcnRlc3QgPSAtMTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBydGVzdCA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHJ0ZXN0ID4gMCB8fAotICAgICAgICAoZXhhY3QgPT0gMQotICAgICAgICAgJiYgKHJ0ZXN0IHx8IChpbnQpICpsZW5ndGggIT0gKGludCkgKHZwLT5uYW1lbGVuICsgMSkpKSkgewotICAgICAgICBpZiAodmFyX2xlbikKLSAgICAgICAgICAgICp2YXJfbGVuID0gMDsKLSAgICAgICAgcmV0dXJuIE1BVENIX0ZBSUxFRDsKLSAgICB9Ci0KLSAgICBtZW1zZXQobmV3bmFtZSwgMCwgc2l6ZW9mKG5ld25hbWUpKTsKLQotICAgIGlmICgoKGludCkgKmxlbmd0aCkgPD0gKGludCkgdnAtPm5hbWVsZW4gfHwgcnRlc3QgPT0gLTEpIHsKLSAgICAgICAgbWVtbW92ZShuZXduYW1lLCB2cC0+bmFtZSwgKGludCkgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7Ci0gICAgICAgIG5ld25hbWVbdnAtPm5hbWVsZW5dID0gMTsKLSAgICAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICB9IGVsc2UgaWYgKCgoaW50KSAqbGVuZ3RoKSA+IChpbnQpIHZwLT5uYW1lbGVuICsgMSkgeyAgICAgICAvKiBleGFjdCBjYXNlIGNoZWNrZWQgZWFybGllciAqLwotICAgICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotICAgICAgICBtZW1tb3ZlKG5ld25hbWUsIG5hbWUsICgqbGVuZ3RoKSAqIHNpemVvZihvaWQpKTsKLSAgICAgICAgaWYgKG5hbWVbKmxlbmd0aCAtIDFdIDwgVUxPTkdfTUFYKSB7Ci0gICAgICAgICAgICBuZXduYW1lWypsZW5ndGggLSAxXSA9IG5hbWVbKmxlbmd0aCAtIDFdICsgMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBDYXJlZnVsIG5vdCB0byBvdmVyZmxvdy4uLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV07Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotICAgICAgICBtZW1tb3ZlKG5ld25hbWUsIG5hbWUsICgqbGVuZ3RoKSAqIHNpemVvZihvaWQpKTsKLSAgICAgICAgaWYgKCFleGFjdCkgewotICAgICAgICAgICAgaWYgKG5hbWVbKmxlbmd0aCAtIDFdIDwgVUxPTkdfTUFYKSB7Ci0gICAgICAgICAgICAgICAgbmV3bmFtZVsqbGVuZ3RoIC0gMV0gPSBuYW1lWypsZW5ndGggLSAxXSArIDE7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICogQ2FyZWZ1bCBub3QgdG8gb3ZlcmZsb3cuLi4gIAotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuZXduYW1lWypsZW5ndGggLSAxXSA9IG5hbWVbKmxlbmd0aCAtIDFdOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICgobWF4ID49IDAgJiYgKChpbnQpbmV3bmFtZVsqbGVuZ3RoIC0gMV0gPiBtYXgpKSB8fAotICAgICAgICAgICAgICAgKCAwID09IG5ld25hbWVbKmxlbmd0aCAtIDFdICkpIHsKLSAgICAgICAgaWYgKHZhcl9sZW4pCi0gICAgICAgICAgICAqdmFyX2xlbiA9IDA7Ci0gICAgICAgIHJldHVybiBNQVRDSF9GQUlMRUQ7Ci0gICAgfQotCi0gICAgbWVtbW92ZShuYW1lLCBuZXduYW1lLCAoKmxlbmd0aCkgKiBzaXplb2Yob2lkKSk7Ci0gICAgaWYgKHdyaXRlX21ldGhvZCkKLSAgICAgICAgKndyaXRlX21ldGhvZCA9IDA7Ci0gICAgaWYgKHZhcl9sZW4pCi0gICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAgICAgLyogZGVmYXVsdCAqLwotICAgIHJldHVybiAoTUFUQ0hfU1VDQ0VFREVEKTsKLX0KLQotLyoKLSAqIGhlYWRlcl9nZW5lcmljKC4uLgotICogQXJndW1lbnRzOgotICogdnAgICAgIElOICAgICAgLSBwb2ludGVyIHRvIHZhcmlhYmxlIGVudHJ5IHRoYXQgcG9pbnRzIGhlcmUKLSAqIG5hbWUgICAgSU4vT1VUICAtIElOL25hbWUgcmVxdWVzdGVkLCBPVVQvbmFtZSBmb3VuZAotICogbGVuZ3RoICBJTi9PVVQgIC0gbGVuZ3RoIG9mIElOL09VVCBvaWQncyAKLSAqIGV4YWN0ICAgSU4gICAgICAtIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggd2FzIHJlcXVlc3RlZAotICogdmFyX2xlbiBPVVQgICAgIC0gbGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQKLSAqIHdyaXRlX21ldGhvZAotICogCi0gKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKLSAqIGdlbmVyaWNfaGVhZGVyCi0gKgotICogUGFyYW1ldGVyczoKLSAqCSAgKnZwCSAgIChJKSAgICAgUG9pbnRlciB0byB2YXJpYWJsZSBlbnRyeSB0aGF0IHBvaW50cyBoZXJlLgotICoJICAqbmFtZQkgICAoSS9PKSAgIElucHV0IG5hbWUgcmVxdWVzdGVkLCBvdXRwdXQgbmFtZSBmb3VuZC4KLSAqCSAgKmxlbmd0aCAgKEkvTykgICBMZW5ndGggb2YgaW5wdXQgYW5kIG91dHB1dCBvaWQncy4KLSAqCSAgIGV4YWN0ICAgKEkpICAgICBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQuCi0gKgkgICp2YXJfbGVuIChPKSAgICAgTGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQuCi0gKgkoKip3cml0ZV9tZXRob2QpICAgSG9vayB0byBuYW1lIGEgd3JpdGUgbWV0aG9kIChVTlVTRUQpLgotICogICAgICAKLSAqIFJldHVybnM6Ci0gKglNQVRDSF9TVUNDRUVERUQJSWYgdnAtPm5hbWUgbWF0Y2hlcyBuYW1lIChhY2NvdW50aW5nIGZvciBleGFjdCBiaXQpLgotICoJTUFUQ0hfRkFJTEVECU90aGVyd2lzZSwKLSAqCi0gKgotICogQ2hlY2sgd2hldGhlciB2YXJpYWJsZSAodnApIG1hdGNoZXMgbmFtZS4KLSAqLwotaW50Ci1oZWFkZXJfZ2VuZXJpYyhzdHJ1Y3QgdmFyaWFibGUgKnZwLAotICAgICAgICAgICAgICAgb2lkICogbmFtZSwKLSAgICAgICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCwKLSAgICAgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQotewotICAgIG9pZCAgICAgICAgICAgICBuZXduYW1lW01BWF9PSURfTEVOXTsKLSAgICBpbnQgICAgICAgICAgICAgcmVzdWx0OwotCi0gICAgREVCVUdNU0dUTCgoInV0aWxfZnVuY3MiLCAiaGVhZGVyX2dlbmVyaWM6ICIpKTsKLSAgICBERUJVR01TR09JRCgoInV0aWxfZnVuY3MiLCBuYW1lLCAqbGVuZ3RoKSk7Ci0gICAgREVCVUdNU0coKCJ1dGlsX2Z1bmNzIiwgIiBleGFjdD0lZFxuIiwgZXhhY3QpKTsKLQotICAgIG1lbWNweSgoY2hhciAqKSBuZXduYW1lLCAoY2hhciAqKSB2cC0+bmFtZSwKLSAgICAgICAgICAgKGludCkgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7Ci0gICAgbmV3bmFtZVt2cC0+bmFtZWxlbl0gPSAwOwotICAgIHJlc3VsdCA9IHNubXBfb2lkX2NvbXBhcmUobmFtZSwgKmxlbmd0aCwgbmV3bmFtZSwgdnAtPm5hbWVsZW4gKyAxKTsKLSAgICBERUJVR01TR1RMKCgidXRpbF9mdW5jcyIsICIgIHJlc3VsdDogJWRcbiIsIHJlc3VsdCkpOwotICAgIGlmICgoZXhhY3QgJiYgKHJlc3VsdCAhPSAwKSkgfHwgKCFleGFjdCAmJiAocmVzdWx0ID49IDApKSkKLSAgICAgICAgcmV0dXJuIChNQVRDSF9GQUlMRUQpOwotICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAotICAgICAgICAgICAoKGludCkgdnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKLSAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotCi0gICAgKndyaXRlX21ldGhvZCA9IDA7Ci0gICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KLSAgICByZXR1cm4gKE1BVENIX1NVQ0NFRURFRCk7Ci19Ci0KIC8qCiAgKiBjaGVja21pYigpOiBwcm92aWRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGRvIG5vdCB1c2U6IAogICovCkBAIC0xMjAyLDg4ICsxMDI1LDEzNSBAQAogICAgIHJldHVybiB0YWJsZS0+ZGF0YTsKIH0KIAotI2lmZGVmIGxpbnV4Ci0jIGRlZmluZSBQUk9DX1BBVEggICAgICAgICAgIi9wcm9jIgotIyBkZWZpbmUgRklMRV9ESVNQICAgICAgICAgICJmZC8iCi0jIGRlZmluZSBTT0NLRVRfVFlQRV8xICAgICAgInNvY2tldDpbIgotIyBkZWZpbmUgU09DS0VUX1RZUEVfMiAgICAgICJbMDAwMF06IgotCi11bnNpZ25lZCBsb25nIGxvbmcKLWV4dHJhY3RfaW5vZGUoY2hhciAqZm9ybWF0KQorI2lmIGRlZmluZWQoSEFWRV9MSU5VWF9SVE5FVExJTktfSCkKK3ByZWZpeF9jYnggKm5ldF9zbm1wX2NyZWF0ZV9wcmVmaXhfaW5mbyh1bnNpZ25lZCBsb25nIE9uTGlua0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBBdXRvbm9tb3VzRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICppbjZwdHIpCiB7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIHJldCA9IDA7CisgICBwcmVmaXhfY2J4ICpub2RlID0gU05NUF9NQUxMT0NfVFlQRURFRihwcmVmaXhfY2J4KTsKKyAgIGlmKCFpbjZwdHIpIHsKKyAgICAgIGZyZWUobm9kZSk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgIH0KKyAgIGlmKCFub2RlKSB7CisgICAgICBmcmVlKG5vZGUpOworICAgICAgcmV0dXJuIE5VTEw7CisgICB9CisgICBub2RlLT5uZXh0X2luZm8gPSBOVUxMOworICAgbm9kZS0+aXBBZGRyZXNzUHJlZml4T25MaW5rRmxhZyA9IE9uTGlua0ZsYWc7CisgICBub2RlLT5pcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZyA9IEF1dG9ub21vdXNGbGFnOworICAgbWVtY3B5KG5vZGUtPmluNnAsIGluNnB0ciwgc2l6ZW9mKG5vZGUtPmluNnApKTsKIAotICAgIGlmICghc3RybmNtcChmb3JtYXQsIFNPQ0tFVF9UWVBFXzEsIDgpKSB7Ci0gICAgICAgIHJldCA9IHN0cnRvdWxsKGZvcm1hdCArIDgsIE5VTEwsIDApOwotICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAoZm9ybWF0LCBTT0NLRVRfVFlQRV8yLCA3KSkgewotICAgICAgICByZXQgPSBzdHJ0b3VsbChmb3JtYXQgKyA3LCBOVUxMLCAwKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0OworICAgcmV0dXJuIG5vZGU7CiB9CiAKLXVuc2lnbmVkIGludAotZ2V0X3BpZF9mcm9tX2lub2RlKHVuc2lnbmVkIGxvbmcgbG9uZyBpbm9kZSkKK2ludCBuZXRfc25tcF9maW5kX3ByZWZpeF9pbmZvKHByZWZpeF9jYnggKipoZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9jYnggKm5vZGVfdG9fZmluZCkKIHsKLSAgICBESVIgICAgICAgICAgICAqcHJvY2RpcnMgPSBOVUxMLCAqcGlkZGlycyA9IE5VTEw7Ci0gICAgY2hhciAgICAgICAgICAgKm5hbWUgPSBOVUxMOwotICAgIGNoYXIgICAgICAgICAgICBwYXRoX25hbWVbUEFUSF9NQVggKyAxXTsKLSAgICBjaGFyICAgICAgICAgICAgc29ja2V0X2xua1tOQU1FX01BWCArIDFdOwotICAgIGludCAgICAgICAgICAgICBmaWxlbGVuID0gMCwgcmVhZGxlbiA9IDAsIGlmbGFnID0gMDsKLSAgICBzdHJ1Y3QgZGlyZW50ICAqcHJvY2luZm8sICpwaWRpbmZvOwotICAgIHVuc2lnbmVkIGludCAgICBwaWQ7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIHRlbXBfaW5vZGU7CisgICAgaW50IGlyZXQ7CisgICAgbWVtc2V0KG5vZGVfdG9fZmluZCwgMCwgc2l6ZW9mKHByZWZpeF9jYngpKTsKKyAgICBpZighKmhlYWQpCisgICAgICAgcmV0dXJuIC0xOworICAgIG1lbWNweShub2RlX3RvX2ZpbmQtPmluNnAsIGFkZHJlc3MsIHNpemVvZihub2RlX3RvX2ZpbmQtPmluNnApKTsKIAotICAgIGlmICghKHByb2NkaXJzID0gb3BlbmRpcihQUk9DX1BBVEgpKSkgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAic25tcGQ6IGNhbm5vdCBvcGVuIC9wcm9jXG4iKTsgICAgICAgCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBpcmV0ID0gbmV0X3NubXBfc2VhcmNoX3VwZGF0ZV9wcmVmaXhfaW5mbyhoZWFkLCBub2RlX3RvX2ZpbmQsIDEpOworICAgIGlmKGlyZXQgPCAwKSB7CisgICAgICAgREVCVUdNU0dUTCgoInV0aWxfZnVuY3M6cHJlZml4IiwgIlVuYWJsZSB0byBzZWFyY2ggdGhlIGxpc3RcbiIpKTsKKyAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIGlmICghaXJldCkgeworICAgICAgIERFQlVHTVNHVEwoKCJ1dGlsX2Z1bmNzOnByZWZpeCIsICJDb3VsZCBub3QgZmluZCBwcmVmaXggaW5mb1xuIikpOworICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UKKyAgICAgICByZXR1cm4gMDsKK30KIAotICAgIHdoaWxlICgocHJvY2luZm8gPSByZWFkZGlyKHByb2NkaXJzKSkgIT0gTlVMTCkgewotICAgICAgICBuYW1lID0gcHJvY2luZm8tPmRfbmFtZTsKLSAgICAgICAgZm9yICg7ICpuYW1lOyBuYW1lKyspIHsKLSAgICAgICAgICAgIGlmICghaXNkaWdpdCgqbmFtZSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYoKm5hbWUpCi0gICAgICAgICAgICBjb250aW51ZTsKK2ludCBuZXRfc25tcF91cGRhdGVfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9jYnggKm5vZGVfdG9fdXBkYXRlKQoreworICAgIGludCBpcmV0OworICAgIGlyZXQgPSBuZXRfc25tcF9zZWFyY2hfdXBkYXRlX3ByZWZpeF9pbmZvKGhlYWQsIG5vZGVfdG9fdXBkYXRlLCAwKTsKKyAgICBpZihpcmV0IDwgMCkgeworICAgICAgIERFQlVHTVNHVEwoKCJ1dGlsX2Z1bmNzOnByZWZpeCIsICJVbmFibGUgdG8gdXBkYXRlIHByZWZpeCBpbmZvXG4iKSk7CisgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSBpZiAoIWlyZXQpIHsKKyAgICAgICBERUJVR01TR1RMKCgidXRpbF9mdW5jczpwcmVmaXgiLCAiVW5hYmxlIHRvIGZpbmQgdGhlIG5vZGUgdG8gdXBkYXRlXG4iKSk7CisgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZQorICAgICAgIHJldHVybiAwOworfQogCi0gICAgICAgIG1lbXNldChwYXRoX25hbWUsICdcMCcsIFBBVEhfTUFYICsgMSk7Ci0gICAgICAgIGZpbGVsZW4gPSBzbnByaW50ZihwYXRoX25hbWUsIFBBVEhfTUFYLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPQ19QQVRIICIvJXMvIiBGSUxFX0RJU1AsIHByb2NpbmZvLT5kX25hbWUpOwotICAgICAgICBpZiAoZmlsZWxlbiA8PSAwIHx8IFBBVEhfTUFYIDwgZmlsZWxlbikKLSAgICAgICAgICAgIGNvbnRpbnVlOworaW50IG5ldF9zbm1wX3NlYXJjaF91cGRhdGVfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhfY2J4ICpub2RlX3RvX3VzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmdW5jdGlvbmFsaXR5KQorewogCi0gICAgICAgIHBpZCA9IHN0cnRvdWwocHJvY2luZm8tPmRfbmFtZSwgTlVMTCwgMCk7CisgICAvKiBXZSBkZWZpbmUgZnVuY3Rpb25hbGl0eSBiYXNlZCBvbiBuZWVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAgICogMCAtIE5lZWQgdG8gZG8gYSBzZWFyY2ggYW5kIHVwZGF0ZS4gV2UgaGF2ZSB0byBwcm92aWRlIHRoZSBub2RlX3RvX3VzZSBzdHJ1Y3R1cmUgZmlsbGVkIGZ1bGx5ICoKKyAgICAqIDEgLSBOZWVkIHRvIGRvIG9ubHkgc2VhcmNoLiBQcm92aWRlIHRoZSBub2RlX3RvX3VzZSB3aXRoIGluNnAgdmFsdWUgZmlsbGVkICAgICAgICAgICAgICAgICAgICAqLwogCi0gICAgICAgIGlmICghKHBpZGRpcnMgPSBvcGVuZGlyKHBhdGhfbmFtZSkpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgcHJlZml4X2NieCAqdGVtcF9ub2RlOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaGVhZCk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBub2RlX3RvX3VzZSk7CiAKLSAgICAgICAgd2hpbGUgKChwaWRpbmZvID0gcmVhZGRpcihwaWRkaXJzKSkgIT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKGZpbGVsZW4gKyBzdHJsZW4ocGlkaW5mby0+ZF9uYW1lKSA+IFBBVEhfTUFYKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGlmKGZ1bmN0aW9uYWxpdHkgPiAxKQorICAgICAgIHJldHVybiAtMTsKKyAgICBpZighbm9kZV90b191c2UpCisgICAgICAgcmV0dXJuIC0xOwogCi0gICAgICAgICAgICBzdHJjcHkocGF0aF9uYW1lICsgZmlsZWxlbiwgcGlkaW5mby0+ZF9uYW1lKTsKIAotICAgICAgICAgICAgbWVtc2V0KHNvY2tldF9sbmssICdcMCcsIE5BTUVfTUFYICsgMSk7Ci0gICAgICAgICAgICByZWFkbGVuID0gcmVhZGxpbmsocGF0aF9uYW1lLCBzb2NrZXRfbG5rLCBOQU1FX01BWCk7Ci0gICAgICAgICAgICBpZiAocmVhZGxlbiA8IDApCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBzb2NrZXRfbG5rW3JlYWRsZW5dID0gJ1wwJzsKKyAgICBpZiAoIWZ1bmN0aW9uYWxpdHkpIHsKKyAgICAgICBpZiAoISpoZWFkKSB7CisgICAgICAgICAgICpoZWFkID0gbm9kZV90b191c2U7CisgICAgICAgICAgIHJldHVybiAxOworICAgICAgIH0KIAotICAgICAgICAgICAgdGVtcF9pbm9kZSA9IGV4dHJhY3RfaW5vZGUoc29ja2V0X2xuayk7Ci0gICAgICAgICAgICBpZiAoaW5vZGUgPT0gdGVtcF9pbm9kZSkgewotICAgICAgICAgICAgICAgIGlmbGFnID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICBmb3IgKHRlbXBfbm9kZSA9ICpoZWFkOyB0ZW1wX25vZGUtPm5leHRfaW5mbyAhPSBOVUxMIDsgdGVtcF9ub2RlID0gdGVtcF9ub2RlLT5uZXh0X2luZm8pIHsKKyAgICAgICAgICAgIGlmICgwID09IHN0cmNtcCh0ZW1wX25vZGUtPmluNnAsIG5vZGVfdG9fdXNlLT5pbjZwKSkgeworICAgICAgICAgICAgICAgIHRlbXBfbm9kZS0+aXBBZGRyZXNzUHJlZml4T25MaW5rRmxhZyA9IG5vZGVfdG9fdXNlLT5pcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnOworICAgICAgICAgICAgICAgIHRlbXBfbm9kZS0+aXBBZGRyZXNzUHJlZml4QXV0b25vbW91c0ZsYWcgPSBub2RlX3RvX3VzZS0+aXBBZGRyZXNzUHJlZml4QXV0b25vbW91c0ZsYWc7CisgICAgICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2xvc2VkaXIocGlkZGlycyk7Ci0gICAgICAgIGlmIChpZmxhZyA9PSAxKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgfQorICAgICAgIHRlbXBfbm9kZS0+bmV4dF9pbmZvID0gbm9kZV90b191c2U7CisgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgIGZvciAodGVtcF9ub2RlID0gKmhlYWQ7IHRlbXBfbm9kZSAhPSBOVUxMIDsgdGVtcF9ub2RlID0gdGVtcF9ub2RlLT5uZXh0X2luZm8pIHsKKyAgICAgICAgICAgICAgaWYgKDAgPT0gc3RyY21wKHRlbXBfbm9kZS0+aW42cCwgbm9kZV90b191c2UtPmluNnApKSB7CisgICAgICAgICAgICAgICAgLypuZWVkIHlvIHB1dCBzZW0gaGVyZSBhcyBpIHJlYWQgaGVyZSAqLworICAgICAgICAgICAgICAgIG5vZGVfdG9fdXNlLT5pcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnID0gdGVtcF9ub2RlLT5pcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnOworICAgICAgICAgICAgICAgIG5vZGVfdG9fdXNlLT5pcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZyA9IHRlbXBfbm9kZS0+aXBBZGRyZXNzUHJlZml4QXV0b25vbW91c0ZsYWc7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAocHJvY2RpcnMpCi0gICAgICAgIGNsb3NlZGlyKHByb2NkaXJzKTsKLSAgICByZXR1cm4gcGlkOwogfQogCi0jZW5kaWYgIC8qICNpZmRlZiBsaW51eCAqLworaW50IG5ldF9zbm1wX2RlbGV0ZV9wcmVmaXhfaW5mbyhwcmVmaXhfY2J4ICoqaGVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYWRkcmVzcykKK3sKKworICAgIHByZWZpeF9jYnggKnRlbXBfbm9kZSwqcHJldl9ub2RlOworICAgIGlmKCFhZGRyZXNzKQorICAgICAgIHJldHVybiAtMTsKKyAgICBpZighaGVhZCkKKyAgICAgICByZXR1cm4gLTE7CisKKyAgICBmb3IgKHRlbXBfbm9kZSA9ICpoZWFkLCBwcmV2X25vZGUgPSBOVUxMOyB0ZW1wX25vZGU7CisgICAgICAgICBwcmV2X25vZGUgPSB0ZW1wX25vZGUsIHRlbXBfbm9kZSA9IHRlbXBfbm9kZS0+bmV4dF9pbmZvKSB7CisKKyAgICAgICAgIGlmICh0ZW1wX25vZGUtPmluNnAgJiYgc3RyY21wKHRlbXBfbm9kZS0+aW42cCwgYWRkcmVzcykgPT0gMCkgeworICAgICAgICAgICAgaWYgKHByZXZfbm9kZSkKKyAgICAgICAgICAgICAgICBwcmV2X25vZGUtPm5leHRfaW5mbyA9IHRlbXBfbm9kZS0+bmV4dF9pbmZvOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICpoZWFkID0gdGVtcF9ub2RlLT5uZXh0X2luZm87CisgICAgICAgICAgICBmcmVlKHRlbXBfbm9kZSk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgfQorICAgIHJldHVybiAwOworfQorI2VuZGlmCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaAppbmRleCBmYmExYTk4Li5jNWI1MmVmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oCkBAIC00LDEyICs0LDMxIEBACiAjaWZuZGVmIF9NSUJHUk9VUF9VVElMX0ZVTkNTX0gKICNkZWZpbmUgX01JQkdST1VQX1VUSUxfRlVOQ1NfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQorCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKICNpbmNsdWRlICJzdHJ1Y3QuaCIKIAordHlwZWRlZiBzdHJ1Y3QgcHJlZml4X2luZm8KK3sKKyAgIHN0cnVjdCBwcmVmaXhfaW5mbyAqbmV4dF9pbmZvOworICAgdW5zaWduZWQgbG9uZyBpcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnOworICAgdW5zaWduZWQgbG9uZyBpcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZzsKKyAgIGNoYXIgaW42cFs0MF07Cit9cHJlZml4X2NieDsKKyNpZm5kZWYgV0lOMzIKK3R5cGVkZWYgc3RydWN0IAoreworIHByZWZpeF9jYnggKipsaXN0X2hlYWQ7Cit9bmV0c25tcF9wcmVmaXhfbGlzdGVuX2luZm87CisjZW5kaWYKIHZvaWQgICAgICAgICAgICBFeGl0KGludCk7CiBpbnQgICAgICAgICAgICAgc2hlbGxfY29tbWFuZChzdHJ1Y3QgZXh0ZW5zaWJsZSAqKTsKIGludCAgICAgICAgICAgICBleGVjX2NvbW1hbmQoc3RydWN0IGV4dGVuc2libGUgKik7CkBAIC0yMSwxMSArNDAsNiBAQAogV3JpdGVNZXRob2QgICAgIHJlc3RhcnRfaG9vazsKIHZvaWQgICAgICAgICAgICBwcmludF9taWJfb2lkKG9pZCAqLCBzaXplX3QpOwogdm9pZCAgICAgICAgICAgIHNwcmludF9taWJfb2lkKGNoYXIgKiwgY29uc3Qgb2lkICosIHNpemVfdCk7Ci1pbnQgICAgICAgICAgICAgaGVhZGVyX3NpbXBsZV90YWJsZShzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBzaXplX3QgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCwgaW50KTsKLWludCAgICAgICAgICAgICBoZWFkZXJfZ2VuZXJpYyhzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICosIFdyaXRlTWV0aG9kICoqKTsKIGludCAgICAgICAgICAgICBjaGVja21pYihzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLCBpbnQsIHNpemVfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCwgaW50KTsKIGNoYXIgICAgICAgICAgICpmaW5kX2ZpZWxkKGNoYXIgKiwgaW50KTsKQEAgLTM0LDE1ICs0OCwzNSBAQAogdm9pZCAgICAgICAgICAgIHdhaXRfb25fZXhlYyhzdHJ1Y3QgZXh0ZW5zaWJsZSAqKTsKIGNvbnN0IGNoYXIgICAgICptYWtlX3RlbXBmaWxlKHZvaWQpOwogCi0jaWZkZWYgbGludXgKLXVuc2lnbmVkIGludCAgICBnZXRfcGlkX2Zyb21faW5vZGUodW5zaWduZWQgbG9uZyBsb25nKTsKK3ByZWZpeF9jYnggKm5ldF9zbm1wX2NyZWF0ZV9wcmVmaXhfaW5mbyh1bnNpZ25lZCBsb25nIE9uTGlua0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBBdXRvbm9tb3VzRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICppbjZwdHIpOworI2lmbmRlZiBXSU4zMgoraW50IG5ldF9zbm1wX2ZpbmRfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NieCAqbm9kZV90b19maW5kKTsKK2ludCBuZXRfc25tcF91cGRhdGVfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9jYnggKm5vZGVfdG9fdXBkYXRlKTsKK2ludCBuZXRfc25tcF9zZWFyY2hfdXBkYXRlX3ByZWZpeF9pbmZvKHByZWZpeF9jYnggKipoZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NieCAqbm9kZV90b191c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25hbGl0eSk7CitpbnQgbmV0X3NubXBfZGVsZXRlX3ByZWZpeF9pbmZvKHByZWZpeF9jYnggKipoZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphZGRyZXNzKTsKICNlbmRpZgorI2RlZmluZSBOSVA2KGFkZHIpIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlswXSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlsxXSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlsyXSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlszXSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls0XSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls1XSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls2XSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls3XSkKIAogI2RlZmluZSAgICAgc2F0b3Npbih4KSAgICAgICgoc3RydWN0IHNvY2thZGRyX2luICopICYoeCkpCiAjZGVmaW5lICAgICBTT0NLQUREUih4KSAgICAgKHNhdG9zaW4oeCktPnNpbl9hZGRyLnNfYWRkcikKLSNpZm5kZWYgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQKLSNkZWZpbmUgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQgNQotI2VuZGlmCisKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgiCiAKIHR5cGVkZWYgdm9pZCAgICptaWJfdGFibGVfdDsKIHR5cGVkZWYgaW50ICAgICAoUkVMT0FEKSAobWliX3RhYmxlX3QpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0OGJhY2QKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKQEAgLTAsMCArMSwxMiBAQAorLyoKKyAqIHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaDogIHV0aWxpdGl5IGZ1bmN0aW9ucyBmb3IgZXh0ZW5zaWJsZQorICogZ3JvdXBzLgorICovCisjaWZuZGVmIF9NSUJHUk9VUF9VVElMX0ZVTkNTX01JQl9TVEFUU19DQUNIRV9USU1FT1VUX0gKKyNkZWZpbmUgX01JQkdST1VQX1VUSUxfRlVOQ1NfTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVRfSAorCisjaWZuZGVmIE1JQl9TVEFUU19DQUNIRV9USU1FT1VUCisjZGVmaW5lIE1JQl9TVEFUU19DQUNIRV9USU1FT1VUIDUKKyNlbmRpZgorCisjZW5kaWYgLyogX01JQkdST1VQX1VUSUxfRlVOQ1NfTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVRfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc2MjhiMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMKQEAgLTAsMCArMSw5NSBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSAiZ2V0X3BpZF9mcm9tX2lub2RlLmgiCisKKyNpbmNsdWRlIDxuZXQtc25tcC9vdXRwdXRfYXBpLmg+CisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWYgSEFWRV9TVFJJTkdfSAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxzdHJpbmdzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworIyBkZWZpbmUgUFJPQ19QQVRIICAgICAgICAgICIvcHJvYyIKKyMgZGVmaW5lIFNPQ0tFVF9UWVBFXzEgICAgICAic29ja2V0OlsiCisjIGRlZmluZSBTT0NLRVRfVFlQRV8yICAgICAgIlswMDAwXToiCisKK3BpZF90CituZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZShpbm82NF90IGlub2RlKQoreworICAgIERJUiAgICAgICAgICAgICpwcm9jZGlycyA9IE5VTEwsICpwaWRkaXJzID0gTlVMTDsKKyAgICBjaGFyICAgICAgICAgICAgcGF0aF9uYW1lW1BBVEhfTUFYICsgMV07CisgICAgY2hhciAgICAgICAgICAgIHNvY2tldF9sbmtbTkFNRV9NQVggKyAxXTsKKyAgICBpbnQgICAgICAgICAgICAgZmlsZWxlbiA9IDAsIHJlYWRsZW4gPSAwLCBpZmxhZyA9IDA7CisgICAgc3RydWN0IGRpcmVudCAgKnByb2NpbmZvLCAqcGlkaW5mbzsKKyAgICBwaWRfdCAgICAgICAgICAgcGlkID0gMDsKKyAgICBpbm82NF90ICAgICAgICAgdGVtcF9pbm9kZTsKKworICAgIGlmIChpbm9kZSA9PSAwKSB7CisgICAgICAgIC8qIGFuIGlub2RlIHNldCB0byB6ZXJvIG1lYW5zIGl0IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYSBwcm9jZXNzLiAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIShwcm9jZGlycyA9IG9wZW5kaXIoUFJPQ19QQVRIKSkpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInNubXBkOiBjYW5ub3Qgb3BlbiAvcHJvY1xuIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHdoaWxlICgocHJvY2luZm8gPSByZWFkZGlyKHByb2NkaXJzKSkgIT0gTlVMTCkgeworCWNvbnN0IGNoYXIqIG5hbWUgPSBwcm9jaW5mby0+ZF9uYW1lOworICAgICAgICBmb3IgKDsgKm5hbWU7IG5hbWUrKykgeworICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KCpuYW1lKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZigqbmFtZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG1lbXNldChwYXRoX25hbWUsICdcMCcsIFBBVEhfTUFYICsgMSk7CisgICAgICAgIGZpbGVsZW4gPSBzbnByaW50ZihwYXRoX25hbWUsIFBBVEhfTUFYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPQ19QQVRIICIvJXMvZmQvIiwgcHJvY2luZm8tPmRfbmFtZSk7CisgICAgICAgIGlmIChmaWxlbGVuIDw9IDAgfHwgUEFUSF9NQVggPCBmaWxlbGVuKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCEocGlkZGlycyA9IG9wZW5kaXIocGF0aF9uYW1lKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB3aGlsZSAoKHBpZGluZm8gPSByZWFkZGlyKHBpZGRpcnMpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoZmlsZWxlbiArIHN0cmxlbihwaWRpbmZvLT5kX25hbWUpID4gUEFUSF9NQVgpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHN0cmNweShwYXRoX25hbWUgKyBmaWxlbGVuLCBwaWRpbmZvLT5kX25hbWUpOworCisgICAgICAgICAgICBtZW1zZXQoc29ja2V0X2xuaywgJ1wwJywgTkFNRV9NQVggKyAxKTsKKyAgICAgICAgICAgIHJlYWRsZW4gPSByZWFkbGluayhwYXRoX25hbWUsIHNvY2tldF9sbmssIE5BTUVfTUFYKTsKKyAgICAgICAgICAgIGlmIChyZWFkbGVuIDwgMCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHNvY2tldF9sbmtbcmVhZGxlbl0gPSAnXDAnOworCisgICAgICAgICAgICBpZiAoIXN0cm5jbXAoc29ja2V0X2xuaywgU09DS0VUX1RZUEVfMSwgOCkpIHsKKyAgICAgICAgICAgICAgICB0ZW1wX2lub2RlID0gc3RydG91bGwoc29ja2V0X2xuayArIDgsIE5VTEwsIDApOworICAgICAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcChzb2NrZXRfbG5rLCBTT0NLRVRfVFlQRV8yLCA3KSkgeworICAgICAgICAgICAgICAgIHRlbXBfaW5vZGUgPSBzdHJ0b3VsbChzb2NrZXRfbG5rICsgNywgTlVMTCwgMCk7CisgICAgICAgICAgICB9IGVsc2UKKwkJdGVtcF9pbm9kZSA9IDA7CisgICAgICAgICAgICBpZiAoaW5vZGUgPT0gdGVtcF9pbm9kZSkgeworICAgICAgICAgICAgICAgIHBpZCA9IHN0cnRvdWwocHJvY2luZm8tPmRfbmFtZSwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgaWZsYWcgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNsb3NlZGlyKHBpZGRpcnMpOworICAgICAgICBpZiAoaWZsYWcgPT0gMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocHJvY2RpcnMpCisgICAgICAgIGNsb3NlZGlyKHByb2NkaXJzKTsKKyAgICByZXR1cm4gcGlkOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaCBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFkMDRlMQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIHV0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmg6ICB1dGlsaXRpeSBmdW5jdGlvbiB0byByZXRyaWV2ZSB0aGUgcGlkCisgKiB0aGF0IGNvbnRyb2xzIGEgZ2l2ZW4gaW5vZGUgb24gbGludXguCisgKi8KKyNpZm5kZWYgTkVUU05NUF9NSUJHUk9VUF9VVElMX0ZVTkNTX0dFVF9QSURfRlJPTV9JTk9ERV9ICisjZGVmaW5lIE5FVFNOTVBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfU0lNUExFX1RBQkxFX0gKKworI2lmbmRlZiBsaW51eAorY29uZmlnX2Vycm9yKGdldF9waWRfZnJvbV9pbm9kZSBpcyBvbmx5IHN1cHBvcmVkIG9uIGxpbnV4KQorI2VuZGlmCisKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRSAxCisKKyNpZiBIQVZFX0RJUkVOVF9ICisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjZWxzZQorIyBkZWZpbmUgZGlyZW50IGRpcmVjdAorIyBpZiBIQVZFX1NZU19ORElSX0gKKyMgIGluY2x1ZGUgPHN5cy9uZGlyLmg+CisjIGVuZGlmCisjIGlmIEhBVkVfU1lTX0RJUl9ICisjICBpbmNsdWRlIDxzeXMvZGlyLmg+CisjIGVuZGlmCisjIGlmIEhBVkVfTkRJUl9ICisjICBpbmNsdWRlIDxuZGlyLmg+CisjIGVuZGlmCisjZW5kaWYKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCitwaWRfdCBuZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZShpbm82NF90KTsKKworI2VuZGlmIC8qIE5FVFNOTVBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfU0lNUExFX1RBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTU0YmU5Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5jCkBAIC0wLDAgKzEsNjQgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlICJoZWFkZXJfZ2VuZXJpYy5oIgorCisvKgorICogaGVhZGVyX2dlbmVyaWMoLi4uCisgKiBBcmd1bWVudHM6CisgKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQorICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCisgKiBsZW5ndGggIElOL09VVCAgLSBsZW5ndGggb2YgSU4vT1VUIG9pZCdzCisgKiBleGFjdCAgIElOICAgICAgLSBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQKKyAqIHZhcl9sZW4gT1VUICAgICAtIGxlbmd0aCBvZiB2YXJpYWJsZSBvciAwIGlmIGZ1bmN0aW9uIHJldHVybmVkCisgKiB3cml0ZV9tZXRob2QKKyAqCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKKyAqIGdlbmVyaWNfaGVhZGVyCisgKgorICogUGFyYW1ldGVyczoKKyAqCSAgKnZwCSAgIChJKSAgICAgUG9pbnRlciB0byB2YXJpYWJsZSBlbnRyeSB0aGF0IHBvaW50cyBoZXJlLgorICoJICAqbmFtZQkgICAoSS9PKSAgIElucHV0IG5hbWUgcmVxdWVzdGVkLCBvdXRwdXQgbmFtZSBmb3VuZC4KKyAqCSAgKmxlbmd0aCAgKEkvTykgICBMZW5ndGggb2YgaW5wdXQgYW5kIG91dHB1dCBvaWQncy4KKyAqCSAgIGV4YWN0ICAgKEkpICAgICBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQuCisgKgkgICp2YXJfbGVuIChPKSAgICAgTGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQuCisgKgkoKip3cml0ZV9tZXRob2QpICAgSG9vayB0byBuYW1lIGEgd3JpdGUgbWV0aG9kIChVTlVTRUQpLgorICoKKyAqIFJldHVybnM6CisgKglNQVRDSF9TVUNDRUVERUQJSWYgdnAtPm5hbWUgbWF0Y2hlcyBuYW1lIChhY2NvdW50aW5nIGZvciBleGFjdCBiaXQpLgorICoJTUFUQ0hfRkFJTEVECU90aGVyd2lzZSwKKyAqCisgKgorICogQ2hlY2sgd2hldGhlciB2YXJpYWJsZSAodnApIG1hdGNoZXMgbmFtZS4KKyAqLworaW50CitoZWFkZXJfZ2VuZXJpYyhzdHJ1Y3QgdmFyaWFibGUgKnZwLAorICAgICAgICAgICAgICAgb2lkICogbmFtZSwKKyAgICAgICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCwKKyAgICAgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoreworICAgIG9pZCAgICAgICAgICAgICBuZXduYW1lW01BWF9PSURfTEVOXTsKKyAgICBpbnQgICAgICAgICAgICAgcmVzdWx0OworCisgICAgREVCVUdNU0dUTCgoInV0aWxfZnVuY3MiLCAiaGVhZGVyX2dlbmVyaWM6ICIpKTsKKyAgICBERUJVR01TR09JRCgoInV0aWxfZnVuY3MiLCBuYW1lLCAqbGVuZ3RoKSk7CisgICAgREVCVUdNU0coKCJ1dGlsX2Z1bmNzIiwgIiBleGFjdD0lZFxuIiwgZXhhY3QpKTsKKworICAgIG1lbWNweSgoY2hhciAqKSBuZXduYW1lLCAoY2hhciAqKSB2cC0+bmFtZSwKKyAgICAgICAgICAgKGludCkgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7CisgICAgbmV3bmFtZVt2cC0+bmFtZWxlbl0gPSAwOworICAgIHJlc3VsdCA9IHNubXBfb2lkX2NvbXBhcmUobmFtZSwgKmxlbmd0aCwgbmV3bmFtZSwgdnAtPm5hbWVsZW4gKyAxKTsKKyAgICBERUJVR01TR1RMKCgidXRpbF9mdW5jcyIsICIgIHJlc3VsdDogJWRcbiIsIHJlc3VsdCkpOworICAgIGlmICgoZXhhY3QgJiYgKHJlc3VsdCAhPSAwKSkgfHwgKCFleGFjdCAmJiAocmVzdWx0ID49IDApKSkKKyAgICAgICAgcmV0dXJuIChNQVRDSF9GQUlMRUQpOworICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAorICAgICAgICAgICAoKGludCkgdnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKKyAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOworCisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsKKyAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgLyogZGVmYXVsdCB0byAnbG9uZycgcmVzdWx0cyAqLworICAgIHJldHVybiAoTUFUQ0hfU1VDQ0VFREVEKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODYxMDQwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiAgdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oOiAgdXRpbGl0aXkgZnVuY3Rpb25zIGZvciBleHRlbnNpYmxlIGdyb3Vwcy4KKyAqLworI2lmbmRlZiBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfR0VORVJJQ19ICisjZGVmaW5lIF9NSUJHUk9VUF9VVElMX0ZVTkNTX0hFQURFUl9HRU5FUklDX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitpbnQgaGVhZGVyX2dlbmVyaWMoc3RydWN0IHZhcmlhYmxlICosIG9pZCAqLCBzaXplX3QgKiwgaW50LCBzaXplX3QgKiwKKyAgICAgICAgICAgICAgICAgICBXcml0ZU1ldGhvZCAqKik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfR0VORVJJQ19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NTlhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuYwpAQCAtMCwwICsxLDExMCBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgImhlYWRlcl9zaW1wbGVfdGFibGUuaCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgorICogaGVhZGVyX3NpbXBsZV90YWJsZQorICoKKyAqIFBhcmFtZXRlcnM6CisgKgkgICp2cAkJIFZhcmlhYmxlIGRhdGEuCisgKgkgICpuYW1lCQkgRnVsbHkgaW5zdGFudGlhdGVkIE9JRCBuYW1lLgorICoJICAqbGVuZ3RoCSBMZW5ndGggb2YgbmFtZS4KKyAqCSAgIGV4YWN0CSBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIGlzIGRlc2lyZWQuCisgKgkgICp2YXJfbGVuCSBIb29rIGZvciBzaXplIG9mIHJldHVybmVkIGRhdGEgdHlwZS4KKyAqCSgqKndyaXRlX21ldGhvZCkgSG9vayBmb3Igd3JpdGUgbWV0aG9kIChVTlVTRUQpLgorICoJICAgbWF4CisgKgorICogUmV0dXJuczoKKyAqCTAJSWYgbmFtZSBtYXRjaGVzIHZwLT5uYW1lIChhY2NvdW50aW5nIGZvciAnZXhhY3QnKSBhbmQgaXMKKyAqCQkJbm90IGdyZWF0ZXIgaW4gbGVuZ3RoIHRoYW4gJ21heCcuCisgKgkxCU90aGVyd2lzZS4KKyAqCisgKgorICogQ29tcGFyZSAnbmFtZScgdG8gdnAtPm5hbWUgZm9yIHRoZSBiZXN0IG1hdGNoIG9yIGFuIGV4YWN0IG1hdGNoIChpZgorICoJcmVxdWVzdGVkKS4gIEFsc28gY2hlY2sgdGhhdCAnbmFtZScgaXMgbm90IGxvbmdlciB0aGFuICdtYXgnIGlmCisgKgltYXggaXMgZ3JlYXRlci10aGFuL2VxdWFsIDAuCisgKiBTdG9yZSBhIHN1Y2Nlc3NmdWwgbWF0Y2ggaW4gJ25hbWUnLCBhbmQgaW5jcmVtZW50IHRoZSBPSUQgaW5zdGFuY2UgaWYKKyAqCXRoZSBtYXRjaCB3YXMgbm90IGV4YWN0LgorICoKKyAqICduYW1lJyBhbmQgJ2xlbmd0aCcgYXJlIHVuZGVmaW5lZCB1cG9uIGZhaWx1cmUuCisgKgorICovCitpbnQKK2hlYWRlcl9zaW1wbGVfdGFibGUoc3RydWN0IHZhcmlhYmxlICp2cCwgb2lkICogbmFtZSwgc2l6ZV90ICogbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sCisgICAgICAgICAgICAgICAgICAgIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCwgaW50IG1heCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgaSwgcnRlc3Q7ICAgLyogU2V0IHRvOiAgICAgIC0xICAgICAgSWYgbmFtZSA8IHZwLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAgMSAgICAgICBJZiBuYW1lID4gdnAtPm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAwICAgICAgIE90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb2lkICAgICAgICAgICAgIG5ld25hbWVbTUFYX09JRF9MRU5dOworCisgICAgZm9yIChpID0gMCwgcnRlc3QgPSAwOworICAgICAgICAgaSA8IChpbnQpIHZwLT5uYW1lbGVuICYmIGkgPCAoaW50KSAoKmxlbmd0aCkgJiYgIXJ0ZXN0OyBpKyspIHsKKyAgICAgICAgaWYgKG5hbWVbaV0gIT0gdnAtPm5hbWVbaV0pIHsKKyAgICAgICAgICAgIGlmIChuYW1lW2ldIDwgdnAtPm5hbWVbaV0pCisgICAgICAgICAgICAgICAgcnRlc3QgPSAtMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBydGVzdCA9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHJ0ZXN0ID4gMCB8fAorICAgICAgICAoZXhhY3QgPT0gMQorICAgICAgICAgJiYgKHJ0ZXN0IHx8IChpbnQpICpsZW5ndGggIT0gKGludCkgKHZwLT5uYW1lbGVuICsgMSkpKSkgeworICAgICAgICBpZiAodmFyX2xlbikKKyAgICAgICAgICAgICp2YXJfbGVuID0gMDsKKyAgICAgICAgcmV0dXJuIE1BVENIX0ZBSUxFRDsKKyAgICB9CisKKyAgICBtZW1zZXQobmV3bmFtZSwgMCwgc2l6ZW9mKG5ld25hbWUpKTsKKworICAgIGlmICgoKGludCkgKmxlbmd0aCkgPD0gKGludCkgdnAtPm5hbWVsZW4gfHwgcnRlc3QgPT0gLTEpIHsKKyAgICAgICAgbWVtbW92ZShuZXduYW1lLCB2cC0+bmFtZSwgKGludCkgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7CisgICAgICAgIG5ld25hbWVbdnAtPm5hbWVsZW5dID0gMTsKKyAgICAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKKyAgICB9IGVsc2UgaWYgKCgoaW50KSAqbGVuZ3RoKSA+IChpbnQpIHZwLT5uYW1lbGVuICsgMSkgeyAgICAgICAvKiBleGFjdCBjYXNlIGNoZWNrZWQgZWFybGllciAqLworICAgICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOworICAgICAgICBtZW1tb3ZlKG5ld25hbWUsIG5hbWUsICgqbGVuZ3RoKSAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgaWYgKG5hbWVbKmxlbmd0aCAtIDFdIDwgVUxPTkdfTUFYKSB7CisgICAgICAgICAgICBuZXduYW1lWypsZW5ndGggLSAxXSA9IG5hbWVbKmxlbmd0aCAtIDFdICsgMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBDYXJlZnVsIG5vdCB0byBvdmVyZmxvdy4uLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBuZXduYW1lWypsZW5ndGggLSAxXSA9IG5hbWVbKmxlbmd0aCAtIDFdOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKKyAgICAgICAgbWVtbW92ZShuZXduYW1lLCBuYW1lLCAoKmxlbmd0aCkgKiBzaXplb2Yob2lkKSk7CisgICAgICAgIGlmICghZXhhY3QpIHsKKyAgICAgICAgICAgIGlmIChuYW1lWypsZW5ndGggLSAxXSA8IFVMT05HX01BWCkgeworICAgICAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV0gKyAxOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIENhcmVmdWwgbm90IHRvIG92ZXJmbG93Li4uCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgbmV3bmFtZVsqbGVuZ3RoIC0gMV0gPSBuYW1lWypsZW5ndGggLSAxXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV07CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKChtYXggPj0gMCAmJiAoKGludCluZXduYW1lWypsZW5ndGggLSAxXSA+IG1heCkpIHx8CisgICAgICAgICAgICAgICAoIDAgPT0gbmV3bmFtZVsqbGVuZ3RoIC0gMV0gKSkgeworICAgICAgICBpZiAodmFyX2xlbikKKyAgICAgICAgICAgICp2YXJfbGVuID0gMDsKKyAgICAgICAgcmV0dXJuIE1BVENIX0ZBSUxFRDsKKyAgICB9CisKKyAgICBtZW1tb3ZlKG5hbWUsIG5ld25hbWUsICgqbGVuZ3RoKSAqIHNpemVvZihvaWQpKTsKKyAgICBpZiAod3JpdGVfbWV0aG9kKQorICAgICAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOworICAgIGlmICh2YXJfbGVuKQorICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgICAgIC8qIGRlZmF1bHQgKi8KKyAgICByZXR1cm4gKE1BVENIX1NVQ0NFRURFRCk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhOTVkNjkKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaApAQCAtMCwwICsxLDE5IEBACisvKgorICogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmg6ICB1dGlsaXRpeSBmdW5jdGlvbnMgZm9yIGV4dGVuc2libGUKKyAqIGdyb3Vwcy4KKyAqLworI2lmbmRlZiBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfU0lNUExFX1RBQkxFX0gKKyNkZWZpbmUgX01JQkdST1VQX1VUSUxfRlVOQ1NfSEVBREVSX1NJTVBMRV9UQUJMRV9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworaW50IGhlYWRlcl9zaW1wbGVfdGFibGUoc3RydWN0IHZhcmlhYmxlICosIG9pZCAqLCBzaXplX3QgKiwgaW50LCBzaXplX3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlTWV0aG9kICoqLCBpbnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX01JQkdST1VQX1VUSUxfRlVOQ1NfSEVBREVSX1NJTVBMRV9UQUJMRV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvZXhlY3V0ZS5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuYwppbmRleCAyMWJmNjgyLi40MjIxZjk2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvZXhlY3V0ZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9leGVjdXRlLmMKQEAgLTE2MCw3ICsxNjAsNyBAQAogICAgIGlmIChjcCkgewogICAgICAgICBhcmd2W2krK10gPSBzdHJkdXAoIGNwICk7CiAgICAgfQotICAgIGFyZ3ZbaV0gPSAwOworICAgIGFyZ3ZbaV0gPSBOVUxMOwogICAgICphcmdjID0gaTsKIAogICAgIHJldHVybiBhcmd2OwpAQCAtMjE1LDcgKzIxNSw3IEBACiAgICAgICAgIGFyZ3ZbaV0gPSBzdHJkdXAoIGNwdHIyICk7CiAgICAgICAgIGNwdHIyICArPSBzdHJsZW4oIGNwdHIyICkrMTsKICAgICB9Ci0gICAgYXJndltjb3VudF0gPSAwOworICAgIGFyZ3ZbY291bnRdID0gTlVMTDsKICAgICAqYXJnYyAgICAgICA9IGNvdW50OwogICAgICAgICAKICAgICByZXR1cm4gYXJndjsKQEAgLTM1NSw3ICszNTUsNyBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjb3VudCA9IHJlYWQob3BpcGVbMF0sICZjYWNoZV9wdHJbb2Zmc2V0XSwgY2FjaGVfc2l6ZSk7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgidmVyYm9zZTpydW46ZXhlYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJlYWQgJWQgYnl0ZXNcbiIsIGNvdW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJlYWQgJWQgYnl0ZXNcbiIsIChpbnQpY291bnQpKTsKICAgICAgICAgICAgIGlmICgwID09IGNvdW50KSB7CiAgICAgICAgICAgICAgICAgaW50IHJjOwogICAgICAgICAgICAgICAgIC8qCkBAIC0zOTAsNyArMzkwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOnJ1bjpleGVjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAlZCBsZWZ0IGluIGJ1ZmZlclxuIiwgY2FjaGVfc2l6ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICVkIGxlZnQgaW4gYnVmZmVyXG4iLCAoaW50KWNhY2hlX3NpemUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICgoY291bnQgPT0gLTEpICYmIChFQUdBSU4gIT0gZXJybm8pKSB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMgYi9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMKaW5kZXggNGY2NmQ3ZS4uZGU5M2Q2MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYwpAQCAtNywyNCArNywxOSBAQAogdm9pZAogbmV0c25tcF9wYXJzZV9pcXVlcnlTZWNMZXZlbChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkKIHsKLSAgICBjaGFyIGJ1ZlsxMDI0XTsKICAgICBpbnQgc2VjTGV2ZWw7CiAKICAgICBpZiAoKHNlY0xldmVsID0gcGFyc2Vfc2VjTGV2ZWxfY29uZiggdG9rZW4sIGxpbmUgKSkgPj0gMCApIHsKICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX0lOVEVSTkFMX1NFQ0xFVkVMLCBzZWNMZXZlbCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIlVua25vd24gc2VjdXJpdHkgbGV2ZWw6ICVzIiwgbGluZSk7Ci0gICAgICAgIGJ1Zlsgc2l6ZW9mKGJ1ZiktMSBdID0gMDsKLSAgICAgICAgY29uZmlnX3BlcnJvcihidWYpOworCW5ldHNubXBfY29uZmlnX2Vycm9yKCJVbmtub3duIHNlY3VyaXR5IGxldmVsOiAlcyIsIGxpbmUpOwogICAgIH0KIH0KIAogdm9pZAogbmV0c25tcF9wYXJzZV9pcXVlcnlWZXJzaW9uKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKQogewotICAgIGNoYXIgYnVmWzEwMjRdOwotCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TTk1QVjEKICAgICBpZiAoIXN0cmNtcCggbGluZSwgIjEiICkpCiAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELApAQCAtNDEsOSArMzYsNyBAQAogICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfVkVSU0lPTiwgU05NUF9WRVJTSU9OXzMpOwogICAgIGVsc2UgewotICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiVW5rbm93biB2ZXJzaW9uOiAlcyIsIGxpbmUpOwotICAgICAgICBidWZbIHNpemVvZihidWYpLTEgXSA9IDA7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoYnVmKTsKKwluZXRzbm1wX2NvbmZpZ19lcnJvcigiVW5rbm93biB2ZXJzaW9uOiAlcyIsIGxpbmUpOwogICAgIH0KIH0KIApAQCAtNjEsOSArNTQsNiBAQAogICAgIGlmIChzZWNOYW1lKQogICAgICAgICBuZXRzbm1wX3F1ZXJ5X3NldF9kZWZhdWx0X3Nlc3Npb24oCiAgICAgICAgICAgICAgbmV0c25tcF9pcXVlcnlfdXNlcl9zZXNzaW9uKHNlY05hbWUpKTsKLSAgICBlbHNlCi0gICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAotICAgICAgICAgICAgICAgICAiaXF1ZXJ5U2VjTmFtZSBoYXMgbm90IGJlZW4gY29uZmlndXJlZCAtIGludGVybmFsIHF1ZXJpZXMgd2lsbCBmYWlsXG4iKTsKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCkBAIC04MSw5ICs3MSw5IEBACiB7CiAgICAgdV9jaGFyIGVJRFtTTk1QX01BWEJVRl9TTUFMTF07CiAgICAgc2l6ZV90IGVsZW47Ci0gICAgbmV0c25tcF9zZXNzaW9uICpzID0gbmV0c25tcF9xdWVyeV9nZXRfZGVmYXVsdF9zZXNzaW9uKCk7CisgICAgbmV0c25tcF9zZXNzaW9uICpzID0gbmV0c25tcF9xdWVyeV9nZXRfZGVmYXVsdF9zZXNzaW9uX3VuY2hlY2tlZCgpOwogCi0gICAgaWYgKHMgJiYgcy0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwICkgeworICAgIGlmICggcyAmJiBzLT5zZWN1cml0eUVuZ2luZUlETGVuID09IDAgKSB7CiAgICAgICAgIGVsZW4gPSBzbm1wdjNfZ2V0X2VuZ2luZUlEKGVJRCwgc2l6ZW9mKGVJRCkpOwogICAgICAgICBzLT5zZWN1cml0eUVuZ2luZUlEID0gbmV0c25tcF9tZW1kdXAoZUlELCBlbGVuKTsKICAgICAgICAgcy0+c2VjdXJpdHlFbmdpbmVJRExlbiA9IGVsZW47CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jCmluZGV4IDdjNzBhMDIuLjUwY2RiNTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jCkBAIC0xNSw4ICsxNSw2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgotCiB0eXBlZGVmIHN0cnVjdCBvdmVycmlkZV9kYXRhX3MgewogICAgIGludCAgICAgICAgICAgICB0eXBlOwogICAgIHZvaWQgICAgICAgICAgICp2YWx1ZTsKQEAgLTE4Myw3ICsxODEsNiBAQAogICAgICAgICBjb25maWdfcGVycm9yKCJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KICAgICB0aGVkYXRhLT50eXBlID0gdHlwZTsKIAogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMjQ5LDcgKzI0Niw3IEBACiAgICAgdGhlX3JlZy0+bW9kZXMgPSAocmVhZHdyaXRlKSA/IEhBTkRMRVJfQ0FOX1JXUklURSA6IEhBTkRMRVJfQ0FOX1JPTkxZOwogICAgIHRoZV9yZWctPmhhbmRsZXIgPQogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyKCJvdmVycmlkZSIsIG92ZXJyaWRlX2hhbmRsZXIpOwotICAgIHRoZV9yZWctPnJvb3RvaWQgPSBuZXRzbm1wX21lbWR1cChvaWRidWYsIG9pZGJ1Zl9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgdGhlX3JlZy0+cm9vdG9pZCA9IHNubXBfZHVwbGljYXRlX29iamlkKG9pZGJ1Ziwgb2lkYnVmX2xlbik7CiAgICAgdGhlX3JlZy0+cm9vdG9pZF9sZW4gPSBvaWRidWZfbGVuOwogICAgIGlmICghdGhlX3JlZy0+cm9vdG9pZCB8fCAhdGhlX3JlZy0+aGFuZGxlciB8fCAhdGhlX3JlZy0+aGFuZGxlck5hbWUpIHsKICAgICAgICAgaWYgKHRoZV9yZWctPmhhbmRsZXIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmMgYi9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUwNmY3OQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuYwpAQCAtMCwwICsxLDQ0IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSAic25tcF9nZXRfc3RhdGlzdGljLmgiCisKK3N0YXRpYyBpbnQKK25ldHNubXBfZ2V0X3N0YXRpc3RpY19oZWxwZXJfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUKSB7CisgICAgICAgIGNvbnN0IG9pZCBpZHggPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lW3JlZ2luZm8tPnJvb3RvaWRfbGVuIC0gMl0gKworICAgICAgICAgICAgKCgoY2hhciopaGFuZGxlci0+bXl2b2lkKSAtICgoY2hhciopMCkpOworICAgICAgICBjb25zdCB1aW50MzJfdCB2YWx1ZSA9IHNubXBfZ2V0X3N0YXRpc3RpYyhpZHgpOworICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdV9jaGFyKikmdmFsdWUsIHNpemVvZih2YWx1ZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKK30KKworc3RhdGljIG5ldHNubXBfbWliX2hhbmRsZXIgKgorbmV0c25tcF9nZXRfc3RhdGlzdGljX2hhbmRsZXIoaW50IG9mZnNldCkKK3sKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpyZXQgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyKCJnZXRfc3RhdGlzdGljIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF9zdGF0aXN0aWNfaGVscGVyX2hhbmRsZXIpOworICAgIGlmIChyZXQpIHsKKyAgICAgICAgcmV0LT5mbGFncyB8PSBNSUJfSEFORExFUl9BVVRPX05FWFQ7CisgICAgICAgIHJldC0+bXl2b2lkID0gKChjaGFyKikwKSArIG9mZnNldDsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKworaW50CituZXRzbm1wX3JlZ2lzdGVyX3N0YXRpc3RpY19oYW5kbGVyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCBzdGFydCwgaW50IGJlZ2luLCBpbnQgZW5kKQoreworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZ2V0X3N0YXRpc3RpY19oYW5kbGVyKGJlZ2luIC0gc3RhcnQpKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAocmVnaW5mbywgc3RhcnQsIHN0YXJ0ICsgKGVuZCAtIGJlZ2luKSk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmggYi9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M1ZDQ4NgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaApAQCAtMCwwICsxLDIwIEBACisjaWZuZGVmIFNOTVBfR0VUX1NUQVRJU1RJQ19ICisjZGVmaW5lIFNOTVBfR0VUX1NUQVRJU1RJQ19ICisKKy8qKiBSZWdpc3RlcnMgYSBzY2FsYXIgZ3JvdXAgd2l0aCBzdGF0aXN0aWNzIGZyb20gQHJlZiBzbm1wX2dldF9zdGF0aXN0aWMuCisgKiAgYXMgcmVnaW5mby5bc3RhcnQsIHN0YXJ0ICsgZW5kIC0gYmVnaW5dLgorICogIEBwYXJhbSByZWdpbmZvIHJlZ2lzdHJhdGlvbiB0byByZWdpc3RlciB0aGUgaXRlbXMgdW5kZXIKKyAqICBAcGFyYW0gc3RhcnQgb2Zmc2V0IHRvIHRoZSBiZWdpbiBpdGVtCisgKiAgQHBhcmFtIGJlZ2luIGZpcnN0IHNubXBfZ2V0X3N0YXRpc3RpYyBrZXkgdG8gcmV0dXJuCisgKiAgQHBhcmFtIGVuZCBsYXN0IHNubXBfZ2V0X3N0YXRpc3RpYyBrZXkgdG8gcmV0dXJuCisgKi8KK2ludAorbmV0c25tcF9yZWdpc3Rlcl9zdGF0aXN0aWNfaGFuZGxlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgc3RhcnQsIGludCBiZWdpbiwgaW50IGVuZCk7CisKKyNkZWZpbmUgTkVUU05NUF9SRUdJU1RFUl9TVEFUSVNUSUNfSEFORExFUihyZWdpbmZvLCBzdGFydCwgc3RhdCkgICAgICAgIFwKKyAgbmV0c25tcF9yZWdpc3Rlcl9zdGF0aXN0aWNfaGFuZGxlcihyZWdpbmZvLCBzdGFydCwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFUXyAjIyBzdGF0ICMjIF9TVEFUU19TVEFSVCwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFUXyAjIyBzdGF0ICMjIF9TVEFUU19FTkQpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdmVyc2lvbnRhZyBiL2FnZW50L21pYmdyb3VwL3ZlcnNpb250YWcKaW5kZXggOWFhNzFhNi4uYzI0YzI1OSAxMDA3NTUKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdmVyc2lvbnRhZworKysgYi9hZ2VudC9taWJncm91cC92ZXJzaW9udGFnCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAKLURPSVQ9CitET0lUPWVjaG8KIAogaWYgWyAkMiA9ICJ0YWciIC1vICQyID0gInRhciIgXTsKIHRoZW4KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3dpbkV4dERMTC5oIGIvYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmgKaW5kZXggYzkwZjY2OS4uYTEwYjIxYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmgKQEAgLTE3LDggKzE3LDkgQEAKICAgICAgKiAgYW5kIHdyaXRlYWJsZSBvYmplY3QgbWV0aG9kcyAoJ1dyaXRlTWV0aG9kJykuCiAgICAgICovCiAgICAgIHZvaWQgICAgIGluaXRfd2luRXh0RExMKHZvaWQpOwotICAgICB2b2lkICAgICBzaHV0ZG93bl93aW5FeHRETEwodm9pZCk7Ci0gICAKKworICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciB2YXJfd2luRXh0RExMOworICAgICAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9zbm1wX2FnZW50LmMgYi9hZ2VudC9zbm1wX2FnZW50LmMKaW5kZXggNWFhNTU1Mi4uYjc3NjFiMCAxMDA2NDQKLS0tIGEvYWdlbnQvc25tcF9hZ2VudC5jCisrKyBiL2FnZW50L3NubXBfYWdlbnQuYwpAQCAtOTksOCArOTksNiBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJzbm1wZC5oIgotI2luY2x1ZGUgIm1pYmdyb3VwL3N0cnVjdC5oIgotI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MuaCIKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmg+CiAKQEAgLTExNiw2ICsxMTQsNjYgQEAKICNpbmNsdWRlICJzbXV4L3NtdXguaCIKICNlbmRpZgogCitORVRTTk1QX0lOTElORSB2b2lkCituZXRzbm1wX2FnZW50X2FkZF9saXN0X2RhdGEobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RhdGFfbGlzdCAqbm9kZSkKK3sKKyAgICBpZiAoYXJpKSB7CisJaWYgKGFyaS0+YWdlbnRfZGF0YSkgeworICAgICAgICAgICAgbmV0c25tcF9hZGRfbGlzdF9kYXRhKCZhcmktPmFnZW50X2RhdGEsIG5vZGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXJpLT5hZ2VudF9kYXRhID0gbm9kZTsKKwl9CisgICAgfQorfQorCitORVRTTk1QX0lOTElORSBpbnQKK25ldHNubXBfYWdlbnRfcmVtb3ZlX2xpc3RfZGF0YShuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBuYW1lKQoreworICAgIGlmICgoTlVMTCA9PSBhcmkpIHx8IChOVUxMID09IGFyaS0+YWdlbnRfZGF0YSkpCisgICAgICAgIHJldHVybiAxOworCisgICAgcmV0dXJuIG5ldHNubXBfcmVtb3ZlX2xpc3Rfbm9kZSgmYXJpLT5hZ2VudF9kYXRhLCBuYW1lKTsKK30KKworTkVUU05NUF9JTkxJTkUgdm9pZCAgICAqCituZXRzbm1wX2FnZW50X2dldF9saXN0X2RhdGEobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKQoreworICAgIGlmIChhcmkpIHsKKyAgICAgICAgcmV0dXJuIG5ldHNubXBfZ2V0X2xpc3RfZGF0YShhcmktPmFnZW50X2RhdGEsIG5hbWUpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworTkVUU05NUF9JTkxJTkUgdm9pZAorbmV0c25tcF9mcmVlX2FnZW50X2RhdGFfc2V0KG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmkpCit7CisgICAgaWYgKGFyaSkgeworICAgICAgICBuZXRzbm1wX2ZyZWVfbGlzdF9kYXRhKGFyaS0+YWdlbnRfZGF0YSk7CisgICAgfQorfQorCitORVRTTk1QX0lOTElORSB2b2lkCituZXRzbm1wX2ZyZWVfYWdlbnRfZGF0YV9zZXRzKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmkpCit7CisgICAgaWYgKGFyaSkgeworICAgICAgICBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YShhcmktPmFnZW50X2RhdGEpOworICAgIH0KK30KKworTkVUU05NUF9JTkxJTkUgdm9pZAorbmV0c25tcF9mcmVlX2FnZW50X3JlcXVlc3RfaW5mbyhuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpKQoreworICAgIGlmIChhcmkpIHsKKyAgICAgICAgaWYgKGFyaS0+YWdlbnRfZGF0YSkgeworICAgICAgICAgICAgbmV0c25tcF9mcmVlX2FsbF9saXN0X2RhdGEoYXJpLT5hZ2VudF9kYXRhKTsKKwl9CisgICAgICAgIFNOTVBfRlJFRShhcmkpOworICAgIH0KK30KKwogb2lkICAgICAgdmVyc2lvbl9zeXNvaWRbXSA9IHsgTkVUU05NUF9TWVNURU1fTUlCIH07CiBpbnQgICAgICB2ZXJzaW9uX3N5c29pZF9sZW4gPSBPSURfTEVOR1RIKHZlcnNpb25fc3lzb2lkKTsKIApAQCAtMjAwLDE1ICsyNTgsMTcgQEAKICAgICBuZXRzbm1wX2NhY2hlbWFwICp0bXBwOwogCiAgICAgdG1wcCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9jYWNoZW1hcCk7Ci0gICAgaWYgKCpjYWNoZV9zdG9yZSkgewotICAgICAgICB0bXBwLT5uZXh0ID0gKmNhY2hlX3N0b3JlOwotICAgICAgICAqY2FjaGVfc3RvcmUgPSB0bXBwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICpjYWNoZV9zdG9yZSA9IHRtcHA7Ci0gICAgfQorICAgIGlmICh0bXBwICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCpjYWNoZV9zdG9yZSkgeworICAgICAgICAgICAgdG1wcC0+bmV4dCA9ICpjYWNoZV9zdG9yZTsKKyAgICAgICAgICAgICpjYWNoZV9zdG9yZSA9IHRtcHA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqY2FjaGVfc3RvcmUgPSB0bXBwOworICAgICAgICB9CiAKLSAgICB0bXBwLT5nbG9iYWxpZCA9IGdsb2JhbGlkOwotICAgIHRtcHAtPmNhY2hlaWQgPSBsb2NhbGlkOworICAgICAgICB0bXBwLT5nbG9iYWxpZCA9IGdsb2JhbGlkOworICAgICAgICB0bXBwLT5jYWNoZWlkID0gbG9jYWxpZDsKKyAgICB9CiAgICAgcmV0dXJuIHRtcHA7CiB9CiAKQEAgLTU0Myw3ICs2MDMsNyBAQAogCiAKIGludAotZ2V0TmV4dFNlc3NJRCgpCitnZXROZXh0U2Vzc0lEKHZvaWQpCiB7CiAgICAgc3RhdGljIGludCAgICAgIFNlc3Npb25JRCA9IDA7CiAKQEAgLTU5Niw3ICs2NTYsNyBAQAogICAgICAgICB0aW1lcmNsZWFyKHR2cCk7CiAgICAgfQogCi0gICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmZmRzZXQsIDAsIDAsIHR2cCk7CisgICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmZmRzZXQsIE5VTEwsIE5VTEwsIHR2cCk7CiAKICAgICBpZiAoY291bnQgPiAwKSB7CiAgICAgICAgIC8qCkBAIC0xMjUxLDYgKzEzMTEsNyBAQAogCQkJIk5TQVBcbiIsIGNwdHIpKTsKICAgICAgICAgfQogICAgIH0gd2hpbGUoc3QgJiYgKnN0ICE9ICdcMCcpOworICAgIFNOTVBfRlJFRShidWYpOwogCiAjaWZkZWYgVVNJTkdfQUdFTlRYX01BU1RFUl9NT0RVTEUKICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKQEAgLTEyOTEsNyArMTM1Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwiYWdlbnRfc2VzaW9uICUwOHAgY3JlYXRlZFxuIiwgYXNwKSk7CisgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCJhZ2VudF9zZXNpb24gJThwIGNyZWF0ZWRcbiIsIGFzcCkpOwogICAgIGFzcC0+c2Vzc2lvbiA9IHNlc3Npb247CiAgICAgYXNwLT5wZHUgPSBzbm1wX2Nsb25lX3BkdShwZHUpOwogICAgIGFzcC0+b3JpZ19wZHUgPSBzbm1wX2Nsb25lX3BkdShwZHUpOwpAQCAtMTMxNyw3ICsxMzc4LDcgQEAKICAgICBpZiAoIWFzcCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCJhZ2VudF9zZXNzaW9uICUwOHAgcmVsZWFzZWRcbiIsIGFzcCkpOworICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwiYWdlbnRfc2Vzc2lvbiAlOHAgcmVsZWFzZWRcbiIsIGFzcCkpOwogCiAgICAgbmV0c25tcF9yZW1vdmVfZnJvbV9kZWxlZ2F0ZWQoYXNwKTsKICAgICAKQEAgLTEzODksNyArMTQ1MCw3IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGFzcC0+bmV4dCA9IGFnZW50X2RlbGVnYXRlZF9saXN0OwogICAgICAgICAgICAgYWdlbnRfZGVsZWdhdGVkX2xpc3QgPSBhc3A7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJkZWxlZ2F0ZSBzZXNzaW9uID09ICUwOHBcbiIsIGFzcCkpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiZGVsZWdhdGUgc2Vzc2lvbiA9PSAlOHBcbiIsIGFzcCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTE0MTYsNyArMTQ3Nyw3IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFnZW50X2RlbGVnYXRlZF9saXN0ID0gYXNwLT5uZXh0OwogCi0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgInJlbW92ZSBkZWxlZ2F0ZWQgc2Vzc2lvbiA9PSAlMDhwXG4iLCBhc3ApKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAicmVtb3ZlIGRlbGVnYXRlZCBzZXNzaW9uID09ICU4cFxuIiwgYXNwKSk7CiAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtMTQ2Myw3ICsxNTI0LDcgQEAKICAgICAgKi8KICAgICBpZihjb3VudCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJyZW1vdmVkICVkIGRlbGVnYXRlZCByZXF1ZXN0KHMpIGZvciBzZXNzaW9uICIKLSAgICAgICAgICAgICAgICAgICAgIiUwOHBcbiIsIGNvdW50LCBzZXNzKSk7CisgICAgICAgICAgICAgICAgICAgICIlOHBcbiIsIGNvdW50LCBzZXNzKSk7CiAgICAgICAgIG5ldHNubXBfY2hlY2tfb3V0c3RhbmRpbmdfYWdlbnRfcmVxdWVzdHMoKTsKICAgICB9CiAgICAgCkBAIC0xNTI3LDcgKzE1ODgsNyBAQAogICAgICAqIGRvbmUuCiAgICAgICovCiAgICAgaWYgKGFzcCA9PSBuZXRzbm1wX3Byb2Nlc3Npbmdfc2V0KSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIlNFVCByZXF1ZXN0IGNvbXBsZXRlLCBhc3AgPSAlMDhwXG4iLAorICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJTRVQgcmVxdWVzdCBjb21wbGV0ZSwgYXNwID0gJThwXG4iLAogICAgICAgICAgICAgICAgICAgICBhc3ApKTsKICAgICAgICAgbmV0c25tcF9wcm9jZXNzaW5nX3NldCA9IE5VTEw7CiAgICAgfQpAQCAtMTcxNiw3ICsxNzc3LDcgQEAKIAogICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIkRVTVAgYWdlbnRfc2Vzc19saXN0IC0+ICIpKTsKICAgICBmb3IgKGEgPSBhZ2VudF9zZXNzaW9uX2xpc3Q7IGEgIT0gTlVMTDsgYSA9IGEtPm5leHQpIHsKLSAgICAgICAgREVCVUdNU0coKCJzbm1wX2FnZW50IiwgIiUwOHBbc2Vzc2lvbiAlMDhwXSAtPiAiLCBhLCBhLT5zZXNzaW9uKSk7CisgICAgICAgIERFQlVHTVNHKCgic25tcF9hZ2VudCIsICIlOHBbc2Vzc2lvbiAlOHBdIC0+ICIsIGEsIGEtPnNlc3Npb24pKTsKICAgICB9CiAgICAgREVCVUdNU0coKCJzbm1wX2FnZW50IiwgIltOSUxdXG4iKSk7CiB9CkBAIC0xNzI2LDcgKzE3ODcsNyBAQAogewogICAgIG5ldHNubXBfYWdlbnRfc2Vzc2lvbiAqYSwgKipwcmV2TmV4dCA9ICZhZ2VudF9zZXNzaW9uX2xpc3Q7CiAKLSAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJSRU1PVkUgc2Vzc2lvbiA9PSAlMDhwXG4iLCBhc3ApKTsKKyAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJSRU1PVkUgc2Vzc2lvbiA9PSAlOHBcbiIsIGFzcCkpOwogCiAgICAgZm9yIChhID0gYWdlbnRfc2Vzc2lvbl9saXN0OyBhICE9IE5VTEw7IGEgPSAqcHJldk5leHQpIHsKICAgICAgICAgaWYgKGEgPT0gYXNwKSB7CkBAIC0xNzU1LDcgKzE4MTYsNyBAQAogewogICAgIG5ldHNubXBfYWdlbnRfc2Vzc2lvbiAqYSwgKm5leHQsICoqcHJldk5leHQgPSAmYWdlbnRfc2Vzc2lvbl9saXN0OwogCi0gICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiUkVNT1ZFIHNlc3Npb24gPT0gJTA4cFxuIiwgc2VzcykpOworICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIlJFTU9WRSBzZXNzaW9uID09ICU4cFxuIiwgc2VzcykpOwogCiAgICAgZm9yIChhID0gYWdlbnRfc2Vzc2lvbl9saXN0OyBhICE9IE5VTEw7IGEgPSBuZXh0KSB7CiAgICAgICAgIGlmIChhLT5zZXNzaW9uID09IHNlc3MpIHsKQEAgLTE4NzQsNyArMTkzNSw3IEBACiAgICAgLyoKICAgICAgKiBkb25lIAogICAgICAqLwotICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgImVuZCBvZiBoYW5kbGVfc25tcF9wYWNrZXQsIGFzcCA9ICUwOHBcbiIsCisgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiZW5kIG9mIGhhbmRsZV9zbm1wX3BhY2tldCwgYXNwID0gJThwXG4iLAogICAgICAgICAgICAgICAgIGFzcCkpOwogICAgIHJldHVybiByYzsKIH0KQEAgLTIzNzUsNiArMjQzNiwxMCBAQAogICAgIGFzcC0+dHJlZWNhY2hlID0KICAgICAgICAgKG5ldHNubXBfdHJlZV9jYWNoZSAqKSBjYWxsb2MoYXNwLT50cmVlY2FjaGVfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF90cmVlX2NhY2hlKSk7CisKKyAgICBpZiAoYXNwLT50cmVlY2FjaGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKwogICAgIGFzcC0+dHJlZWNhY2hlX251bSA9IC0xOwogICAgIGlmIChhc3AtPmNhY2hlX3N0b3JlKSB7CiAgICAgICAgIG5ldHNubXBfZnJlZV9jYWNoZW1hcChhc3AtPmNhY2hlX3N0b3JlKTsKQEAgLTI2OTAsNyArMjc1NSw3IEBACiAKICAgICAgICAgICAgIG5ldHNubXBfcHJvY2Vzc2luZ19zZXQgPSBuZXRzbm1wX2FnZW50X3F1ZXVlZF9saXN0OwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiU0VUIHJlcXVlc3QgcmVtYWlucyBxdWV1ZWQgd2hpbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgImRlbGVnYXRlZCByZXF1ZXN0cyBmaW5pc2gsIGFzcCA9ICUwOHBcbiIsIGFzcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgImRlbGVnYXRlZCByZXF1ZXN0cyBmaW5pc2gsIGFzcCA9ICU4cFxuIiwgYXNwKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNzAwLDcgKzI3NjUsNyBAQAogICAgICAgICBhc3AgPSBuZXRzbm1wX2FnZW50X3F1ZXVlZF9saXN0OwogICAgICAgICBuZXRzbm1wX2FnZW50X3F1ZXVlZF9saXN0ID0gYXNwLT5uZXh0OwogICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsCi0gICAgICAgICAgICAgICAgICAgICJwcm9jZXNzaW5nIHF1ZXVlZCByZXF1ZXN0LCBhc3AgPSAlMDhwXG4iLCBhc3ApKTsKKyAgICAgICAgICAgICAgICAgICAgInByb2Nlc3NpbmcgcXVldWVkIHJlcXVlc3QsIGFzcCA9ICU4cFxuIiwgYXNwKSk7CiAKICAgICAgICAgbmV0c25tcF9oYW5kbGVfcmVxdWVzdChhc3AsIGFzcC0+c3RhdHVzKTsKIApAQCAtMjc0Myw3ICsyODA4LDcgQEAKIHsKICAgICBpbnQgICAgICAgICAgICAgc3RhdHVzID0gU05NUF9FUlJfTk9FUlJPUjsKIAotICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgInByb2Nlc3NpbmcgZGVsZWdhdGVkIHJlcXVlc3QsIGFzcCA9ICUwOHBcbiIsCisgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAicHJvY2Vzc2luZyBkZWxlZ2F0ZWQgcmVxdWVzdCwgYXNwID0gJThwXG4iLAogICAgICAgICAgICAgICAgIGFzcCkpOwogCiAgICAgc3dpdGNoIChhc3AtPm1vZGUpIHsKQEAgLTI5OTIsNiArMzA1Nyw5IEBACiAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOyAgICAgIC8qIHNob3VsZCBuZXZlciByZWFsbHkgaGFwcGVuICovCiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKCFuZXRzbm1wX3J1bm5pbmcpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKQEAgLTMxMTIsNyArMzE4MCw3IEBACiAgICAgICAgICAgICBuZXRzbm1wX2FkZF9xdWV1ZWQoYXNwKTsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1ZXN0IHF1ZXVlZCB3aGlsZSBwcm9jZXNzaW5nIHNldCwgIgotICAgICAgICAgICAgICAgICAgICAgICAgImFzcCA9ICUwOHBcbiIsIGFzcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgImFzcCA9ICU4cFxuIiwgYXNwKSk7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogCkBAIC0zMTI4LDcgKzMxOTYsNyBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoYWdlbnRfZGVsZWdhdGVkX2xpc3QpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJTRVQgcmVxdWVzdCBxdWV1ZWQgd2hpbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxlZ2F0ZWQgcmVxdWVzdHMgZmluaXNoLCBhc3AgPSAlMDhwXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxlZ2F0ZWQgcmVxdWVzdHMgZmluaXNoLCBhc3AgPSAlOHBcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNwKSk7CiAgICAgICAgICAgICAgICAgbmV0c25tcF9hZGRfcXVldWVkKGFzcCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC0zMzg1LDcgKzM0NTMsNyBAQAogICAgICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CiAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmItPnR5cGUgPSBlcnJvcl92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFRoZXNlIGFyZSB0ZWNobmljYWxseSBpbGxlZ2FsIHRvIHNldCBieSB0aGUKQEAgLTM0MDAsNyArMzQ2OCw3IEBACiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJlcXVlc3QtPnN0YXR1cyA9IFNOTVBfRVJSX05PU1VDSE5BTUU7ICAgICAgLyogV1dXOiBjb3JyZWN0PyAqLwotICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgIC8qIG5ldmVyIGdldCBoZXJlICovCiAKQEAgLTM0MjEsNyArMzQ4OSw3IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIHJlcXVlc3QtPnN0YXR1cyA9IGVycm9yX3ZhbHVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQpAQCAtMzUzOCw2NyArMzYwNiw2IEBACiB9CiAKIAotCi1ORVRTTk1QX0lOTElORSB2b2lkCi1uZXRzbm1wX2FnZW50X2FkZF9saXN0X2RhdGEobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RhdGFfbGlzdCAqbm9kZSkKLXsKLSAgICBpZiAoYXJpKSB7Ci0JaWYgKGFyaS0+YWdlbnRfZGF0YSkgewotICAgICAgICAgICAgbmV0c25tcF9hZGRfbGlzdF9kYXRhKCZhcmktPmFnZW50X2RhdGEsIG5vZGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXJpLT5hZ2VudF9kYXRhID0gbm9kZTsKLQl9Ci0gICAgfQotfQotCi1ORVRTTk1QX0lOTElORSBpbnQKLW5ldHNubXBfYWdlbnRfcmVtb3ZlX2xpc3RfZGF0YShuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBuYW1lKQotewotICAgIGlmICgoTlVMTCA9PSBhcmkpIHx8IChOVUxMID09IGFyaS0+YWdlbnRfZGF0YSkpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgcmV0dXJuIG5ldHNubXBfcmVtb3ZlX2xpc3Rfbm9kZSgmYXJpLT5hZ2VudF9kYXRhLCBuYW1lKTsKLX0KLQotTkVUU05NUF9JTkxJTkUgdm9pZCAgICAqCi1uZXRzbm1wX2FnZW50X2dldF9saXN0X2RhdGEobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKQotewotICAgIGlmIChhcmkpIHsKLSAgICAgICAgcmV0dXJuIG5ldHNubXBfZ2V0X2xpc3RfZGF0YShhcmktPmFnZW50X2RhdGEsIG5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotTkVUU05NUF9JTkxJTkUgdm9pZAotbmV0c25tcF9mcmVlX2FnZW50X2RhdGFfc2V0KG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmkpCi17Ci0gICAgaWYgKGFyaSkgewotICAgICAgICBuZXRzbm1wX2ZyZWVfbGlzdF9kYXRhKGFyaS0+YWdlbnRfZGF0YSk7Ci0gICAgfQotfQotCi1ORVRTTk1QX0lOTElORSB2b2lkCi1uZXRzbm1wX2ZyZWVfYWdlbnRfZGF0YV9zZXRzKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmkpCi17Ci0gICAgaWYgKGFyaSkgewotICAgICAgICBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YShhcmktPmFnZW50X2RhdGEpOwotICAgIH0KLX0KLQotTkVUU05NUF9JTkxJTkUgdm9pZAotbmV0c25tcF9mcmVlX2FnZW50X3JlcXVlc3RfaW5mbyhuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpKQotewotICAgIGlmIChhcmkpIHsKLSAgICAgICAgaWYgKGFyaS0+YWdlbnRfZGF0YSkgewotICAgICAgICAgICAgbmV0c25tcF9mcmVlX2FsbF9saXN0X2RhdGEoYXJpLT5hZ2VudF9kYXRhKTsKLQl9Ci0gICAgICAgIFNOTVBfRlJFRShhcmkpOwotICAgIH0KLX0KLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBkZXByZWNhdGVkIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvYWdlbnQvc25tcF9wZXJsLmMgYi9hZ2VudC9zbm1wX3BlcmwuYwppbmRleCA0ODIxYWQzLi43Y2FhMzM1IDEwMDY0NAotLS0gYS9hZ2VudC9zbm1wX3BlcmwuYworKysgYi9hZ2VudC9zbm1wX3BlcmwuYwpAQCAtNTMsNiArNTMsMTEgQEAKICAgICAgICAgZ290byBiYWlsX291dDsKIAogICAgIHBlcmxfY29uc3RydWN0KG15X3BlcmwpOworCisjaWZkZWYgUEVSTF9FWElUX0RFU1RSVUNUX0VORAorICAgIFBMX2V4aXRfZmxhZ3MgfD0gUEVSTF9FWElUX0RFU1RSVUNUX0VORDsKKyNlbmRpZgorCiAgICAgaWYgKHBlcmxfcGFyc2UobXlfcGVybCwgeHNfaW5pdCwgMiwgTkVUU05NUF9SRU1PVkVfQ09OU1QoY2hhciAqKiwgZW1iZWRhcmdzKSwgTlVMTCkpCiAgICAgICAgIGdvdG8gYmFpbF9vdXQ7CiAKZGlmZiAtLWdpdCBhL2FnZW50L3NubXBfdmFycy5jIGIvYWdlbnQvc25tcF92YXJzLmMKaW5kZXggYWFmOTE3Zi4uZDhlYzUxZCAxMDA2NDQKLS0tIGEvYWdlbnQvc25tcF92YXJzLmMKKysrIGIvYWdlbnQvc25tcF92YXJzLmMKQEAgLTE0Myw2ICsxNDMsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaD4KICNpbmNsdWRlICJrZXJuZWwuaCIKIAogI2luY2x1ZGUgIm1pYmdyb3VwL3N0cnVjdC5oIgpAQCAtMzEyLDYgKzMxMyw3IEBACiAgICAgbmV0c25tcF9pbml0X2hlbHBlcnMoKTsKICAgICBpbml0X3RyYXBzKCk7CiAgICAgbmV0c25tcF9jb250YWluZXJfaW5pdF9saXN0KCk7CisgICAgaW5pdF9hZ2VudF9zeXNPUlRhYmxlKCk7CiAKICNpZiBkZWZpbmVkKFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUpIHx8IGRlZmluZWQoVVNJTkdfQUdFTlRYX01BU1RFUl9NT0RVTEUpCiAgICAgLyoKQEAgLTM2Niw2ICszNjgsNyBAQAogICAgIG5ldHNubXBfY2xlYXJfY2FsbGJhY2tfbGlzdCgpOwogICAgIG5ldHNubXBfY2xlYXJfdGRvbWFpbl9saXN0KCk7CiAgICAgbmV0c25tcF9jbGVhcl9oYW5kbGVyX2xpc3QoKTsKKyAgICBzaHV0ZG93bl9hZ2VudF9zeXNPUlRhYmxlKCk7CiAgICAgbmV0c25tcF9jb250YWluZXJfZnJlZV9saXN0KCk7CiAgICAgY2xlYXJfc2VjX21vZCgpOwogICAgIGNsZWFyX3NubXBfZW51bSgpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvc25tcGQuYyBiL2FnZW50L3NubXBkLmMKaW5kZXggZjQ2NzU5Mi4uZjBhNmVmZSAxMDA2NDQKLS0tIGEvYWdlbnQvc25tcGQuYworKysgYi9hZ2VudC9zbm1wZC5jCkBAIC0xMzgsNiArMTM4LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaD4KIAogI2luY2x1ZGUgIm0ybS5oIgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmg+CkBAIC0xNzYsNyArMTc3LDcgQEAKICNkZWZpbmUgVElNRVRJQ0sgICAgICAgICA1MDAwMDBMCiAKIGludCAgICAgICAgICAgICBzbm1wX2R1bXBfcGFja2V0OwotaW50ICAgICAgICAgICAgIHJlY29uZmlnID0gMDsKK3N0YXRpYyBpbnQgICAgICByZWNvbmZpZyA9IDA7CiBpbnQgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfREFFTU9OOwogCiAjaWZkZWYgV0lOMzJTRVJWSUNFCkBAIC00MzAsNiArNDMxLDEyIEBACiAgICAgaW50IGZkOwogICAgIEZJTEUgICAgICAgICAgICpQSUQ7CiAjZW5kaWYKKyNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKKyAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyAgICBjb25zdCBjaGFyICAgICAqcGVyc2lzdGVudF9kaXI7CisjZW5kaWYKIAogI2lmbmRlZiBXSU4zMgogICAgIC8qCkBAIC03NTQsNyArNzYxLDYgQEAKICAgICAgICAgICAgICAgICB1aWQgPSBzdHJ0b3VsKG9wdGFyZywgJmVjcCwgMTApOwogICAgICAgICAgICAgICAgIGlmICgqZWNwKSB7CiAjaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYXNzd2QgICppbmZvOwogICAgICAgICAgICAgICAgICAgICBpbmZvID0gZ2V0cHduYW0ob3B0YXJnKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHVpZCA9IGluZm8tPnB3X3VpZDsKQEAgLTg5OCwyMyArOTA0LDYgQEAKICAgICAqY3B0ciA9IDA7CiAgICAgKmFyZ3ZwdHIgPSBOVUxMOwogCi0jaWZkZWYgQlVGU0laCi0gICAgc2V0dmJ1ZihzdGRvdXQsIE5VTEwsIF9JT0xCRiwgQlVGU0laKTsKLSNlbmRpZgotICAgIC8qCi0gICAgICogSW5pdGlhbGl6ZSB0aGUgd29ybGQuICBEZXRhY2ggZnJvbSB0aGUgc2hlbGwuICBDcmVhdGUgaW5pdGlhbCB1c2VyLiAgCi0gICAgICovCi0gICAgaWYoIWRvbnRfZm9yaykgewotICAgICAgICBpbnQgcXVpdCA9ICEgbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1FVSVRfSU1NRURJQVRFTFkpOwotICAgICAgICByZXQgPSBuZXRzbm1wX2RhZW1vbml6ZShxdWl0LCBzbm1wX3N0ZGVycmxvZ19zdGF0dXMoKSk7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIHh4eC1ya3M6IGRvIHdlIGNhcmUgaWYgZm9yayBmYWlscz8gSSB0aGluayB3ZSBzaG91bGQuLi4KLSAgICAgICAgICovCi0gICAgICAgIGlmKHJldCAhPSAwKQotICAgICAgICAgICAgRXhpdCgxKTsgICAgICAgICAgICAgICAgLyogIEV4aXQgbG9ncyBleGl0IHZhbCBmb3IgdXMgICovCi0gICAgfQotCiAgICAgU09DS19TVEFSVFVQOwogICAgIGlmIChpbml0X2FnZW50KGFwcF9uYW1lKSAhPSAwKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJBZ2VudCBpbml0aWFsaXphdGlvbiBmYWlsZWRcbiIpOwpAQCAtOTM0LDYgKzkyMywyMCBAQAogICAgICAgICBFeGl0KDEpOyAgICAgICAgICAgICAgICAvKiAgRXhpdCBsb2dzIGV4aXQgdmFsIGZvciB1cyAgKi8KICAgICB9CiAKKyAgICAvKgorICAgICAqIEluaXRpYWxpemUgdGhlIHdvcmxkLiAgRGV0YWNoIGZyb20gdGhlIHNoZWxsLiAgQ3JlYXRlIGluaXRpYWwgdXNlci4gIAorICAgICAqLworICAgIGlmKCFkb250X2ZvcmspIHsKKyAgICAgICAgaW50IHF1aXQgPSAhIG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9RVUlUX0lNTUVESUFURUxZKTsKKyAgICAgICAgcmV0ID0gbmV0c25tcF9kYWVtb25pemUocXVpdCwgc25tcF9zdGRlcnJsb2dfc3RhdHVzKCkpOworICAgICAgICAvKgorICAgICAgICAgKiB4eHgtcmtzOiBkbyB3ZSBjYXJlIGlmIGZvcmsgZmFpbHM/IEkgdGhpbmsgd2Ugc2hvdWxkLi4uCisgICAgICAgICAqLworICAgICAgICBpZihyZXQgIT0gMCkKKyAgICAgICAgICAgIEV4aXQoMSk7ICAgICAgICAgICAgICAgIC8qICBFeGl0IGxvZ3MgZXhpdCB2YWwgZm9yIHVzICAqLworICAgIH0KKwogI2lmIEhBVkVfR0VUUElECiAgICAgaWYgKHBpZF9maWxlICE9IE5VTEwpIHsKICAgICAgICAgLyoKQEAgLTk2NywyMCArOTcwLDE2IEBACiAjZW5kaWYKIAogI2lmIEhBVkVfVU5JU1REX0gKLSAgICB7Ci0gICAgY29uc3QgY2hhciAqY29uc3QgcGVyc2lzdGVudF9kaXIgPSBnZXRfcGVyc2lzdGVudF9kaXJlY3RvcnkoKTsKKyAgICBwZXJzaXN0ZW50X2RpciA9IGdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeSgpOwogICAgIG1rZGlyaGllciggcGVyc2lzdGVudF9kaXIsIE5FVFNOTVBfQUdFTlRfRElSRUNUT1JZX01PREUsIDAgKTsKLQorICAgCiAgICAgdWlkID0gbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJICAgICBORVRTTk1QX0RTX0FHRU5UX1VTRVJJRCk7CiAgICAgZ2lkID0gbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJICAgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQpOwogICAgIAotI2lmZGVmIEhBVkVfQ0hPV04KICAgICBpZiAoIHVpZCAhPSAwIHx8IGdpZCAhPSAwICkKICAgICAgICAgY2hvd24oIHBlcnNpc3RlbnRfZGlyLCB1aWQsIGdpZCApOwotI2VuZGlmCi0gICAgfQogCiAjaWZkZWYgSEFWRV9TRVRHSUQKICAgICBpZiAoKGdpZCA9IG5ldHNubXBfZHNfZ2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKQEAgLTEwMDIsNiArMTAwMSwyMyBAQAogI2lmZGVmIEhBVkVfU0VUVUlECiAgICAgaWYgKCh1aWQgPSBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkJICBORVRTTk1QX0RTX0FHRU5UX1VTRVJJRCkpID4gMCkgeworI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSCAmJiBIQVZFX0lOSVRHUk9VUFMKKyAgICAgICAgLyoKKyAgICAgICAgICogU2V0IHN1cHBsZW1lbnRhcnkgZ3JvdXBzIGJlZm9yZSBjaGFuZ2luZyBVSUQKKyAgICAgICAgICogICAod2hpY2ggcHJvYmFibHkgaW52b2x2ZXMgZ2l2aW5nIHVwIHByaXZpbGVnZXMpCisgICAgICAgICAqLworICAgICAgICBpbmZvID0gZ2V0cHd1aWQodWlkKTsKKyAgICAgICAgaWYgKGluZm8pIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZC9tYWluIiwgIlN1cHBsZW1lbnRhcnkgZ3JvdXBzIGZvciAlcy5cbiIsIGluZm8tPnB3X25hbWUpKTsKKyAgICAgICAgICAgIGlmIChpbml0Z3JvdXBzKGluZm8tPnB3X25hbWUsIChnaWQgIT0gMCA/IGdpZCA6IGluZm8tPnB3X2dpZCkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCJpbml0Z3JvdXBzIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIGlmICghbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9OT19ST09UX0FDQ0VTUykpIHsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBERUJVR01TR1RMKCgic25tcGQvbWFpbiIsICJDaGFuZ2luZyB1aWQgdG8gJWQuXG4iLCB1aWQpKTsKICAgICAgICAgaWYgKHNldHVpZCh1aWQpID09IC0xKSB7CiAgICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoInNldHVpZCBmYWlsZWQiKTsKQEAgLTExMTksMTMgKzExMzUsMTcgQEAKIHJlY2VpdmUodm9pZCkKIHsKICAgICBpbnQgICAgICAgICAgICAgbnVtZmRzOwotICAgIGZkX3NldCAgICAgICAgICByZWFkZmRzLCB3cml0ZWZkcywgZXhjZXB0ZmRzOworICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0IHJlYWRmZHMsIHdyaXRlZmRzLCBleGNlcHRmZHM7CiAgICAgc3RydWN0IHRpbWV2YWwgIHRpbWVvdXQsICp0dnAgPSAmdGltZW91dDsKICAgICBpbnQgICAgICAgICAgICAgY291bnQsIGJsb2NrLCBpOwogI2lmZGVmCVVTSU5HX1NNVVhfTU9EVUxFCiAgICAgaW50ICAgICAgICAgICAgIHNkOwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0lOR19TTVVYX01PRFVMRSAqLwogCisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmcmVhZGZkcywgRkRfU0VUU0laRSk7CisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmd3JpdGVmZHMsIEZEX1NFVFNJWkUpOworICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmV4Y2VwdGZkcywgRkRfU0VUU0laRSk7CisKICAgICAvKgogICAgICAqIGlnbm9yZSBlYXJseSBzaWdodXAgZHVyaW5nIHN0YXJ0dXAKICAgICAgKi8KQEAgLTExNjcsMTggKzExODcsMTggQEAKICAgICAgICAgdHZwLT50dl91c2VjID0gMDsKIAogICAgICAgICBudW1mZHMgPSAwOwotICAgICAgICBGRF9aRVJPKCZyZWFkZmRzKTsKLSAgICAgICAgRkRfWkVSTygmd3JpdGVmZHMpOwotICAgICAgICBGRF9aRVJPKCZleGNlcHRmZHMpOworICAgICAgICBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oJnJlYWRmZHMpOworICAgICAgICBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oJndyaXRlZmRzKTsKKyAgICAgICAgTkVUU05NUF9MQVJHRV9GRF9aRVJPKCZleGNlcHRmZHMpOwogICAgICAgICBibG9jayA9IDA7Ci0gICAgICAgIHNubXBfc2VsZWN0X2luZm8oJm51bWZkcywgJnJlYWRmZHMsIHR2cCwgJmJsb2NrKTsKKyAgICAgICAgc25tcF9zZWxlY3RfaW5mbzIoJm51bWZkcywgJnJlYWRmZHMsIHR2cCwgJmJsb2NrKTsKICAgICAgICAgaWYgKGJsb2NrID09IDEpIHsKICAgICAgICAgICAgIHR2cCA9IE5VTEw7ICAgICAgICAgLyogYmxvY2sgd2l0aG91dCB0aW1lb3V0ICovCiAJfQogCiAjaWZkZWYJVVNJTkdfU01VWF9NT0RVTEUKICAgICAgICAgaWYgKHNtdXhfbGlzdGVuX3NkID49IDApIHsKLSAgICAgICAgICAgIEZEX1NFVChzbXV4X2xpc3Rlbl9zZCwgJnJlYWRmZHMpOworICAgICAgICAgICAgTkVUU05NUF9MQVJHRV9GRF9TRVQoc211eF9saXN0ZW5fc2QsICZyZWFkZmRzKTsKICAgICAgICAgICAgIG51bWZkcyA9CiAgICAgICAgICAgICAgICAgc211eF9saXN0ZW5fc2QgPj0gbnVtZmRzID8gc211eF9saXN0ZW5fc2QgKyAxIDogbnVtZmRzOwogCkBAIC0xMTg2LDE0ICsxMjA2LDE0IEBACiAgICAgICAgICAgICAgICAgc2QgPSBzbXV4X3NubXBfc2VsZWN0X2xpc3RfZ2V0X1NEX2Zyb21fTGlzdChpKTsKICAgICAgICAgICAgICAgICBpZiAoc2QgIT0gMCkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgRkRfU0VUKHNkLCAmcmVhZGZkcyk7CisgICAgICAgICAgICAgICAgICAgTkVUU05NUF9MQVJHRV9GRF9TRVQoc2QsICZyZWFkZmRzKTsKICAgICAgICAgICAgICAgICAgICBudW1mZHMgPSBzZCA+PSBudW1mZHMgPyBzZCArIDEgOiBudW1mZHM7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVTSU5HX1NNVVhfTU9EVUxFICovCiAKLSAgICAgICAgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvKCZudW1mZHMsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNlcHRmZHMpOworICAgICAgICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8yKCZudW1mZHMsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNlcHRmZHMpOwogCiAgICAgcmVzZWxlY3Q6CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fRVhURVJOQUxfU0lHUzsgaSsrKSB7CkBAIC0xMjA3LDcgKzEyMjcsNyBAQAogICAgICAgICAgICAgICAgICAgICBudW1mZHMsIHR2cCkpOwogICAgICAgICBpZih0dnApCiAgICAgICAgICAgICBERUJVR01TR1RMKCgidGltZXIiLCAidHZwICVsZC4lbGRcbiIsIHR2cC0+dHZfc2VjLCB0dnAtPnR2X3VzZWMpKTsKLSAgICAgICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmcmVhZGZkcywgJndyaXRlZmRzLCAmZXhjZXB0ZmRzLCB0dnApOworICAgICAgICBjb3VudCA9IHNlbGVjdChudW1mZHMsIHJlYWRmZHMubGZzX3NldHB0ciwgd3JpdGVmZHMubGZzX3NldHB0ciwgZXhjZXB0ZmRzLmxmc19zZXRwdHIsIHR2cCk7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZC9zZWxlY3QiLCAicmV0dXJuZWQsIGNvdW50ID0gJWRcbiIsIGNvdW50KSk7CiAKICAgICAgICAgaWYgKGNvdW50ID4gMCkgewpAQCAtMTIxOSw3ICsxMjM5LDcgQEAKICAgICAgICAgICAgIGlmIChzbXV4X2xpc3Rlbl9zZCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNtdXhfc25tcF9zZWxlY3RfbGlzdF9nZXRfbGVuZ3RoKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBzZCA9IHNtdXhfc25tcF9zZWxlY3RfbGlzdF9nZXRfU0RfZnJvbV9MaXN0KGkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoRkRfSVNTRVQoc2QsICZyZWFkZmRzKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoTkVUU05NUF9MQVJHRV9GRF9JU1NFVChzZCwgJnJlYWRmZHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc211eF9wcm9jZXNzKHNkKSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXV4X3NubXBfc2VsZWN0X2xpc3RfZGVsKHNkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyMjgsNyArMTI0OCw3IEBACiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBuZXcgY29ubmVjdGlvbiAKICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBpZiAoRkRfSVNTRVQoc211eF9saXN0ZW5fc2QsICZyZWFkZmRzKSkgeworICAgICAgICAgICAgICAgIGlmIChORVRTTk1QX0xBUkdFX0ZEX0lTU0VUKHNtdXhfbGlzdGVuX3NkLCAmcmVhZGZkcykpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKChzZCA9IHNtdXhfYWNjZXB0KHNtdXhfbGlzdGVuX3NkKSkgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgc211eF9zbm1wX3NlbGVjdF9saXN0X2FkZChzZCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyMzYsMTEgKzEyNTYsMTEgQEAKICAgICAgICAgICAgIH0KIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0lOR19TTVVYX01PRFVMRSAqLwotICAgICAgICAgICAgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMoJmNvdW50LCAmcmVhZGZkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVmZHMsICZleGNlcHRmZHMpOworICAgICAgICAgICAgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMyKCZjb3VudCwgJnJlYWRmZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlZmRzLCAmZXhjZXB0ZmRzKTsKICAgICAgICAgICAgIC8qIElmIHRoZXJlIGFyZSBzdGlsbCBldmVudHMgbGVmdG92ZXIsIHByb2Nlc3MgdGhlbSAqLwogICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkgewotICAgICAgICAgICAgICBzbm1wX3JlYWQoJnJlYWRmZHMpOworICAgICAgICAgICAgICBzbm1wX3JlYWQyKCZyZWFkZmRzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzd2l0Y2ggKGNvdW50KSB7CkBAIC0xMjc2LDYgKzEyOTYsMTAgQEAKIAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmR3aGlsZSAqLwogCisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgmcmVhZGZkcyk7CisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgmd3JpdGVmZHMpOworICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoJmV4Y2VwdGZkcyk7CisKICNpZiBkZWZpbmVkKFdJTjMyKQogICAgIGpvaW5fc3RkaW5fd2FpdGVyX3RocmVhZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9zbm1wZC5oIGIvYWdlbnQvc25tcGQuaAppbmRleCA5MzVjMGU3Li44OWJjZDMxIDEwMDY0NAotLS0gYS9hZ2VudC9zbm1wZC5oCisrKyBiL2FnZW50L3NubXBkLmgKQEAgLTIsNiArMiwxMCBAQAogICogc25tcGQuaAogICovCiAKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwogI2RlZmluZSBNQVNURVJfQUdFTlQgMAogI2RlZmluZSBTVUJfQUdFTlQgICAgMQogZXh0ZXJuIGludCAgICAgIGFnZW50X3JvbGU7CkBAIC0xNywzICsyMSw3IEBACiAgKiBjb25maWcgZmlsZSBwYXJzaW5nIHJvdXRpbmVzIAogICovCiB2b2lkICAgICAgICAgICAgYWdlbnRCb290c19jb25mKGNoYXIgKiwgY2hhciAqKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2FwcHMvTWFrZWZpbGUuZGVwZW5kIGIvYXBwcy9NYWtlZmlsZS5kZXBlbmQKaW5kZXggYjkyNzZlOC4uNjFhN2E2OSAxMDA2NDQKLS0tIGEvYXBwcy9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYXBwcy9NYWtlZmlsZS5kZXBlbmQKQEAgLTgsMzIgKzgsMTQgQEAKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00NCwxMSArMjYsMzEgQEAKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNzEsMjIgKzczLDQwIEBACiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtOTgsMjEgKzExOCw3IEBACiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMzgsMzIgKzE0NCwxNCBAQAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTc0LDExICsxNjIsMzEgQEAKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yMDMsMzIgKzIxMSwxNCBAQAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMzksMTAgKzIyOSwzMSBAQAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNjcsMzEgKzI3OCwxMyBAQAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zMDIsMTEgKzI5NSwzMCBAQAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaApAQCAtMzI4LDIzICszNDAsMzggQEAKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMzU2LDIxICszODMsNyBAQAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zOTYsMzIgKzQwOSwxNCBAQAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00MzIsMTAgKzQyNywzMSBAQAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00NjAsMzEgKzQ3NiwxNCBAQAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ5NSwxMSArNDk0LDMwIEBACiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaApAQCAtNTIxLDIzICs1MzksMzkgQEAKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtNTQ5LDIxICs1ODMsNyBAQAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC01ODgsMzIgKzYwOCwxNCBAQAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC02MjQsMTAgKzYyNiwzMSBAQAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02NTIsMzIgKzY3NSwxNCBAQAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTY4OCwxMSArNjkzLDMxIEBACiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaApAQCAtNzE2LDIxICs3NDEsMzggQEAKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTc0OSwxMCArNzkxLDYgQEAKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTc2MCwzMiArNzk4LDE0IEBACiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzk2LDExICs4MTYsMzEgQEAKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCkBAIC04MTcsNiArODU3LDc5IEBACiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogc25tcHRyYXBkX2hhbmRsZXJzLmggc25tcHRyYXBkX2F1dGguaCBzbm1wdHJhcGRfZHMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTgyNCwzMiArOTM3LDE0IEBACiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg2MCwxMCArOTU1LDMxIEBACiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTkyMCw3NyArMTAzNiw2IEBACiAuL3NubXB0cmFwZC5sbzogc25tcHRyYXBkX2xvZy5oIHNubXB0cmFwZF9kcy5oIHNubXB0cmFwZF9hdXRoLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaCAuLi9hZ2VudC9zbm1wX3BlcmwuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IHNubXB0cmFwZF9oYW5kbGVycy5oIHNubXB0cmFwZF9hdXRoLmggc25tcHRyYXBkX2RzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC05OTgsOSArMTA0MywyOSBAQAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDEwLDE1ICsxMDc1LDggQEAKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCkBAIC0xMDM2LDE4ICsxMDk0LDcgQEAKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKQEAgLTExMDUsMzIgKzExNTIsMTQgQEAKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMTQxLDExICsxMTcwLDMxIEBACiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTExNjQsNiArMTIxMywxMSBAQAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCBzbm1wdHJhcGRfbG9nLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogc25tcHRyYXBkX2RzLmgKKy4vc25tcHRyYXBkX3NxbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wdHJhcGRfc3FsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NubXB0cmFwZF9zcWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zbm1wdHJhcGRfc3FsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vc25tcHRyYXBkX3NxbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMTcxLDMxICsxMjI1LDE0IEBACiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTIwNiwxMSArMTI0MywzMCBAQAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKQEAgLTEyMzQsMzIgKzEyOTAsMTQgQEAKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMjcwLDExICsxMzA4LDMxIEBACiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaApAQCAtMTI5OCwzMiArMTM1NiwxNCBAQAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEzMzQsMTEgKzEzNzQsMzEgQEAKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCkBAIC0xMzU1LDYgKzE0MTUsMTEgQEAKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc3NodG9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NzaHRvc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9zc2h0b3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zc2h0b3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9zc2h0b3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTM2MywzMiArMTQyOCwxNCBAQAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMzk5LDExICsxNDQ2LDMxIEBACiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNDIzLDczICsxNDkwLDYgQEAKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi9zbm1wbmV0c3RhdC9tYWluLmggLi9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTQ5OCwzMiArMTQ5OCwxNCBAQAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNTM0LDExICsxNTE2LDMxIEBACiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNTU3LDYgKzE1NTksNzUgQEAKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi9zbm1wbmV0c3RhdC9tYWluLmggLi9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xNTY1LDMyICsxNjM2LDE0IEBACiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTYwMSwxMSArMTY1NCwzMSBAQAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNjIzLDggKzE2OTYsNyBAQAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuL3NubXBuZXRzdGF0L21haW4uaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xNjMzLDMyICsxNzA1LDE0IEBACiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE2NjksMTEgKzE3MjMsMzEgQEAKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE2OTEsOCArMTc2NSw3IEBACiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuL3NubXBuZXRzdGF0L21haW4uaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oIC4vc25tcG5ldHN0YXQvbmV0c3RhdC5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTE3MDEsMzIgKzE3NzQsMTQgQEAKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNzM3LDExICsxNzkyLDMxIEBACiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKZGlmZiAtLWdpdCBhL2FwcHMvTWFrZWZpbGUuaW4gYi9hcHBzL01ha2VmaWxlLmluCmluZGV4IDE4MWQzZmYuLmI4NDcwNzMgMTAwNjQ0Ci0tLSBhL2FwcHMvTWFrZWZpbGUuaW4KKysrIGIvYXBwcy9NYWtlZmlsZS5pbgpAQCAtMTcsNiArMTcsOCBAQAogIyBUaGluZ3MgdG8gaW5zdGFsbAogIwogCitTU0hJTlNUQUxMQklOUFJPR1MgPSBAU1NISU5TVEFMTEJJTlBST0dTQAorCiBJTlNUQUxMQklOUFJPR1MJPSBzbm1wZ2V0JChFWEVFWFQpIAkJCVwKIAkJc25tcGdldG5leHQkKEVYRUVYVCkgCQkJXAogCQlzbm1wc2V0JChFWEVFWFQpIAkJCVwKQEAgLTMyLDcgKzM0LDggQEAKIAkJc25tcHRlc3QkKEVYRUVYVCkJCQlcCiAJCWVuY29kZV9rZXljaGFuZ2UkKEVYRUVYVCkgCQlcCiAJCXNubXBkZiQoRVhFRVhUKSAJCQlcCi0JCXNubXB2YWNtJChFWEVFWFQpCisJCXNubXB2YWNtJChFWEVFWFQpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJChTU0hJTlNUQUxMQklOUFJPR1MpCiAKIElOU1RBTExTQklOUFJPR1MgPSBzbm1wdHJhcGQkKEVYRUVYVCkKIApAQCAtNTAsNiArNTMsOCBAQAogQUdFTlRMSUIgICAgICAgID0gLi4vYWdlbnQvbGlibmV0c25tcGFnZW50LiQoTElCX0VYVEVOU0lPTikkKExJQl9WRVJTSU9OKQogTUlCTElCICAgICAgICAgID0gLi4vYWdlbnQvbGlibmV0c25tcG1pYnMuJChMSUJfRVhURU5TSU9OKSQoTElCX1ZFUlNJT04pCiBVU0VBR0VOVExJQlMJPSAkKE1JQkxJQikgJChBR0VOVExJQikgJChIRUxQRVJMSUIpICQoVVNFTElCUykKK01ZU1FMX0xJQlMJPSBATVlTUUxfTElCU0AKK01ZU1FMX0lOQ0xVREVTCT0gQE1ZU1FMX0lOQ0xVREVTQAogCiBMSUJTCQk9ICQoVVNFTElCUykgQExJQlNACiBQRVJMTERPUFRTX0ZPUl9BUFBTID0gQFBFUkxMRE9QVFNfRk9SX0FQUFNACkBAIC01NywyMiArNjIsMjMgQEAKIAogIwogIyBoYWNrIGZvciBjb21waWxpbmcgdHJhcGQgd2hlbiBhZ2VudCBpcyBkaXNhYmxlZAotVFJBUERXSVRIQUdFTlQgID0gJChVU0VUUkFQTElCUykgQEFHRU5UTElCU0AKLVRSQVBEV0lUSE9VVEFHRU5UID0gJChMSUJTKQorVFJBUERXSVRIQUdFTlQgID0gJChVU0VUUkFQTElCUykgJChNWVNRTF9MSUJTKSBAQUdFTlRMSUJTQAorVFJBUERXSVRIT1VUQUdFTlQgPSAkKExJQlMpICQoTVlTUUxfTElCUykKIAogIyB0aGVzZSB3aWxsIGJlIHNldCBieSBjb25maWd1cmUgdG8gb25lIG9mIHRoZSBhYm92ZSAyIGxpbmVzCiBUUkFQTElCUwk9IEBUUkFQTElCU0AgJChQRVJMTERPUFRTX0ZPUl9BUFBTKQogVVNFVFJBUExJQlMJPSBAVVNFVFJBUExJQlNACiAKIENQUEZMQUdTCT0gJChUT1BfSU5DTFVERVMpIC1JLiAkKEFHRU5UX0lOQ0xVREVTKSAkKEhFTFBFUl9JTkNMVURFUykgXAotCQkgICQoTUlCR1JPVVBfSU5DTFVERVMpICAkKFNOTVBMSUJfSU5DTFVERVMpIEBDUFBGTEFHU0AKKwkJICAkKE1JQkdST1VQX0lOQ0xVREVTKSAgXAorCQkgICQoU05NUExJQl9JTkNMVURFUykgJChNWVNRTF9JTkNMVURFUykgQENQUEZMQUdTQAogCiBPU1VGRklYCQk9IGxvCiBUUkFQRF9PQkpFQ1RTICAgPSBzbm1wdHJhcGQuJChPU1VGRklYKSBAb3RoZXJfdHJhcGRfb2JqZWN0c0AKIExJQlRSQVBEX09CSlMgICA9IHNubXB0cmFwZF9oYW5kbGVycy5vICBzbm1wdHJhcGRfbG9nLm8gXAotCQkgIHNubXB0cmFwZF9hdXRoLm8KKwkJICBzbm1wdHJhcGRfYXV0aC5vIHNubXB0cmFwZF9zcWwubwogTExJQlRSQVBEX09CSlMgID0gc25tcHRyYXBkX2hhbmRsZXJzLmxvIHNubXB0cmFwZF9sb2cubG8gXAotCQkgIHNubXB0cmFwZF9hdXRoLmxvCisJCSAgc25tcHRyYXBkX2F1dGgubG8gc25tcHRyYXBkX3NxbC5sbwogT0JKUyAgPSAqLm8KIExPQkpTID0gKi5sbwogCkBAIC0xNTgsNSArMTY0LDkgQEAKIAkgIEBybSAtZiAkKElOU1RBTExfUFJFRklYKSQoc25tcGxpYmRpcikvc25tcF9wZXJsX3RyYXBkLnBsCiAJICBAZWNobyAicmVtb3ZlZCBzbm1wX3BlcmxfdHJhcGQucGwgZnJvbSAkKElOU1RBTExfUFJFRklYKSQoc25tcGxpYmRpcikiCiAKK3NzaHRvc25tcDogc3NodG9zbm1wLiQoT1NVRkZJWCkKKwkkKExJTkspICR7Q0ZMQUdTfSAtbyAkQCBzc2h0b3NubXAuJChPU1VGRklYKQorCisKIGluc3RhbGxkaXJzOgogCUAkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyAkKElOU1RBTExfUFJFRklYKSQoc25tcGxpYmRpcikKZGlmZiAtLWdpdCBhL2FwcHMvZW5jb2RlX2tleWNoYW5nZS5jIGIvYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMKaW5kZXggNWI2ODM4ZS4uOTQ0MTcyMyAxMDA2NDQKLS0tIGEvYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMKKysrIGIvYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMKQEAgLTIzMyw4ICsyMzMsOCBAQAogICAgICAgICBlbmdpbmVpZF9sZW4gPSBoZXhfdG9fYmluYXJ5MihlbmdpbmVpZCArIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbigoY2hhciAqKSBlbmdpbmVpZCkgLSAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKikgJmVuZ2luZWlkKTsKLSAgICAgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiZW5naW5lSURMZW46ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICBlbmdpbmVpZF9sZW4pKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiZW5naW5lSURMZW46ICVsdVxuIiwKKyAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpZW5naW5laWRfbGVuKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZW5naW5laWRfbGVuID0gc2V0dXBfZW5naW5lSUQoJmVuZ2luZWlkLCAoY2hhciAqKSBlbmdpbmVpZCk7CiAKQEAgLTI5NSwxMiArMjk1LDEyIEBACiAgICAgUVVJVEZVTihydmFsLCBtYWluX3F1aXQpOwogCiAKLSAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJFSUQgKCVkKTogIiwgZW5naW5laWRfbGVuKSk7CisgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiRUlEICglbHUpOiAiLCAodW5zaWduZWQgbG9uZyllbmdpbmVpZF9sZW4pKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgZW5naW5laWRfbGVuOyBpKyspCiAgICAgICAgIERFQlVHTVNHVEwoKCJlbmNvZGVfa2V5Y2hhbmdlIiwgIiUwMngiLCAoaW50KSAoZW5naW5laWRbaV0pKSk7CiAgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiXG4iKSk7CiAKLSAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJvbGQgS3UgKCVkKSAoZnJvbSAlcyk6ICIsIG9sZEt1X2xlbiwKKyAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJvbGQgS3UgKCVsdSkgKGZyb20gJXMpOiAiLCAodW5zaWduZWQgbG9uZylvbGRLdV9sZW4sCiAgICAgICAgICAgICAgICAgb2xkcGFzcykpOwogICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBvbGRLdV9sZW47IGkrKykKICAgICAgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiJTAyeCIsIChpbnQpIChvbGRLdVtpXSkpKTsKQEAgLTMxMiw4ICszMTIsOCBAQAogICAgIFFVSVRGVU4ocnZhbCwgbWFpbl9xdWl0KTsKIAogCi0gICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiZ2VuZXJhdGluZyBvbGQgS3VsICglZCkgKGZyb20gS3UpOiAiLAotICAgICAgICAgICAgICAgIG9sZGt1bF9sZW4pKTsKKyAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJnZW5lcmF0aW5nIG9sZCBLdWwgKCVsdSkgKGZyb20gS3UpOiAiLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKW9sZGt1bF9sZW4pKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgb2xka3VsX2xlbjsgaSsrKQogICAgICAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICIlMDJ4IiwgKGludCkgKG9sZGt1bFtpXSkpKTsKICAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJcbiIpKTsKQEAgLTMyMyw4ICszMjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbmV3S3UsIG5ld0t1X2xlbiwgbmV3a3VsLCAmbmV3a3VsX2xlbik7CiAgICAgUVVJVEZVTihydmFsLCBtYWluX3F1aXQpOwogCi0gICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiZ2VuZXJhdGluZyBuZXcgS3VsICglZCkgKGZyb20gS3UpOiAiLAotICAgICAgICAgICAgICAgIG9sZGt1bF9sZW4pKTsKKyAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJnZW5lcmF0aW5nIG5ldyBLdWwgKCVsdSkgKGZyb20gS3UpOiAiLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKW9sZGt1bF9sZW4pKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgbmV3a3VsX2xlbjsgaSsrKQogICAgICAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICIlMDJ4IiwgbmV3a3VsW2ldKSk7CiAgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiXG4iKSk7CmRpZmYgLS1naXQgYS9hcHBzL3NubXBkZWx0YS5jIGIvYXBwcy9zbm1wZGVsdGEuYwppbmRleCA0ZjI4ZjQ3Li43Mzg4ZWM3IDEwMDY0NAotLS0gYS9hcHBzL3NubXBkZWx0YS5jCisrKyBiL2FwcHMvc25tcGRlbHRhLmMKQEAgLTM1Nyw3ICszNTcsNyBAQAogICAgIH0KICAgICBjb3VudCA9IDE7CiAgICAgd2hpbGUgKGNvdW50ICE9IDApIHsKLSAgICAgICAgY291bnQgPSBzZWxlY3QoMCwgMCwgMCwgMCwgdHYpOworICAgICAgICBjb3VudCA9IHNlbGVjdCgwLCBOVUxMLCBOVUxMLCBOVUxMLCB0dik7CiAgICAgICAgIHN3aXRjaCAoY291bnQpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgYnJlYWs7CkBAIC00MzksNyArNDM5LDcgQEAKIAkgICAgCU1BWF9BUkdTKTsKIAkgICAgZXhpdCgxKTsKIAl9Ci0gICAgICAgIHZhcmluZm9bY3VycmVudF9uYW1lKytdLm5hbWUgPSAwOworICAgICAgICB2YXJpbmZvW2N1cnJlbnRfbmFtZSsrXS5uYW1lID0gTlVMTDsKICAgICB9CiAKICAgICBTT0NLX1NUQVJUVVA7CkBAIC03MzEsMTIgKzczMSwxMiBAQAogCiAgICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09IFNUQVRfVElNRU9VVCkgewogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJUaW1lb3V0OiBObyBSZXNwb25zZSBmcm9tICVzXG4iLCBnYXRld2F5KTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gMDsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gTlVMTDsKICAgICAgICAgICAgIGV4aXRfY29kZSA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgLyogc3RhdHVzID09IFNUQVRfRVJST1IgKi8KICAgICAgICAgICAgIHNubXBfc2Vzc19wZXJyb3IoInNubXBkZWx0YSIsIHNzKTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gMDsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gTlVMTDsKICAgICAgICAgICAgIGV4aXRfY29kZSA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wZ2V0LmMgYi9hcHBzL3NubXBnZXQuYwppbmRleCAxMGE2OTY4Li4zM2Q1ZDcxIDEwMDY0NAotLS0gYS9hcHBzL3NubXBnZXQuYworKysgYi9hcHBzL3NubXBnZXQuYwpAQCAtMTI2LDYgKzEyNiw3IEBACiAgICAgaW50ICAgICAgICAgICAgIGZhaWx1cmVzID0gMDsKICAgICBpbnQgICAgICAgICAgICAgZXhpdHZhbCA9IDA7CiAKKwogICAgIC8qCiAgICAgICogZ2V0IHRoZSBjb21tb24gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyAKICAgICAgKi8KZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kIGIvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKaW5kZXggYjA1MzYxYS4uYTMyOTYzNCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKQEAgLTcsMzIgKzcsMTQgQEAKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00MywxMSArMjUsMzEgQEAKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCkBAIC02Niw3MSArNjgsNiBAQAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9pZi5sbzogbWFpbi5oCiAuL2lmLmxvOiBuZXRzdGF0LmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIG1haW4uaCBuZXRzdGF0LmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTM5LDMyICs3NiwxNCBAQAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNzUsMTAgKzk0LDMxIEBACiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE5Niw2ICsxMzYsNzQgQEAKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggbWFpbi5oIG5ldHN0YXQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIG1haW4uaCBuZXRzdGF0LmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMjA0LDMyICsyMTIsMTQgQEAKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yNDAsMTAgKzIzMCwzMSBAQAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNjEsOCArMjcyLDcgQEAKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vbWFpbi5sbzogbWFpbi5oCi0uL21haW4ubG86IG5ldHN0YXQuaAorLi9tYWluLmxvOiBtYWluLmggbmV0c3RhdC5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTI3MSwzMiArMjgxLDE0IEBACiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTMwNywxMCArMjk5LDMxIEBACiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMyOCw4ICszNDEsNyBAQAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9yb3V0ZS5sbzogbWFpbi5oCi0uL3JvdXRlLmxvOiBuZXRzdGF0LmgKKy4vcm91dGUubG86IG1haW4uaCBuZXRzdGF0LmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMzM4LDMyICszNTAsMTQgQEAKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zNzQsMTEgKzM2OCwzMSBAQAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCmRpZmYgLS1naXQgYS9hcHBzL3NubXBuZXRzdGF0L2lmLmMgYi9hcHBzL3NubXBuZXRzdGF0L2lmLmMKaW5kZXggNmE4YTUxNS4uNDNlNTAyZCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9pZi5jCisrKyBiL2FwcHMvc25tcG5ldHN0YXQvaWYuYwpAQCAtNDksOCArNDksMTIgQEAKICNpZiBIQVZFX05FVF9JRl9ICiAjaW5jbHVkZSA8bmV0L2lmLmg+CiAjZW5kaWYKLSNkZWZpbmUgX19VU0VfWE9QRU4KLSNkZWZpbmUgX19VU0VfWE9QRU5fRVhURU5ERUQKKyNpZm5kZWYgX1hPUEVOX1NPVVJDRQorI2RlZmluZSBfWE9QRU5fU09VUkNFIDEKKyNlbmRpZgorI2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgMQorI2VuZGlmCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKICNpbmNsdWRlICJtYWluLmgiCmRpZmYgLS1naXQgYS9hcHBzL3NubXBuZXRzdGF0L2luZXQuYyBiL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jCmluZGV4IDdkYzNmZjEuLmE2OWZiNWIgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jCisrKyBiL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jCkBAIC0xMDYsMjAgKzEwNiw2NSBAQAogfTsKICNkZWZpbmUgVENQX05TVEFURVMgMTEKIAotdm9pZAotdGNwcHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQorc3RhdGljIHZvaWQKK3RjcHByb3RvcHJpbnRfbGluZShjb25zdCBjaGFyICpuYW1lLCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZwLCBpbnQgKmZpcnN0KQogewotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCAqdnA7Ci0gICAgb2lkICAgIHRjcENvbm5TdGF0ZV9vaWRbXSA9IHsgMSwzLDYsMSwyLDEsNiwxMywxLDEgfTsKLSAgICBzaXplX3QgdGNwQ29ublN0YXRlX2xlbiAgID0gT0lEX0xFTkdUSCggdGNwQ29ublN0YXRlX29pZCApOwogICAgIGludCAgICBzdGF0ZSwgd2lkdGg7CisgICAgY2hhciAgKmNwOwogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IGluX2FkZHIgYWRkcjsKICAgICAgICAgY2hhciAgICAgIGRhdGFbNF07CiAgICAgfSB0bXBBZGRyOwogICAgIG9pZCAgICBsb2NhbFBvcnQsIHJlbW90ZVBvcnQ7CiAgICAgc3RydWN0IGluX2FkZHIgbG9jYWxBZGRyLCByZW1vdGVBZGRyOwotICAgIGNoYXIgICpjcDsKKworCXN0YXRlID0gKnZwLT52YWwuaW50ZWdlcjsKKwlpZiAoIWFmbGFnICYmIHN0YXRlID09IE1JQl9UQ1BDT05OU1RBVEVfTElTVEVOKSB7CisJCXJldHVybjsKKwl9CisKKwlpZiAoKmZpcnN0KSB7CisJCXByaW50ZigiQWN0aXZlIEludGVybmV0ICglcykgQ29ubmVjdGlvbnMiLCBuYW1lKTsKKwkJaWYgKGFmbGFnKQorCQkJcHJpbnRmKCIgKGluY2x1ZGluZyBzZXJ2ZXJzKSIpOworCQlwdXRjaGFyKCdcbicpOworCQl3aWR0aCA9IEFmbGFnID8gMTggOiAyMjsKKwkJcHJpbnRmKCIlLTUuNXMgJSouKnMgJSouKnMgJXNcbiIsCisJCQkgICAiUHJvdG8iLCAtd2lkdGgsIHdpZHRoLCAiTG9jYWwgQWRkcmVzcyIsCisJCQkJCQktd2lkdGgsIHdpZHRoLCAiUmVtb3RlIEFkZHJlc3MiLCAiKHN0YXRlKSIpOworCQkqZmlyc3QgPSAwOworCX0KKwkKKwkvKiBFeHRyYWN0IHRoZSBsb2NhbC9yZW1vdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5kZXggdmFsdWVzICovCisJY3AgPSB0bXBBZGRyLmRhdGE7CisJY3BbMF0gPSB2cC0+bmFtZVsgMTAgXSAmIDB4ZmY7CisJY3BbMV0gPSB2cC0+bmFtZVsgMTEgXSAmIDB4ZmY7CisJY3BbMl0gPSB2cC0+bmFtZVsgMTIgXSAmIDB4ZmY7CisJY3BbM10gPSB2cC0+bmFtZVsgMTMgXSAmIDB4ZmY7CisJbG9jYWxBZGRyLnNfYWRkciA9IHRtcEFkZHIuYWRkci5zX2FkZHI7CisJbG9jYWxQb3J0ICAgICAgICA9IG50b2hzKHZwLT5uYW1lWyAxNCBdKTsKKwljcCA9IHRtcEFkZHIuZGF0YTsKKwljcFswXSA9IHZwLT5uYW1lWyAxNSBdICYgMHhmZjsKKwljcFsxXSA9IHZwLT5uYW1lWyAxNiBdICYgMHhmZjsKKwljcFsyXSA9IHZwLT5uYW1lWyAxNyBdICYgMHhmZjsKKwljcFszXSA9IHZwLT5uYW1lWyAxOCBdICYgMHhmZjsKKwlyZW1vdGVBZGRyLnNfYWRkciA9IHRtcEFkZHIuYWRkci5zX2FkZHI7CisJcmVtb3RlUG9ydCAgICAgICAgPSBudG9ocyh2cC0+bmFtZVsgMTkgXSk7CisKKwlwcmludGYoIiUtNS41cyIsIG5hbWUpOworCWluZXRwcmludCgmbG9jYWxBZGRyLCAgbG9jYWxQb3J0LCAgbmFtZSwgMSk7CisJaW5ldHByaW50KCZyZW1vdGVBZGRyLCByZW1vdGVQb3J0LCBuYW1lLCAwKTsKKwlpZiAoc3RhdGUgPCAxIHx8IHN0YXRlID4gVENQX05TVEFURVMpIHsKKwkJcHJpbnRmKCIlZFxuIiwgc3RhdGUgKTsKKwl9IGVsc2UgeworCQlwcmludGYoIiVzXG4iLCB0Y3BzdGF0ZXNbc3RhdGVdKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCit0Y3Bwcm90b3ByX2dldChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJvb3QsIHNpemVfdCByb290X2xlbikKK3sKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwgKnZwOwogICAgIGludCAgICBmaXJzdCA9IDE7CiAKICAgICAvKgpAQCAtMTI3LDcgKzE3Miw3IEBACiAgICAgICogICB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLgogICAgICAqLwogICAgIHZhciA9IE5VTEw7Ci0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSggJnZhciwgdGNwQ29ublN0YXRlX29pZCwgdGNwQ29ublN0YXRlX2xlbiwKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmFyLCByb290LCByb290X2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX05VTEwsIE5VTEwsICAwKTsKICAgICBpZiAoIXZhcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTM1LDQ1ICsxODAsNyBAQAogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHZwID0gdmFyOyB2cCA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlKSB7Ci0gICAgICAgIHN0YXRlID0gKnZwLT52YWwuaW50ZWdlcjsKLSAgICAgICAgaWYgKCFhZmxhZyAmJiBzdGF0ZSA9PSBNSUJfVENQQ09OTlNUQVRFX0xJU1RFTikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmaXJzdCkgewotICAgICAgICAgICAgcHJpbnRmKCJBY3RpdmUgSW50ZXJuZXQgKCVzKSBDb25uZWN0aW9ucyIsIG5hbWUpOwotICAgICAgICAgICAgaWYgKGFmbGFnKQotICAgICAgICAgICAgICAgIHByaW50ZigiIChpbmNsdWRpbmcgc2VydmVycykiKTsKLSAgICAgICAgICAgIHB1dGNoYXIoJ1xuJyk7Ci0gICAgICAgICAgICB3aWR0aCA9IEFmbGFnID8gMTggOiAyMjsKLSAgICAgICAgICAgIHByaW50ZigiJS01LjVzICUqLipzICUqLipzICVzXG4iLAotICAgICAgICAgICAgICAgICAgICJQcm90byIsIC13aWR0aCwgd2lkdGgsICJMb2NhbCBBZGRyZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAtd2lkdGgsIHdpZHRoLCAiUmVtb3RlIEFkZHJlc3MiLCAiKHN0YXRlKSIpOwotICAgICAgICAgICAgZmlyc3Q9MDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLyogRXh0cmFjdCB0aGUgbG9jYWwvcmVtb3RlIGluZm9ybWF0aW9uIGZyb20gdGhlIGluZGV4IHZhbHVlcyAqLwotICAgICAgICBjcCA9IHRtcEFkZHIuZGF0YTsKLSAgICAgICAgY3BbMF0gPSB2cC0+bmFtZVsgMTAgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzFdID0gdnAtPm5hbWVbIDExIF0gJiAweGZmOwotICAgICAgICBjcFsyXSA9IHZwLT5uYW1lWyAxMiBdICYgMHhmZjsKLSAgICAgICAgY3BbM10gPSB2cC0+bmFtZVsgMTMgXSAmIDB4ZmY7Ci0gICAgICAgIGxvY2FsQWRkci5zX2FkZHIgPSB0bXBBZGRyLmFkZHIuc19hZGRyOwotICAgICAgICBsb2NhbFBvcnQgICAgICAgID0gbnRvaHMoKHVfc2hvcnQpKHZwLT5uYW1lWyAxNCBdKSk7Ci0gICAgICAgIGNwID0gdG1wQWRkci5kYXRhOwotICAgICAgICBjcFswXSA9IHZwLT5uYW1lWyAxNSBdICYgMHhmZjsKLSAgICAgICAgY3BbMV0gPSB2cC0+bmFtZVsgMTYgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzJdID0gdnAtPm5hbWVbIDE3IF0gJiAweGZmOwotICAgICAgICBjcFszXSA9IHZwLT5uYW1lWyAxOCBdICYgMHhmZjsKLSAgICAgICAgcmVtb3RlQWRkci5zX2FkZHIgPSB0bXBBZGRyLmFkZHIuc19hZGRyOwotICAgICAgICByZW1vdGVQb3J0ICAgICAgICA9IG50b2hzKCh1X3Nob3J0KSh2cC0+bmFtZVsgMTkgXSkpOwotCi0gICAgICAgIHByaW50ZigiJS01LjVzIiwgbmFtZSk7Ci0gICAgICAgIGluZXRwcmludCgmbG9jYWxBZGRyLCAgbG9jYWxQb3J0LCAgbmFtZSwgMSk7Ci0gICAgICAgIGluZXRwcmludCgmcmVtb3RlQWRkciwgcmVtb3RlUG9ydCwgbmFtZSwgMCk7Ci0gICAgICAgIGlmICggc3RhdGUgPCAxIHx8IHN0YXRlID4gVENQX05TVEFURVMgKQotICAgICAgICAgICAgcHJpbnRmKCIlZFxuIiwgc3RhdGUgKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgdGNwc3RhdGVzWyBzdGF0ZSBdKTsKKyAgICAgICAgdGNwcHJvdG9wcmludF9saW5lKG5hbWUsIHZwLCAmZmlyc3QpOwogICAgIH0KICAgICBzbm1wX2ZyZWVfdmFyYmluZCggdmFyICk7CiB9CkBAIC0yMzAsNiArMjM3LDExMCBAQAogICAgIHNubXBfZnJlZV92YXJiaW5kKCB2YXIgKTsKIH0KIAordm9pZAordGNwcHJvdG9wcl9idWxrZ2V0KGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcm9vdCwgc2l6ZV90IHJvb3RfbGVuKQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdnA7CisJbmV0c25tcF9wZHUgICAgKnBkdSwgKnJlc3BvbnNlOworICAgIG9pZCAgICAgICAgICAgICB0Y3BDb25uU3RhdGVfb2lkW01BWF9PSURfTEVOXTsKKwlzaXplX3QgICAgICAgICAgdGNwQ29ublN0YXRlX2xlbjsKKyAgICBpbnQgICAgZmlyc3QgPSAxOworICAgIGludCAgICBydW5uaW5nID0gMTsKKyAgICBpbnQgICAgc3RhdHVzOworCisJLyoKKyAgICAgKiBzZXR1cCBpbml0aWFsIG9iamVjdCBuYW1lCisgICAgICovCisJbWVtbW92ZSh0Y3BDb25uU3RhdGVfb2lkLCByb290LCBzaXplb2Yob2lkKSAqIHJvb3RfbGVuKTsKKwl0Y3BDb25uU3RhdGVfbGVuID0gcm9vdF9sZW47CisKKyAgICAvKgorICAgICAqIFdhbGtpbmcgdGhlIHRjcENvbm5TdGF0ZSBjb2x1bW4gd2lsbCBwcm92aWRlIGFsbAorICAgICAqICAgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKwl3aGlsZSAocnVubmluZykgeworICAgICAgICAvKgorICAgICAgICAgKiBjcmVhdGUgUERVIGZvciBHRVRCVUxLIHJlcXVlc3QgYW5kIGFkZCBvYmplY3QgbmFtZSB0byByZXF1ZXN0CisgICAgICAgICAqLworICAgICAgICBwZHUgPSBzbm1wX3BkdV9jcmVhdGUoU05NUF9NU0dfR0VUQlVMSyk7CisgICAgICAgIHBkdS0+bm9uX3JlcGVhdGVycyA9IDA7CisgICAgICAgIHBkdS0+bWF4X3JlcGV0aXRpb25zID0gbWF4X2dldGJ1bGs7ICAgIC8qIGZpbGwgdGhlIHBhY2tldCAqLworICAgICAgICBzbm1wX2FkZF9udWxsX3ZhcihwZHUsIHRjcENvbm5TdGF0ZV9vaWQsIHRjcENvbm5TdGF0ZV9sZW4pOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvIHRoZSByZXF1ZXN0CisgICAgICAgICAqLworICAgICAgICBzdGF0dXMgPSBzbm1wX3N5bmNoX3Jlc3BvbnNlKHNzLCBwZHUsICZyZXNwb25zZSk7CisgICAgICAgIGlmIChzdGF0dXMgPT0gU1RBVF9TVUNDRVNTKSB7CisgICAgICAgICAgICBpZiAocmVzcG9uc2UtPmVycnN0YXQgPT0gU05NUF9FUlJfTk9FUlJPUikgeworCQkJCWZvciAodnAgPSByZXNwb25zZS0+dmFyaWFibGVzOyB2cCA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgodnAtPm5hbWVfbGVuZ3RoIDwgcm9vdF9sZW4pIHx8CisJCQkJCQkJKG1lbWNtcChyb290LCB2cC0+bmFtZSwgc2l6ZW9mKG9pZCkgKiByb290X2xlbikgIT0gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBub3QgcGFydCBvZiB0aGlzIHN1YnRyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisJCQkJCXRjcHByb3RvcHJpbnRfbGluZShuYW1lLCB2cCwgJmZpcnN0KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoKHZwLT50eXBlICE9IFNOTVBfRU5ET0ZNSUJWSUVXKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKHZwLT50eXBlICE9IFNOTVBfTk9TVUNIT0JKRUNUKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKHZwLT50eXBlICE9IFNOTVBfTk9TVUNISU5TVEFOQ0UpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICogQ2hlY2sgaWYgbGFzdCB2YXJpYWJsZSwgYW5kIGlmIHNvLCBzYXZlIGZvciBuZXh0IHJlcXVlc3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2cC0+bmV4dF92YXJpYWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtbW92ZSh0Y3BDb25uU3RhdGVfb2lkLCB2cC0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwLT5uYW1lX2xlbmd0aCAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BDb25uU3RhdGVfbGVuID0gdnAtPm5hbWVfbGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGFuIGV4Y2VwdGlvbiB2YWx1ZSwgc28gc3RvcAorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorCQkJCX0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBlcnJvciBpbiByZXNwb25zZSwgcHJpbnQgaXQKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBydW5uaW5nID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT0gU1RBVF9USU1FT1VUKSB7CisgICAgICAgICAgICBydW5uaW5nID0gMDsKKyAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgLyogc3RhdHVzID09IFNUQVRfRVJST1IgKi8KKyAgICAgICAgICAgIHJ1bm5pbmcgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3BvbnNlKSB7CisgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHJlc3BvbnNlKTsKKwkJfQorCX0KK30KKwordm9pZAordGNwcHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQoreworICAgIG9pZCAgICB0Y3BDb25uU3RhdGVfb2lkW10gPSB7IDEsMyw2LDEsMiwxLDYsMTMsMSwxIH07CisgICAgc2l6ZV90IHRjcENvbm5TdGF0ZV9sZW4gICA9IE9JRF9MRU5HVEgoIHRjcENvbm5TdGF0ZV9vaWQgKTsKKwlpbnQgICAgdXNlX2dldGJ1bGsgPSAxOworCisjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TTk1QVjEKKyAgICBpZiAoc3MtPnZlcnNpb24gPT0gU05NUF9WRVJTSU9OXzEpIHsKKyAgICAgICAgdXNlX2dldGJ1bGsgPSAwOworCX0KKyNlbmRpZgorCisJaWYgKHVzZV9nZXRidWxrKSB7CisJCXRjcHByb3RvcHJfYnVsa2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKKwl9IGVsc2UgeworCQl0Y3Bwcm90b3ByX2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKKwl9Cit9CisKIAogCS8qKioqKioqKioqKioqKioqKioqKioKIAkgKgpAQCAtNDQ5LDcgKzU2MCw3IEBACiB2b2lkCiBpbmV0cHJpbnQoc3RydWN0IGluX2FkZHIgKmluLCBpbnQgcG9ydCwgY29uc3QgY2hhciAqcHJvdG8sIGludCBsb2NhbCkKIHsKLQlzdHJ1Y3Qgc2VydmVudCAqc3AgPSAwOworCXN0cnVjdCBzZXJ2ZW50ICpzcCA9IE5VTEw7CiAJY2hhciBsaW5lWzgwXSwgKmNwOwogCWludCB3aWR0aDsKIApkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jCmluZGV4IDc5OWM5NjEuLjQ1MzVjMGEgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcG5ldHN0YXQvaW5ldDYuYworKysgYi9hcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMKQEAgLTQxMyw3ICs0MTMsNyBAQAogCQkocmV0KSA9IGdldHNlcnZieXBvcnQoKGludCkocG9ydCksIChwcm90bykpOyBcCiAJfSB3aGlsZSAoMCkKIAotCXN0cnVjdCBzZXJ2ZW50ICpzcCA9IDA7CisJc3RydWN0IHNlcnZlbnQgKnNwID0gTlVMTDsKIAljaGFyIGxpbmVbODBdLCAqY3A7CiAJaW50IHdpZHRoOwogCWludCBsZW4gPSBzaXplb2YgbGluZTsKQEAgLTQ3MCw3ICs0NzAsNyBAQAogCQkJZG9tYWluWzBdID0gJ1wwJzsKIAl9CiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgotCWNwID0gMDsKKwljcCA9IE5VTEw7CiAJaWYgKCFuZmxhZyAmJiAhSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoaW42cCkpIHsKIAkJaHAgPSBnZXRob3N0YnlhZGRyKChjb25zdCBjaGFyICopaW42cCwgc2l6ZW9mKCppbjZwKSwgQUZfSU5FVDYpOwogCQlpZiAoaHApIHsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvbWFpbi5jIGIvYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMKaW5kZXggOTQ3YzAyYi4uYWMyYjA0ZiAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMKQEAgLTc1LDkgKzc1LDExIEBACiBpbnQJdGZsYWc7CQkvKiBzaG93IGkvZiB3YXRjaGRvZyB0aW1lcnMgKi8KIGludAl2ZmxhZzsJCS8qIGJlIHZlcmJvc2UgKi8KIAorCiBpbnQJaW50ZXJ2YWw7CS8qIHJlcGVhdCBpbnRlcnZhbCBmb3IgaS9mIHN0YXRzICovCiBjaGFyCSppbnRyZmFjZTsJLyogZGVzaXJlZCBpL2YgZm9yIHN0YXRzLCBvciBOVUxMIGZvciBhbGwgaS9mcyAqLwogaW50CWFmOwkJLyogYWRkcmVzcyBmYW1pbHkgKi8KK2ludCAgICAgbWF4X2dldGJ1bGsgPSAzMjsgIC8qIHNwZWNpZmllcyB0aGUgbWF4LXJlcGVhdGVycyB2YWx1ZSB0byB1c2Ugd2l0aCBHRVRCVUxLIHJlcXVlc3RzICovCiAKIGNoYXIgICAgKnByb2duYW1lID0gTlVMTDsKIApAQCAtODUsMzAgKzg3LDMyIEBACiAgICAgICogc3RydWN0IG5saXN0IG5sW10gLSBPbWl0dGVkCiAgICAgICovCiAKK3R5cGVkZWYgdm9pZCAoc3RyaW5nZnVuKShjb25zdCBjaGFyKik7CisKIHN0cnVjdCBwcm90b3ggewogICAgICAgICAvKiBwcl9pbmRleC9wcl9zaW5kZXggLSBPbWl0dGVkICovIAotCWludAlwcl93YW50ZWQ7CQkJLyogMSBpZiB3YW50ZWQsIDAgb3RoZXJ3aXNlICovCi0Jdm9pZAkoKnByX2NibG9ja3MpKGNvbnN0IGNoYXIgKik7CS8qIGNvbnRyb2wgYmxvY2tzIHByaW50aW5nIHJvdXRpbmUgKi8KLQl2b2lkCSgqcHJfc3RhdHMpKGNvbnN0IGNoYXIgKik7CS8qIHN0YXRpc3RpY3MgcHJpbnRpbmcgcm91dGluZSAqLwotICBjb25zdCBjaGFyCSpwcl9uYW1lOwkJCS8qIHdlbGwta25vd24gbmFtZSAqLworCWludAkJcHJfd2FudGVkOwkvKiAxIGlmIHdhbnRlZCwgMCBvdGhlcndpc2UgKi8KKwlzdHJpbmdmdW4JKnByX2NibG9ja3M7CS8qIGNvbnRyb2wgYmxvY2tzIHByaW50aW5nIHJvdXRpbmUgKi8KKwlzdHJpbmdmdW4JKnByX3N0YXRzOwkvKiBzdGF0aXN0aWNzIHByaW50aW5nIHJvdXRpbmUgKi8KKwljb25zdCBjaGFyCSpwcl9uYW1lOwkvKiB3ZWxsLWtub3duIG5hbWUgKi8KIH0gcHJvdG94W10gPSB7CiAJeyAxLAl0Y3Bwcm90b3ByLAl0Y3Bfc3RhdHMsCSJ0Y3AiIH0sCQogCXsgMSwJdWRwcHJvdG9wciwJdWRwX3N0YXRzLAkidWRwIiB9LAkKIAotCXsgMSwJMCwJaXBfc3RhdHMsCSJpcCIgfSwJCS8qIHByb3RvcHIgT21pdHRlZCAqLwotCXsgMSwJMCwJaWNtcF9zdGF0cywJImljbXAiIH0sCQorCXsgMSwJKHN0cmluZ2Z1biopMCwJaXBfc3RhdHMsCSJpcCIgfSwJLyogcHJvdG9wciBPbWl0dGVkICovCisJeyAxLAkoc3RyaW5nZnVuKikwLAlpY21wX3N0YXRzLAkiaWNtcCIgfSwKIAkvKiBpZ21wL2FoL2VzcC9pcGVuY2FwL2V0aGVyaXAvaXBjb21wL2NhcnAvcGZzeW5jL3BpbSAtIE9taXR0ZWQgKi8KLQl7IDAsCTAsCTAsCQkwIH0KKwl7IDAsCShzdHJpbmdmdW4qKTAsCShzdHJpbmdmdW4qKTAsCU5VTEwgfQogfTsKIAogc3RydWN0IHByb3RveCBpcDZwcm90b3hbXSA9IHsKLQl7IDEsCXRjcDZwcm90b3ByLAkwLAkidGNwNiIgfSwKLQl7IDEsCXVkcDZwcm90b3ByLAkwLAkidWRwNiIgfSwJCisJeyAxLAl0Y3A2cHJvdG9wciwJKHN0cmluZ2Z1biopMCwJInRjcDYiIH0sCisJeyAxLAl1ZHA2cHJvdG9wciwJKHN0cmluZ2Z1biopMCwJInVkcDYiIH0sCiAKLQl7IDEsCTAsCWlwNl9zdGF0cywJImlwNiIgfSwJLyogaXA2cHJvdG9wciBPbWl0dGVkICovCi0JeyAxLAkwLAlpY21wNl9zdGF0cywJImljbXA2IiB9LAkKKwl7IDEsCShzdHJpbmdmdW4qKTAsCWlwNl9zdGF0cywJImlwNiIgfSwvKiBpcDZwcm90b3ByIE9taXR0ZWQgKi8KKwl7IDEsCShzdHJpbmdmdW4qKTAsCWljbXA2X3N0YXRzLAkiaWNtcDYiIH0sCiAJLyogcGltNi9yaXA2IC0gT21pdHRlZCAqLwotCXsgMCwJMCwJMCwJCTAgfQorCXsgMCwJKHN0cmluZ2Z1biopMCwJKHN0cmluZ2Z1biopMCwJTlVMTCB9CiB9OwogCiAJLyoge2lweCxucyxhdGFsa31wcm90b3ggT21pdHRlZCAqLwpAQCAtMjMxLDYgKzIzNSwyNCBAQAogCQljYXNlICdyJzoKIAkJCXJmbGFnID0gMTsKIAkJCWJyZWFrOworCQljYXNlICdSJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpbmQgPCBhcmdjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3Zbb3B0aW5kXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ2V0YnVsayA9IGF0b2koYXJndltvcHRpbmRdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1heF9nZXRidWxrID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCAtQ1Igb3B0aW9uOiAlc1xuIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Zbb3B0aW5kXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQmFkIC1DUiBvcHRpb246IG5vIGFyZ3VtZW50IGdpdmVuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW5kKys7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAkJY2FzZSAnUyc6CSAgICAgLyogRnJlZUJTRDoKIAkJCQkJTmV0QlNEOiAgU2VtaS1udW1lcmljIGRpc3BsYXkKIAkJCQkJT3BlbkJTRDogU2hvdyByb3V0ZSBzb3VyY2Ugc2VsZWN0b3IgKi8KQEAgLTM5Niw3ICs0MTgsNyBAQAogCQkJZm9yICh0cCA9IHByb3RveDsgdHAtPnByX25hbWU7IHRwKyspCiAJCQkJaWYgKHN0cmNtcCh0cC0+cHJfbmFtZSwgcC0+cF9uYW1lKSA9PSAwKQogCQkJCQlicmVhazsKLQkJCWlmICh0cC0+cHJfbmFtZSA9PSAwIHx8IHRwLT5wcl93YW50ZWQgPT0gMCkKKwkJCWlmICh0cC0+cHJfbmFtZSA9PSBOVUxMIHx8IHRwLT5wcl93YW50ZWQgPT0gMCkKIAkJCQljb250aW51ZTsKIAkJCXByaW50cHJvdG8odHAsIHAtPnBfbmFtZSk7CiAJCX0KZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oIGIvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKaW5kZXggMjc2MjU2OC4uMzU1YzhiMiAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKQEAgLTYyLDYgKzYyLDcgQEAKIGV4dGVybiBjaGFyCSppbnRyZmFjZTsJLyogZGVzaXJlZCBpL2YgZm9yIHN0YXRzLCBvciBOVUxMIGZvciBhbGwgaS9mcyAqLwogCiBleHRlcm4gaW50CWFmOwkJLyogYWRkcmVzcyBmYW1pbHkgKi8KK2V4dGVybiBpbnQgIG1heF9nZXRidWxrOyAgLyogc3BlY2lmaWVzIHRoZSBtYXgtcmVwZWF0ZXJzIHZhbHVlIHRvIHVzZSB3aXRoIEdFVEJVTEsgcmVxdWVzdHMgKi8KIAogZXh0ZXJuCWNoYXIgKl9fcHJvZ25hbWU7IC8qIHByb2dyYW0gbmFtZSwgZnJvbSBjcnQwLm8gKi8KIApkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdGFibGUuYyBiL2FwcHMvc25tcHRhYmxlLmMKaW5kZXggMzk3MGU5Ny4uMTQyMmVjZSAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdGFibGUuYworKysgYi9hcHBzL3NubXB0YWJsZS5jCkBAIC0yNTYsNyArMjU2LDggQEAKICAgICBuZXRzbm1wX3Nlc3Npb24gc2Vzc2lvbiwgKnNzOwogICAgIGludCAgICAgICAgICAgIHRvdGFsX2VudHJpZXMgPSAwOwogCi0gICAgc2V0dmJ1ZihzdGRvdXQsIE5VTEwsIF9JT0xCRiwgMTAyNCk7CisgICAgbmV0c25tcF9zZXRfbGluZV9idWZmZXJpbmcoc3Rkb3V0KTsKKwogICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1FVSUNLX1BSSU5ULCAxKTsKIApkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdGVzdC5jIGIvYXBwcy9zbm1wdGVzdC5jCmluZGV4IDQ5OWJhY2YuLjI4ZjkyNTQgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRlc3QuYworKysgYi9hcHBzL3NubXB0ZXN0LmMKQEAgLTEyNyw3ICsxMjcsNyBAQAogICAgIH0KIAogICAgIHZhcmNvdW50ID0gMDsKLSAgICB3aGlsZSAoMSkgeworICAgIGZvcig7OykgewogICAgICAgICB2YXJzID0gTlVMTDsKICAgICAgICAgZm9yIChyZXQgPSAxOyByZXQgIT0gMDspIHsKICAgICAgICAgICAgIHZwID0gKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKQpAQCAtMjc3LDggKzI3Nyw3IEBACiAgICAgICAgIHZhcmNvdW50ID0gMDsKICAgICAgICAgbm9uUmVwZWF0ZXJzID0gLTE7CiAgICAgfQotICAgIFNPQ0tfQ0xFQU5VUDsKLSAgICByZXR1cm4gMDsKKyAgICAvKiBOT1RSRUFDSEVEICovCiB9CiAKIGludApAQCAtMjg2LDggKzI4NSw3IEBACiB7CiAgICAgY2hhciAgICAgICAgICAgIGJ1ZlsyNTZdOwogICAgIHNpemVfdCAgICAgICAgICB2YWxfbGVuOwotICAgIHVfY2hhciAgICAgICAgICB2YWx1ZVsyNTZdLCBjaDsKLSAgICBvaWQgICAgICAgICAgICAgbmFtZVtNQVhfT0lEX0xFTl07CisgICAgdV9jaGFyICAgICAgICAgIGNoOwogCiAgICAgcHJpbnRmKCJWYXJpYWJsZTogIik7CiAgICAgZmZsdXNoKHN0ZG91dCk7CkBAIC0zNjgsMTMgKzM2NiwxNSBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdnAtPm5hbWVfbGVuZ3RoID0gTUFYX09JRF9MRU47Ci0gICAgaWYgKCFzbm1wX3BhcnNlX29pZChidWYsIG5hbWUsICZ2cC0+bmFtZV9sZW5ndGgpKSB7Ci0gICAgICAgIHNubXBfcGVycm9yKGJ1Zik7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICB7CisJb2lkICAgICBuYW1lW01BWF9PSURfTEVOXTsKKwl2cC0+bmFtZV9sZW5ndGggPSBNQVhfT0lEX0xFTjsKKwlpZiAoIXNubXBfcGFyc2Vfb2lkKGJ1ZiwgbmFtZSwgJnZwLT5uYW1lX2xlbmd0aCkpIHsKKwkgICAgc25tcF9wZXJyb3IoYnVmKTsKKwkgICAgcmV0dXJuIC0xOworCX0KKwl2cC0+bmFtZSA9IHNubXBfZHVwbGljYXRlX29iamlkKG5hbWUsIHZwLT5uYW1lX2xlbmd0aCk7CiAgICAgfQotICAgIHZwLT5uYW1lID0gKG9pZCAqKSBtYWxsb2ModnAtPm5hbWVfbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwotICAgIG1lbW1vdmUodnAtPm5hbWUsIG5hbWUsIHZwLT5uYW1lX2xlbmd0aCAqIHNpemVvZihvaWQpKTsKIAogICAgIGlmIChjb21tYW5kID09IFNOTVBfTVNHX1NFVCB8fCBjb21tYW5kID09IFNOTVBfTVNHX0lORk9STQogICAgICAgICB8fCBjb21tYW5kID09IFNOTVBfTVNHX1RSQVAyKSB7CkBAIC00ODEsMTQgKzQ4MSwxNiBAQAogICAgICAgICBjYXNlIEFTTl9PQkpFQ1RfSUQ6CiAgICAgICAgICAgICBpZiAoJ1xuJyA9PSBidWZbc3RybGVuKGJ1ZikgLSAxXSkKICAgICAgICAgICAgICAgICBidWZbc3RybGVuKGJ1ZikgLSAxXSA9ICdcMCc7Ci0gICAgICAgICAgICB2cC0+dmFsX2xlbiA9IE1BWF9PSURfTEVOOzsKLSAgICAgICAgICAgIGlmICgwID09IHJlYWRfb2JqaWQoYnVmLCAob2lkICopIHZhbHVlLCAmdnAtPnZhbF9sZW4pKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJVbnJlY29nbmlzZWQgT0lEIHZhbHVlXG4iKTsKLSAgICAgICAgICAgICAgICBnb3RvIGdldFZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdnAtPnZhbF9sZW4gKj0gc2l6ZW9mKG9pZCk7Ci0gICAgICAgICAgICB2cC0+dmFsLm9iamlkID0gKG9pZCAqKSBtYWxsb2ModnAtPnZhbF9sZW4pOwotICAgICAgICAgICAgbWVtbW92ZSh2cC0+dmFsLm9iamlkLCB2YWx1ZSwgdnAtPnZhbF9sZW4pOworCSAgICBlbHNlIHsKKwkJb2lkIHZhbHVlW01BWF9PSURfTEVOXTsKKwkJdnAtPnZhbF9sZW4gPSBNQVhfT0lEX0xFTjsKKwkJaWYgKDAgPT0gcmVhZF9vYmppZChidWYsIHZhbHVlLCAmdnAtPnZhbF9sZW4pKSB7CisJCSAgICBwcmludGYoIlVucmVjb2duaXNlZCBPSUQgdmFsdWVcbiIpOworCQkgICAgZ290byBnZXRWYWx1ZTsKKwkJfQorCQl2cC0+dmFsLm9iamlkID0gc25tcF9kdXBsaWNhdGVfb2JqaWQodmFsdWUsIHZwLT52YWxfbGVuKTsKKwkJdnAtPnZhbF9sZW4gKj0gc2l6ZW9mKG9pZCk7CisJICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFTTl9USU1FVElDS1M6CiAgICAgICAgICAgICB2cC0+dmFsLmludGVnZXIgPSAobG9uZyAqKSBtYWxsb2Moc2l6ZW9mKGxvbmcpKTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYW5zbGF0ZS5jIGIvYXBwcy9zbm1wdHJhbnNsYXRlLmMKaW5kZXggMWVmOTE5My4uNzUwZDYwZiAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhbnNsYXRlLmMKKysrIGIvYXBwcy9zbm1wdHJhbnNsYXRlLmMKQEAgLTI0MCw2ICsyNDAsNyBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgc25tcF9lbmFibGVfc3RkZXJybG9nKCk7CiAgICAgaW5pdF9zbm1wKCJzbm1wYXBwIik7CiAgICAgaWYgKG9wdGluZCA8IGFyZ2MpCiAgICAgICAgIGN1cnJlbnRfbmFtZSA9IGFyZ3Zbb3B0aW5kXTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXAuYyBiL2FwcHMvc25tcHRyYXAuYwppbmRleCBkMTZkMmZhLi41NTMyMGY4IDEwMDY0NAotLS0gYS9hcHBzL3NubXB0cmFwLmMKKysrIGIvYXBwcy9zbm1wdHJhcC5jCkBAIC0xMDQsMjYgKzEwNCw2IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLWluX2FkZHJfdAotcGFyc2VfYWRkcmVzcyhjaGFyICphZGRyZXNzKQotewotICAgIGluX2FkZHJfdCAgICAgICBhZGRyOwotICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzYWRkcjsKLSAgICBzdHJ1Y3QgaG9zdGVudCAqaHA7Ci0KLSAgICBpZiAoKGFkZHIgPSBpbmV0X2FkZHIoYWRkcmVzcykpICE9IC0xKQotICAgICAgICByZXR1cm4gYWRkcjsKLSAgICBocCA9IGdldGhvc3RieW5hbWUoYWRkcmVzcyk7Ci0gICAgaWYgKGhwID09IE5VTEwpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bmtub3duIGhvc3Q6ICVzXG4iLCBhZGRyZXNzKTsKLSAgICAgICAgZXhpdCgxKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtZW1jcHkoJnNhZGRyLnNpbl9hZGRyLCBocC0+aF9hZGRyLCBocC0+aF9sZW5ndGgpOwotICAgICAgICByZXR1cm4gc2FkZHIuc2luX2FkZHIuc19hZGRyOwotICAgIH0KLQotfQotCiBzdGF0aWMgdm9pZAogb3B0UHJvYyhpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsIGludCBvcHQpCiB7CkBAIC0yOTgsNyArMjc4LDExIEBACiAgICAgICAgIH0KICAgICAgICAgYWdlbnQgPSBhcmd2W2FyZ107CiAgICAgICAgIGlmIChhZ2VudCAhPSBOVUxMICYmIHN0cmxlbihhZ2VudCkgIT0gMCkgewotICAgICAgICAgICAgKnBkdV9pbl9hZGRyX3QgPSBwYXJzZV9hZGRyZXNzKGFnZW50KTsKKyAgICAgICAgICAgIGludCByZXQgPSBuZXRzbm1wX2dldGhvc3RieW5hbWVfdjQoYWdlbnQsIHBkdV9pbl9hZGRyX3QpOworICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVua25vd24gaG9zdDogJXNcbiIsIGFnZW50KTsKKyAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgKnBkdV9pbl9hZGRyX3QgPSBnZXRfbXlhZGRyKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXBkLmMgYi9hcHBzL3NubXB0cmFwZC5jCmluZGV4IGI3YzRjZTQuLjRlZTYxNWQgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYXBkLmMKKysrIGIvYXBwcy9zbm1wdHJhcGQuYwpAQCAtMTM5LDIyICsxMzksMjcgQEAKICNkZWZpbmUgRkRfWkVSTyhwKSAgICAgIG1lbXNldCgocCksIDAsIHNpemVvZigqKHApKSkKICNlbmRpZgogCi1jaGFyICAgICAgICAgICAqbG9nZmlsZSA9IDA7Ci1pbnQgICAgICAgICAgICAgU3lzbG9nVHJhcCA9IDA7Ci1pbnQgICAgICAgICAgICAgRXZlbnQgPSAwOwotaW50ICAgICAgICAgICAgIGRyb3BhdXRoID0gMDsKLWludCAgICAgICAgICAgICByZWNvbmZpZyA9IDA7CitjaGFyICAgICAgICAgICAqbG9nZmlsZSA9IE5VTEw7CitleHRlcm4gaW50ICAgICAgU3lzbG9nVHJhcDsKK2V4dGVybiBpbnQgICAgICBkcm9wYXV0aDsKK3N0YXRpYyBpbnQgICAgICByZWNvbmZpZyA9IDA7CiBjaGFyICAgICAgICAgICAgZGRlZmF1bHRfcG9ydFtdID0gInVkcDoxNjIiOwkvKiBEZWZhdWx0IGRlZmF1bHQgcG9ydCAqLwogY2hhciAgICAgICAgICAgKmRlZmF1bHRfcG9ydCA9IGRkZWZhdWx0X3BvcnQ7CiAjaWYgSEFWRV9HRVRQSUQKICAgICBGSUxFICAgICAgICAgICAqUElEOwogICAgIGNoYXIgICAgICAgICAgICpwaWRfZmlsZSA9IE5VTEw7CiAjZW5kaWYKK2V4dGVybiB2b2lkIHBhcnNlX2Zvcm1hdChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSk7CiBjaGFyICAgICAgICAgICAqdHJhcDFfZm10X3N0cl9yZW1lbWJlciA9IE5VTEw7CiBpbnQgICAgICAgICAgICAgZG9mb3JrID0gMTsKIAogZXh0ZXJuIGludCAgICAgIG5ldHNubXBfcnVubmluZzsKIAorI2lmZGVmIE5FVFNOTVBfVVNFX01ZU1FMCitleHRlcm4gaW50ICAgICAgbmV0c25tcF9teXNxbF9pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgICAgIHNubXB0cmFwZF9yZWdpc3Rlcl9zcWxfY29uZmlncyggdm9pZCApOworI2VuZGlmCisKIC8qCiAgKiBUaGVzZSBkZWZpbml0aW9ucyBoYW5kbGUgNC4yIHN5c3RlbXMgd2l0aG91dCBhZGRpdGlvbmFsIHN5c2xvZyBmYWNpbGl0aWVzLgogICovCkBAIC0yMDUsNyArMjEwLDcgQEAKICNkZWZpbmUgU05NUFRSQVBEX1JVTk5JTkcgMQogI2RlZmluZSBTTk1QVFJBUERfU1RPUFBFRCAwCiBpbnQgICAgICAgICAgICAgdHJhcGRfc3RhdHVzID0gU05NUFRSQVBEX1NUT1BQRUQ7Ci0vKiBhcHBfbmFtZV9sb25nIHVzZWQgZm9yIEV2ZW50IExvZyAoc3lzbG9nKSwgU0NNLCByZWdpc3RyeSBldGMgKi8KKy8qIGFwcF9uYW1lX2xvbmcgdXNlZCBmb3IgU0NNLCByZWdpc3RyeSBldGMgKi8KIExQQ1RTVFIgICAgICAgICBhcHBfbmFtZV9sb25nID0gX1QoIk5ldC1TTk1QIFRyYXAgSGFuZGxlciIpOyAgICAgLyogQXBwbGljYXRpb24gTmFtZSAqLwogI2VuZGlmCiAKQEAgLTIxNSwxMCArMjIwLDYgQEAKIAogdm9pZCAgICAgICAgICAgIHRyYXBkX3VwZGF0ZV9jb25maWcodm9pZCk7CiAKLXN0YXRpYyBvaWQgICAgICByaXNpbmdBbGFybVtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAyLCAxLCAxLCAzLCAxIH07Ci1zdGF0aWMgb2lkICAgICAgZmFsbGluZ0FsYXJtW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDIsIDEsIDEsIDMsIDIgfTsKLXN0YXRpYyBvaWQgICAgICB1bmF2YWlsYWJsZUFsYXJtW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDIsIDEsIDEsIDMsIDMgfTsKLQogI2lmZGVmIFdJTjMyU0VSVklDRQogdm9pZCAgICAgICAgICAgIFN0b3BTbm1wVHJhcGQodm9pZCk7CiBpbnQgICAgICAgICAgICAgU25tcFRyYXBkTWFpbihpbnQgYXJnYywgVENIQVIgKiBhcmd2W10pOwpAQCAtMjMxLDcwICsyMzIsNiBAQAogZXh0ZXJuIHZvaWQgICAgICAgICAgICBzdWJhZ2VudF9pbml0KHZvaWQpOwogI2VuZGlmCiAKLXZvaWQKLWV2ZW50X2lucHV0KG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZwKQotewotICAgIGludCAgICAgICAgICAgICBldmVudGlkID0gMDsKLSAgICBvaWQgICAgICAgICAgICAgdmFyaWFibGVbTUFYX09JRF9MRU5dOwotICAgIHVfbG9uZyAgICAgICAgICBkZXN0aXAgPSAwOwotICAgIGludCAgICAgICAgICAgICBzYW1wbGV0eXBlID0gMDsKLSAgICBpbnQgICAgICAgICAgICAgdmFsdWUgPSAwOwotICAgIGludCAgICAgICAgICAgICB0aHJlc2hvbGQgPSAwOwotICAgIGludCAgICAgICAgICAgICBpOwotICAgIGludCAgICAgICAgICAgICBudmFycyA9IDA7Ci0KLSAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QJKnZwMiA9IHZwOwotICAgIAotICAgIG9pZCAgICAgICAgICAgICpvcCA9IE5VTEw7Ci0KLSAgICAvKiBNYWtlIHN1cmUgdGhlcmUgYXJlIDUgdmFyaWFibGVzLiAgT3RoZXJ3aXNlLCBkb24ndCBib3RoZXIgKi8KLSAgICBmb3IgKGk9MTsgaSA8PSA1OyBpKyspIHsKLSAgICAgIHZwMiA9IHZwMi0+bmV4dF92YXJpYWJsZTsKLSAgICAgIGlmICghdnAyKSB7Ci0JbnZhcnMgPSAtMTsKLQlicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKG52YXJzICE9IC0xKQotICAgIHsKLSAgICAgIHZwID0gdnAtPm5leHRfdmFyaWFibGU7ICAgICAvKiBza2lwIHN5c1VwdGltZSAqLwotICAgICAgaWYgKHZwLT52YWxfbGVuICE9IHNpemVvZihyaXNpbmdBbGFybSkgfHwKLQkgICFtZW1jbXAodnAtPnZhbC5vYmppZCwgcmlzaW5nQWxhcm0sIHNpemVvZihyaXNpbmdBbGFybSkpKQotCWV2ZW50aWQgPSAxOwotICAgICAgZWxzZSBpZiAodnAtPnZhbF9sZW4gIT0gc2l6ZW9mKHJpc2luZ0FsYXJtKSB8fAotCSAgIW1lbWNtcCh2cC0+dmFsLm9iamlkLCBmYWxsaW5nQWxhcm0sIHNpemVvZihmYWxsaW5nQWxhcm0pKSkKLQlldmVudGlkID0gMjsKLSAgICAgIGVsc2UgaWYgKHZwLT52YWxfbGVuICE9IHNpemVvZihyaXNpbmdBbGFybSkgfHwKLQkgICFtZW1jbXAodnAtPnZhbC5vYmppZCwgdW5hdmFpbGFibGVBbGFybSwgc2l6ZW9mKHVuYXZhaWxhYmxlQWxhcm0pKSkKLQlldmVudGlkID0gMzsKLSAgICAgIGVsc2UgewotCWZwcmludGYoc3RkZXJyLCAidW5rbm93biBldmVudFxuIik7Ci0JZXZlbnRpZCA9IDA7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIHZwID0gdnAtPm5leHRfdmFyaWFibGU7Ci0gICAgICBtZW1tb3ZlKHZhcmlhYmxlLCB2cC0+dmFsLm9iamlkLCB2cC0+dmFsX2xlbiAqIHNpemVvZihvaWQpKTsKLSAgICAgIG9wID0gdnAtPm5hbWUgKyAyMjsKLSAgICAgIGRlc3RpcCA9IDA7Ci0gICAgICBkZXN0aXAgfD0gKCpvcCsrKSA8PCAyNDsKLSAgICAgIGRlc3RpcCB8PSAoKm9wKyspIDw8IDE2OwotICAgICAgZGVzdGlwIHw9ICgqb3ArKykgPDwgODsKLSAgICAgIGRlc3RpcCB8PSAqb3ArKzsKLSAgICAgIAotICAgICAgdnAgPSB2cC0+bmV4dF92YXJpYWJsZTsKLSAgICAgIHNhbXBsZXR5cGUgPSAqdnAtPnZhbC5pbnRlZ2VyOwotICAgICAgCi0gICAgICB2cCA9IHZwLT5uZXh0X3ZhcmlhYmxlOwotICAgICAgdmFsdWUgPSAqdnAtPnZhbC5pbnRlZ2VyOwotICAgICAgCi0gICAgICB2cCA9IHZwLT5uZXh0X3ZhcmlhYmxlOwotICAgICAgdGhyZXNob2xkID0gKnZwLT52YWwuaW50ZWdlcjsKLSAgICB9Ci0gICAgcHJpbnRmKCIlZDogMHglMDJsWCAlZCAlZCAlZFxuIiwgZXZlbnRpZCwgZGVzdGlwLCBzYW1wbGV0eXBlLCB2YWx1ZSwKLQl0aHJlc2hvbGQpOwotfQotCiAKIHZvaWQKIHVzYWdlKHZvaWQpCkBAIC0zMTUsOSArMjUyLDcgQEAKICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICIgIC1DXHRcdFx0ZG8gbm90IHJlYWQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlc1xuIik7CiAgICAgZnByaW50ZihzdGRlcnIsICIgIC1kXHRcdFx0ZHVtcCBzZW50IGFuZCByZWNlaXZlZCBTTk1QIHBhY2tldHNcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAtRFtUT0tFTlssLi4uXV1cdFx0dHVybiBvbiBkZWJ1Z2dpbmcgb3V0cHV0XG4iKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICIgIC1lXHRcdFx0cHJpbnQgZXZlbnQgIyAocmlzaW5nL2ZhbGxpbmcgYWxhcm0sIGV0Yy4pXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLURbVE9LRU5bLC4uLl1dXHRcdHR1cm4gb24gZGVidWdnaW5nIG91dHB1dCBmb3IgdGhlIHNwZWNpZmllZCBUT0tFTnNcblx0XHRcdCAgIChBTEwgZ2l2ZXMgZXh0cmVtZWx5IHZlcmJvc2UgZGVidWdnaW5nIG91dHB1dClcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAtZlx0XHRcdGRvIG5vdCBmb3JrIGZyb20gdGhlIHNoZWxsXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICIgIC1GIEZPUk1BVFx0XHR1c2Ugc3BlY2lmaWVkIGZvcm1hdCBmb3IgbG9nZ2luZyB0byBzdGFuZGFyZCBlcnJvclxuIik7CkBAIC0zNjIsMTEgKzI5Nyw2IEBACiAgICAgZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAiICAtTCA8TE9HT1BUUz5cdFx0dG9nZ2xlIG9wdGlvbnMgY29udHJvbGxpbmcgd2hlcmUgdG8gbG9nIHRvXG4iKTsKICAgICBzbm1wX2xvZ19vcHRpb25zX3VzYWdlKCJcdFx0XHQiLCBzdGRlcnIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiXG4gIERlcHJlY2F0ZWQgb3B0aW9uczpcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAtbyBGSUxFXHRcdHVzZSAtTGYgPEZJTEU+IGluc3RlYWRcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAtUFx0XHRcdHVzZSAtZiAtTGUgIGluc3RlYWRcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAtc1x0XHRcdHVzZSAtTHNkIGluc3RlYWRcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAtUyBkfGl8MC03XHRcdHVzZSAtTHMgPGZhY2lsaXR5PiBpbnN0ZWFkXG4iKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTM4NSw2ICszMTUsNyBAQAogICAgIGV4dGVybiBuZXRzbm1wX3Nlc3Npb24gKm1haW5fc2Vzc2lvbjsKICNlbmRpZgogICAgIG5ldHNubXBfcnVubmluZyA9IDA7CisKICNpZmRlZiBXSU4zMlNFUlZJQ0UKICAgICAvKgogICAgICAqIEluIGNhc2Ugb2Ygd2luZG93cywgc2VsZWN0KCkgaW4gcmVjZWl2ZSgpIGZ1bmN0aW9uIHdpbGwgbm90IHJldHVybiAKQEAgLTYxNCwxMyArNTQ1LDYgQEAKIH0KIAogdm9pZAotcGFyc2VfY29uZmlnX3ByaW50RXZlbnROdW1iZXJzKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQotewotICBpZiAobmV0c25tcF9kc19wYXJzZV9ib29sZWFuKGNwdHIpID09IDEpCi0gICAgRXZlbnQrKzsKLX0KLQotdm9pZAogcGFyc2VfY29uZmlnX2lnbm9yZUF1dGhGYWlsdXJlKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewogICBpZiAobmV0c25tcF9kc19wYXJzZV9ib29sZWFuKGNwdHIpID09IDEpCkBAIC02NjYsNyArNTkwLDcgQEAKICAgICBjaGFyICAgICAgICAgICAgb3B0aW9uc1sxMjhdID0gImFBYzpDZEQ6OmVmRjpnOmhISTpMOm06TTpubzpPOlBxc1M6dHU6dng6LToiOwogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc19saXN0ID0gTlVMTCwgKnNzID0gTlVMTDsKICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gTlVMTDsKLSAgICBpbnQgICAgICAgICAgICAgYXJnLCBpID0gMCwgZGVwbXNnID0gMDsKKyAgICBpbnQgICAgICAgICAgICAgYXJnLCBpID0gMDsKICAgICBpbnQgICAgICAgICAgICAgdWlkID0gMCwgZ2lkID0gMDsKICAgICBpbnQgICAgICAgICAgICAgY291bnQsIG51bWZkcywgYmxvY2s7CiAgICAgZmRfc2V0ICAgICAgICAgIHJlYWRmZHMsd3JpdGVmZHMsZXhjZXB0ZmRzOwpAQCAtNjc3LDYgKzYwMSw3IEBACiAjZW5kaWYKICAgICBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKnRyYXBoOwogCisKICNpZm5kZWYgV0lOMzIKICAgICAvKgogICAgICAqIGNsb3NlIGFsbCBub24tc3RhbmRhcmQgZmlsZSBkZXNjcmlwdG9ycyB3ZSBtYXkgaGF2ZQpAQCAtNjkzLDYgKzYxOCw3IEBACiAjaWZkZWYgU0lHSFVQCiAgICAgc2lnbmFsKFNJR0hVUCwgU0lHX0lHTik7ICAgLyogZG8gbm90IHRlcm1pbmF0ZSBvbiBlYXJseSBTSUdIVVAgKi8KICNlbmRpZgorCiAjaWZkZWYgU0lHSU5UCiAgICAgc2lnbmFsKFNJR0lOVCwgdGVybV9oYW5kbGVyKTsKICNlbmRpZgpAQCAtNzAwLDE0ICs2MjYsMTMgQEAKICAgICBzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7ICAgLyogJ0lubGluZScgZmFpbHVyZSBvZiB3YXl3YXJkIHJlYWRlcnMgKi8KICNlbmRpZgogCi0jaWZkZWYgU0lHSFVQCi0gICAgc2lnbmFsKFNJR0hVUCwgU0lHX0lHTik7ICAgLyogZG8gbm90IHRlcm1pbmF0ZSBvbiBlYXJseSBTSUdIVVAgKi8KLSNlbmRpZgotCiAgICAgLyoKICAgICAgKiByZWdpc3RlciBvdXIgY29uZmlndXJhdGlvbiBoYW5kbGVycyBub3cgc28gLUggcHJvcGVybHkgZGlzcGxheXMgdGhlbSAKICAgICAgKi8KICAgICBzbm1wdHJhcGRfcmVnaXN0ZXJfY29uZmlncyggKTsKKyNpZmRlZiBORVRTTk1QX1VTRV9NWVNRTAorICAgIHNubXB0cmFwZF9yZWdpc3Rlcl9zcWxfY29uZmlncyggKTsKKyNlbmRpZgogICAgIGluaXRfdXNtX2NvbmYoICJzbm1wdHJhcGQiICk7CiAgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXB0cmFwZCIsICJzbm1wVHJhcGRBZGRyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZV90cmFwZF9hZGRyZXNzLCBmcmVlX3RyYXBkX2FkZHJlc3MsICJzdHJpbmciKTsKQEAgLTczMSwyMSArNjU2LDEyIEBACiAgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXB0cmFwZCIsICJkb05vdEZvcmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2NvbmZpZ19kb05vdEZvcmssIE5VTEwsICIoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIpOwogCi0gICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXB0cmFwZCIsICJwcmludEV2ZW50TnVtYmVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfY29uZmlnX3ByaW50RXZlbnROdW1iZXJzLCBOVUxMLCAiKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiKTsKLQogICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wdHJhcGQiLCAiaWdub3JlQXV0aEZhaWx1cmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2NvbmZpZ19pZ25vcmVBdXRoRmFpbHVyZSwgTlVMTCwgIigxfHllc3x0cnVlfDB8bm98ZmFsc2UpIik7CiAKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgIm91dHB1dE9wdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfY29uZmlnX291dHB1dE9wdGlvbiwgTlVMTCwgInN0cmluZyIpOwogCi0jaWZkZWYgV0lOMzIKLSAgICBzZXR2YnVmKHN0ZG91dCwgTlVMTCwgX0lPTkJGLCBCVUZTSVopOwotI2Vsc2UKLSAgICBzZXR2YnVmKHN0ZG91dCwgTlVMTCwgX0lPTEJGLCBCVUZTSVopOwotI2VuZGlmCi0KICAgICAvKgogICAgICAqIEFkZCBzb21lIG9wdGlvbnMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLiAgCiAgICAgICovCkBAIC04MTEsMTcgKzcyNywyNSBAQAogICAgICAgICAgICAgc25tcF9zZXRfZG9fZGVidWdnaW5nKDEpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSAnZSc6Ci0gICAgICAgICAgICBFdmVudCsrOwotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSAnZic6CiAgICAgICAgICAgICBkb2ZvcmsgPSAwOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnRic6CiAgICAgICAgICAgICBpZiAob3B0YXJnICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyID0gb3B0YXJnOworICAgICAgICAgICAgICAgIGlmICgoIHN0cm5jbXAoIG9wdGFyZywgInByaW50IiwgICA1ICkgPT0gMCApIHx8CisgICAgICAgICAgICAgICAgICAgICggc3RybmNtcCggb3B0YXJnLCAic3lzbG9nIiwgIDYgKSA9PSAwICkgfHwKKyAgICAgICAgICAgICAgICAgICAgKCBzdHJuY21wKCBvcHRhcmcsICJleGVjdXRlIiwgNyApID09IDAgKSkgeworICAgICAgICAgICAgICAgICAgICAvKiBOZXcgc3R5bGU6ICJ0eXBlPWZvcm1hdCIgKi8KKyAgICAgICAgICAgICAgICAgICAgdHJhcDFfZm10X3N0cl9yZW1lbWJlciA9IHN0cmR1cChvcHRhcmcpOworICAgICAgICAgICAgICAgICAgICBjcCA9IHN0cmNociggdHJhcDFfZm10X3N0cl9yZW1lbWJlciwgJz0nICk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICpjcCA9ICcgJzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBPbGQgc3R5bGU6IGltcGxpY2l0bHkgInByaW50PWZvcm1hdCIgKi8KKyAgICAgICAgICAgICAgICAgICAgdHJhcDFfZm10X3N0cl9yZW1lbWJlciA9IG1hbGxvYyhzdHJsZW4ob3B0YXJnKSArIDcpOworICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKCB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyLCAicHJpbnQgJXMiLCBvcHRhcmcgKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHVzYWdlKCk7CiAgICAgICAgICAgICAgICAgZXhpdCgxKTsKQEAgLTg2Nyw1MiArNzkxLDggQEAKIAogCWNhc2UgJ1MnOgogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAgICAgICAgICJXYXJuaW5nOiAtUyBvcHRpb24gaXMgZGVwcmVjYXRlZDsgdXNlIC1McyA8ZmFjaWxpdHk+IGluc3RlYWRcbiIpOwotICAgICAgICAgICAgZGVwbXNnID0gMTsKLSAgICAgICAgICAgIGlmIChvcHRhcmcgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAoKm9wdGFyZykgewotICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgotICAgICAgICAgICAgICAgIGNhc2UgJ0QnOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19EQUVNT047Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgICAgIGNhc2UgJ0knOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19JTkZPOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICcwJzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUwwOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICcxJzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUwxOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICcyJzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUwyOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICczJzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUwzOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICc0JzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUw0OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICc1JzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUw1OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICc2JzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUw2OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICc3JzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUw3OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgc3lzbG9nIGZhY2lsaXR5OiAtUyVjXG4iLCpvcHRhcmcpOwotICAgICAgICAgICAgICAgICAgICB1c2FnZSgpOwotICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJubyBzeXNsb2cgZmFjaWxpdHkgc3BlY2lmaWVkXG4iKTsKLSAgICAgICAgICAgICAgICB1c2FnZSgpOwotICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICJXYXJuaW5nOiAtUyBvcHRpb24gaGFzIGJlZW4gd2l0aGRyYXduOyB1c2UgLUxzIDxmYWNpbGl0eT4gaW5zdGVhZFxuIik7CisgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnbSc6CkBAIC05NDAsMTYgKzgyMCw4IEBACiAKICAgICAgICAgY2FzZSAnbyc6CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgIldhcm5pbmc6IC1vIG9wdGlvbiBpcyBkZXByZWNhdGVkOyB1c2UgLUxmIDxmaWxlPiBpbnN0ZWFkXG4iKTsKLSAgICAgICAgICAgIGlmIChvcHRhcmcgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGxvZ2ZpbGUgPSBvcHRhcmc7Ci0gICAgICAgICAgICAgICAgc25tcF9lbmFibGVfZmlsZWxvZyhvcHRhcmcsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUEVORF9MT0dGSUxFUykpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB1c2FnZSgpOwotICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICJXYXJuaW5nOiAtbyBvcHRpb24gaGFzIGJlZW4gd2l0aGRyYXduOyB1c2UgLUxmIDxmaWxlPiBpbnN0ZWFkXG4iKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdPJzoKQEAgLTk4MiwyMCArODU0LDE0IEBACiAKICAgICAgICAgY2FzZSAnUCc6CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgIldhcm5pbmc6IC1QIG9wdGlvbiBpcyBkZXByZWNhdGVkOyB1c2UgLWYgLUxlIGluc3RlYWRcbiIpOwotICAgICAgICAgICAgZG9mb3JrID0gMDsKLSAgICAgICAgICAgIHNubXBfZW5hYmxlX3N0ZGVycmxvZygpOworICAgICAgICAgICAgICAgICAgICAiV2FybmluZzogLVAgb3B0aW9uIGhhcyBiZWVuIHdpdGhkcmF3bjsgdXNlIC1mIC1MZSBpbnN0ZWFkXG4iKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAiV2FybmluZzogLXMgb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IHVzZSAtTHNkIGluc3RlYWRcbiIpOwotICAgICAgICAgICAgZGVwbXNnID0gMTsKLSNpZmRlZiBXSU4zMgotICAgICAgICAgICAgc25tcF9lbmFibGVfc3lzbG9nX2lkZW50KGFwcF9uYW1lX2xvbmcsIEZhY2lsaXR5KTsKLSNlbHNlCi0gICAgICAgICAgICBzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQoYXBwX25hbWUsIEZhY2lsaXR5KTsKLSNlbmRpZgorICAgICAgICAgICAgICAgICAgICAiV2FybmluZzogLXMgb3B0aW9uIGhhcyBiZWVuIHdpdGhkcmF3bjsgdXNlIC1Mc2QgaW5zdGVhZFxuIik7CisgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAndCc6CkBAIC0xMDk3LDI0ICs5NjMsNiBAQAogICAgICAgICB0cmFwaC0+YXV0aHR5cGVzID0gVFJBUF9BVVRIX0xPRzsKICAgICB9CiAKLSAgICBpZiAoRXZlbnQpIHsKLSAgICAgICAgdHJhcGggPSBuZXRzbm1wX2FkZF90cmFwaGFuZGxlcihldmVudF9oYW5kbGVyLCByaXNpbmdBbGFybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHJpc2luZ0FsYXJtKSk7Ci0gICAgICAgIHRyYXBoLT5hdXRodHlwZXMgPSBUUkFQX0FVVEhfTE9HOwotCi0gICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfdHJhcGhhbmRsZXIoZXZlbnRfaGFuZGxlciwgZmFsbGluZ0FsYXJtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoZmFsbGluZ0FsYXJtKSk7Ci0gICAgICAgIHRyYXBoLT5hdXRodHlwZXMgPSBUUkFQX0FVVEhfTE9HOwotCi0gICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfdHJhcGhhbmRsZXIoZXZlbnRfaGFuZGxlciwgdW5hdmFpbGFibGVBbGFybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHVuYXZhaWxhYmxlQWxhcm0pKTsKLSAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9MT0c7Ci0JLyogWFhYIC0gbWlnaHQgYmUgd29ydGggc2V0dGluZyBzb21lICJtYWdpYyBkYXRhIgotCSAqIGluIHRoZSB0cmFwaGFuZGxlciBzdHJ1Y3R1cmUgdGhhdCAnZXZlbnRfaGFuZGxlcicKLQkgKiBjYW4gdXNlIHRvIGF2b2lkIGNoZWNraW5nIHRoZSB0cmFwIE9JRCB2YWx1ZXMuCi0JICovCi0gICAgfQotCiAjaWYgZGVmaW5lZChVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFKSAmJiAhZGVmaW5lZChORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWCkKICAgICAvKgogICAgICAqIHdlJ3JlIGFuIGFnZW50eCBzdWJhZ2VudD8gCkBAIC0xMjE5LDEwICsxMDY3LDcgQEAKICNlbmRpZgogCiAgICAgaWYgKHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIpIHsKLSAgICAgICAgZnJlZV90cmFwMV9mbXQoKTsKLSAgICAgICAgZnJlZV90cmFwMl9mbXQoKTsKLSAgICAgICAgcHJpbnRfZm9ybWF0MSA9IHN0cmR1cCh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKTsKLSAgICAgICAgcHJpbnRfZm9ybWF0MiA9IHN0cmR1cCh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKTsKKyAgICAgICAgcGFyc2VfZm9ybWF0KCBOVUxMLCB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyICk7CiAgICAgfQogCiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCkBAIC0xMjQ1LDYgKzEwOTAsNjMgQEAKICNlbmRpZiAgICAgICAgCiAgICAgfQogCisgICAgaWYgKGxpc3Rlbl9wb3J0cykKKyAgICAgICAgY3AgPSBsaXN0ZW5fcG9ydHM7CisgICAgZWxzZQorICAgICAgICBjcCA9IGRlZmF1bHRfcG9ydDsKKworICAgIHdoaWxlIChjcCAhPSBOVUxMKSB7CisgICAgICAgIGNoYXIgKnNlcCA9IHN0cmNocihjcCwgJywnKTsKKworICAgICAgICBpZiAoc2VwICE9IE5VTEwpIHsKKyAgICAgICAgICAgICpzZXAgPSAwOworICAgICAgICB9CisKKyAgICAgICAgdHJhbnNwb3J0ID0gbmV0c25tcF90cmFuc3BvcnRfb3Blbl9zZXJ2ZXIoInNubXB0cmFwIiwgY3ApOworICAgICAgICBpZiAodHJhbnNwb3J0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZG4ndCBvcGVuICVzIC0tIGVycm5vICVkIChcIiVzXCIpXG4iLAorICAgICAgICAgICAgICAgICAgICAgY3AsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgc25tcHRyYXBkX2Nsb3NlX3Nlc3Npb25zKHNlc3NfbGlzdCk7CisgICAgICAgICAgICBTT0NLX0NMRUFOVVA7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3MgPSBzbm1wdHJhcGRfYWRkX3Nlc3Npb24odHJhbnNwb3J0KTsKKyAgICAgICAgICAgIGlmIChzcyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBTaG91bGRuJ3QgaGFwcGVuPyAgV2UgaGF2ZSBhbHJlYWR5IG9wZW5lZCB0aGUgdHJhbnNwb3J0CisgICAgICAgICAgICAgICAgICogc3VjY2Vzc2Z1bGx5IHNvIHdoYXQgY291bGQgaGF2ZSBnb25lIHdyb25nPyAgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgc25tcHRyYXBkX2Nsb3NlX3Nlc3Npb25zKHNlc3NfbGlzdCk7CisgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0cmFuc3BvcnQpOworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZG4ndCBvcGVuIHNubXAgLSAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICAgICAgU09DS19DTEVBTlVQOworICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNzLT5uZXh0ID0gc2Vzc19saXN0OworICAgICAgICAgICAgICAgIHNlc3NfbGlzdCA9IHNzOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogUHJvY2VzcyBuZXh0IGxpc3RlbiBhZGRyZXNzLCBpZiB0aGVyZSBpcyBvbmUuICAKKyAgICAgICAgICovCisKKyAgICAgICAgaWYgKHNlcCAhPSBOVUxMKSB7CisgICAgICAgICAgICAqc2VwID0gJywnOworICAgICAgICAgICAgY3AgPSBzZXAgKyAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY3AgPSBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIFNOTVBfRlJFRShsaXN0ZW5fcG9ydHMpOyAvKiBkb25lIHdpdGggdGhlbSAqLworCisjaWZkZWYgTkVUU05NUF9VU0VfTVlTUUwKKyAgICBpZiggbmV0c25tcF9teXNxbF9pbml0KCkgKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTXlTUUwgaW5pdGlhbGl6YXRpb24gZmFpbGVkXG4iKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisjZW5kaWYKKwogI2lmbmRlZiBXSU4zMgogICAgIC8qCiAgICAgICogZm9yayB0aGUgcHJvY2VzcyB0byB0aGUgYmFja2dyb3VuZCBpZiB3ZSBhcmUgbm90IHByaW50aW5nIHRvIHN0ZGVyciAKQEAgLTEyOTQsNTggKzExOTYsNiBAQAogI2VuZGlmCiAKICAgICBzbm1wX2xvZyhMT0dfSU5GTywgIk5FVC1TTk1QIHZlcnNpb24gJXNcbiIsIG5ldHNubXBfZ2V0X3ZlcnNpb24oKSk7Ci0gICAgaWYgKGRlcG1zZykgewotICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIi1zIGFuZCAtUyBvcHRpb25zIGFyZSBkZXByZWNhdGVkOyB1c2UgLUxzIDxmYWNpbGl0eT4gaW5zdGVhZFxuIik7Ci0gICAgfQotICAgIAotICAgIGlmIChsaXN0ZW5fcG9ydHMpCi0gICAgICAgIGNwID0gbGlzdGVuX3BvcnRzOwotICAgIGVsc2UKLSAgICAgICAgY3AgPSBkZWZhdWx0X3BvcnQ7Ci0KLSAgICB3aGlsZSAoY3AgIT0gTlVMTCkgewotICAgICAgICBjaGFyICpzZXAgPSBzdHJjaHIoY3AsICcsJyk7Ci0KLSAgICAgICAgaWYgKHNlcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAqc2VwID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHRyYW5zcG9ydCA9IG5ldHNubXBfdHJhbnNwb3J0X29wZW5fc2VydmVyKCJzbm1wdHJhcCIsIGNwKTsKLSAgICAgICAgaWYgKHRyYW5zcG9ydCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3Qgb3BlbiAlcyAtLSBlcnJubyAlZCAoXCIlc1wiKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgIGNwLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgICAgIHNubXB0cmFwZF9jbG9zZV9zZXNzaW9ucyhzZXNzX2xpc3QpOwotICAgICAgICAgICAgU09DS19DTEVBTlVQOwotICAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNzID0gc25tcHRyYXBkX2FkZF9zZXNzaW9uKHRyYW5zcG9ydCk7Ci0gICAgICAgICAgICBpZiAoc3MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICogU2hvdWxkbid0IGhhcHBlbj8gIFdlIGhhdmUgYWxyZWFkeSBvcGVuZWQgdGhlIHRyYW5zcG9ydAotICAgICAgICAgICAgICAgICAqIHN1Y2Nlc3NmdWxseSBzbyB3aGF0IGNvdWxkIGhhdmUgZ29uZSB3cm9uZz8gIAotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIHNubXB0cmFwZF9jbG9zZV9zZXNzaW9ucyhzZXNzX2xpc3QpOwotICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodHJhbnNwb3J0KTsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3Qgb3BlbiBzbm1wIC0gJXMiLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgICAgICAgIFNPQ0tfQ0xFQU5VUDsKLSAgICAgICAgICAgICAgICBleGl0KDEpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzcy0+bmV4dCA9IHNlc3NfbGlzdDsKLSAgICAgICAgICAgICAgICBzZXNzX2xpc3QgPSBzczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFByb2Nlc3MgbmV4dCBsaXN0ZW4gYWRkcmVzcywgaWYgdGhlcmUgaXMgb25lLiAgCi0gICAgICAgICAqLwotCi0gICAgICAgIGlmIChzZXAgIT0gTlVMTCkgewotICAgICAgICAgICAgKnNlcCA9ICcsJzsKLSAgICAgICAgICAgIGNwID0gc2VwICsgMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNwID0gTlVMTDsKLSAgICAgICAgfQotICAgIH0KIAogICAgIC8qCiAgICAgICogaWdub3JlIGVhcmx5IHNpZ2h1cCBkdXJpbmcgc3RhcnR1cApAQCAtMTQwMSwxMCArMTI1MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfdmVyc2lvbigpKTsKICAgICAgICAgICAgIHRyYXBkX3VwZGF0ZV9jb25maWcoKTsKICAgICAgICAgICAgIGlmICh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgZnJlZV90cmFwMV9mbXQoKTsKLSAgICAgICAgICAgICAgICBmcmVlX3RyYXAyX2ZtdCgpOwotICAgICAgICAgICAgICAgIHByaW50X2Zvcm1hdDEgPSBzdHJkdXAodHJhcDFfZm10X3N0cl9yZW1lbWJlcik7Ci0gICAgICAgICAgICAgICAgcHJpbnRfZm9ybWF0MiA9IHN0cmR1cCh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKTsKKyAgICAgICAgICAgICAgICBwYXJzZV9mb3JtYXQoIE5VTEwsIHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIgKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlY29uZmlnID0gMDsKICAgICAgICAgfQpAQCAtMTQyMSw3ICsxMjY4LDcgQEAKICAgICAgICAgICAgIHR2cCA9IE5VTEw7ICAgICAgICAgLyogYmxvY2sgd2l0aG91dCB0aW1lb3V0ICovCiAgICAgICAgIG5ldHNubXBfZXh0ZXJuYWxfZXZlbnRfaW5mbygmbnVtZmRzLCAmcmVhZGZkcywgJndyaXRlZmRzLCAmZXhjZXB0ZmRzKTsKICAgICAgICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmcmVhZGZkcywgJndyaXRlZmRzLCAmZXhjZXB0ZmRzLCB0dnApOwotICAgICAgICBnZXR0aW1lb2ZkYXkoJk5vdywgMCk7CisgICAgICAgIGdldHRpbWVvZmRheSgmTm93LCBOVUxMKTsKICAgICAgICAgaWYgKGNvdW50ID4gMCkgewogICAgICAgICAgICAgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMoJmNvdW50LCAmcmVhZGZkcywgJndyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4Y2VwdGZkcyk7CmRpZmYgLS1naXQgYS9hcHBzL3NubXB0cmFwZF9hdXRoLmMgYi9hcHBzL3NubXB0cmFwZF9hdXRoLmMKaW5kZXggMTE5ZGU1OC4uYjdmYjYwNSAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfYXV0aC5jCisrKyBiL2FwcHMvc25tcHRyYXBkX2F1dGguYwpAQCAtMTI2LDggKzEyNiwxMCBAQAogICAgICAgICAvKiBwYXNzIHRoZSBQRFUgdG8gdGhlIFZBQ00gcm91dGluZSBmb3IgaGFuZGxpbmcgYXV0aG9yaXphdGlvbiAqLwogICAgICAgICBERUJVR01TR1RMKCgic25tcHRyYXBkOmF1dGgiLCAiQ2FsbGluZyBWQUNNIGZvciBjaGVja2luZyBwaGFzZSAlZDolc1xuIiwKICAgICAgICAgICAgICAgICAgICAgaSwgc2VfZmluZF9sYWJlbF9pbl9zbGlzdChWQUNNX1ZJRVdfRU5VTV9OQU1FLCBpKSkpOwotICAgICAgICBpZiAodmFjbV9jaGVja192aWV3KG5ld3BkdSwgdmFyLT52YWwub2JqaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT52YWxfbGVuL3NpemVvZihvaWQpLCAwLCBpKSA9PSBWQUNNX1NVQ0NFU1MpIHsKKyAgICAgICAgaWYgKHZhY21fY2hlY2tfdmlld19jb250ZW50cyhuZXdwZHUsIHZhci0+dmFsLm9iamlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+dmFsX2xlbi9zaXplb2Yob2lkKSwgMCwgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUNNX0NIRUNLX1ZJRVdfQ09OVEVOVFNfRE5FX0NPTlRFWFRfT0spCisgICAgICAgICAgICA9PSBWQUNNX1NVQ0NFU1MpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdHJhcGQ6YXV0aCIsICIgIHJlc3VsdDogYXV0aG9yaXplZFxuIikpOwogICAgICAgICAgICAgcmV0IHw9IDEgPDwgaTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMgYi9hcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jCmluZGV4IDM3Y2E1YWIuLjAxNzZhYTcgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMKKysrIGIvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYwpAQCAtNDEsNiArNDEsMTEgQEAKIGNoYXIgKnN5c2xvZ19mb3JtYXQyID0gTlVMTDsKIGNoYXIgKnByaW50X2Zvcm1hdDEgID0gTlVMTDsKIGNoYXIgKnByaW50X2Zvcm1hdDIgID0gTlVMTDsKK2NoYXIgKmV4ZWNfZm9ybWF0MSAgID0gTlVMTDsKK2NoYXIgKmV4ZWNfZm9ybWF0MiAgID0gTlVMTDsKKworaW50ICAgU3lzbG9nVHJhcCA9IDA7CitpbnQgICBkcm9wYXV0aCA9IDA7CiAKIGNvbnN0IGNoYXIgICAgICp0cmFwMV9zdGRfc3RyID0gIiUuNHktJS4ybS0lLjJsICUuMmg6JS4yajolLjJrICVCIFslYl0gKHZpYSAlQSBbJWFdKTogJU5cblx0JVcgVHJhcCAoJXEpIFVwdGltZTogJSNUXG4ldlxuIjsKIGNvbnN0IGNoYXIgICAgICp0cmFwMl9zdGRfc3RyID0gIiUuNHktJS4ybS0lLjJsICUuMmg6JS4yajolLjJrICVCIFslYl06XG4ldlxuIjsKQEAgLTgxLDE5ICs4NiwyNyBAQAogICAgIGNoYXIgICAgICAgICAgICpjcHRyLCAqY3A7CiAgICAgbmV0c25tcF90cmFwZF9oYW5kbGVyICp0cmFwaDsKICAgICBpbnQgICAgICAgICAgICAgZmxhZ3MgPSAwOworICAgIGNoYXIgICAgICAgICAgICpmb3JtYXQgPSBOVUxMOwogCiAgICAgbWVtc2V0KCBidWYsIDAsIHNpemVvZihidWYpKTsKICAgICBtZW1zZXQob2J1ZiwgMCwgc2l6ZW9mKG9idWYpKTsKICAgICBjcHRyID0gY29weV9ud29yZChsaW5lLCBidWYsIHNpemVvZihidWYpKTsKKworICAgIGlmICggYnVmWzBdID09ICctJyAmJiBidWZbMV0gPT0gJ0YnICkgeworICAgICAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWYsIHNpemVvZihidWYpKTsKKyAgICAgICAgZm9ybWF0ID0gc3RyZHVwKCBidWYgKTsKKyAgICAgICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgfQogICAgIGlmICggIWNwdHIgKSB7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoIk1pc3NpbmcgdHJhcGhhbmRsZSBjb21tYW5kIik7CisgICAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJNaXNzaW5nIHRyYXBoYW5kbGUgY29tbWFuZCAoJXMpIiwgYnVmKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIERFQlVHTVNHVEwoKCJyZWFkX2NvbmZpZzp0cmFwaGFuZGxlIiwgInJlZ2lzdGVyaW5nIGhhbmRsZXIgZm9yOiAiKSk7CiAgICAgaWYgKCFzdHJjbXAoYnVmLCAiZGVmYXVsdCIpKSB7CiAgICAgICAgIERFQlVHTVNHKCgicmVhZF9jb25maWc6dHJhcGhhbmRsZSIsICJkZWZhdWx0IikpOwotICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2RlZmF1bHRfdHJhcGhhbmRsZXIoIGNvbW1hbmRfaGFuZGxlciApOworICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2dsb2JhbF90cmFwaGFuZGxlcihORVRTTk1QVFJBUERfREVGQVVMVF9IQU5ETEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kX2hhbmRsZXIgKTsKICAgICB9IGVsc2UgewogICAgICAgICBjcCA9IGJ1ZitzdHJsZW4oYnVmKS0xOwogICAgICAgICBpZiAoICpjcCA9PSAnKicgKSB7CkBAIC0xMDgsMTEgKzEyMSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFyZWFkX29iamlkKGJ1Ziwgb2J1ZiwgJm9sZW4pKSB7Ci0gICAgICAgICAgICBjaGFyICAgICAgICAgICAgYnVmMVtTVFJJTkdNQVhdOwotICAgICAgICAgICAgc25wcmludGYoYnVmMSwgIHNpemVvZihidWYxKSwKLSAgICAgICAgICAgICAgICAgICAgIkJhZCB0cmFwIE9JRCBpbiB0cmFwaGFuZGxlIGRpcmVjdGl2ZTogJXMiLCBidWYpOwotICAgICAgICAgICAgYnVmMVsgc2l6ZW9mKGJ1ZjEpLTEgXSA9IDA7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKGJ1ZjEpOworCSAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiQmFkIHRyYXAgT0lEIGluIHRyYXBoYW5kbGUgZGlyZWN0aXZlOiAlcyIsCisJCQkJIGJ1Zik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgREVCVUdNU0dPSUQoKCJyZWFkX2NvbmZpZzp0cmFwaGFuZGxlIiwgb2J1Ziwgb2xlbikpOwpAQCAtMTI1LDYgKzEzNSw4IEBACiAgICAgICAgIHRyYXBoLT5mbGFncyA9IGZsYWdzOwogICAgICAgICB0cmFwaC0+YXV0aHR5cGVzID0gVFJBUF9BVVRIX0VYRTsKICAgICAgICAgdHJhcGgtPnRva2VuID0gc3RyZHVwKGNwdHIpOworICAgICAgICBpZiAoZm9ybWF0KQorICAgICAgICAgICAgdHJhcGgtPmZvcm1hdCA9IGZvcm1hdDsKICAgICB9CiB9CiAKQEAgLTEzOCwxNyArMTUwLDI2IEBACiAgICAgY2hhciAgICAgICAgICAgKmNwdHIsICpjcDsKICAgICBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKnRyYXBoOwogICAgIGludCAgICAgICAgICAgICBmbGFncyA9IDA7CisgICAgY2hhciAgICAgICAgICAgKmZvcm1hdCA9IE5VTEw7CiAKICAgICBtZW1zZXQoIGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOwogICAgIG1lbXNldChvYnVmLCAwLCBzaXplb2Yob2J1ZikpOwogICAgIGNwdHIgPSBjb3B5X253b3JkKGxpbmUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCisgICAgaWYgKCBidWZbMF0gPT0gJy0nICYmIGJ1ZlsxXSA9PSAnRicgKSB7CisgICAgICAgIGNwdHIgPSBjb3B5X253b3JkKGNwdHIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICBmb3JtYXQgPSBzdHJkdXAoIGJ1ZiApOworICAgICAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWYsIHNpemVvZihidWYpKTsKKyAgICB9CiAgICAgREVCVUdNU0dUTCgoInJlYWRfY29uZmlnOmZvcndhcmQiLCAicmVnaXN0ZXJpbmcgZm9yd2FyZCBmb3I6ICIpKTsKICAgICBpZiAoIXN0cmNtcChidWYsICJkZWZhdWx0IikpIHsKICAgICAgICAgREVCVUdNU0coKCJyZWFkX2NvbmZpZzpmb3J3YXJkIiwgImRlZmF1bHQiKSk7CiAgICAgICAgIGlmICggIXN0cmNtcCggY3B0ciwgImFnZW50eCIgKSkKLSAgICAgICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfZGVmYXVsdF90cmFwaGFuZGxlciggYXhmb3J3YXJkX2hhbmRsZXIgKTsKKyAgICAgICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKE5FVFNOTVBUUkFQRF9ERUZBVUxUX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4Zm9yd2FyZF9oYW5kbGVyICk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfZGVmYXVsdF90cmFwaGFuZGxlciggZm9yd2FyZF9oYW5kbGVyICk7CisgICAgICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2dsb2JhbF90cmFwaGFuZGxlcihORVRTTk1QVFJBUERfREVGQVVMVF9IQU5ETEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkX2hhbmRsZXIgKTsKICAgICB9IGVsc2UgewogICAgICAgICBjcCA9IGJ1ZitzdHJsZW4oYnVmKS0xOwogICAgICAgICBpZiAoICpjcCA9PSAnKicgKSB7CkBAIC0xNjQsMTEgKzE4NSw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXJlYWRfb2JqaWQoYnVmLCBvYnVmLCAmb2xlbikpIHsKLSAgICAgICAgICAgIGNoYXIgICAgICAgICAgICBidWYxW1NUUklOR01BWF07Ci0gICAgICAgICAgICBzbnByaW50ZihidWYxLCAgc2l6ZW9mKGJ1ZjEpLAotICAgICAgICAgICAgICAgICAgICAiQmFkIHRyYXAgT0lEIGluIGZvcndhcmQgZGlyZWN0aXZlOiAlcyIsIGJ1Zik7Ci0gICAgICAgICAgICBidWYxWyBzaXplb2YoYnVmMSktMSBdID0gMDsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoYnVmMSk7CisJICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJCYWQgdHJhcCBPSUQgaW4gZm9yd2FyZCBkaXJlY3RpdmU6ICVzIiwgYnVmKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBERUJVR01TR09JRCgoInJlYWRfY29uZmlnOmZvcndhcmQiLCBvYnVmLCBvbGVuKSk7CkBAIC0xODQsMTQgKzIwMSwxNiBAQAogICAgICAgICB0cmFwaC0+ZmxhZ3MgPSBmbGFnczsKICAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9ORVQ7CiAgICAgICAgIHRyYXBoLT50b2tlbiA9IHN0cmR1cChjcHRyKTsKKyAgICAgICAgaWYgKGZvcm1hdCkKKyAgICAgICAgICAgIHRyYXBoLT5mb3JtYXQgPSBmb3JtYXQ7CiAgICAgfQogfQogCiAKLXN0YXRpYyB2b2lkCit2b2lkCiBwYXJzZV9mb3JtYXQoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCiB7Ci0gICAgY2hhciAqY3A7CisgICAgY2hhciAqY3AsICpzZXA7CiAKICAgICAvKgogICAgICAqIEV4dHJhY3QgdGhlIGZpcnN0IHRva2VuIGZyb20gdGhlIHZhbHVlCkBAIC0yMDksOCArMjI4LDkgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIHNlcCA9IGNwOwogICAgICooY3ArKykgPSAnXDAnOwotICAgIHdoaWxlICgqY3AgJiYgIWlzc3BhY2UoKmNwKSkKKyAgICB3aGlsZSAoKmNwICYmIGlzc3BhY2UoKmNwKSkKICAgICAgICAgY3ArKzsKIAogICAgIC8qCkBAIC0yNDAsNyArMjYwLDIwIEBACiAgICAgICAgIFNOTVBfRlJFRSggc3lzbG9nX2Zvcm1hdDIgKTsKICAgICAgICAgc3lzbG9nX2Zvcm1hdDEgPSBzdHJkdXAoY3ApOwogICAgICAgICBzeXNsb2dfZm9ybWF0MiA9IHN0cmR1cChjcCk7CisgICAgfSBlbHNlIGlmICghc3RyY21wKCBsaW5lLCAiZXhlY3V0ZTEiKSkgeworICAgICAgICBTTk1QX0ZSRUUoIGV4ZWNfZm9ybWF0MSApOworICAgICAgICBleGVjX2Zvcm1hdDEgPSBzdHJkdXAoY3ApOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcCggbGluZSwgImV4ZWN1dGUyIikpIHsKKyAgICAgICAgU05NUF9GUkVFKCBleGVjX2Zvcm1hdDIgKTsKKyAgICAgICAgZXhlY19mb3JtYXQyID0gc3RyZHVwKGNwKTsKKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAoIGxpbmUsICJleGVjdXRlIikpIHsKKyAgICAgICAgU05NUF9GUkVFKCBleGVjX2Zvcm1hdDEgKTsKKyAgICAgICAgU05NUF9GUkVFKCBleGVjX2Zvcm1hdDIgKTsKKyAgICAgICAgZXhlY19mb3JtYXQxID0gc3RyZHVwKGNwKTsKKyAgICAgICAgZXhlY19mb3JtYXQyID0gc3RyZHVwKGNwKTsKICAgICB9CisKKyAgICAqc2VwID0gJyAnOwogfQogCiAKQEAgLTI4OSw3ICszMjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX3RyYXAyX2ZtdCwgZnJlZV90cmFwMl9mbXQsICJmb3JtYXQiKTsKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgImZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfZm9ybWF0LCBOVUxMLAotCQkJICAgICJbcHJpbnR7LDEsMn18c3lzbG9neywxLDJ9XSBmb3JtYXQiKTsKKwkJCSAgICAiW3ByaW50eywxLDJ9fHN5c2xvZ3ssMSwyfXxleGVjdXRleywxLDJ9XSBmb3JtYXQiKTsKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgImZvcndhcmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2ZvcndhcmQsIE5VTEwsICJPSUR8XCJkZWZhdWx0XCIgZGVzdGluYXRpb24iKTsKIH0KQEAgLTMwOCwxMiArMzQxLDI2IEBACiBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKm5ldHNubXBfZGVmYXVsdF90cmFwaGFuZGxlcnMgID0gTlVMTDsKIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqbmV0c25tcF9zcGVjaWZpY190cmFwaGFuZGxlcnMgPSBOVUxMOwogCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2hhbmRsZXJfbWFwX3QgeworICAgbmV0c25tcF90cmFwZF9oYW5kbGVyICoqaGFuZGxlcjsKKyAgIGNvbnN0IGNoYXIgICAgICAgICAgICAgKmRlc2NyOworfSBuZXRzbm1wX2hhbmRsZXJfbWFwOworCitzdGF0aWMgbmV0c25tcF9oYW5kbGVyX21hcCBoYW5kbGVyc1tdID0geworICAgIHsgJm5ldHNubXBfYXV0aF9nbG9iYWxfdHJhcGhhbmRsZXJzLCAiYXV0aCB0cmFwIiB9LAorICAgIHsgJm5ldHNubXBfcHJlX2dsb2JhbF90cmFwaGFuZGxlcnMsICJwcmUtZ2xvYmFsIHRyYXAiIH0sCisgICAgeyBOVUxMLCAidHJhcCBzcGVjaWZpYyIgfSwKKyAgICB7ICZuZXRzbm1wX3Bvc3RfZ2xvYmFsX3RyYXBoYW5kbGVycywgImdsb2JhbCIgfSwKKyAgICB7IE5VTEwsIE5VTEwgfQorfTsKKwogLyoKICAqIFJlZ2lzdGVyIGEgbmV3ICJnbG9iYWwiIHRyYXBoYW5kbGVyLAogICogdG8gYmUgYXBwbGllZCB0byAqYWxsKiBpbmNvbWluZyB0cmFwcwogICovCiBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKgotbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKGludCBsaXN0LCBOZXRzbm1wX1RyYXBfSGFuZGxlciogaGFuZGxlcikgeworbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKGludCBsaXN0LCBOZXRzbm1wX1RyYXBfSGFuZGxlciBoYW5kbGVyKQorewogICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqdHJhcGg7CiAKICAgICBpZiAoICFoYW5kbGVyICkKQEAgLTMyNCw3ICszNzEsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qCi0gICAgICogQWRkIHRoaXMgbmV3IGhhbmRsZXIgdG8gdGhlIGZyb250IG9mIHRoZSBhcHByb3ByaWF0ZSBnbG9iYWwgbGlzdAorICAgICAqIEFkZCB0aGlzIG5ldyBoYW5kbGVyIHRvIHRoZSBmcm9udCBvZiB0aGUgYXBwcm9wcmlhdGUgbGlzdAogICAgICAqICAgKG9yIHNob3VsZCBpdCBnbyBvbiB0aGUgZW5kPykKICAgICAgKi8KICAgICB0cmFwaC0+aGFuZGxlciA9IGhhbmRsZXI7CkBAIC0zNDIsNiArMzg5LDEwIEBACiAgICAgICAgIHRyYXBoLT5uZXh0aCAgID0gbmV0c25tcF9wb3N0X2dsb2JhbF90cmFwaGFuZGxlcnM7CiAgICAgICAgIG5ldHNubXBfcG9zdF9nbG9iYWxfdHJhcGhhbmRsZXJzID0gdHJhcGg7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTkVUU05NUFRSQVBEX0RFRkFVTFRfSEFORExFUjoKKyAgICAgICAgdHJhcGgtPm5leHRoICAgPSBuZXRzbm1wX2RlZmF1bHRfdHJhcGhhbmRsZXJzOworICAgICAgICBuZXRzbm1wX2RlZmF1bHRfdHJhcGhhbmRsZXJzID0gdHJhcGg7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZyZWUoIHRyYXBoICk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzQ5LDMxICs0MDAsMTQgQEAKICAgICByZXR1cm4gdHJhcGg7CiB9CiAKLQogLyoKICAqIFJlZ2lzdGVyIGEgbmV3ICJkZWZhdWx0IiB0cmFwaGFuZGxlciwgdG8gYmUgYXBwbGllZCB0byBhbGwKICAqIHRyYXBzIHdpdGggbm8gc3BlY2lmaWMgdHJhcCBoYW5kbGVycyBvZiB0aGVpciBvd24uCiAgKi8KIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqCi1uZXRzbm1wX2FkZF9kZWZhdWx0X3RyYXBoYW5kbGVyKCBOZXRzbm1wX1RyYXBfSGFuZGxlciogaGFuZGxlcikgewotICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqdHJhcGg7Ci0KLSAgICBpZiAoICFoYW5kbGVyICkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB0cmFwaCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90cmFwZF9oYW5kbGVyKTsKLSAgICBpZiAoICF0cmFwaCApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyoKLSAgICAgKiBBZGQgdGhpcyBuZXcgaGFuZGxlciB0byB0aGUgZnJvbnQgb2YgdGhlIGRlZmF1bHQgbGlzdAotICAgICAqICAgKG9yIHNob3VsZCBpdCBnbyBvbiB0aGUgZW5kPykKLSAgICAgKi8KLSAgICB0cmFwaC0+YXV0aHR5cGVzID0gVFJBUF9BVVRIX0FMTDsgLyogY2FsbGVycyB3aWxsIGxpa2VseSBjaGFuZ2UgdGhpcyAqLwotICAgIHRyYXBoLT5oYW5kbGVyID0gaGFuZGxlcjsKLSAgICB0cmFwaC0+bmV4dGggICA9IG5ldHNubXBfZGVmYXVsdF90cmFwaGFuZGxlcnM7Ci0gICAgbmV0c25tcF9kZWZhdWx0X3RyYXBoYW5kbGVycyA9IHRyYXBoOwotICAgIHJldHVybiB0cmFwaDsKK25ldHNubXBfYWRkX2RlZmF1bHRfdHJhcGhhbmRsZXIoIE5ldHNubXBfVHJhcF9IYW5kbGVyIGhhbmRsZXIpIHsKKyAgICByZXR1cm4gbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKE5FVFNOTVBUUkFQRF9ERUZBVUxUX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKTsKIH0KIAogCkBAIC0zOTksNyArNDMzLDcgQEAKICAgICB0cmFwaC0+YXV0aHR5cGVzICAgPSBUUkFQX0FVVEhfQUxMOyAvKiBjYWxsZXJzIHdpbGwgbGlrZWx5IGNoYW5nZSB0aGlzICovCiAgICAgdHJhcGgtPmhhbmRsZXIgICAgID0gaGFuZGxlcjsKICAgICB0cmFwaC0+dHJhcG9pZF9sZW4gPSB0cmFwT2lkTGVuOwotICAgIHRyYXBoLT50cmFwb2lkID0gbmV0c25tcF9tZW1kdXAodHJhcE9pZCwgc2l6ZW9mKG9pZCkgKiB0cmFwT2lkTGVuKTsKKyAgICB0cmFwaC0+dHJhcG9pZCAgICAgPSBzbm1wX2R1cGxpY2F0ZV9vYmppZCh0cmFwT2lkLCB0cmFwT2lkTGVuKTsKIAogICAgIC8qCiAgICAgICogTm93IHRyeSB0byBmaW5kIHRoZSBhcHByb3ByaWF0ZSBwbGFjZSBpbiB0aGUgdHJhcC1zcGVjaWZpYwpAQCAtNTE0LDggKzU0OCwxMyBAQAogbmV0c25tcF9nZXRfdHJhcGhhbmRsZXIoIG9pZCAqdHJhcE9pZCwgaW50IHRyYXBPaWRMZW4gKSB7CiAgICAgbmV0c25tcF90cmFwZF9oYW5kbGVyICp0cmFwaDsKICAgICAKLSAgICBpZiAoIXRyYXBPaWQgfHwgIXRyYXBPaWRMZW4pCisgICAgaWYgKCF0cmFwT2lkIHx8ICF0cmFwT2lkTGVuKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkOmxvb2t1cCIsICJnZXRfdHJhcGhhbmRsZXIgbm8gT0lEIVxuIikpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQ6bG9va3VwIiwgIkxvb2tpbmcgdXAgVHJhcCBPSUQ6ICIpKTsKKyAgICBERUJVR01TR09JRCgoInNubXB0cmFwZDpsb29rdXAiLCB0cmFwT2lkLCB0cmFwT2lkTGVuKSk7CisgICAgREVCVUdNU0coKCAic25tcHRyYXBkOmxvb2t1cCIsICJcbiIpKTsKIAogICAgIC8qCiAgICAgICogTG9vayBmb3IgYSBtYXRjaGluZyBPSUQsIGFuZCByZXR1cm4gdGhhdCBsaXN0Li4uCkBAIC01MzAsNyArNTY5LDggQEAKICAgICAgICAgaWYgKCEodHJhcGgtPmZsYWdzICYgTkVUU05NUF9UUkFQSEFORExFUl9GTEFHX01BVENIX1RSRUUpKSB7CiAgICAgICAgICAgICBpZiAoc25tcF9vaWRfY29tcGFyZSh0cmFwaC0+dHJhcG9pZCwgdHJhcGgtPnRyYXBvaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhcE9pZCwgdHJhcE9pZExlbikgPT0gMCkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkIiwgImdldF90cmFwaGFuZGxlciBleGFjdCBtYXRjaCAoJXgpXG4iLCB0cmFwaCkpOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkOmxvb2t1cCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRfdHJhcGhhbmRsZXIgZXhhY3QgbWF0Y2ggKCVwKVxuIiwgdHJhcGgpKTsKIAkgICAgICAgIHJldHVybiB0cmFwaDsKICAgICAgICAgICAgIH0KIAl9IGVsc2UgewpAQCAtNTQ4LDExICs1ODgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlKHRyYXBoLT50cmFwb2lkLCB0cmFwaC0+dHJhcG9pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBPaWQsIHRyYXBPaWRMZW4pICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkIiwgImdldF90cmFwaGFuZGxlciBzdHJpY3Qgc3VidHJlZSBtYXRjaCAoJXgpXG4iLCB0cmFwaCkpOworICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQ6bG9va3VwIiwgImdldF90cmFwaGFuZGxlciBzdHJpY3Qgc3VidHJlZSBtYXRjaCAoJXApXG4iLCB0cmFwaCkpOwogCSAgICAgICAgICAgICAgICByZXR1cm4gdHJhcGg7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJnZXRfdHJhcGhhbmRsZXIgc3VidHJlZSBtYXRjaCAoJXgpXG4iLCB0cmFwaCkpOworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZDpsb29rdXAiLCAiZ2V0X3RyYXBoYW5kbGVyIHN1YnRyZWUgbWF0Y2ggKCVwKVxuIiwgdHJhcGgpKTsKIAkgICAgICAgICAgICByZXR1cm4gdHJhcGg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTYyLDcgKzYwMiw3IEBACiAgICAgLyoKICAgICAgKiAuLi4uIG9yIGZhaWxpbmcgdGhhdCwgcmV0dXJuIHRoZSAiZGVmYXVsdCIgbGlzdCAod2hpY2ggbWF5IGJlIE5VTEwpCiAgICAgICovCi0gICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQiLCAiZ2V0X3RyYXBoYW5kbGVyIGRlZmF1bHQgKCV4KVxuIiwKKyAgICBERUJVR01TR1RMKCggInNubXB0cmFwZDpsb29rdXAiLCAiZ2V0X3RyYXBoYW5kbGVyIGRlZmF1bHQgKCVwKVxuIiwKIAkJCSAgICBuZXRzbm1wX2RlZmF1bHRfdHJhcGhhbmRsZXJzKSk7CiAgICAgcmV0dXJuIG5ldHNubXBfZGVmYXVsdF90cmFwaGFuZGxlcnM7CiB9CkBAIC01ODcsNyArNjI3LDYgQEAKICAgICB1X2NoYXIgICAgICAgICAqcmJ1ZiA9IE5VTEw7CiAgICAgc2l6ZV90ICAgICAgICAgIHJfbGVuID0gNjQsIG9fbGVuID0gMDsKICAgICBpbnQgICAgICAgICAgICAgdHJ1bmMgPSAwOwotICAgIGV4dGVybiBpbnQgICAgICBTeXNsb2dUcmFwOwogCiAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQiLCAic3lzbG9nX2hhbmRsZXJcbiIpKTsKIApAQCAtNjcwLDcgKzcwOSw2IEBACiAgICAgdV9jaGFyICAgICAgICAgKnJidWYgPSBOVUxMOwogICAgIHNpemVfdCAgICAgICAgICByX2xlbiA9IDY0LCBvX2xlbiA9IDA7CiAgICAgaW50ICAgICAgICAgICAgIHRydW5jID0gMDsKLSAgICBleHRlcm4gaW50ICAgICAgZHJvcGF1dGg7CiAKICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJwcmludF9oYW5kbGVyXG4iKSk7CiAKQEAgLTczOCwxNTkgKzc3NiwxMSBAQAogfQogCiAKKyNkZWZpbmUgRVhFQ1VURV9GT1JNQVQJIiVCXG4lYlxuJVZcbiV2XG4iCisKIC8qCiAgKiAgVHJhcCBoYW5kbGVyIGZvciBpbnZva2luZyBhIHN1aXRhYmxlIHNjcmlwdAogICovCi12b2lkCi1zZW5kX2hhbmRsZXJfZGF0YShGSUxFICogZmlsZSwgc3RydWN0IGhvc3RlbnQgKmhvc3QsCi0gICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqcGR1LCBuZXRzbm1wX3RyYW5zcG9ydCAqdHJhbnNwb3J0KQotewotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB0bXB2YXIsICp2YXJzOwotICAgIHN0YXRpYyBvaWQgICAgICB0cmFwb2lkc1tdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA1LCAwIH07Ci0gICAgc3RhdGljIG9pZCAgICAgIHNubXBzeXN1cHRpbWVbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgMywgMCB9OwotICAgIHN0YXRpYyBvaWQgICAgICBzbm1wdHJhcG9pZFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA0LCAxLCAwIH07Ci0gICAgc3RhdGljIG9pZCAgICAgIHNubXB0cmFwZW50W10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEsIDEsIDQsIDMsIDAgfTsKLSAgICBzdGF0aWMgb2lkICAgICAgc25tcHRyYXBhZGRyW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDE4LCAxLCAzLCAwIH07Ci0gICAgc3RhdGljIG9pZCAgICAgIHNubXB0cmFwY29tW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDE4LCAxLCA0LCAwIH07Ci0gICAgb2lkICAgICAgICAgICAgIGVudHRyYXBvaWRbTUFYX09JRF9MRU5dOwotICAgIGludCAgICAgICAgICAgICBlbnR0cmFwbGVuID0gcGR1LT5lbnRlcnByaXNlX2xlbmd0aDsKLQotICAgIGlmICh0cmFuc3BvcnQgIT0gTlVMTCAmJiB0cmFuc3BvcnQtPmZfZm10YWRkciAhPSBOVUxMKSB7Ci0gICAgICAgIGNoYXIgKnRzdHIgPSB0cmFuc3BvcnQtPmZfZm10YWRkcih0cmFuc3BvcnQsIHBkdS0+dHJhbnNwb3J0X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCk7Ci0gICAgICAgIGlmICh0c3RyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGZwcmludGYoZmlsZSwgIiVzXG4lc1xuIiwgaG9zdCA/IGhvc3QtPmhfbmFtZSA6IHRzdHIsIHRzdHIpOwotICAgICAgICAgICAgZnJlZSh0c3RyKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZwcmludGYoZmlsZSwgIiVzXG48VU5LTk9XTj5cbiIsIGhvc3QgPyBob3N0LT5oX25hbWUgOiAiPFVOS05PV04+Iik7Ci0gICAgfQotICAgIGlmIChwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfVFJBUCkgewotICAgICAgICAvKgotICAgICAgICAgKiBjb252ZXJ0IGEgdjEgdHJhcCB0byBhIHYyIHZhcmlhYmxlIGJpbmRpbmcgbGlzdDoKLSAgICAgICAgICogVGhlIHVwdGltZSBhbmQgdHJhcE9JRCBnbyBmaXJzdCBpbiB0aGUgbGlzdC4gCi0gICAgICAgICAqLwotICAgICAgICB0bXB2YXIudmFsLmludGVnZXIgPSAobG9uZyAqKSAmcGR1LT50aW1lOwotICAgICAgICB0bXB2YXIudmFsX2xlbiA9IHNpemVvZihwZHUtPnRpbWUpOwotICAgICAgICB0bXB2YXIudHlwZSA9IEFTTl9USU1FVElDS1M7Ci0gICAgICAgIGZwcmludF92YXJpYWJsZShmaWxlLCBzbm1wc3lzdXB0aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNubXBzeXN1cHRpbWUpIC8gc2l6ZW9mKG9pZCksICZ0bXB2YXIpOwotICAgICAgICB0bXB2YXIudHlwZSA9IEFTTl9PQkpFQ1RfSUQ7Ci0gICAgICAgIGlmIChwZHUtPnRyYXBfdHlwZSA9PSBTTk1QX1RSQVBfRU5URVJQUklTRVNQRUNJRklDKSB7Ci0gICAgICAgICAgICBtZW1jcHkoZW50dHJhcG9pZCwgcGR1LT5lbnRlcnByaXNlLCBzaXplb2Yob2lkKSAqIGVudHRyYXBsZW4pOwotICAgICAgICAgICAgaWYgKGVudHRyYXBvaWRbZW50dHJhcGxlbiAtIDFdICE9IDApCi0gICAgICAgICAgICAgICAgZW50dHJhcG9pZFtlbnR0cmFwbGVuKytdID0gMDsKLSAgICAgICAgICAgIGVudHRyYXBvaWRbZW50dHJhcGxlbisrXSA9IHBkdS0+c3BlY2lmaWNfdHlwZTsKLSAgICAgICAgICAgIHRtcHZhci52YWwub2JqaWQgPSBlbnR0cmFwb2lkOwotICAgICAgICAgICAgdG1wdmFyLnZhbF9sZW4gPSBlbnR0cmFwbGVuICogc2l6ZW9mKG9pZCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0cmFwb2lkc1s5XSA9IHBkdS0+dHJhcF90eXBlICsgMTsKLSAgICAgICAgICAgIHRtcHZhci52YWwub2JqaWQgPSB0cmFwb2lkczsKLSAgICAgICAgICAgIHRtcHZhci52YWxfbGVuID0gMTAgKiBzaXplb2Yob2lkKTsKLSAgICAgICAgfQotICAgICAgICBmcHJpbnRfdmFyaWFibGUoZmlsZSwgc25tcHRyYXBvaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc25tcHRyYXBvaWQpIC8gc2l6ZW9mKG9pZCksICZ0bXB2YXIpOwotICAgIH0KLSAgICAvKgotICAgICAqIGRvIHRoZSB2YXJpYWJsZXMgaW4gdGhlIHBkdSAKLSAgICAgKi8KLSAgICBmb3IgKHZhcnMgPSBwZHUtPnZhcmlhYmxlczsgdmFyczsgdmFycyA9IHZhcnMtPm5leHRfdmFyaWFibGUpIHsKLSAgICAgICAgZnByaW50X3ZhcmlhYmxlKGZpbGUsIHZhcnMtPm5hbWUsIHZhcnMtPm5hbWVfbGVuZ3RoLCB2YXJzKTsKLSAgICB9Ci0gICAgaWYgKHBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19UUkFQKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGNvbnZlcnQgYSB2MSB0cmFwIHRvIGEgdjIgdmFyaWFibGUgYmluZGluZyBsaXN0OgotICAgICAgICAgKiBUaGUgZW50ZXJwcmlzZSBnb2VzIGxhc3QuIAotICAgICAgICAgKi8KLSAgICAgICAgdG1wdmFyLnZhbC5zdHJpbmcgPSBwZHUtPmFnZW50X2FkZHI7Ci0gICAgICAgIHRtcHZhci52YWxfbGVuID0gNDsKLSAgICAgICAgdG1wdmFyLnR5cGUgPSBBU05fSVBBRERSRVNTOwotICAgICAgICBmcHJpbnRfdmFyaWFibGUoZmlsZSwgc25tcHRyYXBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNubXB0cmFwYWRkcikgLyBzaXplb2Yob2lkKSwgJnRtcHZhcik7Ci0gICAgICAgIHRtcHZhci52YWwuc3RyaW5nID0gcGR1LT5jb21tdW5pdHk7Ci0gICAgICAgIHRtcHZhci52YWxfbGVuID0gcGR1LT5jb21tdW5pdHlfbGVuOwotICAgICAgICB0bXB2YXIudHlwZSA9IEFTTl9PQ1RFVF9TVFI7Ci0gICAgICAgIGZwcmludF92YXJpYWJsZShmaWxlLCBzbm1wdHJhcGNvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzbm1wdHJhcGNvbSkgLyBzaXplb2Yob2lkKSwgJnRtcHZhcik7Ci0gICAgICAgIHRtcHZhci52YWwub2JqaWQgPSBwZHUtPmVudGVycHJpc2U7Ci0gICAgICAgIHRtcHZhci52YWxfbGVuID0gcGR1LT5lbnRlcnByaXNlX2xlbmd0aCAqIHNpemVvZihvaWQpOwotICAgICAgICB0bXB2YXIudHlwZSA9IEFTTl9PQkpFQ1RfSUQ7Ci0gICAgICAgIGZwcmludF92YXJpYWJsZShmaWxlLCBzbm1wdHJhcGVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzbm1wdHJhcGVudCkgLyBzaXplb2Yob2lkKSwgJnRtcHZhcik7Ci0gICAgfQotfQotCi12b2lkCi1kb19leHRlcm5hbChjaGFyICpjbWQsIHN0cnVjdCBob3N0ZW50ICpob3N0LAotICAgICAgICAgICAgbmV0c25tcF9wZHUgKnBkdSwgbmV0c25tcF90cmFuc3BvcnQgKnRyYW5zcG9ydCkKLXsKLSAgICBGSUxFICAgICAgICAgICAqZmlsZTsKLSAgICBpbnQgICAgICAgICAgICAgb2xkcXVpY2ssIHJlc3VsdDsKLQotICAgIERFQlVHTVNHVEwoKCJzbm1wdHJhcGQiLCAiUnVubmluZzogJXNcbiIsIGNtZCkpOwotICAgIG9sZHF1aWNrID0gc25tcF9nZXRfcXVpY2tfcHJpbnQoKTsKLSAgICBzbm1wX3NldF9xdWlja19wcmludCgxKTsKLSAgICBpZiAoY21kKSB7Ci0jaWZuZGVmIFdJTjMyCi0gICAgICAgIGludCAgICAgICAgICAgICBmZFsyXTsKLSAgICAgICAgaW50ICAgICAgICAgICAgIHBpZDsKLQotICAgICAgICBpZiAocGlwZShmZCkpIHsKLSAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcigicGlwZSIpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgocGlkID0gZm9yaygpKSA9PSAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogY2hpbGQgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGNsb3NlKDApOwotICAgICAgICAgICAgaWYgKGR1cChmZFswXSkgIT0gMCkgewotICAgICAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcigiZHVwIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjbG9zZShmZFsxXSk7Ci0gICAgICAgICAgICBjbG9zZShmZFswXSk7Ci0gICAgICAgICAgICBzeXN0ZW0oY21kKTsKLSAgICAgICAgICAgIGV4aXQoMCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocGlkID4gMCkgewotICAgICAgICAgICAgZmlsZSA9IGZkb3BlbihmZFsxXSwgInciKTsKLSAgICAgICAgICAgIHNlbmRfaGFuZGxlcl9kYXRhKGZpbGUsIGhvc3QsIHBkdSwgdHJhbnNwb3J0KTsKLSAgICAgICAgICAgIGZjbG9zZShmaWxlKTsKLSAgICAgICAgICAgIGNsb3NlKGZkWzBdKTsKLSAgICAgICAgICAgIGNsb3NlKGZkWzFdKTsKLSAgICAgICAgICAgIGlmICh3YWl0cGlkKHBpZCwgJnJlc3VsdCwgMCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCJ3YWl0cGlkIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoImZvcmsiKTsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgY2hhciAgICAgICAgICAgIGNvbW1hbmRfYnVmWzEyOF07Ci0gICAgICAgIGNoYXIgICAgICAgICAgICBmaWxlX2J1ZltMX3RtcG5hbV07Ci0KLSAgICAgICAgdG1wbmFtKGZpbGVfYnVmKTsKLSAgICAgICAgZmlsZSA9IGZvcGVuKGZpbGVfYnVmLCAidyIpOwotICAgICAgICBpZiAoIWZpbGUpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZm9wZW46ICVzOiAlc1xuIiwgZmlsZV9idWYsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzZW5kX2hhbmRsZXJfZGF0YShmaWxlLCBob3N0LCBwZHUsIHRyYW5zcG9ydCk7Ci0gICAgICAgICAgICBmY2xvc2UoZmlsZSk7Ci0gICAgICAgICAgICBzbnByaW50Zihjb21tYW5kX2J1Ziwgc2l6ZW9mKGNvbW1hbmRfYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICIlcyA8ICVzIiwgY21kLCBmaWxlX2J1Zik7Ci0gICAgICAgICAgICBjb21tYW5kX2J1Zlsgc2l6ZW9mKGNvbW1hbmRfYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgcmVzdWx0ID0gc3lzdGVtKGNvbW1hbmRfYnVmKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJzeXN0ZW06ICVzOiAlc1xuIiwgY29tbWFuZF9idWYsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KQotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAic3lzdGVtOiAlczogJWRcbiIsIGNvbW1hbmRfYnVmLCByZXN1bHQpOwotICAgICAgICAgICAgcmVtb3ZlKGZpbGVfYnVmKTsKLSAgICAgICAgfQotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBXSU4zMiAqLwotICAgIH0KLSAgICBzbm1wX3NldF9xdWlja19wcmludChvbGRxdWljayk7Ci19Ci0KLSNkZWZpbmUgRVhFQ1VURV9GT1JNQVQJIiVCXG4lYlxuJVZcbiV2XG4iCi0KIGludCAgIGNvbW1hbmRfaGFuZGxlciggbmV0c25tcF9wZHUgICAgICAgICAgICpwZHUsCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0ICAgICAqdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKmhhbmRsZXIpCkBAIC05MjgsMTYgKzgxOCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlci0+Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjJfcGR1LCB0cmFuc3BvcnQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQiLCAiZXhlY3V0ZSBmb3JtYXRcbiIpKTsKLSAgICAgICAgICAgIHJlYWxsb2NfZm9ybWF0X3RyYXAoJnJidWYsICZyX2xlbiwgJm9fbGVuLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhFQ1VURV9GT1JNQVQsCisJICAgIGlmICggcGR1LT5jb21tYW5kID09IFNOTVBfTVNHX1RSQVAgJiYgZXhlY19mb3JtYXQxICkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkIiwgImV4ZWMgdjEgPSAnJXMnXG4iLCBleGVjX2Zvcm1hdDEpKTsKKyAgICAgICAgICAgICAgICByZWFsbG9jX2Zvcm1hdF90cmFwKCZyYnVmLCAmcl9sZW4sICZvX2xlbiwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfZm9ybWF0MSwgcGR1LCB0cmFuc3BvcnQpOworCSAgICB9IGVsc2UgaWYgKCBwZHUtPmNvbW1hbmQgIT0gU05NUF9NU0dfVFJBUCAmJiBleGVjX2Zvcm1hdDIgKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQiLCAiZXhlYyB2Mi8zID0gJyVzJ1xuIiwgZXhlY19mb3JtYXQyKSk7CisgICAgICAgICAgICAgICAgcmVhbGxvY19mb3JtYXRfdHJhcCgmcmJ1ZiwgJnJfbGVuLCAmb19sZW4sIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2Zvcm1hdDIsIHBkdSwgdHJhbnNwb3J0KTsKKwkgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJleGVjdXRlIGZvcm1hdFxuIikpOworICAgICAgICAgICAgICAgIHJlYWxsb2NfZm9ybWF0X3RyYXAoJnJidWYsICZyX2xlbiwgJm9fbGVuLCAxLCBFWEVDVVRFX0ZPUk1BVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYyX3BkdSwgdHJhbnNwb3J0KTsKKyAgICAgICAgICAgIH0KIAl9CiAKICAgICAgICAgLyoKICAgICAgICAgICogIGFuZCBwYXNzIHRoaXMgZm9ybWF0dGVkIHN0cmluZyB0byB0aGUgY29tbWFuZCBzcGVjaWZpZWQKICAgICAgICAgICovCi0gICAgICAgIHJ1bl9zaGVsbF9jb21tYW5kKGhhbmRsZXItPnRva2VuLCAoY2hhciopcmJ1ZiwgTlVMTCwgMCk7ICAgLyogTm90IGludGVyZXN0ZWQgaW4gb3V0cHV0ICovCisgICAgICAgIHJ1bl9zaGVsbF9jb21tYW5kKGhhbmRsZXItPnRva2VuLCAoY2hhciopcmJ1ZiwgTlVMTCwgTlVMTCk7ICAgLyogTm90IGludGVyZXN0ZWQgaW4gb3V0cHV0ICovCiAgICAgICAgIHNubXBfc2V0X3F1aWNrX3ByaW50KG9sZHF1aWNrKTsKICAgICAgICAgaWYgKHBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19UUkFQKQogICAgICAgICAgICAgc25tcF9mcmVlX3BkdSh2Ml9wZHUpOwpAQCAtOTUwLDIzICs4NDksNiBAQAogCiAKIC8qCi0gKiAgVHJhcCBoYW5kbGVyIGZvciBkb2luZyBzb21ldGhpbmcgd2l0aCAiZXZlbnQiIHRyYXBzCi0gKiAgICAgIChub3QgZW50aXJlbHkgY2xlYXIgd2hhdCB0aGlzIGlzIGFib3V0ID8/PykKLSAqLwotCS8qIFhYWCAtIGluIHNubXB0cmFwZC5jICovCi12b2lkIGV2ZW50X2lucHV0KG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZwKTsKLQotaW50ICAgZXZlbnRfaGFuZGxlciggbmV0c25tcF9wZHUgICAgICAgICAgICpwZHUsCi0gICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydCAgICAgKnRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqaGFuZGxlcikKLXsKLSAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJldmVudF9oYW5kbGVyXG4iKSk7Ci0gICAgZXZlbnRfaW5wdXQocGR1LT52YXJpYWJsZXMpOwotICAgIHJldHVybiBORVRTTk1QVFJBUERfSEFORExFUl9PSzsKLX0KLQotCi0vKgogICogIFRyYXAgaGFuZGxlciBmb3IgZm9yd2FyZGluZyB0byB0aGUgQWdlbnRYIG1hc3RlciBhZ2VudAogICovCiBpbnQgYXhmb3J3YXJkX2hhbmRsZXIoIG5ldHNubXBfcGR1ICAgICAgICAgICAqcGR1LApAQCAtMTA1NSw3ICs5MzcsNyBAQAogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyczsKICAgICBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKnRyYXBoOwogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSAobmV0c25tcF90cmFuc3BvcnQgKikgbWFnaWM7Ci0gICAgaW50IHJldDsKKyAgICBpbnQgcmV0LCBpZHg7CiAgICAgZXh0ZXJuIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqbmV0c25tcF9hdXRoX2dsb2JhbF90cmFwaGFuZGxlcnM7CiAgICAgZXh0ZXJuIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqbmV0c25tcF9wcmVfZ2xvYmFsX3RyYXBoYW5kbGVyczsKICAgICBleHRlcm4gbmV0c25tcF90cmFwZF9oYW5kbGVyICpuZXRzbm1wX3Bvc3RfZ2xvYmFsX3RyYXBoYW5kbGVyczsKQEAgLTExNTYsNzcgKzEwMzgsMjYgQEAKICAgICAgICAgICogIE9LIC0gRW5vdWdoIHdhZmZsaW5nLCBsZXQncyBnZXQgdG8gd29yay4uLi4uCiAJICovCiAKLSAgICAgICAgLyoKLQkgKiAgYSkgYXV0aGVudGljYXRpb24gaGFuZGxlcnMKLQkgKi8KLSAgICAgICAgdHJhcGggPSBuZXRzbm1wX2F1dGhfZ2xvYmFsX3RyYXBoYW5kbGVyczsKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXB0cmFwZCIsICJSdW5uaW5nIGF1dGggdHJhcCBoYW5kbGVyc1xuIikpOwotCXdoaWxlICh0cmFwaCkgewotICAgICAgICAgICAgaWYgKCFuZXRzbm1wX3RyYXBkX2NoZWNrX2F1dGgodHJhcGgtPmF1dGh0eXBlcykpIHsKLSAgICAgICAgICAgICAgICB0cmFwaCA9IHRyYXBoLT5uZXh0aDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogd2UgY29udGludWUgb24gYW5kIHNraXAgdGhpcyBvbmUgKi8KLSAgICAgICAgICAgIH0KLQkgICAgcmV0ID0gKCoodHJhcGgtPmhhbmRsZXIpKShwZHUsIHRyYW5zcG9ydCwgdHJhcGgpOwotICAgICAgICAgICAgaWYgKHJldCA9PSBORVRTTk1QVFJBUERfSEFORExFUl9GSU5JU0gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBpZiAocmV0ID09IE5FVFNOTVBUUkFQRF9IQU5ETEVSX0JSRUFLKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCSAgICB0cmFwaCA9IHRyYXBoLT5uZXh0aDsKLQl9CisgICAgICAgIGZvciggaWR4ID0gMDsgaGFuZGxlcnNbaWR4XS5kZXNjcjsgKytpZHggKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcHRyYXBkIiwgIlJ1bm5pbmcgJXMgaGFuZGxlcnNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyc1tpZHhdLmRlc2NyKSk7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSBoYW5kbGVyc1tpZHhdLmhhbmRsZXIpIC8qIHNwZWNpZmljICovCisgICAgICAgICAgICAgICAgdHJhcGggPSBuZXRzbm1wX2dldF90cmFwaGFuZGxlcih0cmFwT2lkLCB0cmFwT2lkTGVuKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0cmFwaCA9ICpoYW5kbGVyc1tpZHhdLmhhbmRsZXI7CiAKLSAgICAgICAgLyoKLQkgKiAgYikgcHJlLXNwZWNpZmljIGdsb2JhbCBoYW5kbGVycwotCSAqLwotICAgICAgICB0cmFwaCA9IG5ldHNubXBfcHJlX2dsb2JhbF90cmFwaGFuZGxlcnM7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdHJhcGQiLCAiUnVubmluZyBwcmUtZ2xvYmFsIHRyYXAgaGFuZGxlcnNcbiIpKTsKLQl3aGlsZSAodHJhcGgpIHsKLSAgICAgICAgICAgIGlmICghbmV0c25tcF90cmFwZF9jaGVja19hdXRoKHRyYXBoLT5hdXRodHlwZXMpKSB7Ci0gICAgICAgICAgICAgICAgdHJhcGggPSB0cmFwaC0+bmV4dGg7Ci0gICAgICAgICAgICAgICAgY29udGludWU7IC8qIHdlIGNvbnRpbnVlIG9uIGFuZCBza2lwIHRoaXMgb25lICovCi0gICAgICAgICAgICB9Ci0JICAgIHJldCA9ICgqKHRyYXBoLT5oYW5kbGVyKSkocGR1LCB0cmFuc3BvcnQsIHRyYXBoKTsKLSAgICAgICAgICAgIGlmIChyZXQgPT0gTkVUU05NUFRSQVBEX0hBTkRMRVJfRklOSVNIKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgaWYgKHJldCA9PSBORVRTTk1QVFJBUERfSEFORExFUl9CUkVBSykKLSAgICAgICAgICAgICAgICBicmVhazsKLQkgICAgdHJhcGggPSB0cmFwaC0+bmV4dGg7Ci0JfQorICAgICAgICAgICAgZm9yKCA7IHRyYXBoOyB0cmFwaCA9IHRyYXBoLT5uZXh0aCkgeworICAgICAgICAgICAgICAgIGlmICghbmV0c25tcF90cmFwZF9jaGVja19hdXRoKHRyYXBoLT5hdXRodHlwZXMpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogd2UgY29udGludWUgb24gYW5kIHNraXAgdGhpcyBvbmUgKi8KIAotICAgICAgICAvKgotCSAqICBjKSB0cmFwLXNwZWNpZmljIGhhbmRsZXJzCi0JICovCi0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdHJhcGQiLCAiUnVubmluZyB0cmFwIHNwZWNpZmljIGhhbmRsZXJzXG4iKSk7Ci0gICAgICAgIHRyYXBoID0gbmV0c25tcF9nZXRfdHJhcGhhbmRsZXIodHJhcE9pZCwgdHJhcE9pZExlbik7Ci0Jd2hpbGUgKHRyYXBoKSB7Ci0gICAgICAgICAgICBpZiAoIW5ldHNubXBfdHJhcGRfY2hlY2tfYXV0aCh0cmFwaC0+YXV0aHR5cGVzKSkgewotICAgICAgICAgICAgICAgIHRyYXBoID0gdHJhcGgtPm5leHRoOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiB3ZSBjb250aW51ZSBvbiBhbmQgc2tpcCB0aGlzIG9uZSAqLwotICAgICAgICAgICAgfQotCSAgICByZXQgPSAoKih0cmFwaC0+aGFuZGxlcikpKHBkdSwgdHJhbnNwb3J0LCB0cmFwaCk7Ci0gICAgICAgICAgICBpZiAocmV0ID09IE5FVFNOTVBUUkFQRF9IQU5ETEVSX0ZJTklTSCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIGlmIChyZXQgPT0gTkVUU05NUFRSQVBEX0hBTkRMRVJfQlJFQUspCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0JICAgIHRyYXBoID0gdHJhcGgtPm5leHRoOwotCX0KKyAgICAgICAgICAgICAgICByZXQgPSAoKih0cmFwaC0+aGFuZGxlcikpKHBkdSwgdHJhbnNwb3J0LCB0cmFwaCk7CisgICAgICAgICAgICAgICAgaWYoTkVUU05NUFRSQVBEX0hBTkRMRVJfRklOSVNIID09IHJldCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgaWYgKHJldCA9PSBORVRTTk1QVFJBUERfSEFORExFUl9CUkVBSykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIG1vdmUgb24gdG8gbmV4dCB0eXBlICovCisgICAgICAgICAgICB9IC8qIHRyYXBoICovCisgICAgICAgIH0gLyogaGFuZGxlcnMgKi8KIAotICAgICAgICAvKgotCSAqICBkKSBvdGhlciBnbG9iYWwgaGFuZGxlcnMKLQkgKi8KLSAgICAgICAgREVCVUdNU0dUTCgoInNubXB0cmFwZCIsICJSdW5uaW5nIGdsb2JhbCBoYW5kbGVyc1xuIikpOwotICAgICAgICB0cmFwaCA9IG5ldHNubXBfcG9zdF9nbG9iYWxfdHJhcGhhbmRsZXJzOwotCXdoaWxlICh0cmFwaCkgewotICAgICAgICAgICAgaWYgKCFuZXRzbm1wX3RyYXBkX2NoZWNrX2F1dGgodHJhcGgtPmF1dGh0eXBlcykpIHsKLSAgICAgICAgICAgICAgICB0cmFwaCA9IHRyYXBoLT5uZXh0aDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogd2UgY29udGludWUgb24gYW5kIHNraXAgdGhpcyBvbmUgKi8KLSAgICAgICAgICAgIH0KLQkgICAgcmV0ID0gKCoodHJhcGgtPmhhbmRsZXIpKShwZHUsIHRyYW5zcG9ydCwgdHJhcGgpOwotICAgICAgICAgICAgaWYgKHJldCA9PSBORVRTTk1QVFJBUERfSEFORExFUl9GSU5JU0gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBpZiAocmV0ID09IE5FVFNOTVBUUkFQRF9IQU5ETEVSX0JSRUFLKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCSAgICB0cmFwaCA9IHRyYXBoLT5uZXh0aDsKLQl9CiAKIAlpZiAocGR1LT5jb21tYW5kID09IFNOTVBfTVNHX0lORk9STSkgewogCSAgICBuZXRzbm1wX3BkdSAqcmVwbHkgPSBzbm1wX2Nsb25lX3BkdShwZHUpOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuaCBiL2FwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmgKaW5kZXggOTIxMmQxMi4uMDk3YzAyZCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuaAorKysgYi9hcHBzL3NubXB0cmFwZF9oYW5kbGVycy5oCkBAIC0zNSw2ICszNSw3IEBACiBOZXRzbm1wX1RyYXBfSGFuZGxlciAgIGZvcndhcmRfaGFuZGxlcjsKIE5ldHNubXBfVHJhcF9IYW5kbGVyICAgYXhmb3J3YXJkX2hhbmRsZXI7CiBOZXRzbm1wX1RyYXBfSGFuZGxlciAgIG5vdGlmaWNhdGlvbl9oYW5kbGVyOworTmV0c25tcF9UcmFwX0hhbmRsZXIgICBteXNxbF9oYW5kbGVyOwogCiB2b2lkIGZyZWVfdHJhcDFfZm10KHZvaWQpOwogdm9pZCBmcmVlX3RyYXAyX2ZtdCh2b2lkKTsKQEAgLTQ0LDYgKzQ1LDcgQEAKICNkZWZpbmUgTkVUU05NUFRSQVBEX0FVVEhfSEFORExFUiAgICAxCiAjZGVmaW5lIE5FVFNOTVBUUkFQRF9QUkVfSEFORExFUiAgICAgMgogI2RlZmluZSBORVRTTk1QVFJBUERfUE9TVF9IQU5ETEVSICAgIDMKKyNkZWZpbmUgTkVUU05NUFRSQVBEX0RFRkFVTFRfSEFORExFUiA0CiAKICNkZWZpbmUgTkVUU05NUFRSQVBEX0hBTkRMRVJfT0sgICAgICAxCS8qIFN1Y2NlZWQsICYga2VlcCBnb2luZyAqLwogI2RlZmluZSBORVRTTk1QVFJBUERfSEFORExFUl9GQUlMICAgIDIJLyogRmFpbGVkIGJ1dCBrZWVwIGdvaW5nICovCmRpZmYgLS1naXQgYS9hcHBzL3NubXB0cmFwZF9sb2cuYyBiL2FwcHMvc25tcHRyYXBkX2xvZy5jCmluZGV4IGJjMGIxZTMuLmY0ODgzMDIgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYXBkX2xvZy5jCisrKyBiL2FwcHMvc25tcHRyYXBkX2xvZy5jCkBAIC02MTksNiArNjE5LDggQEAKICAgICBjaGFyICAgICAgICAgICAgZm10X2NtZCA9IG9wdGlvbnMtPmNtZDsgICAgIC8qIHdoYXQgd2UncmUgZm9ybWF0dGluZyAqLwogICAgIHVfY2hhciAgICAgICAgICp0ZW1wX2J1ZiA9IE5VTEw7CiAgICAgc2l6ZV90ICAgICAgICAgIHRlbXBfYnVmX2xlbiA9IDY0LCB0ZW1wX291dF9sZW4gPSAwOworICAgIGNoYXIgICAgICAgICAgICp0c3RyOworICAgIHVuc2lnbmVkIGludCAgICBvZmxhZ3M7CiAKICAgICBpZiAoKHRlbXBfYnVmID0gY2FsbG9jKHRlbXBfYnVmX2xlbiwgMSkpID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIDA7CkBAIC02NzQsMTMwICs2NzYsNTkgQEAKICAgICAgICAgICogV3JpdGUgdGhlIG51bWVyaWNhbCB0cmFuc3BvcnQgaW5mb3JtYXRpb24uICAKICAgICAgICAgICovCiAgICAgICAgIGlmICh0cmFuc3BvcnQgIT0gTlVMTCAmJiB0cmFuc3BvcnQtPmZfZm10YWRkciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBjaGFyICAgICAgICAgICAqdHN0ciA9Ci0gICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5mX2ZtdGFkZHIodHJhbnNwb3J0LCBwZHUtPnRyYW5zcG9ydF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghc25tcF9zdHJjYXQKLSAgICAgICAgICAgICAgICAoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLCAodV9jaGFyICopdHN0cikpIHsKLSAgICAgICAgICAgICAgICBpZiAodHN0ciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWUodHN0cik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0ZW1wX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWUodGVtcF9idWYpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9mbGFncyA9IHRyYW5zcG9ydC0+ZmxhZ3M7CisgICAgICAgICAgICB0cmFuc3BvcnQtPmZsYWdzICY9IH5ORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0hPU1ROQU1FOworICAgICAgICAgICAgdHN0ciA9IHRyYW5zcG9ydC0+Zl9mbXRhZGRyKHRyYW5zcG9ydCwgcGR1LT50cmFuc3BvcnRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCk7CisgICAgICAgICAgICB0cmFuc3BvcnQtPmZsYWdzID0gb2ZsYWdzOworICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0c3RyKSBnb3RvIG5vaXA7CisgICAgICAgICAgICBpZiAoIXNubXBfc3RyY2F0KCZ0ZW1wX2J1ZiwgJnRlbXBfYnVmX2xlbiwgJnRlbXBfb3V0X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgKHVfY2hhciAqKXRzdHIpKSB7CisgICAgICAgICAgICAgICAgU05NUF9GUkVFKHRlbXBfYnVmKTsKKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUodHN0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodHN0ciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZnJlZSh0c3RyKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNOTVBfRlJFRSh0c3RyKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghc25tcF9zdHJjYXQKLSAgICAgICAgICAgICAgICAoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLAotICAgICAgICAgICAgICAgICAoY29uc3QgdV9jaGFyKikiPFVOS05PV04+IikpIHsKLSAgICAgICAgICAgICAgICBpZiAodGVtcF9idWYgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBmcmVlKHRlbXBfYnVmKTsKLSAgICAgICAgICAgICAgICB9Citub2lwOgorICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdCgmdGVtcF9idWYsICZ0ZW1wX2J1Zl9sZW4sICZ0ZW1wX291dF9sZW4sIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1X2NoYXIqKSI8VU5LTk9XTj4iKSkgeworICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0ZW1wX2J1Zik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgLyoKLSAgICAgICAgICogV3JpdGUgYSBob3N0IG5hbWUuICAKLSAgICAgICAgICovCiAgICAgY2FzZSBDSFJfUERVX05BTUU6CiAgICAgICAgIC8qCi0gICAgICAgICAqIFJpZ2h0LCBhcHBhcmVudGx5IGEgbmFtZSBsb29rdXAgaXMgd2FudGVkLiAgVGhpcyBpcyBvbmx5IHJlYXNvbmFibGUKLSAgICAgICAgICogZm9yIHRoZSBVRFAgYW5kIFRDUCB0cmFuc3BvcnQgZG9tYWlucyAod2UgZG9uJ3Qgd2FudCB0byB0cnkgdG8gYmUKLSAgICAgICAgICogdG9vIGNsZXZlciBoZXJlKS4gIAorICAgICAgICAgKiBUcnkgdG8gY29udmVydCB0aGUgbnVtZXJpY2FsIHRyYW5zcG9ydCBpbmZvcm1hdGlvbgorICAgICAgICAgKiAgaW50byBhIGhvc3RuYW1lLiAgT3IgcmF0aGVyLCBoYXZlIHRoZSB0cmFuc3BvcnQtc3BlY2lmaWMKKyAgICAgICAgICogIGFkZHJlc3MgZm9ybWF0dGluZyByb3V0aW5lIGRvIHRoaXMuCisgICAgICAgICAqIE90aGVyd2lzZSBmYWxscyBiYWNrIHRvIHRoZSBudW1lcmljIGFkZHJlc3MgZm9ybWF0LgogICAgICAgICAgKi8KLSNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UQ1BfRE9NQUlOCi0gICAgICAgIGlmICh0cmFuc3BvcnQgIT0gTlVMTCAmJiAodHJhbnNwb3J0LT5kb21haW4gPT0gbmV0c25tcFVEUERvbWFpbiB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydC0+ZG9tYWluID09Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zbm1wVENQRG9tYWluKSkgewotI2Vsc2UKLSAgICAgICAgaWYgKHRyYW5zcG9ydCAhPSBOVUxMICYmIHRyYW5zcG9ydC0+ZG9tYWluID09IG5ldHNubXBVRFBEb21haW4pIHsKLSNlbmRpZgotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFRoaXMgaXMga2luZCBvZiBibGV0Y2hlcm91cyAtLSBpdCBicmVha3MgdGhlIG9wYWNpdHkgb2YKLSAgICAgICAgICAgICAqIHRyYW5zcG9ydF9kYXRhIGJ1dCBuZXZlciBtaW5kIC0tIHRoZSBhbHRlcm5hdGl2ZSBpcyBhIGxvdCBvZgotICAgICAgICAgICAgICogbXVuZ2luZyBzdHJpbmdzIGZyb20gZl9mbXRhZGRyLiAgCi0gICAgICAgICAgICAgKi8KLXR5cGVkZWYgc3RydWN0IG5ldHNubXBfdWRwX2FkZHJfcGFpcl9zIHsgICAvKiBGcm9tIHNubXBVRFBEb21haW4uYyAqLwotICAgIHN0cnVjdCBzb2NrYWRkcl9pbiByZW1vdGVfYWRkcjsKLSAgICBzdHJ1Y3QgaW5fYWRkciBsb2NhbF9hZGRyOwotfSBuZXRzbm1wX3VkcF9hZGRyX3BhaXI7Ci0KLSAgICAgICAgICAgIG5ldHNubXBfdWRwX2FkZHJfcGFpciAqYWRkciA9Ci0gICAgICAgICAgICAgICAgKG5ldHNubXBfdWRwX2FkZHJfcGFpciAqKSBwZHUtPnRyYW5zcG9ydF9kYXRhOwotICAgICAgICAgICAgaWYgKGFkZHIgIT0gTlVMTAotICAgICAgICAgICAgICAgICYmIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoID09Ci0gICAgICAgICAgICAgICAgc2l6ZW9mKG5ldHNubXBfdWRwX2FkZHJfcGFpcikpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQVBQX05VTUVSSUNfSVApKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhvc3QgPQotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0aG9zdGJ5YWRkcigoY2hhciAqKSAmKGFkZHItPnJlbW90ZV9hZGRyLnNpbl9hZGRyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSwgQUZfSU5FVCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChob3N0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdAotICAgICAgICAgICAgICAgICAgICAgICAgKCZ0ZW1wX2J1ZiwgJnRlbXBfYnVmX2xlbiwgJnRlbXBfb3V0X2xlbiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopaG9zdC0+aF9uYW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKHRlbXBfYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdAotICAgICAgICAgICAgICAgICAgICAgICAgKCZ0ZW1wX2J1ZiwgJnRlbXBfYnVmX2xlbiwgJnRlbXBfb3V0X2xlbiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopaW5ldF9udG9hKGFkZHItPnJlbW90ZV9hZGRyLnNpbl9hZGRyKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSh0ZW1wX2J1Zik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdAotICAgICAgICAgICAgICAgICAgICAoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLAotICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVfY2hhciopIjxVTktOT1dOPiIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmcmVlKHRlbXBfYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAodHJhbnNwb3J0ICE9IE5VTEwgJiYgdHJhbnNwb3J0LT5mX2ZtdGFkZHIgIT0gTlVMTCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFNvbWUgb3RoZXIgZG9tYWluIGZvciB3aGljaCB3ZSBkbyBub3Qga25vdyBob3cgdG8gZG8gYSBuYW1lCi0gICAgICAgICAgICAgKiBsb29rdXAuICBGYWxsIGJhY2sgdG8gdGhlIGZvcm1hdHRlZCB0cmFuc3BvcnQgYWRkcmVzcy4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBjaGFyICAgICAgICAgICAqdHN0ciA9Ci0gICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5mX2ZtdGFkZHIodHJhbnNwb3J0LCBwZHUtPnRyYW5zcG9ydF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghc25tcF9zdHJjYXQKLSAgICAgICAgICAgICAgICAoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLCAodV9jaGFyICopdHN0cikpIHsKLSAgICAgICAgICAgICAgICBpZiAodHN0ciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWUodHN0cik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0ZW1wX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWUodGVtcF9idWYpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKHRyYW5zcG9ydCAhPSBOVUxMICYmIHRyYW5zcG9ydC0+Zl9mbXRhZGRyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG9mbGFncyA9IHRyYW5zcG9ydC0+ZmxhZ3M7CisgICAgICAgICAgICBpZiAoIW5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBfTlVNRVJJQ19JUCkpCisgICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5mbGFncyB8PSBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0hPU1ROQU1FOworICAgICAgICAgICAgdHN0ciA9IHRyYW5zcG9ydC0+Zl9mbXRhZGRyKHRyYW5zcG9ydCwgcGR1LT50cmFuc3BvcnRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCk7CisgICAgICAgICAgICB0cmFuc3BvcnQtPmZsYWdzID0gb2ZsYWdzOworICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0c3RyKSBnb3RvIG5vaG9zdDsKKyAgICAgICAgICAgIGlmICghc25tcF9zdHJjYXQoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAodV9jaGFyICopdHN0cikpIHsKKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUodGVtcF9idWYpOworICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0c3RyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0c3RyICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBmcmVlKHRzdHIpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgU05NUF9GUkVFKHRzdHIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFdlIGFyZSBraW5kIG9mIHN0dWNrISAgCi0gICAgICAgICAgICAgKi8KK25vaG9zdDoKICAgICAgICAgICAgIGlmICghc25tcF9zdHJjYXQoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdV9jaGFyKikiPFVOS05PV04+IikpIHsKLSAgICAgICAgICAgICAgICBpZiAodGVtcF9idWYgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBmcmVlKHRlbXBfYnVmKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU05NUF9GUkVFKHRlbXBfYnVmKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtODY0LDcgKzc5NSw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlIHRoZSBjb250ZXh0IG9pZC4gIAogICAgICAgICAgKi8KLSAgICAgICAgaWYgKCFzcHJpbnRfcmVhbGxvY19vYmppZAorICAgICAgICBpZiAoIXNwcmludF9yZWFsbG9jX2hleHN0cmluZwogICAgICAgICAgICAgKCZ0ZW1wX2J1ZiwgJnRlbXBfYnVmX2xlbiwgJnRlbXBfb3V0X2xlbiwgMSwgcGR1LT5jb250ZXh0RW5naW5lSUQsCiAgICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURMZW4pKSB7CiAgICAgICAgICAgICBmcmVlKHRlbXBfYnVmKTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXBkX3NxbC5jIGIvYXBwcy9zbm1wdHJhcGRfc3FsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThkM2ZiZQotLS0gL2Rldi9udWxsCisrKyBiL2FwcHMvc25tcHRyYXBkX3NxbC5jCkBAIC0wLDAgKzEsMTExNSBAQAorLyoKKyAqIEZpbGUgICAgICAgOiBzbm1wdHJhcGRfc3FsCisgKiBBdXRob3IgICAgIDogUm9iZXJ0IFN0b3J5CisgKgorICogQ29weXJpZ2h0IMKpIDIwMDkgU2NpZW5jZSBMb2dpYywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqCisgKiBUaGlzIGZpbGUgaW1wbGVtZW50cyBhIGhhbmRsZXIgZm9yIHNubXB0cmFwZCB3aGljaCB3aWxsIGNhY2hlIGluY29taW5nCisgKiB0cmFwcyBhbmQgdGhlbiB3cml0ZSB0aGVtIHRvIGEgTXlTUUwgZGF0YWJhc2UuCisgKgorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpZmRlZiBORVRTTk1QX1VTRV9NWVNRTAorCisjaWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWYgSEFWRV9XSU5TT0NLX0gKKyNpbmNsdWRlIDx3aW5zb2NrLmg+CisjZWxzZQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxuZXRkYi5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSAic25tcHRyYXBkX2hhbmRsZXJzLmgiCisjaW5jbHVkZSAic25tcHRyYXBkX2F1dGguaCIKKyNpbmNsdWRlICJzbm1wdHJhcGRfbG9nLmgiCisKKy8qCisgKiBTUUwgaW5jbHVkZXMKKyAqLworI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCisjdW5kZWYgUEFDS0FHRV9OQU1FCisjdW5kZWYgUEFDS0FHRV9TVFJJTkcKKyN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKyN1bmRlZiBQQUNLQUdFX1ZFUlNJT04KKyNpbmNsdWRlIDxteV9nbG9iYWwuaD4KKyNpbmNsdWRlIDxteV9zeXMuaD4KKyNpbmNsdWRlIDxteXNxbC5oPgorI2luY2x1ZGUgPGVycm1zZy5oPgorCisvKgorICogZGVmaW5lIGEgc3RydWN0dXJlIHRvIGhvbGQgYWxsIHRoZSBmaWxlIGdsb2JhbHMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9zcWxfZ2xvYmFsc190IHsKKyAgICBjaGFyICAgICAgICAqaG9zdF9uYW1lOyAgICAgICAvKiBzZXJ2ZXIgaG9zdCAoZGVmPWxvY2FsaG9zdCkgKi8KKyAgICBjaGFyICAgICAgICAqdXNlcl9uYW1lOyAgICAgICAvKiB1c2VybmFtZSAoZGVmPWxvZ2luIG5hbWUpICovCisgICAgY2hhciAgICAgICAgKnBhc3N3b3JkOyAgICAgICAgLyogcGFzc3dvcmQgKGRlZj1ub25lKSAqLworICAgIHVfaW50ICAgICAgICBwb3J0X251bTsgICAgICAgIC8qIHBvcnQgbnVtYmVyIChidWlsdC1pbiB2YWx1ZSkgKi8KKyAgICBjaGFyICAgICAgICAqc29ja2V0X25hbWU7ICAgICAvKiBzb2NrZXQgbmFtZSAoYnVpbHQtaW4gdmFsdWUpICovCisgICAgY2hhciAgICAgICAgKmRiX25hbWU7ICAgICAgICAgLyogZGF0YWJhc2UgbmFtZSAoZGVmPW5vbmUpICovCisgICAgdV9pbnQgICAgICAgIGZsYWdzOyAgICAgICAgICAgLyogY29ubmVjdGlvbiBmbGFncyAobm9uZSkgKi8KKyAgICBNWVNRTCAgICAgICAqY29ubjsgICAgICAgICAgICAvKiBjb25uZWN0aW9uICovCisgICAgdV9jaGFyICAgICAgIGNvbm5lY3RlZDsgICAgICAgLyogY29ubmVjdGVkIGZsYWcgKi8KKyAgICBjb25zdCBjaGFyICAqZ3JvdXBzWzNdOworICAgIE1ZU1FMX1NUTVQgICp0cmFwX3N0bXQsICp2Yl9zdG10OyAvKiBwcmVwYXJlZCBzdGF0ZW1lbnRzICovCisgICAgdV9pbnQgICAgICAgIGFsYXJtX2lkOyAgICAgICAgLyogaWQgb2YgcGVyaW9kaWMgc2F2ZSBhbGFybSAqLworICAgIG5ldHNubXBfY29udGFpbmVyICpxdWV1ZTsgICAgIC8qIGNvbnRhaW5lcjsgdHJhcHMgcGVuZGluZyBkYXRhYmFzZSB3cml0ZSAqLworICAgIHVfaW50ICAgICAgICBxdWV1ZV9tYXg7ICAgICAgIC8qIGF1dG8gc2F2ZSBxdWV1ZSB3aGVuIGl0IGdldHMgdGhpcyBiaWcgKi8KKyAgICBpbnQgICAgICAgICAgcXVldWVfaW50ZXJ2YWw7ICAvKiBhdXRvIHNhdmUgZXZlcnkgTiBzZWNvbmRzICovCit9IG5ldHNubXBfc3FsX2dsb2JhbHM7CisKK3N0YXRpYyBuZXRzbm1wX3NxbF9nbG9iYWxzIF9zcWwgPSB7CisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAvKiBob3N0ICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAvKiB1c2VybmFtZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgLyogcGFzc3dvcmQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIHBvcnQgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIHNvY2tldCAqLworICAgICJuZXRfc25tcCIsICAgICAgICAgICAgLyogZGF0YWJhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm4gZmxhZ3MgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3Rpb24gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3RlZCAqLworICAgIHsgImNsaWVudCIsICJzbm1wdHJhcGQiLCBOVUxMIH0sICAvKiBncm91cHMgdG8gcmVhZCBmcm9tIC5teS5jbmYgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIHRyYXBfc3RtdCAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgLyogdmJfc3RtdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgLyogYWxhcm1faWQgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIHF1ZXVlICovCisgICAgMSwgICAgICAgICAgICAgICAgICAgICAvKiBxdWV1ZV9tYXggKi8KKyAgICAtMSAgICAgICAgICAgICAgICAgICAgIC8qIHF1ZXVlX2ludGVydmFsICovCit9OworCisvKgorICogbG9nIHRyYXBzIGFzIHRleHQsIG9yIGJpbmFyeSBibG9icz8KKyAqLworI2RlZmluZSBORVRTTk1QX01ZU1FMX1RSQVBfVkFMVUVfVEVYVCAxCisKKy8qCisgKiBXZSB3aWxsIGJlIHVzaW5nIHByZXBhcmVkIHN0YXRlbWVudHMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIFRoaXMKKyAqIHJlcXVpcmVzIGEgc3FsIGJpbmQgc3RydWN0dXJlIGZvciBlYWNoIGNlbGwgdG8gYmUgaW5zZXJ0ZWQgaW4gdGhlCisgKiBkYXRhYmFzZS4gV2Ugd2lsbCBiZSB1c2luZyAyIGdsb2JhbCBzdGF0aWMgc3RydWN0dXJlcyB0byBiaW5kIHRvLAorICogYW5kIGEgbmV0c25tcCBjb250YWluZXIgdG8gc3RvcmUgdGhlIG5lY2Vzc2FyeSBkYXRhIHVudGlsIGl0IGlzCisgKiB3cml0dGVuIHRvIHRoZSBkYXRhYmFzZS4gRml4ZWQgc2l6ZSBidWZmZXJzIGFyZSBhbHNvIHVzZWQgdG8KKyAqIHNpbXBsaWZ5IG1lbW9yeSBtYW5hZ2VtZW50LgorICovCisvKiogZW51bXMgZm9yIHRoZSB0cmFwIGZpZWxkcyB0byBiZSBib3VuZCAqLworZW51bXsKKyAgICBUQklORF9EQVRFID0gMCwgICAgICAgICAgIC8qIHRpbWUgcmVjZWl2ZWQgKi8KKyAgICBUQklORF9IT1NULCAgICAgICAgICAgICAgIC8qIHNyYyBpcCAqLworICAgIFRCSU5EX1VTRVIsICAgICAgICAgICAgICAgLyogYXV0aC91c2VyIGluZm9ybWF0aW9uICovCisgICAgVEJJTkRfVFlQRSwgICAgICAgICAgICAgICAvKiBwZHUgdHlwZSAqLworICAgIFRCSU5EX1ZFUiwgICAgICAgICAgICAgICAgLyogc25tcCB2ZXJzaW9uICovCisgICAgVEJJTkRfUkVRSUQsICAgICAgICAgICAgICAvKiByZXF1ZXN0IGlkICovCisgICAgVEJJTkRfT0lELCAgICAgICAgICAgICAgICAvKiB0cmFwIE9JRCAqLworICAgIFRCSU5EX1RSQU5TUE9SVCwgICAgICAgICAgLyogdHJhbnNwb3J0ICovCisgICAgVEJJTkRfU0VDVVJJVFlfTU9ERUwsICAgICAvKiBzZWN1cml0eSBtb2RlbCAqLworICAgIFRCSU5EX3YzX01TR0lELCAgICAgICAgICAgLyogdjMgbXNnIGlkICovCisgICAgVEJJTkRfdjNfU0VDVVJJVFlfTEVWRUwsICAvKiBzZWN1cml0eSBsZXZlbCAqLworICAgIFRCSU5EX3YzX0NPTlRFWFRfTkFNRSwgICAgLyogY29udGV4dCAqLworICAgIFRCSU5EX3YzX0NPTlRFWFRfRU5HSU5FLCAgLyogY29udGV4dCBlbmdpbmUgaWQgKi8KKyAgICBUQklORF92M19TRUNVUklUWV9OQU1FLCAgIC8qIHNlY3VyaXR5IG5hbWUgKi8KKyAgICBUQklORF92M19TRUNVUklUWV9FTkdJTkUsIC8qIHNlY3VyaXR5IGVuZ2luZSBpZCAqLworICAgIFRCSU5EX01BWAorfTsKKworLyoqIGVudW1zIGZvciB0aGUgdmFyYmluZCBmaWVsZHMgdG8gYmUgYm91bmQgKi8KK2VudW0geworICAgIFZCSU5EX0lEID0gMCwgICAgICAgICAgICAgLyogdHJhcF9pZCAqLworICAgIFZCSU5EX09JRCwgICAgICAgICAgICAgICAgLyogdmFyYmluZCBvaWQgKi8KKyAgICBWQklORF9UWVBFLCAgICAgICAgICAgICAgIC8qIHZhcmJpbmQgdHlwZSAqLworICAgIFZCSU5EX1ZBTCwgICAgICAgICAgICAgICAgLyogdmFyYmluZCB2YWx1ZSAqLworICAgIFZCSU5EX01BWAorfTsKKworLyoqIGJ1ZmZlciBzdHJ1Y3QgZm9yIHZhcmJpbmQgZGF0YSAqLwordHlwZWRlZiBzdHJ1Y3Qgc3FsX3ZiX2J1Zl90IHsKKworICAgIGNoYXIgICAgICAqb2lkOworICAgIHVfbG9uZyAgICAgb2lkX2xlbjsKKworICAgIHVfY2hhciAgICAqdmFsOworICAgIHVfbG9uZyAgICAgdmFsX2xlbjsKKworICAgIHVfaW50MTZfdCAgdHlwZTsKKworfSBzcWxfdmJfYnVmOworCisvKiogYnVmZmVyIHN0cnVjdCBmb3IgdHJhcCBkYXRhICovCit0eXBlZGVmIHN0cnVjdCBzcWxfYnVmX3QgeworICAgIGNoYXIgICAgICAqaG9zdDsKKyAgICB1X2xvbmcgICAgIGhvc3RfbGVuOworCisgICAgY2hhciAgICAgICpvaWQ7CisgICAgdV9sb25nICAgICBvaWRfbGVuOworCisgICAgY2hhciAgICAgICp1c2VyOworICAgIHVfbG9uZyAgICAgdXNlcl9sZW47CisKKyAgICBNWVNRTF9USU1FIHRpbWU7CisgICAgdV9pbnQxNl90ICB2ZXJzaW9uLCB0eXBlOworICAgIHVfaW50MzJfdCAgcmVxaWQ7CisKKyAgICBjaGFyICAgICAgKnRyYW5zcG9ydDsKKyAgICB1X2xvbmcgICAgIHRyYW5zcG9ydF9sZW47CisKKyAgICB1X2ludDE2X3QgIHNlY3VyaXR5X2xldmVsLCBzZWN1cml0eV9tb2RlbDsKKyAgICB1X2ludDMyX3QgIG1zZ2lkOworCisgICAgY2hhciAgICAgICpjb250ZXh0OworICAgIHVfbG9uZyAgICAgY29udGV4dF9sZW47CisKKyAgICBjaGFyICAgICAgKmNvbnRleHRfZW5naW5lOworICAgIHVfbG9uZyAgICAgY29udGV4dF9lbmdpbmVfbGVuOworCisgICAgY2hhciAgICAgICpzZWN1cml0eV9uYW1lOworICAgIHVfbG9uZyAgICAgc2VjdXJpdHlfbmFtZV9sZW47CisKKyAgICBjaGFyICAgICAgKnNlY3VyaXR5X2VuZ2luZTsKKyAgICB1X2xvbmcgICAgIHNlY3VyaXR5X2VuZ2luZV9sZW47CisKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqdmFyYmluZHM7CisKKyAgICBjaGFyICAgICAgIGxvZ2dlZDsKK30gc3FsX2J1ZjsKKworLyoKKyAqIHN0YXRpYyBiaW5kIHN0cnVjdHVyZXMsIHBsdXMgMiBzdGF0aWMgYnVmZmVycyB0byBiaW5kIHRvLgorICovCitzdGF0aWMgTVlTUUxfQklORCBfdGJpbmRbVEJJTkRfTUFYXSwgX3ZiaW5kW1ZCSU5EX01BWF07CitzdGF0aWMgbXlfYm9vbCAgICBfbm9fdjM7CisKK3N0YXRpYyB2b2lkIF9zcWxfcHJvY2Vzc19xdWV1ZSh1X2ludCBkb250Y2FyZSwgdm9pZCAqbWVlaXRoZXIpOworCisvKgorICogcGFyc2UgdGhlIHNxbE1heFF1ZXVlIGNvbmZpZ3VyYXRpb24gdG9rZW4KKyAqLworc3RhdGljIHZvaWQKK19wYXJzZV9xdWV1ZV9mbXQoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCit7CisgICAgX3NxbC5xdWV1ZV9tYXggPSBhdG9pKGNwdHIpOworICAgIERFQlVHTVNHVEwoKCJzcWw6cXVldWUiLCJxdWV1ZSBtYXggbm93ICVkXG4iLCBfc3FsLnF1ZXVlX21heCkpOworfQorCisvKgorICogcGFyc2UgdGhlIHNxbFNhdmVJbnRlcnZhbCBjb25maWd1cmF0aW9uIHRva2VuCisgKi8KK3N0YXRpYyB2b2lkCitfcGFyc2VfaW50ZXJ2YWxfZm10KGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQoreworICAgIF9zcWwucXVldWVfaW50ZXJ2YWwgPSBhdG9pKGNwdHIpOworICAgIERFQlVHTVNHVEwoKCJzcWw6cXVldWUiLCJxdWV1ZSBpbnRlcnZhbCBub3cgJWQgc2Vjb25kc1xuIiwKKyAgICAgICAgICAgICAgICBfc3FsLnF1ZXVlX2ludGVydmFsKSk7Cit9CisKKy8qCisgKiByZWdpc3RlciBzcWwgcmVsYXRlZCBjb25maWd1cmF0aW9uIHRva2VucworICovCit2b2lkCitzbm1wdHJhcGRfcmVnaXN0ZXJfc3FsX2NvbmZpZ3MoIHZvaWQgKQoreworICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wdHJhcGQiLCAic3FsTWF4UXVldWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJzZV9xdWV1ZV9mbXQsIE5VTEwsICJpbnRlZ2VyIik7CisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXB0cmFwZCIsICJzcWxTYXZlSW50ZXJ2YWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJzZV9pbnRlcnZhbF9mbXQsIE5VTEwsICJzZWNvbmRzIik7Cit9CisKK3N0YXRpYyB2b2lkCituZXRzbm1wX3NxbF9kaXNjb25uZWN0ZWQodm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgic3FsOmNvbm5lY3Rpb24iLCJkaXNjb25uZWN0ZWRcbiIpKTsKKworICAgIF9zcWwuY29ubmVjdGVkID0gMDsKKworICAgIC8qKiByZWxlYXNlIHByZXBhcmVkIHN0YXRlbWVudHMgKi8KKyAgICBpZiAoX3NxbC50cmFwX3N0bXQpIHsKKyAgICAgICAgbXlzcWxfc3RtdF9jbG9zZShfc3FsLnRyYXBfc3RtdCk7CisgICAgICAgIF9zcWwudHJhcF9zdG10ID0gTlVMTDsKKyAgICB9CisgICAgaWYgKF9zcWwudmJfc3RtdCkgeworICAgICAgICBteXNxbF9zdG10X2Nsb3NlKF9zcWwudmJfc3RtdCk7CisgICAgICAgIF9zcWwudmJfc3RtdCA9IE5VTEw7CisgICAgfQorfQorCisvKgorICogY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gbG9nIG15c3FsIGVycm9ycworICovCitzdGF0aWMgdm9pZAorbmV0c25tcF9zcWxfZXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKyAgICB1X2ludCBlcnIgPSBteXNxbF9lcnJubyhfc3FsLmNvbm4pOworICAgIHNubXBfbG9nKExPR19FUlIsICIlc1xuIiwgbWVzc2FnZSk7CisgICAgaWYgKF9zcWwuY29ubiAhPSBOVUxMKSB7CisjaWYgTVlTUUxfVkVSU0lPTl9JRCA+PSA0MDEwMQorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRXJyb3IgJXUgKCVzKTogJXNcbiIsCisgICAgICAgICAgICAgICAgIGVyciwgbXlzcWxfc3Fsc3RhdGUoX3NxbC5jb25uKSwgbXlzcWxfZXJyb3IoX3NxbC5jb25uKSk7CisjZWxzZQorICAgICAgICBzbm1wKExPR19FUlIsICJFcnJvciAldTogJXNcbiIsCisgICAgICAgICAgICAgbXlzcWxfZXJybm8oX3NxbC5jb25uKSwgbXlzcWxfZXJyb3IoX3NxbC5jb25uKSk7CisjZW5kaWYKKyAgICB9CisgICAgaWYgKENSX1NFUlZFUl9HT05FX0VSUk9SID09IGVycikKKyAgICAgICAgbmV0c25tcF9zcWxfZGlzY29ubmVjdGVkKCk7Cit9CisKKy8qCisgKiBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBsb2cgbXlzcWwgc3RhdGVtZW50IGVycm9ycworICovCitzdGF0aWMgdm9pZAorbmV0c25tcF9zcWxfc3RtdF9lcnJvciAoTVlTUUxfU1RNVCAqc3RtdCwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKyAgICB1X2ludCBlcnIgPSBteXNxbF9lcnJubyhfc3FsLmNvbm4pOworCisgICAgc25tcF9sb2coTE9HX0VSUiwgIiVzXG4iLCBtZXNzYWdlKTsKKyAgICBpZiAoc3RtdCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiU1FMIEVycm9yICV1ICglcyk6ICVzXG4iLAorICAgICAgICAgICAgICAgICBteXNxbF9zdG10X2Vycm5vKHN0bXQpLCBteXNxbF9zdG10X3NxbHN0YXRlKHN0bXQpLAorICAgICAgICAgICAgICAgICBteXNxbF9zdG10X2Vycm9yKHN0bXQpKTsKKyAgICB9CisgICAgCisgICAgaWYgKENSX1NFUlZFUl9HT05FX0VSUk9SID09IGVycikKKyAgICAgICAgbmV0c25tcF9zcWxfZGlzY29ubmVjdGVkKCk7Cit9CisKKy8qCisgKiBzcWwgY2xlYW51cCBmdW5jdGlvbiwgY2FsbGVkIGF0IGV4aXQKKyAqLworc3RhdGljIHZvaWQKK25ldHNubXBfbXlzcWxfY2xlYW51cCh2b2lkKQoreworICAgIERFQlVHTVNHVEwoKCJzcWw6Y2xlYW51cCIsIiBjYWxsZWRcbiIpKTsKKworICAgIC8qKiB1bnJlZ2lzdGVyIGFsYXJtICovCisgICAgaWYgKF9zcWwuYWxhcm1faWQpCisgICAgICAgIHNubXBfYWxhcm1fdW5yZWdpc3Rlcihfc3FsLmFsYXJtX2lkKTsKKworICAgIC8qKiBzYXZlIGFueSBxdWV1ZWQgdHJhcHMgKi8KKyAgICBpZiAoQ09OVEFJTkVSX1NJWkUoX3NxbC5xdWV1ZSkpCisgICAgICAgIF9zcWxfcHJvY2Vzc19xdWV1ZSgwLE5VTEwpOworCisgICAgQ09OVEFJTkVSX0ZSRUUoX3NxbC5xdWV1ZSk7CisgICAgX3NxbC5xdWV1ZSA9IE5VTEw7CisKKyAgICBpZiAoX3NxbC50cmFwX3N0bXQpIHsKKyAgICAgICAgbXlzcWxfc3RtdF9jbG9zZShfc3FsLnRyYXBfc3RtdCk7CisgICAgICAgIF9zcWwudHJhcF9zdG10ID0gTlVMTDsKKyAgICB9CisgICAgaWYgKF9zcWwudmJfc3RtdCkgeworICAgICAgICBteXNxbF9zdG10X2Nsb3NlKF9zcWwudmJfc3RtdCk7CisgICAgICAgIF9zcWwudmJfc3RtdCA9IE5VTEw7CisgICAgfQorICAgIAorICAgIC8qKiBkaXNjb25uZWN0IGZyb20gc2VydmVyICovCisgICAgbmV0c25tcF9zcWxfZGlzY29ubmVjdGVkKCk7CisKKyAgICBpZiAoX3NxbC5jb25uKSB7CisgICAgICAgIG15c3FsX2Nsb3NlKF9zcWwuY29ubik7CisgICAgICAgIF9zcWwuY29ubiA9IE5VTEw7CisgICAgfQorCisgICAgbXlzcWxfbGlicmFyeV9lbmQoKTsKK30KKworLyoKKyAqIHNldHVwIChpbml0aWFsaXplLCBwcmVwYXJlIGFuZCBiaW5kKSBhIHByZXBhcmVkIHN0YXRlbWVudAorICovCitzdGF0aWMgaW50CituZXRzbm1wX215c3FsX2JpbmQoY29uc3QgY2hhciAqdGV4dCwgc2l6ZV90IHRleHRfc2l6ZSwgTVlTUUxfU1RNVCAqKnN0bXQsCisgICAgICAgICAgICAgICAgICAgTVlTUUxfQklORCAqYmluZCkKK3sKKyAgICBpZiAoKE5VTEwgPT0gdGV4dCkgfHwgKE5VTEwgPT0gc3RtdCkgfHwgKE5VTEwgPT0gYmluZCkpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiaW52YWxpZCBwYXJhbWF0ZXJzIHRvIG5ldHNubXBfbXlzcWxfYmluZCgpXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgICpzdG10ID0gbXlzcWxfc3RtdF9pbml0KF9zcWwuY29ubik7CisgICAgaWYgKE5VTEwgPT0gKnN0bXQpIHsKKyAgICAgICAgbmV0c25tcF9zcWxfZXJyb3IoImNvdWxkIG5vdCBpbml0aWFsaXplIHRyYXAgc3RhdGVtZW50IGhhbmRsZXIiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChteXNxbF9zdG10X3ByZXBhcmUoKnN0bXQsIHRleHQsIHRleHRfc2l6ZSkgIT0gMCkgeworICAgICAgICBuZXRzbm1wX3NxbF9zdG10X2Vycm9yKCpzdG10LCAiQ291bGQgbm90IHByZXBhcmUgSU5TRVJUIik7CisgICAgICAgIG15c3FsX3N0bXRfY2xvc2UoKnN0bXQpOworICAgICAgICAqc3RtdCA9IE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIGFuZCBkbyBpbml0aWFsIHNldHVwCisgKi8KK3N0YXRpYyBpbnQKK25ldHNubXBfbXlzcWxfY29ubmVjdCh2b2lkKQoreworICAgIGNoYXIgdHJhcF9zdG10W10gPSAiSU5TRVJUIElOVE8gbm90aWZpY2F0aW9ucyAiCisgICAgICAgICIoZGF0ZV90aW1lLCBob3N0LCBhdXRoLCB0eXBlLCB2ZXJzaW9uLCByZXF1ZXN0X2lkLCBzbm1wVHJhcE9JRCwgdHJhbnNwb3J0LCBzZWN1cml0eV9tb2RlbCwgdjNtc2dpZCwgdjNzZWN1cml0eV9sZXZlbCwgdjNjb250ZXh0X25hbWUsIHYzY29udGV4dF9lbmdpbmUsIHYzc2VjdXJpdHlfbmFtZSwgdjNzZWN1cml0eV9lbmdpbmUpICIKKyAgICAgICAgIlZBTFVFUyg/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPykiOworICAgIGNoYXIgdmJfc3RtdFtdID0gIklOU0VSVCBJTlRPIHZhcmJpbmRzICIKKyAgICAgICAgIih0cmFwX2lkLCBvaWQsIHR5cGUsIHZhbHVlKSBWQUxVRVMgKD8sPyw/LD8pIjsKKworICAgIC8qKiBpbml0aWFsaXplIGNvbm5lY3Rpb24gaGFuZGxlciAqLworICAgIGlmIChfc3FsLmNvbm5lY3RlZCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBERUJVR01TR1RMKCgic3FsOmNvbm5lY3Rpb24iLCJjb25uZWN0aW5nXG4iKSk7CisKKyAgICAvKiogY29ubmVjdCB0byBzZXJ2ZXIgKi8KKyAgICBpZiAobXlzcWxfcmVhbF9jb25uZWN0IChfc3FsLmNvbm4sIF9zcWwuaG9zdF9uYW1lLCBfc3FsLnVzZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc3FsLnBhc3N3b3JkLCBfc3FsLmRiX25hbWUsIF9zcWwucG9ydF9udW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NxbC5zb2NrZXRfbmFtZSwgX3NxbC5mbGFncykgPT0gTlVMTCkgeworICAgICAgICBuZXRzbm1wX3NxbF9lcnJvcigibXlzcWxfcmVhbF9jb25uZWN0KCkgZmFpbGVkIik7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKyAgICBfc3FsLmNvbm5lY3RlZCA9IDE7CisKKyAgICAvKiogZGlzYWJsZSBhdXRvY29tbWl0ICovCisgICAgaWYoMCAhPSBteXNxbF9hdXRvY29tbWl0KF9zcWwuY29ubiwgMCkpIHsKKyAgICAgICAgbmV0c25tcF9zcWxfZXJyb3IoIm15c3FsX2F1dG9jb21taXQoMCkgZmFpbGVkIik7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIG5ldHNubXBfYXNzZXJ0KChfc3FsLnRyYXBfc3RtdCA9PSBOVUxMKSAmJiAoX3NxbC52Yl9zdG10ID09IE5VTEwpKTsKKworICAgIC8qKiBwcmVwYXJlZCBzdGF0ZW1lbnQgZm9yIGluc2VydHMgKi8KKyAgICBpZiAoMCAhPSBuZXRzbm1wX215c3FsX2JpbmQodHJhcF9zdG10LHNpemVvZih0cmFwX3N0bXQpLCAmX3NxbC50cmFwX3N0bXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90YmluZCkpCisgICAgICAgIGdvdG8gZXJyOworCisgICAgaWYgKDAgIT0gbmV0c25tcF9teXNxbF9iaW5kKHZiX3N0bXQsc2l6ZW9mKHZiX3N0bXQpLCZfc3FsLnZiX3N0bXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92YmluZCkpIHsKKyAgICAgICAgbXlzcWxfc3RtdF9jbG9zZShfc3FsLnRyYXBfc3RtdCk7CisgICAgICAgIF9zcWwudHJhcF9zdG10ID0gTlVMTDsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgcmV0dXJuIDA7CisKKyAgZXJyOgorICAgIGlmIChfc3FsLmNvbm5lY3RlZCkKKyAgICAgICAgX3NxbC5jb25uZWN0ZWQgPSAwOworCisgICAgcmV0dXJuIC0xOworfQorCisvKiogb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gZm9yIG15c3FsICovCitpbnQKK25ldHNubXBfbXlzcWxfaW5pdCh2b2lkKQoreworICAgIGludCBub3RfYXJnYyA9IDAsIGk7CisgICAgY2hhciAqbm90X2FyZ3NbXSA9IHsgTlVMTCB9OworICAgIGNoYXIgKipub3RfYXJndiA9IG5vdF9hcmdzOworICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqdHJhcGg7CisKKyAgICBERUJVR01TR1RMKCgic3FsOmluaXQiLCJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBuZWdhdGl2ZSBvciAwIGludGVydmFsIGRpc2FibGVzIHNxbCBsb2dnaW5nICovCisgICAgaWYgKF9zcWwucXVldWVfaW50ZXJ2YWwgPD0gMCkgeworICAgICAgICBERUJVR01TR1RMKCgic3FsOmluaXQiLAorICAgICAgICAgICAgICAgICAgICAibXlzcWwgbm90IGVuYWJsZWQgKHNxbFNhdmVJbnRlcnZhbCBpcyA8PSAwKVxuIikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiogY3JlYXRlIHF1ZXVlIGZvciBzdG9yaW5nIHRyYXBzIHRpbCB0aGV5IGFyZSB3cml0dGVuIHRvIHRoZSBkYiAqLworICAgIF9zcWwucXVldWUgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJmaWZvIik7CisgICAgaWYgKE5VTEwgPT0gX3NxbC5xdWV1ZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IGFsbG9jYXRlIHNxbCBidWYgY29udGFpbmVyXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworI2lmZGVmIEhBVkVfQlJPS0VOX0xJQk1ZU1FMQ0xJRU5UCisgICAgbXlfaW5pdCgpOworI2Vsc2UKKyAgICBNWV9JTklUKCJzbm1wdHJhcGQiKTsKKyNlbmRpZgorCisgICAgLyoqIGxvYWQgLm15LmNuZiB2YWx1ZXMgKi8KKyAgICBsb2FkX2RlZmF1bHRzICgibXkiLCBfc3FsLmdyb3VwcywgJm5vdF9hcmdjLCAmbm90X2FyZ3YpOworICAgIGZvcihpPTA7IGkgPCBub3RfYXJnYzsgKytpKSB7CisgICAgICAgIGlmIChOVUxMID09IG5vdF9hcmd2W2ldKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChzdHJuY21wKG5vdF9hcmd2W2ldLCItLXBhc3N3b3JkPSIsMTEpID09IDApCisgICAgICAgICAgICBfc3FsLnBhc3N3b3JkID0gJm5vdF9hcmd2W2ldWzExXTsKKyAgICAgICAgZWxzZSBpZiAoc3RybmNtcChub3RfYXJndltpXSwiLS1ob3N0PSIsNykgPT0gMCkKKyAgICAgICAgICAgIF9zcWwuaG9zdF9uYW1lID0gJm5vdF9hcmd2W2ldWzddOworICAgICAgICBlbHNlIGlmIChzdHJuY21wKG5vdF9hcmd2W2ldLCItLXVzZXI9Iiw3KSA9PSAwKQorICAgICAgICAgICAgX3NxbC51c2VyX25hbWUgPSAmbm90X2FyZ3ZbaV1bN107CisgICAgICAgIGVsc2UgaWYgKHN0cm5jbXAobm90X2FyZ3ZbaV0sIi0tcG9ydD0iLDcpID09IDApCisgICAgICAgICAgICBfc3FsLnBvcnRfbnVtID0gYXRvaSgmbm90X2FyZ3ZbaV1bN10pOworICAgICAgICBlbHNlIGlmIChzdHJuY21wKG5vdF9hcmd2W2ldLCItLXNvY2tldD0iLDkpID09IDApCisgICAgICAgICAgICBfc3FsLnNvY2tldF9uYW1lID0gJm5vdF9hcmd2W2ldWzldOworICAgICAgICBlbHNlIGlmIChzdHJuY21wKG5vdF9hcmd2W2ldLCItLWRhdGFiYXNlPSIsMTEpID09IDApCisgICAgICAgICAgICBfc3FsLmRiX25hbWUgPSAmbm90X2FyZ3ZbaV1bMTFdOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgInVua25vd24gYXJndW1lbnRbJWRdICVzXG4iLCBpLCBub3RfYXJndltpXSk7CisgICAgfQorCisgICAgLyoqIGluaXQgYmluZCBzdHJ1Y3R1cmVzICovCisgICAgbWVtc2V0KF90YmluZCwgMHgwLCBzaXplb2YoX3RiaW5kKSk7CisgICAgbWVtc2V0KF92YmluZCwgMHgwLCBzaXplb2YoX3ZiaW5kKSk7CisKKyAgICAvKiogdHJhcCBzdGF0aWMgYmluZGluZ3MgKi8KKyAgICBfdGJpbmRbVEJJTkRfSE9TVF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKyAgICBfdGJpbmRbVEJJTkRfSE9TVF0ubGVuZ3RoID0gJl90YmluZFtUQklORF9IT1NUXS5idWZmZXJfbGVuZ3RoOworCisgICAgX3RiaW5kW1RCSU5EX09JRF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKyAgICBfdGJpbmRbVEJJTkRfT0lEXS5sZW5ndGggPSAmX3RiaW5kW1RCSU5EX09JRF0uYnVmZmVyX2xlbmd0aDsKKworICAgIF90YmluZFtUQklORF9SRVFJRF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX0xPTkc7CisgICAgX3RiaW5kW1RCSU5EX1JFUUlEXS5pc191bnNpZ25lZCA9IDE7CisKKyAgICBfdGJpbmRbVEJJTkRfVkVSXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU0hPUlQ7CisgICAgX3RiaW5kW1RCSU5EX1ZFUl0uaXNfdW5zaWduZWQgPSAxOworCisgICAgX3RiaW5kW1RCSU5EX1RZUEVdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TSE9SVDsKKyAgICBfdGJpbmRbVEJJTkRfVFlQRV0uaXNfdW5zaWduZWQgPSAxOworCisgICAgX3RiaW5kW1RCSU5EX0RBVEVdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9EQVRFVElNRTsKKworICAgIF90YmluZFtUQklORF9VU0VSXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgIF90YmluZFtUQklORF9VU0VSXS5sZW5ndGggPSAmX3RiaW5kW1RCSU5EX1VTRVJdLmJ1ZmZlcl9sZW5ndGg7CisKKyAgICBfdGJpbmRbVEJJTkRfVFJBTlNQT1JUXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgIF90YmluZFtUQklORF9UUkFOU1BPUlRdLmxlbmd0aCA9ICZfdGJpbmRbVEJJTkRfVFJBTlNQT1JUXS5idWZmZXJfbGVuZ3RoOworCisgICAgX3RiaW5kW1RCSU5EX1NFQ1VSSVRZX01PREVMXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU0hPUlQ7CisgICAgX3RiaW5kW1RCSU5EX1NFQ1VSSVRZX01PREVMXS5pc191bnNpZ25lZCA9IDE7CisKKyAgICBfdGJpbmRbVEJJTkRfdjNfTVNHSURdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9MT05HOworICAgIF90YmluZFtUQklORF92M19NU0dJRF0uaXNfdW5zaWduZWQgPSAxOworICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9MRVZFTF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NIT1JUOworICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9MRVZFTF0uaXNfdW5zaWduZWQgPSAxOworICAgIF90YmluZFtUQklORF92M19DT05URVhUX05BTUVdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfRU5HSU5FXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9OQU1FXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9OQU1FXS5sZW5ndGggPQorICAgICAgICAmX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX05BTUVdLmJ1ZmZlcl9sZW5ndGg7CisgICAgX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfTkFNRV0ubGVuZ3RoID0KKyAgICAgICAgJl90YmluZFtUQklORF92M19DT05URVhUX05BTUVdLmJ1ZmZlcl9sZW5ndGg7CisgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX0VOR0lORV0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKyAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfRU5HSU5FXS5sZW5ndGggPQorICAgICAgICAmX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX0VOR0lORV0uYnVmZmVyX2xlbmd0aDsKKyAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9FTkdJTkVdLmxlbmd0aCA9CisgICAgICAgICZfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9FTkdJTkVdLmJ1ZmZlcl9sZW5ndGg7CisKKyAgICBfdGJpbmRbVEJJTkRfdjNfTVNHSURdLmlzX251bGwgPQorICAgICAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfTEVWRUxdLmlzX251bGwgPQorICAgICAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9OQU1FXS5pc19udWxsID0KKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfRU5HSU5FXS5pc19udWxsID0KKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX05BTUVdLmlzX251bGwgPQorICAgICAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfRU5HSU5FXS5pc19udWxsID0gJl9ub192MzsKKyAgICAKKyAgICAvKiogdmFyaWFibGUgc3RhdGljIGJpbmRpbmdzICovCisgICAgX3ZiaW5kW1ZCSU5EX0lEXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfTE9ORzsKKyAgICBfdmJpbmRbVkJJTkRfSURdLmlzX3Vuc2lnbmVkID0gMTsKKworICAgIF92YmluZFtWQklORF9PSURdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgX3ZiaW5kW1ZCSU5EX09JRF0ubGVuZ3RoID0gJl92YmluZFtWQklORF9PSURdLmJ1ZmZlcl9sZW5ndGg7CisKKyAgICBfdmJpbmRbVkJJTkRfVFlQRV0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NIT1JUOworICAgIF92YmluZFtWQklORF9UWVBFXS5pc191bnNpZ25lZCA9IDE7CisKKyNpZmRlZiBORVRTTk1QX01ZU1FMX1RSQVBfVkFMVUVfVEVYVAorICAgIF92YmluZFtWQklORF9WQUxdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisjZWxzZQorICAgIF92YmluZFtWQklORF9WQUxdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9CTE9COworI2VuZGlmCisgICAgX3ZiaW5kW1ZCSU5EX1ZBTF0ubGVuZ3RoID0gJl92YmluZFtWQklORF9WQUxdLmJ1ZmZlcl9sZW5ndGg7CisKKyAgICBfc3FsLmNvbm4gPSBteXNxbF9pbml0IChOVUxMKTsKKyAgICBpZiAoX3NxbC5jb25uID09IE5VTEwpIHsKKyAgICAgICAgbmV0c25tcF9zcWxfZXJyb3IoIm15c3FsX2luaXQoKSBmYWlsZWQgKG91dCBvZiBtZW1vcnk/KSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoqIHRyeSB0byBjb25uZWN0OyB3ZSdsbCB0cnkgYWdhaW4gbGF0ZXIgaWYgd2UgZmFpbCAqLworICAgICh2b2lkKSBuZXRzbm1wX215c3FsX2Nvbm5lY3QoKTsKKworICAgIC8qKiByZWdpc3RlciBwZXJpb2RpYyBxdWV1ZSBzYXZlICovCisgICAgX3NxbC5hbGFybV9pZCA9IHNubXBfYWxhcm1fcmVnaXN0ZXIoX3NxbC5xdWV1ZV9pbnRlcnZhbCwgLyogc2Vjb25kcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAgIC8qIHJlcGVhdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zcWxfcHJvY2Vzc19xdWV1ZSwgIC8qIGZ1bmN0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7ICAgICAgICAgICAgICAgLyogY2xpZW50IGFyZ3MgKi8KKworICAgIC8qKiBhZGQgaGFuZGxlciAqLworICAgIHRyYXBoID0gbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKE5FVFNOTVBUUkFQRF9QUkVfSEFORExFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteXNxbF9oYW5kbGVyKTsKKyAgICBpZiAoTlVMTCA9PSB0cmFwaCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IGFsbG9jYXRlIHNxbCB0cmFwIGhhbmRsZXJcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHRyYXBoLT5hdXRodHlwZXMgPSBUUkFQX0FVVEhfTE9HOworCisgICAgYXRleGl0KG5ldHNubXBfbXlzcWxfY2xlYW51cCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBsb2cgQ1NWIHZlcnNpb24gb2YgdHJhcC4KKyAqIGRvbnRjYXJlIHBhcmFtIGlzIHRoZXJlIHNvIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHBhc3NlZCBkaXJlY3RseQorICogdG8gQ09OVEFJTkVSX0ZPUl9FQUNILgorICovCitzdGF0aWMgdm9pZAorX3NxbF9sb2coc3FsX2J1ZiAqc3FsYiwgdm9pZCogZG9udGNhcmUpCit7CisgICAgbmV0c25tcF9pdGVyYXRvciAgICAgKml0OworICAgIHNxbF92Yl9idWYgICAgICAgICAgICpzcWx2YjsKKworICAgIGlmICgoTlVMTCA9PSBzcWxiKSB8fCBzcWxiLT5sb2dnZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8qCisgICAgICogbG9nIHRyYXAgaW5mbworICAgICAqIG5vdGhpbmcgZG9uZSB0byBwcm90ZWN0IGFnYWluc3QgZGF0YSBpbnNlcnRpb24gYXR0YWNrcyB3aXRoCisgICAgICogcmVzcGVjdCB0byBiYWQgZGF0YSAoY29tbWFzLCBuZXdsaW5lcywgZXRjKQorICAgICAqLworICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgInRyYXA6JWQtJWQtJWQgJWQ6JWQ6JWQsJXMsJWQsJWQsJWQsJXMsJXMsJWQsJWQsJWQsJXMsJXMsJXMsJXNcbiIsCisgICAgICAgICAgICAgc3FsYi0+dGltZS55ZWFyLHNxbGItPnRpbWUubW9udGgsc3FsYi0+dGltZS5kYXksCisgICAgICAgICAgICAgc3FsYi0+dGltZS5ob3VyLHNxbGItPnRpbWUubWludXRlLHNxbGItPnRpbWUuc2Vjb25kLAorICAgICAgICAgICAgIHNxbGItPnVzZXIsCisgICAgICAgICAgICAgc3FsYi0+dHlwZSwgc3FsYi0+dmVyc2lvbiwgc3FsYi0+cmVxaWQsIHNxbGItPm9pZCwKKyAgICAgICAgICAgICBzcWxiLT50cmFuc3BvcnQsIHNxbGItPnNlY3VyaXR5X21vZGVsLCBzcWxiLT5tc2dpZCwKKyAgICAgICAgICAgICBzcWxiLT5zZWN1cml0eV9sZXZlbCwgc3FsYi0+Y29udGV4dCwKKyAgICAgICAgICAgICBzcWxiLT5jb250ZXh0X2VuZ2luZSwgc3FsYi0+c2VjdXJpdHlfbmFtZSwKKyAgICAgICAgICAgICBzcWxiLT5zZWN1cml0eV9lbmdpbmUpOworCisgICAgc3FsYi0+bG9nZ2VkID0gMTsgLyogcHJldmVudCBtdWx0aXBsZSBsb2dnaW5nICovCisKKyAgICBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUihzcWxiLT52YXJiaW5kcyk7CisgICAgaWYgKE5VTEwgPT0gaXQpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImVycm9yIGNyZWF0aW5nIGl0ZXJhdG9yOyBpbmNvbXBsZXRlIHRyYXAgbG9nZ2VkXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qKiBsb2cgdmFyYmluZCBpbmZvICovCisgICAgZm9yKCBzcWx2YiA9IElURVJBVE9SX0ZJUlNUKGl0KTsgc3FsdmI7IHNxbHZiID0gSVRFUkFUT1JfTkVYVChpdCkpIHsKKyNpZmRlZiBORVRTTk1QX01ZU1FMX1RSQVBfVkFMVUVfVEVYVAorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJ2YXJiaW5kOiVzLCVzXG4iLCBzcWx2Yi0+b2lkLCBzcWx2Yi0+dmFsKTsKKyNlbHNlCisgICAgICAgIGNoYXIgKmhleDsKKyAgICAgICAgaW50IGxlbiA9IGJpbmFyeV90b19oZXgoc3FsdmItPnZhbCwgc3FsdmItPnZhbF9sZW4sICZoZXgpOworICAgICAgICBpZiAoaGV4KSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJ2YXJiaW5kOiVkLCVzLCVzXG4iLCBzcWx2Yi0+b2lkLCBoZXgpOworICAgICAgICAgICAgZnJlZShoZXgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibWFsbG9jIGZhaWxlZCBmb3IgdmFyYmluZCBoZXggdmFsdWVcbiIpOworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwidmFyYmluZDolcyxcbiIsIHNxbHZiLT5vaWQpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAgSVRFUkFUT1JfUkVMRUFTRShpdCk7CisgICAKK30KKworLyoKKyAqIGZyZWUgYSBidWZmZXIKKyAqIGRvbnRjYXJlIHBhcmFtIGlzIHRoZXJlIHNvIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHBhc3NlZCBkaXJlY3RseQorICogdG8gQ09OVEFJTkVSX0ZPUl9FQUNILgorICovCitzdGF0aWMgdm9pZAorX3NxbF92Yl9idWZfZnJlZShzcWxfdmJfYnVmICpzcWx2Yiwgdm9pZCogZG9udGNhcmUpCit7CisgICAgaWYgKE5VTEwgPT0gc3FsdmIpCisgICAgICAgIHJldHVybjsKKworICAgIFNOTVBfRlJFRShzcWx2Yi0+b2lkKTsKKyAgICBTTk1QX0ZSRUUoc3FsdmItPnZhbCk7CisKKyAgICBmcmVlKHNxbHZiKTsKK30KKworLyoKKyAqIGZyZWUgYSBidWZmZXIKKyAqIGRvbnRjYXJlIHBhcmFtIGlzIHRoZXJlIHNvIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHBhc3NlZCBkaXJlY3RseQorICogdG8gQ09OVEFJTkVSX0ZPUl9FQUNILgorICovCitzdGF0aWMgdm9pZAorX3NxbF9idWZfZnJlZShzcWxfYnVmICpzcWxiLCB2b2lkKiBkb250Y2FyZSkKK3sKKyAgICBpZiAoTlVMTCA9PSBzcWxiKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiogZG8gdmFyYmluZHMgZmlyc3QgKi8KKyAgICBpZiAoc3FsYi0+dmFyYmluZHMpIHsKKyAgICAgICAgQ09OVEFJTkVSX0NMRUFSKHNxbGItPnZhcmJpbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKilfc3FsX3ZiX2J1Zl9mcmVlLCBOVUxMKTsKKyAgICAgICAgQ09OVEFJTkVSX0ZSRUUoc3FsYi0+dmFyYmluZHMpOworICAgIH0KKworICAgIFNOTVBfRlJFRShzcWxiLT5ob3N0KTsKKyAgICBTTk1QX0ZSRUUoc3FsYi0+b2lkKTsKKyAgICBTTk1QX0ZSRUUoc3FsYi0+dXNlcik7CisKKyAgICBTTk1QX0ZSRUUoc3FsYi0+Y29udGV4dCk7CisgICAgU05NUF9GUkVFKHNxbGItPnNlY3VyaXR5X25hbWUpOworICAgIFNOTVBfRlJFRShzcWxiLT5jb250ZXh0X2VuZ2luZSk7CisgICAgU05NUF9GUkVFKHNxbGItPnNlY3VyaXR5X2VuZ2luZSk7CisgICAgU05NUF9GUkVFKHNxbGItPnRyYW5zcG9ydCk7CisKKyAgICBmcmVlKHNxbGIpOworfQorCisvKgorICogYWxsb2NhdGUgYnVmZmVyIHRvIHN0b3JlIHRyYXAgYW5kIHZhcmJpbmRzCisgKi8KK3N0YXRpYyBzcWxfYnVmICoKK19zcWxfYnVmX2dldCh2b2lkKQoreworICAgIHNxbF9idWYgKnNxbGI7CisKKyAgICAvKiogYnVmZmVyIGZvciB0cmFwIGluZm8gKi8KKyAgICBzcWxiID0gU05NUF9NQUxMT0NfVFlQRURFRihzcWxfYnVmKTsKKyAgICBpZiAoTlVMTCA9PSBzcWxiKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAKKyAgICAvKiogZmlmbyBmb3IgdmFyYmluZHMgKi8KKyAgICBzcWxiLT52YXJiaW5kcyA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImZpZm8iKTsKKyAgICBpZiAoTlVMTCA9PSBzcWxiLT52YXJiaW5kcykgeworICAgICAgICBmcmVlKHNxbGIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gc3FsYjsKK30KKworLyoKKyAqIHNhdmUgaW5mbyBmcm9tIGluY29taW5nIHRyYXAKKyAqCisgKiByZXR1cm4gMCBvbiBzdWNjZXNzLCBhbnl0aGluZyBlbHNlIGlzIGFuIGVycm9yCisgKi8KK3N0YXRpYyBpbnQKK19zcWxfc2F2ZV90cmFwX2luZm8oc3FsX2J1ZiAqc3FsYiwgbmV0c25tcF9wZHUgICpwZHUsCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0ICAgICAqdHJhbnNwb3J0KQoreworICAgIHN0YXRpYyBvaWQgICB0cmFwb2lkc1tdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA1LCAwIH07CisgICAgb2lkICAgICAgICAgKnRyYXBfb2lkLCB0bXBfb2lkW01BWF9PSURfTEVOXTsKKyAgICB0aW1lX3QgICAgICAgbm93OworICAgIHN0cnVjdCB0bSAgICpjdXJfdGltZTsKKyAgICBzaXplX3QgICAgICAgdG1wX3NpemU7CisgICAgc2l6ZV90ICAgICAgIGJ1Zl9ob3N0X2xlbl90LCBidWZfb2lkX2xlbl90LCBidWZfdXNlcl9sZW5fdDsKKyAgICBpbnQgICAgICAgICAgb2lkX292ZXJmbG93LCB0cmFwX29pZF9sZW47CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzOworCisgICAgaWYgKChOVUxMID09IHNxbGIpIHx8IChOVUxMID09IHBkdSkgfHwgKE5VTEwgPT0gdHJhbnNwb3J0KSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgREVCVUdNU0dUTCgoInNxbDpxdWV1ZSIsICJxdWV1ZWluZyBpbmNvbWluZyB0cmFwXG4iKSk7CisKKyAgICAvKiogdGltZSAqLworICAgICh2b2lkKSB0aW1lKCZub3cpOworICAgIGN1cl90aW1lID0gbG9jYWx0aW1lKCZub3cpOworICAgIHNxbGItPnRpbWUueWVhciA9IGN1cl90aW1lLT50bV95ZWFyICsgMTkwMDsKKyAgICBzcWxiLT50aW1lLm1vbnRoID0gY3VyX3RpbWUtPnRtX21vbiArIDE7CisgICAgc3FsYi0+dGltZS5kYXkgPSBjdXJfdGltZS0+dG1fbWRheTsKKyAgICBzcWxiLT50aW1lLmhvdXIgPSBjdXJfdGltZS0+dG1faG91cjsKKyAgICBzcWxiLT50aW1lLm1pbnV0ZSA9IGN1cl90aW1lLT50bV9taW47CisgICAgc3FsYi0+dGltZS5zZWNvbmQgPSBjdXJfdGltZS0+dG1fc2VjOworICAgIHNxbGItPnRpbWUuc2Vjb25kX3BhcnQgPSAwOworICAgIHNxbGItPnRpbWUubmVnID0gMDsKKworICAgIC8qKiBob3N0IG5hbWUgKi8KKyAgICBidWZfaG9zdF9sZW5fdCA9IDA7CisgICAgdG1wX3NpemUgPSAwOworICAgIHJlYWxsb2NfZm9ybWF0X3RyYXAoKHVfY2hhcioqKSZzcWxiLT5ob3N0LCAmdG1wX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAmYnVmX2hvc3RfbGVuX3QsIDEsICIlQiIsIHBkdSwgdHJhbnNwb3J0KTsKKyAgICBzcWxiLT5ob3N0X2xlbiA9IGJ1Zl9ob3N0X2xlbl90OworCisgICAgLyogc25tcFRyYXBPSUQgKi8KKyAgICBpZiAocGR1LT5jb21tYW5kID09IFNOTVBfTVNHX1RSQVApIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY29udmVydCBhIHYxIHRyYXAgdG8gYSB2MiB2YXJiaW5kCisgICAgICAgICAqLworICAgICAgICBpZiAocGR1LT50cmFwX3R5cGUgPT0gU05NUF9UUkFQX0VOVEVSUFJJU0VTUEVDSUZJQykgeworICAgICAgICAgICAgdHJhcF9vaWRfbGVuID0gcGR1LT5lbnRlcnByaXNlX2xlbmd0aDsKKyAgICAgICAgICAgIG1lbWNweSh0bXBfb2lkLCBwZHUtPmVudGVycHJpc2UsIHNpemVvZihvaWQpICogdHJhcF9vaWRfbGVuKTsKKyAgICAgICAgICAgIGlmICh0bXBfb2lkW3RyYXBfb2lkX2xlbiAtIDFdICE9IDApCisgICAgICAgICAgICAgICAgdG1wX29pZFt0cmFwX29pZF9sZW4rK10gPSAwOworICAgICAgICAgICAgdG1wX29pZFt0cmFwX29pZF9sZW4rK10gPSBwZHUtPnNwZWNpZmljX3R5cGU7CisgICAgICAgICAgICB0cmFwX29pZCA9IHRtcF9vaWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0cmFwb2lkc1s5XSA9IHBkdS0+dHJhcF90eXBlICsgMTsKKyAgICAgICAgICAgIHRyYXBfb2lkID0gdHJhcG9pZHM7CisgICAgICAgICAgICB0cmFwX29pZF9sZW4gPSBPSURfTEVOR1RIKHRyYXBvaWRzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFycyA9IHBkdS0+dmFyaWFibGVzOworICAgICAgICBpZiAodmFycyAmJiB2YXJzLT5uZXh0X3ZhcmlhYmxlKSB7CisgICAgICAgICAgICB0cmFwX29pZF9sZW4gPSB2YXJzLT5uZXh0X3ZhcmlhYmxlLT52YWxfbGVuIC8gc2l6ZW9mKG9pZCk7CisgICAgICAgICAgICB0cmFwX29pZCA9IHZhcnMtPm5leHRfdmFyaWFibGUtPnZhbC5vYmppZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN0YXRpYyBvaWQgbnVsbF9vaWRbXSA9IHsgMCwgMCB9OworICAgICAgICAgICAgdHJhcF9vaWRfbGVuID0gT0lEX0xFTkdUSChudWxsX29pZCk7CisgICAgICAgICAgICB0cmFwX29pZCA9IG51bGxfb2lkOworICAgICAgICB9CisgICAgfQorICAgIHRtcF9zaXplID0gMDsKKyAgICBidWZfb2lkX2xlbl90ID0gb2lkX292ZXJmbG93ID0gMDsKKyAgICBuZXRzbm1wX3NwcmludF9yZWFsbG9jX29iamlkX3RyZWUoKHVfY2hhcioqKSZzcWxiLT5vaWQsJnRtcF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmX29pZF9sZW5fdCwgMSwgJm9pZF9vdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhcF9vaWQsIHRyYXBfb2lkX2xlbik7CisgICAgc3FsYi0+b2lkX2xlbiA9IGJ1Zl9vaWRfbGVuX3Q7CisgICAgaWYgKG9pZF9vdmVyZmxvdykKKyAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsIk9JRCB0cnVuY2F0ZWQgaW4gc3FsIGJ1ZmZlclxuIik7CisKKyAgICAvKiogcmVxdWVzdCBpZCAqLworICAgIHNxbGItPnJlcWlkID0gcGR1LT5yZXFpZDsKKworICAgIC8qKiB2ZXJzaW9uIChjb252ZXJ0IHRvIDEgYmFzZWQsIGZvciBzcWwgZW51bSkgKi8KKyAgICBzcWxiLT52ZXJzaW9uID0gcGR1LT52ZXJzaW9uICsgMTsKKworICAgIC8qKiBjb21tYW5kIHR5cGUgKGNvbnZlcnQgdG8gMSBiYXNlZCwgZm9yIHNxbCBlbnVtKSAqLworICAgIHNxbGItPnR5cGUgPSBwZHUtPmNvbW1hbmQgLSAxNTk7CisKKyAgICAvKiogY29tbXVuaXR5IHN0cmluZy91c2VyIG5hbWUgKi8KKyAgICB0bXBfc2l6ZSA9IDA7CisgICAgYnVmX3VzZXJfbGVuX3QgPSAwOworICAgIHJlYWxsb2NfZm9ybWF0X3RyYXAoKHVfY2hhcioqKSZzcWxiLT51c2VyLCAmdG1wX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAmYnVmX3VzZXJfbGVuX3QsIDEsICIldSIsIHBkdSwgdHJhbnNwb3J0KTsKKyAgICBzcWxiLT51c2VyX2xlbiA9IGJ1Zl91c2VyX2xlbl90OworCisgICAgLyoqIHRyYW5zcG9ydCAqLworICAgIHNxbGItPnRyYW5zcG9ydCA9IHRyYW5zcG9ydC0+Zl9mbXRhZGRyKHRyYW5zcG9ydCwgcGR1LT50cmFuc3BvcnRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCk7CisKKyAgICAvKiogc2VjdXJpdHkgbW9kZWwgKi8KKyAgICBzcWxiLT5zZWN1cml0eV9tb2RlbCA9IHBkdS0+c2VjdXJpdHlNb2RlbDsKKworICAgIGlmICgoU05NUF9NUF9NT0RFTF9TTk1QdjMrMSkgPT0gc3FsYi0+dmVyc2lvbikgeworCisgICAgICAgIHNxbGItPm1zZ2lkID0gcGR1LT5tc2dpZDsKKyAgICAgICAgc3FsYi0+c2VjdXJpdHlfbGV2ZWwgPSBwZHUtPnNlY3VyaXR5TGV2ZWw7CisKKyAgICAgICAgaWYgKHBkdS0+Y29udGV4dE5hbWUpIHsKKyAgICAgICAgICAgIHNxbGItPmNvbnRleHQgPSBuZXRzbm1wX3N0cmR1cF9hbmRfbnVsbCgodV9jaGFyKilwZHUtPmNvbnRleHROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+Y29udGV4dE5hbWVMZW4pOworICAgICAgICAgICAgc3FsYi0+Y29udGV4dF9sZW4gPSBwZHUtPmNvbnRleHROYW1lTGVuOworICAgICAgICB9CisgICAgICAgIGlmIChwZHUtPmNvbnRleHRFbmdpbmVJRCkgeworICAgICAgICAgICAgc3FsYi0+Y29udGV4dF9lbmdpbmVfbGVuID0gCisgICAgICAgICAgICAgICAgYmluYXJ5X3RvX2hleChwZHUtPmNvbnRleHRFbmdpbmVJRCwgcGR1LT5jb250ZXh0RW5naW5lSURMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3FsYi0+Y29udGV4dF9lbmdpbmUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBkdS0+c2VjdXJpdHlOYW1lKSB7CisgICAgICAgICAgICBzcWxiLT5zZWN1cml0eV9uYW1lID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX3N0cmR1cF9hbmRfbnVsbCgodV9jaGFyKilwZHUtPnNlY3VyaXR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZUxlbik7CisgICAgICAgICAgICBzcWxiLT5zZWN1cml0eV9uYW1lX2xlbiA9IHBkdS0+c2VjdXJpdHlOYW1lTGVuOworICAgICAgICB9CisgICAgICAgIGlmIChwZHUtPnNlY3VyaXR5RW5naW5lSUQpIHsKKyAgICAgICAgICAgIHNxbGItPnNlY3VyaXR5X2VuZ2luZV9sZW4gPSAKKyAgICAgICAgICAgICAgICBiaW5hcnlfdG9faGV4KHBkdS0+c2VjdXJpdHlFbmdpbmVJRCwgcGR1LT5zZWN1cml0eUVuZ2luZUlETGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNxbGItPnNlY3VyaXR5X2VuZ2luZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIHNhdmUgdmFyYmluZCBpbmZvIGZyb20gaW5jb21pbmcgdHJhcAorICoKKyAqIHJldHVybiAwIG9uIHN1Y2Nlc3MsIGFueXRoaW5nIGVsc2UgaXMgYW4gZXJyb3IKKyAqLworc3RhdGljIGludAorX3NxbF9zYXZlX3ZhcmJpbmRfaW5mbyhzcWxfYnVmICpzcWxiLCBuZXRzbm1wX3BkdSAgKnBkdSkKK3sKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcjsKKyAgICBzcWxfdmJfYnVmICAgICAgICpzcWx2YjsKKyAgICBzaXplX3QgICAgICAgICAgICB0bXBfc2l6ZSwgYnVmX29pZF9sZW5fdDsKKyAgICBpbnQgICAgICAgICAgICAgICBvaWRfb3ZlcmZsb3csIHJjOworI2lmZGVmIE5FVFNOTVBfTVlTUUxfVFJBUF9WQUxVRV9URVhUCisgICAgc2l6ZV90ICAgICAgICAgICAgYnVmX3ZhbF9sZW5fdDsKKyNlbmRpZgorCisgICAgaWYgKChOVUxMID09IHNxbGIpIHx8IChOVUxMID09IHBkdSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHZhciA9IHBkdS0+dmFyaWFibGVzOworICAgIHdoaWxlKHZhcikgeworICAgICAgICBzcWx2YiA9IFNOTVBfTUFMTE9DX1RZUEVERUYoc3FsX3ZiX2J1Zik7CisgICAgICAgIGlmIChOVUxMID09IHNxbHZiKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoqIE9JRCAqLworICAgICAgICB0bXBfc2l6ZSA9IDA7CisgICAgICAgIGJ1Zl9vaWRfbGVuX3QgPSBvaWRfb3ZlcmZsb3cgPSAwOworICAgICAgICBuZXRzbm1wX3NwcmludF9yZWFsbG9jX29iamlkX3RyZWUoKHVfY2hhcioqKSZzcWx2Yi0+b2lkLCAmdG1wX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmX29pZF9sZW5fdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICZvaWRfb3ZlcmZsb3csIHZhci0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+bmFtZV9sZW5ndGgpOworICAgICAgICBzcWx2Yi0+b2lkX2xlbiA9IGJ1Zl9vaWRfbGVuX3Q7CisgICAgICAgIGlmIChvaWRfb3ZlcmZsb3cpCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywiT0lEIHRydW5jYXRlZCBpbiBzcWwgaW5zZXJ0XG4iKTsKKyAgICAgICAgCisgICAgICAgIC8qKiB0eXBlICovCisgICAgICAgIGlmICh2YXItPnR5cGUgPiBBU05fT0JKRUNUX0lEKQorICAgICAgICAgICAgLyoqIGNvbnZlcnQgYXBwbGljYXRpb24gdHlwZXMgdG8gc3FsIGVudW0gKi8KKyAgICAgICAgICAgIHNxbHZiLT50eXBlID0gQVNOX09CSkVDVF9JRCArIDEgKyAodmFyLT50eXBlICYgfkFTTl9BUFBMSUNBVElPTik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNxbHZiLT50eXBlID0gdmFyLT50eXBlOworCisgICAgICAgIC8qKiB2YWx1ZSAqLworI2lmZGVmIE5FVFNOTVBfTVlTUUxfVFJBUF9WQUxVRV9URVhUCisgICAgICAgIHRtcF9zaXplID0gMDsKKyAgICAgICAgYnVmX3ZhbF9sZW5fdCA9IDA7CisgICAgICAgIHNwcmludF9yZWFsbG9jX2J5X3R5cGUoKHVfY2hhcioqKSZzcWx2Yi0+dmFsLCAmdG1wX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1Zl92YWxfbGVuX3QsIDEsIHZhciwgMCwgMCwgMCk7CisgICAgICAgIHNxbHZiLT52YWxfbGVuID0gYnVmX3ZhbF9sZW5fdDsKKyNlbHNlCisgICAgICAgIHNxbHZiLT52YWwgPSBuZXRzbm1wX21lbWR1cCh2YXItPnZhbC5zdHJpbmcsIHZhci0+dmFsX2xlbik7CisgICAgICAgIHNxbHZiLT52YWxfbGVuID0gdmFyLT52YWxfbGVuOworI2VuZGlmCisKKyAgICAgICAgdmFyID0gdmFyLT5uZXh0X3ZhcmlhYmxlOworCisgICAgICAgIC8qKiBpbnNlcnQgaW50byBjb250YWluZXIgKi8KKyAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKHNxbGItPnZhcmJpbmRzLHNxbHZiKTsKKyAgICAgICAgaWYocmMpCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3QgaW5zZXJ0IHZhcmJpbmQgaW50byB0cmFwIGNvbnRhaW5lclxuIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBzcWwgdHJhcCBoYW5kbGVyCisgKi8KK2ludAorbXlzcWxfaGFuZGxlcihuZXRzbm1wX3BkdSAgICAgICAgICAgKnBkdSwKKyAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnQgICAgICp0cmFuc3BvcnQsCisgICAgICAgICAgICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqaGFuZGxlcikKK3sKKyAgICBzcWxfYnVmICAgICAqc3FsYjsKKyAgICBpbnQgICAgICAgICAgb2xkX2Zvcm1hdCwgcmM7CisKKyAgICBERUJVR01TR1RMKCgic3FsOmhhbmRsZXIiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogYWxsb2NhdGUgYSBidWZmZXIgdG8gc2F2ZSBkYXRhICovCisgICAgc3FsYiA9IF9zcWxfYnVmX2dldCgpOworICAgIGlmIChOVUxMID09IHNxbGIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkIG5vdCBhbGxvY2F0ZSB0cmFwIHNxbCBidWZmZXJcbiIpOworICAgICAgICByZXR1cm4gc3lzbG9nX2hhbmRsZXIoIHBkdSwgdHJhbnNwb3J0LCBoYW5kbGVyICk7CisgICAgfQorCisgICAgLyoqIHNhdmUgT0lEIG91dHB1dCBmb3JtYXQgYW5kIGNoYW5nZSB0byBudW1lcmljICovCisgICAgb2xkX2Zvcm1hdCA9IG5ldHNubXBfZHNfZ2V0X2ludChORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9PSURfT1VUUFVUX0ZPUk1BVCk7CisgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfT0lEX09VVFBVVF9GT1JNQVQsCisgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfT0lEX09VVFBVVF9OVU1FUklDKTsKKworCisgICAgcmMgPSBfc3FsX3NhdmVfdHJhcF9pbmZvKHNxbGIsIHBkdSwgdHJhbnNwb3J0KTsKKyAgICByYyA9IF9zcWxfc2F2ZV92YXJiaW5kX2luZm8oc3FsYiwgcGR1KTsKKworICAgIC8qKiByZXN0b3JlIHByZXZpb3VzIE9JRCBvdXRwdXQgZm9ybWF0ICovCisgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfT0lEX09VVFBVVF9GT1JNQVQsCisgICAgICAgICAgICAgICAgICAgICAgIG9sZF9mb3JtYXQpOworCisgICAgLyoqIGluc2VydCBpbnRvIHF1ZXVlICovCisgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKF9zcWwucXVldWUsIHNxbGIpOworICAgIGlmKHJjKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZCBub3QgbG9nIHF1ZXVlIHNxbCB0cmFwIGJ1ZmZlclxuIik7CisgICAgICAgIF9zcWxfbG9nKHNxbGIsIE5VTEwpOworICAgICAgICBfc3FsX2J1Zl9mcmVlKHNxbGIsIDApOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoqIHNhdmUgcXVldWUgaWYgc2l6ZSBpcyA+IG1heCAqLworICAgIGlmIChDT05UQUlORVJfU0laRShfc3FsLnF1ZXVlKSA+PSBfc3FsLnF1ZXVlX21heCkKKyAgICAgICAgX3NxbF9wcm9jZXNzX3F1ZXVlKDAsTlVMTCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIHNhdmUgYSBidWZmZXJlZCB0cmFwIHRvIHNxbCBkYXRhYmFzZQorICovCitzdGF0aWMgdm9pZAorX3NxbF9zYXZlKHNxbF9idWYgKnNxbGIsIHZvaWQgKmRvbnRjYXJlKQoreworICAgIG5ldHNubXBfaXRlcmF0b3IgICAgICppdDsKKyAgICBzcWxfdmJfYnVmICAgICAgICAgICAqc3FsdmI7CisgICAgdV9sb25nICAgICAgICAgICAgICAgIHRyYXBfaWQ7CisKKyAgICAvKgorICAgICAqIGRvbid0IGV2ZW4gdHJ5IGlmIHdlIGRvbid0IGhhdmUgYSBkYXRhYmFzZSBjb25uZWN0aW9uCisgICAgICovCisgICAgaWYgKDAgPT0gX3NxbC5jb25uZWN0ZWQpIHsKKyAgICAgICAgX3NxbF9sb2coc3FsYiwgTlVMTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIHRoZSBwcmVwYXJlZCBzdGF0ZW1lbnRzIGFyZSBib3VuZCB0byB0aGUgc3RhdGljIGJ1ZmZlciBvYmplY3RzLAorICAgICAqIHNvIGNvcHkgdGhlIHF1ZXVlZCBkYXRhIHRvIHRoZSBzdGF0aWMgdmVyc2lvbi4KKyAgICAgKi8KKyAgICBfdGJpbmRbVEJJTkRfSE9TVF0uYnVmZmVyID0gc3FsYi0+aG9zdDsKKyAgICBfdGJpbmRbVEJJTkRfSE9TVF0uYnVmZmVyX2xlbmd0aCA9IHNxbGItPmhvc3RfbGVuOworCisgICAgX3RiaW5kW1RCSU5EX09JRF0uYnVmZmVyID0gc3FsYi0+b2lkOworICAgIF90YmluZFtUQklORF9PSURdLmJ1ZmZlcl9sZW5ndGggPSBzcWxiLT5vaWRfbGVuOworCisgICAgX3RiaW5kW1RCSU5EX1JFUUlEXS5idWZmZXIgPSAodm9pZCAqKSZzcWxiLT5yZXFpZDsKKyAgICBfdGJpbmRbVEJJTkRfVkVSXS5idWZmZXIgPSAodm9pZCAqKSZzcWxiLT52ZXJzaW9uOworICAgIF90YmluZFtUQklORF9UWVBFXS5idWZmZXIgPSAodm9pZCAqKSZzcWxiLT50eXBlOworICAgIF90YmluZFtUQklORF9TRUNVUklUWV9NT0RFTF0uYnVmZmVyID0gKHZvaWQgKikmc3FsYi0+c2VjdXJpdHlfbW9kZWw7CisKKyAgICBfdGJpbmRbVEJJTkRfREFURV0uYnVmZmVyID0gKHZvaWQgKikmc3FsYi0+dGltZTsKKworICAgIF90YmluZFtUQklORF9VU0VSXS5idWZmZXIgPSBzcWxiLT51c2VyOworICAgIF90YmluZFtUQklORF9VU0VSXS5idWZmZXJfbGVuZ3RoID0gc3FsYi0+dXNlcl9sZW47CisKKyAgICBfdGJpbmRbVEJJTkRfVFJBTlNQT1JUXS5idWZmZXIgPSBzcWxiLT50cmFuc3BvcnQ7CisgICAgaWYgKHNxbGItPnRyYW5zcG9ydCkKKyAgICAgICAgX3RiaW5kW1RCSU5EX1RSQU5TUE9SVF0uYnVmZmVyX2xlbmd0aCA9IHN0cmxlbihzcWxiLT50cmFuc3BvcnQpOworICAgIGVsc2UKKyAgICAgICAgX3RiaW5kW1RCSU5EX1RSQU5TUE9SVF0uYnVmZmVyX2xlbmd0aCA9IDA7CisKKworICAgIGlmICgoU05NUF9NUF9NT0RFTF9TTk1QdjMrMSkgPT0gc3FsYi0+dmVyc2lvbikgeworICAgICAgICBfbm9fdjMgPSAwOworCisgICAgICAgIF90YmluZFtUQklORF92M19NU0dJRF0uYnVmZmVyID0gJnNxbGItPm1zZ2lkOworICAgICAgICAKKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX0xFVkVMXS5idWZmZXIgPSAmc3FsYi0+c2VjdXJpdHlfbGV2ZWw7CisgICAgICAgIAorICAgICAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9OQU1FXS5idWZmZXIgPSBzcWxiLT5jb250ZXh0OworICAgICAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9OQU1FXS5idWZmZXJfbGVuZ3RoID0gc3FsYi0+Y29udGV4dF9sZW47CisKKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfRU5HSU5FXS5idWZmZXIgPSBzcWxiLT5jb250ZXh0X2VuZ2luZTsKKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfRU5HSU5FXS5idWZmZXJfbGVuZ3RoID0KKyAgICAgICAgICAgIHNxbGItPmNvbnRleHRfZW5naW5lX2xlbjsKKworICAgICAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfTkFNRV0uYnVmZmVyID0gc3FsYi0+c2VjdXJpdHlfbmFtZTsKKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX05BTUVdLmJ1ZmZlcl9sZW5ndGggPSBzcWxiLT5zZWN1cml0eV9uYW1lX2xlbjsKKworICAgICAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfRU5HSU5FXS5idWZmZXIgPSBzcWxiLT5zZWN1cml0eV9lbmdpbmU7CisgICAgICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9FTkdJTkVdLmJ1ZmZlcl9sZW5ndGggPQorICAgICAgICAgICAgc3FsYi0+c2VjdXJpdHlfZW5naW5lX2xlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9ub192MyA9IDE7CisgICAgfQorCisgICAgaWYgKG15c3FsX3N0bXRfYmluZF9wYXJhbShfc3FsLnRyYXBfc3RtdCwgX3RiaW5kKSAhPSAwKSB7CisgICAgICAgIG5ldHNubXBfc3FsX3N0bXRfZXJyb3IoX3NxbC50cmFwX3N0bXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBiaW5kIHBhcmFtZXRlcnMgZm9yIElOU0VSVCIpOworICAgICAgICBfc3FsX2xvZyhzcWxiLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qKiBleGVjdXRlIHRoZSBwcmVwYXJlZCBzdGF0ZW1lbnQgKi8KKyAgICBpZiAobXlzcWxfc3RtdF9leGVjdXRlKF9zcWwudHJhcF9zdG10KSAhPSAwKSB7CisgICAgICAgIG5ldHNubXBfc3FsX3N0bXRfZXJyb3IoX3NxbC50cmFwX3N0bXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBleGVjdXRlIGluc2VydCBzdGF0ZW1lbnQgZm9yIHRyYXAiKTsKKyAgICAgICAgX3NxbF9sb2coc3FsYiwgTlVMTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdHJhcF9pZCA9IG15c3FsX2luc2VydF9pZChfc3FsLmNvbm4pOworCisgICAgLyoKKyAgICAgKiBpdGVyYXRlIG92ZXIgdGhlIHZhcmJpbmRzLCBjb3B5IGRhdGEgYW5kIGluc2VydAorICAgICAqLworICAgIGl0ID0gQ09OVEFJTkVSX0lURVJBVE9SKHNxbGItPnZhcmJpbmRzKTsKKyAgICBpZiAoTlVMTCA9PSBpdCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJDb3VsZCBub3QgYWxsb2NhdGUgaXRlcmF0b3JcbiIpOworICAgICAgICBfc3FsX2xvZyhzcWxiLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciggc3FsdmIgPSBJVEVSQVRPUl9GSVJTVChpdCk7IHNxbHZiOyBzcWx2YiA9IElURVJBVE9SX05FWFQoaXQpKSB7CisKKyAgICAgICAgX3ZiaW5kW1ZCSU5EX0lEXS5idWZmZXIgPSAodm9pZCAqKSZ0cmFwX2lkOworICAgICAgICBfdmJpbmRbVkJJTkRfVFlQRV0uYnVmZmVyID0gKHZvaWQgKikmc3FsdmItPnR5cGU7CisKKyAgICAgICAgX3ZiaW5kW1ZCSU5EX09JRF0uYnVmZmVyID0gc3FsdmItPm9pZDsKKyAgICAgICAgX3ZiaW5kW1ZCSU5EX09JRF0uYnVmZmVyX2xlbmd0aCA9IHNxbHZiLT5vaWRfbGVuOworCisgICAgICAgIF92YmluZFtWQklORF9WQUxdLmJ1ZmZlciA9IHNxbHZiLT52YWw7CisgICAgICAgIF92YmluZFtWQklORF9WQUxdLmJ1ZmZlcl9sZW5ndGggPSBzcWx2Yi0+dmFsX2xlbjsKKworICAgICAgICBpZiAobXlzcWxfc3RtdF9iaW5kX3BhcmFtKF9zcWwudmJfc3RtdCwgX3ZiaW5kKSAhPSAwKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NxbF9zdG10X2Vycm9yKF9zcWwudmJfc3RtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBiaW5kIHBhcmFtZXRlcnMgZm9yIElOU0VSVCIpOworICAgICAgICAgICAgX3NxbF9sb2coc3FsYiwgTlVMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChteXNxbF9zdG10X2V4ZWN1dGUoX3NxbC52Yl9zdG10KSAhPSAwKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NxbF9zdG10X2Vycm9yKF9zcWwudmJfc3RtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBleGVjdXRlIGluc2VydCBzdGF0ZW1lbnQgZm9yIHZhcmJpbmQiKTsKKyAgICAgICAgICAgIF9zcWxfbG9nKHNxbGIsIE5VTEwpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgSVRFUkFUT1JfUkVMRUFTRShpdCk7Cit9CisKKy8qCisgKiBwcm9jZXNzIChzYXZlKSBxdWV1ZWQgaXRlbXMgdG8gc3FsIGRhdGFiYXNlLgorICoKKyAqIGRvbnRjYXJlICYgbWVlaXRoZXIgYXJlIGR1bW15IHBhcmFtcyBzbyB0aGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkCisgKiBhcyBhIG5ldHNubXBfYWxhcm0gY2FsbGJhY2sgZnVuY3Rpb24uCisgKi8KK3N0YXRpYyB2b2lkCitfc3FsX3Byb2Nlc3NfcXVldWUodV9pbnQgZG9udGNhcmUsIHZvaWQgKm1lZWl0aGVyKQoreworICAgIGludCAgICAgICAgcmM7CisKKyAgICAvKiogYmFpbCBpZiB0aGUgcXVldWUgaXMgZW1wdHkgKi8KKyAgICBpZiggMCA9PSBDT05UQUlORVJfU0laRShfc3FsLnF1ZXVlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgREVCVUdNU0dUKCgic3FsOnByb2Nlc3MiLCAicHJvY2Vzc2luZyAlZCBxdWV1ZWQgdHJhcHNcbiIsCisgICAgICAgICAgICAgICBDT05UQUlORVJfU0laRShfc3FsLnF1ZXVlKSkpOworCisgICAgLyoKKyAgICAgKiBpZiB3ZSBkb24ndCBoYXZlIGEgZGF0YWJhc2UgY29ubmVjdGlvbiwgdHJ5IHRvIHJlY29ubmVjdC4gV2UKKyAgICAgKiBkb24ndCBjYXJlIGlmIHdlIGZhaWwgLSB0cmFwcyB3aWxsIGJlIGxvZ2dlZCBpbiB0aGF0IGNhc2UuCisgICAgICovCisgICAgaWYgKDAgPT0gX3NxbC5jb25uZWN0ZWQpIHsKKyAgICAgICAgREVCVUdNU0dUKCgic3FsOnByb2Nlc3MiLCAibm8gc3FsIGNvbm5lY3Rpb247IHJlY29ubmVjdGluZ1xuIikpOworICAgICAgICAodm9pZCkgbmV0c25tcF9teXNxbF9jb25uZWN0KCk7CisgICAgfQorCisgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKF9zcWwucXVldWUsIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyopX3NxbF9zYXZlLAorICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIGlmIChfc3FsLmNvbm5lY3RlZCkgeworICAgICAgICByYyA9IG15c3FsX2NvbW1pdChfc3FsLmNvbm4pOworICAgICAgICBpZiAocmMpIHsgLyogbnV0cy4uLiBub3cgd2hhdD8gKi8KKyAgICAgICAgICAgIG5ldHNubXBfc3FsX2Vycm9yKCJjb21taXQgZmFpbGVkIik7CisgICAgICAgICAgICBDT05UQUlORVJfRk9SX0VBQ0goX3NxbC5xdWV1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKV9zcWxfbG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgQ09OVEFJTkVSX0NMRUFSKF9zcWwucXVldWUsIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyopX3NxbF9idWZfZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cit9CisKKyNlbmRpZiAvKiBORVRTTk1QX1VTRV9NWVNRTCAqLwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdXNtLmMgYi9hcHBzL3NubXB1c20uYwppbmRleCBkMWNiYTg3Li5mODY1MTVlIDEwMDY0NAotLS0gYS9hcHBzL3NubXB1c20uYworKysgYi9hcHBzL3NubXB1c20uYwpAQCAtMzAxLDcgKzMwMSw3IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSAnRSc6IHsKLQkgICAgICAgIHNpemVfdCBlYnVmX2xlbiA9IDMyOyAvKiBYWFg6IE1BWF9FTkdJTkVJRF9MRU5HVEggKi8KKwkgICAgICAgIHNpemVfdCBlYnVmX2xlbiA9IE1BWF9FTkdJTkVJRF9MRU5HVEg7CiAgICAgICAgICAgICAgICAgdV9jaGFyICplYnVmOwogICAgICAgICAgICAgICAgIGlmIChvcHRpbmQgPCBhcmdjKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhcmd2W29wdGluZF0pIHsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHZhY20uYyBiL2FwcHMvc25tcHZhY20uYwppbmRleCBjZjA3MWYyLi5iZGJhODk2IDEwMDY0NAotLS0gYS9hcHBzL3NubXB2YWNtLmMKKysrIGIvYXBwcy9zbm1wdmFjbS5jCkBAIC05MCwxOSArOTAsMTUgQEAKIAogc3RhdGljIG9pZCAgICAgIHZhY21Hcm91cE5hbWVbTUFYX09JRF9MRU5dID0KICAgICB7IDEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCAyLCAxLCAzIH0sCi0gICAgdmFjbVNlYzJHcm91cFN0b3JhZ2VUeXBlW01BWF9PSURfTEVOXSA9IHsKLTEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCAyLCAxLCA0fSwgdmFjbVNlYzJHcm91cFN0YXR1c1tNQVhfT0lEX0xFTl0gPSB7CisgICAgdmFjbVNlYzJHcm91cFN0YXR1c1tNQVhfT0lEX0xFTl0gPSB7CiAxLCAzLCA2LCAxLCA2LCAzLCAxNiwgMSwgMiwgMSwgNX0sIHZhY21BY2Nlc3NDb250ZXh0TWF0Y2hbTUFYX09JRF9MRU5dID0gewogMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDQsIDEsIDR9LCB2YWNtQWNjZXNzUmVhZFZpZXdOYW1lW01BWF9PSURfTEVOXSA9IHsKIDEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCA0LCAxLCA1fSwgdmFjbUFjY2Vzc1dyaXRlVmlld05hbWVbTUFYX09JRF9MRU5dID0gewogMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDQsIDEsIDZ9LCB2YWNtQWNjZXNzTm90aWZ5Vmlld05hbWVbTUFYX09JRF9MRU5dID0gewotMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDQsIDEsIDd9LCB2YWNtQWNjZXNzU3RvcmFnZVR5cGVbTUFYX09JRF9MRU5dID0gewotMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDQsIDEsIDh9LCB2YWNtQWNjZXNzU3RhdHVzW01BWF9PSURfTEVOXSA9IHsKKzEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCA0LCAxLCA3fSwgdmFjbUFjY2Vzc1N0YXR1c1tNQVhfT0lEX0xFTl0gPSB7CiAxLCAzLCA2LCAxLCA2LCAzLCAxNiwgMSwgNCwgMSwgOX0sIHZhY21WaWV3VHJlZUZhbWlseU1hc2tbTUFYX09JRF9MRU5dID0gewogMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDUsIDIsIDEsIDN9LCB2YWNtVmlld1RyZWVGYW1pbHlUeXBlW01BWF9PSURfTEVOXSA9IHsKIDEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCA1LCAyLCAxLCA0fSwKLSAgICB2YWNtVmlld1RyZWVGYW1pbHlTdG9yYWdlVHlwZVtNQVhfT0lEX0xFTl0gPSB7Ci0xLCAzLCA2LCAxLCA2LCAzLCAxNiwgMSwgNSwgMiwgMSwgNX0sCiAgICAgdmFjbVZpZXdUcmVlRmFtaWx5U3RhdHVzW01BWF9PSURfTEVOXSA9IHsKIDEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCA1LCAyLCAxLCA2fQogCkBAIC0xMTEsNyArMTA3LDYgQEAKICNkZWZpbmUgTlNWQUNNQUNDRVNTVEFCTEUgICAgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgOSwgMQogc3RhdGljIG9pZCBuc1ZhY21Db250ZXh0UGZ4W01BWF9PSURfTEVOXSAgPSB7IE5TVkFDTUFDQ0VTU1RBQkxFLCAxLCAyIH07CiBzdGF0aWMgb2lkIG5zVmFjbVZpZXdOYW1lW01BWF9PSURfTEVOXSAgICA9IHsgTlNWQUNNQUNDRVNTVEFCTEUsIDEsIDMgfTsKLXN0YXRpYyBvaWQgbnNWYWNtU3RvcmFnZVR5cGVbTUFYX09JRF9MRU5dID0geyBOU1ZBQ01BQ0NFU1NUQUJMRSwgMSwgNCB9Owogc3RhdGljIG9pZCBuc1ZhY21Sb3dTdGF0dXNbTUFYX09JRF9MRU5dICAgPSB7IE5TVkFDTUFDQ0VTU1RBQkxFLCAxLCA1IH07CiAKIGludCAgICAgICAgICAgICB2aWV3VHJlZUZhbWlseVR5cGUgPSAxOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wd2Fsay5jIGIvYXBwcy9zbm1wd2Fsay5jCmluZGV4IDM2MTM0MWEuLmIwZGIzZjQgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHdhbGsuYworKysgYi9hcHBzL3NubXB3YWxrLmMKQEAgLTgwLDYgKzgwLDggQEAKIG9pZCAgICAgICAgICAgICBvYmppZF9taWJbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSB9OwogaW50ICAgICAgICAgICAgIG51bXByaW50ZWQgPSAwOwogCitjaGFyICAgICAgICAgICAqZW5kX25hbWUgPSBOVUxMOworCiB2b2lkCiB1c2FnZSh2b2lkKQogewpAQCAtOTYsNiArOTgsNyBAQAogICAgICAgICAgICAgIlx0XHRcdCAgYzogIGRvIG5vdCBjaGVjayByZXR1cm5lZCBPSURzIGFyZSBpbmNyZWFzaW5nXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICJcdFx0XHQgIHQ6ICBEaXNwbGF5IHdhbGwtY2xvY2sgdGltZSB0byBjb21wbGV0ZSB0aGUgcmVxdWVzdFxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICJcdFx0XHQgIEUge09JRH06ICBFbmQgdGhlIHdhbGsgYXQgdGhlIHNwZWNpZmllZCBPSURcbiIpOwogfQogCiB2b2lkCkBAIC0xNTEsNiArMTU0LDEwIEBACiAgICAgICAgICAgICAgICAgbmV0c25tcF9kc190b2dnbGVfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19XQUxLX1RJTUVfUkVTVUxUUyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgJ0UnOgorICAgICAgICAgICAgICAgIGVuZF9uYW1lID0gYXJndltvcHRpbmQrK107CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5rbm93biBmbGFnIHBhc3NlZCB0byAtQzogJWNcbiIsCkBAIC0xNzMsNiArMTgwLDggQEAKICAgICBzaXplX3QgICAgICAgICAgbmFtZV9sZW5ndGg7CiAgICAgb2lkICAgICAgICAgICAgIHJvb3RbTUFYX09JRF9MRU5dOwogICAgIHNpemVfdCAgICAgICAgICByb290bGVuOworICAgIG9pZCAgICAgICAgICAgICBlbmRfb2lkW01BWF9PSURfTEVOXTsKKyAgICBzaXplX3QgICAgICAgICAgZW5kX2xlbiA9IDA7CiAgICAgaW50ICAgICAgICAgICAgIGNvdW50OwogICAgIGludCAgICAgICAgICAgICBydW5uaW5nOwogICAgIGludCAgICAgICAgICAgICBzdGF0dXMgPSBTVEFUX0VSUk9SOwpAQCAtMjMzLDYgKzI0MiwyMyBAQAogICAgICAgICByb290bGVuID0gc2l6ZW9mKG9iamlkX21pYikgLyBzaXplb2Yob2lkKTsKICAgICB9CiAKKyAgICAvKgorICAgICAqIElmIHdlJ3ZlIGJlZW4gZ2l2ZW4gYW4gZXhwbGljaXQgZW5kIHBvaW50LAorICAgICAqICB0aGVuIGNvbnZlcnQgdGhpcyB0byBhbiBPSUQsIG90aGVyd2lzZQorICAgICAqICBtb3ZlIHRvIHRoZSBuZXh0IHNpYmxpbmcgb2YgdGhlIHN0YXJ0LgorICAgICAqLworICAgIGlmICggZW5kX25hbWUgKSB7CisgICAgICAgIGVuZF9sZW4gPSBNQVhfT0lEX0xFTjsKKyAgICAgICAgaWYgKHNubXBfcGFyc2Vfb2lkKGVuZF9uYW1lLCBlbmRfb2lkLCAmZW5kX2xlbikgPT0gTlVMTCkgeworICAgICAgICAgICAgc25tcF9wZXJyb3IoZW5kX25hbWUpOworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIG1lbW1vdmUoZW5kX29pZCwgcm9vdCwgcm9vdGxlbipzaXplb2Yob2lkKSk7CisgICAgICAgIGVuZF9sZW4gPSByb290bGVuOworICAgICAgICBlbmRfb2lkW2VuZF9sZW4tMV0rKzsKKyAgICB9CisKICAgICBTT0NLX1NUQVJUVVA7CiAKICAgICAvKgpAQCAtMjg0LDkgKzMxMCw4IEBACiAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgZm9yICh2YXJzID0gcmVzcG9uc2UtPnZhcmlhYmxlczsgdmFyczsKICAgICAgICAgICAgICAgICAgICAgIHZhcnMgPSB2YXJzLT5uZXh0X3ZhcmlhYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgodmFycy0+bmFtZV9sZW5ndGggPCByb290bGVuKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1lbWNtcChyb290LCB2YXJzLT5uYW1lLCByb290bGVuICogc2l6ZW9mKG9pZCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNubXBfb2lkX2NvbXBhcmUoZW5kX29pZCwgZW5kX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFycy0+bmFtZSwgdmFycy0+bmFtZV9sZW5ndGgpIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAgICAgKiBub3QgcGFydCBvZiB0aGlzIHN1YnRyZWUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2FwcHMvc3NodG9zbm1wLmMgYi9hcHBzL3NzaHRvc25tcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MGE0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9hcHBzL3NzaHRvc25tcC5jCkBAIC0wLDAgKzEsMjM0IEBACisvKiBDb3B5cmlnaHQgMjAwOSBTUEFSVEEsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZAorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworCisvKgorICogVGhpcyBpcyBtZXJlbHkgYSB3cmFwcGVyIGFyb3VuZCBzdGRpbi9vdXQgZm9yIHNzaGQgdG8gY2FsbC4gIEl0CisgKiBzaW1wbHkgcGFzc2VzIHRyYWZmaWMgdG8gdGhlIHJ1bm5pbmcgc25tcGQgdGhyb3VnaCBhIHVuaXggZG9tYWluCisgKiBzb2NrZXQgYWZ0ZXIgZmlyc3QgcGFzc2luZyBhbnkgbmVlZGVkIFNTSCBEb21haW4gaW5mb3JtYXRpb24uCisgKi8KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19VTl9ICisjaW5jbHVkZSA8c3lzL3VuLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZm5kZWYgTUFYUEFUSExFTgorI3dhcm4gbm8gc3lzdGVtIG1heCBwYXRoIGxlbmd0aCBkZXRlY3RlZAorI2RlZmluZSBNQVhQQVRITEVOIDIwNDgKKyNlbmRpZgorCisjZGVmaW5lIERFRkFVTFRfU09DS19QQVRIICIvdmFyL25ldC1zbm1wL3NzaGRvbWFpbnNvY2tldCIKKworI2RlZmluZSBORVRTTk1QX1NTSFRPU05NUF9WRVJTSU9OX05VTUJFUiAxCisKKworCisvKgorICogRXh0cmEgZGVidWdnaW5nIG91dHB1dCBmb3IsIHVtLCBkZWJ1Z2dpbmcuCisgKi8KKworI3VuZGVmIERFQlVHR0lORworCisjaWZkZWYgREVCVUdHSU5HCisjZGVmaW5lIERFQlVHKHgpIGRlYih4KQorRklMRSAqZGViZiA9IE5VTEw7Cit2b2lkCitkZWIoY29uc3QgY2hhciAqc3RyaW5nKSB7CisgICAgaWYgKE5VTEwgPT0gZGViZikgeworICAgICAgICBkZWJmID0gZm9wZW4oIi90bXAvc3NodG9zbm1wLmxvZyIsICJhIik7CisgICAgfQorICAgIGlmIChOVUxMICE9IGRlYmYpIHsKKyAgICAgICAgZnByaW50ZihkZWJmLCAiJXNcbiIsIHN0cmluZyk7CisgICAgICAgIGZmbHVzaChkZWJmKTsKKyAgICB9Cit9CisjZWxzZSAgLyogIURFQlVHR0lORyAqLworI2RlZmluZSBERUJVRyh4KQorI2VuZGlmIC8qIERFQlVHR0lORyBjb2RlICovCisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKworICAgIGludCBzb2NrOworICAgIHN0cnVjdCBzb2NrYWRkcl91biBhZGRyOworICAgIHVfY2hhciBidWZbNDA5Nl07CisgICAgc2l6ZV90IGJ1Zl9sZW4gPSBzaXplb2YoYnVmKTsKKyAgICB1X3Nob3J0IG5hbWVfbGVuOworICAgIGludCByYyA9IDAsIHBrdHNpemUgPSAwOworCisgICAgZmRfc2V0IHJlYWRfc2V0OworCisgICAgREVCVUcoIi0tLS0tLS0tLS1cbnN0YXJ0aW5nIHVwIik7CisKKyAgICAvKiBPcGVuIGEgY29ubmVjdGlvbiB0byB0aGUgVU5JWCBkb21haW4gc29ja2V0IG9yIGZhaWwgKi8KKworICAgIGFkZHIuc3VuX2ZhbWlseSA9IEFGX1VOSVg7CisgICAgaWYgKGFyZ2MgPiAxKSB7CisgICAgICAgIHN0cmNweShhZGRyLnN1bl9wYXRoLCBhcmd2WzFdKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdHJjcHkoYWRkci5zdW5fcGF0aCwgREVGQVVMVF9TT0NLX1BBVEgpOworICAgIH0KKworICAgIHNvY2sgPSBzb2NrZXQoUEZfVU5JWCwgU09DS19TVFJFQU0sIDApOworICAgIERFQlVHKCJjcmVhdGVkIHNvY2tldCIpOworICAgIGlmIChzb2NrIDw9IDApIHsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICAvKiBzZXQgdGhlIFNPX1BBU1NDUkVEIG9wdGlvbiBzbyB3ZSBjYW4gcGFzcyB1aWQgKi8KKyAgICAvKiBYWFg6IGFjY29yZGluZyB0byB0aGUgdW5peCgxKSBtYW51YWwgdGhpcyBzaG91bGRuJ3QgYmUgbmVlZGVkCisgICAgICAgb24gdGhlIHNlbmRpbmcgc2lkZT8gKi8KKyAgICB7CisgICAgICAgIGludCBvbmUgPSAxOworICAgICAgICBzZXRzb2Nrb3B0KHNvY2ssIFNPTF9TT0NLRVQsIFNPX1BBU1NDUkVELCAodm9pZCAqKSAmb25lLAorICAgICAgICAgICAgICAgICAgIHNpemVvZihvbmUpKTsKKyAgICB9CisKKyAgICBpZiAoY29ubmVjdChzb2NrLCAoc3RydWN0IHNvY2thZGRyICopICZhZGRyLAorICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pKSAhPSAwKSB7CisgICAgICAgIERFQlVHKCJGQUlMIENPTk5FQ1QiKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICBERUJVRygib3BlbmVkIHNvY2tldCIpOworCisgICAgLyoKKyAgICAgKiB3ZSBhcmUgcnVubmluZyBhcyB0aGUgdXNlciB0aGF0IHNzaCBhdXRoZW50aWNhdGVkIHVzIGFzLCBhbmQgdGhpcworICAgICAqIGlzIHRoZSBuYW1lL3VpZCB0aGF0IHRoZSBhZ2VudCBuZWVkcyBmb3IgcHJvY2Vzc2luZyBhcyBhIFNOTVB2MworICAgICAqIHNlY3VyaXR5IG5hbWUuICBTbyB0aGlzIGlzIHRoZSBvbmx5IHRoaW5nIG5lZWRlZCB0byBwYXNzIHRvIHRoZQorICAgICAqIGFnZW50LgorICAgICAqLworCisgICAgLyogdmVyc2lvbiAxIG9mIG91ciBpbnRlcm5hbCBzc2ggdG8gc25tcCB3cmFwcGVyIGlzIGp1c3QgYSBzaW5nbGUKKyAgICAgICBieXRlIHZlcnNpb24gbnVtYmVyIGFuZCBpbmRpY2F0ZXMgd2UncmUgYWxzbyBwYXNzaW5nIHVuaXgKKyAgICAgICBzb2NrZXQgY3JlZGVudGlhbHMgY29udGFpbmluZyBvdXIgdXNlciBpZCAqLworCisgICAgLyogSW4gY2FzZSBvZiBmdXR1cmUgY2hhbmdlcywgd2UnbGwgcGFzcyBhIHZlcnNpb24gbnVtYmVyIGZpcnN0ICovCisKKyAgICBidWZbMF0gPSBORVRTTk1QX1NTSFRPU05NUF9WRVJTSU9OX05VTUJFUjsKKyAgICBidWZfbGVuID0gMTsKKyAgICAKKyAgICAvKiBzZW5kIHRoZSBwcmVsaW0gbWVzc2FnZSBhbmQgdGhlIGNyZWRlbnRpYWxzIHRvZ2V0aGVyIHVzaW5nIHNlbmRtc2coKSAqLworICAgIHsKKyAgICAgICAgc3RydWN0IG1zZ2hkciBtOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciBjbTsKKyAgICAgICAgICAgc3RydWN0IHVjcmVkIG91cnVzZXI7CisgICAgICAgIH0gY21zZzsKKyAgICAgICAgc3RydWN0IGlvdmVjIGlvdiA9IHsgYnVmLCBidWZfbGVuIH07CisKKyAgICAgICAgLyogTWFrZSBzdXJlIHRoYXQgZXZlbiBwYWRkaW5nIGZpZWxkcyBnZXQgaW5pdGlhbGl6ZWQuKi8KKyAgICAgICAgbWVtc2V0KCZjbXNnLCAwLCBzaXplb2YoY21zZykpOworICAgICAgICBtZW1zZXQoJm0sIDAsIHNpemVvZihtKSk7CisKKyAgICAgICAgLyogc2V0IHVwIHRoZSBiYXNpYyBtZXNzYWdlICovCisgICAgICAgIGNtc2cuY20uY21zZ19sZW4gPSBzaXplb2Yoc3RydWN0IGNtc2doZHIpICsgc2l6ZW9mKHN0cnVjdCB1Y3JlZCk7CisgICAgICAgIGNtc2cuY20uY21zZ19sZXZlbCA9IFNPTF9TT0NLRVQ7CisgICAgICAgIGNtc2cuY20uY21zZ190eXBlID0gU0NNX0NSRURFTlRJQUxTOworCisgICAgICAgIGNtc2cub3VydXNlci51aWQgPSBnZXR1aWQoKTsKKyAgICAgICAgY21zZy5vdXJ1c2VyLmdpZCA9IGdldGdpZCgpOworICAgICAgICBjbXNnLm91cnVzZXIucGlkID0gZ2V0cGlkKCk7CisKKyAgICAgICAgbS5tc2dfaW92ICAgICAgICAgICAgICAgPSAmaW92OworICAgICAgICBtLm1zZ19pb3ZsZW4gICAgICAgICAgICA9IDE7CisgICAgICAgIG0ubXNnX2NvbnRyb2wgICAgICAgICAgID0gJmNtc2c7CisgICAgICAgIG0ubXNnX2NvbnRyb2xsZW4gICAgICAgID0gc2l6ZW9mKGNtc2cpOworICAgICAgICBtLm1zZ19mbGFncyAgICAgICAgICAgICA9IDA7CisgICAgICAgIAorICAgICAgICBERUJVRygic2VuZGluZyB0byBzb2NrIik7CisgICAgICAgIHJjID0gc2VuZG1zZyhzb2NrLCAmbSwgTVNHX05PU0lHTkFMfE1TR19ET05UV0FJVCk7CisgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZmFpbGVkIHRvIHNlbmQgc3RhcnR1cCBtZXNzYWdlXG4iKTsKKyAgICAgICAgICAgIERFQlVHKCJmYWlsZWQgdG8gc2VuZCBzdGFydHVwIG1lc3NhZ2VcbiIpOworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIERFQlVHKCJzZW50IG5hbWUiKTsKKyAgICAKKyAgICAvKiBub3cgd2UganVzdCBzZW5kIGFuZCByZWNlaXZlIGZyb20gYm90aCB0aGUgc29ja2V0IGFuZCBzdGRpbi9zdGRvdXQgKi8KKworICAgIHdoaWxlKDEpIHsKKyAgICAgICAgLyogcmVhZCBmcm9tIHN0ZGluIGFuZCB0aGUgc29ja2V0ICovCisgICAgICAgIEZEX1NFVChzb2NrLCAmcmVhZF9zZXQpOworICAgICAgICBGRF9TRVQoU1RESU5fRklMRU5PLCAmcmVhZF9zZXQpOworCisgICAgICAgIC8qIGJsb2NraW5nIHdpdGhvdXQgYSB0aW1lb3V0IGJlIGZpbmUgZmluZSAqLworICAgICAgICBzZWxlY3Qoc29jaysxLCAmcmVhZF9zZXQsIE5VTEwsIE5VTEwsIE5VTEwpOworCisgICAgICAgIGlmIChGRF9JU1NFVChTVERJTl9GSUxFTk8sICZyZWFkX3NldCkpIHsKKyAgICAgICAgICAgIC8qIHJlYWQgZnJvbSBzdGRpbiB0byBnZXQgc3R1ZmYgZnJvbSBzc2hkIHRvIHNlbmQgdG8gdGhlIGFnZW50ICovCisgICAgICAgICAgICBERUJVRygiZGF0YSBmcm9tIHN0ZGluIik7CisgICAgICAgICAgICByYyA9IHJlYWQoU1RESU5fRklMRU5PLCBidWYsIHNpemVvZihidWYpKTsKKworICAgICAgICAgICAgaWYgKHJjIDw9IDApIHsKKyAgICAgICAgICAgICAgICAvKiBlbmQtb2YtZmlsZSAqLworI2lmbmRlZiBIQVZFX0NMT1NFU09DS0VUCisgICAgICAgICAgICAgICAgcmMgPSBjbG9zZShzb2NrKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgcmMgPSBjbG9zZXNvY2tldChzb2NrKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGV4aXQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBERUJVRygicmVhZCBmcm9tIHN0ZGluIik7CisKKyAgICAgICAgICAgIC8qIHNlbmQgaXQgdXAgdGhlIHBpcGUgKi8KKyAgICAgICAgICAgIHBrdHNpemUgPSByYzsKKyAgICAgICAgICAgIHJjID0gLTE7CisgICAgICAgICAgICB3aGlsZSAocmMgPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUcoInNlbmRpbmcgdG8gc29ja2V0Iik7CisgICAgICAgICAgICAgICAgcmMgPSBzZW5kdG8oc29jaywgYnVmLCBwa3RzaXplLCAwLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBERUJVRygiYmFjayBmcm9tIHNlbmR0byIpOworICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICAgICAgICAgIERFQlVHKCJzZW50dG8gZmFpbGVkIik7CisgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCAmJiBlcnJubyAhPSBFSU5UUikgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmMgPiAwKQorICAgICAgICAgICAgICAgIERFQlVHKCJzZW50IHRvIHNvY2tldCIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIERFQlVHKCJmYWlsZWQgdG8gc2VuZCB0byBzb2NrZXQhISIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEZEX0lTU0VUKHNvY2ssICZyZWFkX3NldCkpIHsKKyAgICAgICAgICAgIC8qIHJlYWQgZnJvbSB0aGUgc29ja2V0IGFuZCBzZW5kIHRvIHRvIHN0ZG91dCB3aGljaCBnb2VzIHRvIHNzaGQgKi8KKyAgICAgICAgICAgIERFQlVHKCJkYXRhIG9uIHVuaXggc29ja2V0Iik7CisKKyAgICAgICAgICAgIHJjID0gLTE7CisgICAgICAgICAgICB3aGlsZSAocmMgPCAwKSB7CisgICAgICAgICAgICAgICAgcmMgPSByZWN2ZnJvbShzb2NrLCBidWYsIHNpemVvZihidWYpLCAwLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgICAgIGNsb3NlKHNvY2spOworICAgICAgICAgICAgICAgICAgICBleGl0KDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERFQlVHKCJyZWFkIGZyb20gc29ja2V0Iik7CisKKyAgICAgICAgICAgIHBrdHNpemUgPSByYzsKKyAgICAgICAgICAgIHJjID0gd3JpdGUoU1RET1VUX0ZJTEVOTywgYnVmLCBwa3RzaXplKTsKKyAgICAgICAgICAgIC8qIFhYWDogY2hlY2sgdGhhdCBjb3VudHMgbWF0Y2ggKi8KKyAgICAgICAgICAgIGlmIChyYyA+IDApIHsKKyAgICAgICAgICAgICAgICBERUJVRygid3JvdGUgdG8gc3Rkb3V0Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIERFQlVHKCJmYWlsZWQgdG8gd3JpdGUgdG8gc3Rkb3V0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb25maWcuZ3Vlc3MgYi9jb25maWcuZ3Vlc3MKaW5kZXggZjMyMDc5YS4uY2EyYTAzYyAxMDA3NTUKLS0tIGEvY29uZmlnLmd1ZXNzCisrKyBiL2NvbmZpZy5ndWVzcwpAQCAtNCw3ICs0LDcgQEAKICMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4CiAjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAwOC0wMS0yMycKK3RpbWVzdGFtcD0nMjAwOC0wMS0wOCcKIAogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTQ4NCw5ICsxNDg0LDkgQEAKIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcuIEl0IGlzIGFkdmlzZWQgdGhhdCB5b3UKIGRvd25sb2FkIHRoZSBtb3N0IHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgY29uZmlnIHNjcmlwdHMgZnJvbQogCi0gIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAorICBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9jZ2ktYmluL3ZpZXdjdnMvKmNoZWNrb3V0Ki9jb25maWcvY29uZmlnL2NvbmZpZy5ndWVzcwogYW5kCi0gIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKyAgaHR0cDovL3NhdmFubmFoLmdudS5vcmcvY2dpLWJpbi92aWV3Y3ZzLypjaGVja291dCovY29uZmlnL2NvbmZpZy9jb25maWcuc3ViCiAKIElmIHRoZSB2ZXJzaW9uIHlvdSBydW4gKCQwKSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUsIHBsZWFzZQogc2VuZCB0aGUgZm9sbG93aW5nIGRhdGEgYW5kIGFueSBpbmZvcm1hdGlvbiB5b3UgdGhpbmsgbWlnaHQgYmUKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCBmMGFkZWFmLi44YWU5NThhIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2I0Y2RkCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmFjCkBAIC0wLDAgKzEsMTIyIEBACisjIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQorIyB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworIyB0aGF0IG1heSBhcHBseToKKyMKKyMgUG9ydGlvbnMgQ29weXJpZ2h0IKkgMjAwMyBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyMgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyMKKworIworIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0LgorIworQUNfSU5JVChbTmV0LVNOTVBdLCBbNS41LjJdLCBbbmV0LXNubXAtY29kZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldF0pCitBQ19QUkVSRVEoWzIuNjNdKQorQUNfQ09ORklHX1NSQ0RJUihbYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jXSkKK0FDX1JFVklTSU9OKFskUmV2aXNpb24kXSkKKworQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQorQUNfQ09ORklHX0hFQURFUihpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oKQorCitBQ19NU0dfQ0FDSEVfSU5JVCgpCisKKyMKKyMgc2F2ZSB0aGUgY29uZmlndXJlIGFyZ3VtZW50cworIworQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfQ09ORklHVVJFX09QVElPTlMsIiRhY19jb25maWd1cmVfYXJncyIsCisgIFtjb25maWd1cmUgb3B0aW9ucyBzcGVjaWZpZWRdKQorQ09ORklHVVJFX09QVElPTlM9IlwiJGFjX2NvbmZpZ3VyZV9hcmdzXCIiCitBQ19TVUJTVChDT05GSUdVUkVfT1BUSU9OUykKKworIyMKKyMjIFJlY29tbWVuZGVkIHN0cnVjdHVyZToKKyMjCisjICAgICBpbmZvcm1hdGlvbiBvbiB0aGUgcGFja2FnZQorIyAgICAgY2hlY2tzIGZvciBwcm9ncmFtcworIyAgICAgY2hlY2tzIGZvciBsaWJyYXJpZXMKKyMgICAgIGNoZWNrcyBmb3IgaGVhZGVyIGZpbGVzCisjICAgICBjaGVja3MgZm9yIHR5cGVzCisjICAgICBjaGVja3MgZm9yIHN0cnVjdHVyZXMKKyMgICAgIGNoZWNrcyBmb3IgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzCisjICAgICBjaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zCisjICAgICBjaGVja3MgZm9yIHN5c3RlbSBzZXJ2aWNlcworCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZV0pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3NdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGF0aHNdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnNdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfaXB2Nl90eXBlc10pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWJdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50XSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMV0pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfb3NfbGliczJdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob25dKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3R5cGVzXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjM10pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVyc10pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzRdKQorCisjCisjIGRlZmluZSB0aGUgYWdlbnQgbGlicmFyaWVzIHZhcmlhYmxlcworIworQUNfU1VCU1QoTE1JQkxJQlMpCitBQ19TVUJTVChBR0VOVExJQlMpCitBQ19TVUJTVChPVEhFUkFHRU5UTElCT0JKUykKK0FDX1NVQlNUKE9USEVSQUdFTlRMSUJMT0JKUykKKworbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsXSkKKworQUNfU1VCU1QoRExMSUJTKQorCitBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlOk1ha2VmaWxlLnRvcDpNYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlc10pCitBQ19DT05GSUdfRklMRVMoW3NubXBsaWIvTWFrZWZpbGU6TWFrZWZpbGUudG9wOnNubXBsaWIvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXM6c25tcGxpYi9NYWtlZmlsZS5kZXBlbmRdKQorQUNfQ09ORklHX0ZJTEVTKFthcHBzL01ha2VmaWxlOk1ha2VmaWxlLnRvcDphcHBzL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOmFwcHMvTWFrZWZpbGUuZGVwZW5kXSkKK0FDX0NPTkZJR19GSUxFUyhbYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZTpNYWtlZmlsZS50b3A6YXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZF0pCitBQ19DT05GSUdfRklMRVMoW2FnZW50L01ha2VmaWxlOk1ha2VmaWxlLnRvcDphZ2VudC9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphZ2VudC9NYWtlZmlsZS5kZXBlbmRdKQorQUNfQ09ORklHX0ZJTEVTKFthZ2VudC9oZWxwZXJzL01ha2VmaWxlOk1ha2VmaWxlLnRvcDphZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOmFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kXSkKK0FDX0NPTkZJR19GSUxFUyhbYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGU6TWFrZWZpbGUudG9wOmFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOmFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZF0pCitBQ19DT05GSUdfRklMRVMoW2xvY2FsL01ha2VmaWxlOk1ha2VmaWxlLnRvcDpsb2NhbC9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlc10pCitBQ19DT05GSUdfRklMRVMoW3Rlc3RpbmcvTWFrZWZpbGU6TWFrZWZpbGUudG9wOnRlc3RpbmcvTWFrZWZpbGUuaW5dKQorQUNfQ09ORklHX0ZJTEVTKFttYW4vTWFrZWZpbGU6TWFrZWZpbGUudG9wOm1hbi9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlc10pCitBQ19DT05GSUdfRklMRVMoW21pYnMvTWFrZWZpbGU6TWFrZWZpbGUudG9wOm1pYnMvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXNdKQorQUNfQ09ORklHX0ZJTEVTKFtuZXQtc25tcC1jb25maWc6bmV0LXNubXAtY29uZmlnLmluXSwKKwkJW2NobW9kICt4IG5ldC1zbm1wLWNvbmZpZ10pCitBQ19DT05GSUdfRklMRVMoW25ldC1zbm1wLWNyZWF0ZS12My11c2VyOm5ldC1zbm1wLWNyZWF0ZS12My11c2VyLmluXSwKKwkJW2NobW9kICt4IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyXSkKKworQUNfQ09ORklHX0NPTU1BTkRTKFtkZWZhdWx0XSwgZWNobyB0aW1lc3RhbXAgPiBzdGFtcC1oKQorCisjCisjIHByb3RlY3QgUEFDS0FHRV8qIHZhcmlhYmxlcworIworQUhfVkVSQkFUSU0oW1BBQ0tBR0VfQlVHUkVQT1JUXSxbLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCisjaWZuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCisjdW5kZWYgUEFDS0FHRV9CVUdSRVBPUlQKKyNlbmRpZl0pCitBSF9WRVJCQVRJTShbUEFDS0FHRV9OQU1FXSxbLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2lmbmRlZiBQQUNLQUdFX05BTUUKKyN1bmRlZiBQQUNLQUdFX05BTUUKKyNlbmRpZl0pCitBSF9WRVJCQVRJTShbUEFDS0FHRV9TVFJJTkddLFsvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjaWZuZGVmIFBBQ0tBR0VfU1RSSU5HCisjdW5kZWYgUEFDS0FHRV9TVFJJTkcKKyNlbmRpZl0pCitBSF9WRVJCQVRJTShbUEFDS0FHRV9UQVJOQU1FXSxbLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2lmbmRlZiBQQUNLQUdFX1RBUk5BTUUKKyN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKyNlbmRpZl0pCitBSF9WRVJCQVRJTShbUEFDS0FHRV9WRVJTSU9OXSxbLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyNpZm5kZWYgUEFDS0FHRV9WRVJTSU9OCisjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCisjZW5kaWZdKQorCitBQ19PVVRQVVQKKworQUNfTVNHX0NBQ0hFX0RJU1BMQVkoKQorIyBMb2NhbCBWYXJpYWJsZXM6CisjIG1vZGU6IEF1dG9jb25mCisjIGNvbW1lbnQtc3RhcnQ6ICIjIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MTU0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudApAQCAtMCwwICsxLDc4MCBAQAorIyAtKi0gYXV0b2NvbmYgLSotCisjCisjIGdlbmVyYXRlIGVtcHR5IGZpbGVzCisjCisjIENyZWF0ZSBpbmNsdWRlIGZpbGUgbGlzdCBmb3Igc25tcF92YXJzLmggdG8gdXNlLgorbWliZGlyPSJhZ2VudC9taWJncm91cCIKK2lmIHRlc3QgISAtZCBhZ2VudDsgdGhlbgorICBta2RpciBhZ2VudAorZmkKK2lmIHRlc3QgISAtZCBhZ2VudC9taWJncm91cDsgdGhlbgorICBta2RpciBhZ2VudC9taWJncm91cAorZmkKK2o9IiRtaWJkaXIvbWliX21vZHVsZV9pbmNsdWRlcy5oICAkbWliZGlyL2FnZW50X21vZHVsZV9pbmNsdWRlcy5oIFwKKyAgICRtaWJkaXIvbWliX21vZHVsZV9pbml0cy5oICAgICAkbWliZGlyL2FnZW50X21vZHVsZV9pbml0cy5oICAgIFwKKyAgICRtaWJkaXIvbWliX21vZHVsZV9zaHV0ZG93bi5oICAkbWliZGlyL2FnZW50X21vZHVsZV9zaHV0ZG93bi5oIFwKKyAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaCAgIFwKKyAgICRtaWJkaXIvbWliX21vZHVsZV9kb3RfY29uZi5oICAkbWliZGlyL2FnZW50X21vZHVsZV9kb3RfY29uZi5oIgorCitmb3IgaSBpbiAkajsgZG8KKyAgcm0gLWYgJGkKKyAgZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJGkKK2RvbmUKKworIworIyBEbyBoYWlyeSBhZ2VudCBtb2R1bGUgcHJvY2Vzc2luZy4KKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIGFuZCBjb25maWd1cmluZyBtaWIgbW9kdWxlcyB0byB1c2VdKQorCisjIHNldCB1cCB0aGUgQ1BQIGNvbW1hbmQKK01PRFVMRUNQUD0iJENQUCAkUEFSVElBTFRBUkdFVEZMQUdTIC1JJHtzcmNkaXJ9L2luY2x1ZGUgLUkke3NyY2Rpcn0vYWdlbnQvbWliZ3JvdXAiCitpZiB0ZXN0ICJ4JGVuYWJsZV9tZmRfcmV3cml0ZXMiID0gInh5ZXMiOyB0aGVuCisgIE1PRFVMRUNQUD0iJE1PRFVMRUNQUCAtRE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUyIKK2ZpCisKK21vZHVsZV9saXN0PSIiCittaWJfbW9kdWxlX2xpc3Q9IiIKK2FnZW50X21vZHVsZV9saXN0PSIiCituZXdfd2l0aF9taWJfbW9kdWxlcz1gZWNobyAkd2l0aF9taWJfbW9kdWxlcyB8ICRTRUQgJ3MvLC8gL2c7J2AKK25ld193aXRoX291dF9taWJfbW9kdWxlcz1gZWNobyAkd2l0aF9vdXRfbWliX21vZHVsZXMgfCAkU0VEICdzLywvIC9nOydgCisKKyMgc2V0IHVwIGluaXRpYWwgbW9kdWxlIGxpc3QKK25ld19tb2R1bGVfbGlzdD0iJG5ld193aXRoX21pYl9tb2R1bGVzIGRlZmF1bHRfbW9kdWxlcyIKKworIyBtaW5vciBtb2RpZmljYXRpb25zCitpZiB0ZXN0ICJ4JGVuYWJsZV9hZ2VudCIgPSAieG5vIjsgdGhlbgorICAgIyBtaW5pbXVtIG1pYiBtb2R1bGUgbGlzdCBmb3Igc25tcHRyYXBkCisgICBuZXdfbW9kdWxlX2xpc3Q9Im1pYklJL3ZhY21fdmFycyBtaWJJSS92YWNtX2NvbmYgdXRpbGl0aWVzL2V4ZWN1dGUgJG5ld193aXRoX21pYl9tb2R1bGVzIgorICAgZGVmYXVsdF9taWJzPVNOTVB2Mi1NSUI6SUYtTUlCOklQLU1JQjpUQ1AtTUlCOlVEUC1NSUIKKyAgIGRlZmF1bHRfbWlic19pbnN0YWxsPSIgIgorZWxpZiB0ZXN0ICJ4JG1pbmlfYWdlbnQiID0gInh5ZXMiOyB0aGVuCisgICAjIGRlZmluZSB0aGUgbWluaSBhZ2VudCBmbGFnIHRvIHJlZHVjZSBvdXIgbG9hZCBsaXN0IGZyb20gZGVmYXVsdF9taWJzLmgKKyAgIE1PRFVMRUNQUD0iJE1PRFVMRUNQUCAtRE5FVFNOTVBfTUlOSV9BR0VOVCIKK2ZpCisKK3Rlc3RfbW9kdWxlcz0iJG5ld19tb2R1bGVfbGlzdCIKK25ld19tb2R1bGVfbGlzdD0iIgorCisjIHJlbW92ZSBtb2R1bGVzIHRoYXQgd2VyZSBleHBsaWNpdGx5IGV4Y2x1ZGVkCitmb3IgaSBpbiAkdGVzdF9tb2R1bGVzCisgZG8KKyAgaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfbWliX21vZHVsZXMgIiB8ICRHUkVQICIgJGkgIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgIG1pYl9jZmdfbXNnPSJtaWIgbW9kdWxlICckaScgaXMgYm90aCBpbmNsdWRlZCBhbmQgZXhjbHVkZWQuIgorICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGNvbmZsaWN0XSkKKyAgICBpZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19jaGVja3MiID0gInh5ZXMiOyB0aGVuCisgICAgICBBQ19NU0dfV0FSTihbdXNlciB3aXRoICAgIDogJHdpdGhfbWliX21vZHVsZXNdKQorICAgICAgQUNfTVNHX1dBUk4oW2ZpbmFsIHdpdGggICA6ICRuZXdfbW9kdWxlX2xpc3RdKQorICAgICAgQUNfTVNHX1dBUk4oW3VzZXIgd2l0aG91dCA6ICR3aXRoX291dF9taWJfbW9kdWxlc10pCisgICAgICBBQ19NU0dfV0FSTihbZmluYWwgd2l0aG91dDogJG5ld193aXRoX291dF9taWJfbW9kdWxlc10pCisgICAgICBBQ19NU0dfRVJST1IoWyRtaWJfY2ZnX21zZ10pCisgICAgZWxzZQorICAgICAgQUNfTVNHX1dBUk4oWyRtaWJfY2ZnX21zZyBJdCB3aWxsIGJlIGV4Y2x1ZGVkXSkKKyAgICAgIEFDX01TR19DQUNIRV9BREQoWyoqKiBNSUIgTW9kdWxlIHdhcm5pbmcgKioqICRtaWJfY2ZnX21zZyBJdCBoYXMgYmVlbiBleGNsdWRlZC5dKQorICAgIGZpCisgIGVsc2UKKyAgICBuZXdfbW9kdWxlX2xpc3Q9IiRuZXdfbW9kdWxlX2xpc3QgJGkiCisgIGZpCitkb25lCisKK0FDX01TR19SRVNVTFQoWyRuZXdfbW9kdWxlX2xpc3QuXSkKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBsb29wIG92ZXIgbW9kdWxlIGxpc3QKKyMKK2FsbF93YXJuaW5ncz0iIgoraWYgdGVzdCAieCR3aXRoX21pYl9jZmdfZGVidWciID0gInh5ZXMiOyB0aGVuCisgICBtb2R1bGVfZGVidWc9MQorZWxzZQorICAgbW9kdWxlX2RlYnVnPTAKK2ZpCitmaXJzdF9wYXNzPTEKK291dHB1dF90bz1ub3JtYWwKKworaWYgdGVzdCAhIC1kIG1rIDsgdGhlbgorICBta2RpciBtaworZmkKKworCittb2R1bGVfcnVsZXM9bWsvbW9kdWxlX3J1bGVzLm1rCitlY2hvICIjIGNvbnRlbnRzIGJlbG93IGJ1aWx0IGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlOyBkbyBub3QgZWRpdCBieSBoYW5kIiA+ICRtb2R1bGVfcnVsZXMKKworIworIyBtYWtlIGZpbGUgc3ViLXBpZWNlcworIworZm9yIGkgaW4gbW9kdWxlX2xpc3RfZGVwcyBtaWJfbW9kdWxlX2xpc3RfZGVwcyBhZ2VudF9tb2R1bGVfbGlzdF9kZXBzIDsgZG8KKyAgZXZhbCAiJGk9bWsvJHtpfS5tayIKKyAgZWNobyAiIyBjb250ZW50cyBiZWxvdyBidWlsdCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZTsgZG8gbm90IGVkaXQgYnkgaGFuZCIgPiBtay8ke2l9Lm1rCitkb25lCisKKyMKKyMgdmFyaWFibGUgc2V0dGluZ3Mgc3ViLXBpZWNlcworIworZm9yIGkgaW4gbW9kdWxlX2xpc3RfY29kZSBtaWJfbW9kdWxlX2xpc3RfY29kZSBhZ2VudF9tb2R1bGVfbGlzdF9jb2RlIG1vZHVsZV9saXN0IG1pYl9tb2R1bGVfbGlzdCBhZ2VudF9tb2R1bGVfbGlzdCA7IGRvCisgIGV2YWwgIiRpPW1rLyR7aX0ubWsiCisgIGVjaG8gIiMgY29udGVudHMgYmVsb3cgYnVpbHQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmU7IGRvIG5vdCBlZGl0IGJ5IGhhbmQiID4gbWsvJHtpfS5taworICBlY2hvICIkaT0gXFwiID4+IG1rLyR7aX0ubWsKK2RvbmUKKworZWNobyAkRUNIT19OICJlY2hvICIgJEVDSE9fQyA+IG1rL01PRFVMRV9MSVNULm1rCitNT0RVTEVfTElTVD1tay9NT0RVTEVfTElTVC5taworCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgdW50aWwgd2UgaGF2ZSBhbiBlbXB0eSBtb2R1bGUgbGlzdC4uLgorIyAgIChtb2R1bGVzIG1heSBhZGQgbmV3IG1vZHVsZXMsIGFuZCB1bnRpbCBhbGwgZGVwZW5kZW5jaWVzIGFyZSBkb25lLi4uKQorIword2hpbGUgdGVzdCAieCRuZXdfbW9kdWxlX2xpc3QiICE9ICJ4IjsgZG8KKyAgQUNfTVNHX01PRFVMRV9EQkcoLWUsIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpCisgIEFDX01TR19NT0RVTEVfREJHKCJubWw6ICRuZXdfbW9kdWxlX2xpc3QiKQorCisgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIyBsb29wIG92ZXIgYWxsIHRoZSBtb2R1bGVzIGluIHRoZSBjdXJyZW50IGxpc3QKKyAgIworICBmb3IgaiBpbiAkbmV3X21vZHVsZV9saXN0CisgICAgZG8KKworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAjIGZpZ3VyZSBvdXQgd2hpY2ggc3ViLWJsb2NrcyB0byBidWlsZCBpbiBwYXJ0cworICAgIGlmIGVjaG8gIiRqIiB8ICRHUkVQICI9IiA7IHRoZW4KKyAgICAgICAjIGJ1aWxkIGEgc2hhcmVkIG9iamVjdCBmaWxlCisgICAgICAgIyBmb3JtYXQ6IHNvZmlsZW5hbWU9bW9kdWxlMTptb2R1bGUyCisgICAgICAgIyBYWFg6IGN1cnJlbnRseSBkb2Vzbid0IGRvIHRoaXMKKyAgICAgICBkbF9uYW1lPWBlY2hvICRqIHwgJFNFRCAncy89LiovLydgCisgICAgICAgZGxfbmFtZXM9IiRkbF9uYW1lcyAkZGxfbmFtZSIKKyAgICAgICBkbF9vYmplY3RzPWBlY2hvICRqIHwgJFNFRCAncy8uKj0vLydgCisgICAgICAgbW9kdWxlX3N1Ymxpc3Q9YGVjaG8gJGRsX29iamVjdHMgfCAkU0VEICdzLzovIC9nJ2AKKyAgICAgICBzYXZlZF9zdWJsaXN0PSIiCisgICAgICAgc2F2ZWRfc3VibGlzdF9jb2RlPSIiCisgICAgICAgb3V0cHV0X3RvPXNlcGFyYXRlCisKKyAgICAgICAjIGNyZWF0ZSBvdXRwdXQgZmlsZXMKKyAgICAgICAjIHRoZXNlIGFjdHVhbGx5IGdldCBudWtlZCBsYXRlcgorICAgICAgIG91dHB1dF9pbml0cz0iYWdlbnQvbWliZ3JvdXAvJHtkbF9uYW1lfS1kbGwuYyIKKyAgICAgICBvdXRwdXRfaGRycz0iYWdlbnQvbWliZ3JvdXAvJHtkbF9uYW1lfS1oZHJzLmgiCisgICAgZWxzZQorICAgICAgICMgbm90IGEgc3BlY2lhbCB0b2tlbiBpbnZvY2F0aW9uCisgICAgICAgbW9kdWxlX3N1Ymxpc3Q9JGoKKyAgICAgICBvdXRwdXRfdG89bm9ybWFsCisgICAgICAgb3V0cHV0X3Q9CisgICAgZmkKKworICAgIHdoaWxlIHRlc3QgIngkbW9kdWxlX3N1Ymxpc3QiICE9ICJ4IiA7IGRvCisKKyAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgIyBsb29wIG92ZXIgYWxsIHRoZSBtb2R1bGVzIGluIHRoZSBzdWIgbGlzdAorICAgIGZvciBpIGluICRtb2R1bGVfc3VibGlzdAorICAgIGRvCisKKyAgICBBQ19NU0dfTU9EVUxFX0RCRygtZSAiXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IikKKyAgICBBQ19NU0dfTU9EVUxFX0RCRygidGVzdGluZyAkaSIpCisgICAgbmVlZF9oZWFkZXI9MAorCisgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgYnVpbGQgYSBwc2V1ZG8gaW5jbHVkZSBoZWFkZXIgdGhhdCBpbmNsdWRlcyBjdXJyZW50IGNvbmZpZyBhbmQKKyAgICAjIHN5c3RlbSBzeW1ib2xzOgorICAgIHJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgbW9kdWxlX3RtcF9oZWFkZXIuaAorICAgIEFDX0xBTkdfQ09ORlRFU1QoQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIE5FVFNOTVBfU1lTVEVNX0lOQ0xVREVfRklMRQorI2luY2x1ZGUgIiRzcmNkaXIvJG1pYmRpci8kaS5oIl1dKSkKKyAgICBtdiBjb25mdGVzdC4kYWNfZXh0IG1vZHVsZV90bXBfaGVhZGVyLmgKKworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAjIG1hY3JvOiBjb25maWdfYmVsb25nc19pbihBUkcpCisgICAgIyAgIEFSRzogZWl0aGVyCisgICAgIyAgICAgLSBtaWJfbW9kdWxlICAgPT4gbGlibmV0c25tcG1pYnMgICAoZGVmYXVsdCkKKyAgICAjICAgICAtIGFnZW50X21vZHVsZSA9PiBsaWJuZXRzbm1wYWdlbnQKKyAgICAjCisgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19iZWxvbmdzX2luKHgpXSkKKyAgICBtb2R1bGVfdHlwZT1taWJfbW9kdWxlCisgICAgaWYgdGVzdCAtZiAkc3JjZGlyLyRtaWJkaXIvJGkuaDsgdGhlbgorICAgICAgY2hhbmdlcXVvdGUoLCApCisgICAgICBtb2R1bGVfdHlwZT1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX2JlbG9uZ3NfaW4gfCAkU0VEICdzQC4qY29uZmlnX2JlbG9uZ3NfaW4oXChbXildKlwpKS4qQFwxQCdgCisgICAgICBjaGFuZ2VxdW90ZShbLCBdKQorICAgIGZpCisgICAgaWYgdGVzdCAieCRtb2R1bGVfdHlwZSIgPSAieCIgOyB0aGVuCisgICAgICBtb2R1bGVfdHlwZT1taWJfbW9kdWxlCisgICAgZmkKKyAgICBpZiB0ZXN0ICJ4JG91dHB1dF90byIgPSAieG5vcm1hbCIgOyB0aGVuCisgICAgIAlvdXRwdXRfaW5pdHM9IiRtaWJkaXIvJHttb2R1bGVfdHlwZX1faW5pdHMuaCIKKyAgICAgCW91dHB1dF9oZHJzPSIkbWliZGlyLyR7bW9kdWxlX3R5cGV9X2luY2x1ZGVzLmgiCisgICAgZmkKKworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgd2l0aGluIHRoZSBkbGwgc3lzdGVtLiAKKyAgICAjICAgLSBpZiBmb3VuZCBpbiBhIGRsbCwgdGhlbiByZW1vdmUgZnJvbSB0aGUgZGxsIGFuZCBhZGQgdG8gbWFpbgorICAgIGRibGZpeD0iIgorICAgIGZvciBkbHRlc3QgaW4gJGRsX25hbWVzIDsgZG8KKyAgICAgIGV2YWwgbW9kX2ZpbGVzPSJcIlwkZGxfJHtkbHRlc3R9X2ZpbGVzXCIiCisgICAgICBpZiBlY2hvICIgJG1vZF9maWxlcyAiIHwgJEdSRVAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICMgc29tZSBkbGwgbW9kdWxlIGhhcyBhbHJlYWR5IHNlZW4gdGhpcywgdW5sb2FkIGl0IGZyb20gdGhhdCBsaXN0CisgICAgICAgICMgYW5kIGluY2x1ZGUgaXQgaW4gdGhlIGNvcmUgKGFnYWluKQorICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygicmVtb3ZpbmcgJGkgZnJvbSAkZGx0ZXN0IikKKyAgICAgICAgbW9kX2ZpbGVzPWBlY2hvICIgJG1vZF9maWxlcyAiIHwgJFNFRCAic0AgJGkgQEAiYAorICAgICAgICBkYmxmaXg9Il9fWFhYX18iCisgICAgICAgIGV2YWwgImRsXyR7ZGx0ZXN0fV9maWxlcz1cIiRtb2RfZmlsZXNcIiIKKworICAgICAgICBtb2R1bGVfbGlzdD0iJG1vZHVsZV9saXN0ICRpIgorCWVjaG8gInJlYWRfY29uZmlnLmxvOiBtaWJncm91cC8kaS5oIiA+PiAkbW9kdWxlX2xpc3RfZGVwcworCWlmIHRlc3QgJG1vZHVsZV90eXBlID0gImFnZW50X21vZHVsZSIgOyB0aGVuCisgCSAgICBlY2hvICJzbm1wX3ZhcnMubG86IG1pYmdyb3VwLyRpLmgiID4+ICRhZ2VudF9tb2R1bGVfbGlzdF9kZXBzCisgICAgICAgIGVsc2UKKyAJICAgIGVjaG8gIm1pYl9tb2R1bGVzLmxvOiBtaWJncm91cC8kaS5oIiA+PiAkbWliX21vZHVsZV9saXN0X2RlcHMKKyAgICAgICAgZmkKKyAgICAgICAgZXZhbCAke21vZHVsZV90eXBlfV9saXN0PSJcIlwkJHttb2R1bGVfdHlwZX1fbGlzdCAkaVwiIgorCWVjaG8gIgkkaSBcXCIgPj4gJG1vZHVsZV9saXN0X2NvZGUKKwllY2hvICRFQ0hPX04gIiAkaSIgJEVDSE9fQyA+PiAkTU9EVUxFX0xJU1QKKyAgICAgICAgZXZhbCB0bXBmaWxldmFyPVwkYGVjaG8gJHttb2R1bGVfdHlwZX1fbGlzdF9jb2RlYAorICAgICAgICBlY2hvICIJJGkgXFwiID4+ICR0bXBmaWxldmFyCisKKwkjIFhYWDogYWRkIHRoaXMgdG8gdGhlIG1haW4gaW5pdCBsaXN0OyB0aGlzIGlzIHBvc3NpYmxlIG5vdAorCSMgcXVpdGUgaW4gdGhlIHJpZ2h0IHNwb3QgYW55IGxvbmdlciBidXQgd2UncmUgc3R1Y2sgd2l0aCBpdC4KKwkjIEFkZGluZyBpdCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBvcmRlcmVkIHNwb3Qgd291bGQgYmUgYQorCSMgbmlnaHRtYXJlLiAgT2ssIHdlJ3JlIGFscmVhZHkgaW4gbmlnaHRtYXJlIGNvZGUgc28gdGhhdAorCSMgd29sdWQgaGF2ZSB0byBiZSBhIG5pZ2h0LXRlcnJvci4KKyAgICAgICAgbW5tPWBlY2hvICRpIHwgJFNFRCAncy8uKlwvLy87cy9cLmMkLy87J2AKKwlvdXRwdXRfaW5pdHNfdG1wPSIkbWliZGlyLyR7bW9kdWxlX3R5cGV9X2luaXRzLmgiCisJZWNobyAiICBpZiAoc2hvdWxkX2luaXQoXCIkbW5tXCIpKSBpbml0XyRtbm0oKTsiID4+ICRvdXRwdXRfaW5pdHNfdG1wCisgICAgICAgICMgWFhYOiBldmVuIHdvcnNlLCB3ZSBsb29zZSB3aGV0aGVyIHRoZSBoZWFkZXIgaXMgbmVlZGVkIG9yIG5vdC4KKyAgICAgCW91dHB1dF9oZHJzX3RtcD0iJG1pYmRpci8ke21vZHVsZV90eXBlfV9pbmNsdWRlcy5oIgorICAgICAgICBlY2hvICcjaW5jbHVkZSAiJyJtaWJncm91cC8kaS5oIiciJyA+PiAkb3V0cHV0X2hkcnNfdG1wCisgICAgICBmaQorICAgIGRvbmUKKworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAjIG1ha2Ugc3VyZSBtb2R1bGUgd2Fzbid0IGV4cGxpY2l0bHkgZXhjbHVkZWQsIG9yIGFscmVhZHkgYWRkZWQKKyAgICAjCisgICAgaWYgdGVzdCAieCRkYmxmaXgiICE9ICJ4IiA7IHRoZW4KKyAgICAgIEFDX01TR19NT0RVTEVfREJHKCIkaSB3YXMgZHVwbGljYXRlZCAtLSBwdXR0aW5nIGludG8gbWFpbiIpCisgICAgZWxpZiBlY2hvICIgJG5ld193aXRoX291dF9taWJfbW9kdWxlcyAiIHwgJEdSRVAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgd2FzIGV4Y2x1ZGVkIikKKyAgICBlbGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgIiB8ICRHUkVQICIgJGkgIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiRpIGFscmVhZHkgdGVzdGVkIikKKyAgICBlbHNlCisKKyAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICMgcHJvY2VzcyBtb2R1bGVzIGhlYWRlciwgY2hlY2tpbmcgZm9yIGNvbmZpZ18gcHNldWRvLW1hY3JvcworICAgICAgIworCisgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAjIGRvZXMgdGhlIGhlYWRlciBmaWxlIGZvciB0aGUgbW9kdWxlIGV4aXN0PworICAgICAgIyAgIG1hY3JvcyBhcmUgb25seSBwcm9jZXNzZWQgaWYgaXQgZG9lcworICAgICAgaWYgdGVzdCAtZiAkc3JjZGlyLyRtaWJkaXIvJGkuaDsgdGhlbgorICAgICAgICBuZXdfbGlzdD0iIgorCisgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAkjIG1hY3JvOiBjb25maWdfZXhjbHVkZShtb2R1bGVzKQorICAgICAgCSMgIC0gbGlzdHMgY29uZmxpY3RzIHdpdGggb3RoZXIgbW9kdWxlcworICAgICAgCSMgICAgLSBFRzogbmV3IE1JQiBpbXBsZW1lbnRhdGlvbnMgZXhjbHVkZSBvbGQgYW5kIHZpY2UtdmVyc2EKKyAgICAgIAkjCisgICAgICAgICMgY2hlY2sgaWYgJGkgaGFzIGFueSBjb25mbGljdHMKKyAgICAgICAgIworICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2V4Y2x1ZGUoeCldKQorCW5ld19saXN0X2V4Y2w9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19leGNsdWRlIHwgJFNFRCAncy8uKmNvbmZpZ19leGNsdWRlKFwoLipcKSkuKi9cMS8nYAorCWlmIHRlc3QgIngkbmV3X2xpc3RfZXhjbCIgIT0gIngiOyB0aGVuCisgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiRpIGV4Y2x1ZGVzICRuZXdfbGlzdF9leGNsIikKKwkgIGZvciBqIGluICRuZXdfbGlzdF9leGNsCisJICAgIGRvCisJICAgIGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgJG5ld19taWJfbW9kdWxlX2xpc3QgJG5ld19saXN0X3R3byAiIHwgJEdSRVAgIiAkaiAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgICAgIG1pYl9jZmdfbXNnPSJtaWIgbW9kdWxlICckaScgZXhjbHVkZXMgbW9kdWxlICckaicgYnV0IGFub3RoZXIgbW9kdWxlIHJlcXVpcmVzIGl0IgorICAgICAgICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCisgICAgICAgICAgICAgIGlmIHRlc3QgIngkd2l0aF9taWJfY2ZnX2NoZWNrcyIgPSAieHllcyI7IHRoZW4KKwkgICAgICAgIEFDX01TR19FUlJPUihbJG1pYl9jZmdfbXNnXSkKKyAgICAgICAgICAgICAgZWxzZQorCSAgICAgICAgQUNfTVNHX1dBUk4oWyRtaWJfY2ZnX21zZ10pCisgICAgICAgICAgICAgICAgQUNfTVNHX0NBQ0hFX0FERChbKioqIE1JQiBNb2R1bGUgd2FybmluZyAqKiogJG1pYl9jZmdfbXNnXSkKKyAgICAgICAgICAgICAgZmkKKwkgICAgZWxzZQorCSAgICAgIG5ld193aXRoX291dF9taWJfbW9kdWxlcz0iJGogJG5ld193aXRoX291dF9taWJfbW9kdWxlcyIKKyAgICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiRqIGFkZGVkIHRvIGV4Y2x1ZGVkIGxpc3QiKQorCSAgICBmaQorCSAgZG9uZQorCWZpCisKKyAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCSMgbWFjcm86IGNvbmZpZ19hcmNoX3JlcXVpcmUoQVJDSCxtb2R1bGVzKQorICAgICAgCSMgIC0gbGlzdHMgbW9kdWxlcyByZXF1aXJlZCBmb3IgYSBnaXZlbiBBUkNICisgICAgICAgICMKKyAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyByZXF1aXJlbWVudHMKKyAgICAgICAgIworICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2FyY2hfcmVxdWlyZSh4LHkpXSkKKyAgICAgICAgY2hhbmdlcXVvdGUoLCApCisgICAgICAgIG5ld19saXN0X2FyY2g9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19hcmNoX3JlcXVpcmUgfCAkU0VEICdzLy4qY29uZmlnX2FyY2hfcmVxdWlyZSggKlwoW14gXSpcKSAqLCAqXChbXiBdKlwpICopLiovXDEteGFyY2h4LVwyLydgCisgICAgICAgIGNoYW5nZXF1b3RlKFssIF0pCisJaWYgdGVzdCAieCRuZXdfbGlzdF9hcmNoIiAhPSAieCI7IHRoZW4KKyAgICAgICAgICBmb3IgaiBpbiAkbmV3X2xpc3RfYXJjaAorCSAgICBkbworCSAgICBhcmNodGVzdD1gZWNobyAkaiB8ICRTRUQgJ3MvLXhhcmNoeC0uKi8vJ2AKKwkgICAgIyB0YXJnZXRfb3MgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIHRvIGEgI2RlZmluZSBvZiAxLi4uCisJICAgIGlmIHRlc3QgIngkYXJjaHRlc3QiID0gIngxIiAtbyAieCR0YXJnZXRfb3MiID0gIngkYXJjaHRlc3QiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieCRhcmNodGVzdCI7IHRoZW4KKwkgICAgICBuZXdfbGlzdD0iJG5ld19saXN0IGBlY2hvICRqIHwgJFNFRCAncy8uKi14YXJjaHgtLy8nYCIKKyAgICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAkaSByZXF1aXJlZCBhZGRpbmcgYXJjaCBmaWxlczogYGVjaG8gJGogfCAkU0VEICdzLy4qLXhhcmNoeC0vLydgIikKKwkgICAgZmkKKwkgIGRvbmUKKwlmaQorICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICRpIHJlcXVpcmVkIGFyY2ggZmlsZXM6ICRuZXdfbGlzdCIpCisKKyAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCSMgbWFjcm86IGNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKGJhc2UsIHZlcnNpb24sIHZlcnNpb24tbW9kdWxlcywgLi4uKSkKKyAgICAgIAkjICAtIGxpc3RzIGFsdGVybmF0aXZlIG1vZHVsZXMgdXNlZCBmcm9tIGRpZmZlcmVudCB2ZXJzaW9ucy4KKyAgICAgICAgIworICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX3ZlcnNpb25fcmVxdWlyZSh4KV0pCisgICAgICAgIFtuZXdfbGlzdF9hbHQzPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAkR1JFUCBjb25maWdfdmVyc2lvbl9yZXF1aXJlIHwgXAorICAgICAgICAgICAgJFNFRCAtZSAncy8gICovIC9nJyBcCisgICAgICAgICAgICAgICAgIC1lICdzLy4qY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgoICpcKFteKV0qXCkgKikpLiovXDEvJyBcCisgICAgICAgICAgICAgICAgIC1lICdzLyAqLCAqLywvZycgfCBcCisgICAgICAgICAgICBhd2sgJworICAgICAgICAgICAgICAgIEJFR0lOIHsKKyAgICAgICAgICAgICAgICAgICAgaWYoIiciJGVuYWJsZV9uZXdfZmVhdHVyZXMiJyIgPT0gInllcyIpCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9Im1heCI7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoIiciJGVuYWJsZV9vbGRfZmVhdHVyZXMiJyIgPT0gInllcyIpCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9Im1heC1sZXNzIjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPSJtYXgtbGVzcy1lcXVhbCI7CisgICAgICAgICAgICAgICAgICAgIEZTID0gIi4iOworICAgICAgICAgICAgICAgICAgICBzcGxpdCgiJyIkd2l0aF9mZWF0dXJlc19vZiInIiwgYSk7CisgICAgICAgICAgICAgICAgICAgIHZlcnNpb249c3ByaW50ZigiJTAzZCUwM2QlMDNkJTAzZCIsIGFbMV0sIGFbMl0sIGFbM10sIGFbNF0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEZTID0gIiwiOworICAgICAgICAgICAgICAgICAgICBuID0gc3BsaXQoJDAsIGEpOworICAgICAgICAgICAgICAgICAgICBGUyA9ICIuIjsKKyAgICAgICAgICAgICAgICAgICAgYWN0dmVyID0gIjAwMDAwMDAwMDAwMCI7CisgICAgICAgICAgICAgICAgICAgIGFjdHN0ciA9IGFbMV07CisgICAgICAgICAgICAgICAgICAgIGZvcihpID0gMjsgaSA8IG47IGkgKz0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXQoYVtpXSwgYik7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJ2ZXI9c3ByaW50ZigiJTAzZCUwM2QlMDNkJTAzZCIsIGJbMV0sIGJbMl0sIGJbM10sIGJbNF0pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnZlciA+IGFjdHZlciAmJiAobWV0aG9kICE9ICJtYXgtbGVzcyIgfHwgY3VydmVyIDwgdmVyc2lvbikgJiYgKG1ldGhvZCAhPSAibWF4LWxlc3MtZXF1YWwiIHx8IGN1cnZlciA8PSB2ZXJzaW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHZlciA9IGN1cnZlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RzdHIgPSBhW2kgKyAxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAlcyIsIGFjdHN0cik7CisgICAgICAgICAgICAgICAgfSdgXQorICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICRpIHJlcXVpcmVkIHZlcnNpb25lZCBmZWF0dXJlczogJG5ld19saXN0X2FsdDMiKQorICAgICAgICBuZXdfbGlzdD0iJHtuZXdfbGlzdH0ke25ld19saXN0X2FsdDN9IgorCisgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAkjIG1hY3JvOiBjb25maWdfcmVxdWlyZShtb2R1bGVzKQorICAgICAgCSMgIC0gbGlzdHMgbW9kdWxlcyByZXF1aXJlZCBmb3IgdGhpcyBtb2R1bGUKKyAgICAgICAgIworICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgb3RoZXIgcmVxdWlyZWQgbW9kdWxlcworICAgICAgICAjCisgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfcmVxdWlyZSh4KV0pCisJbmV3X2xpc3Q9IiRuZXdfbGlzdCBgJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX3JlcXVpcmUgfCAkU0VEICdzLy4qY29uZmlnX3JlcXVpcmUoXCguKlwpKS4qL1wxLydgIgorICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICRpIHdpbGwgdGVzdDogJG5ld19saXN0IikKKwlpZiB0ZXN0ICJ4JG5ld19saXN0IiAhPSAieCI7IHRoZW4KKwkgIGZvciBqIGluICRuZXdfbGlzdAorCSAgICBkbworICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoLW4gIiAkaSB3YW50cyB0byBhZGQgJGo6ICIpCisJICAgIGlmIHRlc3QgISAtZiAkc3JjZGlyLyRtaWJkaXIvJGouaCAtYSAhIC1mICRzcmNkaXIvJG1pYmRpci8kai5jOyB0aGVuCisgICAgICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKKwkgICAgICBBQ19NU0dfRVJST1IoW21pYiBtb2R1bGUgIiRpIiByZXF1aXJlcyBtb2R1bGUgIiRqIiBidXQgJGouaCBvciAkai5jIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiAkc3JjZGlyLyRtaWJkaXJdKQorCSAgICBlbGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzICIgfCAkR1JFUCAiICRqICIgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgICBpZiB0ZXN0ICJ4JGkiICE9ICJ4ZGVmYXVsdF9tb2R1bGVzIiA7IHRoZW4KKyAgICAgICAgICAgICAgICBtaWJfY2ZnX21zZz0ibWliIG1vZHVsZSAnJGknIHJlcXVpcmVzIG1vZHVsZSAnJGonIGJ1dCBzb21lb25lIHRvbGQgbWUgdG8gY29tcGlsZSB3aXRob3V0IGl0IgorICAgICAgICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19jaGVja3MiID0gInh5ZXMiOyB0aGVuCisgICAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoWyRtaWJfY2ZnX21zZ10pCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oWyRtaWJfY2ZnX21zZ10pCisgICAgICAgICAgICAgICAgICBBQ19NU0dfQ0FDSEVfQUREKFsqKiogTUlCIE1vZHVsZSB3YXJuaW5nICoqKiAkbWliX2NmZ19tc2ddKQorICAgICAgICAgICAgICAgIGZpCisjCSAgICBlbGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgJG5ld19saXN0X3R3byAkbmV3X21vZHVsZV9saXN0ICIgfCAkR1JFUCAiICRqICIgPiAvZGV2L251bGw7IHRoZW4KKyMgICAgICAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgICRqIGluY2x1ZGVkIHByZXZpb3VzbHkiKQorICAgICAgICAgICAgICBmaQorCSAgICBlbHNlCisJICAgICAgbmV3X2xpc3RfdHdvPSIkbmV3X2xpc3RfdHdvICRqIgorICAgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICAkaiBpbmNsdWRlZCIpCisJICAgIGZpCisJICBkb25lCisJZmkKKworICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAJIyBtYWNybzogY29uZmlnX2FkZF9taWIoU09NRS1NSUIpCisgICAgICAJIyAgLSBsaXN0cyBNSUJzIHRvIGJlIGFkZGVkIHRvIHRoZSBkZWZhdWx0IHRvLWxvYWQgbGlzdC4KKyAgICAgICAgIworICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgbWlicyB0byBhZGQKKyAgICAgICAgIworICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2FkZF9taWIoeCldKQorCW5ld19taWJzPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfYWRkX21pYiB8ICRTRUQgJ3MvLipjb25maWdfYWRkX21pYihcKC4qXCkpLiovXDEvJ2AKKwlpZiB0ZXN0ICJ4JG5ld19taWJzIiAhPSAieCI7IHRoZW4KKwkgICAgZm9yIGogaW4gJG5ld19taWJzCisJCWRvCisJCWlmIHRlc3QgInhgZWNobyA6JGRlZmF1bHRfbWliczogfCAkR1JFUCA6JGo6YCIgPSAieCI7IHRoZW4KKwkJICAgIGRlZmF1bHRfbWlicz0iJGRlZmF1bHRfbWliczokaiIKKwkJZmkKKwkJaWYgdGVzdCAtZiAkc3JjZGlyL21pYnMvJGoudHh0OyB0aGVuCisJCSAgICBpZiBlY2hvICRkZWZhdWx0X21pYnNfaW5zdGFsbCB8ICRHUkVQICIgJGogIiA+IC9kZXYvbnVsbDsgdGhlbgorCQkJICAgIDoKKwkJICAgIGVsc2UKKwkJCSAgICBkZWZhdWx0X21pYnNfaW5zdGFsbD0iJGRlZmF1bHRfbWlic19pbnN0YWxsICRqLnR4dCIKKwkJICAgIGZpCisJCWZpCisJICAgIGRvbmUKKwlmaSAjIG5ldyBtaWJzCisKKyAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyBhZGQgdGhlIGN1cnJlbnQgbW9kdWxlIHRvIHRoZSBsaXN0IG9mIHN0dWZmIHRvIGNvbXBpbGUsIGV0Yy4KKyAgICAgICAgIworICAgICAgICAjIGFkZCAkaSB0byBtb2R1bGUgbGlzdAorICAgICAgICAjCisgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgICRpIGFkZGVkIChiYXNlZCBvbiAkaS5oKSIpCisgICAgICAgIG1vZHVsZV9saXN0PSIkbW9kdWxlX2xpc3QgJGkiCisgICAgICAgIGV2YWwgJHttb2R1bGVfdHlwZX1fbGlzdD0iXCJcJCR7bW9kdWxlX3R5cGV9X2xpc3QgJGlcIiIKKworCWVjaG8gInJlYWRfY29uZmlnLmxvOiBtaWJncm91cC8kaS5oIiA+PiAkbW9kdWxlX2xpc3RfZGVwcworCWlmIHRlc3QgJG1vZHVsZV90eXBlID0gImFnZW50X21vZHVsZSIgOyB0aGVuCisgCSAgICBlY2hvICJzbm1wX3ZhcnMubG86IG1pYmdyb3VwLyRpLmgiID4+ICRhZ2VudF9tb2R1bGVfbGlzdF9kZXBzCisgICAgICAgIGVsc2UKKyAJICAgIGVjaG8gIm1pYl9tb2R1bGVzLmxvOiBtaWJncm91cC8kaS5oIiA+PiAkbWliX21vZHVsZV9saXN0X2RlcHMKKyAgICAgICAgZmkKKworICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBjb25maWdfbG9hZF9taWIKKyAgICAgICAgIworICAgICAgICBpZiAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfbG9hZF9taWIgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKKyAgICAgIAkgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlICIkaSIgdXNlcyB0aGUgImNvbmZpZ19sb2FkX21pYiIgZGlyZWN0aXZlLCB3aGljaCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgSXQgcHJvYmFibHkgd29uJ3Qgd29yay5dKQorICAgICAgICBmaSAjIGdyZXAgY29uZmlnX2xvYWRfbWliCisKKyAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyBjaGVjayBmb3IgY29uZmlnX3BhcnNlX2RvdF9jb25mCisgICAgICAgICMgIChnZW5lcmFsbHkgbm90IHVzZWQgYW55IGxvbmdlcjsgb2xkIGF1dG8tbG9hZCBhIC5jb25mIHRva2VuKQorICAgICAgICAjCisgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfcGFyc2VfZG90X2NvbmYodyx4LHkseildKQorICAgICAgICBjaGFuZ2VxdW90ZSgsICkKKyAgICAgICAgJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX3BhcnNlX2RvdF9jb25mIHwgJFNFRCAnc0AuKmNvbmZpZ19wYXJzZV9kb3RfY29uZihcKFteKV0qXCksICpcKFteKSxdKlwpLCAqXChbXiksXSpcKSwgKlwoW14pLF0qXCkpLipAcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXBkIixcMSwgXDIsIFwzLCBcNCk7QCcgPj4gJG1pYmRpci9taWJfbW9kdWxlX2RvdF9jb25mLmgKKwljaGFuZ2VxdW90ZShbLCBdKQorCisgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAkjIG1hY3JvOiBjb25maWdfZXJyb3IoZXJyb3IgdGV4dCkKKyAgICAgIAkjICAtIHVzZWQgdG8gc2lnbmFsIGEgY29uZmlndXJhdGlvbiBlcnJvciBmcm9tIGEgbW9kdWxlCisgICAgICAgICMKKyAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IGVycm9ycywgb3Igd2FybmluZ3MKKyAgICAgICAgIworICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2Vycm9yKHgpXSkKKwllcnJvcj1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX2Vycm9yIHwgJFNFRCAncy8uKmNvbmZpZ19lcnJvcihcKC4qXCkpLiovXDEvJ2AKKwlpZiB0ZXN0ICJ4JGVycm9yIiAhPSAieCI7IHRoZW4KKyAgICAgICAgICBlY2hvCisgICAgICAgICAgZWNobworICAgICAgICAgIEFDX01TR19FUlJPUihbJGk6ICoqKiAkZXJyb3IgKioqXSkKKyAgICAgICAgZmkKKworICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAJIyBtYWNybzogY29uZmlnX3dhcm5pbmcod2FybmluZyB0ZXh0KQorICAgICAgCSMgIC0gdXNlZCB0byBzaWduYWwgYSBjb25maWd1cmF0aW9uICJ3YXJuaW5nIiB0byBiZSBwcmludGVkIHRvIHRoZSB1c2VyCisgICAgICAgICMKKyAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ193YXJuaW5nKHgpXSkKKwl3YXJuaW5nPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfd2FybmluZyB8ICRTRUQgJ3MvLipjb25maWdfd2FybmluZyhcKC4qXCkpLiovXDEvJ2AKKwlpZiB0ZXN0ICJ4JHdhcm5pbmciICE9ICJ4IjsgdGhlbgorICAgICAgICAgIGFsbF93YXJuaW5ncz0iJGFsbF93YXJuaW5ncyAkd2FybmluZworIgorICAgICAgICBmaQorCisgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAjIENoZWNrIGZvciBhIC5jIGZpbGUgaWYgdGhlIC5oIGRpZG4ndCBleGlzdAorICAgICAgIworICAgICAgZWxpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5jOyB0aGVuCisgICAgICAgIGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgJG5ld19saXN0X3R3byAkbmV3X21vZHVsZV9saXN0ICIgfCAkR1JFUCAiICRpICAgICAgIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICAkaSBhbHJlYWR5IGluY2x1ZGVkIikKKyAgICAgICAgZWxzZQorICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICAkaSBhZGRlZCAoYmFzZWQgb24gJGkuYykiKQorCSAgIG1vZHVsZV9saXN0PSIkbW9kdWxlX2xpc3QgJGkiCisJICAgbWliX21vZHVsZV9saXN0PSIkbWliX21vZHVsZV9saXN0ICRpIgorICAgICAgICBmaQorCisgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAjIE5vIC5oIG9yIC5jID0gZXJyb3IhICAodHlwbz8pCisgICAgICAjCisgICAgICBlbHNlICMgbm8gJGkuaCBvciAkaS5jCisgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKKwlBQ19NU0dfRVJST1IoW21vZHVsZSBmaWxlcyAkaS5oIG9yICRpLmMgY291bGQgbm90IGJlIGZvdW5kIGluICRzcmNkaXIvJG1pYmRpcl0pCisgICAgICBmaSAjIG5vICRpLmgKKworICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICMgY2hlY2sgZm9yIGluaXQvc2h1dGRvd24gcm91dGluZXMgdG9vCisgICAgICAjCisgICAgICBoYXNfY19jb2RlPW5vCisgICAgICBpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5jOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIngkb3V0cHV0X3RvIiA9ICJ4bm9ybWFsIiA7IHRoZW4KKwkgIGVjaG8gIgkkaSBcXCIgPj4gJG1vZHVsZV9saXN0X2NvZGUKKyAgCSAgZWNobyAkRUNIT19OICIgJGkiICRFQ0hPX0MgPj4gJE1PRFVMRV9MSVNUCisgICAgICAgICAgZXZhbCB0bXBmaWxldmFyPVwkYGVjaG8gJHttb2R1bGVfdHlwZX1fbGlzdF9jb2RlYAorICAgICAgICAgIGVjaG8gIgkkaSBcXCIgPj4gJHRtcGZpbGV2YXIKKyAgICAgICAgZWxzZQorICAgICAgICAgIGV2YWwgImRsXyR7ZGxfbmFtZX1fZmlsZXM9XCJcJGRsXyR7ZGxfbmFtZX1fZmlsZXMgJGlcIiIKKyAgICAgICAgICBzYXZlZF9zdWJsaXN0X2NvZGU9IiRzYXZlZF9zdWJsaXN0X2NvZGUgJGkiCisgICAgICAgIGZpCisgICAgICAgIG1ubT1gZWNobyAkaSB8ICRTRUQgJ3MvLipcLy8vO3MvXC5jJC8vOydgCisgICAgICAgIEFDX01TR19NT0RVTEVfREJHKC1lICJcbmNoZWNraW5nICckc3JjZGlyLyRtaWJkaXIvJGkuYycgKCRtbm0vYGJhc2VuYW1lICRpYCkgQyBmaWxlIGZvciBpbml0L3NodXRkb3duIikKKyAgICAgICAgaWYgdGVzdCAieCRtbm0iICE9ICJ4YGJhc2VuYW1lICRpYCI7IHRoZW4KKyAgICAgICAgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgZXJyb3JdKQorCSAgIEFDX01TR19FUlJPUihbY29uZmxpY3RpbmcgbmFtZXM6ICRtbm0gIT0gYGJhc2VuYW1lICRpYF0pCisgICAgICAgIGZpCisgICAgICAgIHRlbXBfaW5pdD1gJEdSRVAgaW5pdF8kbW5tICRzcmNkaXIvJG1pYmRpci8kaS5jIHwgJEdSRVAgLXYgX2luaXRfJG1ubWAKKwlpZiB0ZXN0ICJ4JHRlbXBfaW5pdCIgIT0gIngiOyB0aGVuCisgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygtZSAiYWRkaW5nIGluaXRfJG1ubSgpIHRvIGxpc3QiKQorICAgICAgICAgICAgbmVlZF9oZWFkZXI9MQorCSAgICBlY2hvICIgIGlmIChzaG91bGRfaW5pdChcIiRtbm1cIikpIGluaXRfJG1ubSgpOyIgPj4gJG91dHB1dF9pbml0cworCWZpCisJJEdSRVAgc2h1dGRvd25fJG1ubSAkc3JjZGlyLyRtaWJkaXIvJGkuYyA+IC9kZXYvbnVsbAorICAgICAgICBpZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAkbW9kdWxlX2RlYnVnIC1lcSAxOyB0aGVuCisgICAgICAgICAgICAgIGVjaG8gLWUgIlxuYWRkaW5nIHNodXRkb3duXyRtbm0oKSB0byBsaXN0IgorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIG5lZWRfaGVhZGVyPTEKKwkgICAgZWNobyAiICBpZiAoc2hvdWxkX2luaXQoXCIkbW5tXCIpKSBzaHV0ZG93bl8kbW5tKCk7IiA+PiAkbWliZGlyLyR7bW9kdWxlX3R5cGV9X3NodXRkb3duLmgKKwlmaQorICAgICAgZmkgIyB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5jCisKKyAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAjIGlmIHRoZXJlIGlzIGEgc2h1dGRvd24vaW5pdCBsaXN0LAorICAgICAgIworICAgICAgaWYgdGVzdCAkbmVlZF9oZWFkZXIgLWVxIDEgOyB0aGVuCisgICAgICAgICBlY2hvICcjaW5jbHVkZSAiJyJtaWJncm91cC8kaS5oIiciJyA+PiAkb3V0cHV0X2hkcnMKKyAgICAgIGVsc2UKKyAgICAgICAgIGVjaG8gJy8qI2luY2x1ZGUgIicibWliZ3JvdXAvJGkuaCInIiovJyA+PiAkb3V0cHV0X2hkcnMKKyAgICAgIGZpCisKKyAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAjIGNoZWNrIGZvciBvdXRwdXQgZGlyZWN0b3J5IChmb3IgYnVpbGRpbmcgb3V0c2lkZSBvZiBzb3VyY2UgdHJlZQorICAgICAgIworICAgICAgY2hhbmdlcXVvdGUoLCApCisgICAgICBpZiB0ZXN0ICJ4YGVjaG8gJGkgfCAkU0VEICdzL1wvLy9nOydgIiAhPSAieCRpIjsgdGhlbgorCW1uZD1gZWNobyAkaSB8ICRTRUQgJ3MvXC9bXi9dKiQvLzsnYAorCWlmIHRlc3QgISAtZCAuLyRtaWJkaXIvJG1uZDsgdGhlbgorCSAgICBtb2R1bGVfZGlyZWN0b3JpZXM9IiRtb2R1bGVfZGlyZWN0b3JpZXMgLi8kbWliZGlyLyRtbmQiCisJZmkKKyAgICAgIGZpICMgbW9kdWxlIGRpcmVjdG9yeSB0ZXN0CisgICAgICBjaGFuZ2VxdW90ZShbLCBdKQorCisgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgIyBkZWZpbmUgVVNJTkdfKl9NT0RVTEUKKyAgICAgICMKKyAgICAgIGNoYW5nZXF1b3RlKCwgKQorICAgICAgc3ltPSJgZWNobyAke2l9IHwgJFNFRCAncy9bXmEtekEtWjAtOV9dL18vZycgfCB0ciAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWidgIgorICAgICAgY2hhbmdlcXVvdGUoWywgXSkKKyAgICAgIGVjaG8gIi8qIERlZmluZSBpZiBjb21waWxpbmcgd2l0aCB0aGUgJHtpfSBtb2R1bGUgZmlsZXMuICAqLyIgPj4gaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8ke21vZHVsZV90eXBlfV9jb25maWcuaAorICAgICAgZWNobyAiI2RlZmluZSBVU0lOR18ke3N5bX1fTU9EVUxFIDEiID4+IGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvJHttb2R1bGVfdHlwZX1fY29uZmlnLmgKKyAgICAgIGVjaG8gIiAiID4+IGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvJHttb2R1bGVfdHlwZX1fY29uZmlnLmgKKworICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIGVjaG8gJEVDSE9fTiAiICRpJEVDSE9fQyIKKyAgICBmaSAjCisgICAgZG9uZSAjIGZvciBpIGluICRtb2R1bGVfc3VibGlzdAorCisgICAgaWYgdGVzdCAiJG91dHB1dF90byIgPSAic2VwYXJhdGUiIDsgdGhlbgorICAgICAgaWYgdGVzdCAieCRuZXdfbGlzdF90d28iID0gIngiIDsgdGhlbgorICAgICAgICAjIG5vIG5ldyBzdWItbW9kdWxlcyB0byBhZGQgdG8gdGhlIGN1cnJlbnQgdGFyZ2V0CisgICAgICAgIG91dHB1dF90bz0ibm9ybWFsIgorCisgICAgICAgIGRsbGNsZWFucz0iJHNhdmVkX3N1Ymxpc3RfbyAkZGxsY2xlYW5zIgorICAgICAgICBvdXRwdXRfaW5pdHM9IiIKKyAgICAgICAgbW9kdWxlX3N1Ymxpc3Q9IiIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBhIG1vZHVsZSBoYWQgc3ViLW1vZHVsZXMgcmVxdWlyZWQ7IGtlZXAgZ29pbicKKyAgICAgICAgc2F2ZWRfc3VibGlzdD0iJHNhdmVkX3N1Ymxpc3QgJG1vZHVsZV9zdWJsaXN0IgorICAgICAgICBtb2R1bGVfc3VibGlzdD0iJG5ld19saXN0X3R3byIKKyAgICAgICAgbmV3X2xpc3RfdHdvPSIiCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIG1vZHVsZV9zdWJsaXN0PSIiCisgICAgZmkKKworICAgIGRvbmUgIyB3aGlsZSBtb2R1bGVfc3VibGlzdAorICBkb25lICMgZm9yIGogaW4gJG5ld19tb2R1bGVfbGlzdAorCisgICMgcmVtZW1iZXIgdGhlIHRvcCBsZXZlbCBtb2R1bGVzIGZvciBsYXRlciByZXBvcnRpbmcKKyAgaWYgdGVzdCAkZmlyc3RfcGFzcyA9IDEgOyB0aGVuCisgICAgIyByZW1lbWJlciB0aGlzIGxpc3QgZm9yIGxhdGVyIHJlcG9ydGluZworICAgIHRvcF9sZXZlbF9tb2R1bGVzPSIkbmV3X21vZHVsZV9saXN0ID0+ICRuZXdfbGlzdF90d28iCisgICAgZmlyc3RfcGFzcz0wCisgIGZpCisgICMtLS0tLS0tLS0tLS0tLS0tLS0tCisgICMgaWYgJGkgYWRkZWQgbmV3IG1vZHVsZXMgdmlzIGNvbmZpZ18qLAorICAjIGNoZWNrIHRob3NlIG1vZHVsZXMgZm9yIHJlcXVpcmVtZW50cyB0b28KKyAgIworICAjIHRyYW5zZmVyIHRoZSBuZXcgbW9kdWxlIHRvIGNoZWNrIGxpc3QgdG8gdGhlIG5vcm1hbCB2YXJpYWJsZQorICAjCisgIGlmIHRlc3QgIngkbmV3X2xpc3RfdHdvIiA7IHRoZW4KKyAgICBvdXRwdXRfdG89bm9ybWFsCisgIGZpCisgIG5ld19tb2R1bGVfbGlzdD0iJG5ld19saXN0X3R3byIKKyAgbmV3X2xpc3RfdHdvPSIiCitkb25lICMgd2hpbGUgdGVzdCAieCRuZXdfbW9kdWxlX2xpc3QiICE9ICJ4IjsgZG8KK2VjaG8gIiIKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbnN0cnVjdCB0aGUgZGxsIGNvZGUgZmlsZXMgYW5kIG1ha2UgcnVsZXMuICBUaGlzIGNhbid0IGJlIGRvbmUKKyMgdW50aWwgbm93IGJlY2F1c2UgZHVwbGljYXRlIHVzZSBvZiBhIG1vZHVsZSBtZWFucyBpdCBnZXRzIHJlbW92ZWQKKyMgZnJvbSB0aGUgZGxsIGFuZCBwdXQgaW50byB0aGUgbWFpbiBhZ2VudC4KKyMKK2ZvciBpIGluICRkbF9uYW1lcyA7IGRvCisgIGV2YWwgbW9kX2ZpbGVzPSJcIlwkZGxfJHtpfV9maWxlc1wiIgorICBlY2hvICJjb21wb25lbnRzIGluIHRoZSAkaSBkbGw6ICRtb2RfZmlsZXMiCisKKyAgb3V0cHV0X2luaXRzPSJhZ2VudC9taWJncm91cC8ke2l9LWRsbC5jIgorICBvdXRwdXRfaGRycz0iYWdlbnQvbWliZ3JvdXAvJHtpfS1oZHJzLmgiCisKKyAgQUNfTVNHX01PRFVMRV9EQkcoImNyZWF0aW5nIGRsbCBmaWxlOiAkb3V0cHV0X2luaXRzIikKKyAgZm9yIG9maWxlIGluICRvdXRwdXRfaW5pdHMgJG91dHB1dF9oZHJzIDsgZG8KKyAgICBpZiB0ZXN0IC1mICRvZmlsZSA7IHRoZW4KKyAgICAgIGlmICRHUkVQICJ0aGlzIGZpbGUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZSIgJG9maWxlID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCisgIAk6CisgICAgICBlbHNlCisgIAlBQ19NU0dfRVJST1IoWyRvZmlsZSBhbHJlYWR5IGV4aXN0ZWQgOyBjYW4ndCBidWlsZCBkbGwgb2JqZWN0ICRpXSkKKyAgICAgIGZpCisgICAgZmkKKyAgICBjYXQgPiAkb2ZpbGUgPDwgRU9GSUYKKy8qIHhEbyBub3QgZWRpdDsgdGhpcyBmaWxlIGNyZWF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUgKi8KK0VPRklGCisgIGRvbmUKKworICBjYXQgPj4gJG91dHB1dF9pbml0cyA8PCBFT0ZPQworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlICIke2l9LWhkcnMuaCIKK3ZvaWQKK2luaXRfJGkodm9pZCkgeworRU9GT0MKKworICAjIGNyZWF0ZSB0aGUgLnNvIHJ1bGUKKyAgc2F2ZWRfc3VibGlzdF9vPWBlY2hvICIkbW9kX2ZpbGVzICIgfCAkU0VEICdzL14gKi8vZztzLyAgKi8ubyAvZzsnYAorCisgICMgY3JlYXRlIHRoZSBydWxlcyBmb3IgZWFjaCBvYmplY3QKKyAgZm9yIGogaW4gJG1vZF9maWxlcyA7IGRvCisgICAgY2F0ID4+ICRtb2R1bGVfcnVsZXMgPDwgRU9GUgorJGoubzogJGouYworCVwkKENDKSAtYyBcJChDUFBGTEFHUykgXCQoQ0ZMQUdTKSBcJChETEZMQUdTKSAtbyBcJEAgXCQ8CisKK0VPRlIKKyAgICBtbm09YGVjaG8gJGogfCAkU0VEICdzLy4qXC8vLztzL1wuYyQvLzsnYAorICAgIGVjaG8gIiAgaWYgKHNob3VsZF9pbml0KFwiJG1ubVwiKSkgaW5pdF8kbW5tKCk7IiA+PiAkb3V0cHV0X2luaXRzCisgIGRvbmUKKworICAjIGNyZWF0ZSB0aGUgcnVsZSBmb3IgdGhlIC5zbyBhbmQgd3JhcHBlciBjb2RlCisgIGNhdCA+PiAkbW9kdWxlX3J1bGVzIDw8IEVPRk0KKyR7aX0tZGxsLm86ICR7aX0tZGxsLmMKKwlcJChDQykgLWMgXCQoQ1BQRkxBR1MpIFwkKENGTEFHUykgXCQoRExGTEFHUykgLW8gXCRAIFwkPAorCiske2l9LnNvOiAkc2F2ZWRfc3VibGlzdF9vICR7aX0tZGxsLm8KKwlcJChDQykgXCQoQ1BQRkxBR1MpIFwkKENGTEFHUykgXCQoRExGTEFHUykgLW8gXCRAICRzYXZlZF9zdWJsaXN0X28gJHtpfS1kbGwubworCitFT0ZNCisgICAgICAgIGNhdCA+PiAkb3V0cHV0X2luaXRzIDw8IEVPRk9DRklOCit9CitFT0ZPQ0ZJTgorCitkb25lCisKKyMgY2xlYW51cAorcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBtb2R1bGVfdG1wX2hlYWRlci5oCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tCisjIGJ1aWxkIG1vZHVsZSBsaXN0cyBmb3IgTWFrZWZpbGVzCisjCitjaGFuZ2VxdW90ZSgsICkKKworZm9yIGkgaW4gbW9kdWxlX2xpc3RfbyBtb2R1bGVfbGlzdF9jIG1vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9vIG1pYl9tb2R1bGVfbGlzdF9jIG1pYl9tb2R1bGVfbGlzdF9sbyBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9vIGFnZW50X21vZHVsZV9saXN0X2MgYWdlbnRfbW9kdWxlX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X28gYWdlbnRncm91cF9saXN0X2xvIDsgZG8KKyAgZXZhbCAiJGk9bWsvJHtpfS5tayIKK2RvbmUKKworJFNFRCAncy9ebW9kdWxlX2xpc3RfY29kZS9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkbW9kdWxlX2xpc3RfY29kZSAgPiAkbW9kdWxlX2xpc3RfbworJFNFRCAncy9ebW9kdWxlX2xpc3RfY29kZS9tb2R1bGVfbGlzdF9jLztzL1woW149XVwpICAqXFwvXDEuYyBcXC9nJyAgPCAkbW9kdWxlX2xpc3RfY29kZSAgPiAkbW9kdWxlX2xpc3RfYworJFNFRCAncy9ebW9kdWxlX2xpc3RfY29kZS9tb2R1bGVfbGlzdF9sby87cy9cKFtePV1cKSAgKlxcL1wxLmxvIFxcL2cnIDwgJG1vZHVsZV9saXN0X2NvZGUgID4gJG1vZHVsZV9saXN0X2xvCisKKyRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9vCiskU0VEICdzL15taWJfbW9kdWxlX2xpc3RfY29kZS9taWJfbW9kdWxlX2xpc3RfYy87cy9cKFtePV1cKSAgKlxcL1wxLmMgXFwvZycgIDwgJG1pYl9tb2R1bGVfbGlzdF9jb2RlICA+ICRtaWJfbW9kdWxlX2xpc3RfYworJFNFRCAncy9ebWliX21vZHVsZV9saXN0X2NvZGUvbWliX21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9sbworCiskU0VEICdzL15taWJfbW9kdWxlX2xpc3Rfby9taWJncm91cF9saXN0X28vO3NAXChbXiAJXSpcKVwub0BtaWJncm91cC9cMS5vQGcnIDwgJG1pYl9tb2R1bGVfbGlzdF9vID4gJG1pYmdyb3VwX2xpc3RfbworJFNFRCAncy9ebWliX21vZHVsZV9saXN0X2xvL21pYmdyb3VwX2xpc3RfbG8vO3NAXChbXiAJXSpcKVwubG9AbWliZ3JvdXAvXDEubG9AZycgPCAkbWliX21vZHVsZV9saXN0X2xvID4gJG1pYmdyb3VwX2xpc3RfbG8KKworJFNFRCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfY29kZS9hZ2VudF9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3RfbworJFNFRCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfY29kZS9hZ2VudF9tb2R1bGVfbGlzdF9jLztzL1woW149XVwpICAqXFwvXDEuYyBcXC9nJyAgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3RfYworJFNFRCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfY29kZS9hZ2VudF9tb2R1bGVfbGlzdF9sby87cy9cKFtePV1cKSAgKlxcL1wxLmxvIFxcL2cnIDwgJGFnZW50X21vZHVsZV9saXN0X2NvZGUgID4gJGFnZW50X21vZHVsZV9saXN0X2xvCisKKyRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X28vYWdlbnRncm91cF9saXN0X28vO3NAXChbXiAJXSpcKVwub0BtaWJncm91cC9cMS5vQGcnIDwgJGFnZW50X21vZHVsZV9saXN0X28gPiAkYWdlbnRncm91cF9saXN0X28KKyRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2xvL2FnZW50Z3JvdXBfbGlzdF9sby87c0BcKFteIAldKlwpXC5sb0BtaWJncm91cC9cMS5sb0BnJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9sbyA+ICRhZ2VudGdyb3VwX2xpc3RfbG8KKworZm9yIGkgaW4gbW9kdWxlX2xpc3RfbyBtb2R1bGVfbGlzdF9jIG1vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9vIG1pYl9tb2R1bGVfbGlzdF9jIG1pYl9tb2R1bGVfbGlzdF9sbyBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9vIGFnZW50X21vZHVsZV9saXN0X2MgYWdlbnRfbW9kdWxlX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X28gYWdlbnRncm91cF9saXN0X2xvIDsgZG8KKwkjIGhwdXggbWFrZSAoYXQgbGVhc3QpIGRvZXNuJ3QgbGlrZSBhIHRyYWlsaW5nIFwgb24gdGhlIGxhc3QKKwkjIGxpbmUgZXZlbiB3aGVuIHRoZSBuZXh0IGxpbmUgY29udGFpbnMgbm90aGluZyBidXQKKwkjIHdoaXRlc3BhY2UuCisJbGFzdHRva2VuPWBhd2sgJ3tsYXN0dG9rZW49JDF9RU5Ee3ByaW50IGxhc3R0b2tlbn0nIG1rLyRpLm1rYAorCSRTRUQgInMjJGxhc3R0b2tlbiBcXFxcIyRsYXN0dG9rZW4jIiA8IG1rLyRpLm1rID4gbWsvJGkubWsudG1wCisJbXYgbWsvJGkubWsudG1wIG1rLyRpLm1rCisKKwkjIGFkZCBhIGNsb3NpbmcgY29tbWVudAorCWVjaG8gIiIgPj4gbWsvJGkubWsKKwllY2hvICIjIGVuZCBjb25maWd1cmUgZ2VuZXJhdGVkIGNvZGUiID4+IG1rLyRpLm1rCitkb25lCisKK2NoYW5nZXF1b3RlKFssIF0pCisKK2lmIHRlc3QgJG1vZHVsZV9kZWJ1ZyAtZXEgMTsgdGhlbgorICAgZWNobyAtZSAiXG5GaW5hbCBtb2R1bGUgbGlzdDogJG1vZHVsZV9saXN0X2NvZGUiCisgICBleGl0CitmaQoraWYgdGVzdCAieCR3aXRoX21pYl9jZmdfY2hlY2tzIiA9ICJ4eWVzIjsgdGhlbgorICBBQ19NU0dfQ0FDSEVfQUREKFtBZ2VudCBNb2R1bGUgbGlzdDogJG1vZHVsZV9saXN0X2NvZGVdKQorZmkKK0FDX1NVQlNUX0ZJTEUoTU9EVUxFX0xJU1QpCitBQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2MpCitBQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X28pCitBQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2xvKQorQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfYykKK0FDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X28pCitBQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9sbykKK0FDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfYykKK0FDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfbykKK0FDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfbG8pCitBQ19TVUJTVF9GSUxFKG1pYmdyb3VwX2xpc3RfbykKK0FDX1NVQlNUX0ZJTEUobWliZ3JvdXBfbGlzdF9sbykKK0FDX1NVQlNUX0ZJTEUoYWdlbnRncm91cF9saXN0X28pCitBQ19TVUJTVF9GSUxFKGFnZW50Z3JvdXBfbGlzdF9sbykKKworQUNfU1VCU1QoZGVmYXVsdF9taWJzX2luc3RhbGwpCitBQ19TVUJTVChkbGxjbGVhbnMpCitBQ19TVUJTVF9GSUxFKG1vZHVsZV9ydWxlcykKK0FDX1NVQlNUX0ZJTEUobW9kdWxlX2xpc3RfZGVwcykKK0FDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X2RlcHMpCitBQ19TVUJTVF9GSUxFKGFnZW50X21vZHVsZV9saXN0X2RlcHMpCisKK0FDX01TR19SRVNVTFQoLikKKworaWYgdGVzdCAkbW9kdWxlX2RlYnVnIC1lcSAxOyB0aGVuCitBQ19NU0dfQ0FDSEVfQUREKEFnZW50IE1JQiBjb2RlOiAgICAgICAgICAgICRtb2R1bGVfbGlzdCkKK2ZpCitBQ19NU0dfQ0FDSEVfQUREKEFnZW50IE1JQiBjb2RlOiAgICAgICAgICAgICR0b3BfbGV2ZWxfbW9kdWxlcykKKworIyBlbmQgaGFpcnkgYWdlbnQgbW9kdWxlIHByb2Nlc3NpbmcKKworQUNfTVNHX0NIRUNLSU5HKFtpZiBkaXJlY3RvcmllcyBuZWVkIHRvIGJlIGNyZWF0ZWRdKQorZm9yIGkgaW4gJG1vZHVsZV9kaXJlY3RvcmllczsgZG8KKyAgJHNyY2Rpci9ta2luc3RhbGxkaXJzICRpCitkb25lCitBQ19NU0dfUkVTVUxUKC4pCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBkZWZhdWx0IG1pYnMKKyMKK0FDX01TR19DSEVDS0lORyhbZGVmYXVsdCBtaWIgZmlsZXMgdG8gcmVhZF0pCitpZiB0ZXN0ICJ4JE5FVFNOTVBfREVGQVVMVF9NSUJTIiA9ICJ4IjsgdGhlbgorICBORVRTTk1QX0RFRkFVTFRfTUlCUz0iJGRlZmF1bHRfbWlicyIKK2ZpCitpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCisgICMgbWluZ3czMiBhbmQgY3lnd2luIHVzZSAnOycgYXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHNlcGFyYXRvciBjaGFyCisgIEVOVl9TRVBBUkFUT1I9IjsiCisgIE5FVFNOTVBfREVGQVVMVF9NSUJTPWBlY2hvICIkTkVUU05NUF9ERUZBVUxUX01JQlMiIHwgJFNFRCAncy86LzsvZydgCisgIGRlZmF1bHRfbWlicz1gZWNobyAiJGRlZmF1bHRfbWlicyIgfCAkU0VEICdzLzovOy9nJ2AKK2Vsc2UKKyAgRU5WX1NFUEFSQVRPUj0iOiIKK2ZpCitBQ19TVUJTVChFTlZfU0VQQVJBVE9SKQorQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9NSUJTLCIkTkVUU05NUF9ERUZBVUxUX01JQlMiKQorQUNfU1VCU1QoTkVUU05NUF9ERUZBVUxUX01JQlMpCitBQ19NU0dfUkVTVUxUKCRORVRTTk1QX0RFRkFVTFRfTUlCUykKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYiBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzM0ZjQyCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliCkBAIC0wLDAgKzEsMzQ1IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMKKyMgTWF5YmUgYWRkIGxpYnJhcnkgZXh0ZW5zaW9ucyBmb3IgdGhyZWFkIG11dGV4IGxvY2tpbmcuCisjCisKK2lmIHRlc3QgIngkd2l0aF9yZXNfbG9ja3MiID0gInh5ZXMiOyB0aGVuCisgIEFDX0RFRklORShORVRTTk1QX1JFRU5UUkFOVCwgMSwKKyAgICBbRGVmaW5lIHRvIDEgaWYgeW91IHdhbnQgdG8gYnVpbGQgd2l0aCByZWVudHJhbnQvdGhyZWFkZWQKKyAgICAgY29kZSAoaW5jb21wbGV0ZSkuXSkKKworICAgIGNhc2UgJHRhcmdldF9vcyBpbgorCisgICAgYWl4KikKKwlDQ19SVU5USU1FX0FSRz0iJENDX1JVTlRJTUVfQVJHIC1scHRocmVhZHMiCisJOzsKKworICAgICopCisJOzsKKworICAgIGVzYWMKK2ZpCisKKyMKKyMgQWRkIHBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZSBmaWxlcy4KKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIHBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZV0pCitvdGhlcl9zcmNfbGlzdD0iIgorb3RoZXJfb2Jqc19saXN0PSIiCitvdGhlcl9sb2Jqc19saXN0PSIiCitvdGhlcl9hZ2VudG9ianM9IiIKK290aGVyX2xhZ2VudG9ianM9IiIKK290aGVyX3RyYXBkX29iamVjdHM9IiIKKworIyBXaW4zMiBzZXJ2aWNlIGNvZGUKK2lmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCisgIG90aGVyX3NyY19saXN0PSIkb3RoZXJfc3JjX2xpc3Qgd2luc2VydmljZS5jIHdpbnNlcnZpY2VyYy5yYyIKKyAgb3RoZXJfb2Jqc19saXN0PSIkb3RoZXJfb2Jqc19saXN0IHdpbnNlcnZpY2UubyB3aW5zZXJ2aWNlcmMubyIKKyAgb3RoZXJfbG9ianNfbGlzdD0iJG90aGVyX2xvYmpzX2xpc3Qgd2luc2VydmljZS5sbyB3aW5zZXJ2aWNlcmMubG8iCisgIG90aGVyX2FnZW50b2Jqcz0iLi4vc25tcGxpYi93aW5zZXJ2aWNlcmMubyIKKyAgb3RoZXJfbGFnZW50b2Jqcz0iLi4vc25tcGxpYi93aW5zZXJ2aWNlcmMubG8iCisgIG90aGVyX3RyYXBkX29iamVjdHM9Ii4uL3NubXBsaWIvd2luc2VydmljZXJjLm8iIAorZmkKKyAgCisjIFdpbjMyIHBpcGVzCitpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIjsgdGhlbgorICBvdGhlcl9zcmNfbGlzdD0iJG90aGVyX3NyY19saXN0IHdpbnBpcGUuYyIKKyAgb3RoZXJfb2Jqc19saXN0PSIkb3RoZXJfb2Jqc19saXN0IHdpbnBpcGUubyIKKyAgb3RoZXJfbG9ianNfbGlzdD0iJG90aGVyX2xvYmpzX2xpc3Qgd2lucGlwZS5sbyIKK2ZpCisKK0FDX1NVQlNUKG90aGVyX3NyY19saXN0KQorQUNfU1VCU1Qob3RoZXJfb2Jqc19saXN0KQorQUNfU1VCU1Qob3RoZXJfbG9ianNfbGlzdCkKK0FDX1NVQlNUKG90aGVyX2FnZW50b2JqcykKK0FDX1NVQlNUKG90aGVyX2xhZ2VudG9ianMpCitBQ19TVUJTVChvdGhlcl90cmFwZF9vYmplY3RzKQorCitBQ19NU0dfUkVTVUxUKFskb3RoZXJfc3JjX2xpc3QgJG90aGVyX29ianNfbGlzdCAkb3RoZXJfbG9ianNfbGlzdF0pCitBQ19NU0dfUkVTVUxUKFskb3RoZXJfYWdlbnRvYmpzICRvdGhlcl9sYWdlbnRvYmpzICRvdGhlcl90cmFwZF9vYmplY3RzXSkKKyAgCisjCisjIERvIHRyYW5zcG9ydCBtb2R1bGUgcHJvY2Vzc2luZy4KKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIGFuZCBjb25maWd1cmluZyB0cmFuc3BvcnQgbW9kdWxlcyB0byB1c2VdKQordHJhbnNwb3J0X3NyY19saXN0PSIiCit0cmFuc3BvcnRfaGRyX2xpc3Q9IiIKK3RyYW5zcG9ydF9kZWZfbGlzdD0iIgordHJhbnNwb3J0X3Jlc3VsdF9saXN0PSIiCit0cmFuc3BvcnRfYWRkX2xpc3Q9IiIKK25ld193aXRoX3RyYW5zcG9ydF9saXN0PWBlY2hvICR3aXRoX3RyYW5zcG9ydHMgfCAkU0VEICdzLywvIC9nOydgCituZXdfd2l0aF9vdXRfdHJhbnNwb3J0X2xpc3Q9YGVjaG8gJHdpdGhfb3V0X3RyYW5zcG9ydHMgfCAkU0VEICdzLywvIC9nOydgCisKKyMKKyMgQWRkIHRoZSBkZWZhdWx0IHRyYW5zcG9ydHMgdG8gdGhlIGxpc3QKKyMKK2lmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuIAorICB0cmFuc3BvcnRfZGVmYXVsdF9saXN0PSJVRFAgVENQIEFsaWFzIENhbGxiYWNrIgorZWxzZQorICB0cmFuc3BvcnRfZGVmYXVsdF9saXN0PSJVRFAgVENQIEFsaWFzIFVuaXggQ2FsbGJhY2siCitmaQoraWYgdGVzdCAieCRlbmFibGVfaXB2NiIgPSAieHllcyI7IHRoZW4KKyAgdHJhbnNwb3J0X2RlZmF1bHRfbGlzdD0iVURQSVB2NiBUQ1BJUHY2ICR0cmFuc3BvcnRfZGVmYXVsdF9saXN0IgorZmkKK2ZvciBpIGluICR0cmFuc3BvcnRfZGVmYXVsdF9saXN0OyBkbworICBpZiBlY2hvICIgJG5ld193aXRoX3RyYW5zcG9ydF9saXN0ICIgfCAkR1JFUCAiICRpICIgPi9kZXYvbnVsbDsgdGhlbgorICAgIDoKKyAgZWxzZQorICAgIHRyYW5zcG9ydF9hZGRfbGlzdD0iJGkgJHRyYW5zcG9ydF9hZGRfbGlzdCIKKyAgZmkKK2RvbmUKK25ld190cmFuc3BvcnRfbGlzdD0iJHRyYW5zcG9ydF9hZGRfbGlzdCAkbmV3X3dpdGhfdHJhbnNwb3J0X2xpc3QiCisKK2ZvciBpIGluICRuZXdfdHJhbnNwb3J0X2xpc3Q7IGRvCisgIGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X3RyYW5zcG9ydF9saXN0ICIgfCAkR1JFUCAiICRpICIgPi9kZXYvbnVsbDsgdGhlbgorICAgIGlmIHRlc3QgIngkaSIgPSAieFVEUCI7IHRoZW4KKyAgICAgIGVjaG8KKyAgICAgIEFDX01TR19FUlJPUihJdCBpcyBub3QgcG9zc2libGUgdG8gY29tcGlsZSB3aXRob3V0IFVEUC9JUCBzdXBwb3J0LikKKyAgICBmaQorICAgIGNvbnRpbnVlCisgIGVsc2UKKyAgICBpZiB0ZXN0ICJ4JGkiID0gInhBQUw1UFZDIjsgdGhlbgorICAgICAgaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiICE9ICJ4bGludXgiOyB0aGVuCisgICAgICAgIGVjaG8KKyAgICAgICAgQUNfTVNHX0VSUk9SKEFBTDUgUFZDIHN1cHBvcnQgdW5hdmFpbGFibGUgZm9yIHRoaXMgcGxhdGZvcm0gKExpbnV4IG9ubHkpKQorICAgICAgZmkKKyAgICBmaQorICAgIGlmIHRlc3QgIngkaSIgPSAieElQWCI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiAhPSAieGxpbnV4IjsgdGhlbgorICAgICAgICBlY2hvCisgICAgICAgIEFDX01TR19FUlJPUihJUFggc3VwcG9ydCB1bmF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybSAoTGludXggb25seSkpCisgICAgICBmaQorICAgIGZpCisgICAgaWYgdGVzdCAieCRpIiA9ICJ4VW5peCI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCisgICAgICAgIGVjaG8KKyAgICAgICAgQUNfTVNHX0VSUk9SKFVuaXggZG9tYWluIHByb3RvY29sIHN1cHBvcnQgdW5hdmFpbGFibGUgZm9yIHRoaXMgcGxhdGZvcm0pCisgICAgICBmaQorICAgIGZpCisgICAgaWYgdGVzdCAhICJ4JGVuYWJsZV9pcHY2IiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JGkiID0gInhVRFBJUHY2IiAtbyAieCRpIiA9ICJ4VENQSVB2NiI7IHRoZW4KKyAgICAgICAgICAgIGVjaG8KKyAgICAgICAgICAgIEFDX01TR19FUlJPUihJUHY2IHRyYW5zcG9ydHMgbm90IGF2YWlsYWJsZSBpZiBJUHY2IHN1cHBvcnQgaXMgbm90IGVuYWJsZWQpCisgICAgICAgIGZpCisgICAgZmkKKyAgICB0cmFuc3BvcnRfc3JjPSJzbm1wIiRpIkRvbWFpbi5jIgorICAgIHRyYW5zcG9ydF9oZHI9InNubXAiJGkiRG9tYWluLmgiCisgICAgcmVsX3RyYW5zcG9ydF9zcmM9InNubXBsaWIvIiR0cmFuc3BvcnRfc3JjCisgICAgcmVsX3RyYW5zcG9ydF9oZHI9ImluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS8iJHRyYW5zcG9ydF9oZHIKKyAgICBpZiB0ZXN0IC1mICIkc3JjZGlyLyRyZWxfdHJhbnNwb3J0X3NyYyI7IHRoZW4KKyAgICAgIHRyYW5zcG9ydF9yZXN1bHRfbGlzdD0iJHRyYW5zcG9ydF9yZXN1bHRfbGlzdCAkaSIKKyAgICAgIHRyYW5zcG9ydF9zcmNfbGlzdD0iJHRyYW5zcG9ydF9zcmMgJHRyYW5zcG9ydF9zcmNfbGlzdCIKKyAgICAgIGlmIHRlc3QgLWYgIiRzcmNkaXIvJHJlbF90cmFuc3BvcnRfaGRyIjsgdGhlbgorICAgICAgICB0cmFuc3BvcnRfaGRyX2xpc3Q9IiR0cmFuc3BvcnRfaGRyICR0cmFuc3BvcnRfaGRyX2xpc3QiCisgICAgICBmaQorICAgICAgdHJhbnNwb3J0X2RlZj1gZWNobyAkaSB8ICRTRUQgJ3kvYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovJ2AKKyAgICAgIHRyYW5zcG9ydF9kZWZfbGlzdD0iTkVUU05NUF9UUkFOU1BPUlRfIiR0cmFuc3BvcnRfZGVmIl9ET01BSU4gJHRyYW5zcG9ydF9kZWZfbGlzdCIKKyAgICBlbHNlCisgICAgICBlY2hvCisgICAgICBBQ19NU0dfRVJST1IoQ2Fubm90IGZpbmQgZmlsZSAkc3JjZGlyLyRyZWxfdHJhbnNwb3J0X3NyYyB0byBzdXBwb3J0IFNOTVAgdHJhbnNwb3J0IGRvbWFpbiAkaS4pCisgICAgZmkKKyAgZmkKK2RvbmUKK3RyYW5zcG9ydF9vYmpfbGlzdD1gZWNobyAiICR0cmFuc3BvcnRfc3JjX2xpc3QgIiB8ICRTRUQgJ3MvXC5jL1wuby9nJ2AgCSAKK3RyYW5zcG9ydF9sb2JqX2xpc3Q9YGVjaG8gIiAkdHJhbnNwb3J0X3NyY19saXN0ICIgfCAkU0VEICdzL1wuYy9cLmxvL2cnYAorCisjIyBNaW5HVyByZXF1aXJlcyBpbmV0X250b3AoKSBhbmQgaW5ldF9wdG9uKCkuCitpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIjsgdGhlbgorICBpZiBlY2hvICIkdHJhbnNwb3J0X2RlZl9saXN0IiB8ICRHUkVQICJJUFY2IiA+L2Rldi9udWxsOyB0aGVuCisgICAgdHJhbnNwb3J0X29ial9saXN0PSIkdHJhbnNwb3J0X29ial9saXN0IGluZXRfbnRvcC5vIGluZXRfcHRvbi5vIgorICAgIHRyYW5zcG9ydF9sb2JqX2xpc3Q9IiR0cmFuc3BvcnRfbG9ial9saXN0IGluZXRfbnRvcC5sbyBpbmV0X3B0b24ubG8iCisgIGZpCitmaQorCitBQ19TVUJTVCh0cmFuc3BvcnRfaGRyX2xpc3QpCitBQ19TVUJTVCh0cmFuc3BvcnRfc3JjX2xpc3QpCitBQ19TVUJTVCh0cmFuc3BvcnRfb2JqX2xpc3QpCitBQ19TVUJTVCh0cmFuc3BvcnRfbG9ial9saXN0KQorZm9yIGkgaW4gJHRyYW5zcG9ydF9kZWZfbGlzdDsgZG8KKyAgQUNfREVGSU5FX1VOUVVPVEVEKCRpKQorZG9uZQorQUNfTVNHX1JFU1VMVCgkdHJhbnNwb3J0X3Jlc3VsdF9saXN0LikKK0FDX01TR19DQUNIRV9BREQoTmV0d29yayB0cmFuc3BvcnQgc3VwcG9ydDogJHRyYW5zcG9ydF9yZXN1bHRfbGlzdCkKKworIworIyBTZWN1cml0eSBtb2R1bGVzIHRvIHVzZQorIyAKKworQUNfTVNHX0NIRUNLSU5HKFtmb3Igc2VjdXJpdHkgbW9kdWxlcyB0byB1c2VdKQorc2VjdXJpdHlfZGVmX2xpc3Q9InVzbSIKK3NlY3VyaXR5X3NyY19saXN0PSIiCitzZWN1cml0eV9vYmpfbGlzdD0iIiAJIAorc2VjdXJpdHlfbG9ial9saXN0PSIiCitzZWN1cml0eV9pbml0X2ZpbGU9InNubXBsaWIvc25tcHNtX2luaXQuaCIKK3NlY3VyaXR5X2luY2xfZmlsZT0iaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oIgorbmV3X3dpdGhfc2VjdXJpdHk9YGVjaG8gJHdpdGhfc2VjdXJpdHlfbW9kdWxlcyB8ICRTRUQgJ3MvLC8gL2c7J2AKK25ld193aXRoX291dF9zZWN1cml0eT1gZWNobyAkd2l0aF9vdXRfc2VjdXJpdHlfbW9kdWxlcyB8ICRTRUQgJ3MvLC8gL2c7J2AKKworaWYgdGVzdCAhIC1kIGluY2x1ZGU7IHRoZW4KKyAgbWtkaXIgaW5jbHVkZQorZmkKK2lmIHRlc3QgISAtZCBpbmNsdWRlL25ldC1zbm1wOyB0aGVuCisgIG1rZGlyIGluY2x1ZGUvbmV0LXNubXAKK2ZpCitpZiB0ZXN0ICEgLWQgaW5jbHVkZS9uZXQtc25tcC9hZ2VudDsgdGhlbgorICBta2RpciBpbmNsdWRlL25ldC1zbm1wL2FnZW50CitmaQoraWYgdGVzdCAhIC1kIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeTsgdGhlbgorICBta2RpciBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkKK2ZpCitpZiB0ZXN0ICEgLWQgaW5jbHVkZS91Y2Qtc25tcDsgdGhlbgorICBta2RpciBpbmNsdWRlL3VjZC1zbm1wCitmaQorCitpZiB0ZXN0ICEgLWQgc25tcGxpYjsgdGhlbgorICBta2RpciBzbm1wbGliCitmaQorZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJHNlY3VyaXR5X2luaXRfZmlsZQorZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJHNlY3VyaXR5X2luY2xfZmlsZQorCitmb3IgaSBpbiAkc2VjdXJpdHlfZGVmX2xpc3Q7IGRvCisgIGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X3NlY3VyaXR5ICIgfCAkR1JFUCAiICRpICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICBpZiB0ZXN0ICJ4JGkiID0gInh1c20iOyB0aGVuCisJZWNobworICAgICAgICBBQ19NU0dfRVJST1IoVGhlIFVTTSBzZWN1cml0eSBtb2R1bGUgaXMgbWFuZGF0b3J5KQorICAgIGZpCisgIGVsc2UKKyAgICBuZXdfd2l0aF9zZWN1cml0eT0iJG5ld193aXRoX3NlY3VyaXR5ICRpIgorICBmaQorZG9uZQorCitmb3IgaSBpbiAkbmV3X3dpdGhfc2VjdXJpdHk7IGRvCisgIGNmaWxlPSJzbm1wIiRpIi5jIgorICBoZmlsZT0ic25tcCIkaSIuaCIKKworICAjIG1ha2Ugc3VyZSBzdXBwb3J0IGV4aXN0cyBmb3IgaXQKKyAgaWYgdGVzdCAtZiAkc3JjZGlyIi9zbm1wbGliLyIkY2ZpbGUgLWEgLWYgJHNyY2RpciIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5LyIkaGZpbGU7IHRoZW4KKyAgICA6CisgIGVsc2UKKyAgICBlY2hvCisgICAgQUNfTVNHX0VSUk9SKE5vIHN1Y2ggc2VjdXJpdHkgbW9kdWxlOiAkaSAvICRjZmlsZSAvICRoZmlsZSkKKyAgZmkKKworICAjIGRlZmluZSBhIGJ1bmNoIG9mIHN0dWZmIHRvIGVuYWJsZSBpdAorICBzZWN1cml0eV9zcmNfbGlzdD0iJHNlY3VyaXR5X3NyY19saXN0ICRjZmlsZSIKKyAgc2VjdXJpdHlfaGRyX2xpc3Q9IiRzZWN1cml0eV9oZHJfbGlzdCAkaGZpbGUiCisgIHNlY3VyaXR5X29ial9saXN0PSIkc2VjdXJpdHlfb2JqX2xpc3Qgc25tcCIkaSIubyIgCSAKKyAgc2VjdXJpdHlfbG9ial9saXN0PSIkc2VjdXJpdHlfbG9ial9saXN0IHNubXAiJGkiLmxvIgorICBkZWZfbmFtZT0iTkVUU05NUF9TRUNNT0RfImBlY2hvICRpIHwgdHIgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonYAorICBlY2hvICJpbml0XyIkaSIoKTsiID4+ICRzZWN1cml0eV9pbml0X2ZpbGUKKyAgZWNobyAiI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvJGhmaWxlPiIgPj4gJHNlY3VyaXR5X2luY2xfZmlsZQorICBBQ19ERUZJTkVfVU5RVU9URUQoJGRlZl9uYW1lKQorZG9uZQorCitBQ19TVUJTVChzZWN1cml0eV9zcmNfbGlzdCkKK0FDX1NVQlNUKHNlY3VyaXR5X2hkcl9saXN0KQorQUNfU1VCU1Qoc2VjdXJpdHlfb2JqX2xpc3QpIAkgCitBQ19TVUJTVChzZWN1cml0eV9sb2JqX2xpc3QpCitBQ19NU0dfUkVTVUxUKCRuZXdfd2l0aF9zZWN1cml0eSkKK0FDX01TR19DQUNIRV9BREQoU05NUHYzIFNlY3VyaXR5IE1vZHVsZXM6ICAgICRuZXdfd2l0aF9zZWN1cml0eSkKKworIworIyBIYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSBvZiBLU00gdG8gc2VlIHdoaWNoIGNyeXB0byBBUEkgd2Ugc3VwcG9ydAorIworCityZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5PQorYWxyZWFkeV9jaGVja2VkX2tyYjU9bm8KKworZm9yIHNlYyBpbiAkbmV3X3dpdGhfc2VjdXJpdHkKK2RvCisgIGlmIHRlc3QgIngkc2VjIiA9ICJ4a3NtIjsgdGhlbgorICAgIGlmIHRlc3QgInh5ZXMiID0gIngkYWxyZWFkeV9jaGVja2VkX2tyYjUiOyB0aGVuCisgICAgICBjb250aW51ZQorICAgIGVsc2UKKyAgICAgIGFscmVhZHlfY2hlY2tlZF9rcmI1PXllcworICAgIGZpCisgIGZpCisKKyAgaWYgdGVzdCB4JHNlYyAhPSB4a3NtOyB0aGVuCisgICAgcmVidWlsdF9uZXdfd2l0aF9zZWN1cml0eT0iJHJlYnVpbHRfbmV3X3dpdGhfc2VjdXJpdHkgJHNlYyIKKyAgZWxzZQorICAgIGlmIHRlc3Qgbm8gPSAkdHJ5a3JiNTsgdGhlbgorICAgICAgQUNfTVNHX05PVElDRShbY29uZmlndXJlZCBub3QgdG8gdXNlIGtyYjUuIGRpc2FibGluZyBrc21dKQorICAgICAgY29udGludWUKKyAgICBmaQorCisgICAgQUNfUEFUSF9QUk9HKFtrcmI1X2NvbmZpZ10sa3JiNS1jb25maWcsW25vXSwka3JiNXBhdGgvYmluOiRQQVRIKQorCisgICAgaWYgdGVzdCBubyAhPSAka3JiNV9jb25maWc7IHRoZW4KKyAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgYCRrcmI1X2NvbmZpZyAtLWNmbGFnc2AiCisgICAgICBMSUJTPSIkTElCUyBgJGtyYjVfY29uZmlnIC0tbGlic2AiCisgICAgZWxpZiB0ZXN0ICRrcmI1cGF0aCAhPSBubzsgdGhlbgorICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKCRrcmI1cGF0aCkKKyAgICBlbHNlCisgICAgICBBQ19BRERfU0VBUkNIX1BBVEgoL3Vzci9rZXJiZXJvcykKKyAgICBmaQorCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3Iga3JiNV0pCisgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2hhdmVfa3JiNSwKKyAgICAgIEFDX0NIRUNLX0xJQihrcmI1LCBrcmI1X2luaXRfY29udGV4dCwKKwlhY19jdl9oYXZlX2tyYjU9eWVzLCBhY19jdl9oYXZlX2tyYjU9bm8KKyAgICAgICkKKyAgICApCisKKyAgICBpZiB0ZXN0ICRhY19jdl9oYXZlX2tyYjUgPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCAieCRhc2tlZGtyYjUiID0gInh5ZXMiOyB0aGVuCisJQUNfTVNHX0VSUk9SKEFza2VkIHRvIHVzZSBrcmI1IGJ1dCBJIGNvdWxkbid0IGZpbmQgaXQuKQorICAgICAgZmkKKyAgICAgIEFDX01TR19SRVNVTFQobm8uIGRpc2FibGluZyBrc20pCisgICAgICBjb250aW51ZQorICAgIGZpCisgICAgICAKKyAgICBBQ19NU0dfUkVTVUxUKHllcykKKyAgICByZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5PSIkcmVidWlsdF9uZXdfd2l0aF9zZWN1cml0eSBrc20iCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW1tmb3IgaGVpbWRhbF1dKQorICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9oZWltZGFsLAorICAgIFtBQ19UUllfQ09NUElMRSgKKyAgICAgIFsjaW5jbHVkZSA8a3JiNS5oPl0sCisgICAgICBbY29uc3QgY2hhciAqdiA9IGhlaW1kYWxfdmVyc2lvbjtdLAorICAgICAgYWNfY3ZfaGVpbWRhbD15ZXMsCisgICAgICBhY19jdl9oZWltZGFsPW5vCisgICAgKV0pCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfaGVpbWRhbCkKKyAgICBpZiB0ZXN0ICRhY19jdl9oZWltZGFsID0geWVzOyB0aGVuCisgICAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfS0VSQkVST1NfSEVJTURBTCwgMSwKKyAgICAgICAgW0RlZmluZSB0aGlzIGlmIHlvdSdyZSB1c2luZyBIZWltZGFsIEtlcmJlcm9zXSkKKyAgICAgIGlmIHRlc3Qgbm8gPSAka3JiNV9jb25maWc7IHRoZW4KKwlMSUJTPSIkTElCUyAtbGtyYjUgLWxhc24xIC1sY29tX2VyciAtbHJva2VuIgorICAgICAgZmkKKyAgICBlbGlmIHRlc3Qgbm8gPSAka3JiNV9jb25maWc7IHRoZW4KKwlMSUJTPSIkTElCUyAtbGtyYjUgLWxjb21fZXJyIgorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3RvIHNlZSB3aGljaCBjcnlwdG8gQVBJIHdlIG5lZWQgdG8gdXNlXSkKKyAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfTkVUU05NUF9VU0VfS0VSQkVST1NfTUlULAorICAgICAgQUNfQ0hFQ0tfTElCKGs1Y3J5cHRvLCBrcmI1X2luaXRfY29udGV4dCwKKwlhY19jdl9ORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQ9eWVzLCBhY19jdl9ORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQ9bm8KKyAgICAgICkKKyAgICApCisKKyAgICBpZiB0ZXN0IHllcyA9ICRhY19jdl9ORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQ7IHRoZW4KKyAgICAgIEFDX01TR19SRVNVTFQobmV3IE1JVCBjcnlwdG8gQVBJKQorICAgICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX0tFUkJFUk9TX01JVCwgMSwKKyAgICAgICAgW0RlZmluZSB0aGlzIGlmIHdlJ3JlIHVzaW5nIHRoZSBuZXcgTUlUIGNyeXB0byBBUEldKQorICAgICAgaWYgdGVzdCBubyA9ICRrcmI1X2NvbmZpZzsgdGhlbgorCUxJQlM9IiRMSUJTIC1sazVjcnlwdG8iCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIEFDX01TR19SRVNVTFQob2xkIE1JVCBjcnlwdG8gQVBJKQorICAgIGZpCisgICAgQUNfQ0hFQ0tfRlVOQ1MoW2tyYjVfYXV0aF9jb25fZ2V0c2VuZHN1YmtleV0pCisgIGZpCitkb25lCisKK25ld193aXRoX3NlY3VyaXR5PSRyZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5CisKKyMKKyMgRGV0ZWN0IGxtX3NlbnNvcnMgdmVyc2lvbgorIworaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc2Vuc29yc19zZW5zb3JzX2giID0gInh5ZXMiOyB0aGVuCisgICAgQUNfQ0hFQ0tfREVDTFMoW3NlbnNvcnNfZ2V0X2FsbF9zdWJmZWF0dXJlc10sCisgICAgICAgIFtBQ19ERUZJTkUoTkVUU05NUF9VU0VfU0VOU09SU19WMywgMSwKKyAgICAgICAgICAgIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSBsaW1fc2Vuc29ycyB2MyBvciBsYXRlcl0pXSwsCisgICAgICAgIFtbI2luY2x1ZGUgPHNlbnNvcnMvc2Vuc29ycy5oPl1dKQorZmkKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMgYi9jb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MTYyZDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zCkBAIC0wLDAgKzEsMjMwIEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBDaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zLgorIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgU3RhbmRhcmQgY2hlY2tzOgorIyMKK0FDX0ZVTkNfQUxMT0NBICAgICAgICAgICMgIGFsbG9jYSgpCitBQ19QUk9HX0dDQ19UUkFESVRJT05BTAorCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyAtYSAiJHthY19jdl9mdW5jX21lbWNtcF93b3JraW5nK3NldH0iICE9IHNldAordGhlbgorICAjIENyb3NzLWNvbXBpbGluZyBhbmQgYWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZyBoYXMgbm90IGJlZW4gc2V0IC0gYXNzdW1lCisgICMgdGhhdCBtZW1jbXAoKSBpcyBhdmFpbGFibGUuCisgIGFjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9eWVzCitlbHNlCisgICMgTmF0aXZlIGNvbXBpbGF0aW9uIC0gdGVzdCBmb3IgdGhlIGF2YWlsYWJpbGl0eSBvZiBtZW1jbXAoKS4KKyAgQUNfRlVOQ19NRU1DTVAKK2ZpCisKK0FDX1RZUEVfU0lHTkFMCisKKyMjCisjICAgU3RhbmQtYWxvbmUgZnVuY3Rpb24gY2hlY2tzOgorIyMKKyMgIENvcmU6CitBQ19DSEVDS19GVU5DUyhbbHJhbmQ0OCAgICAgICAgIHJhbmQgICAgICAgICAgcmFuZG9tICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2lnbmFsICAgICAgICAgIHNpZ3NldCAgICAgICAgICAgICAgICAgIF0gKQorCisjICBMaWJyYXJ5OgorQUNfQ0hFQ0tfRlVOQ1MoW2ZvcmsgICAgICAgICAgICBnYWlfc3RyZXJyb3IgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtnZXRhZGRyaW5mbyAgICAgZ2V0aG9zdG5hbWUgICBnZXRob3N0YnluYW1lICAgIF0gZG5sCisgICAgICAgICAgICAgICBbZ2V0aXBub2RlYnluYW1lICAgICAgICAgICAgICAgZ2V0dGltZW9mZGF5ICAgICBdIGRubAorICAgICAgICAgICAgICAgW2lmX25hbWV0b2luZGV4ICBta3N0ZW1wICAgICAgIHJlZ2NvbXAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtyZWFkZGlyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2V0ZW52ICAgICAgICAgIHNldGl0aW1lciAgICAgc2V0bG9jYWxlICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3NldHNpZCAgICAgICAgICBzbnByaW50ZiAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzdHJjYXNlc3RyICAgICAgc3RyZHVwICAgICAgICBzdHJlcnJvciAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc3RybGNhdCAgICAgICAgIHN0cmxjcHkgICAgICAgc3RybmNhc2VjbXAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3N0cnRva19yICAgICAgICBzdHJ0b2wgICAgICAgIHN0cnRvdWwgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzdHJ0b3VsbCAgICAgICAgc3lzY29uZiAgICAgICB0aW1lcyAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbdnNucHJpbnRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICkKKworIyAgQWdlbnQ6CitBQ19DSEVDS19GVU5DUyhbY2dldG5leHQgICAgICAgIGV4ZWN2ICAgICAgICAgZ2FpX3N0cmVycm9yICAgICBdIGRubAorICAgICAgICAgICAgICAgW2dldGZzc3RhdCAgICAgICBnZXRncm5hbSAgICAgIGdldGhvc3RuYW1lICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFsgICAgICAgICAgICAgICAgZ2V0bG9hZGF2ZyAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbZ2V0cGlkICAgICAgICAgIGdldHB3bmFtICAgICAgZ2V0dmZzc3RhdCAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW2hhc21udG9wdCAgICAgICBpbml0Z3JvdXBzICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtpZl9uYW1laW5kZXggICAgaWZfbmFtZXRvaW5kZXggICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBba2luZm9fZ2V0X2NwdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW21rc3RlbXAgICAgICAgICBta3RpbWUgICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtwb2xsICAgICAgICAgICAgcmVnY29tcCAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2V0Z2lkICAgICAgICAgIHNldGdyb3VwcyAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3NldG1udGVudCAgICAgICBzZXR1aWQgICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzaWdhY3Rpb24gICAgICAgc2lnYmxvY2sgICAgICBzaWdob2xkICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc3RhdGZzICAgICAgICAgIHN0YXR2ZnMgICAgICAgc3RpbWUgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3N0cm5jYXNlY21wICAgICBzeXN0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFt1bmFtZSAgICAgICAgICAgdXNsZWVwICAgICAgICAgICAgICAgICAgICAgICAgIF0gKQorCisjICBBcHBzOgorQUNfQ0hFQ0tfRlVOQ1MoW2dldGR0YWJsZXNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtnZXRncm5hbSAgICAgICAgZ2V0cGlkICAgICAgICBnZXRwd25hbSAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2V0Z2lkICAgICAgICAgIHNldGdyb3VwcyAgICAgc2V0dWlkICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3RjZ2V0YXR0ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSApCisKKyMgIE5vdC1Vc2VkOgorQUNfQ0hFQ0tfRlVOQ1MoW2lmX2ZyZWVuYW1laW5kZXggICAgICAgICAgICAgIGdldHBhZ2VzaXplICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtsc2VlazY0ICAgICAgICAgcHJlYWQ2NCAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2VsZWN0ICAgICAgICAgIHNpZ2Fscm0gICAgICAgc29ja2V0ICAgICAgICAgICBdICkKKworCisjIworIyAgIE1vcmUgY29tcGxleCBmdW5jdGlvbiBjaGVja3M6CisjICAgICAgICAgICAoQWdlbnQpCisjIworCisjICAgICAgIHJwbUdldFBhdGggY2hlY2sgbmVlZHMgY2xlYW4gTElCUyBlbnZpcm9ubWVudCAgIChMaW51eCkKKyMKK2lmIHRlc3QgIngkd2l0aF9ycG0iICE9ICJ4bm8iOyB0aGVuCisgICAgT0xETElCUz0kTElCUworICAgIExJQlM9JExNSUJMSUJTCisgICAgQUNfQ0hFQ0tfRlVOQ1MocnBtR2V0UGF0aCkKKyAgICBMSUJTPSRPTERMSUJTCitmaQorCisjICAgICAgIHN0YXRmcyggY2hhciAqLCBzdHJ1Y3QgZnNfZGF0YSogKSAgICAgICAgICAgICAgIChVbHRyaXgpCisjCitBQ19NU0dfQ0hFQ0tJTkcoW1tmb3IgdHdvLWFyZ3VtZW50IHN0YXRmcyB3aXRoIHN0cnVjdCBmc19kYXRhIChVbHRyaXgpXV0pCitBQ19DQUNIRV9WQUwoCisgICAgZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YSwKKyAgICBbQUNfVFJZX1JVTihbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9TWVNfTU9VTlRfSAorI2luY2x1ZGUgPHN5cy9tb3VudC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfRlNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy9mc190eXBlcy5oPgorI2VuZGlmCittYWluICgpCit7CitzdHJ1Y3QgZnNfZGF0YSBmc2Q7CisvKiBVbHRyaXgncyBzdGF0ZnMgcmV0dXJucyAxIGZvciBzdWNjZXNzLAorICAgMCBmb3Igbm90IG1vdW50ZWQsIC0xIGZvciBmYWlsdXJlLiAgKi8KK2V4aXQgKHN0YXRmcyAoIi4iLCAmZnNkKSAhPSAxKTsKK31dLAorICAgIGZ1X2N2X3N5c19zdGF0X2ZzX2RhdGE9eWVzLAorICAgIGZ1X2N2X3N5c19zdGF0X2ZzX2RhdGE9bm8sCisgICAgZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YT1ubyldKQorQUNfTVNHX1JFU1VMVCgkZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YSkKK2lmIHRlc3QgJGZ1X2N2X3N5c19zdGF0X2ZzX2RhdGEgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoU1RBVF9TVEFURlNfRlNfREFUQSwgMSwKKyAgICAgICAgW0RlZmluZSBpZiBzdGF0ZnMgdGFrZXMgMiBhcmdzIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGhhcworICAgICAgICAgdHlwZSBzdHJ1Y3QgZnNfZGF0YS4gQDw6QFVsdHJpeEA6PkBdKQorZmkKKworCisjIworIyAgIE90aGVyIGZ1bmN0aW9uLXJlbGF0ZWQgY2hlY2tzOgorIyAgICAgICAgICAgKGdlbmVyYWwgYnVpbGQpCisjIworCisjICAgICAgIEhvdyB0byBnZXQgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24KKyMKK0FDX0NBQ0hFX0NIRUNLKFtob3cgdG8gZ2V0IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uXSwKKyAgICAgICAgICAgICAgIFtuZXRzbm1wX2N2X19mdW5jX19uYW1lXSxbCisgICAgbmV0c25tcF9jdl9fZnVuY19fbmFtZT1ubworICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICBBQ19MQU5HX1BST0dSQU0oLFtbY29uc3QgY2hhciogY3AgPSBfX2Z1bmNfXztdXSksCisgICAgICAgIFtuZXRzbm1wX2N2X19mdW5jX19uYW1lPV9fZnVuY19fXSkKKyAgICBpZiB0ZXN0ICIkbmV0c25tcF9jdl9fZnVuY19fbmFtZSIgPSBubyA7IHRoZW4KKyAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICBBQ19MQU5HX1BST0dSQU0oLFtbY29uc3QgY2hhciogY3AgPSBfX0ZVTkNUSU9OX187XV0pLAorICAgICAgICBbbmV0c25tcF9jdl9fZnVuY19fbmFtZT1fX0ZVTkNUSU9OX19dKQorICAgIGZpXSkKK2lmIHRlc3QgIiRuZXRzbm1wX2N2X19mdW5jX19uYW1lIiAhPSBubzsgdGhlbgorICAgIEFDX0RFRklORV9VTlFVT1RFRChbTkVUU05NUF9GVU5DVElPTl0sWyRuZXRzbm1wX2N2X19mdW5jX19uYW1lXSwKKyAgICAgICAgW1Nob3VsZCBldmFsdWF0ZSB0byB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBmdW5jdGlvbiBpZiBkZWZpbmVkXSkKK2ZpCisKKworIyAgICAgICBXaGV0aGVyIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSBicm9rZW4gICAgICAoU0NPIFVuaXh3YXJlKQorIworQUNfQ0FDSEVfQ0hFQ0soW1t3aGV0aGVyIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSBicm9rZW4gKFVuaXh3YXJlKV1dLAorICAgICAgICAgICAgICAgIFtuZXRzbm1wX2N2X2NfYnJva2VuX2lubGluZV0sCisgICAgQUNfQ09NUElMRV9JRkVMU0UoW1sKK3N0YXRpYyBpbmxpbmUgaW50IG5lc3RlZF9pbmxpbmVfZnVuY3Rpb24odm9pZCkgeworICByZXR1cm4gMDsKK30KK2lubGluZSBpbnQgbWFpbl9pbmxpbmVfZnVuY3Rpb24oIHZvaWQgKSB7CisgIHJldHVybiBuZXN0ZWRfaW5saW5lX2Z1bmN0aW9uKCk7Cit9CisgICAgXV0sCisgICAgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPW5vLAorICAgIG5ldHNubXBfY3ZfYnJva2VuX2lubGluZT15ZXMpKQorCisKKyMgICAgICAgWWVzIC0gIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSBicm9rZW4gICAgICAgKFNvbGFyaXMgMi54KQorIworY2FzZSAiJHRhcmdldF9vcyIgaW4KKyAgICBzb2xhcmlzKikKKyAgICAgICAgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPXllcworICAgICAgICA7OworICAgICopCisgICAgICAgIDs7Citlc2FjCisKK2lmIHRlc3QgIiRuZXRzbm1wX2N2X2Jyb2tlbl9pbmxpbmUiID0geWVzIDsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9CUk9LRU5fSU5MSU5FLCAxLAorICAgICAgICBbRGVmaW5lIGlmIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSB1bnN1cHBvcnRlZF0pCitmaQorCisKKyMjCisjICAgTWlzLXBsYWNlZCAobm9uLWZ1bmN0aW9uKSBjaGVja3M6CisjIworCitBQ19DQUNIRV9DSEVDSyhbZm9yIFNJT0NHSUZBRERSIGluIHN5cy9pb2N0bC5oXSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSLAorICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICBbQUNfTEFOR19QUk9HUkFNKFtbCisjaWZkZWYgSEFWRV9TWVNfSU9DVExfSAorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2VuZGlmCisjaWZuZGVmIFNJT0NHSUZBRERSCitObyBTSU9DR0lGQUREUiBmb3VuZCBoZXJlLgorI2VuZGlmCisgICAgICAgIF1dKV0sCisgICAgW25ldHNubXBfY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSPXllc10sCisgICAgW25ldHNubXBfY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSPW5vXSkpCitpZiB0ZXN0ICRuZXRzbm1wX2N2X3N5c19pb2N0bF9oX2hhc19TSU9DR0lGQUREUiA9IHllczsgdGhlbgorICBBQ19ERUZJTkUoU1lTX0lPQ1RMX0hfSEFTX1NJT0NHSUZBRERSLCAxLAorICAgW2RlZmluZSBpZiBTSU9DR0lGQUREUiBleGlzdHMgaW4gc3lzL2lvY3RsLmhdKQorZmkKKworIyMKKyMgICBDaGVjayBob3cgdG8gcHJpbnQgYSBzaXplX3QgdmFyaWFibGUKKyMjCisKK0FDX0NBQ0hFX0NIRUNLKAorICAgIFt0aGUgdW5kZXJseWluZyB0eXBlIG9mIGEgc2l6ZV90XSwKKyAgICBuZXRzbm1wX2N2X3NpemVfdF90eXBlLAorICAgIFttNF9mb3JlYWNoKFtUWVBFXSwgW1tpbnRdLFtsb25nXSxbbG9uZyBsb25nXSxbc2hvcnRdLFtjaGFyXV0sCisgICAgIFtpZiBbWyB4JG5ldHNubXBfY3Zfc2l6ZV90X3R5cGUgPSB4IF1dIDsgdGhlbgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisJICAgICBbQUNfTEFOR19QUk9HUkFNKAorW0FDX0lOQ0xVREVTX0RFRkFVTFQoKQorZXh0ZXJuIHVuc2lnbmVkIFRZUEUgdmFyaWFibGU7CitleHRlcm4gc2l6ZV90IHZhcmlhYmxlO10sCisgICAgICAgICAgICAgICAgIFtdKV0sCisgICAgICAgICAgICAgW25ldHNubXBfY3Zfc2l6ZV90X3R5cGU9IlRZUEUiXSkKKyAgICAgZmkKKyAgICBdKV0pCisKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIHByaW50ZiBhIHNpemVfdF0pCitjYXNlICIkbmV0c25tcF9jdl9zaXplX3RfdHlwZSIgaW4KKyAgICBjaGFyfHNob3J0fGludCkgbmV0c25tcF9QUkl6PSIiIDs7CisgICAgbG9uZykgbmV0c25tcF9QUkl6PSJsIiA7OworICAgICJsb25nIGxvbmciKSBuZXRzbm1wX1BSSXo9ImxsIiA7OworICAgICopIEFDX01TR19FUlJPUihbdW5kZXJseWluZyB0eXBlIG9mIHNpemVfdCBub3Qga25vd25dKSA7OworZXNhYworQUNfTVNHX1JFU1VMVCgkbmV0c25tcF9QUkl6KQorQUNfREVGSU5FX1VOUVVPVEVEKFtORVRTTk1QX1BSSXpdLCBbIiRuZXRzbm1wX1BSSXoiXSwKKyAgICAgICAgICAgICAgICAgICBbU2l6ZSBwcmVmaXggdG8gdXNlIHRvIHByaW50ZiBhIHNpemVfdCBvciBzc2l6ZV90XSkKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgwMzczNAotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzCkBAIC0wLDAgKzEsNTA4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMKKyMgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBTdGFuZGFyZCBjaGVja3M6CisjIworIyAgQ29yZToKK0FDX0hFQURFUl9TVERDICAgICAgICAgICMgIDxzdGRsaWIuaD4sIDxzdGRhcmcuaD4sICAgPHN0cmluZy5oPiAgJiA8ZmxvYXQuaD4KK0FDX0hFQURFUl9ESVJFTlQgICAgICAgICMgIDxkaXJlbnQuaD4sIDxzeXMvbmRpci5oPiwgPHN5cy9kaXIuaD4gJiA8bmRpci5oPgorIyAgQXBwczoKK0FDX0hFQURFUl9TWVNfV0FJVCAgICAgICMgIDxzeXMvd2FpdC5oPgorCisjIworIyAgIFN0YW5kLWFsb25lIGhlYWRlcnM6CisjIworIyAgQ29yZToKK0FDX0NIRUNLX0hFQURFUlMoW2dldG9wdC5oICAgcHRocmVhZC5oICByZWdleC5oICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N0cmluZy5oICAgc3lzbG9nLmggICB1bmlzdGQuaCAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N0ZGludC5oICAgaW50dHlwZXMuaCAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9wYXJhbS5oICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3NlbGVjdC5oICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvc29ja2V0LmggICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy90aW1lLmggICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3VuLmggICAgICAgICAgIF0pCisKKyMgIExpYnJhcnkgYW5kIEFnZW50OgorQUNfQ0hFQ0tfSEVBREVSUyhbbmxpc3QuaF0sLCxbCitBQ19JTkNMVURFU19ERUZBVUxUCitbCisjaWZuZGVmIExJQkJTRF9ESVNBQkxFX0RFUFJFQ0FURUQKKyNkZWZpbmUgTElCQlNEX0RJU0FCTEVfREVQUkVDQVRFRCAxCisjZW5kaWYKK11dKQorCisjICBMaWJyYXJ5OgorQUNfQ0hFQ0tfSEVBREVSUyhbZmNudGwuaCAgICBpby5oICAgICAgIGtzdGF0LmggICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtsaW1pdHMuaCAgIGxvY2FsZS5oICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9maWxlLmggICAgICAgc3lzL2lvY3RsLmggICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3NvY2tpby5oICAgICBzeXMvc3RhdC5oICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvc3lzdGVtY2ZnLmggIHN5cy9zeXN0ZW1pbmZvLmggICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy90aW1lcy5oICAgICAgc3lzL3Vpby5oICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3V0c25hbWUuaCAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpcHgvaXB4LmggICAgICAgXSkKKworIyAgQWdlbnQ6CitBQ19DSEVDS19IRUFERVJTKFtkbGZjbi5oICAgIGVyci5oICAgICAgZmNudGwuaCAgICBmc3RhYi5oICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgWyAgICAgICAgICAgZ3JwLmggICAgICBpby5oICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbaW9jdGxzLmggICBrc3RhdC5oICAgIGt2bS5oICAgICAgbGltaXRzLmggICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFsgICAgICAgICAgIG1udGVudC5oICAgbXRhYi5oICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgWyAgICAgICAgICAgcGtnbG9jcy5oICAgICAgICAgICAgIHB3ZC5oICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbICAgICAgICAgICB1dG1weC5oICAgIHV0c25hbWUuaCAgICAgICAgICAgICAgIF0pCisKK0FDX0NIRUNLX0hFQURFUlMoW3N5cy9kaXNraW8uaCAgc3lzL2RraW8uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvZmlsZS5oICAgIHN5cy9maWxpby5oICAgc3lzL2ZpeHBvaW50LmggICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL2ZzLmggICAgICBzeXMvaW9jdGwuaCAgIHN5cy9sb2FkYXZnLmggIHN5cy9tbnRlbnQuaCAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9tbnR0YWIuaCAgc3lzL3Bvb2wuaCAgICBzeXMvcHJvdG9zdy5oICBzeXMvcHN0YXQuaCAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvc29ja2lvLmggIHN5cy9zdGF0LmggICAgc3lzL3N0YXRmcy5oICAgc3lzL3N0YXR2ZnMuaCBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3N0cmVhbS5oICBzeXMvc3lzZ2V0LmggIHN5cy9zeXNtcC5oICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy90Y3BpcHN0YXRzLmggICAgICAgICAgICBzeXMvdXRzbmFtZS5oICBzeXMvdmZzLmggICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvdm0uaCAgICAgIHN5cy92bW1hYy5oICAgc3lzL3ZtbWV0ZXIuaCAgc3lzL3ZtcGFyYW0uaCBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3Ztc3lzdG0uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworQUNfQ0hFQ0tfSEVBREVSUyhbYXNtL3BhZ2UuaCBhc20vdHlwZXMuaCAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtpbmV0L21pYjIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW2xpbnV4L2hkcmVnLmggbGludXgvdGFza3MuaCAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbbWFjaGluZS9wYXJhbS5oICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0L3RjcF9mc20uaCAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3Vmcy9mcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbdXZtL3V2bV9leHRlcm4uaCB1dm0vdXZtX3BhcmFtLmggICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFt2bS92bS5oIHZtL3ZtX2V4dGVybi5oIHZtL3ZtX3BhcmFtLmggXSkKKworIyAgQXBwczoKK0FDX0NIRUNLX0hFQURFUlMoW2ZjbnRsLmggICAgZ3JwLmggICAgICBwd2QuaCAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvY2RlZnMuaCAgIHN5cy9pb2N0bC5oICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3NvY2tldC5oICBzeXMvc29ja2lvLmggICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy90aW1lLmggICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyMgIE5vdC1Vc2VkOgorQUNfQ0hFQ0tfSEVBREVSUyhbc2VhcmNoLmggICBzZ3R0eS5oICAgIHh0aS5oICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9kbWFwLmggc3lzL3BvbGwuaCAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvdGltZW91dC5oICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbbWFjaGluZS9wdGUuaCAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3BjaS9wY2kuaCAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKworIyBPcGVuU1NMCitBQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL2Flcy5oIF0pICAgICAjICAoQ29yZSkKK0FDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvZGguaCAgXSkgICAgICMgIChBcHBzKQorIyAgTm90LVVzZWQ6CitBQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL2Rlcy5oICBvcGVuc3NsL2htYWMuaCBdIGRubAorICAgICAgICAgICAgICAgICBbb3BlbnNzbC9ldnAuaCAgc2VjdXJpdHkvY3J5cHRva2kuaF0pCisKKyMgUlBNIHN1YmRpcmVjdG9yeSBwYXRoICAgICAgICAgICAgICAgICAgIChBZ2VudCkKK2lmIHRlc3QgIngkd2l0aF9ycG0iICE9ICJ4bm8iOyB0aGVuCisgIEFDX0NIRUNLX0hFQURFUlMoW3JwbS9ycG10cy5oICAgcnBtL3JwbWZpbGV1dGlsLmhdLCBbXSwgW10sCisJCSAgIFtbI2luY2x1ZGUgPHJwbS9ycG1saWIuaD5dXSkKK2ZpCisKKworIyMKKyMgICBQcmUtcmVxdWlzaXRlIG9uIG90aGVyIGhlYWRlcnM6CisjIworCisjICAgICAgIHJlcXVpcmluZyA8c3lzL3BhcmFtLmg+ICAoTUFYUEFUSExFTikgICAgICAgICAgIChPcGVuQlNEIDMuNCkKKyMgIEFnZW50OgorIworQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc3dhcC5oLCwsCisgICAgQUNfSU5DTFVERVNfREVGQVVMVChbXSkKKyAgICBbCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisgICAgXSkKKworIyAgICAgICByZXF1aXJpbmcgPHN5cy9wYXJhbS5oPiAgICAgICAgICAgICAgICAgICAgICAgICAoRnJlZUJTRCkKKyMKKyMgIENvcmU6ICAgICAgKD8gVGVzdGVkIGFib3ZlPyApCitBQ19DSEVDS19IRUFERVJTKFtzdGRsaWIuaCAgXSwsLAorICAgIFtbCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisgICAgXV0pCisjCisjICBMaWJyYXJ5OgorQUNfQ0hFQ0tfSEVBREVSUyhbbWFsbG9jLmggICAgICAgIG5ldC9pZl9kbC5oICAgc3lzL3N5c2N0bC5oICAgIF0sLCwKKyAgICBbWworI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorICAgIF1dKQorIworIyAgQWdlbnQ6CitBQ19DSEVDS19IRUFERVJTKFttYWxsb2MuaCAgICAgICAgb3NyZWxkYXRlLmggICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW21hY2hpbmUvdHlwZXMuaCBuZXQvaWZfZGwuaCAgIG5ldC9pZl90eXBlcy5oICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL2Rrc3RhdC5oICAgIHN5cy9jb25mLmggICAgc3lzL21idWYuaCAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvbW91bnQuaCAgICAgc3lzL3Byb2MuaCAgICBzeXMvcXVldWUuaCAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9zeXNjdGwuaCAgICBzeXMvdXNlci5oICAgICAgICAgICAgICAgICAgICBdLCwsCisgICAgW1sKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICByZXF1aXJpbmcgPHN5cy9zZW1hLmg+ICAgICAgICAgICAgICAgICAgICAgICAgICAoSVJJWCA2LjUpCisjICBBZ2VudDoKKyMKK0FDX0NIRUNLX0hFQURFUlMoW3N5cy9zZW1hLmhdKQorQUNfQ0hFQ0tfSEVBREVSUyhzeXMvaGFzaGluZy5oLCwsCisgICAgQUNfSU5DTFVERVNfREVGQVVMVChbXSkKKyAgICBbCisjaWYgSEFWRV9TWVNfU0VNQV9ICisjaW5jbHVkZSA8c3lzL3NlbWEuaD4KKyNlbmRpZgorICAgIF0pCisKKyMgICAgICAgcmVxdWlyaW5nIDxzeXMvc29ja2V0Lmg+ICAgICAgICAgICAgICAgICAgICAgICAgKFNvbGFyaXMgOSkKKyMgIEFnZW50OgorIworQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc29ja2V0dmFyLmgsLCwKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKFtdKQorICAgIFsKKyNpZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorICAgIF0pCisKKyMgICAgICAgcmVxdWlyaW5nIF9LTUVNVVNFUiBhbmQgPHN5cy90eXBlcy5oPiAgICAgICAgICAgKEJTRGkzL0lSSVgpCisjICBBZ2VudDoKKyMKK0FDX0NIRUNLX0hFQURFUlMoc3lzL3Zub2RlLmgsLCwKKyAgICBbCisjZGVmaW5lIF9LTUVNVVNFUiAxCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisgICAgXSkKKworIyAgICAgICByZXF1aXJpbmcgPG1hY2hpbmUvdHlwZXMuaD4gICAgICAgICAgICAgICAgICAgICAoTmV0QlNEKQorIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKHN5cy9kaXNrbGFiZWwuaCwsLAorICAgIFtbCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWYgSEFWRV9NQUNISU5FX1RZUEVTX0gKKyNpbmNsdWRlIDxtYWNoaW5lL3R5cGVzLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBVRlMgaGVhZGVycworIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKFt1ZnMvdWZzL2Rpbm9kZS5oIHVmcy91ZnMvcXVvdGEuaCB1ZnMvdWZzL2lub2RlLmggdWZzL2Zmcy9mcy5oXSwsLAorICAgIFtbCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9VRlNfVUZTX0RJTk9ERV9ICisjaW5jbHVkZSA8dWZzL3Vmcy9kaW5vZGUuaD4KKyNlbmRpZgorI2lmIEhBVkVfVUZTX1VGU19RVU9UQV9ICisjaW5jbHVkZSA8dWZzL3Vmcy9xdW90YS5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgcmVxdWlyaW5nIDx2bS92bS5oPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJTRGkyKQorIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKHZtL3N3YXBfcGFnZXIuaCwsLAorICAgIFtbCisjaWYgSEFWRV9WTV9WTV9ICisjaW5jbHVkZSA8dm0vdm0uaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIG5ldGxpbmsvcnRuZXRsaW5rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaW51eCkKKyMgIEFnZW50OgorIworQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvbmV0bGluay5oICBsaW51eC9ydG5ldGxpbmsuaF0sLCwKKyAgICBbWworI2lmIEhBVkVfQVNNX1RZUEVTX0gKKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWYgSEFWRV9MSU5VWF9ORVRMSU5LX0gKKyNpbmNsdWRlIDxsaW51eC9uZXRsaW5rLmg+CisjZW5kaWYKKyAgICBdXSkKKworCisjICAgICAgIE5ldHdvcmsgaGVhZGVycworIyAgQ29yZSBvciBMaWJyYXJ5L0FnZW50L0FwcHM6CisjCitBQ19DSEVDS19IRUFERVJTKFthcnBhL2luZXQuaCAgICAgICAgbmV0L2lmLmggICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQvaW4uaCAgICAgICBuZXRkYi5oICAgICAgICAgICAgICBdLCwsCisgICAgW1sKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19USU1FT1VUX0gKKyNpbmNsdWRlIDxzeXMvdGltZW91dC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TT0NLRVRWQVJfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXR2YXIuaD4KKyNlbmRpZgorI2lmIEhBVkVfQVJQQV9JTkVUX0gKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JTl9TWVNUTV9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVBfSAorI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAorI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVBfSUNNUF9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfVENQX0gKKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX1VEUF9ICisjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9UQ1BfVElNRVJfSAorI2luY2x1ZGUgPG5ldGluZXQvdGNwX3RpbWVyLmg+CisjZW5kaWYKKyAgICBdXSkKKyMKKyMgIEFnZW50OgorQUNfQ0hFQ0tfSEVBREVSUyhbbmV0L2lmX2FycC5oICAgICAgIG5ldC9pZl9taWIuaCAgICAgICAgIG5ldC9pZl92YXIuaCAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQvaWZfZXRoZXIuaCBuZXRpbmV0L2luX3N5c3RtLmggICBuZXRpbmV0L2luX3Zhci5oIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0L2lwLmggICAgICAgbmV0aW5ldC9pcF9pY21wLmggICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbbmV0aW5ldC9pY21wX3Zhci5oIG5ldGluZXQvaXBfdmFyLmggICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQvdGNwLmggICAgICBuZXRpbmV0L3RjcF90aW1lci5oICBuZXRpbmV0L3RjcF92YXIuaF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0L3RjcGlwLmggICAgbmV0aW5ldC91ZHAuaCAgICAgICAgbmV0aW5ldC91ZHBfdmFyLmhdIGRubAorICAgICAgICAgICAgICAgICBbbmV0L3JvdXRlLmggICAgICAgIG5ldGluZXQvaWNtcDYuaCAgICAgICAgICAgICAgICAgICAgICAgXSwsLAorICAgIFtbCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVElNRU9VVF9ICisjaW5jbHVkZSA8c3lzL3RpbWVvdXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUVkFSX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0dmFyLmg+CisjZW5kaWYKKyNpZiBIQVZFX0FSUEFfSU5FVF9ICisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fU1lTVE1fSAorI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVF9JRl9ICisjaW5jbHVkZSA8bmV0L2lmLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVF9JRl9WQVJfSAorI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAorI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVBfSUNNUF9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfVENQX0gKKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX1VEUF9ICisjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9UQ1BfVElNRVJfSAorI2luY2x1ZGUgPG5ldGluZXQvdGNwX3RpbWVyLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSUNNUDZfSAorI2luY2x1ZGUgPG5ldGluZXQvaWNtcDYuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIEtBTUUgKElQdjYpIGhlYWRlcnMKKyMgIEFnZW50OgorIworIyBLQU1FCitBQ19DSEVDS19IRUFERVJTKFtuZXRpbmV0L2lwNi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0Ni9pbjZfdmFyLmggICAgbmV0aW5ldDYvaW42X3BjYi5oICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0Ni9pcDZfdmFyLmggICAgbmV0aW5ldDYvbmQ2LmggICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0Ni90Y3A2LmggICAgICAgbmV0aW5ldDYvdGNwNl9mc20uaCAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0Ni90Y3A2X3RpbWVyLmggbmV0aW5ldDYvdGNwNl92YXIuaF0sLCwKKyAgICBbWworI2lmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1FVRVVFX0gKKyNpbmNsdWRlIDxzeXMvcXVldWUuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVA2X0gKKyNpbmNsdWRlIDxuZXRpbmV0L2lwNi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRfUk9VVEVfSAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgcmVxdWlyaW5nIDxuZXRpbmV0L2luLmg+ICAgICAgICAgICAgICAgICAgICAgICAgKE9wZW5CU0QgMi42KQorIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKG5ldGluZXQvaW5fcGNiLmgsLCwKKyAgICBbWworI2lmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RJTUVPVVRfSAorI2luY2x1ZGUgPHN5cy90aW1lb3V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVFZBUl9ICisjaW5jbHVkZSA8c3lzL3NvY2tldHZhci5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fU1lTVE1fSAorI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JUF9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRfUk9VVEVfSAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorI2VuZGlmCisjaWYgSEFWRV9BUlBBX0lORVRfSAorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2VuZGlmCisgICAgXV0pCisKKyMjCisjICAgUHJlLXJlcXVpc2l0ZSBvbiBzcGVjaWZpYyB0eXBlcworIyMKKworIyAgICAgICBTcGVjaWFsIGhhY2sgdG8gZ2V0IGFyb3VuZCB2YXJpb3VzIHByb2JsZW1zIG9uIG9sZGVyIExpbnV4IGtlcm5lbHMKKyMgICAgICAgKG1ham9yIHVnaCEpCisjICBBZ2VudDoKKyMKK0FDX0NIRUNLX0hFQURFUlMoW2xpbnV4L2V0aHRvb2wuaF0sLCwKK1tbCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KK3R5cGVkZWYgX191NjQgdTY0OyAgICAgICAgIC8qIGhhY2ssIHNvIHdlIG1heSBpbmNsdWRlIGtlcm5lbCdzIGV0aHRvb2wuaCAqLwordHlwZWRlZiBfX3UzMiB1MzI7ICAgICAgICAgLyogZGl0dG8gKi8KK3R5cGVkZWYgX191MTYgdTE2OyAgICAgICAgIC8qIGRpdHRvICovCit0eXBlZGVmIF9fdTggdTg7ICAgICAgICAgICAvKiBkaXR0byAqLworXV0pCisKKyMjCisjICAgSGVhZGVycyByZXF1aXJpbmcgcGFydGljdWxhciBsaWJyYXJpZXMKKyMjCisKKyMgICAgICAgZm9yIEhvc3RSZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNvbGFyaXMgMi54KQorIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKHBrZ2luZm8uaCwKKyAgICBORVRTTk1QX1NFQVJDSF9MSUJTKHBrZ2luZm8sIGFkbSwKKyAgICAgICAgQUNfREVGSU5FKEhBVkVfUEtHSU5GTywgMSwgW2RlZmluZSBpZiB5b3UgaGF2ZSBwa2dpbmZvXSksLCxMTUlCTElCUykpCisKK2Nhc2UgJHRhcmdldF9vcyBpbgorICAgIGFpeCopCisgICAgICAgICMgICAgICAgZm9yIENQVS9tZW1vcnkgc3RhdGlzdGljcyAgICAgICAgICAgICAgIChBSVgpCisgICAgICAgICMgIEFnZW50OgorICAgICAgICAjCisgICAgICAgIEFDX0NIRUNLX0hFQURFUlMobGlicGVyZnN0YXQuaCwKKyAgICAgICAgICAgIE5FVFNOTVBfU0VBUkNIX0xJQlMocGVyZnN0YXRfY3B1X3RvdGFsLCBwZXJmc3RhdCwKKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9QRVJGU1RBVCwgMSwgW29uIGFpeCwgaWYgeW91IGhhdmUgcGVyZnN0YXRdKSwKKyAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoWworCisqKiogVG8gbW9uaXRvciBDUFUvbWVtb3J5IHZhbHVlcyBpbiBBSVggeW91IG5lZWQgdG8gaW5zdGFsbAorKioqIGxpYnBlcmZzdGF0IHdoaWNoIGNhbiBiZSBmb3VuZCBpbiBib3MucGVyZgorXSksLAorICAgICAgICAgICAgICAgIExNSUJMSUJTKSkKKyAgICAgICAgOzsKKyAgICBocHV4KikKKyAgICAgICAgIyAgICAgICBIUC1VWCBhZ2VudCBuZWVkcyBvcGVuX21pYiAgICAgICAoWFhYIC0gbm90IGEgaGVhZGVyIGNoZWNrISkKKyAgICAgICAgIworICAgICAgICBORVRTTk1QX1NFQVJDSF9MSUJTKG9wZW5fbWliLCBubSwKKyAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0xJQk5NLCAxLCBbZGVmaW5lIGlmIHlvdSBoYXZlIGxpYm5tXSksLCxMTUlCTElCUykKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICA7OworZXNhYworCisjICAgICAgIGZvciBNSUItMiBpbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDeWd3aW4gYW5kIE1pbkdXKQorIyAgQ29yZToKKyMKK0FDX0NIRUNLX0hFQURFUlMoW3dpbmRvd3MuaCBpcGhscGFwaS5oXSwgW10sIFtdLCBbCisjaWZkZWYgSEFWRV9XSU5ET1dTX0gKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKK10pCisKKyMgICAgICAgZm9yIE1JQi0yIGluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1pbkdXKQorIyAgQ29yZToKKyMKK2lmIHRlc3QgeCR3aXRoX3NvY2tsaWIgPSB4d2luc29jazI7IHRoZW4KKyAgQUNfQ0hFQ0tfSEVBREVSUyhbd2luc29jay5oIHdpbnNvY2syLmggd3MydGNwaXAuaF0pCitmaQorCisjCisjIGZvciB1Y2Qtc25tcC9sbXNlbnNvcnNNaWIKKyMKK0FDX0NIRUNLX0hFQURFUlMoW3NlbnNvcnMvc2Vuc29ycy5oXSkKKwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZjA1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczEKQEAgLTAsMCArMSw5NSBAQAorIyAtKi0gYXV0b2NvbmYgLSotCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMKKyMgQ2hlY2tzIGZvciBsaWJyYXJpZXMgdGhhdCBhcmUgcnVuCisjIGJlZm9yZSB0aGUgYWdlbnQgbW9kdWxlIHRlc3RzLgorIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKworIyMKKyMgICBSUE0gY2hlY2tzCisjCisjIworQUNfQ0hFQ0tfSEVBREVSUyhycG0vcnBtbGliLmggcnBtL2hlYWRlci5oKQorCitBQ19DSEVDS19IRUFERVIocnBtL3JwbWxpYi5oLHJwbWxpYl9oPXllcyxycG1saWJfaD1ubykKK0FDX0NIRUNLX0hFQURFUihycG0vaGVhZGVyLmgscnBtaGVhZGVyX2g9eWVzLHJwbWhlYWRlcl9oPW5vKQorCitpZiB0ZXN0ICJ4JHJwbWhlYWRlcl9oIiA9ICJ4bm8iIC1vICJ4JHJwbWxpYl9oIiA9ICJ4bm8iIDsgdGhlbgorICBpZiB0ZXN0ICJ4JHdpdGhfcnBtIiA9ICJ4eWVzIiA7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGVpdGhlciB0aGUgUlBNIGhlYWRlciBmaWxlcyBuZWVkZWQgYW5kIHdhcyBzcGVjaWZpY2FsbHkgYXNrZWQgdG8gdXNlIFJQTSBzdXBwb3J0XSkKKyAgZWxzZQorICAgIHdpdGhfcnBtPW5vCisgIGZpCitmaQorCisjCisjIHJwbSBsaWJyYXJpZXMgb25seSBuZWVkZWQgZm9yIHRoZSBob3N0IHJlc291cmNlcyBtaWIgc29mdHdhcmUKKyMgaW5zdGFsbGVkIHRhYmxlcyAob24gbGludXggaW4gcGFydGljdWxhcikKKyMKK2lmIHRlc3QgIngkd2l0aF9ycG0iICE9ICJ4bm8iOyB0aGVuCisgICMgQVJHLiAgUlBNIGlzIGEgcmVhbCBwYWluLgorICAjIEZXSVcgbGlicnBtLmxhLCBsaWJycG1pby5sYSwgYW5kIGxpYnBvcHQubGEgaGF2ZSBjb3JyZWN0IGRlcGVuZGVuY2llcy4KKyAgX3JwbWxpYnM9IiIKKworICAjIHJwbS00LjAueCBuZWVkcyBycG1pby4KKyAgTkVUU05NUF9TRUFSQ0hfTElCUyhycG1HZXRQYXRoLCBycG1pbywsLCAkTE1JQkxJQlMsIF9ycG1saWJzKQorICAKKyAgIyBycG0tNC4wLjMgbGlicnBtZGIgYWN0dWFsbHkgY29udGFpbnMgd2hhdCB3ZSBuZWVkLgorICBORVRTTk1QX1NFQVJDSF9MSUJTKHJwbWRiT3BlbiwgcnBtZGIsLCwgJExNSUJMSUJTLCBfcnBtbGlicykKKyAgIyBub3cgY2hlY2sgZm9yIHJwbSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgbGlicmFyaWVzLgorICBORVRTTk1QX1NFQVJDSF9MSUJTKHJwbVJlYWRDb25maWdGaWxlcywgcnBtLCBbCisgICAgQUNfREVGSU5FKEhBVkVfTElCUlBNLCAxLAorICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcnBtJyBsaWJyYXJ5ICgtbHJwbSkuXSkKKyAgICBMTUlCTElCUz0iJF9ycG1saWJzICRMTUlCTElCUyIKKyAgXSwsICRMTUlCTElCUywgX3JwbWxpYnMpCisKKyAgIyBycG0gNC42IGhhcyBpbmNvbXBhdGlibGUgQVBJLCB0dXJuIG9uIHRoZSBsZWdhY3kgb25lCisgIEFDX0NIRUNLX0RFQ0woW2hlYWRlckdldEVudHJ5XSwKKyAgICA6ICwKKyAgICBBQ19ERUZJTkUoW19SUE1fNF80X0NPTVBBVF0sIFtdLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFJQTSA0LjYgb3IgbmV3ZXIgdG8gdHVybiBvbiBsZWdhY3kgQVBJXSksCisgICAgW1sjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPl1dCisgICkKK2ZpCisKKyMKKyMgZ2V0ZnNzdGF0L2dldHZmc3N0YXQKKyMKK0FDX1NFQVJDSF9MSUJTKGdldGZzc3RhdCwgW25idXRpbF0pCitBQ19DSEVDS19GVU5DUyhnZXRmc3N0YXQpCitBQ19DSEVDS19GVU5DUyhnZXR2ZnNzdGF0KQorQUNfRlVOQ19HRVRNTlRFTlQKKworIworIyBraW5mb19nZXRfY3B1cworIworQUNfU0VBUkNIX0xJQlMoa2luZm9fZ2V0X2NwdXMsIFtraW5mb10pCitBQ19DSEVDS19GVU5DUyhraW5mb19nZXRfY3B1cykKKworIworIyBkaXNrSU9MQXggcmVxdWlyZXMgZXhwIHdoaWNoIG1heSByZXF1aXJlIC1sbQorIworQUNfU0VBUkNIX0xJQlMoZXhwLCBbbV0pCisKKyMKKyMgICBsaWJrdm0KKyMKK05FVFNOTVBfU0VBUkNIX0xJQlMoa3ZtX3JlYWQsIGt2bSwsLCwgTEFHRU5UTElCUykKK05FVFNOTVBfU0VBUkNIX0xJQlMoa3ZtX29wZW5maWxlcywga3ZtLCwsLCBMQUdFTlRMSUJTKQorTkVUU05NUF9TRUFSQ0hfTElCUyhrdm1fZ2V0cHJvY3MsIGt2bSwsLCwgTE1JQkxJQlMpCitORVRTTk1QX1NFQVJDSF9MSUJTKGt2bV9nZXRwcm9jMiwga3ZtLCwsLCBMTUlCTElCUykKK05FVFNOTVBfU0VBUkNIX0xJQlMoa3ZtX2dldHN3YXBpbmZvLCBrdm0sLCwsIExNSUJMSUJTKQorbmV0c25tcF9zYXZlX0xJQlM9IiRMSUJTIgorTElCUz0iJExBR0VOVExJQlMgJExNSUJMSUJTICRMSUJTIgorQUNfQ0hFQ0tfRlVOQ1MoW2t2bV9vcGVuZmlsZXMga3ZtX2dldHByb2NzIGt2bV9nZXRwcm9jMiBrdm1fZ2V0c3dhcGluZm9dKQorTElCUz0iJG5ldHNubXBfc2F2ZV9MSUJTIgorCisjCisjICAgZHluYW1pYyBtb2R1bGUgc3VwcG9ydAorIworTkVUU05NUF9TRUFSQ0hfTElCUyhbZGxvcGVuXSwgW2RsXSwsLCBbJExBR0VOVExJQlMgJExTTk1QTElCU10sIFtMTUlCTElCU10pCituZXRzbm1wX3NhdmVfTElCUz0iJExJQlMiCitMSUJTPSIkTE1JQkxJQlMgJExBR0VOVExJQlMgJExTTk1QTElCUyAkTElCUyIKK0FDX0NIRUNLX0ZVTkNTKFtkbG9wZW5dKQorTElCUz0iJG5ldHNubXBfc2F2ZV9MSUJTIgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNDc1NDUKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczIKQEAgLTAsMCArMSwzODUgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIENoZWNrcyBmb3IgbGlicmFyaWVzIHRoYXQgYXJlIHJ1bgorIyBhZnRlciB0aGUgYWdlbnQgbW9kdWxlIHRlc3RzLgorIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgICBIQVZFX0xJQiBEZWZpbml0aW9ucyB1c2VkIGluIHRoZSBOZXQtU05NUCBjb2RlIGJhc2U6CisjCisjICAgICAgIEhBVkVfTElCQ1JZUFRPOglhcHBzCisjICAgICAgIEhBVkVfTElCUlBNOglhZ2VudAorIworCisjIworIyAgIFNpbXBsZSBjaGVja3M6CisjIworCisjIEFDX0NIRUNLX0xJQihkZXMsIG1haW4pCisjIEFDX0NIRUNLX0xJQihtLCAgIGFzaW4pCisKKyMgICBkbWFsbG9jCisjCitpZiB0ZXN0ICIke3dpdGhfZG1hbGxvYytzZXR9IiA9IHNldDsgdGhlbgorICAgaWYgdGVzdCAiJHdpdGhfZG1hbGxvYyIgPSB5ZXMgLWEgLWQgJHdpdGhfZG1hbGxvYyA7IHRoZW4KKyAgICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJHdpdGhfZG1hbGxvYykKKyAgIGZpCisgICBBQ19DSEVDS19IRUFERVJTKFtkbWFsbG9jLmhdKQorICAgQUNfU0VBUkNIX0xJQlMoW2RtYWxsb2NfbWVzc2FnZV0sIFtkbWFsbG9jXSkKK2ZpCisKKyMgICBFRmVuY2UKKyMgICAgICAgKFRoaXMgdXNlZCB0byBiZSBvbiBieSBkZWZhdWx0IGZvciBkZXZlbG9wZXIgY2hlY2tvdXQpCisjCitpZiB0ZXN0ICJ4JHVzZV9lZmVuY2UiID0gInh5ZXMiOyB0aGVuCisgICAgQUNfU0VBUkNIX0xJQlMoW0VGX0V4aXRdLCBbZWZlbmNlXSkKK2ZpCisKKworIyAgIEVMRiBsaWJyYXJpZXMKKyMgICAgICAgVHlwaWNhbGx5IHVzZWQgZm9yICdubGlzdCcgIChuZWVkZWQgZm9yIHVwdGltZSkKKyMKK2lmIHRlc3QgIngkd2l0aF9lbGYiICE9ICJ4bm8iOyB0aGVuCitjYXNlICR0YXJnZXRfb3MgaW4KKwlsaW51eCopICMgYWRkIGhvc3RzIHdoaWNoIGRvbid0IHVzZSBubGlzdCBoZXJlCisgICAgICAgICAgICAgICAgOzsKKwlpcml4KikgIyBDaGVjayBmb3Igbmxpc3QgaW4gbWxkIChpcml4KQorCQlBQ19DSEVDS19MSUIoZWxmLCBubGlzdCkKKwkJQUNfQ0hFQ0tfTElCKGVsZiwgbmxpc3Q2NCkKKwkJQUNfQ0hFQ0tfTElCKG1sZCwgbmxpc3QpCisJCTs7CisJKikgIyBkZWZhdWx0CisJCUFDX0NIRUNLX0xJQihlbGYsIG5saXN0KQorCQk7OworZXNhYworZmkKKyAKKworIyAgIGxpYnNvY2tldAorIyAgICAgICBOZWVkZWQgZm9yICdzb2NrZXQoMiknICAgICAgICAgICAgICAgICAgICAgICAgICAoU29sYXJpcykKKyMgICAgICAgUG9zc2libHkgYWxzbyBmb3IgJ2dldGhvc3RuYW1lKDMpJyAgICAgICAgICAgICAgKG5vbi1Tb2xhcmlzKQorIyAgICAgICAgICAgKGFsdGVybmF0aXZlbHkgaW4gbGlibnNsICAgICAgICAgICAgICAgICAgICAoU29sYXJpcykKKyMgICAgICAgICAgICBvciBpbiBsaWJ3czJfMzIpICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1pbkdXKQorIworY2FzZSB4JHdpdGhfc29ja2xpYiBpbgoreHdpbnNvY2syKQorICAjICAgbGlid3MyX3czMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTWluR1cpCisgICMKKyAgbmV0c25tcF9zYXZlX0xJQlM9IiRMSUJTIgorICBMSUJTPSIkTElCUyAtbHdzMl8zMiIKKyAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbCisgICAgI2luY2x1ZGUgPHdpbnNvY2syLmg+CisgIF0sIFsKKyAgICBzb2NrZXQoMCwgMCwgMCk7CisgICAgZ2V0aG9zdGJ5bmFtZSgwKTsKKyAgXSldLCBbCisgICAgIyBLZWVwIExJQlMuCisgICAgdHJ1ZQorICBdLCBbCisgICAgIyBSZXN0b3JlIExJQlMgYW5kIGNvbXBsYWluLgorICAgIExJQlM9IiRuZXRzbm1wX3NhdmVfTElCUyIKKyAgICBBQ19NU0dfRVJST1IoW2xpYndzMl8zMiBub3QgZm91bmQuXSkKKyAgXSkKKyAgOzsKKyopCisgIEFDX1NFQVJDSF9MSUJTKHNvY2tldCwgc29ja2V0LCxBQ19NU0dfRVJST1IoW3NvY2tldCgyKSBub3QgZm91bmQuXSkpCisgIEFDX1NFQVJDSF9MSUJTKGdldGhvc3RieW5hbWUsIFtuc2wgc29ja2V0XSkKKyAgQUNfQ0hFQ0tfRlVOQ1MoZ2V0aG9zdGJ5bmFtZSkKKyAgOzsKK2VzYWMKKworCisjICAgbGliaXBobHBhcGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDeWd3aW4gYW5kIE1pbkdXKQorIworbmV0c25tcF9zYXZlX0xJQlM9IiRMSUJTIgorTElCUz0iJExJQlMgLWxpcGhscGFwaSIKK0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWworICAjaW5jbHVkZSA8d2luc29jazIuaD4KKyAgI2luY2x1ZGUgPGlwaGxwYXBpLmg+CitdLCBbCisgIElwUmVuZXdBZGRyZXNzKDApOworXSldLCBbCisgICMgS2VlcCBMSUJTLgorICB0cnVlCitdLCBbCisgICMgUmVzdG9yZSBMSUJTIGFuZCBjb21wbGFpbi4KKyAgTElCUz0iJG5ldHNubXBfc2F2ZV9MSUJTIgorICBjYXNlIHgkd2l0aF9zb2NrbGliIGluCisgIHh3aW5zb2NrMikKKyAgICBBQ19NU0dfRVJST1IoW2xpYmlwaGxwYXBpIG5vdCBmb3VuZC5dKQorICAgIDs7CisgIGVzYWMKK10pCisKKworIyAgIGxpYnJlZ2V4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTWluR1cpCisjCituZXRzbm1wX3NhdmVfTElCUz0iJExJQlMiCitMSUJTPSIkTElCUyAtbHJlZ2V4IgorQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbCisgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgI2luY2x1ZGUgPHJlZ2V4Lmg+CitdLCBbCisgIHJlZ2NvbXAoMCwgMCwgMCk7CitdKV0sIFsKKyAgIyBLZWVwIExJQlMuCisgIHRydWUKK10sIFsKKyAgIyBSZXN0b3JlIExJQlMuCisgIExJQlM9IiRuZXRzbm1wX3NhdmVfTElCUyIKK10pCisKKworIyAgIGxpYnNubXBhcGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTWluR1cpCisjCituZXRzbm1wX3NhdmVfTElCUz0iJExJQlMiCitMSUJTPSIkTElCUyAtbHNubXBhcGkiCitBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsKKyAgI2luY2x1ZGUgPHNubXAuaD4KK10sIFsKKyAgU25tcFV0aWxNZW1BbGxvYygwKTsKK10pXSwgWworICAjIEtlZXAgTElCUy4KKyAgdHJ1ZQorXSwgWworICAjIFJlc3RvcmUgTElCUy4KKyAgTElCUz0iJG5ldHNubXBfc2F2ZV9MSUJTIgorXSkKKworCisjICAga3N0YXQgbGlicmFyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTb2xhcmlzKQorIworTkVUU05NUF9TRUFSQ0hfTElCUyhrc3RhdF9sb29rdXAsIGtzdGF0LAorICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJLU1RBVCwgMSwKKyAgICAgICAgCVtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtzdGF0JyBsaWJyYXJ5ICgtbGtzdGF0KS5dKSwsLAorICAgICAgICBMTkVUU05NUExJQlMpCisKKworIyMKKyMgICBNSUItbW9kdWxlLXNwZWNpZmljIGNoZWNrcworIyMKKworIyAgIGxpYmRldnN0YXQKKyMgICAgICAgIChmb3IgZGlza0lPIE1JQikKKyMKKyMgICBOb3QtVXNlZDogSEFWRV9HRVRERVZTL0hBVkVfREVWU1RBVF9HRVRERVZTCisjCitlY2hvICIgJG1vZHVsZV9saXN0ICIgfCAkR1JFUCAiIHVjZC1zbm1wL2Rpc2tpbyAiID4vZGV2L251bGwKK2lmIHRlc3QgJD8gLWVxIDAgOyB0aGVuCisJTkVUU05NUF9TRUFSQ0hfTElCUyhnZXRkZXZzLCBkZXZzdGF0LAorICAgICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0dFVERFVlMsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICBbZGVmaW5lIGlmIHlvdSBoYXZlIGdldGRldnMoKV0pLCwsTE1JQkxJQlMpCisJTkVUU05NUF9TRUFSQ0hfTElCUyhkZXZzdGF0X2dldGRldnMsIGRldnN0YXQsCisgICAgICAgICAgICAgICAgQUNfREVGSU5FKEhBVkVfREVWU1RBVF9HRVRERVZTLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmluZSBpZiB5b3UgaGF2ZSBkZXZzdGF0X2dldGRldnMoKV0pLCwsTE1JQkxJQlMpCitmaQorCisKKyMgICBMTS1TRU5TT1JTLU1JQiBzdXBwb3J0CisjCitlY2hvICIgJG1vZHVsZV9saXN0ICIgfCAkR1JFUCAtaSAidWNkLXNubXAvbG1zZW5zb3IiID4gL2Rldi9udWxsCitpZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgorICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzZW5zb3JzIHN1cHBvcnRdKQorICAgICAgICBjYXNlICR0YXJnZXRfb3MgaW4KKyAgICAgICAgc29sYXJpcyopCisgICAgICAgICAgICAjICBBZ2VudDogIEhBVkVfUElDTF9ICisgICAgICAgICAgICAjCisgICAgICAgICAgICBBQ19DSEVDS19IRUFERVIocGljbC5oLCBMTUlCTElCUz0iJHtMTUlCTElCU30gLWxwaWNsIiwpCisgICAgICAgICAgICBBQ19DSEVDS19IRUFERVJTKHBpY2wuaCkKKyAgICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgICAjICBOb3QtVXNlZDogIEhBVkVfU0VOU09SU19TRU5TT1JTX0gKKyAgICAgICAgICAgICMKKyAgICAgICAgICAgIEFDX0NIRUNLX0hFQURFUihzZW5zb3JzL3NlbnNvcnMuaCwsCisgICAgICAgICAgICAgICAgW0FDX01TR19FUlJPUihbYXNrZWQgdG8gdXNlIGxtX3NlbnNvcnMgYnV0IEkgY291bGRuJ3QgZmluZCBzZW5zb3JzL3NlbnNvcnMuaF0pXSkKKyAgICAgICAgICAgIE5FVFNOTVBfU0VBUkNIX0xJQlMoc2Vuc29yc19nZXRfZGV0ZWN0ZWRfY2hpcHMsIHNlbnNvcnMsLAorICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW2Fza2VkIHRvIHVzZSBsbV9zZW5zb3JzIGJ1dCBJIGNvdWxkbid0IGZpbmQgLWxzZW5zb3JzXSldLCwKKyAgICAgICAgICAgICAgICBMTUlCTElCUykKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKK2ZpCisKKyMKKyMgbGlibmwgKG5ldGxpbmspCisjCisKK2lmIHRlc3QgIngkd2l0aF9ubCIgIT0gInhubyI7IHRoZW4KKyAgICBjYXNlICR0YXJnZXRfb3MgaW4KKyAgICBsaW51eCopICMgQ2hlY2sgZm9yIGxpYm5sIChsaW51eCkKKwlORVRTTk1QX1NFQVJDSF9MSUJTKAorCSAgICBubF9jb25uZWN0LCBubCwKKwkgICAgW0FDX0NIRUNLX0hFQURFUlMobmV0bGluay9uZXRsaW5rLmgpXSwsLCBMTUlCTElCUykKKyAgICA7OworICAgIGVzYWMKK2ZpCisKKworCisjIworIyAgIE1vcmUgY29tcGxleCBjaGVja3M6CisjIworCisjICAgU2VjdXJpdHkgcmVsYXRlZCBmdW5jdGlvbnMKKyMKK05PTkFHRU5UTElCUz0kTElCUwkgIyBzYXZlIG9sZCBsaWJyYXJpZXMKK1NTSElOU1RBTExCSU5QUk9HUz0iIgoraWYgdGVzdCAieCR0cnlvcGVuc3NsIiAhPSAieG5vIjsgdGhlbgorICAgIGlmIHRlc3QgIngkYXNrZWRvcGVuc3NsIiAhPSAieHllcyIgLWEgIngkYXNrZWRwa2NzIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBBQ19DSEVDS19MSUIocGtjczExLCBDX0luaXRpYWxpemUsCisgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJQS0NTMTEsIDEsCisgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGtjczExJyBsaWJyYXJ5ICgtbHBrY3MxMSkuXSkKKyAgICAgICAgICAgIExJQlBLQ1MxMT0iLWxwa2NzMTEiKQorICAgIGVsc2UgCisgICAgICAgIGlmIHRlc3QgIngkdHJ5cnNhcmVmIiAhPSAieG5vIjsgdGhlbgorICAgICAgICAgICAgQUNfQ0hFQ0tfTElCKHJzYXJlZiwgUlNBUHJpdmF0ZURlY3J5cHQpCisgICAgICAgICAgICBBQ19DSEVDS19MSUIoUlNBZ2x1ZSwgUlNBX1BLQ1MxX1JTQXJlZikKKyAgICAgICAgZmkKKworICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAtbGVheTMyXSkKKyAgICAgICAgbmV0c25tcF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICAgICBMSUJTPSItbGVheTMyIgorICAgICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsKKyAgICAgICAgICAgICAgICAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD5dLAorICAgICAgICAgICAgICAgIFtyZXR1cm4gRVZQX21kNSgpO10pXSwKKyAgICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKHllcyk7IGFjX2N2X2xpYl9lYXkzMl9FVlBfbWQ1PXllczsgQ1JZUFRPPSJlYXkzMiJdLAorICAgICAgICAgICAgW0FDX01TR19SRVNVTFQobm8pXQorICAgICAgICApCisgICAgICAgIExJQlM9IiRuZXRzbm1wX3NhdmVfTElCUyIKKworICAgICAgICBpZiB0ZXN0IHgkQ1JZUFRPID0geDsgdGhlbgorICAgICAgICAgICAgQUNfQ0hFQ0tfTElCKFtjcnlwdG9dLCBbRVZQX21kNV0sIFtDUllQVE89ImNyeXB0byJdKQorICAgICAgICBmaQorCisgICAgICAgIGlmIHRlc3QgeCRDUllQVE8gIT0geDsgdGhlbgorICAgICAgICAgICAgQUNfREVGSU5FKEhBVkVfTElCQ1JZUFRPLCAxLAorICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgT3BlblNTTCBsaWJyYXJ5ICgtbGNyeXB0byBvciAtbGVheTMyKS5dKQorICAgICAgICAgICAgTElCQ1JZUFRPPSItbCR7Q1JZUFRPfSIKKyAgICAgICAgICAgIEFDX0NIRUNLX0xJQigke0NSWVBUT30sIEFFU19jZmIxMjhfZW5jcnlwdCwgCisgICAgICAgICAgICAgICAgQUNfREVGSU5FKEhBVkVfQUVTX0NGQjEyOF9FTkNSWVBULCAxLAorICAgICAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBBRVNfY2ZiMTI4X2VuY3J5cHQnIGZ1bmN0aW9uLl0pKQorCisgICAgICAgICAgICBBQ19DSEVDS19MSUIoJHtDUllQVE99LCBFVlBfTURfQ1RYX2NyZWF0ZSwKKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfRVZQX01EX0NUWF9DUkVBVEVdLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgRVZQX01EX0NUWF9jcmVhdGUnIGZ1bmN0aW9uLl0pCisgICAgICAgICAgICAgICAgQUNfREVGSU5FKFtIQVZFX0VWUF9NRF9DVFhfREVTVFJPWV0sIFtdLAorICAgICAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBFVlBfTURfQ1RYX2Rlc3Ryb3knIGZ1bmN0aW9uLl0pKQorICAgICAgICBmaQorICAgICAgICBpZiBlY2hvICIgJHRyYW5zcG9ydF9yZXN1bHRfbGlzdCAiIHwgJEdSRVAgIlRMUyIgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgQUNfQ0hFQ0tfTElCKHNzbCwgU1NMX2xpYnJhcnlfaW5pdCwKKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJTU0wsIDEsCisgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNzbCcgbGlicmFyeSAoLWxzc2wpLl0pCisgICAgICAgICAgICAgICAgTElCQ1JZUFRPPSIgLWxzc2wgJExJQkNSWVBUTyIsCQorCQlBQ19NU0dfRVJST1IoW1RoZSBEVExTIGJhc2VkIHRyYW5zcG9ydHMgcmVxdWlyZSB0aGUgbGlic3NsIGxpYnJhcnkgZnJvbSBPcGVuU1NMIHRvIGJlIGF2YWlsYWJsZV0pCSwtbGNyeXB0bykKKyAgICAgICAgZmkKKyAgICAgICAgaWYgZWNobyAiICR0cmFuc3BvcnRfcmVzdWx0X2xpc3QgIiB8ICRHUkVQICIgU1NIICIgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgQUNfQ0hFQ0tfTElCKHNzaDIsIGxpYnNzaDJfc2Vzc2lvbl9zdGFydHVwLAorICAgICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0xJQlNTSDIsIDEsCisgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNzaDInIGxpYnJhcnkgKC1sc3NoMikuXSkKKyAgICAgICAgICAgICAgICBMSUJDUllQVE89IiAtbHNzaDIgJExJQkNSWVBUTyIsCisgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtUaGUgU1NIIHRyYW5zcG9ydCByZXF1aXJlcyB0aGUgbGlic3NoMiBsaWJyYXJ5IHRvIGJlIGF2YWlsYWJsZV0pLCkKKyAgICAgICAgICAgIFNTSElOU1RBTExCSU5QUk9HUz1zc2h0b3NubXAKKyAgICAgICAgZmkKKyAgICBmaQorZWxpZiB0ZXN0ICJ4JGFza2VkcGtjcyIgPSAieHllcyI7IHRoZW4KKyAgICBBQ19DSEVDS19MSUIocGtjczExLCBDX0luaXRpYWxpemUsCisgICAgICAgIEFDX0RFRklORShIQVZFX0xJQlBLQ1MxMSkKKyAgICAgICAgTElCUEtDUzExPSItbHBrY3MxMSIpCitmaQorTElCUz0kTk9OQUdFTlRMSUJTCSAjIHJlc3RvcmUgb2xkIGxpYnJhcmllcworQUNfU1VCU1QoU1NISU5TVEFMTEJJTlBST0dTKQorCisKKyMgICBUQ1Agd3JhcHBlciBzdXBwb3J0CisjCitfY3BwZmxhZ3M9IiR7Q1BQRkxBR1N9IgorX2xkZmxhZ3M9IiR7TERGTEFHU30iCitpZiB0ZXN0ICIkd2l0aF9saWJ3cmFwIiAhPSAibm8iOyB0aGVuCisgIGlmIHRlc3QgIiR3aXRoX2xpYndyYXAiICE9ICJ5ZXMiOyB0aGVuCisgICAgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1JJHdpdGhfbGlid3JhcC9pbmNsdWRlIgorICAgIExERkxBR1M9IiR7TERGTEFHU30gLUwkd2l0aF9saWJ3cmFwL2xpYiIKKyAgZmkKKworICBfbGlicz0ke0xJQlN9CisgIEFDX0NIRUNLX0hFQURFUih0Y3BkLmgsICwKKyAgICBBQ19NU0dfRVJST1IoW0Fza2VkIHRvIHVzZSBsaWJ3cmFwIGJ1dCBJIGNvdWxkbid0IGZpbmQgdGNwZC5oLl0pKQorCisgIExJQlM9IiRMSUJTIC1sd3JhcCIKKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgVENQIHdyYXBwZXJzIGxpYnJhcnkgLWx3cmFwXSkKKyAgIyBYWFg6IHNob3VsZCBjaGVjayBmb3IgaG9zdHNfY3RsCisgIEFDX1RSWV9MSU5LKAorICAgIFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgICNpbmNsdWRlIDx0Y3BkLmg+CisgICAgIGludCBhbGxvd19zZXZlcml0eSA9IDA7CisgICAgIGludCBkZW55X3NldmVyaXR5ICA9IDA7XSwKKyAgICBbaG9zdHNfYWNjZXNzKCh2b2lkICopMCldLAorICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKQorICAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfTElCV1JBUCkKKyAgICAgdGVzdCAiJHdpdGhfbGlid3JhcCIgIT0gbm8gLWEgIiR3aXRoX2xpYndyYXAiICE9IHllcyAmJiBfd3JhcGxpYnM9Ii1MJHdpdGhfbGlid3JhcC9saWIiCisgICAgIF93cmFwbGlicz0iJF93cmFwbGlicyAtbHdyYXAiXSwKKyAgICBbQUNfTVNHX1JFU1VMVChbbm9dKQorICAgICAjIExpbnV4IFJlZEhhdCA2LjEgd29uJ3QgbGluayBsaWJ3cmFwIHdpdGhvdXQgbGlibnNsCisgICAgIEFDX0NIRUNLX0ZVTkMoeXBfZ2V0X2RlZmF1bHRfZG9tYWluLCAsCisgICAgICAgQUNfQ0hFQ0tfTElCKG5zbCwgeXBfZ2V0X2RlZmF1bHRfZG9tYWluKSkKKyAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgVENQIHdyYXBwZXJzIGxpYnJhcnkgLWx3cmFwIGxpbmtlZCB3aXRoIC1sbnNsXSkKKyAgICAgQUNfVFJZX0xJTksoCisgICAgICAgWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKwkjaW5jbHVkZSA8dGNwZC5oPgorCWludCBhbGxvd19zZXZlcml0eSA9IDA7CisJaW50IGRlbnlfc2V2ZXJpdHkgID0gMDtdLAorICAgICAgIFtob3N0c19hY2Nlc3MoKHZvaWQgKikwKV0sCisgICAgICAgW0FDX01TR19SRVNVTFQoeWVzKQorCUFDX0RFRklORShORVRTTk1QX1VTRV9MSUJXUkFQKQorCXRlc3QgIiR3aXRoX2xpYndyYXAiICE9IG5vIC1hICIkd2l0aF9saWJ3cmFwIiAhPSB5ZXMgJiYgX3dyYXBsaWJzPSItTCR3aXRoX2xpYndyYXAvbGliIgorCV93cmFwbGlicz0iJF93cmFwbGlicyAtbHdyYXAgLWxuc2wiXSwKKyAgICAgICBbQUNfTVNHX1JFU1VMVChubykKKwlBQ19NU0dfRVJST1IoQXNrZWQgdG8gdXNlIGxpYndyYXAgYnV0IEkgY291bGRuJ3QgZmluZCBpdC4pXSldKQorICBMQUdFTlRMSUJTPSIkX3dyYXBsaWJzIgorICBDUFBGTEFHUz0ke19jcHBmbGFnc30KKyAgTERGTEFHUz0ke19sZGZsYWdzfQorICBMSUJTPSR7X2xpYnN9CitmaQorCisKKyMjCisjICAgbXlzcWwKKyMjCitpZiB0ZXN0ICJ4JHdpdGhfbXlzcWwiID0gInh5ZXMiIDsgdGhlbgorICBBQ19QQVRIX1BST0dTKE1ZU1FMQ09ORklHLG15c3FsX2NvbmZpZykKKyAgdGVzdCAteCAiJE1ZU1FMQ09ORklHIiBcCisJfHwgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCBteXNxbF9jb25maWcgYW5kIHdhcyBzcGVjaWZpY2FsbHkgYXNrZWQgdG8gdXNlIE15U1FMIHN1cHBvcnRdKQorICBNWVNRTF9MSUJTPWAkTVlTUUxDT05GSUcgLS1saWJzYAorICBNWVNRTF9JTkNMVURFUz1gJE1ZU1FMQ09ORklHIC0taW5jbHVkZWAKKyAgX2xpYnM9IiR7TElCU30iCisgIF9jcHBmbGFncz0iJHtDUFBGTEFHU30iCisgIExJQlM9IiR7TElCU30gJHtNWVNRTF9MSUJTfSIKKyAgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9ICR7TVlTUUxfSU5DTFVERVN9IgorICBBQ19DSEVDS19IRUFERVIobXlzcWwuaCwsCisgICAgIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIG15c3FsLmggYW5kIHdhcyBzcGVjaWZpY2FsbHkgYXNrZWQgdG8gdXNlIE15U1FMIHN1cHBvcnRdKV0pCisgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBNWV9JTklUKCkgd29ya3NdKQorICBBQ19MSU5LX0lGRUxTRShbCisgICAgQUNfTEFOR19QUk9HUkFNKAorICAgICAgW1sjaW5jbHVkZSA8bXlfZ2xvYmFsLmg+CisgICAgICAgICNpbmNsdWRlIDxteV9zeXMuaD5dXSwKKyAgICAgIFtbTVlfSU5JVCgibXlfaW5pdF90ZXN0IildXSldLAorICAgICAgW0FDX01TR19SRVNVTFQoeWVzKV0sCisgICAgICBbQUNfTVNHX1JFU1VMVChubykKKyAgICAgICBBQ19ERUZJTkUoW0hBVkVfQlJPS0VOX0xJQk1ZU1FMQ0xJRU5UXSwgMSwKKyAgICAgICAgICAgICAgICAgW0RlZmluZSBpZiB1c2luZyBNWV9JTklUKCkgY2F1c2VzIGEgbGlua2VyIGVycm9yXSldKQorICBDUFBGTEFHUz0iJHtfY3BwZmxhZ3N9IgorICBMSUJTPSIke19saWJzfSIKKyAgQUNfTVNHX0NBQ0hFX0FERChNWVNRTCBUcmFwIExvZ2dpbmc6ICAgICAgICAgZW5hYmxlZCkKK2Vsc2UKKyAgQUNfTVNHX0NBQ0hFX0FERChNWVNRTCBUcmFwIExvZ2dpbmc6ICAgICAgICAgdW5hdmFpbGFibGUpCitmaQorQUNfU1VCU1QoTVlTUUxfTElCUykKK0FDX1NVQlNUKE1ZU1FMX0lOQ0xVREVTKQorICAKKworIyMKKyMgICBOb24tbGlicmFyeSBjaGVja3MKKyMjCisKKyMgbmxpc3QKK0FDX0NIRUNLX0ZVTkNTKG5saXN0IG5saXN0NjQga25saXN0KQorCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzEgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVlYzlhOQotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMQpAQCAtMCwwICsxLDI0IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBNaXNjZWxsYW5lb3VzIGNoZWNrcworIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgQ29tcGlsYXRpb24tcmVsYXRlZAorIyMKKworIyAgICAgICBEeW5hbWljIG1vZHVsZXMgcmVxdWlyZSBQb3NpdGlvbi1JbmRlcGVuZGVudCBDb2RlCisjCSAgICBMSUJfQ0ZMQUdTL0RMTElCUzogdXNlZCBpbiBhZ2VudCBNYWtlZmlsZSBvbmx5CisjCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgd2UgaGF2ZSB0byBidWlsZCBQSUMgY29kZV0pCitlY2hvICIgJG1vZHVsZV9saXN0ICIgfCAkR1JFUCAiIHVjZC1zbm1wL2RsbW9kICIgPi9kZXYvbnVsbAoraWYgdGVzdCAkPyAtZXEgMCA7IHRoZW4KKyAgICBMSUJfQ0ZMQUdTPSIkTElCX0NGTEFHUyAkU0hMSUJfQ0ZMQUdTIgorICAgIEFDX01TR19SRVNVTFQoeWVzKQorZWxzZQorICAgIERMTElCUz0iIgorICAgIEFDX01TR19SRVNVTFQobm8pCitmaQorCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q4NjdiMgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMgpAQCAtMCwwICsxLDg4IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBNaXNjZWxsYW5lb3VzIGNoZWNrcworIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgUGFja2FnZSBjaGFyYWN0ZXJpc3RpY3MKKyMgICAgICAgQXV0aGVudGljYXRpb24vRW5jcnlwdGlvbiBzdXBwb3J0CisjIworCisjICAgICAgIENoZWNrIGZvciBQS0NTMTEKKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnRdKQordXNlb3BlbnNzbD1ubwordXNlcGtjcz1ubworaWYgdGVzdCAieCRhY19jdl9saWJfcGtjczExX0NfSW5pdGlhbGl6ZSIgIT0gInh5ZXMiIC1vICJ4JGFjX2N2X2hlYWRlcl9zZWN1cml0eV9jcnlwdG9raV9oIiAhPSAieHllcyI7IHRoZW4KKyAgICBpZiB0ZXN0ICJ4JGFza2VkcGtjcyIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgQUNfTVNHX0VSUk9SKEFza2VkIHRvIHVzZSBQS0NTMTEgYnV0IEkgY291bGRuJ3QgZmluZCBpdC4pCisgICAgZmkKK2Vsc2UKKyAgICBpZiB0ZXN0ICJ4JGFza2VkcGtjcyIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgdXNlcGtjcz15ZXMKKyAgICBmaQorZmkKKworIyAgICAgICBDaGVjayBmb3IgT3BlblNTTAorIworaWYgdGVzdCAieCRhY19jdl9saWJfY3J5cHRvX0VWUF9tZDUiICE9ICJ4eWVzIiAtYSAieCRhY19jdl9saWJfZWF5MzJfRVZQX21kNSIgIT0gInh5ZXMiIC1vICJ4JGFjX2N2X2hlYWRlcl9vcGVuc3NsX2htYWNfaCIgIT0gInh5ZXMiOyB0aGVuCisgICAgaWYgdGVzdCAieCRhc2tlZG9wZW5zc2wiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIEFDX01TR19FUlJPUihBc2tlZCB0byB1c2UgT3BlblNTTCBidXQgSSBjb3VsZG4ndCBmaW5kIGl0LikKKyAgICBmaQorZWxzZQorICAgIGlmIHRlc3QgIngkYXNrZWRvcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICB1c2VvcGVuc3NsPXllcworICAgIGVsaWYgdGVzdCAieCR0cnlvcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JHVzZXBrY3MiICE9ICJ4eWVzIjsgdGhlbgorICAgICAgICAgICAgdXNlb3BlbnNzbD15ZXMKKyAgICAgICAgZmkKKyAgICBmaQorZmkKKworIyAgICAgICBBdmFpbGFibGUgYXV0aGVudGljYXRpb24vZW5jcnlwdGlvbiBtb2RlcworIworaWYgdGVzdCAieCR1c2VvcGVuc3NsIiAhPSAieG5vIiA7IHRoZW4KKyAgICBhdXRobW9kZXM9Ik1ENSBTSEExIgorICAgIGlmIHRlc3QgIngkZW5hYmxlX3ByaXZhY3kiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9vcGVuc3NsX2Flc19oIiA9ICJ4eWVzIiA7IHRoZW4KKyAgICAgICAgICAgIGVuY3Jtb2Rlcz0iREVTIEFFUyIKKwllbHNlCisJICAgIGVuY3Jtb2Rlcz0iREVTIgorCWZpCisgICAgZWxzZQorICAgICAgICBlbmNybW9kZXM9IltkaXNhYmxlZF0iCisgICAgZmkKKyAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfT1BFTlNTTCkKKyAgICBMTkVUU05NUExJQlM9IiRMTkVUU05NUExJQlMgJExJQkNSWVBUTyIKKyAgICBBQ19NU0dfUkVTVUxUKE9wZW5TU0wgU3VwcG9ydCkKK2VsaWYgdGVzdCAieCR1c2Vwa2NzIiAhPSAieG5vIiA7IHRoZW4KKyAgICBhdXRobW9kZXM9Ik1ENSBTSEExIgorICAgIGlmIHRlc3QgIngkZW5hYmxlX3ByaXZhY3kiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgICBlbmNybW9kZXM9IkRFUyIKKyAgICBlbHNlCisgICAgICAgIGVuY3Jtb2Rlcz0iW2Rpc2FibGVkXSIKKyAgICBmaQorICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9QS0NTMTEsIDEsCisgICAgICBbRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgdGhlIGNvZGVTMTEgbGlicmFyeSAuLi5dKQorICAgIExORVRTTk1QTElCUz0iJExORVRTTk1QTElCUyAkTElCUEtDUzExIgorICAgIEFDX01TR19SRVNVTFQoUEtDUzExIFN1cHBvcnQpCitlbGlmIHRlc3QgIngkZW5hYmxlX21kNSIgIT0gInhubyI7IHRoZW4KKyAgICBhdXRobW9kZXM9Ik1ENSIKKyAgICBlbmNybW9kZXM9IiIKKyAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1KQorICAgIEFDX01TR19SRVNVTFQoSW50ZXJuYWwgTUQ1IFN1cHBvcnQpCitmaQoraWYgdGVzdCAieCRlbmFibGVfbWQ1IiA9ICJ4bm8iOyB0aGVuCisgICAgYXV0aG1vZGVzPWBlY2hvICRhdXRobW9kZXMgfCAkU0VEICdzL01ENSAqLy87J2AKK2ZpCitBQ19TVUJTVChMTkVUU05NUExJQlMpCitBQ19TVUJTVChMQUdFTlRMSUJTKQorCitBQ19NU0dfQ0FDSEVfQUREKEF1dGhlbnRpY2F0aW9uIHN1cHBvcnQ6ICAgICAkYXV0aG1vZGVzKQorQUNfTVNHX0NBQ0hFX0FERChFbmNyeXB0aW9uIHN1cHBvcnQ6ICAgICAgICAgJGVuY3Jtb2RlcykKKworaWYgdGVzdCAieCRhbGxfd2FybmluZ3MiICE9ICJ4IjsgdGhlbgorICAgIEFDX01TR19DQUNIRV9BREQoV0FSTklORzogJGFsbF93YXJuaW5ncykKK2ZpCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzMgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdhZmY0OAotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMwpAQCAtMCwwICsxLDIwIEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBNaXNjZWxsYW5lb3VzIGNoZWNrcworIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgQ29tcGlsYXRpb24gY2hhcmFjdGVyaXN0aWNzCisjIworCisjICAgICAgIEJ5dGUgb3JkZXIKKyMKK2lmIHRlc3QgIiR3aXRoX2VuZGlhbm5lc3MiID0gImJpZyI7IHRoZW4KKyAgICBhY19jdl9jX2JpZ2VuZGlhbj15ZXMKK2VsaWYgdGVzdCAiJHdpdGhfZW5kaWFubmVzcyIgPSAibGl0dGxlIiA7IHRoZW4KKyAgICBhY19jdl9jX2JpZ2VuZGlhbj1ubworZmkKK0FDX0NfQklHRU5ESUFOKCwsCisgICAgW0FDX01TR19FUlJPUihbRmFpbGVkIHRvIGZpZ3VyZSBvdXQgaG9zdCBlbmRpYW5uZXNzLCBwbGVhc2UgdXNlIC0td2l0aC1lbmRpYW5uZXNzIHRvIHNwZWNpZnkgaXQuXSldKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0IGIvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZGRlZDUKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQKQEAgLTAsMCArMSwyODYgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIE1pc2NlbGxhbmVvdXMgT3BlcmF0aW5nLVN5c3RlbSBjaGFyYWN0ZXJpc3RpY3MKKyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKKyMJRGV0ZXJtaW5lIGhvdyB0byB0ZXN0IGZvciBjaGFyYWN0ZXIgZGV2aWNlcworIwlbV2UgYXNzdW1lIHRoYXQgL2Rldi9udWxsIGRvZXMgYWN0dWFsbHkgZXhpc3QhXQorIworaWYgdGVzdCAtYyAvZGV2L251bGw7IHRoZW4KKyAgICBDREVWX1RFU1RfRkxBRz0iLWMiCitlbGlmIHRlc3QgLWYgL2Rldi9udWxsOyB0aGVuCisgICAgQ0RFVl9URVNUX0ZMQUc9Ii1mIgorZWxzZQorICAgIEFDX01TR19XQVJOKFtDYW4ndCByZWxpYWJseSBkZXRlY3QgY2hhcmFjdGVyIGRldmljZXNdKQorICAgICMgSXMgaXQgYWN0dWFsbHkgc2Vuc2libGUgdG8gZmFsbCBiYWNrIG9uICJ0ZXN0IC1mIiA/CisgICAgQ0RFVl9URVNUX0ZMQUc9Ii1mIgorZmkKKworIyAgICAgICBLZXJuZWwgTG9jYXRpb24KKyMJICAgIHVzZWQgaW4gbGlicmFyeS9hZ2VudAorIworQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsb2NhdGlvbiBvZiBzeXN0ZW0ga2VybmVsXSwKKyAgICBhY19jdl9LRVJORUxfTE9DLAorICAgW2FjX2N2X0tFUk5FTF9MT0M9InVua25vd24iCisgICAgZm9yIGkgaW4gL3ZtdW5peCAvaHAtdXggL3N0YW5kL3ZtdW5peCAvZGV2L2tzeW1zIC9rZXJuZWwvdW5peCAva2VybmVsL2dlbnVuaXggL25ldGJzZCAvdW5peCAva2VybmVsIC9ic2QgL21hY2hfa2VybmVsIC9ib290L2tlcm5lbC9rZXJuZWwKKyAgICBkbworICAgICAgICBpZiB0ZXN0ICRDREVWX1RFU1RfRkxBRyAkaTsgdGhlbgorICAgICAgICAgICAgYWNfY3ZfS0VSTkVMX0xPQz0iJGkiCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgIworICAgICMgSW4gcHJpbmNpcGxlLCB0aGlzIHRlc3QgaXMgbWVhbnQgdG8gcHJvdmlkZSBhIGRlZmF1bHQgcGF0aCB0byB0aGUga2VybmVsCisgICAgIyBJbiBwcmFjdGljZSwgdGhlIHRlc3QgaXMgYnJva2VuIGFuZCB0aGUga2VybmVsIHBhdGggaXMgc2V0IHRvICJ1bmtub3duIgorICAgICMKKyAgICAjIE5vdGUgdGhhdCBvbiBjZXJ0YWluIHN5c3RlbXMgKGUuZy4gc29tZSBMaW51eCBkaXN0cmlidXRpb25zKSwKKyAgICAjICAgIGl0IGlzIGltcG9zc2libGUgdG8gcHJlZGljdCB0aGUgbmFtZSBvZiB0aGUga2VybmVsLAorICAgICMgICAgcGFydGljdWxhcmx5IGlmIGl0IGluY2x1ZGVzIHRoZSBrZXJuZWwgdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCBldGMKKyAgICAjCisgICAgIyBTaW5jZSB0aGlzIGRlZmF1bHQgd2lsbCBuZXZlciBhY3R1YWxseSBiZSB1c2VkLCB0aGVuIGRvbid0IHRyeSB0byBzZXQgaXQKKyAgICAjCisgICAgaWYgdGVzdCAkaSA9ICJ1bmtub3duIjsgdGhlbgorICAgICAgICBBQ19NU0dfV0FSTihbQ2FuJ3QgZmluZCBzeXN0ZW0ga2VybmVsLi4uIGhvcGVmdWxseSB0aGlzIHdvbid0IGJlIG5lZWRlZCFdKQorICAgIGZpCitdKQorQUNfREVGSU5FX1VOUVVPVEVEKEtFUk5FTF9MT0MsIiRhY19jdl9LRVJORUxfTE9DIiwgW2xvY2F0aW9uIG9mIFVOSVgga2VybmVsXSkKKworCisjICAgICAgIFN3YXAgZGV2aWNlIExvY2F0aW9uCisjICAgICAgICAgICAoL2Rldi9kbWVtIG9yIC9kZXYvZHJ1bSkKKyMJICAgIHVzZWQgaW4gYWdlbnQgb25seQorIworQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsb2NhdGlvbiBvZiBzd2FwIGRldmljZV0sCisgICAgYWNfY3ZfRE1FTV9MT0MsCisgICBbaWYgdGVzdCAkQ0RFVl9URVNUX0ZMQUcgL2Rldi9kbWVtOyB0aGVuCisgICAgICAgIGFjX2N2X0RNRU1fTE9DPSIvZGV2L2RtZW0iCisgICAgZWxpZiB0ZXN0ICRDREVWX1RFU1RfRkxBRyAvZGV2L2RydW07IHRoZW4KKyAgICAgICAgYWNfY3ZfRE1FTV9MT0M9Ii9kZXYvZHJ1bSIKKyAgICBlbHNlCisgICAgICAgIGFjX2N2X0RNRU1fTE9DPSJub25lIgorICAgIGZpCitdKQorIworIyAgTm90ZSB0aGF0IGl0J3MgT0sgaWYgdGhpcyBkZXZpY2UgaXMgbm90IGZvdW5kCisjCitpZiB0ZXN0ICJ4JGFjX2N2X0RNRU1fTE9DIiAhPSAieG5vbmUiOyB0aGVuCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKERNRU1fTE9DLCIkYWNfY3ZfRE1FTV9MT0MiLCBbbG9jYXRpb24gb2Ygc3dhcCBkZXZpY2VdKQorZmkKKworCisjICAgICAgIE1vdW50IHRhYmxlIExvY2F0aW9uCisjCSAgICB1c2VkIGluIGFnZW50IG9ubHkKKyMKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgbW91bnQgdGFibGUgbG9jYXRpb25dLAorICAgIGFjX2N2X0VUQ19NTlRUQUIsCisgICBbYWNfY3ZfRVRDX01OVFRBQj0iJHt3aXRoX21udHRhYjotdW5rbm93bn0iCisgICAgaWYgdGVzdCAiJGFjX2N2X0VUQ19NTlRUQUIiID0gInVua25vd24iOyB0aGVuCisgICAgICAgIGZvciBpIGluIC9ldGMvbW50dGFiIC9ldGMvbXRhYiAvZXRjL2ZpbGVzeXN0ZW1zIC9kZXYvbW50dGFiCisgICAgICAgIGRvCisgICAgICAgICAgICBpZiB0ZXN0IC1mICRpIC1vIC1jICRpOyB0aGVuCisgICAgICAgICAgICAgICAgYWNfY3ZfRVRDX01OVFRBQj0iJGkiCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgZmkKK10pCitBQ19ERUZJTkVfVU5RVU9URUQoRVRDX01OVFRBQiwiJGFjX2N2X0VUQ19NTlRUQUIiLCBbbG9jYXRpb24gb2YgbW91bnQgdGFibGUgbGlzdF0pCisKKworIyAgICAgICBQcmludGluZworIwkgICAgdXNlZCBpbiBhZ2VudCBvbmx5CisjCitBQ19QQVRIX1BST0coW0xQU1RBVF9QQVRIXSxscHN0YXQpCitpZiB0ZXN0IHgkTFBTVEFUX1BBVEggIT0geDsgdGhlbgorICAgIEFDX0RFRklORV9VTlFVT1RFRChMUFNUQVRfUEFUSCwgIiRMUFNUQVRfUEFUSCIsCisJW1BhdGggdG8gdGhlIGxwc3RhdCBjb21tYW5kXSkKKyAgICBBQ19ERUZJTkUoSEFWRV9MUFNUQVQsIDEsIFtTZXQgaWYgdGhlIGxwc3RhdCBjb21tYW5kIGlzIGF2YWlsYWJsZV0pCitmaQoraWYgdGVzdCAtciAvZXRjL3ByaW50Y2FwOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfUFJJTlRDQVAsIDEsIFtTZXQgaWYgL2V0Yy9wcmludGNhcCBleGlzdHNdKQorZmkKKworCisjICAgICAgIENoZWNrIHBzIGFyZ3MKKyMJICAgIHVzZWQgaW4gYWdlbnQgb25seQorIworQUNfQ0FDSEVfQ0hFQ0soW2ZvciBjb3JyZWN0IGZsYWdzIHRvIHBzXSwKKyAgICAgYWNfY3ZfcHNfZmxhZ3MsCisgICAgIFsKK2lmIHRlc3QgImAoJFBTUFJPRyAtZSAyPiYxKSB8ICRFR1JFUCAnIChwcykgKiQnIHwgYXdrICd7cHJpbnQgJE5GfSdgIiA9ICJwcyIgOyB0aGVuCisgICAgYWNfY3ZfcHNfZmxhZ3M9Ii1lIgorZWxpZiB0ZXN0ICJgKCRQU1BST0cgLWVsIDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KKyAgICBhY19jdl9wc19mbGFncz0iLWVsIgorZWxpZiB0ZXN0ICJgKCRQU1BST0cgYWN4IDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KKyAgICBhY19jdl9wc19mbGFncz0iYWN4IgorZWxpZiB0ZXN0ICJgKCRQU1BST0cgLWFjeCAyPiYxKSB8ICRFR1JFUCAnIChwcykgKiQnIHwgYXdrICd7cHJpbnQgJE5GfSdgIiA9ICJwcyIgOyB0aGVuCisgICAgYWNfY3ZfcHNfZmxhZ3M9Ii1hY3giCitlbGlmIHRlc3QgImAoJFBTUFJPRyAtbyBwaWQsdHQsc3RhdGUsdGltZSx1Y29tbSAyPiYxKSB8ICRFR1JFUCAnIHBzICokJyB8IGF3ayAne3ByaW50ICRORn0nYCIgPSAicHMiIDsgdGhlbgorICAgIGFjX2N2X3BzX2ZsYWdzPSItbyBwaWQsdHQsc3RhdGUsdGltZSx1Y29tbSIKK2VsaWYgdGVzdCAiYCgkUFNQUk9HIGF4IDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KKyAgICBhY19jdl9wc19mbGFncz0iYXgiCitlbGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4Y3lnd2luIjsgdGhlbgorICAgIGFjX2N2X3BzX2ZsYWdzPSItZSIKK2VsaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4gCisgICAgYWNfY3ZfcHNfZmxhZ3M9Ii1lIgorZWxzZQorICAgIEFDX01TR19XQVJOKFtVbmFibGUgdG8gZGV0ZXJtaW5lIHZhbGlkIHBzIGZsYWdzLi4uICBkZWZhdWx0aW5nLi4uXSkKKyAgICBhY19jdl9wc19mbGFncz0iLWFjeCIKK2ZpCitdKQorCitQU0NNRD0iJFBTUFJPRyAkYWNfY3ZfcHNfZmxhZ3MiCitBQ19TVUJTVChQU0NNRCkKK0FDX0RFRklORV9VTlFVT1RFRChQU0NNRCwgIiRQU1BST0cgJGFjX2N2X3BzX2ZsYWdzIiwKKyAgW0NvbW1hbmQgdG8gZ2VuZXJhdGUgcHMgb3V0cHV0LCB0aGUgZmluYWwgY29sdW1uIG11c3QgYmUgdGhlIHByb2Nlc3MKKyAgIG5hbWUgd2l0aE9VVCBhcmd1bWVudHNdKQorCisKKyMjCisjICAgU3lzdGVtL0NvbXBpbGF0aW9uLXJlbGF0ZWQKKyMjCisKKyMgICAgICAgQ2hlY2sgd2hldGhlciBzeXNjdGwoKSBpcyB1c2FibGUKKyMJICAgIHVzZWQgaW4gbGlicmFyeS9hZ2VudAorIworaWYgdGVzdCAkY3Jvc3NfY29tcGlsaW5nID0geWVzOyB0aGVuCisgICAgQUNfTVNHX1dBUk4oW0Nhbid0IGNoZWNrIHN5c2N0bCwgbWFudWFsbHkgZGVmaW5lIE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwgaWYgcGxhdGZvcm0gc3VwcG9ydCBhdmFpbGFibGVdKQorZWxzZQorICAgIEFDX0NBQ0hFX0NIRUNLKFtpZiBzeXNjdGwgY2FuIHJlYWQga2VybmVsIGluZm9ybWF0aW9uXSwKKyAgICAgICAgYWNfY3ZfTkVUU05NUF9DQU5fVVNFX1NZU0NUTCwKKyAgICAgICBbQUNfVFJZX1JVTihbCisjaWYgVElNRV9XSVRIX1NZU19USU1FCisjIGluY2x1ZGUgPHN5cy90aW1lLmg+CisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbHNlCisjIGlmIEhBVkVfU1lTX1RJTUVfSAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZWxzZQorIyAgaW5jbHVkZSA8dGltZS5oPgorIyBlbmRpZgorI2VuZGlmCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorIyBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmIEhBVkVfU1lTX1NZU0NUTF9ICisjIGluY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbmRpZgorCittYWluKCkgeworICBpbnQgICAgICAgICAgICAgICAgIG1pYlsyXTsKKyAgc2l6ZV90ICAgICAgICAgICAgICBsZW47CisgIHN0cnVjdCB0aW1ldmFsIGJvb3R0aW1lOworICAKKyAgbWliWzBdID0gQ1RMX0tFUk47CisgIG1pYlsxXSA9IEtFUk5fQk9PVFRJTUU7CisgIAorICBsZW4gPSBzaXplb2YoYm9vdHRpbWUpOworICBzeXNjdGwobWliLCAyLCAmYm9vdHRpbWUsICZsZW4sIE5VTEwsIE5VTEwpOworICBpZiAoYm9vdHRpbWUudHZfc2VjICE9IDApCisgICAgZXhpdCgwKTsKKyAgZWxzZQorICAgIGV4aXQoMSk7Cit9CisgICAgICAgIF0sCisgICAgICAgIGFjX2N2X05FVFNOTVBfQ0FOX1VTRV9TWVNDVEw9eWVzLAorICAgICAgICBhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMPW5vLAorICAgICAgICBhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMPW5vKV0pCitmaQorCitpZiB0ZXN0ICJ4JGFjX2N2X05FVFNOTVBfQ0FOX1VTRV9TWVNDVEwiID0gInh5ZXMiOyB0aGVuCisgIEFDX0RFRklORShORVRTTk1QX0NBTl9VU0VfU1lTQ1RMLCAxLCBbc3lzY3RsIHdvcmtzIHRvIGdldCBib290dGltZSwgZXRjLi4uXSkKK2ZpCisKKworIyAgIENoZWNrIHdoZXRoZXIgVENQIHRpbWVyIGNvbnN0YW50cyBhcmUgaW5kZWVkIGNvbnN0YW50CisjICAgICAgIG9yIGRlcGVuZCBvbiB0aGUga2VybmVsIGNsb2NrIHRpY2sgJ2h6Jy4gICAgICAgIChGcmVlQlNEIDQueCkKKyMKKyMgICAgICAgSWYgdGhlIGxhdHRlciwgdGhlbiB3ZSB3aWxsIG5lZWQgdG8gaGF2ZSBhIGxvY2FsCisjICAgICAgIHZhcmlhYmxlICdoeicgZGVmaW5lZCBhbmQgd2l0aCBhIHN1aXRhYmxlIHZhbHVlLAorIyAgICAgICB3aGVuZXZlciB3ZSB3YW50IHRvICB1c2Ugb25lIG9uZSBvZiB0aGVzZSAnY29uc3RhbnRzJy4KKyMKKyMgCSAgICB1c2VkIGluIGFnZW50IG9ubHkKKyMKK0FDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIFRDUCB0aW1lcnMgZGVwZW5kIG9uICdoeiddLAorICAgIGFjX2N2X1RDUFRWX05FRURTX0haLAorICAgW0FDX0VHUkVQX0NQUChoeiwKKyAgICAgICAgWworI2luY2x1ZGUgPG5ldGluZXQvdGNwX3RpbWVyLmg+CitUQ1BUVl9TUlRUREZMVAorICAgICAgICBdLAorICAgICAgICBhY19jdl9UQ1BUVl9ORUVEU19IWj15ZXMsCisgICAgICAgIGFjX2N2X1RDUFRWX05FRURTX0haPW5vKV0pCisKK2lmIHRlc3QgIngkYWNfY3ZfVENQVFZfTkVFRFNfSFoiID0gInh5ZXMiOyB0aGVuCisgICAgQUNfREVGSU5FKFRDUFRWX05FRURTX0haLCAxLAorICAgICAgICBbRGVmaW5lIGlmIHRoZSBUQ1AgdGltZXIgY29uc3RhbnRzIGluIDxuZXRpbmV0L3RjcF90aW1lci5oPgorICAgICAgICAgZGVwZW5kIG9uIHRoZSBpbnRlZ2VyIHZhcmlhYmxlICdoeicuICBAPDpARnJlZUJTRCA0LnhAOj5AXSkKK2ZpCisKKworIyAgIENoZWNrIHdoZXRoZXIgSVAgUm91dGUgdGFibGUgaXMgY2FjaGVkICAgICAgICAgICAgICAoU29sYXJpcykKKyMJICAgIHVzZWQgaW4gYWdlbnQgb25seQorIworY2FzZSAkdGFyZ2V0X29zIGluCisgIHNvbGFyaXMqKQorICAgICMgICAgSGVhZGVyIGNoZWNrcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU29sYXJpcyAyLjYvNykKKyAgICAjCisgICAgQUNfQ0hFQ0tfSEVBREVSUyhpbmV0L2NvbW1vbi5oKQorICAgIEFDX0NIRUNLX0hFQURFUlMoaW5ldC9pcC5oLGFjX2luZXRfaXBfaD15ZXMsYWNfaW5ldF9pcF9oPW5vLAorICAgICAgICBBQ19JTkNMVURFU19ERUZBVUxUKFtdKQorICAgICAgICBbCisjaWYgSEFWRV9TWVNfU1RSRUFNX0gKKyNpbmNsdWRlIDxzeXMvc3RyZWFtLmg+CisjZW5kaWYKKyNpZiBIQVZFX0lORVRfQ09NTU9OX0gKKyNpbmNsdWRlIDxpbmV0L2NvbW1vbi5oPgorI2VuZGlmCisgICAgICAgIF0pCisgICAgaWYgdGVzdCAkYWNfaW5ldF9pcF9oID0geWVzIDsgdGhlbgorICAgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIG1pYjJfaXBSb3V0ZUVudHJ5X3QgaW4gaW5ldC9taWIyLmhdLAorICAgICAgICAgICAgYWNfY3ZfbWliMl9pcFJvdXRlRW50cnlfdCwKKyAgICAgICAgICAgW0FDX1RSWV9DT01QSUxFKFsKKyNpZiBIQVZFX0lORVRfTUlCMl9ICisjaW5jbHVkZSA8aW5ldC9taWIyLmg+CisjZW5kaWYKKyAgICAgICAgICAgICAgIF0sWworICBtaWIyX2lwUm91dGVFbnRyeV90IHRlc3RpdDsKKyAgaWYoc2l6ZW9mKHRlc3RpdCkpCisgICAgcmV0dXJuKDApOworICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgIGFjX2N2X21pYjJfaXBSb3V0ZUVudHJ5X3Q9eWVzLAorICAgICAgICAgICAgICAgYWNfY3ZfbWliMl9pcFJvdXRlRW50cnlfdD1ubyldKQorCisgICAgICAgIGlmIHRlc3QgIngkYWNfY3ZfbWliMl9pcFJvdXRlRW50cnlfdCIgPSAieHllcyIgOyB0aGVuCisgICAgICAgICAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBJUkVfQ0FDSEUgaXMgZGVmaW5lZCBpbiBpbmV0L2lwLmhdLAorICAgICAgICAgICAgICAgIGFjX2N2X2lyZV9jYWNoZSwKKyAgICAgICAgICAgICAgIFtBQ19UUllfQ09NUElMRShbCisjaWYgSEFWRV9JTkVUX0lQX0gKKyNpbmNsdWRlIDxpbmV0L2lwLmg+CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICBdLFsKKyAgaW50IHRlc3RpdD1JUkVfQ0FDSEU7CisgIGlmKHRlc3RpdCkKKyAgICByZXR1cm4oMCk7CisgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICBhY19jdl9pcmVfY2FjaGU9eWVzLAorICAgICAgICAgICAgICAgICAgIGFjX2N2X2lyZV9jYWNoZT1ubyldKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBhY19jdl9pcmVfY2FjaGU9bm8KKyAgICAgICAgZmkKKworICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X2lyZV9jYWNoZSIgPSAieHllcyIgOyB0aGVuCisgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9ERUZJTkVEX0lSRV9DQUNIRSxbXSwKKyAgICAgICAgICAgICAgICBbZGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgSVJFX0NBQ0hFIGRlZmluZWQgaW4gPGluZXQvaXAuaD4gaGVhZGVyIGZpbGUuXSkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQUNfTVNHX1dBUk4oW0l0IHNlZW1zIHRoYXQgeW91IGhhdmUgaW5ldC9pcC5oLCBidXQgSVJFX0NBQ0hFIGlzIG5vdCBkZWZpbmVkLiBcCitUaGF0IG1lYW5zIHRoYXQgeW91ciBxdWVyeSB0byBpcFJvdXRlIE1JQiBjb3VsZCBnZW5lcmF0ZSBvdmVyIDIwayByZXN1bHRzISBcCitBbmQgdGhpcyBjYW4gYmUgdmVyeSBzbG93Ll0pCisgICAgICAgIGZpCisgICAgZmkgICAgICAgICAjICJ0ZXN0ICRhY19pbmV0X2lwX2ggPSB5ZXMiCisgICAgOzsKK2VzYWMKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGRiYzcxCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzCkBAIC0wLDAgKzEsMzk3IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBDaGVja3MgZm9yIHByb2dyYW1zCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBTaGVsbCBjaGVja3M6CisjIworCisjICAgICAgIENoZWNrIGZvciAnc2gnIG92ZXJmbG93ICAgICAgICAgICAgICAgICAgICAgICAgIChIUC1VWCkKKyMgICAgICAgICAodGFrZW4gZnJvbSBQZXJsJ3MgY29uZmlndXJlIHNjcmlwdCkKKyMKK0FDX01TR19DSEVDS0lORyhbaWYgSSBuZWVkIHRvIGZlZWQgbXlzZWxmIHRvIGtzaF0pCitpZiB0ZXN0IC1mIC9ocC11eCAtYSAtZiAvYmluL2tzaDsgdGhlbgorICBpZiAoUEFUSD0uOyBhbGlhcyAteCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgQUNfTVNHX1JFU1VMVChubykKKyAgZWxzZQorICAgIEFDX01TR19SRVNVTFQoeWVzKQorICAgIGlmIHRlc3QgIngkMSIgPSAieCI7IHRoZW4KKyAgICAgIGV4ZWMgL2Jpbi9rc2ggJDAKKyAgICBlbHNlCisgICAgICBleGVjIC9iaW4va3NoICQwICIkQCIKKyAgICBmaQorICBmaQorZWxzZQorICBBQ19NU0dfUkVTVUxUKG5vKQorZmkKKworCisjIworIyAgIFN0YW5kYXJkIGFuZCBwYXRoIHByb2dyYW0gY2hlY2tzOgorIyMKKworQUNfUFJPR19FR1JFUAorQUNfUFJPR19HUkVQCitBQ19QUk9HX0lOU1RBTEwKK0FDX1BST0dfTE5fUworQUNfUFJPR19NQUtFX1NFVAorQUNfUFJPR19TRUQKKworQUNfQ0hFQ0tfUFJPR1MoRklORCwgICBmaW5kKQorQUNfQ0hFQ0tfUFJPR1MoV0hPQU1JLCB3aG9hbWkgbG9nbmFtZSwgd2hvYW1pKQorCitBQ19QQVRIX1BST0coQVVUT0NPTkYsICAgIGF1dG9jb25mKQorQUNfUEFUSF9QUk9HKEFVVE9IRUFERVIsICBhdXRvaGVhZGVyKQorQUNfUEFUSF9QUk9HKFtQRVJMUFJPR10sICBwZXJsKQorQUNfUEFUSF9QUk9HKFtQU1BST0ddLCAgICBwcykKK0FDX1BBVEhfUFJPRyhbUFlUSE9OUFJPR10scHl0aG9uKQorCitBQ19QQVRIX1BST0coW1VOQU1FUFJPR10sIHVuYW1lKQorQUNfREVGSU5FX1VOUVVPVEVEKFVOQU1FUFJPRywiJFVOQU1FUFJPRyIsIFtXaGVyZSBpcyB0aGUgdW5hbWUgY29tbWFuZF0pCisKK2lmIHRlc3QgIngkYWNfY3ZfcHJvZ19BVVRPQ09ORiIgPSAieCI7IHRoZW4KKwlBVVRPQ09ORj0iOiIKKwlBQ19TVUJTVChBVVRPQ09ORikKK2ZpCitpZiB0ZXN0ICJ4JGFjX2N2X3Byb2dfQVVUT0hFQURFUiIgPSAieCI7IHRoZW4KKwlBVVRPSEVBREVSPSI6IgorCUFDX1NVQlNUKEFVVE9IRUFERVIpCitmaQorCitNQUtFPSR7TUFLRS0ibWFrZSJ9CiskTUFLRSAtdiAtZiAvZGV2L251bGwgMj4vZGV2L251bGwgfCAkR1JFUCBHTlUgPi9kZXYvbnVsbAoraGF2ZV9nbnVfbWFrZT0kPworCisKKyMjCisjICAgQ29tcGlsYXRpb24tcmVsYXRlZCBwcm9ncmFtIGNoZWNrczoKKyMjCisKK0FDX0xBTkcoW0NdKQorQUNfUFJPR19DQworQUNfUFJPR19DUFAKK0xJTktDQz0ke0xJTktDQy0iJENDIn0KK0FDX1NVQlNUKExJTktDQykKKworQUNfQUlYCitBQ19DX0NPTlNUCitBQ19DX0lOTElORQorCisjICAgICAgIGxpYnRvb2wgc3R1ZmYgZm9yIHNoYXJlZC9zdGF0aWMgbGlicmFyaWVzLgorIworTFRfUFJFUkVRKFsyLjIuNl0pCitMVF9JTklUKFt3aW4zMi1kbGxdKQorQUNfU1VCU1QoTElCVE9PTF9ERVBTKQorCisKKyMjCisjICAgQnVpbGQgZW52aXJvbm1lbnQ6CisjIworCisjICAgZGV2ZWxvcGVyIGJ1aWxkIAorIyAgICAgICAoZW5hYmxlZCBieSBkZWZhdWx0IHdoZW4gYnVpbGRpbmcgZnJvbSBTVk4gY2hlY2tvdXQpCisjCitpZiB0ZXN0ICJ4JGRldmVsb3BlciIgIT0gInhubyIgLWEgLWYgJHNyY2Rpci9yZW1vdmUtZmlsZXM7IHRoZW4KKyAgICBkZXZlbG9wZXI9InllcyIKK2ZpCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZXZlbG9wZXIgZ2NjIGZsYWdzXSkKK2lmIHRlc3QgIngkZGV2ZWxvcGVyIiA9ICJ4eWVzIiAtYSAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCisKKyAgICAjICAgICAgIFdXV1hYWCAtIHN0cmljdCB0eXBlIGNoZWNraW5nCisgICAgIworICAgIERFVkZMQUdTPSItV2FsbCAtV3N0cmljdC1wcm90b3R5cGVzIC1Xd3JpdGUtc3RyaW5ncyAtV2Nhc3QtcXVhbCIKK2Vsc2UKKyAgICBERVZGTEFHUz0iIgorZmkKK0FDX01TR19SRVNVTFQoJERFVkZMQUdTKQorQUNfU1VCU1QoREVWRkxBR1MpCisKKworIyAgIGJ1aWxkaW5nIG91dHNpZGUgc291cmNlIGRpcmVjdG9yeQorIworIyAgICAgICBhKSBlbnN1cmUgYnVpbGQgaW5jbHVkZSBwYXRocyBhcmUgYmVmb3JlIHNvdXJjZQorIyAgICAgICBiKSBlbnN1cmUgR05VIG1ha2UgdXNlcyAndnBhdGgnIGluc3RlYWQgb2YgJ1ZQQVRIJworIworTk9OX0dOVV9WUEFUSD0iVlBBVEggPSIKK0dOVV92cGF0aD0iI3ZwYXRoIgorCisjICAgICAgIGRlZmluZSBpbmNsdWRlIHBhdGhzIHJlbGF0aXZlIHRvIHRvcF9zcmNkaXIKKyMgICAgICAgdHdlYWsgaW5jbHVkZXMgaWYgd2UncmUgYnVpbGRpbmcgb3V0c2lkZSBvZiB0aGUgc291cmNlIGRpcgorIworaWYgdGVzdCAieCRzcmNkaXIiID0gInguIjsgdGhlbgorICAgIFRPUF9JTkNMVURFUz1TUkNfVE9QX0lOQ0xVREVTCisgICAgU05NUExJQl9JTkNMVURFUz1TUkNfU05NUExJQl9JTkNMVURFUworICAgIEFHRU5UX0lOQ0xVREVTPVNSQ19BR0VOVF9JTkNMVURFUworICAgIEhFTFBFUl9JTkNMVURFUz1TUkNfSEVMUEVSX0lOQ0xVREVTCisgICAgTUlCR1JPVVBfSU5DTFVERVM9U1JDX01JQkdST1VQX0lOQ0xVREVTCitlbHNlCisgICAgVE9QX0lOQ0xVREVTPUJMRF9UT1BfSU5DTFVERVMKKyAgICBTTk1QTElCX0lOQ0xVREVTPUJMRF9TTk1QTElCX0lOQ0xVREVTCisgICAgQUdFTlRfSU5DTFVERVM9QkxEX0FHRU5UX0lOQ0xVREVTCisgICAgSEVMUEVSX0lOQ0xVREVTPUJMRF9IRUxQRVJfSU5DTFVERVMKKyAgICBNSUJHUk9VUF9JTkNMVURFUz1CTERfTUlCR1JPVVBfSU5DTFVERVMKKyAgICBpZiB0ZXN0ICRoYXZlX2dudV9tYWtlIC1lcSAwIDsgdGhlbgorICAgICAgICBOT05fR05VX1ZQQVRIPSIjVlBBVEggPSIKKyAgICAgICAgR05VX3ZwYXRoPSJ2cGF0aCIKKyAgICBmaQorZmkKK0FDX1NVQlNUKFRPUF9JTkNMVURFUykKK0FDX1NVQlNUKFNOTVBMSUJfSU5DTFVERVMpCitBQ19TVUJTVChBR0VOVF9JTkNMVURFUykKK0FDX1NVQlNUKEhFTFBFUl9JTkNMVURFUykKK0FDX1NVQlNUKE1JQkdST1VQX0lOQ0xVREVTKQorQUNfU1VCU1QoR05VX3ZwYXRoKQorQUNfU1VCU1QoTk9OX0dOVV9WUEFUSCkKKworCisjIworIyAgIFN5c3RlbS1yZWxhdGVkIGNvbXBpbGF0aW9uIGNoZWNrczoKKyMjCisKKyMgICAgICAgV2hhdCBzeXN0ZW0gYXJlIHdlIGJ1aWxkaW5nIGZvcgorIworQUNfQ0FOT05JQ0FMX1RBUkdFVAorY2hhbmdlcXVvdGUoLCApCitQQVJUSUFMVEFSR0VUT1M9YGVjaG8gJHRhcmdldF9vcyB8IHNlZCAncy9bLS5fXS4qLy8nYAorY2hhbmdlcXVvdGUoWywgXSkKK0FDX01TR19DQUNIRV9BREQoQnVpbGRpbmcgZm9yOiAgICAgICAgICAgICAgICRQQVJUSUFMVEFSR0VUT1MpCisKKworIworIyAgICBXaGV0aGVyIG9yIG5vdCBDeWd3aW4ncyBsZCByZWNvZ25pemVzIHRoZSBmbGFnIC1uby11bmRlZmluZWQuIAorIworCitjYXNlIHgkdGFyZ2V0X29zIGluCit4Y3lnd2luKikKKyAgc2F2ZWRfTERGTEFHUz0kTERGTEFHUworCisgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgbGlua2VyIHN1cHBvcnRzIC1uby11bmRlZmluZWRdKQorICBMREZMQUdTPSIkc2F2ZWRfTERGTEFHUyAtV2wsLW5vLXVuZGVmaW5lZCIKKyAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSxbXSldLAorICAgICAgICAgICAgICAgICBbQUNfTVNHX1JFU1VMVChbeWVzXSk7IGRubAorICAgICAgICAgICAgICAgICAgTERfTk9fVU5ERUZJTkVEPS1uby11bmRlZmluZWRdLAorICAgICAgICAgICAgICAgICBbQUNfTVNHX1JFU1VMVChbbm9dKV0pCisgIAorICBMREZMQUdTPSIkc2F2ZWRfTERGTEFHUyIKKyAgOzsKK2VzYWMKKworQUNfU1VCU1QoTERfTk9fVU5ERUZJTkVEKQorCisKKyMKKyMgICBTb2NrZXQgbGlicmFyeTogZWl0aGVyICdkZWZhdWx0JyAobm9uLU1pbkdXKSBvciAnd2luc29jazInIChNaW5HVykuCisjCitjYXNlIHgkdGFyZ2V0X29zIGluCisgIHhtaW5ndyopCisgICAgd2l0aF9zb2NrbGliPXdpbnNvY2syOzsKKyAgKikKKyAgICB3aXRoX3NvY2tsaWI9ZGVmYXVsdDs7Citlc2FjCisKKworIyAgIENoZWNrIHN5c3RlbSBkZWZpbmUgYmVoYXZpb3VyCisjICAgICAgIERvZXMgIi1VeCAtRHg9eCIgd29yayBhcyBleHBlY3RlZD8KKyMKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byB1bi1kZWZpbmUgdGFyZ2V0IHN5c3RlbSB0b2tlbiAoYmVmb3JlIHJlZGVmaW5pbmcpXSkKK09MRF9DUFBGTEFHUz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9Ii1VJFBBUlRJQUxUQVJHRVRPUyAtRCRQQVJUSUFMVEFSR0VUT1M9JFBBUlRJQUxUQVJHRVRPUyIKKworQUNfRUdSRVBfQ1BQKHllcywKKyAgICBbWworI2lmZGVmICRQQVJUSUFMVEFSR0VUT1MKK3llcworI2VuZGlmCisgICAgXV0sCisgICAgWyAgUEFSVElBTFRBUkdFVEZMQUdTPSItVSRQQVJUSUFMVEFSR0VUT1MgLUQkUEFSVElBTFRBUkdFVE9TPSRQQVJUSUFMVEFSR0VUT1MiCisgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSldLAorICAgIFsgIFBBUlRJQUxUQVJHRVRGTEFHUz0iLUQkUEFSVElBTFRBUkdFVE9TPSRQQVJUSUFMVEFSR0VUT1MiCisgICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKV0pCitDRkxBR1M9IiRDRkxBR1MgJFBBUlRJQUxUQVJHRVRGTEFHUyIKK0NQUEZMQUdTPSIkT0xEX0NQUEZMQUdTIgorCisKKyMgICAgICAgRGV0ZXJtaW5lIGFwcHJvcHJpYXRlIDxuZXQtc25tcC9zeXN0ZW0ve29zfS5oPiBpbmNsdWRlCisjCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzeXN0ZW0gaW5jbHVkZSBmaWxlXSkKK2NoYW5nZXF1b3RlKCwgKQorZmlsZWJhc2U9JHRhcmdldF9vcworIyBpZ25vcmUgYmluYXJ5IGZvcm1hdCBpbmRpY2F0aW9uCitmaWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCAkU0VEICdzL2VsZi8vJ2AKK2ZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8ICRTRUQgJ3MvYW91dC8vJ2AKK2ZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8ICRTRUQgJ3MvZWNvZmYvLydgCitmaWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCAkU0VEICdzL2NvZmYvLydgCit3aGlsZSB0ZXN0ICJ4JGZpbGViYXNlIiAhPSAieCRsYXN0IiAtYSAhIC1mICRzcmNkaXIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vJGZpbGViYXNlLmgKK2RvCisgICAgbGFzdD0kZmlsZWJhc2UKKyAgICBmaWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCAkU0VEICdzL1stLl9dW14tLl9dKiQvLydgCisgICAgaWYgdGVzdCAieCRmaWxlYmFzZSIgPSAieCRsYXN0IjsgdGhlbgorCWZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8ICRTRUQgJ3MvWzAtOV0qJC8vJ2AKKyAgICBmaQorZG9uZQorCitpZiB0ZXN0ICJ4JGZpbGViYXNlIiA9ICJ4JGxhc3QiOyB0aGVuCisgICAgZmlsZWJhc2U9ImdlbmVyaWMiCitmaQorYWNfY3ZfTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFPSJuZXQtc25tcC9zeXN0ZW0vJGZpbGViYXNlLmgiCitjaGFuZ2VxdW90ZShbLCBdKQorQUNfTVNHX1JFU1VMVCgkYWNfY3ZfTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFKQorQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfU1lTVEVNX0lOQ0xVREVfRklMRSwgIiRhY19jdl9ORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUiKQorCisKKyMgICAgICAgRGV0ZXJtaW5lIGFwcHJvcHJpYXRlIDxuZXQtc25tcC9tYWNoaW5lL3tjcHV9Lmg+IGluY2x1ZGUKKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIG1hY2hpbmUtdHlwZSBpbmNsdWRlIGZpbGVdKQorY2hhbmdlcXVvdGUoLCApCitmaWxlYmFzZT0kdGFyZ2V0X2NwdQord2hpbGUgdGVzdCAieCRmaWxlYmFzZSIgIT0gIngkbGFzdCIgLWEgISAtZiAkc3JjZGlyL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS8kZmlsZWJhc2UuaAorZG8KKyAgICBsYXN0PSRmaWxlYmFzZQorICAgIGZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8ICRTRUQgJ3MvWy0uX11bXi0uX10qJC8vJ2AKK2RvbmUKKworaWYgdGVzdCAieCRmaWxlYmFzZSIgPSAieCRsYXN0IjsgdGhlbgorICAgIGZpbGViYXNlPSJnZW5lcmljIgorZmkKK2FjX2N2X05FVFNOTVBfTUFDSElORV9JTkNMVURFX0ZJTEU9Im5ldC1zbm1wL21hY2hpbmUvJGZpbGViYXNlLmgiCitjaGFuZ2VxdW90ZShbLCBdKQorQUNfTVNHX1JFU1VMVChbJGFjX2N2X05FVFNOTVBfTUFDSElORV9JTkNMVURFX0ZJTEVdKQorQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfTUFDSElORV9JTkNMVURFX0ZJTEUsICIkYWNfY3ZfTkVUU05NUF9NQUNISU5FX0lOQ0xVREVfRklMRSIpCisKKworIyMKKyMgICBQbGF0Zm9ybS1zcGVjaWZpYyBjb21waWxhdGlvbiBjaGVja3M6CisjIworCisjICAgUHJlcHJvY2Vzc29yIGNoZWNrczoKKyMKKworIyAgICAgICBNb3JlIHNlbnNpYmxlIHN5c3RlbSBpZGVudGlmaWVyICAgICAgICAgICAgICAgICAoTWluR1cpCisjCitpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIjsgdGhlbgorCUNGTEFHUz0iJENGTEFHUyAtRG1pbmd3MzIiCitmaQorCisjICAgICAgIEhhbmRsZSAuaW4gZmlsZSBleHRlbnNpb24gICAgICAgICAgICAgICAgICAgICAgIChHQ0MpCisjCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBhZGRpdGlvbmFsIGNwcCBmbGFnc10pCitpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyIgLWEgIngkQ1BQIiA9ICJ4JENDIC1FIjsgdGhlbgorICAgIEVYVFJBQ1BQRkxBR1M9Ii14IGMiCitlbHNlCisgICAgRVhUUkFDUFBGTEFHUz0iIgorZmkKKworIyAgICAgICBTb2xhcmlzIGV4dHJhIENQUCBmbGFncyAgICAgICAgICAgICAgICAgICAgICAgICAoU29sYXJpcykKKyMKK2lmIHRlc3QgIngkR0NDIiAhPSAieHllcyI7IHRoZW4KKyAgICBjYXNlICR0YXJnZXRfb3MgaW4KKyAgICAgICAgc29sYXJpcyopIEVYVFJBQ1BQRkxBR1M9IiRFWFRSQUNQUEZMQUdTIC1YcyIgOzsKKyAgICBlc2FjCitmaQorCitBQ19TVUJTVChFWFRSQUNQUEZMQUdTKQorQUNfTVNHX1JFU1VMVCgkRVhUUkFDUFBGTEFHUykKKworCisjICAgQ29tcGlsZXIgY2hlY2tzOgorIworCitBQ19QQVRIX1BST0coW0NDUEFUSF0sJENDKQorY2FzZSAkdGFyZ2V0X29zIGluCisgICAgYnNkaSopCisgICAgICAgICMgICBDaGVjayBmb3IgYnVuZGxlZCBjb21waWxlciAgICAgICAgICAgICAgICAgIChCU0RpKQorICAgICAgICAjCisJaWYgdGVzdCAieCRDQ1BBVEgiID0gIngvdXNyL3VjYi9jYyIgLW8gIngkQ0NQQVRIIiA9ICJ4L3Vzci9iaW4vY2MiOyB0aGVuCisJICAgIEFDX01TR19FUlJPUihbCisKKyoqKiBUaGUgQlNESSAvdXNyL3VjYi9jYyBjb21waWxlciBkb2VzIG5vdCB3b3JrIHdpdGggdGhpcyBwYWNrYWdlLiAgCisqKiogUGxlYXNlIHJ1biBjb25maWd1cmUgd2l0aCAtLXdpdGgtY2M9Z2NjCitdKQorCWZpCisgICAgOzsKKyAgICBzb2xhcmlzKikKKyAgICAgICAgIyAgIENoZWNrIGZvciBidW5kbGVkIGNvbXBpbGVyICAgICAgICAgICAgICAgICAgKFNvbGFyaXMpCisgICAgICAgICMKKwlpZiB0ZXN0ICJ4JENDUEFUSCIgPSAieC91c3IvdWNiL2NjIjsgdGhlbgorCSAgICBBQ19NU0dfRVJST1IoWworCisqKiogVGhlIHNvbGFyaXMgL3Vzci91Y2IvY2MgY29tcGlsZXIgZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgcGFja2FnZS4gIAorKioqIFBsZWFzZSBwdXQgYSBkaWZmZXJlbnQgY29tcGlsZXIgaW4geW91ciBwYXRoIGZpcnN0IG9yIHJ1bgorKioqIGNvbmZpZ3VyZSB3aXRoIC0td2l0aC1jYz1YWCwgd2hlcmUgWFggaXMgdGhlIGNvbXBpbGVyIHlvdSB3YW50IHRvIHVzZS4KK10pCisJZmkKKyAgICA7OworZXNhYworCisKKyMgICBDb21waWxlciBmbGFnczoKKyMKKworIyBUaGUgTmV0LVNOTVAgc291cmNlIGNvZGUgaXMgbm90IHN0cmljdC1hbGlhc2luZyBzYWZlLCBzbyBhZGQKKyMgLWZuby1zdHJpY3QtYWxpYXNpbmcgdG8gJENGTEFHUyBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgaXQuCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tc3RyaWN0LWFsaWFzaW5nXSkKK25ldHNubXBfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCitDRkxBR1M9Ii1mbm8tc3RyaWN0LWFsaWFzaW5nICRDRkxBR1MiCitBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLCBbXSldLCBbQUNfTVNHX1JFU1VMVChbeWVzXSldLCBbCisgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgQ0ZMQUdTPSIkbmV0c25tcF9zYXZlX0NGTEFHUyIKK10pCisKKworIyAgIExpbmtlciBjaGVja3M6CisjCisgICAgCitjYXNlICR0YXJnZXRfb3MgaW4KKyAgICBhaXg0LjIqfGFpeDQuMyp8YWl4NSp8YWl4NiopCisgICAgICAgICMgICBSdW50aW1lIGxpbmtpbmcgZmxhZ3MgICAgICAgICAgICAgICAgICAgICAgIChBSVgpCisgICAgICAgICMKKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGF0IGxpbmtlciBmbGFncyB0byBhZGQgdG8gZW5hYmxlIHJ1bnRpbWUgbGlua2luZyBvbiBBSVhdKQorICAgICAgICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KKyAgICAgICAgICAgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCisgICAgICAgICAgICAgICAgbmV0c25tcF9haXhfcnVudGltZWxpbmtpbmdfZmxhZ3Nfb2s9eWVzCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKyAgICAgICAgaWYgdGVzdCAiWCRuZXRzbm1wX2FpeF9ydW50aW1lbGlua2luZ19mbGFnc19vayIgIT0gIlh5ZXMiOyB0aGVuCisJICAgIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorCSAgICAgICAgbmV0c25tcF9haXhfbGRmbGFncz0iLVdsLC1icnRsIgorCSAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV0c25tcF9haXhfbGRmbGFncz0iLWJydGwiCisJICAgIGZpCisgICAgICAgICAgICBMREZMQUdTPSIkbmV0c25tcF9haXhfbGRmbGFncyAkTERGTEFHUyIKKwkgICAgQUNfTVNHX1JFU1VMVCgkbmV0c25tcF9haXhfbGRmbGFncykKKwllbHNlCisJICAgIEFDX01TR19SRVNVTFQoW25vbmVdKQorCWZpCisJOzsKKworICAgIGRhcndpbjgqfGRhcndpbjkqKQorICAgICAgICAjICAgRmxhdCBOYW1lc3BhY2UgbGlua2luZyAgICAgICAgICAgICAgICAgICAgICAoTWFjIE9TL1gpCisgICAgICAgICMKKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGRhcndpbiBsZCBtaWdodCBuZWVkIC1mbGF0X25hbWVzcGFjZV0pCisJaWYgdGVzdCAteiAiJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCI7IHRoZW4KKwkJTERGTEFHUz0iLWZsYXRfbmFtZXNwYWNlICRMREZMQUdTIgorCQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQorCWVsc2UKKwkJQUNfTVNHX1JFU1VMVChbbm9dKQorCWZpCisJOzsKKworICAgICopCisgICAgICAgIDs7Citlc2FjCisKKworCisjIworIyAgIE5vbi1wcm9ncmFtL2NvbXBpbGF0aW9uIGNoZWNrczoKKyMjCisKKyMgICAgICAgU3Vic3RpdHV0ZSB2ZXJzaW9uIG51bWJlci4KKyMKK0FDX1NVQlNUKFZFUlNJT04sICRQQUNLQUdFX1ZFUlNJT04pCitBQ19NU0dfQ0FDSEVfQUREKE5ldC1TTk1QIFZlcnNpb246ICAgICAgICAgICAkUEFDS0FHRV9WRVJTSU9OKQorCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMgYi9jb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNhNzc3YgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycwpAQCAtMCwwICsxLDcwMyBAQAorIyAtKi0gYXV0b2NvbmYgLSotCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMKKyMgQ2hlY2tzIGZvciBkYXRhIHN0cnVjdHVyZXMgJiBtZW1iZXJzCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBTaW1wbGUgY2hlY2tzOgorIyMKKworIyAgICAgICBzdHJ1Y3QgYXJwaGQKKyMgICBBZ2VudDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBhcnBoZC5hdF9uZXh0XSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19USU1FX0gKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2VuZGlmCisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSUZfRVRIRVJfSAorI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyNlbmRpZgorICAgIF1dKQorCisKKyMgICAgICAgc3RydWN0IGRlc19rc19zdHJ1Y3QKKyMgICAgICAgICAoJ3dlYWtfa2V5JyBpbmRpY2F0ZXMgb2xkZXIgdmVyc2lvbiBvZiBPcGVuU1NMKQorIyAgIExpYnJhcnk6CisjCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9vcGVuc3NsX2Rlc19oIiA9ICJ4eWVzIiA7IHRoZW4KKyAgICBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgZGVzX2tzX3N0cnVjdC53ZWFrX2tleV0sLCxbWworI2lmZGVmIEhBVkVfT1BFTlNTTF9ERVNfSAorI2luY2x1ZGUgPG9wZW5zc2wvZGVzLmg+CisjZW5kaWYKKyAgICBdXSkKK2ZpCisKKyMgICAgICAgc3RydWN0IGRpcmVudAorIyAgICAgICAgIChzZWUgYWxzbyBBQ19TVFJVQ1RfRElSRU5UX0RfVFlQRSkKKyMgICBMaWJyYXJ5OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IGRpcmVudC5kX3R5cGVdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZiBIQVZFX0RJUkVOVF9ICisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3QgZXRodG9vbF9jbWQKKyMKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2xpbnV4X2V0aHRvb2xfaCIgPSAieHllcyIgOyB0aGVuCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgZXRodG9vbF9jbWQuc3BlZWRfaGldLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZmRlZiBIQVZFX0xJTlVYX0VUSFRPT0xfSAorI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KKyNlbmRpZgorICAgIF1dKQorZmkKKworIyAgICAgICBzdHJ1Y3QgaXBzdGF0CisjICAgQWdlbnQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgaXBzdGF0Lmlwc19jYW50ZnJhZywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX2RlbGl2ZXJlZCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX2ZyYWdkcm9wcGVkLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlwc3RhdC5pcHNfZnJhZ21lbnRlZCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX2xvY2Fsb3V0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlwc3RhdC5pcHNfbm9wcm90bywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX25vcm91dGUsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBzdGF0Lmlwc19vZHJvcHBlZCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX29mcmFnbWVudHMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBzdGF0Lmlwc19yZWFzc2VtYmxlZF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KKyNlbmRpZgorICAgIF1dKQorIworIyAgIE5vdC1Vc2VkOgorQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IGlwc3RhdC5pcHNfY2FudGZvcndhcmQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBzdGF0Lmlwc19mcmFndGltZW91dF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBtYnN0YXQKKyMgICBOb3QtVXNlZDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBtYnN0YXQubV9jbHVzdGVycywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYnN0YXQubV9jbGZyZWUsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWJzdGF0Lm1fbWJ1ZnNdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19NQlVGX0gKKyNpbmNsdWRlIDxzeXMvbWJ1Zi5oPgorI2VuZGlmCisgICAgXV0pCisKKyMJc3RydWN0IHV2bWV4cAorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHV2bWV4cC5wZ3N3YXBpbl0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2luY2x1ZGUgPHV2bS91dm1fZXh0ZXJuLmg+CisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IG5saXN0CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgbmxpc3Qubl92YWx1ZSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBubGlzdDY0Lm5fdmFsdWVdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZiBIQVZFX05MSVNUX0gKKyNpbmNsdWRlIDxubGlzdC5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IHNpZ2FjdGlvbgorIyAgIEFnZW50OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHNpZ2FjdGlvbi5zYV9zaWdhY3Rpb25dLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TSUdOQUxfSAorI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBzb2NrYWRkcgorIyAgIExpYnJhcnk6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc29ja2FkZHIuc2FfbGVuLAorICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyLnNhX3VuaW9uLnNhX2dlbmVyaWMuc2FfZmFtaWx5MiwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlLnNzX2ZhbWlseSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlLl9fc3NfZmFtaWx5XSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZWxpZiBkZWZpbmVkKEhBVkVfV0lOU09DSzJfSCkKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9XUzJUQ1BJUF9ICisjaW5jbHVkZSA8d3MydGNwaXAuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgICAgIChzZWUgUkZDIDI1NTMpCisjICAgTGlicmFyeToKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzb2NrYWRkcl9pbjYuc2luNl9zY29wZV9pZF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1dJTlNPQ0syX0gKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9XUzJUQ1BJUF9ICisjaW5jbHVkZSA8d3MydGNwaXAuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBtc2doZHIKKyMgICBMaWJyYXJ5OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IG1zZ2hkci5tc2dfY29udHJvbF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1dJTlNPQ0syX0gKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9XUzJUQ1BJUF9ICisjaW5jbHVkZSA8d3MydGNwaXAuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBzdGF0ZnMKKyMgICBBZ2VudDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0ZnMuZl9mYXZhaWwsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdGZzLmZfZmZyZWUsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdGZzLmZfZmlsZXMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdGZzLmZfZnJzaXplXSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWYgSEFWRV9TWVNfU1RBVEZTX0gKKyNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19NT1VOVF9ICisjaW5jbHVkZSA8c3lzL21vdW50Lmg+CisjZW5kaWYgCisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IHN0YXR2ZnMKKyMgICBBZ2VudDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0dmZzLmZfZmlsZXMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdHZmcy5mX2Zyc2l6ZSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0dmZzLm1udF9kaXJdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZiBIQVZFX1NZU19TVEFURlNfSAorI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NUQVRWRlNfSAorI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3Qgc3dkZXZ0CisjICAgTm90LVVzZWQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3dkZXZ0LnN3X25ibGtzZW5hYmxlZF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX0NPTkZfSAorI2luY2x1ZGUgPHN5cy9jb25mLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3QgdGNwc3RhdAorIyAgIEFnZW50OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHRjcHN0YXQudGNwX3Jjdm1lbWRyb3BdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19USU1FT1VUX0gKKyNpbmNsdWRlIDxzeXMvdGltZW91dC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRJTkVUX1RDUF9ICisjaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUSU5FVF9UQ1BfVElNRVJfSAorI2luY2x1ZGUgPG5ldGluZXQvdGNwX3RpbWVyLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVElORVRfVENQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC90Y3BfdmFyLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3QgdG0KKyMgICBMaWJyYXJ5OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHRtLnRtX2dtdG9mZl0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIFRJTUVfV0lUSF9TWVNfVElNRQorIyBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBpbmNsdWRlIDx0aW1lLmg+CisjZWxzZQorIyBpZiBIQVZFX1NZU19USU1FX0gKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+CisjIGVsc2UKKyMgIGluY2x1ZGUgPHRpbWUuaD4KKyMgZW5kaWYKKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCB1ZHBzdGF0CisjICAgQWdlbnQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgdWRwc3RhdC51ZHBzX2Rpc2NhcmQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwc3RhdC51ZHBzX2Z1bGxzb2NrLAorICAgICAgICAgICAgICAgICAgc3RydWN0IHVkcHN0YXQudWRwc19ub3BvcnQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwc3RhdC51ZHBzX25vcG9ydGJjYXN0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHVkcHN0YXQudWRwc19vcGFja2V0c10sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9VRFBfSAorI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfVURQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC91ZHBfdmFyLmg+CisjZW5kaWYKKyAgICBdXSkKKworCisKKyMjCisjICAgaWZuZXQtcmVsYXRlZCBjaGVja3M6CisjIworCisjICAgICAgIERvZXMgInN0cnVjdCBpZm5ldCIgbmVlZCBfS0VSTkVMIGRlZmluZWQ/ICAgICAgIChJcml4KQorIworQUNfQ0FDSEVfQ0hFQ0soW2lmIF9LRVJORUwgbmVlZHMgdG8gYmUgZGVmaW5lZCBmb3IgaWZfbXR1XSwKKyAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTF0sCisgICAgICAgIFthY19jdl9JRk5FVF9ORUVEU19LRVJORUw9dW5rbm93bgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFsKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUX0lGX1ZBUl9ICisjaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgorI2VuZGlmCisgICAgICAgICAgICAgXSwgW1tzdHJ1Y3QgaWZuZXQgdGVzdDsgdGVzdC5pZl9tdHUgPSAwO11dKSwKKyAgICAgICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMPW5vXSkKKyAgICAgICAgIGlmIHRlc3QgIiRhY19jdl9JRk5FVF9ORUVEU19LRVJORUwiID0gdW5rbm93biA7IHRoZW4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbCisjZGVmaW5lIF9LRVJORUwgMQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKKyNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CisjZW5kaWYKKyAgICAgICAgICAgICBdLCBbW3N0cnVjdCBpZm5ldCB0ZXN0OyB0ZXN0LmlmX210dSA9IDA7XV0pLAorICAgICAgICAgICAgIFthY19jdl9JRk5FVF9ORUVEU19LRVJORUw9eWVzXSkKKyAgICAgICAgIGZpXSkKKworaWYgdGVzdCAieCRhY19jdl9JRk5FVF9ORUVEU19LRVJORUwiID0gInh5ZXMiOyB0aGVuCisgICAgQUNfREVGSU5FKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMLCAxLAorICAgICAgICBbaWZuZXQgbmVlZHMgdG8gaGF2ZSBfS0VSTkVMIGRlZmluZWRdKQorZmkKKworIyAgICAgICBEb2VzICJzdHJ1Y3QgaWZuZXQiIG5lZWQgX0tFUk5FTF9TVFJVQ1RVUkVTIGRlZmluZWQ/ICAgICAgIChEcmFnb25GbHkgMykKKyMKK0FDX0NBQ0hFX0NIRUNLKFtpZiBfS0VSTkVMX1NUUlVDVFVSRVMgbmVlZHMgdG8gYmUgZGVmaW5lZCBmb3IgaWZfbXR1XSwKKyAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTXSwKKyAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTPXVua25vd24KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKKyNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CisjZW5kaWYKKyAgICAgICAgICAgICBdLCBbW3N0cnVjdCBpZm5ldCB0ZXN0OyB0ZXN0LmlmX210dSA9IDA7XV0pXSwKKyAgICAgICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVM9bm9dKQorICAgICAgICAgaWYgdGVzdCAiJGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTIiA9IHVua25vd24gOyB0aGVuCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKFsKKyNkZWZpbmUgX0tFUk5FTF9TVFJVQ1RVUkVTIDEKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUX0lGX1ZBUl9ICisjaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgorI2VuZGlmCisgICAgICAgICAgICAgXSwgW1tzdHJ1Y3QgaWZuZXQgdGVzdDsgdGVzdC5pZl9tdHUgPSAwO11dKV0sCisgICAgICAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTPXllc10pCisgICAgICAgICBmaV0pCisKK2lmIHRlc3QgIngkYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMiID0gInh5ZXMiOyB0aGVuCisgICAgQUNfREVGSU5FKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMsIDEsCisgICAgICAgIFtpZm5ldCBuZWVkcyB0byBoYXZlIF9LRVJORUxfU1RSVUNUVVJFUyBkZWZpbmVkXSkKK2ZpCisKKworIyAgICAgICBzdHJ1Y3QgaWZhZGRyCisjICAgTm90LVVzZWQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgaWZhZGRyLmlmYV9uZXh0XSwsLFsKKyAgICBbCisjaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUworI2RlZmluZSBfS0VSTkVMX1NUUlVDVFVSRVMgMQorI2VuZGlmCisjaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwKKyNkZWZpbmUgS0VSTkVMCisjaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKKyNkZWZpbmUgX0tFUk5FTCAxCisjZW5kaWYKKyNlbmRpZgorICAgIF0KKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19USU1FX0gKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKKyNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3QgaWZuZXQKKyMgICAgICAgICAoQnJva2VuIG9uIEZyZWVCU0QgLSAjZGVmaW5lJ2QgaW4gPG5ldC9pZi5oPikKKyMgICBBZ2VudDogICAoP29yIE5vdC1Vc2VkPykKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBpZm5ldC5pZl9hZGRybGlzdCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9hZGRyaGVhZC50cWhfZmlyc3QsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfYmF1ZHJhdGUsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfYmF1ZHJhdGUuaWZzX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX2lieXRlcywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9pbWNhc3RzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX2lxZHJvcHMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfbGFzdGNoYW5nZS50dl9zZWMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfbGFzdGNoYW5nZS50dl9uc2VjLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX210dSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9ub3Byb3RvLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX29ieXRlcywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9vbWNhc3RzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX3NwZWVkLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX3R5cGUsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfeG5hbWVdLCwsW1sKKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCisjZGVmaW5lIF9LRVJORUxfU1RSVUNUVVJFUyAxCisjZW5kaWYKKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTAorI2RlZmluZSBLRVJORUwKKyNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQorI2RlZmluZSBfS0VSTkVMIDEKKyNlbmRpZgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19USU1FX0gKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKKyNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19RVUVVRV9ICisjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+CisjZW5kaWYKKyNpZmRlZiBsaW51eAorc3RydWN0IGlmbmV0IHsKKwljaGFyCSppZl9uYW1lOwkJLyogbmFtZSwgZS5nLiAiZW4iIG9yICJsbyIgKi8KKwlzaG9ydAlpZl91bml0OwkJLyogc3ViLXVuaXQgZm9yIGxvd2VyIGxldmVsIGRyaXZlciAqLworCXNob3J0CWlmX210dTsJCQkvKiBtYXhpbXVtIHRyYW5zbWlzc2lvbiB1bml0ICovCisJc2hvcnQJaWZfZmxhZ3M7CQkvKiB1cC9kb3duLCBicm9hZGNhc3QsIGV0Yy4gKi8KKwlpbnQJaWZfbWV0cmljOwkJLyogcm91dGluZyBtZXRyaWMgKGV4dGVybmFsIG9ubHkpICovCisJY2hhciAgICBpZl9od2FkZHIgWzZdOwkJLyogZXRoZXJuZXQgYWRkcmVzcyAqLworCWludAlpZl90eXBlOwkJLyogaW50ZXJmYWNlIHR5cGU6IDE9Z2VuZXJpYywKKwkJCQkJICAgMjg9c2xpcCwgZXRoZXI9NiwgbG9vcGJhY2s9MjQgKi8KKwlpbnQJaWZfc3BlZWQ7CQkvKiBpbnRlcmZhY2Ugc3BlZWQ6IGluIGJpdHMvc2VjICovCisKKwlzdHJ1Y3Qgc29ja2FkZHIgaWZfYWRkcjsJLyogaW50ZXJmYWNlJ3MgYWRkcmVzcyAqLworCXN0cnVjdCBzb2NrYWRkciBpZnVfYnJvYWRhZGRyOwkvKiBicm9hZGNhc3QgYWRkcmVzcyAqLworCXN0cnVjdCBzb2NrYWRkciBpYV9zdWJuZXRtYXNrOyAJLyogaW50ZXJmYWNlJ3MgbWFzayAqLworCisJc3RydWN0CWlmcXVldWUgeworCQlpbnQJaWZxX2xlbjsKKwkJaW50CWlmcV9kcm9wczsKKwl9IGlmX3NuZDsJCQkvKiBvdXRwdXQgcXVldWUgKi8KKwlpbnQJaWZfaWJ5dGVzOwkJLyogb2N0ZXRzIHJlY2VpdmVkIG9uIGludGVyZmFjZSAqLworCWludAlpZl9pcGFja2V0czsJCS8qIHBhY2tldHMgcmVjZWl2ZWQgb24gaW50ZXJmYWNlICovCisJaW50CWlmX2llcnJvcnM7CQkvKiBpbnB1dCBlcnJvcnMgb24gaW50ZXJmYWNlICovCisgICAgICAgIGludCAgICAgaWZfaXFkcm9wczsgICAgICAgICAgICAgLyogaW5wdXQgcXVldWUgb3ZlcnJ1bnMgKi8KKwlpbnQJaWZfb2J5dGVzOwkJLyogb2N0ZXRzIHNlbnQgb24gaW50ZXJmYWNlICovCisJaW50CWlmX29wYWNrZXRzOwkJLyogcGFja2V0cyBzZW50IG9uIGludGVyZmFjZSAqLworCWludAlpZl9vZXJyb3JzOwkJLyogb3V0cHV0IGVycm9ycyBvbiBpbnRlcmZhY2UgKi8KKwlpbnQJaWZfY29sbGlzaW9uczsJCS8qIGNvbGxpc2lvbnMgb24gY3NtYSBpbnRlcmZhY2VzICovCisvKiBlbmQgc3RhdGlzdGljcyAqLworCXN0cnVjdAlpZm5ldCAqaWZfbmV4dDsKK307CisjZW5kaWYKKyAgICBdXSkKKworCisjIworIyAgIHJ0ZW50cnkgc3RydWN0dXJlIGNoZWNrczoKKyMjCisKKyMgQ2hlY2sgc3RydWN0IHJ0ZW50cnkgZm9yIGNvbW1vbiBmaWVsZHMKKyMgICBBZ2VudDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBydGVudHJ5LnJ0X2RzdCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X2hhc2gsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF9uZXh0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfcmVmY250LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfdW5pdCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X3VzZV0sLCwKKyAgICBbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUworI2RlZmluZSBfS0VSTkVMX1NUUlVDVFVSRVMgMQorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTAorI2RlZmluZSBLRVJORUwKKyNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQorI2RlZmluZSBfS0VSTkVMIDEKKyNlbmRpZgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI3VuZGVmIEtFUk5FTAorI3VuZGVmIF9LRVJORUwKKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUX1JPVVRFX0gKKyNpbmNsdWRlIDxuZXQvcm91dGUuaD4KKyNlbmRpZgorICAgIF0pCisKKworIyBDaGVjayBmb3IgQlNEIDQuMyB2cyA0LjQgc3RydWN0IHJ0ZW50cnkKKyMKK0FDX0NBQ0hFX0NIRUNLKFt0eXBlIG9mIHJ0ZW50cnkgc3RydWN0dXJlXSwKKyAgICBbYWNfY3ZfUlRFTlRSWV9UWVBFXSwKKyAgICBbCisgICAgICAgICMgQlNEIDQuNCBjb21wYXRpYmxlIHN0cnVjdHVyZQorICAgICAgICAjICAgICgncnRfbm9kZXMnIGFycmF5KQorICAgICAgICAjCisgICAgICAgIEFDX1RSWV9DT01QSUxFKFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCisjZGVmaW5lIF9LRVJORUxfU1RSVUNUVVJFUyAxCisjZW5kaWYKKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTAorI2RlZmluZSBLRVJORUwKKyNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQorI2RlZmluZSBfS0VSTkVMIDEKKyNlbmRpZgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI3VuZGVmIEtFUk5FTAorI3VuZGVmIF9LRVJORUwKKyNpbmNsdWRlIDxuZXQvcm91dGUuaD4KKyAgICAgICAgXSxbCisKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9EU1QKKyNkZWZpbmUgcnRfZHN0IHJ0X25vZGVzLT5ybl9rZXkKKyNlbmRpZgorCisgIHN0cnVjdCBydGVudHJ5IHJ0OyAKKyAgcnQucnRfbm9kZXNbMF0ucm5fZmxhZ3MgPSAxOworICBydC5ydF9kc3Q7CisgICAgICAgIF0sIGFjX2N2X1JURU5UUllfVFlQRT0iQlNELTQuNCIpCisKKyAgICAgICAgaWYgdGVzdCAieCRhY19jdl9SVEVOVFJZX1RZUEUiID0gIngiOyB0aGVuCisgICAgICAgICMgQlNEIDQuMyBjb21wYXRpYmxlIHN0cnVjdHVyZQorICAgICAgICAjICAgICgncnRfaGFzaCcpCisgICAgICAgICMKKyAgICAgICAgQUNfVFJZX0NPTVBJTEUoWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMKKyNkZWZpbmUgX0tFUk5FTF9TVFJVQ1RVUkVTIDEKKyNlbmRpZgorI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMCisjZGVmaW5lIEtFUk5FTAorI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCisjZGVmaW5lIF9LRVJORUwgMQorI2VuZGlmCisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjdW5kZWYgS0VSTkVMCisjdW5kZWYgX0tFUk5FTAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorICAgICAgICBdLFsKKworc3RydWN0IHJ0ZW50cnkgcnQ7IAorcnQucnRfaGFzaDsKKyAgICAgICAgXSwgYWNfY3ZfUlRFTlRSWV9UWVBFPSJCU0QtNC4zIikKKyAgICAgICAgZmkKKworICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieCI7IHRoZW4KKyAgICAgICAgIyBOZWl0aGVyIEJTRCA0LjMgbm9yIDQuNCBjb21wYXRpYmxlIHN0cnVjdHVyZQorICAgICAgICAjCisgICAgICAgICAgICBhY19jdl9SVEVOVFJZX1RZUEU9InVua25vd24iCisgICAgICAgIGZpCisgICAgXSkKKworaWYgdGVzdCAieCRhY19jdl9SVEVOVFJZX1RZUEUiID0gInhCU0QtNC40IjsgdGhlbgorICAgIEFDX0RFRklORShSVEVOVFJZXzRfNCwgMSwgW1VzZSBCU0QgNC40IHJvdXRpbmcgdGFibGUgZW50cmllcz9dKQorZmkKKworIyAgICBDaGVjayBmb3Igb3J0ZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQWxwaGEpCisjCitpZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieHVua25vd24iOyB0aGVuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzdHJ1Y3QgcnRlbnRyeV0sCisgICAgICAgIFthY19jdl9zdHJ1Y3RfcnRlbnRyeV0sCisgICAgICAgIFtBQ19FR1JFUF9DUFAob3J0ZW50cnksCisgICAgICAgICAgICBbCisjZGVmaW5lIEtFUk5FTAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIFthY19jdl9zdHJ1Y3RfcnRlbnRyeT1vcnRlbnRyeV0sCisgICAgICAgICAgICBbYWNfY3Zfc3RydWN0X3J0ZW50cnk9cnRlbnRyeSBdKQorICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X3N0cnVjdF9ydGVudHJ5IiA9ICJ4cnRlbnRyeSIgOyB0aGVuCisgICAgICAgICAgICAgYWNfY3Zfc3RydWN0X3J0ZW50cnk9InJ0ZW50cnkiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBhY19jdl9zdHJ1Y3RfcnRlbnRyeT0ib3J0ZW50cnkiCisgICAgICAgIGZpCisgICAgXSkKK2Vsc2UKKyAgICBSVEVOVFJZX1RZUEU9InJ0ZW50cnkiCisgICAgYWNfY3Zfc3RydWN0X3J0ZW50cnk9InJ0ZW50cnkiCitmaQorCitpZiB0ZXN0ICJ4JGFjX2N2X3N0cnVjdF9ydGVudHJ5IiA9ICJ4IjsgdGhlbgorICAgIGFjX2N2X3N0cnVjdF9ydGVudHJ5PXJ0ZW50cnkKK2ZpCitBQ19ERUZJTkVfVU5RVU9URUQoUlRFTlRSWSxzdHJ1Y3QgJHthY19jdl9zdHJ1Y3RfcnRlbnRyeX0sCisgICAgICAgIFtkZWZpbmUgcnRlbnRyeSB0byBvcnRlbnRyeSBvbiBTWVNWIG1hY2hpbmVzIChhbHBoYXMpXSkKKwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfaXB2Nl90eXBlcyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X2lwdjZfdHlwZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWExYjNmYgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X2lwdjZfdHlwZXMKQEAgLTAsMCArMSwyMjAgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIENoZWNrcyBmb3IgdHlwZXMKKyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIworIyAgIFN0YW5kYXJkIGNoZWNrczoKKyMjCisKK0FDX0NIRUNLX1NJWkVPRihzaG9ydCkKK0FDX0NIRUNLX1NJWkVPRihpbnQpCitBQ19DSEVDS19TSVpFT0YobG9uZykKK0FDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcpCitBQ19DSEVDS19TSVpFT0YoaW50bWF4X3QpCisKK0FDX1RZUEVfSU5UOF9UCitBQ19UWVBFX0lOVDE2X1QKK0FDX1RZUEVfSU5UMzJfVAorQUNfVFlQRV9JTlQ2NF9UCitBQ19UWVBFX0lOVE1BWF9UCitBQ19UWVBFX1VJTlQ4X1QKK0FDX1RZUEVfVUlOVDE2X1QKK0FDX1RZUEVfVUlOVDMyX1QKK0FDX1RZUEVfVUlOVDY0X1QKK0FDX1RZUEVfVUlOVE1BWF9UCitBQ19UWVBFX0lOVFBUUl9UCitBQ19UWVBFX1VJTlRQVFJfVAorCisjIworIyAgIE90aGVyIHR5cGUgY2hlY2tzOgorIyMKKworQUNfQ0hFQ0tfVFlQRVMoW29mZjY0X3RdKQorQUNfQ0hFQ0tfVFlQRVMoW25mZHNfdF0sLCxbI2luY2x1ZGUgPHN5cy9wb2xsLmg+XSkKKworIyAgIFNvbGFyaXMgc3BlY2lmaWMgY2hlY2tzCisjICAgICAgICh0YWtlbiBmcm9tIFBlcmwncyBjb25maWd1cmUgc2NyaXB0KQorIworQUNfQ0hFQ0tfVFlQRVMoW0NvdW50ZXI2NF0sLCxbI2luY2x1ZGUgPGluZXQvbWliMi5oPl0pCitBQ19DSEVDS19UWVBFUyhbbWliMl9pcElmU3RhdHNFbnRyeV90XSwsLFsjaW5jbHVkZSA8aW5ldC9taWIyLmg+XSkKKworIyAgIE4uQjogIFRoZSBhYm92ZSBjaGVja3MgY291bGQgc2FmZWx5IGJlIG1vdmVkIHRvCisjICAgICAgICAgdGhlIGxhdGVyICdjb25maWdfdHlwZXMnIHN1Yi1zY3JpcHQKKyMKKworCisjIworIyAgIERldGVybWluZSB0aGUgSVB2NiBzdGFjayB0eXBlCisjIworCisjICAgICAgIFRoZXNlIGNoZWNrcyBhbHNvIHNldCB0aGUgTElCUy9DRkxBR1MgdmFyaWFibGVzLAorIyAgICAgICB3aGljaCBtYXkgYmUgbmVlZGVkIGZvciBzdWJzZXF1ZW50IGZ1bmN0aW9uIHRlc3RzCisjCisKK2lmIHRlc3QgIngkZW5hYmxlX2lwdjYiID0gInh5ZXMiOyB0aGVuCisJdjZ0eXBlPXVua25vd24KKwl2NmxpYj1ub25lCisJdjZ0cnlsaWJjPW5vCisKKwlBQ19NU0dfQ0hFQ0tJTkcoW1tpcHY2IHN0YWNrIHR5cGVdXSkKKwlmb3IgaSBpbiB2NmQgdG9zaGliYSBrYW1lIGlucmlhIHpldGEgbGludXgtZ2xpYmMgbGludXgtaW5ldDYgY3lnd2luIHdpbnNvY2syIGdlbmVyaWM7IGRvCisJCWNhc2UgJGkgaW4KKwkJdjZkKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPC91c3IvbG9jYWwvdjYvaW5jbHVkZS9zeXMvdHlwZXMuaD4KKyNpZmRlZiBfX1Y2RF9fCit5ZXMKKyNlbmRpZl0sCisJCQkJW3Y2dHlwZT0kaTsgdjZsaWI9djY7CisJCQkJdjZsaWJkaXI9L3Vzci9sb2NhbC92Ni9saWI7CisJCQkJQ0ZMQUdTPSItSS91c3IvbG9jYWwvdjYvaW5jbHVkZSAkQ0ZMQUdTIl0pCisJCQk7OworCQl0b3NoaWJhKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2lmZGVmIF9UT1NISUJBX0lORVQ2Cit5ZXMKKyNlbmRpZl0sCisJCQkJW3Y2dHlwZT0kaTsgdjZsaWI9aW5ldDY7CisJCQkJdjZsaWJkaXI9L3Vzci9sb2NhbC92Ni9saWI7CisJCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQorCQkJOzsKKwkJa2FtZSkKKwkJCUFDX0VHUkVQX0NQUCh5ZXMsIFsKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjaWZkZWYgX19LQU1FX18KK3llcworI2VuZGlmXSwKKwkJCQlbdjZ0eXBlPSRpOyB2NmxpYj1pbmV0NjsKKwkJCQl2NmxpYmRpcj0vdXNyL2xvY2FsL3Y2L2xpYjsKKwkJCQl2NnRyeWxpYmM9eWVzOworCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKKwkJCTs7CisJCWlucmlhKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpZmRlZiBJUFY2X0lOUklBX1ZFUlNJT04KK3llcworI2VuZGlmXSwKKwkJCQlbdjZ0eXBlPSRpOworCQkJCXY2bGliPWR1bW15OworCQkJCXY2bGliZGlyPW5vbmU7CisJCQkJdjZ0cnlsaWJjPXllczsKKwkJCQlDRkxBR1M9Ii1ETkVUU05NUF9FTkFCTEVfSVBWNiAkQ0ZMQUdTIl0pCisJCQk7OworCQl6ZXRhKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2lmZGVmIF9aRVRBX01JTkFNSV9JTkVUNgorQQoreWVzCisjZW5kaWZdLAorCQkJCVt2NnR5cGU9JGk7IHY2bGliPWluZXQ2OworCQkJCXY2bGliZGlyPS91c3IvbG9jYWwvdjYvbGliOworCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKKwkJCTs7CisJCWxpbnV4LWdsaWJjKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICgoX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDEpIHx8IChfX0dMSUJDXyA+IDIpKQoreWVzCisjZW5kaWZdLAorCQkJCVt2NnR5cGU9JGk7CisJCQkJdjZsaWI9ZHVtbXk7CisJCQkJdjZsaWJkaXI9bm9uZTsKKwkJCQl2NnRyeWxpYmM9eWVzOworCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKKwkJCTs7CisJCWxpbnV4LWluZXQ2KQorCQkJaWYgdGVzdCAtZCAvdXNyL2luZXQ2OyB0aGVuCisJCQkJdjZ0eXBlPSRpCisJCQkJdjZsaWI9aW5ldDYKKwkJCQl2NmxpYmRpcj0vdXNyL2luZXQ2L2xpYgorCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiCisJCQlmaQorCQkJOzsKKwkJY3lnd2luKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpZmRlZiBfQ1lHV0lOX0lONl9ICit5ZXMKKyNlbmRpZl0sCisJCQkJW3Y2dHlwZT0kaTsKKwkJCQl2NmxpYj1kdW1teTsKKwkJCQl2NmxpYmRpcj1ub25lCisJCQkJdjZ0cnlsaWJjPXllczsKKwkJCQlDRkxBR1M9Ii1ETkVUU05NUF9FTkFCTEVfSVBWNiAkQ0ZMQUdTIl0pCisgICAgICAgICAgICAgICAgICAgICAgIDs7CisJCXdpbnNvY2syKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPHdzMnRjcGlwLmg+CisjaWYgZGVmaW5lZChfV1MyVENQSVBfSCkKK3llcworI2VuZGlmXSwKKwkJCQlbdjZ0eXBlPSRpOworCQkJCXY2bGliPWR1bW15OworCQkJCXY2bGliZGlyPW5vbmUKKwkJCQl2NnRyeWxpYmM9eWVzOworCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKKwkJCTs7CisJCWN5Z3dpbikKKwkJCUFDX0VHUkVQX0NQUCh5ZXMsIFsKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjaWZkZWYgX0NZR1dJTl9JTjZfSAoreWVzCisjZW5kaWZdLAorCQkJCVt2NnR5cGU9JGk7CisJCQkJdjZsaWI9ZHVtbXk7CisJCQkJdjZsaWJkaXI9bm9uZQorCQkJCXY2dHJ5bGliYz15ZXM7CisJCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQorICAgICAgICAgICAgICAgICAgICAgICA7OworCQlnZW5lcmljKQorICAgICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbW3Bvc3Rwb25lZF1dKQorCQkJQUNfQ0hFQ0tfTUVNQkVSKFtzdHJ1Y3Qgc29ja2FkZHJfaW42LnNpbjZfYWRkcl0sLCxbCitBQ19JTkNMVURFU19ERUZBVUxUKCkKK1sjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorXV0pCisJICAgICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbW2lwdjYgc3RhY2sgdHlwZV1dKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAieCRhY19jdl9oYXZlX3N0cnVjdF9zb2NrYWRkcl9pbjZfc2luNl9hZGRyIiA9ICJ4eWVzIjsgdGhlbgorCQkJCXY2dHlwZT0kaQorCQkJCXY2bGliPWR1bW15CisJCQkJdjZsaWJkaXI9bm9uZQorCQkJCXY2dHJ5bGliYz15ZXMKKwkJCQlDRkxBR1M9Ii1ETkVUU05NUF9FTkFCTEVfSVBWNiAkQ0ZMQUdTIgorICAgICAgICAgICAgICAgICAgICAgICAgZmkKKwkJCTs7CisJCWVzYWMKKwkJaWYgdGVzdCAiJHY2dHlwZSIgIT0gInVua25vd24iOyB0aGVuCisJCQlicmVhaworCQlmaQorCWRvbmUKKworCWlmIHRlc3QgIiR2NmxpYiIgIT0gIm5vbmUiOyB0aGVuCisJCWlmIHRlc3QgLWQgJHY2bGliZGlyIC1hIC1mICR2NmxpYmRpci9saWIkdjZsaWIuYTsgdGhlbgorCQkJTElCUz0iLUwkdjZsaWJkaXIgLWwkdjZsaWIgJExJQlMiCisJCQllbmFibGVfaXB2Nj0ieWVzIgorCQkJQUNfTVNHX1JFU1VMVChbIiR2NnR5cGUsICRlbmFibGVfaXB2NiwgdXNpbmcgbGliJHY2bGliIl0pCisJCWVsaWYgdGVzdCAiJHY2dHJ5bGliYyIgPSAieWVzIjsgdGhlbgorCQkJZW5hYmxlX2lwdjY9InllcyIKKwkJCUFDX01TR19SRVNVTFQoWyIkdjZ0eXBlLCAkZW5hYmxlX2lwdjYsIHVzaW5nIGxpYmMiXSkKKwkJZWxzZQorCQkJQUNfTVNHX0VSUk9SKG5vIElQdjYgbGlicmFyeSBsaWIkdjZsaWIuYSBmb3VuZC4pCisJCQlleGl0IDEKKwkJZmkKKwllbHNlCisJCWVuYWJsZV9pcHY2PSJubyIKKwkJQUNfTVNHX1JFU1VMVChbIiR2NnR5cGUsICRlbmFibGVfaXB2NiJdKQorCWZpCitmaQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZWZkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9tYW51YWwKQEAgLTAsMCArMSwxNzAgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIworIyBQcm9tcHQgZm9yIHZhcmlvdXMgYml0cyBvZiB1c2VyIGluZm9ybWF0aW9uCisjCisKK2lmIHRlc3QgIngkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9MT0dGSUxFIiA9ICJ4IiAtbyAieCRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1NZU19MT0MiID0gIngiIC1vICJ4JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfU1lTX0NPTlRBQ1QiID0gIngiIC1vICJ4JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04iID0gIngiOyB0aGVuCitBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIHRvIHByb21wdCBmb3IgdmFsdWVzLCBhY19jdl9oYXZlX3dhcm5lZCwKK1sKK2lmIHRlc3QgIngkZGVmYXVsdHMiID0gInhubyI7IHRoZW4KK0FDX01TR19OT1RJQ0UoWworCisJICoqKioqKioqKioqKioqIENvbmZpZ3VyYXRpb24gU2VjdGlvbiAqKioqKioqKioqKioqKgorCisJWW91IGFyZSBhYm91dCB0byBiZSBwcm9tcHRlZCB3aXRoIGEgc2VyaWVzIG9mIHF1ZXN0aW9ucy4gIEFuc3dlcgordGhlbSBjYXJlZnVsbHksIGFzIHRoZXkgZGV0ZXJtaW5lIGhvdyB0aGUgU05NUCBhZ2VudCBhbmQgcmVsYXRlZAorYXBwbGljYXRpb25zIGFyZSB0byBmdW5jdGlvbi4KKworCUFmdGVyIHRoZSBjb25maWd1cmUgc2NyaXB0IGZpbmlzaGVzLCB5b3UgY2FuIGJyb3dzZSB0aGUgbmV3bHkKK2NyZWF0ZWQgbmV0LXNubXAtY29uZmlnLmggZmlsZSBmb3IgZnVydGhlciAtIGxlc3MgaW1wb3J0YW50IC0gcGFyYW1ldGVycyB0bworbW9kaWZ5LiAgQmUgY2FyZWZ1bCBpZiB5b3UgcmUtcnVuIGNvbmZpZ3VyZSB0aG91Z2gsIHNpbmNlIG5ldC1zbm1wLWNvbmZpZy5oIAord2lsbCBiZSBvdmVyd3JpdHRlbi4KKworLVByZXNzIHJldHVybiB0byBjb250aW51ZS0KK10pCisKK3JlYWQgdG1waW5wdXQgPCZBU19PUklHSU5BTF9TVERJTl9GRAorYWNfY3ZfaGF2ZV93YXJuZWQ9InllcyIKK2Vsc2UKKyAgYWNfY3ZfaGF2ZV93YXJuZWQ9Im5vIgorZmkKK10pCitlbHNlCisgIGFjX2N2X2hhdmVfd2FybmVkPSJ5ZXMiCitmaQorCitNRT1gJFdIT0FNSWAKK2lmIHRlc3QgLWYgL2V0Yy9yZXNvbHYuY29uZjsgdGhlbgorICBMT0M9YGF3ayAnL15kb21haW4ve2xvYz0kTkZ9RU5Ee3ByaW50IGxvY30nIC9ldGMvcmVzb2x2LmNvbmZgCitmaQoraWYgdGVzdCAieCRMT0MiID0geDsgdGhlbgorICBMT0M9IkBuby53aGVyZSIKK2ZpCisKK0FDX1BST01QVF9VU0VSKE5FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04sWworCisqKiogRGVmYXVsdCBTTk1QIFZlcnNpb246CisKKwlTdGFydGluZyB3aXRoIE5ldC1TTk1QIDUuMCwgeW91IGNhbiBjaG9vc2UgdGhlIGRlZmF1bHQgdmVyc2lvbiBvZgordGhlIFNOTVAgcHJvdG9jb2wgdG8gdXNlIHdoZW4gbm8gdmVyc2lvbiBpcyBnaXZlbiBleHBsaWNpdGx5IG9uIHRoZQorY29tbWFuZCBsaW5lLCBvciB2aWEgYW4gJ3NubXAuY29uZicgZmlsZS4gIEluIHRoZSBwYXN0IHRoaXMgd2FzIHNldCB0bworU05NUHYxLCBidXQgeW91IGNhbiB1c2UgdGhpcyB0byBzd2l0Y2ggdG8gU05NUHYzIGlmIGRlc2lyZWQuICBTTk1QdjMKK3dpbGwgcHJvdmlkZSBhIG1vcmUgc2VjdXJlIG1hbmFnZW1lbnQgZW52aXJvbm1lbnQgKGFuZCB0aHVzIHlvdSdyZQorZW5jb3VyYWdlZCB0byBzd2l0Y2ggdG8gU05NUHYzKSwgYnV0IG1heSBicmVhayBleGlzdGluZyBzY3JpcHRzIHRoYXQKK3JlbHkgb24gdGhlIG9sZCBiZWhhdmlvdXIuICAoVGhvdWdoIHN1Y2ggc2NyaXB0cyB3aWxsIHByb2JhYmx5IG5lZWQgdG8KK2JlIGNoYW5nZWQgdG8gdXNlIHRoZSAnLWMnIGNvbW11bml0eSBmbGFnIGFueXdheSwgYXMgdGhlIFNOTVB2MQorY29tbWFuZCBsaW5lIHVzYWdlIGhhcyBjaGFuZ2VkIGFzIHdlbGwuKS4KKyAgIEF0IHRoaXMgcHJvbXB0IHlvdSBjYW4gc2VsZWN0IFwiMVwiLCBcIjJcIiAoZm9yIFNOTVB2MmMpLCBvciBcIjNcIiBhcwordGhlIGRlZmF1bHQgdmVyc2lvbiBmb3IgdGhlIGNvbW1hbmQgdG9vbHMgKHNubXBnZXQsIC4uLikgdG8gdXNlLiAgVGhpcworY2FuIGFsd2F5cyBiZSBvdmVycmlkZGVuIGF0IHJ1bnRpbWUgdXNpbmcgdGhlIC12IGZsYWcgdG8gdGhlIHRvb2xzLCBvcgorYnkgdXNpbmcgdGhlIFwiZGVmVmVyc2lvblwiIHRva2VuIGluIHlvdXIgc25tcC5jb25mIGZpbGUuCisgICBQcm92aWRpbmcgdGhlIC0td2l0aC1kZWZhdWx0LXNubXAtdmVyc2lvbj1cInhcIiBwYXJhbWV0ZXIgdG8gLi9jb25maWd1cmUKK3dpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCisKK0RlZmF1bHQgdmVyc2lvbiBvZiBTTk1QIHRvIHVzZV0sMyx1bnF1b3RlZCkKKworIyB3ZSB0ZXN0ZWQgdGhpcyBhYm92ZSBiZWZvcmUgdGhlIHByb21wdCwgYnV0IHRoZSBwcm9tcHQgbWF5IGdpdmUgYSBuZXcgdmFsdWUuCitjYXNlICIke2FjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT059IiBpbgorICBbWzEyM11dKSA7OworICAyYykgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTj0yIDs7CisgICopCisgICAgQUNfTVNHX0VSUk9SKFtJbGxlZ2FsIHZlcnNpb24gbnVtYmVyLiAgT25seSAxLCAyIChmb3IgU05NUHYyYykgYW5kIDMgYXJlIHN1cHBvcnRlZC5dKQorICAgIDs7Citlc2FjCisKK0FDX1BST01QVF9VU0VSKE5FVFNOTVBfU1lTX0NPTlRBQ1QsWworCisqKiogU3lzdGVtIENvbnRhY3QgSW5mb3JtYXRpb246CisKKwlEZXNjcmliZXMgd2hvIHNob3VsZCBiZSBjb250YWN0ZWQgYWJvdXQgdGhlIGhvc3QgdGhlIGFnZW50IGlzCitydW5uaW5nIG9uLiAgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIE1JQi1JSSB0cmVlLiAgVGhpcworY2FuIGFsc28gYmUgb3Zlci1yaWRkZW4gdXNpbmcgdGhlIFwic3lzY29udGFjdFwiIHN5bnRheCBpbiB0aGUgYWdlbnQncworY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtc3lzLWNvbnRhY3Q9XCJjb250YWN0XCIgcGFyYW1ldGVyIHRvIC4vY29uZmlndXJlCit3aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgorCitTeXN0ZW0gQ29udGFjdCBJbmZvcm1hdGlvbl0sJE1FQCRMT0MscXVvdGVkKQorCitBQ19QUk9NUFRfVVNFUihORVRTTk1QX1NZU19MT0MsWworCisqKiogU3lzdGVtIExvY2F0aW9uOgorCisJRGVzY3JpYmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgc3lzdGVtLiAgVGhpcyBpbmZvcm1hdGlvbiBpcworYXZhaWxhYmxlIGluIHRoZSBNSUItSUkgdHJlZS4gIHRoaXMgY2FuIGFsc28gYmUgb3Zlci1yaWRkZW4gdXNpbmcgdGhlCitcInN5c2xvY2F0aW9uXCIgc3ludGF4IGluIHRoZSBhZ2VudCdzIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgIFByb3ZpZGluZyB0aGUgLS13aXRoLXN5cy1sb2NhdGlvbj1cImxvY2F0aW9uXCIgcGFyYW1ldGVyIHRvIC4vY29uZmlndXJlCit3aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgorCitTeXN0ZW0gTG9jYXRpb25dLFVua25vd24scXVvdGVkKQorCitpZiB0ZXN0IC1kIC92YXIvbG9nOyB0aGVuCisgIGRlZmF1bHRsb2c9Ii92YXIvbG9nL3NubXBkLmxvZyIKK2Vsc2UKKyAgZGVmYXVsdGxvZz0iL3Vzci9hZG0vc25tcGQubG9nIgorZmkKKyAgCitBQ19QUk9NUFRfVVNFUihORVRTTk1QX0xPR0ZJTEUsWworCisqKiogTG9nZmlsZSBsb2NhdGlvbjoKKworCUVudGVyIHRoZSBkZWZhdWx0IGxvY2F0aW9uIGZvciB0aGUgc25tcGQgYWdlbnQgdG8gZHVtcAoraW5mb3JtYXRpb24gJiBlcnJvcnMgdG8uICBJZiBub3QgZGVmaW5lZCAoZW50ZXIgdGhlIGtleXdvcmQgXCJub25lXCIKK2F0IHRoZSBwcm9tcHQgYmVsb3cpIHRoZSBhZ2VudCB3aWxsIHVzZSBzdGRvdXQgYW5kIHN0ZGVyciBpbnN0ZWFkLgorKE5vdGU6IFRoaXMgdmFsdWUgY2FuIGJlIG92ZXItcmlkZGVuIHVzaW5nIGNvbW1hbmQgbGluZSBvcHRpb25zLikKKyAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtbG9nZmlsZT1cInBhdGhcIiBwYXJhbWV0ZXIgdG8gLi9jb25maWd1cmUKK3dpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCisKK0xvY2F0aW9uIHRvIHdyaXRlIGxvZ2ZpbGVdLCRkZWZhdWx0bG9nLHF1b3RlZCkKKworaWYgdGVzdCAtZCAvdmFyOyB0aGVuCisgIGRlZmF1bHRzdG9yZT0iL3Zhci9uZXQtc25tcCIKKyAgdWNkZGVmYXVsdHN0b3JlPSIvdmFyL3VjZC1zbm1wIgorZWxzZQorICBkZWZhdWx0c3RvcmU9Ii9ldGMvbmV0LXNubXAiCisgIHVjZGRlZmF1bHRzdG9yZT0iL2V0Yy91Y2Qtc25tcCIKK2ZpCisgIAorQUNfUFJPTVBUX1VTRVIoTkVUU05NUF9QRVJTSVNURU5UX0RJUkVDVE9SWSxbCisKKyoqKiBzbm1wZCBwZXJzaXN0ZW50IHN0b3JhZ2UgbG9jYXRpb246CisKKwlFbnRlciBhIGRpcmVjdG9yeSBmb3IgdGhlIFNOTVAgbGlicmFyeSB0byBzdG9yZSBwZXJzaXN0ZW50CitkYXRhIGluIHRoZSBmb3JtIG9mIGEgY29uZmlndXJhdGlvbiBmaWxlLiAgVGhpcyBkZWZhdWx0IGxvY2F0aW9uIGlzCitkaWZmZXJlbnQgdGhhbiB0aGUgb2xkIGRlZmF1bHQgbG9jYXRpb24gKHdoaWNoIHdhcyBmb3IgdWNkLXNubXApLiAgSWYKK3lvdSBzdGF5IHdpdGggdGhlIG5ldyBwYXRoLCBJJ2xsIGFzayB5b3UgaW4gYSBzZWNvbmQgaWYgeW91IHdpc2ggdG8KK2NvcHkgeW91ciBmaWxlcyBvdmVyIHRvIHRoZSBuZXcgbG9jYXRpb24gKG9uY2Ugb25seSkuICBJZiB5b3UgcGljaworc29tZSBvdGhlciBwYXRoIHRoYW4gdGhlIGRlZmF1bHQsIHlvdSdsbCBoYXZlIHRvIGNvcHkgdGhlbSB5b3Vyc2VsZi4KK1RoZXJlIGlzIG5vdGhpbmcgd3Jvbmcgd2l0aCBwaWNraW5nIHRoZSBvbGQgcGF0aCAoJHVjZGRlZmF1bHRzdG9yZSkgaWYKK3lvdSdkIHJhdGhlci4KKyAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtcGVyc2lzdGVudC1kaXJlY3Rvcnk9XCJwYXRoXCIgcGFyYW1ldGVyIHRvCisuL2NvbmZpZ3VyZSB3aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgorCitMb2NhdGlvbiB0byB3cml0ZSBwZXJzaXN0ZW50IGluZm9ybWF0aW9uXSwkZGVmYXVsdHN0b3JlLHF1b3RlZCkKKworUEVSU0lTVEVOVF9ESVJFQ1RPUlk9JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfUEVSU0lTVEVOVF9ESVJFQ1RPUlkKK0FDX1NVQlNUKFBFUlNJU1RFTlRfRElSRUNUT1JZKQorVUNEUEVSU0lTVEVOVF9ESVJFQ1RPUlk9JHVjZGRlZmF1bHRzdG9yZQorQUNfU1VCU1QoVUNEUEVSU0lTVEVOVF9ESVJFQ1RPUlkpCisKK2lmIHRlc3QgJFBFUlNJU1RFTlRfRElSRUNUT1JZID0gIiRkZWZhdWx0c3RvcmUiIC1hIC1kICIkdWNkZGVmYXVsdHN0b3JlIiAtYSAhIC1kICIkZGVmYXVsdHN0b3JlIiA7IHRoZW4KK0FDX0NBQ0hFX0NIRUNLKElmIHdlIHNob3VsZCBjb3B5IHRoZSBvbGQgcGVyc2lzdGVudCBkaXJlY3RvcnksIGFjX2N2X3VzZXJfcHJvbXB0X0NPUFlfUEVSU0lTVEVOVF9GSUxFUywKK1sKK0FDX1BST01QVF9VU0VSX05PX0RFRklORShhY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVMsWworCisqKiogQ29weWluZyBvbGQgdWNkLXNubXAgcGVyc2lzdGVudCBmaWxlcyB0byBuZXQtc25tcCBwZXJzaXN0ZW50IGRpcmVjdG9yeToKKworCVdvdWxkIHlvdSBsaWtlIHRvIGNvcHkgdGhlIG9sZGVyIHVjZC1zbm1wIHBlcnNpc3RlbnQgZmlsZXMKK2ludG8geW91ciBuZXcgbmV0LXNubXAgcGVyc2lzdGVudCBmaWxlIHBhdGg/ICBUaGlzIHdpbGwgZnVuY3Rpb25hbGx5CitzYXZlIGFsbCB5b3VyIHVjZC1zbm1wIGRhdGEgYW5kIGxldCBpdCBiZSB1c2VkIHdpdGhpbiB0aGUgbmV0LXNubXAKK3Rvb2xzLiAgVGhpcyB3aWxsIG9ubHkgYmUgZG9uZSBvbmNlIHdoZW4geW91IHJ1biBtYWtlIGluc3RhbGwuICBJZiB5b3UKK3dpc2ggdG8gZG8gdGhpcywgZW50ZXIgInllcyIgYXQgdGhlIHByb21wdC4KKyAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtY29weS1wZXJzaXN0ZW50LWZpbGVzPVwibm9cIiAob3IgXCJ5ZXNcIikKK3BhcmFtZXRlcnMgdG8gLi9jb25maWd1cmUgd2lsbCBhdm9pZCB0aGlzIHByb21wdC4KKworQ29weSB1Y2Qtc25tcCBkYXRhIGludG8gdGhlIG5ldC1zbm1wIGRhdGEgZGlyZWN0b3J5XSwieWVzIikKK10pCitlbHNlCithY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVM9Im5vIgorZmkKK0NPUFlfUEVSU0lTVEVOVF9GSUxFUz0iJGFjX2N2X3VzZXJfcHJvbXB0X0NPUFlfUEVSU0lTVEVOVF9GSUxFUyIKK0FDX1NVQlNUKENPUFlfUEVSU0lTVEVOVF9GSUxFUykKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BhdGhzIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGF0aHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VlODM2NwotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BhdGhzCkBAIC0wLDAgKzEsMTAxIEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBDb25maWd1cmUgcGF0aHMKKyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIworIyAgIFByZWZpeCBwYXRoczoKKyMjCisKKyMgICBNYWluIHByZWZpeAorIworaWYgdGVzdCAieCRwcmVmaXgiID0gInhOT05FIjsgdGhlbgorICBwcmVmaXg9L3Vzci9sb2NhbAorZmkKKworIyAgICAgICBQcmVmaXggbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoCisjICAgICAgICAgICBpLmUuIGJlZ2luIHdpdGggIi8iICAgICAgICAgICAgICAgICAgICAgICAgIChVbml4KQorIyAgICAgICAgICAgICAgICBvciAiW0EtWl06IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2luZG93cykKKyMKK2ZpcnN0Y2hhcj1gZWNobyAkcHJlZml4IHwgJFNFRCAncy9cKC5cKS4qL1wxLydgCitpZiB0ZXN0ICJ4JGZpcnN0Y2hhciIgIT0gIngvIiA7IHRoZW4KKyAgIHNlY29uZGNoYXI9YGVjaG8gJHByZWZpeCB8ICRTRUQgJ3MvLlwoLlwpLiovXDEvJ2AKKyAgIGlmIHRlc3QgIngkc2Vjb25kY2hhciIgIT0gIng6IiA7IHRoZW4KKyAgICAgIHByZWZpeD1gcHdkYC8kcHJlZml4CisgICAgICBlY2hvICJhZGp1c3RpbmcgcHJlZml4IHRvICRwcmVmaXgiCisgICBmaQorZmkKKworCisjICAgRXhlYyBwcmVmaXgKKyMKK2lmIHRlc3QgIngkZXhlY19wcmVmaXgiID0gInhOT05FIjsgdGhlbgorICAgIGV4ZWNfcHJlZml4PSRwcmVmaXgKK2ZpCisKKyMgICAgICAgUHJlZml4IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aAorIyAgICAgICAgICAgaS5lLiBiZWdpbiB3aXRoICIvIiAgICAgICAgICAgICAgICAgICAgICAgICAoVW5peCkKKyMgICAgICAgICAgICAgICAgb3IgIltBLVpdOiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdpbmRvd3MpCisjCitmaXJzdGNoYXI9YGVjaG8gJGV4ZWNfcHJlZml4IHwgJFNFRCAncy9cKC5cKS4qL1wxLydgCitpZiB0ZXN0ICJ4JGZpcnN0Y2hhciIgIT0gIngvIiA7IHRoZW4KKyAgIHNlY29uZGNoYXI9YGVjaG8gJGV4ZWNfcHJlZml4IHwgJFNFRCAncy8uXCguXCkuKi9cMS8nYAorICAgaWYgdGVzdCAieCRzZWNvbmRjaGFyIiAhPSAieDoiIDsgdGhlbgorICAgICAgZXhlY19wcmVmaXg9YHB3ZGAvJGV4ZWNfcHJlZml4CisgICAgICBlY2hvICJhZGp1c3RpbmcgZXhlY19wcmVmaXggdG8gJGV4ZWNfcHJlZml4IgorICAgZmkKK2ZpCisKKworIyMKKyMgICBFbnZpcm9ubWVudGFsIHZhcmlhYmxlczoKKyMjCisKKyMgICAgICAgU05NUExJQlBBVEgKKyMKK1NOTVBMSUJQQVRIPSIiCit0bXBzZXQ9IiRsaWJkaXIvc25tcCIKK3doaWxlIHRlc3QgIngkdG1wc2V0IiAhPSAieCRTTk1QTElCUEFUSCI7IGRvCisgICAgU05NUExJQlBBVEg9IiR0bXBzZXQiCisgICAgZXZhbCB0bXBzZXQ9IiR0bXBzZXQiCitkb25lCitBQ19ERUZJTkVfVU5RVU9URUQoU05NUExJQlBBVEgsIiRTTk1QTElCUEFUSCIpCitBQ19TVUJTVChTTk1QTElCUEFUSCkKK0FDX0RFRklORV9VTlFVT1RFRChTTk1QRExNT0RQQVRILCIkU05NUExJQlBBVEgvZGxtb2QiKQorCisjICAgICAgIFNOTVBTSEFSRVBBVEgKKyMKK1NOTVBTSEFSRVBBVEg9IiIKK3RtcHNldD0iJGRhdGFkaXIvc25tcCIKK3doaWxlIHRlc3QgIngkdG1wc2V0IiAhPSAieCRTTk1QU0hBUkVQQVRIIjsgZG8KKyAgICBTTk1QU0hBUkVQQVRIPSIkdG1wc2V0IgorICAgIGV2YWwgdG1wc2V0PSIkdG1wc2V0IgorZG9uZQorQUNfREVGSU5FX1VOUVVPVEVEKFNOTVBTSEFSRVBBVEgsIiRTTk1QU0hBUkVQQVRIIikKK0FDX1NVQlNUKFNOTVBTSEFSRVBBVEgpCisKKyMgICAgICAgTUlCRElSUyAgIChkZWZhdWx0KQorIworaWYgdGVzdCAieCRORVRTTk1QX0RFRkFVTFRfTUlCRElSUyIgPSAieCI7IHRoZW4KKyAgICBORVRTTk1QX0RFRkFVTFRfTUlCRElSUz0iXCRIT01FLy5zbm1wL21pYnM6JFNOTVBTSEFSRVBBVEgvbWlicyIKKyAgICBpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCisgICAgICAgICMKKyAgICAgICAgIyAgICBVU2UgV2luZG93cy1zdHlsZSBwYXRoIHNlcGFyYXRvcgorICAgICAgICBORVRTTk1QX0RFRkFVTFRfTUlCRElSUz1gZWNobyAiJE5FVFNOTVBfREVGQVVMVF9NSUJESVJTIiB8ICRTRUQgJ3MvOi87L2cnYAorICAgIGZpCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9NSUJESVJTLCIkTkVUU05NUF9ERUZBVUxUX01JQkRJUlMiKQorZmkKK0FDX1NVQlNUKE5FVFNOTVBfREVGQVVMVF9NSUJESVJTKQorCisjICAgICAgIFNOTVBDT05GUEFUSAorIworU05NUENPTkZQQVRIPSIiCit0bXBzZXQ9IiRzeXNjb25mZGlyL3NubXAiCit3aGlsZSB0ZXN0ICJ4JHRtcHNldCIgIT0gIngkU05NUENPTkZQQVRIIjsgZG8KKyAgICBTTk1QQ09ORlBBVEg9IiR0bXBzZXQiCisgICAgZXZhbCB0bXBzZXQ9IiR0bXBzZXQiCitkb25lCitBQ19ERUZJTkVfVU5RVU9URUQoU05NUENPTkZQQVRILCIkU05NUENPTkZQQVRIIikKK0FDX1NVQlNUKFNOTVBDT05GUEFUSCkKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEyYjY2ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uCkBAIC0wLDAgKzEsMzYyIEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyAgIFBlcmwgJiBQeXRob24gc3VwcG9ydAorIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgQ2hlY2sgd2hldGhlciBOZXQtU05NUCBjb25maWd1cmF0aW9uIHdpbGwgc3VwcG9ydCBQZXJsCisjIworCisjICAgSW5wdXRzOgorIyAgICAgICBpbnN0YWxsX3Blcmw6ICAgd2hldGhlciBvciBub3QgdG8gaW5zdGFsbCB0aGUgUGVybCBtb2R1bGVzCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzL25vL3RyeSAgIChpLmUuICdtYXliZScgLSB0aGUgZGVmYXVsdCkKKyMgICAgICAgZW1iZWRfcGVybDogICAgIHdoZXRoZXIgb3Igbm90IHRvIGVtYmVkIFBlcmwgc3VwcG9ydCB3aXRoaW4gdGhlIGFnZW50CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzL25vL3RyeSAgIChpLmUuICdtYXliZScgLSB0aGUgZGVmYXVsdCkKKyMKKyMgICAgICAgYWNfY3ZfcGF0aF9QRVJMUFJPRzogICAgUGF0aCB0byBwZXJsIGJpbmFyeQorCisKKyMgICAgICAgRW1iZWRkZWQgUGVybCByZXF1aXJlcyBQZXJsIG1vZHVsZXMsIGFuZCB0aGUgcGVybCBiaW5hcnkKKyMKK2lmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInhubyIgOyB0aGVuCisgICAgICAgIGluc3RhbGxfcGVybD0idHJ5IgorICAgIGZpCisgICAgaWYgdGVzdCAieCRhY19jdl9wYXRoX1BFUkxQUk9HIiA9ICJ4IiAtbyAieCRhY19jdl9wYXRoX1BFUkxQUk9HIiA9ICJ4bm8iIDsgdGhlbgorICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgorICAgICAgICBlbWJlZF9wZXJsPSJubyIKKyAgICBmaQorZmkKKworIyAgICAgICBQZXJsIG1vZHVsZXMgcmVxdWlyZSB0aGUgcGVybCBiaW5hcnkKKyMKK2lmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KKyAgICBteXBlcmw9JGFjX2N2X3BhdGhfUEVSTFBST0cKKyAgICBpZiB0ZXN0ICRteXBlcmwgPSAibm8iIDsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgorICAgICAgICBlbHNlCisgICAgICAgICAgICBBQ19NU0dfRVJST1IoLS1lbmFibGUtZW1iZWRkZWQtcGVybCByZXF1ZXN0ZWQgYnV0IG5vIHBlcmwgZXhlY3V0YWJsZSBmb3VuZCkKKyAgICAgICAgZmkKKyAgICBmaQorZmkKKworIyAgICAgICBQZXJsIG1vZHVsZXMgcmVxdWlyZSBzaGFyZWQgbGlicmFyaWVzCisjCitpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgIT0gInhubyIgOyB0aGVuCisgICAgaWYgdGVzdCAieCRlbmFibGVfc2hhcmVkIiAhPSAieHllcyI7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgICAgICAgaW5zdGFsbF9wZXJsPSJubyIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFBlcmwgc3VwcG9ydCByZXF1aXJlcyAtLWVuYWJsZS1zaGFyZWQpCisgICAgICAgIGZpCisgICAgZmkKK2ZpCisKKyMgICAgICAgUGVybCBtb2R1bGVzIGNhbiBvbmx5IGJlIGluc3RhbGxlZCBmcm9tIHdpdGhpbiB0aGUgc291cmNlIHRyZWUKKyMKK2lmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIGFyZSBpbiB0aGUgc291cmNlIHRyZWUgc28gd2UgY2FuIGluc3RhbGwgUGVybCBtb2R1bGVzXSkKKyAgICBpZiB0ZXN0ICJ4JHNyY2RpciIgPSAieC4iIC1vIC1kIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZSA7IHRoZW4KKyAgICAgICAgQUNfTVNHX1JFU1VMVChbWWVzXSkKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KKyAgICAgICAgICAgIGluc3RhbGxfcGVybD0ibm8iCisgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtOb10pCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFDX01TR19FUlJPUihbUGVybCBtb2R1bGVzIGNhbiBub3QgYmUgYnVpbHQgb3V0c2lkZSB0aGUgc291cmNlIGRpcmVjdG9yeV0pCisgICAgICAgIGZpCisgICAgZmkKK2ZpICAgICAgCisKKworIyAgIFRoZSByZXN0IG9mIHRoZSBQZXJsLXJlbGF0ZWQgY2hlY2tzIGFyZW4ndCByZWxldmFudAorIyAgICAgICBpZiB3ZSdyZSBub3QgdXNpbmcgdGhlIFBlcmwgbW9kdWxlcworIworaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgorCisKKyMjCisjICAgQ2hlY2sgY29tcGlsZXIgY29tcGF0YWJpbGl0eQorIyMKKworICAgICMgICAgICAgV2hhdCBjb21waWxlciB3YXMgdXNlZCB0byBidWlsZCB0aGUgcGVybCBiaW5hcnk/CisgICAgIworICAgIGlmIHRlc3QgInhlbmFibGVfcGVybF9jY19jaGVja3MiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBQZXJsIGNjXSkKKyAgICAgICAgY2hhbmdlcXVvdGUoLCApCisgICAgICAgIFBFUkxDQz1gJG15cGVybCAtVjpjYyB8ICRteXBlcmwgLW4gLWUgJ3ByaW50IGlmIChzL15ccypjYz0uKFstPVx3XHNcL10rKS47XHMqLyQxLyk7J2AKKyAgICAgICAgY2hhbmdlcXVvdGUoWywgXSkKKyAgICAgICAgaWYgdGVzdCAieCRQRVJMQ0MiICE9ICJ4IiA7IHRoZW4KKyAgICAgICAgICAgIEFDX01TR19SRVNVTFQoWyRQRVJMQ0NdKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbF9wZXJsPSJubyIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGNvbXBpbGVyIHRoYXQgd2FzIHVzZWQgdG8gYnVpbGQgJG15cGVybC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgcGVybCBiaW5hcnkgb3IgdXNlIC0td2l0aG91dC1wZXJsLW1vZHVsZXMgdG8gYnVpbGQgd2l0aG91dCBQZXJsLl0pCisgICAgICAgICAgICBmaQorICAgICAgICBmaQorICAgIGZpCisKKyAgICAjICAgICAgIFdhcyBHQ0MgdXNlZCB0byBidWlsZCB0aGUgcGVybCBiaW5hcnk/CisgICAgIworICAgIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyICRQRVJMQ0MgaXMgYSBHTlUgQyBjb21waWxlcl0pCisgICAgICAgIE9MRENDPSRDQworICAgICAgICBDQz0iJFBFUkxDQyIKKyAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoWworICAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFtdLCBbWworI2lmbmRlZiBfX0dOVUNfXworICBjaG9rZSBtZQorI2VuZGlmCisgICAgICAgICAgICBdXSldLCBbcGVybGNjX2lzX2dudT15ZXNdLCBbcGVybGNjX2lzX2dudT1ub10pCisgICAgICAgIEFDX01TR19SRVNVTFQoWyRwZXJsY2NfaXNfZ251XSkKKyAgICAgICAgQ0M9JE9MRENDCisKKyAgICAgICAgIyAgICAgICBDaGVjayBjb21wYXRhYmlsaXR5OiAgR251IE5ldC1TTk1QIHZzIE5vbi1HbnUgcGVybAorICAgICAgICAjCisgICAgICAgIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIiAtYSAieCRwZXJsY2NfaXNfZ251IiA9ICJ4bm8iIDsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgCSAgICAgICAgaW5zdGFsbF9wZXJsPSJubyIKKyAgICAgIAkgICAgZWxzZQorICAgICAgCSAgICAgICAgQUNfTVNHX0VSUk9SKFtUaGlzIGJ1aWxkIGlzIHVzaW5nIGEgR05VIEMgY29tcGlsZXIgKCRDQykgd2hpbGUgUGVybCBoYXMgYmVlbiBjb21waWxlZCB3aXRoIGEgbm9uLUdOVSAob3Igbm9uLXdvcmtpbmcpIGNvbXBpbGVyICgkUEVSTENDKS4gVGhpcyBsaWtlbHkgd29uJ3Qgd29yayBmb3IgYnVpbGRpbmcgd2l0aCBQZXJsIHN1cHBvcnQuIEVpdGhlciBzcGVjaWZ5IGEgZGlmZmVyZW50IGNvbXBpbGVyICgtLXdpdGgtY2M9UEFUSCksIGRpc2FibGUgdGhpcyBjaGVjayAoLS1kaXNhYmxlLXBlcmwtY2MtY2hlY2tzKSBvciBidWlsZCB3aXRob3V0IFBlcmwgKC0td2l0aG91dC1wZXJsLW1vZHVsZXMpLl0pCisgICAgICAJICAgIGZpCisgICAgICAgIGZpCisgICAgZmkKKworICAgICMgICAgICAgQ2hlY2sgY29tcGF0YWJpbGl0eTogIE5vbi1HbnUgTmV0LVNOTVAgdnMgR251IHBlcmwKKyAgICAjCisgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JEdDQyIgIT0gInh5ZXMiIC1hICJ4JHBlcmxjY19pc19nbnUiID0gInh5ZXMiIDsgdGhlbgorICAgICAgCSAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAJICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgorICAgICAgCSAgICBlbHNlCisgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtUaGlzIGJ1aWxkIGlzIHVzaW5nIGEgbm9uLUdOVSBDIGNvbXBpbGVyICgkQ0MpIHdoaWxlIFBlcmwgaGFzIGJlZW4gY29tcGlsZWQgd2l0aCBhIEdOVSBjb21waWxlciAoJFBFUkxDQykuIFRoaXMgbGlrZWx5IHdvbid0IHdvcmsgZm9yIGJ1aWxkaW5nIHdpdGggUGVybCBzdXBwb3J0LiBFaXRoZXIgc3BlY2lmeSBhIGRpZmZlcmVudCBjb21waWxlciAoLS13aXRoLWNjPVBBVEgpLCBkaXNhYmxlIHRoaXMgY2hlY2sgKC0tZGlzYWJsZS1wZXJsLWNjLWNoZWNrcykgb3IgYnVpbGQgd2l0aG91dCBQZXJsICgtLXdpdGhvdXQtcGVybC1tb2R1bGVzKS5dKQorICAgICAgCSAgICBmaQorICAgICAgICBmaQorICAgIGZpCisKKyAgICAjICAgICAgIEFyZSB3ZSBjbGVhciB0byBwcm9jZWVkPworICAgICMKKyAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAgIGluc3RhbGxfcGVybD0ieWVzIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInhubyIgOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgorICAgICAgICAgICAgZW1iZWRfcGVybD0ibm8iCisgICAgICAgIGZpCisgICAgZmkKKworCisjIworIyAgIERldGVybWluZSBjb21waWxhdGlvbiBlbnZpcm9ubWVudCBuZWVkZWQgZm9yIGVtYmVkZGVkIFBlcmwKKyMjCisKKyMgICAgICAgU3lzdGVtLXNwZWNpZmljIHJlcXVpcmVtZW50cworIworY2FzZSAkdGFyZ2V0X29zIGluCisgICAgc29sYXJpcyopCisgICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgICAgICMgICBDaGVjayBmb3IgTEFSR0VGSUxFIHN1cHBvcnQgICAgICAgICAgICAgICAoU29sYXJpcykKKyAgICAgICAgICAjCisgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcHJvYmxlbWF0aWMgUGVybCBjYyBmbGFncyBvbiBTdW5zXSkKKyAgICAgICAgICBpZiAkbXlwZXJsIC1WOmNjZmxhZ3MgfCAkR1JFUCBMQVJHRUZJTEUgPiAvZGV2L251bGwgOyB0aGVuCisgICAgICAgICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgICAgICAgICBlbWJlZF9wZXJsPSJubyIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtQZXJsIHdhcyBjb21waWxlZCB3aXRoIExBUkdFRklMRSBzdXBwb3J0IHdoaWNoIHdpbGwgYnJlYWsgTmV0LVNOTVAuIEVpdGhlciBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBFUkxQUk9HIHRvIGEgZGlmZmVyZW50IHBlcmwgYmluYXJ5IG9yIHVzZSAtLWRpc2FibGUtZW1iZWRkZWQtcGVybCB0byB0dXJuIG9mZiBlbWJlZGRlZCBQZXJsIGZ1bmN0aW9uYWxpdHkgYWx0b2dldGhlci5dKQorICAgICAgICAgICAgZmkKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtub25lIGtub3duXSkKKyAgICAgICAgICBmaQorICAgICAgZmkKKyAgICA7OworCisgICAgKikKKyAgICA7OworZXNhYworCisjICAgICAgIENvbXBpbGVyIGZsYWdzCisjCitpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFBlcmwgQ0ZMQUdTXSkKKyAgICBwZXJsY2ZsYWdzPWAkbXlwZXJsIC1NRXh0VXRpbHM6OkVtYmVkIC1lIGNjb3B0c2AKKyAgICBpZiB0ZXN0ICJ4JHBlcmxjZmxhZ3MiICE9ICJ4IiA7IHRoZW4KKyAgICAgIEFDX01TR19SRVNVTFQoWyRwZXJsY2ZsYWdzXSkKKyAgICAgIENGTEFHUz0iJENGTEFHUyAkcGVybGNmbGFncyIKKyAgICBlbHNlCisgICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgICBlbWJlZF9wZXJsPSJubyIKKyAgICAgIGVsc2UKKyAgICAgICAgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBDIGNvbXBpbGVyIGZsYWdzIHRoYXQgd2VyZSB1c2VkIHRvIGJ1aWxkICRteXBlcmwuIEVpdGhlciBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBFUkxQUk9HIHRvIGEgZGlmZmVyZW50IFBlcmwgYmluYXJ5IG9yIHVzZSAtLWRpc2FibGUtZW1iZWRkZWQtcGVybCB0byB0dXJuIG9mZiBlbWJlZGRlZCBQZXJsIGZ1bmN0aW9uYWxpdHkgYWx0b2dldGhlci5dKQorICAgICAgZmkKKyAgICBmaQorZmkKKworIyAgICAgICBMaW5rZXIgZmxhZ3MKKyMKK2lmIHRlc3QgIngkZW1iZWRfcGVybCIgIT0gInhubyIgOyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUGVybCBMREZMQUdTXSkKKyAgICBuZXRzbm1wX3BlcmxsZG9wdHM9YCRteXBlcmwgLU1FeHRVdGlsczo6RW1iZWQgLWUgbGRvcHRzYAorICAgIGlmIHRlc3QgIngkbmV0c25tcF9wZXJsbGRvcHRzIiAhPSAieCIgOyB0aGVuCisgICAgICBBQ19NU0dfUkVTVUxUKFskbmV0c25tcF9wZXJsbGRvcHRzXSkKKyAgICBlbHNlCisgICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgICBlbWJlZF9wZXJsPSJubyIKKyAgICAgIGVsc2UKKyAgICAgICAgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBsaW5rZXIgb3B0aW9ucyB0aGF0IHdlcmUgdXNlZCB0byBidWlsZCAkbXlwZXJsLiBFaXRoZXIgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQRVJMUFJPRyB0byBhIGRpZmZlcmVudCBQZXJsIGJpbmFyeSBvciB1c2UgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgdG8gdHVybiBvZmYgZW1iZWRkZWQgUGVybCBmdW5jdGlvbmFsaXR5IGFsdG9nZXRoZXIuXSkKKyAgICAgIGZpCisgICAgZmkKKyAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9hc19uZWVkZWQiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgIyAgIEp1c3QtaW4tdGltZSBsaW5raW5nIHdpbGwgZW1iZWQgdGhlIFBlcmwgbGlicmFyeSB3aXRoaW4KKyAgICAgICMgICAgICAgdGhlIE5ldC1TTk1QIGxpYnJhcnkgKHJhdGhlciB0aGFuIHRoZSBhZ2VudCBhcHBsaWNhdGlvbikKKyAgICAgICMKKyAgICAgIFBFUkxMRE9QVFNfRk9SX0xJQlM9IiRuZXRzbm1wX3BlcmxsZG9wdHMiCisgICAgICAjICAgUGVybCBjY2RsZmxhZ3MgKFJQQVRIIHRvIGxpYnBlcmwsIGhvcGVmdWxseSkKKyAgICAgICMKKyAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFBlcmwgQ0NETEZMQUdTXSkKKyAgICAgIGNoYW5nZXF1b3RlKCwgKQorICAgICAgbmV0c25tcF9wZXJsY2NkbGZsYWdzPWAkbXlwZXJsIC1WOmNjZGxmbGFncyB8ICRteXBlcmwgLW4gLWUgJ3ByaW50ICQxICciaWYgKC9eXHMqY2NkbGZsYWdzPScoW14nXSspJzsvKTsiYAorICAgICAgY2hhbmdlcXVvdGUoWywgXSkKKyAgICAgIEFDX01TR19SRVNVTFQoWyRuZXRzbm1wX3BlcmxjY2RsZmxhZ3NdKQorICAgICAgUEVSTExET1BUU19GT1JfQVBQUz0iJG5ldHNubXBfcGVybGNjZGxmbGFncyIKKyAgICBlbHNlCisgICAgICAjICAgT3RoZXJ3aXNlIGVtYmVkIHRoZSBQZXJsIGxpYnJhcnkgd2l0aGluIHRoZSBhcHBsaWNhdGlvbgorICAgICAgIworICAgICAgUEVSTExET1BUU19GT1JfTElCUz0iJG5ldHNubXBfcGVybGxkb3B0cyIKKyAgICAgICMgbGluayAqYXBwbGljYXRpb25zKiBhZ2FpbnN0IGxpYnBlcmwKKyAgICAgIFBFUkxMRE9QVFNfRk9SX0FQUFM9IiRuZXRzbm1wX3BlcmxsZG9wdHMiCisgICAgZmkKK2ZpCisKKyMgICAgICAgJ1BlcmxfZXZhbF9wdicgZnVuY3Rpb24gKGFuZCBlcXVpdmFsZW50cykKKyMKK2lmIHRlc3QgIngkZW1iZWRfcGVybCIgIT0gInhubyIgOyB0aGVuCisgICAgIyAgIFRocmVlIHBvc3NpYmxlIHZlcnNpb25zIG9mIHRoaXMgcm91dGluZToKKyAgICAjICAgICAgIGV2YWxfcHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvIDUuMDAzXzk3ZCkKKyAgICAjICAgICAgIHBlcmxfZXZhbF9wdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDUuMDA0LzUuMDA1KQorICAgICMgICAgICAgUGVybF9ldmFsX3B2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJvbSA1LjZmZikKKyAgICAjCisgICAgT0xETElCUz0iJExJQlMiCisgICAgTElCUz0iJExJQlMgJG5ldHNubXBfcGVybGxkb3B0cyIKKyAgICBBQ19DSEVDS19GVU5DUyhldmFsX3B2KQorICAgIEFDX0NIRUNLX0ZVTkMocGVybF9ldmFsX3B2LAorICAgICAgQUNfREVGSU5FKEhBVkVfUEVSTF9FVkFMX1BWX0xDLCAxLAorICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYHRoZSBwZXJsX2V2YWxfcHYnIGZ1bmN0aW9uLl0pKQorICAgIEFDX0NIRUNLX0ZVTkMoUGVybF9ldmFsX3B2LAorICAgICAgQUNfREVGSU5FKEhBVkVfUEVSTF9FVkFMX1BWX1VDLCAxLAorICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBQZXJsX2V2YWxfcHYnIGZ1bmN0aW9uLl0pKQorICAgIExJQlM9IiRPTERMSUJTIgorICAgICMKKyAgICAjICAgTm90ZSB0aGF0IGF1dG9jb25mIGZsYXR0ZW5zIGNhc2Ugd2hlbiBkZWZpbmluZyB0b2tlbnMsCisgICAgIyAgIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBsYXR0ZXIgdHdvLgorCisgICAgaWYgdGVzdCAieCRhY19jdl9mdW5jX3BlcmxfZXZhbF9wdiIgIT0gInh5ZXMiIC1hICJ4JGFjX2N2X2Z1bmNfUGVybF9ldmFsX3B2IiAhPSAieHllcyIgLWEgIngkYWNfY3ZfZnVuY19ldmFsX3B2IiAhPSAieHllcyIgOyB0aGVuCisgICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgICBlbWJlZF9wZXJsPSJubyIKKyAgICAgIGVsc2UKKyAgICAgICAgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCB0aGUgZXZhbF9wdiwgcGVybF9ldmFsX3B2IG9yIFBlcmxfZXZhbF9wdiBmdW5jdGlvbnMgbmVlZGVkIGZvciBlbWJlZGRlZCBQZXJsIHN1cHBvcnQuIEVpdGhlciBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBFUkxQUk9HIHRvIGEgZGlmZmVyZW50IHBlcmwgYmluYXJ5IG9yIHVzZSAtLWRpc2FibGUtZW1iZWRkZWQtcGVybCB0byB0dXJuIG9mZiBlbWJlZGRlZCBQZXJsIGZ1bmN0aW9uYWxpdHkgYWx0b2dldGhlci5dKQorICAgICAgZmkKKyAgICBlbHNlCisgICAgICAjICAgQWN0aXZhdGUgRW1iZWRkZWQgUGVybAorICAgICAgIworICAgICAgQUNfREVGSU5FKE5FVFNOTVBfRU1CRURERURfUEVSTCwgMSwKKyAgICAgICAgW0RlZmluZSBpZiB5b3UgYXJlIGVtYmVkZGluZyBwZXJsIGluIHRoZSBtYWluIGFnZW50Ll0pCisgICAgICBPVEhFUkFHRU5UTElCT0JKUz0ic25tcF9wZXJsLm8iCisgICAgICBPVEhFUkFHRU5UTElCTE9CSlM9InNubXBfcGVybC5sbyIKKworICAgICAgRU1CRURQRVJMSU5TVEFMTD0iZW1iZWRwZXJsaW5zdGFsbCIKKyAgICAgIEVNQkVEUEVSTFVOSU5TVEFMTD0iZW1iZWRwZXJsdW5pbnN0YWxsIgorICAgICAgZW1iZWRfcGVybD0ieWVzIgorICAgIGZpCitlbHNlCisgICAgICBFTUJFRFBFUkxJTlNUQUxMPSIiCisgICAgICBFTUJFRFBFUkxVTklOU1RBTEw9IiIKKyAgICAgIGVtYmVkX3Blcmw9Im5vIgorICAgIGZpCitmaQorCisKKyMjCisjICAgUmVwb3J0IGFuZCBjb25maWd1cmUgcmVzdWx0cworIyMKKworQUNfU1VCU1QoRU1CRURQRVJMSU5TVEFMTCkKK0FDX1NVQlNUKEVNQkVEUEVSTFVOSU5TVEFMTCkKK0FDX1NVQlNUKFBFUkxMRE9QVFNfRk9SX0xJQlMpCitBQ19TVUJTVChQRVJMTERPUFRTX0ZPUl9BUFBTKQorCisjICAgICAgIFJlc3VsdHMgb2YgRW1iZWRkZWQgUGVybCBjaGVja3MKKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIHBvdGVudGlhbCBlbWJlZGRlZCBQZXJsIHN1cHBvcnRdKQoraWYgdGVzdCAieCRlbWJlZF9wZXJsIiAhPSAieHllcyIgOyB0aGVuCisgIEFDX01TR19DQUNIRV9BREQoRW1iZWRkZWQgUGVybCBzdXBwb3J0OiAgICAgIGRpc2FibGVkKQorICBBQ19NU0dfUkVTVUxUKFtkaXNhYmxlZF0pCitlbHNlCisgIEFDX01TR19DQUNIRV9BREQoRW1iZWRkZWQgUGVybCBzdXBwb3J0OiAgICAgIGVuYWJsZWQpCisgIEFDX01TR19SRVNVTFQoW2VuYWJsZWRdKQorZmkKKworIyAgICAgICBSZXN1bHRzIG9mIFBlcmwgTW9kdWxlIGNoZWNrcworIworUEVSTFRBUkdTPSIiCitQRVJMSU5TVEFMTFRBUkdTPSIiCitQRVJMVU5JTlNUQUxMVEFSR1M9IiIKK0FDX01TR19DSEVDS0lORyhbaWYgd2UgY2FuIGluc3RhbGwgdGhlIFBlcmwgbW9kdWxlc10pCitpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHllcyIgOyB0aGVuCisgICAgUEVSTFRBUkdTPSJwZXJsbW9kdWxlcyIKKyAgICBQRVJMSU5TVEFMTFRBUkdTPSJwZXJsaW5zdGFsbCIKKyAgICBQRVJMVU5JTlNUQUxMVEFSR1M9InBlcmx1bmluc3RhbGwiCisgICAgaWYgdGVzdCAieCRlbWJlZF9wZXJsIiA9ICJ4eWVzIiA7IHRoZW4KKyAgICAgIEFDX01TR19DQUNIRV9BREQoU05NUCBQZXJsIG1vZHVsZXM6ICAgICAgICAgIGJ1aWxkaW5nIC0tIGVtYmVkZGFibGUpCisgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXMgLS0gYW5kIGVtYmVkZGFibGVdKQorICAgIGVsc2UKKyAgICAgIEFDX01TR19DQUNIRV9BREQoU05NUCBQZXJsIG1vZHVsZXM6ICAgICAgICAgIGJ1aWxkaW5nIC0tIG5vdCBlbWJlZGRhYmxlKQorICAgICAgQUNfTVNHX1JFU1VMVChbeWVzIC0tIG5vdCBlbWJlZGRhYmxlXSkKKyAgICBmaQorZWxzZQorICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUGVybCBtb2R1bGVzOiAgICAgICAgICBkaXNhYmxlZCkKK2ZpCitBQ19TVUJTVChQRVJMVEFSR1MpCitBQ19TVUJTVChQRVJMSU5TVEFMTFRBUkdTKQorQUNfU1VCU1QoUEVSTFVOSU5TVEFMTFRBUkdTKQorQUNfU1VCU1QoUEVSTEFSR1MpCisKKworIyAgICAgICBSZXNldCBMSUJTIHRvIHByZS1saWJ3cmFwIHZhbHVlICAgKD8/PykKKyMKK0FHRU5UTElCUz0kTElCUworTElCUz0kTk9OQUdFTlRMSUJTCisKKworCisjIworIyAgIFB5dGhvbiBjaGVja3MKKyMjCisKK1BZVEhPTlRBUkdTPSIiCitQWVRIT05JTlNUQUxMVEFSR1M9IiIKK1BZVEhPTlVOSU5TVEFMTFRBUkdTPSIiCitQWVRIT05DTEVBTlRBUkdTPSIiCitBQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIHNob3VsZCBpbnN0YWxsIHRoZSBweXRob24gYmluZGluZ3NdKQoraWYgdGVzdCAieCRpbnN0YWxsX3B5dGhvbiIgPSAieHllcyIgOyB0aGVuCisgICAgUFlUSE9OVEFSR1M9InB5dGhvbm1vZHVsZXMiCisgICAgUFlUSE9OSU5TVEFMTFRBUkdTPSJweXRob25pbnN0YWxsIgorICAgIFBZVEhPTlVOSU5TVEFMTFRBUkdTPSJweXRob251bmluc3RhbGwiCisgICAgUFlUSE9OQ0xFQU5UQVJHUz0icHl0aG9uY2xlYW4iCisgICAgQUNfTVNHX0NBQ0hFX0FERChTTk1QIFB5dGhvbiBtb2R1bGVzOiAgICAgICAgYnVpbGRpbmcgZm9yICRQWVRIT05QUk9HKQorICAgIEFDX01TR19SRVNVTFQoW3llc10pCitlbHNlCisgICAgQUNfTVNHX0NBQ0hFX0FERChTTk1QIFB5dGhvbiBtb2R1bGVzOiAgICAgICAgZGlzYWJsZWQpCisgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorZmkKK0FDX1NVQlNUKFBZVEhPTlRBUkdTKQorQUNfU1VCU1QoUFlUSE9OSU5TVEFMTFRBUkdTKQorQUNfU1VCU1QoUFlUSE9OVU5JTlNUQUxMVEFSR1MpCitBQ19TVUJTVChQWVRIT05DTEVBTlRBUkdTKQorQUNfU1VCU1QoUFlUSE9OQVJHUykKKworCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF90eXBlcyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3R5cGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjOWM4NWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF90eXBlcwpAQCAtMCwwICsxLDU3IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBDaGVja3MgZm9yIHR5cGVzCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBTdGFuZGFyZCBjaGVja3M6CisjIworCisjIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCitBQ19UWVBFX09GRl9UCitBQ19UWVBFX1BJRF9UCitBQ19IRUFERVJfVElNRQorCisKKyMjCisjICAgTW9yZSBjb21wbGV4IGNoZWNrczoKKyMjCisKKyMgICBDaGVjayBmb3IgJ3NvY2tsZW5fdCcgICAgICAgICAgICAgICAgICAgICAgICAgICAoSFAtVVgpCisjCitBQ19DSEVDS19UWVBFUyhbc29ja2xlbl90XSwsLFsKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZiBTVERDX0hFQURFUlMKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmXSkKKworCisjICAgQ2hlY2sgZm9yICdpbl9hZGRyX3QnCisjICAgICAgIE1heSBiZSBpbiA8bmV0aW5ldC9pbi5oPiAgICAgICAgICAgICAgICAgICAgICAgIChBSVgpCisjCitBQ19DSEVDS19UWVBFUyhbaW5fYWRkcl90XSwsLFsKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZiBTVERDX0hFQURFUlMKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmXSkKKworCisjICAgQ2hlY2sgZm9yICdzc2l6ZV90JworIyAgICAgICBOb3QgbmVjZXNzYXJpbHkgaW4gPHN5cy90eXBlcy5oPiAgICAgICAgICAgICAgICAob2xkZXIgTWluR1cpCisjCitBQ19DSEVDS19UWVBFUyhbc3NpemVfdF0sLCxbCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWYgU1REQ19IRUFERVJTCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjZW5kaWZdKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTkzZmVjCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUKQEAgLTAsMCArMSwxMDI0IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyAgIENvbW1hbmQtbGluZSBwcm9jZXNzaW5nIC0gLS13aXRoLy0tZW5hYmxlCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBTeXN0ZW06IENvbXBpbGVyIHNldHRpbmdzCisjIworCitBQ19BUkdfV0lUSChjYywgWworQ29tcGlsZXIgT3B0aW9uczoKKyAgLS13aXRoLWNjPUNDICAgICAgICAgICAgICAgICAgICB1c2UgQ0MgdG8gY29tcGlsZSAoZGVmYXVsdD1nY2MpLl0sCisgICAgW0NDPSR3aXRoX2NjO2V4cG9ydCBDQ10pCisKK0FDX0FSR19XSVRIKGxpbmtjYywgWworICAtLXdpdGgtbGlua2NjPUNDICAgICAgICAgICAgICAgIHVzZSBDQyB0byBsaW5rIChkZWZhdWx0PWdjYykuXSwKKyAgICBbTElOS0NDPSR3aXRoX2xpbmtjYztleHBvcnQgTElOS0NDXSkKKworQUNfQVJHX1dJVEgoYXIsCitbICAtLXdpdGgtYXI9QVIgICAgICAgICAgICAgICAgICAgIHVzZSBBUiBhcyB0aGUgYXJjaGl2ZXIuXSwKKyAgICBbQVI9JHdpdGhfYXI7IGV4cG9ydCBBUl0pCisKK0FDX0FSR19XSVRIKGVuZGlhbm5lc3MsCitbICAtLXdpdGgtZW5kaWFubmVzcz1iaWd8bGl0dGxlICAgIGRlZmluZSBlbmRpYW5uZXNzIG9mIHRhcmdldCBwbGF0Zm9ybSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsaW5nLl0sCisgICAgW2lmIHRlc3QgJHdpdGhfZW5kaWFubmVzcyAhPSAiYmlnIiAtYSAkd2l0aF9lbmRpYW5uZXNzICE9ICJsaXR0bGUiIDsgdGhlbgorICAgICAgIEFDX01TR19FUlJPUihbRW5kaWFubmVzcyBtdXN0IGJlIGJpZyBvciBsaXR0bGUsIG5vdCAiJHdpdGhfZW5kaWFubmVzcyIuXSk7CisgICAgIGZpCitdKQorCitBQ19BUkdfV0lUSChjZmxhZ3MsCitbICAtLXdpdGgtY2ZsYWdzPUNGTEFHUyAgICAgICAgICAgIHVzZSBDRkxBR1MgYXMgY29tcGlsZSB0aW1lIGFyZ3VtZW50cy5dLAorICAgIFtDRkxBR1M9JHdpdGhfY2ZsYWdzOyBleHBvcnQgQ0ZMQUdTXSkKKworQUNfQVJHX1dJVEgobGRmbGFncywKK1sgIC0td2l0aC1sZGZsYWdzPUxERkxBR1MgICAgICAgICAgdXNlIExERkxBR1MgYXMgbGluayB0aW1lIGFyZ3VtZW50cyB0byBsZC5dLAorICAgIFtMREZMQUdTPSR3aXRoX2xkZmxhZ3M7IGV4cG9ydCBMREZMQUdTXSkKKworQUNfQVJHX0VOQUJMRShhcy1uZWVkZWQsCitbICAtLWRpc2FibGUtYXMtbmVlZGVkICAgICAgICAgICAgIExpbmsgbGlicGVybCBhZ2FpbnN0IGFwcGxpY2F0aW9ucyByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGFuIE5ldC1TTk1QIGxpYnJhcmllcy4gVXNlIG9ubHkgaWYgdGhlIG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F5IGRvZXNuJ3Qgd29yay5dKQorCitBQ19BUkdfV0lUSChsaWJzLAorWyAgLS13aXRoLWxpYnM9TElCUyAgICAgICAgICAgICAgICB1c2UgTElCUyBhcyBsaW5rIHRpbWUgYXJndW1lbnRzIHRvIGxkLl0sCisgICAgW0xJQlM9JHdpdGhfbGliczsgZXhwb3J0IExJQlNdKQorCitBQ19BUkdfRU5BQkxFKHNpbGVudC1saWJ0b29sLAorWyAgLS1lbmFibGUtc2lsZW50LWxpYnRvb2wgICAgICAgICBQYXNzIC0tc2lsZW50IHRvIGxpYnRvb2wuXSwKKwlMSUJUT09MRkxBR1M9LS1zaWxlbnQpCitBQ19TVUJTVChMSUJUT09MRkxBR1MpCisKKworIyMKKyMgICBTeXN0ZW06IExpYnJhcnkgc2V0dGluZ3MKKyMjCisKK05FVFNOTVBfQVJHX1dJVEgoZG1hbGxvYywKKyAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kbWFsbG9jPVBBVEhdLAorICAgICAgICAgICAgICAgIFtVc2UgZG1hbGxvYyBsaWJyYXJ5ICh3d3cuZG1hbGxvYy5jb20pXSkpCisKK05FVFNOTVBfQVJHX1dJVEgoZWZlbmNlLAorWyAgLS13aXRoLWVmZW5jZSAgICAgICAgICAgICAgICAgICBMb29rIGZvciBhbmQgdXNlIGxpYmVmZW5jZSAobWFsbG9jKS5dLAorICAgICAgdXNlX2VmZW5jZT0iJHdpdGh2YWwiKQorCit0cnlyc2FyZWY9bm8KK05FVFNOTVBfQVJHX1dJVEgocnNhcmVmLAorWyAgLS13aXRoLXJzYXJlZj1QQVRIICAgICAgICAgICAgICBMb29rIGZvciBsaWJyc2FyZWYgaW4gUEFUSC9saWIuXSwKKyAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCisgICAgICB0cnlyc2FyZWY9eWVzCisgICAgZWxpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInhubyI7IHRoZW4KKyAgICAgIHRyeXJzYXJlZj1ubworICAgIGVsaWYgdGVzdCAtZCAiJHdpdGh2YWwiOyB0aGVuCisgICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJHdpdGh2YWwpCisgICAgICB0cnlyc2FyZWY9eWVzCisgICAgZmksCispCisKK3RyeW9wZW5zc2w9ZGVmYXVsdHllcworYXNrZWRvcGVuc3NsPW5vCitORVRTTk1QX0FSR19XSVRIKG9wZW5zc2wsCitbICAtLXdpdGgtb3BlbnNzbD1QQVRIICAgICAgICAgICAgIExvb2sgZm9yIG9wZW5zc2wgaW4gUEFUSC9saWIuXSwKKyAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCisgICAgICB0cnlvcGVuc3NsPXllcworICAgICAgYXNrZWRvcGVuc3NsPXllcworICAgIGVsaWYgdGVzdCAieCR3aXRodmFsIiA9ICJ4bm8iOyB0aGVuCisgICAgICB0cnlvcGVuc3NsPW5vCisgICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KKyAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKKyAgICAgIHRyeW9wZW5zc2w9eWVzCisgICAgICBhc2tlZG9wZW5zc2w9eWVzCisgICAgZmksCispCitpZiB0ZXN0ICJ4JHRyeW9wZW5zc2wiID0gInhkZWZhdWx0eWVzIjsgdGhlbgorICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKC91c3IvbG9jYWwvc3NsKQorICAgICAgdHJ5b3BlbnNzbD15ZXMKK2ZpCitBQ19BUkdfV0lUSChbc3NsXSwsTkVUU05NUF9JTlZBTElEX1dJVEgoW29wZW5zc2xdKSkKK0FDX0FSR19FTkFCTEUoW3NzbF0sLE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtvcGVuc3NsXSkpCisKK2Fza2VkcGtjcz1ubworTkVUU05NUF9BUkdfV0lUSChwa2NzLAorWyAgLS13aXRoLXBrY3M9UEFUSCAgICAgICAgICAgICAgICBMb29rIGZvciBwa2NzMTEgaW4gUEFUSC9saWIuXSwKKyAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCisgICAgICBhc2tlZHBrY3M9eWVzCisgICAgZWxpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInhubyI7IHRoZW4KKyAgICAgIGFza2VkcGtjcz1ubworICAgIGVsaWYgdGVzdCAtZCAiJHdpdGh2YWwiOyB0aGVuCisgICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJHdpdGh2YWwpCisgICAgICBhc2tlZHBrY3M9eWVzCisgICAgZmksCispCisKK3RyeWtyYjU9ZGVmYXVsdHllcworYXNrZWRrcmI1PW5vCitORVRTTk1QX0FSR19XSVRIKGtyYjUsCitbICAtLXdpdGgta3JiNT1QQVRIICAgICAgICAgICAgICAgIExvb2sgZm9yIGtyYjUgaW4gUEFUSC9saWIuXSwKKyAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCisgICAgICB0cnlrcmI1PXllcworICAgICAgYXNrZWRrcmI1PXllcworICAgICAga3JiNXBhdGg9dW5kZWYKKyAgICBlbGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieG5vIjsgdGhlbgorICAgICAgdHJ5a3JiNT1ubworICAgICAga3JiNXBhdGg9dW5kZWYKKyAgICBlbGlmIHRlc3QgLWQgIiR3aXRodmFsIjsgdGhlbgorICAgICAgdHJ5a3JiNT15ZXMKKyAgICAgIGFza2Vka3JiNT15ZXMKKyAgICAgIGtyYjVwYXRoPSR3aXRodmFsCisgICAgZmksCispCitpZiB0ZXN0ICJ4JHRyeWtyYjUiID0gInhkZWZhdWx0eWVzIjsgdGhlbgorICAgICAgdHJ5a3JiNT15ZXMKKyAgICAgIGtyYjVwYXRoPS91c3Iva2VyYmVyb3MKK2ZpCisKK05FVFNOTVBfQVJHX1dJVEgocnBtLAorWyAgLS13aXRob3V0LXJwbSAgICAgICAgICAgICAgICAgICBEb24ndCBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBSUE0gcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgc3lzdGVtIHdoZW4gYnVpbGRpbmcgdGhlIGhvc3QgTUlCCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl0pCisKKworIyMKKyMgICBQcm9qZWN0OiBCdWlsZCBjb25maWd1cmF0aW9uIHNldHRpbmdzCisjIworCisjICAgICAgIEluc3RhbGwgcHJlZml4CisjCitBQ19BUkdfV0lUSChpbnN0YWxsLXByZWZpeCwKK1sgIC0td2l0aC1pbnN0YWxsLXByZWZpeD1QQVRIICAgICAgSnVzdCBmb3IgaW5zdGFsbGluZywgcHJlZml4IGFsbCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyB3aXRoIFBBVEguICBUaGlzIGlzIGtub3duIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHdvcmsgb24gc29tZSBzeXN0ZW1zIHdpdGggc2hhcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIChlZywgSFBVWCldLAorICAgICAgSU5TVEFMTF9QUkVGSVg9IiR3aXRodmFsIikKKworaWYgdGVzdCAieCRJTlNUQUxMX1BSRUZJWCIgPSAieHllcyIgOyB0aGVuCisgIEFDX01TR19FUlJPUihbLS13aXRoLWluc3RhbGwtcHJlZml4IHJlcXVpcmVzIGFuIGFyZ3VtZW50XSkKK2ZpCitpZiB0ZXN0ICJ4JElOU1RBTExfUFJFRklYIiA9ICJ4bm8iIDsgdGhlbgorICBJTlNUQUxMX1BSRUZJWD0iIgorZmkKK0FDX1NVQlNUKElOU1RBTExfUFJFRklYKQorCisKKyMgICAKKyMgICBTdWJzeXN0ZW1zIHRvIGJ1aWxkOgorIyAgICAgICBBZ2VudAorIworTkVUU05NUF9BUkdfRU5BQkxFKGFnZW50LAorWyAgLS1kaXNhYmxlLWFnZW50ICAgICAgICAgICAgICAgICBEbyBub3QgYnVpbGQgdGhlIGFnZW50IChzbm1wZCkuXSkKK2lmIHRlc3QgIngkZW5hYmxlX2FnZW50IiAhPSAieG5vIjsgdGhlbgorICAgU05NUEQ9J3NubXBkJChFWEVFWFQpJworICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBhZ2VudCIKKyAgIFRSQVBMSUJTPSckKFRSQVBEV0lUSEFHRU5UKScKKyAgIFVTRVRSQVBMSUJTPSckKFVTRUFHRU5UTElCUyknCitlbHNlCisgICBTTk1QRD0iIgorICAgIyB3ZSBzdGlsbCBuZWVkL3dhbnQgdGhlIGFnZW50bGlicyAoZm9yIHN1YmFnZW50cywgZS5nLiBzbm1wdHJhcGQpCisgICBNQUlOU1VCUz0iJE1BSU5TVUJTIGFnZW50IgorICAgIyBidWlsZGluZyBzbm1wdHJhcGQgdy9vIGFnZW50bGlicyBkb2Vzbid0IHdvcmsgYXRtCisgICAjVFJBUExJQlM9JyQoVFJBUERXSVRIT1VUQUdFTlQpJworICAgI1VTRVRSQVBMSUJTPSckKFVTRUxJQlMpJworICAgVFJBUExJQlM9JyQoVFJBUERXSVRIQUdFTlQpJworICAgVVNFVFJBUExJQlM9JyQoVVNFQUdFTlRMSUJTKScKK2ZpCitBQ19TVUJTVChTTk1QRCkKK0FDX1NVQlNUKFRSQVBMSUJTKQorQUNfU1VCU1QoVVNFVFJBUExJQlMpCisKKyMgICAgICAgQXBwbGljYXRpb25zCisjCitORVRTTk1QX0FSR19FTkFCTEUoYXBwbGljYXRpb25zLAorWyAgLS1kaXNhYmxlLWFwcGxpY2F0aW9ucyAgICAgICAgICBEbyBub3QgYnVpbGQgdGhlIGFwcHMgKHNubXBnZXQsIC4uLikuXSkKK2lmIHRlc3QgIngkZW5hYmxlX2FwcGxpY2F0aW9ucyIgIT0gInhubyI7IHRoZW4KKyAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgYXBwcyIKK2ZpCisKKyMgICAgICAgTWFudWFsIHBhZ2VzCisjCitORVRTTk1QX0FSR19FTkFCTEUobWFudWFscywKK1sgIC0tZGlzYWJsZS1tYW51YWxzICAgICAgICAgICAgICAgRG8gbm90IGluc3RhbGwgdGhlIG1hbnVhbHMuXSkKK2lmIHRlc3QgIngkZW5hYmxlX21hbnVhbHMiICE9ICJ4bm8iOyB0aGVuCisgICBNQUlOU1VCUz0iJE1BSU5TVUJTIG1hbiIKK2ZpCisKKyMgICAgICAgU3VwcG9ydGluZyBzY3JpcHRzCisjCitORVRTTk1QX0FSR19FTkFCTEUoc2NyaXB0cywKK1sgIC0tZGlzYWJsZS1zY3JpcHRzICAgICAgICAgICAgICAgRG8gbm90IGluc3RhbGwgdGhlIHNjcmlwdHMgKG1pYjJjLCAuLi4pLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9zY3JpcHRzIiAhPSAieG5vIjsgdGhlbgorICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBsb2NhbCIKK2ZpCisKKyMgICAgICAgTUlCIGZpbGVzCisjCitBQ19BUkdfRU5BQkxFKG1pYnMsCitbICAtLWRpc2FibGUtbWlicyAgICAgICAgICAgICAgICAgIERvIG5vdCBpbnN0YWxsIHRoZSBtaWIgZmlsZXMuXSkKK2lmIHRlc3QgIngkZW5hYmxlX21pYnMiICE9ICJ4bm8iOyB0aGVuCisgICBNQUlOU1VCUz0iJE1BSU5TVUJTIG1pYnMiCitmaQorIyB3aXRoLW1pYnMgaXMgdmFsaWQgdG9vLCBidXQgbWVhbnMgc29tZXRoaW5nIGVsc2UKKworQUNfU1VCU1QoTUFJTlNVQlMpCitBQ19NU0dfQ0hFQ0tJTkcoW3doYXQgdG8gYnVpbGQgYW5kIGluc3RhbGxdKQorQUNfTVNHX1JFU1VMVChbJE1BSU5TVUJTXSkKKworCisjICAgICAgIE1JQiBtb2R1bGUgdmFsaWRhdGlvbiAoZHVyaW5nICJjb25maWd1cmUiKQorIworTkVUU05NUF9BUkdfRU5BQkxFKG1pYi1jb25maWctY2hlY2tpbmcsCitbICAtLWVuYWJsZS1taWItY29uZmlnLWNoZWNraW5nICAgIFR1cm5zIG9uIGV4dHJhIGNoZWNrcyBkdXJpbmcgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIG1pYiBtb2R1bGVzLiBBbnkgY29uZmxpY3RzIHdpbGwgY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgdG8gYWJvcnQgKGRlZmF1bHQgaXMgdG8gaXNzdWUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgYW5kIGNvbnRpbnVlLildLAorICBbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSB5ZXMgLW8gIiRlbmFibGV2YWwiID0gbm8gOyB0aGVuCisgICAgIHdpdGhfbWliX2NmZ19jaGVja3M9IiRlbmFibGV2YWwiCisgICBlbHNlCisgICAgIEFDX01TR19FUlJPUihbUGxlYXNlIHVzZSAtLWVuYWJsZS8tLWRpc2FibGUtbWliLWNvbmZpZy1jaGVja2luZ10pCisgICBmaV0sCisgIFt3aXRoX21pYl9jZmdfY2hlY2tzPSJubyJdKQorCitORVRTTk1QX0FSR19FTkFCTEUobWliLWNvbmZpZy1kZWJ1ZywKK1sgIC0tZW5hYmxlLW1pYi1jb25maWctZGVidWcgICAgICAgVHVybnMgb24gdmVyYm9zZSBvdXRwdXQgZHVyaW5nIG1pYiBtb2R1bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgcHJvY2Vzc2luZy5dLAorICBbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSB5ZXMgLW8gIiRlbmFibGV2YWwiID0gbm8gOyB0aGVuCisgICAgIHdpdGhfbWliX2NmZ19kZWJ1Zz0iJGVuYWJsZXZhbCIKKyAgIGVsc2UKKyAgICAgQUNfTVNHX0VSUk9SKFtQbGVhc2UgdXNlIC0tZW5hYmxlLy0tZGlzYWJsZS1taWItY29uZmlnLWRlYnVnXSkKKyAgIGZpXSwKKyAgW3dpdGhfbWliX2NmZ19kZWJ1Zz0ibm8iXSkKKworCisjICAgICAgIFZlcnNpb24tc3BlY2lmaWMgZmVhdHVyZXMKKyMKK0FDX0FSR19FTkFCTEUoW25ldy1mZWF0dXJlc10sCisgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtbmV3LWZlYXR1cmVzXSwKKyAgICAgICAgICAgICAgICBbQ29tcGlsZSBpbiBuZXcgTUlCIG1vZHVsZXMgYW5kIG90aGVyIGV4cGVyaW1lbnRhbCBmZWF0dXJlcworICAgICAgICAgICAgICAgICB3aGljaCBhcmUgZHVlIHRvIGJlIGluY2x1ZGVkIGluIGZ1dHVyZSByZWxlYXNlcy5dKV0pCisKK0FDX0FSR19FTkFCTEUoW29sZC1mZWF0dXJlc10sCisgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtb2xkLWZlYXR1cmVzXSwKKyAgICAgICAgICAgICAgICBbQ29tcGlsZSBpbiBvbGQgTUlCIG1vZHVsZXMgYW5kIG90aGVyIGRlcHJlY2F0ZWQgZmVhdHVyZXMKKyAgICAgICAgICAgICAgICAgd2hpY2ggd2VyZSByZXBsYWNlZCBpbiB0aGUgZGVmYXVsdCBidWlsZCBvZiB0aGlzIHJlbGVhc2UuXSldKQorCitBQ19BUkdfV0lUSChbZmVhdHVyZXMtb2ZdLAorICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1mZWF0dXJlcy1vZj12ZXJzaW9uXSwKKyAgICAgICAgICAgICAgICBbQ29tcGlsZSBpbiBNSUIgbW9kdWxlcyBhbmQgb3RoZXIgZmVhdHVyZXMgYXMgaWYgdGhpcyB3YXMKKyAgICAgICAgICAgICAgICAgcmVsZWFzZSAidmVyc2lvbiIgKGRlZmF1bHQgaXMgXUFDX1BBQ0tBR0VfVkVSU0lPTlspLl0pXSwsCisgICAgICAgIFt3aXRoX2ZlYXR1cmVzX29mPSRQQUNLQUdFX1ZFUlNJT05dKQorICAgCisKKyMgICAgICAgTWFudWFsIHByb21wdGluZyBkdXJpbmcgImNvbmZpZ3VyZSIKKyMKK05FVFNOTVBfQVJHX1dJVEgoZGVmYXVsdHMsCitbCitNaXNjZWxsYW5lb3VzOgorICAtLXdpdGgtZGVmYXVsdHMgICAgICAgICBVc2UgZGVmYXVsdHMgZm9yIHByb21wdGVkIHZhbHVlcy5dLAorICBbaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzIC1vICIkd2l0aHZhbCIgPSBubyA7IHRoZW4KKyAgICAgZGVmYXVsdHM9IiR3aXRodmFsIgorICAgZWxzZQorICAgICBBQ19NU0dfRVJST1IoW1BsZWFzZSB1c2UgLS13aXRoLy0td2l0aG91dC1kZWZhdWx0c10pCisgICBmaV0sCisgIFtkZWZhdWx0cz0ibm8iXSkKKworCisjICAgICAgIFVDRCBjb21wYXRhYmlsaXR5CisjCitORVRTTk1QX0FSR19FTkFCTEUodWNkLXNubXAtY29tcGF0aWJpbGl0eSwKK1sgIC0tZW5hYmxlLXVjZC1zbm1wLWNvbXBhdGliaWxpdHkgSW5zdGFsbCB1Y2Qtc25tcCBsb29rLWFsaWtlIGhlYWRlcnMgYW5kIGxpYnMuCitdKQorCitpZiB0ZXN0ICJ4JGVuYWJsZV91Y2Rfc25tcF9jb21wYXRpYmlsaXR5IiA9ICJ4eWVzIiA7IHRoZW4JCisgIGluc3RhbGx1Y2RoZWFkZXJzPWluc3RhbGx1Y2RoZWFkZXJzCisgIGluc3RhbGx1Y2RsaWJzPWluc3RhbGx1Y2RsaWJzCisgIEFDX01TR19DQUNIRV9BREQoVUNELVNOTVAgY29tcGF0YWJpbGl0eTogICAgIGVuYWJsZWQpCitmaQorQUNfU1VCU1QoaW5zdGFsbHVjZGhlYWRlcnMpCitBQ19TVUJTVChpbnN0YWxsdWNkbGlicykKKworCisjIworIyAgIFByb2plY3Q6IExpYnJhcnk6IE1JQiBjb25maWd1cmF0aW9uIHNldHRpbmdzCisjIworCitORVRTTk1QX0FSR19FTkFCTEUobWliLWxvYWRpbmcsCitbICAtLWRpc2FibGUtbWliLWxvYWRpbmcgICAgICAgICAgIERvIG5vdCBpbmNsdWRlIGNvZGUgdGhhdCBwYXJzZXMgYW5kIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlwdWxhdGVzIHRoZSBtaWIgZmlsZXMuXSkKK2lmIHRlc3QgIngkZW5hYmxlX21pYl9sb2FkaW5nIiA9ICJ4bm8iOyB0aGVuCisgIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HXSwgMSwgCisgICAgICAgICAgICBbRGVmaW5lIGlmIG1pYiBsb2FkaW5nIGFuZCBwYXJzaW5nIGNvZGUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZF0pCitmaQorCitORVRTTk1QX0FSR19XSVRIKG1pYmRpcnMsCitbICAtLXdpdGgtbWliZGlycz0iZGlyMTpkaXIyOiIgICBEZWZhdWx0IGRpcmVjdG9yaWVzIHRvIGxvb2sgZm9yIG1pYnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IFwkSE9NRS8uc25tcC9taWJzOkRBVEFESVIvc25tcC9taWJzKV0sCisgICAgW05FVFNOTVBfREVGQVVMVF9NSUJESVJTPSIkd2l0aF9taWJkaXJzIgorICAgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfTUlCRElSUywiJHdpdGhfbWliZGlycyIsCisgICAgICAgIFtkZWZhdWx0IGxvY2F0aW9uIHRvIGxvb2sgZm9yIG1pYnMgdG8gbG9hZCB1c2luZyB0aGUgYWJvdmUgdG9rZW5zCisgICAgICAgICBhbmQvb3IgdGhvc2UgaW4gdGhlIE1JQlMgZW52cmlvbm1lbnQgdmFyaWFibGVdKV0pCisKK0FDX0FSR19XSVRIKG1pYnMsCitbICAtLXdpdGgtbWlicz0iaXRlbTE6aXRlbTI6IiAgICBEZWZhdWx0IG1pYiBJRHMgdG8gcmVhZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVGhlIGRlZmF1bHQgbGlzdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU05NUHYyLU1JQjpJRi1NSUI6SVAtTUlCOlRDUC1NSUI6VURQLU1JQiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBhZGRpdGlvbiBvZiBhbnkgbWlicyB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIG1pYiBtb2R1bGVzIHRoZSBhZ2VudCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZWQgd2l0aCldLAorICAgIE5FVFNOTVBfREVGQVVMVF9NSUJTPSIkd2l0aF9taWJzIikKKyMgZW5hYmxlLW1pYnMgaXMgdmFsaWQgdG9vLCBidXQgbWVhbnMgc29tZXRoaW5nIGVsc2UKKworTkVUU05NUF9BUkdfV0lUSChtaWJmaWxlcywKK1sgIC0td2l0aC1taWJmaWxlcz0iZmlsZTE6ZmlsZTIiIERlZmF1bHQgbWliIGZpbGVzIHRvIGxvYWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6ICBub25lLiAgdXNlcyBJRHMgYWJvdmUgaW5zdGVhZC4pXSwKKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX01JQkZJTEVTLCIkd2l0aF9taWJmaWxlcyIsCisgICAgICAgIFtkZWZhdWx0IG1pYiBmaWxlcyB0byBsb2FkLCBzcGVjaWZpZWQgYnkgcGF0aC5dKSkKKworCisjIworIyAgIFByb2plY3Q6IExpYnJhcnk6IFNlY3VyaXR5IGNvbmZpZ3VyYXRpb24KKyMjCisKK05FVFNOTVBfQVJHX0VOQUJMRShkZXMsCitbICAtLWRpc2FibGUtZGVzICAgICAgICAgICAgICAgICAgIERvIG5vdCBzdXBwb3J0IERFUyBlbmNyeXB0aW9uLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9kZXMiID0gInhubyI7IHRoZW4KKyAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfREVTXSwgMSwgCisgICAgICAgICAgICBbRGVmaW5lIGlmIERFUyBlbmNyeXB0aW9uIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkXSkKK2ZpCisKK05FVFNOTVBfQVJHX0VOQUJMRShwcml2YWN5LAorWyAgLS1kaXNhYmxlLXByaXZhY3kgICAgICAgICAgICAgICBEb24ndCBjb21waWxlIGluIHN1cHBvcnQgZm9yIHByaXZhY3kgKGVuY3J5cHRpb24pLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcml2YWN5IiAhPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfU0NBUElfQVVUSFBSSVYsIDEsCisgICAgW2RlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIHN1cHBvcnQgZm9yIGJvdGggYXV0aGVudGljYXRpb24gYW5kCisgICAgIHByaXZhY3kgc3VwcG9ydC5dKQorZmkKKworTkVUU05NUF9BUkdfRU5BQkxFKG1kNSwKK1sgIC0tZGlzYWJsZS1tZDUgICAgICAgICAgICAgICAgICAgRG8gbm90IHN1cHBvcnQgTUQ1IGF1dGhlbnRpY2F0aW9uLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9tZDUiID0gInhubyI7IHRoZW4KKyAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfTUQ1XSwgMSwgCisgICAgICAgICAgICBbRGVmaW5lIGlmIE1ENSBhdXRoZW50aWNhdGlvbiBzaG91bGQgbm90IGJlIHN1cHBvcnRlZF0pCitmaQorCitORVRTTk1QX0FSR19FTkFCTEUoaW50ZXJuYWwtbWQ1LAorWyAgLS1lbmFibGUtaW50ZXJuYWwtbWQ1ICAgICAgICAgICBVc2UgdGhlIGludGVybmFsIE1ENSBzdXBwb3J0Ll0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9pbnRlcm5hbF9tZDUiID0gInh5ZXMiOyB0aGVuCisgIGlmIHRlc3QgIngkZW5hYmxlX21kNSIgPSAieG5vIjsgdGhlbgorICAgIEFDX01TR19FUlJPUihZb3UgY2FuIG5vdCBzcGVjaWZ5IGJvdGggLS1lbmFibGUtaW50ZXJuYWwtbWQ1IGFuZCAtLWRpc2FibGUtbWQ1KQorICBlbHNlCisgICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENSwgMSwKKyAgICAgIFtkZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgTUQ1IGNvZGUgLi4uXSkKKyAgZmkKK2ZpCisKKworIyMKKyMgICBQcm9qZWN0OiBMaWJyYXJ5OiBNaXNjIGNvbmZpZ3VyYXRpb24KKyMjCisKK05FVFNOTVBfQVJHX1dJVEgob3BhcXVlLXNwZWNpYWwtdHlwZXMsCitbICAtLXdpdGhvdXQtb3BhcXVlLXNwZWNpYWwtdHlwZXMgIERvbid0IHVzZSBzcGVjaWFsIG9wYXF1ZSBlbmNvZGluZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUCBub3JtYWxseSBjYW5ub3QgaGFuZGxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmcgbnVtYmVycywgbm9yIGxhcmdlIDY0IGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVnZXJzIHdlbGwuICBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXQtc25tcCBwYWNrYWdlIGNvbXBpbGVzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlc2UgZXh0cmEgZGF0YXR5cGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluIGEgbGVnYWwgd2F5KV0pCisjIE9ubHkgZGVmaW5lIGlmIHNwZWNpZmljYWxseSBjaG9zZW4gYXMgLS13aXRob3V0IChpLmUuLCBkZWZhdWx0IHRvIHRydWUpLgoraWYgdGVzdCAieCR3aXRoX29wYXF1ZV9zcGVjaWFsX3R5cGVzIiAhPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9XSVRIX09QQVFVRV9TUEVDSUFMX1RZUEVTLCAxLAorICAgIFtTaG91bGQgd2UgY29tcGlsZSB0byB1c2Ugc3BlY2lhbCBvcGFxdWUgdHlwZXM6IGZsb2F0LCBkb3VibGUsIGNvdW50ZXI2NCwKKyAgICAgaTY0LCB1aTY0LCB1bmlvbj9dKQorZmkKKworTkVUU05NUF9BUkdfRU5BQkxFKGlwdjYsCitbICAtLWVuYWJsZS1pcHY2ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIElQdjYgcmVhZHkgdmVyc2lvbi5dLAorICAgIFtpZiB0ZXN0ICJ4JGVuYWJsZV9pcHY2IiA9ICJ4eWVzIjsgdGhlbgorICAgICAgQUNfREVGSU5FKE5FVFNOTVBfRU5BQkxFX0lQVjYsIDEsCisgICAgICAgIFtkZWZpbmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIElQdjYgc3VwcG9ydF0pCisgICAgZmldKQorCitORVRTTk1QX0FSR19XSVRIKGxvZ2ZpbGUsCitbICAtLXdpdGgtbG9nZmlsZT0ibG9jYXRpb24iICAgICAgIERlZmF1bHQgbG9nIGZpbGUgbG9jYXRpb24gZm9yIHNubXBkLl0sCisgICAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9MT0dGSUxFPSIkd2l0aF9sb2dmaWxlIikKK2lmIHRlc3QgIiRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0xPR0ZJTEUiID0gIm5vIjsgdGhlbgorICAgIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfTE9HRklMRT0ibm9uZSIKK2ZpCisKK05FVFNOTVBfQVJHX1dJVEgocGVyc2lzdGVudC1kaXJlY3RvcnksCitbICAtLXdpdGgtcGVyc2lzdGVudC1kaXJlY3Rvcnk9ImRpcmVjdG9yeSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IGRpcmVjdG9yeSBmb3IgcGVyc2lzdGVudCBkYXRhIHN0b3JhZ2UuXSxhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZPSIkd2l0aF9wZXJzaXN0ZW50X2RpcmVjdG9yeSIpCisKK05FVFNOTVBfQVJHX1dJVEgocGVyc2lzdGVudC1tYXNrLAorWyAgLS13aXRoLXBlcnNpc3RlbnQtbWFzaz0ibWFzayIgIERlZmF1bHQgbWFzayBmb3IgcGVyc2lzdGVudCBkYXRhIHN0b3JhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IDA3NyldLAorICBbaWYgdGVzdCBbYGV4cHIgIlgkd2l0aHZhbCIgOiAnWFswLTddKiQnYF0gLWVxIDQgOyB0aGVuCisgICAgIEFDX01TR19SRVNVTFQoW3VzaW5nIHBlcnNpc3RlbnQgbWFzayAkd2l0aHZhbF0pCisgICAgIHdpdGh2YWw9IjAkd2l0aHZhbCIKKyAgIGVsc2UKKyAgICAgQUNfTVNHX0VSUk9SKFtQbGVhc2UgcHJvdmlkZSBhIHRocmVlIGRpZ2l0IG9jdGFsIHBlcnNpc3RlbnQgbWFzayB2YWx1ZV0pCisgICBmaV0sCisgIFt3aXRodmFsPTA3NworICAgQUNfTVNHX1JFU1VMVChbdXNpbmcgZGVmYXVsdCBwZXJzaXN0ZW50IG1hc2sgJHdpdGh2YWxdKV0pCitBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9QRVJTSVNURU5UX01BU0ssJHdpdGh2YWwsCisgICBbdW1hc2sgcGVybWlzc2lvbnMgdG8gc2V0IHVwIHBlcnNpc3RlbnQgZmlsZXMgd2l0aF0pCisKK05FVFNOTVBfQVJHX1dJVEgoY29weV9wZXJzaXN0ZW50X2ZpbGVzLAorWyAgLS13aXRoLWNvcHktcGVyc2lzdGVudC1maWxlcz0ibm8iIERvbid0IGNvcHkgcGVyc2lzdGVudCBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciB1c2UgInllcyIgdG8gY29weSB0aGVtKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogeWVzKV0sCisgICAgYWNfY3ZfdXNlcl9wcm9tcHRfQ09QWV9QRVJTSVNURU5UX0ZJTEVTPSIkd2l0aF9jb3B5X3BlcnNpc3RlbnRfZmlsZXMiKQorCitkZWZhdWx0X3RlbXBfZmlsZV9wYXR0ZXJuPSIvdG1wL3NubXBkWFhYWFhYIgorTkVUU05NUF9BUkdfV0lUSCh0ZW1wLWZpbGUtcGF0dGVybiwKK1sgIC0td2l0aC10ZW1wLWZpbGUtcGF0dGVybj1QQVRURVJOICBQYXR0ZXJuIG9mIHRlbXBvcmFyeSBmaWxlcyAoRGVmYXVsdDogL3RtcC9zbm1wZFhYWFhYWCldLAorICBbaWYgdGVzdCBgZXhwciAiWCR3aXRodmFsIiA6ICIuKlhYWFhYWCQiYCAtbmUgMCA7IHRoZW4KKyAgICAgQUNfTVNHX1JFU1VMVCh1c2luZyB0ZW1wb3JhcnkgZmlsZSBwYXR0ZXJuICR3aXRodmFsKQorICAgZWxzZQorICAgICBBQ19NU0dfRVJST1IoW3RlbXBvcmFyeSBmaWxlIHBhdHRlbnMgbXVzdCBlbmQgd2l0aCA2IFgnc10pCisgICBmaV0sCisgIFt3aXRodmFsPSIkZGVmYXVsdF90ZW1wX2ZpbGVfcGF0dGVybiIKKyAgIEFDX01TR19SRVNVTFQodXNpbmcgZGVmYXVsdCB0ZW1wb3JhcnkgZmlsZSBwYXR0ZXJuICR3aXRodmFsKV0pCitBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9URU1QX0ZJTEVfUEFUVEVSTiwiJHdpdGh2YWwiLAorICBbUGF0dGVybiBvZiB0ZW1wb3JhcnkgZmlsZXNdKQorCisKKyMjCisjICAgUHJvamVjdDogTGlicmFyeTogVmVyc2lvbiBjb25maWd1cmF0aW9uCisjIworCitTTk1QX1ZFUlNJT05TPSIiCitORVRTTk1QX0FSR19FTkFCTEUoc25tcHYxLAorWyAgLS1kaXNhYmxlLXNubXB2MSAgICAgICAgICAgICAgICBEbyBub3QgaW5jbHVkZSBjb2RlIHRoYXQgaW1wbGVtZW50cyBTTk1QdjEuXSkKK2lmIHRlc3QgIngkZW5hYmxlX3NubXB2MSIgPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9TTk1QVjFdLCAxLCAKKyAgICAgICAgICAgIFtEZWZpbmUgaWYgU05NUHYxIGNvZGUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZF0pCitlbHNlCisgIFNOTVBfVkVSU0lPTlM9IiRTTk1QX1ZFUlNJT05TIDEiCitmaQorCitORVRTTk1QX0FSR19FTkFCTEUoc25tcHYyYywKK1sgIC0tZGlzYWJsZS1zbm1wdjJjICAgICAgICAgICAgICAgRG8gbm90IGluY2x1ZGUgY29kZSB0aGF0IGltcGxlbWVudHMgU05NUHYyYy5dKQoraWYgdGVzdCAieCRlbmFibGVfc25tcHYyYyIgPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9TTk1QVjJDXSwgMSwgCisgICAgICAgICAgICBbRGVmaW5lIGlmIFNOTVB2MmMgY29kZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkXSkKK2Vsc2UKKyAgU05NUF9WRVJTSU9OUz0iJFNOTVBfVkVSU0lPTlMgMmMiCitmaQorCitTTk1QX1ZFUlNJT05TPSIkU05NUF9WRVJTSU9OUyAzIgorQUNfTVNHX0NBQ0hFX0FERChTTk1QIFZlcnNpb25zIFN1cHBvcnRlZDogICAkU05NUF9WRVJTSU9OUykKKworTkVUU05NUF9BUkdfV0lUSChkZWZhdWx0LXNubXAtdmVyc2lvbiwKK1sgIC0td2l0aC1kZWZhdWx0LXNubXAtdmVyc2lvbj0iMyIgRGVmYXVsdCB2ZXJzaW9uIG9mIFNOTVAgdG8gdXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IDMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWdhbCB2YWx1ZXM6IDEsIDIgKGZvciBTTk1QdjJjKSBvciAzLl0sCisgICAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTj0iJHdpdGhfZGVmYXVsdF9zbm1wX3ZlcnNpb24iKQorCisjIHdlIHRlc3QgdGhpcyBub3cgYW5kIGxhdGVyIGFzIHdlbGwuICB3ZSB0ZXN0IGl0IG5vdyBzbyBjb25maWd1cmUgY2FuIGRpZQorIyBlYXJseSBvbiB3aXRoIGFuIGVycm9yIHJhdGhlciB0aGFuIHdhaXRpbmcgdGlsbCB0aGUgZW5kIG9mIHRoZSBzY3JpcHQuCitjYXNlICIke2FjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04tM30iIGluCisgIFtbMTIzXV0pIDs7CisgIDJjKSBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OPTIgOzsKKyAgKikKKyAgICBBQ19NU0dfRVJST1IoW0lsbGVnYWwgdmVyc2lvbiBudW1iZXIuICBPbmx5IDEsIDIgKGZvciBTTk1QdjJjKSBhbmQgMyBhcmUgc3VwcG9ydGVkLl0pCisgICAgOzsKK2VzYWMKKworCisjIworIyAgIFByb2plY3Q6IExpYnJhcnk6IFRyYW5zcG9ydCBtb2R1bGVzCisjIworCitBQ19BUkdfV0lUSCh0cmFuc3BvcnRzLAorWyAgLS13aXRoLXRyYW5zcG9ydHM9InQxIHQyIC4uLiIgICBDb21waWxlIGluIHRoZSBnaXZlbiBTTk1QIHRyYW5zcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlcyAoc3BhY2Ugb3IgY29tbWEgc2VwYXJhdGVkIGxpc3QpLl0pCitBQ19BUkdfV0lUSChvdXRfdHJhbnNwb3J0cywKK1sgIC0td2l0aC1vdXQtdHJhbnNwb3J0cz0idDEgLi4uIiAgRXhjbHVkZSBsaXN0ZWQgU05NUCB0cmFuc3BvcnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BhY2Ugb3IgY29tbWEgc2VwYXJhdGVkIGxpc3QpLgorCisgIEF2YWlsYWJsZSBTTk1QIHRyYW5zcG9ydCBtb2R1bGVzIGFyZToKKworICAgIFVEUCAgICAgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBVRFAvSVAuCisgICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgYWx3YXlzIGNvbXBpbGVkIGluLgorICAgIFVEUElQdjYgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBVRFAvSVB2Ni4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBhdmFpbGFibGUgZm9yIExpbnV4LCBTb2xhcmlzIGFuZAorICAgICAgICAgICAgICAgIEZyZWVCU0QgYXQgbGVhc3QuCisgICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCBpZiBJUHY2IHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAgICBUQ1BJUHY2ICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgVURQL0lQdjYuCisgICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgYXZhaWxhYmxlIGZvciBMaW51eCwgU29sYXJpcyBhbmQKKyAgICAgICAgICAgICAgICBGcmVlQlNEIGF0IGxlYXN0LgorICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQgaWYgSVB2NiBzdXBwb3J0IGlzIGVuYWJsZWQuCisgICAgVENQICAgICAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIFRDUC9JUC4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0LCBidXQgbWF5IGJlIG9taXR0ZWQuCisgICAgVW5peCAgICAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIFVuaXggZG9tYWluIHByb3RvY29scy4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0IGV4Y2VwdCBvbiBXaW4zMgorICAgICAgICAgICAgICAgIHBsYXRmb3JtcywgYW5kIG1heSBiZSBvbWl0dGVkLgorICAgIENhbGxiYWNrICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBhbiBpbnRlcm5hbCBsb2NhbGx5IGNvbm5lY3RlZCBwYWlyCisgICAgICAgICAgICAgICAgb2Ygc25tcF9zZXNzaW9ucy4KKyAgICBBbGlhcyAgICAgICBUaGUgYWxpYXMgdHJhbnNwb3J0IHNpbXBseSBsZXRzIHlvdSBkZWZpbmUgbW9yZSBjb21wbGV4CisgICAgICAgICAgICAgICAgdHJhbnNwb3J0IHN0cmluZ3MgYW5kIGFsaWFzIHRoZW0gdG8gc2ltcGxlIG5hbWVzIGluCisgICAgICAgICAgICAgICAgdGhlIHNubXAuY29uZiBmaWxlLgorICAgIEFBTDVQVkMgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBBQUw1IFBWQ3MuCisgICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgcHJlc2VudGx5IG9ubHkgYXZhaWxhYmxlIGZvciBMaW51eCwKKyAgICAgICAgICAgICAgICBpcyBuZXZlciBjb21waWxlZCBpbiBieSBkZWZhdWx0IGFuZCBtYXkgYmUgb21pdHRlZC4KKyAgICBJUFggICAgICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgSVBYIHBlciBSRkMgMTQyMC4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBwcmVzZW50bHkgb25seSBhdmFpbGFibGUgZm9yIExpbnV4LAorICAgICAgICAgICAgICAgIGlzIG5ldmVyIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQgYW5kIG1heSBiZSBvbWl0dGVkLgorICAgIFNTSCAgICAgICAgIChhbHBoYSkgc3VwcG9ydCBmb3IgdHVubmVsaW5nIFNOTVAgb3ZlciBTU0gKKyAgICBEVExTVURQICAgICAoYWxwaGEpIHN1cHBvcnQgZm9yIHR1bm5lbGluZyBTTk1QIG92ZXIgRFRMUy9VRFAKK10pCisKKyMKKyMgQ2F0Y2ggY29tbW9uIG1pc3Rha2VzIGluIHRyYW5zcG9ydCBvcHRpb25zCisjCitBQ19BUkdfV0lUSCh0cmFuc3BvcnQsLCBORVRTTk1QX0lOVkFMSURfV0lUSChbdHJhbnNwb3J0c10pKQorQUNfQVJHX1dJVEgob3V0LXRyYW5zcG9ydCwsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtvdXQtdHJhbnNwb3J0c10pKQorCisKKyMjCisjICAgUHJvamVjdDogTGlicmFyeTogU2VjdXJpdHkgbW9kdWxlcworIyMKKworTkVUU05NUF9BUkdfV0lUSChzZWN1cml0eS1tb2R1bGVzLAorWyAgLS13aXRoLXNlY3VyaXR5LW1vZHVsZXM9InMxIHMyIC4uLiIgICBDb21waWxlIGluIHRoZSBnaXZlbiBTTk1QIHNlY3VyaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgc2VydmljZXMgKHNwYWNlIHNlcGFyYXRlZCBsaXN0KS4KKworICBBdmFpbGFibGUgU05NUCBzZWN1cml0eSBzZXJ2aWNlczoKKworICAgICAgICB1c20gICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdXNlciBiYXNlZCBTTk1QIHNlY3VyaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWlyZWQgYW5kIGFsd2F5cyBjb21waWxlZCBpbikKKyAgICAgICAga3NtICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIGtlcmJlcm9zIGJhc2VkIFNOTVAgc2VjdXJpdHkKKyAgICAgICAgdHNtICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBUcmFuc3BvcnQtYmFzZWQgc2VjdXJpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgdXNlIHdpdGggdGhlIFNTSCBhbmQgRFRMU1VEUCB0cmFuc3BvcnRzKQorXSkKKworCisjIworIyAgIFByb2plY3Q6IExpYnJhcnk6IERldmVsb3Blci1yZWxhdGVkIHNldHRpbmdzCisjIworCitORVRTTk1QX0FSR19FTkFCTEUoZGVidWdnaW5nLAorWyAgLS1lbmFibGUtZGVidWdnaW5nICAgICAgICAgICAgICBPdXRwdXRzIGV4dHJhIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBhdCBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcy4gIE5vcm1hbGx5LCB5b3Ugc2hvdWxkIG5vdCBlbmFibGUgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgaW5zdGVhZCB1c2UgdGhlIC1EIGZsYWcgb2YgdGhlIGNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRvZ2dsZXMgZGVidWdpbmcgb3V0cHV0IGF0IHJ1bnRpbWUuCisgIC0tZGlzYWJsZS1kZWJ1Z2dpbmcgICAgICAgICAgICAgRGlzYWxsb3dzIGRlYnVnZ2luZyBjb2RlIHRvIGJlIGJ1aWx0IGluLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWlnaHQgcHJvdmlkZSBzb21lIHNwZWVkIGJlbmVmaXRzLl0sCisgICAgQUNfREVGSU5FKE5FVFNOTVBfQUxXQVlTX0RFQlVHKSkKK2lmIHRlc3QgIngkZW5hYmxlX2RlYnVnZ2luZyIgPSAieG5vIjsgdGhlbgorICAgIEFDX0RFRklORShORVRTTk1QX05PX0RFQlVHR0lORykKK2ZpCisKK05FVFNOTVBfQVJHX0VOQUJMRShkZXZlbG9wZXIsCitbICAtLWVuYWJsZS1kZXZlbG9wZXIgICAgICAgICAgICAgIFR1cm5zIG9uIHN1cGVyLWR1cGVyLWV4dHJhLWNvbXBpbGUtd2FybmluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHVzaW5nIGdjYy5dLAorICBbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSB5ZXMgOyB0aGVuCisgICAgIGRldmVsb3Blcj0ieWVzIgorICAgZWxpZiB0ZXN0ICIkZW5hYmxldmFsIiAhPSBubyA7IHRoZW4KKyAgICAgQUNfTVNHX0VSUk9SKFtQbGVhc2UgdXNlIC0tZW5hYmxlLy0tZGlzYWJsZS1kZXZlbG9wZXJdKQorICAgZmldKQorCitORVRTTk1QX0FSR19FTkFCTEUodGVzdGluZy1jb2RlLAorWyAgLS1lbmFibGUtdGVzdGluZy1jb2RlICAgICAgICAgICBFbmFibGVzIHNvbWUgY29kZSBzZWN0aW9ucyB0aGF0IHNob3VsZCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IGJlIHVzZWQgZm9yIHRlc3Rpbmcgb2YgY2VydGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVAgZnVuY3Rpb25hbGl0aWVzLiAgVGhpcyBzaG91bGQgKm5vdCogCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgdHVybmVkIG9uIGZvciBwcm9kdWN0aW9uIHVzZS4gIEV2ZXIuXSwKKyAgW2lmIHRlc3QgIiRlbmFibGV2YWwiID0geWVzIDsgdGhlbgorICAgICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFLCAxLCBbdGVzdGluZyBjb2RlIHNlY3Rpb25zLl0pCisgICBlbGlmIHRlc3QgIiRlbmFibGV2YWwiICE9IG5vIDsgdGhlbgorICAgICBBQ19NU0dfRVJST1IoW1BsZWFzZSB1c2UgLS1lbmFibGUvLS1kaXNhYmxlLXRlc3RpbmctY29kZV0pCisgICBmaV0pCisKK05FVFNOTVBfQVJHX0VOQUJMRShyZWVudHJhbnQsCitbICAtLWVuYWJsZS1yZWVudHJhbnQgICAgICAgICAgICAgIEVuYWJsZXMgbG9ja2luZyBmdW5jdGlvbnMgdGhhdCBwcm90ZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSByZXNvdXJjZXMgaW4gc29tZSBtdWx0aS10aHJlYWRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudHMuICBUaGlzIGRvZXMgbm90IGd1YXJhbnRlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZC1zYWZlIG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50bHkgYW4gZXhwZXJpbWVudGFsIHNldHRpbmcuXSwKKyAgW2lmIHRlc3QgIiRlbmFibGV2YWwiID0geWVzIC1vICIkZW5hYmxldmFsIiA9IG5vIDsgdGhlbgorICAgICB3aXRoX3Jlc19sb2Nrcz0iJGVuYWJsZXZhbCIKKyAgIGVsc2UKKyAgICAgQUNfTVNHX0VSUk9SKFtQbGVhc2UgdXNlIC0tZW5hYmxlLy0tZGlzYWJsZS1yZWVudHJhbnRdKQorICAgZmldLAorICBbd2l0aF9yZXNfbG9ja3M9Im5vIl0pCisKK05FVFNOTVBfQVJHX0VOQUJMRShkZXByZWNhdGVkLAorWyAgLS1kaXNhYmxlLWRlcHJlY2F0ZWQgICAgICAgICAgICBEb24ndCBjb21waWxlIGluIGRlcHJlY2F0ZWQgZnVuY3Rpb25zLl0pCitpZiB0ZXN0ICIkZW5hYmxlX2RlcHJlY2F0ZWQiID0gbm8gOyB0aGVuCisgICBBQ19ERUZJTkUoW05FVFNOTVBfTk9fREVQUkVDQVRFRF9GVU5DVElPTlNdLCAxLAorICAgICAgICAgICAgIFtEZWZpbmUgdG8gc3VwcHJlc3MgaW5jbHVzaW9uIG9mIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXSkKK2ZpCisKKworCisjIworIyAgIFByb2plY3Q6IEFnZW50IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MKKyMjCisKK05FVFNOTVBfQVJHX1dJVEgocm9vdC1hY2Nlc3MsCitbCitDb25maWd1cmluZyB0aGUgYWdlbnQ6CisgIC0td2l0aG91dC1yb290LWFjY2VzcyAgICAgICAgICAgVGhlIHNubXBkIGFnZW50IHdvbid0IHJlcXVpcmUgcm9vdCBhY2Nlc3MgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW4gaXQuICBUaGUgaW5mb3JtYXRpb24gaXQgcmV0dXJucyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWItSUkgdHJlZSBtYXkgbm90IGJlIGNvcnJlY3QsIGhvd2V2ZXIuXSkKKyMgT25seSBkZWZpbmUgaWYgc3BlY2lmaWNhbGx5IGNob3NlbiBhcyAtLXdpdGhvdXQgKGkuZS4sIGRlZmF1bHQgdG8gdHJ1ZSkuCitpZiB0ZXN0ICJ4JHdpdGhfcm9vdF9hY2Nlc3MiID0gInhubyI7IHRoZW4KKyAgQUNfREVGSU5FKE5FVFNOTVBfTk9fUk9PVF9BQ0NFU1MsIDEsCisgICAgW0lmIHlvdSBkb24ndCBoYXZlIHJvb3QgYWNjZXNzIGRvbid0IGV4aXQgdXBvbiBrbWVtIGVycm9yc10pCitmaQorCitORVRTTk1QX0FSR19XSVRIKGttZW0tdXNhZ2UsCitbICAtLXdpdGhvdXQta21lbS11c2FnZSAgICAgICAgICAgIERvIG5vdCBpbmNsdWRlIGFueSBjb2RlIHJlbGF0ZWQgdG8gdGhlIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGttZW0uXSkKKyMgT25seSBkZWZpbmUgaWYgc3BlY2lmaWNhbGx5IGNob3NlbiBhcyAtLXdpdGhvdXQgKGkuZS4sIGRlZmF1bHQgdG8gdHJ1ZSkuCitpZiB0ZXN0ICJ4JHdpdGhfa21lbV91c2FnZSIgPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9OT19LTUVNX1VTQUdFLCAxLCBbSWYgd2UgZG9uJ3Qgd2FudCB0byB1c2Uga21lbS5dKQorZmkKKworTkVUU05NUF9BUkdfV0lUSChkdW1teS12YWx1ZXMsCitbICAtLXdpdGgtZHVtbXktdmFsdWVzICAgICAgICAgICAgIFByb3ZpZGUgJ3BsYWNlaG9sZGVyJyBkdW1teSB2YWx1ZXMgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0ZWNobmljYWxseSBub3QgY29tcGxpYW50IHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUCBzcGVjaWZpY2F0aW9ucywgYnV0IHdhcyBob3cgdGhlIGFnZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0ZWQgZm9yIHZlcnNpb25zIDwgNC4wLl0pCisjIERlZmluZSB1bmxlc3Mgc3BlY2lmaWNhbGx5IHN1cHByZXNzZWQgKGkuZS4sIG9wdGlvbiBkZWZhdWx0cyB0byBmYWxzZSkuCitpZiB0ZXN0ICJ4JHdpdGhfZHVtbXlfdmFsdWVzIiAhPSAieHllcyI7IHRoZW4KKyAgQUNfREVGSU5FKE5FVFNOTVBfTk9fRFVNTVlfVkFMVUVTLCAxLAorICAgIFtJZiB5b3UgZG9uJ3Qgd2FudCB0aGUgYWdlbnQgdG8gcmVwb3J0IG9uIHZhcmlhYmxlcyBpdCBkb2Vzbid0IGhhdmUKKyAgICAgZGF0YSBmb3JdKQorZmkKKworTkVUU05NUF9BUkdfRU5BQkxFKHNldC1zdXBwb3J0LAorWyAgLS1kaXNhYmxlLXNldC1zdXBwb3J0ICAgICAgICAgICBEbyBub3QgYWxsb3cgU05NUCBzZXQgcmVxdWVzdHMuXSkKK2lmIHRlc3QgIngkZW5hYmxlX3NldF9zdXBwb3J0IiA9ICJ4bm8iOyB0aGVuCisgIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUXSwgMSwgCisgICAgICAgICAgICBbRGVmaW5lIGlmIFNOTVAgU0VUIHN1cHBvcnQgc2hvdWxkIGJlIGRpc2FibGVkXSkKK2ZpCisKKworTkVUU05NUF9BUkdfV0lUSChzeXNfY29udGFjdCwKK1sgIC0td2l0aC1zeXMtY29udGFjdD0id2hvQHdoZXJlIiAgRGVmYXVsdCBzeXN0ZW0gY29udGFjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWZhdWx0OiBMT0dJTkBET01BSU5OQU1FKV0sCisgICAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9TWVNfQ09OVEFDVD0iJHdpdGhfc3lzX2NvbnRhY3QiKQorCitORVRTTk1QX0FSR19XSVRIKHN5c19sb2NhdGlvbiwKK1sgIC0td2l0aC1zeXMtbG9jYXRpb249ImxvY2F0aW9uIiAgRGVmYXVsdCBzeXN0ZW0gbG9jYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogVW5rbm93bildLAorICAgIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfU1lTX0xPQz0iJHdpdGhfc3lzX2xvY2F0aW9uIikKKworCisKKyMjCisjICAgUHJvamVjdDogQWdlbnQ6IEV4dGVuc2liaWxpdHkgY29uZmlndXJhdGlvbgorIyMKKworTkVUU05NUF9BUkdfRU5BQkxFKGxvY2FsLXNtdXgsCitbICAtLWVuYWJsZS1sb2NhbC1zbXV4ICAgICAgICAgICAgIFJlc3RyaWN0IFNNVVggY29ubmVjdGlvbnMgdG8gbG9jYWxob3N0IChieSBkZWZhdWx0KS5dLAorICAgIFtpZiB0ZXN0ICJ4JGVuYWJsZV9sb2NhbF9zbXV4IiA9ICJ4eWVzIjsgdGhlbgorICAgICAgQUNfREVGSU5FKE5FVFNOTVBfRU5BQkxFX0xPQ0FMX1NNVVgsIDEsCisgICAgICAgICAgW2RlZmluZSBpZiB5b3Ugd2FudCB0byByZXN0cmljdCBTTVVYIGNvbm5lY3Rpb25zIHRvIGxvY2FsaG9zdAorICAgICAgICAgICBieSBkZWZhdWx0XSkKKyAgICBmaV0pCisKK05FVFNOTVBfQVJHX0VOQUJMRShhZ2VudHgtZG9tLXNvY2stb25seSwKK1sgIC0tZW5hYmxlLWFnZW50eC1kb20tc29jay1vbmx5ICAgRGlzYWJsZSBVRFAvVENQIHRyYW5zcG9ydHMgZm9yIGFnZW50eC5dLAorQUNfREVGSU5FKE5FVFNOTVBfQUdFTlRYX0RPTV9TT0NLX09OTFksIDEsCisgICAgW2RlZmluZSBpZiBhZ2VudHggdHJhbnNwb3J0IGlzIHRvIHVzZSBkb21haW4gc29ja2V0cyBvbmx5XSkpCisKK05FVFNOTVBfQVJHX0VOQUJMRShzbm1wdHJhcGQtc3ViYWdlbnQsCitbICAtLWRpc2FibGUtc25tcHRyYXBkLXN1YmFnZW50ICAgIERpc2FibGUgYWdlbnR4IHN1YmFnZW50IGNvZGUgaW4gc25tcHRyYXBkLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9zbm1wdHJhcGRfc3ViYWdlbnQiID0gInhubyI7IHRoZW4KKyAgQUNfREVGSU5FKE5FVFNOTVBfU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYLCAxLAorICAgIFtkZWZpbmUgaWYgeW91IGRvIG5vdCB3YW50IHNubXB0cmFwZCB0byByZWdpc3RlciBhcyBhbiBBZ2VudFggc3ViYWdlbnRdKQorZmkKKworZGVmYXVsdF9hZ2VudHhfc29ja2V0PSIvdmFyL2FnZW50eC9tYXN0ZXIiCitORVRTTk1QX0FSR19XSVRIKGFnZW50eC1zb2NrZXQsCitbICAtLXdpdGgtYWdlbnR4LXNvY2tldD1GSUxFICAgICAgICAgQWdlbnRYIHNvY2tldCAoRGVmYXVsdDogL3Zhci9hZ2VudHgvbWFzdGVyIGFzIHNwZWNpZmllZCBpbiBSRkMyNzQxKV0sWworICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIGZ1bGwgcGF0aCBdKTsKKyAgZmkKKyAgQUNfTVNHX1JFU1VMVCh1c2luZyBBZ2VudFggc29ja2V0ICR3aXRodmFsKQorXSxbCisgIHdpdGh2YWw9JGRlZmF1bHRfYWdlbnR4X3NvY2tldAorICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgQWdlbnRYIHNvY2tldCAkZGVmYXVsdF9hZ2VudHhfc29ja2V0KQorXSkKK0FDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0FHRU5UWF9TT0NLRVQsIiR3aXRodmFsIiwKKyAgICAgICAgW1VuaXggZG9tYWluIHNvY2tldCBmb3IgQWdlbnRYIG1hc3Rlci1zdWJhZ2VudCBjb21tdW5pY2F0aW9uXSkKKworCisjIworIyAgIFByb2plY3Q6IEFnZW50OiBNSUIgbW9kdWxlIGNvbmZpZ3VyYXRpb24KKyMjCisKK05FVFNOTVBfQVJHX0VOQUJMRShtaW5pX2FnZW50LAorWyAgLS1lbmFibGUtbWluaS1hZ2VudCAgICAgICAgICAgICBCdWlsZCBhIG1pbmltYWwgYWdlbnQuXSkKK2lmIHRlc3QgIngkZW5hYmxlX21pbmlfYWdlbnQiID0gInh5ZXMiOyB0aGVuCisgICAgbWluaV9hZ2VudD0ieWVzIgorZWxzZQorICAgIG1pbmlfYWdlbnQ9Im5vIgorZmkKK0FDX0FSR19XSVRIKFttaW5pYWdlbnRdLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFttaW5pLWFnZW50XSkpCitBQ19BUkdfRU5BQkxFKFttaW5pYWdlbnRdLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFttaW5pLWFnZW50XSkpCisKK05FVFNOTVBfQVJHX0VOQUJMRShtZmQtcmV3cml0ZXMsCitbICAtLWVuYWJsZS1tZmQtcmV3cml0ZXMgICAgICAgICAgIFVzZSBuZXcgTUZEIHJld3JpdGVzIG9mIG1pYiBtb2R1bGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIGF2YWlsYWJsZS4gKGRlZmF1bHQgaXMgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgbWliIG1vZHVsZSBjb2RlKS5dKQoraWYgdGVzdCAieCRlbmFibGVfbWZkX3Jld3JpdGVzIiA9ICJ4eWVzIjsgdGhlbgorICAgQUNfREVGSU5FKE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUywgMSwKKyAgICAgW0RlZmluZSBpZiB5b3Ugd2FudCB0byBidWlsZCBNRkQgbW9kdWxlIHJld3JpdGVzXSkKK2ZpCisKKworTkVUU05NUF9BUkdfV0lUSChtaWJfbW9kdWxlcywKK1sgIC0td2l0aC1taWItbW9kdWxlcz0iaXRlbTEgLi4uIiAgQ29tcGlsZSB3aXRoIGFkZGl0aW9uYWwgbWliIG1vZHVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTcGFjZSBzZXBhcmF0ZWQgbGlzdCkuXSkKKworTkVUU05NUF9BUkdfV0lUSChvdXRfbWliX21vZHVsZXMsCitbICAtLXdpdGgtb3V0LW1pYi1tb2R1bGVzPSJsaXN0IiAgIENvbXBpbGUgd2l0aG91dCB0aGVzZSBtaWIgbW9kdWxlcy4KKworICBEZWZhdWx0IG1pYiBtb2R1bGVzIGNvbXBpbGVkIGludG8gdGhlIGFnZW50ICh3aGljaCBjYW4gYmUgcmVtb3ZlZCk6CisgIAorICAgIG1pYklJICAgICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIG1pYi1JSSB0cmVlLgorICAgIHNubXB2M21pYnMgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIHNubXB2MyBtaWIgbW9kdWxlcy4KKyAgICB1Y2Rfc25tcCAgICAgICAgICAgICAgIFVDRC1TTk1QLU1JQiBzcGVjaWZpYyBleHRlbnNpb25zLgorICAgIGFnZW50X21pYnMgICAgICAgICAgICAgTkVULVNOTVAtQUdFTlQtTUlCIGV4dGVuc2lvbnMKKyAgICBhZ2VudHggICAgICAgICAgICAgICAgIEFnZW50WCBzdXBwb3J0IChzZWUgYmVsb3cpCisgICAgbm90aWZpY2F0aW9uICAgICAgICAgICBtaWJzIHN1cHBvcnRpbmcgc3BlY2lmaWNhdGlvbiBvZiB0cmFwIGRlc3RpbmF0aW9ucy4KKyAgICB0YXJnZXQgICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9yIHRoZSBTTk1QIFdHcyBUQVJHRVQtTUlCLgorICAgIHV0aWxpdGllcyAgICAgICAgICAgICAgZ2VuZXJhbCBhZ2VudCBjb25maWd1cmF0aW9uIHV0aWxpdGllcy4KKyAgICBkaXNtYW4vZXZlbnQgICAgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBESVNNQU4tRVZFTlQtTUlCCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdXBwb3J0cyBzZWxmIG1vbml0b3JpbmcgYW5kIG5vdGlmaWNhdGlvbiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5IHdoZW4gZXJyb3IgY29uZGl0aW9ucyBhcmUgZm91bmQpCisgICAgZGlzbWFuL3NjaGVkdWxlICAgICAgICBzdXBwb3J0IGZvciB0aGUgRElTTUFOLVNDSEVEVUxFLU1JQgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJpZ2dlciBTRVQgcmVxdWVzdHMgYXQgc3BlY2lmaWVkIHRpbWVzKQorICAgIGhvc3QgICAgICAgICAgICAgICAgICAgaG9zdCByZXNvdXJjZXMgbWliIHN1cHBvcnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IG9uIG1ham9yIHN1cHBvcnRlZCBwbGF0Zm9ybXMpCisKKyAgT3B0aW9uYWwgbWliIG1vZHVsZXMgdGhhdCBjYW4gYmUgYnVpbHQgaW50byB0aGUgYWdlbnQgaW5jbHVkZToKKyAgICBzbXV4ICAgICAgICAgICAgICAgICAgIHNtdXggc3VwcG9ydCB0byBhbGxvdyBzdWJhZ2VudHMgdG8gYXR0YWNoIHRvIHNubXBkLgorICAgIG1pYklJL210YV9zZW5kbWFpbCAgICAgU2VuZG1haWwgc3RhdGlzdGljcyBtb25pdG9yaW5nIChNVEEtTUlCKQorICAgIHVjZC1zbm1wL2Rpc2tpbyAgICAgICAgVGFibGUgb2YgaW8tZGV2aWNlcyBhbmQgaG93IG11Y2ggZGF0YSB0aGV5IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQvd3JpdHRlbi4gIChvbmx5IHRlc3RlZCBvbiBTb2xhcmlzLCBMaW51eCkKKyAgICBkaXNtYW4vb2xkLWV2ZW50LW1pYiAgIHByZXZpb3VzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBESVNNQU4tRVZFTlQtTUlCCisKKyAgT3B0aW9uYWwgbW9kdWxlcyBmb3Igc3BlY2lmaWMgcGxhdGZvcm1zCisgICAgTGludXgKKyAgICAgIHVjZC1zbm1wL2xtU2Vuc29ycyAgIGhhcmR3YXJlIG1vbml0b3JpbmcgKExNLVNFTlNPUlMtTUlCKQorICAgICAgaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZSAgKGV4cGVyaW1lbnRhbCkKKyAgICAgIGlwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUgIChleHBlcmltZW50YWwpCisgICAgICB0dW5uZWwgICAgICAgICAgICAgICBMaW51eCBUVU5ORUwtTUlCIHN1cHBvcnQgKGlmVGFibGUgZXh0ZW5zaW9uKQorICAgICAgbWliSUkvaW50ZXJmYWNlcyAgICAgKG9sZCBpZlRhYmxlIGltcGxlbWVudGF0aW9uKQorICAgICAgbWlzYy9pcGZ3YWNjICAgICAgICAgYWNjb3VudGluZyBydWxlcyBJUCBmaXJld2FsbCBpbmZvcm1hdGlvbgorICAgICAgaXBmd2NoYWlucy9pcGZ3Y2hhaW5zICBmaXJld2FsbCBjaGFpbnMgdW5kZXIgaXBmdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2VlIGFnZW50L21pYmdyb3VwL2lwZndjaGFpbnMvUkVBRE1FKQorICAgICAgc2N0cC1taWIgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIFNDVFAtTUlCCisgICAgICBldGhlcmxpa2UtbWliICAgICAgICBzdXBwb3J0IGZvciB0aGUgRXRoZXJMaWtlLU1JQgorCisgICAgU29sYXJpcworICAgICAgdWNkLXNubXAvbG1TZW5zb3JzICAgaGFyZHdhcmUgbW9uaXRvcmluZyAoTE0tU0VOU09SUy1NSUIpCisgICAgICBpZi1taWIgICAgICAgICAgICAgICBJRi1NSUIgcmV3cml0ZSAoYWRkIC0tZW5hYmxlLW1mZC1yZXdyaXRlcykKKyAgICAgIHRjcC1taWIgICAgICAgICAgICAgIFRDUC1NSUIgcmV3cml0ZSAodGNwQ29ubmVjdGlvblRhYmxlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BMaXN0ZW5lclRhYmxlOyBhZGQgLS1lbmFibGUtbWZkLXJld3JpdGVzKQorICAgICAgdWRwLW1pYiAgICAgICAgICAgICAgVURQLU1JQiByZXdyaXRlICh1ZHBFbmRwb2ludFRhYmxlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgLS1lbmFibGUtbWZkLXJld3JpdGVzKQorCisgICAgRnJlZUJTRC9PcGVuQlNECisgICAgICBpZi1taWIgICAgICAgICAgICAgICBJRi1NSUIgcmV3cml0ZSAoYWRkIC0tZW5hYmxlLW1mZC1yZXdyaXRlcykKKworICBBZ2VudFggc3VwcG9ydDoKKyAgICBhZ2VudHgvc3ViYWdlbnQgICAgICAgIGFsbG93cyB0aGUgYWdlbnQgdG8gcnVuIGFzIGVpdGhlciBhIHNubXAgYWdlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGFzIGFuIGFnZW50WCBzdWItYWdlbnQuCisgICAgYWdlbnR4L21hc3RlciAgICAgICAgICBtYWtlcyB0aGUgYWdlbnQgcnVuIGFzIGFuIGFnZW50WCBtYXN0ZXIgYWdlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgYSBub3JtYWwgc25tcCBhZ2VudC4KKyAgICBhZ2VudHggICAgICAgICAgICAgICAgIGluY2x1ZGVzIGJvdGggYWdlbnR4L21hc3RlciBhbmQgYWdlbnR4L2NsaWVudC4KKworICBPcHRpb25hbCBtb2R1bGVzIGZvciBDIGNvZGVycyB0byBsb29rIGF0IGFuZC9vciBpbmNsdWRlIGFzIGV4dGVuc2lvbiBleGFtcGxlczoKKyAgCisgICAgZXhhbXBsZXMvdWNkRGVtb1B1YmxpYyAgU05NUHYzIGludGVyb3BlcmFiaWxpdHkgdGVzdGluZyBtaWIuCisgICAgZXhhbXBsZXMvZXhhbXBsZSAgICAgICAgZXhhbXBsZSBDIGNvZGUgZXh0ZW5zaW9uLl0pCisKKworIworIyBDYXRjaCBjb21tb24gbWlzdGFrZXMgaW4gY29uZmlndXJlIG9wdGlvbnMKKyMKK0FDX0FSR19XSVRIKG1pYi1tb2R1bGUsLCBORVRTTk1QX0lOVkFMSURfV0lUSChbbWliLW1vZHVsZXNdKSkKK0FDX0FSR19XSVRIKG1vZHVsZSwsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFttaWItbW9kdWxlc10pKQorQUNfQVJHX1dJVEgobW9kdWxlcywsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFttaWItbW9kdWxlc10pKQorCitBQ19BUkdfV0lUSChvdXQtbWliLW1vZHVsZSwsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtvdXQtbWliLW1vZHVsZXNdKSkKK0FDX0FSR19XSVRIKG91dC1tb2R1bGUsLCBORVRTTk1QX0lOVkFMSURfV0lUSChbb3V0LW1pYi1tb2R1bGVzXSkpCitBQ19BUkdfV0lUSChvdXQtbW9kdWxlcywsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtvdXQtbWliLW1vZHVsZXNdKSkKKworCisjIworIyAgIFByb2plY3Q6IEVudGVycHJpc2Ugc2V0dGluZ3MJKD8gQWdlbnQvTGlicmFyeS9Cb3RoPykKKyMjCisKK05FVFNOTVBfQVJHX1dJVEgoZW50ZXJwcmlzZS1vaWQsCitbRW50ZXJwcmlzZSBPSURzOiAgKHdhcm5pbmc6IHRoaXMgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLikKKworICAtLXdpdGgtZW50ZXJwcmlzZS1vaWQgICAgICAgICAgICAgIFRoZSBlbnRlcnByaXNlIG51bWJlciBhc3NpZ25lZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZW5kb3IgYnkgSUFOQS4gIFNlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuaWFuYS5vcmcvY2dpLWJpbi9lbnRlcnByaXNlLnBsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2V0IG9uZSwgdGhvdWdoIHVzaW5nIHRoZSBkZWZhdWx0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmFibHkgdGhlIHJpZ2h0IGNob2ljZSBpcyBtb3N0IGNhc2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDgwNzIgPSAiZW50ZXJwcmlzZS5uZXQtc25tcCIpXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBlbnRlcnByaXNlIG51bWJlciBdKTsKKyAgZmkKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfRU5URVJQUklTRV9PSUQsICR3aXRodmFsKQorICBlbnRfb2lkPSIxLDMsNiwxLDQsMSwkd2l0aHZhbCIKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfRU5URVJQUklTRV9NSUIsICRlbnRfb2lkKQorICBlbnRfZG90X29pZD0iMS4zLjYuMS40LjEuJHdpdGh2YWwiCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0VOVEVSUFJJU0VfRE9UX01JQiwgJGVudF9kb3Rfb2lkKQorICBBQ19NU0dfUkVTVUxUKHVzaW5nIGVudGVycHJpc2UgbnVtYmVyICR3aXRodmFsKQorXSxbCisgIEFDX01TR19SRVNVTFQodXNpbmcgZGVmYXVsdCAiZW50ZXJwcmlzZS5uZXQtc25tcCIpCitdKQorCitORVRTTk1QX0FSR19XSVRIKGVudGVycHJpc2Utc3lzb2lkLAorWworICAtLXdpdGgtZW50ZXJwcmlzZS1zeXNvaWQgICAgICAgICAgIFRoZSBiYXNlIE9JRCBmb3IgdGhlIHN5c09iamVjdElECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHN5c3RlbSBncm91cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IC4xLjMuNi4xLjQuMS44MDcyLjMuMi4uLiA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmV0U25tcEFnZW50T0lEcy4uLiIpXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgYmFzZSBPSUQgdmFsdWUgXSk7CisgIGZpCisgIHN5c19vaWQ9YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9eXC4vLycgfCBzZWQgJ3MvXC4vXCwvZydgCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1NZU1RFTV9NSUIsICRzeXNfb2lkKQorICBzeXNfZG90X29pZD1gZWNobyAiJHdpdGh2YWwiIHwgc2VkICdzL15cLi8vJ2AKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfU1lTVEVNX0RPVF9NSUIsICRzeXNfZG90X29pZCkKKyAgc3lzb2lkX2xlbj1gZWNobyAiJHdpdGh2YWwiIHwgc2VkICdzL1teXC5dLy9nJyB8IGF3ayAtRlwuICd7IHByaW50IE5GIH0nYAorICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9TWVNURU1fRE9UX01JQl9MRU5HVEgsICRzeXNvaWRfbGVuKQorICBBQ19NU0dfUkVTVUxUKHVzaW5nIGVudGVycHJpc2Ugc3lzT0lEICR3aXRodmFsIC4uLi4pCitdLFsKKyAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IGVudGVycHJpc2Ugc3lzT0lEICJORVQtU05NUC1NSUI6Om5ldFNubXBBZ2VudE9JRHMuLi4iKQorXSkKKworTkVUU05NUF9BUkdfV0lUSChlbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQsCitbCisgIC0td2l0aC1lbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQgVGhlIE9JRCB1c2VkIGZvciB0aGUgcm9vdCBvZgorCQkJCSAgICAgZW50ZXJwcmlzZSBzcGVjaWZpYyBub3RpZmljYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IC4xLjMuNi4xLjQuMS44MDcyLjQgPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ldFNubXBOb3RpZmljYXRpb25QcmVmaXgiKV0sWworICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIGJhc2UgT0lEIHZhbHVlIF0pOworICBmaQorICBub3RpZmljYXRpb25fb2lkPWBlY2hvICIkd2l0aHZhbCIgfCBzZWQgJ3MvXlwuLy8nIHwgc2VkICdzL1wuL1wsL2cnYAorICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9OT1RJRklDQVRJT05fTUlCLCAkbm90aWZpY2F0aW9uX29pZCkKKyAgbm90aWZpY2F0aW9uX2RvdF9vaWQ9YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9eXC4vLydgCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX05PVElGSUNBVElPTl9ET1RfTUlCLCAkbm90aWZpY2F0aW9uX2RvdF9vaWQpCisgIG5vdGlmaWNhdGlvbm9pZF9sZW49YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9bXlwuXS8vZycgfCBhd2sgLUZcLiAneyBwcmludCBORiB9J2AKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfTk9USUZJQ0FUSU9OX0RPVF9NSUJfTEVOR1RILCAkbm90aWZpY2F0aW9ub2lkX2xlbikKKyAgQUNfTVNHX1JFU1VMVCh1c2luZyBlbnRlcnByaXNlIG5vdGlmaWNhdGlvbnMgJHdpdGh2YWwpCitdLFsKKyAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IG5vdGlmaWNhdGlvbnMgIk5FVC1TTk1QLU1JQjo6bmV0U25tcE5vdGlmaWNhdGlvbnMiKQorXSkKKworCisjIworIyAgIFByb2plY3Q6IFBlcmwgc2V0dGluZ3MKKyMjCisKK05FVFNOTVBfQVJHX1dJVEgocGVybC1tb2R1bGVzLAorWworUGVybDoKKyAgLS13aXRoLXBlcmwtbW9kdWxlc1s9QVJHU10gICAgICBJbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXMgYWxvbmcgd2l0aCB0aGUgcmVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBuZXQtc25tcCB0b29sa2l0LiAgSWYgQVJHUyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCwgdGhleSdyZSBwYXNzZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFrZWZpbGUuUEwgc2NyaXB0Ll0sWworICAgIGlmIHRlc3QgIiR3aXRodmFsIiA9ICJubyI7IHRoZW4KKyAgICAgIGluc3RhbGxfcGVybD0ibm8iCisgICAgZWxzZQorICAgICAgaW5zdGFsbF9wZXJsPSJ5ZXMiCisgICAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgIT0gInllcyI7IHRoZW4KKyAgICAgICAgUEVSTEFSR1M9IiR3aXRodmFsIgorICAgICAgZmkKKyAgICBmaQorXSwgaW5zdGFsbF9wZXJsPSJ0cnkiKQorCitORVRTTk1QX0FSR19FTkFCTEUoZW1iZWRkZWQtcGVybCwKK1sgIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsICAgICAgICAgRGlzYWJsZSBlbWJlZGRlZCBQZXJsIGluIHRoZSBTTk1QIGFnZW50IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXB0cmFwZC4gW2VuYWJsZWQgYnkgZGVmYXVsdF1dLAorICAgIGVtYmVkX3Blcmw9IiRlbmFibGV2YWwiLCBlbWJlZF9wZXJsPSJ0cnkiKQorCitORVRTTk1QX0FSR19FTkFCTEUocGVybC1jYy1jaGVja3MsCitbICAtLWRpc2FibGUtcGVybC1jYy1jaGVja3MgICAgICAgIERpc2FibGUgY29uZmlndXJlIGNoZWNrcyBmb3Igd2hldGhlciBQZXJsJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDIENvbXBpbGVyIGlzIGNvbXBhdGlibGUgd2l0aCBvdXJzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZCBQZXJsIGlzIGVuYWJsZWQuXSkKKworCisjIworIyAgIFByb2plY3Q6IFB5dGhvbiBzZXR0aW5ncworIyMKKworQUNfQVJHX1dJVEgocHl0aG9uLW1vZHVsZXMsCitbCitQeXRob246CisgIC0td2l0aC1weXRob24tbW9kdWxlc1s9QVJHU10gICAgSW5zdGFsbCB0aGUgcHl0aG9uIGJpbmRpbmdzIGFsb25nIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdCBvZiB0aGUgbmV0LXNubXAgdG9vbGtpdC4gIElmIEFSR1MgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIHRoZXkncmUgcGFzc2VkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwLnB5IHNjcmlwdCBhcyBhcmd1bWVudHMuXSxbCisgICAgaW5zdGFsbF9weXRob249InllcyIKKyAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAieWVzIjsgdGhlbgorICAgICAgUFlUSE9OQVJHUz0iIgorICAgIGVsaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgorICAgICAgUFlUSE9OQVJHUz0iIgorICAgICAgaW5zdGFsbF9weXRob249Im5vIgorICAgIGVsc2UKKyAgICAgIFBZVEhPTkFSR1M9IiR3aXRodmFsIgorICAgIGZpCitdLCBpbnN0YWxsX3B5dGhvbj0ibm8iKQorCisKKyMjCisjICAgUHJvamVjdDogTGlicmFyeSBzZXR0aW5ncworIyMKKworTkVUU05NUF9BUkdfV0lUSChzZXJ2ZXItc2VuZC1idWYsCitbCitOZXR3b3JrIEJ1ZmZlcnM6CisgIC0td2l0aC1zZXJ2ZXItc2VuZC1idWZbPUFSR10gICAgVXNlIEFSRyBmb3IgdGhlIGRlZmF1bHQgVURQL1RDUCBzZW5kIGJ1ZmZlciBpbnN0ZWFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIE9TIGJ1ZmZlciBmb3Igc2VydmVyIHNvY2tldHMgdGhhdCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIChzbm1wZCwgc25tcHRyYXBkKS4gIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgcnVudGltZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBBUkcgc2hvdWxkIGJlIHRoZSBzaXplIGluIGJ5dGVzXSxbCisgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIHBvc2l0aXZlIG51bWJlciBmb3IgdGhlIHNlcnZlciBzZW5kIGJ1ZmZlciBdKQorICAgZmkKKyAgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfU0VSVkVSX1NFTkRfQlVGLCAkd2l0aHZhbCldLAorICAgQUNfTVNHX1JFU1VMVChbdXNpbmcgT1MgZGVmYXVsdCBzZW5kIGJ1ZmZlciBzaXplIGZvciBzZXJ2ZXIgc29ja2V0c10pICkKKworTkVUU05NUF9BUkdfV0lUSChzZXJ2ZXItcmVjdi1idWYsCitbICAtLXdpdGgtc2VydmVyLXJlY3YtYnVmWz1BUkddICAgIFNpbWlsYXIgYXMgcHJldmlvdXMgb3B0aW9uLCBidXQgZm9yIHJlY2VpdmUgYnVmZmVyXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgc2VydmVyIHJlY3YgYnVmZmVyIF0pCisgIGZpCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfU0VSVkVSX1JFQ1ZfQlVGLCAkd2l0aHZhbCldLAorICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHJlY3YgYnVmZmVyIHNpemUgZm9yIHNlcnZlciBzb2NrZXRzXSkgKQorCitORVRTTk1QX0FSR19XSVRIKGNsaWVudC1zZW5kLWJ1ZiwKK1sgIC0td2l0aC1jbGllbnQtc2VuZC1idWZbPUFSR10gICAgU2ltaWxhciBhcyBwcmV2aW91cyBvcHRpb25zLCBidXQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmUgYnVmZmVyIG9mIGNsaWVudCBzb2NrZXRzXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgY2xpZW50IHNlbmQgYnVmZmVyIF0pCisgIGZpCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfQ0xJRU5UX1NFTkRfQlVGLCAkd2l0aHZhbCldLAorICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHNlbmQgYnVmZmVyIHNpemUgZm9yIGNsaWVudCBzb2NrZXRzXSkgKQorCitORVRTTk1QX0FSR19XSVRIKGNsaWVudC1yZWN2LWJ1ZiwKK1sgIC0td2l0aC1jbGllbnQtcmVjdi1idWZbPUFSR10gICAgU2ltaWxhciBhcyBwcmV2aW91cyBvcHRpb25zLCBidXQgZm9yIHRoZSBzZW5kIGJ1ZmZlcl0sWworICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIHBvc2l0aXZlIG51bWJlciBmb3IgdGhlIGNsaWVudCByZWN2IGJ1ZmZlciBdKQorICBmaQorICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX0NMSUVOVF9SRUNWX0JVRiwgJHdpdGh2YWwpXSwKKyAgQUNfTVNHX1JFU1VMVChbdXNpbmcgT1MgZGVmYXVsdCByZWN2IGJ1ZmZlciBzaXplIGZvciBjbGllbnQgc29ja2V0c10pICkKKworIyMKKyMgICBTeXN0ZW06IGxpYnJhcnkgc2V0dGluZ3MgIChtb3JlKQorIyMKKworTkVUU05NUF9BUkdfV0lUSChlbGYsCisgIFtBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWVsZl0sW3VzZSBlbGYgbGlicmFyaWVzXSldKQorCitORVRTTk1QX0FSR19XSVRIKG5sLAorICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1ubF0sW3VzZSBsaWJubCB0byBnZXQgbmV0bGluayBkYXRhIChsaW51eCBvbmx5KS5dKV0pCisKK05FVFNOTVBfQVJHX1dJVEgobGlid3JhcCwKKyAgWyAgLS13aXRoLWxpYndyYXBbPUxJQlBBVEhdICBDb21waWxlIGluIGxpYndyYXAgKHRjcF93cmFwcGVycykgc3VwcG9ydC5dLAorICBbXSwKKyAgW3dpdGhfbGlid3JhcD0ibm8iXSkKKworTkVUU05NUF9BUkdfV0lUSCh6bGliLAorICBbICAtLXdpdGgtemxpYls9RElSXSAgICAgICAgIHVzZSBsaWJ6IGluIERJUl0sCisgIFtdLAorICBbd2l0aF96bGliPSJubyJdKQorCitBQ19BUkdfV0lUSChiemlwMiwKKyAgWyAgLS13aXRoLWJ6aXAyWz1ESVJdICAgICAgICB1c2UgbGliYnoyIGluIERJUl0sCisgIFtdLAorICBbd2l0aF9iemlwMj0ibm8iXSkKKworTkVUU05NUF9BUkdfV0lUSCgKKyBbbW50dGFiXSwKKyBBU19IRUxQX1NUUklORygKKyAgIFstLXdpdGgtbW50dGFiPSIvZXRjL21udHRhYiJdLAorICAgW01vdW50IHRhYmxlIGxvY2F0aW9uLiBUaGUgZGVmYXVsdCBpcyB0byBhdXRvZGV0ZWN0IHRoaXMuXSkpCisKKyMjCisjICAgUHJvamVjdDogbXlzcWwKKyMjCisKK05FVFNOTVBfQVJHX1dJVEgobXlzcWwsCisgIFsgIC0td2l0aC1teXNxbCAgICAgICAgICAgIEluY2x1ZGUgc3VwcG9ydCBmb3IgTXlTUUwuXSkKK2lmIHRlc3QgIngkd2l0aF9teXNxbCIgPSAieHllcyI7IHRoZW4KKyAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX01ZU1FMLCAxLAorICAgIFtkZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgbXlzcWwgY29kZSBmb3Igc25tcHRyYXBkIC4uLl0pCitmaQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTE5OTdmLi4wMDAwMDAwCi0tLSBhL2NvbmZpZ3VyZS5pbgorKysgL2Rldi9udWxsCkBAIC0xLDQ4MTcgKzAsMCBAQAotIyBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuICBTZWUKLSMgdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKLSMgdGhhdCBtYXkgYXBwbHk6Ci0jCi0jIFBvcnRpb25zIENvcHlyaWdodCCpIDIwMDMgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCi0jIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCi0jCi0KLSMKLSMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KLSMKLUFDX0lOSVQoW05ldC1TTk1QXSwgWzUuNC40XSwgW25ldC1zbm1wLWNvZGVyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXRdKQotQUNfUFJFUkVRKFsyLjU5XSkKLUFDX0NPTkZJR19TUkNESVIoW2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuY10pCi1BQ19SRVZJU0lPTihbJFJldmlzaW9uJF0pCi0KLUFDX0NPTkZJR19IRUFERVIoaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCkKLQotQUNfTVNHX0NBQ0hFX0lOSVQoKQotCi0jCi0jIHNhdmUgdGhlIGNvbmZpZ3VyZSBhcmd1bWVudHMKLSMKLUFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0NPTkZJR1VSRV9PUFRJT05TLCIkYWNfY29uZmlndXJlX2FyZ3MiKQotQ09ORklHVVJFX09QVElPTlM9IlwiJGFjX2NvbmZpZ3VyZV9hcmdzIlwiCi1BQ19TVUJTVChDT05GSUdVUkVfT1BUSU9OUykKLQotIwotIyBDb21waWxhdGlvbiBzZXR1cAotIwotQUNfQVJHX1dJVEgoY2MsIFsKLUNvbXBpbGVyIE9wdGlvbnM6Ci0gIC0td2l0aC1jYz1DQyAgICAgICAgICAgICAgICAgICAgdXNlIENDIHRvIGNvbXBpbGUgKGRlZmF1bHQ9Z2NjKS5dLAotICAgIFtDQz0kd2l0aF9jYztleHBvcnQgQ0NdKQotCi1BQ19BUkdfV0lUSChsaW5rY2MsIFsKLSAgLS13aXRoLWxpbmtjYz1DQyAgICAgICAgICAgICAgICB1c2UgQ0MgdG8gbGluayAoZGVmYXVsdD1nY2MpLl0sCi0gICAgW0xJTktDQz0kd2l0aF9saW5rY2M7ZXhwb3J0IExJTktDQ10pCi0KLUFDX0FSR19XSVRIKGFyLAotWyAgLS13aXRoLWFyPUFSICAgICAgICAgICAgICAgICAgICB1c2UgQVIgYXMgdGhlIGFyY2hpdmVyLl0sCi0gICAgW0FSPSR3aXRoX2FyOyBleHBvcnQgQVJdKQotCi1BQ19BUkdfV0lUSChlbmRpYW5uZXNzLAotWyAgLS13aXRoLWVuZGlhbm5lc3M9YmlnfGxpdHRsZSAgICBkZWZpbmUgZW5kaWFubmVzcyBvZiB0YXJnZXQgcGxhdGZvcm0gd2hlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLWNvbXBpbGluZy5dLAotICAgIFtpZiB0ZXN0ICR3aXRoX2VuZGlhbm5lc3MgIT0gImJpZyIgLWEgJHdpdGhfZW5kaWFubmVzcyAhPSAibGl0dGxlIiA7IHRoZW4KLSAgICAgICBBQ19NU0dfRVJST1IoW0VuZGlhbm5lc3MgbXVzdCBiZSBiaWcgb3IgbGl0dGxlLCBub3QgIiR3aXRoX2VuZGlhbm5lc3MiLl0pOwotICAgICBmaQotXSkKLQotQUNfQVJHX1dJVEgoY2ZsYWdzLAotWyAgLS13aXRoLWNmbGFncz1DRkxBR1MgICAgICAgICAgICB1c2UgQ0ZMQUdTIGFzIGNvbXBpbGUgdGltZSBhcmd1bWVudHMuXSwKLSAgICBbQ0ZMQUdTPSR3aXRoX2NmbGFnczsgZXhwb3J0IENGTEFHU10pCi0KLUFDX0FSR19XSVRIKGxkZmxhZ3MsCi1bICAtLXdpdGgtbGRmbGFncz1MREZMQUdTICAgICAgICAgIHVzZSBMREZMQUdTIGFzIGxpbmsgdGltZSBhcmd1bWVudHMgdG8gbGQuXSwKLSAgICBbTERGTEFHUz0kd2l0aF9sZGZsYWdzOyBleHBvcnQgTERGTEFHU10pCi0KLUFDX0FSR19FTkFCTEUoYXMtbmVlZGVkLAotWyAgLS1lbmFibGUtYXMtbmVlZGVkICAgICAgICAgICAgICBMaW5rIGxpYnBlcmwgYWdhaW5zdCBOZXQtU05NUCBsaWJyYXJpZXMgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gYXBwbGljYXRpb25zLiBXZSByZWNvbW1lbmQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhpcyBvcHRpb24gaWYgaXQgd29ya3MuXSkKLQotQUNfQVJHX1dJVEgobGlicywKLVsgIC0td2l0aC1saWJzPUxJQlMgICAgICAgICAgICAgICAgdXNlIExJQlMgYXMgbGluayB0aW1lIGFyZ3VtZW50cyB0byBsZC5dLAotICAgIFtMSUJTPSR3aXRoX2xpYnM7IGV4cG9ydCBMSUJTXSkKLQotQUNfQVJHX0VOQUJMRShzaWxlbnQtbGlidG9vbCwKLVsgIC0tZW5hYmxlLXNpbGVudC1saWJ0b29sICAgICAgICAgUGFzcyAtLXNpbGVudCB0byBsaWJ0b29sLl0sCi0JTElCVE9PTEZMQUdTPS0tc2lsZW50KQotQUNfU1VCU1QoTElCVE9PTEZMQUdTKQotCi1BQ19BUkdfV0lUSChpbnN0YWxsLXByZWZpeCwKLVsgIC0td2l0aC1pbnN0YWxsLXByZWZpeD1QQVRIICAgICAgSnVzdCBmb3IgaW5zdGFsbGluZywgcHJlZml4IGFsbCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyB3aXRoIFBBVEguICBUaGlzIGlzIGtub3duIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHdvcmsgb24gc29tZSBzeXN0ZW1zIHdpdGggc2hhcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIChlZywgSFBVWCldLAotICAgICAgSU5TVEFMTF9QUkVGSVg9IiR3aXRodmFsIikKLQotaWYgdGVzdCAieCRJTlNUQUxMX1BSRUZJWCIgPSAieHllcyIgOyB0aGVuCi0gIEFDX01TR19FUlJPUihbLS13aXRoLWluc3RhbGwtcHJlZml4IHJlcXVpcmVzIGFuIGFyZ3VtZW50XSkKLWZpCi1pZiB0ZXN0ICJ4JElOU1RBTExfUFJFRklYIiA9ICJ4bm8iIDsgdGhlbgotICBJTlNUQUxMX1BSRUZJWD0iIgotZmkKLUFDX1NVQlNUKElOU1RBTExfUFJFRklYKQotCi0jIGNoZWNrIGZvciBlcnJvcnMgaW4gYXJncyB0aGF0IHJ1biBhZnRlciBtb2R1bGUgcHJvY2Vzc2luZyBoZXJlLCBzbwotIyB0aGV5IGZhaWwgYmVmb3JlIG1vZHVsZSBwcm9jZXNzaW5nLi4uCi1BQ19BUkdfRU5BQkxFKGxpYndyYXAsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWxpYndyYXAvLS13aXRob3V0LWxpYndyYXAgaW5zdGVhZCBdKSApCi0gIEFDX0FSR19FTkFCTEUoemxpYiwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtemxpYi8tLXdpdGhvdXQtemxpYiBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShtaW5pX2FnZW50LAotWyAgLS1lbmFibGUtbWluaS1hZ2VudCAgICAgICAgICAgICBCdWlsZCBhIG1pbmltYWwgYWdlbnQuXSkKLWlmIHRlc3QgIngkZW5hYmxlX21pbmlfYWdlbnQiID0gInh5ZXMiOyB0aGVuCi0gICAgbWluaV9hZ2VudD0ieWVzIgotZWxzZQotICAgIG1pbmlfYWdlbnQ9Im5vIgotZmkKLUFDX0FSR19XSVRIKG1pbmlfYWdlbnQsLAotICAgICAgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1taW5pLWFnZW50Ly0tZGlzYWJsZS1taW5pLWFnZW50IGluc3RlYWQgXSkgKQotQUNfQVJHX1dJVEgobWluaWFnZW50LCwKLSAgICAgICAgIEFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtbWluaS1hZ2VudC8tLWRpc2FibGUtbWluaS1hZ2VudCBpbnN0ZWFkIF0pICkKLUFDX0FSR19FTkFCTEUobWluaWFnZW50LCwKLSAgICAgICAgIEFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtbWluaS1hZ2VudC8tLWRpc2FibGUtbWluaS1hZ2VudCBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShhZ2VudCwKLVsgIC0tZGlzYWJsZS1hZ2VudCAgICAgICAgICAgICAgICAgRG8gbm90IGJ1aWxkIHRoZSBhZ2VudCAoc25tcGQpLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9hZ2VudCIgIT0gInhubyI7IHRoZW4KLSAgIFNOTVBEPSdzbm1wZCQoRVhFRVhUKScKLSAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgYWdlbnQiCi0gICBUUkFQTElCUz0nJChUUkFQRFdJVEhBR0VOVCknCi0gICBVU0VUUkFQTElCUz0nJChVU0VBR0VOVExJQlMpJwotZWxzZQotICAgU05NUEQ9IiIKLSAgICMgd2Ugc3RpbGwgbmVlZC93YW50IHRoZSBhZ2VudGxpYnMgKGZvciBzdWJhZ2VudHMsIGUuZy4gc25tcHRyYXBkKQotICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBhZ2VudCIKLSAgICMgYnVpbGRpbmcgc25tcHRyYXBkIHcvbyBhZ2VudGxpYnMgZG9lc24ndCB3b3JrIGF0bQotICAgI1RSQVBMSUJTPSckKFRSQVBEV0lUSE9VVEFHRU5UKScKLSAgICNVU0VUUkFQTElCUz0nJChVU0VMSUJTKScKLSAgIFRSQVBMSUJTPSckKFRSQVBEV0lUSEFHRU5UKScKLSAgIFVTRVRSQVBMSUJTPSckKFVTRUFHRU5UTElCUyknCi1maQotQUNfU1VCU1QoU05NUEQpCi1BQ19TVUJTVChUUkFQTElCUykKLUFDX1NVQlNUKFVTRVRSQVBMSUJTKQotQUNfQVJHX1dJVEgoYWdlbnQsLAotICAgICAgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1hZ2VudC8tLWRpc2FibGUtYWdlbnQgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUoYXBwbGljYXRpb25zLAotWyAgLS1kaXNhYmxlLWFwcGxpY2F0aW9ucyAgICAgICAgICBEbyBub3QgYnVpbGQgdGhlIGFwcHMgKHNubXBnZXQsIC4uLikuXSkKLWlmIHRlc3QgIngkZW5hYmxlX2FwcGxpY2F0aW9ucyIgIT0gInhubyI7IHRoZW4KLSAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgYXBwcyIKLWZpCi0jIENvbW1vbiBtaXN0YWtlcwotQUNfQVJHX1dJVEgoYXBwbGljYXRpb25zLCwKLSAgICAgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1hcHBsaWNhdGlvbnMvLS1kaXNhYmxlLWFwcGxpY2F0aW9ucyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShtYW51YWxzLAotWyAgLS1kaXNhYmxlLW1hbnVhbHMgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCB0aGUgbWFudWFscy5dKQotaWYgdGVzdCAieCRlbmFibGVfbWFudWFscyIgIT0gInhubyI7IHRoZW4KLSAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgbWFuIgotZmkKLUFDX0FSR19XSVRIKG1hbnVhbHMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtbWFudWFscy8tLWRpc2FibGUtbWFudWFscyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShzY3JpcHRzLAotWyAgLS1kaXNhYmxlLXNjcmlwdHMgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCB0aGUgc2NyaXB0cyAobWliMmMsIC4uLikuXSkKLWlmIHRlc3QgIngkZW5hYmxlX3NjcmlwdHMiICE9ICJ4bm8iOyB0aGVuCi0gICBNQUlOU1VCUz0iJE1BSU5TVUJTIGxvY2FsIgotZmkKLUFDX0FSR19XSVRIKHNjcmlwdHMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtc2NyaXB0cy8tLWRpc2FibGUtc2NyaXB0cyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShtaWJzLAotWyAgLS1kaXNhYmxlLW1pYnMgICAgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCB0aGUgbWliIGZpbGVzLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9taWJzIiAhPSAieG5vIjsgdGhlbgotICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBtaWJzIgotZmkKLSMgd2l0aC1taWJzIGlzIHZhbGlkIHRvbywgYnV0IG1lYW5zIHNvbWV0aGluZyBlbHNlCi0KLUFDX1NVQlNUKE1BSU5TVUJTKQotQUNfTVNHX0NIRUNLSU5HKFt3aGF0IHRvIGJ1aWxkIGFuZCBpbnN0YWxsXSkKLUFDX01TR19SRVNVTFQoWyRNQUlOU1VCU10pCi0KLUFDX0FSR19FTkFCTEUobWliLWxvYWRpbmcsCi1bICAtLWRpc2FibGUtbWliLWxvYWRpbmcgICAgICAgICAgIERvIG5vdCBpbmNsdWRlIGNvZGUgdGhhdCBwYXJzZXMgYW5kIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlwdWxhdGVzIHRoZSBtaWIgZmlsZXMuXSkKLWlmIHRlc3QgIngkZW5hYmxlX21pYl9sb2FkaW5nIiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HXSwgMSwgCi0gICAgICAgICAgICBbRGVmaW5lIGlmIG1pYiBsb2FkaW5nIGFuZCBwYXJzaW5nIGNvZGUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZF0pCi1maQotQUNfQVJHX1dJVEgobWliLWxvYWRpbmcsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtbWliLWxvYWRpbmcvLS1kaXNhYmxlLW1pYi1sb2FkaW5nIGluc3RlYWQgXSkgKQotCi0jCi1TTk1QX1ZFUlNJT05TPSIiCi1BQ19BUkdfRU5BQkxFKHNubXB2MSwKLVsgIC0tZGlzYWJsZS1zbm1wdjEgICAgICAgICAgICAgICAgRG8gbm90IGluY2x1ZGUgY29kZSB0aGF0IGltcGxlbWVudHMgU05NUHYxLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9zbm1wdjEiID0gInhubyI7IHRoZW4KLSAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfU05NUFYxXSwgMSwgCi0gICAgICAgICAgICBbRGVmaW5lIGlmIFNOTVB2MSBjb2RlIHNob3VsZCBub3QgYmUgaW5jbHVkZWRdKQotZWxzZQotICBTTk1QX1ZFUlNJT05TPSIkU05NUF9WRVJTSU9OUyAxIgotZmkKLUFDX0FSR19XSVRIKHNubXB2MSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1zbm1wdjEvLS1kaXNhYmxlLXNubXB2MSBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShzbm1wdjJjLAotWyAgLS1kaXNhYmxlLXNubXB2MmMgICAgICAgICAgICAgICBEbyBub3QgaW5jbHVkZSBjb2RlIHRoYXQgaW1wbGVtZW50cyBTTk1QdjJjLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9zbm1wdjJjIiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX1NOTVBWMkNdLCAxLCAKLSAgICAgICAgICAgIFtEZWZpbmUgaWYgU05NUHYyYyBjb2RlIHNob3VsZCBub3QgYmUgaW5jbHVkZWRdKQotZWxzZQotICBTTk1QX1ZFUlNJT05TPSIkU05NUF9WRVJTSU9OUyAyYyIKLWZpCi1BQ19BUkdfV0lUSChzbm1wdjJjLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLXNubXB2MmMvLS1kaXNhYmxlLXNubXB2MmMgaW5zdGVhZCBdKSApCi0KLVNOTVBfVkVSU0lPTlM9IiRTTk1QX1ZFUlNJT05TIDMiCi1BQ19NU0dfQ0FDSEVfQUREKFNOTVAgVmVyc2lvbnMgU3VwcG9ydGVkOiAgICRTTk1QX1ZFUlNJT05TKQotCi1BQ19BUkdfRU5BQkxFKHNldC1zdXBwb3J0LAotWyAgLS1kaXNhYmxlLXNldC1zdXBwb3J0ICAgICAgICAgICBEbyBub3QgYWxsb3cgU05NUCBzZXQgcmVxdWVzdHMgdG8gdGhlIGFnZW50Ll0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9zZXRfc3VwcG9ydCIgPSAieG5vIjsgdGhlbgotICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVF0sIDEsIAotICAgICAgICAgICAgW0RlZmluZSBpZiBTTk1QIFNFVCBzdXBwb3J0IHNob3VsZCBiZSBkaXNhYmxlZF0pCi1maQotQUNfQVJHX1dJVEgoc2V0LXN1cHBvcnQsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtc2V0LXN1cHBvcnQvLS1kaXNhYmxlLXNldC1zdXBwb3J0IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGRlcywKLVsgIC0tZGlzYWJsZS1kZXMgICAgICAgICAgICAgICAgICAgRG8gbm90IHN1cHBvcnQgREVTIGVuY3J5cHRpb24uXSkKLWlmIHRlc3QgIngkZW5hYmxlX2RlcyIgPSAieG5vIjsgdGhlbgotICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9ERVNdLCAxLCAKLSAgICAgICAgICAgIFtEZWZpbmUgaWYgREVTIGVuY3J5cHRpb24gc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWRdKQotZmkKLUFDX0FSR19XSVRIKGRlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1kZXMvLS1kaXNhYmxlLWRlcyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShwcml2YWN5LAotWyAgLS1kaXNhYmxlLXByaXZhY3kgICAgICAgICAgICAgICBEb24ndCBjb21waWxlIGluIHN1cHBvcnQgZm9yIHByaXZhY3kgKGVuY3J5cHRpb24pLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9wcml2YWN5IiAhPSAieG5vIjsgdGhlbgotICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfU0NBUElfQVVUSFBSSVYpCi1maQotQUNfQVJHX1dJVEgocHJpdmFjeSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1wcml2YWN5Ly0tZGlzYWJsZS1wcml2YWN5IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKG1kNSwKLVsgIC0tZGlzYWJsZS1tZDUgICAgICAgICAgICAgICAgICAgRG8gbm90IHN1cHBvcnQgTUQ1IGF1dGhlbnRpY2F0aW9uLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9tZDUiID0gInhubyI7IHRoZW4KLSAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfTUQ1XSwgMSwgCi0gICAgICAgICAgICBbRGVmaW5lIGlmIE1ENSBhdXRoZW50aWNhdGlvbiBzaG91bGQgbm90IGJlIHN1cHBvcnRlZF0pCi1maQotQUNfQVJHX1dJVEgobWQ1LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLW1kNS8tLWRpc2FibGUtbWQ1IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGludGVybmFsLW1kNSwKLVsgIC0tZW5hYmxlLWludGVybmFsLW1kNSAgICAgICAgICAgVXNlIHRoZSBpbnRlcm5hbCBNRDUgc3VwcG9ydC5dKQotaWYgdGVzdCAieCRlbmFibGVfaW50ZXJuYWxfbWQ1IiA9ICJ4eWVzIjsgdGhlbgotICBpZiB0ZXN0ICJ4JGVuYWJsZV9tZDUiID0gInhubyI7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoWW91IGNhbiBub3Qgc3BlY2lmeSBib3RoIC0tZW5hYmxlLWludGVybmFsLW1kNSBhbmQgLS1kaXNhYmxlLW1kNSkKLSAgZWxzZQotICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9JTlRFUk5BTF9NRDUpCi0gIGZpCi1maQotQUNfQVJHX1dJVEgoaW50ZXJuYWwtbWQ1LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLWludGVybmFsLW1kNS8tLWRpc2FibGUtaW50ZXJuYWwtbWQ1IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGlwdjYsCi1bICAtLWVuYWJsZS1pcHY2ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIElQdjYgcmVhZHkgdmVyc2lvbi5dLAotICAgIFtpZiB0ZXN0ICJ4JGVuYWJsZV9pcHY2IiA9ICJ4eWVzIjsgdGhlbgotICAgICAgQUNfREVGSU5FKE5FVFNOTVBfRU5BQkxFX0lQVjYpCi0gICAgZmldKQotQUNfQVJHX1dJVEgoaXB2NiwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1pcHY2Ly0tZGlzYWJsZS1pcHY2IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGxvY2FsLXNtdXgsCi1bICAtLWVuYWJsZS1sb2NhbC1zbXV4ICAgICAgICAgICAgIFJlc3RyaWN0IFNNVVggY29ubmVjdGlvbnMgdG8gbG9jYWxob3N0IChieSBkZWZhdWx0KS5dLAotICAgIFtpZiB0ZXN0ICJ4JGVuYWJsZV9sb2NhbF9zbXV4IiA9ICJ4eWVzIjsgdGhlbgotICAgICAgQUNfREVGSU5FKE5FVFNOTVBfRU5BQkxFX0xPQ0FMX1NNVVgpCi0gICAgZmldKQotQUNfQVJHX1dJVEgobG9jYWwtc211eCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1sb2NhbC1zbXV4Ly0tZGlzYWJsZS1sb2NhbC1zbXV4IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGRlYnVnZ2luZywKLVsgIC0tZW5hYmxlLWRlYnVnZ2luZyAgICAgICAgICAgICAgT3V0cHV0cyBleHRyYSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gYXQgYWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXMuICBOb3JtYWxseSwgeW91IHNob3VsZCBub3QgZW5hYmxlIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGluc3RlYWQgdXNlIHRoZSAtRCBmbGFnIG9mIHRoZSBjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0b2dnbGVzIGRlYnVnaW5nIG91dHB1dCBhdCBydW50aW1lLgotICAtLWRpc2FibGUtZGVidWdnaW5nICAgICAgICAgICAgIERpc2FsbG93cyBkZWJ1Z2dpbmcgY29kZSB0byBiZSBidWlsdCBpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1pZ2h0IHByb3ZpZGUgc29tZSBzcGVlZCBiZW5lZml0cy5dLAotICAgIEFDX0RFRklORShORVRTTk1QX0FMV0FZU19ERUJVRykpCi1BQ19BUkdfV0lUSChkZWJ1Z2dpbmcsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtZGVidWdnaW5nLy0tZGlzYWJsZS1kZWJ1Z2dpbmcgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUoZGV2ZWxvcGVyLAotWyAgLS1lbmFibGUtZGV2ZWxvcGVyICAgICAgICAgICAgICBUdXJucyBvbiBzdXBlci1kdXBlci1leHRyYS1jb21waWxlLXdhcm5pbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB1c2luZyBnY2MuXSwKLSAgICBkZXZlbG9wZXI9eWVzKQotQUNfQVJHX1dJVEgoZGV2ZWxvcGVyLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLWRldmVsb3Blci8tLWRpc2FibGUtZGV2ZWxvcGVyIGluc3RlYWQgXSkgKQotCi1pZiB0ZXN0ICJ4JGVuYWJsZV9kZWJ1Z2dpbmciID0gInhubyI7IHRoZW4KLSAgICBBQ19ERUZJTkUoTkVUU05NUF9OT19ERUJVR0dJTkcpCi1maQotCi1BQ19BUkdfV0lUSChkbWFsbG9jLAotWyAgLS13aXRoLWRtYWxsb2M9UEFUSCAgICAgICAgICAgICBVc2UgZG1hbGxvYyBsaWJyYXJ5ICh3d3cuZG1hbGxvYy5jb20pXSwKLSAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCi0gICAgICBMSUJTPSIkTElCUyAtbGRtYWxsb2MiCi0gICAgICBBQ19ERUZJTkUoSEFWRV9ETUFMTE9DX0gpCi0gICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KLSAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKLSAgICAgIExJQlM9IiRMSUJTIC1sZG1hbGxvYyIKLSAgICAgIEFDX0RFRklORShIQVZFX0RNQUxMT0NfSCkKLSAgICBmaQotKQotQUNfU1VCU1QoSEFWRV9ETUFMTE9DX0gpCi1BQ19BUkdfRU5BQkxFKGRtYWxsb2MsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWRtYWxsb2MvLS13aXRob3V0LWRtYWxsb2MgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKGVmZW5jZSwKLVsgIC0td2l0aC1lZmVuY2UgICAgICAgICAgICAgICAgICAgTG9vayBmb3IgYW5kIHVzZSBsaWJlZmVuY2UgKG1hbGxvYykuXSwKLSAgICAgIHVzZV9lZmVuY2U9IiR3aXRodmFsIikKLUFDX0FSR19FTkFCTEUoZWZlbmNlLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1lZmVuY2UvLS13aXRob3V0LWVmZW5jZSBpbnN0ZWFkIF0pICkKLQotdHJ5cnNhcmVmPW5vCi1BQ19BUkdfV0lUSChyc2FyZWYsCi1bICAtLXdpdGgtcnNhcmVmPVBBVEggICAgICAgICAgICAgIExvb2sgZm9yIGxpYnJzYXJlZiBpbiBQQVRIL2xpYi5dLAotICAgIGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieHllcyI7IHRoZW4KLSAgICAgIHRyeXJzYXJlZj15ZXMKLSAgICBlbGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieG5vIjsgdGhlbgotICAgICAgdHJ5cnNhcmVmPW5vCi0gICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KLSAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKLSAgICAgIHRyeXJzYXJlZj15ZXMKLSAgICBmaSwKLSkKLUFDX0FSR19FTkFCTEUocnNhcmVmLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1yc2FyZWYvLS13aXRob3V0LXJzYXJlZiBpbnN0ZWFkIF0pICkKLQotdHJ5b3BlbnNzbD1kZWZhdWx0eWVzCi1hc2tlZG9wZW5zc2w9bm8KLUFDX0FSR19XSVRIKG9wZW5zc2wsCi1bICAtLXdpdGgtb3BlbnNzbD1QQVRIICAgICAgICAgICAgIExvb2sgZm9yIG9wZW5zc2wgaW4gUEFUSC9saWIuXSwKLSAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCi0gICAgICB0cnlvcGVuc3NsPXllcwotICAgICAgYXNrZWRvcGVuc3NsPXllcwotICAgIGVsaWYgdGVzdCAieCR3aXRodmFsIiA9ICJ4bm8iOyB0aGVuCi0gICAgICB0cnlvcGVuc3NsPW5vCi0gICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KLSAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKLSAgICAgIHRyeW9wZW5zc2w9eWVzCi0gICAgICBhc2tlZG9wZW5zc2w9eWVzCi0gICAgZmksCi0pCi1pZiB0ZXN0ICJ4JHRyeW9wZW5zc2wiID0gInhkZWZhdWx0eWVzIjsgdGhlbgotICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKC91c3IvbG9jYWwvc3NsKQotICAgICAgdHJ5b3BlbnNzbD15ZXMKLWZpCi1BQ19BUkdfRU5BQkxFKG9wZW5zc2wsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLW9wZW5zc2wvLS13aXRob3V0LW9wZW5zc2wgaW5zdGVhZCBdKSApCi1BQ19BUkdfV0lUSChzc2wsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLW9wZW5zc2wvLS13aXRob3V0LW9wZW5zc2wgaW5zdGVhZCBdKSApCi1BQ19BUkdfRU5BQkxFKHNzbCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtb3BlbnNzbC8tLXdpdGhvdXQtb3BlbnNzbCBpbnN0ZWFkIF0pICkKLQotdHJ5a3JiNT1kZWZhdWx0eWVzCi1hc2tlZGtyYjU9bm8KLUFDX0FSR19XSVRIKGtyYjUsCi1bICAtLXdpdGgta3JiNT1QQVRIICAgICAgICAgICAgICAgIExvb2sgZm9yIGtyYjUgaW4gUEFUSC9saWIuXSwKLSAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCi0gICAgICB0cnlrcmI1PXllcwotICAgICAgYXNrZWRrcmI1PXllcwotICAgICAga3JiNXBhdGg9dW5kZWYKLSAgICBlbGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieG5vIjsgdGhlbgotICAgICAgdHJ5a3JiNT1ubwotICAgICAga3JiNXBhdGg9dW5kZWYKLSAgICBlbGlmIHRlc3QgLWQgIiR3aXRodmFsIjsgdGhlbgotICAgICAgdHJ5a3JiNT15ZXMKLSAgICAgIGFza2Vka3JiNT15ZXMKLSAgICAgIGtyYjVwYXRoPSR3aXRodmFsCi0gICAgZmksCi0pCi1pZiB0ZXN0ICJ4JHRyeWtyYjUiID0gInhkZWZhdWx0eWVzIjsgdGhlbgotICAgICAgdHJ5a3JiNT15ZXMKLSAgICAgIGtyYjVwYXRoPS91c3Iva2VyYmVyb3MKLWZpCi1BQ19BUkdfRU5BQkxFKGtyYjUsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWtyYjUvLS13aXRob3V0LWtyYjUgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKHJwbSwKLVsgIC0td2l0aG91dC1ycG0gICAgICAgICAgICAgICAgICAgRG9uJ3QgaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgUlBNIHBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IHN5c3RlbSB3aGVuIGJ1aWxkaW5nIHRoZSBob3N0IE1JQgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5dKQotQUNfQVJHX0VOQUJMRShycG0sLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXJwbS8tLXdpdGhvdXQtcnBtIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGFnZW50eC1kb20tc29jay1vbmx5LAotWyAgLS1lbmFibGUtYWdlbnR4LWRvbS1zb2NrLW9ubHkgICBEaXNhYmxlIFVEUC9UQ1AgdHJhbnNwb3J0cyBmb3IgYWdlbnR4Ll0sCi1BQ19ERUZJTkUoTkVUU05NUF9BR0VOVFhfRE9NX1NPQ0tfT05MWSkpCi1BQ19BUkdfV0lUSChhZ2VudHgtZG9tLXNvY2stb25seSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1hZ2VudHgtZG9tLXNvY2stb25seS8tLWRpc2FibGUtYWdlbnR4LWRvbS1zb2NrLW9ubHkgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUoc25tcHRyYXBkLXN1YmFnZW50LAotWyAgLS1kaXNhYmxlLXNubXB0cmFwZC1zdWJhZ2VudCAgICBEaXNhYmxlIGFnZW50eCBzdWJhZ2VudCBjb2RlIGluIHNubXB0cmFwZC5dKQotaWYgdGVzdCAieCRlbmFibGVfc25tcHRyYXBkX3N1YmFnZW50IiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWCkKLWZpCi1BQ19BUkdfV0lUSChzbm1wdHJhcGQtc3ViYWdlbnQsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtc25tcHRyYXBkLXN1YmFnZW50Ly0tZGlzYWJsZS1zbm1wdHJhcGQtc3ViYWdlbnQgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKG9wYXF1ZS1zcGVjaWFsLXR5cGVzLAotWyAgLS13aXRob3V0LW9wYXF1ZS1zcGVjaWFsLXR5cGVzICBEb24ndCB1c2Ugc3BlY2lhbCBvcGFxdWUgZW5jb2RpbmdzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVAgbm9ybWFsbHkgY2Fubm90IGhhbmRsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nIG51bWJlcnMsIG5vciBsYXJnZSA2NCBiaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlZ2VycyB3ZWxsLiAgQnkgZGVmYXVsdCwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0LXNubXAgcGFja2FnZSBjb21waWxlcyBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIHRoZXNlIGV4dHJhIGRhdGF0eXBlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbiBhIGxlZ2FsIHdheSldKQotQUNfQVJHX0VOQUJMRShvcGFxdWUtc3BlY2lhbC10eXBlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtb3BhcXVlLXNwZWNpYWwtdHlwZXMvLS13aXRob3V0LW9wYXF1ZS1zcGVjaWFsLXR5cGVzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChtaWJkaXJzLAotWyAgLS13aXRoLW1pYmRpcnM9ImRpcjE6ZGlyMjoiICAgRGVmYXVsdCBkaXJlY3RvcmllcyB0byBsb29rIGZvciBtaWJzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWZhdWx0OiBcJEhPTUUvLnNubXAvbWliczpEQVRBRElSL3NubXAvbWlicyldLAotICAgIFtORVRTTk1QX0RFRkFVTFRfTUlCRElSUz0iJHdpdGhfbWliZGlycyIKLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX01JQkRJUlMsIiR3aXRoX21pYmRpcnMiKV0pCi1BQ19BUkdfRU5BQkxFKG1pYmRpcnMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLW1pYmRpcnMvLS13aXRob3V0LW1pYmRpcnMgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKG1pYnMsCi1bICAtLXdpdGgtbWlicz0iaXRlbTE6aXRlbTI6IiAgICBEZWZhdWx0IG1pYiBJRHMgdG8gcmVhZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVGhlIGRlZmF1bHQgbGlzdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTTk1QdjItTUlCOklGLU1JQjpJUC1NSUI6VENQLU1JQjpVRFAtTUlCIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIGFkZGl0aW9uIG9mIGFueSBtaWJzIHVzZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUgbWliIG1vZHVsZXMgdGhlIGFnZW50IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZCB3aXRoKV0sCi0gICAgTkVUU05NUF9ERUZBVUxUX01JQlM9IiR3aXRoX21pYnMiKQotIyBlbmFibGUtbWlicyBpcyB2YWxpZCB0b28sIGJ1dCBtZWFucyBzb21ldGhpbmcgZWxzZQotCi1BQ19BUkdfV0lUSChtaWJmaWxlcywKLVsgIC0td2l0aC1taWJmaWxlcz0iZmlsZTE6ZmlsZTIiIERlZmF1bHQgbWliIGZpbGVzIHRvIGxvYWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6ICBub25lLiAgdXNlcyBJRHMgYWJvdmUgaW5zdGVhZC4pXSwKLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX01JQkZJTEVTLCIkd2l0aF9taWJmaWxlcyIpKQotQUNfQVJHX0VOQUJMRShtaWJmaWxlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtbWliZmlsZXMvLS13aXRob3V0LW1pYmZpbGVzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKG1pYi1jb25maWctY2hlY2tpbmcsCi1bICAtLWVuYWJsZS1taWItY29uZmlnLWNoZWNraW5nICAgIFR1cm5zIG9uIGV4dHJhIGNoZWNrcyBkdXJpbmcgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIG1pYiBtb2R1bGVzLiBBbnkgY29uZmxpY3RzIHdpbGwgY2F1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgdG8gYWJvcnQgKGRlZmF1bHQgaXMgdG8gaXNzdWUgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgYW5kIGNvbnRpbnVlLildLAotICAgIHdpdGhfbWliX2NmZ19jaGVja3M9InllcyIsd2l0aF9taWJfY2ZnX2NoZWNrcz0ibm8iKQotQUNfQVJHX1dJVEgobWliLWNvbmZpZy1jaGVja2luZywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1taWItY29uZmlnLWNoZWNraW5nLy0tZGlzYWJsZS1taWItY29uZmlnLWNoZWNraW5nIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKG1pYi1jb25maWctZGVidWcsCi1bICAtLWVuYWJsZS1taWItY29uZmlnLWRlYnVnICAgICAgIFR1cm5zIG9uIHZlcmJvc2Ugb3V0cHV0IGR1cmluZyBtaWIgbW9kdWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlIHByb2Nlc3NpbmcuKV0sCi0gICAgd2l0aF9taWJfY2ZnX2RlYnVnPSJ5ZXMiLHdpdGhfbWliX2NmZ19kZWJ1Zz0ibm8iKQotQUNfQVJHX1dJVEgobWliLWNvbmZpZy1jaGVja2luZywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1taWItY29uZmlnLWNoZWNraW5nLy0tZGlzYWJsZS1taWItY29uZmlnLWNoZWNraW5nIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKG1mZC1yZXdyaXRlcywKLVsgIC0tZW5hYmxlLW1mZC1yZXdyaXRlcyAgICAgICAgICAgVXNlIG5ldyBNRkQgcmV3cml0ZXMgb2YgbWliIG1vZHVsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgYXZhaWxhYmxlLiAoZGVmYXVsdCBpcyB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCBtaWIgbW9kdWxlIGNvZGUpLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9tZmRfcmV3cml0ZXMiID0gInh5ZXMiOyB0aGVuCi0gICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTKQotZmkKLUFDX0FSR19XSVRIKG1mZC1yZXdyaXRlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1tZmQtcmV3cml0ZXMvLS1kaXNhYmxlLW1mZC1yZXdyaXRlcyBpbnN0ZWFkIF0pICkKLQotYXNrZWRwa2NzPW5vCi1BQ19BUkdfV0lUSChwa2NzLAotWyAgLS13aXRoLXBrY3M9UEFUSCAgICAgICAgICAgICAgICBMb29rIGZvciBwa2NzMTEgaW4gUEFUSC9saWIuXSwKLSAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCi0gICAgICBhc2tlZHBrY3M9eWVzCi0gICAgZWxpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInhubyI7IHRoZW4KLSAgICAgIGFza2VkcGtjcz1ubwotICAgIGVsaWYgdGVzdCAtZCAiJHdpdGh2YWwiOyB0aGVuCi0gICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJHdpdGh2YWwpCi0gICAgICBhc2tlZHBrY3M9eWVzCi0gICAgZmksCi0pCi1BQ19BUkdfRU5BQkxFKHBrY3MsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXBrY3MvLS13aXRob3V0LXBrY3MgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUodGVzdGluZy1jb2RlLAotWyAgLS1lbmFibGUtdGVzdGluZy1jb2RlICAgICAgICAgICBFbmFibGVzIHNvbWUgY29kZSBzZWN0aW9ucyB0aGF0IHNob3VsZCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IGJlIHVzZWQgZm9yIHRlc3Rpbmcgb2YgY2VydGFpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVAgZnVuY3Rpb25hbGl0aWVzLiAgVGhpcyBzaG91bGQgKm5vdCogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgdHVybmVkIG9uIGZvciBwcm9kdWN0aW9uIHVzZS4gIEV2ZXIuXSwKLSAgICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFKSkKLUFDX0FSR19XSVRIKHRlc3RpbmctY29kZSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS10ZXN0aW5nLWNvZGUvLS1kaXNhYmxlLXRlc3RpbmctY29kZSBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShyZWVudHJhbnQsCi1bICAtLWVuYWJsZS1yZWVudHJhbnQgICAgICAgICAgICAgIEVuYWJsZXMgbG9ja2luZyBmdW5jdGlvbnMgdGhhdCBwcm90ZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSByZXNvdXJjZXMgaW4gc29tZSBtdWx0aS10aHJlYWRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudHMuICBUaGlzIGRvZXMgbm90IGd1YXJhbnRlZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZC1zYWZlIG9wZXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50bHkgYW4gZXhwZXJpbWVudGFsIHNldHRpbmcuXSwKLSAgICB3aXRoX3Jlc19sb2Nrcz0ieWVzIix3aXRoX3Jlc19sb2Nrcz0ibm8iKQotQUNfQVJHX1dJVEgocmVlbnRyYW50LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLXJlZW50cmFudC8tLWRpc2FibGUtcmVlbnRyYW50IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChyb290LWFjY2VzcywKLVsKLUNvbmZpZ3VyaW5nIHRoZSBhZ2VudDoKLSAgLS13aXRob3V0LXJvb3QtYWNjZXNzICAgICAgICAgICBUaGUgc25tcGQgYWdlbnQgd29uJ3QgcmVxdWlyZSByb290IGFjY2VzcyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biBpdC4gIFRoZSBpbmZvcm1hdGlvbiBpdCByZXR1cm5zIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYi1JSSB0cmVlIG1heSBub3QgYmUgY29ycmVjdCwgaG93ZXZlci5dKQotQUNfQVJHX0VOQUJMRShyb290LWFjY2VzcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtcm9vdC1hY2Nlc3MvLS13aXRob3V0LXJvb3QtYWNjZXNzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChrbWVtLXVzYWdlLAotWyAgLS13aXRob3V0LWttZW0tdXNhZ2UgICAgICAgICAgICBEbyBub3QgaW5jbHVkZSBhbnkgY29kZSByZWxhdGVkIHRvIHRoZSB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBrbWVtLl0pCi1BQ19BUkdfRU5BQkxFKGttZW0tdXNhZ2UsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWttZW0tdXNhZ2UvLS13aXRob3V0LWttZW0tdXNhZ2UgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKGR1bW15LXZhbHVlcywKLVsgIC0td2l0aC1kdW1teS12YWx1ZXMgICAgICAgICAgICAgUHJvdmlkZSAncGxhY2Vob2xkZXInIGR1bW15IHZhbHVlcyB3aGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHRlY2huaWNhbGx5IG5vdCBjb21wbGlhbnQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QIHNwZWNpZmljYXRpb25zLCBidXQgd2FzIGhvdyB0aGUgYWdlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRlZCBmb3IgdmVyc2lvbnMgPCA0LjAuXSkKLUFDX0FSR19FTkFCTEUoZHVtbXktdmFsdWVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1kdW1teS12YWx1ZXMvLS13aXRob3V0LWR1bW15LXZhbHVlcyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgocGVyc2lzdGVudC1kaXJlY3RvcnksCi1bICAtLXdpdGgtcGVyc2lzdGVudC1kaXJlY3Rvcnk9ImRpcmVjdG9yeSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IGRpcmVjdG9yeSBmb3IgcGVyc2lzdGVudCBkYXRhIHN0b3JhZ2UuXSxhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZPSIkd2l0aF9wZXJzaXN0ZW50X2RpcmVjdG9yeSIpCi1BQ19BUkdfRU5BQkxFKHBlcnNpc3RlbnQtZGlyZWN0b3J5LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1wZXJzaXN0ZW50LWRpcmVjdG9yeS8tLXdpdGhvdXQtcGVyc2lzdGVudC1kaXJlY3RvcnkgaW5zdGVhZCBdKSApCi0KLWRlZmF1bHRfcGVyc2lzdGVudF9tYXNrPTA3NwotQUNfQVJHX1dJVEgocGVyc2lzdGVudC1tYXNrLAotWyAgLS13aXRoLXBlcnNpc3RlbnQtbWFzaz0ibWFzayIgIERlZmF1bHQgbWFzayBmb3IgcGVyc2lzdGVudCBkYXRhIHN0b3JhZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IDA3NyldLFsKLSAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBtYXNrIHZhbHVlIF0pOwotICBmaQotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgcGVyc2lzdGVudCBtYXNrICR3aXRodmFsKQotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9QRVJTSVNURU5UX01BU0ssJHdpdGh2YWwpCi1dLFsKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IHBlcnNpc3RlbnQgbWFzayAkZGVmYXVsdF9wZXJzaXN0ZW50X21hc2spCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1BFUlNJU1RFTlRfTUFTSywkZGVmYXVsdF9wZXJzaXN0ZW50X21hc2spCi1dKQotQUNfQVJHX0VOQUJMRShwZXJzaXN0ZW50LW1hc2ssLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXBlcnNpc3RlbnQtbWFzayBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgoY29weV9wZXJzaXN0ZW50X2ZpbGVzLAotWyAgLS13aXRoLWNvcHktcGVyc2lzdGVudC1maWxlcz0ibm8iIERvbid0IGNvcHkgcGVyc2lzdGVudCBmaWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciB1c2UgInllcyIgdG8gY29weSB0aGVtKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogeWVzKV0sCi0gICAgYWNfY3ZfdXNlcl9wcm9tcHRfQ09QWV9QRVJTSVNURU5UX0ZJTEVTPSIkd2l0aF9jb3B5X3BlcnNpc3RlbnRfZmlsZXMiKQotQUNfQVJHX0VOQUJMRShjb3B5X3BlcnNpc3RlbnRfZmlsZXMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWNvcHlfcGVyc2lzdGVudF9maWxlcy8tLXdpdGhvdXQtY29weV9wZXJzaXN0ZW50X2ZpbGVzIGluc3RlYWQgXSkgKQotCi1kZWZhdWx0X3RlbXBfZmlsZV9wYXR0ZXJuPSIvdG1wL3NubXBkWFhYWFhYIgotQUNfQVJHX1dJVEgodGVtcC1maWxlLXBhdHRlcm4sCi1bICAtLXdpdGgtdGVtcC1maWxlLXBhdHRlcm49UEFUVEVSTiAgUGF0dGVybiBvZiB0ZW1wb3JhcnkgZmlsZXMgKERlZmF1bHQ6IC90bXAvc25tcGRYWFhYWFgpXSxbCi0gIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcGF0dGVybiBdKTsKLSAgZmkKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyB0ZW1wb3JhcnkgZmlsZSBwYXR0ZXJuICR3aXRodmFsKQotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9URU1QX0ZJTEVfUEFUVEVSTiwiJHdpdGh2YWwiLFtQYXR0ZXJuIG9mIHRlbXBvcmFyeSBmaWxlc10pCi1dLFsKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IHRlbXBvcmFyeSBmaWxlIHBhdHRlcm4gJGRlZmF1bHRfdGVtcF9maWxlX3BhdHRlcm4pCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1RFTVBfRklMRV9QQVRURVJOLCIkZGVmYXVsdF90ZW1wX2ZpbGVfcGF0dGVybiIsW1BhdHRlcm4gb2YgdGVtcG9yYXJ5IGZpbGVzXSkKLV0pCi1BQ19BUkdfRU5BQkxFKHRlbXAtZmlsZS1wYXR0ZXJuLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC10ZW1wLWZpbGUtcGF0dGVybiBpbnN0ZWFkIF0pICkKLQotZGVmYXVsdF9hZ2VudHhfc29ja2V0PSIvdmFyL2FnZW50eC9tYXN0ZXIiCi1BQ19BUkdfV0lUSChhZ2VudHgtc29ja2V0LAotWyAgLS13aXRoLWFnZW50eC1zb2NrZXQ9RklMRSAgICAgICAgIEFnZW50WCBzb2NrZXQgKERlZmF1bHQ6IC92YXIvYWdlbnR4L21hc3RlciBhcyBzcGVjaWZpZWQgaW4gUkZDMjc0MSldLFsKLSAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBmdWxsIHBhdGggXSk7Ci0gIGZpCi0gIEFDX01TR19SRVNVTFQodXNpbmcgQWdlbnRYIHNvY2tldCAkd2l0aHZhbCkKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfQUdFTlRYX1NPQ0tFVCwiJHdpdGh2YWwiLFtVbml4IGRvbWFpbiBzb2NrZXQgZm9yIEFnZW50WCBtYXN0ZXItc3ViYWdlbnQgY29tbXVuaWNhdGlvbl0pCi1dLFsKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IEFnZW50WCBzb2NrZXQgJGRlZmF1bHRfYWdlbnR4X3NvY2tldCkKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfQUdFTlRYX1NPQ0tFVCwiJGRlZmF1bHRfYWdlbnR4X3NvY2tldCIsW1VuaXggZG9tYWluIHNvY2tldCBmb3IgQWdlbnRYIG1hc3Rlci1zdWJhZ2VudCBjb21tdW5pY2F0aW9uXSkKLV0pCi1BQ19BUkdfRU5BQkxFKGFnZW50eC1zb2NrZXQsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWFnZW50eC1zb2NrZXQgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKGRlZmF1bHQtc25tcC12ZXJzaW9uLAotWyAgLS13aXRoLWRlZmF1bHQtc25tcC12ZXJzaW9uPSIzIiBEZWZhdWx0IHZlcnNpb24gb2YgU05NUCB0byB1c2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogMykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlZ2FsIHZhbHVlczogMSwgMiAoZm9yIFNOTVB2MmMpIG9yIDMuXSwKLSAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OPSIkd2l0aF9kZWZhdWx0X3NubXBfdmVyc2lvbiIpCi1BQ19BUkdfRU5BQkxFKGRlZmF1bHQtc25tcC12ZXJzaW9uLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1kZWZhdWx0LXNubXAtdmVyc2lvbi8tLXdpdGhvdXQtZGVmYXVsdC1zbm1wLXZlcnNpb24gaW5zdGVhZCBdKSApCi0KLSMgd2UgdGVzdCB0aGlzIG5vdyBhbmQgbGF0ZXIgYXMgd2VsbC4gIHdlIHRlc3QgaXQgbm93IHNvIGNvbmZpZ3VyZSBjYW4gZGllCi0jIGVhcmx5IG9uIHdpdGggYW4gZXJyb3IgcmF0aGVyIHRoYW4gd2FpdGluZyB0aWxsIHRoZSBlbmQgb2YgdGhlIHNjcmlwdC4KLWlmIHRlc3QgIngkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgIT0gIngiOyB0aGVuCi0gIGlmIHRlc3QgIiRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OIiA9ICIyYyI7IHRoZW4KLSAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OPSIyIgotICBmaQotICBpZiB0ZXN0ICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgIT0gIjEiIC1hICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgIT0gIjIiIC1hICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgIT0gIjMiOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKElsbGVnYWwgdmVyc2lvbiBudW1iZXIgcGFzc2VkIHRvIC0td2l0aC1kZWZhdWx0LXNubXAtdmVyc2lvbikKLSAgZmkKLWZpCi0KLUFDX0FSR19XSVRIKHN5c19jb250YWN0LAotWyAgLS13aXRoLXN5cy1jb250YWN0PSJ3aG9Ad2hlcmUiICBEZWZhdWx0IHN5c3RlbSBjb250YWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IExPR0lOQERPTUFJTk5BTUUpXSwKLSAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1NZU19DT05UQUNUPSIkd2l0aF9zeXNfY29udGFjdCIpCi1BQ19BUkdfRU5BQkxFKHN5c19jb250YWN0LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1zeXMtY29udGFjdC8tLXdpdGhvdXQtc3lzLWNvbnRhY3QgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKHN5c19sb2NhdGlvbiwKLVsgIC0td2l0aC1zeXMtbG9jYXRpb249ImxvY2F0aW9uIiAgRGVmYXVsdCBzeXN0ZW0gbG9jYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogVW5rbm93bildLAotICAgIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfU1lTX0xPQz0iJHdpdGhfc3lzX2xvY2F0aW9uIikKLUFDX0FSR19FTkFCTEUoc3lzX2xvY2F0aW9uLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1zeXMtbG9jYXRpb24vLS13aXRob3V0LXN5cy1sb2NhdGlvbiBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgobG9nZmlsZSwKLVsgIC0td2l0aC1sb2dmaWxlPSJsb2NhdGlvbiIgICAgICAgRGVmYXVsdCBsb2cgZmlsZSBsb2NhdGlvbiBmb3Igc25tcGQuXSwKLSAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0xPR0ZJTEU9IiR3aXRoX2xvZ2ZpbGUiKQotQUNfQVJHX0VOQUJMRShsb2dmaWxlLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1sb2dmaWxlLy0td2l0aG91dC1sb2dmaWxlIGluc3RlYWQgXSkgKQotaWYgdGVzdCAiJGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfTE9HRklMRSIgPSAibm8iOyB0aGVuCi0gICAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9MT0dGSUxFPSJub25lIgotZmkKLQotQUNfQVJHX1dJVEgodHJhbnNwb3J0cywKLVsgIC0td2l0aC10cmFuc3BvcnRzPSJ0MSB0MiAuLi4iICAgQ29tcGlsZSBpbiB0aGUgZ2l2ZW4gU05NUCB0cmFuc3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZXMgKHNwYWNlIHNlcGFyYXRlZCBsaXN0KS5dKQotQUNfQVJHX1dJVEgob3V0X3RyYW5zcG9ydHMsCi1bICAtLXdpdGgtb3V0LXRyYW5zcG9ydHM9InQxIC4uLiIgIEV4Y2x1ZGUgbGlzdGVkIFNOTVAgdHJhbnNwb3J0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwYWNlIHNlcGFyYXRlZCBsaXN0KS4KLQotICBBdmFpbGFibGUgU05NUCB0cmFuc3BvcnQgbW9kdWxlcyBhcmU6Ci0KLSAgICBVRFAgICAgICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgVURQL0lQLgotICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIGFsd2F5cyBjb21waWxlZCBpbi4KLSAgICBVRFBJUHY2ICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgVURQL0lQdjYuCi0gICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgYXZhaWxhYmxlIGZvciBMaW51eCwgU29sYXJpcyBhbmQKLSAgICAgICAgICAgICAgICBGcmVlQlNEIGF0IGxlYXN0LgotICAgICAgICAgICAgICAgIEl0IGlzIG5ldmVyIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQuCi0gICAgVENQSVB2NiAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIFVEUC9JUHY2LgotICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIGF2YWlsYWJsZSBmb3IgTGludXgsIFNvbGFyaXMgYW5kCi0gICAgICAgICAgICAgICAgRnJlZUJTRCBhdCBsZWFzdC4KLSAgICAgICAgICAgICAgICBJdCBpcyBuZXZlciBjb21waWxlZCBpbiBieSBkZWZhdWx0LgotICAgIFRDUCAgICAgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBUQ1AvSVAuCi0gICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCwgYnV0IG1heSBiZSBvbWl0dGVkLgotICAgIFVuaXggICAgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBVbml4IGRvbWFpbiBwcm90b2NvbHMuCi0gICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCBleGNlcHQgb24gV2luMzIKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybXMsIGFuZCBtYXkgYmUgb21pdHRlZC4KLSAgICBDYWxsYmFjayAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgYW4gaW50ZXJuYWwgbG9jYWxseSBjb25uZWN0ZWQgcGFpcgotICAgICAgICAgICAgICAgIG9mIHNubXBfc2Vzc2lvbnMuCi0gICAgQUFMNVBWQyAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIEFBTDUgUFZDcy4KLSAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBwcmVzZW50bHkgb25seSBhdmFpbGFibGUgZm9yIExpbnV4LAotICAgICAgICAgICAgICAgIGlzIG5ldmVyIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQgYW5kIG1heSBiZSBvbWl0dGVkLgotICAgIElQWCAgICAgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBJUFggcGVyIFJGQyAxNDIwLgotICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIHByZXNlbnRseSBvbmx5IGF2YWlsYWJsZSBmb3IgTGludXgsCi0gICAgICAgICAgICAgICAgaXMgbmV2ZXIgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCBhbmQgbWF5IGJlIG9taXR0ZWQuCi1dKQotCi0jCi0jIENhdGNoIGNvbW1vbiBtaXN0YWtlcyBpbiB0cmFuc3BvcnQgb3B0aW9ucwotIwotQUNfQVJHX1dJVEgodHJhbnNwb3J0LCwgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtdHJhbnNwb3J0cy8tLXdpdGhvdXQtdHJhbnNwb3J0cyBpbnN0ZWFkIF0pICAgICApCi1BQ19BUkdfV0lUSChvdXQtdHJhbnNwb3J0LCxBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1vdXQtdHJhbnNwb3J0cy8tLXdpdGhvdXQtb3V0LXRyYW5zcG9ydHMgaW5zdGVhZCBdKSApCi0KLSMKLSMgc2VjdXJpdHkgbW9kdWxlcwotIwotCi1BQ19BUkdfV0lUSChzZWN1cml0eS1tb2R1bGVzLAotWyAgLS13aXRoLXNlY3VyaXR5LW1vZHVsZXM9InMxIHMyIC4uLiIgICBDb21waWxlIGluIHRoZSBnaXZlbiBTTk1QIHNlY3VyaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgc2VydmljZXMgKHNwYWNlIHNlcGFyYXRlZCBsaXN0KS4KLQotICBBdmFpbGFibGUgU05NUCBzZWN1cml0eSBzZXJ2aWNlczoKLQotICAgICAgICB1c20gICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdXNlciBiYXNlZCBTTk1QIHNlY3VyaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWlyZWQgYW5kIGFsd2F5cyBjb21waWxlZCBpbikKLSAgICAgICAga3NtICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIGtlcmJlcm9zIGJhc2VkIFNOTVAgc2VjdXJpdHkKLV0pCi1BQ19BUkdfRU5BQkxFKHNlY3VyaXR5LW1vZHVsZXMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXNlY3VyaXR5LW1vZHVsZXMvLS13aXRob3V0LXNlY3VyaXR5LW1vZHVsZXMgaW5zdGVhZCBdKSApCi0KLSMKLSMgbWliIG1vZHVsZXMKLSMKLQotQUNfQVJHX1dJVEgobWliX21vZHVsZXMsCi1bICAtLXdpdGgtbWliLW1vZHVsZXM9Iml0ZW0xIC4uLiIgIENvbXBpbGUgd2l0aCBhZGRpdGlvbmFsIG1pYiBtb2R1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3BhY2Ugc2VwYXJhdGVkIGxpc3QpLl0pCi1BQ19BUkdfRU5BQkxFKG1pYl9tb2R1bGVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1taWItbW9kdWxlcy8tLXdpdGhvdXQtbWliLW1vZHVsZXMgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKG91dF9taWJfbW9kdWxlcywKLVsgIC0td2l0aC1vdXQtbWliLW1vZHVsZXM9Imxpc3QiICAgQ29tcGlsZSB3aXRob3V0IHRoZXNlIG1pYiBtb2R1bGVzLgotCi0gIERlZmF1bHQgbWliIG1vZHVsZXMgY29tcGlsZWQgaW50byB0aGUgYWdlbnQgKHdoaWNoIGNhbiBiZSByZW1vdmVkKToKLSAgCi0gICAgbWliSUkgICAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciB0aGUgbWliLUlJIHRyZWUuCi0gICAgc25tcHYzbWlicyAgICAgICAgICAgICBzdXBwb3J0IGZvciB0aGUgc25tcHYzIG1pYiBtb2R1bGVzLgotICAgIHVjZF9zbm1wICAgICAgICAgICAgICAgVUNELVNOTVAtTUlCIHNwZWNpZmljIGV4dGVuc2lvbnMuCi0gICAgYWdlbnRfbWlicyAgICAgICAgICAgICBORVQtU05NUC1BR0VOVC1NSUIgZXh0ZW5zaW9ucwotICAgIGFnZW50eCAgICAgICAgICAgICAgICAgQWdlbnRYIHN1cHBvcnQgKHNlZSBiZWxvdykKLSAgICBub3RpZmljYXRpb24gICAgICAgICAgIG1pYnMgc3VwcG9ydGluZyBzcGVjaWZpY2F0aW9uIG9mIHRyYXAgZGVzdGluYXRpb25zLgotICAgIHRhcmdldCAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgdGhlIFNOTVAgV0dzIFRBUkdFVC1NSUIuCi0gICAgdXRpbGl0aWVzICAgICAgICAgICAgICBnZW5lcmFsIGFnZW50IGNvbmZpZ3VyYXRpb24gdXRpbGl0aWVzLgotICAgIGRpc21hbi9ldmVudCAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIERJU01BTi1FVkVOVC1NSUIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1cHBvcnRzIHNlbGYgbW9uaXRvcmluZyBhbmQgbm90aWZpY2F0aW9uIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnkgd2hlbiBlcnJvciBjb25kaXRpb25zIGFyZSBmb3VuZCkKLSAgICBkaXNtYW4vc2NoZWR1bGUgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBESVNNQU4tU0NIRURVTEUtTUlCCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmlnZ2VyIFNFVCByZXF1ZXN0cyBhdCBzcGVjaWZpZWQgdGltZXMpCi0gICAgaG9zdCAgICAgICAgICAgICAgICAgICBob3N0IHJlc291cmNlcyBtaWIgc3VwcG9ydC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9ubHkgb24gbWFqb3Igc3VwcG9ydGVkIHBsYXRmb3JtcykKLQotICBPcHRpb25hbCBtaWIgbW9kdWxlcyB0aGF0IGNhbiBiZSBidWlsdCBpbnRvIHRoZSBhZ2VudCBpbmNsdWRlOgotICAgIHNtdXggICAgICAgICAgICAgICAgICAgc211eCBzdXBwb3J0IHRvIGFsbG93IHN1YmFnZW50cyB0byBhdHRhY2ggdG8gc25tcGQuCi0gICAgbWliSUkvbXRhX3NlbmRtYWlsICAgICBTZW5kbWFpbCBzdGF0aXN0aWNzIG1vbml0b3JpbmcgKE1UQS1NSUIpCi0gICAgdWNkLXNubXAvZGlza2lvICAgICAgICBUYWJsZSBvZiBpby1kZXZpY2VzIGFuZCBob3cgbXVjaCBkYXRhIHRoZXkgaGF2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZC93cml0dGVuLiAgKG9ubHkgdGVzdGVkIG9uIFNvbGFyaXMsIExpbnV4KQotICAgIGRpc21hbi9vbGQtZXZlbnQtbWliICAgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gb2YgdGhlIERJU01BTi1FVkVOVC1NSUIKLQotICBPcHRpb25hbCBtb2R1bGVzIGZvciBzcGVjaWZpYyBwbGF0Zm9ybXMKLSAgICBMaW51eAotICAgICAgdWNkLXNubXAvbG1TZW5zb3JzICAgaGFyZHdhcmUgbW9uaXRvcmluZyAoTE0tU0VOU09SUy1NSUIpCi0gICAgICBpcC1taWIvaXB2NEludGVyZmFjZVRhYmxlICAoZXhwZXJpbWVudGFsKQotICAgICAgaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZSAgKGV4cGVyaW1lbnRhbCkKLSAgICAgIHR1bm5lbCAgICAgICAgICAgICAgIExpbnV4IFRVTk5FTC1NSUIgc3VwcG9ydCAoaWZUYWJsZSBleHRlbnNpb24pCi0gICAgICBtaWJJSS9pbnRlcmZhY2VzICAgICAob2xkIGlmVGFibGUgaW1wbGVtZW50YXRpb24pCi0gICAgICBtaXNjL2lwZndhY2MgICAgICAgICBhY2NvdW50aW5nIHJ1bGVzIElQIGZpcmV3YWxsIGluZm9ybWF0aW9uCi0gICAgICBpcGZ3Y2hhaW5zL2lwZndjaGFpbnMgIGZpcmV3YWxsIGNoYWlucyB1bmRlciBpcGZ3Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTZWUgYWdlbnQvbWliZ3JvdXAvaXBmd2NoYWlucy9SRUFETUUpCi0gICAgICBzY3RwLW1pYiAgICAgICAgICAgICBzdXBwb3J0IGZvciB0aGUgU0NUUC1NSUIKLQotICAgIFNvbGFyaXMKLSAgICAgIHVjZC1zbm1wL2xtU2Vuc29ycyAgIGhhcmR3YXJlIG1vbml0b3JpbmcgKExNLVNFTlNPUlMtTUlCKQotICAgICAgaWYtbWliICAgICAgICAgICAgICAgSUYtTUlCIHJld3JpdGUgKGFkZCAtLWVuYWJsZS1tZmQtcmV3cml0ZXMpCi0gICAgICB0Y3AtbWliICAgICAgICAgICAgICBUQ1AtTUlCIHJld3JpdGUgKHRjcENvbm5lY3Rpb25UYWJsZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwTGlzdGVuZXJUYWJsZTsgYWRkIC0tZW5hYmxlLW1mZC1yZXdyaXRlcykKLSAgICAgIHVkcC1taWIgICAgICAgICAgICAgIFVEUC1NSUIgcmV3cml0ZSAodWRwRW5kcG9pbnRUYWJsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIC0tZW5hYmxlLW1mZC1yZXdyaXRlcykKLQotICAgIEZyZWVCU0QvT3BlbkJTRAotICAgICAgaWYtbWliICAgICAgICAgICAgICAgSUYtTUlCIHJld3JpdGUgKGFkZCAtLWVuYWJsZS1tZmQtcmV3cml0ZXMpCi0KLSAgQWdlbnRYIHN1cHBvcnQ6Ci0gICAgYWdlbnR4L3N1YmFnZW50ICAgICAgICBhbGxvd3MgdGhlIGFnZW50IHRvIHJ1biBhcyBlaXRoZXIgYSBzbm1wIGFnZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBvciBhcyBhbiBhZ2VudFggc3ViLWFnZW50LgotICAgIGFnZW50eC9tYXN0ZXIgICAgICAgICAgbWFrZXMgdGhlIGFnZW50IHJ1biBhcyBhbiBhZ2VudFggbWFzdGVyIGFnZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzIGEgbm9ybWFsIHNubXAgYWdlbnQuCi0gICAgYWdlbnR4ICAgICAgICAgICAgICAgICBpbmNsdWRlcyBib3RoIGFnZW50eC9tYXN0ZXIgYW5kIGFnZW50eC9jbGllbnQuCi0KLSAgT3B0aW9uYWwgbW9kdWxlcyBmb3IgQyBjb2RlcnMgdG8gbG9vayBhdCBhbmQvb3IgaW5jbHVkZSBhcyBleHRlbnNpb24gZXhhbXBsZXM6Ci0gIAotICAgIGV4YW1wbGVzL3VjZERlbW9QdWJsaWMgIFNOTVB2MyBpbnRlcm9wZXJhYmlsaXR5IHRlc3RpbmcgbWliLgotICAgIGV4YW1wbGVzL2V4YW1wbGUgICAgICAgIGV4YW1wbGUgQyBjb2RlIGV4dGVuc2lvbi5dKQotQUNfQVJHX0VOQUJMRShvdXRfbWliX21vZHVsZXMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLW91dC1taWItbW9kdWxlcy8tLXdpdGhvdXQtb3V0LW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgKQotCi0KLSMKLUFDX0FSR19XSVRIKGVudGVycHJpc2Utb2lkLAotW0VudGVycHJpc2UgT0lEczogICh3YXJuaW5nOiB0aGlzIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4pCi0KLSAgLS13aXRoLWVudGVycHJpc2Utb2lkICAgICAgICAgICAgICBUaGUgZW50ZXJwcmlzZSBudW1iZXIgYXNzaWduZWQgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVuZG9yIGJ5IElBTkEuICBTZWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmlhbmEub3JnL2NnaS1iaW4vZW50ZXJwcmlzZS5wbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdldCBvbmUsIHRob3VnaCB1c2luZyB0aGUgZGVmYXVsdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2JhYmx5IHRoZSByaWdodCBjaG9pY2UgaXMgbW9zdCBjYXNlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCA4MDcyID0gImVudGVycHJpc2UubmV0LXNubXAiKV0sWwotICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIHZhbHVlIGZvciB0aGUgZW50ZXJwcmlzZSBudW1iZXIgXSk7Ci0gIGZpCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0VOVEVSUFJJU0VfT0lELCAkd2l0aHZhbCkKLSAgZW50X29pZD0iMSwzLDYsMSw0LDEsJHdpdGh2YWwiCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0VOVEVSUFJJU0VfTUlCLCAkZW50X29pZCkKLSAgZW50X2RvdF9vaWQ9IjEuMy42LjEuNC4xLiR3aXRodmFsIgotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9FTlRFUlBSSVNFX0RPVF9NSUIsICRlbnRfZG90X29pZCkKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBlbnRlcnByaXNlIG51bWJlciAkd2l0aHZhbCkKLV0sWwotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgImVudGVycHJpc2UubmV0LXNubXAiKQotXSkKLUFDX0FSR19FTkFCTEUoZW50ZXJwcmlzZS1vaWQsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWVudGVycHJpc2Utb2lkLy0td2l0aG91dC1lbnRlcnByaXNlLW9pZCBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgoZW50ZXJwcmlzZS1zeXNvaWQsCi1bCi0gIC0td2l0aC1lbnRlcnByaXNlLXN5c29pZCAgICAgICAgICAgVGhlIGJhc2UgT0lEIGZvciB0aGUgc3lzT2JqZWN0SUQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc3lzdGVtIGdyb3VwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgLjEuMy42LjEuNC4xLjgwNzIuMy4yLi4uID0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZXRTbm1wQWdlbnRPSURzLi4uIildLFsKLSAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBiYXNlIE9JRCB2YWx1ZSBdKTsKLSAgZmkKLSAgc3lzX29pZD1gZWNobyAiJHdpdGh2YWwiIHwgc2VkICdzL15cLi8vJyB8IHNlZCAncy9cLi9cLC9nJ2AKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfU1lTVEVNX01JQiwgJHN5c19vaWQpCi0gIHN5c19kb3Rfb2lkPWBlY2hvICIkd2l0aHZhbCIgfCBzZWQgJ3MvXlwuLy8nYAotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9TWVNURU1fRE9UX01JQiwgJHN5c19kb3Rfb2lkKQotICBzeXNvaWRfbGVuPWBlY2hvICIkd2l0aHZhbCIgfCBzZWQgJ3MvW15cLl0vL2cnIHwgYXdrIC1GXC4gJ3sgcHJpbnQgTkYgfSdgCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1NZU1RFTV9ET1RfTUlCX0xFTkdUSCwgJHN5c29pZF9sZW4pCi0gIEFDX01TR19SRVNVTFQodXNpbmcgZW50ZXJwcmlzZSBzeXNPSUQgJHdpdGh2YWwgLi4uLikKLV0sWwotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgZW50ZXJwcmlzZSBzeXNPSUQgIk5FVC1TTk1QLU1JQjo6bmV0U25tcEFnZW50T0lEcy4uLiIpCi1dKQotQUNfQVJHX0VOQUJMRShlbnRlcnByaXNlLXN5c29pZCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtZW50ZXJwcmlzZS1zeXNvaWQvLS13aXRob3V0LWVudGVycHJpc2Utc3lzb2lkIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChlbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQsCi1bCi0gIC0td2l0aC1lbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQgVGhlIE9JRCB1c2VkIGZvciB0aGUgcm9vdCBvZgotCQkJCSAgICAgZW50ZXJwcmlzZSBzcGVjaWZpYyBub3RpZmljYXRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IC4xLjMuNi4xLjQuMS44MDcyLjQgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ldFNubXBOb3RpZmljYXRpb25QcmVmaXgiKV0sWwotICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIGJhc2UgT0lEIHZhbHVlIF0pOwotICBmaQotICBub3RpZmljYXRpb25fb2lkPWBlY2hvICIkd2l0aHZhbCIgfCBzZWQgJ3MvXlwuLy8nIHwgc2VkICdzL1wuL1wsL2cnYAotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9OT1RJRklDQVRJT05fTUlCLCAkbm90aWZpY2F0aW9uX29pZCkKLSAgbm90aWZpY2F0aW9uX2RvdF9vaWQ9YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9eXC4vLydgCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX05PVElGSUNBVElPTl9ET1RfTUlCLCAkbm90aWZpY2F0aW9uX2RvdF9vaWQpCi0gIG5vdGlmaWNhdGlvbm9pZF9sZW49YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9bXlwuXS8vZycgfCBhd2sgLUZcLiAneyBwcmludCBORiB9J2AKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfTk9USUZJQ0FUSU9OX0RPVF9NSUJfTEVOR1RILCAkbm90aWZpY2F0aW9ub2lkX2xlbikKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBlbnRlcnByaXNlIG5vdGlmaWNhdGlvbnMgJHdpdGh2YWwpCi1dLFsKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IG5vdGlmaWNhdGlvbnMgIk5FVC1TTk1QLU1JQjo6bmV0U25tcE5vdGlmaWNhdGlvbnMiKQotXSkKLUFDX0FSR19FTkFCTEUoZW50ZXJwcmlzZS1ub3RpZmljYXRpb24tb2lkLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1lbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQvLS13aXRob3V0LWVudGVycHJpc2Utbm90aWZpY2F0aW9uLW9pZCBpbnN0ZWFkIF0pICkKLSMKLSMgQ2F0Y2ggY29tbW9uIG1pc3Rha2VzIGluIGNvbmZpZ3VyZSBvcHRpb25zCi0jCi1BQ19BUkdfV0lUSChtaWItbW9kdWxlLCwgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24xLiBVc2UgLS13aXRoLW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgICAgICkKLUFDX0FSR19XSVRIKG1vZHVsZSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24zLiBVc2UgLS13aXRoLW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgKQotQUNfQVJHX1dJVEgobW9kdWxlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb240LiBVc2UgLS13aXRoLW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChvdXQtbWliLW1vZHVsZSwsQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb241LiBVc2UgLS13aXRoLW91dC1taWItbW9kdWxlcyBpbnN0ZWFkIF0pICkKLUFDX0FSR19XSVRIKG91dC1tb2R1bGVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbjcuIFVzZSAtLXdpdGgtb3V0LW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgKQotQUNfQVJHX1dJVEgob3V0LW1vZHVsZSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb244LiBVc2UgLS13aXRoLW91dC1taWItbW9kdWxlcyBpbnN0ZWFkIF0pICkKLQotIwotIyBQZXJsIHNwZWNpZmljCi0jCi1BQ19BUkdfV0lUSChwZXJsLW1vZHVsZXMsCi1bCi1QZXJsOgotICAtLXdpdGgtcGVybC1tb2R1bGVzWz1BUkdTXSAgICAgIEluc3RhbGwgdGhlIFBlcmwgbW9kdWxlcyBhbG9uZyB3aXRoIHRoZSByZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIG5ldC1zbm1wIHRvb2xraXQuICBJZiBBUkdTIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkLCB0aGV5J3JlIHBhc3NlZCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlZmlsZS5QTCBzY3JpcHQuXSxbCi0gICAgaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgotICAgICAgaW5zdGFsbF9wZXJsPSJubyIKLSAgICBlbHNlCi0gICAgICBpbnN0YWxsX3Blcmw9InllcyIKLSAgICAgIGlmIHRlc3QgIiR3aXRodmFsIiAhPSAieWVzIjsgdGhlbgotICAgICAgICBQRVJMQVJHUz0iJHdpdGh2YWwiCi0gICAgICBmaQotICAgIGZpCi1dLCBpbnN0YWxsX3Blcmw9InRyeSIpCi0KLUFDX0FSR19FTkFCTEUoZW1iZWRkZWQtcGVybCwKLVsgIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsICAgICAgICAgRGlzYWJsZSBlbWJlZGRlZCBQZXJsIGluIHRoZSBTTk1QIGFnZW50IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXB0cmFwZC4gW2VuYWJsZWQgYnkgZGVmYXVsdF1dLAotICAgIGVtYmVkX3Blcmw9IiRlbmFibGV2YWwiLCBlbWJlZF9wZXJsPSJ0cnkiKQotCi1BQ19BUkdfRU5BQkxFKHBlcmwtY2MtY2hlY2tzLAotWyAgLS1kaXNhYmxlLXBlcmwtY2MtY2hlY2tzICAgICAgICBEaXNhYmxlIGNvbmZpZ3VyZSBjaGVja3MgZm9yIHdoZXRoZXIgUGVybCdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQyBDb21waWxlciBpcyBjb21wYXRpYmxlIHdpdGggb3VycyB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1iZWRkZWQgUGVybCBpcyBlbmFibGVkLl0pCi0KLSMgQ29tbW9uIHBlcmwgbWlzdGFrZXMKLUFDX0FSR19FTkFCTEUocGVybC1tb2R1bGVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1wZXJsLW1vZHVsZXMvLS13aXRob3V0LXBlcmwtbW9kdWxlcyBpbnN0ZWFkIF0pICkKLUFDX0FSR19XSVRIKGVtYmVkZGVkLXBlcmwsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtZW1iZWRkZWQtcGVybC8tLWRpc2FibGUtZW1iZWRkZWQtcGVybCBpbnN0ZWFkIF0pICkKLUFDX0FSR19XSVRIKHBlcmwtY2MtY2hlY2tzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLXBlcmwtY2MtY2hlY2tzLy0tZGlzYWJsZS1wZXJsLWNjLWNoZWNrcyBpbnN0ZWFkIF0pICkKLQotCi0jCi0jIFB5dGhvbiBzcGVjaWZpYwotIwotQUNfQVJHX1dJVEgocHl0aG9uLW1vZHVsZXMsCi1bCi1QeXRob246Ci0gIC0td2l0aC1weXRob24tbW9kdWxlc1s9QVJHU10gICAgSW5zdGFsbCB0aGUgcHl0aG9uIGJpbmRpbmdzIGFsb25nIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdCBvZiB0aGUgbmV0LXNubXAgdG9vbGtpdC4gIElmIEFSR1MgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIHRoZXkncmUgcGFzc2VkIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwLnB5IHNjcmlwdCBhcyBhcmd1bWVudHMuXSxbCi0gICAgaW5zdGFsbF9weXRob249InllcyIKLSAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAieWVzIjsgdGhlbgotICAgICAgUFlUSE9OQVJHUz0iIgotICAgIGVsaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgotICAgICAgUFlUSE9OQVJHUz0iIgotICAgICAgaW5zdGFsbF9weXRob249Im5vIgotICAgIGVsc2UKLSAgICAgIFBZVEhPTkFSR1M9IiR3aXRodmFsIgotICAgIGZpCi1dLCBpbnN0YWxsX3B5dGhvbj0ibm8iKQotCi0jIG90aGVyIGZsYWdzCi0KLUFDX0FSR19XSVRIKHNlcnZlci1zZW5kLWJ1ZiwKLVsKLU5ldHdvcmsgQnVmZmVyczoKLSAgLS13aXRoLXNlcnZlci1zZW5kLWJ1Zls9QVJHXSAgICBVc2UgQVJHIGZvciB0aGUgZGVmYXVsdCBVRFAvVENQIHNlbmQgYnVmZmVyIGluc3RlYWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgT1MgYnVmZmVyIGZvciBzZXJ2ZXIgc29ja2V0cyB0aGF0IGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgKHNubXBkLCBzbm1wdHJhcGQpLiAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBydW50aW1lIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIEFSRyBzaG91bGQgYmUgdGhlIHNpemUgaW4gYnl0ZXNdLFsKLSAgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgc2VydmVyIHNlbmQgYnVmZmVyIF0pCi0gICBmaQotICAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9TRVJWRVJfU0VORF9CVUYsICR3aXRodmFsKV0sCi0gICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHNlbmQgYnVmZmVyIHNpemUgZm9yIHNlcnZlciBzb2NrZXRzXSkgKQotQUNfQVJHX0VOQUJMRShzZXJ2ZXItc2VuZC1idWYsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXNlcnZlci1zZW5kLWJ1Zi8tLXdpdGhvdXQtc2VydmVyLXNlbmQtYnVmIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChzZXJ2ZXItcmVjdi1idWYsCi1bICAtLXdpdGgtc2VydmVyLXJlY3YtYnVmWz1BUkddICAgIFNpbWlsYXIgYXMgcHJldmlvdXMgb3B0aW9uLCBidXQgZm9yIHJlY2VpdmUgYnVmZmVyXSxbCi0gIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgc2VydmVyIHJlY3YgYnVmZmVyIF0pCi0gIGZpCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfU0VSVkVSX1JFQ1ZfQlVGLCAkd2l0aHZhbCldLAotICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHJlY3YgYnVmZmVyIHNpemUgZm9yIHNlcnZlciBzb2NrZXRzXSkgKQotQUNfQVJHX0VOQUJMRShzZXJ2ZXItcmVjdi1idWYsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXNlcnZlci1yZWN2LWJ1Zi8tLXdpdGhvdXQtc2VydmVyLXJlY3YtYnVmIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChjbGllbnQtc2VuZC1idWYsCi1bICAtLXdpdGgtY2xpZW50LXNlbmQtYnVmWz1BUkddICAgIFNpbWlsYXIgYXMgcHJldmlvdXMgb3B0aW9ucywgYnV0IGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlIGJ1ZmZlciBvZiBjbGllbnQgc29ja2V0c10sWwotICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIHBvc2l0aXZlIG51bWJlciBmb3IgdGhlIGNsaWVudCBzZW5kIGJ1ZmZlciBdKQotICBmaQotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX0NMSUVOVF9TRU5EX0JVRiwgJHdpdGh2YWwpXSwKLSAgQUNfTVNHX1JFU1VMVChbdXNpbmcgT1MgZGVmYXVsdCBzZW5kIGJ1ZmZlciBzaXplIGZvciBjbGllbnQgc29ja2V0c10pICkKLUFDX0FSR19FTkFCTEUoY2xpZW50LXNlbmQtYnVmLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1jbGllbnQtc2VuZC1idWYvLS13aXRob3V0LWNsaWVudC1zZW5kLWJ1ZiBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgoY2xpZW50LXJlY3YtYnVmLAotWyAgLS13aXRoLWNsaWVudC1yZWN2LWJ1Zls9QVJHXSAgICBTaW1pbGFyIGFzIHByZXZpb3VzIG9wdGlvbnMsIGJ1dCBmb3IgdGhlIHNlbmQgYnVmZmVyXSxbCi0gIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgY2xpZW50IHJlY3YgYnVmZmVyIF0pCi0gIGZpCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfQ0xJRU5UX1JFQ1ZfQlVGLCAkd2l0aHZhbCldLAotICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHJlY3YgYnVmZmVyIHNpemUgZm9yIGNsaWVudCBzb2NrZXRzXSkgKQotQUNfQVJHX0VOQUJMRShjbGllbnQtcmVjdi1idWYsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWNsaWVudC1yZWN2LWJ1Zi8tLXdpdGhvdXQtY2xpZW50LXJlY3YtYnVmIGluc3RlYWQgXSkgKQotCi0jCi0jIG90aGVyd2lzZSBwcm9tcHRlZCBpbmZvcm1hdGlvbgotIwotQUNfQVJHX1dJVEgoZGVmYXVsdHMsCi1bCi1NaXNjZWxsYW5lb3VzOgotICAtLXdpdGgtZGVmYXVsdHMgICAgICAgICBVc2UgZGVmYXVsdHMgZm9yIHByb21wdGVkIHZhbHVlcy5dLAotICAgIGRlZmF1bHRzPSJ5ZXMiLGRlZmF1bHRzPSJubyIpCi1BQ19BUkdfRU5BQkxFKGRlZmF1bHRzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1kZWZhdWx0cy8tLXdpdGhvdXQtZGVmYXVsdHMgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUodWNkLXNubXAtY29tcGF0aWJpbGl0eSwKLVsgIC0tZW5hYmxlLXVjZC1zbm1wLWNvbXBhdGliaWxpdHkgSW5zdGFsbCB1Y2Qtc25tcCBsb29rLWFsaWtlIGhlYWRlcnMgYW5kIGxpYnMuCi1dKQotQUNfQVJHX1dJVEgodWNkLXNubXAtY29tcGF0aWJpbGl0eSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS11Y2Qtc25tcC1jb21wYXRpYmlsaXR5Ly0tZGlzYWJsZS11Y2Qtc25tcC1jb21wYXRpYmlsaXR5IGluc3RlYWQgXSkgKQotCi0jCi0jIHNldHVwIGluc3RhbGwgdGFyZ2V0cwotIwotaWYgdGVzdCAieCRlbmFibGVfdWNkX3NubXBfY29tcGF0aWJpbGl0eSIgPSAieHllcyIgOyB0aGVuCQotICBpbnN0YWxsdWNkaGVhZGVycz1pbnN0YWxsdWNkaGVhZGVycwotICBpbnN0YWxsdWNkbGlicz1pbnN0YWxsdWNkbGlicwotICBBQ19NU0dfQ0FDSEVfQUREKFVDRC1TTk1QIGNvbXBhdGFiaWxpdHk6ICAgICBlbmFibGVkKQotZmkKLUFDX1NVQlNUKGluc3RhbGx1Y2RoZWFkZXJzKQotQUNfU1VCU1QoaW5zdGFsbHVjZGxpYnMpCi0KLSMgT25seSBkZWZpbmUgaWYgc3BlY2lmaWNhbGx5IGNob3NlbiBhcyAtLXdpdGhvdXQgKGkuZS4sIGRlZmF1bHQgdG8gdHJ1ZSkuIAotaWYgdGVzdCAieCR3aXRoX3Jvb3RfYWNjZXNzIiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX05PX1JPT1RfQUNDRVNTKQotZmkKLQotIyBPbmx5IGRlZmluZSBpZiBzcGVjaWZpY2FsbHkgY2hvc2VuIGFzIC0td2l0aG91dCAoaS5lLiwgZGVmYXVsdCB0byB0cnVlKS4KLWlmIHRlc3QgIngkd2l0aF9rbWVtX3VzYWdlIiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX05PX0tNRU1fVVNBR0UpCi1maQotCi0jIERlZmluZSB1bmxlc3Mgc3BlY2lmaWNhbGx5IHN1cHByZXNzZWQgKGkuZS4sIG9wdGlvbiBkZWZhdWx0cyB0byBmYWxzZSkuIAotaWYgdGVzdCAieCR3aXRoX2R1bW15X3ZhbHVlcyIgIT0gInh5ZXMiOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUykKLWZpCi0KLSMgT25seSBkZWZpbmUgaWYgc3BlY2lmaWNhbGx5IGNob3NlbiBhcyAtLXdpdGhvdXQgKGkuZS4sIGRlZmF1bHQgdG8gdHJ1ZSkuIAotaWYgdGVzdCAieCR3aXRoX29wYXF1ZV9zcGVjaWFsX3R5cGVzIiAhPSAieG5vIjsgdGhlbgotICBBQ19ERUZJTkUoTkVUU05NUF9XSVRIX09QQVFVRV9TUEVDSUFMX1RZUEVTKQotZmkKLQotCi0jIG92ZXJmbG93IHByb2JsZW1zIHdpdGggaHB1eCdzIHNoCi0jIHRha2VuIGZyb20gUGVybCdzIENvbmZpZ3VyZSBzY3JpcHQgCi0KLUFDX01TR19DSEVDS0lORyhbaWYgSSBuZWVkIHRvIGZlZWQgbXlzZWxmIHRvIGtzaF0pCi1pZiB0ZXN0IC1mIC9ocC11eCAtYSAtZiAvYmluL2tzaDsgdGhlbgotICBpZiAoUEFUSD0uOyBhbGlhcyAteCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgQUNfTVNHX1JFU1VMVChubykKLSAgZWxzZQotICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgIGlmIHRlc3QgIngkMSIgPSAieCI7IHRoZW4KLSAgICAgIGV4ZWMgL2Jpbi9rc2ggJDAKLSAgICBlbHNlCi0gICAgICBleGVjIC9iaW4va3NoICQwICIkQCIKLSAgICBmaQotICBmaQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQotZmkKLQotaWYgdGVzdCAieCRkZXZlbG9wZXIiICE9ICJ4bm8iIC1hIC1mICRzcmNkaXIvcmVtb3ZlLWZpbGVzOyB0aGVuCi0gICMgdHVybiBvbiB0aGUgZGV2ZWxvcGVyIGZsYWcgd2hlbiB0YWtlbiBmcm9tIGEgU1ZOIGNoZWNrb3V0IChub3QgYSByZWxlYXNlKQotICBkZXZlbG9wZXI9InllcyIKLWZpCi0KLUFDX0xBTkcoW0NdKQotQUNfUFJPR19DQwotQUNfUFJPR19DUFAKLUxJTktDQz0ke0xJTktDQy0iJENDIn0KLUFDX1NVQlNUKExJTktDQykKLUFDX0FJWAotCi0jIHN5c3RlbSBjaGVjawotQUNfQ0FOT05JQ0FMX1RBUkdFVAotY2hhbmdlcXVvdGUoLCApCi1QQVJUSUFMVEFSR0VUT1M9YGVjaG8gJHRhcmdldF9vcyB8IHNlZCAncy9bLS5fXS4qLy8nYAotY2hhbmdlcXVvdGUoWywgXSkKLQotIyBwbGF0Zm9ybS1zcGVjaWZpYyBjb21waWxlciBmbGFncwotaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4KLQlDRkxBR1M9IiRDRkxBR1MgLURtaW5ndzMyIgotZmkKLQotIyBwbGF0Zm9ybS1zcGVjaWZpYyBsaW5rZXIgZmxhZ3MKLWNhc2UgJHRhcmdldF9vcyBpbgotICAgIGFpeDQuMip8YWl4NC4zKnxhaXg1KnxhaXg2KikKLSAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGF0IGxpbmtlciBmbGFncyB0byBhZGQgdG8gZW5hYmxlIHJ1bnRpbWUgbGlua2luZyBvbiBBSVhdKQotICAgICAgICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KLSAgICAgICAgICAgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCi0gICAgICAgICAgICAgICAgbmV0c25tcF9haXhfcnVudGltZWxpbmtpbmdfZmxhZ3Nfb2s9eWVzCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICAgICAgaWYgdGVzdCAiWCRuZXRzbm1wX2FpeF9ydW50aW1lbGlua2luZ19mbGFnc19vayIgIT0gIlh5ZXMiOyB0aGVuCi0JICAgIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgotCSAgICAgICAgbmV0c25tcF9haXhfbGRmbGFncz0iLVdsLC1icnRsIgotCSAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmV0c25tcF9haXhfbGRmbGFncz0iLWJydGwiCi0JICAgIGZpCi0gICAgICAgICAgICBMREZMQUdTPSIkbmV0c25tcF9haXhfbGRmbGFncyAkTERGTEFHUyIKLQkgICAgQUNfTVNHX1JFU1VMVCgkbmV0c25tcF9haXhfbGRmbGFncykKLQllbHNlCi0JICAgIEFDX01TR19SRVNVTFQoW25vbmVdKQotCWZpCi0JOzsKLSAgICBkYXJ3aW44KnxkYXJ3aW45KikKLSAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGRhcndpbiBsZCBtaWdodCBuZWVkIC1mbGF0X25hbWVzcGFjZV0pCi0JaWYgdGVzdCAteiAiJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCI7IHRoZW4KLQkJTERGTEFHUz0iLWZsYXRfbmFtZXNwYWNlICRMREZMQUdTIgotCQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQotCWVsc2UKLQkJQUNfTVNHX1JFU1VMVChbbm9dKQotCWZpCi0JOzsKLSAgICAqKQotICAgICAgICA7OwotZXNhYwotCi0jIGxpYnRvb2wgc3R1ZmYgZm9yIHNoYXJlZC9zdGF0aWMgbGlicmFyaWVzLgotQUNfTElCVE9PTF9ETE9QRU4KLUFDX0xJQlRPT0xfV0lOMzJfRExMCi1BQ19QUk9HX0xJQlRPT0wKLUFDX1NVQlNUKExJQlRPT0xfREVQUykKLQotIyBDaGVja3MgZm9yIHByb2dyYW1zLgotQUNfUFJPR19JTlNUQUxMCi1BQ19QUk9HX0xOX1MKLUFDX1BST0dfTUFLRV9TRVQKLUFDX1BST0dfRUdSRVAKLUFDX1BBVEhfUFJPRyhbUFNQUk9HXSxwcykKLUFDX1BBVEhfUFJPRyhbUEVSTFBST0ddLHBlcmwpCi1BQ19QQVRIX1BST0coW1BZVEhPTlBST0ddLHB5dGhvbikKLUFDX0NIRUNLX1BST0dTKFdIT0FNSSwgd2hvYW1pIGxvZ25hbWUsIHdob2FtaSkKLUFDX0NIRUNLX1BST0dTKFNFRCxzZWQgZ3NlZCkKLUFDX0NIRUNLX1BST0dTKEZJTkQsZmluZCkKLUFDX1BBVEhfUFJPRyhBVVRPQ09ORiwgYXV0b2NvbmYpCi1BQ19QQVRIX1BST0coQVVUT0hFQURFUiwgYXV0b2hlYWRlcikKLWlmIHRlc3QgIngkYWNfY3ZfcHJvZ19BVVRPQ09ORiIgPSAieCI7IHRoZW4KLQlBVVRPQ09ORj0iOiIKLQlBQ19TVUJTVChBVVRPQ09ORikKLWZpCi1pZiB0ZXN0ICJ4JGFjX2N2X3Byb2dfQVVUT0hFQURFUiIgPSAieCI7IHRoZW4KLQlBVVRPSEVBREVSPSI6IgotCUFDX1NVQlNUKEFVVE9IRUFERVIpCi1maQotCi1BQ19QQVRIX1BST0coW1VOQU1FUFJPR10sdW5hbWUpCi1BQ19ERUZJTkVfVU5RVU9URUQoVU5BTUVQUk9HLCIkVU5BTUVQUk9HIikKLQotQUNfQ19DT05TVAotQUNfQ19JTkxJTkUKLQotCi0jIGdldCB2ZXJzaW9uIG51bWJlci4KLUFDX01TR19DSEVDS0lORyhbZm9yIG5ldC1zbm1wIHZlcnNpb24gbnVtYmVyXSkKLVZFUlNJT049JFBBQ0tBR0VfVkVSU0lPTgotCi0jIGNyZWF0ZSB0aGUgcmVsZWFzZSB2ZXJzaW9uIG51bWJlci4uLi4gIEknbSBub3Qgc3VyZSB0aGlzIGlzIHVzZWQKLSMgYW55d2hlcmUgYW55IGxvbmdlci4KLV9yZWxlYXNlX3ZlcnNpb249YGVjaG8gJFZFUlNJT04gfCBzZWQgJ3MvIjsuKi8vO3MvLioiLy87cy9wcmUvMC4vOydgCi1jaGFuZ2VxdW90ZSgsICkKLVJFTEVBU0VWRVJTSU9OPWBlY2hvICRfcmVsZWFzZV92ZXJzaW9uIHwgc2VkICdzL15cKFswLTldXClcLlwoWzAtOV1cKS9cMTpcMjowLydgCi1jaGFuZ2VxdW90ZShbLCBdKQotCi1BQ19TVUJTVChWRVJTSU9OKQotQUNfU1VCU1QoUkVMRUFTRVZFUlNJT04pCi1BQ19NU0dfUkVTVUxUKCRWRVJTSU9OKQotQUNfTVNHX0NBQ0hFX0FERChOZXQtU05NUCBWZXJzaW9uOiAgICAgICAgICAgJFZFUlNJT04pCi0KLSMgc3VwZXIgdHlwZSBjaGVja2luZwotIyBXV1dYWFgKLUFDX01TR19DSEVDS0lORyhbZm9yIGRldmVsb3BlciBnY2MgZmxhZ3NdKQotaWYgdGVzdCAieCRkZXZlbG9wZXIiID0gInh5ZXMiIC1hICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KLSAgREVWRkxBR1M9Ii1XYWxsIC1XaW5saW5lIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVd3cml0ZS1zdHJpbmdzIC1XY2FzdC1xdWFsIC1Xbm8tY2hhci1zdWJzY3JpcHRzIgotZWxzZQotICBERVZGTEFHUz0iIgotZmkKLUFDX01TR19SRVNVTFQoJERFVkZMQUdTKQotQUNfU1VCU1QoREVWRkxBR1MpCi0KLSMKLSMgaGFja3MgZm9yIGJ1aWxkaW5nIG91dHNpZGUgb2YgdGhlIHNvdXJjZSBkaXJlY3RvcnkKLSMKLSMgMSkgbWFrZSBzdXJlIGJ1aWxkIGluY2x1ZGUgcGF0aHMgYXJlIGJlZm9yZSBzb3VyY2UKLSMgMikgY2hlY2sgZm9yIEdOVSBtYWtlIHRvIHVzZSB2cGF0aCBpbnN0ZWFkIG9mIFZQQVRICi0jCi1OT05fR05VX1ZQQVRIPSJWUEFUSCA9IgotR05VX3ZwYXRoPSIjdnBhdGgiCi0jCi0jIGRlZmluZSBpbmNsdWRlIHBhdGhzIHJlbGF0aXZlIHRvIHRvcF9zcmNkaXIKLSMgdHdlYWsgaW5jbHVkZXMgaWYgd2UncmUgYnVpbGRpbmcgb3V0c2lkZSBvZiB0aGUgc291cmNlIGRpcgotaWYgdGVzdCAieCRzcmNkaXIiID0gInguIjsgdGhlbgotVE9QX0lOQ0xVREVTPVNSQ19UT1BfSU5DTFVERVMKLVNOTVBMSUJfSU5DTFVERVM9U1JDX1NOTVBMSUJfSU5DTFVERVMKLUFHRU5UX0lOQ0xVREVTPVNSQ19BR0VOVF9JTkNMVURFUwotSEVMUEVSX0lOQ0xVREVTPVNSQ19IRUxQRVJfSU5DTFVERVMKLU1JQkdST1VQX0lOQ0xVREVTPVNSQ19NSUJHUk9VUF9JTkNMVURFUwotZWxzZQotVE9QX0lOQ0xVREVTPUJMRF9UT1BfSU5DTFVERVMKLVNOTVBMSUJfSU5DTFVERVM9QkxEX1NOTVBMSUJfSU5DTFVERVMKLUFHRU5UX0lOQ0xVREVTPUJMRF9BR0VOVF9JTkNMVURFUwotSEVMUEVSX0lOQ0xVREVTPUJMRF9IRUxQRVJfSU5DTFVERVMKLU1JQkdST1VQX0lOQ0xVREVTPUJMRF9NSUJHUk9VUF9JTkNMVURFUwotbWFrZSAtdiAtZiAvZGV2L251bGwgMj4vZGV2L251bGwgfCBncmVwIEdOVSA+L2Rldi9udWxsCi1oYXZlX2dudV9tYWtlPSQ/Ci1pZiB0ZXN0ICRoYXZlX2dudV9tYWtlIC1lcSAwIDsgdGhlbgotICAgIE5PTl9HTlVfVlBBVEg9IiNWUEFUSCA9IgotICAgIEdOVV92cGF0aD0idnBhdGgiCi1maQotZmkKLUFDX1NVQlNUKFRPUF9JTkNMVURFUykKLUFDX1NVQlNUKFNOTVBMSUJfSU5DTFVERVMpCi1BQ19TVUJTVChBR0VOVF9JTkNMVURFUykKLUFDX1NVQlNUKEhFTFBFUl9JTkNMVURFUykKLUFDX1NVQlNUKE1JQkdST1VQX0lOQ0xVREVTKQotQUNfU1VCU1QoR05VX3ZwYXRoKQotQUNfU1VCU1QoTk9OX0dOVV9WUEFUSCkKLQotCi0jCi0jIENoZWNrIHdoZXRoZXIgd2UgY2FuIHVzZSAtVXggLUR4PXggd2l0aCB0aGUgZXhwZWN0ZWQgYmVoYXZpb3VyCi0jCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdW4tZGVmaW5lIHRhcmdldCBzeXN0ZW0gdG9rZW4gKGJlZm9yZSByZWRlZmluaW5nKV0pCi1PTERfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLUNQUEZMQUdTPSItVSRQQVJUSUFMVEFSR0VUT1MgLUQkUEFSVElBTFRBUkdFVE9TPSRQQVJUSUFMVEFSR0VUT1MiCi0KLUFDX0VHUkVQX0NQUCh5ZXMsW1sKLSNpZmRlZiAkUEFSVElBTFRBUkdFVE9TCi15ZXMKLSNlbmRpZgotXV0sCi1bUEFSVElBTFRBUkdFVEZMQUdTPSItVSRQQVJUSUFMVEFSR0VUT1MgLUQkUEFSVElBTFRBUkdFVE9TPSRQQVJUSUFMVEFSR0VUT1MiCi0gQUNfTVNHX1JFU1VMVChbeWVzXSldLAotW1BBUlRJQUxUQVJHRVRGTEFHUz0iLUQkUEFSVElBTFRBUkdFVE9TPSRQQVJUSUFMVEFSR0VUT1MiCi0gQUNfTVNHX1JFU1VMVChbbm9dKV0pCi1DRkxBR1M9IiRDRkxBR1MgJFBBUlRJQUxUQVJHRVRGTEFHUyIKLUNQUEZMQUdTPSIkT0xEX0NQUEZMQUdTIgotQUNfTVNHX0NBQ0hFX0FERChCdWlsZGluZyBmb3I6ICAgICAgICAgICAgICAgJFBBUlRJQUxUQVJHRVRPUykKLQotCi0jCi0jIGNoZWNrIGZvciBzcGVjaWFsIGluY2x1ZGVzIGFuZCBwaWNrIG9uZQotIwotCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzeXN0ZW0gaW5jbHVkZSBmaWxlXSkKLWNoYW5nZXF1b3RlKCwgKQotZmlsZWJhc2U9JHRhcmdldF9vcwotIyBpZ25vcmUgYmluYXJ5IGZvcm1hdCBpbmRpY2F0aW9uCi1maWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCBzZWQgJ3MvZWxmLy8nYAotZmlsZWJhc2U9YGVjaG8gJGZpbGViYXNlIHwgc2VkICdzL2FvdXQvLydgCi1maWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCBzZWQgJ3MvZWNvZmYvLydgCi1maWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCBzZWQgJ3MvY29mZi8vJ2AKLXdoaWxlIHRlc3QgIngkZmlsZWJhc2UiICE9ICJ4JGxhc3QiIC1hICEgLWYgJHNyY2Rpci9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS8kZmlsZWJhc2UuaAotZG8KLSAgICBsYXN0PSRmaWxlYmFzZQotICAgIGZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8IHNlZCAncy9bLS5fXVteLS5fXSokLy8nYAotICAgIGlmIHRlc3QgIngkZmlsZWJhc2UiID0gIngkbGFzdCI7IHRoZW4KLQlmaWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCBzZWQgJ3MvWzAtOV0qJC8vJ2AKLSAgICBmaQotZG9uZQotCi1pZiB0ZXN0ICJ4JGZpbGViYXNlIiA9ICJ4JGxhc3QiOyB0aGVuCi0gICAgZmlsZWJhc2U9ImdlbmVyaWMiCi1maQotYWNfY3ZfTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFPSJuZXQtc25tcC9zeXN0ZW0vJGZpbGViYXNlLmgiCi0KLWNoYW5nZXF1b3RlKFssIF0pCi1BQ19NU0dfUkVTVUxUKCRhY19jdl9ORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUpCi1BQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFLCAiJGFjX2N2X05FVFNOTVBfU1lTVEVNX0lOQ0xVREVfRklMRSIpCi0KLSMgc2Vjb25kIHBhcnQsIHRoZSBDUFUgdHlwZS4KLQotQUNfTVNHX0NIRUNLSU5HKFtmb3IgbWFjaGluZS10eXBlIGluY2x1ZGUgZmlsZV0pCi1jaGFuZ2VxdW90ZSgsICkKLWZpbGViYXNlPSR0YXJnZXRfY3B1Ci13aGlsZSB0ZXN0ICJ4JGZpbGViYXNlIiAhPSAieCRsYXN0IiAtYSAhIC1mICRzcmNkaXIvaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lLyRmaWxlYmFzZS5oCi1kbwotICAgIGxhc3Q9JGZpbGViYXNlCi0gICAgZmlsZWJhc2U9YGVjaG8gJGZpbGViYXNlIHwgc2VkICdzL1stLl9dW14tLl9dKiQvLydgCi1kb25lCi0KLWlmIHRlc3QgIngkZmlsZWJhc2UiID0gIngkbGFzdCI7IHRoZW4KLSAgICBmaWxlYmFzZT0iZ2VuZXJpYyIKLWZpCi1hY19jdl9ORVRTTk1QX01BQ0hJTkVfSU5DTFVERV9GSUxFPSJuZXQtc25tcC9tYWNoaW5lLyRmaWxlYmFzZS5oIgotY2hhbmdlcXVvdGUoWywgXSkKLUFDX01TR19SRVNVTFQoWyRhY19jdl9ORVRTTk1QX01BQ0hJTkVfSU5DTFVERV9GSUxFXSkKLQotQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfTUFDSElORV9JTkNMVURFX0ZJTEUsICIkYWNfY3ZfTkVUU05NUF9NQUNISU5FX0lOQ0xVREVfRklMRSIpCi0KLUFDX1BBVEhfUFJPRyhbQ0NQQVRIXSwkQ0MpCi0jIHdhdGNoIG91dCBmb3IgL3Vzci91Y2IvY2Mgb24gc29sYXJpcywgaXQgZG9lc24ndCB3b3JrIHdpdGggdGhpcyBwYWNrYWdlLgotY2FzZSAkdGFyZ2V0X29zIGluCi0gICAgYnNkaSopCi0JaWYgdGVzdCAieCRDQ1BBVEgiID0gIngvdXNyL3VjYi9jYyIgLW8gIngkQ0NQQVRIIiA9ICJ4L3Vzci9iaW4vY2MiOyB0aGVuCi0JICAgIEFDX01TR19FUlJPUihbCi0KLSoqKiBUaGUgQlNESSAvdXNyL3VjYi9jYyBjb21waWxlciBkb2VzIG5vdCB3b3JrIHdpdGggdGhpcyBwYWNrYWdlLiAgCi0qKiogUGxlYXNlIHJ1biBjb25maWd1cmUgd2l0aCAtLXdpdGgtY2M9Z2NjCi1dKQotCWZpCi0gICAgOzsKLSAgICBzb2xhcmlzKikKLQlpZiB0ZXN0ICJ4JENDUEFUSCIgPSAieC91c3IvdWNiL2NjIjsgdGhlbgotCSAgICBBQ19NU0dfRVJST1IoWwotCi0qKiogVGhlIHNvbGFyaXMgL3Vzci91Y2IvY2MgY29tcGlsZXIgZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgcGFja2FnZS4gIAotKioqIFBsZWFzZSBwdXQgYSBkaWZmZXJlbnQgY29tcGlsZXIgaW4geW91ciBwYXRoIGZpcnN0IG9yIHJ1bgotKioqIGNvbmZpZ3VyZSB3aXRoIC0td2l0aC1jYz1YWCwgd2hlcmUgWFggaXMgdGhlIGNvbXBpbGVyIHlvdSB3YW50IHRvIHVzZS4KLV0pCi0JZmkKLSAgICA7OwotZXNhYwotICAgIAotQUNfTVNHX0NIRUNLSU5HKFtmb3IgYWRkaXRpb25hbCBjcHAgZmxhZ3NdKQotIyBnY2MgZXh0cmEgQ1BQRkxBR1MKLWlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIiAtYSAieCRDUFAiID0gIngkQ0MgLUUiOyB0aGVuCi0gICMgZXh0cmEgY3BwIGZsYWdzIGZvciBnbnUgYyBjb21waWxlciB0byBhbGxvdyAuaW4gZmlsZSBleHRlbnNpb25zLgotICBFWFRSQUNQUEZMQUdTPSIteCBjIgotZWxzZQotICBFWFRSQUNQUEZMQUdTPSIiCi1maQotCi0jIFNvbGFyaXMgZXh0cmEgY3BwIGZsYWdzLgotaWYgdGVzdCAieCRHQ0MiICE9ICJ4eWVzIjsgdGhlbgotICBjYXNlICR0YXJnZXRfb3MgaW4KLSAgICBzb2xhcmlzKikgRVhUUkFDUFBGTEFHUz0iJEVYVFJBQ1BQRkxBR1MgLVhzIiA7OwotICBlc2FjCi1maQotCi1BQ19TVUJTVChFWFRSQUNQUEZMQUdTKQotQUNfTVNHX1JFU1VMVCgkRVhUUkFDUFBGTEFHUykKLQotIyAgIENvbXBpbGVyIGZsYWdzOgotIwotCi0jIFRoZSBOZXQtU05NUCBzb3VyY2UgY29kZSBpcyBub3Qgc3RyaWN0LWFsaWFzaW5nIHNhZmUsIHNvIGFkZAotIyAtZm5vLXN0cmljdC1hbGlhc2luZyB0byAkQ0ZMQUdTIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBpdC4KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgY29tcGlsZXIgc3VwcG9ydHMgLWZuby1zdHJpY3QtYWxpYXNpbmddKQotbmV0c25tcF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLUNGTEFHUz0iLWZuby1zdHJpY3QtYWxpYXNpbmcgJENGTEFHUyIKLUFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sIFtdKV0sIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKV0sIFsKLSAgQUNfTVNHX1JFU1VMVChbbm9dKQotICBDRkxBR1M9IiRuZXRzbm1wX3NhdmVfQ0ZMQUdTIgotXSkKLQotIyBQcmVmaXhlcyBtdXN0IGJlZ2luIHdpdGggIi8iIG9yIFtBLVpdIGZvbGxvd2VkIGJ5IGNvbG9uLgotCi1pZiB0ZXN0ICJ4JHByZWZpeCIgPSAieE5PTkUiOyB0aGVuCi0gIHByZWZpeD0vdXNyL2xvY2FsCi1maQotCi1mY2g9YGVjaG8gJHByZWZpeCB8IHNlZCAncy9cKC5cKS4qL1wxLydgCi1pZiB0ZXN0ICJ4JGZjaCIgIT0gIngvIiA7IHRoZW4KLSAgIHNjaD1gZWNobyAkcHJlZml4IHwgc2VkICdzLy5cKC5cKS4qL1wxLydgCi0gICBpZiB0ZXN0ICJ4JHNjaCIgIT0gIng6IiA7IHRoZW4KLSAgICAgIHByZWZpeD1gcHdkYC8kcHJlZml4Ci0gICAgICBlY2hvICJhZGp1c3RpbmcgcHJlZml4IHRvICRwcmVmaXgiCi0gICBmaQotZmkKLQotaWYgdGVzdCAieCRleGVjX3ByZWZpeCIgPSAieE5PTkUiOyB0aGVuCi0gIGV4ZWNfcHJlZml4PSRwcmVmaXgKLWZpCi0KLWZjaD1gZWNobyAkZXhlY19wcmVmaXggfCBzZWQgJ3MvXCguXCkuKi9cMS8nYAotaWYgdGVzdCAieCRmY2giICE9ICJ4LyIgOyB0aGVuCi0gICBzY2g9YGVjaG8gJGV4ZWNfcHJlZml4IHwgc2VkICdzLy5cKC5cKS4qL1wxLydgCi0gICBpZiB0ZXN0ICJ4JHNjaCIgIT0gIng6IiA7IHRoZW4KLSAgICAgIGV4ZWNfcHJlZml4PWBwd2RgLyRleGVjX3ByZWZpeAotICAgICAgZWNobyAiYWRqdXN0aW5nIGV4ZWNfcHJlZml4IHRvICRleGVjX3ByZWZpeCIKLSAgIGZpCi1maQotCi0jIFNldCBTTk1QTElCUEFUSCAmIFNOTVBTSEFSRVBBVEgKLQotU05NUExJQlBBVEg9IiIKLXRtcHNldD0iJGxpYmRpci9zbm1wIgotd2hpbGUgdGVzdCAieCR0bXBzZXQiICE9ICJ4JFNOTVBMSUJQQVRIIjsgZG8KLSAgU05NUExJQlBBVEg9IiR0bXBzZXQiCi0gIGV2YWwgdG1wc2V0PSIkdG1wc2V0IgotZG9uZQotQUNfREVGSU5FX1VOUVVPVEVEKFNOTVBMSUJQQVRILCIkU05NUExJQlBBVEgiKQotQUNfU1VCU1QoU05NUExJQlBBVEgpCi1BQ19ERUZJTkVfVU5RVU9URUQoU05NUERMTU9EUEFUSCwiJFNOTVBMSUJQQVRIL2RsbW9kIikKLQotU05NUFNIQVJFUEFUSD0iIgotdG1wc2V0PSIkZGF0YWRpci9zbm1wIgotd2hpbGUgdGVzdCAieCR0bXBzZXQiICE9ICJ4JFNOTVBTSEFSRVBBVEgiOyBkbwotICBTTk1QU0hBUkVQQVRIPSIkdG1wc2V0IgotICBldmFsIHRtcHNldD0iJHRtcHNldCIKLWRvbmUKLUFDX0RFRklORV9VTlFVT1RFRChTTk1QU0hBUkVQQVRILCIkU05NUFNIQVJFUEFUSCIpCi1BQ19TVUJTVChTTk1QU0hBUkVQQVRIKQotCi1pZiB0ZXN0ICJ4JE5FVFNOTVBfREVGQVVMVF9NSUJESVJTIiA9ICJ4IjsgdGhlbgotICBORVRTTk1QX0RFRkFVTFRfTUlCRElSUz0iXCRIT01FLy5zbm1wL21pYnM6JFNOTVBTSEFSRVBBVEgvbWlicyIKLSAgaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4Y3lnd2luIjsgdGhlbgotICAgIE5FVFNOTVBfREVGQVVMVF9NSUJESVJTPWBlY2hvICIkTkVUU05NUF9ERUZBVUxUX01JQkRJUlMiIHwgJFNFRCAncy86LzsvZydgCi0gIGZpCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfTUlCRElSUywiJE5FVFNOTVBfREVGQVVMVF9NSUJESVJTIikKLWZpCi1BQ19TVUJTVChORVRTTk1QX0RFRkFVTFRfTUlCRElSUykKLQotU05NUENPTkZQQVRIPSIiCi10bXBzZXQ9IiRzeXNjb25mZGlyL3NubXAiCi13aGlsZSB0ZXN0ICJ4JHRtcHNldCIgIT0gIngkU05NUENPTkZQQVRIIjsgZG8KLSAgU05NUENPTkZQQVRIPSIkdG1wc2V0IgotICBldmFsIHRtcHNldD0iJHRtcHNldCIKLWRvbmUKLUFDX0RFRklORV9VTlFVT1RFRChTTk1QQ09ORlBBVEgsIiRTTk1QQ09ORlBBVEgiKQotQUNfU1VCU1QoU05NUENPTkZQQVRIKQotCi1BQ19DSEVDS19TSVpFT0Yoc2hvcnQpCi1BQ19DSEVDS19TSVpFT0YoaW50KQotQUNfQ0hFQ0tfU0laRU9GKGxvbmcpCi1BQ19DSEVDS19TSVpFT0YobG9uZyBsb25nKQotQUNfQ0hFQ0tfU0laRU9GKGludG1heF90KQotQUNfQ0hFQ0tfVFlQRVMoW2ludDhfdCwgIHVpbnQ4X3QsICB1X2ludDhfdF0pCi1BQ19DSEVDS19UWVBFUyhbaW50MTZfdCwgdWludDE2X3QsIHVfaW50MTZfdF0pCi1BQ19DSEVDS19UWVBFUyhbaW50MzJfdCwgdWludDMyX3QsIHVfaW50MzJfdF0pCi1BQ19DSEVDS19UWVBFUyhbaW50NjRfdCwgdWludDY0X3QsIHVfaW50NjRfdF0pCi1BQ19DSEVDS19UWVBFUyhbaW50bWF4X3QsIHVpbnRtYXhfdF0pCi1BQ19DSEVDS19UWVBFUyhbb2ZmNjRfdF0pCi1BQ19DSEVDS19UWVBFUyhbdWludHB0cl90LCBpbnRwdHJfdF0pCi0KLSMgc29sYXJpcyBzcGVjaWZpYyB0eXBlCi1BQ19DSEVDS19UWVBFUyhbQ291bnRlcjY0XSwsLFsjaW5jbHVkZSA8aW5ldC9taWIyLmg+XSkKLQotIyBndWVzcyBJUHY2IHN0YWNrIHR5cGUuCi1pZiB0ZXN0ICJ4JGVuYWJsZV9pcHY2IiA9ICJ4eWVzIjsgdGhlbgotCXY2dHlwZT11bmtub3duCi0JdjZsaWI9bm9uZQotCXY2dHJ5bGliYz1ubwotCi0JQUNfTVNHX0NIRUNLSU5HKFtbaXB2NiBzdGFjayB0eXBlXV0pCi0JZm9yIGkgaW4gdjZkIHRvc2hpYmEga2FtZSBpbnJpYSB6ZXRhIGxpbnV4LWdsaWJjIGxpbnV4LWluZXQ2IGdlbmVyaWM7IGRvCi0JCWNhc2UgJGkgaW4KLQkJdjZkKQotCQkJQUNfRUdSRVBfQ1BQKHllcywgWwotI2luY2x1ZGUgPC91c3IvbG9jYWwvdjYvaW5jbHVkZS9zeXMvdHlwZXMuaD4KLSNpZmRlZiBfX1Y2RF9fCi15ZXMKLSNlbmRpZl0sCi0JCQkJW3Y2dHlwZT0kaTsgdjZsaWI9djY7Ci0JCQkJdjZsaWJkaXI9L3Vzci9sb2NhbC92Ni9saWI7Ci0JCQkJQ0ZMQUdTPSItSS91c3IvbG9jYWwvdjYvaW5jbHVkZSAkQ0ZMQUdTIl0pCi0JCQk7OwotCQl0b3NoaWJhKQotCQkJQUNfRUdSRVBfQ1BQKHllcywgWwotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2lmZGVmIF9UT1NISUJBX0lORVQ2Ci15ZXMKLSNlbmRpZl0sCi0JCQkJW3Y2dHlwZT0kaTsgdjZsaWI9aW5ldDY7Ci0JCQkJdjZsaWJkaXI9L3Vzci9sb2NhbC92Ni9saWI7Ci0JCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQotCQkJOzsKLQkJa2FtZSkKLQkJCUFDX0VHUkVQX0NQUCh5ZXMsIFsKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jaWZkZWYgX19LQU1FX18KLXllcwotI2VuZGlmXSwKLQkJCQlbdjZ0eXBlPSRpOyB2NmxpYj1pbmV0NjsKLQkJCQl2NmxpYmRpcj0vdXNyL2xvY2FsL3Y2L2xpYjsKLQkJCQl2NnRyeWxpYmM9eWVzOwotCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKLQkJCTs7Ci0JCWlucmlhKQotCQkJQUNfRUdSRVBfQ1BQKHllcywgWwotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNpZmRlZiBJUFY2X0lOUklBX1ZFUlNJT04KLXllcwotI2VuZGlmXSwKLQkJCQlbdjZ0eXBlPSRpOwotCQkJCXY2bGliPWR1bW15OwotCQkJCXY2bGliZGlyPW5vbmU7Ci0JCQkJdjZ0cnlsaWJjPXllczsKLQkJCQlDRkxBR1M9Ii1ETkVUU05NUF9FTkFCTEVfSVBWNiAkQ0ZMQUdTIl0pCi0JCQk7OwotCQl6ZXRhKQotCQkJQUNfRUdSRVBfQ1BQKHllcywgWwotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2lmZGVmIF9aRVRBX01JTkFNSV9JTkVUNgotQQoteWVzCi0jZW5kaWZdLAotCQkJCVt2NnR5cGU9JGk7IHY2bGliPWluZXQ2OwotCQkJCXY2bGliZGlyPS91c3IvbG9jYWwvdjYvbGliOwotCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKLQkJCTs7Ci0JCWxpbnV4LWdsaWJjKQotCQkJQUNfRUdSRVBfQ1BQKHllcywgWwotI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICgoX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDEpIHx8IChfX0dMSUJDXyA+IDIpKQoteWVzCi0jZW5kaWZdLAotCQkJCVt2NnR5cGU9JGk7Ci0JCQkJdjZsaWI9ZHVtbXk7Ci0JCQkJdjZsaWJkaXI9bm9uZTsKLQkJCQl2NnRyeWxpYmM9eWVzOwotCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKLQkJCTs7Ci0JCWxpbnV4LWluZXQ2KQotCQkJaWYgdGVzdCAtZCAvdXNyL2luZXQ2OyB0aGVuCi0JCQkJdjZ0eXBlPSRpCi0JCQkJdjZsaWI9aW5ldDYKLQkJCQl2NmxpYmRpcj0vdXNyL2luZXQ2L2xpYgotCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiCi0JCQlmaQotCQkJOzsKLQkJZ2VuZXJpYykKLSAgICAgICAgICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW1twb3N0cG9uZWRdXSkKLQkJCUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci1dLCBzb2NrYWRkcl9pbjYsIHNpbjZfYWRkciwgbm8pCi0JICAgICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbW2lwdjYgc3RhY2sgdHlwZV1dKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAieCRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfaW42X2hhc19zaW42X2FkZHIiID0gInh5ZXMiOyB0aGVuCi0JCQkJdjZ0eXBlPSRpCi0JCQkJdjZsaWI9ZHVtbXkKLQkJCQl2NmxpYmRpcj1ub25lCi0JCQkJdjZ0cnlsaWJjPXllcwotCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiCi0gICAgICAgICAgICAgICAgICAgICAgICBmaQotCQkJOzsKLQkJZXNhYwotCQlpZiB0ZXN0ICIkdjZ0eXBlIiAhPSAidW5rbm93biI7IHRoZW4KLQkJCWJyZWFrCi0JCWZpCi0JZG9uZQotCi0JaWYgdGVzdCAiJHY2bGliIiAhPSAibm9uZSI7IHRoZW4KLQkJaWYgdGVzdCAtZCAkdjZsaWJkaXIgLWEgLWYgJHY2bGliZGlyL2xpYiR2NmxpYi5hOyB0aGVuCi0JCQlMSUJTPSItTCR2NmxpYmRpciAtbCR2NmxpYiAkTElCUyIKLQkJCWVuYWJsZV9pcHY2PSJ5ZXMiCi0JCQlBQ19NU0dfUkVTVUxUKFsiJHY2dHlwZSwgJGVuYWJsZV9pcHY2LCB1c2luZyBsaWIkdjZsaWIiXSkKLQkJZWxpZiB0ZXN0ICIkdjZ0cnlsaWJjIiA9ICJ5ZXMiOyB0aGVuCi0JCQllbmFibGVfaXB2Nj0ieWVzIgotCQkJQUNfTVNHX1JFU1VMVChbIiR2NnR5cGUsICRlbmFibGVfaXB2NiwgdXNpbmcgbGliYyJdKQotCQllbHNlCi0JCQlBQ19NU0dfRVJST1Iobm8gSVB2NiBsaWJyYXJ5IGxpYiR2NmxpYi5hIGZvdW5kLikKLQkJCWV4aXQgMQotCQlmaQotCWVsc2UKLQkJZW5hYmxlX2lwdjY9Im5vIgotCQlBQ19NU0dfUkVTVUxUKFsiJHY2dHlwZSwgJGVuYWJsZV9pcHY2Il0pCi0JZmkKLWZpCi0KLSMKLSMgTWF5YmUgYWRkIGxpYnJhcnkgZXh0ZW5zaW9ucyBmb3IgdGhyZWFkIG11dGV4IGxvY2tpbmcuCi0jCi0KLWlmIHRlc3QgIngkd2l0aF9yZXNfbG9ja3MiID0gInh5ZXMiOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX1JFRU5UUkFOVCkKLQotICAgIGNhc2UgJHRhcmdldF9vcyBpbgotCi0gICAgYWl4KikKLQlDQ19SVU5USU1FX0FSRz0iJENDX1JVTlRJTUVfQVJHIC1scHRocmVhZHMiCi0JOzsKLQotICAgICopCi0JOzsKLQotICAgIGVzYWMKLWZpCi0KLSMKLSMgQWRkIHBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZSBmaWxlcy4KLSMKLUFDX01TR19DSEVDS0lORyhbZm9yIHBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZV0pCi1vdGhlcl9zcmNfbGlzdD0iIgotb3RoZXJfb2Jqc19saXN0PSIiCi1vdGhlcl9sb2Jqc19saXN0PSIiCi1vdGhlcl9hZ2VudG9ianM9IiIKLW90aGVyX2xhZ2VudG9ianM9IiIKLW90aGVyX3RyYXBkX29iamVjdHM9IiIKLQotIyBXaW4zMiBzZXJ2aWNlIGNvZGUKLWlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCi0gIG90aGVyX3NyY19saXN0PSIkb3RoZXJfc3JjX2xpc3Qgd2luc2VydmljZS5jIHdpbnNlcnZpY2VyYy5yYyIKLSAgb3RoZXJfb2Jqc19saXN0PSIkb3RoZXJfb2Jqc19saXN0IHdpbnNlcnZpY2UubyB3aW5zZXJ2aWNlcmMubyIKLSAgb3RoZXJfbG9ianNfbGlzdD0iJG90aGVyX2xvYmpzX2xpc3Qgd2luc2VydmljZS5sbyB3aW5zZXJ2aWNlcmMubG8iCi0gIG90aGVyX2FnZW50b2Jqcz0iLi4vc25tcGxpYi93aW5zZXJ2aWNlcmMubyIKLSAgb3RoZXJfbGFnZW50b2Jqcz0iLi4vc25tcGxpYi93aW5zZXJ2aWNlcmMubG8iCi0gIG90aGVyX3RyYXBkX29iamVjdHM9Ii4uL3NubXBsaWIvd2luc2VydmljZXJjLm8iIAotZmkKLSAgCi0jIFdpbjMyIHBpcGVzCi1pZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCi0gIG90aGVyX3NyY19saXN0PSIkb3RoZXJfc3JjX2xpc3Qgd2lucGlwZS5jIgotICBvdGhlcl9vYmpzX2xpc3Q9IiRvdGhlcl9vYmpzX2xpc3Qgd2lucGlwZS5vIgotICBvdGhlcl9sb2Jqc19saXN0PSIkb3RoZXJfbG9ianNfbGlzdCB3aW5waXBlLmxvIgotZmkKLQotQUNfU1VCU1Qob3RoZXJfc3JjX2xpc3QpCi1BQ19TVUJTVChvdGhlcl9vYmpzX2xpc3QpCi1BQ19TVUJTVChvdGhlcl9sb2Jqc19saXN0KQotQUNfU1VCU1Qob3RoZXJfYWdlbnRvYmpzKQotQUNfU1VCU1Qob3RoZXJfbGFnZW50b2JqcykKLUFDX1NVQlNUKG90aGVyX3RyYXBkX29iamVjdHMpCi0KLUFDX01TR19SRVNVTFQoWyRvdGhlcl9zcmNfbGlzdCAkb3RoZXJfb2Jqc19saXN0ICRvdGhlcl9sb2Jqc19saXN0XSkKLUFDX01TR19SRVNVTFQoWyRvdGhlcl9hZ2VudG9ianMgJG90aGVyX2xhZ2VudG9ianMgJG90aGVyX3RyYXBkX29iamVjdHNdKQotICAKLSMKLSMgRG8gdHJhbnNwb3J0IG1vZHVsZSBwcm9jZXNzaW5nLgotIwotQUNfTVNHX0NIRUNLSU5HKFtmb3IgYW5kIGNvbmZpZ3VyaW5nIHRyYW5zcG9ydCBtb2R1bGVzIHRvIHVzZV0pCi10cmFuc3BvcnRfc3JjX2xpc3Q9IiIKLXRyYW5zcG9ydF9oZHJfbGlzdD0iIgotdHJhbnNwb3J0X2RlZl9saXN0PSIiCi10cmFuc3BvcnRfcmVzdWx0X2xpc3Q9IiIKLXRyYW5zcG9ydF9hZGRfbGlzdD0iIgotdHJhbnNwb3J0X2NhbGxiYWNrX2Rpc2FibGVkPSIiCi1uZXdfd2l0aF90cmFuc3BvcnRfbGlzdD1gZWNobyAkd2l0aF90cmFuc3BvcnRzIHwgc2VkICdzLywvIC9nOydgCi1uZXdfd2l0aF9vdXRfdHJhbnNwb3J0X2xpc3Q9YGVjaG8gJHdpdGhfb3V0X3RyYW5zcG9ydHMgfCBzZWQgJ3MvLC8gL2c7J2AKLQotIwotIyBBZGQgdGhlIGRlZmF1bHQgdHJhbnNwb3J0cyB0byB0aGUgbGlzdAotIwotaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCi0gIHRyYW5zcG9ydF9kZWZhdWx0X2xpc3Q9IlVEUCBUQ1AgQ2FsbGJhY2siCi1lbGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuIAotICB0cmFuc3BvcnRfZGVmYXVsdF9saXN0PSJVRFAgVENQIENhbGxiYWNrIgotZWxzZQotICB0cmFuc3BvcnRfZGVmYXVsdF9saXN0PSJVRFAgVENQIFVuaXggQ2FsbGJhY2siCi1maQotaWYgdGVzdCAieCRlbmFibGVfaXB2NiIgPSAieHllcyI7IHRoZW4KLSAgdHJhbnNwb3J0X2RlZmF1bHRfbGlzdD0iVURQSVB2NiBUQ1BJUHY2ICR0cmFuc3BvcnRfZGVmYXVsdF9saXN0IgotZmkKLWZvciBpIGluICR0cmFuc3BvcnRfZGVmYXVsdF9saXN0OyBkbwotICBpZiBlY2hvICIgJG5ld193aXRoX3RyYW5zcG9ydF9saXN0ICIgfCBncmVwICIgJGkgIiA+L2Rldi9udWxsOyB0aGVuCi0gICAgOgotICBlbHNlCi0gICAgdHJhbnNwb3J0X2FkZF9saXN0PSIkaSAkdHJhbnNwb3J0X2FkZF9saXN0IgotICBmaQotZG9uZQotbmV3X3RyYW5zcG9ydF9saXN0PSIkdHJhbnNwb3J0X2FkZF9saXN0ICRuZXdfd2l0aF90cmFuc3BvcnRfbGlzdCIKLQotZm9yIGkgaW4gJG5ld190cmFuc3BvcnRfbGlzdDsgZG8KLSAgaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfdHJhbnNwb3J0X2xpc3QgIiB8IGdyZXAgIiAkaSAiID4vZGV2L251bGw7IHRoZW4KLSAgICBpZiB0ZXN0ICJ4JGkiID0gInhVRFAiOyB0aGVuCi0gICAgICBlY2hvCi0gICAgICBBQ19NU0dfRVJST1IoSXQgaXMgbm90IHBvc3NpYmxlIHRvIGNvbXBpbGUgd2l0aG91dCBVRFAvSVAgc3VwcG9ydC4pCi0gICAgZWxpZiB0ZXN0ICJ4JGkiID0gInhDYWxsYmFjayI7IHRoZW4KLSAgICAgIGVjaG8KLSAgICAgIHRyYW5zcG9ydF9jYWxsYmFja19kaXNhYmxlZD0ieWVzIgotICAgIGZpCi0gIGVsc2UKLSAgICBpZiB0ZXN0ICJ4JGkiID0gInhBQUw1UFZDIjsgdGhlbgotICAgICAgaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiICE9ICJ4bGludXgiOyB0aGVuCi0gICAgICAgIGVjaG8KLSAgICAgICAgQUNfTVNHX0VSUk9SKEFBTDUgUFZDIHN1cHBvcnQgdW5hdmFpbGFibGUgZm9yIHRoaXMgcGxhdGZvcm0gKExpbnV4IG9ubHkpKQotICAgICAgZmkKLSAgICBmaQotICAgIGlmIHRlc3QgIngkaSIgPSAieElQWCI7IHRoZW4KLSAgICAgIGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiAhPSAieGxpbnV4IjsgdGhlbgotICAgICAgICBlY2hvCi0gICAgICAgIEFDX01TR19FUlJPUihJUFggc3VwcG9ydCB1bmF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybSAoTGludXggb25seSkpCi0gICAgICBmaQotICAgIGZpCi0gICAgaWYgdGVzdCAieCRpIiA9ICJ4VW5peCI7IHRoZW4KLSAgICAgIGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4Y3lnd2luIjsgdGhlbgotICAgICAgICBlY2hvCi0gICAgICAgIEFDX01TR19FUlJPUihVbml4IGRvbWFpbiBwcm90b2NvbCBzdXBwb3J0IHVuYXZhaWxhYmxlIGZvciB0aGlzIHBsYXRmb3JtKQotICAgICAgZWxpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIjsgdGhlbgotICAgICAgICBlY2hvCi0gICAgICAgIEFDX01TR19FUlJPUihVbml4IGRvbWFpbiBwcm90b2NvbCBzdXBwb3J0IHVuYXZhaWxhYmxlIGZvciB0aGlzIHBsYXRmb3JtKQotICAgICAgZmkKLSAgICBmaQotICAgIGlmIHRlc3QgISAieCRlbmFibGVfaXB2NiIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgaWYgdGVzdCAieCRpIiA9ICJ4VURQSVB2NiIgLW8gIngkaSIgPSAieFRDUElQdjYiOyB0aGVuCi0gICAgICAgICAgICBlY2hvCi0gICAgICAgICAgICBBQ19NU0dfRVJST1IoSVB2NiB0cmFuc3BvcnRzIG5vdCBhdmFpbGFibGUgaWYgSVB2NiBzdXBwb3J0IGlzIG5vdCBlbmFibGVkKQotICAgICAgICBmaQotICAgIGZpCi0gICAgdHJhbnNwb3J0X3NyYz0ic25tcCIkaSJEb21haW4uYyIKLSAgICB0cmFuc3BvcnRfaGRyPSJzbm1wIiRpIkRvbWFpbi5oIgotICAgIHJlbF90cmFuc3BvcnRfc3JjPSJzbm1wbGliLyIkdHJhbnNwb3J0X3NyYwotICAgIHJlbF90cmFuc3BvcnRfaGRyPSJpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvIiR0cmFuc3BvcnRfaGRyCi0gICAgaWYgdGVzdCAtZiAiJHNyY2Rpci8kcmVsX3RyYW5zcG9ydF9zcmMiOyB0aGVuCi0gICAgICB0cmFuc3BvcnRfcmVzdWx0X2xpc3Q9IiR0cmFuc3BvcnRfcmVzdWx0X2xpc3QgJGkiCi0gICAgICB0cmFuc3BvcnRfc3JjX2xpc3Q9IiR0cmFuc3BvcnRfc3JjICR0cmFuc3BvcnRfc3JjX2xpc3QiCi0gICAgICBpZiB0ZXN0IC1mICIkc3JjZGlyLyRyZWxfdHJhbnNwb3J0X2hkciI7IHRoZW4KLSAgICAgICAgdHJhbnNwb3J0X2hkcl9saXN0PSIkdHJhbnNwb3J0X2hkciAkdHJhbnNwb3J0X2hkcl9saXN0IgotICAgICAgZmkKLSAgICAgIHRyYW5zcG9ydF9kZWY9YGVjaG8gJGkgfCBzZWQgJ3kvYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovJ2AKLSAgICAgIHRyYW5zcG9ydF9kZWZfbGlzdD0iTkVUU05NUF9UUkFOU1BPUlRfIiR0cmFuc3BvcnRfZGVmIl9ET01BSU4gJHRyYW5zcG9ydF9kZWZfbGlzdCIKLSAgICBlbHNlCi0gICAgICBlY2hvCi0gICAgICBBQ19NU0dfRVJST1IoQ2Fubm90IGZpbmQgZmlsZSAkc3JjZGlyLyRyZWxfdHJhbnNwb3J0X3NyYyB0byBzdXBwb3J0IFNOTVAgdHJhbnNwb3J0IGRvbWFpbiAkaS4pCi0gICAgZmkKLSAgZmkKLWRvbmUKLXRyYW5zcG9ydF9vYmpfbGlzdD1gZWNobyAiICR0cmFuc3BvcnRfc3JjX2xpc3QgIiB8IHNlZCAncy9cLmMvXC5vL2cnYCAJIAotdHJhbnNwb3J0X2xvYmpfbGlzdD1gZWNobyAiICR0cmFuc3BvcnRfc3JjX2xpc3QgIiB8IHNlZCAncy9cLmMvXC5sby9nJ2AKLQotIyMgd2luMzIgcGxhdGZvcm1zIHJlcXVpcmUgaW5ldF9udG9wIGV0Yy4KLWlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCi0gIGlmIGVjaG8gIiR0cmFuc3BvcnRfZGVmX2xpc3QiIHwgZ3JlcCAiSVBWNiIgPi9kZXYvbnVsbDsgdGhlbgotICAgIHRyYW5zcG9ydF9vYmpfbGlzdD0iJHRyYW5zcG9ydF9vYmpfbGlzdCBpbmV0X250b3AubyBpbmV0X3B0b24ubyIKLSAgICB0cmFuc3BvcnRfbG9ial9saXN0PSIkdHJhbnNwb3J0X2xvYmpfbGlzdCBpbmV0X250b3AubG8gaW5ldF9wdG9uLmxvIgotICBmaQotZmkKLQotQUNfU1VCU1QodHJhbnNwb3J0X2hkcl9saXN0KQotQUNfU1VCU1QodHJhbnNwb3J0X3NyY19saXN0KQotQUNfU1VCU1QodHJhbnNwb3J0X29ial9saXN0KQotQUNfU1VCU1QodHJhbnNwb3J0X2xvYmpfbGlzdCkKLWZvciBpIGluICR0cmFuc3BvcnRfZGVmX2xpc3Q7IGRvCi0gIEFDX0RFRklORV9VTlFVT1RFRCgkaSkKLWRvbmUKLUFDX01TR19SRVNVTFQoJHRyYW5zcG9ydF9yZXN1bHRfbGlzdC4pCi1BQ19NU0dfQ0FDSEVfQUREKE5ldHdvcmsgdHJhbnNwb3J0IHN1cHBvcnQ6ICR0cmFuc3BvcnRfcmVzdWx0X2xpc3QpCi0KLSMKLSMgU2VjdXJpdHkgbW9kdWxlcyB0byB1c2UKLSMgCi0KLUFDX01TR19DSEVDS0lORyhbZm9yIHNlY3VyaXR5IG1vZHVsZXMgdG8gdXNlXSkKLXNlY3VyaXR5X2RlZl9saXN0PSJ1c20iCi1zZWN1cml0eV9zcmNfbGlzdD0iIgotc2VjdXJpdHlfb2JqX2xpc3Q9IiIgCSAKLXNlY3VyaXR5X2xvYmpfbGlzdD0iIgotc2VjdXJpdHlfaW5pdF9maWxlPSJzbm1wbGliL3NubXBzbV9pbml0LmgiCi1zZWN1cml0eV9pbmNsX2ZpbGU9ImluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaCIKLW5ld193aXRoX3NlY3VyaXR5PWBlY2hvICR3aXRoX3NlY3VyaXR5X21vZHVsZXMgfCBzZWQgJ3MvLC8gL2c7J2AKLW5ld193aXRoX291dF9zZWN1cml0eT1gZWNobyAkd2l0aF9vdXRfc2VjdXJpdHlfbW9kdWxlcyB8IHNlZCAncy8sLyAvZzsnYAotCi1pZiB0ZXN0ICEgLWQgaW5jbHVkZTsgdGhlbgotICBta2RpciBpbmNsdWRlCi1maQotaWYgdGVzdCAhIC1kIGluY2x1ZGUvbmV0LXNubXA7IHRoZW4KLSAgbWtkaXIgaW5jbHVkZS9uZXQtc25tcAotZmkKLWlmIHRlc3QgISAtZCBpbmNsdWRlL25ldC1zbm1wL2FnZW50OyB0aGVuCi0gIG1rZGlyIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQKLWZpCi1pZiB0ZXN0ICEgLWQgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5OyB0aGVuCi0gIG1rZGlyIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeQotZmkKLWlmIHRlc3QgISAtZCBpbmNsdWRlL3VjZC1zbm1wOyB0aGVuCi0gIG1rZGlyIGluY2x1ZGUvdWNkLXNubXAKLWZpCi0KLWlmIHRlc3QgISAtZCBzbm1wbGliOyB0aGVuCi0gIG1rZGlyIHNubXBsaWIKLWZpCi1lY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkc2VjdXJpdHlfaW5pdF9maWxlCi1lY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkc2VjdXJpdHlfaW5jbF9maWxlCi0KLWZvciBpIGluICRzZWN1cml0eV9kZWZfbGlzdDsgZG8KLSAgaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfc2VjdXJpdHkgIiB8IGdyZXAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgaWYgdGVzdCAieCRpIiA9ICJ4dXNtIjsgdGhlbgotCWVjaG8KLSAgICAgICAgQUNfTVNHX0VSUk9SKFRoZSBVU00gc2VjdXJpdHkgbW9kdWxlIGlzIG1hbmRhdG9yeSkKLSAgICBmaQotICBlbHNlCi0gICAgbmV3X3dpdGhfc2VjdXJpdHk9IiRuZXdfd2l0aF9zZWN1cml0eSAkaSIKLSAgZmkKLWRvbmUKLQotZm9yIGkgaW4gJG5ld193aXRoX3NlY3VyaXR5OyBkbwotICBjZmlsZT0ic25tcCIkaSIuYyIKLSAgaGZpbGU9InNubXAiJGkiLmgiCi0KLSAgIyBtYWtlIHN1cmUgc3VwcG9ydCBleGlzdHMgZm9yIGl0Ci0gIGlmIHRlc3QgLWYgJHNyY2RpciIvc25tcGxpYi8iJGNmaWxlIC1hIC1mICRzcmNkaXIiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS8iJGhmaWxlOyB0aGVuCi0gICAgOgotICBlbHNlCi0gICAgZWNobwotICAgIEFDX01TR19FUlJPUihObyBzdWNoIHNlY3VyaXR5IG1vZHVsZTogJGkgLyAkY2ZpbGUgLyAkaGZpbGUpCi0gIGZpCi0KLSAgIyBkZWZpbmUgYSBidW5jaCBvZiBzdHVmZiB0byBlbmFibGUgaXQKLSAgc2VjdXJpdHlfc3JjX2xpc3Q9IiRzZWN1cml0eV9zcmNfbGlzdCAkY2ZpbGUiCi0gIHNlY3VyaXR5X2hkcl9saXN0PSIkc2VjdXJpdHlfaGRyX2xpc3QgJGhmaWxlIgotICBzZWN1cml0eV9vYmpfbGlzdD0iJHNlY3VyaXR5X29ial9saXN0IHNubXAiJGkiLm8iIAkgCi0gIHNlY3VyaXR5X2xvYmpfbGlzdD0iJHNlY3VyaXR5X2xvYmpfbGlzdCBzbm1wIiRpIi5sbyIKLSAgZGVmX25hbWU9Ik5FVFNOTVBfU0VDTU9EXyJgZWNobyAkaSB8IHRyICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJ2AKLSAgZWNobyAiaW5pdF8iJGkiKCk7IiA+PiAkc2VjdXJpdHlfaW5pdF9maWxlCi0gIGVjaG8gIiNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5LyRoZmlsZT4iID4+ICRzZWN1cml0eV9pbmNsX2ZpbGUKLSAgQUNfREVGSU5FX1VOUVVPVEVEKCRkZWZfbmFtZSkKLWRvbmUKLQotQUNfU1VCU1Qoc2VjdXJpdHlfc3JjX2xpc3QpCi1BQ19TVUJTVChzZWN1cml0eV9oZHJfbGlzdCkKLUFDX1NVQlNUKHNlY3VyaXR5X29ial9saXN0KSAJIAotQUNfU1VCU1Qoc2VjdXJpdHlfbG9ial9saXN0KQotQUNfTVNHX1JFU1VMVCgkbmV3X3dpdGhfc2VjdXJpdHkpCi1BQ19NU0dfQ0FDSEVfQUREKFNOTVB2MyBTZWN1cml0eSBNb2R1bGVzOiAgICAkbmV3X3dpdGhfc2VjdXJpdHkpCi0KLSMKLSMgSGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ugb2YgS1NNIHRvIHNlZSB3aGljaCBjcnlwdG8gQVBJIHdlIHN1cHBvcnQKLSMKLQotYWNfY3ZfTkVUU05NUF9VU0VfS0VSQkVST1NfTUlUPW5vCi1yZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5PQotYWxyZWFkeV9jaGVja2VkX2tyYjU9bm8KLQotZm9yIHNlYyBpbiAkbmV3X3dpdGhfc2VjdXJpdHkKLWRvCi0gIGlmIHRlc3QgIngkc2VjIiA9ICJ4a3NtIiAtYSAieHllcyIgPSAieCRhbHJlYWR5X2NoZWNrZWRfa3JiNSI7IHRoZW4KLSAgICBjb250aW51ZQotICBmaQotICBhbHJlYWR5X2NoZWNrZWRfa3JiNT15ZXMKLQotICBpZiB0ZXN0IHgkc2VjICE9IHhrc207IHRoZW4KLSAgICByZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5PSIkcmVidWlsdF9uZXdfd2l0aF9zZWN1cml0eSAkc2VjIgotICBlbHNlCi0gICAgaWYgdGVzdCBubyA9ICR0cnlrcmI1OyB0aGVuCi0gICAgICBBQ19NU0dfTk9USUNFKFtjb25maWd1cmVkIG5vdCB0byB1c2Uga3JiNS4gZGlzYWJsaW5nIGtzbV0pCi0gICAgICBjb250aW51ZQotICAgIGZpCi0KLSAgICBBQ19QQVRIX1BST0coW2tyYjVfY29uZmlnXSxrcmI1LWNvbmZpZyxbbm9dLCRrcmI1cGF0aC9iaW46JFBBVEgpCi0KLSAgICBpZiB0ZXN0IG5vICE9ICRrcmI1X2NvbmZpZzsgdGhlbgotICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJGtyYjVfY29uZmlnIC0tY2ZsYWdzYCIKLSAgICAgIExJQlM9IiRMSUJTIGAka3JiNV9jb25maWcgLS1saWJzYCIKLSAgICBlbGlmIHRlc3QgJGtyYjVwYXRoICE9IG5vOyB0aGVuCi0gICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJGtyYjVwYXRoKQotICAgIGVsc2UKLSAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgvdXNyL2tlcmJlcm9zKQotICAgIGZpCi0KLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBrcmI1XSkKLSAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfaGF2ZV9rcmI1LAotICAgICAgQUNfQ0hFQ0tfTElCKGtyYjUsIGtyYjVfaW5pdF9jb250ZXh0LAotCWFjX2N2X2hhdmVfa3JiNT15ZXMsIGFjX2N2X2hhdmVfa3JiNT1ubwotICAgICAgKQotICAgICkKLQotICAgIGlmIHRlc3QgJGFjX2N2X2hhdmVfa3JiNSA9IG5vOyB0aGVuCi0gICAgICBpZiB0ZXN0ICJ4JGFza2Vka3JiNSIgPSAieHllcyI7IHRoZW4KLQlBQ19NU0dfRVJST1IoQXNrZWQgdG8gdXNlIGtyYjUgYnV0IEkgY291bGRuJ3QgZmluZCBpdC4pCi0gICAgICBmaQotICAgICAgQUNfTVNHX1JFU1VMVChuby4gZGlzYWJsaW5nIGtzbSkKLSAgICAgIGNvbnRpbnVlCi0gICAgZmkKLSAgICAgIAotICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgIHJlYnVpbHRfbmV3X3dpdGhfc2VjdXJpdHk9IiRyZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5IGtzbSIKLQotICAgIEFDX01TR19DSEVDS0lORyhbW2ZvciBoZWltZGFsXV0pCi0gICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2hlaW1kYWwsCi0gICAgW0FDX1RSWV9DT01QSUxFKAotICAgICAgWyNpbmNsdWRlIDxrcmI1Lmg+XSwKLSAgICAgIFtjb25zdCBjaGFyICp2ID0gaGVpbWRhbF92ZXJzaW9uO10sCi0gICAgICBhY19jdl9oZWltZGFsPXllcywKLSAgICAgIGFjX2N2X2hlaW1kYWw9bm8KLSAgICApXSkKLSAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9oZWltZGFsKQotICAgIGlmIHRlc3QgJGFjX2N2X2hlaW1kYWwgPSB5ZXM7IHRoZW4KLSAgICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9LRVJCRVJPU19IRUlNREFMKQotICAgICAgaWYgdGVzdCBubyA9ICRrcmI1X2NvbmZpZzsgdGhlbgotCUxJQlM9IiRMSUJTIC1sa3JiNSAtbGFzbjEgLWxjb21fZXJyIC1scm9rZW4iCi0gICAgICBmaQotICAgIGVsaWYgdGVzdCBubyA9ICRrcmI1X2NvbmZpZzsgdGhlbgotCUxJQlM9IiRMSUJTIC1sa3JiNSAtbGNvbV9lcnIiCi0gICAgZmkKLQotICAgIEFDX01TR19DSEVDS0lORyhbdG8gc2VlIHdoaWNoIGNyeXB0byBBUEkgd2UgbmVlZCB0byB1c2VdKQotICAgIEFDX0NIRUNLX0ZVTkMoa3JiNV9jX2VuY3J5cHQsWwotICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9ORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQsCi0gICAgICBBQ19DSEVDS19MSUIoazVjcnlwdG8sIGtyYjVfaW5pdF9jb250ZXh0LAotCWFjX2N2X05FVFNOTVBfVVNFX0tFUkJFUk9TX01JVD15ZXMsIGFjX2N2X01JVF9ORVdfQ1JZUFRvPW5vCi0gICAgICApCi0gICAgKQotCi0gICAgaWYgdGVzdCB5ZXMgPSAkYWNfY3ZfTkVUU05NUF9VU0VfS0VSQkVST1NfTUlUOyB0aGVuCi0gICAgICBBQ19NU0dfUkVTVUxUKG5ldyBNSVQgY3J5cHRvIEFQSSkKLSAgICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQpCi0gICAgICBpZiB0ZXN0IG5vID0gJGtyYjVfY29uZmlnOyB0aGVuCi0JTElCUz0iJExJQlMgLWxrNWNyeXB0byIKLSAgICAgIGZpCi0gICAgZWxzZQotICAgICAgQUNfTVNHX1JFU1VMVChvbGQgTUlUIGNyeXB0byBBUEkpXSkKLSAgICBmaQotICBmaQotZG9uZQotCi1uZXdfd2l0aF9zZWN1cml0eT0kcmVidWlsdF9uZXdfd2l0aF9zZWN1cml0eQotCi0jCi0jIGdlbmVyYXRlIGVtcHR5IGZpbGVzCi0jCi0jIENyZWF0ZSBpbmNsdWRlIGZpbGUgbGlzdCBmb3Igc25tcF92YXJzLmggdG8gdXNlLgotbWliZGlyPSJhZ2VudC9taWJncm91cCIKLWlmIHRlc3QgISAtZCBhZ2VudDsgdGhlbgotICBta2RpciBhZ2VudAotZmkKLWlmIHRlc3QgISAtZCBhZ2VudC9taWJncm91cDsgdGhlbgotICBta2RpciBhZ2VudC9taWJncm91cAotZmkKLWo9IiRtaWJkaXIvbWliX21vZHVsZV9pbmNsdWRlcy5oICAkbWliZGlyL2FnZW50X21vZHVsZV9pbmNsdWRlcy5oIFwKLSAgICRtaWJkaXIvbWliX21vZHVsZV9pbml0cy5oICAgICAkbWliZGlyL2FnZW50X21vZHVsZV9pbml0cy5oICAgIFwKLSAgICRtaWJkaXIvbWliX21vZHVsZV9zaHV0ZG93bi5oICAkbWliZGlyL2FnZW50X21vZHVsZV9zaHV0ZG93bi5oIFwKLSAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaCAgIFwKLSAgICRtaWJkaXIvbWliX21vZHVsZV9kb3RfY29uZi5oICAkbWliZGlyL2FnZW50X21vZHVsZV9kb3RfY29uZi5oIgotCi1mb3IgaSBpbiAkajsgZG8KLSAgcm0gLWYgJGkKLSAgZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJGkKLWRvbmUKLQotIwotIyBEbyBoYWlyeSBhZ2VudCBtb2R1bGUgcHJvY2Vzc2luZy4KLSMKLUFDX01TR19DSEVDS0lORyhbZm9yIGFuZCBjb25maWd1cmluZyBtaWIgbW9kdWxlcyB0byB1c2VdKQotCi0jIHNldCB1cCB0aGUgQ1BQIGNvbW1hbmQKLU1PRFVMRUNQUD0iJENQUCAkUEFSVElBTFRBUkdFVEZMQUdTIC1JJHtzcmNkaXJ9L2luY2x1ZGUgLUkke3NyY2Rpcn0vYWdlbnQvbWliZ3JvdXAiCi1pZiB0ZXN0ICJ4JGVuYWJsZV9tZmRfcmV3cml0ZXMiID0gInh5ZXMiOyB0aGVuCi0gIE1PRFVMRUNQUD0iJE1PRFVMRUNQUCAtRE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUyIKLWZpCi0KLW1vZHVsZV9saXN0PSIiCi1taWJfbW9kdWxlX2xpc3Q9IiIKLWFnZW50X21vZHVsZV9saXN0PSIiCi1uZXdfd2l0aF9taWJfbW9kdWxlcz1gZWNobyAkd2l0aF9taWJfbW9kdWxlcyB8IHNlZCAncy8sLyAvZzsnYAotbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzPWBlY2hvICR3aXRoX291dF9taWJfbW9kdWxlcyB8IHNlZCAncy8sLyAvZzsnYAotCi0jIHNldCB1cCBpbml0aWFsIG1vZHVsZSBsaXN0Ci1uZXdfbW9kdWxlX2xpc3Q9IiRuZXdfd2l0aF9taWJfbW9kdWxlcyBkZWZhdWx0X21vZHVsZXMiCi0KLSMgbWlub3IgbW9kaWZpY2F0aW9ucwotaWYgdGVzdCAieCRlbmFibGVfYWdlbnQiID0gInhubyI7IHRoZW4KLSAgICMgbWluaW11bSBtaWIgbW9kdWxlIGxpc3QgZm9yIHNubXB0cmFwZAotICAgbmV3X21vZHVsZV9saXN0PSJtaWJJSS92YWNtX3ZhcnMgbWliSUkvdmFjbV9jb25mIHV0aWxpdGllcy9leGVjdXRlICRuZXdfd2l0aF9taWJfbW9kdWxlcyIKLSAgIGRlZmF1bHRfbWlicz1TTk1QdjItTUlCOklGLU1JQjpJUC1NSUI6VENQLU1JQjpVRFAtTUlCCi0gICBkZWZhdWx0X21pYnNfaW5zdGFsbD0iICIKLWVsaWYgdGVzdCAieCRtaW5pX2FnZW50IiA9ICJ4eWVzIjsgdGhlbgotICAgIyBkZWZpbmUgdGhlIG1pbmkgYWdlbnQgZmxhZyB0byByZWR1Y2Ugb3VyIGxvYWQgbGlzdCBmcm9tIGRlZmF1bHRfbWlicy5oCi0gICBNT0RVTEVDUFA9IiRNT0RVTEVDUFAgLURORVRTTk1QX01JTklfQUdFTlQiCi1maQotCi10ZXN0X21vZHVsZXM9IiRuZXdfbW9kdWxlX2xpc3QiCi1uZXdfbW9kdWxlX2xpc3Q9IiIKLQotIyByZW1vdmUgbW9kdWxlcyB0aGF0IHdlcmUgZXhwbGljaXRseSBleGNsdWRlZAotZm9yIGkgaW4gJHRlc3RfbW9kdWxlcwotIGRvCi0gIGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzICIgfCBncmVwICIgJGkgIiA+IC9kZXYvbnVsbDsgdGhlbgotICAgIG1pYl9jZmdfbXNnPSJtaWIgbW9kdWxlICckaScgaXMgYm90aCBpbmNsdWRlZCBhbmQgZXhjbHVkZWQuIgotICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGNvbmZsaWN0XSkKLSAgICBpZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19jaGVja3MiID0gInh5ZXMiOyB0aGVuCi0gICAgICBBQ19NU0dfV0FSTihbdXNlciB3aXRoICAgIDogJHdpdGhfbWliX21vZHVsZXNdKQotICAgICAgQUNfTVNHX1dBUk4oW2ZpbmFsIHdpdGggICA6ICRuZXdfbW9kdWxlX2xpc3RdKQotICAgICAgQUNfTVNHX1dBUk4oW3VzZXIgd2l0aG91dCA6ICR3aXRoX291dF9taWJfbW9kdWxlc10pCi0gICAgICBBQ19NU0dfV0FSTihbZmluYWwgd2l0aG91dDogJG5ld193aXRoX291dF9taWJfbW9kdWxlc10pCi0gICAgICBBQ19NU0dfRVJST1IoWyRtaWJfY2ZnX21zZ10pCi0gICAgZWxzZQotICAgICAgQUNfTVNHX1dBUk4oWyRtaWJfY2ZnX21zZyBJdCB3aWxsIGJlIGV4Y2x1ZGVkXSkKLSAgICAgIEFDX01TR19DQUNIRV9BREQoWyoqKiBNSUIgTW9kdWxlIHdhcm5pbmcgKioqICRtaWJfY2ZnX21zZyBJdCBoYXMgYmVlbiBleGNsdWRlZC5dKQotICAgIGZpCi0gIGVsc2UKLSAgICBuZXdfbW9kdWxlX2xpc3Q9IiRuZXdfbW9kdWxlX2xpc3QgJGkiCi0gIGZpCi1kb25lCi0KLUFDX01TR19SRVNVTFQoWyRuZXdfbW9kdWxlX2xpc3QuXSkKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBsb29wIG92ZXIgbW9kdWxlIGxpc3QKLSMKLWFsbF93YXJuaW5ncz0iIgotaWYgdGVzdCAieCR3aXRoX21pYl9jZmdfZGVidWciID0gInh5ZXMiOyB0aGVuCi0gICBtb2R1bGVfZGVidWc9MQotZWxzZQotICAgbW9kdWxlX2RlYnVnPTAKLWZpCi1maXJzdF9wYXNzPTEKLW91dHB1dF90bz1ub3JtYWwKLQotaWYgdGVzdCAhIC1kIG1rIDsgdGhlbgotICBta2RpciBtawotZmkKLQotCi1tb2R1bGVfcnVsZXM9bWsvbW9kdWxlX3J1bGVzLm1rCi1lY2hvICIjIGNvbnRlbnRzIGJlbG93IGJ1aWx0IGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlOyBkbyBub3QgZWRpdCBieSBoYW5kIiA+ICRtb2R1bGVfcnVsZXMKLQotIwotIyBtYWtlIGZpbGUgc3ViLXBpZWNlcwotIwotZm9yIGkgaW4gbW9kdWxlX2xpc3RfZGVwcyBtaWJfbW9kdWxlX2xpc3RfZGVwcyBhZ2VudF9tb2R1bGVfbGlzdF9kZXBzIDsgZG8KLSAgZXZhbCAiJGk9bWsvJHtpfS5tayIKLSAgZWNobyAiIyBjb250ZW50cyBiZWxvdyBidWlsdCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZTsgZG8gbm90IGVkaXQgYnkgaGFuZCIgPiBtay8ke2l9Lm1rCi1kb25lCi0KLSMKLSMgdmFyaWFibGUgc2V0dGluZ3Mgc3ViLXBpZWNlcwotIwotZm9yIGkgaW4gbW9kdWxlX2xpc3RfY29kZSBtaWJfbW9kdWxlX2xpc3RfY29kZSBhZ2VudF9tb2R1bGVfbGlzdF9jb2RlIG1vZHVsZV9saXN0IG1pYl9tb2R1bGVfbGlzdCBhZ2VudF9tb2R1bGVfbGlzdCA7IGRvCi0gIGV2YWwgIiRpPW1rLyR7aX0ubWsiCi0gIGVjaG8gIiMgY29udGVudHMgYmVsb3cgYnVpbHQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmU7IGRvIG5vdCBlZGl0IGJ5IGhhbmQiID4gbWsvJHtpfS5tawotICBlY2hvICIkaT0gXFwiID4+IG1rLyR7aX0ubWsKLWRvbmUKLQotZWNobyAkRUNIT19OICJlY2hvICIgJEVDSE9fQyA+IG1rL01PRFVMRV9MSVNULm1rCi1NT0RVTEVfTElTVD1tay9NT0RVTEVfTElTVC5tawotCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgdW50aWwgd2UgaGF2ZSBhbiBlbXB0eSBtb2R1bGUgbGlzdC4uLgotIyAgIChtb2R1bGVzIG1heSBhZGQgbmV3IG1vZHVsZXMsIGFuZCB1bnRpbCBhbGwgZGVwZW5kZW5jaWVzIGFyZSBkb25lLi4uKQotIwotd2hpbGUgdGVzdCAieCRuZXdfbW9kdWxlX2xpc3QiICE9ICJ4IjsgZG8KLSAgQUNfTVNHX01PRFVMRV9EQkcoLWUsIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpCi0gIEFDX01TR19NT0RVTEVfREJHKCJubWw6ICRuZXdfbW9kdWxlX2xpc3QiKQotCi0gICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIyBsb29wIG92ZXIgYWxsIHRoZSBtb2R1bGVzIGluIHRoZSBjdXJyZW50IGxpc3QKLSAgIwotICBmb3IgaiBpbiAkbmV3X21vZHVsZV9saXN0Ci0gICAgZG8KLQotICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGZpZ3VyZSBvdXQgd2hpY2ggc3ViLWJsb2NrcyB0byBidWlsZCBpbiBwYXJ0cwotICAgIGlmIGVjaG8gIiRqIiB8IGdyZXAgIj0iIDsgdGhlbgotICAgICAgICMgYnVpbGQgYSBzaGFyZWQgb2JqZWN0IGZpbGUKLSAgICAgICAjIGZvcm1hdDogc29maWxlbmFtZT1tb2R1bGUxOm1vZHVsZTIKLSAgICAgICAjIFhYWDogY3VycmVudGx5IGRvZXNuJ3QgZG8gdGhpcwotICAgICAgIGRsX25hbWU9YGVjaG8gJGogfCBzZWQgJ3MvPS4qLy8nYAotICAgICAgIGRsX25hbWVzPSIkZGxfbmFtZXMgJGRsX25hbWUiCi0gICAgICAgZGxfb2JqZWN0cz1gZWNobyAkaiB8IHNlZCAncy8uKj0vLydgCi0gICAgICAgbW9kdWxlX3N1Ymxpc3Q9YGVjaG8gJGRsX29iamVjdHMgfCBzZWQgJ3MvOi8gL2cnYAotICAgICAgIHNhdmVkX3N1Ymxpc3Q9IiIKLSAgICAgICBzYXZlZF9zdWJsaXN0X2NvZGU9IiIKLSAgICAgICBvdXRwdXRfdG89c2VwYXJhdGUKLQotICAgICAgICMgY3JlYXRlIG91dHB1dCBmaWxlcwotICAgICAgICMgdGhlc2UgYWN0dWFsbHkgZ2V0IG51a2VkIGxhdGVyCi0gICAgICAgb3V0cHV0X2luaXRzPSJhZ2VudC9taWJncm91cC8ke2RsX25hbWV9LWRsbC5jIgotICAgICAgIG91dHB1dF9oZHJzPSJhZ2VudC9taWJncm91cC8ke2RsX25hbWV9LWhkcnMuaCIKLSAgICBlbHNlCi0gICAgICAgIyBub3QgYSBzcGVjaWFsIHRva2VuIGludm9jYXRpb24KLSAgICAgICBtb2R1bGVfc3VibGlzdD0kagotICAgICAgIG91dHB1dF90bz1ub3JtYWwKLSAgICAgICBvdXRwdXRfdD0KLSAgICBmaQotCi0gICAgd2hpbGUgdGVzdCAieCRtb2R1bGVfc3VibGlzdCIgIT0gIngiIDsgZG8KLQotICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGxvb3Agb3ZlciBhbGwgdGhlIG1vZHVsZXMgaW4gdGhlIHN1YiBsaXN0Ci0gICAgZm9yIGkgaW4gJG1vZHVsZV9zdWJsaXN0Ci0gICAgZG8KLQotICAgIEFDX01TR19NT0RVTEVfREJHKC1lICJcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQotICAgIEFDX01TR19NT0RVTEVfREJHKCJ0ZXN0aW5nICRpIikKLSAgICBuZWVkX2hlYWRlcj0wCi0KLSAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBidWlsZCBhIHBzZXVkbyBpbmNsdWRlIGhlYWRlciB0aGF0IGluY2x1ZGVzIGN1cnJlbnQgY29uZmlnIGFuZAotICAgICMgc3lzdGVtIHN5bWJvbHM6Ci0gICAgQUNfTEFOR19DT05GVEVTVChBQ19MQU5HX1NPVVJDRShbWwotI2luY2x1ZGUgTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFCi0jaW5jbHVkZSAiJHNyY2Rpci8kbWliZGlyLyRpLmgiXV0pKQotICAgIG12IGNvbmZ0ZXN0LiRhY19leHQgbW9kdWxlX3RtcF9oZWFkZXIuaAotCi0gICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgbWFjcm86IGNvbmZpZ19iZWxvbmdzX2luKEFSRykKLSAgICAjICAgQVJHOiBlaXRoZXIKLSAgICAjICAgICAtIG1pYl9tb2R1bGUgICA9PiBsaWJuZXRzbm1wbWlicyAgIChkZWZhdWx0KQotICAgICMgICAgIC0gYWdlbnRfbW9kdWxlID0+IGxpYm5ldHNubXBhZ2VudAotICAgICMKLSAgICBtb2R1bGVfdHlwZT1taWJfbW9kdWxlCi0gICAgaWYgdGVzdCAtZiAkc3JjZGlyLyRtaWJkaXIvJGkuaDsgdGhlbgotICAgICAgY2hhbmdlcXVvdGUoLCApCi0gICAgICBtb2R1bGVfdHlwZT1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfYmVsb25nc19pbiB8IHNlZCAnc0AuKmNvbmZpZ19iZWxvbmdzX2luKFwoW14pXSpcKSkuKkBcMUAnYAotICAgICAgY2hhbmdlcXVvdGUoWywgXSkKLSAgICBmaQotICAgIGlmIHRlc3QgIngkbW9kdWxlX3R5cGUiID0gIngiIDsgdGhlbgotICAgICAgbW9kdWxlX3R5cGU9bWliX21vZHVsZQotICAgIGZpCi0gICAgaWYgdGVzdCAieCRvdXRwdXRfdG8iID0gInhub3JtYWwiIDsgdGhlbgotICAgICAJb3V0cHV0X2luaXRzPSIkbWliZGlyLyR7bW9kdWxlX3R5cGV9X2luaXRzLmgiCi0gICAgIAlvdXRwdXRfaGRycz0iJG1pYmRpci8ke21vZHVsZV90eXBlfV9pbmNsdWRlcy5oIgotICAgIGZpCi0KLSAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNoZWNrIGZvciBkdXBsaWNhdGVzIHdpdGhpbiB0aGUgZGxsIHN5c3RlbS4gCi0gICAgIyAgIC0gaWYgZm91bmQgaW4gYSBkbGwsIHRoZW4gcmVtb3ZlIGZyb20gdGhlIGRsbCBhbmQgYWRkIHRvIG1haW4KLSAgICBkYmxmaXg9IiIKLSAgICBmb3IgZGx0ZXN0IGluICRkbF9uYW1lcyA7IGRvCi0gICAgICBldmFsIG1vZF9maWxlcz0iXCJcJGRsXyR7ZGx0ZXN0fV9maWxlc1wiIgotICAgICAgaWYgZWNobyAiICRtb2RfZmlsZXMgIiB8IGdyZXAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICMgc29tZSBkbGwgbW9kdWxlIGhhcyBhbHJlYWR5IHNlZW4gdGhpcywgdW5sb2FkIGl0IGZyb20gdGhhdCBsaXN0Ci0gICAgICAgICMgYW5kIGluY2x1ZGUgaXQgaW4gdGhlIGNvcmUgKGFnYWluKQotICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygicmVtb3ZpbmcgJGkgZnJvbSAkZGx0ZXN0IikKLSAgICAgICAgbW9kX2ZpbGVzPWBlY2hvICIgJG1vZF9maWxlcyAiIHwgc2VkICJzQCAkaSBAQCJgCi0gICAgICAgIGRibGZpeD0iX19YWFhfXyIKLSAgICAgICAgZXZhbCAiZGxfJHtkbHRlc3R9X2ZpbGVzPVwiJG1vZF9maWxlc1wiIgotCi0gICAgICAgIG1vZHVsZV9saXN0PSIkbW9kdWxlX2xpc3QgJGkiCi0JZWNobyAicmVhZF9jb25maWcubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtb2R1bGVfbGlzdF9kZXBzCi0JaWYgdGVzdCAkbW9kdWxlX3R5cGUgPSAiYWdlbnRfbW9kdWxlIiA7IHRoZW4KLSAJICAgIGVjaG8gInNubXBfdmFycy5sbzogbWliZ3JvdXAvJGkuaCIgPj4gJGFnZW50X21vZHVsZV9saXN0X2RlcHMKLSAgICAgICAgZWxzZQotIAkgICAgZWNobyAibWliX21vZHVsZXMubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtaWJfbW9kdWxlX2xpc3RfZGVwcwotICAgICAgICBmaQotICAgICAgICBldmFsICR7bW9kdWxlX3R5cGV9X2xpc3Q9IlwiXCQke21vZHVsZV90eXBlfV9saXN0ICRpXCIiCi0JZWNobyAiCSRpIFxcIiA+PiAkbW9kdWxlX2xpc3RfY29kZQotCWVjaG8gJEVDSE9fTiAiICRpIiAkRUNIT19DID4+ICRNT0RVTEVfTElTVAotICAgICAgICBldmFsIHRtcGZpbGV2YXI9XCRgZWNobyAke21vZHVsZV90eXBlfV9saXN0X2NvZGVgCi0gICAgICAgIGVjaG8gIgkkaSBcXCIgPj4gJHRtcGZpbGV2YXIKLQotCSMgWFhYOiBhZGQgdGhpcyB0byB0aGUgbWFpbiBpbml0IGxpc3Q7IHRoaXMgaXMgcG9zc2libGUgbm90Ci0JIyBxdWl0ZSBpbiB0aGUgcmlnaHQgc3BvdCBhbnkgbG9uZ2VyIGJ1dCB3ZSdyZSBzdHVjayB3aXRoIGl0LgotCSMgQWRkaW5nIGl0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIG9yZGVyZWQgc3BvdCB3b3VsZCBiZSBhCi0JIyBuaWdodG1hcmUuICBPaywgd2UncmUgYWxyZWFkeSBpbiBuaWdodG1hcmUgY29kZSBzbyB0aGF0Ci0JIyB3b2x1ZCBoYXZlIHRvIGJlIGEgbmlnaHQtdGVycm9yLgotICAgICAgICBtbm09YGVjaG8gJGkgfCBzZWQgJ3MvLipcLy8vO3MvXC5jJC8vOydgCi0Jb3V0cHV0X2luaXRzX3RtcD0iJG1pYmRpci8ke21vZHVsZV90eXBlfV9pbml0cy5oIgotCWVjaG8gIiAgaWYgKHNob3VsZF9pbml0KFwiJG1ubVwiKSkgaW5pdF8kbW5tKCk7IiA+PiAkb3V0cHV0X2luaXRzX3RtcAotICAgICAgICAjIFhYWDogZXZlbiB3b3JzZSwgd2UgbG9vc2Ugd2hldGhlciB0aGUgaGVhZGVyIGlzIG5lZWRlZCBvciBub3QuCi0gICAgIAlvdXRwdXRfaGRyc190bXA9IiRtaWJkaXIvJHttb2R1bGVfdHlwZX1faW5jbHVkZXMuaCIKLSAgICAgICAgZWNobyAnI2luY2x1ZGUgIicibWliZ3JvdXAvJGkuaCInIicgPj4gJG91dHB1dF9oZHJzX3RtcAotICAgICAgZmkKLSAgICBkb25lCi0KLSAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBtYWtlIHN1cmUgbW9kdWxlIHdhc24ndCBleHBsaWNpdGx5IGV4Y2x1ZGVkLCBvciBhbHJlYWR5IGFkZGVkCi0gICAgIwotICAgIGlmIHRlc3QgIngkZGJsZml4IiAhPSAieCIgOyB0aGVuCi0gICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgd2FzIGR1cGxpY2F0ZWQgLS0gcHV0dGluZyBpbnRvIG1haW4iKQotICAgIGVsaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfbWliX21vZHVsZXMgIiB8IGdyZXAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgd2FzIGV4Y2x1ZGVkIikKLSAgICBlbGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgIiB8IGdyZXAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgYWxyZWFkeSB0ZXN0ZWQiKQotICAgIGVsc2UKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgIyBwcm9jZXNzIG1vZHVsZXMgaGVhZGVyLCBjaGVja2luZyBmb3IgY29uZmlnXyBwc2V1ZG8tbWFjcm9zCi0gICAgICAjCi0KLSAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICMgZG9lcyB0aGUgaGVhZGVyIGZpbGUgZm9yIHRoZSBtb2R1bGUgZXhpc3Q/Ci0gICAgICAjICAgbWFjcm9zIGFyZSBvbmx5IHByb2Nlc3NlZCBpZiBpdCBkb2VzCi0gICAgICBpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5oOyB0aGVuCi0gICAgICAgIG5ld19saXN0PSIiCi0KLSAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgCSMgbWFjcm86IGNvbmZpZ19leGNsdWRlKG1vZHVsZXMpCi0gICAgICAJIyAgLSBsaXN0cyBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzCi0gICAgICAJIyAgICAtIEVHOiBuZXcgTUlCIGltcGxlbWVudGF0aW9ucyBleGNsdWRlIG9sZCBhbmQgdmljZS12ZXJzYQotICAgICAgCSMKLSAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IGNvbmZsaWN0cwotICAgICAgICAjCi0JbmV3X2xpc3RfZXhjbD1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfZXhjbHVkZSB8IHNlZCAncy8uKmNvbmZpZ19leGNsdWRlKFwoLipcKSkuKi9cMS8nYAotCWlmIHRlc3QgIngkbmV3X2xpc3RfZXhjbCIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiRpIGV4Y2x1ZGVzICRuZXdfbGlzdF9leGNsIikKLQkgIGZvciBqIGluICRuZXdfbGlzdF9leGNsCi0JICAgIGRvCi0JICAgIGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgJG5ld19taWJfbW9kdWxlX2xpc3QgJG5ld19saXN0X3R3byAiIHwgZ3JlcCAiICRqICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgICAgbWliX2NmZ19tc2c9Im1pYiBtb2R1bGUgJyRpJyBleGNsdWRlcyBtb2R1bGUgJyRqJyBidXQgYW5vdGhlciBtb2R1bGUgcmVxdWlyZXMgaXQiCi0gICAgICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKLSAgICAgICAgICAgICAgaWYgdGVzdCAieCR3aXRoX21pYl9jZmdfY2hlY2tzIiA9ICJ4eWVzIjsgdGhlbgotCSAgICAgICAgQUNfTVNHX0VSUk9SKFskbWliX2NmZ19tc2ddKQotICAgICAgICAgICAgICBlbHNlCi0JICAgICAgICBBQ19NU0dfV0FSTihbJG1pYl9jZmdfbXNnXSkKLSAgICAgICAgICAgICAgICBBQ19NU0dfQ0FDSEVfQUREKFsqKiogTUlCIE1vZHVsZSB3YXJuaW5nICoqKiAkbWliX2NmZ19tc2ddKQotICAgICAgICAgICAgICBmaQotCSAgICBlbHNlCi0JICAgICAgbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzPSIkaiAkbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzIgotICAgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGogYWRkZWQgdG8gZXhjbHVkZWQgbGlzdCIpCi0JICAgIGZpCi0JICBkb25lCi0JZmkKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAJIyBtYWNybzogY29uZmlnX2FyY2hfcmVxdWlyZShBUkNILG1vZHVsZXMpCi0gICAgICAJIyAgLSBsaXN0cyBtb2R1bGVzIHJlcXVpcmVkIGZvciBhIGdpdmVuIEFSQ0gKLSAgICAgICAgIwotICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHJlcXVpcmVtZW50cwotICAgICAgICAjCi0gICAgICAgIGNoYW5nZXF1b3RlKCwgKQotICAgICAgICBuZXdfbGlzdF9hcmNoPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBncmVwIGNvbmZpZ19hcmNoX3JlcXVpcmUgfCBzZWQgJ3MvLipjb25maWdfYXJjaF9yZXF1aXJlKCAqXChbXiBdKlwpICosICpcKFteIF0qXCkgKikuKi9cMS14YXJjaHgtXDIvJ2AKLSAgICAgICAgY2hhbmdlcXVvdGUoWywgXSkKLQlpZiB0ZXN0ICJ4JG5ld19saXN0X2FyY2giICE9ICJ4IjsgdGhlbgotICAgICAgICAgIGZvciBqIGluICRuZXdfbGlzdF9hcmNoCi0JICAgIGRvCi0JICAgIGFyY2h0ZXN0PWBlY2hvICRqIHwgc2VkICdzLy14YXJjaHgtLiovLydgCi0JICAgICMgdGFyZ2V0X29zIG1heSBoYXZlIGJlZW4gY2hhbmdlZCB0byBhICNkZWZpbmUgb2YgMS4uLgotCSAgICBpZiB0ZXN0ICJ4JGFyY2h0ZXN0IiA9ICJ4MSIgLW8gIngkdGFyZ2V0X29zIiA9ICJ4JGFyY2h0ZXN0IiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gIngkYXJjaHRlc3QiOyB0aGVuCi0JICAgICAgbmV3X2xpc3Q9IiRuZXdfbGlzdCBgZWNobyAkaiB8IHNlZCAncy8uKi14YXJjaHgtLy8nYCIKLSAgICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAkaSByZXF1aXJlZCBhZGRpbmcgYXJjaCBmaWxlczogYGVjaG8gJGogfCBzZWQgJ3MvLioteGFyY2h4LS8vJ2AiKQotCSAgICBmaQotCSAgZG9uZQotCWZpCi0gICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgJGkgcmVxdWlyZWQgYXJjaCBmaWxlczogJG5ld19saXN0IikKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAJIyBtYWNybzogY29uZmlnX3JlcXVpcmUobW9kdWxlcykKLSAgICAgIAkjICAtIGxpc3RzIG1vZHVsZXMgcmVxdWlyZWQgZm9yIHRoaXMgbW9kdWxlCi0gICAgICAgICMKLSAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IG90aGVyIHJlcXVpcmVkIG1vZHVsZXMKLSAgICAgICAgIwotCW5ld19saXN0PSIkbmV3X2xpc3QgYCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IGdyZXAgY29uZmlnX3JlcXVpcmUgfCBzZWQgJ3MvLipjb25maWdfcmVxdWlyZShcKC4qXCkpLiovXDEvJ2AiCi0gICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgJGkgd2lsbCB0ZXN0OiAkbmV3X2xpc3QiKQotCWlmIHRlc3QgIngkbmV3X2xpc3QiICE9ICJ4IjsgdGhlbgotCSAgZm9yIGogaW4gJG5ld19saXN0Ci0JICAgIGRvCi0gICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygtbiAiICRpIHdhbnRzIHRvIGFkZCAkajogIikKLQkgICAgaWYgdGVzdCAhIC1mICRzcmNkaXIvJG1pYmRpci8kai5oIC1hICEgLWYgJHNyY2Rpci8kbWliZGlyLyRqLmM7IHRoZW4KLSAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgZXJyb3JdKQotCSAgICAgIEFDX01TR19FUlJPUihbbWliIG1vZHVsZSAiJGkiIHJlcXVpcmVzIG1vZHVsZSAiJGoiIGJ1dCAkai5oIG9yICRqLmMgY291bGQgbm90IGJlIGZvdW5kIGluICRzcmNkaXIvJG1pYmRpcl0pCi0JICAgIGVsaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfbWliX21vZHVsZXMgIiB8IGdyZXAgIiAkaiAiID4gL2Rldi9udWxsOyB0aGVuCi0JICAgICAgaWYgdGVzdCAieCRpIiAhPSAieGRlZmF1bHRfbW9kdWxlcyIgOyB0aGVuCi0gICAgICAgICAgICAgICAgbWliX2NmZ19tc2c9Im1pYiBtb2R1bGUgJyRpJyByZXF1aXJlcyBtb2R1bGUgJyRqJyBidXQgc29tZW9uZSB0b2xkIG1lIHRvIGNvbXBpbGUgd2l0aG91dCBpdCIKLSAgICAgICAgICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAieCR3aXRoX21pYl9jZmdfY2hlY2tzIiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFskbWliX2NmZ19tc2ddKQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgIEFDX01TR19XQVJOKFskbWliX2NmZ19tc2ddKQotICAgICAgICAgICAgICAgICAgQUNfTVNHX0NBQ0hFX0FERChbKioqIE1JQiBNb2R1bGUgd2FybmluZyAqKiogJG1pYl9jZmdfbXNnXSkKLSAgICAgICAgICAgICAgICBmaQotIwkgICAgZWxpZiBlY2hvICIgJG1vZHVsZV9saXN0ICRuZXdfbGlzdF90d28gJG5ld19tb2R1bGVfbGlzdCAiIHwgZ3JlcCAiICRqICIgPiAvZGV2L251bGw7IHRoZW4KLSMgICAgICAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgICRqIGluY2x1ZGVkIHByZXZpb3VzbHkiKQotICAgICAgICAgICAgICBmaQotCSAgICBlbHNlCi0JICAgICAgbmV3X2xpc3RfdHdvPSIkbmV3X2xpc3RfdHdvICRqIgotICAgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICAkaiBpbmNsdWRlZCIpCi0JICAgIGZpCi0JICBkb25lCi0JZmkKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAJIyBtYWNybzogY29uZmlnX2FkZF9taWIoU09NRS1NSUIpCi0gICAgICAJIyAgLSBsaXN0cyBNSUJzIHRvIGJlIGFkZGVkIHRvIHRoZSBkZWZhdWx0IHRvLWxvYWQgbGlzdC4KLSAgICAgICAgIwotICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgbWlicyB0byBhZGQKLSAgICAgICAgIwotCW5ld19taWJzPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBncmVwIGNvbmZpZ19hZGRfbWliIHwgc2VkICdzLy4qY29uZmlnX2FkZF9taWIoXCguKlwpKS4qL1wxLydgCi0JaWYgdGVzdCAieCRuZXdfbWlicyIgIT0gIngiOyB0aGVuCi0JICAgIGZvciBqIGluICRuZXdfbWlicwotCQlkbwotCQlpZiB0ZXN0ICJ4YGVjaG8gOiRkZWZhdWx0X21pYnM6IHwgZ3JlcCA6JGo6YCIgPSAieCI7IHRoZW4KLQkJICAgIGRlZmF1bHRfbWlicz0iJGRlZmF1bHRfbWliczokaiIKLQkJZmkKLQkJaWYgdGVzdCAtZiAkc3JjZGlyL21pYnMvJGoudHh0OyB0aGVuCi0JCSAgICBpZiBlY2hvICRkZWZhdWx0X21pYnNfaW5zdGFsbCB8IGdyZXAgIiAkaiAiID4gL2Rldi9udWxsOyB0aGVuCi0JCQkgICAgOgotCQkgICAgZWxzZQotCQkJICAgIGRlZmF1bHRfbWlic19pbnN0YWxsPSIkZGVmYXVsdF9taWJzX2luc3RhbGwgJGoudHh0IgotCQkgICAgZmkKLQkJZmkKLQkgICAgZG9uZQotCWZpICMgbmV3IG1pYnMKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAjIGFkZCB0aGUgY3VycmVudCBtb2R1bGUgdG8gdGhlIGxpc3Qgb2Ygc3R1ZmYgdG8gY29tcGlsZSwgZXRjLgotICAgICAgICAjCi0gICAgICAgICMgYWRkICRpIHRvIG1vZHVsZSBsaXN0Ci0gICAgICAgICMKLSAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAgJGkgYWRkZWQgKGJhc2VkIG9uICRpLmgpIikKLSAgICAgICAgbW9kdWxlX2xpc3Q9IiRtb2R1bGVfbGlzdCAkaSIKLSAgICAgICAgZXZhbCAke21vZHVsZV90eXBlfV9saXN0PSJcIlwkJHttb2R1bGVfdHlwZX1fbGlzdCAkaVwiIgotCi0JZWNobyAicmVhZF9jb25maWcubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtb2R1bGVfbGlzdF9kZXBzCi0JaWYgdGVzdCAkbW9kdWxlX3R5cGUgPSAiYWdlbnRfbW9kdWxlIiA7IHRoZW4KLSAJICAgIGVjaG8gInNubXBfdmFycy5sbzogbWliZ3JvdXAvJGkuaCIgPj4gJGFnZW50X21vZHVsZV9saXN0X2RlcHMKLSAgICAgICAgZWxzZQotIAkgICAgZWNobyAibWliX21vZHVsZXMubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtaWJfbW9kdWxlX2xpc3RfZGVwcwotICAgICAgICBmaQotCi0gICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICMgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIGNvbmZpZ19sb2FkX21pYgotICAgICAgICAjCi0gICAgICAgIGlmICRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IGdyZXAgY29uZmlnX2xvYWRfbWliID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCi0gICAgICAJICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSAiJGkiIHVzZXMgdGhlICJjb25maWdfbG9hZF9taWIiIGRpcmVjdGl2ZSwgd2hpY2ggaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIEl0IHByb2JhYmx5IHdvbid0IHdvcmsuXSkKLSAgICAgICAgZmkgIyBncmVwIGNvbmZpZ19sb2FkX21pYgotCi0gICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICMgY2hlY2sgZm9yIGNvbmZpZ19wYXJzZV9kb3RfY29uZgotICAgICAgICAjICAoZ2VuZXJhbGx5IG5vdCB1c2VkIGFueSBsb25nZXI7IG9sZCBhdXRvLWxvYWQgYSAuY29uZiB0b2tlbikKLSAgICAgICAgIwotICAgICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgICAgJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfcGFyc2VfZG90X2NvbmYgfCBzZWQgJ3NALipjb25maWdfcGFyc2VfZG90X2NvbmYoXChbXildKlwpLCAqXChbXiksXSpcKSwgKlwoW14pLF0qXCksICpcKFteKSxdKlwpKS4qQHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wZCIsXDEsIFwyLCBcMywgXDQpO0AnID4+ICRtaWJkaXIvbWliX21vZHVsZV9kb3RfY29uZi5oCi0JY2hhbmdlcXVvdGUoWywgXSkKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAJIyBtYWNybzogY29uZmlnX2Vycm9yKGVycm9yIHRleHQpCi0gICAgICAJIyAgLSB1c2VkIHRvIHNpZ25hbCBhIGNvbmZpZ3VyYXRpb24gZXJyb3IgZnJvbSBhIG1vZHVsZQotICAgICAgICAjCi0gICAgICAgICMgY2hlY2sgaWYgJGkgaGFzIGFueSBlcnJvcnMsIG9yIHdhcm5pbmdzCi0gICAgICAgICMKLQllcnJvcj1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfZXJyb3IgfCBzZWQgJ3MvLipjb25maWdfZXJyb3IoXCguKlwpKS4qL1wxLydgCi0JaWYgdGVzdCAieCRlcnJvciIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgZWNobwotICAgICAgICAgIGVjaG8KLSAgICAgICAgICBBQ19NU0dfRVJST1IoWyRpOiAqKiogJGVycm9yICoqKl0pCi0gICAgICAgIGZpCi0KLSAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgCSMgbWFjcm86IGNvbmZpZ193YXJuaW5nKHdhcm5pbmcgdGV4dCkKLSAgICAgIAkjICAtIHVzZWQgdG8gc2lnbmFsIGEgY29uZmlndXJhdGlvbiAid2FybmluZyIgdG8gYmUgcHJpbnRlZCB0byB0aGUgdXNlcgotICAgICAgICAjCi0Jd2FybmluZz1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfd2FybmluZyB8IHNlZCAncy8uKmNvbmZpZ193YXJuaW5nKFwoLipcKSkuKi9cMS8nYAotCWlmIHRlc3QgIngkd2FybmluZyIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgYWxsX3dhcm5pbmdzPSIkYWxsX3dhcm5pbmdzICR3YXJuaW5nCi0iCi0gICAgICAgIGZpCi0KLSAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICMgQ2hlY2sgZm9yIGEgLmMgZmlsZSBpZiB0aGUgLmggZGlkbid0IGV4aXN0Ci0gICAgICAjCi0gICAgICBlbGlmIHRlc3QgLWYgJHNyY2Rpci8kbWliZGlyLyRpLmM7IHRoZW4KLSAgICAgICAgaWYgZWNobyAiICRtb2R1bGVfbGlzdCAkbmV3X2xpc3RfdHdvICRuZXdfbW9kdWxlX2xpc3QgIiB8IGdyZXAgIiAkaSAgICAgICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAgJGkgYWxyZWFkeSBpbmNsdWRlZCIpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAgJGkgYWRkZWQgKGJhc2VkIG9uICRpLmMpIikKLQkgICBtb2R1bGVfbGlzdD0iJG1vZHVsZV9saXN0ICRpIgotCSAgIG1pYl9tb2R1bGVfbGlzdD0iJG1pYl9tb2R1bGVfbGlzdCAkaSIKLSAgICAgICAgZmkKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgIyBObyAuaCBvciAuYyA9IGVycm9yISAgKHR5cG8/KQotICAgICAgIwotICAgICAgZWxzZSAjIG5vICRpLmggb3IgJGkuYwotICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCi0JQUNfTVNHX0VSUk9SKFttb2R1bGUgZmlsZXMgJGkuaCBvciAkaS5jIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiAkc3JjZGlyLyRtaWJkaXJdKQotICAgICAgZmkgIyBubyAkaS5oCi0KLSAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAjIGNoZWNrIGZvciBpbml0L3NodXRkb3duIHJvdXRpbmVzIHRvbwotICAgICAgIwotICAgICAgaGFzX2NfY29kZT1ubwotICAgICAgaWYgdGVzdCAtZiAkc3JjZGlyLyRtaWJkaXIvJGkuYzsgdGhlbgotICAgICAgICBpZiB0ZXN0ICJ4JG91dHB1dF90byIgPSAieG5vcm1hbCIgOyB0aGVuCi0JICBlY2hvICIJJGkgXFwiID4+ICRtb2R1bGVfbGlzdF9jb2RlCi0gIAkgIGVjaG8gJEVDSE9fTiAiICRpIiAkRUNIT19DID4+ICRNT0RVTEVfTElTVAotICAgICAgICAgIGV2YWwgdG1wZmlsZXZhcj1cJGBlY2hvICR7bW9kdWxlX3R5cGV9X2xpc3RfY29kZWAKLSAgICAgICAgICBlY2hvICIJJGkgXFwiID4+ICR0bXBmaWxldmFyCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBldmFsICJkbF8ke2RsX25hbWV9X2ZpbGVzPVwiXCRkbF8ke2RsX25hbWV9X2ZpbGVzICRpXCIiCi0gICAgICAgICAgc2F2ZWRfc3VibGlzdF9jb2RlPSIkc2F2ZWRfc3VibGlzdF9jb2RlICRpIgotICAgICAgICBmaQotICAgICAgICBtbm09YGVjaG8gJGkgfCBzZWQgJ3MvLipcLy8vO3MvXC5jJC8vOydgCi0gICAgICAgIEFDX01TR19NT0RVTEVfREJHKC1lICJcbmNoZWNraW5nICckc3JjZGlyLyRtaWJkaXIvJGkuYycgKCRtbm0vYGJhc2VuYW1lICRpYCkgQyBmaWxlIGZvciBpbml0L3NodXRkb3duIikKLSAgICAgICAgaWYgdGVzdCAieCRtbm0iICE9ICJ4YGJhc2VuYW1lICRpYCI7IHRoZW4KLSAgICAgICAgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgZXJyb3JdKQotCSAgIEFDX01TR19FUlJPUihbY29uZmxpY3RpbmcgbmFtZXM6ICRtbm0gIT0gYGJhc2VuYW1lICRpYF0pCi0gICAgICAgIGZpCi0gICAgICAgIHRlbXBfaW5pdD1gZ3JlcCBpbml0XyRtbm0gJHNyY2Rpci8kbWliZGlyLyRpLmMgfCBncmVwIC12IF9pbml0XyRtbm1gCi0JaWYgdGVzdCAieCR0ZW1wX2luaXQiICE9ICJ4IjsgdGhlbgotICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoLWUgImFkZGluZyBpbml0XyRtbm0oKSB0byBsaXN0IikKLSAgICAgICAgICAgIG5lZWRfaGVhZGVyPTEKLQkgICAgZWNobyAiICBpZiAoc2hvdWxkX2luaXQoXCIkbW5tXCIpKSBpbml0XyRtbm0oKTsiID4+ICRvdXRwdXRfaW5pdHMKLQlmaQotCWdyZXAgc2h1dGRvd25fJG1ubSAkc3JjZGlyLyRtaWJkaXIvJGkuYyA+IC9kZXYvbnVsbAotICAgICAgICBpZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgotICAgICAgICAgICAgaWYgdGVzdCAkbW9kdWxlX2RlYnVnIC1lcSAxOyB0aGVuCi0gICAgICAgICAgICAgIGVjaG8gLWUgIlxuYWRkaW5nIHNodXRkb3duXyRtbm0oKSB0byBsaXN0IgotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIG5lZWRfaGVhZGVyPTEKLQkgICAgZWNobyAiICBpZiAoc2hvdWxkX2luaXQoXCIkbW5tXCIpKSBzaHV0ZG93bl8kbW5tKCk7IiA+PiAkbWliZGlyLyR7bW9kdWxlX3R5cGV9X3NodXRkb3duLmgKLQlmaQotICAgICAgZmkgIyB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5jCi0KLSAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAjIGlmIHRoZXJlIGlzIGEgc2h1dGRvd24vaW5pdCBsaXN0LAotICAgICAgIwotICAgICAgaWYgdGVzdCAkbmVlZF9oZWFkZXIgLWVxIDEgOyB0aGVuCi0gICAgICAgICBlY2hvICcjaW5jbHVkZSAiJyJtaWJncm91cC8kaS5oIiciJyA+PiAkb3V0cHV0X2hkcnMKLSAgICAgIGVsc2UKLSAgICAgICAgIGVjaG8gJy8qI2luY2x1ZGUgIicibWliZ3JvdXAvJGkuaCInIiovJyA+PiAkb3V0cHV0X2hkcnMKLSAgICAgIGZpCi0KLSAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAjIGNoZWNrIGZvciBvdXRwdXQgZGlyZWN0b3J5IChmb3IgYnVpbGRpbmcgb3V0c2lkZSBvZiBzb3VyY2UgdHJlZQotICAgICAgIwotICAgICAgY2hhbmdlcXVvdGUoLCApCi0gICAgICBpZiB0ZXN0ICJ4YGVjaG8gJGkgfCBzZWQgJ3MvXC8vL2c7J2AiICE9ICJ4JGkiOyB0aGVuCi0JbW5kPWBlY2hvICRpIHwgc2VkICdzL1wvW14vXSokLy87J2AKLQlpZiB0ZXN0ICEgLWQgLi8kbWliZGlyLyRtbmQ7IHRoZW4KLQkgICAgbW9kdWxlX2RpcmVjdG9yaWVzPSIkbW9kdWxlX2RpcmVjdG9yaWVzIC4vJG1pYmRpci8kbW5kIgotCWZpCi0gICAgICBmaSAjIG1vZHVsZSBkaXJlY3RvcnkgdGVzdAotICAgICAgY2hhbmdlcXVvdGUoWywgXSkKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICMgZGVmaW5lIFVTSU5HXypfTU9EVUxFCi0gICAgICAjCi0gICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgIHN5bT0iYGVjaG8gJHtpfSB8IHNlZCAncy9bXmEtekEtWjAtOV9dL18vZycgfCB0ciAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWidgIgotICAgICAgY2hhbmdlcXVvdGUoWywgXSkKLSAgICAgIGVjaG8gIi8qIERlZmluZSBpZiBjb21waWxpbmcgd2l0aCB0aGUgJHtpfSBtb2R1bGUgZmlsZXMuICAqLyIgPj4gaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8ke21vZHVsZV90eXBlfV9jb25maWcuaAotICAgICAgZWNobyAiI2RlZmluZSBVU0lOR18ke3N5bX1fTU9EVUxFIDEiID4+IGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvJHttb2R1bGVfdHlwZX1fY29uZmlnLmgKLSAgICAgIGVjaG8gIiAiID4+IGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvJHttb2R1bGVfdHlwZX1fY29uZmlnLmgKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgIGVjaG8gJEVDSE9fTiAiICRpJEVDSE9fQyIKLSAgICBmaSAjCi0gICAgZG9uZSAjIGZvciBpIGluICRtb2R1bGVfc3VibGlzdAotCi0gICAgaWYgdGVzdCAiJG91dHB1dF90byIgPSAic2VwYXJhdGUiIDsgdGhlbgotICAgICAgaWYgdGVzdCAieCRuZXdfbGlzdF90d28iID0gIngiIDsgdGhlbgotICAgICAgICAjIG5vIG5ldyBzdWItbW9kdWxlcyB0byBhZGQgdG8gdGhlIGN1cnJlbnQgdGFyZ2V0Ci0gICAgICAgIG91dHB1dF90bz0ibm9ybWFsIgotCi0gICAgICAgIGRsbGNsZWFucz0iJHNhdmVkX3N1Ymxpc3RfbyAkZGxsY2xlYW5zIgotICAgICAgICBvdXRwdXRfaW5pdHM9IiIKLSAgICAgICAgbW9kdWxlX3N1Ymxpc3Q9IiIKLSAgICAgIGVsc2UKLSAgICAgICAgIyBhIG1vZHVsZSBoYWQgc3ViLW1vZHVsZXMgcmVxdWlyZWQ7IGtlZXAgZ29pbicKLSAgICAgICAgc2F2ZWRfc3VibGlzdD0iJHNhdmVkX3N1Ymxpc3QgJG1vZHVsZV9zdWJsaXN0IgotICAgICAgICBtb2R1bGVfc3VibGlzdD0iJG5ld19saXN0X3R3byIKLSAgICAgICAgbmV3X2xpc3RfdHdvPSIiCi0gICAgICBmaQotICAgIGVsc2UKLSAgICAgIG1vZHVsZV9zdWJsaXN0PSIiCi0gICAgZmkKLQotICAgIGRvbmUgIyB3aGlsZSBtb2R1bGVfc3VibGlzdAotICBkb25lICMgZm9yIGogaW4gJG5ld19tb2R1bGVfbGlzdAotCi0gICMgcmVtZW1iZXIgdGhlIHRvcCBsZXZlbCBtb2R1bGVzIGZvciBsYXRlciByZXBvcnRpbmcKLSAgaWYgdGVzdCAkZmlyc3RfcGFzcyA9IDEgOyB0aGVuCi0gICAgIyByZW1lbWJlciB0aGlzIGxpc3QgZm9yIGxhdGVyIHJlcG9ydGluZwotICAgIHRvcF9sZXZlbF9tb2R1bGVzPSIkbmV3X21vZHVsZV9saXN0ID0+ICRuZXdfbGlzdF90d28iCi0gICAgZmlyc3RfcGFzcz0wCi0gIGZpCi0gICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICMgaWYgJGkgYWRkZWQgbmV3IG1vZHVsZXMgdmlzIGNvbmZpZ18qLAotICAjIGNoZWNrIHRob3NlIG1vZHVsZXMgZm9yIHJlcXVpcmVtZW50cyB0b28KLSAgIwotICAjIHRyYW5zZmVyIHRoZSBuZXcgbW9kdWxlIHRvIGNoZWNrIGxpc3QgdG8gdGhlIG5vcm1hbCB2YXJpYWJsZQotICAjCi0gIGlmIHRlc3QgIngkbmV3X2xpc3RfdHdvIiA7IHRoZW4KLSAgICBvdXRwdXRfdG89bm9ybWFsCi0gIGZpCi0gIG5ld19tb2R1bGVfbGlzdD0iJG5ld19saXN0X3R3byIKLSAgbmV3X2xpc3RfdHdvPSIiCi1kb25lICMgd2hpbGUgdGVzdCAieCRuZXdfbW9kdWxlX2xpc3QiICE9ICJ4IjsgZG8KLWVjaG8gIiIKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGNvbnN0cnVjdCB0aGUgZGxsIGNvZGUgZmlsZXMgYW5kIG1ha2UgcnVsZXMuICBUaGlzIGNhbid0IGJlIGRvbmUKLSMgdW50aWwgbm93IGJlY2F1c2UgZHVwbGljYXRlIHVzZSBvZiBhIG1vZHVsZSBtZWFucyBpdCBnZXRzIHJlbW92ZWQKLSMgZnJvbSB0aGUgZGxsIGFuZCBwdXQgaW50byB0aGUgbWFpbiBhZ2VudC4KLSMKLWZvciBpIGluICRkbF9uYW1lcyA7IGRvCi0gIGV2YWwgbW9kX2ZpbGVzPSJcIlwkZGxfJHtpfV9maWxlc1wiIgotICBlY2hvICJjb21wb25lbnRzIGluIHRoZSAkaSBkbGw6ICRtb2RfZmlsZXMiCi0KLSAgb3V0cHV0X2luaXRzPSJhZ2VudC9taWJncm91cC8ke2l9LWRsbC5jIgotICBvdXRwdXRfaGRycz0iYWdlbnQvbWliZ3JvdXAvJHtpfS1oZHJzLmgiCi0KLSAgQUNfTVNHX01PRFVMRV9EQkcoImNyZWF0aW5nIGRsbCBmaWxlOiAkb3V0cHV0X2luaXRzIikKLSAgZm9yIG9maWxlIGluICRvdXRwdXRfaW5pdHMgJG91dHB1dF9oZHJzIDsgZG8KLSAgICBpZiB0ZXN0IC1mICRvZmlsZSA7IHRoZW4KLSAgICAgIGlmIGdyZXAgInRoaXMgZmlsZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlIiAkb2ZpbGUgPiAvZGV2L251bGwgMj4mMSA7IHRoZW4KLSAgCToKLSAgICAgIGVsc2UKLSAgCUFDX01TR19FUlJPUihbJG9maWxlIGFscmVhZHkgZXhpc3RlZCA7IGNhbid0IGJ1aWxkIGRsbCBvYmplY3QgJGldKQotICAgICAgZmkKLSAgICBmaQotICAgIGNhdCA+ICRvZmlsZSA8PCBFT0ZJRgotLyogeERvIG5vdCBlZGl0OyB0aGlzIGZpbGUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZSAqLwotRU9GSUYKLSAgZG9uZQotCi0gIGNhdCA+PiAkb3V0cHV0X2luaXRzIDw8IEVPRk9DCi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgIiR7aX0taGRycy5oIgotdm9pZAotaW5pdF8kaSh2b2lkKSB7Ci1FT0ZPQwotCi0gICMgY3JlYXRlIHRoZSAuc28gcnVsZQotICBzYXZlZF9zdWJsaXN0X289YGVjaG8gIiRtb2RfZmlsZXMgIiB8IHNlZCAncy9eICovL2c7cy8gICovLm8gL2c7J2AKLQotICAjIGNyZWF0ZSB0aGUgcnVsZXMgZm9yIGVhY2ggb2JqZWN0Ci0gIGZvciBqIGluICRtb2RfZmlsZXMgOyBkbwotICAgIGNhdCA+PiAkbW9kdWxlX3J1bGVzIDw8IEVPRlIKLSRqLm86ICRqLmMKLQlcJChDQykgLWMgXCQoQ1BQRkxBR1MpIFwkKENGTEFHUykgXCQoRExGTEFHUykgLW8gXCRAIFwkPAotCi1FT0ZSCi0gICAgbW5tPWBlY2hvICRqIHwgc2VkICdzLy4qXC8vLztzL1wuYyQvLzsnYAotICAgIGVjaG8gIiAgaWYgKHNob3VsZF9pbml0KFwiJG1ubVwiKSkgaW5pdF8kbW5tKCk7IiA+PiAkb3V0cHV0X2luaXRzCi0gIGRvbmUKLQotICAjIGNyZWF0ZSB0aGUgcnVsZSBmb3IgdGhlIC5zbyBhbmQgd3JhcHBlciBjb2RlCi0gIGNhdCA+PiAkbW9kdWxlX3J1bGVzIDw8IEVPRk0KLSR7aX0tZGxsLm86ICR7aX0tZGxsLmMKLQlcJChDQykgLWMgXCQoQ1BQRkxBR1MpIFwkKENGTEFHUykgXCQoRExGTEFHUykgLW8gXCRAIFwkPAotCi0ke2l9LnNvOiAkc2F2ZWRfc3VibGlzdF9vICR7aX0tZGxsLm8KLQlcJChDQykgXCQoQ1BQRkxBR1MpIFwkKENGTEFHUykgXCQoRExGTEFHUykgLW8gXCRAICRzYXZlZF9zdWJsaXN0X28gJHtpfS1kbGwubwotCi1FT0ZNCi0gICAgICAgIGNhdCA+PiAkb3V0cHV0X2luaXRzIDw8IEVPRk9DRklOCi19Ci1FT0ZPQ0ZJTgotCi1kb25lCi0KLSMgY2xlYW51cAotcm0gLWYgbW9kdWxlX3RtcF9oZWFkZXIuaAotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBidWlsZCBtb2R1bGUgbGlzdHMgZm9yIE1ha2VmaWxlcwotIwotY2hhbmdlcXVvdGUoLCApCi0KLWZvciBpIGluIG1vZHVsZV9saXN0X28gbW9kdWxlX2xpc3RfYyBtb2R1bGVfbGlzdF9sbyBtaWJfbW9kdWxlX2xpc3RfbyBtaWJfbW9kdWxlX2xpc3RfYyBtaWJfbW9kdWxlX2xpc3RfbG8gbWliZ3JvdXBfbGlzdF9vIG1pYmdyb3VwX2xpc3RfbG8gYWdlbnRfbW9kdWxlX2xpc3RfbyBhZ2VudF9tb2R1bGVfbGlzdF9jIGFnZW50X21vZHVsZV9saXN0X2xvIGFnZW50Z3JvdXBfbGlzdF9vIGFnZW50Z3JvdXBfbGlzdF9sbyA7IGRvCi0gIGV2YWwgIiRpPW1rLyR7aX0ubWsiCi1kb25lCi0KLXNlZCAncy9ebW9kdWxlX2xpc3RfY29kZS9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkbW9kdWxlX2xpc3RfY29kZSAgPiAkbW9kdWxlX2xpc3Rfbwotc2VkICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9jCi1zZWQgJ3MvXm1vZHVsZV9saXN0X2NvZGUvbW9kdWxlX2xpc3RfbG8vO3MvXChbXj1dXCkgICpcXC9cMS5sbyBcXC9nJyA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9sbwotCi1zZWQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9vCi1zZWQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9jLztzL1woW149XVwpICAqXFwvXDEuYyBcXC9nJyAgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9jCi1zZWQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9sby87cy9cKFtePV1cKSAgKlxcL1wxLmxvIFxcL2cnIDwgJG1pYl9tb2R1bGVfbGlzdF9jb2RlICA+ICRtaWJfbW9kdWxlX2xpc3RfbG8KLQotc2VkICdzL15taWJfbW9kdWxlX2xpc3Rfby9taWJncm91cF9saXN0X28vO3NAXChbXiAJXSpcKVwub0BtaWJncm91cC9cMS5vQGcnIDwgJG1pYl9tb2R1bGVfbGlzdF9vID4gJG1pYmdyb3VwX2xpc3Rfbwotc2VkICdzL15taWJfbW9kdWxlX2xpc3RfbG8vbWliZ3JvdXBfbGlzdF9sby87c0BcKFteIAldKlwpXC5sb0BtaWJncm91cC9cMS5sb0BnJyA8ICRtaWJfbW9kdWxlX2xpc3RfbG8gPiAkbWliZ3JvdXBfbGlzdF9sbwotCi1zZWQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2NvZGUvYWdlbnRfbW9kdWxlX2xpc3Rfby87cy9cKFtePV1cKSAgKlxcL1wxLm8gXFwvZycgIDwgJGFnZW50X21vZHVsZV9saXN0X2NvZGUgID4gJGFnZW50X21vZHVsZV9saXN0X28KLXNlZCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfY29kZS9hZ2VudF9tb2R1bGVfbGlzdF9jLztzL1woW149XVwpICAqXFwvXDEuYyBcXC9nJyAgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3RfYwotc2VkICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3RfbG8KLQotc2VkICdzL15hZ2VudF9tb2R1bGVfbGlzdF9vL2FnZW50Z3JvdXBfbGlzdF9vLztzQFwoW14gCV0qXClcLm9AbWliZ3JvdXAvXDEub0BnJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9vID4gJGFnZW50Z3JvdXBfbGlzdF9vCi1zZWQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2xvL2FnZW50Z3JvdXBfbGlzdF9sby87c0BcKFteIAldKlwpXC5sb0BtaWJncm91cC9cMS5sb0BnJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9sbyA+ICRhZ2VudGdyb3VwX2xpc3RfbG8KLQotZm9yIGkgaW4gbW9kdWxlX2xpc3RfbyBtb2R1bGVfbGlzdF9jIG1vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9vIG1pYl9tb2R1bGVfbGlzdF9jIG1pYl9tb2R1bGVfbGlzdF9sbyBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9vIGFnZW50X21vZHVsZV9saXN0X2MgYWdlbnRfbW9kdWxlX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X28gYWdlbnRncm91cF9saXN0X2xvIDsgZG8KLQkjIGhwdXggbWFrZSAoYXQgbGVhc3QpIGRvZXNuJ3QgbGlrZSBhIHRyYWlsaW5nIFwgb24gdGhlIGxhc3QKLQkjIGxpbmUgZXZlbiB3aGVuIHRoZSBuZXh0IGxpbmUgY29udGFpbnMgbm90aGluZyBidXQKLQkjIHdoaXRlc3BhY2UuCi0JbGFzdHRva2VuPWB0YWlsIC0xIG1rLyRpLm1rIHwgYXdrICd7cHJpbnQgJDF9J2AKLQlzZWQgInMjJGxhc3R0b2tlbiBcXFxcIyRsYXN0dG9rZW4jIiA8IG1rLyRpLm1rID4gbWsvJGkubWsudG1wCi0JbXYgbWsvJGkubWsudG1wIG1rLyRpLm1rCi0KLQkjIGFkZCBhIGNsb3NpbmcgY29tbWVudAotCWVjaG8gIiIgPj4gbWsvJGkubWsKLQllY2hvICIjIGVuZCBjb25maWd1cmUgZ2VuZXJhdGVkIGNvZGUiID4+IG1rLyRpLm1rCi1kb25lCi0KLWNoYW5nZXF1b3RlKFssIF0pCi0KLWlmIHRlc3QgJG1vZHVsZV9kZWJ1ZyAtZXEgMTsgdGhlbgotICAgZWNobyAtZSAiXG5GaW5hbCBtb2R1bGUgbGlzdDogJG1vZHVsZV9saXN0X2NvZGUiCi0gICBleGl0Ci1maQotaWYgdGVzdCAieCR3aXRoX21pYl9jZmdfY2hlY2tzIiA9ICJ4eWVzIjsgdGhlbgotICBBQ19NU0dfQ0FDSEVfQUREKFtBZ2VudCBNb2R1bGUgbGlzdDogJG1vZHVsZV9saXN0X2NvZGVdKQotZmkKLUFDX1NVQlNUX0ZJTEUoTU9EVUxFX0xJU1QpCi1BQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2MpCi1BQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X28pCi1BQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2xvKQotQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfYykKLUFDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X28pCi1BQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9sbykKLUFDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfYykKLUFDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfbykKLUFDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfbG8pCi1BQ19TVUJTVF9GSUxFKG1pYmdyb3VwX2xpc3RfbykKLUFDX1NVQlNUX0ZJTEUobWliZ3JvdXBfbGlzdF9sbykKLUFDX1NVQlNUX0ZJTEUoYWdlbnRncm91cF9saXN0X28pCi1BQ19TVUJTVF9GSUxFKGFnZW50Z3JvdXBfbGlzdF9sbykKLUFDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3QpCi0KLSNBQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdCkKLSNBQ19TVUJTVChtb2R1bGVfbGlzdCkKLUFDX1NVQlNUKGRlZmF1bHRfbWlic19pbnN0YWxsKQotQUNfU1VCU1QoZGxsY2xlYW5zKQotQUNfU1VCU1RfRklMRShtb2R1bGVfcnVsZXMpCi1BQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2RlcHMpCi1BQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9kZXBzKQotQUNfU1VCU1RfRklMRShhZ2VudF9tb2R1bGVfbGlzdF9kZXBzKQotCi1BQ19NU0dfUkVTVUxUKC4pCi0KLWlmIHRlc3QgJG1vZHVsZV9kZWJ1ZyAtZXEgMTsgdGhlbgotQUNfTVNHX0NBQ0hFX0FERChBZ2VudCBNSUIgY29kZTogICAgICAgICAgICAkbW9kdWxlX2xpc3QpCi1maQotQUNfTVNHX0NBQ0hFX0FERChBZ2VudCBNSUIgY29kZTogICAgICAgICAgICAkdG9wX2xldmVsX21vZHVsZXMpCi0KLSMgZW5kIGhhaXJ5IGFnZW50IG1vZHVsZSBwcm9jZXNzaW5nCi0KLUFDX01TR19DSEVDS0lORyhbaWYgZGlyZWN0b3JpZXMgbmVlZCB0byBiZSBjcmVhdGVkXSkKLWZvciBpIGluICRtb2R1bGVfZGlyZWN0b3JpZXM7IGRvCi0gICRzcmNkaXIvbWtpbnN0YWxsZGlycyAkaQotZG9uZQotQUNfTVNHX1JFU1VMVCguKQotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBEZWZpbmUgZGVmYXVsdCBtaWJzCi0jCi1BQ19NU0dfQ0hFQ0tJTkcoW2RlZmF1bHQgbWliIGZpbGVzIHRvIHJlYWRdKQotaWYgdGVzdCAieCRORVRTTk1QX0RFRkFVTFRfTUlCUyIgPSAieCI7IHRoZW4KLSAgTkVUU05NUF9ERUZBVUxUX01JQlM9IiRkZWZhdWx0X21pYnMiCi1maQotaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4Y3lnd2luIjsgdGhlbgotICAjIG1pbmd3MzIgYW5kIGN5Z3dpbiB1c2UgJzsnIGFzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXBhcmF0b3IgY2hhcgotICBFTlZfU0VQQVJBVE9SPSI7IgotICBORVRTTk1QX0RFRkFVTFRfTUlCUz1gZWNobyAiJE5FVFNOTVBfREVGQVVMVF9NSUJTIiB8IHNlZCAncy86LzsvZydgCi0gIGRlZmF1bHRfbWlicz1gZWNobyAiJGRlZmF1bHRfbWlicyIgfCBzZWQgJ3MvOi87L2cnYAotZWxzZQotICBFTlZfU0VQQVJBVE9SPSI6IgotZmkKLUFDX1NVQlNUKEVOVl9TRVBBUkFUT1IpCi1BQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX01JQlMsIiRORVRTTk1QX0RFRkFVTFRfTUlCUyIpCi1BQ19TVUJTVChORVRTTk1QX0RFRkFVTFRfTUlCUykKLUFDX01TR19SRVNVTFQoJE5FVFNOTVBfREVGQVVMVF9NSUJTKQotCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgd2UgaGF2ZSB0byBidWlsZCBQSUMgY29kZV0pCi1lY2hvICIgJG1vZHVsZV9saXN0ICIgfCBncmVwICIgdWNkLXNubXAvZGxtb2QgIiA+L2Rldi9udWxsCi1pZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgotICAgICAgICBMSUJfQ0ZMQUdTPSIkTElCX0NGTEFHUyAkU0hMSUJfQ0ZMQUdTIgotCUFDX01TR19SRVNVTFQoeWVzKQotZWxzZQotCURMTElCUz0iIgotCUFDX01TR19SRVNVTFQobm8pCi1maQotCi0jCi0jIENoZWNrIGZvciBrZXJuZWwgbG9jYXRpb24KLSMKLQotQUNfQ0FDSEVfQ0hFQ0soZm9yIGxvY2F0aW9uIG9mIHN5c3RlbSBrZXJuZWwsYWNfY3ZfS0VSTkVMX0xPQywKLVthY19jdl9LRVJORUxfTE9DPSJ1bmtub3duIgotIyBGaXJzdCBkZXRlcm1pbmUgaWYgdGVzdCBleHBlY3RzIGEgLWYgb3IgYSAtYyAoY2hhcmFjdGVyIGRldmljZSAoU1lTVikpCi0KLWlmIHRlc3QgLWMgL2Rldi9udWxsOyB0aGVuCi0gIENGTEFHPSItYyIKLWVsaWYgdGVzdCAtZiAvZGV2L251bGw7IHRoZW4KLSAgQ0ZMQUc9Ii1mIgotZWxzZQotICAjIGZhbGwgYmFjawotICBDRkxBRz0iLWYiCi1maQotZm9yIGkgaW4gL3ZtdW5peCAvaHAtdXggL3N0YW5kL3ZtdW5peCAvZGV2L2tzeW1zIC9rZXJuZWwvdW5peCAva2VybmVsL2dlbnVuaXggL25ldGJzZCAvdW5peCAva2VybmVsIC9ic2QgL21hY2hfa2VybmVsIC9ib290L2tlcm5lbC9rZXJuZWwKLSAgZG8KLSAgaWYgdGVzdCAtZiAkaSAtbyAkQ0ZMQUcgJGk7IHRoZW4KLSAgICBhY19jdl9LRVJORUxfTE9DPSIkaSIKLSAgICBicmVhazsKLSAgZmkKLWRvbmUKLWlmIHRlc3QgJGkgPSAidW5rbm93biI7IHRoZW4KLSAgQUNfTVNHX1dBUk4oW0Nhbid0IGZpbmQgc3lzdGVtIGtlcm5lbC4uLiAgU2V0dGluZyB0byAvdm11bml4XSkKLSAgYWNfY3ZfS0VSTkVMX0xPQz0iL3ZtdW5peCIKLWZpCi1dKQotCi1BQ19ERUZJTkVfVU5RVU9URUQoS0VSTkVMX0xPQywiJGFjX2N2X0tFUk5FTF9MT0MiKQotCi0jCi0jIENoZWNrIGZvciBtb3VudCB0YWJsZSBsb2NhdGlvbgotIwotCi1BQ19DQUNIRV9DSEVDSyhmb3IgbW91bnQgdGFibGUgbG9jYXRpb24sYWNfY3ZfRVRDX01OVFRBQiwKLVthY19jdl9FVENfTU5UVEFCPSJ1bmtub3duIgotZm9yIGkgaW4gL2V0Yy9tbnR0YWIgL2V0Yy9tdGFiIC9ldGMvZmlsZXN5c3RlbXMgL2Rldi9tbnR0YWIKLSAgZG8KLSAgaWYgdGVzdCAtZiAkaSAtbyAtYyAkaTsgdGhlbgotICAgIGFjX2N2X0VUQ19NTlRUQUI9IiRpIgotICAgIGJyZWFrOwotICBmaQotZG9uZQotXSkKLQotQUNfREVGSU5FX1VOUVVPVEVEKEVUQ19NTlRUQUIsIiRhY19jdl9FVENfTU5UVEFCIikKLQotIyBDaGVjayBmb3IgL2Rldi9kbWVtIG9yIC9kZXYvZHJ1bSBsb2NhdGlvbgotQUNfQ0FDSEVfQ0hFQ0soZm9yIGxvY2F0aW9uIG9mIHN3YXAgZGV2aWNlLGFjX2N2X0RNRU1fTE9DLAotWwotIyBGaXJzdCBkZXRlcm1pbmUgaWYgdGVzdCBleHBlY3RzIGEgLWYgb3IgYSAtYyAoY2hhcmFjdGVyIGRldmljZSAoU1lTVikpCi0KLWlmIHRlc3QgLWYgL2Rldi9rbWVtOyB0aGVuCi0gIENURVNUPSJ0ZXN0IC1mIgotZWxpZiB0ZXN0IC1jIC9kZXYva21lbTsgdGhlbgotICBDVEVTVD0idGVzdCAtYyIKLWVsc2UKLSAgIyBmYWxsIGJhY2sKLSAgQ1RFU1Q9InRlc3QgLWYiCi1maQotCi1pZiAkQ1RFU1QgL2Rldi9kbWVtOyB0aGVuCi0gIGFjX2N2X0RNRU1fTE9DPSIvZGV2L2RtZW0iCi1lbGlmICRDVEVTVCAvZGV2L2RydW07IHRoZW4KLSAgYWNfY3ZfRE1FTV9MT0M9Ii9kZXYvZHJ1bSIKLWVsc2UKLSAgYWNfY3ZfRE1FTV9MT0M9Im5vbmUiCi1maQotXSkKLQotaWYgdGVzdCAieCRhY19jdl9ETUVNX0xPQyIgIT0gInhub25lIjsgdGhlbgotICBBQ19ERUZJTkVfVU5RVU9URUQoRE1FTV9MT0MsIiRhY19jdl9ETUVNX0xPQyIpCi1maQotCi0jIGZvcmNlZCBlZmVuY2UgdHVybmVkIG9mZi4KLSMgaWYgdGVzdCAieCRkZXZlbG9wZXIiID0gInh5ZXMiIC1hICJ4JHVzZV9lZmVuY2UiICE9ICJ4bm8iOyB0aGVuCi0jICAgIHVzZV9lZmVuY2U9InllcyIKLSMgZmkKLQotaWYgdGVzdCAieCR1c2VfZWZlbmNlIiA9ICJ4eWVzIjsgdGhlbgotICAgIEFDX0NIRUNLX0xJQihlZmVuY2UsIEVGX0V4aXQpCi1maQotCi0jIENoZWNrcyBmb3IgbGlicmFyaWVzLgotIyBBQ19DSEVDS19MSUIoZGVzLCBtYWluKQotQUNfQ0hFQ0tfTElCKG0sIHJvdW5kKQotQUNfQ0hFQ0tfTElCKG0sIGV4cCkKLQotQUNfQVJHX1dJVEgoZWxmLAotCVtBU19IRUxQX1NUUklORygtLXdpdGhvdXQtZWxmLFt1c2UgZWxmIGxpYnJhcmllc10pXSwsCi0JW0FDX0FSR19FTkFCTEUoZWxmLCwKLQkJW0FDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWVsZi8tLXdpdGhvdXQtZWxmIGluc3RlYWQgXSldKV0pCi0KLWlmIHRlc3QgIngkd2l0aF9lbGYiICE9ICJ4bm8iOyB0aGVuCi0jIG5saXN0IGlzIG5lZWRlZCBmb3IgdXB0aW1lIG9uIHNvbWUgc3l0ZW1zIGluIHRoZSBnZW5lcmljIGxpYnJhcnkKLSMgYWRkIGhvc3RzIHdoaWNoIGRvbid0IHVzZSBubGlzdCB0byB0aGUgYmxhbmsgZmlyc3QgbGluZQotY2FzZSAkdGFyZ2V0X29zIGluCi0JbGludXgqKSA7OwotCWlyaXgqKSAjIENoZWNrIGZvciBubGlzdCBpbiBtbGQgKGlyaXgpCi0JCUFDX0NIRUNLX0xJQihlbGYsIG5saXN0KQotCQlBQ19DSEVDS19MSUIoZWxmLCBubGlzdDY0KQotCQlBQ19DSEVDS19MSUIobWxkLCBubGlzdCkKLQkJOzsKLQkqKSAjIGRlZmF1bHQKLQkJQUNfQ0hFQ0tfTElCKGVsZiwgbmxpc3QpCi0JCTs7Ci1lc2FjCi1maQotIAotCi0jIE9uIHNvbWUgcGxhdGZvcm1zIChJcml4KSBsaWJuc2wgYW5kIGxpYnNvY2tldCBzaG91bGQgbm90IGJlIHVzZWQuCi1BQ19DSEVDS19GVU5DKGdldGhvc3RieW5hbWUsIEFDX0RFRklORShIQVZFX0dFVEhPU1RCWU5BTUUpLAotCUFDX0NIRUNLX0xJQihuc2wsIGdldGhvc3RieW5hbWUsIEFDX0RFRklORShIQVZFX0dFVEhPU1RCWU5BTUUpCi0JTElCUz0iJHtMSUJTfSAtbG5zbCIpKQotCi0jIFNDTyBVbml4d2FyZSA3LjEuNCBmaW5kcyBnZXRob3N0YnluYW1lKCkgaW4gLWxzb2NrZXQKLUFDX0NIRUNLX0ZVTkMoZ2V0aG9zdGJ5bmFtZSwgQUNfREVGSU5FKEhBVkVfR0VUSE9TVEJZTkFNRSksCi0JQUNfQ0hFQ0tfTElCKHNvY2tldCwgZ2V0aG9zdGJ5bmFtZSwgQUNfREVGSU5FKEhBVkVfR0VUSE9TVEJZTkFNRSkKLQlMSUJTPSIke0xJQlN9IC1sc29ja2V0IikpCi0KLSMgU29sYXJpcyBrc3RhdAotQUNfQ0hFQ0tfTElCKGtzdGF0LCBrc3RhdF9sb29rdXAsCi0gICAgICAgIEFDX0RFRklORShIQVZFX0xJQktTVEFULCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrc3RhdCcgbGlicmFyeSAoLWxrc3RhdCkuXSkKLSAgICAgICAgTE5FVFNOTVBMSUJTPSIke0xORVRTTk1QTElCU30gLWxrc3RhdCIpCi0KLSMgQ2hlY2sgZm9yIGxpYnJhcmllcyB0aGF0IHRoZSBhZ2VudCBuZWVkcwotIyBzYXZpbmcgb2xkIGxpYnJhcmllcwotTk9OQUdFTlRMSUJTPSRMSUJTCi0KLSMgQ2hlY2sgZm9yIHNlY3VyaXR5IHJlbGF0ZWQgZnVuY3Rpb25zCi1pZiB0ZXN0ICJ4JHRyeW9wZW5zc2wiICE9ICJ4bm8iOyB0aGVuCi0gICAgaWYgdGVzdCAieCRhc2tlZG9wZW5zc2wiICE9ICJ4eWVzIiAtYSAieCRhc2tlZHBrY3MiID0gInh5ZXMiOyB0aGVuCi0gICAgICBBQ19DSEVDS19MSUIocGtjczExLCBDX0luaXRpYWxpemUsIEFDX0RFRklORShIQVZFX0xJQlBLQ1MxMSwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGtjczExJyBsaWJyYXJ5ICgtbHBrY3MxMSkuXSkKLSAgICAgICAgICAgICAgTElCUEtDUzExPSItbHBrY3MxMSIpCi0gICAgZWxzZSAKLSAgICAgIGlmIHRlc3QgIngkdHJ5cnNhcmVmIiAhPSAieG5vIjsgdGhlbgotICAgICAgICAgQUNfQ0hFQ0tfTElCKHJzYXJlZiwgUlNBUHJpdmF0ZURlY3J5cHQpCi0gICAgICAgICBBQ19DSEVDS19MSUIoUlNBZ2x1ZSwgUlNBX1BLQ1MxX1JTQXJlZikKLSAgICAgIGZpCi0KLSAgICAgIEFDX0NIRUNLX0xJQihjcnlwdG8sIEVWUF9tZDUsIEFDX0RFRklORShIQVZFX0xJQkNSWVBUTywgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY3J5cHRvJyBsaWJyYXJ5ICgtbGNyeXB0bykuXSkKLSAgICAgICAgICAgICAgTElCQ1JZUFRPPSItbGNyeXB0byIpCi0gICAgICBBQ19DSEVDS19MSUIoY3J5cHRvLCBBRVNfY2ZiMTI4X2VuY3J5cHQsIAotICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9BRVNfQ0ZCMTI4X0VOQ1JZUFQsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYEFFU19jZmIxMjhfZW5jcnlwdCcgZnVuY3Rpb24uXSkpCi0gICAgICBBQ19DSEVDS19MSUIoY3J5cHRvLCBFVlBfTURfQ1RYX2NyZWF0ZSwKLSAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfRVZQX01EX0NUWF9DUkVBVEVdLCBbXSwKLSAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgRVZQX01EX0NUWF9jcmVhdGUnIGZ1bmN0aW9uLl0pCi0gICAgICAgICAgQUNfREVGSU5FKFtIQVZFX0VWUF9NRF9DVFhfREVTVFJPWV0sIFtdLAotICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBFVlBfTURfQ1RYX2Rlc3Ryb3knIGZ1bmN0aW9uLl0pKQotICAgIGZpCi1lbGlmIHRlc3QgIngkYXNrZWRwa2NzIiA9ICJ4eWVzIjsgdGhlbgotICAgIEFDX0NIRUNLX0xJQihwa2NzMTEsIENfSW5pdGlhbGl6ZSwgQUNfREVGSU5FKEhBVkVfTElCUEtDUzExKQotICAgICAgICAgICAgTElCUEtDUzExPSItbHBrY3MxMSIpCi1maQotCi1MSUJTPSROT05BR0VOVExJQlMKLQotIyBjaGVjayBmb3IgdGNwIHdyYXBwZXIgc3VwcG9ydAotX2NwcGZsYWdzPSIke0NQUEZMQUdTfSIKLV9sZGZsYWdzPSIke0xERkxBR1N9IgotCi1BQ19BUkdfV0lUSChsaWJ3cmFwLAotWyAgLS13aXRoLWxpYndyYXBbPUxJQlBBVEhdICBDb21waWxlIGluIGxpYndyYXAgKHRjcF93cmFwcGVycykgc3VwcG9ydC5dLFsKLSAgaWYgdGVzdCAiJHdpdGhfbGlid3JhcCIgIT0gIm5vIjsgdGhlbgotICAgIGlmIHRlc3QgIiR3aXRoX2xpYndyYXAiICE9ICJ5ZXMiOyB0aGVuCi0gICAgICBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLUkkd2l0aF9saWJ3cmFwL2luY2x1ZGUiCi0gICAgICBMREZMQUdTPSIke0xERkxBR1N9IC1MJHdpdGhfbGlid3JhcC9saWIiCi0gICAgZmkKLQotICAgIF9saWJzPSR7TElCU30KLSAgICBBQ19DSEVDS19IRUFERVIodGNwZC5oLCAsCi0JICAgIEFDX01TR19FUlJPUihbQXNrZWQgdG8gdXNlIGxpYndyYXAgYnV0IEkgY291bGRuJ3QgZmluZCB0Y3BkLmguXSkpCi0KLSAgICBMSUJTPSIkTElCUyAtbHdyYXAiCi0JQUNfTVNHX0NIRUNLSU5HKFtmb3IgVENQIHdyYXBwZXJzIGxpYnJhcnkgLWx3cmFwXSkKLQkjIFhYWDogc2hvdWxkIGNoZWNrIGZvciBob3N0c19jdGwKLQlBQ19UUllfTElOSyhbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCQkgICAgICNpbmNsdWRlIDx0Y3BkLmg+Ci0JCSAgICAgaW50IGFsbG93X3NldmVyaXR5ID0gMDsKLQkJICAgICBpbnQgZGVueV9zZXZlcml0eSAgPSAwOwotCQkgICAgXSxbaG9zdHNfYWNjZXNzKCh2b2lkICopMCldLFsKLQotCSAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotCSAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfTElCV1JBUCkKLQkgICAgdGVzdCAiJHdpdGhfbGlid3JhcCIgIT0gbm8gLWEgIiR3aXRoX2xpYndyYXAiICE9IHllcyAmJiBfd3JhcGxpYnM9Ii1MJHdpdGhfbGlid3JhcC9saWIiCi0JICAgIF93cmFwbGlicz0iJF93cmFwbGlicyAtbHdyYXAiXSwKLSAgICAgICAgWwotCSAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0JICAgICMgTGludXggUmVkSGF0IDYuMSB3b24ndCBsaW5rIGxpYndyYXAgd2l0aG91dCBsaWJuc2wKLQkgICAgQUNfQ0hFQ0tfRlVOQyh5cF9nZXRfZGVmYXVsdF9kb21haW4sICwKLQkJQUNfQ0hFQ0tfTElCKG5zbCwgeXBfZ2V0X2RlZmF1bHRfZG9tYWluKSkKLQkgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgVENQIHdyYXBwZXJzIGxpYnJhcnkgLWx3cmFwIGxpbmtlZCB3aXRoIC1sbnNsXSkKLQkgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQkJICAgICAgICAgI2luY2x1ZGUgPHRjcGQuaD4KLQkJICAgICAgICAgaW50IGFsbG93X3NldmVyaXR5ID0gMDsKLQkgICAgICAgICAgICAgICAgIGludCBkZW55X3NldmVyaXR5ICA9IDA7Ci0JIAkJXSxbaG9zdHNfYWNjZXNzKCh2b2lkICopMCldLAotCi0JCQlBQ19NU0dfUkVTVUxUKHllcykKLQkJCUFDX0RFRklORShORVRTTk1QX1VTRV9MSUJXUkFQKQotCQkJdGVzdCAiJHdpdGhfbGlid3JhcCIgIT0gbm8gLWEgIiR3aXRoX2xpYndyYXAiICE9IHllcyAmJiBfd3JhcGxpYnM9Ii1MJHdpdGhfbGlid3JhcC9saWIiCi0JCQlfd3JhcGxpYnM9IiRfd3JhcGxpYnMgLWx3cmFwIC1sbnNsIiwKLQotCQkJQUNfTVNHX1JFU1VMVChubykKLQkJCUFDX01TR19FUlJPUihBc2tlZCB0byB1c2UgbGlid3JhcCBidXQgSSBjb3VsZG4ndCBmaW5kIGl0LikpXSkKLSAgICBMQUdFTlRMSUJTPSIkX3dyYXBsaWJzIgotICAgIENQUEZMQUdTPSR7X2NwcGZsYWdzfQotICAgIExERkxBR1M9JHtfbGRmbGFnc30KLSAgICBMSUJTPSR7X2xpYnN9Ci0gIGZpCi1dKQotCi1BQ19DSEVDS19IRUFERVJTKHJwbS9ycG1saWIuaCBycG0vaGVhZGVyLmgpCi0KLUFDX0NIRUNLX0hFQURFUihycG0vcnBtbGliLmgscnBtbGliX2g9eWVzLHJwbWxpYl9oPW5vKQotQUNfQ0hFQ0tfSEVBREVSKHJwbS9oZWFkZXIuaCxycG1oZWFkZXJfaD15ZXMscnBtaGVhZGVyX2g9bm8pCi0KLWlmIHRlc3QgIngkcnBtaGVhZGVyX2giID0gInhubyIgLW8gIngkcnBtbGliX2giID0gInhubyIgOyB0aGVuCi0gIGlmIHRlc3QgIngkd2l0aF9ycG0iID0gInh5ZXMiIDsgdGhlbgotICAgIEFDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgZWl0aGVyIHRoZSBSUE0gaGVhZGVyIGZpbGVzIG5lZWRlZCBhbmQgd2FzIHNwZWNpZmljYWxseSBhc2tlZCB0byB1c2UgUlBNIHN1cHBvcnRdKQotICBlbHNlCi0gICAgd2l0aF9ycG09bm8KLSAgZmkKLWZpCi0KLSMKLSMgcnBtIGxpYnJhcmllcyBvbmx5IG5lZWRlZCBmb3IgdGhlIGhvc3QgcmVzb3VyY2VzIG1pYiBzb2Z0d2FyZQotIyBpbnN0YWxsZWQgdGFibGVzIChvbiBsaW51eCBpbiBwYXJ0aWN1bGFyKQotIwotaWYgdGVzdCAieCR3aXRoX3JwbSIgIT0gInhubyIgJiYgXAotICAgICAgICBlY2hvICIgJG1vZHVsZV9saXN0ICIgfCBncmVwICIgaG9zdC9ocl9zd2luc3QgIiA+IC9kZXYvbnVsbDsgdGhlbgotICAjIEFSRy4gIFJQTSBpcyBhIHJlYWwgcGFpbi4KLSAgIyBGV0lXIGxpYnJwbS5sYSwgbGlicnBtaW8ubGEsIGFuZCBsaWJwb3B0LmxhIGhhdmUgY29ycmVjdCBkZXBlbmRlbmNpZXMuCi0gIF9ycG1saWJzPSIiCi0KLSAgIyBycG0tNC4wLnggbmVlZHMgcnBtaW8uCi0gIEFDX0NIRUNLX0xJQihycG1pbywgcnBtR2V0UGF0aCwgW19ycG1saWJzPSItbHJwbWlvICRfcnBtbGlicyJdLCwkX3JwbWxpYnMpCi0gIAotICAjIG5vdyBjaGVjayBmb3IgcnBtIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBsaWJyYXJpZXMuCi0gIEFDX0NIRUNLX0xJQihycG0sIHJwbUdldEZpbGVzeXN0ZW1MaXN0LFsKLSAgICBBQ19ERUZJTkUoSEFWRV9MSUJSUE0pCi0gICAgTE1JQkxJQlM9Ii1scnBtICRfcnBtbGlicyAkTE1JQkxJQlMiCi0gICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1JL3Vzci9pbmNsdWRlL3JwbSIKLSAgXSxbCi0gICAgIyBycG0tNC4wLjMgbGlicnBtZGIgYWN0dWFsbHkgY29udGFpbnMgd2hhdCB3ZSBuZWVkLgotICAgIEFDX0NIRUNLX0xJQihycG1kYiwgcnBtZGJPcGVuLFsKLSAgICAgIEFDX0RFRklORShIQVZFX0xJQlJQTSkKLSAgICAgIExNSUJMSUJTPSItbHJwbWRiIC1scnBtICRfcnBtbGlicyAkTE1JQkxJQlMiCi0gICAgICBDRkxBR1M9IiRDRkxBR1MgLUkvdXNyL2luY2x1ZGUvcnBtIgotICAgIF0sLC1scnBtICRfcnBtbGlicykKLSAgXSkKLQotICAjIHJwbSA0LjYgaGFzIGluY29tcGF0aWJsZSBBUEksIHR1cm4gb24gdGhlIGxlZ2FjeSBvbmUKLSAgQUNfQ0hFQ0tfREVDTChbaGVhZGVyR2V0RW50cnldLAotICAgIDogLAotICAgIEFDX0RFRklORShbX1JQTV80XzRfQ09NUEFUXSwgW10sIFtEZWZpbmUgaWYgeW91IGhhdmUgUlBNIDQuNiBvciBuZXdlciB0byB0dXJuIG9uIGxlZ2FjeSBBUEldKSwKLSAgICBbWyNpbmNsdWRlIDxycG0vcnBtbGliLmg+XV0KLSAgKQotZmkKLQotIyBsaWJrdm0KLUFDX0NIRUNLX0xJQihrdm0sIGt2bV9yZWFkLCBbX2xpYmt2bT0iLWxrdm0iXSkKLUFDX0NIRUNLX0ZVTkMoa3ZtX29wZW5maWxlcywgQUNfREVGSU5FKEhBVkVfS1ZNX09QRU5GSUxFUywgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtX29wZW5maWxlcycgZnVuY3Rpb24uXSksCi0JQUNfQ0hFQ0tfTElCKGt2bSwga3ZtX29wZW5maWxlcywgQUNfREVGSU5FKEhBVkVfS1ZNX09QRU5GSUxFUywgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtX29wZW5maWxlcycgZnVuY3Rpb24uXSkKLQlfbGlia3ZtPSItbGt2bSIpKQotQUNfQ0hFQ0tfRlVOQyhrdm1fZ2V0cHJvY3MsIEFDX0RFRklORShIQVZFX0tWTV9HRVRQUk9DUywgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtX2dldHByb2NzJyBmdW5jdGlvbi5dKSwKLQlBQ19DSEVDS19MSUIoa3ZtLCBrdm1fZ2V0cHJvY3MsIEFDX0RFRklORShIQVZFX0tWTV9HRVRQUk9DUywgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtX2dldHByb2NzJyBmdW5jdGlvbi5dKQotCV9saWJrdm09Ii1sa3ZtIikpCi1BQ19DSEVDS19GVU5DKGt2bV9nZXRzd2FwaW5mbywgQUNfREVGSU5FKEhBVkVfS1ZNX0dFVFNXQVBJTkZPLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm1fZ2V0c3dhcGluZm8nIGZ1bmN0aW9uLl0pLAotCUFDX0NIRUNLX0xJQihrdm0sIGt2bV9nZXRzd2FwaW5mbywgQUNfREVGSU5FKEhBVkVfS1ZNX0dFVFNXQVBJTkZPLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm1fZ2V0c3dhcGluZm8nIGZ1bmN0aW9uLl0pCi0JX2xpYmt2bT0iLWxrdm0iKSkKLWlmIHRlc3QgIngke19saWJrdm19IiAhPSAieCI7IHRoZW4KLQlBQ19ERUZJTkUoSEFWRV9MSUJLVk0sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bScgbGlicmFyeSAoLWxrdm0pLl0pCi0JTEFHRU5UTElCUz0iJExBR0VOVExJQlMgJHtfbGlia3ZtfSIKLWZpCi0KLSMgRFlOQU1JQyBNT0RVTEUgU1VQUE9SVAotQUNfQ0hFQ0tfRlVOQyhkbG9wZW4sIEFDX0RFRklORShIQVZFX0RMT1BFTiwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZGxvcGVuJyBmdW5jdGlvbi5dKSwKLQlBQ19DSEVDS19MSUIoZGwsIGRsb3BlbiwgQUNfREVGSU5FKEhBVkVfRExPUEVOLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkbG9wZW4nIGZ1bmN0aW9uLl0pCi0JQUNfREVGSU5FKEhBVkVfTElCREwsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGRsJyBsaWJyYXJ5ICgtbGRsKS5dKQotCUxNSUJMSUJTPSIke0xNSUJMSUJTfSAtbGRsIikpCi0KLSMgbmxpc3QKLUFDX0NIRUNLX0ZVTkNTKG5saXN0IG5saXN0NjQga25saXN0KQotCi0jIHdoZXRoZXIgd2UgbmVlZCAtbGRldnN0YXQgZm9yIGRpc2tpbyBNSUIKLWVjaG8gIiAkbW9kdWxlX2xpc3QgIiB8IGdyZXAgIiB1Y2Qtc25tcC9kaXNraW8gIiA+L2Rldi9udWxsCi1pZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgotCUFDX0NIRUNLX0ZVTkMoZ2V0ZGV2cywgQUNfREVGSU5FKEhBVkVfR0VUREVWUyksCi0JCUFDX0NIRUNLX0xJQihkZXZzdGF0LCBnZXRkZXZzLCBBQ19ERUZJTkUoSEFWRV9HRVRERVZTKQotCQlMTUlCTElCUz0iJHtMTUlCTElCU30gLWxkZXZzdGF0IikpCi0JQUNfQ0hFQ0tfRlVOQyhnZXRkZXZzLCBBQ19ERUZJTkUoSEFWRV9ERVZTVEFUX0dFVERFVlMpLAotCQlBQ19DSEVDS19MSUIoZGV2c3RhdCwgZGV2c3RhdF9nZXRkZXZzLCBBQ19ERUZJTkUoSEFWRV9ERVZTVEFUX0dFVERFVlMpCi0JCUxNSUJMSUJTPSIke0xNSUJMSUJTfSAtbGRldnN0YXQiKSkKLWZpCi0KLSMgTE0tU0VOU09SUy1NSUIgc3VwcG9ydAotZWNobyAiICRtb2R1bGVfbGlzdCAiIHwgZ3JlcCAiIHVjZC1zbm1wL2xtU2Vuc29ycyAiID4gL2Rldi9udWxsCi1pZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgotICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzZW5zb3JzIHN1cHBvcnRdKQotICAgICAgICBjYXNlICR0YXJnZXRfb3MgaW4KLSAgICAgICAgICBzb2xhcmlzKikKLSAgICAgICAgICAgIEFDX0NIRUNLX0hFQURFUihwaWNsLmgsIExNSUJMSUJTPSIke0xNSUJMSUJTfSAtbHBpY2wiLCkKLSAgICAgICAgICAgIEFDX0NIRUNLX0hFQURFUlMocGljbC5oKQotICAgICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICAgIEFDX0NIRUNLX0hFQURFUihzZW5zb3JzL3NlbnNvcnMuaCwsCi0gICAgICAgICAgICAgICAgW0FDX01TR19FUlJPUihbYXNrZWQgdG8gdXNlIGxtX3NlbnNvcnMgYnV0IEkgY291bGRuJ3QgZmluZCBzZW5zb3JzL3NlbnNvcnMuaF0pXSkKLSAgICAgICAgICAgIEFDX0NIRUNLX0xJQihzZW5zb3JzLCBzZW5zb3JzX2dldF9kZXRlY3RlZF9jaGlwcywgWwotCQkgICBMTUlCTElCUz0iJHtMTUlCTElCU30gLWxzZW5zb3JzIiA7Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBbQUNfTVNHX0VSUk9SKFthc2tlZCB0byB1c2UgbG1fc2Vuc29ycyBidXQgSSBjb3VsZG4ndCBmaW5kIC1sc2Vuc29yc10pXSkKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLWZpCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgUEVSTCBTVVBQT1JUCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgdGVzdCB0byBzZWUgaWYgd2UgY2FuIGF0dGVtcHQgdG8gYnVpbGQgZW1iZWRkZWQgUGVybCBzbyBmYXIKLSMKLWlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4bm8iIDsgdGhlbgotICAgIGluc3RhbGxfcGVybD0idHJ5IgotICBmaQotICBpZiB0ZXN0ICJ4JGFjX2N2X3BhdGhfUEVSTFBST0ciID0gIngiIC1vICJ4JGFjX2N2X3BhdGhfUEVSTFBST0ciID0gInhubyIgOyB0aGVuCi0gICAgaW5zdGFsbF9wZXJsPSJubyIKLSAgICBlbWJlZF9wZXJsPSJubyIKLSAgZmkKLWZpCi0KLQotIwotIyBFbWJlZGRlZCBQZXJsIHNwZWNpZmljIHN0dWZmCi0jCi0KLSMgdGVzdCBwZXJsIHByb2cKLWlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KLSAgICBteXBlcmw9JGFjX2N2X3BhdGhfUEVSTFBST0cKLSAgICBpZiB0ZXN0ICRteXBlcmwgPSAibm8iIDsgdGhlbgotICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgotICAgICAgZWxzZQotICAgICAgICBBQ19NU0dfRVJST1IoLS1lbmFibGUtZW1iZWRkZWQtcGVybCByZXF1ZXN0ZWQgYnV0IG5vIHBlcmwgZXhlY3V0YWJsZSBmb3VuZCkKLSAgICAgIGZpCi0gICAgZmkKLWZpCi0KLSMgdGVzdCBmb3Igc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0Ci1pZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgIT0gInhubyIgOyB0aGVuCi0gICAgIyBlbWJlZGRlZCBQZXJsIHJlcXVpcmVzIHNoYXJlZCBsaWJyYXJpZXMKLSAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9zaGFyZWQiICE9ICJ4eWVzIjsgdGhlbgotICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgotICAgICAgZWxzZQotICAgICAgICBBQ19NU0dfRVJST1IoUGVybCBzdXBwb3J0IHJlcXVpcmVzIC0tZW5hYmxlLXNoYXJlZCkKLSAgICAgIGZpCi0gICAgZmkKLWZpCi0KLWlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KLSAgQUNfTVNHX0NIRUNLSU5HKFtpZiB3ZSBhcmUgaW4gdGhlIHNvdXJjZSB0cmVlIHNvIHdlIGNhbiBpbnN0YWxsIFBlcmwgbW9kdWxlc10pCi0gIGlmIHRlc3QgIngkc3JjZGlyIiA9ICJ4LiIgLW8gLWQgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlIDsgdGhlbgotICAgIEFDX01TR19SRVNVTFQoW1llc10pCi0gIGVsc2UKLSAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gICAgICBpbnN0YWxsX3Blcmw9Im5vIgotICAgICAgQUNfTVNHX1JFU1VMVChbTm9dKQotICAgIGVsc2UKLSAgICAgIEFDX01TR19FUlJPUihbUGVybCBtb2R1bGVzIGNhbiBub3QgYmUgYnVpbHQgb3V0c2lkZSB0aGUgc291cmNlIGRpcmVjdG9yeV0pCi0gICAgZmkKLSAgZmkKLWZpICAgICAgCi0KLSMgY2hlY2sgdGhlIFBlcmwgY29tcGlsZXIgbmFtZQotaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgotICAgICMKLSAgICAjIFBlcmwgY2MgY2hlY2tzCi0gICAgIwotICAgIGlmIHRlc3QgInhlbmFibGVfcGVybF9jY19jaGVja3MiICE9ICJ4bm8iIDsgdGhlbgotICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUGVybCBjY10pCi0gICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgIFBFUkxDQz1gJG15cGVybCAtVjpjYyB8ICRteXBlcmwgLW4gLWUgJ3ByaW50IGlmIChzL15ccypjYz0uKFstPVx3XHNcL10rKS47XHMqLyQxLyk7J2AKLSAgICAgIGNoYW5nZXF1b3RlKFssIF0pCi0gICAgICBpZiB0ZXN0ICJ4JFBFUkxDQyIgIT0gIngiIDsgdGhlbgotICAgICAgICBBQ19NU0dfUkVTVUxUKFskUEVSTENDXSkKLSAgICAgIGVsc2UKLSAgICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgICAgIGluc3RhbGxfcGVybD0ibm8iCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGNvbXBpbGVyIHRoYXQgd2FzIHVzZWQgdG8gYnVpbGQgJG15cGVybC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgcGVybCBiaW5hcnkgb3IgdXNlIC0td2l0aG91dC1wZXJsLW1vZHVsZXMgdG8gYnVpbGQgd2l0aG91dCBQZXJsLl0pCi0gICAgICAgIGZpCi0gICAgICBmaQotZmkKLQotIyBjaGVjayB0aGUgUGVybCBjb21waWxlciBjb21wYXRpYmlsaXR5Ci1pZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgIT0gInhubyIgOyB0aGVuCi0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJFBFUkxDQyBpcyBhIEdOVSBDIGNvbXBpbGVyXSkKLSAgICAgIE9MRENDPSRDQwotICAgICAgQ0M9IiRQRVJMQ0MiCi0gICAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLCBbWwotI2lmbmRlZiBfX0dOVUNfXwotICBjaG9rZSBtZQotI2VuZGlmCi0gICAgICBdXSldLCBbcGVybGNjX2lzX2dudT15ZXNdLCBbcGVybGNjX2lzX2dudT1ub10pCi0gICAgICBBQ19NU0dfUkVTVUxUKFskcGVybGNjX2lzX2dudV0pCi0gICAgICBDQz0kT0xEQ0MKLSAgICAgIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIiAtYSAieCRwZXJsY2NfaXNfZ251IiA9ICJ4bm8iIDsgdGhlbgotICAgICAgCWlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KLSAgICAgIAkgIGluc3RhbGxfcGVybD0ibm8iCi0gICAgICAJZWxzZQotICAgICAgCSAgQUNfTVNHX0VSUk9SKFtUaGlzIGJ1aWxkIGlzIHVzaW5nIGEgR05VIEMgY29tcGlsZXIgKCRDQykgd2hpbGUgUGVybCBoYXMgYmVlbiBjb21waWxlZCB3aXRoIGEgbm9uLUdOVSAob3Igbm9uLXdvcmtpbmcpIGNvbXBpbGVyICgkUEVSTENDKS4gVGhpcyBsaWtlbHkgd29uJ3Qgd29yayBmb3IgYnVpbGRpbmcgd2l0aCBQZXJsIHN1cHBvcnQuIEVpdGhlciBzcGVjaWZ5IGEgZGlmZmVyZW50IGNvbXBpbGVyICgtLXdpdGgtY2M9UEFUSCksIGRpc2FibGUgdGhpcyBjaGVjayAoLS1kaXNhYmxlLXBlcmwtY2MtY2hlY2tzKSBvciBidWlsZCB3aXRob3V0IFBlcmwgKC0td2l0aG91dC1wZXJsLW1vZHVsZXMpLl0pCi0gICAgICAJZmkKLSAgICAgIGZpCi1maQotCi0jIGNoZWNrIGlmIHRoZXkncmUgYm90aCBnbnUKLWlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KLSAgICAgIGlmIHRlc3QgIngkR0NDIiAhPSAieHllcyIgLWEgIngkcGVybGNjX2lzX2dudSIgPSAieHllcyIgOyB0aGVuCi0gICAgICAJaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgCSAgaW5zdGFsbF9wZXJsPSJubyIKLSAgICAgIAllbHNlCi0gICAgICAgICAgQUNfTVNHX0VSUk9SKFtUaGlzIGJ1aWxkIGlzIHVzaW5nIGEgbm9uLUdOVSBDIGNvbXBpbGVyICgkQ0MpIHdoaWxlIFBlcmwgaGFzIGJlZW4gY29tcGlsZWQgd2l0aCBhIEdOVSBjb21waWxlciAoJFBFUkxDQykuIFRoaXMgbGlrZWx5IHdvbid0IHdvcmsgZm9yIGJ1aWxkaW5nIHdpdGggUGVybCBzdXBwb3J0LiBFaXRoZXIgc3BlY2lmeSBhIGRpZmZlcmVudCBjb21waWxlciAoLS13aXRoLWNjPVBBVEgpLCBkaXNhYmxlIHRoaXMgY2hlY2sgKC0tZGlzYWJsZS1wZXJsLWNjLWNoZWNrcykgb3IgYnVpbGQgd2l0aG91dCBQZXJsICgtLXdpdGhvdXQtcGVybC1tb2R1bGVzKS5dKQotICAgICAgCWZpCi0gICAgICBmaQotZmkKLQotIyB3ZSBoYXZlIGVub3VnaCBzdXBwb3J0IGZvciBpbnN0YWxsaW5nIHRoZSBtb2R1bGVzIGF0IGxlYXN0LgotaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICBpbnN0YWxsX3Blcmw9InllcyIKLWVsc2UKLSAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInhubyIgOyB0aGVuCi0gICAgaW5zdGFsbF9wZXJsPSJubyIKLSAgICBlbWJlZF9wZXJsPSJubyIKLSAgZmkKLWZpCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIG9uIHRvIGVtYmVkZGluZy4uLgotCi0jIGNoZWNrIHRoZSBjb21waWxlciBmbGFncyBmb3IgaWxsZWdhbCB0b2tlbnMKLWNhc2UgJHRhcmdldF9vcyBpbgotICAgIHNvbGFyaXMqKQotICAgICAgaWYgdGVzdCAieCRlbWJlZF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KLSAgICAgICAgICAjCi0gICAgICAgICAgIyBQZXJsIGNjIGNoZWNrcwotICAgICAgICAgICMKLSAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwcm9ibGVtYXRpYyBQZXJsIGNjIGZsYWdzIG9uIFN1bnNdKQotICAgICAgICAgIGlmICRteXBlcmwgLVY6Y2NmbGFncyB8IGdyZXAgTEFSR0VGSUxFID4gL2Rldi9udWxsIDsgdGhlbgotICAgICAgICAgICAgaWYgdGVzdCAieCRlbWJlZF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KLSAgICAgICAgICAgICAgZW1iZWRfcGVybD0ibm8iCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIEFDX01TR19FUlJPUihbUGVybCB3YXMgY29tcGlsZWQgd2l0aCBMQVJHRUZJTEUgc3VwcG9ydCB3aGljaCB3aWxsIGJyZWFrIE5ldC1TTk1QLiBFaXRoZXIgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQRVJMUFJPRyB0byBhIGRpZmZlcmVudCBwZXJsIGJpbmFyeSBvciB1c2UgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgdG8gdHVybiBvZmYgZW1iZWRkZWQgUGVybCBmdW5jdGlvbmFsaXR5IGFsdG9nZXRoZXIuXSkKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbbm9uZSBrbm93bl0pCi0gICAgICAgICAgZmkKLSAgICAgIGZpCi0gICAgOzsKLQotICAgICopCi0gICAgOzsKLWVzYWMKLQotCi0jIGNoZWNrIHRoZSBjZmxhZ3MKLWlmIHRlc3QgIngkZW1iZWRfcGVybCIgIT0gInhubyIgOyB0aGVuCi0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUGVybCBDRkxBR1NdKQotICAgIHBlcmxjZmxhZ3M9YCRteXBlcmwgLU1FeHRVdGlsczo6RW1iZWQgLWUgY2NvcHRzYAotICAgIGlmIHRlc3QgIngkcGVybGNmbGFncyIgIT0gIngiIDsgdGhlbgotICAgICAgQUNfTVNHX1JFU1VMVChbJHBlcmxjZmxhZ3NdKQotICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRwZXJsY2ZsYWdzIgotICAgIGVsc2UKLSAgICAgIGlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gICAgICAgIGVtYmVkX3Blcmw9Im5vIgotICAgICAgZWxzZQotICAgICAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIEMgY29tcGlsZXIgZmxhZ3MgdGhhdCB3ZXJlIHVzZWQgdG8gYnVpbGQgJG15cGVybC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgUGVybCBiaW5hcnkgb3IgdXNlIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsIHRvIHR1cm4gb2ZmIGVtYmVkZGVkIFBlcmwgZnVuY3Rpb25hbGl0eSBhbHRvZ2V0aGVyLl0pCi0gICAgICBmaQotICAgIGZpCi1maQotCi0jIGNoZWNrIHRoZSBsZGZsYWdzCi1pZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgotICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFBlcmwgTERGTEFHU10pCi0gICAgbmV0c25tcF9wZXJsbGRvcHRzPWAkbXlwZXJsIC1NRXh0VXRpbHM6OkVtYmVkIC1lIGxkb3B0c2AKLSAgICBpZiB0ZXN0ICJ4JG5ldHNubXBfcGVybGxkb3B0cyIgIT0gIngiIDsgdGhlbgotICAgICAgQUNfTVNHX1JFU1VMVChbJG5ldHNubXBfcGVybGxkb3B0c10pCi0gICAgZWxzZQotICAgICAgaWYgdGVzdCAieCRlbWJlZF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KLSAgICAgICAgZW1iZWRfcGVybD0ibm8iCi0gICAgICBlbHNlCi0gICAgICAgIEFDX01TR19FUlJPUihbQ291bGQgbm90IGRldGVybWluZSB0aGUgbGlua2VyIG9wdGlvbnMgdGhhdCB3ZXJlIHVzZWQgdG8gYnVpbGQgJG15cGVybC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgUGVybCBiaW5hcnkgb3IgdXNlIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsIHRvIHR1cm4gb2ZmIGVtYmVkZGVkIFBlcmwgZnVuY3Rpb25hbGl0eSBhbHRvZ2V0aGVyLl0pCi0gICAgICBmaQotICAgIGZpCi0gICAgaWYgdGVzdCAieCRlbmFibGVfYXNfbmVlZGVkIiA9ICJ4eWVzIiA7IHRoZW4KLSAgICAgICMgbGluayAqbGlicmFyaWVzKiB3aXRoIGxpYnBlcmwKLSAgICAgIFBFUkxMRE9QVFNfRk9SX0xJQlM9IiRuZXRzbm1wX3BlcmxsZG9wdHMiCi0gICAgICAjIFBlcmwgY2NkbGZsYWdzIChSUEFUSCB0byBsaWJwZXJsLCBob3BlZnVsbHkpCi0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBQZXJsIENDRExGTEFHU10pCi0gICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgIG5ldHNubXBfcGVybGNjZGxmbGFncz1gJG15cGVybCAtVjpjY2RsZmxhZ3MgfCAkbXlwZXJsIC1uIC1lICdwcmludCAkMSAnImlmICgvXlxzKmNjZGxmbGFncz0nKFteJ10rKSc7Lyk7ImAKLSAgICAgIGNoYW5nZXF1b3RlKFssIF0pCi0gICAgICBBQ19NU0dfUkVTVUxUKFskbmV0c25tcF9wZXJsY2NkbGZsYWdzXSkKLSAgICAgIFBFUkxMRE9QVFNfRk9SX0FQUFM9IiRuZXRzbm1wX3BlcmxjY2RsZmxhZ3MiCi0gICAgZWxzZQotICAgICAgIyBsaW5rICphcHBsaWNhdGlvbnMqIGFnYWluc3QgbGlicGVybAotICAgICAgUEVSTExET1BUU19GT1JfQVBQUz0iJG5ldHNubXBfcGVybGxkb3B0cyIKLSAgICBmaQotZmkKLQotIyBjaGVjayBuZWVkZWQgZnVuY3Rpb25zCi1pZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgotICAgIE9MRExJQlM9IiRMSUJTIgotICAgIExJQlM9IiRMSUJTICRuZXRzbm1wX3BlcmxsZG9wdHMiCi0KLSAgICAjIG5ld2VyIHBlcmwgdnMgb2xkZXIgcGVybCBjYWxsIGZ1bmN0aW9ucwotICAgIEFDX0NIRUNLX0ZVTkNTKGV2YWxfcHYpCi0KLSAgICAjIHNpZ2g6IHRoaXMgaGFzIGEgQ0FQSVRBTCBQIGluIFBlcmwsIHdoaWNoIGVuZHMgdXAgYmVpbmcgdGhlIHNhbWUKLSAgICAjIGF1dG9jb25mIGRlZmluZSBhcyB0aGUgbG93ZXIgY2FzZSBzbyB3ZSBoYXZlIHRvIHRyZWF0IHRoZW0gKkJPVEgqCi0gICAgIyBzcGVjaWFsbHkuICBXb25kZXJmdWwuCi0gICAgQUNfQ0hFQ0tfRlVOQyhwZXJsX2V2YWxfcHYsIEFDX0RFRklORShIQVZFX1BFUkxfRVZBTF9QVl9MQykpCi0gICAgQUNfQ0hFQ0tfRlVOQyhQZXJsX2V2YWxfcHYsIEFDX0RFRklORShIQVZFX1BFUkxfRVZBTF9QVl9VQykpCi0KLSAgICBMSUJTPSIkT0xETElCUyIKLQotCi0gICAgaWYgdGVzdCAieCRhY19jdl9mdW5jX3BlcmxfZXZhbF9wdiIgIT0gInh5ZXMiIC1hICJ4JGFjX2N2X2Z1bmNfUGVybF9ldmFsX3B2IiAhPSAieHllcyIgLWEgIngkYWNfY3ZfZnVuY19ldmFsX3B2IiAhPSAieHllcyIgOyB0aGVuCi0gICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgICBlbWJlZF9wZXJsPSJubyIKLSAgICAgIGVsc2UKLSAgICAgICAgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCB0aGUgZXZhbF9wdiwgcGVybF9ldmFsX3B2IG9yIFBlcmxfZXZhbF9wdiBmdW5jdGlvbnMgbmVlZGVkIGZvciBlbWJlZGRlZCBQZXJsIHN1cHBvcnQuIEVpdGhlciBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBFUkxQUk9HIHRvIGEgZGlmZmVyZW50IHBlcmwgYmluYXJ5IG9yIHVzZSAtLWRpc2FibGUtZW1iZWRkZWQtcGVybCB0byB0dXJuIG9mZiBlbWJlZGRlZCBQZXJsIGZ1bmN0aW9uYWxpdHkgYWx0b2dldGhlci5dKQotICAgICAgZmkKLSAgICBlbHNlCi0gICAgICBBQ19ERUZJTkUoTkVUU05NUF9FTUJFRERFRF9QRVJMKQotICAgICAgT1RIRVJBR0VOVExJQk9CSlM9InNubXBfcGVybC5vIgotICAgICAgT1RIRVJBR0VOVExJQkxPQkpTPSJzbm1wX3BlcmwubG8iCi0KLSAgICAgIEVNQkVEUEVSTElOU1RBTEw9ImVtYmVkcGVybGluc3RhbGwiCi0gICAgICBFTUJFRFBFUkxVTklOU1RBTEw9ImVtYmVkcGVybHVuaW5zdGFsbCIKLSAgICAgICMgeWF5LCB3ZSBnb3QgaGVyZSEKLSAgICAgIGVtYmVkX3Blcmw9InllcyIKLSAgICBmaQotZWxzZQotICAgICAgRU1CRURQRVJMSU5TVEFMTD0iIgotICAgICAgRU1CRURQRVJMVU5JTlNUQUxMPSIiCi0gICAgICBlbWJlZF9wZXJsPSJubyIKLSAgICBmaQotZmkKLUFDX1NVQlNUKEVNQkVEUEVSTElOU1RBTEwpCi1BQ19TVUJTVChFTUJFRFBFUkxVTklOU1RBTEwpCi1BQ19TVUJTVChQRVJMTERPUFRTX0ZPUl9MSUJTKQotQUNfU1VCU1QoUEVSTExET1BUU19GT1JfQVBQUykKLQotIyBlbWJlZGRlZCBQZXJsIHJlc3VsdHMKLUFDX01TR19DSEVDS0lORyhbZm9yIHBvdGVudGlhbCBlbWJlZGRlZCBQZXJsIHN1cHBvcnRdKQotaWYgdGVzdCAieCRlbWJlZF9wZXJsIiAhPSAieHllcyIgOyB0aGVuCi0gIEFDX01TR19DQUNIRV9BREQoRW1iZWRkZWQgUGVybCBzdXBwb3J0OiAgICAgIGRpc2FibGVkKQotICBBQ19NU0dfUkVTVUxUKFtkaXNhYmxlZF0pCi1lbHNlCi0gIEFDX01TR19DQUNIRV9BREQoRW1iZWRkZWQgUGVybCBzdXBwb3J0OiAgICAgIGVuYWJsZWQpCi0gIEFDX01TR19SRVNVTFQoW2VuYWJsZWRdKQotZmkKLQotIyBpbnN0YWxsIFBlcmwgbW9kdWxlIHJlc3VsdHMKLVBFUkxUQVJHUz0iIgotUEVSTElOU1RBTExUQVJHUz0iIgotUEVSTFVOSU5TVEFMTFRBUkdTPSIiCi1BQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIGNhbiBpbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXNdKQotaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh5ZXMiIDsgdGhlbgotICAgIFBFUkxUQVJHUz0icGVybG1vZHVsZXMiCi0gICAgUEVSTElOU1RBTExUQVJHUz0icGVybGluc3RhbGwiCi0gICAgUEVSTFVOSU5TVEFMTFRBUkdTPSJwZXJsdW5pbnN0YWxsIgotICAgIGlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHllcyIgOyB0aGVuCi0gICAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUGVybCBtb2R1bGVzOiAgICAgICAgICBidWlsZGluZyAtLSBlbWJlZGRhYmxlKQotICAgICAgQUNfTVNHX1JFU1VMVChbeWVzIC0tIGFuZCBlbWJlZGRhYmxlXSkKLSAgICBlbHNlCi0gICAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUGVybCBtb2R1bGVzOiAgICAgICAgICBidWlsZGluZyAtLSBub3QgZW1iZWRkYWJsZSkKLSAgICAgIEFDX01TR19SRVNVTFQoW3llcyAtLSBub3QgZW1iZWRkYWJsZV0pCi0gICAgZmkKLWVsc2UKLSAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgQUNfTVNHX0NBQ0hFX0FERChTTk1QIFBlcmwgbW9kdWxlczogICAgICAgICAgZGlzYWJsZWQpCi1maQotQUNfU1VCU1QoUEVSTFRBUkdTKQotQUNfU1VCU1QoUEVSTElOU1RBTExUQVJHUykKLUFDX1NVQlNUKFBFUkxVTklOU1RBTExUQVJHUykKLUFDX1NVQlNUKFBFUkxBUkdTKQotCi0KLQotIyByZXNldCBsaWJzCi1BR0VOVExJQlM9JExJQlMKLUxJQlM9JE5PTkFHRU5UTElCUwotCi0KLQotIyBweXRob24gc3VwcG9ydAotUFlUSE9OVEFSR1M9IiIKLVBZVEhPTklOU1RBTExUQVJHUz0iIgotUFlUSE9OVU5JTlNUQUxMVEFSR1M9IiIKLVBZVEhPTkNMRUFOVEFSR1M9IiIKLUFDX01TR19DSEVDS0lORyhbaWYgd2Ugc2hvdWxkIGluc3RhbGwgdGhlIHB5dGhvbiBiaW5kaW5nc10pCi1pZiB0ZXN0ICJ4JGluc3RhbGxfcHl0aG9uIiA9ICJ4eWVzIiA7IHRoZW4KLSAgICBQWVRIT05UQVJHUz0icHl0aG9ubW9kdWxlcyIKLSAgICBQWVRIT05JTlNUQUxMVEFSR1M9InB5dGhvbmluc3RhbGwiCi0gICAgUFlUSE9OVU5JTlNUQUxMVEFSR1M9InB5dGhvbnVuaW5zdGFsbCIKLSAgICBQWVRIT05DTEVBTlRBUkdTPSJweXRob25jbGVhbiIKLSAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUHl0aG9uIG1vZHVsZXM6ICAgICAgICBidWlsZGluZyBmb3IgJFBZVEhPTlBST0cpCi0gICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLWVsc2UKLSAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUHl0aG9uIG1vZHVsZXM6ICAgICAgICBkaXNhYmxlZCkKLSAgICBBQ19NU0dfUkVTVUxUKFtub10pCi1maQotQUNfU1VCU1QoUFlUSE9OVEFSR1MpCi1BQ19TVUJTVChQWVRIT05JTlNUQUxMVEFSR1MpCi1BQ19TVUJTVChQWVRIT05VTklOU1RBTExUQVJHUykKLUFDX1NVQlNUKFBZVEhPTkNMRUFOVEFSR1MpCi1BQ19TVUJTVChQWVRIT05BUkdTKQotCi0KLQotIyBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KLUFDX0hFQURFUl9TVERDCi1BQ19IRUFERVJfRElSRU5UCi1BQ19IRUFERVJfU1lTX1dBSVQKLUFDX0NIRUNLX0hFQURFUlMoc3RkYXJnLmggc3RyaW5nLmggZmNudGwuaCBsaW1pdHMuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIHN5c2xvZy5oIHVuaXN0ZC5oIHN5cy9kbWFwLmggbWFjaGluZS9wdGUuaCB4dGkuaCBzeXMvc29ja2lvLmggc3lzL3NvY2tldC5oIHN5cy9wYXJhbS5oIHN5cy91aW8uaCkKLSMgYXQgbGVhc3QgU29sYXJpcyA5IG5lZWRzIHN5cy9zb2NrZXQuaCB0byBjb21waWxlIHN5cy9zb2NrZXR2YXIuaAotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc29ja2V0dmFyLmgsLCwKLUFDX0lOQ0xVREVTX0RFRkFVTFQoW10pCi1bCi0jaWYgSEFWRV9TWVNfU09DS0VUX0gKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jZW5kaWYKLV0pCi0jIGF0IGxlYXN0IE9wZW5CU0QgMy40IG5lZWRzIHN5cy9wYXJhbS5oIChNQVhQQVRITEVOKSB0byBjb21waWxlIHN5cy9zd2FwLmgKLUFDX0NIRUNLX0hFQURFUlMoc3lzL3N3YXAuaCwsLAotQUNfSU5DTFVERVNfREVGQVVMVChbXSkKLVsKLSNpZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLV0pCi1BQ19DSEVDS19IRUFERVJTKHN5cy90aW1lb3V0Lmggc3lzL3VuLmggZnN0YWIuaCBzeXMvZnMuaCBtdGFiLmggdWZzL2ZzLmggc3lzL2ZpeHBvaW50LmggbWFjaGluZS9wYXJhbS5oIHN5cy92bS5oIHZtL3ZtLmggc3lzL3ZtbWV0ZXIuaCBzeXMvdm1wYXJhbS5oIHN5cy92bW1hYy5oIHN5cy92bXN5c3RtLmggc3lzL3RpbWUuaCBzeXMvdGltZXMuaCBzeXMvc3RhdHZmcy5oIHN5cy92ZnMuaCBzeXMvbW50dGFiLmggc3lzL3NlbGVjdC5oIG1udGVudC5oIHN5cy9tbnRlbnQuaCBrc3RhdC5oIHV0c25hbWUuaCBzeXMvdXRzbmFtZS5oIHN5cy9jZGVmcy5oIGdldG9wdC5oIGxvY2FsZS5oIHB0aHJlYWQuaCBzeXMvbG9hZGF2Zy5oIHJlZ2V4LmggbGludXgvdGFza3MuaCBwd2QuaCBncnAuaCB1dG1weC5oKQotIyBOZXR3b3JrIGhlYWRlcnMKLUFDX0NIRUNLX0hFQURFUlMoYXJwYS9pbmV0LmggbmV0aW5ldC9pbl9zeXN0bS5oIG5ldGluZXQvaW4uaCBuZXRpbmV0L2lwX3Zhci5oIG5ldGluZXQvdGNwLmggbmV0aW5ldC90Y3BpcC5oIG5ldGluZXQvdWRwLmggbmV0L2lmLmggbmV0aW5ldC9pbl92YXIuaCBuZXRpbmV0L2lwLmggbmV0aW5ldC9pcF9pY21wLmggbmV0L2lmX2FycC5oIG5ldC9pZl9taWIuaCBuZXQvaWZfdmFyLmggbmV0aW5ldC9pZl9ldGhlci5oIG5ldGluZXQvdGNwX3RpbWVyLmggbmV0aW5ldC90Y3BfdmFyLmggbmV0aW5ldC91ZHBfdmFyLmggbmV0aW5ldC9pY21wX3Zhci5oIG5ldGRiLmggbmV0L3JvdXRlLmgsLCwKLVtbCi0jaWYgSEFWRV9TWVNfVFlQRVNfSAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfVElNRU9VVF9ICi0jaW5jbHVkZSA8c3lzL3RpbWVvdXQuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU09DS0VUVkFSX0gKLSNpbmNsdWRlIDxzeXMvc29ja2V0dmFyLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX0FSUEFfSU5FVF9ICi0jaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSU5fU1lTVE1fSAotI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVF9JRl9ICi0jaW5jbHVkZSA8bmV0L2lmLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX0lDTVBfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfaWNtcC5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX1RDUF9ICi0jaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfSAotI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfVENQX1RJTUVSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L3RjcF90aW1lci5oPgotI2VuZGlmCi1dXSkKLSMgVUZTIGhlYWRlcnMKLUFDX0NIRUNLX0hFQURFUlModWZzL3Vmcy9kaW5vZGUuaCB1ZnMvdWZzL3F1b3RhLmggdWZzL3Vmcy9pbm9kZS5oIHVmcy9mZnMvZnMuaCwsLAotW1sKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1VGU19VRlNfRElOT0RFX0gKLSNpbmNsdWRlIDx1ZnMvdWZzL2Rpbm9kZS5oPgotI2VuZGlmCi0jaWYgSEFWRV9VRlNfVUZTX1FVT1RBX0gKLSNpbmNsdWRlIDx1ZnMvdWZzL3F1b3RhLmg+Ci0jZW5kaWYKLV1dKQotIyBGcmVlQlNEIHJlcXVpcmVkIGhlYWRlcnMKLUFDX0NIRUNLX0hFQURFUlMobWFsbG9jLmggbmV0L2lmX2RsLmggc3lzL3N5c2N0bC5oIHN0ZGxpYi5oIG5ldC9pZl90eXBlcy5oIHN5cy9xdWV1ZS5oIG9zcmVsZGF0ZS5oIG1hY2hpbmUvdHlwZXMuaCBzeXMvdXNlci5oIHN5cy9wcm9jLmggc3lzL21idWYuaCBzeXMvbW91bnQuaCBzeXMvZGtzdGF0Lmggc3lzL2NvbmYuaCwsLAotW1sKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLV1dKQotIyBMaW51eAotQUNfQ0hFQ0tfSEVBREVSUyhuZXRpbmV0L3RjcF9mc20uaCBzeXMvcHJvdG9zdy5oIG5saXN0LmggaW9jdGxzLmggYXNtL3BhZ2UuaCBhc20vdHlwZXMuaCBuZXRpcHgvaXB4LmggcGNpL3BjaS5oKQotIyBTb2xhcmlzCi1BQ19DSEVDS19IRUFERVJTKGluZXQvbWliMi5oKQotIyBOZXRCU0QgcmVxdWlyZWQgaGVhZGVycwotQUNfQ0hFQ0tfSEVBREVSUyhrdm0uaCBzeXMvcG9vbC5oIHV2bS91dm1fcGFyYW0uaCB1dm0vdXZtX2V4dGVybi5oIHZtL3ZtX3BhcmFtLmggdm0vdm1fZXh0ZXJuLmgpCi0jIEJTRGkyIGhlYWRlcnMKLUFDX0NIRUNLX0hFQURFUlModm0vc3dhcF9wYWdlci5oLCwsCi1bWwotI2lmIEhBVkVfVk1fVk1fSAotI2luY2x1ZGUgPHZtL3ZtLmg+Ci0jZW5kaWYKLV1dKQotIyBsaW51eCBldGh0b29sCi0jIHJlcXVpcmVzIHNwZWNpYWwgaGFja3MgdG8gZ2V0IGFyb3VuZCB2YXJpb3VzIHByb2JsZW1zIG9uIG9sZGVyIGxpbnV4IGtlcm5lbHMuCi0jIG1ham9yIHVnaC4uLi4KLUFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L2V0aHRvb2wuaF0sLCwKLVtbCi0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLXR5cGVkZWYgX191NjQgdTY0OyAgICAgICAgIC8qIGhhY2ssIHNvIHdlIG1heSBpbmNsdWRlIGtlcm5lbCdzIGV0aHRvb2wuaCAqLwotdHlwZWRlZiBfX3UzMiB1MzI7ICAgICAgICAgLyogZGl0dG8gKi8KLXR5cGVkZWYgX191MTYgdTE2OyAgICAgICAgIC8qIGRpdHRvICovCi10eXBlZGVmIF9fdTggdTg7ICAgICAgICAgICAvKiBkaXR0byAqLwotXV0pCi0jIEJTRGkzIGhlYWRlcnMKLUFDX0NIRUNLX0hFQURFUlMoc3lzL3N0YXQuaCkKLSMgQlNEaTMvSVJJWCBoZWFkZXJzCi0jIGF0IGxlYXN0IElSSVggNi41IG5lZWRzIF9LTUVNVVNFUiBhbmQgc3lzL3R5cGVzLmggKG1wcm90X3QpIHRvIGNvbXBpbGUgCi0jICAgc3lzL3Zub2RlLmgKLUFDX0NIRUNLX0hFQURFUlMoc3lzL3Zub2RlLmgsLCwKLVsKLSNkZWZpbmUgX0tNRU1VU0VSIDEKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLV0pCi0jIGF0IGxlYXN0IElSSVggNi41IG5lZWRzIHN5cy9zZW1hLmggKG1ybG9ja190KSB0byBjb21waWxlIHN5cy9oYXNoaW5nLmgKLUFDX0NIRUNLX0hFQURFUlMoc3lzL3NlbWEuaCkKLUFDX0NIRUNLX0hFQURFUlMoc3lzL2hhc2hpbmcuaCwsLAotQUNfSU5DTFVERVNfREVGQVVMVChbXSkKLVsKLSNpZiBIQVZFX1NZU19TRU1BX0gKLSNpbmNsdWRlIDxzeXMvc2VtYS5oPgotI2VuZGlmCi1dKQotIyBtb3JlIElSSVggaGVhZGVycwotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvdGNwaXBzdGF0cy5oIHN5cy9zeXNtcC5oIHN5cy9zeXN0ZW1pbmZvLmggc3lzL3N5c2dldC5oKQotIyBBSVggc3lzdGVtIGNvbmZpZ3VyYXRpb24KLUFDX0NIRUNLX0hFQURFUlMoc3lzL3N5c3RlbWNmZy5oKQotIyBmcm9tIHNtdXggc3R1ZmYKLUFDX0NIRUNLX0hFQURFUlMoZXJyLmggc3lzL2ZpbGlvLmggc2d0dHkuaCkKLSMgQUlYIG5lZWRzIHRoaXMgZm9yIHN0YXRmcyBmdW5jCi1BQ19DSEVDS19IRUFERVJTKHN5cy9zdGF0ZnMuaCkKLSMgZm9yIEhvc3RSZXMgKEhQLVVYIGF0IGxlYXN0KQotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvZGtpby5oIHN5cy9kaXNraW8uaCBzeXMvcHN0YXQuaCBsaW51eC9oZHJlZy5oIHBrZ2xvY3MuaCkKLSMgZm9yIEhvc3RSZXMgKFNvbGFyaXMgMi54IGF0IGxlYXN0KQotQUNfQ0hFQ0tfSEVBREVSUyhwa2dpbmZvLmgsCi0gICAgQUNfQ0hFQ0tfTElCKGFkbSwgcGtnaW5mbywgQUNfREVGSU5FKEhBVkVfUEtHSU5GTykKLSAgICBMTUlCTElCUz0iJHtMTUlCTElCU30gLWxhZG0iKSkKLQotY2FzZSAkdGFyZ2V0X29zIGluCi0gICAgYWl4KikgIyBBSVggcGVyZnN0YXQgbGlicmFyeSwgbmVlZGVkIGZvciBDUFUvbWVtb3J5IHN0YXRpc3RpY3MKLSAgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhsaWJwZXJmc3RhdC5oLAotICAgICAgICAgICAgQUNfQ0hFQ0tfTElCKHBlcmZzdGF0LCBwZXJmc3RhdF9jcHVfdG90YWwsIEFDX0RFRklORShIQVZFX1BFUkZTVEFUKQotICAgICAgICAgICAgTE1JQkxJQlM9IiR7TE1JQkxJQlN9IC1scGVyZnN0YXQiKSwgQUNfTVNHX0VSUk9SKFsKLQotKioqIFRvIG1vbml0b3IgQ1BVL21lbW9yeSB2YWx1ZXMgaW4gQUlYIHlvdSBuZWVkIHRvIGluc3RhbGwKLSoqKiBsaWJwZXJmc3RhdCB3aGljaCBjYW4gYmUgZm91bmQgaW4gYm9zLnBlcmYKLV0pKQotICAgICAgICA7OwotICAgIGhwdXgqKSAjIEhQLVVYIGFnZW50IG5lZWRzIG9wZW5fbWliCi0gICAgICAgIEFDX0NIRUNLX0xJQihubSwgb3Blbl9taWIsIEFDX0RFRklORShIQVZFX0xJQk5NKQotICAgICAgICAgICAgTE1JQkxJQlM9IiR7TE1JQkxJQlN9IC1sbm0iKQotICAgICAgICA7OwotICAgICopCi0gICAgICAgIDs7Ci1lc2FjCi0jIFdJTjMyCi0jIChtaW5ndzMyIG11c3QgbGluayB3aW5zb2NrIGV4cGxpY2l0bHkpCi1BQ19DSEVDS19IRUFERVJTKHdpbnNvY2suaCxbCi0gICAgICAgIEFHRU5UTElCUz0iJHtBR0VOVExJQlN9IC1saXBobHBhcGkiCi0gICAgICAgIGNhc2UgJHRhcmdldF9vcyBpbgotICAgICAgICAgICAgICAgIG1pbmd3KikKLSAgICAgICAgICAgICAgICAgICAgICAgIExJQlM9IiR7TElCU30gLWxyZWdleCAtbHdzMl8zMiIKLSAgICAgICAgICAgICAgICAgICAgICAgIEFHRU5UTElCUz0iJHtBR0VOVExJQlN9IC1scmVnZXggLWx3czJfMzIiCi0gICAgICAgICAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgICAgICopCi0gICAgICAgICAgICAgICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi1dKQotQUNfQ0hFQ0tfSEVBREVSUyhpby5oKQotIyBTQ08KLUFDX0NIRUNLX0hFQURFUlMoc3lzL3N0cmVhbS5oKQotIyBLQU1FCi1BQ19DSEVDS19IRUFERVJTKG5ldGluZXQvaXA2LmggbmV0aW5ldDYvaW42X3Zhci5oIG5ldGluZXQ2L2luNl9wY2IuaCBuZXRpbmV0Ni9pcDZfdmFyLmggbmV0aW5ldDYvdGNwNi5oIG5ldGluZXQ2L3RjcDZfZnNtLmggbmV0aW5ldDYvbmQ2LmggbmV0aW5ldDYvdGNwNl90aW1lci5oIG5ldGluZXQ2L3RjcDZfdmFyLmgsLCwKLVtbCi0jaWYgSEFWRV9TWVNfVFlQRVNfSAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfUVVFVUVfSAotI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVA2X0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwNi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRfSUZfSAotI2luY2x1ZGUgPG5ldC9pZi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRfUk9VVEVfSAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotI2VuZGlmCi1dXSkKLSMgRFlOQU1JQyBNT0RVTEUgU1VQUE9SVAotQUNfQ0hFQ0tfSEVBREVSUyhkbGZjbi5oKQotIyB0YWJsZV9hcnJheSBoZWxwZXIgc3VwcG9ydAotQUNfQ0hFQ0tfSEVBREVSUyhzZWFyY2guaCkKLQotIyBSUE0gc3ViZGlyZWN0b3J5IHBhdGggKHNpZ2gpCi1pZiB0ZXN0ICJ4JHdpdGhfcnBtIiAhPSAieG5vIiAmJiBcCi0gICAgICAgIGVjaG8gIiAkbW9kdWxlX2xpc3QgIiB8IGdyZXAgIiBob3N0L2hyX3N3aW5zdCAiID4gL2Rldi9udWxsOyB0aGVuCi0gIEFDX0NIRUNLX0hFQURFUlMocnBtL3JwbXRzLmgsIFtdLCBbXSwgW1sjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPl1dKQotZmkKLQotIyBPcGVuQlNEIDIuNiBuZWVkcyBuZXRpbmV0L2luLmggYmVmb3JlIG5ldGluZXQvaW5fcGNiLmgKLUFDX01TR19DSEVDS0lORyhbW2ZvciBuZXRpbmV0L2luX3BjYi5oXV0pCi1BQ19DQUNIRV9WQUwoY3ZfaGF2ZV9uZXRpbmV0X2luX3BjYl9oLAotWyBBQ19UUllfQ1BQKCBbCi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2luY2x1ZGUgPG5ldGluZXQvaW5fcGNiLmg+Ci1dLCBjdl9oYXZlX25ldGluZXRfaW5fcGNiX2g9eWVzLCBjdl9oYXZlX25ldGluZXRfaW5fcGNiX2g9bm8pXSkKLUFDX01TR19SRVNVTFQoJGN2X2hhdmVfbmV0aW5ldF9pbl9wY2JfaCkKLWlmIHRlc3QgJGN2X2hhdmVfbmV0aW5ldF9pbl9wY2JfaCA9IHllczsgdGhlbgotICBBQ19ERUZJTkUoSEFWRV9ORVRJTkVUX0lOX1BDQl9IKQotZmkKLQotIyBOZXRCU0QgbmVlZHMgbWFjaGluZS90eXBlcy5oIGJlZm9yZSBzeXMvZGlza2xhYmVsLmgKLUFDX01TR19DSEVDS0lORyhbW2ZvciBzeXMvZGlza2xhYmVsLmhdXSkKLUFDX0NBQ0hFX1ZBTChjdl9oYXZlX3N5c19kaXNrbGFiZWxfaCwKLVsgQUNfVFJZX0NQUCggWwotI2luY2x1ZGUgPG1hY2hpbmUvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvZGlza2xhYmVsLmg+Ci1dLCBjdl9oYXZlX3N5c19kaXNrbGFiZWxfaD15ZXMsIGN2X2hhdmVfc3lzX2Rpc2tsYWJlbF9oPW5vKV0pCi1BQ19NU0dfUkVTVUxUKCRjdl9oYXZlX3N5c19kaXNrbGFiZWxfaCkKLWlmIHRlc3QgJGN2X2hhdmVfc3lzX2Rpc2tsYWJlbF9oID0geWVzOyB0aGVuCi0gIEFDX0RFRklORShIQVZFX1NZU19ESVNLTEFCRUxfSCkKLWZpCi0KLSMgT3BlblNTTAotQUNfQ0hFQ0tfSEVBREVSUyhvcGVuc3NsL2htYWMuaCBvcGVuc3NsL2V2cC5oIG9wZW5zc2wvYWVzLmggb3BlbnNzbC9kZXMuaCBvcGVuc3NsL2RoLmgpCi1BQ19DSEVDS19IRUFERVJTKHNlY3VyaXR5L2NyeXB0b2tpLmgpCi0KLSMgUHJpbnRpbmcKLUFDX1BBVEhfUFJPRyhbTFBTVEFUX1BBVEhdLGxwc3RhdCkKLWlmIHRlc3QgeCRMUFNUQVRfUEFUSCAhPSB4OyB0aGVuCi0gICAgQUNfREVGSU5FX1VOUVVPVEVEKExQU1RBVF9QQVRILCIkTFBTVEFUX1BBVEgiKQotICAgIEFDX0RFRklORShIQVZFX0xQU1RBVCkKLWZpCi1BQ19DSEVDS19GVU5DUyhjZ2V0bmV4dCkKLWlmIHRlc3QgLXIgL2V0Yy9wcmludGNhcDsgdGhlbgotICAgIEFDX0RFRklORShIQVZFX1BSSU5UQ0FQKQotZmkKLQotQUNfTVNHX0NIRUNLSU5HKFtmb3IgYXV0aGVudGljYXRpb24gc3VwcG9ydF0pCi11c2VvcGVuc3NsPW5vCi11c2Vwa2NzPW5vCi1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9wa2NzMTFfQ19Jbml0aWFsaXplIiAhPSAieHllcyIgLW8gIngkYWNfY3ZfaGVhZGVyX3NlY3VyaXR5X2NyeXB0b2tpX2giICE9ICJ4eWVzIjsgdGhlbgotICAgIGlmIHRlc3QgIngkYXNrZWRwa2NzIiA9ICJ4eWVzIjsgdGhlbgotICAgICAgIEFDX01TR19FUlJPUihBc2tlZCB0byB1c2UgUEtDUzExIGJ1dCBJIGNvdWxkbid0IGZpbmQgaXQuKQotICAgIGZpCi1lbHNlCi0gICAgaWYgdGVzdCAieCRhc2tlZHBrY3MiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgIHVzZXBrY3M9eWVzCi0gICAgZmkKLWZpCi0KLWlmIHRlc3QgIngkYWNfY3ZfbGliX2NyeXB0b19FVlBfbWQ1IiAhPSAieHllcyIgLW8gIngkYWNfY3ZfaGVhZGVyX29wZW5zc2xfaG1hY19oIiAhPSAieHllcyIgLW8gIngkYWNfY3ZfaGVhZGVyX29wZW5zc2xfaG1hY19oIiAhPSAieHllcyI7IHRoZW4KLSAgICBpZiB0ZXN0ICJ4JGFza2Vkb3BlbnNzbCIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgQUNfTVNHX0VSUk9SKEFza2VkIHRvIHVzZSBPcGVuU1NMIGJ1dCBJIGNvdWxkbid0IGZpbmQgaXQuKQotICAgIGZpCi1lbHNlCi0gICAgaWYgdGVzdCAieCRhc2tlZG9wZW5zc2wiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgIHVzZW9wZW5zc2w9eWVzCi0gICAgZWxpZiB0ZXN0ICJ4JHRyeW9wZW5zc2wiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgIGlmIHRlc3QgIngkdXNlcGtjcyIgIT0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICB1c2VvcGVuc3NsPXllcwotICAgICAgICBmaQotICAgIGZpCi1maQotCi1pZiB0ZXN0ICJ4JHVzZW9wZW5zc2wiICE9ICJ4bm8iIDsgdGhlbgotICAgIGF1dGhtb2Rlcz0iTUQ1IFNIQTEiCi0gICAgaWYgdGVzdCAieCRlbmFibGVfcHJpdmFjeSIgIT0gInhubyIgOyB0aGVuCi0gICAgICAgIGlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX29wZW5zc2xfYWVzX2giID0gInh5ZXMiIDsgdGhlbgotICAgICAgICAgICAgZW5jcm1vZGVzPSJERVMgQUVTIgotCWVsc2UKLQkgICAgZW5jcm1vZGVzPSJERVMiCi0JZmkKLSAgICBlbHNlCi0gICAgICAgIGVuY3Jtb2Rlcz0iW2Rpc2FibGVkXSIKLSAgICBmaQotICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9PUEVOU1NMKQotICAgIExORVRTTk1QTElCUz0iJExORVRTTk1QTElCUyAkTElCQ1JZUFRPIgotICAgIEFDX01TR19SRVNVTFQoT3BlblNTTCBTdXBwb3J0KQotZWxpZiB0ZXN0ICJ4JHVzZXBrY3MiICE9ICJ4bm8iIDsgdGhlbgotICAgIGF1dGhtb2Rlcz0iTUQ1IFNIQTEiCi0gICAgaWYgdGVzdCAieCRlbmFibGVfcHJpdmFjeSIgIT0gInhubyIgOyB0aGVuCi0gICAgICAgIGVuY3Jtb2Rlcz0iREVTIgotICAgIGVsc2UKLSAgICAgICAgZW5jcm1vZGVzPSJbZGlzYWJsZWRdIgotICAgIGZpCi0gICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX1BLQ1MxMSkKLSAgICBMTkVUU05NUExJQlM9IiRMTkVUU05NUExJQlMgJExJQlBLQ1MxMSIKLSAgICBBQ19NU0dfUkVTVUxUKFBLQ1MxMSBTdXBwb3J0KQotZWxpZiB0ZXN0ICJ4JGVuYWJsZV9tZDUiICE9ICJ4bm8iOyB0aGVuCi0gICAgYXV0aG1vZGVzPSJNRDUiCi0gICAgZW5jcm1vZGVzPSIiCi0gICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENSkKLSAgICBBQ19NU0dfUkVTVUxUKEludGVybmFsIE1ENSBTdXBwb3J0KQotZmkKLWlmIHRlc3QgIngkZW5hYmxlX21kNSIgPSAieG5vIjsgdGhlbgotICAgIGF1dGhtb2Rlcz1gZWNobyAkYXV0aG1vZGVzIHwgc2VkICdzL01ENSAqLy87J2AKLWZpCi1BQ19TVUJTVChMTkVUU05NUExJQlMpCi1BQ19TVUJTVChMQUdFTlRMSUJTKQotCi1BQ19NU0dfQ0FDSEVfQUREKEF1dGhlbnRpY2F0aW9uIHN1cHBvcnQ6ICAgICAkYXV0aG1vZGVzKQotQUNfTVNHX0NBQ0hFX0FERChFbmNyeXB0aW9uIHN1cHBvcnQ6ICAgICAgICAgJGVuY3Jtb2RlcykKLQotaWYgdGVzdCAieCRhbGxfd2FybmluZ3MiICE9ICJ4IjsgdGhlbgotICAgIEFDX01TR19DQUNIRV9BREQoV0FSTklORzogJGFsbF93YXJuaW5ncykKLWZpCi0KLSMgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KLUFDX1RZUEVfT0ZGX1QKLUFDX1RZUEVfUElEX1QKLUFDX0hFQURFUl9USU1FCi0KLSMgdGhpcyBzaG91bGQgdXNlIEFDX0NIRUNLX1RZUEUsIGJ1dCBpdCdzIGJyb2tlbiBhdCBsZWFzdCBpbiAyLjEzLTE0Ci0jIHNvIHdlIGRvIGl0IGJ5IGhhbmQuCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzb2NrbGVuX3RdKQotQUNfQ0FDSEVfVkFMKGFjX2N2X3R5cGVfJDEsCi1bQUNfRUdSRVBfQ1BQKFtzb2NrbGVuX3RAPDpAXmEtekEtWl8wLTlAOj5AXSwKLVsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgU1REQ19IRUFERVJTCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNlbmRpZl0sIFthY19jdl90eXBlX3NvY2tsZW5fdD15ZXNdLCBbYWNfY3ZfdHlwZV9zb2NrbGVuX3Q9bm9dKV0pCi0KLUFDX01TR19SRVNVTFQoWyRhY19jdl90eXBlX3NvY2tsZW5fdF0pCi1pZiB0ZXN0ICRhY19jdl90eXBlX3NvY2tsZW5fdCA9IHllczsgdGhlbgotICBBQ19ERUZJTkUoSEFWRV9TT0NLTEVOX1QpCi1maQotCi0jIEFJWCBrZWVwcyBpbl9hZGRyX3QgaW4gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotQUNfTVNHX0NIRUNLSU5HKFtmb3IgaW5fYWRkcl90XSkKLUFDX0NBQ0hFX1ZBTChhY19jdl90eXBlXyQxLAotW0FDX0VHUkVQX0NQUChbaW5fYWRkcl90QDw6QF5hLXpBLVpfMC05QDo+QF0sCi1bI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIFNURENfSEVBREVSUwotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWZdLCBbYWNfY3ZfdHlwZV9pbl9hZGRyX3Q9eWVzXSwgW2FjX2N2X3R5cGVfaW5fYWRkcl90PW5vXSldKQotCi1BQ19NU0dfUkVTVUxUKFskYWNfY3ZfdHlwZV9pbl9hZGRyX3RdKQotaWYgdGVzdCAkYWNfY3ZfdHlwZV9pbl9hZGRyX3QgPSB5ZXM7IHRoZW4KLSAgQUNfREVGSU5FKEhBVkVfSU5fQUREUl9UKQotZmkKLQotIyBPbGRlciB2ZXJzaW9ucyBvZiBNaW5HVyBkbyBub3QgZGVmaW5lIHNzaXplX3QgaW4gc3lzL3R5cGVzCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzc2l6ZV90XSkKLUFDX0NBQ0hFX1ZBTChhY19jdl90eXBlXyQxLAotW0FDX0VHUkVQX0NQUChbc3NpemVfdEA8OkBeYS16QS1aXzAtOUA6PkBdLAotWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBTVERDX0hFQURFUlMKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRkZWYuaD4KLSNlbmRpZl0sIFthY19jdl90eXBlX3NzaXplX3Q9eWVzXSwgW2FjX2N2X3R5cGVfc3NpemVfdD1ub10pXSkKLQotQUNfTVNHX1JFU1VMVChbJGFjX2N2X3R5cGVfc3NpemVfdF0pCi1pZiB0ZXN0ICRhY19jdl90eXBlX3NzaXplX3QgPSB5ZXM7IHRoZW4KLSAgQUNfREVGSU5FKEhBVkVfU1NJWkVfVCwgMSwgW0RlZmluZSBpZiB0eXBlIHNzaXplX3QgaXMgYXZhaWxhYmxlXSkKLWZpCi0KLSMgQ2hlY2sgcHMgYXJncwotQUNfQ0FDSEVfQ0hFQ0soW2ZvciBjb3JyZWN0IGZsYWdzIHRvIHBzXSwgYWNfY3ZfcHNfZmxhZ3MsCi1baWYgdGVzdCAiYCgkUFNQUk9HIC1lIDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KLSAgYWNfY3ZfcHNfZmxhZ3M9Ii1lIgotZWxpZiB0ZXN0ICJgKCRQU1BST0cgLWVsIDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KLSAgYWNfY3ZfcHNfZmxhZ3M9Ii1lbCIKLWVsaWYgdGVzdCAiYCgkUFNQUk9HIGFjeCAyPiYxKSB8ICRFR1JFUCAnIChwcykgKiQnIHwgYXdrICd7cHJpbnQgJE5GfSdgIiA9ICJwcyIgOyB0aGVuCi0gIGFjX2N2X3BzX2ZsYWdzPSJhY3giCi1lbGlmIHRlc3QgImAoJFBTUFJPRyAtYWN4IDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KLSAgYWNfY3ZfcHNfZmxhZ3M9Ii1hY3giCi1lbGlmIHRlc3QgImAoJFBTUFJPRyAtbyBwaWQsdHQsc3RhdGUsdGltZSx1Y29tbSAyPiYxKSB8ICRFR1JFUCAnIHBzICokJyB8IGF3ayAne3ByaW50ICRORn0nYCIgPSAicHMiIDsgdGhlbgotICBhY19jdl9wc19mbGFncz0iLW8gcGlkLHR0LHN0YXRlLHRpbWUsdWNvbW0iCi1lbGlmIHRlc3QgImAoJFBTUFJPRyBheCAyPiYxKSB8ICRFR1JFUCAnIChwcykgKiQnIHwgYXdrICd7cHJpbnQgJE5GfSdgIiA9ICJwcyIgOyB0aGVuCi0gIGFjX2N2X3BzX2ZsYWdzPSJheCIKLWVsaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCi0gIGFjX2N2X3BzX2ZsYWdzPSItZSIKLWVsaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4gCi0gIGFjX2N2X3BzX2ZsYWdzPSItZSIKLWVsc2UKLSAgQUNfTVNHX1dBUk4oW1VuYWJsZSB0byBkZXRlcm1pbmUgdmFsaWQgcHMgZmxhZ3MuLi4gIGRlZmF1bHRpbmcuLi5dKQotICBhY19jdl9wc19mbGFncz0iLWFjeCIKLWZpCi1dKQotCi1QU0NNRD0iJFBTUFJPRyAkYWNfY3ZfcHNfZmxhZ3MiCi1BQ19TVUJTVChQU0NNRCkKLUFDX0RFRklORV9VTlFVT1RFRChQU0NNRCwgIiRQU1BST0cgJGFjX2N2X3BzX2ZsYWdzIikKLQotIyBDaGVja3MgZm9yIGJ5dGUgb3JkZXIKLWlmIHRlc3QgJGNyb3NzX2NvbXBpbGluZyA9IHllczsgdGhlbgotICBpZiB0ZXN0IHgkd2l0aF9lbmRpYW5uZXNzID0geGJpZzsgdGhlbgotICAgIEFDX0RFRklORShXT1JEU19CSUdFTkRJQU4pCi0gIGVsaWYgdGVzdCAteiAkd2l0aF9lbmRpYW5uZXNzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFtZb3UgYXJlIGNyb3NzLWNvbXBpbGluZywgYnV0IHlvdSBoYXZlIG5vdCBzcGVjaWZpZWQgdGhlIHRhcmdldCdzIGVuZGlhbm5lc3NdKQotICBmaQotZWxzZQotICBpZiB0ZXN0ICR3aXRoX2VuZGlhbm5lc3M7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoW0VuZGlhbm5lc3MgaGFzIGJlZW4gc3BlY2lmaWVkLCBidXQgeW91IGFyZSBub3QgY3Jvc3MtY29tcGlsaW5nLl0pCi0gIGZpCi0gIEFDX0NfQklHRU5ESUFOCi1maQotCi0jIENoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMuCi1BQ19GVU5DX0FMTE9DQQotQUNfUFJPR19HQ0NfVFJBRElUSU9OQUwKLUFDX0ZVTkNfTUVNQ01QCi1BQ19UWVBFX1NJR05BTAotQUNfRlVOQ19HRVRNTlRFTlQKLUFDX0NIRUNLX0ZVTkNTKHNldG1udGVudCBoYXNtbnRvcHQgZ2V0aG9zdG5hbWUgdW5hbWUgZ2V0dGltZW9mZGF5IHNlbGVjdCBzb2NrZXQpCi1BQ19DSEVDS19GVU5DUyhzdHJsY2F0IHN0cmxjcHkgc3RydG9sIHN0cnRvdWwpCi1BQ19DSEVDS19GVU5DUyhzdHJjaHIgc3RydG9rX3Igc3RyZHVwIG1lbWNweSBtZW1tb3ZlIGluZGV4IGJjb3B5IHN0cmNhc2VzdHIgcmVnY29tcCkKLUFDX0NIRUNLX0ZVTkNTKHNpZ25hbCBzZXRzaWQgc2lnc2V0IHNpZ2Jsb2NrIHNpZ2hvbGQgc3RyZXJyb3Igc2V0ZW52IHZzbnByaW50ZiBzbnByaW50ZikKLUFDX0NIRUNLX0ZVTkNTKHNpZ2FjdGlvbikKLUFDX0NIRUNLX0ZVTkNTKHJhbmRvbSBscmFuZDQ4IHJhbmQpCi1BQ19DSEVDS19GVU5DUyhleGVjdiBzeXN0ZW0gZm9yayBnZXRwaWQgc3RybmNhc2VjbXAgc2lnYWxybSkKLUFDX0NIRUNLX0ZVTkNTKGxzZWVrNjQgcHJlYWQ2NCkKLWlmIHRlc3QgIngkd2l0aF9ycG0iICE9ICJ4bm8iICYmIFwKLSAgICAgICAgZWNobyAiICRtb2R1bGVfbGlzdCAiIHwgZ3JlcCAiIGhvc3QvaHJfc3dpbnN0ICIgPiAvZGV2L251bGw7IHRoZW4KLSAgT0xETElCUz0kTElCUwotICBMSUJTPSRMTUlCTElCUwotICBBQ19DSEVDS19GVU5DUyhycG1HZXRQYXRoKQotICBMSUJTPSRPTERMSUJTCi1maQotCi1BQ19DSEVDS19GVU5DUyhnZXRsb2FkYXZnKQotQUNfQ0hFQ0tfRlVOQ1MoZ2V0YWRkcmluZm8gZ2V0aXBub2RlYnluYW1lIGdhaV9zdHJlcnJvcikKLSMgQlNEaTIgZnVuY3Rpb25zIGRpZmZlcgotQUNfQ0hFQ0tfRlVOQ1Moc3RhdHZmcyBzdGF0ZnMpCi1BQ19DSEVDS19GVU5DUyhnZXRkdGFibGVzaXplKQotIyBmcmVlYnNkMiBjaGVja3MKLUFDX0NIRUNLX0ZVTkNTKGdldGZzc3RhdCkKLUFDX0NIRUNLX0ZVTkNTKHVzbGVlcCkKLUFDX0NIRUNLX0ZVTkNTKHNldGxvY2FsZSkKLUFDX0NIRUNLX0ZVTkNTKHRjZ2V0YXR0cikKLUFDX0NIRUNLX0ZVTkNTKGlmX25hbWVpbmRleCBpZl9mcmVlbmFtZWluZGV4KQotQUNfQ0hFQ0tfRlVOQ1Moa2luZm9fZ2V0X2NwdXMpCi0jIHNvbGFyaXMgY2hlY2tzCi1BQ19DSEVDS19GVU5DUyhnZXRwYWdlc2l6ZSkKLUFDX0NIRUNLX0ZVTkNTKG1rc3RlbXApCi1BQ19DSEVDS19GVU5DUyhnZXRwd25hbSBnZXRncm5hbSBzZXRnaWQgc2V0dWlkIHNldGdyb3VwcykKLSMgSGlnaCByZXNvbHV0aW9uIGFsYXJtIHN1cHBvcnQKLUFDX0NIRUNLX0ZVTkNTKHNldGl0aW1lcikKLSMgZnVuY3Rpb25zIHRvIHN1cHBvcnQgdGhlIGNsb2NrLgotQUNfQ0hFQ0tfRlVOQ1MobWt0aW1lIHN0aW1lIHRpbWVzIHN5c2NvbmYpCi0jIG1pc3NpbmcgZnJvbSBocC11eAotQUNfQ0hFQ0tfRlVOQ1MoaWZfbmFtZXRvaW5kZXgpCi0jIG1pc3NpbmcgZnJvbSBNaW5HVwotQUNfQ0hFQ0tfRlVOQ1MoY2hvd24gbG9jYWx0aW1lX3IpCi0KLUFDX01TR19DSEVDS0lORyhbW2ZvciBTSU9DR0lGQUREUiBpbiBzeXMvaW9jdGwuaF1dKQotQUNfQ0FDSEVfVkFMKGN2X3N5c19pb2N0bF9oX2hhc19TSU9DR0lGQUREUiwKLVsgQUNfRUdSRVBfQ1BQKHh4eHllc3h4eCwKLVsKLSNpZmRlZiBIQVZFX1NZU19JT0NUTF9ICi0jaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0jZW5kaWYKLSNpZmRlZiBTSU9DR0lGQUREUgoteHh4eWVzeHh4Ci0jZW5kaWYKLV0sIGN2X3N5c19pb2N0bF9oX2hhc19TSU9DR0lGQUREUj15ZXMsIGN2X3N5c19pb2N0bF9oX2hhc19TSU9DR0lGQUREUj1ubyldKQotQUNfTVNHX1JFU1VMVCgkY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSKQotaWYgdGVzdCAkY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSID0geWVzOyB0aGVuCi0gIEFDX0RFRklORShTWVNfSU9DVExfSF9IQVNfU0lPQ0dJRkFERFIpCi1maQotCi0jIHVsdHJpeAotQUNfTVNHX0NIRUNLSU5HKFtbZm9yIHR3by1hcmd1bWVudCBzdGF0ZnMgd2l0aCBzdHJ1Y3QgZnNfZGF0YSAoVWx0cml4KV1dKQotQUNfQ0FDSEVfVkFMKGZ1X2N2X3N5c19zdGF0X2ZzX2RhdGEsCi1bQUNfVFJZX1JVTihbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSEFWRV9TWVNfTU9VTlRfSAotI2luY2x1ZGUgPHN5cy9tb3VudC5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfRlNfVFlQRVNfSAotI2luY2x1ZGUgPHN5cy9mc190eXBlcy5oPgotI2VuZGlmCi1tYWluICgpCi17Ci1zdHJ1Y3QgZnNfZGF0YSBmc2Q7Ci0vKiBVbHRyaXgncyBzdGF0ZnMgcmV0dXJucyAxIGZvciBzdWNjZXNzLAotICAgMCBmb3Igbm90IG1vdW50ZWQsIC0xIGZvciBmYWlsdXJlLiAgKi8KLWV4aXQgKHN0YXRmcyAoIi4iLCAmZnNkKSAhPSAxKTsKLX1dLAotZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YT15ZXMsCi1mdV9jdl9zeXNfc3RhdF9mc19kYXRhPW5vLAotZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YT1ubyldKQotQUNfTVNHX1JFU1VMVCgkZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YSkKLWlmIHRlc3QgJGZ1X2N2X3N5c19zdGF0X2ZzX2RhdGEgPSB5ZXM7IHRoZW4KLSAgQUNfREVGSU5FKFNUQVRfU1RBVEZTX0ZTX0RBVEEpCi1maQotCi0jIGNoZWNrIGlmIGNvbXBpbGVyIHByZS1wcm9jZXNzb3IgZGVmaW5lcyBfX0ZVTkNUSU9OX18KLUFDX0NBQ0hFX0NIRUNLKGlmIF9fRlVOQ1RJT05fXyBpcyBkZWZpbmVkLGFjX2N2X0hBVkVfQ1BQX1VOREVSQkFSX0ZVTkNUSU9OX0RFRklORUQsCi1bCi1BQ19UUllfQ09NUElMRSgsWwotICAgIGNoYXIgKmNwID0gX19GVU5DVElPTl9fOwotXSwgYWNfY3ZfSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRD15ZXMsIGFjX2N2X0hBVkVfQ1BQX1VOREVSQkFSX0ZVTkNUSU9OX0RFRklORUQ9bm8pXSkKLQotaWYgdGVzdCAieCRhY19jdl9IQVZFX0NQUF9VTkRFUkJBUl9GVU5DVElPTl9ERUZJTkVEIiA9ICJ4eWVzIjsgdGhlbgotICBBQ19ERUZJTkUoSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRCkKLWZpCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBvbiBTQ08gVW5peHdhcmUgNy4xLjQgKFNDTyBjb21waWxlciksICJzdGF0aWMgaW5saW5lIiBmdW5jdGlvbnMKLSMgYXJlIG5vdCBzdXBwb3J0ZWQsIHNvIHRoaXMgZGlzYWJsZXMgdGhlIHdob2xlIGlubGluZSB0aGluZyBpZiBpdAotIyBkb2Vzbid0IHdvcmsgcHJvcGVybHkuIFNob3VsZCBoYXZlIG5vIGVmZmVjdCBvbiBvdGhlciBwbGF0Zm9ybXMuCi1BQ19DQUNIRV9DSEVDSyhbW3doZXRoZXIgc3RhdGljIGlubGluZSBmdW5jdGlvbnMgYXJlIGJyb2tlbiAoVW5peHdhcmUpXV0sCi0gICAgW25ldHNubXBfY3ZfY19icm9rZW5faW5saW5lXSwKLUFDX0NPTVBJTEVfSUZFTFNFKFtbCi1zdGF0aWMgaW5saW5lIGludCBuZXN0ZWRfaW5saW5lX2Z1bmN0aW9uKHZvaWQpIHsKLSAgcmV0dXJuIDA7Ci19Ci1pbmxpbmUgaW50IG1haW5faW5saW5lX2Z1bmN0aW9uKCB2b2lkICkgewotICByZXR1cm4gbmVzdGVkX2lubGluZV9mdW5jdGlvbigpOwotfQotXV0sIG5ldHNubXBfY3ZfYnJva2VuX2lubGluZT1ubywgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPXllcykpCi0KLSMgQnV0LCBzYWRseSwgdGhlIHVzYWdlIG9mIGlubGluZSBpbiBORVRfU05NUCBkaXNhZ3JlZXMgc2VyaW91c2x5IHdpdGggYXQgbGVhc3QKLSMgc29sYXJpczIsIHNvIGRpc2FibGUgaXQgZm9yIG5vdy4KLWNhc2UgIiR0YXJnZXRfb3MiIGluCi0gICAgc29sYXJpcyopCi0gICAgICAgIG5ldHNubXBfY3ZfYnJva2VuX2lubGluZT15ZXMKLSAgICAgICAgOzsKLSAgICAqKQotICAgICAgICA7OwotZXNhYwotCi1pZiB0ZXN0ICIkbmV0c25tcF9jdl9icm9rZW5faW5saW5lIiA9IHllcyA7IHRoZW4KLSAgQUNfREVGSU5FKE5FVFNOTVBfQlJPS0VOX0lOTElORSwgMSwKLSAgICAgICAgW0RlZmluZSBpZiBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBhcmUgdW5zdXBwb3J0ZWRdKQotZmkKLQotIyBvcGVuYnNkIHNlZW1zIHRvIGhhdmUgZHJvcHBlZCBtX2NsdXN0ZXJzIGFuZCBtX2NsZnJlZSBmcm9tIG1ic3RhdAotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWYgSEFWRV9TWVNfTUJVRl9ICi0jaW5jbHVkZSA8c3lzL21idWYuaD4KLSNlbmRpZgotXSwgbWJzdGF0LCBtX2NsdXN0ZXJzLCBubykKLQotIyBvcGVuYnNkIHNlZW1zIHRvIGhhdmUgZHJvcHBlZCBtX21idWZzIGZyb20gbWJzdGF0IHRvbwotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWYgSEFWRV9TWVNfTUJVRl9ICi0jaW5jbHVkZSA8c3lzL21idWYuaD4KLSNlbmRpZgotXSwgbWJzdGF0LCBtX21idWZzLCBubykKLQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc2lnbmFsLmg+Ci1dLCBzaWdhY3Rpb24sIHNhX3NpZ2FjdGlvbiwgbm8pCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIFRJTUVfV0lUSF9TWVNfVElNRQotIyBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBpbmNsdWRlIDx0aW1lLmg+Ci0jZWxzZQotIyBpZiBIQVZFX1NZU19USU1FX0gKLSMgIGluY2x1ZGUgPHN5cy90aW1lLmg+Ci0jIGVsc2UKLSMgIGluY2x1ZGUgPHRpbWUuaD4KLSMgZW5kaWYKLSNlbmRpZgotXSwgdG0sIHRtX2dtdG9mZiwgbm8pCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxuZXQvaWYuaD4KLSNpZmRlZiBIQVZFX05FVF9JRl9WQVJfSAotI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KLSNlbmRpZgotXSwgaWZuZXQsIGlmX210dSkKLQotaWYgdGVzdCAieCRhY19jdl9zdHJ1Y3RfaWZuZXRfaGFzX2lmX210dSIgPSAieG5vIjsgdGhlbgotQUNfQ0FDSEVfQ0hFQ0soaWYgX0tFUk5FTCBuZWVkcyB0byBiZSBkZWZpbmVkIGZvciBpZl9tdHUsIGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTCwKLVsKLWlmIHRlc3QgIngkYWNfY3Zfc3RydWN0X2lmbmV0X2hhc19pZl9tdHUiID0gInh5ZXMiOyB0aGVuCi0gIGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTD1ubwotZWxzZQotQUNfVFJZX0NPTVBJTEUoWwotI2RlZmluZSBfS0VSTkVMIDEKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaWZkZWYgSEFWRV9TWVNfVElNRV9ICi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNlbmRpZgotI2luY2x1ZGUgPG5ldC9pZi5oPgotI2lmZGVmIEhBVkVfTkVUX0lGX1ZBUl9ICi0jaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgotI2VuZGlmCi1dLFsKLXN0cnVjdCBpZm5ldCB0ZXN0aXQ7Ci10ZXN0aXQuaWZfbXR1ID0gMDsKLV0sIGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTD15ZXMsIGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTD1ubykKLWZpCi1dKQotCi1pZiB0ZXN0ICJ4JGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTCIgPSAieHllcyI7IHRoZW4KLSAgQUNfREVGSU5FKElGTkVUX05FRURTX0tFUk5FTCkKLWZpCi1maQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLV0sIHNvY2thZGRyLCBzYV9sZW4sIG5vKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLV0sIHNvY2thZGRyLCBzYV91bmlvbi5zYV9nZW5lcmljLnNhX2ZhbWlseTIsIG5vKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TT0NLRVRfSAotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNlbmRpZgotXSwgc29ja2FkZHJfc3RvcmFnZSwgc3NfZmFtaWx5LCBubykKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfVFlQRVNfSAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU09DS0VUX0gKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jZW5kaWYKLV0sIHNvY2thZGRyX3N0b3JhZ2UsIF9fc3NfZmFtaWx5LCBubykKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIEtFUk5FTAotI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jdW5kZWYgS0VSTkVMCi0jdW5kZWYgX0tFUk5FTAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotXSwgcnRlbnRyeSwgcnRfZHN0LCBubykKLQotIyBjaGVja2luZyBmb3IgNC4zIHZzIDQuNCBydGVudHJ5LgotQUNfQ0FDSEVfQ0hFQ0sodHlwZSBvZiBydGVudHJ5IHN0cnVjdHVyZSxhY19jdl9SVEVOVFJZX1RZUEUsCi1bCi0KLSMgNC40IGNvbXBhdAotQUNfVFJZX0NPTVBJTEUoWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIElGTkVUX05FRURTX0tFUk5FTAotI2RlZmluZSBLRVJORUwKLSNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQotI2RlZmluZSBfS0VSTkVMIDEKLSNlbmRpZgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI3VuZGVmIEtFUk5FTAotI3VuZGVmIF9LRVJORUwKLSNpbmNsdWRlIDxuZXQvcm91dGUuaD4KLV0sWwotCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKLSNkZWZpbmUgcnRfZHN0IHJ0X25vZGVzLT5ybl9rZXkKLSNlbmRpZgotCi0gIHN0cnVjdCBydGVudHJ5IHJ0OyAKLSAgcnQucnRfbm9kZXNbMF0ucm5fZmxhZ3MgPSAxOwotICBydC5ydF9kc3Q7Ci0gIF0sIGFjX2N2X1JURU5UUllfVFlQRT0iQlNELTQuNCIpCi0KLSMgNC4zIGNvbXBhdAotaWYgdGVzdCAieCRhY19jdl9SVEVOVFJZX1RZUEUiID0gIngiOyB0aGVuCi1BQ19UUllfQ09NUElMRShbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIEtFUk5FTAotI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jdW5kZWYgS0VSTkVMCi0jdW5kZWYgX0tFUk5FTAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotXSxbCi1zdHJ1Y3QgcnRlbnRyeSBydDsgCi1ydC5ydF9oYXNoOwotXSwgYWNfY3ZfUlRFTlRSWV9UWVBFPSJCU0QtNC4zIikKLWZpCi0KLSMgZWxzZSBhY2suCi1pZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieCI7IHRoZW4KLSAgQUNfTVNHX1JFU1VMVChVbmtub3duKQotICBhY19jdl9SVEVOVFJZX1RZUEU9InVua25vd24iCi1maQotCi1dKQotCi1pZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieEJTRC00LjQiOyB0aGVuCi0gIEFDX0RFRklORShSVEVOVFJZXzRfNCkKLWZpCi0KLSMgY2hlY2tpbmcgZm9yIGFscGhhJ3Mgb3J0ZW50cnkgdnMgcnRlbnRyeQotaWYgdGVzdCAieCRhY19jdl9SVEVOVFJZX1RZUEUiID0gInh1bmtub3duIjsgdGhlbgotQUNfQ0FDSEVfQ0hFQ0soZm9yIHN0cnVjdCBydGVudHJ5LCBhY19jdl9zdHJ1Y3RfcnRlbnRyeSwKLVtBQ19FR1JFUF9DUFAob3J0ZW50cnksIFsjZGVmaW5lIEtFUk5FTAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotXSwgIGFjX2N2X3N0cnVjdF9ydGVudHJ5PW9ydGVudHJ5LCAgYWNfY3Zfc3RydWN0X3J0ZW50cnk9cnRlbnRyeSApCi1pZiB0ZXN0ICJ4JGFjX2N2X3N0cnVjdF9ydGVudHJ5IiA9ICJ4cnRlbnRyeSIgOyB0aGVuCi0gIGFjX2N2X3N0cnVjdF9ydGVudHJ5PSJydGVudHJ5IgotZWxzZQotICBhY19jdl9zdHJ1Y3RfcnRlbnRyeT0ib3J0ZW50cnkiCi1maQotXSkKLWVsc2UKLSAgUlRFTlRSWV9UWVBFPSJydGVudHJ5IgotICBhY19jdl9zdHJ1Y3RfcnRlbnRyeT0icnRlbnRyeSIKLWZpCi0KLWlmIHRlc3QgIngkYWNfY3Zfc3RydWN0X3J0ZW50cnkiICE9ICJ4IjsgdGhlbgotICBBQ19ERUZJTkVfVU5RVU9URUQoUlRFTlRSWSxzdHJ1Y3QgJHthY19jdl9zdHJ1Y3RfcnRlbnRyeX0pCi1lbHNlCi0gIEFDX0RFRklORShSVEVOVFJZLHN0cnVjdCBydGVudHJ5KQotZmkKLQotIyBjaGVjayBmb3IgNC4zJ3MgcnRlbnRyeS0+cnRfbmV4dAotaWYgdGVzdCAieCRhY19jdl9SVEVOVFJZX1RZUEUiID0gInhCU0QtNC4zIjsgdGhlbgotQUNfQ0FDSEVfQ0hFQ0soZm9yIHN0cnVjdCBydGVudHJ5IGhhcyBhIHJ0X25leHQgbm9kZSwgCi0JYWNfY3Zfc3RydWN0X3J0ZW50cnlfcnRfbmV4dCwKLVsKLUFDX1RSWV9DT01QSUxFKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSN1bmRlZiBLRVJORUwKLSN1bmRlZiBfS0VSTkVMCi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci1dLFsKLXN0cnVjdCBydGVudHJ5IHJ0OyAKLXJ0LnJ0X25leHQ7Ci1dLCBhY19jdl9zdHJ1Y3RfcnRlbnRyeV9ydF9uZXh0PXllcywgIGFjX2N2X3N0cnVjdF9ydGVudHJ5X3J0X25leHQ9bm8gKQotXSkKLQotaWYgdGVzdCAieCRhY19jdl9zdHJ1Y3RfcnRlbnRyeV9ydF9uZXh0IiA9ICJ4eWVzIjsgdGhlbgotICBBQ19ERUZJTkUoUlRFTlRSWV9SVF9ORVhUKQotZmkKLQotZmkKLQotIyBDaGVjayBzaW42X3Njb3BlX2lkIG1lbWJlciBzcGVjaWZpZWQgaW4gUkZDMjU1MyBhZGRpdGlvbmFsbHkKLUFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzb2NrYWRkcl9pbjYuc2luNl9zY29wZV9pZF0sLCxbCi1BQ19JTkNMVURFU19ERUZBVUxUKCkKLVsjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotXV0pCi0KLSMgQ2hlY2sgc3RydWN0IHJ0ZW50cnkgZm9yIHZhcmlvdXMgdGhpbmdzLgotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIEtFUk5FTAotI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jdW5kZWYgS0VSTkVMCi0jdW5kZWYgX0tFUk5FTAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotXSwgcnRlbnRyeSwgcnRfdW5pdCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIEtFUk5FTAotI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jdW5kZWYgS0VSTkVMCi0jdW5kZWYgX0tFUk5FTAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotXSwgcnRlbnRyeSwgcnRfcmVmY250KQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSN1bmRlZiBLRVJORUwKLSN1bmRlZiBfS0VSTkVMCi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci1dLCBydGVudHJ5LCBydF9oYXNoKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSN1bmRlZiBLRVJORUwKLSN1bmRlZiBfS0VSTkVMCi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci1dLCBydGVudHJ5LCBydF91c2UpCi0KLSMgQ2hlY2sgdGNwc3RhdCBmb3IgdGNwc3RhdC50Y3BfcmN2bWVtZHJvcAotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSEFWRV9TWVNfVElNRU9VVF9ICi0jaW5jbHVkZSA8c3lzL3RpbWVvdXQuaD4KLSNlbmRpZgotI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+Ci0jaWZkZWYgSEFWRV9ORVRJTkVUX1RDUF9USU1FUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC90Y3BfdGltZXIuaD4KLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9ORVRJTkVUX1RDUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvdGNwX3Zhci5oPgotI2VuZGlmCi1dLCB0Y3BzdGF0LCB0Y3BfcmN2bWVtZHJvcCkKLQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpZmRlZiBIQVZFX1NZU19USU1FX0gKLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8bmV0L2lmLmg+Ci0jaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKLSNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+Ci0jZW5kaWYKLV0sIGlmYWRkciwgaWZhX25leHQpCi0KLSMgQ2hlY2sgaWZuZXQgZW50cmllcyB1c2luZyBtYWNybyBkZWZpbmVkIGluIGFjbG9jYWwubTQuCi0jCi0jIFhYWCAgQnJva2VuIG9uIEZyZWVCU0Qgd2hlcmUgdGhlc2UgYXJlICNkZWZpbmUnZCBpbiA8bmV0L2lmLmg+Ci0jCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfYmF1ZHJhdGUpCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfYmF1ZHJhdGUuaWZzX3ZhbHVlKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX3NwZWVkKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX3R5cGUpCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfaW1jYXN0cykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9pcWRyb3BzKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX25vcHJvdG8pCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfb21jYXN0cykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl94bmFtZSxubykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9sYXN0Y2hhbmdlLnR2X3NlYykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9sYXN0Y2hhbmdlLnR2X25zZWMpCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfb2J5dGVzKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX2lieXRlcykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9hZGRybGlzdCkKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9hZGRyaGVhZC50cWhfZmlyc3QpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfSAotI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfVURQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHBfdmFyLmg+Ci0jZW5kaWYKLV0sdWRwc3RhdCx1ZHBzX2Rpc2NhcmQpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfSAotI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfVURQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHBfdmFyLmg+Ci0jZW5kaWYKLV0sdWRwc3RhdCx1ZHBzX25vcG9ydCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX1VEUF9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L3VkcF92YXIuaD4KLSNlbmRpZgotXSx1ZHBzdGF0LHVkcHNfbm9wb3J0YmNhc3QpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfSAotI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfVURQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHBfdmFyLmg+Ci0jZW5kaWYKLV0sdWRwc3RhdCx1ZHBzX2Z1bGxzb2NrKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaWZkZWYgSEFWRV9TWVNfVElNRV9ICi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNlbmRpZgotI2luY2x1ZGUgPG5ldC9pZi5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lGX0VUSEVSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0jZW5kaWYKLV0sYXJwaGQsYXRfbmV4dCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWYgSEFWRV9TWVNfVFlQRVNfSAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfQ09ORl9ICi0jaW5jbHVkZSA8c3lzL2NvbmYuaD4KLSNlbmRpZgotXSxzd2RldnQsc3dfbmJsa3NlbmFibGVkKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVEZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TVEFUVkZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgotI2VuZGlmCi1dLHN0YXR2ZnMsbW50X2RpcikKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NUQVRGU19ICi0jaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVFZGU19ICi0jaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KLSNlbmRpZgotXSxzdGF0dmZzLGZfZnJzaXplKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVEZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TVEFUVkZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgotI2VuZGlmCi1dLHN0YXRmcyxmX2Zyc2l6ZSkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NUQVRGU19ICi0jaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVFZGU19ICi0jaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KLSNlbmRpZgotXSxzdGF0dmZzLGZfZmlsZXMpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TVEFURlNfSAotI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX01PVU5UX0gKLSNpbmNsdWRlIDxzeXMvbW91bnQuaD4KLSNlbmRpZgotXSxzdGF0ZnMsZl9maWxlcykKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NUQVRGU19ICi0jaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfTU9VTlRfSAotI2luY2x1ZGUgPHN5cy9tb3VudC5oPgotI2VuZGlmCi1dLHN0YXRmcyxmX2ZmcmVlKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVEZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19NT1VOVF9ICi0jaW5jbHVkZSA8c3lzL21vdW50Lmg+Ci0jZW5kaWYKLV0sc3RhdGZzLGZfZmF2YWlsKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZiBIQVZFX05MSVNUX0gKLSNpbmNsdWRlIDxubGlzdC5oPgotI2VuZGlmCi1dLG5saXN0LG5fdmFsdWUpCi0KLSMgc3RydWN0IG5saXN0NjQgKElSSVgpCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05MSVNUX0gKLSNpbmNsdWRlIDxubGlzdC5oPgotI2VuZGlmCi1dLG5saXN0NjQsIG5fdmFsdWUpCi0KLSMgc3RydWN0IGV0aHRvb2xfY21kCi1BQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgZXRodG9vbF9jbWQuc3BlZWRfaGldLCwsWwotICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQotICAgIFsKLSNpZmRlZiBIQVZFX0xJTlVYX0VUSFRPT0xfSAotI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KLSNlbmRpZgotICAgIF1dKQotCi0jIGNoZWNrIHN0cnVjdCBpcHN0YXQgZm9yIHZhcmlvdXMgdGhpbmdzCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX2NhbnRmb3J3YXJkKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX2NhbnRmcmFnKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX2RlbGl2ZXJlZCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi1dLCBpcHN0YXQsIGlwc19mcmFnZHJvcHBlZCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi1dLCBpcHN0YXQsIGlwc19mcmFndGltZW91dCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi1dLCBpcHN0YXQsIGlwc19mcmFnbWVudGVkKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX2xvY2Fsb3V0KQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX25vcHJvdG8pCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotXSwgaXBzdGF0LCBpcHNfbm9yb3V0ZSkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi1dLCBpcHN0YXQsIGlwc19vZHJvcHBlZCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi1dLCBpcHN0YXQsIGlwc19vZnJhZ21lbnRzKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX3JlYXNzZW1ibGVkKQotCi0jIGNoZWNrIGZvciB0aGUgZGVzX2tzX3N0cnVjdC53ZWFrX2tleSBhdHRyaWJ1dGUsIHdoaWNoIGluZGljYXRlcyB0aGUgCi0jIG9sZGVyIG9wZW5zc2wgdmVyc2lvbiBpcyBiZWluZyB1c2VkLgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfb3BlbnNzbF9kZXNfaCIgPSAieHllcyIgOyB0aGVuCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxvcGVuc3NsL2Rlcy5oPgotXSwgZGVzX2tzX3N0cnVjdCwgd2Vha19rZXkpCi1maQotCi0jIGF0dGVtcHQgdG8gZmlndXJlIG91dCBpZiBzeXNjdGwgaXMgdXNhYmxlCi0KLWlmIHRlc3QgJGNyb3NzX2NvbXBpbGluZyA9IHllczsgdGhlbgotICBBQ19NU0dfV0FSTihbQ2FuJ3QgY2hlY2sgc3lzY3RsLCBtYW51YWxseSBkZWZpbmUgTkVUU05NUF9DQU5fVVNFX1NZU0NUTCBpZiBwbGF0Zm9ybSBzdXBwb3J0IGF2YWlsYWJsZV0pCi1lbHNlCi0gIEFDX0NBQ0hFX0NIRUNLKGlmIHN5c2N0bCBjYW4gcmVhZCBrZXJuZWwgaW5mb3JtYXRpb24sYWNfY3ZfTkVUU05NUF9DQU5fVVNFX1NZU0NUTCwKLSAgW0FDX1RSWV9SVU4oWwotI2lmIFRJTUVfV0lUSF9TWVNfVElNRQotIyBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBpbmNsdWRlIDx0aW1lLmg+Ci0jZWxzZQotIyBpZiBIQVZFX1NZU19USU1FX0gKLSMgIGluY2x1ZGUgPHN5cy90aW1lLmg+Ci0jIGVsc2UKLSMgIGluY2x1ZGUgPHRpbWUuaD4KLSMgZW5kaWYKLSNlbmRpZgotI2lmIEhBVkVfU1lTX1BBUkFNX0gKLSMgaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX1NZU19TWVNDVExfSAotIyBpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0jZW5kaWYKLQotbWFpbigpIHsKLSAgaW50ICAgICAgICAgICAgICAgICBtaWJbMl07Ci0gIHNpemVfdCAgICAgICAgICAgICAgbGVuOwotICBzdHJ1Y3QgdGltZXZhbCBib290dGltZTsKLSAgCi0gIG1pYlswXSA9IENUTF9LRVJOOwotICBtaWJbMV0gPSBLRVJOX0JPT1RUSU1FOwotICAKLSAgbGVuID0gc2l6ZW9mKGJvb3R0aW1lKTsKLSAgc3lzY3RsKG1pYiwgMiwgJmJvb3R0aW1lLCAmbGVuLCBOVUxMLCBOVUxMKTsKLSAgaWYgKGJvb3R0aW1lLnR2X3NlYyAhPSAwKQotICAgIGV4aXQoMCk7Ci0gIGVsc2UKLSAgICBleGl0KDEpOwotfQotICBdLCBhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMPXllcywgYWNfY3ZfTkVUU05NUF9DQU5fVVNFX1NZU0NUTD1ubywgYWNfY3ZfTkVUU05NUF9DQU5fVVNFX1NZU0NUTD1ubyldKQotZmkKLQotaWYgdGVzdCAieCRhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMIiA9ICJ4eWVzIjsgdGhlbgotICBBQ19ERUZJTkUoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCkKLWZpCi0KLSMKLSMgSW4gRnJlZUJTRCA0LngsIHRoZSBUQ1AgdGltZXIgY29uc3RhbnRzIGFyZW4ndC4gIFRoZXkgYXJlIGRlZmluZWQKLSMgaW4gdGVybXMgb2YgJ2h6JywgdGhlIGtlcm5lbCBjbG9jayB0aWNrLiAgSW4gdGhpcyBjYXNlLAotIyB3ZSBuZWVkIHRvIGhhdmUgYSBsb2NhbCB2YXJpYWJsZSAnaHonIGluIHNjb3BlIGFuZCBzZXQgdG8gYSB1c2VmdWwKLSMgdmFsdWUgd2hlbmV2ZXIgd2UgdXNlIG9uZSBvZiB0aGVzZSBjb25zdGFudHMuCi0jCi1BQ19DQUNIRV9DSEVDSyh3aGV0aGVyIFRDUCB0aW1lcnMgZGVwZW5kIG9uICdoeicsYWNfY3ZfVENQVFZfTkVFRFNfSFosCi1bQUNfRUdSRVBfQ1BQKGh6LAotWyNpbmNsdWRlIDxuZXRpbmV0L3RjcF90aW1lci5oPgotVENQVFZfU1JUVERGTFQKLV0sIGFjX2N2X1RDUFRWX05FRURTX0haPXllcywgYWNfY3ZfVENQVFZfTkVFRFNfSFo9bm8pXSkKLQotaWYgdGVzdCAieCRhY19jdl9UQ1BUVl9ORUVEU19IWiIgPSAieHllcyI7IHRoZW4KLSAgQUNfREVGSU5FKFRDUFRWX05FRURTX0haKQotZmkKLQotIwotIyBkZWZpbmUgdGhlIGFnZW50IGxpYnJhcmllcyB2YXJpYWJsZXMKLSMKLUFDX1NVQlNUKExNSUJMSUJTKQotQUNfU1VCU1QoQUdFTlRMSUJTKQotQUNfU1VCU1QoT1RIRVJBR0VOVExJQk9CSlMpCi1BQ19TVUJTVChPVEhFUkFHRU5UTElCTE9CSlMpCi0KLSMKLSMgUHJvbXB0IGZvciB2YXJpb3VzIGJpdHMgb2YgdXNlciBpbmZvcm1hdGlvbgotIwotCi1pZiB0ZXN0ICJ4JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfTE9HRklMRSIgPSAieCIgLW8gIngkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9TWVNfTE9DIiA9ICJ4IiAtbyAieCRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1NZU19DT05UQUNUIiA9ICJ4IiAtbyAieCRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OIiA9ICJ4IjsgdGhlbgotQUNfQ0FDSEVfQ0hFQ0sod2hldGhlciB0byBwcm9tcHQgZm9yIHZhbHVlcywgYWNfY3ZfaGF2ZV93YXJuZWQsCi1bCi1pZiB0ZXN0ICJ4JGRlZmF1bHRzIiA9ICJ4bm8iOyB0aGVuCi1jYXQgPDwgRU9GCi0KLQkgKioqKioqKioqKioqKiogQ29uZmlndXJhdGlvbiBTZWN0aW9uICoqKioqKioqKioqKioqCi0KLQlZb3UgYXJlIGFib3V0IHRvIGJlIHByb21wdGVkIHdpdGggYSBzZXJpZXMgb2YgcXVlc3Rpb25zLiAgQW5zd2VyCi10aGVtIGNhcmVmdWxseSwgYXMgdGhleSBkZXRlcm1pbmUgaG93IHRoZSBTTk1QIGFnZW50IGFuZCByZWxhdGVkCi1hcHBsaWNhdGlvbnMgYXJlIHRvIGZ1bmN0aW9uLgotCi0JQWZ0ZXIgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgZmluaXNoZXMsIHlvdSBjYW4gYnJvd3NlIHRoZSBuZXdseQotY3JlYXRlZCBuZXQtc25tcC1jb25maWcuaCBmaWxlIGZvciBmdXJ0aGVyIC0gbGVzcyBpbXBvcnRhbnQgLSBwYXJhbWV0ZXJzIHRvCi1tb2RpZnkuICBCZSBjYXJlZnVsIGlmIHlvdSByZS1ydW4gY29uZmlndXJlIHRob3VnaCwgc2luY2UgbmV0LXNubXAtY29uZmlnLmggCi13aWxsIGJlIG92ZXJ3cml0dGVuLgotCi0tUHJlc3MgcmV0dXJuIHRvIGNvbnRpbnVlLQotRU9GCi0KLXJlYWQgdG1waW5wdXQKLWFjX2N2X2hhdmVfd2FybmVkPSJ5ZXMiCi1lbHNlCi0gIGFjX2N2X2hhdmVfd2FybmVkPSJubyIKLWZpCi1dKQotZWxzZQotICBhY19jdl9oYXZlX3dhcm5lZD0ieWVzIgotZmkKLQotTUU9YCRXSE9BTUlgCi1pZiB0ZXN0IC1mIC9ldGMvcmVzb2x2LmNvbmY7IHRoZW4KLSAgTE9DPWBjYXQgL2V0Yy9yZXNvbHYuY29uZiB8IGdyZXAgJ15kb21haW4nIHwgdGFpbCAtMSB8IGF3ayAne3ByaW50ICRORn0nYAotZWxzZQotICBMT0M9IkBuby53aGVyZSIKLWZpCi0KLUFDX1BST01QVF9VU0VSKE5FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04sWwotCi0qKiogRGVmYXVsdCBTTk1QIFZlcnNpb246Ci0KLQlTdGFydGluZyB3aXRoIE5ldC1TTk1QIDUuMCwgeW91IGNhbiBjaG9vc2UgdGhlIGRlZmF1bHQgdmVyc2lvbiBvZgotdGhlIFNOTVAgcHJvdG9jb2wgdG8gdXNlIHdoZW4gbm8gdmVyc2lvbiBpcyBnaXZlbiBleHBsaWNpdGx5IG9uIHRoZQotY29tbWFuZCBsaW5lLCBvciB2aWEgYW4gJ3NubXAuY29uZicgZmlsZS4gIEluIHRoZSBwYXN0IHRoaXMgd2FzIHNldCB0bwotU05NUHYxLCBidXQgeW91IGNhbiB1c2UgdGhpcyB0byBzd2l0Y2ggdG8gU05NUHYzIGlmIGRlc2lyZWQuICBTTk1QdjMKLXdpbGwgcHJvdmlkZSBhIG1vcmUgc2VjdXJlIG1hbmFnZW1lbnQgZW52aXJvbm1lbnQgKGFuZCB0aHVzIHlvdSdyZQotZW5jb3VyYWdlZCB0byBzd2l0Y2ggdG8gU05NUHYzKSwgYnV0IG1heSBicmVhayBleGlzdGluZyBzY3JpcHRzIHRoYXQKLXJlbHkgb24gdGhlIG9sZCBiZWhhdmlvdXIuICAoVGhvdWdoIHN1Y2ggc2NyaXB0cyB3aWxsIHByb2JhYmx5IG5lZWQgdG8KLWJlIGNoYW5nZWQgdG8gdXNlIHRoZSAnLWMnIGNvbW11bml0eSBmbGFnIGFueXdheSwgYXMgdGhlIFNOTVB2MQotY29tbWFuZCBsaW5lIHVzYWdlIGhhcyBjaGFuZ2VkIGFzIHdlbGwuKS4KLSAgIEF0IHRoaXMgcHJvbXB0IHlvdSBjYW4gc2VsZWN0IFwiMVwiLCBcIjJcIiAoZm9yIFNOTVB2MmMpLCBvciBcIjNcIiBhcwotdGhlIGRlZmF1bHQgdmVyc2lvbiBmb3IgdGhlIGNvbW1hbmQgdG9vbHMgKHNubXBnZXQsIC4uLikgdG8gdXNlLiAgVGhpcwotY2FuIGFsd2F5cyBiZSBvdmVycmlkZGVuIGF0IHJ1bnRpbWUgdXNpbmcgdGhlIC12IGZsYWcgdG8gdGhlIHRvb2xzLCBvcgotYnkgdXNpbmcgdGhlIFwiZGVmVmVyc2lvblwiIHRva2VuIGluIHlvdXIgc25tcC5jb25mIGZpbGUuCi0gICBQcm92aWRpbmcgdGhlIC0td2l0aC1kZWZhdWx0LXNubXAtdmVyc2lvbj1cInhcIiBwYXJhbWV0ZXIgdG8gLi9jb25maWd1cmUKLXdpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCi0KLURlZmF1bHQgdmVyc2lvbiBvZiBTTk1QIHRvIHVzZV0sMyx1bnF1b3RlZCkKLQotIyB3ZSB0ZXN0ZWQgdGhpcyBhYm92ZSBiZWZvcmUgdGhlIHByb21wdCwgYnV0IHRoZSBwcm9tcHQgbWF5IGdpdmUgYSBuZXcgdmFsdWUuCi1pZiB0ZXN0ICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgPSAiMmMiOyB0aGVuCi0gIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT049IjIiCi1maQotaWYgdGVzdCAiJGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04iICE9ICIxIiAtYSAiJGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04iICE9ICIyIiAtYSAiJGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04iICE9ICIzIjsgdGhlbgotICBBQ19NU0dfRVJST1IoW0lsbGVnYWwgdmVyc2lvbiBudW1iZXIuICBPbmx5IDEsIDIgKGZvciBTTk1QdjJjKSBhbmQgMyBhcmUgc3VwcG9ydGVkLl0pCi1maQotCi1BQ19QUk9NUFRfVVNFUihORVRTTk1QX1NZU19DT05UQUNULFsKLQotKioqIFN5c3RlbSBDb250YWN0IEluZm9ybWF0aW9uOgotCi0JRGVzY3JpYmVzIHdobyBzaG91bGQgYmUgY29udGFjdGVkIGFib3V0IHRoZSBob3N0IHRoZSBhZ2VudCBpcwotcnVubmluZyBvbi4gIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBNSUItSUkgdHJlZS4gIFRoaXMKLWNhbiBhbHNvIGJlIG92ZXItcmlkZGVuIHVzaW5nIHRoZSBcInN5c2NvbnRhY3RcIiBzeW50YXggaW4gdGhlIGFnZW50J3MKLWNvbmZpZ3VyYXRpb24gZmlsZXMuCi0gIFByb3ZpZGluZyB0aGUgLS13aXRoLXN5cy1jb250YWN0PVwiY29udGFjdFwiIHBhcmFtZXRlciB0byAuL2NvbmZpZ3VyZQotd2lsbCBhdm9pZCB0aGlzIHByb21wdC4KLQotU3lzdGVtIENvbnRhY3QgSW5mb3JtYXRpb25dLCRNRUAkTE9DLHF1b3RlZCkKLQotQUNfUFJPTVBUX1VTRVIoTkVUU05NUF9TWVNfTE9DLFsKLQotKioqIFN5c3RlbSBMb2NhdGlvbjoKLQotCURlc2NyaWJlcyB0aGUgbG9jYXRpb24gb2YgdGhlIHN5c3RlbS4gIFRoaXMgaW5mb3JtYXRpb24gaXMKLWF2YWlsYWJsZSBpbiB0aGUgTUlCLUlJIHRyZWUuICB0aGlzIGNhbiBhbHNvIGJlIG92ZXItcmlkZGVuIHVzaW5nIHRoZQotXCJzeXNsb2NhdGlvblwiIHN5bnRheCBpbiB0aGUgYWdlbnQncyBjb25maWd1cmF0aW9uIGZpbGVzLgotICBQcm92aWRpbmcgdGhlIC0td2l0aC1zeXMtbG9jYXRpb249XCJsb2NhdGlvblwiIHBhcmFtZXRlciB0byAuL2NvbmZpZ3VyZQotd2lsbCBhdm9pZCB0aGlzIHByb21wdC4KLQotU3lzdGVtIExvY2F0aW9uXSxVbmtub3duLHF1b3RlZCkKLQotaWYgdGVzdCAtZCAvdmFyL2xvZzsgdGhlbgotICBkZWZhdWx0bG9nPSIvdmFyL2xvZy9zbm1wZC5sb2ciCi1lbHNlCi0gIGRlZmF1bHRsb2c9Ii91c3IvYWRtL3NubXBkLmxvZyIKLWZpCi0gIAotQUNfUFJPTVBUX1VTRVIoTkVUU05NUF9MT0dGSUxFLFsKLQotKioqIExvZ2ZpbGUgbG9jYXRpb246Ci0KLQlFbnRlciB0aGUgZGVmYXVsdCBsb2NhdGlvbiBmb3IgdGhlIHNubXBkIGFnZW50IHRvIGR1bXAKLWluZm9ybWF0aW9uICYgZXJyb3JzIHRvLiAgSWYgbm90IGRlZmluZWQgKGVudGVyIHRoZSBrZXl3b3JkIFwibm9uZVwiCi1hdCB0aGUgcHJvbXB0IGJlbG93KSB0aGUgYWdlbnQgd2lsbCB1c2Ugc3Rkb3V0IGFuZCBzdGRlcnIgaW5zdGVhZC4KLShOb3RlOiBUaGlzIHZhbHVlIGNhbiBiZSBvdmVyLXJpZGRlbiB1c2luZyBjb21tYW5kIGxpbmUgb3B0aW9ucy4pCi0gIFByb3ZpZGluZyB0aGUgLS13aXRoLWxvZ2ZpbGU9XCJwYXRoXCIgcGFyYW1ldGVyIHRvIC4vY29uZmlndXJlCi13aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgotCi1Mb2NhdGlvbiB0byB3cml0ZSBsb2dmaWxlXSwkZGVmYXVsdGxvZyxxdW90ZWQpCi0KLWlmIHRlc3QgLWQgL3ZhcjsgdGhlbgotICBkZWZhdWx0c3RvcmU9Ii92YXIvbmV0LXNubXAiCi0gIHVjZGRlZmF1bHRzdG9yZT0iL3Zhci91Y2Qtc25tcCIKLWVsc2UKLSAgZGVmYXVsdHN0b3JlPSIvZXRjL25ldC1zbm1wIgotICB1Y2RkZWZhdWx0c3RvcmU9Ii9ldGMvdWNkLXNubXAiCi1maQotICAKLUFDX1BST01QVF9VU0VSKE5FVFNOTVBfUEVSU0lTVEVOVF9ESVJFQ1RPUlksWwotCi0qKiogc25tcGQgcGVyc2lzdGVudCBzdG9yYWdlIGxvY2F0aW9uOgotCi0JRW50ZXIgYSBkaXJlY3RvcnkgZm9yIHRoZSBTTk1QIGxpYnJhcnkgdG8gc3RvcmUgcGVyc2lzdGVudAotZGF0YSBpbiB0aGUgZm9ybSBvZiBhIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFRoaXMgZGVmYXVsdCBsb2NhdGlvbiBpcwotZGlmZmVyZW50IHRoYW4gdGhlIG9sZCBkZWZhdWx0IGxvY2F0aW9uICh3aGljaCB3YXMgZm9yIHVjZC1zbm1wKS4gIElmCi15b3Ugc3RheSB3aXRoIHRoZSBuZXcgcGF0aCwgSSdsbCBhc2sgeW91IGluIGEgc2Vjb25kIGlmIHlvdSB3aXNoIHRvCi1jb3B5IHlvdXIgZmlsZXMgb3ZlciB0byB0aGUgbmV3IGxvY2F0aW9uIChvbmNlIG9ubHkpLiAgSWYgeW91IHBpY2sKLXNvbWUgb3RoZXIgcGF0aCB0aGFuIHRoZSBkZWZhdWx0LCB5b3UnbGwgaGF2ZSB0byBjb3B5IHRoZW0geW91cnNlbGYuCi1UaGVyZSBpcyBub3RoaW5nIHdyb25nIHdpdGggcGlja2luZyB0aGUgb2xkIHBhdGggKCR1Y2RkZWZhdWx0c3RvcmUpIGlmCi15b3UnZCByYXRoZXIuCi0gIFByb3ZpZGluZyB0aGUgLS13aXRoLXBlcnNpc3RlbnQtZGlyZWN0b3J5PVwicGF0aFwiIHBhcmFtZXRlciB0bwotLi9jb25maWd1cmUgd2lsbCBhdm9pZCB0aGlzIHByb21wdC4KLQotTG9jYXRpb24gdG8gd3JpdGUgcGVyc2lzdGVudCBpbmZvcm1hdGlvbl0sJGRlZmF1bHRzdG9yZSxxdW90ZWQpCi0KLVBFUlNJU1RFTlRfRElSRUNUT1JZPSRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZCi1BQ19TVUJTVChQRVJTSVNURU5UX0RJUkVDVE9SWSkKLVVDRFBFUlNJU1RFTlRfRElSRUNUT1JZPSR1Y2RkZWZhdWx0c3RvcmUKLUFDX1NVQlNUKFVDRFBFUlNJU1RFTlRfRElSRUNUT1JZKQotCi1pZiB0ZXN0ICRQRVJTSVNURU5UX0RJUkVDVE9SWSA9ICIkZGVmYXVsdHN0b3JlIiAtYSAtZCAiJHVjZGRlZmF1bHRzdG9yZSIgLWEgISAtZCAiJGRlZmF1bHRzdG9yZSIgOyB0aGVuCi1BQ19DQUNIRV9DSEVDSyhJZiB3ZSBzaG91bGQgY29weSB0aGUgb2xkIHBlcnNpc3RlbnQgZGlyZWN0b3J5LCBhY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVMsCi1bCi1BQ19QUk9NUFRfVVNFUl9OT19ERUZJTkUoYWNfY3ZfdXNlcl9wcm9tcHRfQ09QWV9QRVJTSVNURU5UX0ZJTEVTLFsKLQotKioqIENvcHlpbmcgb2xkIHVjZC1zbm1wIHBlcnNpc3RlbnQgZmlsZXMgdG8gbmV0LXNubXAgcGVyc2lzdGVudCBkaXJlY3Rvcnk6Ci0KLQlXb3VsZCB5b3UgbGlrZSB0byBjb3B5IHRoZSBvbGRlciB1Y2Qtc25tcCBwZXJzaXN0ZW50IGZpbGVzCi1pbnRvIHlvdXIgbmV3IG5ldC1zbm1wIHBlcnNpc3RlbnQgZmlsZSBwYXRoPyAgVGhpcyB3aWxsIGZ1bmN0aW9uYWxseQotc2F2ZSBhbGwgeW91ciB1Y2Qtc25tcCBkYXRhIGFuZCBsZXQgaXQgYmUgdXNlZCB3aXRoaW4gdGhlIG5ldC1zbm1wCi10b29scy4gIFRoaXMgd2lsbCBvbmx5IGJlIGRvbmUgb25jZSB3aGVuIHlvdSBydW4gbWFrZSBpbnN0YWxsLiAgSWYgeW91Ci13aXNoIHRvIGRvIHRoaXMsIGVudGVyICJ5ZXMiIGF0IHRoZSBwcm9tcHQuCi0gIFByb3ZpZGluZyB0aGUgLS13aXRoLWNvcHktcGVyc2lzdGVudC1maWxlcz1cIm5vXCIgKG9yIFwieWVzXCIpCi1wYXJhbWV0ZXJzIHRvIC4vY29uZmlndXJlIHdpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCi0KLUNvcHkgdWNkLXNubXAgZGF0YSBpbnRvIHRoZSBuZXQtc25tcCBkYXRhIGRpcmVjdG9yeV0sInllcyIpCi1dKQotZWxzZQotYWNfY3ZfdXNlcl9wcm9tcHRfQ09QWV9QRVJTSVNURU5UX0ZJTEVTPSJubyIKLWZpCi1DT1BZX1BFUlNJU1RFTlRfRklMRVM9IiRhY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVMiCi1BQ19TVUJTVChDT1BZX1BFUlNJU1RFTlRfRklMRVMpCi0KLUFDX1NVQlNUKERMTElCUykKLQotQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZTpNYWtlZmlsZS50b3A6TWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXNdKQotQUNfQ09ORklHX0ZJTEVTKFtzbm1wbGliL01ha2VmaWxlOk1ha2VmaWxlLnRvcDpzbm1wbGliL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOnNubXBsaWIvTWFrZWZpbGUuZGVwZW5kXSkKLUFDX0NPTkZJR19GSUxFUyhbYXBwcy9NYWtlZmlsZTpNYWtlZmlsZS50b3A6YXBwcy9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphcHBzL01ha2VmaWxlLmRlcGVuZF0pCi1BQ19DT05GSUdfRklMRVMoW2FwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGU6TWFrZWZpbGUudG9wOmFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXM6YXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmRdKQotQUNfQ09ORklHX0ZJTEVTKFthZ2VudC9NYWtlZmlsZTpNYWtlZmlsZS50b3A6YWdlbnQvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXM6YWdlbnQvTWFrZWZpbGUuZGVwZW5kXSkKLUFDX0NPTkZJR19GSUxFUyhbYWdlbnQvaGVscGVycy9NYWtlZmlsZTpNYWtlZmlsZS50b3A6YWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZF0pCi1BQ19DT05GSUdfRklMRVMoW2FnZW50L21pYmdyb3VwL01ha2VmaWxlOk1ha2VmaWxlLnRvcDphZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmRdKQotQUNfQ09ORklHX0ZJTEVTKFtsb2NhbC9NYWtlZmlsZTpNYWtlZmlsZS50b3A6bG9jYWwvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXNdKQotQUNfQ09ORklHX0ZJTEVTKFt0ZXN0aW5nL01ha2VmaWxlOk1ha2VmaWxlLnRvcDp0ZXN0aW5nL01ha2VmaWxlLmluXSkKLUFDX0NPTkZJR19GSUxFUyhbbWFuL01ha2VmaWxlOk1ha2VmaWxlLnRvcDptYW4vTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXNdKQotQUNfQ09ORklHX0ZJTEVTKFttaWJzL01ha2VmaWxlOk1ha2VmaWxlLnRvcDptaWJzL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzXSkKLUFDX0NPTkZJR19GSUxFUyhbbmV0LXNubXAtY29uZmlnOm5ldC1zbm1wLWNvbmZpZy5pbl0sCi0JCVtjaG1vZCAreCBuZXQtc25tcC1jb25maWddKQotCi1BQ19DT05GSUdfQ09NTUFORFMoW2RlZmF1bHRdLCBlY2hvIHRpbWVzdGFtcCA+IHN0YW1wLWgpCi0KLSMKLSMgcHJvdGVjdCBQQUNLQUdFXyogdmFyaWFibGVzCi0jCi1BSF9WRVJCQVRJTShbUEFDS0FHRV9CVUdSRVBPUlRdLFsvKiBEZWZpbmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4gKi8KLSNpZm5kZWYgUEFDS0FHRV9CVUdSRVBPUlQKLSN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVAotI2VuZGlmXSkKLUFIX1ZFUkJBVElNKFtQQUNLQUdFX05BTUVdLFsvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0jaWZuZGVmIFBBQ0tBR0VfTkFNRQotI3VuZGVmIFBBQ0tBR0VfTkFNRQotI2VuZGlmXSkKLUFIX1ZFUkJBVElNKFtQQUNLQUdFX1NUUklOR10sWy8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNpZm5kZWYgUEFDS0FHRV9TVFJJTkcKLSN1bmRlZiBQQUNLQUdFX1NUUklORwotI2VuZGlmXSkKLUFIX1ZFUkJBVElNKFtQQUNLQUdFX1RBUk5BTUVdLFsvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0jaWZuZGVmIFBBQ0tBR0VfVEFSTkFNRQotI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQotI2VuZGlmXSkKLUFIX1ZFUkJBVElNKFtQQUNLQUdFX1ZFUlNJT05dLFsvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotI2lmbmRlZiBQQUNLQUdFX1ZFUlNJT04KLSN1bmRlZiBQQUNLQUdFX1ZFUlNJT04KLSNlbmRpZl0pCi0KLUFDX09VVFBVVAotCi1BQ19NU0dfQ0FDSEVfRElTUExBWSgpCi0jIExvY2FsIFZhcmlhYmxlczoKLSMgbW9kZTogQXV0b2NvbmYKLSMgY29tbWVudC1zdGFydDogIiMiCi0jIEVuZDoKZGlmZiAtLWdpdCBhL2Rpc3QvTWFrZWZpbGUgYi9kaXN0L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YzhmODQKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L01ha2VmaWxlCkBAIC0wLDAgKzEsMTMzIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgJFNvdXJjZSQKKyMgJFJldmlzaW9uJAorIyAkRGF0ZSQKKyMgJEF1dGhvciQKKyMgJE5hbWUkCisjICRTdGF0ZSQKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIE1ha2VmaWxlIGZvciBnZW5lcmF0aW5nIHJwbSBwYWNrYWdlIGZpbGVzICgucnBtKSBmb3IgbmV0LXNubXAuCisKKyMgR05VICdtYWtlJy1zcGVjaWZpYyBmZWF0dXJlcyBhcmUgdXNlZCBpbiB0aGlzIG1ha2VmaWxlLgorIyBPdGhlciBtYWtlcyBtYXkgb3IgbWF5IG5vdCB3b3JrIHdpdGggaXQuCisjIFNlZSBodHRwOi8vd3d3LmdudS5vcmcvbWFudWFsL21ha2UvaW5kZXguaHRtbCBmb3IgZGV0YWlscy4KKworU0hFTEwgPSAvYmluL3NoCisKKyMgRGVmaW5lIHRoZSBSUE0gcGFja2FnZSBuYW1lCitOQU1FID0gbmV0LXNubXAKKworIyBEZWZpbmUgdGhlIGRlZmF1bHQgUlBNIHJlbGVhc2UgbnVtYmVyLiBTZXQgYnkgVmVyc2lvbi1NdW5nZS5wbAorVkVSU0lPTiA9IDUuNS4yCisKK1ZFUlNJT05fVEFHPWBlY2hvIEV4dC0kKFZFUlNJT04pIHwgc2VkICdzL1wuLy0vZzsnYAorCitXSVRIX1BFUkw9MQorRU1CRURfUEVSTD0xCisKKyMgRGVmaW5lIHRoZSBSUE0gYXJjaGl0ZWN0dXJlLCBpLmUuLCAncHBjJywgJ2kzODYnLCBldGMuCitBUkNIID0gYHVuYW1lIC1pYAorCisjIERpcmVjdG9yeSBzdHJ1Y3R1cmUgZXhwZWN0ZWQgYnkgJ3JwbScgcHJvZ3JhbQorUlBNX0JBU0UgOj0gJChQV0QpL3JwbQorCitSUE1fVFJFRSA6PSBcCisgICAgJChSUE1fQkFTRSkvQlVJTEQgXAorICAgICQoUlBNX0JBU0UpL1JQTVMgXAorICAgICQoUlBNX0JBU0UpL1NPVVJDRVMgXAorICAgICQoUlBNX0JBU0UpL1NQRUNTIFwKKyAgICAkKFJQTV9CQVNFKS9TUlBNUworCisuUEhPTlk6CWFsbCBjbGVhbiBycG1fZmlsZXMgYmluYXJ5X3JwbSBzb3VyY2VfcnBtIGFsbF9ycG0KKworYWxsOglhbGxfcnBtX2ZpbGVzCisKKyMgRGVsZXRlIGFsbCBnZW5lcmF0ZWQgZmlsZXMuCitjbGVhbjoKKwlybSAtcmYgJChSUE1fQkFTRSkKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNYWNyb3MgYW5kIHJ1bGVzIGZvciB1cGRhdGluZyBuZXQtc25tcC14LngueC50YXIuZ3ouCisjICdycG0nIGV4cGVjdHMgYSBjb21wcmVzc2VkIGFyY2hpdmUgKC50YXIuZ3opIG9mIHRoZSBzb3VyY2UgZGlyZWN0b3J5CisjIHRvIGV4aXN0IChpbiB0aGUgcnBtL1NPVVJDRVMgZGlyZWN0b3J5KSBiZWZvcmUgaXQgaXMgcnVuLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1ZTUk9PVCA9IDpwc2VydmVyOmFub255bW91c0BuZXQtc25tcC5jdnMuc291cmNlZm9yZ2UubmV0Oi9jdnNyb290L25ldC1zbm1wCisKK1BLR19WRVIgOj0gJChOQU1FKS0kKFZFUlNJT04pCisKK0daSVBfVEFSIDo9ICQoUlBNX0JBU0UpL1NPVVJDRVMvJChQS0dfVkVSKS50YXIuZ3oKKworZ3ppcF90YXI6CSQoR1pJUF9UQVIpCisKKyQoR1pJUF9UQVIpOgorCUBlY2hvICJDcmVhdGluZyBhIGNvbXByZXNzZWQgYXJjaGl2ZSBvZiB0aGUgcGFja2FnZSdzIHNvdXJjZSBmaWxlcy4uLiIKKwkoY2QgJChSUE1fQkFTRSkvU09VUkNFUzsgXAorCWN2cyAtZCQoQ1ZTUk9PVCkgbG9naW47IFwKKwljdnMgLXozIC1kJChDVlNST09UKSBleHBvcnQgLXIkKFZFUlNJT05fVEFHKSAkKE5BTUUpOyBcCisJbXYgJChOQU1FKSAkKFBLR19WRVIpOyBcCisJdGFyIGNmICQoUEtHX1ZFUikudGFyICQoUEtHX1ZFUik7IFwKKwlnemlwICQoUEtHX1ZFUikudGFyKQorCUBlY2hvICJBIGNvbXByZXNzZWQgYXJjaGl2ZSBvZiB0aGUgcGFja2FnZSdzIHNvdXJjZS1maWxlIHRyZWUgaGFzIGJlZW4gY3JlYXRlZC4iCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTWFjcm9zIGFuZCBydWxlcyBmb3IgdXBkYXRpbmcgdGhlIGJpbmFyeSBhbmQgc291cmNlIFJQTSBwYWNrYWdlIGZpbGVzLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZWRlZmluZSAnJV90b3BkaXInIHRvIGFsbG93IGFuIFJQTSBwYWNrYWdlIGZpbGUgdG8gYmUgYnVpbHQgYW55d2hlcmUsCisjIGluc3RlYWQgb2YgaW4gdGhlIC91c3Ivc3JjL3JlZGhhdCBkaXJlY3RvcnkgdHJlZS4KKyMKKyMgRG9uJ3Qgd2FudCAncnBtYnVpbGQnIHRvIHN0cmlwIHlvdXIgZXhlY3V0YWJsZSBwcm9ncmFtcz8KKyMgVGhlbiBhZGQgdGhpcyBsaW5lOgorIyAgIC0tZGVmaW5lPSdfb3NfaW5zdGFsbF9wb3N0IC91c3IvbGliL3JwbS9icnAtY29tcHJlc3MnIFwKKyMgdG8gdGhlIFJQTV9PUFRTIG1hY3JvIGRlZmluaXRpb24uICBUaGlzIHdpbGwgZWxpbWluYXRlIHRoZSAKKyMgc3RyaXBwaW5nIG9mIGJpbmFyaWVzLCBidXQgc3RpbGwgcmV0YWluIHRoZSBjb21wcmVzc2lvbiBvZgorIyBtYW51YWwgcGFnZXMuCisjCitpZmVxICgkKFdJVEhfUEVSTCksMCkKK1BFUkxPUFRTID0gLS13aXRob3V0IHBlcmxfbW9kdWxlcworZW5kaWYKK2lmZXEgKCQoRU1CRURfUEVSTCksMCkKK1BFUkxPUFRTICs9IC0td2l0aG91dCBlbWJlZGRlZF9wZXJsCitlbmRpZgorCitSUE1fT1BUUyA6PSBcCisgICAgLS1kZWZpbmU9J190b3BkaXIgJChSUE1fQkFTRSknIFwKKyAgICAtLWRlZmluZT0nX2luY2x1ZGVkaXIgL3Vzci9pbmNsdWRlL25ldC1zbm1wJyBcCisgICAgLS10YXJnZXQgJChBUkNIKSAkKFBFUkxPUFRTKQorCitTUEVDX0ZJTEUgIDo9ICQoTkFNRSkuc3BlYworUlBNX1NQRUMgICA6PSAkKFJQTV9CQVNFKS9TUEVDUy8kKFNQRUNfRklMRSkKKworQklOQVJZX1JQTSA6PSAkKFJQTV9CQVNFKS9SUE1TLyQoQVJDSCkvJChQS0dfVkVSKS0kKFJFTEVBU0UpLiQoQVJDSCkucnBtCitTT1VSQ0VfUlBNIDo9ICQoUlBNX0JBU0UpL1NSUE1TLyQoUEtHX1ZFUiktJChSRUxFQVNFKS5zcmMucnBtCisKK3JwbV9maWxlczoJJChHWklQX1RBUikgYWxsX3JwbV9maWxlcworYmluYXJ5X3JwbToJJChCSU5BUllfUlBNKQorc291cmNlX3JwbToJJChTT1VSQ0VfUlBNKQorcnBtX3RyZWU6ICQoUlBNX1RSRUUpCisKK2FsbF9ycG1fZmlsZXM6CSQoUlBNX1RSRUUpICQoUlBNX1NQRUMpCisJKGNkICQoUlBNX0JBU0UpL1NQRUNTOyBcCisJcnBtYnVpbGQgLWJhICQoUlBNX09QVFMpICQoU1BFQ19GSUxFKSkKKworJChCSU5BUllfUlBNKToJJChSUE1fVFJFRSkgJChSUE1fU1BFQykKKwkoY2QgJChSUE1fQkFTRSkvU1BFQ1M7IFwKKwlycG1idWlsZCAtYmIgJChSUE1fT1BUUykgJChTUEVDX0ZJTEUpKQorCiskKFNPVVJDRV9SUE0pOgkkKFJQTV9UUkVFKSAkKFJQTV9TUEVDKQorCShjZCAkKFJQTV9CQVNFKS9TUEVDUzsgXAorCXJwbWJ1aWxkIC1icyAkKFJQTV9PUFRTKSAkKFNQRUNfRklMRSkpCisKKyQoUlBNX1NQRUMpOgkkKFJQTV9CQVNFKS9TUEVDUyAkKFNQRUNfRklMRSkKKwljcCAkKFNQRUNfRklMRSkgJEAKKworJChSUE1fVFJFRSk6CisJbWtkaXIgLXAgJEAKKworJChTUEVDX0ZJTEUpOgorCUBlY2hvICJFUlJPUjogbWlzc2luZyAnJChTUEVDX0ZJTEUpJyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkiCisJQGV4aXQgMQorCitGT1JDRToKKworIyA9PT0gRW5kIG9mIE1ha2VmaWxlID09PSAjCmRpZmYgLS1naXQgYS9kaXN0L1JFQURNRS5idWlsZC1zY3JpcHRzIGIvZGlzdC9SRUFETUUuYnVpbGQtc2NyaXB0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTA2ZGZiCi0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9SRUFETUUuYnVpbGQtc2NyaXB0cwpAQCAtMCwwICsxLDEwOCBAQAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIFJFQURNRS5idWlsZC1zY3JpcHRzCisqCisqIEF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAZnJlZXNubXAuY29tPgorKgorKiAkSWQkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCitJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PQorCitUaGUgYXV0b21hdGVkIGJ1aWxkIHNjcmlwdCB3aWxsIGF1dG9tYXRpY2FsbHkgcnVuIGNvbmZpZ3VyZSwgJ21ha2UgYWxsJywKKydtYWtlIHRlc3QnIGFuZCAnbWFrZSBpbnN0YWxsJy4gTG9nIGZpbGVzIGFyZSBrZXB0IGZvciBlYWNoIHN0ZXAsIGFuZCB0aGUKK3NjcmlwdHMgc2hvdWxkIGFib3J0IHdoZW4gZXJyb3JzIG9jY3VyLgorCitUaGUgdXNhZ2Ugb2YgbnNiLXBhY2thZ2UgaXM6CisKKyBVc2FnZTogbnNiLXBhY2thZ2UgWy1jXSBbLWRdIFstcF0gWy1zIFNSQ0RdIFstYiBCVUlMRERdIFstaSBJTlNUQUxMRF0gVkVSU0lPTgorICAKKyAgICBWRVJTSU9OICAgIDogcmVsZWFzZSBudW1iZXIgKGVnIDUuMi4yKQorICAgIC1zIFNSQ0RJUiAgOiBzb3VyZSBkaXJlY3RvcnkgWyRIT01FL3NyYy9uZXQtc25tcC1WRVJTSU9OXQorICAgIC1iIEJVSUxERCAgOiBidWlsZCBkaXJlY3RvcnkgWyRIT01FL2J1aWxkL10KKyAgICAgICAgICAgICAgICAgTk9URS1wbGF0Zm9ybSB3aWxsIGJlIGFwcGVuZGVkIHRvIGJ1aWxkIGRpcmVjdG9yeQorICAgIC1pIElOU1RBTExEOiBpbnN0YWxsIGRpcmVjdG9yeSBbJEhPTUUvYnVpbGQvXCRQTEFURk9STS91c3IvbG9jYWxdCisgICAKKyAgICAtYyA6IHNraXAgY29uZmlndXJlCisgICAgLWQgOiBkaXJ0eSBidWlsZCAoZG9uJ3QgbWFrZSBkaXN0Y2xlYW4pCisgICAgLW0gOiBza2lwICdtYWtlIGFsbCcKKyAgICAtcCA6IGRvbid0IHBhdXNlIGF0IHByb21wdHMgaW4gYmV0d2VlbiBzdGFnZXMKKyAgICAtdCA6IHNraXAgJ21ha2UgdGVzdCcKKworCitUaGUgZGVmYXVsdHMgYXNzdW1lIHlvdSBoYXZlIGEgJ3NyYycsICdidWlsZCcgYW5kICdiaW5hcmllcycgZGlyZWN0b3J5IGluCit5b3VyIGhvbWUgZGlyZWN0b3J5LgorCisKKworUmVjb21tZW5kZWQgUHJvY2VkdXJlCis9PT09PT09PT09PT09PT09PT09PT0KKworMSkgTG9nIGludG8gU291cmNlZm9yZ2UgQ29tcGlsZSBGYXJtIFNlcnZlcgorCisyKSBVcGRhdGUgc291cmNlICh0aGlzIHdpbGwgbGlrZWx5IGJlIGF1dG9tYXRlZCBpbiB0aGUgZnV0dXJlKQorCisgICBGb3IgZXhhbXBsZSwgZm9yIHJlbGVhc2UgNS4wLjM6CisKKyAgICQgY2Qgfi9zcmMKKyAgICQgQ1ZTX1JTSD1zc2ggY3ZzIC1kICRVU0VSQGN2cy5uZXQtc25tcC5vcmc6L2N2c3Jvb3QvbmV0LXNubXAgXAorICAgICAgICAgLXEgY28gLXIgRXh0LTUtMC0zIC1kIH4vc3JjL25ldC1zbm1wLUV4dC01LTAtMyBuZXQtc25tcAorCiszKSBSdW4gdGhlIHBhY2thZ2Ugc2NyaXB0LiAKKworICAgJCAkSE9NRS9zcmMvbmV0LXNubXAtY3ZzL2Rpc3QvbnNiLXBhY2thZ2UgLXIgXAorICAgICAgICAtcyAkSE9NRS9zcmMvbmV0LXNubXAtNS4wLjUgNS4wLjUKKworNCkgQ3JlYXRlIHRhcmJhbGwgKGFzc3VtaW5nIG5vIGVycm9yczsgc2VlIG5leHQgc2VjdGlvbiBpZiB0aGVyZSBhcmUgZXJyb3JzKQorCisgICAkIGNkIH4vYnVpbGQvYG5zYi1wbGF0Zm9ybWAKKyAgICQgdGFyIGN2ZiBuZXQtc25tcC01LjAuMy1gbnNiLXBsYXRmb3JtYC50YXIgdXNyCisgICAkIGd6aXAgLS1iZXN0ICoudGFyCisKKzUpIENvcHkgdGFyYmFsbCB0byBTb3VyY2Vmb3JnZSBzaGVsbCBzZXZlcgorCisgICAkIHNjcCAqLmd6IG5ldC1zbm1wLnNvdXJjZWZvcmdlLm5ldDp+L2JpbmFyaWVzLworCis2KSBMb2cgb3V0IG9mIGNvbXBpbGUgZmFybSBzZXJ2ZXIsIGxvZyBpbnRvIHNoZWxsIHNlcnZlcgorCis3KSBVcGxvYWQgdG8gU291cmNlZm9yZ2UKKworICAgJCBmdHAgdXBsb2FkLnNvdXJjZWZvcmdlLm5ldAorICAgICA+YmluCisgICAgID5wdXQgKi5negorCis4KSBVcGRhdGUgYmluYXJpZXMgdmlhIFNvdXJjZWZvcmdlIGFkbWluIHBhZ2UKKworCisKK0J1aWxkcyB3aXRoIGVycm9ycworPT09PT09PT09PT09PT09PT09CisKK1Nob3VsZCB5b3UgZW5jb3VudGVyIGEgYnVpbGQgZXJyb3IsIHlvdSB3aWxsIG1vc3QgbGlrZWx5IHdhbnQgdG8gc2tpcCB0aGUKKydtYWtlIGRpc3RjbGVhbicgYW5kIGNvbmZpZ3VyZSBzdGVwIChhc3N1bWluZyB0aGUgcHJvYmxlbSB3YXNuJ3Qgd2l0aAorY29uZmlndXJlISkuIFRvIGRvIHRoaXMsIHNwZWNpZnkgdGhlICdkaXJ0eScgYW5kICdza2lwIGNvbmZpZ3VyZScgb3B0aW9uczoKKworICAgJCBuc2ItcGFja2FnZSAtcCAtZCAtYyBFeHQtNS0wLTMKKworCitTaG91bGQgdGhlIGJ1aWxkIHN1Y2NlZWQsIGJ1dCBzb21lIHRlc3RzIGZhaWwgZHVyaW5nICdtYWtlIHRlc3QnLCB5b3UgcHJvYmFibHkKK2NhbiB0byBza2lwIHRoZSB0ZXN0IHN0ZXAgdG8gZ2V0IHRvIHRoZSBpbnN0YWxsIHN0ZXA6CisKKyAgICQgbnNiLXBhY2thZ2UgLXAgLWQgLWMgLXQgRXh0LTUtMC0zCisKKworT1RIRVIgUFJPQkxFTVMKKy0tLS0tLS0tLS0tLS0tCisqICJDYW5ub3QgZmluZCBuc2ItZnVuY3Rpb25zIgorICAKKyAgIEl0J3MgYSBoYWNrLCBidXQgc3ltbGluayBuc2ItZnVuY3Rpb25zIGFuZCBuc2ItcGFja2FnZSB0byB5b3VyIGxvY2FsCisgICBiaW4gZGlyZWN0b3J5ICgkSE9NRS9iaW4pLiAgSSdtIHRyeWluZyB0byB0aGluayBvZiBhIGJldHRlciBzb2x1dGlvbi4KKworKiAiZ2NjOiBzbm1wX3ZlcnNpb24ubG86IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiCisKKyAgIFRoaXMgaXMgYSBnb29kIGluZGljYXRpb24gdGhhdCB5b3UgaGF2ZSBwcmV2aW91c2x5IGJ1aWxkIGluIHlvdXIKKyAgIHNvdXJjZSBkaXJlY3RvcnkuICdtYWtlIGRpc3RjbGVhbicgaW4geW91ciBzb3VyY2UgZGlyZWN0b3J5LCBvcgorICAgY2hlY2sgb3V0IGEgZnJlc2ggbmV3IHZlcnNpb24gZnJvbSBDVlMuCmRpZmYgLS1naXQgYS9kaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TIGIvZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmE0MTYxCi0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUwpAQCAtMCwwICsxLDEwMDEgQEAKK1RoaXMgaXMgYSBzdW1tYXJ5IG9mIHRoZSBzdGVwcyByZXF1aXJlZCB0byBtYWtlIGEgbmV3IHJlbGVhc2UuICBEbyBub3QKK2F0dGVtcHQgdG8gcnVuIHRoZXNlIG1hbnVhbGx5IC0gaW5zdGVhZCB1c2UgdGhlICdtYWtlcmVsZWFzZScKK2FwcGxpY2F0aW9uIGFuZCBtYWtlcmVsZWFzZS54bWwgZmlsZS4gIEdldCAnbWFrZXJlbGVhc2UnIGZyb20gdGhlCittYWtlcmVsZWFzZSBTVk4gcmVwb3NpdG9yeToKKworICBzdm4gY28gaHR0cHM6Ly9tYWtlcmVsZWFzZS5zdm4uc291cmNlZm9yZ2UubmV0L3N2bnJvb3QvbWFrZXJlbGVhc2UvdHJ1bmsvbWFrZXJlbGVhc2UKKyAgY2QgbWFrZXJlbGVhc2UKKyAgcGVybCBNYWtlZmlsZS5QTAorICBtYWtlCisgIHN1ZG8gbWFrZSBpbnN0YWxsCisKK1RoZW4gdG8gcnVuIGl0IGZyb20gYSBkaXJlY3RvcnkgdG8gcmVsZWFzZToKKworICBtYWtlcmVsZWFzZSAtYyBORVRTTk1QVFJVTksvZGlzdC9tYWtlcmVsZWFzZS54bWwKKworSXQgd2lsbCBwcm9tcHQgeW91IGZvciBhbGwgbmVlZGVkIGluZm9ybWF0aW9uIGFuZCB0YXNrcyB0byBiZSBkb25lLgorCitJTVBPUlRBTlQgTk9URToKKyAgICBEb24ndCAqZXZlciogcmVsZWFzZSBhIHNlY29uZCB0YXIgYmFsbCB1bmRlciB0aGUgc2FtZSBuYW1lIGFzIHRoZQorICAgIGZpcnN0LiAgSXQncyBtdWNoIG11Y2ggbXVjaCBiZXR0ZXIgdG8gcmVsZWFzZSBhbm90aGVyIHZlcnNpb24KKyAgICBpbnN0ZWFkLCBzaW5jZSB5b3UgZG9uJ3QgaGF2ZSB0byBmaWd1cmUgb3V0IGZyb20gdGhlIGJ1ZyByZXBvcnRzCisgICAgdGhhdCBhIHVzZXIgcmVhbGx5IGdyYWJiZWQgdGhlIGZpcnN0IHNuYXBzaG90IGluc3RlYWQgb2YgdGhlCisgICAgc2Vjb25kIHdoZW4gdGhleSBjb21wbGFpbiBhYm91dCB2ZXJzaW9uICJYWFgiIG5vdCB3b3JraW5nLgorCis9PT09PT0gbWFrZXJlbGVhc2UgLW4gb3V0cHV0IHNob3dpbmcgbWFrZXJlbGVhc2UgZG9jdW1lbnRlZCBzdGVwcyA9PT09PT0KKworU1RFUDogMTogU2V0dXAgU3RlcHMKKworICBUaGlzIHNldCBvZiBzdGVwcyB3aWxsIGRvIHNvbWUgcHJlbGltaW5hcnkgInNhZmV0eSIgY2hlY2tzIHRvIGVuc3VyZSB0aGUKKyAgbG9jYWwgZW52aXJvbm1lbnQgaXMgb2sgYW5kIHNldHVwIHNvbWUgaW1wb3J0YW50IGluZm9ybWF0aW9uLgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDEgPT09PT0KKworU1RFUDogMS4xOiBTZXR1cCBDaGVjY2sKKworICBUaGlzIHNob3VsZCBzaG93IHRoZSBsYXN0IHZlcnNpb24gbnVtYmVyIHB1Ymxpc2hlZCBpbiB0aGlzIGJyYW5jaCBieQorICBsb29raW5nIGF0IHRoZSB0aW1lIGxpbmUgaW4gdGhlIFJFQURNRSBmaWxlOgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBoZWFkIC0xIFJFQURNRQorCitTVEVQOiAxLjI6IFBpY2sgYSBWZXJzaW9uIE51bWJlcgorCisgIFBsZWFzZSBlbnRlciB0aGUgdmVyc2lvbiBudW1iZXIgdG8gcHVibGlzaC4gIE5ldC1TTk1QIGNvbnZlbnRpb24gZGljdGF0ZXMKKyAgdGhhdCB0aGlzIGJlIGEgdmVyc2lvbiBudW1iZXIgbGlrZSA1LjQgb3IgNS40LjEuICBQcmUtcmVsZWFzZXMgdGhhdCBvY2N1cgorICBiZWZvcmUgYSBicmFuY2ggZnJlZXplcyBzaG91bGQgYmUgYXBwZW5kZWQgd2l0aCAiLnByZU4iIGxpa2UgNS40LjEucHJlMi4gCisgIFJlbGVhc2UtY2FuZGlkYXRlcyBzaG91bGQgYmUgbGFiZWxlZCAiLnJjTiIgbGlrZSA1LjQuMS5yYzEuCisKKyAgRGVjaWRlIG9uIGEgdmFsdWUgZm9yIHBhcmFtZXRlciAnVkVSU0lPTicKKworICAgIHBhcmFtZXRlcjogVkVSU0lPTgorCisgICAgcHJvbXB0OiAgICBFbnRlciB0aGUgbmV3IHZlcnNpb24gbnVtYmVyOgorCitTVEVQOiAxLjM6IERlZmluaW5nIGEgc2Vjb25kIGludGVybmFsIHZlcnNpb24gc3RyaW5nCisKKyAgSW50ZXJuYWwgcGVybCBjb2RlIHdpbGwgYmUgZXhlY3V0ZWQKKworU1RFUDogMS40OiBSZWxlYXNlIFBhcmFtZXRlciBJbmZvcm1hdGlvbgorCisgIEhlcmUgaXMgdGhlIGNvbmZpZ3VyZWQgaW5mb3JtYXRpb24gd2UnbGwgYmUgdXNpbmc6CisKKyAgVkVSU0lPTjoJCSAgIHtWRVJTSU9OfQorCisgIFZFUlNJT04gd2l0aCBkYXNoZXM6CSAgIHtWRVJTSU9OREFTSEVTfQorCisgIEZsb2F0aW5nIHBvaW50IFZFUlNJT046ICB7VkVSU0lPTkZMT0FUfQorCisgIFNWTiBCcmFuY2ggVVJMOgkgICB7QlJBTkNIUEFUSH0KKworU1RFUDogMS41OiB1cGRhdGUKKworICBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB5b3VyIGNvZGUgaXMgdXAgdG8gZGF0ZSBhbmQgbWF0Y2hlcyB0aGUgbGF0ZXN0CisgIHNvdXJjZXMgaW4gdGhpcyBicmFuY2guCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biB1cGRhdGUKKworU1RFUDogMS42OiBDaGVjayBmb3IgY2hhbmdlcworCisgIFRoaXMgc3RlcHMgbG9va3MgZm9yIG91dHN0YW5kaW5nIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiAgVGhlcmUKKyAgc2hvdWxkIGJlIG5vIG91dHN0YW5kaW5nIG1vZGlmaWNhdGlvbnMhICBJZiB0aGlzIHN0ZXAgZmluZHMgb3V0c3RhbmRpbmcKKyAgbW9kaWZpZWQgZmlsZXMgeW91IG5lZWQgdG8gY2hlY2sgdGhlbSBpbiBvciByZXZlcnQgdGhlbSBiZWZvcmUKKyAgY29udGludWluZyEKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIC11IHN0YXR1cyB8IGVncmVwICdeW15cP10nCisKKyAgKExlYXZpbmcgU3RlcDogMSkKKworU1RFUDogMjogU291cmNlIENvZGUgU2V0dXAKKworICBUaGlzIHNldCBvZiBzdGVwcyB3aWxsIG1vZGlmeSB2YXJpb3VzIHBsYWNlcyB3aXRoaW4gdGhlIHNvdXJjZSBjb2RlIHRyZWUKKyAgdG8gYnJpbmcgaXQgdXAgdG8gZGF0ZSB3aXRoIHRoZSBuZXcgdmVyc2lvbiBudW1iZXIgYWJvdXQgdG8gYmUgcHVibGlzaGVkLgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDIgPT09PT0KKworU1RFUDogMi4xOiBMaWJ0b29sIC8gTGlicmFyeSB2ZXJzaW9uaW5nIHNldHVwCisKKyAgVGhlc2Ugc3RlcHMgd2lsbCBtb2RpZnkgdGhlIHZhcmlvdXMgZmlsZXMgaW4gdGhlIHNvdXJjZSB0cmVlIHRoYXQgY29udGFpbgorICB0aGUgdmVyc2lvbiBudW1iZXIsIHNob3cgeW91IHRoZSBjaGFuZ2VzIHRoYXQgd2lsbCBiZSBtYWRlIGFuZCB0aGVuIGNoZWNrCisgIGluIHRoZSByZXN1bHRpbmcgY2hhbmdlcyBpZiB5b3UgYXBwcm92ZSBvZiB0aGVtLgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDIuMSA9PT09PQorCitTVEVQOiAyLjEuMTogdmVyc2lvbjpsaWJ0b29sbWFudWFsZWRpdAorCisgIFlvdSAobWF5KSBuZWVkIHRvIGVkaXQgTWFrZWZpbGUudG9wIHRvIHVwZGF0ZSB0aGUgbGlicmFyeSB2ZXJzaW9uCisgIG51bWJlcmluZyAodXN1YWxseSBqdXN0IGZvciB0aGUgZmlyc3QgcHJlLXJlbGVhc2Ugb2YgYSBnaXZlbiB2ZXJzaW9uKS4gCisgIFNlZSB0aGUgY29tbWVudHMgaW4gUkVMRUFTRS1JTlNUUlVDVElPTlMgYWJvdXQgTElCQ1VSUkVOVCwgTElCQUdFIGFuZAorICBMSUJSRVZJU0lPTi4KKworICBUaGlzIHNjcmlwdCB3aWxsIGNvbW1pdCB0aGUgZmlsZSBmb3IgeW91IGFmdGVyIHlvdSdyZSBkb25lLgorCitTVEVQOiAyLjEuMjogdmVyc2lvbjpjb21taXQKKworICBXZSdsbCBub3cgY29tbWl0IHRoZSBNYWtlZmlsZS50b3AgZmlsZSBpZiB5b3UndmUgbW9kaWZpZWQgaXQuCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biBjb21taXQgLW0gInZlcnNpb24gdXBkYXRlIiBNYWtlZmlsZS50b3AKKworICAoTGVhdmluZyBTdGVwOiAyLjEpCisKK1NURVA6IDIuMjogQ2hhbmdlIFRoZSBWZXJzaW9uIE51bWJlcgorCisgIFRoZXNlIHN0ZXBzIHdpbGwgbW9kaWZ5IHRoZSB2YXJpb3VzIGZpbGVzIGluIHRoZSBzb3VyY2UgdHJlZSB0aGF0IGNvbnRhaW4KKyAgdGhlIHZlcnNpb24gbnVtYmVyLCBzaG93IHlvdSB0aGUgY2hhbmdlcyB0aGF0IHdpbGwgYmUgbWFkZSBhbmQgdGhlbiBjaGVjaworICBpbiB0aGUgcmVzdWx0aW5nIGNoYW5nZXMgaWYgeW91IGFwcHJvdmUgb2YgdGhlbS4KKworICA9PT09PSBFbnRlcmluZyBTdGVwOiAyLjIgPT09PT0KKworU1RFUDogMi4yLjE6IE1vZGlmeSB0aGUgc291cmNlIGZpbGVzCisKKyAgV2Ugd2lsbCBub3cgbW9kaWZ5IGZpbGVzIHRocm91Z2ggdGhlIGNvZGUgdG8gcmVwbGFjZSB0aGUgdmVyc2lvbiBudW1iZXIKKyAgd2l0aCB0aGUgbmV3ZXIgb25lLgorCisgIE1vZGlmeWluZyBmaWxlczoKKworICAgIHJlcGxhY2luZzogJ1ZFUlNJT04gPSAnKC4qKScnIHdpdGg6ICdWRVJTSU9OID0gXCd7VkVSU0lPTkZMT0FUfVwnJworCisKKyAgICBmaWxlczogIGdsb2I9QVJSQVkoMHg4ZGM5MDY0KQorCisgICAgICBwZXJsL1NOTVAvU05NUC5wbQorCisgICAgICBwZXJsL2FnZW50L2FnZW50LnBtCisKKyAgICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtCisKKyAgICAgIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisKKyAgICAgIHBlcmwvT0lEL09JRC5wbQorCisgICAgICBwZXJsL0FTTi9BU04ucG0KKworICAgICAgcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbQorCisgICAgICBwZXJsL0FueURhdGFfU05NUC9Gb3JtYXQucG0KKworICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtCisKKworCisgIE1vZGlmeWluZyBmaWxlczoKKworICAgIHJlcGxhY2luZzogJ05ldFNubXBWZXJzaW9uSW5mbyA9ICJbXGRcLl0rIicgd2l0aDogJ05ldFNubXBWZXJzaW9uSW5mbyA9CisgICJ7VkVSU0lPTn0iJworCisKKyAgICBmaWxlczogIGdsb2I9QVJSQVkoMHg4ZGM4ZmQ0KQorCisgICAgICBzbm1wbGliL3NubXBfdmVyc2lvbi5jCisKKworCisgIE1vZGlmeWluZyBmaWxlczoKKworICAgIHJlcGxhY2luZzogJ1ZlcnNpb246IFtcLjAtOWEtekEtWl0rJyB3aXRoOiAnVmVyc2lvbjoge1ZFUlNJT059JworCisKKyAgICBmaWxlczogIGdsb2I9QVJSQVkoMHg4ZGM4ZjQ0KQorCisgICAgICBSRUFETUUKKworICAgICAgRkFRCisKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYworCisKKworICBNb2RpZnlpbmcgZmlsZXM6CisKKyAgICByZXBsYWNpbmc6ICdWRVJTSU9OID0gW1wuMC05YS16QS1aXSsnIHdpdGg6ICdWRVJTSU9OID0ge1ZFUlNJT059JworCisKKyAgICBmaWxlczogIGdsb2I9QVJSQVkoMHg4ZGM4ZWQ0KQorCisgICAgICBkaXN0L01ha2VmaWxlCisKKworCisgIE1vZGlmeWluZyBmaWxlczoKKworICAgIHJlcGxhY2luZzogJ0FDX0lOSVRcKFxbTmV0LVNOTVBcXSwgXFsoW15cXV0rKVxdJyB3aXRoOgorICAnQUNfSU5JVChbTmV0LVNOTVBdLCBbe1ZFUlNJT059XScKKworCisgICAgZmlsZXM6ICBnbG9iPUFSUkFZKDB4OGRjOGU2NCkKKworICAgICAgY29uZmlndXJlLmluCisKKworCisgIE1vZGlmeWluZyBmaWxlczoKKworICAgIHJlcGxhY2luZzogJ05ldFNubXBWZXJzaW9uSW5mbyA9ICJbXiJdKyInIHdpdGg6ICdOZXRTbm1wVmVyc2lvbkluZm8gPQorICAie1ZFUlNJT059IicKKworCisgICAgZmlsZXM6ICBnbG9iPUFSUkFZKDB4OGRjOGRmNCkKKworICAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYworCisKKworU1RFUDogMi4yLjI6IFJ1bm5pbmcgYXV0b2NvbmYgdG8gcmVidWlsZCBjb25maWd1cmUKKworICBXZSBtb2RpZmllZCBjb25maWd1cmUuaW4sIHNvIHdlIG5vdyBuZWVkIHRvIHJ1biBhdXRvY29uZiB0byByZWJ1aWxkCisgIGNvbmZpZ3VyZS4KKworICBYWFg6IGluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIHZlcmlmeSB0aGUgY29ycmVjdCBhdXRvY29uZiB2ZXJzaW9uIG51bWJlcgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBhdXRvY29uZgorCitTVEVQOiAyLjIuMzogUnVubmluZyBzdm4gZGlmZiB0byBjaGVjayBjaGFuZ2VzCisKKyAgQ2hlY2sgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIGZvciBwcm9wZXIgdmVyc2lvbiBudW1iZXIgZGlmZmVyZW5jZXMgYmVmb3JlCisgIHdlIGNvbW1pdCB0aGUgY2hhbmNlcy4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIGRpZmYKKworU1RFUDogMi4yLjQ6IFJ1bm5pbmcgc3ZuIGNvbW1pdCB0byBjb21taXQgdGhlIGNoYW5nZXMKKworICBDaGVjayB0aGUgY2hhbmdlcyBpbiB0aGUgYWJvdmUgZGlmZiBhbmQgdGhlbiB3ZSdsbCBjb21taXQgdGhlIHJlc3VsdHMKKyAgaGVyZSBpZiB0aGV5IGxvb2sgb2suCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biBjb21taXQgLW0gIlZlcnNpb24gbnVtYmVyIHVwZGF0ZSIKKworICAoTGVhdmluZyBTdGVwOiAyLjIpCisKK1NURVA6IDIuMzogZG9jczptYWtlCisKKyAgVGhpcyBzdGVwIHdpbGwgY3JlYXRlIG1hbnVhbCBwYWdlcyBmcm9tIGRveHlnZW4gaW5zdHJ1bWVudGVkIGNvZGUgZmlsZXMuCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIG1ha2UgZG9jcworCisgICAgbWFrZSBtYW5jcAorCitTVEVQOiAyLjQ6IGRvY3M6dXBkYXRlCisKKyAgVGhpcyB3aWxsIHJ1biBzdm4gc3RhdHVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBmaWxlcyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlCisgIHByZXZpb3VzIG1hbiBwYWdlIGdlbmVyYXRpb24gc3RlcHMgd2VyZSBkb25lLiAgQWZ0ZXIgdGhpcyBzdGVwLCB3ZSdsbAorICBjb21taXQgYWxsIHRoZSBtb2RpZmllZCBmaWxlcy4KKworICBZb3UgbWF5IGZpbmQgYWRkaXRpb25hbCBmaWxlcyAobWFya2VkIHdpdGggYSA/KSB0aGF0IHNob3VsZCBiZSBhZGRlZCB0bworICB0aGUgc3ZuIHJlcG9zaXRvcnkgYW5kIHlvdSdsbCBuZWVkIHRvIGRvIHRoaXMgYnkgaGFuZCBiZWZvcmUgZ29pbmcgb24gdG8KKyAgdGhlIG5leHQgc3RlcC4KKworICBOb3RlOiBiYXNlZCBvbiBhIHJlY2VudCBuZXQtc25tcC1hZG1pbiBkaXNjdXNzaW9uLCB3ZSdyZSBubyBsb25nZXIgZ29pbmcKKyAgdG8gYmUgYWRkaW5nIHRoZSBiYXppbGxpb25zIG9mIG1hbiBwYWdlcyB0aGF0IGRveHlnZW4gZ2VuZXJhdGVzIGJ5CisgIGRlZmF1bHQuICBPbmx5IGltcG9ydGFudCBvbmVzIHNob3VsZCBiZSBhZGRlZC4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIC11IHN0YXR1cyBtYW4KKworU1RFUDogMi41OiBkb2NzOm1hbnVhbGFkZG5ld21hbgorCisgIFVwZGF0ZSBtYW4vTWFrZWZpbGUuaW4gd2l0aCBkZXRhaWxzIG9mIGFueSBuZXcgbWFuIHBhZ2VzLCBhbmQgcnVuICdzdm4KKyAgYWRkJyBvbiB0aGVtLgorCisgIEknbGwgY29tbWl0IHRoZXNlIGNoYW5nZXMgZm9yIHlvdSBhZnRlciB5b3UncmUgZG9uZS4KKworU1RFUDogMi42OiBkb2NzOmNvbW1pdAorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBzdm4gY29tbWl0IC1tICJkb2N1bWVudGF0aW9uIHVwZGF0ZSIgbWFuCisKKyAgKExlYXZpbmcgU3RlcDogMikKKworU1RFUDogMzogVGVzdGluZyBTdGVwcworCisgIFRoZXNlIHN0ZXBzIHdpbGwgaGVscCB5b3UgdGVzdCB0aGUgc291cmNlIGNvZGUgdG8gZW5zdXJlIGl0IHBhc3NlcyBzb21lCisgIHNpbXBsZSAiaXQgd29ya3MiIHRlc3RzLgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDMgPT09PT0KKworU1RFUDogMy4xOiBidWlsZDpkaXN0Y2xlYW4KKworICBGaXJzdCB3ZSBuZWVkIHRvIGNsZWFuIHRoZSBleGlzdGluZyBidWlsZCB0cmVlIGFuZCBzdGFydCBmcm9tIHNjcmF0Y2guCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIG1ha2UgZGlzdGNsZWFuCisKK1NURVA6IDMuMjogYnVpbGQ6Y29uZmlndXJlCisKKyAgV2UgbmVlZCB0byBydW4gY29uZmlndXJlIHRvIHNldCB1cCB0aGUgYnVpbGQgdHJlZS4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgLi9jb25maWd1cmUgLS1jYWNoZT1jb25maWcuY2FjaGUgLS13aXRoLWRlZmF1bHRzCisgIC0td2l0aC1taWItbW9kdWxlcz0naG9zdCBleGFtcGxlcyBleGFtcGxlcy9leGFtcGxlIHRlc3RoYW5kbGVyIHNtdXggUm1vbgorICBkaXNtYW4vZXZlbnQtbWliJyAtLXdpdGgtdHJhbnNwb3J0cz1JUFggLS1lbmFibGUtaXB2NgorICAtLWVuYWJsZS1lbWJlZGRlZC1wZXJsIC0tZW5hYmxlLXNoYXJlZAorCitTVEVQOiAzLjM6IGJ1aWxkOm1ha2UKKworICBUaGVuIHdlIG5lZWQgdG8gYnVpbGQgdGhlIGNvZGUKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgbWFrZQorCitTVEVQOiAzLjQ6IGJ1aWxkOnRlc3QKKworICBOb3cgd2UgcnVuICJtYWtlIHRlc3QiIHdoaWNoIHNob3VsZCBwcm9kdWNlIGEgcGVyZmVjdCBzZXQgdXAgdGVzdAorICByZXN1bHRzLiAgSWYgbm90LCB0aGlzIG5lZWRzIHRvIGJlIGZpeGVkIG9yIGF0IGxlYXN0IHVuZGVyc3Rvb2QgYW5kCisgIGFjY2VwdGVkIGFzIGlzIGZvciBzb21lIG90aGVyIHJlYXNvbi4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgbWFrZSB0ZXN0IFRFU1RPUFRTPS1uCisKK1NURVA6IDMuNTogY29kZTpjaGVja2NvbW1lbnRzCisKKyAgVGhpcyBjb21tYW5kIGxvb2tzIGZvciBzb3VyY2UgY29kZSBvZGRpdGllcyBhbmQgcG9saWN5IHZpb2xhdGlvbnMuCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIG1ha2UgY2hlY2tzCisKKyAgKExlYXZpbmcgU3RlcDogMykKKworU1RFUDogNDogUmVsZWFzZSBGaWxlIFN0ZXBzCisKKyAgQ2VydGFpbiBmaWxlcyBpbiB0aGUgZGlzdHJpYnV0aW9uIGFuZCBidWlsdCBvbiBhIHBlci1yZWxlYXNlIGJhc2lzLiAKKyAgVGhlc2Ugc3RlcHMgd2lsbCBoZWxwIHNldCB1cCB0aGVzZSBmaWxlcy4KKworICA9PT09PSBFbnRlcmluZyBTdGVwOiA0ID09PT09CisKK1NURVA6IDQuMTogY29kZTptYWtlZGVwZW5kCisKKyAgVGhpcyBzdGVwIGNyZWF0ZXMgTWFrZWZpbGUgZGVwZW5kZW5jaWVzIHVzaW5nIHRoZSAiZGlzdGRlcGVuZCIgcnVsZSBpbgorICB0aGUgdG9wIGxldmVsIE1ha2VmaWxlLgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBtYWtlIGRpc3RkZXBlbmQKKworU1RFUDogNC4yOiBjb2RlOmNvbW1pdGRlcGVuZAorCisgIFRoaXMgc3RlcCBjb21taXRzIHRoZSBkZXBlbmRlbmN5IGNoYW5nZXMgZG9uZSBpbiB0aGUgcHJldmlvdXMgc3RlcC4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIGNvbW1pdCAtbSAibWFrZSBkZXBlbmQiIGBmaW5kIC4gLW5hbWUgTWFrZWZpbGUuZGVwZW5kYAorCitTVEVQOiA0LjM6IGNoYW5nZWxvZzpzdm4yY2wKKworICBXZSBuZWVkIHRvIGV4dHJhY3QgdGhlIHBvcnRpb25zIG9mIHRoZSBjaGFuZ2UgbG9ncyBjb21taXR0ZWQgdG8gdGhlCisgIHJlcG9zaXRvcnkuCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2bjJjbCAtZiBDaGFuZ2VMb2cuYWRkIC0tYnJlYWstYmVmb3JlLW1zZyAtLXN0b3Atb24tY29weQorCisgICAgcGVybCBkaXN0L2NoYW5nZWxvZ2ZpeCAgPCBDaGFuZ2VMb2cuYWRkID4gQ2hhbmdlTG9nLnJlYWxseWFkZAorCitTVEVQOiA0LjQ6IGNoYW5nZWxvZzptYW51YWxlZGl0CisKKyAgWW91IG5lZWQgdG8gbWFudWFsbHkgaW5zZXJ0IHRoZSAqcmVsZXZlbnQqIHBvcnRpb25zIG9mCisgICdDaGFuZ2VMb2cucmVhbGx5YWRkJyBpbnRvIHRoZSBDaGFuZ2VMb2cgZmlsZS4gSSdsbCBjb21taXQgdGhlc2UgY2hhbmdlcworICBmb3IgeW91IGFmdGVyIHlvdSBmaW5pc2ggY3V0dGluZyBvdXQgdGhlIHByb3BlciBjaGFuZ2VzLgorCitTVEVQOiA0LjU6IGNoYW5nZWxvZzpjb21taXQKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIGNvbW1pdCAtbSAidmVyc2lvbiB1cGRhdGUiIENoYW5nZUxvZworCitTVEVQOiA0LjY6IGRvY3M6bmV3bmV3cworCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBwZXJsIGRpc3QvZXh0cmFjdG5ld3MgLXMgLS0tLS0gLWUgLS0tLS0gQ2hhbmdlTG9nCisKK1NURVA6IDQuNzogZG9jczpuZXduZXdzCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHBlcmwgZGlzdC9leHRyYWN0bmV3cyAtYyBDSEFOR0VTLm5ldzIgLW4gTkVXUy5uZXcyIENoYW5nZUxvZy5yZWFsbHlhZGQKKworU1RFUDogNC44OiBkb2NzOlJFQURNRQorCisgIFlvdSBuZWVkIHRvIG1hbnVhbGx5IGluc2VydCB0aGUgcmVsZXZlbnQgcG9ydGlvbnMgb2YgJ0NIQU5HRVMubmV3JyBhbmQKKyAgJ05FV1MubmV3JyBpbnRvIHRoZSBDSEFOR0VTIGFuZCBORVdTIGZpbGUuIChUaGVyZSBhcmUgYWx0ZXJuYXRpdmUKKyAgdmVyc2lvbnMgaW4gJ0NIQU5HRVMubmV3MicgYW5kICdORVdTLm5ldzInKSBZb3UgbWF5IHdpc2ggdG8gdXBkYXRlIHRoZQorICBSRUFETUUgZmlsZSBhcyB3ZWxsLiBJJ2xsIGNvbW1pdCB0aGVzZSBjaGFuZ2VzIGZvciB5b3UgYWZ0ZXJ3YXJkcworCitTVEVQOiA0Ljk6IGRvY3M6Y29tbWl0CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biBjb21taXQgLW0gInZlcnNpb24gdXBkYXRlIiBSRUFETUUgTkVXUyBDSEFOR0VTCisKK1NURVA6IDQuMTA6IHJlbGVhc2U6dXBkYXRlCisKKyAgT25lIG1vcmUgc3ZuIHVwZGF0ZSBhbmQgc3RhdHVzIHRvIG1ha2Ugc3VyZSBub3RoaW5nIG9kZCBleGlzdHMgaW4geW91cgorICBzb3VyY2UgdHJlZS4JUGxlYXNlIGNoZWNrIHRoZSByZXN1bHRzIQorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBzdm4gLXUgc3RhdHVzCisKKyAgKExlYXZpbmcgU3RlcDogNCkKKworU1RFUDogNTogTWFrZSB0aGUgUmVsZWFzZQorCisgIFRoaXMgaXMgaXQhICBBZnRlciB0aGlzIHBvaW50IGl0J3MgbXVjaCBoYXJkZXIgdG8gdHVybiBiYWNrLglJZgorICBldmVyeXRoaW5nIGlzIG9rIHVudGlsIHRoaXMgcG9pbnQgYW5kIHlvdSdyZSByZWFkeSB0byBhY3R1YWxseSBzdGFtcCB0aGUKKyAgcmVsZWFzZSBpbiBTVk4gYW5kIG1ha2UgcmVsZWFzZSBmaWxlcywgdGhlc2Ugc3RlcHMgd2lsbCBkbyB0aGF0IGZvciB5b3UuCisKKyAgPT09PT0gRW50ZXJpbmcgU3RlcDogNSA9PT09PQorCitTVEVQOiA1LjE6IHJlbGVhc2U6dGFnCisKKyAgVGhpcyB3aWxsIGFjdHVhbGx5IHN2biBjb3B5IHRoZSBjdXJyZW50IGNoZWNrZWQgb3V0IGJyYW5jaCB0byB0aGUgbmV3IHRhZworICBuYW1lLiAgU3BlY2lmaWNhbGx5OgorCisgIHN2biBjb3B5IHtCUkFOQ0hQQVRIfSAuLi4vdGFncy9FeHQte1ZFUlNJT05EQVNIRVN9CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biBjb3B5IC1tICJ7VkVSU0lPTn0gcmVsZWFzZSIge0JSQU5DSFBBVEh9CisgIGh0dHBzOi8vbmV0LXNubXAuc3ZuLnNvdXJjZWZvcmdlLm5ldC9zdm5yb290L25ldC1zbm1wL3RhZ3MvRXh0LXtWRVJTSU9OREEKKyAgU0hFU30KKworU1RFUDogNS4yOiByZWxlYXNlOm1ha2VkaXN0CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biBleHBvcnQKKyAgaHR0cHM6Ly9uZXQtc25tcC5zdm4uc291cmNlZm9yZ2UubmV0L3N2bnJvb3QvbmV0LXNubXAvdGFncy9FeHQte1ZFUlNJT05EQQorICBTSEVTfS9uZXQtc25tcCBuZXQtc25tcC17VkVSU0lPTn0KKworU1RFUDogNS4zOiByZWxlYXNlOnJlbW92ZWZpbGVzCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIG5ldC1zbm1wLXtWRVJTSU9OfS9yZW1vdmUtZmlsZXMgbmV0LXNubXAte1ZFUlNJT059CisKK1NURVA6IDUuNDogcmVsZWFzZTptYWtlZGlzdAorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBzdGFyIGFydHlwZT11c3RhciAtYyAteiAtZiBuZXQtc25tcC17VkVSU0lPTn0udGFyLmd6IAorICBuZXQtc25tcC17VkVSU0lPTn0KKworU1RFUDogNS41OiByZWxlYXNlOm1ha2V6aXBjbGVhbgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBybSAtZiBuZXQtc25tcC17VkVSU0lPTn0uemlwCisKK1NURVA6IDUuNjogcmVsZWFzZTptYWtlemlwCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHppcCAtciBuZXQtc25tcC17VkVSU0lPTn0uemlwICBuZXQtc25tcC17VkVSU0lPTn0KKworU1RFUDogNS43OiByZWxlYXNlOnNlYXJjaGluZy1ncGcta2V5cworCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBncGcgLS1saXN0LXNlY3JldC1rZXlzIG5ldC1zbm1wLWFkbWluCisKK1NURVA6IDUuODogcmVsZWFzZTpncGcKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgZ3BnIC11IDMxN0Y4RjY0IC1hIC0tZGV0YWNoLXNpZ24gbmV0LXNubXAte1ZFUlNJT059LnRhci5negorCitTVEVQOiA1Ljk6IHJlbGVhc2U6Z3BnCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGdwZyAtdSAzMTdGOEY2NCAtYSAtLWRldGFjaC1zaWduIG5ldC1zbm1wLXtWRVJTSU9OfS56aXAKKworU1RFUDogNS4xMDogUmVsZWFzZSBGaWxlIFRlc3QKKworICBXZSdsbCBhbHNvIHJlLWJ1aWxkIHRoZSBzb3VyY2UgYW5kIHJldGVzdCBhIGZldyB0aGluZ3MgdG8gZW5zdXJlIHRoZQorICBwYWNrYWdlZCBmaWxlIGNhbiBhY3R1YWxseSBiZSBidWlsdC4KKworICA9PT09PSBFbnRlcmluZyBTdGVwOiA1LjEwID09PT09CisKK1NURVA6IDUuMTAuMTogcG9zdHRlc3Q6dW50YXIKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgcm0gLXJmIG5ldC1zbm1wLXtWRVJTSU9OfQorCitTVEVQOiA1LjEwLjI6IHBvc3R0ZXN0OnVudGFyCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHRhciB4emYgbmV0LXNubXAte1ZFUlNJT059LnRhci5negorCitTVEVQOiA1LjEwLjM6IHBvc3R0ZXN0OmNvbmZpZ3VyZQorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBjZCBuZXQtc25tcC17VkVSU0lPTn0gJiYgLi9jb25maWd1cmUgLS1jYWNoZT1jb25maWcuY2FjaGUKKyAgLS13aXRoLWRlZmF1bHRzIC0td2l0aC1taWItbW9kdWxlcz0naG9zdCBleGFtcGxlcyBleGFtcGxlcy9leGFtcGxlCQorICB0ZXN0aGFuZGxlciBzbXV4IFJtb24gZGlzbWFuL2V2ZW50LW1pYicgLS13aXRoLXRyYW5zcG9ydHM9SVBYCisgIC0tZW5hYmxlLWlwdjYgLS1lbmFibGUtZW1iZWRkZWQtcGVybCAtLWVuYWJsZS1zaGFyZWQKKworU1RFUDogNS4xMC40OiBwb3N0dGVzdDptYWtlCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGNkIG5ldC1zbm1wLXtWRVJTSU9OfSAmJiBtYWtlCisKK1NURVA6IDUuMTAuNTogcG9zdHRlc3Q6dGVzdAorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBjZCBuZXQtc25tcC17VkVSU0lPTn0gJiYgbWFrZSB0ZXN0CisKKyAgKExlYXZpbmcgU3RlcDogNS4xMCkKKworICAoTGVhdmluZyBTdGVwOiA1KQorCitTVEVQOiA2OiBSZWxlYXNlIHRoZSByZXN1bHRzCisKKyAgTm93IHdlJ2xsIHB1Ymxpc2ggdGhlIHJlc3VsdHMgdG8gdGhlIFNGIHNlcnZlcgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDYgPT09PT0KKworU1RFUDogNi4xOiByc3luYyB0aGUgbmV3IGZpbGVzCisKKyAgVGhpcyB3aWxsIGNvcHkgdGhlIHJlc3VsdHMgdG8gdGhlIFNGIHVwbG9hZHMgZGlyZWN0b3J5IGluIHlvdXIgYWNjb3VudCBvbgorICBmcnMuc291cmNlZm9yZ2UubmV0CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHJzeW5jIC12IG5ldC1zbm1wLXtWRVJTSU9OfS50YXIuZ3ogbmV0LXNubXAte1ZFUlNJT059LnRhci5nei5hc2MKKyAgbmV0LXNubXAte1ZFUlNJT059LnppcCBuZXQtc25tcC17VkVSU0lPTn0uemlwLmFzYworICBmcnMuc291cmNlZm9yZ2UubmV0OnVwbG9hZHMvCisKK1NURVA6IDYuMjogVXBkYXRlIHRoZSBTRiByZWxlYXNlIHdlYiBwYWdlCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGZpcmVmb3gKKyAgJ2h0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9hZG1pbi9lZGl0cGFja2FnZXMucGhwP2dyb3VwX2lkPTEyNjk0JworCisgIChMZWF2aW5nIFN0ZXA6IDYpCisKK1NURVA6IDc6IAorCisgIEJpbmFyaWVzOiBidWlsZCBycG1zLCAudGFyLmd6cywgZXRjLgorCitTVEVQOiA4OiBBZHZlcnRpc2UgaXQhCisKKyAgPT09PT0gRW50ZXJpbmcgU3RlcDogOCA9PT09PQorCitTVEVQOiA4LjE6IAorCisgIEFkZCBhIG5vdGUgdG8gdGhlIHNvdXJjZSBmb3JnZSBuZXdzIHN5c3RlbToKKworICBodHRwOi8vc291cmNlZm9yZ2UubmV0L25ld3Mvc3VibWl0LnBocD9ncm91cF9pZD0xMjY5NAorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBmaXJlZm94ICdodHRwOi8vc291cmNlZm9yZ2UubmV0L25ld3Mvc3VibWl0LnBocD9ncm91cF9pZD0xMjY5NCcKKworU1RFUDogOC4yOiAKKworICBTZW5kIGFuIGFubm91bmNlbWVudCBtZXNzYWdlIHRvIG9uZSBvZiB0aGUgZm9sbG93aW5nIG1haWxpbmcgbGlzdHMgYmFzZWQKKyAgb24gaXQncyB0eXBlOgorCisgIHByZToJICBuZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0CisKKyAgcmM6CSAgbmV0LXNubXAtdXNlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0CisKKyAgZmluYWw6ICBuZXQtc25tcC1hbm5vdW5jZUBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKKworU1RFUDogOC4zOiAKKworICBVcGRhdGUgdGhlIHRvcGljIG9uIHRoZSAjTmV0LVNOTVAgY2hhbm5lbCBpZiB0aGlzIGlzIGEgdHJ1bmsgYmFzZWQKKyAgcmVsZWFzZS4KKworU1RFUDogOC40OiAKKworICBVcGRhdGUgdGhlIGZyZXNobWVhdCBsaXN0aW5nIChXZXMgbmVlZHMgdG8gZG8gdGhpcyk6CisKKyAgaHR0cDovL2ZyZXNobWVhdC5uZXQvcHJvamVjdHMvbmV0LXNubXAvCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGZpcmVmb3ggaHR0cDovL2ZyZXNobWVhdC5uZXQvcHJvamVjdHMvbmV0LXNubXAvCisKKyAgKExlYXZpbmcgU3RlcDogOCkKKworU1RFUDogOTogCisKKyAgQWR2ZXJ0aXNlOiBORVdTIHVwbG9hZCB0byBzZiwgcHVibGlzaCBvbiAtYW5ub3VuY2UsIGZyZXNobWVhdCwgYW5kIHRoZQorICBHTlUgRlNGIGRpcmVjdG9yeSAoaHR0cDovL2RpcmVjdG9yeS5mc2Yub3JnL3Byb2plY3QvbmV0LXNubXAvKS4uLiAoc2VuZAorICBtYWlsIHRvIGJ1Zy1kaXJlY3RvcnlAZ251Lm9yZykKKworCisKKworCis9PT09PT0gQkVHSU4gT0JTT0xFVEUgKHByZS1tYWtlcmVsZWFzZSkgRE9DVU1FTlRBVElPTiA9PT09PT0KKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitURVNUSU5HOgorCisgIDEpIFVwZGF0ZSB0aGUgc291cmNlIHRyZWUgdG8gY2F0Y2ggYWxsIHJlY2VudCBjb21taXRzLAorICAgICBhbmQgY2hlY2sgdGhhdCBhbGwgbG9jYWwgY2hhbmdlcyBoYXZlIGJlZW4gY29tbWl0dGVkLgorCisgICAgICQgc3ZuIC11IHN0YXR1cworICAgICAkIHN2biAgICB1cGRhdGUKKworICAyKSBDaGFuZ2UgdGhlIGxpYnRvb2wgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiBNYWtlZmlsZS50b3AuCisgICAgIFNlZSBNQU5VQUwgLSBTVEVQIDEgbGF0ZXIgaW4gdGhlc2UgaW5zdHJ1Y3Rpb25zLgorICAgICAnbWFrZXJlbGVhc2UnIHdpbGwgY29tbWl0IHRoaXMgZmlsZSBhdXRvbWF0aWNhbGx5LgorCisgIDMpIENvbmZpZ3VyZSB0aGUgc3VpdGUgd2l0aCBhcyBtYW55IG1vZHVsZXMgYXMgcG9zc2libGUsCisgICAgIGJ1aWxkIGFuZCB0ZXN0IGl0LiAgVGhlIG1ha2VyZWxlYXNlIHNjcmlwdCB3aWxsIHVzZQorICAgICB0aGUgb3B0aW9uczoKKworICAgICAgJCAuL2NvbmZpZ3VyZSAgJy0td2l0aC1taWItbW9kdWxlcz1ob3N0IGV4YW1wbGVzIGV4YW1wbGVzL2V4YW1wbGUgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RoYW5kbGVyIHNtdXggUm1vbiBkaXNtYW4vZXZlbnQtbWliJyAgICBcCisgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXRyYW5zcG9ydHM9SVBYICAtLWVuYWJsZS1pcHY2ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWVtYmVkZGVkLXBlcmwgLS1lbmFibGUtc2hhcmVkCisKKyAgICAgSWRlYWxseSB0aGlzIHNob3VsZCBiZSByZXBlYXRlZCBvbiBhcyBtYW55IHN5c3RlbXMgYXMgcG9zc2libGUKKyAgICAgKGluY2x1ZGluZyBydW5uaW5nICJtYWtlIGluc3RhbGwiKS4gIEhvd2V2ZXIgdGhlIG1ha2VyZWxlYXNlCisgICAgIHNjcmlwdCB3aWxsIG9ubHkgdGVzdCB0aGluZ3Mgb24gdGhlIGN1cnJlbnQgYm94LCBhbmQgd2lsbCBub3QKKyAgICAgdHJ5IHRvIGluc3RhbGwgdGhlIHNvZnR3YXJlLgorCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorRE9DVU1FTlRBVElPTjoKKworICA0KSAgVXBkYXRlIHRoZSB2ZXJzaW9uIG51bWJlciBpbiB0aGUgZG94eWdlbi5jb25mIGZpbGUKKyAgICAgIChoYW5kbGVkIGF1dG9tYXRpY2FsbHkgYnkgJ21ha2VyZWxlYXNlJykgYW5kIGdlbmVyYXRlCisgICAgICB0aGUgZG94eWdlbiBleHRyYWN0ZWQgbWFudWFsIHBhZ2VzLgorCisgICAgICAgICQgbWFrZSBkb2NzCisgICAgICAgICQgbWFrZSBtYW5jcAorCisgICAgICdtYWtlcmVsZWFzZScgd2lsbCBjb21taXQgdGhpcyBmaWxlIGF1dG9tYXRpY2FsbHkuCisgICAgIE5vdGUgdGhhdCBhbnkgbmV3IG1hbiBwYWdlcyBzaG91bGQgYmUgYWRkZWQgdG8gTWFrZWZpbGUuaW4uCisgICAgIFRoaXMgaXMgKk5PVCogY3VycmVudGx5IGhhbmRsZWQgYnkgdGhlIG1ha2VyZWxlYXNlIHNjcmlwdC4KKworICA1KSBDaGVjayB0aGUgY29kZSBmb3IgaWxsZWdhbCBjb25zdHJ1Y3RzIChlLmcuIEMrKyBzdHlsZSBjb21tZW50cworICAgICBvciBHTlUgbWFrZSBzcGVjaWZpYyBjb25zdHJ1Y3RzIGluIE1ha2VmaWxlcyk6CisKKyAgICAgICAgJCBtYWtlIGNoZWNrcworCisgIDYpIFVwZGF0ZSBNYWtlZmlsZSBkZXBlbmRlbmNpZXM6CisKKyAgICAgICAgJCBtYWtlIGRpc3RkZXBlbmQKKworICAgICAnbWFrZXJlbGVhc2UnIHdpbGwgY29tbWl0IHRoZXNlIGRlcGVuZGVuY2llcyBhdXRvbWF0aWNhbGx5LgorCisgIDcpIFVwZGF0ZSB0aGUgQ2hhbmdlTG9nIGZpbGUgd2l0aCBkZXRhaWxzIG9mIGFsbCAocmVjZW50KSBjaGFuZ2VzCisgICAgIHRvIHRoZSBzdWl0ZS4gIFNlZSBNQU5VQUwgLSBTVEVQIDIgbGF0ZXIgaW4gdGhlc2UgaW5zdHJ1Y3Rpb25zLgorICAgICAnbWFrZXJlbGVhc2UnIHdpbGwgY29tbWl0IHRoaXMgZmlsZSBhdXRvbWF0aWNhbGx5LgorCisgIDgpIFVwZGF0ZSB0aGUgUkVBRE1FLCBORVdTLCBhbmQgQ0hBTkdFUyBmaWxlcyB3aXRoIGRldGFpbHMgb2YKKyAgICAgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byB0aGUgc3VpdGUuICBTZWUgTUFOVUFMIC0gU1RFUCAzIGxhdGVyCisgICAgIGluIHRoZXNlIGluc3RydWN0aW9ucy4KKyAgICAgJ21ha2VyZWxlYXNlJyB3aWxsIGNvbW1pdCB0aGVzZSBmaWxlcyBhdXRvbWF0aWNhbGx5LgorCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorUkVMRUFTRToKKworICA5KSBNYWtlIHN1cmUgYWxsIGNoYW5nZXMgYXJlIGNoZWNrZWQgaW46CisKKyAgICAgICAkIHN2biAtdSBzdGF0dXMKKyAgICAgICAkIHN2biAgICB1cGRhdGUKKworICAgICBbTm90ZSB0aGF0IHRoaXMgc3RlcCBpcyBvbWl0dGVkIHdoZW4gcnVubmluZyAibWFrZXJlbGVhc2UiXQorCisgMTApIENoYW5nZSB0aGUgdmVyc2lvbiBudW1iZXIgaW4gdmFyaW91cyBmaWxlcworICAgICAgIChSRUFETUUsIEZBUSwgY29uZmlndXJlLmluLCBuZXQtc25tcC5zcGVjIGFuZCBhc3NvcnRlZCBQZXJsIG1vZHVsZXMpLgorICAgICAnbWFrZXJlbGVhc2UnIHdpbGwgdXBkYXRlIGFuZCBjb21taXQgdGhlc2UgZmlsZXMgYXV0b21hdGljYWxseS4KKworIDExKSBDcmVhdGUgYSB0YWcgY2hlY2twb2ludCBmb3IgdGhpcyByZWxlYXNlOgorCisgICAgICAgJCBzdm4gY29weSAgL3RydW5rICAgICAgICAgICAgICAgICAvdGFncy9FeHQtNS14CisgICAgIG9yCisgICAgICAgJCBzdm4gY29weSAgL2JyYW5jaGVzL1Y1LXgtcGF0Y2hlcyAvdGFncy9FeHQtNS14LXkKKworIDEyKSBDb25zdHJ1Y3QgdGhlIHNvdXJjZSBwYWNrYWdlczoKKworICAgICAgICAkIHN2biBleHBvcnQgL3RhZ3MvRXh0LTUteC15L25ldC1zbm1wIG5ldC1zbm1wLTUueC55CisgICAgICAgICQgbmV0LXNubXAtNS54LnkvcmVtb3ZlLWZpbGVzICAgICAgICAgbmV0LXNubXAtNS54LnkKKyAgICAgICAgJCBzdGFyIGFydHlwZT11c3RhciAtYyAteiAtZiBuZXQtc25tcC01LngueS50YXIuZ3ogICAgbmV0LXNubXAtNS54LnkKKyAgICAgICAgJCBybSAtZiBuZXQtc25tcC01LngueS56aXAiCisgICAgICAgICQgemlwIC1yIG5ldC1zbm1wLTUueC55LnppcCBuZXQtc25tcC01LngueSIKKworCisgMTMpIFNpZ24gKG9yIGNoZWNrc3VtKSB0aGUgcGFja2FnZXM6CisKKyAgICAgV2VzL1JvYmVydDoKKyAgICAgICAgJCBncGcgLXUgbmV0LXNubXAtYWRtaW4gLWEgLS1kZXRhY2gtc2lnbiBuZXQtc25tcC01LngueS50YXIuZ3oKKyAgICAgICAgJCBncGcgLXUgbmV0LXNubXAtYWRtaW4gLWEgLS1kZXRhY2gtc2lnbiBuZXQtc25tcC01LngueS56aXAKKyAgICAgT3RoZXJzOgorICAgICAgICAkIG1kNXN1bSBuZXQtc25tcC01LngueS50YXIuZ3ogPiBuZXQtc25tcC01LngueS50YXIuZ3oubWQ1CisgICAgICAgICQgbWQ1c3VtIG5ldC1zbm1wLTUueC55LnppcCAgICA+IG5ldC1zbm1wLTUueC55LnppcC5tZDUKKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1JFTEVBU0UgVEVTVElORzoKKworIDE0KSBVbnBhY2sgYSBjbGVhbiBjb3B5IG9mIHRoZSB0YXJiYWxsLCBjb25maWd1cmUsIGJ1aWxkIGFuZAorICAgICB0ZXN0IHRoZSByZWxlYXNlIHRhcmJhbGwuCisKKyAxNSkgRG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIG91dHN0YW5kaW5nIGNoYW5nZXMgdGhhdCBoYXZlCisgICAgIGJlZW4gbWlzc2VkIGZyb20gdGhlIENWUyBjaGVja2luOgorCisgICAgICAgICQgc3ZuIHN0YXR1cworCitOb3RlOiAgVGhpcyBpcyB0aGUgbGFzdCBzdGFnZSB0aGF0IGlzIGhhbmRsZWQgYnkgdGhlICJtYWtlcmVsZWFzZSIgc2NyaXB0CisgICAgICAgRXZlcnl0aGluZyBmb2xsb3dpbmcgd2lsbCBuZWVkIHRvIGJlIGRvbmUgbWFudWFsbHkuCisKKyAxNSkgVXBsb2FkIHRoZSBwYWNrYWdlcyAoYW5kIHNpZ25hdHVyZSBmaWxlcykgdG8gdGhlIFNvdXJjZUZvcmdlIHNlcnZlcjoKKyAKKyAgICAgICAgJCBuY2Z0cHB1dCB1cGxvYWQuc2YubmV0IGluY29taW5nIG5ldC1zbm1wLTUueC55LnRhci5negorICAgICAgICAkIG5jZnRwcHV0IHVwbG9hZC5zZi5uZXQgaW5jb21pbmcgbmV0LXNubXAtNS54LnkuemlwCisgICAgICAgICogU0YgcGFnZXM6ICAiQWRtaW4iIC0+ICJGaWxlIFJlbGVhc2VzIgorICAgICAgICAqIG5ldC1zbm1wOiAgIkFkZCBSZWxlYXNlIiAob3IgIkVkaXQgUmVsZWFzZSIpCisgICAgICAgICogQ3JlYXRlIChvciBjaG9vc2UpIGFuIGFwcHJvcHJpYXRlIHJlbGVhc2UgbmFtZQorICAgICAgICAgICAgIGUuZy4gICI1LngueSBzb3VyY2UgY29kZSIgIChvciAiNS54LnkgcHJlLXJlbGVhc2VzIikKKyAgICAgICAgKiAiRWRpdCBUaGlzIFJlbGVhc2UiCisgICAgICAgICogU2VsZWN0IHRoZSB0YXJiYWxsIGFuZC9vciBvdGhlciByZWxldmFudCBmaWxlcworCisgMTYpIEFubm91bmNlIHRoZSByZWxlYXNlIG9uIHRoZSBhcHByb3ByaWF0ZSBsaXN0LgorICAgICBQcmUtcmVsZWFzZSBhbm5vdW5jZW1lbnRzIChhbmQgYSBjYWxsIGZvciB0ZXN0aW5nKSBzaG91bGQgYmUKKyAgICAgc2VudCB0byBuZXQtc25tcC1jb2RlcnMsIHJlbGVhc2UtY2FuZGlkYXRlcyB0byBuZXQtc25tcC11c2Vycy4KKworICAgICBGdWxsIHJlbGVhc2VzIHNob3VsZCBiZSBhbm5vdW5jZWQgb24gbmV0LXNubXAtdXNlcnMsIGFuZCBhcyBhCisgICAgIG5ld3MgaXRlbSBvbiB0aGUgcHJvamVjdCBob21lIHBhZ2UgLSBpbmNsdWRpbmcgdGhlIE5FV1Mgc25pcHBldAorICAgICBvZiBzaWduaWZpY2FudCBjaGFuZ2VzIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UuCisKKyAxNykgVXBkYXRlIHRoZSBmb2xsb3dpbmcgaHRkb2NzIGZpbGVzIChpbiB0aGUgbWFpbiBTVk4gdHJ1bmspOgorICAgICAgICAgaHRkb2NzL2Rvd25sb2FkLmh0bWwKKyAgICAgICAgIGh0ZG9jcy9kZXYvc2NoZWR1bGUuaHRtbAorCisgICAgIFtNYWtlIHN1cmUgeW91IGhhdmUgcGVybWlzc2lvbnMgc2V0IHVwIHByb3Blcmx5IG9uIHRoZSB3ZWIKKyAgICAgIHNlcnZlciBzbyB0aGF0IGZpbGVzIGNyZWF0ZWQgYmVjb21lIGdyb3VwLXdyaXRhYmxlISEhXQorCisgICAgIFRoYXQgY29uY2x1ZGVzIHRoZSBwcm9jZXNzIGZvciBwcmUtcmVsZWFzZXMgYW5kIHJlbGVhc2UtY2FuZGlkYXRlcy4KKyAgICAgRm9yIGZ1bGwgcmVsZWFzZXMsIHdhaXQgYSB3ZWVrIHRvIGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBtYWpvcgorICAgICBwcm9ibGVtcywgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCB0aGUgcmVtYWluaW5nIHN0ZXBzLgorCisgICAgICAgIElmIHRoZXJlIGFyZSBrbm93biBwcm9ibGVtcyBhbmQgYW5vdGhlciByZWxlYXNlIGlzIHBsYW5uZWQgdG8KKyAgICAgZml4IHRoZW0sIGRvbid0IGFubm91bmNlIHRoZSBicm9rZW4gdmVyc2lvbiAtIHdhaXQgZm9yIHRoZSB1cGRhdGVkCisgICAgIG9uZSBpbnN0ZWFkLgorCisgMTgpIE9uY2UgdGhpcyB3ZWVrIGhhcyBlbGFwc2VkLCBzdWJtaXQgYW4gYW5ub3VuZW1lbnQgb2YgdGhlIG5ldworICAgICByZWxlYXNlIHRvIG5ldC1zbm1wLWFubm91bmNlLiAgVGhpcyBtZXNzYWdlIHdpbGwgbmVlZCB0byBiZQorICAgICBleHBsaWNpdGx5IGF1dGhvcml6ZWQgdmlhIE1haWxNYW4uCisKKyAgICAgQWxzbyB1cGRhdGUgdGhlIElSQyB0b3BpYyB0byBpbmNsdWRlIG1lbnRpb24gb2YgdGhpcyByZWxlYXNlLgorCisgMTkpIEZvciBhIHJlbGVhc2Ugb24gdGhlIG1vc3QgcmVjZW50IGRldmVsb3BtZW50IGxpbmUsIHN0YXJ0IGJ1Z2dpbmcKKyAgICAgV2VzIHRvIHVwZGF0ZSB0aGUgZnJlc2htZWF0LCBGcmVlIFNvZnR3YXJlIERpcmVjdG9yeSBhbmQKKyAgICAgV2lraXBlZGlhIGVudHJpZXMuCisKKyAyMCkgRm9yIGEgcmVsZWFzZSBvbiB0aGUgbW9zdCByZWNlbnQgZGV2ZWxvcG1lbnQgbGluZSwgdXBkYXRlIHRoZQorICAgICAnaHRkb2NzL3BhZ2UtdG9wLmh0bWwnIGZpbGUgKGluIHRoZSBtYWluIFNWTiB0cnVuaykgdG8gcmVmZXJlbmNlCisgICAgIHRoZSBsYXRlc3QgdmVyc2lvbi4KKworICAgICBVcGRhdGUgdGhlIGZvbGxvd2luZyBmaWxlcyB3aXRoIGFueSBjaGFuZ2VzOgorCisgICAgICAgICBodGRvY3MvZG9jcy9yZWFkbWVmaWxlcy9ORVdTCisgICAgICAgICBodGRvY3MvZG9jcy9yZWFkbWVmaWxlcy9DSEFOR0VTCisgICAgICAgICBodGRvY3MvZG9jcy9yZWFkbWVmaWxlcy9SRUFETUUqCisgICAgICAgICBodGRvY3MvQ09QWUlORworCisgICAgIFtNYWtlIHN1cmUgeW91IGhhdmUgcGVybWlzc2lvbnMgc2V0IHVwIHByb3Blcmx5IG9uIHRoZSB3ZWIKKyAgICAgIHNlcnZlciBzbyB0aGF0IGZpbGVzIGNyZWF0ZWQgYmVjb21lIGdyb3VwLXdyaXRhYmxlISEhXQorICAgICAgICAgCisKKyAyMSkgRm9yIGEgbWFqb3IgbmV3LWZlYXR1cmUgcmVsZWFzZSAoaS5lLiA1LngpLCBjcmVhdGUgdGhlIHBhdGNoZXMKKyAgICAgYnJhbmNoOgorCisgICAgICAgICQgc3ZuIGNvcHkgIC90YWdzL0V4dC01LXggICAvYnJhbmNoZXMvVjUteC1wYXRjaGVzCisKKyAgICAgYW5kIHVwZGF0ZSB0aGUgU1ZOIG1haW4gdHJ1bmsgd2l0aCBhIG5ldyB2ZXJzaW9uIG51bWJlcjoKKworICAgICAgICAkIGxvY2FsL1ZlcnNpb24tTXVuZ2UucGwgLXYgNS4oeCsxKS5kZXYgLU0gLVAgLUMKKworICAgICBUaGUgMSB3ZWVrIGRlbGF5IChhbmQgY29udGludWVkIGNvZGUgZnJlZXplKSBpcyB0byB0byBlbnN1cmUgdGhhdAorICAgICBkZXZlbG9wZXIgZWZmb3J0IGlzIGNvbmNlbnRyYXRlZCBvbiBpbW1lZGlhdGUgcHJvYmxlbXMgZm9sbG93aW5nCisgICAgIHRoZSByZWxlYXNlLiAgQW55IG1ham9yIHByb2JsZW1zIHNob3VsZCBob3BlZnVsbHkgY29tZSB0byBsaWdodAorICAgICBkdXJpbmcgdGhpcyBwZXJpb2QsIHNvIGFmdGVyIGEgd2VlayBpdCBzaG91bGQgYmUgc2FmZSB0byBjcmVhdGUKKyAgICAgdGhlIHBhdGNoZXMgYnJhbmNoIGFuZCBvZmZpY2lhbGx5IGVuZCB0aGUgY29kZSBmcmVlemUgb24gTUFJTi4KKworIDIyKSBVcGRhdGUgdGhlIG9mZmljaWFsIHBhdGNoZXMgdHJhY2tlciBzZXQ6CisKKyAgICAgLSBhbnkgcGF0Y2hlcyBmb3IgdGhpcyBuZXcgcmVsZWFzZSB0YXJiYWxsIHNob3VsZCBiZSBnaXZlbgorICAgICAgIHByaW9yaXR5IDkKKyAgICAgLSBhbGwgcGF0Y2hlcyBmb3IgdGhlIHByZXZpb3VzIHJlbGVhc2Ugb24gdGhpcyBsaW5lIHNob3VsZAorICAgICAgIGJlIG1hcmtlZCBhdCBwcmlvcml0eSA1CisgICAgIC0gYWxsIHBhdGNoZXMgZm9yIGVhcmxpZXIgcmVsZWFzZXMgb24gdGhpcyBsaW5lIHNob3VsZAorICAgICAgIGJlIG1hcmtlZCBhdCBwcmlvcml0eSAxLCBhbmQgY2xvc2VkCisKKyAgICAgSWYgYSBsaW5lIGhhcyBiZWVuIGRlc2lnbmF0ZWQgY2xvc2VkLCB0aGVuIGFsbCBvZmZpY2lhbAorICAgICBwYXRjaGVzIGZvciB0aGF0IGxpbmUgc2hvdWxkIGJlIG1hcmtlZCBhcyBjbG9zZWQgYXMgd2VsbC4KKworIDIzKSBIaWRlIHRoZSBwcmUtcmVsZWFzZSByZXBvc2l0b3J5IGZyb20gdGhlIEZpbGUgUmVsZWFzZXMKKyAgICAgYWRtaW4gcGFnZXMuCisKKyAyNCkgQ2xlYW4gdXAgdGhlICdkaXN0JyBkaXIgb2YgdGhlIHJlbGV2YW50IFY1LXgtcGF0Y2hlcyBicmFuY2guCisgICAgIE9ubHkgbGVhdmUgdGhlIGZvbGxvd2luZyBmaWxlczoKKworICAgICBjaGFuZ2Vsb2dmaXggIGN2c3Nob3cgIGN2c3VwICBleHRyYWN0bmV3cyAgbWFrZXJlbGVhc2UKKyAgICAgbmV0LXNubXAuc3BlYyAgc25tcGQtaW5pdC5kICBzbm1wdHJhcGQtaW5pdC5kCisKKyAgICAgTm90ZSB0aGF0IGFueSBmaWxlcyByZW1vdmVkIHNob3VsZCBhbHNvIGJlIGRlbGV0ZWQgZnJvbQorICAgICBTVk4gcmVwb3NpdG9yeS4KKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK0NSRUFUSU5HIEJJTkFSWSBESVNUUklCVVRJT05TCisKKyAgMCkgQWx3YXlzIFJFTU9WRSBBTEwgUFJFVklPVVMgSU5TVEFMTFMgRklSU1QsIHRoZW4gZG8gYSBtYWtlIGluc3RhbGwKKyAgICAgZnJvbSB0aGUgdGFyLWJhbGwgZXh0cmFjdGVkIHNvdXJjZXMgYW5kICpUSEVOKiByZWJ1aWxkIGFsbAorICAgICBiaW5hcmllcyBhZ2Fpbi4gIFRoaXMgZW5zdXJlcyB0aGF0IGV2ZXJ5dGhpbmcgKGVzcGVjaWFsbHkgcGVybAorICAgICBtb2R1bGVzKSBhcmUgcHJvcGVybHkgbGlua2VkIGFnYWluc3QgdGhlIHJpZ2h0IGxpYnJhcmllcy4KKworICAxKSBhbHdheXMgYnVpbGQgcmVsZWFzZXMgZnJvbSBhIHRhcmJhbGwsIG5vdCBmcm9tIFNWTi4KKworICAyKSBBZGQgbWliIG1vZHVsZXMgdGhhdCBhcmUgY29tbW9uLiAgQmFzaWNhbGx5LCBhZGQ6CisKKyAgICAgICBob3N0ICAgICAgICAgICAgICAgICAgICAgIC0tIHdoZXJlIHN1cHBvcnRlZC4KKyAgICAgICBkaXNtYW4vZXZlbnQtbWliCisgICAgICAgc211eAorCisgIDMpIHVzZSAtLXdpdGgtZGVmYXVsdHMgLS13aXRoLXN5c2NvbnRhY3Q9IlVua25vd24iIAorICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1zeXNsb2NhdGlvbj0iVW5rbm93biIKKworICA0KSB3aGVuIHJ1bm5pbmcgbWFrZSBpbnN0YWxsLCBkbyBpdCBsaWtlOgorCisgICAgICQgbWFrZSBpbnN0YWxsIHByZWZpeD0vc29tZS9wYXRoL3RvL2hvbWUvQVJDSC91c3IvbG9jYWwgXAorICAgICAgICAgICAgZXhlY19wcmVmaXg9L3NvbWUvcGF0aC90by9ob21lL0FSQ0gvdXNyL2xvY2FsCisgICAgCisgIDUpIFRhciBpdCB1cDoKKworICAgICAkIGNkIC9zb21lL3BhdGgvdG8vaG9tZS9BUkNICisgICAgICQgdGFyIGN6ZiBuZXQtc25tcC01LjAuMy1BUkNILnRhci5neiB1c3IvbG9jYWwKKworICA2KSB1cGxvYWQgYW5kIHJlbGVhc2UsIGxpa2UgeW91IGRpZCBmb3IgdGhlIHNvdXJjZSBjb2RlIGJ1dCB3aXRoIGEKKyAgICAgZGlmZmVyZW50IHBhY2thZ2UgbmFtZSBmb3IgYmluYXJpZXMgKDUuMC4zIGJpbmFyaWVzKS4KKworICA3KSBSUE1zIFtkbyB0aGlzIGluIG1haW4gbGluZSBldmVuIGlmIGl0cyBmb3IgYSBwYXRjaCBicmFuY2hdOgorICAgICAkIGNkIGRpc3QKKyAgICAgJCBjcCAuLi9uZXQtc25tcC01LjAuOC50YXIuZ3ogcnBtL1NPVVJDRVMKKyAgICAgJCBtYWtlIFJFTEVBU0U9MQorICAgICAKKyAgICAgVGhpcyBzaG91bGQgcHV0IG11bHRpcGxlIGJpbmFyeSBycG0gZmlsZXMgaW46CisgICAgICAgZGlzdC9ycG0vUlBNUy9pMzg2LworICAgICBBbmQgb25lIHNvdXJjZSBSUE0gaW46CisgICAgICAgZGlzdC9ycG0vU1JQTVMvCisKKyAgICAgKioqIFRoZXNlIGZpbGVzIG5lZWQgdG8gYmUgcmVuYW1lZCB0byBpbmNsdWRlIHRoZSBPUyB2ZXJzaW9uLgorCisgICAgICAgICBFRzogLi4uaTM4Ni5ycG0gbmVlZHMgdG8gYmVjb21lIC4uLmZjNS5pMzg2LnJwbQorCisgIDgpIFJlbW92ZSAob3IgaGlkZSkgYmluYXJpZXMgZnJvbSBvbGRlciByZWxlYXNlcyBvZiB0aGUgc2FtZSBsaW5lLAorICAgICB3aGVyZSB5b3UgaGF2ZSBzdWJtaXR0ZWQgYSBuZXdlciBiaW5hcnkgZm9yIHRoZSBzYW1lIGFyY2hpdGVjdHVyZS4KKyAgICAgT25jZSB0aGUgbGFzdCBiaW5hcnkgZm9yIGEgcGFydGljdWxhciByZWxlYXNlIHZlcnNpb24gaGFzIGJlZW4KKyAgICAgcmVtb3ZlZCwgaGlkZSB0aGF0IHJlcG9zaXRvcnkuCisgICAgIAorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorTUFOVUFMIC0gU1RFUCAxCisKKyAgQ2hhbmdpbmcgdGhlIGxpYnRvb2wgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiBNYWtlZmlsZS50b3AuCisKKyAgICAgIC0gSWYgYW55IGludGVyZmFjZXMvc3RydWN0dXJlcyBoYXZlIGJlZW4gcmVtb3ZlZCBvciBjaGFuZ2VkIHNpbmNlIHRoZQorICAgICAgICBsYXN0IHVwZGF0ZSwgaW5jcmVtZW50IGN1cnJlbnQgKCs1KSwgYW5kIHNldCBhZ2UgYW5kIHJldmlzaW9uIHRvIDAuCisgICAgICAgIFN0b3AhCisKKyAgICAgIC0gSWYgYW55IGludGVyZmFjZXMgaGF2ZSBiZWVuIGFkZGVkIHNpbmNlIHRoZSBsYXN0IHB1YmxpYyByZWxlYXNlLAorICAgICAgICB0aGVuIGluY3JlbWVudCBjdXJyZW50IGFuZCBhZ2UsIGFuZCBzZXQgcmV2aXNpb24gdG8gMC4KKyAgICAgICAgU3RvcCEKKworICAgICAgLSBJZiB0aGUgc291cmNlIGNvZGUgaGFzIGNoYW5nZWQgYXQgYWxsIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZSwKKyAgICAgICAgdGhlbiBpbmNyZW1lbnQgcmV2aXNpb24gKGM6cjphIGJlY29tZXMgYzpyKzE6YSkuCisKKyAgICAgIE5vdGU6IG1haW50ZW5hbmNlIHJlbGVhc2VzIChlZyA1LjIueCkgc2hvdWxkIG5ldmVyIGhhdmUgY2hhbmdlcworICAgICAgICAgICAgdGhhdCB3b3VsZCByZXF1aXJlIGN1cnJlbnQgdG8gYmUgaW5jcmVtZW50ZWQuCisKKyAgVGhlIGNoZWNrLWFwaS1jaGFuZ2VzIHNjcmlwdCBpbiB0aGUgZGlzdCBkaXJlY3Rvcnkgd2lsbCBjb25zdHJ1Y3QgYQorICBkaWZmIG9mIGFsbCBoZWFkZXJzLCB3aGljaCBjYW4gYmUgdXNlZnVsIGZvciBkZXRlcm1pbmluZyBpZiBhbnl0aGluZworICBuZWVkcyBidW1waW5nLgorCisgICAgIFVwZGF0ZSB0aGVzZSB2YXJpYWJsZXMgbm93LCBzbyB0aGF0IHdoZW4geW91IHJ1bgorICAgICBtYWtlIGluIGEgc2Vjb25kIHRvIHRlc3QgdGhpbmdzIHlvdSBjYW4gc3BvdCBsaWJ0b29sIHllbGxpbmcKKyAgICAgYWJvdXQgaW1wcm9wZXIgbnVtYmVyaW5nIGJlZm9yZSB5b3UgbWFrZSB0aGUgcmVsZWFzZSBhbmQgbm90CisgICAgIGFmdGVyIHlvdSd2ZSB1cGxvYWRlZCB0aGUgdGFyIGJhbGwgOi0vCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitNQU5VQUwgLSBTVEVQIDIKKworICBDaGFuZ2luZyB0aGUgbGlidG9vbCB2ZXJzaW9uIGluZm9ybWF0aW9uIGluIE1ha2VmaWxlLnRvcC4KKyAgVXBkYXRpbmcgdGhlIENoYW5nZUxvZyBmaWxlCisKKyAgICAgIC0gVGhlIENoYW5nZUxvZyBlbnRyaWVzIGFyZSBleHRyYWN0ZWQgKG5vcm1hbGx5IGF1dG9tYXRpY2FsbHkpCisgICAgICAgIHVzaW5nIHRoZSBjb21tYW5kOgorCisgICAgICAgICAgJCBzdm4yY2wgLWYgQ2hhbmdlTG9nLmFkZCAtLWJyZWFrLWJlZm9yZS1tc2cgLS1zdG9wLW9uLWNvcHkKKworICAgICAgICBJZiB5b3UgZG9uJ3QgaGF2ZSBzdm4yY2wgaW5zdGFsbGVkLCB5b3UgY2FuIHRyeSBhbmQgZmluZCBhCisgICAgICAgIHN1aXRhYmxlIGJpbmFyeSBwYWNrYWdlIGZvciB5b3VyIGFyY2hpdGVjdHVyZSwgb3IgeW91IGNhbgorICAgICAgICBnZXQgaXQgZGlyZWN0bHkgZnJvbQorICAgICAgICAgICAgICBodHRwOi8vY2gudHVkZWxmdC5ubC9+YXJ0aHVyL3N2bjJjbAorICAgICAgICBZb3UgbWF5IG5lZWQgdG8gcmVuYW1lIHRoZSBzY3JpcHQgZnJvbSAnc3ZuMmNsLnNoJyB0byAnc3ZuMmNsJworCisgICAgICAtIEluIGVpdGhlciBjYXNlLCB0aGV5IGFyZSBmaXhlZCB1cCAoYXV0b21hdGljYWxseSkgdXNpbmc6CisKKyAgICAgICAgICAkIHBlcmwgZGlzdC9jaGFuZ2Vsb2dmaXggPCBDaGFuZ2VMb2cuYWRkID4gQ2hhbmdlTG9nLnJlYWxseWFkZAorICAgICAgICBvcgorICAgICAgICAgICQgcGVybCBkaXN0L2NoYW5nZWxvZ2ZpeCBWNS17Tn0tcGF0Y2hlcyA8IENoYW5nZUxvZy5hZGQgPiBDaGFuZ2VMb2cucmVhbGx5YWRkCisKKyAgICAgIC0gVGhlIG1hbnVhbCBwcm9jZXNzaW5nIHN0ZXAgaXMgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSBwb3J0aW9uCisgICAgICAgIG9mIHRoZSBmaWxlICdDaGFuZ2VMb2cucmVhbGx5YWRkJyBpbnRvICdDaGFuZ2VMb2cnLiAgWW91IGNhbgorICAgICAgICB1c3VhbGx5IGZpbmQgdGhlIHBvaW50IHdoZXJlIHRoZSBwcmV2aW91cyByZWxlYXNlIHN0YXJ0ZWQgaW4KKyAgICAgICAgdGhlIGZpbGUgYnkgc2VhcmNoaW5nIGZvciAidmVyc2lvbiB0YWciLgorCisgICAgICAtIFBsZWFzZSBrZWVwIHRoZSBsaW5lIG9mIGRhc2hlcyBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLCBhcyB0aGlzCisgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byBjb3B5IGR1cmluZyB0aGUgbmV4dCByZWxlYXNlLgorCisgICAgICAtIElmIHVzaW5nIGVtYWNzLCBzd2l0Y2ggZnJvbSBjaGFuZ2Vsb2ctbW9kZSB0byB0ZXh0LW1vZGUuCisKKyAgICAgIC0gQ2hlY2sgaW4gdGhlIG5ldyBDaGFuZ2VMb2c6CisKKyAgICAgICAgICAkIHN2biBjb21taXQgLW0gInVwZGF0ZSBmb3IgcmVsZWFzZSBYIiBDaGFuZ2VMb2cKKworICAgICAgICBUaGlzIGlzIGRvbmUgYXV0b21hdGljYWxseSBieSAibWFrZXJlbGVhc2UiCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitNQU5VQUwgLSBTVEVQIDMKKworVXBkYXRpbmcgUkVBRE1FLCBORVdTLCBhbmQgQ0hBTkdFUyBmaWxlcworCisgIFsgVGhpcyBpbmZvcm1hdGlvbiBoYXMgYmVlbiBtb3ZlZCB0bzoKKworICBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy93aWtpL2luZGV4LnBocC9Db21taXRfbWVzc2FnZV9hdXRvLWV4dHJhY3Rpb25fZm9ybWF0cworCisgIF0KKworSG93ZXZlciwgbGVhdmluZyBzb21lIGV4YW1wbGVzIGhlcmUgZm9yIHF1aWNrIHJlZmVycmFsOgorCisgIFNWTiBjb21taXQgbWVzc2FnZXMgdGhhdCBnZW5lcmF0ZSBhdXRvLU5FV1MgYW5kIGF1dG8tQ0hBTkdFUworICBleHRyYWN0aW9ucyBzaG91bGQgYmUgZm9ybWF0dGVkIGxpa2UgdGhlIGZvbGxvd2luZyBleGFtcGxlczoKKworICAgIE5FV1M6IHNubXBkOiBJIGRpZCBzb21ldGhpbmcgcmVhbGx5IGNvb2wgdG8gdGhlIGFnZW50CisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBmaXhlZCBzb21ldGhpbmcgbWlub3IgaW4gc25tcHRyYXBkCisgICAgTkVXUzogcGVybDogUEFUQ0g6IDEyMyw0NTY6IEFwcGxpZWQgcGF0Y2hlcyAxMjMgYW5kIDQ1NiB0byBzdXBwb3J0IHBlcmw2CisgICAgQ0hBTkdFUzogQlVHOiAxMzogRml4ZWQgYnVnIDEzICYgc2VjdXJlZCB0aGUgd29ybGQgYXQgbGFyZ2UgYWdhaW5zdCBoYWNrZXJzCisgICAgTkVXUzogcGVybDogUEFUQ0g6IDEyMzogZnJvbSBSb2JlcnQ6IGRpZCBzb21ldGhpbmcKKyAgICBORVdTOiBwZXJsOiBQQVRDSDogMTIzOiBmcm9tICJSb2JlcnQgU3RvcnkiOiBkaWQgc29tZXRoaW5nIGVsc2UKZGlmZiAtLWdpdCBhL2Rpc3QvYXV0b2NvbmYtdmVyc2lvbiBiL2Rpc3QvYXV0b2NvbmYtdmVyc2lvbgppbmRleCBhY2MwNzk3Li5jOTVmZWE1IDEwMDY0NAotLS0gYS9kaXN0L2F1dG9jb25mLXZlcnNpb24KKysrIGIvZGlzdC9hdXRvY29uZi12ZXJzaW9uCkBAIC0xICsxIEBACi0yLjU5CisyLjYzCmRpZmYgLS1naXQgYS9kaXN0L2NoZWNrLWFwaS1jaGFuZ2UgYi9kaXN0L2NoZWNrLWFwaS1jaGFuZ2UKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWY2MWU0MgotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvY2hlY2stYXBpLWNoYW5nZQpAQCAtMCwwICsxLDU0IEBACisjIS9iaW4vc2gKKyMKKyMgc2ltcGxpc3RpYyBzY3JpcHQgdG8gY2hlY2sgYWxsIGhlYWRlciBmaWxlcyBmb3IKKyMgZGlmZmVyZW5jZXMuIEludGVuZGVkIHRvIGhlbHAgZGV0ZWN0IGFwaSBjaGFuZ2VzCisjIGJldHdlZW4gcmVsZWFzZXMuCisjCisjIGl0J3Mgbm90IHByZXR0eSBvciBlZmZpY2llbnQsIGFuZCBpbnNwZWN0aW9uIG9mCisjIHRoZSByZXN1bHRzIG11c3QgYmUgZG9uZSBtYW51YWxseS4KKyMKKyMgaXQncyBhbHNvIG5vdCBzZWN1cmUgKGRvbid0IHJ1biBhcyByb290KQorIyBvciBwb3J0YWJsZS4gVGVzdGVkIG9uIExpbnV4LgorIworCitpZiBbICJ4JDEiID0gIngiIC1vICJ4JDIiID0gIngiIF07IHRoZW4KKyAgIGVjaG8gIlVzYWdlOiAkMCA8b2xkLWRpcj4gPG5ldy1kaXI+IgorICAgZXhpdCAxCitmaQorCitvZD0kMQorbmQ9JDIKK0RJUj0vdG1wCitPVVRQVVQ9JERJUi9hcGktZGlmZi5wYXQKK09EVD0kRElSL2FwaS1vZAorCitpZiBbICEgLWQgJG9kIF07IHRoZW4KKyAgIGVjaG8gIm9sZCBkaXIgJG9kIGRvZXNuJ3QgZXhpc3QiCisgICBleGl0IDEKK2ZpCisKK2lmIFsgISAtZCAkbmQgXTsgdGhlbgorICAgZWNobyAib2xkIGRpciAkbmQgZG9lc24ndCBleGlzdCIKKyAgIGV4aXQgMQorZmkKKworIyBmaW5kIGhlYWRlciBpbiBuZAorcm0gLWYgJE9VVFBVVCAkT0RUIDI+L2Rldi9udWxsCisoY2QgJG9kICYmIGZpbmQgLiAtdHlwZSBmIC1uYW1lICIqLmgifHNvcnQgPiAkT0RUKQorCitPSD1gY2F0ICRPRFRgCitmb3IgaCBpbiAkT0gKK2RvCisgICBuaD0kbmQvJGgKKyAgIG9oPSRvZC8kaAorICAgZWNobyAiKiAkbmgiCisgICBpZiBbIC1mICIkbmgiIF07IHRoZW4KKyAgICAgIGVjaG8gIiogZGlmZjogJGggdnMgJG5oIiA+PiAkT1VUUFVUCisgICAgICBkaWZmIC11ICRvaCAkbmggPj4gJE9VVFBVVCAyPiYxCisgICBlbHNlCisgICAgICBlY2hvICIqIE9sZCBoZWFkZXIgJGggbm90IGZvdW5kIGluIG5ldyBoZWFkZXJzIiA+PiAkT1VUUFVUCisgICBmaQorZG9uZQorCitlY2hvICJJbnNwZWN0IG91dHB1dCBpbiAkT1VUUFVUIgorZWNobyAiU2VlIE1ha2VmaWxlLnRvcCBmb3IgbGlidG9vbCB2ZXJzaW9uIGJ1bXBpbmcgcnVsZXMuIgpkaWZmIC0tZ2l0IGEvZGlzdC9jdnNzaG93IGIvZGlzdC9jdnNzaG93CmluZGV4IDYyM2IzMmQuLjc1Mzk1OTUgMTAwNzU1Ci0tLSBhL2Rpc3QvY3Zzc2hvdworKysgYi9kaXN0L2N2c3Nob3cKQEAgLTEsNDYgKzEsNjkgQEAKLSMhL2Jpbi9iYXNoCi0jCi0jICRJZCQKKyMhL2Jpbi9zaAogIwogZXhwb3J0IENWU19SU0g9c3NoCiBUQUc9CiAKLWlmIFsgJCMgLWVxIDAgXTsgdGhlbgotCURJUj0uCi1lbHNlCi0JaWYgWyAkIyAtbmUgMSBdOyB0aGVuCi0JCWVjaG8gInVzYWdlOiAkMCA8d29ya2luZyBkaXJlY3Rvcnk+IgotCQlleGl0Ci0JZmkKLQlESVI9JDEKLWZpCi0KLWlmIFsgISAtZCAkRElSIF07IHRoZW4KLQllY2hvICJubyBzdWNoIGRpcmVjdG9yeSAnJERJUiciCi0JZXhpdAotZmkKLQotaWYgWyAhIC1kICRESVIvQ1ZTIF07IHRoZW4KLQllY2hvICInJERJUicgaGFzIG5vIENWUyBkaXJlY3RvcnkhIgotCWV4aXQKLWZpCi0KLWlmIFsgISAtZiAkRElSL0NWUy9SZXBvc2l0b3J5IF07IHRoZW4KK2RvX2N2cygpCit7CisgICBESVI9JDEKKyAgIGlmIFsgISAtZiAkRElSL0NWUy9SZXBvc2l0b3J5IF07IHRoZW4KIAllY2hvICInJERJUicgaGFzIG5vIENWUy9SZXBvc2l0b3J5ISIKIAlleGl0Ci1maQorICAgZmkKIAotaWYgWyAhIC1mICRESVIvQ1ZTL1Jvb3QgXTsgdGhlbgorICAgaWYgWyAhIC1mICRESVIvQ1ZTL1Jvb3QgXTsgdGhlbgogCWVjaG8gIickRElSJyBoYXMgbm8gQ1ZTL1Jvb3QhIgogCWV4aXQKLWZpCisgICBmaQogCi1pZiBbIC1mICRESVIvQ1ZTL1RhZyBdOyB0aGVuCisgICBpZiBbIC1mICRESVIvQ1ZTL1RhZyBdOyB0aGVuCiAJVEFHPSItciBgY2F0ICRESVIvQ1ZTL1RhZyB8IGN1dCAtYyAyLWAiCisgICBmaQorCisgICBSRVA9ImBjYXQgJERJUi9DVlMvUmVwb3NpdG9yeWAiCisgICBST09UPSJgY2F0ICRESVIvQ1ZTL1Jvb3RgIgorCisgICBlY2hvICJEaXJlY3RvcnkgJERJUiBpcyByb290ZWQgYXQgJFJPT1QsICRUQUcgJFJFUC4uLiIKKyAgIGVjaG8gIiAgIHVwZGF0ZSB3aXRoIGN2cyAtejMgLWQgJFJPT1QgLXEgY28gJFRBRyAtZCAkRElSICRSRVAiCit9CisKK2RvX3N2bigpCit7CisgICBESVI9JDEKKyAgIGlmIFsgISAtZCAkRElSLy5zdm4gXTsgdGhlbgorCWVjaG8gIickRElSJyBoYXMgbm8gLnN2bi8gc3ViZGlyISIKKwlleGl0CisgICBmaQorCisgICBST09UPWBzdm4gaW5mbyB8IGdyZXAgVVJMfGN1dCAtZjIgLWQgIiAiYAorICAgaWYgWyAteiAiJFJPT1QiIF07IHRoZW4KKyAgICAgIGVjaG8gIkNvdWxkbid0IGZpbmQgcm9vdCBmcm9tICRESVIvLnN2bi9lbnRyaWVzIgorICAgICAgZXhpdCAxCisgICBmaQorCisgICBlY2hvICJEaXJlY3RvcnkgJERJUiBpcyByb290ZWQgYXQgJFJPT1QuLi4iCisgICBlY2hvICIgICB1cGRhdGUgd2l0aCBzdm4gY28gJFJPT1QgJERJUiIKK30KKworaWYgWyAkIyAtZXEgMCBdOyB0aGVuCisJRElSUz0uCitlbHNlCisJRElSUz0kQAogZmkKIAotUkVQPSJgY2F0ICRESVIvQ1ZTL1JlcG9zaXRvcnlgIgotUk9PVD0iYGNhdCAkRElSL0NWUy9Sb290YCIKK2ZvciBkIGluICRESVJTCitkbworICAgaWYgWyAhIC1kICRkIF07IHRoZW4KKwllY2hvICJubyBzdWNoIGRpcmVjdG9yeSAnJGQnIgorCWV4aXQKKyAgIGZpCiAKLWVjaG8gIkRpcmVjdG9yeSAkRElSIGlzIHJvb3RlZCBhdCAkUk9PVCwgJFRBRyAkUkVQLi4uIgotZWNobyAidXBkYXRlIHdpdGggY3ZzIC16MyAtZCAkUk9PVCAtcSBjbyAkVEFHIC1kICRESVIgJFJFUCIKKyAgIGlmIFsgLWQgJGQvQ1ZTIF07IHRoZW4KKwlkb19jdnMgJGQKKyAgIGVsaWYgWyAtZCAkZC8uc3ZuIF07IHRoZW4KKwlkb19zdm4gJGQKKyAgIGVsc2UKKwllY2hvICInJGQnIGhhcyBuZWl0aGVyIENWUyBub3IgU1ZOIGluZm9ybWF0aW9uISIKKyAgIGZpCitkb25lCisKZGlmZiAtLWdpdCBhL2Rpc3QvY3ZzdXAgYi9kaXN0L2N2c3VwCmluZGV4IDA4YzhhNzUuLmNhMDdiMGYgMTAwNzU1Ci0tLSBhL2Rpc3QvY3ZzdXAKKysrIGIvZGlzdC9jdnN1cApAQCAtMSw4ICsxLDggQEAKLSMhL3Vzci9iaW4vZW52IGJhc2gKKyMhL2Jpbi9zaAogIwogIyAkSWQkCiAjCi1leHBvcnQgQ1ZTX1JTSD1zc2gKK0NWU19SU0g9c3NoOyBleHBvcnQgQ1ZTX1JTSAogVEFHPQogV089MAogREVTVD0KQEAgLTE4LDYgKzE4LDcgQEAKICAgICAgICAgVEFSPScvdXNyL2Jpbi9zdGFyIC1IdXN0YXIgLW5vdCAtcGF0PSIqL0NWUy8qIiAtYyAtZicKICAgICBlbGlmIFsgLXggL2Jpbi90YXIgXTsgdGhlbgogICAgICAgICBUQVI9Ii9iaW4vdGFyIC0tZXhjbHVkZT1DVlMgLWMgLWYiCisgICAgICAgIGVjaG8gIndhcm5pbmc6IHN0YXIgbm90IGF2YWlsYWJsZSwgdXNpbmcgKGxlc3MgcG9ydGFibGUpIHRhci4uLiIKICAgICBlbHNlCiAgICAgICAgIGVjaG8gIm5laXRoZXIgL3Vzci9iaW4vc3RhciBub3IgL2Jpbi90YXIgZm91bmQuIgogICAgICAgICBleGl0CmRpZmYgLS1naXQgYS9kaXN0L21ha2VyZWxlYXNlIGIvZGlzdC9tYWtlcmVsZWFzZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjQ2YjlmOS4uMDAwMDAwMAotLS0gYS9kaXN0L21ha2VyZWxlYXNlCisrKyAvZGV2L251bGwKQEAgLTEsMzU1ICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybAotCi11c2Ugc3RyaWN0OwotdXNlIFBvZDo6VXNhZ2U7Ci0KLQotbXkgJW9wdHM7Ci1teSAkZGVzY3I7Ci0KLUxvY2FsR2V0T3B0aW9ucyhcJW9wdHMsCi0JICAgWydyfHJlZ2V4cC1pZ25vcmUtc3RlcHM9cycsJ0lnbm9yZSB0aGVzZSBSRUdFWFAgc3RlcHMnXSwKLQkgICBbJ3N8c3RhcnQtYXQ9cycsICAgICAgICAgICAnU2tpcCBhbGwgc3RlcHMgdW50aWwgQVJHJ10sCi0JICAgWydpfGludGVyYWN0aXZlJywgICAgICAgICAgJ1Byb21wdCB3aGV0aGVyIHRvIGRvIGVhY2ggc3RlcCddLAotCSAgIFsnbnxkcnktcnVuJywgICAgICdEcnkgcnVuIG9ubHkuICBEb25cJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcuJ10sCi0JICAgWydofGhlbHAnLCAnSGVscCddKTsKLQotcG9kMnVzYWdlKDEpIGlmICgkb3B0c3snaCd9KTsKLW15ICR2ZXJzaW9uID0gc2hpZnQ7Ci1wb2QydXNhZ2UoICJObyB2ZXJzaW9uIHN1cHBsaWVkIiApIGlmICghJHZlcnNpb24pOwotbXkgJGV4dHJhanVuayA9IHNoaWZ0OwotcG9kMnVzYWdlKCAiVW5leHBlY3RlZCBhcmd1bWVudCAoJGV4dHJhanVuaykiICkgaWYgKCRleHRyYWp1bmspOwotbXkgJHZ0YWcgICA9ICR2ZXJzaW9uOwotbXkgJGJyYW5jaCA9ICIiOwotIyBFbnN1cmUgd2UgaGF2ZSBib3RoIG51bWVyaWMgYW5kIHRhZy1zdHlsZSB2ZXJzaW9uIGxhYmVscwotIyBwbHVzIHRoZSBicmFuY2ggdGhhdCB3ZSdyZSB3b3JraW5nIGZyb20gKGlmIHJlbGV2YW50KQotaWYgKCAkdmVyc2lvbiA9fiAvXkV4dC8pIHsKLSAgICAkdmVyc2lvbiA9fiBzL15FeHQtLy9nOwotICAgICR2ZXJzaW9uID1+IHMvLS8uL2c7Ci19IGVsc2UgewotICAgICR2dGFnID1+IHMvXC4vLS9nOwotICAgICR2dGFnID0gIkV4dC0iIC4gJHZ0YWc7Ci19Ci1pZiAoICR2ZXJzaW9uID1+IC9eKFswLTldXC5bMC05XSlcLlswLTldLykgewotICAgICgkYnJhbmNoID0gJHZlcnNpb24pID1+IHMvKFswLTldXC5bMC05XSlcLlswLTldLiovXDEvOwotICAgICRicmFuY2ggPX4gcy9cLi8tLzsKLSAgICAkYnJhbmNoID0gIlYke2JyYW5jaH0tcGF0Y2hlcyI7Ci19Ci0KLSMgTWFrZSBzdXJlIHdlJ3JlIGF0IHRoZSByb290IG9mIHRoZSBidWlsZCB0cmVlCi0jICAoaWYgd2UncmUgaW4gdGhlIGRpc3QgZGlyZWN0b3J5LCB0aGVuIGNkIC4uKQotY2hkaXIoIi4uIikgaWYgKC1mICdtYWtlcmVsZWFzZScpOwotZGllICJOb3QgYXQgcm9vdCBvZiBidWlsZCB0cmVlIiBpZiAoISAtZiAnY29uZmlndXJlLmluJyk7Ci0KLSMKLSMgIFRFU1RJTkc6Ci0jCi0jIFN0ZXAgMSkgRW5zdXJlIHRoZSBidWlsZCB0cmVlIGlzIHVwIHRvIGRhdGUKLVN5c3RlbSgidXBkYXRlIiwic3ZuIC11IHN0YXR1cyIpOwotU3lzdGVtKCJ1cGRhdGUiLCJzdm4gLXEgdXBkYXRlIik7Ci0KLSMgU3RlcCAyKSBDaGFuZ2UgdGhlIGxpYnRvb2wgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiBNYWtlZmlsZS50b3AKLW1hbnVhbHN0ZXAoJ3ZlcnNpb246bWFudWFsZWRpdCcsCi0JICAgIllvdSAobWF5KSBuZWVkIHRvIGVkaXQgTWFrZWZpbGUudG9wIHRvIHVwZGF0ZSB0aGUgbGlicmFyeSB2ZXJzaW9uIG51bWJlcmluZwotICAgICAodXN1YWxseSBqdXN0IGZvciB0aGUgZmlyc3QgcHJlLXJlbGVhc2Ugb2YgYSBnaXZlbiB2ZXJzaW9uKS4KLSAgICAgICAgU2VlIHRoZSBjb21tZW50cyBpbiBSRUxFQVNFLUlOU1RSVUNUSU9OUwotICAgICAgICBhYm91dCBMSUJDVVJSRU5ULCBMSUJBR0UgYW5kIExJQlJFVklTSU9OLgotCi0gIEknbGwgY29tbWl0IHRoZSBmaWxlIGZvciB5b3UgYWZ0ZXIgeW91J3JlIGRvbmUKLSIpOwotU3lzdGVtKCJ2ZXJzaW9uOmNvbW1pdCIsCi0gICAgICAgInN2biBjb21taXQgLW0gXCJ2ZXJzaW9uIHVwZGF0ZVwiIE1ha2VmaWxlLnRvcCIpOwotCi0jIFN0ZXAgMykgY29uZmlndXJlIGFuZCBidWlsZCBhbmQgdGVzdCBpdAotbXkgJHRyYW5zcG9ydGFyZ3MgPSAiIjsKLWlmICggJF5PIGVxICJsaW51eCIgKSB7Ci0gICAgJHRyYW5zcG9ydGFyZ3MgPSAiLS13aXRoLXRyYW5zcG9ydHM9SVBYIjsKLX0KLW15ICRjb25maWd1cmVhcmdzID0gIi0tY2FjaGU9Y29uZmlnLmNhY2hlIC0td2l0aC1kZWZhdWx0cyAiLgotICAgICItLXdpdGgtbWliLW1vZHVsZXM9JyAgICAgZXhhbXBsZXMgZXhhbXBsZXMvZXhhbXBsZSAgICIuCi0gICAgIiAgdGVzdGhhbmRsZXIgc211eCBSbW9uJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4KLSAgICAiICR0cmFuc3BvcnRhcmdzICAgICAgICAtLWVuYWJsZS1pcHY2ICAgICAgICAgICAgICAgICAiLgotICAgICItLWVuYWJsZS1lbWJlZGRlZC1wZXJsIC0tZW5hYmxlLXNoYXJlZCI7Ci1TeXN0ZW0oImJ1aWxkOmRpc3RjbGVhbiIsIm1ha2UgZGlzdGNsZWFuIikgaWYgKC1mICdNYWtlZmlsZScpOwotU3lzdGVtKCJidWlsZDpjb25maWd1cmUiLCIuL2NvbmZpZ3VyZSAkY29uZmlndXJlYXJncyIpOwotU3lzdGVtKCJidWlsZDptYWtlIiwibWFrZSIpOwotU3lzdGVtKCJidWlsZDp0ZXN0IiwibWFrZSB0ZXN0IFRFU1RPUFRTPS1uIik7Ci0KLSMKLSMgRE9DVU1FTlRBVElPTgotIwotIyBTdGVwIDQpIFVwZGF0ZSBkb3h5Z2VuIHZlcnNpb24gbnVtYmVyLCBhbmQgZ2VuZXJhdGUgbWFuIHBhZ2VzCi1TeXN0ZW0oImRvY3M6ZG94eWdlbmNvbmYiLAotICAgICAgICJwZXJsIGxvY2FsL1ZlcnNpb24tTXVuZ2UucGwgLXYgJHZlcnNpb24gLU0gLVAgLUMgLXQgZG94eWdlbiIpOwotU3lzdGVtKCJkb2NzOm1ha2UiLCJtYWtlIGRvY3MiKTsKLVN5c3RlbSgiZG9jczptYW5jcCIsIm1ha2UgbWFuY3AiKTsKLVN5c3RlbSgiZG9jczp1cGRhdGUiLCJzdm4gLXUgc3RhdHVzIG1hbiIpOwotbWFudWFsc3RlcCgnZG9jczptYW51YWxhZGRuZXdtYW4nLAotICAiVXBkYXRlIG1hbi9NYWtlZmlsZS5pbiB3aXRoIGRldGFpbHMgb2YgYW55IG5ldyBtYW4gcGFnZXMsCi0gIGFuZCBydW4gJ3N2biBhZGQnIG9uIHRoZW0uCi0gIEknbGwgY29tbWl0IHRoZXNlIGNoYW5nZXMgZm9yIHlvdSBhZnRlciB5b3UncmUgZG9uZQotIik7Ci1TeXN0ZW0oImRvY3M6Y29tbWl0Iiwic3ZuIGNvbW1pdCAtbSBcImRvY3VtZW50YXRpb24gdXBkYXRlXCIgbWFuIik7Ci0KLSMgU3RlcCA1KSBDaGVjayBjb2RlIGZvciBpbGxlZ2FsIGNvbnN0cnVjdHMKLVN5c3RlbSgiY29kZTpjaGVja2NvbW1lbnRzIiwibWFrZSBjaGVja3MiKTsKLQotIyBTdGVwIDYpIFVwZGF0ZSBNYWtlZmlsZSBkZXBlbmRlbmNpZXMKLVN5c3RlbSgiY29kZTptYWtlZGVwZW5kIiwibWFrZSBkaXN0ZGVwZW5kIik7Ci1TeXN0ZW0oImNvZGU6Y29tbWl0ZGVwZW5kIiwic3ZuIGNvbW1pdCAtbSBcIm1ha2UgZGVwZW5kXCIgYGZpbmQgLiAtbmFtZSBNYWtlZmlsZS5kZXBlbmRgIik7Ci0KLSMgU3RlcCA3KSBVcGRhdGUgQ2hhbmdlTG9nCi0jICAgWFhYOiBNYXkgbmVlZCB0byBleHRlbmQgdGhlIGZvbGRpbmcgbGluZS1sZW5ndGgsCi0jICAgICAgICB0byBhdm9pZCBzdm4yY2wgbWFuZ2xpbmcgQ0hBTkdFUy9ORVdTIGVudHJpZXMKLVN5c3RlbSgiY2hhbmdlbG9nOnN2bjJjbCIsCi0gICAgICAgInN2bjJjbCAtZiBDaGFuZ2VMb2cuYWRkIC0tYnJlYWstYmVmb3JlLW1zZyAtLXN0b3Atb24tY29weSIpOwotU3lzdGVtKCJjaGFuZ2Vsb2c6Y2hhbmdlbG9nZml4IiwKLSAgICAgICAicGVybCBkaXN0L2NoYW5nZWxvZ2ZpeCAkYnJhbmNoIDwgQ2hhbmdlTG9nLmFkZCA+IENoYW5nZUxvZy5yZWFsbHlhZGQiKTsKLW1hbnVhbHN0ZXAoImNoYW5nZWxvZzptYW51YWxlZGl0IiwKLSAgICAgICAgICAgIllvdSBuZWVkIHRvIG1hbnVhbGx5IGluc2VydCB0aGUgKnJlbGV2ZW50KiBwb3J0aW9ucyBvZgotICAnQ2hhbmdlTG9nLnJlYWxseWFkZCcgaW50byB0aGUgQ2hhbmdlTG9nIGZpbGUuCi0gIEknbGwgY29tbWl0IHRoZXNlIGNoYW5nZXMgZm9yIHlvdSBhZnRlcndhcmRzIik7Ci1TeXN0ZW0oImNoYW5nZWxvZzpjb21taXQiLCJzdm4gY29tbWl0IC1tIFwidmVyc2lvbiB1cGRhdGVcIiBDaGFuZ2VMb2ciKTsKLQotIyBTdGVwIDgpIFVwZGF0ZSBSRUFETUUvTkVXUy9DSEFOR0VTCi1TeXN0ZW0oImRvY3M6bmV3bmV3cyIsCi0gICAgICAgInBlcmwgZGlzdC9leHRyYWN0bmV3cyAtcyAtLS0tLSAtZSAtLS0tLSBDaGFuZ2VMb2ciKTsKLVN5c3RlbSgiZG9jczpuZXduZXdzIiwKLSAgICAgICAicGVybCBkaXN0L2V4dHJhY3RuZXdzIC1jIENIQU5HRVMubmV3MiAtbiBORVdTLm5ldzIgQ2hhbmdlTG9nLnJlYWxseWFkZCIpOwotbWFudWFsc3RlcCgiZG9jczpSRUFETUUiLAotICAgICAgICAgICAiWW91IG5lZWQgdG8gbWFudWFsbHkgaW5zZXJ0IHRoZSByZWxldmVudCBwb3J0aW9ucyBvZgotICAnQ0hBTkdFUy5uZXcnIGFuZCAnTkVXUy5uZXcnIGludG8gdGhlIENIQU5HRVMgYW5kIE5FV1MgZmlsZS4KLSAgKFRoZXJlIGFyZSBhbHRlcm5hdGl2ZSB2ZXJzaW9ucyBpbiAnQ0hBTkdFUy5uZXcyJyBhbmQgJ05FV1MubmV3MicpCi0gIFlvdSBtYXkgd2lzaCB0byB1cGRhdGUgdGhlIFJFQURNRSBmaWxlIGFzIHdlbGwuCi0gIEknbGwgY29tbWl0IHRoZXNlIGNoYW5nZXMgZm9yIHlvdSBhZnRlcndhcmRzIik7Ci1TeXN0ZW0oImRvY3M6Y29tbWl0IiwKLSAgICAgICAic3ZuIGNvbW1pdCAtbSBcInZlcnNpb24gdXBkYXRlXCIgUkVBRE1FIE5FV1MgQ0hBTkdFUyIpOwotCi0jCi0jIFJFTEVBU0UKLSMKLSMgU3RlcCAgOSkgIFJlc3luYyBjb2RlIChvbWl0dGVkKQotIyBTdGVwIDEwKSAgVXBkYXRlIHZlcnNpb24KLVN5c3RlbSgicmVsZWFzZTp2ZXJzaW9uc3RhbXAiLAotICAgICAgICJwZXJsIGxvY2FsL1ZlcnNpb24tTXVuZ2UucGwgLXYgJHZlcnNpb24gLU0gLVAgLUMiKTsKLQotIyBTdGVwIDExKSAgQ3JlYXRlIHRoZSByZWxlYXNlIHRhZyBjaGVja3BvaW50Ci1teSAkcm9vdD0iaHR0cHM6Ly9uZXQtc25tcC5zdm4uc291cmNlZm9yZ2UubmV0L3N2bnJvb3QvbmV0LXNubXAiOwotaWYgKCAkYnJhbmNoICkgewotICAgIFN5c3RlbSgicmVsZWFzZTp0YWciLAotICAgICAgICJzdm4gY29weSAtbSBcIiR2ZXJzaW9uIHJlbGVhc2VcIiAkcm9vdC9icmFuY2hlcy8kYnJhbmNoICRyb290L3RhZ3MvJHZ0YWciKTsKLX0gZWxzZSB7Ci0gICAgU3lzdGVtKCJyZWxlYXNlOnRhZyIsCi0gICAgICAgInN2biBjb3B5IC1tIFwiJHZlcnNpb24gcmVsZWFzZVwiICRyb290L3RydW5rICRyb290L3RhZ3MvJHZ0YWciKTsKLX0KLQotIyBTdGVwIDEyKSAgQ29uc3RydWN0IHRoZSB0YXJiYWxsCi1teSAkdGFyID0gInN0YXIgYXJ0eXBlPXVzdGFyIjsgICAgIyBYWFggLSBjaGVjayBmb3Igc3Rhci9ndGFyL2V0YwotU3lzdGVtKCJyZWxlYXNlOm1ha2VkaXN0IiwKLSAgICAgICAic3ZuIGV4cG9ydCAkcm9vdC90YWdzLyR7dnRhZ30vbmV0LXNubXAgbmV0LXNubXAtJHZlcnNpb24iKTsKLVN5c3RlbSgicmVsZWFzZTpyZW1vdmVmaWxlcyIsCi0gICAgICAgIm5ldC1zbm1wLSR2ZXJzaW9uL3JlbW92ZS1maWxlcyBuZXQtc25tcC0kdmVyc2lvbiIpOwotU3lzdGVtKCJyZWxlYXNlOm1ha2VkaXN0IiwKLSAgICAgICAiJHRhciAtYyAteiAtZiBuZXQtc25tcC0ke3ZlcnNpb259LnRhci5neiAgbmV0LXNubXAtJHZlcnNpb24iKTsKLVN5c3RlbSgicmVsZWFzZTptYWtlemlwY2xlYW4iLAotICAgICAgICJybSAtZiBuZXQtc25tcC0ke3ZlcnNpb259LnppcCIpOwotU3lzdGVtKCJyZWxlYXNlOm1ha2V6aXAiLAotICAgICAgICJ6aXAgLXIgbmV0LXNubXAtJHt2ZXJzaW9ufS56aXAgIG5ldC1zbm1wLSR2ZXJzaW9uIik7Ci0KLQotIyBTdGVwIDEzKSAgU2lnbiAob3IgY2hlY2tzdW0pIHRoZSBwYWNrYWdlCi1teSAkc2lnMTsKLW15ICRzaWcyOwotbXkgJHBrZzEgPSAibmV0LXNubXAtJHt2ZXJzaW9ufS50YXIuZ3oiOwotbXkgJHBrZzIgPSAibmV0LXNubXAtJHt2ZXJzaW9ufS56aXAiOwotCi1TeXN0ZW0oInJlbGVhc2U6c2VhcmNoaW5nLWdwZy1rZXlzIiwKLSAgICAgICAiZ3BnIC0tbGlzdC1zZWNyZXQta2V5cyBuZXQtc25tcC1hZG1pbiIpOwotaWYoJD8gIT0gMCkgewotICAgICRzaWcxID0gIiR7cGtnMX0ubWQ1IjsKLSAgICAkc2lnMiA9ICIke3BrZzJ9Lm1kNSI7Ci0gICAgU3lzdGVtKCJyZWxlYXNlOm1kNSIsIm1kNXN1bSAkcGtnMSA+ICRzaWcxIik7Ci0gICAgU3lzdGVtKCJyZWxlYXNlOm1kNSIsIm1kNXN1bSAkcGtnMiA+ICRzaWcyIik7Ci19IGVsc2UgewotICAgICMgY3VycmVudGx5IG9ubHkgcnN0b3J5IGFuZCBoYXJkYWtlciBoYXZlIHRoZSBncGcga2V5cyB0aWxsIFdlcwotICAgICMgc2VlcyBzb21lb25lIGVsc2UgaW4gcGVyc29uIDstKQotICAgICRzaWcxID0gIiR7cGtnMX0uYXNjIjsKLSAgICBTeXN0ZW0oInJlbGVhc2U6Z3BnIiwiZ3BnIC11IG5ldC1zbm1wLWFkbWluIC1hIC0tZGV0YWNoLXNpZ24gJHBrZzEiKTsKLSAgICAkc2lnMiA9ICIke3BrZzJ9LmFzYyI7Ci0gICAgU3lzdGVtKCJyZWxlYXNlOmdwZyIsImdwZyAtdSBuZXQtc25tcC1hZG1pbiAtYSAtLWRldGFjaC1zaWduICRwa2cyIik7Ci19Ci0KLSMKLSMgIFJFTEVBU0UgVEVTVElORzoKLSMKLSMgU3RlcCAxNCkgIFVucGFjaywgYnVpbGQgYW5kIHRlc3QgdGhlIHJlbGVhc2UgdGFyYmFsbAotU3lzdGVtKCJwb3N0dGVzdDp1bnRhciIsICJybSAtcmYgbmV0LXNubXAtJHt2ZXJzaW9ufSIpOwotU3lzdGVtKCJwb3N0dGVzdDp1bnRhciIsICJ0YXIgeHpmIG5ldC1zbm1wLSR7dmVyc2lvbn0udGFyLmd6Iik7Ci1jaGRpcigibmV0LXNubXAtJHt2ZXJzaW9ufSIpOwotU3lzdGVtKCJwb3N0dGVzdDpjb25maWd1cmUiLCIuL2NvbmZpZ3VyZSAkY29uZmlndXJlYXJncyIpOwotU3lzdGVtKCJwb3N0dGVzdDptYWtlIiwibWFrZSIpOwotU3lzdGVtKCJwb3N0dGVzdDp0ZXN0IiwibWFrZSB0ZXN0Iik7Ci1jaGRpcigiLi4iKTsKLQotIyBTdGVwIDE1KSAgRG91YmxlLWNoZWNrIHRoZXJlIGFyZSBubyBvdXRzdGFuZGluZyBjaGFuZ2VzCi1TeXN0ZW0oInJlbGVhc2U6dXBkYXRlIiwic3ZuIC11IHN0YXR1cyIpOwotCi0jCi0jIFN0ZXBzIDE2IGFuZCBmb2xsb3dpbmcgYXJlIE5PVCBoYW5kbGVkIGF1dG9tYXRpY2FsbHkuCi0jIFNlZSB0aGUgUkVMRUFTRS1JTlNUUlVDVElPTlMgZm9yIGZ1bGwgZGV0YWlscy4KLSMKLXByaW50IFNUREVSUiAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBGSU5JU0hFRCAqKioqKioqKioqKioqKioqKioqKlxuIjsKLXByaW50IFNUREVSUiAiXG5Eb3VibGUgY2hlY2sgdGhlIFNWTiBzdGF0dXMgb3V0cHV0IGFib3ZlIGZvciBhbnkgb3V0c3RhbmRpbmcgY2hhbmdlc1xuXG4iOwotcHJpbnQgU1RERVJSICJSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIHVwbG9hZCB0aGUgcmVsYXNlIHRvIFNGOlxuIjsKLXByaW50IFNUREVSUiAiICByc3luYyAtdiAgJHBrZzEgJHBrZzIgJHNpZzEgJHNpZzIgZnJzLnNvdXJjZWZvcmdlLm5ldDp1cGxvYWRzL1xuIjsKLXByaW50IFNUREVSUiAiU2VlIFJFTEVBU0UtSU5TVFJVQ1RJT05TIGZvciBhbnkgYWRkaXRpb25hbCBzdGVwc1xuIjsKLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1zdWIgU3lzdGVtIHsKLSAgICBteSAkbmFtZSA9IHNoaWZ0OwotICAgIG15ICRjbWQgPSAkZGVzY3IgPSBqb2luKCIgIiwgQF8pOwotICAgIG15ICRyYzsKLSAgICB3aGlsZSAoZG9zdGVwKCRuYW1lKSkgewotCXByaW50IFNUREVSUiAiICBydW5uaW5nOiAiLCRjbWQsIlxuIjsKLQlsYXN0IGlmICgkb3B0c3snbid9KTsKLQlzeXN0ZW0oQF8pOwotCSRyYyA9IGNoZWNrcmVzdWx0KCk7Ci0gICAgICAgIGxhc3QgaWYgKCRyYyA9PSAwKTsKLSAgICB9Ci19Ci0KLXN1YiBjaGVja3Jlc3VsdCB7Ci0gICAgaWYgKCQ/KSB7Ci0JcHJpbnQgU1RERVJSICJUaGUgYWJvdmUgU1RFUCBmYWlsZWQuICBDb250aW51ZSBhbnl3YXkgKHkvbi9yKT8gICI7Ci0JbXkgJGFucyA9IDxTVERJTj47Ci0gICAgICAgIHJldHVybiAxIGlmICgkYW5zID1+IC9eci8pOwotCWlmICgkYW5zID1+IC9ebi8pIHsKLQkgICAgcHJpbnQgU1RERVJSICIgIEVYSVRJTkdcbiI7Ci0JICAgIGV4aXQ7Ci0JfQotICAgIH0KLSAgIHJldHVybiAwOwotfQotCi1zdWIgZG9zdGVwIHsKLSAgICBteSAkbmFtZSA9IHNoaWZ0OwotICAgIHByaW50IFNUREVSUiAiXG4qKioqKioqKioqIFNURVA6ICRuYW1lICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIjsKLSAgICBpZiAoJGRlc2NyKSB7Ci0JcHJpbnQgU1RERVJSICIgIFskZGVzY3JdXG4iOwotCSRkZXNjciA9IHVuZGVmOwotICAgIH0KLSAgICBwcmludCAiXG4iOwotICAgIGlmICgkb3B0c3sncyd9ICYmICRuYW1lIG5lICRvcHRzeydzJ30pIHsKLQlwcmludCBTVERFUlIgIiAgICAgIFtza2lwcGluZ11cbiI7Ci0JcmV0dXJuIDA7Ci0gICAgfQotICAgICRvcHRzeydzJ30gPSAnJzsKLSAgICBpZiAoJG9wdHN7cn0gJiYgJG5hbWUgPX4gLyRvcHRze3J9LykgewotCXByaW50IFNUREVSUiAiICAgICAgW3NraXBwaW5nXVxuIjsKLQlyZXR1cm4gMDsKLSAgICB9IGVsc2lmICgkb3B0c3snaSd9KSB7Ci0JcHJpbnQgU1RERVJSICIgIERvIHRoaXMgc3RlcCAoeS9uL3EpPyAgIjsKLQlteSAkYW5zID0gPFNURElOPjsKLQlpZiAoJGFucyA9fiAvXm4vKSB7Ci0JICAgIHByaW50IFNUREVSUiAiICAgICAgW3NraXBwaW5nXVxuIjsKLQkgICAgcmV0dXJuIDA7Ci0JfQotCWlmICgkYW5zID1+IC9ecS8pIHsKLQkgICAgcHJpbnQgU1RERVJSICIgICAgICBRVUlUVElOR1xuIjsKLQkgICAgZXhpdDsKLQl9Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi1zdWIgbWFudWFsc3RlcCB7Ci0gICAgbXkgJHRhZyA9IHNoaWZ0OwotCi0gICAgaWYgKGRvc3RlcCgkdGFnKSkgewotCXByaW50IFNUREVSUiAiXG5cbiIsam9pbigiICIsQF8pOwotCi0JcHJpbnQgU1RERVJSICJcblxuICBIaXQgcmV0dXJuIHdoZW4gZG9uZTogICI7Ci0KLQlyZXR1cm4gMSBpZiAoJG9wdHN7J24nfSk7Ci0KLQlteSAkYm9ndXMgPSA8U1RESU4+OwotCXJldHVybiAxOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgZ2V0b3B0IGxvbmcgZ3VpIHBvcnRhYmlsaXR5IGNvZGUKLSMKLXN1YiBMb2NhbEdldE9wdGlvbnMgewotICAgIGlmIChldmFsIHtyZXF1aXJlIEdldG9wdDo6R1VJOjpMb25nO30pIHsKLQlpbXBvcnQgR2V0b3B0OjpHVUk6Okxvbmc7Ci0JR2V0b3B0OjpHVUk6Okxvbmc6OkNvbmZpZ3VyZShxdyhkaXNwbGF5X2hlbHAgbm9faWdub3JlX2Nhc2UpKTsKLQlyZXR1cm4gR2V0T3B0aW9ucyhAXyk7Ci0gICAgfSBlbHNlIHsKLQlyZXF1aXJlIEdldG9wdDo6TG9uZzsKLQlHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZShxdyhhdXRvX2hlbHAgbm9faWdub3JlX2Nhc2UpKTsKLQlpbXBvcnQgR2V0b3B0OjpMb25nOwotICAgIH0KLSAgICBHZXRPcHRpb25zKExvY2FsT3B0aW9uc01hcChAXykpOwotfQotCi1zdWIgTG9jYWxPcHRpb25zTWFwIHsKLSAgICBteSAoJHN0LCAkY2IsIEBvcHRzKSA9ICgocmVmKCRfWzBdKSBlcSAnSEFTSCcpCi0JCQkgICAgPyAoMSwgMSwgJF9bMF0pIDogKDAsIDIpKTsKLSAgICBmb3IgKG15ICRpID0gJHN0OyAkaSA8PSAkI187ICRpICs9ICRjYikgewotCWlmICgkX1skaV0pIHsKLQkgICAgbmV4dCBpZiAocmVmKCRfWyRpXSkgZXEgJ0FSUkFZJyAmJiAkX1skaV1bMF0gPX4gL15HVUk6Lyk7Ci0JICAgIHB1c2ggQG9wdHMsICgocmVmKCRfWyRpXSkgZXEgJ0FSUkFZJykgPyAkX1skaV1bMF0gOiAkX1skaV0pOwotCSAgICBwdXNoIEBvcHRzLCAkX1skaSsxXSBpZiAoJGNiID09IDIpOwotCX0KLSAgICB9Ci0gICAgcmV0dXJuIEBvcHRzOwotfQotCi1fX0VORF9fCi0KLT1oZWFkMSBOQU1FCi0KLW1ha2VyZWxlYXNlIC0gc29mdHdhcmUgcGFja2FnZSByZWxlYXNlIHNjcmlwdAotCi09aGVhZDEgU1lOT1BTSVMKLQotbWFrZXJlbGVhc2UgW29wdGlvbnNdIHZlcnNpb24KLQotPWhlYWQxIEFSR1VNRU5UUwotCi1Gb3IgZnVsbCByZWxlYXNlcywgdGhlIHZlcnNpb24gc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgZm9ybSAgSTw1LngueT4KLQotRm9yIHByZS1yZWxlYXNlcywgdGhlIHZlcnNpb24gc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgZm9ybSAgSTw1LngueS5wcmVOPgotCi1Gb3IgcmVsZWFzZSBjYW5kaWRhdGVzLCB0aGUgdmVyc2lvbiBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBmb3JtICBJPDUueC55LnJjTj4KLQotQWx0ZXJuYXRpdmVseSwgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHZlcnNpb25zIGluIHRoZSBmb3JtICBFeHQtNS14LXkKLQotPWhlYWQxIE9QVElPTlMKLQotPW92ZXIgOAotCi09aXRlbSBCPC1yIHtzdGVwfXwgLS1yZWdleHAtaWdub3JlLXN0ZXBzPXtzdGVwfT4KLQotSWdub3JlIHN0ZXBzIG1hdGNoaW5nIHRoZSByZWd1bGFyIGV4cHJlc3Npb24ge3N0ZXB9Ci0KLT1pdGVtIEI8LXMge3N0ZXB9fCAtLXN0YXJ0LWF0PXtzdGVwfT4KLQotU2tpcCBhbGwgc3RlcHMgcHJlY2VkaW5nIHRoZSBzcGVjaWZpZWQgKGV4YWN0KSB7c3RlcH0KLQotPWl0ZW0gQjwtaSB8IC0taW50ZXJhY3RpdmU+Ci0KLVByb21wdCB3aGV0aGVyIG9yIG5vdCB0byBleGVjdXRlIGVhY2ggc3RlcAotCi09aXRlbSBCPC1uIHwgLS1kcnktcnVuPgotCi1QcmludCB0aGUgY29tbWFuZHMgdGhhdCB3b3VsZCBiZSBleGVjdXRlZCwgYnV0IGRvIG5vdCBleGVjdXRlIHRoZW0uCi0KLT1pdGVtIEI8LWggfCAtLWhlbHA+Ci0KLURpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UuCi0KLT1iYWNrCmRpZmYgLS1naXQgYS9kaXN0L21ha2VyZWxlYXNlLnhtbCBiL2Rpc3QvbWFrZXJlbGVhc2UueG1sCmluZGV4IDk2N2M1YmUuLmYwZmI4MDMgMTAwNjQ0Ci0tLSBhL2Rpc3QvbWFrZXJlbGVhc2UueG1sCisrKyBiL2Rpc3QvbWFrZXJlbGVhc2UueG1sCkBAIC0yNzksNyArMjc5LDcgQEAKIAkgICAgICA8L3RleHQ+CiAJICAgICAgPGNvbW1hbmRzPgogCSAgICAgICAgPGNvbW1hbmQ+Z2l0IGNoZWNrb3V0IFY1LTQtcGF0Y2hlczwvY29tbWFuZD4KLQkgICAgICAgIDxjb21tYW5kPmVjaG8ge0JSQU5DSFBBVEh9ID4+IGRpc3QvcmVsZWFzZSA8L2NvbW1hbmQ+CisJICAgICAgICA8Y29tbWFuZD5lY2hvIHtCUkFOQ0hQQVRIfSByYyA+PiBkaXN0L3JlbGVhc2UgPC9jb21tYW5kPgogCSAgICAgICAgPGNvbW1hbmQgaWdub3JlZXJyb3I9IjEiPmdpdCBjb21taXQgLW0gIlJlbGVhc2UgQ2FuZGlkYXRlIGZvciB7QlJBTkNIUEFUSH0iIGRpc3QvcmVsZWFzZTwvY29tbWFuZD4KIAkgICAgICAgIDxjb21tYW5kPmdpdCBjaGVja291dCB7QlJBTkNIUEFUSH0gPC9jb21tYW5kPgogCSAgICAgICAgPGNvbW1hbmQ+Z2l0IG1lcmdlIFY1LTQtcGF0Y2hlcyAgICA8L2NvbW1hbmQ+CmRpZmYgLS1naXQgYS9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvREVWRU5WIGIvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL0RFVkVOVgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTA1Y2FlCi0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL0RFVkVOVgpAQCAtMCwwICsxLDQ0IEBACitQUkVGSVg9L29wdC9PU1MKK2V4cG9ydCBQUkVGSVgKKworUEFUSD0kUFJFRklYL2JpbjovdXNyL2JpbjovdXNyL2R0L2JpbjovdXNyL29wZW53aW4vYmluOi91c3Ivc2JpbjovdXNyL2Njcy9iaW46L3Vzci91Y2IKK2V4cG9ydCBQQVRICisKK0xEX0xJQlJBUllfUEFUSD0kUFJFRklYL2xpYiAKK0xEX1JVTl9QQVRIPSRMRF9MSUJSQVJZX1BBVEgKK2V4cG9ydCBMRF9MSUJSQVJZX1BBVEggTERfUlVOX1BBVEgKKworQ0M9Z2NjCitleHBvcnQgQ0MKKworQ1BQRkxBR1M9Ii1JJFBSRUZJWC9pbmNsdWRlIgorQ0ZMQUdTPSItbXY4IC1tdHVuZT11bHRyYXNwYXJjIgorTERGTEFHUz0iLUwkUFJFRklYL2xpYiAtUiRQUkVGSVgvbGliIgorZXhwb3J0IENQUEZMQUdTIENGTEFHUyBMREZMQUdTCisKK1RNUD0vdG1wCitleHBvcnQgVE1QCisKK1RPUD0vY3RidG8vaWRjL2NpY24vc291cmNlL2J1aWxkL2BiYXNlbmFtZSAkUFJFRklYYAorZXhwb3J0IFRPUAorCitTUkM9JFRPUC9kaXN0CitleHBvcnQgU1JDCisKK1dPUks9JFRPUC93b3JrCitleHBvcnQgV09SSworCisKKyMgZm9yIHN1cGVycGFjazoKKworQ0hFQ0tMSVNUPSRUT1AvQ2hlY2tsaXN0OyBleHBvcnQgQ0hFQ0tMSVNUCitNQUtFPSRQUkVGSVgvYmluL21ha2UKK2V4cG9ydCBNQUtFCisKKyNDQVRFR09SWT1PcGVuU291cmNlOyBleHBvcnQgQ0FURUdPUlkKKyNWRU5ET1I9IkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiI7IGV4cG9ydCBWRU5ET1IKK0JBU0VESVI9L29wdDsgZXhwb3J0IEJBU0VESVIKK1BSRUZJWD0kQkFTRURJUi9gYmFzZW5hbWUgJFRPUGA7IGV4cG9ydCBQUkVGSVgKK1JFTEVBU0VfQVJFQT0kVE9QLy4uL3BhY2thZ2VzL2AvYmluL3VuYW1lIC1wYC9gL2Jpbi91bmFtZSAtcmA7IGV4cG9ydCBSRUxFQVNFX0FSRUEKKwordW1hc2sgMDIyCmRpZmYgLS1naXQgYS9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvUkVBRE1FIGIvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2UyNWE2Ci0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL1JFQURNRQpAQCAtMCwwICsxLDE5IEBACitUaGUgImJ1aWxkcGFja2FnZS1zb2xhcmlzIiBzY3JpcHQgZG9lcyBhICJvbmUtc2hvdCIgYnVpbGQgCithbmQgcGFja2FnaW5nIG9mIGFuIHVudGFycmVkIG5ldC1zbm1wIGRpc3RyaWJ1dGlvbiAKK29uIFNvbGFyaXMgd2l0aG91dCByZXF1aXJpbmcgcm9vdCBhY2Nlc3MuIAorIAorVGhlIHJlc3VsdGluZyBuYXRpdmUgU29sYXJpcyBwYWNrYWdlIGNhbiB0aGVuIGJlIAorKGF1dG9tYXRpY2FsbHkpIGluc3RhbGxlZC9yZW1vdmVkIHVzaW5nIHRoZSBTb2xhcmlzIAorcGtnYWRkKDEpL3BrZ3JtKDEpIGNvbW1hbmRzLiAKKyAKK1RoZSBzY3JpcHQgcmVxdWlyZXMgY3VzdG9taXphdGlvbiBvZiB5b3VyIAorZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgLSBzZWUgYXR0YWNoZWQgZmlsZSAKK0RFVkVOViAtIGJlZm9yZSBpdCBjYW4gYmUgdXNlZC4gCisgCisgQmFzaWMgdXNhZ2U6IC4vYnVpbGRwYWNrYWdlLXNvbGFyaXMgZGlzdGNsZWFuIAorIAorVGhlIHNjcmlwdCAiZWxmZGVwZW5kLnNoIiBpcyByZXF1aXJlZCB0byAKK2RldGVybWluZSB0aGUgZGVwZW5kZW5jaWVzIG9mIGFsbCBidWlsdCBFTEYgYmluYXJpZXMgCithbmQgbGlicmFyaWVzIHRvIGNyZWF0ZSBhICJwYWNrYWdlIGRlcGVuZGVuY3kgZmlsZSIgLSAKK3NlZSBkZXBlbmQoNCkuIAorIApkaWZmIC0tZ2l0IGEvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL2J1aWxkcGFja2FnZS1zb2xhcmlzIGIvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL2J1aWxkcGFja2FnZS1zb2xhcmlzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZjRmMGMKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvYnVpbGRwYWNrYWdlLXNvbGFyaXMKQEAgLTAsMCArMSwxODIgQEAKKyMhL2Jpbi9rc2gKKyMKKyMgYXV0b21hdGljIGJ1aWxkIChjb25maWd1cmUvbWFrZS9wYWNrYWdlKSBzY3JpcHQgCisjIGZvciBORVQtU05NUCBvbiBTb2xhcmlzCisjCisjIDIwMDQvMTEgUmV3cml0ZSB0byBzdHJpY3RseSBidWlsZCB0aGUgcGFja2FnZSBqZnJhbmtAZmFzdHJpZXZlLmNvbQorIyAyMDAyLzExIFN0ZWZhbi5SYWRtYW5AQ1RCVE8uT1JHCisKKworIyBJZiB5b3UgZGVmaW5lIERFQlVHLCB0aGUgc2NyaXB0IHdpbGwgYmUgdmVyYm9zZSwgYW5kIHdlIHdvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMKKworI0RFQlVHPVkKK2lmIFsgISAteiAkREVCVUcgXTsgdGhlbgorICAgc2V0IC14ICMgYmUgdmVyYm9zZQorZmkKKworIyBUTVAgaXMgd2hlcmUgd2UgYXJlIHRlbXBvcmFyaWx5IGluc3RhbGxpbmcgdGhlIHBhY2thZ2UgdG8KK1RNUD1gcHdkYC9wa2dyb290CisKKyMgUEtHIGlzIHRoZSBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgbmFtZSBmb3IgdGhlIHBhY2thZ2UKK1BLRz1PU1NuZXQtc25tcAorCisjUFJFRklYIGlzIHRoZSB0b3AgbGV2ZWwgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudCBkaXJlY3RvcnkuCisjIFRoaXMgc2hvdWxkIGJlIG5vcm1hbGx5IGRldGVybWluZWQgYnkgY29uZmlndXJlCisjcHJlZml4PS9vcHQvJHtQS0d9CitwcmVmaXg9L3Vzci9sb2NhbAorCisjIFZBUkRJUiBpcyB0aGUgcGVyc2lzdGVudCBkaXIgZnJvbSBjb25maWd1cmUKK1ZBUkRJUj0vdmFyL25ldC1zbm1wCisKK2V4cGFuZGVkcHJlZml4PSR7VE1QfS8ke3ByZWZpeH0KKworUEVSTD0ke1BFUkw6PWB3aGljaCBwZXJsYH0KK01BS0U9JHtNQUtFOj1gd2hpY2ggbWFrZWB9CisKK2lmIFsgLWQgJHtUTVB9IF07IHRoZW4KKyAgIHJtIC1yZiAke1RNUH07CitmaQorCisjIGluc3RhbGwgdG8gdGVtcG9yYXJ5IHBhY2thZ2UgYnVpbGQgcm9vdAorY2QgLi4vLi4KKworJE1BS0UgaW5zdGFsbCBwcmVmaXg9JHtleHBhbmRlZHByZWZpeH0gZXhlY19wcmVmaXg9JHtleHBhbmRlZHByZWZpeH0gfHwgZXhpdCAxCisKKyMgV2Ugbm93IGhhdmUgdGhlIG1haW4gc29mdHdhcmUgaW5zdGFsbGVkLCBjb3B5IG92ZXIgdGhlIGF1eGlsbGFyeSBmaWxlcworY2QgLQorCithd2sgL15fX19zbm1wZC1pbml0LmQvLC9fX19FT0YvICQwIHwgZ3JlcCAtdiBeX19fIHwgc2VkICJzLEBwcmVmaXhALCRwcmVmaXgsZyIgPnxzbm1wZC1pbml0LmQKKworIyBjcmVhdGUgcGVyc2lzdGVudCBkaXJlY3RvcnkgaWYgaXQgZG9lcyBub3QgZXhpc3QKK1sgLWQgJFRNUC8kVkFSRElSIF0gfHwgaW5zdGFsbCAtZCAtbSAwNzU1ICRUTVAvJFZBUkRJUiAKKworIyBwb3N0aW5zdGFsbAorTERfTElCUkFSWV9QQVRIPSRUTVAkcHJlZml4L2xpYjokTERfTElCUkFSWV9QQVRIICRUTVAvJHByZWZpeC9iaW4vc25tcHRyYW5zbGF0ZVwKKyAgLU0kVE1QLyRwcmVmaXgvc2hhcmUvc25tcC9taWJzIC1tIFNOTVB2Mi1TTUkgLjEgPiYtIHx8IGV4aXQgJD8gIyBjcmVhdGUgTUlCIGluZGV4CisKKyMgcGFja2FnZQordmVyc2lvbj1gLi4vLi4vbmV0LXNubXAtY29uZmlnIC0tdmVyc2lvbmAKK29zPWB1bmFtZSAtc2AKK3JlbD1gdW5hbWUgLXJgCitjbGFzcz1zbm1wCitvd25lcj0kTE9HTkFNRQorZ3JvdXBzIHwgYXdrICd7cHJpbnQgJDF9JyB8IHJlYWQgZ3JvdXAKK2NhdCA8PD09ID58cGtnaW5mbworUEtHPSIke1BLR30iCitOQU1FPSJuZXQtc25tcC0kdmVyc2lvbiIKK0FSQ0g9ImB1bmFtZSAtcGAiCitWRVJTSU9OPSIkdmVyc2lvbiwgJG9zICRyZWwsIGBkYXRlICslWS4lbS4lZC4lSC4lTS4lU2AiCitDQVRFR09SWT0iT3BlblNvdXJjZSIKK0RFU0M9IlRoZSBORVQtU05NUCBUb29scyBhbmQgTGlicmFyeSIKK1ZFTkRPUj0iaHR0cDovL25ldC1zbm1wLnNvdXJjZWZvcmdlLm5ldCIKK0NMQVNTRVM9IiRjbGFzcyIKK0JBU0VESVI9IiRwcmVmaXgiCis9PQorLiAuL3BrZ2luZm8KKworZWNobyAnY2hlY2tpbmcgZGVwZW5kZW5jaWVzJwordW5zZXQgTERfTElCUkFSWV9QQVRIICMgYmluYXJpZXMgYW5kIGxpYnJhcmllcyBzaG91bGQgaGF2ZSBSUEFUSCBub3cKKy4vZWxmZGVwZW5kLnNoICRUTVAgfCBncmVwIC12ICJQICAqJFBLRyAiID58ZGVwZW5kICMgaWdub3JlIG93biBwYWNrYWdlCisKK2VjaG8gJ2NyZWF0aW5nIHByb3RvdHlwZSBmaWxlJworY2F0IDw8PT0gPnxwcm90b3R5cGUKK2kgcGtnaW5mbworaSBjb3B5cmlnaHQ9Li4vLi4vQ09QWUlORworI2kgcHJlaW5zdGFsbD0uL3ByZWluc3RhbGwtcG9zdHJlbW92ZQorI2kgcG9zdGluc3RhbGw9Li9wcmVpbnN0YWxsLXBvc3RyZW1vdmUKK2kgZGVwZW5kCisjIHNldCBkZWZhdWx0IG1vZGUsIG93bmVyIGFuZCBncm91cAorISBkZWZhdWx0IDA3NzUgcm9vdCBzeXMKK2Qgc25tcCAvZXRjIDA3NTUgcm9vdCBzeXMKK2Qgc25tcCAvZXRjL2luaXQuZCAwNzU1IHJvb3Qgc3lzCitmIHNubXAgL2V0Yy9pbml0LmQvc25tcGQ9Li9zbm1wZC1pbml0LmQgMDc1NSByb290IHN5cworI2wgc25tcCAvZXRjL3JjMi5kL1M3NnNubXBkPS9ldGMvaW5pdC5kL3NubXBkICMgbm90IHlldAorPT0KKworcGtncHJvdG8gLWMgc25tcCAkVE1QPS8gfFwKK2VncmVwIC12ICdeZCAuKiAvIHxeZCAuKiAvdmFyIHxeZCAuKiAvb3B0IHxeIC4qcGVybGxvY2FsLnBvZD0nIHxcCitzZWQgLWUgInMvICRvd25lciAkZ3JvdXBcJC8vIiA+PiBwcm90b3R5cGUgfHwgZXhpdCAkPworIyBhbmQgaWdub3JlIHRvcCBsZXZlbCBkaXJlY3RvcmllcyAobXVzdCBwcmUtZXhpc3QpCisKK2VjaG8gJ2NyZWF0aW5nIHBhY2thZ2UnCitwa2dtayAtb2QgLiB8fCBleGl0ICQ/Citwa2d0cmFucyAuICRQS0ctJHZlcnNpb24tJEFSQ0gtJG9zJHJlbC5wa2cgJFBLRyB8fCBleGl0ICQ/CisKKyMgV2Ugc2hvdWxkIHJlYWxseSBkbyBzb21lIGNsZWFudXAgaGVyZQoraWYgWyAteiAkREVCVUcgXTsgdGhlbgorICAgcm0gLXJmIHNubXBkLWluaXQuZCAkUEtHICRUTVAgcGtnaW5mbyBwcm90b3R5cGUgZGVwZW5kIAorZmkKKworZWNobyAiYnVpbGQgd2FzIHN1Y2Nlc3NmdWxsIgorZXhpdCAwCisKKyMgL2V0Yy9pbml0L3NubXBkCisjIFRoaXMgaXMgcGFja2FnZWQgaW5zaWRlIG9mIGJ1aWxkcGFja2FnZS1zb2xhcmlzIGJlY2F1c2Ugd2UgbmVlZCB0byBzdWJzdGl0dXRlCisjIGluIHRoZSBhY3R1YWwgc2VydmVyIG5hbWUuCisKK19fX3NubXBkLWluaXQuZF9fXworIyEgL2Jpbi9zaAorIworIyBzdGFydC9zdG9wIHRoZSBORVQtU05NUCBtYXN0ZXIgYWdlbnQgKHNubXBkKQorIworIyBMb2NhdGlvbjogICAgICAvZXRjL2luaXQuZC9zbm1wZAorIyAgICAgICAgICAgICAgICAvZXRjL3JjMy5kL1M/P3NubXBkCisjCituYW1lPSJORVQtU05NUCBhZ2VudCIKK2RhZW1vbj1AcHJlZml4QC9zYmluL3NubXBkCisKK2Nhc2UgIiQxIiBpbgorc3RhcnQpCisgICAgICAgIFsgISAteCAkZGFlbW9uIF0gJiYgZWNobyAiRVJST1I6IGNhbm5vdCBzdGFydCAkbmFtZSAoJGRhZW1vbikiICYmIGV4aXQgMQorICAgICAgICBlY2hvICJTdGFydGluZyAkbmFtZSAuLi4gXGMiCisgICAgICAgIFBHUkVQPWB3aGljaCBwZ3JlcGAKKyAgICAgICAgaWYgWyAteiAkUEdSRVAgXTsgdGhlbgorICAgICAgICAgICBwaWQ9YHBncmVwIC1meCAkZGFlbW9uYAorICAgICAgICBlbHNlCisgICAgICAgICAgIHBpZD1gcHMgLWVmIHwgZ3JlcCAkZGFlbW9uIHwgZ3JlcCAtdiBncmVwIHwgYXdrICd7cHJpbnQgJDJ9J2AKKyAgICAgICAgZmkKKworICAgICAgICBbICEgLXogIiRwaWQiIF0gJiYgZWNobyAiYWxyZWFkeSBydW5uaW5nIHdpdGggcGlkICRwaWQuIiAmJiBleGl0IDAKKyAgICAgICAgJGRhZW1vbiAmJiBlY2hvICJkb25lLiIKKyAgICAgICAgOzsKK3N0b3ApCisgICAgICAgIGVjaG8gIlN0b3BwaW5nICRuYW1lIC4uLiBcYyIKKyAgICAgICAgUEdSRVA9YHdoaWNoIHBncmVwYAorICAgICAgICBpZiBbIC16ICRQR1JFUCBdOyB0aGVuCisgICAgICAgICAgIHBpZD1gcGdyZXAgLWZ4ICRkYWVtb25gCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgcGlkPWBwcyAtZWYgfCBncmVwICRkYWVtb24gfCBncmVwIC12IGdyZXAgfCBhd2sgJ3twcmludCAkMn0nYAorICAgICAgICBmaQorICAgICAgICBbICEgLXogIiRwaWQiIF0gJiYgKGtpbGwgJHBpZCAmJiBlY2hvICJkb25lIiApIHx8IGVjaG8gIm5vdCBydW5uaW5nIgorCisgICAgICAgIDs7CitzdGF0dXMpCisgICAgICAgIGVjaG8gIiRuYW1lIGlzIFxjIgorICAgICAgICBQR1JFUD1gd2hpY2ggcGdyZXBgCisgICAgICAgIGlmIFsgLXogJFBHUkVQIF07IHRoZW4KKyAgICAgICAgICAgcGlkPWBwZ3JlcCAtZnggJGRhZW1vbmAKKyAgICAgICAgZWxzZQorICAgICAgICAgICBwaWQ9YHBzIC1lZiB8IGdyZXAgJGRhZW1vbiB8IGdyZXAgLXYgZ3JlcCB8IGF3ayAne3ByaW50ICQyfSdgCisgICAgICAgIGZpCisgICAgICAgIFsgLXogIiRwaWQiIF0gJiYgZWNobyAibm90IHJ1bm5pbmciIHx8IGVjaG8gInJ1bm5pbmcgd2l0aCBwaWQgJHBpZCIKKyAgICAgICAgOzsKK3Jlc3RhcnQpCisgICAgICAgICQwIHN0b3AgJiYgJDAgc3RhcnQKKyAgICAgICAgOzsKK3JlbG9hZCkKKyAgICAgICAgZWNobyAiUmUtaW5pdGlhbGl6aW5nICRuYW1lIC4uLlxjIgorICAgICAgICBQR1JFUD1gd2hpY2ggcGdyZXBgCisgICAgICAgIGlmIFsgLXogJFBHUkVQIF07IHRoZW4KKyAgICAgICAgICAgcGlkPWBwZ3JlcCAtZnggJGRhZW1vbmAKKyAgICAgICAgZWxzZQorICAgICAgICAgICBwaWQ9YHBzIC1lZiB8IGdyZXAgJGRhZW1vbiB8IGdyZXAgLXYgZ3JlcCB8IGF3ayAne3ByaW50ICQyfSdgCisgICAgICAgIGZpCisgICAgICAgIFsgISAteiAiJHBpZCIgXSAmJiAoa2lsbCAtSFVQICRwaWQgJiYgZWNobyAiZG9uZSIgKSB8fCBlY2hvICJub3QgcnVubmluZyIKKyAgICAgICAgOzsKKyopCisgICAgICAgIGVjaG8gIlVzYWdlOiAkMCB7IHN0YXJ0IHwgc3RvcCB8IHN0YXR1cyB8IHJlc3RhcnQgfCByZWxvYWQgfSIKKyAgICAgICAgOzsKK2VzYWMKKworZXhpdCAwCitfX19FT0ZfX18KZGlmZiAtLWdpdCBhL2Rpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZC9lbGZkZXBlbmQuc2ggYi9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvZWxmZGVwZW5kLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU0N2M0Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvZWxmZGVwZW5kLnNoCkBAIC0wLDAgKzEsODcgQEAKKyMhL2Jpbi9rc2gKKyMKKyMgZWxmZGVwZW5kLnNoCisjCisjIGdpdmVuIGEgcGF0aCwgdGhpcyBzY3JpcHRzIHNlYXJjaGVzIGZvciBFTEYgYmluYXJpZXMgYW5kIGxpYnJhcmllcworIyBhbmQgZ2VuZXJhdGVzIHBhY2thZ2UgZGVwZW5kZW5jeSBmaWxlIGVudHJpZXMgYWNjb3JkaW5nIHRvIHRoZXIgZGVwZW5kZW5jaWVzCisjCisjIFVzYWdlOiBlbGZkZXBlbmQgPEVMRi1iaW5hcnk+fDxkaXJlY3Rvcnk+CisjCisjIDIwMDIvMTEgU3RlZmFuLlJhZG1hbkBDVEJUTy5PUkcKKyMKKyMgL3Zhci9zYWRtL2luc3RhbGwvY29udGVudHMgZm9ybWF0OgorIworIyAvZGV2IGQgbm9uZSAwNzc1IHJvb3Qgc3lzIFNVTldjc3IgU1VOV2NzZAorIyBwYXRoIHR5cGUgY2xhc3MgbW9kZSBvd25lciBncm91cCBwYWNrYWdlcworIyAvZXRjLy5sb2dpbiBmIHJlbmFtZW5ldyAwNjQ0IHJvb3Qgc3lzIDUxNiAzNzk1NiA5MDQ2NDc2OTUgU1VOV2NzcgorIyAvZXRjL2FjY3QvaG9saWRheXMgZSBwcmVzZXJ2ZSAwNjY0IGJpbiBiaW4gMjg5IDIyMDkwIDkwNDY0NzYwMyBTVU5XYWNjcgorIyBwYXRoIHR5cGUgY2xhc3MgbW9kZSBvd25lciBncm91cCB4IHggeCBwYWNrYWdlcworIyAvYmluPS4vdXNyL2JpbiBzIG5vbmUgU1VOV2NzcgorIyBwYXRoPWxpbmsgdHlwZSBjbGFzcyBwYWNrYWdlcworIyAvZGV2aWNlcy9wc2V1ZG8vY2xvbmVAMDpobWUgYyBub25lIDExIDcgMDYwMCByb290IHN5cyBTVU5XY3NkCisjIHBhdGggdHlwZSBjbGFzcyB4IHggb3duZXIgbW9kZSBwYWNrYWdlcworIworIyB0eXBlcyBlIChzZWQpLCB2ICh2b2xhdGlsZSkgaGF2ZSBzYW1lIGZvcm1hdCBsaWtlIHR5cGUgZiAoZmlsZSkKKyMgdHlwZSBsIChoYXJkbGluaykgaGFzIHNhbWUgZm9ybWF0IGxpa2UgdHlwZSBzIChzeW1saW5rKQorIworcHJvZz1gYmFzZW5hbWUgJDBgCitMQVNUX0NIQU5DRT0vb3B0L09TUy9saWIKKworaWYgWyAtZCAiJDEiIF0gOyB0aGVuCisgIGZpbmQgJDEgLXR5cGUgZiAtZXhlYyBmaWxlIHt9IFw7CitlbGlmIFsgLXggIiQxIiBdIDsgdGhlbgorICBmaWxlICQxCitlbHNlCisgIGVjaG8gMT4mMiAidXNhZ2U6ICQwIDxkaXJlY3Rvcnk+fDxFTEYgZXhlY3V0YWJsZT4iCisgIGV4aXQgMQorZmkgfCBhd2sgJyQyID09ICJFTEYiIHsgcHJpbnQgfScgfCBjdXQgLWQ6IC1mMSB8XAord2hpbGUgcmVhZCBlbGYKK2RvCisgIGxkZCAiJGVsZiIgfCB3aGlsZSByZWFkIGxpYiB4IHBhdGgKKyAgZG8KKyAgICBbIC16ICIkcGF0aCIgXSAmJiBjb250aW51ZQorICAgIGlmIFsgIiRwYXRoIiA9ICcoZmlsZSBub3QgZm91bmQpJyBdCisgICAgdGhlbgorICAgICAgaWYgWyAteCAkTEFTVF9DSEFOQ0UvJGxpYiBdCisgICAgICB0aGVuCisgICAgICAgIHBhdGg9IiRMQVNUX0NIQU5DRS8kbGliIgorICAgICAgZWxzZQorICAgICAgICBlY2hvICIjICRwcm9nOiAkbGliICR4ICRwYXRoIgorICAgICAgICBjb250aW51ZSAjIG5vdCBmb3VuZAorICAgICAgZmkKKyAgICBmaQorICAgIGVjaG8gIiRwYXRoIgorICAgICMgbmVlZCBzeW1saW5rIGhhbmRsaW5nIGhlcmUgLSBzZWUgL3Vzci9wbGF0Zm9ybS9TVU5XLCovbGliLyoKKyAgZG9uZQorZG9uZSB8IHNvcnQgLXUgfCB3aGlsZSByZWFkIGxpYnBhdGggb3RoZXIKK2RvCisgIFsgIiRsaWJwYXRoIiA9ICIjIiBdICYmIGVjaG8gIiRsaWJwYXRoICRvdGhlciIgJiYgY29udGludWUgIyBlcnJvciBtZXNzYWdlCisgIHNldCAtLSBgZ3JlcCAiXiRsaWJwYXRoWyA9XSIgIC92YXIvc2FkbS9pbnN0YWxsL2NvbnRlbnRzIHwgaGVhZCAtMWAKKyAgcGF0aD0kMTsgdHlwZT0kMgorICBjYXNlICR0eXBlIGluCisgICAgZikgIyBmaWxlCisgICAgICBzaGlmdCA5ICMgZmlyc3QgcGFja2FnZQorICAgICAgOzsKKyAgICBzfGwpICMgbGluaworICAgICAgc2hpZnQgMyAjIGZpcnN0IHBhY2thZ2UKKyAgICAgIDs7CisgICAgJycpICMgbm90IGZvdW5kCisgICAgICBlY2hvICIjICRwcm9nOiAkbGlicGF0aCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSBwYWNrYWdlIgorICAgICAgY29udGludWUKKyAgICAgIDs7CisgICAgKikgIyBkdWJpb3VzIGZpbGUgdHlwZQorICAgICAgZWNobyAiIyAkcHJvZzogcGF0aCAkMSBoYXMgZHViaW91cyBmaWxlIHR5cGUgJDIiCisgICAgICBjb250aW51ZQorICAgICAgOzsKKyAgZXNhYworICBzZXQgLS0gYGVjaG8gJDEgfCB0ciA6ICcgJ2AKKyAgZWNobyAkMSAjIHN0cmlwIG9mZiBjbGFzc2VzCitkb25lIHwgc29ydCAtdSB8IHdoaWxlIHJlYWQgcGtnIG90aGVyCitkbworICBpZiBbICIkcGtnIiA9ICIjIiBdIDsgdGhlbiAjIGVycm9yIG1lc3NhZ2UKKyAgICBlY2hvIDE+JjIgIiRvdGhlciIgIyBnb2VzIHRvIHN0ZGVycgorICAgIGNvbnRpbnVlCisgIGZpCisgIGV2YWwgYHBrZ3BhcmFtIC12ICRwa2cgUEtHIE5BTUVgCisgIHByaW50ZiAiUCAgJS0xNXMlc1xuIiAiJFBLRyIgIiROQU1FIgorZG9uZQpkaWZmIC0tZ2l0IGEvZGlzdC9uZXQtc25tcC5zcGVjIGIvZGlzdC9uZXQtc25tcC5zcGVjCmluZGV4IDZhYzRhOWYuLmFjMWZlMjAgMTAwNjQ0Ci0tLSBhL2Rpc3QvbmV0LXNubXAuc3BlYworKysgYi9kaXN0L25ldC1zbm1wLnNwZWMKQEAgLTM3LDcgKzM3LDcgQEAKICVlbmRpZgogU3VtbWFyeTogVG9vbHMgYW5kIHNlcnZlcnMgZm9yIHRoZSBTTk1QIHByb3RvY29sCiBOYW1lOiBuZXQtc25tcAotVmVyc2lvbjogNS40LjQKK1ZlcnNpb246IDUuNS4yCiAjIHVwZGF0ZSByZWxlYXNlIGZvciB2ZW5kb3IgcmVsZWFzZS4gKGVnIDEuZmM2LCAxLnJoNzIsIDEueWRsMywgMS55ZGwyMykKIFJlbGVhc2U6IDEKIFVSTDogaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvCkBAIC0xMzMsNyArMTMzLDcgQEAKIAktLWVuYWJsZS1zaGFyZWQgXAogCSV7P25ldHNubXBfcGVybF9tb2R1bGVzOiAtLXdpdGgtcGVybC1tb2R1bGVzPSJJTlNUQUxMRElSUz12ZW5kb3IifSBcCiAJJXshP25ldHNubXBfcGVybF9tb2R1bGVzOiAtLXdpdGhvdXQtcGVybC1tb2R1bGVzfSBcCi0JJXs/bmV0c25tcF9lbWJlZGRlZF9wZXJsOiAtLWVuYWJsZS1hcy1uZWVkZWQgLS1lbmFibGUtZW1iZWRkZWQtcGVybH0gXAorCSV7P25ldHNubXBfZW1iZWRkZWRfcGVybDogLS1lbmFibGUtZW1iZWRkZWQtcGVybH0gXAogCSV7IT9uZXRzbm1wX2VtYmVkZGVkX3Blcmw6IC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsfSBcCiAJLS13aXRoLWNmbGFncz0iJFJQTV9PUFRfRkxBR1MgJXtuZXRzbm1wX2NmbGFnc30iCiAKQEAgLTI1MiwxMiArMjUyLDEyIEBACiAKICogVHVlIE1heSAgNiAyMDA4IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNmLm5ldD4KIC0gcmVtb3ZlICV7bGliY3VycmVudH0KLS0gZG9uJ3QgdXNlIFByb3ZpZGVzOiB1bmxlc3MgbmVjZXNzYXJ5LCBsZXQgcnBtYnVpbGQgY29tcHV0ZSB0aGUgcHJvdmlkZWQKKy0gYWRkIG9wZW5zc2wtZGV2ZWwgdG8gYnVpbGQgcmVxdWlyZW1lbnRzCistIGRvbid0IHVzZSBQcm92aWRlczogdW5sZXNzIG5lY2Vzc2FyeSwgbGV0IHJwbWJ1aWxkIGNvbXB1dGUgdGhlIHByb3ZpZGVkIAogICBsaWJyYXJpZXMKIAotKiBUdWUgSnVuIDMwIDIwMDcgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zZi5uZXQ+CisqIFR1ZSBKdW4gMTkgMjAwNyBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNmLm5ldD4KIC0gYWRkICJCdWlsZFJlcXVpcmVzOiBwZXJsLUV4dFV0aWxzLUVtYmVkIiwgZS5nLiBmb3IgRmVkb3JhIDcKLS0gYWRkIC0tZW5hYmxlLWFzLW5lZWRlZCBpZiBidWlsZGluZyB3aXRoIGVtYmVkZGVkIFBlcmwgc3VwcG9ydAogCiAqIFdlZCBOb3YgMjMgMjAwNiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNmLm5ldD4KIC0gZml4ZXMgZm9yIDUuNCBhbmQgNjQtYml0IHBsYXRmb3JtcwpkaWZmIC0tZ2l0IGEvZGlzdC9uc2ItY29uZmlnIGIvZGlzdC9uc2ItY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA5NDRmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L25zYi1jb25maWcKQEAgLTAsMCArMSw4MiBAQAorIyEvYmluL3NoCisjCisjICRJZCQKKyMgQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUBmcmVlc25tcC5jb20+CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCit1c2FnZSgpCit7CisgICBlY2hvICJVc2FnZTogJDAgIFstZHwteF0gWy1zIFNSQ0RdIgorICAgZWNobyAiIgorICAgZWNobyAiIC1zIFNSQ0RJUiAgOiBzb3VyZSBkaXJlY3RvcnkgWyRIT01FL3NyYy9uZXQtc25tcC1WRVJTSU9OXSIKKyAgIGVjaG8gIiIKKyAgIGVjaG8gIiAteCA6IGNvbmZpZ3VyZSBleHRyYSBmZWF0dXJlcyBmb3IgcHJlLXJlbGVhc2UgdGVzdGluZyIKKyAgIGVjaG8gIiAtZCA6IGNvbmZpZ3VyZSBmb3IgYmluYXJ5IGRpc3RyaWJ1dGlvbiIKKyAgIGV4aXQgMQorfQorCisjc2V0IC14CisKKworIworIyBmaW5kIG5zYi1wbGF0Zm9ybSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGlzIHNjcmlwdAorIworRVhFX1BBVEg9YGRpcm5hbWUgJDBgCitpZiBbIC1mICRFWEVfUEFUSC9uc2ItZnVuY3Rpb25zIF07dGhlbgorICAgLiAkRVhFX1BBVEgvbnNiLWZ1bmN0aW9ucworZWxpZiBbIC1mICRIT01FL2Jpbi9uc2ItZnVuY3Rpb25zIF07IHRoZW4KKyAgIC4gJEhPTUUvYmluL25zYi1mdW5jdGlvbnMKK2VsaWYgWyAtZiBuc2ItZnVuY3Rpb25zIF07dGhlbgorICAgLiBuc2ItZnVuY3Rpb25zCitlbHNlCisgICBlY2hvICJDYW5ub3QgZmluZCBuc2ItZnVuY3Rpb25zIGluICRFWEVfUEFUSCwgJEhPTUUvYmluIG9yICRQV0QiCisgICBleGl0IDEKK2ZpCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK05TQl9DT05GSUdfQUxMPTIKKworIyAgICAgIHgpICB4PSRPUFRBUkcgOzsKK3doaWxlIGdldG9wdHMgZHM6eCBvcHQKK2RvCisgICAgY2FzZSAiJG9wdCIgaW4KKyAgICAgIGQpICBOU0JfQ09ORklHX0FMTD0wOzsKKyAgICAgIHMpICBTUkNEPSRPUFRBUkcgOzsKKyAgICAgIHgpICBOU0JfQ09ORklHX0FMTD0xOzsKKyAgICAgIFw/KSMgdW5rbm93biBmbGFnCisgICAgICAgIHVzYWdlOzsKKyAgICBlc2FjCitkb25lCitzaGlmdCBgZXhwciAkT1BUSU5EIC0gMWAKKworaWYgWyAkTlNCX0NPTkZJR19BTEwgLWVxIDIgXTsgdGhlbgorICAgZWNobyAiWW91IG11c3Qgc3BlY2lmeSAtZCBvciAteCIKKyAgIHVzYWdlCitmaQorCitpZiBbICJ4JFNSQ0QiID0gIngiIF07IHRoZW4KKyAgIGZvciB4IGluIC4gJEhPTUUvc3JjL25ldC1zbm1wCisgICBkbworICAgICAgaWYgWyAtZiAkeC9jb25maWd1cmUgXTsgdGhlbgorICAgICAgICAgU1JDRD0keAorICAgICAgICAgYnJlYWsKKyAgICAgIGZpCisgICBkb25lCisgICBpZiBbICJ4JFNSQ0QiID0gIngiIF07IHRoZW4KKyAgICAgIGVjaG8gIkNvdWxkbid0IGZpbmQgYSBzb3VyY2UgZGlyZWN0b3J5LiBQbGVhc2Ugc3BlY2lmeSBvbmUgZm9yIG1lLiIKKyAgICAgIHVzYWdlCisgICBmaQorZmkKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaWYgWyAkTlNCX0NPTkZJR19BTEwgLWVxIDAgXTt0aGVuCisgICAgbnNiX2NvbmZpZ19kaXN0ICRTUkNECitlbHNlCisgICAgbnNiX2NvbmZpZ19hbGwgJFNSQ0QKK2ZpCmRpZmYgLS1naXQgYS9kaXN0L25zYi1mdW5jdGlvbnMgYi9kaXN0L25zYi1mdW5jdGlvbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg2NWNjMgotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvbnNiLWZ1bmN0aW9ucwpAQCAtMCwwICsxLDUwOCBAQAorIyEvYmluL3NoCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkSWQkCisjIEF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAZnJlZXNubXAuY29tPgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBzb3VyY2UgdXNlciBjb25maWcKK2lmIFsgLWYgJEhPTUUvLnNubXAvbnNiLXJjIF07IHRoZW4KKyAgIC4gJEhPTUUvLnNubXAvbnNiLXJjCitmaQorCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCituc2Jfc3lzbmFtZSgpCit7CisgICBlY2hvIGB1bmFtZSAtbXJzIHwgdHIgJyAvJyAnX18nYAorfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBVdGlsaXR5IHZhcnMKKyMKK05TQl9WRVJTSU9OPSR7TlNCX1ZFUlNJT046PSIifQorTlNCX0JVSUxEX0RJUj0ke05TQl9CVUlMRF9ESVI6PSIifQorTlNCX0JVSUxEX1NVRkZJWD0ke05TQl9CVUlMRF9TVUZGSVg6PSIifQorTlNCX1NSQ19ESVI9JHtOU0JfU1JDX0RJUjo9IiJ9CitOU0JfSU5TVEFMTF9ESVI9JHtOU0JfSU5TVEFMTF9ESVI6PSIifQorTlNCX0lOU1RBTExfRElSX0RFRkFVTFQ9JHtOU0JfSU5TVEFMTF9ESVJfREVGQVVMVDo9IiROU0JfQlVJTERfRElSL3VzciJ9CitOU0JfUExBVEZPUk09JHtOU0JfUExBVEZPUk06PWBuc2Jfc3lzbmFtZWB9CisjIHN1biBkb2Vzbid0IHN1cHBvcnQgaG9zdG5hbWUgLXMKK05TQl9IT1NUPSR7TlNCX0hPU1Q6PWBob3N0bmFtZSB8IGN1dCAtZjEgLWQuYH0KK05TQl9RVUlFVD0ke05TQl9RVUlFVDo9MH0KK05TQl9QUk9NUFQ9JHtOU0JfUFJPTVBUOj0wfQorTlNCX0NMRUFOPSR7TlNCX0NMRUFOOj0xfQorTlNCX0NPTkZJR19BTEw9JHtOU0JfQ09ORklHX0FMTDo9MH0KK05TQl9TS0lQX0NPTkZJRz0ke05TQl9TS0lQX0NPTkZJRzo9MH0KK05TQl9TS0lQX0JVSUxEPSR7TlNCX1NLSVBfQlVJTEQ6PTB9CitOU0JfU0tJUF9URVNUPSR7TlNCX1NLSVBfVEVTVDo9MH0KK05TQl9TS0lQX0lOU1RBTEw9JHtOU0JfU0tJUF9JTlNUQUxMOj0wfQorTlNCX0VSUl9DVFhfTElORVM9JHtOU0JfRVJSX0NUWF9MSU5FUzo9MjV9CitOU0JfRElTVF9UUkFOU1BPUlRTPSJVRFAgVENQIFVuaXggQ2FsbGJhY2siCitOU0JfRVhUUkFfVFJBTlNQT1JUUz0iIgorTlNCX0RJU1RfTU9EVUxFUz0ke05TQl9ESVNUX01PRFVMRVM6PSJob3N0IGRpc21hbi9ldmVudC1taWIgc211eCJ9CitOU0JfRVhUUkFfTU9EVUxFUz0ke05TQl9FWFRSQV9NT0RVTEVTOj0iZXhhbXBsZXMgZXhhbXBsZXMvZXhhbXBsZSBzbXV4IFJtb24ifQorI3Rlc3RoYW5kbGVyCitOU0JfRVhUUkFfQ09ORklHPSR7TlNCX0VYVFJBX0NPTkZJRzo9IiJ9CitOU0JfUFJFRklYPSR7TlNCX1BSRUZJWDo9Ii91c3IifQorTlNCX0VYVFJBX0lOU1RBTEw9JHtOU0JfRVhUUkFfSU5TVEFMTDo9IiJ9CitOU0JfU0hBUkVEPSR7TlNCX1NIQVJFRDo9Ii0tZW5hYmxlLXNoYXJlZCJ9CitOU0JfVklFVz1jYXQKK05TQl9GTE9XPQorTlNCX0RBVEU9JHtOU0JfREFURTo9YGRhdGUgKyV5JW0lZF8lSCVNYH0KKworIyMgZW1iZWRkZWQgcGVybAorTlNCX0RJUkxJTktfRElSUz0icGVybCBtaWJzIGluY2x1ZGUgcHl0aG9uIgorTlNCX1BFUkw9JHtOU0JfUEVSTDo9IiJ9CisjTlNCX1BFUkw9JHtOU0JfUEVSTDo9Ii0tZW5hYmxlLWVtYmVkZGVkLXBlcmwifQoraWYgWyAieCROU0JfUEVSTCIgIT0gIngiIF07IHRoZW4KKyAgTlNCX1NLSVBfRElSTElOSz0ke05TQl9TS0lQX0RJUkxJTks6PTB9CitlbHNlCisgIE5TQl9TS0lQX0RJUkxJTks9JHtOU0JfU0tJUF9ESVJMSU5LOj0xfQorZmkKKworIworIyBTeXN0ZW0gc3BlY2lmaWMgYWRkaXRpb25zCisjCitjYXNlIGB1bmFtZSAtc2AgaW4KKworICAgU3VuT1MpCisgICAgICBOU0JfVEFJTF9BUkdTPSItJE5TQl9FUlJfQ1RYX0xJTkVTIgorICAgICAgOzsKKworICAgKikKKyAgICAgIE5TQl9UQUlMX0FSR1M9Ii1uICROU0JfRVJSX0NUWF9MSU5FUyIKKyAgICAgIDs7Citlc2FjCisKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgVXRpbGl0eSBmdW5jdGlvbnMKKyMKKworbnNiX2Fib3J0KCkKK3sKKyAgIGVjaG8KKyAgIGVjaG8gIkFCT1JUSU5HOiAkQCIgPiYyCisgICBleGl0IDI1NQorfQorCituc2JfaW5mbygpCit7CisgICBpZiBbICROU0JfUVVJRVQgLW5lIDEgXTsgdGhlbgorICAgICAgZWNobyAkQAorICAgZmkKK30KKworbnNiX3Byb21wdCgpCit7CisgICBpZiBbICJ4JDEiID0gIngtZiIgXTsgdGhlbgorICAgICAgc2hpZnQgMQorICAgICAgdG1wX25zYl9wcm9tcHQ9MQorICAgZWxzZQorICAgICAgdG1wX25zYl9wcm9tcHQ9JE5TQl9QUk9NUFQKKyAgIGZpCisgICBpZiBbICR0bXBfbnNiX3Byb21wdCAtZXEgMSBdOyB0aGVuCisgICAgICBlY2hvICRACisgICAgICByZWFkIG5zYl9wcm9tcHRfZHVtbXkKKyAgIGVsc2UKKyAgICAgIGVjaG8gIiRAIChQUk9NUFQgU0tJUFBFRCkiCisgICBmaQorfQorCituc2JfZmxvdygpCit7CisgICAgTlNCX0ZMT1c9JE5TQl9GTE9XOiRACisgICAgZWNobyAiUnVubmluZyAkQCIgPiYyCit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCituc2JfY29uZmlnX2Rpc3QoKQoreworICAgbnNiX2Zsb3cgY29uZmlnX2Rpc3QKKyAgIGlmIFsgJCMgLWx0IDEgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICJ1c2FnZTogbnNiX2NvbmZpZ19kaXN0IHNyY19kaXIiCisgICBmaQorICAgbmdjX3NyYz0kMQorICAgaWYgWyAhIC1kICRuZ2Nfc3JjIF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAiJG5nY19zcmMgZG9lcyBub3QgZXhpc3QhIgorICAgZmkKKyAgIGlmIFsgISAtZCAkbmdjX3NyYy9hZ2VudC9taWJncm91cCBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgImFnZW50L21pYmdyb3VwIGRpcmVjdG9yeSBpbiAkbmdjX3NyYyBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorICAgbmdjX2Rlc3Q9JDIKKyAgIGlmIFsgIlgkbmdjX2Rlc3QiICE9ICJYIiAtYSAhIC1kICRuZ2NfZGVzdCBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgIiRuZ2NfZGVzdCBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorCisgICAjCisgICAjIHNvbWUgbW9kdWxlcyBtaWdodCBiZSByZWxlYXNlIHNwZWNpZmljLCBzbyBtYWtlIHN1cmUgdGhleQorICAgIyBleGlzdCBiZWZvcmUgd2Ugc2VuZCB0aGVtIG9mZiB0byBjb25maWd1cmUKKyAgICMKKyAgIE5TQl9GSU5BTF9NT0RVTEVTPQorICAgZm9yIG5jZF94IGluICROU0JfRElTVF9NT0RVTEVTCisgICBkbworCWlmIFsgLXIgJG5nY19zcmMvYWdlbnQvbWliZ3JvdXAvJG5jZF94LmggXTsgdGhlbgorCQlOU0JfRklOQUxfTU9EVUxFUz0iJE5TQl9GSU5BTF9NT0RVTEVTICRuY2RfeCIKKwlmaQorICAgZG9uZQorCisgICAjCisgICAjIE5PVEU6IGZvciBzb21lIHJlYXNvbiwgYmFzaCBkb2VzIG5vdCBleHBhbmQgdmFyaWFibGVzCisgICAjIGluc2lkZSBvZiBzaW5nbGUgcXVvdGVzLCBzbyB1c2UgZG91YmxlIHF1b3RlcworICAgIworICAgZWNobyAkbmdjX3NyYy9jb25maWd1cmUgLS13aXRoLXN5cy1sb2NhdGlvbj1Vbmtub3duIFwKKyAgICAgIC0tcHJlZml4PSIkTlNCX1BSRUZJWCIgXAorICAgICAgLS1kaXNhYmxlLWRldmVsb3BlciAkTlNCX0VYVFJBX0NPTkZJRyBcCisgICAgICAtLXdpdGgtc3lzLWNvbnRhY3Q9J1N5c3RlbSBBZG1pbmlzdHJhdG9yJyBcCisgICAgICAtLXdpdGgtZGVmYXVsdHMgLS13aXRoLW1pYi1tb2R1bGVzPSIkTlNCX0ZJTkFMX01PRFVMRVMiCisgICAkbmdjX3NyYy9jb25maWd1cmUgLS13aXRoLXN5cy1sb2NhdGlvbj1Vbmtub3duIFwKKyAgICAgIC0tcHJlZml4PSIkTlNCX1BSRUZJWCIgXAorICAgICAgLS1kaXNhYmxlLWRldmVsb3BlciAkTlNCX0VYVFJBX0NPTkZJRyBcCisgICAgICAtLXdpdGgtc3lzLWNvbnRhY3Q9J1N5c3RlbSBBZG1pbmlzdHJhdG9yJyBcCisgICAgICAtLXdpdGgtZGVmYXVsdHMgLS13aXRoLW1pYi1tb2R1bGVzPSIkTlNCX0ZJTkFMX01PRFVMRVMiCisgICAjIEknZCBsaWtlIHRvIGFkZCAnIHwgdGVlIG5zYl9jb25maWcuJE5TQl9EQVRFJyB0byBzYXZlIG91dHB1dCwgYnV0IHRoZW4KKyAgICMgSSdkIGxvc2UgdGhlIHJjIGZyb20gY29uZmlndXJlLCB3aGljaCBJIG5lZWQuLi4gc2lnaAorICAgbmdjX3JjPSQ/CisgICBpZiBbICRuZ2NfcmMgLW5lIDAgXTt0aGVuCisgICAgICBuc2JfYWJvcnQgIkVycm9yIGR1cmluZyBjb25maWd1cmUgZGlzdCAocmM9JG5nY19yYykiCisgICBmaQorfQorCituc2JfY29uZmlnX2FsbCgpCit7CisgICBuc2JfZmxvdyBjb25maWdfYWxsCisgICBpZiBbICQjIC1sdCAxIF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAidXNhZ2U6IG5zYl9jb25maWdfYWxsIHNyY19kaXIiCisgICBmaQorICAgbmdjX3NyYz0kMQorICAgaWYgWyAhIC1kICRuZ2Nfc3JjIF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAiJG5nY19zcmMgZG9lcyBub3QgZXhpc3QhIgorICAgZmkKKyAgIGlmIFsgISAtZCAkbmdjX3NyYy9hZ2VudC9taWJncm91cCBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgImFnZW50L21pYmdyb3VwIGRpcmVjdG9yeSBpbiAkbmdjX3NyYyBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorICAgbmdjX2Rlc3Q9JDIKKyAgIGlmIFsgIlgkbmdjX2Rlc3QiICE9ICJYIiAtYSAhIC1kICRuZ2NfZGVzdCBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgIiRuZ2NfZGVzdCBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorCisgICAjCisgICAjIFN5c3RlbSBzcGVjaWZpYyBhZGRpdGlvbnMKKyAgICMKKyAgIGNhc2UgYHVuYW1lIC1zYCBpbgorCisgICBMaW51eCkKKyAgICAgIE5TQl9JUFY2PSR7TlNCX0lQVjY6PSItLWVuYWJsZS1pcHY2In0KKyAgICAgIE5TQl9FWFRSQV9UUkFOU1BPUlRTPSJJUFgiCisgICAgICA7OworCisgICAjRGFyd2luKQorICAgIyAgIDs7CisKKyAgICopCisgICAgICBOU0JfSVBWNj0ke05TQl9JUFY2Oj0iLS1lbmFibGUtaXB2NiJ9CisgICAgICA7OworICAgZXNhYworCisgICAjCisgICAjIHVzZSBsaWJ3cmFwIGlmIHdlIGNhbiBmaW5kIHRoZSBoZWFkZXIKKyAgICMKKyAgIGlmIFsgLWYgL3Vzci9pbmNsdWRlL3RjcGQuaCBdOyB0aGVuCisgICAgICBOU0JfTElCV1JBUD0ke05TQl9MSUJXUkFQOj0iLS13aXRoLWxpYndyYXAifQorICAgICAgTlNCX0VYVFJBX0NPTkZJRz0iJE5TQl9FWFRSQV9DT05GSUcgJE5TQl9MSUJXUkFQIgorICAgZmkKKworICAgIworICAgIyBzb21lIG1vZHVsZXMgbWlnaHQgYmUgcmVsZWFzZSBzcGVjaWZpYywgc28gbWFrZSBzdXJlIHRoZXkKKyAgICMgZXhpc3QgYmVmb3JlIHdlIHNlbmQgdGhlbSBvZmYgdG8gY29uZmlndXJlCisgICAjCisgICBOU0JfRklOQUxfTU9EVUxFUz0KKyAgIGZvciBuY2RfeCBpbiAkTlNCX0RJU1RfTU9EVUxFUyAkTlNCX0VYVFJBX01PRFVMRVMKKyAgIGRvCisJaWYgWyAtciAkbmdjX3NyYy9hZ2VudC9taWJncm91cC8kbmNkX3guaCBdOyB0aGVuCisJCU5TQl9GSU5BTF9NT0RVTEVTPSIkTlNCX0ZJTkFMX01PRFVMRVMgJG5jZF94IgorCWZpCisgICBkb25lCisKKyAgICMKKyAgICMgY29uZmlndXJlCisgICAjCisgICAjIE5PVEU6IGZvciBzb21lIHJlYXNvbiwgYmFzaCBkb2VzIG5vdCBleHBhbmQgdmFyaWFibGVzCisgICAjIGluc2lkZSBvZiBzaW5nbGUgcXVvdGVzLCBzbyB1c2UgZG91YmxlIHF1b3RlcworICAgIworICAgZWNobyAkbmdjX3NyYy9jb25maWd1cmUgIC0td2l0aC1kZWZhdWx0cyBcCisgICAgICAtLXByZWZpeD0iJE5TQl9QUkVGSVgiIFwKKyAgICAgIC0tZGlzYWJsZS1kZXZlbG9wZXIgJE5TQl9FWFRSQV9DT05GSUcgXAorICAgICAgIi0td2l0aC1taWItbW9kdWxlcz0kTlNCX0ZJTkFMX01PRFVMRVMiIFwKKyAgICAgICItLXdpdGgtdHJhbnNwb3J0cz0kTlNCX0RJU1RfVFJBTlNQT1JUUyAkTlNCX0VYVFJBX1RSQU5TUE9SVFMiIFwKKyAgICAgICROU0JfU0hBUkVEICROU0JfSVBWNiAkTlNCX1BFUkwKKyAgICRuZ2Nfc3JjL2NvbmZpZ3VyZSAgLS13aXRoLWRlZmF1bHRzIFwKKyAgICAgIC0tcHJlZml4PSIkTlNCX1BSRUZJWCIgXAorICAgICAgLS1kaXNhYmxlLWRldmVsb3BlciAkTlNCX0VYVFJBX0NPTkZJRyBcCisgICAgICAiLS13aXRoLW1pYi1tb2R1bGVzPSROU0JfRklOQUxfTU9EVUxFUyIgXAorICAgICAgIi0td2l0aC10cmFuc3BvcnRzPSROU0JfRElTVF9UUkFOU1BPUlRTICROU0JfRVhUUkFfVFJBTlNQT1JUUyIgXAorICAgICAgJE5TQl9TSEFSRUQgJE5TQl9JUFY2ICROU0JfUEVSTAorICAgIyBJJ2QgbGlrZSB0byBhZGQgJyB8IHRlZSBuc2JfY29uZmlnLiROU0JfREFURScgdG8gc2F2ZSBvdXRwdXQsIGJ1dCB0aGVuCisgICAjIEknZCBsb3NlIHRoZSByYyBmcm9tIGNvbmZpZ3VyZSwgd2hpY2ggSSBuZWVkLi4uIHNpZ2gKKyAgIG5nY19yYz0kPworICAgaWYgWyAkbmdjX3JjIC1uZSAwIF07dGhlbgorICAgICAgbnNiX2Fib3J0ICJFcnJvciBkdXJpbmcgY29uZmlndXJlIGFsbCAocmM9JG5nY19yYykiCisgICBmaQorfQorCituc2JfemlwKCkKK3sKKyAgIGlmIFsgJCMgLW5lIDMgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICJ1c2FnZTogJDAgcmVsZWFzZSBidWlsZF9kaXJlY3RvcnkgZGVzdF9kaXIiCisgICBmaQorCisgICByZWxlYXNlPSQxCisgICBidWlsZF9kaXI9JDIKKyAgIGRlc3RfZGlyPSQzCisKKyAgIGJ1aWxkPSRidWlsZF9kaXIvJE5TQl9QTEFURk9STQorCisgICBpZiBbICEgLWQgJGJ1aWxkIF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAiJGJ1aWxkIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorCisgICBpZiBbICEgLWQgJGJ1aWxkL3VzciBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgImluc3RhbGwgZGlyZWN0b3J5ICRidWlsZC91c3IgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0ISIKKyAgIGZpCisKKyAgIGNkICRidWlsZAorCisgICBybSAtZiAkZGVzdF9kaXIvJHJlbGVhc2UtJE5TQl9QTEFURk9STS50YXIKKyAgIG5zYl9pbmZvICJ0YXIgY2YgJGRlc3RfZGlyLyRyZWxlYXNlLSROU0JfUExBVEZPUk0udGFyIHVzciIKKyAgIHRhciBjZiAkZGVzdF9kaXIvJHJlbGVhc2UtJE5TQl9QTEFURk9STS50YXIgdXNyCisKKyAgIG5zYl9pbmZvICJnemlwIC0tYmVzdCAkZGVzdF9kaXIvJHJlbGVhc2UtJE5TQl9QTEFURk9STS50YXIiCisgICBnemlwIC0tYmVzdCAkZGVzdF9kaXIvJHJlbGVhc2UtJE5TQl9QTEFURk9STS50YXIKKworICAgaWYgWyAkTlNCX1FVSUVUIC1uZSAxIF07IHRoZW4KKyAgICAgIGxzIC1sdCAkZGVzdF9kaXIKKyAgIGZpCit9CisKK25zYl91cGxvYWQoKQoreworICAgYnVpbGRfZGlyPSQxCisgICB0YXJnZXQ9JDIKKyAgIG5zYl9mbG93IHVwbG9hZCB0byAkdGFyZ2V0OiBjb25maWcubG9nIGNvbmZpZ3VyZS1zdW1tYXJ5IG5zYl9tYWtlLWFsbC4kTlNCX0RBVEUgbnNiX21ha2UtdGVzdC4kTlNCX0RBVEUKKyAgIGRpcj0kUFdECisgICBjZCAkYnVpbGRfZGlyCisgICAvdXNyL2Jpbi9zY3AgY29uZmlnLmxvZyBjb25maWd1cmUtc3VtbWFyeSBuc2JfbWFrZS1hbGwuJE5TQl9EQVRFIG5zYl9tYWtlLXRlc3QuJE5TQl9EQVRFXAorICAgICAgICAgICAgICAgICAkdGFyZ2V0CisgICBjZCAkZGlyCit9CisKK25zYl9kaXJfbGluaygpCit7CisgIGlmIFsgJCMgLWx0IDIgXTsgdGhlbgorICAgIG5zYl9hYm9ydCAidXNhZ2U6IG5zYl9kaXJfbGluayBzcmNfZGlyIGRzdF9kaXIiCisgIGZpCisgIGxpbmtfc3JjX2Rpcj0kMQorICBsaW5rX2RzdF9kaXI9JDIKKyAgaWYgWyAtZCAkbGlua19zcmNfZGlyIF07IHRoZW4KKyAgICBuc2JfZmxvdyBzZXQgdXAgc2hhZG93IGRpcmVjdG9yeSAkbGlua19kc3RfZGlyCisgICAgJE5TQl9ESVJMSU5LICRsaW5rX3NyY19kaXIgJGxpbmtfZHN0X2RpcgorICAgIHJjPSQ/CisgICAgaWYgWyAkcmMgLW5lIDAgXTt0aGVuCisgICAgICBuc2JfYWJvcnQgIkVycm9yIGR1cmluZyBuc2JfZGlyX2xpbmsgKHJjPSRyYykiCisgICAgZmkKKyAgZWxzZQorICAgIG5zYl9pbmZvICJTa2lwcGluZyAkbGlua19zcmNfZGlyIgorICBmaQorICB9CisKK25zYl9tYWtlKCkKK3sKKyAgIG5zYl9mbG93IG1ha2UgJDEKKyAgIHRhcmdldD0kMQorICAgc2hpZnQgMQorICAgcGFybXM9JEAKKworICAgaWYgWyAieCROU0JfTUFLRSIgPSAieCIgXTt0aGVuCisgICAgICAjbnNiX2luZm8gIlNlYXJjaGluZyBmb3IgR05VIG1ha2UgKHNldCBOU0JfTUFLRSB0byBza2lwIHRoaXMgc3RlcCkiCisgICAgICBmb3IgcCBpbiBgZWNobyAkUEFUSCB8IHRyICc6JyAnICdgCisgICAgICBkbworICAgICAgICAgI2VjaG8gJHAKKyAgICAgICAgIGlmIFsgLXggJHAvbWFrZSBdO3RoZW4KKyAgICAgICAgICAgIGR1bW15PWAkcC9tYWtlIC0tdmVyc2lvbiAyPiYxIHwgZ3JlcCBHTlVgCisgICAgICAgICAgICBpZiBbICQ/IC1lcSAwIF07dGhlbgorCSAgICAgICAjbnNiX2luZm8gInVzaW5nICRwL21ha2UgKCRkdW1teSkiCisgICAgICAgICAgICAgICBOU0JfTUFLRT0kcC9tYWtlCisgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZmkKKyAgICAgICAgIGZpCisgICAgICAgICBpZiBbIC14ICRwL2dtYWtlIF07dGhlbgorICAgICAgICAgICAgZHVtbXk9YCRwL2dtYWtlIC0tdmVyc2lvbiAyPiYxIHwgZ3JlcCBHTlVgCisgICAgICAgICAgICBpZiBbICQ/IC1lcSAwIF07dGhlbgorCSAgICAgICAjbnNiX2luZm8gInVzaW5nICRwL2dtYWtlICgkZHVtbXkpIgorICAgICAgICAgICAgICAgTlNCX01BS0U9JHAvZ21ha2UKKyAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBmaQorICAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICAgIGlmIFsgIngkTlNCX01BS0UiID0gIngiIF07dGhlbgorICAgICAgICAgbnNiX2Fib3J0ICJHTlUgbWFrZSBub3QgZm91bmQuIFNldCBOU0JfTUFLRSB0byB5b3VyIG1ha2UgZXhlY3V0YWJsZS4iCisgICAgICBmaQorICAgZmkKKworICAgbnNiX21ha2VfT1VUUFVUPW5zYl9tYWtlLSR0YXJnZXQuJE5TQl9EQVRFCisgICBuc2JfaW5mbyAiTWFraW5nICR0YXJnZXQuLi4gKGxvZyBpcyAkbnNiX21ha2VfT1VUUFVUKSIKKyAgICMKKyAgIGlmIFsgIngkdGFyZ2V0IiA9ICJ4YWxsIiBdOyB0aGVuCisgICAgICAkTlNCX01BS0UgTk9BVVRPREVQUz15IHRvdWNoaXQgMj4mMSB8IHRlZSAkbnNiX21ha2VfT1VUUFVUCisgICBmaQorICAgJE5TQl9NQUtFICROU0JfTUFLRV9FWFRSQSBOT0FVVE9ERVBTPXkgc3RhcnQtZmxhZyAkdGFyZ2V0ICRwYXJtcyBlbmQtZmxhZyAyPiYxIHwgdGVlIC1hICRuc2JfbWFrZV9PVVRQVVQKKyAgICMgY2hlY2tpbmcgJD8gd291bGQgb25seSBnZXQgdXMgdGhlIHJjIGZyb20gdGVlLCB3aGljaCBpcyB1c2VsZXNzCisKKyAgIG5zYl9pbmZvICJDaGVja2luZyBmb3IgZXJyb3JzLi4uIgorICAgZWdyZXAgLWkgImVycm9yfGZhaWx8d2FybnxubyBzdWNofGV4aXN0c3x0IGZpbmQgfGVybWlzc2lvbiBkZW5pZWQiICRuc2JfbWFrZV9PVVRQVVQgXAorICAgICAgICAgPiBuc2JfbWFrZS0kdGFyZ2V0LWFsbGVycnMuJE5TQl9EQVRFCisgICAjIGFsbG93IGZvciBhIGZldyBleGNlcHRpb25zCisgICBlZ3JlcCAtdiAtaSAiXm9rfHRlc3RpbmcgLipmYWlsdXJlfFthLXomX10oZmFpbHxlcnJvcil8d2FybnxlcnJvcihtaWJ8XC4zKXwoTE9HfFNOTVApX0VSUnxJbiBmdW5jdGlvbnw9IEZBSUxVUkV8REVCVUdNU0d8L1wqfHN0YXRpYyBsaWJyYXJ5IC4qIGlzIG5vdCBwb3J0YWJsZSIgbnNiX21ha2UtJHRhcmdldC1hbGxlcnJzLiROU0JfREFURSBcCisgICAgICAgICA+IG5zYl9tYWtlLSR0YXJnZXQtZXJycy4kTlNCX0RBVEUKKyAgIGlmIFsgLXMgbnNiX21ha2UtJHRhcmdldC1lcnJzLiROU0JfREFURSBdOyB0aGVuCisgICAgICBuc2JfcHJvbXB0ICJwcmVzcyBlbnRlciB0byB2aWV3IGVycm9ycyIKKyMgICAgICBncmVwICc6JyAkbnNiX21ha2VfT1VUUFVUID4gbnNiX21ha2UtJHRhcmdldC1lcnJzMi4kTlNCX0RBVEUKKyMgICAgICB0YWlsIC1uICROU0JfRVJSX0NUWF9MSU5FUyBuc2JfbWFrZS0kdGFyZ2V0LWVycnMyLiROU0JfREFURSA+JjIKKyAgICAgIHRhaWwgJE5TQl9UQUlMX0FSR1MgbnNiX21ha2UtJHRhcmdldC1lcnJzLiROU0JfREFURSA+JjIKKyAgICAgIG5zYl9hYm9ydCAiRXJyb3IocykgZHVyaW5nIG1ha2UgJHRhcmdldCIKKyAgIGZpCisKKyAgIGlmIFsgLWYgYnVpbGQtaW4tcHJvZ3Jlc3MtZmxhZyBdO3RoZW4KKyAgICAgbnNiX2Fib3J0ICJtYWtlICR0YXJnZXQgaW5jb21wbGV0ZSIKKyAgIGZpCit9CisKK25zYl9kZWZhdWx0X3BhdGhzKCkKK3sKKyAgIGlmIFsgIngkTlNCX1ZFUlNJT04iID0gIngiIF07IHRoZW4KKyAgICAgIE5TQl9WRVJTSU9OPSJ1bmtub3duLXZlcnNpb24iCisgICBmaQorICAgaWYgWyAieCROU0JfU1JDX0RJUiIgPSAieCIgXTsgdGhlbgorICAgICAgTlNCX1NSQ19ESVI9JEhPTUUvc3JjL25ldC1zbm1wLSROU0JfVkVSU0lPTgorICAgZmkKKyAgIGlmIFsgIngkTlNCX0JVSUxEX0RJUiIgPSAieCIgXTsgdGhlbgorICAgICAgTlNCX0JVSUxEX0RJUj0kSE9NRS9idWlsZC8kTlNCX1ZFUlNJT04KKyAgICAgIGlmIFsgIngkTlNCX1NVRkZJWCIgIT0gIngiIF07IHRoZW4KKyAgICAgICAgIE5TQl9CVUlMRF9ESVI9JE5TQl9CVUlMRF9ESVIvJE5TQl9TVUZGSVgKKyAgICAgIGZpCisgICBmaQorICAgaWYgWyAieCROU0JfSU5TVEFMTF9ESVIiID0gIngiIF07IHRoZW4KKyAgICAgIE5TQl9JTlNUQUxMX0RJUj0iJE5TQl9JTlNUQUxMX0RJUl9ERUZBVUxUIgorICAgZmkKK30KKworbnNiX2J1aWxkKCkKK3sKKyAgIGlmIFsgJCMgLWx0IDUgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICJ1c2FnZTogJDAgcmVsZWFzZSBzcmNfZGlyIGJ1aWxkX2RpcmVjdG9yeSBkZXN0X2RpciBjb25maWdfYWxsX2ZsYWcgKCRAKSIKKyAgIGZpCisKKyAgIG5zYl9jb25maWdfYWxsX2ZsYWc9MAorICAgcmVsZWFzZT0kMQorICAgc3JjX2Rpcj0kMgorICAgYnVpbGRfZGlyPSQzCisgICBkZXN0X2Rpcj0kNAorICAgbnNiX2NvbmZpZ19hbGxfZmxhZz0kNQorICAgc2hpZnQgNQorCisgICBuc2JfZmxvdyBidWlsZCBpbiAkYnVpbGRfZGlyCisgICBuc2JfZmxvdyBob3N0ICROU0JfSE9TVAorICAgbnNiX2Zsb3cgcGxhdGZvcm0gJE5TQl9QTEFURk9STQorCisgICBpZiBbICEgLWQgJHNyY19kaXIgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICIkc3JjX2RpciBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorCisgICBpZiBbICEgLWQgJGJ1aWxkX2RpciBdOyB0aGVuCisgICAgICBta2RpciAkYnVpbGRfZGlyCisgICAgICBpZiBbICEgLWQgJGJ1aWxkX2RpciBdOyB0aGVuCisgICAgICAgICBuc2JfYWJvcnQgIiRidWlsZF9kaXIgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0ISIKKyAgICAgIGZpCisgICBmaQorCisgICBuc2JfaW5mbyAiQ2hhbmdpbmcgZGlyZWN0b3JpZXMgdG8gJGJ1aWxkX2RpciIKKyAgIGNkICRidWlsZF9kaXIKKworICAgaWYgWyAkTlNCX0NMRUFOIC1ndCAwIF07IHRoZW4KKyAgICAgIG5zYl9pbmZvICJDbGVhbmluZyB1cC4uLiIKKyAgICAgIGlmIFsgJE5TQl9DTEVBTiAtZXEgMiBdO3RoZW4KKyAgICAgICAgaWYgWyAieCRQV0QiID0gIngvIiBdOyB0aGVuCisgICAgICAgICAgIG5zYl9hYm9ydCAiTm90IHJ1bm5pbmcgcm0gLWZSIGZyb20gLyIKKyAgICAgICAgZmkKKyAgICAgICAgbnNiX2luZm8gInJtIC1mUiAqIC5bYS16QS1aXSogPiAvZGV2L251bGwgMj4mMSIKKyAgICAgICAgcm0gLWZSICogLlthLXpBLVpdKiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICBlbHNlCisgICAgICAgIGlmIFsgIngkZGVzdF9kaXIiICE9ICJ4IiAtYSAieCRkZXN0X2RpciIgIT0gIngvIiBdOyB0aGVuCisgICAgICAgICAgbnNiX2luZm8gInJtIC1mUiBuc2JfKiAkZGVzdF9kaXIgPiAvZGV2L251bGwgMj4mMSIKKyAgICAgICAgICAjcm0gLWZSIG5zYl8qICRkZXN0X2RpciA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIGZpCisgICAgICAgIGlmIFsgLWYgTWFrZWZpbGUgXTsgdGhlbgorICAgICAgICAgICAgbnNiX21ha2UgTk9BVVRPREVQUz15IGRpc3RjbGVhbgorICAgICAgICAgICAgbnNiX2J1aWxkX3JjPSQ/CisgICAgICAgICAgICBpZiBbICRuc2JfYnVpbGRfcmMgLW5lIDAgXTsgdGhlbgorICAgICAgICAgICAgICAgIG5zYl9hYm9ydCAiRXJyb3IgZHVyaW5nIG1ha2UgZGlzdGNsZWFuIChyYz0kbnNiX2J1aWxkX3JjKSIKKyAgICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorICAgZmkKKworICAgaWYgWyAiWCRkZXN0X2RpciIgIT0gIlgiIC1hICEgLWQgJGRlc3RfZGlyIF07IHRoZW4KKyAgICAgIG1rZGlyIC1wICRkZXN0X2RpcgorICAgICAgaWYgWyAhIC1kICRkZXN0X2RpciBdOyB0aGVuCisgICAgICAgICBuc2JfYWJvcnQgIiRkZXN0X2RpciBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QhIgorICAgICAgZmkKKyAgIGZpCisKKyAgIGlmIFsgJE5TQl9TS0lQX0RJUkxJTksgLWVxIDEgXTsgdGhlbgorICAgICAgbnNiX2luZm8gIlNraXBwaW5nIG5zYl9kaXJfbGluayIKKyAgIGVsc2UKKyAgICAgIGZvciBkIGluICROU0JfRElSTElOS19ESVJTOyBkbworICAgICAgICBuc2JfZGlyX2xpbmsgJHNyY19kaXIvJGQgJGJ1aWxkX2Rpci8kZAorICAgICAgZG9uZQorICAgZmkKKworICAgaWYgWyAkTlNCX1NLSVBfQ09ORklHIC1uZSAxIF07IHRoZW4KKyAgICAgIG5zYl9pbmZvICJDb25maWd1cmluZy4uLiAobG9nIGlzIG5zYl9jb25maWcuJE5TQl9EQVRFKSIKKyAgICAgIGlmIFsgIngkbnNiX2NvbmZpZ19hbGxfZmxhZyIgPSAieDAiIF07IHRoZW4KKyAgICAgICAgICBuc2JfY29uZmlnX2Rpc3QgJHNyY19kaXIgIiRkZXN0X2RpciIKKyAgICAgIGVsc2UKKyAgICAgICAgICBuc2JfY29uZmlnX2FsbCAkc3JjX2RpciAiJGRlc3RfZGlyIgorICAgICAgZmkKKyAgICAgIG5zYl9wcm9tcHQgInByZXNzIGVudGVyIHRvIGNvbnRpbnVlIgorICAgZmkKKworICAgaWYgWyAkTlNCX1NLSVBfQlVJTEQgLWVxIDEgXTsgdGhlbgorICAgICAgbnNiX2luZm8gIlNraXBwaW5nICdtYWtlIGFsbCciCisgICBlbHNlCisgICAgICBuc2JfbWFrZSBhbGwKKyAgIGZpCisKKyAgIGlmIFsgJE5TQl9TS0lQX1RFU1QgLWVxIDEgXTsgdGhlbgorICAgICAgbnNiX2luZm8gIlNraXBwaW5nICdtYWtlIHRlc3QnIgorICAgZWxzZQorICAgICAgbnNiX3Byb21wdCAiTm8gZXJyb3JzIGZvdW5kLCBwcmVzcyBlbnRlciB0byBydW4gdGVzdHMiCisgICAgICBTTk1QX1RNUERJUl9CQVNFPSRidWlsZF9kaXIvdGVzdHMKKyAgICAgIGV4cG9ydCBTTk1QX1RNUERJUl9CQVNFCisgICAgICBuc2JfbWFrZSB0ZXN0CisgICBmaQorCisgICBpZiBbICROU0JfU0tJUF9JTlNUQUxMIC1lcSAxIF07IHRoZW4KKyAgICAgIG5zYl9pbmZvICJTa2lwcGluZyAnbWFrZSBpbnN0YWxsJyIKKyAgIGVsc2UKKyAgICAgIG5zYl9wcm9tcHQgIk5vIGVycm9ycyBmb3VuZCwgcHJlc3MgZW50ZXIgdG8gaW5zdGFsbCIKKyAgICAgICMgREVTVERJUiBtYWtlcyBzdXJlIHRoZSBwZXJsIHN0dWZmIGdvZXMgaW50byAkZGVzdF9kaXIsIHRvbworICAgICAgbnNiX21ha2UgaW5zdGFsbCBERVNURElSPSIkZGVzdF9kaXIiICROU0JfRVhUUkFfSU5TVEFMTAorICAgZmkKKworICAgcmV0dXJuIDAKK30KZGlmZiAtLWdpdCBhL2Rpc3QvbnNiLW5pZ2h0bHkgYi9kaXN0L25zYi1uaWdodGx5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjMyOThhMjYKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L25zYi1uaWdodGx5CkBAIC0wLDAgKzEsMTg4IEBACisjIS9iaW4vc2gKKyMKKyMgJElkJAorIyBBdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QGZyZWVzbm1wLmNvbT4KKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK3VzYWdlKCkKK3sKKyAgIGVjaG8gIlVzYWdlOiAkMCAgW29wdGlvbmFsIHBhcmFtc10gVkVSU0lPTiIKKyAgIGVjaG8gIiIKKyAgIGVjaG8gIiBvcHRpb25hbCBwYXJhbXM6IFsteF0gWy1zIFNSQ0RdIFstYiBCVUlMRERdIFstaSBJTlNUQUxMRF0iCisgICBlY2hvICIgICAgICAgICAgICAgICAgICBbLWggaG9zdF0gWy1wIHBhdGhdIgorICAgZWNobyAiIFZFUlNJT04gICAgOiByZWxlYXNlIG51bWJlciAoZWcgNS4yLjIpIgorICAgZWNobyAiIC1zIFNSQ0RJUiAgOiBzb3VyZSBkaXJlY3RvcnkgWyRIT01FL3NyYy9uZXQtc25tcC1WRVJTSU9OXSIKKyAgIGVjaG8gIiAtYiBCVUlMREQgIDogYnVpbGQgZGlyZWN0b3J5IFskSE9NRS9idWlsZC9dIgorICAgZWNobyAiICAgICAgICAgICAgICBOT1RFLXBsYXRmb3JtIHdpbGwgYmUgYXBwZW5kZWQgdG8gYnVpbGQgZGlyZWN0b3J5IgorICAgZWNobyAiIC1pIElOU1RBTExEOiBpbnN0YWxsIGRpcmVjdG9yeSBbJEhPTUUvYnVpbGQvXCRQTEFURk9STS91c3JdIgorICAgZWNobyAiIgorICAgZWNobyAiIC14IDogY29uZmlndXJlIGV4dHJhIGZlYXR1cmVzIGZvciBwcmUtcmVsZWFzZSB0ZXN0aW5nIgorICAgZWNobyAiIC1DIDogZG9uJ3Qgc291cmNlICRIT01FLy5zbm1wL25zYi1uaWdodGx5IgorICAgZWNobyAiIgorICAgZWNobyAiIC1mIDogZnJvbSBhZGRyZXNzIGZvciBlbWFpbCByZXN1bHRzIgorICAgZWNobyAiIC1lIDogYWRkcmVzcyB0byBlbWFpbCBlcnJvciByZXN1bHRzIHRvIgorICAgZWNobyAiIC1vIDogYWRkcmVzcyB0byBlbWFpbCBzdWNjZXNzIHJlc3VsdHMgdG8iCisgICBlY2hvICIgLWggOiBob3N0IHRvIHVwbG9hZCByZXN1bHRzIHRvIgorICAgZWNobyAiIC1wIDogcGF0aCB0byB1cGxvYWQgcmVzdWx0cyB0byIKKyAgIGV4aXQgMQorfQorCisjc2V0IC14CisKKyMgbWFrZSBnZXRvcHRzIHdvcmsgb24gVHJ1NjQgYnkgcmVzcGF3bmluZyBpbiBQb3NpeCBtb2RlCitpZiBbICJgdW5hbWVgIiA9ICJPU0YxIiAtYSAiJEJJTl9TSCIgIT0gInhwZzQiIF07IHRoZW4KKyAgICBCSU5fU0g9eHBnNAorICAgIGV4cG9ydCBCSU5fU0gKKyAgICBleGVjICQwICQqCitmaQorCisjCisjIGZpbmQgbnNiLXBsYXRmb3JtIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoaXMgc2NyaXB0CisjCitFWEVfUEFUSD1gZGlybmFtZSAkMGAKK2lmIFsgISAtZiAkRVhFX1BBVEgvbnNiLWZ1bmN0aW9ucyBdO3RoZW4KKyAgIGlmIFsgLWYgJEhPTUUvYmluL25zYi1mdW5jdGlvbnMgXTsgdGhlbgorICAgICAgRVhFX1BBVEg9JEhPTUUvYmluCisgICBlbGlmIFsgLWYgbnNiLWZ1bmN0aW9ucyBdO3RoZW4KKyAgICAgIEVYRV9QQVRIPSRQV0QKKyAgIGVsc2UKKyAgICAgIGVjaG8gIkNhbm5vdCBmaW5kIG5zYi1mdW5jdGlvbnMgaW4gJEVYRV9QQVRILCAkSE9NRS9iaW4gb3IgJFBXRCIKKyAgICAgIGV4aXQgMQorICAgZmkKK2ZpCisKK2lmIFsgIngkMSIgPSAieC1DIiBdOyB0aGVuCisgICAgc2hpZnQKK2Vsc2UKKyAgICBpZiBbIC1mICRIT01FLy5zbm1wL25zYi1uaWdodGx5IF07dGhlbgorICAgICAgICAuICRIT01FLy5zbm1wL25zYi1uaWdodGx5CisgICAgZmkKK2ZpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgLXIgOiByZW1vdmUgYnVpbGQgZGlyIGJlZm9yZQorIyAtUiA6IHJlbW92ZSBidWlsZCBkaXIgYWZ0ZXIKK1BBUk1TPSIkUEFSTVMgLXIiCitOSUdIVExZX1ZFUkJPU0U9MAorTlNCX0VSUl9SRVNVTFRTX1RPPSIiCitOU0JfT0tfUkVTVUxUU19UTz0iIgorCit3aGlsZSBnZXRvcHRzIGI6ZTpmOmk6bzpzOnhoOnA6diBvcHQKK2RvCisgICAgY2FzZSAiJG9wdCIgaW4KKyAgICAgIGIpICBOU0JfQlVJTERfRElSPSRPUFRBUkc7OworICAgICAgZSkgIE5TQl9FUlJfUkVTVUxUU19UTz0kT1BUQVJHOzsKKyAgICAgIGYpICBOU0JfRlJPTT0kT1BUQVJHOzsKKyAgICAgIG8pICBOU0JfT0tfUkVTVUxUU19UTz0kT1BUQVJHOzsKKyAgICAgIGkpICBQQVJNUz0iLWkgJE9QVEFSRyAkUEFSTVMiOzsKKyAgICAgIHMpICBOU0JfU1JDX0RJUj0kT1BUQVJHOzsKKyAgICAgIGgpICBOU0JfU0NQX0hPU1Q9JE9QVEFSRworICAgICAgICAgIFBBUk1TPSItaCAkTlNCX1NDUF9IT1NUICRQQVJNUyIKKyAgICAgICAgICA7OworICAgICAgcCkgIE5TQl9TQ1BfREVTVD0kT1BUQVJHCisgICAgICAgICAgUEFSTVM9Ii1wICROU0JfU0NQX0RFU1QgJFBBUk1TIgorICAgICAgICAgIDs7CisgICAgICB4KSAgUEFSTVM9Ii14ICRQQVJNUyI7OworICAgICAgdikgIE5JR0hUTFlfVkVSQk9TRT0xOzsKKyAgICAgIFw/KSMgdW5rbm93biBmbGFnCisgICAgICAgIHVzYWdlOzsKKyAgICBlc2FjCitkb25lCitzaGlmdCBgZXhwciAkT1BUSU5EIC0gMWAKKworaWYgWyAkIyAtbmUgMSBdOyB0aGVuCisgICBlY2hvICJleHBlY3RpbmcgMSBhcmd1bWVudCwgZ290ICQjICgkQCkiCisgICB1c2FnZQorZmkKKworTlNCX1ZFUlNJT049JDEKKworLiAkRVhFX1BBVEgvbnNiLWZ1bmN0aW9ucworCituc2JfZGVmYXVsdF9wYXRocworCitQQVJNUz0iJFBBUk1TIC1iICROU0JfQlVJTERfRElSIC1zICROU0JfU1JDX0RJUiIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2VjaG8gIlN0YXJ0OiBgZGF0ZWAiCitlY2hvICJSdW5uaW5nIG5zYi1wYWNrYWdlICRQQVJNUyAkTlNCX1ZFUlNJT04iCitpZiBbICROSUdIVExZX1ZFUkJPU0UgPSAxIF07IHRoZW4KKyAgICAkRVhFX1BBVEgvbnNiLXBhY2thZ2UgJFBBUk1TICROU0JfVkVSU0lPTgorZWxzZQorICAgICRFWEVfUEFUSC9uc2ItcGFja2FnZSAkUEFSTVMgJE5TQl9WRVJTSU9OID4gL2Rldi9udWxsCitmaQorUkM9JD8KK2VjaG8gIkZpbmlzaDogYGRhdGVgIgorY2QgJE5TQl9CVUlMRF9ESVIKK2Nhc2UgJFJDIGluCisgICAgMCkgIFJFU1VMVD0iU3VjY2VzcyIKKyAgICAgICAgTlNCX1JFU1VMVFNfVE89JE5TQl9PS19SRVNVTFRTX1RPCisgICAgICAgIEZJTEVTPSIiCisgICAgICAgIDs7CisgICAgKikgUkVTVUxUPSJFcnJvciAocmMgJFJDKSIKKyAgICAgICBOU0JfUkVTVUxUU19UTz0kTlNCX0VSUl9SRVNVTFRTX1RPCisgICAgICAgRklMRVM9YGxzIG5zYi1tYWtlLSotZXJycy4qIDI+L2Rldi9udWxsYAorICAgICAgIGlmIFsgIngkTlNCX1NDUF9IT1NUIiAhPSAieCIgXTsgdGhlbgorICAgICAgICAgIG5zYl91cGxvYWQgJE5TQl9CVUlMRF9ESVIgJE5TQl9TQ1BfSE9TVDokTlNCX1NDUF9ERVNULyROU0JfVkVSU0lPTi8kTlNCX1NVRkZJWAorICAgICAgIGZpCisgICAgICAgIDs7Citlc2FjCitlY2hvICJSZXN1bHQ6ICRSRVNVTFQiCisKK2lmIFsgIngkTlNCX1JFU1VMVFNfVE8iICE9ICJ4IiBdOyB0aGVuCisgICBTVUJKRUNUPSIkTlNCX1ZFUlNJT04gJFJFU1VMVCBvbiAkTlNCX0hPU1QgKCROU0JfUExBVEZPUk0pIgorICAgZWNobyAiU2VuZGluZyBtYWlsIHRvICROU0JfUkVTVUxUU19UTzogJFNVQkpFQ1QiCisgICBjYXNlIGB1bmFtZSAtc2AgaW4KKyAgICAgIE9wZW5CU0R8RnJlZUJTRCkgIyBtYWlsIGRvZXNuJ3QgYWxsb3cgc2V0dGluZyBGcm9tCisgICAgICAgICAjIHNlZW1zIHRvIGJlIGluIC91c3Ivc2Jpbiwgd2hpY2ggaXNuJ3QgaW4gYWxsIHBhdGhzCisJIFBBVEg9L3Vzci9zYmluLzokUEFUSAorICAgICAgICAgZWNobyAiRnJvbTogJE5TQl9GUk9NIiA+IG1haWwucmVzdWx0cworICAgICAgICAgZWNobyAiVG86ICROU0JfUkVTVUxUU19UTyIgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICAjIG1haWwtcmVsYXRlZCBlcnJvcnMgdG8gT0sgYWRkcmVzcyAodXN1bGx5IGJ1aWxkbWFzdGVyKQorICAgICAgICAgZWNobyAiRXJyb3JzLVRvOiAkTlNCX09LX1JFU1VMVFNfVE8iID4+IG1haWwucmVzdWx0cworICAgICAgICAgZWNobyAiU3ViamVjdDogJFNVQkpFQ1QiID4+IG1haWwucmVzdWx0cworICAgICAgICAgZWNobyAiIiA+PiBtYWlsLnJlc3VsdHMKKyAgICAgICAgIGdyZXAgQ09ORklHVVJFX09QVElPTlMgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaHxzZWQgJ3M6L2hvbWUvW14gXSovYnVpbGQ6JEhPTUU6ZycgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBlY2hvICJSZXN1bHQ6ICRSRVNVTFQiID4+IG1haWwucmVzdWx0cworICAgICAgICAgaWYgWyAieCRGSUxFUyIgIT0gIngiIF07IHRoZW4KKyAgICAgICAgICAgIGNhdCAkRklMRVMgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBmaQorICAgICAgICAgc2VuZG1haWwgLXQgPCBtYWlsLnJlc3VsdHMKKyAgICAgICAgIDs7CisgICAgICBTdW5PUykgIyBubyBzZW5kbWFpbCwgbm8gbWFpbCAtcywgbmVlZCAtdCBmb3IgVG8gCisgICAgICAgICBlY2hvICJGcm9tOiAkTlNCX0ZST00iID4gbWFpbC5yZXN1bHRzCisgICAgICAgICAjIG1haWwtcmVsYXRlZCBlcnJvcnMgdG8gT0sgYWRkcmVzcyAodXN1bGx5IGJ1aWxkbWFzdGVyKQorICAgICAgICAgZWNobyAiRXJyb3JzLVRvOiAkTlNCX09LX1JFU1VMVFNfVE8iID4+IG1haWwucmVzdWx0cworICAgICAgICAgZWNobyAiU3ViamVjdDogJFNVQkpFQ1QiID4+IG1haWwucmVzdWx0cworICAgICAgICAgZWNobyAiIiA+PiBtYWlsLnJlc3VsdHMKKyAgICAgICAgIGdyZXAgQ09ORklHVVJFX09QVElPTlMgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaHxzZWQgJ3M6L2hvbWUvW14gXSovYnVpbGQ6JEhPTUU6ZycgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBlY2hvICJSZXN1bHQ6ICRSRVNVTFQiID4+IG1haWwucmVzdWx0cworICAgICAgICAgaWYgWyAieCRGSUxFUyIgIT0gIngiIF07IHRoZW4KKyAgICAgICAgICAgIGNhdCAkRklMRVMgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBmaQorICAgICAgICAgbWFpbCAtdCAkTlNCX1JFU1VMVFNfVE8gPCBtYWlsLnJlc3VsdHMKKyAgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICAgZWNobyAiUmVzdWx0OiAkUkVTVUxUIiA+PiBtYWlsLnJlc3VsdHMKKyAgICAgICAgIGlmIFsgIngkRklMRVMiICE9ICJ4IiBdOyB0aGVuCisgICAgICAgICAgICBjYXQgJEZJTEVTID4+IG1haWwucmVzdWx0cworICAgICAgICAgZmkKKyAgICAgICAgIG1haWwgLXMgIiRTVUJKRUNUIiAkTlNCX1JFU1VMVFNfVE8gPCBtYWlsLnJlc3VsdHMKKyAgICAgICAgIDs7CisgICBlc2FjCitmaQorCitpZiBbICRSQyAtZXEgMCBdOyB0aGVuCisgICAgICAgIGlmIFsgIngkTlNCX0JVSUxEX0RJUiIgPSAiLyIgXTsgdGhlbgorICAgICAgICAgICAgbnNiX2Fib3J0ICJOb3QgcnVubmluZyBybSAtZlIgZnJvbSAvIgorICAgICAgICBlbHNlCisgICAgICAgICAgICAvYmluL3JtIC1mUiAkTlNCX0JVSUxEX0RJUiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIGZpCitmaQorCitleGl0ICRSQwpkaWZmIC0tZ2l0IGEvZGlzdC9uc2ItcGFja2FnZSBiL2Rpc3QvbnNiLXBhY2thZ2UKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjUxYzE1MAotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvbnNiLXBhY2thZ2UKQEAgLTAsMCArMSwxMzcgQEAKKyMhL2Jpbi9zaAorIworIyAkSWQkCisjIEF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAZnJlZXNubXAuY29tPgorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwordXNhZ2UoKQoreworICAgZWNobyAiVXNhZ2U6ICQwICBbcGFyYW1zXSBWRVJTSU9OIgorICAgZWNobyAiIgorICAgZWNobyAiICBwYXJhbXM6IFstY10gWy1kXSBbLVBdIFstcyBOU0JfU1JDX0RJUl0gWy1iIEJVSUxERF0gWy1pIE5TQl9JTlNUQUxMX0RJUl0iCisgICBlY2hvICIgICAgICAgICAgWy1oIGhvc3RdIFstcCBwYXRoXSIKKyAgIGVjaG8gIiIKKyAgIGVjaG8gIiBWRVJTSU9OICAgIDogcmVsZWFzZSBudW1iZXIgKGVnIDUuMi4yKSIKKyAgIGVjaG8gIiAtcyBOU0JfU1JDX0RJUiAgOiBzb3VyY2UgZGlyZWN0b3J5IFskSE9NRS9zcmMvbmV0LXNubXAtVkVSU0lPTl0iCisgICBlY2hvICIgLWIgQlVJTEREICA6IGJ1aWxkIGRpcmVjdG9yeSBbJEhPTUUvYnVpbGQvXSIKKyAgIGVjaG8gIiAgICAgICAgICAgICAgTk9URS1wbGF0Zm9ybSB3aWxsIGJlIGFwcGVuZGVkIHRvIGJ1aWxkIGRpcmVjdG9yeSIKKyAgIGVjaG8gIiAtaSBOU0JfSU5TVEFMTF9ESVI6IGluc3RhbGwgZGlyZWN0b3J5IFskSE9NRS9idWlsZC9cJFBMQVRGT1JNL3Vzcl0iCisgICBlY2hvICIiCisgICBlY2hvICIgLXggOiBjb25maWd1cmUgZXh0cmEgZmVhdHVyZXMgZm9yIHByZS1yZWxlYXNlIHRlc3RpbmciCisgICBlY2hvICIgLWMgOiBza2lwIGNvbmZpZ3VyZSIKKyAgIGVjaG8gIiAtZCA6IGRpcnR5IGJ1aWxkIChkb24ndCBtYWtlIGRpc3RjbGVhbikiCisgICBlY2hvICIgLW0gOiBza2lwICdtYWtlIGFsbCciCisgICBlY2hvICIgLVAgOiBwYXVzZSBhdCBwcm9tcHRzIGluIGJldHdlZW4gc3RhZ2VzIgorICAgZWNobyAiIC1yIDogcmVtb3ZlIGJ1aWxkIGRpciAocm0gLWZSKSBiZWZvcmUgYnVpbGQiCisgICBlY2hvICIgLVIgOiByZW1vdmUgYnVpbGQgZGlyIChybSAtZlIpIGFmdGVyIHN1Y2Nlc3NmdWwgYnVpbGQiCisgICBlY2hvICIgLXQgOiBza2lwICdtYWtlIHRlc3QnIgorICAgZWNobyAiIC1DIDogZG9uJ3Qgc291cmNlICRIT01FLy5zbm1wL25zYi1wYWNrYWdlIgorICAgZWNobyAiIgorICAgZWNobyAiIC1oIDogaG9zdCB0byB1cGxvYWQgcmVzdWx0cyB0byIKKyAgIGVjaG8gIiAtcCA6IHBhdGggdG8gdXBsb2FkIHJlc3VsdHMgdG8iCisgICBleGl0IDEKK30KKworI3RyYXAgZXhpdCBTSUdJTlQKKworI3NldCAteAorCisjIG1ha2UgZ2V0b3B0cyB3b3JrIG9uIFRydTY0IGJ5IHJlc3Bhd25pbmcgaW4gUG9zaXggbW9kZQoraWYgWyAiYHVuYW1lYCIgPSAiT1NGMSIgLWEgIiRCSU5fU0giICE9ICJ4cGc0IiBdOyB0aGVuCisgICAgQklOX1NIPXhwZzQKKyAgICBleHBvcnQgQklOX1NICisgICAgZXhlYyAkMCAkKgorZmkKKworIworIyBmaW5kIG5zYi1wbGF0Zm9ybSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGlzIHNjcmlwdAorIworRVhFX1BBVEg9YGRpcm5hbWUgJDBgCitpZiBbICEgLWYgJEVYRV9QQVRIL25zYi1mdW5jdGlvbnMgXTt0aGVuCisgICBpZiBbIC1mICRIT01FL2Jpbi9uc2ItZnVuY3Rpb25zIF07IHRoZW4KKyAgICAgIEVYRV9QQVRIPSRIT01FL2JpbgorICAgZWxpZiBbIC1mIG5zYi1mdW5jdGlvbnMgXTt0aGVuCisgICAgICBFWEVfUEFUSD0kUFdECisgICBlbHNlCisgICAgICBlY2hvICJDYW5ub3QgZmluZCBuc2ItZnVuY3Rpb25zIGluICRFWEVfUEFUSCwgJEhPTUUvYmluIG9yICRQV0QiCisgICAgICBleGl0IDEKKyAgIGZpCitmaQorCitpZiBbICJ4JDEiID0gIngtQyIgXTsgdGhlbgorICAgIHNoaWZ0CitlbHNlCisgICAgaWYgWyAtZiAkSE9NRS8uc25tcC9uc2ItcGFja2FnZSBdO3RoZW4KKyAgICAgICAgLiAkSE9NRS8uc25tcC9uc2ItcGFja2FnZQorICAgIGZpCitmaQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitSRU1PVkVfU1VDQ0VTUz0wCisKKyMgICAgICB4KSAgeD0kT1BUQVJHIDs7Cit3aGlsZSBnZXRvcHRzIGI6Y2RoOmk6bVBwOnJSczp0eCBvcHQKK2RvCisgICAgY2FzZSAiJG9wdCIgaW4KKyAgICAgIGIpICBOU0JfQlVJTERfRElSPSRPUFRBUkcgOzsKKyAgICAgIGMpICBOU0JfU0tJUF9DT05GSUc9MSA7OworICAgICAgZCkgIE5TQl9DTEVBTj0wIDs7CisgICAgICBoKSAgTlNCX1NDUF9IT1NUPSRPUFRBUkcgOzsKKyAgICAgIGkpICBOU0JfSU5TVEFMTF9ESVI9JE9QVEFSRyA7OworICAgICAgbSkgIE5TQl9TS0lQX0JVSUxEPTEgOzsKKyAgICAgIFApICBOU0JfUFJPTVBUPTEgOzsKKyAgICAgIHApICBOU0JfU0NQX0RFU1Q9JE9QVEFSRyA7OworICAgICAgcikgIE5TQl9DTEVBTj0yIDs7CisgICAgICBSKSAgUkVNT1ZFX1NVQ0NFU1M9MSA7OworICAgICAgcykgIE5TQl9TUkNfRElSPSRPUFRBUkcgOzsKKyAgICAgIHQpICBOU0JfU0tJUF9URVNUPTEgOzsKKyAgICAgIHgpICBOU0JfQ09ORklHX0FMTD0xOzsKKyAgICAgIFw/KSMgdW5rbm93biBmbGFnCisgICAgICAgIHVzYWdlOzsKKyAgICBlc2FjCitkb25lCitzaGlmdCBgZXhwciAkT1BUSU5EIC0gMWAKKworaWYgWyAkIyAtbmUgMSBdOyB0aGVuCisgICBlY2hvICJleHBlY3RpbmcgMSBhcmd1bWVudCwgZ290ICQjICgkQCkiCisgICB1c2FnZQorZmkKKworTlNCX1ZFUlNJT049JDEKKworLiAkRVhFX1BBVEgvbnNiLWZ1bmN0aW9ucworCituc2JfZGVmYXVsdF9wYXRocworCitpZiBbICROU0JfQ0xFQU4gLWVxIDEgXTsgdGhlbgorICAgaWYgWyAkTlNCX1NLSVBfQ09ORklHIC1lcSAxIF07IHRoZW4KKyAgICAgIGVjaG8gIkEgY2xlYW4gYnVpbGQgYWxzbyByZXF1aXJlcyBjb25maWd1cmF0aW9uICgtZCBhbmQgLWMiCisgICAgICBlY2hvICJjYW5ub3QgYm90aCBiZSBzcGVjaWZpZWQpLiIKKyAgICAgIHVzYWdlCisgICBmaQorZmkKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbnNiX3Byb21wdCAicHJlc3MgZW50ZXIgdG8gYnVpbGQgJE5TQl9TUkNfRElSIGluICROU0JfQlVJTERfRElSLCBhbmQgaW5zdGFsbCBpbiAkTlNCX0lOU1RBTExfRElSIgorbnNiX2J1aWxkICROU0JfVkVSU0lPTiAkTlNCX1NSQ19ESVIgJE5TQl9CVUlMRF9ESVIgJE5TQl9JTlNUQUxMX0RJUiAkTlNCX0NPTkZJR19BTEwKK3JjPSQ/CitpZiBbICJ4JE5TQl9TQ1BfSE9TVCIgIT0gIngiIF07IHRoZW4KKyAgIG5zYl91cGxvYWQgJE5TQl9CVUlMRF9ESVIgJE5TQl9TQ1BfSE9TVDokTlNCX1NDUF9ERVNULyROU0JfVkVSU0lPTi8kTlNCX0hPU1QvCitmaQoraWYgWyAkcmMgLWVxIDAgXSAmJiBbICRSRU1PVkVfU1VDQ0VTUyAtZXEgMSBdO3RoZW4KKyAgICBuc2JfcHJvbXB0ICJwcmVzcyBlbnRlciB0byByZW1vdmUgJE5TQl9CVUlMRF9ESVIiCisgICAgaWYgWyAieCROU0JfQlVJTERfRElSIiA9ICIvIiBdOyB0aGVuCisgICAgICAgbnNiX2Fib3J0ICJOb3QgcnVubmluZyBybSAtZlIgZnJvbSAvIgorICAgIGVsc2UKKyAgICAgICAvYmluL3JtIC1mUiAkTlNCX0JVSUxEX0RJUiA+IC9kZXYvbnVsbCAyPiYxCisgICAgZmkKK2ZpCisKK25zYl9wcm9tcHQgInByZXNzIGVudGVyIHRvIGV4aXQgd2l0aCByYyAkUkMiCitleGl0ICRyYwpkaWZmIC0tZ2l0IGEvZGlzdC9uc2ItcGxhdGZvcm0gYi9kaXN0L25zYi1wbGF0Zm9ybQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hNzU1MGEzCi0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9uc2ItcGxhdGZvcm0KQEAgLTAsMCArMSwyNyBAQAorIyEvYmluL3NoCisjCisjICRJZCQKKyMgQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUBmcmVlc25tcC5jb20+CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjCisjIGZpbmQgbnNiLXBsYXRmb3JtIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoaXMgc2NyaXB0CisjCitFWEVfUEFUSD1gZGlybmFtZSAkMGAKK2lmIFsgLWYgJEVYRV9QQVRIL25zYi1mdW5jdGlvbnMgXTt0aGVuCisgICAuICRFWEVfUEFUSC9uc2ItZnVuY3Rpb25zCitlbGlmIFsgLWYgJEhPTUUvYmluL25zYi1mdW5jdGlvbnMgXTsgdGhlbgorICAgLiAkSE9NRS9iaW4vbnNiLWZ1bmN0aW9ucworZWxpZiBbIC1mIG5zYi1mdW5jdGlvbnMgXTt0aGVuCisgICAuIG5zYi1mdW5jdGlvbnMKK2Vsc2UKKyAgIGVjaG8gIkNhbm5vdCBmaW5kIG5zYi1mdW5jdGlvbnMgaW4gJEVYRV9QQVRILCAkSE9NRS9iaW4gb3IgJFBXRCIKKyAgIGV4aXQgMQorZmkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworbnNiX3N5c25hbWUKZGlmZiAtLWdpdCBhL2Rpc3QvcGF0bWUgYi9kaXN0L3BhdG1lCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZiNzEwODIKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L3BhdG1lCkBAIC0wLDAgKzEsMzQ3IEBACisjIS91c3IvYmluL3BlcmwKKwordXNlIEdldG9wdDo6R1VJOjpMb25nOwordXNlIFFXaXphcmQ7Cit1c2UgUVdpemFyZDo6QVBJOwordXNlIERhdGE6OkR1bXBlcjsKK3VzZSBDd2Q7CisKK3VzZSBHZXRvcHQ6OlN0ZDsKK0dldG9wdDo6R1VJOjpMb25nOjpDb25maWd1cmUocXcoZGlzcGxheV9oZWxwIG5vX2lnbm9yZV9jYXNlKSk7CisKK3VzZSBzdHJpY3Q7CisKK291ciAlb3B0cyA9CisoCisgJ2QnID0+ICRFTlZ7J0hPTUUnfSAuICIvc3JjL3NubXAvcGF0bWUvIiwKKyAnYicgPT4gJ21haW4sNS40LDUuMyw1LjInLAorICdwJyA9PiAnLXAwJywKKyk7CisKKyMgc2V0cyB0aGUgb3JkZXIgc2hvd24KK291ciBAY29kZXRyZWVzID0gKCdtYWluJywKKwkJICAnNS40JywKKwkJICAnNS4zJywKKwkJICAnNS4yJywKKwkJICAnNS4xJywKKwkJICAnNS4wJywKKwkJICAnVUNEJyk7CisKK291ciAlY29kZXRyZWVzID0gKCc1LjAnID0+ICdWNS0wLXBhdGNoZXMnLAorCQkgICc1LjEnID0+ICdWNS0xLXBhdGNoZXMnLAorCQkgICc1LjInID0+ICdWNS0yLXBhdGNoZXMnLAorCQkgICc1LjMnID0+ICdWNS0zLXBhdGNoZXMnLAorCQkgICc1LjQnID0+ICdWNS00LXBhdGNoZXMnLAorCQkgICdtYWluJyA9PiAnbmV0LXNubXAnLAorCQkgICdVQ0QnID0+ICdWNC0yLXBhdGNoZXMnKTsKKworb3VyIChAY2FwdHVyZXMsICRjYXBmaWx0LCAkcmVzdWx0LCAlY2FwdHVyZXMsICRjYXB0dXJlbnVtKTsKKworR2V0T3B0aW9ucyhcJW9wdHMsCisJICAgWydmfGZpbGU9cycsICAgICAgICAgICAnUGF0Y2ggZmlsZSddLAorCSAgIFsnZHxiYXNlLWRpcmVjdG9yeT1zJywgJ0Jhc2UgZGlyZWN0b3J5IG9mIGNoZWNrb3V0cyddLAorCSAgIFsncHxwYXRjaC1hcmdzPXMnLCAgICAgJ0RlZmF1bHQgcGF0Y2ggYXJndW1lbnRzICgtcDEpJ10sCisKKwkgICBbJ0dVSTpzZXBhcmF0b3InLCAgICdQYXRjaCBhcHBsaWNhdGlvbiBzcGVjaWZpY3M7J10sCisJICAgWydifGJyYWNoZXM9cycsICAgICAnQnJhbmNoZXMgdG8gYXBwbHkgdG8gKGVnIDUuMSw1LjIsLi4uKSddLAorCSAgIFsnbXxjb21taXQtbXNnPXMnLCAgJ0RlZmF1bHQgY29tbWl0IG1lc3NhZ2UgdG8gdXNlJ10sCisJICAgWydEfHN1YmRpcj1zJywgICAgICAnQXBwbHkgcGF0Y2hlcyB0byBhIHN1YmRpcmVjdG9yeSddLAorCSAgIFsndXxuby11cGRhdGUnLCAgICAgJ0RvIG5vdCBydW4gc3ZuIHN0YXR1cy91cGRhdGUgaW4gdGhlIGRpcmVjdG9yeSBmaXJzdC4gIE9ubHkgdXNlIHRoaXMgaWYgaXRcJ3Mga25vd24gY2xlYW4uJ10sCisJICApOworCitteSAlYnM7CitpZiAoJG9wdHN7J2InfSkgeworICAgIG1hcCB7ICRic3skX30gPSAxOyB9IHNwbGl0KC8sXHMqLywkb3B0c3snYid9KTsgCit9Ciskb3B0c3snZCd9IC49ICIvIiBpZiAoJG9wdHN7J2QnfSAhfiAvXC8kLyk7CisKK215ICRxdyA9IG5ldyBRV2l6YXJkKCk7CitteSAkcHJpcyA9IGxvYWRfcHJpbWFyaWVzKCk7CiskcXctPnsncHJpbWFyaWVzJ30gPSAkcHJpczsKKworJHF3LT5xd3BhcmFtKCdzdm5jb21taXQnLCRvcHRzeydtJ30pIGlmICgkb3B0c3snbSd9KTsKKworJHF3LT5tYWdpYygndG9wJyk7CisKK3N1YiBtYWtlX3RvcHMgeworICAgIG15IEB0b3BzOworICAgIGZvcmVhY2ggbXkgJGsgKEBjb2RldHJlZXMpIHsKKwlwdXNoIEB0b3BzLCAKKwkgIHF3X2NoZWNrYm94KCRrLCAiQXBwbHkgdG8gJGsiLCAxLCAwLCAKKwkJICAgICAgZGVmYXVsdCA9PiAkcXctPnF3cGFyYW0oJGspIHx8ICRic3ska30sCisJCSAgICAgIG92ZXJyaWRlID0+IDEpOworICAgIH0KKyAgICByZXR1cm4gQHRvcHM7Cit9CisKK3N1YiBsb2FkX3ByaW1hcmllcyB7CisgICAgbXkgQHRvcHMgPSBtYWtlX3RvcHMoKTsKKyAgICByZXR1cm4KKyAgICAgIHsKKyAgICAgICB0b3AgPT4KKyAgICAgICBxd19wcmltYXJ5KCd0b3AnLCdTZWxlY3QgcGFja2FnZXMgdG8gYXBwbHkgdGhlIHBhdGNoIHRvOicsICcnLCAKKwkJICBbQHRvcHMsCisJCSAgcXdfdGV4dCgnYmFzZWRpcicsICdCYXNlIGNvZGUgZGlyZWN0b3J5OicsIAorCQkJICBkZWZhdWx0ID0+ICRvcHRzeydkJ30pLAorCQkgIHF3X2hpZGRlbignbm9fY29uZmlybScsMSksCisJCSAgcXdfdGV4dCgncGF0Y2hmaWxlJywnUGF0Y2ggZmlsZTonLCBkZWZhdWx0ID0+ICRvcHRze2Z9LAorCQkJIGNoZWNrX3ZhbHVlID0+IHN1YiB7IAorCQkJICAgICByZXR1cm4gInBhdGNoIGZpbGUgZG9lc24ndCBleGlzdCIgaWYgKCEgLWYgcXdwYXJhbSgncGF0Y2hmaWxlJykpCisJCQkgfSksCisJCSAgcXdfY2hlY2tib3goJ25vdXBkYXRlJywnRG9uXCd0IHJ1biBzdm4gdXBkYXRlL3JldmVydCBmaXJzdDonLCAKKwkJCSAgICAgIDEsIDAsIGRlZmF1bHQgPT4gJG9wdHN7J3UnfSB8fCAwKV0sCisJCSAgW10sW10sc3ViX21vZHVsZXMgPT4gWydjb21taXQnLCAnY29tbWl0bXNnJywgJ21ha2V0ZXN0JywKKwkJCQkJJ2VkaXQnLCAnYXBwbHlpbmcnLCAnY2hlY2snLAorCQkJCQkncGF0Y2hfaW5mbyddKSwKKworICAgICAgIHBhdGNoX2luZm8gPT4KKyAgICAgICBxd19wcmltYXJ5KCdjaGVjaycsJ0NoZWNraW5nIGNvZGUgZGlyZWN0b3J5IHN0YXR1czonLCAnJywKKwkJICBbcXdfcGFyYWdyYXBoKCdwYXRjaCBwaWVjZXM6JywKKwkJCQlzdWIgeyBjYXB0dXJlKCJlZ3JlcCAnXigtLS18XFwrXFwrXFwrKScgIiAuIAorCQkJCQkgICAgICBxd3BhcmFtKCdwYXRjaGZpbGUnKSl9LAorCQkJCXdpZHRoID0+IDgwLAorCQkJCWhlaWdodCA9PiAzMCksCisJCSAgIHF3X3RleHQoJ3BhdGNoYXJncycsJ1BhdGNoIGFyZ3VtZW50cycsCisJCQkgICBkZWZhdWx0ID0+ICRvcHRzeydwJ30pLAorCQkgICBxd190ZXh0KCdzdWJkaXInLCAnQXBwbHkgaW4gcGFja2FnZSBzdWJkaXI6JywKKwkJCSAgIGRlZmF1bHQgPT4gJG9wdHN7J0QnfSksCisJCSAgIHF3X3BhcmFncmFwaCgnTm90ZTonLCdIaXR0aW5nIG5leHQgYmVsb3cgd2lsbCBmaXJzdCBjbGVhbiB5b3VyIGxvY2FsIHJlcG9zaXRvcmllcyB3aGljaCBjb3VsZCB0YWtlIGEgYml0ICh3YXRjaCB0aGUgY29uc29sZSBmb3IgZGVhaWxzIG9uIHdoYXQgaXRcJ3MgZG9pbmcgYXQgYW55IG1vbWVudCknLCBkb2lmID0+IHN1YiB7IXF3cGFyYW0oJ25vdXBkYXRlJyl9KSwKK10pLAorCisKKyAgICAgICBjaGVjayA9PgorICAgICAgIHF3X3ByaW1hcnkoJ2NoZWNrJywnQ2hlY2tpbmcgY29kZSBkaXJlY3Rvcnkgc3RhdHVzOicsICcnLAorCQkgIFtxd19wYXJhZ3JhcGgoJ3JlbW92ZWQgLnJlaiBmaWxlczonLAorCQkJICAgICAgIHN1YiB7IG15ICRpdCA9IGNhcHR1cmVlYWNoZGlyKCdmaW5kIC4gLW5hbWUgXCoucmVqJyk7CisJCQkJICAgICBjYXB0dXJlZWFjaGRpcignZmluZCAuIC1uYW1lIFwqLnJlaiB8IHhhcmdzIHJtIC1mJyk7CisJCQkJICAgICByZXR1cm4gJGl0OworCQkJCSB9LAorCQkJCXByZWZvcm1hdHRlZCA9PiAxLAorCQkJCXdpZHRoID0+IDgwLAorCQkJCWhlaWdodCA9PiA2MCwKKwkJCSAgICAgICApLAorCQkgICBxd19wYXJhZ3JhcGgoJ3N2biB1cGRhdGU6JywKKwkJCQlzdWIgeworCQkJCSAgICBteSAoJHJlcywgJG9uZSk7CisJCQkJICAgIGZvcmVhY2ggbXkgJGsgKEBjb2RldHJlZXMpIHsKKwkJCQkJbmV4dCBpZiAoIXF3cGFyYW0oJGspKTsKKwkJCQkJJHJlcyAuPSAiJGs6XG4iOworCQkJCQkkb25lID0gY2FwdHVyZWRpcigkY29kZXRyZWVzeyRrfSwgCisJCQkJCQkJICAic3ZuIHVwZGF0ZSIpOworCQkJCQkkcmVzIC49ICRvbmU7CisJCQkJCSRvbmUgPSBjYXB0dXJlZGlyKCRjb2RldHJlZXN7JGt9LCAKKwkJCQkJCQkgICJzdm4gcmV2ZXJ0IC1SIC4iKTsKKwkJCQkJJHJlcyAuPSAkb25lOworCQkJCSAgICB9CisJCQkJICAgIHJldHVybiAkcmVzOworCQkJCSAgfSwKKwkJCQlwcmVmb3JtYXR0ZWQgPT4gMSwKKwkJCQl3aWR0aCA9PiA4MCwKKwkJCQloZWlnaHQgPT4gNjAsCisJCQkJZG9pZiA9PiBzdWJ7IXF3cGFyYW0oJ25vdXBkYXRlJyl9CisJCQkgICAgICAgKQkJICBdLAorCQkgKSwKKworICAgICAgIGFwcGx5aW5nID0+CisgICAgICAgcXdfcHJpbWFyeSgiYXBwbHlpbmciLCAnQXBwbHlpbmcgcGF0Y2hlcyB0byB0aGUgY29kZSBiYXNlcycsICcnLAorCQkgIFt7dHlwZSA9PiAndGFibGUnLAorCQkgICAgdGV4dCA9PiAnUmVzdWx0czonLAorCQkgICAgdmFsdWVzID0+IHN1YiB7CisJCQlteSBAdGFiOworCQkJZm9yZWFjaCBteSAkayAoQGNvZGV0cmVlcykgeworCQkJICAgIG5leHQgaWYgKCFxd3BhcmFtKCRrKSk7CisJCQkgICAgcHVzaCBAdGFiLCBbJGssCisJCQkJCXF3X3BhcmFncmFwaCgiciRrIiwiIiwgCisJCQkJCQkgICAgIHByZWZvcm1hdHRlZCA9PiAxLAorCQkJCQkJICAgICB3aWR0aCA9PiA4MCwKKwkJCQkJCSAgICAgaGVpZ2h0ID0+IDIwLAorCQkJCQkJICAgICB2YWx1ZXMgPT4gCisJCQkJCQkgICAgIHN1YiB7IG15ICRjbWQgPSAicGF0Y2ggIiAuIHF3cGFyYW0oJ3BhdGNoYXJncycpIC4gIiA8ICIgLiBxd3BhcmFtKCdwYXRjaGZpbGUnKTsKKwkJCQkJCQkgICBteSAkcmVzdWx0cyA9ICJSdW5uaW5nIG9uICRrOiAkY21kIiAuICJcbiIgLiBjYXB0dXJlZGlyKCRjb2RldHJlZXN7JGt9LCRjbWQpOworCQkJCQkJCSAgIHJldHVybiAkcmVzdWx0c30pXTsKKwkJCX0KKwkJCXJldHVybiBbXEB0YWJdOworCQkgICAgfX1dLFtdLFtdKSwKKworICAgICAgIGVkaXQgPT4KKyAgICAgICBxd19wcmltYXJ5KCdlZGl0JywnRml4IHRoZSBmb2xsb3dpbmcgZmlsZXM6JywnJywKKwkJICBbcXdfcGFyYWdyYXBoKCdGaXggdGhlc2UgKG1heWJlKTonLAorCQkJICAgICAgIHN1YiB7CisJCQkJICAgJGNhcGZpbHQgPSAnKC4qLnJlaiknOworCQkJCSAgIG15ICRyZXMgPSAKKwkJCQkgICAgIGNhcHR1cmVlYWNoZGlyKCdmaW5kIC4gLW5hbWUgXCoucmVqJyk7CisJCQkJICAgcHJpbnQgRHVtcGVyKFwlY2FwdHVyZXMpOworCQkJCSAgICRjYXBmaWx0ID0gdW5kZWY7CisJCQkJICAgcmV0dXJuICRyZXM7CisJCQkJIH0sCisJCQkJcHJlZm9ybWF0dGVkID0+IDEsCisJCQkJd2lkdGggPT4gODAsCisJCQkJaGVpZ2h0ID0+IDYwLAorCQkJICAgICAgICksCisJCSAgIHF3X2xhYmVsKCdmYWlsZWQgZmlsZXM6JywKKwkJCSAgICBzdWIgeyAkY2FwdHVyZW51bSA9IDA7CisJCQkJICBtYXAgeyAkY2FwdHVyZW51bSArPSAkI3skY2FwdHVyZXN7JF99fSArIDE7CisJCQkJICAgIH0gKGtleXMoJWNhcHR1cmVzKSk7CisJCQkJICByZXR1cm4gJGNhcHR1cmVudW07CisJCQkgICAgICB9KSwKKwkJICBxd19jaGVja2JveCgnZWRpdGhlbScsJ09wZW4gYW4gZWRpdG9yIG9uIHRoZSBmYWlsZWQgZmlsZXM/JywKKwkJCSAgICAgIDEsIDAsIGRvaWYgPT4gc3ViIHsgcmV0dXJuICRjYXB0dXJlbnVtID4gMCB9KSwKKwkJICBxd190ZXh0KCdlZGl0b3InLCdFZGl0b3I6JyxkZWZhdWx0ID0+ICRFTlZ7J0VESVRPUid9IHx8ICd2aScsCisJCQkgIGRvaWYgPT4gc3ViIHsgcmV0dXJuICRjYXB0dXJlbnVtID4gMCB9KV0sCisJCSAgW3N1YiB7CisJCSAgICAgICBpZiAocXdwYXJhbSgnZWRpdGhlbScpKSB7CisJCQkgICBmb3JlYWNoIG15ICRrIChrZXlzKCVjYXB0dXJlcykpIHsKKwkJCSAgICAgICBmb3JlYWNoIG15ICRmIChAeyRjYXB0dXJlc3ska319KSB7CisJCQkJICAgbXkgJGZpbGUgPSBxd3BhcmFtKCdiYXNlZGlyJykgLgorCQkJCSAgICAgJGNvZGV0cmVlc3ska30gLgorCQkJCSAgICAgICBxd3BhcmFtKCdzdWJkaXInKSAuICcvJyAuICRmLT5bMF07CisJCQkJICAgcHJpbnQgU1RERVJSICJlZGl0aW5nOiAkZmlsZVxuIjsKKwkJCQkgICBzeXN0ZW0ocXdwYXJhbSgnZWRpdG9yJykgLiAiICIgLiAkZmlsZSk7CisJCQkgICAgICAgfQorCQkJICAgfQorCQkgICAgICAgfQorCQkgICB9XQorCQkgKSwKKworICAgICAgIG1ha2V0ZXN0ID0+CisgICAgICAgcXdfcHJpbWFyeSgibWFrZXRlc3QiLCAiUnVuIG1ha2U/IiwnJywKKwkJIFtxd19jaGVja2JveCgnbWFrZWl0JywnUnVuIG1ha2U/JywgMSwgMCksCisJCSAgcXdfY2hlY2tib3goJ21ha2V0ZXN0JywgJ1J1biBtYWtlIHRlc3Q/JywgMSwgMCkKKwkJIF0sCisgCQkgW3N1YiB7CisgCQkgICAgICBpZiAocXdwYXJhbSgnbWFrZWl0JykgfHwgcXdwYXJhbSgnbWFrZXRlc3QnKSkgeworIAkJCSAgJF9bMF0tPmFkZF90b2RvcygtZWFybHksICdkb21ha2UnKTsKKyAJCSAgICAgIH0KKyAJCSAgfV0KKwkJICksCisKKyAgICAgICBkb21ha2UgPT4KKyAgICAgICBxd19wcmltYXJ5KCJkb21ha2UiLCAiTWFrZSByZXN1bHRzIiwnJywKKwkJICBbcXdfcGFyYWdyYXBoKCdNYWtlIHJlc3VsdHM6JywKKwkJCQlzdWIgeyByZXR1cm4gY2FwdHVyZWVhY2hkaXIoJ21ha2UnKTsgfSwKKwkJCQlwcmVmb3JtYXR0ZWQgPT4gMSwKKwkJCQl3aWR0aCA9PiA4MCwKKwkJCQloZWlnaHQgPT4gMjAsCisJCQkJZG9pZiA9PiBzdWIgeyBxd3BhcmFtKCdtYWtlaXQnKSB9CisJCQkgICAgICAgKSwKKwkJICAgcXdfcGFyYWdyYXBoKCdNYWtlIHRlc3QgcmVzdWx0czonLAorCQkJCXN1YiB7IHJldHVybiBjYXB0dXJlZWFjaGRpcignbWFrZSB0ZXN0Jyk7IH0sCisJCQkJcHJlZm9ybWF0dGVkID0+IDEsCisJCQkJd2lkdGggPT4gODAsCisJCQkJaGVpZ2h0ID0+IDIwLAorCQkJCWRvaWYgPT4gc3ViIHsgcXdwYXJhbSgnbWFrZXRlc3QnKSB9CisJCQkgICAgICAgKV0KKwkJICApLAorCisgICAgICAgY29tbWl0bXNnID0+CisgICAgICAgcXdfcHJpbWFyeSgiY29tbWl0bXNnIiwgJ0NvbW1pdCBpbmZvOicsICcnLAorCQkgIFtxd190ZXh0KCdzdm5jb21taXQnLCdDb21taXQgbWVzc2FnZScsCisJCQkgICBkZWZhdWx0ID0+IHF3cGFyYW0oJ3N2bmNvbW1pdCcpIHx8ICRvcHRzeydtJ30pLAorCQkgIHt0eXBlID0+ICdkeW5hbWljJywKKwkJICAgdmFsdWVzID0+IHN1YiB7IG15IEB0b3BzID0gbWFrZV90b3BzKDEpOyByZXR1cm4gXEB0b3BzfX1dKSwKKworICAgICAgIGNvbW1pdCA9PgorICAgICAgIHF3X3ByaW1hcnkoImNvbW1pdCIsICdydW5uaW5nIGNvbW1pdDonLCAnJywKKwkJICBbcXdfcGFyYWdyYXBoKCdjb21taXR0aW5nIGZpbGVzOicsCisJCQkgICAgICAgc3ViIHsgbXkgJG1zZyA9IHF3cGFyYW0oJ3N2bmNvbW1pdCcpOworCQkJCSAgICAgJG1zZyA9fiBzL1wnL1wnXCJcJ1wiXCcvZzsgIyBlc2NhcGUgJ3MKKwkJCQkgICAgIHJldHVybiBjYXB0dXJlZGlyKCRvcHRzeydkJ30sCisJCQkJCQkgICAgICAgJ3N2biBjb21taXQgLW0gXCcnIC4gJG1zZyAuICdcJyAnIC4gZ2V0X2NvZGVkaXJzX3N0cigpKTsgfSwKKwkJCQlwcmVmb3JtYXR0ZWQgPT4gMSwKKwkJCQl3aWR0aCA9PiA4MCwKKwkJCQloZWlnaHQgPT4gMjAsCisJCQkgICAgICAgKV0pLAorCisgICAgICAgZWRpdGluZyA9PgorICAgICAgIHF3X3ByaW1hcnkoImFwcGx5aW5nIiwgJ0VkaXQgdGhlIGZvbGxvd2luZyBmaWxlczonLCAnJywKKwkJICBbe3R5cGUgPT4gJ3RhYmxlJywKKwkJICAgIHRleHQgPT4gJ1Jlc3VsdHM6JywKKwkJICAgIHZhbHVlcyA9PiBzdWIgeyByZXR1cm4gW1xAY2FwdHVyZXNdfSwKKwkJICAgfV0sW10sW10pCisgICAgICB9Cit9CisKK3N1YiBjYXB0dXJlIHsKKyAgICBteSAkY21kID0gam9pbigiICIsQF8pOworICAgIG15ICRyZXN1bHRzID0gIlJ1bm5pbmc6ICRjbWRcbiI7CisgICAgbXkgQGE7CisgICAgcHJpbnQgJHJlc3VsdHM7CisgICAgb3BlbihJLCIkY21kIDI+JjF8Iik7CisgICAgd2hpbGUgKDxJPikgeworCSRyZXN1bHRzIC49ICRfOworCXByaW50ICRfOworCWlmICgkY2FwZmlsdCkgeworCSAgICBwcmludCAiY2FwZmlsdDogJGNhcGZpbHRcbiI7CisJICAgIEBhID0gLyRjYXBmaWx0LzsKKwkgICAgcHJpbnQgIiAgY2FwZmlsdDogQGFcbiI7CisJICAgIHB1c2ggQGNhcHR1cmVzLCBbQGFdOworCX0KKyAgICB9CisgICAgY2xvc2UoSSk7CisgICAgJHJlc3VsdCA9ICQ/ID4+IDg7CisgICAgJHJlc3VsdHMgLj0gIlJFU1VMVDogIiAuICgoJHJlc3VsdCkgPyAiRkFJTCIgOiAiU1VDQ0VTUyIpIC4gIigkcmVzdWx0KVxuIjsKKyAgICByZXR1cm4gJHJlc3VsdHM7Cit9CisKK3N1YiBjYXB0dXJlZGlyIHsKKyAgICBteSAkZGlyID0gc2hpZnQ7CisgICAgJGRpciAuPSAiLyIgaWYgKCRkaXIgIX4gL1wvJC8pOworICAgIG15ICRiYXNlZGlyID0gcXdwYXJhbSgnYmFzZWRpcicpOworICAgICRiYXNlZGlyIC49ICIvIiBpZiAoJGJhc2VkaXIgIX4gL1wvJC8pOworICAgIG15ICRvbGRkaXIgPSBnZXRjd2QoKTsKKyAgICBteSAkbmV3ZGlyID0gIiRiYXNlZGlyJGRpciIgLiBxd3BhcmFtKCdzdWJkaXInKTsKKyAgICBteSAkcmVzID0gImNoYW5naW5nIHRvOiAkbmV3ZGlyXG4iOworICAgIHByaW50ICRyZXM7CisgICAgY2hkaXIoJG5ld2Rpcik7CisgICAgJHJlcyAuPSBjYXB0dXJlKEBfKTsKKyAgICBjaGRpcigkb2xkZGlyKTsKKyAgICByZXR1cm4gJHJlczsKK30KKworc3ViIGdldF9jb2RlZGlyc19zdHIoKSB7CisgICAgbXkgJHJlcyA9ICIiOworICAgIGZvcmVhY2ggbXkgJGsgKEBjb2RldHJlZXMpIHsKKwluZXh0IGlmICghcXdwYXJhbSgkaykpOworCSRyZXMgLj0gIiAkb3B0c3snZCd9JGNvZGV0cmVlc3ska30iOworICAgIH0KKyAgICAkcmVzID1+IHMvXiAvLzsKKyAgICByZXR1cm4gJHJlczsKK30KKworc3ViIGNhcHR1cmVlYWNoZGlyIHsKKyAgICBteSAkb3V0OworICAgICVjYXB0dXJlcyA9ICgpOworICAgIGZvcmVhY2ggbXkgJGsgKEBjb2RldHJlZXMpIHsKKwluZXh0IGlmICghcXdwYXJhbSgkaykpOworCSRvdXQgLj0gIiRrOlxuIjsKKwkkb3V0IC49IGNhcHR1cmVkaXIoJGNvZGV0cmVlc3ska30sIEBfKSAuICJcbiI7CisJaWYgKCQjY2FwdHVyZXMgPiAtMSkgeworCSAgICBAeyRjYXB0dXJlc3ska319ID0gQGNhcHR1cmVzOworCSAgICBAY2FwdHVyZXMgPSAoKTsKKwl9CisgICAgfQorICAgIHJldHVybiAkb3V0OworfQorCitzdWIgZG9kaXIgeworICAgIG15ICR0ZXh0ID0gc2hpZnQ7CisgICAgcmV0dXJuCisgICAgICBbe3R5cGUgPT4gJ3RhYmxlJywKKwl0ZXh0ID0+ICR0ZXh0LAorCXZhbHVlcyA9PiBbW3N1YiB7CisJCQlteSBAdGFiOworCQkJZm9yZWFjaCBteSAkayAoQGNvZGV0cmVlcykgeworCQkJICAgIG5leHQgaWYgKCFxd3BhcmFtKCRrKSk7CisJCQkgICAgcHVzaCBAdGFiLCBbJGssCisJCQkJCXF3X3BhcmFncmFwaCgiciRrIiwiIiwgCisJCQkJCQkgICAgIHByZWZvcm1hdHRlZCA9PiAxLAorCQkJCQkJICAgICB3aWR0aCA9PiA4MCwKKwkJCQkJCSAgICAgaGVpZ2h0ID0+IDIwLAorCQkJCQkJICAgICB2YWx1ZXMgPT4gCisJCQkJCQkgICAgIFtbc3ViIHsgJF8tPlswXSgkayl9LCAKKwkJCQkJCSAgICAgICBAX11dKV07CisJCQl9CisJCQlyZXR1cm4gW1xAdGFiXTsKKwkJICAgIH0sIEBfXV0KKyAgICAgICB9XTsKK30KZGlmZiAtLWdpdCBhL2Rpc3Qvc2NoZW1hLXNubXB0cmFwZC5zcWwgYi9kaXN0L3NjaGVtYS1zbm1wdHJhcGQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0OTZmMTcKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L3NjaGVtYS1zbm1wdHJhcGQuc3FsCkBAIC0wLDAgKzEsMzEgQEAKK1VTRSBuZXRfc25tcDsKK0RST1AgVEFCTEUgSUYgRVhJU1RTIG5vdGlmaWNhdGlvbnM7CitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgbm90aWZpY2F0aW9uc2AgKAorICBgdHJhcF9pZGAgaW50KDExKSB1bnNpZ25lZCBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwKKyAgYGRhdGVfdGltZWAgZGF0ZXRpbWUgTk9UIE5VTEwsCisgIGBob3N0YCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwsCisgIGBhdXRoYCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwsCisgIGB0eXBlYCBFTlVNKCdnZXQnLCdnZXRuZXh0JywncmVzcG9uc2UnLCdzZXQnLCd0cmFwJywnZ2V0YnVsaycsJ2luZm9ybScsJ3RyYXAyJywncmVwb3J0JykgTk9UIE5VTEwsCisgIGB2ZXJzaW9uYCBFTlVNKCd2MScsJ3YyYycsICd1bnN1cHBvcnRlZCh2MnUpJywndjMnKSBOT1QgTlVMTCwKKyAgYHJlcXVlc3RfaWRgIGludCgxMSkgdW5zaWduZWQgTk9UIE5VTEwsCisgIGBzbm1wVHJhcE9JRGAgdmFyY2hhcigxMDI0KSBOT1QgTlVMTCwKKyAgYHRyYW5zcG9ydGAgdmFyY2hhcigyNTUpIE5PVCBOVUxMLAorICBgc2VjdXJpdHlfbW9kZWxgIEVOVU0oJ3NubXBWMScsJ3NubXBWMmMnLCdVU00nKSBOT1QgTlVMTCwKKyAgYHYzbXNnaWRgIGludCgxMSkgdW5zaWduZWQsCisgIGB2M3NlY3VyaXR5X2xldmVsYCBFTlVNKCdub0F1dGhOb1ByaXYnLCdhdXRoTm9Qcml2JywnYXV0aFByaXYnKSwKKyAgYHYzY29udGV4dF9uYW1lYCB2YXJjaGFyKDMyKSwKKyAgYHYzY29udGV4dF9lbmdpbmVgIHZhcmNoYXIoNjQpLAorICBgdjNzZWN1cml0eV9uYW1lYCB2YXJjaGFyKDMyKSwKKyAgYHYzc2VjdXJpdHlfZW5naW5lYCB2YXJjaGFyKDY0KSwKKyAgUFJJTUFSWSBLRVkgIChgdHJhcF9pZGApCispIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPWxhdGluMTsKKworCitEUk9QIFRBQkxFIElGIEVYSVNUUyB2YXJiaW5kczsKK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGB2YXJiaW5kc2AgKAorICBgdHJhcF9pZGAgaW50KDExKSB1bnNpZ25lZCBOT1QgTlVMTCBkZWZhdWx0ICcwJywKKyAgYG9pZGAgdmFyY2hhcigxMDI0KSBOT1QgTlVMTCwKKyAgYHR5cGVgIEVOVU0oJ2Jvb2xlYW4nLCdpbnRlZ2VyJywnYml0Jywnb2N0ZXQnLCdudWxsJywnb2lkJywnaXBhZGRyZXNzJywnY291bnRlcicsJ3Vuc2lnbmVkJywndGltZXRpY2tzJywnb3BhcXVlJywndW51c2VkMScsJ2NvdW50ZXI2NCcsJ3VudXNlZDInKSBOT1QgTlVMTCwKKyAgYHZhbHVlYCBibG9iIE5PVCBOVUxMLAorICBLRVkgYHRyYXBfaWRgIChgdHJhcF9pZGApCispIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPWxhdGluMTsKZGlmZiAtLWdpdCBhL2Rpc3Qvc3ZudXAgYi9kaXN0L3N2bnVwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQwMzUzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L3N2bnVwCkBAIC0wLDAgKzEsMTMwIEBACisjIS9iaW4vc2gKKyMKKyMgJElkOiBjdnN1cCAxNTc4OCAyMDA3LTAxLTI0IDEzOjQ5OjM4WiBkdHMxMiAkCisjCitUQUc9CitXTz0wCitERVNUPQorVE1QRElSPS90bXAKKworaWYgWyAieCQxIiA9ICJ4LXUiIF07IHRoZW4KKyAgICBERVNUPSQyCisgICAgc2hpZnQgMgorCisgICAgIyBnbnUgdGFyIChhcyBvZiAxLjE1LjEpIGlzIHVuYWJsZSB0byBjcmVhdGUgcG9ydGFibGUgdGFyIGFyY2hpdmVzLCAKKyAgICAjIGVzcGVjaWFsbHkgaWYgbG9uZyBmaWxlIG5hbWVzICg+MTAwIGNoYXIpIGFyZSBwcmVzZW50LgorICAgICMgc3RhciBpcyBhIGJldHRlciByZXBsYWNlbWVudC4KKyAgICBpZiBbIC14IC91c3IvYmluL3N0YXIgXTsgdGhlbgorICAgICAgICBUQVI9Jy91c3IvYmluL3N0YXIgLUh1c3RhciAtbm90IC1wYXQ9Ki8uc3ZuLyogLWMgLWYnCisgICAgZWxpZiBbIC14IC9iaW4vdGFyIF07IHRoZW4KKyAgICAgICAgVEFSPSIvYmluL3RhciAtLWV4Y2x1ZGU9LnN2biAtYyAtZiIKKyAgICAgICAgZWNobyAid2FybmluZzogc3RhciBub3QgYXZhaWxhYmxlLCB1c2luZyAobGVzcyBwb3J0YWJsZSkgdGFyLi4uIgorICAgIGVsc2UKKyAgICAgICAgZWNobyAibmVpdGhlciAvdXNyL2Jpbi9zdGFyIG5vciAvYmluL3RhciBmb3VuZC4iCisgICAgICAgIGV4aXQKKyAgICBmaQorZmkKKworaWYgWyAkIyAtZXEgMCBdOyB0aGVuCisgICAgRElSPSRQV0QKK2Vsc2UKKyAgICBpZiBbICQjIC1uZSAxIF07IHRoZW4KKyAgICAgICAgZWNobyAidXNhZ2U6ICQwIDx3b3JraW5nIGRpcmVjdG9yeT4iCisgICAgICAgIGV4aXQKKyAgICBmaQorICAgIERJUj0kMQorZmkKKworaWYgWyAteiAke0RJUiMjKi99IF07dGhlbgorICAgRElSPSR7RElSJS8qfQorZmkKK1NVQkQ9JHtESVIjIyovfQorUEFSRU5UPSR7RElSJSokU1VCRH0KKyNlY2hvICIkRElSID0gJFBBUkVOVCArICRTVUJEIgorCitpZiBbICEgLWQgJERJUiBdOyB0aGVuCisgICAgZWNobyAibm8gc3VjaCBkaXJlY3RvcnkgJyRESVInIgorICAgIGV4aXQKK2ZpCisKK2lmIFsgISAtZCAkRElSLy5zdm4gXTsgdGhlbgorICAgIGVjaG8gIickRElSJyBoYXMgbm8gLnN2biBkaXJlY3RvcnkhIgorICAgIGV4aXQKK2ZpCisKK2lmIFsgISAtZiAkRElSLy5zdm4vZW50cmllcyBdOyB0aGVuCisgICAgZWNobyAiJyRESVInIGhhcyBubyAuc3ZuL2VudHJpZXMhIgorICAgIGV4aXQKK2ZpCisKK1NWTlVSTD1gc3ZuIGluZm8gJERJUnwgZ3JlcCBVUkx8Y3V0IC1mMiAtZCAiICJgCitTVk5UTEQ9YGVjaG8gJFNWTlVSTCB8IHNlZCAnczouKnN2bnJvb3QvbmV0LXNubXAvXChbXi9dKlwpLio6XDE6J2AKK2lmIFsgIngkU1ZOVExEIiA9ICJ4dHJ1bmsiIF07IHRoZW4KKyAgIFRBRz0ibWFpbiIKK2Vsc2UKKyAgIFRBRz1gZWNobyAkU1ZOVVJMIHwgc2VkICdzOi4qc3Zucm9vdC9uZXQtc25tcC9bXi9dKi9cKFteL10qXCkuKjpcMTonYAorZmkKKworaWYgWyAhIC16ICRERVNUIF07IHRoZW4KKyAgICBpZiBbIC16ICRUQUcgXTsgdGhlbgorICAgICAgICBlY2hvICJubyBUQUcgZm91bmQgaW4gJERJUiEiCisgICAgICAgIGV4aXQgMQorICAgIGZpCitmaQorCitDT01NQU5EPSJzdm4gdXBkYXRlIC1xICRTVk5VUkwgJERJUiIKKworaWYgWyAhIC13ICRESVIvLnN2biBdOyB0aGVuCisgICAgaWYgWyAtTyAkRElSLy5zdm4gXTsgdGhlbgorICAgICAgICBXTz0xCisgICAgICAgIGVjaG8gIk1ha2luZyAkRElSIHdyaXRhYmxlIgorICAgICAgICBjaG1vZCAtUiB1K3cgJERJUgorICAgIGZpCitmaQorCitlY2hvICJVcGRhdGluZyBkaXJlY3RvcnkgJERJUiBmcm9tICRUQUcuLi4iCitlY2hvICIkQ09NTUFORCIKKworJENPTU1BTkQKK3JjPSQ/CitpZiBbICRyYyAtbmUgMCBdOyB0aGVuCisgICAgZWNobyAic3ZuIGNvbW1hbmQgcmV0dXJuZWQgJD8iCitmaQorCitpZiBbICRXTyAtZXEgMSBdOyB0aGVuCisgICAgZWNobyAiTWFraW5nICRESVIgcmVhZC1vbmx5IgorICAgIGNobW9kIC1SIGEtdyAkRElSCitmaQorCitpZiBbICEgLXogJERFU1QgXTsgdGhlbgorICBpZiBbICRyYyAtbmUgMCBdOyB0aGVuCisgICAgZWNobyAic2tpcHBpbmcgdXBsb2FkIGR1ZSB0byByYyAkcmMgZnJvbSBzdm4gY29tbWFuZCIKKyAgICBleGl0ICRyYworICBlbHNlCisgICAgY2QgJERJUi8uLgorICAgICNlY2hvICRQV0QKKyAgICBEQVRFPWBkYXRlICslWSVtJWRfJUglTWAKKyAgICBTT1VSQ0U9bmV0LXNubXAtc3ZuLSRUQUciXyREQVRFIgorICAgICRUQVIgJFRNUERJUi8kU09VUkNFLnRhciAkU1VCRAorICAgIHJjPSQ/CisgICAgaWYgWyAkcmMgLW5lIDAgXTsgdGhlbgorICAgICAgZWNobyAic2tpcHBpbmcgdXBsb2FkIGR1ZSB0byByYyAkcmMgZnJvbSB0YXIgY29tbWFuZCIKKyAgICAgIHJtIC1mICRUTVBESVIvJFNPVVJDRS50YXIuZ3oKKyAgICAgIGV4aXQgJHJjCisgICAgZmkKKyAgICBnemlwIC1mIC0tYmVzdCAkVE1QRElSLyRTT1VSQ0UudGFyCisgICAgcmM9JD8KKyAgICBpZiBbICRyYyAtbmUgMCBdOyB0aGVuCisgICAgICBlY2hvICJza2lwcGluZyB1cGxvYWQgZHVlIHRvIHJjICRyYyBmcm9tIGd6aXAgY29tbWFuZCIKKyAgICAgIHJtIC1mICRUTVBESVIvJFNPVVJDRS50YXIuZ3oKKyAgICAgIGV4aXQgJHJjCisgICAgZmkKKyAgICBzY3AgJFRNUERJUi8kU09VUkNFLnRhci5neiAkREVTVAorICAgIHJjPSQ/CisgICAgaWYgWyAkcmMgLW5lIDAgXTsgdGhlbgorICAgICAgZWNobyAid2FybmluZzogcmMgJHJjIGZyb20gc2NwIGNvbW1hbmQgKHRhcmJhbGwgaW4gJFRNUERJUikiCisgICAgZWxzZQorICAgICAgcm0gLWYgJFRNUERJUi8kU09VUkNFLnRhci5negorICAgIGZpCisgIGZpCitmaQpkaWZmIC0tZ2l0IGEvZG94eWdlbi5jb25mIGIvZG94eWdlbi5jb25mCmluZGV4IDllMGVmNDUuLjI5ODI0YjEgMTAwNjQ0Ci0tLSBhL2RveHlnZW4uY29uZgorKysgYi9kb3h5Z2VuLmNvbmYKQEAgLTIzLDcgKzIzLDcgQEAKICMgVGhpcyBjb3VsZCBiZSBoYW5keSBmb3IgYXJjaGl2aW5nIHRoZSBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBvciAKICMgaWYgc29tZSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGlzIHVzZWQuCiAKLVBST0pFQ1RfTlVNQkVSICAgICAgICAgPSA1LjQuMy5wcmUxCitQUk9KRUNUX05VTUJFUiAgICAgICAgID0gJChWRVJTSU9OKQogCiAjIFRoZSBPVVRQVVRfRElSRUNUT1JZIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgCiAjIGJhc2UgcGF0aCB3aGVyZSB0aGUgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gd2lsbCBiZSBwdXQuIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAppbmRleCA2OTE1MWE4Li44NmZhMWM1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaApAQCAtMjA3LDEyICsyMDcsMTMgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICoKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZXMpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKgogICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKGNvbnN0IGNoYXIgKm5hbWUsIE5ldHNubXBfTm9kZV9IYW5kbGVyKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfYWNjZXNzX21ldGhvZCwgb2lkICpyZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwgaW50IG1vZGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyX2FjY2Vzc19tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vZGVzKTsKIAogICAgIG5ldHNubXBfZGVsZWdhdGVkX2NhY2hlCiAgICAgICAgICpuZXRzbm1wX2NyZWF0ZV9kZWxlZ2F0ZWRfY2FjaGUobmV0c25tcF9taWJfaGFuZGxlciAqLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCmluZGV4IGU5ZTI4NDUuLjQ0ZmU0MmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKQEAgLTM1LDE0ICszNSwxNiBAQAogfTsKIAogc3RydWN0IHJlZ2lzdGVyX3BhcmFtZXRlcnMgewotICAgIG9pZCAgICAgICAgICAgICpuYW1lOwotICAgIHNpemVfdCAgICAgICAgICBuYW1lbGVuOwotICAgIGludCAgICAgICAgICAgICBwcmlvcml0eTsKLSAgICBpbnQgICAgICAgICAgICAgcmFuZ2Vfc3ViaWQ7Ci0gICAgb2lkICAgICAgICAgICAgIHJhbmdlX3Vib3VuZDsKLSAgICBpbnQgICAgICAgICAgICAgdGltZW91dDsKLSAgICB1X2NoYXIgICAgICAgICAgZmxhZ3M7Ci0gICAgY29uc3QgY2hhciAgICAgKmNvbnRleHROYW1lOworICAgIG9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgKm5hbWU7CisgICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWxlbjsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9zdWJpZDsKKyAgICBvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZV91Ym91bmQ7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDsKKyAgICB1X2NoYXIgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczsKKyAgICBjb25zdCBjaGFyICAgICAgICAgICAgICAgICAgICpjb250ZXh0TmFtZTsKKyAgICBuZXRzbm1wX3Nlc3Npb24gICAgICAgICAgICAgICpzZXNzaW9uOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CiB9OwogCiB0eXBlZGVmIHN0cnVjdCBzdWJ0cmVlX2NvbnRleHRfY2FjaGVfcyB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2MjZlNGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaApAQCAtMCwwICsxLDI4IEBACisjaWZuZGVmIEFHRU5UX1NZU09SVEFCTEVfSAorI2RlZmluZSBBR0VOVF9TWVNPUlRBQkxFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCitzdHJ1Y3Qgc3lzT1JUYWJsZTsKKworZXh0ZXJuIHZvaWQgICAgIGluaXRfYWdlbnRfc3lzT1JUYWJsZSh2b2lkKTsKK2V4dGVybiB2b2lkICAgICBzaHV0ZG93bl9hZ2VudF9zeXNPUlRhYmxlKHZvaWQpOworCitleHRlcm4gdm9pZCAgICAgbmV0c25tcF9zeXNPUlRhYmxlX2ZvcmVhY2godm9pZCAoKikoY29uc3Qgc3RydWN0IHN5c09SVGFibGUqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKik7CisKK2V4dGVybiBpbnQgICAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKik7CitleHRlcm4gaW50ICAgICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqLCBzaXplX3QpOworZXh0ZXJuIGludCAgICAgIHJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhvaWQgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqKTsKK2V4dGVybiBpbnQgICAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhvaWQgKiwgc2l6ZV90LCBuZXRzbm1wX3Nlc3Npb24gKik7CitleHRlcm4gdm9pZCAgICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX2J5X3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICopOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogQUdFTlRfU1lTT1JUQUJMRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCmluZGV4IGViYzJiMDYuLjNlZjRjNmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCkBAIC0xNCw3ICsxNCwxMSBAQAogdm9pZCAgICAgICAgICAgIHNlbmRfZWFzeV90cmFwKGludCwgaW50KTsKIHZvaWQgICAgICAgICAgICBzZW5kX3RyYXBfcGR1KG5ldHNubXBfcGR1ICopOwogdm9pZCAgICAgICAgICAgIHNlbmRfdjJ0cmFwKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKTsKK3ZvaWQgICAgICAgICAgICBzZW5kX3YzdHJhcChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMsIGNoYXIgKmNvbnRleHQpOwogdm9pZCAgICAgICAgICAgIHNlbmRfdHJhcF92YXJzKGludCwgaW50LCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKik7Cit2b2lkICAgICAgICAgICAgc2VuZF90cmFwX3ZhcnNfd2l0aF9jb250ZXh0KGludCB0cmFwLCBpbnQgc3BlY2lmaWMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzLCAKKwkJCQkJCQkJCQkgIGNoYXIgKmNvbnRleHQpOwogdm9pZCAgICAgICAgICAgIHNlbmRfZW50ZXJwcmlzZV90cmFwX3ZhcnMoaW50IHRyYXAsIGludCBzcGVjaWZpYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIGVudGVycHJpc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50ZXJwcmlzZV9sZW5ndGgsCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCmluZGV4IGU1YWM2NTMuLmIwMDIxNTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCkBAIC0xLDMgKzEsMTMgQEAKKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLwogI2lmbmRlZiBORVRTTk1QX0NBQ0hFX0hBTkRMRVJfSAogI2RlZmluZSBORVRTTk1QX0NBQ0hFX0hBTkRMRVJfSAogCkBAIC03NCw3ICs4NCw3IEBACiAgICAgaW50ICAgICAgICAgICAgbmV0c25tcF9pc19jYWNoZV92YWxpZCggICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKik7CiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcihpbnQsIE5ldHNubXBDYWNoZUxvYWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcENhY2hlRnJlZSAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQqLCBpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQqLCBpbnQpOwogICAgIGludCAgIG5ldHNubXBfcmVnaXN0ZXJfY2FjaGVfaGFuZGxlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIE5ldHNubXBDYWNoZUxvYWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQ2FjaGVGcmVlICopOwpAQCAtODQsMTEgKzk0LDEzIEBACiAgICAgbmV0c25tcF9jYWNoZSAqCiAgICAgbmV0c25tcF9jYWNoZV9jcmVhdGUoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcENhY2hlRnJlZSAqIGZyZWVfaG9vaywKLSAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbik7CisgICAgaW50IG5ldHNubXBfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICpjYWNoZSk7CisKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICoKICAgICBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0KG5ldHNubXBfY2FjaGUqIGNhY2hlKTsKIAotICAgIG5ldHNubXBfY2FjaGUgKiBuZXRzbm1wX2NhY2hlX2ZpbmRfYnlfb2lkKG9pZCAqIHJvb3RvaWQsCisgICAgbmV0c25tcF9jYWNoZSAqIG5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWQoY29uc3Qgb2lkICogcm9vdG9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm9vdG9pZF9sZW4pOwogCiAgICAgdW5zaWduZWQgaW50IG5ldHNubXBfY2FjaGVfdGltZXJfc3RhcnQobmV0c25tcF9jYWNoZSAqY2FjaGUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCmluZGV4IGFhYmI3OTIuLjg2Yzc0ZDQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNkZWZpbmUgTkVUU05NUF9EU19BR0VOVF9QRVJMX0lOSVRfRklMRSAgICA0ICAgIC8qIHVzZWQgYnkgZW1iZWRkZWQgcGVybCAqLwogI2RlZmluZSBORVRTTk1QX0RTX1NNVVhfU09DS0VUICAgIDUgICAgIC8qIGlwOnBvcnQgc29ja2V0IGFkZHIgKi8KICNkZWZpbmUgTkVUU05NUF9EU19OT1RJRl9MT0dfQ1RYICA2ICAgICAvKiAiIiB8ICJzbm1wdHJhcGQiICovCisjZGVmaW5lIE5FVFNOTVBfRFNfQUdFTlRfVFJBUF9BRERSICAgICAgNyAgICAgLyogdXNlZCBhcyB2MSB0cmFwIGFnZW50IGFkZHJlc3MgKi8KIAogLyoKICAqIGludGVnZXJzIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDc4ODBjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmgKQEAgLTAsMCArMSw5MyBAQAordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9mc3lzX2luZm9fcyBuZXRzbm1wX2ZzeXNfaW5mbzsKKworI2RlZmluZSBfTkVUU05NUF9GU19UWVBFX1NLSVBfQklUICAgMHgyMDAwCisjZGVmaW5lIF9ORVRTTk1QX0ZTX1RZUEVfTE9DQUwgICAgICAweDEwMDAKKworICAgLyoKKyAgICAqIEVudW1lcmF0aW9uIGZyb20gSE9TVC1SRVNPVVJDRVMtVFlQRVMgbWliCisgICAgKi8KKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX09USEVSCSAgIDEKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX1VOS05PV04JICAgMgorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfQkVSS0VMRVkgICAzCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9TWVNWCSAgIDQKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0ZBVAkgICA1CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9IUEZTCSAgIDYKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0hGUwkgICA3CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9NRlMJICAgOAorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfTlRGUwkgICA5CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9WTk9ERQkgICAxMAorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfSkZTCSAgIDExCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9JU085NjYwCSAgIDEyCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9ST0NLUklER0UgIDEzCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9ORlMJICAgMTQKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX05FVFdBUkUJICAgMTUKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0FGUwkgICAxNgorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfREZTCSAgIDE3CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9BUFBMRVNIQVJFIDE4CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9SRlMJICAgMTkKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0RHQ1MJICAgMjAKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0JPT1RGUwkgICAyMQorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfRkFUMzIJICAgMjIKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0VYVDIJICAgMjMKKworICAgLyoKKyAgICAqIEFkZGl0aW9uYWwgZW51bWVyYXRpb25pcyAtIG5vdCBsaXN0ZWQgaW4gdGhhdCBNSUIKKyAgICAqLworI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfSUdOT1JFCSAgIDEgfCBfTkVUU05NUF9GU19UWVBFX0xPQ0FMIHwgX05FVFNOTVBfRlNfVFlQRV9TS0lQX0JJVAorCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9QUk9DCSAgIDIgfCBfTkVUU05NUF9GU19UWVBFX0xPQ0FMIHwgX05FVFNOTVBfRlNfVFlQRV9TS0lQX0JJVAorCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9ERVZQVFMJICAgMyB8IF9ORVRTTk1QX0ZTX1RZUEVfTE9DQUwgfCBfTkVUU05NUF9GU19UWVBFX1NLSVBfQklUCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9TWVNGUwkgICA0IHwgX05FVFNOTVBfRlNfVFlQRV9MT0NBTCB8IF9ORVRTTk1QX0ZTX1RZUEVfU0tJUF9CSVQKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX1RNUEZTCSAgIDUgfCBfTkVUU05NUF9GU19UWVBFX0xPQ0FMCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9VU0JGUwkgICA2IHwgX05FVFNOTVBfRlNfVFlQRV9MT0NBTAorCisjZGVmaW5lIE5FVFNOTVBfRlNfRkxBR19BQ1RJVkUgICAweDAxCisjZGVmaW5lIE5FVFNOTVBfRlNfRkxBR19SRU1PVEUgICAweDAyCisjZGVmaW5lIE5FVFNOTVBfRlNfRkxBR19ST05MWSAgICAweDA0CisjZGVmaW5lIE5FVFNOTVBfRlNfRkxBR19CT09UQUJMRSAweDA4CisjZGVmaW5lIE5FVFNOTVBfRlNfRkxBR19SRU1PVkUgICAweDEwCisKKyNkZWZpbmUgTkVUU05NUF9GU19GSU5EX0NSRUFURSAgICAgMSAgIC8qIG9yIHVzZSBvbmUgb2YgdGhlIHR5cGUgdmFsdWVzICovCisjZGVmaW5lIE5FVFNOTVBfRlNfRklORF9FWElTVCAgICAgIDAKKworc3RydWN0IG5ldHNubXBfZnN5c19pbmZvX3MgeworICAgICBuZXRzbm1wX2luZGV4ICBpZHg7CisgIC8qIGludCAgaWR4OyAqLworIAorICAgICBjaGFyIHBhdGhbICBTTk1QX01BWFBBVEgrMV07CisgICAgIGNoYXIgZGV2aWNlW1NOTVBfTUFYUEFUSCsxXTsKKyAgICAgaW50ICB0eXBlOworCisgICAgIGxvbmcgc2l6ZTsKKyAgICAgbG9uZyB1c2VkOworICAgICBsb25nIGF2YWlsOworICAgICBsb25nIHVuaXRzOworCisgICAgIGxvbmcgaW51bXNfdG90YWw7CisgICAgIGxvbmcgaW51bXNfYXZhaWw7CisKKyAgICAgbG9uZyBmbGFnczsKKworICAgICBuZXRzbm1wX2ZzeXNfaW5mbyAqbmV4dDsKK307CisKKworICAgIC8qCisgICAgICogUG9zc2libHkgbm90IGFsbCBuZWVkZWQgPz8KKyAgICAgKi8KK25ldHNubXBfZnN5c19pbmZvICpuZXRzbm1wX2ZzeXNfZ2V0X2ZpcnN0KCB2b2lkICk7CituZXRzbm1wX2ZzeXNfaW5mbyAqbmV0c25tcF9mc3lzX2dldF9uZXh0KCBuZXRzbm1wX2ZzeXNfaW5mbyogKTsKK25ldHNubXBfZnN5c19pbmZvICpuZXRzbm1wX2ZzeXNfZ2V0X2J5SWR4KCAgaW50LCAgIGludCApOworbmV0c25tcF9mc3lzX2luZm8gKm5ldHNubXBfZnN5c19nZXRfbmV4dF9ieUlkeChpbnQsaW50ICk7CisKK25ldHNubXBfZnN5c19pbmZvICpuZXRzbm1wX2ZzeXNfYnlfZGV2aWNlKCAgY2hhciosIGludCApOworbmV0c25tcF9mc3lzX2luZm8gKm5ldHNubXBfZnN5c19ieV9wYXRoKCAgICBjaGFyKiwgaW50ICk7CisKK25ldHNubXBfY2FjaGUgKm5ldHNubXBfZnN5c19nZXRfY2FjaGUoIHZvaWQgKTsKK2ludCAgbmV0c25tcF9mc3lzX2xvYWQoIG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICpkYXRhICk7Cit2b2lkIG5ldHNubXBfZnN5c19mcmVlKCBuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqZGF0YSApOworCit1bnNpZ25lZCBpbnQgbmV0c25tcF9mc3lzX3NpemUoIG5ldHNubXBfZnN5c19pbmZvKiApOwordW5zaWduZWQgaW50IG5ldHNubXBfZnN5c191c2VkKCBuZXRzbm1wX2ZzeXNfaW5mbyogKTsKK3Vuc2lnbmVkIGludCBuZXRzbm1wX2ZzeXNfYXZhaWwobmV0c25tcF9mc3lzX2luZm8qICk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL3NlbnNvcnMuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YTEwYmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL3NlbnNvcnMuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgLSBTZW5zb3JzIG1vZHVsZQorICoKKyAqIFB1YmxpYyBpbnRlcmZhY2UKKyAqLworCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfT1RIRVIgICAgICAgMQorI2RlZmluZSBORVRTTk1QX1NFTlNPUl9UWVBFX1ZPTFRBR0VfQUMgIDMKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDICA0CisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfQ1VSUkVOVCAgICAgNQorI2RlZmluZSBORVRTTk1QX1NFTlNPUl9UWVBFX1BPV0VSICAgICAgIDYKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfVFlQRV9GUkVRVUVOQ1kgICA3CisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfVEVNUEVSQVRVUkUgOAorI2RlZmluZSBORVRTTk1QX1NFTlNPUl9UWVBFX0hVTUlESVRZICAgIDkKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfVFlQRV9SUE0gICAgICAgIDEwCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVU1FICAgICAxMQorI2RlZmluZSBORVRTTk1QX1NFTlNPUl9UWVBFX0JPT0xFQU4gICAgMTIKKworCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZMQUdfQUNUSVZFICAgICAweDAxCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZMQUdfTkFWQUlMICAgICAweDAyCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZMQUdfQlJPS0VOICAgICAweDA0CisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZMQUdfRElTQUJMRSAgICAweDA4CisKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfTUFTS19TVEFUVVMgICAgIDB4MDYgIC8qIE5BVkFJTHxCUk9LRU4gKi8KKworCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZJTkRfQ1JFQVRFICAgICAxICAgLyogb3IgdXNlIG9uZSBvZiB0aGUgc2Vuc29yIHR5cGUgdmFsdWVzICovCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZJTkRfRVhJU1QgICAgICAwCisKK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfc2Vuc29yX2luZm9fcyBuZXRzbm1wX3NlbnNvcl9pbmZvOworc3RydWN0IG5ldHNubXBfc2Vuc29yX2luZm9fcyB7CisKKyAgICBuZXRzbm1wX2luZGV4ICBpZHg7CisgICAgLyogaW50ICBpZHg7ICovCisgICAgY2hhciAgbmFtZVsyNTZdOworICAgIAorICAgIGludCAgIHR5cGU7CisgICAgZmxvYXQgdmFsdWU7CisgICAgY2hhciAgZGVzY3JbMjU2XTsKKyAgICBsb25nICBmbGFnczsKK307CisKK25ldHNubXBfY29udGFpbmVyICAgKmdldF9zZW5zb3JfY29udGFpbmVyKCB2b2lkICk7CituZXRzbm1wX2NhY2hlICAgICAgICpnZXRfc2Vuc29yX2NhY2hlKCB2b2lkICk7CituZXRzbm1wX3NlbnNvcl9pbmZvICpzZW5zb3JfYnlfbmFtZSggY2hhciAqLCBpbnQgKTsKK05ldHNubXBDYWNoZUxvYWQgICAgIG5ldHNubXBfc2Vuc29yX2xvYWQ7CitOZXRzbm1wQ2FjaGVGcmVlICAgICBuZXRzbm1wX3NlbnNvcl9mcmVlOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCmluZGV4IDBhMDJjMjEuLmVmYzhkZDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKQEAgLTIwLDggKzIwLDkgQEAKICAqICogaGF2ZSB0byBjaGVjayB0aGUgb2lkIGF0IGFsbC4gIEp1c3QgYW5zd2VyLgogICovCiAKLWludCAgICAgICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICogcmVnaW5mbyk7CisKIGludCAgICAgICAgICAgIAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW5zdGFuY2UobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbyk7CiAKQEAgLTI5LDExMSArMzAsMTAzIEBACiAKIG5ldHNubXBfbWliX2hhbmRsZXIgKm5ldHNubXBfZ2V0X2luc3RhbmNlX2hhbmRsZXIodm9pZCk7CiAKLWludCAgICAgICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN1YmhhbmRsZXIpOwotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIpOwotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZShjb25zdCBjaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIpOwotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdWJoYW5kbGVyKTsKLWludCAgICAgICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlKGNvbnN0IGNoYXIgKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcik7CitpbnQKK25ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIAotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIAotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcik7CiAKIC8qIGlkZW50aWNhbCBmdW5jdGlvbnMgdGhhdCByZWdpc3RlciBhIGluIGEgcGFydGljdWxhciBjb250ZXh0ICovCi1pbnQgIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKLWludCAgbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOwotaW50ICBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKLWludCAgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LAoraW50CituZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3ViaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3ViaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKLWludCAgbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSk7CitpbnQKK25ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdWJoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKIAotaW50ICBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSk7CiAKLWludCAgbmV0c25tcF9yZWdpc3Rlcl9pbnRfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9pbnRfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOwogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKQEAgLTE0MywxMSArMTM2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKIAogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV9oZWxwZXJfaGFuZGxlcjsKKyNpZm5kZWYgTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV9sb25nX2hhbmRsZXI7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV91aW50X2hhbmRsZXI7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX2NvdW50ZXIzMl9oYW5kbGVyOworI2VuZGlmCiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX251bV9maWxlX2hhbmRsZXI7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCmluZGV4IGNmYTg1ZWYuLjM3MDlhMjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKQEAgLTIwLDYgKzIwLDcgQEAKIH0gbmV0c25tcF9zdGFzaF9jYWNoZV9kYXRhOwogCiAvKiBmdW5jdGlvbiBwcm90b3R5cGVzICovCit2b2lkIG5ldHNubXBfaW5pdF9zdGFzaF9jYWNoZV9oZWxwZXIodm9pZCk7CiBuZXRzbm1wX21pYl9oYW5kbGVyICpuZXRzbm1wX2dldF9iYXJlX3N0YXNoX2NhY2hlX2hhbmRsZXIodm9pZCk7CiBuZXRzbm1wX21pYl9oYW5kbGVyICpuZXRzbm1wX2dldF9zdGFzaF9jYWNoZV9oYW5kbGVyKHZvaWQpOwogbmV0c25tcF9taWJfaGFuZGxlciAqbmV0c25tcF9nZXRfdGltZWRfYmFyZV9zdGFzaF9jYWNoZV9oYW5kbGVyKGludCB0aW1lb3V0LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjA4NTkxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKQEAgLTAsMCArMSw2MiBAQAorI2lmbmRlZiBORVRTTk1QX1NZU09SVEFCTEVfSAorI2RlZmluZSBORVRTTk1QX1NZU09SVEFCTEVfSAorCitzdHJ1Y3Qgc3lzT1JUYWJsZSB7CisgICAgY2hhciAgICAgICAgICAgICpPUl9kZXNjcjsKKyAgICBvaWQgICAgICAgICAgICAgKk9SX29pZDsKKyAgICBzaXplX3QgICAgICAgICAgIE9SX29pZGxlbjsKKyAgICBuZXRzbm1wX3Nlc3Npb24gKk9SX3Nlc3M7CisgICAgdV9sb25nICAgICAgICAgICBPUl91cHRpbWU7Cit9OworCitzdHJ1Y3QgcmVnaXN0ZXJfc3lzT1JfcGFyYW1ldGVycyB7CisgICAgY2hhciAgICAgICAgICAgICpkZXNjcjsKKyAgICBvaWQgICAgICAgICAgICAgKm5hbWU7CisgICAgc2l6ZV90ICAgICAgICAgICBuYW1lbGVuOworfTsKKworI2RlZmluZSBTWVNfT1JUQUJMRV9SRUdJU1RFUkVEX09LICAgICAgICAgICAgICAwCisjZGVmaW5lIFNZU19PUlRBQkxFX1JFR0lTVFJBVElPTl9GQUlMRUQgICAgICAgLTEKKyNkZWZpbmUgU1lTX09SVEFCTEVfVU5SRUdJU1RFUkVEX09LICAgICAgICAgICAgMAorI2RlZmluZSBTWVNfT1JUQUJMRV9OT19TVUNIX1JFR0lTVFJBVElPTiAgICAgIC0xCisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaD4KKworI2RlZmluZSBSRUdJU1RFUl9TWVNPUl9UQUJMRSh0aGVvaWQsIGxlbiwgZGVzY3IpICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSB0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHQuT1JfZGVzY3IgPSBkZXNjcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdC5PUl9vaWQgPSB0aGVvaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0Lk9SX29pZGxlbiA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHQuT1Jfc2VzcyA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdC5PUl91cHRpbWUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1JFR19TWVNPUiwgJnQpOyBcCisgIH0gd2hpbGUoMCk7CisKKyNkZWZpbmUgUkVHSVNURVJfU1lTT1JfRU5UUlkodGhlb2lkLCBkZXNjcikgICAgICAgICAgICAgICAgICAgICBcCisgIFJFR0lTVEVSX1NZU09SX1RBQkxFKHRoZW9pZCwgc2l6ZW9mKHRoZW9pZCkgLyBzaXplb2Yob2lkKSwgICAgXAorICAgICAgICAgICAgICAgICAgICAgICBkZXNjcikKKworI2RlZmluZSBVTlJFR0lTVEVSX1NZU09SX1RBQkxFKHRoZW9pZCwgbGVuKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RydWN0IHN5c09SVGFibGUgdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHQuT1JfZGVzY3IgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0Lk9SX29pZCA9IHRoZW9pZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdC5PUl9vaWRsZW4gPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHQuT1Jfc2VzcyA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0Lk9SX3VwdGltZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SLCAmdCk7ICAgIFwKKyAgfSB3aGlsZSgwKTsKKworI2RlZmluZSBVTlJFR0lTVEVSX1NZU09SX0VOVFJZKHRoZW9pZCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgVU5SRUdJU1RFUl9TWVNPUl9UQUJMRSh0aGVvaWQsIHNpemVvZih0aGVvaWQpIC8gc2l6ZW9mKG9pZCkpCisKKyNkZWZpbmUgVU5SRUdJU1RFUl9TWVNPUl9TRVNTKHNlc3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFUV9VTlJFR19TWVNPUl9TRVNTLCAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICBzZXNzKTsKKworCisjZW5kaWYgLyogTkVUU05NUF9TWVNPUlRBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAppbmRleCAzYjhiYmMyLi44MjQ5NWVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCkBAIC05LDYgKzksMTIgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KIC8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisvKgogICogQGZpbGUgdGFibGUuaAogICoKICAqIEBhZGR0b2dyb3VwIHRhYmxlCkBAIC0xMTUsMTUgKzEyMSwxMiBAQAogICAgIG5ldHNubXBfbWliX2hhbmRsZXIKICAgICAgICAgKm5ldHNubXBfZ2V0X3RhYmxlX2hhbmRsZXIobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGFicmVxKTsKLSAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0YWJyZXEpOwotICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX2J1aWxkX29pZChuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnRhYmxlX2luZm8pOworICAgIGludCAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUoICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJyZXEpOworICAgIGludCAgIG5ldHNubXBfdW5yZWdpc3Rlcl90YWJsZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvKTsKKyAgICBpbnQgICBuZXRzbm1wX3RhYmxlX2J1aWxkX29pZCggbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgICAgICAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gICAqdGFibGVfaW5mbyk7CiAgICAgaW50ICAgICAgICAgICAgCiAgICAgICAgIG5ldHNubXBfdGFibGVfYnVpbGRfb2lkX2Zyb21faW5kZXgobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLApAQCAtMTQ3LDYgKzE1MCw4IEBACiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbwogICAgICAgICAqbmV0c25tcF9maW5kX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbyk7CisgICAgdm9pZCBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqKTsKKwogICAgIG5ldHNubXBfaW5kZXggKiBuZXRzbm1wX3RhYmxlX2luZGV4X2ZpbmRfbmV4dF9yb3cobmV0c25tcF9jb250YWluZXIgKmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGJscmVxKTsKIApAQCAtMTU4LDEzICsxNjMsOSBAQAogCiAjZGVmaW5lIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleCh0aW5mbywgdHlwZSkgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdGluZm8tPmluZGV4ZXMsIE5VTEwsIDAsICh1X2NoYXIpdHlwZSwgTlVMTCwgMCk7CiAKLSNpZiBIQVZFX1NUREFSR19ICiAgICAgdm9pZCAgICAgICAgICAgCiAgICAgICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnRpbmZvLCAuLi4pOwotI2Vsc2UKLSAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModmFfYWxpc3QpOwotI2VuZGlmCiAKICAgICBpbnQgbmV0c25tcF9jaGVja19nZXRuZXh0X3JlcGx5KG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcHJlZml4LCBzaXplX3QgcHJlZml4X2xlbiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCmluZGV4IGQ1MWFjYjEuLmRjNmJmYTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaApAQCAtNTIsNiArNTIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYnJlcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIga2V5X3R5cGUpOworICAgIGludCAgICAgICAgICAgIAorICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3VucmVnaXN0ZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbyk7CiAgICAgCiAgICAgLyoqIHJldHJpZXZlIHRoZSBjb250YWluZXIgdXNlZCBieSB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAqLwogICAgIG5ldHNubXBfY29udGFpbmVyKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAppbmRleCBjYzI2ZWI2Li43ZDhhZWVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaApAQCAtMTEzLDEyICsxMTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgICpkZWZhdWx0X3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlZmF1bHRfdmFsdWVfbGVuKTsKLSNpZiBIQVZFX1NUREFSR19ICiAgICAgdm9pZCBuZXRzbm1wX3RhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3cobmV0c25tcF90YWJsZV9kYXRhX3NldCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKLSNlbHNlCi0gICAgdm9pZCBuZXRzbm1wX3RhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3codmFfYWxpc3QpOwotI2VuZGlmCiAKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTc3LDExICsxNzMsNyBAQAogCiAgICAgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfYWRkX2luZGV4KG5ldHNubXBfdGFibGVfZGF0YV9zZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGFibGUsIHVfY2hhciB0eXBlKTsKLSNpZiBIQVZFX1NUREFSR19ICiAgICAgdm9pZCBuZXRzbm1wX3RhYmxlX3NldF9hZGRfaW5kZXhlcyhuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0c2V0LCAuLi4pOwotI2Vsc2UKLSAgICB2b2lkIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHZhX2FsaXN0KTsKLSNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAppbmRleCAyNDJiMTU5Li4yOGMwNDlkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCkBAIC04Myw5ICs4MywxMCBAQAogCiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqbmV0c25tcF9nZXRfdGRhdGFfaGFuZGxlcihuZXRzbm1wX3RkYXRhICp0YWJsZSk7CiAKLSAgICBpbnQgbmV0c25tcF90ZGF0YV9yZWdpc3RlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGRhdGEgICAgICAgICAgICAgICAgKnRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8pOworICAgIGludCBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKCAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGRhdGEgICAgICAgICAgICAgICAgICAgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyk7CisgICAgaW50IG5ldHNubXBfdGRhdGFfdW5yZWdpc3RlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvKTsKIAogICAgIG5ldHNubXBfdGRhdGEgICAgICAqbmV0c25tcF90ZGF0YV9leHRyYWN0X3RhYmxlKCAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqKTsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAgKm5ldHNubXBfdGRhdGFfZXh0cmFjdF9jb250YWluZXIobmV0c25tcF9yZXF1ZXN0X2luZm8gKik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCmluZGV4IDQzYTE5ZDcuLjNjNmQ2MDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCkBAIC04LDYgKzgsMTAgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8qKiBAaW5ncm91cCB3YXRjaGVyCisgKiAgQHsKKyAqLworCiAvKgogICogaWYgaGFuZGxlciBmbGFnIGhhcyB0aGlzIGJpdCBzZXQsIHRoZSB0aW1lc3RhbXAgd2lsbCBiZQogICogdHJlYXRlZCBhcyBhIHBvaW50ZXIgdG8gdGhlIHRpbWVzdGFtcC4gSWYgdGhpcyBiaXQgaXMKQEAgLTE2LDggKzIwLDM2IEBACiAgKi8KICNkZWZpbmUgTkVUU05NUF9XQVRDSEVSX0RJUkVDVCBNSUJfSEFORExFUl9DVVNUT00xCiAKLSNkZWZpbmUgV0FUQ0hFUl9GSVhFRF9TSVpFICAgIDB4MDEKLSNkZWZpbmUgV0FUQ0hFUl9NQVhfU0laRSAgICAgIDB4MDIKKy8qKiBUaGUgc2l6ZSBvZiB0aGUgd2F0Y2hlZCBvYmplY3QgaXMgY29uc3RhbnQuCisgKiAgQGhpZGVpbml0aWFsaXplcgorICovCisjZGVmaW5lIFdBVENIRVJfRklYRURfU0laRSAgICAgMHgwMQorLyoqIFRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHdhdGNoZWQgb2JqZWN0IGlzIHN0b3JlZCBpbiBtYXhfc2l6ZS4KKyAqICBJZiBXQVRDSEVSX1NJWkVfU1RSTEVOIGlzIHNldCB0aGVuIGl0IGlzIHN1cHBvc2VkIHRoYXQgbWF4X3NpemUgKyAxCisgKiAgYnl0ZXMgY291bGQgYmUgc3RvcmVkIGluIHRoZSBidWZmZXIuCisgKiAgQGhpZGVpbml0aWFsaXplcgorICovCisjZGVmaW5lIFdBVENIRVJfTUFYX1NJWkUgICAgICAgMHgwMgorLyoqIElmIHNldCB0aGVuIHRoZSB2YXJpYWJsZSBkYXRhX3NpemVfcCBwb2ludHMgdG8gaXMgc3VwcG9zZWQgdG8gaG9sZCB0aGUKKyAqICBjdXJyZW50IHNpemUgb2YgdGhlIHdhdGNoZWQgb2JqZWN0IGFuZCB3aWxsIGJlIHVwZGF0ZWQgb24gd3JpdGVzLgorICogIEBoaWRlaW5pdGlhbGl6ZXIKKyAqICBAc2luY2UgTmV0LVNOTVAgNS41CisgKi8KKyNkZWZpbmUgV0FUQ0hFUl9TSVpFX0lTX1BUUiAgICAweDA0CisvKiogSWYgc2V0IHRoZW4gZGF0YSBpcyBzdXBwcG9zZWQgdG8gYmUgYSB6ZXJvLXRlcm1pbmF0ZWQgY2hhcmFjdGVyIGFycmF5CisgKiAgYW5kIGJvdGggZGF0YV9zaXplIGFuZCBkYXRhX3NpemVfcCBhcmUgaWdub3JlZC4gQWRkaXRpb25hbGx5IFxcMCBpcyBhCisgKiAgZm9yYmlkZGVuIGNoYXJhY3RlciBpbiB0aGUgZGF0YSBzZXQuCisgKiAgQGhpZGVpbml0aWFsaXplcgorICogIEBzaW5jZSBOZXQtU05NUCA1LjUKKyAqLworI2RlZmluZSBXQVRDSEVSX1NJWkVfU1RSTEVOICAgIDB4MDgKKy8qKiBJZiBzZXQgdGhlbiBzaXplIGlzIGluIHVuaXRzIG9mIG9iamVjdCBpZGVudGlmaWVycy4KKyAqICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSBhbiBPSUQgYW5kIHRyYWNrcyB0aGUgT0lEX0xFTkdUSCBvZiBpdCBhcworICogIG9wcG9zZWQgdG8gaXQncyBzaXplLgorICogIEBoaWRlaW5pdGlhbGl6ZXIKKyAqICBAc2luY2UgTmV0LVNOTVAgNS41LjEKKyAqLworI2RlZmluZSBXQVRDSEVSX1NJWkVfVU5JVF9PSURTIDB4MTAKIAogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF93YXRjaGVyX2luZm9fcyB7CiAgICAgdm9pZCAgICAgKmRhdGE7CkBAIC0yNSw4ICs1NywxMSBAQAogICAgIHNpemVfdCAgICBtYXhfc2l6ZTsKICAgICB1X2NoYXIgICAgdHlwZTsKICAgICBpbnQgICAgICAgZmxhZ3M7CisgICAgc2l6ZV90ICAgKmRhdGFfc2l6ZV9wOwogfSBuZXRzbm1wX3dhdGNoZXJfaW5mbzsKIAorLyoqIEB9ICovCisKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICp3aW5mbyk7CiBpbnQgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhciggICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApAQCAtNDQsMzggKzc5LDUxIEBACiAgKi8KIAogaW50IG5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcik7CiBpbnQgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcik7CiBpbnQgbmV0c25tcF9yZWdpc3Rlcl9sb25nX3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX2ludF9zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcik7CiBpbnQgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOwogCiAjZGVmaW5lIFdBVENIRVJfSEFORExFUl9OQU1FICJ3YXRjaGVyIgogCiBuZXRzbm1wX21pYl9oYW5kbGVyICAqbmV0c25tcF9nZXRfd2F0Y2hlcl9oYW5kbGVyKHZvaWQpOwotbmV0c25tcF93YXRjaGVyX2luZm8gKm5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbyh2b2lkICosIHNpemVfdCwgdV9jaGFyLCBpbnQpOworCituZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKG5ldHNubXBfd2F0Y2hlcl9pbmZvICosIHZvaWQgKiwgc2l6ZV90LCB1X2NoYXIsIGludCk7CisKK25ldHNubXBfd2F0Y2hlcl9pbmZvICoKK25ldHNubXBfaW5pdF93YXRjaGVyX2luZm82KG5ldHNubXBfd2F0Y2hlcl9pbmZvICosCisJCQkgICB2b2lkICosIHNpemVfdCwgdV9jaGFyLCBpbnQsIHNpemVfdCwgc2l6ZV90Kik7CisKK25ldHNubXBfd2F0Y2hlcl9pbmZvICoKK25ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbyh2b2lkICosIHNpemVfdCwgdV9jaGFyLCBpbnQpOworCituZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm82KHZvaWQgKiwgc2l6ZV90LCB1X2NoYXIsIGludCwgc2l6ZV90LCBzaXplX3QqKTsKKwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgIG5ldHNubXBfd2F0Y2hlcl9oZWxwZXJfaGFuZGxlcjsKIAogbmV0c25tcF9taWJfaGFuZGxlciAgKm5ldHNubXBfZ2V0X3dhdGNoZWRfdGltZXN0YW1wX2hhbmRsZXIodm9pZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaCBiL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCmluZGV4IDY3Y2Q2YTQuLjgwY2Y1ZDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC04LDYgKzgsNDkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIHN0cnVjdCBjb25maWdfbGluZSAqcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqZmlsZVByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikgKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpyZWxlYXNlcikgKHZvaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNhZ2VMaW5lKTsKKyAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikgKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpyZWxlYXNlcikgKHZvaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNhZ2VMaW5lKTsKKworLyogVGhlc2UgdHdvIGFyZSBkb2N1bWVudGVkIGFzICJyZWdpc3RlcnssX2FwcH1fcHJlbWliX2hhbmRsZXIoKSAqLworLyo/Ki8gICAgc3RydWN0IGNvbmZpZ19saW5lICpyZWdpc3Rlcl9wcmVuZXRzbm1wX21pYl9oYW5kbGVyKGNvbnN0IGNoYXIgKmZpbGVQcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwYXJzZXIpIChjb25zdCBjaGFyICosIGNoYXIgKiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcmVsZWFzZXIpICh2b2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzYWdlTGluZSk7CisvKj8qLyAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKnJlZ2lzdGVyX2FwcF9wcmVuZXRzbm1wX21pYl9oYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcGFyc2VyKSAoY29uc3QgY2hhciAqLCBjaGFyICopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnJlbGVhc2VyKSAodm9pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2FnZUxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgdm9pZCAgICAgICAgICAgIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqZmlsZVByZWZpeCwgY29uc3QgY2hhciAqdG9rZW4pOworICAgIHZvaWQgICAgICAgICAgICB1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlciggICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuKTsKKyAgICB2b2lkICAgICAgICAgICAgdW5yZWdpc3Rlcl9hbGxfY29uZmlnX2hhbmRsZXJzKHZvaWQpOworCisvKj8qLyB2b2lkIHJlZ2lzdGVyX21pYl9oYW5kbGVycyh2b2lkKTsKKyAgICB2b2lkICAgICAgICAgICAgcmVhZF9jb25maWdzKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgICByZWFkX3ByZW1pYl9jb25maWdzKHZvaWQpOworCisgICAgdm9pZCAgICAgICAgICAgIHJlYWRfY29uZmlnX3ByaW50X3VzYWdlKGNvbnN0IGNoYXIgKmxlYWQpOworICAgIHZvaWQgICAgICAgICAgICBjb25maWdfcGVycm9yKGNvbnN0IGNoYXIgKik7CisgICAgdm9pZCAgICAgICAgICAgIGNvbmZpZ19wd2Fybihjb25zdCBjaGFyICopOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCiAgICAgLyoKICAgICAgKiAgRm9yIHRoZSBpbml0aWFsIHJlbGVhc2UsIHRoaXMgd2lsbCBqdXN0IHJlZmVyIHRvIHRoZQogICAgICAqICByZWxldmFudCBVQ0QgaGVhZGVyIGZpbGVzLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmgKaW5kZXggNGM2YmFlMy4uMTFlODMyYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oCkBAIC04Myw2ICs4Myw3IEBACiAgICB1X2NoYXIgICAgYXJwX3R5cGU7ICAgICAgICAgICAvKiBpbmV0TmV0VG9NZWRpYVR5cGUgMS01ICovCiAgICB1X2NoYXIgICAgYXJwX3N0YXRlOyAgICAgICAgICAvKiBpbmV0TmV0VG9NZWRpYVN0YXRlIDEtNyAqLwogCisgICB1X2xvbmcgICAgYXJwX2xhc3RfdXBkYXRlZDsgICAvKiB0aW1ldGlja3Mgb2YgbGFzdCB1cGRhdGUgKi8KIH0gbmV0c25tcF9hcnBfZW50cnk7CiAKIApAQCAtMTE5LDYgKzEyMCw5IEBACiAKIHZvaWQgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2ZyZWUobmV0c25tcF9hcnBfZW50cnkgKiBlbnRyeSk7CiAKK3ZvaWQgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X3VwZGF0ZShuZXRzbm1wX2FycF9lbnRyeSAqZW50cnksCisgICAgICAgIG5ldHNubXBfYXJwX2VudHJ5ICpuZXdfZGF0YSk7CisKIC8qCiAgKiBmaW5kIGVudHJ5IGluIGNvbnRhaW5lcgogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYWMxOGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIGRlZmF1bHRyb3V0ZXIgZGF0YSBhY2Nlc3MgaGVhZGVyCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0gKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9ICisKKyMgaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogc3RydWN0dXJlIGRlZmluaXRpb25zCisgKi8KKyNpZiBkZWZpbmVkKCBORVRTTk1QX0VOQUJMRV9JUFY2ICkKKyMgICBkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9CVUZfU0laRSAxNiAgIC8qIFhYWDogMjAsIGZvciBpcDZ6PyAqLworI2Vsc2UKKyMgICBkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9CVUZfU0laRSA0CisjZW5kaWYKKworCisvKgorICogbmV0c25tcF9kZWZhdWx0X3JvdXRlX2VudHJ5CisgKi8KK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfZGVmYXVsdHJvdXRlcl9zIHsKKworICAgIG5ldHNubXBfaW5kZXggb2lkX2luZGV4OyAgIC8qIE1VU1QgQkUgRklSU1QhISBmb3IgY29udGFpbmVyIHVzZSAqLworICAgIG9pZCAgICAgICAgICAgbnNfZHJfaW5kZXg7IC8qIGFyYml0cmFyeSBpbmRleCAqLworCisgICAgaW50ICAgICAgZmxhZ3M7IC8qIGZvciBuZXQtc25tcCB1c2UgKi8KKworICAgIC8qCisgICAgICogbWliIHJlbGF0ZWQgZGF0YQorICAgICAqLworICAgIHVfY2hhciAgIGRyX2FkZHJlc3N0eXBlOyAgICAvKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSAqLworICAgIGNoYXIgICAgIGRyX2FkZHJlc3NbTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9CVUZfU0laRV07IC8qIGlwRGVmYXVsdFJvdXRlckFkZHJlc3MgKi8KKyAgICBzaXplX3QgICBkcl9hZGRyZXNzX2xlbjsgICAgLyogbGVuZ3RoIG9mIGlwRGVmYXVsdFJvdXRlckFkZHJlc3MgKi8KKyAgICBvaWQgICAgICBkcl9pZl9pbmRleDsgICAgICAgLyogaXBEZWZhdWx0Um91dGVySWZJbmRleCAqLworICAgIHVpbnQzMl90IGRyX2xpZmV0aW1lOyAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZSAoMC02NTUzNSkgKi8KKyAgICBjaGFyICAgICBkcl9wcmVmZXJlbmNlOyAgICAgLyogaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZSAoLTIsLTEsMCwxKSAqLworCit9IG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeTsKKworCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIEFDQ0VTUyBmdW5jdGlvbiBwcm90b3R5cGVzCisgKi8KKy8qCisgKiBjb250YWluZXIgaW5pdAorICovCituZXRzbm1wX2NvbnRhaW5lciAqCituZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9pbml0KHVfaW50IGZsYWdzKTsKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9JTklUX05PRkxBR1MgICAgICAgICAgICAgICAweDAwMDAKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9JTklUX0FERExfSURYX0JZX0FERFIgICAgICAweDAwMDEKKworLyoKKyAqIGNvbnRhaW5lciBsb2FkCisgKi8KK25ldHNubXBfY29udGFpbmVyKgorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKTsKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9MT0FEX05PRkxBR1MgICAgICAgICAgICAgICAweDAwMDAKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9MT0FEX0lQVjRfT05MWSAgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9MT0FEX0lQVjZfT05MWSAgICAgICAgICAgICAweDAwMDIKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9MT0FEX0FERExfSURYX0JZX0FERFIgICAgICAweDAwMDQKKworLyoKKyAqIGNvbnRhaW5lciBmcmVlCisgKi8KK3ZvaWQKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgZnJlZV9mbGFncyk7CisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfRlJFRV9OT0ZMQUdTICAgICAgICAgICAgICAgMHgwMDAwCisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfRlJFRV9ET05UX0NMRUFSICAgICAgICAgICAgMHgwMDAxCisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfRlJFRV9LRUVQX0NPTlRBSU5FUiAgICAgICAgMHgwMDAyCisKKy8qCisgKiBlbnRyeSBjcmVhdGUKKyAqLworbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICoKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY3JlYXRlKHZvaWQpOworCisvKgorICogZW50cnkgbG9hZAorICovCitpbnQKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfbG9hZChzaXplX3QgKm51bV9lbnRyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqKmVudHJpZXMpOworCisvKgorICogZW50cnkgdXBkYXRlCisgKi8KK2ludAorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV91cGRhdGUobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKnJocyk7CisKKy8qCisgKiBlbnRyeSBmcmVlCisgKi8KK3ZvaWQKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmVudHJ5KTsKKworCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyMgaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAppbmRleCA1M2RmYjM2Li4yMDAxM2VkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgKQEAgLTM0LDYgKzM0LDIwIEBACiAjZGVmaW5lIE5FVFNOTVBfSU5URVJGQUNFX0ZMQUdTX0hBU19WNl9SRUFDSEFCTEUgICAgICAgIDB4MDAwNDAwMDAKICNkZWZpbmUgTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX1Y2X0lGSUQgICAgICAgICAgICAgMHgwMDA4MDAwMAogI2RlZmluZSBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19IQVNfVjZfRk9SV0FSRElORyAgICAgICAweDAwMTAwMDAwCisvKiBTb21lIHBsYXRmb3JtcywgZS5nLkxpbnV4LCBkbyBub3QgcHJvdmlkZSBzdGFuZGFsb25lIGNvdW50ZXIKKyAqIGZvciBpbmNvbWluZyB1bmljYXN0IHBhY2tldHMgLSB0aGV5IHByb3ZpZGUgY291bnRlciBvZiBhbGwgcGFja2V0cworICogKyBzZXBhcmF0ZSBjb3VudGVyIGZvciB0aGUgbXVsdGljYXN0IG9uZXMuCisgKiBUaGF0IG1lYW5zIHRoZSBjb3VudGVyIG9mIGFsbCBwYWNrZXRzIG11c3Qgd2F0Y2hlZCBhbmQgY2hlY2tlZAorICogZm9yIG92ZXJmbG93cyB0byByZWNvbnN0cnVjdCBpdHMgNjQtYml0IHZhbHVlIChpLmUuIGFzIHVzdWFsCisgKiBmb3IgY291bnRlciBvZiB1bmljYXN0IHBhY2tldHMpLCBhbmQgYWZ0ZXIgaXRzIGV4cGFuc2lvbiB0byA2NC1iaXRzLAorICogbnIub2YgbXVsdGljYXN0IHBhY2tldHMgbXVzdCBiZSBzdWJzdHJhY3RlZCB0byBnZXQgbnIuIG9mIHVuaWNhc3QKKyAqIHBhY2tldHMuCisgKiBUaGlzIGZsYWcgbWFya3Mgc3RhdHMgb2Ygc3VjaCBwbGF0Zm9ybXMuIE5yLiBvZiBhbGwgaW5jb21pbmcgcGFja2V0cywKKyAqIHByb3ZpZGVkIGJ5IHRoZSBwbGF0Zm9ybSwgbXVzdCBiZSBzdG9yZWQgaW4KKyAqIG5ldHNubXBfaW50ZXJmYWNlX3N0YXRzLmlhbGwgYW5kIG5ldHNubXBfaW50ZXJmYWNlX3N0YXRzLml1Y2FzdCB3aWxsCisgKiBiZSBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgbGF0ZXIuCisgKi8KKyNkZWZpbmUgTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfQ0FMQ1VMQVRFX1VDQVNUICAgICAgICAgMHgwMDIwMDAwMAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCkBAIC05Myw2ICsxMDcsMTEgQEAKICAgICAgKi8KICAgIC8qKiBpbnB1dCAqLwogICAgIHN0cnVjdCBjb3VudGVyNjQgaWJ5dGVzOworICAgIC8qCisgICAgICogbnIuIG9mIGFsbCBwYWNrZXRzICh0byBjYWxjdWxhdGUgaXVjYXN0LCB3aGVuIHVuZGVybHlpbmcgcGxhdGZvcm0gZG9lcworICAgICAqIG5vdCBwcm92aWRlIGl0KQorICAgICAqLworICAgIHN0cnVjdCBjb3VudGVyNjQgaWFsbDsKICAgICBzdHJ1Y3QgY291bnRlcjY0IGl1Y2FzdDsKICAgICBzdHJ1Y3QgY291bnRlcjY0IGltY2FzdDsKICAgICBzdHJ1Y3QgY291bnRlcjY0IGliY2FzdDsKQEAgLTE3OSw3ICsxOTgsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgX2NvbmZfaWZfbGlzdCB7CiAgICAgY29uc3QgY2hhciAgICAgKm5hbWU7CiAgICAgaW50ICAgICAgICAgICAgIHR5cGU7Ci0gICAgdWludDY0X3QgICAgICAgIHNwZWVkOworICAgIHVpbnQ2NF90IHNwZWVkOwogICAgIHN0cnVjdCBfY29uZl9pZl9saXN0ICpuZXh0OwogfSBuZXRzbm1wX2NvbmZfaWZfbGlzdDsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKaW5kZXggNmI1MTUxOS4uNzUwNTZmMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCkBAIC00Nyw3ICs0NywxMCBAQAogICAgdV9jaGFyICAgIGlhX3N0YXR1czsgICAgIC8qIElwQWRkcmVzc1N0YXR1cyAoMS03KSAqLwogICAgdV9jaGFyICAgIGlhX29yaWdpbjsgICAgIC8qIElwQWRkcmVzc09yaWdpbiAoMS02KSAqLwogICAgdV9jaGFyICAgIGlhX3N0b3JhZ2V0eXBlOyAvKiBJcEFkZHJlc3NTdG9yYWdlVHlwZSAoMS01KSAqLwotCisgICB1X2NoYXIgICAgaWFfb25saW5rX2ZsYWc7IC8qIElwT25saW5rRmxhZyAqLworICAgdV9jaGFyICAgIGlhX2F1dG9ub21vdXNfZmxhZzsgLypJcEF1dG9ub21vdXNGbGFnICovCisgICB1X2xvbmcgICAgaWFfcHJlZmVyZWRfbGlmZXRpbWU7LypJcFByZWZlcmVkTGlmZVRpbWUqLworICAgdV9sb25nICAgIGlhX3ZhbGlkX2xpZmV0aW1lOy8qSXBWYWxpZExpZmVUaW1lKi8KICAgIG5ldHNubXBfZGF0YV9saXN0ICphcmNoX2RhdGE7ICAgICAgLyogYXJjaCBzcGVjaWZpYyBkYXRhICovCiAKIH0gbmV0c25tcF9pcGFkZHJlc3NfZW50cnk7CkBAIC0xNDIsNyArMTQ1LDE5IEBACiAKIGludCBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X3ByZWZpeF9sZW4oaW5fYWRkcl90IG1hc2spOwogCitpbnQgbmV0c25tcF9pcGFkZHJlc3NfZmxhZ3NfY29weSh1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeEFkdlByZWZlcnJlZExpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqaWFfcHJlZmVyZWRfbGlmZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKmlhX3ZhbGlkX2xpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICppYV9vbmxpbmtfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqaWFfYXV0b25vbW91c19mbGFnKTsKIAoraW50IG5ldHNubXBfaXBhZGRyZXNzX3ByZWZpeF9vcmlnaW5fY29weSh1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeE9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIGlhX29yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgaXBBZGRyZXNzQWRkclR5cGUpOwogCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCmluZGV4IDIxNjE0NDUuLmY3ODI0NTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCkBAIC0xMCw2ICsxMCw0MCBAQAogZXh0ZXJuICAgICAgICAgICJDIiB7CiAjZW5kaWYKIAorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENJTlJFQ0VJVkVTICAgICAgIDEKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5PQ1RFVFMgICAgICAgICAyCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9JTkhEUkVSUk9SUyAgICAgICAgMworI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk5PUk9VVEVTICAgICAgIDQgCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlMgICAgICAgNQorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSU5VTktOT1dOUFJPVE9TICAgIDYKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0lOVFJVTkNBVEVEUEtUUyAgICA3CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ0lORk9SV0RBVEFHUkFNUyAgOCAKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFMgICAgICAgICA5CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LUyAgICAgICAgICAgMTAKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNRkFJTFMgICAgICAgICAxMQorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSU5ESVNDQVJEUyAgICAgICAgIDEyCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOREVMSVZFUlMgICAgICAgMTMKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFMgICAgICAxNAorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVROT1JPVVRFUyAgICAgIDE1CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVMgMTYKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFMgICAgICAxNworI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHUkVRRFMgICAgIDE4CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1MgICAgICAgMTkKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTICAgICAyMAorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFUyAgIDIxCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVFRSQU5TTUlUUyAgICAgMjIKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUT0NURVRTICAgICAgICAyMworI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUUEtUUyAgICAgIDI0CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RPQ1RFVFMgICAgMjUKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RQS1RTICAgICAyNgorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVE9DVEVUUyAgIDI3CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOQkNBU1RQS1RTICAgICAgMjgKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUQkNBU1RQS1RTICAgICAyOQorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfRElTQ09OVElOVUlUWVRJTUUgIDMwCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9SRUZSRVNIUkFURSAgICAgICAgMzEKKyAgICAKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0xBU1QgSVBTWVNURU1TVEFUU1RBQkxFX1JFRlJFU0hSQVRFCisgICAgCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoKICAqIHN0cnVjdHVyZSBkZWZpbml0aW9ucwpAQCAtMjAsMjggKzU0LDQyIEBACiAgKi8KIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfaXBzdGF0c19zIHsKIAorICAgLyogQ29sdW1ucyBvZiBpcFN0YXRzVGFibGUuIFNvbWUgb2YgdGhlbSBhcmUgSEMgZm9yIGNvbXB1dGF0aW9uIG9mIHRoZSAKKyAgICAqIG90aGVyIGNvbHVtbnMsIHdoZW4gdW5kZXJseWluZyBPUyBkb2VzIG5vdCBwcm92aWRlIHRoZW0uCisgICAgKiBBbHdheXMgZmlsbCBhdCBsZWFzdCAzMiBiaXRzLCB0aGUgdGFibGUgaXMgcGVyaW9kaWNhbGx5IHBvbGxlZCAtPiAzMiBiaXQKKyAgICAqIG92ZXJmbG93IHNoYWxsIGJlIGRldGVjdGVkIGFuZCA2NCBiaXQgdmFsdWUgc2hvdWxkIGJlIGNvbXB1dGVkIGF1dG9tYXRpY2FsbHkuICovCiAgICBVNjQgICAgICAgICAgICAgSENJblJlY2VpdmVzOwogICAgVTY0ICAgICAgICAgICAgIEhDSW5PY3RldHM7CiAgICB1X2xvbmcgICAgICAgICAgSW5IZHJFcnJvcnM7Ci0gICB1X2xvbmcgICAgICAgICAgSW5Ob1JvdXRlczsKKyAgIFU2NCAgICAgICAgICAgICBIQ0luTm9Sb3V0ZXM7IAogICAgdV9sb25nICAgICAgICAgIEluQWRkckVycm9yczsKICAgIHVfbG9uZyAgICAgICAgICBJblVua25vd25Qcm90b3M7CiAgICB1X2xvbmcgICAgICAgICAgSW5UcnVuY2F0ZWRQa3RzOwotICAgVTY0ICAgICAgICAgICAgIEhDSW5Gb3J3RGF0YWdyYW1zOworICAgCisgICAvKiBvcHRpb25hbCwgY2FuIGJlIGNvbXB1dGVkIGZyb20gSENJbk5vUm91dGVzIGFuZCBIQ091dEZvcndEYXRhZ3JhbXMgKi8KKyAgIFU2NCAgICAgICAgICAgICBIQ0luRm9yd0RhdGFncmFtczsgCisgICAKICAgIHVfbG9uZyAgICAgICAgICBSZWFzbVJlcWRzOwogICAgdV9sb25nICAgICAgICAgIFJlYXNtT0tzOwogICAgdV9sb25nICAgICAgICAgIFJlYXNtRmFpbHM7CiAgICB1X2xvbmcgICAgICAgICAgSW5EaXNjYXJkczsKICAgIFU2NCAgICAgICAgICAgICBIQ0luRGVsaXZlcnM7CiAgICBVNjQgICAgICAgICAgICAgSENPdXRSZXF1ZXN0czsKLSAgIHVfbG9uZyAgICAgICAgICBPdXROb1JvdXRlczsKKyAgIFU2NCAgICAgICAgICAgICBIQ091dE5vUm91dGVzOwogICAgVTY0ICAgICAgICAgICAgIEhDT3V0Rm9yd0RhdGFncmFtczsKLSAgIHVfbG9uZyAgICAgICAgICBPdXREaXNjYXJkczsKLSAgIHVfbG9uZyAgICAgICAgICBPdXRGcmFnUmVxZHM7Ci0gICB1X2xvbmcgICAgICAgICAgT3V0RnJhZ09LczsKLSAgIHVfbG9uZyAgICAgICAgICBPdXRGcmFnRmFpbHM7Ci0gICB1X2xvbmcgICAgICAgICAgT3V0RnJhZ0NyZWF0ZXM7CisgICBVNjQgICAgICAgICAgICAgSENPdXREaXNjYXJkczsKKyAgIAorICAgLyogb3B0aW9uYWwsIGNhbiBiZSBjb21wdXRlZCBmcm9tIEhDT3V0RnJhZ09LcyArIEhDT3V0RnJhZ0ZhaWxzKi8KKyAgIFU2NCAgICAgICAgICAgICBIQ091dEZyYWdSZXFkczsKKyAgIFU2NCAgICAgICAgICAgICBIQ091dEZyYWdPS3M7CisgICBVNjQgICAgICAgICAgICAgSENPdXRGcmFnRmFpbHM7CisgICBVNjQgICAgICAgICAgICAgSENPdXRGcmFnQ3JlYXRlczsKKyAgIAorICAgLyogb3B0aW9uYWwsIGNhbiBiZSBjb21wdXRlZCBmcm9tIAorICAgICogSENPdXRSZXF1ZXN0cyArSENPdXRGb3J3RGF0YWdyYW1zICsgSENPdXRGcmFnQ3JlYXRlcworICAgICogLSBIQ091dEZyYWdSZXFkcyAtIEhDT3V0Tm9Sb3V0ZXMgIC0gSENPdXREaXNjYXJkcyAqLwogICAgVTY0ICAgICAgICAgICAgIEhDT3V0VHJhbnNtaXRzOworICAgCiAgICBVNjQgICAgICAgICAgICAgSENPdXRPY3RldHM7CiAgICBVNjQgICAgICAgICAgICAgSENJbk1jYXN0UGt0czsKICAgIFU2NCAgICAgICAgICAgICBIQ0luTWNhc3RPY3RldHM7CkBAIC01MCw2ICs5OCw4IEBACiAgICBVNjQgICAgICAgICAgICAgSENJbkJjYXN0UGt0czsKICAgIFU2NCAgICAgICAgICAgICBIQ091dEJjYXN0UGt0czsKIAorICAgLyogQXJyYXkgb2YgYXZhaWxhYmxlIGNvbHVtbnMuKi8KKyAgIGludCAgICAgICAgICAgICBjb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfTEFTVCsxXTsKIH0gbmV0c25tcF9pcHN0YXRzOwogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmggYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNWM4YmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBzY29wZXpvbmUgZGF0YSBhY2Nlc3MgaGVhZGVyCisgKgorICogJElkOiBzY29wZXpvbmUuaCAxNDE3MCAyMDA3LTA0LTI5IDAyOjIyOjEyWiB2YXJ1bl9jICQKKyAqLworI2lmbmRlZiBORVRTTk1QX0FDQ0VTU19TQ09QRVpPTkVfSAorI2RlZmluZSBORVRTTk1QX0FDQ0VTU19TQ09QRVpPTkVfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMKKyAqCisgKgorICogTk9URTogaWYgeW91IGFkZCBmaWVsZHMsIHVwZGF0ZSBjb2RlIGRlYWxpbmcgd2l0aAorICogICAgICAgdGhlbSBpbiBpcHY2c2NvcGV6b25lX2NvbW1vbi5jCisgKi8KK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnlfcyB7CisgICAgbmV0c25tcF9pbmRleCBvaWRfaW5kZXg7CisgICAgb2lkICAgICAgICAgICBuc19zY29wZXpvbmVfaW5kZXg7CisgICAgdV9pbnQgICBuc19mbGFnczsgLyogbmV0LXNubXAgZmxhZ3MgKi8KKyAgICBvaWQgICAgIGluZGV4OworICAgIGludCAgICAgc2NvcGV6b25lX2xpbmtsb2NhbDsgICAgCisKK30gbmV0c25tcF92NnNjb3Blem9uZV9lbnRyeTsKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBBQ0NFU1MgZnVuY3Rpb24gcHJvdG90eXBlcworICovCisKKy8qCisgKiBzY29wZXpvbmUgY29udGFpbmVyIGluaXQKKyAqLworbmV0c25tcF9jb250YWluZXIgKiBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2luaXQodV9pbnQgaW5pdF9mbGFncyk7CisKKy8qCisgKiBzY29wZXpvbmUgY29udGFpbmVyIGxvYWQgYW5kIGZyZWUKKyAqLworbmV0c25tcF9jb250YWluZXIqCituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKTsKKwordm9pZCBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZyZWVfZmxhZ3MpOworI2RlZmluZSBORVRTTk1QX0FDQ0VTU19TQ09QRVpPTkVfRlJFRV9OT0ZMQUdTICAgICAgICAgICAgICAgMHgwMDAwCisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX1NDT1BFWk9ORV9GUkVFX0RPTlRfQ0xFQVIgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfU0NPUEVaT05FX0ZSRUVfS0VFUF9DT05UQUlORVIgICAgICAgIDB4MDAwMgorCisKKy8qCisgKiBjcmVhdGUvZnJlZSBhbiBzY29wZXpvbmUgZW50cnkKKyAqLworbmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqCituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfY3JlYXRlKHZvaWQpOworCit2b2lkIG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9lbnRyeV9mcmVlKG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkgKiBlbnRyeSk7CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIE5FVFNOTVBfQUNDRVNTX1NDT1BFWk9ORV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTI4ZGYxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaApAQCAtMCwwICsxLDc3IEBACisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpZm5kZWYgTkVUU05NUF9TV0lOU1RfSAorI2RlZmluZSBORVRTTk1QX1NXSU5TVF9ICisKKyNpZmRlZiAgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqIERhdGEgc3RydWN0dXJlIGZvciBhIHN3aW5zdCBlbnRyeSAKKyAgICAgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBoclNXSW5zdGFsbGVkVGFibGVfZW50cnkgeworICAgICAgICBuZXRzbm1wX2luZGV4ICAgb2lkX2luZGV4OworICAgICAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogSW5kZXggdmFsdWVzOyBNSUIgdHlwZSBpcyBpbnQzMiwgYnV0IHdlIHVzZSBvaWQgc28gdGhpcworICAgICAgICAgKiBzdHJ1Y3R1cmUgY2FuIGJlIHVzZWQgZGlyZWN0bHkgd2l0aCBhIHRhYmxlX2NvbnRhaW5lci4KKyAgICAgICAgICovCisgICAgICAgIG9pZCAgICAgICAgICAgICBzd0luZGV4OworICAgICAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogQ29sdW1uIHZhbHVlcyAKKyAgICAgICAgICovCisgICAgICAgIGNoYXIgICAgICAgICAgICBzd05hbWVbNjRdOworICAgICAgICBjaGFyICAgICAgICAgICAgc3dEYXRlWzExXTsKKyNpZmRlZiBORVRTTk1QX0hBVkVfU1dJRAorICAgICAgICBvaWQgICAgICAgICAgICAqc3dJRDsKKyAgICAgICAgdV9jaGFyICAgICAgICAgIHN3SURfbGVuOworI2VuZGlmCisgICAgICAgIHVfY2hhciAgICAgICAgICBzd1R5cGU7CisgICAgICAgIHVfY2hhciAgICAgICAgICBzd05hbWVfbGVuOworICAgICAgICB1X2NoYXIgICAgICAgICAgc3dEYXRlX2xlbjsKKyAgICB9IG5ldHNubXBfc3dpbnN0X2VudHJ5OworICAgIAorI2RlZmluZSBIUlNXSU5TVEFMTEVEVFlQRV9VTktOT1dOICAxCisjZGVmaW5lIEhSU1dJTlNUQUxMRURUWVBFX09QRVJBVElOR1NZU1RFTSAgMgorI2RlZmluZSBIUlNXSU5TVEFMTEVEVFlQRV9ERVZJQ0VEUklWRVIgIDMKKyNkZWZpbmUgSFJTV0lOU1RBTExFRFRZUEVfQVBQTElDQVRJT04gIDQKKworCisjZGVmaW5lIE5FVFNOTVBfU1dJTlNUX05PRkxBR1MgICAgICAgICAgICAweDAwMDAwMDAwCisKKyNkZWZpbmUgTkVUU05NUF9TV0lOU1RfQUxMX09SX05PTkUgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgTkVUU05NUF9TV0lOU1RfRE9OVF9GUkVFX0lURU1TICAgIDB4MDAwMDAwMDIKKworICAgIG5ldHNubXBfY29udGFpbmVyICoKKyAgICBuZXRzbm1wX3N3aW5zdF9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBpbnQgZmxhZ3MgKTsKKworICAgIHZvaWQgbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZsYWdzKTsKKyAgICB2b2lkIG5ldHNubXBfc3dpbnN0X2NvbnRhaW5lcl9mcmVlX2l0ZW1zKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpOworCisgICAgdm9pZCBuZXRzbm1wX3N3aW5zdF9lbnRyeV9yZW1vdmUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zd2luc3RfZW50cnkgKmVudHJ5KTsKKworICAgIG5ldHNubXBfc3dpbnN0X2VudHJ5ICogbmV0c25tcF9zd2luc3RfZW50cnlfY3JlYXRlKGludDMyX3QgaW5kZXgpOworICAgIHZvaWQgbmV0c25tcF9zd2luc3RfZW50cnlfZnJlZShuZXRzbm1wX3N3aW5zdF9lbnRyeSAqZW50cnkpOworCisgICAgaW50MzJfdCBuZXRzbm1wX3N3aW5zdF9hZGRfbmFtZShjb25zdCBjaGFyICpuYW1lKTsKKyAgICBpbnQzMl90IG5ldHNubXBfc3dpbnN0X2dldF9pZChjb25zdCBjaGFyICpuYW1lKTsKKyAgICBjb25zdCBjaGFyICogbmV0c25tcF9zd2luc3RfZ2V0X25hbWUoaW50MzJfdCBpZCk7CisKKyNpZmRlZiAgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisKKyNlbmRpZiAvKiBORVRTTk1QX1NXSU5TVF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmggYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UxNWM0MQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaApAQCAtMCwwICsxLDEwNCBAQAorLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisjaWZuZGVmIE5FVFNOTVBfU1dSVU5fSAorI2RlZmluZSBORVRTTk1QX1NXUlVOX0gKKworI2lmZGVmICBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworCisgICAgLyotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIERhdGEgc3RydWN0dXJlIGZvciBhIHJvdyBlbnRyeSAKKyAgICAgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBoclNXUnVuVGFibGVfZW50cnkgeworICAgICAgICBuZXRzbm1wX2luZGV4ICAgb2lkX2luZGV4OworICAgICAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogSW5kZXggdmFsdWVzIAorICAgICAgICAgKi8KKyAgICAgICAgb2lkICAgICAgICAgICAgIGhyU1dSdW5JbmRleDsKKyAgICAgICAgCisgICAgICAgIC8qCisgICAgICAgICAqIENvbHVtbiB2YWx1ZXMgCisgICAgICAgICAqLworICAgICAgICBjaGFyICAgICAgICAgICAgaHJTV1J1bk5hbWVbIDY0KzFdOyAgLyogc2l6ZSBwZXIgTUlCICsgMSAqLworICAgICAgICBjaGFyICAgICAgICAgICAgaHJTV1J1blBhdGhbMTI4KzFdOyAgLyogc2l6ZSBwZXIgTUlCICsgMSAqLworICAgICAgICBjaGFyICAgICAgICAgICAgaHJTV1J1blBhcmFtZXRlcnNbMTI4KzFdOyAvKiBzaXplIHBlciBNSUIgKyAxICovCisjaWZkZWYgTkVUU05NUF9TV1JVTl9IQVZFX0lEICAvKiBpZiBub3QgZGVmaW5lZCwgd2lsbCBhbHdheXMgdXNlIG51bGxPaWQgKi8KKyAgICAgICAgb2lkICAgICAgICAgICAgIGhyU1dSdW5JRFtTTk1QX01BWE9JRF07CisgICAgICAgIHVfY2hhciAgICAgICAgICBoclNXUnVuSURfbGVuOworI2VuZGlmCisgICAgICAgIHVfY2hhciAgICAgICAgICBoclNXUnVuTmFtZV9sZW47CisgICAgICAgIHVfY2hhciAgICAgICAgICBoclNXUnVuUGF0aF9sZW47CisgICAgICAgIHVfY2hhciAgICAgICAgICBoclNXUnVuUGFyYW1ldGVyc19sZW47CisKKyAgICAgICAgdV9jaGFyICAgICAgICAgIGhyU1dSdW5UeXBlOworICAgICAgICB1X2NoYXIgICAgICAgICAgaHJTV1J1blN0YXR1czsKKyAgICAgICAgdV9jaGFyICAgICAgICAgIG9sZF9oclNXUnVuU3RhdHVzOworCisgICAgICAgIC8qCisgICAgICAgICAqIFBlcmYgdmFsdWVzCisgICAgICAgICAqLworICAgICAgICBpbnQzMl90ICAgICAgICAgaHJTV1J1blBlcmZDUFU7CisgICAgICAgIGludDMyX3QgICAgICAgICBoclNXUnVuUGVyZk1lbTsKKyAgICAgICAgCisgICAgfSBuZXRzbm1wX3N3cnVuX2VudHJ5OworCisgICAgLyoKKyAgICAgKiBlbnVtcyBmb3IgY29sdW1uIGhyU1dSdW5UeXBlCisgICAgICovCisjZGVmaW5lIEhSU1dSVU5UWVBFX1VOS05PV04gICAgICAgICAgICAgMQorI2RlZmluZSBIUlNXUlVOVFlQRV9PUEVSQVRJTkdTWVNURU0gICAgIDIKKyNkZWZpbmUgSFJTV1JVTlRZUEVfREVWSUNFRFJJVkVSICAgICAgICAzCisjZGVmaW5lIEhSU1dSVU5UWVBFX0FQUExJQ0FUSU9OICAgICAgICAgNAorCisgICAgLyoKKyAgICAgKiBlbnVtcyBmb3IgY29sdW1uIGhyU1dSdW5TdGF0dXMKKyAgICAgKi8KKyNkZWZpbmUgSFJTV1JVTlNUQVRVU19SVU5OSU5HICAgICAgICAgICAxCisjZGVmaW5lIEhSU1dSVU5TVEFUVVNfUlVOTkFCTEUgICAgICAgICAgMgorI2RlZmluZSBIUlNXUlVOU1RBVFVTX05PVFJVTk5BQkxFICAgICAgIDMKKyNkZWZpbmUgSFJTV1JVTlNUQVRVU19JTlZBTElEICAgICAgICAgICA0CisKKyAgICAvKi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogUHJvdG90eXBlcworICAgICAqLworICAgIG5ldHNubXBfY29udGFpbmVyICoKKyAgICBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZsYWdzICk7CisKKyAgICB2b2lkIG5ldHNubXBfc3dydW5fY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MpOworICAgIHZvaWQgbmV0c25tcF9zd3J1bl9jb250YWluZXJfZnJlZV9pdGVtcyhuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcik7CisKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5ICoKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5X2NyZWF0ZShpbnQzMl90IHN3SW5kZXgpOworCisgICAgdm9pZCBuZXRzbm1wX3N3cnVuX2VudHJ5X2ZyZWUobmV0c25tcF9zd3J1bl9lbnRyeSAqZW50cnkpOworCisgICAgaW50ICBzd3J1bl9jb3VudF9wcm9jZXNzZXMoIHZvaWQgKTsKKyAgICBpbnQgIHN3cnVuX21heF9wcm9jZXNzZXMoICAgdm9pZCApOworICAgIGludCAgc3dydW5fY291bnRfcHJvY2Vzc2VzX2J5X25hbWUoIGNoYXIgKm5hbWUgKTsKKworI2RlZmluZSBORVRTTk1QX1NXUlVOX05PRkxBR1MgICAgICAgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIE5FVFNOTVBfU1dSVU5fQUxMX09SX05PTkUgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgTkVUU05NUF9TV1JVTl9ET05UX0ZSRUVfSVRFTVMgICAgMHgwMDAwMDAwMgorLyojZGVmaW5lIE5FVFNOTVBfU1dSVU5feHggICAgICAgICAgICAgICAgMHgwMDAwMDAwNCAqLworCisjaWZkZWYgIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworCisjZW5kaWYgLyogTkVUU05NUF9TV1JVTl9IICovCisKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCmluZGV4IDQzODIzOTcuLjFiYWFjZDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgKQEAgLTIyLDcgKzIyLDExIEBACiB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3N5c3RlbXN0YXRzX3MgewogCiAgICBuZXRzbm1wX2luZGV4IG9pZF9pbmRleDsgICAvKiBNVVNUIEJFIEZJUlNUISEgZm9yIGNvbnRhaW5lciB1c2UgKi8KLSAgIG9pZCAgICAgICAgICAgbnNfaXBfdmVyc2lvbjsKKyAgIC8qIAorICAgICogSW5kZXggb2YgdGhlIHRhYmxlCisgICAgKiBGaXJzdCBlbnRyeSA9IGlwIHZlcnNpb24KKyAgICAqIFNlY29uZCBlbnRyeSA9IGludGVyZmFjZSBpbmRleCAoMCBmb3IgaXBTeXN0ZW1TdGF0c1RhYmxlICovCisgICBvaWQgICAgICAgICAgIGluZGV4WzJdOyAgICAgICAgICAgCiAKICAgIGludCAgICAgICBmbGFnczsgLyogZm9yIG5ldC1zbm1wIHVzZSAqLwogCkBAIC00OSwxMyArNTMsMTUgQEAKICNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfSU5JVF9OT0ZMQUdTICAgICAgICAgICAgICAgMHgwMDAwCiAjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0lOSVRfQURETF9JRFhfQllfQUREUiAgICAgIDB4MDAwMQogCi0vKgotICogbG9hZCBhbmQgZnJlZQorLyoqCisgKiBMb2FkIGNvbnRhaW5lci4gSWYgdGhlIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfSUZUQUJMRSBpcyBzZXQKKyAqIHRoZSBpcElmU3lzdGVtU3RhdHMgdGFibGUgaXMgbG9hZGVkLCBlbHNlIGlwU3lzdGVtU3RhdHNUYWJsZSBpcyBsb2FkZWQuCiAgKi8KIG5ldHNubXBfY29udGFpbmVyKgogbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOwogI2RlZmluZSBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX05PRkxBR1MgICAgICAgICAgICAgICAweDAwMDAKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfTE9BRF9JRlRBQkxFICAgICAgICAgICAgICAgMHgwMDAxIAogCiB2b2lkIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZyZWVfZmxhZ3MpOwpAQCAtNjgsNyArNzQsNyBAQAogICogY3JlYXRlL2ZyZWUgYW4gZW50cnkKICAqLwogbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqCi1uZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoaW50IHZlcnNpb24pOworbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKGludCB2ZXJzaW9uLCBpbnQgaWZfaW5kZXgpOwogCiB2b2lkIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUobmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqIGVudHJ5KTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgKaW5kZXggNjQ3MDRkMi4uMzYyMzFlZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oCkBAIC00MSw2ICs0MSw3IEBACiAgICAgICAgIHVfc2hvcnQgICBybXRfcG9ydDsKIAogICAgICAgICB1X2ludCAgICAgaW5zdGFuY2U7CisgICAgICAgIHVfaW50ICAgICBwaWQ7CiAgICAKICAgICB9IG5ldHNubXBfdWRwX2VuZHBvaW50X2VudHJ5OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAppbmRleCBmMTMyZjNiLi40NmVkNDQxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKQEAgLTQxLDkgKzQxLDExIEBACiAjaWZuZGVmIEVJR0hUQklUX1NVQklEUwogICAgIHR5cGVkZWYgdV9sb25nICBvaWQ7CiAjZGVmaW5lIE1BWF9TVUJJRCAgIDB4RkZGRkZGRkYKKyNkZWZpbmUgTkVUU05NUF9QUklvICJsIgogI2Vsc2UKICAgICB0eXBlZGVmIHVfY2hhciAgb2lkOwogI2RlZmluZSBNQVhfU1VCSUQgICAweEZGCisjZGVmaW5lIE5FVFNOTVBfUFJJbyAiIgogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAppbmRleCBhY2Q1ZDQwLi41NWJjYTE5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaApAQCAtMjcsNiArMjcsOCBAQAogI2RlZmluZSBTTk1QX0NBTExCQUNLX1BPU1RfUFJFTUlCX1JFQURfQ09ORklHCTMKICNkZWZpbmUgU05NUF9DQUxMQkFDS19MT0dHSU5HCQkJNAogI2RlZmluZSBTTk1QX0NBTExCQUNLX1NFU1NJT05fSU5JVAkJNQorI2RlZmluZSBTTk1QX0NBTExCQUNLX1BSRV9SRUFEX0NPTkZJRwkgICAgICAgIDcKKyNkZWZpbmUgU05NUF9DQUxMQkFDS19QUkVfUFJFTUlCX1JFQURfQ09ORklHCTgKIAogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAppbmRleCBjNmE0MDdmLi4zMjQxYTFjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCkBAIC0xLDMgKzEsMTMgQEAKKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLwogI2lmbmRlZiBORVRTTk1QX0NPTlRBSU5FUl9ICiAjZGVmaW5lIE5FVFNOTVBfQ09OVEFJTkVSX0gKIApAQCAtMjc2LDYgKzI4Niw5IEBACiAgICAgaW50IG5ldHNubXBfY29tcGFyZV9tZW0oY29uc3QgY2hhciAqIGxocywgc2l6ZV90IGxoc19sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHJocywgc2l6ZV90IHJoc19sZW4pOwogCisgICAgLyoqIG5vIHN0cnVjdHVyZSwganVzdCAnY2hhciAqJyBwb2ludGVycyAqLworICAgIGludCBuZXRzbm1wX2NvbXBhcmVfZGlyZWN0X2NzdHJpbmcoY29uc3Qgdm9pZCAqIGxocywgY29uc3Qgdm9pZCAqIHJocyk7CisKICAgICAvKiogZm9yX2VhY2ggY2FsbGJhY2sgdG8gY2FsbCBmcmVlIG9uIGRhdGEgaXRlbSAqLwogICAgIHZvaWQgIG5ldHNubXBfY29udGFpbmVyX3NpbXBsZV9mcmVlKHZvaWQgKmRhdGEsIHZvaWQgKmNvbnRleHQpOwogCkBAIC0zOTksNyArNDEyLDggQEAKICAgICAgICAgICAgIHJjMiA9IHgtPnJlbW92ZSh4LGspOwogICAgICAgICAgICAgLyoqIGlnbm9yZSByZW1vdmUgZXJyb3JzIGlmIHRoZXJlIGlzIGEgZmlsdGVyIGluIHBsYWNlICovCiAgICAgICAgICAgICBpZiAoKHJjMikgJiYgKE5VTEwgPT0geC0+aW5zZXJ0X2ZpbHRlcikpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgcmVtb3ZlICglZClcbiIsIHJjMik7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3Igb24gc3ViY29udGFpbmVyICclcycgcmVtb3ZlICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgeC0+Y29udGFpbmVyX25hbWUgPyB4LT5jb250YWluZXJfbmFtZSA6ICIiLCByYzIpOwogICAgICAgICAgICAgICAgIHJjID0gcmMyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgeCA9IHgtPnByZXY7CkBAIC00MjIsMTIgKzQzNiwxNSBAQAogICAgICAgICAgICAgeCA9IHgtPm5leHQ7CiAgICAgICAgIHdoaWxlKHgpIHsKICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICp0bXA7CisgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgICAgICAgdG1wID0geC0+cHJldjsKKyAgICAgICAgICAgIG5hbWUgPSB4LT5jb250YWluZXJfbmFtZTsKICAgICAgICAgICAgIGlmIChOVUxMICE9IHgtPmNvbnRhaW5lcl9uYW1lKQogICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh4LT5jb250YWluZXJfbmFtZSk7CiAgICAgICAgICAgICByYzIgPSB4LT5jZnJlZSh4KTsKICAgICAgICAgICAgIGlmIChyYzIpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgY2ZyZWUgKCVkKVxuIiwgcmMyKTsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyBjZnJlZSAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPyBuYW1lIDogIiIsIHJjMik7CiAgICAgICAgICAgICAgICAgcmMgPSByYzI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB4ID0gdG1wOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKaW5kZXggM2E3ZTIzNy4uMzM2YThlOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCkBAIC0zOSw2ICszOSw3IEBACiAKICAgICBpbnQgbmV0c25tcF9iaW5hcnlfYXJyYXlfb3B0aW9uc19zZXQobmV0c25tcF9jb250YWluZXIgKmMsIGludCBzZXQsIHVfaW50IGZsYWdzKTsKIAorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKaW5kZXggYWVkNDM1YS4uOTJmZGViZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjZW5kaWYKIAogI2RlZmluZSBORVRTTk1QX0RTX01BWF9JRFMgMwotI2RlZmluZSBORVRTTk1QX0RTX01BWF9TVUJJRFMgNDAgICAgICAgIC8qIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOCAqLworI2RlZmluZSBORVRTTk1QX0RTX01BWF9TVUJJRFMgNDggICAgICAgIC8qIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOCAqLwogCiAgICAgLyoKICAgICAgKiBiZWdpbiBzdG9yYWdlIGRlZmluaXRpb25zIApAQCAtODgsMjMgKzg4LDMwIEBACiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0RJU0FCTEVfUEVSU0lTVEVOVF9MT0FEICAzNSAvKiBkb24ndCBsb2FkIHBlcnNpc3RlbnQgZmlsZSAqLwogI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ESVNBQkxFX1BFUlNJU1RFTlRfU0FWRSAgMzYgLyogZG9uJ3Qgc2F2ZSBwZXJzaXN0ZW50IGZpbGUgKi8KICNkZWZpbmUgTkVUU05NUF9EU19MSUJfQVBQRU5EX0xPR0ZJTEVTICAgICAzNyAvKiBhcHBlbmQsIGRvbid0IG92ZXJ3cml0ZSwgbG9nIGZpbGVzICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX05PX0RJU0NPVkVSWSAgICAgICAgMzggLyogZG9uJ3Qgc3VwcG9ydCBSRkM1MzQzIGNvbnRleHRFbmdpbmVJRCBkaXNjb3ZlcnkgKi8KKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfVFNNX1VTRV9QUkVGSVggICAgICAzOSAvKiBUU00ncyBzaW1wbGUgc2VjdXJpdHkgbmFtZSBtYXBwaW5nICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0FMTE9XX1NFTEZfU0lHTkVEICAgNDAgLyogQ2VydHMgZm9yIERUTFMgKi8KIAogICAgIC8qCiAgICAgICogbGlicmFyeSBpbnRlZ2VycyAKICAgICAgKi8KLSNkZWZpbmUgTkVUU05NUF9EU19MSUJfTUlCX1dBUk5JTkdTICAwCi0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFQ0xFVkVMICAgICAgMQotI2RlZmluZSBORVRTTk1QX0RTX0xJQl9TTk1QVkVSU0lPTiAgIDIKLSNkZWZpbmUgTkVUU05NUF9EU19MSUJfREVGQVVMVF9QT1JUICAzCi0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX09JRF9PVVRQVVRfRk9STUFUICA0Ci0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX1BSSU5UX1NVRkZJWF9PTkxZICBORVRTTk1QX0RTX0xJQl9PSURfT1VUUFVUX0ZPUk1BVAorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9NSUJfV0FSTklOR1MgICAgICAgICAwCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFQ0xFVkVMICAgICAgICAgICAgIDEKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU05NUFZFUlNJT04gICAgICAgICAgMgorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ERUZBVUxUX1BPUlQgICAgICAgICAzCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX09JRF9PVVRQVVRfRk9STUFUICAgIDQKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfUFJJTlRfU1VGRklYX09OTFkgICAgTkVUU05NUF9EU19MSUJfT0lEX09VVFBVVF9GT1JNQVQKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1RSSU5HX09VVFBVVF9GT1JNQVQgNQotI2RlZmluZSBORVRTTk1QX0RTX0xJQl9IRVhfT1VUUFVUX0xFTkdUSCA2Ci0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFUlZFUlNFTkRCVUYgICA3IC8qIHNlbmQgYnVmZmVyIChzZXJ2ZXIpICovCi0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFUlZFUlJFQ1ZCVUYgICA4IC8qIHJlY2VpdmUgYnVmZmVyIChzZXJ2ZXIpICovCi0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX0NMSUVOVFNFTkRCVUYgICA5IC8qIHNlbmQgYnVmZmVyIChjbGllbnQpICovCi0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX0NMSUVOVFJFQ1ZCVUYgIDEwIC8qIHJlY2VpdmUgYnVmZmVyIChjbGllbnQpICovCi0KKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfSEVYX09VVFBVVF9MRU5HVEggICAgNgorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9TRVJWRVJTRU5EQlVGICAgICAgICA3IC8qIHNlbmQgYnVmZmVyIChzZXJ2ZXIpICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFUlZFUlJFQ1ZCVUYgICAgICAgIDggLyogcmVjZWl2ZSBidWZmZXIgKHNlcnZlcikgKi8KKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfQ0xJRU5UU0VOREJVRiAgICAgICAgOSAvKiBzZW5kIGJ1ZmZlciAoY2xpZW50KSAqLworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9DTElFTlRSRUNWQlVGICAgICAgIDEwIC8qIHJlY2VpdmUgYnVmZmVyIChjbGllbnQpICovCisjZGVmaW5lIE5FVFNOTVBfRFNfU1NIRE9NQUlOX1NPQ0tfUEVSTSAgICAgMTEKKyNkZWZpbmUgTkVUU05NUF9EU19TU0hET01BSU5fRElSX1BFUk0gICAgICAxMgorI2RlZmluZSBORVRTTk1QX0RTX1NTSERPTUFJTl9TT0NLX1VTRVIgICAgIDEyCisjZGVmaW5lIE5FVFNOTVBfRFNfU1NIRE9NQUlOX1NPQ0tfR1JPVVAgICAgMTMKKyAgICAKICAgICAvKgogICAgICAqIHNwZWNpYWwgbWVhbmluZ3MgZm9yIHRoZSBkZWZhdWx0IFNOTVAgdmVyc2lvbiBzbG90IChORVRTTk1QX0RTX0xJQl9TTk1QVkVSU0lPTikgCiAgICAgICovCkBAIC0xNDMsNiArMTUwLDE1IEBACiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0FQUFRZUEVTICAgICAgICAgIDIwCiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0tTTV9LRVlUQUIgICAgICAgIDIxCiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0tTTV9TRVJWSUNFX05BTUUgIDIyCisvKiBmb3IgdGhlIGNsaWVudCAqLworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QVUIgICAyMworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QUklWICAyNAorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9DRVJUUyAyNQorLyogZm9yIHRoZSBzZXJ2ZXIgKi8KKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfUFVCICAgMjYKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfUFJJViAgMjcKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfQ0VSVFMgMjgKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIVE9TTk1QX1NPQ0tFVCAgMjkKIAogICAgIC8qCiAgICAgICogZW5kIHN0b3JhZ2UgZGVmaW5pdGlvbnMgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGlyX3V0aWxzLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGlyX3V0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYyMGQwMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaApAQCAtMCwwICsxLDQxIEBACisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpZm5kZWYgTkVUU05NUF9ESVJfVVRJTFNfSAorI2RlZmluZSBORVRTTk1QX0RJUl9VVElMU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICoKKyAgICAgKiBQcm90b3R5cGVzCisgICAgICovCisgICAgbmV0c25tcF9jb250YWluZXIgKiBuZXRzbm1wX2RpcmVjdG9yeV9jb250YWluZXJfcmVhZChuZXRzbm1wX2NvbnRhaW5lciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZsYWdzKTsKKyAgICB2b2lkIG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICpjKTsKKworICAgICAgICAKKworICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICoKKyAgICAgKiBmbGFncworICAgICAqLworI2RlZmluZSBORVRTTk1QX0RJUl9SRUNVUlNFICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxCisKKyAgICAKKyAgICAgICAgCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogTkVUU05NUF9ESVJfVVRJTFNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKaW5kZXggNGI3MjQyZC4uMTRjZGY1MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCkBAIC05MCw2ICs5MCwxMSBAQAogICovCiB2b2lkIG5ldHNubXBfZXh0ZXJuYWxfZXZlbnRfaW5mbyhpbnQgKm51bWZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcyk7CiAKK3ZvaWQgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvMihpbnQgKm51bWZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqd3JpdGVmZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmV4Y2VwdGZkcyk7CisKIC8qCiAgKiBEaXNwYXRjaCBFeHRlcm5hbCBFdmVudHMKICAqCkBAIC0xMTUsNiArMTIwLDEwIEBACiAgKiBTaWRlIEVmZmVjdHM6IE5vbmUKICAqLwogdm9pZCBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50cyhpbnQgKmNvdW50LCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzKTsKK3ZvaWQgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMyKGludCAqY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICp3cml0ZWZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpleGNlcHRmZHMpOwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAppbmRleCAwZjRkNjkxLi5mNzBmZmU0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCkBAIC0xLDYgKzEsMTIgQEAKICNpZm5kZWYgX0dFVE9QVF9IXwogI2RlZmluZSBfR0VUT1BUX0hfIDEKIAorI2lmbmRlZiBORVRfU05NUF9DT05GSUdfSAorI2Vycm9yIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgPG5ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0Lmg+LgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChIQVZFX0dFVE9QVF9IKQorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAgICAgICAgICAiQyIgewogI2VuZGlmCkBAIC0xMiw0ICsxOCw3IEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgorCisjZW5kaWYgLyogSEFWRV9HRVRPUFRfSCAqLworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGRmMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCkBAIC0wLDAgKzEsMTY4IEBACisvKioKKyAqIEBmaWxlICBsYXJnZV9mZF9zZXQuaAorICoKKyAqIEBicmllZiBNYWNybydzIGFuZCBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGlvbiBvZiBsYXJnZSBmaWxlIGRlc2NyaXB0b3Igc2V0cy4KKyAqLworCisKKyNpZm5kZWYgTEFSR0VfRkRfU0VUX0gKKyNkZWZpbmUgTEFSR0VfRkRfU0VUX0gKKworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKworI2lmZGVmIEhBVkVfU1lTX1NFTEVDVF9ICisjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfV0lOU09DS19IKSAmJiAhZGVmaW5lZChfV0lOU09DS0FQSV8pICYmICFkZWZpbmVkKF9XSU5TT0NLX0gpCisjZXJyb3IgPHdpbnNvY2suaD4gb3IgPHdpbnNvY2syLmg+IG11c3QgaGF2ZSBiZWVuIGluY2x1ZGVkIGJlZm9yZSB0aGlzIGZpbGUuCisjZW5kaWYKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKworCisvKioKKyAqIEFkZCBzb2NrZXQgZmQgdG8gdGhlIHNldCAqZmRzZXQgaWYgbm90IHlldCBwcmVzZW50LgorICogRW5sYXJnZXMgdGhlIHNldCBpZiBuZWNlc3NhcnkuCisgKi8KKyNkZWZpbmUgTkVUU05NUF9MQVJHRV9GRF9TRVQoZmQsIGZkc2V0KSBcCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ZmQoZmQsIGZkc2V0KQorCisvKioKKyAqIFJlbW92ZSBzb2NrZXQgZmQgZnJvbSB0aGUgc2V0ICpmZHNldC4KKyAqIERvIG5vdGhpbmcgaWYgZmQgaXMgbm90IHByZXNlbnQgaW4gKmZkc2V0LgorICogRG8gbm90aGluZyBpZiBmZCA+PSBmZHNldC0+bGZzX3NldHNpemUuCisgKi8KKyNkZWZpbmUgTkVUU05NUF9MQVJHRV9GRF9DTFIoZmQsIGZkc2V0KSBcCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfY2xyKGZkLCBmZHNldCkKKworLyoqCisgKiBUZXN0IHdoZXRoZXIgc2V0ICpmZHNldCBjb250YWlucyBzb2NrZXQgZmQuCisgKiBFdmFsdWF0ZXMgdG8gemVybyAoZmFsc2UpIGlmIGZkID49IGZkc2V0LT5sZnNfc2V0c2l6ZS4KKyAqLworI2RlZmluZSBORVRTTk1QX0xBUkdFX0ZEX0lTU0VUKGZkLCBmZHNldCkgXAorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX2lzX3NldChmZCwgZmRzZXQpCisKKyNpZiAhZGVmaW5lZChjeWd3aW4pICYmIGRlZmluZWQoSEFWRV9XSU5TT0NLX0gpCisKKy8qKgorICogTnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCB0byBzdG9yZSBhIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzIGFzIGEKKyAqIHN0cnVjdCBmZF9zZXQuCisgKi8KKyNkZWZpbmUgTkVUU05NUF9GRF9TRVRfQllURVMoc2V0c2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc2l6ZW9mKGZkX3NldCkgKyAoKHNldHNpemUpID4gRkRfU0VUU0laRSA/ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgKChzZXRzaXplKSAtIEZEX1NFVFNJWkUpICogc2l6ZW9mKFNPQ0tFVCkgOiAwKSkKKworLyoqIFJlbW92ZSBhbGwgc29ja2V0cyBmcm9tIHRoZSBzZXQgKmZkc2V0LiAqLworI2RlZmluZSBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oZmRzZXQpIFwKKyAgICBkbyB7IChmZHNldCktPmxmc19zZXRwdHItPmZkX2NvdW50ID0gMDsgfSB3aGlsZSgwKQorCisKK3ZvaWQgICBuZXRzbm1wX2xhcmdlX2ZkX3NldGZkKCBTT0NLRVQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpmZHNldCk7Cit2b2lkICAgbmV0c25tcF9sYXJnZV9mZF9jbHIoICAgU09DS0VUIGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZmRzZXQpOworaW50ICAgIG5ldHNubXBfbGFyZ2VfZmRfaXNfc2V0KFNPQ0tFVCBmZCwgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmZkc2V0KTsKKworI2Vsc2UKKworLyoqCisgKiBTaXplIG9mIGEgc2luZ2xlIGVsZW1lbnQgb2YgdGhlIGFycmF5IHdpdGggZmlsZSBkZXNjcmlwdG9yIGJpdG1hc2tzLgorICoKKyAqIEFjY29yZGluZyB0byBTVVN2MiwgdGhpcyBhcnJheSBtdXN0IGhhdmUgdGhlIG5hbWUgZmRzX2JpdHMuIFNlZSBhbHNvCisgKiA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDc5MDg3NzUveHNoL3N5c3RpbWUuaC5odG1sIj5UaGUgU2luZ2xlIFVOSVggU3BlY2lmaWNhdGlvbiwgVmVyc2lvbiAyLCAmbHQ7c3lzL3RpbWUuaCZndDs8L2E+LgorICovCisjZGVmaW5lIE5FVFNOTVBfRkRfTUFTS19TSVpFIHNpemVvZigoKGZkX3NldCopMCktPmZkc19iaXRzWzBdKQorCisvKiogTnVtYmVyIG9mIGJpdHMgaW4gb25lIGVsZW1lbnQgb2YgdGhlIGZkX3NldC5mZHNfYml0cyBhcnJheS4gKi8KKyNkZWZpbmUgTkVUU05NUF9CSVRTX1BFUl9GRF9NQVNLICg4ICogTkVUU05NUF9GRF9NQVNLX1NJWkUpCisKKy8qKiBOdW1iZXIgb2YgZWxlbWVudHMgbmVlZGVkIGZvciB0aGUgZmRzX2JpdHMgYXJyYXkuICovCisjZGVmaW5lIE5FVFNOTVBfRkRfU0VUX0VMRU1fQ09VTlQoc2V0c2l6ZSkgXAorICAgIChzZXRzaXplICsgTkVUU05NUF9CSVRTX1BFUl9GRF9NQVNLIC0gMSkgLyBORVRTTk1QX0JJVFNfUEVSX0ZEX01BU0sKKworLyoqCisgKiBOdW1iZXIgb2YgYnl0ZXMgbmVlZGVkIHRvIHN0b3JlIGEgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgYXMgYQorICogc3RydWN0IGZkX3NldC4KKyAqLworI2RlZmluZSBORVRTTk1QX0ZEX1NFVF9CWVRFUyhzZXRzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc2l6ZW9mKGZkX3NldCkgKyAoKHNldHNpemUpID4gRkRfU0VUU0laRSA/ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRkRfU0VUX0VMRU1fQ09VTlQoKHNldHNpemUpIC0gRkRfU0VUU0laRSkgXAorICAgICAgICAgICAgICAgICAgICAgICAqIE5FVFNOTVBfRkRfTUFTS19TSVpFIDogMCkpCisKKy8qKiBSZW1vdmUgYWxsIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgc2V0ICpmZHNldC4gKi8KKyNkZWZpbmUgTkVUU05NUF9MQVJHRV9GRF9aRVJPKGZkc2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtZW1zZXQoKGZkc2V0KS0+bGZzX3NldHB0ciwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgIE5FVFNOTVBfRkRfU0VUX0JZVEVTKChmZHNldCktPmxmc19zZXRzaXplKSk7ICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworCit2b2lkICAgbmV0c25tcF9sYXJnZV9mZF9zZXRmZCggaW50IGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZmRzZXQpOwordm9pZCAgIG5ldHNubXBfbGFyZ2VfZmRfY2xyKCAgIGludCBmZCwgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmZkc2V0KTsKK2ludCAgICBuZXRzbm1wX2xhcmdlX2ZkX2lzX3NldChpbnQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpmZHNldCk7CisKKyNlbmRpZgorCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXRzbm1wX2xhcmdlX2ZkX3NldCBzdHJ1Y3R1cmUuCisgKgorICogTm90ZTogdGhpcyBmdW5jdGlvbiBvbmx5IGluaXRpYWxpemVzIHRoZSBsZnNfc2V0c2l6ZSBhbmQgbGZzX3NldHB0cgorICogbWVtYmVycyBvZiBuZXRzbm1wX2xhcmdlX2ZkX3NldCwgbm90IHRoZSBmaWxlIGRlc2NyaXB0b3Igc2V0IGl0c2VsZi4KKyAqIFRoZSBmaWxlIGRlc2NyaXB0b3Igc2V0IG11c3QgYmUgaW5pdGlhbGl6ZWQgc2VwYXJhdGVseSwgZS5nLiB2aWEKKyAqIE5FVFNOTVBfTEFSR0VfRkRfQ0xSKCkuCisgKi8KK3ZvaWQgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KCAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpmZHNldCwgaW50IHNldHNpemUpOworCisvKioKKyAqIE1vZGlmeSB0aGUgc2l6ZSBvZiBhIGZpbGUgZGVzY3JpcHRvciBzZXQgYW5kIHByZXNlcnZlIHRoZSBmaXJzdAorICogbWluKGZkc2V0LT5sZnNfc2V0c2l6ZSwgc2V0c2l6ZSkgZmlsZSBkZXNjcmlwdG9ycy4KKyAqCisgKiBSZXR1cm5zIDEgdXBvbiBzdWNjZXNzIG9yIDAgaWYgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkLgorICovCitpbnQgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZmRzZXQsIGludCBzZXRzaXplKTsKKworLyoqCisgKiBTeW5jaHJvbm91cyBJL08gbXVsdGlwbGV4aW5nIGZvciBsYXJnZSBmaWxlIGRlc2NyaXB0b3Igc2V0cy4KKyAqCisgKiBPbiBQT1NJWCBzeXN0ZW1zLCBhbnkgZmlsZSBkZXNjcmlwdG9yIHNldCB3aXRoIHNpemUgYmVsb3cgbnVtZmRzIHdpbGwgYmUKKyAqIHJlc2l6ZWQgYmVmb3JlIGludm9raW5nIHNlbGVjdCgpLgorICoKKyAqIEBzZWUgU2VlIGFsc28gc2VsZWN0KDIpIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICovCitORVRTTk1QX0lNUE9SVAoraW50ICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdChpbnQgbnVtZmRzLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqd3JpdGVmZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmV4Y2VwdGZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCk7CisKKy8qKiBEZWFsbG9jYXRlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQuICovCit2b2lkICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cChuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZmRzZXQpOworCisvKioKKyAqIENvcHkgYW4gZmRfc2V0IHRvIGEgbmV0c25tcF9sYXJnZV9mZF9zZXQgc3RydWN0dXJlLgorICoKKyAqIEBub3RlIGRzdCBtdXN0IGhhdmUgYmVlbiBpbml0aWFsaXplZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuCisgKi8KK3ZvaWQgICBuZXRzbm1wX2NvcHlfZmRfc2V0X3RvX2xhcmdlX2ZkX3NldChuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmRfc2V0ICpzcmMpOworCisvKioKKyAqIENvcHkgYSBuZXRzbm1wX2xhcmdlX2ZkX3NldCBzdHJ1Y3R1cmUgaW50byBhbiBmZF9zZXQuCisgKgorICogQHJldHVybiAwIHVwb24gc3VjY2VzcywgLTEgd2hlbiBjb3B5aW5nIGZhaWxzIGJlY2F1c2UgKnNyYyBpcyB0b28gbGFyZ2UgdG8KKyAqICAgICAgICAgZml0IGludG8gKmRzdC4KKyAqLworaW50ICAgIG5ldHNubXBfY29weV9sYXJnZV9mZF9zZXRfdG9fZmRfc2V0KCAgICAgICAgICAgICAgZmRfc2V0ICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnNyYyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKworI2VuZGlmIC8qIExBUkdFX0ZEX1NFVF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKaW5kZXggZjdjOGJiYS4uMjk5ZjMxMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMzQsNyArMzQsMTMgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+ICAgICAgICAgICAgICAvKiBmb3IgRklMRSAqLwogCi0jZGVmaW5lIE1JQiAxLCAzLCA2LCAxLCAyLCAxCisjaW5jbHVkZSA8bmV0LXNubXAvbWliX2FwaS5oPgorCisjZGVmaW5lIE5FVFNOTVBfTUlCMl9PSUQgMSwgMywgNiwgMSwgMiwgMQorCisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCisjZGVmaW5lIE1JQiBORVRTTk1QX01JQjJfT0lECisjZW5kaWYKIAogI2RlZmluZSBNSUJfSUZUWVBFX09USEVSCQkgICAgMQogI2RlZmluZSBNSUJfSUZUWVBFX1JFR1VMQVIxODIyCQkgICAgMgpAQCAtMTExLDI4ICsxMTcsMTkgQEAKICAgICBzdHJ1Y3QgdmFyaWFibGVfbGlzdDsKICAgICBzdHJ1Y3QgZW51bV9saXN0OwogCi0gICAgdm9pZCAgICAgICAgICAgIHByaW50X21pYihGSUxFICogZnApOwogICAgIHZvaWQgICAgICAgICAgICBwcmludF9hc2NpaV9kdW1wKEZJTEUgKik7Ci0gICAgaW50ICAgICAgICAgICAgIHJlYWRfb2JqaWQoY29uc3QgY2hhciAqLCBvaWQgKiwgc2l6ZV90ICopOwogICAgIHZvaWQgICAgICAgICAgICByZWdpc3Rlcl9taWJfaGFuZGxlcnModm9pZCk7CiAgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfc2V0X21pYl9kaXJlY3RvcnkoY29uc3QgY2hhciAqZGlyKTsKICAgICBjaGFyICAgICAgICAgICAgKm5ldHNubXBfZ2V0X21pYl9kaXJlY3Rvcnkodm9pZCk7CiAgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfZml4dXBfbWliX2RpcmVjdG9yeSh2b2lkKTsKLSAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9pbml0X21pYih2b2lkKTsKLSNpZm5kZWYgTkVUU05NUF9DTEVBTl9OQU1FU1BBQ0UKLSAgICB2b2lkICAgICAgICAgICAgaW5pdF9taWIodm9pZCk7Ci0jZW5kaWYKLSAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fbWliKHZvaWQpOwotICAgIHZvaWQgICAgICAgICAgICBwcmludF9kZXNjcmlwdGlvbihvaWQgKiwgc2l6ZV90LCBpbnQpOwotICAgIHZvaWQgICAgICAgICAgICBmcHJpbnRfZGVzY3JpcHRpb24oRklMRSAqLCBvaWQgKiwgc2l6ZV90LCBpbnQpOwotICAgIGludCAgICAgICAgICAgICBzbnByaW50X2Rlc2NyaXB0aW9uKGNoYXIgKiwgc2l6ZV90LCBvaWQgKiwgc2l6ZV90LCBpbnQpOwotICAgIGludCAgICAgICAgICAgICBzcHJpbnRfcmVhbGxvY19kZXNjcmlwdGlvbih1X2NoYXIgKiosIHNpemVfdCAqLCBzaXplX3QgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBvaWQgKiwgc2l6ZV90LCBpbnQpOwotICAgIGludCAgICAgICAgICAgICBnZXRfbW9kdWxlX25vZGUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIG9pZCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOworICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX21pYmluZGV4X2xvYWQoIHZvaWQgKTsKKyAgICBjaGFyICogICAgICAgICAgbmV0c25tcF9taWJpbmRleF9sb29rdXAoIGNvbnN0IGNoYXIgKiApOworICAgIEZJTEUgKiAgICAgICAgICBuZXRzbm1wX21pYmluZGV4X25ldyggY29uc3QgY2hhciAqICk7CisgICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX2Rlc2NyaXB0aW9uKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBpbnQgd2lkdGgpOwogICAgIGludCAgICAgICAgICAgICBnZXRfd2lsZF9ub2RlKGNvbnN0IGNoYXIgKiwgb2lkICosIHNpemVfdCAqKTsKICAgICBpbnQgICAgICAgICAgICAgZ2V0X25vZGUoY29uc3QgY2hhciAqLCBvaWQgKiwgc2l6ZV90ICopOwotICAgIG9pZCAgICAgICAgICAgICpzbm1wX3BhcnNlX29pZChjb25zdCBjaGFyICosIG9pZCAqLCBzaXplX3QgKik7CiAgICAgc3RydWN0IHRyZWUgICAgKmdldF90cmVlKGNvbnN0IG9pZCAqLCBzaXplX3QsIHN0cnVjdCB0cmVlICopOwogICAgIHN0cnVjdCB0cmVlICAgICpnZXRfdHJlZV9oZWFkKHZvaWQpOwogICAgIHZvaWQgICAgICAgICAgICBzZXRfZnVuY3Rpb24oc3RydWN0IHRyZWUgKik7CkBAIC0xNTEsMjcgKzE0OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogaW5kZXhlcyk7CiAgICAgaW50ICAgICAgICAgICAgIGJ1aWxkX29pZF9zZWdtZW50KG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcik7CiAKLQotICAgIHZvaWQgICAgICAgICAgICBwcmludF92YXJpYWJsZShjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAorICAgIGludCAgICAgICAgICAgICBzcHJpbnRfcmVhbGxvY192YXJpYWJsZSh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOwogCi0gICAgdm9pZCAgICAgICAgICAgIGZwcmludF92YXJpYWJsZShGSUxFICogZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOwotCi0gICAgaW50ICAgICAgICAgICAgIHNucHJpbnRfdmFyaWFibGUoY2hhciAqYnVmLCBzaXplX3QgYnVmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKLQotICAgIGludCAgICAgICAgICAgICBzcHJpbnRfcmVhbGxvY192YXJpYWJsZSh1X2NoYXIgKiogYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBidWZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBvdXRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxsb3dfcmVhbGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvYmppZGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUpOwotCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORwogICAgIHN0cnVjdCB0cmVlICAgICoKICNlbHNlCkBAIC0xOTQsMzkgKzE3NSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvYmppZGxlbik7CiAKLSAgICB2b2lkICAgICAgICAgICAgcHJpbnRfdmFsdWUoY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOwotCi0gICAgdm9pZCAgICAgICAgICAgIGZwcmludF92YWx1ZShGSUxFICogZnAsCisgICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX3ZhbHVlKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7CiAKLSAgICBpbnQgICAgICAgICAgICAgc25wcmludF92YWx1ZShjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOwotCi0gICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX3ZhbHVlKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIG91dF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbGxvd19yZWFsbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9iamlkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7Ci0KLQotICAgIHZvaWQgICAgICAgICAgICBwcmludF9vYmppZChjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuKTsKLQotICAgIHZvaWQgICAgICAgICAgICBmcHJpbnRfb2JqaWQoRklMRSAqIGZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbik7Ci0KLSAgICBpbnQgICAgICAgICAgICAgc25wcmludF9vYmppZChjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pOwotCiAgICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX29iamlkKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIG91dF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbGxvd19yZWFsbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9iamlkbGVuKTsKLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuKTsKIAogICAgIGludCAgICAgICAgICAgICBzcHJpbnRfcmVhbGxvY19ieV90eXBlKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogb3V0X2xlbiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKaW5kZXggNzg1MTA2ZC4uZjViMGNkNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKQEAgLTQsNiArNCw5IEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAgICAgICAgICAiQyIgewogI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9taWJfYXBpLmg+CisKICAgICAvKgogICAgICAqIHBhcnNlLmgKICAgICAgKi8KQEAgLTcwLDMzICs3Myw2IEBACiAgICAgfTsKIAogICAgIC8qCi0gICAgICogQSBsaW5rZWQgbGlzdCBvZiBub2Rlcy4KLSAgICAgKi8KLSAgICBzdHJ1Y3Qgbm9kZSB7Ci0gICAgICAgIHN0cnVjdCBub2RlICAgICpuZXh0OwotICAgICAgICBjaGFyICAgICAgICAgICAqbGFiZWw7ICAvKiBUaGlzIG5vZGUncyAodW5pcXVlKSB0ZXh0dWFsIG5hbWUgKi8KLSAgICAgICAgdV9sb25nICAgICAgICAgIHN1YmlkOyAgLyogVGhpcyBub2RlJ3MgaW50ZWdlciBzdWJpZGVudGlmaWVyICovCi0gICAgICAgIGludCAgICAgICAgICAgICBtb2RpZDsgIC8qIFRoZSBtb2R1bGUgY29udGFpbmluZyB0aGlzIG5vZGUgKi8KLSAgICAgICAgY2hhciAgICAgICAgICAgKnBhcmVudDsgLyogVGhlIHBhcmVudCdzIHRleHR1YWwgbmFtZSAqLwotICAgICAgICBpbnQgICAgICAgICAgICAgdGNfaW5kZXg7ICAgICAgIC8qIGluZGV4IGludG8gdGNsaXN0ICgtMSBpZiBOQSkgKi8KLSAgICAgICAgaW50ICAgICAgICAgICAgIHR5cGU7ICAgLyogVGhlIHR5cGUgb2Ygb2JqZWN0IHRoaXMgcmVwcmVzZW50cyAqLwotICAgICAgICBpbnQgICAgICAgICAgICAgYWNjZXNzOwotICAgICAgICBpbnQgICAgICAgICAgICAgc3RhdHVzOwotICAgICAgICBzdHJ1Y3QgZW51bV9saXN0ICplbnVtczsgICAgICAgIC8qIChvcHRpb25hbCkgbGlzdCBvZiBlbnVtZXJhdGVkIGludGVnZXJzICovCi0gICAgICAgIHN0cnVjdCByYW5nZV9saXN0ICpyYW5nZXM7Ci0gICAgICAgIHN0cnVjdCBpbmRleF9saXN0ICppbmRleGVzOwotICAgICAgICBjaGFyICAgICAgICAgICAqYXVnbWVudHM7Ci0gICAgICAgIHN0cnVjdCB2YXJiaW5kX2xpc3QgKnZhcmJpbmRzOwotICAgICAgICBjaGFyICAgICAgICAgICAqaGludDsKLSAgICAgICAgY2hhciAgICAgICAgICAgKnVuaXRzOwotICAgICAgICBjaGFyICAgICAgICAgICAqZGVzY3JpcHRpb247ICAgIC8qIGRlc2NyaXB0aW9uIChhIHF1b3RlZCBzdHJpbmcpICovCi0gICAgICAgIGNoYXIgICAgICAgICAgICpyZWZlcmVuY2U7ICAgIC8qIHJlZmVyZW5jZXMgKGEgcXVvdGVkIHN0cmluZykgKi8KLSAgICAgICAgY2hhciAgICAgICAgICAgKmRlZmF1bHRWYWx1ZTsKLQljaGFyICAgICAgICAgICAqZmlsZW5hbWU7Ci0gICAgICAgIGludCAgICAgICAgICAgICBsaW5lbm87Ci0gICAgfTsKLQotICAgIC8qCiAgICAgICogQSB0cmVlIGluIHRoZSBmb3JtYXQgb2YgdGhlIHRyZWUgc3RydWN0dXJlIG9mIHRoZSBNSUIuCiAgICAgICovCiAgICAgc3RydWN0IHRyZWUgewpAQCAtMjA5LDIzICsxODUsMTMgQEAKICNkZWZpbmUJQU5PTgkiYW5vbnltb3VzIyIKICNkZWZpbmUJQU5PTl9MRU4gIHN0cmxlbihBTk9OKQogCi0gICAgc3RydWN0IHRyZWUgICAgKm5ldHNubXBfcmVhZF9tb2R1bGUoY29uc3QgY2hhciAqKTsKLSNpZm5kZWYgTkVUU05NUF9DTEVBTl9OQU1FU1BBQ0UKLSAgICBzdHJ1Y3QgdHJlZSAgICAqcmVhZF9tb2R1bGUoY29uc3QgY2hhciAqKTsKLSNlbmRpZgotICAgIHN0cnVjdCB0cmVlICAgICpyZWFkX21pYihjb25zdCBjaGFyICopOwotICAgIHN0cnVjdCB0cmVlICAgICpyZWFkX2FsbF9taWJzKHZvaWQpOwogICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX3VubG9hZF9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSk7Ci0jaWZuZGVmIE5FVFNOTVBfQ0xFQU5fTkFNRVNQQUNFCisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCiAgICAgaW50ICAgICAgICAgICAgIHVubG9hZF9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSk7Ci0gICAgdm9pZCAgICAgICAgICAgIGluaXRfbWliX2ludGVybmFscyh2b2lkKTsKICNlbmRpZgogICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX2luaXRfbWliX2ludGVybmFscyh2b2lkKTsKICAgICB2b2lkICAgICAgICAgICAgdW5sb2FkX2FsbF9taWJzKHZvaWQpOwogICAgIGludCAgICAgICAgICAgICBhZGRfbWliZmlsZShjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIEZJTEUgKik7Ci0gICAgaW50ICAgICAgICAgICAgIGFkZF9taWJkaXIoY29uc3QgY2hhciAqKTsKLSAgICB2b2lkICAgICAgICAgICAgYWRkX21vZHVsZV9yZXBsYWNlbWVudChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGludCk7CiAgICAgaW50ICAgICAgICAgICAgIHdoaWNoX21vZHVsZShjb25zdCBjaGFyICopOwogICAgIGNoYXIgICAgICAgICAgICptb2R1bGVfbmFtZShpbnQsIGNoYXIgKik7CiAgICAgdm9pZCAgICAgICAgICAgIHByaW50X3N1YnRyZWUoRklMRSAqLCBzdHJ1Y3QgdHJlZSAqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAppbmRleCA3OGFmNTZlLi5kZDI4NDExIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaApAQCAtMTUsNyArMTUsNyBAQAogI2RlZmluZSBQUkVNSUJfQ09ORklHIDEKICNkZWZpbmUgRUlUSEVSX0NPTkZJRyAyCiAKLQorI2luY2x1ZGUgPG5ldC1zbm1wL2NvbmZpZ19hcGkuaD4KIAogICAgIC8qCiAgICAgICogRGVmaW5lcyBhIHNldCBvZiBmaWxlIHR5cGVzIGFuZCB0aGUgcGFyc2UgYW5kIGZyZWUgZnVuY3Rpb25zCkBAIC00Nyw1MCArNDcsMjQgQEAKICAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9jb25maWdfcmVtZW1iZXIoY2hhciAqKTsgICAgLyogcHJvY2VzcyBsYXRlciwgZHVyaW5nIHNubXBfaW5pdCgpICovCiAgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX3Byb2Nlc3NfbWVtb3JpZXModm9pZCk7ICAgICAgLyogcnVuIGFsbCBtZW1vcmllcyB0aHJvdWdoIHBhcnNlciAqLwogICAgIHZvaWQgICAgICAgICAgICByZWFkX2NvbmZpZyhjb25zdCBjaGFyICosIHN0cnVjdCBjb25maWdfbGluZSAqLCBpbnQpOwotICAgIHZvaWQgICAgICAgICAgICByZWFkX2NvbmZpZ3Modm9pZCk7Ci0gICAgdm9pZCAgICAgICAgICAgIHJlYWRfcHJlbWliX2NvbmZpZ3Modm9pZCk7CiAgICAgdm9pZCAgICAgICAgICAgIHJlYWRfY29uZmlnX2ZpbGVzKGludCk7CiAgICAgdm9pZCAgICAgICAgICAgIGZyZWVfY29uZmlnKHZvaWQpOwotICAgIHZvaWQgICAgICAgICAgICBjb25maWdfcGVycm9yKGNvbnN0IGNoYXIgKik7Ci0gICAgdm9pZCAgICAgICAgICAgIGNvbmZpZ19wd2Fybihjb25zdCBjaGFyICopOworI2lmICFkZWZpbmVkKF9fR05VQ19fKSB8fCBfX0dOVUNfXyA8IDIgfHwgKF9fR05VQ19fID09IDImJiBfX0dOVUNfTUlOT1JfXyA8IDgpCisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKGNvbnN0IGNoYXIgKiwgLi4uKTsKKyAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9jb25maWdfd2Fybihjb25zdCBjaGFyICosIC4uLik7CisjZWxzZQorICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcihjb25zdCBjaGFyICosIC4uLikKKwlfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDEsIDIpKSk7CisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX3dhcm4oY29uc3QgY2hhciAqLCAuLi4pCisJX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9fLCAxLCAyKSkpOworI2VuZGlmCisKICAgICBjaGFyICAgICAgICAgICAqc2tpcF93aGl0ZShjaGFyICopOwogICAgIGNoYXIgICAgICAgICAgICpza2lwX25vdF93aGl0ZShjaGFyICopOwogICAgIGNoYXIgICAgICAgICAgICpza2lwX3Rva2VuKGNoYXIgKik7CiAgICAgY2hhciAgICAgICAgICAgKmNvcHlfbndvcmQoY2hhciAqLCBjaGFyICosIGludCk7CiAgICAgY2hhciAgICAgICAgICAgKmNvcHlfd29yZChjaGFyICosIGNoYXIgKik7ICAvKiBkbyBub3QgdXNlICovCiAgICAgdm9pZCAgICAgICAgICAgIHJlYWRfY29uZmlnX3dpdGhfdHlwZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0gICAgc3RydWN0IGNvbmZpZ19saW5lICpyZWdpc3Rlcl9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwYXJzZXIpIChjb25zdCBjaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiwgY2hhciAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpyZWxlYXNlcikgKHZvaWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKTsKLSAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikgKGNvbnN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcmVsZWFzZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpLCBjb25zdCBjaGFyICopOwotICAgIHN0cnVjdCBjb25maWdfbGluZSAqcmVnaXN0ZXJfcHJlbmV0c25tcF9taWJfaGFuZGxlcihjb25zdCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpyZWxlYXNlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICopOwotICAgIHN0cnVjdCBjb25maWdfbGluZSAqcmVnaXN0ZXJfYXBwX3ByZW5ldHNubXBfbWliX2hhbmRsZXIoY29uc3QgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqcmVsZWFzZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICopOwotICAgIHZvaWQgICAgICAgICAgICB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLSAgICB2b2lkICAgICAgICAgICAgdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqKTsKLSAgICB2b2lkICAgICAgICAgICAgdW5yZWdpc3Rlcl9hbGxfY29uZmlnX2hhbmRsZXJzKHZvaWQpOwotICAgIHZvaWQgICAgICAgICAgICByZWFkX2NvbmZpZ19wcmludF91c2FnZShjb25zdCBjaGFyICpsZWFkKTsKICAgICBjaGFyICAgICAgICAgICAqcmVhZF9jb25maWdfc2F2ZV9vY3RldF9zdHJpbmcoY2hhciAqc2F2ZXRvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1X2NoYXIgKiBzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKaW5kZXggYmZiNGM1Zi4uZDk1N2JiZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xOCw4ICsxOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdXRjX29mZnNldF9ob3VycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB1dGNfb2Zmc2V0X21pbnV0ZXMpOwogCi0gICAgdV9jaGFyICAgICAgICAgKmRhdGVfbl90aW1lKHRpbWVfdCAqLCBzaXplX3QgKik7Ci0gICAgdGltZV90ICAgICAgICAgIGN0aW1lX3RvX3RpbWV0KGNoYXIgKik7CisgICAgdV9jaGFyICAgICAgICAgKmRhdGVfbl90aW1lKGNvbnN0IHRpbWVfdCAqLCBzaXplX3QgKik7CisgICAgdGltZV90ICAgICAgICAgIGN0aW1lX3RvX3RpbWV0KGNvbnN0IGNoYXIgKik7CiAKICAgICAvKgogICAgICAqIFRydWVWYWx1ZSAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQWxpYXNEb21haW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQWxpYXNEb21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2FmY2I1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBBbGlhc0RvbWFpbi5oCkBAIC0wLDAgKzEsMzIgQEAKKyNpZm5kZWYgX1NOTVBBTElBU0RPTUFJTl9ICisjZGVmaW5lIF9TTk1QQUxJQVNET01BSU5fSAorCisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfQUxJQVNfRE9NQUlOCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2FzbjEuaD4KKworLyoKKyAqIFNpbXBsZSBhbGlhc2VzIGZvciBjb21wbGV4IHRyYW5zcG9ydCBzdHJpbmdzIHRoYXQgY2FuIGJlIHNwZWNpZmllZAorICogdmlhIHRoZSBzbm1wLmNvbmYgZmlsZSBhbmQgdGhlICdhbGlhcycgdG9rZW4uCisgKi8KKworI2RlZmluZSBUUkFOU1BPUlRfRE9NQUlOX0FMSUFTX0lQCQkxLDMsNiwxLDIsMSwxMDAsMSw1CitORVRTTk1QX0lNUE9SVCBvaWQgbmV0c25tcF9zbm1wQUxJQVNEb21haW5bXTsKKworLyoKKyAqICJDb25zdHJ1Y3RvciIgZm9yIHRyYW5zcG9ydCBkb21haW4gb2JqZWN0LiAgCisgKi8KKwordm9pZCAgICAgICAgICAgIG5ldHNubXBfYWxpYXNfY3Rvcih2b2lkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLypORVRTTk1QX1RSQU5TUE9SVF9BTElBU19ET01BSU4gKi8KKworI2VuZGlmLypfU05NUEFMSUFTRE9NQUlOX0gqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBEVExTVURQRG9tYWluLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcERUTFNVRFBEb21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTJkZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBEVExTVURQRG9tYWluLmgKQEAgLTAsMCArMSw2MSBAQAorI2lmbmRlZiBfU05NUERUTFNVRFBET01BSU5fSAorI2RlZmluZSBfU05NUERUTFNVRFBET01BSU5fSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9hc24xLmg+CisKKyNpZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisKKyNkZWZpbmUgVFJBTlNQT1JUX0RPTUFJTl9EVExTX1VEUF9JUAkxLDMsNiwxLDQsMSw4MDcyLDMsMyw4CitORVRTTk1QX0lNUE9SVCBvaWQgbmV0c25tcERUTFNVRFBEb21haW5bXTsKKworbmV0c25tcF90cmFuc3BvcnQgKm5ldHNubXBfZHRsc3VkcF90cmFuc3BvcnQoc3RydWN0IHNvY2thZGRyX2luICphZGRyLCBpbnQgbG9jYWwpOworCisKKy8qCisgKiBDb252ZXJ0IGEgInRyYWRpdGlvbmFsIiBwZWVybmFtZSBpbnRvIGEgc29ja2FkZHJfaW4gc3RydWN0dXJlIHdoaWNoIGlzCisgKiB3cml0dGVuIHRvICphZGRyLiAgUmV0dXJucyAxIGlmIHRoZSBjb252ZXJzaW9uIHdhcyBzdWNjZXNzZnVsLCBvciAwIGlmIGl0CisgKiBmYWlsZWQuICAKKyAqLworCitpbnQgICAgICAgICAgICAgbmV0c25tcF9zb2NrYWRkcl9pbihzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwZWVybmFtZSwgaW50IHJlbW90ZV9wb3J0KTsKKworCisvKgorICogUmVnaXN0ZXIgYW55IGNvbmZpZ3VyYXRpb24gdG9rZW5zIHNwZWNpZmljIHRvIHRoZSBhZ2VudC4gIAorICovCisKK3ZvaWQgICAgICAgICAgICBuZXRzbm1wX2R0bHN1ZHBfYWdlbnRfY29uZmlnX3Rva2Vuc19yZWdpc3Rlcih2b2lkKTsKKwordm9pZCAgICAgICAgICAgIG5ldHNubXBfZHRsc3VkcF9wYXJzZV9zZWN1cml0eShjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqcGFyYW0pOworCitpbnQgICAgICAgICAgICAgbmV0c25tcF9kdGxzdWRwX2dldFNlY05hbWUodm9pZCAqb3BhcXVlLCBpbnQgb2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbW11bml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb21tdW5pdHlfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKnNlY25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqY29udGV4dE5hbWUpOworCitpbnQgICAgICAgICAgICAgbmV0c25tcF9zb2NrX2J1ZmZlcl9zZXQoaW50IHMsIGludCBvcHRuYW1lLCBpbnQgbG9jYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUpOworCisKKy8qCisgKiAiQ29uc3RydWN0b3IiIGZvciB0cmFuc3BvcnQgZG9tYWluIG9iamVjdC4gIAorICovCisKK3ZvaWQgICAgICAgICAgICBuZXRzbm1wX2R0bHN1ZHBfY3Rvcih2b2lkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZi8qX1NOTVBEVExTVURQRE9NQUlOX0gqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBTU0hEb21haW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYxMDgxOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmgKQEAgLTAsMCArMSw0MSBAQAorI2lmbmRlZiBfU05NUFNTSERPTUFJTl9ICisjZGVmaW5lIF9TTk1QU1NIRE9NQUlOX0gKKworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1NTSF9ET01BSU4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvYXNuMS5oPgorCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorCisvKgorICogVGhlIFNOTVAgb3ZlciBTU0ggb3ZlciBJUHY0IHRyYW5zcG9ydCBkb21haW4gaXMgaWRlbnRpZmllZCBieQorICogdHJhbnNwb3J0RG9tYWluU3NoSXB2NCBhcyBkZWZpbmVkIGluIFJGQyAzNDE5LgorICovCisKKyNkZWZpbmUgVFJBTlNQT1JUX0RPTUFJTl9TU0hfSVAJCTEsMyw2LDEsMiwxLDEwMCwxLDEwMAorTkVUU05NUF9JTVBPUlQgb2lkIG5ldHNubXBfc25tcFNTSERvbWFpbltdOworCituZXRzbm1wX3RyYW5zcG9ydCAqbmV0c25tcF9zc2hfdHJhbnNwb3J0KHN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkciwgaW50IGxvY2FsKTsKKworLyoKKyAqICJDb25zdHJ1Y3RvciIgZm9yIHRyYW5zcG9ydCBkb21haW4gb2JqZWN0LiAgCisgKi8KKwordm9pZCAgICAgICAgICAgIG5ldHNubXBfc3NoX2N0b3Iodm9pZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qTkVUU05NUF9UUkFOU1BPUlRfU1NIX0RPTUFJTiAqLworCisjZW5kaWYvKl9TTk1QU1NIRE9NQUlOX0gqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKaW5kZXggNTQwYWRmNS4uNGVkNzU1OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCkBAIC01Miw2ICs1MiwxOCBAQAogCiB2b2lkICAgICAgICAgICAgbmV0c25tcF91ZHBfY3Rvcih2b2lkKTsKIAorLyoKKyAqIHByb3RlY3RlZC1pc2ggZnVuY3Rpb25zIHVzZWQgYnkgb3RoZXIgY29yZS1jb2RlCisgKi8KK2NoYXIgKm5ldHNubXBfdWRwX2ZtdGFkZHIobmV0c25tcF90cmFuc3BvcnQgKnQsIHZvaWQgKmRhdGEsIGludCBsZW4pOworI2lmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykgfHwgXAorICAgIGRlZmluZWQoSVBfUkVDVkRTVEFERFIpICYmICFkZWZpbmVkKF9NU0NfVkVSKQoraW50IG5ldHNubXBfdWRwX3JlY3Zmcm9tKGludCBzLCB2b2lkICpidWYsIGludCBsZW4sIHN0cnVjdCBzb2NrYWRkciAqZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgKmZyb21sZW4sIHN0cnVjdCBpbl9hZGRyICpkc3RpcCk7CitpbnQgbmV0c25tcF91ZHBfc2VuZHRvKGludCBmZCwgc3RydWN0IGluX2FkZHIgKnNyY2lwLCBzdHJ1Y3Qgc29ja2FkZHIgKnJlbW90ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwgaW50IGxlbik7CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKaW5kZXggYzRlYTQ2NC4uNjgyNGE1YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKQEAgLTMxLDkgKzMxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlbW90ZV9wb3J0KTsKIAogdm9pZCAgICAgICAgICAgIG5ldHNubXBfdWRwNl9hZ2VudF9jb25maWdfdG9rZW5zX3JlZ2lzdGVyKHZvaWQpOworTkVUU05NUF9JTVBPUlQKIHZvaWQgICAgICAgICAgICBuZXRzbm1wX3VkcDZfcGFyc2Vfc2VjdXJpdHkoY29uc3QgY2hhciAqdG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBhcmFtKTsKIAorTkVUU05NUF9JTVBPUlQKIGludCAgICAgICAgICAgICBuZXRzbm1wX3VkcDZfZ2V0U2VjTmFtZSh2b2lkICpvcGFxdWUsIGludCBvbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbW11bml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29tbXVuaXR5X2xlbiwgY2hhciAqKnNlY25hbWUsCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCmluZGV4IDUxOTA5ZjcuLjVkOWU2MGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCkBAIC00MSw5ICs0MSwyMCBAQAogCiB2b2lkICAgICAgICAgICAgbmV0c25tcF91bml4X2N0b3Iodm9pZCk7CiAKKy8qCisgKiBTdXBwb3J0IGZ1bmN0aW9ucworICovCit2b2lkICAgICAgICAgICAgbmV0c25tcF91bml4X2NyZWF0ZV9wYXRoX3dpdGhfbW9kZShpbnQgbW9kZSk7Cit2b2lkICAgICAgICAgICAgbmV0c25tcF91bml4X2RvbnRfY3JlYXRlX3BhdGgodm9pZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCisjZWxzZQorCisjZGVmaW5lIG5ldHNubXBfdW5peF9jcmVhdGVfcGF0aF93aXRoX21vZGUoeCkKKyNkZWZpbmUgbmV0c25tcF91bml4X2RvbnRfY3JlYXRlX3BhdGgoKQorCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qTkVUU05NUF9UUkFOU1BPUlRfVU5JWF9ET01BSU4gKi8KIAogI2VuZGlmLypfU05NUFVOSVhET01BSU5fSCovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCmluZGV4IDJjYWQ5MmUuLmQwYmM5MDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC0yNCw2ICsyNCwxMSBAQAogICogQHsKICAqLwogCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC92YXJiaW5kX2FwaS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL3BkdV9hcGkuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9zZXNzaW9uX2FwaS5oPgorCiAjaWZuZGVmIERPTlRfU0hBUkVfRVJST1JfV0lUSF9PVEhFUl9USFJFQURTCiAjZGVmaW5lIFNFVF9TTk1QX0VSUk9SKHgpIHNubXBfZXJybm89KHgpCiAjZWxzZQpAQCAtNTcsMjU3ICs2Miw3IEBACiBTT0ZUV0FSRS4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLyoqIEB0eXBlZGVmIHN0cnVjdCB2YXJpYWJsZV9saXN0IG5ldHNubXBfdmFyaWFibGVfbGlzdAotICAgICogVHlwZWRlZnMgdGhlIHZhcmlhYmxlX2xpc3Qgc3RydWN0IGludG8gbmV0c25tcF92YXJpYWJsZV9saXN0ICovCi1zdHJ1Y3QgdmFyaWFibGVfbGlzdDsKLXR5cGVkZWYgc3RydWN0IHZhcmlhYmxlX2xpc3QgbmV0c25tcF92YXJpYWJsZV9saXN0Owogc3RydWN0IHRpbWV2YWw7Ci1zdHJ1Y3QgbmV0c25tcF90cmFuc3BvcnRfczsKLQotI2RlZmluZSBVU01fQVVUSF9LVV9MRU4gICAgIDMyCi0jZGVmaW5lIFVTTV9QUklWX0tVX0xFTiAgICAgMzIKLQotLyoqIEB0eXBlZGVmIHN0cnVjdCBzbm1wX3BkdSB0byBuZXRzbm1wX3BkdQotICAgICogVHlwZWRlZnMgdGhlIHNubXBfcGR1IHN0cnVjdCBpbnRvIG5ldHNubXBfcGR1ICovCi0vKiogQHN0cnVjdCBzbm1wX3BkdQotICogVGhlIHNubXAgcHJvdG9jb2wgZGF0YSB1bml0LgotICovCQotdHlwZWRlZiBzdHJ1Y3Qgc25tcF9wZHUgewotCi0gICAgLyoKLSAgICAgKiBQcm90b2NvbC12ZXJzaW9uIGluZGVwZW5kZW50IGZpZWxkcwotICAgICAqLwotICAgIC8qKiBzbm1wIHZlcnNpb24gKi8KLSAgICBsb25nICAgICAgICAgICAgdmVyc2lvbjsKLSAgICAvKiogVHlwZSBvZiB0aGlzIFBEVSAqLwkKLSAgICBpbnQgICAgICAgICAgICAgY29tbWFuZDsKLSAgICAvKiogUmVxdWVzdCBpZCAtIG5vdGU6IG5vdCBpbmNyZW1lbnRlZCBvbiByZXRyaWVzICovCi0gICAgbG9uZyAgICAgICAgICAgIHJlcWlkOyAgCi0gICAgLyoqIE1lc3NhZ2UgaWQgZm9yIFYzIG1lc3NhZ2VzIG5vdGU6IGluY3JlbWVudGVkIGZvciBlYWNoIHJldHJ5ICovCi0gICAgbG9uZyAgICAgICAgICAgIG1zZ2lkOwotICAgIC8qKiBVbmlxdWUgSUQgZm9yIGluY29taW5nIHRyYW5zYWN0aW9ucyAqLwotICAgIGxvbmcgICAgICAgICAgICB0cmFuc2lkOwotICAgIC8qKiBTZXNzaW9uIGlkIGZvciBBZ2VudFggbWVzc2FnZXMgKi8KLSAgICBsb25nICAgICAgICAgICAgc2Vzc2lkOwotICAgIC8qKiBFcnJvciBzdGF0dXMgKG5vbl9yZXBlYXRlcnMgaW4gR2V0QnVsaykgKi8KLSAgICBsb25nICAgICAgICAgICAgZXJyc3RhdDsKLSAgICAvKiogRXJyb3IgaW5kZXggKG1heF9yZXBldGl0aW9ucyBpbiBHZXRCdWxrKSAqLwotICAgIGxvbmcgICAgICAgICAgICBlcnJpbmRleDsgICAgICAgCi0gICAgLyoqIFVwdGltZSAqLwotICAgIHVfbG9uZyAgICAgICAgICB0aW1lOyAgIAotICAgIHVfbG9uZyAgICAgICAgICBmbGFnczsKLQotICAgIGludCAgICAgICAgICAgICBzZWN1cml0eU1vZGVsOwotICAgIC8qKiBub0F1dGhOb1ByaXYsIGF1dGhOb1ByaXYsIGF1dGhQcml2ICovCi0gICAgaW50ICAgICAgICAgICAgIHNlY3VyaXR5TGV2ZWw7ICAKLSAgICBpbnQgICAgICAgICAgICAgbXNnUGFyc2VNb2RlbDsKLQotICAgIC8qKgotICAgICAqIFRyYW5zcG9ydC1zcGVjaWZpYyBvcGFxdWUgZGF0YS4gIFRoaXMgcmVwbGFjZXMgdGhlIElQLWNlbnRyaWMgYWRkcmVzcwotICAgICAqIGZpZWxkLiAgCi0gICAgICovCi0gICAgCi0gICAgdm9pZCAgICAgICAgICAgKnRyYW5zcG9ydF9kYXRhOwotICAgIGludCAgICAgICAgICAgICB0cmFuc3BvcnRfZGF0YV9sZW5ndGg7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgYWN0dWFsIHRyYW5zcG9ydCBkb21haW4uICBUaGlzIFNIT1VMRCBOT1QgQkUgRlJFRSgpRC4gIAotICAgICAqLwotCi0gICAgY29uc3Qgb2lkICAgICAgKnREb21haW47Ci0gICAgc2l6ZV90ICAgICAgICAgIHREb21haW5MZW47Ci0KLSAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcmlhYmxlczsKLQotCi0gICAgLyoKLSAgICAgKiBTTk1QdjEgJiBTTk1QdjJjIGZpZWxkcwotICAgICAqLwotICAgIC8qKiBjb21tdW5pdHkgZm9yIG91dGdvaW5nIHJlcXVlc3RzLiAqLwotICAgIHVfY2hhciAgICAgICAgICpjb21tdW5pdHk7Ci0gICAgLyoqIGxlbmd0aCBvZiBjb21tdW5pdHkgbmFtZS4gKi8KLSAgICBzaXplX3QgICAgICAgICAgY29tbXVuaXR5X2xlbjsgIAotCi0gICAgLyoKLSAgICAgKiBUcmFwIGluZm9ybWF0aW9uCi0gICAgICovCi0gICAgLyoqIFN5c3RlbSBPSUQgKi8KLSAgICBvaWQgICAgICAgICAgICAqZW50ZXJwcmlzZTsgICAgIAotICAgIHNpemVfdCAgICAgICAgICBlbnRlcnByaXNlX2xlbmd0aDsKLSAgICAvKiogdHJhcCB0eXBlICovCi0gICAgbG9uZyAgICAgICAgICAgIHRyYXBfdHlwZTsKLSAgICAvKiogc3BlY2lmaWMgdHlwZSAqLwotICAgIGxvbmcgICAgICAgICAgICBzcGVjaWZpY190eXBlOwotICAgIC8qKiBUaGlzIGlzIE9OTFkgdXNlZCBmb3IgdjEgVFJBUHMgICovCi0gICAgdW5zaWduZWQgY2hhciAgIGFnZW50X2FkZHJbNF07ICAKLQotICAgIC8qCi0gICAgICogIFNOTVB2MyBmaWVsZHMKLSAgICAgKi8KLSAgICAvKiogY29udGV4dCBzbm1wRW5naW5lSUQgKi8KLSAgICB1X2NoYXIgICAgICAgICAqY29udGV4dEVuZ2luZUlEOwotICAgIC8qKiBMZW5ndGggb2YgY29udGV4dEVuZ2luZUlEICovCi0gICAgc2l6ZV90ICAgICAgICAgIGNvbnRleHRFbmdpbmVJRExlbjsgICAgIAotICAgIC8qKiBhdXRob3JpdGF0aXZlIGNvbnRleHROYW1lICovCi0gICAgY2hhciAgICAgICAgICAgKmNvbnRleHROYW1lOwotICAgIC8qKiBMZW5ndGggb2YgY29udGV4dE5hbWUgKi8KLSAgICBzaXplX3QgICAgICAgICAgY29udGV4dE5hbWVMZW47Ci0gICAgLyoqIGF1dGhvcml0YXRpdmUgc25tcEVuZ2luZUlEIGZvciBzZWN1cml0eSAqLwotICAgIHVfY2hhciAgICAgICAgICpzZWN1cml0eUVuZ2luZUlEOwotICAgIC8qKiBMZW5ndGggb2Ygc2VjdXJpdHlFbmdpbmVJRCAqLwotICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eUVuZ2luZUlETGVuOyAgICAKLSAgICAvKiogb24gYmVoYWxmIG9mIHRoaXMgcHJpbmNpcGFsICovCi0gICAgY2hhciAgICAgICAgICAgKnNlY3VyaXR5TmFtZTsKLSAgICAvKiogTGVuZ3RoIG9mIHNlY3VyaXR5TmFtZS4gKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlOYW1lTGVuOyAgICAgICAgCi0gICAgCi0gICAgLyoKLSAgICAgKiBBZ2VudFggZmllbGRzCi0gICAgICogICAgICAoYWxzbyB1c2VzIFNOTVB2MSBjb21tdW5pdHkgZmllbGQpCi0gICAgICovCi0gICAgaW50ICAgICAgICAgICAgIHByaW9yaXR5OwotICAgIGludCAgICAgICAgICAgICByYW5nZV9zdWJpZDsKLSAgICAKLSAgICB2b2lkICAgICAgICAgICAqc2VjdXJpdHlTdGF0ZVJlZjsKLX0gbmV0c25tcF9wZHU7Ci0KLXN0cnVjdCBzbm1wX3Nlc3Npb247Ci0KLS8qKiBAdHlwZWRlZiBzdHJ1Y3Qgc25tcF9zZXNzaW9uIG5ldHNubXBfc2Vzc2lvbgotICogVHlwZWRlZnMgdGhlIHNubXBfc2Vzc2lvbiBzdHJ1Y3QgaW50b25ldHNubXBfc2Vzc2lvbiAqLwotdHlwZWRlZiBzdHJ1Y3Qgc25tcF9zZXNzaW9uIG5ldHNubXBfc2Vzc2lvbjsKLQotdHlwZWRlZiBpbnQgICAgICgqc25tcF9jYWxsYmFjaykgKGludCwgbmV0c25tcF9zZXNzaW9uICosIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiwgdm9pZCAqKTsKLXR5cGVkZWYgaW50ICAgICAoKm5ldHNubXBfY2FsbGJhY2spIChpbnQsIG5ldHNubXBfc2Vzc2lvbiAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICosIHZvaWQgKik7Ci0vKiogQHN0cnVjdCBzbm1wX3Nlc3Npb24KLSAqIFRoZSBzbm1wIHNlc3Npb24gc3RydWN0dXJlLgotICovCi1zdHJ1Y3Qgc25tcF9zZXNzaW9uIHsKLSAgICAvKgotICAgICAqIFByb3RvY29sLXZlcnNpb24gaW5kZXBlbmRlbnQgZmllbGRzCi0gICAgICovCi0gICAgLyoqIHNubXAgdmVyc2lvbiAqLwotICAgIGxvbmcgICAgICAgICAgICB2ZXJzaW9uOwotICAgIC8qKiBOdW1iZXIgb2YgcmV0cmllcyBiZWZvcmUgdGltZW91dC4gKi8KLSAgICBpbnQgICAgICAgICAgICAgcmV0cmllczsKLSAgICAvKiogTnVtYmVyIG9mIHVTIHVudGlsIGZpcnN0IHRpbWVvdXQsIHRoZW4gZXhwb25lbnRpYWwgYmFja29mZiAqLwotICAgIGxvbmcgICAgICAgICAgICB0aW1lb3V0OyAgICAgICAgCi0gICAgdV9sb25nICAgICAgICAgIGZsYWdzOwotICAgIHN0cnVjdCBzbm1wX3Nlc3Npb24gKnN1YnNlc3Npb247Ci0gICAgc3RydWN0IHNubXBfc2Vzc2lvbiAqbmV4dDsKLQotICAgIC8qKiBuYW1lIG9yIGFkZHJlc3Mgb2YgZGVmYXVsdCBwZWVyIChtYXkgaW5jbHVkZSB0cmFuc3BvcnQgc3BlY2lmaWVyIGFuZC9vciBwb3J0IG51bWJlcikgKi8KLSAgICBjaGFyICAgICAgICAgICAqcGVlcm5hbWU7Ci0gICAgLyoqIFVEUCBwb3J0IG51bWJlciBvZiBwZWVyLiAoTk8gTE9OR0VSIFVTRUQgLSBVU0UgcGVlcm5hbWUgSU5TVEVBRCkgKi8KLSAgICB1X3Nob3J0ICAgICAgICAgcmVtb3RlX3BvcnQ7Ci0gICAgLyoqIE15IERvbWFpbiBuYW1lIG9yIGRvdHRlZCBJUCBhZGRyZXNzLCAwIGZvciBkZWZhdWx0ICovCi0gICAgY2hhciAgICAgICAgICAgKmxvY2FsbmFtZTsKLSAgICAvKiogTXkgVURQIHBvcnQgbnVtYmVyLCAwIGZvciBkZWZhdWx0LCBwaWNrZWQgcmFuZG9tbHkgKi8KLSAgICB1X3Nob3J0ICAgICAgICAgbG9jYWxfcG9ydDsgICAgIAotICAgIC8qKgotICAgICAqIEF1dGhlbnRpY2F0aW9uIGZ1bmN0aW9uIG9yIE5VTEwgaWYgbnVsbCBhdXRoZW50aWNhdGlvbiBpcyB1c2VkIAotICAgICAqLwotICAgIHVfY2hhciAgICAgICAgICooKmF1dGhlbnRpY2F0b3IpICh1X2NoYXIgKiwgc2l6ZV90ICosIHVfY2hhciAqLCBzaXplX3QpOwotICAgIC8qKiBGdW5jdGlvbiB0byBpbnRlcnByZXQgaW5jb21pbmcgZGF0YSAqLwotICAgIG5ldHNubXBfY2FsbGJhY2sgY2FsbGJhY2s7ICAgICAgCi0gICAgLyoqCi0gICAgICogUG9pbnRlciB0byBkYXRhIHRoYXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG1heSBjb25zaWRlciBpbXBvcnRhbnQgCi0gICAgICovCi0gICAgdm9pZCAgICAgICAgICAgKmNhbGxiYWNrX21hZ2ljOwotICAgIC8qKiBjb3B5IG9mIHN5c3RlbSBlcnJubyAqLwotICAgIGludCAgICAgICAgICAgICBzX2Vycm5vOwotICAgIC8qKiBjb3B5IG9mIGxpYnJhcnkgZXJybm8gKi8KLSAgICBpbnQgICAgICAgICAgICAgc19zbm1wX2Vycm5vOyAgIAotICAgIC8qKiBTZXNzaW9uIGlkIC0gQWdlbnRYIG9ubHkgKi8KLSAgICBsb25nICAgICAgICAgICAgc2Vzc2lkOyAKLQotICAgIC8qCi0gICAgICogU05NUHYxICYgU05NUHYyYyBmaWVsZHMKLSAgICAgKi8KLSAgICAvKiogY29tbXVuaXR5IGZvciBvdXRnb2luZyByZXF1ZXN0cy4gKi8KLSAgICB1X2NoYXIgICAgICAgICAqY29tbXVuaXR5OwotICAgIC8qKiBMZW5ndGggb2YgY29tbXVuaXR5IG5hbWUuICovCi0gICAgc2l6ZV90ICAgICAgICAgIGNvbW11bml0eV9sZW47ICAKLSAgICAvKiogIExhcmdlc3QgbWVzc2FnZSB0byB0cnkgdG8gcmVjZWl2ZS4gICovCi0gICAgc2l6ZV90ICAgICAgICAgIHJjdk1zZ01heFNpemU7Ci0gICAgLyoqICBMYXJnZXN0IG1lc3NhZ2UgdG8gdHJ5IHRvIHNlbmQuICAqLwotICAgIHNpemVfdCAgICAgICAgICBzbmRNc2dNYXhTaXplOyAgCi0KLSAgICAvKgotICAgICAqIFNOTVB2MyBmaWVsZHMKLSAgICAgKi8KLSAgICAvKiogYXJlIHdlIHRoZSBhdXRob3JpdGF0aXZlIGVuZ2luZT8gKi8KLSAgICB1X2NoYXIgICAgICAgICAgaXNBdXRob3JpdGF0aXZlOwotICAgIC8qKiBhdXRob3JpdGF0aXZlIHNubXBFbmdpbmVJRCAqLwotICAgIHVfY2hhciAgICAgICAgICpjb250ZXh0RW5naW5lSUQ7Ci0gICAgLyoqIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQgKi8KLSAgICBzaXplX3QgICAgICAgICAgY29udGV4dEVuZ2luZUlETGVuOyAgICAgCi0gICAgLyoqIGluaXRpYWwgZW5naW5lQm9vdHMgZm9yIHJlbW90ZSBlbmdpbmUgKi8KLSAgICB1X2ludCAgICAgICAgICAgZW5naW5lQm9vdHM7Ci0gICAgLyoqIGluaXRpYWwgZW5naW5lVGltZSBmb3IgcmVtb3RlIGVuZ2luZSAqLwotICAgIHVfaW50ICAgICAgICAgICBlbmdpbmVUaW1lOwotICAgIC8qKiBhdXRob3JpdGF0aXZlIGNvbnRleHROYW1lICovCi0gICAgY2hhciAgICAgICAgICAgKmNvbnRleHROYW1lOwotICAgIC8qKiBMZW5ndGggb2YgY29udGV4dE5hbWUgKi8KLSAgICBzaXplX3QgICAgICAgICAgY29udGV4dE5hbWVMZW47Ci0gICAgLyoqIGF1dGhvcml0YXRpdmUgc25tcEVuZ2luZUlEICovCi0gICAgdV9jaGFyICAgICAgICAgKnNlY3VyaXR5RW5naW5lSUQ7Ci0gICAgLyoqIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQgKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlFbmdpbmVJRExlbjsgICAgCi0gICAgLyoqIG9uIGJlaGFsZiBvZiB0aGlzIHByaW5jaXBhbCAqLwotICAgIGNoYXIgICAgICAgICAgICpzZWN1cml0eU5hbWU7Ci0gICAgLyoqIExlbmd0aCBvZiBzZWN1cml0eU5hbWUuICovCi0gICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5TmFtZUxlbjsKLQotICAgIC8qKiBhdXRoIHByb3RvY29sIG9pZCAqLwotICAgIG9pZCAgICAgICAgICAgICpzZWN1cml0eUF1dGhQcm90bzsKLSAgICAvKiogTGVuZ3RoIG9mIGF1dGggcHJvdG9jb2wgb2lkICovCi0gICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5QXV0aFByb3RvTGVuOwotICAgIC8qKiBLdSBmb3IgYXV0aCBwcm90b2NvbCBYWFggKi8KLSAgICB1X2NoYXIgICAgICAgICAgc2VjdXJpdHlBdXRoS2V5W1VTTV9BVVRIX0tVX0xFTl07ICAgICAgIAotICAgIC8qKiBMZW5ndGggb2YgS3UgZm9yIGF1dGggcHJvdG9jb2wgKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlBdXRoS2V5TGVuOwotICAgIC8qKiBLdWwgZm9yIGF1dGggcHJvdG9jb2wgKi8KLSAgICB1X2NoYXIgICAgICAgICAgKnNlY3VyaXR5QXV0aExvY2FsS2V5OyAgICAgICAKLSAgICAvKiogTGVuZ3RoIG9mIEt1bCBmb3IgYXV0aCBwcm90b2NvbCBYWFggKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlBdXRoTG9jYWxLZXlMZW47ICAgICAgIAotCi0gICAgLyoqIHByaXYgcHJvdG9jb2wgb2lkICovCi0gICAgb2lkICAgICAgICAgICAgKnNlY3VyaXR5UHJpdlByb3RvOwotICAgIC8qKiBMZW5ndGggb2YgcHJpdiBwcm90b2NvbCBvaWQgKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlQcml2UHJvdG9MZW47Ci0gICAgLyoqIEt1IGZvciBwcml2YWN5IHByb3RvY29sIFhYWCAqLwotICAgIHVfY2hhciAgICAgICAgICBzZWN1cml0eVByaXZLZXlbVVNNX1BSSVZfS1VfTEVOXTsgICAgICAgCi0gICAgLyoqIExlbmd0aCBvZiBLdSBmb3IgcHJpdiBwcm90b2NvbCAqLwotICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eVByaXZLZXlMZW47Ci0gICAgLyoqIEt1bCBmb3IgcHJpdiBwcm90b2NvbCAqLwotICAgIHVfY2hhciAgICAgICAgICAqc2VjdXJpdHlQcml2TG9jYWxLZXk7ICAgICAgIAotICAgIC8qKiBMZW5ndGggb2YgS3VsIGZvciBwcml2IHByb3RvY29sIFhYWCAqLwotICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eVByaXZMb2NhbEtleUxlbjsgICAgICAgCi0KLSAgICAvKiogc25tcCBzZWN1cml0eSBtb2RlbCwgdjEsIHYyYywgdXNtICovCi0gICAgaW50ICAgICAgICAgICAgIHNlY3VyaXR5TW9kZWw7Ci0gICAgLyoqIG5vQXV0aE5vUHJpdiwgYXV0aE5vUHJpdiwgYXV0aFByaXYgKi8KLSAgICBpbnQgICAgICAgICAgICAgc2VjdXJpdHlMZXZlbDsgIAotICAgIC8qKiB0YXJnZXQgcGFyYW0gbmFtZSAqLwotICAgIGNoYXIgICAgICAgICAgICpwYXJhbU5hbWU7Ci0KLSAgICAvKioKLSAgICAgKiBzZWN1cml0eSBtb2R1bGUgc3BlY2lmaWMgCi0gICAgICovCi0gICAgdm9pZCAgICAgICAgICAgKnNlY3VyaXR5SW5mbzsKLQotICAgIC8qKgotICAgICAqIHVzZSBhcyB5b3Ugd2FudCBkYXRhIAotICAgICAqCi0gICAgICogICAgIHVzZWQgYnkgJ1NOTVBfRkxBR1NfUkVTUF9DQUxMQkFDSycgaGFuZGxpbmcgaW4gdGhlIGFnZW50Ci0gICAgICogWFhYOiBvciBzaG91bGQgd2UgYWRkIGEgbmV3IGZpZWxkIGludG8gdGhpcyBzdHJ1Y3R1cmU/Ci0gICAgICovCi0gICAgdm9pZCAgICAgICAgICAgKm15dm9pZDsKLX07Ci0KIC8qCiAgKiBBIGxpc3Qgb2YgYWxsIHRoZSBvdXRzdGFuZGluZyByZXF1ZXN0cyBmb3IgYSBwYXJ0aWN1bGFyIHNlc3Npb24uCiAgKi8KQEAgLTQwNCw2ICsxNTksNyBAQAogCiAjZGVmaW5lIFNOTVBfREVUQUlMX1NJWkUgICAgICAgIDUxMgogCisjZGVmaW5lIFNOTVBfRkxBR1NfVURQX0JST0FEQ0FTVCAgIDB4ODAwCiAjZGVmaW5lIFNOTVBfRkxBR1NfUkVTUF9DQUxMQkFDSyAgIDB4NDAwICAgICAgLyogQWRkaXRpb25hbCBjYWxsYmFjayBvbiByZXNwb25zZSAqLwogI2RlZmluZSBTTk1QX0ZMQUdTX1VTRVJfQ1JFQVRFRCAgICAweDIwMCAgICAgIC8qIFVTTSB1c2VyIGhhcyBiZWVuIGNyZWF0ZWQgKi8KICNkZWZpbmUgU05NUF9GTEFHU19ET05UX1BST0JFICAgICAgMHgxMDAgICAgICAvKiBkb24ndCBwcm9iZSBmb3IgYW4gZW5naW5lSUQgKi8KQEAgLTUwMCwxMzIgKzI1NiwyNiBAQAogI2RlZmluZSBTTk1QRVJSX0tSQjUJCQkoLTYzKQogI2RlZmluZSBTTk1QRVJSX1BST1RPQ09MCQkoLTY0KQogI2RlZmluZSBTTk1QRVJSX09JRF9OT05JTkNSRUFTSU5HICAgICAgICgtNjUpCisjZGVmaW5lIFNOTVBFUlJfSlVTVF9BX0NPTlRFWFRfUFJPQkUgICAgKC02NikKIAotI2RlZmluZSBTTk1QRVJSX01BWAkJCSgtNjUpCi0KLSNkZWZpbmUgbm9uX3JlcGVhdGVycwllcnJzdGF0Ci0jZGVmaW5lIG1heF9yZXBldGl0aW9ucyBlcnJpbmRleAotCi10eXBlZGVmIHVuaW9uIHsKLSAgIGxvbmcgICAgICAgICAgICppbnRlZ2VyOwotICAgdV9jaGFyICAgICAgICAgKnN0cmluZzsKLSAgIG9pZCAgICAgICAgICAgICpvYmppZDsKLSAgIHVfY2hhciAgICAgICAgICpiaXRzdHJpbmc7Ci0gICBzdHJ1Y3QgY291bnRlcjY0ICpjb3VudGVyNjQ7Ci0jaWZkZWYgTkVUU05NUF9XSVRIX09QQVFVRV9TUEVDSUFMX1RZUEVTCi0gICBmbG9hdCAgICAgICAgICAqZmxvYXRWYWw7Ci0gICBkb3VibGUgICAgICAgICAqZG91YmxlVmFsOwotICAgLyoKLSAgICAqIHRfdW5pb24gKnVuaW9uVmFsOyAKLSAgICAqLwotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMgKi8KLX0gbmV0c25tcF92YXJkYXRhOwotCi0KLS8qKiBAc3RydWN0IHZhcmlhYmxlX2xpc3QKLSAqIFRoZSBuZXRzbm1wIHZhcmlhYmxlIGxpc3QgYmluZGluZyBzdHJ1Y3R1cmUsIGl0J3MgdHlwZWRlZidkIHRvCi0gKiBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QuCi0gKi8KLXN0cnVjdCB2YXJpYWJsZV9saXN0IHsKLSAgIC8qKiBOVUxMIGZvciBsYXN0IHZhcmlhYmxlICovCi0gICBzdHJ1Y3QgdmFyaWFibGVfbGlzdCAqbmV4dF92YXJpYWJsZTsgICAgCi0gICAvKiogT2JqZWN0IGlkZW50aWZpZXIgb2YgdmFyaWFibGUgKi8KLSAgIG9pZCAgICAgICAgICAgICpuYW1lOyAgIAotICAgLyoqIG51bWJlciBvZiBzdWJpZCdzIGluIG5hbWUgKi8KLSAgIHNpemVfdCAgICAgICAgICBuYW1lX2xlbmd0aDsgICAgCi0gICAvKiogQVNOIHR5cGUgb2YgdmFyaWFibGUgKi8KLSAgIHVfY2hhciAgICAgICAgICB0eXBlOyAgIAotICAgLyoqIHZhbHVlIG9mIHZhcmlhYmxlICovCi0gICAgbmV0c25tcF92YXJkYXRhIHZhbDsKLSAgIC8qKiB0aGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSB0byBiZSBjb3BpZWQgaW50byBidWYgKi8KLSAgIHNpemVfdCAgICAgICAgICB2YWxfbGVuOwotICAgLyoqIGJ1ZmZlciB0byBob2xkIHRoZSBPSUQgKi8KLSAgIG9pZCAgICAgICAgICAgICBuYW1lX2xvY1tNQVhfT0lEX0xFTl07ICAKLSAgIC8qKiA5MCBwZXJjZW50aWxlIDwgNDAuICovCi0gICB1X2NoYXIgICAgICAgICAgYnVmWzQwXTsKLSAgIC8qKiAoT3BhcXVlKSBob29rIGZvciBhZGRpdGlvbmFsIGRhdGEgKi8KLSAgIHZvaWQgICAgICAgICAgICpkYXRhOwotICAgLyoqIGNhbGxiYWNrIHRvIGZyZWUgYWJvdmUgKi8KLSAgIHZvaWQgICAgICAgICAgICAoKmRhdGFGcmVlSG9vaykodm9pZCAqKTsgICAgCi0gICBpbnQgICAgICAgICAgICAgaW5kZXg7Ci19OwotCi0KLQotICAgIC8qCi0gICAgICogbmV0c25tcF9zZXNzaW9uICpzbm1wX29wZW4oc2Vzc2lvbikKLSAgICAgKiAgICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKLSAgICAgKgotICAgICAqIFNldHMgdXAgdGhlIHNlc3Npb24gd2l0aCB0aGUgc25tcF9zZXNzaW9uIGluZm9ybWF0aW9uIHByb3ZpZGVkCi0gICAgICogYnkgdGhlIHVzZXIuICBUaGVuIG9wZW5zIGFuZCBiaW5kcyB0aGUgbmVjZXNzYXJ5IFVEUCBwb3J0LgotICAgICAqIEEgaGFuZGxlIHRvIHRoZSBjcmVhdGVkIHNlc3Npb24gaXMgcmV0dXJuZWQgKHRoaXMgaXMgZGlmZmVyZW50IHRoYW4KLSAgICAgKiB0aGUgcG9pbnRlciBwYXNzZWQgdG8gc25tcF9vcGVuKCkpLiAgT24gYW55IGVycm9yLCBOVUxMIGlzIHJldHVybmVkCi0gICAgICogYW5kIHNubXBfZXJybm8gaXMgc2V0IHRvIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgotICAgICAqLwotICAgIG5ldHNubXBfc2Vzc2lvbiAqc25tcF9vcGVuKG5ldHNubXBfc2Vzc2lvbiAqKTsKLQotICAgIC8qCi0gICAgICogaW50IHNubXBfY2xvc2Uoc2Vzc2lvbikKLSAgICAgKiAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOwotICAgICAqCi0gICAgICogQ2xvc2UgdGhlIGlucHV0IHNlc3Npb24uICBGcmVlcyBhbGwgZGF0YSBhbGxvY2F0ZWQgZm9yIHRoZSBzZXNzaW9uLAotICAgICAqIGRlcXVldWVzIGFueSBwZW5kaW5nIHJlcXVlc3RzLCBhbmQgY2xvc2VzIGFueSBzb2NrZXRzIGFsbG9jYXRlZCBmb3IKLSAgICAgKiB0aGUgc2Vzc2lvbi4gIFJldHVybnMgMCBvbiBlcnJvciwgMSBvdGhlcndpc2UuCi0gICAgICoKLSAgICAgKiBzbm1wX2Nsb3NlX3Nlc3Npb25zKCkgZG9lcyB0aGUgc2FtZSB0aGluZyBmb3IgYWxsIG9wZW4gc2Vzc2lvbnMKLSAgICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgc25tcF9jbG9zZShuZXRzbm1wX3Nlc3Npb24gKik7Ci0gICAgaW50ICAgICAgICAgICAgIHNubXBfY2xvc2Vfc2Vzc2lvbnModm9pZCk7CisjZGVmaW5lIFNOTVBFUlJfTUFYCQkJKC02NikKIAogCiAgICAgLyoKLSAgICAgKiBpbnQgc25tcF9zZW5kKHNlc3Npb24sIHBkdSkKLSAgICAgKiAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOwotICAgICAqICAgICBuZXRzbm1wX3BkdSAgICAgICpwZHU7Ci0gICAgICoKLSAgICAgKiBTZW5kcyB0aGUgaW5wdXQgcGR1IG9uIHRoZSBzZXNzaW9uIGFmdGVyIGNhbGxpbmcgc25tcF9idWlsZCB0byBjcmVhdGUKLSAgICAgKiBhIHNlcmlhbGl6ZWQgcGFja2V0LiAgSWYgbmVjZXNzYXJ5LCBzZXQgc29tZSBvZiB0aGUgcGR1IGRhdGEgZnJvbSB0aGUKLSAgICAgKiBzZXNzaW9uIGRlZmF1bHRzLiAgQWRkIGEgcmVxdWVzdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgcGR1IHRvIHRoZSBsaXN0Ci0gICAgICogb2Ygb3V0c3RhbmRpbmcgcmVxdWVzdHMgb24gdGhpcyBzZXNzaW9uLCB0aGVuIHNlbmQgdGhlIHBkdS4KLSAgICAgKiBSZXR1cm5zIHRoZSByZXF1ZXN0IGlkIG9mIHRoZSBnZW5lcmF0ZWQgcGFja2V0IGlmIGFwcGxpY2FibGUsIG90aGVyd2lzZSAxLgotICAgICAqIE9uIGFueSBlcnJvciwgMCBpcyByZXR1cm5lZC4KLSAgICAgKiBUaGUgcGR1IGlzIGZyZWVkIGJ5IHNubXBfc2VuZCgpIHVubGVzcyBhIGZhaWx1cmUgb2NjdXJlZC4KKyAgICAgKiBHZW5lcmFsIHB1cnBvc2UgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zLiBVc2UgdGhlc2UgZnVuY3Rpb25zIHRvCisgICAgICogYWxsb2NhdGUgbWVtb3J5IHRoYXQgbWF5IGJlIHJlYWxsb2NhdGVkIG9yIGZyZWVkIGJ5IHRoZSBOZXQtU05NUAorICAgICAqIGxpYnJhcnkgb3IgdG8gcmVhbGxvY2F0ZSBvciBmcmVlIG1lbW9yeSB0aGF0IGhhcyBiZWVuIGFsbG9jYXRlZCBieSB0aGUKKyAgICAgKiBOZXQtU05NUCBsaWJyYXJ5LCBhbmQgd2hlbiB3b3JraW5nIGluIGEgY29udGV4dCB3aGVyZSB0aGVyZSBpcyBtb3JlIHRoYW4KKyAgICAgKiBvbmUgaGVhcC4gRXhhbXBsZXMgYXJlOgorICAgICAqIC0gUGVybCBYU1VCJ3MuCisgICAgICogLSBNU1ZDIG9yIE1pbkdXIHdpdGggdGhlIE5ldC1TTk1QIGxpYnJhcnkgY29tcGlsZWQgYXMgYSBETEwgaW5zdGVhZCBvZgorICAgICAqICAgYSBzdGF0aWMgbGlicmFyeS4KICAgICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZW5kKG5ldHNubXBfc2Vzc2lvbiAqLCBuZXRzbm1wX3BkdSAqKTsKLQotICAgIC8qCi0gICAgICogaW50IHNubXBfYXN5bmNfc2VuZChzZXNzaW9uLCBwZHUsIGNhbGxiYWNrLCBjYl9kYXRhKQotICAgICAqICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247Ci0gICAgICogICAgIG5ldHNubXBfcGR1ICAgICAgKnBkdTsKLSAgICAgKiAgICAgbmV0c25tcF9jYWxsYmFjayBjYWxsYmFjazsKLSAgICAgKiAgICAgdm9pZCAgICpjYl9kYXRhOwotICAgICAqCi0gICAgICogU2VuZHMgdGhlIGlucHV0IHBkdSBvbiB0aGUgc2Vzc2lvbiBhZnRlciBjYWxsaW5nIHNubXBfYnVpbGQgdG8gY3JlYXRlCi0gICAgICogYSBzZXJpYWxpemVkIHBhY2tldC4gIElmIG5lY2Vzc2FyeSwgc2V0IHNvbWUgb2YgdGhlIHBkdSBkYXRhIGZyb20gdGhlCi0gICAgICogc2Vzc2lvbiBkZWZhdWx0cy4gIEFkZCBhIHJlcXVlc3QgY29ycmVzcG9uZGluZyB0byB0aGlzIHBkdSB0byB0aGUgbGlzdAotICAgICAqIG9mIG91dHN0YW5kaW5nIHJlcXVlc3RzIG9uIHRoaXMgc2Vzc2lvbiBhbmQgc3RvcmUgY2FsbGJhY2sgYW5kIGRhdGEsCi0gICAgICogdGhlbiBzZW5kIHRoZSBwZHUuCi0gICAgICogUmV0dXJucyB0aGUgcmVxdWVzdCBpZCBvZiB0aGUgZ2VuZXJhdGVkIHBhY2tldCBpZiBhcHBsaWNhYmxlLCBvdGhlcndpc2UgMS4KLSAgICAgKiBPbiBhbnkgZXJyb3IsIDAgaXMgcmV0dXJuZWQuCi0gICAgICogVGhlIHBkdSBpcyBmcmVlZCBieSBzbm1wX3NlbmQoKSB1bmxlc3MgYSBmYWlsdXJlIG9jY3VyZWQuCi0gICAgICovCi0gICAgaW50ICAgICAgICAgICAgIHNubXBfYXN5bmNfc2VuZChuZXRzbm1wX3Nlc3Npb24gKiwgbmV0c25tcF9wZHUgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FsbGJhY2ssIHZvaWQgKik7Ci0KLQotICAgIC8qCi0gICAgICogdm9pZCBzbm1wX3JlYWQoZmRzZXQpCi0gICAgICogICAgIGZkX3NldCAgKmZkc2V0OwotICAgICAqCi0gICAgICogQ2hlY2tzIHRvIHNlZSBpZiBhbnkgb2YgdGhlIGZkJ3Mgc2V0IGluIHRoZSBmZHNldCBiZWxvbmcgdG8KLSAgICAgKiBzbm1wLiAgRWFjaCBzb2NrZXQgd2l0aCBpdCdzIGZkIHNldCBoYXMgYSBwYWNrZXQgcmVhZCBmcm9tIGl0Ci0gICAgICogYW5kIHNubXBfcGFyc2UgaXMgY2FsbGVkIG9uIHRoZSBwYWNrZXQgcmVjZWl2ZWQuICBUaGUgcmVzdWx0aW5nIHBkdQotICAgICAqIGlzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgcm91dGluZSBmb3IgdGhhdCBzZXNzaW9uLiAgSWYgdGhlIGNhbGxiYWNrCi0gICAgICogcm91dGluZSByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlIHBkdSBhbmQgaXQncyByZXF1ZXN0IGFyZSBkZWxldGVkLgotICAgICAqLwotICAgIHZvaWQgICAgICAgICAgICBzbm1wX3JlYWQoZmRfc2V0ICopOwotCi0KKyAgICBORVRTTk1QX0lNUE9SVCB2b2lkICpuZXRzbm1wX21hbGxvYyhzaXplX3Qgc2l6ZSk7CisgICAgTkVUU05NUF9JTVBPUlQgdm9pZCAqbmV0c25tcF9jYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKKyAgICBORVRTTk1QX0lNUE9SVCB2b2lkICpuZXRzbm1wX3JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CisgICAgTkVUU05NUF9JTVBPUlQgdm9pZCBuZXRzbm1wX2ZyZWUodm9pZCAqcHRyKTsKKyAgICBORVRTTk1QX0lNUE9SVCBjaGFyICpuZXRzbm1wX3N0cmR1cChjb25zdCBjaGFyICpzMSk7CiAKICAgICAvKgogICAgICAqIHZvaWQKQEAgLTYzNCw1NyArMjg0LDggQEAKICAgICAgKgogICAgICAqIEZyZWVzIHRoZSBwZHUgYW5kIGFueSBtYWxsb2MnZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCBpdC4KICAgICAgKi8KLSAgICB2b2lkICAgICAgICAgICAgc25tcF9mcmVlX3BkdShuZXRzbm1wX3BkdSAqKTsKIAotICAgIHZvaWQgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKTsgICAgIC8qIGZyZWVzIGp1c3QgdGhpcyBvbmUgKi8KLQotICAgIHZvaWQgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIpOyAgICAgLyogZnJlZXMgYWxsIGluIGxpc3QgKi8KLQotICAgIC8qCi0gICAgICogaW50IHNubXBfc2VsZWN0X2luZm8obnVtZmRzLCBmZHNldCwgdGltZW91dCwgYmxvY2spCi0gICAgICogaW50ICpudW1mZHM7Ci0gICAgICogZmRfc2V0ICAgKmZkc2V0OwotICAgICAqIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0OwotICAgICAqIGludCAqYmxvY2s7Ci0gICAgICoKLSAgICAgKiBSZXR1cm5zIGluZm8gYWJvdXQgd2hhdCBzbm1wIHJlcXVpcmVzIGZyb20gYSBzZWxlY3Qgc3RhdGVtZW50LgotICAgICAqIG51bWZkcyBpcyB0aGUgbnVtYmVyIG9mIGZkcyBpbiB0aGUgbGlzdCB0aGF0IGFyZSBzaWduaWZpY2FudC4KLSAgICAgKiBBbGwgZmlsZSBkZXNjcmlwdG9ycyBvcGVuZWQgZm9yIFNOTVAgYXJlIE9SJ2QgaW50byB0aGUgZmRzZXQuCi0gICAgICogSWYgYWN0aXZpdHkgb2NjdXJzIG9uIGFueSBvZiB0aGVzZSBmaWxlIGRlc2NyaXB0b3JzLCBzbm1wX3JlYWQKLSAgICAgKiBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhhdCBmaWxlIGRlc2NyaXB0b3Igc2V0LgotICAgICAqCi0gICAgICogVGhlIHRpbWVvdXQgaXMgdGhlIGxhdGVzdCB0aW1lIHRoYXQgU05NUCBjYW4gd2FpdCBmb3IgYSB0aW1lb3V0LiAgVGhlCi0gICAgICogc2VsZWN0IHNob3VsZCBiZSBkb25lIHdpdGggdGhlIG1pbmltdW0gdGltZSBiZXR3ZWVuIHRpbWVvdXQgYW5kIGFueSBvdGhlcgotICAgICAqIHRpbWVvdXRzIG5lY2Vzc2FyeS4gIFRoaXMgc2hvdWxkIGJlIGNoZWNrZWQgdXBvbiBlYWNoIGludm9jYXRpb24gb2Ygc2VsZWN0LgotICAgICAqIElmIGEgdGltZW91dCBpcyByZWNlaXZlZCwgc25tcF90aW1lb3V0IHNob3VsZCBiZSBjYWxsZWQgdG8gY2hlY2sgaWYgdGhlCi0gICAgICogdGltZW91dCB3YXMgZm9yIFNOTVAuICAoc25tcF90aW1lb3V0IGlzIGlkZW1wb3RlbnQpCi0gICAgICoKLSAgICAgKiBCbG9jayBpcyAxIGlmIHRoZSBzZWxlY3QgaXMgcmVxdWVzdGVkIHRvIGJsb2NrIGluZGVmaW5pdGVseSwgcmF0aGVyIHRoYW4KLSAgICAgKiB0aW1lIG91dC4gIElmIGJsb2NrIGlzIGlucHV0IGFzIDEsIHRoZSB0aW1lb3V0IHZhbHVlIHdpbGwgYmUgdHJlYXRlZCBhcwotICAgICAqIHVuZGVmaW5lZCwgYnV0IGl0IG11c3QgYmUgYXZhaWxhYmxlIGZvciBzZXR0aW5nIGluIHNubXBfc2VsZWN0X2luZm8uICBPbgotICAgICAqIHJldHVybiwgaWYgYmxvY2sgaXMgdHJ1ZSwgdGhlIHZhbHVlIG9mIHRpbWVvdXQgd2lsbCBiZSB1bmRlZmluZWQuCi0gICAgICoKLSAgICAgKiBzbm1wX3NlbGVjdF9pbmZvIHJldHVybnMgdGhlIG51bWJlciBvZiBvcGVuIHNvY2tldHMuICAoaS5lLiBUaGUgbnVtYmVyCi0gICAgICogb2Ygc2Vzc2lvbnMgb3BlbikKLSAgICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZWxlY3RfaW5mbyhpbnQgKiwgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFsICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICopOwotCi0KLQotICAgIC8qCi0gICAgICogdm9pZCBzbm1wX3RpbWVvdXQoKTsKLSAgICAgKgotICAgICAqIHNubXBfdGltZW91dCBzaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSB0aW1lb3V0IGZyb20gc25tcF9zZWxlY3RfaW5mbwotICAgICAqIGV4cGlyZXMsIGJ1dCBpdCBpcyBpZGVtcG90ZW50LCBzbyBzbm1wX3RpbWVvdXQgY2FuIGJlIHBvbGxlZCAocHJvYmFibHkgYQotICAgICAqIGNwdSBleHBlbnNpdmUgcHJvcG9zaXRpb24pLiAgc25tcF90aW1lb3V0IGNoZWNrcyB0byBzZWUgaWYgYW55IG9mIHRoZQotICAgICAqIHNlc3Npb25zIGhhdmUgYW4gb3V0c3RhbmRpbmcgcmVxdWVzdCB0aGF0IGhhcyB0aW1lZCBvdXQuICBJZiBpdCBmaW5kcyBvbmUKLSAgICAgKiAob3IgbW9yZSksIGFuZCB0aGF0IHBkdSBoYXMgbW9yZSByZXRyaWVzIGF2YWlsYWJsZSwgYSBuZXcgcGFja2V0IGlzIGZvcm1lZAotICAgICAqIGZyb20gdGhlIHBkdSBhbmQgaXMgcmVzZW50LiAgSWYgdGhlcmUgYXJlIG5vIG1vcmUgcmV0cmllcyBhdmFpbGFibGUsIHRoZQotICAgICAqIGNhbGxiYWNrIGZvciB0aGUgc2Vzc2lvbiBpcyB1c2VkIHRvIGFsZXJ0IHRoZSB1c2VyIG9mIHRoZSB0aW1lb3V0LgotICAgICAqLwotCi0gICAgdm9pZCAgICAgICAgICAgIHNubXBfdGltZW91dCh2b2lkKTsKKyAgICBORVRTTk1QX0lNUE9SVCB2b2lkIHNubXBfZnJlZV92YXJfaW50ZXJuYWxzKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKTsgICAgIC8qIGZyZWVzIGNvbnRlbnRzIG9ubHkgKi8KIAogCiAgICAgLyoKQEAgLTc3NCwxNiArMzc1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgpOwogICAgIHZvaWQgICAgICAgICAgICBzbm1wX3N0b3JlKGNvbnN0IGNoYXIgKnR5cGUpOwogICAgIHZvaWQgICAgICAgICAgICBzbm1wX3NodXRkb3duKGNvbnN0IGNoYXIgKnR5cGUpOwotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqc25tcF9wZHVfYWRkX3ZhcmlhYmxlKG5ldHNubXBfcGR1ICosIGNvbnN0IG9pZCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgdV9jaGFyLCBjb25zdCB1X2NoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QpOwotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiogdmFybGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5hbWVfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdV9jaGFyICogdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOwogICAgIGludCAgICAgICAgICAgICBzbm1wX2FkZF92YXIobmV0c25tcF9wZHUgKiwgY29uc3Qgb2lkICosIHNpemVfdCwgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKik7CiAgICAgb2lkICAgICAgICAgICAgKnNubXBfZHVwbGljYXRlX29iamlkKGNvbnN0IG9pZCAqIG9ialRvQ29weSwgc2l6ZV90KTsKQEAgLTc5Myw2ICszODQsOCBAQAogICAgIHZvaWQgICAgICAgICAgICBzbm1wX2luaXRfc3RhdGlzdGljcyh2b2lkKTsKICAgICBpbnQgICAgICAgICAgICAgY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24pOwogICAgIGludCBzbm1wX2dldF9mZF9mb3Jfc2Vzc2lvbihzdHJ1Y3Qgc25tcF9zZXNzaW9uICpzZXNzcCk7CisgICAgaW50IHNubXB2M19wcm9iZV9jb250ZXh0RW5naW5lSURfcmZjNTM0Myh2b2lkICpzbHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pOwogCiAgICAgLyoKICAgICAgKiBOZXcgcmUtYWxsb2NhdGluZyByZXZlcnNlIGVuY29kaW5nIGZ1bmN0aW9ucy4gIApAQCAtODExLDYgKzQwNCw4IEBACiAKIAogCitzdHJ1Y3QgbmV0c25tcF90cmFuc3BvcnRfczsKKwogICAgIC8qCiAgICAgICogRXh0ZW5kZWQgb3BlbjsgZnByZV9wYXJzZSBoYXMgY2hhbmdlZC4gIAogICAgICAqLwpAQCAtODQyLDU2ICs0MzcsMTQgQEAKICAgICBpbnQgICAgICAgICAgICAgc25tcF9nZXRfZG9fZGVidWdnaW5nKHZvaWQpOwogCiAKLSAgICAvKgotICAgICAqIHNubXBfZXJyb3IgLSByZXR1cm4gZXJyb3IgZGF0YQotICAgICAqIElucHV0cyA6ICBhZGRyZXNzIG9mIGVycm5vLCBhZGRyZXNzIG9mIHNubXBfZXJybm8sIGFkZHJlc3Mgb2Ygc3RyaW5nCi0gICAgICogQ2FsbGVyIG11c3QgZnJlZSB0aGUgc3RyaW5nIHJldHVybmVkIGFmdGVyIHVzZS4KLSAgICAgKi8KLSAgICB2b2lkICAgICAgICAgICAgc25tcF9lcnJvcihuZXRzbm1wX3Nlc3Npb24gKiwgaW50ICosIGludCAqLCBjaGFyICoqKTsKLSAgICAvKgotICAgICAqIHNpbmdsZSBzZXNzaW9uIEFQSS4KLSAgICAgKgotICAgICAqIFRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIHNpbWlsYXIgYWN0aW9ucyBhcyBzbm1wX1hYIGZ1bmN0aW9ucywKLSAgICAgKiBidXQgb3BlcmF0ZSBvbiBhIHNpbmdsZSBzZXNzaW9uIG9ubHkuCi0gICAgICoKLSAgICAgKiBTeW5vcHNpczoKLSAgICAgCi0gICAgIHZvaWQgKiBzZXNzcDsKLSAgICAgbmV0c25tcF9zZXNzaW9uIHNlc3Npb24sICpzczsKLSAgICAgbmV0c25tcF9wZHUgKnBkdSwgKnJlc3BvbnNlOwotICAgICAKLSAgICAgc25tcF9zZXNzX2luaXQoJnNlc3Npb24pOwotICAgICBzZXNzaW9uLnJldHJpZXMgPSAuLi4KLSAgICAgc2Vzc2lvbi5yZW1vdGVfcG9ydCA9IC4uLgotICAgICBzZXNzcCA9IHNubXBfc2Vzc19vcGVuKCZzZXNzaW9uKTsKLSAgICAgc3MgPSBzbm1wX3Nlc3Nfc2Vzc2lvbihzZXNzcCk7Ci0gICAgIGlmIChzcyA9PSBOVUxMKQotICAgICBleGl0KDEpOwotICAgICAuLi4KLSAgICAgaWYgKHNzLT5jb21tdW5pdHkpIGZyZWUoc3MtPmNvbW11bml0eSk7Ci0gICAgIHNzLT5jb21tdW5pdHkgPSBzdHJkdXAoZ2F0ZXdheSk7Ci0gICAgIHNzLT5jb21tdW5pdHlfbGVuID0gc3RybGVuKGdhdGV3YXkpOwotICAgICAuLi4KLSAgICAgc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlKHNlc3NwLCBwZHUsICZyZXNwb25zZSk7Ci0gICAgIC4uLgotICAgICBzbm1wX3Nlc3NfY2xvc2Uoc2Vzc3ApOwotICAgICAKLSAgICAgKiBTZWUgYWxzbzoKLSAgICAgKiBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2UsIGluIHNubXBfY2xpZW50LmguCi0gICAgIAotICAgICAqIE5vdGVzOgotICAgICAqICAxLiBJbnZva2Ugc25tcF9zZXNzX3Nlc3Npb24gYWZ0ZXIgc25tcF9zZXNzX29wZW4uCi0gICAgICogIDIuIHNubXBfc2Vzc19zZXNzaW9uIHJldHVybiB2YWx1ZSBpcyBhbiBvcGFxdWUgcG9pbnRlci4KLSAgICAgKiAgMy4gRG8gTk9UIGZyZWUgbWVtb3J5IHJldHVybmVkIGJ5IHNubXBfc2Vzc19zZXNzaW9uLgotICAgICAqICA0LiBSZXBsYWNlIHNubXBfc2VuZChzcyxwZHUpIHdpdGggc25tcF9zZXNzX3NlbmQoc2Vzc3AscGR1KQotICAgICAqLwogCi0gICAgdm9pZCAgICAgICAgICAgIHNubXBfc2Vzc19pbml0KG5ldHNubXBfc2Vzc2lvbiAqKTsKLSAgICB2b2lkICAgICAgICAgICAqc25tcF9zZXNzX29wZW4obmV0c25tcF9zZXNzaW9uICopOwotICAgIHZvaWQgICAgICAgICAgICpzbm1wX3Nlc3NfcG9pbnRlcihuZXRzbm1wX3Nlc3Npb24gKik7Ci0gICAgbmV0c25tcF9zZXNzaW9uICpzbm1wX3Nlc3Nfc2Vzc2lvbih2b2lkICopOwotICAgIE5FVFNOTVBfSU1QT1JUCi0gICAgbmV0c25tcF9zZXNzaW9uICpzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAodm9pZCAqKTsKKyAgICB2b2lkICAgICAgICAgICAgc25tcF9zZXNzX2Vycm9yKHZvaWQgKiwgaW50ICosIGludCAqLCBjaGFyICoqKTsKKyAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9zZXNzX2xvZ19lcnJvcihpbnQgcHJpb3JpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHJvZ19zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICogc3MpOworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3Nlc3NfcGVycm9yKGNvbnN0IGNoYXIgKnByb2dfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqIHNzKTsKKyAgICBjb25zdCBjaGFyICogICAgc25tcF9wZHVfdHlwZShpbnQgdHlwZSk7CiAKICAgICAvKgogICAgICAqIFJldHVybiB0aGUgbmV0c25tcF90cmFuc3BvcnQgc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3BhcXVlCkBAIC05ODEsMjggKzUzNCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCkKICAgICAgICAgKTsKLQotICAgIC8qCi0gICAgICogdXNlIHJldHVybiB2YWx1ZSBmcm9tIHNubXBfc2Vzc19vcGVuIGFzIHZvaWQgKiBwYXJhbWV0ZXIgCi0gICAgICovCi0KLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXNzX3NlbmQodm9pZCAqLCBuZXRzbm1wX3BkdSAqKTsKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXNzX2FzeW5jX3NlbmQodm9pZCAqLCBuZXRzbm1wX3BkdSAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhbGxiYWNrLCB2b2lkICopOwotICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3Nfc2VsZWN0X2luZm8odm9pZCAqLCBpbnQgKiwgZmRfc2V0ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqLCBpbnQgKik7Ci0gICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19yZWFkKHZvaWQgKiwgZmRfc2V0ICopOwotICAgIHZvaWQgICAgICAgICAgICBzbm1wX3Nlc3NfdGltZW91dCh2b2lkICopOwotICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3NfY2xvc2Uodm9pZCAqKTsKLQotICAgIHZvaWQgICAgICAgICAgICBzbm1wX3Nlc3NfZXJyb3Iodm9pZCAqLCBpbnQgKiwgaW50ICosIGNoYXIgKiopOwotICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX3Nlc3NfbG9nX2Vycm9yKGludCBwcmlvcml0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwcm9nX3N0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKiBzcyk7Ci0gICAgdm9pZCAgICAgICAgICAgIHNubXBfc2Vzc19wZXJyb3IoY29uc3QgY2hhciAqcHJvZ19zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICogc3MpOwotICAgIGNvbnN0IGNoYXIgKiAgICBzbm1wX3BkdV90eXBlKGludCB0eXBlKTsKLQogICAgIC8qCiAgICAgICogZW5kIHNpbmdsZSBzZXNzaW9uIEFQSSAKICAgICAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKaW5kZXggNTc4YjZjZS4uNTFjYjc1NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKQEAgLTM4LDEzICszOCwxNCBAQAogICogIGlmIGFzc2VydHMgd2VyZW4ndCByZXF1ZXN0ZWQsIGp1c3QgbG9nLCB1bmxlc3MgTkVUU05NUF9OT19ERUJVR0dJTkcgc3BlY2lmaWVkCiAgKi8KICMgICBpZm5kZWYgTkVUU05NUF9OT19ERUJVR0dJTkcKLSMgICAgICBpZmRlZiAgSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRAorIyAgICAgIGlmZGVmICBORVRTTk1QX0ZVTkNUSU9OCiAjICAgICAgICAgZGVmaW5lIG5ldHNubXBfYXNzZXJ0KHgpICBkbyB7IFwKICAgICAgICAgICAgICAgICAgaWYgKCB4ICkgXAogICAgICAgICAgICAgICAgICAgICA7IFwKICAgICAgICAgICAgICAgICAgZWxzZSBcCiAgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm5ldHNubXBfYXNzZXJ0ICVzIGZhaWxlZCAlczolZCAlcygpXG4iLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fU1RSSU5HKHgpLF9fRklMRV9fLF9fTElORV9fLF9fRlVOQ1RJT05fXyk7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19TVFJJTkcoeCksX19GSUxFX18sX19MSU5FX18sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9GVU5DVElPTik7IFwKICAgICAgICAgICAgICAgfXdoaWxlKDApCiAjICAgICAgZWxzZQogIyAgICAgICAgIGRlZmluZSBuZXRzbm1wX2Fzc2VydCh4KSAgZG8geyBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCmluZGV4IDk5ZTc1YjUuLjFlMTZjZTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCkBAIC0yNiw2ICsyNiwxMSBAQAogI2lmbmRlZiBTTk1QX0NMSUVOVF9ICiAjZGVmaW5lIFNOTVBfQ0xJRU5UX0gKIAorI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvdmFyYmluZF9hcGkuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9wZHVfYXBpLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvc2Vzc2lvbl9hcGkuaD4KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gICAgICAgICAgIkMiIHsKICNlbmRpZgpAQCAtNDgsMTcgKzUzLDYgQEAKICAgICAgICAgbmV0c25tcF9wZHUgICAgKnBkdTsKICAgICB9OwogCi0gICAgaW50ICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl92YWx1ZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXRfdmFyX29iamlkKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmFtZV9sZW5ndGgpOwotICAgIGludCAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUobmV0c25tcF92YXJpYWJsZV9saXN0ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ZhciwgdV9jaGFyIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICogdmFsX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWxfbGVuKTsKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIobmV0c25tcF92YXJpYWJsZV9saXN0ICogbmV3dmFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwgbG9uZyB2YWwpOwogICAgIHZvaWQgICAgICAgICAgICBzbm1wX3JlcGxhY2VfdmFyX3R5cGVzKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZibCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgb2xkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIG5ld190eXBlKTsKQEAgLTczLDMyICs2NywyMSBAQAogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqZmluZF92YXJiaW5kX2luX2xpc3QobmV0c25tcF92YXJpYWJsZV9saXN0ICp2Ymxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKm5hbWUsIHNpemVfdCBsZW4pOwogCi0gICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpzbm1wX2FkZF9udWxsX3ZhcihuZXRzbm1wX3BkdSAqLCBjb25zdCBvaWQgKiwgc2l6ZV90KTsKLSAgICBuZXRzbm1wX3BkdSAgICAqc25tcF9wZHVfY3JlYXRlKGludCk7Ci0gICAgbmV0c25tcF9wZHUgICAgKnNubXBfZml4X3BkdShuZXRzbm1wX3BkdSAqLCBpbnQpOwotICAgIG5ldHNubXBfcGR1ICAgICpzbm1wX2Nsb25lX3BkdShuZXRzbm1wX3BkdSAqKTsKICAgICBuZXRzbm1wX3BkdSAgICAqc25tcF9zcGxpdF9wZHUobmV0c25tcF9wZHUgKiwgaW50IHNraXBDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvcHlDb3VudCk7CiAKICAgICB1bnNpZ25lZCBsb25nICAgc25tcF92YXJiaW5kX2xlbihuZXRzbm1wX3BkdSAqcGR1KTsKICAgICBpbnQgICAgICAgICAgICAgc25tcF9jbG9uZV92YXIobmV0c25tcF92YXJpYWJsZV9saXN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKTsKLSAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnNubXBfY2xvbmVfdmFyYmluZChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKik7CiAgICAgY29uc3QgY2hhciAgICAgKnNubXBfZXJyc3RyaW5nKGludCk7Ci0gICAgaW50ICAgICAgICAgICAgIHNubXBfc3luY2hfcmVzcG9uc2UobmV0c25tcF9zZXNzaW9uICosIG5ldHNubXBfcGR1ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiopOwogICAgIGludCAgICAgICAgICAgICBzbm1wX3N5bmNoX3Jlc3BvbnNlX2NiKG5ldHNubXBfc2Vzc2lvbiAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICosIG5ldHNubXBfcGR1ICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfY2FsbGJhY2spOwotICAgIGludCAgICAgICAgICAgICBzbm1wX2Nsb25lX21lbSh2b2lkICoqLCB2b2lkICosIHVuc2lnbmVkKTsKKyAgICBpbnQgICAgICAgICAgICAgc25tcF9jbG9uZV9tZW0odm9pZCAqKiwgY29uc3Qgdm9pZCAqLCB1bnNpZ25lZCk7CiAKLSAgICAvKgotICAgICAqIHNpbmdsZSBzZXNzaW9uIEFQSSAtIHNlZSBzbm1wX2FwaS5oIGZvciBmdWxsIGRldGFpbHMgCi0gICAgICovCi0gICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZSh2b2lkICosIG5ldHNubXBfcGR1ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqKik7CiAKIHZvaWQgICAgICAgICAgICAgIG5ldHNubXBfcXVlcnlfc2V0X2RlZmF1bHRfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKik7CituZXRzbm1wX3Nlc3Npb24gKiBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb25fdW5jaGVja2VkKCB2b2lkICk7CiBuZXRzbm1wX3Nlc3Npb24gKiBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb24oIHZvaWQgKTsKIGludCBuZXRzbm1wX3F1ZXJ5X2dldCggICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqLCBuZXRzbm1wX3Nlc3Npb24gKik7CiBpbnQgbmV0c25tcF9xdWVyeV9nZXRuZXh0KCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiwgbmV0c25tcF9zZXNzaW9uICopOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKaW5kZXggOWUzZDVhOS4uNzY1Y2M0NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCkBAIC0xOSwxNiArMTksMjEgQEAKICAgICAgKiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSB1c2VkLCBpZiBhdCBhbGwgcG9zc2libGUuICBJbnN0ZWFkLCB1c2UKICAgICAgKiB0aGUgbWFjcm9zIGJlbG93LiAKICAgICAgKi8KLSNpZiBIQVZFX1NUREFSR19ICisjaWYgIWRlZmluZWQoX19HTlVDX18pIHx8IF9fR05VQ19fIDwgMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8IDgpCiAgICAgdm9pZCAgICAgICAgICAgIGRlYnVnbXNnKGNvbnN0IGNoYXIgKnRva2VuLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CiAgICAgdm9pZCAgICAgICAgICAgIGRlYnVnbXNndG9rZW4oY29uc3QgY2hhciAqdG9rZW4sIGNvbnN0IGNoYXIgKmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOwogICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z19jb21ib19uYyhjb25zdCBjaGFyICp0b2tlbiwgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOwogI2Vsc2UKLSAgICB2b2lkICAgICAgICAgICAgZGVidWdtc2codmFfYWxpc3QpOwotICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z21zZ3Rva2VuKHZhX2FsaXN0KTsKLSAgICB2b2lkICAgICAgICAgICAgZGVidWdfY29tYm9fbmModmFfYWxpc3QpOworICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z21zZyhjb25zdCBjaGFyICp0b2tlbiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCisgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKKyAgICB2b2lkICAgICAgICAgICAgZGVidWdtc2d0b2tlbihjb25zdCBjaGFyICp0b2tlbiwgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOworICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z19jb21ib19uYyhjb25zdCBjaGFyICp0b2tlbiwgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pCisgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKICNlbmRpZgogICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z21zZ19vaWQoY29uc3QgY2hhciAqdG9rZW4sIGNvbnN0IG9pZCAqIHRoZW9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOwpAQCAtNDQsNyArNDksMTMgQEAKICAgICB2b2lkICAgICAgICAgICAgZGVidWdtc2dfaGV4dGxpKGNvbnN0IGNoYXIgKnRva2VuLCB1X2NoYXIgKiB0aGVkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbik7CiAgICAgdm9pZCAgICAgICAgICAgIGRlYnVnX2luZGVudF9hZGQoaW50IGFtb3VudCk7Ci0gICAgY2hhciAgICAgICAgICAgKmRlYnVnX2luZGVudCh2b2lkKTsKKyAgICBpbnQgICAgICAgICAgICAgZGVidWdfaW5kZW50X2dldCh2b2lkKTsKKyAgICAvKgorICAgICAqIFdoYXQgaXMgc2FpZCBhYm92ZSBpcyB0cnVlIGZvciB0aGlzIGZ1bmN0aW9uIGFzIHdlbGwuIEZ1cnRoZXIgdGhpcworICAgICAqIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIG9ubHkgcHJvdmlkZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorICAgICAqIFBsZWFzZSB1c2UgIiUqcyIsIGRlYnVnX2luZGVudF9nZXQoKSwgIiIgaWYgeW91IHVzZWQgdGhpcyBvbmUgYmVmb3JlLgorICAgICAqLworICAgIGNvbnN0IGNoYXIgICAgICpkZWJ1Z19pbmRlbnQodm9pZCk7CiAKICAgICAvKgogICAgICAqIFVzZSB0aGVzZSBtYWNyb3MgaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb25zIGFib3ZlIHRvIGFsbG93IHRoZW0gdG8gYmUKQEAgLTEyMSw5ICsxMzIsOSBAQAogI2RlZmluZSBfX0RCR01TR0xfTkMoeCkgIF9fREJHVFJBQ0U7IGRlYnVnbXNnIHgKICNkZWZpbmUgX19EQkdNU0dUTF9OQyh4KSBfX0RCR1RSQUNFOyBkZWJ1Z19jb21ib19uYyB4CiAKLSNpZmRlZiAgSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRAotI2RlZmluZSBfX0RCR1RSQUNFICAgICAgIF9fREJHTVNHVCgoInRyYWNlIiwiJXMoKTogJXMsICVkOlxuIixfX0ZVTkNUSU9OX18sXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sX19MSU5FX18pKQorI2lmZGVmICBORVRTTk1QX0ZVTkNUSU9OCisjZGVmaW5lIF9fREJHVFJBQ0UgICAgICAgX19EQkdNU0dUKCgidHJhY2UiLCIlcygpOiAlcywgJWQ6XG4iLFwKKwkJCQlORVRTTk1QX0ZVTkNUSU9OLF9fRklMRV9fLF9fTElORV9fKSkKICNlbHNlCiAjZGVmaW5lIF9fREJHVFJBQ0UgICAgICAgX19EQkdNU0dUKCgidHJhY2UiLCIgJXMsICVkOlxuIiwgX19GSUxFX18sX19MSU5FX18pKQogI2VuZGlmCkBAIC0xMzYsMTEgKzE0NywxMSBAQAogI2RlZmluZSBfX0RCR01TR09JRFJBTkdFKHgpIGRlYnVnbXNnX29pZHJhbmdlIHgKICNkZWZpbmUgX19EQkdNU0dIRVgoeCkgICAgIGRlYnVnbXNnX2hleCB4CiAjZGVmaW5lIF9fREJHTVNHSEVYVExJKHgpICBkZWJ1Z21zZ19oZXh0bGkgeAotI2RlZmluZSBfX0RCR0lOREVOVCgpICAgICAgZGVidWdfaW5kZW50KCkKKyNkZWZpbmUgX19EQkdJTkRFTlQoKSAgICAgIGRlYnVnX2luZGVudF9nZXQoKQogI2RlZmluZSBfX0RCR0lOREVOVEFERCh4KSAgZGVidWdfaW5kZW50X2FkZCh4KQogI2RlZmluZSBfX0RCR0lOREVOVE1PUkUoKSAgZGVidWdfaW5kZW50X2FkZCgyKQogI2RlZmluZSBfX0RCR0lOREVOVExFU1MoKSAgZGVidWdfaW5kZW50X2FkZCgtMikKLSNkZWZpbmUgX19EQkdQUklOVElOREVOVCh0b2tlbikgX19EQkdNU0dUTCgodG9rZW4sICIlcyIsIF9fREJHSU5ERU5UKCkpKQorI2RlZmluZSBfX0RCR1BSSU5USU5ERU5UKHRva2VuKSBfX0RCR01TR1RMKCh0b2tlbiwgIiUqcyIsIF9fREJHSU5ERU5UKCksICIiKSkKIAogI2RlZmluZSBfX0RCR0RVTVBIRUFERVIodG9rZW4seCkgXAogICAgICAgICBfX0RCR1BSSU5USU5ERU5UKCJkdW1waF8iIHRva2VuKTsgXApAQCAtMTU3LDEyICsxNjgsMTEgQEAKIAogI2RlZmluZSBfX0RCR0RVTVBTRUNUSU9OKHRva2VuLHgpIFwKICAgICAgICAgX19EQkdQUklOVElOREVOVCgiZHVtcGhfIiB0b2tlbik7IFwKLSAgICAgICAgZGVidWdtc2coImR1bXBoXyIgdG9rZW4seCk7IFwKLSAgICAgICAgZGVidWdtc2coImR1bXBoXyIgdG9rZW4sIlxuIik7IFwKKyAgICAgICAgZGVidWdtc2coImR1bXBoXyIgdG9rZW4sIiVzXG4iLHgpO1wKICAgICAgICAgX19EQkdJTkRFTlRNT1JFKCkKIAogI2RlZmluZSBfX0RCR0RVTVBTRVRVUCh0b2tlbixidWYsbGVuKSBcCi0gICAgICAgIGRlYnVnbXNnKCJkdW1weCIgdG9rZW4sICJkdW1weF8lczolcyIsIHRva2VuLCBfX0RCR0lOREVOVCgpKTsgXAorICAgICAgICBkZWJ1Z21zZygiZHVtcHgiIHRva2VuLCAiZHVtcHhfJXM6JSpzIiwgdG9rZW4sIF9fREJHSU5ERU5UKCksICIiKTsgXAogICAgICAgICBfX0RCR01TR0hFWCgoImR1bXB4XyIgdG9rZW4sYnVmLGxlbikpOyBcCiAgICAgICAgIGlmIChkZWJ1Z19pc190b2tlbl9yZWdpc3RlcmVkKCJkdW1wdiIgdG9rZW4pID09IFNOTVBFUlJfU1VDQ0VTUyB8fCBcCiAgICAgICAgICAgICBkZWJ1Z19pc190b2tlbl9yZWdpc3RlcmVkKCJkdW1wdl8iIHRva2VuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsgXApAQCAtMTcwLDcgKzE4MCw3IEBACiAgICAgICAgIH0gZWxzZSB7IFwKICAgICAgICAgICAgIGRlYnVnbXNnKCJkdW1weF8iIHRva2VuLCIgICIpOyBcCiAgICAgICAgIH0gXAotICAgICAgICBkZWJ1Z21zZygiZHVtcHYiIHRva2VuLCAiZHVtcHZfJXM6JXMiLCB0b2tlbiwgX19EQkdJTkRFTlQoKSk7CisgICAgICAgIGRlYnVnbXNnKCJkdW1wdiIgdG9rZW4sICJkdW1wdl8lczolKnMiLCB0b2tlbiwgX19EQkdJTkRFTlQoKSwgIiIpOwogCiAvKioqKioqKioqKioqKioqKioqKiBFbmQgICBwcml2YXRlIG1hY3JvcyAqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xODksNyArMTk5LDYgQEAKICNkZWZpbmUgREVCVUdNU0dPSURSQU5HRSh4KSBkbyB7aWYgKF9EQkdfSUZfKSB7X19EQkdNU0dPSURSQU5HRSh4KTt9IH13aGlsZSgwKQogI2RlZmluZSBERUJVR01TR0hFWCh4KSAgICAgZG8ge2lmIChfREJHX0lGXykge19fREJHTVNHSEVYKHgpO30gfXdoaWxlKDApCiAjZGVmaW5lIERFQlVHTVNHSEVYVExJKHgpICBkbyB7aWYgKF9EQkdfSUZfKSB7X19EQkdNU0dIRVhUTEkoeCk7fSB9d2hpbGUoMCkKLSNkZWZpbmUgREVCVUdJTkRFTlQoKSAgICAgIGRvIHtpZiAoX0RCR19JRl8pIHtfX0RCR0lOREVOVCgpO30gfXdoaWxlKDApCiAjZGVmaW5lIERFQlVHSU5ERU5UQUREKHgpICBkbyB7aWYgKF9EQkdfSUZfKSB7X19EQkdJTkRFTlRBREQoeCk7fSB9d2hpbGUoMCkKICNkZWZpbmUgREVCVUdJTkRFTlRNT1JFKCkgIGRvIHtpZiAoX0RCR19JRl8pIHtfX0RCR0lOREVOVE1PUkUoKTt9IH13aGlsZSgwKQogI2RlZmluZSBERUJVR0lOREVOVExFU1MoKSAgZG8ge2lmIChfREJHX0lGXykge19fREJHSU5ERU5UTEVTUygpO30gfXdoaWxlKDApCkBAIC0yMjMsNyArMjMyLDYgQEAKICNkZWZpbmUgREVCVUdNU0dIRVgoeCkKICNkZWZpbmUgREVCVUdJRih4KSAgICAgICAgaWYoMCkKICNkZWZpbmUgREVCVUdEVU1QKHQsYixsLHApCi0jZGVmaW5lIERFQlVHSU5ERU5UKCkKICNkZWZpbmUgREVCVUdJTkRFTlRNT1JFKCkKICNkZWZpbmUgREVCVUdJTkRFTlRMRVNTKCkKICNkZWZpbmUgREVCVUdJTkRFTlRBREQoeCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAppbmRleCAwZDMyYzQ0Li5mNzlhZWJkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCkBAIC03MiwxMCArNzIsMTUgQEAKICAgICAvKgogICAgICAqIEFjY2VzcyBjb250cm9sIHN0YXRlbWVudHMgZm9yIHRoZSBhZ2VudCAKICAgICAgKi8KLSNkZWZpbmUgUk9OTFkJMHgxICAgICAgICAgICAgIC8qIHJlYWQgYWNjZXNzIG9ubHkgKi8KLSNkZWZpbmUgUldSSVRFCTB4MiAgICAgICAgICAgICAvKiByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgKG11c3QgaGF2ZSAweDIgYml0IHNldCkgKi8KKyNkZWZpbmUgTkVUU05NUF9PTERBUElfUk9OTFkJMHgxICAgICAvKiByZWFkIGFjY2VzcyBvbmx5ICovCisjZGVmaW5lIE5FVFNOTVBfT0xEQVBJX1JXUklURQkweDIgICAgIC8qIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyAobXVzdCBoYXZlIDB4MiBiaXQgc2V0KSAqLworI2RlZmluZSBORVRTTk1QX09MREFQSV9OT0FDQ0VTUyAweDAwMDAgIC8qIG5vIGFjY2VzcyBmb3IgYW55Ym9keSAqLwogCi0jZGVmaW5lIE5PQUNDRVNTIDB4MDAwMCAgICAgICAgIC8qIG5vIGFjY2VzcyBmb3IgYW55Ym9keSAqLworI2lmbmRlZiBORVRTTk1QX05PX0xFR0FDWV9ERUZJTklUSU9OUworI2RlZmluZSBST05MWSAgICAgICAgICAgTkVUU05NUF9PTERBUElfUk9OTFkKKyNkZWZpbmUgUldSSVRFICAgICAgICAgIE5FVFNOTVBfT0xEQVBJX1JXUklURQorI2RlZmluZSBOT0FDQ0VTUyAgICAgICAgTkVUU05NUF9PTERBUElfTk9BQ0NFU1MKKyNlbmRpZgogCiAgICAgLyoKICAgICAgKiBkZWZpbmVkIHR5cGVzIChmcm9tIHRoZSBTTUksIFJGQyAxMTU3KSAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAppbmRleCAwZGRlN2FlLi41NTBlNjY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCkBAIC01LDE1ICs1LDExIEBACiBleHRlcm4gICAgICAgICAgIkMiIHsKICNlbmRpZgogCi0jaW5jbHVkZSA8c3RkaW8uaD4KICNpZiBIQVZFX1NZU0xPR19ICiAjaW5jbHVkZSA8c3lzbG9nLmg+CiAjZW5kaWYKLSNpZiBIQVZFX1NUREFSR19ICisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRhcmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8dmFyYXJncy5oPgotI2VuZGlmCiAKICNpZm5kZWYgTE9HX0VSUgogI2RlZmluZSBMT0dfRU1FUkcgICAgICAgMCAgICAgICAvKiBzeXN0ZW0gaXMgdW51c2FibGUgKi8KQEAgLTM1LDYgKzMxLDE0IEBACiAjZGVmaW5lIERFRkFVTFRfTE9HX0lEICJuZXQtc25tcCIKICNlbmRpZgogCisjZGVmaW5lIE5FVFNOTVBfTE9HT05DRSh4KSBkbyB7IFwKKyAgICAgICAgc3RhdGljIGNoYXIgbG9nZ2VkID0gMDsgXAorICAgICAgICBpZiAoIWxvZ2dlZCkgeyAgICAgICAgICBcCisgICAgICAgICAgICBsb2dnZWQgPSAxOyAgICAgICAgIFwKKyAgICAgICAgICAgIHNubXBfbG9nIHggOyAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSgwKQorCiAgICAgdm9pZCAgICAgICAgICAgIGluaXRfc25tcF9sb2dnaW5nKHZvaWQpOwogICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zbm1wX2xvZ2dpbmcodm9pZCk7CiAgICAgaW50ICAgICAgICAgICAgIHNubXBfZ2V0X2RvX2xvZ2dpbmcodm9pZCk7CkBAIC01MywxNSArNTcsMTEgQEAKIAogICAgIGludCAgICAgICAgICAgICBzbm1wX3N0ZGVycmxvZ19zdGF0dXModm9pZCk7CiAKLSNpZiBIQVZFX1NUREFSR19ICi0jIGlmICFkZWZpbmVkKF9fR05VQ19fKSB8fCBfX0dOVUNfXyA8IDIgfHwgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPCA4KQorI2lmICFkZWZpbmVkKF9fR05VQ19fKSB8fCBfX0dOVUNfXyA8IDIgfHwgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPCA4KQogICAgIGludCAgICAgICAgICAgICBzbm1wX2xvZyhpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKLSMgZWxzZQorI2Vsc2UKICAgICBpbnQgICAgICAgICAgICAgc25tcF9sb2coaW50IHByaW9yaXR5LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKICAgICAgICAgICAgICAgICAgICAgCV9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwotIyBlbmRpZgotI2Vsc2UKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9sb2codmFfYWxpc3QpOwogI2VuZGlmCiAgICAgaW50ICAgICAgICAgICAgIHNubXBfdmxvZyhpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgYXApOwpAQCAtODgsNiArODgsNyBAQAogI2RlZmluZSBORVRTTk1QX0xPR0hBTkRMRVJfQ0FMTEJBQ0sJNQogI2RlZmluZSBORVRTTk1QX0xPR0hBTkRMRVJfTk9ORQkJNgogCisgICAgdm9pZCBuZXRzbm1wX3NldF9saW5lX2J1ZmZlcmluZyhGSUxFICpzdHJlYW0pOwogICAgIGludCBzbm1wX2xvZ19vcHRpb25zKGNoYXIgKm9wdGFyZywgaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2KTsKICAgICB2b2lkIHNubXBfbG9nX29wdGlvbnNfdXNhZ2UoY29uc3QgY2hhciAqbGVhZCwgRklMRSAqb3V0Zik7CiAgICAgY2hhciAqc25tcF9sb2dfc3lzbG9nbmFtZShjb25zdCBjaGFyICpzeXNsb2duYW1lKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX29wZW5zc2wuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX29wZW5zc2wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDkyZjc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oCkBAIC0wLDAgKzEsMTcgQEAKKy8qCisgKiBIZWFkZXIgZmlsZSBmb3IgdGhlIE9wZW5TU0wgV3JhcHBlcgorICovCisKKyNpZm5kZWYgU05NUF9PUEVOU1NMX0gKKyNkZWZpbmUgU05NUF9PUEVOU1NMX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgdm9pZCBuZXRzbm1wX2luaXRfb3BlbnNzbCh2b2lkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU05NUF9PUEVOU1NMX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKaW5kZXggYWVlYjI0YS4uNmE2ODdkZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKQEAgLTExLDcgKzExLDcgQEAKICAqIChOZXQtU05NUCBlbnRlcnByaXNlIG51bWJlciA9IDgwNzIpKjI1NiArIGxvY2FsX251bQogICovCiAjZGVmaW5lIE5FVFNOTVBfS1NNX1NFQ1VSSVRZX01PREVMICAgICAyMDY2NDMyCi0jZGVmaW5lIE5FVFNOTVBfTE9DQUxTTV9TRUNVUklUWV9NT0RFTCAyMDY2NDMzCisjZGVmaW5lIE5FVFNOTVBfVFNNX1NFQ1VSSVRZX01PREVMICAgICAyMDY2NDM0CiAKIHN0cnVjdCBzbm1wX3NlY21vZF9kZWY7CiAKQEAgLTkwLDYgKzkwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICpvcmlncGR1KTsKK3R5cGVkZWYgaW50ICAgICAoU2VjbW9kRGlzY292ZXJ5TWV0aG9kKSAodm9pZCAqc2xwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pOwogCiAvKgogICogZGVmaW5pdGlvbiBvZiBhIHNlY3VyaXR5IG1vZHVsZQpAQCAtMTI1LDYgKzEyNywxMSBAQAogICAgICogZXJyb3IgYW5kIHJlcG9ydCBoYW5kbGluZwogICAgICovCiAgICBTZWNtb2RIYW5kbGVSZXBvcnQgKmhhbmRsZV9yZXBvcnQ7CisKKyAgIC8qCisgICAgKiBkZWZhdWx0IGVuZ2luZUlEIGRpc2NvdmVyeSBtZWNoYW5pc20KKyAgICAqLworICAgU2VjbW9kRGlzY292ZXJ5TWV0aG9kICpwcm9iZV9lbmdpbmVpZDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAppbmRleCBjZTc0MmQ1Li5jZDRlYzM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaApAQCAtMTYsOSArMTYsMTMgQEAKIAogLyogIFNvbWUgdHJhbnNwb3J0LXR5cGUgZmxhZ3MuICAqLwogCi0jZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX1NUUkVBTQkweDAxCi0jZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0xJU1RFTgkweDAyCi0jZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX1RVTk5FTEVECTB4MDQKKyNkZWZpbmUJCU5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfU1RSRUFNCSAweDAxCisjZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0xJU1RFTgkgMHgwMgorI2RlZmluZQkJTkVUU05NUF9UUkFOU1BPUlRfRkxBR19UVU5ORUxFRAkgMHgwNAorI2RlZmluZSAgICAgICAgIE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfVE1TVEFURSAgIDB4MDggIC8qIGluZGljYXRlcyBvcGFxdWUgaXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTTSB0bVN0YXRlUmVmZXJlbmNlICovCisjZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0VNUFRZX1BLVCAweDEwCisjZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0hPU1ROQU1FCSAweDgwICAvKiBmb3IgZm10YWRkciBob29rICovCiAKIC8qICBUaGUgc3RhbmRhcmQgU05NUCBkb21haW5zLiAgKi8KIApAQCAtMzMsNiArMzcsMzUgQEAKIE5FVFNOTVBfSU1QT1JUIHNpemVfdCAgIG5ldHNubXBERFBEb21haW5fbGVuOwogTkVUU05NUF9JTVBPUlQgc2l6ZV90ICAgbmV0c25tcElQWERvbWFpbl9sZW47CiAKKy8qIFN0cnVjdHVyZSB3aGljaCBzdG9yZXMgdHJhbnNwb3J0IHNlY3VyaXR5IG1vZGVsIHNwZWNpZmljIHBhcmFtZXRlcnMgKi8KKy8qIGlzbXMtc2Vjc2hlbGwtMTEgc2VjdGlvbiA0LjEgKi8KKworLyogY29udGVudHMgZG9jdW1lbnRlZCBpbiBkcmFmdC1pZXRmLWlzbXMtdHJhbnNwb3J0LXNlY3VyaXR5LW1vZGVsCisgICBTZWN0aW9uIDMuMiAqLworLyogbm90ZTogVkFDTSBvbmx5IGFsbG93cyA8PSAzMiBzbyB0aGlzIGlzIG92ZXJraWxsIHRpbGwgYW5vdGhlciBBQ00gY29tZXMgKi8KKyNkZWZpbmUgTkVUU05NUF9UTV9NQVhfU0VDTkFNRSAyNTYKKwordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9hZGRyX3BhaXJfcyB7CisgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVtb3RlX2FkZHI7CisgICBzdHJ1Y3QgaW5fYWRkciBsb2NhbF9hZGRyOworfSBuZXRzbm1wX2FkZHJfcGFpcjsKKwordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlX3MgeworICAgb2lkICAgIHRyYW5zcG9ydERvbWFpbltNQVhfT0lEX0xFTl07CisgICBzaXplX3QgdHJhbnNwb3J0RG9tYWluTGVuOworICAgY2hhciAgIHNlY3VyaXR5TmFtZVtORVRTTk1QX1RNX01BWF9TRUNOQU1FXTsKKyAgIHNpemVfdCBzZWN1cml0eU5hbWVMZW47CisgICBpbnQgICAgcmVxdWVzdGVkU2VjdXJpdHlMZXZlbDsKKyAgIGludCAgICB0cmFuc3BvcnRTZWN1cml0eUxldmVsOworICAgY2hhciAgIHNhbWVTZWN1cml0eTsKKyAgIGludCAgICBzZXNzaW9uSUQ7CisgICAKKyAgIGNoYXIgICBoYXZlX2FkZHJlc3NlczsKKyAgIG5ldHNubXBfYWRkcl9wYWlyIGFkZHJlc3NlczsKKworICAgdm9pZCAqb3RoZXJUcmFuc3BvcnRPcGFxdWU7IC8qIFhYWDogTWF5IGhhdmUgbWVtIGxlYWsgaXNzdWVzICovCit9IG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZTsKKwogLyogIFN0cnVjdHVyZSB3aGljaCBkZWZpbmVzIHRoZSB0cmFuc3BvcnQtaW5kZXBlbmRlbnQgQVBJLiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF90cmFuc3BvcnRfcyB7CkBAIC02OCw2ICsxMDEsOSBAQAogCiAgICAgc2l6ZV90ICAgICAgICAgIG1zZ01heFNpemU7CiAKKyAgICAvKiBUTSBzdGF0ZSByZWZlcmVuY2UgcGVyIElTTVMgV0cgc29sdXRpb24gKi8KKyAgICBuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKnRtU3RhdGVSZWY7CisKICAgICAvKiAgQ2FsbGJhY2tzLiAgQXJndW1lbnRzIGFyZToKICAgICAgKgkJCiAgICAgICogICAgICAgICAgICAgICJ0aGlzIiBwb2ludGVyLCBmZCwgYnVmLCBzaXplLCAqb3BhcXVlLCAqb3BhcXVlX2xlbmd0aCAgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGQ1YTE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaApAQCAtMCwwICsxLDMwIEBACisvKgorICogSGVhZGVyIGZpbGUgZm9yIFRyYW5zcG9ydCBTZWN1cml0eSBNb2RlbCBzdXBwb3J0CisgKi8KKworI2lmbmRlZiBTTk1QVFNNX0gKKyNkZWZpbmUgU05NUFRTTV9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIGludCAgICAgICAgICAgICB0c21fcmdlbmVyYXRlX291dF9tc2coc3RydWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX3NlY21vZF9vdXRnb2luZ19wYXJhbXMgKik7CisgICAgaW50ICAgICAgICAgICAgIHRzbV9wcm9jZXNzX2luX21zZyhzdHJ1Y3Qgc25tcF9zZWNtb2RfaW5jb21pbmdfcGFyYW1zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKTsKKyAgICB2b2lkICAgICAgICAgICAgaW5pdF91c20odm9pZCk7CisKKyAgICAjZGVmaW5lIE5FVFNOTVBfVE1fU0FNRV9TRUNVUklUWV9OT1RfUkVRVUlSRUQgMAorICAgICNkZWZpbmUgTkVUU05NUF9UTV9VU0VfU0FNRV9TRUNVUklUWSAgICAgICAgICAxCisKKyAgICAvKiBiYXNpY2FsbHkgd2Ugc3RvcmUgYWxtb3N0IG5vdGhpbmcgZWxzZSBidXQgYSB0bSByZWYgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3RzbVNlY3VyaXR5UmVmZXJlbmNlX3MgeworICAgICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZjsKKyAgICAgICBpbnQgc2VjdXJpdHlMZXZlbDsKKyAgICB9IG5ldHNubXBfdHNtU2VjdXJpdHlSZWZlcmVuY2U7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNOTVBUU01fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKaW5kZXggNWQxNDMwMy4uMThjZjExOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCkBAIC03NSw2ICs3NSw3IEBACiAgICAgICAgIHVfY2hhciAgICAgICAgICpwcml2S2V5OwogICAgICAgICBzaXplX3QgICAgICAgICAgcHJpdktleUxlbjsKICAgICAgICAgdV9jaGFyICAgICAgICAgKnVzZXJQdWJsaWNTdHJpbmc7CisgICAgICAgIHNpemVfdCAgICAgICAgICB1c2VyUHVibGljU3RyaW5nTGVuOwogICAgICAgICBpbnQgICAgICAgICAgICAgdXNlclN0YXR1czsKICAgICAgICAgaW50ICAgICAgICAgICAgIHVzZXJTdG9yYWdlVHlwZTsKICAgICAgICAvKiB0aGVzZSBhcmUgYWN0dWFsbHkgREggKiBwb2ludGVycyBidXQgb25seSBpZiBvcGVuc3NsIGlzIGF2YWlsLiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCmluZGV4IGUyNDg0NDEuLmYzZDI5NWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKQEAgLTksMTIgKzksMTMgQEAKIGV4dGVybiAgICAgICAgICAiQyIgewogI2VuZGlmCiAKLSNkZWZpbmUgTUFYX0VOR0lORUlEX0xFTkdUSCAxMjgKKyNkZWZpbmUgTUFYX0VOR0lORUlEX0xFTkdUSCAzMiAvKiBwZXIgU05NUC1GUkFNRVdPUkstTUlCIFNubXBFbmdpbmVJRCBUQyAqLwogCiAjZGVmaW5lIEVOR0lORUlEX1RZUEVfSVBWNCAgICAxCiAjZGVmaW5lIEVOR0lORUlEX1RZUEVfSVBWNiAgICAyCiAjZGVmaW5lIEVOR0lORUlEX1RZUEVfTUFDQUREUiAzCiAjZGVmaW5lIEVOR0lORUlEX1RZUEVfVEVYVCAgICA0CisjZGVmaW5lIEVOR0lORUlEX1RZUEVfRVhBQ1QgICA1CiAjZGVmaW5lIEVOR0lORUlEX1RZUEVfTkVUU05NUF9STkQgMTI4CiAKICNkZWZpbmUJREVGQVVMVF9OSUMgImV0aDAiCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKaW5kZXggZjMyYzQzZi4uMDNjMmIwNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaApAQCAtNTEsMTEgKzUxLDE0IEBACiAKICAgICAvKgogICAgICAqIERlZmluaXRpb25zIGZvciB0aGUgc3lzdGVtIGRlcGVuZGVudCBsaWJyYXJ5IGZpbGUKKyAgICAgKgorICAgICAqIERvIG5vdCBkZWZpbmUgJ3N0cnVjdCBkaXJlY3QnIHdoZW4gTVNWQ19QRVJMIGlzIGRlZmluZWQgYmVjYXVzZSBhCisgICAgICogc3RydWN0dXJlIHdpdGggdGhhdCBuYW1lIGlzIGFsc28gZGVmaW5lZCBpbiB0aGUgUGVybCBoZWFkZXIKKyAgICAgKiBsaWJcQ09SRVxkaXJlbnQuaC4gRG8gbm90IGRlY2xhcmUgZ2V0dGltZW9mZGF5KCkgZWl0aGVyLgogICAgICAqLwogI2lmbmRlZiBNU1ZDX1BFUkwKLSNpZmRlZiBXSU4zMgogCi0jaWZuZGVmIEhBVkVfRElSRU5UX0ggLyogTWluZ0dXIGhhcyBkaXJlbnQuaCBidXQgYWxzbyBkZWZpbmVzIFdJTjMyICovCisjaWZuZGVmIEhBVkVfUkVBRERJUgogICAgIC8qCiAgICAgICogc3RydWN0dXJlIG9mIGEgZGlyZWN0b3J5IGVudHJ5IAogICAgICAqLwpAQCAtNzksMzIgKzgyLDM2IEBACiAgICAgRElSICAgICAgICAgICAgKm9wZW5kaXIoY29uc3QgY2hhciAqZmlsZW5hbWUpOwogICAgIHN0cnVjdCBkaXJlY3QgICpyZWFkZGlyKERJUiAqIGRpcnApOwogICAgIGludCAgICAgICAgICAgICBjbG9zZWRpcihESVIgKiBkaXJwKTsKLSNlbmRpZiAvKiBIQVZFX0RJUkVOVF9IICovCisjZW5kaWYgLyogSEFWRV9SRUFERElSICovCiAKICNpZm5kZWYgSEFWRV9HRVRUSU1FT0ZEQVkKICAgICBpbnQgICAgICAgICAgICAgZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICosIHN0cnVjdCB0aW1lem9uZSAqdHopOwogI2VuZGlmCisKKyNlbmRpZgkJCQkvKiBNU1ZDX1BFUkwgKi8KKwogI2lmbmRlZiBIQVZFX1NUUk5DQVNFQ01QCiAgICAgaW50ICAgICAgICAgICAgIHN0cmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyKTsKICAgICBpbnQgICAgICAgICAgICAgc3RybmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBzaXplX3Qgbik7CiAjZW5kaWYKIAorI2lmZGVmIFdJTjMyCiAgICAgY2hhciAgICAgICAgICAgKndpbnNvY2tfc3RhcnR1cCh2b2lkKTsKICAgICB2b2lkICAgICAgICAgICAgd2luc29ja19jbGVhbnVwKHZvaWQpOwotCiAjZGVmaW5lIFNPQ0tfU1RBUlRVUCB3aW5zb2NrX3N0YXJ0dXAoKQogI2RlZmluZSBTT0NLX0NMRUFOVVAgd2luc29ja19jbGVhbnVwKCkKLQogI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAhV0lOMzIgKi8KLQogI2RlZmluZSBTT0NLX1NUQVJUVVAKICNkZWZpbmUgU09DS19DTEVBTlVQCi0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV0lOMzIgKi8KLSNlbmRpZgkJCQkvKiBNU1ZDX1BFUkwgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+ICAgICAvKiBGb3IgZGVmaW5pdGlvbiBvZiBpbl9hZGRyX3QgKi8KIAorICAgIC8qIFNpbXBseSByZXNvbHZlIGEgaG9zdG5hbWUgYW5kIHJldHVybiBmaXJzdCBJUHY0IGFkZHJlc3MuCisgICAgICogUmV0dXJucyAtMSBvbiBlcnJvciAqLworICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX2dldGhvc3RieW5hbWVfdjQoY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2FkZHJfdCAqYWRkcl9vdXQpOworCiAgICAgaW5fYWRkcl90ICAgICAgIGdldF9teWFkZHIodm9pZCk7CiAgICAgbG9uZyAgICAgICAgICAgIGdldF91cHRpbWUodm9pZCk7CiAKQEAgLTEyOSw2ICsxMzYsOSBAQAogI2lmbmRlZiBIQVZFX1NUUlRPVUwKICAgICB1bnNpZ25lZCBsb25nICAgc3RydG91bChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiAjZW5kaWYKKyNpZm5kZWYgSEFWRV9TVFJUT1VMTAorICAgIE5FVFNOTVBfSU1QT1JUIHVpbnQ2NF90IHN0cnRvdWxsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKKyNlbmRpZgogI2lmbmRlZiBIQVZFX1NUUlRPS19SCiAgICAgY2hhciAgICAgICAgICAgKnN0cnRva19yKGNoYXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICoqKTsKICNlbmRpZgpAQCAtMTUxLDYgKzE2MSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqb3NwbXJlbHByZWZpeCk7CiAgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfb3Nfa2VybmVsX3dpZHRoKHZvaWQpOwogCisgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfc3RyX3RvX3VpZChjb25zdCBjaGFyICp1c2Vyb3J1aWQpOworICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX3N0cl90b19naWQoY29uc3QgY2hhciAqZ3JvdXBvcmdpZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNzQyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMCwwICsxLDcwIEBACisjaWZuZGVmIE5FVF9TTk1QX0xJQlJBUllfVFlQRVNfSAorI2RlZmluZSBORVRfU05NUF9MSUJSQVJZX1RZUEVTX0gKKworI2lmbmRlZiBORVRfU05NUF9DT05GSUdfSAorI2Vycm9yICJQbGVhc2UgaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGJlZm9yZSB0aGlzIGZpbGUiCisjZW5kaWYKKworCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKworCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2luZGV4X3MgeworICAgIHNpemVfdCAgICAgICAgICBsZW47CisgICAgb2lkICAgICAgICAgICAgKm9pZHM7Cit9IG5ldHNubXBfaW5kZXg7CisKK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfdm9pZF9hcnJheV9zIHsKKyAgICBzaXplX3QgICAgICAgICAgc2l6ZTsKKyAgICB2b2lkICAgICAgICAgICoqYXJyYXk7Cit9IG5ldHNubXBfdm9pZF9hcnJheTsKKworLyoKKyAqIHJlZmVyZW5jZXMgdG8gdmFyaW91cyB0eXBlcworICovCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl92b2lkIHsKKyAgICB2b2lkICAgICAgICAgICAqdmFsOworfSBuZXRzbm1wX3JlZl92b2lkOworCit0eXBlZGVmIHVuaW9uIHsKKyAgICB1X2xvbmcgICAgICAgICAgdWw7CisgICAgdV9pbnQgICAgICAgICAgIHVpOworICAgIHVfc2hvcnQgICAgICAgICB1czsKKyAgICB1X2NoYXIgICAgICAgICAgdWM7CisgICAgbG9uZyAgICAgICAgICAgIHNsOworICAgIGludCAgICAgICAgICAgICBzaTsKKyAgICBzaG9ydCAgICAgICAgICAgc3M7CisgICAgY2hhciAgICAgICAgICAgIHNjOworICAgIGNoYXIgICAgICAgICAgICpjcDsKKyAgICB2b2lkICAgICAgICAgICAqdnA7Cit9IG5ldHNubXBfY3ZhbHVlOworCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl9zaXplX3RfcyB7CisgICAgc2l6ZV90ICAgICAgICAgIHZhbDsKK30gICAgICAgICAgICAgICpuZXRzbm1wX3JlZl9zaXplX3Q7CisKKy8qCisgKiBTdHJ1Y3R1cmUgZm9yIGhvbGRpbmcgYSBzZXQgb2YgZmlsZSBkZXNjcmlwdG9ycywgc2ltaWxhciB0byBmZF9zZXQuCisgKgorICogVGhpcyBzdHJ1Y3R1cmUgaG93ZXZlciBjYW4gaG9sZCBzby1jYWxsZWQgbGFyZ2UgZmlsZSBkZXNjcmlwdG9ycworICogKD49IEZEX1NFVFNJWkUgb3IgMTAyNCkgb24gVW5peCBzeXN0ZW1zIG9yIG1vcmUgdGhhbiBGRF9TRVRTSVpFICg2NCkKKyAqIHNvY2tldHMgb24gV2luZG93cyBzeXN0ZW1zLgorICoKKyAqIEl0IGlzIHNhZmUgdG8gYWxsb2NhdGUgdGhpcyBzdHJ1Y3R1cmUgb24gdGhlIHN0YWNrLgorICoKKyAqIFRoaXMgc3RydWN0dXJlIG11c3QgYmUgaW5pdGlhbGl6ZWQgYnkgY2FsbGluZyBuZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KCkKKyAqIGFuZCBtdXN0IGJlIGNsZWFuZWQgdXAgdmlhIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoKS4gSWYgdGhpcyBsYXN0CisgKiBmdW5jdGlvbiBpcyBub3QgY2FsbGVkIHRoaXMgbWF5IHJlc3VsdCBpbiBhIG1lbW9yeSBsZWFrLgorICoKKyAqIFRoZSBtZW1iZXJzIG9mIHRoaXMgc3RydWN0dXJlIGFyZToKKyAqIGxmc19zZXRzaXplOiBtYXhpbXVtIHNldCBzaXplLgorICogbHNmX3NldHB0cjogIHBvaW50cyB0byBsZnNfc2V0IGlmIGxmc19zZXRzaXplIDw9IEZEX1NFVFNJWkUsIGFuZCBvdGhlcndpc2UKKyAqICAgICAgICAgICAgICB0byBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWVtb3J5LgorICogbGZzX3NldDogICAgIGZpbGUgZGVzY3JpcHRvciAvIHNvY2tldCBzZXQgZGF0YSBpZiBsZnNfc2V0c2l6ZSA8PSBGRF9TRVRTSVpFLgorICovCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2xhcmdlX2ZkX3NldF9zIHsKKyAgICB1bnNpZ25lZCAgICAgICAgbGZzX3NldHNpemU7CisgICAgZmRfc2V0ICAgICAgICAgKmxmc19zZXRwdHI7CisgICAgZmRfc2V0ICAgICAgICAgIGxmc19zZXQ7Cit9IG5ldHNubXBfbGFyZ2VfZmRfc2V0OworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRfU05NUF9MSUJSQVJZX1RZUEVTX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oIGIvaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKaW5kZXggMDlmZjVmNS4uNzA2OGJmYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKQEAgLTcsNiArNyw2MCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KIAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgLyogSW5pdGlhbGlzYXRpb24gYW5kIFNodXRkb3duICovCisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfaW5pdF9taWIodm9pZCk7CisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCisgICAgdm9pZCAgICAgICAgICAgIGluaXRfbWliKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgICBpbml0X21pYl9pbnRlcm5hbHModm9pZCk7CisjZW5kaWYKKyAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fbWliKHZvaWQpOworCisgICAgIC8qIFJlYWRpbmcgYW5kIFBhcnNpbmcgTUlCcyAqLworICAgIGludCAgICAgICAgICAgICBhZGRfbWliZGlyKGNvbnN0IGNoYXIgKik7CisgICAgTkVUU05NUF9JTVBPUlQKKyAgICBzdHJ1Y3QgdHJlZSAgICAqbmV0c25tcF9yZWFkX21vZHVsZShjb25zdCBjaGFyICopOworI2lmbmRlZiBORVRTTk1QX05PX0xFR0FDWV9ERUZJTklUSU9OUworICAgIHN0cnVjdCB0cmVlICAgICpyZWFkX21vZHVsZShjb25zdCBjaGFyICopOworI2VuZGlmCisgICAgc3RydWN0IHRyZWUgICAgKnJlYWRfbWliKGNvbnN0IGNoYXIgKik7CisgICAgc3RydWN0IHRyZWUgICAgKnJlYWRfYWxsX21pYnModm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIGFkZF9tb2R1bGVfcmVwbGFjZW1lbnQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBpbnQpOworCisgICAgICAgICAvKiBmcm9tIHVjZC1jb21wYXQuaCAqLworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3NldF9taWJfd2FybmluZ3MoaW50KTsKKyAgICB2b2lkICAgICAgICAgICAgc25tcF9zZXRfbWliX2Vycm9ycyhpbnQpOworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3NldF9zYXZlX2Rlc2NyaXB0aW9ucyhpbnQpOworCisKKyAgICAgLyogU2VhcmNoaW5nIHRoZSBNSUIgVHJlZSAqLworICAgIG9pZCAgICAgICAgICAgICpzbm1wX3BhcnNlX29pZChjb25zdCBjaGFyICosIG9pZCAqLCBzaXplX3QgKik7CisgICAgaW50ICAgICAgICAgICAgIHJlYWRfb2JqaWQoY29uc3QgY2hhciAqLCBvaWQgKiwgc2l6ZV90ICopOworICAgIGludCAgICAgICAgICAgICBnZXRfbW9kdWxlX25vZGUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIG9pZCAqLCBzaXplX3QgKik7CisKKyAgICAgLyogT3V0cHV0ICovCisgICAgdm9pZCAgICAgICAgICAgIHByaW50X21pYihGSUxFICogZnApOworCisgICAgdm9pZCAgICAgICAgICAgIHByaW50X29iamlkKGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pOworICAgIHZvaWQgICAgICAgICAgIGZwcmludF9vYmppZChGSUxFICogZnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pOworICAgIGludCAgICAgICAgICAgc25wcmludF9vYmppZChjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuKTsKKworICAgIHZvaWQgICAgICAgICAgICBwcmludF9kZXNjcmlwdGlvbihvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBpbnQgd2lkdGgpOworICAgIHZvaWQgICAgICAgICAgIGZwcmludF9kZXNjcmlwdGlvbihGSUxFICogZnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sIGludCB3aWR0aCk7CisgICAgaW50ICAgICAgICAgICBzbnByaW50X2Rlc2NyaXB0aW9uKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sIGludCB3aWR0aCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKICAgICAvKgogICAgICAqICBGb3IgdGhlIGluaXRpYWwgcmVsZWFzZSwgdGhpcyB3aWxsIGp1c3QgcmVmZXIgdG8gdGhlCiAgICAgICogIHJlbGV2YW50IFVDRCBoZWFkZXIgZmlsZXMuCkBAIC0xOCw3ICs3Miw2IEBACiAgICAgICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+Ci0KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L21pYi5oPgogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3BhcnNlLmg+CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluIGIvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbgppbmRleCAzYzVkN2MyLi4wZWU2MDUyIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4KQEAgLTEsNCArMSw0IEBACi0vKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmluIGJ5IGF1dG9oZWFkZXIuICAqLworLyogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbi4gIEdlbmVyYXRlZCBmcm9tIGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8KIC8qIAogICogbmV0LXNubXAgY29uZmlndXJhdGlvbiBoZWFkZXIgZmlsZQogICovCkBAIC0yNCwyMzYgKzI0LDcgQEAKICAqLwogI2lmbmRlZiBORVRTTk1QX05PX0FVVE9DT05GX0RFRklOSVRJT05TCiAKLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIGludDMyX3QgKi8KLSN1bmRlZiBIQVZFX0lOVDMyX1QKIAotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdWludDMyX3QgKi8KLSN1bmRlZiBIQVZFX1VJTlQzMl9UCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIHVfaW50MzJfdCAqLwotI3VuZGVmIEhBVkVfVV9JTlQzMl9UCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIGludDY0X3QgKi8KLSN1bmRlZiBIQVZFX0lOVDY0X1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdWludDY0X3QgKi8KLSN1bmRlZiBIQVZFX1VJTlQ2NF9UCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIHVfaW50NjRfdCAqLwotI3VuZGVmIEhBVkVfVV9JTlQ2NF9UCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIGludHB0cl90ICovCi0jdW5kZWYgSEFWRV9JTlRQVFJfVAotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgdHlwZSB1aW50cHRyX3QgKi8KLSN1bmRlZiBIQVZFX1VJTlRQVFJfVAotCi0vKiBnb3Qgc29ja2xlbl90PyAqLwotI3VuZGVmIEhBVkVfU09DS0xFTl9UCi0KLS8qIGdvdCBpbl9hZGRyX3Q/ICovCi0jdW5kZWYgSEFWRV9JTl9BRERSX1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIGdldGRldnMoKSAqLwotI3VuZGVmIEhBVkVfR0VUREVWUwotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgZGV2c3RhdF9nZXRkZXZzKCkgKi8KLSN1bmRlZiBIQVZFX0RFVlNUQVRfR0VUREVWUwotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgPG5ldGluZXQvaW5fcGNiLmg+ICovCi0jdW5kZWYgSEFWRV9ORVRJTkVUX0lOX1BDQl9ICi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSA8c3lzL2Rpc2tsYWJlbC5oPiAqLwotI3VuZGVmIEhBVkVfU1lTX0RJU0tMQUJFTF9ICi0KLS8qIGRlZmluZSBpZiB5b3VyIGNvbXBpbGVyIChwcm9jZXNzb3IpIGRlZmluZXMgX19GVU5DVElPTl9fIGZvciB5b3UgKi8KLSN1bmRlZiBIQVZFX0NQUF9VTkRFUkJBUl9GVU5DVElPTl9ERUZJTkVECi0KLS8qIG9uIGFpeCwgaWYgeW91IGhhdmUgcGVyZnN0YXQgKi8KLSN1bmRlZiBIQVZFX1BFUkZTVEFUCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSBsaWJkYiwgbGlibm0gb3IgbGlicnBtLCByZXNwZWN0aXZlbHkgKi8KLSN1bmRlZiBIQVZFX0xJQkRCCi0jdW5kZWYgSEFWRV9MSUJOTQotI3VuZGVmIEhBVkVfTElCUlBNCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSBwa2dpbmZvICovCi0jdW5kZWYgSEFWRV9QS0dJTkZPCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSBnZXRob3N0YnluYW1lICovCi0jdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcGVybF9ldmFsX3B2KCkgZnVuY3Rpb24gKi8KLSN1bmRlZiBIQVZFX1BFUkxfRVZBTF9QVl9MQwotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgdGhlIFBlcmxfZXZhbF9wdigpIGZ1bmN0aW9uICovCi0jdW5kZWYgSEFWRV9QRVJMX0VWQUxfUFZfVUMKLQotLyogcHJpbnRpbmcgc3lzdGVtICovCi0jdW5kZWYgSEFWRV9MUFNUQVQKLSN1bmRlZiBMUFNUQVRfUEFUSAotI3VuZGVmIEhBVkVfUFJJTlRDQVAKLS8qIFVzZSBkbWFsbG9jIHRvIGRvIG1hbGxvYyBkZWJ1Z2dpbmc/ICovCi0jdW5kZWYgSEFWRV9ETUFMTE9DX0gKLQotLyogbG9jYXRpb24gb2YgVU5JWCBrZXJuZWwgKi8KLSNkZWZpbmUgS0VSTkVMX0xPQyAiL3ZtdW5peCIKLQotLyogbG9jYXRpb24gb2YgbW91bnQgdGFibGUgbGlzdCAqLwotI2RlZmluZSBFVENfTU5UVEFCICIvZXRjL21udHRhYiIKLQotLyogbG9jYXRpb24gb2Ygc3dhcCBkZXZpY2UgKG9rIGlmIG5vdCBmb3VuZCkgKi8KLSN1bmRlZiBETUVNX0xPQwotCi0vKiBDb21tYW5kIHRvIGdlbmVyYXRlIHBzIG91dHB1dCwgdGhlIGZpbmFsIGNvbHVtbiBtdXN0IGJlIHRoZSBwcm9jZXNzCi0gICBuYW1lIHdpdGhPVVQgYXJndW1lbnRzICovCi0jZGVmaW5lIFBTQ01EICIvYmluL3BzIgotCi0vKiBXaGVyZSBpcyB0aGUgdW5hbWUgY29tbWFuZCAqLwotI2RlZmluZSBVTkFNRVBST0cgIi9iaW4vdW5hbWUiCi0KLS8qIGRlZmluZSBpZiB5b3UgYXJlIHVzaW5nIGxpbnV4IGFuZCAvcHJvYy9uZXQvZGV2IGhhcyB0aGUgY29tcHJlc3NlZAotICAgZmllbGQsIHdoaWNoIGV4aXN0cyBpbiBsaW51eCBrZXJuZWxzIDIuMiBhbmQgZ3JlYXRlci4gKi8KLSN1bmRlZiBQUk9DX05FVF9ERVZfSEFTX0NPTVBSRVNTRUQKLQotLyogZGVmaW5lIHJ0ZW50cnkgdG8gb3J0ZW50cnkgb24gU1lTViBtYWNoaW5lcyAoYWxwaGFzKSAqLwotI3VuZGVmIFJURU5UUlkKLQotLyogVXNlIEJTRCA0LjQgcm91dGluZyB0YWJsZSBlbnRyaWVzPyAqLwotI3VuZGVmIFJURU5UUllfNF80Ci0KLS8qIERvZXMgc3RydWN0IHNpZ2FjdGlvbiBoYXZlIGEgc2Ffc2lnYWN0aW9uIGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9TSUdBQ1RJT05fSEFTX1NBX1NJR0FDVElPTgotCi0vKiBEb2VzIHN0cnVjdCB0bSBoYXZlIGEgdG1fZ210b2ZmIGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9UTV9IQVNfVE1fR01UT0ZGRgotCi0vKiBEb2VzIHN0cnVjdCBzb2NrYWRkciBoYXZlIGEgc2FfbGVuIGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfTEVOCi0KLS8qIERvZXMgc3RydWN0IHNvY2thZGRyIGhhdmUgYSBzYV9mYW1pbHkyIGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyCi0KLS8qIERvZXMgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgaGF2ZSBhIHNzX2ZhbWlseSBmaWVsZD8gKi8KLSN1bmRlZiBTVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9IQVNfU1NfRkFNSUxZCi0KLS8qIERvZXMgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgaGF2ZSBhIF9fc3NfZmFtaWx5IGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9TVE9SQUdFX0hBU19fX1NTX0ZBTUlMWQotCi0vKiBEb2VzIHN0cnVjdCBpbjZfYWRkciBoYXZlIGEgczZfdW4uc2E2X2xhZGQgZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX0lONl9BRERSX0hBU19TNl9VTl9TQTZfTEFERFIKLQotLyogcnRlbnRyeSBzdHJ1Y3R1cmUgdGVzdHMgKi8KLSN1bmRlZiBSVEVOVFJZX1JUX05FWFQKLSN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfRFNUCi0jdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1VOSVQKLSN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVVNFCi0jdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1JFRkNOVAotI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9IQVNICi0KLS8qIGlmbmV0IHN0cnVjdHVyZSB0ZXN0cyAqLwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQkFVRFJBVEUKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0JBVURSQVRFX0lGU19WQUxVRQotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfU1BFRUQKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1RZUEUKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lNQ0FTVFMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lRRFJPUFMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0xBU1RDSEFOR0VfVFZfU0VDCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9MQVNUQ0hBTkdFX1RWX05TRUMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX05PUFJPVE8KLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09NQ0FTVFMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1hOQU1FCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9PQllURVMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lCWVRFUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQUREUkxJU1QKLQotLyogdGNwc3RhdC50Y3BzX3Jjdm1lbWRyb3AgKi8KLSN1bmRlZiBTVFJVQ1RfVENQU1RBVF9IQVNfVENQU19SQ1ZNRU1EUk9QCi0KLS8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0jdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRElTQ0FSRAotCi0vKiB1ZHBzdGF0LnVkcHNfZGlzY2FyZCAqLwotI3VuZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX05PUE9SVAotCi0vKiB1ZHBzdGF0LnVkcHNfZGlzY2FyZCAqLwotI3VuZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX05PUE9SVEJDQVNUCi0KLS8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0jdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRlVMTFNPQ0sKLQotLyogYXJwaGQuYXRfbmV4dCAqLwotI3VuZGVmIFNUUlVDVF9BUlBIRF9IQVNfQVRfTkVYVAotCi0vKiBpZmFkZHIuaWZhX25leHQgKi8KLSN1bmRlZiBTVFJVQ1RfSUZBRERSX0hBU19JRkFfTkVYVAotCi0vKiBpZm5ldC5pZl9tdHUgKi8KLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX01UVQotCi0vKiBzd2RldnQuc3dfbmJsa3NlbmFibGVkICovCi0jdW5kZWYgU1RSVUNUX1NXREVWVF9IQVNfU1dfTkJMS1NFTkFCTEVECi0KLS8qIG5saXN0Lm5fdmFsdWUgKi8KLSN1bmRlZiBTVFJVQ1RfTkxJU1RfSEFTX05fVkFMVUUKLQotLyogbmxpc3Q2NC5uX3ZhbHVlICovCi0jdW5kZWYgU1RSVUNUX05MSVNUNjRfSEFTX05fVkFMVUUKLQotLyogaXBzdGF0IHN0cnVjdHVyZSB0ZXN0cyAqLwotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19DQU5URk9SV0FSRAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19DQU5URlJBRwotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19ERUxJVkVSRUQKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfRlJBR0RST1BQRUQKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfRlJBR1RJTUVPVVQKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTE9DQUxPVVQKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTk9QUk9UTwotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19OT1JPVVRFCi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX09EUk9QUEVECi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX09GUkFHTUVOVFMKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfUkVBU1NFTUJMRUQKLQotLyogdmZzc3RhdC5mX2Zyc2l6ZSAqLwotI3VuZGVmIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZSU0laRQotCi0vKiB2ZnNzdGF0LmZfZmlsZXMgKi8KLSN1bmRlZiBTVFJVQ1RfU1RBVFZGU19IQVNfRl9GSUxFUwotCi0vKiBzdGF0ZnMgaW5vZGUgc3RydWN0dXJlIHRlc3RzKi8KLSN1bmRlZiBTVFJVQ1RfU1RBVEZTX0hBU19GX0ZJTEVTCi0jdW5kZWYgU1RSVUNUX1NUQVRGU19IQVNfRl9GRlJFRQotI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRkFWQUlMCi0KLS8qIGRlc19rc19zdHJ1Y3Qud2Vha19rZXkgKi8KLSN1bmRlZiBTVFJVQ1RfREVTX0tTX1NUUlVDVF9IQVNfV0VBS19LRVkKLQotLyogaWZuZXQgbmVlZHMgdG8gaGF2ZSBfS0VSTkVMIGRlZmluZWQgKi8KLSN1bmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLQotLyogc3lzY3RsIHdvcmtzIHRvIGdldCBib290dGltZSwgZXRjLi4uICovCi0jdW5kZWYgTkVUU05NUF9DQU5fVVNFX1NZU0NUTAotCi0vKiBkZWZpbmUgaWYgU0lPQ0dJRkFERFIgZXhpc3RzIGluIHN5cy9pb2N0bC5oICovCi0jdW5kZWYgU1lTX0lPQ1RMX0hfSEFTX1NJT0NHSUZBRERSCi0KLS8qIERlZmluZSBpZiBzdGF0ZnMgdGFrZXMgMiBhcmdzIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGhhcwotICAgdHlwZSBzdHJ1Y3QgZnNfZGF0YS4gW1VsdHJpeF0gKi8KLSN1bmRlZiBTVEFUX1NUQVRGU19GU19EQVRBCi0KLS8qIERlZmluZSBpZiB0aGUgVENQIHRpbWVyIGNvbnN0YW50cyBpbiA8bmV0aW5ldC90Y3BfdGltZXIuaD4KLSAgIGRlcGVuZCBvbiB0aGUgaW50ZWdlciB2YXJpYWJsZSBgaHonLiAgW0ZyZWVCU0QgNC54XSAqLwotI3VuZGVmIFRDUFRWX05FRURTX0haCi0KLS8qIE5vdC10by1iZS1jb21waWxlZCBtYWNyb3MgZm9yIHVzZSBieSBjb25maWd1cmUgb25seSAqLwotI2RlZmluZSBjb25maWdfcmVxdWlyZSh4KQotI2RlZmluZSBjb25maWdfZXhjbHVkZSh4KQotI2RlZmluZSBjb25maWdfYXJjaF9yZXF1aXJlKHgseSkKLSNkZWZpbmUgY29uZmlnX3BhcnNlX2RvdF9jb25mKHcseCx5LHopCi0jZGVmaW5lIGNvbmZpZ19hZGRfbWliKHgpCi0jZGVmaW5lIGNvbmZpZ19iZWxvbmdzX2luKHgpCi0jZGVmaW5lIGNvbmZpZ19lcnJvcih4KQotI2RlZmluZSBjb25maWdfd2FybmluZyh4KQotICAKICNpZiBkZWZpbmVkIChXSU4zMikgfHwgZGVmaW5lZCAobWluZ3czMikgfHwgZGVmaW5lZCAoY3lnd2luKQogI2RlZmluZSBFTlZfU0VQQVJBVE9SICI7IgogI2RlZmluZSBFTlZfU0VQQVJBVE9SX0NIQVIgJzsnCkBAIC0yNjQsNiArMzUsMjcgQEAKIAogLyogZGVmaW5pdGlvbnMgYWRkZWQgYnkgY29uZmlndXJlIG9uLXRoZS1mbHkgKi8KIAorI2RlZmluZSBjb25maWdfYmVsb25nc19pbih4KQorCisjZGVmaW5lIGNvbmZpZ19leGNsdWRlKHgpCisKKyNkZWZpbmUgY29uZmlnX2FyY2hfcmVxdWlyZSh4LHkpCisKKyNkZWZpbmUgY29uZmlnX3ZlcnNpb25fcmVxdWlyZSh4KQorCisjZGVmaW5lIGNvbmZpZ19yZXF1aXJlKHgpCisKKyNkZWZpbmUgY29uZmlnX2FkZF9taWIoeCkKKworI2RlZmluZSBjb25maWdfcGFyc2VfZG90X2NvbmYodyx4LHkseikKKworI2RlZmluZSBjb25maWdfZXJyb3IoeCkKKworI2RlZmluZSBjb25maWdfd2FybmluZyh4KQorCisvKiBEZWZpbmUgaWYgYnVpbGRpbmcgdW5pdmVyc2FsIChpbnRlcm5hbCBoZWxwZXIgbWFjcm8pICovCisjdW5kZWYgQUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxECisKIC8qIERlZmluZSB0byBvbmUgb2YgYF9nZXRiNjcnLCBgR0VUQjY3JywgYGdldGI2NycgZm9yIENyYXktMiBhbmQgQ3JheS1ZTVAKICAgIHN5c3RlbXMuIFRoaXMgZnVuY3Rpb24gaXMgcmVxdWlyZWQgZm9yIGBhbGxvY2EuYycgc3VwcG9ydCBvbiB0aG9zZSBzeXN0ZW1zLgogICAgKi8KQEAgLTI3Miw2ICs2NCwxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgdXNpbmcgYGFsbG9jYS5jJy4gKi8KICN1bmRlZiBDX0FMTE9DQQogCisvKiBsb2NhdGlvbiBvZiBzd2FwIGRldmljZSAqLworI3VuZGVmIERNRU1fTE9DCisKKy8qIGxvY2F0aW9uIG9mIG1vdW50IHRhYmxlIGxpc3QgKi8KKyN1bmRlZiBFVENfTU5UVEFCCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgQUVTX2NmYjEyOF9lbmNyeXB0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0FFU19DRkIxMjhfRU5DUllQVAogCkBAIC0yOTEsMTggKzg5LDI1IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGFzbS90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0FTTV9UWVBFU19ICiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYmNvcHknIGZ1bmN0aW9uLiAqLwotI3VuZGVmIEhBVkVfQkNPUFkKKy8qIERlZmluZSBpZiB1c2luZyBNWV9JTklUKCkgY2F1c2VzIGEgbGlua2VyIGVycm9yICovCisjdW5kZWYgSEFWRV9CUk9LRU5fTElCTVlTUUxDTElFTlQKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjZ2V0bmV4dCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DR0VUTkVYVAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNob3duJyBmdW5jdGlvbi4gKi8KLSN1bmRlZiBIQVZFX0NIT1dOCi0KIC8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBDb3VudGVyNjQnLiAqLwogI3VuZGVmIEhBVkVfQ09VTlRFUjY0CiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgc2Vuc29yc19nZXRfYWxsX3N1YmZlYXR1cmVzJywKKyAgIGFuZCB0byAwIGlmIHlvdSBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfU0VOU09SU19HRVRfQUxMX1NVQkZFQVRVUkVTCisKKy8qIGRlZmluZSB0byAxIGlmIHlvdSBoYXZlIElSRV9DQUNIRSBkZWZpbmVkIGluIDxpbmV0L2lwLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfREVGSU5FRF9JUkVfQ0FDSEUKKworLyogZGVmaW5lIGlmIHlvdSBoYXZlIGRldnN0YXRfZ2V0ZGV2cygpICovCisjdW5kZWYgSEFWRV9ERVZTVEFUX0dFVERFVlMKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkaXJlbnQuaD4gaGVhZGVyIGZpbGUsIGFuZCBpdCBkZWZpbmVzIGBESVInLgogICAgKi8KICN1bmRlZiBIQVZFX0RJUkVOVF9ICkBAIC0zMTMsNiArMTE4LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZGxvcGVuJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0RMT1BFTgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRtYWxsb2MuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9ETUFMTE9DX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlcnIuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9FUlJfSAogCkBAIC0zNDMsNiArMTUxLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0YWRkcmluZm8nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfR0VUQUREUklORk8KIAorLyogZGVmaW5lIGlmIHlvdSBoYXZlIGdldGRldnMoKSAqLworI3VuZGVmIEhBVkVfR0VUREVWUworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGR0YWJsZXNpemUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfR0VURFRBQkxFU0laRQogCkBAIC0zNTIsNiArMTYzLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0Z3JuYW0nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfR0VUR1JOQU0KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0YnluYW1lJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0bmFtZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRIT1NUTkFNRQogCkBAIC0zNzksNiArMTkzLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0dGltZW9mZGF5JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVFRJTUVPRkRBWQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHZmc3N0YXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUVkZTU1RBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGdycC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0dSUF9ICiAKQEAgLTM5NCwyMyArMjExLDE3IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGlmX25hbWV0b2luZGV4JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0lGX05BTUVUT0lOREVYCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaW5kZXgnIGZ1bmN0aW9uLiAqLwotI3VuZGVmIEhBVkVfSU5ERVgKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW5ldC9jb21tb24uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9JTkVUX0NPTU1PTl9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW5ldC9pcC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0lORVRfSVBfSAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGluZXQvbWliMi5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lORVRfTUlCMl9ICiAKLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBpbnQxNl90Jy4gKi8KLSN1bmRlZiBIQVZFX0lOVDE2X1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYGludDMyX3QnLiAqLwotI3VuZGVmIEhBVkVfSU5UMzJfVAotCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgaW50NjRfdCcuICovCi0jdW5kZWYgSEFWRV9JTlQ2NF9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBpbnQ4X3QnLiAqLwotI3VuZGVmIEhBVkVfSU5UOF9UCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluaXRncm91cHMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfSU5JVEdST1VQUwogCiAvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgaW50bWF4X3QnLiAqLwogI3VuZGVmIEhBVkVfSU5UTUFYX1QKQEAgLTQyMSwyMSArMjMyLDMzIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgaW5fYWRkcl90Jy4gKi8KKyN1bmRlZiBIQVZFX0lOX0FERFJfVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGlvY3Rscy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lPQ1RMU19ICiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW8uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9JT19ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aXBobHBhcGkuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9JUEhMUEFQSV9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga2luZm9fZ2V0X2NwdXMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS0lORk9fR0VUX0NQVVMKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrbmxpc3QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS05MSVNUCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3JiNV9hdXRoX2Nvbl9nZXRzZW5kc3Via2V5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0tSQjVfQVVUSF9DT05fR0VUU0VORFNVQktFWQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGtzdGF0Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfS1NUQVRfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bV9nZXRwcm9jMicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9LVk1fR0VUUFJPQzIKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm1fZ2V0cHJvY3MnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS1ZNX0dFVFBST0NTCiAKQEAgLTQ0OCwzMCArMjcxLDIxIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bV9vcGVuZmlsZXMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS1ZNX09QRU5GSUxFUwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNyeXB0bycgbGlicmFyeSAoLWxjcnlwdG8pLiAqLworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIE9wZW5TU0wgbGlicmFyeSAoLWxjcnlwdG8gb3IgLWxlYXkzMikuICovCiAjdW5kZWYgSEFWRV9MSUJDUllQVE8KIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkbCcgbGlicmFyeSAoLWxkbCkuICovCi0jdW5kZWYgSEFWRV9MSUJETAotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGVmZW5jZScgbGlicmFyeSAoLWxlZmVuY2UpLiAqLwotI3VuZGVmIEhBVkVfTElCRUZFTkNFCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZWxmJyBsaWJyYXJ5ICgtbGVsZikuICovCiAjdW5kZWYgSEFWRV9MSUJFTEYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrc3RhdCcgbGlicmFyeSAoLWxrc3RhdCkuICovCiAjdW5kZWYgSEFWRV9MSUJLU1RBVAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bScgbGlicmFyeSAoLWxrdm0pLiAqLwotI3VuZGVmIEhBVkVfTElCS1ZNCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbScgbGlicmFyeSAoLWxtKS4gKi8KLSN1bmRlZiBIQVZFX0xJQk0KLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtbGQnIGxpYnJhcnkgKC1sbWxkKS4gKi8KICN1bmRlZiBIQVZFX0xJQk1MRAogCisvKiBkZWZpbmUgaWYgeW91IGhhdmUgbGlibm0gKi8KKyN1bmRlZiBIQVZFX0xJQk5NCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbnNsJyBsaWJyYXJ5ICgtbG5zbCkuICovCiAjdW5kZWYgSEFWRV9MSUJOU0wKIApAQCAtNDgxLDEyICsyOTUsMjEgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGtjczExJyBsaWJyYXJ5ICgtbHBrY3MxMSkuICovCiAjdW5kZWYgSEFWRV9MSUJQS0NTMTEKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBycG0nIGxpYnJhcnkgKC1scnBtKS4gKi8KKyN1bmRlZiBIQVZFX0xJQlJQTQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYFJTQWdsdWUnIGxpYnJhcnkgKC1sUlNBZ2x1ZSkuICovCiAjdW5kZWYgSEFWRV9MSUJSU0FHTFVFCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcnNhcmVmJyBsaWJyYXJ5ICgtbHJzYXJlZikuICovCiAjdW5kZWYgSEFWRV9MSUJSU0FSRUYKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzc2gyJyBsaWJyYXJ5ICgtbHNzaDIpLiAqLworI3VuZGVmIEhBVkVfTElCU1NIMgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNzbCcgbGlicmFyeSAoLWxzc2wpLiAqLworI3VuZGVmIEhBVkVfTElCU1NMCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGltaXRzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTElNSVRTX0gKIApAQCAtNDk2LDE0ICszMTksMjMgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvaGRyZWcuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU5VWF9IRFJFR19ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvbmV0bGluay5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0xJTlVYX05FVExJTktfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L3J0bmV0bGluay5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvdGFza3MuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU5VWF9UQVNLU19ICiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bG9jYWxlLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTE9DQUxFX0gKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2NhbHRpbWVfcicgZnVuY3Rpb24uICovCi0jdW5kZWYgSEFWRV9MT0NBTFRJTUVfUgorLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYGxvbmcgbG9uZyBpbnQnLiAqLworI3VuZGVmIEhBVkVfTE9OR19MT05HX0lOVAorCisvKiBTZXQgaWYgdGhlIGxwc3RhdCBjb21tYW5kIGlzIGF2YWlsYWJsZSAqLworI3VuZGVmIEhBVkVfTFBTVEFUCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHJhbmQ0OCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9MUkFORDQ4CkBAIC01MjMsMTUgKzM1NSwxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtYWxsb2MuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9NQUxMT0NfSAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbWNweScgZnVuY3Rpb24uICovCi0jdW5kZWYgSEFWRV9NRU1DUFkKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtZW1tb3ZlJyBmdW5jdGlvbi4gKi8KLSN1bmRlZiBIQVZFX01FTU1PVkUKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9NRU1PUllfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgbWliMl9pcElmU3RhdHNFbnRyeV90Jy4gKi8KKyN1bmRlZiBIQVZFX01JQjJfSVBJRlNUQVRTRU5UUllfVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rc3RlbXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTUtTVEVNUAogCkBAIC01NzQsNiArNDAzLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldDYvdGNwNl92YXIuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRJTkVUNl9UQ1A2X1ZBUl9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pY21wNi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX05FVElORVRfSUNNUDZfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaWNtcF92YXIuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRJTkVUX0lDTVBfVkFSX0gKIApAQCAtNTgzLDYgKzQxNSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaW4uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRJTkVUX0lOX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L2luX3BjYi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX05FVElORVRfSU5fUENCX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L2luX3N5c3RtLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTkVUSU5FVF9JTl9TWVNUTV9ICiAKQEAgLTYyNSw2ICs0NjAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpcHgvaXB4Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTkVUSVBYX0lQWF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0bGluay9uZXRsaW5rLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUTElOS19ORVRMSU5LX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXQvaWZfYXJwLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTkVUX0lGX0FSUF9ICiAKQEAgLTY0Niw2ICs0ODQsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXQvcm91dGUuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRfUk9VVEVfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgbmZkc190Jy4gKi8KKyN1bmRlZiBIQVZFX05GRFNfVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG5saXN0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX05MSVNUCiAKQEAgLTY3OSwxOCArNTIwLDM2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHBjaS9wY2kuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9QQ0lfUENJX0gKIAorLyogb24gYWl4LCBpZiB5b3UgaGF2ZSBwZXJmc3RhdCAqLworI3VuZGVmIEhBVkVfUEVSRlNUQVQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYHRoZSBwZXJsX2V2YWxfcHYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUEVSTF9FVkFMX1BWX0xDCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgUGVybF9ldmFsX3B2JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BFUkxfRVZBTF9QVl9VQworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHBpY2wuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9QSUNMX0gKIAorLyogZGVmaW5lIGlmIHlvdSBoYXZlIHBrZ2luZm8gKi8KKyN1bmRlZiBIQVZFX1BLR0lORk8KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwa2dpbmZvLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfUEtHSU5GT19ICiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cGtnbG9jcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BLR0xPQ1NfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBvbGwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUE9MTAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHByZWFkNjQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUFJFQUQ2NAogCisvKiBTZXQgaWYgL2V0Yy9wcmludGNhcCBleGlzdHMgKi8KKyN1bmRlZiBIQVZFX1BSSU5UQ0FQCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cHRocmVhZC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BUSFJFQURfSAogCkBAIC03MDMsNiArNTYyLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmFuZG9tJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1JBTkRPTQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWRkaXInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUkVBRERJUgorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2NvbXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUkVHQ09NUAogCkBAIC03MTUsNiArNTc3LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cnBtL2hlYWRlci5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1JQTV9IRUFERVJfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHJwbS9ycG1maWxldXRpbC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1JQTV9SUE1GSUxFVVRJTF9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cnBtL3JwbWxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1JQTV9SUE1MSUJfSAogCkBAIC03MzAsNiArNTk1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VsZWN0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFTEVDVAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNlbnNvcnMvc2Vuc29ycy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NFTlNPUlNfU0VOU09SU19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0ZW52JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFVEVOVgogCkBAIC03ODEsNyArNjQ5LDEwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNvY2tldCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TT0NLRVQKIAotLyogRGVmaW5lIGlmIHR5cGUgc3NpemVfdCBpcyBhdmFpbGFibGUgKi8KKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBzb2NrbGVuX3QnLiAqLworI3VuZGVmIEhBVkVfU09DS0xFTl9UCisKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBzc2l6ZV90Jy4gKi8KICN1bmRlZiBIQVZFX1NTSVpFX1QKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdGF0ZnMnIGZ1bmN0aW9uLiAqLwpAQCAtNzkwLDkgKzY2MSw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0YXR2ZnMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RBVFZGUwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGFyZy5oPiBoZWFkZXIgZmlsZS4gKi8KLSN1bmRlZiBIQVZFX1NUREFSR19ICi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1RESU5UX0gKIApAQCAtODA1LDkgKzY3Myw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmNhc2VzdHInIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RSQ0FTRVNUUgogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmNocicgZnVuY3Rpb24uICovCi0jdW5kZWYgSEFWRV9TVFJDSFIKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJkdXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RSRFVQCiAKQEAgLTgzOCwxMiArNzAzLDIxMSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJ0b3VsJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NUUlRPVUwKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJ0b3VsbCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJUT1VMTAorCisvKiBEZWZpbmUgdG8gMSBpZiBgYXRfbmV4dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgYXJwaGQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0FSUEhEX0FUX05FWFQKKworLyogRGVmaW5lIHRvIDEgaWYgYHdlYWtfa2V5JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBkZXNfa3Nfc3RydWN0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9ERVNfS1NfU1RSVUNUX1dFQUtfS0VZCisKKy8qIERlZmluZSB0byAxIGlmIGBkX3R5cGUnIGlzIG1lbWJlciBvZiBgc3RydWN0IGRpcmVudCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfRElSRU5UX0RfVFlQRQorCiAvKiBEZWZpbmUgdG8gMSBpZiBgc3BlZWRfaGknIGlzIG1lbWJlciBvZiBgc3RydWN0IGV0aHRvb2xfY21kJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9FVEhUT09MX0NNRF9TUEVFRF9ISQogCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZhX25leHQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmYWRkcicuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZBRERSX0lGQV9ORVhUCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9hZGRyaGVhZC50cWhfZmlyc3QnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9BRERSSEVBRF9UUUhfRklSU1QKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2FkZHJsaXN0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfQUREUkxJU1QKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2JhdWRyYXRlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfQkFVRFJBVEUKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2JhdWRyYXRlLmlmc192YWx1ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0JBVURSQVRFX0lGU19WQUxVRQorCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfaWJ5dGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSUJZVEVTCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9pbWNhc3RzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSU1DQVNUUworCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfaXFkcm9wcycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lRRFJPUFMKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2xhc3RjaGFuZ2UudHZfbnNlYycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0xBU1RDSEFOR0VfVFZfTlNFQworCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfbGFzdGNoYW5nZS50dl9zZWMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9MQVNUQ0hBTkdFX1RWX1NFQworCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfbXR1JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTVRVCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9ub3Byb3RvJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTk9QUk9UTworCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfb2J5dGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfT0JZVEVTCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9vbWNhc3RzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfT01DQVNUUworCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfc3BlZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9TUEVFRAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfdHlwZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1RZUEUKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX3huYW1lJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19jYW50Zm9yd2FyZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0NBTlRGT1JXQVJECisKKy8qIERlZmluZSB0byAxIGlmIGBpcHNfY2FudGZyYWcnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19DQU5URlJBRworCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2RlbGl2ZXJlZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0RFTElWRVJFRAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdkcm9wcGVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfRlJBR0RST1BQRUQKKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19mcmFnbWVudGVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfRlJBR01FTlRFRAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWd0aW1lb3V0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfRlJBR1RJTUVPVVQKKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19sb2NhbG91dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0xPQ0FMT1VUCisKKy8qIERlZmluZSB0byAxIGlmIGBpcHNfbm9wcm90bycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX05PUFJPVE8KKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19ub3JvdXRlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfTk9ST1VURQorCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29kcm9wcGVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfT0RST1BQRUQKKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19vZnJhZ21lbnRzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfT0ZSQUdNRU5UUworCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX3JlYXNzZW1ibGVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfUkVBU1NFTUJMRUQKKworLyogRGVmaW5lIHRvIDEgaWYgYG1fY2xmcmVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBtYnN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX01CU1RBVF9NX0NMRlJFRQorCisvKiBEZWZpbmUgdG8gMSBpZiBgbV9jbHVzdGVycycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgbWJzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9NQlNUQVRfTV9DTFVTVEVSUworCisvKiBEZWZpbmUgdG8gMSBpZiBgbV9tYnVmcycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgbWJzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9NQlNUQVRfTV9NQlVGUworCisvKiBEZWZpbmUgdG8gMSBpZiBgbXNnX2NvbnRyb2wnIGlzIG1lbWJlciBvZiBgc3RydWN0IG1zZ2hkcicuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfTVNHSERSX01TR19DT05UUk9MCisKKy8qIERlZmluZSB0byAxIGlmIGBuX3ZhbHVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBubGlzdDY0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9OTElTVDY0X05fVkFMVUUKKworLyogRGVmaW5lIHRvIDEgaWYgYG5fdmFsdWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IG5saXN0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9OTElTVF9OX1ZBTFVFCisKKy8qIERlZmluZSB0byAxIGlmIGBydF9kc3QnIGlzIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfRFNUCisKKy8qIERlZmluZSB0byAxIGlmIGBydF9oYXNoJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0hBU0gKKworLyogRGVmaW5lIHRvIDEgaWYgYHJ0X25leHQnIGlzIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfTkVYVAorCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfcmVmY250JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1JFRkNOVAorCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfdW5pdCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9VTklUCisKKy8qIERlZmluZSB0byAxIGlmIGBydF91c2UnIGlzIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfVVNFCisKKy8qIERlZmluZSB0byAxIGlmIGBzYV9zaWdhY3Rpb24nIGlzIG1lbWJlciBvZiBgc3RydWN0IHNpZ2FjdGlvbicuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU0lHQUNUSU9OX1NBX1NJR0FDVElPTgorCiAvKiBEZWZpbmUgdG8gMSBpZiBgc2luNl9zY29wZV9pZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfaW42Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9JTjZfU0lONl9TQ09QRV9JRAogCisvKiBEZWZpbmUgdG8gMSBpZiBgc2FfbGVuJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzb2NrYWRkcicuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU0FfTEVOCisKKy8qIERlZmluZSB0byAxIGlmIGBzYV91bmlvbi5zYV9nZW5lcmljLnNhX2ZhbWlseTInIGlzIG1lbWJlciBvZiBgc3RydWN0CisgICBzb2NrYWRkcicuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyCisKKy8qIERlZmluZSB0byAxIGlmIGBzc19mYW1pbHknIGlzIG1lbWJlciBvZiBgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfU1NfRkFNSUxZCisKKy8qIERlZmluZSB0byAxIGlmIGBfX3NzX2ZhbWlseScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9fX1NTX0ZBTUlMWQorCisvKiBEZWZpbmUgdG8gMSBpZiBgZl9mYXZhaWwnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRkFWQUlMCisKKy8qIERlZmluZSB0byAxIGlmIGBmX2ZmcmVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZGUkVFCisKKy8qIERlZmluZSB0byAxIGlmIGBmX2ZpbGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZJTEVTCisKKy8qIERlZmluZSB0byAxIGlmIGBmX2Zyc2l6ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GUlNJWkUKKworLyogRGVmaW5lIHRvIDEgaWYgYGZfZmlsZXMnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GSUxFUworCisvKiBEZWZpbmUgdG8gMSBpZiBgZl9mcnNpemUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUKKworLyogRGVmaW5lIHRvIDEgaWYgYG1udF9kaXInIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfTU5UX0RJUgorCisvKiBEZWZpbmUgdG8gMSBpZiBgc3dfbmJsa3NlbmFibGVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzd2RldnQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NXREVWVF9TV19OQkxLU0VOQUJMRUQKKworLyogRGVmaW5lIHRvIDEgaWYgYHRjcF9yY3ZtZW1kcm9wJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCB0Y3BzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9UQ1BTVEFUX1RDUF9SQ1ZNRU1EUk9QCisKKy8qIERlZmluZSB0byAxIGlmIGB0bV9nbXRvZmYnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRtJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9HTVRPRkYKKworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfZGlzY2FyZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0RJU0NBUkQKKworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfZnVsbHNvY2snIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19GVUxMU09DSworCisvKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19ub3BvcnQnIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19OT1BPUlQKKworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfbm9wb3J0YmNhc3QnIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19OT1BPUlRCQ0FTVAorCisvKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19vcGFja2V0cycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX09QQUNLRVRTCisKKy8qIERlZmluZSB0byAxIGlmIGBwZ3N3YXBpbicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdXZtZXhwJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9VVk1FWFBfUEdTV0FQSU4KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzeXNjb25mJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NZU0NPTkYKIApAQCAtODY2LDYgKzkzMCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9kaXNraW8uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfRElTS0lPX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZGlza2xhYmVsLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX0RJU0tMQUJFTF9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2RraW8uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfREtJT19ICiAKQEAgLTkxNSw2ICs5ODIsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvcGFyYW0uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfUEFSQU1fSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wb2xsLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1BPTExfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wb29sLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1BPT0xfSAogCkBAIC0xMDQ3LDE4ICsxMTE3LDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dWZzL3Vmcy9xdW90YS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1VGU19VRlNfUVVPVEFfSAogCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdWludDE2X3QnLiAqLwotI3VuZGVmIEhBVkVfVUlOVDE2X1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVpbnQzMl90Jy4gKi8KLSN1bmRlZiBIQVZFX1VJTlQzMl9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1aW50NjRfdCcuICovCi0jdW5kZWYgSEFWRV9VSU5UNjRfVAotCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdWludDhfdCcuICovCi0jdW5kZWYgSEFWRV9VSU5UOF9UCi0KIC8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1aW50bWF4X3QnLiAqLwogI3VuZGVmIEhBVkVfVUlOVE1BWF9UCiAKQEAgLTEwNzEsNiArMTEyOSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1VOSVNURF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1bnNpZ25lZCBsb25nIGxvbmcgaW50Jy4gKi8KKyN1bmRlZiBIQVZFX1VOU0lHTkVEX0xPTkdfTE9OR19JTlQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1c2xlZXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVVNMRUVQCiAKQEAgLTEwODYsMTggKzExNDcsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1dm0vdXZtX3BhcmFtLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVVZNX1VWTV9QQVJBTV9ICiAKLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1X2ludDE2X3QnLiAqLwotI3VuZGVmIEhBVkVfVV9JTlQxNl9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1X2ludDMyX3QnLiAqLwotI3VuZGVmIEhBVkVfVV9JTlQzMl9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1X2ludDY0X3QnLiAqLwotI3VuZGVmIEhBVkVfVV9JTlQ2NF9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1X2ludDhfdCcuICovCi0jdW5kZWYgSEFWRV9VX0lOVDhfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHZtL3N3YXBfcGFnZXIuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9WTV9TV0FQX1BBR0VSX0gKIApAQCAtMTExMywxOCArMTE2Miw1MyBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB2c25wcmludGYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVlNOUFJJTlRGCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8d2luZG93cy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1dJTkRPV1NfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHdpbnNvY2syLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfV0lOU09DSzJfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHdpbnNvY2suaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9XSU5TT0NLX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx3czJ0Y3BpcC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1dTMlRDUElQX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx4dGkuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9YVElfSAogCisvKiBsb2NhdGlvbiBvZiBVTklYIGtlcm5lbCAqLworI3VuZGVmIEtFUk5FTF9MT0MKKworLyogUGF0aCB0byB0aGUgbHBzdGF0IGNvbW1hbmQgKi8KKyN1bmRlZiBMUFNUQVRfUEFUSAorCisvKiBEZWZpbmUgdG8gdGhlIHN1Yi1kaXJlY3RvcnkgaW4gd2hpY2ggbGlidG9vbCBzdG9yZXMgdW5pbnN0YWxsZWQgbGlicmFyaWVzLgorICAgKi8KKyN1bmRlZiBMVF9PQkpESVIKKworLyogZGVmaW5lIGlmIGFnZW50eCB0cmFuc3BvcnQgaXMgdG8gdXNlIGRvbWFpbiBzb2NrZXRzIG9ubHkgKi8KKyN1bmRlZiBORVRTTk1QX0FHRU5UWF9ET01fU09DS19PTkxZCisKIC8qIFVuaXggZG9tYWluIHNvY2tldCBmb3IgQWdlbnRYIG1hc3Rlci1zdWJhZ2VudCBjb21tdW5pY2F0aW9uICovCiAjdW5kZWYgTkVUU05NUF9BR0VOVFhfU09DS0VUCiAKIC8qIERlZmluZSBpZiBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBhcmUgdW5zdXBwb3J0ZWQgKi8KICN1bmRlZiBORVRTTk1QX0JST0tFTl9JTkxJTkUKIAorLyogc3lzY3RsIHdvcmtzIHRvIGdldCBib290dGltZSwgZXRjLi4uICovCisjdW5kZWYgTkVUU05NUF9DQU5fVVNFX1NZU0NUTAorCisvKiBjb25maWd1cmUgb3B0aW9ucyBzcGVjaWZpZWQgKi8KKyN1bmRlZiBORVRTTk1QX0NPTkZJR1VSRV9PUFRJT05TCisKKy8qIGRlZmF1bHQgbG9jYXRpb24gdG8gbG9vayBmb3IgbWlicyB0byBsb2FkIHVzaW5nIHRoZSBhYm92ZSB0b2tlbnMgYW5kL29yCisgICB0aG9zZSBpbiB0aGUgTUlCUyBlbnZyaW9ubWVudCB2YXJpYWJsZSAqLworI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9NSUJESVJTCisKKy8qIGRlZmF1bHQgbWliIGZpbGVzIHRvIGxvYWQsIHNwZWNpZmllZCBieSBwYXRoLiAqLworI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9NSUJGSUxFUworCiAvKiBEZWZpbmUgaWYgREVTIGVuY3J5cHRpb24gc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWQgKi8KICN1bmRlZiBORVRTTk1QX0RJU0FCTEVfREVTCiAKQEAgLTExNDMsOSArMTIyNyw4NSBAQAogLyogRGVmaW5lIGlmIFNOTVB2MmMgY29kZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkICovCiAjdW5kZWYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKIAorLyogRGVmaW5lIGlmIHlvdSBhcmUgZW1iZWRkaW5nIHBlcmwgaW4gdGhlIG1haW4gYWdlbnQuICovCisjdW5kZWYgTkVUU05NUF9FTUJFRERFRF9QRVJMCisKKy8qIGRlZmluZSBpZiB5b3Ugd2FudCB0byBlbmFibGUgSVB2NiBzdXBwb3J0ICovCisjdW5kZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorCisvKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QgU01VWCBjb25uZWN0aW9ucyB0byBsb2NhbGhvc3QgYnkgZGVmYXVsdCAqLworI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0xPQ0FMX1NNVVgKKworLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE1GRCBtb2R1bGUgcmV3cml0ZXMgKi8KKyN1bmRlZiBORVRTTk1QX0VOQUJMRV9NRkRfUkVXUklURVMKKworLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgc3VwcG9ydCBmb3IgYm90aCBhdXRoZW50aWNhdGlvbiBhbmQgcHJpdmFjeQorICAgc3VwcG9ydC4gKi8KKyN1bmRlZiBORVRTTk1QX0VOQUJMRV9TQ0FQSV9BVVRIUFJJVgorCisvKiB0ZXN0aW5nIGNvZGUgc2VjdGlvbnMuICovCisjdW5kZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCisKKy8qIFNob3VsZCBldmFsdWF0ZSB0byB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBmdW5jdGlvbiBpZiBkZWZpbmVkICovCisjdW5kZWYgTkVUU05NUF9GVU5DVElPTgorCisvKiBpZm5ldCBuZWVkcyB0byBoYXZlIF9LRVJORUwgZGVmaW5lZCAqLworI3VuZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMCisKKy8qIGlmbmV0IG5lZWRzIHRvIGhhdmUgX0tFUk5FTF9TVFJVQ1RVUkVTIGRlZmluZWQgKi8KKyN1bmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCisKKy8qIERlZmluZSB0byBzdXBwcmVzcyBpbmNsdXNpb24gb2YgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKi8KKyN1bmRlZiBORVRTTk1QX05PX0RFUFJFQ0FURURfRlVOQ1RJT05TCisKKy8qIElmIHlvdSBkb24ndCB3YW50IHRoZSBhZ2VudCB0byByZXBvcnQgb24gdmFyaWFibGVzIGl0IGRvZXNuJ3QgaGF2ZSBkYXRhIGZvcgorICAgKi8KKyN1bmRlZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUworCisvKiBJZiB3ZSBkb24ndCB3YW50IHRvIHVzZSBrbWVtLiAqLworI3VuZGVmIE5FVFNOTVBfTk9fS01FTV9VU0FHRQorCisvKiBJZiB5b3UgZG9uJ3QgaGF2ZSByb290IGFjY2VzcyBkb24ndCBleGl0IHVwb24ga21lbSBlcnJvcnMgKi8KKyN1bmRlZiBORVRTTk1QX05PX1JPT1RfQUNDRVNTCisKKy8qIHVtYXNrIHBlcm1pc3Npb25zIHRvIHNldCB1cCBwZXJzaXN0ZW50IGZpbGVzIHdpdGggKi8KKyN1bmRlZiBORVRTTk1QX1BFUlNJU1RFTlRfTUFTSworCisvKiBTaXplIHByZWZpeCB0byB1c2UgdG8gcHJpbnRmIGEgc2l6ZV90IG9yIHNzaXplX3QgKi8KKyN1bmRlZiBORVRTTk1QX1BSSXoKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IHdhbnQgdG8gYnVpbGQgd2l0aCByZWVudHJhbnQvdGhyZWFkZWQgY29kZSAoaW5jb21wbGV0ZSkuCisgICAqLworI3VuZGVmIE5FVFNOTVBfUkVFTlRSQU5UCisKKy8qIGRlZmluZSBpZiB5b3UgZG8gbm90IHdhbnQgc25tcHRyYXBkIHRvIHJlZ2lzdGVyIGFzIGFuIEFnZW50WCBzdWJhZ2VudCAqLworI3VuZGVmIE5FVFNOTVBfU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYCisKIC8qIFBhdHRlcm4gb2YgdGVtcG9yYXJ5IGZpbGVzICovCiAjdW5kZWYgTkVUU05NUF9URU1QX0ZJTEVfUEFUVEVSTgogCisvKiBkZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgTUQ1IGNvZGUgLi4uICovCisjdW5kZWYgTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1CisKKy8qIERlZmluZSB0aGlzIGlmIHlvdSdyZSB1c2luZyBIZWltZGFsIEtlcmJlcm9zICovCisjdW5kZWYgTkVUU05NUF9VU0VfS0VSQkVST1NfSEVJTURBTAorCisvKiBEZWZpbmUgdGhpcyBpZiB3ZSdyZSB1c2luZyB0aGUgbmV3IE1JVCBjcnlwdG8gQVBJICovCisjdW5kZWYgTkVUU05NUF9VU0VfS0VSQkVST1NfTUlUCisKKy8qIGRlZmluZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBteXNxbCBjb2RlIGZvciBzbm1wdHJhcGQgLi4uICovCisjdW5kZWYgTkVUU05NUF9VU0VfTVlTUUwKKworLyogRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgdGhlIGNvZGVTMTEgbGlicmFyeSAuLi4gKi8KKyN1bmRlZiBORVRTTk1QX1VTRV9QS0NTMTEKKworLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgbGltX3NlbnNvcnMgdjMgb3IgbGF0ZXIgKi8KKyN1bmRlZiBORVRTTk1QX1VTRV9TRU5TT1JTX1YzCisKKy8qIFNob3VsZCB3ZSBjb21waWxlIHRvIHVzZSBzcGVjaWFsIG9wYXF1ZSB0eXBlczogZmxvYXQsIGRvdWJsZSwgY291bnRlcjY0LAorICAgaTY0LCB1aTY0LCB1bmlvbj8gKi8KKyN1bmRlZiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMKKwogLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCiAjaWZuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCiAjdW5kZWYgUEFDS0FHRV9CVUdSRVBPUlQKQEAgLTExNzEsNTIgKzEzMzEsMTI0IEBACiAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCiAjZW5kaWYKIAorLyogQ29tbWFuZCB0byBnZW5lcmF0ZSBwcyBvdXRwdXQsIHRoZSBmaW5hbCBjb2x1bW4gbXVzdCBiZSB0aGUgcHJvY2VzcyBuYW1lCisgICB3aXRoT1VUIGFyZ3VtZW50cyAqLworI3VuZGVmIFBTQ01ECisKIC8qIERlZmluZSBhcyB0aGUgcmV0dXJuIHR5cGUgb2Ygc2lnbmFsIGhhbmRsZXJzIChgaW50JyBvciBgdm9pZCcpLiAqLwogI3VuZGVmIFJFVFNJR1RZUEUKIAotLyogVGhlIHNpemUgb2YgYSBgaW50JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworLyogZGVmaW5lIHJ0ZW50cnkgdG8gb3J0ZW50cnkgb24gU1lTViBtYWNoaW5lcyAoYWxwaGFzKSAqLworI3VuZGVmIFJURU5UUlkKKworLyogVXNlIEJTRCA0LjQgcm91dGluZyB0YWJsZSBlbnRyaWVzPyAqLworI3VuZGVmIFJURU5UUllfNF80CisKKy8qIFRoZSBzaXplIG9mIGBpbnQnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCiAjdW5kZWYgU0laRU9GX0lOVAogCi0vKiBUaGUgc2l6ZSBvZiBhIGBpbnRtYXhfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKy8qIFRoZSBzaXplIG9mIGBpbnRtYXhfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICN1bmRlZiBTSVpFT0ZfSU5UTUFYX1QKIAotLyogVGhlIHNpemUgb2YgYSBgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKy8qIFRoZSBzaXplIG9mIGBsb25nJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwogI3VuZGVmIFNJWkVPRl9MT05HCiAKLS8qIFRoZSBzaXplIG9mIGEgYGxvbmcgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKy8qIFRoZSBzaXplIG9mIGBsb25nIGxvbmcnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCiAjdW5kZWYgU0laRU9GX0xPTkdfTE9ORwogCi0vKiBUaGUgc2l6ZSBvZiBhIGBzaG9ydCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKy8qIFRoZSBzaXplIG9mIGBzaG9ydCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICN1bmRlZiBTSVpFT0ZfU0hPUlQKIAogLyogSWYgdXNpbmcgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YgYWxsb2NhLCBkZWZpbmUgaWYgeW91IGtub3cgdGhlCiAgICBkaXJlY3Rpb24gb2Ygc3RhY2sgZ3Jvd3RoIGZvciB5b3VyIHN5c3RlbTsgb3RoZXJ3aXNlIGl0IHdpbGwgYmUKLSAgIGF1dG9tYXRpY2FsbHkgZGVkdWNlZCBhdCBydW4tdGltZS4KKyAgIGF1dG9tYXRpY2FsbHkgZGVkdWNlZCBhdCBydW50aW1lLgogCVNUQUNLX0RJUkVDVElPTiA+IDAgPT4gZ3Jvd3MgdG93YXJkIGhpZ2hlciBhZGRyZXNzZXMKIAlTVEFDS19ESVJFQ1RJT04gPCAwID0+IGdyb3dzIHRvd2FyZCBsb3dlciBhZGRyZXNzZXMKIAlTVEFDS19ESVJFQ1RJT04gPSAwID0+IGRpcmVjdGlvbiBvZiBncm93dGggdW5rbm93biAqLwogI3VuZGVmIFNUQUNLX0RJUkVDVElPTgogCisvKiBEZWZpbmUgaWYgc3RhdGZzIHRha2VzIDIgYXJncyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCBoYXMgdHlwZSBzdHJ1Y3QKKyAgIGZzX2RhdGEuIFtVbHRyaXhdICovCisjdW5kZWYgU1RBVF9TVEFURlNfRlNfREFUQQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gKi8KICN1bmRlZiBTVERDX0hFQURFUlMKIAorLyogZGVmaW5lIGlmIFNJT0NHSUZBRERSIGV4aXN0cyBpbiBzeXMvaW9jdGwuaCAqLworI3VuZGVmIFNZU19JT0NUTF9IX0hBU19TSU9DR0lGQUREUgorCisvKiBEZWZpbmUgaWYgdGhlIFRDUCB0aW1lciBjb25zdGFudHMgaW4gPG5ldGluZXQvdGNwX3RpbWVyLmg+IGRlcGVuZCBvbiB0aGUKKyAgIGludGVnZXIgdmFyaWFibGUgJ2h6Jy4gW0ZyZWVCU0QgNC54XSAqLworI3VuZGVmIFRDUFRWX05FRURTX0haCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBjYW4gc2FmZWx5IGluY2x1ZGUgYm90aCA8c3lzL3RpbWUuaD4gYW5kIDx0aW1lLmg+LiAqLwogI3VuZGVmIFRJTUVfV0lUSF9TWVNfVElNRQogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHByb2Nlc3NvciBzdG9yZXMgd29yZHMgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBieXRlCi0gICBmaXJzdCAobGlrZSBNb3Rvcm9sYSBhbmQgU1BBUkMsIHVubGlrZSBJbnRlbCBhbmQgVkFYKS4gKi8KLSN1bmRlZiBXT1JEU19CSUdFTkRJQU4KKy8qIFdoZXJlIGlzIHRoZSB1bmFtZSBjb21tYW5kICovCisjdW5kZWYgVU5BTUVQUk9HCiAKLS8qIERlZmluZSB0byAxIGlmIG9uIEFJWCAzLgotICAgU3lzdGVtIGhlYWRlcnMgc29tZXRpbWVzIGRlZmluZSB0aGlzLgotICAgV2UganVzdCB3YW50IHRvIGF2b2lkIGEgcmVkZWZpbml0aW9uIGVycm9yIG1lc3NhZ2UuICAqLworLyogRW5hYmxlIGV4dGVuc2lvbnMgb24gQUlYIDMsIEludGVyaXguICAqLwogI2lmbmRlZiBfQUxMX1NPVVJDRQogIyB1bmRlZiBfQUxMX1NPVVJDRQogI2VuZGlmCisvKiBFbmFibGUgR05VIGV4dGVuc2lvbnMgb24gc3lzdGVtcyB0aGF0IGhhdmUgdGhlbS4gICovCisjaWZuZGVmIF9HTlVfU09VUkNFCisjIHVuZGVmIF9HTlVfU09VUkNFCisjZW5kaWYKKy8qIEVuYWJsZSB0aHJlYWRpbmcgZXh0ZW5zaW9ucyBvbiBTb2xhcmlzLiAgKi8KKyNpZm5kZWYgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTCisjIHVuZGVmIF9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUworI2VuZGlmCisvKiBFbmFibGUgZXh0ZW5zaW9ucyBvbiBIUCBOb25TdG9wLiAgKi8KKyNpZm5kZWYgX1RBTkRFTV9TT1VSQ0UKKyMgdW5kZWYgX1RBTkRFTV9TT1VSQ0UKKyNlbmRpZgorLyogRW5hYmxlIGdlbmVyYWwgZXh0ZW5zaW9ucyBvbiBTb2xhcmlzLiAgKi8KKyNpZm5kZWYgX19FWFRFTlNJT05TX18KKyMgdW5kZWYgX19FWFRFTlNJT05TX18KKyNlbmRpZgorCisKKy8qIERlZmluZSBXT1JEU19CSUdFTkRJQU4gdG8gMSBpZiB5b3VyIHByb2Nlc3NvciBzdG9yZXMgd29yZHMgd2l0aCB0aGUgbW9zdAorICAgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdCAobGlrZSBNb3Rvcm9sYSBhbmQgU1BBUkMsIHVubGlrZSBJbnRlbCkuICovCisjaWYgZGVmaW5lZCBBQ19BUFBMRV9VTklWRVJTQUxfQlVJTEQKKyMgaWYgZGVmaW5lZCBfX0JJR19FTkRJQU5fXworIyAgZGVmaW5lIFdPUkRTX0JJR0VORElBTiAxCisjIGVuZGlmCisjZWxzZQorIyBpZm5kZWYgV09SRFNfQklHRU5ESUFOCisjICB1bmRlZiBXT1JEU19CSUdFTkRJQU4KKyMgZW5kaWYKKyNlbmRpZgorCisvKiBEZWZpbmUgdG8gMSBpZiBvbiBNSU5JWC4gKi8KKyN1bmRlZiBfTUlOSVgKKworLyogRGVmaW5lIHRvIDIgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBwcm92aWRlIFBPU0lYLjEgZmVhdHVyZXMgZXhjZXB0IHdpdGgKKyAgIHRoaXMgZGVmaW5lZC4gKi8KKyN1bmRlZiBfUE9TSVhfMV9TT1VSQ0UKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IG5lZWQgdG8gaW4gb3JkZXIgZm9yIGBzdGF0JyBhbmQgb3RoZXIgdGhpbmdzIHRvIHdvcmsuICovCisjdW5kZWYgX1BPU0lYX1NPVVJDRQogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgUlBNIDQuNiBvciBuZXdlciB0byB0dXJuIG9uIGxlZ2FjeSBBUEkgKi8KICN1bmRlZiBfUlBNXzRfNF9DT01QQVQKIAorLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50MzJfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKKyAgIDxwdGhyZWFkLmg+LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRoZQorICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KKyN1bmRlZiBfVUlOVDMyX1QKKworLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50NjRfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKKyAgIDxwdGhyZWFkLmg+LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRoZQorICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KKyN1bmRlZiBfVUlOVDY0X1QKKworLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50OF90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAorICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCisgICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLworI3VuZGVmIF9VSU5UOF9UCisKIC8qIERlZmluZSB0byBlbXB0eSBpZiBgY29uc3QnIGRvZXMgbm90IGNvbmZvcm0gdG8gQU5TSSBDLiAqLwogI3VuZGVmIGNvbnN0CiAKQEAgLTEyMjYsNTUgKzE0NTgsNjIgQEAKICN1bmRlZiBpbmxpbmUKICNlbmRpZgogCi0vKiBEZWZpbmUgdG8gYGxvbmcnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDE2IGJpdHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgaW50MTZfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgorICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiBpbnQzMl90CisKKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIGludDY0X3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDggYml0cyBpZiBzdWNoCisgICBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiBpbnQ4X3QKKworLyogRGVmaW5lIHRvIHRoZSB3aWRlc3Qgc2lnbmVkIGludGVnZXIgdHlwZSBpZiA8c3RkaW50Lmg+IGFuZCA8aW50dHlwZXMuaD4gZG8KKyAgIG5vdCBkZWZpbmUuICovCisjdW5kZWYgaW50bWF4X3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSB3aWRlIGVub3VnaCB0byBob2xkIGEgcG9pbnRlciwKKyAgIGlmIHN1Y2ggYSB0eXBlIGV4aXN0cywgYW5kIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIGludHB0cl90CisKKy8qIERlZmluZSB0byBgbG9uZyBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwogI3VuZGVmIG9mZl90CiAKIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KICN1bmRlZiBwaWRfdAogCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMTYgYml0cyBpZgorICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiB1aW50MTZfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgorICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiB1aW50MzJfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgNjQgYml0cyBpZgorICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiB1aW50NjRfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgOCBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnQ4X3QKKworLyogRGVmaW5lIHRvIHRoZSB3aWRlc3QgdW5zaWduZWQgaW50ZWdlciB0eXBlIGlmIDxzdGRpbnQuaD4gYW5kIDxpbnR0eXBlcy5oPgorICAgZG8gbm90IGRlZmluZS4gKi8KKyN1bmRlZiB1aW50bWF4X3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSB3aWRlIGVub3VnaCB0byBob2xkIGEKKyAgIHBvaW50ZXIsIGlmIHN1Y2ggYSB0eXBlIGV4aXN0cywgYW5kIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnRwdHJfdAorCiAvKiBlbmQgb2YgZGVmaW5pdGlvbnMgYWRkZWQgYnkgY29uZmlndXJlIG9uLXRoZS1mbHkgKi8KIAotI2lmbmRlZiBIQVZFX1NUUkNIUgotI2lmZGVmIEhBVkVfSU5ERVgKLSMgZGVmaW5lIHN0cmNociBpbmRleAotIyBkZWZpbmUgc3RycmNociByaW5kZXgKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9JTkRFWAotI2lmZGVmIEhBVkVfU1RSQ0hSCi0jaWZkZWYgbWluZ3czMgotIyBkZWZpbmUgaW5kZXgoYSxiKSBzdHJjaHIoYSxiKQotIyBkZWZpbmUgcmluZGV4KGEsYikgc3RycmNocihhLGIpCi0jZWxzZQotIyBkZWZpbmUgaW5kZXggc3RyY2hyCi0jIGRlZmluZSByaW5kZXggc3RycmNocgotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTUVNQ1BZCi0jaWZkZWYgSEFWRV9CQ09QWQotIyBkZWZpbmUgbWVtY3B5KGQsIHMsIG4pIGJjb3B5ICgocyksIChkKSwgKG4pKQotIyBkZWZpbmUgbWVtbW92ZShkLCBzLCBuKSBiY29weSAoKHMpLCAoZCksIChuKSkKLSMgZGVmaW5lIG1lbWNtcCBiY21wCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTUVNTU9WRQotI2lmZGVmIEhBVkVfTUVNQ1BZCi0jIGRlZmluZSBtZW1tb3ZlIG1lbWNweQotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0JDT1BZCi0jaWZkZWYgSEFWRV9NRU1DUFkKLSMgZGVmaW5lIGJjb3B5KHMsIGQsIG4pIG1lbWNweSAoKGQpLCAocyksIChuKSkKLSMgZGVmaW5lIGJ6ZXJvKHAsbikgbWVtc2V0KChwKSwoMCksKG4pKQotIyBkZWZpbmUgYmNtcCBtZW1jbXAKLSNlbmRpZgotI2VuZGlmCi0KIC8qIElmIHlvdSBoYXZlIG9wZW5zc2wgMC45Ljcgb3IgYWJvdmUsIHlvdSBsaWtlbHkgaGF2ZSBBRVMgc3VwcG9ydC4gKi8KICN1bmRlZiBORVRTTk1QX1VTRV9PUEVOU1NMCiAjaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfT1BFTlNTTF9BRVNfSCkgJiYgZGVmaW5lZChIQVZFX0FFU19DRkIxMjhfRU5DUllQVCkKQEAgLTEzMzEsMjcgKzE1NzAsNiBAQAogLyogZGVmYXVsdCBsaXN0IG9mIG1pYnMgdG8gbG9hZCAqLwogI2RlZmluZSBORVRTTk1QX0RFRkFVTFRfTUlCUyAiSVAtTUlCOklGLU1JQjpUQ1AtTUlCOlVEUC1NSUI6U05NUHYyLU1JQjpSRkMxMjEzLU1JQiIKIAotLyogZGVmYXVsdCBsb2NhdGlvbiB0byBsb29rIGZvciBtaWJzIHRvIGxvYWQgdXNpbmcgdGhlIGFib3ZlIHRva2VucwotICAgYW5kL29yIHRob3NlIGluIHRoZSBNSUJTIGVudnJpb25tZW50IHZhcmlhYmxlKi8KLSN1bmRlZiBORVRTTk1QX0RFRkFVTFRfTUlCRElSUwotCi0vKiBkZWZhdWx0IG1pYiBmaWxlcyB0byBsb2FkLCBzcGVjaWZpZWQgYnkgcGF0aC4gKi8KLSN1bmRlZiBORVRTTk1QX0RFRkFVTFRfTUlCRklMRVMKLQotLyogc2hvdWxkIHdlIGNvbXBpbGUgdG8gdXNlIHNwZWNpYWwgb3BhcXVlIHR5cGVzOiBmbG9hdCwgZG91YmxlLAotICAgY291bnRlcjY0LCBpNjQsIHVpNjQsIHVuaW9uPyAqLwotI3VuZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUwotCi0vKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gY29tcGlsZSBzdXBwb3J0IGZvciBib3RoIGF1dGhlbnRpY2F0aW9uIGFuZAotICAgcHJpdmFjeSBzdXBwb3J0LiAqLwotI3VuZGVmIE5FVFNOTVBfRU5BQkxFX1NDQVBJX0FVVEhQUklWCi0KLS8qIGRlZmluZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBNRDUgY29kZSAuLi4qLwotI3VuZGVmIE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENQotCi0vKiBkZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgY29kZVMxMSBsaWJyYXJ5IC4uLiovCi0jdW5kZWYgTkVUU05NUF9VU0VfUEtDUzExCi0KIC8qIGRlYnVnZ2luZyBzdHVmZiAqLwogLyogaWYgZGVmaW5lZCwgd2Ugb3B0aW1pemUgdGhlIGNvZGUgdG8gZXhjbHVkZSBhbGwgZGVidWdnaW5nIGNhbGxzLiAqLwogI3VuZGVmIE5FVFNOTVBfTk9fREVCVUdHSU5HCkBAIC0xMzY3LDkgKzE1ODUsNiBAQAogICAgbGluZXM6IFBFUlNJU1RFTlRfRElSRUNUT1JZL05BTUUucGVyc2lzdGVudC5jb25mICovCiAjZGVmaW5lIE5FVFNOTVBfUEVSU0lTVEVOVF9ESVJFQ1RPUlkgIi92YXIvc25tcCIKIAotLyogUEVSU0lTVEVOVF9NQVNLOiB0aGUgdW1hc2sgcGVybWlzc2lvbnMgdG8gc2V0IHVwIHBlcnNpc3RlbnQgZmlsZXMgd2l0aCAqLwotI2RlZmluZSBORVRTTk1QX1BFUlNJU1RFTlRfTUFTSyAwNzcKLQogLyogQUdFTlRfRElSRUNUT1JZX01PREU6IHRoZSBtb2RlIHRoZSBhZ2VudHMgc2hvdWxkIHVzZSB0byBjcmVhdGUKICAgIGRpcmVjdG9yaWVzIHdpdGguIFNpbmNlIHRoZSBkYXRhIHN0b3JlZCBoZXJlIGlzIHByb2JhYmx5IHNlbnNpdGl2ZSwgaXQKICAgIHByb2JhYmx5IHNob3VsZCBiZSByZWFkLW9ubHkgYnkgcm9vdC9hZG1pbmlzdHJhdG9yLiAqLwpAQCAtMTQxNCwxOSArMTYyOSw2IEBACiAvKiBVc2UgbGlid3JhcCB0byBoYW5kbGUgYWxsb3cvZGVueSBob3N0cz8gKi8KICN1bmRlZiBORVRTTk1QX1VTRV9MSUJXUkFQCiAKLS8qIHRlc3RpbmcgY29kZSBzZWN0aW9ucy4gKi8KLSN1bmRlZiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUgCi0KLS8qIElmIHlvdSBkb24ndCBoYXZlIHJvb3QgYWNjZXNzIGRvbid0IGV4aXQgdXBvbiBrbWVtIGVycm9ycyAqLwotI3VuZGVmIE5FVFNOTVBfTk9fUk9PVF9BQ0NFU1MKLQotLyogSWYgd2UgZG9uJ3Qgd2FudCB0byB1c2Uga21lbS4gKi8KLSN1bmRlZiBORVRTTk1QX05PX0tNRU1fVVNBR0UKLQotLyogSWYgeW91IGRvbid0IHdhbnQgdGhlIGFnZW50IHRvIHJlcG9ydCBvbiB2YXJpYWJsZXMgaXQgZG9lc24ndCBoYXZlIGRhdGEgZm9yICovCi0jdW5kZWYgTkVUU05NUF9OT19EVU1NWV9WQUxVRVMKLQotCiAvKiBNaWItMiB0cmVlIEluZm8gKi8KIC8qIFRoZXNlIGFyZSB0aGUgc3lzdGVtIGluZm9ybWF0aW9uIHZhcmlhYmxlcy4gKi8KIApAQCAtMTYyMSw5ICsxODIzLDYgQEAKIC8qIGludGVybmFsIGRlZmluZSAqLwogI2RlZmluZSBORVRTTk1QX0xBU1RGSUVMRCAtMQogCi0vKiBjb25maWd1cmUgb3B0aW9ucyBzcGVjaWZpZWQgKi8KLSNkZWZpbmUgTkVUU05NUF9DT05GSUdVUkVfT1BUSU9OUyAiIgotCiAvKiAgUGx1Z2dhYmxlIHRyYW5zcG9ydHMuICAqLwogCiAvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBVRFAvSVAgdHJhbnNwb3J0IGRvbWFpbiBpcwpAQCAtMTY1OCwxMCArMTg1NywyMiBAQAogICAgIGF2YWlsYWJsZS4gICovCiAjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfVENQSVBWNl9ET01BSU4KIAotLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgVURQL0lQIHRyYW5zcG9ydCBkb21haW4gaXMKKy8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3IgdGhlIFRMUyB0cmFuc3BvcnQgZG9tYWluIGlzCiAgICAgYXZhaWxhYmxlLiAgICovCiAjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfVExTX0RPTUFJTgogCisvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBBbGlhcyB0cmFuc3BvcnQgZG9tYWluIGlzCisgICAgYXZhaWxhYmxlLiAgICovCisjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfQUxJQVNfRE9NQUlOCisKKy8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3IgdGhlIFNTSCB0cmFuc3BvcnQgZG9tYWluIGlzCisgICAgYXZhaWxhYmxlLiAgICovCisjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfU1NIX0RPTUFJTgorCisvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBEVExTL1VEUCB0cmFuc3BvcnQgZG9tYWluIGlzCisgICAgYXZhaWxhYmxlLiAgICovCisjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfRFRMU1VEUF9ET01BSU4KKwogLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciBzdGRpbi9vdXQgdHJhbnNwb3J0IGRvbWFpbiBpcyBhdmFpbGFibGUuICAgKi8KICN1bmRlZiBORVRTTk1QX1RSQU5TUE9SVF9TVERfRE9NQUlOCiAKQEAgLTE2NzQsMTggKzE4ODUsOSBAQAogLyogZGVmaW5lIHRoaXMgaWYgdGhlIGxvY2FsIHNlY3VyaXR5IG1vZHVsZSBpcyBhdmFpbGFibGUgKi8KICN1bmRlZiBORVRTTk1QX1NFQ01PRF9MT0NBTFNNCiAKLS8qIGRlZmluZSBpZiB5b3Ugd2FudCB0byBidWlsZCB3aXRoIHJlZW50cmFudC90aHJlYWRlZCBjb2RlIChpbmNvbXBsZXRlKSovCi0jdW5kZWYgTkVUU05NUF9SRUVOVFJBTlQKLQogLyogZGVmaW5lIGlmIGNvbmZpZ3VyZWQgYXMgYSAibWluaS1hZ2VudCIgKi8KICN1bmRlZiBORVRTTk1QX01JTklfQUdFTlQKIAotLyogZGVmaW5lIGlmIHlvdSBhcmUgZW1iZWRkaW5nIHBlcmwgaW4gdGhlIG1haW4gYWdlbnQgKi8KLSN1bmRlZiBORVRTTk1QX0VNQkVEREVEX1BFUkwKLQotLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE1GRCBtb2R1bGUgcmV3cml0ZXMqLwotI3VuZGVmIE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUwotCiAvKiB0aGlzIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbmV0LXNubXAgbWliIHRyZWUuICBJdCBzaG91bGRuJ3QgYmUKICAgIGNoYW5nZWQsIGFzIHRoZSBwbGFjZXMgaXQgaXMgdXNlZCBhcmUgZXhwZWN0ZWQgdG8gYmUgY29uc3RhbnQKICAgIHZhbHVlcyBvciBhcmUgZGlyZWN0bHkgdGllZCB0byB0aGUgVUNELVNOTVAtTUlCLiAqLwpAQCAtMTc1MywyNCArMTk1NSw2IEBACiAjICBkZWZpbmUgTkVUU05NUF9JTVBPUlQgZXh0ZXJuCiAjZW5kaWYKIAotLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBJUHY2IHN1cHBvcnQgKi8KLSN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2Ci0KLS8qIGRlZmluZSBpZiB5b3Ugd2FudCB0byByZXN0cmljdCBTTVVYIGNvbm5lY3Rpb25zIHRvIGxvY2FsaG9zdCBieSBkZWZhdWx0ICovCi0jdW5kZWYgTkVUU05NUF9FTkFCTEVfTE9DQUxfU01VWAotCi0vKiBkZWZpbmUgaWYgYWdlbnR4IHRyYW5zcG9ydCBpcyB0byB1c2UgZG9tYWluIHNvY2tldHMgb25seSAqLwotI3VuZGVmIE5FVFNOTVBfQUdFTlRYX0RPTV9TT0NLX09OTFkKLQotLyogZGVmaW5lIGlmIHlvdSBkbyBub3Qgd2FudCBzbm1wdHJhcGQgdG8gcmVnaXN0ZXIgYXMgYW4gQWdlbnRYIHN1YmFnZW50ICovCi0jdW5kZWYgTkVUU05NUF9TTk1QVFJBUERfRElTQUJMRV9BR0VOVFgKLQotLyogZGVmaW5lIHRoaXMgaWYgd2UncmUgdXNpbmcgdGhlIG5ldyBNSVQgY3J5cHRvIEFQSSAqLwotI3VuZGVmIE5FVFNOTVBfVVNFX0tFUkJFUk9TX01JVAotCi0vKiBkZWZpbmUgdGhpcyBpZiB5b3UncmUgdXNpbmcgSGVpbWRhbCBLZXJiZXJvcyAqLwotI3VuZGVmIE5FVFNOTVBfVVNFX0tFUkJFUk9TX0hFSU1EQUwKLQogLyogY29tbWVudCB0aGUgbmV4dCBsaW5lIGlmIHlvdSBhcmUgY29tcGlsaW5nIHdpdGggbGlic25tcC5oIAogICAgYW5kIGFyZSBub3QgdXNpbmcgdGhlIFVDLURhdmlzIFNOTVAgbGlicmFyeS4gKi8KICNkZWZpbmUgVUNEX1NOTVBfTElCUkFSWSAxCkBAIC0xNzc5LDcgKzE5NjMsNyBAQAogI3VuZGVmIENNVV9DT01QQVRJQkxFCiAKIC8qIGZpbmFsIGNvbmNsdXNpb24gb24gbmxpc3QgdXNhZ2UgKi8KLSNpZiBkZWZpbmVkKEhBVkVfTkxJU1QpICYmIGRlZmluZWQoU1RSVUNUX05MSVNUX0hBU19OX1ZBTFVFKSAmJiAhZGVmaW5lZChORVRTTk1QX0RPTlRfVVNFX05MSVNUKSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0tNRU1fVVNBR0UpCisjaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUpICYmICFkZWZpbmVkKE5FVFNOTVBfRE9OVF9VU0VfTkxJU1QpICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKICNkZWZpbmUgTkVUU05NUF9DQU5fVVNFX05MSVNUCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oIGIvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCmluZGV4IDUzZGM3YjguLjNhZWEwOTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9kZWZpbml0aW9ucy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3V0aWxpdGllcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3Nlc3Npb25fYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvcGR1X2FwaS5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggYi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAppbmRleCBhM2ExZGQ2Li44N2MxMDExIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaApAQCAtNyw2ICs3LDE5IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKK25ldHNubXBfcGR1ICAgICpzbm1wX3BkdV9jcmVhdGUoaW50IHR5cGUpOworbmV0c25tcF9wZHUgICAgKnNubXBfY2xvbmVfcGR1KG5ldHNubXBfcGR1ICpwZHUpOworbmV0c25tcF9wZHUgICAgKnNubXBfZml4X3BkdSggIG5ldHNubXBfcGR1ICpwZHUsIGludCBpZHgpOwordm9pZCAgICAgICAgICAgIHNubXBfZnJlZV9wZHUoIG5ldHNubXBfcGR1ICpwZHUpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCiAgICAgLyoKICAgICAgKiAgRm9yIHRoZSBpbml0aWFsIHJlbGVhc2UsIHRoaXMgd2lsbCBqdXN0IHJlZmVyIHRvIHRoZQogICAgICAqICByZWxldmFudCBVQ0QgaGVhZGVyIGZpbGVzLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oIGIvaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCmluZGV4IDMzMjdmODkuLjkwN2I3YjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKQEAgLTgsNiArOCwyMzQgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3Nlc3NfaW5pdChuZXRzbm1wX3Nlc3Npb24gKik7CisKKyAgICAvKgorICAgICAqIG5ldHNubXBfc2Vzc2lvbiAqc25tcF9vcGVuKHNlc3Npb24pCisgICAgICogICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247CisgICAgICoKKyAgICAgKiBTZXRzIHVwIHRoZSBzZXNzaW9uIHdpdGggdGhlIHNubXBfc2Vzc2lvbiBpbmZvcm1hdGlvbiBwcm92aWRlZAorICAgICAqIGJ5IHRoZSB1c2VyLiAgVGhlbiBvcGVucyBhbmQgYmluZHMgdGhlIG5lY2Vzc2FyeSBVRFAgcG9ydC4KKyAgICAgKiBBIGhhbmRsZSB0byB0aGUgY3JlYXRlZCBzZXNzaW9uIGlzIHJldHVybmVkICh0aGlzIGlzIGRpZmZlcmVudCB0aGFuCisgICAgICogdGhlIHBvaW50ZXIgcGFzc2VkIHRvIHNubXBfb3BlbigpKS4gIE9uIGFueSBlcnJvciwgTlVMTCBpcyByZXR1cm5lZAorICAgICAqIGFuZCBzbm1wX2Vycm5vIGlzIHNldCB0byB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAgICAgKi8KKyAgICBuZXRzbm1wX3Nlc3Npb24gKnNubXBfb3BlbihuZXRzbm1wX3Nlc3Npb24gKik7CisKKyAgICAvKgorICAgICAqIGludCBzbm1wX2Nsb3NlKHNlc3Npb24pCisgICAgICogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKKyAgICAgKgorICAgICAqIENsb3NlIHRoZSBpbnB1dCBzZXNzaW9uLiAgRnJlZXMgYWxsIGRhdGEgYWxsb2NhdGVkIGZvciB0aGUgc2Vzc2lvbiwKKyAgICAgKiBkZXF1ZXVlcyBhbnkgcGVuZGluZyByZXF1ZXN0cywgYW5kIGNsb3NlcyBhbnkgc29ja2V0cyBhbGxvY2F0ZWQgZm9yCisgICAgICogdGhlIHNlc3Npb24uICBSZXR1cm5zIDAgb24gZXJyb3IsIDEgb3RoZXJ3aXNlLgorICAgICAqCisgICAgICogc25tcF9jbG9zZV9zZXNzaW9ucygpIGRvZXMgdGhlIHNhbWUgdGhpbmcgZm9yIGFsbCBvcGVuIHNlc3Npb25zCisgICAgICovCisgICAgaW50ICAgICAgICAgICAgIHNubXBfY2xvc2UobmV0c25tcF9zZXNzaW9uICopOworICAgIGludCAgICAgICAgICAgICBzbm1wX2Nsb3NlX3Nlc3Npb25zKHZvaWQpOworCisKKyAgICAvKgorICAgICAqIGludCBzbm1wX3NlbmQoc2Vzc2lvbiwgcGR1KQorICAgICAqICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247CisgICAgICogICAgIG5ldHNubXBfcGR1ICAgICAgKnBkdTsKKyAgICAgKgorICAgICAqIFNlbmRzIHRoZSBpbnB1dCBwZHUgb24gdGhlIHNlc3Npb24gYWZ0ZXIgY2FsbGluZyBzbm1wX2J1aWxkIHRvIGNyZWF0ZQorICAgICAqIGEgc2VyaWFsaXplZCBwYWNrZXQuICBJZiBuZWNlc3NhcnksIHNldCBzb21lIG9mIHRoZSBwZHUgZGF0YSBmcm9tIHRoZQorICAgICAqIHNlc3Npb24gZGVmYXVsdHMuICBBZGQgYSByZXF1ZXN0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBwZHUgdG8gdGhlIGxpc3QKKyAgICAgKiBvZiBvdXRzdGFuZGluZyByZXF1ZXN0cyBvbiB0aGlzIHNlc3Npb24sIHRoZW4gc2VuZCB0aGUgcGR1LgorICAgICAqIFJldHVybnMgdGhlIHJlcXVlc3QgaWQgb2YgdGhlIGdlbmVyYXRlZCBwYWNrZXQgaWYgYXBwbGljYWJsZSwgb3RoZXJ3aXNlIDEuCisgICAgICogT24gYW55IGVycm9yLCAwIGlzIHJldHVybmVkLgorICAgICAqIFRoZSBwZHUgaXMgZnJlZWQgYnkgc25tcF9zZW5kKCkgdW5sZXNzIGEgZmFpbHVyZSBvY2N1cmVkLgorICAgICAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX3NlbmQobmV0c25tcF9zZXNzaW9uICosIG5ldHNubXBfcGR1ICopOworCisgICAgLyoKKyAgICAgKiBpbnQgc25tcF9hc3luY19zZW5kKHNlc3Npb24sIHBkdSwgY2FsbGJhY2ssIGNiX2RhdGEpCisgICAgICogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKKyAgICAgKiAgICAgbmV0c25tcF9wZHUgICAgICAqcGR1OworICAgICAqICAgICBuZXRzbm1wX2NhbGxiYWNrIGNhbGxiYWNrOworICAgICAqICAgICB2b2lkICAgKmNiX2RhdGE7CisgICAgICoKKyAgICAgKiBTZW5kcyB0aGUgaW5wdXQgcGR1IG9uIHRoZSBzZXNzaW9uIGFmdGVyIGNhbGxpbmcgc25tcF9idWlsZCB0byBjcmVhdGUKKyAgICAgKiBhIHNlcmlhbGl6ZWQgcGFja2V0LiAgSWYgbmVjZXNzYXJ5LCBzZXQgc29tZSBvZiB0aGUgcGR1IGRhdGEgZnJvbSB0aGUKKyAgICAgKiBzZXNzaW9uIGRlZmF1bHRzLiAgQWRkIGEgcmVxdWVzdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgcGR1IHRvIHRoZSBsaXN0CisgICAgICogb2Ygb3V0c3RhbmRpbmcgcmVxdWVzdHMgb24gdGhpcyBzZXNzaW9uIGFuZCBzdG9yZSBjYWxsYmFjayBhbmQgZGF0YSwKKyAgICAgKiB0aGVuIHNlbmQgdGhlIHBkdS4KKyAgICAgKiBSZXR1cm5zIHRoZSByZXF1ZXN0IGlkIG9mIHRoZSBnZW5lcmF0ZWQgcGFja2V0IGlmIGFwcGxpY2FibGUsIG90aGVyd2lzZSAxLgorICAgICAqIE9uIGFueSBlcnJvciwgMCBpcyByZXR1cm5lZC4KKyAgICAgKiBUaGUgcGR1IGlzIGZyZWVkIGJ5IHNubXBfc2VuZCgpIHVubGVzcyBhIGZhaWx1cmUgb2NjdXJlZC4KKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAgc25tcF9hc3luY19zZW5kKG5ldHNubXBfc2Vzc2lvbiAqLCBuZXRzbm1wX3BkdSAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWxsYmFjaywgdm9pZCAqKTsKKworCisgICAgLyoKKyAgICAgKiB2b2lkIHNubXBfcmVhZChmZHNldCkKKyAgICAgKiAgICAgZmRfc2V0ICAqZmRzZXQ7CisgICAgICoKKyAgICAgKiBDaGVja3MgdG8gc2VlIGlmIGFueSBvZiB0aGUgZmQncyBzZXQgaW4gdGhlIGZkc2V0IGJlbG9uZyB0bworICAgICAqIHNubXAuICBFYWNoIHNvY2tldCB3aXRoIGl0J3MgZmQgc2V0IGhhcyBhIHBhY2tldCByZWFkIGZyb20gaXQKKyAgICAgKiBhbmQgc25tcF9wYXJzZSBpcyBjYWxsZWQgb24gdGhlIHBhY2tldCByZWNlaXZlZC4gIFRoZSByZXN1bHRpbmcgcGR1CisgICAgICogaXMgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayByb3V0aW5lIGZvciB0aGF0IHNlc3Npb24uICBJZiB0aGUgY2FsbGJhY2sKKyAgICAgKiByb3V0aW5lIHJldHVybnMgc3VjY2Vzc2Z1bGx5LCB0aGUgcGR1IGFuZCBpdCdzIHJlcXVlc3QgYXJlIGRlbGV0ZWQuCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIHNubXBfcmVhZChmZF9zZXQgKik7CisKKyAgICAvKgorICAgICAqIHNubXBfcmVhZDIoKSBpcyBzaW1pbGFyIHRvIHNubXBfcmVhZCgpLCBidXQgYWNjZXB0cyBhIHBvaW50ZXIgdG8gYQorICAgICAqIGxhcmdlIGZpbGUgZGVzY3JpcHRvciBzZXQgaW5zdGVhZCBvZiBhIHBvaW50ZXIgdG8gYSByZWd1bGFyIGZpbGUKKyAgICAgKiBkZXNjcmlwdG9yIHNldC4KKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgc25tcF9yZWFkMihuZXRzbm1wX2xhcmdlX2ZkX3NldCAqKTsKKworCisgICAgaW50ICAgICAgICAgICAgIHNubXBfc3luY2hfcmVzcG9uc2UobmV0c25tcF9zZXNzaW9uICosIG5ldHNubXBfcGR1ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiopOworCisgICAgLyoKKyAgICAgKiBpbnQgc25tcF9zZWxlY3RfaW5mbyhudW1mZHMsIGZkc2V0LCB0aW1lb3V0LCBibG9jaykKKyAgICAgKiBpbnQgKm51bWZkczsKKyAgICAgKiBmZF9zZXQgICAqZmRzZXQ7CisgICAgICogc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQ7CisgICAgICogaW50ICpibG9jazsKKyAgICAgKgorICAgICAqIFJldHVybnMgaW5mbyBhYm91dCB3aGF0IHNubXAgcmVxdWlyZXMgZnJvbSBhIHNlbGVjdCBzdGF0ZW1lbnQuCisgICAgICogbnVtZmRzIGlzIHRoZSBudW1iZXIgb2YgZmRzIGluIHRoZSBsaXN0IHRoYXQgYXJlIHNpZ25pZmljYW50LgorICAgICAqIEFsbCBmaWxlIGRlc2NyaXB0b3JzIG9wZW5lZCBmb3IgU05NUCBhcmUgT1InZCBpbnRvIHRoZSBmZHNldC4KKyAgICAgKiBJZiBhY3Rpdml0eSBvY2N1cnMgb24gYW55IG9mIHRoZXNlIGZpbGUgZGVzY3JpcHRvcnMsIHNubXBfcmVhZAorICAgICAqIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGF0IGZpbGUgZGVzY3JpcHRvciBzZXQuCisgICAgICoKKyAgICAgKiBUaGUgdGltZW91dCBpcyB0aGUgbGF0ZXN0IHRpbWUgdGhhdCBTTk1QIGNhbiB3YWl0IGZvciBhIHRpbWVvdXQuICBUaGUKKyAgICAgKiBzZWxlY3Qgc2hvdWxkIGJlIGRvbmUgd2l0aCB0aGUgbWluaW11bSB0aW1lIGJldHdlZW4gdGltZW91dCBhbmQgYW55IG90aGVyCisgICAgICogdGltZW91dHMgbmVjZXNzYXJ5LiAgVGhpcyBzaG91bGQgYmUgY2hlY2tlZCB1cG9uIGVhY2ggaW52b2NhdGlvbiBvZiBzZWxlY3QuCisgICAgICogSWYgYSB0aW1lb3V0IGlzIHJlY2VpdmVkLCBzbm1wX3RpbWVvdXQgc2hvdWxkIGJlIGNhbGxlZCB0byBjaGVjayBpZiB0aGUKKyAgICAgKiB0aW1lb3V0IHdhcyBmb3IgU05NUC4gIChzbm1wX3RpbWVvdXQgaXMgaWRlbXBvdGVudCkKKyAgICAgKgorICAgICAqIEJsb2NrIGlzIDEgaWYgdGhlIHNlbGVjdCBpcyByZXF1ZXN0ZWQgdG8gYmxvY2sgaW5kZWZpbml0ZWx5LCByYXRoZXIgdGhhbgorICAgICAqIHRpbWUgb3V0LiAgSWYgYmxvY2sgaXMgaW5wdXQgYXMgMSwgdGhlIHRpbWVvdXQgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzCisgICAgICogdW5kZWZpbmVkLCBidXQgaXQgbXVzdCBiZSBhdmFpbGFibGUgZm9yIHNldHRpbmcgaW4gc25tcF9zZWxlY3RfaW5mby4gIE9uCisgICAgICogcmV0dXJuLCBpZiBibG9jayBpcyB0cnVlLCB0aGUgdmFsdWUgb2YgdGltZW91dCB3aWxsIGJlIHVuZGVmaW5lZC4KKyAgICAgKgorICAgICAqIHNubXBfc2VsZWN0X2luZm8gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG9wZW4gc29ja2V0cy4gIChpLmUuIFRoZSBudW1iZXIKKyAgICAgKiBvZiBzZXNzaW9ucyBvcGVuKQorICAgICAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX3NlbGVjdF9pbmZvKGludCAqLCBmZF9zZXQgKiwgc3RydWN0IHRpbWV2YWwgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKik7CisKKyAgICAvKgorICAgICAqIHNubXBfc2VsZWN0X2luZm8yKCkgaXMgc2ltaWxhciB0byBzbm1wX3NlbGVjdF9pbmZvKCksIGJ1dCBhY2NlcHRzIGEKKyAgICAgKiBwb2ludGVyIHRvIGEgbGFyZ2UgZmlsZSBkZXNjcmlwdG9yIHNldCBpbnN0ZWFkIG9mIGEgcG9pbnRlciB0byBhCisgICAgICogcmVndWxhciBmaWxlIGRlc2NyaXB0b3Igc2V0LgorICAgICAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX3NlbGVjdF9pbmZvMihpbnQgKiwgbmV0c25tcF9sYXJnZV9mZF9zZXQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKiwgaW50ICopOworCisKKyAgICAvKgorICAgICAqIHZvaWQgc25tcF90aW1lb3V0KCk7CisgICAgICoKKyAgICAgKiBzbm1wX3RpbWVvdXQgc2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgdGltZW91dCBmcm9tIHNubXBfc2VsZWN0X2luZm8KKyAgICAgKiBleHBpcmVzLCBidXQgaXQgaXMgaWRlbXBvdGVudCwgc28gc25tcF90aW1lb3V0IGNhbiBiZSBwb2xsZWQgKHByb2JhYmx5IGEKKyAgICAgKiBjcHUgZXhwZW5zaXZlIHByb3Bvc2l0aW9uKS4gIHNubXBfdGltZW91dCBjaGVja3MgdG8gc2VlIGlmIGFueSBvZiB0aGUKKyAgICAgKiBzZXNzaW9ucyBoYXZlIGFuIG91dHN0YW5kaW5nIHJlcXVlc3QgdGhhdCBoYXMgdGltZWQgb3V0LiAgSWYgaXQgZmluZHMgb25lCisgICAgICogKG9yIG1vcmUpLCBhbmQgdGhhdCBwZHUgaGFzIG1vcmUgcmV0cmllcyBhdmFpbGFibGUsIGEgbmV3IHBhY2tldCBpcyBmb3JtZWQKKyAgICAgKiBmcm9tIHRoZSBwZHUgYW5kIGlzIHJlc2VudC4gIElmIHRoZXJlIGFyZSBubyBtb3JlIHJldHJpZXMgYXZhaWxhYmxlLCB0aGUKKyAgICAgKiBjYWxsYmFjayBmb3IgdGhlIHNlc3Npb24gaXMgdXNlZCB0byBhbGVydCB0aGUgdXNlciBvZiB0aGUgdGltZW91dC4KKyAgICAgKi8KKworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3RpbWVvdXQodm9pZCk7CisKKyAgICAvKgorICAgICAqIHNubXBfZXJyb3IgLSByZXR1cm4gZXJyb3IgZGF0YQorICAgICAqIElucHV0cyA6ICBhZGRyZXNzIG9mIGVycm5vLCBhZGRyZXNzIG9mIHNubXBfZXJybm8sIGFkZHJlc3Mgb2Ygc3RyaW5nCisgICAgICogQ2FsbGVyIG11c3QgZnJlZSB0aGUgc3RyaW5nIHJldHVybmVkIGFmdGVyIHVzZS4KKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgc25tcF9lcnJvcihuZXRzbm1wX3Nlc3Npb24gKiwgaW50ICosIGludCAqLCBjaGFyICoqKTsKKworICAgIC8qCisgICAgICogc2luZ2xlIHNlc3Npb24gQVBJLgorICAgICAqCisgICAgICogVGhlc2UgZnVuY3Rpb25zIHBlcmZvcm0gc2ltaWxhciBhY3Rpb25zIGFzIHNubXBfWFggZnVuY3Rpb25zLAorICAgICAqIGJ1dCBvcGVyYXRlIG9uIGEgc2luZ2xlIHNlc3Npb24gb25seS4KKyAgICAgKgorICAgICAqIFN5bm9wc2lzOgorICAgICAKKyAgICAgdm9pZCAqIHNlc3NwOworICAgICBuZXRzbm1wX3Nlc3Npb24gc2Vzc2lvbiwgKnNzOworICAgICBuZXRzbm1wX3BkdSAqcGR1LCAqcmVzcG9uc2U7CisgICAgIAorICAgICBzbm1wX3Nlc3NfaW5pdCgmc2Vzc2lvbik7CisgICAgIHNlc3Npb24ucmV0cmllcyA9IC4uLgorICAgICBzZXNzaW9uLnJlbW90ZV9wb3J0ID0gLi4uCisgICAgIHNlc3NwID0gc25tcF9zZXNzX29wZW4oJnNlc3Npb24pOworICAgICBzcyA9IHNubXBfc2Vzc19zZXNzaW9uKHNlc3NwKTsKKyAgICAgaWYgKHNzID09IE5VTEwpCisgICAgIGV4aXQoMSk7CisgICAgIC4uLgorICAgICBpZiAoc3MtPmNvbW11bml0eSkgZnJlZShzcy0+Y29tbXVuaXR5KTsKKyAgICAgc3MtPmNvbW11bml0eSA9IHN0cmR1cChnYXRld2F5KTsKKyAgICAgc3MtPmNvbW11bml0eV9sZW4gPSBzdHJsZW4oZ2F0ZXdheSk7CisgICAgIC4uLgorICAgICBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2Uoc2Vzc3AsIHBkdSwgJnJlc3BvbnNlKTsKKyAgICAgLi4uCisgICAgIHNubXBfc2Vzc19jbG9zZShzZXNzcCk7CisgICAgIAorICAgICAqIFNlZSBhbHNvOgorICAgICAqIHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZSwgaW4gc25tcF9jbGllbnQuaC4KKyAgICAgCisgICAgICogTm90ZXM6CisgICAgICogIDEuIEludm9rZSBzbm1wX3Nlc3Nfc2Vzc2lvbiBhZnRlciBzbm1wX3Nlc3Nfb3Blbi4KKyAgICAgKiAgMi4gc25tcF9zZXNzX3Nlc3Npb24gcmV0dXJuIHZhbHVlIGlzIGFuIG9wYXF1ZSBwb2ludGVyLgorICAgICAqICAzLiBEbyBOT1QgZnJlZSBtZW1vcnkgcmV0dXJuZWQgYnkgc25tcF9zZXNzX3Nlc3Npb24uCisgICAgICogIDQuIFJlcGxhY2Ugc25tcF9zZW5kKHNzLHBkdSkgd2l0aCBzbm1wX3Nlc3Nfc2VuZChzZXNzcCxwZHUpCisgICAgICovCisKKyAgICB2b2lkICAgICAgICAgICAqc25tcF9zZXNzX29wZW4obmV0c25tcF9zZXNzaW9uICopOworICAgIHZvaWQgICAgICAgICAgICpzbm1wX3Nlc3NfcG9pbnRlcihuZXRzbm1wX3Nlc3Npb24gKik7CisgICAgbmV0c25tcF9zZXNzaW9uICpzbm1wX3Nlc3Nfc2Vzc2lvbih2b2lkICopOworICAgIE5FVFNOTVBfSU1QT1JUCisgICAgbmV0c25tcF9zZXNzaW9uICpzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAodm9pZCAqKTsKKworCisgICAgLyoKKyAgICAgKiB1c2UgcmV0dXJuIHZhbHVlIGZyb20gc25tcF9zZXNzX29wZW4gYXMgdm9pZCAqIHBhcmFtZXRlciAKKyAgICAgKi8KKworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3Nfc2VuZCh2b2lkICosIG5ldHNubXBfcGR1ICopOworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3NfYXN5bmNfc2VuZCh2b2lkICosIG5ldHNubXBfcGR1ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FsbGJhY2ssIHZvaWQgKik7CisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19zZWxlY3RfaW5mbyh2b2lkICosIGludCAqLCBmZF9zZXQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICosIGludCAqKTsKKyAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXNzX3NlbGVjdF9pbmZvMih2b2lkICosIGludCAqLAorCQkJCQkgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICosIGludCAqKTsKKyAgICAvKgorICAgICAqIFJldHVybnMgMCBpZiBzdWNjZXNzLCAtMSBpZiBmYWlsLgorICAgICAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3NfcmVhZCh2b2lkICosIGZkX3NldCAqKTsKKyAgICAvKgorICAgICAqIFNpbWlsYXIgdG8gc25tcF9zZXNzX3JlYWQoKSwgYnV0IGFjY2VwdHMgYSBwb2ludGVyIHRvIGEgbGFyZ2UgZmlsZQorICAgICAqIGRlc2NyaXB0b3Igc2V0IGluc3RlYWQgb2YgYSBwb2ludGVyIHRvIGEgZmlsZSBkZXNjcmlwdG9yIHNldC4KKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXNzX3JlYWQyKHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICopOworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3Nlc3NfdGltZW91dCh2b2lkICopOworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3NfY2xvc2Uodm9pZCAqKTsKKworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2Uodm9pZCAqLCBuZXRzbm1wX3BkdSAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiopOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisKICAgICAvKgogICAgICAqICBGb3IgdGhlIGluaXRpYWwgcmVsZWFzZSwgdGhpcyB3aWxsIGp1c3QgcmVmZXIgdG8gdGhlCiAgICAgICogIHJlbGV2YW50IFVDRCBoZWFkZXIgZmlsZXMuCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9haXguaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2FpeC5oCmluZGV4IDQzMjcyZjEuLjAyZDQ5ODEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2FpeC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2FpeC5oCkBAIC0yMiwzICsyMiw2IEBACiAKIC8qIGRlZmluZSB0aGUgZXh0cmEgbWliIG1vZHVsZXMgdGhhdCBhcmUgc3VwcG9ydGVkICovCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IT1NUX1JFU09VUkNFUworCisvKiB0aGUgbGVnYWN5IHN5bWJvbCBOT0FDQ0VTUyBjbGFzaGVzIHdpdGggdGhlIHN5c3RlbSBoZWFkZXJzLiBSZW1vdmUgaXQuICovCisjZGVmaW5lIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmgKaW5kZXggNjJkOGQzMC4uYjU1NmQ5MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaApAQCAtMyw2ICszLDE2IEBACiAgKiBzdWJzdGFudGlhbGx5IGVub3VnaCB0byBub3Qgd2FycmFudCBwcmV0ZW5kaW5nIGl0IGlzIGEgQlNEIGZsYXZvci4KICAqIFRoaXMgZmlyc3Qgc2VjdGlvbiBhcmUgdGhlIHZlc3RpZ2FsIEJTRCByZW1uYW50cy4KICAqLworLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCiAKIC8qCiAgKiBCU0Qgc3lzdGVtcyB1c2UgYSBkaWZmZXJlbnQgbWV0aG9kIG9mIGxvb2tpbmcgdXAgc29ja2FkZHJfaW4gdmFsdWVzIApAQCAtMzUsNiArNDUsOSBAQAogICogVGhpcyBzZWN0aW9uIGRlZmluZXMgTWFjIE9TIFggMTAuNSAoYW5kIGxhdGVyKSBzcGVjaWZpYyBhZGRpdGlvbnMuCiAgKi8KICNkZWZpbmUgZGFyd2luIDkKKyNpZm5kZWYgZGFyd2luOQorIyAgIGRlZmluZSBkYXJ3aW45IGRhcndpbgorI2VuZGlmCiAKIC8qCiAgKiBNYWMgT1MgWCBzaG91bGQgb25seSB1c2UgdGhlIG1vZGVybiBBUEkgYW5kIGRlZmluaXRpb25zLgpAQCAtNTAsNiArNjMsMTQgQEAKICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0lGVEFCTEVfUkVXUklURVMKIAogLyoKKyAqIHVzZSBuZXcgaG9zdCByZXNvdXJjZXMgZmlsZXMgYXMgd2VsbAorICovCisjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXSU5TVF9SRVdSSVRFUworI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9SRVdSSVRFUworI3VuZGVmIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQKKyNkZWZpbmUgTkVUU05NUF9DQU5fR0VUX0RJU0tfTEFCRUwgMQorCisvKgogICogRW5hYmxpbmcgdGhpcyByZXN0cmljdHMgdGhlIGNvbXBpbGVyIHRvIG1vc3RseSBwdWJsaWMgQVBJcy4KICAqLwogI2lmbmRlZiBfX0FQUExFX0FQSV9TVFJJQ1RfQ09ORk9STUFOQ0UKQEAgLTEyMCw2ICsxNDEsMTEgQEAKICN1bmRlZiBTVFJVQ1RfaW42cGNiX0hBU19pbnBfdmZsYWcKIAogLyoKKyAqIHV0aWxpdHkgbWFjcm8gdXNlZCBpbiBzZXZlcmFsIGRhcndpbiBzcGVjaWZpYyBmaWxlcworICovCisjZGVmaW5lIFNOTVBfQ0ZSZWxlYXNlKHgpIGRvIHsgaWYgKHgpIHsgQ0ZSZWxlYXNlKHgpOyB4ID0gTlVMTDsgfSB9IHdoaWxlKDApCisKKy8qCiAgKiBNYWMgT1MgWCBydW5zIG9uIGJvdGggUFBDIGFuZCBJbnRlbCBoYXJkd2FyZSwKICAqICAgd2hpY2ggaGFuZGxlIHVkcFRhYmxlIGluZGV4IHZhbHVlcyBkaWZmZXJlbnRseQogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkLmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkLmgKaW5kZXggNDEwODQyOS4uYTMwNjgzZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2QuaApAQCAtMjQsNiArMjQsNCBAQAogCiAvKiBkZWZpbmUgdGhlIGV4dHJhIG1pYiBtb2R1bGVzIHRoYXQgYXJlIHN1cHBvcnRlZCAqLwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKLSNpZmRlZiBORVRTTk1QX0VOQUJMRV9NRkRfUkVXUklURVMKICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0lGVEFCTEVfUkVXUklURVMKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDUuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q1LmgKaW5kZXggZWZiYzViMy4uMzY5YzFhNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkNS5oCkBAIC00LDUgKzQsNSBAQAogCiAvKiBkb24ndCBkZWZpbmUgX0tFUk5FTCBvbiBGcmVlQlNEIDUuMyBldmVuIGlmIGNvbmZpZ3VyZSB0aGlua3Mgd2UgbmVlZCBpdCAqLwogI2lmZGVmIGZyZWVic2Q1Ci0jdW5kZWYgSUZORVRfTkVFRFNfS0VSTkVMCisjdW5kZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaHB1eC5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaHB1eC5oCmluZGV4IDBiNjI3ZTkuLjU3Y2VhNDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2hwdXguaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4LmgKQEAgLTgwLDUgKzgwLDE1IEBACiAjICBkZWZpbmUgTkVUU05NUF9FTkFCTEVfSU5MSU5FIDAKICNlbmRpZgogCisvKgorICogcHJldmVudCBzaWdhY3Rpb24gYmVpbmcgcmVkZWZpbmVkIHRvIGNtYV9zaWdhY3Rpb24KKyAqIChjYXVzaW5nIGJ1aWxkIGVycm9ycyBvbiBIUC1VWCAxMC4yMCwgYXQgbGVhc3QpCisgKi8KKyNpZmRlZiBocHV4MTAKKyNpZm5kZWYgX0NNQV9OT1dSQVBQRVJTXworIyAgZGVmaW5lIF9DTUFfTk9XUkFQUEVSU18gMQorI2VuZGlmCisjZW5kaWYKKwogLyogZGVmaW5lIHRoZSBleHRyYSBtaWIgbW9kdWxlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgKi8KICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hPU1RfUkVTT1VSQ0VTCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9pcml4LmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9pcml4LmgKaW5kZXggNzlkNDFhOC4uOTMzZmU2MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaXJpeC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2lyaXguaApAQCAtMjMsNyArMjMsNyBAQAogLyoKICAqIGRvbid0IGRlZmluZSBfS0VSTkVMIGJlZm9yZSBpbmNsdWRpbmcgc3lzL3VuaXN0ZC5oIAogICovCi0jZGVmaW5lIElGTkVUX05FRURTX0tFUk5FTF9MQVRFICAxCisjZGVmaW5lIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX0xBVEUgIDEKIAogI2RlZmluZSBTVFJFQU1fTkVFRFNfS0VSTkVMX0lTTEFORFMKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0va2ZyZWVic2QuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2tmcmVlYnNkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmNzAyNAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2tmcmVlYnNkLmgKQEAgLTAsMCArMSw5IEBACisjaW5jbHVkZSAiZnJlZWJzZDYuaCIKKyNkZWZpbmUgZnJlZWJzZDYgZnJlZWJzZDYKKworI2luY2x1ZGUgPG9zcmVsZGF0ZS5oPgorI2RlZmluZSBfX0ZyZWVCU0RfdmVyc2lvbiBfX0ZyZWVCU0Rfa2VybmVsX3ZlcnNpb24KKworI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgorI2luY2x1ZGUgPHN5cy9fdHlwZXMuaD4KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbmV0YnNkLmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaAppbmRleCAxM2FkN2VhLi5jNjcyNjBkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaApAQCAtNDQsMyArNDQsNCBAQAogCiAvKiBkZWZpbmUgdGhlIGV4dHJhIG1pYiBtb2R1bGVzIHRoYXQgYXJlIHN1cHBvcnRlZCAqLwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKKyNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0lGVEFCTEVfUkVXUklURVMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaAppbmRleCA3MTY3OTRjLi44ZGIwZWFjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oCkBAIC0xNSw2ICsxNSw0IEBACiAKIC8qIGRlZmluZSB0aGUgZXh0cmEgbWliIG1vZHVsZXMgdGhhdCBhcmUgc3VwcG9ydGVkICovCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IT1NUX1JFU09VUkNFUwotI2lmZGVmIE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSUZUQUJMRV9SRVdSSVRFUwotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzLmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzLmgKaW5kZXggZDNkY2I3Mi4uZWM2MWMzOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpcy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMuaApAQCAtMjUsMTQgKzI1LDkgQEAKICNkZWZpbmUgVURQX1BPUlRTX0lOX0hPU1RfT1JERVIgMQogI2RlZmluZSBUQ1BfUE9SVFNfSU5fSE9TVF9PUkRFUiAxCiAKLS8qIGdldCBzb21lIHJlcXVpcmVkIHByb3RvdHlwZXMgKHN0cnRva19yKSBmcm9tIGluY2x1ZGUgZmlsZXMgKi8KLSNkZWZpbmUgX19FWFRFTlNJT05TX18KLQogLyogZGVmaW5lIHRoZSBleHRyYSBtaWIgbW9kdWxlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgKi8KICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hPU1RfUkVTT1VSQ0VTCi0jaWZkZWYgTkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9JRlRBQkxFX1JFV1JJVEVTCi0jZW5kaWYKIAogLyogU29sYXJpcyAyLjYrICovCiAjZGVmaW5lIF9TTEFTSF9QUk9DX01FVEhPRF8gMQpAQCAtNDMsNiArMzgsNiBAQAogLyoKICAqIE5FV19NSUJfQ09NUExJQU5UIGlzIGEgZGVmaW5lIHVzZWQgaW4gU29sYXJpcyAxMFU0KyB0byBlbmFibGUgYWRkaXRpb25hbAogICogTUlCIGluZm9ybWF0aW9uIChpdCBhZmZlY3RzIHRoZSBzdHJ1Y3RzIGluIDxpbmV0L21pYjIuaD4pCi0gKi8KLQorICovIAorIAogI2RlZmluZSBORVdfTUlCX0NPTVBMSUFOVApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3ZyNS5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3ZyNS5oCmluZGV4IGM0YTlmOWEuLjAxN2M3YzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N2cjUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zdnI1LmgKQEAgLTcsMTggKzcsMTIgQEAKIC8qCiAgKiB1c2luZyBDQ1MgImNjIiwgImNvbmZpZ3VyZSIgZG9lcyBub3QgZmluZCB0aGlzIGl0ZW0gCiAgKi8KLSNkZWZpbmUgSEFWRV9NRU1DUFkgMQotLyoKLSAqIHNvLCB1bmRvIHRoZSBkYW1hZ2UgZG9uZSBlYXJsaWVyIGluIGNvbmZpZy5oIAotICovCi0jdW5kZWYgbWVtY3B5Ci0jdW5kZWYgbWVtbW92ZQogI2RlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUUgMQogCiAvKgogICogbGllIGFib3V0IHRoaXMgbmV4dCBkZWZpbmUgdG8gYXZvaWQgc2FfbGVuIGFuZCBzYV9mYW1pbHkgTUFDUk9TICEhIAogICovCi0jZGVmaW5lIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyIDEKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfU09DS0FERFJfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyIDEKIAogLyoKICAqIHRoaXMgaGVhZGVyIHJlcXVpcmVzIHF1ZXVlX3QsIG5vdCBlYXNpbHkgZG9uZSB3aXRob3V0IGtlcm5lbCBoZWFkZXJzIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIGIvaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCmluZGV4IGQ5MGRmMDc1Li4yOTMwY2M0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC05OCwxNDIgKzk4LDEwIEBACiAjZW5kaWYKICNlbmRpZgogCi0gICAgLyoKLSAgICAgKiBUcnkgdG8gZW5zdXJlIHdlIGhhdmUgMzItYml0IChhbmQgaG9wZWZ1bGx5IDY0LWJpdCkKLSAgICAgKiAgICBpbnRlZ2VyIHR5cGVzIGF2YWlsYWJsZS4KLSAgICAgKi8KLQotI2lmbmRlZiBIQVZFX0lOVDhfVAotdHlwZWRlZiBzaWduZWQgY2hhciBpbnQ4X3Q7Ci0jZW5kaWYgLyogIUhBVkVfSU5UOF9UICovCi0KLSNpZm5kZWYgSEFWRV9VSU5UOF9UCi0jaWZkZWYgSEFWRV9VX0lOVDhfVAotdHlwZWRlZiB1X2ludDhfdCAgICAgIHVpbnQ4X3Q7Ci0jZWxzZQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7Ci0jZW5kaWYKLSNlbmRpZiAvKiAhSEFWRV9VSU5UOF9UICovCi0KLSNpZm5kZWYgSEFWRV9JTlQxNl9UCi0jaWYgICBTSVpFT0ZfSU5UID09IDIKLSNkZWZpbmUgSU5UMTZfVCBpbnQKLSNlbGlmIFNJWkVPRl9TSE9SVCA9PSAyCi0jZGVmaW5lIElOVDE2X1Qgc2hvcnQKLSNlbHNlCi0jZGVmaW5lIF9JTlQxNl9JU19OT1RfMTZCSVQKLSNkZWZpbmUgSU5UMTZfVCBzaG9ydAotI2VuZGlmCi10eXBlZGVmIElOVDE2X1QgaW50MTZfdDsKLSNlbmRpZiAvKiAhSEFWRV9JTlQxNl9UICovCi0KLSNpZm5kZWYgSEFWRV9VSU5UMTZfVAotI2lmZGVmIEhBVkVfVV9JTlQxNl9UCi10eXBlZGVmIHVfaW50MTZfdCAgICAgICAgdWludDE2X3Q7Ci0jZWxzZQotI2lmZGVmIElOVDE2X1QKLXR5cGVkZWYgdW5zaWduZWQgSU5UMTZfVCB1aW50MTZfdDsKLSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAgdWludDE2X3Q7Ci0jZW5kaWYKLSNlbmRpZgotI2VuZGlmIC8qICFIQVZFX1VJTlQxNl9UICovCi0KLSNpZm5kZWYgSEFWRV9JTlQzMl9UCi0jaWYgICBTSVpFT0ZfSU5UID09IDQKLSNkZWZpbmUgSU5UMzJfVCBpbnQgCi0jZWxpZiBTSVpFT0ZfTE9ORyA9PSA0Ci0jZGVmaW5lIElOVDMyX1QgbG9uZyAKLSNlbGlmIFNJWkVPRl9TSE9SVCA9PSA0Ci0jZGVmaW5lIElOVDMyX1Qgc2hvcnQgCi0jZWxzZQotI2RlZmluZSBfSU5UMzJfSVNfTk9UXzMyQklUCi0jZGVmaW5lIElOVDMyX1QgaW50IAotI2VuZGlmCi10eXBlZGVmIElOVDMyX1QgaW50MzJfdDsKLSNlbmRpZiAvKiAhSEFWRV9JTlQzMl9UICovCi0KLSNpZm5kZWYgSEFWRV9VSU5UMzJfVAotI2lmZGVmIEhBVkVfVV9JTlQzMl9UCi10eXBlZGVmIHVfaW50MzJfdCAgICAgICAgdWludDMyX3Q7Ci0jZWxzZQotI2lmZGVmIElOVDMyX1QKLXR5cGVkZWYgdW5zaWduZWQgSU5UMzJfVCB1aW50MzJfdDsKLSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIGludCAgICAgdWludDMyX3Q7Ci0jZW5kaWYKLSNlbmRpZgotI2VuZGlmIC8qICFIQVZFX1VJTlQzMl9UICovCi0KLSNpZm5kZWYgSEFWRV9JTlQ2NF9UCi0jaWYgU0laRU9GX0xPTkcgPT0gOAotI2RlZmluZSBJTlQ2NF9UIGxvbmcgCi0jZWxpZiBTSVpFT0ZfTE9OR19MT05HID09IDgKLSNkZWZpbmUgSU5UNjRfVCBsb25nIGxvbmcKLSNlbGlmICAgU0laRU9GX0lOVCA9PSA4Ci0jZGVmaW5lIElOVDY0X1QgaW50IAotI2VsaWYgU0laRU9GX0xPTkcgPj0gOAotI2RlZmluZSBJTlQ2NF9UIGxvbmcgCi0jZGVmaW5lIF9JTlQ2NF9JU19OT1RfNjRCSVQKLSNlbmRpZgotI2lmZGVmIElOVDY0X1QKLXR5cGVkZWYgSU5UNjRfVCBpbnQ2NF90OwotI2RlZmluZSBIQVZFX0lOVDY0X1QgMQotI2VuZGlmCi0jZW5kaWYgLyogIUhBVkVfSU5UNjRfVCAqLwotCi0jaWZuZGVmIEhBVkVfVUlOVDY0X1QKLSNpZmRlZiBIQVZFX1VfSU5UNjRfVAotdHlwZWRlZiB1X2ludDY0X3QgICAgICAgIHVpbnQ2NF90OwotI2VsaWYgZGVmaW5lZChJTlQ2NF9UKQotdHlwZWRlZiB1bnNpZ25lZCBJTlQ2NF9UIHVpbnQ2NF90OwotI2VuZGlmCi0jZGVmaW5lIEhBVkVfVUlOVDY0X1QgMQorI2lmbmRlZiBIQVZFX05GRFNfVAordHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBuZmRzX3Q7CiAjZW5kaWYKIAotI2lmbmRlZiBIQVZFX0lOVE1BWF9UCi0jaWZkZWYgU0laRU9GX0xPTkdfTE9ORwotdHlwZWRlZiBsb25nIGxvbmcgaW50bWF4X3Q7Ci0jZGVmaW5lIFNJWkVPRl9JTlRNQVhfVCBTSVpFT0ZfTE9OR19MT05HCi0jZWxpZiBkZWZpbmVkKEhBVkVfSU5UNjRfVCkgJiYgIWRlZmluZWQoX0lOVDY0X0lTX05PVF82NEJJVCkKLXR5cGVkZWYgaW50NjRfdCAgIGludG1heF90OwotI2RlZmluZSBTSVpFT0ZfSU5UTUFYX1QgOAotI2Vsc2UKLXR5cGVkZWYgbG9uZyAgICAgIGludG1heF90OwotI2RlZmluZSBTSVpFT0ZfSU5UTUFYX1QgU0laRU9GX0xPTkcKLSNlbmRpZgotI2RlZmluZSBIQVZFX0lOVE1BWF9UIDEKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfVUlOVE1BWF9UCi0jaWZkZWYgU0laRU9GX0xPTkdfTE9ORwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludG1heF90OwotI2VsaWYgZGVmaW5lZChIQVZFX1VJTlQ2NF9UKSAmJiAhZGVmaW5lZChfSU5UNjRfSVNfTk9UXzY0QklUKQotdHlwZWRlZiB1aW50NjRfdCAgICAgICAgICAgdWludG1heF90OwotI2Vsc2UKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgIHVpbnRtYXhfdDsKLSNlbmRpZgotI2RlZmluZSBIQVZFX1VJTlRNQVhfVCAxCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1VJTlRQVFJfVAotI2lmIFNJWkVPRl9MT05HID09IDgKLS8qIGxpa2VseSA2NGJpdCBtYWNoaW5lIHdpdGggNjRiaXQgYWRkcmVzc2luZz8gKi8KLSAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludHB0cl90OwotI2Vsc2UKLSAgICB0eXBlZGVmIHVuc2lnbmVkIHVpbnRwdHJfdDsKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9JTlRQVFJfVAotI2lmIFNJWkVPRl9MT05HID09IDgKLS8qIGxpa2VseSA2NGJpdCBtYWNoaW5lIHdpdGggNjRiaXQgYWRkcmVzc2luZz8gKi8KLSAgICB0eXBlZGVmIGxvbmcgaW50cHRyX3Q7Ci0jZWxzZQotICAgIHR5cGVkZWYgaW50IGludHB0cl90OwotI2VuZGlmCi0jZW5kaWYKLSAgICAKICAgICAvKgogICAgICAqICBGb3IgdGhlIGluaXRpYWwgcmVsZWFzZSwgdGhpcyB3aWxsIGp1c3QgcmVmZXIgdG8gdGhlCiAgICAgICogIHJlbGV2YW50IFVDRCBoZWFkZXIgZmlsZXMuCkBAIC0yNDQsNjkgKzExMiwzMDYgQEAKICAgICAgKiAgdG8gYWxsb3cgYXBwbGljYXRpb24gd3JpdGVycyB0byBhZG9wdCB0aGUgbmV3IGhlYWRlciBmaWxlIG5hbWVzLgogICAgICAqLwogCit0eXBlZGVmIHVuaW9uIHsKKyAgIGxvbmcgICAgICAgICAgICppbnRlZ2VyOworICAgdV9jaGFyICAgICAgICAgKnN0cmluZzsKKyAgIG9pZCAgICAgICAgICAgICpvYmppZDsKKyAgIHVfY2hhciAgICAgICAgICpiaXRzdHJpbmc7CisgICBzdHJ1Y3QgY291bnRlcjY0ICpjb3VudGVyNjQ7CisjaWZkZWYgTkVUU05NUF9XSVRIX09QQVFVRV9TUEVDSUFMX1RZUEVTCisgICBmbG9hdCAgICAgICAgICAqZmxvYXRWYWw7CisgICBkb3VibGUgICAgICAgICAqZG91YmxlVmFsOworICAgLyoKKyAgICAqIHRfdW5pb24gKnVuaW9uVmFsOyAKKyAgICAqLworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMgKi8KK30gbmV0c25tcF92YXJkYXRhOwogCi0jaW5jbHVkZSA8bmV0LXNubXAvZGVmaW5pdGlvbnMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+Ci0vKgotICogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbGlic25tcC5oPiAKKworI2RlZmluZSBNQVhfT0lEX0xFTgkgICAgMTI4IC8qIG1heCBzdWJpZCdzIGluIGFuIG9pZCAqLworCisvKiogQHR5cGVkZWYgc3RydWN0IHZhcmlhYmxlX2xpc3QgbmV0c25tcF92YXJpYWJsZV9saXN0CisgKiBUeXBlZGVmcyB0aGUgdmFyaWFibGVfbGlzdCBzdHJ1Y3QgaW50byBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKi8KKy8qKiBAc3RydWN0IHZhcmlhYmxlX2xpc3QKKyAqIFRoZSBuZXRzbm1wIHZhcmlhYmxlIGxpc3QgYmluZGluZyBzdHJ1Y3R1cmUsIGl0J3MgdHlwZWRlZidkIHRvCisgKiBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QuCiAgKi8KLQotICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfaW5kZXhfcyB7Ci0gICAgICAgc2l6ZV90ICAgICAgbGVuOwotICAgICAgIG9pZCAgICAgICAgICpvaWRzOwotICAgIH0gbmV0c25tcF9pbmRleDsKK3R5cGVkZWYgc3RydWN0IHZhcmlhYmxlX2xpc3QgeworICAgLyoqIE5VTEwgZm9yIGxhc3QgdmFyaWFibGUgKi8KKyAgIHN0cnVjdCB2YXJpYWJsZV9saXN0ICpuZXh0X3ZhcmlhYmxlOyAgICAKKyAgIC8qKiBPYmplY3QgaWRlbnRpZmllciBvZiB2YXJpYWJsZSAqLworICAgb2lkICAgICAgICAgICAgKm5hbWU7ICAgCisgICAvKiogbnVtYmVyIG9mIHN1YmlkJ3MgaW4gbmFtZSAqLworICAgc2l6ZV90ICAgICAgICAgIG5hbWVfbGVuZ3RoOyAgICAKKyAgIC8qKiBBU04gdHlwZSBvZiB2YXJpYWJsZSAqLworICAgdV9jaGFyICAgICAgICAgIHR5cGU7ICAgCisgICAvKiogdmFsdWUgb2YgdmFyaWFibGUgKi8KKyAgICBuZXRzbm1wX3ZhcmRhdGEgdmFsOworICAgLyoqIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIHRvIGJlIGNvcGllZCBpbnRvIGJ1ZiAqLworICAgc2l6ZV90ICAgICAgICAgIHZhbF9sZW47CisgICAvKiogYnVmZmVyIHRvIGhvbGQgdGhlIE9JRCAqLworICAgb2lkICAgICAgICAgICAgIG5hbWVfbG9jW01BWF9PSURfTEVOXTsgIAorICAgLyoqIDkwIHBlcmNlbnRpbGUgPCA0MC4gKi8KKyAgIHVfY2hhciAgICAgICAgICBidWZbNDBdOworICAgLyoqIChPcGFxdWUpIGhvb2sgZm9yIGFkZGl0aW9uYWwgZGF0YSAqLworICAgdm9pZCAgICAgICAgICAgKmRhdGE7CisgICAvKiogY2FsbGJhY2sgdG8gZnJlZSBhYm92ZSAqLworICAgdm9pZCAgICAgICAgICAgICgqZGF0YUZyZWVIb29rKSh2b2lkICopOyAgICAKKyAgIGludCAgICAgICAgICAgICBpbmRleDsKK30gbmV0c25tcF92YXJpYWJsZV9saXN0OwogCiAKLSAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3ZvaWRfYXJyYXlfcyB7Ci0gICAgICAgc2l6ZV90ICBzaXplOwotICAgICAgIHZvaWQgKiAqYXJyYXk7Ci0gICAgfSBuZXRzbm1wX3ZvaWRfYXJyYXk7CisvKiogQHR5cGVkZWYgc3RydWN0IHNubXBfcGR1IHRvIG5ldHNubXBfcGR1CisgKiBUeXBlZGVmcyB0aGUgc25tcF9wZHUgc3RydWN0IGludG8gbmV0c25tcF9wZHUgKi8KKy8qKiBAc3RydWN0IHNubXBfcGR1CisgKiBUaGUgc25tcCBwcm90b2NvbCBkYXRhIHVuaXQuCisgKi8JCit0eXBlZGVmIHN0cnVjdCBzbm1wX3BkdSB7CisKKyNkZWZpbmUgbm9uX3JlcGVhdGVycwllcnJzdGF0CisjZGVmaW5lIG1heF9yZXBldGl0aW9ucyBlcnJpbmRleAogCiAgICAgLyoKLSAgICAgKiByZWZlcmVuY2VzIHRvIHZhcmlvdXMgdHlwZXMKKyAgICAgKiBQcm90b2NvbC12ZXJzaW9uIGluZGVwZW5kZW50IGZpZWxkcwogICAgICAqLwotICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfcmVmX3ZvaWQgewotICAgICAgIHZvaWQgKiB2YWw7Ci0gICAgfSBuZXRzbm1wX3JlZl92b2lkOworICAgIC8qKiBzbm1wIHZlcnNpb24gKi8KKyAgICBsb25nICAgICAgICAgICAgdmVyc2lvbjsKKyAgICAvKiogVHlwZSBvZiB0aGlzIFBEVSAqLwkKKyAgICBpbnQgICAgICAgICAgICAgY29tbWFuZDsKKyAgICAvKiogUmVxdWVzdCBpZCAtIG5vdGU6IG5vdCBpbmNyZW1lbnRlZCBvbiByZXRyaWVzICovCisgICAgbG9uZyAgICAgICAgICAgIHJlcWlkOyAgCisgICAgLyoqIE1lc3NhZ2UgaWQgZm9yIFYzIG1lc3NhZ2VzIG5vdGU6IGluY3JlbWVudGVkIGZvciBlYWNoIHJldHJ5ICovCisgICAgbG9uZyAgICAgICAgICAgIG1zZ2lkOworICAgIC8qKiBVbmlxdWUgSUQgZm9yIGluY29taW5nIHRyYW5zYWN0aW9ucyAqLworICAgIGxvbmcgICAgICAgICAgICB0cmFuc2lkOworICAgIC8qKiBTZXNzaW9uIGlkIGZvciBBZ2VudFggbWVzc2FnZXMgKi8KKyAgICBsb25nICAgICAgICAgICAgc2Vzc2lkOworICAgIC8qKiBFcnJvciBzdGF0dXMgKG5vbl9yZXBlYXRlcnMgaW4gR2V0QnVsaykgKi8KKyAgICBsb25nICAgICAgICAgICAgZXJyc3RhdDsKKyAgICAvKiogRXJyb3IgaW5kZXggKG1heF9yZXBldGl0aW9ucyBpbiBHZXRCdWxrKSAqLworICAgIGxvbmcgICAgICAgICAgICBlcnJpbmRleDsgICAgICAgCisgICAgLyoqIFVwdGltZSAqLworICAgIHVfbG9uZyAgICAgICAgICB0aW1lOyAgIAorICAgIHVfbG9uZyAgICAgICAgICBmbGFnczsKIAotICAgIHR5cGVkZWYgdW5pb24gewotICAgICAgICB1X2xvbmcgIHVsOwotICAgICAgICB1X2ludCAgIHVpOwotICAgICAgICB1X3Nob3J0IHVzOwotICAgICAgICB1X2NoYXIgIHVjOwotICAgICAgICBsb25nICAgIHNsOwotICAgICAgICBpbnQgICAgIHNpOwotICAgICAgICBzaG9ydCAgIHNzOwotICAgICAgICBjaGFyICAgIHNjOwotICAgICAgICBjaGFyICogIGNwOwotICAgICAgICB2b2lkICogIHZwOwotICAgIH0gbmV0c25tcF9jdmFsdWU7CisgICAgaW50ICAgICAgICAgICAgIHNlY3VyaXR5TW9kZWw7CisgICAgLyoqIG5vQXV0aE5vUHJpdiwgYXV0aE5vUHJpdiwgYXV0aFByaXYgKi8KKyAgICBpbnQgICAgICAgICAgICAgc2VjdXJpdHlMZXZlbDsgIAorICAgIGludCAgICAgICAgICAgICBtc2dQYXJzZU1vZGVsOwogCi0jaWYgMAotICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfcmVmX3VfY2hhciB7Ci0gICAgICAgdV9jaGFyICogdmFsOwotICAgIH0gbmV0c25tcF9yZWZfVV9jaGFyOworICAgIC8qKgorICAgICAqIFRyYW5zcG9ydC1zcGVjaWZpYyBvcGFxdWUgZGF0YS4gIFRoaXMgcmVwbGFjZXMgdGhlIElQLWNlbnRyaWMgYWRkcmVzcworICAgICAqIGZpZWxkLiAgCisgICAgICovCisgICAgCisgICAgdm9pZCAgICAgICAgICAgKnRyYW5zcG9ydF9kYXRhOworICAgIGludCAgICAgICAgICAgICB0cmFuc3BvcnRfZGF0YV9sZW5ndGg7CiAKLSAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl9jaGFyIHsKLSAgICAgICBjaGFyICogdmFsOwotICAgIH0gbmV0c25tcF9yZWZfdm9pZDsKKyAgICAvKioKKyAgICAgKiBUaGUgYWN0dWFsIHRyYW5zcG9ydCBkb21haW4uICBUaGlzIFNIT1VMRCBOT1QgQkUgRlJFRSgpRC4gIAorICAgICAqLwogCi0gICAgdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9yZWZfaW50X3MgewotICAgICAgIGludCB2YWw7Ci0gICAgfSBuZXRzbm1wX3JlZl9pbnQ7CisgICAgY29uc3Qgb2lkICAgICAgKnREb21haW47CisgICAgc2l6ZV90ICAgICAgICAgIHREb21haW5MZW47CiAKLSAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl91X2ludF9zIHsKLSAgICAgICB1X2ludCB2YWw7Ci0gICAgfSBuZXRzbm1wX3JlZl9pbnQ7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJpYWJsZXM7CiAKLSAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl91X2xvbmdfcyB7Ci0gICAgICAgdV9sb25nIHZhbDsKLSAgICB9IG5ldHNubXBfcmVmX3VfbG9uZzsKLSNlbmRpZgogCi0gICAgdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9yZWZfc2l6ZV90X3MgewotICAgICAgIHNpemVfdCB2YWw7Ci0gICAgfSAqIG5ldHNubXBfcmVmX3NpemVfdDsKKyAgICAvKgorICAgICAqIFNOTVB2MSAmIFNOTVB2MmMgZmllbGRzCisgICAgICovCisgICAgLyoqIGNvbW11bml0eSBmb3Igb3V0Z29pbmcgcmVxdWVzdHMuICovCisgICAgdV9jaGFyICAgICAgICAgKmNvbW11bml0eTsKKyAgICAvKiogbGVuZ3RoIG9mIGNvbW11bml0eSBuYW1lLiAqLworICAgIHNpemVfdCAgICAgICAgICBjb21tdW5pdHlfbGVuOyAgCisKKyAgICAvKgorICAgICAqIFRyYXAgaW5mb3JtYXRpb24KKyAgICAgKi8KKyAgICAvKiogU3lzdGVtIE9JRCAqLworICAgIG9pZCAgICAgICAgICAgICplbnRlcnByaXNlOyAgICAgCisgICAgc2l6ZV90ICAgICAgICAgIGVudGVycHJpc2VfbGVuZ3RoOworICAgIC8qKiB0cmFwIHR5cGUgKi8KKyAgICBsb25nICAgICAgICAgICAgdHJhcF90eXBlOworICAgIC8qKiBzcGVjaWZpYyB0eXBlICovCisgICAgbG9uZyAgICAgICAgICAgIHNwZWNpZmljX3R5cGU7CisgICAgLyoqIFRoaXMgaXMgT05MWSB1c2VkIGZvciB2MSBUUkFQcyAgKi8KKyAgICB1bnNpZ25lZCBjaGFyICAgYWdlbnRfYWRkcls0XTsgIAorCisgICAgLyoKKyAgICAgKiAgU05NUHYzIGZpZWxkcworICAgICAqLworICAgIC8qKiBjb250ZXh0IHNubXBFbmdpbmVJRCAqLworICAgIHVfY2hhciAgICAgICAgICpjb250ZXh0RW5naW5lSUQ7CisgICAgLyoqIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQgKi8KKyAgICBzaXplX3QgICAgICAgICAgY29udGV4dEVuZ2luZUlETGVuOyAgICAgCisgICAgLyoqIGF1dGhvcml0YXRpdmUgY29udGV4dE5hbWUgKi8KKyAgICBjaGFyICAgICAgICAgICAqY29udGV4dE5hbWU7CisgICAgLyoqIExlbmd0aCBvZiBjb250ZXh0TmFtZSAqLworICAgIHNpemVfdCAgICAgICAgICBjb250ZXh0TmFtZUxlbjsKKyAgICAvKiogYXV0aG9yaXRhdGl2ZSBzbm1wRW5naW5lSUQgZm9yIHNlY3VyaXR5ICovCisgICAgdV9jaGFyICAgICAgICAgKnNlY3VyaXR5RW5naW5lSUQ7CisgICAgLyoqIExlbmd0aCBvZiBzZWN1cml0eUVuZ2luZUlEICovCisgICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5RW5naW5lSURMZW47ICAgIAorICAgIC8qKiBvbiBiZWhhbGYgb2YgdGhpcyBwcmluY2lwYWwgKi8KKyAgICBjaGFyICAgICAgICAgICAqc2VjdXJpdHlOYW1lOworICAgIC8qKiBMZW5ndGggb2Ygc2VjdXJpdHlOYW1lLiAqLworICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eU5hbWVMZW47ICAgICAgICAKKyAgICAKKyAgICAvKgorICAgICAqIEFnZW50WCBmaWVsZHMKKyAgICAgKiAgICAgIChhbHNvIHVzZXMgU05NUHYxIGNvbW11bml0eSBmaWVsZCkKKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAgcHJpb3JpdHk7CisgICAgaW50ICAgICAgICAgICAgIHJhbmdlX3N1YmlkOworICAgIAorICAgIHZvaWQgICAgICAgICAgICpzZWN1cml0eVN0YXRlUmVmOworfSBuZXRzbm1wX3BkdTsKKworCisvKiogQHR5cGVkZWYgc3RydWN0IHNubXBfc2Vzc2lvbiBuZXRzbm1wX3Nlc3Npb24KKyAqIFR5cGVkZWZzIHRoZSBzbm1wX3Nlc3Npb24gc3RydWN0IGludG9uZXRzbm1wX3Nlc3Npb24gKi8KKyAgICAgICAgc3RydWN0IHNubXBfc2Vzc2lvbjsKK3R5cGVkZWYgc3RydWN0IHNubXBfc2Vzc2lvbiBuZXRzbm1wX3Nlc3Npb247CisKKyNkZWZpbmUgVVNNX0FVVEhfS1VfTEVOICAgICAzMgorI2RlZmluZSBVU01fUFJJVl9LVV9MRU4gICAgIDMyCisKK3R5cGVkZWYgaW50ICAgICAgICAoKnNubXBfY2FsbGJhY2spIChpbnQsIG5ldHNubXBfc2Vzc2lvbiAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqLCB2b2lkICopOwordHlwZWRlZiBpbnQgICAgICgqbmV0c25tcF9jYWxsYmFjaykgKGludCwgbmV0c25tcF9zZXNzaW9uICosIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICosIHZvaWQgKik7CisvKiogQHN0cnVjdCBzbm1wX3Nlc3Npb24KKyAqIFRoZSBzbm1wIHNlc3Npb24gc3RydWN0dXJlLgorICovCitzdHJ1Y3Qgc25tcF9zZXNzaW9uIHsKKyAgICAvKgorICAgICAqIFByb3RvY29sLXZlcnNpb24gaW5kZXBlbmRlbnQgZmllbGRzCisgICAgICovCisgICAgLyoqIHNubXAgdmVyc2lvbiAqLworICAgIGxvbmcgICAgICAgICAgICB2ZXJzaW9uOworICAgIC8qKiBOdW1iZXIgb2YgcmV0cmllcyBiZWZvcmUgdGltZW91dC4gKi8KKyAgICBpbnQgICAgICAgICAgICAgcmV0cmllczsKKyAgICAvKiogTnVtYmVyIG9mIHVTIHVudGlsIGZpcnN0IHRpbWVvdXQsIHRoZW4gZXhwb25lbnRpYWwgYmFja29mZiAqLworICAgIGxvbmcgICAgICAgICAgICB0aW1lb3V0OyAgICAgICAgCisgICAgdV9sb25nICAgICAgICAgIGZsYWdzOworICAgIHN0cnVjdCBzbm1wX3Nlc3Npb24gKnN1YnNlc3Npb247CisgICAgc3RydWN0IHNubXBfc2Vzc2lvbiAqbmV4dDsKKworICAgIC8qKiBuYW1lIG9yIGFkZHJlc3Mgb2YgZGVmYXVsdCBwZWVyIChtYXkgaW5jbHVkZSB0cmFuc3BvcnQgc3BlY2lmaWVyIGFuZC9vciBwb3J0IG51bWJlcikgKi8KKyAgICBjaGFyICAgICAgICAgICAqcGVlcm5hbWU7CisgICAgLyoqIFVEUCBwb3J0IG51bWJlciBvZiBwZWVyLiAoTk8gTE9OR0VSIFVTRUQgLSBVU0UgcGVlcm5hbWUgSU5TVEVBRCkgKi8KKyAgICB1X3Nob3J0ICAgICAgICAgcmVtb3RlX3BvcnQ7CisgICAgLyoqIE15IERvbWFpbiBuYW1lIG9yIGRvdHRlZCBJUCBhZGRyZXNzLCAwIGZvciBkZWZhdWx0ICovCisgICAgY2hhciAgICAgICAgICAgKmxvY2FsbmFtZTsKKyAgICAvKiogTXkgVURQIHBvcnQgbnVtYmVyLCAwIGZvciBkZWZhdWx0LCBwaWNrZWQgcmFuZG9tbHkgKi8KKyAgICB1X3Nob3J0ICAgICAgICAgbG9jYWxfcG9ydDsgICAgIAorICAgIC8qKgorICAgICAqIEF1dGhlbnRpY2F0aW9uIGZ1bmN0aW9uIG9yIE5VTEwgaWYgbnVsbCBhdXRoZW50aWNhdGlvbiBpcyB1c2VkIAorICAgICAqLworICAgIHVfY2hhciAgICAgICAgICooKmF1dGhlbnRpY2F0b3IpICh1X2NoYXIgKiwgc2l6ZV90ICosIHVfY2hhciAqLCBzaXplX3QpOworICAgIC8qKiBGdW5jdGlvbiB0byBpbnRlcnByZXQgaW5jb21pbmcgZGF0YSAqLworICAgIG5ldHNubXBfY2FsbGJhY2sgY2FsbGJhY2s7ICAgICAgCisgICAgLyoqCisgICAgICogUG9pbnRlciB0byBkYXRhIHRoYXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG1heSBjb25zaWRlciBpbXBvcnRhbnQgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgKmNhbGxiYWNrX21hZ2ljOworICAgIC8qKiBjb3B5IG9mIHN5c3RlbSBlcnJubyAqLworICAgIGludCAgICAgICAgICAgICBzX2Vycm5vOworICAgIC8qKiBjb3B5IG9mIGxpYnJhcnkgZXJybm8gKi8KKyAgICBpbnQgICAgICAgICAgICAgc19zbm1wX2Vycm5vOyAgIAorICAgIC8qKiBTZXNzaW9uIGlkIC0gQWdlbnRYIG9ubHkgKi8KKyAgICBsb25nICAgICAgICAgICAgc2Vzc2lkOyAKKworICAgIC8qCisgICAgICogU05NUHYxICYgU05NUHYyYyBmaWVsZHMKKyAgICAgKi8KKyAgICAvKiogY29tbXVuaXR5IGZvciBvdXRnb2luZyByZXF1ZXN0cy4gKi8KKyAgICB1X2NoYXIgICAgICAgICAqY29tbXVuaXR5OworICAgIC8qKiBMZW5ndGggb2YgY29tbXVuaXR5IG5hbWUuICovCisgICAgc2l6ZV90ICAgICAgICAgIGNvbW11bml0eV9sZW47ICAKKyAgICAvKiogIExhcmdlc3QgbWVzc2FnZSB0byB0cnkgdG8gcmVjZWl2ZS4gICovCisgICAgc2l6ZV90ICAgICAgICAgIHJjdk1zZ01heFNpemU7CisgICAgLyoqICBMYXJnZXN0IG1lc3NhZ2UgdG8gdHJ5IHRvIHNlbmQuICAqLworICAgIHNpemVfdCAgICAgICAgICBzbmRNc2dNYXhTaXplOyAgCisKKyAgICAvKgorICAgICAqIFNOTVB2MyBmaWVsZHMKKyAgICAgKi8KKyAgICAvKiogYXJlIHdlIHRoZSBhdXRob3JpdGF0aXZlIGVuZ2luZT8gKi8KKyAgICB1X2NoYXIgICAgICAgICAgaXNBdXRob3JpdGF0aXZlOworICAgIC8qKiBhdXRob3JpdGF0aXZlIHNubXBFbmdpbmVJRCAqLworICAgIHVfY2hhciAgICAgICAgICpjb250ZXh0RW5naW5lSUQ7CisgICAgLyoqIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQgKi8KKyAgICBzaXplX3QgICAgICAgICAgY29udGV4dEVuZ2luZUlETGVuOyAgICAgCisgICAgLyoqIGluaXRpYWwgZW5naW5lQm9vdHMgZm9yIHJlbW90ZSBlbmdpbmUgKi8KKyAgICB1X2ludCAgICAgICAgICAgZW5naW5lQm9vdHM7CisgICAgLyoqIGluaXRpYWwgZW5naW5lVGltZSBmb3IgcmVtb3RlIGVuZ2luZSAqLworICAgIHVfaW50ICAgICAgICAgICBlbmdpbmVUaW1lOworICAgIC8qKiBhdXRob3JpdGF0aXZlIGNvbnRleHROYW1lICovCisgICAgY2hhciAgICAgICAgICAgKmNvbnRleHROYW1lOworICAgIC8qKiBMZW5ndGggb2YgY29udGV4dE5hbWUgKi8KKyAgICBzaXplX3QgICAgICAgICAgY29udGV4dE5hbWVMZW47CisgICAgLyoqIGF1dGhvcml0YXRpdmUgc25tcEVuZ2luZUlEICovCisgICAgdV9jaGFyICAgICAgICAgKnNlY3VyaXR5RW5naW5lSUQ7CisgICAgLyoqIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQgKi8KKyAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlFbmdpbmVJRExlbjsgICAgCisgICAgLyoqIG9uIGJlaGFsZiBvZiB0aGlzIHByaW5jaXBhbCAqLworICAgIGNoYXIgICAgICAgICAgICpzZWN1cml0eU5hbWU7CisgICAgLyoqIExlbmd0aCBvZiBzZWN1cml0eU5hbWUuICovCisgICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5TmFtZUxlbjsKKworICAgIC8qKiBhdXRoIHByb3RvY29sIG9pZCAqLworICAgIG9pZCAgICAgICAgICAgICpzZWN1cml0eUF1dGhQcm90bzsKKyAgICAvKiogTGVuZ3RoIG9mIGF1dGggcHJvdG9jb2wgb2lkICovCisgICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5QXV0aFByb3RvTGVuOworICAgIC8qKiBLdSBmb3IgYXV0aCBwcm90b2NvbCBYWFggKi8KKyAgICB1X2NoYXIgICAgICAgICAgc2VjdXJpdHlBdXRoS2V5W1VTTV9BVVRIX0tVX0xFTl07ICAgICAgIAorICAgIC8qKiBMZW5ndGggb2YgS3UgZm9yIGF1dGggcHJvdG9jb2wgKi8KKyAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlBdXRoS2V5TGVuOworICAgIC8qKiBLdWwgZm9yIGF1dGggcHJvdG9jb2wgKi8KKyAgICB1X2NoYXIgICAgICAgICAgKnNlY3VyaXR5QXV0aExvY2FsS2V5OyAgICAgICAKKyAgICAvKiogTGVuZ3RoIG9mIEt1bCBmb3IgYXV0aCBwcm90b2NvbCBYWFggKi8KKyAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlBdXRoTG9jYWxLZXlMZW47ICAgICAgIAorCisgICAgLyoqIHByaXYgcHJvdG9jb2wgb2lkICovCisgICAgb2lkICAgICAgICAgICAgKnNlY3VyaXR5UHJpdlByb3RvOworICAgIC8qKiBMZW5ndGggb2YgcHJpdiBwcm90b2NvbCBvaWQgKi8KKyAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlQcml2UHJvdG9MZW47CisgICAgLyoqIEt1IGZvciBwcml2YWN5IHByb3RvY29sIFhYWCAqLworICAgIHVfY2hhciAgICAgICAgICBzZWN1cml0eVByaXZLZXlbVVNNX1BSSVZfS1VfTEVOXTsgICAgICAgCisgICAgLyoqIExlbmd0aCBvZiBLdSBmb3IgcHJpdiBwcm90b2NvbCAqLworICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eVByaXZLZXlMZW47CisgICAgLyoqIEt1bCBmb3IgcHJpdiBwcm90b2NvbCAqLworICAgIHVfY2hhciAgICAgICAgICAqc2VjdXJpdHlQcml2TG9jYWxLZXk7ICAgICAgIAorICAgIC8qKiBMZW5ndGggb2YgS3VsIGZvciBwcml2IHByb3RvY29sIFhYWCAqLworICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eVByaXZMb2NhbEtleUxlbjsgICAgICAgCisKKyAgICAvKiogc25tcCBzZWN1cml0eSBtb2RlbCwgdjEsIHYyYywgdXNtICovCisgICAgaW50ICAgICAgICAgICAgIHNlY3VyaXR5TW9kZWw7CisgICAgLyoqIG5vQXV0aE5vUHJpdiwgYXV0aE5vUHJpdiwgYXV0aFByaXYgKi8KKyAgICBpbnQgICAgICAgICAgICAgc2VjdXJpdHlMZXZlbDsgIAorICAgIC8qKiB0YXJnZXQgcGFyYW0gbmFtZSAqLworICAgIGNoYXIgICAgICAgICAgICpwYXJhbU5hbWU7CisKKyAgICAvKioKKyAgICAgKiBzZWN1cml0eSBtb2R1bGUgc3BlY2lmaWMgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgKnNlY3VyaXR5SW5mbzsKKworICAgIC8qKgorICAgICAqIHVzZSBhcyB5b3Ugd2FudCBkYXRhIAorICAgICAqCisgICAgICogICAgIHVzZWQgYnkgJ1NOTVBfRkxBR1NfUkVTUF9DQUxMQkFDSycgaGFuZGxpbmcgaW4gdGhlIGFnZW50CisgICAgICogWFhYOiBvciBzaG91bGQgd2UgYWRkIGEgbmV3IGZpZWxkIGludG8gdGhpcyBzdHJ1Y3R1cmU/CisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgKm15dm9pZDsKK307CisKKworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kZWZpbml0aW9ucy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmggYi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKaW5kZXggZWQ1NzQ4Yi4uOTI0OTc3ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaApAQCAtNyw2ICs3LDY1IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKiBDcmVhdGlvbiAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqCisgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKG5ldHNubXBfcGR1ICpwZHUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IGxlbik7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICoKKyAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKiB2YXJsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICogdmFsdWUsIHNpemVfdCBsZW4pOworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqCisgICAgICAgc25tcF9hZGRfbnVsbF92YXIobmV0c25tcF9wZHUgKnBkdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbmd0aCk7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICoKKyAgICAgICBzbm1wX2Nsb25lX3ZhcmJpbmQobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFybGlzdCk7CisKKyAgICAvKiBTZXR0aW5nIFZhbHVlcyAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX3NldF92YXJfdmFsdWUobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqIHZhbHVlLCBzaXplX3QgbGVuKTsKKyAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXRfdmFyX29iamlkKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbmd0aCk7CisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IGxlbik7CisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB0eXBlLCBsb25nIHZhbCk7CisKKyAgICAgLyogT3V0cHV0ICovCisgICAgdm9pZCAgICAgICAgICAgIHByaW50X3ZhcmlhYmxlKGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKKyAgICB2b2lkICAgICAgICAgICBmcHJpbnRfdmFyaWFibGUoRklMRSAqIGZwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7CisgICAgaW50ICAgICAgICAgICBzbnByaW50X3ZhcmlhYmxlKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgcHJpbnRfdmFsdWUoY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKKyAgICB2b2lkICAgICAgICAgICAgZnByaW50X3ZhbHVlKEZJTEUgKiBmcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7CisgICAgaW50ICAgICAgICAgICAgc25wcmludF92YWx1ZShjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKKworICAgIC8qIERlbGV0aW9uICovCisgICAgdm9pZCAgICAgICAgICAgIHNubXBfZnJlZV92YXIoICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyKTsgICAgIC8qIGZyZWVzIGp1c3QgdGhpcyBvbmUgKi8KKyAgICB2b2lkICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQobmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJsaXN0KTsgLyogZnJlZXMgYWxsIGluIGxpc3QgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwogICAgIC8qCiAgICAgICogIEZvciB0aGUgaW5pdGlhbCByZWxlYXNlLCB0aGlzIHdpbGwganVzdCByZWZlciB0byB0aGUKICAgICAgKiAgcmVsZXZhbnQgVUNEIGhlYWRlciBmaWxlcy4KQEAgLTE2LDcgKzc1LDYgQEAKICAgICAgKiAgQnV0IGZvciB0aGUgdGltZSBiZWluZywgdGhpcyBoZWFkZXIgZmlsZSBpcyBhIHBsYWNlaG9sZGVyLAogICAgICAqICB0byBhbGxvdyBhcHBsaWNhdGlvbiB3cml0ZXJzIHRvIGFkb3B0IHRoZSBuZXcgaGVhZGVyIGZpbGUgbmFtZXMuCiAgICAgICovCi0KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbWliLmg+CmRpZmYgLS1naXQgYS9pbnN0YWxsLXNoIGIvaW5zdGFsbC1zaAppbmRleCAyYzIxMmNjLi5hNTg5N2RlIDEwMDc1NQotLS0gYS9pbnN0YWxsLXNoCisrKyBiL2luc3RhbGwtc2gKQEAgLTEsMTkgKzEsMzggQEAKLSMhIC9iaW4vc2gKLSMKKyMhL2Jpbi9zaAogIyBpbnN0YWxsIC0gaW5zdGFsbCBhIHByb2dyYW0sIHNjcmlwdCwgb3IgZGF0YWZpbGUKLSMgVGhpcyBjb21lcyBmcm9tIFgxMVI1IChtaXQvdXRpbC9zY3JpcHRzL2luc3RhbGwuc2gpLgorCitzY3JpcHR2ZXJzaW9uPTIwMDYtMTItMjUuMDAKKworIyBUaGlzIG9yaWdpbmF0ZXMgZnJvbSBYMTFSNSAobWl0L3V0aWwvc2NyaXB0cy9pbnN0YWxsLnNoKSwgd2hpY2ggd2FzCisjIGxhdGVyIHJlbGVhc2VkIGluIFgxMVI2ICh4Yy9jb25maWcvdXRpbC9pbnN0YWxsLnNoKSB3aXRoIHRoZQorIyBmb2xsb3dpbmcgY29weXJpZ2h0IGFuZCBsaWNlbnNlLgogIwotIyBDb3B5cmlnaHQgMTk5MSBieSB0aGUgTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neQorIyBDb3B5cmlnaHQgKEMpIDE5OTQgWCBDb25zb3J0aXVtCiAjCi0jIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0cwotIyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdAotIyB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQKLSMgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZwotIyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiBNLkkuVC4gbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IKLSMgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLAotIyB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gbWFrZXMgbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZQotIyBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIKLSMgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisjIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisjIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorIyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyMgWCBDT05TT1JUSVVNIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUMtCisjIFRJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisjCisjIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lIG9mIHRoZSBYIENvbnNvcnRpdW0gc2hhbGwgbm90CisjIGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsLQorIyBpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIGF1dGhvcml6YXRpb24gZnJvbSB0aGUgWCBDb25zb3ItCisjIHRpdW0uCisjCisjCisjIEZTRiBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBhcmUgaW4gdGhlIHB1YmxpYyBkb21haW4uCiAjCiAjIENhbGxpbmcgdGhpcyBzY3JpcHQgaW5zdGFsbC1zaCBpcyBwcmVmZXJyZWQgb3ZlciBpbnN0YWxsLnNoLCB0byBwcmV2ZW50CiAjIGBtYWtlJyBpbXBsaWNpdCBydWxlcyBmcm9tIGNyZWF0aW5nIGEgZmlsZSBjYWxsZWQgaW5zdGFsbCBmcm9tIGl0CkBAIC0yMSwyMzAgKzQwLDQ4MCBAQAogIwogIyBUaGlzIHNjcmlwdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIEJTRCBpbnN0YWxsIHNjcmlwdCwgYnV0IHdhcyB3cml0dGVuCiAjIGZyb20gc2NyYXRjaC4KLSMKIAorbmw9JworJworSUZTPSIgIiIJJG5sIgogCiAjIHNldCBET0lUUFJPRyB0byBlY2hvIHRvIHRlc3QgdGhpcyBzY3JpcHQKIAogIyBEb24ndCB1c2UgOi0gc2luY2UgNC4zQlNEIGFuZCBlYXJsaWVyIHNoZWxscyBkb24ndCBsaWtlIGl0LgotZG9pdD0iJHtET0lUUFJPRy19IgotCi0KLSMgcHV0IGluIGFic29sdXRlIHBhdGhzIGlmIHlvdSBkb24ndCBoYXZlIHRoZW0gaW4geW91ciBwYXRoOyBvciB1c2UgZW52LiB2YXJzLgotCi1tdnByb2c9IiR7TVZQUk9HLW12fSIKLWNwcHJvZz0iJHtDUFBST0ctY3B9IgotY2htb2Rwcm9nPSIke0NITU9EUFJPRy1jaG1vZH0iCi1jaG93bnByb2c9IiR7Q0hPV05QUk9HLWNob3dufSIKLWNoZ3JwcHJvZz0iJHtDSEdSUFBST0ctY2hncnB9Igotc3RyaXBwcm9nPSIke1NUUklQUFJPRy1zdHJpcH0iCi1ybXByb2c9IiR7Uk1QUk9HLXJtfSIKLW1rZGlycHJvZz0iJHtNS0RJUlBST0ctbWtkaXJ9IgotCi10cmFuc2Zvcm1iYXNlbmFtZT0iIgotdHJhbnNmb3JtX2FyZz0iIgotaW5zdGNtZD0iJG12cHJvZyIKLWNobW9kY21kPSIkY2htb2Rwcm9nIDA3NTUiCi1jaG93bmNtZD0iIgotY2hncnBjbWQ9IiIKLXN0cmlwY21kPSIiCi1ybWNtZD0iJHJtcHJvZyAtZiIKLW12Y21kPSIkbXZwcm9nIgotc3JjPSIiCi1kc3Q9IiIKLWRpcl9hcmc9IiIKLQotd2hpbGUgWyB4IiQxIiAhPSB4IF07IGRvCi0gICAgY2FzZSAkMSBpbgotCS1jKSBpbnN0Y21kPSIkY3Bwcm9nIgotCSAgICBzaGlmdAotCSAgICBjb250aW51ZTs7Ci0KLQktZCkgZGlyX2FyZz10cnVlCi0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKLQotCS1tKSBjaG1vZGNtZD0iJGNobW9kcHJvZyAkMiIKLQkgICAgc2hpZnQKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OwotCi0JLW8pIGNob3duY21kPSIkY2hvd25wcm9nICQyIgotCSAgICBzaGlmdAotCSAgICBzaGlmdAotCSAgICBjb250aW51ZTs7Ci0KLQktZykgY2hncnBjbWQ9IiRjaGdycHByb2cgJDIiCi0JICAgIHNoaWZ0Ci0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKLQotCS1zKSBzdHJpcGNtZD0iJHN0cmlwcHJvZyIKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OwotCi0JLXQ9KikgdHJhbnNmb3JtYXJnPWBlY2hvICQxIHwgc2VkICdzLy10PS8vJ2AKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OwotCi0JLWI9KikgdHJhbnNmb3JtYmFzZW5hbWU9YGVjaG8gJDEgfCBzZWQgJ3MvLWI9Ly8nYAotCSAgICBzaGlmdAotCSAgICBjb250aW51ZTs7Ci0KLQkqKSAgaWYgWyB4IiRzcmMiID0geCBdCi0JICAgIHRoZW4KLQkJc3JjPSQxCi0JICAgIGVsc2UKLQkJIyB0aGlzIGNvbG9uIGlzIHRvIHdvcmsgYXJvdW5kIGEgMzg2QlNEIC9iaW4vc2ggYnVnCi0JCToKLQkJZHN0PSQxCi0JICAgIGZpCi0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKLSAgICBlc2FjCi1kb25lCi0KLWlmIFsgeCIkc3JjIiA9IHggXQotdGhlbgotCWVjaG8gImluc3RhbGw6CW5vIGlucHV0IGZpbGUgc3BlY2lmaWVkIgotCWV4aXQgMQorZG9pdD0ke0RPSVRQUk9HLX0KK2lmIHRlc3QgLXogIiRkb2l0IjsgdGhlbgorICBkb2l0X2V4ZWM9ZXhlYwogZWxzZQotCXRydWUKKyAgZG9pdF9leGVjPSRkb2l0CiBmaQogCi1pZiBbIHgiJGRpcl9hcmciICE9IHggXTsgdGhlbgotCWRzdD0kc3JjCi0Jc3JjPSIiCi0JCi0JaWYgWyAtZCAkZHN0IF07IHRoZW4KLQkJaW5zdGNtZD06Ci0JZWxzZQotCQlpbnN0Y21kPW1rZGlyCi0JZmkKLWVsc2UKKyMgUHV0IGluIGFic29sdXRlIGZpbGUgbmFtZXMgaWYgeW91IGRvbid0IGhhdmUgdGhlbSBpbiB5b3VyIHBhdGg7CisjIG9yIHVzZSBlbnZpcm9ubWVudCB2YXJzLgogCi0jIFdhaXRpbmcgZm9yIHRoaXMgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlICIkaW5zdGNtZCAkc3JjICRkc3R0bXAiIGNvbW1hbmQKLSMgbWlnaHQgY2F1c2UgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCwgd2hpY2ggd291bGQgYmUgZXNwZWNpYWxseSBiYWQgCi0jIGlmICRzcmMgKGFuZCB0aHVzICRkc3R0bXApIGNvbnRhaW5zICcqJy4KK2NoZ3JwcHJvZz0ke0NIR1JQUFJPRy1jaGdycH0KK2NobW9kcHJvZz0ke0NITU9EUFJPRy1jaG1vZH0KK2Nob3ducHJvZz0ke0NIT1dOUFJPRy1jaG93bn0KK2NtcHByb2c9JHtDTVBQUk9HLWNtcH0KK2NwcHJvZz0ke0NQUFJPRy1jcH0KK21rZGlycHJvZz0ke01LRElSUFJPRy1ta2Rpcn0KK212cHJvZz0ke01WUFJPRy1tdn0KK3JtcHJvZz0ke1JNUFJPRy1ybX0KK3N0cmlwcHJvZz0ke1NUUklQUFJPRy1zdHJpcH0KIAotCWlmIFsgLWYgJHNyYyAtbyAtZCAkc3JjIF0KLQl0aGVuCi0JCXRydWUKLQllbHNlCi0JCWVjaG8gImluc3RhbGw6ICAkc3JjIGRvZXMgbm90IGV4aXN0IgotCQlleGl0IDEKLQlmaQotCQotCWlmIFsgeCIkZHN0IiA9IHggXQotCXRoZW4KLQkJZWNobyAiaW5zdGFsbDoJbm8gZGVzdGluYXRpb24gc3BlY2lmaWVkIgotCQlleGl0IDEKLQllbHNlCi0JCXRydWUKLQlmaQotCi0jIElmIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5LCBhcHBlbmQgdGhlIGlucHV0IGZpbGVuYW1lOyBpZiB5b3VyIHN5c3RlbQotIyBkb2VzIG5vdCBsaWtlIGRvdWJsZSBzbGFzaGVzIGluIGZpbGVuYW1lcywgeW91IG1heSBuZWVkIHRvIGFkZCBzb21lIGxvZ2ljCi0KLQlpZiBbIC1kICRkc3QgXQotCXRoZW4KLQkJZHN0PSIkZHN0Ii9gYmFzZW5hbWUgJHNyY2AKLQllbHNlCi0JCXRydWUKLQlmaQotZmkKLQotIyMgdGhpcyBzZWQgY29tbWFuZCBlbXVsYXRlcyB0aGUgZGlybmFtZSBjb21tYW5kCi1kc3RkaXI9YGVjaG8gJGRzdCB8IHNlZCAtZSAncyxbXi9dKiQsLDtzLC8kLCw7cyxeJCwuLCdgCi0KLSMgTWFrZSBzdXJlIHRoYXQgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBleGlzdHMuCi0jICB0aGlzIHBhcnQgaXMgdGFrZW4gZnJvbSBOb2FoIEZyaWVkbWFuJ3MgbWtpbnN0YWxsZGlycyBzY3JpcHQKLQotIyBTa2lwIGxvdHMgb2Ygc3RhdCBjYWxscyBpbiB0aGUgdXN1YWwgY2FzZS4KLWlmIFsgISAtZCAiJGRzdGRpciIgXTsgdGhlbgotZGVmYXVsdElGUz0nCQorcG9zaXhfZ2xvYj0nPycKK2luaXRpYWxpemVfcG9zaXhfZ2xvYj0nCisgIHRlc3QgIiRwb3NpeF9nbG9iIiAhPSAiPyIgfHwgeworICAgIGlmIChzZXQgLWYpIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICBwb3NpeF9nbG9iPQorICAgIGVsc2UKKyAgICAgIHBvc2l4X2dsb2I9OgorICAgIGZpCisgIH0KICcKLUlGUz0iJHtJRlMtJHtkZWZhdWx0SUZTfX0iCiAKLW9JRlM9IiR7SUZTfSIKLSMgU29tZSBzaCdzIGNhbid0IGhhbmRsZSBJRlM9LyBmb3Igc29tZSByZWFzb24uCi1JRlM9JyUnCi1zZXQgLSBgZWNobyAke2RzdGRpcn0gfCBzZWQgLWUgJ3NAL0AlQGcnIC1lICdzQF4lQC9AJ2AKLUlGUz0iJHtvSUZTfSIKK3Bvc2l4X21rZGlyPQogCi1wYXRoY29tcD0nJworIyBEZXNpcmVkIG1vZGUgb2YgaW5zdGFsbGVkIGZpbGUuCittb2RlPTA3NTUKIAotd2hpbGUgWyAkIyAtbmUgMCBdIDsgZG8KLQlwYXRoY29tcD0iJHtwYXRoY29tcH0kezF9IgotCXNoaWZ0CitjaGdycGNtZD0KK2NobW9kY21kPSRjaG1vZHByb2cKK2Nob3duY21kPQorbXZjbWQ9JG12cHJvZworcm1jbWQ9IiRybXByb2cgLWYiCitzdHJpcGNtZD0KIAotCWlmIFsgISAtZCAiJHtwYXRoY29tcH0iIF0gOwotICAgICAgICB0aGVuCi0JCSRta2RpcnByb2cgIiR7cGF0aGNvbXB9IgotCWVsc2UKLQkJdHJ1ZQotCWZpCitzcmM9Citkc3Q9CitkaXJfYXJnPQorZHN0X2FyZz0KIAotCXBhdGhjb21wPSIke3BhdGhjb21wfS8iCitjb3B5X29uX2NoYW5nZT1mYWxzZQorbm9fdGFyZ2V0X2RpcmVjdG9yeT0KKwordXNhZ2U9IlwKK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbLVRdIFNSQ0ZJTEUgRFNURklMRQorICAgb3I6ICQwIFtPUFRJT05dLi4uIFNSQ0ZJTEVTLi4uIERJUkVDVE9SWQorICAgb3I6ICQwIFtPUFRJT05dLi4uIC10IERJUkVDVE9SWSBTUkNGSUxFUy4uLgorICAgb3I6ICQwIFtPUFRJT05dLi4uIC1kIERJUkVDVE9SSUVTLi4uCisKK0luIHRoZSAxc3QgZm9ybSwgY29weSBTUkNGSUxFIHRvIERTVEZJTEUuCitJbiB0aGUgMm5kIGFuZCAzcmQsIGNvcHkgYWxsIFNSQ0ZJTEVTIHRvIERJUkVDVE9SWS4KK0luIHRoZSA0dGgsIGNyZWF0ZSBESVJFQ1RPUklFUy4KKworT3B0aW9uczoKKyAgICAgLS1oZWxwICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdC4KKyAgICAgLS12ZXJzaW9uICBkaXNwbGF5IHZlcnNpb24gaW5mbyBhbmQgZXhpdC4KKworICAtYyAgICAgICAgICAgIChpZ25vcmVkKQorICAtQyAgICAgICAgICAgIGluc3RhbGwgb25seSBpZiBkaWZmZXJlbnQgKHByZXNlcnZlIHRoZSBsYXN0IGRhdGEgbW9kaWZpY2F0aW9uIHRpbWUpCisgIC1kICAgICAgICAgICAgY3JlYXRlIGRpcmVjdG9yaWVzIGluc3RlYWQgb2YgaW5zdGFsbGluZyBmaWxlcy4KKyAgLWcgR1JPVVAgICAgICAkY2hncnBwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBHUk9VUC4KKyAgLW0gTU9ERSAgICAgICAkY2htb2Rwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBNT0RFLgorICAtbyBVU0VSICAgICAgICRjaG93bnByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIFVTRVIuCisgIC1zICAgICAgICAgICAgJHN0cmlwcHJvZyBpbnN0YWxsZWQgZmlsZXMuCisgIC10IERJUkVDVE9SWSAgaW5zdGFsbCBpbnRvIERJUkVDVE9SWS4KKyAgLVQgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IgaWYgRFNURklMRSBpcyBhIGRpcmVjdG9yeS4KKworRW52aXJvbm1lbnQgdmFyaWFibGVzIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNvbW1hbmRzOgorICBDSEdSUFBST0cgQ0hNT0RQUk9HIENIT1dOUFJPRyBDTVBQUk9HIENQUFJPRyBNS0RJUlBST0cgTVZQUk9HCisgIFJNUFJPRyBTVFJJUFBST0cKKyIKKword2hpbGUgdGVzdCAkIyAtbmUgMDsgZG8KKyAgY2FzZSAkMSBpbgorICAgIC1jKSA7OworCisgICAgLUMpIGNvcHlfb25fY2hhbmdlPXRydWU7OworCisgICAgLWQpIGRpcl9hcmc9dHJ1ZTs7CisKKyAgICAtZykgY2hncnBjbWQ9IiRjaGdycHByb2cgJDIiCisJc2hpZnQ7OworCisgICAgLS1oZWxwKSBlY2hvICIkdXNhZ2UiOyBleGl0ICQ/OzsKKworICAgIC1tKSBtb2RlPSQyCisJY2FzZSAkbW9kZSBpbgorCSAgKicgJyogfCAqJwknKiB8IConCisnKgkgIHwgKicqJyogfCAqJz8nKiB8IConWycqKQorCSAgICBlY2hvICIkMDogaW52YWxpZCBtb2RlOiAkbW9kZSIgPiYyCisJICAgIGV4aXQgMTs7CisJZXNhYworCXNoaWZ0OzsKKworICAgIC1vKSBjaG93bmNtZD0iJGNob3ducHJvZyAkMiIKKwlzaGlmdDs7CisKKyAgICAtcykgc3RyaXBjbWQ9JHN0cmlwcHJvZzs7CisKKyAgICAtdCkgZHN0X2FyZz0kMgorCXNoaWZ0OzsKKworICAgIC1UKSBub190YXJnZXRfZGlyZWN0b3J5PXRydWU7OworCisgICAgLS12ZXJzaW9uKSBlY2hvICIkMCAkc2NyaXB0dmVyc2lvbiI7IGV4aXQgJD87OworCisgICAgLS0pCXNoaWZ0CisJYnJlYWs7OworCisgICAgLSopCWVjaG8gIiQwOiBpbnZhbGlkIG9wdGlvbjogJDEiID4mMgorCWV4aXQgMTs7CisKKyAgICAqKSAgYnJlYWs7OworICBlc2FjCisgIHNoaWZ0CiBkb25lCisKK2lmIHRlc3QgJCMgLW5lIDAgJiYgdGVzdCAteiAiJGRpcl9hcmckZHN0X2FyZyI7IHRoZW4KKyAgIyBXaGVuIC1kIGlzIHVzZWQsIGFsbCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBkaXJlY3RvcmllcyB0byBjcmVhdGUuCisgICMgV2hlbiAtdCBpcyB1c2VkLCB0aGUgZGVzdGluYXRpb24gaXMgYWxyZWFkeSBzcGVjaWZpZWQuCisgICMgT3RoZXJ3aXNlLCB0aGUgbGFzdCBhcmd1bWVudCBpcyB0aGUgZGVzdGluYXRpb24uICBSZW1vdmUgaXQgZnJvbSAkQC4KKyAgZm9yIGFyZworICBkbworICAgIGlmIHRlc3QgLW4gIiRkc3RfYXJnIjsgdGhlbgorICAgICAgIyAkQCBpcyBub3QgZW1wdHk6IGl0IGNvbnRhaW5zIGF0IGxlYXN0ICRhcmcuCisgICAgICBzZXQgZm5vcmQgIiRAIiAiJGRzdF9hcmciCisgICAgICBzaGlmdCAjIGZub3JkCisgICAgZmkKKyAgICBzaGlmdCAjIGFyZworICAgIGRzdF9hcmc9JGFyZworICBkb25lCiBmaQogCi1pZiBbIHgiJGRpcl9hcmciICE9IHggXQotdGhlbgotCSRkb2l0ICRpbnN0Y21kICRkc3QgJiYKK2lmIHRlc3QgJCMgLWVxIDA7IHRoZW4KKyAgaWYgdGVzdCAteiAiJGRpcl9hcmciOyB0aGVuCisgICAgZWNobyAiJDA6IG5vIGlucHV0IGZpbGUgc3BlY2lmaWVkLiIgPiYyCisgICAgZXhpdCAxCisgIGZpCisgICMgSXQncyBPSyB0byBjYWxsIGBpbnN0YWxsLXNoIC1kJyB3aXRob3V0IGFyZ3VtZW50LgorICAjIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGNyZWF0aW5nIGNvbmRpdGlvbmFsIGRpcmVjdG9yaWVzLgorICBleGl0IDAKK2ZpCiAKLQlpZiBbIHgiJGNob3duY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJGNob3duY21kICRkc3Q7IGVsc2UgdHJ1ZSA7IGZpICYmCi0JaWYgWyB4IiRjaGdycGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaGdycGNtZCAkZHN0OyBlbHNlIHRydWUgOyBmaSAmJgotCWlmIFsgeCIkc3RyaXBjbWQiICE9IHggXTsgdGhlbiAkZG9pdCAkc3RyaXBjbWQgJGRzdDsgZWxzZSB0cnVlIDsgZmkgJiYKLQlpZiBbIHgiJGNobW9kY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJGNobW9kY21kICRkc3Q7IGVsc2UgdHJ1ZSA7IGZpCi1lbHNlCitpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KKyAgdHJhcCAnKGV4aXQgJD8pOyBleGl0JyAxIDIgMTMgMTUKIAotIyBJZiB3ZSdyZSBnb2luZyB0byByZW5hbWUgdGhlIGZpbmFsIGV4ZWN1dGFibGUsIGRldGVybWluZSB0aGUgbmFtZSBub3cuCisgICMgU2V0IHVtYXNrIHNvIGFzIG5vdCB0byBjcmVhdGUgdGVtcHMgd2l0aCB0b28tZ2VuZXJvdXMgbW9kZXMuCisgICMgSG93ZXZlciwgJ3N0cmlwJyByZXF1aXJlcyBib3RoIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byB0ZW1wcy4KKyAgY2FzZSAkbW9kZSBpbgorICAgICMgT3B0aW1pemUgY29tbW9uIGNhc2VzLgorICAgICo2NDQpIGNwX3VtYXNrPTEzMzs7CisgICAgKjc1NSkgY3BfdW1hc2s9MjI7OwogCi0JaWYgWyB4IiR0cmFuc2Zvcm1hcmciID0geCBdIAotCXRoZW4KLQkJZHN0ZmlsZT1gYmFzZW5hbWUgJGRzdGAKKyAgICAqWzAtN10pCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0nJSAyMDAnCisgICAgICBmaQorICAgICAgY3BfdW1hc2s9YGV4cHIgJygnIDc3NyAtICRtb2RlICUgMTAwMCAnKScgJHVfcGx1c19yd2A7OworICAgICopCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0sdStydworICAgICAgZmkKKyAgICAgIGNwX3VtYXNrPSRtb2RlJHVfcGx1c19ydzs7CisgIGVzYWMKK2ZpCisKK2ZvciBzcmMKK2RvCisgICMgUHJvdGVjdCBuYW1lcyBzdGFydGluZyB3aXRoIGAtJy4KKyAgY2FzZSAkc3JjIGluCisgICAgLSopIHNyYz0uLyRzcmM7OworICBlc2FjCisKKyAgaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisgICAgZHN0PSRzcmMKKyAgICBkc3RkaXI9JGRzdAorICAgIHRlc3QgLWQgIiRkc3RkaXIiCisgICAgZHN0ZGlyX3N0YXR1cz0kPworICBlbHNlCisKKyAgICAjIFdhaXRpbmcgZm9yIHRoaXMgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlICIkY3Bwcm9nICRzcmMgJGRzdHRtcCIgY29tbWFuZAorICAgICMgbWlnaHQgY2F1c2UgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCwgd2hpY2ggd291bGQgYmUgZXNwZWNpYWxseSBiYWQKKyAgICAjIGlmICRzcmMgKGFuZCB0aHVzICRkc3R0bXApIGNvbnRhaW5zICcqJy4KKyAgICBpZiB0ZXN0ICEgLWYgIiRzcmMiICYmIHRlc3QgISAtZCAiJHNyYyI7IHRoZW4KKyAgICAgIGVjaG8gIiQwOiAkc3JjIGRvZXMgbm90IGV4aXN0LiIgPiYyCisgICAgICBleGl0IDEKKyAgICBmaQorCisgICAgaWYgdGVzdCAteiAiJGRzdF9hcmciOyB0aGVuCisgICAgICBlY2hvICIkMDogbm8gZGVzdGluYXRpb24gc3BlY2lmaWVkLiIgPiYyCisgICAgICBleGl0IDEKKyAgICBmaQorCisgICAgZHN0PSRkc3RfYXJnCisgICAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgorICAgIGNhc2UgJGRzdCBpbgorICAgICAgLSopIGRzdD0uLyRkc3Q7OworICAgIGVzYWMKKworICAgICMgSWYgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnksIGFwcGVuZCB0aGUgaW5wdXQgZmlsZW5hbWU7IHdvbid0IHdvcmsKKyAgICAjIGlmIGRvdWJsZSBzbGFzaGVzIGFyZW4ndCBpZ25vcmVkLgorICAgIGlmIHRlc3QgLWQgIiRkc3QiOyB0aGVuCisgICAgICBpZiB0ZXN0IC1uICIkbm9fdGFyZ2V0X2RpcmVjdG9yeSI7IHRoZW4KKwllY2hvICIkMDogJGRzdF9hcmc6IElzIGEgZGlyZWN0b3J5IiA+JjIKKwlleGl0IDEKKyAgICAgIGZpCisgICAgICBkc3RkaXI9JGRzdAorICAgICAgZHN0PSRkc3RkaXIvYGJhc2VuYW1lICIkc3JjImAKKyAgICAgIGRzdGRpcl9zdGF0dXM9MAorICAgIGVsc2UKKyAgICAgICMgUHJlZmVyIGRpcm5hbWUsIGJ1dCBmYWxsIGJhY2sgb24gYSBzdWJzdGl0dXRlIGlmIGRpcm5hbWUgZmFpbHMuCisgICAgICBkc3RkaXI9YAorCShkaXJuYW1lICIkZHN0IikgMj4vZGV2L251bGwgfHwKKwlleHByIFgiJGRzdCIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CisJZWNobyBYIiRkc3QiIHwKKwkgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpJC97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSAvXlhcKFwvXCkuKi97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSBzLy4qLy4vOyBxJworICAgICAgYAorCisgICAgICB0ZXN0IC1kICIkZHN0ZGlyIgorICAgICAgZHN0ZGlyX3N0YXR1cz0kPworICAgIGZpCisgIGZpCisKKyAgb2Jzb2xldGVfbWtkaXJfdXNlZD1mYWxzZQorCisgIGlmIHRlc3QgJGRzdGRpcl9zdGF0dXMgIT0gMDsgdGhlbgorICAgIGNhc2UgJHBvc2l4X21rZGlyIGluCisgICAgICAnJykKKwkjIENyZWF0ZSBpbnRlcm1lZGlhdGUgZGlycyB1c2luZyBtb2RlIDc1NSBhcyBtb2RpZmllZCBieSB0aGUgdW1hc2suCisJIyBUaGlzIGlzIGxpa2UgRnJlZUJTRCAnaW5zdGFsbCcgYXMgb2YgMTk5Ny0xMC0yOC4KKwl1bWFzaz1gdW1hc2tgCisJY2FzZSAkc3RyaXBjbWQuJHVtYXNrIGluCisJICAjIE9wdGltaXplIGNvbW1vbiBjYXNlcy4KKwkgICpbMjM2N11bMjM2N10pIG1rZGlyX3VtYXNrPSR1bWFzazs7CisJICAuKjBbMDJdWzAyXSB8IC5bMDJdWzAyXSB8IC5bMDJdKSBta2Rpcl91bWFzaz0yMjs7CisKKwkgICpbMC03XSkKKwkgICAgbWtkaXJfdW1hc2s9YGV4cHIgJHVtYXNrICsgMjIgXAorCSAgICAgIC0gJHVtYXNrICUgMTAwICUgNDAgKyAkdW1hc2sgJSAyMCBcCisJICAgICAgLSAkdW1hc2sgJSAxMCAlIDQgKyAkdW1hc2sgJSAyCisJICAgIGA7OworCSAgKikgbWtkaXJfdW1hc2s9JHVtYXNrLGdvLXc7OworCWVzYWMKKworCSMgV2l0aCAtZCwgY3JlYXRlIHRoZSBuZXcgZGlyZWN0b3J5IHdpdGggdGhlIHVzZXItc3BlY2lmaWVkIG1vZGUuCisJIyBPdGhlcndpc2UsIHJlbHkgb24gJG1rZGlyX3VtYXNrLgorCWlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgorCSAgbWtkaXJfbW9kZT0tbSRtb2RlCiAJZWxzZQotCQlkc3RmaWxlPWBiYXNlbmFtZSAkZHN0ICR0cmFuc2Zvcm1iYXNlbmFtZSB8IAotCQkJc2VkICR0cmFuc2Zvcm1hcmdgJHRyYW5zZm9ybWJhc2VuYW1lCisJICBta2Rpcl9tb2RlPQogCWZpCiAKLSMgZG9uJ3QgYWxsb3cgdGhlIHNlZCBjb21tYW5kIHRvIGNvbXBsZXRlbHkgZWxpbWluYXRlIHRoZSBmaWxlbmFtZQorCXBvc2l4X21rZGlyPWZhbHNlCisJY2FzZSAkdW1hc2sgaW4KKwkgICpbMTIzNTY3XVswLTddWzAtN10pCisJICAgICMgUE9TSVggbWtkaXIgLXAgc2V0cyB1K3d4IGJpdHMgcmVnYXJkbGVzcyBvZiB1bWFzaywgd2hpY2gKKwkgICAgIyBpcyBpbmNvbXBhdGlibGUgd2l0aCBGcmVlQlNEICdpbnN0YWxsJyB3aGVuICh1bWFzayAmIDMwMCkgIT0gMC4KKwkgICAgOzsKKwkgICopCisJICAgIHRtcGRpcj0ke1RNUERJUi0vdG1wfS9pbnMkUkFORE9NLSQkCisJICAgIHRyYXAgJ3JldD0kPzsgcm1kaXIgIiR0bXBkaXIvZCIgIiR0bXBkaXIiIDI+L2Rldi9udWxsOyBleGl0ICRyZXQnIDAKIAotCWlmIFsgeCIkZHN0ZmlsZSIgPSB4IF0gCi0JdGhlbgotCQlkc3RmaWxlPWBiYXNlbmFtZSAkZHN0YAorCSAgICBpZiAodW1hc2sgJG1rZGlyX3VtYXNrICYmCisJCWV4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJHRtcGRpci9kIikgPi9kZXYvbnVsbCAyPiYxCisJICAgIHRoZW4KKwkgICAgICBpZiB0ZXN0IC16ICIkZGlyX2FyZyIgfHwgeworCQkgICAjIENoZWNrIGZvciBQT1NJWCBpbmNvbXBhdGliaWxpdGllcyB3aXRoIC1tLgorCQkgICAjIEhQLVVYIDExLjIzIGFuZCBJUklYIDYuNSBta2RpciAtbSAtcCBzZXRzIGdyb3VwLSBvcgorCQkgICAjIG90aGVyLXdyaXRlYWJsZSBiaXQgb2YgcGFyZW50IGRpcmVjdG9yeSB3aGVuIGl0IHNob3VsZG4ndC4KKwkJICAgIyBGcmVlQlNEIDYuMSBta2RpciAtbSAtcCBzZXRzIG1vZGUgb2YgZXhpc3RpbmcgZGlyZWN0b3J5LgorCQkgICBsc19sZF90bXBkaXI9YGxzIC1sZCAiJHRtcGRpciJgCisJCSAgIGNhc2UgJGxzX2xkX3RtcGRpciBpbgorCQkgICAgIGQ/Pz8/LT9yLSopIGRpZmZlcmVudF9tb2RlPTcwMDs7CisJCSAgICAgZD8/Pz8tPy0tKikgZGlmZmVyZW50X21vZGU9NzU1OzsKKwkJICAgICAqKSBmYWxzZTs7CisJCSAgIGVzYWMgJiYKKwkJICAgJG1rZGlycHJvZyAtbSRkaWZmZXJlbnRfbW9kZSAtcCAtLSAiJHRtcGRpciIgJiYgeworCQkgICAgIGxzX2xkX3RtcGRpcl8xPWBscyAtbGQgIiR0bXBkaXIiYAorCQkgICAgIHRlc3QgIiRsc19sZF90bXBkaXIiID0gIiRsc19sZF90bXBkaXJfMSIKKwkJICAgfQorCQkgfQorCSAgICAgIHRoZW4gcG9zaXhfbWtkaXI9OgorCSAgICAgIGZpCisJICAgICAgcm1kaXIgIiR0bXBkaXIvZCIgIiR0bXBkaXIiCisJICAgIGVsc2UKKwkgICAgICAjIFJlbW92ZSBhbnkgZGlycyBsZWZ0IGJlaGluZCBieSBhbmNpZW50IG1rZGlyIGltcGxlbWVudGF0aW9ucy4KKwkgICAgICBybWRpciAuLyRta2Rpcl9tb2RlIC4vLXAgLi8tLSAyPi9kZXYvbnVsbAorCSAgICBmaQorCSAgICB0cmFwICcnIDA7OworCWVzYWM7OworICAgIGVzYWMKKworICAgIGlmCisgICAgICAkcG9zaXhfbWtkaXIgJiYgKAorCXVtYXNrICRta2Rpcl91bWFzayAmJgorCSRkb2l0X2V4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJGRzdGRpciIKKyAgICAgICkKKyAgICB0aGVuIDoKKyAgICBlbHNlCisKKyAgICAgICMgVGhlIHVtYXNrIGlzIHJpZGljdWxvdXMsIG9yIG1rZGlyIGRvZXMgbm90IGNvbmZvcm0gdG8gUE9TSVgsCisgICAgICAjIG9yIGl0IGZhaWxlZCBwb3NzaWJseSBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbi4gIENyZWF0ZSB0aGUKKyAgICAgICMgZGlyZWN0b3J5IHRoZSBzbG93IHdheSwgc3RlcCBieSBzdGVwLCBjaGVja2luZyBmb3IgcmFjZXMgYXMgd2UgZ28uCisKKyAgICAgIGNhc2UgJGRzdGRpciBpbgorCS8qKSBwcmVmaXg9Jy8nOzsKKwktKikgcHJlZml4PScuLyc7OworCSopICBwcmVmaXg9Jyc7OworICAgICAgZXNhYworCisgICAgICBldmFsICIkaW5pdGlhbGl6ZV9wb3NpeF9nbG9iIgorCisgICAgICBvSUZTPSRJRlMKKyAgICAgIElGUz0vCisgICAgICAkcG9zaXhfZ2xvYiBzZXQgLWYKKyAgICAgIHNldCBmbm9yZCAkZHN0ZGlyCisgICAgICBzaGlmdAorICAgICAgJHBvc2l4X2dsb2Igc2V0ICtmCisgICAgICBJRlM9JG9JRlMKKworICAgICAgcHJlZml4ZXM9CisKKyAgICAgIGZvciBkCisgICAgICBkbworCXRlc3QgLXogIiRkIiAmJiBjb250aW51ZQorCisJcHJlZml4PSRwcmVmaXgkZAorCWlmIHRlc3QgLWQgIiRwcmVmaXgiOyB0aGVuCisJICBwcmVmaXhlcz0KIAllbHNlCi0JCXRydWUKKwkgIGlmICRwb3NpeF9ta2RpcjsgdGhlbgorCSAgICAodW1hc2s9JG1rZGlyX3VtYXNrICYmCisJICAgICAkZG9pdF9leGVjICRta2RpcnByb2cgJG1rZGlyX21vZGUgLXAgLS0gIiRkc3RkaXIiKSAmJiBicmVhaworCSAgICAjIERvbid0IGZhaWwgaWYgdHdvIGluc3RhbmNlcyBhcmUgcnVubmluZyBjb25jdXJyZW50bHkuCisJICAgIHRlc3QgLWQgIiRwcmVmaXgiIHx8IGV4aXQgMQorCSAgZWxzZQorCSAgICBjYXNlICRwcmVmaXggaW4KKwkgICAgICAqXCcqKSBxcHJlZml4PWBlY2hvICIkcHJlZml4IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7CisJICAgICAgKikgcXByZWZpeD0kcHJlZml4OzsKKwkgICAgZXNhYworCSAgICBwcmVmaXhlcz0iJHByZWZpeGVzICckcXByZWZpeCciCisJICBmaQogCWZpCisJcHJlZml4PSRwcmVmaXgvCisgICAgICBkb25lCiAKLSMgTWFrZSBhIHRlbXAgZmlsZSBuYW1lIGluIHRoZSBwcm9wZXIgZGlyZWN0b3J5LgorICAgICAgaWYgdGVzdCAtbiAiJHByZWZpeGVzIjsgdGhlbgorCSMgRG9uJ3QgZmFpbCBpZiB0d28gaW5zdGFuY2VzIGFyZSBydW5uaW5nIGNvbmN1cnJlbnRseS4KKwkodW1hc2sgJG1rZGlyX3VtYXNrICYmCisJIGV2YWwgIlwkZG9pdF9leGVjIFwkbWtkaXJwcm9nICRwcmVmaXhlcyIpIHx8CisJICB0ZXN0IC1kICIkZHN0ZGlyIiB8fCBleGl0IDEKKwlvYnNvbGV0ZV9ta2Rpcl91c2VkPXRydWUKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKIAotCWRzdHRtcD0kZHN0ZGlyLyNpbnN0LiQkIworICBpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KKyAgICB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIkZHN0IjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hncnBjbWQgIiRkc3QiOyB9ICYmCisgICAgeyB0ZXN0ICIkb2Jzb2xldGVfbWtkaXJfdXNlZCRjaG93bmNtZCRjaGdycGNtZCIgPSBmYWxzZSB8fAorICAgICAgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgJG1vZGUgIiRkc3QiOyB9IHx8IGV4aXQgMQorICBlbHNlCiAKLSMgTW92ZSBvciBjb3B5IHRoZSBmaWxlIG5hbWUgdG8gdGhlIHRlbXAgbmFtZQorICAgICMgTWFrZSBhIGNvdXBsZSBvZiB0ZW1wIGZpbGUgbmFtZXMgaW4gdGhlIHByb3BlciBkaXJlY3RvcnkuCisgICAgZHN0dG1wPSRkc3RkaXIvX2luc3QuJCRfCisgICAgcm10bXA9JGRzdGRpci9fcm0uJCRfCiAKLQkkZG9pdCAkaW5zdGNtZCAkc3JjICRkc3R0bXAgJiYKKyAgICAjIFRyYXAgdG8gY2xlYW4gdXAgdGhvc2UgdGVtcCBmaWxlcyBhdCBleGl0LgorICAgIHRyYXAgJ3JldD0kPzsgcm0gLWYgIiRkc3R0bXAiICIkcm10bXAiICYmIGV4aXQgJHJldCcgMAogCi0JdHJhcCAicm0gLWYgJHtkc3R0bXB9IiAwICYmCisgICAgIyBDb3B5IHRoZSBmaWxlIG5hbWUgdG8gdGhlIHRlbXAgbmFtZS4KKyAgICAodW1hc2sgJGNwX3VtYXNrICYmICRkb2l0X2V4ZWMgJGNwcHJvZyAiJHNyYyIgIiRkc3R0bXAiKSAmJgogCi0jIGFuZCBzZXQgYW55IG9wdGlvbnM7IGRvIGNobW9kIGxhc3QgdG8gcHJlc2VydmUgc2V0dWlkIGJpdHMKKyAgICAjIGFuZCBzZXQgYW55IG9wdGlvbnM7IGRvIGNobW9kIGxhc3QgdG8gcHJlc2VydmUgc2V0dWlkIGJpdHMuCisgICAgIworICAgICMgSWYgYW55IG9mIHRoZXNlIGZhaWwsIHdlIGFib3J0IHRoZSB3aG9sZSB0aGluZy4gIElmIHdlIHdhbnQgdG8KKyAgICAjIGlnbm9yZSBlcnJvcnMgZnJvbSBhbnkgb2YgdGhlc2UsIGp1c3QgbWFrZSBzdXJlIG5vdCB0byBpZ25vcmUKKyAgICAjIGVycm9ycyBmcm9tIHRoZSBhYm92ZSAiJGRvaXQgJGNwcHJvZyAkc3JjICRkc3R0bXAiIGNvbW1hbmQuCisgICAgIworICAgIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRzdHJpcGNtZCIgfHwgJGRvaXQgJHN0cmlwY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgJG1vZGUgIiRkc3R0bXAiOyB9ICYmCiAKLSMgSWYgYW55IG9mIHRoZXNlIGZhaWwsIHdlIGFib3J0IHRoZSB3aG9sZSB0aGluZy4gIElmIHdlIHdhbnQgdG8KLSMgaWdub3JlIGVycm9ycyBmcm9tIGFueSBvZiB0aGVzZSwganVzdCBtYWtlIHN1cmUgbm90IHRvIGlnbm9yZQotIyBlcnJvcnMgZnJvbSB0aGUgYWJvdmUgIiRkb2l0ICRpbnN0Y21kICRzcmMgJGRzdHRtcCIgY29tbWFuZC4KKyAgICAjIElmIC1DLCBkb24ndCBib3RoZXIgdG8gY29weSBpZiBpdCB3b3VsZG4ndCBjaGFuZ2UgdGhlIGZpbGUuCisgICAgaWYgJGNvcHlfb25fY2hhbmdlICYmCisgICAgICAgb2xkPWBMQ19BTEw9QyBscyAtZGxMICIkZHN0IgkyPi9kZXYvbnVsbGAgJiYKKyAgICAgICBuZXc9YExDX0FMTD1DIGxzIC1kbEwgIiRkc3R0bXAiCTI+L2Rldi9udWxsYCAmJgogCi0JaWYgWyB4IiRjaG93bmNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaG93bmNtZCAkZHN0dG1wOyBlbHNlIHRydWU7ZmkgJiYKLQlpZiBbIHgiJGNoZ3JwY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJGNoZ3JwY21kICRkc3R0bXA7IGVsc2UgdHJ1ZTtmaSAmJgotCWlmIFsgeCIkc3RyaXBjbWQiICE9IHggXTsgdGhlbiAkZG9pdCAkc3RyaXBjbWQgJGRzdHRtcDsgZWxzZSB0cnVlO2ZpICYmCi0JaWYgWyB4IiRjaG1vZGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaG1vZGNtZCAkZHN0dG1wOyBlbHNlIHRydWU7ZmkgJiYKKyAgICAgICBldmFsICIkaW5pdGlhbGl6ZV9wb3NpeF9nbG9iIiAmJgorICAgICAgICRwb3NpeF9nbG9iIHNldCAtZiAmJgorICAgICAgIHNldCBYICRvbGQgJiYgb2xkPTokMjokNDokNTokNiAmJgorICAgICAgIHNldCBYICRuZXcgJiYgbmV3PTokMjokNDokNTokNiAmJgorICAgICAgICRwb3NpeF9nbG9iIHNldCArZiAmJgogCi0jIE5vdyByZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCisgICAgICAgdGVzdCAiJG9sZCIgPSAiJG5ldyIgJiYKKyAgICAgICAkY21wcHJvZyAiJGRzdCIgIiRkc3R0bXAiID4vZGV2L251bGwgMj4mMQorICAgIHRoZW4KKyAgICAgIHJtIC1mICIkZHN0dG1wIgorICAgIGVsc2UKKyAgICAgICMgUmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgorICAgICAgJGRvaXQgJG12Y21kIC1mICIkZHN0dG1wIiAiJGRzdCIgMj4vZGV2L251bGwgfHwKIAotCSRkb2l0ICRybWNtZCAtZiAkZHN0ZGlyLyRkc3RmaWxlICYmCi0JJGRvaXQgJG12Y21kICRkc3R0bXAgJGRzdGRpci8kZHN0ZmlsZSAKKyAgICAgICMgVGhlIHJlbmFtZSBmYWlsZWQsIHBlcmhhcHMgYmVjYXVzZSBtdiBjYW4ndCByZW5hbWUgc29tZXRoaW5nIGVsc2UKKyAgICAgICMgdG8gaXRzZWxmLCBvciBwZXJoYXBzIGJlY2F1c2UgbXYgaXMgc28gYW5jaWVudCB0aGF0IGl0IGRvZXMgbm90CisgICAgICAjIHN1cHBvcnQgLWYuCisgICAgICB7CisJIyBOb3cgcmVtb3ZlIG9yIG1vdmUgYXNpZGUgYW55IG9sZCBmaWxlIGF0IGRlc3RpbmF0aW9uIGxvY2F0aW9uLgorCSMgV2UgdHJ5IHRoaXMgdHdvIHdheXMgc2luY2Ugcm0gY2FuJ3QgdW5saW5rIGl0c2VsZiBvbiBzb21lCisJIyBzeXN0ZW1zIGFuZCB0aGUgZGVzdGluYXRpb24gZmlsZSBtaWdodCBiZSBidXN5IGZvciBvdGhlcgorCSMgcmVhc29ucy4gIEluIHRoaXMgY2FzZSwgdGhlIGZpbmFsIGNsZWFudXAgbWlnaHQgZmFpbCBidXQgdGhlIG5ldworCSMgZmlsZSBzaG91bGQgc3RpbGwgaW5zdGFsbCBzdWNjZXNzZnVsbHkuCisJeworCSAgdGVzdCAhIC1mICIkZHN0IiB8fAorCSAgJGRvaXQgJHJtY21kIC1mICIkZHN0IiAyPi9kZXYvbnVsbCB8fAorCSAgeyAkZG9pdCAkbXZjbWQgLWYgIiRkc3QiICIkcm10bXAiIDI+L2Rldi9udWxsICYmCisJICAgIHsgJGRvaXQgJHJtY21kIC1mICIkcm10bXAiIDI+L2Rldi9udWxsOyA6OyB9CisJICB9IHx8CisJICB7IGVjaG8gIiQwOiBjYW5ub3QgdW5saW5rIG9yIHJlbmFtZSAkZHN0IiA+JjIKKwkgICAgKGV4aXQgMSk7IGV4aXQgMQorCSAgfQorCX0gJiYKIAotZmkgJiYKKwkjIE5vdyByZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCisJJGRvaXQgJG12Y21kICIkZHN0dG1wIiAiJGRzdCIKKyAgICAgIH0KKyAgICBmaSB8fCBleGl0IDEKIAorICAgIHRyYXAgJycgMAorICBmaQorZG9uZQogCi1leGl0IDAKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCisjIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvbG9jYWwvTWFrZWZpbGUuaW4gYi9sb2NhbC9NYWtlZmlsZS5pbgppbmRleCA4MjNiNjZjLi42ZDVjYmUwIDEwMDY0NAotLS0gYS9sb2NhbC9NYWtlZmlsZS5pbgorKysgYi9sb2NhbC9NYWtlZmlsZS5pbgpAQCAtMjgsNyArMjgsOCBAQAogCW1pYjJjLmNoZWNrX3ZhbHVlcy5jb25mIG1pYjJjLmNoZWNrX3ZhbHVlc19sb2NhbC5jb25mIFwKIAltaWIyYy5hY2Nlc3NfZnVuY3Rpb25zLmNvbmYgbWliMmMubm90aWZ5LmNvbmYgXAogCW1pYjJjLmludF93YXRjaC5jb25mIG1pYjJjLmdlbmh0bWwuY29uZiBcCi0JbWliMmMudGFibGVfZGF0YS5jb25mIG1pYjJjLmNvbnRhaW5lci5jb25mIG1pYjJjLnBlcmwuY29uZgorCW1pYjJjLnJhdy10YWJsZS5jb25mIG1pYjJjLnRhYmxlX2RhdGEuY29uZiBcCisJbWliMmMuY29udGFpbmVyLmNvbmYgbWliMmMucGVybC5jb25mCiBNSUIyQ0lOU1RBTExESVI9JChzbm1wbGliZGlyKS9taWIyYy1kYXRhCiBNSUIyQ0RBVEFTUkM9bWliMmMtY29uZi5kCiBNSUIyQ0ZJTEVTPWRlZmF1bHQtbWZkLXRvcC5tMmMgZGV0YWlscy1lbnVtcy5tMmkgZGV0YWlscy1ub2RlLm0yaSBcCmRpZmYgLS1naXQgYS9sb2NhbC9WZXJzaW9uLU11bmdlLnBsIGIvbG9jYWwvVmVyc2lvbi1NdW5nZS5wbAppbmRleCBmZGU1OTM5Li4yNDljZmVjIDEwMDc1NQotLS0gYS9sb2NhbC9WZXJzaW9uLU11bmdlLnBsCisrKyBiL2xvY2FsL1ZlcnNpb24tTXVuZ2UucGwKQEAgLTMzLDEyICszMyw2IEBACiB9CiAKIG15IEBleHBycyA9ICgKLQkgICAgICMgYyBmaWxlcyB3aXRoIGEgZXF1YWwgc2lnbiBhbmQgYSBzcGVjaWZpYyB2YXJpYWJsZQotCSAgICAgeyB0eXBlID0+ICdjJywKLQkgICAgICAgZXhwciA9PiAnVmVyc2lvbkluZm8oXHMqPVxzKlteIl0qKSIoLiopIicsCi0JICAgICAgIHJlcGwgPT4gJ1ZlcnNpb25JbmZvJDEiJFZFUlNJT04iJywgCi0JICAgICAgIGZpbGVzID0+IFtxdyhzbm1wbGliL3NubXBfdmVyc2lvbi5jKV19LAotCiAJICAgICAjIGRvY3VtZW50YXRpb24gZmlsZXMKIAkgICAgIHsgdHlwZSA9PiAnZG9jcycsCiAJICAgICAgIGV4cHIgPT4gJ1ZlcnNpb246IFtcLjAtOWEtekEtWl0rJywKQEAgLTQ3LDEyICs0MSw2IEBACiAJICAgICAgIG5vdF9yZXF1aXJlZCA9PiB7J2Rpc3QvbmV0LXNubXAuc3BlYycgPT4gMX0KIAkgICAgIH0sCiAKLQkgICAgICMgc2VkIGZpbGVzCi0JICAgICB7IHR5cGUgPT4gJ3NlZCcsCi0JICAgICAgIGV4cHIgPT4gJ15zXC9WRVJTSU9OSU5GT1wvW15cL10qJywKLQkgICAgICAgcmVwbCA9PiAnc1wvVkVSU0lPTklORk9cLyRWRVJTSU9OJywKLQkgICAgICAgZmlsZXMgPT4gW3F3KHNlZHNjcmlwdC5pbildfSwKLQogCSAgICAgIyBNYWtlZmlsZXMKIAkgICAgIHsgdHlwZSA9PiAnTWFrZWZpbGUnLAogCSAgICAgICBleHByID0+ICdWRVJTSU9OID0gW1wuMC05YS16QS1aXSsnLApAQCAtNjEsMTMgKzQ5LDYgQEAKIAkgICAgICAgbm90X3JlcXVpcmVkID0+IHsnZGlzdC9NYWtlZmlsZScgPT4gMX0KIAkgICAgIH0sCiAKLQkgICAgICMgRG94eWdlbiBjb25maWcKLQkgICAgIHsgdHlwZSA9PiAnZG94eWdlbicsCi0JICAgICAgIGV4cHIgPT4gJ1BST0pFQ1RfTlVNQkVSKFxzKyk9KFxzKylcJyguKilcJycsCi0JICAgICAgIHJlcGwgPT4gJ1BST0pFQ1RfTlVNQkVSJDE9JDJcJyRWRVJTSU9OXCcnLAotCSAgICAgICBmaWxlcyA9PiBbcXcoZG94eWdlbi5jb25mKV0KLQkgICAgIH0sCi0KIAkgICAgICMgcGVybCBmaWxlcwogCSAgICAgeyB0eXBlID0+ICdwZXJsJywKIAkgICAgICAgZXhwciA9PiAnVkVSU0lPTiA9IFwnKC4qKVwnJywKQEAgLTk1LDEyICs3Niw2IEBACiAJICAgICAgIGV4ZmlsZXMgPT4gW3F3KGNvbmZpZ3VyZSldLAogCSAgICAgfSwKIAotCSAgICAgIyBjb25maWd1cmUgc2NyaXB0IGZpbGVzCi0JICAgICB7IHR5cGUgPT4gJ2RveHlnZW4nLAotCSAgICAgICBleHByID0+ICdQUk9KRUNUX05VTUJFUlxzKj0gKC4qKScsCi0JICAgICAgIHJlcGwgPT4gJ1BST0pFQ1RfTlVNQkVSICAgICAgICAgPSAkVkVSU0lPTicsCi0JICAgICAgIGZpbGVzID0+IFtxdyhkb3h5Z2VuLmNvbmYpXSwKLQkgICAgIH0sCiAJICAgICk7CiAKICMKZGlmZiAtLWdpdCBhL2xvY2FsL2h0bWwtYWRkLWhlYWRlci1mb290ZXIucGwgYi9sb2NhbC9odG1sLWFkZC1oZWFkZXItZm9vdGVyLnBsCmluZGV4IDk2ZTQ2YTUuLmMzY2I5MDIgMTAwNzU1Ci0tLSBhL2xvY2FsL2h0bWwtYWRkLWhlYWRlci1mb290ZXIucGwKKysrIGIvbG9jYWwvaHRtbC1hZGQtaGVhZGVyLWZvb3Rlci5wbApAQCAtMjEsNyArMjEsNyBAQAogdXNlIEZpbGU6OnN0YXQ7CiB1c2UgR2V0b3B0OjpMb25nOwogCi1teSAkdGlkeV9vcHRpb25zID0gJy1mIC9kZXYvbnVsbCAtbSAtaSAtYXN4aHRtbCAtd3JhcCAxMzAgLXF1aWV0JzsKK215ICR0aWR5X29wdGlvbnMgPSAnLWYgL2Rldi9udWxsIC1tIC1pIC1hc3hodG1sIC13cmFwIDEzMCAtcXVpZXQgLS1xdW90ZS1uYnNwIG4nOwogCiBteSAkcGF0dGVybiA9ICcnOwogbXkgJHNlY3Rpb24gPSAnJzsKZGlmZiAtLWdpdCBhL2xvY2FsL2h0bWwtdGV4dGZpbGUtZml4LnBsIGIvbG9jYWwvaHRtbC10ZXh0ZmlsZS1maXgucGwKaW5kZXggZjk0MTE5Ny4uYjcyMDc1YiAxMDA3NTUKLS0tIGEvbG9jYWwvaHRtbC10ZXh0ZmlsZS1maXgucGwKKysrIGIvbG9jYWwvaHRtbC10ZXh0ZmlsZS1maXgucGwKQEAgLTgsNiArOCw3IEBACiAjIERhdGU6ICAgICAgICAgICBEZWNlbWJlciAyOXRoLCAyMDA1CiAjIAogQGZpbGVzID0gcXciCitDSEFOR0VTCiBFUlJBVEEKIElOU1RBTEwKIE5FV1MKQEAgLTE3LDYgKzE4LDcgQEAKIFJFQURNRS5hZ2VudHgKIFJFQURNRS5haXgKIFJFQURNRS5ocHV4MTEKK1JFQURNRS5pcml4CiBSRUFETUUua3JiNQogUkVBRE1FLm1pYjJjCiBSRUFETUUubWlicwpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy10by1vaWQubTJpIGIvbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy10by1vaWQubTJpCmluZGV4IGIyYWEwNzcuLmMxN2RlNGMgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXRhYmxlLWluZGV4ZXMtdG8tb2lkLm0yaQorKysgYi9sb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1pbmRleGVzLXRvLW9pZC5tMmkKQEAgLTI0LDExICsyNCwxMCBAQAogQCAgICAgICAgaW5jbHVkZSBtMmNfc2V0dXBfbm9kZS5tMmlACiAgICAgICAgIC8qICRtMmNfbm9kZV9zdW1tYXJ5ICovCiBAICAgICAgICBpZiAkbTJjX25vZGVfbmVlZGxlbmd0aCA9PSAxQAotICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyXyRub2RlLCAodV9jaGFyKikmbWliX2lkeC0+JG5vZGUsCisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKCZ2YXJfJG5vZGUsICZtaWJfaWR4LT4kbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeC0+JHtub2RlfV9sZW4gKiBzaXplb2YobWliX2lkeC0+JHtub2RlfVswXSkpOwogQCAgICAgICAgZWxzZUAKLSAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl8kbm9kZSwgKHVfY2hhciopJm1pYl9pZHgtPiRub2RlLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+JG5vZGUpKTsKKyAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl8kbm9kZSwgJm1pYl9pZHgtPiRub2RlLCBzaXplb2YobWliX2lkeC0+JG5vZGUpKTsKIEAgICAgICAgIGVuZEAKIAogQCAgICBlbmRAICMgZm9yIGVhY2ggY29sdW1uCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmMgYi9sb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmMKaW5kZXggN2VjYTMwOC4uYTdkMTg5MiAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjCisrKyBiL2xvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJmYWNlLm0yYwpAQCAtMjE1LDE0ICsyMTUsNyBAQAogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfJHtjb250ZXh0fV9jaGVja19kZXBlbmRlbmNpZXM7CiBAICAgICAgZW5kQAogCi1ORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50IF8ke2NvbnRleHR9X3VuZG9fY29sdW1uKCAke2NvbnRleHR9X3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwgaW50IGNvbHVtbiApOwotCiBAICAgZW5kQCAjIHdyaXRhYmxlCi1AaWYgKCRtMmNfdGFibGVfcGVyc2lzdGVudCA9PSAxKSB8fCAoJG0yY190YWJsZV9yb3dfY3JlYXRpb24gPT0gMSlACi1ORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50IF8ke2NvbnRleHR9X2NoZWNrX2luZGV4ZXMoJHtjb250ZXh0fV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7Ci0KLUBlbmRACiBAICAgaWYgKCIkbTJjX2RhdGFfY29udGV4dCIgZXEgImdlbmVyYXRlZCIpICYmICgoJG0yY191bmRvX2VtYmVkID09IDApIHx8ICgkbTJjX2RhdGFfYWxsb2NhdGUgPT0gMSkpQAogJHtjb250ZXh0fV9kYXRhICoke2NvbnRleHR9X2FsbG9jYXRlX2RhdGEodm9pZCk7CiAKQEAgLTY2MSw2ICs2NTQsNTEgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMKIEBpZiAoJG0yY190YWJsZV9yb3dfY3JlYXRpb24gPT0gMSkgfHwgKCRtMmNfdGFibGVfcGVyc2lzdGVudCA9PSAxKUAKK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK18ke2NvbnRleHR9X2NoZWNrX2luZGV4ZXMoJHtjb250ZXh0fV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gU05NUEVSUl9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOiR7Y29udGV4dH06XyR7Y29udGV4dH1fY2hlY2tfaW5kZXhlcyIsImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworIyMKK0BpZiAkbTJjX3RhYmxlX2V4dGVybmFsX2luZGV4ZXMgIT0gMEAKKyAgICAvKgorICAgICAqIGNoZWNrIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgRVhURVJOQUwgcm93IGV4aXN0cworICAgICAqLworQCAgIGZvcmVhY2ggJG5vZGUgZXh0ZXJuYWxpbmRleEAKK0AgICAgICBpbmNsdWRlIG0yY19zZXR1cF9ub2RlLm0yaUAKKworICAgIC8qIChJTkRFWCkgJG0yY19ub2RlX3N1bW1hcnkgKi8KKyAgICByYyA9ICR7Y29udGV4dH1fJHtub2RlfV9jaGVja19pbmRleCggcm93cmVxX2N0eCApOworICAgIGlmKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9DUkVBVElPTjsKK0AgICBlbmRAICMgZm9yIGVhY2ggbm9uaW5kZXgKKworQGVuZEAgIyBleHRlcm5hbCBpbmRleAorQCAgIGZvcmVhY2ggJG5vZGUgaW50ZXJuYWxpbmRleEAKK0AgICAgICBpbmNsdWRlIG0yY19zZXR1cF9ub2RlLm0yaUAKKworICAgIC8qIChJTkRFWCkgJG0yY19ub2RlX3N1bW1hcnkgKi8KK0AgICBldmFsICRtMmNfbnZfdmFsID0gInJvd3JlcV9jdHgtPnRibF9pZHguJG5vZGUiQAorQCAgIGV2YWwgJG0yY19udl9sZW4gPSAicm93cmVxX2N0eC0+dGJsX2lkeC4ke25vZGV9X2xlbiJACitAICAgZXZhbCAkbTJjX252X3N0ciA9ICJyb3dyZXFfY3R4LT50YmxfaWR4LiRub2RlIkAKK0AgICBpbmNsdWRlIG5vZGUtdmFsaWRhdGUubTJpQAorICAgICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKKyAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgIHJjID0gJHtub2RlfV9jaGVja19pbmRleCggcm93cmVxX2N0eCApOworICAgICAgIGlmKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9DUkVBVElPTjsKK0AgICBlbmRAICMgZm9yIGVhY2ggaW50ZXJuYWxpbmRleAorCisgICAgLyoKKyAgICAgKiBpZiBpbmRpdmlkdWFsIHBhcnRzIGxvb2sgb2ssIGNoZWNrIHRoZW0gYXMgYSB3aG9sZQorICAgICAqLworICAgIHJldHVybiAke2NvbnRleHR9X3ZhbGlkYXRlX2luZGV4KCAke2NvbnRleHR9X2lmX2N0eC51c2VyX2N0eCwgcm93cmVxX2N0eCApOworfSAvKiBfJHtjb250ZXh0fV9jaGVja19pbmRleGVzICovCisjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8qKgogICogQGludGVybmFsCiAgKiB3cmFwcGVyCkBAIC05NzUsNTQgKzEwMTMsNiBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAvKiBfbWZkXyR7Y29udGV4dH1fZ2V0X3ZhbHVlcyAqLwogCi0jIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUBpZiAoJG0yY190YWJsZV9yb3dfY3JlYXRpb24gPT0gMSkgfHwgKCRtMmNfdGFibGVfcGVyc2lzdGVudCA9PSAxKUAKLU5FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKLV8ke2NvbnRleHR9X2NoZWNrX2luZGV4ZXMoJHtjb250ZXh0fV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKLXsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gU05NUEVSUl9TVUNDRVNTOwotCi0gICAgREVCVUdNU0dUTCgoImludGVybmFsOiR7Y29udGV4dH06XyR7Y29udGV4dH1fY2hlY2tfaW5kZXhlcyIsImNhbGxlZFxuIikpOwotCi0gICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKLQotIyMKLUBpZiAkbTJjX3RhYmxlX2V4dGVybmFsX2luZGV4ZXMgIT0gMEAKLSAgICAvKgotICAgICAqIGNoZWNrIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgRVhURVJOQUwgcm93IGV4aXN0cwotICAgICAqLwotQCAgIGZvcmVhY2ggJG5vZGUgZXh0ZXJuYWxpbmRleEAKLUAgICAgICBpbmNsdWRlIG0yY19zZXR1cF9ub2RlLm0yaUAKLQotICAgIC8qIChJTkRFWCkgJG0yY19ub2RlX3N1bW1hcnkgKi8KLSAgICByYyA9ICR7Y29udGV4dH1fJHtub2RlfV9jaGVja19pbmRleCggcm93cmVxX2N0eCApOwotICAgIGlmKE1GRF9TVUNDRVNTICE9IHJjKQotICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9DUkVBVElPTjsKLUAgICBlbmRAICMgZm9yIGVhY2ggbm9uaW5kZXgKLQotQGVuZEAgIyBleHRlcm5hbCBpbmRleAotQCAgIGZvcmVhY2ggJG5vZGUgaW50ZXJuYWxpbmRleEAKLUAgICAgICBpbmNsdWRlIG0yY19zZXR1cF9ub2RlLm0yaUAKLQotICAgIC8qIChJTkRFWCkgJG0yY19ub2RlX3N1bW1hcnkgKi8KLUAgICBldmFsICRtMmNfbnZfdmFsID0gInJvd3JlcV9jdHgtPnRibF9pZHguJG5vZGUiQAotQCAgIGV2YWwgJG0yY19udl9sZW4gPSAicm93cmVxX2N0eC0+dGJsX2lkeC4ke25vZGV9X2xlbiJACi1AICAgZXZhbCAkbTJjX252X3N0ciA9ICJyb3dyZXFfY3R4LT50YmxfaWR4LiRub2RlIkAKLUAgICBpbmNsdWRlIG5vZGUtdmFsaWRhdGUubTJpQAotICAgICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKLSAgICAgICAgICByZXR1cm4gcmM7Ci0gICAgICAgIHJjID0gJHtub2RlfV9jaGVja19pbmRleCggcm93cmVxX2N0eCApOwotICAgICAgIGlmKE1GRF9TVUNDRVNTICE9IHJjKQotICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9DUkVBVElPTjsKLUAgICBlbmRAICMgZm9yIGVhY2ggaW50ZXJuYWxpbmRleAotCi0gICAgLyoKLSAgICAgKiBpZiBpbmRpdmlkdWFsIHBhcnRzIGxvb2sgb2ssIGNoZWNrIHRoZW0gYXMgYSB3aG9sZQotICAgICAqLwotICAgIHJldHVybiAke2NvbnRleHR9X3ZhbGlkYXRlX2luZGV4KCAke2NvbnRleHR9X2lmX2N0eC51c2VyX2N0eCwgcm93cmVxX2N0eCApOwotfSAvKiBfJHtjb250ZXh0fV9jaGVja19pbmRleGVzICovCi1AZW5kQCAjICRtMmNfdGFibGVfcm93X2NyZWF0aW9uCi0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMtY29uZi5kL21mZC10b3AubTJjIGIvbG9jYWwvbWliMmMtY29uZi5kL21mZC10b3AubTJjCmluZGV4IDEyY2Y5ZGQuLmRiMGYzOTggMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLWNvbmYuZC9tZmQtdG9wLm0yYworKysgYi9sb2NhbC9taWIyYy1jb25mLmQvbWZkLXRvcC5tMmMKQEAgLTI1Miw4ICsyNTIsOCBAQAogaW50ICR7Y29udGV4dH1fcm93X3JlZl9kZWNyZW1lbnQoJHtjb250ZXh0fV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4KTsKIAogQCAgIGVuZEAKLWV4dGVybiBvaWQgJHtjb250ZXh0fV9vaWRbXTsKLWV4dGVybiBpbnQgJHtjb250ZXh0fV9vaWRfc2l6ZTsKK2V4dGVybiBjb25zdCBvaWQgJHtjb250ZXh0fV9vaWRbXTsKK2V4dGVybiBjb25zdCBpbnQgJHtjb250ZXh0fV9vaWRfc2l6ZTsKIAogQGVuZEAgIyBmb3IgZWFjaAogCkBAIC0zMDksOCArMzA5LDggQEAKIAogQGZvcmVhY2ggJHRhYmxlIHRhYmxlQAogQCAgICBpbmNsdWRlIG0yY19zZXR1cF90YWJsZS5tMmlACi1vaWQgJHtjb250ZXh0fV9vaWRbXSA9IHsgJGNvbnRleHQudWNfT0lEIH07Ci1pbnQgJHtjb250ZXh0fV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoJHtjb250ZXh0fV9vaWQpOworY29uc3Qgb2lkICR7Y29udGV4dH1fb2lkW10gPSB7ICRjb250ZXh0LnVjX09JRCB9OworY29uc3QgaW50ICR7Y29udGV4dH1fb2lkX3NpemUgPSBPSURfTEVOR1RIKCR7Y29udGV4dH1fb2lkKTsKIAogQCAgICBpZiAieCRtMmNfY29udGV4dF9yZWciIG5lICJ4IkAKICAgICAke2NvbnRleHR9X3JlZ2lzdHJhdGlvbiAgJHtjb250ZXh0fV91c2VyX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy11cGRhdGUgYi9sb2NhbC9taWIyYy11cGRhdGUKaW5kZXggNjY5YTc0NS4uMjIzZWM2MyAxMDA3NTUKLS0tIGEvbG9jYWwvbWliMmMtdXBkYXRlCisrKyBiL2xvY2FsL21pYjJjLXVwZGF0ZQpAQCAtMSw0ICsxLDQgQEAKLSMhL2Jpbi9iYXNoCisjIS9iaW4vc2gKICMKICMgJElkJAogIwpAQCAtMzksNyArMzksNyBAQAogCiBlcnJvcigpCiB7Ci0gICAgZWNobyAiRVJST1I6ICRAIiA+IC9kZXYvc3RkZXJyCisgICAgZWNobyAiRVJST1I6ICRAIiA+MgogfQogCiBkaWUoKQpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuYWNjZXNzX2Z1bmN0aW9ucy5jb25mIGIvbG9jYWwvbWliMmMuYWNjZXNzX2Z1bmN0aW9ucy5jb25mCmluZGV4IDgzM2E4NTcuLmMyMDliMjkgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLmFjY2Vzc19mdW5jdGlvbnMuY29uZgorKysgYi9sb2NhbC9taWIyYy5hY2Nlc3NfZnVuY3Rpb25zLmNvbmYKQEAgLTc5LDcgKzc5LDcgQEAKICAgICB2cHRyID0gcHV0X2luZGV4X2RhdGE7CiAgICAgCiAgICAgQGZvcmVhY2ggJGlkeCBpbmRleEAKLSAgICBzbm1wX3NldF92YXJfdmFsdWUodnB0ciwgKHVfY2hhciAqKSAvKiogWFhYOiAkaWR4IGRhdGEgKi8sIC8qKiBYWFg6IGxlbmd0aCBvZiAkaWR4IGRhdGEgKi8pOworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSh2cHRyLCAvKiogWFhYOiAkaWR4IGRhdGEgKi8sIC8qKiBYWFg6IGxlbmd0aCBvZiAkaWR4IGRhdGEgKi8pOwogICAgIHZwdHIgPSB2cHRyLT5uZXh0X3ZhcmlhYmxlOwogICAgIEBlbmRACiAKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgIHZwdHIgPSBwdXRfaW5kZXhfZGF0YTsKICAgICAKICAgICBAZm9yZWFjaCAkaWR4IGluZGV4QAotICAgIHNubXBfc2V0X3Zhcl92YWx1ZSh2cHRyLCAodV9jaGFyICopIC8qKiBYWFg6ICRpZHggZGF0YSAqLywgLyoqIFhYWDogbGVuZ3RoIG9mICRpZHggZGF0YSAqLyk7CisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKHZwdHIsIC8qKiBYWFg6ICRpZHggZGF0YSAqLywgLyoqIFhYWDogbGVuZ3RoIG9mICRpZHggZGF0YSAqLyk7CiAgICAgdnB0ciA9IHZwdHItPm5leHRfdmFyaWFibGU7CiAgICAgQGVuZEAKIApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mIGIvbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mCmluZGV4IGQzZTAyNmUuLjMxNTU5YWMgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZgorKysgYi9sb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmYKQEAgLTEzNiw4ICsxMzYsOCBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIG9pZCBkZWNsYXJhdGlvbnMKICAqLwotZXh0ZXJuIG9pZCAke2l9X29pZFtdOwotZXh0ZXJuIHNpemVfdCAke2l9X29pZF9sZW47CitleHRlcm4gY29uc3Qgb2lkICR7aX1fb2lkW107CitleHRlcm4gY29uc3Qgc2l6ZV90ICR7aX1fb2lkX2xlbjsKIAogI2RlZmluZSAke2l9X1RBQkxFX09JRCAkaS5jb21tYW9pZAogICAgIApAQCAtMjYxLDggKzI2MSw4IEBACiBzdGF0aWMgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15X2hhbmRsZXIgPSBOVUxMOwogc3RhdGljICAgICBuZXRzbm1wX3RhYmxlX2FycmF5X2NhbGxiYWNrcyBjYjsKIAotb2lkICR7aX1fb2lkW10gPSB7ICR7aX1fVEFCTEVfT0lEIH07Ci1zaXplX3QgJHtpfV9vaWRfbGVuID0gT0lEX0xFTkdUSCgke2l9X29pZCk7Citjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHsgJHtpfV9UQUJMRV9PSUQgfTsKK2NvbnN0IHNpemVfdCAke2l9X29pZF9sZW4gPSBPSURfTEVOR1RIKCR7aX1fb2lkKTsKIAogCiAjaWZkZWYgJHtpfV9DVVNUT01fU09SVApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuY29udGFpbmVyLmNvbmYgYi9sb2NhbC9taWIyYy5jb250YWluZXIuY29uZgppbmRleCAyNjZmMDA3Li5lNzY2MjFmIDEwMDY0NAotLS0gYS9sb2NhbC9taWIyYy5jb250YWluZXIuY29uZgorKysgYi9sb2NhbC9taWIyYy5jb250YWluZXIuY29uZgpAQCAtMSw0ICsxLDcgQEAKICMjIC0qLSBjIC0qLQorIyMgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyIENvcHlyaWdodCAoQykgQXBwbGUsIEluYy4KKyMjIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyMjIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBEbyB0aGUgLmggZmlsZQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMzYsOCArMzksMTUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaD4KICNpbmNsdWRlICIke25hbWV9LmgiCiAKKyNpZmRlZiAke2kudWN9X1VTRV9DQUNIRQorc3RhdGljIHZvaWQgX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYyk7CitzdGF0aWMgaW50IF9jYWNoZV9sb2FkKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqdm1hZ2ljKTsKKyNlbmRpZgorCiAvKiogSW5pdGlhbGl6ZXMgdGhlICRuYW1lIG1vZHVsZSAqLwogdm9pZAogaW5pdF8kbmFtZSh2b2lkKQpAQCAtNDcsOSArNTcsOSBAQAogICAgIGluaXRpYWxpemVfdGFibGVfJGkoKTsKICAgQGVuZEAKIH0KLQorIyMKIEBmb3JlYWNoICRpIHRhYmxlQAotICAjIERldGVybWluZSB0aGUgZmlyc3QvbGFzdCBjb2x1bW4gbmFtZXMKKyMjIERldGVybWluZSB0aGUgZmlyc3QvbGFzdCBjb2x1bW4gbmFtZXMKICAgQGV2YWwgJGZpcnN0X2NvbHVtbiA9ICItIkAKICAgQGV2YWwgJGxhc3RfY29sdW1uID0gIi0iQAogICBAZm9yZWFjaCAkYyBjb2x1bW5ACkBAIC02NSwxMiArNzUsMTggQEAKIHZvaWQKIGluaXRpYWxpemVfdGFibGVfJGkodm9pZCkKIHsKLSAgICBzdGF0aWMgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OwotICAgIHNpemVfdCAke2l9X29pZF9sZW4gICA9IE9JRF9MRU5HVEgoJHtpfV9vaWQpOwotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKLSAgICBuZXRzbm1wX2NvbnRhaW5lciAgICAgICAgICAgICAgICpjb250YWluZXI7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKyAgICBjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07CisgICAgY29uc3Qgc2l6ZV90ICR7aX1fb2lkX2xlbiAgID0gT0lEX0xFTkdUSCgke2l9X29pZCk7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnID0gTlVMTDsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICAgICAgICAgICAgICpoYW5kbGVyID0gTlVMTDsKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAgICAgICAgICAgICAgICpjb250YWluZXIgPSBOVUxMOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOworI2lmZGVmICR7aS51Y31fVVNFX0NBQ0hFCisgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlID0gTlVMTDsKKyNlbmRpZgogCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aW5pdCIsICJpbml0aWFsaXppbmcgdGFibGUgJGlcbiIpKTsKKyAgICAKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgIiRpIiwgICAgICR7aX1faGFuZGxlciwKICAgICAgICAgICAgICAgJHtpfV9vaWQsICR7aX1fb2lkX2xlbiwKQEAgLTgwLDkgKzk2LDI2IEBACiAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZCiBAZW5kQAogICAgICAgICAgICAgICApOworICAgIGlmIChOVUxMID09IHJlZykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBjcmVhdGluZyBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBmb3IgJGlcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorQGlmICRpLnNldHRhYmxlQAorICAgIC8qKiBzaG91bGQgYSBzZXQgb24gYSBub24tZXhpc3RlbnQgcm93IGNyZWF0ZSBhIG5ldyBvbmU/ICovCisgICAgLyoqIHJlZy0+bW9kZXMgfD0gSEFORExFUl9DQU5fTk9UX0NSRUFURTsgKi8KK0BlbmRACiAKLSAgICBjb250YWluZXIgID0gbmV0c25tcF9jb250YWluZXJfZmluZCggInRhYmxlX2NvbnRhaW5lciIgKTsKKyAgICBjb250YWluZXIgID0gbmV0c25tcF9jb250YWluZXJfZmluZCggIiRpOnRhYmxlX2NvbnRhaW5lciIgKTsKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgY3JlYXRpbmcgY29udGFpbmVyIGZvciAkaVxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRiggbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyApOworICAgIGlmIChOVUxMID09IHRhYmxlX2luZm8pIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgYWxsb2NhdGluZyB0YWJsZSByZWdpc3RyYXRpb24gZm9yICRpXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLAogICAgIEBmb3JlYWNoICRpZHggaW5kZXhACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWR4LnR5cGUsICAvKiBpbmRleDogJGlkeCAqLwpAQCAtOTEsMTMgKzEyNCw5MiBAQAogICAgIHRhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fJGZpcnN0X2NvbHVtbi51YzsKICAgICB0YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gQ09MVU1OXyRsYXN0X2NvbHVtbi51YzsKICAgICAKLSAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yZWdpc3RlciggcmVnLCB0YWJsZV9pbmZvLCBjb250YWluZXIsIDAgKTsKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNvbnRhaW5lcl90YWJsZSBoZWxwZXIKKyAgICAgKi8KKyAgICBoYW5kbGVyID0gbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQodGFibGVfaW5mbywgY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOworICAgIGlmIChOVUxMID09IGhhbmRsZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgYWxsb2NhdGluZyB0YWJsZSByZWdpc3RyYXRpb24gZm9yICRpXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnLCBoYW5kbGVyKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBpbmplY3RpbmcgY29udGFpbmVyX3RhYmxlIGhhbmRsZXIgZm9yICRpXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBoYW5kbGVyID0gTlVMTDsgLyogcmVnIGhhcyBpdCwgd2lsbCByZXVzZSBiZWxvdyAqLwogCi0gICAgLyogSW5pdGlhbGlzZSB0aGUgY29udGVudHMgb2YgdGhlIHRhYmxlIGhlcmUgKi8KKyNpZmRlZiAke2kudWN9X1VTRV9DQUNIRQorICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY2FjaGUgaGVscGVyCisgICAgICovCisgICAgY2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAgLyogdGltZW91dCBpbiBzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2FjaGVfbG9hZCwgX2NhY2hlX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2l9X29pZCwgJHtpfV9vaWRfbGVuKTsKKworICAgIGlmIChOVUxMID09IGNhY2hlKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBmb3IgJGlcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGNhY2hlLT5mbGFncyA9IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVDsKKyAgICBjYWNoZS0+bWFnaWMgPSBjb250YWluZXI7CisKKyAgICBoYW5kbGVyID0gbmV0c25tcF9jYWNoZV9oYW5kbGVyX2dldChjYWNoZSk7CisgICAgaWYgKE5VTEwgPT0gaGFuZGxlcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY2FjaGUgaGFuZGxlciBmb3IgJGlcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorCisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZywgaGFuZGxlcikpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgaW5qZWN0aW5nIGNhY2hlIGhhbmRsZXIgZm9yICRpXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBoYW5kbGVyID0gTlVMTDsgLyogcmVnIGhhcyBpdCovCisjZW5kaWYKKworICAgIC8qCisgICAgICogcmVnaXN0ZXIgdGhlIHRhYmxlCisgICAgICovCisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZywgdGFibGVfaW5mbykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3IgJGlcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIC8qCisgICAgICogSW5pdGlhbGlzZSB0aGUgY29udGVudHMgb2YgdGhlIHRhYmxlIGhlcmUKKyAgICAgKi8KKworICAgIAorICAgIHJldHVybjsgLyogb2sgKi8KKworICAgIC8qCisgICAgICogU29tZSBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcmVnaXN0cmF0aW9uLiBDbGVhbiB1cCBhbmQgYmFpbC4KKyAgICAgKi8KKyAgYmFpbDogLyogbm90IG9rICovCisgICAgCisgICAgaWYgKGhhbmRsZXIpCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOworCisjaWZkZWYgJHtpLnVjfV9VU0VfQ0FDSEUKKyAgICBpZiAoY2FjaGUpCisgICAgICAgIG5ldHNubXBfY2FjaGVfZnJlZShjYWNoZSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCisgICAgaWYgKGNvbnRhaW5lcikKKyAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKKworICAgIGlmIChyZWcpIAorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnKTsKIH0KIAotICAgIC8qIFR5cGljYWwgZGF0YSBzdHJ1Y3R1cmUgZm9yIGEgcm93IGVudHJ5ICovCi1zdHJ1Y3QgJHtpfV9lbnRyeSB7CisvKiogVHlwaWNhbCBkYXRhIHN0cnVjdHVyZSBmb3IgYSByb3cgZW50cnkgKi8KK3R5cGVkZWYgc3RydWN0ICR7aX1fZW50cnlfcyB7CiAgICAgbmV0c25tcF9pbmRleCBvaWRfaW5kZXg7CiAKICAgICAvKiBJbmRleCB2YWx1ZXMgKi8KQEAgLTEzMywxMCArMjQ1LDEwIEBACiAgICAgQGVuZEAKIAogICAgIGludCAgIHZhbGlkOwotfTsKK30gJHtpfV9lbnRyeTsKIAotLyogY3JlYXRlIGEgbmV3IHJvdyBpbiB0aGUgdGFibGUgKi8KLXN0cnVjdCAke2l9X2VudHJ5ICoKKy8qKiBjcmVhdGUgYSBuZXcgcm93IGluIHRoZSB0YWJsZSAqLworJHtpfV9lbnRyeSAqCiAke2l9X2NyZWF0ZUVudHJ5KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIAogICBAZm9yZWFjaCAkaWR4IGluZGV4QAogICAgIEBpZiAkaWR4Lm5lZWRsZW5ndGhACkBAIC0xNDcsOSArMjU5LDkgQEAKICAgICBAZW5kQAogICBAZW5kQAogICAgICAgICAgICAgICAgICkgewotICAgIHN0cnVjdCAke2l9X2VudHJ5ICplbnRyeTsKKyAgICAke2l9X2VudHJ5ICplbnRyeTsKIAotICAgIGVudHJ5ID0gU05NUF9NQUxMT0NfVFlQRURFRihzdHJ1Y3QgJHtpfV9lbnRyeSk7CisgICAgZW50cnkgPSBTTk1QX01BTExPQ19UWVBFREVGKCR7aX1fZW50cnkpOwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNjcsMTAgKzI3OSwxMCBAQAogICAgIHJldHVybiBlbnRyeTsKIH0KIAotLyogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlICovCisvKiogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlICovCiB2b2lkCiAke2l9X3JlbW92ZUVudHJ5KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIAotICAgICAgICAgICAgICAgICBzdHJ1Y3QgJHtpfV9lbnRyeSAqZW50cnkpIHsKKyAgICAgICAgICAgICAgICAgJHtpfV9lbnRyeSAqZW50cnkpIHsKIAogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybjsgICAgLyogTm90aGluZyB0byByZW1vdmUgKi8KQEAgLTE3OSw2ICsyOTEsMTUgQEAKICAgICAgICAgU05NUF9GUkVFKCBlbnRyeSApOyAgIC8qIFhYWCAtIHJlbGVhc2UgYW55IG90aGVyIGludGVybmFsIHJlc291cmNlcyAqLwogfQogCisvKiogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlICovCit2b2lkCiske2l9X2ZyZWVFbnRyeSgke2l9X2VudHJ5ICplbnRyeSkgeworCisgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgcmV0dXJuOyAgICAvKiBOb3RoaW5nIHRvIHJlbW92ZSAqLworICAgIFNOTVBfRlJFRSggZW50cnkgKTsgICAvKiBYWFggLSByZWxlYXNlIGFueSBvdGhlciBpbnRlcm5hbCByZXNvdXJjZXMgKi8KK30KKwogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSAkaSB0YWJsZSAqLwogaW50CiAke2l9X2hhbmRsZXIoCkBAIC0xODksMTAgKzMxMCwxMyBAQAogCiAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgKnJlcXVlc3Q7CiAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87Ci0gICAgbmV0c25tcF90YWJsZV9kYXRhICAgICAgICAgKnRhYmxlX2RhdGE7CiAgICAgbmV0c25tcF9jb250YWluZXIgICAgICAgICAgKmNvbnRhaW5lcjsKLSAgICBzdHJ1Y3QgJHtpfV9lbnRyeSAgICAgICAgICAqdGFibGVfZW50cnk7CisgICAgJHtpfV9lbnRyeSAgICAgICAgICAgICAgICAgKnRhYmxlX2VudHJ5OworQGlmICRpLnNldHRhYmxlQAogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICByZXQ7CitAZW5kQAorCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aGFuZGxlciIsICJQcm9jZXNzaW5nIHJlcXVlc3QgKCVkKVxuIiwgcmVxaW5mby0+bW9kZSkpOwogCiAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgICAgIC8qCkBAIC0yMDAsOSArMzI0LDE4IEBACiAgICAgICAgICAqLwogICAgIGNhc2UgTU9ERV9HRVQ6CiAgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7Ci0gICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChzdHJ1Y3QgJHtpfV9lbnRyeSAqKQorICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoJHtpfV9lbnRyeSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOwogICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIFNOTVBfRVJSX0dFTkVSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgewogICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQApAQCAtMjE1LDcgKzM0OCw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKil0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW4pOwogICAgICAgICAgICAgQGVsc2VACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKQEAgLTIzOCw5ICszNzEsMTggQEAKICAgICAgICAgICovCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKLSAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCAke2l9X2VudHJ5ICopCisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICgke2l9X2VudHJ5ICopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CiAgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAkaVxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgU05NUF9FUlJfR0VORVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAKICAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CiAgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACkBAIC0yNTEsNyArMzkzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAodGFibGVfZW50cnkgPyBSU19BQ1RJVkUgOiBSU19OT05FWElTVEVOVCApKTsKICAgICAgICAgICAgIEBlbHNlQAogICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACi0JICAgICAgICAvKiBvciBwb3NzaWJsYyAnbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplJyAqLworCSAgICAgICAgLyogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZScgKi8KICAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKAogICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKICAgICAgICAgICAgIEBlbHNlQApAQCAtMjc3LDEwICs0MTksMTggQEAKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogQGlmICRpLmNyZWF0YWJsZUAKICAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKLSAgICAgICAgICAgIGNvbnRhaW5lciAgID0gICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3QocmVxdWVzdCk7Ci0gICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChzdHJ1Y3QgJHtpfV9lbnRyeSAqKQorICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoJHtpfV9lbnRyeSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOwogICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIFNOTVBfRVJSX0dFTkVSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgewogQGlmICRpLnJvd3N0YXR1c0AKQEAgLTI5MCw2ICs0NDAsMTQgQEAKICAgICAgICAgICAgICAgICBzd2l0Y2ggKCpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBSU19DUkVBVEVBTkRHTzoKICAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFORFdBSVQ6CisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciAgID0gICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3QocmVxdWVzdCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBjb250YWluZXIgZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gJHtpfV9jcmVhdGVFbnRyeShjb250YWluZXIKICAgQGZvcmVhY2ggJGlkeCBpbmRleEAKICAgICBAaWYgJGlkeC5uZWVkbGVuZ3RoQApAQCAtMzE3LDYgKzQ3NSwxNCBAQAogICAgICAgICAgICAgQGVuZEAKICAgICAgICAgICAgIEBlbmRACiAgICAgICAgICAgICAgICAgaWYgKCAhdGFibGVfZW50cnkgKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciAgID0gICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3QocmVxdWVzdCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBjb250YWluZXIgZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gJHtpfV9jcmVhdGVFbnRyeShjb250YWluZXIKICAgQGZvcmVhY2ggJGlkeCBpbmRleEAKICAgICBAaWYgJGlkeC5uZWVkbGVuZ3RoQApAQCAtMzQ1LDEwICs1MTEsMjYgQEAKICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CiBAaWYgJGkuY3JlYXRhYmxlQAogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgY29udGFpbmVyICAgPSAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdChyZXF1ZXN0KTsKLSAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCAke2l9X2VudHJ5ICopCisgICAgICAgICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBjb250YWluZXIgZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9HRU5FUlIsIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoJHtpfV9lbnRyeSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOwogICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIFNOTVBfRVJSX0dFTkVSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgewogQGlmICRpLnJvd3N0YXR1c0AKQEAgLTM4Miw5ICs1NjQsMTggQEAKIAogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewotICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoc3RydWN0ICR7aX1fZW50cnkgKikKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQpCisgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKCR7aX1fZW50cnkgKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKICAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKChOVUxMID09IHRhYmxlX2VudHJ5KSB8fCAoTlVMTCA9PSB0YWJsZV9pbmZvKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGVudHJ5IG9yIGluZm8gZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCBTTk1QX0VSUl9HRU5FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKICAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKQEAgLTQxNyw5ICs2MDgsMTggQEAKIEBpZiAkaS5yb3dzdGF0dXNACiAgICAgICAgIC8qIENoZWNrIHRoZSBpbnRlcm5hbCBjb25zaXN0ZW5jeSBvZiBhbiBhY3RpdmUgcm93ICovCiAgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7Ci0gICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChzdHJ1Y3QgJHtpfV9lbnRyeSAqKQorICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoJHtpfV9lbnRyeSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOwogICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIFNOTVBfRVJSX0dFTkVSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgewogICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQApAQCAtNDQzLDEwICs2NDMsMjYgQEAKIAogICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKICAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQpCisgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGNvbnRhaW5lciAgID0gICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3QocmVxdWVzdCk7Ci0gICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChzdHJ1Y3QgJHtpfV9lbnRyeSAqKQorICAgICAgICAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgY29udGFpbmVyIGZvciAkaVxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKCR7aX1fZW50cnkgKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKICAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKChOVUxMID09IHRhYmxlX2VudHJ5KSB8fCAoTlVMTCA9PSB0YWJsZV9pbmZvKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGVudHJ5IG9yIGluZm8gZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCBTTk1QX0VSUl9HRU5FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKICAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKQEAgLTUxOCwxMCArNzM0LDE4IEBACiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiBAaWYgJGkuY3JlYXRhYmxlQAogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewotICAgICAgICAgICAgY29udGFpbmVyICAgPSAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdChyZXF1ZXN0KTsKLSAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCAke2l9X2VudHJ5ICopCisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICgke2l9X2VudHJ5ICopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CiAgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAkaVxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgU05NUF9FUlJfR0VORVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAKICAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CiBAaWYgJGkucm93c3RhdHVzQApAQCAtNTQ0LDYgKzc2OCwxNCBAQAogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2UgUlNfREVTVFJPWToKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyID0gbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdChyZXF1ZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGNvbnRhaW5lciBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9HRU5FUlIsIE5VTEwsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgJHtpfV9yZW1vdmVFbnRyeShjb250YWluZXIsIHRhYmxlX2VudHJ5ICk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgQGVuZEAKQEAgLTU2Niw0ICs3OTgsNjcgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisKKyNpZmRlZiAke2kudWN9X1VTRV9DQUNIRQorLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIGludAorX2NhY2hlX2xvYWQobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICp2bWFnaWMpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKyAgICAKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6JHtpfTpfY2FjaGVfbG9hZCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjYWNoZSBmb3IgJHtpfV9jYWNoZV9sb2FkXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBjb250YWluZXIgPSAobmV0c25tcF9jb250YWluZXIgKiljYWNoZS0+bWFnaWM7CisKKyAgICAvKiogc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZvciBhbiBpbnZhbGlkIG9yIGV4cGlyZWQgY2FjaGUgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoMCA9PSBjYWNoZS0+dmFsaWQpIHx8ICgxID09IGNhY2hlLT5leHBpcmVkKSk7CisKKyAgICAvKgorICAgICAqIGxvYWQgY2FjaGUgaGVyZSAob3IgY2FsbCBmdW5jdGlvbiB0byBkbyBpdCkKKyAgICAgKi8KKyAgICAvKiogQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJlY29yZCk7ICovCisKKyAgICByZXR1cm4gMDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2xvYWQgKi8KKworLyoqCisgKiBASW50ZXJuYWwKKyAqLworLyoqIHJlbW92ZSBhIHJvdyBmcm9tIHRoZSB0YWJsZSAqLworc3RhdGljIHZvaWQKKyR7aX1fZnJlZUVudHJ5X2NiKCR7aX1fZW50cnkgKmVudHJ5LCB2b2lkICptYWdpYykgeworCisgICAgJHtpfV9mcmVlRW50cnkoZW50cnkpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOiR7aX06X2NhY2hlX2ZyZWUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoKE5VTEwgPT0gY2FjaGUpIHx8IChOVUxMID09IGNhY2hlLT5tYWdpYykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImludmFsaWQgY2FjaGUgaW4gJHtpfV9jYWNoZV9mcmVlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb250YWluZXIgPSAobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPm1hZ2ljOworCisgICAgLyoKKyAgICAgKiBlbXB0eSAoYnV0IGRvbid0IGZyZWUpIGNhY2hlIGhlcmUKKyAgICAgKi8KKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKSR7aX1fZnJlZUVudHJ5X2NiLAorICAgICAgICAgICAgICAgICAgICBOVUxMKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2ZyZWUgKi8KKyNlbmRpZiAvKiAke2kudWN9X1VTRV9DQUNIRSAqLwogQGVuZEAKZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLmNyZWF0ZS1kYXRhc2V0LmNvbmYgYi9sb2NhbC9taWIyYy5jcmVhdGUtZGF0YXNldC5jb25mCmluZGV4IDExZmQ1ZDIuLjljZjc1ZmQgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLmNyZWF0ZS1kYXRhc2V0LmNvbmYKKysrIGIvbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZgpAQCAtNDMsOCArNDMsNyBAQAogdm9pZAogaW5pdGlhbGl6ZV90YWJsZV8kaSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07Ci0gICAgc2l6ZV90ICR7aX1fb2lkX2xlbiA9IE9JRF9MRU5HVEgoJHtpfV9vaWQpOworICAgIGNvbnN0IG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKICAgICBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQ7CiAKICAgICAvKiBjcmVhdGUgdGhlIHRhYmxlIHN0cnVjdHVyZSBpdHNlbGYgKi8KQEAgLTc4LDcgKzc3LDcgQEAKICAgICAgICBvZiB0aGUgcmVxdWVzdCwgY2hhbmdlICR7aX1faGFuZGxlciB0byAiTlVMTCIgKi8KICAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGFfc2V0KG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCIkaSIsICR7aX1faGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpfV9vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aX1fb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSCgke2l9X29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfc2V0LCBOVUxMKTsKIH0KZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLmludF93YXRjaC5jb25mIGIvbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmYKaW5kZXggNzc4N2EyZi4uZWNjNWQxMCAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmYKKysrIGIvbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmYKQEAgLTUwLDEyICs1MCwxMiBAQAogaW5pdF8ke25hbWV9KHZvaWQpCiB7CiAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZzsKLSAgbmV0c25tcF93YXRjaGVyX2luZm8gICAgICAgICAqd2luZm87CiAKICAgQGZvcmVhY2ggJGkgc2NhbGFyQAogICAgIEBpZiAhJGkubmVlZGxlbmd0aEAKLSAgICBzdGF0aWMgb2lkICR7aX1fb2lkW10gPSB7ICRpLmNvbW1hb2lkIH07CisgICAgY29uc3Qgb2lkICR7aX1fb2lkW10gPSB7ICRpLmNvbW1hb2lkIH07CiAgICAgQGVuZEAKKyAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvICR7aX1fd2luZm87CiAgIEBlbmRACiAKICAgLyoKQEAgLTkyLDEwICs5Miw5IEBACiAgICAgQGVsc2VACiAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKICAgICBAZW5kQAotICAgIHdpbmZvID0gbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAotICAgICAgICAgICAgICAgICYkaSwgc2l6ZW9mKCRpLmRlY2wpLAotICAgICAgICAgICAgICAgICAkaS50eXBlLCBXQVRDSEVSX0ZJWEVEX1NJWkUpOwotICAgIGlmIChuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKCByZWcsIHdpbmZvICkgPCAwICkgeworICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oJiR7aX1fd2luZm8sICYkaSwgc2l6ZW9mKCRpLmRlY2wpLAorCQkJICAgICAgJGkudHlwZSwgV0FUQ0hFUl9GSVhFRF9TSVpFKTsKK2lmIChuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKCByZWcsICYke2l9X3dpbmZvICkgPCAwICkgewogICAgICAgICBzbm1wX2xvZyggTE9HX0VSUiwgIkZhaWxlZCB0byByZWdpc3RlciB3YXRjaGVkICRpIiApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mIGIvbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mCmluZGV4IDNhNTVkMjMuLmU0MDliYTkgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLml0ZXJhdGUuY29uZgorKysgYi9sb2NhbC9taWIyYy5pdGVyYXRlLmNvbmYKQEAgLTcyLDEyICs3MiwxNCBAQAogdm9pZAogaW5pdGlhbGl6ZV90YWJsZV8kaSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07Ci0gICAgc2l6ZV90ICR7aX1fb2lkX2xlbiAgID0gT0lEX0xFTkdUSCgke2l9X29pZCk7CisgICAgY29uc3Qgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OworICAgIGNvbnN0IHNpemVfdCAke2l9X29pZF9sZW4gICA9IE9JRF9MRU5HVEgoJHtpfV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gICAgICAgICAgICppaW5mbzsKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aW5pdCIsICJpbml0aWFsaXppbmcgdGFibGUgJGlcbiIpKTsKKwogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAiJGkiLCAgICAgJHtpfV9oYW5kbGVyLAogICAgICAgICAgICAgICAke2l9X29pZCwgJHtpfV9vaWRfbGVuLApAQCAtMzA3LDYgKzMwOSw4IEBACiAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87CiAgICAgc3RydWN0ICR7aX1fZW50cnkgICAgICAgICAgKnRhYmxlX2VudHJ5OwogCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aGFuZGxlciIsICJQcm9jZXNzaW5nIHJlcXVlc3QgKCVkKVxuIiwgcmVxaW5mby0+bW9kZSkpOworCiAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFJlYWQtc3VwcG9ydCAoYWxzbyBjb3ZlcnMgR2V0TmV4dCByZXF1ZXN0cykKQEAgLTMyOCw3ICszMzIsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAogICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggcmVxdWVzdC0+cmVxdWVzdHZiLCAkYy50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciopdGFibGVfZW50cnktPiRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiRjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiR7Y31fbGVuKTsKICAgICAgICAgICAgIEBlbHNlQAogICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCkBAIC0zNjQsNyArMzY4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAodGFibGVfZW50cnkgPyBSU19BQ1RJVkUgOiBSU19OT05FWElTVEVOVCApKTsKICAgICAgICAgICAgIEBlbHNlQAogICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACi0JICAgICAgICAvKiBvciBwb3NzaWJsYyAnbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplJyAqLworCSAgICAgICAgLyogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZScgKi8KICAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKAogICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKICAgICAgICAgICAgIEBlbHNlQApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuaXRlcmF0ZV9hY2Nlc3MuY29uZiBiL2xvY2FsL21pYjJjLml0ZXJhdGVfYWNjZXNzLmNvbmYKaW5kZXggZGM3ZWFlMy4uOTBiODUwOCAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMuaXRlcmF0ZV9hY2Nlc3MuY29uZgorKysgYi9sb2NhbC9taWIyYy5pdGVyYXRlX2FjY2Vzcy5jb25mCkBAIC03NywxMSArNzcsMTMgQEAKIHZvaWQKIGluaXRpYWxpemVfdGFibGVfJGkodm9pZCkKIHsKLSAgICBzdGF0aWMgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OworICAgIGNvbnN0IG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15X2hhbmRsZXI7CiAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbzsKIAorICAgIERFQlVHTVNHVEwoKCIke25hbWV9OmluaXQiLCAiaW5pdGlhbGl6aW5nIHRhYmxlICRpXG4iKSk7CisKICAgICAvKiogY3JlYXRlIHRoZSB0YWJsZSByZWdpc3RyYXRpb24gaW5mb3JtYXRpb24gc3RydWN0dXJlcyAqLwogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIGlpbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2l0ZXJhdG9yX2luZm8pOwpAQCAtMTc3LDE0ICsxNzksMTQgQEAKIAogICAgIHZvaWQgKmRhdGFfY29udGV4dCA9IE5VTEw7CiAKLSAgICBvaWQgKnN1ZmZpeDsKLSAgICBzaXplX3Qgc3VmZml4X2xlbjsKLQogICAgIC8qKiBjb2x1bW4gYW5kIHJvdyBpbmRleCBlbmNvZGVkIHBvcnRpb24gKi8KLSAgICBzdWZmaXggPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lICsgcmVnaW5mby0+cm9vdG9pZF9sZW4gKyAxOwotICAgIHN1ZmZpeF9sZW4gPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCAtCisgICAgY29uc3Qgb2lkICogY29uc3Qgc3VmZml4ID0KKyAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZSArIHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMTsKKyAgICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVfbGVuZ3RoIC0KICAgICAgICAgKHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMSk7CiAgICAgCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aGFuZGxlciIsICJQcm9jZXNzaW5nIHJlcXVlc3QgKCVkKVxuIiwgcmVxaW5mby0+bW9kZSkpOworCiAgICAgZm9yKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgdmFyID0gcmVxdWVzdC0+cmVxdWVzdHZiOwogICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkICE9IDApCkBAIC0yNDIsOCArMjQ0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gZ2V0XyRjKGRhdGFfY29udGV4dCwgJnJldHZhbF9sZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0dmFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHZhciwgJGMudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1X2NoYXIgKikgcmV0dmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsX2xlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHZhbF9sZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy5ub3RpZnkuY29uZiBiL2xvY2FsL21pYjJjLm5vdGlmeS5jb25mCmluZGV4IGQyMTE2MTkuLjZjMWViMWEgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLm5vdGlmeS5jb25mCisrKyBiL2xvY2FsL21pYjJjLm5vdGlmeS5jb25mCkBAIC0zMCwyMCArMzAsMjAgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgIiR7bmFtZX0uaCIKIAotc3RhdGljIG9pZCBzbm1wdHJhcF9vaWRbXSA9IHsxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA0LCAxLCAwfTsKK3N0YXRpYyBjb25zdCBvaWQgc25tcHRyYXBfb2lkW10gPSB7MSwgMywgNiwgMSwgNiwgMywgMSwgMSwgNCwgMSwgMH07CiAKIEBmb3JlYWNoICRpIG5vdGlmaWNhdGlvbnNACiBpbnQKIHNlbmRfJHtpfV90cmFwKCB2b2lkICkKIHsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgICp2YXJfbGlzdCA9IE5VTEw7Ci0gICAgb2lkICR7aX1fb2lkW10gPSB7ICRpLmNvbW1hb2lkIH07CisgICAgY29uc3Qgb2lkICR7aX1fb2lkW10gPSB7ICRpLmNvbW1hb2lkIH07CiAgICAgQGZvcmVhY2ggJHYgdmFyYmluZHNACiAgICAgQGlmICR2Lmlzc2NhbGFyQAotICAgIG9pZCAke3Z9X29pZFtdID0geyAkdi5jb21tYW9pZCwgMCB9OworICAgIGNvbnN0IG9pZCAke3Z9X29pZFtdID0geyAkdi5jb21tYW9pZCwgMCB9OwogICAgIEBlbmRACiAgICAgQGlmICEkdi5pc3NjYWxhckAKLSAgICBvaWQgJHt2fV9vaWRbXSA9IHsgJHYuY29tbWFvaWQsIC8qIGluc2VydCBpbmRleCBoZXJlICovIH07CisgICAgY29uc3Qgb2lkICR7dn1fb2lkW10gPSB7ICR2LmNvbW1hb2lkLCAvKiBpbnNlcnQgaW5kZXggaGVyZSAqLyB9OwogICAgIEBlbmRACiAgICAgQGVuZEAKIApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMub2xkLWFwaS5jb25mIGIvbG9jYWwvbWliMmMub2xkLWFwaS5jb25mCmluZGV4IDhkYWY4ZjEuLjhmYTI3MGIgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLm9sZC1hcGkuY29uZgorKysgYi9sb2NhbC9taWIyYy5vbGQtYXBpLmNvbmYKQEAgLTY5LDEwICs2OSwxMiBAQAogICAgIEBldmFsICRzdWZmaXhsZW4gPSAkaS5vaWRsZW5ndGggLSAkbmFtZS5vaWRsZW5ndGhACiAjZGVmaW5lICRpLnVjCQkkbWFnaWMKICAgICBAaWYgJGkuc2V0dGFibGVACi17JGkudWMsICAkaS50eXBlLCAgUldSSVRFLCAgdmFyXyR7bmFtZX0sICRzdWZmaXhsZW4sICB7ICRzdWZmaXggfX0sCit7JGkudWMsICAkaS50eXBlLCAgTkVUU05NUF9PTERBUElfUldSSVRFLAorIHZhcl8ke25hbWV9LCAkc3VmZml4bGVuLCAgeyAkc3VmZml4IH19LAogICAgIEBlbmRACiAgICAgQGlmICEkaS5zZXR0YWJsZUAKLXskaS51YywgICRpLnR5cGUsICBST05MWSAsICB2YXJfJHtuYW1lfSwgJHN1ZmZpeGxlbiwgIHsgJHN1ZmZpeCB9fSwKK3skaS51YywgICRpLnR5cGUsICBORVRTTk1QX09MREFQSV9ST05MWSwKKyB2YXJfJHtuYW1lfSwgJHN1ZmZpeGxlbiwgIHsgJHN1ZmZpeCB9fSwKICAgICBAZW5kQAogQGVuZEAKIApAQCAtOTEsMTAgKzkzLDEyIEBACiAgICAgQGV2YWwgJG1hZ2ljID0gJG1hZ2ljICsgMUAKICNkZWZpbmUgJGMudWMJCSRtYWdpYwogICAgIEBpZiAkYy5zZXR0YWJsZUAKLXskYy51YywgICRjLnR5cGUsICBSV1JJVEUsICB2YXJfJHtpfSwgJHN1ZmZpeGxlbiwgIHsgJHN1ZmZpeCAkY3RtcCAxLCAkYy5zdWJpZCB9fSwKK3skYy51YywgICRjLnR5cGUsICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgdmFyXyR7aX0sICRzdWZmaXhsZW4sICB7ICRzdWZmaXggJGN0bXAgMSwgJGMuc3ViaWQgfX0sCiAgICAgQGVuZEAKICAgICBAaWYgISRjLnNldHRhYmxlQAoteyRjLnVjLCAgJGMudHlwZSwgIFJPTkxZLCAgIHZhcl8ke2l9LCAkc3VmZml4bGVuLCAgeyAkc3VmZml4ICRjdG1wIDEsICRjLnN1YmlkIH19LAoreyRjLnVjLCAgJGMudHlwZSwgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorIHZhcl8ke2l9LCAkc3VmZml4bGVuLCAgeyAkc3VmZml4ICRjdG1wIDEsICRjLnN1YmlkIH19LAogICAgIEBlbmRACiAgQGVuZEAKIEBlbmRACmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy5yYXctdGFibGUuY29uZiBiL2xvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNGQ0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9sb2NhbC9taWIyYy5yYXctdGFibGUuY29uZgpAQCAtMCwwICsxLDYxMiBAQAorIyMgLSotIGMgLSotCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyBEbyB0aGUgLmggZmlsZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworQG9wZW4gJHtuYW1lfS5oQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgJElkOiBtaWIyYy5yYXctdGFibGUuY29uZiAxNzQzNiAyMDA5LTAzLTMxIDE1OjEyOjE5WiBkdHMxMiAkCisgKi8KKyNpZm5kZWYgJG5hbWUudWNfSAorI2RlZmluZSAkbmFtZS51Y19ICisKK3ZvaWQgaW5pdF8kbmFtZSh2b2lkKTsKKworI2VuZGlmIC8qICRuYW1lLnVjX0ggKi8KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIERvIHRoZSAuYyBmaWxlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitAb3BlbiAke25hbWV9LmNACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAkSWQ6IG1pYjJjLnJhdy10YWJsZS5jb25mIDE3NDM2IDIwMDktMDMtMzEgMTU6MTI6MTlaIGR0czEyICQKKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgIiR7bmFtZX0uaCIKKworQGZvcmVhY2ggJGkgdGFibGVACisgICMjIERldGVybWluZSB0aGUgZmlyc3QvbGFzdCBjb2x1bW4gbmFtZXMKKyAgQGV2YWwgJGZpcnN0X2NvbHVtbiA9ICItIkAKKyAgQGV2YWwgJGxhc3RfY29sdW1uID0gIi0iQAorICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgQGlmICRjLnJlYWRhYmxlQAorICAgICAgQGlmICIkZmlyc3RfY29sdW1uIiBlcSAiLSJACisgICAgICAgIEBldmFsICRmaXJzdF9jb2x1bW4gPSAkY0AKKyAgICAgIEBlbmRACisgICAgICBAZXZhbCAkbGFzdF9jb2x1bW4gPSAkY0AKKyAgICBAZW5kQAorICBAZW5kQAorCisvKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSAkaSAqLworICBAZm9yZWFjaCAkYyBjb2x1bW5ACisjZGVmaW5lIENPTFVNTl8kYy51YwkJJGMuc3ViaWQKKyAgQGVuZEAKKworICAgIC8qIFR5cGljYWwgZGF0YSBzdHJ1Y3R1cmUgZm9yIGEgcm93IGVudHJ5ICovCitzdHJ1Y3QgJHtpfV9lbnRyeSB7CisgICAgLyogSW5kZXggdmFsdWVzICovCisgICAgQGZvcmVhY2ggJGlkeCBpbmRleEAKKyAgICAgQGlmICRpZHgubmVlZGxlbmd0aEAKKyAgICAkaWR4LmRlY2wgJGlkeFtOTk5dOworICAgIHNpemVfdCAke2lkeH1fbGVuOworICAgICBAZWxzZUAKKyAgICAkaWR4LmRlY2wgJGlkeDsKKyAgICAgQGVuZEAKKyAgICBAZW5kQAorCisgICAgLyogQ29sdW1uIHZhbHVlcyAqLworICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICBAaWYgJGMucmVhZGFibGVACisgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorICAgICRjLmRlY2wgJGNbTk5OXTsKKyAgICBzaXplX3QgJHtjfV9sZW47CisgICAgIEBlbHNlQAorICAgICRjLmRlY2wgJGM7CisgICAgIEBlbmRACisgICAgIEBpZiAkYy5zZXR0YWJsZUAKKyAgICAgIEBpZiAhJGMucm93c3RhdHVzQAorICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorICAgICRjLmRlY2wgb2xkXyRjW05OTl07CisgICAgc2l6ZV90IG9sZF8ke2N9X2xlbjsKKyAgICAgICBAZWxzZUAKKyAgICAkYy5kZWNsIG9sZF8kYzsKKyAgICAgICBAZW5kQAorICAgICAgQGVuZEAKKyAgICAgQGVuZEAKKyAgICBAZW5kQAorICAgIEBlbmRACisKKyAgICBpbnQgICB2YWxpZDsKK307CisKKy8qIGNyZWF0ZSBhIG5ldyByb3cgaW4gdGhlIHRhYmxlICovCitzdGF0aWMgc3RydWN0ICR7aX1fZW50cnkgKgorJHtpfV9jcmVhdGVFbnRyeSggaW50IGR1bW15CisgIEBmb3JlYWNoICRpZHggaW5kZXhACisgICAgQGlmICRpZHgubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICAgLCAkaWR4LmRlY2wqICRpZHgKKyAgICAgICAgICAgICAgICAgLCBzaXplX3QgJHtpZHh9X2xlbgorICAgIEBlbHNlQAorICAgICAgICAgICAgICAgICAsICRpZHguZGVjbCAgJGlkeAorICAgIEBlbmRACisgIEBlbmRACisgICAgICAgICAgICAgICAgKSB7CisgICAgc3RydWN0ICR7aX1fZW50cnkgKmVudHJ5OworCisgICAgZW50cnkgPSBTTk1QX01BTExPQ19UWVBFREVGKHN0cnVjdCAke2l9X2VudHJ5KTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIFhYWCAtIGluc2VydCBlbnRyeSBpbnRvIGxvY2FsIGRhdGEgc3RydWN0dXJlICovCisgICAgcmV0dXJuIGVudHJ5OworfQorCisvKiByZW1vdmUgYSByb3cgZnJvbSB0aGUgdGFibGUgKi8KK3N0YXRpYyB2b2lkCiske2l9X3JlbW92ZUVudHJ5KHN0cnVjdCAke2l9X2VudHJ5ICplbnRyeSkgeworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybjsgICAgLyogTm90aGluZyB0byByZW1vdmUgKi8KKworICAgIC8qIFhYWCAtIHJlbW92ZSBlbnRyeSBmcm9tIGxvY2FsIGRhdGEgc3RydWN0dXJlICovCisKKyAgICBpZiAoZW50cnkpCisgICAgICAgIFNOTVBfRlJFRSggZW50cnkgKTsgICAvKiBYWFggLSByZWxlYXNlIGFueSBvdGhlciBpbnRlcm5hbCByZXNvdXJjZXMgKi8KK30KKworCisvKiogZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSByb3cgZm9yIGFuIGV4YWN0IHJlcXVlc3QgKi8KK3N0YXRpYyBzdHJ1Y3QgJHtpfV9lbnRyeSAqCiske2l9X2dldF9lbnRyeSggbmV0c25tcF92YXJpYWJsZV9saXN0ICppbmRleGVzICkgeworICAgIHN0cnVjdCAke2l9X2VudHJ5ICpyb3cgPSBOVUxMOworCisgICAgLyogWFhYIC0gVXNlIHRoZSAnaW5kZXhlcycgcGFyYW1ldGVyIHRvIHJldHJpZXZlIHRoZSBkYXRhCisgICAgICAgc3RydWN0dXJlIGZvciB0aGUgcmVxdWVzdGVkIHJvdywgYW5kIHJldHVybiB0aGlzLiAqLworICAgIHJldHVybiByb3c7Cit9CisKKy8qKiBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIHJvdyBmb3IgYW4gZnV6enkgcmVxdWVzdCAqLworc3RhdGljIHN0cnVjdCAke2l9X2VudHJ5ICoKKyR7aX1fZ2V0X25leHRfZW50cnkoIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAgICAgICAgICpyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLAorICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICAgICAgICAqaW5kZXhlcyApIHsKKyAgICBzdHJ1Y3QgJHtpfV9lbnRyeSAqcm93ID0gTlVMTDsKKyAgICBvaWQgICAgICAgICAgICAgYnVpbGRfc3BhY2VbTUFYX09JRF9MRU5dOworICAgIHNpemVfdCAgICAgICAgICBidWlsZF9zcGFjZV9sZW4gPSAwOworICAgIHNpemVfdCAgICAgICAgICBpbmRleF9vaWRfbGVuID0gMDsKKworICAgIC8qIFhYWCAtIFVzZSB0aGUgJ2luZGV4ZXMnIHBhcmFtZXRlciB0byBpZGVudGlmeSB0aGUKKyAgICAgICAgICAgICBuZXh0IHJvdyBpbiB0aGUgdGFibGUuLi4uICovCisKKyAgICAvKiBYWFggICAuLi4uIHVwZGF0ZSB0aGUgJ2luZGV4ZXMnIHBhcmFtZXRlciB3aXRoIHRoZQorICAgICAgICAgICAgIGFwcHJvcHJpYXRlIGluZGV4IHZhbHVlcyAuLi4gKi8KKworICAgIC8qIC4uLiBhbmQgdXBkYXRlIHRoZSByZXF1ZXN0ZWQgT0lEIHRvIG1hdGNoIHRoaXMgaW5zdGFuY2UgKi8KKyAgICBtZW1jcHkoYnVpbGRfc3BhY2UsIHJlZ2luZm8tPnJvb3RvaWQsICAgLyogcmVnaXN0ZXJlZCBvaWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuICogc2l6ZW9mKG9pZCkpOworICAgIGJ1aWxkX3NwYWNlX2xlbiA9IHJlZ2luZm8tPnJvb3RvaWRfbGVuOworICAgIGJ1aWxkX3NwYWNlW2J1aWxkX3NwYWNlX2xlbisrXSA9IDE7ICAvKiBlbnRyeSAqLworICAgIGJ1aWxkX3NwYWNlW2J1aWxkX3NwYWNlX2xlbisrXSA9IGNvbHVtbjsgLyogY29sdW1uICovCisgICAgYnVpbGRfb2lkX25vYWxsb2MoYnVpbGRfc3BhY2UgKyBidWlsZF9zcGFjZV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgTUFYX09JRF9MRU4gLSBidWlsZF9zcGFjZV9sZW4sICZpbmRleF9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIGluZGV4ZXMpOworICAgIHNubXBfc2V0X3Zhcl9vYmppZChyZXF1ZXN0LT5yZXF1ZXN0dmIsIGJ1aWxkX3NwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9zcGFjZV9sZW4gKyBpbmRleF9vaWRfbGVuKTsKKworICAgIC8qICBGaW5hbGx5LCByZXR1cm4gdGhlIGRhdGEgc3RydWN0dXJlIGZvciB0aGlzIHJvdyAqLworICAgIHJldHVybiByb3c7Cit9CisKKworLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSAkaSB0YWJsZSAqLworc3RhdGljIGludAorJHtpfV9oYW5kbGVyKAorICAgIG5ldHNubXBfbWliX2hhbmRsZXIgICAgICAgICAgICAgICAqaGFuZGxlciwKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICAgKnJlZ2luZm8sCisgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAgICAgICpyZXFpbmZvLAorICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICAgICAgICAqcmVxdWVzdHMpIHsKKworICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICpyZXF1ZXN0OworICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOworICAgIHN0cnVjdCAke2l9X2VudHJ5ICAgICAgICAgICp0YWJsZV9lbnRyeTsKKyAgICBAaWYgJGkuc2V0dGFibGVACisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHJldDsKKyAgICBAZW5kQAorCisgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFJlYWQtc3VwcG9ydAorICAgICAgICAgKi8KKyAgICBjYXNlIE1PREVfR0VUOgorICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8oIHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAgICAgJHtpfV9nZXRfZW50cnkoIHRhYmxlX2luZm8tPmluZGV4ZXMgKTsKKyAgICAKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgICAgICAgICBAaWYgJGMucmVhZGFibGVACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgICAgICBpZiAoICF0YWJsZV9lbnRyeSApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNISU5TVEFOQ0UpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4ke2N9X2xlbik7CisgICAgICAgICAgICBAZWxzZUAKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlciggcmVxdWVzdC0+cmVxdWVzdHZiLCAkYy50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMpOworICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSE9CSkVDVCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfR0VUTkVYVDoKKyAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKCByZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gICAgICR7aX1fZ2V0X25leHRfZW50cnkoIHJlZ2luZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2luZm8tPmNvbG51bSwgdGFibGVfaW5mby0+aW5kZXhlcyApOworICAgIAorICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5yZWFkYWJsZUAKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgICAgIGlmICggIXRhYmxlX2VudHJ5ICkgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hJTlNUQU5DRSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggcmVxdWVzdC0+cmVxdWVzdHZiLCAkYy50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiR7Y31fbGVuKTsKKyAgICAgICAgICAgIEBlbHNlQAorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYyk7CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNIT0JKRUNUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworQGlmICRpLnNldHRhYmxlQAorICAgICAgICAvKgorICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CisgICAgICAgICAqLworICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CisgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyggcmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICAgICAke2l9X2dldF9lbnRyeSggdGFibGVfaW5mby0+aW5kZXhlcyApOworICAgIAorICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5zZXR0YWJsZUAKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgQGlmICRjLnJvd3N0YXR1c0AKKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX3Jvd3N0YXR1cyhyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRhYmxlX2VudHJ5ID8gUlNfQUNUSVZFIDogUlNfTk9ORVhJU1RFTlQgKSk7CisgICAgICAgICAgICBAZWxzZUAKKyAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorCSAgICAgICAgLyogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZScgKi8KKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKKyAgICAgICAgICAgIEBlbHNlQAorICAgICAgICAgICAgICAgIC8qIG9yIHBvc3NpYmx5ICduZXRzbm1wX2NoZWNrX3ZiX2ludF9yYW5nZScgKi8KKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX2ludCggcmVxdWVzdC0+cmVxdWVzdHZiICk7CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgICAgICBpZiAoIHJldCAhPSBTTk1QX0VSUl9OT0VSUk9SICkgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKCByZXFpbmZvLCByZXF1ZXN0LCByZXQgKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoIHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfTk9UV1JJVEFCTEUgKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CitAaWYgJGkuY3JlYXRhYmxlQAorICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKCByZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gICAgICR7aX1fZ2V0X2VudHJ5KCB0YWJsZV9pbmZvLT5pbmRleGVzICk7CisgICAgCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworQGlmICRpLnJvd3N0YXR1c0AKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5yb3dzdGF0dXNACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKSB7CisgICAgICAgICAgICAgICAgY2FzZSBSU19DUkVBVEVBTkRHTzoKKyAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFORFdBSVQ6CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gJHtpfV9jcmVhdGVFbnRyeSggMAorICBAZm9yZWFjaCAkaWR4IGluZGV4QAorICAgIEBpZiAkaWR4Lm5lZWRsZW5ndGhACisgICAgICAgICAgICAgICAgICAgICAgICAsICB0YWJsZV9pbmZvLT5pbmRleGVzLT52YWwuc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAsICB0YWJsZV9pbmZvLT5pbmRleGVzLT52YWxfbGVuCisgICAgQGVsc2VACisgICAgICAgICAgICAgICAgICAgICAgICAsICp0YWJsZV9pbmZvLT5pbmRleGVzLT52YWwuaW50ZWdlcgorICAgIEBlbmRACisgIEBlbmRACisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICBpZiAoICF0YWJsZV9lbnRyeSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoIHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFICk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorQGVsc2VACisgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgICAgICAgICBAaWYgJGMuY3JlYXRhYmxlQAorICAgICAgICAgICAgY2FzZSBDT0xVTU5fJGMudWM6CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgICAgICBpZiAoICF0YWJsZV9lbnRyeSApIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnkgPSAke2l9X2NyZWF0ZUVudHJ5KCAwCisgIEBmb3JlYWNoICRpZHggaW5kZXhACisgICAgQGlmICRpZHgubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICAgICAgICAgICwgIHRhYmxlX2luZm8tPmluZGV4ZXMtPnZhbC5zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICwgIHRhYmxlX2luZm8tPmluZGV4ZXMtPnZhbF9sZW4KKyAgICBAZWxzZUAKKyAgICAgICAgICAgICAgICAgICAgICAgICwgKnRhYmxlX2luZm8tPmluZGV4ZXMtPnZhbC5pbnRlZ2VyCisgICAgQGVuZEAKKyAgQGVuZEAKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGlmICggIXRhYmxlX2VudHJ5ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvciggcmVxaW5mbywgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworQGVuZEAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorQGVuZEAKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CitAaWYgJGkuY3JlYXRhYmxlQAorICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8oIHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAgICAgJHtpfV9nZXRfZW50cnkoIHRhYmxlX2luZm8tPmluZGV4ZXMgKTsKKyAgICAKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CitAaWYgJGkucm93c3RhdHVzQAorICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgICAgICAgICAgQGlmICRjLnJvd3N0YXR1c0AKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgICAgIHN3aXRjaCAoKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFOREdPOgorICAgICAgICAgICAgICAgIGNhc2UgUlNfQ1JFQVRFQU5EV0FJVDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlX2VudHJ5ICYmICF0YWJsZV9lbnRyeS0+dmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICR7aX1fcmVtb3ZlRW50cnkodGFibGVfZW50cnkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACitAZWxzZUAKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5jcmVhdGFibGVACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgICAgIGlmICggdGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCApIHsKKyAgICAgICAgICAgICAgICAgICAgJHtpfV9yZW1vdmVFbnRyeSh0YWJsZV9lbnRyeSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworQGVuZEAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorQGVuZEAKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKKyAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKCByZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gICAgICR7aX1fZ2V0X2VudHJ5KCB0YWJsZV9pbmZvLT5pbmRleGVzICk7CisgICAgCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgICAgICAgICAgQGlmICRjLnNldHRhYmxlQAorICAgICAgICAgICAgQGlmICEkYy5yb3dzdGF0dXNACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICBtZW1jcHkoIHRhYmxlX2VudHJ5LT5vbGRfJGMsCisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8ke2N9X2xlbiA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW47CisgICAgICAgICAgICAgICAgbWVtc2V0KCB0YWJsZV9lbnRyeS0+JGMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KCB0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbF9sZW4pOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4ke2N9X2xlbiA9CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbF9sZW47CisgICAgICAgICAgICAgICAgQGVsc2VACisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8kYyA9IHRhYmxlX2VudHJ5LT4kYzsKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMgICAgID0gKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorQGlmICRpLnJvd3N0YXR1c0AKKyAgICAgICAgLyogQ2hlY2sgdGhlIGludGVybmFsIGNvbnNpc3RlbmN5IG9mIGFuIGFjdGl2ZSByb3cgKi8KKyAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKCByZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gICAgICR7aX1fZ2V0X2VudHJ5KCB0YWJsZV9pbmZvLT5pbmRleGVzICk7CisgICAgCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgICAgICAgICAgQGlmICRjLnJvd3N0YXR1c0AKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgICAgIHN3aXRjaCAoKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFJTX0FDVElWRToKKyAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFOREdPOgorICAgICAgICAgICAgICAgICAgICBpZiAoLyogWFhYICovKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKCByZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfSU5DT05TSVNURU5UVkFMVUUgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICB9CisgICAgICAgIH0KK0BlbmRACisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgorICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8oIHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAgICAgJHtpfV9nZXRfZW50cnkoIHRhYmxlX2luZm8tPmluZGV4ZXMgKTsKKyAgICAKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgICAgICAgICBAaWYgJGMuc2V0dGFibGVACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKK0BpZiAkaS5yb3dzdGF0dXNACisgIEBpZiAkYy5yb3dzdGF0dXNACisgICAgICAgICAgICAgICAgc3dpdGNoICgqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcikgeworICAgICAgICAgICAgICAgIGNhc2UgUlNfQ1JFQVRFQU5ER086CisgICAgICAgICAgICAgICAgY2FzZSBSU19DUkVBVEVBTkRXQUlUOgorICAgICAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgJHtpfV9yZW1vdmVFbnRyeSh0YWJsZV9lbnRyeSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgIEBlbHNlQAorICAgICAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorICAgICAgICAgICAgICAgIG1lbWNweSggdGFibGVfZW50cnktPiRjLAorICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8kYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQoIHRhYmxlX2VudHJ5LT5vbGRfJGMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiR7Y31fbGVuID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfJHtjfV9sZW47CisgICAgICAgICAgICAgICAgQGVsc2VACisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiRjICAgICA9IHRhYmxlX2VudHJ5LT5vbGRfJGM7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8kYyA9IDA7CisgICAgICAgICAgICAgICAgQGVuZEAKKyAgQGVuZEAKK0BlbHNlQAorICBAaWYgJGMuY3JlYXRhYmxlQAorICAgICAgICAgICAgICAgIGlmICggdGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCApIHsKKyAgICAgICAgICAgICAgICAgICAgJHtpfV9yZW1vdmVFbnRyeSh0YWJsZV9lbnRyeSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACisgICAgICAgICAgICAgICAgICAgIG1lbWNweSggdGFibGVfZW50cnktPiRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfJGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOworICAgICAgICAgICAgICAgICAgICBtZW1zZXQoIHRhYmxlX2VudHJ5LT5vbGRfJGMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW4gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfJHtjfV9sZW47CisgICAgICAgICAgICAgICAgICAgIEBlbHNlQAorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMgICAgID0gdGFibGVfZW50cnktPm9sZF8kYzsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8kYyA9IDA7CisgICAgICAgICAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICAgICAgfQorICBAZWxzZUAKKyAgICAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICBtZW1jcHkoIHRhYmxlX2VudHJ5LT4kYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfJGMsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CisgICAgICAgICAgICAgICAgbWVtc2V0KCB0YWJsZV9lbnRyeS0+b2xkXyRjLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4ke2N9X2xlbiA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkXyR7Y31fbGVuOworICAgICAgICAgICAgICAgIEBlbHNlQAorICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYyAgICAgPSB0YWJsZV9lbnRyeS0+b2xkXyRjOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfJGMgPSAwOworICAgICAgICAgICAgICAgIEBlbmRACisgIEBlbmRACitAZW5kQAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKK0BpZiAkaS5jcmVhdGFibGVACisgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyggICAgcmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICAgICAke2l9X2dldF9lbnRyeSggdGFibGVfaW5mby0+aW5kZXhlcyApOworICAgIAorICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKK0BpZiAkaS5yb3dzdGF0dXNACisgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgICAgICAgICBAaWYgJGMucm93c3RhdHVzQAorICAgICAgICAgICAgY2FzZSBDT0xVTU5fJGMudWM6CisgICAgICAgICAgICAgICAgc3dpdGNoICgqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcikgeworICAgICAgICAgICAgICAgIGNhc2UgUlNfQ1JFQVRFQU5ER086CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT52YWxpZCA9IDE7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhbGwtdGhyb3VnaCAqLworICAgICAgICAgICAgICAgIGNhc2UgUlNfQUNUSVZFOgorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMgPSBSU19BQ1RJVkU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBSU19DUkVBVEVBTkRXQUlUOgorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+dmFsaWQgPSAxOworICAgICAgICAgICAgICAgICAgICAvKiBGYWxsLXRocm91Z2ggKi8KKyAgICAgICAgICAgICAgICBjYXNlIFJTX05PVElOU0VSVklDRToKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiRjID0gUlNfTk9USU5TRVJWSUNFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgUlNfREVTVFJPWToKKyAgICAgICAgICAgICAgICAgICAgJHtpfV9yZW1vdmVFbnRyeSh0YWJsZV9lbnRyeSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACitAZWxzZUAKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5jcmVhdGFibGVACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgICAgIGlmICggdGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCApIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPnZhbGlkID0gMTsKKyAgICAgICAgICAgICAgICB9CitAZW5kQAorICAgICAgICAgICAgfQorICAgICAgICB9CitAZW5kQAorICAgICAgICBicmVhazsKK0BlbmRACisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisvKiogSW5pdGlhbGl6ZSB0aGUgJGkgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCitzdGF0aWMgdm9pZAoraW5pdGlhbGl6ZV90YWJsZV8kaSh2b2lkKQoreworICAgIGNvbnN0IG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAiJGkiLCAgICAgJHtpfV9oYW5kbGVyLAorICAgICAgICAgICAgICAke2l9X29pZCwgT0lEX0xFTkdUSCgke2l9X29pZCksCitAaWYgJGkuc2V0dGFibGVACisgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURQorQGVsc2VACisgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZCitAZW5kQAorICAgICAgICAgICAgICApOworCisgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYoIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKTsKKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLAorICAgIEBmb3JlYWNoICRpZHggaW5kZXhACisgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWR4LnR5cGUsICAvKiBpbmRleDogJGlkeCAqLworICAgIEBlbmRACisgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKworICAgIHRhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fJGZpcnN0X2NvbHVtbi51YzsKKyAgICB0YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gQ09MVU1OXyRsYXN0X2NvbHVtbi51YzsKKworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUoIHJlZywgdGFibGVfaW5mbyApOworCisgICAgLyogSW5pdGlhbGlzZSB0aGUgY29udGVudHMgb2YgdGhlIHRhYmxlIGhlcmUgKi8KK30KKworQGVuZEAKKy8qKiBJbml0aWFsaXplcyB0aGUgJG5hbWUgbW9kdWxlICovCit2b2lkCitpbml0XyRuYW1lKHZvaWQpCit7CisgIC8qIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nICovCisgIEBmb3JlYWNoICRpIHRhYmxlQAorICAgIGluaXRpYWxpemVfdGFibGVfJGkoKTsKKyAgQGVuZEAKK30KZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLnJvdy5jb25mIGIvbG9jYWwvbWliMmMucm93LmNvbmYKaW5kZXggNDY2MTVjMC4uZjczNmJhYSAxMDA3NTUKLS0tIGEvbG9jYWwvbWliMmMucm93LmNvbmYKKysrIGIvbG9jYWwvbWliMmMucm93LmNvbmYKQEAgLTExNywxNiArMTE3LDE3IEBACiB2b2lkCiBpbml0aWFsaXplX3RhYmxlXyRpKHZvaWQpCiB7Ci0gICAgc3RhdGljIG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKLSAgICBzaXplX3QgJHtpfV9vaWRfbGVuICAgPSBPSURfTEVOR1RIKCR7aX1fb2lkKTsKKyAgICBjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwogICAgIHN0cnVjdCAke2l9X2VudHJ5ICAgICAgICAgICAgICAgKnJvdzsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgICAgICAgICAgICppZHhzOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKKyAgICBERUJVR01TR1RMKCgiJHtuYW1lfTppbml0IiwgImluaXRpYWxpemluZyB0YWJsZSAkaVxuIikpOworCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICIkaSIsICAgICAke2l9X2hhbmRsZXIsCi0gICAgICAgICAgICAgICR7aX1fb2lkLCAke2l9X29pZF9sZW4sCisgICAgICAgICAgICAgICR7aX1fb2lkLCBPSURfTEVOR1RIKCR7aX1fb2lkKSwKIEBpZiAkaS5zZXR0YWJsZUAKICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFCiBAZWxzZUAKQEAgLTIxMiwxMCArMjEzLDkgQEAKICAgICB2MiA9IHYyLT5uZXh0X3ZhcmlhYmxlOwogICAgQGVuZEAKICAgIEBpZiAkaWR4Lm5lZWRsZW5ndGhACi0gICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCB2MiwgJGlkeC50eXBlLCAodV9jaGFyKilyb3ctPiRpZHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3ctPiR7aWR4fV9sZW4pOworICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggdjIsICRpZHgudHlwZSwgcm93LT4kaWR4LCByb3ctPiR7aWR4fV9sZW4pOwogICAgQGVsc2VACi0gICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHYyLCAkaWR4LnR5cGUsICh1X2NoYXIqKXJvdy0+JGlkeCk7CisgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHYyLCAkaWR4LnR5cGUsIHJvdy0+JGlkeCk7CiAgICBAZW5kQAogICAgQGV2YWwgJGZpcnN0PTBACiAgIEBlbmRACkBAIC0yMzcsNiArMjM3LDggQEAKICAgICBzdHJ1Y3QgJHtpfV9lbnRyeSAgICAgICAgICAqdGFibGVfZW50cnk7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHJldDsKIAorICAgIERFQlVHTVNHVEwoKCIke25hbWV9OmhhbmRsZXIiLCAiUHJvY2Vzc2luZyByZXF1ZXN0ICglZClcbiIsIHJlcWluZm8tPm1vZGUpKTsKKwogICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgewogICAgICAgICAvKgogICAgICAgICAgKiBSZWFkLXN1cHBvcnQgKGFsc28gY292ZXJzIEdldE5leHQgcmVxdWVzdHMpCkBAIC0yNTIsNyArMjU0LDcgQEAKICAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgogICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKil0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW4pOwogICAgICAgICAgICAgQGVsc2VACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLnNjYWxhci5jb25mIGIvbG9jYWwvbWliMmMuc2NhbGFyLmNvbmYKaW5kZXggNDM4MzYxYi4uMzAyNGZhNCAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMuc2NhbGFyLmNvbmYKKysrIGIvbG9jYWwvbWliMmMuc2NhbGFyLmNvbmYKQEAgLTM2LDcgKzM2LDcgQEAKIGluaXRfJG5hbWUodm9pZCkKIHsKICAgQGZvcmVhY2ggJGkgc2NhbGFyQAotICAgIHN0YXRpYyBvaWQgJHtpfV9vaWRbXSA9IHsgJGkuY29tbWFvaWQgfTsKKyAgICBjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHsgJGkuY29tbWFvaWQgfTsKICAgQGVuZEAKIAogICBERUJVR01TR1RMKCgiJG5hbWUiLCAiSW5pdGlhbGl6aW5nXG4iKSk7CkBAIC03NSw3ICs3NSw3IEBACiAKICAgICAgICAgY2FzZSBNT0RFX0dFVDoKICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCAkaS50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgLyogWFhYOiBhIHBvaW50ZXIgdG8gdGhlIHNjYWxhcidzIGRhdGEgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWFhYOiBhIHBvaW50ZXIgdG8gdGhlIHNjYWxhcidzIGRhdGEgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWFhYOiB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIGluIGJ5dGVzICovKTsKICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmYgYi9sb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmYKaW5kZXggZWRmZjA2Yy4uNzc1YzAyMSAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMudGFibGVfZGF0YS5jb25mCisrKyBiL2xvY2FsL21pYjJjLnRhYmxlX2RhdGEuY29uZgpAQCAtNzAsOCArNzAsOCBAQAogdm9pZAogaW5pdGlhbGl6ZV90YWJsZV8kaSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07Ci0gICAgc2l6ZV90ICR7aX1fb2lkX2xlbiAgID0gT0lEX0xFTkdUSCgke2l9X29pZCk7CisgICAgY29uc3Qgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OworICAgIGNvbnN0IHNpemVfdCAke2l9X29pZF9sZW4gICA9IE9JRF9MRU5HVEgoJHtpfV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKICAgICBuZXRzbm1wX3RkYXRhICAgICAgICAgICAgICAgICAgICp0YWJsZV9kYXRhOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CkBAIC03OSw2ICs3OSw4IEBACiAgICAgbmV0c25tcF9jYWNoZSAgICAgICAgICAgICAgICAgICAqY2FjaGU7CiBAZW5kQAogCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aW5pdCIsICJpbml0aWFsaXppbmcgdGFibGUgJGlcbiIpKTsKKwogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAiJGkiLCAgICAgJHtpfV9oYW5kbGVyLAogICAgICAgICAgICAgICAke2l9X29pZCwgJHtpfV9vaWRfbGVuLApAQCAtMjg1LDYgKzI4Nyw4IEBACiAgICAgc3RydWN0ICR7aX1fZW50cnkgICAgICAgICAgKnRhYmxlX2VudHJ5OwogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICByZXQ7CiAKKyAgICBERUJVR01TR1RMKCgiJHtuYW1lfTpoYW5kbGVyIiwgIlByb2Nlc3NpbmcgcmVxdWVzdCAoJWQpXG4iLCByZXFpbmZvLT5tb2RlKSk7CisKICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKICAgICAgICAgLyoKICAgICAgICAgICogUmVhZC1zdXBwb3J0IChhbHNvIGNvdmVycyBHZXROZXh0IHJlcXVlc3RzKQpAQCAtMzA5LDcgKzMxMyw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKil0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW4pOwogICAgICAgICAgICAgQGVsc2VACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKQEAgLTM0OCw3ICszNTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICh0YWJsZV9lbnRyeSA/IFJTX0FDVElWRSA6IFJTX05PTkVYSVNURU5UICkpOwogICAgICAgICAgICAgQGVsc2VACiAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKLQkgICAgICAgIC8qIG9yIHBvc3NpYmxjICduZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX3NpemUnICovCisJICAgICAgICAvKiBvciBwb3NzaWJseSAnbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplJyAqLwogICAgICAgICAgICAgICAgIHJldCA9IG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOwogICAgICAgICAgICAgQGVsc2VACmRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAyN2Q0OThhLi5iMzZjNGFkCi0tLSBhL2x0bWFpbi5zaAorKysgYi9sdG1haW4uc2gKQEAgLTEsNTIgKzEsODMgQEAKLSMgbHRtYWluLnNoIC0gUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCi0jIE5PVEU6IENoYW5naW5nIHRoaXMgZmlsZSB3aWxsIG5vdCBhZmZlY3QgYW55dGhpbmcgdW50aWwgeW91IHJlcnVuIGNvbmZpZ3VyZS4KLSMKLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAotIyAyMDA3LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSMgT3JpZ2luYWxseSBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgR2VuZXJhdGVkIGZyb20gbHRtYWluLm00c2guCisKKyMgbHRtYWluLnNoIChHTlUgbGlidG9vbCkgMi4yLjYKKyMgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKKworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KKyMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisKKyMgR05VIExpYnRvb2wgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgogIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorIyBpZiB5b3UgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gb3IgbGlicmFyeSB0aGF0CisjIGlzIGJ1aWx0IHVzaW5nIEdOVSBMaWJ0b29sLCB5b3UgbWF5IGluY2x1ZGUgdGhpcyBmaWxlIHVuZGVyIHRoZQorIyBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKyMKKyMgR05VIExpYnRvb2wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CiAjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCBHTlUgTGlidG9vbDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIGEgY29weQorIyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCwKKyMgb3Igb2J0YWluZWQgYnkgd3JpdGluZyB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKworIyBVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIFtNT0RFLUFSR10uLi4KICMKLSMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQotIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKLSMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKLSMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotCi1iYXNlbmFtZT0icyxeLiovLCxnIgotCi0jIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKLSMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCi0jIHRoZSBfWFBHIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBlcXVhbCB0byAxIChvbmUpLCB0aGUgc3BlY2lhbAotIyBwb3NpdGlvbmFsIHBhcmFtZXRlciAkMCwgd2l0aGluIGEgZnVuY3Rpb24gY2FsbCwgaXMgdGhlIG5hbWUgb2YgdGhlCi0jIGZ1bmN0aW9uLgotcHJvZ3BhdGg9IiQwIgotCi0jIFRoZSBuYW1lIG9mIHRoaXMgcHJvZ3JhbToKLXByb2duYW1lPWBlY2hvICIkcHJvZ3BhdGgiIHwgJFNFRCAkYmFzZW5hbWVgCi1tb2RlbmFtZT0iJHByb2duYW1lIgotCi0jIEdsb2JhbCB2YXJpYWJsZXM6Ci1FWElUX1NVQ0NFU1M9MAotRVhJVF9GQUlMVVJFPTEKKyMgUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCisjCisjICAgICAtLWNvbmZpZyAgICAgICAgICAgICBzaG93IGFsbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcworIyAgICAgLS1kZWJ1ZyAgICAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZworIyAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKKyMgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAorIyAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKKyMgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKKyMgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKKyMgICAgIC0tdGFnPVRBRyAgICAgICAgICAgIHVzZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmcm9tIHRhZyBUQUcKKyMgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgIHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgKGRlZmF1bHQpCisjICAgICAtLXZlcnNpb24gICAgICAgICAgICBwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uCisjIC1oLCAtLWhlbHAgICAgICAgICAgICAgICBwcmludCBzaG9ydCBvciBsb25nIGhlbHAgbWVzc2FnZQorIworIyBNT0RFIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisjCisjICAgICAgIGNsZWFuICAgICAgICAgICAgICByZW1vdmUgZmlsZXMgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5CisjICAgICAgIGNvbXBpbGUgICAgICAgICAgICBjb21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgb2JqZWN0CisjICAgICAgIGV4ZWN1dGUgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQorIyAgICAgICBmaW5pc2ggICAgICAgICAgICAgY29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBvZiBsaWJ0b29sIGxpYnJhcmllcworIyAgICAgICBpbnN0YWxsICAgICAgICAgICAgaW5zdGFsbCBsaWJyYXJpZXMgb3IgZXhlY3V0YWJsZXMKKyMgICAgICAgbGluayAgICAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQorIyAgICAgICB1bmluc3RhbGwgICAgICAgICAgcmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxlZCBkaXJlY3RvcnkKKyMKKyMgTU9ERS1BUkdTIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBNT0RFLgorIyBUcnkgYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPU1PREUnIGZvciBhIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgTU9ERS4KKyMKKyMgV2hlbiByZXBvcnRpbmcgYSBidWcsIHBsZWFzZSBkZXNjcmliZSBhIHRlc3QgY2FzZSB0byByZXByb2R1Y2UgaXQgYW5kCisjIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKKyMKKyMgICAgICAgaG9zdC10cmlwbGV0OgkkaG9zdAorIyAgICAgICBzaGVsbDoJCSRTSEVMTAorIyAgICAgICBjb21waWxlcjoJCSRMVENDCisjICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCisjICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCisjICAgICAgICRwcm9nbmFtZToJCShHTlUgbGlidG9vbCkgMi4yLjYKKyMgICAgICAgYXV0b21ha2U6CQkkYXV0b21ha2VfdmVyc2lvbgorIyAgICAgICBhdXRvY29uZjoJCSRhdXRvY29uZl92ZXJzaW9uCisjCisjIFJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KIAogUFJPR1JBTT1sdG1haW4uc2gKIFBBQ0tBR0U9bGlidG9vbAotVkVSU0lPTj0xLjUuMjYKLVRJTUVTVEFNUD0iICgxLjEyMjAuMi40OTIgMjAwOC8wMS8zMCAwNjo0MDo1NikiCitWRVJTSU9OPTIuMi42CitUSU1FU1RBTVA9IiIKK3BhY2thZ2VfcmV2aXNpb249MS4zMDEyCiAKLSMgQmUgQm91cm5lIGNvbXBhdGlibGUgKHRha2VuIGZyb20gQXV0b2NvbmY6X0FTX0JPVVJORV9DT01QQVRJQkxFKS4KKyMgQmUgQm91cm5lIGNvbXBhdGlibGUKIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgogICBlbXVsYXRlIHNoCiAgIE5VTExDTUQ9OgpAQCAtNjAsMTggKzkxLDQ4MyBAQAogQklOX1NIPXhwZzQ7IGV4cG9ydCBCSU5fU0ggIyBmb3IgVHJ1NjQKIERVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKIAotIyBDaGVjayB0aGF0IHdlIGhhdmUgYSB3b3JraW5nICRlY2hvLgorIyBOTFMgbnVpc2FuY2VzOiBXZSBzYXZlIHRoZSBvbGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KKyMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCisjIFRoZXNlIG11c3Qgbm90IGJlIHNldCB1bmNvbmRpdGlvbmFsbHkgYmVjYXVzZSBub3QgYWxsIHN5c3RlbXMgdW5kZXJzdGFuZAorIyBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLgorbHRfdXNlcl9sb2NhbGU9CitsdF9zYWZlX2xvY2FsZT0KK2ZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUworZG8KKyAgZXZhbCAiaWYgdGVzdCBcIlwkeyRsdF92YXIrc2V0fVwiID0gc2V0OyB0aGVuCisgICAgICAgICAgc2F2ZV8kbHRfdmFyPVwkJGx0X3ZhcgorICAgICAgICAgICRsdF92YXI9QworCSAgZXhwb3J0ICRsdF92YXIKKwkgIGx0X3VzZXJfbG9jYWxlPVwiJGx0X3Zhcj1cXFwkc2F2ZV9cJGx0X3ZhcjsgXCRsdF91c2VyX2xvY2FsZVwiCisJICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCisJZmkiCitkb25lCisKKyRsdF91bnNldCBDRFBBVEgKKworCisKKworCis6ICR7Q1A9ImNwIC1mIn0KKzogJHtFQ0hPPSJlY2hvIn0KKzogJHtFR1JFUD0iL3Vzci9iaW4vZ3JlcCAtRSJ9Cis6ICR7RkdSRVA9Ii91c3IvYmluL2dyZXAgLUYifQorOiAke0dSRVA9Ii91c3IvYmluL2dyZXAifQorOiAke0xOX1M9ImxuIC1zIn0KKzogJHtNQUtFPSJtYWtlIn0KKzogJHtNS0RJUj0ibWtkaXIifQorOiAke01WPSJtdiAtZiJ9Cis6ICR7Uk09InJtIC1mIn0KKzogJHtTRUQ9Ii9vcHQvbG9jYWwvYmluL2dzZWQifQorOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9Cis6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KKworIyBHbG9iYWwgdmFyaWFibGVzOgorRVhJVF9TVUNDRVNTPTAKK0VYSVRfRkFJTFVSRT0xCitFWElUX01JU01BVENIPTYzICAjICQ/ID0gNjMgaXMgdXNlZCB0byBpbmRpY2F0ZSB2ZXJzaW9uIG1pc21hdGNoIHRvIG1pc3NpbmcuCitFWElUX1NLSVA9NzcJICAjICQ/ID0gNzcgaXMgdXNlZCB0byBpbmRpY2F0ZSBhIHNraXBwZWQgdGVzdCB0byBhdXRvbWFrZS4KKworZXhpdF9zdGF0dXM9JEVYSVRfU1VDQ0VTUworCisjIE1ha2Ugc3VyZSBJRlMgaGFzIGEgc2Vuc2libGUgZGVmYXVsdAorbHRfbmw9JworJworSUZTPSIgCSRsdF9ubCIKKworZGlybmFtZT0icywvW14vXSokLCwiCitiYXNlbmFtZT0icyxeLiovLCwiCisKKyMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKyMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKyMgY2FsbDoKKyMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCisjICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKyMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisjICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKyMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCisjIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCisjIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKK3sKKyAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKyAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCisgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKyAgZWxzZQorICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKyAgZmkKKyAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKK30KKworIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUuCisKKyMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAorIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKKyMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCisjIHBvc2l0aW9uYWwgcGFyYW1ldGVyICQwLCB3aXRoaW4gYSBmdW5jdGlvbiBjYWxsLCBpcyB0aGUgbmFtZSBvZiB0aGUKKyMgZnVuY3Rpb24uCitwcm9ncGF0aD0iJDAiCisKKyMgVGhlIG5hbWUgb2YgdGhpcyBwcm9ncmFtOgorIyBJbiB0aGUgdW5saWtlbHkgZXZlbnQgJHByb2duYW1lIGJlZ2FuIHdpdGggYSAnLScsIGl0IHdvdWxkIHBsYXkgaGF2b2Mgd2l0aAorIyBmdW5jX2VjaG8gKGltYWdpbmUgcHJvZ25hbWU9LW4pLCBzbyB3ZSBwcmVwZW5kIC4vIGluIHRoYXQgY2FzZToKK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiRwcm9ncGF0aCIKK3Byb2duYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorY2FzZSAkcHJvZ25hbWUgaW4KKyAgLSopIHByb2duYW1lPS4vJHByb2duYW1lIDs7Citlc2FjCisKKyMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gYWJzb2x1dGUgcGF0aCBmb3IgcmVleGVjdXRpb246CitjYXNlICRwcm9ncGF0aCBpbgorICBbXFwvXSp8W0EtWmEtel06XFwqKSA7OworICAqW1xcL10qKQorICAgICBwcm9nZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CisgICAgIHByb2dkaXI9YGNkICIkcHJvZ2RpciIgJiYgcHdkYAorICAgICBwcm9ncGF0aD0iJHByb2dkaXIvJHByb2duYW1lIgorICAgICA7OworICAqKQorICAgICBzYXZlX0lGUz0iJElGUyIKKyAgICAgSUZTPToKKyAgICAgZm9yIHByb2dkaXIgaW4gJFBBVEg7IGRvCisgICAgICAgSUZTPSIkc2F2ZV9JRlMiCisgICAgICAgdGVzdCAteCAiJHByb2dkaXIvJHByb2duYW1lIiAmJiBicmVhaworICAgICBkb25lCisgICAgIElGUz0iJHNhdmVfSUZTIgorICAgICB0ZXN0IC1uICIkcHJvZ2RpciIgfHwgcHJvZ2Rpcj1gcHdkYAorICAgICBwcm9ncGF0aD0iJHByb2dkaXIvJHByb2duYW1lIgorICAgICA7OworZXNhYworCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCisjIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorWHNlZD0iJHtTRUR9IicgLWUgMXMvXlgvLycKK3NlZF9xdW90ZV9zdWJzdD0ncy9cKFtgIiRcXF1cKS9cXFwxL2cnCisKKyMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgorZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJworCisjIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQorIyBgXCctZWQgaW4gaW5wdXQgdG8gdGhlIHNhbWUuICBJZiBhbiBvZGQgbnVtYmVyIG9mIGBcJyBwcmVjZWRlZCBhICckJworIyBpbiBpbnB1dCB0byBkb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbSBleHBhbnNpb24uCisjIFNpbmNlIGVhY2ggaW5wdXQgYFwnIGlzIG5vdyB0d28gYFwncywgbG9vayBmb3IgYW55IG51bWJlciBvZiBydW5zIG9mCisjIGZvdXIgYFwncyBmb2xsb3dlZCBieSB0d28gYFwncyBhbmQgdGhlbiBhICckJy4gIGBcJyB0aGF0ICckJy4KK2JzPSdcXCcKK2JzMj0nXFxcXCcKK2JzND0nXFxcXFxcXFwnCitkb2xsYXI9J1wkJworc2VkX2RvdWJsZV9iYWNrc2xhc2g9IlwKKyAgcy8kYnM0LyZcXAorL2cKKyAgcy9eJGJzMiRkb2xsYXIvJGJzJi8KKyAgcy9cXChbXiRic11cXCkkYnMyJGRvbGxhci9cXDEkYnMyJGJzJGRvbGxhci9nCisgIHMvXG4vL2ciCisKKyMgU3RhbmRhcmQgb3B0aW9uczoKK29wdF9kcnlfcnVuPWZhbHNlCitvcHRfaGVscD1mYWxzZQorb3B0X3F1aWV0PWZhbHNlCitvcHRfdmVyYm9zZT1mYWxzZQorb3B0X3dhcm5pbmc9OgorCisjIGZ1bmNfZWNobyBhcmcuLi4KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSwgYWxvbmcgd2l0aCB0aGUgY3VycmVudCBtb2RlCisjIG5hbWUgaWYgaXQgaGFzIGJlZW4gc2V0IHlldC4KK2Z1bmNfZWNobyAoKQoreworICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICQqIgorfQorCisjIGZ1bmNfdmVyYm9zZSBhcmcuLi4KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSBpbiB2ZXJib3NlIG1vZGUgb25seS4KK2Z1bmNfdmVyYm9zZSAoKQoreworICAgICRvcHRfdmVyYm9zZSAmJiBmdW5jX2VjaG8gJHsxKyIkQCJ9CisKKyAgICAjIEEgYnVnIGluIGJhc2ggaGFsdHMgdGhlIHNjcmlwdCBpZiB0aGUgbGFzdCBsaW5lIG9mIGEgZnVuY3Rpb24KKyAgICAjIGZhaWxzIHdoZW4gc2V0IC1lIGlzIGluIGZvcmNlLCBzbyB3ZSBuZWVkIGFub3RoZXIgY29tbWFuZCB0bworICAgICMgd29yayBhcm91bmQgdGhhdDoKKyAgICA6Cit9CisKKyMgZnVuY19lcnJvciBhcmcuLi4KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KK2Z1bmNfZXJyb3IgKCkKK3sKKyAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAiJHsxKyIkQCJ9IDE+JjIKK30KKworIyBmdW5jX3dhcm5pbmcgYXJnLi4uCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KK2Z1bmNfd2FybmluZyAoKQoreworICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiB3YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKKworICAgICMgYmFzaCBidWcgYWdhaW46CisgICAgOgorfQorCisjIGZ1bmNfZmF0YWxfZXJyb3IgYXJnLi4uCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGFuZCBleGl0LgorZnVuY19mYXRhbF9lcnJvciAoKQoreworICAgIGZ1bmNfZXJyb3IgJHsxKyIkQCJ9CisgICAgZXhpdCAkRVhJVF9GQUlMVVJFCit9CisKKyMgZnVuY19mYXRhbF9oZWxwIGFyZy4uLgorIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBmb2xsb3dlZCBieQorIyBhIGhlbHAgaGludCwgYW5kIGV4aXQuCitmdW5jX2ZhdGFsX2hlbHAgKCkKK3sKKyAgICBmdW5jX2Vycm9yICR7MSsiJEAifQorICAgIGZ1bmNfZmF0YWxfZXJyb3IgIiRoZWxwIgorfQoraGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAgIyMgZGVmYXVsdAorCisKKyMgZnVuY19ncmVwIGV4cHJlc3Npb24gZmlsZW5hbWUKKyMgQ2hlY2sgd2hldGhlciBFWFBSRVNTSU9OIG1hdGNoZXMgYW55IGxpbmUgb2YgRklMRU5BTUUsIHdpdGhvdXQgb3V0cHV0LgorZnVuY19ncmVwICgpCit7CisgICAgJEdSRVAgIiQxIiAiJDIiID4vZGV2L251bGwgMj4mMQorfQorCisKKyMgZnVuY19ta2Rpcl9wIGRpcmVjdG9yeS1wYXRoCisjIE1ha2Ugc3VyZSB0aGUgZW50aXJlIHBhdGggdG8gRElSRUNUT1JZLVBBVEggaXMgYXZhaWxhYmxlLgorZnVuY19ta2Rpcl9wICgpCit7CisgICAgbXlfZGlyZWN0b3J5X3BhdGg9IiQxIgorICAgIG15X2Rpcl9saXN0PQorCisgICAgaWYgdGVzdCAtbiAiJG15X2RpcmVjdG9yeV9wYXRoIiAmJiB0ZXN0ICIkb3B0X2RyeV9ydW4iICE9ICI6IjsgdGhlbgorCisgICAgICAjIFByb3RlY3QgZGlyZWN0b3J5IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nCisgICAgICBjYXNlICRteV9kaXJlY3RvcnlfcGF0aCBpbgorICAgICAgICAtKikgbXlfZGlyZWN0b3J5X3BhdGg9Ii4vJG15X2RpcmVjdG9yeV9wYXRoIiA7OworICAgICAgZXNhYworCisgICAgICAjIFdoaWxlIHNvbWUgcG9ydGlvbiBvZiBESVIgZG9lcyBub3QgeWV0IGV4aXN0Li4uCisgICAgICB3aGlsZSB0ZXN0ICEgLWQgIiRteV9kaXJlY3RvcnlfcGF0aCI7IGRvCisgICAgICAgICMgLi4ubWFrZSBhIGxpc3QgaW4gdG9wbW9zdCBmaXJzdCBvcmRlci4gIFVzZSBhIGNvbG9uIGRlbGltaXRlZAorCSMgbGlzdCBpbmNhc2Ugc29tZSBwb3J0aW9uIG9mIHBhdGggY29udGFpbnMgd2hpdGVzcGFjZS4KKyAgICAgICAgbXlfZGlyX2xpc3Q9IiRteV9kaXJlY3RvcnlfcGF0aDokbXlfZGlyX2xpc3QiCisKKyAgICAgICAgIyBJZiB0aGUgbGFzdCBwb3J0aW9uIGFkZGVkIGhhcyBubyBzbGFzaCBpbiBpdCwgdGhlIGxpc3QgaXMgZG9uZQorICAgICAgICBjYXNlICRteV9kaXJlY3RvcnlfcGF0aCBpbiAqLyopIDs7ICopIGJyZWFrIDs7IGVzYWMKKworICAgICAgICAjIC4uLm90aGVyd2lzZSB0aHJvdyBhd2F5IHRoZSBjaGlsZCBkaXJlY3RvcnkgYW5kIGxvb3AKKyAgICAgICAgbXlfZGlyZWN0b3J5X3BhdGg9YCRFQ0hPICJYJG15X2RpcmVjdG9yeV9wYXRoIiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCisgICAgICBkb25lCisgICAgICBteV9kaXJfbGlzdD1gJEVDSE8gIlgkbXlfZGlyX2xpc3QiIHwgJFhzZWQgLWUgJ3MsOiokLCwnYAorCisgICAgICBzYXZlX21rZGlyX3BfSUZTPSIkSUZTIjsgSUZTPSc6JworICAgICAgZm9yIG15X2RpciBpbiAkbXlfZGlyX2xpc3Q7IGRvCisJSUZTPSIkc2F2ZV9ta2Rpcl9wX0lGUyIKKyAgICAgICAgIyBta2RpciBjYW4gZmFpbCB3aXRoIGEgYEZpbGUgZXhpc3QnIGVycm9yIGlmIHR3byBwcm9jZXNzZXMKKyAgICAgICAgIyB0cnkgdG8gY3JlYXRlIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgY29uY3VycmVudGx5LiAgRG9uJ3QKKyAgICAgICAgIyBzdG9wIGluIHRoYXQgY2FzZSEKKyAgICAgICAgJE1LRElSICIkbXlfZGlyIiAyPi9kZXYvbnVsbCB8fCA6CisgICAgICBkb25lCisgICAgICBJRlM9IiRzYXZlX21rZGlyX3BfSUZTIgorCisgICAgICAjIEJhaWwgb3V0IGlmIHdlIChvciBzb21lIG90aGVyIHByb2Nlc3MpIGZhaWxlZCB0byBjcmVhdGUgYSBkaXJlY3RvcnkuCisgICAgICB0ZXN0IC1kICIkbXlfZGlyZWN0b3J5X3BhdGgiIHx8IFwKKyAgICAgICAgZnVuY19mYXRhbF9lcnJvciAiRmFpbGVkIHRvIGNyZWF0ZSBcYCQxJyIKKyAgICBmaQorfQorCisKKyMgZnVuY19ta3RlbXBkaXIgW3N0cmluZ10KKyMgTWFrZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdGhhdCB3b24ndCBjbGFzaCB3aXRoIG90aGVyIHJ1bm5pbmcKKyMgbGlidG9vbCBwcm9jZXNzZXMsIGFuZCBhdm9pZHMgcmFjZSBjb25kaXRpb25zIGlmIHBvc3NpYmxlLiAgSWYKKyMgZ2l2ZW4sIFNUUklORyBpcyB0aGUgYmFzZW5hbWUgZm9yIHRoYXQgZGlyZWN0b3J5LgorZnVuY19ta3RlbXBkaXIgKCkKK3sKKyAgICBteV90ZW1wbGF0ZT0iJHtUTVBESVItL3RtcH0vJHsxLSRwcm9nbmFtZX0iCisKKyAgICBpZiB0ZXN0ICIkb3B0X2RyeV9ydW4iID0gIjoiOyB0aGVuCisgICAgICAjIFJldHVybiBhIGRpcmVjdG9yeSBuYW1lLCBidXQgZG9uJ3QgY3JlYXRlIGl0IGluIGRyeS1ydW4gbW9kZQorICAgICAgbXlfdG1wZGlyPSIke215X3RlbXBsYXRlfS0kJCIKKyAgICBlbHNlCisKKyAgICAgICMgSWYgbWt0ZW1wIHdvcmtzLCB1c2UgdGhhdCBmaXJzdCBhbmQgZm9yZW1vc3QKKyAgICAgIG15X3RtcGRpcj1gbWt0ZW1wIC1kICIke215X3RlbXBsYXRlfS1YWFhYWFhYWCIgMj4vZGV2L251bGxgCisKKyAgICAgIGlmIHRlc3QgISAtZCAiJG15X3RtcGRpciI7IHRoZW4KKyAgICAgICAgIyBGYWlsaW5nIHRoYXQsIGF0IGxlYXN0IHRyeSBhbmQgdXNlICRSQU5ET00gdG8gYXZvaWQgYSByYWNlCisgICAgICAgIG15X3RtcGRpcj0iJHtteV90ZW1wbGF0ZX0tJHtSQU5ET00tMH0kJCIKKworICAgICAgICBzYXZlX21rdGVtcGRpcl91bWFzaz1gdW1hc2tgCisgICAgICAgIHVtYXNrIDAwNzcKKyAgICAgICAgJE1LRElSICIkbXlfdG1wZGlyIgorICAgICAgICB1bWFzayAkc2F2ZV9ta3RlbXBkaXJfdW1hc2sKKyAgICAgIGZpCisKKyAgICAgICMgSWYgd2UncmUgbm90IGluIGRyeS1ydW4gbW9kZSwgYm9tYiBvdXQgb24gZmFpbHVyZQorICAgICAgdGVzdCAtZCAiJG15X3RtcGRpciIgfHwgXAorICAgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgXGAkbXlfdG1wZGlyJyIKKyAgICBmaQorCisgICAgJEVDSE8gIlgkbXlfdG1wZGlyIiB8ICRYc2VkCit9CisKKworIyBmdW5jX3F1b3RlX2Zvcl9ldmFsIGFyZworIyBBZXN0aGV0aWNhbGx5IHF1b3RlIEFSRyB0byBiZSBldmFsZWQgbGF0ZXIuCisjIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0d28gdmFsdWVzOiBGVU5DX1FVT1RFX0ZPUl9FVkFMX1JFU1VMVAorIyBpcyBkb3VibGUtcXVvdGVkLCBzdWl0YWJsZSBmb3IgYSBzdWJzZXF1ZW50IGV2YWwsIHdoZXJlYXMKKyMgRlVOQ19RVU9URV9GT1JfRVZBTF9VTlFVT1RFRF9SRVNVTFQgaGFzIG1lcmVseSBhbGwgY2hhcmFjdGVycworIyB3aGljaCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUgcXVvdGVzIGJhY2tzbGFzaGlmaWVkLgorZnVuY19xdW90ZV9mb3JfZXZhbCAoKQoreworICAgIGNhc2UgJDEgaW4KKyAgICAgICpbXFxcYFwiXCRdKikKKwlmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD1gJEVDSE8gIlgkMSIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgIDs7CisgICAgICAqKQorICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD0iJDEiIDs7CisgICAgZXNhYworCisgICAgY2FzZSAkZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQgaW4KKyAgICAgICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhY2hhcmFjdGVycyB0byBkZWxheQorICAgICAgIyB3b3JkIHNwbGl0dGluZywgY29tbWFuZCBzdWJzdGl0dXRpb24gYW5kIGFuZCB2YXJpYWJsZQorICAgICAgIyBleHBhbnNpb24gZm9yIGEgc3Vic2VxdWVudCBldmFsLgorICAgICAgIyBNYW55IEJvdXJuZSBzaGVsbHMgY2Fubm90IGhhbmRsZSBjbG9zZSBicmFja2V0cyBjb3JyZWN0bHkKKyAgICAgICMgaW4gc2NhbiBzZXRzLCBzbyB3ZSBzcGVjaWZ5IGl0IHNlcGFyYXRlbHkuCisgICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKKyAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQ9IlwiJGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0XCIiCisgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdD0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0IgorICAgIGVzYWMKK30KKworCisjIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCBhcmcKKyMgQWVzdGhldGljYWxseSBxdW90ZSBBUkcgdG8gYmUgZXZhbGVkIGxhdGVyOyBzYW1lIGFzIGFib3ZlLAorIyBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCitmdW5jX3F1b3RlX2Zvcl9leHBhbmQgKCkKK3sKKyAgICBjYXNlICQxIGluCisgICAgICAqW1xcXGBcIl0qKQorCW15X2FyZz1gJEVDSE8gIlgkMSIgfCAkWHNlZCBcCisJICAgIC1lICIkZG91YmxlX3F1b3RlX3N1YnN0IiAtZSAiJHNlZF9kb3VibGVfYmFja3NsYXNoImAgOzsKKyAgICAgICopCisgICAgICAgIG15X2FyZz0iJDEiIDs7CisgICAgZXNhYworCisgICAgY2FzZSAkbXlfYXJnIGluCisgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgc2hlbGwgbWV0YWNoYXJhY3RlcnMgdG8gZGVsYXkKKyAgICAgICMgd29yZCBzcGxpdHRpbmcgYW5kIGNvbW1hbmQgc3Vic3RpdHV0aW9uIGZvciBhIHN1YnNlcXVlbnQgZXZhbC4KKyAgICAgICMgTWFueSBCb3VybmUgc2hlbGxzIGNhbm5vdCBoYW5kbGUgY2xvc2UgYnJhY2tldHMgY29ycmVjdGx5CisgICAgICAjIGluIHNjYW4gc2V0cywgc28gd2Ugc3BlY2lmeSBpdCBzZXBhcmF0ZWx5LgorICAgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCisgICAgICAgIG15X2FyZz0iXCIkbXlfYXJnXCIiCisgICAgICAgIDs7CisgICAgZXNhYworCisgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdD0iJG15X2FyZyIKK30KKworCisjIGZ1bmNfc2hvd19ldmFsIGNtZCBbZmFpbF9leHBdCisjIFVubGVzcyBvcHRfc2lsZW50IGlzIHRydWUsIHRoZW4gb3V0cHV0IENNRC4gIFRoZW4sIGlmIG9wdF9kcnlydW4gaXMKKyMgbm90IHRydWUsIGV2YWx1YXRlIENNRC4gIElmIHRoZSBldmFsdWF0aW9uIG9mIENNRCBmYWlscywgYW5kIEZBSUxfRVhQCisjIGlzIGdpdmVuLCB0aGVuIGV2YWx1YXRlIGl0LgorZnVuY19zaG93X2V2YWwgKCkKK3sKKyAgICBteV9jbWQ9IiQxIgorICAgIG15X2ZhaWxfZXhwPSIkezItOn0iCisKKyAgICAke29wdF9zaWxlbnQtZmFsc2V9IHx8IHsKKyAgICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJG15X2NtZCIKKyAgICAgIGV2YWwgImZ1bmNfZWNobyAkZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdCIKKyAgICB9CisKKyAgICBpZiAke29wdF9kcnlfcnVuLWZhbHNlfTsgdGhlbiA6OyBlbHNlCisgICAgICBldmFsICIkbXlfY21kIgorICAgICAgbXlfc3RhdHVzPSQ/CisgICAgICBpZiB0ZXN0ICIkbXlfc3RhdHVzIiAtZXEgMDsgdGhlbiA6OyBlbHNlCisJZXZhbCAiKGV4aXQgJG15X3N0YXR1cyk7ICRteV9mYWlsX2V4cCIKKyAgICAgIGZpCisgICAgZmkKK30KKworCisjIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSBjbWQgW2ZhaWxfZXhwXQorIyBVbmxlc3Mgb3B0X3NpbGVudCBpcyB0cnVlLCB0aGVuIG91dHB1dCBDTUQuICBUaGVuLCBpZiBvcHRfZHJ5cnVuIGlzCisjIG5vdCB0cnVlLCBldmFsdWF0ZSBDTUQuICBJZiB0aGUgZXZhbHVhdGlvbiBvZiBDTUQgZmFpbHMsIGFuZCBGQUlMX0VYUAorIyBpcyBnaXZlbiwgdGhlbiBldmFsdWF0ZSBpdC4gIFVzZSB0aGUgc2F2ZWQgbG9jYWxlIGZvciBldmFsdWF0aW9uLgorZnVuY19zaG93X2V2YWxfbG9jYWxlICgpCit7CisgICAgbXlfY21kPSIkMSIKKyAgICBteV9mYWlsX2V4cD0iJHsyLTp9IgorCisgICAgJHtvcHRfc2lsZW50LWZhbHNlfSB8fCB7CisgICAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRteV9jbWQiCisgICAgICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCisgICAgfQorCisgICAgaWYgJHtvcHRfZHJ5X3J1bi1mYWxzZX07IHRoZW4gOjsgZWxzZQorICAgICAgZXZhbCAiJGx0X3VzZXJfbG9jYWxlCisJICAgICRteV9jbWQiCisgICAgICBteV9zdGF0dXM9JD8KKyAgICAgIGV2YWwgIiRsdF9zYWZlX2xvY2FsZSIKKyAgICAgIGlmIHRlc3QgIiRteV9zdGF0dXMiIC1lcSAwOyB0aGVuIDo7IGVsc2UKKwlldmFsICIoZXhpdCAkbXlfc3RhdHVzKTsgJG15X2ZhaWxfZXhwIgorICAgICAgZmkKKyAgICBmaQorfQorCisKKworCisKKyMgZnVuY192ZXJzaW9uCisjIEVjaG8gdmVyc2lvbiBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KK2Z1bmNfdmVyc2lvbiAoKQoreworICAgICRTRUQgLW4gJy9eIyAnJFBST0dSQU0nIChHTlUgLywvIyB3YXJyYW50eTsgLyB7CisgICAgICAgIHMvXiMgLy8KKwlzL14jICokLy8KKyAgICAgICAgcy9cKChDKVwpWyAwLTksLV0qXCggWzEtOV1bMC05XSpcKS9cMVwyLworICAgICAgICBwCisgICAgIH0nIDwgIiRwcm9ncGF0aCIKKyAgICAgZXhpdCAkPworfQorCisjIGZ1bmNfdXNhZ2UKKyMgRWNobyBzaG9ydCBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorZnVuY191c2FnZSAoKQoreworICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIC1oLyB7CisgICAgICAgIHMvXiMgLy8KKwlzL14jICokLy8KKwlzL1wkcHJvZ25hbWUvJyRwcm9nbmFtZScvCisJcAorICAgIH0nIDwgIiRwcm9ncGF0aCIKKyAgICAkRUNITworICAgICRFQ0hPICJydW4gXGAkcHJvZ25hbWUgLS1oZWxwIHwgbW9yZScgZm9yIGZ1bGwgdXNhZ2UiCisgICAgZXhpdCAkPworfQorCisjIGZ1bmNfaGVscAorIyBFY2hvIGxvbmcgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KK2Z1bmNfaGVscCAoKQoreworICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIFJlcG9ydCBidWdzIHRvLyB7CisgICAgICAgIHMvXiMgLy8KKwlzL14jICokLy8KKwlzKlwkcHJvZ25hbWUqJyRwcm9nbmFtZScqCisJcypcJGhvc3QqJyIkaG9zdCInKgorCXMqXCRTSEVMTConIiRTSEVMTCInKgorCXMqXCRMVENDKiciJExUQ0MiJyoKKwlzKlwkTFRDRkxBR1MqJyIkTFRDRkxBR1MiJyoKKwlzKlwkTEQqJyIkTEQiJyoKKwlzL1wkd2l0aF9nbnVfbGQvJyIkd2l0aF9nbnVfbGQiJy8KKwlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoYXV0b21ha2UgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KKwlzL1wkYXV0b2NvbmZfdmVyc2lvbi8nImAoYXV0b2NvbmYgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KKwlwCisgICAgIH0nIDwgIiRwcm9ncGF0aCIKKyAgICBleGl0ICQ/Cit9CisKKyMgZnVuY19taXNzaW5nX2FyZyBhcmduYW1lCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IgYW5kIHNldCBnbG9iYWwKKyMgZXhpdF9jbWQuCitmdW5jX21pc3NpbmdfYXJnICgpCit7CisgICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEiCisgICAgZXhpdF9jbWQ9ZXhpdAorfQorCitleGl0X2NtZD06CisKKworCisKKworIyBDaGVjayB0aGF0IHdlIGhhdmUgYSB3b3JraW5nICRFQ0hPLgogaWYgdGVzdCAiWCQxIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgogICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KICAgc2hpZnQKIGVsaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KICAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgogICA6Ci1lbGlmIHRlc3QgIlhgKCRlY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgotICAjIFlpcHBlZSwgJGVjaG8gd29ya3MhCitlbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgorICAjIFlpcHBlZSwgJEVDSE8gd29ya3MhCiAgIDoKIGVsc2UKLSAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSAkZWNobyB3aWxsIHdvcmsuCisgICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbCwgYW5kIHRoZW4gbWF5YmUgJEVDSE8gd2lsbCB3b3JrLgogICBleGVjICRTSEVMTCAiJHByb2dwYXRoIiAtLW5vLXJlZXhlYyAkezErIiRAIn0KIGZpCiAKQEAgLTg0LDE2MSArNTgwLDQyNCBAQAogICBleGl0ICRFWElUX1NVQ0NFU1MKIGZpCiAKLWRlZmF1bHRfbW9kZT0KLWhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKIG1hZ2ljPSIlJSVNQUdJQyB2YXJpYWJsZSUlJSIKLW1rZGlyPSJta2RpciIKLW12PSJtdiAtZiIKLXJtPSJybSAtZiIKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcwotIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KLVhzZWQ9IiR7U0VEfSInIC1lIDFzL15YLy8nCi1zZWRfcXVvdGVfc3Vic3Q9J3MvXChbXFxgXFwiJFxcXFxdXCkvXFxcMS9nJwotIyB0ZXN0IEVCQ0RJQyBvciBBU0NJSQotY2FzZSBgZWNobyBYfHRyIFggJ1wxMDEnYCBpbgotIEEpICMgQVNDSUkgYmFzZWQgc3lzdGVtCi0gICAgIyBcbiBpcyBub3QgaW50ZXJwcmV0ZWQgY29ycmVjdGx5IGJ5IFNvbGFyaXMgOCAvdXNyL3VjYi90cgotICBTUDJOTD0ndHIgXDA0MCBcMDEyJwotICBOTDJTUD0ndHIgXDAxNVwwMTIgXDA0MFwwNDAnCi0gIDs7Ci0gKikgIyBFQkNESUMgYmFzZWQgc3lzdGVtCi0gIFNQMk5MPSd0ciBcMTAwIFxuJwotICBOTDJTUD0ndHIgXHJcbiBcMTAwXDEwMCcKLSAgOzsKLWVzYWMKLQotIyBOTFMgbnVpc2FuY2VzLgotIyBPbmx5IHNldCBMQU5HIGFuZCBMQ19BTEwgdG8gQyBpZiBhbHJlYWR5IHNldC4KLSMgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5kCi0jIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCi0jIFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgotbHRfZW52PQotZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCi1kbwotICBldmFsICJpZiB0ZXN0IFwiXCR7JGx0X3ZhcitzZXR9XCIgPSBzZXQ7IHRoZW4KLQkgIHNhdmVfJGx0X3Zhcj1cJCRsdF92YXIKLQkgIGx0X2Vudj1cIiRsdF92YXI9XCQkbHRfdmFyIFwkbHRfZW52XCIKLQkgICRsdF92YXI9QwotCSAgZXhwb3J0ICRsdF92YXIKLQlmaSIKLWRvbmUKLQotaWYgdGVzdCAtbiAiJGx0X2VudiI7IHRoZW4KLSAgbHRfZW52PSJlbnYgJGx0X2VudiIKLWZpCi0KLSMgTWFrZSBzdXJlIElGUyBoYXMgYSBzZW5zaWJsZSBkZWZhdWx0Ci1sdF9ubD0nCi0nCi1JRlM9IiAJJGx0X25sIgotCi1pZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KLSAgJGVjaG8gIiRtb2RlbmFtZTogbm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIgMT4mMgotICAkZWNobyAiRmF0YWwgY29uZmlndXJhdGlvbiBlcnJvci4gIFNlZSB0aGUgJFBBQ0tBR0UgZG9jcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDE+JjIKLSAgZXhpdCAkRVhJVF9GQUlMVVJFCi1maQorbWFnaWNfZXhlPSIlJSVNQUdJQyBFWEUgdmFyaWFibGUlJSUiCiAKICMgR2xvYmFsIHZhcmlhYmxlcy4KLW1vZGU9JGRlZmF1bHRfbW9kZQorIyAkbW9kZSBpcyB1bnNldAogbm9ub3B0PQotcHJldj0KLXByZXZvcHQ9Ci1ydW49Ci1zaG93PSIkZWNobyIKLXNob3dfaGVscD0KIGV4ZWN1dGVfZGxmaWxlcz0KLWR1cGxpY2F0ZV9kZXBzPW5vCiBwcmVzZXJ2ZV9hcmdzPQogbG8ybz0icy9cXC5sb1wkLy4ke29iamV4dH0vIgogbzJsbz0icy9cXC4ke29iamV4dH1cJC8ubG8vIgogZXh0cmFjdGVkX2FyY2hpdmVzPQogZXh0cmFjdGVkX3NlcmlhbD0wCiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgU2hlbGwgZnVuY3Rpb24gZGVmaW5pdGlvbnM6Ci0jIFRoaXMgc2VlbXMgdG8gYmUgdGhlIGJlc3QgcGxhY2UgZm9yIHRoZW0KK29wdF9kcnlfcnVuPWZhbHNlCitvcHRfZHVwbGljYXRlX2RlcHM9ZmFsc2UKK29wdF9zaWxlbnQ9ZmFsc2UKK29wdF9kZWJ1Zz06CiAKLSMgZnVuY19ta3RlbXBkaXIgW3N0cmluZ10KLSMgTWFrZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdGhhdCB3b24ndCBjbGFzaCB3aXRoIG90aGVyIHJ1bm5pbmcKLSMgbGlidG9vbCBwcm9jZXNzZXMsIGFuZCBhdm9pZHMgcmFjZSBjb25kaXRpb25zIGlmIHBvc3NpYmxlLiAgSWYKLSMgZ2l2ZW4sIFNUUklORyBpcyB0aGUgYmFzZW5hbWUgZm9yIHRoYXQgZGlyZWN0b3J5LgotZnVuY19ta3RlbXBkaXIgKCkKKyMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gYW55IG9mIHRoZSBhY3Rpb25zLCB0aGUgY29tbWFuZCBpbiBpdAorIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCisjIGxlZnQgb3ZlciBieSBzaGVsbHMuCitleGVjX2NtZD0KKworIyBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gYXJnLi4uCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5CisjIGEgY29uZmlndXJhdGlvbiBmYWlsdXJlIGhpbnQsIGFuZCBleGl0LgorZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICgpCiB7Ci0gICAgbXlfdGVtcGxhdGU9IiR7VE1QRElSLS90bXB9LyR7MS0kcHJvZ25hbWV9IgotCi0gICAgaWYgdGVzdCAiJHJ1biIgPSAiOiI7IHRoZW4KLSAgICAgICMgUmV0dXJuIGEgZGlyZWN0b3J5IG5hbWUsIGJ1dCBkb24ndCBjcmVhdGUgaXQgaW4gZHJ5LXJ1biBtb2RlCi0gICAgICBteV90bXBkaXI9IiR7bXlfdGVtcGxhdGV9LSQkIgotICAgIGVsc2UKLQotICAgICAgIyBJZiBta3RlbXAgd29ya3MsIHVzZSB0aGF0IGZpcnN0IGFuZCBmb3JlbW9zdAotICAgICAgbXlfdG1wZGlyPWBta3RlbXAgLWQgIiR7bXlfdGVtcGxhdGV9LVhYWFhYWFhYIiAyPi9kZXYvbnVsbGAKLQotICAgICAgaWYgdGVzdCAhIC1kICIkbXlfdG1wZGlyIjsgdGhlbgotCSMgRmFpbGluZyB0aGF0LCBhdCBsZWFzdCB0cnkgYW5kIHVzZSAkUkFORE9NIHRvIGF2b2lkIGEgcmFjZQotCW15X3RtcGRpcj0iJHtteV90ZW1wbGF0ZX0tJHtSQU5ET00tMH0kJCIKLQotCXNhdmVfbWt0ZW1wZGlyX3VtYXNrPWB1bWFza2AKLQl1bWFzayAwMDc3Ci0JJG1rZGlyICIkbXlfdG1wZGlyIgotCXVtYXNrICRzYXZlX21rdGVtcGRpcl91bWFzawotICAgICAgZmkKLQotICAgICAgIyBJZiB3ZSdyZSBub3QgaW4gZHJ5LXJ1biBtb2RlLCBib21iIG91dCBvbiBmYWlsdXJlCi0gICAgICB0ZXN0IC1kICIkbXlfdG1wZGlyIiB8fCB7Ci0gICAgICAgICRlY2hvICJjYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgXGAkbXlfdG1wZGlyJyIgMT4mMgotCWV4aXQgJEVYSVRfRkFJTFVSRQotICAgICAgfQotICAgIGZpCi0KLSAgICAkZWNobyAiWCRteV90bXBkaXIiIHwgJFhzZWQKKyAgICBmdW5jX2Vycm9yICR7MSsiJEAifQorICAgIGZ1bmNfZXJyb3IgIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisgICAgZnVuY19mYXRhbF9lcnJvciAiRmF0YWwgY29uZmlndXJhdGlvbiBlcnJvci4iCiB9CiAKIAotIyBmdW5jX3dpbjMyX2xpYmlkIGFyZwotIyByZXR1cm4gdGhlIGxpYnJhcnkgdHlwZSBvZiBmaWxlICdhcmcnCi0jCi0jIE5lZWQgYSBsb3Qgb2YgZ29vIHRvIGhhbmRsZSAqYm90aCogRExMcyBhbmQgaW1wb3J0IGxpYnMKLSMgSGFzIHRvIGJlIGEgc2hlbGwgZnVuY3Rpb24gaW4gb3JkZXIgdG8gJ2VhdCcgdGhlIGFyZ3VtZW50Ci0jIHRoYXQgaXMgc3VwcGxpZWQgd2hlbiAkZmlsZV9tYWdpY19jb21tYW5kIGlzIGNhbGxlZC4KLWZ1bmNfd2luMzJfbGliaWQgKCkKKyMgZnVuY19jb25maWcKKyMgRGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBmb3IgYWxsIHRoZSB0YWdzIGluIHRoaXMgc2NyaXB0LgorZnVuY19jb25maWcgKCkKIHsKLSAgd2luMzJfbGliaWRfdHlwZT0idW5rbm93biIKLSAgd2luMzJfZmlsZXJlcz1gZmlsZSAtTCAkMSAyPi9kZXYvbnVsbGAKLSAgY2FzZSAkd2luMzJfZmlsZXJlcyBpbgotICAqYXJcIGFyY2hpdmVcIGltcG9ydFwgbGlicmFyeSopICMgZGVmaW5pdGVseSBpbXBvcnQKLSAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCi0gICAgOzsKLSAgKmFyXCBhcmNoaXZlKikgIyBjb3VsZCBiZSBhbiBpbXBvcnQsIG9yIHN0YXRpYwotICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwgXAotICAgICAgJEVHUkVQIC1lICdmaWxlIGZvcm1hdCBwZS1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nID4vZGV2L251bGwgOyB0aGVuCi0gICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgJDEgfCBcCi0JJFNFRCAtbiAtZSAnMSwxMDB7Ci0JCS8gSSAvewotCQkJcywuKixpbXBvcnQsCi0JCQlwCi0JCQlxCi0JCQl9Ci0JCX0nYAotICAgICAgY2FzZSAkd2luMzJfbm1yZXMgaW4KLSAgICAgIGltcG9ydCopICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiOzsKLSAgICAgICopICAgICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBzdGF0aWMiOzsKLSAgICAgIGVzYWMKKyAgICByZV9iZWdpbmNmPSdeIyAjIyMgQkVHSU4gTElCVE9PTCcKKyAgICByZV9lbmRjZj0nXiMgIyMjIEVORCBMSUJUT09MJworCisgICAgIyBEZWZhdWx0IGNvbmZpZ3VyYXRpb24uCisgICAgJFNFRCAiMSwvJHJlX2JlZ2luY2YgQ09ORklHL2Q7LyRyZV9lbmRjZiBDT05GSUcvLFwkZCIgPCAiJHByb2dwYXRoIgorCisgICAgIyBOb3cgcHJpbnQgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgdGFncy4KKyAgICBmb3IgdGFnbmFtZSBpbiAkdGFnbGlzdDsgZG8KKyAgICAgICRTRUQgLW4gIi8kcmVfYmVnaW5jZiBUQUcgQ09ORklHOiAkdGFnbmFtZVwkLywvJHJlX2VuZGNmIFRBRyBDT05GSUc6ICR0YWduYW1lXCQvcCIgPCAiJHByb2dwYXRoIgorICAgIGRvbmUKKworICAgIGV4aXQgJD8KK30KKworIyBmdW5jX2ZlYXR1cmVzCisjIERpc3BsYXkgdGhlIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGlzIHNjcmlwdC4KK2Z1bmNfZmVhdHVyZXMgKCkKK3sKKyAgICAkRUNITyAiaG9zdDogJGhvc3QiCisgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KKyAgICAgICRFQ0hPICJlbmFibGUgc2hhcmVkIGxpYnJhcmllcyIKKyAgICBlbHNlCisgICAgICAkRUNITyAiZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIgogICAgIGZpCi0gICAgOzsKLSAgKkRMTCopCi0gICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IERMTCIKLSAgICA7OwotICAqZXhlY3V0YWJsZSopICMgYnV0IHNoZWxsIHNjcmlwdHMgYXJlICJleGVjdXRhYmxlIiB0b28uLi4KLSAgICBjYXNlICR3aW4zMl9maWxlcmVzIGluCi0gICAgKk1TXCBXaW5kb3dzXCBQRVwgSW50ZWwqKQotICAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IERMTCIKKyAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCisgICAgICAkRUNITyAiZW5hYmxlIHN0YXRpYyBsaWJyYXJpZXMiCisgICAgZWxzZQorICAgICAgJEVDSE8gImRpc2FibGUgc3RhdGljIGxpYnJhcmllcyIKKyAgICBmaQorCisgICAgZXhpdCAkPworfQorCisjIGZ1bmNfZW5hYmxlX3RhZyB0YWduYW1lCisjIFZlcmlmeSB0aGF0IFRBR05BTUUgaXMgdmFsaWQsIGFuZCBlaXRoZXIgZmxhZyBhbiBlcnJvciBhbmQgZXhpdCwgb3IKKyMgZW5hYmxlIHRoZSBUQUdOQU1FIHRhZy4gIFdlIGFsc28gYWRkIFRBR05BTUUgdG8gdGhlIGdsb2JhbCAkdGFnbGlzdAorIyB2YXJpYWJsZSBoZXJlLgorZnVuY19lbmFibGVfdGFnICgpCit7CisgICMgR2xvYmFsIHZhcmlhYmxlOgorICB0YWduYW1lPSIkMSIKKworICByZV9iZWdpbmNmPSJeIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZVwkIgorICByZV9lbmRjZj0iXiMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lXCQiCisgIHNlZF9leHRyYWN0Y2Y9Ii8kcmVfYmVnaW5jZi8sLyRyZV9lbmRjZi9wIgorCisgICMgVmFsaWRhdGUgdGFnbmFtZS4KKyAgY2FzZSAkdGFnbmFtZSBpbgorICAgICpbIS1fQS1aYS16MC05LC9dKikKKyAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgdGFnIG5hbWU6ICR0YWduYW1lIgogICAgICAgOzsKLSAgICBlc2FjCisgIGVzYWMKKworICAjIERvbid0IHRlc3QgZm9yIHRoZSAiZGVmYXVsdCIgQyB0YWcsIGFzIHdlIGtub3cgaXQncworICAjIHRoZXJlIGJ1dCBub3Qgc3BlY2lhbGx5IG1hcmtlZC4KKyAgY2FzZSAkdGFnbmFtZSBpbgorICAgIENDKSA7OworICAgICopCisgICAgICBpZiAkR1JFUCAiJHJlX2JlZ2luY2YiICIkcHJvZ3BhdGgiID4vZGV2L251bGwgMj4mMTsgdGhlbgorCXRhZ2xpc3Q9IiR0YWdsaXN0ICR0YWduYW1lIgorCisJIyBFdmFsdWF0ZSB0aGUgY29uZmlndXJhdGlvbi4gIEJlIGNhcmVmdWwgdG8gcXVvdGUgdGhlIHBhdGgKKwkjIGFuZCB0aGUgc2VkIHNjcmlwdCwgdG8gYXZvaWQgc3BsaXR0aW5nIG9uIHdoaXRlc3BhY2UsIGJ1dAorCSMgYWxzbyBkb24ndCB1c2Ugbm9uLXBvcnRhYmxlIHF1b3RlcyB3aXRoaW4gYmFja3F1b3RlcyB3aXRoaW4KKwkjIHF1b3RlcyB3ZSBoYXZlIHRvIGRvIGl0IGluIDIgc3RlcHM6CisJZXh0cmFjdGVkY2Y9YCRTRUQgLW4gLWUgIiRzZWRfZXh0cmFjdGNmIiA8ICIkcHJvZ3BhdGgiYAorCWV2YWwgIiRleHRyYWN0ZWRjZiIKKyAgICAgIGVsc2UKKwlmdW5jX2Vycm9yICJpZ25vcmluZyB1bmtub3duIHRhZyAkdGFnbmFtZSIKKyAgICAgIGZpCisgICAgICA7OworICBlc2FjCit9CisKKyMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluCisjIHRoZSBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgbGlidG9vbCAtLXZlcnNpb24nIGhhcHBlbiBxdWlja2x5LgoreworCisgICMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAorICBjYXNlICQxIGluCisgIGNsZWFufGNsZWF8Y2xlfGNsKQorICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKKyAgICA7OworICBjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQorICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAorICAgIDs7CisgIGV4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCisgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0CisgICAgOzsKKyAgZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCisgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKyAgICA7OworICBpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQorICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorICAgIDs7CisgIGxpbmt8bGlufGxpfGwpCisgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0CisgICAgOzsKKyAgdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCisgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKICAgICA7OwogICBlc2FjCi0gICRlY2hvICR3aW4zMl9saWJpZF90eXBlCisKKyAgIyBQYXJzZSBub24tbW9kZSBzcGVjaWZpYyBhcmd1bWVudHM6CisgIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KKyAgICBvcHQ9IiQxIgorICAgIHNoaWZ0CisKKyAgICBjYXNlICRvcHQgaW4KKyAgICAgIC0tY29uZmlnKQkJZnVuY19jb25maWcJCQkJCTs7CisKKyAgICAgIC0tZGVidWcpCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgorCQkJb3B0X2RlYnVnPSdzZXQgLXgnCisJCQkkb3B0X2RlYnVnCisJCQk7OworCisgICAgICAtZGxvcGVuKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCisJCQlleGVjdXRlX2RsZmlsZXM9IiRleGVjdXRlX2RsZmlsZXMgJDEiCisJCQlzaGlmdAorCQkJOzsKKworICAgICAgLS1kcnktcnVuIHwgLW4pCW9wdF9kcnlfcnVuPToJCQkJCTs7CisgICAgICAtLWZlYXR1cmVzKSAgICAgICBmdW5jX2ZlYXR1cmVzCQkJCQk7OworICAgICAgLS1maW5pc2gpCQltb2RlPSJmaW5pc2giCQkJCQk7OworCisgICAgICAtLW1vZGUpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKwkJCWNhc2UgJDEgaW4KKwkJCSAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKKwkJCSAgY2xlYW4pCTs7CisJCQkgIGNvbXBpbGUpCTs7CisJCQkgIGV4ZWN1dGUpCTs7CisJCQkgIGZpbmlzaCkJOzsKKwkJCSAgaW5zdGFsbCkJOzsKKwkJCSAgbGluaykJCTs7CisJCQkgIHJlbGluaykJOzsKKwkJCSAgdW5pbnN0YWxsKQk7OworCisJCQkgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorCQkJICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgorCQkJICAgICBleGl0X2NtZD1leGl0CisJCQkgICAgIGJyZWFrCisJCQkgICAgIDs7CisJCSAgICAgICAgZXNhYworCisJCQltb2RlPSIkMSIKKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzKQorCQkJb3B0X2R1cGxpY2F0ZV9kZXBzPToJCQkJOzsKKworICAgICAgLS1xdWlldHwtLXNpbGVudCkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKwkJCW9wdF9zaWxlbnQ9OgorCQkJOzsKKworICAgICAgLS12ZXJib3NlfCAtdikJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKwkJCW9wdF9zaWxlbnQ9ZmFsc2UKKwkJCTs7CisKKyAgICAgIC0tdGFnKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCisJCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0ICQxIgorCQkJZnVuY19lbmFibGVfdGFnICIkMSIJIyB0YWduYW1lIGlzIHNldCBoZXJlCisJCQlzaGlmdAorCQkJOzsKKworICAgICAgIyBTZXBhcmF0ZSBvcHRhcmdzIHRvIGxvbmcgb3B0aW9uczoKKyAgICAgIC1kbG9wZW49KnwtLW1vZGU9KnwtLXRhZz0qKQorCQkJZnVuY19vcHRfc3BsaXQgIiRvcHQiCisJCQlzZXQgZHVtbXkgIiRmdW5jX29wdF9zcGxpdF9vcHQiICIkZnVuY19vcHRfc3BsaXRfYXJnIiAkezErIiRAIn0KKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCQk7OworICAgICAgLS1oZWxwKQkJb3B0X2hlbHA9OgkJCQkJOzsKKyAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCQk7OworCisgICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIgk7OworCisgICAgICAqKQkJbm9ub3B0PSIkb3B0IgorCQkJYnJlYWsKKwkJCTs7CisgICAgZXNhYworICBkb25lCisKKworICBjYXNlICRob3N0IGluCisgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqIHwgKmNlZ2NjKikKKyAgICAgICMgZG9uJ3QgZWxpbWluYXRlIGR1cGxpY2F0aW9ucyBpbiAkcG9zdGRlcHMgYW5kICRwcmVkZXBzCisgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPToKKyAgICAgIDs7CisgICAgKikKKyAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9kdXBsaWNhdGVfZGVwcworICAgICAgOzsKKyAgZXNhYworCisgICMgSGF2aW5nIHdhcm5lZCBhYm91dCBhbGwgbWlzLXNwZWNpZmllZCBvcHRpb25zLCBiYWlsIG91dCBpZgorICAjIGFueXRoaW5nIHdhcyB3cm9uZy4KKyAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKK30KKworIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKyMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKKyMgcmVsZWFzZSBvZiBsaWJ0b29sLgorZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCit7CisgIGlmIHRlc3QgIiRwYWNrYWdlX3JldmlzaW9uIiAhPSAiJG1hY3JvX3JldmlzaW9uIjsgdGhlbgorICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCisgICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKyRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgorJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorX0xUX0VPRgorICAgICAgZWxzZQorICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQorJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tICRQQUNLQUdFICRtYWNyb192ZXJzaW9uLgorJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorX0xUX0VPRgorICAgICAgZmkKKyAgICBlbHNlCisgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCiskcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCiskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uCiskcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCitfTFRfRU9GCisgICAgZmkKKworICAgIGV4aXQgJEVYSVRfTUlTTUFUQ0gKKyAgZmkKK30KKworCisjIyAtLS0tLS0tLS0tLSAjIworIyMgICAgTWFpbi4gICAgIyMKKyMjIC0tLS0tLS0tLS0tICMjCisKKyRvcHRfaGVscCB8fCB7CisgICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKKyAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisKKyAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCisgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgorICBmaQorCisgIHRlc3QgLXogIiRtb2RlIiAmJiBmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogeW91IG11c3Qgc3BlY2lmeSBhIE1PREUuIgorCisKKyAgIyBEYXJ3aW4gc3Vja3MKKyAgZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKKworCisgICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCisgIGlmIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIHRlc3QgIiRtb2RlIiAhPSBleGVjdXRlOyB0aGVuCisgICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgorICAgICRFQ0hPICIkaGVscCIgMT4mMgorICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICBmaQorCisgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KKyAgZ2VuZXJpY19oZWxwPSIkaGVscCIKKyAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKK30KKworCisjIGZ1bmNfbGFsaWJfcCBmaWxlCisjIFRydWUgaWZmIEZJTEUgaXMgYSBsaWJ0b29sIGAubGEnIGxpYnJhcnkgb3IgYC5sbycgb2JqZWN0IGZpbGUuCisjIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhIGJhc2ljIHNhbml0eSBjaGVjazsgaXQgd2lsbCBoYXJkbHkgZmx1c2ggb3V0CisjIGRldGVybWluZWQgaW1wb3N0ZXJzLgorZnVuY19sYWxpYl9wICgpCit7CisgICAgdGVzdCAtZiAiJDEiICYmCisgICAgICAkU0VEIC1lIDRxICIkMSIgMj4vZGV2L251bGwgXAorICAgICAgICB8ICRHUkVQICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIgPiAvZGV2L251bGwgMj4mMQorfQorCisjIGZ1bmNfbGFsaWJfdW5zYWZlX3AgZmlsZQorIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCBgLmxhJyBsaWJyYXJ5IG9yIGAubG8nIG9iamVjdCBmaWxlLgorIyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIHNhbWUgY2hlY2sgYXMgZnVuY19sYWxpYl9wIHdpdGhvdXQKKyMgcmVzb3J0aW5nIHRvIGV4dGVybmFsIHByb2dyYW1zLiAgVG8gdGhpcyBlbmQsIGl0IHJlZGlyZWN0cyBzdGRpbiBhbmQKKyMgY2xvc2VzIGl0IGFmdGVyd2FyZHMsIHdpdGhvdXQgc2F2aW5nIHRoZSBvcmlnaW5hbCBmaWxlIGRlc2NyaXB0b3IuCisjIEFzIGEgc2FmZXR5IG1lYXN1cmUsIHVzZSBpdCBvbmx5IHdoZXJlIGEgbmVnYXRpdmUgcmVzdWx0IHdvdWxkIGJlCisjIGZhdGFsIGFueXdheS4gIFdvcmtzIGlmIGBmaWxlJyBkb2VzIG5vdCBleGlzdC4KK2Z1bmNfbGFsaWJfdW5zYWZlX3AgKCkKK3sKKyAgICBsYWxpYl9wPW5vCisgICAgaWYgdGVzdCAtZiAiJDEiICYmIHRlc3QgLXIgIiQxIiAmJiBleGVjIDU8JjAgPCIkMSI7IHRoZW4KKwlmb3IgbGFsaWJfcF9sIGluIDEgMiAzIDQKKwlkbworCSAgICByZWFkIGxhbGliX3BfbGluZQorCSAgICBjYXNlICIkbGFsaWJfcF9saW5lIiBpbgorCQlcI1wgR2VuZXJhdGVkXCBieVwgKiRQQUNLQUdFKiApIGxhbGliX3A9eWVzOyBicmVhazs7CisJICAgIGVzYWMKKwlkb25lCisJZXhlYyAwPCY1IDU8Ji0KKyAgICBmaQorICAgIHRlc3QgIiRsYWxpYl9wIiA9IHllcworfQorCisjIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdF9wIGZpbGUKKyMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQKKyMgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGEgYmFzaWMgc2FuaXR5IGNoZWNrOyBpdCB3aWxsIGhhcmRseSBmbHVzaCBvdXQKKyMgZGV0ZXJtaW5lZCBpbXBvc3RlcnMuCitmdW5jX2x0d3JhcHBlcl9zY3JpcHRfcCAoKQoreworICAgIGZ1bmNfbGFsaWJfcCAiJDEiCit9CisKKyMgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wIGZpbGUKKyMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgd3JhcHBlciBleGVjdXRhYmxlCisjIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhIGJhc2ljIHNhbml0eSBjaGVjazsgaXQgd2lsbCBoYXJkbHkgZmx1c2ggb3V0CisjIGRldGVybWluZWQgaW1wb3N0ZXJzLgorZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICgpCit7CisgICAgZnVuY19sdHdyYXBwZXJfZXhlY19zdWZmaXg9CisgICAgY2FzZSAkMSBpbgorICAgICouZXhlKSA7OworICAgICopIGZ1bmNfbHR3cmFwcGVyX2V4ZWNfc3VmZml4PS5leGUgOzsKKyAgICBlc2FjCisgICAgJEdSRVAgIiRtYWdpY19leGUiICIkMSRmdW5jX2x0d3JhcHBlcl9leGVjX3N1ZmZpeCIgPi9kZXYvbnVsbCAyPiYxCit9CisKKyMgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSBmaWxlCisjIEFzc3VtZXMgZmlsZSBpcyBhbiBsdHdyYXBwZXJfZXhlY3V0YWJsZQorIyB1c2VzICRmaWxlIHRvIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgZmlsZW5hbWUgZm9yIGEKKyMgdGVtcG9yYXJ5IGx0d3JhcHBlcl9zY3JpcHQuCitmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICgpCit7CisgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiIKKyAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiQxIjsgdGhlbgorCWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKKwlmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwlmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCisgICAgZmkKK30KKworIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKKyMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb3Igd3JhcHBlciBleGVjdXRhYmxlCisjIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhIGJhc2ljIHNhbml0eSBjaGVjazsgaXQgd2lsbCBoYXJkbHkgZmx1c2ggb3V0CisjIGRldGVybWluZWQgaW1wb3N0ZXJzLgorZnVuY19sdHdyYXBwZXJfcCAoKQoreworICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdF9wICIkMSIgfHwgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkMSIKK30KKworCisjIGZ1bmNfZXhlY3V0ZV9jbWRzIGNvbW1hbmRzIGZhaWxfY21kCisjIEV4ZWN1dGUgdGlsZGUtZGVsaW1pdGVkIENPTU1BTkRTLgorIyBJZiBGQUlMX0NNRCBpcyBnaXZlbiwgZXZhbCB0aGF0IHVwb24gZmFpbHVyZS4KKyMgRkFJTF9DTUQgbWF5IHJlYWQtYWNjZXNzIHRoZSBjdXJyZW50IGNvbW1hbmQgaW4gdmFyaWFibGUgQ01EIQorZnVuY19leGVjdXRlX2NtZHMgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgc2F2ZV9pZnM9JElGUzsgSUZTPSd+JworICAgIGZvciBjbWQgaW4gJDE7IGRvCisgICAgICBJRlM9JHNhdmVfaWZzCisgICAgICBldmFsIGNtZD1cIiRjbWRcIgorICAgICAgZnVuY19zaG93X2V2YWwgIiRjbWQiICIkezItOn0iCisgICAgZG9uZQorICAgIElGUz0kc2F2ZV9pZnMKK30KKworCisjIGZ1bmNfc291cmNlIGZpbGUKKyMgU291cmNlIEZJTEUsIGFkZGluZyBkaXJlY3RvcnkgY29tcG9uZW50IGlmIG5lY2Vzc2FyeS4KKyMgTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3Nhcnkgb24gY3lnd2luL21pbmd3IHRvIGFwcGVuZCBhIGRvdCB0bworIyBGSUxFIGV2ZW4gaWYgYm90aCBGSUxFIGFuZCBGSUxFLmV4ZSBleGlzdDogYXV0b21hdGljLWFwcGVuZC0uZXhlCisjIGJlaGF2aW9yIGhhcHBlbnMgb25seSBmb3IgZXhlYygzKSwgbm90IGZvciBvcGVuKDIpISAgQWxzbywgc291cmNpbmcKKyMgYEZJTEUuJyBkb2VzIG5vdCB3b3JrIG9uIGN5Z3dpbiBtYW5hZ2VkIG1vdW50cy4KK2Z1bmNfc291cmNlICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgIGNhc2UgJDEgaW4KKyAgICAqLyogfCAqXFwqKQkuICIkMSIgOzsKKyAgICAqKQkJLiAiLi8kMSIgOzsKKyAgICBlc2FjCiB9CiAKIApAQCAtMjUwLDM5ICsxMDA5LDMyIEBACiAjIGFyZyBpcyB1c3VhbGx5IG9mIHRoZSBmb3JtICdnY2MgLi4uJwogZnVuY19pbmZlcl90YWcgKCkKIHsKKyAgICAkb3B0X2RlYnVnCiAgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KICAgICAgIENDX3F1b3RlZD0KICAgICAgIGZvciBhcmcgaW4gJENDOyBkbwotCWNhc2UgJGFyZyBpbgotCSAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0JICBhcmc9IlwiJGFyZ1wiIgotCSAgOzsKLQllc2FjCi0JQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRhcmciCisgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisJQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKICAgICAgIGRvbmUKICAgICAgIGNhc2UgJEAgaW4KICAgICAgICMgQmxhbmtzIGluIHRoZSBjb21tYW5kIG1heSBoYXZlIGJlZW4gc3RyaXBwZWQgYnkgdGhlIGNhbGxpbmcgc2hlbGwsCiAgICAgICAjIGJ1dCBub3QgZnJvbSB0aGUgQ0MgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBjb25maWd1cmUgd2FzIHJ1bi4KLSAgICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgYCRlY2hvICRDQ2AgIiogfCAiYCRlY2hvICRDQ2AgIiogfCAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiBgJGVjaG8gJENDX3F1b3RlZGAgIiogfCAiYCRlY2hvICRDQ19xdW90ZWRgICIqKSA7OworICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJEVDSE8gJENDYCAiKiB8ICJgJEVDSE8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkRUNITyAkQ0NfcXVvdGVkYCAiKiB8ICJgJEVDSE8gJENDX3F1b3RlZGAgIiopIDs7CiAgICAgICAjIEJsYW5rcyBhdCB0aGUgc3RhcnQgb2YgJGJhc2VfY29tcGlsZSB3aWxsIGNhdXNlIHRoaXMgdG8gZmFpbAogICAgICAgIyBpZiB3ZSBkb24ndCBjaGVjayBmb3IgdGhlbSBhcyB3ZWxsLgogICAgICAgKikKIAlmb3IgeiBpbiAkYXZhaWxhYmxlX3RhZ3M7IGRvCi0JICBpZiBncmVwICJeIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkeiQiIDwgIiRwcm9ncGF0aCIgPiAvZGV2L251bGw7IHRoZW4KKwkgIGlmICRHUkVQICJeIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkeiQiIDwgIiRwcm9ncGF0aCIgPiAvZGV2L251bGw7IHRoZW4KIAkgICAgIyBFdmFsdWF0ZSB0aGUgY29uZmlndXJhdGlvbi4KIAkgICAgZXZhbCAiYCR7U0VEfSAtbiAtZSAnL14jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICckeickLywvXiMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6ICckeickL3AnIDwgJHByb2dwYXRoYCIKIAkgICAgQ0NfcXVvdGVkPQogCSAgICBmb3IgYXJnIGluICRDQzsgZG8KLQkgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotCSAgICBjYXNlICRhcmcgaW4KLQkgICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgICAgICBhcmc9IlwiJGFyZ1wiIgotCSAgICAgIDs7Ci0JICAgIGVzYWMKLQkgICAgQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRhcmciCi0JICBkb25lCisJICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgorCSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisJICAgICAgQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgICAgZG9uZQogCSAgICBjYXNlICIkQCAiIGluCi0JICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJGVjaG8gJENDYCAiKiB8ICJgJGVjaG8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkZWNobyAkQ0NfcXVvdGVkYCAiKiB8ICJgJGVjaG8gJENDX3F1b3RlZGAgIiopCisJICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJEVDSE8gJENDYCAiKiB8ICJgJEVDSE8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkRUNITyAkQ0NfcXVvdGVkYCAiKiB8ICJgJEVDSE8gJENDX3F1b3RlZGAgIiopCiAJICAgICAgIyBUaGUgY29tcGlsZXIgaW4gdGhlIGJhc2UgY29tcGlsZSBjb21tYW5kIG1hdGNoZXMKIAkgICAgICAjIHRoZSBvbmUgaW4gdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9uLgogCSAgICAgICMgQXNzdW1lIHRoaXMgaXMgdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9uIHdlIHdhbnQuCkBAIC0yOTYsMTEgKzEwNDgsMTAgQEAKIAkjIHdhcyBmb3VuZCBhbmQgbGV0IHRoZSB1c2VyIGtub3cgdGhhdCB0aGUgIi0tdGFnIiBjb21tYW5kCiAJIyBsaW5lIG9wdGlvbiBtdXN0IGJlIHVzZWQuCiAJaWYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCi0JICAkZWNobyAiJG1vZGVuYW1lOiB1bmFibGUgdG8gaW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24iCi0JICAkZWNobyAiJG1vZGVuYW1lOiBzcGVjaWZ5IGEgdGFnIHdpdGggXGAtLXRhZyciIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAkZWNobyAiJG1vZGVuYW1lOiB1c2luZyAkdGFnbmFtZSB0YWdnZWQgY29uZmlndXJhdGlvbiIKKwkgIGZ1bmNfZWNobyAidW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uIgorCSAgZnVuY19mYXRhbF9lcnJvciAic3BlY2lmeSBhIHRhZyB3aXRoIFxgLS10YWcnIgorIwllbHNlCisjCSAgZnVuY192ZXJib3NlICJ1c2luZyAkdGFnbmFtZSB0YWdnZWQgY29uZmlndXJhdGlvbiIKIAlmaQogCTs7CiAgICAgICBlc2FjCkBAIC0zMDgsMzU0ICsxMDU5LDQ4IEBACiB9CiAKIAotIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCi1mdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAoKQorCisjIGZ1bmNfd3JpdGVfbGlidG9vbF9vYmplY3Qgb3V0cHV0X25hbWUgcGljX25hbWUgbm9ucGljX25hbWUKKyMgQ3JlYXRlIGEgbGlidG9vbCBvYmplY3QgZmlsZSAoYW5hbG9nb3VzIHRvIGEgIi5sYSIgZmlsZSksCisjIGJ1dCBkb24ndCBjcmVhdGUgaXQgaWYgd2UncmUgZG9pbmcgYSBkcnkgcnVuLgorZnVuY193cml0ZV9saWJ0b29sX29iamVjdCAoKQogewotICAgIGZfZXhfYW5fYXJfZGlyPSIkMSI7IHNoaWZ0Ci0gICAgZl9leF9hbl9hcl9vbGRsaWI9IiQxIgotCi0gICAgJHNob3cgIihjZCAkZl9leF9hbl9hcl9kaXIgJiYgJEFSIHggJGZfZXhfYW5fYXJfb2xkbGliKSIKLSAgICAkcnVuIGV2YWwgIihjZCBcJGZfZXhfYW5fYXJfZGlyICYmICRBUiB4IFwkZl9leF9hbl9hcl9vbGRsaWIpIiB8fCBleGl0ICQ/Ci0gICAgaWYgKCRBUiB0ICIkZl9leF9hbl9hcl9vbGRsaWIiIHwgc29ydCB8IHNvcnQgLXVjID4vZGV2L251bGwgMj4mMSk7IHRoZW4KLSAgICAgOgotICAgIGVsc2UKLSAgICAgICRlY2hvICIkbW9kZW5hbWU6IEVSUk9SOiBvYmplY3QgbmFtZSBjb25mbGljdHM6ICRmX2V4X2FuX2FyX2Rpci8kZl9leF9hbl9hcl9vbGRsaWIiIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCi19Ci0KLSMgZnVuY19leHRyYWN0X2FyY2hpdmVzIGdlbnRvcCBvbGRsaWIgLi4uCi1mdW5jX2V4dHJhY3RfYXJjaGl2ZXMgKCkKLXsKLSAgICBteV9nZW50b3A9IiQxIjsgc2hpZnQKLSAgICBteV9vbGRsaWJzPSR7MSsiJEAifQotICAgIG15X29sZG9ianM9IiIKLSAgICBteV94bGliPSIiCi0gICAgbXlfeGFicz0iIgotICAgIG15X3hkaXI9IiIKLSAgICBteV9zdGF0dXM9IiIKLQotICAgICRzaG93ICIke3JtfXIgJG15X2dlbnRvcCIKLSAgICAkcnVuICR7cm19ciAiJG15X2dlbnRvcCIKLSAgICAkc2hvdyAiJG1rZGlyICRteV9nZW50b3AiCi0gICAgJHJ1biAkbWtkaXIgIiRteV9nZW50b3AiCi0gICAgbXlfc3RhdHVzPSQ/Ci0gICAgaWYgdGVzdCAiJG15X3N0YXR1cyIgLW5lIDAgJiYgdGVzdCAhIC1kICIkbXlfZ2VudG9wIjsgdGhlbgotICAgICAgZXhpdCAkbXlfc3RhdHVzCi0gICAgZmkKLQotICAgIGZvciBteV94bGliIGluICRteV9vbGRsaWJzOyBkbwotICAgICAgIyBFeHRyYWN0IHRoZSBvYmplY3RzLgotICAgICAgY2FzZSAkbXlfeGxpYiBpbgotCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgbXlfeGFicz0iJG15X3hsaWIiIDs7Ci0JKikgbXlfeGFicz1gcHdkYCIvJG15X3hsaWIiIDs7Ci0gICAgICBlc2FjCi0gICAgICBteV94bGliPWAkZWNobyAiWCRteV94bGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCi0gICAgICBteV94bGliX3U9JG15X3hsaWIKLSAgICAgIHdoaWxlIDo7IGRvCi0gICAgICAgIGNhc2UgIiAkZXh0cmFjdGVkX2FyY2hpdmVzICIgaW4KLQkqIiAkbXlfeGxpYl91ICIqKQotCSAgZXh0cmFjdGVkX3NlcmlhbD1gZXhwciAkZXh0cmFjdGVkX3NlcmlhbCArIDFgCi0JICBteV94bGliX3U9bHQkZXh0cmFjdGVkX3NlcmlhbC0kbXlfeGxpYiA7OwotCSopIGJyZWFrIDs7Ci0JZXNhYwotICAgICAgZG9uZQotICAgICAgZXh0cmFjdGVkX2FyY2hpdmVzPSIkZXh0cmFjdGVkX2FyY2hpdmVzICRteV94bGliX3UiCi0gICAgICBteV94ZGlyPSIkbXlfZ2VudG9wLyRteV94bGliX3UiCi0KLSAgICAgICRzaG93ICIke3JtfXIgJG15X3hkaXIiCi0gICAgICAkcnVuICR7cm19ciAiJG15X3hkaXIiCi0gICAgICAkc2hvdyAiJG1rZGlyICRteV94ZGlyIgotICAgICAgJHJ1biAkbWtkaXIgIiRteV94ZGlyIgotICAgICAgZXhpdF9zdGF0dXM9JD8KLSAgICAgIGlmIHRlc3QgIiRleGl0X3N0YXR1cyIgLW5lIDAgJiYgdGVzdCAhIC1kICIkbXlfeGRpciI7IHRoZW4KLQlleGl0ICRleGl0X3N0YXR1cwotICAgICAgZmkKLSAgICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICotZGFyd2luKikKLQkkc2hvdyAiRXh0cmFjdGluZyAkbXlfeGFicyIKLQkjIERvIG5vdCBib3RoZXIgZG9pbmcgYW55dGhpbmcgaWYganVzdCBhIGRyeSBydW4KLQlpZiB0ZXN0IC16ICIkcnVuIjsgdGhlbgotCSAgZGFyd2luX29yaWdfZGlyPWBwd2RgCi0JICBjZCAkbXlfeGRpciB8fCBleGl0ICQ/Ci0JICBkYXJ3aW5fYXJjaGl2ZT0kbXlfeGFicwotCSAgZGFyd2luX2N1cmRpcj1gcHdkYAotCSAgZGFyd2luX2Jhc2VfYXJjaGl2ZT1gJGVjaG8gIlgkZGFyd2luX2FyY2hpdmUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKLQkgIGRhcndpbl9hcmNoZXM9YGxpcG8gLWluZm8gIiRkYXJ3aW5fYXJjaGl2ZSIgMj4vZGV2L251bGwgfCAkRUdSRVAgQXJjaGl0ZWN0dXJlcyAyPi9kZXYvbnVsbGAKLQkgIGlmIHRlc3QgLW4gIiRkYXJ3aW5fYXJjaGVzIjsgdGhlbiAKLQkgICAgZGFyd2luX2FyY2hlcz1gZWNobyAiJGRhcndpbl9hcmNoZXMiIHwgJFNFRCAtZSAncy8uKmFyZTovLydgCi0JICAgIGRhcndpbl9hcmNoPQotCSAgICAkc2hvdyAiJGRhcndpbl9iYXNlX2FyY2hpdmUgaGFzIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMgJGRhcndpbl9hcmNoZXMiCi0JICAgIGZvciBkYXJ3aW5fYXJjaCBpbiAgJGRhcndpbl9hcmNoZXMgOyBkbwotCSAgICAgIG1rZGlyIC1wICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9IgotCSAgICAgIGxpcG8gLXRoaW4gJGRhcndpbl9hcmNoIC1vdXRwdXQgInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0vJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfSIgIiR7ZGFyd2luX2FyY2hpdmV9IgotCSAgICAgIGNkICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9IgotCSAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICJgcHdkYCIgIiR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0iCi0JICAgICAgY2QgIiRkYXJ3aW5fY3VyZGlyIgotCSAgICAgICRybSAidW5mYXQtJCQvJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfS0ke2Rhcndpbl9hcmNofS8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9IgotCSAgICBkb25lICMgJGRhcndpbl9hcmNoZXMKLSAgICAgICMjIE9rYXkgbm93IHdlIGhhdmUgYSBidW5jaCBvZiB0aGluIG9iamVjdHMsIGdvdHRhIGZhdHRlbiB0aGVtIHVwIDopCi0JICAgIGRhcndpbl9maWxlbGlzdD1gZmluZCB1bmZhdC0kJCAtdHlwZSBmIC1uYW1lIFwqLm8gLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludHwgeGFyZ3MgYmFzZW5hbWUgfCBzb3J0IC11IHwgJE5MMlNQYAotCSAgICBkYXJ3aW5fZmlsZT0KLQkgICAgZGFyd2luX2ZpbGVzPQotCSAgICBmb3IgZGFyd2luX2ZpbGUgaW4gJGRhcndpbl9maWxlbGlzdDsgZG8KLQkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8ICROTDJTUGAKLQkgICAgICBsaXBvIC1jcmVhdGUgLW91dHB1dCAiJGRhcndpbl9maWxlIiAkZGFyd2luX2ZpbGVzCi0JICAgIGRvbmUgIyAkZGFyd2luX2ZpbGVsaXN0Ci0JICAgICR7cm19ciB1bmZhdC0kJAotCSAgICBjZCAiJGRhcndpbl9vcmlnX2RpciIKLQkgIGVsc2UKLQkgICAgY2QgIiRkYXJ3aW5fb3JpZ19kaXIiCi0gCSAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKLQkgIGZpICMgJGRhcndpbl9hcmNoZXMKLQlmaSAjICRydW4KLQk7OwotICAgICAgKikKLSAgICAgICAgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgIiRteV94ZGlyIiAiJG15X3hhYnMiCi0gICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJE5MMlNQYAotICAgIGRvbmUKLSAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKLX0KLSMgRW5kIG9mIFNoZWxsIGZ1bmN0aW9uIGRlZmluaXRpb25zCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRGFyd2luIHN1Y2tzCi1ldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgotCi1kaXNhYmxlX2xpYnM9bm8KLQotIyBQYXJzZSBvdXIgY29tbWFuZCBsaW5lIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4KLXdoaWxlIHRlc3QgIiQjIiAtZ3QgMAotZG8KLSAgYXJnPSIkMSIKLSAgc2hpZnQKLQotICBjYXNlICRhcmcgaW4KLSAgLSo9Kikgb3B0YXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgJ3MvWy1fYS16QS1aMC05XSo9Ly8nYCA7OwotICAqKSBvcHRhcmc9IDs7Ci0gIGVzYWMKLQotICAjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMgYW4gYXJndW1lbnQsIGFzc2lnbiBpdC4KLSAgaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCi0gICAgY2FzZSAkcHJldiBpbgotICAgIGV4ZWN1dGVfZGxmaWxlcykKLSAgICAgIGV4ZWN1dGVfZGxmaWxlcz0iJGV4ZWN1dGVfZGxmaWxlcyAkYXJnIgotICAgICAgOzsKLSAgICB0YWcpCi0gICAgICB0YWduYW1lPSIkYXJnIgotICAgICAgcHJlc2VydmVfYXJncz0iJHtwcmVzZXJ2ZV9hcmdzfT0kYXJnIgotCi0gICAgICAjIENoZWNrIHdoZXRoZXIgdGFnbmFtZSBjb250YWlucyBvbmx5IHZhbGlkIGNoYXJhY3RlcnMKLSAgICAgIGNhc2UgJHRhZ25hbWUgaW4KLSAgICAgICpbIS1fQS1aYS16MC05LC9dKikKLQkkZWNobyAiJHByb2duYW1lOiBpbnZhbGlkIHRhZyBuYW1lOiAkdGFnbmFtZSIgMT4mMgotCWV4aXQgJEVYSVRfRkFJTFVSRQotCTs7Ci0gICAgICBlc2FjCi0KLSAgICAgIGNhc2UgJHRhZ25hbWUgaW4KLSAgICAgIENDKQotCSMgRG9uJ3QgdGVzdCBmb3IgdGhlICJkZWZhdWx0IiBDIHRhZywgYXMgd2Uga25vdywgaXQncyB0aGVyZSwgYnV0Ci0JIyBub3Qgc3BlY2lhbGx5IG1hcmtlZC4KLQk7OwotICAgICAgKikKLQlpZiBncmVwICJeIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZSQiIDwgIiRwcm9ncGF0aCIgPiAvZGV2L251bGw7IHRoZW4KLQkgIHRhZ2xpc3Q9IiR0YWdsaXN0ICR0YWduYW1lIgotCSAgIyBFdmFsdWF0ZSB0aGUgY29uZmlndXJhdGlvbi4KLQkgIGV2YWwgImAke1NFRH0gLW4gLWUgJy9eIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAnJHRhZ25hbWUnJC8sL14jICMjIyBFTkQgTElCVE9PTCBUQUcgQ09ORklHOiAnJHRhZ25hbWUnJC9wJyA8ICRwcm9ncGF0aGAiCi0JZWxzZQotCSAgJGVjaG8gIiRwcm9nbmFtZTogaWdub3JpbmcgdW5rbm93biB0YWcgJHRhZ25hbWUiIDE+JjIKLQlmaQotCTs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgICopCi0gICAgICBldmFsICIkcHJldj1cJGFyZyIKLSAgICAgIDs7Ci0gICAgZXNhYwotCi0gICAgcHJldj0KLSAgICBwcmV2b3B0PQotICAgIGNvbnRpbnVlCi0gIGZpCi0KLSAgIyBIYXZlIHdlIHNlZW4gYSBub24tb3B0aW9uYWwgYXJndW1lbnQgeWV0PwotICBjYXNlICRhcmcgaW4KLSAgLS1oZWxwKQotICAgIHNob3dfaGVscD15ZXMKLSAgICA7OwotCi0gIC0tdmVyc2lvbikKLSAgICBlY2hvICJcCi0kUFJPR1JBTSAoR05VICRQQUNLQUdFKSAkVkVSU0lPTiRUSU1FU1RBTVAKLQotQ29weXJpZ2h0IChDKSAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLVRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCi13YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCi0gICAgZXhpdCAkPwotICAgIDs7Ci0KLSAgLS1jb25maWcpCi0gICAgJHtTRUR9IC1lICcxLC9eIyAjIyMgQkVHSU4gTElCVE9PTCBDT05GSUcvZCcgLWUgJy9eIyAjIyMgRU5EIExJQlRPT0wgQ09ORklHLywkZCcgJHByb2dwYXRoCi0gICAgIyBOb3cgcHJpbnQgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgdGFncy4KLSAgICBmb3IgdGFnbmFtZSBpbiAkdGFnbGlzdDsgZG8KLSAgICAgICR7U0VEfSAtbiAtZSAiL14jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lJC8sL14jICMjIyBFTkQgTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZSQvcCIgPCAiJHByb2dwYXRoIgotICAgIGRvbmUKLSAgICBleGl0ICQ/Ci0gICAgOzsKLQotICAtLWRlYnVnKQotICAgICRlY2hvICIkcHJvZ25hbWU6IGVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCi0gICAgc2V0IC14Ci0gICAgcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJGFyZyIKLSAgICA7OwotCi0gIC0tZHJ5LXJ1biB8IC1uKQotICAgIHJ1bj06Ci0gICAgOzsKLQotICAtLWZlYXR1cmVzKQotICAgICRlY2hvICJob3N0OiAkaG9zdCIKKyAgICB3cml0ZV9saWJvYmo9JHsxfQogICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICAkZWNobyAiZW5hYmxlIHNoYXJlZCBsaWJyYXJpZXMiCisgICAgICB3cml0ZV9sb2JqPVwnJHsyfVwnCiAgICAgZWxzZQotICAgICAgJGVjaG8gImRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyIKKyAgICAgIHdyaXRlX2xvYmo9bm9uZQogICAgIGZpCisKICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICAkZWNobyAiZW5hYmxlIHN0YXRpYyBsaWJyYXJpZXMiCisgICAgICB3cml0ZV9vbGRvYmo9XCckezN9XCcKICAgICBlbHNlCi0gICAgICAkZWNobyAiZGlzYWJsZSBzdGF0aWMgbGlicmFyaWVzIgorICAgICAgd3JpdGVfb2xkb2JqPW5vbmUKICAgICBmaQotICAgIGV4aXQgJD8KLSAgICA7OwogCi0gIC0tZmluaXNoKSBtb2RlPSJmaW5pc2giIDs7CisgICAgJG9wdF9kcnlfcnVuIHx8IHsKKyAgICAgIGNhdCA+JHt3cml0ZV9saWJvYmp9VCA8PEVPRgorIyAkd3JpdGVfbGlib2JqIC0gYSBsaWJ0b29sIG9iamVjdCBmaWxlCisjIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT04KKyMKKyMgUGxlYXNlIERPIE5PVCBkZWxldGUgdGhpcyBmaWxlIQorIyBJdCBpcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgdGhlIGxpYnJhcnkuCiAKLSAgLS1tb2RlKSBwcmV2b3B0PSItLW1vZGUiIHByZXY9bW9kZSA7OwotICAtLW1vZGU9KikgbW9kZT0iJG9wdGFyZyIgOzsKKyMgTmFtZSBvZiB0aGUgUElDIG9iamVjdC4KK3BpY19vYmplY3Q9JHdyaXRlX2xvYmoKIAotICAtLXByZXNlcnZlLWR1cC1kZXBzKSBkdXBsaWNhdGVfZGVwcz0ieWVzIiA7OworIyBOYW1lIG9mIHRoZSBub24tUElDIG9iamVjdAorbm9uX3BpY19vYmplY3Q9JHdyaXRlX29sZG9iagogCi0gIC0tcXVpZXQgfCAtLXNpbGVudCkKLSAgICBzaG93PToKLSAgICBwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkYXJnIgotICAgIDs7CitFT0YKKyAgICAgICRNViAiJHt3cml0ZV9saWJvYmp9VCIgIiR7d3JpdGVfbGlib2JqfSIKKyAgICB9Cit9CiAKLSAgLS10YWcpCi0gICAgcHJldm9wdD0iLS10YWciCi0gICAgcHJldj10YWcKLSAgICBwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAtLXRhZyIKLSAgICA7OwotICAtLXRhZz0qKQotICAgIHNldCB0YWcgIiRvcHRhcmciICR7MSsiJEAifQotICAgIHNoaWZ0Ci0gICAgcHJldj10YWcKLSAgICBwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAtLXRhZyIKLSAgICA7OwotCi0gIC1kbG9wZW4pCi0gICAgcHJldm9wdD0iLWRsb3BlbiIKLSAgICBwcmV2PWV4ZWN1dGVfZGxmaWxlcwotICAgIDs7Ci0KLSAgLSopCi0gICAgJGVjaG8gIiRtb2RlbmFtZTogdW5yZWNvZ25pemVkIG9wdGlvbiBcYCRhcmcnIiAxPiYyCi0gICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgOzsKLQotICAqKQotICAgIG5vbm9wdD0iJGFyZyIKLSAgICBicmVhawotICAgIDs7Ci0gIGVzYWMKLWRvbmUKLQotaWYgdGVzdCAtbiAiJHByZXZvcHQiOyB0aGVuCi0gICRlY2hvICIkbW9kZW5hbWU6IG9wdGlvbiBcYCRwcmV2b3B0JyByZXF1aXJlcyBhbiBhcmd1bWVudCIgMT4mMgotICAkZWNobyAiJGhlbHAiIDE+JjIKLSAgZXhpdCAkRVhJVF9GQUlMVVJFCi1maQotCi1jYXNlICRkaXNhYmxlX2xpYnMgaW4KLW5vKSAKLSAgOzsKLXNoYXJlZCkKLSAgYnVpbGRfbGlidG9vbF9saWJzPW5vCi0gIGJ1aWxkX29sZF9saWJzPXllcwotICA7Owotc3RhdGljKQotICBidWlsZF9vbGRfbGlicz1gY2FzZSAkYnVpbGRfbGlidG9vbF9saWJzIGluIHllcykgZWNobyBubzs7ICopIGVjaG8geWVzOzsgZXNhY2AKLSAgOzsKLWVzYWMKLQotIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0Ci0jIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKLSMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KLWV4ZWNfY21kPQotCi1pZiB0ZXN0IC16ICIkc2hvd19oZWxwIjsgdGhlbgotCi0gICMgSW5mZXIgdGhlIG9wZXJhdGlvbiBtb2RlLgotICBpZiB0ZXN0IC16ICIkbW9kZSI7IHRoZW4KLSAgICAkZWNobyAiKioqIFdhcm5pbmc6IGluZmVycmluZyB0aGUgbW9kZSBvZiBvcGVyYXRpb24gaXMgZGVwcmVjYXRlZC4iIDE+JjIKLSAgICAkZWNobyAiKioqIEZ1dHVyZSB2ZXJzaW9ucyBvZiBMaWJ0b29sIHdpbGwgcmVxdWlyZSAtLW1vZGU9TU9ERSBiZSBzcGVjaWZpZWQuIiAxPiYyCi0gICAgY2FzZSAkbm9ub3B0IGluCi0gICAgKmNjIHwgY2MqIHwgKisrIHwgZ2NjKiB8ICotZ2NjKiB8IGcrKyogfCB4bGMqKQotICAgICAgbW9kZT1saW5rCi0gICAgICBmb3IgYXJnCi0gICAgICBkbwotCWNhc2UgJGFyZyBpbgotCS1jKQotCSAgIG1vZGU9Y29tcGlsZQotCSAgIGJyZWFrCi0JICAgOzsKLQllc2FjCi0gICAgICBkb25lCi0gICAgICA7OwotICAgICpkYiB8ICpkYnggfCAqc3RyYWNlIHwgKnRydXNzKQotICAgICAgbW9kZT1leGVjdXRlCi0gICAgICA7OwotICAgICppbnN0YWxsKnxjcHxtdikKLSAgICAgIG1vZGU9aW5zdGFsbAotICAgICAgOzsKLSAgICAqcm0pCi0gICAgICBtb2RlPXVuaW5zdGFsbAotICAgICAgOzsKLSAgICAqKQotICAgICAgIyBJZiB3ZSBoYXZlIG5vIG1vZGUsIGJ1dCBkbGZpbGVzIHdlcmUgc3BlY2lmaWVkLCB0aGVuIGRvIGV4ZWN1dGUgbW9kZS4KLSAgICAgIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIG1vZGU9ZXhlY3V0ZQotCi0gICAgICAjIEp1c3QgdXNlIHRoZSBkZWZhdWx0IG9wZXJhdGlvbiBtb2RlLgotICAgICAgaWYgdGVzdCAteiAiJG1vZGUiOyB0aGVuCi0JaWYgdGVzdCAtbiAiJG5vbm9wdCI7IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGNhbm5vdCBpbmZlciBvcGVyYXRpb24gbW9kZSBmcm9tIFxgJG5vbm9wdCciIDE+JjIKLQllbHNlCi0JICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBjYW5ub3QgaW5mZXIgb3BlcmF0aW9uIG1vZGUgd2l0aG91dCBNT0RFLUFSR1MiIDE+JjIKLQlmaQotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotCi0gICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCi0gIGlmIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIHRlc3QgIiRtb2RlIiAhPSBleGVjdXRlOyB0aGVuCi0gICAgJGVjaG8gIiRtb2RlbmFtZTogdW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIiAxPiYyCi0gICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gIGZpCi0KLSAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgotICBnZW5lcmljX2hlbHA9IiRoZWxwIgotICBoZWxwPSJUcnkgXGAkbW9kZW5hbWUgLS1oZWxwIC0tbW9kZT0kbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotCi0gICMgVGhlc2UgbW9kZXMgYXJlIGluIG9yZGVyIG9mIGV4ZWN1dGlvbiBmcmVxdWVuY3kgc28gdGhhdCB0aGV5IHJ1biBxdWlja2x5LgotICBjYXNlICRtb2RlIGluCi0gICMgbGlidG9vbCBjb21waWxlIG1vZGUKLSAgY29tcGlsZSkKLSAgICBtb2RlbmFtZT0iJG1vZGVuYW1lOiBjb21waWxlIgorIyBmdW5jX21vZGVfY29tcGlsZSBhcmcuLi4KK2Z1bmNfbW9kZV9jb21waWxlICgpCit7CisgICAgJG9wdF9kZWJ1ZwogICAgICMgR2V0IHRoZSBjb21waWxhdGlvbiBjb21tYW5kIGFuZCB0aGUgc291cmNlIGZpbGUuCiAgICAgYmFzZV9jb21waWxlPQogICAgIHNyY2ZpbGU9IiRub25vcHQiICAjICBhbHdheXMga2VlcCBhIG5vbi1lbXB0eSB2YWx1ZSBpbiAic3JjZmlsZSIKQEAgLTY2NCw2ICsxMTA5LDcgQEAKICAgICBhcmdfbW9kZT1ub3JtYWwKICAgICBsaWJvYmo9CiAgICAgbGF0ZXI9CisgICAgcGllX2ZsYWc9CiAKICAgICBmb3IgYXJnCiAgICAgZG8KQEAgLTY4NCwxNSArMTEzMCwxOCBAQAogCSMgQWNjZXB0IGFueSBjb21tYW5kLWxpbmUgb3B0aW9ucy4KIAljYXNlICRhcmcgaW4KIAktbykKLQkgIGlmIHRlc3QgLW4gIiRsaWJvYmoiIDsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgY2Fubm90IHNwZWNpZnkgXGAtbycgbW9yZSB0aGFuIG9uY2UiIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICBmaQorCSAgdGVzdCAtbiAiJGxpYm9iaiIgJiYgXAorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJ5b3UgY2Fubm90IHNwZWNpZnkgXGAtbycgbW9yZSB0aGFuIG9uY2UiCiAJICBhcmdfbW9kZT10YXJnZXQKIAkgIGNvbnRpbnVlCiAJICA7OwogCi0JLXN0YXRpYyB8IC1wcmVmZXItcGljIHwgLXByZWZlci1ub24tcGljKQorCS1waWUgfCAtZnBpZSB8IC1mUElFKQorICAgICAgICAgIHBpZV9mbGFnPSIkcGllX2ZsYWcgJGFyZyIKKwkgIGNvbnRpbnVlCisJICA7OworCisJLXNoYXJlZCB8IC1zdGF0aWMgfCAtcHJlZmVyLXBpYyB8IC1wcmVmZXItbm9uLXBpYykKIAkgIGxhdGVyPSIkbGF0ZXIgJGFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwpAQCAtNzA4LDMxICsxMTU3LDI1IEBACiAJICA7OyAgICAgICAgICAgICMgIHJlcGxhY2VkIGxhdGVyLiAgSSB3b3VsZCBndWVzcyB0aGF0IHdvdWxkIGJlIGEgYnVnLgogCiAJLVdjLCopCi0JICBhcmdzPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgInMvXi1XYywvLyJgCisJICBmdW5jX3N0cmlwbmFtZSAnLVdjLCcgJycgIiRhcmciCisJICBhcmdzPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkgIGxhc3Rhcmc9CiAJICBzYXZlX2lmcz0iJElGUyI7IElGUz0nLCcKLSAJICBmb3IgYXJnIGluICRhcmdzOyBkbworCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KIAkgICAgSUZTPSIkc2F2ZV9pZnMiCi0KLQkgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotCSAgICAjIE1hbnkgQm91cm5lIHNoZWxscyBjYW5ub3QgaGFuZGxlIGNsb3NlIGJyYWNrZXRzIGNvcnJlY3RseQotCSAgICAjIGluIHNjYW4gc2V0cywgc28gd2Ugc3BlY2lmeSBpdCBzZXBhcmF0ZWx5LgotCSAgICBjYXNlICRhcmcgaW4KLQkgICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgICAgICBhcmc9IlwiJGFyZ1wiIgotCSAgICAgIDs7Ci0JICAgIGVzYWMKLQkgICAgbGFzdGFyZz0iJGxhc3RhcmcgJGFyZyIKKwkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKwkgICAgbGFzdGFyZz0iJGxhc3RhcmcgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCSAgZG9uZQogCSAgSUZTPSIkc2F2ZV9pZnMiCi0JICBsYXN0YXJnPWAkZWNobyAiWCRsYXN0YXJnIiB8ICRYc2VkIC1lICJzL14gLy8iYAorCSAgZnVuY19zdHJpcG5hbWUgJyAnICcnICIkbGFzdGFyZyIKKwkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCiAJICAjIEFkZCB0aGUgYXJndW1lbnRzIHRvIGJhc2VfY29tcGlsZS4KIAkgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCi0JKiApCisJKikKIAkgICMgQWNjZXB0IHRoZSBjdXJyZW50IGFyZ3VtZW50IGFzIHRoZSBzb3VyY2UgZmlsZS4KIAkgICMgVGhlIHByZXZpb3VzICJzcmNmaWxlIiBiZWNvbWVzIHRoZSBjdXJyZW50IGFyZ3VtZW50LgogCSAgIwpAQCAtNzQ0LDY2ICsxMTg3LDQyIEBACiAgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCiAKICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgcHJldmlvdXMgYXJndW1lbnQuCi0gICAgICBsYXN0YXJnPWAkZWNobyAiWCRsYXN0YXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQotICAgICAgY2FzZSAkbGFzdGFyZyBpbgotICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotICAgICAgIyBNYW55IEJvdXJuZSBzaGVsbHMgY2Fubm90IGhhbmRsZSBjbG9zZSBicmFja2V0cyBjb3JyZWN0bHkKLSAgICAgICMgaW4gc2NhbiBzZXRzLCBhbmQgc29tZSBTdW5PUyBrc2ggbWlzdHJlYXQgYmFja3NsYXNoLWVzY2FwaW5nCi0gICAgICAjIGluIHNjYW4gc2V0cyAod29ya2VkIGFyb3VuZCB3aXRoIHZhcmlhYmxlIGV4cGFuc2lvbiksCi0gICAgICAjIGFuZCBmdXJ0aGVybW9yZSBjYW5ub3QgaGFuZGxlICd8JyAnJicgJygnICcpJyBpbiBzY2FuIHNldHMgCi0gICAgICAjIGF0IGFsbCwgc28gd2Ugc3BlY2lmeSB0aGVtIHNlcGFyYXRlbHkuCi0gICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQlsYXN0YXJnPSJcIiRsYXN0YXJnXCIiCi0JOzsKLSAgICAgIGVzYWMKLQotICAgICAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRsYXN0YXJnIgorICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGxhc3RhcmciCisgICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogICAgIGRvbmUgIyBmb3IgYXJnCiAKICAgICBjYXNlICRhcmdfbW9kZSBpbgogICAgIGFyZykKLSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYW4gYXJndW1lbnQgZm9yIC1YY29tcGlsZSIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgZnVuY19mYXRhbF9lcnJvciAieW91IG11c3Qgc3BlY2lmeSBhbiBhcmd1bWVudCBmb3IgLVhjb21waWxlIgogICAgICAgOzsKICAgICB0YXJnZXQpCi0gICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgdGFyZ2V0IHdpdGggXGAtbyciIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgZnVuY19mYXRhbF9lcnJvciAieW91IG11c3Qgc3BlY2lmeSBhIHRhcmdldCB3aXRoIFxgLW8nIgogICAgICAgOzsKICAgICAqKQogICAgICAgIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgb2JqZWN0LgotICAgICAgWyAteiAiJGxpYm9iaiIgXSAmJiBsaWJvYmo9YCRlY2hvICJYJHNyY2ZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKyAgICAgIHRlc3QgLXogIiRsaWJvYmoiICYmIHsKKwlmdW5jX2Jhc2VuYW1lICIkc3JjZmlsZSIKKwlsaWJvYmo9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKyAgICAgIH0KICAgICAgIDs7CiAgICAgZXNhYwogCiAgICAgIyBSZWNvZ25pemUgc2V2ZXJhbCBkaWZmZXJlbnQgZmlsZSBzdWZmaXhlcy4KICAgICAjIElmIHRoZSB1c2VyIHNwZWNpZmllcyAtbyBmaWxlLm8sIGl0IGlzIHJlcGxhY2VkIHdpdGggZmlsZS5sbwotICAgIHhmb3JtPSdbY0NGU2lmbXNvXScKICAgICBjYXNlICRsaWJvYmogaW4KLSAgICAqLmFkYSkgeGZvcm09YWRhIDs7Ci0gICAgKi5hZGIpIHhmb3JtPWFkYiA7OwotICAgICouYWRzKSB4Zm9ybT1hZHMgOzsKLSAgICAqLmFzbSkgeGZvcm09YXNtIDs7Ci0gICAgKi5jKyspIHhmb3JtPWMrKyA7OwotICAgICouY2MpIHhmb3JtPWNjIDs7Ci0gICAgKi5paSkgeGZvcm09aWkgOzsKLSAgICAqLmNsYXNzKSB4Zm9ybT1jbGFzcyA7OwotICAgICouY3BwKSB4Zm9ybT1jcHAgOzsKLSAgICAqLmN4eCkgeGZvcm09Y3h4IDs7Ci0gICAgKi5bZkZdWzA5XT8pIHhmb3JtPVtmRl1bMDldLiA7OwotICAgICouZm9yKSB4Zm9ybT1mb3IgOzsKLSAgICAqLmphdmEpIHhmb3JtPWphdmEgOzsKLSAgICAqLm9iaikgeGZvcm09b2JqIDs7Ci0gICAgKi5zeCkgeGZvcm09c3ggOzsKKyAgICAqLltjQ0ZTaWZtc29dIHwgXAorICAgICouYWRhIHwgKi5hZGIgfCAqLmFkcyB8ICouYXNtIHwgXAorICAgICouYysrIHwgKi5jYyB8ICouaWkgfCAqLmNsYXNzIHwgKi5jcHAgfCAqLmN4eCB8IFwKKyAgICAqLltmRl1bMDldPyB8ICouZm9yIHwgKi5qYXZhIHwgKi5vYmogfCAqLnN4KQorICAgICAgZnVuY194Zm9ybSAiJGxpYm9iaiIKKyAgICAgIGxpYm9iaj0kZnVuY194Zm9ybV9yZXN1bHQKKyAgICAgIDs7CiAgICAgZXNhYwogCi0gICAgbGlib2JqPWAkZWNobyAiWCRsaWJvYmoiIHwgJFhzZWQgLWUgInMvXC4keGZvcm0kLy5sby8iYAotCiAgICAgY2FzZSAkbGlib2JqIGluCi0gICAgKi5sbykgb2JqPWAkZWNobyAiWCRsaWJvYmoiIHwgJFhzZWQgLWUgIiRsbzJvImAgOzsKKyAgICAqLmxvKSBmdW5jX2xvMm8gIiRsaWJvYmoiOyBvYmo9JGZ1bmNfbG8yb19yZXN1bHQgOzsKICAgICAqKQotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGRldGVybWluZSBuYW1lIG9mIGxpYnJhcnkgb2JqZWN0IGZyb20gXGAkbGlib2JqJyIgMT4mMgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZGV0ZXJtaW5lIG5hbWUgb2YgbGlicmFyeSBvYmplY3QgZnJvbSBcYCRsaWJvYmonIgogICAgICAgOzsKICAgICBlc2FjCiAKQEAgLTgxMSw3ICsxMjMwLDE1IEBACiAKICAgICBmb3IgYXJnIGluICRsYXRlcjsgZG8KICAgICAgIGNhc2UgJGFyZyBpbgorICAgICAgLXNoYXJlZCkKKwl0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgXAorCSAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJjYW4gbm90IGJ1aWxkIGEgc2hhcmVkIGxpYnJhcnkiCisJYnVpbGRfb2xkX2xpYnM9bm8KKwljb250aW51ZQorCTs7CisKICAgICAgIC1zdGF0aWMpCisJYnVpbGRfbGlidG9vbF9saWJzPW5vCiAJYnVpbGRfb2xkX2xpYnM9eWVzCiAJY29udGludWUKIAk7OwpAQCAtODI4LDI4ICsxMjU1LDE3IEBACiAgICAgICBlc2FjCiAgICAgZG9uZQogCi0gICAgcWxpYm9iaj1gJGVjaG8gIlgkbGlib2JqIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSAgICBjYXNlICRxbGlib2JqIGluCi0gICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQlxbGlib2JqPSJcIiRxbGlib2JqXCIiIDs7Ci0gICAgZXNhYwotICAgIHRlc3QgIlgkbGlib2JqIiAhPSAiWCRxbGlib2JqIiBcCi0JJiYgJGVjaG8gIlgkbGlib2JqIiB8IGdyZXAgJ1tdfiNeKnt9Ozw+PyInIiciJyAJJigpfGAkW10nIFwKLQkmJiAkZWNobyAiJG1vZGVuYW1lOiBsaWJvYmogbmFtZSBcYCRsaWJvYmonIG1heSBub3QgY29udGFpbiBzaGVsbCBzcGVjaWFsIGNoYXJhY3RlcnMuIgotICAgIG9iam5hbWU9YCRlY2hvICJYJG9iaiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotICAgIHhkaXI9YCRlY2hvICJYJG9iaiIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAotICAgIGlmIHRlc3QgIlgkeGRpciIgPSAiWCRvYmoiOyB0aGVuCi0gICAgICB4ZGlyPQotICAgIGVsc2UKLSAgICAgIHhkaXI9JHhkaXIvCi0gICAgZmkKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGlib2JqIgorICAgIHRlc3QgIlgkbGlib2JqIiAhPSAiWCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIgXAorICAgICAgJiYgJEVDSE8gIlgkbGlib2JqIiB8ICRHUkVQICdbXX4jXip7fTs8Pj8iJyInIicJICYoKXxgJFtdJyBcCisgICAgICAmJiBmdW5jX3dhcm5pbmcgImxpYm9iaiBuYW1lIFxgJGxpYm9iaicgbWF5IG5vdCBjb250YWluIHNoZWxsIHNwZWNpYWwgY2hhcmFjdGVycy4iCisgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJG9iaiIgIi8iICIiCisgICAgb2JqbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorICAgIHhkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogICAgIGxvYmo9JHt4ZGlyfSRvYmpkaXIvJG9iam5hbWUKIAotICAgIGlmIHRlc3QgLXogIiRiYXNlX2NvbXBpbGUiOyB0aGVuCi0gICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgY29tcGlsYXRpb24gY29tbWFuZCIgMT4mMgotICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgICBmaQorICAgIHRlc3QgLXogIiRiYXNlX2NvbXBpbGUiICYmIFwKKyAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIGNvbXBpbGF0aW9uIGNvbW1hbmQiCiAKICAgICAjIERlbGV0ZSBhbnkgbGVmdG92ZXIgbGlicmFyeSBvYmplY3RzLgogICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KQEAgLTg1OCwxMiArMTI3NCw5IEBACiAgICAgICByZW1vdmVsaXN0PSIkbG9iaiAkbGlib2JqICR7bGlib2JqfVQiCiAgICAgZmkKIAotICAgICRydW4gJHJtICRyZW1vdmVsaXN0Ci0gICAgdHJhcCAiJHJ1biAkcm0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1Ci0KICAgICAjIE9uIEN5Z3dpbiB0aGVyZSdzIG5vICJyZWFsIiBQSUMgZmxhZyBzbyB3ZSBtdXN0IGJ1aWxkIGJvdGggb2JqZWN0IHR5cGVzCiAgICAgY2FzZSAkaG9zdF9vcyBpbgotICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IG9zMiopCisgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgb3MyKiB8IGNlZ2NjKikKICAgICAgIHBpY19tb2RlPWRlZmF1bHQKICAgICAgIDs7CiAgICAgZXNhYwpAQCAtODc1LDEwICsxMjg4LDggQEAKICAgICAjIENhbGN1bGF0ZSB0aGUgZmlsZW5hbWUgb2YgdGhlIG91dHB1dCBvYmplY3QgaWYgY29tcGlsZXIgZG9lcwogICAgICMgbm90IHN1cHBvcnQgLW8gd2l0aCAtYwogICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0gbm87IHRoZW4KLSAgICAgIG91dHB1dF9vYmo9YCRlY2hvICJYJHNyY2ZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJyAtZSAncyVcLlteLl0qJCUlJ2AuJHtvYmpleHR9CisgICAgICBvdXRwdXRfb2JqPWAkRUNITyAiWCRzcmNmaWxlIiB8ICRYc2VkIC1lICdzJV4uKi8lJScgLWUgJ3MlXC5bXi5dKiQlJSdgLiR7b2JqZXh0fQogICAgICAgbG9ja2ZpbGU9IiRvdXRwdXRfb2JqLmxvY2siCi0gICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkb3V0cHV0X29iaiAkbG9ja2ZpbGUiCi0gICAgICB0cmFwICIkcnVuICRybSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKICAgICBlbHNlCiAgICAgICBvdXRwdXRfb2JqPQogICAgICAgbmVlZF9sb2Nrcz1ubwpAQCAtODg4LDEzICsxMjk5LDEzIEBACiAgICAgIyBMb2NrIHRoaXMgY3JpdGljYWwgc2VjdGlvbiBpZiBpdCBpcyBuZWVkZWQKICAgICAjIFdlIHVzZSB0aGlzIHNjcmlwdCBmaWxlIHRvIG1ha2UgdGhlIGxpbmssIGl0IGF2b2lkcyBjcmVhdGluZyBhIG5ldyBmaWxlCiAgICAgaWYgdGVzdCAiJG5lZWRfbG9ja3MiID0geWVzOyB0aGVuCi0gICAgICB1bnRpbCAkcnVuIGxuICIkcHJvZ3BhdGgiICIkbG9ja2ZpbGUiIDI+L2Rldi9udWxsOyBkbwotCSRzaG93ICJXYWl0aW5nIGZvciAkbG9ja2ZpbGUgdG8gYmUgcmVtb3ZlZCIKKyAgICAgIHVudGlsICRvcHRfZHJ5X3J1biB8fCBsbiAiJHByb2dwYXRoIiAiJGxvY2tmaWxlIiAyPi9kZXYvbnVsbDsgZG8KKwlmdW5jX2VjaG8gIldhaXRpbmcgZm9yICRsb2NrZmlsZSB0byBiZSByZW1vdmVkIgogCXNsZWVwIDIKICAgICAgIGRvbmUKICAgICBlbGlmIHRlc3QgIiRuZWVkX2xvY2tzIiA9IHdhcm47IHRoZW4KICAgICAgIGlmIHRlc3QgLWYgIiRsb2NrZmlsZSI7IHRoZW4KLQkkZWNobyAiXAorCSRFQ0hPICJcCiAqKiogRVJST1IsICRsb2NrZmlsZSBleGlzdHMgYW5kIGNvbnRhaW5zOgogYGNhdCAkbG9ja2ZpbGUgMj4vZGV2L251bGxgCiAKQEAgLTkwNSwzNCArMTMxNiwyMiBAQAogYXZvaWQgcGFyYWxsZWwgYnVpbGRzIChtYWtlIC1qKSBpbiB0aGlzIHBsYXRmb3JtLCBvciBnZXQgYSBiZXR0ZXIKIGNvbXBpbGVyLiIKIAotCSRydW4gJHJtICRyZW1vdmVsaXN0CisJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAogCWV4aXQgJEVYSVRfRkFJTFVSRQogICAgICAgZmkKLSAgICAgICRlY2hvICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgorICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJG91dHB1dF9vYmoiCisgICAgICAkRUNITyAiJHNyY2ZpbGUiID4gIiRsb2NrZmlsZSIKICAgICBmaQogCisgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAorICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRsb2NrZmlsZSIKKyAgICB0cmFwICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnIDEgMiAxNQorCiAgICAgaWYgdGVzdCAtbiAiJGZpeF9zcmNmaWxlX3BhdGgiOyB0aGVuCiAgICAgICBldmFsIHNyY2ZpbGU9XCIkZml4X3NyY2ZpbGVfcGF0aFwiCiAgICAgZmkKLSAgICBxc3JjZmlsZT1gJGVjaG8gIlgkc3JjZmlsZSIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgY2FzZSAkcXNyY2ZpbGUgaW4KLSAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotICAgICAgcXNyY2ZpbGU9IlwiJHFzcmNmaWxlXCIiIDs7Ci0gICAgZXNhYwotCi0gICAgJHJ1biAkcm0gIiRsaWJvYmoiICIke2xpYm9ian1UIgotCi0gICAgIyBDcmVhdGUgYSBsaWJ0b29sIG9iamVjdCBmaWxlIChhbmFsb2dvdXMgdG8gYSAiLmxhIiBmaWxlKSwKLSAgICAjIGJ1dCBkb24ndCBjcmVhdGUgaXQgaWYgd2UncmUgZG9pbmcgYSBkcnkgcnVuLgotICAgIHRlc3QgLXogIiRydW4iICYmIGNhdCA+ICR7bGlib2JqfVQgPDxFT0YKLSMgJGxpYm9iaiAtIGEgbGlidG9vbCBvYmplY3QgZmlsZQotIyBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gLSBHTlUgJFBBQ0tBR0UgJFZFUlNJT04kVElNRVNUQU1QCi0jCi0jIFBsZWFzZSBETyBOT1QgZGVsZXRlIHRoaXMgZmlsZSEKLSMgSXQgaXMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHRoZSBsaWJyYXJ5LgotCi0jIE5hbWUgb2YgdGhlIFBJQyBvYmplY3QuCi1FT0YKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkc3JjZmlsZSIKKyAgICBxc3JjZmlsZT0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKIAogICAgICMgT25seSBidWlsZCBhIFBJQyBvYmplY3QgaWYgd2UgYXJlIGJ1aWxkaW5nIGxpYnRvb2wgbGlicmFyaWVzLgogICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCkBAIC05NDYsMzIgKzEzNDUsMTkgQEAKIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSIKICAgICAgIGZpCiAKLSAgICAgIGlmIHRlc3QgISAtZCAiJHt4ZGlyfSRvYmpkaXIiOyB0aGVuCi0JJHNob3cgIiRta2RpciAke3hkaXJ9JG9iamRpciIKLQkkcnVuICRta2RpciAke3hkaXJ9JG9iamRpcgotCWV4aXRfc3RhdHVzPSQ/Ci0JaWYgdGVzdCAiJGV4aXRfc3RhdHVzIiAtbmUgMCAmJiB0ZXN0ICEgLWQgIiR7eGRpcn0kb2JqZGlyIjsgdGhlbgotCSAgZXhpdCAkZXhpdF9zdGF0dXMKLQlmaQotICAgICAgZmkKKyAgICAgIGZ1bmNfbWtkaXJfcCAiJHhkaXIkb2JqZGlyIgogCiAgICAgICBpZiB0ZXN0IC16ICIkb3V0cHV0X29iaiI7IHRoZW4KIAkjIFBsYWNlIFBJQyBvYmplY3RzIGluICRvYmpkaXIKIAljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKICAgICAgIGZpCiAKLSAgICAgICRydW4gJHJtICIkbG9iaiIgIiRvdXRwdXRfb2JqIgotCi0gICAgICAkc2hvdyAiJGNvbW1hbmQiCi0gICAgICBpZiAkcnVuIGV2YWwgJGx0X2VudiAiJGNvbW1hbmQiOyB0aGVuIDoKLSAgICAgIGVsc2UKLQl0ZXN0IC1uICIkb3V0cHV0X29iaiIgJiYgJHJ1biAkcm0gJHJlbW92ZWxpc3QKLQlleGl0ICRFWElUX0ZBSUxVUkUKLSAgICAgIGZpCisgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIglcCisgICAgICAgICAgJ3Rlc3QgLW4gIiRvdXRwdXRfb2JqIiAmJiAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScKIAogICAgICAgaWYgdGVzdCAiJG5lZWRfbG9ja3MiID0gd2FybiAmJgogCSB0ZXN0ICJYYGNhdCAkbG9ja2ZpbGUgMj4vZGV2L251bGxgIiAhPSAiWCRzcmNmaWxlIjsgdGhlbgotCSRlY2hvICJcCisJJEVDSE8gIlwKICoqKiBFUlJPUiwgJGxvY2tmaWxlIGNvbnRhaW5zOgogYGNhdCAkbG9ja2ZpbGUgMj4vZGV2L251bGxgCiAKQEAgLTk4NSw0NSArMTM3MSwyNyBAQAogYXZvaWQgcGFyYWxsZWwgYnVpbGRzIChtYWtlIC1qKSBpbiB0aGlzIHBsYXRmb3JtLCBvciBnZXQgYSBiZXR0ZXIKIGNvbXBpbGVyLiIKIAotCSRydW4gJHJtICRyZW1vdmVsaXN0CisJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAogCWV4aXQgJEVYSVRfRkFJTFVSRQogICAgICAgZmkKIAogICAgICAgIyBKdXN0IG1vdmUgdGhlIG9iamVjdCBpZiBuZWVkZWQsIHRoZW4gZ28gb24gdG8gY29tcGlsZSB0aGUgbmV4dCBvbmUKICAgICAgIGlmIHRlc3QgLW4gIiRvdXRwdXRfb2JqIiAmJiB0ZXN0ICJYJG91dHB1dF9vYmoiICE9ICJYJGxvYmoiOyB0aGVuCi0JJHNob3cgIiRtdiAkb3V0cHV0X29iaiAkbG9iaiIKLQlpZiAkcnVuICRtdiAkb3V0cHV0X29iaiAkbG9iajsgdGhlbiA6Ci0JZWxzZQotCSAgZXJyb3I9JD8KLQkgICRydW4gJHJtICRyZW1vdmVsaXN0Ci0JICBleGl0ICRlcnJvcgotCWZpCisJZnVuY19zaG93X2V2YWwgJyRNViAiJG91dHB1dF9vYmoiICIkbG9iaiInIFwKKwkgICdlcnJvcj0kPzsgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkZXJyb3InCiAgICAgICBmaQogCi0gICAgICAjIEFwcGVuZCB0aGUgbmFtZSBvZiB0aGUgUElDIG9iamVjdCB0byB0aGUgbGlidG9vbCBvYmplY3QgZmlsZS4KLSAgICAgIHRlc3QgLXogIiRydW4iICYmIGNhdCA+PiAke2xpYm9ian1UIDw8RU9GCi1waWNfb2JqZWN0PSckb2JqZGlyLyRvYmpuYW1lJwotCi1FT0YKLQogICAgICAgIyBBbGxvdyBlcnJvciBtZXNzYWdlcyBvbmx5IGZyb20gdGhlIGZpcnN0IGNvbXBpbGF0aW9uLgogICAgICAgaWYgdGVzdCAiJHN1cHByZXNzX29wdCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgc3VwcHJlc3Nfb3V0cHV0PScgPi9kZXYvbnVsbCAyPiYxJworCXN1cHByZXNzX291dHB1dD0nID4vZGV2L251bGwgMj4mMScKICAgICAgIGZpCi0gICAgZWxzZQotICAgICAgIyBObyBQSUMgb2JqZWN0IHNvIGluZGljYXRlIGl0IGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGxpYnRvb2wKLSAgICAgICMgb2JqZWN0IGZpbGUuCi0gICAgICB0ZXN0IC16ICIkcnVuIiAmJiBjYXQgPj4gJHtsaWJvYmp9VCA8PEVPRgotcGljX29iamVjdD1ub25lCi0KLUVPRgogICAgIGZpCiAKICAgICAjIE9ubHkgYnVpbGQgYSBwb3NpdGlvbi1kZXBlbmRlbnQgb2JqZWN0IGlmIHdlIGJ1aWxkIG9sZCBsaWJyYXJpZXMuCiAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgogICAgICAgaWYgdGVzdCAiJHBpY19tb2RlIiAhPSB5ZXM7IHRoZW4KIAkjIERvbid0IGJ1aWxkIFBJQyBjb2RlCi0JY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUiCisJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUkcGllX2ZsYWciCiAgICAgICBlbHNlCiAJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUgJHBpY19mbGFnIgogICAgICAgZmkKQEAgLTEwMzMsMTcgKzE0MDEsMTIgQEAKIAogICAgICAgIyBTdXBwcmVzcyBjb21waWxlciBvdXRwdXQgaWYgd2UgYWxyZWFkeSBkaWQgYSBQSUMgY29tcGlsYXRpb24uCiAgICAgICBjb21tYW5kPSIkY29tbWFuZCRzdXBwcmVzc19vdXRwdXQiCi0gICAgICAkcnVuICRybSAiJG9iaiIgIiRvdXRwdXRfb2JqIgotICAgICAgJHNob3cgIiRjb21tYW5kIgotICAgICAgaWYgJHJ1biBldmFsICRsdF9lbnYgIiRjb21tYW5kIjsgdGhlbiA6Ci0gICAgICBlbHNlCi0JJHJ1biAkcm0gJHJlbW92ZWxpc3QKLQlleGl0ICRFWElUX0ZBSUxVUkUKLSAgICAgIGZpCisgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIiBcCisgICAgICAgICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCiAKICAgICAgIGlmIHRlc3QgIiRuZWVkX2xvY2tzIiA9IHdhcm4gJiYKIAkgdGVzdCAiWGBjYXQgJGxvY2tmaWxlIDI+L2Rldi9udWxsYCIgIT0gIlgkc3JjZmlsZSI7IHRoZW4KLQkkZWNobyAiXAorCSRFQ0hPICJcCiAqKiogRVJST1IsICRsb2NrZmlsZSBjb250YWluczoKIGBjYXQgJGxvY2tmaWxlIDI+L2Rldi9udWxsYAogCkBAIC0xMDU3LDUzICsxNDIwLDI2MjAgQEAKIGF2b2lkIHBhcmFsbGVsIGJ1aWxkcyAobWFrZSAtaikgaW4gdGhpcyBwbGF0Zm9ybSwgb3IgZ2V0IGEgYmV0dGVyCiBjb21waWxlci4iCiAKLQkkcnVuICRybSAkcmVtb3ZlbGlzdAorCSRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKIAlleGl0ICRFWElUX0ZBSUxVUkUKICAgICAgIGZpCiAKICAgICAgICMgSnVzdCBtb3ZlIHRoZSBvYmplY3QgaWYgbmVlZGVkCiAgICAgICBpZiB0ZXN0IC1uICIkb3V0cHV0X29iaiIgJiYgdGVzdCAiWCRvdXRwdXRfb2JqIiAhPSAiWCRvYmoiOyB0aGVuCi0JJHNob3cgIiRtdiAkb3V0cHV0X29iaiAkb2JqIgotCWlmICRydW4gJG12ICRvdXRwdXRfb2JqICRvYmo7IHRoZW4gOgotCWVsc2UKLQkgIGVycm9yPSQ/Ci0JICAkcnVuICRybSAkcmVtb3ZlbGlzdAotCSAgZXhpdCAkZXJyb3IKLQlmaQorCWZ1bmNfc2hvd19ldmFsICckTVYgIiRvdXRwdXRfb2JqIiAiJG9iaiInIFwKKwkgICdlcnJvcj0kPzsgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkZXJyb3InCiAgICAgICBmaQotCi0gICAgICAjIEFwcGVuZCB0aGUgbmFtZSBvZiB0aGUgbm9uLVBJQyBvYmplY3QgdGhlIGxpYnRvb2wgb2JqZWN0IGZpbGUuCi0gICAgICAjIE9ubHkgYXBwZW5kIGlmIHRoZSBsaWJ0b29sIG9iamVjdCBmaWxlIGV4aXN0cy4KLSAgICAgIHRlc3QgLXogIiRydW4iICYmIGNhdCA+PiAke2xpYm9ian1UIDw8RU9GCi0jIE5hbWUgb2YgdGhlIG5vbi1QSUMgb2JqZWN0Lgotbm9uX3BpY19vYmplY3Q9JyRvYmpuYW1lJwotCi1FT0YKLSAgICBlbHNlCi0gICAgICAjIEFwcGVuZCB0aGUgbmFtZSBvZiB0aGUgbm9uLVBJQyBvYmplY3QgdGhlIGxpYnRvb2wgb2JqZWN0IGZpbGUuCi0gICAgICAjIE9ubHkgYXBwZW5kIGlmIHRoZSBsaWJ0b29sIG9iamVjdCBmaWxlIGV4aXN0cy4KLSAgICAgIHRlc3QgLXogIiRydW4iICYmIGNhdCA+PiAke2xpYm9ian1UIDw8RU9GCi0jIE5hbWUgb2YgdGhlIG5vbi1QSUMgb2JqZWN0Lgotbm9uX3BpY19vYmplY3Q9bm9uZQotCi1FT0YKICAgICBmaQogCi0gICAgJHJ1biAkbXYgIiR7bGlib2JqfVQiICIke2xpYm9ian0iCisgICAgJG9wdF9kcnlfcnVuIHx8IHsKKyAgICAgIGZ1bmNfd3JpdGVfbGlidG9vbF9vYmplY3QgIiRsaWJvYmoiICIkb2JqZGlyLyRvYmpuYW1lIiAiJG9iam5hbWUiCiAKLSAgICAjIFVubG9jayB0aGUgY3JpdGljYWwgc2VjdGlvbiBpZiBpdCB3YXMgbG9ja2VkCi0gICAgaWYgdGVzdCAiJG5lZWRfbG9ja3MiICE9IG5vOyB0aGVuCi0gICAgICAkcnVuICRybSAiJGxvY2tmaWxlIgotICAgIGZpCisgICAgICAjIFVubG9jayB0aGUgY3JpdGljYWwgc2VjdGlvbiBpZiBpdCB3YXMgbG9ja2VkCisgICAgICBpZiB0ZXN0ICIkbmVlZF9sb2NrcyIgIT0gbm87IHRoZW4KKwlyZW1vdmVsaXN0PSRsb2NrZmlsZQorICAgICAgICAkUk0gIiRsb2NrZmlsZSIKKyAgICAgIGZpCisgICAgfQogCiAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgOzsKK30KIAotICAjIGxpYnRvb2wgbGluayBtb2RlCi0gIGxpbmsgfCByZWxpbmspCi0gICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogbGluayIKKyRvcHRfaGVscCB8fCB7Cit0ZXN0ICIkbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQorfQorCitmdW5jX21vZGVfaGVscCAoKQoreworICAgICMgV2UgbmVlZCB0byBkaXNwbGF5IGhlbHAgZm9yIGVhY2ggb2YgdGhlIG1vZGVzLgorICAgIGNhc2UgJG1vZGUgaW4KKyAgICAgICIiKQorICAgICAgICAjIEdlbmVyaWMgaGVscCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgdXNhZ2UgY29tbWVudHMKKyAgICAgICAgIyBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmaWxlLgorICAgICAgICBmdW5jX2hlbHAKKyAgICAgICAgOzsKKworICAgICAgY2xlYW4pCisgICAgICAgICRFQ0hPIFwKKyJVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1jbGVhbiBSTSBbUk0tT1BUSU9OXS4uLiBGSUxFLi4uCisKK1JlbW92ZSBmaWxlcyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkuCisKK1JNIGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRvIHVzZSB0byBkZWxldGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggRklMRQorKHR5cGljYWxseSBcYC9iaW4vcm0nKS4gIFJNLU9QVElPTlMgYXJlIG9wdGlvbnMgKHN1Y2ggYXMgXGAtZicpIHRvIGJlIHBhc3NlZAordG8gUk0uCisKK0lmIEZJTEUgaXMgYSBsaWJ0b29sIGxpYnJhcnksIG9iamVjdCBvciBwcm9ncmFtLCBhbGwgdGhlIGZpbGVzIGFzc29jaWF0ZWQKK3dpdGggaXQgYXJlIGRlbGV0ZWQuIE90aGVyd2lzZSwgb25seSBGSUxFIGl0c2VsZiBpcyBkZWxldGVkIHVzaW5nIFJNLiIKKyAgICAgICAgOzsKKworICAgICAgY29tcGlsZSkKKyAgICAgICRFQ0hPIFwKKyJVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1jb21waWxlIENPTVBJTEUtQ09NTUFORC4uLiBTT1VSQ0VGSUxFCisKK0NvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBsaWJyYXJ5IG9iamVjdC4KKworVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6CisKKyAgLW8gT1VUUFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCisgIC1uby1zdXBwcmVzcyAgICAgIGRvIG5vdCBzdXBwcmVzcyBjb21waWxlciBvdXRwdXQgZm9yIG11bHRpcGxlIHBhc3NlcworICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGRpbmcgUElDIG9iamVjdHMgb25seQorICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKKyAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKyAgLXN0YXRpYyAgICAgICAgICAgb25seSBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCisKK0NPTVBJTEUtQ09NTUFORCBpcyBhIGNvbW1hbmQgdG8gYmUgdXNlZCBpbiBjcmVhdGluZyBhIFxgc3RhbmRhcmQnIG9iamVjdCBmaWxlCitmcm9tIHRoZSBnaXZlbiBTT1VSQ0VGSUxFLgorCitUaGUgb3V0cHV0IGZpbGUgbmFtZSBpcyBkZXRlcm1pbmVkIGJ5IHJlbW92aW5nIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50IGZyb20KK1NPVVJDRUZJTEUsIHRoZW4gc3Vic3RpdHV0aW5nIHRoZSBDIHNvdXJjZSBjb2RlIHN1ZmZpeCBcYC5jJyB3aXRoIHRoZQorbGlicmFyeSBvYmplY3Qgc3VmZml4LCBcYC5sbycuIgorICAgICAgICA7OworCisgICAgICBleGVjdXRlKQorICAgICAgICAkRUNITyBcCisiVXNhZ2U6ICRwcm9nbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9ZXhlY3V0ZSBDT01NQU5EIFtBUkdTXS4uLgorCitBdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbS4KKworVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6CisKKyAgLWRsb3BlbiBGSUxFICAgICAgYWRkIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBGSUxFIHRvIHRoZSBsaWJyYXJ5IHBhdGgKKworVGhpcyBtb2RlIHNldHMgdGhlIGxpYnJhcnkgcGF0aCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhY2NvcmRpbmcgdG8gXGAtZGxvcGVuJworZmxhZ3MuCisKK0lmIGFueSBvZiB0aGUgQVJHUyBhcmUgbGlidG9vbCBleGVjdXRhYmxlIHdyYXBwZXJzLCB0aGVuIHRoZXkgYXJlIHRyYW5zbGF0ZWQKK2ludG8gdGhlaXIgY29ycmVzcG9uZGluZyB1bmluc3RhbGxlZCBiaW5hcnksIGFuZCBhbnkgb2YgdGhlaXIgcmVxdWlyZWQgbGlicmFyeQorZGlyZWN0b3JpZXMgYXJlIGFkZGVkIHRvIHRoZSBsaWJyYXJ5IHBhdGguCisKK1RoZW4sIENPTU1BTkQgaXMgZXhlY3V0ZWQsIHdpdGggQVJHUyBhcyBhcmd1bWVudHMuIgorICAgICAgICA7OworCisgICAgICBmaW5pc2gpCisgICAgICAgICRFQ0hPIFwKKyJVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1maW5pc2ggW0xJQkRJUl0uLi4KKworQ29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBvZiBsaWJ0b29sIGxpYnJhcmllcy4KKworRWFjaCBMSUJESVIgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBsaWJ0b29sIGxpYnJhcmllcy4KKworVGhlIGNvbW1hbmRzIHRoYXQgdGhpcyBtb2RlIGV4ZWN1dGVzIG1heSByZXF1aXJlIHN1cGVydXNlciBwcml2aWxlZ2VzLiAgVXNlCit0aGUgXGAtLWRyeS1ydW4nIG9wdGlvbiBpZiB5b3UganVzdCB3YW50IHRvIHNlZSB3aGF0IHdvdWxkIGJlIGV4ZWN1dGVkLiIKKyAgICAgICAgOzsKKworICAgICAgaW5zdGFsbCkKKyAgICAgICAgJEVDSE8gXAorIlVzYWdlOiAkcHJvZ25hbWUgW09QVElPTl0uLi4gLS1tb2RlPWluc3RhbGwgSU5TVEFMTC1DT01NQU5ELi4uCisKK0luc3RhbGwgZXhlY3V0YWJsZXMgb3IgbGlicmFyaWVzLgorCitJTlNUQUxMLUNPTU1BTkQgaXMgdGhlIGluc3RhbGxhdGlvbiBjb21tYW5kLiAgVGhlIGZpcnN0IGNvbXBvbmVudCBzaG91bGQgYmUKK2VpdGhlciB0aGUgXGBpbnN0YWxsJyBvciBcYGNwJyBwcm9ncmFtLgorCitUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgb2YgSU5TVEFMTC1DT01NQU5EIGFyZSB0cmVhdGVkIHNwZWNpYWxseToKKworICAtaW5zdC1wcmVmaXggUFJFRklYLURJUiAgVXNlIFBSRUZJWC1ESVIgYXMgYSBzdGFnaW5nIGFyZWEgZm9yIGluc3RhbGxhdGlvbgorCitUaGUgcmVzdCBvZiB0aGUgY29tcG9uZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMgYXJndW1lbnRzIHRvIHRoYXQgY29tbWFuZCAob25seQorQlNELWNvbXBhdGlibGUgaW5zdGFsbCBvcHRpb25zIGFyZSByZWNvZ25pemVkKS4iCisgICAgICAgIDs7CisKKyAgICAgIGxpbmspCisgICAgICAgICRFQ0hPIFwKKyJVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1saW5rIExJTkstQ09NTUFORC4uLgorCitMaW5rIG9iamVjdCBmaWxlcyBvciBsaWJyYXJpZXMgdG9nZXRoZXIgdG8gZm9ybSBhbm90aGVyIGxpYnJhcnksIG9yIHRvCitjcmVhdGUgYW4gZXhlY3V0YWJsZSBwcm9ncmFtLgorCitMSU5LLUNPTU1BTkQgaXMgYSBjb21tYW5kIHVzaW5nIHRoZSBDIGNvbXBpbGVyIHRoYXQgeW91IHdvdWxkIHVzZSB0byBjcmVhdGUKK2EgcHJvZ3JhbSBmcm9tIHNldmVyYWwgb2JqZWN0IGZpbGVzLgorCitUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgb2YgTElOSy1DT01NQU5EIGFyZSB0cmVhdGVkIHNwZWNpYWxseToKKworICAtYWxsLXN0YXRpYyAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBhdCBhbGwKKyAgLWF2b2lkLXZlcnNpb24gICAgZG8gbm90IGFkZCBhIHZlcnNpb24gc3VmZml4IGlmIHBvc3NpYmxlCisgIC1kbG9wZW4gRklMRSAgICAgIFxgLWRscHJlb3BlbicgRklMRSBpZiBpdCBjYW5ub3QgYmUgZGxvcGVuZWQgYXQgcnVudGltZQorICAtZGxwcmVvcGVuIEZJTEUgICBsaW5rIGluIEZJTEUgYW5kIGFkZCBpdHMgc3ltYm9scyB0byBsdF9wcmVsb2FkZWRfc3ltYm9scworICAtZXhwb3J0LWR5bmFtaWMgICBhbGxvdyBzeW1ib2xzIGZyb20gT1VUUFVULUZJTEUgdG8gYmUgcmVzb2x2ZWQgd2l0aCBkbHN5bSgzKQorICAtZXhwb3J0LXN5bWJvbHMgU1lNRklMRQorICAgICAgICAgICAgICAgICAgICB0cnkgdG8gZXhwb3J0IG9ubHkgdGhlIHN5bWJvbHMgbGlzdGVkIGluIFNZTUZJTEUKKyAgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4IFJFR0VYCisgICAgICAgICAgICAgICAgICAgIHRyeSB0byBleHBvcnQgb25seSB0aGUgc3ltYm9scyBtYXRjaGluZyBSRUdFWAorICAtTExJQkRJUiAgICAgICAgICBzZWFyY2ggTElCRElSIGZvciByZXF1aXJlZCBpbnN0YWxsZWQgbGlicmFyaWVzCisgIC1sTkFNRSAgICAgICAgICAgIE9VVFBVVC1GSUxFIHJlcXVpcmVzIHRoZSBpbnN0YWxsZWQgbGlicmFyeSBsaWJOQU1FCisgIC1tb2R1bGUgICAgICAgICAgIGJ1aWxkIGEgbGlicmFyeSB0aGF0IGNhbiBkbG9wZW5lZAorICAtbm8tZmFzdC1pbnN0YWxsICBkaXNhYmxlIHRoZSBmYXN0LWluc3RhbGwgbW9kZQorICAtbm8taW5zdGFsbCAgICAgICBsaW5rIGEgbm90LWluc3RhbGxhYmxlIGV4ZWN1dGFibGUKKyAgLW5vLXVuZGVmaW5lZCAgICAgZGVjbGFyZSB0aGF0IGEgbGlicmFyeSBkb2VzIG5vdCByZWZlciB0byBleHRlcm5hbCBzeW1ib2xzCisgIC1vIE9VVFBVVC1GSUxFICAgIGNyZWF0ZSBPVVRQVVQtRklMRSBmcm9tIHRoZSBzcGVjaWZpZWQgb2JqZWN0cworICAtb2JqZWN0bGlzdCBGSUxFICBVc2UgYSBsaXN0IG9mIG9iamVjdCBmaWxlcyBmb3VuZCBpbiBGSUxFIHRvIHNwZWNpZnkgb2JqZWN0cworICAtcHJlY2lvdXMtZmlsZXMtcmVnZXggUkVHRVgKKyAgICAgICAgICAgICAgICAgICAgZG9uJ3QgcmVtb3ZlIG91dHB1dCBmaWxlcyBtYXRjaGluZyBSRUdFWAorICAtcmVsZWFzZSBSRUxFQVNFICBzcGVjaWZ5IHBhY2thZ2UgcmVsZWFzZSBpbmZvcm1hdGlvbgorICAtcnBhdGggTElCRElSICAgICB0aGUgY3JlYXRlZCBsaWJyYXJ5IHdpbGwgZXZlbnR1YWxseSBiZSBpbnN0YWxsZWQgaW4gTElCRElSCisgIC1SWyBdTElCRElSICAgICAgIGFkZCBMSUJESVIgdG8gdGhlIHJ1bnRpbWUgcGF0aCBvZiBwcm9ncmFtcyBhbmQgbGlicmFyaWVzCisgIC1zaGFyZWQgICAgICAgICAgIG9ubHkgZG8gZHluYW1pYyBsaW5raW5nIG9mIGxpYnRvb2wgbGlicmFyaWVzCisgIC1zaHJleHQgU1VGRklYICAgIG92ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaGFyZWQgbGlicmFyeSBmaWxlIGV4dGVuc2lvbgorICAtc3RhdGljICAgICAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBvZiB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcworICAtc3RhdGljLWxpYnRvb2wtbGlicworICAgICAgICAgICAgICAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBvZiBsaWJ0b29sIGxpYnJhcmllcworICAtdmVyc2lvbi1pbmZvIENVUlJFTlRbOlJFVklTSU9OWzpBR0VdXQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IGxpYnJhcnkgdmVyc2lvbiBpbmZvIFtlYWNoIHZhcmlhYmxlIGRlZmF1bHRzIHRvIDBdCisgIC13ZWFrIExJQk5BTUUgICAgIGRlY2xhcmUgdGhhdCB0aGUgdGFyZ2V0IHByb3ZpZGVzIHRoZSBMSUJOQU1FIGludGVyZmFjZQorCitBbGwgb3RoZXIgb3B0aW9ucyAoYXJndW1lbnRzIGJlZ2lubmluZyB3aXRoIFxgLScpIGFyZSBpZ25vcmVkLgorCitFdmVyeSBvdGhlciBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIGEgZmlsZW5hbWUuICBGaWxlcyBlbmRpbmcgaW4gXGAubGEnIGFyZQordHJlYXRlZCBhcyB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcywgb3RoZXIgZmlsZXMgYXJlIHN0YW5kYXJkIG9yIGxpYnJhcnkKK29iamVjdCBmaWxlcy4KKworSWYgdGhlIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAubGEnLCB0aGVuIGEgbGlidG9vbCBsaWJyYXJ5IGlzIGNyZWF0ZWQsCitvbmx5IGxpYnJhcnkgb2JqZWN0cyAoXGAubG8nIGZpbGVzKSBtYXkgYmUgc3BlY2lmaWVkLCBhbmQgXGAtcnBhdGgnIGlzCityZXF1aXJlZCwgZXhjZXB0IHdoZW4gY3JlYXRpbmcgYSBjb252ZW5pZW5jZSBsaWJyYXJ5LgorCitJZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmEnIG9yIFxgLmxpYicsIHRoZW4gYSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGNyZWF0ZWQKK3VzaW5nIFxgYXInIGFuZCBcYHJhbmxpYicsIG9yIG9uIFdpbmRvd3MgdXNpbmcgXGBsaWInLgorCitJZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmxvJyBvciBcYC4ke29iamV4dH0nLCB0aGVuIGEgcmVsb2FkYWJsZSBvYmplY3QgZmlsZQoraXMgY3JlYXRlZCwgb3RoZXJ3aXNlIGFuIGV4ZWN1dGFibGUgcHJvZ3JhbSBpcyBjcmVhdGVkLiIKKyAgICAgICAgOzsKKworICAgICAgdW5pbnN0YWxsKQorICAgICAgICAkRUNITyBcCisiVXNhZ2U6ICRwcm9nbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9dW5pbnN0YWxsIFJNIFtSTS1PUFRJT05dLi4uIEZJTEUuLi4KKworUmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCisKK1JNIGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRvIHVzZSB0byBkZWxldGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggRklMRQorKHR5cGljYWxseSBcYC9iaW4vcm0nKS4gIFJNLU9QVElPTlMgYXJlIG9wdGlvbnMgKHN1Y2ggYXMgXGAtZicpIHRvIGJlIHBhc3NlZAordG8gUk0uCisKK0lmIEZJTEUgaXMgYSBsaWJ0b29sIGxpYnJhcnksIGFsbCB0aGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGl0IGFyZSBkZWxldGVkLgorT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgorICAgICAgICA7OworCisgICAgICAqKQorICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisgICAgICAgIDs7CisgICAgZXNhYworCisgICAgJEVDSE8KKyAgICAkRUNITyAiVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgbW9kZXMuIgorCisgICAgZXhpdCAkPworfQorCisgICMgTm93IHRoYXQgd2UndmUgY29sbGVjdGVkIGEgcG9zc2libGUgLS1tb2RlIGFyZywgc2hvdyBoZWxwIGlmIG5lY2Vzc2FyeQorICAkb3B0X2hlbHAgJiYgZnVuY19tb2RlX2hlbHAKKworCisjIGZ1bmNfbW9kZV9leGVjdXRlIGFyZy4uLgorZnVuY19tb2RlX2V4ZWN1dGUgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgIyBUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGNvbW1hbmQgbmFtZS4KKyAgICBjbWQ9IiRub25vcHQiCisgICAgdGVzdCAteiAiJGNtZCIgJiYgXAorICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgQ09NTUFORCIKKworICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCisgICAgZm9yIGZpbGUgaW4gJGV4ZWN1dGVfZGxmaWxlczsgZG8KKyAgICAgIHRlc3QgLWYgIiRmaWxlIiBcCisJfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSBmaWxlIgorCisgICAgICBkaXI9CisgICAgICBjYXNlICRmaWxlIGluCisgICAgICAqLmxhKQorCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCisJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKKwkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisKKwkjIFJlYWQgdGhlIGxpYnRvb2wgbGlicmFyeS4KKwlkbG5hbWU9CisJbGlicmFyeV9uYW1lcz0KKwlmdW5jX3NvdXJjZSAiJGZpbGUiCisKKwkjIFNraXAgdGhpcyBsaWJyYXJ5IGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZC4KKwlpZiB0ZXN0IC16ICIkZGxuYW1lIjsgdGhlbgorCSAgIyBXYXJuIGlmIGl0IHdhcyBhIHNoYXJlZCBsaWJyYXJ5LgorCSAgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiICYmIFwKKwkgICAgZnVuY193YXJuaW5nICJcYCRmaWxlJyB3YXMgbm90IGxpbmtlZCB3aXRoIFxgLWV4cG9ydC1keW5hbWljJyIKKwkgIGNvbnRpbnVlCisJZmkKKworCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgorCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisKKwlpZiB0ZXN0IC1mICIkZGlyLyRvYmpkaXIvJGRsbmFtZSI7IHRoZW4KKwkgIGRpcj0iJGRpci8kb2JqZGlyIgorCWVsc2UKKwkgIGlmIHRlc3QgISAtZiAiJGRpci8kZGxuYW1lIjsgdGhlbgorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgorCSAgZmkKKwlmaQorCTs7CisKKyAgICAgICoubG8pCisJIyBKdXN0IGFkZCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIC5sbyBmaWxlLgorCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgorCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJOzsKKworICAgICAgKikKKwlmdW5jX3dhcm5pbmcgIlxgLWRsb3BlbicgaXMgaWdub3JlZCBmb3Igbm9uLWxpYnRvb2wgbGlicmFyaWVzIGFuZCBvYmplY3RzIgorCWNvbnRpbnVlCisJOzsKKyAgICAgIGVzYWMKKworICAgICAgIyBHZXQgdGhlIGFic29sdXRlIHBhdGhuYW1lLgorICAgICAgYWJzZGlyPWBjZCAiJGRpciIgJiYgcHdkYAorICAgICAgdGVzdCAtbiAiJGFic2RpciIgJiYgZGlyPSIkYWJzZGlyIgorCisgICAgICAjIE5vdyBhZGQgdGhlIGRpcmVjdG9yeSB0byBzaGxpYnBhdGhfdmFyLgorICAgICAgaWYgZXZhbCAidGVzdCAteiBcIlwkJHNobGlicGF0aF92YXJcIiI7IHRoZW4KKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyXCIiCisgICAgICBlbHNlCisJZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpcjpcJCRzaGxpYnBhdGhfdmFyXCIiCisgICAgICBmaQorICAgIGRvbmUKKworICAgICMgVGhpcyB2YXJpYWJsZSB0ZWxscyB3cmFwcGVyIHNjcmlwdHMganVzdCB0byBzZXQgc2hsaWJwYXRoX3ZhcgorICAgICMgcmF0aGVyIHRoYW4gcnVubmluZyB0aGVpciBwcm9ncmFtcy4KKyAgICBsaWJ0b29sX2V4ZWN1dGVfbWFnaWM9IiRtYWdpYyIKKworICAgICMgQ2hlY2sgaWYgYW55IG9mIHRoZSBhcmd1bWVudHMgaXMgYSB3cmFwcGVyIHNjcmlwdC4KKyAgICBhcmdzPQorICAgIGZvciBmaWxlCisgICAgZG8KKyAgICAgIGNhc2UgJGZpbGUgaW4KKyAgICAgIC0qKSA7OworICAgICAgKikKKwkjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyByZWFsbHkgYSBsaWJ0b29sIHByb2dyYW0uCisJaWYgZnVuY19sdHdyYXBwZXJfc2NyaXB0X3AgIiRmaWxlIjsgdGhlbgorCSAgZnVuY19zb3VyY2UgIiRmaWxlIgorCSAgIyBUcmFuc2Zvcm0gYXJnIHRvIHdyYXBwZWQgbmFtZS4KKwkgIGZpbGU9IiRwcm9nZGlyLyRwcm9ncmFtIgorCWVsaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkZmlsZSI7IHRoZW4KKwkgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgorCSAgZnVuY19zb3VyY2UgIiRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKKwkgICMgVHJhbnNmb3JtIGFyZyB0byB3cmFwcGVkIG5hbWUuCisJICBmaWxlPSIkcHJvZ2Rpci8kcHJvZ3JhbSIKKwlmaQorCTs7CisgICAgICBlc2FjCisgICAgICAjIFF1b3RlIGFyZ3VtZW50cyAodG8gcHJlc2VydmUgc2hlbGwgbWV0YWNoYXJhY3RlcnMpLgorICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZpbGUiCisgICAgICBhcmdzPSIkYXJncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgZG9uZQorCisgICAgaWYgdGVzdCAiWCRvcHRfZHJ5X3J1biIgPSBYZmFsc2U7IHRoZW4KKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorCSMgRXhwb3J0IHRoZSBzaGxpYnBhdGhfdmFyLgorCWV2YWwgImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKKyAgICAgIGZpCisKKyAgICAgICMgUmVzdG9yZSBzYXZlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgICAgIGZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUworICAgICAgZG8KKwlldmFsICJpZiB0ZXN0IFwiXCR7c2F2ZV8kbHRfdmFyK3NldH1cIiA9IHNldDsgdGhlbgorICAgICAgICAgICAgICAgICRsdF92YXI9XCRzYXZlXyRsdF92YXI7IGV4cG9ydCAkbHRfdmFyCisJICAgICAgZWxzZQorCQkkbHRfdW5zZXQgJGx0X3ZhcgorCSAgICAgIGZpIgorICAgICAgZG9uZQorCisgICAgICAjIE5vdyBwcmVwYXJlIHRvIGFjdHVhbGx5IGV4ZWMgdGhlIGNvbW1hbmQuCisgICAgICBleGVjX2NtZD0iXCRjbWQkYXJncyIKKyAgICBlbHNlCisgICAgICAjIERpc3BsYXkgd2hhdCB3b3VsZCBiZSBkb25lLgorICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisJZXZhbCAiXCRFQ0hPIFwiXCRzaGxpYnBhdGhfdmFyPVwkJHNobGlicGF0aF92YXJcIiIKKwkkRUNITyAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorICAgICAgZmkKKyAgICAgICRFQ0hPICIkY21kJGFyZ3MiCisgICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyAgICBmaQorfQorCit0ZXN0ICIkbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQorCisKKyMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KK2Z1bmNfbW9kZV9maW5pc2ggKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgbGliZGlycz0iJG5vbm9wdCIKKyAgICBhZG1pbmNtZHM9CisKKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgorICAgICAgZm9yIGRpcgorICAgICAgZG8KKwlsaWJkaXJzPSIkbGliZGlycyAkZGlyIgorICAgICAgZG9uZQorCisgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworCWlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyI7IHRoZW4KKwkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBmaW5pc2ggY29tbWFuZHMuCisJICBmdW5jX2V4ZWN1dGVfY21kcyAiJGZpbmlzaF9jbWRzIiAnYWRtaW5jbWRzPSIkYWRtaW5jbWRzCisnIiRjbWQiJyInCisJZmkKKwlpZiB0ZXN0IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCisJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCisJICBldmFsIGNtZHM9XCIkZmluaXNoX2V2YWxcIgorCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKKyAgICAgICAkY21kcyIKKwlmaQorICAgICAgZG9uZQorICAgIGZpCisKKyAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KKyAgICAkb3B0X3NpbGVudCAmJiBleGl0ICRFWElUX1NVQ0NFU1MKKworICAgICRFQ0hPICJYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCAkWHNlZAorICAgICRFQ0hPICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCisgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKyAgICAgICRFQ0hPICIgICAkbGliZGlyIgorICAgIGRvbmUKKyAgICAkRUNITworICAgICRFQ0hPICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKyAgICAkRUNITyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCisgICAgJEVDSE8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCisgICAgJEVDSE8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKyAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKyAgICAgICRFQ0hPICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorICAgICAgJEVDSE8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKKyAgICBmaQorICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAgICAgICRFQ0hPICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKyAgICAgICRFQ0hPICIgICAgIGR1cmluZyBsaW5raW5nIgorICAgIGZpCisgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisgICAgICBsaWJkaXI9TElCRElSCisgICAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisKKyAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCisgICAgZmkKKyAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgorICAgIGZpCisgICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KKyAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKKyAgICBmaQorICAgICRFQ0hPCisKKyAgICAkRUNITyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCiAgICAgY2FzZSAkaG9zdCBpbgotICAgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqKQorICAgICAgc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKKyAgICAgICAgJEVDSE8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCisJJEVDSE8gInBhZ2VzLiIKKwk7OworICAgICAgKikKKyAgICAgICAgJEVDSE8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgorICAgICAgICA7OworICAgIGVzYWMKKyAgICAkRUNITyAiWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgJFhzZWQKKyAgICBleGl0ICRFWElUX1NVQ0NFU1MKK30KKwordGVzdCAiJG1vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9CisKKworIyBmdW5jX21vZGVfaW5zdGFsbCBhcmcuLi4KK2Z1bmNfbW9kZV9pbnN0YWxsICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgICMgVGhlcmUgbWF5IGJlIGFuIG9wdGlvbmFsIHNoKDEpIGFyZ3VtZW50IGF0IHRoZSBiZWdpbm5pbmcgb2YKKyAgICAjIGluc3RhbGxfcHJvZyAoZXNwZWNpYWxseSBvbiBXaW5kb3dzIE5UKS4KKyAgICBpZiB0ZXN0ICIkbm9ub3B0IiA9ICIkU0hFTEwiIHx8IHRlc3QgIiRub25vcHQiID0gL2Jpbi9zaCB8fAorICAgICAgICMgQWxsb3cgdGhlIHVzZSBvZiBHTlUgc2h0b29sJ3MgaW5zdGFsbCBjb21tYW5kLgorICAgICAgICRFQ0hPICJYJG5vbm9wdCIgfCAkR1JFUCBzaHRvb2wgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgorICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJG5vbm9wdCIKKyAgICAgIGluc3RhbGxfcHJvZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0ICIKKyAgICAgIGFyZz0kMQorICAgICAgc2hpZnQKKyAgICBlbHNlCisgICAgICBpbnN0YWxsX3Byb2c9CisgICAgICBhcmc9JG5vbm9wdAorICAgIGZpCisKKyAgICAjIFRoZSByZWFsIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgaW5zdGFsbGF0aW9uIHByb2dyYW0uCisgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgorICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCisgICAgIyBXZSBuZWVkIHRvIGFjY2VwdCBhdCBsZWFzdCBhbGwgdGhlIEJTRCBpbnN0YWxsIGZsYWdzLgorICAgIGRlc3Q9CisgICAgZmlsZXM9CisgICAgb3B0cz0KKyAgICBwcmV2PQorICAgIGluc3RhbGxfdHlwZT0KKyAgICBpc2Rpcj1ubworICAgIHN0cmlwbWU9CisgICAgZm9yIGFyZworICAgIGRvCisgICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KKwlmaWxlcz0iJGZpbGVzICRkZXN0IgorCWRlc3Q9JGFyZworCWNvbnRpbnVlCisgICAgICBmaQorCisgICAgICBjYXNlICRhcmcgaW4KKyAgICAgIC1kKSBpc2Rpcj15ZXMgOzsKKyAgICAgIC1mKQorCWNhc2UgIiAkaW5zdGFsbF9wcm9nICIgaW4KKwkqW1xcXCAvXWNwXCAqKSA7OworCSopIHByZXY9JGFyZyA7OworCWVzYWMKKwk7OworICAgICAgLWcgfCAtbSB8IC1vKQorCXByZXY9JGFyZworCTs7CisgICAgICAtcykKKwlzdHJpcG1lPSIgLXMiCisJY29udGludWUKKwk7OworICAgICAgLSopCisJOzsKKyAgICAgICopCisJIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRlZCBhbiBhcmd1bWVudCwgdGhlbiBza2lwIGl0LgorCWlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgorCSAgcHJldj0KKwllbHNlCisJICBkZXN0PSRhcmcKKwkgIGNvbnRpbnVlCisJZmkKKwk7OworICAgICAgZXNhYworCisgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgorICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKyAgICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgZG9uZQorCisgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXAorICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGFuIGluc3RhbGwgcHJvZ3JhbSIKKworICAgIHRlc3QgLW4gIiRwcmV2IiAmJiBcCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSBcYCRwcmV2JyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCisKKyAgICBpZiB0ZXN0IC16ICIkZmlsZXMiOyB0aGVuCisgICAgICBpZiB0ZXN0IC16ICIkZGVzdCI7IHRoZW4KKwlmdW5jX2ZhdGFsX2hlbHAgIm5vIGZpbGUgb3IgZGVzdGluYXRpb24gc3BlY2lmaWVkIgorICAgICAgZWxzZQorCWZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIGRlc3RpbmF0aW9uIgorICAgICAgZmkKKyAgICBmaQorCisgICAgIyBTdHJpcCBhbnkgdHJhaWxpbmcgc2xhc2ggZnJvbSB0aGUgZGVzdGluYXRpb24uCisgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkZGVzdCIKKyAgICBkZXN0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKworICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5LgorICAgIHRlc3QgLWQgIiRkZXN0IiAmJiBpc2Rpcj15ZXMKKyAgICBpZiB0ZXN0ICIkaXNkaXIiID0geWVzOyB0aGVuCisgICAgICBkZXN0ZGlyPSIkZGVzdCIKKyAgICAgIGRlc3RuYW1lPQorICAgIGVsc2UKKyAgICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiRkZXN0IiAiIiAiLiIKKyAgICAgIGRlc3RkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorICAgICAgZGVzdG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKworICAgICAgIyBOb3QgYSBkaXJlY3RvcnksIHNvIGNoZWNrIHRvIHNlZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIGZpbGUgc3BlY2lmaWVkLgorICAgICAgc2V0IGR1bW15ICRmaWxlczsgc2hpZnQKKyAgICAgIHRlc3QgIiQjIiAtZ3QgMSAmJiBcCisJZnVuY19mYXRhbF9oZWxwICJcYCRkZXN0JyBpcyBub3QgYSBkaXJlY3RvcnkiCisgICAgZmkKKyAgICBjYXNlICRkZXN0ZGlyIGluCisgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworICAgICopCisgICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCisJY2FzZSAkZmlsZSBpbgorCSoubG8pIDs7CisJKikKKwkgIGZ1bmNfZmF0YWxfaGVscCAiXGAkZGVzdGRpcicgbXVzdCBiZSBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSIKKwkgIDs7CisJZXNhYworICAgICAgZG9uZQorICAgICAgOzsKKyAgICBlc2FjCisKKyAgICAjIFRoaXMgdmFyaWFibGUgdGVsbHMgd3JhcHBlciBzY3JpcHRzIGp1c3QgdG8gc2V0IHZhcmlhYmxlcyByYXRoZXIKKyAgICAjIHRoYW4gcnVubmluZyB0aGVpciBwcm9ncmFtcy4KKyAgICBsaWJ0b29sX2luc3RhbGxfbWFnaWM9IiRtYWdpYyIKKworICAgIHN0YXRpY2xpYnM9CisgICAgZnV0dXJlX2xpYmRpcnM9CisgICAgY3VycmVudF9saWJkaXJzPQorICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KKworICAgICAgIyBEbyBlYWNoIGluc3RhbGxhdGlvbi4KKyAgICAgIGNhc2UgJGZpbGUgaW4KKyAgICAgICouJGxpYmV4dCkKKwkjIERvIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxhdGVyLgorCXN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgorCTs7CisKKyAgICAgICoubGEpCisJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KKwlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAorCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisKKwlsaWJyYXJ5X25hbWVzPQorCW9sZF9saWJyYXJ5PQorCXJlbGlua19jb21tYW5kPQorCWZ1bmNfc291cmNlICIkZmlsZSIKKworCSMgQWRkIHRoZSBsaWJkaXIgdG8gY3VycmVudF9saWJkaXJzIGlmIGl0IGlzIHRoZSBkZXN0aW5hdGlvbi4KKwlpZiB0ZXN0ICJYJGRlc3RkaXIiID0gIlgkbGliZGlyIjsgdGhlbgorCSAgY2FzZSAiJGN1cnJlbnRfbGliZGlycyAiIGluCisJICAqIiAkbGliZGlyICIqKSA7OworCSAgKikgY3VycmVudF9saWJkaXJzPSIkY3VycmVudF9saWJkaXJzICRsaWJkaXIiIDs7CisJICBlc2FjCisJZWxzZQorCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgorCSAgY2FzZSAiJGZ1dHVyZV9saWJkaXJzICIgaW4KKwkgICoiICRsaWJkaXIgIiopIDs7CisJICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7CisJICBlc2FjCisJZmkKKworCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIvIiAiIgorCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJZGlyPSIkZGlyJG9iamRpciIKKworCWlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KKwkgICMgRGV0ZXJtaW5lIHRoZSBwcmVmaXggdGhlIHVzZXIgaGFzIGFwcGxpZWQgdG8gb3VyIGZ1dHVyZSBkaXIuCisJICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICJYJGRlc3RkaXIiIHwgJFhzZWQgLWUgInMlJGxpYmRpclwkJSUiYAorCisJICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCisJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0CisJICAjIGFyZSBpbnN0YWxsZWQgdG8gdGhlIHNhbWUgcHJlZml4LgorCSAgIyBBdCBwcmVzZW50LCB0aGlzIGNoZWNrIGRvZXNuJ3QgYWZmZWN0IHdpbmRvd3MgLmRsbCdzIHRoYXQKKwkgICMgYXJlIGluc3RhbGxlZCBpbnRvICRsaWJkaXIvLi4vYmluIChjdXJyZW50bHksIHRoYXQgd29ya3MgZmluZSkKKwkgICMgYnV0IGl0J3Mgc29tZXRoaW5nIHRvIGtlZXAgYW4gZXllIG9uLgorCSAgdGVzdCAiJGluc3RfcHJlZml4X2RpciIgPSAiJGRlc3RkaXIiICYmIFwKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IGNhbm5vdCBpbnN0YWxsIFxgJGZpbGUnIHRvIGEgZGlyZWN0b3J5IG5vdCBlbmRpbmcgaW4gJGxpYmRpciIKKworCSAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKwkgICAgIyBTdGljayB0aGUgaW5zdF9wcmVmaXhfZGlyIGRhdGEgaW50byB0aGUgbGluayBjb21tYW5kLgorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQGluc3RfcHJlZml4X2RpckAlLWluc3QtcHJlZml4LWRpciAkaW5zdF9wcmVmaXhfZGlyJSJgCisJICBlbHNlCisJICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAaW5zdF9wcmVmaXhfZGlyQCUlImAKKwkgIGZpCisKKwkgIGZ1bmNfd2FybmluZyAicmVsaW5raW5nIFxgJGZpbGUnIgorCSAgZnVuY19zaG93X2V2YWwgIiRyZWxpbmtfY29tbWFuZCIgXAorCSAgICAnZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IHJlbGluayBcYCRmaWxlJ1wnJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0IicKKwlmaQorCisJIyBTZWUgdGhlIG5hbWVzIG9mIHRoZSBzaGFyZWQgbGlicmFyeS4KKwlzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXM7IHNoaWZ0CisJaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisJICByZWFsbmFtZT0iJDEiCisJICBzaGlmdAorCisJICBzcmNuYW1lPSIkcmVhbG5hbWUiCisJICB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiICYmIHNyY25hbWU9IiRyZWFsbmFtZSJUCisKKwkgICMgSW5zdGFsbCB0aGUgc2hhcmVkIGxpYnJhcnkgYW5kIGJ1aWxkIHRoZSBzeW1saW5rcy4KKwkgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRkaXIvJHNyY25hbWUgJGRlc3RkaXIvJHJlYWxuYW1lIiBcCisJICAgICAgJ2V4aXQgJD8nCisJICB0c3RyaXBtZT0iJHN0cmlwbWUiCisJICBjYXNlICRob3N0X29zIGluCisJICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisJICAgIGNhc2UgJHJlYWxuYW1lIGluCisJICAgICouZGxsLmEpCisJICAgICAgdHN0cmlwbWU9IiIKKwkgICAgICA7OworCSAgICBlc2FjCisJICAgIDs7CisJICBlc2FjCisJICBpZiB0ZXN0IC1uICIkdHN0cmlwbWUiICYmIHRlc3QgLW4gIiRzdHJpcGxpYiI7IHRoZW4KKwkgICAgZnVuY19zaG93X2V2YWwgIiRzdHJpcGxpYiAkZGVzdGRpci8kcmVhbG5hbWUiICdleGl0ICQ/JworCSAgZmkKKworCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCisJICAgICMgRGVsZXRlIHRoZSBvbGQgc3ltbGlua3MsIGFuZCBjcmVhdGUgbmV3IG9uZXMuCisJICAgICMgVHJ5IGBsbiAtc2YnIGZpcnN0LCBiZWNhdXNlIHRoZSBgbG4nIGJpbmFyeSBtaWdodCBkZXBlbmQgb24KKwkgICAgIyB0aGUgc3ltbGluayB3ZSByZXBsYWNlISAgU29sYXJpcyAvYmluL2xuIGRvZXMgbm90IHVuZGVyc3RhbmQgLWYsCisJICAgICMgc28gd2UgYWxzbyBuZWVkIHRvIHRyeSBybSAmJiBsbiAtcy4KKwkgICAgZm9yIGxpbmtuYW1lCisJICAgIGRvCisJICAgICAgdGVzdCAiJGxpbmtuYW1lIiAhPSAiJHJlYWxuYW1lIiBcCisJCSYmIGZ1bmNfc2hvd19ldmFsICIoY2QgJGRlc3RkaXIgJiYgeyAkTE5fUyAtZiAkcmVhbG5hbWUgJGxpbmtuYW1lIHx8IHsgJFJNICRsaW5rbmFtZSAmJiAkTE5fUyAkcmVhbG5hbWUgJGxpbmtuYW1lOyB9OyB9KSIKKwkgICAgZG9uZQorCSAgZmkKKworCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3RpbnN0YWxsIGNvbW1hbmRzLgorCSAgbGliPSIkZGVzdGRpci8kcmVhbG5hbWUiCisJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RpbnN0YWxsX2NtZHMiICdleGl0ICQ/JworCWZpCisKKwkjIEluc3RhbGwgdGhlIHBzZXVkby1saWJyYXJ5IGZvciBpbmZvcm1hdGlvbiBwdXJwb3Nlcy4KKwlmdW5jX2Jhc2VuYW1lICIkZmlsZSIKKwluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJaW5zdG5hbWU9IiRkaXIvJG5hbWUiaQorCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCisKKwkjIE1heWJlIGluc3RhbGwgdGhlIHN0YXRpYyBsaWJyYXJ5LCB0b28uCisJdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKwk7OworCisgICAgICAqLmxvKQorCSMgSW5zdGFsbCAoaS5lLiBjb3B5KSBhIGxpYnRvb2wgb2JqZWN0LgorCisJIyBGaWd1cmUgb3V0IGRlc3RpbmF0aW9uIGZpbGUgbmFtZSwgaWYgaXQgd2Fzbid0IGFscmVhZHkgc3BlY2lmaWVkLgorCWlmIHRlc3QgLW4gIiRkZXN0bmFtZSI7IHRoZW4KKwkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdG5hbWUiCisJZWxzZQorCSAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCisJICBkZXN0ZmlsZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0ZmlsZSIKKwlmaQorCisJIyBEZWR1Y2UgdGhlIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIG9sZC1zdHlsZSBvYmplY3QgZmlsZS4KKwljYXNlICRkZXN0ZmlsZSBpbgorCSoubG8pCisJICBmdW5jX2xvMm8gIiRkZXN0ZmlsZSIKKwkgIHN0YXRpY2Rlc3Q9JGZ1bmNfbG8yb19yZXN1bHQKKwkgIDs7CisJKi4kb2JqZXh0KQorCSAgc3RhdGljZGVzdD0iJGRlc3RmaWxlIgorCSAgZGVzdGZpbGU9CisJICA7OworCSopCisJICBmdW5jX2ZhdGFsX2hlbHAgImNhbm5vdCBjb3B5IGEgbGlidG9vbCBvYmplY3QgdG8gXGAkZGVzdGZpbGUnIgorCSAgOzsKKwllc2FjCisKKwkjIEluc3RhbGwgdGhlIGxpYnRvb2wgb2JqZWN0IGlmIHJlcXVlc3RlZC4KKwl0ZXN0IC1uICIkZGVzdGZpbGUiICYmIFwKKwkgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRmaWxlICRkZXN0ZmlsZSIgJ2V4aXQgJD8nCisKKwkjIEluc3RhbGwgdGhlIG9sZCBvYmplY3QgaWYgZW5hYmxlZC4KKwlpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCisJICAjIERlZHVjZSB0aGUgbmFtZSBvZiB0aGUgb2xkLXN0eWxlIG9iamVjdCBmaWxlLgorCSAgZnVuY19sbzJvICIkZmlsZSIKKwkgIHN0YXRpY29iaj0kZnVuY19sbzJvX3Jlc3VsdAorCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgXCRzdGF0aWNvYmogXCRzdGF0aWNkZXN0IiAnZXhpdCAkPycKKwlmaQorCWV4aXQgJEVYSVRfU1VDQ0VTUworCTs7CisKKyAgICAgICopCisJIyBGaWd1cmUgb3V0IGRlc3RpbmF0aW9uIGZpbGUgbmFtZSwgaWYgaXQgd2Fzbid0IGFscmVhZHkgc3BlY2lmaWVkLgorCWlmIHRlc3QgLW4gIiRkZXN0bmFtZSI7IHRoZW4KKwkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdG5hbWUiCisJZWxzZQorCSAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCisJICBkZXN0ZmlsZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0ZmlsZSIKKwlmaQorCisJIyBJZiB0aGUgZmlsZSBpcyBtaXNzaW5nLCBhbmQgdGhlcmUgaXMgYSAuZXhlIG9uIHRoZSBlbmQsIHN0cmlwIGl0CisJIyBiZWNhdXNlIGl0IGlzIG1vc3QgbGlrZWx5IGEgbGlidG9vbCBzY3JpcHQgd2UgYWN0dWFsbHkgd2FudCB0bworCSMgaW5zdGFsbAorCXN0cmlwcGVkX2V4dD0iIgorCWNhc2UgJGZpbGUgaW4KKwkgICouZXhlKQorCSAgICBpZiB0ZXN0ICEgLWYgIiRmaWxlIjsgdGhlbgorCSAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZpbGUiCisJICAgICAgZmlsZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisJICAgICAgc3RyaXBwZWRfZXh0PSIuZXhlIgorCSAgICBmaQorCSAgICA7OworCWVzYWMKKworCSMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIHJlYWxseSBhIGxpYnRvb2wgcHJvZ3JhbS4KKwljYXNlICRob3N0IGluCisJKmN5Z3dpbiogfCAqbWluZ3cqKQorCSAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiRmaWxlIjsgdGhlbgorCSAgICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgorCSAgICAgIHdyYXBwZXI9JGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0CisJICAgIGVsc2UKKwkgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmaWxlIgorCSAgICAgIHdyYXBwZXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgICBmaQorCSAgICA7OworCSopCisJICAgIHdyYXBwZXI9JGZpbGUKKwkgICAgOzsKKwllc2FjCisJaWYgZnVuY19sdHdyYXBwZXJfc2NyaXB0X3AgIiR3cmFwcGVyIjsgdGhlbgorCSAgbm90aW5zdF9kZXBsaWJzPQorCSAgcmVsaW5rX2NvbW1hbmQ9CisKKwkgIGZ1bmNfc291cmNlICIkd3JhcHBlciIKKworCSAgIyBDaGVjayB0aGUgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBzZXQuCisJICB0ZXN0IC16ICIkZ2VuZXJhdGVkX2J5X2xpYnRvb2xfdmVyc2lvbiIgJiYgXAorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgXGAkd3JhcHBlciciCisKKwkgIGZpbmFsaXplPXllcworCSAgZm9yIGxpYiBpbiAkbm90aW5zdF9kZXBsaWJzOyBkbworCSAgICAjIENoZWNrIHRvIHNlZSB0aGF0IGVhY2ggbGlicmFyeSBpcyBpbnN0YWxsZWQuCisJICAgIGxpYmRpcj0KKwkgICAgaWYgdGVzdCAtZiAiJGxpYiI7IHRoZW4KKwkgICAgICBmdW5jX3NvdXJjZSAiJGxpYiIKKwkgICAgZmkKKwkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRFQ0hPICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisJICAgIGlmIHRlc3QgLW4gIiRsaWJkaXIiICYmIHRlc3QgISAtZiAiJGxpYmZpbGUiOyB0aGVuCisJICAgICAgZnVuY193YXJuaW5nICJcYCRsaWInIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gXGAkbGliZGlyJyIKKwkgICAgICBmaW5hbGl6ZT1ubworCSAgICBmaQorCSAgZG9uZQorCisJICByZWxpbmtfY29tbWFuZD0KKwkgIGZ1bmNfc291cmNlICIkd3JhcHBlciIKKworCSAgb3V0cHV0bmFtZT0KKwkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0gbm8gJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgorCSAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgIGlmIHRlc3QgIiRmaW5hbGl6ZSIgPSB5ZXM7IHRoZW4KKwkgICAgICAgIHRtcGRpcj1gZnVuY19ta3RlbXBkaXJgCisJCWZ1bmNfYmFzZW5hbWUgIiRmaWxlJHN0cmlwcGVkX2V4dCIKKwkJZmlsZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgICAgICAgb3V0cHV0bmFtZT0iJHRtcGRpci8kZmlsZSIKKwkgICAgICAgICMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KKwkgICAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRuYW1lIiclZydgCisKKwkgICAgICAgICRvcHRfc2lsZW50IHx8IHsKKwkgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkcmVsaW5rX2NvbW1hbmQiCisJCSAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgorCSAgICAgICAgfQorCSAgICAgICAgaWYgZXZhbCAiJHJlbGlua19jb21tYW5kIjsgdGhlbiA6CisJICAgICAgICAgIGVsc2UKKwkJICBmdW5jX2Vycm9yICJlcnJvcjogcmVsaW5rIFxgJGZpbGUnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQiCisJCSAgJG9wdF9kcnlfcnVuIHx8ICR7Uk19ciAiJHRtcGRpciIKKwkJICBjb250aW51ZQorCSAgICAgICAgZmkKKwkgICAgICAgIGZpbGU9IiRvdXRwdXRuYW1lIgorCSAgICAgIGVsc2UKKwkgICAgICAgIGZ1bmNfd2FybmluZyAiY2Fubm90IHJlbGluayBcYCRmaWxlJyIKKwkgICAgICBmaQorCSAgICB9CisJICBlbHNlCisJICAgICMgSW5zdGFsbCB0aGUgYmluYXJ5IHRoYXQgd2UgY29tcGlsZWQgZWFybGllci4KKwkgICAgZmlsZT1gJEVDSE8gIlgkZmlsZSRzdHJpcHBlZF9leHQiIHwgJFhzZWQgLWUgInMlXChbXi9dKlwpJCUkb2JqZGlyL1wxJSJgCisJICBmaQorCWZpCisKKwkjIHJlbW92ZSAuZXhlIHNpbmNlIGN5Z3dpbiAvdXNyL2Jpbi9pbnN0YWxsIHdpbGwgYXBwZW5kIGFub3RoZXIKKwkjIG9uZSBhbnl3YXkKKwljYXNlICRpbnN0YWxsX3Byb2csJGhvc3QgaW4KKwkqL3Vzci9iaW4vaW5zdGFsbCosKmN5Z3dpbiopCisJICBjYXNlICRmaWxlOiRkZXN0ZmlsZSBpbgorCSAgKi5leGU6Ki5leGUpCisJICAgICMgdGhpcyBpcyBvaworCSAgICA7OworCSAgKi5leGU6KikKKwkgICAgZGVzdGZpbGU9JGRlc3RmaWxlLmV4ZQorCSAgICA7OworCSAgKjoqLmV4ZSkKKwkgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZGVzdGZpbGUiCisJICAgIGRlc3RmaWxlPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKwkgICAgOzsKKwkgIGVzYWMKKwkgIDs7CisJZXNhYworCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nXCRzdHJpcG1lIFwkZmlsZSBcJGRlc3RmaWxlIiAnZXhpdCAkPycKKwkkb3B0X2RyeV9ydW4gfHwgaWYgdGVzdCAtbiAiJG91dHB1dG5hbWUiOyB0aGVuCisJICAke1JNfXIgIiR0bXBkaXIiCisJZmkKKwk7OworICAgICAgZXNhYworICAgIGRvbmUKKworICAgIGZvciBmaWxlIGluICRzdGF0aWNsaWJzOyBkbworICAgICAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCisgICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisKKyAgICAgICMgU2V0IHVwIHRoZSByYW5saWIgcGFyYW1ldGVycy4KKyAgICAgIG9sZGxpYj0iJGRlc3RkaXIvJG5hbWUiCisKKyAgICAgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nIFwkZmlsZSBcJG9sZGxpYiIgJ2V4aXQgJD8nCisKKyAgICAgIGlmIHRlc3QgLW4gIiRzdHJpcG1lIiAmJiB0ZXN0IC1uICIkb2xkX3N0cmlwbGliIjsgdGhlbgorCWZ1bmNfc2hvd19ldmFsICIkb2xkX3N0cmlwbGliICRvbGRsaWIiICdleGl0ICQ/JworICAgICAgZmkKKworICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3RpbnN0YWxsIGNvbW1hbmRzLgorICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgJ2V4aXQgJD8nCisgICAgZG9uZQorCisgICAgdGVzdCAtbiAiJGZ1dHVyZV9saWJkaXJzIiAmJiBcCisgICAgICBmdW5jX3dhcm5pbmcgInJlbWVtYmVyIHRvIHJ1biBcYCRwcm9nbmFtZSAtLWZpbmlzaCRmdXR1cmVfbGliZGlycyciCisKKyAgICBpZiB0ZXN0IC1uICIkY3VycmVudF9saWJkaXJzIjsgdGhlbgorICAgICAgIyBNYXliZSBqdXN0IGRvIGEgZHJ5IHJ1bi4KKyAgICAgICRvcHRfZHJ5X3J1biAmJiBjdXJyZW50X2xpYmRpcnM9IiAtbiRjdXJyZW50X2xpYmRpcnMiCisgICAgICBleGVjX2NtZD0nJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLWZpbmlzaCRjdXJyZW50X2xpYmRpcnMnCisgICAgZWxzZQorICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCisgICAgZmkKK30KKwordGVzdCAiJG1vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KKworCisjIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zIG91dHB1dG5hbWUgb3JpZ2luYXRvciBwaWNfcAorIyBFeHRyYWN0IHN5bWJvbHMgZnJvbSBkbHByZWZpbGVzIGFuZCBjcmVhdGUgJHtvdXRwdXRuYW1lfVMubyB3aXRoCisjIGEgZGxwcmVvcGVuIHN5bWJvbCB0YWJsZS4KK2Z1bmNfZ2VuZXJhdGVfZGxzeW1zICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgIG15X291dHB1dG5hbWU9IiQxIgorICAgIG15X29yaWdpbmF0b3I9IiQyIgorICAgIG15X3BpY19wPSIkezMtbm99IgorICAgIG15X3ByZWZpeD1gJEVDSE8gIiRteV9vcmlnaW5hdG9yIiB8IHNlZCAncyVbXmEtekEtWjAtOV0lXyVnJ2AKKyAgICBteV9kbHN5bXM9CisKKyAgICBpZiB0ZXN0IC1uICIkZGxmaWxlcyRkbHByZWZpbGVzIiB8fCB0ZXN0ICIkZGxzZWxmIiAhPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJE5NIiAmJiB0ZXN0IC1uICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgorCW15X2Rsc3ltcz0iJHtteV9vdXRwdXRuYW1lfVMuYyIKKyAgICAgIGVsc2UKKwlmdW5jX2Vycm9yICJub3QgY29uZmlndXJlZCB0byBleHRyYWN0IGdsb2JhbCBzeW1ib2xzIGZyb20gZGxwcmVvcGVuZWQgZmlsZXMiCisgICAgICBmaQorICAgIGZpCisKKyAgICBpZiB0ZXN0IC1uICIkbXlfZGxzeW1zIjsgdGhlbgorICAgICAgY2FzZSAkbXlfZGxzeW1zIGluCisgICAgICAiIikgOzsKKyAgICAgICouYykKKwkjIERpc2NvdmVyIHRoZSBubGlzdCBvZiBlYWNoIG9mIHRoZSBkbGZpbGVzLgorCW5saXN0PSIkb3V0cHV0X29iamRpci8ke215X291dHB1dG5hbWV9Lm5tIgorCisJZnVuY19zaG93X2V2YWwgIiRSTSAkbmxpc3QgJHtubGlzdH1TICR7bmxpc3R9VCIKKworCSMgUGFyc2UgdGhlIG5hbWUgbGlzdCBpbnRvIGEgc291cmNlIGZpbGUuCisJZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgorCisJJG9wdF9kcnlfcnVuIHx8ICRFQ0hPID4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCisvKiAkbXlfZGxzeW1zIC0gc3ltYm9sIHJlc29sdXRpb24gdGFibGUgZm9yIFxgJG15X291dHB1dG5hbWUnIGRsc3ltIGVtdWxhdGlvbi4gKi8KKy8qIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT04gKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gXCJDXCIgeworI2VuZGlmCisKKy8qIEV4dGVybmFsIHN5bWJvbCBkZWNsYXJhdGlvbnMgZm9yIHRoZSBjb21waWxlci4gKi9cCisiCisKKwlpZiB0ZXN0ICIkZGxzZWxmIiA9IHllczsgdGhlbgorCSAgZnVuY192ZXJib3NlICJnZW5lcmF0aW5nIHN5bWJvbCBsaXN0IGZvciBcYCRvdXRwdXQnIgorCisJICAkb3B0X2RyeV9ydW4gfHwgZWNobyAnOiBAUFJPR1JBTUAgJyA+ICIkbmxpc3QiCisKKwkgICMgQWRkIG91ciBvd24gcHJvZ3JhbSBvYmplY3RzIHRvIHRoZSBzeW1ib2wgbGlzdC4KKwkgIHByb2dmaWxlcz1gJEVDSE8gIlgkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCSAgZm9yIHByb2dmaWxlIGluICRwcm9nZmlsZXM7IGRvCisJICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkcHJvZ2ZpbGUnIgorCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRwcm9nZmlsZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisJICBkb25lCisKKwkgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCisJICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgZXZhbCAnJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCisJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKwkgICAgfQorCSAgZmkKKworCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgorCSAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgIGV2YWwgJyRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJworCSAgICB9CisJICBmaQorCisJICAjIFByZXBhcmUgdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scworCSAgaWYgdGVzdCAteiAiJGV4cG9ydF9zeW1ib2xzIjsgdGhlbgorCSAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgorCSAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgICRSTSAkZXhwb3J0X3N5bWJvbHMKKwkgICAgICBldmFsICIke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyAiJzwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIicKKwkgICAgICBjYXNlICRob3N0IGluCisJICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisgICAgICAgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKyAgICAgICAgICAgICAgICBldmFsICdjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisJICAgICAgICA7OworCSAgICAgIGVzYWMKKwkgICAgfQorCSAgZWxzZQorCSAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgIGV2YWwgIiR7U0VEfSAtZSAncy9cKFtdLlsqXiRdXCkvXFxcXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIicgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiJworCSAgICAgIGV2YWwgJyRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQnCisJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKwkgICAgICBjYXNlICRob3N0IGluCisJICAgICAgICAqY3lnd2luIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJworCSAgICAgICAgICBldmFsICdjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisJICAgICAgICAgIDs7CisJICAgICAgZXNhYworCSAgICB9CisJICBmaQorCWZpCisKKwlmb3IgZGxwcmVmaWxlIGluICRkbHByZWZpbGVzOyBkbworCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgorCSAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZSIKKwkgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgIGV2YWwgIiROTSAkZGxwcmVmaWxlIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKwkgIH0KKwlkb25lCisKKwkkb3B0X2RyeV9ydW4gfHwgeworCSAgIyBNYWtlIHN1cmUgd2UgaGF2ZSBhdCBsZWFzdCBhbiBlbXB0eSBmaWxlLgorCSAgdGVzdCAtZiAiJG5saXN0IiB8fCA6ID4gIiRubGlzdCIKKworCSAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KKwkgICAgJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQKKwkgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgorCSAgZmkKKworCSAgIyBUcnkgc29ydGluZyBhbmQgdW5pcXVpZnlpbmcgdGhlIG91dHB1dC4KKwkgIGlmICRHUkVQIC12ICJeOiAiIDwgIiRubGlzdCIgfAorCSAgICAgIGlmIHNvcnQgLWsgMyA8L2Rldi9udWxsID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQlzb3J0IC1rIDMKKwkgICAgICBlbHNlCisJCXNvcnQgKzIKKwkgICAgICBmaSB8CisJICAgICAgdW5pcSA+ICIkbmxpc3QiUzsgdGhlbgorCSAgICA6CisJICBlbHNlCisJICAgICRHUkVQIC12ICJeOiAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlMKKwkgIGZpCisKKwkgIGlmIHRlc3QgLWYgIiRubGlzdCJTOyB0aGVuCisJICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NkZWNsIicgPCAiJG5saXN0IlMgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiJworCSAgZWxzZQorCSAgICAkRUNITyAnLyogTk9ORSAqLycgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCisJICBmaQorCisJICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKworLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwordHlwZWRlZiBzdHJ1Y3QgeworICBjb25zdCBjaGFyICpuYW1lOworICB2b2lkICphZGRyZXNzOworfSBsdF9kbHN5bWxpc3Q7CisiCisJICBjYXNlICRob3N0IGluCisJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKwkgICAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlCisgICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgorICAgb24gcHNldWRvLXJlbG9jcy4gICovIgorCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKKwkgICpvc2Y1KikKKwkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEgKi8iCisJICAgIGx0X2Rsc3ltX2NvbnN0PSA7OworCSAgKikKKwkgICAgbHRfZGxzeW1fY29uc3Q9Y29uc3QgOzsKKwkgIGVzYWMKKworCSAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCitleHRlcm4gJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdOworJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KK3tcCisgIHsgXCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwIH0sIgorCisJICBjYXNlICRuZWVkX2xpYl9wcmVmaXggaW4KKwkgIG5vKQorCSAgICBldmFsICIkZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgPCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKKwkgICAgOzsKKwkgICopCisJICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIDwgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCisJICAgIDs7CisJICBlc2FjCisJICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKyAgezAsICh2b2lkICopIDB9Cit9OworCisvKiBUaGlzIHdvcmtzIGFyb3VuZCBhIHByb2JsZW0gaW4gRnJlZUJTRCBsaW5rZXIgKi8KKyNpZmRlZiBGUkVFQlNEX1dPUktBUk9VTkQKK3N0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgIHJldHVybiBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzOworfQorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmXAorIgorCX0gIyAhJG9wdF9kcnlfcnVuCisKKwlwaWNfZmxhZ19mb3Jfc3ltdGFibGU9CisJY2FzZSAiJGNvbXBpbGVfY29tbWFuZCAiIGluCisJKiIgLXN0YXRpYyAiKikgOzsKKwkqKQorCSAgY2FzZSAkaG9zdCBpbgorCSAgIyBjb21waWxpbmcgdGhlIHN5bWJvbCB0YWJsZSBmaWxlIHdpdGggcGljX2ZsYWcgd29ya3MgYXJvdW5kCisJICAjIGEgRnJlZUJTRCBidWcgdGhhdCBjYXVzZXMgcHJvZ3JhbXMgdG8gY3Jhc2ggd2hlbiAtbG0gaXMKKwkgICMgbGlua2VkIGJlZm9yZSBhbnkgb3RoZXIgUElDIG9iamVjdC4gIEJ1dCB3ZSBtdXN0IG5vdCB1c2UKKwkgICMgcGljX2ZsYWcgd2hlbiBsaW5raW5nIHdpdGggLXN0YXRpYy4gIFRoZSBwcm9ibGVtIGV4aXN0cyBpbgorCSAgIyBGcmVlQlNEIDIuMi42IGFuZCBpcyBmaXhlZCBpbiBGcmVlQlNEIDMuMS4KKwkgICotKi1mcmVlYnNkMip8Ki0qLWZyZWVic2QzLjAqfCotKi1mcmVlYnNkZWxmMy4wKikKKwkgICAgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIC1ERlJFRUJTRF9XT1JLQVJPVU5EIiA7OworCSAgKi0qLWhwdXgqKQorCSAgICBwaWNfZmxhZ19mb3Jfc3ltdGFibGU9IiAkcGljX2ZsYWciICA7OworCSAgKikKKwkgICAgaWYgdGVzdCAiWCRteV9waWNfcCIgIT0gWG5vOyB0aGVuCisJICAgICAgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIgorCSAgICBmaQorCSAgICA7OworCSAgZXNhYworCSAgOzsKKwllc2FjCisJc3ltdGFiX2NmbGFncz0KKwlmb3IgYXJnIGluICRMVENGTEFHUzsgZG8KKwkgIGNhc2UgJGFyZyBpbgorCSAgLXBpZSB8IC1mcGllIHwgLWZQSUUpIDs7CisJICAqKSBzeW10YWJfY2ZsYWdzPSIkc3ltdGFiX2NmbGFncyAkYXJnIiA7OworCSAgZXNhYworCWRvbmUKKworCSMgTm93IGNvbXBpbGUgdGhlIGR5bmFtaWMgc3ltYm9sIGZpbGUuCisJZnVuY19zaG93X2V2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkTFRDQyRzeW10YWJfY2ZsYWdzIC1jJG5vX2J1aWx0aW5fZmxhZyRwaWNfZmxhZ19mb3Jfc3ltdGFibGUgIiRteV9kbHN5bXMiKScgJ2V4aXQgJD8nCisKKwkjIENsZWFuIHVwIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCisJZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIiRubGlzdCIgIiR7bmxpc3R9UyIgIiR7bmxpc3R9VCInCisKKwkjIFRyYW5zZm9ybSB0aGUgc3ltYm9sIGZpbGUgaW50byB0aGUgY29ycmVjdCBuYW1lLgorCXN5bWZpbGVvYmo9IiRvdXRwdXRfb2JqZGlyLyR7bXlfb3V0cHV0bmFtZX1TLiRvYmpleHQiCisJY2FzZSAkaG9zdCBpbgorCSpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmIjsgdGhlbgorCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmICRzeW1maWxlb2JqJSJgCisJICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAorCSAgZWxzZQorCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgIGZpCisJICA7OworCSopCisJICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICA7OworCWVzYWMKKwk7OworICAgICAgKikKKwlmdW5jX2ZhdGFsX2Vycm9yICJ1bmtub3duIHN1ZmZpeCBmb3IgXGAkbXlfZGxzeW1zJyIKKwk7OworICAgICAgZXNhYworICAgIGVsc2UKKyAgICAgICMgV2Uga2VlcCBnb2luZyBqdXN0IGluIGNhc2UgdGhlIHVzZXIgZGlkbid0IHJlZmVyIHRvCisgICAgICAjIGx0X3ByZWxvYWRlZF9zeW1ib2xzLiAgVGhlIGxpbmtlciB3aWxsIGZhaWwgaWYgZ2xvYmFsX3N5bWJvbF9waXBlCisgICAgICAjIHJlYWxseSB3YXMgcmVxdWlyZWQuCisKKyAgICAgICMgTnVsbGlmeSB0aGUgc3ltYm9sIGZpbGUuCisgICAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyUgQFNZTUZJTEVAJSUiYAorICAgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyUgQFNZTUZJTEVAJSUiYAorICAgIGZpCit9CisKKyMgZnVuY193aW4zMl9saWJpZCBhcmcKKyMgcmV0dXJuIHRoZSBsaWJyYXJ5IHR5cGUgb2YgZmlsZSAnYXJnJworIworIyBOZWVkIGEgbG90IG9mIGdvbyB0byBoYW5kbGUgKmJvdGgqIERMTHMgYW5kIGltcG9ydCBsaWJzCisjIEhhcyB0byBiZSBhIHNoZWxsIGZ1bmN0aW9uIGluIG9yZGVyIHRvICdlYXQnIHRoZSBhcmd1bWVudAorIyB0aGF0IGlzIHN1cHBsaWVkIHdoZW4gJGZpbGVfbWFnaWNfY29tbWFuZCBpcyBjYWxsZWQuCitmdW5jX3dpbjMyX2xpYmlkICgpCit7CisgICRvcHRfZGVidWcKKyAgd2luMzJfbGliaWRfdHlwZT0idW5rbm93biIKKyAgd2luMzJfZmlsZXJlcz1gZmlsZSAtTCAkMSAyPi9kZXYvbnVsbGAKKyAgY2FzZSAkd2luMzJfZmlsZXJlcyBpbgorICAqYXJcIGFyY2hpdmVcIGltcG9ydFwgbGlicmFyeSopICMgZGVmaW5pdGVseSBpbXBvcnQKKyAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCisgICAgOzsKKyAgKmFyXCBhcmNoaXZlKikgIyBjb3VsZCBiZSBhbiBpbXBvcnQsIG9yIHN0YXRpYworICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKKyAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IHBlLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycgPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSAkMSB8CisJJFNFRCAtbiAtZSAnCisJICAgIDEsMTAweworCQkvIEkgL3sKKwkJICAgIHMsLiosaW1wb3J0LAorCQkgICAgcAorCQkgICAgcQorCQl9CisJICAgIH0nYAorICAgICAgY2FzZSAkd2luMzJfbm1yZXMgaW4KKyAgICAgIGltcG9ydCopICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiOzsKKyAgICAgICopICAgICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBzdGF0aWMiOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICAgIDs7CisgICpETEwqKQorICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBETEwiCisgICAgOzsKKyAgKmV4ZWN1dGFibGUqKSAjIGJ1dCBzaGVsbCBzY3JpcHRzIGFyZSAiZXhlY3V0YWJsZSIgdG9vLi4uCisgICAgY2FzZSAkd2luMzJfZmlsZXJlcyBpbgorICAgICpNU1wgV2luZG93c1wgUEVcIEludGVsKikKKyAgICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBETEwiCisgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICBlc2FjCisgICRFQ0hPICIkd2luMzJfbGliaWRfdHlwZSIKK30KKworCisKKyMgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgZGlyIG9sZGxpYgorZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgZl9leF9hbl9hcl9kaXI9IiQxIjsgc2hpZnQKKyAgICBmX2V4X2FuX2FyX29sZGxpYj0iJDEiCisgICAgZnVuY19zaG93X2V2YWwgIihjZCBcJGZfZXhfYW5fYXJfZGlyICYmICRBUiB4IFwiXCRmX2V4X2FuX2FyX29sZGxpYlwiKSIgJ2V4aXQgJD8nCisgICAgaWYgKCRBUiB0ICIkZl9leF9hbl9hcl9vbGRsaWIiIHwgc29ydCB8IHNvcnQgLXVjID4vZGV2L251bGwgMj4mMSk7IHRoZW4KKyAgICAgOgorICAgIGVsc2UKKyAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9iamVjdCBuYW1lIGNvbmZsaWN0cyBpbiBhcmNoaXZlOiAkZl9leF9hbl9hcl9kaXIvJGZfZXhfYW5fYXJfb2xkbGliIgorICAgIGZpCit9CisKKworIyBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgZ2VudG9wIG9sZGxpYiAuLi4KK2Z1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQoreworICAgICRvcHRfZGVidWcKKyAgICBteV9nZW50b3A9IiQxIjsgc2hpZnQKKyAgICBteV9vbGRsaWJzPSR7MSsiJEAifQorICAgIG15X29sZG9ianM9IiIKKyAgICBteV94bGliPSIiCisgICAgbXlfeGFicz0iIgorICAgIG15X3hkaXI9IiIKKworICAgIGZvciBteV94bGliIGluICRteV9vbGRsaWJzOyBkbworICAgICAgIyBFeHRyYWN0IHRoZSBvYmplY3RzLgorICAgICAgY2FzZSAkbXlfeGxpYiBpbgorCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgbXlfeGFicz0iJG15X3hsaWIiIDs7CisJKikgbXlfeGFicz1gcHdkYCIvJG15X3hsaWIiIDs7CisgICAgICBlc2FjCisgICAgICBmdW5jX2Jhc2VuYW1lICIkbXlfeGxpYiIKKyAgICAgIG15X3hsaWI9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKyAgICAgIG15X3hsaWJfdT0kbXlfeGxpYgorICAgICAgd2hpbGUgOjsgZG8KKyAgICAgICAgY2FzZSAiICRleHRyYWN0ZWRfYXJjaGl2ZXMgIiBpbgorCSoiICRteV94bGliX3UgIiopCisJICBmdW5jX2FyaXRoICRleHRyYWN0ZWRfc2VyaWFsICsgMQorCSAgZXh0cmFjdGVkX3NlcmlhbD0kZnVuY19hcml0aF9yZXN1bHQKKwkgIG15X3hsaWJfdT1sdCRleHRyYWN0ZWRfc2VyaWFsLSRteV94bGliIDs7CisJKikgYnJlYWsgOzsKKwllc2FjCisgICAgICBkb25lCisgICAgICBleHRyYWN0ZWRfYXJjaGl2ZXM9IiRleHRyYWN0ZWRfYXJjaGl2ZXMgJG15X3hsaWJfdSIKKyAgICAgIG15X3hkaXI9IiRteV9nZW50b3AvJG15X3hsaWJfdSIKKworICAgICAgZnVuY19ta2Rpcl9wICIkbXlfeGRpciIKKworICAgICAgY2FzZSAkaG9zdCBpbgorICAgICAgKi1kYXJ3aW4qKQorCWZ1bmNfdmVyYm9zZSAiRXh0cmFjdGluZyAkbXlfeGFicyIKKwkjIERvIG5vdCBib3RoZXIgZG9pbmcgYW55dGhpbmcgaWYganVzdCBhIGRyeSBydW4KKwkkb3B0X2RyeV9ydW4gfHwgeworCSAgZGFyd2luX29yaWdfZGlyPWBwd2RgCisJICBjZCAkbXlfeGRpciB8fCBleGl0ICQ/CisJICBkYXJ3aW5fYXJjaGl2ZT0kbXlfeGFicworCSAgZGFyd2luX2N1cmRpcj1gcHdkYAorCSAgZGFyd2luX2Jhc2VfYXJjaGl2ZT1gYmFzZW5hbWUgIiRkYXJ3aW5fYXJjaGl2ZSJgCisJICBkYXJ3aW5fYXJjaGVzPWAkTElQTyAtaW5mbyAiJGRhcndpbl9hcmNoaXZlIiAyPi9kZXYvbnVsbCB8ICRHUkVQIEFyY2hpdGVjdHVyZXMgMj4vZGV2L251bGwgfHwgdHJ1ZWAKKwkgIGlmIHRlc3QgLW4gIiRkYXJ3aW5fYXJjaGVzIjsgdGhlbgorCSAgICBkYXJ3aW5fYXJjaGVzPWAkRUNITyAiJGRhcndpbl9hcmNoZXMiIHwgJFNFRCAtZSAncy8uKmFyZTovLydgCisJICAgIGRhcndpbl9hcmNoPQorCSAgICBmdW5jX3ZlcmJvc2UgIiRkYXJ3aW5fYmFzZV9hcmNoaXZlIGhhcyBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzICRkYXJ3aW5fYXJjaGVzIgorCSAgICBmb3IgZGFyd2luX2FyY2ggaW4gICRkYXJ3aW5fYXJjaGVzIDsgZG8KKwkgICAgICBmdW5jX21rZGlyX3AgInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0iCisJICAgICAgJExJUE8gLXRoaW4gJGRhcndpbl9hcmNoIC1vdXRwdXQgInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0vJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfSIgIiR7ZGFyd2luX2FyY2hpdmV9IgorCSAgICAgIGNkICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9IgorCSAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICJgcHdkYCIgIiR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0iCisJICAgICAgY2QgIiRkYXJ3aW5fY3VyZGlyIgorCSAgICAgICRSTSAidW5mYXQtJCQvJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfS0ke2Rhcndpbl9hcmNofS8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9IgorCSAgICBkb25lICMgJGRhcndpbl9hcmNoZXMKKyAgICAgICAgICAgICMjIE9rYXkgbm93IHdlJ3ZlIGEgYnVuY2ggb2YgdGhpbiBvYmplY3RzLCBnb3R0YSBmYXR0ZW4gdGhlbSB1cCA6KQorCSAgICBkYXJ3aW5fZmlsZWxpc3Q9YGZpbmQgdW5mYXQtJCQgLXR5cGUgZiAtbmFtZSBcKi5vIC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkU0VEIC1lICIkYmFzZW5hbWUiIHwgc29ydCAtdWAKKwkgICAgZGFyd2luX2ZpbGU9CisJICAgIGRhcndpbl9maWxlcz0KKwkgICAgZm9yIGRhcndpbl9maWxlIGluICRkYXJ3aW5fZmlsZWxpc3Q7IGRvCisJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCAkTkwyU1BgCisJICAgICAgJExJUE8gLWNyZWF0ZSAtb3V0cHV0ICIkZGFyd2luX2ZpbGUiICRkYXJ3aW5fZmlsZXMKKwkgICAgZG9uZSAjICRkYXJ3aW5fZmlsZWxpc3QKKwkgICAgJFJNIC1yZiB1bmZhdC0kJAorCSAgICBjZCAiJGRhcndpbl9vcmlnX2RpciIKKwkgIGVsc2UKKwkgICAgY2QgJGRhcndpbl9vcmlnX2RpcgorCSAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKKwkgIGZpICMgJGRhcndpbl9hcmNoZXMKKwl9ICMgISRvcHRfZHJ5X3J1bgorCTs7CisgICAgICAqKQorICAgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKKwk7OworICAgICAgZXNhYworICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKKyAgICBkb25lCisKKyAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKK30KKworCisKKyMgZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgW2FyZz1ub10KKyMKKyMgRW1pdCB0aGUgZmlyc3QgcGFydCBvZiBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgorIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBkZXNjcmlwdGlvbiBhc3NvY2lhdGVkIHdpdGgKKyMgZnVuY19lbWl0X3dyYXBwZXIoKSwgYmVsb3cuCitmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSAoKQoreworCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxX2FyZzE9bm8KKwlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCisJICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MV9hcmcxPSQxCisJZmkKKworCSRFQ0hPICJcCisjISAkU0hFTEwKKworIyAkb3V0cHV0IC0gdGVtcG9yYXJ5IHdyYXBwZXIgc2NyaXB0IGZvciAkb2JqZGlyLyRvdXRwdXRuYW1lCisjIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT04KKyMKKyMgVGhlICRvdXRwdXQgcHJvZ3JhbSBjYW5ub3QgYmUgZGlyZWN0bHkgZXhlY3V0ZWQgdW50aWwgYWxsIHRoZSBsaWJ0b29sCisjIGxpYnJhcmllcyB0aGF0IGl0IGRlcGVuZHMgb24gYXJlIGluc3RhbGxlZC4KKyMKKyMgVGhpcyB3cmFwcGVyIHNjcmlwdCBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCisjIElmIGl0IGlzLCBpdCB3aWxsIG5vdCBvcGVyYXRlIGNvcnJlY3RseS4KKworIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcworIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KK1hzZWQ9JyR7U0VEfSAtZSAxcy9eWC8vJworc2VkX3F1b3RlX3N1YnN0PSckc2VkX3F1b3RlX3N1YnN0JworCisjIEJlIEJvdXJuZSBjb21wYXRpYmxlCitpZiB0ZXN0IC1uIFwiXCR7WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgZW11bGF0ZSBzaAorICBOVUxMQ01EPToKKyAgIyBac2ggMy54IGFuZCA0LnggcGVyZm9ybXMgd29yZCBzcGxpdHRpbmcgb24gXCR7MStcIlwkQFwifSwgd2hpY2gKKyAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KKyAgYWxpYXMgLWcgJ1wkezErXCJcJEBcIn0nPSdcIlwkQFwiJworICBzZXRvcHQgTk9fR0xPQl9TVUJTVAorZWxzZQorICBjYXNlIFxgKHNldCAtbykgMj4vZGV2L251bGxcYCBpbiAqcG9zaXgqKSBzZXQgLW8gcG9zaXg7OyBlc2FjCitmaQorQklOX1NIPXhwZzQ7IGV4cG9ydCBCSU5fU0ggIyBmb3IgVHJ1NjQKK0RVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKKworIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKKyMgaWYgQ0RQQVRIIGlzIHNldC4KKyh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKKworcmVsaW5rX2NvbW1hbmQ9XCIkcmVsaW5rX2NvbW1hbmRcIgorCisjIFRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgZGV0ZXJtaW5lcyBvdXIgb3BlcmF0aW9uIG1vZGUuCitpZiB0ZXN0IFwiXCRsaWJ0b29sX2luc3RhbGxfbWFnaWNcIiA9IFwiJG1hZ2ljXCI7IHRoZW4KKyAgIyBpbnN0YWxsIG1vZGUgbmVlZHMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CisgIGdlbmVyYXRlZF9ieV9saWJ0b29sX3ZlcnNpb249JyRtYWNyb192ZXJzaW9uJworICBub3RpbnN0X2RlcGxpYnM9JyRub3RpbnN0X2RlcGxpYnMnCitlbHNlCisgICMgV2hlbiB3ZSBhcmUgc291cmNlZCBpbiBleGVjdXRlIG1vZGUsIFwkZmlsZSBhbmQgXCRFQ0hPIGFyZSBhbHJlYWR5IHNldC4KKyAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgorICAgIEVDSE89XCIkcWVjaG9cIgorICAgIGZpbGU9XCJcJDBcIgorICAgICMgTWFrZSBzdXJlIGVjaG8gd29ya3MuCisgICAgaWYgdGVzdCBcIlhcJDFcIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgorICAgICAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCisgICAgICBzaGlmdAorICAgIGVsaWYgdGVzdCBcIlhcYHsgXCRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxcYFwiID0gJ1hcdCc7IHRoZW4KKyAgICAgICMgWWlwcGVlLCBcJEVDSE8gd29ya3MhCisgICAgICA6CisgICAgZWxzZQorICAgICAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSBcJEVDSE8gd2lsbCB3b3JrLgorICAgICAgZXhlYyAkU0hFTEwgXCJcJDBcIiAtLW5vLXJlZXhlYyBcJHsxK1wiXCRAXCJ9CisgICAgZmkKKyAgZmlcCisiCisJJEVDSE8gIlwKKworICAjIEZpbmQgdGhlIGRpcmVjdG9yeSB0aGF0IHRoaXMgc2NyaXB0IGxpdmVzIGluLgorICB0aGlzZGlyPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJS9bXi9dKiQlJSdcYAorICB0ZXN0IFwieFwkdGhpc2RpclwiID0gXCJ4XCRmaWxlXCIgJiYgdGhpc2Rpcj0uCisKKyAgIyBGb2xsb3cgc3ltYm9saWMgbGlua3MgdW50aWwgd2UgZ2V0IHRvIHRoZSByZWFsIHRoaXNkaXIuCisgIGZpbGU9XGBscyAtbGQgXCJcJGZpbGVcIiB8ICR7U0VEfSAtbiAncy8uKi0+IC8vcCdcYAorICB3aGlsZSB0ZXN0IC1uIFwiXCRmaWxlXCI7IGRvCisgICAgZGVzdGRpcj1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyUvW14vXSpcJCUlJ1xgCisKKyAgICAjIElmIHRoZXJlIHdhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gY2hhbmdlIHRoaXNkaXIuCisgICAgaWYgdGVzdCBcInhcJGRlc3RkaXJcIiAhPSBcInhcJGZpbGVcIjsgdGhlbgorICAgICAgY2FzZSBcIlwkZGVzdGRpclwiIGluCisgICAgICBbXFxcXC9dKiB8IFtBLVphLXpdOltcXFxcL10qKSB0aGlzZGlyPVwiXCRkZXN0ZGlyXCIgOzsKKyAgICAgICopIHRoaXNkaXI9XCJcJHRoaXNkaXIvXCRkZXN0ZGlyXCIgOzsKKyAgICAgIGVzYWMKKyAgICBmaQorCisgICAgZmlsZT1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyVeLiovJSUnXGAKKyAgICBmaWxlPVxgbHMgLWxkIFwiXCR0aGlzZGlyL1wkZmlsZVwiIHwgJHtTRUR9IC1uICdzLy4qLT4gLy9wJ1xgCisgIGRvbmUKKyIKK30KKyMgZW5kOiBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MQorCisjIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyIFthcmc9bm9dCisjCisjIEVtaXQgdGhlIHNlY29uZCBwYXJ0IG9mIGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCisjIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGRlc2NyaXB0aW9uIGFzc29jaWF0ZWQgd2l0aAorIyBmdW5jX2VtaXRfd3JhcHBlcigpLCBiZWxvdy4KK2Z1bmNfZW1pdF93cmFwcGVyX3BhcnQyICgpCit7CisJZnVuY19lbWl0X3dyYXBwZXJfcGFydDJfYXJnMT1ubworCWlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKwkgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyX2FyZzE9JDEKKwlmaQorCisJJEVDSE8gIlwKKworICAjIFVzdWFsbHkgJ25vJywgZXhjZXB0IG9uIGN5Z3dpbi9taW5ndyB3aGVuIGVtYmVkZGVkIGludG8KKyAgIyB0aGUgY3dyYXBwZXIuCisgIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSPSRmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0Ml9hcmcxCisgIGlmIHRlc3QgXCJcJFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSXCIgPSBcInllc1wiOyB0aGVuCisgICAgIyBzcGVjaWFsIGNhc2UgZm9yICcuJworICAgIGlmIHRlc3QgXCJcJHRoaXNkaXJcIiA9IFwiLlwiOyB0aGVuCisgICAgICB0aGlzZGlyPVxgcHdkXGAKKyAgICBmaQorICAgICMgcmVtb3ZlIC5saWJzIGZyb20gdGhpc2RpcgorICAgIGNhc2UgXCJcJHRoaXNkaXJcIiBpbgorICAgICpbXFxcXC9dJG9iamRpciApIHRoaXNkaXI9XGBcJEVDSE8gXCJYXCR0aGlzZGlyXCIgfCBcJFhzZWQgLWUgJ3MlW1xcXFwvXVteXFxcXC9dKiQlJSdcYCA7OworICAgICRvYmpkaXIgKSAgIHRoaXNkaXI9LiA7OworICAgIGVzYWMKKyAgZmkKKworICAjIFRyeSB0byBnZXQgdGhlIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lLgorICBhYnNkaXI9XGBjZCBcIlwkdGhpc2RpclwiICYmIHB3ZFxgCisgIHRlc3QgLW4gXCJcJGFic2RpclwiICYmIHRoaXNkaXI9XCJcJGFic2RpclwiCisiCisKKwlpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllczsgdGhlbgorCSAgJEVDSE8gIlwKKyAgcHJvZ3JhbT1sdC0nJG91dHB1dG5hbWUnJGV4ZWV4dAorICBwcm9nZGlyPVwiXCR0aGlzZGlyLyRvYmpkaXJcIgorCisgIGlmIHRlc3QgISAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiB8fAorICAgICB7IGZpbGU9XGBscyAtMWR0IFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwiXCRwcm9nZGlyLy4uL1wkcHJvZ3JhbVwiIDI+L2Rldi9udWxsIHwgJHtTRUR9IDFxXGA7IFxcCisgICAgICAgdGVzdCBcIlhcJGZpbGVcIiAhPSBcIlhcJHByb2dkaXIvXCRwcm9ncmFtXCI7IH07IHRoZW4KKworICAgIGZpbGU9XCJcJFwkLVwkcHJvZ3JhbVwiCisKKyAgICBpZiB0ZXN0ICEgLWQgXCJcJHByb2dkaXJcIjsgdGhlbgorICAgICAgJE1LRElSIFwiXCRwcm9nZGlyXCIKKyAgICBlbHNlCisgICAgICAkUk0gXCJcJHByb2dkaXIvXCRmaWxlXCIKKyAgICBmaSIKKworCSAgJEVDSE8gIlwKKworICAgICMgcmVsaW5rIGV4ZWN1dGFibGUgaWYgbmVjZXNzYXJ5CisgICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgorICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcJHJlbGlua19jb21tYW5kIDI+JjFcYDsgdGhlbiA6CisgICAgICBlbHNlCisJJEVDSE8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgorCSRSTSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgorCWV4aXQgMQorICAgICAgZmkKKyAgICBmaQorCisgICAgJE1WIFwiXCRwcm9nZGlyL1wkZmlsZVwiIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDI+L2Rldi9udWxsIHx8CisgICAgeyAkUk0gXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7CisgICAgICAkTVYgXCJcJHByb2dkaXIvXCRmaWxlXCIgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IH0KKyAgICAkUk0gXCJcJHByb2dkaXIvXCRmaWxlXCIKKyAgZmkiCisJZWxzZQorCSAgJEVDSE8gIlwKKyAgcHJvZ3JhbT0nJG91dHB1dG5hbWUnCisgIHByb2dkaXI9XCJcJHRoaXNkaXIvJG9iamRpclwiCisiCisJZmkKKworCSRFQ0hPICJcCisKKyAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKKworCSMgRXhwb3J0IG91ciBzaGxpYnBhdGhfdmFyIGlmIHdlIGhhdmUgb25lLgorCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KKwkgICRFQ0hPICJcCisgICAgIyBBZGQgb3VyIG93biBsaWJyYXJ5IHBhdGggdG8gJHNobGlicGF0aF92YXIKKyAgICAkc2hsaWJwYXRoX3Zhcj1cIiR0ZW1wX3JwYXRoXCQkc2hsaWJwYXRoX3ZhclwiCisKKyAgICAjIFNvbWUgc3lzdGVtcyBjYW5ub3QgY29wZSB3aXRoIGNvbG9uLXRlcm1pbmF0ZWQgJHNobGlicGF0aF92YXIKKyAgICAjIFRoZSBzZWNvbmQgY29sb24gaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBCZU9TIFI0IHNlZAorICAgICRzaGxpYnBhdGhfdmFyPVxgXCRFQ0hPIFwiWFwkJHNobGlicGF0aF92YXJcIiB8IFwkWHNlZCAtZSAncy86OipcJC8vJ1xgCisKKyAgICBleHBvcnQgJHNobGlicGF0aF92YXIKKyIKKwlmaQorCisJIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KKwlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKwkgICRFQ0hPICJcCisgICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKKyAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAorIgorCWZpCisKKwkkRUNITyAiXAorICAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KKyAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCisiCisJY2FzZSAkaG9zdCBpbgorCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cworCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCisJICAkRUNITyAiXAorICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisiCisJICA7OworCisJKikKKwkgICRFQ0hPICJcCisgICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKyIKKwkgIDs7CisJZXNhYworCSRFQ0hPICJcCisgICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCisgICAgICBleGl0IDEKKyAgICBmaQorICBlbHNlCisgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgorICAgIFwkRUNITyBcIlwkMDogZXJyb3I6IFxcXGBcJHByb2dkaXIvXCRwcm9ncmFtJyBkb2VzIG5vdCBleGlzdFwiIDE+JjIKKyAgICBcJEVDSE8gXCJUaGlzIHNjcmlwdCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgXCRwcm9ncmFtLlwiIDE+JjIKKyAgICAkRUNITyBcIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiAxPiYyCisgICAgZXhpdCAxCisgIGZpCitmaVwKKyIKK30KKyMgZW5kOiBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MgorCisKKyMgZnVuY19lbWl0X3dyYXBwZXIgW2FyZz1ub10KKyMKKyMgRW1pdCBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgorIyBEb24ndCBkaXJlY3RseSBvcGVuIGEgZmlsZSBiZWNhdXNlIHdlIG1heSB3YW50IHRvCisjIGluY29ycG9yYXRlIHRoZSBzY3JpcHQgY29udGVudHMgd2l0aGluIGEgY3lnd2luL21pbmd3CisjIHdyYXBwZXIgZXhlY3V0YWJsZS4gIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4KKyMgZnVuY19tb2RlX2xpbmsgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIGEgbnVtYmVyIG9mIHZhcmlhYmxlcworIyBzZXQgdGhlcmVpbi4KKyMKKyMgQVJHIGlzIHRoZSB2YWx1ZSB0aGF0IHRoZSBXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUgorIyB2YXJpYWJsZSB3aWxsIHRha2UuICBJZiAneWVzJywgdGhlbiB0aGUgZW1pdHRlZCBzY3JpcHQKKyMgd2lsbCBhc3N1bWUgdGhhdCB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGl0IGlzIHN0b3JlZCBpcworIyB0aGUgJG9iamRpciBkaXJlY3RvcnkuICBUaGlzIGlzIGEgY3lnd2luL21pbmd3LXNwZWNpZmljCisjIGJlaGF2aW9yLgorZnVuY19lbWl0X3dyYXBwZXIgKCkKK3sKKwlmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPW5vCisJaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgorCSAgZnVuY19lbWl0X3dyYXBwZXJfYXJnMT0kMQorCWZpCisKKwkjIHNwbGl0IHRoaXMgdXAgc28gdGhhdCBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCisJIyBjYW4gY2FsbCBlYWNoIHBhcnQgaW5kZXBlbmRlbnRseS4KKwlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSAiJHtmdW5jX2VtaXRfd3JhcHBlcl9hcmcxfSIKKwlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiAiJHtmdW5jX2VtaXRfd3JhcHBlcl9hcmcxfSIKK30KKworCisjIGZ1bmNfdG9faG9zdF9wYXRoIGFyZworIworIyBDb252ZXJ0IHBhdGhzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgorIyBJbnRlbmRlZCBmb3IgdXNlIHdpdGggIm5hdGl2ZSIgbWluZ3cgKHdoZXJlIGxpYnRvb2wgaXRzZWxmCisjIGlzIHJ1bm5pbmcgdW5kZXIgdGhlIG1zeXMgc2hlbGwpLCBvciBpbiB0aGUgZm9sbG93aW5nIGNyb3NzLQorIyBidWlsZCBlbnZpcm9ubWVudHM6CisjICAgICRidWlsZCAgICAgICAgICAkaG9zdAorIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KKyMgICAgY3lnd2luICAgICAgICAgIG1pbmd3CisjICAgICpuaXggKyB3aW5lICAgICBtaW5ndworIyB3aGVyZSB3aW5lIGlzIGVxdWlwcGVkIHdpdGggdGhlIGB3aW5lcGF0aCcgZXhlY3V0YWJsZS4KKyMgSW4gdGhlIG5hdGl2ZSBtaW5ndyBjYXNlLCB0aGUgKG1zeXMpIHNoZWxsIGF1dG9tYXRpY2FsbHkKKyMgY29udmVydHMgcGF0aHMgZm9yIGFueSBub24tbXN5cyBhcHBsaWNhdGlvbnMgaXQgbGF1bmNoZXMsCisjIGJ1dCB0aGF0IGZhY2lsaXR5IGlzbid0IGF2YWlsYWJsZSBmcm9tIGluc2lkZSB0aGUgY3dyYXBwZXIuCisjIFNpbWlsYXIgYWNjb21tb2RhdGlvbnMgYXJlIG5lY2Vzc2FyeSBmb3IgJGhvc3QgbWluZ3cgYW5kCisjICRidWlsZCBjeWd3aW4uICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBubyBoYXJtIGZvciBvdGhlcgorIyAkaG9zdC8kYnVpbGQgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgYWJvdmUuCisjCisjIEFSRyBpcyB0aGUgcGF0aCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KKyMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBmb3IgJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCisjIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCitmdW5jX3RvX2hvc3RfcGF0aCAoKQoreworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCisgICAgY2FzZSAkaG9zdCBpbgorICAgICAgKm1pbmd3KiApCisgICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKKyAgICAgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICAgICAqbWluZ3cqICkgIyBhY3R1YWxseSwgbXN5cworICAgICAgICAgICAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0CisgICAgICAgICAgICBsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzPSJzL1sgXSpcJC8vIgorICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gKCBjbWQgLy9jIGVjaG8gIiQxIiB8XAorICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX3N0cmlwX3RyYWlsaW5nX3NwYWNlcyIgKSAyPi9kZXYvbnVsbCB8fCBlY2hvICIiYAorICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfFwKKyAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorICAgICAgICAgICAgOzsKKyAgICAgICAgICAqY3lnd2luKiApCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWBjeWdwYXRoIC13ICIkMSJgCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8XAorICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCisgICAgICAgICAgICA7OworICAgICAgICAgICogKQorICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybworICAgICAgICAgICAgIyBlcnJvciBjb2RlLCBzbyB3ZSBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZgorICAgICAgICAgICAgIyBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgY29tbWFuZCBpcyBub3QKKyAgICAgICAgICAgICMgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAorICAgICAgICAgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoCisgICAgICAgICAgICAjIGVycm9yIGNvZGUgb2YgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMKKyAgICAgICAgICAgICMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246CisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAorICAgICAgICAgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY190b19ob3N0X3BhdGhfdG1wMX0iOyB0aGVuCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHxcCisgICAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAjIEFsbG93IHdhcm5pbmcgYmVsb3cuCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iIgorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCisgICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKKyAgICAgICAgICBmdW5jX2Vycm9yICIgICckMSciCisgICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisgICAgICAgICAgIyBGYWxsYmFjazoKKyAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICAgICAgICBmaQorICAgICAgICA7OworICAgIGVzYWMKKyAgZmkKK30KKyMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aAorCisjIGZ1bmNfdG9faG9zdF9wYXRobGlzdCBhcmcKKyMKKyMgQ29udmVydCBwYXRobGlzdHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCisjIFNlZSBmdW5jX3RvX2hvc3RfcGF0aCgpLCBhYm92ZS4gVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyB0aGUKKyMgZm9sbG93aW5nICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMgKGJ1dCBkb2VzIG5vIGhhcm0gZm9yCisjIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGhlcmUpOgorIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKKyMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCisjICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndworIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKKyMKKyMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8KKyMgJGhvc3QgZm9ybWF0LiBJZiBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yCisjIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkKKyMgb24gb3V0cHV0LgorIworIyBBUkcgaXMgYSBwYXRobGlzdCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KKyMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBvbiAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKKyMgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQuCitmdW5jX3RvX2hvc3RfcGF0aGxpc3QgKCkKK3sKKyAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKyAgICBjYXNlICRob3N0IGluCisgICAgICAqbWluZ3cqICkKKyAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KKyAgICAgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQorICAgICAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj0iJDEiCisgICAgICAgICMgT25jZSBzZXQgZm9yIHRoaXMgY2FsbCwgdGhpcyB2YXJpYWJsZSBzaG91bGQgbm90IGJlCisgICAgICAgICMgcmVhc3NpZ25lZC4gSXQgaXMgdXNlZCBpbiB0aGEgZmFsbGJhY2sgY2FzZS4KKyAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDE9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKKyAgICAgICAgICAkU0VEIC1lICdzfF46Knx8JyAtZSAnc3w6KiR8fCdgCisgICAgICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAgICAgKm1pbmd3KiApICMgQWN0dWFsbHksIG1zeXMuCisgICAgICAgICAgICAjIEF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQuCisgICAgICAgICAgICBsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzPSJzL1sgXSpcJC8vIgorICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDI9YCggY21kIC8vYyBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCisgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzIiApIDI+L2Rldi9udWxsIHx8IGVjaG8gIiJgCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDIiIHxcCisgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKmN5Z3dpbiogKQorICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDI9YGN5Z3BhdGggLXcgLXAgIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSJgCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDIiIHxcCisgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKiApCisgICAgICAgICAgICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRobGlzdHMKKyAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiIKKyAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlM9JElGUworICAgICAgICAgICAgSUZTPToKKyAgICAgICAgICAgIGZvciBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEgOyBkbworICAgICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKKyAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIiA7IHRoZW4KKyAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIgorICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgorICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdDskZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBJRlM9OgorICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCisgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IiA7IHRoZW4KKyAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGgocykgY29ycmVzcG9uZGluZyB0byIKKyAgICAgICAgICBmdW5jX2Vycm9yICIgICckMSciCisgICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisgICAgICAgICAgIyBGYWxsYmFjay4gVGhpcyBtYXkgYnJlYWsgaWYgJDEgY29udGFpbnMgRE9TLXN0eWxlIGRyaXZlCisgICAgICAgICAgIyBzcGVjaWZpY2F0aW9ucy4gVGhlIGZpeCBpcyBub3QgdG8gY29tcGxpY2F0ZSB0aGUgZXhwcmVzc2lvbgorICAgICAgICAgICMgYmVsb3csIGJ1dCBmb3IgdGhlIHVzZXIgdG8gcHJvdmlkZSBhIHdvcmtpbmcgd2luZSBpbnN0YWxsYXRpb24KKyAgICAgICAgICAjIHdpdGggd2luZXBhdGggc28gdGhhdCBwYXRoIHRyYW5zbGF0aW9uIGluIHRoZSBjcm9zcy10by1taW5ndworICAgICAgICAgICMgY2FzZSB3b3JrcyBwcm9wZXJseS4KKyAgICAgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2Rvcz0ic3w6fDt8ZyIKKyAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCisgICAgICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3MiYAorICAgICAgICBmaQorICAgICAgICAjIE5vdywgYWRkIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvcnMgYmFjaworICAgICAgICBjYXNlICIkMSIgaW4KKyAgICAgICAgICA6KiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IjskZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgY2FzZSAiJDEiIGluCisgICAgICAgICAgKjogKSBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdDsiCisgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisgICAgZXNhYworICBmaQorfQorIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRobGlzdAorCisjIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKKyMgZW1pdCB0aGUgc291cmNlIGNvZGUgZm9yIGEgd3JhcHBlciBleGVjdXRhYmxlIG9uIHN0ZG91dAorIyBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UKKyMgaXQgZGVwZW5kcyBvbiBhIG51bWJlciBvZiB2YXJpYWJsZSBzZXQgdGhlcmVpbi4KK2Z1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMgKCkKK3sKKwljYXQgPDxFT0YKKworLyogJGN3cmFwcGVyc291cmNlIC0gdGVtcG9yYXJ5IHdyYXBwZXIgZXhlY3V0YWJsZSBmb3IgJG9iamRpci8kb3V0cHV0bmFtZQorICAgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgorCisgICBUaGUgJG91dHB1dCBwcm9ncmFtIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCB1bnRpbCBhbGwgdGhlIGxpYnRvb2wKKyAgIGxpYnJhcmllcyB0aGF0IGl0IGRlcGVuZHMgb24gYXJlIGluc3RhbGxlZC4KKworICAgVGhpcyB3cmFwcGVyIGV4ZWN1dGFibGUgc2hvdWxkIG5ldmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgorICAgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgorCisgICBDdXJyZW50bHksIGl0IHNpbXBseSBleGVjcyB0aGUgd3JhcHBlciAqc2NyaXB0KiAiJFNIRUxMICRvdXRwdXQiLAorICAgYnV0IGNvdWxkIGV2ZW50dWFsbHkgYWJzb3JiIGFsbCBvZiB0aGUgc2NyaXB0cyBmdW5jdGlvbmFsaXR5IGFuZAorICAgZXhlYyAkb2JqZGlyLyRvdXRwdXRuYW1lIGRpcmVjdGx5LgorKi8KK0VPRgorCSAgICBjYXQgPDwiRU9GIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaWZkZWYgX01TQ19WRVIKKyMgaW5jbHVkZSA8ZGlyZWN0Lmg+CisjIGluY2x1ZGUgPHByb2Nlc3MuaD4KKyMgaW5jbHVkZSA8aW8uaD4KKyMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKKyNlbHNlCisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyBpbmNsdWRlIDxzdGRpbnQuaD4KKyMgaWZkZWYgX19DWUdXSU5fXworIyAgaW5jbHVkZSA8aW8uaD4KKyMgIGRlZmluZSBIQVZFX1NFVEVOVgorIyAgaWZkZWYgX19TVFJJQ1RfQU5TSV9fCitjaGFyICpyZWFscGF0aCAoY29uc3QgY2hhciAqLCBjaGFyICopOworaW50IHB1dGVudiAoY2hhciAqKTsKK2ludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZgorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKKyNpZiBkZWZpbmVkKFBBVEhfTUFYKQorIyBkZWZpbmUgTFRfUEFUSE1BWCBQQVRIX01BWAorI2VsaWYgZGVmaW5lZChNQVhQQVRITEVOKQorIyBkZWZpbmUgTFRfUEFUSE1BWCBNQVhQQVRITEVOCisjZWxzZQorIyBkZWZpbmUgTFRfUEFUSE1BWCAxMDI0CisjZW5kaWYKKworI2lmbmRlZiBTX0lYT1RICisjIGRlZmluZSBTX0lYT1RIIDAKKyNlbmRpZgorI2lmbmRlZiBTX0lYR1JQCisjIGRlZmluZSBTX0lYR1JQIDAKKyNlbmRpZgorCisjaWZkZWYgX01TQ19WRVIKKyMgZGVmaW5lIFNfSVhVU1IgX1NfSUVYRUMKKyMgZGVmaW5lIHN0YXQgX3N0YXQKKyMgaWZuZGVmIF9JTlRQVFJfVF9ERUZJTkVECisjICBkZWZpbmUgaW50cHRyX3QgaW50CisjIGVuZGlmCisjZW5kaWYKKworI2lmbmRlZiBESVJfU0VQQVJBVE9SCisjIGRlZmluZSBESVJfU0VQQVJBVE9SICcvJworIyBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgJzonCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9XSU4zMikgfHwgZGVmaW5lZCAoX19NU0RPU19fKSB8fCBkZWZpbmVkIChfX0RKR1BQX18pIHx8IFwKKyAgZGVmaW5lZCAoX19PUzJfXykKKyMgZGVmaW5lIEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNCisjIGRlZmluZSBGT1BFTl9XQiAid2IiCisjIGlmbmRlZiBESVJfU0VQQVJBVE9SXzIKKyMgIGRlZmluZSBESVJfU0VQQVJBVE9SXzIgJ1xcJworIyBlbmRpZgorIyBpZm5kZWYgUEFUSF9TRVBBUkFUT1JfMgorIyAgZGVmaW5lIFBBVEhfU0VQQVJBVE9SXzIgJzsnCisjIGVuZGlmCisjZW5kaWYKKworI2lmbmRlZiBESVJfU0VQQVJBVE9SXzIKKyMgZGVmaW5lIElTX0RJUl9TRVBBUkFUT1IoY2gpICgoY2gpID09IERJUl9TRVBBUkFUT1IpCisjZWxzZSAvKiBESVJfU0VQQVJBVE9SXzIgKi8KKyMgZGVmaW5lIElTX0RJUl9TRVBBUkFUT1IoY2gpIFwKKwkoKChjaCkgPT0gRElSX1NFUEFSQVRPUikgfHwgKChjaCkgPT0gRElSX1NFUEFSQVRPUl8yKSkKKyNlbmRpZiAvKiBESVJfU0VQQVJBVE9SXzIgKi8KKworI2lmbmRlZiBQQVRIX1NFUEFSQVRPUl8yCisjIGRlZmluZSBJU19QQVRIX1NFUEFSQVRPUihjaCkgKChjaCkgPT0gUEFUSF9TRVBBUkFUT1IpCisjZWxzZSAvKiBQQVRIX1NFUEFSQVRPUl8yICovCisjIGRlZmluZSBJU19QQVRIX1NFUEFSQVRPUihjaCkgKChjaCkgPT0gUEFUSF9TRVBBUkFUT1JfMikKKyNlbmRpZiAvKiBQQVRIX1NFUEFSQVRPUl8yICovCisKKyNpZmRlZiBfX0NZR1dJTl9fCisjIGRlZmluZSBGT1BFTl9XQiAid2IiCisjZW5kaWYKKworI2lmbmRlZiBGT1BFTl9XQgorIyBkZWZpbmUgRk9QRU5fV0IgInciCisjZW5kaWYKKyNpZm5kZWYgX09fQklOQVJZCisjIGRlZmluZSBfT19CSU5BUlkgMAorI2VuZGlmCisKKyNkZWZpbmUgWE1BTExPQyh0eXBlLCBudW0pICAgICAgKCh0eXBlICopIHhtYWxsb2MgKChudW0pICogc2l6ZW9mKHR5cGUpKSkKKyNkZWZpbmUgWEZSRUUoc3RhbGUpIGRvIHsgXAorICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAorfSB3aGlsZSAoMCkKKworI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgorI2lmIGRlZmluZWQgREVCVUdXUkFQUEVSCisjIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykgbHR3cmFwcGVyX2RlYnVncHJpbnRmIGFyZ3MKK3N0YXRpYyB2b2lkCitsdHdyYXBwZXJfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKyAgICB2YV9zdGFydCAoYXJncywgZm10KTsKKyAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKKyAgICB2YV9lbmQgKGFyZ3MpOworfQorI2Vsc2UKKyMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKQorI2VuZGlmCisKK2NvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9IE5VTEw7CisKK3ZvaWQgKnhtYWxsb2MgKHNpemVfdCBudW0pOworY2hhciAqeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKK2NvbnN0IGNoYXIgKmJhc2VfbmFtZSAoY29uc3QgY2hhciAqbmFtZSk7CitjaGFyICpmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpOworY2hhciAqY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKTsKK2ludCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOworaW50IGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOworY2hhciAqc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7Cit2b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOwordm9pZCBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKK2NoYXIgKmx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCk7Cit2b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKGNvbnN0IGNoYXIgKmFyZyk7Cit2b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChjb25zdCBjaGFyICphcmcpOwordm9pZCBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChjb25zdCBjaGFyICphcmcpOworaW50IGx0X3NwbGl0X25hbWVfdmFsdWUgKGNvbnN0IGNoYXIgKmFyZywgY2hhcioqIG5hbWUsIGNoYXIqKiB2YWx1ZSk7Cit2b2lkIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwordm9pZCBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKKworc3RhdGljIGNvbnN0IGNoYXIgKnNjcmlwdF90ZXh0X3BhcnQxID0KK0VPRgorCisJICAgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxIHllcyB8CisJICAgICAgICAkU0VEIC1lICdzL1woW1xcIl1cKS9cXFwxL2cnIFwKKwkgICAgICAgICAgICAgLWUgJ3MvXi8gICIvJyAtZSAncy8kL1xcbiIvJworCSAgICBlY2hvICI7IgorCSAgICBjYXQgPDxFT0YKKworc3RhdGljIGNvbnN0IGNoYXIgKnNjcmlwdF90ZXh0X3BhcnQyID0KK0VPRgorCSAgICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiB5ZXMgfAorCSAgICAgICAgJFNFRCAtZSAncy9cKFtcXCJdXCkvXFxcMS9nJyBcCisJICAgICAgICAgICAgIC1lICdzL14vICAiLycgLWUgJ3MvJC9cXG4iLycKKwkgICAgZWNobyAiOyIKKworCSAgICBjYXQgPDxFT0YKK2NvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Citjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7CitFT0YKKworCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJHRlbXBfcnBhdGgiCisJICAgICAgY2F0IDw8RU9GCitjb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7CitFT0YKKwkgICAgZWxzZQorCSAgICAgIGNhdCA8PCJFT0YiCitjb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIiOworRU9GCisJICAgIGZpCisKKwkgICAgaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJGRsbHNlYXJjaHBhdGg6IgorCSAgICAgIGNhdCA8PEVPRgorY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBUk5BTUUgPSAiUEFUSCI7Citjb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7CitFT0YKKwkgICAgZWxzZQorCSAgICAgIGNhdCA8PCJFT0YiCitjb25zdCBjaGFyICogRVhFX1BBVEhfVkFSTkFNRSA9ICIiOworY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiIjsKK0VPRgorCSAgICBmaQorCisJICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCisJICAgICAgY2F0IDw8RU9GCitjb25zdCBjaGFyICogVEFSR0VUX1BST0dSQU1fTkFNRSA9ICJsdC0kb3V0cHV0bmFtZSI7IC8qIGhvcGVmdWxseSwgbm8gLmV4ZSAqLworRU9GCisJICAgIGVsc2UKKwkgICAgICBjYXQgPDxFT0YKK2NvbnN0IGNoYXIgKiBUQVJHRVRfUFJPR1JBTV9OQU1FID0gIiRvdXRwdXRuYW1lIjsgLyogaG9wZWZ1bGx5LCBubyAuZXhlICovCitFT0YKKwkgICAgZmkKKworCisJICAgIGNhdCA8PCJFT0YiCisKKyNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCisjZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCAgNQorCitzdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7CitzdGF0aWMgY29uc3QgY2hhciAqbHR3cmFwcGVyX29wdGlvbl9wcmVmaXggPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWDsKKworc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKKworc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfc2V0X29wdF9sZW4gICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgNzsKK3N0YXRpYyBjb25zdCBjaGFyICplbnZfc2V0X29wdCAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtc2V0IjsKKyAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgdmFsdWUgb2YgZm9vIGlzIHNldCB0byBiYXIgKi8KKworc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfcHJlcGVuZF9vcHRfbGVuID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgMTE7CitzdGF0aWMgY29uc3QgY2hhciAqZW52X3ByZXBlbmRfb3B0ICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZW52LXByZXBlbmQiOworICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCBuZXcgdmFsdWUgb2YgZm9vIGlzIGJhciR7Zm9vfSAqLworCitzdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9hcHBlbmRfb3B0X2xlbiAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyAxMDsKK3N0YXRpYyBjb25zdCBjaGFyICplbnZfYXBwZW5kX29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtYXBwZW5kIjsKKyAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgbmV3IHZhbHVlIG9mIGZvbyBpcyAke2Zvb31iYXIgKi8KKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBjaGFyICoqbmV3YXJnejsKKyAgaW50ICBuZXdhcmdjOworICBjaGFyICp0bXBfcGF0aHNwZWM7CisgIGNoYXIgKmFjdHVhbF9jd3JhcHBlcl9wYXRoOworICBjaGFyICphY3R1YWxfY3dyYXBwZXJfbmFtZTsKKyAgY2hhciAqdGFyZ2V0X25hbWU7CisgIGNoYXIgKmx0X2FyZ3ZfemVybzsKKyAgaW50cHRyX3QgcnZhbCA9IDEyNzsKKworICBpbnQgaTsKKworICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBhcmd2WzBdICAgICAgOiAlc1xuIiwgYXJndlswXSkpOworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIHByb2dyYW1fbmFtZSA6ICVzXG4iLCBwcm9ncmFtX25hbWUpKTsKKworICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdCAqLworICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQorICAgIHsKKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQorCXsKK0VPRgorCSAgICBjYXNlICIkaG9zdCIgaW4KKwkgICAgICAqbWluZ3cqIHwgKmN5Z3dpbiogKQorCQkjIG1ha2Ugc3Rkb3V0IHVzZSAidW5peCIgbGluZSBlbmRpbmdzCisJCWVjaG8gIiAgICAgICAgICBzZXRtb2RlKDEsX09fQklOQVJZKTsiCisJCTs7CisJICAgICAgZXNhYworCisJICAgIGNhdCA8PCJFT0YiCisJICBwcmludGYgKCIlcyIsIHNjcmlwdF90ZXh0X3BhcnQxKTsKKwkgIHByaW50ZiAoIiVzIiwgc2NyaXB0X3RleHRfcGFydDIpOworCSAgcmV0dXJuIDA7CisJfQorICAgIH0KKworICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CisgIHRtcF9wYXRoc3BlYyA9IGZpbmRfZXhlY3V0YWJsZSAoYXJndlswXSk7CisgIGlmICh0bXBfcGF0aHNwZWMgPT0gTlVMTCkKKyAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAorCQkJICB0bXBfcGF0aHNwZWMpKTsKKworICBhY3R1YWxfY3dyYXBwZXJfcGF0aCA9IGNoYXNlX3N5bWxpbmtzICh0bXBfcGF0aHNwZWMpOworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKKwkJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7CisKKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwKCBiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKKworICAvKiB3cmFwcGVyIG5hbWUgdHJhbnNmb3JtcyAqLworICBzdHJlbmR6YXAgKGFjdHVhbF9jd3JhcHBlcl9uYW1lLCAiLmV4ZSIpOworICB0bXBfcGF0aHNwZWMgPSBsdF9leHRlbmRfc3RyIChhY3R1YWxfY3dyYXBwZXJfbmFtZSwgIi5leGUiLCAxKTsKKyAgWEZSRUUgKGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB0bXBfcGF0aHNwZWM7CisgIHRtcF9wYXRoc3BlYyA9IDA7CisKKyAgLyogdGFyZ2V0X25hbWUgdHJhbnNmb3JtcyAtLSB1c2UgYWN0dWFsIHRhcmdldCBwcm9ncmFtIG5hbWU7IG1pZ2h0IGhhdmUgbHQtIHByZWZpeCAqLworICB0YXJnZXRfbmFtZSA9IHhzdHJkdXAgKGJhc2VfbmFtZSAoVEFSR0VUX1BST0dSQU1fTkFNRSkpOworICBzdHJlbmR6YXAgKHRhcmdldF9uYW1lLCAiLmV4ZSIpOworICB0bXBfcGF0aHNwZWMgPSBsdF9leHRlbmRfc3RyICh0YXJnZXRfbmFtZSwgIi5leGUiLCAxKTsKKyAgWEZSRUUgKHRhcmdldF9uYW1lKTsKKyAgdGFyZ2V0X25hbWUgPSB0bXBfcGF0aHNwZWM7CisgIHRtcF9wYXRoc3BlYyA9IDA7CisKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKKwkJCSAgdGFyZ2V0X25hbWUpKTsKK0VPRgorCisJICAgIGNhdCA8PEVPRgorICBuZXdhcmd6WzBdID0KKyAgICBYTUFMTE9DIChjaGFyLCAoc3RybGVuIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkgKworCQkgICAgc3RybGVuICgiJG9iamRpciIpICsgMSArIHN0cmxlbiAoYWN0dWFsX2N3cmFwcGVyX25hbWUpICsgMSkpOworICBzdHJjcHkgKG5ld2FyZ3pbMF0sIGFjdHVhbF9jd3JhcHBlcl9wYXRoKTsKKyAgc3RyY2F0IChuZXdhcmd6WzBdLCAiJG9iamRpciIpOworICBzdHJjYXQgKG5ld2FyZ3pbMF0sICIvIik7CitFT0YKKworCSAgICBjYXQgPDwiRU9GIgorICAvKiBzdG9wIGhlcmUsIGFuZCBjb3B5IHNvIHdlIGRvbid0IGhhdmUgdG8gZG8gdGhpcyB0d2ljZSAqLworICB0bXBfcGF0aHNwZWMgPSB4c3RyZHVwIChuZXdhcmd6WzBdKTsKKworICAvKiBkbyBOT1Qgd2FudCB0aGUgbHQtIHByZWZpeCBoZXJlLCBzbyB1c2UgYWN0dWFsX2N3cmFwcGVyX25hbWUgKi8KKyAgc3RyY2F0IChuZXdhcmd6WzBdLCBhY3R1YWxfY3dyYXBwZXJfbmFtZSk7CisKKyAgLyogRE8gd2FudCB0aGUgbHQtIHByZWZpeCBoZXJlIGlmIGl0IGV4aXN0cywgc28gdXNlIHRhcmdldF9uYW1lICovCisgIGx0X2FyZ3ZfemVybyA9IGx0X2V4dGVuZF9zdHIgKHRtcF9wYXRoc3BlYywgdGFyZ2V0X25hbWUsIDEpOworICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKKyAgdG1wX3BhdGhzcGVjID0gTlVMTDsKK0VPRgorCisJICAgIGNhc2UgJGhvc3Rfb3MgaW4KKwkgICAgICBtaW5ndyopCisJICAgIGNhdCA8PCJFT0YiCisgIHsKKyAgICBjaGFyKiBwOworICAgIHdoaWxlICgocCA9IHN0cmNociAobmV3YXJnelswXSwgJ1xcJykpICE9IE5VTEwpCisgICAgICB7CisJKnAgPSAnLyc7CisgICAgICB9CisgICAgd2hpbGUgKChwID0gc3RyY2hyIChsdF9hcmd2X3plcm8sICdcXCcpKSAhPSBOVUxMKQorICAgICAgeworCSpwID0gJy8nOworICAgICAgfQorICB9CitFT0YKKwkgICAgOzsKKwkgICAgZXNhYworCisJICAgIGNhdCA8PCJFT0YiCisgIFhGUkVFICh0YXJnZXRfbmFtZSk7CisgIFhGUkVFIChhY3R1YWxfY3dyYXBwZXJfcGF0aCk7CisgIFhGUkVFIChhY3R1YWxfY3dyYXBwZXJfbmFtZSk7CisKKyAgbHRfc2V0ZW52ICgiQklOX1NIIiwgInhwZzQiKTsgLyogZm9yIFRydTY0ICovCisgIGx0X3NldGVudiAoIkRVQUxDQVNFIiwgIjEiKTsgIC8qIGZvciBNU0sgc2ggKi8KKyAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7CisgIGx0X3VwZGF0ZV9leGVfcGF0aCAoRVhFX1BBVEhfVkFSTkFNRSwgRVhFX1BBVEhfVkFMVUUpOworCisgIG5ld2FyZ2M9MDsKKyAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKKyAgICB7CisgICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X3NldF9vcHQsIGVudl9zZXRfb3B0X2xlbikgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9zZXRfb3B0X2xlbl0gPT0gJz0nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9zZXRfb3B0X2xlbiArIDE7CisgICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKHApOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3NldF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoYXJndlsrK2ldKTsgLyogZG9uJ3QgY29weSAqLworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGx0X2ZhdGFsICgiJXMgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGVudl9zZXRfb3B0KTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9wcmVwZW5kX29wdCwgZW52X3ByZXBlbmRfb3B0X2xlbikgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9wcmVwZW5kX29wdF9sZW5dID09ICc9JykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfcHJlcGVuZF9vcHRfbGVuICsgMTsKKyAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKHApOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3ByZXBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChhcmd2WysraV0pOyAvKiBkb24ndCBjb3B5ICovCisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbHRfZmF0YWwgKCIlcyBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgZW52X3ByZXBlbmRfb3B0KTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9hcHBlbmRfb3B0LCBlbnZfYXBwZW5kX29wdF9sZW4pID09IDApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoYXJndltpXVtlbnZfYXBwZW5kX29wdF9sZW5dID09ICc9JykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfYXBwZW5kX29wdF9sZW4gKyAxOworICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldW2Vudl9hcHBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGFyZ3ZbKytpXSk7IC8qIGRvbid0IGNvcHkgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsdF9mYXRhbCAoIiVzIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBlbnZfYXBwZW5kX29wdCk7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAorICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCisgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKyAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICBsdF9mYXRhbCAoIlVucmVjb2duaXplZCBvcHRpb24gaW4gJXMgbmFtZXNwYWNlOiAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOworICAgICAgICB9CisgICAgICAvKiBvdGhlcndpc2UgLi4uICovCisgICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKKyAgICB9CisgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7CisKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICAgICAoKCIobWFpbikgbHRfYXJndl96ZXJvIDogJXNcbiIsIChsdF9hcmd2X3plcm8gPyBsdF9hcmd2X3plcm8gOiAiPE5VTEw+IikpKTsKKyAgZm9yIChpID0gMDsgaSA8IG5ld2FyZ2M7IGkrKykKKyAgICB7CisgICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIG5ld2FyZ3pbJWRdICAgOiAlc1xuIiwgaSwgKG5ld2FyZ3pbaV0gPyBuZXdhcmd6W2ldIDogIjxOVUxMPiIpKSk7CisgICAgfQorCitFT0YKKworCSAgICBjYXNlICRob3N0X29zIGluCisJICAgICAgbWluZ3cqKQorCQljYXQgPDwiRU9GIgorICAvKiBleGVjdiBkb2Vzbid0IGFjdHVhbGx5IHdvcmsgb24gbWluZ3cgYXMgZXhwZWN0ZWQgb24gdW5peCAqLworICBydmFsID0gX3NwYXdudiAoX1BfV0FJVCwgbHRfYXJndl96ZXJvLCAoY29uc3QgY2hhciAqIGNvbnN0ICopIG5ld2FyZ3opOworICBpZiAocnZhbCA9PSAtMSkKKyAgICB7CisgICAgICAvKiBmYWlsZWQgdG8gc3RhcnQgcHJvY2VzcyAqLworICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6IGVycm5vID0gJWRcbiIsIGx0X2FyZ3ZfemVybywgZXJybm8pKTsKKyAgICAgIHJldHVybiAxMjc7CisgICAgfQorICByZXR1cm4gcnZhbDsKK0VPRgorCQk7OworCSAgICAgICopCisJCWNhdCA8PCJFT0YiCisgIGV4ZWN2IChsdF9hcmd2X3plcm8sIG5ld2FyZ3opOworICByZXR1cm4gcnZhbDsgLyogPTEyNywgYnV0IGF2b2lkcyB1bnVzZWQgdmFyaWFibGUgd2FybmluZyAqLworRU9GCisJCTs7CisJICAgIGVzYWMKKworCSAgICBjYXQgPDwiRU9GIgorfQorCit2b2lkICoKK3htYWxsb2MgKHNpemVfdCBudW0pCit7CisgIHZvaWQgKnAgPSAodm9pZCAqKSBtYWxsb2MgKG51bSk7CisgIGlmICghcCkKKyAgICBsdF9mYXRhbCAoIk1lbW9yeSBleGhhdXN0ZWQiKTsKKworICByZXR1cm4gcDsKK30KKworY2hhciAqCit4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpCit7CisgIHJldHVybiBzdHJpbmcgPyBzdHJjcHkgKChjaGFyICopIHhtYWxsb2MgKHN0cmxlbiAoc3RyaW5nKSArIDEpLAorCQkJICBzdHJpbmcpIDogTlVMTDsKK30KKworY29uc3QgY2hhciAqCitiYXNlX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgIGNvbnN0IGNoYXIgKmJhc2U7CisKKyNpZiBkZWZpbmVkIChIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSkKKyAgLyogU2tpcCBvdmVyIHRoZSBkaXNrIG5hbWUgaW4gTVNET1MgcGF0aG5hbWVzLiAqLworICBpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpIG5hbWVbMF0pICYmIG5hbWVbMV0gPT0gJzonKQorICAgIG5hbWUgKz0gMjsKKyNlbmRpZgorCisgIGZvciAoYmFzZSA9IG5hbWU7ICpuYW1lOyBuYW1lKyspCisgICAgaWYgKElTX0RJUl9TRVBBUkFUT1IgKCpuYW1lKSkKKyAgICAgIGJhc2UgPSBuYW1lICsgMTsKKyAgcmV0dXJuIGJhc2U7Cit9CisKK2ludAorY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKK3sKKyAgc3RydWN0IHN0YXQgc3Q7CisKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihjaGVja19leGVjdXRhYmxlKSAgOiAlc1xuIiwKKwkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQorICAgIHJldHVybiAwOworCisgIGlmICgoc3RhdCAocGF0aCwgJnN0KSA+PSAwKQorICAgICAgJiYgKHN0LnN0X21vZGUgJiAoU19JWFVTUiB8IFNfSVhHUlAgfCBTX0lYT1RIKSkpCisgICAgcmV0dXJuIDE7CisgIGVsc2UKKyAgICByZXR1cm4gMDsKK30KKworaW50CittYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpCit7CisgIGludCBydmFsID0gMDsKKyAgc3RydWN0IHN0YXQgc3Q7CisKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWtlX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKKwkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQorICAgIHJldHVybiAwOworCisgIGlmIChzdGF0IChwYXRoLCAmc3QpID49IDApCisgICAgeworICAgICAgcnZhbCA9IGNobW9kIChwYXRoLCBzdC5zdF9tb2RlIHwgU19JWE9USCB8IFNfSVhHUlAgfCBTX0lYVVNSKTsKKyAgICB9CisgIHJldHVybiBydmFsOworfQorCisvKiBTZWFyY2hlcyBmb3IgdGhlIGZ1bGwgcGF0aCBvZiB0aGUgd3JhcHBlci4gIFJldHVybnMKKyAgIG5ld2x5IGFsbG9jYXRlZCBmdWxsIHBhdGggbmFtZSBpZiBmb3VuZCwgTlVMTCBvdGhlcndpc2UKKyAgIERvZXMgbm90IGNoYXNlIHN5bWxpbmtzLCBldmVuIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgdGhlbS4KKyovCitjaGFyICoKK2ZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKK3sKKyAgaW50IGhhc19zbGFzaCA9IDA7CisgIGNvbnN0IGNoYXIgKnA7CisgIGNvbnN0IGNoYXIgKnBfbmV4dDsKKyAgLyogc3RhdGljIGJ1ZmZlciBmb3IgZ2V0Y3dkICovCisgIGNoYXIgdG1wW0xUX1BBVEhNQVggKyAxXTsKKyAgaW50IHRtcF9sZW47CisgIGNoYXIgKmNvbmNhdF9uYW1lOworCisgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoZmluZF9leGVjdXRhYmxlKSAgIDogJXNcbiIsCisJCQkgIHdyYXBwZXIgPyAoKndyYXBwZXIgPyB3cmFwcGVyIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworCisgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgLyogQWJzb2x1dGUgcGF0aD8gKi8KKyNpZiBkZWZpbmVkIChIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSkKKyAgaWYgKGlzYWxwaGEgKCh1bnNpZ25lZCBjaGFyKSB3cmFwcGVyWzBdKSAmJiB3cmFwcGVyWzFdID09ICc6JykKKyAgICB7CisgICAgICBjb25jYXRfbmFtZSA9IHhzdHJkdXAgKHdyYXBwZXIpOworICAgICAgaWYgKGNoZWNrX2V4ZWN1dGFibGUgKGNvbmNhdF9uYW1lKSkKKwlyZXR1cm4gY29uY2F0X25hbWU7CisgICAgICBYRlJFRSAoY29uY2F0X25hbWUpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyNlbmRpZgorICAgICAgaWYgKElTX0RJUl9TRVBBUkFUT1IgKHdyYXBwZXJbMF0pKQorCXsKKwkgIGNvbmNhdF9uYW1lID0geHN0cmR1cCAod3JhcHBlcik7CisJICBpZiAoY2hlY2tfZXhlY3V0YWJsZSAoY29uY2F0X25hbWUpKQorCSAgICByZXR1cm4gY29uY2F0X25hbWU7CisJICBYRlJFRSAoY29uY2F0X25hbWUpOworCX0KKyNpZiBkZWZpbmVkIChIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSkKKyAgICB9CisjZW5kaWYKKworICBmb3IgKHAgPSB3cmFwcGVyOyAqcDsgcCsrKQorICAgIGlmICgqcCA9PSAnLycpCisgICAgICB7CisJaGFzX3NsYXNoID0gMTsKKwlicmVhazsKKyAgICAgIH0KKyAgaWYgKCFoYXNfc2xhc2gpCisgICAgeworICAgICAgLyogbm8gc2xhc2hlczsgc2VhcmNoIFBBVEggKi8KKyAgICAgIGNvbnN0IGNoYXIgKnBhdGggPSBnZXRlbnYgKCJQQVRIIik7CisgICAgICBpZiAocGF0aCAhPSBOVUxMKQorCXsKKwkgIGZvciAocCA9IHBhdGg7ICpwOyBwID0gcF9uZXh0KQorCSAgICB7CisJICAgICAgY29uc3QgY2hhciAqcTsKKwkgICAgICBzaXplX3QgcF9sZW47CisJICAgICAgZm9yIChxID0gcDsgKnE7IHErKykKKwkJaWYgKElTX1BBVEhfU0VQQVJBVE9SICgqcSkpCisJCSAgYnJlYWs7CisJICAgICAgcF9sZW4gPSBxIC0gcDsKKwkgICAgICBwX25leHQgPSAoKnEgPT0gJ1wwJyA/IHEgOiBxICsgMSk7CisJICAgICAgaWYgKHBfbGVuID09IDApCisJCXsKKwkJICAvKiBlbXB0eSBwYXRoOiBjdXJyZW50IGRpcmVjdG9yeSAqLworCQkgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKKwkJICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworCQkgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CisJCSAgY29uY2F0X25hbWUgPQorCQkgICAgWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CisJCSAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKKwkJICBjb25jYXRfbmFtZVt0bXBfbGVuXSA9ICcvJzsKKwkJICBzdHJjcHkgKGNvbmNhdF9uYW1lICsgdG1wX2xlbiArIDEsIHdyYXBwZXIpOworCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgY29uY2F0X25hbWUgPQorCQkgICAgWE1BTExPQyAoY2hhciwgcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOworCQkgIG1lbWNweSAoY29uY2F0X25hbWUsIHAsIHBfbGVuKTsKKwkJICBjb25jYXRfbmFtZVtwX2xlbl0gPSAnLyc7CisJCSAgc3RyY3B5IChjb25jYXRfbmFtZSArIHBfbGVuICsgMSwgd3JhcHBlcik7CisJCX0KKwkgICAgICBpZiAoY2hlY2tfZXhlY3V0YWJsZSAoY29uY2F0X25hbWUpKQorCQlyZXR1cm4gY29uY2F0X25hbWU7CisJICAgICAgWEZSRUUgKGNvbmNhdF9uYW1lKTsKKwkgICAgfQorCX0KKyAgICAgIC8qIG5vdCBmb3VuZCBpbiBQQVRIOyBhc3N1bWUgY3VyZGlyICovCisgICAgfQorICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCisgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKKyAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKyAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKKyAgY29uY2F0X25hbWUgPSBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKKyAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKKyAgY29uY2F0X25hbWVbdG1wX2xlbl0gPSAnLyc7CisgIHN0cmNweSAoY29uY2F0X25hbWUgKyB0bXBfbGVuICsgMSwgd3JhcHBlcik7CisKKyAgaWYgKGNoZWNrX2V4ZWN1dGFibGUgKGNvbmNhdF9uYW1lKSkKKyAgICByZXR1cm4gY29uY2F0X25hbWU7CisgIFhGUkVFIChjb25jYXRfbmFtZSk7CisgIHJldHVybiBOVUxMOworfQorCitjaGFyICoKK2NoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKK3sKKyNpZm5kZWYgU19JU0xOSworICByZXR1cm4geHN0cmR1cCAocGF0aHNwZWMpOworI2Vsc2UKKyAgY2hhciBidWZbTFRfUEFUSE1BWF07CisgIHN0cnVjdCBzdGF0IHM7CisgIGNoYXIgKnRtcF9wYXRoc3BlYyA9IHhzdHJkdXAgKHBhdGhzcGVjKTsKKyAgY2hhciAqcDsKKyAgaW50IGhhc19zeW1saW5rcyA9IDA7CisgIHdoaWxlIChzdHJsZW4gKHRtcF9wYXRoc3BlYykgJiYgIWhhc19zeW1saW5rcykKKyAgICB7CisgICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKKwkJCSAgICAgIHRtcF9wYXRoc3BlYykpOworICAgICAgaWYgKGxzdGF0ICh0bXBfcGF0aHNwZWMsICZzKSA9PSAwKQorCXsKKwkgIGlmIChTX0lTTE5LIChzLnN0X21vZGUpICE9IDApCisJICAgIHsKKwkgICAgICBoYXNfc3ltbGlua3MgPSAxOworCSAgICAgIGJyZWFrOworCSAgICB9CisKKwkgIC8qIHNlYXJjaCBiYWNrd2FyZHMgZm9yIGxhc3QgRElSX1NFUEFSQVRPUiAqLworCSAgcCA9IHRtcF9wYXRoc3BlYyArIHN0cmxlbiAodG1wX3BhdGhzcGVjKSAtIDE7CisJICB3aGlsZSAoKHAgPiB0bXBfcGF0aHNwZWMpICYmICghSVNfRElSX1NFUEFSQVRPUiAoKnApKSkKKwkgICAgcC0tOworCSAgaWYgKChwID09IHRtcF9wYXRoc3BlYykgJiYgKCFJU19ESVJfU0VQQVJBVE9SICgqcCkpKQorCSAgICB7CisJICAgICAgLyogbm8gbW9yZSBESVJfU0VQQVJBVE9SUyBsZWZ0ICovCisJICAgICAgYnJlYWs7CisJICAgIH0KKwkgICpwID0gJ1wwJzsKKwl9CisgICAgICBlbHNlCisJeworCSAgY2hhciAqZXJyc3RyID0gc3RyZXJyb3IgKGVycm5vKTsKKwkgIGx0X2ZhdGFsICgiRXJyb3IgYWNjZXNzaW5nIGZpbGUgJXMgKCVzKSIsIHRtcF9wYXRoc3BlYywgZXJyc3RyKTsKKwl9CisgICAgfQorICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKKworICBpZiAoIWhhc19zeW1saW5rcykKKyAgICB7CisgICAgICByZXR1cm4geHN0cmR1cCAocGF0aHNwZWMpOworICAgIH0KKworICB0bXBfcGF0aHNwZWMgPSByZWFscGF0aCAocGF0aHNwZWMsIGJ1Zik7CisgIGlmICh0bXBfcGF0aHNwZWMgPT0gMCkKKyAgICB7CisgICAgICBsdF9mYXRhbCAoIkNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOworICAgIH0KKyAgcmV0dXJuIHhzdHJkdXAgKHRtcF9wYXRoc3BlYyk7CisjZW5kaWYKK30KKworY2hhciAqCitzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KQoreworICBzaXplX3QgbGVuLCBwYXRsZW47CisKKyAgYXNzZXJ0IChzdHIgIT0gTlVMTCk7CisgIGFzc2VydCAocGF0ICE9IE5VTEwpOworCisgIGxlbiA9IHN0cmxlbiAoc3RyKTsKKyAgcGF0bGVuID0gc3RybGVuIChwYXQpOworCisgIGlmIChwYXRsZW4gPD0gbGVuKQorICAgIHsKKyAgICAgIHN0ciArPSBsZW4gLSBwYXRsZW47CisgICAgICBpZiAoc3RyY21wIChzdHIsIHBhdCkgPT0gMCkKKwkqc3RyID0gJ1wwJzsKKyAgICB9CisgIHJldHVybiBzdHI7Cit9CisKK3N0YXRpYyB2b2lkCitsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCisJICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHZhX2xpc3QgYXApCit7CisgIGZwcmludGYgKHN0ZGVyciwgIiVzOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBtb2RlKTsKKyAgdmZwcmludGYgKHN0ZGVyciwgbWVzc2FnZSwgYXApOworICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKKworICBpZiAoZXhpdF9zdGF0dXMgPj0gMCkKKyAgICBleGl0IChleGl0X3N0YXR1cyk7Cit9CisKK3ZvaWQKK2x0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCit7CisgIHZhX2xpc3QgYXA7CisgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7CisgIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworICB2YV9lbmQgKGFwKTsKK30KKwordm9pZAorbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKK3sKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIHsKKyNpZmRlZiBIQVZFX1NFVEVOVgorICAgIC8qIGFsd2F5cyBtYWtlIGEgY29weSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggIUhBVkVfU0VURU5WICovCisgICAgY2hhciAqc3RyID0geHN0cmR1cCAodmFsdWUpOworICAgIHNldGVudiAobmFtZSwgc3RyLCAxKTsKKyNlbHNlCisgICAgaW50IGxlbiA9IHN0cmxlbiAobmFtZSkgKyAxICsgc3RybGVuICh2YWx1ZSkgKyAxOworICAgIGNoYXIgKnN0ciA9IFhNQUxMT0MgKGNoYXIsIGxlbik7CisgICAgc3ByaW50ZiAoc3RyLCAiJXM9JXMiLCBuYW1lLCB2YWx1ZSk7CisgICAgaWYgKHB1dGVudiAoc3RyKSAhPSBFWElUX1NVQ0NFU1MpCisgICAgICB7CisgICAgICAgIFhGUkVFIChzdHIpOworICAgICAgfQorI2VuZGlmCisgIH0KK30KKworY2hhciAqCitsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpCit7CisgIGNoYXIgKm5ld192YWx1ZTsKKyAgaWYgKG9yaWdfdmFsdWUgJiYgKm9yaWdfdmFsdWUpCisgICAgeworICAgICAgaW50IG9yaWdfdmFsdWVfbGVuID0gc3RybGVuIChvcmlnX3ZhbHVlKTsKKyAgICAgIGludCBhZGRfbGVuID0gc3RybGVuIChhZGQpOworICAgICAgbmV3X3ZhbHVlID0gWE1BTExPQyAoY2hhciwgYWRkX2xlbiArIG9yaWdfdmFsdWVfbGVuICsgMSk7CisgICAgICBpZiAodG9fZW5kKQorICAgICAgICB7CisgICAgICAgICAgc3RyY3B5IChuZXdfdmFsdWUsIG9yaWdfdmFsdWUpOworICAgICAgICAgIHN0cmNweSAobmV3X3ZhbHVlICsgb3JpZ192YWx1ZV9sZW4sIGFkZCk7CisgICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHN0cmNweSAobmV3X3ZhbHVlLCBhZGQpOworICAgICAgICAgIHN0cmNweSAobmV3X3ZhbHVlICsgYWRkX2xlbiwgb3JpZ192YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBuZXdfdmFsdWUgPSB4c3RyZHVwIChhZGQpOworICAgIH0KKyAgcmV0dXJuIG5ld192YWx1ZTsKK30KKworaW50CitsdF9zcGxpdF9uYW1lX3ZhbHVlIChjb25zdCBjaGFyICphcmcsIGNoYXIqKiBuYW1lLCBjaGFyKiogdmFsdWUpCit7CisgIGNvbnN0IGNoYXIgKnA7CisgIGludCBsZW47CisgIGlmICghYXJnIHx8ICEqYXJnKQorICAgIHJldHVybiAxOworCisgIHAgPSBzdHJjaHIgKGFyZywgKGludCknPScpOworCisgIGlmICghcCkKKyAgICByZXR1cm4gMTsKKworICAqdmFsdWUgPSB4c3RyZHVwICgrK3ApOworCisgIGxlbiA9IHN0cmxlbiAoYXJnKSAtIHN0cmxlbiAoKnZhbHVlKTsKKyAgKm5hbWUgPSBYTUFMTE9DIChjaGFyLCBsZW4pOworICBzdHJuY3B5ICgqbmFtZSwgYXJnLCBsZW4tMSk7CisgICgqbmFtZSlbbGVuIC0gMV0gPSAnXDAnOworCisgIHJldHVybiAwOworfQorCit2b2lkCitsdF9vcHRfcHJvY2Vzc19lbnZfc2V0IChjb25zdCBjaGFyICphcmcpCit7CisgIGNoYXIgKm5hbWUgPSBOVUxMOworICBjaGFyICp2YWx1ZSA9IE5VTEw7CisKKyAgaWYgKGx0X3NwbGl0X25hbWVfdmFsdWUgKGFyZywgJm5hbWUsICZ2YWx1ZSkgIT0gMCkKKyAgICB7CisgICAgICBYRlJFRSAobmFtZSk7CisgICAgICBYRlJFRSAodmFsdWUpOworICAgICAgbHRfZmF0YWwgKCJiYWQgYXJndW1lbnQgZm9yICVzOiAnJXMnIiwgZW52X3NldF9vcHQsIGFyZyk7CisgICAgfQorCisgIGx0X3NldGVudiAobmFtZSwgdmFsdWUpOworICBYRlJFRSAobmFtZSk7CisgIFhGUkVFICh2YWx1ZSk7Cit9CisKK3ZvaWQKK2x0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChjb25zdCBjaGFyICphcmcpCit7CisgIGNoYXIgKm5hbWUgPSBOVUxMOworICBjaGFyICp2YWx1ZSA9IE5VTEw7CisgIGNoYXIgKm5ld192YWx1ZSA9IE5VTEw7CisKKyAgaWYgKGx0X3NwbGl0X25hbWVfdmFsdWUgKGFyZywgJm5hbWUsICZ2YWx1ZSkgIT0gMCkKKyAgICB7CisgICAgICBYRlJFRSAobmFtZSk7CisgICAgICBYRlJFRSAodmFsdWUpOworICAgICAgbHRfZmF0YWwgKCJiYWQgYXJndW1lbnQgZm9yICVzOiAnJXMnIiwgZW52X3ByZXBlbmRfb3B0LCBhcmcpOworICAgIH0KKworICBuZXdfdmFsdWUgPSBsdF9leHRlbmRfc3RyIChnZXRlbnYgKG5hbWUpLCB2YWx1ZSwgMCk7CisgIGx0X3NldGVudiAobmFtZSwgbmV3X3ZhbHVlKTsKKyAgWEZSRUUgKG5ld192YWx1ZSk7CisgIFhGUkVFIChuYW1lKTsKKyAgWEZSRUUgKHZhbHVlKTsKK30KKwordm9pZAorbHRfb3B0X3Byb2Nlc3NfZW52X2FwcGVuZCAoY29uc3QgY2hhciAqYXJnKQoreworICBjaGFyICpuYW1lID0gTlVMTDsKKyAgY2hhciAqdmFsdWUgPSBOVUxMOworICBjaGFyICpuZXdfdmFsdWUgPSBOVUxMOworCisgIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCisgICAgeworICAgICAgWEZSRUUgKG5hbWUpOworICAgICAgWEZSRUUgKHZhbHVlKTsKKyAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9hcHBlbmRfb3B0LCBhcmcpOworICAgIH0KKworICBuZXdfdmFsdWUgPSBsdF9leHRlbmRfc3RyIChnZXRlbnYgKG5hbWUpLCB2YWx1ZSwgMSk7CisgIGx0X3NldGVudiAobmFtZSwgbmV3X3ZhbHVlKTsKKyAgWEZSRUUgKG5ld192YWx1ZSk7CisgIFhGUkVFIChuYW1lKTsKKyAgWEZSRUUgKHZhbHVlKTsKK30KKwordm9pZAorbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKK3sKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworCisgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKKyAgICB7CisgICAgICBjaGFyICpuZXdfdmFsdWUgPSBsdF9leHRlbmRfc3RyIChnZXRlbnYgKG5hbWUpLCB2YWx1ZSwgMCk7CisgICAgICAvKiBzb21lIHN5c3RlbXMgY2FuJ3QgY29wZSB3aXRoIGEgJzonLXRlcm1pbmF0ZWQgcGF0aCAjJyAqLworICAgICAgaW50IGxlbiA9IHN0cmxlbiAobmV3X3ZhbHVlKTsKKyAgICAgIHdoaWxlICgoKGxlbiA9IHN0cmxlbiAobmV3X3ZhbHVlKSkgPiAwKSAmJiBJU19QQVRIX1NFUEFSQVRPUiAobmV3X3ZhbHVlW2xlbi0xXSkpCisgICAgICAgIHsKKyAgICAgICAgICBuZXdfdmFsdWVbbGVuLTFdID0gJ1wwJzsKKyAgICAgICAgfQorICAgICAgbHRfc2V0ZW52IChuYW1lLCBuZXdfdmFsdWUpOworICAgICAgWEZSRUUgKG5ld192YWx1ZSk7CisgICAgfQorfQorCit2b2lkCitsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQoreworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisKKyAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQorICAgIHsKKyAgICAgIGNoYXIgKm5ld192YWx1ZSA9IGx0X2V4dGVuZF9zdHIgKGdldGVudiAobmFtZSksIHZhbHVlLCAwKTsKKyAgICAgIGx0X3NldGVudiAobmFtZSwgbmV3X3ZhbHVlKTsKKyAgICAgIFhGUkVFIChuZXdfdmFsdWUpOworICAgIH0KK30KKworCitFT0YKK30KKyMgZW5kOiBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCisKKyMgZnVuY19tb2RlX2xpbmsgYXJnLi4uCitmdW5jX21vZGVfbGluayAoKQoreworICAgICRvcHRfZGVidWcKKyAgICBjYXNlICRob3N0IGluCisgICAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKICAgICAgICMgSXQgaXMgaW1wb3NzaWJsZSB0byBsaW5rIGEgZGxsIHdpdGhvdXQgdGhpcyBzZXR0aW5nLCBhbmQKICAgICAgICMgd2Ugc2hvdWxkbid0IGZvcmNlIHRoZSBtYWtlZmlsZSBtYWludGFpbmVyIHRvIGZpZ3VyZSBvdXQKICAgICAgICMgd2hpY2ggc3lzdGVtIHdlIGFyZSBjb21waWxpbmcgZm9yIGluIG9yZGVyIHRvIHBhc3MgYW4gZXh0cmEKQEAgLTExMjEsMTAgKzQwNTEsMTAgQEAKICAgICAgIGFsbG93X3VuZGVmaW5lZD15ZXMKICAgICAgIDs7CiAgICAgZXNhYwotICAgIGxpYnRvb2xfYXJncz0iJG5vbm9wdCIKKyAgICBsaWJ0b29sX2FyZ3M9JG5vbm9wdAogICAgIGJhc2VfY29tcGlsZT0iJG5vbm9wdCAkQCIKLSAgICBjb21waWxlX2NvbW1hbmQ9IiRub25vcHQiCi0gICAgZmluYWxpemVfY29tbWFuZD0iJG5vbm9wdCIKKyAgICBjb21waWxlX2NvbW1hbmQ9JG5vbm9wdAorICAgIGZpbmFsaXplX2NvbW1hbmQ9JG5vbm9wdAogCiAgICAgY29tcGlsZV9ycGF0aD0KICAgICBmaW5hbGl6ZV9ycGF0aD0KQEAgLTExMzksNiArNDA2OSw3IEBACiAgICAgZGxsc2VhcmNocGF0aD0KICAgICBsaWJfc2VhcmNoX3BhdGg9YHB3ZGAKICAgICBpbnN0X3ByZWZpeF9kaXI9CisgICAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9CiAKICAgICBhdm9pZF92ZXJzaW9uPW5vCiAgICAgZGxmaWxlcz0KQEAgLTExNTQsNyArNDA4NSw2IEBACiAgICAgbm9faW5zdGFsbD1ubwogICAgIG9ianM9CiAgICAgbm9uX3BpY19vYmplY3RzPQotICAgIG5vdGluc3RfcGF0aD0gIyBwYXRocyB0aGF0IGNvbnRhaW4gbm90LWluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcwogICAgIHByZWNpb3VzX2ZpbGVzX3JlZ2V4PQogICAgIHByZWZlcl9zdGF0aWNfbGlicz1ubwogICAgIHByZWxvYWQ9bm8KQEAgLTExNjgsMTkgKzQwOTgsMjUgQEAKICAgICB0aHJlYWRfc2FmZT1ubwogICAgIHZpbmZvPQogICAgIHZpbmZvX251bWJlcj1ubworICAgIHdlYWtfbGlicz0KICAgICBzaW5nbGVfbW9kdWxlPSIke3dsfS1zaW5nbGVfbW9kdWxlIgotCiAgICAgZnVuY19pbmZlcl90YWcgJGJhc2VfY29tcGlsZQogCiAgICAgIyBXZSBuZWVkIHRvIGtub3cgLXN0YXRpYywgdG8gZ2V0IHRoZSByaWdodCBvdXRwdXQgZmlsZW5hbWVzLgogICAgIGZvciBhcmcKICAgICBkbwogICAgICAgY2FzZSAkYXJnIGluCisgICAgICAtc2hhcmVkKQorCXRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiBcCisJICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gImNhbiBub3QgYnVpbGQgYSBzaGFyZWQgbGlicmFyeSIKKwlidWlsZF9vbGRfbGlicz1ubworCWJyZWFrCisJOzsKICAgICAgIC1hbGwtc3RhdGljIHwgLXN0YXRpYyB8IC1zdGF0aWMtbGlidG9vbC1saWJzKQogCWNhc2UgJGFyZyBpbgogCS1hbGwtc3RhdGljKQogCSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAteiAiJGxpbmtfc3RhdGljX2ZsYWciOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGNvbXBsZXRlIHN0YXRpYyBsaW5raW5nIGlzIGltcG9zc2libGUgaW4gdGhpcyBjb25maWd1cmF0aW9uIiAxPiYyCisJICAgIGZ1bmNfd2FybmluZyAiY29tcGxldGUgc3RhdGljIGxpbmtpbmcgaXMgaW1wb3NzaWJsZSBpbiB0aGlzIGNvbmZpZ3VyYXRpb24iCiAJICBmaQogCSAgaWYgdGVzdCAtbiAiJGxpbmtfc3RhdGljX2ZsYWciOyB0aGVuCiAJICAgIGRsb3Blbl9zZWxmPSRkbG9wZW5fc2VsZl9zdGF0aWMKQEAgLTEyMTQsMjAgKzQxNTAsMTYgQEAKICAgICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCiAgICAgICBhcmc9IiQxIgogICAgICAgc2hpZnQKLSAgICAgIGNhc2UgJGFyZyBpbgotICAgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0JcWFyZz1cImAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYFwiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAotCTs7Ci0gICAgICAqKSBxYXJnPSRhcmcgOzsKLSAgICAgIGVzYWMKLSAgICAgIGxpYnRvb2xfYXJncz0iJGxpYnRvb2xfYXJncyAkcWFyZyIKKyAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisgICAgICBxYXJnPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdAorICAgICAgZnVuY19hcHBlbmQgbGlidG9vbF9hcmdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCiAgICAgICAjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMgYW4gYXJndW1lbnQsIGFzc2lnbiBpdC4KICAgICAgIGlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgogCWNhc2UgJHByZXYgaW4KIAlvdXRwdXQpCi0JICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgQE9VVFBVVEAiCi0JICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCBAT1VUUFVUQCIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiIEBPVVRQVVRAIgorCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiIEBPVVRQVVRAIgogCSAgOzsKIAllc2FjCiAKQEAgLTEyMzUsOCArNDE2Nyw4IEBACiAJZGxmaWxlc3xkbHByZWZpbGVzKQogCSAgaWYgdGVzdCAiJHByZWxvYWQiID0gbm87IHRoZW4KIAkgICAgIyBBZGQgdGhlIHN5bWJvbCBvYmplY3QgaW50byB0aGUgbGlua2luZyBjb21tYW5kcy4KLQkgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIEBTWU1GSUxFQCIKLQkgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgQFNZTUZJTEVAIgorCSAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiBAU1lNRklMRUAiCisJICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiBAU1lNRklMRUAiCiAJICAgIHByZWxvYWQ9eWVzCiAJICBmaQogCSAgY2FzZSAkYXJnIGluCkBAIC0xMjc0LDEwICs0MjA2LDggQEAKIAkgIDs7CiAJZXhwc3ltcykKIAkgIGV4cG9ydF9zeW1ib2xzPSIkYXJnIgotCSAgaWYgdGVzdCAhIC1mICIkYXJnIjsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBzeW1ib2wgZmlsZSBcYCRhcmcnIGRvZXMgbm90IGV4aXN0IgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkgIGZpCisJICB0ZXN0IC1mICIkYXJnIiBcCisJICAgIHx8IGZ1bmNfZmF0YWxfZXJyb3IgInN5bWJvbCBmaWxlIFxgJGFyZycgZG9lcyBub3QgZXhpc3QiCiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7CkBAIC0xMjg2LDU4ICs0MjE2LDUyIEBACiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7CisJZnJhbWV3b3JrKQorCSAgY2FzZSAkaG9zdCBpbgorCSAgICAqLSotZGFyd2luKikKKwkgICAgICBjYXNlICIkZGVwbGlicyAiIGluCisJCSoiICRxYXJnLmx0ZnJhbWV3b3JrICIqKSA7OworCQkqKSBkZXBsaWJzPSIkZGVwbGlicyAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCisJCSAgIDs7CisJICAgICAgZXNhYworCSAgICAgIDs7CisJICBlc2FjCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CiAJaW5zdF9wcmVmaXgpCiAJICBpbnN0X3ByZWZpeF9kaXI9IiRhcmciCiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7Ci0JcHJlY2lvdXNfcmVnZXgpCi0JICBwcmVjaW91c19maWxlc19yZWdleD0iJGFyZyIKLQkgIHByZXY9Ci0JICBjb250aW51ZQotCSAgOzsKLQlyZWxlYXNlKQotCSAgcmVsZWFzZT0iLSRhcmciCi0JICBwcmV2PQotCSAgY29udGludWUKLQkgIDs7CiAJb2JqZWN0bGlzdCkKIAkgIGlmIHRlc3QgLWYgIiRhcmciOyB0aGVuCiAJICAgIHNhdmVfYXJnPSRhcmcKIAkgICAgbW9yZWFyZ3M9Ci0JICAgIGZvciBmaWwgaW4gYGNhdCAkc2F2ZV9hcmdgCisJICAgIGZvciBmaWwgaW4gYGNhdCAiJHNhdmVfYXJnImAKIAkgICAgZG8KICMJICAgICAgbW9yZWFyZ3M9IiRtb3JlYXJncyAkZmlsIgogCSAgICAgIGFyZz0kZmlsCiAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCiAKIAkgICAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBvYmplY3QuCi0JICAgICAgaWYgKCR7U0VEfSAtZSAnMnEnICRhcmcgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgICAgIGlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRhcmciOyB0aGVuCiAJCXBpY19vYmplY3Q9CiAJCW5vbl9waWNfb2JqZWN0PQogCiAJCSMgUmVhZCB0aGUgLmxvIGZpbGUKLQkJIyBJZiB0aGVyZSBpcyBubyBkaXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGFkZCBvbmUuCi0JCWNhc2UgJGFyZyBpbgotCQkqLyogfCAqXFwqKSAuICRhcmcgOzsKLQkJKikgLiAuLyRhcmcgOzsKLQkJZXNhYworCQlmdW5jX3NvdXJjZSAiJGFyZyIKIAotCQlpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwgXAorCQlpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwKIAkJICAgdGVzdCAteiAiJG5vbl9waWNfb2JqZWN0IiB8fAotCQkgICB0ZXN0ICIkcGljX29iamVjdCIgPSBub25lICYmIFwKKwkJICAgdGVzdCAiJHBpY19vYmplY3QiID0gbm9uZSAmJgogCQkgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiID0gbm9uZTsgdGhlbgotCQkgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBmaW5kIG5hbWUgb2Ygb2JqZWN0IGZvciBcYCRhcmcnIiAxPiYyCi0JCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBvYmplY3QgZm9yIFxgJGFyZyciCiAJCWZpCiAKIAkJIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLQkJeGRpcj1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0JCWlmIHRlc3QgIlgkeGRpciIgPSAiWCRhcmciOyB0aGVuCi0JCSAgeGRpcj0KLQkJZWxzZQotCQkgIHhkaXI9IiR4ZGlyLyIKLQkJZmkKKwkJZnVuY19kaXJuYW1lICIkYXJnIiAiLyIgIiIKKwkJeGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAKIAkJaWYgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KIAkJICAjIFByZXBlbmQgdGhlIHN1YmRpcmVjdG9yeSB0aGUgb2JqZWN0IGlzIGZvdW5kIGluLgpAQCAtMTM2Miw3ICs0Mjg2LDcgQEAKIAkJICBmaQogCiAJCSAgIyBBIFBJQyBvYmplY3QuCi0JCSAgbGlib2Jqcz0iJGxpYm9ianMgJHBpY19vYmplY3QiCisJCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRwaWNfb2JqZWN0IgogCQkgIGFyZz0iJHBpY19vYmplY3QiCiAJCWZpCiAKQEAgLTEzNzIsNyArNDI5Niw3IEBACiAJCSAgbm9uX3BpY19vYmplY3Q9IiR4ZGlyJG5vbl9waWNfb2JqZWN0IgogCiAJCSAgIyBBIHN0YW5kYXJkIG5vbi1QSUMgb2JqZWN0Ci0JCSAgbm9uX3BpY19vYmplY3RzPSIkbm9uX3BpY19vYmplY3RzICRub25fcGljX29iamVjdCIKKwkJICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCiAJCSAgaWYgdGVzdCAteiAiJHBpY19vYmplY3QiIHx8IHRlc3QgIiRwaWNfb2JqZWN0IiA9IG5vbmUgOyB0aGVuCiAJCSAgICBhcmc9IiRub25fcGljX29iamVjdCIKIAkJICBmaQpAQCAtMTM4MCw0NiArNDMwNCw0OCBAQAogCQkgICMgSWYgdGhlIFBJQyBvYmplY3QgZXhpc3RzLCB1c2UgaXQgaW5zdGVhZC4KIAkJICAjICR4ZGlyIHdhcyBwcmVwZW5kZWQgdG8gJHBpY19vYmplY3QgYWJvdmUuCiAJCSAgbm9uX3BpY19vYmplY3Q9IiRwaWNfb2JqZWN0IgotCQkgIG5vbl9waWNfb2JqZWN0cz0iJG5vbl9waWNfb2JqZWN0cyAkbm9uX3BpY19vYmplY3QiCisJCSAgZnVuY19hcHBlbmQgbm9uX3BpY19vYmplY3RzICIgJG5vbl9waWNfb2JqZWN0IgogCQlmaQogCSAgICAgIGVsc2UKIAkJIyBPbmx5IGFuIGVycm9yIGlmIG5vdCBkb2luZyBhIGRyeS1ydW4uCi0JCWlmIHRlc3QgLXogIiRydW4iOyB0aGVuCi0JCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkYXJnJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIG9iamVjdCIgMT4mMgotCQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotCQllbHNlCi0JCSAgIyBEcnktcnVuIGNhc2UuCi0KKwkJaWYgJG9wdF9kcnlfcnVuOyB0aGVuCiAJCSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLQkJICB4ZGlyPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQkJICBpZiB0ZXN0ICJYJHhkaXIiID0gIlgkYXJnIjsgdGhlbgotCQkgICAgeGRpcj0KLQkJICBlbHNlCi0JCSAgICB4ZGlyPSIkeGRpci8iCi0JCSAgZmkKKwkJICBmdW5jX2Rpcm5hbWUgIiRhcmciICIvIiAiIgorCQkgIHhkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogCi0JCSAgcGljX29iamVjdD1gJGVjaG8gIlgke3hkaXJ9JHtvYmpkaXJ9LyR7YXJnfSIgfCAkWHNlZCAtZSAiJGxvMm8iYAotCQkgIG5vbl9waWNfb2JqZWN0PWAkZWNobyAiWCR7eGRpcn0ke2FyZ30iIHwgJFhzZWQgLWUgIiRsbzJvImAKLQkJICBsaWJvYmpzPSIkbGlib2JqcyAkcGljX29iamVjdCIKLQkJICBub25fcGljX29iamVjdHM9IiRub25fcGljX29iamVjdHMgJG5vbl9waWNfb2JqZWN0IgorCQkgIGZ1bmNfbG8ybyAiJGFyZyIKKwkJICBwaWNfb2JqZWN0PSR4ZGlyJG9iamRpci8kZnVuY19sbzJvX3Jlc3VsdAorCQkgIG5vbl9waWNfb2JqZWN0PSR4ZGlyJGZ1bmNfbG8yb19yZXN1bHQKKwkJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHBpY19vYmplY3QiCisJCSAgZnVuY19hcHBlbmQgbm9uX3BpY19vYmplY3RzICIgJG5vbl9waWNfb2JqZWN0IgorCSAgICAgICAgZWxzZQorCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGFyZycgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBvYmplY3QiCiAJCWZpCiAJICAgICAgZmkKIAkgICAgZG9uZQogCSAgZWxzZQotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBsaW5rIGlucHV0IGZpbGUgXGAkc2F2ZV9hcmcnIGRvZXMgbm90IGV4aXN0IgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgZnVuY19mYXRhbF9lcnJvciAibGluayBpbnB1dCBmaWxlIFxgJGFyZycgZG9lcyBub3QgZXhpc3QiCiAJICBmaQogCSAgYXJnPSRzYXZlX2FyZwogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OworCXByZWNpb3VzX3JlZ2V4KQorCSAgcHJlY2lvdXNfZmlsZXNfcmVnZXg9IiRhcmciCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CisJcmVsZWFzZSkKKwkgIHJlbGVhc2U9Ii0kYXJnIgorCSAgcHJldj0KKwkgIGNvbnRpbnVlCisJICA7OwogCXJwYXRoIHwgeHJwYXRoKQogCSAgIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJICBjYXNlICRhcmcgaW4KIAkgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKIAkgICopCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IG9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIiAxPiYyCi0JICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGFic29sdXRlIHJ1bi1wYXRocyBhcmUgYWxsb3dlZCIKIAkgICAgOzsKIAkgIGVzYWMKIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCkBAIC0xNDM2LDM5ICs0MzYyLDM3IEBACiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7Ci0JeGNvbXBpbGVyKQotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKwlzaHJleHQpCisJICBzaHJleHRfY21kcz0iJGFyZyIKIAkgIHByZXY9Ci0JICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHFhcmciCi0JICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwotCXhsaW5rZXIpCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRxYXJnIgorCXdlYWspCisJICB3ZWFrX2xpYnM9IiR3ZWFrX2xpYnMgJGFyZyIKIAkgIHByZXY9Ci0JICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHdsJHFhcmciCi0JICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkd2wkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCXhjY2xpbmtlcikKIAkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKIAkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCiAJICBwcmV2PQotCSAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRxYXJnIgotCSAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHFhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwotCXNocmV4dCkKLSAgCSAgc2hyZXh0X2NtZHM9IiRhcmciCisJeGNvbXBpbGVyKQorCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKIAkgIHByZXY9CisJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwotCWRhcndpbl9mcmFtZXdvcmt8ZGFyd2luX2ZyYW1ld29ya19za2lwKQotCSAgdGVzdCAiJHByZXYiID0gImRhcndpbl9mcmFtZXdvcmsiICYmIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKLQkgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkYXJnIgotCSAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGFyZyIKKwl4bGlua2VyKQorCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgorCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKIAkgIHByZXY9CisJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkd2wkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkd2wkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCSopCkBAIC0xNDg0LDE2ICs0NDA4LDE2IEBACiAgICAgICBjYXNlICRhcmcgaW4KICAgICAgIC1hbGwtc3RhdGljKQogCWlmIHRlc3QgLW4gIiRsaW5rX3N0YXRpY19mbGFnIjsgdGhlbgotCSAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRsaW5rX3N0YXRpY19mbGFnIgotCSAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGxpbmtfc3RhdGljX2ZsYWciCisJICAjIFNlZSBjb21tZW50IGZvciAtc3RhdGljIGZsYWcgYmVsb3csIGZvciBtb3JlIGRldGFpbHMuCisJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkbGlua19zdGF0aWNfZmxhZyIKKwkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkbGlua19zdGF0aWNfZmxhZyIKIAlmaQogCWNvbnRpbnVlCiAJOzsKIAogICAgICAgLWFsbG93LXVuZGVmaW5lZCkKIAkjIEZJWE1FOiByZW1vdmUgdGhpcyBmbGFnIHNvbWV0aW1lIGluIHRoZSBmdXR1cmUuCi0JJGVjaG8gIiRtb2RlbmFtZTogXGAtYWxsb3ctdW5kZWZpbmVkJyBpcyBkZXByZWNhdGVkIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQiIDE+JjIKLQljb250aW51ZQorCWZ1bmNfZmF0YWxfZXJyb3IgIlxgLWFsbG93LXVuZGVmaW5lZCcgbXVzdCBub3QgYmUgdXNlZCBiZWNhdXNlIGl0IGlzIHRoZSBkZWZhdWx0IgogCTs7CiAKICAgICAgIC1hdm9pZC12ZXJzaW9uKQpAQCAtMTUxOCw4ICs0NDQyLDcgQEAKIAogICAgICAgLWV4cG9ydC1zeW1ib2xzIHwgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4KQogCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgfHwgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogbW9yZSB0aGFuIG9uZSAtZXhwb3J0ZWQtc3ltYm9scyBhcmd1bWVudCBpcyBub3QgYWxsb3dlZCIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19mYXRhbF9lcnJvciAibW9yZSB0aGFuIG9uZSAtZXhwb3J0ZWQtc3ltYm9scyBhcmd1bWVudCBpcyBub3QgYWxsb3dlZCIKIAlmaQogCWlmIHRlc3QgIlgkYXJnIiA9ICJYLWV4cG9ydC1zeW1ib2xzIjsgdGhlbgogCSAgcHJldj1leHBzeW1zCkBAIC0xNTI5LDE1ICs0NDUyLDggQEAKIAljb250aW51ZQogCTs7CiAKLSAgICAgIC1mcmFtZXdvcmt8LWFyY2h8LWlzeXNyb290KQotCWNhc2UgIiAkQ0MgIiBpbgotCSAgKiIgJHthcmd9ICR7MX0gIiogfCAqIiAke2FyZ30JJHsxfSAiKikgCi0JCXByZXY9ZGFyd2luX2ZyYW1ld29ya19za2lwIDs7Ci0JICAqKSBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0JICAgICBwcmV2PWRhcndpbl9mcmFtZXdvcmsgOzsKLQllc2FjCi0JY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCi0JZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGFyZyIKKyAgICAgIC1mcmFtZXdvcmspCisJcHJldj1mcmFtZXdvcmsKIAljb250aW51ZQogCTs7CiAKQEAgLTE1NTEsMjUgKzQ0NjcsMzAgQEAKICAgICAgIC1MW0EtWl1bQS1aXSo6KikKIAljYXNlICR3aXRoX2djYy8kaG9zdCBpbgogCW5vLyotKi1pcml4KiB8IC8qLSotaXJpeCopCi0JICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGFyZyIKLQkgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAJICA7OwogCWVzYWMKIAljb250aW51ZQogCTs7CiAKICAgICAgIC1MKikKLQlkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncy9eLUwvLydgCisJZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGFyZyIKKwlkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCWlmIHRlc3QgLXogIiRkaXIiOyB0aGVuCisJICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KKwkgICAgZnVuY19mYXRhbF9lcnJvciAicmVxdWlyZSBubyBzcGFjZSBiZXR3ZWVuIFxgLUwnIGFuZCBcYCQxJyIKKwkgIGVsc2UKKwkgICAgZnVuY19mYXRhbF9lcnJvciAibmVlZCBwYXRoIGZvciBcYC1MJyBvcHRpb24iCisJICBmaQorCWZpCiAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJY2FzZSAkZGlyIGluCiAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwogCSopCiAJICBhYnNkaXI9YGNkICIkZGlyIiAmJiBwd2RgCi0JICBpZiB0ZXN0IC16ICIkYWJzZGlyIjsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mIFxgJGRpciciIDE+JjIKLQkgICAgYWJzZGlyPSIkZGlyIgotCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGRpciIKLQkgIGZpCisJICB0ZXN0IC16ICIkYWJzZGlyIiAmJiBcCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgXGAkZGlyJyIKIAkgIGRpcj0iJGFic2RpciIKIAkgIDs7CiAJZXNhYwpAQCAtMTU4MSwxNCArNDUwMiwxNiBAQAogCSAgOzsKIAllc2FjCiAJY2FzZSAkaG9zdCBpbgotCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqKQotCSAgdGVzdGJpbmRpcj1gJGVjaG8gIlgkZGlyIiB8ICRYc2VkIC1lICdzKi9saWIkKi9iaW4qJ2AKKwkqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotY2VnY2MqKQorCSAgdGVzdGJpbmRpcj1gJEVDSE8gIlgkZGlyIiB8ICRYc2VkIC1lICdzKi9saWIkKi9iaW4qJ2AKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JGRpcjoiKikgOzsKKwkgIDo6KSBkbGxzZWFyY2hwYXRoPSRkaXI7OwogCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OwogCSAgZXNhYwogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKKwkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKIAkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CiAJICBlc2FjCiAJICA7OwpAQCAtMTU5OSw3ICs0NTIyLDcgQEAKICAgICAgIC1sKikKIAlpZiB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgfHwgdGVzdCAiWCRhcmciID0gIlgtbG0iOyB0aGVuCiAJICBjYXNlICRob3N0IGluCi0JICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotYmVvcyopCisJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKikKIAkgICAgIyBUaGVzZSBzeXN0ZW1zIGRvbid0IGFjdHVhbGx5IGhhdmUgYSBDIG9yIG1hdGggbGlicmFyeSAoYXMgc3VjaCkKIAkgICAgY29udGludWUKIAkgICAgOzsKQEAgLTE2MTMsNyArNDUzNiw3IEBACiAJICAgIDs7CiAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJICAgICMgUmhhcHNvZHkgQyBhbmQgbWF0aCBsaWJyYXJpZXMgYXJlIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1mcmFtZXdvcmsgU3lzdGVtIgorCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CiAJICAqLSotc2NvMy4ydjUqIHwgKi0qLXNjbzV2NiopCkBAIC0xNjM3LDYzICs0NTYwLDM1IEBACiAJY29udGludWUKIAk7OwogCi0gICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCi0gICAgICAjIGNsYXNzZXMsIG5hbWUgbWFuZ2xpbmcsIGFuZCBleGNlcHRpb24gaGFuZGxpbmcuCi0gICAgICAtbW9kZWwpCi0JY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCi0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgotCWZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRhcmciCi0JcHJldj14Y29tcGlsZXIKLQljb250aW51ZQotCTs7Ci0KLSAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0JY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCi0JZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGFyZyIKLQljb250aW51ZQotCTs7Ci0KLSAgICAgIC1tdWx0aV9tb2R1bGUpCi0Jc2luZ2xlX21vZHVsZT0iJHt3bH0tbXVsdGlfbW9kdWxlIgotCWNvbnRpbnVlCi0JOzsKLQogICAgICAgLW1vZHVsZSkKIAltb2R1bGU9eWVzCiAJY29udGludWUKIAk7OwogCi0gICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgotICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKLSAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTdW4gY29tcGlsZXIKLSAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCi0gICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgotICAgICAgIyAtbSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb21waWxlciBhcmdzIGZvciBHQ0MKLSAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYwotICAgICAgIyBjb21waWxlciBhcmdzIGZvciBHQ0MKLSAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogcGFzcyB0aHJvdWdoIHByb2ZpbGluZyBmbGFnIGZvciBHQ0MKLSAgICAgICMgLUYvcGF0aCBnaXZlcyBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KLSAgICAgICMgQGZpbGUgR0NDIHJlc3BvbnNlIGZpbGVzCi0gICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKLSAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKikKKyAgICAgICMgVHJ1NjQgVU5JWCB1c2VzIC1tb2RlbCBbYXJnXSB0byBkZXRlcm1pbmUgdGhlIGxheW91dCBvZiBDKysKKyAgICAgICMgY2xhc3NlcywgbmFtZSBtYW5nbGluZywgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICMgRGFyd2luIHVzZXMgdGhlIC1hcmNoIGZsYWcgdG8gZGV0ZXJtaW5lIG91dHB1dCBhcmNoaXRlY3R1cmUuCisgICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290KQorCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKwlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorCXByZXY9eGNvbXBpbGVyCisJY29udGludWUKKwk7OwogCi0JIyBVbmtub3duIGFyZ3VtZW50cyBpbiBib3RoIGZpbmFsaXplX2NvbW1hbmQgYW5kIGNvbXBpbGVfY29tbWFuZCBuZWVkCi0JIyB0byBiZSBhZXN0aGV0aWNhbGx5IHF1b3RlZCBiZWNhdXNlIHRoZXkgYXJlIGV2YWxlZCBsYXRlci4KLQlhcmc9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0JY2FzZSAkYXJnIGluCi0JKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0JICBhcmc9IlwiJGFyZ1wiIgotCSAgOzsKKyAgICAgIC1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmV8LXRocmVhZHMpCisJY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCisJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKwkgICAgKiIgJGFyZyAiKikgOzsKKwkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGFyZyIgOzsKIAllc2FjCi0gICAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkYXJnIgotICAgICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkYXJnIgotICAgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0gICAgICAgIGNvbnRpbnVlCi0gICAgICAgIDs7CisJY29udGludWUKKwk7OwogCi0gICAgICAtc2hyZXh0KQotCXByZXY9c2hyZXh0CisgICAgICAtbXVsdGlfbW9kdWxlKQorCXNpbmdsZV9tb2R1bGU9IiR7d2x9LW11bHRpX21vZHVsZSIKIAljb250aW51ZQogCTs7CiAKQEAgLTE3MDQsMTEgKzQ1OTksMTEgQEAKIAogICAgICAgLW5vLWluc3RhbGwpCiAJY2FzZSAkaG9zdCBpbgotCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi0qLWRhcndpbiopCisJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotZGFyd2luKiB8ICotY2VnY2MqKQogCSAgIyBUaGUgUEFUSCBoYWNrZXJ5IGluIHdyYXBwZXIgc2NyaXB0cyBpcyByZXF1aXJlZCBvbiBXaW5kb3dzCiAJICAjIGFuZCBEYXJ3aW4gaW4gb3JkZXIgZm9yIHRoZSBsb2FkZXIgdG8gZmluZCBhbnkgZGxscyBpdCBuZWVkcy4KLQkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLW5vLWluc3RhbGwnIGlzIGlnbm9yZWQgZm9yICRob3N0IiAxPiYyCi0JICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBhc3N1bWluZyBcYC1uby1mYXN0LWluc3RhbGwnIGluc3RlYWQiIDE+JjIKKwkgIGZ1bmNfd2FybmluZyAiXGAtbm8taW5zdGFsbCcgaXMgaWdub3JlZCBmb3IgJGhvc3QiCisJICBmdW5jX3dhcm5pbmcgImFzc3VtaW5nIFxgLW5vLWZhc3QtaW5zdGFsbCcgaW5zdGVhZCIKIAkgIGZhc3RfaW5zdGFsbD1ubwogCSAgOzsKIAkqKSBub19pbnN0YWxsPXllcyA7OwpAQCAtMTc0OSwxMyArNDY0NCwxMyBAQAogCTs7CiAKICAgICAgIC1SKikKLQlkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncy9eLVIvLydgCisJZnVuY19zdHJpcG5hbWUgJy1SJyAnJyAiJGFyZyIKKwlkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCWNhc2UgJGRpciBpbgogCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKIAkqKQotCSAgJGVjaG8gIiRtb2RlbmFtZTogb25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCiAJICA7OwogCWVzYWMKIAljYXNlICIkeHJwYXRoICIgaW4KQEAgLTE3NjUsNiArNDY2MCwxNiBAQAogCWNvbnRpbnVlCiAJOzsKIAorICAgICAgLXNoYXJlZCkKKwkjIFRoZSBlZmZlY3RzIG9mIC1zaGFyZWQgYXJlIGRlZmluZWQgaW4gYSBwcmV2aW91cyBsb29wLgorCWNvbnRpbnVlCisJOzsKKworICAgICAgLXNocmV4dCkKKwlwcmV2PXNocmV4dAorCWNvbnRpbnVlCisJOzsKKwogICAgICAgLXN0YXRpYyB8IC1zdGF0aWMtbGlidG9vbC1saWJzKQogCSMgVGhlIGVmZmVjdHMgb2YgLXN0YXRpYyBhcmUgZGVmaW5lZCBpbiBhIHByZXZpb3VzIGxvb3AuCiAJIyBXZSB1c2VkIHRvIGRvIHRoZSBzYW1lIGFzIC1hbGwtc3RhdGljIG9uIHBsYXRmb3JtcyB0aGF0CkBAIC0xNzgzLDQ3ICs0Njg4LDQ5IEBACiAJcHJldj12aW5mbwogCWNvbnRpbnVlCiAJOzsKKwogICAgICAgLXZlcnNpb24tbnVtYmVyKQogCXByZXY9dmluZm8KIAl2aW5mb19udW1iZXI9eWVzCiAJY29udGludWUKIAk7OwogCisgICAgICAtd2VhaykKKyAgICAgICAgcHJldj13ZWFrCisJY29udGludWUKKwk7OworCiAgICAgICAtV2MsKikKLQlhcmdzPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiIC1lICdzL14tV2MsLy8nYAorCWZ1bmNfc3RyaXBuYW1lICctV2MsJyAnJyAiJGFyZyIKKwlhcmdzPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAlhcmc9CiAJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCiAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCiAJICBJRlM9IiRzYXZlX2lmcyIKLQkgIGNhc2UgJGZsYWcgaW4KLQkgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0JICAgIGZsYWc9IlwiJGZsYWdcIiIKLQkgICAgOzsKLQkgIGVzYWMKLQkgIGFyZz0iJGFyZyAkd2wkZmxhZyIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGZsYWciCisgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCisJICBhcmc9IiRhcmcgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJZG9uZQogCUlGUz0iJHNhdmVfaWZzIgotCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICJzL14gLy8iYAorCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKKwlhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCTs7CiAKICAgICAgIC1XbCwqKQotCWFyZ3M9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCIgLWUgJ3MvXi1XbCwvLydgCisJZnVuY19zdHJpcG5hbWUgJy1XbCwnICcnICIkYXJnIgorCWFyZ3M9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCWFyZz0KIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nLCcKIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KIAkgIElGUz0iJHNhdmVfaWZzIgotCSAgY2FzZSAkZmxhZyBpbgotCSAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgICAgZmxhZz0iXCIkZmxhZ1wiIgotCSAgICA7OwotCSAgZXNhYwotCSAgYXJnPSIkYXJnICR3bCRmbGFnIgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkZmxhZyIKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZmxhZyIKKyAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKKwkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJZG9uZQogCUlGUz0iJHNhdmVfaWZzIgotCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICJzL14gLy8iYAorCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKKwlhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCTs7CiAKICAgICAgIC1YY29tcGlsZXIpCkBAIC0xODQxLDE2ICs0NzQ4LDM2IEBACiAJY29udGludWUKIAk7OwogCisgICAgICAjIC1tc2dfKiBmb3Igb3NmIGNjCisgICAgICAtbXNnXyopCisJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKwlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwk7OworCisgICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgorICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKKyAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTdW4gY29tcGlsZXIKKyAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCisgICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgorICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBwYXNzIHRocm91Z2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljCisgICAgICAjIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQworICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgorICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiBwYXNzIHRocm91Z2ggcHJvZmlsaW5nIGZsYWcgZm9yIEdDQworICAgICAgIyBAZmlsZSBHQ0MgcmVzcG9uc2UgZmlsZXMKKyAgICAgIC02NHwtbWlwc1swLTldfC1yWzAtOV1bMC05XSp8LXhhcmNoPSp8LXh0YXJnZXQ9KnwrREEqfCtERCp8LXEqfC1tKnwgXAorICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqKQorICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorICAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKKyAgICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgICBjb250aW51ZQorICAgICAgICA7OworCiAgICAgICAjIFNvbWUgb3RoZXIgY29tcGlsZXIgZmxhZy4KICAgICAgIC0qIHwgKyopCi0JIyBVbmtub3duIGFyZ3VtZW50cyBpbiBib3RoIGZpbmFsaXplX2NvbW1hbmQgYW5kIGNvbXBpbGVfY29tbWFuZCBuZWVkCi0JIyB0byBiZSBhZXN0aGV0aWNhbGx5IHF1b3RlZCBiZWNhdXNlIHRoZXkgYXJlIGV2YWxlZCBsYXRlci4KLQlhcmc9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0JY2FzZSAkYXJnIGluCi0JKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0JICBhcmc9IlwiJGFyZ1wiIgotCSAgOzsKLQllc2FjCisgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJOzsKIAogICAgICAgKi4kb2JqZXh0KQpAQCAtMTg2MiwzMiArNDc4OSwyMyBAQAogCSMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgb2JqZWN0LgogCiAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgb2JqZWN0LgotCWlmICgke1NFRH0gLWUgJzJxJyAkYXJnIHwgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwlpZiBmdW5jX2xhbGliX3Vuc2FmZV9wICIkYXJnIjsgdGhlbgogCSAgcGljX29iamVjdD0KIAkgIG5vbl9waWNfb2JqZWN0PQogCiAJICAjIFJlYWQgdGhlIC5sbyBmaWxlCi0JICAjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KLQkgIGNhc2UgJGFyZyBpbgotCSAgKi8qIHwgKlxcKikgLiAkYXJnIDs7Ci0JICAqKSAuIC4vJGFyZyA7OwotCSAgZXNhYworCSAgZnVuY19zb3VyY2UgIiRhcmciCiAKLQkgIGlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fCBcCisJICBpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwKIAkgICAgIHRlc3QgLXogIiRub25fcGljX29iamVjdCIgfHwKLQkgICAgIHRlc3QgIiRwaWNfb2JqZWN0IiA9IG5vbmUgJiYgXAorCSAgICAgdGVzdCAiJHBpY19vYmplY3QiID0gbm9uZSAmJgogCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiA9IG5vbmU7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGZpbmQgbmFtZSBvZiBvYmplY3QgZm9yIFxgJGFyZyciIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2Ygb2JqZWN0IGZvciBcYCRhcmcnIgogCSAgZmkKIAogCSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLQkgIHhkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAotCSAgaWYgdGVzdCAiWCR4ZGlyIiA9ICJYJGFyZyI7IHRoZW4KLQkgICAgeGRpcj0KLSAJICBlbHNlCi0JICAgIHhkaXI9IiR4ZGlyLyIKLQkgIGZpCisJICBmdW5jX2Rpcm5hbWUgIiRhcmciICIvIiAiIgorCSAgeGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAKIAkgIGlmIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCiAJICAgICMgUHJlcGVuZCB0aGUgc3ViZGlyZWN0b3J5IHRoZSBvYmplY3QgaXMgZm91bmQgaW4uCkBAIC0xOTEyLDcgKzQ4MzAsNyBAQAogCSAgICBmaQogCiAJICAgICMgQSBQSUMgb2JqZWN0LgotCSAgICBsaWJvYmpzPSIkbGlib2JqcyAkcGljX29iamVjdCIKKwkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRwaWNfb2JqZWN0IgogCSAgICBhcmc9IiRwaWNfb2JqZWN0IgogCSAgZmkKIApAQCAtMTkyMiw3ICs0ODQwLDcgQEAKIAkgICAgbm9uX3BpY19vYmplY3Q9IiR4ZGlyJG5vbl9waWNfb2JqZWN0IgogCiAJICAgICMgQSBzdGFuZGFyZCBub24tUElDIG9iamVjdAotCSAgICBub25fcGljX29iamVjdHM9IiRub25fcGljX29iamVjdHMgJG5vbl9waWNfb2JqZWN0IgorCSAgICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCiAJICAgIGlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fCB0ZXN0ICIkcGljX29iamVjdCIgPSBub25lIDsgdGhlbgogCSAgICAgIGFyZz0iJG5vbl9waWNfb2JqZWN0IgogCSAgICBmaQpAQCAtMTkzMCwyOCArNDg0OCwyMiBAQAogCSAgICAjIElmIHRoZSBQSUMgb2JqZWN0IGV4aXN0cywgdXNlIGl0IGluc3RlYWQuCiAJICAgICMgJHhkaXIgd2FzIHByZXBlbmRlZCB0byAkcGljX29iamVjdCBhYm92ZS4KIAkgICAgbm9uX3BpY19vYmplY3Q9IiRwaWNfb2JqZWN0IgotCSAgICBub25fcGljX29iamVjdHM9IiRub25fcGljX29iamVjdHMgJG5vbl9waWNfb2JqZWN0IgorCSAgICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCiAJICBmaQogCWVsc2UKIAkgICMgT25seSBhbiBlcnJvciBpZiBub3QgZG9pbmcgYSBkcnktcnVuLgotCSAgaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogXGAkYXJnJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIG9iamVjdCIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkgIGVsc2UKLQkgICAgIyBEcnktcnVuIGNhc2UuCi0KKwkgIGlmICRvcHRfZHJ5X3J1bjsgdGhlbgogCSAgICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotCSAgICB4ZGlyPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQkgICAgaWYgdGVzdCAiWCR4ZGlyIiA9ICJYJGFyZyI7IHRoZW4KLQkgICAgICB4ZGlyPQotCSAgICBlbHNlCi0JICAgICAgeGRpcj0iJHhkaXIvIgotCSAgICBmaQorCSAgICBmdW5jX2Rpcm5hbWUgIiRhcmciICIvIiAiIgorCSAgICB4ZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKIAotCSAgICBwaWNfb2JqZWN0PWAkZWNobyAiWCR7eGRpcn0ke29iamRpcn0vJHthcmd9IiB8ICRYc2VkIC1lICIkbG8ybyJgCi0JICAgIG5vbl9waWNfb2JqZWN0PWAkZWNobyAiWCR7eGRpcn0ke2FyZ30iIHwgJFhzZWQgLWUgIiRsbzJvImAKLQkgICAgbGlib2Jqcz0iJGxpYm9ianMgJHBpY19vYmplY3QiCi0JICAgIG5vbl9waWNfb2JqZWN0cz0iJG5vbl9waWNfb2JqZWN0cyAkbm9uX3BpY19vYmplY3QiCisJICAgIGZ1bmNfbG8ybyAiJGFyZyIKKwkgICAgcGljX29iamVjdD0keGRpciRvYmpkaXIvJGZ1bmNfbG8yb19yZXN1bHQKKwkgICAgbm9uX3BpY19vYmplY3Q9JHhkaXIkZnVuY19sbzJvX3Jlc3VsdAorCSAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHBpY19vYmplY3QiCisJICAgIGZ1bmNfYXBwZW5kIG5vbl9waWNfb2JqZWN0cyAiICRub25fcGljX29iamVjdCIKKwkgIGVsc2UKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkYXJnJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIG9iamVjdCIKIAkgIGZpCiAJZmkKIAk7OwpAQCAtMTk4NCw3MCArNDg5Niw1MSBAQAogICAgICAgKikKIAkjIFVua25vd24gYXJndW1lbnRzIGluIGJvdGggZmluYWxpemVfY29tbWFuZCBhbmQgY29tcGlsZV9jb21tYW5kIG5lZWQKIAkjIHRvIGJlIGFlc3RoZXRpY2FsbHkgcXVvdGVkIGJlY2F1c2UgdGhleSBhcmUgZXZhbGVkIGxhdGVyLgotCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQljYXNlICRhcmcgaW4KLQkqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgIGFyZz0iXCIkYXJnXCIiCi0JICA7OwotCWVzYWMKKwlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCTs7CiAgICAgICBlc2FjICMgYXJnCiAKICAgICAgICMgTm93IGFjdHVhbGx5IHN1YnN0aXR1dGUgdGhlIGFyZ3VtZW50IGludG8gdGhlIGNvbW1hbmRzLgogICAgICAgaWYgdGVzdCAtbiAiJGFyZyI7IHRoZW4KLQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGFyZyIKLQlmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkYXJnIgorCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAgICAgICBmaQogICAgIGRvbmUgIyBhcmd1bWVudCBwYXJzaW5nIGxvb3AKIAotICAgIGlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogdGhlIFxgJHByZXZhcmcnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIgMT4mMgotICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgICBmaQorICAgIHRlc3QgLW4gIiRwcmV2IiAmJiBcCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSBcYCRwcmV2YXJnJyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCiAKICAgICBpZiB0ZXN0ICIkZXhwb3J0X2R5bmFtaWMiID0geWVzICYmIHRlc3QgLW4gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiOyB0aGVuCiAgICAgICBldmFsIGFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIgotICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCi0gICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkYXJnIgorICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgogICAgIGZpCiAKICAgICBvbGRsaWJzPQogICAgICMgY2FsY3VsYXRlIHRoZSBuYW1lIG9mIHRoZSBmaWxlLCB3aXRob3V0IGl0cyBkaXJlY3RvcnkKLSAgICBvdXRwdXRuYW1lPWAkZWNobyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKyAgICBmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgorICAgIG91dHB1dG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKICAgICBsaWJvYmpzX3NhdmU9IiRsaWJvYmpzIgogCiAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAgICAgICAjIGdldCB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluICRzaGxpYnBhdGhfdmFyCi0gICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRlY2hvIFwiWFwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkWHNlZCAtZSBcJ3MvOi8gL2dcJ1xgCisgICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRFQ0hPIFwiWFwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkWHNlZCAtZSBcJ3MvOi8gL2dcJ1xgCiAgICAgZWxzZQogICAgICAgc2hsaWJfc2VhcmNoX3BhdGg9CiAgICAgZmkKICAgICBldmFsIHN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIKICAgICBldmFsIHN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiCiAKLSAgICBvdXRwdXRfb2JqZGlyPWAkZWNobyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLSAgICBpZiB0ZXN0ICJYJG91dHB1dF9vYmpkaXIiID0gIlgkb3V0cHV0IjsgdGhlbgotICAgICAgb3V0cHV0X29iamRpcj0iJG9iamRpciIKLSAgICBlbHNlCi0gICAgICBvdXRwdXRfb2JqZGlyPSIkb3V0cHV0X29iamRpci8kb2JqZGlyIgotICAgIGZpCisgICAgZnVuY19kaXJuYW1lICIkb3V0cHV0IiAiLyIgIiIKKyAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCiAgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBkaXJlY3RvcnkuCi0gICAgaWYgdGVzdCAhIC1kICIkb3V0cHV0X29iamRpciI7IHRoZW4KLSAgICAgICRzaG93ICIkbWtkaXIgJG91dHB1dF9vYmpkaXIiCi0gICAgICAkcnVuICRta2RpciAkb3V0cHV0X29iamRpcgotICAgICAgZXhpdF9zdGF0dXM9JD8KLSAgICAgIGlmIHRlc3QgIiRleGl0X3N0YXR1cyIgLW5lIDAgJiYgdGVzdCAhIC1kICIkb3V0cHV0X29iamRpciI7IHRoZW4KLQlleGl0ICRleGl0X3N0YXR1cwotICAgICAgZmkKLSAgICBmaQorICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCiAKICAgICAjIERldGVybWluZSB0aGUgdHlwZSBvZiBvdXRwdXQKICAgICBjYXNlICRvdXRwdXQgaW4KICAgICAiIikKLSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUiIDE+JjIKLSAgICAgICRlY2hvICIkaGVscCIgMT4mMgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUiCiAgICAgICA7OwogICAgICouJGxpYmV4dCkgbGlua21vZGU9b2xkbGliIDs7CiAgICAgKi5sbyB8ICouJG9iamV4dCkgbGlua21vZGU9b2JqIDs7CkBAIC0yMDU1LDIyICs0OTQ4LDEzIEBACiAgICAgKikgbGlua21vZGU9cHJvZyA7OyAjIEFueXRoaW5nIGVsc2Ugc2hvdWxkIGJlIGEgcHJvZ3JhbS4KICAgICBlc2FjCiAKLSAgICBjYXNlICRob3N0IGluCi0gICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqKQotICAgICAgIyBkb24ndCBlbGltaW5hdGUgZHVwbGljYXRpb25zIGluICRwb3N0ZGVwcyBhbmQgJHByZWRlcHMKLSAgICAgIGR1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz15ZXMKLSAgICAgIDs7Ci0gICAgKikKLSAgICAgIGR1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kZHVwbGljYXRlX2RlcHMKLSAgICAgIDs7Ci0gICAgZXNhYwogICAgIHNwZWNpYWxkZXBsaWJzPQogCiAgICAgbGlicz0KICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKICAgICAjIHRoYXQgYXJlIGxpbmtlZCBtb3JlIHRoYW4gb25jZSAoZS5nLiAtbGEgLWxiIC1sYSkKICAgICBmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbwotICAgICAgaWYgdGVzdCAiWCRkdXBsaWNhdGVfZGVwcyIgPSAiWHllcyIgOyB0aGVuCisgICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgogCWNhc2UgIiRsaWJzICIgaW4KIAkqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CiAJZXNhYwpAQCAtMjA4NSw3ICs0OTY5LDcgQEAKICAgICAgICMgJHBvc3RkZXBzIGFuZCBtYXJrIHRoZW0gYXMgc3BlY2lhbCAoaS5lLiwgd2hvc2UgZHVwbGljYXRlcyBhcmUKICAgICAgICMgbm90IHRvIGJlIGVsaW1pbmF0ZWQpLgogICAgICAgcHJlX3Bvc3RfZGVwcz0KLSAgICAgIGlmIHRlc3QgIlgkZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzIiA9ICJYeWVzIiA7IHRoZW4KKyAgICAgIGlmICRvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzOyB0aGVuCiAJZm9yIHByZV9wb3N0X2RlcCBpbiAkcHJlZGVwcyAkcG9zdGRlcHM7IGRvCiAJICBjYXNlICIkcHJlX3Bvc3RfZGVwcyAiIGluCiAJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OwpAQCAtMjEwMSwxNSArNDk4NSwxNiBAQAogICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0KICAgICBuZWVkX3JlbGluaz1ubyAjIHdoZXRoZXIgd2UncmUgbGlua2luZyBhbnkgdW5pbnN0YWxsZWQgbGlidG9vbCBsaWJyYXJpZXMKICAgICBub3RpbnN0X2RlcGxpYnM9ICMgbm90LWluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcworICAgIG5vdGluc3RfcGF0aD0gIyBwYXRocyB0aGF0IGNvbnRhaW4gbm90LWluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcworCiAgICAgY2FzZSAkbGlua21vZGUgaW4KICAgICBsaWIpCi0JcGFzc2VzPSJjb252IGxpbmsiCisJcGFzc2VzPSJjb252IGRscHJlb3BlbiBsaW5rIgogCWZvciBmaWxlIGluICRkbGZpbGVzICRkbHByZWZpbGVzOyBkbwogCSAgY2FzZSAkZmlsZSBpbgogCSAgKi5sYSkgOzsKIAkgICopCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGxpYnJhcmllcyBjYW4gXGAtZGxvcGVuJyBvbmx5IGxpYnRvb2wgbGlicmFyaWVzOiAkZmlsZSIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgZnVuY19mYXRhbF9oZWxwICJsaWJyYXJpZXMgY2FuIFxgLWRsb3Blbicgb25seSBsaWJ0b29sIGxpYnJhcmllczogJGZpbGUiCiAJICAgIDs7CiAJICBlc2FjCiAJZG9uZQpAQCAtMjEyNSw3ICs1MDEwLDIwIEBACiAgICAgKikgIHBhc3Nlcz0iY29udiIKIAk7OwogICAgIGVzYWMKKwogICAgIGZvciBwYXNzIGluICRwYXNzZXM7IGRvCisgICAgICAjIFRoZSBwcmVvcGVuIHBhc3MgaW4gbGliIG1vZGUgcmV2ZXJzZXMgJGRlcGxpYnM7IHB1dCBpdCBiYWNrIGhlcmUKKyAgICAgICMgc28gdGhhdCAtTCBjb21lcyBiZWZvcmUgbGlicyB0aGF0IG5lZWQgaXQgZm9yIGluc3RhbmNlLi4uCisgICAgICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIjsgdGhlbgorCSMjIEZJWE1FOiBGaW5kIHRoZSBwbGFjZSB3aGVyZSB0aGUgbGlzdCBpcyByZWJ1aWx0IGluIHRoZSB3cm9uZworCSMjICAgICAgICBvcmRlciwgYW5kIGZpeCBpdCB0aGVyZSBwcm9wZXJseQorICAgICAgICB0bXBfZGVwbGlicz0KKwlmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbworCSAgdG1wX2RlcGxpYnM9IiRkZXBsaWIgJHRtcF9kZXBsaWJzIgorCWRvbmUKKwlkZXBsaWJzPSIkdG1wX2RlcGxpYnMiCisgICAgICBmaQorCiAgICAgICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAogCSB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csc2NhbiI7IHRoZW4KIAlsaWJzPSIkZGVwbGlicyIKQEAgLTIxMzgsMTEgKzUwMzYsMzMgQEAKIAlsaW5rKSBsaWJzPSIkZGVwbGlicyAlREVQTElCUyUgJGRlcGVuZGVuY3lfbGlicyIgOzsKIAllc2FjCiAgICAgICBmaQorICAgICAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsZGxwcmVvcGVuIjsgdGhlbgorCSMgQ29sbGVjdCBhbmQgZm9yd2FyZCBkZXBsaWJzIG9mIHByZW9wZW5lZCBsaWJ0b29sIGxpYnMKKwlmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbworCSAgIyBJZ25vcmUgbm9uLWxpYnRvb2wtbGlicworCSAgZGVwZW5kZW5jeV9saWJzPQorCSAgY2FzZSAkbGliIGluCisJICAqLmxhKQlmdW5jX3NvdXJjZSAiJGxpYiIgOzsKKwkgIGVzYWMKKworCSAgIyBDb2xsZWN0IHByZW9wZW5lZCBsaWJ0b29sIGRlcGxpYnMsIGV4Y2VwdCBhbnkgdGhpcyBsaWJyYXJ5CisJICAjIGhhcyBkZWNsYXJlZCBhcyB3ZWFrIGxpYnMKKwkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAgICAgICAgICAgIGRlcGxpYl9iYXNlPWAkRUNITyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisJICAgIGNhc2UgIiAkd2Vha19saWJzICIgaW4KKwkgICAgKiIgJGRlcGxpYl9iYXNlICIqKSA7OworCSAgICAqKSBkZXBsaWJzPSIkZGVwbGlicyAkZGVwbGliIiA7OworCSAgICBlc2FjCisJICBkb25lCisJZG9uZQorCWxpYnM9IiRkbHByZWZpbGVzIgorICAgICAgZmkKICAgICAgIGlmIHRlc3QgIiRwYXNzIiA9IGRsb3BlbjsgdGhlbgogCSMgQ29sbGVjdCBkbHByZW9wZW5lZCBsaWJyYXJpZXMKIAlzYXZlX2RlcGxpYnM9IiRkZXBsaWJzIgogCWRlcGxpYnM9CiAgICAgICBmaQorCiAgICAgICBmb3IgZGVwbGliIGluICRsaWJzOyBkbwogCWxpYj0KIAlmb3VuZD1ubwpAQCAtMjE1MywxNSArNTA3MywyMiBAQAogCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgZWxzZQogCSAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWIiCisJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCisJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisJCSAgICAqIiAkZGVwbGliICIqKSA7OworCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKwkJZXNhYworCSAgICBmaQogCSAgZmkKIAkgIGNvbnRpbnVlCiAJICA7OwogCS1sKikKIAkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZzsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1sJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIiAxPiYyCisJICAgIGZ1bmNfd2FybmluZyAiXGAtbCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKIAkgICAgY29udGludWUKIAkgIGZpCi0JICBuYW1lPWAkZWNobyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgJ3MvXi1sLy8nYAorCSAgZnVuY19zdHJpcG5hbWUgJy1sJyAnJyAiJGRlcGxpYiIKKwkgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgogCSAgICBzZWFyY2hkaXJzPSIkbmV3bGliX3NlYXJjaF9wYXRoICRsaWJfc2VhcmNoX3BhdGggJGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlycyAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGgiCiAJICBlbHNlCkBAIC0yMTk3LDIxICs1MTI0LDE3IEBACiAJICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkgICAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkgICAgICAqIiAkZGVwbGliICIqKQotCQlpZiAoJHtTRUR9IC1lICcycScgJGxpYiB8Ci0gICAgICAgICAgICAgICAgICAgIGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJCWlmIGZ1bmNfbGFsaWJfcCAiJGxpYiI7IHRoZW4KIAkJICBsaWJyYXJ5X25hbWVzPQogCQkgIG9sZF9saWJyYXJ5PQotCQkgIGNhc2UgJGxpYiBpbgotCQkgICovKiB8ICpcXCopIC4gJGxpYiA7OwotCQkgICopIC4gLi8kbGliIDs7Ci0JCSAgZXNhYworCQkgIGZ1bmNfc291cmNlICIkbGliIgogCQkgIGZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KIAkJICAgIGxsPSIkbCIKIAkJICBkb25lCiAJCSAgaWYgdGVzdCAiWCRsbCIgPSAiWCRvbGRfbGlicmFyeSIgOyB0aGVuICMgb25seSBzdGF0aWMgdmVyc2lvbiBhdmFpbGFibGUKIAkJICAgIGZvdW5kPW5vCi0JCSAgICBsYWRpcj1gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0JCSAgICB0ZXN0ICJYJGxhZGlyIiA9ICJYJGxpYiIgJiYgbGFkaXI9Ii4iCisJCSAgICBmdW5jX2Rpcm5hbWUgIiRsaWIiICIiICIuIgorCQkgICAgbGFkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogCQkgICAgbGliPSRsYWRpci8kb2xkX2xpYnJhcnkKIAkJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgogCQkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKQEAgLTIyMjMsMTkgKzUxNDYsMzUgQEAKIAkJICAgIGNvbnRpbnVlCiAJCSAgZmkKIAkJZmkKLQkgICAgICAgIDs7CisJCTs7CiAJICAgICAgKikgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBmaQogCSAgOzsgIyAtbAorCSoubHRmcmFtZXdvcmspCisJICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csbGluayI7IHRoZW4KKwkgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCisJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisJICBlbHNlCisJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCisJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisJCSAgICAqIiAkZGVwbGliICIqKSA7OworCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKwkJZXNhYworCSAgICBmaQorCSAgZmkKKwkgIGNvbnRpbnVlCisJICA7OwogCS1MKikKIAkgIGNhc2UgJGxpbmttb2RlIGluCiAJICBsaWIpCiAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCiAJICAgIHRlc3QgIiRwYXNzIiA9IGNvbnYgJiYgY29udGludWUKIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAiYCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncy9eLUwvLydgCisJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisJICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgogCSAgICA7OwogCSAgcHJvZykKIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgpAQCAtMjI0OCwxNyArNTE4NywxOSBAQAogCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgogCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICAgIGZpCi0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAiYCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncy9eLUwvLydgCisJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisJICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgogCSAgICA7OwogCSAgKikKLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtTCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIgMT4mMgorCSAgICBmdW5jX3dhcm5pbmcgIlxgLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiCiAJICAgIDs7CiAJICBlc2FjICMgbGlua21vZGUKIAkgIGNvbnRpbnVlCiAJICA7OyAjIC1MCiAJLVIqKQogCSAgaWYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgotCSAgICBkaXI9YCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncy9eLVIvLydgCisJICAgIGZ1bmNfc3RyaXBuYW1lICctUicgJycgIiRkZXBsaWIiCisJICAgIGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICAgICMgTWFrZSBzdXJlIHRoZSB4cnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCiAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgogCSAgICAqIiAkZGlyICIqKSA7OwpAQCAtMjI3NiwzNSArNTIxNyw0MSBAQAogCSAgZmkKIAkgIGNhc2UgJGxpbmttb2RlIGluCiAJICBsaWIpCi0JICAgIHZhbGlkX2FfbGliPW5vCi0JICAgIGNhc2UgJGRlcGxpYnNfY2hlY2tfbWV0aG9kIGluCi0JICAgICAgbWF0Y2hfcGF0dGVybiopCi0JCXNldCBkdW1teSAkZGVwbGlic19jaGVja19tZXRob2QKLQkgICAgICAgIG1hdGNoX3BhdHRlcm5fcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDIgXCguKlwpImAKLQkJaWYgZXZhbCAkZWNobyBcIiRkZXBsaWJcIiAyPi9kZXYvbnVsbCBcCi0JCSAgICB8ICRTRUQgMTBxIFwKKwkgICAgIyBMaW5raW5nIGNvbnZlbmllbmNlIG1vZHVsZXMgaW50byBzaGFyZWQgbGlicmFyaWVzIGlzIGFsbG93ZWQsCisJICAgICMgYnV0IGxpbmtpbmcgb3RoZXIgc3RhdGljIGxpYnJhcmllcyBpcyBub24tcG9ydGFibGUuCisJICAgIGNhc2UgIiAkZGxwcmVjb252ZW5pZW5jZWxpYnMgIiBpbgorCSAgICAqIiAkZGVwbGliICIqKSA7OworCSAgICAqKQorCSAgICAgIHZhbGlkX2FfbGliPW5vCisJICAgICAgY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KKwkJbWF0Y2hfcGF0dGVybiopCisJCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZDsgc2hpZnQKKwkJICBtYXRjaF9wYXR0ZXJuX3JlZ2V4PWBleHByICIkZGVwbGlic19jaGVja19tZXRob2QiIDogIiQxIFwoLipcKSJgCisJCSAgaWYgZXZhbCAiXCRFQ0hPIFwiWCRkZXBsaWJcIiIgMj4vZGV2L251bGwgfCAkWHNlZCAtZSAxMHEgXAogCQkgICAgfCAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgorCQkgICAgdmFsaWRfYV9saWI9eWVzCisJCSAgZmkKKwkJOzsKKwkJcGFzc19hbGwpCiAJCSAgdmFsaWRfYV9saWI9eWVzCi0JCWZpCiAJCTs7Ci0JICAgICAgcGFzc19hbGwpCi0JCXZhbGlkX2FfbGliPXllcwotCQk7OwotICAgICAgICAgICAgZXNhYwotCSAgICBpZiB0ZXN0ICIkdmFsaWRfYV9saWIiICE9IHllczsgdGhlbgotCSAgICAgICRlY2hvCi0JICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBUcnlpbmcgdG8gbGluayB3aXRoIHN0YXRpYyBsaWIgYXJjaGl2ZSAkZGVwbGliLiIKLQkgICAgICAkZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkgICAgICAkZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkgICAgICAkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCSAgICAgICRlY2hvICIqKiogYmVjYXVzZSB0aGUgZmlsZSBleHRlbnNpb25zIC4kbGliZXh0IG9mIHRoaXMgYXJndW1lbnQgbWFrZXMgbWUgYmVsaWV2ZSIKLQkgICAgICAkZWNobyAiKioqIHRoYXQgaXQgaXMganVzdCBhIHN0YXRpYyBhcmNoaXZlIHRoYXQgSSBzaG91bGQgbm90IHVzZWQgaGVyZS4iCi0JICAgIGVsc2UKLQkgICAgICAkZWNobwotCSAgICAgICRlY2hvICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSIKLQkgICAgICAkZWNobyAiKioqIHN0YXRpYyBsaWJyYXJ5ICRkZXBsaWIgaXMgbm90IHBvcnRhYmxlISIKLQkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotCSAgICBmaQorCSAgICAgIGVzYWMKKwkgICAgICBpZiB0ZXN0ICIkdmFsaWRfYV9saWIiICE9IHllczsgdGhlbgorCQkkRUNITworCQkkRUNITyAiKioqIFdhcm5pbmc6IFRyeWluZyB0byBsaW5rIHdpdGggc3RhdGljIGxpYiBhcmNoaXZlICRkZXBsaWIuIgorCQkkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCSRFQ0hPICIqKiogYmVjYXVzZSB0aGUgZmlsZSBleHRlbnNpb25zIC4kbGliZXh0IG9mIHRoaXMgYXJndW1lbnQgbWFrZXMgbWUgYmVsaWV2ZSIKKwkJJEVDSE8gIioqKiB0aGF0IGl0IGlzIGp1c3QgYSBzdGF0aWMgYXJjaGl2ZSB0aGF0IEkgc2hvdWxkIG5vdCB1c2UgaGVyZS4iCisJICAgICAgZWxzZQorCQkkRUNITworCQkkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUiCisJCSRFQ0hPICIqKiogc3RhdGljIGxpYnJhcnkgJGRlcGxpYiBpcyBub3QgcG9ydGFibGUhIgorCQlkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgICAgIGZpCisJICAgICAgOzsKKwkgICAgZXNhYwogCSAgICBjb250aW51ZQogCSAgICA7OwogCSAgcHJvZykKQEAgLTIzMzksMjEgKzUyODYsMTggQEAKIAkgIGNvbnRpbnVlCiAJICA7OwogCWVzYWMgIyBjYXNlICRkZXBsaWIKKwogCWlmIHRlc3QgIiRmb3VuZCIgPSB5ZXMgfHwgdGVzdCAtZiAiJGxpYiI7IHRoZW4gOgogCWVsc2UKLQkgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBmaW5kIHRoZSBsaWJyYXJ5IFxgJGxpYicgb3IgdW5oYW5kbGVkIGFyZ3VtZW50IFxgJGRlcGxpYiciIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgdGhlIGxpYnJhcnkgXGAkbGliJyBvciB1bmhhbmRsZWQgYXJndW1lbnQgXGAkZGVwbGliJyIKIAlmaQogCiAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KLQlpZiAoJHtTRUR9IC1lICcycScgJGxpYiB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLQllbHNlCi0JICAkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JZmkKKwlmdW5jX2xhbGliX3Vuc2FmZV9wICIkbGliIiBcCisJICB8fCBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKIAotCWxhZGlyPWAkZWNobyAiWCRsaWIiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQl0ZXN0ICJYJGxhZGlyIiA9ICJYJGxpYiIgJiYgbGFkaXI9Ii4iCisJZnVuY19kaXJuYW1lICIkbGliIiAiIiAiLiIKKwlsYWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAKIAlkbG5hbWU9CiAJZGxvcGVuPQpAQCAtMjM2MSw2ICs1MzA1LDcgQEAKIAlsaWJkaXI9CiAJbGlicmFyeV9uYW1lcz0KIAlvbGRfbGlicmFyeT0KKwlpbmhlcml0ZWRfbGlua2VyX2ZsYWdzPQogCSMgSWYgdGhlIGxpYnJhcnkgd2FzIGluc3RhbGxlZCB3aXRoIGFuIG9sZCByZWxlYXNlIG9mIGxpYnRvb2wsCiAJIyBpdCB3aWxsIG5vdCByZWRlZmluZSB2YXJpYWJsZXMgaW5zdGFsbGVkLCBvciBzaG91bGRub3RsaW5rCiAJaW5zdGFsbGVkPXllcwpAQCAtMjM2OSwxMSArNTMxNCwxOSBAQAogCiAKIAkjIFJlYWQgdGhlIC5sYSBmaWxlCi0JY2FzZSAkbGliIGluCi0JKi8qIHwgKlxcKikgLiAkbGliIDs7Ci0JKikgLiAuLyRsaWIgOzsKLQllc2FjCisJZnVuY19zb3VyY2UgIiRsaWIiCiAKKwkjIENvbnZlcnQgIi1mcmFtZXdvcmsgZm9vIiB0byAiZm9vLmx0ZnJhbWV3b3JrIgorCWlmIHRlc3QgLW4gIiRpbmhlcml0ZWRfbGlua2VyX2ZsYWdzIjsgdGhlbgorCSAgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICJYJGluaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFhzZWQgLWUgJ3MvLWZyYW1ld29yayBcKFteICRdKlwpL1wxLmx0ZnJhbWV3b3JrL2cnYAorCSAgZm9yIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgaW4gJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzOyBkbworCSAgICBjYXNlICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKwkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKKwkgICAgICAqKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CisJICAgIGVzYWMKKwkgIGRvbmUKKwlmaQorCWRlcGVuZGVuY3lfbGlicz1gJEVDSE8gIlggJGRlcGVuZGVuY3lfbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAogCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAogCSAgIHsgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB9OyB0aGVuCkBAIC0yMzg2LDI2ICs1MzM5LDI0IEBACiAJICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIgogCSAgaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KIAkgICAgaWYgdGVzdCAteiAiJG9sZF9saWJyYXJ5IjsgdGhlbgotCSAgICAgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIiAxPiYyCi0JICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCiAJICAgIGZpCiAJICAgICMgSXQgaXMgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnksIHNvIGFkZCBpbiBpdHMgb2JqZWN0cy4KIAkgICAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCiAJICAgIG9sZF9jb252ZW5pZW5jZT0iJG9sZF9jb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0JICAgIHRtcF9saWJzPQotCSAgICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0JICAgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLSAgICAgICAgICAgICAgaWYgdGVzdCAiWCRkdXBsaWNhdGVfZGVwcyIgPSAiWHllcyIgOyB0aGVuCi0JICAgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotCSAgICAgICAgZXNhYwotICAgICAgICAgICAgICBmaQotCSAgICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKLQkgICAgZG9uZQogCSAgZWxpZiB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogXGAkbGliJyBpcyBub3QgYSBjb252ZW5pZW5jZSBsaWJyYXJ5IiAxPiYyCi0JICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiCiAJICBmaQorCSAgdG1wX2xpYnM9CisJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisJICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KKwkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICAgZXNhYworCSAgICBmaQorCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisJICBkb25lCiAJICBjb250aW51ZQogCWZpICMgJHBhc3MgPSBjb252CiAKQEAgLTI0MTYsMTUgKzUzNjcsMTMgQEAKIAkgIGxpbmtsaWI9IiRsIgogCWRvbmUKIAlpZiB0ZXN0IC16ICIkbGlua2xpYiI7IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgogCWZpCiAKIAkjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KIAlpZiB0ZXN0ICIkcGFzcyIgPSBkbG9wZW47IHRoZW4KIAkgIGlmIHRlc3QgLXogIiRsaWJkaXIiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCAtZGxvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogXGAkbGliJyIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IC1kbG9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgogCSAgZmkKIAkgIGlmIHRlc3QgLXogIiRkbG5hbWUiIHx8CiAJICAgICB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiICE9IHllcyB8fApAQCAtMjQ0NiwxOCArNTM5NSwxOSBAQAogCSopCiAJICBhYnNfbGFkaXI9YGNkICIkbGFkaXIiICYmIHB3ZGAKIAkgIGlmIHRlc3QgLXogIiRhYnNfbGFkaXIiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgXGAkbGFkaXInIiAxPiYyCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHBhc3NpbmcgaXQgbGl0ZXJhbGx5IHRvIHRoZSBsaW5rZXIsIGFsdGhvdWdoIGl0IG1pZ2h0IGZhaWwiIDE+JjIKKwkgICAgZnVuY193YXJuaW5nICJjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mIFxgJGxhZGlyJyIKKwkgICAgZnVuY193YXJuaW5nICJwYXNzaW5nIGl0IGxpdGVyYWxseSB0byB0aGUgbGlua2VyLCBhbHRob3VnaCBpdCBtaWdodCBmYWlsIgogCSAgICBhYnNfbGFkaXI9IiRsYWRpciIKIAkgIGZpCiAJICA7OwogCWVzYWMKLQlsYW5hbWU9YCRlY2hvICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorCWZ1bmNfYmFzZW5hbWUgIiRsaWIiCisJbGFuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAKIAkjIEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KIAlpZiB0ZXN0ICJYJGluc3RhbGxlZCIgPSBYeWVzOyB0aGVuCiAJICBpZiB0ZXN0ICEgLWYgIiRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIiAxPiYyCisJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCiAJICAgIGRpcj0iJGxhZGlyIgogCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCiAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKQEAgLTI0NzksMTggKzU0MjksMjIgQEAKIAkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCiAJICBmaQogCWZpICMgJGluc3RhbGxlZCA9IHllcwotCW5hbWU9YCRlY2hvICJYJGxhbmFtZSIgfCAkWHNlZCAtZSAncy9cLmxhJC8vJyAtZSAncy9ebGliLy8nYAorCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkbGFuYW1lIgorCW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCiAJIyBUaGlzIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbHByZW9wZW4uCiAJaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuOyB0aGVuCi0JICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBpZiB0ZXN0IC16ICIkbGliZGlyIiAmJiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGxpYnJhcmllcyBtYXkgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciCiAJICBmaQogCSAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCiAJICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KIAkgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KIAkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworCSAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKwkgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorCQlkbHByZWNvbnZlbmllbmNlbGlicz0iJGRscHJlY29udmVuaWVuY2VsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgogCSAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KIAkgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KIAkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kZGxuYW1lIgpAQCAtMjUyNiw3ICs1NDgwLDkgQEAKIAkgIHRtcF9saWJzPQogCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgICBjYXNlICRkZXBsaWIgaW4KLQkgICAgLUwqKSBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggImAkZWNobyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgJ3MvXi1MLy8nYDs7ICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAorCSAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisJICAgICAgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJCSA7OwogCSAgICBlc2FjCiAJICAgICMgTmVlZCB0byBsaW5rIGFnYWluc3QgYWxsIGRlcGVuZGVuY3lfbGlicz8KIAkgICAgaWYgdGVzdCAiJGxpbmthbGxkZXBsaWJzIiA9IHllczsgdGhlbgpAQCAtMjUzNiw3ICs1NDkyLDcgQEAKIAkgICAgICAjIG9yL2FuZCBsaW5rIGFnYWluc3Qgc3RhdGljIGxpYnJhcmllcwogCSAgICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgICBmaQotCSAgICBpZiB0ZXN0ICJYJGR1cGxpY2F0ZV9kZXBzIiA9ICJYeWVzIiA7IHRoZW4KKwkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgogCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKIAkgICAgICBlc2FjCkBAIC0yNTQ5LDE1ICs1NTA1LDE0IEBACiAJaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCiAJICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyIgJiYKIAkgICAgIHsgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IG5vIHx8Ci0JCSB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LHllcyI7IH0gfHwKKwkgICAgICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LHllcyI7IH0gfHwKIAkgICAgICAgdGVzdCAteiAiJG9sZF9saWJyYXJ5IjsgfTsgdGhlbgogCSAgICAjIFdlIG5lZWQgdG8gaGFyZGNvZGUgdGhlIGxpYnJhcnkgcGF0aAogCSAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAteiAiJGF2b2lkdGVtcHJwYXRoIiA7IHRoZW4KIAkgICAgICAjIE1ha2Ugc3VyZSB0aGUgcnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCi0JICAgICAgY2FzZSAiJHRlbXBfcnBhdGggIiBpbgotCSAgICAgICoiICRkaXIgIiopIDs7Ci0JICAgICAgKiIgJGFic2RpciAiKikgOzsKLQkgICAgICAqKSB0ZW1wX3JwYXRoPSIkdGVtcF9ycGF0aCAkYWJzZGlyIiA7OworCSAgICAgIGNhc2UgIiR0ZW1wX3JwYXRoOiIgaW4KKwkgICAgICAqIiRhYnNkaXI6IiopIDs7CisJICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGgkYWJzZGlyOiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAKQEAgLTI1OTUsMjcgKzU1NTAsNDMgQEAKIAogCWxpbmtfc3RhdGljPW5vICMgV2hldGhlciB0aGUgZGVwbGliIHdpbGwgYmUgbGlua2VkIHN0YXRpY2FsbHkKIAl1c2Vfc3RhdGljX2xpYnM9JHByZWZlcl9zdGF0aWNfbGlicwotCWlmIHRlc3QgIiR1c2Vfc3RhdGljX2xpYnMiID0gYnVpbHQgJiYgdGVzdCAiJGluc3RhbGxlZCIgPSB5ZXMgOyB0aGVuCisJaWYgdGVzdCAiJHVzZV9zdGF0aWNfbGlicyIgPSBidWlsdCAmJiB0ZXN0ICIkaW5zdGFsbGVkIiA9IHllczsgdGhlbgogCSAgdXNlX3N0YXRpY19saWJzPW5vCiAJZmkKIAlpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyIgJiYKIAkgICB7IHRlc3QgIiR1c2Vfc3RhdGljX2xpYnMiID0gbm8gfHwgdGVzdCAteiAiJG9sZF9saWJyYXJ5IjsgfTsgdGhlbgotCSAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgotCSAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKLQkgICAgbmVlZF9yZWxpbms9eWVzCi0JICBmaQorCSAgY2FzZSAkaG9zdCBpbgorCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKikKKwkgICAgICAjIE5vIHBvaW50IGluIHJlbGlua2luZyBETExzIGJlY2F1c2UgcGF0aHMgYXJlIG5vdCBlbmNvZGVkCisJICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisJICAgICAgbmVlZF9yZWxpbms9bm8KKwkgICAgOzsKKwkgICopCisJICAgIGlmIHRlc3QgIiRpbnN0YWxsZWQiID0gbm87IHRoZW4KKwkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKwkgICAgICBuZWVkX3JlbGluaz15ZXMKKwkgICAgZmkKKwkgICAgOzsKKwkgIGVzYWMKIAkgICMgVGhpcyBpcyBhIHNoYXJlZCBsaWJyYXJ5CiAKLQkgICMgV2FybiBhYm91dCBwb3J0YWJpbGl0eSwgY2FuJ3QgbGluayBhZ2FpbnN0IC1tb2R1bGUncyBvbgotCSAgIyBzb21lIHN5c3RlbXMgKGRhcndpbikKLQkgIGlmIHRlc3QgIiRzaG91bGRub3RsaW5rIiA9IHllcyAmJiB0ZXN0ICIkcGFzcyIgPSBsaW5rIDsgdGhlbgotCSAgICAkZWNobwotCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgotCSAgICAgICRlY2hvICIqKiogV2FybmluZzogTGlua2luZyB0aGUgZXhlY3V0YWJsZSAkb3V0cHV0IGFnYWluc3QgdGhlIGxvYWRhYmxlIG1vZHVsZSIKLQkgICAgZWxzZQotCSAgICAgICRlY2hvICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBsb2FkYWJsZSBtb2R1bGUiCisJICAjIFdhcm4gYWJvdXQgcG9ydGFiaWxpdHksIGNhbid0IGxpbmsgYWdhaW5zdCAtbW9kdWxlJ3Mgb24gc29tZQorCSAgIyBzeXN0ZW1zIChkYXJ3aW4pLiAgRG9uJ3QgYmxlYXQgYWJvdXQgZGxvcGVuZWQgbW9kdWxlcyB0aG91Z2ghCisJICBkbG9wZW5tb2R1bGU9IiIKKwkgIGZvciBkbHByZW1vZHVsZXRlc3QgaW4gJGRscHJlZmlsZXM7IGRvCisJICAgIGlmIHRlc3QgIlgkZGxwcmVtb2R1bGV0ZXN0IiA9ICJYJGxpYiI7IHRoZW4KKwkgICAgICBkbG9wZW5tb2R1bGU9IiRkbHByZW1vZHVsZXRlc3QiCisJICAgICAgYnJlYWsKIAkgICAgZmkKLQkgICAgJGVjaG8gIioqKiAkbGlua2xpYiBpcyBub3QgcG9ydGFibGUhIgorCSAgZG9uZQorCSAgaWYgdGVzdCAteiAiJGRsb3Blbm1vZHVsZSIgJiYgdGVzdCAiJHNob3VsZG5vdGxpbmsiID0geWVzICYmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KKwkgICAgJEVDSE8KKwkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KKwkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIGV4ZWN1dGFibGUgJG91dHB1dCBhZ2FpbnN0IHRoZSBsb2FkYWJsZSBtb2R1bGUiCisJICAgIGVsc2UKKwkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbG9hZGFibGUgbW9kdWxlIgorCSAgICBmaQorCSAgICAkRUNITyAiKioqICRsaW5rbGliIGlzIG5vdCBwb3J0YWJsZSEiCiAJICBmaQogCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiAmJgogCSAgICAgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgPSB5ZXM7IHRoZW4KQEAgLTI2NDUsMTcgKzU2MTYsMTkgQEAKIAkgIGlmIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyI7IHRoZW4KIAkgICAgIyBmaWd1cmUgb3V0IHRoZSBzb25hbWUKIAkgICAgc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzCi0JICAgIHJlYWxuYW1lPSIkMiIKLQkgICAgc2hpZnQ7IHNoaWZ0Ci0JICAgIGxpYm5hbWU9YGV2YWwgXFwkZWNobyBcIiRsaWJuYW1lX3NwZWNcImAKKwkgICAgc2hpZnQKKwkgICAgcmVhbG5hbWU9IiQxIgorCSAgICBzaGlmdAorCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKIAkgICAgIyB1c2UgZGxuYW1lIGlmIHdlIGdvdCBpdC4gaXQncyBwZXJmZWN0bHkgZ29vZCwgbm8/CiAJICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCiAJICAgICAgc29uYW1lPSIkZGxuYW1lIgogCSAgICBlbGlmIHRlc3QgLW4gIiRzb25hbWVfc3BlYyI7IHRoZW4KIAkgICAgICAjIGJsZWggd2luZG93cwogCSAgICAgIGNhc2UgJGhvc3QgaW4KLQkgICAgICAqY3lnd2luKiB8IG1pbmd3KikKLQkJbWFqb3I9YGV4cHIgJGN1cnJlbnQgLSAkYWdlYAorCSAgICAgICpjeWd3aW4qIHwgbWluZ3cqIHwgKmNlZ2NjKikKKwkgICAgICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCisJCW1ham9yPSRmdW5jX2FyaXRoX3Jlc3VsdAogCQl2ZXJzdWZmaXg9Ii0kbWFqb3IiCiAJCTs7CiAJICAgICAgZXNhYwpAQCAtMjY2NiwzNiArNTYzOSwyMiBAQAogCiAJICAgICMgTWFrZSBhIG5ldyBuYW1lIGZvciB0aGUgZXh0cmFjdF9leHBzeW1zX2NtZHMgdG8gdXNlCiAJICAgIHNvcm9vdD0iJHNvbmFtZSIKLQkgICAgc29uYW1lPWAkZWNobyAkc29yb290IHwgJHtTRUR9IC1lICdzL14uKlwvLy8nYAotCSAgICBuZXdsaWI9ImxpYmltcC1gJGVjaG8gJHNvbmFtZSB8ICR7U0VEfSAncy9ebGliLy87cy9cLmRsbCQvLydgLmEiCisJICAgIGZ1bmNfYmFzZW5hbWUgIiRzb3Jvb3QiCisJICAgIHNvbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgICBmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmRsbCcgIiRzb25hbWUiCisJICAgIG5ld2xpYj1saWJpbXAtJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC5hCiAKIAkgICAgIyBJZiB0aGUgbGlicmFyeSBoYXMgbm8gZXhwb3J0IGxpc3QsIHRoZW4gY3JlYXRlIG9uZSBub3cKIAkgICAgaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHNvbmFtZS1kZWYiOyB0aGVuIDoKIAkgICAgZWxzZQotCSAgICAgICRzaG93ICJleHRyYWN0aW5nIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gXGAkc29uYW1lJyIKLQkgICAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLQkgICAgICBjbWRzPSRleHRyYWN0X2V4cHN5bXNfY21kcwotCSAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0JCUlGUz0iJHNhdmVfaWZzIgotCQlldmFsIGNtZD1cIiRjbWRcIgotCQkkc2hvdyAiJGNtZCIKLQkJJHJ1biBldmFsICIkY21kIiB8fCBleGl0ICQ/Ci0JICAgICAgZG9uZQotCSAgICAgIElGUz0iJHNhdmVfaWZzIgorCSAgICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBleHBvcnRlZCBzeW1ib2wgbGlzdCBmcm9tIFxgJHNvbmFtZSciCisJICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRleHRyYWN0X2V4cHN5bXNfY21kcyIgJ2V4aXQgJD8nCiAJICAgIGZpCiAKIAkgICAgIyBDcmVhdGUgJG5ld2xpYgogCSAgICBpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8kbmV3bGliIjsgdGhlbiA6OyBlbHNlCi0JICAgICAgJHNob3cgImdlbmVyYXRpbmcgaW1wb3J0IGxpYnJhcnkgZm9yIFxgJHNvbmFtZSciCi0JICAgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0JICAgICAgY21kcz0kb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMKLQkgICAgICBmb3IgY21kIGluICRjbWRzOyBkbwotCQlJRlM9IiRzYXZlX2lmcyIKLQkJZXZhbCBjbWQ9XCIkY21kXCIKLQkJJHNob3cgIiRjbWQiCi0JCSRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPwotCSAgICAgIGRvbmUKLQkgICAgICBJRlM9IiRzYXZlX2lmcyIKKwkgICAgICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgaW1wb3J0IGxpYnJhcnkgZm9yIFxgJHNvbmFtZSciCisJICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIgJ2V4aXQgJD8nCiAJICAgIGZpCiAJICAgICMgbWFrZSBzdXJlIHRoZSBsaWJyYXJ5IHZhcmlhYmxlcyBhcmUgcG9pbnRpbmcgdG8gdGhlIG5ldyBsaWJyYXJ5CiAJICAgIGRpcj0kb3V0cHV0X29iamRpcgpAQCAtMjcxNywxNyArNTY3NiwyMSBAQAogCQkgICotKi1zeXN2NU9wZW5VTklYKiB8ICotKi1zeXN2NVVuaXhXYXJlNy5bMDFdLlsxMF0qIHwgXAogCQkgICAgKi0qLXVuaXh3YXJlNyopIGFkZF9kaXI9Ii1MJGRpciIgOzsKIAkJICAqLSotZGFyd2luKiApCi0JCSAgICAjIGlmIHRoZSBsaWIgaXMgYSBtb2R1bGUgdGhlbiB3ZSBjYW4gbm90IGxpbmsgYWdhaW5zdAotCQkgICAgIyBpdCwgc29tZW9uZSBpcyBpZ25vcmluZyB0aGUgbmV3IHdhcm5pbmdzIEkgYWRkZWQKKwkJICAgICMgaWYgdGhlIGxpYiBpcyBhIChub24tZGxvcGVuZWQpIG1vZHVsZSB0aGVuIHdlIGNhbiBub3QKKwkJICAgICMgbGluayBhZ2FpbnN0IGl0LCBzb21lb25lIGlzIGlnbm9yaW5nIHRoZSBlYXJsaWVyIHdhcm5pbmdzCiAJCSAgICBpZiAvdXNyL2Jpbi9maWxlIC1MICRhZGQgMj4gL2Rldi9udWxsIHwKLSAgICAgICAgICAgICAgICAgICAgICAkRUdSRVAgIjogW146XSogYnVuZGxlIiA+L2Rldi9udWxsIDsgdGhlbgotCQkgICAgICAkZWNobyAiKiogV2FybmluZywgbGliICRsaW5rbGliIGlzIGEgbW9kdWxlLCBub3QgYSBzaGFyZWQgbGlicmFyeSIKLQkJICAgICAgaWYgdGVzdCAteiAiJG9sZF9saWJyYXJ5IiA7IHRoZW4KLQkJICAgICAgICAkZWNobwotCQkgICAgICAgICRlY2hvICIqKiBBbmQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgc3RhdGljIGFyY2hpdmUgYXZhaWxhYmxlIgotCQkgICAgICAgICRlY2hvICIqKiBUaGUgbGluayB3aWxsIHByb2JhYmx5IGZhaWwsIHNvcnJ5IgotCQkgICAgICBlbHNlCi0JCSAgICAgICAgYWRkPSIkZGlyLyRvbGRfbGlicmFyeSIKKwkJCSAkR1JFUCAiOiBbXjpdKiBidW5kbGUiID4vZGV2L251bGwgOyB0aGVuCisJCSAgICAgIGlmIHRlc3QgIlgkZGxvcGVubW9kdWxlIiAhPSAiWCRsaWIiOyB0aGVuCisJCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpYiAkbGlua2xpYiBpcyBhIG1vZHVsZSwgbm90IGEgc2hhcmVkIGxpYnJhcnkiCisJCQlpZiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiIDsgdGhlbgorCQkJICAkRUNITworCQkJICAkRUNITyAiKioqIEFuZCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBzdGF0aWMgYXJjaGl2ZSBhdmFpbGFibGUiCisJCQkgICRFQ0hPICIqKiogVGhlIGxpbmsgd2lsbCBwcm9iYWJseSBmYWlsLCBzb3JyeSIKKwkJCWVsc2UKKwkJCSAgYWRkPSIkZGlyLyRvbGRfbGlicmFyeSIKKwkJCWZpCisJCSAgICAgIGVsaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorCQkJYWRkPSIkZGlyLyRvbGRfbGlicmFyeSIKIAkJICAgICAgZmkKIAkJICAgIGZpCiAJCWVzYWMKQEAgLTI3NDUsNyArNTcwOCw4IEBACiAJICAgICAgZmkKIAkgICAgICA7OwogCSAgICByZWxpbmspCi0JICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgPSB5ZXM7IHRoZW4KKwkgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiA9IHllcyAmJgorCSAgICAgICAgIHRlc3QgIiRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiID0gbm87IHRoZW4KIAkJYWRkPSIkZGlyLyRsaW5rbGliIgogCSAgICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiID0geWVzOyB0aGVuCiAJCWFkZF9kaXI9Ii1MJGRpciIKQEAgLTI3NjksOCArNTczMyw3IEBACiAJICAgIGVzYWMKIAogCSAgICBpZiB0ZXN0ICIkbGliX2xpbmtlZCIgIT0geWVzOyB0aGVuCi0JICAgICAgJGVjaG8gIiRtb2RlbmFtZTogY29uZmlndXJhdGlvbiBlcnJvcjogdW5zdXBwb3J0ZWQgaGFyZGNvZGUgcHJvcGVydGllcyIKLQkgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gInVuc3VwcG9ydGVkIGhhcmRjb2RlIHByb3BlcnRpZXMiCiAJICAgIGZpCiAKIAkgICAgaWYgdGVzdCAtbiAiJGFkZF9zaGxpYnBhdGgiOyB0aGVuCkBAIC0yNzg1LDggKzU3NDgsOCBAQAogCSAgICBlbHNlCiAJICAgICAgdGVzdCAtbiAiJGFkZF9kaXIiICYmIGRlcGxpYnM9IiRhZGRfZGlyICRkZXBsaWJzIgogCSAgICAgIHRlc3QgLW4gIiRhZGQiICYmIGRlcGxpYnM9IiRhZGQgJGRlcGxpYnMiCi0JICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgIT0geWVzICYmIFwKLQkJIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiAhPSB5ZXMgJiYgXAorCSAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiICE9IHllcyAmJgorCQkgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiICE9IHllcyAmJgogCQkgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCiAJCWNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCiAJCSoiOiRsaWJkaXI6IiopIDs7CkBAIC0yODAxLDcgKzU3NjQsOCBAQAogCSAgICBhZGRfZGlyPQogCSAgICBhZGQ9CiAJICAgICMgRmluYWxpemUgY29tbWFuZCBmb3IgYm90aCBpcyBzaW1wbGU6IGp1c3QgaGFyZGNvZGUgaXQuCi0JICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiID0geWVzOyB0aGVuCisJICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiID0geWVzICYmCisJICAgICAgIHRlc3QgIiRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiID0gbm87IHRoZW4KIAkgICAgICBhZGQ9IiRsaWJkaXIvJGxpbmtsaWIiCiAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiID0geWVzOyB0aGVuCiAJICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgpAQCAtMjgxNSw5ICs1Nzc5LDkgQEAKIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllczsgdGhlbgogCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiICYmCiAJCSB0ZXN0IC1mICIkaW5zdF9wcmVmaXhfZGlyJGxpYmRpci8kbGlua2xpYiIgOyB0aGVuCi0JICAgICAgICBhZGQ9IiRpbnN0X3ByZWZpeF9kaXIkbGliZGlyLyRsaW5rbGliIgorCQlhZGQ9IiRpbnN0X3ByZWZpeF9kaXIkbGliZGlyLyRsaW5rbGliIgogCSAgICAgIGVsc2UKLQkgICAgICAgIGFkZD0iJGxpYmRpci8kbGlua2xpYiIKKwkJYWRkPSIkbGliZGlyLyRsaW5rbGliIgogCSAgICAgIGZpCiAJICAgIGVsc2UKIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgpAQCAtMjg2MSwyMSArNTgyNSwyMSBAQAogCiAJICAgICMgSnVzdCBwcmludCBhIHdhcm5pbmcgYW5kIGFkZCB0aGUgbGlicmFyeSB0byBkZXBlbmRlbmN5X2xpYnMgc28KIAkgICAgIyB0aGF0IHRoZSBwcm9ncmFtIGNhbiBiZSBsaW5rZWQgYWdhaW5zdCB0aGUgc3RhdGljIGxpYnJhcnkuCi0JICAgICRlY2hvCi0JICAgICRlY2hvICIqKiogV2FybmluZzogVGhpcyBzeXN0ZW0gY2FuIG5vdCBsaW5rIHRvIHN0YXRpYyBsaWIgYXJjaGl2ZSAkbGliLiIKLQkgICAgJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JICAgICRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCSAgICAkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlLiIKKwkgICAgJEVDSE8KKwkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBUaGlzIHN5c3RlbSBjYW4gbm90IGxpbmsgdG8gc3RhdGljIGxpYiBhcmNoaXZlICRsaWIuIgorCSAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkgICAgJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJICAgICRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUuIgogCSAgICBpZiB0ZXN0ICIkbW9kdWxlIiA9IHllczsgdGhlbgotCSAgICAgICRlY2hvICIqKiogQnV0IGFzIHlvdSB0cnkgdG8gYnVpbGQgYSBtb2R1bGUgbGlicmFyeSwgbGlidG9vbCB3aWxsIHN0aWxsIGNyZWF0ZSAiCi0JICAgICAgJGVjaG8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIGFwcGxpY2F0aW9uIgotCSAgICAgICRlY2hvICIqKiogaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZyB0byByZXNvbHZlIHN5bWJvbHMgYXQgcnVudGltZS4iCisJICAgICAgJEVDSE8gIioqKiBCdXQgYXMgeW91IHRyeSB0byBidWlsZCBhIG1vZHVsZSBsaWJyYXJ5LCBsaWJ0b29sIHdpbGwgc3RpbGwgY3JlYXRlICIKKwkgICAgICAkRUNITyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmcgYXBwbGljYXRpb24iCisJICAgICAgJEVDSE8gIioqKiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnIHRvIHJlc29sdmUgc3ltYm9scyBhdCBydW50aW1lLiIKIAkgICAgICBpZiB0ZXN0IC16ICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgotCQkkZWNobwotCQkkZWNobyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCi0JCSRlY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgotCQkkZWNobyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgotCQkkZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCisJCSRFQ0hPCisJCSRFQ0hPICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKKwkJJEVDSE8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCisJCSRFQ0hPICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJCSRFQ0hPICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCkBAIC0yODk5LDcgKzU4NjMsOCBAQAogCSAgICB0ZW1wX2RlcGxpYnM9CiAJICAgIGZvciBsaWJkaXIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgICBjYXNlICRsaWJkaXIgaW4KLQkgICAgICAtUiopIHRlbXBfeHJwYXRoPWAkZWNobyAiWCRsaWJkaXIiIHwgJFhzZWQgLWUgJ3MvXi1SLy8nYAorCSAgICAgIC1SKikgZnVuY19zdHJpcG5hbWUgJy1SJyAnJyAiJGxpYmRpciIKKwkgICAgICAgICAgIHRlbXBfeHJwYXRoPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkJICAgY2FzZSAiICR4cnBhdGggIiBpbgogCQkgICAqIiAkdGVtcF94cnBhdGggIiopIDs7CiAJCSAgICopIHhycGF0aD0iJHhycGF0aCAkdGVtcF94cnBhdGgiOzsKQEAgLTI5MTcsNyArNTg4Miw3IEBACiAJICB0bXBfbGlicz0KIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0JICAgIGlmIHRlc3QgIlgkZHVwbGljYXRlX2RlcHMiID0gIlh5ZXMiIDsgdGhlbgorCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgogCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCiAJICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKQEAgLTI5MzEsOTQgKzU4OTYsNzEgQEAKIAkgICAgICBjYXNlICRkZXBsaWIgaW4KIAkgICAgICAtTCopIHBhdGg9IiRkZXBsaWIiIDs7CiAJICAgICAgKi5sYSkKLQkJZGlyPWAkZWNobyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQkJdGVzdCAiWCRkaXIiID0gIlgkZGVwbGliIiAmJiBkaXI9Ii4iCisJICAgICAgICBmdW5jX2Rpcm5hbWUgIiRkZXBsaWIiICIiICIuIgorCQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogCQkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAkJY2FzZSAkZGlyIGluCiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzZGlyPSIkZGlyIiA7OwogCQkqKQogCQkgIGFic2Rpcj1gY2QgIiRkaXIiICYmIHB3ZGAKIAkJICBpZiB0ZXN0IC16ICIkYWJzZGlyIjsgdGhlbgotCQkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogY2Fubm90IGRldGVybWluZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBvZiBcYCRkaXInIiAxPiYyCisJCSAgICBmdW5jX3dhcm5pbmcgImNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgXGAkZGlyJyIKIAkJICAgIGFic2Rpcj0iJGRpciIKIAkJICBmaQogCQkgIDs7CiAJCWVzYWMKLQkJaWYgZ3JlcCAiXmluc3RhbGxlZD1ubyIgJGRlcGxpYiA+IC9kZXYvbnVsbDsgdGhlbgotCQkgIHBhdGg9IiRhYnNkaXIvJG9iamRpciIKLQkJZWxzZQotCQkgIGV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0JCSAgaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KLQkJICAgICRlY2hvICIkbW9kZW5hbWU6IFxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIiAxPiYyCi0JCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkJICBmaQotCQkgIGlmIHRlc3QgIiRhYnNkaXIiICE9ICIkbGliZGlyIjsgdGhlbgotCQkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAkZGVwbGliJyBzZWVtcyB0byBiZSBtb3ZlZCIgMT4mMgotCQkgIGZpCi0JCSAgcGF0aD0iJGFic2RpciIKLQkJZmkKLQkJZGVwZGVwbD0KKwkJaWYgJEdSRVAgIl5pbnN0YWxsZWQ9bm8iICRkZXBsaWIgPiAvZGV2L251bGw7IHRoZW4KIAkJY2FzZSAkaG9zdCBpbgogCQkqLSotZGFyd2luKikKLQkJICAjIHdlIGRvIG5vdCB3YW50IHRvIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicywKLQkJICAjIGJ1dCBuZWVkIHRvIGxpbmsgYWdhaW5zdCBzaGFyZWQKKwkJICBkZXBkZXBsPQogCQkgIGV2YWwgZGVwbGlicmFyeV9uYW1lcz1gJHtTRUR9IC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLQkJICBldmFsIGRlcGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAogCQkgIGlmIHRlc3QgLW4gIiRkZXBsaWJyYXJ5X25hbWVzIiA7IHRoZW4KIAkJICAgIGZvciB0bXAgaW4gJGRlcGxpYnJhcnlfbmFtZXMgOyBkbwogCQkgICAgICBkZXBkZXBsPSR0bXAKIAkJICAgIGRvbmUKLQkJICAgIGlmIHRlc3QgLWYgIiRkZXBsaWJkaXIvJGRlcGRlcGwiIDsgdGhlbgotCQkgICAgICBkZXBkZXBsPSIkZGVwbGliZGlyLyRkZXBkZXBsIgotCSAgICAgIAkgICAgZWxpZiB0ZXN0IC1mICIkcGF0aC8kZGVwZGVwbCIgOyB0aGVuCi0JCSAgICAgIGRlcGRlcGw9IiRwYXRoLyRkZXBkZXBsIgotCQkgICAgZWxzZQotCQkgICAgICAjIENhbid0IGZpbmQgaXQsIG9oIHdlbGwuLi4KLQkJICAgICAgZGVwZGVwbD0KKwkJICAgIGlmIHRlc3QgLWYgIiRhYnNkaXIvJG9iamRpci8kZGVwZGVwbCIgOyB0aGVuCisJCSAgICAgIGRlcGRlcGw9IiRhYnNkaXIvJG9iamRpci8kZGVwZGVwbCIKKwkJICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJHtPVE9PTH0gLUwgJGRlcGRlcGwgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGRhcndpbl9pbnN0YWxsX25hbWUiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0w2NH0gLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAorICAgICAgICAgICAgICAgICAgICAgIGZpCisJCSAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKwkJICAgICAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKwkJICAgICAgcGF0aD0KIAkJICAgIGZpCi0JCSAgICAjIGRvIG5vdCBhZGQgcGF0aHMgd2hpY2ggYXJlIGFscmVhZHkgdGhlcmUKLQkJICAgIGNhc2UgIiAkbmV3bGliX3NlYXJjaF9wYXRoICIgaW4KLQkJICAgICoiICRwYXRoICIqKSA7OwotCQkgICAgKikgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRwYXRoIjs7Ci0JCSAgICBlc2FjCiAJCSAgZmkKLQkJICBwYXRoPSIiCiAJCSAgOzsKIAkJKikKLQkJICBwYXRoPSItTCRwYXRoIgorCQkgIHBhdGg9Ii1MJGFic2Rpci8kb2JqZGlyIgogCQkgIDs7CiAJCWVzYWMKKwkJZWxzZQorCQkgIGV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisJCSAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorCQkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJCSAgdGVzdCAiJGFic2RpciIgIT0gIiRsaWJkaXIiICYmIFwKKwkJICAgIGZ1bmNfd2FybmluZyAiXGAkZGVwbGliJyBzZWVtcyB0byBiZSBtb3ZlZCIKKworCQkgIHBhdGg9Ii1MJGFic2RpciIKKwkJZmkKIAkJOzsKLQkgICAgICAtbCopCi0JCWNhc2UgJGhvc3QgaW4KLQkJKi0qLWRhcndpbiopCi0JCSAgIyBBZ2Fpbiwgd2Ugb25seSB3YW50IHRvIGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyaWVzCi0JCSAgZXZhbCB0bXBfbGlicz1gJGVjaG8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICJzLF5cLWwsLCJgCi0JCSAgZm9yIHRtcCBpbiAkbmV3bGliX3NlYXJjaF9wYXRoIDsgZG8KLQkJICAgIGlmIHRlc3QgLWYgIiR0bXAvbGliJHRtcF9saWJzLmR5bGliIiA7IHRoZW4KLQkJICAgICAgZXZhbCBkZXBkZXBsPSIkdG1wL2xpYiR0bXBfbGlicy5keWxpYiIKLQkJICAgICAgYnJlYWsKLQkJICAgIGZpCi0JCSAgZG9uZQotCQkgIHBhdGg9IiIKLQkJICA7OwotCQkqKSBjb250aW51ZSA7OwotCQllc2FjCi0JCTs7Ci0JICAgICAgKikgY29udGludWUgOzsKIAkgICAgICBlc2FjCiAJICAgICAgY2FzZSAiICRkZXBsaWJzICIgaW4KIAkgICAgICAqIiAkcGF0aCAiKikgOzsKIAkgICAgICAqKSBkZXBsaWJzPSIkcGF0aCAkZGVwbGlicyIgOzsKIAkgICAgICBlc2FjCi0JICAgICAgY2FzZSAiICRkZXBsaWJzICIgaW4KLQkgICAgICAqIiAkZGVwZGVwbCAiKikgOzsKLQkgICAgICAqKSBkZXBsaWJzPSIkZGVwZGVwbCAkZGVwbGlicyIgOzsKLQkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgIGZpICMgbGlua19hbGxfZGVwbGlicyAhPSBubwogCWZpICMgbGlua21vZGUgPSBsaWIKICAgICAgIGRvbmUgIyBmb3IgZGVwbGliIGluICRsaWJzCisgICAgICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCisJaWYgdGVzdCAiJGxpbmttb2RlIiA9ICJwcm9nIjsgdGhlbgorCSAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGNvbXBpbGVfZGVwbGlicyIKKwkgIGZpbmFsaXplX2RlcGxpYnM9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZmluYWxpemVfZGVwbGlicyIKKwllbHNlCisJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICJgJEVDSE8gIlggJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCWZpCisgICAgICBmaQogICAgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgogICAgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuOyB0aGVuCiAJIyBMaW5rIHRoZSBkbHByZW9wZW5lZCBsaWJyYXJpZXMgYmVmb3JlIG90aGVyIGxpYnJhcmllcwpAQCAtMzExNywzOSArNjA1OSwzNiBAQAogICAgIGRvbmUgIyBmb3IgcGFzcwogICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCiAgICAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKKyAgICBmaQorICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KICAgICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgogICAgIGZpCiAKICAgICBjYXNlICRsaW5rbW9kZSBpbgogICAgIG9sZGxpYikKKyAgICAgIGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCisJZnVuY193YXJuaW5nICJcYC1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgorICAgICAgZmkKKwogICAgICAgY2FzZSAiICRkZXBsaWJzIiBpbgogICAgICAgKlwgLWwqIHwgKlwgLUwqKQotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLWwnIGFuZCBcYC1MJyBhcmUgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIgOzsKKwlmdW5jX3dhcm5pbmcgIlxgLWwnIGFuZCBcYC1MJyBhcmUgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDs7CiAgICAgICBlc2FjCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtZGxvcGVuJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIgMT4mMgotICAgICAgZmkKKyAgICAgIHRlc3QgLW4gIiRycGF0aCIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtcnBhdGgnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgogCi0gICAgICBpZiB0ZXN0IC1uICIkcnBhdGgiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcnBhdGgnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIiAxPiYyCi0gICAgICBmaQorICAgICAgdGVzdCAtbiAiJHhycGF0aCIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtUicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCiAKLSAgICAgIGlmIHRlc3QgLW4gIiR4cnBhdGgiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtUicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkdmluZm8iICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLXZlcnNpb24taW5mby8tdmVyc2lvbi1udW1iZXInIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgogCi0gICAgICBpZiB0ZXN0IC1uICIkdmluZm8iOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtdmVyc2lvbi1pbmZvLy12ZXJzaW9uLW51bWJlcicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkcmVsZWFzZSIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRyZWxlYXNlIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIiAxPiYyCi0gICAgICBmaQotCi0gICAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiIHx8IHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1leHBvcnQtc3ltYm9scycgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLWV4cG9ydC1zeW1ib2xzJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKIAogICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCiAgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KQEAgLTMxNjEsNDggKzYxMDAsNDggQEAKICAgICAgICMgTWFrZSBzdXJlIHdlIG9ubHkgZ2VuZXJhdGUgbGlicmFyaWVzIG9mIHRoZSBmb3JtIGBsaWJOQU1FLmxhJy4KICAgICAgIGNhc2UgJG91dHB1dG5hbWUgaW4KICAgICAgIGxpYiopCi0JbmFtZT1gJGVjaG8gIlgkb3V0cHV0bmFtZSIgfCAkWHNlZCAtZSAncy9cLmxhJC8vJyAtZSAncy9ebGliLy8nYAorCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkb3V0cHV0bmFtZSIKKwluYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgogCWV2YWwgbGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIgogCTs7CiAgICAgICAqKQotCWlmIHRlc3QgIiRtb2R1bGUiID0gbm87IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIG11c3QgYmVnaW4gd2l0aCBcYGxpYiciIDE+JjIKLQkgICRlY2hvICIkaGVscCIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JZmkKKwl0ZXN0ICIkbW9kdWxlIiA9IG5vICYmIFwKKwkgIGZ1bmNfZmF0YWxfaGVscCAibGlidG9vbCBsaWJyYXJ5IFxgJG91dHB1dCcgbXVzdCBiZWdpbiB3aXRoIFxgbGliJyIKKwogCWlmIHRlc3QgIiRuZWVkX2xpYl9wcmVmaXgiICE9IG5vOyB0aGVuCiAJICAjIEFkZCB0aGUgImxpYiIgcHJlZml4IGZvciBtb2R1bGVzIGlmIHJlcXVpcmVkCi0JICBuYW1lPWAkZWNobyAiWCRvdXRwdXRuYW1lIiB8ICRYc2VkIC1lICdzL1wubGEkLy8nYAorCSAgZnVuY19zdHJpcG5hbWUgJycgJy5sYScgIiRvdXRwdXRuYW1lIgorCSAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICBldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgogCSAgZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCiAJZWxzZQotCSAgbGlibmFtZT1gJGVjaG8gIlgkb3V0cHV0bmFtZSIgfCAkWHNlZCAtZSAncy9cLmxhJC8vJ2AKKwkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKKwkgIGxpYm5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCWZpCiAJOzsKICAgICAgIGVzYWMKIAogICAgICAgaWYgdGVzdCAtbiAiJG9ianMiOyB0aGVuCiAJaWYgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAhPSBwYXNzX2FsbDsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGJ1aWxkIGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyBvbiB0aGlzIGhvc3Q6JG9ianMiIDI+JjEKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGJ1aWxkIGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyBvbiB0aGlzIGhvc3Q6JG9ianMiCiAJZWxzZQotCSAgJGVjaG8KLQkgICRlY2hvICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBub24tbGlidG9vbCIKLQkgICRlY2hvICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgorCSAgJEVDSE8KKwkgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBub24tbGlidG9vbCIKKwkgICRFQ0hPICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgogCSAgbGlib2Jqcz0iJGxpYm9ianMgJG9ianMiCiAJZmkKICAgICAgIGZpCiAKLSAgICAgIGlmIHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtZGxvcGVuIHNlbGYnIGlzIGlnbm9yZWQgZm9yIGxpYnRvb2wgbGlicmFyaWVzIiAxPiYyCi0gICAgICBmaQorICAgICAgdGVzdCAiJGRsc2VsZiIgIT0gbm8gJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtZGxvcGVuIHNlbGYnIGlzIGlnbm9yZWQgZm9yIGxpYnRvb2wgbGlicmFyaWVzIgogCiAgICAgICBzZXQgZHVtbXkgJHJwYXRoCi0gICAgICBpZiB0ZXN0ICIkIyIgLWd0IDI7IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIgMT4mMgotICAgICAgZmkKLSAgICAgIGluc3RhbGxfbGliZGlyPSIkMiIKKyAgICAgIHNoaWZ0CisgICAgICB0ZXN0ICIkIyIgLWd0IDEgJiYgXAorCWZ1bmNfd2FybmluZyAiaWdub3JpbmcgbXVsdGlwbGUgXGAtcnBhdGgncyBmb3IgYSBsaWJ0b29sIGxpYnJhcnkiCisKKyAgICAgIGluc3RhbGxfbGliZGlyPSIkMSIKIAogICAgICAgb2xkbGlicz0KICAgICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KQEAgLTMyMTYsMjUgKzYxNTUsMjEgQEAKIAkgIGJ1aWxkX29sZF9saWJzPXllcwogCWZpCiAKLQlpZiB0ZXN0IC1uICIkdmluZm8iOyB0aGVuCi0JICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC12ZXJzaW9uLWluZm8vLXZlcnNpb24tbnVtYmVyJyBpcyBpZ25vcmVkIGZvciBjb252ZW5pZW5jZSBsaWJyYXJpZXMiIDE+JjIKLQlmaQorCXRlc3QgLW4gIiR2aW5mbyIgJiYgXAorCSAgZnVuY193YXJuaW5nICJcYC12ZXJzaW9uLWluZm8vLXZlcnNpb24tbnVtYmVyJyBpcyBpZ25vcmVkIGZvciBjb252ZW5pZW5jZSBsaWJyYXJpZXMiCiAKLQlpZiB0ZXN0IC1uICIkcmVsZWFzZSI7IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIGNvbnZlbmllbmNlIGxpYnJhcmllcyIgMT4mMgotCWZpCisJdGVzdCAtbiAiJHJlbGVhc2UiICYmIFwKKwkgIGZ1bmNfd2FybmluZyAiXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgY29udmVuaWVuY2UgbGlicmFyaWVzIgogICAgICAgZWxzZQogCiAJIyBQYXJzZSB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBhcmd1bWVudC4KIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nOicKIAlzZXQgZHVtbXkgJHZpbmZvIDAgMCAwCisJc2hpZnQKIAlJRlM9IiRzYXZlX2lmcyIKIAotCWlmIHRlc3QgLW4gIiQ4IjsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogdG9vIG1hbnkgcGFyYW1ldGVycyB0byBcYC12ZXJzaW9uLWluZm8nIiAxPiYyCi0JICAkZWNobyAiJGhlbHAiIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotCWZpCisJdGVzdCAtbiAiJDciICYmIFwKKwkgIGZ1bmNfZmF0YWxfaGVscCAidG9vIG1hbnkgcGFyYW1ldGVycyB0byBcYC12ZXJzaW9uLWluZm8nIgogCiAJIyBjb252ZXJ0IGFic29sdXRlIHZlcnNpb24gbnVtYmVycyB0byBsaWJ0b29sIGFnZXMKIAkjIHRoaXMgcmV0YWlucyBjb21wYXRpYmlsaXR5IHdpdGggLmxhIGZpbGVzIGFuZCBhdHRlbXB0cwpAQCAtMzI0Miw5ICs2MTc3LDkgQEAKIAogCWNhc2UgJHZpbmZvX251bWJlciBpbgogCXllcykKLQkgIG51bWJlcl9tYWpvcj0iJDIiCi0JICBudW1iZXJfbWlub3I9IiQzIgotCSAgbnVtYmVyX3JldmlzaW9uPSIkNCIKKwkgIG51bWJlcl9tYWpvcj0iJDEiCisJICBudW1iZXJfbWlub3I9IiQyIgorCSAgbnVtYmVyX3JldmlzaW9uPSIkMyIKIAkgICMKIAkgICMgVGhlcmUgYXJlIHJlYWxseSBvbmx5IHR3byBraW5kcyAtLSB0aG9zZSB0aGF0CiAJICAjIHVzZSB0aGUgY3VycmVudCByZXZpc2lvbiBhcyB0aGUgbWFqb3IgdmVyc2lvbgpAQCAtMzI1NCw3ICs2MTg5LDggQEAKIAkgICMKIAkgIGNhc2UgJHZlcnNpb25fdHlwZSBpbgogCSAgZGFyd2lufGxpbnV4fG9zZnx3aW5kb3dzfG5vbmUpCi0JICAgIGN1cnJlbnQ9YGV4cHIgJG51bWJlcl9tYWpvciArICRudW1iZXJfbWlub3JgCisJICAgIGZ1bmNfYXJpdGggJG51bWJlcl9tYWpvciArICRudW1iZXJfbWlub3IKKwkgICAgY3VycmVudD0kZnVuY19hcml0aF9yZXN1bHQKIAkgICAgYWdlPSIkbnVtYmVyX21pbm9yIgogCSAgICByZXZpc2lvbj0iJG51bWJlcl9yZXZpc2lvbiIKIAkgICAgOzsKQEAgLTMyNjQsNyArNjIwMCw4IEBACiAJICAgIGFnZT0iMCIKIAkgICAgOzsKIAkgIGlyaXh8bm9uc3RvcHV4KQotCSAgICBjdXJyZW50PWBleHByICRudW1iZXJfbWFqb3IgKyAkbnVtYmVyX21pbm9yYAorCSAgICBmdW5jX2FyaXRoICRudW1iZXJfbWFqb3IgKyAkbnVtYmVyX21pbm9yCisJICAgIGN1cnJlbnQ9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJICAgIGFnZT0iJG51bWJlcl9taW5vciIKIAkgICAgcmV2aXNpb249IiRudW1iZXJfbWlub3IiCiAJICAgIGx0X2lyaXhfaW5jcmVtZW50PW5vCkBAIC0zMjcyLDkgKzYyMDksOSBAQAogCSAgZXNhYwogCSAgOzsKIAlubykKLQkgIGN1cnJlbnQ9IiQyIgotCSAgcmV2aXNpb249IiQzIgotCSAgYWdlPSIkNCIKKwkgIGN1cnJlbnQ9IiQxIgorCSAgcmV2aXNpb249IiQyIgorCSAgYWdlPSIkMyIKIAkgIDs7CiAJZXNhYwogCkBAIC0zMjgyLDM0ICs2MjE5LDMwIEBACiAJY2FzZSAkY3VycmVudCBpbgogCTB8WzEtOV18WzEtOV1bMC05XXxbMS05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV1bMC05XSkgOzsKIAkqKQotCSAgJGVjaG8gIiRtb2RlbmFtZTogQ1VSUkVOVCBcYCRjdXJyZW50JyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIgMT4mMgotCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkdmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZ1bmNfZXJyb3IgIkNVUlJFTlQgXGAkY3VycmVudCcgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiCisJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iCiAJICA7OwogCWVzYWMKIAogCWNhc2UgJHJldmlzaW9uIGluCiAJMHxbMS05XXxbMS05XVswLTldfFsxLTldWzAtOV1bMC05XXxbMS05XVswLTldWzAtOV1bMC05XXxbMS05XVswLTldWzAtOV1bMC05XVswLTldKSA7OwogCSopCi0JICAkZWNobyAiJG1vZGVuYW1lOiBSRVZJU0lPTiBcYCRyZXZpc2lvbicgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiIDE+JjIKLQkgICRlY2hvICIkbW9kZW5hbWU6IFxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmdW5jX2Vycm9yICJSRVZJU0lPTiBcYCRyZXZpc2lvbicgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiCisJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iCiAJICA7OwogCWVzYWMKIAogCWNhc2UgJGFnZSBpbgogCTB8WzEtOV18WzEtOV1bMC05XXxbMS05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV1bMC05XSkgOzsKIAkqKQotCSAgJGVjaG8gIiRtb2RlbmFtZTogQUdFIFxgJGFnZScgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiIDE+JjIKLQkgICRlY2hvICIkbW9kZW5hbWU6IFxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmdW5jX2Vycm9yICJBR0UgXGAkYWdlJyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKIAkgIDs7CiAJZXNhYwogCiAJaWYgdGVzdCAiJGFnZSIgLWd0ICIkY3VycmVudCI7IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IEFHRSBcYCRhZ2UnIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBpbnRlcmZhY2UgbnVtYmVyIFxgJGN1cnJlbnQnIiAxPiYyCi0JICAkZWNobyAiJG1vZGVuYW1lOiBcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19lcnJvciAiQUdFIFxgJGFnZScgaXMgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IGludGVyZmFjZSBudW1iZXIgXGAkY3VycmVudCciCisJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iCiAJZmkKIAogCSMgQ2FsY3VsYXRlIHRoZSB2ZXJzaW9uIHZhcmlhYmxlcy4KQEAgLTMzMjIsMTAgKzYyNTUsMTIgQEAKIAlkYXJ3aW4pCiAJICAjIExpa2UgTGludXgsIGJ1dCB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24gYXZhaWxhYmxlIGluCiAJICAjIHZlcnN0cmluZyBmb3IgY29kaW5nIGl0IGludG8gdGhlIGxpYnJhcnkgaGVhZGVyCi0JICBtYWpvcj0uYGV4cHIgJGN1cnJlbnQgLSAkYWdlYAorCSAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKKwkgIG1ham9yPS4kZnVuY19hcml0aF9yZXN1bHQKIAkgIHZlcnN1ZmZpeD0iJG1ham9yLiRhZ2UuJHJldmlzaW9uIgogCSAgIyBEYXJ3aW4gbGQgZG9lc24ndCBsaWtlIDAgZm9yIHRoZXNlIG9wdGlvbnMuLi4KLQkgIG1pbm9yX2N1cnJlbnQ9YGV4cHIgJGN1cnJlbnQgKyAxYAorCSAgZnVuY19hcml0aCAkY3VycmVudCArIDEKKwkgIG1pbm9yX2N1cnJlbnQ9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJICB4bGN2ZXJzdHJpbmc9IiR7d2x9LWNvbXBhdGliaWxpdHlfdmVyc2lvbiAke3dsfSRtaW5vcl9jdXJyZW50ICR7d2x9LWN1cnJlbnRfdmVyc2lvbiAke3dsfSRtaW5vcl9jdXJyZW50LiRyZXZpc2lvbiIKIAkgIHZlcnN0cmluZz0iLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkbWlub3JfY3VycmVudCAtY3VycmVudF92ZXJzaW9uICRtaW5vcl9jdXJyZW50LiRyZXZpc2lvbiIKIAkgIDs7CkBAIC0zMzM3LDE1ICs2MjcyLDE3IEBACiAKIAlmcmVlYnNkLWVsZikKIAkgIG1ham9yPSIuJGN1cnJlbnQiCi0JICB2ZXJzdWZmaXg9Ii4kY3VycmVudCI7CisJICB2ZXJzdWZmaXg9Ii4kY3VycmVudCIKIAkgIDs7CiAKIAlpcml4IHwgbm9uc3RvcHV4KQogCSAgaWYgdGVzdCAiWCRsdF9pcml4X2luY3JlbWVudCIgPSAiWG5vIjsgdGhlbgotCSAgICBtYWpvcj1gZXhwciAkY3VycmVudCAtICRhZ2VgCisJICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCiAJICBlbHNlCi0JICAgIG1ham9yPWBleHByICRjdXJyZW50IC0gJGFnZSArIDFgCisJICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlICsgMQogCSAgZmkKKwkgIG1ham9yPSRmdW5jX2FyaXRoX3Jlc3VsdAorCiAJICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KIAkgICAgbm9uc3RvcHV4KSB2ZXJzdHJpbmdfcHJlZml4PW5vbnN0b3B1eCA7OwogCSAgICAqKSAgICAgICAgIHZlcnN0cmluZ19wcmVmaXg9c2dpIDs7CkBAIC0zMzU1LDggKzYyOTIsMTAgQEAKIAkgICMgQWRkIGluIGFsbCB0aGUgaW50ZXJmYWNlcyB0aGF0IHdlIGFyZSBjb21wYXRpYmxlIHdpdGguCiAJICBsb29wPSRyZXZpc2lvbgogCSAgd2hpbGUgdGVzdCAiJGxvb3AiIC1uZSAwOyBkbwotCSAgICBpZmFjZT1gZXhwciAkcmV2aXNpb24gLSAkbG9vcGAKLQkgICAgbG9vcD1gZXhwciAkbG9vcCAtIDFgCisJICAgIGZ1bmNfYXJpdGggJHJldmlzaW9uIC0gJGxvb3AKKwkgICAgaWZhY2U9JGZ1bmNfYXJpdGhfcmVzdWx0CisJICAgIGZ1bmNfYXJpdGggJGxvb3AgLSAxCisJICAgIGxvb3A9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJICAgIHZlcnN0cmluZz0iJHZlcnN0cmluZ19wcmVmaXgkbWFqb3IuJGlmYWNlOiR2ZXJzdHJpbmciCiAJICBkb25lCiAKQEAgLTMzNjYsMjAgKzYzMDUsMjQgQEAKIAkgIDs7CiAKIAlsaW51eCkKLQkgIG1ham9yPS5gZXhwciAkY3VycmVudCAtICRhZ2VgCisJICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGFnZQorCSAgbWFqb3I9LiRmdW5jX2FyaXRoX3Jlc3VsdAogCSAgdmVyc3VmZml4PSIkbWFqb3IuJGFnZS4kcmV2aXNpb24iCiAJICA7OwogCiAJb3NmKQotCSAgbWFqb3I9LmBleHByICRjdXJyZW50IC0gJGFnZWAKKwkgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCisJICBtYWpvcj0uJGZ1bmNfYXJpdGhfcmVzdWx0CiAJICB2ZXJzdWZmaXg9Ii4kY3VycmVudC4kYWdlLiRyZXZpc2lvbiIKIAkgIHZlcnN0cmluZz0iJGN1cnJlbnQuJGFnZS4kcmV2aXNpb24iCiAKIAkgICMgQWRkIGluIGFsbCB0aGUgaW50ZXJmYWNlcyB0aGF0IHdlIGFyZSBjb21wYXRpYmxlIHdpdGguCiAJICBsb29wPSRhZ2UKIAkgIHdoaWxlIHRlc3QgIiRsb29wIiAtbmUgMDsgZG8KLQkgICAgaWZhY2U9YGV4cHIgJGN1cnJlbnQgLSAkbG9vcGAKLQkgICAgbG9vcD1gZXhwciAkbG9vcCAtIDFgCisJICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkbG9vcAorCSAgICBpZmFjZT0kZnVuY19hcml0aF9yZXN1bHQKKwkgICAgZnVuY19hcml0aCAkbG9vcCAtIDEKKwkgICAgbG9vcD0kZnVuY19hcml0aF9yZXN1bHQKIAkgICAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7aWZhY2V9LjAiCiAJICBkb25lCiAKQEAgLTMzODcsNiArNjMzMCwxMSBAQAogCSAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7Y3VycmVudH0uMCIKIAkgIDs7CiAKKwlxbngpCisJICBtYWpvcj0iLiRjdXJyZW50IgorCSAgdmVyc3VmZml4PSIuJGN1cnJlbnQiCisJICA7OworCiAJc3Vub3MpCiAJICBtYWpvcj0iLiRjdXJyZW50IgogCSAgdmVyc3VmZml4PSIuJGN1cnJlbnQuJHJldmlzaW9uIgpAQCAtMzM5NSwxNCArNjM0MywxMyBAQAogCXdpbmRvd3MpCiAJICAjIFVzZSAnLScgcmF0aGVyIHRoYW4gJy4nLCBzaW5jZSB3ZSBvbmx5IHdhbnQgb25lCiAJICAjIGV4dGVuc2lvbiBvbiBET1MgOC4zIGZpbGVzeXN0ZW1zLgotCSAgbWFqb3I9YGV4cHIgJGN1cnJlbnQgLSAkYWdlYAorCSAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKKwkgIG1ham9yPSRmdW5jX2FyaXRoX3Jlc3VsdAogCSAgdmVyc3VmZml4PSItJG1ham9yIgogCSAgOzsKIAogCSopCi0JICAkZWNobyAiJG1vZGVuYW1lOiB1bmtub3duIGxpYnJhcnkgdmVyc2lvbiB0eXBlIFxgJHZlcnNpb25fdHlwZSciIDE+JjIKLQkgICRlY2hvICJGYXRhbCBjb25maWd1cmF0aW9uIGVycm9yLiAgU2VlIHRoZSAkUEFDS0FHRSBkb2NzIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gInVua25vd24gbGlicmFyeSB2ZXJzaW9uIHR5cGUgXGAkdmVyc2lvbl90eXBlJyIKIAkgIDs7CiAJZXNhYwogCkBAIC0zNDM2LDcgKzYzODMsNyBAQAogCSMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBhcmNoaXZlIHdpbGwgaGF2ZSB1bmRlZmluZWQgc3ltYm9scy4KIAlpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkIiA9IHllczsgdGhlbgogCSAgaWYgdGVzdCAiJGFsbG93X3VuZGVmaW5lZF9mbGFnIiA9IHVuc3VwcG9ydGVkOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IHVuZGVmaW5lZCBzeW1ib2xzIG5vdCBhbGxvd2VkIGluICRob3N0IHNoYXJlZCBsaWJyYXJpZXMiIDE+JjIKKwkgICAgZnVuY193YXJuaW5nICJ1bmRlZmluZWQgc3ltYm9scyBub3QgYWxsb3dlZCBpbiAkaG9zdCBzaGFyZWQgbGlicmFyaWVzIgogCSAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KIAkgICAgYnVpbGRfb2xkX2xpYnM9eWVzCiAJICBmaQpAQCAtMzQ0NCwyMSArNjM5MSwyNiBAQAogCSAgIyBEb24ndCBhbGxvdyB1bmRlZmluZWQgc3ltYm9scy4KIAkgIGFsbG93X3VuZGVmaW5lZF9mbGFnPSIkbm9fdW5kZWZpbmVkX2ZsYWciCiAJZmkKKwogICAgICAgZmkKIAorICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRsaWJuYW1lIiAiJGxpYm5hbWUiICJ5ZXMiCisgICAgICBsaWJvYmpzPSIkbGlib2JqcyAkc3ltZmlsZW9iaiIKKyAgICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisKICAgICAgIGlmIHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KIAkjIFJlbW92ZSBvdXIgb3V0cHV0cywgYnV0IGRvbid0IHJlbW92ZSBvYmplY3QgZmlsZXMgc2luY2UgdGhleQogCSMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIFBJQyBvYmplY3RzLgogCXJlbW92ZWxpc3Q9Ci0JdGVtcHJlbW92ZWxpc3Q9YCRlY2hvICIkb3V0cHV0X29iamRpci8qImAKKwl0ZW1wcmVtb3ZlbGlzdD1gJEVDSE8gIiRvdXRwdXRfb2JqZGlyLyoiYAogCWZvciBwIGluICR0ZW1wcmVtb3ZlbGlzdDsgZG8KIAkgIGNhc2UgJHAgaW4KLQkgICAgKi4kb2JqZXh0KQorCSAgICAqLiRvYmpleHQgfCAqLmdjbm8pCiAJICAgICAgIDs7CiAJICAgICRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIHwgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuKiB8ICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0ke3JlbGVhc2V9LiopCiAJICAgICAgIGlmIHRlc3QgIlgkcHJlY2lvdXNfZmlsZXNfcmVnZXgiICE9ICJYIjsgdGhlbgotCSAgICAgICAgIGlmIGVjaG8gJHAgfCAkRUdSRVAgLWUgIiRwcmVjaW91c19maWxlc19yZWdleCIgPi9kZXYvbnVsbCAyPiYxCi0JICAgICAgICAgdGhlbgorCQkgaWYgJEVDSE8gIiRwIiB8ICRFR1JFUCAtZSAiJHByZWNpb3VzX2ZpbGVzX3JlZ2V4IiA+L2Rldi9udWxsIDI+JjEKKwkJIHRoZW4KIAkJICAgY29udGludWUKIAkJIGZpCiAJICAgICAgIGZpCkBAIC0zNDY3LDEwICs2NDE5LDggQEAKIAkgICAgKikgOzsKIAkgIGVzYWMKIAlkb25lCi0JaWYgdGVzdCAtbiAiJHJlbW92ZWxpc3QiOyB0aGVuCi0JICAkc2hvdyAiJHtybX1yICRyZW1vdmVsaXN0IgotCSAgJHJ1biAke3JtfXIgJHJlbW92ZWxpc3QKLQlmaQorCXRlc3QgLW4gIiRyZW1vdmVsaXN0IiAmJiBcCisJICBmdW5jX3Nob3dfZXZhbCAiJHtSTX1yIFwkcmVtb3ZlbGlzdCIKICAgICAgIGZpCiAKICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgpAQCAtMzQ3OCwxNCArNjQyOCwxNCBAQAogCW9sZGxpYnM9IiRvbGRsaWJzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCiAKIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCi0Jb2xkb2Jqcz0iJG9ianMgImAkZWNobyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICcvXC4nJHtsaWJleHR9JyQvZCcgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0nJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYAogICAgICAgZmkKIAogICAgICAgIyBFbGltaW5hdGUgYWxsIHRlbXBvcmFyeSBkaXJlY3Rvcmllcy4KICAgICAgICNmb3IgcGF0aCBpbiAkbm90aW5zdF9wYXRoOyBkbwotICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRlY2hvICIkbGliX3NlYXJjaF9wYXRoICIgfCAke1NFRH0gLWUgInMlICRwYXRoICUgJWciYAotICAgICAgIwlkZXBsaWJzPWAkZWNobyAiJGRlcGxpYnMgIiB8ICR7U0VEfSAtZSAicyUgLUwkcGF0aCAlICVnImAKLSAgICAgICMJZGVwZW5kZW5jeV9saWJzPWAkZWNobyAiJGRlcGVuZGVuY3lfbGlicyAiIHwgJHtTRUR9IC1lICJzJSAtTCRwYXRoICUgJWciYAorICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRFQ0hPICJYJGxpYl9zZWFyY2hfcGF0aCAiIHwgJFhzZWQgLWUgInMlICRwYXRoICUgJWciYAorICAgICAgIwlkZXBsaWJzPWAkRUNITyAiWCRkZXBsaWJzICIgfCAkWHNlZCAtZSAicyUgLUwkcGF0aCAlICVnImAKKyAgICAgICMJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiWCRkZXBlbmRlbmN5X2xpYnMgIiB8ICRYc2VkIC1lICJzJSAtTCRwYXRoICUgJWciYAogICAgICAgI2RvbmUKIAogICAgICAgaWYgdGVzdCAtbiAiJHhycGF0aCI7IHRoZW4KQEAgLTM1MjYsMTIgKzY0NzYsMTIgQEAKICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCiAJaWYgdGVzdCAtbiAiJHJwYXRoIjsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgotCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotYmVvcyopCisJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqKQogCSAgICAjIHRoZXNlIHN5c3RlbXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIGMgbGlicmFyeSAoYXMgc3VjaCkhCiAJICAgIDs7CiAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJICAgICMgUmhhcHNvZHkgQyBsaWJyYXJ5IGlzIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1mcmFtZXdvcmsgU3lzdGVtIgorCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCiAJICAgIDs7CiAJICAqLSotbmV0YnNkKikKIAkgICAgIyBEb24ndCBsaW5rIHdpdGggbGliYyB1bnRpbCB0aGUgYS5vdXQgbGQuc28gaXMgZml4ZWQuCkBAIC0zNTQ1LDcgKzY0OTUsNyBAQAogCSAgKi0qLXN5c3Y0LjJ1dzIqIHwgKi0qLXN5c3Y1KiB8ICotKi11bml4d2FyZSogfCAqLSotT3BlblVOSVgqKQogCSAgICAjIENvbXBpbGVyIGluc2VydHMgbGliYyBpbiB0aGUgY29ycmVjdCBwbGFjZSBmb3IgdGhyZWFkcyB0byB3b3JrCiAJICAgIDs7Ci0gCSAgKikKKwkgICopCiAJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCiAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KIAkgICAgICBkZXBsaWJzPSIkZGVwbGlicyAtbGMiCkBAIC0zNTgyLDE3ICs2NTMyLDE4IEBACiAJICAjIGxpbWl0cy4gTWF5YmUgZXZlbiBicmVha3MgaXQuICBXZSBjb21waWxlIGEgcHJvZ3JhbSwgbGlua2luZyBpdAogCSAgIyBhZ2FpbnN0IHRoZSBkZXBsaWJzIGFzIGEgcHJveHkgZm9yIHRoZSBsaWJyYXJ5LiAgVGhlbiB3ZSBjYW4gY2hlY2sKIAkgICMgd2hldGhlciB0aGV5IGxpbmtlZCBpbiBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5IHdpdGggbGRkLgotCSAgJHJtIGNvbmZ0ZXN0LmMKKwkgICRvcHRfZHJ5X3J1biB8fCAkUk0gY29uZnRlc3QuYwogCSAgY2F0ID4gY29uZnRlc3QuYyA8PEVPRgogCSAgaW50IG1haW4oKSB7IHJldHVybiAwOyB9CiBFT0YKLQkgICRybSBjb25mdGVzdAorCSAgJG9wdF9kcnlfcnVuIHx8ICRSTSBjb25mdGVzdAogCSAgaWYgJExUQ0MgJExUQ0ZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgJGRlcGxpYnM7IHRoZW4KIAkgICAgbGRkX291dHB1dD1gbGRkIGNvbmZ0ZXN0YAogCSAgICBmb3IgaSBpbiAkZGVwbGliczsgZG8KLQkgICAgICBuYW1lPWBleHByICRpIDogJy1sXCguKlwpJ2AKLQkgICAgICAjIElmICRuYW1lIGlzIGVtcHR5IHdlIGFyZSBvcGVyYXRpbmcgb24gYSAtTCBhcmd1bWVudC4KLSAgICAgICAgICAgICAgaWYgdGVzdCAiJG5hbWUiICE9ICIiICYmIHRlc3QgIiRuYW1lIiAhPSAiMCI7IHRoZW4KKwkgICAgICBjYXNlICRpIGluCisJICAgICAgLWwqKQorCQlmdW5jX3N0cmlwbmFtZSAtbCAnJyAiJGkiCisJCW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCSAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSAgKiIgJGkgIiopCkBAIC0zNjAwLDM3ICs2NTUxLDQwIEBACiAJCSAgICBpPSIiCiAJCSAgICA7OwogCQkgIGVzYWMKLQkgICAgICAgIGZpCisJCWZpCiAJCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLQkJICBsaWJuYW1lPWBldmFsIFxcJGVjaG8gXCIkbGlibmFtZV9zcGVjXCJgCi0JCSAgZGVwbGliX21hdGNoZXM9YGV2YWwgXFwkZWNobyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcImAKLQkJICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzCi0JCSAgZGVwbGliX21hdGNoPSQyCisJCSAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisJCSAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAorCQkgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CisJCSAgZGVwbGliX21hdGNoPSQxCiAJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgogCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCiAJCSAgZWxzZQogCQkgICAgZHJvcHBlZGRlcHM9eWVzCi0JCSAgICAkZWNobwotCQkgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBkeW5hbWljIGxpbmtlciBkb2VzIG5vdCBhY2NlcHQgbmVlZGVkIGxpYnJhcnkgJGkuIgotCQkgICAgJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSAgICAkZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJICAgICRlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIEkgYmVsaWV2ZSB5b3UgZG8gbm90IGhhdmUiCi0JCSAgICAkZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgaXQgZm9yIgotCQkgICAgJGVjaG8gIioqKiBpdHMgZHluYW1pYyBkZXBlbmRlbmN5IGxpc3QgdGhhdCBwcm9ncmFtcyBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKKwkJICAgICRFQ0hPCisJCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IGR5bmFtaWMgbGlua2VyIGRvZXMgbm90IGFjY2VwdCBuZWVkZWQgbGlicmFyeSAkaS4iCisJCSAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggSSBiZWxpZXZlIHlvdSBkbyBub3QgaGF2ZSIKKwkJICAgICRFQ0hPICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSBpdCBmb3IiCisJCSAgICAkRUNITyAiKioqIGl0cyBkeW5hbWljIGRlcGVuZGVuY3kgbGlzdCB0aGF0IHByb2dyYW1zIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgogCQkgIGZpCiAJCWZpCi0JICAgICAgZWxzZQorCQk7OworCSAgICAgICopCiAJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotCSAgICAgIGZpCisJCTs7CisJICAgICAgZXNhYwogCSAgICBkb25lCiAJICBlbHNlCiAJICAgICMgRXJyb3Igb2NjdXJyZWQgaW4gdGhlIGZpcnN0IGNvbXBpbGUuICBMZXQncyB0cnkgdG8gc2FsdmFnZQogCSAgICAjIHRoZSBzaXR1YXRpb246IENvbXBpbGUgYSBzZXBhcmF0ZSBwcm9ncmFtIGZvciBlYWNoIGxpYnJhcnkuCiAJICAgIGZvciBpIGluICRkZXBsaWJzOyBkbwotCSAgICAgIG5hbWU9YGV4cHIgJGkgOiAnLWxcKC4qXCknYAotCSAgICAgICMgSWYgJG5hbWUgaXMgZW1wdHkgd2UgYXJlIG9wZXJhdGluZyBvbiBhIC1MIGFyZ3VtZW50LgotICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgIT0gIiIgJiYgdGVzdCAiJG5hbWUiICE9ICIwIjsgdGhlbgotCQkkcm0gY29uZnRlc3QKKwkgICAgICBjYXNlICRpIGluCisJICAgICAgLWwqKQorCQlmdW5jX3N0cmlwbmFtZSAtbCAnJyAiJGkiCisJCW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCQkkb3B0X2RyeV9ydW4gfHwgJFJNIGNvbmZ0ZXN0CiAJCWlmICRMVENDICRMVENGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jICRpOyB0aGVuCiAJCSAgbGRkX291dHB1dD1gbGRkIGNvbmZ0ZXN0YAogCQkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KQEAgLTM2NDIsNDQgKzY1OTYsNDcgQEAKIAkJICAgIGVzYWMKIAkJICBmaQogCQkgIGlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLQkJICAgIGxpYm5hbWU9YGV2YWwgXFwkZWNobyBcIiRsaWJuYW1lX3NwZWNcImAKLQkJICAgIGRlcGxpYl9tYXRjaGVzPWBldmFsIFxcJGVjaG8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCJgCi0JCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzCi0JCSAgICBkZXBsaWJfbWF0Y2g9JDIKKwkJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorCQkgICAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAorCQkgICAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKKwkJICAgIGRlcGxpYl9tYXRjaD0kMQogCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgogCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKIAkJICAgIGVsc2UKIAkJICAgICAgZHJvcHBlZGRlcHM9eWVzCi0JCSAgICAgICRlY2hvCi0JCSAgICAgICRlY2hvICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKLQkJICAgICAgJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSAgICAgICRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkgICAgICAkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkgICAgICAkZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCi0JCSAgICAgICRlY2hvICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCisJCSAgICAgICRFQ0hPCisJCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKKwkJICAgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSAgICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkgICAgICAkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQkgICAgICAkRUNITyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCisJCSAgICAgICRFQ0hPICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCiAJCSAgICBmaQogCQkgIGZpCiAJCWVsc2UKIAkJICBkcm9wcGVkZGVwcz15ZXMKLQkJICAkZWNobwotCQkgICRlY2hvICIqKiogV2FybmluZyEgIExpYnJhcnkgJGkgaXMgbmVlZGVkIGJ5IHRoaXMgbGlicmFyeSBidXQgSSB3YXMgbm90IGFibGUgdG8iCi0JCSAgJGVjaG8gIioqKiBtYWtlIGl0IGxpbmsgaW4hICBZb3Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgaXQgb3Igc29tZSIKLQkJICAkZWNobyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKLQkJICAkZWNobyAiKioqIGZ1bmN0aW9uYWwuICBJbnN0YWxsaW5nIGl0IGJlZm9yZSBjb250aW51aW5nIHdvdWxkIGJlIGV2ZW4gYmV0dGVyLiIKKwkJICAkRUNITworCQkgICRFQ0hPICIqKiogV2FybmluZyEgIExpYnJhcnkgJGkgaXMgbmVlZGVkIGJ5IHRoaXMgbGlicmFyeSBidXQgSSB3YXMgbm90IGFibGUgdG8iCisJCSAgJEVDSE8gIioqKiBtYWtlIGl0IGxpbmsgaW4hICBZb3Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgaXQgb3Igc29tZSIKKwkJICAkRUNITyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKKwkJICAkRUNITyAiKioqIGZ1bmN0aW9uYWwuICBJbnN0YWxsaW5nIGl0IGJlZm9yZSBjb250aW51aW5nIHdvdWxkIGJlIGV2ZW4gYmV0dGVyLiIKIAkJZmkKLQkgICAgICBlbHNlCisJCTs7CisJICAgICAgKikKIAkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0JICAgICAgZmkKKwkJOzsKKwkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgIGZpCiAJICA7OwogCWZpbGVfbWFnaWMqKQotCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZAotCSAgZmlsZV9tYWdpY19yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICIkMiBcKC4qXCkiYAorCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZDsgc2hpZnQKKwkgIGZpbGVfbWFnaWNfcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDEgXCguKlwpImAKIAkgIGZvciBhX2RlcGxpYiBpbiAkZGVwbGliczsgZG8KLQkgICAgbmFtZT1gZXhwciAkYV9kZXBsaWIgOiAnLWxcKC4qXCknYAotCSAgICAjIElmICRuYW1lIGlzIGVtcHR5IHdlIGFyZSBvcGVyYXRpbmcgb24gYSAtTCBhcmd1bWVudC4KLSAgICAgICAgICAgIGlmIHRlc3QgIiRuYW1lIiAhPSAiIiAmJiB0ZXN0ICAiJG5hbWUiICE9ICIwIjsgdGhlbgorCSAgICBjYXNlICRhX2RlcGxpYiBpbgorCSAgICAtbCopCisJICAgICAgZnVuY19zdHJpcG5hbWUgLWwgJycgIiRhX2RlcGxpYiIKKwkgICAgICBuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgogCQkqIiAkYV9kZXBsaWIgIiopCkBAIC0zNjg5LDEzICs2NjQ2LDEzIEBACiAJCWVzYWMKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCi0JCWxpYm5hbWU9YGV2YWwgXFwkZWNobyBcIiRsaWJuYW1lX3NwZWNcImAKKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCiAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwogCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAogCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KIAkJICAgICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KLQkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIFwKLQkJCSB8IGdyZXAgIiAtPiAiID4vZGV2L251bGw7IHRoZW4KKwkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKKwkJCSAkR1JFUCAiIC0+ICIgPi9kZXYvbnVsbDsgdGhlbgogCQkJY29udGludWUKIAkJICAgICAgZmkKIAkJICAgICAgIyBUaGUgc3RhdGVtZW50IGFib3ZlIHRyaWVzIHRvIGF2b2lkIGVudGVyaW5nIGFuCkBAIC0zNzA4LDEyICs2NjY1LDEyIEBACiAJCQlwb3RsaWJsaW5rPWBscyAtbGQgJHBvdGxpYiB8ICR7U0VEfSAncy8uKiAtPiAvLydgCiAJCQljYXNlICRwb3RsaWJsaW5rIGluCiAJCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHBvdGxpYj0iJHBvdGxpYmxpbmsiOzsKLQkJCSopIHBvdGxpYj1gJGVjaG8gIlgkcG90bGliIiB8ICRYc2VkIC1lICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKKwkJCSopIHBvdGxpYj1gJEVDSE8gIlgkcG90bGliIiB8ICRYc2VkIC1lICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKIAkJCWVzYWMKIAkJICAgICAgZG9uZQotCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgXAotCQkJIHwgJHtTRUR9IDEwcSBcCi0JCQkgfCAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgorCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgfAorCQkJICRTRUQgLWUgMTBxIHwKKwkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgogCQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgogCQkJYV9kZXBsaWI9IiIKIAkJCWJyZWFrIDIKQEAgLTM3MjMsMzIgKzY2ODAsMzUgQEAKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCiAJCWRyb3BwZWRkZXBzPXllcwotCQkkZWNobwotCQkkZWNobyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCi0JCSRlY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkkZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJJGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJJGVjaG8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCisJCSRFQ0hPCisJCSRFQ0hPICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKKwkJJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQkkRUNITyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKIAkJaWYgdGVzdCAteiAiJHBvdGxpYiIgOyB0aGVuCi0JCSAgJGVjaG8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgZmlsZSBtYWdpYyB0ZXN0KSIKKwkJICAkRUNITyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciBmaWxlIG1hZ2ljIHRlc3QpIgogCQllbHNlCi0JCSAgJGVjaG8gIioqKiB3aXRoICRsaWJuYW1lIGFuZCBub25lIG9mIHRoZSBjYW5kaWRhdGVzIHBhc3NlZCBhIGZpbGUgZm9ybWF0IHRlc3QiCi0JCSAgJGVjaG8gIioqKiB1c2luZyBhIGZpbGUgbWFnaWMuIExhc3QgZmlsZSBjaGVja2VkOiAkcG90bGliIgorCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBhbmQgbm9uZSBvZiB0aGUgY2FuZGlkYXRlcyBwYXNzZWQgYSBmaWxlIGZvcm1hdCB0ZXN0IgorCQkgICRFQ0hPICIqKiogdXNpbmcgYSBmaWxlIG1hZ2ljLiBMYXN0IGZpbGUgY2hlY2tlZDogJHBvdGxpYiIKIAkJZmkKIAkgICAgICBmaQotCSAgICBlbHNlCisJICAgICAgOzsKKwkgICAgKikKIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgogCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLQkgICAgZmkKKwkgICAgICA7OworCSAgICBlc2FjCiAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgogCSAgOzsKIAltYXRjaF9wYXR0ZXJuKikKLQkgIHNldCBkdW1teSAkZGVwbGlic19jaGVja19tZXRob2QKLQkgIG1hdGNoX3BhdHRlcm5fcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDIgXCguKlwpImAKKwkgIHNldCBkdW1teSAkZGVwbGlic19jaGVja19tZXRob2Q7IHNoaWZ0CisJICBtYXRjaF9wYXR0ZXJuX3JlZ2V4PWBleHByICIkZGVwbGlic19jaGVja19tZXRob2QiIDogIiQxIFwoLipcKSJgCiAJICBmb3IgYV9kZXBsaWIgaW4gJGRlcGxpYnM7IGRvCi0JICAgIG5hbWU9YGV4cHIgJGFfZGVwbGliIDogJy1sXCguKlwpJ2AKLQkgICAgIyBJZiAkbmFtZSBpcyBlbXB0eSB3ZSBhcmUgb3BlcmF0aW5nIG9uIGEgLUwgYXJndW1lbnQuCi0JICAgIGlmIHRlc3QgLW4gIiRuYW1lIiAmJiB0ZXN0ICIkbmFtZSIgIT0gIjAiOyB0aGVuCisJICAgIGNhc2UgJGFfZGVwbGliIGluCisJICAgIC1sKikKKwkgICAgICBmdW5jX3N0cmlwbmFtZSAtbCAnJyAiJGFfZGVwbGliIgorCSAgICAgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSoiICRhX2RlcGxpYiAiKikKQEAgLTM3NTgsMTQgKzY3MTgsMTMgQEAKIAkJZXNhYwogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KLQkJbGlibmFtZT1gZXZhbCBcXCRlY2hvIFwiJGxpYm5hbWVfc3BlY1wiYAorCQlsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCiAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCiAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwogCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKLQkJICAgIGlmIGV2YWwgJGVjaG8gXCIkcG90ZW50X2xpYlwiIDI+L2Rldi9udWxsIFwKLQkJICAgICAgICB8ICR7U0VEfSAxMHEgXAotCQkgICAgICAgIHwgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKwkJICAgIGlmIGV2YWwgIlwkRUNITyBcIlgkcG90ZW50X2xpYlwiIiAyPi9kZXYvbnVsbCB8ICRYc2VkIC1lIDEwcSB8IFwKKwkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCiAJCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKIAkJICAgICAgYV9kZXBsaWI9IiIKIAkJICAgICAgYnJlYWsgMgpAQCAtMzc3NSw0NCArNjczNCw0NiBAQAogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KIAkJZHJvcHBlZGRlcHM9eWVzCi0JCSRlY2hvCi0JCSRlY2hvICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKLQkJJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKKwkJJEVDSE8KKwkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaW5rZXIgcGF0aCBkb2VzIG5vdCBoYXZlIHJlYWwgZmlsZSBmb3IgbGlicmFyeSAkYV9kZXBsaWIuIgorCQkkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCSRFQ0hPICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgogCQlpZiB0ZXN0IC16ICIkcG90bGliIiA7IHRoZW4KLQkJICAkZWNobyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciByZWdleCBwYXR0ZXJuIHRlc3QpIgorCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBidXQgbm8gY2FuZGlkYXRlcyB3ZXJlIGZvdW5kLiAoLi4uZm9yIHJlZ2V4IHBhdHRlcm4gdGVzdCkiCiAJCWVsc2UKLQkJICAkZWNobyAiKioqIHdpdGggJGxpYm5hbWUgYW5kIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgcGFzc2VkIGEgZmlsZSBmb3JtYXQgdGVzdCIKLQkJICAkZWNobyAiKioqIHVzaW5nIGEgcmVnZXggcGF0dGVybi4gTGFzdCBmaWxlIGNoZWNrZWQ6ICRwb3RsaWIiCisJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGFuZCBub25lIG9mIHRoZSBjYW5kaWRhdGVzIHBhc3NlZCBhIGZpbGUgZm9ybWF0IHRlc3QiCisJCSAgJEVDSE8gIioqKiB1c2luZyBhIHJlZ2V4IHBhdHRlcm4uIExhc3QgZmlsZSBjaGVja2VkOiAkcG90bGliIgogCQlmaQogCSAgICAgIGZpCi0JICAgIGVsc2UKKwkgICAgICA7OworCSAgICAqKQogCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCiAJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotCSAgICBmaQorCSAgICAgIDs7CisJICAgIGVzYWMKIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCiAJICA7OwogCW5vbmUgfCB1bmtub3duIHwgKikKIAkgIG5ld2RlcGxpYnM9IiIKLQkgIHRtcF9kZXBsaWJzPWAkZWNobyAiWCAkZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjJC8vJyBcCi0JICAgIC1lICdzLyAtW0xSXVteIF0qLy9nJ2AKKwkgIHRtcF9kZXBsaWJzPWAkRUNITyAiWCAkZGVwbGlicyIgfCAkWHNlZCBcCisJICAgICAgLWUgJ3MvIC1sYyQvLycgLWUgJ3MvIC1bTFJdW14gXSovL2cnYAogCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCSAgICBmb3IgaSBpbiAkcHJlZGVwcyAkcG9zdGRlcHMgOyBkbwogCSAgICAgICMgY2FuJ3QgdXNlIFhzZWQgYmVsb3csIGJlY2F1c2UgJGkgbWlnaHQgY29udGFpbiAnLycKLQkgICAgICB0bXBfZGVwbGlicz1gJGVjaG8gIlggJHRtcF9kZXBsaWJzIiB8ICR7U0VEfSAtZSAiMXMsXlgsLCIgLWUgInMsJGksLCJgCisJICAgICAgdG1wX2RlcGxpYnM9YCRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAicywkaSwsImAKIAkgICAgZG9uZQogCSAgZmkKLQkgIGlmICRlY2hvICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAncy9bIAldLy9nJyBcCi0JICAgIHwgZ3JlcCAuID4vZGV2L251bGw7IHRoZW4KLQkgICAgJGVjaG8KKwkgIGlmICRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAncy9bCSBdLy9nJyB8CisJICAgICAkR1JFUCAuID4vZGV2L251bGw7IHRoZW4KKwkgICAgJEVDSE8KIAkgICAgaWYgdGVzdCAiWCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgPSAiWG5vbmUiOyB0aGVuCi0JICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHBsYXRmb3JtLiIKKwkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcGxhdGZvcm0uIgogCSAgICBlbHNlCi0JICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IGtub3duIHRvIGJlIHN1cHBvcnRlZC4iCisJICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IGtub3duIHRvIGJlIHN1cHBvcnRlZC4iCiAJICAgIGZpCi0JICAgICRlY2hvICIqKiogQWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBiZWluZyBkcm9wcGVkLiIKKwkgICAgJEVDSE8gIioqKiBBbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIGJlaW5nIGRyb3BwZWQuIgogCSAgICBkcm9wcGVkZGVwcz15ZXMKIAkgIGZpCiAJICA7OwpAQCAtMzgyNSwyNCArNjc4NiwyNCBAQAogCiAJY2FzZSAkaG9zdCBpbgogCSotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKLQkgICMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IGlzIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICBuZXdkZXBsaWJzPWAkZWNobyAiWCAkbmV3ZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gLWZyYW1ld29yayBTeXN0ZW0gLydgCisJICAjIE9uIFJoYXBzb2R5IHJlcGxhY2UgdGhlIEMgbGlicmFyeSB3aXRoIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCisJICBuZXdkZXBsaWJzPWAkRUNITyAiWCAkbmV3ZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAogCSAgOzsKIAllc2FjCiAKIAlpZiB0ZXN0ICIkZHJvcHBlZGRlcHMiID0geWVzOyB0aGVuCiAJICBpZiB0ZXN0ICIkbW9kdWxlIiA9IHllczsgdGhlbgotCSAgICAkZWNobwotCSAgICAkZWNobyAiKioqIFdhcm5pbmc6IGxpYnRvb2wgY291bGQgbm90IHNhdGlzZnkgYWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkiCi0JICAgICRlY2hvICIqKiogZGVwZW5kZW5jaWVzIG9mIG1vZHVsZSAkbGlibmFtZS4gIFRoZXJlZm9yZSwgbGlidG9vbCB3aWxsIGNyZWF0ZSIKLQkgICAgJGVjaG8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIgotCSAgICAkZWNobyAiKioqIGFwcGxpY2F0aW9uIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcuIgorCSAgICAkRUNITworCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IGxpYnRvb2wgY291bGQgbm90IHNhdGlzZnkgYWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkiCisJICAgICRFQ0hPICIqKiogZGVwZW5kZW5jaWVzIG9mIG1vZHVsZSAkbGlibmFtZS4gIFRoZXJlZm9yZSwgbGlidG9vbCB3aWxsIGNyZWF0ZSIKKwkgICAgJEVDSE8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIgorCSAgICAkRUNITyAiKioqIGFwcGxpY2F0aW9uIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcuIgogCSAgICBpZiB0ZXN0IC16ICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgotCSAgICAgICRlY2hvCi0JICAgICAgJGVjaG8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgotCSAgICAgICRlY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgotCSAgICAgICRlY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCi0JICAgICAgJGVjaG8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgorCSAgICAgICRFQ0hPCisJICAgICAgJEVDSE8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgorCSAgICAgICRFQ0hPICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgorCSAgICAgICRFQ0hPICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJICAgICAgJEVDSE8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgogCSAgICBmaQogCSAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KIAkgICAgICBvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgpAQCAtMzg1MiwxNiArNjgxMywxNiBAQAogCSAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwogCSAgICBmaQogCSAgZWxzZQotCSAgICAkZWNobyAiKioqIFRoZSBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGhhdmUgYmVlbiBkcm9wcGVkIGhlcmUgd2lsbCBiZSIKLQkgICAgJGVjaG8gIioqKiBhdXRvbWF0aWNhbGx5IGFkZGVkIHdoZW5ldmVyIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCB0aGlzIGxpYnJhcnkiCi0JICAgICRlY2hvICIqKiogb3IgaXMgZGVjbGFyZWQgdG8gLWRsb3BlbiBpdC4iCisJICAgICRFQ0hPICIqKiogVGhlIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIHRoYXQgaGF2ZSBiZWVuIGRyb3BwZWQgaGVyZSB3aWxsIGJlIgorCSAgICAkRUNITyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKKwkgICAgJEVDSE8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKIAogCSAgICBpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkIiA9IG5vOyB0aGVuCi0JICAgICAgJGVjaG8KLQkgICAgICAkZWNobyAiKioqIFNpbmNlIHRoaXMgbGlicmFyeSBtdXN0IG5vdCBjb250YWluIHVuZGVmaW5lZCBzeW1ib2xzLCIKLQkgICAgICAkZWNobyAiKioqIGJlY2F1c2UgZWl0aGVyIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IHRoZW0gb3IiCi0JICAgICAgJGVjaG8gIioqKiBpdCB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCAtbm8tdW5kZWZpbmVkLCIKLQkgICAgICAkZWNobyAiKioqIGxpYnRvb2wgd2lsbCBvbmx5IGNyZWF0ZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGl0LiIKKwkgICAgICAkRUNITworCSAgICAgICRFQ0hPICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgorCSAgICAgICRFQ0hPICIqKiogYmVjYXVzZSBlaXRoZXIgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlbSBvciIKKwkgICAgICAkRUNITyAiKioqIGl0IHdhcyBleHBsaWNpdGx5IHJlcXVlc3RlZCB3aXRoIC1uby11bmRlZmluZWQsIgorCSAgICAgICRFQ0hPICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCQlvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgogCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCkBAIC0zODc1LDcgKzY4MzYsMTQgQEAKIAkjIERvbmUgY2hlY2tpbmcgZGVwbGlicyEKIAlkZXBsaWJzPSRuZXdkZXBsaWJzCiAgICAgICBmaQotCisgICAgICAjIFRpbWUgdG8gY2hhbmdlIGFsbCBvdXIgImZvby5sdGZyYW1ld29yayIgc3R1ZmYgYmFjayB0byAiLWZyYW1ld29yayBmb28iCisgICAgICBjYXNlICRob3N0IGluCisJKi0qLWRhcndpbiopCisJICBuZXdkZXBsaWJzPWAkRUNITyAiWCAkbmV3ZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPWAkRUNITyAiWCAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBkZXBsaWJzPWAkRUNITyAiWCAkZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIDs7CisgICAgICBlc2FjCiAKICAgICAgICMgbW92ZSBsaWJyYXJ5IHNlYXJjaCBwYXRocyB0aGF0IGNvaW5jaWRlIHdpdGggcGF0aHMgdG8gbm90IHlldAogICAgICAgIyBpbnN0YWxsZWQgbGlicmFyaWVzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpYnJhcnkgc2VhcmNoIGxpc3QKQEAgLTM5MDQsNyArNjg3Miw2IEBACiAgICAgICBkb25lCiAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCiAKLQogICAgICAgIyBBbGwgdGhlIGxpYnJhcnktc3BlY2lmaWMgdmFyaWFibGVzIChpbnN0YWxsX2xpYmRpciBpcyBzZXQgYWJvdmUpLgogICAgICAgbGlicmFyeV9uYW1lcz0KICAgICAgIG9sZF9saWJyYXJ5PQpAQCAtMzk0OSwxMCArNjkxNiw3IEBACiAJICAgICB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KIAkgICAgbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQiOyB0aGVuCi0JICAgICAgY2FzZSAkYXJjaGl2ZV9jbWRzIGluCi0JICAgICAgKlwkTEQqKSBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIgOzsKLQkgICAgICAqKSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiA7OwotCSAgICAgIGVzYWMKKwkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIKIAkgICAgZWxzZQogCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgogCSAgICBmaQpAQCAtMzk3OCw4ICs2OTQyLDkgQEAKIAlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgogCWV2YWwgbGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIgogCXNldCBkdW1teSAkbGlicmFyeV9uYW1lcwotCXJlYWxuYW1lPSIkMiIKLQlzaGlmdDsgc2hpZnQKKwlzaGlmdAorCXJlYWxuYW1lPSIkMSIKKwlzaGlmdAogCiAJaWYgdGVzdCAtbiAiJHNvbmFtZV9zcGVjIjsgdGhlbgogCSAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgpAQCAtMzk5OCw3MSArNjk2MywxMjIgQEAKIAlkb25lCiAKIAkjIFVzZSBzdGFuZGFyZCBvYmplY3RzIGlmIHRoZXkgYXJlIHBpYwotCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJGVjaG8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCXRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisKKwlkZWxmaWxlcz0KKwlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCisJICAkb3B0X2RyeV9ydW4gfHwgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCisJICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKKwkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzIgorCWZpCisKKwlvcmlnX2V4cG9ydF9zeW1ib2xzPQorCWNhc2UgJGhvc3Rfb3MgaW4KKwljeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQorCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC16ICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCisJICAgICMgZXhwb3J0aW5nIHVzaW5nIHVzZXIgc3VwcGxpZWQgc3ltZmlsZQorCSAgICBpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgIT0geEVYUE9SVFM7IHRoZW4KKwkgICAgICAjIGFuZCBpdCdzIE5PVCBhbHJlYWR5IGEgLmRlZiBmaWxlLiBNdXN0IGZpZ3VyZSBvdXQKKwkgICAgICAjIHdoaWNoIG9mIHRoZSBnaXZlbiBzeW1ib2xzIGFyZSBkYXRhIHN5bWJvbHMgYW5kIHRhZworCSAgICAgICMgdGhlbSBhcyBzdWNoLiBTbywgdHJpZ2dlciB1c2Ugb2YgZXhwb3J0X3N5bWJvbHNfY21kcy4KKwkgICAgICAjIGV4cG9ydF9zeW1ib2xzIGdldHMgcmVhc3NpZ25lZCBpbnNpZGUgdGhlICJwcmVwYXJlCisJICAgICAgIyB0aGUgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzIiBpZiBzdGF0ZW1lbnQsIHNvIHRoZQorCSAgICAgICMgaW5jbHVkZV9leHBzeW1zIGxvZ2ljIHN0aWxsIHdvcmtzLgorCSAgICAgIG9yaWdfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKKwkgICAgICBleHBvcnRfc3ltYm9scz0KKwkgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisJICAgIGZpCisJICBmaQorCSAgOzsKKwllc2FjCiAKIAkjIFByZXBhcmUgdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scwogCWlmIHRlc3QgLXogIiRleHBvcnRfc3ltYm9scyI7IHRoZW4KIAkgIGlmIHRlc3QgIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiID0geWVzIHx8IHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KLQkgICAgJHNob3cgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIgorCSAgICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIgogCSAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZXhwIgotCSAgICAkcnVuICRybSAkZXhwb3J0X3N5bWJvbHMKKwkgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKIAkgICAgY21kcz0kZXhwb3J0X3N5bWJvbHNfY21kcwogCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKIAkgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKIAkgICAgICBldmFsIGNtZD1cIiRjbWRcIgotCSAgICAgIGlmIGxlbj1gZXhwciAiWCRjbWQiIDogIi4qImAgJiYKLQkgICAgICAgdGVzdCAiJGxlbiIgLWxlICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCi0JICAgICAgICAkc2hvdyAiJGNtZCIKLQkgICAgICAgICRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPwotCSAgICAgICAgc2tpcHBlZF9leHBvcnQ9ZmFsc2UKKwkgICAgICBmdW5jX2xlbiAiICRjbWQiCisJICAgICAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKKwkgICAgICBpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KKwkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JworCQlza2lwcGVkX2V4cG9ydD1mYWxzZQogCSAgICAgIGVsc2UKLQkgICAgICAgICMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBleGVjdXRlIGluIG9uZSBzdGVwLgotCSAgICAgICAgJHNob3cgInVzaW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUgZm9yIGV4cG9ydCBsaXN0Li4uIgotCSAgICAgICAgc2tpcHBlZF9leHBvcnQ9OgorCQkjIFRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gZXhlY3V0ZSBpbiBvbmUgc3RlcC4KKwkJZnVuY192ZXJib3NlICJ1c2luZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlIGZvciBleHBvcnQgbGlzdC4uLiIKKwkJc2tpcHBlZF9leHBvcnQ9OgogCQkjIEJyZWFrIG91dCBlYXJseSwgb3RoZXJ3aXNlIHNraXBwZWRfZXhwb3J0IG1heSBiZQogCQkjIHNldCB0byBmYWxzZSBieSBhIGxhdGVyIGJ1dCBzaG9ydGVyIGNtZC4KIAkJYnJlYWsKIAkgICAgICBmaQogCSAgICBkb25lCiAJICAgIElGUz0iJHNhdmVfaWZzIgotCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCi0JICAgICAgJHNob3cgIiRFR1JFUCAtZSBcIiRleHBvcnRfc3ltYm9sc19yZWdleFwiIFwiJGV4cG9ydF9zeW1ib2xzXCIgPiBcIiR7ZXhwb3J0X3N5bWJvbHN9VFwiIgotCSAgICAgICRydW4gZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkZXhwb3J0X3N5bWJvbHMiID4gIiR7ZXhwb3J0X3N5bWJvbHN9VCInCi0JICAgICAgJHNob3cgIiRtdiBcIiR7ZXhwb3J0X3N5bWJvbHN9VFwiIFwiJGV4cG9ydF9zeW1ib2xzXCIiCi0JICAgICAgJHJ1biBldmFsICckbXYgIiR7ZXhwb3J0X3N5bWJvbHN9VCIgIiRleHBvcnRfc3ltYm9scyInCisJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IjsgdGhlbgorCSAgICAgIGZ1bmNfc2hvd19ldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRleHBvcnRfc3ltYm9scyIgPiAiJHtleHBvcnRfc3ltYm9sc31UIicKKwkgICAgICBmdW5jX3Nob3dfZXZhbCAnJE1WICIke2V4cG9ydF9zeW1ib2xzfVQiICIkZXhwb3J0X3N5bWJvbHMiJwogCSAgICBmaQogCSAgZmkKIAlmaQogCiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotCSAgJHJ1biBldmFsICckZWNobyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkZXhwb3J0X3N5bWJvbHMiJworCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCisJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworCWZpCisKKwlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgorCSAgIyBUaGUgZ2l2ZW4gZXhwb3J0c19zeW1ib2xzIGZpbGUgaGFzIHRvIGJlIGZpbHRlcmVkLCBzbyBmaWx0ZXIgaXQuCisJICBmdW5jX3ZlcmJvc2UgImZpbHRlciBzeW1ib2wgbGlzdCBmb3IgXGAkbGlibmFtZS5sYScgdG8gdGFnIERBVEEgZXhwb3J0cyIKKwkgICMgRklYTUU6ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciBwb3RlbnRpYWxseSBjb250YWlucyBsb3RzIG9mCisJICAjICdzJyBjb21tYW5kcyB3aGljaCBub3QgYWxsIHNlZHMgY2FuIGhhbmRsZS4gR05VIHNlZCBzaG91bGQgYmUgZmluZQorCSAgIyB0aG91Z2guIEFsc28sIHRoZSBmaWx0ZXIgc2NhbGVzIHN1cGVybGluZWFybHkgd2l0aCB0aGUgbnVtYmVyIG9mCisJICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQorCSAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KKwkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgorCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorCSAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCisJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwogCWZpCiAKIAl0bXBfZGVwbGlicz0KIAlmb3IgdGVzdF9kZXBsaWIgaW4gJGRlcGxpYnM7IGRvCi0JCWNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgotCQkqIiAkdGVzdF9kZXBsaWIgIiopIDs7Ci0JCSopCi0JCQl0bXBfZGVwbGlicz0iJHRtcF9kZXBsaWJzICR0ZXN0X2RlcGxpYiIKLQkJCTs7Ci0JCWVzYWMKKwkgIGNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgorCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OworCSAgKikKKwkgICAgdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCisJICAgIDs7CisJICBlc2FjCiAJZG9uZQogCWRlcGxpYnM9IiR0bXBfZGVwbGlicyIKIAogCWlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KKwkgIGlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyIgJiYKKwkgICAgdGVzdCAiJGNvbXBpbGVyX25lZWRzX29iamVjdCIgPSB5ZXMgJiYKKwkgICAgdGVzdCAteiAiJGxpYm9ianMiOyB0aGVuCisJICAgICMgZXh0cmFjdCB0aGUgYXJjaGl2ZXMsIHNvIHdlIGhhdmUgb2JqZWN0cyB0byBsaXN0LgorCSAgICAjIFRPRE86IGNvdWxkIG9wdGltaXplIHRoaXMgdG8ganVzdCBleHRyYWN0IG9uZSBhcmNoaXZlLgorCSAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0KKwkgIGZpCiAJICBpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCiAJICAgIHNhdmVfbGlib2Jqcz0kbGlib2JqcwogCSAgICBldmFsIGxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKKwkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAkgIGVsc2UKIAkgICAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKIAkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCiAKIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCiAJICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCSAgZmkKIAlmaQotCQorCiAJaWYgdGVzdCAiJHRocmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgogCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCiAJICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZsYWciCkBAIC00MDcwLDcgKzcwODYsNyBAQAogCiAJIyBNYWtlIGEgYmFja3VwIG9mIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IHdoZW4gcmVsaW5raW5nCiAJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0JICAkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJHtyZWFsbmFtZX1VICYmICRtdiAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKScgfHwgZXhpdCAkPworCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKScgfHwgZXhpdCAkPwogCWZpCiAKIAkjIERvIGVhY2ggb2YgdGhlIGFyY2hpdmUgY29tbWFuZHMuCkBAIC00MDgzLDIyICs3MDk5LDI0IEBACiAJICAgIGNtZHM9JG1vZHVsZV9jbWRzCiAJICBmaQogCWVsc2UKLQlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgotCSAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiCi0JICBjbWRzPSRhcmNoaXZlX2V4cHN5bV9jbWRzCi0JZWxzZQotCSAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKLQkgIGNtZHM9JGFyY2hpdmVfY21kcworCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkYXJjaGl2ZV9leHBzeW1fY21kcyI7IHRoZW4KKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiCisJICAgIGNtZHM9JGFyY2hpdmVfZXhwc3ltX2NtZHMKKwkgIGVsc2UKKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKKwkgICAgY21kcz0kYXJjaGl2ZV9jbWRzCiAJICBmaQogCWZpCiAKIAlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmCi0JICAgbGVuPWBleHByICJYJHRlc3RfY21kcyIgOiAiLioiIDI+L2Rldi9udWxsYCAmJgotCSAgIHRlc3QgIiRsZW4iIC1sZSAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorCSAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIgJiYKKwkgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdCAmJgorCSAgIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgogCSAgOgogCWVsc2UKLQkgICMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIHBpZWNld2lzZS4KLQkgICRlY2hvICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKKwkgICMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIHBpZWNld2lzZQorCSAgIyBvciwgaWYgdXNpbmcgR05VIGxkIGFuZCBza2lwcGVkX2V4cG9ydCBpcyBub3QgOiwgdXNlIGEgbGlua2VyCisJICAjIHNjcmlwdC4KIAogCSAgIyBTYXZlIHRoZSB2YWx1ZSBvZiAkb3V0cHV0IGFuZCAkbGlib2JqcyBiZWNhdXNlIHdlIHdhbnQgdG8KIAkgICMgdXNlIHRoZW0gbGF0ZXIuICBJZiB3ZSBoYXZlIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCB3ZQpAQCAtNDExMiw3NyArNzEzMCwxNjIgQEAKIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCiAJICBmaQogCSAgc2F2ZV9vdXRwdXQ9JG91dHB1dAotCSAgb3V0cHV0X2xhPWAkZWNobyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisJICBvdXRwdXRfbGE9YCRFQ0hPICJYJG91dHB1dCIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKIAogCSAgIyBDbGVhciB0aGUgcmVsb2FkYWJsZSBvYmplY3QgY3JlYXRpb24gY29tbWFuZCBxdWV1ZSBhbmQKIAkgICMgaW5pdGlhbGl6ZSBrIHRvIG9uZS4KIAkgIHRlc3RfY21kcz0KIAkgIGNvbmNhdF9jbWRzPQogCSAgb2JqbGlzdD0KLQkgIGRlbGZpbGVzPQogCSAgbGFzdF9yb2JqPQogCSAgaz0xCi0JICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKLQkgICMgTG9vcCBvdmVyIHRoZSBsaXN0IG9mIG9iamVjdHMgdG8gYmUgbGlua2VkLgotCSAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCi0JICBkbwotCSAgICBldmFsIHRlc3RfY21kcz1cIiRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKLQkgICAgaWYgdGVzdCAiWCRvYmpsaXN0IiA9IFggfHwKLQkgICAgICAgeyBsZW49YGV4cHIgIlgkdGVzdF9jbWRzIiA6ICIuKiIgMj4vZGV2L251bGxgICYmCi0JCSB0ZXN0ICIkbGVuIiAtbGUgIiRtYXhfY21kX2xlbiI7IH07IHRoZW4KLQkgICAgICBvYmpsaXN0PSIkb2JqbGlzdCAkb2JqIgotCSAgICBlbHNlCi0JICAgICAgIyBUaGUgY29tbWFuZCAkdGVzdF9jbWRzIGlzIGFsbW9zdCB0b28gbG9uZywgYWRkIGEKLQkgICAgICAjIGNvbW1hbmQgdG8gdGhlIHF1ZXVlLgotCSAgICAgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KLQkJIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KLQkJZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKLQkgICAgICBlbHNlCi0JCSMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCi0JCSMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCi0JCWV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKLQkgICAgICBmaQotCSAgICAgIGxhc3Rfcm9iaj0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAotCSAgICAgIGs9YGV4cHIgJGsgKyAxYAotCSAgICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAotCSAgICAgIG9iamxpc3Q9JG9iagotCSAgICAgIGxlbj0xCisKKwkgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rc2NyaXB0CisJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgR05VIGxkIHNjcmlwdDogJG91dHB1dCIKKwkgICAgJEVDSE8gJ0lOUFVUICgnID4gJG91dHB1dAorCSAgICBmb3Igb2JqIGluICRzYXZlX2xpYm9ianMKKwkgICAgZG8KKwkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorCSAgICBkb25lCisJICAgICRFQ0hPICcpJyA+PiAkb3V0cHV0CisJICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKwkgIGVsaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICJYJGZpbGVfbGlzdF9zcGVjIiAhPSBYOyB0aGVuCisJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmsKKwkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBsaW5rZXIgaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgorCSAgICA6ID4gJG91dHB1dAorCSAgICBzZXQgeCAkc2F2ZV9saWJvYmpzCisJICAgIHNoaWZ0CisJICAgIGZpcnN0b2JqPQorCSAgICBpZiB0ZXN0ICIkY29tcGlsZXJfbmVlZHNfb2JqZWN0IiA9IHllczsgdGhlbgorCSAgICAgIGZpcnN0b2JqPSIkMSAiCisJICAgICAgc2hpZnQKIAkgICAgZmkKLQkgIGRvbmUKLQkgICMgSGFuZGxlIHRoZSByZW1haW5pbmcgb2JqZWN0cyBieSBjcmVhdGluZyBvbmUgbGFzdAotCSAgIyByZWxvYWRhYmxlIG9iamVjdCBmaWxlLiAgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QKLQkgICMgZmlsZXMgd2lsbCBsaW5rIGluIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgotCSAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0JICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCSAgICBmb3Igb2JqCisJICAgIGRvCisJICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKwkgICAgZG9uZQorCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisJICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRvdXRwdXRcIgorCSAgZWxzZQorCSAgICBpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIjsgdGhlbgorCSAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuLi4iCisJICAgICAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CisJICAgICAgZXZhbCB0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgorCSAgICAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKKwkgICAgICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKKwkgICAgICBsZW49JGxlbjAKIAotCSAgaWYgJHtza2lwcGVkX2V4cG9ydC1mYWxzZX07IHRoZW4KLQkgICAgJHNob3cgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIgotCSAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZXhwIgotCSAgICAkcnVuICRybSAkZXhwb3J0X3N5bWJvbHMKLQkgICAgbGlib2Jqcz0kb3V0cHV0Ci0JICAgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGUgZXhwb3J0IGZpbGUuCi0JICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRleHBvcnRfc3ltYm9sc19jbWRzXCIKLSAgICAgICAgICBmaQorCSAgICAgICMgTG9vcCBvdmVyIHRoZSBsaXN0IG9mIG9iamVjdHMgdG8gYmUgbGlua2VkLgorCSAgICAgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcworCSAgICAgIGRvCisJCWZ1bmNfbGVuICIgJG9iaiIKKwkJZnVuY19hcml0aCAkbGVuICsgJGZ1bmNfbGVuX3Jlc3VsdAorCQlsZW49JGZ1bmNfYXJpdGhfcmVzdWx0CisJCWlmIHRlc3QgIlgkb2JqbGlzdCIgPSBYIHx8CisJCSAgIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIjsgdGhlbgorCQkgIGZ1bmNfYXBwZW5kIG9iamxpc3QgIiAkb2JqIgorCQllbHNlCisJCSAgIyBUaGUgY29tbWFuZCAkdGVzdF9jbWRzIGlzIGFsbW9zdCB0b28gbG9uZywgYWRkIGEKKwkJICAjIGNvbW1hbmQgdG8gdGhlIHF1ZXVlLgorCQkgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KKwkJICAgICMgVGhlIGZpcnN0IGZpbGUgZG9lc24ndCBoYXZlIGEgcHJldmlvdXMgY29tbWFuZCB0byBhZGQuCisJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCQkgIGVsc2UKKwkJICAgICMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCisJCSAgICAjIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgorCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmp+XCRSTSAkbGFzdF9yb2JqXCIKKwkJICBmaQorCQkgIGxhc3Rfcm9iaj0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAorCQkgIGZ1bmNfYXJpdGggJGsgKyAxCisJCSAgaz0kZnVuY19hcml0aF9yZXN1bHQKKwkJICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKKwkJICBvYmpsaXN0PSRvYmoKKwkJICBmdW5jX2xlbiAiICRsYXN0X3JvYmoiCisJCSAgZnVuY19hcml0aCAkbGVuMCArICRmdW5jX2xlbl9yZXN1bHQKKwkJICBsZW49JGZ1bmNfYXJpdGhfcmVzdWx0CisJCWZpCisJICAgICAgZG9uZQorCSAgICAgICMgSGFuZGxlIHRoZSByZW1haW5pbmcgb2JqZWN0cyBieSBjcmVhdGluZyBvbmUgbGFzdAorCSAgICAgICMgcmVsb2FkYWJsZSBvYmplY3QgZmlsZS4gIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0CisJICAgICAgIyBmaWxlcyB3aWxsIGxpbmsgaW4gdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCisJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CisJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKKwkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgorCSAgICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIgorCSAgICAgIGZpCisJICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgogCi0JICAjIFNldCB1cCBhIGNvbW1hbmQgdG8gcmVtb3ZlIHRoZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlcwotCSAgIyBhZnRlciB0aGV5IGFyZSB1c2VkLgotCSAgaT0wCi0JICB3aGlsZSB0ZXN0ICIkaSIgLWx0ICIkayIKLQkgIGRvCi0JICAgIGk9YGV4cHIgJGkgKyAxYAotCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtpfS4kb2JqZXh0IgotCSAgZG9uZQorCSAgICBlbHNlCisJICAgICAgb3V0cHV0PQorCSAgICBmaQogCi0JICAkZWNobyAiY3JlYXRpbmcgYSB0ZW1wb3JhcnkgcmVsb2FkYWJsZSBvYmplY3QgZmlsZTogJG91dHB1dCIKKwkgICAgaWYgJHtza2lwcGVkX2V4cG9ydC1mYWxzZX07IHRoZW4KKwkgICAgICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIgorCSAgICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS5leHAiCisJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKKwkgICAgICBsaWJvYmpzPSRvdXRwdXQKKwkgICAgICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byBjcmVhdGUgdGhlIGV4cG9ydCBmaWxlLgorCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgorCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIgorCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCisJCWV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCisJICAgICAgZmkKKwkgICAgZmkKIAotCSAgIyBMb29wIHRocm91Z2ggdGhlIGNvbW1hbmRzIGdlbmVyYXRlZCBhYm92ZSBhbmQgZXhlY3V0ZSB0aGVtLgotCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0JICBmb3IgY21kIGluICRjb25jYXRfY21kczsgZG8KKwkgICAgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYKKwkgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIGEgdGVtcG9yYXJ5IHJlbG9hZGFibGUgb2JqZWN0IGZpbGU6ICRvdXRwdXQiCisKKwkgICAgIyBMb29wIHRocm91Z2ggdGhlIGNvbW1hbmRzIGdlbmVyYXRlZCBhYm92ZSBhbmQgZXhlY3V0ZSB0aGVtLgorCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKKwkgICAgZm9yIGNtZCBpbiAkY29uY2F0X2NtZHM7IGRvCisJICAgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgICAgJG9wdF9zaWxlbnQgfHwgeworCQkgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJGNtZCIKKwkJICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCisJICAgICAgfQorCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kIiB8fCB7CisJCWx0X2V4aXQ9JD8KKworCQkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKKwkJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJCSAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKKwkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCisJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQorCQlmaQorCisJCWV4aXQgJGx0X2V4aXQKKwkgICAgICB9CisJICAgIGRvbmUKIAkgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgICRzaG93ICIkY21kIgotCSAgICAkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KLQkgIGRvbmUKLQkgIElGUz0iJHNhdmVfaWZzIgorCisJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCIgJiYgJHtza2lwcGVkX2V4cG9ydC1mYWxzZX07IHRoZW4KKwkgICAgICBmdW5jX3Nob3dfZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkZXhwb3J0X3N5bWJvbHMiID4gIiR7ZXhwb3J0X3N5bWJvbHN9VCInCisJICAgICAgZnVuY19zaG93X2V2YWwgJyRNViAiJHtleHBvcnRfc3ltYm9sc31UIiAiJGV4cG9ydF9zeW1ib2xzIicKKwkgICAgZmkKKwkgIGZpCisKKyAgICAgICAgICBpZiAke3NraXBwZWRfZXhwb3J0LWZhbHNlfTsgdGhlbgorCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCisJICAgICAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCisJICAgICAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCisJICAgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICJYJGluY2x1ZGVfZXhwc3ltcyIgfCAkWHNlZCB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCisJICAgIGZpCisKKwkgICAgaWYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCisJICAgICAgIyBUaGUgZ2l2ZW4gZXhwb3J0c19zeW1ib2xzIGZpbGUgaGFzIHRvIGJlIGZpbHRlcmVkLCBzbyBmaWx0ZXIgaXQuCisJICAgICAgZnVuY192ZXJib3NlICJmaWx0ZXIgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIHRvIHRhZyBEQVRBIGV4cG9ydHMiCisJICAgICAgIyBGSVhNRTogJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIHBvdGVudGlhbGx5IGNvbnRhaW5zIGxvdHMgb2YKKwkgICAgICAjICdzJyBjb21tYW5kcyB3aGljaCBub3QgYWxsIHNlZHMgY2FuIGhhbmRsZS4gR05VIHNlZCBzaG91bGQgYmUgZmluZQorCSAgICAgICMgdGhvdWdoLiBBbHNvLCB0aGUgZmlsdGVyIHNjYWxlcyBzdXBlcmxpbmVhcmx5IHdpdGggdGhlIG51bWJlciBvZgorCSAgICAgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CisJICAgICAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKKwkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisJICAgICAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCisJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKKwkgICAgZmkKKwkgIGZpCiAKIAkgIGxpYm9ianM9JG91dHB1dAogCSAgIyBSZXN0b3JlIHRoZSB2YWx1ZSBvZiBvdXRwdXQuCkBAIC00MTkwLDYgKzcyOTMsNyBAQAogCiAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiICYmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KIAkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJICBmaQogCSAgIyBFeHBhbmQgdGhlIGxpYnJhcnkgbGlua2luZyBjb21tYW5kcyBhZ2FpbiB0byByZXNldCB0aGUKIAkgICMgdmFsdWUgb2YgJGxpYm9ianMgZm9yIHBpZWNld2lzZSBsaW5raW5nLgpAQCAtNDIwMiwyOCArNzMwNiw0NSBAQAogCSAgICAgIGNtZHM9JG1vZHVsZV9jbWRzCiAJICAgIGZpCiAJICBlbHNlCi0JICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgotCSAgICBjbWRzPSRhcmNoaXZlX2V4cHN5bV9jbWRzCi0JICBlbHNlCi0JICAgIGNtZHM9JGFyY2hpdmVfY21kcworCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgorCSAgICAgIGNtZHM9JGFyY2hpdmVfZXhwc3ltX2NtZHMKKwkgICAgZWxzZQorCSAgICAgIGNtZHM9JGFyY2hpdmVfY21kcwogCSAgICBmaQogCSAgZmkKLQotCSAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gcmVtb3ZlIHRoZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlcwotCSAgIyB0byB0aGUganVzdC1yZXNldCAkY21kcy4KLQkgIGV2YWwgY21kcz1cIlwkY21kc35cJHJtICRkZWxmaWxlc1wiCiAJZmkKKworCWlmIHRlc3QgLW4gIiRkZWxmaWxlcyI7IHRoZW4KKwkgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMgdG8gJGNtZHMuCisJICBldmFsIGNtZHM9XCJcJGNtZHN+XCRSTSAkZGVsZmlsZXNcIgorCWZpCisKKwkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKKwlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KKwkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCisJICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKworCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKKwkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKwlmaQorCiAJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCiAJZm9yIGNtZCBpbiAkY21kczsgZG8KIAkgIElGUz0iJHNhdmVfaWZzIgogCSAgZXZhbCBjbWQ9XCIkY21kXCIKLQkgICRzaG93ICIkY21kIgotCSAgJHJ1biBldmFsICIkY21kIiB8fCB7CisJICAkb3B0X3NpbGVudCB8fCB7CisJICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJGNtZCIKKwkgICAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgorCSAgfQorCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWQiIHx8IHsKIAkgICAgbHRfZXhpdD0kPwogCiAJICAgICMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAogCSAgICBpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLQkgICAgICAkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJHtyZWFsbmFtZX1UICYmICRtdiAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScKKwkgICAgICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAorCSAgICAgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKKwkJJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKIAkgICAgZmkKIAogCSAgICBleGl0ICRsdF9leGl0CkBAIC00MjMzLDEyICs3MzU0LDExIEBACiAKIAkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKIAlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLQkgICRydW4gZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRybSAke3JlYWxuYW1lfVQgJiYgJG12ICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJG12ICIkcmVhbG5hbWUiVSAkcmVhbG5hbWUpJyB8fCBleGl0ICQ/CisJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpJyB8fCBleGl0ICQ/CiAKIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KIAkgICAgaWYgdGVzdCAteiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotCSAgICAgICRzaG93ICIke3JtfXIgJGdlbnRvcCIKLQkgICAgICAkcnVuICR7cm19ciAiJGdlbnRvcCIKKwkgICAgICBmdW5jX3Nob3dfZXZhbCAnJHtSTX1yICIkZ2VudG9wIicKIAkgICAgZmkKIAkgIGZpCiAKQEAgLTQyNDgsOCArNzM2OCw3IEBACiAJIyBDcmVhdGUgbGlua3MgdG8gdGhlIHJlYWwgbGlicmFyeS4KIAlmb3IgbGlua25hbWUgaW4gJGxpbmtuYW1lczsgZG8KIAkgIGlmIHRlc3QgIiRyZWFsbmFtZSIgIT0gIiRsaW5rbmFtZSI7IHRoZW4KLQkgICAgJHNob3cgIihjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJGxpbmtuYW1lICYmICRMTl9TICRyZWFsbmFtZSAkbGlua25hbWUpIgotCSAgICAkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJGxpbmtuYW1lICYmICRMTl9TICRyZWFsbmFtZSAkbGlua25hbWUpJyB8fCBleGl0ICQ/CisJICAgIGZ1bmNfc2hvd19ldmFsICcoY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiAkUk0gIiRsaW5rbmFtZSIgJiYgJExOX1MgIiRyZWFsbmFtZSIgIiRsaW5rbmFtZSIpJyAnZXhpdCAkPycKIAkgIGZpCiAJZG9uZQogCkBAIC00MjYyLDM5ICs3MzgxLDM1IEBACiAgICAgICA7OwogCiAgICAgb2JqKQorICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KKwlmdW5jX3dhcm5pbmcgIlxgLWRsb3BlbicgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKKyAgICAgIGZpCisKICAgICAgIGNhc2UgIiAkZGVwbGlicyIgaW4KICAgICAgICpcIC1sKiB8ICpcIC1MKikKLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1sJyBhbmQgXGAtTCcgYXJlIGlnbm9yZWQgZm9yIG9iamVjdHMiIDE+JjIgOzsKKwlmdW5jX3dhcm5pbmcgIlxgLWwnIGFuZCBcYC1MJyBhcmUgaWdub3JlZCBmb3Igb2JqZWN0cyIgOzsKICAgICAgIGVzYWMKIAotICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkcnBhdGgiICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLXJwYXRoJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgogCi0gICAgICBpZiB0ZXN0IC1uICIkcnBhdGgiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcnBhdGgnIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkeHJwYXRoIiAmJiBcCisJZnVuY193YXJuaW5nICJcYC1SJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgogCi0gICAgICBpZiB0ZXN0IC1uICIkeHJwYXRoIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLVInIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkdmluZm8iICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLXZlcnNpb24taW5mbycgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKIAotICAgICAgaWYgdGVzdCAtbiAiJHZpbmZvIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXZlcnNpb24taW5mbycgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIgMT4mMgotICAgICAgZmkKLQotICAgICAgaWYgdGVzdCAtbiAiJHJlbGVhc2UiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIgMT4mMgotICAgICAgZmkKKyAgICAgIHRlc3QgLW4gIiRyZWxlYXNlIiAmJiBcCisJZnVuY193YXJuaW5nICJcYC1yZWxlYXNlJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgogCiAgICAgICBjYXNlICRvdXRwdXQgaW4KICAgICAgICoubG8pCi0JaWYgdGVzdCAtbiAiJG9ianMkb2xkX2RlcGxpYnMiOyB0aGVuCi0JICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgYnVpbGQgbGlicmFyeSBvYmplY3QgXGAkb3V0cHV0JyBmcm9tIG5vbi1saWJ0b29sIG9iamVjdHMiIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotCWZpCi0JbGlib2JqPSIkb3V0cHV0IgotCW9iaj1gJGVjaG8gIlgkb3V0cHV0IiB8ICRYc2VkIC1lICIkbG8ybyJgCisJdGVzdCAtbiAiJG9ianMkb2xkX2RlcGxpYnMiICYmIFwKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBidWlsZCBsaWJyYXJ5IG9iamVjdCBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyIKKworCWxpYm9iaj0kb3V0cHV0CisJZnVuY19sbzJvICIkbGlib2JqIgorCW9iaj0kZnVuY19sbzJvX3Jlc3VsdAogCTs7CiAgICAgICAqKQogCWxpYm9iaj0KQEAgLTQzMDMsNyArNzQxOCw3IEBACiAgICAgICBlc2FjCiAKICAgICAgICMgRGVsZXRlIHRoZSBvbGQgb2JqZWN0cy4KLSAgICAgICRydW4gJHJtICRvYmogJGxpYm9iagorICAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkb2JqICRsaWJvYmoKIAogICAgICAgIyBPYmplY3RzIGZyb20gY29udmVuaWVuY2UgbGlicmFyaWVzLiAgVGhpcyBhc3N1bWVzCiAgICAgICAjIHNpbmdsZS12ZXJzaW9uIGNvbnZlbmllbmNlIGxpYnJhcmllcy4gIFdoZW5ldmVyIHdlIGNyZWF0ZQpAQCAtNDMxOSw3ICs3NDM0LDcgQEAKICAgICAgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KIAlpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCiAJICBldmFsIHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKLQkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJGVjaG8gIlgkdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3MiIHwgJFhzZWQgLWUgJ3N8LHwgfGcnYAorCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiWCR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkWHNlZCAtZSAnc3wsfCB8ZydgCiAJZWxzZQogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke29ian14IgogCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCkBAIC00MzMwLDI0ICs3NDQ1LDE1IEBACiAgICAgICBmaQogCiAgICAgICAjIENyZWF0ZSB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqcyRvbGRfZGVwbGlicyAiYCRlY2hvICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0kJy9kJyAtZSAnL1wubGliJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYCIgJHJlbG9hZF9jb252X29ianMiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAorICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAnL1wuJyR7bGliZXh0fSQnL2QnIC1lICcvXC5saWIkL2QnIC1lICIkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CiAKICAgICAgIG91dHB1dD0iJG9iaiIKLSAgICAgIGNtZHM9JHJlbG9hZF9jbWRzCi0gICAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLSAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0JSUZTPSIkc2F2ZV9pZnMiCi0JZXZhbCBjbWQ9XCIkY21kXCIKLQkkc2hvdyAiJGNtZCIKLQkkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KLSAgICAgIGRvbmUKLSAgICAgIElGUz0iJHNhdmVfaWZzIgorICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRyZWxvYWRfY21kcyIgJ2V4aXQgJD8nCiAKICAgICAgICMgRXhpdCBpZiB3ZSBhcmVuJ3QgZG9pbmcgYSBsaWJyYXJ5IG9iamVjdCBmaWxlLgogICAgICAgaWYgdGVzdCAteiAiJGxpYm9iaiI7IHRoZW4KIAlpZiB0ZXN0IC1uICIkZ2VudG9wIjsgdGhlbgotCSAgJHNob3cgIiR7cm19ciAkZ2VudG9wIgotCSAgJHJ1biAke3JtfXIgJGdlbnRvcAorCSAgZnVuY19zaG93X2V2YWwgJyR7Uk19ciAiJGdlbnRvcCInCiAJZmkKIAogCWV4aXQgJEVYSVRfU1VDQ0VTUwpAQCAtNDM1NSwxNCArNzQ2MSwxMyBAQAogCiAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KIAlpZiB0ZXN0IC1uICIkZ2VudG9wIjsgdGhlbgotCSAgJHNob3cgIiR7cm19ciAkZ2VudG9wIgotCSAgJHJ1biAke3JtfXIgJGdlbnRvcAorCSAgZnVuY19zaG93X2V2YWwgJyR7Uk19ciAiJGdlbnRvcCInCiAJZmkKIAogCSMgQ3JlYXRlIGFuIGludmFsaWQgbGlidG9vbCBvYmplY3QgaWYgbm8gUElDLCBzbyB0aGF0IHdlIGRvbid0CiAJIyBhY2NpZGVudGFsbHkgbGluayBpdCBpbnRvIGEgcHJvZ3JhbS4KIAkjICRzaG93ICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiCi0JIyAkcnVuIGV2YWwgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIgfHwgZXhpdCAkPworCSMgJG9wdF9kcnlfcnVuIHx8IGV2YWwgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIgfHwgZXhpdCAkPwogCWV4aXQgJEVYSVRfU1VDQ0VTUwogICAgICAgZmkKIApAQCAtNDM3MCwyMCArNzQ3NSwxMSBAQAogCSMgT25seSBkbyBjb21tYW5kcyBpZiB3ZSByZWFsbHkgaGF2ZSBkaWZmZXJlbnQgUElDIG9iamVjdHMuCiAJcmVsb2FkX29ianM9IiRsaWJvYmpzICRyZWxvYWRfY29udl9vYmpzIgogCW91dHB1dD0iJGxpYm9iaiIKLQljbWRzPSRyZWxvYWRfY21kcwotCXNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCWZvciBjbWQgaW4gJGNtZHM7IGRvCi0JICBJRlM9IiRzYXZlX2lmcyIKLQkgIGV2YWwgY21kPVwiJGNtZFwiCi0JICAkc2hvdyAiJGNtZCIKLQkgICRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPwotCWRvbmUKLQlJRlM9IiRzYXZlX2lmcyIKKwlmdW5jX2V4ZWN1dGVfY21kcyAiJHJlbG9hZF9jbWRzIiAnZXhpdCAkPycKICAgICAgIGZpCiAKICAgICAgIGlmIHRlc3QgLW4gIiRnZW50b3AiOyB0aGVuCi0JJHNob3cgIiR7cm19ciAkZ2VudG9wIgotCSRydW4gJHtybX1yICRnZW50b3AKKwlmdW5jX3Nob3dfZXZhbCAnJHtSTX1yICIkZ2VudG9wIicKICAgICAgIGZpCiAKICAgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwpAQCAtNDM5MSwzOSArNzQ4Nyw0NSBAQAogCiAgICAgcHJvZykKICAgICAgIGNhc2UgJGhvc3QgaW4KLQkqY3lnd2luKikgb3V0cHV0PWAkZWNobyAkb3V0cHV0IHwgJHtTRUR9IC1lICdzLC5leGUkLCw7cywkLC5leGUsJ2AgOzsKKwkqY3lnd2luKikgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkb3V0cHV0IgorCSAgICAgICAgICBvdXRwdXQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC5leGU7OwogICAgICAgZXNhYwotICAgICAgaWYgdGVzdCAtbiAiJHZpbmZvIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXZlcnNpb24taW5mbycgaXMgaWdub3JlZCBmb3IgcHJvZ3JhbXMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkdmluZm8iICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLXZlcnNpb24taW5mbycgaXMgaWdub3JlZCBmb3IgcHJvZ3JhbXMiCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRyZWxlYXNlIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIHByb2dyYW1zIiAxPiYyCi0gICAgICBmaQorICAgICAgdGVzdCAtbiAiJHJlbGVhc2UiICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIHByb2dyYW1zIgogCi0gICAgICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXM7IHRoZW4KLQlpZiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0gdW5rbm93biAmJiB0ZXN0ICIkZGxvcGVuX3NlbGYiID0gdW5rbm93biAmJgotCSAgIHRlc3QgIiRkbG9wZW5fc2VsZl9zdGF0aWMiID0gdW5rbm93bjsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGBBQ19MSUJUT09MX0RMT1BFTicgbm90IHVzZWQuIEFzc3VtaW5nIG5vIGRsb3BlbiBzdXBwb3J0LiIKLQlmaQotICAgICAgZmkKKyAgICAgIHRlc3QgIiRwcmVsb2FkIiA9IHllcyBcCisgICAgICAgICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB1bmtub3duIFwKKwkmJiB0ZXN0ICIkZGxvcGVuX3NlbGYiID0gdW5rbm93biBcCisJJiYgdGVzdCAiJGRsb3Blbl9zZWxmX3N0YXRpYyIgPSB1bmtub3duICYmIFwKKwkgIGZ1bmNfd2FybmluZyAiXGBMVF9JTklUKFtkbG9wZW5dKScgbm90IHVzZWQuIEFzc3VtaW5nIG5vIGRsb3BlbiBzdXBwb3J0LiIKIAogICAgICAgY2FzZSAkaG9zdCBpbgogICAgICAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IGlzIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JY29tcGlsZV9kZXBsaWJzPWAkZWNobyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyAtZnJhbWV3b3JrIFN5c3RlbSAvJ2AKLQlmaW5hbGl6ZV9kZXBsaWJzPWAkZWNobyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gLWZyYW1ld29yayBTeXN0ZW0gLydgCisJY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIlggJGZpbmFsaXplX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKIAk7OwogICAgICAgZXNhYwogCiAgICAgICBjYXNlICRob3N0IGluCi0gICAgICAqZGFyd2luKikKLSAgICAgICAgIyBEb24ndCBhbGxvdyBsYXp5IGxpbmtpbmcsIGl0IGJyZWFrcyBDKysgZ2xvYmFsIGNvbnN0cnVjdG9ycwotICAgICAgICBpZiB0ZXN0ICIkdGFnbmFtZSIgPSBDWFggOyB0aGVuCi0gICAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCi0gICAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKLSAgICAgICAgZmkKLSAgICAgICAgOzsKKyAgICAgICotKi1kYXJ3aW4qKQorCSMgRG9uJ3QgYWxsb3cgbGF6eSBsaW5raW5nLCBpdCBicmVha3MgQysrIGdsb2JhbCBjb25zdHJ1Y3RvcnMKKwkjIEJ1dCBpcyBzdXBwb3NlZGx5IGZpeGVkIG9uIDEwLjQgb3IgbGF0ZXIgKHlheSEpLgorCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KKwkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KKwkgICAgMTAuWzAxMjNdKQorCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCisJICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgorCSAgICA7OworCSAgZXNhYworCWZpCisJIyBUaW1lIHRvIGNoYW5nZSBhbGwgb3VyICJmb28ubHRmcmFtZXdvcmsiIHN0dWZmIGJhY2sgdG8gIi1mcmFtZXdvcmsgZm9vIgorCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIlggJGNvbXBpbGVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwk7OwogICAgICAgZXNhYwogCiAKQEAgLTQ0OTgsMTQgKzc2MDAsMTYgQEAKIAkgIGVzYWMKIAlmaQogCWNhc2UgJGhvc3QgaW4KLQkqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKikKLQkgIHRlc3RiaW5kaXI9YCRlY2hvICJYJGxpYmRpciIgfCAkWHNlZCAtZSAncyovbGliJCovYmluKidgCisJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKKwkgIHRlc3RiaW5kaXI9YCR7RUNIT30gIiRsaWJkaXIiIHwgJHtTRUR9IC1lICdzKi9saWIkKi9iaW4qJ2AKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JGxpYmRpcjoiKikgOzsKKwkgIDo6KSBkbGxzZWFyY2hwYXRoPSRsaWJkaXI7OwogCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGxpYmRpciI7OwogCSAgZXNhYwogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKKwkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKIAkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CiAJICBlc2FjCiAJICA7OwpAQCAtNDU1NywyODEgKzc2NjEsNTEgQEAKIAogICAgICAgaWYgdGVzdCAtbiAiJGxpYm9ianMiICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KIAkjIFRyYW5zZm9ybSBhbGwgdGhlIGxpYnJhcnkgb2JqZWN0cyBpbnRvIHN0YW5kYXJkIG9iamVjdHMuCi0JY29tcGlsZV9jb21tYW5kPWAkZWNobyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKLQlmaW5hbGl6ZV9jb21tYW5kPWAkZWNobyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwlmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCiAgICAgICBmaQogCi0gICAgICBkbHN5bXM9Ci0gICAgICBpZiB0ZXN0IC1uICIkZGxmaWxlcyRkbHByZWZpbGVzIiB8fCB0ZXN0ICIkZGxzZWxmIiAhPSBubzsgdGhlbgotCWlmIHRlc3QgLW4gIiROTSIgJiYgdGVzdCAtbiAiJGdsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLQkgIGRsc3ltcz0iJHtvdXRwdXRuYW1lfVMuYyIKLQllbHNlCi0JICAkZWNobyAiJG1vZGVuYW1lOiBub3QgY29uZmlndXJlZCB0byBleHRyYWN0IGdsb2JhbCBzeW1ib2xzIGZyb20gZGxwcmVvcGVuZWQgZmlsZXMiIDE+JjIKLQlmaQorICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRvdXRwdXRuYW1lIiAiQFBST0dSQU1AIiAibm8iCisKKyAgICAgICMgdGVtcGxhdGUgcHJlbGlua2luZyBzdGVwCisgICAgICBpZiB0ZXN0IC1uICIkcHJlbGlua19jbWRzIjsgdGhlbgorCWZ1bmNfZXhlY3V0ZV9jbWRzICIkcHJlbGlua19jbWRzIiAnZXhpdCAkPycKICAgICAgIGZpCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRkbHN5bXMiOyB0aGVuCi0JY2FzZSAkZGxzeW1zIGluCi0JIiIpIDs7Ci0JKi5jKQotCSAgIyBEaXNjb3ZlciB0aGUgbmxpc3Qgb2YgZWFjaCBvZiB0aGUgZGxmaWxlcy4KLQkgIG5saXN0PSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Lm5tIgotCi0JICAkc2hvdyAiJHJtICRubGlzdCAke25saXN0fVMgJHtubGlzdH1UIgotCSAgJHJ1biAkcm0gIiRubGlzdCIgIiR7bmxpc3R9UyIgIiR7bmxpc3R9VCIKLQotCSAgIyBQYXJzZSB0aGUgbmFtZSBsaXN0IGludG8gYSBzb3VyY2UgZmlsZS4KLQkgICRzaG93ICJjcmVhdGluZyAkb3V0cHV0X29iamRpci8kZGxzeW1zIgotCi0JICB0ZXN0IC16ICIkcnVuIiAmJiAkZWNobyA+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAiXAotLyogJGRsc3ltcyAtIHN5bWJvbCByZXNvbHV0aW9uIHRhYmxlIGZvciBcYCRvdXRwdXRuYW1lJyBkbHN5bSBlbXVsYXRpb24uICovCi0vKiBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gLSBHTlUgJFBBQ0tBR0UgJFZFUlNJT04kVElNRVNUQU1QICovCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuIFwiQ1wiIHsKLSNlbmRpZgotCi0vKiBQcmV2ZW50IHRoZSBvbmx5IGtpbmQgb2YgZGVjbGFyYXRpb24gY29uZmxpY3RzIHdlIGNhbiBtYWtlLiAqLwotI2RlZmluZSBsdF9wcmVsb2FkZWRfc3ltYm9scyBzb21lX290aGVyX3N5bWJvbAotCi0vKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAotIgotCi0JICBpZiB0ZXN0ICIkZGxzZWxmIiA9IHllczsgdGhlbgotCSAgICAkc2hvdyAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgXGAkb3V0cHV0JyIKLQotCSAgICB0ZXN0IC16ICIkcnVuIiAmJiAkZWNobyAnOiBAUFJPR1JBTUAgJyA+ICIkbmxpc3QiCi0KLQkgICAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgotCSAgICBwcm9nZmlsZXM9YCRlY2hvICJYJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKLQkgICAgZm9yIGFyZyBpbiAkcHJvZ2ZpbGVzOyBkbwotCSAgICAgICRzaG93ICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRhcmcnIgotCSAgICAgICRydW4gZXZhbCAiJE5NICRhcmcgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotCSAgICBkb25lCi0KLQkgICAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KLQkgICAgICAkcnVuIGV2YWwgJyRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUJwotCSAgICAgICRydW4gZXZhbCAnJG12ICIkbmxpc3QiVCAiJG5saXN0IicKLQkgICAgZmkKLQotCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCi0JICAgICAgJHJ1biBldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCi0JICAgICAgJHJ1biBldmFsICckbXYgIiRubGlzdCJUICIkbmxpc3QiJwotCSAgICBmaQotCi0JICAgICMgUHJlcGFyZSB0aGUgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzCi0JICAgIGlmIHRlc3QgLXogIiRleHBvcnRfc3ltYm9scyI7IHRoZW4KLQkgICAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgotCSAgICAgICRydW4gJHJtICRleHBvcnRfc3ltYm9scwotCSAgICAgICRydW4gZXZhbCAiJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgIic8ICIkbmxpc3QiID4gIiRleHBvcnRfc3ltYm9scyInCi0gICAgICAgICAgICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICAgICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqICkKLQkgICAgICAgICRydW4gZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLQkJJHJ1biBldmFsICdjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCi0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICAgZXNhYwotCSAgICBlbHNlCi0JICAgICAgJHJ1biBldmFsICIke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyInIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIicKLQkgICAgICAkcnVuIGV2YWwgJ2dyZXAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKLQkgICAgICAkcnVuIGV2YWwgJ212ICIkbmxpc3QiVCAiJG5saXN0IicKLSAgICAgICAgICAgICAgY2FzZSAkaG9zdCBpbgotICAgICAgICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogKQotCSAgICAgICAgJHJ1biBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotCQkkcnVuIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgICBlc2FjCi0JICAgIGZpCi0JICBmaQotCi0JICBmb3IgYXJnIGluICRkbHByZWZpbGVzOyBkbwotCSAgICAkc2hvdyAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkYXJnJyIKLQkgICAgbmFtZT1gJGVjaG8gIiRhcmciIHwgJHtTRUR9IC1lICdzJV4uKi8lJSdgCi0JICAgICRydW4gZXZhbCAnJGVjaG8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKLQkgICAgJHJ1biBldmFsICIkTk0gJGFyZyB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0JICBkb25lCi0KLQkgIGlmIHRlc3QgLXogIiRydW4iOyB0aGVuCi0JICAgICMgTWFrZSBzdXJlIHdlIGhhdmUgYXQgbGVhc3QgYW4gZW1wdHkgZmlsZS4KLQkgICAgdGVzdCAtZiAiJG5saXN0IiB8fCA6ID4gIiRubGlzdCIKLQotCSAgICBpZiB0ZXN0IC1uICIkZXhjbHVkZV9leHBzeW1zIjsgdGhlbgotCSAgICAgICRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUCi0JICAgICAgJG12ICIkbmxpc3QiVCAiJG5saXN0IgotCSAgICBmaQotCi0JICAgICMgVHJ5IHNvcnRpbmcgYW5kIHVuaXF1aWZ5aW5nIHRoZSBvdXRwdXQuCi0JICAgIGlmIGdyZXAgLXYgIl46ICIgPCAiJG5saXN0IiB8Ci0JCWlmIHNvcnQgLWsgMyA8L2Rldi9udWxsID4vZGV2L251bGwgMj4mMTsgdGhlbgotCQkgIHNvcnQgLWsgMwotCQllbHNlCi0JCSAgc29ydCArMgotCQlmaSB8Ci0JCXVuaXEgPiAiJG5saXN0IlM7IHRoZW4KLQkgICAgICA6Ci0JICAgIGVsc2UKLQkgICAgICBncmVwIC12ICJeOiAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlMKLQkgICAgZmkKLQotCSAgICBpZiB0ZXN0IC1mICIkbmxpc3QiUzsgdGhlbgotCSAgICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NkZWNsIicgPCAiJG5saXN0IlMgPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiJwotCSAgICBlbHNlCi0JICAgICAgJGVjaG8gJy8qIE5PTkUgKi8nID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIgotCSAgICBmaQotCi0JICAgICRlY2hvID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAiXAotCi0jdW5kZWYgbHRfcHJlbG9hZGVkX3N5bWJvbHMKLQotI2lmIGRlZmluZWQgKF9fU1REQ19fKSAmJiBfX1NURENfXwotIyBkZWZpbmUgbHRfcHRyIHZvaWQgKgotI2Vsc2UKLSMgZGVmaW5lIGx0X3B0ciBjaGFyICoKLSMgZGVmaW5lIGNvbnN0Ci0jZW5kaWYKLQotLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICovCi0iCi0KLQkgICAgY2FzZSAkaG9zdCBpbgotCSAgICAqY3lnd2luKiB8ICptaW5ndyogKQotCSAgJGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiICJcCi0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNhbid0IGJlIGNvbnN0LCBiZWNhdXNlCi0gICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgotICAgb24gcHNldWRvLXJlbG9jcyAqLwotc3RydWN0IHsKLSIKLQkgICAgICA7OwotCSAgICAqICkKLQkgICRlY2hvID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAiXAotY29uc3Qgc3RydWN0IHsKLSIKLQkgICAgICA7OwotCSAgICBlc2FjCi0KLQotCSAgJGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiICJcCi0gIGNvbnN0IGNoYXIgKm5hbWU7Ci0gIGx0X3B0ciBhZGRyZXNzOwotfQotbHRfcHJlbG9hZGVkX3N5bWJvbHNbXSA9Ci17XAotIgotCi0JICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiA8ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIgotCi0JICAgICRlY2hvID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAiXAotICB7MCwgKGx0X3B0cikgMH0KLX07Ci0KLS8qIFRoaXMgd29ya3MgYXJvdW5kIGEgcHJvYmxlbSBpbiBGcmVlQlNEIGxpbmtlciAqLwotI2lmZGVmIEZSRUVCU0RfV09SS0FST1VORAotc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSAgcmV0dXJuIGx0X3ByZWxvYWRlZF9zeW1ib2xzOwotfQotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmXAotIgotCSAgZmkKLQotCSAgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPQotCSAgY2FzZSAkaG9zdCBpbgotCSAgIyBjb21waWxpbmcgdGhlIHN5bWJvbCB0YWJsZSBmaWxlIHdpdGggcGljX2ZsYWcgd29ya3MgYXJvdW5kCi0JICAjIGEgRnJlZUJTRCBidWcgdGhhdCBjYXVzZXMgcHJvZ3JhbXMgdG8gY3Jhc2ggd2hlbiAtbG0gaXMKLQkgICMgbGlua2VkIGJlZm9yZSBhbnkgb3RoZXIgUElDIG9iamVjdC4gIEJ1dCB3ZSBtdXN0IG5vdCB1c2UKLQkgICMgcGljX2ZsYWcgd2hlbiBsaW5raW5nIHdpdGggLXN0YXRpYy4gIFRoZSBwcm9ibGVtIGV4aXN0cyBpbgotCSAgIyBGcmVlQlNEIDIuMi42IGFuZCBpcyBmaXhlZCBpbiBGcmVlQlNEIDMuMS4KLQkgICotKi1mcmVlYnNkMip8Ki0qLWZyZWVic2QzLjAqfCotKi1mcmVlYnNkZWxmMy4wKikKLQkgICAgY2FzZSAiJGNvbXBpbGVfY29tbWFuZCAiIGluCi0JICAgICoiIC1zdGF0aWMgIiopIDs7Ci0JICAgICopIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNfZmxhZyAtREZSRUVCU0RfV09SS0FST1VORCI7OwotCSAgICBlc2FjOzsKLQkgICotKi1ocHV4KikKLQkgICAgY2FzZSAiJGNvbXBpbGVfY29tbWFuZCAiIGluCi0JICAgICoiIC1zdGF0aWMgIiopIDs7Ci0JICAgICopIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNfZmxhZyI7OwotCSAgICBlc2FjCi0JICBlc2FjCi0KLQkgICMgTm93IGNvbXBpbGUgdGhlIGR5bmFtaWMgc3ltYm9sIGZpbGUuCi0JICAkc2hvdyAiKGNkICRvdXRwdXRfb2JqZGlyICYmICRMVENDICAkTFRDRkxBR1MgLWMkbm9fYnVpbHRpbl9mbGFnJHBpY19mbGFnX2Zvcl9zeW10YWJsZSBcIiRkbHN5bXNcIikiCi0JICAkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkTFRDQyAgJExUQ0ZMQUdTIC1jJG5vX2J1aWx0aW5fZmxhZyRwaWNfZmxhZ19mb3Jfc3ltdGFibGUgIiRkbHN5bXMiKScgfHwgZXhpdCAkPwotCi0JICAjIENsZWFuIHVwIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCi0JICAkc2hvdyAiJHJtICRvdXRwdXRfb2JqZGlyLyRkbHN5bXMgJG5saXN0ICR7bmxpc3R9UyAke25saXN0fVQiCi0JICAkcnVuICRybSAiJG91dHB1dF9vYmpkaXIvJGRsc3ltcyIgIiRubGlzdCIgIiR7bmxpc3R9UyIgIiR7bmxpc3R9VCIKLQotCSAgIyBUcmFuc2Zvcm0gdGhlIHN5bWJvbCBmaWxlIGludG8gdGhlIGNvcnJlY3QgbmFtZS4KLSAgICAgICAgICBjYXNlICRob3N0IGluCi0gICAgICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqICkKLSAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX0uZGVmIiA7IHRoZW4KLSAgICAgICAgICAgICAgY29tcGlsZV9jb21tYW5kPWAkZWNobyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX0uZGVmICRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSUiIHwgJE5MMlNQYAotICAgICAgICAgICAgICBmaW5hbGl6ZV9jb21tYW5kPWAkZWNobyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9LmRlZiAkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0lIiB8ICROTDJTUGAKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgY29tcGlsZV9jb21tYW5kPWAkZWNobyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSUiIHwgJE5MMlNQYAotICAgICAgICAgICAgICBmaW5hbGl6ZV9jb21tYW5kPWAkZWNobyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0lIiB8ICROTDJTUGAKLSAgICAgICAgICAgICBmaQotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqICkKLSAgICAgICAgICAgIGNvbXBpbGVfY29tbWFuZD1gJGVjaG8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0lIiB8ICROTDJTUGAKLSAgICAgICAgICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRlY2hvICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSUiIHwgJE5MMlNQYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICBlc2FjCi0JICA7OwotCSopCi0JICAkZWNobyAiJG1vZGVuYW1lOiB1bmtub3duIHN1ZmZpeCBmb3IgXGAkZGxzeW1zJyIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICA7OwotCWVzYWMKLSAgICAgIGVsc2UKLQkjIFdlIGtlZXAgZ29pbmcganVzdCBpbiBjYXNlIHRoZSB1c2VyIGRpZG4ndCByZWZlciB0bwotCSMgbHRfcHJlbG9hZGVkX3N5bWJvbHMuICBUaGUgbGlua2VyIHdpbGwgZmFpbCBpZiBnbG9iYWxfc3ltYm9sX3BpcGUKLQkjIHJlYWxseSB3YXMgcmVxdWlyZWQuCi0KLQkjIE51bGxpZnkgdGhlIHN5bWJvbCBmaWxlLgotCWNvbXBpbGVfY29tbWFuZD1gJGVjaG8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICJzJSBAU1lNRklMRUAlJSIgfCAkTkwyU1BgCi0JZmluYWxpemVfY29tbWFuZD1gJGVjaG8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAicyUgQFNZTUZJTEVAJSUiIHwgJE5MMlNQYAotICAgICAgZmkKLQotICAgICAgaWYgdGVzdCAiJG5lZWRfcmVsaW5rIiA9IG5vIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgorICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9eWVzCisgICAgICBjYXNlICRob3N0IGluCisgICAgICAqY3lnd2luKiB8ICptaW5ndyogKQorICAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubworICAgICAgICBmaQorICAgICAgICA7OworICAgICAgKmNlZ2NjKQorICAgICAgICAjIERpc2FibGUgd3JhcHBlcnMgZm9yIGNlZ2NjLCB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIGFueXdheS4KKyAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIGlmIHRlc3QgIiRuZWVkX3JlbGluayIgPSBubyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubworICAgICAgICBmaQorICAgICAgICA7OworICAgICAgZXNhYworICAgICAgaWYgdGVzdCAiJHdyYXBwZXJzX3JlcXVpcmVkIiA9IG5vOyB0aGVuCiAJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCWNvbXBpbGVfY29tbWFuZD1gJGVjaG8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIHwgJE5MMlNQYAorCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAogCWxpbmtfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIgogCiAJIyBXZSBoYXZlIG5vIHVuaW5zdGFsbGVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzLCBzbyBmaW5hbGl6ZSByaWdodCBub3cuCi0JJHNob3cgIiRsaW5rX2NvbW1hbmQiCi0JJHJ1biBldmFsICIkbGlua19jb21tYW5kIgotCWV4aXRfc3RhdHVzPSQ/CisJZXhpdF9zdGF0dXM9MAorCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdF9zdGF0dXM9JD8nCiAKIAkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgotCWlmIHRlc3QgLW4gIiRkbHN5bXMiOyB0aGVuCi0JICAkc2hvdyAiJHJtICRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSIKLQkgICRydW4gJHJtICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iCisJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IjsgdGhlbgorCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKIAlmaQogCiAJZXhpdCAkZXhpdF9zdGF0dXMKICAgICAgIGZpCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotCSMgV2Ugc2hvdWxkIHNldCB0aGUgc2hsaWJwYXRoX3ZhcgotCXJwYXRoPQotCWZvciBkaXIgaW4gJHRlbXBfcnBhdGg7IGRvCi0JICBjYXNlICRkaXIgaW4KLQkgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikKLQkgICAgIyBBYnNvbHV0ZSBwYXRoLgotCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCi0JICAgIDs7Ci0JICAqKQotCSAgICAjIFJlbGF0aXZlIHBhdGg6IGFkZCBhIHRoaXNkaXIgZW50cnkuCi0JICAgIHJwYXRoPSIkcnBhdGhcJHRoaXNkaXIvJGRpcjoiCi0JICAgIDs7Ci0JICBlc2FjCi0JZG9uZQotCXRlbXBfcnBhdGg9IiRycGF0aCIKLSAgICAgIGZpCi0KICAgICAgIGlmIHRlc3QgLW4gIiRjb21waWxlX3NobGlicGF0aCRmaW5hbGl6ZV9zaGxpYnBhdGgiOyB0aGVuCiAJY29tcGlsZV9jb21tYW5kPSIkc2hsaWJwYXRoX3Zhcj1cIiRjb21waWxlX3NobGlicGF0aCRmaW5hbGl6ZV9zaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyXCIgJGNvbXBpbGVfY29tbWFuZCIKICAgICAgIGZpCkBAIC00ODY0LDEyICs3NzM4LDExIEBACiAJIyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0LgogCWxpbmtfY29tbWFuZD0iJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIgogCSMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLQlsaW5rX2NvbW1hbmQ9YCRlY2hvICJYJGxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKKwlsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJGxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKIAkjIERlbGV0ZSB0aGUgb2xkIG91dHB1dCBmaWxlLgotCSRydW4gJHJtICRvdXRwdXQKKwkkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQKIAkjIExpbmsgdGhlIGV4ZWN1dGFibGUgYW5kIGV4aXQKLQkkc2hvdyAiJGxpbmtfY29tbWFuZCIKLQkkcnVuIGV2YWwgIiRsaW5rX2NvbW1hbmQiIHx8IGV4aXQgJD8KKwlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCiAJZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgICBmaQogCkBAIC00ODc4LDEzICs3NzUxLDEzIEBACiAJbGlua19jb21tYW5kPSIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCiAJcmVsaW5rX2NvbW1hbmQ9IiRmaW5hbGl6ZV92YXIkZmluYWxpemVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aCIKIAotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IHRoaXMgcGxhdGZvcm0gZG9lcyBub3QgbGlrZSB1bmluc3RhbGxlZCBzaGFyZWQgbGlicmFyaWVzIiAxPiYyCi0JJGVjaG8gIiRtb2RlbmFtZTogXGAkb3V0cHV0JyB3aWxsIGJlIHJlbGlua2VkIGR1cmluZyBpbnN0YWxsYXRpb24iIDE+JjIKKwlmdW5jX3dhcm5pbmcgInRoaXMgcGxhdGZvcm0gZG9lcyBub3QgbGlrZSB1bmluc3RhbGxlZCBzaGFyZWQgbGlicmFyaWVzIgorCWZ1bmNfd2FybmluZyAiXGAkb3V0cHV0JyB3aWxsIGJlIHJlbGlua2VkIGR1cmluZyBpbnN0YWxsYXRpb24iCiAgICAgICBlbHNlCiAJaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgIT0gbm87IHRoZW4KIAkgIGxpbmtfY29tbWFuZD0iJGZpbmFsaXplX3ZhciRjb21waWxlX2NvbW1hbmQkZmluYWxpemVfcnBhdGgiCiAJICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllczsgdGhlbgotCSAgICByZWxpbmtfY29tbWFuZD1gJGVjaG8gIlgkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlXCRwcm9nZGlyL1wkZmlsZSVnJyB8ICROTDJTUGAKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJVwkcHJvZ2Rpci9cJGZpbGUlZydgCiAJICBlbHNlCiAJICAgICMgZmFzdF9pbnN0YWxsIGlzIHNldCB0byBuZWVkbGVzcwogCSAgICByZWxpbmtfY29tbWFuZD0KQEAgLTQ4OTYsNjA4ICs3NzY5LDEwMyBAQAogICAgICAgZmkKIAogICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotICAgICAgbGlua19jb21tYW5kPWAkZWNobyAiWCRsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnYAorICAgICAgbGlua19jb21tYW5kPWAkRUNITyAiWCRsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnYAogCiAgICAgICAjIERlbGV0ZSB0aGUgb2xkIG91dHB1dCBmaWxlcy4KLSAgICAgICRydW4gJHJtICRvdXRwdXQgJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUgJG91dHB1dF9vYmpkaXIvbHQtJG91dHB1dG5hbWUKKyAgICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJG91dHB1dCAkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSAkb3V0cHV0X29iamRpci9sdC0kb3V0cHV0bmFtZQogCi0gICAgICAkc2hvdyAiJGxpbmtfY29tbWFuZCIKLSAgICAgICRydW4gZXZhbCAiJGxpbmtfY29tbWFuZCIgfHwgZXhpdCAkPworICAgICAgZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JwogCiAgICAgICAjIE5vdyBjcmVhdGUgdGhlIHdyYXBwZXIgc2NyaXB0LgotICAgICAgJHNob3cgImNyZWF0aW5nICRvdXRwdXQiCisgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCiAKICAgICAgICMgUXVvdGUgdGhlIHJlbGluayBjb21tYW5kIGZvciBzaGlwcGluZy4KICAgICAgIGlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KIAkjIFByZXNlcnZlIGFueSB2YXJpYWJsZXMgdGhhdCBtYXkgYWZmZWN0IGNvbXBpbGVyIGJlaGF2aW9yCiAJZm9yIHZhciBpbiAkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms7IGRvCiAJICBpZiBldmFsIHRlc3QgLXogXCJcJHskdmFyK3NldH1cIjsgdGhlbgotCSAgICByZWxpbmtfY29tbWFuZD0ieyB0ZXN0IC16IFwiXCR7JHZhcitzZXR9XCIgfHwgdW5zZXQgJHZhciB8fCB7ICR2YXI9OyBleHBvcnQgJHZhcjsgfTsgfTsgJHJlbGlua19jb21tYW5kIgorCSAgICByZWxpbmtfY29tbWFuZD0ieyB0ZXN0IC16IFwiXCR7JHZhcitzZXR9XCIgfHwgJGx0X3Vuc2V0ICR2YXIgfHwgeyAkdmFyPTsgZXhwb3J0ICR2YXI7IH07IH07ICRyZWxpbmtfY29tbWFuZCIKIAkgIGVsaWYgZXZhbCB2YXJfdmFsdWU9XCQkdmFyOyB0ZXN0IC16ICIkdmFyX3ZhbHVlIjsgdGhlbgogCSAgICByZWxpbmtfY29tbWFuZD0iJHZhcj07IGV4cG9ydCAkdmFyOyAkcmVsaW5rX2NvbW1hbmQiCiAJICBlbHNlCi0JICAgIHZhcl92YWx1ZT1gJGVjaG8gIlgkdmFyX3ZhbHVlIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQkgICAgcmVsaW5rX2NvbW1hbmQ9IiR2YXI9XCIkdmFyX3ZhbHVlXCI7IGV4cG9ydCAkdmFyOyAkcmVsaW5rX2NvbW1hbmQiCisJICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR2YXJfdmFsdWUiCisJICAgIHJlbGlua19jb21tYW5kPSIkdmFyPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdDsgZXhwb3J0ICR2YXI7ICRyZWxpbmtfY29tbWFuZCIKIAkgIGZpCiAJZG9uZQogCXJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRyZWxpbmtfY29tbWFuZCkiCi0JcmVsaW5rX2NvbW1hbmQ9YCRlY2hvICJYJHJlbGlua19jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0IiB8ICROTDJTUGAKKwlyZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICAgZmkKIAotICAgICAgIyBRdW90ZSAkZWNobyBmb3Igc2hpcHBpbmcuCi0gICAgICBpZiB0ZXN0ICJYJGVjaG8iID0gIlgkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KKyAgICAgICMgUXVvdGUgJEVDSE8gZm9yIHNoaXBwaW5nLgorICAgICAgaWYgdGVzdCAiWCRFQ0hPIiA9ICJYJFNIRUxMICRwcm9ncGF0aCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCiAJY2FzZSAkcHJvZ3BhdGggaW4KIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHFlY2hvPSIkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7OwogCSopIHFlY2hvPSIkU0hFTEwgYHB3ZGAvJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7OwogCWVzYWMKLQlxZWNobz1gJGVjaG8gIlgkcWVjaG8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorCXFlY2hvPWAkRUNITyAiWCRxZWNobyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCiAgICAgICBlbHNlCi0JcWVjaG89YCRlY2hvICJYJGVjaG8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorCXFlY2hvPWAkRUNITyAiWCRFQ0hPIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKICAgICAgIGZpCiAKLSAgICAgICMgT25seSBhY3R1YWxseSBkbyB0aGluZ3MgaWYgb3VyIHJ1biBjb21tYW5kIGlzIG5vbi1udWxsLgotICAgICAgaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KKyAgICAgICMgT25seSBhY3R1YWxseSBkbyB0aGluZ3MgaWYgbm90IGluIGRyeSBydW4gbW9kZS4KKyAgICAgICRvcHRfZHJ5X3J1biB8fCB7CiAJIyB3aW4zMiB3aWxsIHRoaW5rIHRoZSBzY3JpcHQgaXMgYSBiaW5hcnkgaWYgaXQgaGFzCiAJIyBhIC5leGUgc3VmZml4LCBzbyB3ZSBzdHJpcCBpdCBvZmYgaGVyZS4KIAljYXNlICRvdXRwdXQgaW4KLQkgICouZXhlKSBvdXRwdXQ9YCRlY2hvICRvdXRwdXR8JHtTRUR9ICdzLC5leGUkLCwnYCA7OworCSAgKi5leGUpIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJG91dHB1dCIKKwkgICAgICAgICBvdXRwdXQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwogCWVzYWMKIAkjIHRlc3QgZm9yIGN5Z3dpbiBiZWNhdXNlIG12IGZhaWxzIHcvbyAuZXhlIGV4dGVuc2lvbnMKIAljYXNlICRob3N0IGluCiAJICAqY3lnd2luKikKIAkgICAgZXhlZXh0PS5leGUKLQkgICAgb3V0cHV0bmFtZT1gJGVjaG8gJG91dHB1dG5hbWV8JHtTRUR9ICdzLC5leGUkLCwnYCA7OworCSAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRvdXRwdXRuYW1lIgorCSAgICBvdXRwdXRuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKIAkgICopIGV4ZWV4dD0gOzsKIAllc2FjCiAJY2FzZSAkaG9zdCBpbgogCSAgKmN5Z3dpbiogfCAqbWluZ3cqICkKLSAgICAgICAgICAgIG91dHB1dF9uYW1lPWBiYXNlbmFtZSAkb3V0cHV0YAotICAgICAgICAgICAgb3V0cHV0X3BhdGg9YGRpcm5hbWUgJG91dHB1dGAKLSAgICAgICAgICAgIGN3cmFwcGVyc291cmNlPSIkb3V0cHV0X3BhdGgvJG9iamRpci9sdC0kb3V0cHV0X25hbWUuYyIKLSAgICAgICAgICAgIGN3cmFwcGVyPSIkb3V0cHV0X3BhdGgvJG91dHB1dF9uYW1lLmV4ZSIKLSAgICAgICAgICAgICRybSAkY3dyYXBwZXJzb3VyY2UgJGN3cmFwcGVyCi0gICAgICAgICAgICB0cmFwICIkcm0gJGN3cmFwcGVyc291cmNlICRjd3JhcHBlcjsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKKwkgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJG91dHB1dCIgIiIgIi4iCisJICAgIG91dHB1dF9uYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorCSAgICBvdXRwdXRfcGF0aD0kZnVuY19kaXJuYW1lX3Jlc3VsdAorCSAgICBjd3JhcHBlcnNvdXJjZT0iJG91dHB1dF9wYXRoLyRvYmpkaXIvbHQtJG91dHB1dF9uYW1lLmMiCisJICAgIGN3cmFwcGVyPSIkb3V0cHV0X3BhdGgvJG91dHB1dF9uYW1lLmV4ZSIKKwkgICAgJFJNICRjd3JhcHBlcnNvdXJjZSAkY3dyYXBwZXIKKwkgICAgdHJhcCAiJFJNICRjd3JhcHBlcnNvdXJjZSAkY3dyYXBwZXI7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1CiAKLQkgICAgY2F0ID4gJGN3cmFwcGVyc291cmNlIDw8RU9GCisJICAgIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMgPiAkY3dyYXBwZXJzb3VyY2UKIAotLyogJGN3cmFwcGVyc291cmNlIC0gdGVtcG9yYXJ5IHdyYXBwZXIgZXhlY3V0YWJsZSBmb3IgJG9iamRpci8kb3V0cHV0bmFtZQotICAgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIC0gR05VICRQQUNLQUdFICRWRVJTSU9OJFRJTUVTVEFNUAorCSAgICAjIFRoZSB3cmFwcGVyIGV4ZWN1dGFibGUgaXMgYnVpbHQgdXNpbmcgdGhlICRob3N0IGNvbXBpbGVyLAorCSAgICAjIGJlY2F1c2UgaXQgY29udGFpbnMgJGhvc3QgcGF0aHMgYW5kIGZpbGVzLiBJZiBjcm9zcy0KKwkgICAgIyBjb21waWxpbmcsIGl0LCBsaWtlIHRoZSB0YXJnZXQgZXhlY3V0YWJsZSwgbXVzdCBiZQorCSAgICAjIGV4ZWN1dGVkIG9uIHRoZSAkaG9zdCBvciB1bmRlciBhbiBlbXVsYXRpb24gZW52aXJvbm1lbnQuCisJICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1vICRjd3JhcHBlciAkY3dyYXBwZXJzb3VyY2UKKwkgICAgICAkU1RSSVAgJGN3cmFwcGVyCisJICAgIH0KIAotICAgVGhlICRvdXRwdXQgcHJvZ3JhbSBjYW5ub3QgYmUgZGlyZWN0bHkgZXhlY3V0ZWQgdW50aWwgYWxsIHRoZSBsaWJ0b29sCi0gICBsaWJyYXJpZXMgdGhhdCBpdCBkZXBlbmRzIG9uIGFyZSBpbnN0YWxsZWQuCi0KLSAgIFRoaXMgd3JhcHBlciBleGVjdXRhYmxlIHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSAgIElmIGl0IGlzLCBpdCB3aWxsIG5vdCBvcGVyYXRlIGNvcnJlY3RseS4KLQotICAgQ3VycmVudGx5LCBpdCBzaW1wbHkgZXhlY3MgdGhlIHdyYXBwZXIgKnNjcmlwdCogIi9iaW4vc2ggJG91dHB1dCIsCi0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCi0gICBleGVjICRvYmpkaXIvJG91dHB1dG5hbWUgZGlyZWN0bHkuCi0qLwotRU9GCi0JICAgIGNhdCA+PiAkY3dyYXBwZXJzb3VyY2U8PCJFT0YiCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxtYWxsb2MuaD4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxjdHlwZS5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0KLSNpZiBkZWZpbmVkKFBBVEhfTUFYKQotIyBkZWZpbmUgTFRfUEFUSE1BWCBQQVRIX01BWAotI2VsaWYgZGVmaW5lZChNQVhQQVRITEVOKQotIyBkZWZpbmUgTFRfUEFUSE1BWCBNQVhQQVRITEVOCi0jZWxzZQotIyBkZWZpbmUgTFRfUEFUSE1BWCAxMDI0Ci0jZW5kaWYKLQotI2lmbmRlZiBESVJfU0VQQVJBVE9SCi0jIGRlZmluZSBESVJfU0VQQVJBVE9SICcvJwotIyBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgJzonCi0jZW5kaWYKLQotI2lmIGRlZmluZWQgKF9XSU4zMikgfHwgZGVmaW5lZCAoX19NU0RPU19fKSB8fCBkZWZpbmVkIChfX0RKR1BQX18pIHx8IFwKLSAgZGVmaW5lZCAoX19PUzJfXykKLSMgZGVmaW5lIEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNCi0jIGlmbmRlZiBESVJfU0VQQVJBVE9SXzIKLSMgIGRlZmluZSBESVJfU0VQQVJBVE9SXzIgJ1xcJwotIyBlbmRpZgotIyBpZm5kZWYgUEFUSF9TRVBBUkFUT1JfMgotIyAgZGVmaW5lIFBBVEhfU0VQQVJBVE9SXzIgJzsnCi0jIGVuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBESVJfU0VQQVJBVE9SXzIKLSMgZGVmaW5lIElTX0RJUl9TRVBBUkFUT1IoY2gpICgoY2gpID09IERJUl9TRVBBUkFUT1IpCi0jZWxzZSAvKiBESVJfU0VQQVJBVE9SXzIgKi8KLSMgZGVmaW5lIElTX0RJUl9TRVBBUkFUT1IoY2gpIFwKLSAgICAgICAgKCgoY2gpID09IERJUl9TRVBBUkFUT1IpIHx8ICgoY2gpID09IERJUl9TRVBBUkFUT1JfMikpCi0jZW5kaWYgLyogRElSX1NFUEFSQVRPUl8yICovCi0KLSNpZm5kZWYgUEFUSF9TRVBBUkFUT1JfMgotIyBkZWZpbmUgSVNfUEFUSF9TRVBBUkFUT1IoY2gpICgoY2gpID09IFBBVEhfU0VQQVJBVE9SKQotI2Vsc2UgLyogUEFUSF9TRVBBUkFUT1JfMiAqLwotIyBkZWZpbmUgSVNfUEFUSF9TRVBBUkFUT1IoY2gpICgoY2gpID09IFBBVEhfU0VQQVJBVE9SXzIpCi0jZW5kaWYgLyogUEFUSF9TRVBBUkFUT1JfMiAqLwotCi0jZGVmaW5lIFhNQUxMT0ModHlwZSwgbnVtKSAgICAgICgodHlwZSAqKSB4bWFsbG9jICgobnVtKSAqIHNpemVvZih0eXBlKSkpCi0jZGVmaW5lIFhGUkVFKHN0YWxlKSBkbyB7IFwKLSAgaWYgKHN0YWxlKSB7IGZyZWUgKCh2b2lkICopIHN0YWxlKTsgc3RhbGUgPSAwOyB9IFwKLX0gd2hpbGUgKDApCi0KLS8qIC1EREVCVUcgaXMgZmFpcmx5IGNvbW1vbiBpbiBDRkxBR1MuICAqLwotI3VuZGVmIERFQlVHCi0jaWYgZGVmaW5lZCBERUJVR1dSQVBQRVIKLSMgZGVmaW5lIERFQlVHKGZvcm1hdCwgLi4uKSBmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBfX1ZBX0FSR1NfXykKLSNlbHNlCi0jIGRlZmluZSBERUJVRyhmb3JtYXQsIC4uLikKLSNlbmRpZgotCi1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOwotCi12b2lkICogeG1hbGxvYyAoc2l6ZV90IG51bSk7Ci1jaGFyICogeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKLWNvbnN0IGNoYXIgKiBiYXNlX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpOwotY2hhciAqIGZpbmRfZXhlY3V0YWJsZShjb25zdCBjaGFyICp3cmFwcGVyKTsKLWludCAgICBjaGVja19leGVjdXRhYmxlKGNvbnN0IGNoYXIgKnBhdGgpOwotY2hhciAqIHN0cmVuZHphcChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7Ci12b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOwotCi1pbnQKLW1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi17Ci0gIGNoYXIgKipuZXdhcmd6OwotICBpbnQgaTsKLQotICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKLSAgREVCVUcoIihtYWluKSBhcmd2WzBdICAgICAgOiAlc1xuIixhcmd2WzBdKTsKLSAgREVCVUcoIihtYWluKSBwcm9ncmFtX25hbWUgOiAlc1xuIixwcm9ncmFtX25hbWUpOwotICBuZXdhcmd6ID0gWE1BTExPQyhjaGFyICosIGFyZ2MrMik7Ci1FT0YKLQotICAgICAgICAgICAgY2F0ID4+ICRjd3JhcHBlcnNvdXJjZSA8PEVPRgotICBuZXdhcmd6WzBdID0gKGNoYXIgKikgeHN0cmR1cCgiJFNIRUxMIik7Ci1FT0YKLQotICAgICAgICAgICAgY2F0ID4+ICRjd3JhcHBlcnNvdXJjZSA8PCJFT0YiCi0gIG5ld2FyZ3pbMV0gPSBmaW5kX2V4ZWN1dGFibGUoYXJndlswXSk7Ci0gIGlmIChuZXdhcmd6WzFdID09IE5VTEwpCi0gICAgbHRfZmF0YWwoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKLSAgREVCVUcoIihtYWluKSBmb3VuZCBleGUgYXQgOiAlc1xuIixuZXdhcmd6WzFdKTsKLSAgLyogd2Uga25vdyB0aGUgc2NyaXB0IGhhcyB0aGUgc2FtZSBuYW1lLCB3aXRob3V0IHRoZSAuZXhlICovCi0gIC8qIHNvIG1ha2Ugc3VyZSBuZXdhcmd6WzFdIGRvZXNuJ3QgZW5kIGluIC5leGUgKi8KLSAgc3RyZW5kemFwKG5ld2FyZ3pbMV0sIi5leGUiKTsKLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLSAgICBuZXdhcmd6W2krMV0gPSB4c3RyZHVwKGFyZ3ZbaV0pOwotICBuZXdhcmd6W2FyZ2MrMV0gPSBOVUxMOwotCi0gIGZvciAoaT0wOyBpPGFyZ2MrMTsgaSsrKQotICB7Ci0gICAgREVCVUcoIihtYWluKSBuZXdhcmd6WyVkXSAgIDogJXNcbiIsaSxuZXdhcmd6W2ldKTsKLSAgICA7Ci0gIH0KLQotRU9GCi0KLSAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgICAgICAgICAgbWluZ3cqKQotICAgICAgICAgICAgICAgIGNhdCA+PiAkY3dyYXBwZXJzb3VyY2UgPDxFT0YKLSAgZXhlY3YoIiRTSEVMTCIsKGNoYXIgY29uc3QgKiopbmV3YXJneik7Ci1FT0YKLSAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICAgKikKLSAgICAgICAgICAgICAgICBjYXQgPj4gJGN3cmFwcGVyc291cmNlIDw8RU9GCi0gIGV4ZWN2KCIkU0hFTEwiLG5ld2FyZ3opOwotRU9GCi0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICBlc2FjCi0KLSAgICAgICAgICAgIGNhdCA+PiAkY3dyYXBwZXJzb3VyY2UgPDwiRU9GIgotICByZXR1cm4gMTI3OwotfQotCi12b2lkICoKLXhtYWxsb2MgKHNpemVfdCBudW0pCi17Ci0gIHZvaWQgKiBwID0gKHZvaWQgKikgbWFsbG9jIChudW0pOwotICBpZiAoIXApCi0gICAgbHRfZmF0YWwgKCJNZW1vcnkgZXhoYXVzdGVkIik7Ci0KLSAgcmV0dXJuIHA7Ci19Ci0KLWNoYXIgKgoteHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKQotewotICByZXR1cm4gc3RyaW5nID8gc3RyY3B5ICgoY2hhciAqKSB4bWFsbG9jIChzdHJsZW4gKHN0cmluZykgKyAxKSwgc3RyaW5nKSA6IE5VTEwKLTsKLX0KLQotY29uc3QgY2hhciAqCi1iYXNlX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpCi17Ci0gIGNvbnN0IGNoYXIgKmJhc2U7Ci0KLSNpZiBkZWZpbmVkIChIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSkKLSAgLyogU2tpcCBvdmVyIHRoZSBkaXNrIG5hbWUgaW4gTVNET1MgcGF0aG5hbWVzLiAqLwotICBpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpbmFtZVswXSkgJiYgbmFtZVsxXSA9PSAnOicpCi0gICAgbmFtZSArPSAyOwotI2VuZGlmCi0KLSAgZm9yIChiYXNlID0gbmFtZTsgKm5hbWU7IG5hbWUrKykKLSAgICBpZiAoSVNfRElSX1NFUEFSQVRPUiAoKm5hbWUpKQotICAgICAgYmFzZSA9IG5hbWUgKyAxOwotICByZXR1cm4gYmFzZTsKLX0KLQotaW50Ci1jaGVja19leGVjdXRhYmxlKGNvbnN0IGNoYXIgKiBwYXRoKQotewotICBzdHJ1Y3Qgc3RhdCBzdDsKLQotICBERUJVRygiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLCBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpOwotICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKLSAgICByZXR1cm4gMDsKLQotICBpZiAoKHN0YXQgKHBhdGgsICZzdCkgPj0gMCkgJiYKLSAgICAgICgKLSAgICAgICAgLyogTWluR1cgJiBuYXRpdmUgV0lOMzIgZG8gbm90IHN1cHBvcnQgU19JWE9USCBvciBTX0lYR1JQICovCi0jaWYgZGVmaW5lZCAoU19JWE9USCkKLSAgICAgICAoKHN0LnN0X21vZGUgJiBTX0lYT1RIKSA9PSBTX0lYT1RIKSB8fAotI2VuZGlmCi0jaWYgZGVmaW5lZCAoU19JWEdSUCkKLSAgICAgICAoKHN0LnN0X21vZGUgJiBTX0lYR1JQKSA9PSBTX0lYR1JQKSB8fAotI2VuZGlmCi0gICAgICAgKChzdC5zdF9tb2RlICYgU19JWFVTUikgPT0gU19JWFVTUikpCi0gICAgICApCi0gICAgcmV0dXJuIDE7Ci0gIGVsc2UKLSAgICByZXR1cm4gMDsKLX0KLQotLyogU2VhcmNoZXMgZm9yIHRoZSBmdWxsIHBhdGggb2YgdGhlIHdyYXBwZXIuICBSZXR1cm5zCi0gICBuZXdseSBhbGxvY2F0ZWQgZnVsbCBwYXRoIG5hbWUgaWYgZm91bmQsIE5VTEwgb3RoZXJ3aXNlICovCi1jaGFyICoKLWZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciogd3JhcHBlcikKLXsKLSAgaW50IGhhc19zbGFzaCA9IDA7Ci0gIGNvbnN0IGNoYXIqIHA7Ci0gIGNvbnN0IGNoYXIqIHBfbmV4dDsKLSAgLyogc3RhdGljIGJ1ZmZlciBmb3IgZ2V0Y3dkICovCi0gIGNoYXIgdG1wW0xUX1BBVEhNQVggKyAxXTsKLSAgaW50IHRtcF9sZW47Ci0gIGNoYXIqIGNvbmNhdF9uYW1lOwotCi0gIERFQlVHKCIoZmluZF9leGVjdXRhYmxlKSAgOiAlc1xuIiwgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKTsKLQotICBpZiAoKHdyYXBwZXIgPT0gTlVMTCkgfHwgKCp3cmFwcGVyID09ICdcMCcpKQotICAgIHJldHVybiBOVUxMOwotCi0gIC8qIEFic29sdXRlIHBhdGg/ICovCi0jaWYgZGVmaW5lZCAoSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0pCi0gIGlmIChpc2FscGhhICgodW5zaWduZWQgY2hhcil3cmFwcGVyWzBdKSAmJiB3cmFwcGVyWzFdID09ICc6JykKLSAgewotICAgIGNvbmNhdF9uYW1lID0geHN0cmR1cCAod3JhcHBlcik7Ci0gICAgaWYgKGNoZWNrX2V4ZWN1dGFibGUoY29uY2F0X25hbWUpKQotICAgICAgcmV0dXJuIGNvbmNhdF9uYW1lOwotICAgIFhGUkVFKGNvbmNhdF9uYW1lKTsKLSAgfQotICBlbHNlCi0gIHsKLSNlbmRpZgotICAgIGlmIChJU19ESVJfU0VQQVJBVE9SICh3cmFwcGVyWzBdKSkKLSAgICB7Ci0gICAgICBjb25jYXRfbmFtZSA9IHhzdHJkdXAgKHdyYXBwZXIpOwotICAgICAgaWYgKGNoZWNrX2V4ZWN1dGFibGUoY29uY2F0X25hbWUpKQotICAgICAgICByZXR1cm4gY29uY2F0X25hbWU7Ci0gICAgICBYRlJFRShjb25jYXRfbmFtZSk7Ci0gICAgfQotI2lmIGRlZmluZWQgKEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNKQotICB9Ci0jZW5kaWYKLQotICBmb3IgKHAgPSB3cmFwcGVyOyAqcDsgcCsrKQotICAgIGlmICgqcCA9PSAnLycpCi0gICAgewotICAgICAgaGFzX3NsYXNoID0gMTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgaWYgKCFoYXNfc2xhc2gpCi0gIHsKLSAgICAvKiBubyBzbGFzaGVzOyBzZWFyY2ggUEFUSCAqLwotICAgIGNvbnN0IGNoYXIqIHBhdGggPSBnZXRlbnYgKCJQQVRIIik7Ci0gICAgaWYgKHBhdGggIT0gTlVMTCkKLSAgICB7Ci0gICAgICBmb3IgKHAgPSBwYXRoOyAqcDsgcCA9IHBfbmV4dCkKLSAgICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogcTsKLSAgICAgICAgc2l6ZV90IHBfbGVuOwotICAgICAgICBmb3IgKHEgPSBwOyAqcTsgcSsrKQotICAgICAgICAgIGlmIChJU19QQVRIX1NFUEFSQVRPUigqcSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcF9sZW4gPSBxIC0gcDsKLSAgICAgICAgcF9uZXh0ID0gKCpxID09ICdcMCcgPyBxIDogcSArIDEpOwotICAgICAgICBpZiAocF9sZW4gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIC8qIGVtcHR5IHBhdGg6IGN1cnJlbnQgZGlyZWN0b3J5ICovCi0gICAgICAgICAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQotICAgICAgICAgICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7Ci0gICAgICAgICAgdG1wX2xlbiA9IHN0cmxlbih0bXApOwotICAgICAgICAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyhjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbih3cmFwcGVyKSArIDEpOwotICAgICAgICAgIG1lbWNweSAoY29uY2F0X25hbWUsIHRtcCwgdG1wX2xlbik7Ci0gICAgICAgICAgY29uY2F0X25hbWVbdG1wX2xlbl0gPSAnLyc7Ci0gICAgICAgICAgc3RyY3B5IChjb25jYXRfbmFtZSArIHRtcF9sZW4gKyAxLCB3cmFwcGVyKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBjb25jYXRfbmFtZSA9IFhNQUxMT0MoY2hhciwgcF9sZW4gKyAxICsgc3RybGVuKHdyYXBwZXIpICsgMSk7Ci0gICAgICAgICAgbWVtY3B5IChjb25jYXRfbmFtZSwgcCwgcF9sZW4pOwotICAgICAgICAgIGNvbmNhdF9uYW1lW3BfbGVuXSA9ICcvJzsKLSAgICAgICAgICBzdHJjcHkgKGNvbmNhdF9uYW1lICsgcF9sZW4gKyAxLCB3cmFwcGVyKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hlY2tfZXhlY3V0YWJsZShjb25jYXRfbmFtZSkpCi0gICAgICAgICAgcmV0dXJuIGNvbmNhdF9uYW1lOwotICAgICAgICBYRlJFRShjb25jYXRfbmFtZSk7Ci0gICAgICB9Ci0gICAgfQotICAgIC8qIG5vdCBmb3VuZCBpbiBQQVRIOyBhc3N1bWUgY3VyZGlyICovCi0gIH0KLSAgLyogUmVsYXRpdmUgcGF0aCB8IG5vdCBmb3VuZCBpbiBwYXRoOiBwcmVwZW5kIGN3ZCAqLwotICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0gICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7Ci0gIHRtcF9sZW4gPSBzdHJsZW4odG1wKTsKLSAgY29uY2F0X25hbWUgPSBYTUFMTE9DKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuKHdyYXBwZXIpICsgMSk7Ci0gIG1lbWNweSAoY29uY2F0X25hbWUsIHRtcCwgdG1wX2xlbik7Ci0gIGNvbmNhdF9uYW1lW3RtcF9sZW5dID0gJy8nOwotICBzdHJjcHkgKGNvbmNhdF9uYW1lICsgdG1wX2xlbiArIDEsIHdyYXBwZXIpOwotCi0gIGlmIChjaGVja19leGVjdXRhYmxlKGNvbmNhdF9uYW1lKSkKLSAgICByZXR1cm4gY29uY2F0X25hbWU7Ci0gIFhGUkVFKGNvbmNhdF9uYW1lKTsKLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLWNoYXIgKgotc3RyZW5kemFwKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KQotewotICBzaXplX3QgbGVuLCBwYXRsZW47Ci0KLSAgYXNzZXJ0KHN0ciAhPSBOVUxMKTsKLSAgYXNzZXJ0KHBhdCAhPSBOVUxMKTsKLQotICBsZW4gPSBzdHJsZW4oc3RyKTsKLSAgcGF0bGVuID0gc3RybGVuKHBhdCk7Ci0KLSAgaWYgKHBhdGxlbiA8PSBsZW4pCi0gIHsKLSAgICBzdHIgKz0gbGVuIC0gcGF0bGVuOwotICAgIGlmIChzdHJjbXAoc3RyLCBwYXQpID09IDApCi0gICAgICAqc3RyID0gJ1wwJzsKLSAgfQotICByZXR1cm4gc3RyOwotfQotCi1zdGF0aWMgdm9pZAotbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICogbW9kZSwKLSAgICAgICAgICBjb25zdCBjaGFyICogbWVzc2FnZSwgdmFfbGlzdCBhcCkKLXsKLSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6ICVzOiAiLCBwcm9ncmFtX25hbWUsIG1vZGUpOwotICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcCk7Ci0gIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOwotCi0gIGlmIChleGl0X3N0YXR1cyA+PSAwKQotICAgIGV4aXQgKGV4aXRfc3RhdHVzKTsKLX0KLQotdm9pZAotbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKLXsKLSAgdmFfbGlzdCBhcDsKLSAgdmFfc3RhcnQgKGFwLCBtZXNzYWdlKTsKLSAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7Ci0gIHZhX2VuZCAoYXApOwotfQotRU9GCi0gICAgICAgICAgIyB3ZSBzaG91bGQgcmVhbGx5IHVzZSBhIGJ1aWxkLXBsYXRmb3JtIHNwZWNpZmljIGNvbXBpbGVyCi0gICAgICAgICAgIyBoZXJlLCBidXQgT1RPSCwgdGhlIHdyYXBwZXJzIChzaGVsbCBzY3JpcHQgYW5kIHRoaXMgQyBvbmUpCi0gICAgICAgICAgIyBhcmUgb25seSB1c2VmdWwgaWYgeW91IHdhbnQgdG8gZXhlY3V0ZSB0aGUgInJlYWwiIGJpbmFyeS4KLSAgICAgICAgICAjIFNpbmNlIHRoZSAicmVhbCIgYmluYXJ5IGlzIGJ1aWx0IGZvciAkaG9zdCwgdGhlbiB0aGlzCi0gICAgICAgICAgIyB3cmFwcGVyIG1pZ2h0IGFzIHdlbGwgYmUgYnVpbHQgZm9yICRob3N0LCB0b28uCi0gICAgICAgICAgJHJ1biAkTFRDQyAkTFRDRkxBR1MgLXMgLW8gJGN3cmFwcGVyICRjd3JhcHBlcnNvdXJjZQotICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgJHJtICRvdXRwdXQKLSAgICAgICAgdHJhcCAiJHJtICRvdXRwdXQ7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1Ci0KLQkkZWNobyA+ICRvdXRwdXQgIlwKLSMhICRTSEVMTAotCi0jICRvdXRwdXQgLSB0ZW1wb3Jhcnkgd3JhcHBlciBzY3JpcHQgZm9yICRvYmpkaXIvJG91dHB1dG5hbWUKLSMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIC0gR05VICRQQUNLQUdFICRWRVJTSU9OJFRJTUVTVEFNUAotIwotIyBUaGUgJG91dHB1dCBwcm9ncmFtIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCB1bnRpbCBhbGwgdGhlIGxpYnRvb2wKLSMgbGlicmFyaWVzIHRoYXQgaXQgZGVwZW5kcyBvbiBhcmUgaW5zdGFsbGVkLgotIwotIyBUaGlzIHdyYXBwZXIgc2NyaXB0IHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSMgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgotCi0jIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCi0jIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgotWHNlZD0nJHtTRUR9IC1lIDFzL15YLy8nCi1zZWRfcXVvdGVfc3Vic3Q9JyRzZWRfcXVvdGVfc3Vic3QnCi0KLSMgQmUgQm91cm5lIGNvbXBhdGlibGUgKHRha2VuIGZyb20gQXV0b2NvbmY6X0FTX0JPVVJORV9DT01QQVRJQkxFKS4KLWlmIHRlc3QgLW4gXCJcJHtaU0hfVkVSU0lPTitzZXR9XCIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgotICBlbXVsYXRlIHNoCi0gIE5VTExDTUQ9OgotICAjIFpzaCAzLnggYW5kIDQueCBwZXJmb3JtcyB3b3JkIHNwbGl0dGluZyBvbiBcJHsxK1wiXCRAXCJ9LCB3aGljaAotICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgotICBhbGlhcyAtZyAnXCR7MStcIlwkQFwifSc9J1wiXCRAXCInCi0gIHNldG9wdCBOT19HTE9CX1NVQlNUCi1lbHNlCi0gIGNhc2UgXGAoc2V0IC1vKSAyPi9kZXYvbnVsbFxgIGluICpwb3NpeCopIHNldCAtbyBwb3NpeDs7IGVzYWMKLWZpCi1CSU5fU0g9eHBnNDsgZXhwb3J0IEJJTl9TSCAjIGZvciBUcnU2NAotRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAotCi0jIFRoZSBIUC1VWCBrc2ggYW5kIFBPU0lYIHNoZWxsIHByaW50IHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIHN0ZG91dAotIyBpZiBDRFBBVEggaXMgc2V0LgotKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAotCi1yZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiCi0KLSMgVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBkZXRlcm1pbmVzIG91ciBvcGVyYXRpb24gbW9kZS4KLWlmIHRlc3QgXCJcJGxpYnRvb2xfaW5zdGFsbF9tYWdpY1wiID0gXCIkbWFnaWNcIjsgdGhlbgotICAjIGluc3RhbGwgbW9kZSBuZWVkcyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlOgotICBub3RpbnN0X2RlcGxpYnM9JyRub3RpbnN0X2RlcGxpYnMnCi1lbHNlCi0gICMgV2hlbiB3ZSBhcmUgc291cmNlZCBpbiBleGVjdXRlIG1vZGUsIFwkZmlsZSBhbmQgXCRlY2hvIGFyZSBhbHJlYWR5IHNldC4KLSAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgotICAgIGVjaG89XCIkcWVjaG9cIgotICAgIGZpbGU9XCJcJDBcIgotICAgICMgTWFrZSBzdXJlIGVjaG8gd29ya3MuCi0gICAgaWYgdGVzdCBcIlhcJDFcIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAgICAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gICAgICBzaGlmdAotICAgIGVsaWYgdGVzdCBcIlhcYChcJGVjaG8gJ1x0JykgMj4vZGV2L251bGxcYFwiID0gJ1hcdCc7IHRoZW4KLSAgICAgICMgWWlwcGVlLCBcJGVjaG8gd29ya3MhCi0gICAgICA6Ci0gICAgZWxzZQotICAgICAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSBcJGVjaG8gd2lsbCB3b3JrLgotICAgICAgZXhlYyAkU0hFTEwgXCJcJDBcIiAtLW5vLXJlZXhlYyBcJHsxK1wiXCRAXCJ9Ci0gICAgZmkKLSAgZmlcCi0iCi0JJGVjaG8gPj4gJG91dHB1dCAiXAotCi0gICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCi0gIHRoaXNkaXI9XGBcJGVjaG8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlL1teL10qJCUlJ1xgCi0gIHRlc3QgXCJ4XCR0aGlzZGlyXCIgPSBcInhcJGZpbGVcIiAmJiB0aGlzZGlyPS4KLQotICAjIEZvbGxvdyBzeW1ib2xpYyBsaW5rcyB1bnRpbCB3ZSBnZXQgdG8gdGhlIHJlYWwgdGhpc2Rpci4KLSAgZmlsZT1cYGxzIC1sZCBcIlwkZmlsZVwiIHwgJHtTRUR9IC1uICdzLy4qLT4gLy9wJ1xgCi0gIHdoaWxlIHRlc3QgLW4gXCJcJGZpbGVcIjsgZG8KLSAgICBkZXN0ZGlyPVxgXCRlY2hvIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJS9bXi9dKlwkJSUnXGAKLQotICAgICMgSWYgdGhlcmUgd2FzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBjaGFuZ2UgdGhpc2Rpci4KLSAgICBpZiB0ZXN0IFwieFwkZGVzdGRpclwiICE9IFwieFwkZmlsZVwiOyB0aGVuCi0gICAgICBjYXNlIFwiXCRkZXN0ZGlyXCIgaW4KLSAgICAgIFtcXFxcL10qIHwgW0EtWmEtel06W1xcXFwvXSopIHRoaXNkaXI9XCJcJGRlc3RkaXJcIiA7OwotICAgICAgKikgdGhpc2Rpcj1cIlwkdGhpc2Rpci9cJGRlc3RkaXJcIiA7OwotICAgICAgZXNhYwotICAgIGZpCi0KLSAgICBmaWxlPVxgXCRlY2hvIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJV4uKi8lJSdcYAotICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKLSAgZG9uZQotCi0gICMgVHJ5IHRvIGdldCB0aGUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUuCi0gIGFic2Rpcj1cYGNkIFwiXCR0aGlzZGlyXCIgJiYgcHdkXGAKLSAgdGVzdCAtbiBcIlwkYWJzZGlyXCIgJiYgdGhpc2Rpcj1cIlwkYWJzZGlyXCIKLSIKLQotCWlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCi0JICAkZWNobyA+PiAkb3V0cHV0ICJcCi0gIHByb2dyYW09bHQtJyRvdXRwdXRuYW1lJyRleGVleHQKLSAgcHJvZ2Rpcj1cIlwkdGhpc2Rpci8kb2JqZGlyXCIKLQotICBpZiB0ZXN0ICEgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgfHwgXFwKLSAgICAgeyBmaWxlPVxgbHMgLTFkdCBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcIlwkcHJvZ2Rpci8uLi9cJHByb2dyYW1cIiAyPi9kZXYvbnVsbCB8ICR7U0VEfSAxcVxgOyBcXAotICAgICAgIHRlc3QgXCJYXCRmaWxlXCIgIT0gXCJYXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB9OyB0aGVuCi0KLSAgICBmaWxlPVwiXCRcJC1cJHByb2dyYW1cIgotCi0gICAgaWYgdGVzdCAhIC1kIFwiXCRwcm9nZGlyXCI7IHRoZW4KLSAgICAgICRta2RpciBcIlwkcHJvZ2RpclwiCi0gICAgZWxzZQotICAgICAgJHJtIFwiXCRwcm9nZGlyL1wkZmlsZVwiCi0gICAgZmkiCi0KLQkgICRlY2hvID4+ICRvdXRwdXQgIlwKLQotICAgICMgcmVsaW5rIGV4ZWN1dGFibGUgaWYgbmVjZXNzYXJ5Ci0gICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgotICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcJHJlbGlua19jb21tYW5kIDI+JjFcYDsgdGhlbiA6Ci0gICAgICBlbHNlCi0JJGVjaG8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgotCSRybSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgotCWV4aXQgJEVYSVRfRkFJTFVSRQotICAgICAgZmkKLSAgICBmaQotCi0gICAgJG12IFwiXCRwcm9nZGlyL1wkZmlsZVwiIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDI+L2Rldi9udWxsIHx8Ci0gICAgeyAkcm0gXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7Ci0gICAgICAkbXYgXCJcJHByb2dkaXIvXCRmaWxlXCIgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IH0KLSAgICAkcm0gXCJcJHByb2dkaXIvXCRmaWxlXCIKLSAgZmkiCi0JZWxzZQotCSAgJGVjaG8gPj4gJG91dHB1dCAiXAotICBwcm9ncmFtPSckb3V0cHV0bmFtZScKLSAgcHJvZ2Rpcj1cIlwkdGhpc2Rpci8kb2JqZGlyXCIKLSIKLQlmaQotCi0JJGVjaG8gPj4gJG91dHB1dCAiXAotCi0gIGlmIHRlc3QgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IHRoZW4iCi0KLQkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KLQlpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCi0JICAkZWNobyA+PiAkb3V0cHV0ICJcCi0gICAgIyBBZGQgb3VyIG93biBsaWJyYXJ5IHBhdGggdG8gJHNobGlicGF0aF92YXIKLSAgICAkc2hsaWJwYXRoX3Zhcj1cIiR0ZW1wX3JwYXRoXCQkc2hsaWJwYXRoX3ZhclwiCi0KLSAgICAjIFNvbWUgc3lzdGVtcyBjYW5ub3QgY29wZSB3aXRoIGNvbG9uLXRlcm1pbmF0ZWQgJHNobGlicGF0aF92YXIKLSAgICAjIFRoZSBzZWNvbmQgY29sb24gaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBCZU9TIFI0IHNlZAotICAgICRzaGxpYnBhdGhfdmFyPVxgXCRlY2hvIFwiWFwkJHNobGlicGF0aF92YXJcIiB8IFwkWHNlZCAtZSAncy86OipcJC8vJ1xgCi0KLSAgICBleHBvcnQgJHNobGlicGF0aF92YXIKLSIKLQlmaQotCi0JIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KLQlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLQkgICRlY2hvID4+ICRvdXRwdXQgIlwKLSAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAotICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICi0iCi0JZmkKLQotCSRlY2hvID4+ICRvdXRwdXQgIlwKLSAgICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCi0gICAgICAjIFJ1biB0aGUgYWN0dWFsIHByb2dyYW0gd2l0aCBvdXIgYXJndW1lbnRzLgotIgotCWNhc2UgJGhvc3QgaW4KLQkjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKLQkqLSotbWluZ3cgfCAqLSotb3MyKikKLQkgICRlY2hvID4+ICRvdXRwdXQgIlwKLSAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotIgorCSAgICAjIE5vdywgY3JlYXRlIHRoZSB3cmFwcGVyIHNjcmlwdCBmb3IgZnVuY19zb3VyY2UgdXNlOgorCSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICRjd3JhcHBlcgorCSAgICAkUk0gJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0CisJICAgIHRyYXAgIiRSTSAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1CisJICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgIyBub3RlOiB0aGlzIHNjcmlwdCB3aWxsIG5vdCBiZSBleGVjdXRlZCwgc28gZG8gbm90IGNobW9kLgorCSAgICAgIGlmIHRlc3QgIngkYnVpbGQiID0gIngkaG9zdCIgOyB0aGVuCisJCSRjd3JhcHBlciAtLWx0LWR1bXAtc2NyaXB0ID4gJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0CisJICAgICAgZWxzZQorCQlmdW5jX2VtaXRfd3JhcHBlciBubyA+ICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdAorCSAgICAgIGZpCisJICAgIH0KIAkgIDs7CisJICAqICkKKwkgICAgJFJNICRvdXRwdXQKKwkgICAgdHJhcCAiJFJNICRvdXRwdXQ7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1CiAKLQkqKQotCSAgJGVjaG8gPj4gJG91dHB1dCAiXAotICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0iCisJICAgIGZ1bmNfZW1pdF93cmFwcGVyIG5vID4gJG91dHB1dAorCSAgICBjaG1vZCAreCAkb3V0cHV0CiAJICA7OwogCWVzYWMKLQkkZWNobyA+PiAkb3V0cHV0ICJcCi0gICAgICBcJGVjaG8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgZmkKLSAgZWxzZQotICAgICMgVGhlIHByb2dyYW0gZG9lc24ndCBleGlzdC4KLSAgICBcJGVjaG8gXCJcJDA6IGVycm9yOiBcXFxgXCRwcm9nZGlyL1wkcHJvZ3JhbScgZG9lcyBub3QgZXhpc3RcIiAxPiYyCi0gICAgXCRlY2hvIFwiVGhpcyBzY3JpcHQgaXMganVzdCBhIHdyYXBwZXIgZm9yIFwkcHJvZ3JhbS5cIiAxPiYyCi0gICAgJGVjaG8gXCJTZWUgdGhlICRQQUNLQUdFIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIgMT4mMgotICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICBmaQotZmlcCi0iCi0JY2htb2QgK3ggJG91dHB1dAotICAgICAgZmkKKyAgICAgIH0KICAgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwogICAgICAgOzsKICAgICBlc2FjCkBAIC01NTA2LDcgKzc4NzQsNyBAQAogICAgIGZvciBvbGRsaWIgaW4gJG9sZGxpYnM7IGRvCiAKICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gY29udmVuaWVuY2U7IHRoZW4KLQlvbGRvYmpzPSIkbGlib2Jqc19zYXZlIgorCW9sZG9ianM9IiRsaWJvYmpzX3NhdmUgJHN5bWZpbGVvYmoiCiAJYWRkbGlicz0iJGNvbnZlbmllbmNlIgogCWJ1aWxkX2xpYnRvb2xfbGlicz1ubwogICAgICAgZWxzZQpAQCAtNTUxNSw2ICs3ODgzLDkgQEAKIAkgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwogCWVsc2UKIAkgIG9sZG9ianM9IiRvbGRfZGVwbGlicyAkbm9uX3BpY19vYmplY3RzIgorCSAgaWYgdGVzdCAiJHByZWxvYWQiID0geWVzICYmIHRlc3QgLWYgIiRzeW1maWxlb2JqIjsgdGhlbgorCSAgICBvbGRvYmpzPSIkb2xkb2JqcyAkc3ltZmlsZW9iaiIKKwkgIGZpCiAJZmkKIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgogICAgICAgZmkKQEAgLTU1MjksOCArNzkwMCwxOCBAQAogCiAgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KICAgICAgIGlmIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzIiAmJiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgotICAgICAgIGNtZHM9JG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMKKwljbWRzPSRvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzCiAgICAgICBlbHNlCisKKwkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKKwlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KKwkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCisJICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKworCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKKwkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCWZpCisKIAkjIFBPU0lYIGRlbWFuZHMgbm8gcGF0aHMgdG8gYmUgZW5jb2RlZCBpbiBhcmNoaXZlcy4gIFdlIGhhdmUKIAkjIHRvIGF2b2lkIGNyZWF0aW5nIGFyY2hpdmVzIHdpdGggZHVwbGljYXRlIGJhc2VuYW1lcyBpZiB3ZQogCSMgbWlnaHQgaGF2ZSB0byBleHRyYWN0IHRoZW0gYWZ0ZXJ3YXJkcywgZS5nLiwgd2hlbiBjcmVhdGluZyBhCkBAIC01NTM5LDMyICs3OTIwLDIyIEBACiAJIyBub3Qgc3VwcG9ydGVkIGJ5IGxpYnRvb2wpLgogCWlmIChmb3Igb2JqIGluICRvbGRvYmpzCiAJICAgIGRvCi0JICAgICAgJGVjaG8gIlgkb2JqIiB8ICRYc2VkIC1lICdzJV4uKi8lJScKKwkgICAgICBmdW5jX2Jhc2VuYW1lICIkb2JqIgorCSAgICAgICRFQ0hPICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAJICAgIGRvbmUgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgogCSAgOgogCWVsc2UKLQkgICRlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCi0KLQkgIGlmIHRlc3QgLXogIiRnZW50b3AiOyB0aGVuCi0JICAgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JICAgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotCi0JICAgICRzaG93ICIke3JtfXIgJGdlbnRvcCIKLQkgICAgJHJ1biAke3JtfXIgIiRnZW50b3AiCi0JICAgICRzaG93ICIkbWtkaXIgJGdlbnRvcCIKLQkgICAgJHJ1biAkbWtkaXIgIiRnZW50b3AiCi0JICAgIGV4aXRfc3RhdHVzPSQ/Ci0JICAgIGlmIHRlc3QgIiRleGl0X3N0YXR1cyIgLW5lIDAgJiYgdGVzdCAhIC1kICIkZ2VudG9wIjsgdGhlbgotCSAgICAgIGV4aXQgJGV4aXRfc3RhdHVzCi0JICAgIGZpCi0JICBmaQotCisJICAkRUNITyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgorCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKwkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19ta2Rpcl9wICIkZ2VudG9wIgogCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCiAJICBvbGRvYmpzPQogCSAgY291bnRlcj0xCiAJICBmb3Igb2JqIGluICRzYXZlX29sZG9ianMKIAkgIGRvCi0JICAgIG9iamJhc2U9YCRlY2hvICJYJG9iaiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorCSAgICBmdW5jX2Jhc2VuYW1lICIkb2JqIgorCSAgICBvYmpiYXNlPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAJICAgIGNhc2UgIiAkb2xkb2JqcyAiIGluCiAJICAgICIgIikgb2xkb2Jqcz0kb2JqIDs7CiAJICAgICpbXCAvXSIkb2JqYmFzZSAiKikKQEAgLTU1NzIsNTggKzc5NDMsNjIgQEAKIAkJIyBNYWtlIHN1cmUgd2UgZG9uJ3QgcGljayBhbiBhbHRlcm5hdGUgbmFtZSB0aGF0IGFsc28KIAkJIyBvdmVybGFwcy4KIAkJbmV3b2JqPWx0JGNvdW50ZXItJG9iamJhc2UKLQkJY291bnRlcj1gZXhwciAkY291bnRlciArIDFgCisJCWZ1bmNfYXJpdGggJGNvdW50ZXIgKyAxCisJCWNvdW50ZXI9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJCWNhc2UgIiAkb2xkb2JqcyAiIGluCiAJCSpbXCAvXSIkbmV3b2JqICIqKSA7OwogCQkqKSBpZiB0ZXN0ICEgLWYgIiRnZW50b3AvJG5ld29iaiI7IHRoZW4gYnJlYWs7IGZpIDs7CiAJCWVzYWMKIAkgICAgICBkb25lCi0JICAgICAgJHNob3cgImxuICRvYmogJGdlbnRvcC8kbmV3b2JqIHx8IGNwICRvYmogJGdlbnRvcC8kbmV3b2JqIgotCSAgICAgICRydW4gbG4gIiRvYmoiICIkZ2VudG9wLyRuZXdvYmoiIHx8Ci0JICAgICAgJHJ1biBjcCAiJG9iaiIgIiRnZW50b3AvJG5ld29iaiIKKwkgICAgICBmdW5jX3Nob3dfZXZhbCAibG4gJG9iaiAkZ2VudG9wLyRuZXdvYmogfHwgY3AgJG9iaiAkZ2VudG9wLyRuZXdvYmoiCiAJICAgICAgb2xkb2Jqcz0iJG9sZG9ianMgJGdlbnRvcC8kbmV3b2JqIgogCSAgICAgIDs7CiAJICAgICopIG9sZG9ianM9IiRvbGRvYmpzICRvYmoiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAlmaQotCiAJZXZhbCBjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgogCi0JaWYgbGVuPWBleHByICJYJGNtZHMiIDogIi4qImAgJiYKLQkgICAgIHRlc3QgIiRsZW4iIC1sZSAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorCWZ1bmNfbGVuICIgJGNtZHMiCisJbGVuPSRmdW5jX2xlbl9yZXN1bHQKKwlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KIAkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKIAllbHNlCiAJICAjIHRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gbGluayBpbiBvbmUgc3RlcCwgbGluayBpbiBwYXJ0cwotCSAgJGVjaG8gInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCisJICBmdW5jX3ZlcmJvc2UgInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCiAJICBzYXZlX1JBTkxJQj0kUkFOTElCCiAJICBSQU5MSUI9OgogCSAgb2JqbGlzdD0KIAkgIGNvbmNhdF9jbWRzPQogCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCi0KKwkgIG9sZG9ianM9CiAJICAjIElzIHRoZXJlIGEgYmV0dGVyIHdheSBvZiBmaW5kaW5nIHRoZSBsYXN0IG9iamVjdCBpbiB0aGUgbGlzdD8KIAkgIGZvciBvYmogaW4gJHNhdmVfb2xkb2JqcwogCSAgZG8KIAkgICAgbGFzdF9vbGRvYmo9JG9iagogCSAgZG9uZQorCSAgZXZhbCB0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCisJICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCisJICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKKwkgIGxlbj0kbGVuMAogCSAgZm9yIG9iaiBpbiAkc2F2ZV9vbGRvYmpzCiAJICBkbwotCSAgICBvbGRvYmpzPSIkb2JqbGlzdCAkb2JqIgotCSAgICBvYmpsaXN0PSIkb2JqbGlzdCAkb2JqIgotCSAgICBldmFsIHRlc3RfY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKLQkgICAgaWYgbGVuPWBleHByICJYJHRlc3RfY21kcyIgOiAiLioiIDI+L2Rldi9udWxsYCAmJgotCSAgICAgICB0ZXN0ICIkbGVuIiAtbGUgIiRtYXhfY21kX2xlbiI7IHRoZW4KKwkgICAgZnVuY19sZW4gIiAkb2JqIgorCSAgICBmdW5jX2FyaXRoICRsZW4gKyAkZnVuY19sZW5fcmVzdWx0CisJICAgIGxlbj0kZnVuY19hcml0aF9yZXN1bHQKKwkgICAgZnVuY19hcHBlbmQgb2JqbGlzdCAiICRvYmoiCisJICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIjsgdGhlbgogCSAgICAgIDoKIAkgICAgZWxzZQogCSAgICAgICMgdGhlIGFib3ZlIGNvbW1hbmQgc2hvdWxkIGJlIHVzZWQgYmVmb3JlIGl0IGdldHMgdG9vIGxvbmcKIAkgICAgICBvbGRvYmpzPSRvYmpsaXN0CiAJICAgICAgaWYgdGVzdCAiJG9iaiIgPSAiJGxhc3Rfb2xkb2JqIiA7IHRoZW4KLQkgICAgICAgIFJBTkxJQj0kc2F2ZV9SQU5MSUIKKwkJUkFOTElCPSRzYXZlX1JBTkxJQgogCSAgICAgIGZpCiAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CiAJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIKIAkgICAgICBvYmpsaXN0PQorCSAgICAgIGxlbj0kbGVuMAogCSAgICBmaQogCSAgZG9uZQogCSAgUkFOTElCPSRzYXZlX1JBTkxJQgpAQCAtNTYzNSw0OSArODAxMCwzOSBAQAogCSAgZmkKIAlmaQogICAgICAgZmkKLSAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotICAgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KLSAgICAgICAgZXZhbCBjbWQ9XCIkY21kXCIKLQlJRlM9IiRzYXZlX2lmcyIKLQkkc2hvdyAiJGNtZCIKLQkkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KLSAgICAgIGRvbmUKLSAgICAgIElGUz0iJHNhdmVfaWZzIgorICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRjbWRzIiAnZXhpdCAkPycKICAgICBkb25lCiAKLSAgICBpZiB0ZXN0IC1uICIkZ2VuZXJhdGVkIjsgdGhlbgotICAgICAgJHNob3cgIiR7cm19ciRnZW5lcmF0ZWQiCi0gICAgICAkcnVuICR7cm19ciRnZW5lcmF0ZWQKLSAgICBmaQorICAgIHRlc3QgLW4gIiRnZW5lcmF0ZWQiICYmIFwKKyAgICAgIGZ1bmNfc2hvd19ldmFsICIke1JNfXIkZ2VuZXJhdGVkIgogCiAgICAgIyBOb3cgY3JlYXRlIHRoZSBsaWJ0b29sIGFyY2hpdmUuCiAgICAgY2FzZSAkb3V0cHV0IGluCiAgICAgKi5sYSkKICAgICAgIG9sZF9saWJyYXJ5PQogICAgICAgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllcyAmJiBvbGRfbGlicmFyeT0iJGxpYm5hbWUuJGxpYmV4dCIKLSAgICAgICRzaG93ICJjcmVhdGluZyAkb3V0cHV0IgorICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0IgogCiAgICAgICAjIFByZXNlcnZlIGFueSB2YXJpYWJsZXMgdGhhdCBtYXkgYWZmZWN0IGNvbXBpbGVyIGJlaGF2aW9yCiAgICAgICBmb3IgdmFyIGluICR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluazsgZG8KIAlpZiBldmFsIHRlc3QgLXogXCJcJHskdmFyK3NldH1cIjsgdGhlbgotCSAgcmVsaW5rX2NvbW1hbmQ9InsgdGVzdCAteiBcIlwkeyR2YXIrc2V0fVwiIHx8IHVuc2V0ICR2YXIgfHwgeyAkdmFyPTsgZXhwb3J0ICR2YXI7IH07IH07ICRyZWxpbmtfY29tbWFuZCIKKwkgIHJlbGlua19jb21tYW5kPSJ7IHRlc3QgLXogXCJcJHskdmFyK3NldH1cIiB8fCAkbHRfdW5zZXQgJHZhciB8fCB7ICR2YXI9OyBleHBvcnQgJHZhcjsgfTsgfTsgJHJlbGlua19jb21tYW5kIgogCWVsaWYgZXZhbCB2YXJfdmFsdWU9XCQkdmFyOyB0ZXN0IC16ICIkdmFyX3ZhbHVlIjsgdGhlbgogCSAgcmVsaW5rX2NvbW1hbmQ9IiR2YXI9OyBleHBvcnQgJHZhcjsgJHJlbGlua19jb21tYW5kIgogCWVsc2UKLQkgIHZhcl92YWx1ZT1gJGVjaG8gIlgkdmFyX3ZhbHVlIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQkgIHJlbGlua19jb21tYW5kPSIkdmFyPVwiJHZhcl92YWx1ZVwiOyBleHBvcnQgJHZhcjsgJHJlbGlua19jb21tYW5kIgorCSAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHZhcl92YWx1ZSIKKwkgIHJlbGlua19jb21tYW5kPSIkdmFyPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdDsgZXhwb3J0ICR2YXI7ICRyZWxpbmtfY29tbWFuZCIKIAlmaQogICAgICAgZG9uZQogICAgICAgIyBRdW90ZSB0aGUgbGluayBjb21tYW5kIGZvciBzaGlwcGluZy4KICAgICAgIHJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1tb2RlPXJlbGluayAkbGlidG9vbF9hcmdzIEBpbnN0X3ByZWZpeF9kaXJAKSIKLSAgICAgIHJlbGlua19jb21tYW5kPWAkZWNobyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCIgfCAkTkwyU1BgCisgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXMgOyB0aGVuCiAJcmVsaW5rX2NvbW1hbmQ9CiAgICAgICBmaQogCi0KICAgICAgICMgT25seSBjcmVhdGUgdGhlIG91dHB1dCBpZiBub3QgYSBkcnkgcnVuLgotICAgICAgaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KKyAgICAgICRvcHRfZHJ5X3J1biB8fCB7CiAJZm9yIGluc3RhbGxlZCBpbiBubyB5ZXM7IGRvCiAJICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IHllczsgdGhlbgogCSAgICBpZiB0ZXN0IC16ICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCkBAIC01Njg5LDEyICs4MDU0LDExIEBACiAJICAgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgICBjYXNlICRkZXBsaWIgaW4KIAkgICAgICAqLmxhKQotCQluYW1lPWAkZWNobyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKwkJZnVuY19iYXNlbmFtZSAiJGRlcGxpYiIKKwkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgogCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotCQlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotCQkgICRlY2hvICIkbW9kZW5hbWU6IFxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIiAxPiYyCi0JCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JCWZpCisJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKKwkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKIAkJbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRsaWJkaXIvJG5hbWUiCiAJCTs7CiAJICAgICAgKikgbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRkZXBsaWIiIDs7CkBAIC01NzAyLDI1ICs4MDY2LDM3IEBACiAJICAgIGRvbmUKIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgICBuZXdkbGZpbGVzPQorCiAJICAgIGZvciBsaWIgaW4gJGRsZmlsZXM7IGRvCi0JICAgICAgbmFtZT1gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCi0JICAgICAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKLQkgICAgICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotCQkkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgotCQlleGl0ICRFWElUX0ZBSUxVUkUKLQkgICAgICBmaQotCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCisJICAgICAgY2FzZSAkbGliIGluCisJICAgICAgKi5sYSkKKwkgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRsaWIiCisJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKKwkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAorCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCQluZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliZGlyLyRuYW1lIgorCQk7OworCSAgICAgICopIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiIDs7CisJICAgICAgZXNhYwogCSAgICBkb25lCiAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgogCSAgICBuZXdkbHByZWZpbGVzPQogCSAgICBmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbwotCSAgICAgIG5hbWU9YCRlY2hvICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotCSAgICAgIGV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCi0JICAgICAgaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KLQkJJGVjaG8gIiRtb2RlbmFtZTogXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiIDE+JjIKLQkJZXhpdCAkRVhJVF9GQUlMVVJFCi0JICAgICAgZmkKLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkbGliZGlyLyRuYW1lIgorCSAgICAgIGNhc2UgJGxpYiBpbgorCSAgICAgICoubGEpCisJCSMgT25seSBwYXNzIHByZW9wZW5lZCBmaWxlcyB0byB0aGUgcHNldWRvLWFyY2hpdmUgKGZvcgorCQkjIGV2ZW50dWFsIGxpbmtpbmcgd2l0aCB0aGUgYXBwLiB0aGF0IGxpbmtzIGl0KSBpZiB3ZQorCQkjIGRpZG4ndCBhbHJlYWR5IGxpbmsgdGhlIHByZW9wZW5lZCBvYmplY3RzIGRpcmVjdGx5IGludG8KKwkJIyB0aGUgbGlicmFyeToKKwkJZnVuY19iYXNlbmFtZSAiJGxpYiIKKwkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAorCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJCW5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCisJCTs7CisJICAgICAgZXNhYwogCSAgICBkb25lCiAJICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgogCSAgZWxzZQpAQCAtNTc0MywxNSArODExOSwxNSBAQAogCSAgICBkb25lCiAJICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgogCSAgZmkKLQkgICRybSAkb3V0cHV0CisJICAkUk0gJG91dHB1dAogCSAgIyBwbGFjZSBkbG5hbWUgaW4gY29ycmVjdCBwb3NpdGlvbiBmb3IgY3lnd2luCiAJICB0ZGxuYW1lPSRkbG5hbWUKIAkgIGNhc2UgJGhvc3QsJG91dHB1dCwkaW5zdGFsbGVkLCRtb2R1bGUsJGRsbmFtZSBpbgotCSAgICAqY3lnd2luKiwqbGFpLHllcyxubywqLmRsbCB8ICptaW5ndyosKmxhaSx5ZXMsbm8sKi5kbGwpIHRkbG5hbWU9Li4vYmluLyRkbG5hbWUgOzsKKwkgICAgKmN5Z3dpbiosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqbWluZ3cqLCpsYWkseWVzLG5vLCouZGxsIHwgKmNlZ2NjKiwqbGFpLHllcyxubywqLmRsbCkgdGRsbmFtZT0uLi9iaW4vJGRsbmFtZSA7OwogCSAgZXNhYwotCSAgJGVjaG8gPiAkb3V0cHV0ICJcCisJICAkRUNITyA+ICRvdXRwdXQgIlwKICMgJG91dHB1dG5hbWUgLSBhIGxpYnRvb2wgbGlicmFyeSBmaWxlCi0jIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAtIEdOVSAkUEFDS0FHRSAkVkVSU0lPTiRUSU1FU1RBTVAKKyMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgogIwogIyBQbGVhc2UgRE8gTk9UIGRlbGV0ZSB0aGlzIGZpbGUhCiAjIEl0IGlzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyB0aGUgbGlicmFyeS4KQEAgLTU3NjUsOSArODE0MSwxNSBAQAogIyBUaGUgbmFtZSBvZiB0aGUgc3RhdGljIGFyY2hpdmUuCiBvbGRfbGlicmFyeT0nJG9sZF9saWJyYXJ5JwogCisjIExpbmtlciBmbGFncyB0aGF0IGNhbiBub3QgZ28gaW4gZGVwZW5kZW5jeV9saWJzLgoraW5oZXJpdGVkX2xpbmtlcl9mbGFncz0nJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzJworCiAjIExpYnJhcmllcyB0aGF0IHRoaXMgb25lIGRlcGVuZHMgdXBvbi4KIGRlcGVuZGVuY3lfbGlicz0nJGRlcGVuZGVuY3lfbGlicycKIAorIyBOYW1lcyBvZiBhZGRpdGlvbmFsIHdlYWsgbGlicmFyaWVzIHByb3ZpZGVkIGJ5IHRoaXMgbGlicmFyeQord2Vha19saWJyYXJ5X25hbWVzPSckd2Vha19saWJzJworCiAjIFZlcnNpb24gaW5mb3JtYXRpb24gZm9yICRsaWJuYW1lLgogY3VycmVudD0kY3VycmVudAogYWdlPSRhZ2UKQEAgLTU3ODYsNzQ4ICs4MTY4LDI5IEBACiAjIERpcmVjdG9yeSB0aGF0IHRoaXMgbGlicmFyeSBuZWVkcyB0byBiZSBpbnN0YWxsZWQgaW46CiBsaWJkaXI9JyRpbnN0YWxsX2xpYmRpciciCiAJICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vICYmIHRlc3QgIiRuZWVkX3JlbGluayIgPSB5ZXM7IHRoZW4KLQkgICAgJGVjaG8gPj4gJG91dHB1dCAiXAorCSAgICAkRUNITyA+PiAkb3V0cHV0ICJcCiByZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiIgogCSAgZmkKIAlkb25lCi0gICAgICBmaQorICAgICAgfQogCiAgICAgICAjIERvIGEgc3ltYm9saWMgbGluayBzbyB0aGF0IHRoZSBsaWJ0b29sIGFyY2hpdmUgY2FuIGJlIGZvdW5kIGluCiAgICAgICAjIExEX0xJQlJBUllfUEFUSCBiZWZvcmUgdGhlIHByb2dyYW0gaXMgaW5zdGFsbGVkLgotICAgICAgJHNob3cgIihjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJG91dHB1dG5hbWUgJiYgJExOX1MgLi4vJG91dHB1dG5hbWUgJG91dHB1dG5hbWUpIgotICAgICAgJHJ1biBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJHJtICRvdXRwdXRuYW1lICYmICRMTl9TIC4uLyRvdXRwdXRuYW1lICRvdXRwdXRuYW1lKScgfHwgZXhpdCAkPworICAgICAgZnVuY19zaG93X2V2YWwgJyggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiAkUk0gIiRvdXRwdXRuYW1lIiAmJiAkTE5fUyAiLi4vJG91dHB1dG5hbWUiICIkb3V0cHV0bmFtZSIgKScgJ2V4aXQgJD8nCiAgICAgICA7OwogICAgIGVzYWMKICAgICBleGl0ICRFWElUX1NVQ0NFU1MKLSAgICA7OworfQogCi0gICMgbGlidG9vbCBpbnN0YWxsIG1vZGUKLSAgaW5zdGFsbCkKLSAgICBtb2RlbmFtZT0iJG1vZGVuYW1lOiBpbnN0YWxsIgoreyB0ZXN0ICIkbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgfSAmJgorICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQogCi0gICAgIyBUaGVyZSBtYXkgYmUgYW4gb3B0aW9uYWwgc2goMSkgYXJndW1lbnQgYXQgdGhlIGJlZ2lubmluZyBvZgotICAgICMgaW5zdGFsbF9wcm9nIChlc3BlY2lhbGx5IG9uIFdpbmRvd3MgTlQpLgotICAgIGlmIHRlc3QgIiRub25vcHQiID0gIiRTSEVMTCIgfHwgdGVzdCAiJG5vbm9wdCIgPSAvYmluL3NoIHx8Ci0gICAgICAgIyBBbGxvdyB0aGUgdXNlIG9mIEdOVSBzaHRvb2wncyBpbnN0YWxsIGNvbW1hbmQuCi0gICAgICAgJGVjaG8gIlgkbm9ub3B0IiB8IGdyZXAgc2h0b29sID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCi0gICAgICBhcmc9YCRlY2hvICJYJG5vbm9wdCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgICBjYXNlICRhcmcgaW4KLSAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotCWFyZz0iXCIkYXJnXCIiCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIGluc3RhbGxfcHJvZz0iJGFyZyAiCi0gICAgICBhcmc9IiQxIgotICAgICAgc2hpZnQKLSAgICBlbHNlCi0gICAgICBpbnN0YWxsX3Byb2c9Ci0gICAgICBhcmc9JG5vbm9wdAotICAgIGZpCiAKLSAgICAjIFRoZSByZWFsIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgaW5zdGFsbGF0aW9uIHByb2dyYW0uCi0gICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgotICAgIGFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSAgICBjYXNlICRhcmcgaW4KLSAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLSAgICAgIGFyZz0iXCIkYXJnXCIiCi0gICAgICA7OwotICAgIGVzYWMKLSAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2ckYXJnIgotCi0gICAgIyBXZSBuZWVkIHRvIGFjY2VwdCBhdCBsZWFzdCBhbGwgdGhlIEJTRCBpbnN0YWxsIGZsYWdzLgotICAgIGRlc3Q9Ci0gICAgZmlsZXM9Ci0gICAgb3B0cz0KLSAgICBwcmV2PQotICAgIGluc3RhbGxfdHlwZT0KLSAgICBpc2Rpcj1ubwotICAgIHN0cmlwbWU9Ci0gICAgZm9yIGFyZwotICAgIGRvCi0gICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KLQlmaWxlcz0iJGZpbGVzICRkZXN0IgotCWRlc3Q9JGFyZwotCWNvbnRpbnVlCi0gICAgICBmaQotCi0gICAgICBjYXNlICRhcmcgaW4KLSAgICAgIC1kKSBpc2Rpcj15ZXMgOzsKLSAgICAgIC1mKSAKLSAgICAgIAljYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCi0JKltcXFwgL11jcFwgKikgOzsKLQkqKSBwcmV2PSRhcmcgOzsKLQllc2FjCi0JOzsKLSAgICAgIC1nIHwgLW0gfCAtbykgcHJldj0kYXJnIDs7Ci0gICAgICAtcykKLQlzdHJpcG1lPSIgLXMiCi0JY29udGludWUKLQk7OwotICAgICAgLSopCi0JOzsKLSAgICAgICopCi0JIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRlZCBhbiBhcmd1bWVudCwgdGhlbiBza2lwIGl0LgotCWlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgotCSAgcHJldj0KLQllbHNlCi0JICBkZXN0PSRhcmcKLQkgIGNvbnRpbnVlCi0JZmkKLQk7OwotICAgICAgZXNhYwotCi0gICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgotICAgICAgYXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgICAgY2FzZSAkYXJnIGluCi0gICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQlhcmc9IlwiJGFyZ1wiIgotCTs7Ci0gICAgICBlc2FjCi0gICAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2cgJGFyZyIKLSAgICBkb25lCi0KLSAgICBpZiB0ZXN0IC16ICIkaW5zdGFsbF9wcm9nIjsgdGhlbgotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogeW91IG11c3Qgc3BlY2lmeSBhbiBpbnN0YWxsIHByb2dyYW0iIDE+JjIKLSAgICAgICRlY2hvICIkaGVscCIgMT4mMgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgZmkKLQotICAgIGlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogdGhlIFxgJHByZXYnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIgMT4mMgotICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgICBmaQotCi0gICAgaWYgdGVzdCAteiAiJGZpbGVzIjsgdGhlbgotICAgICAgaWYgdGVzdCAteiAiJGRlc3QiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogbm8gZmlsZSBvciBkZXN0aW5hdGlvbiBzcGVjaWZpZWQiIDE+JjIKLSAgICAgIGVsc2UKLQkkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgZGVzdGluYXRpb24iIDE+JjIKLSAgICAgIGZpCi0gICAgICAkZWNobyAiJGhlbHAiIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCi0KLSAgICAjIFN0cmlwIGFueSB0cmFpbGluZyBzbGFzaCBmcm9tIHRoZSBkZXN0aW5hdGlvbi4KLSAgICBkZXN0PWAkZWNobyAiWCRkZXN0IiB8ICRYc2VkIC1lICdzJS8kJSUnYAotCi0gICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnkuCi0gICAgdGVzdCAtZCAiJGRlc3QiICYmIGlzZGlyPXllcwotICAgIGlmIHRlc3QgIiRpc2RpciIgPSB5ZXM7IHRoZW4KLSAgICAgIGRlc3RkaXI9IiRkZXN0IgotICAgICAgZGVzdG5hbWU9Ci0gICAgZWxzZQotICAgICAgZGVzdGRpcj1gJGVjaG8gIlgkZGVzdCIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAotICAgICAgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGRlc3QiICYmIGRlc3RkaXI9LgotICAgICAgZGVzdG5hbWU9YCRlY2hvICJYJGRlc3QiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKLQotICAgICAgIyBOb3QgYSBkaXJlY3RvcnksIHNvIGNoZWNrIHRvIHNlZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIGZpbGUgc3BlY2lmaWVkLgotICAgICAgc2V0IGR1bW15ICRmaWxlcwotICAgICAgaWYgdGVzdCAiJCMiIC1ndCAyOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogXGAkZGVzdCcgaXMgbm90IGEgZGlyZWN0b3J5IiAxPiYyCi0JJGVjaG8gIiRoZWxwIiAxPiYyCi0JZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgICBmaQotICAgIGZpCi0gICAgY2FzZSAkZGVzdGRpciBpbgotICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKLSAgICAqKQotICAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwotCWNhc2UgJGZpbGUgaW4KLQkqLmxvKSA7OwotCSopCi0JICAkZWNobyAiJG1vZGVuYW1lOiBcYCRkZXN0ZGlyJyBtdXN0IGJlIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIiAxPiYyCi0JICAkZWNobyAiJGhlbHAiIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotCSAgOzsKLQllc2FjCi0gICAgICBkb25lCi0gICAgICA7OwotICAgIGVzYWMKLQotICAgICMgVGhpcyB2YXJpYWJsZSB0ZWxscyB3cmFwcGVyIHNjcmlwdHMganVzdCB0byBzZXQgdmFyaWFibGVzIHJhdGhlcgotICAgICMgdGhhbiBydW5uaW5nIHRoZWlyIHByb2dyYW1zLgotICAgIGxpYnRvb2xfaW5zdGFsbF9tYWdpYz0iJG1hZ2ljIgotCi0gICAgc3RhdGljbGlicz0KLSAgICBmdXR1cmVfbGliZGlycz0KLSAgICBjdXJyZW50X2xpYmRpcnM9Ci0gICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwotCi0gICAgICAjIERvIGVhY2ggaW5zdGFsbGF0aW9uLgotICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgKi4kbGliZXh0KQotCSMgRG8gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGF0ZXIuCi0Jc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGZpbGUiCi0JOzsKLQotICAgICAgKi5sYSkKLQkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgotCWlmICgke1NFRH0gLWUgJzJxJyAkZmlsZSB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLQllbHNlCi0JICAkZWNobyAiJG1vZGVuYW1lOiBcYCRmaWxlJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiIDE+JjIKLQkgICRlY2hvICIkaGVscCIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JZmkKLQotCWxpYnJhcnlfbmFtZXM9Ci0Jb2xkX2xpYnJhcnk9Ci0JcmVsaW5rX2NvbW1hbmQ9Ci0JIyBJZiB0aGVyZSBpcyBubyBkaXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGFkZCBvbmUuCi0JY2FzZSAkZmlsZSBpbgotCSovKiB8ICpcXCopIC4gJGZpbGUgOzsKLQkqKSAuIC4vJGZpbGUgOzsKLQllc2FjCi0KLQkjIEFkZCB0aGUgbGliZGlyIHRvIGN1cnJlbnRfbGliZGlycyBpZiBpdCBpcyB0aGUgZGVzdGluYXRpb24uCi0JaWYgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGxpYmRpciI7IHRoZW4KLQkgIGNhc2UgIiRjdXJyZW50X2xpYmRpcnMgIiBpbgotCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIGN1cnJlbnRfbGliZGlycz0iJGN1cnJlbnRfbGliZGlycyAkbGliZGlyIiA7OwotCSAgZXNhYwotCWVsc2UKLQkgICMgTm90ZSB0aGUgbGliZGlyIGFzIGEgZnV0dXJlIGxpYmRpci4KLQkgIGNhc2UgIiRmdXR1cmVfbGliZGlycyAiIGluCi0JICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgZnV0dXJlX2xpYmRpcnM9IiRmdXR1cmVfbGliZGlycyAkbGliZGlyIiA7OwotCSAgZXNhYwotCWZpCi0KLQlkaXI9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AvCi0JdGVzdCAiWCRkaXIiID0gIlgkZmlsZS8iICYmIGRpcj0KLQlkaXI9IiRkaXIkb2JqZGlyIgotCi0JaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgotCSAgIyBEZXRlcm1pbmUgdGhlIHByZWZpeCB0aGUgdXNlciBoYXMgYXBwbGllZCB0byBvdXIgZnV0dXJlIGRpci4KLQkgIGluc3RfcHJlZml4X2Rpcj1gJGVjaG8gIiRkZXN0ZGlyIiB8ICRTRUQgInMlJGxpYmRpclwkJSUiYAotCi0JICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCi0JICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0Ci0JICAjIGFyZSBpbnN0YWxsZWQgdG8gdGhlIHNhbWUgcHJlZml4LgotCSAgIyBBdCBwcmVzZW50LCB0aGlzIGNoZWNrIGRvZXNuJ3QgYWZmZWN0IHdpbmRvd3MgLmRsbCdzIHRoYXQKLQkgICMgYXJlIGluc3RhbGxlZCBpbnRvICRsaWJkaXIvLi4vYmluIChjdXJyZW50bHksIHRoYXQgd29ya3MgZmluZSkKLQkgICMgYnV0IGl0J3Mgc29tZXRoaW5nIHRvIGtlZXAgYW4gZXllIG9uLgotCSAgaWYgdGVzdCAiJGluc3RfcHJlZml4X2RpciIgPSAiJGRlc3RkaXIiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGVycm9yOiBjYW5ub3QgaW5zdGFsbCBcYCRmaWxlJyB0byBhIGRpcmVjdG9yeSBub3QgZW5kaW5nIGluICRsaWJkaXIiIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICBmaQotCi0JICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgotCSAgICAjIFN0aWNrIHRoZSBpbnN0X3ByZWZpeF9kaXIgZGF0YSBpbnRvIHRoZSBsaW5rIGNvbW1hbmQuCi0JICAgIHJlbGlua19jb21tYW5kPWAkZWNobyAiJHJlbGlua19jb21tYW5kIiB8ICRTUDJOTCB8ICRTRUQgInMlQGluc3RfcHJlZml4X2RpckAlLWluc3QtcHJlZml4LWRpciAkaW5zdF9wcmVmaXhfZGlyJSIgfCAkTkwyU1BgCi0JICBlbHNlCi0JICAgIHJlbGlua19jb21tYW5kPWAkZWNobyAiJHJlbGlua19jb21tYW5kIiB8ICRTUDJOTCB8ICRTRUQgInMlQGluc3RfcHJlZml4X2RpckAlJSIgfCAkTkwyU1BgCi0JICBmaQotCi0JICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiByZWxpbmtpbmcgXGAkZmlsZSciIDE+JjIKLQkgICRzaG93ICIkcmVsaW5rX2NvbW1hbmQiCi0JICBpZiAkcnVuIGV2YWwgIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4gOgotCSAgZWxzZQotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBlcnJvcjogcmVsaW5rIFxgJGZpbGUnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQiIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICBmaQotCWZpCi0KLQkjIFNlZSB0aGUgbmFtZXMgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5LgotCXNldCBkdW1teSAkbGlicmFyeV9uYW1lcwotCWlmIHRlc3QgLW4gIiQyIjsgdGhlbgotCSAgcmVhbG5hbWU9IiQyIgotCSAgc2hpZnQKLQkgIHNoaWZ0Ci0KLQkgIHNyY25hbWU9IiRyZWFsbmFtZSIKLQkgIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCIgJiYgc3JjbmFtZT0iJHJlYWxuYW1lIlQKLQotCSAgIyBJbnN0YWxsIHRoZSBzaGFyZWQgbGlicmFyeSBhbmQgYnVpbGQgdGhlIHN5bWxpbmtzLgotCSAgJHNob3cgIiRpbnN0YWxsX3Byb2cgJGRpci8kc3JjbmFtZSAkZGVzdGRpci8kcmVhbG5hbWUiCi0JICAkcnVuIGV2YWwgIiRpbnN0YWxsX3Byb2cgJGRpci8kc3JjbmFtZSAkZGVzdGRpci8kcmVhbG5hbWUiIHx8IGV4aXQgJD8KLQkgIGlmIHRlc3QgLW4gIiRzdHJpcG1lIiAmJiB0ZXN0IC1uICIkc3RyaXBsaWIiOyB0aGVuCi0JICAgICRzaG93ICIkc3RyaXBsaWIgJGRlc3RkaXIvJHJlYWxuYW1lIgotCSAgICAkcnVuIGV2YWwgIiRzdHJpcGxpYiAkZGVzdGRpci8kcmVhbG5hbWUiIHx8IGV4aXQgJD8KLQkgIGZpCi0KLQkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgotCSAgICAjIERlbGV0ZSB0aGUgb2xkIHN5bWxpbmtzLCBhbmQgY3JlYXRlIG5ldyBvbmVzLgotCSAgICAjIFRyeSBgbG4gLXNmJyBmaXJzdCwgYmVjYXVzZSB0aGUgYGxuJyBiaW5hcnkgbWlnaHQgZGVwZW5kIG9uCi0JICAgICMgdGhlIHN5bWxpbmsgd2UgcmVwbGFjZSEgIFNvbGFyaXMgL2Jpbi9sbiBkb2VzIG5vdCB1bmRlcnN0YW5kIC1mLAotCSAgICAjIHNvIHdlIGFsc28gbmVlZCB0byB0cnkgcm0gJiYgbG4gLXMuCi0JICAgIGZvciBsaW5rbmFtZQotCSAgICBkbwotCSAgICAgIGlmIHRlc3QgIiRsaW5rbmFtZSIgIT0gIiRyZWFsbmFtZSI7IHRoZW4KLSAgICAgICAgICAgICAgICAkc2hvdyAiKGNkICRkZXN0ZGlyICYmIHsgJExOX1MgLWYgJHJlYWxuYW1lICRsaW5rbmFtZSB8fCB7ICRybSAkbGlua25hbWUgJiYgJExOX1MgJHJlYWxuYW1lICRsaW5rbmFtZTsgfTsgfSkiCi0gICAgICAgICAgICAgICAgJHJ1biBldmFsICIoY2QgJGRlc3RkaXIgJiYgeyAkTE5fUyAtZiAkcmVhbG5hbWUgJGxpbmtuYW1lIHx8IHsgJHJtICRsaW5rbmFtZSAmJiAkTE5fUyAkcmVhbG5hbWUgJGxpbmtuYW1lOyB9OyB9KSIKLQkgICAgICBmaQotCSAgICBkb25lCi0JICBmaQotCi0JICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgcG9zdGluc3RhbGwgY29tbWFuZHMuCi0JICBsaWI9IiRkZXN0ZGlyLyRyZWFsbmFtZSIKLQkgIGNtZHM9JHBvc3RpbnN0YWxsX2NtZHMKLQkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgZm9yIGNtZCBpbiAkY21kczsgZG8KLQkgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgIGV2YWwgY21kPVwiJGNtZFwiCi0JICAgICRzaG93ICIkY21kIgotCSAgICAkcnVuIGV2YWwgIiRjbWQiIHx8IHsKLQkgICAgICBsdF9leGl0PSQ/Ci0KLQkgICAgICAjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLQkgICAgICBpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLQkJJHJ1biBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJHJtICR7cmVhbG5hbWV9VCAmJiAkbXYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSknCi0JICAgICAgZmkKLQotCSAgICAgIGV4aXQgJGx0X2V4aXQKLQkgICAgfQotCSAgZG9uZQotCSAgSUZTPSIkc2F2ZV9pZnMiCi0JZmkKLQotCSMgSW5zdGFsbCB0aGUgcHNldWRvLWxpYnJhcnkgZm9yIGluZm9ybWF0aW9uIHB1cnBvc2VzLgotCW5hbWU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKLQlpbnN0bmFtZT0iJGRpci8kbmFtZSJpCi0JJHNob3cgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIgotCSRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyAkaW5zdG5hbWUgJGRlc3RkaXIvJG5hbWUiIHx8IGV4aXQgJD8KLQotCSMgTWF5YmUgaW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnksIHRvby4KLQl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgotCTs7Ci0KLSAgICAgICoubG8pCi0JIyBJbnN0YWxsIChpLmUuIGNvcHkpIGEgbGlidG9vbCBvYmplY3QuCi0KLQkjIEZpZ3VyZSBvdXQgZGVzdGluYXRpb24gZmlsZSBuYW1lLCBpZiBpdCB3YXNuJ3QgYWxyZWFkeSBzcGVjaWZpZWQuCi0JaWYgdGVzdCAtbiAiJGRlc3RuYW1lIjsgdGhlbgotCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0bmFtZSIKLQllbHNlCi0JICBkZXN0ZmlsZT1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0ZmlsZSIKLQlmaQotCi0JIyBEZWR1Y2UgdGhlIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIG9sZC1zdHlsZSBvYmplY3QgZmlsZS4KLQljYXNlICRkZXN0ZmlsZSBpbgotCSoubG8pCi0JICBzdGF0aWNkZXN0PWAkZWNobyAiWCRkZXN0ZmlsZSIgfCAkWHNlZCAtZSAiJGxvMm8iYAotCSAgOzsKLQkqLiRvYmpleHQpCi0JICBzdGF0aWNkZXN0PSIkZGVzdGZpbGUiCi0JICBkZXN0ZmlsZT0KLQkgIDs7Ci0JKikKLQkgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBjb3B5IGEgbGlidG9vbCBvYmplY3QgdG8gXGAkZGVzdGZpbGUnIiAxPiYyCi0JICAkZWNobyAiJGhlbHAiIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotCSAgOzsKLQllc2FjCi0KLQkjIEluc3RhbGwgdGhlIGxpYnRvb2wgb2JqZWN0IGlmIHJlcXVlc3RlZC4KLQlpZiB0ZXN0IC1uICIkZGVzdGZpbGUiOyB0aGVuCi0JICAkc2hvdyAiJGluc3RhbGxfcHJvZyAkZmlsZSAkZGVzdGZpbGUiCi0JICAkcnVuIGV2YWwgIiRpbnN0YWxsX3Byb2cgJGZpbGUgJGRlc3RmaWxlIiB8fCBleGl0ICQ/Ci0JZmkKLQotCSMgSW5zdGFsbCB0aGUgb2xkIG9iamVjdCBpZiBlbmFibGVkLgotCWlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KLQkgICMgRGVkdWNlIHRoZSBuYW1lIG9mIHRoZSBvbGQtc3R5bGUgb2JqZWN0IGZpbGUuCi0JICBzdGF0aWNvYmo9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgIiRsbzJvImAKLQotCSAgJHNob3cgIiRpbnN0YWxsX3Byb2cgJHN0YXRpY29iaiAkc3RhdGljZGVzdCIKLQkgICRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyBcJHN0YXRpY29iaiBcJHN0YXRpY2Rlc3QiIHx8IGV4aXQgJD8KLQlmaQotCWV4aXQgJEVYSVRfU1VDQ0VTUwotCTs7Ci0KLSAgICAgICopCi0JIyBGaWd1cmUgb3V0IGRlc3RpbmF0aW9uIGZpbGUgbmFtZSwgaWYgaXQgd2Fzbid0IGFscmVhZHkgc3BlY2lmaWVkLgotCWlmIHRlc3QgLW4gIiRkZXN0bmFtZSI7IHRoZW4KLQkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdG5hbWUiCi0JZWxzZQotCSAgZGVzdGZpbGU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKLQkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdGZpbGUiCi0JZmkKLQotCSMgSWYgdGhlIGZpbGUgaXMgbWlzc2luZywgYW5kIHRoZXJlIGlzIGEgLmV4ZSBvbiB0aGUgZW5kLCBzdHJpcCBpdAotCSMgYmVjYXVzZSBpdCBpcyBtb3N0IGxpa2VseSBhIGxpYnRvb2wgc2NyaXB0IHdlIGFjdHVhbGx5IHdhbnQgdG8KLQkjIGluc3RhbGwKLQlzdHJpcHBlZF9leHQ9IiIKLQljYXNlICRmaWxlIGluCi0JICAqLmV4ZSkKLQkgICAgaWYgdGVzdCAhIC1mICIkZmlsZSI7IHRoZW4KLQkgICAgICBmaWxlPWAkZWNobyAkZmlsZXwke1NFRH0gJ3MsLmV4ZSQsLCdgCi0JICAgICAgc3RyaXBwZWRfZXh0PSIuZXhlIgotCSAgICBmaQotCSAgICA7OwotCWVzYWMKLQotCSMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIHJlYWxseSBhIGxpYnRvb2wgcHJvZ3JhbS4KLQljYXNlICRob3N0IGluCi0JKmN5Z3dpbip8Km1pbmd3KikKLQkgICAgd3JhcHBlcj1gJGVjaG8gJGZpbGUgfCAke1NFRH0gLWUgJ3MsLmV4ZSQsLCdgCi0JICAgIDs7Ci0JKikKLQkgICAgd3JhcHBlcj0kZmlsZQotCSAgICA7OwotCWVzYWMKLQlpZiAoJHtTRUR9IC1lICc0cScgJHdyYXBwZXIgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICBub3RpbnN0X2RlcGxpYnM9Ci0JICByZWxpbmtfY29tbWFuZD0KLQotCSAgIyBOb3RlIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyeSBvbiBjeWd3aW4vbWluZ3cgdG8gYXBwZW5kIGEgZG90IHRvCi0JICAjIGZvbyBldmVuIGlmIGJvdGggZm9vIGFuZCBGSUxFLmV4ZSBleGlzdDogYXV0b21hdGljLWFwcGVuZC0uZXhlCi0JICAjIGJlaGF2aW9yIGhhcHBlbnMgb25seSBmb3IgZXhlYygzKSwgbm90IGZvciBvcGVuKDIpISAgQWxzbywgc291cmNpbmcKLQkgICMgYEZJTEUuJyBkb2VzIG5vdCB3b3JrIG9uIGN5Z3dpbiBtYW5hZ2VkIG1vdW50cy4KLQkgICMKLQkgICMgSWYgdGhlcmUgaXMgbm8gZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBhZGQgb25lLgotCSAgY2FzZSAkd3JhcHBlciBpbgotCSAgKi8qIHwgKlxcKikgLiAke3dyYXBwZXJ9IDs7Ci0JICAqKSAuIC4vJHt3cmFwcGVyfSA7OwotCSAgZXNhYwotCi0JICAjIENoZWNrIHRoZSB2YXJpYWJsZXMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHNldC4KLQkgIGlmIHRlc3QgLXogIiRub3RpbnN0X2RlcGxpYnMiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGludmFsaWQgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBcYCR3cmFwcGVyJyIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkgIGZpCi0KLQkgIGZpbmFsaXplPXllcwotCSAgZm9yIGxpYiBpbiAkbm90aW5zdF9kZXBsaWJzOyBkbwotCSAgICAjIENoZWNrIHRvIHNlZSB0aGF0IGVhY2ggbGlicmFyeSBpcyBpbnN0YWxsZWQuCi0JICAgIGxpYmRpcj0KLQkgICAgaWYgdGVzdCAtZiAiJGxpYiI7IHRoZW4KLQkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KLQkgICAgICBjYXNlICRsaWIgaW4KLQkgICAgICAqLyogfCAqXFwqKSAuICRsaWIgOzsKLQkgICAgICAqKSAuIC4vJGxpYiA7OwotCSAgICAgIGVzYWMKLQkgICAgZmkKLQkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRlY2hvICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0Ci0JICAgIGlmIHRlc3QgLW4gIiRsaWJkaXIiICYmIHRlc3QgISAtZiAiJGxpYmZpbGUiOyB0aGVuCi0JICAgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAkbGliJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIFxgJGxpYmRpciciIDE+JjIKLQkgICAgICBmaW5hbGl6ZT1ubwotCSAgICBmaQotCSAgZG9uZQotCi0JICByZWxpbmtfY29tbWFuZD0KLQkgICMgTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3Nhcnkgb24gY3lnd2luL21pbmd3IHRvIGFwcGVuZCBhIGRvdCB0bwotCSAgIyBmb28gZXZlbiBpZiBib3RoIGZvbyBhbmQgRklMRS5leGUgZXhpc3Q6IGF1dG9tYXRpYy1hcHBlbmQtLmV4ZQotCSAgIyBiZWhhdmlvciBoYXBwZW5zIG9ubHkgZm9yIGV4ZWMoMyksIG5vdCBmb3Igb3BlbigyKSEgIEFsc28sIHNvdXJjaW5nCi0JICAjIGBGSUxFLicgZG9lcyBub3Qgd29yayBvbiBjeWd3aW4gbWFuYWdlZCBtb3VudHMuCi0JICAjCi0JICAjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KLQkgIGNhc2UgJHdyYXBwZXIgaW4KLQkgICovKiB8ICpcXCopIC4gJHt3cmFwcGVyfSA7OwotCSAgKikgLiAuLyR7d3JhcHBlcn0gOzsKLQkgIGVzYWMKLQotCSAgb3V0cHV0bmFtZT0KLQkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0gbm8gJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgotCSAgICBpZiB0ZXN0ICIkZmluYWxpemUiID0geWVzICYmIHRlc3QgLXogIiRydW4iOyB0aGVuCi0JICAgICAgdG1wZGlyPWBmdW5jX21rdGVtcGRpcmAKLQkgICAgICBmaWxlPWAkZWNobyAiWCRmaWxlJHN0cmlwcGVkX2V4dCIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotCSAgICAgIG91dHB1dG5hbWU9IiR0bXBkaXIvJGZpbGUiCi0JICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCSAgICAgIHJlbGlua19jb21tYW5kPWAkZWNobyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRuYW1lIiclZycgfCAkTkwyU1BgCi0KLQkgICAgICAkc2hvdyAiJHJlbGlua19jb21tYW5kIgotCSAgICAgIGlmICRydW4gZXZhbCAiJHJlbGlua19jb21tYW5kIjsgdGhlbiA6Ci0JICAgICAgZWxzZQotCQkkZWNobyAiJG1vZGVuYW1lOiBlcnJvcjogcmVsaW5rIFxgJGZpbGUnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQiIDE+JjIKLQkJJHtybX1yICIkdG1wZGlyIgotCQljb250aW51ZQotCSAgICAgIGZpCi0JICAgICAgZmlsZT0iJG91dHB1dG5hbWUiCi0JICAgIGVsc2UKLQkgICAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBjYW5ub3QgcmVsaW5rIFxgJGZpbGUnIiAxPiYyCi0JICAgIGZpCi0JICBlbHNlCi0JICAgICMgSW5zdGFsbCB0aGUgYmluYXJ5IHRoYXQgd2UgY29tcGlsZWQgZWFybGllci4KLQkgICAgZmlsZT1gJGVjaG8gIlgkZmlsZSRzdHJpcHBlZF9leHQiIHwgJFhzZWQgLWUgInMlXChbXi9dKlwpJCUkb2JqZGlyL1wxJSJgCi0JICBmaQotCWZpCi0KLQkjIHJlbW92ZSAuZXhlIHNpbmNlIGN5Z3dpbiAvdXNyL2Jpbi9pbnN0YWxsIHdpbGwgYXBwZW5kIGFub3RoZXIKLQkjIG9uZSBhbnl3YXkgCi0JY2FzZSAkaW5zdGFsbF9wcm9nLCRob3N0IGluCi0JKi91c3IvYmluL2luc3RhbGwqLCpjeWd3aW4qKQotCSAgY2FzZSAkZmlsZTokZGVzdGZpbGUgaW4KLQkgICouZXhlOiouZXhlKQotCSAgICAjIHRoaXMgaXMgb2sKLQkgICAgOzsKLQkgICouZXhlOiopCi0JICAgIGRlc3RmaWxlPSRkZXN0ZmlsZS5leGUKLQkgICAgOzsKLQkgICo6Ki5leGUpCi0JICAgIGRlc3RmaWxlPWAkZWNobyAkZGVzdGZpbGUgfCAke1NFRH0gLWUgJ3MsLmV4ZSQsLCdgCi0JICAgIDs7Ci0JICBlc2FjCi0JICA7OwotCWVzYWMKLQkkc2hvdyAiJGluc3RhbGxfcHJvZyRzdHJpcG1lICRmaWxlICRkZXN0ZmlsZSIKLQkkcnVuIGV2YWwgIiRpbnN0YWxsX3Byb2dcJHN0cmlwbWUgXCRmaWxlIFwkZGVzdGZpbGUiIHx8IGV4aXQgJD8KLQl0ZXN0IC1uICIkb3V0cHV0bmFtZSIgJiYgJHtybX1yICIkdG1wZGlyIgotCTs7Ci0gICAgICBlc2FjCi0gICAgZG9uZQotCi0gICAgZm9yIGZpbGUgaW4gJHN0YXRpY2xpYnM7IGRvCi0gICAgICBuYW1lPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCi0KLSAgICAgICMgU2V0IHVwIHRoZSByYW5saWIgcGFyYW1ldGVycy4KLSAgICAgIG9sZGxpYj0iJGRlc3RkaXIvJG5hbWUiCi0KLSAgICAgICRzaG93ICIkaW5zdGFsbF9wcm9nICRmaWxlICRvbGRsaWIiCi0gICAgICAkcnVuIGV2YWwgIiRpbnN0YWxsX3Byb2cgXCRmaWxlIFwkb2xkbGliIiB8fCBleGl0ICQ/Ci0KLSAgICAgIGlmIHRlc3QgLW4gIiRzdHJpcG1lIiAmJiB0ZXN0IC1uICIkb2xkX3N0cmlwbGliIjsgdGhlbgotCSRzaG93ICIkb2xkX3N0cmlwbGliICRvbGRsaWIiCi0JJHJ1biBldmFsICIkb2xkX3N0cmlwbGliICRvbGRsaWIiIHx8IGV4aXQgJD8KLSAgICAgIGZpCi0KLSAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBwb3N0aW5zdGFsbCBjb21tYW5kcy4KLSAgICAgIGNtZHM9JG9sZF9wb3N0aW5zdGFsbF9jbWRzCi0gICAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLSAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0JSUZTPSIkc2F2ZV9pZnMiCi0JZXZhbCBjbWQ9XCIkY21kXCIKLQkkc2hvdyAiJGNtZCIKLQkkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KLSAgICAgIGRvbmUKLSAgICAgIElGUz0iJHNhdmVfaWZzIgotICAgIGRvbmUKLQotICAgIGlmIHRlc3QgLW4gIiRmdXR1cmVfbGliZGlycyI7IHRoZW4KLSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IHJlbWVtYmVyIHRvIHJ1biBcYCRwcm9nbmFtZSAtLWZpbmlzaCRmdXR1cmVfbGliZGlycyciIDE+JjIKLSAgICBmaQotCi0gICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyI7IHRoZW4KLSAgICAgICMgTWF5YmUganVzdCBkbyBhIGRyeSBydW4uCi0gICAgICB0ZXN0IC1uICIkcnVuIiAmJiBjdXJyZW50X2xpYmRpcnM9IiAtbiRjdXJyZW50X2xpYmRpcnMiCi0gICAgICBleGVjX2NtZD0nJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLWZpbmlzaCRjdXJyZW50X2xpYmRpcnMnCi0gICAgZWxzZQotICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgZmkKLSAgICA7OwotCi0gICMgbGlidG9vbCBmaW5pc2ggbW9kZQotICBmaW5pc2gpCi0gICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogZmluaXNoIgotICAgIGxpYmRpcnM9IiRub25vcHQiCi0gICAgYWRtaW5jbWRzPQotCi0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSAgICAgIGZvciBkaXIKLSAgICAgIGRvCi0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKLSAgICAgIGRvbmUKLQotICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KLQlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCi0JICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgZmluaXNoIGNvbW1hbmRzLgotCSAgY21kcz0kZmluaXNoX2NtZHMKLQkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgZm9yIGNtZCBpbiAkY21kczsgZG8KLQkgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgIGV2YWwgY21kPVwiJGNtZFwiCi0JICAgICRzaG93ICIkY21kIgotCSAgICAkcnVuIGV2YWwgIiRjbWQiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcwotICAgICAgICRjbWQiCi0JICBkb25lCi0JICBJRlM9IiRzYXZlX2lmcyIKLQlmaQotCWlmIHRlc3QgLW4gIiRmaW5pc2hfZXZhbCI7IHRoZW4KLQkgICMgRG8gdGhlIHNpbmdsZSBmaW5pc2hfZXZhbC4KLQkgIGV2YWwgY21kcz1cIiRmaW5pc2hfZXZhbFwiCi0JICAkcnVuIGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKLSAgICAgICAkY21kcyIKLQlmaQotICAgICAgZG9uZQotICAgIGZpCi0KLSAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KLSAgICB0ZXN0ICIkc2hvdyIgPSA6ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUwotCi0gICAgJGVjaG8gIlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8ICRYc2VkCi0gICAgJGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLSAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotICAgICAgJGVjaG8gIiAgICRsaWJkaXIiCi0gICAgZG9uZQotICAgICRlY2hvCi0gICAgJGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotICAgICRlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKLSAgICAkZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKLSAgICAkZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotICAgICAgJGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0gICAgICAkZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgotICAgIGZpCi0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotICAgICAgJGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotICAgICAgJGVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSAgICAgIGxpYmRpcj1MSUJESVIKLSAgICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLQotICAgICAgJGVjaG8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKLSAgICBmaQotICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCi0gICAgICAkZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotICAgICAgJGVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgotICAgIGZpCi0gICAgJGVjaG8KLSAgICAkZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCi0gICAgJGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgotICAgICRlY2hvICJYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCAkWHNlZAotICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwotICAgIDs7Ci0KLSAgIyBsaWJ0b29sIGV4ZWN1dGUgbW9kZQotICBleGVjdXRlKQotICAgIG1vZGVuYW1lPSIkbW9kZW5hbWU6IGV4ZWN1dGUiCi0KLSAgICAjIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY29tbWFuZCBuYW1lLgotICAgIGNtZD0iJG5vbm9wdCIKLSAgICBpZiB0ZXN0IC16ICIkY21kIjsgdGhlbgotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogeW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiIDE+JjIKLSAgICAgICRlY2hvICIkaGVscCIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCi0KLSAgICAjIEhhbmRsZSAtZGxvcGVuIGZsYWdzIGltbWVkaWF0ZWx5LgotICAgIGZvciBmaWxlIGluICRleGVjdXRlX2RsZmlsZXM7IGRvCi0gICAgICBpZiB0ZXN0ICEgLWYgIiRmaWxlIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IFxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiIDE+JjIKLQkkZWNobyAiJGhlbHAiIDE+JjIKLQlleGl0ICRFWElUX0ZBSUxVUkUKLSAgICAgIGZpCi0KLSAgICAgIGRpcj0KLSAgICAgIGNhc2UgJGZpbGUgaW4KLSAgICAgICoubGEpCi0JIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KLQlpZiAoJHtTRUR9IC1lICcycScgJGZpbGUgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0JZWxzZQotCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiIDE+JjIKLQkgICRlY2hvICIkaGVscCIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JZmkKLQotCSMgUmVhZCB0aGUgbGlidG9vbCBsaWJyYXJ5LgotCWRsbmFtZT0KLQlsaWJyYXJ5X25hbWVzPQotCi0JIyBJZiB0aGVyZSBpcyBubyBkaXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGFkZCBvbmUuCi0JY2FzZSAkZmlsZSBpbgotCSovKiB8ICpcXCopIC4gJGZpbGUgOzsKLQkqKSAuIC4vJGZpbGUgOzsKLQllc2FjCi0KLQkjIFNraXAgdGhpcyBsaWJyYXJ5IGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZC4KLQlpZiB0ZXN0IC16ICIkZGxuYW1lIjsgdGhlbgotCSAgIyBXYXJuIGlmIGl0IHdhcyBhIHNoYXJlZCBsaWJyYXJ5LgotCSAgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiICYmICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgJGZpbGUnIHdhcyBub3QgbGlua2VkIHdpdGggXGAtZXhwb3J0LWR5bmFtaWMnIgotCSAgY29udGludWUKLQlmaQotCi0JZGlyPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0JdGVzdCAiWCRkaXIiID0gIlgkZmlsZSIgJiYgZGlyPS4KLQotCWlmIHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgotCSAgZGlyPSIkZGlyLyRvYmpkaXIiCi0JZWxzZQotCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBmaW5kIFxgJGRsbmFtZScgaW4gXGAkZGlyJyBvciBcYCRkaXIvJG9iamRpciciIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICBmaQotCWZpCi0JOzsKLQotICAgICAgKi5sbykKLQkjIEp1c3QgYWRkIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgLmxvIGZpbGUuCi0JZGlyPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0JdGVzdCAiWCRkaXIiID0gIlgkZmlsZSIgJiYgZGlyPS4KLQk7OwotCi0gICAgICAqKQotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmcgXGAtZGxvcGVuJyBpcyBpZ25vcmVkIGZvciBub24tbGlidG9vbCBsaWJyYXJpZXMgYW5kIG9iamVjdHMiIDE+JjIKLQljb250aW51ZQotCTs7Ci0gICAgICBlc2FjCi0KLSAgICAgICMgR2V0IHRoZSBhYnNvbHV0ZSBwYXRobmFtZS4KLSAgICAgIGFic2Rpcj1gY2QgIiRkaXIiICYmIHB3ZGAKLSAgICAgIHRlc3QgLW4gIiRhYnNkaXIiICYmIGRpcj0iJGFic2RpciIKLQotICAgICAgIyBOb3cgYWRkIHRoZSBkaXJlY3RvcnkgdG8gc2hsaWJwYXRoX3Zhci4KLSAgICAgIGlmIGV2YWwgInRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCIiOyB0aGVuCi0JZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpclwiIgotICAgICAgZWxzZQotCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXI6XCQkc2hsaWJwYXRoX3ZhclwiIgotICAgICAgZmkKLSAgICBkb25lCi0KLSAgICAjIFRoaXMgdmFyaWFibGUgdGVsbHMgd3JhcHBlciBzY3JpcHRzIGp1c3QgdG8gc2V0IHNobGlicGF0aF92YXIKLSAgICAjIHJhdGhlciB0aGFuIHJ1bm5pbmcgdGhlaXIgcHJvZ3JhbXMuCi0gICAgbGlidG9vbF9leGVjdXRlX21hZ2ljPSIkbWFnaWMiCi0KLSAgICAjIENoZWNrIGlmIGFueSBvZiB0aGUgYXJndW1lbnRzIGlzIGEgd3JhcHBlciBzY3JpcHQuCi0gICAgYXJncz0KLSAgICBmb3IgZmlsZQotICAgIGRvCi0gICAgICBjYXNlICRmaWxlIGluCi0gICAgICAtKikgOzsKLSAgICAgICopCi0JIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgcmVhbGx5IGEgbGlidG9vbCBwcm9ncmFtLgotCWlmICgke1NFRH0gLWUgJzRxJyAkZmlsZSB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICAjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KLQkgIGNhc2UgJGZpbGUgaW4KLQkgICovKiB8ICpcXCopIC4gJGZpbGUgOzsKLQkgICopIC4gLi8kZmlsZSA7OwotCSAgZXNhYwotCi0JICAjIFRyYW5zZm9ybSBhcmcgdG8gd3JhcHBlZCBuYW1lLgotCSAgZmlsZT0iJHByb2dkaXIvJHByb2dyYW0iCi0JZmkKLQk7OwotICAgICAgZXNhYwotICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KLSAgICAgIGZpbGU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgICAgYXJncz0iJGFyZ3MgXCIkZmlsZVwiIgotICAgIGRvbmUKLQotICAgIGlmIHRlc3QgLXogIiRydW4iOyB0aGVuCi0gICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KLQkjIEV4cG9ydCB0aGUgc2hsaWJwYXRoX3Zhci4KLQlldmFsICJleHBvcnQgJHNobGlicGF0aF92YXIiCi0gICAgICBmaQotCi0gICAgICAjIFJlc3RvcmUgc2F2ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gICAgICBmb3IgbHRfdmFyIGluIExBTkcgTEFOR1VBR0UgTENfQUxMIExDX0NUWVBFIExDX0NPTExBVEUgTENfTUVTU0FHRVMKLSAgICAgIGRvCi0JZXZhbCAiaWYgdGVzdCBcIlwke3NhdmVfJGx0X3ZhcitzZXR9XCIgPSBzZXQ7IHRoZW4KLQkJJGx0X3Zhcj1cJHNhdmVfJGx0X3ZhcjsgZXhwb3J0ICRsdF92YXIKLQkgICAgICBmaSIKLSAgICAgIGRvbmUKLQotICAgICAgIyBOb3cgcHJlcGFyZSB0byBhY3R1YWxseSBleGVjIHRoZSBjb21tYW5kLgotICAgICAgZXhlY19jbWQ9IlwkY21kJGFyZ3MiCi0gICAgZWxzZQotICAgICAgIyBEaXNwbGF5IHdoYXQgd291bGQgYmUgZG9uZS4KLSAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotCWV2YWwgIlwkZWNobyBcIlwkc2hsaWJwYXRoX3Zhcj1cJCRzaGxpYnBhdGhfdmFyXCIiCi0JJGVjaG8gImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKLSAgICAgIGZpCi0gICAgICAkZWNobyAiJGNtZCRhcmdzIgotICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgZmkKLSAgICA7OwotCi0gICMgbGlidG9vbCBjbGVhbiBhbmQgdW5pbnN0YWxsIG1vZGUKLSAgY2xlYW4gfCB1bmluc3RhbGwpCi0gICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogJG1vZGUiCi0gICAgcm09IiRub25vcHQiCisjIGZ1bmNfbW9kZV91bmluc3RhbGwgYXJnLi4uCitmdW5jX21vZGVfdW5pbnN0YWxsICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgIFJNPSIkbm9ub3B0IgogICAgIGZpbGVzPQogICAgIHJtZm9yY2U9CiAgICAgZXhpdF9zdGF0dXM9MApAQCAtNjUzOSwzMCArODIwMiwyOCBAQAogICAgIGZvciBhcmcKICAgICBkbwogICAgICAgY2FzZSAkYXJnIGluCi0gICAgICAtZikgcm09IiRybSAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKLSAgICAgIC0qKSBybT0iJHJtICRhcmciIDs7CisgICAgICAtZikgUk09IiRSTSAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKKyAgICAgIC0qKSBSTT0iJFJNICRhcmciIDs7CiAgICAgICAqKSBmaWxlcz0iJGZpbGVzICRhcmciIDs7CiAgICAgICBlc2FjCiAgICAgZG9uZQogCi0gICAgaWYgdGVzdCAteiAiJHJtIjsgdGhlbgotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogeW91IG11c3Qgc3BlY2lmeSBhbiBSTSBwcm9ncmFtIiAxPiYyCi0gICAgICAkZWNobyAiJGhlbHAiIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCisgICAgdGVzdCAteiAiJFJNIiAmJiBcCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYW4gUk0gcHJvZ3JhbSIKIAogICAgIHJtZGlycz0KIAogICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCiAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwotICAgICAgZGlyPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0gICAgICBpZiB0ZXN0ICJYJGRpciIgPSAiWCRmaWxlIjsgdGhlbgotCWRpcj0uCisgICAgICBmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiIiAiLiIKKyAgICAgIGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisgICAgICBpZiB0ZXN0ICJYJGRpciIgPSBYLjsgdGhlbgogCW9iamRpcj0iJG9yaWdvYmpkaXIiCiAgICAgICBlbHNlCiAJb2JqZGlyPSIkZGlyLyRvcmlnb2JqZGlyIgogICAgICAgZmkKLSAgICAgIG5hbWU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKyAgICAgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgorICAgICAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgogICAgICAgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsICYmIG9iamRpcj0iJGRpciIKIAogICAgICAgIyBSZW1lbWJlciBvYmpkaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcwpAQCAtNjU3NCw5ICs4MjM1LDkgQEAKICAgICAgIGZpCiAKICAgICAgICMgRG9uJ3QgZXJyb3IgaWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCBhbmQgcm0gLWYgd2FzIHVzZWQuCi0gICAgICBpZiAodGVzdCAtTCAiJGZpbGUiKSA+L2Rldi9udWxsIDI+JjEgXAotCXx8ICh0ZXN0IC1oICIkZmlsZSIpID4vZGV2L251bGwgMj4mMSBcCi0JfHwgdGVzdCAtZiAiJGZpbGUiOyB0aGVuCisgICAgICBpZiB7IHRlc3QgLUwgIiRmaWxlIjsgfSA+L2Rldi9udWxsIDI+JjEgfHwKKwkgeyB0ZXN0IC1oICIkZmlsZSI7IH0gPi9kZXYvbnVsbCAyPiYxIHx8CisJIHRlc3QgLWYgIiRmaWxlIjsgdGhlbgogCToKICAgICAgIGVsaWYgdGVzdCAtZCAiJGZpbGUiOyB0aGVuCiAJZXhpdF9zdGF0dXM9MQpAQCAtNjU5MCw4ICs4MjUxLDggQEAKICAgICAgIGNhc2UgJG5hbWUgaW4KICAgICAgICoubGEpCiAJIyBQb3NzaWJseSBhIGxpYnRvb2wgYXJjaGl2ZSwgc28gdmVyaWZ5IGl0LgotCWlmICgke1NFRH0gLWUgJzJxJyAkZmlsZSB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICAuICRkaXIvJG5hbWUKKwlpZiBmdW5jX2xhbGliX3AgIiRmaWxlIjsgdGhlbgorCSAgZnVuY19zb3VyY2UgJGRpci8kbmFtZQogCiAJICAjIERlbGV0ZSB0aGUgbGlidG9vbCBsaWJyYXJpZXMgYW5kIHN5bWxpbmtzLgogCSAgZm9yIG4gaW4gJGxpYnJhcnlfbmFtZXM7IGRvCkBAIC02NjA2LDM5ICs4MjY3LDE3IEBACiAJICAgICoiICRkbG5hbWUgIiopIDs7CiAJICAgICopIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJGRsbmFtZSIgOzsKIAkgICAgZXNhYwotCSAgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1pIgorCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfWkiCiAJICAgIDs7CiAJICB1bmluc3RhbGwpCiAJICAgIGlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIjsgdGhlbgogCSAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBwb3N0dW5pbnN0YWxsIGNvbW1hbmRzLgotCSAgICAgIGNtZHM9JHBvc3R1bmluc3RhbGxfY21kcwotCSAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0JCUlGUz0iJHNhdmVfaWZzIgotCQlldmFsIGNtZD1cIiRjbWRcIgotCQkkc2hvdyAiJGNtZCIKLQkJJHJ1biBldmFsICIkY21kIgotCQlpZiB0ZXN0ICIkPyIgLW5lIDAgJiYgdGVzdCAiJHJtZm9yY2UiICE9IHllczsgdGhlbgotCQkgIGV4aXRfc3RhdHVzPTEKLQkJZmkKLQkgICAgICBkb25lCi0JICAgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0dW5pbnN0YWxsX2NtZHMiICd0ZXN0ICIkcm1mb3JjZSIgPSB5ZXMgfHwgZXhpdF9zdGF0dXM9MScKIAkgICAgZmkKIAogCSAgICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCiAJICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIG9sZF9wb3N0dW5pbnN0YWxsIGNvbW1hbmRzLgotCSAgICAgIGNtZHM9JG9sZF9wb3N0dW5pbnN0YWxsX2NtZHMKLQkgICAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLQkgICAgICBmb3IgY21kIGluICRjbWRzOyBkbwotCQlJRlM9IiRzYXZlX2lmcyIKLQkJZXZhbCBjbWQ9XCIkY21kXCIKLQkJJHNob3cgIiRjbWQiCi0JCSRydW4gZXZhbCAiJGNtZCIKLQkJaWYgdGVzdCAiJD8iIC1uZSAwICYmIHRlc3QgIiRybWZvcmNlIiAhPSB5ZXM7IHRoZW4KLQkJICBleGl0X3N0YXR1cz0xCi0JCWZpCi0JICAgICAgZG9uZQotCSAgICAgIElGUz0iJHNhdmVfaWZzIgorCSAgICAgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkb2xkX3Bvc3R1bmluc3RhbGxfY21kcyIgJ3Rlc3QgIiRybWZvcmNlIiA9IHllcyB8fCBleGl0X3N0YXR1cz0xJwogCSAgICBmaQogCSAgICAjIEZJWE1FOiBzaG91bGQgcmVpbnN0YWxsIHRoZSBiZXN0IHJlbWFpbmluZyBzaGFyZWQgbGlicmFyeS4KIAkgICAgOzsKQEAgLTY2NDgsMjAgKzgyODcsMjAgQEAKIAogICAgICAgKi5sbykKIAkjIFBvc3NpYmx5IGEgbGlidG9vbCBvYmplY3QsIHNvIHZlcmlmeSBpdC4KLQlpZiAoJHtTRUR9IC1lICcycScgJGZpbGUgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbgorCWlmIGZ1bmNfbGFsaWJfcCAiJGZpbGUiOyB0aGVuCiAKIAkgICMgUmVhZCB0aGUgLmxvIGZpbGUKLQkgIC4gJGRpci8kbmFtZQorCSAgZnVuY19zb3VyY2UgJGRpci8kbmFtZQogCiAJICAjIEFkZCBQSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KLQkgIGlmIHRlc3QgLW4gIiRwaWNfb2JqZWN0IiBcCi0JICAgICAmJiB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCisJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgogCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRwaWNfb2JqZWN0IgogCSAgZmkKIAogCSAgIyBBZGQgbm9uLVBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgotCSAgaWYgdGVzdCAtbiAiJG5vbl9waWNfb2JqZWN0IiBcCi0JICAgICAmJiB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKwkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKKwkgICAgIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgogCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRub25fcGljX29iamVjdCIKIAkgIGZpCiAJZmkKQEAgLTY2NzIsMTcgKzgzMTEsMjYgQEAKIAkgIG5vZXhlbmFtZT0kbmFtZQogCSAgY2FzZSAkZmlsZSBpbgogCSAgKi5leGUpCi0JICAgIGZpbGU9YCRlY2hvICRmaWxlfCR7U0VEfSAncywuZXhlJCwsJ2AKLQkgICAgbm9leGVuYW1lPWAkZWNobyAkbmFtZXwke1NFRH0gJ3MsLmV4ZSQsLCdgCisJICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZpbGUiCisJICAgIGZpbGU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRuYW1lIgorCSAgICBub2V4ZW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSAgICAjICRmaWxlIHdpdGggLmV4ZSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHJtZmlsZXMsCiAJICAgICMgYWRkICRmaWxlIHdpdGhvdXQgLmV4ZQogCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZmlsZSIKIAkgICAgOzsKIAkgIGVzYWMKIAkgICMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIGEgbGlidG9vbCBwcm9ncmFtLgotCSAgaWYgKCR7U0VEfSAtZSAnNHEnICRmaWxlIHwgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLQkgICAgcmVsaW5rX2NvbW1hbmQ9Ci0JICAgIC4gJGRpci8kbm9leGVuYW1lCisJICBpZiBmdW5jX2x0d3JhcHBlcl9wICIkZmlsZSI7IHRoZW4KKwkgICAgaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkZmlsZSI7IHRoZW4KKwkgICAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICIkZmlsZSIKKwkgICAgICByZWxpbmtfY29tbWFuZD0KKwkgICAgICBmdW5jX3NvdXJjZSAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKKwkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCisJICAgIGVsc2UKKwkgICAgICByZWxpbmtfY29tbWFuZD0KKwkgICAgICBmdW5jX3NvdXJjZSAkZGlyLyRub2V4ZW5hbWUKKwkgICAgZmkKIAogCSAgICAjIG5vdGUgJG5hbWUgc3RpbGwgY29udGFpbnMgLmV4ZSBpZiBpdCB3YXMgaW4gJGZpbGUgb3JpZ2luYWxseQogCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcwpAQCAtNjY5NywyMzkgKzgzNDUsMzggQEAKIAlmaQogCTs7CiAgICAgICBlc2FjCi0gICAgICAkc2hvdyAiJHJtICRybWZpbGVzIgotICAgICAgJHJ1biAkcm0gJHJtZmlsZXMgfHwgZXhpdF9zdGF0dXM9MQorICAgICAgZnVuY19zaG93X2V2YWwgIiRSTSAkcm1maWxlcyIgJ2V4aXRfc3RhdHVzPTEnCiAgICAgZG9uZQogICAgIG9iamRpcj0iJG9yaWdvYmpkaXIiCiAKICAgICAjIFRyeSB0byByZW1vdmUgdGhlICR7b2JqZGlyfXMgaW4gdGhlIGRpcmVjdG9yaWVzIHdoZXJlIHdlIGRlbGV0ZWQgZmlsZXMKICAgICBmb3IgZGlyIGluICRybWRpcnM7IGRvCiAgICAgICBpZiB0ZXN0IC1kICIkZGlyIjsgdGhlbgotCSRzaG93ICJybWRpciAkZGlyIgotCSRydW4gcm1kaXIgJGRpciA+L2Rldi9udWxsIDI+JjEKKwlmdW5jX3Nob3dfZXZhbCAicm1kaXIgJGRpciA+L2Rldi9udWxsIDI+JjEiCiAgICAgICBmaQogICAgIGRvbmUKIAogICAgIGV4aXQgJGV4aXRfc3RhdHVzCi0gICAgOzsKK30KIAotICAiIikKLSAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIgMT4mMgotICAgICRlY2hvICIkZ2VuZXJpY19oZWxwIiAxPiYyCi0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgOzsKLSAgZXNhYworeyB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG1vZGUiID0gY2xlYW47IH0gJiYKKyAgICBmdW5jX21vZGVfdW5pbnN0YWxsICR7MSsiJEAifQogCi0gIGlmIHRlc3QgLXogIiRleGVjX2NtZCI7IHRoZW4KLSAgICAkZWNobyAiJG1vZGVuYW1lOiBpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIiAxPiYyCi0gICAgJGVjaG8gIiRnZW5lcmljX2hlbHAiIDE+JjIKLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgZmkKLWZpICMgdGVzdCAteiAiJHNob3dfaGVscCIKK3Rlc3QgLXogIiRtb2RlIiAmJiB7CisgIGhlbHA9IiRnZW5lcmljX2hlbHAiCisgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIE1PREUiCit9CisKK3Rlc3QgLXogIiRleGVjX2NtZCIgJiYgXAorICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCiAKIGlmIHRlc3QgLW4gIiRleGVjX2NtZCI7IHRoZW4KLSAgZXZhbCBleGVjICRleGVjX2NtZAorICBldmFsIGV4ZWMgIiRleGVjX2NtZCIKICAgZXhpdCAkRVhJVF9GQUlMVVJFCiBmaQogCi0jIFdlIG5lZWQgdG8gZGlzcGxheSBoZWxwIGZvciBlYWNoIG9mIHRoZSBtb2Rlcy4KLWNhc2UgJG1vZGUgaW4KLSIiKSAkZWNobyBcCi0iVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiBbTU9ERS1BUkddLi4uCitleGl0ICRleGl0X3N0YXR1cwogCi1Qcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KLQotICAgIC0tY29uZmlnICAgICAgICAgIHNob3cgYWxsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0gICAgLS1kZWJ1ZyAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZwotLW4sIC0tZHJ5LXJ1biAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCi0gICAgLS1mZWF0dXJlcyAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0gICAgLS1maW5pc2ggICAgICAgICAgc2FtZSBhcyBcYC0tbW9kZT1maW5pc2gnCi0gICAgLS1oZWxwICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAotICAgIC0tbW9kZT1NT0RFICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFIFtkZWZhdWx0PWluZmVycmVkIGZyb20gTU9ERS1BUkdTXQotICAgIC0tcXVpZXQgICAgICAgICAgIHNhbWUgYXMgXGAtLXNpbGVudCcKLSAgICAtLXNpbGVudCAgICAgICAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCi0gICAgLS10YWc9VEFHICAgICAgICAgdXNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZyb20gdGFnIFRBRwotICAgIC0tdmVyc2lvbiAgICAgICAgIHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24KLQotTU9ERSBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotCi0gICAgICBjbGVhbiAgICAgICAgICAgcmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeQotICAgICAgY29tcGlsZSAgICAgICAgIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBvYmplY3QKLSAgICAgIGV4ZWN1dGUgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQotICAgICAgZmluaXNoICAgICAgICAgIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMKLSAgICAgIGluc3RhbGwgICAgICAgICBpbnN0YWxsIGxpYnJhcmllcyBvciBleGVjdXRhYmxlcwotICAgICAgbGluayAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQotICAgICAgdW5pbnN0YWxsICAgICAgIHJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsZWQgZGlyZWN0b3J5Ci0KLU1PREUtQVJHUyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgTU9ERS4gIFRyeSBcYCRtb2RlbmFtZSAtLWhlbHAgLS1tb2RlPU1PREUnIGZvcgotYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIE1PREUuCi0KLVJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4iCi0gIGV4aXQgJEVYSVRfU1VDQ0VTUwotICA7OwotCi1jbGVhbikKLSAgJGVjaG8gXAotIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gLS1tb2RlPWNsZWFuIFJNIFtSTS1PUFRJT05dLi4uIEZJTEUuLi4KLQotUmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLQotUk0gaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gdXNlIHRvIGRlbGV0ZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBGSUxFCi0odHlwaWNhbGx5IFxgL2Jpbi9ybScpLiAgUk0tT1BUSU9OUyBhcmUgb3B0aW9ucyAoc3VjaCBhcyBcYC1mJykgdG8gYmUgcGFzc2VkCi10byBSTS4KLQotSWYgRklMRSBpcyBhIGxpYnRvb2wgbGlicmFyeSwgb2JqZWN0IG9yIHByb2dyYW0sIGFsbCB0aGUgZmlsZXMgYXNzb2NpYXRlZAotd2l0aCBpdCBhcmUgZGVsZXRlZC4gT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgotICA7OwotCi1jb21waWxlKQotICAkZWNobyBcCi0iVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9Y29tcGlsZSBDT01QSUxFLUNPTU1BTkQuLi4gU09VUkNFRklMRQotCi1Db21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgbGlicmFyeSBvYmplY3QuCi0KLVRoaXMgbW9kZSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zOgotCi0gIC1vIE9VVFBVVC1GSUxFICAgIHNldCB0aGUgb3V0cHV0IGZpbGUgbmFtZSB0byBPVVRQVVQtRklMRQotICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGRpbmcgUElDIG9iamVjdHMgb25seQotICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKLSAgLXN0YXRpYyAgICAgICAgICAgYWx3YXlzIGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKLQotQ09NUElMRS1DT01NQU5EIGlzIGEgY29tbWFuZCB0byBiZSB1c2VkIGluIGNyZWF0aW5nIGEgXGBzdGFuZGFyZCcgb2JqZWN0IGZpbGUKLWZyb20gdGhlIGdpdmVuIFNPVVJDRUZJTEUuCi0KLVRoZSBvdXRwdXQgZmlsZSBuYW1lIGlzIGRldGVybWluZWQgYnkgcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBjb21wb25lbnQgZnJvbQotU09VUkNFRklMRSwgdGhlbiBzdWJzdGl0dXRpbmcgdGhlIEMgc291cmNlIGNvZGUgc3VmZml4IFxgLmMnIHdpdGggdGhlCi1saWJyYXJ5IG9iamVjdCBzdWZmaXgsIFxgLmxvJy4iCi0gIDs7Ci0KLWV4ZWN1dGUpCi0gICRlY2hvIFwKLSJVc2FnZTogJG1vZGVuYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1leGVjdXRlIENPTU1BTkQgW0FSR1NdLi4uCi0KLUF1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtLgotCi1UaGlzIG1vZGUgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgb3B0aW9uczoKLQotICAtZGxvcGVuIEZJTEUgICAgICBhZGQgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIEZJTEUgdG8gdGhlIGxpYnJhcnkgcGF0aAotCi1UaGlzIG1vZGUgc2V0cyB0aGUgbGlicmFyeSBwYXRoIGVudmlyb25tZW50IHZhcmlhYmxlIGFjY29yZGluZyB0byBcYC1kbG9wZW4nCi1mbGFncy4KLQotSWYgYW55IG9mIHRoZSBBUkdTIGFyZSBsaWJ0b29sIGV4ZWN1dGFibGUgd3JhcHBlcnMsIHRoZW4gdGhleSBhcmUgdHJhbnNsYXRlZAotaW50byB0aGVpciBjb3JyZXNwb25kaW5nIHVuaW5zdGFsbGVkIGJpbmFyeSwgYW5kIGFueSBvZiB0aGVpciByZXF1aXJlZCBsaWJyYXJ5Ci1kaXJlY3RvcmllcyBhcmUgYWRkZWQgdG8gdGhlIGxpYnJhcnkgcGF0aC4KLQotVGhlbiwgQ09NTUFORCBpcyBleGVjdXRlZCwgd2l0aCBBUkdTIGFzIGFyZ3VtZW50cy4iCi0gIDs7Ci0KLWZpbmlzaCkKLSAgJGVjaG8gXAotIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gLS1tb2RlPWZpbmlzaCBbTElCRElSXS4uLgotCi1Db21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzLgotCi1FYWNoIExJQkRJUiBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGxpYnRvb2wgbGlicmFyaWVzLgotCi1UaGUgY29tbWFuZHMgdGhhdCB0aGlzIG1vZGUgZXhlY3V0ZXMgbWF5IHJlcXVpcmUgc3VwZXJ1c2VyIHByaXZpbGVnZXMuICBVc2UKLXRoZSBcYC0tZHJ5LXJ1bicgb3B0aW9uIGlmIHlvdSBqdXN0IHdhbnQgdG8gc2VlIHdoYXQgd291bGQgYmUgZXhlY3V0ZWQuIgotICA7OwotCi1pbnN0YWxsKQotICAkZWNobyBcCi0iVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9aW5zdGFsbCBJTlNUQUxMLUNPTU1BTkQuLi4KLQotSW5zdGFsbCBleGVjdXRhYmxlcyBvciBsaWJyYXJpZXMuCi0KLUlOU1RBTEwtQ09NTUFORCBpcyB0aGUgaW5zdGFsbGF0aW9uIGNvbW1hbmQuICBUaGUgZmlyc3QgY29tcG9uZW50IHNob3VsZCBiZQotZWl0aGVyIHRoZSBcYGluc3RhbGwnIG9yIFxgY3AnIHByb2dyYW0uCi0KLVRoZSByZXN0IG9mIHRoZSBjb21wb25lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyBhcmd1bWVudHMgdG8gdGhhdCBjb21tYW5kIChvbmx5Ci1CU0QtY29tcGF0aWJsZSBpbnN0YWxsIG9wdGlvbnMgYXJlIHJlY29nbml6ZWQpLiIKLSAgOzsKLQotbGluaykKLSAgJGVjaG8gXAotIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gLS1tb2RlPWxpbmsgTElOSy1DT01NQU5ELi4uCi0KLUxpbmsgb2JqZWN0IGZpbGVzIG9yIGxpYnJhcmllcyB0b2dldGhlciB0byBmb3JtIGFub3RoZXIgbGlicmFyeSwgb3IgdG8KLWNyZWF0ZSBhbiBleGVjdXRhYmxlIHByb2dyYW0uCi0KLUxJTkstQ09NTUFORCBpcyBhIGNvbW1hbmQgdXNpbmcgdGhlIEMgY29tcGlsZXIgdGhhdCB5b3Ugd291bGQgdXNlIHRvIGNyZWF0ZQotYSBwcm9ncmFtIGZyb20gc2V2ZXJhbCBvYmplY3QgZmlsZXMuCi0KLVRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBvZiBMSU5LLUNPTU1BTkQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5OgotCi0gIC1hbGwtc3RhdGljICAgICAgIGRvIG5vdCBkbyBhbnkgZHluYW1pYyBsaW5raW5nIGF0IGFsbAotICAtYXZvaWQtdmVyc2lvbiAgICBkbyBub3QgYWRkIGEgdmVyc2lvbiBzdWZmaXggaWYgcG9zc2libGUKLSAgLWRsb3BlbiBGSUxFICAgICAgXGAtZGxwcmVvcGVuJyBGSUxFIGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZCBhdCBydW50aW1lCi0gIC1kbHByZW9wZW4gRklMRSAgIGxpbmsgaW4gRklMRSBhbmQgYWRkIGl0cyBzeW1ib2xzIHRvIGx0X3ByZWxvYWRlZF9zeW1ib2xzCi0gIC1leHBvcnQtZHluYW1pYyAgIGFsbG93IHN5bWJvbHMgZnJvbSBPVVRQVVQtRklMRSB0byBiZSByZXNvbHZlZCB3aXRoIGRsc3ltKDMpCi0gIC1leHBvcnQtc3ltYm9scyBTWU1GSUxFCi0gICAgICAgICAgICAgICAgICAgIHRyeSB0byBleHBvcnQgb25seSB0aGUgc3ltYm9scyBsaXN0ZWQgaW4gU1lNRklMRQotICAtZXhwb3J0LXN5bWJvbHMtcmVnZXggUkVHRVgKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHRvIGV4cG9ydCBvbmx5IHRoZSBzeW1ib2xzIG1hdGNoaW5nIFJFR0VYCi0gIC1MTElCRElSICAgICAgICAgIHNlYXJjaCBMSUJESVIgZm9yIHJlcXVpcmVkIGluc3RhbGxlZCBsaWJyYXJpZXMKLSAgLWxOQU1FICAgICAgICAgICAgT1VUUFVULUZJTEUgcmVxdWlyZXMgdGhlIGluc3RhbGxlZCBsaWJyYXJ5IGxpYk5BTUUKLSAgLW1vZHVsZSAgICAgICAgICAgYnVpbGQgYSBsaWJyYXJ5IHRoYXQgY2FuIGRsb3BlbmVkCi0gIC1uby1mYXN0LWluc3RhbGwgIGRpc2FibGUgdGhlIGZhc3QtaW5zdGFsbCBtb2RlCi0gIC1uby1pbnN0YWxsICAgICAgIGxpbmsgYSBub3QtaW5zdGFsbGFibGUgZXhlY3V0YWJsZQotICAtbm8tdW5kZWZpbmVkICAgICBkZWNsYXJlIHRoYXQgYSBsaWJyYXJ5IGRvZXMgbm90IHJlZmVyIHRvIGV4dGVybmFsIHN5bWJvbHMKLSAgLW8gT1VUUFVULUZJTEUgICAgY3JlYXRlIE9VVFBVVC1GSUxFIGZyb20gdGhlIHNwZWNpZmllZCBvYmplY3RzCi0gIC1vYmplY3RsaXN0IEZJTEUgIFVzZSBhIGxpc3Qgb2Ygb2JqZWN0IGZpbGVzIGZvdW5kIGluIEZJTEUgdG8gc3BlY2lmeSBvYmplY3RzCi0gIC1wcmVjaW91cy1maWxlcy1yZWdleCBSRUdFWAotICAgICAgICAgICAgICAgICAgICBkb24ndCByZW1vdmUgb3V0cHV0IGZpbGVzIG1hdGNoaW5nIFJFR0VYCi0gIC1yZWxlYXNlIFJFTEVBU0UgIHNwZWNpZnkgcGFja2FnZSByZWxlYXNlIGluZm9ybWF0aW9uCi0gIC1ycGF0aCBMSUJESVIgICAgIHRoZSBjcmVhdGVkIGxpYnJhcnkgd2lsbCBldmVudHVhbGx5IGJlIGluc3RhbGxlZCBpbiBMSUJESVIKLSAgLVJbIF1MSUJESVIgICAgICAgYWRkIExJQkRJUiB0byB0aGUgcnVudGltZSBwYXRoIG9mIHByb2dyYW1zIGFuZCBsaWJyYXJpZXMKLSAgLXN0YXRpYyAgICAgICAgICAgZG8gbm90IGRvIGFueSBkeW5hbWljIGxpbmtpbmcgb2YgdW5pbnN0YWxsZWQgbGlidG9vbCBsaWJyYXJpZXMKLSAgLXN0YXRpYy1saWJ0b29sLWxpYnMKLSAgICAgICAgICAgICAgICAgICAgZG8gbm90IGRvIGFueSBkeW5hbWljIGxpbmtpbmcgb2YgbGlidG9vbCBsaWJyYXJpZXMKLSAgLXZlcnNpb24taW5mbyBDVVJSRU5UWzpSRVZJU0lPTls6QUdFXV0KLSAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSBsaWJyYXJ5IHZlcnNpb24gaW5mbyBbZWFjaCB2YXJpYWJsZSBkZWZhdWx0cyB0byAwXQotCi1BbGwgb3RoZXIgb3B0aW9ucyAoYXJndW1lbnRzIGJlZ2lubmluZyB3aXRoIFxgLScpIGFyZSBpZ25vcmVkLgotCi1FdmVyeSBvdGhlciBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIGEgZmlsZW5hbWUuICBGaWxlcyBlbmRpbmcgaW4gXGAubGEnIGFyZQotdHJlYXRlZCBhcyB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcywgb3RoZXIgZmlsZXMgYXJlIHN0YW5kYXJkIG9yIGxpYnJhcnkKLW9iamVjdCBmaWxlcy4KLQotSWYgdGhlIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAubGEnLCB0aGVuIGEgbGlidG9vbCBsaWJyYXJ5IGlzIGNyZWF0ZWQsCi1vbmx5IGxpYnJhcnkgb2JqZWN0cyAoXGAubG8nIGZpbGVzKSBtYXkgYmUgc3BlY2lmaWVkLCBhbmQgXGAtcnBhdGgnIGlzCi1yZXF1aXJlZCwgZXhjZXB0IHdoZW4gY3JlYXRpbmcgYSBjb252ZW5pZW5jZSBsaWJyYXJ5LgotCi1JZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmEnIG9yIFxgLmxpYicsIHRoZW4gYSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGNyZWF0ZWQKLXVzaW5nIFxgYXInIGFuZCBcYHJhbmxpYicsIG9yIG9uIFdpbmRvd3MgdXNpbmcgXGBsaWInLgotCi1JZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmxvJyBvciBcYC4ke29iamV4dH0nLCB0aGVuIGEgcmVsb2FkYWJsZSBvYmplY3QgZmlsZQotaXMgY3JlYXRlZCwgb3RoZXJ3aXNlIGFuIGV4ZWN1dGFibGUgcHJvZ3JhbSBpcyBjcmVhdGVkLiIKLSAgOzsKLQotdW5pbnN0YWxsKQotICAkZWNobyBcCi0iVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9dW5pbnN0YWxsIFJNIFtSTS1PUFRJT05dLi4uIEZJTEUuLi4KLQotUmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCi0KLVJNIGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRvIHVzZSB0byBkZWxldGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggRklMRQotKHR5cGljYWxseSBcYC9iaW4vcm0nKS4gIFJNLU9QVElPTlMgYXJlIG9wdGlvbnMgKHN1Y2ggYXMgXGAtZicpIHRvIGJlIHBhc3NlZAotdG8gUk0uCi0KLUlmIEZJTEUgaXMgYSBsaWJ0b29sIGxpYnJhcnksIGFsbCB0aGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGl0IGFyZSBkZWxldGVkLgotT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgotICA7OwotCi0qKQotICAkZWNobyAiJG1vZGVuYW1lOiBpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIiAxPiYyCi0gICRlY2hvICIkaGVscCIgMT4mMgotICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgOzsKLWVzYWMKLQotJGVjaG8KLSRlY2hvICJUcnkgXGAkbW9kZW5hbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdGhlciBtb2Rlcy4iCi0KLWV4aXQgJD8KIAogIyBUaGUgVEFHcyBiZWxvdyBhcmUgZGVmaW5lZCBzdWNoIHRoYXQgd2UgbmV2ZXIgZ2V0IGludG8gYSBzaXR1YXRpb24KICMgaW4gd2hpY2ggd2UgZGlzYWJsZSBib3RoIGtpbmRzIG9mIGxpYnJhcmllcy4gIEdpdmVuIGNvbmZsaWN0aW5nCkBAIC02OTQzLDE0ICs4MzkwLDE3IEBACiAjIGNvbmZpZ3VyYXRpb24uICBCdXQgd2UnbGwgbmV2ZXIgZ28gZnJvbSBzdGF0aWMtb25seSB0byBzaGFyZWQtb25seS4KIAogIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiBkaXNhYmxlLXNoYXJlZAotZGlzYWJsZV9saWJzPXNoYXJlZAorYnVpbGRfbGlidG9vbF9saWJzPW5vCitidWlsZF9vbGRfbGlicz15ZXMKICMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6IGRpc2FibGUtc2hhcmVkCiAKICMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogZGlzYWJsZS1zdGF0aWMKLWRpc2FibGVfbGlicz1zdGF0aWMKK2J1aWxkX29sZF9saWJzPWBjYXNlICRidWlsZF9saWJ0b29sX2xpYnMgaW4geWVzKSBlY2hvIG5vOzsgKikgZWNobyB5ZXM7OyBlc2FjYAogIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogZGlzYWJsZS1zdGF0aWMKIAogIyBMb2NhbCBWYXJpYWJsZXM6CiAjIG1vZGU6c2hlbGwtc2NyaXB0CiAjIHNoLWluZGVudGF0aW9uOjIKICMgRW5kOgorIyB2aTpzdz0yCisKZGlmZiAtLWdpdCBhL200L2FjX2FkZF9zZWFyY2hfcGF0aC5tNCBiL200L2FjX2FkZF9zZWFyY2hfcGF0aC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTBhODE5Ci0tLSAvZGV2L251bGwKKysrIGIvbTQvYWNfYWRkX3NlYXJjaF9wYXRoLm00CkBAIC0wLDAgKzEsMTMgQEAKK2RubAorZG5sIEFkZCBhIHNlYXJjaCBwYXRoIHRvIHRoZSBMSUJTIGFuZCBDUFBGTEFHUyB2YXJpYWJsZXMKK2RubAorQUNfREVGVU4oW0FDX0FERF9TRUFSQ0hfUEFUSF0sWworICBpZiB0ZXN0ICJ4JDEiICE9IHggLWEgLWQgJDE7IHRoZW4KKyAgICAgaWYgdGVzdCAtZCAkMS9saWI7IHRoZW4KKyAgICAgICBMREZMQUdTPSItTCQxL2xpYiAkTERGTEFHUyIKKyAgICAgZmkKKyAgICAgaWYgdGVzdCAtZCAkMS9pbmNsdWRlOyB0aGVuCisJQ1BQRkxBR1M9Ii1JJDEvaW5jbHVkZSAkQ1BQRkxBR1MiCisgICAgIGZpCisgIGZpCitdKQpkaWZmIC0tZ2l0IGEvbTQvYWNfbXNnX2NhY2hlLm00IGIvbTQvYWNfbXNnX2NhY2hlLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZDdjZGEKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9hY19tc2dfY2FjaGUubTQKQEAgLTAsMCArMSwyNCBAQAorZG5sCitkbmwgU3RvcmUgaW5mb3JtYXRpb24gZm9yIGRpc3BsYXlpbmcgbGF0ZXIuCitkbmwKK0FDX0RFRlVOKFtBQ19NU0dfQ0FDSEVfSU5JVF0sWworICBybSAtZiBjb25maWd1cmUtc3VtbWFyeQorXSkKKworQUNfREVGVU4oW0FDX01TR19DQUNIRV9BRERdLFsKKyAgY2F0ID4+IGNvbmZpZ3VyZS1zdW1tYXJ5IDw8IEVPRgorICAkMQorRU9GCitdKQorCitBQ19ERUZVTihbQUNfTVNHX0NBQ0hFX0RJU1BMQVldLFsKKyAgZWNobyAiIgorICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgIGVjaG8gIiAgICAgICAgICAgIE5ldC1TTk1QIGNvbmZpZ3VyYXRpb24gc3VtbWFyeToiCisgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgZWNobyAiIgorICBjYXQgY29uZmlndXJlLXN1bW1hcnkKKyAgZWNobyAiIgorICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgIGVjaG8gIiIKK10pCmRpZmYgLS1naXQgYS9tNC9hY19tc2dfbW9kdWxlX2RiZy5tNCBiL200L2FjX21zZ19tb2R1bGVfZGJnLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyY2IzMTcKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9hY19tc2dfbW9kdWxlX2RiZy5tNApAQCAtMCwwICsxLDcgQEAKK0FDX0RFRlVOKFtBQ19NU0dfTU9EVUxFX0RCR10sCitbCisgIGlmIHRlc3QgJG1vZHVsZV9kZWJ1ZyA9IDE7IHRoZW4KKyAgICBlY2hvICQxICQyICQzICQ0CisgIGZpCitdCispCmRpZmYgLS1naXQgYS9tNC9hY19wcm9tcHRfdXNlci5tNCBiL200L2FjX3Byb21wdF91c2VyLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmRkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9hY19wcm9tcHRfdXNlci5tNApAQCAtMCwwICsxLDUyIEBACitkbmwgQHN5bm9wc2lzIEFDX1BST01QVF9VU0VSX05PX0RFRklORShWQVJJQUJMRU5BTUUsUVVFU1RJT04sW0RFRkFVTFRdKQorZG5sCitkbmwgQXNrcyBhIFFVRVNUSU9OIGFuZCBwdXRzIHRoZSByZXN1bHRzIGluIFZBUklBQkxFTkFNRSB3aXRoIGFuIG9wdGlvbmFsCitkbmwgREVGQVVMVCB2YWx1ZSBpZiB0aGUgdXNlciBtZXJlbHkgaGl0cyByZXR1cm4uCitkbmwKK2RubCBAdmVyc2lvbiAxLjE1CitkbmwgQGF1dGhvciBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK2RubAorQUNfREVGVU4oW0FDX1BST01QVF9VU0VSX05PX0RFRklORV0sCitbCitpZiB0ZXN0ICJ4JGRlZmF1bHRzIiA9ICJ4bm8iOyB0aGVuCitlY2hvICRFQ0hPX04gIiQyICgkMyk6ICRFQ0hPX0MiCityZWFkIHRtcGlucHV0IDwmQVNfT1JJR0lOQUxfU1RESU5fRkQKK2lmIHRlc3QgIiR0bXBpbnB1dCIgPSAiIiAtYSAiJDMiICE9ICIiOyB0aGVuCisgIHRtcGlucHV0PSIkMyIKK2ZpCitldmFsICQxPVwiJHRtcGlucHV0XCIKK2Vsc2UKK3RtcGlucHV0PSIkMyIKK2V2YWwgJDE9XCIkdG1waW5wdXRcIgorZmkKK10pIGRubCBkb25lIEFDX1BST01QVF9VU0VSCisKK2RubCBAc3lub3BzaXMgQUNfUFJPTVBUX1VTRVIoVkFSSUFCTEVOQU1FLFFVRVNUSU9OLFtERUZBVUxUXSxRVU9URUQpCitkbmwKK2RubCBBc2tzIGEgUVVFU1RJT04gYW5kIHB1dHMgdGhlIHJlc3VsdHMgaW4gVkFSSUFCTEVOQU1FIHdpdGggYW4gb3B0aW9uYWwKK2RubCBERUZBVUxUIHZhbHVlIGlmIHRoZSB1c2VyIG1lcmVseSBoaXRzIHJldHVybi4gIEFsc28gY2FsbHMKK2RubCBBQ19ERUZJTkVfVU5RVU9URUQoKSBvbiB0aGUgVkFSSUFCTEVOQU1FIGZvciBWQVJJQUJMRU5BTUVzIHRoYXQgc2hvdWxkCitkbmwgYmUgZW50ZXJlZCBpbnRvIHRoZSBjb25maWcuaCBmaWxlIGFzIHdlbGwuICBJZiBRVU9URUQgaXMgInF1b3RlZCIgdGhlbgorZG5sIHRoZSByZXN1bHQgd2lsbCBiZSBkZWZpbmVkIHdpdGhpbiBxdW90ZXMuCitkbmwKK2RubCBAdmVyc2lvbiAxLjE1CitkbmwgQGF1dGhvciBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK2RubAorQUNfREVGVU4oW0FDX1BST01QVF9VU0VSXSwKK1sKK01TR19DSEVDSz0icGF0c3Vic3QoWyQyXSwgWy4qCitdLCBbXSkiCitBQ19DQUNIRV9DSEVDSygkTVNHX0NIRUNLLCBhY19jdl91c2VyX3Byb21wdF8kMSwKK1tlY2hvICIiID4mQVNfTUVTU0FHRV9GRAorQUNfUFJPTVBUX1VTRVJfTk9fREVGSU5FKCQxLFskMl0sJDMpCitldmFsIGFjX2N2X3VzZXJfcHJvbXB0XyQxPVwkJDEKK2VjaG8gJEVDSE9fTiAic2V0dGluZyAkTVNHX0NIRUNLIHRvLi4uICAkRUNIT19DIiA+JkFTX01FU1NBR0VfRkQKK10pCitpZiB0ZXN0ICIkYWNfY3ZfdXNlcl9wcm9tcHRfJDEiICE9ICJub25lIjsgdGhlbgorICBpZiB0ZXN0ICJ4JDQiID0gInhxdW90ZWQiIC1vICJ4JDQiID0gInhRVU9URUQiOyB0aGVuCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKCQxLCIkYWNfY3ZfdXNlcl9wcm9tcHRfJDEiKQorICBlbHNlCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKCQxLCRhY19jdl91c2VyX3Byb21wdF8kMSkKKyAgZmkKK2ZpCitdKSBkbmwKZGlmZiAtLWdpdCBhL200L2xpYnRvb2wubTQgYi9tNC9saWJ0b29sLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YmE5OTYKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9saWJ0b29sLm00CkBAIC0wLDAgKzEsNzM1NyBAQAorIyBsaWJ0b29sLm00IC0gQ29uZmlndXJlIGxpYnRvb2wgZm9yIHRoZSBob3N0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KKyMKKyMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCisjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKKyMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCittNF9kZWZpbmUoW19MVF9DT1BZSU5HXSwgW2RubAorIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorIworIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorIworIyBHTlUgTGlidG9vbCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorIyBpZiB5b3UgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gb3IgbGlicmFyeSB0aGF0CisjIGlzIGJ1aWx0IHVzaW5nIEdOVSBMaWJ0b29sLCB5b3UgbWF5IGluY2x1ZGUgdGhpcyBmaWxlIHVuZGVyIHRoZQorIyBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKyMKKyMgR05VIExpYnRvb2wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIEdOVSBMaWJ0b29sOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgYSBjb3B5CisjIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sLCBvcgorIyBvYnRhaW5lZCBieSB3cml0aW5nIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorXSkKKworIyBzZXJpYWwgNTYgTFRfSU5JVAorCisKKyMgTFRfUFJFUkVRKFZFUlNJT04pCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb21wbGFpbiBhbmQgZXhpdCBpZiB0aGlzIGxpYnRvb2wgdmVyc2lvbiBpcyBsZXNzIHRoYXQgVkVSU0lPTi4KK200X2RlZnVuKFtMVF9QUkVSRVFdLAorW200X2lmKG00X3ZlcnNpb25fY29tcGFyZShtNF9kZWZuKFtMVF9QQUNLQUdFX1ZFUlNJT05dKSwgWyQxXSksIC0xLAorICAgICAgIFttNF9kZWZhdWx0KFskM10sCisJCSAgIFttNF9mYXRhbChbTGlidG9vbCB2ZXJzaW9uICQxIG9yIGhpZ2hlciBpcyByZXF1aXJlZF0sCisJCSAgICAgICAgICAgICA2MyldKV0sCisgICAgICAgWyQyXSldKQorCisKKyMgX0xUX0NIRUNLX0JVSUxERElSCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb21wbGFpbiBpZiB0aGUgYWJzb2x1dGUgYnVpbGQgZGlyZWN0b3J5IG5hbWUgY29udGFpbnMgdW51c3VhbCBjaGFyYWN0ZXJzCittNF9kZWZ1bihbX0xUX0NIRUNLX0JVSUxERElSXSwKK1tjYXNlIGBwd2RgIGluCisgICpcICogfCAqXAkqKQorICAgIEFDX01TR19XQVJOKFtMaWJ0b29sIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHdoaXRlc3BhY2UgaW4gYHB3ZGBdKSA7OworZXNhYworXSkKKworCisjIExUX0lOSVQoW09QVElPTlNdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9JTklUXSwKK1tBQ19QUkVSRVEoWzIuNThdKWRubCBXZSB1c2UgQUNfSU5DTFVERVNfREVGQVVMVAorQUNfQkVGT1JFKFskMF0sIFtMVF9MQU5HXSlkbmwKK0FDX0JFRk9SRShbJDBdLCBbTFRfT1VUUFVUXSlkbmwKK0FDX0JFRk9SRShbJDBdLCBbTFRETF9JTklUXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19CVUlMRERJUl0pZG5sCisKK2RubCBBdXRvY29uZiBkb2Vzbid0IGNhdGNoIHVuZXhwYW5kZWQgTFRfIG1hY3JvcyBieSBkZWZhdWx0OgorbTRfcGF0dGVybl9mb3JiaWQoW15fP0xUX1tBLVpfXSskXSlkbmwKK200X3BhdHRlcm5fYWxsb3coW14oX0xUX0VPRnxMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XfExUX01VTFRJX01PRFVMRSkkXSlkbmwKK2RubCBhY2xvY2FsIGRvZXNuJ3QgcHVsbCBsdG9wdGlvbnMubTQsIGx0c3VnYXIubTQsIG9yIGx0dmVyc2lvbi5tNAorZG5sIHVubGVzcyB3ZSByZXF1aXJlIGFuIEFDX0RFRlVOZWQgbWFjcm86CitBQ19SRVFVSVJFKFtMVE9QVElPTlNfVkVSU0lPTl0pZG5sCitBQ19SRVFVSVJFKFtMVFNVR0FSX1ZFUlNJT05dKWRubAorQUNfUkVRVUlSRShbTFRWRVJTSU9OX1ZFUlNJT05dKWRubAorQUNfUkVRVUlSRShbTFRPQlNPTEVURV9WRVJTSU9OXSlkbmwKK200X3JlcXVpcmUoW19MVF9QUk9HX0xUTUFJTl0pZG5sCisKK2RubCBQYXJzZSBPUFRJT05TCitfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKKworIyBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlYnVpbGQgbGlidG9vbCB3aGVuIG5lZWRlZAorTElCVE9PTF9ERVBTPSIkbHRtYWluIgorCisjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCitBQ19TVUJTVChMSUJUT09MKWRubAorCitfTFRfU0VUVVAKKworIyBPbmx5IGV4cGFuZCBvbmNlOgorbTRfZGVmaW5lKFtMVF9JTklUXSkKK10pIyBMVF9JTklUCisKKyMgT2xkIG5hbWVzOgorQVVfQUxJQVMoW0FDX1BST0dfTElCVE9PTF0sIFtMVF9JTklUXSkKK0FVX0FMSUFTKFtBTV9QUk9HX0xJQlRPT0xdLCBbTFRfSU5JVF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX1BST0dfTElCVE9PTF0sIFtdKQorZG5sIEFDX0RFRlVOKFtBTV9QUk9HX0xJQlRPT0xdLCBbXSkKKworCisjIF9MVF9DQ19CQVNFTkFNRShDQykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDYWxjdWxhdGUgY2NfYmFzZW5hbWUuICBTa2lwIGtub3duIGNvbXBpbGVyIHdyYXBwZXJzIGFuZCBjcm9zcy1wcmVmaXguCittNF9kZWZ1bihbX0xUX0NDX0JBU0VOQU1FXSwKK1tmb3IgY2NfdGVtcCBpbiAkMSIiOyBkbworICBjYXNlICRjY190ZW1wIGluCisgICAgY29tcGlsZSB8ICpbW1xcL11dY29tcGlsZSB8IGNjYWNoZSB8ICpbW1xcL11dY2NhY2hlICkgOzsKKyAgICBkaXN0Y2MgfCAqW1tcXC9dXWRpc3RjYyB8IHB1cmlmeSB8ICpbW1xcL11dcHVyaWZ5ICkgOzsKKyAgICBcLSopIDs7CisgICAgKikgYnJlYWs7OworICBlc2FjCitkb25lCitjY19iYXNlbmFtZT1gJEVDSE8gIlgkY2NfdGVtcCIgfCAkWHNlZCAtZSAncyUuKi8lJScgLWUgInMlXiRob3N0X2FsaWFzLSUlImAKK10pCisKKworIyBfTFRfRklMRVVUSUxTX0RFRkFVTFRTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSXQgaXMgb2theSB0byB1c2UgdGhlc2UgZmlsZSBjb21tYW5kcyBhbmQgYXNzdW1lIHRoZXkgaGF2ZSBiZWVuIHNldAorIyBzZW5zaWJseSBhZnRlciBgbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pJy4KK200X2RlZnVuKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSwKK1s6ICR7Q1A9ImNwIC1mIn0KKzogJHtNVj0ibXYgLWYifQorOiAke1JNPSJybSAtZiJ9CitdKSMgX0xUX0ZJTEVVVElMU19ERUZBVUxUUworCisKKyMgX0xUX1NFVFVQCisjIC0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9TRVRVUF0sCitbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKK19MVF9ERUNMKFtdLCBbaG9zdF9hbGlhc10sIFswXSwgW1RoZSBob3N0IHN5c3RlbV0pZG5sCitfTFRfREVDTChbXSwgW2hvc3RdLCBbMF0pZG5sCitfTFRfREVDTChbXSwgW2hvc3Rfb3NdLCBbMF0pZG5sCitkbmwKK19MVF9ERUNMKFtdLCBbYnVpbGRfYWxpYXNdLCBbMF0sIFtUaGUgYnVpbGQgc3lzdGVtXSlkbmwKK19MVF9ERUNMKFtdLCBbYnVpbGRdLCBbMF0pZG5sCitfTFRfREVDTChbXSwgW2J1aWxkX29zXSwgWzBdKWRubAorZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1BBVEhfTERdKWRubAorQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCitkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfTE5fU10pZG5sCit0ZXN0IC16ICIkTE5fUyIgJiYgTE5fUz0ibG4gLXMiCitfTFRfREVDTChbXSwgW0xOX1NdLCBbMV0sIFtXaGV0aGVyIHdlIG5lZWQgc29mdCBvciBoYXJkIGxpbmtzXSlkbmwKK2RubAorQUNfUkVRVUlSRShbTFRfQ01EX01BWF9MRU5dKWRubAorX0xUX0RFQ0woW29iamV4dF0sIFthY19vYmpleHRdLCBbMF0sIFtPYmplY3QgZmlsZSBzdWZmaXggKG5vcm1hbGx5ICJvIildKWRubAorX0xUX0RFQ0woW10sIFtleGVleHRdLCBbMF0sIFtFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIildKWRubAorZG5sCittNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCittNF9yZXF1aXJlKFtfTFRfQ01EX1JFTE9BRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKK200X3JlcXVpcmUoW19MVF9DTURfT0xEX0FSQ0hJVkVdKWRubAorbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCisKK19MVF9DT05GSUdfTElCVE9PTF9JTklUKFsKKyMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKKyMgY29tbWFuZHMgdGhyb3VnaCB3aXRob3V0IHJlbW92YWwgb2YgXCBlc2NhcGVzIElOSVQuCitpZiB0ZXN0IC1uICJcJHtaU0hfVkVSU0lPTitzZXR9IiA7IHRoZW4KKyAgIHNldG9wdCBOT19HTE9CX1NVQlNUCitmaQorXSkKK2lmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCisgICBzZXRvcHQgTk9fR0xPQl9TVUJTVAorZmkKKworX0xUX0NIRUNLX09CSkRJUgorCittNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKK19MVF9QUk9HX0VDSE9fQkFDS1NMQVNICisKK2Nhc2UgJGhvc3Rfb3MgaW4KK2FpeDMqKQorICAjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKKyAgIyByZWFzb24sIGlmIHdlIHNldCB0aGUgQ09MTEVDVF9OQU1FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHByb2JsZW1zCisgICMgdmFuaXNoIGluIGEgcHVmZiBvZiBzbW9rZS4KKyAgaWYgdGVzdCAiWCR7Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCisgICAgQ09MTEVDVF9OQU1FUz0KKyAgICBleHBvcnQgQ09MTEVDVF9OQU1FUworICBmaQorICA7OworZXNhYworCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCisjIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorc2VkX3F1b3RlX3N1YnN0PSdzL1woW1siYCRcXF1dXCkvXFxcMS9nJworCisjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KK2RvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFtbImBcXF1dXCkvXFxcMS9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2hlbGwgdmFyaWFibGUgaW4gYQorIyBkb3VibGVfcXVvdGVfc3Vic3QnZWQgc3RyaW5nLgorZGVsYXlfdmFyaWFibGVfc3Vic3Q9J3MvXFxcXFxcXFxcXFwkL1xcXFxcXCQvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNpbmdsZSBxdW90ZS4KK2RlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdD0ncy8nXCcnLydcJ1xcXFxcXFwnXCcnL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucworbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCisKKyMgR2xvYmFsIHZhcmlhYmxlczoKK29maWxlPWxpYnRvb2wKK2Nhbl9idWlsZF9zaGFyZWQ9eWVzCisKKyMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorIyB3aGljaCBuZWVkcyAnLmxpYicpLgorbGliZXh0PWEKKword2l0aF9nbnVfbGQ9IiRsdF9jdl9wcm9nX2dudV9sZCIKKworb2xkX0NDPSIkQ0MiCitvbGRfQ0ZMQUdTPSIkQ0ZMQUdTIgorCisjIFNldCBzYW5lIGRlZmF1bHRzIGZvciB2YXJpb3VzIHZhcmlhYmxlcwordGVzdCAteiAiJENDIiAmJiBDQz1jYwordGVzdCAteiAiJExUQ0MiICYmIExUQ0M9JENDCit0ZXN0IC16ICIkTFRDRkxBR1MiICYmIExUQ0ZMQUdTPSRDRkxBR1MKK3Rlc3QgLXogIiRMRCIgJiYgTEQ9bGQKK3Rlc3QgLXogIiRhY19vYmpleHQiICYmIGFjX29iamV4dD1vCisKK19MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKKworIyBPbmx5IHBlcmZvcm0gdGhlIGNoZWNrIGZvciBmaWxlLCBpZiB0aGUgY2hlY2sgbWV0aG9kIHJlcXVpcmVzIGl0Cit0ZXN0IC16ICIkTUFHSUNfQ01EIiAmJiBNQUdJQ19DTUQ9ZmlsZQorY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KK2ZpbGVfbWFnaWMqKQorICBpZiB0ZXN0ICIkZmlsZV9tYWdpY19jbWQiID0gJyRNQUdJQ19DTUQnOyB0aGVuCisgICAgX0xUX1BBVEhfTUFHSUMKKyAgZmkKKyAgOzsKK2VzYWMKKworIyBVc2UgQyBmb3IgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpbiB0aGUgbGlidG9vbCBzY3JpcHQKK0xUX1NVUFBPUlRFRF9UQUcoW0NDXSkKK19MVF9MQU5HX0NfQ09ORklHCitfTFRfTEFOR19ERUZBVUxUX0NPTkZJRworX0xUX0NPTkZJR19DT01NQU5EUworXSkjIF9MVF9TRVRVUAorCisKKyMgX0xUX1BST0dfTFRNQUlOCisjIC0tLS0tLS0tLS0tLS0tLQorIyBOb3RlIHRoYXQgdGhpcyBjb2RlIGlzIGNhbGxlZCBib3RoIGZyb20gYGNvbmZpZ3VyZScsIGFuZCBgY29uZmlnLnN0YXR1cycKKyMgbm93IHRoYXQgd2UgdXNlIEFDX0NPTkZJR19DT01NQU5EUyB0byBnZW5lcmF0ZSBsaWJ0b29sLiAgTm90YWJseSwKKyMgYGNvbmZpZy5zdGF0dXMnIGhhcyBubyB2YWx1ZSBmb3IgYWNfYXV4X2RpciB1bmxlc3Mgd2UgYXJlIHVzaW5nIEF1dG9tYWtlLAorIyBzbyB3ZSBwYXNzIGEgY29weSBhbG9uZyB0byBtYWtlIHN1cmUgaXQgaGFzIGEgc2Vuc2libGUgdmFsdWUgYW55d2F5LgorbTRfZGVmdW4oW19MVF9QUk9HX0xUTUFJTl0sCitbbTRfaWZkZWYoW0FDX1JFUVVJUkVfQVVYX0ZJTEVdLCBbQUNfUkVRVUlSRV9BVVhfRklMRShbbHRtYWluLnNoXSldKWRubAorX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoW2FjX2F1eF9kaXI9JyRhY19hdXhfZGlyJ10pCitsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKK10pIyBfTFRfUFJPR19MVE1BSU4KKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBBY2N1bXVsYXRlIGNvZGUgZm9yIGNyZWF0aW5nIGxpYnRvb2wuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgU28gdGhhdCB3ZSBjYW4gcmVjcmVhdGUgYSBmdWxsIGxpYnRvb2wgc2NyaXB0IGluY2x1ZGluZyBhZGRpdGlvbmFsCisjIHRhZ3MsIHdlIGFjY3VtdWxhdGUgdGhlIGNodW5rcyBvZiBjb2RlIHRvIHNlbmQgdG8gQUNfQ09ORklHX0NPTU1BTkRTCisjIGluIG1hY3JvcyBhbmQgdGhlbiBtYWtlIGEgc2luZ2xlIGNhbGwgYXQgdGhlIGVuZCB1c2luZyB0aGUgYGxpYnRvb2wnCisjIGxhYmVsLgorCisKKyMgX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoW0lOSVQtQ09NTUFORFNdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlZ2lzdGVyIElOSVQtQ09NTUFORFMgdG8gYmUgcGFzc2VkIHRvIEFDX0NPTkZJR19DT01NQU5EUyBsYXRlci4KK200X2RlZmluZShbX0xUX0NPTkZJR19MSUJUT09MX0lOSVRdLAorW200X2lmdmFsKFskMV0sCisgICAgICAgICAgW200X2FwcGVuZChbX0xUX09VVFBVVF9MSUJUT09MX0lOSVRdLAorICAgICAgICAgICAgICAgICAgICAgWyQxCitdKV0pXSkKKworIyBJbml0aWFsaXplLgorbTRfZGVmaW5lKFtfTFRfT1VUUFVUX0xJQlRPT0xfSU5JVF0pCisKKworIyBfTFRfQ09ORklHX0xJQlRPT0woW0NPTU1BTkRTXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlZ2lzdGVyIENPTU1BTkRTIHRvIGJlIHBhc3NlZCB0byBBQ19DT05GSUdfQ09NTUFORFMgbGF0ZXIuCittNF9kZWZpbmUoW19MVF9DT05GSUdfTElCVE9PTF0sCitbbTRfaWZ2YWwoWyQxXSwKKyAgICAgICAgICBbbTRfYXBwZW5kKFtfTFRfT1VUUFVUX0xJQlRPT0xfQ09NTUFORFNdLAorICAgICAgICAgICAgICAgICAgICAgWyQxCitdKV0pXSkKKworIyBJbml0aWFsaXplLgorbTRfZGVmaW5lKFtfTFRfT1VUUFVUX0xJQlRPT0xfQ09NTUFORFNdKQorCisKKyMgX0xUX0NPTkZJR19TQVZFX0NPTU1BTkRTKFtDT01NQU5EU10sIFtJTklUX0NPTU1BTkRTXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfQ09ORklHX1NBVkVfQ09NTUFORFNdLAorW19MVF9DT05GSUdfTElCVE9PTChbJDFdKQorX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWyQyXSkKK10pCisKKworIyBfTFRfRk9STUFUX0NPTU1FTlQoW0NPTU1FTlRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBZGQgbGVhZGluZyBjb21tZW50IG1hcmtzIHRvIHRoZSBzdGFydCBvZiBlYWNoIGxpbmUsIGFuZCBhIHRyYWlsaW5nCisjIGZ1bGwtc3RvcCB0byB0aGUgd2hvbGUgY29tbWVudCBpZiBvbmUgaXMgbm90IHByZXNlbnQgYWxyZWFkeS4KK200X2RlZmluZShbX0xUX0ZPUk1BVF9DT01NRU5UXSwKK1ttNF9pZnZhbChbJDFdLCBbCittNF9icGF0c3Vic3QoW200X2JwYXRzdWJzdChbJDFdLCBbXiAqXSwgWyMgXSldLAorICAgICAgICAgICAgICBbWydgJFxdXSwgW1xcXCZdKV1tNF9ibWF0Y2goWyQxXSwgW1shPy5dJF0sIFtdLCBbLl0pCispXSkKKworCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgRklYTUU6IEVsaW1pbmF0ZSBWQVJOQU1FICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworCisjIF9MVF9ERUNMKFtDT05GSUdOQU1FXSwgVkFSTkFNRSwgVkFMVUUsIFtERVNDUklQVElPTl0sIFtJUy1UQUdHRUQ/XSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDT05GSUdOQU1FIGlzIHRoZSBuYW1lIGdpdmVuIHRvIHRoZSB2YWx1ZSBpbiB0aGUgbGlidG9vbCBzY3JpcHQuCisjIFZBUk5BTUUgaXMgdGhlIChiYXNlKSBuYW1lIHVzZWQgaW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCisjIFZBTFVFIG1heSBiZSAwLCAxIG9yIDIgZm9yIGEgY29tcHV0ZWQgcXVvdGUgZXNjYXBlZCB2YWx1ZSBiYXNlZCBvbgorIyBWQVJOQU1FLiAgQW55IG90aGVyIHZhbHVlIHdpbGwgYmUgdXNlZCBkaXJlY3RseS4KK200X2RlZmluZShbX0xUX0RFQ0xdLAorW2x0X2lmX2FwcGVuZF91bmlxKFtsdF9kZWNsX3Zhcm5hbWVzXSwgWyQyXSwgWywgXSwKKyAgICBbbHRfZGljdF9hZGRfc3Via2V5KFtsdF9kZWNsX2RpY3RdLCBbJDJdLCBbbGlidG9vbF9uYW1lXSwKKwlbbTRfaWZ2YWwoWyQxXSwgWyQxXSwgWyQyXSldKQorICAgIGx0X2RpY3RfYWRkX3N1YmtleShbbHRfZGVjbF9kaWN0XSwgWyQyXSwgW3ZhbHVlXSwgWyQzXSkKKyAgICBtNF9pZnZhbChbJDRdLAorCVtsdF9kaWN0X2FkZF9zdWJrZXkoW2x0X2RlY2xfZGljdF0sIFskMl0sIFtkZXNjcmlwdGlvbl0sIFskNF0pXSkKKyAgICBsdF9kaWN0X2FkZF9zdWJrZXkoW2x0X2RlY2xfZGljdF0sIFskMl0sCisJW3RhZ2dlZD9dLCBbbTRfaWZ2YWwoWyQ1XSwgW3llc10sIFtub10pXSldKQorXSkKKworCisjIF9MVF9UQUdERUNMKFtDT05GSUdOQU1FXSwgVkFSTkFNRSwgVkFMVUUsIFtERVNDUklQVElPTl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW19MVF9UQUdERUNMXSwgW19MVF9ERUNMKFskMV0sIFskMl0sIFskM10sIFskNF0sIFt5ZXNdKV0pCisKKworIyBsdF9kZWNsX3RhZ192YXJuYW1lcyhbU0VQQVJBVE9SXSwgW1ZBUk5BTUUxLi4uXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2x0X2RlY2xfdGFnX3Zhcm5hbWVzXSwKK1tfbHRfZGVjbF9maWx0ZXIoW3RhZ2dlZD9dLCBbeWVzXSwgJEApXSkKKworCisjIF9sdF9kZWNsX2ZpbHRlcihTVUJLRVksIFZBTFVFLCBbU0VQQVJBVE9SXSwgW1ZBUk5BTUUxLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX2x0X2RlY2xfZmlsdGVyXSwKK1ttNF9jYXNlKFskI10sCisgIFswXSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjXSldLAorICBbMV0sIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0sCisgIFsyXSwgW2x0X2RpY3RfZmlsdGVyKFtsdF9kZWNsX2RpY3RdLCBbJDFdLCBbJDJdLCBbXSwgbHRfZGVjbF92YXJuYW1lcyldLAorICBbM10sIFtsdF9kaWN0X2ZpbHRlcihbbHRfZGVjbF9kaWN0XSwgWyQxXSwgWyQyXSwgWyQzXSwgbHRfZGVjbF92YXJuYW1lcyldLAorICBbbHRfZGljdF9maWx0ZXIoW2x0X2RlY2xfZGljdF0sICRAKV0pW11kbmwKK10pCisKKworIyBsdF9kZWNsX3F1b3RlX3Zhcm5hbWVzKFtTRVBBUkFUT1JdLCBbVkFSTkFNRTEuLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtsdF9kZWNsX3F1b3RlX3Zhcm5hbWVzXSwKK1tfbHRfZGVjbF9maWx0ZXIoW3ZhbHVlXSwgWzFdLCAkQCldKQorCisKKyMgbHRfZGVjbF9kcXVvdGVfdmFybmFtZXMoW1NFUEFSQVRPUl0sIFtWQVJOQU1FMS4uLl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtsdF9kZWNsX2RxdW90ZV92YXJuYW1lc10sCitbX2x0X2RlY2xfZmlsdGVyKFt2YWx1ZV0sIFsyXSwgJEApXSkKKworCisjIGx0X2RlY2xfdmFybmFtZXNfdGFnZ2VkKFtTRVBBUkFUT1JdLCBbVkFSTkFNRTEuLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbbHRfZGVjbF92YXJuYW1lc190YWdnZWRdLAorW200X2Fzc2VydChbJCMgPD0gMl0pZG5sCitfJDAobTRfcXVvdGUobTRfZGVmYXVsdChbJDFdLCBbWywgXV0pKSwKKyAgICBtNF9pZnZhbChbJDJdLCBbWyQyXV0sIFttNF9kcXVvdGUobHRfZGVjbF90YWdfdmFybmFtZXMpXSksCisgICAgbTRfc3BsaXQobTRfbm9ybWFsaXplKG00X3F1b3RlKF9MVF9UQUdTKSksIFsgXSkpXSkKK200X2RlZmluZShbX2x0X2RlY2xfdmFybmFtZXNfdGFnZ2VkXSwKK1ttNF9pZnZhbChbJDNdLCBbbHRfY29tYmluZShbJDFdLCBbJDJdLCBbX10sICQzKV0pXSkKKworCisjIGx0X2RlY2xfYWxsX3Zhcm5hbWVzKFtTRVBBUkFUT1JdLCBbVkFSTkFNRTEuLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbbHRfZGVjbF9hbGxfdmFybmFtZXNdLAorW18kMChtNF9xdW90ZShtNF9kZWZhdWx0KFskMV0sIFtbLCBdXSkpLAorICAgICBtNF9pZihbJDJdLCBbXSwKKwkgICBtNF9xdW90ZShsdF9kZWNsX3Zhcm5hbWVzKSwKKwltNF9xdW90ZShtNF9zaGlmdCgkQCkpKSlbXWRubAorXSkKK200X2RlZmluZShbX2x0X2RlY2xfYWxsX3Zhcm5hbWVzXSwKK1tsdF9qb2luKCRALCBsdF9kZWNsX3Zhcm5hbWVzX3RhZ2dlZChbJDFdLAorCQkJbHRfZGVjbF90YWdfdmFybmFtZXMoW1ssIF1dLCBtNF9zaGlmdCgkQCkpKSlkbmwKK10pCisKKworIyBfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJFKFtWQVJOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFF1b3RlIGEgdmFyaWFibGUgdmFsdWUsIGFuZCBmb3J3YXJkIGl0IHRvIGBjb25maWcuc3RhdHVzJyBzbyB0aGF0IGl0cworIyBkZWNsYXJhdGlvbiB0aGVyZSB3aWxsIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgaW4gYGNvbmZpZ3VyZScuICBWQVJOQU1FCisjIG11c3QgaGF2ZSBhIHNpbmdsZSBxdW90ZSBkZWxpbWl0ZWQgdmFsdWUgZm9yIHRoaXMgdG8gd29yay4KK200X2RlZmluZShbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRV0sCitbJDE9J2AkRUNITyAiWCRdWyQxIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnXSkKKworCisjIF9MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgV2UgZGVsaW1pdCBsaWJ0b29sIGNvbmZpZyB2YXJpYWJsZXMgd2l0aCBzaW5nbGUgcXVvdGVzLCBzbyB3aGVuCisjIHdlIHdyaXRlIHRoZW0gdG8gY29uZmlnLnN0YXR1cywgd2UgaGF2ZSB0byBiZSBzdXJlIHRvIHF1b3RlIGFsbAorIyBlbWJlZGRlZCBzaW5nbGUgcXVvdGVzIHByb3Blcmx5LiAgSW4gY29uZmlndXJlLCB0aGlzIG1hY3JvIGV4cGFuZHMKKyMgZWFjaCB2YXJpYWJsZSBkZWNsYXJlZCB3aXRoIF9MVF9ERUNMIChhbmQgX0xUX1RBR0RFQ0wpIGludG86CisjCisjICAgIDx2YXI+PSdgJEVDSE8gIlgkPHZhcj4iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK200X2RlZnVuKFtfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJBVElPTlNdLAorW200X2ZvcmVhY2goW19sdF92YXJdLCBtNF9xdW90ZShsdF9kZWNsX2FsbF92YXJuYW1lcyksCisgICAgW200X24oW19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkUoX2x0X3ZhcildKV0pXSkKKworCisjIF9MVF9MSUJUT09MX1RBR1MKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBPdXRwdXQgY29tbWVudCBhbmQgbGlzdCBvZiB0YWdzIHN1cHBvcnRlZCBieSB0aGUgc2NyaXB0CittNF9kZWZ1bihbX0xUX0xJQlRPT0xfVEFHU10sCitbX0xUX0ZPUk1BVF9DT01NRU5UKFtUaGUgbmFtZXMgb2YgdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhpcyBzY3JpcHRdKWRubAorYXZhaWxhYmxlX3RhZ3M9Il9MVF9UQUdTImRubAorXSkKKworCisjIF9MVF9MSUJUT09MX0RFQ0xBUkUoVkFSTkFNRSwgW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4dHJhY3QgdGhlIGRpY3Rpb25hcnkgdmFsdWVzIGZvciBWQVJOQU1FIChvcHRpb25hbGx5IHdpdGggVEFHKSBhbmQKKyMgZXhwYW5kIHRvIGEgY29tbWVudGVkIHNoZWxsIHZhcmlhYmxlIHNldHRpbmc6CisjCisjICAgICMgU29tZSBjb21tZW50IGFib3V0IHdoYXQgVkFSIGlzIGZvci4KKyMgICAgdmlzaWJsZV9uYW1lPSRsdF9pbnRlcm5hbF9uYW1lCittNF9kZWZpbmUoW19MVF9MSUJUT09MX0RFQ0xBUkVdLAorW19MVF9GT1JNQVRfQ09NTUVOVChtNF9xdW90ZShsdF9kaWN0X2ZldGNoKFtsdF9kZWNsX2RpY3RdLCBbJDFdLAorCQkJCQkgICBbZGVzY3JpcHRpb25dKSkpW11kbmwKK200X3B1c2hkZWYoW19saWJ0b29sX25hbWVdLAorICAgIG00X3F1b3RlKGx0X2RpY3RfZmV0Y2goW2x0X2RlY2xfZGljdF0sIFskMV0sIFtsaWJ0b29sX25hbWVdKSkpW11kbmwKK200X2Nhc2UobTRfcXVvdGUobHRfZGljdF9mZXRjaChbbHRfZGVjbF9kaWN0XSwgWyQxXSwgW3ZhbHVlXSkpLAorICAgIFswXSwgW19saWJ0b29sX25hbWU9WyRdJDFdLAorICAgIFsxXSwgW19saWJ0b29sX25hbWU9JGx0X1tdJDFdLAorICAgIFsyXSwgW19saWJ0b29sX25hbWU9JGx0X1tdJDFdLAorICAgIFtfbGlidG9vbF9uYW1lPWx0X2RpY3RfZmV0Y2goW2x0X2RlY2xfZGljdF0sIFskMV0sIFt2YWx1ZV0pXSlbXWRubAorbTRfaWZ2YWwoWyQyXSwgW18kMl0pW11tNF9wb3BkZWYoW19saWJ0b29sX25hbWVdKVtdZG5sCitdKQorCisKKyMgX0xUX0xJQlRPT0xfQ09ORklHX1ZBUlMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJvZHVjZSBjb21tZW50ZWQgZGVjbGFyYXRpb25zIG9mIG5vbi10YWdnZWQgbGlidG9vbCBjb25maWcgdmFyaWFibGVzCisjIHN1aXRhYmxlIGZvciBpbnNlcnRpb24gaW4gdGhlIExJQlRPT0wgQ09ORklHIHNlY3Rpb24gb2YgdGhlIGBsaWJ0b29sJworIyBzY3JpcHQuICBUYWdnZWQgbGlidG9vbCBjb25maWcgdmFyaWFibGVzIChldmVuIGZvciB0aGUgTElCVE9PTCBDT05GSUcKKyMgc2VjdGlvbikgYXJlIHByb2R1Y2VkIGJ5IF9MVF9MSUJUT09MX1RBR19WQVJTLgorbTRfZGVmdW4oW19MVF9MSUJUT09MX0NPTkZJR19WQVJTXSwKK1ttNF9mb3JlYWNoKFtfbHRfdmFyXSwKKyAgICBtNF9xdW90ZShfbHRfZGVjbF9maWx0ZXIoW3RhZ2dlZD9dLCBbbm9dLCBbXSwgbHRfZGVjbF92YXJuYW1lcykpLAorICAgIFttNF9uKFtfTFRfTElCVE9PTF9ERUNMQVJFKF9sdF92YXIpXSldKV0pCisKKworIyBfTFRfTElCVE9PTF9UQUdfVkFSUyhUQUcpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX0xUX0xJQlRPT0xfVEFHX1ZBUlNdLAorW200X2ZvcmVhY2goW19sdF92YXJdLCBtNF9xdW90ZShsdF9kZWNsX3RhZ192YXJuYW1lcyksCisgICAgW200X24oW19MVF9MSUJUT09MX0RFQ0xBUkUoX2x0X3ZhciwgWyQxXSldKV0pXSkKKworCisjIF9MVF9UQUdWQVIoVkFSTkFNRSwgW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX0xUX1RBR1ZBUl0sIFttNF9pZnZhbChbJDJdLCBbJDFfJDJdLCBbJDFdKV0pCisKKworIyBfTFRfQ09ORklHX0NPTU1BTkRTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2VuZCBhY2N1bXVsYXRlZCBvdXRwdXQgdG8gJENPTkZJR19TVEFUVVMuICBUaGFua3MgdG8gdGhlIGxpc3RzIG9mCisjIHZhcmlhYmxlcyBmb3Igc2luZ2xlIGFuZCBkb3VibGUgcXVvdGUgZXNjYXBpbmcgd2Ugc2F2ZWQgZnJvbSBjYWxscworIyB0byBfTFRfREVDTCwgd2UgY2FuIHB1dCBxdW90ZSBlc2NhcGVkIHZhcmlhYmxlcyBkZWNsYXJhdGlvbnMKKyMgaW50byBgY29uZmlnLnN0YXR1cycsIGFuZCB0aGVuIHRoZSBzaGVsbCBjb2RlIHRvIHF1b3RlIGVzY2FwZSB0aGVtIGluCisjIGZvciBsb29wcyBpbiBgY29uZmlnLnN0YXR1cycuICBGaW5hbGx5LCBhbnkgYWRkaXRpb25hbCBjb2RlIGFjY3VtdWxhdGVkCisjIGZyb20gY2FsbHMgdG8gX0xUX0NPTkZJR19MSUJUT09MX0lOSVQgaXMgZXhwYW5kZWQuCittNF9kZWZ1bihbX0xUX0NPTkZJR19DT01NQU5EU10sCitbQUNfUFJPVklERV9JRkVMU0UoW0xUX09VVFBVVF0sCisJZG5sIElmIHRoZSBsaWJ0b29sIGdlbmVyYXRpb24gY29kZSBoYXMgYmVlbiBwbGFjZWQgaW4gJENPTkZJR19MVCwKKwlkbmwgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyBpdCBhbGwgb3ZlciBhZ2FpbiBpbnRvIGNvbmZpZy5zdGF0dXMsCisJZG5sIHRoZW4gd2Ugd2lsbCBoYXZlIGNvbmZpZy5zdGF0dXMgcnVuICRDT05GSUdfTFQgbGF0ZXIsIHNvIGl0CisJZG5sIG5lZWRzIHRvIGtub3cgd2hhdCBuYW1lIGlzIHN0b3JlZCB0aGVyZToKKyAgICAgICAgW0FDX0NPTkZJR19DT01NQU5EUyhbbGlidG9vbF0sCisgICAgICAgICAgICBbJFNIRUxMICRDT05GSUdfTFQgfHwgQVNfRVhJVCgxKV0sIFtDT05GSUdfTFQ9JyRDT05GSUdfTFQnXSldLAorICAgIGRubCBJZiB0aGUgbGlidG9vbCBnZW5lcmF0aW9uIGNvZGUgaXMgZGVzdGluZWQgZm9yIGNvbmZpZy5zdGF0dXMsCisgICAgZG5sIGV4cGFuZCB0aGUgYWNjdW11bGF0ZWQgY29tbWFuZHMgYW5kIGluaXQgY29kZSBub3c6CisgICAgW0FDX0NPTkZJR19DT01NQU5EUyhbbGlidG9vbF0sCisgICAgICAgIFtfTFRfT1VUUFVUX0xJQlRPT0xfQ09NTUFORFNdLCBbX0xUX09VVFBVVF9MSUJUT09MX0NPTU1BTkRTX0lOSVRdKV0pCitdKSNfTFRfQ09ORklHX0NPTU1BTkRTCisKKworIyBJbml0aWFsaXplLgorbTRfZGVmaW5lKFtfTFRfT1VUUFVUX0xJQlRPT0xfQ09NTUFORFNfSU5JVF0sCitbCisKKyMgVGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gc3Rkb3V0CisjIGlmIENEUEFUSCBpcyBzZXQuCisodW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICisKK3NlZF9xdW90ZV9zdWJzdD0nJHNlZF9xdW90ZV9zdWJzdCcKK2RvdWJsZV9xdW90ZV9zdWJzdD0nJGRvdWJsZV9xdW90ZV9zdWJzdCcKK2RlbGF5X3ZhcmlhYmxlX3N1YnN0PSckZGVsYXlfdmFyaWFibGVfc3Vic3QnCitfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJBVElPTlMKK0xUQ0M9JyRMVENDJworTFRDRkxBR1M9JyRMVENGTEFHUycKK2NvbXBpbGVyPSckY29tcGlsZXJfREVGQVVMVCcKKworIyBRdW90ZSBldmFsZWQgc3RyaW5ncy4KK2ZvciB2YXIgaW4gbHRfZGVjbF9hbGxfdmFybmFtZXMoW1sgXAorXV0sIGx0X2RlY2xfcXVvdGVfdmFybmFtZXMpOyBkbworICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gIlhcXFxcXCRcJHZhciJcYCBpbgorICAgICpbW1xcXFxcXFxgXFwiXFxcJF1dKikKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiWFxcXCRcJHZhclxcIiB8IFxcXCRYc2VkIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIDs7CisgICAgKikKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgorICAgICAgOzsKKyAgICBlc2FjCitkb25lCisKKyMgRG91YmxlLXF1b3RlIGRvdWJsZS1ldmFsZWQgc3RyaW5ncy4KK2ZvciB2YXIgaW4gbHRfZGVjbF9hbGxfdmFybmFtZXMoW1sgXAorXV0sIGx0X2RlY2xfZHF1b3RlX3Zhcm5hbWVzKTsgZG8KKyAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPICJYXFxcXFwkXCR2YXIiXGAgaW4KKyAgICAqW1tcXFxcXFxcYFxcIlxcXCRdXSopCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlhcXFwkXCR2YXJcXCIgfCBcXFwkWHNlZCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCisgICAgICA7OworICAgICopCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKKyAgICAgIDs7CisgICAgZXNhYworZG9uZQorCisjIEZpeC11cCBmYWxsYmFjayBlY2hvIGlmIGl0IHdhcyBtYW5nbGVkIGJ5IHRoZSBhYm92ZSBxdW90aW5nIHJ1bGVzLgorY2FzZSBcJGx0X0VDSE8gaW4KKyonXFxcWyRdMCAtLWZhbGxiYWNrLWVjaG8iJylkbmwgIgorICBsdF9FQ0hPPVxgXCRFQ0hPICJYXCRsdF9FQ0hPIiB8IFwkWHNlZCAtZSAncy9cXFxcXFxcXFxcXFxcXFxbJF0wIC0tZmFsbGJhY2stZWNobyJcWyRdL1xbJF0wIC0tZmFsbGJhY2stZWNobyIvJ1xgCisgIDs7Citlc2FjCisKK19MVF9PVVRQVVRfTElCVE9PTF9JTklUCitdKQorCisKKyMgTFRfT1VUUFVUCisjIC0tLS0tLS0tLQorIyBUaGlzIG1hY3JvIGFsbG93cyBlYXJseSBnZW5lcmF0aW9uIG9mIHRoZSBsaWJ0b29sIHNjcmlwdCAoYmVmb3JlCisjIEFDX09VVFBVVCBpcyBjYWxsZWQpLCBpbmNhc2UgaXQgaXMgdXNlZCBpbiBjb25maWd1cmUgZm9yIGNvbXBpbGF0aW9uCisjIHRlc3RzLgorQUNfREVGVU4oW0xUX09VVFBVVF0sCitbOiAke0NPTkZJR19MVD0uL2NvbmZpZy5sdH0KK0FDX01TR19OT1RJQ0UoW2NyZWF0aW5nICRDT05GSUdfTFRdKQorY2F0ID4iJENPTkZJR19MVCIgPDxfTFRFT0YKKyMhICRTSEVMTAorIyBHZW5lcmF0ZWQgYnkgJGFzX21lLgorIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIGEgbGlidG9vbCBzdHViIHdpdGggdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KKworbHRfY2xfc2lsZW50PWZhbHNlCitTSEVMTD1cJHtDT05GSUdfU0hFTEwtJFNIRUxMfQorX0xURU9GCisKK2NhdCA+PiIkQ09ORklHX0xUIiA8PFxfTFRFT0YKK0FTX1NIRUxMX1NBTklUSVpFCitfQVNfUFJFUEFSRQorCitleGVjIEFTX01FU1NBR0VfRkQ+JjEKK2V4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKK3sKKyAgZWNobworICBBU19CT1goW1J1bm5pbmcgJGFzX21lLl0pCit9ID4mQVNfTUVTU0FHRV9MT0dfRkQKKworbHRfY2xfaGVscD0iXAorXGAkYXNfbWUnIGNyZWF0ZXMgYSBsb2NhbCBsaWJ0b29sIHN0dWIgZnJvbSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLAorZm9yIHVzZSBpbiBmdXJ0aGVyIGNvbmZpZ3VyZSB0aW1lIHRlc3RzIGJlZm9yZSB0aGUgcmVhbCBsaWJ0b29sIGlzCitnZW5lcmF0ZWQuCisKK1VzYWdlOiAkWzBdIFtbT1BUSU9OU11dCisKKyAgLWgsIC0taGVscCAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CisgIC1WLCAtLXZlcnNpb24gICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisgIC1xLCAtLXF1aWV0ICAgICBkbyBub3QgcHJpbnQgcHJvZ3Jlc3MgbWVzc2FnZXMKKyAgLWQsIC0tZGVidWcgICAgIGRvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMKKworUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1saWJ0b29sQGdudS5vcmc+LiIKKworbHRfY2xfdmVyc2lvbj0iXAorbTRfaWZzZXQoW0FDX1BBQ0tBR0VfTkFNRV0sIFtBQ19QQUNLQUdFX05BTUUgXSljb25maWcubHRbXWRubAorbTRfaWZzZXQoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIFsgQUNfUEFDS0FHRV9WRVJTSU9OXSkKK2NvbmZpZ3VyZWQgYnkgJFswXSwgZ2VuZXJhdGVkIGJ5IG00X1BBQ0tBR0VfU1RSSU5HLgorCitDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitUaGlzIGNvbmZpZy5sdCBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgorCit3aGlsZSB0ZXN0ICRbI10gIT0gMAorZG8KKyAgY2FzZSAkWzFdIGluCisgICAgLS12ZXJzaW9uIHwgLS12KiB8IC1WICkKKyAgICAgIGVjaG8gIiRsdF9jbF92ZXJzaW9uIjsgZXhpdCAwIDs7CisgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKKyAgICAgIGVjaG8gIiRsdF9jbF9oZWxwIjsgZXhpdCAwIDs7CisgICAgLS1kZWJ1ZyB8IC0tZCogfCAtZCApCisgICAgICBkZWJ1Zz06IDs7CisgICAgLS1xdWlldCB8IC0tcSogfCAtLXNpbGVudCB8IC0tcyogfCAtcSApCisgICAgICBsdF9jbF9zaWxlbnQ9OiA7OworCisgICAgLSopIEFDX01TR19FUlJPUihbdW5yZWNvZ25pemVkIG9wdGlvbjogJFsxXQorVHJ5IFxgJFswXSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLl0pIDs7CisKKyAgICAqKSBBQ19NU0dfRVJST1IoW3VucmVjb2duaXplZCBhcmd1bWVudDogJFsxXQorVHJ5IFxgJFswXSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLl0pIDs7CisgIGVzYWMKKyAgc2hpZnQKK2RvbmUKKworaWYgJGx0X2NsX3NpbGVudDsgdGhlbgorICBleGVjIEFTX01FU1NBR0VfRkQ+L2Rldi9udWxsCitmaQorX0xURU9GCisKK2NhdCA+PiIkQ09ORklHX0xUIiA8PF9MVEVPRgorX0xUX09VVFBVVF9MSUJUT09MX0NPTU1BTkRTX0lOSVQKK19MVEVPRgorCitjYXQgPj4iJENPTkZJR19MVCIgPDxcX0xURU9GCitBQ19NU0dfTk9USUNFKFtjcmVhdGluZyAkb2ZpbGVdKQorX0xUX09VVFBVVF9MSUJUT09MX0NPTU1BTkRTCitBU19FWElUKDApCitfTFRFT0YKK2NobW9kICt4ICIkQ09ORklHX0xUIgorCisjIGNvbmZpZ3VyZSBpcyB3cml0aW5nIHRvIGNvbmZpZy5sb2csIGJ1dCBjb25maWcubHQgZG9lcyBpdHMgb3duIHJlZGlyZWN0aW9uLAorIyBhcHBlbmRpbmcgdG8gY29uZmlnLmxvZywgd2hpY2ggZmFpbHMgb24gRE9TLCBhcyBjb25maWcubG9nIGlzIHN0aWxsIGtlcHQKKyMgb3BlbiBieSBjb25maWd1cmUuICBIZXJlIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwgZWZmZWN0aXZlbHkgY2xvc2luZworIyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQgYXBwZW5kZWQgdG8gYnkgY29uZmlnLmx0LgoraWYgdGVzdCAiJG5vX2NyZWF0ZSIgIT0geWVzOyB0aGVuCisgIGx0X2NsX3N1Y2Nlc3M9OgorICB0ZXN0ICIkc2lsZW50IiA9IHllcyAmJgorICAgIGx0X2NvbmZpZ19sdF9hcmdzPSIkbHRfY29uZmlnX2x0X2FyZ3MgLS1xdWlldCIKKyAgZXhlYyBBU19NRVNTQUdFX0xPR19GRD4vZGV2L251bGwKKyAgJFNIRUxMICIkQ09ORklHX0xUIiAkbHRfY29uZmlnX2x0X2FyZ3MgfHwgbHRfY2xfc3VjY2Vzcz1mYWxzZQorICBleGVjIEFTX01FU1NBR0VfTE9HX0ZEPj5jb25maWcubG9nCisgICRsdF9jbF9zdWNjZXNzIHx8IEFTX0VYSVQoMSkKK2ZpCitdKSMgTFRfT1VUUFVUCisKKworIyBfTFRfQ09ORklHKFRBRykKKyMgLS0tLS0tLS0tLS0tLS0tCisjIElmIFRBRyBpcyB0aGUgYnVpbHQtaW4gdGFnLCBjcmVhdGUgYW4gaW5pdGlhbCBsaWJ0b29sIHNjcmlwdCB3aXRoIGEKKyMgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZyb20gdGhlIHVudGFnZ2VkIGNvbmZpZyB2YXJzLiAgT3RoZXJ3aXNlIGFkZCBjb2RlCisjIHRvIGNvbmZpZy5zdGF0dXMgZm9yIGFwcGVuZGluZyB0aGUgY29uZmlndXJhdGlvbiBuYW1lZCBieSBUQUcgZnJvbSB0aGUKKyMgbWF0Y2hpbmcgdGFnZ2VkIGNvbmZpZyB2YXJzLgorbTRfZGVmdW4oW19MVF9DT05GSUddLAorW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorX0xUX0NPTkZJR19TQVZFX0NPTU1BTkRTKFsKKyAgbTRfZGVmaW5lKFtfTFRfVEFHXSwgbTRfaWYoWyQxXSwgW10sIFtDXSwgWyQxXSkpZG5sCisgIG00X2lmKF9MVF9UQUcsIFtDXSwgWworICAgICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKKyAgICAjIGNvbW1hbmRzIHRocm91Z2ggd2l0aG91dCByZW1vdmFsIG9mIFwgZXNjYXBlcy4KKyAgICBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iIDsgdGhlbgorICAgICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKKyAgICBmaQorCisgICAgY2ZnZmlsZT0iJHtvZmlsZX1UIgorICAgIHRyYXAgIiRSTSBcIiRjZmdmaWxlXCI7IGV4aXQgMSIgMSAyIDE1CisgICAgJFJNICIkY2ZnZmlsZSIKKworICAgIGNhdCA8PF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorIyEgJFNIRUxMCisKKyMgYCRFQ0hPICIkb2ZpbGUiIHwgc2VkICdzJV4uKi8lJSdgIC0gUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCisjIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5ICRhc19tZSAoJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgorIyBMaWJ0b29sIHdhcyBjb25maWd1cmVkIG9uIGhvc3QgYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgOgorIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisjCitfTFRfQ09QWUlORworX0xUX0xJQlRPT0xfVEFHUworCisjICMjIyBCRUdJTiBMSUJUT09MIENPTkZJRworX0xUX0xJQlRPT0xfQ09ORklHX1ZBUlMKK19MVF9MSUJUT09MX1RBR19WQVJTCisjICMjIyBFTkQgTElCVE9PTCBDT05GSUcKKworX0xUX0VPRgorCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgYWl4MyopCisgICAgY2F0IDw8XF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorIyBBSVggc29tZXRpbWVzIGhhcyBwcm9ibGVtcyB3aXRoIHRoZSBHQ0MgY29sbGVjdDIgcHJvZ3JhbS4gIEZvciBzb21lCisjIHJlYXNvbiwgaWYgd2Ugc2V0IHRoZSBDT0xMRUNUX05BTUVTIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgcHJvYmxlbXMKKyMgdmFuaXNoIGluIGEgcHVmZiBvZiBzbW9rZS4KK2lmIHRlc3QgIlgke0NPTExFQ1RfTkFNRVMrc2V0fSIgIT0gWHNldDsgdGhlbgorICBDT0xMRUNUX05BTUVTPQorICBleHBvcnQgQ09MTEVDVF9OQU1FUworZmkKK19MVF9FT0YKKyAgICA7OworICBlc2FjCisKKyAgX0xUX1BST0dfTFRNQUlOCisKKyAgIyBXZSB1c2Ugc2VkIGluc3RlYWQgb2YgY2F0IGJlY2F1c2UgYmFzaCBvbiBESkdQUCBnZXRzIGNvbmZ1c2VkIGlmCisgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKyAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorCisgIF9MVF9QUk9HX1hTSV9TSEVMTEZOUworCisgIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorCisgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICBjaG1vZCAreCAiJG9maWxlIgorXSwKK1tjYXQgPDxfTFRfRU9GID4+ICIkb2ZpbGUiCisKK2RubCBVbmZvcnR1bmF0ZWx5IHdlIGhhdmUgdG8gdXNlICQxIGhlcmUsIHNpbmNlIF9MVF9UQUcgaXMgbm90IGV4cGFuZGVkCitkbmwgaW4gYSBjb21tZW50IChpZSBhZnRlciBhICMpLgorIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkMQorX0xUX0xJQlRPT0xfVEFHX1ZBUlMoX0xUX1RBRykKKyMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6ICQxCitfTFRfRU9GCitdKWRubCAvbTRfaWYKK10sCitbbTRfaWYoWyQxXSwgW10sIFsKKyAgICBQQUNLQUdFPSckUEFDS0FHRScKKyAgICBWRVJTSU9OPSckVkVSU0lPTicKKyAgICBUSU1FU1RBTVA9JyRUSU1FU1RBTVAnCisgICAgUk09JyRSTScKKyAgICBvZmlsZT0nJG9maWxlJ10sIFtdKQorXSlkbmwgL19MVF9DT05GSUdfU0FWRV9DT01NQU5EUworXSkjIF9MVF9DT05GSUcKKworCisjIExUX1NVUFBPUlRFRF9UQUcoVEFHKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJhY2UgdGhpcyBtYWNybyB0byBkaXNjb3ZlciB3aGF0IHRhZ3MgYXJlIHN1cHBvcnRlZCBieSB0aGUgbGlidG9vbAorIyAtLXRhZyBvcHRpb24sIHVzaW5nOgorIyAgICBhdXRvY29uZiAtLXRyYWNlICdMVF9TVVBQT1JURURfVEFHOiQxJworQUNfREVGVU4oW0xUX1NVUFBPUlRFRF9UQUddLCBbXSkKKworCisjIEMgc3VwcG9ydCBpcyBidWlsdC1pbiBmb3Igbm93CittNF9kZWZpbmUoW19MVF9MQU5HX0NfZW5hYmxlZF0sIFtdKQorbTRfZGVmaW5lKFtfTFRfVEFHU10sIFtdKQorCisKKyMgTFRfTEFORyhMQU5HKQorIyAtLS0tLS0tLS0tLS0tCisjIEVuYWJsZSBsaWJ0b29sIHN1cHBvcnQgZm9yIHRoZSBnaXZlbiBsYW5ndWFnZSBpZiBub3QgYWxyZWFkeSBlbmFibGVkLgorQUNfREVGVU4oW0xUX0xBTkddLAorW0FDX0JFRk9SRShbJDBdLCBbTFRfT1VUUFVUXSlkbmwKK200X2Nhc2UoWyQxXSwKKyAgW0NdLAkJCVtfTFRfTEFORyhDKV0sCisgIFtDKytdLAkJW19MVF9MQU5HKENYWCldLAorICBbSmF2YV0sCQlbX0xUX0xBTkcoR0NKKV0sCisgIFtGb3J0cmFuIDc3XSwJCVtfTFRfTEFORyhGNzcpXSwKKyAgW0ZvcnRyYW5dLAkJW19MVF9MQU5HKEZDKV0sCisgIFtXaW5kb3dzIFJlc291cmNlXSwJW19MVF9MQU5HKFJDKV0sCisgIFttNF9pZmRlZihbX0xUX0xBTkdfXSQxW19DT05GSUddLAorICAgIFtfTFRfTEFORygkMSldLAorICAgIFttNF9mYXRhbChbJDA6IHVuc3VwcG9ydGVkIGxhbmd1YWdlOiAiJDEiXSldKV0pZG5sCitdKSMgTFRfTEFORworCisKKyMgX0xUX0xBTkcoTEFOR05BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9MQU5HXSwKK1ttNF9pZmRlZihbX0xUX0xBTkdfXSQxW19lbmFibGVkXSwgW10sCisgIFtMVF9TVVBQT1JURURfVEFHKFskMV0pZG5sCisgIG00X2FwcGVuZChbX0xUX1RBR1NdLCBbJDEgXSlkbmwKKyAgbTRfZGVmaW5lKFtfTFRfTEFOR19dJDFbX2VuYWJsZWRdLCBbXSlkbmwKKyAgX0xUX0xBTkdfJDFfQ09ORklHKCQxKV0pZG5sCitdKSMgX0xUX0xBTkcKKworCisjIF9MVF9MQU5HX0RFRkFVTFRfQ09ORklHCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0xBTkdfREVGQVVMVF9DT05GSUddLAorW0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0NYWF0sCisgIFtMVF9MQU5HKENYWCldLAorICBbbTRfZGVmaW5lKFtBQ19QUk9HX0NYWF0sIGRlZm4oW0FDX1BST0dfQ1hYXSlbTFRfTEFORyhDWFgpXSldKQorCitBQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19GNzddLAorICBbTFRfTEFORyhGNzcpXSwKKyAgW200X2RlZmluZShbQUNfUFJPR19GNzddLCBkZWZuKFtBQ19QUk9HX0Y3N10pW0xUX0xBTkcoRjc3KV0pXSkKKworQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfRkNdLAorICBbTFRfTEFORyhGQyldLAorICBbbTRfZGVmaW5lKFtBQ19QUk9HX0ZDXSwgZGVmbihbQUNfUFJPR19GQ10pW0xUX0xBTkcoRkMpXSldKQorCitkbmwgVGhlIGNhbGwgdG8gW0FdW01fUFJPR19HQ0pdIGlzIHF1b3RlZCBsaWtlIHRoYXQgdG8gc3RvcCBhY2xvY2FsCitkbmwgcHVsbGluZyB0aGluZ3MgaW4gbmVlZGxlc3NseS4KK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0dDSl0sCisgIFtMVF9MQU5HKEdDSildLAorICBbQUNfUFJPVklERV9JRkVMU0UoW0FdW01fUFJPR19HQ0pdLAorICAgIFtMVF9MQU5HKEdDSildLAorICAgIFtBQ19QUk9WSURFX0lGRUxTRShbTFRfUFJPR19HQ0pdLAorICAgICAgW0xUX0xBTkcoR0NKKV0sCisgICAgICBbbTRfaWZkZWYoW0FDX1BST0dfR0NKXSwKKwlbbTRfZGVmaW5lKFtBQ19QUk9HX0dDSl0sIGRlZm4oW0FDX1BST0dfR0NKXSlbTFRfTEFORyhHQ0opXSldKQorICAgICAgIG00X2lmZGVmKFtBXVtNX1BST0dfR0NKXSwKKwlbbTRfZGVmaW5lKFtBXVtNX1BST0dfR0NKXSwgZGVmbihbQV1bTV9QUk9HX0dDSl0pW0xUX0xBTkcoR0NKKV0pXSkKKyAgICAgICBtNF9pZmRlZihbTFRfUFJPR19HQ0pdLAorCVttNF9kZWZpbmUoW0xUX1BST0dfR0NKXSwgZGVmbihbTFRfUFJPR19HQ0pdKVtMVF9MQU5HKEdDSildKV0pXSldKV0pCisKK0FDX1BST1ZJREVfSUZFTFNFKFtMVF9QUk9HX1JDXSwKKyAgW0xUX0xBTkcoUkMpXSwKKyAgW200X2RlZmluZShbTFRfUFJPR19SQ10sIGRlZm4oW0xUX1BST0dfUkNdKVtMVF9MQU5HKFJDKV0pXSkKK10pIyBfTFRfTEFOR19ERUZBVUxUX0NPTkZJRworCisjIE9ic29sZXRlIG1hY3JvczoKK0FVX0RFRlVOKFtBQ19MSUJUT09MX0NYWF0sIFtMVF9MQU5HKEMrKyldKQorQVVfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwgW0xUX0xBTkcoRm9ydHJhbiA3NyldKQorQVVfREVGVU4oW0FDX0xJQlRPT0xfRkNdLCBbTFRfTEFORyhGb3J0cmFuKV0pCitBVV9ERUZVTihbQUNfTElCVE9PTF9HQ0pdLCBbTFRfTEFORyhKYXZhKV0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfQ1hYXSwgW10pCitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwgW10pCitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRkNdLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9HQ0pdLCBbXSkKKworCisjIF9MVF9UQUdfQ09NUElMRVIKKyMgLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9UQUdfQ09NUElMRVJdLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorCitfTFRfREVDTChbTFRDQ10sIFtDQ10sIFsxXSwgW0EgQyBjb21waWxlcl0pZG5sCitfTFRfREVDTChbTFRDRkxBR1NdLCBbQ0ZMQUdTXSwgWzFdLCBbTFRDQyBjb21waWxlciBmbGFnc10pZG5sCitfTFRfVEFHREVDTChbQ0NdLCBbY29tcGlsZXJdLCBbMV0sIFtBIGxhbmd1YWdlIHNwZWNpZmljIGNvbXBpbGVyXSlkbmwKK19MVF9UQUdERUNMKFt3aXRoX2djY10sIFtHQ0NdLCBbMF0sIFtJcyB0aGUgY29tcGlsZXIgdGhlIEdOVSBjb21waWxlcj9dKWRubAorCisjIElmIG5vIEMgY29tcGlsZXIgd2FzIHNwZWNpZmllZCwgdXNlIENDLgorTFRDQz0ke0xUQ0MtIiRDQyJ9CisKKyMgSWYgbm8gQyBjb21waWxlciBmbGFncyB3ZXJlIHNwZWNpZmllZCwgdXNlIENGTEFHUy4KK0xUQ0ZMQUdTPSR7TFRDRkxBR1MtIiRDRkxBR1MifQorCisjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorY29tcGlsZXI9JENDCitdKSMgX0xUX1RBR19DT01QSUxFUgorCisKKyMgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayBmb3IgY29tcGlsZXIgYm9pbGVycGxhdGUgb3V0cHV0IG9yIHdhcm5pbmdzIHdpdGgKKyMgdGhlIHNpbXBsZSBjb21waWxlciB0ZXN0IGNvZGUuCittNF9kZWZ1bihbX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFXSwKK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorYWNfb3V0ZmlsZT1jb25mdGVzdC4kYWNfb2JqZXh0CitlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+Y29uZnRlc3QuJGFjX2V4dAorZXZhbCAiJGFjX2NvbXBpbGUiIDI+JjEgPi9kZXYvbnVsbCB8ICRTRUQgJy9eJC9kOyAvXiAqKy9kJyA+Y29uZnRlc3QuZXJyCitfbHRfY29tcGlsZXJfYm9pbGVycGxhdGU9YGNhdCBjb25mdGVzdC5lcnJgCiskUk0gY29uZnRlc3QqCitdKSMgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCisKKworIyBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgZm9yIGxpbmtlciBib2lsZXJwbGF0ZSBvdXRwdXQgb3Igd2FybmluZ3Mgd2l0aAorIyB0aGUgc2ltcGxlIGxpbmsgdGVzdCBjb2RlLgorbTRfZGVmdW4oW19MVF9MSU5LRVJfQk9JTEVSUExBVEVdLAorW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCithY19vdXRmaWxlPWNvbmZ0ZXN0LiRhY19vYmpleHQKK2VjaG8gIiRsdF9zaW1wbGVfbGlua190ZXN0X2NvZGUiID5jb25mdGVzdC4kYWNfZXh0CitldmFsICIkYWNfbGluayIgMj4mMSA+L2Rldi9udWxsIHwgJFNFRCAnL14kL2Q7IC9eICorL2QnID5jb25mdGVzdC5lcnIKK19sdF9saW5rZXJfYm9pbGVycGxhdGU9YGNhdCBjb25mdGVzdC5lcnJgCiskUk0gLXIgY29uZnRlc3QqCitdKSMgX0xUX0xJTktFUl9CT0lMRVJQTEFURQorCisjIF9MVF9SRVFVSVJFRF9EQVJXSU5fQ0hFQ0tTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuX29uY2UoW19MVF9SRVFVSVJFRF9EQVJXSU5fQ0hFQ0tTXSxbCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICByaGFwc29keSogfCBkYXJ3aW4qKQorICAgIEFDX0NIRUNLX1RPT0woW0RTWU1VVElMXSwgW2RzeW11dGlsXSwgWzpdKQorICAgIEFDX0NIRUNLX1RPT0woW05NRURJVF0sIFtubWVkaXRdLCBbOl0pCisgICAgQUNfQ0hFQ0tfVE9PTChbTElQT10sIFtsaXBvXSwgWzpdKQorICAgIEFDX0NIRUNLX1RPT0woW09UT09MXSwgW290b29sXSwgWzpdKQorICAgIEFDX0NIRUNLX1RPT0woW09UT09MNjRdLCBbb3Rvb2w2NF0sIFs6XSkKKyAgICBfTFRfREVDTChbXSwgW0RTWU1VVElMXSwgWzFdLAorICAgICAgW1Rvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFhdKQorICAgIF9MVF9ERUNMKFtdLCBbTk1FRElUXSwgWzFdLAorICAgICAgW1Rvb2wgdG8gY2hhbmdlIGdsb2JhbCB0byBsb2NhbCBzeW1ib2xzIG9uIE1hYyBPUyBYXSkKKyAgICBfTFRfREVDTChbXSwgW0xJUE9dLCBbMV0sCisgICAgICBbVG9vbCB0byBtYW5pcHVsYXRlIGZhdCBvYmplY3RzIGFuZCBhcmNoaXZlcyBvbiBNYWMgT1MgWF0pCisgICAgX0xUX0RFQ0woW10sIFtPVE9PTF0sIFsxXSwKKyAgICAgIFtsZGQvcmVhZGVsZiBsaWtlIHRvb2wgZm9yIE1hY2gtTyBiaW5hcmllcyBvbiBNYWMgT1MgWF0pCisgICAgX0xUX0RFQ0woW10sIFtPVE9PTDY0XSwgWzFdLAorICAgICAgW2xkZC9yZWFkZWxmIGxpa2UgdG9vbCBmb3IgNjQgYml0IE1hY2gtTyBiaW5hcmllcyBvbiBNYWMgT1MgWCAxMC40XSkKKworICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgLXNpbmdsZV9tb2R1bGUgbGlua2VyIGZsYWddLFtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kXSwKKyAgICAgIFtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPW5vCisgICAgICBpZiB0ZXN0IC16ICIke0xUX01VTFRJX01PRFVMRX0iOyB0aGVuCisJIyBCeSBkZWZhdWx0IHdlIHdpbGwgYWRkIHRoZSAtc2luZ2xlX21vZHVsZSBmbGFnLiBZb3UgY2FuIG92ZXJyaWRlCisJIyBieSBlaXRoZXIgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTFRfTVVMVElfTU9EVUxFCisJIyBub24tZW1wdHkgYXQgY29uZmlndXJlIHRpbWUsIG9yIGJ5IGFkZGluZyAtbXVsdGlfbW9kdWxlIHRvIHRoZQorCSMgbGluayBmbGFncy4KKwlybSAtcmYgbGliY29uZnRlc3QuZHlsaWIqCisJZWNobyAiaW50IGZvbyh2b2lkKXtyZXR1cm4gMTt9IiA+IGNvbmZ0ZXN0LmMKKwllY2hvICIkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gbGliY29uZnRlc3QuZHlsaWIgXAorLWR5bmFtaWNsaWIgLVdsLC1zaW5nbGVfbW9kdWxlIGNvbmZ0ZXN0LmMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKwkkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gbGliY29uZnRlc3QuZHlsaWIgXAorCSAgLWR5bmFtaWNsaWIgLVdsLC1zaW5nbGVfbW9kdWxlIGNvbmZ0ZXN0LmMgMj5jb25mdGVzdC5lcnIKKyAgICAgICAgX2x0X3Jlc3VsdD0kPworCWlmIHRlc3QgLWYgbGliY29uZnRlc3QuZHlsaWIgJiYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVyciAmJiB0ZXN0ICRfbHRfcmVzdWx0ID0gMDsgdGhlbgorCSAgbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZD15ZXMKKwllbHNlCisJICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKwlmaQorCXJtIC1yZiBsaWJjb25mdGVzdC5keWxpYioKKwlybSAtZiBjb25mdGVzdC4qCisgICAgICBmaV0pCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGxpbmtlciBmbGFnXSwKKyAgICAgIFtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3RdLAorICAgICAgW2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdD1ubworICAgICAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgICAgICBlY2hvICJfbWFpbiIgPiBjb25mdGVzdC5zeW0KKyAgICAgIExERkxBR1M9IiRMREZMQUdTIC1XbCwtZXhwb3J0ZWRfc3ltYm9sc19saXN0LGNvbmZ0ZXN0LnN5bSIKKyAgICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sW10pXSwKKwlbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PXllc10sCisJW2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdD1ub10pCisJTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKyAgICBdKQorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICByaGFwc29keSogfCBkYXJ3aW4xLltbMDEyXV0pCisgICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CisgICAgZGFyd2luMS4qKQorICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LWZsYXRfbmFtZXNwYWNlICR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OworICAgIGRhcndpbiopICMgZGFyd2luIDUueCBvbgorICAgICAgIyBpZiBydW5uaW5nIG9uIDEwLjUgb3IgbGF0ZXIsIHRoZSBkZXBsb3ltZW50IHRhcmdldCBkZWZhdWx0cworICAgICAgIyB0byB0aGUgT1MgdmVyc2lvbiwgaWYgb24geDg2LCBhbmQgMTAuNCwgdGhlIGRlcGxveW1lbnQKKyAgICAgICMgdGFyZ2V0IGRlZmF1bHRzIHRvIDEwLjQuIERvbid0IHlvdSBsb3ZlIGl0PworICAgICAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0xMC4wfSwkaG9zdCBpbgorCTEwLjAsKjg2Ki1kYXJ3aW44KnwxMC4wLCotZGFyd2luW1s5MV1dKikKKwkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS11bmRlZmluZWQgJHt3bH1keW5hbWljX2xvb2t1cCcgOzsKKwkxMC5bWzAxMl1dKikKKwkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS1mbGF0X25hbWVzcGFjZSAke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKKwkxMC4qKQorCSAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJyA7OworICAgICAgZXNhYworICAgIDs7CisgIGVzYWMKKyAgICBpZiB0ZXN0ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgPSAieWVzIjsgdGhlbgorICAgICAgX2x0X2Rhcl9zaW5nbGVfbW9kPSckc2luZ2xlX21vZHVsZScKKyAgICBmaQorICAgIGlmIHRlc3QgIiRsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QiID0gInllcyI7IHRoZW4KKyAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9JyAke3dsfS1leHBvcnRlZF9zeW1ib2xzX2xpc3QsJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bScKKyAgICBlbHNlCisgICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPSd+JE5NRURJVCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKKyAgICBmaQorICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiOyB0aGVuCisgICAgICBfbHRfZHN5bXV0aWw9J34kRFNZTVVUSUwgJGxpYiB8fCA6JworICAgIGVsc2UKKyAgICAgIF9sdF9kc3ltdXRpbD0KKyAgICBmaQorICAgIDs7CisgIGVzYWMKK10pCisKKworIyBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVja3MgZm9yIGxpbmtlciBhbmQgY29tcGlsZXIgZmVhdHVyZXMgb24gZGFyd2luCittNF9kZWZ1bihbX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVNdLAorWworICBtNF9yZXF1aXJlKFtfTFRfUkVRVUlSRURfREFSV0lOX0NIRUNLU10pCisgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9eWVzCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCisgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJworICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCisgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgIGlmb3J0KikgX2x0X2Rhcl9jYW5fc2hhcmVkPXllcyA7OworICAgICAqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9JEdDQyA7OworICBlc2FjCisgIGlmIHRlc3QgIiRfbHRfZGFyX2Nhbl9zaGFyZWQiID0gInllcyI7IHRoZW4KKyAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1lY2hvCisgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKKyAgICBfTFRfVEFHVkFSKG1vZHVsZV9jbWRzLCAkMSk9IlwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyR7X2x0X2RzeW11dGlsfSIKKyAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAke19sdF9kYXJfc2luZ2xlX21vZH0ke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgorICAgIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAtZSAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKKyAgICBtNF9pZihbJDFdLCBbQ1hYXSwKK1sgICBpZiB0ZXN0ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgIT0gInllcyI7IHRoZW4KKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9IlwkQ0MgLXIgLWtlZXBfcHJpdmF0ZV9leHRlcm5zIC1ub3N0ZGxpYiAtbyBcJHtsaWJ9LW1hc3Rlci5vIFwkbGlib2Jqc35cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCR7bGlifS1tYXN0ZXIubyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcke19sdF9kc3ltdXRpbH0iCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCR7bGlifS1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwke2xpYn0tbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKKyAgICBmaQorXSxbXSkKKyAgZWxzZQorICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgIGZpCitdKQorCisjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIExpbmtzIGEgbWluaW1hbCBwcm9ncmFtIGFuZCBjaGVja3MgdGhlIGV4ZWN1dGFibGUKKyMgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCBoYXJkY29kZWQgbGlicmFyeSBwYXRoLiBJbiBtb3N0IGNhc2VzLAorIyB0aGlzIGlzIC91c3IvbGliOi9saWIsIGJ1dCB3aGVuIHRoZSBNUEkgY29tcGlsZXJzIGFyZSB1c2VkCisjIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbiBhbmQgTVBJIGxpYnMgYXJlIGluY2x1ZGVkIHRvby4KKyMgSWYgd2UgZG9uJ3QgZmluZCBhbnl0aGluZywgdXNlIHRoZSBkZWZhdWx0IGxpYnJhcnkgcGF0aCBhY2NvcmRpbmcKKyMgdG8gdGhlIGFpeCBsZCBtYW51YWwuCittNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAorW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCitBQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BST0dSQU0sWworbHRfYWl4X2xpYnBhdGhfc2VkPScKKyAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisJL14wLyB7CisJICAgIHMvXjAgICpcKC4qXCkkL1wxLworCSAgICBwCisJfQorICAgIH0nCithaXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KK2lmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKyAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCitmaV0sW10pCitpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK10pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorCisKKyMgX0xUX1NIRUxMX0lOSVQoQVJHKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW19MVF9TSEVMTF9JTklUXSwKK1tpZmRlZihbQUNfRElWRVJTSU9OX05PVElDRV0sCisJICAgICBbQUNfRElWRVJUX1BVU0goQUNfRElWRVJTSU9OX05PVElDRSldLAorCSBbQUNfRElWRVJUX1BVU0goTk9USUNFKV0pCiskMQorQUNfRElWRVJUX1BPUAorXSkjIF9MVF9TSEVMTF9JTklUCisKKworIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBZGQgc29tZSBjb2RlIHRvIHRoZSBzdGFydCBvZiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2gKKyMgd2lsbCBmaW5kIGFuIGVjaG8gY29tbWFuZCB3aGljaCBkb2Vzbid0IGludGVycHJldCBiYWNrc2xhc2hlcy4KK200X2RlZnVuKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0sCitbX0xUX1NIRUxMX0lOSVQoWworIyBDaGVjayB0aGF0IHdlIGFyZSBydW5uaW5nIHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgorU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KKworY2FzZSBYJGx0X0VDSE8gaW4KK1gqLS1mYWxsYmFjay1lY2hvKQorICAjIFJlbW92ZSBvbmUgbGV2ZWwgb2YgcXVvdGF0aW9uICh3aGljaCB3YXMgcmVxdWlyZWQgZm9yIE1ha2UpLgorICBFQ0hPPWBlY2hvICIkbHRfRUNITyIgfCBzZWQgJ3MsXFxcXFxbJF1cXFskXTAsJ1skXTAnLCdgCisgIDs7Citlc2FjCisKK0VDSE89JHtsdF9FQ0hPLWVjaG99CitpZiB0ZXN0ICJYWyRdMSIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KKyAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCisgIHNoaWZ0CitlbGlmIHRlc3QgIlhbJF0xIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KKyAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgorICA6CitlbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyA7IHRoZW4KKyAgIyBZaXBwZWUsICRFQ0hPIHdvcmtzIQorICA6CitlbHNlCisgICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KKyAgZXhlYyAkU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9CitmaQorCitpZiB0ZXN0ICJYWyRdMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCisgICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCisgIHNoaWZ0CisgIGNhdCA8PF9MVF9FT0YKK1skXSoKK19MVF9FT0YKKyAgZXhpdCAwCitmaQorCisjIFRoZSBIUC1VWCBrc2ggYW5kIFBPU0lYIHNoZWxsIHByaW50IHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIHN0ZG91dAorIyBpZiBDRFBBVEggaXMgc2V0LgorKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAorCitpZiB0ZXN0IC16ICIkbHRfRUNITyI7IHRoZW4KKyAgaWYgdGVzdCAiWCR7ZWNob190ZXN0X3N0cmluZytzZXR9IiAhPSBYc2V0OyB0aGVuCisgICAgIyBmaW5kIGEgc3RyaW5nIGFzIGxhcmdlIGFzIHBvc3NpYmxlLCBhcyBsb25nIGFzIHRoZSBzaGVsbCBjYW4gY29wZSB3aXRoIGl0CisgICAgZm9yIGNtZCBpbiAnc2VkIDUwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCAxMHEgIlskXTAiJyAnc2VkIDJxICJbJF0wIicgJ2VjaG8gdGVzdCc7IGRvCisgICAgICAjIGV4cGVjdGVkIHNpemVzOiBsZXNzIHRoYW4gMktiLCAxS2IsIDUxMiBieXRlcywgMTYgYnl0ZXMsIC4uLgorICAgICAgaWYgeyBlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRjbWRgOyB9IDI+L2Rldi9udWxsICYmCisJIHsgdGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsCisgICAgICB0aGVuCisgICAgICAgIGJyZWFrCisgICAgICBmaQorICAgIGRvbmUKKyAgZmkKKworICBpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKKyAgICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgorICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KKyAgICA6CisgIGVsc2UKKyAgICAjIFRoZSBTb2xhcmlzLCBBSVgsIGFuZCBEaWdpdGFsIFVuaXggZGVmYXVsdCBlY2hvIHByb2dyYW1zIHVucXVvdGUKKyAgICAjIGJhY2tzbGFzaGVzLiAgVGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHF1b3RlIGJhY2tzbGFzaGVzIHVzaW5nCisgICAgIyAgIGVjaG8gIiRzb21ldGhpbmciIHwgc2VkICdzL1xcL1xcXFwvZycKKyAgICAjCisgICAgIyBTbywgZmlyc3Qgd2UgbG9vayBmb3IgYSB3b3JraW5nIGVjaG8gaW4gdGhlIHVzZXIncyBQQVRILgorCisgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgICAgZm9yIGRpciBpbiAkUEFUSCAvdXNyL3VjYjsgZG8KKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgaWYgKHRlc3QgLWYgJGRpci9lY2hvIHx8IHRlc3QgLWYgJGRpci9lY2hvJGFjX2V4ZWV4dCkgJiYKKyAgICAgICAgIHRlc3QgIlhgKCRkaXIvZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKKyAgICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkZGlyL2VjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCisgICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KKyAgICAgICAgRUNITz0iJGRpci9lY2hvIgorICAgICAgICBicmVhaworICAgICAgZmkKKyAgICBkb25lCisgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisKKyAgICBpZiB0ZXN0ICJYJEVDSE8iID0gWGVjaG87IHRoZW4KKyAgICAgICMgV2UgZGlkbid0IGZpbmQgYSBiZXR0ZXIgZWNobywgc28gbG9vayBmb3IgYWx0ZXJuYXRpdmVzLgorICAgICAgaWYgdGVzdCAiWGB7IHByaW50IC1yICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCisgICAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7IHByaW50IC1yICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCisgICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KKyAgICAgICAgIyBUaGlzIHNoZWxsIGhhcyBhIGJ1aWx0aW4gcHJpbnQgLXIgdGhhdCBkb2VzIHRoZSB0cmljay4KKyAgICAgICAgRUNITz0ncHJpbnQgLXInCisgICAgICBlbGlmIHsgdGVzdCAtZiAvYmluL2tzaCB8fCB0ZXN0IC1mIC9iaW4va3NoJGFjX2V4ZWV4dDsgfSAmJgorCSAgIHRlc3QgIlgkQ09ORklHX1NIRUxMIiAhPSBYL2Jpbi9rc2g7IHRoZW4KKyAgICAgICAgIyBJZiB3ZSBoYXZlIGtzaCwgdHJ5IHJ1bm5pbmcgY29uZmlndXJlIGFnYWluIHdpdGggaXQuCisgICAgICAgIE9SSUdJTkFMX0NPTkZJR19TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQorICAgICAgICBleHBvcnQgT1JJR0lOQUxfQ09ORklHX1NIRUxMCisgICAgICAgIENPTkZJR19TSEVMTD0vYmluL2tzaAorICAgICAgICBleHBvcnQgQ09ORklHX1NIRUxMCisgICAgICAgIGV4ZWMgJENPTkZJR19TSEVMTCAiWyRdMCIgLS1uby1yZWV4ZWMgJHsxKyJbJF1AIn0KKyAgICAgIGVsc2UKKyAgICAgICAgIyBUcnkgdXNpbmcgcHJpbnRmLgorICAgICAgICBFQ0hPPSdwcmludGYgJXNcbicKKyAgICAgICAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCisJICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgorCSAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgorCSAgIyBDb29sLCBwcmludGYgd29ya3MKKwkgIDoKKyAgICAgICAgZWxpZiBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgorCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCisJICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgorCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCisJICBDT05GSUdfU0hFTEw9JE9SSUdJTkFMX0NPTkZJR19TSEVMTAorCSAgZXhwb3J0IENPTkZJR19TSEVMTAorCSAgU0hFTEw9IiRDT05GSUdfU0hFTEwiCisJICBleHBvcnQgU0hFTEwKKwkgIEVDSE89IiRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iCisgICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKKwkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgorCSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKKwkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgorCSAgRUNITz0iJENPTkZJR19TSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyIKKyAgICAgICAgZWxzZQorCSAgIyBtYXliZSB3aXRoIGEgc21hbGxlciBzdHJpbmcuLi4KKwkgIHByZXY9OgorCisJICBmb3IgY21kIGluICdlY2hvIHRlc3QnICdzZWQgMnEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCA1MHEgIlskXTAiJzsgZG8KKwkgICAgaWYgeyB0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlhgZXZhbCAkY21kYCI7IH0gMj4vZGV2L251bGwKKwkgICAgdGhlbgorCSAgICAgIGJyZWFrCisJICAgIGZpCisJICAgIHByZXY9IiRjbWQiCisJICBkb25lCisKKwkgIGlmIHRlc3QgIiRwcmV2IiAhPSAnc2VkIDUwcSAiWyRdMCInOyB0aGVuCisJICAgIGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJHByZXZgCisJICAgIGV4cG9ydCBlY2hvX3Rlc3Rfc3RyaW5nCisJICAgIGV4ZWMgJHtPUklHSU5BTF9DT05GSUdfU0hFTEwtJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH19ICJbJF0wIiAkezErIlskXUAifQorCSAgZWxzZQorCSAgICAjIE9vcHMuICBXZSBsb3N0IGNvbXBsZXRlbHksIHNvIGp1c3Qgc3RpY2sgd2l0aCBlY2hvLgorCSAgICBFQ0hPPWVjaG8KKwkgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGZpCisgIGZpCitmaQorCisjIENvcHkgZWNobyBhbmQgcXVvdGUgdGhlIGNvcHkgc3VpdGFibHkgZm9yIHBhc3NpbmcgdG8gbGlidG9vbCBmcm9tCisjIHRoZSBNYWtlZmlsZSwgaW5zdGVhZCBvZiBxdW90aW5nIHRoZSBvcmlnaW5hbCwgd2hpY2ggaXMgdXNlZCBsYXRlci4KK2x0X0VDSE89JEVDSE8KK2lmIHRlc3QgIlgkbHRfRUNITyIgPSAiWCRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCisgICBsdF9FQ0hPPSIkQ09ORklHX1NIRUxMIFxcXCRcWyRdMCAtLWZhbGxiYWNrLWVjaG8iCitmaQorCitBQ19TVUJTVChsdF9FQ0hPKQorXSkKK19MVF9ERUNMKFtdLCBbU0hFTExdLCBbMV0sIFtTaGVsbCB0byB1c2Ugd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzXSkKK19MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwKKyAgICBbQW4gZWNobyBwcm9ncmFtIHRoYXQgZG9lcyBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzXSkKK10pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAorCisKKyMgX0xUX0VOQUJMRV9MT0NLCisjIC0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9FTkFCTEVfTE9DS10sCitbQUNfQVJHX0VOQUJMRShbbGlidG9vbC1sb2NrXSwKKyAgW0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlidG9vbC1sb2NrXSwKKyAgICBbYXZvaWQgbG9ja2luZyAobWlnaHQgYnJlYWsgcGFyYWxsZWwgYnVpbGRzKV0pXSkKK3Rlc3QgIngkZW5hYmxlX2xpYnRvb2xfbG9jayIgIT0geG5vICYmIGVuYWJsZV9saWJ0b29sX2xvY2s9eWVzCisKKyMgU29tZSBmbGFncyBuZWVkIHRvIGJlIHByb3BhZ2F0ZWQgdG8gdGhlIGNvbXBpbGVyIG9yIGxpbmtlciBmb3IgZ29vZAorIyBsaWJ0b29sIHN1cHBvcnQuCitjYXNlICRob3N0IGluCitpYTY0LSotaHB1eCopCisgICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KKyAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCisgICAgICAqRUxGLTMyKikKKwlIUFVYX0lBNjRfTU9ERT0iMzIiCisJOzsKKyAgICAgICpFTEYtNjQqKQorCUhQVVhfSUE2NF9NT0RFPSI2NCIKKwk7OworICAgIGVzYWMKKyAgZmkKKyAgcm0gLXJmIGNvbmZ0ZXN0KgorICA7OworKi0qLWlyaXg2KikKKyAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgorICBlY2hvICdbI11saW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CisgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgorICAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgorCSozMi1iaXQqKQorCSAgTEQ9IiR7TEQtbGR9IC1tZWxmMzJic21pcCIKKwkgIDs7CisJKk4zMiopCisJICBMRD0iJHtMRC1sZH0gLW1lbGYzMmJtaXBuMzIiCisJICA7OworCSo2NC1iaXQqKQorCSAgTEQ9IiR7TEQtbGR9IC1tZWxmNjRibWlwIgorCTs7CisgICAgICBlc2FjCisgICAgZWxzZQorICAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgorCSozMi1iaXQqKQorCSAgTEQ9IiR7TEQtbGR9IC0zMiIKKwkgIDs7CisJKk4zMiopCisJICBMRD0iJHtMRC1sZH0gLW4zMiIKKwkgIDs7CisJKjY0LWJpdCopCisJICBMRD0iJHtMRC1sZH0gLTY0IgorCSAgOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICBmaQorICBybSAtcmYgY29uZnRlc3QqCisgIDs7CisKK3g4Nl82NC0qa2ZyZWVic2QqLWdudXx4ODZfNjQtKmxpbnV4KnxwcGMqLSpsaW51eCp8cG93ZXJwYyotKmxpbnV4KnwgXAorczM5MCotKmxpbnV4KnxzMzkwKi0qdHBmKnxzcGFyYyotKmxpbnV4KikKKyAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgorICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAorICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3Qub2AgaW4KKyAgICAgICozMi1iaXQqKQorCWNhc2UgJGhvc3QgaW4KKwkgIHg4Nl82NC0qa2ZyZWVic2QqLWdudSkKKwkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl9pMzg2X2Zic2QiCisJICAgIDs7CisJICB4ODZfNjQtKmxpbnV4KikKKwkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl9pMzg2IgorCSAgICA7OworCSAgcHBjNjQtKmxpbnV4Knxwb3dlcnBjNjQtKmxpbnV4KikKKwkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZjMycHBjbGludXgiCisJICAgIDs7CisJICBzMzkweC0qbGludXgqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3MzOTAiCisJICAgIDs7CisJICBzcGFyYzY0LSpsaW51eCopCisJICAgIExEPSIke0xELWxkfSAtbSBlbGYzMl9zcGFyYyIKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgICo2NC1iaXQqKQorCWNhc2UgJGhvc3QgaW4KKwkgIHg4Nl82NC0qa2ZyZWVic2QqLWdudSkKKwkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl94ODZfNjRfZmJzZCIKKwkgICAgOzsKKwkgIHg4Nl82NC0qbGludXgqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKKwkgICAgOzsKKwkgIHBwYyotKmxpbnV4Knxwb3dlcnBjKi0qbGludXgqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRwcGMiCisJICAgIDs7CisJICBzMzkwKi0qbGludXgqfHMzOTAqLSp0cGYqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfczM5MCIKKwkgICAgOzsKKwkgIHNwYXJjKi0qbGludXgqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiCisJICAgIDs7CisJZXNhYworCTs7CisgICAgZXNhYworICBmaQorICBybSAtcmYgY29uZnRlc3QqCisgIDs7CisKKyotKi1zY28zLjJ2NSopCisgICMgT24gU0NPIE9wZW5TZXJ2ZXIgNSwgd2UgbmVlZCAtYmVsZiB0byBnZXQgZnVsbC1mZWF0dXJlZCBiaW5hcmllcy4KKyAgU0FWRV9DRkxBR1M9IiRDRkxBR1MiCisgIENGTEFHUz0iJENGTEFHUyAtYmVsZiIKKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGZdLCBsdF9jdl9jY19uZWVkc19iZWxmLAorICAgIFtBQ19MQU5HX1BVU0goQykKKyAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLFtbXV0pXSxbbHRfY3ZfY2NfbmVlZHNfYmVsZj15ZXNdLFtsdF9jdl9jY19uZWVkc19iZWxmPW5vXSkKKyAgICAgQUNfTEFOR19QT1BdKQorICBpZiB0ZXN0IHgiJGx0X2N2X2NjX25lZWRzX2JlbGYiICE9IHgieWVzIjsgdGhlbgorICAgICMgdGhpcyBpcyBwcm9iYWJseSBnY2MgMi44LjAsIGVnY3MgMS4wIG9yIG5ld2VyOyBubyBuZWVkIGZvciAtYmVsZgorICAgIENGTEFHUz0iJFNBVkVfQ0ZMQUdTIgorICBmaQorICA7Oworc3BhcmMqLSpzb2xhcmlzKikKKyAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgorICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAorICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3Qub2AgaW4KKyAgICAqNjQtYml0KikKKyAgICAgIGNhc2UgJGx0X2N2X3Byb2dfZ251X2xkIGluCisgICAgICB5ZXMqKSBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiIDs7CisgICAgICAqKQorCWlmICR7TEQtbGR9IC02NCAtciAtbyBjb25mdGVzdDIubyBjb25mdGVzdC5vID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgTEQ9IiR7TEQtbGR9IC02NCIKKwlmaQorCTs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIGVzYWMKKyAgZmkKKyAgcm0gLXJmIGNvbmZ0ZXN0KgorICA7OworZXNhYworCituZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKK10pIyBfTFRfRU5BQkxFX0xPQ0sKKworCisjIF9MVF9DTURfT0xEX0FSQ0hJVkUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DTURfT0xEX0FSQ0hJVkVdLAorW0FDX0NIRUNLX1RPT0woQVIsIGFyLCBmYWxzZSkKK3Rlc3QgLXogIiRBUiIgJiYgQVI9YXIKK3Rlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CitfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKK19MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCisKK0FDX0NIRUNLX1RPT0woU1RSSVAsIHN0cmlwLCA6KQordGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06CitfTFRfREVDTChbXSwgW1NUUklQXSwgWzFdLCBbQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW1dKQorCitBQ19DSEVDS19UT09MKFJBTkxJQiwgcmFubGliLCA6KQordGVzdCAteiAiJFJBTkxJQiIgJiYgUkFOTElCPToKK19MVF9ERUNMKFtdLCBbUkFOTElCXSwgWzFdLAorICAgIFtDb21tYW5kcyB1c2VkIHRvIGluc3RhbGwgYW4gb2xkLXN0eWxlIGFyY2hpdmVdKQorCisjIERldGVybWluZSBjb21tYW5kcyB0byBjcmVhdGUgb2xkLXN0eWxlIHN0YXRpYyBhcmNoaXZlcy4KK29sZF9hcmNoaXZlX2NtZHM9JyRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJworb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworb2xkX3Bvc3R1bmluc3RhbGxfY21kcz0KKworaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICBvcGVuYnNkKikKKyAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkb2xkbGliIgorICAgIDs7CisgICopCisgICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKKyAgICA7OworICBlc2FjCisgIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkb2xkbGliIgorZmkKK19MVF9ERUNMKFtdLCBbb2xkX3Bvc3RpbnN0YWxsX2NtZHNdLCBbMl0pCitfTFRfREVDTChbXSwgW29sZF9wb3N0dW5pbnN0YWxsX2NtZHNdLCBbMl0pCitfTFRfVEFHREVDTChbXSwgW29sZF9hcmNoaXZlX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYW4gb2xkLXN0eWxlIGFyY2hpdmVdKQorXSkjIF9MVF9DTURfT0xEX0FSQ0hJVkUKKworCisjIF9MVF9DT01QSUxFUl9PUFRJT04oTUVTU0FHRSwgVkFSSUFCTEUtTkFNRSwgRkxBR1MsCisjCQlbT1VUUFVULUZJTEVdLCBbQUNUSU9OLVNVQ0NFU1NdLCBbQUNUSU9OLUZBSUxVUkVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIGNvbXBpbGVyIG9wdGlvbiB3b3JrcworQUNfREVGVU4oW19MVF9DT01QSUxFUl9PUFRJT05dLAorW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFskMV0sIFskMl0sCisgIFskMj1ubworICAgbTRfaWYoWyQ0XSwgLCBbYWNfb3V0ZmlsZT1jb25mdGVzdC4kYWNfb2JqZXh0XSwgW2FjX291dGZpbGU9JDRdKQorICAgZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CisgICBsdF9jb21waWxlcl9mbGFnPSIkMyIKKyAgICMgSW5zZXJ0IHRoZSBvcHRpb24gZWl0aGVyICgxKSBhZnRlciB0aGUgbGFzdCAqRkxBR1MgdmFyaWFibGUsIG9yCisgICAjICgyKSBiZWZvcmUgYSB3b3JkIGNvbnRhaW5pbmcgImNvbmZ0ZXN0LiIsIG9yICgzKSBhdCB0aGUgZW5kLgorICAgIyBOb3RlIHRoYXQgJGFjX2NvbXBpbGUgaXRzZWxmIGRvZXMgbm90IGNvbnRhaW4gYmFja3NsYXNoZXMgYW5kIGJlZ2lucworICAgIyB3aXRoIGEgZG9sbGFyIHNpZ24gKG5vdCBhIGh5cGhlbiksIHNvIHRoZSBlY2hvIHNob3VsZCB3b3JrIGNvcnJlY3RseS4KKyAgICMgVGhlIG9wdGlvbiBpcyByZWZlcmVuY2VkIHZpYSBhIHZhcmlhYmxlIHRvIGF2b2lkIGNvbmZ1c2luZyBzZWQuCisgICBsdF9jb21waWxlPWBlY2hvICIkYWNfY29tcGlsZSIgfCAkU0VEIFwKKyAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKKyAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAorICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQorICAgYWNfc3RhdHVzPSQ/CisgICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGVjaG8gIiRhc19tZTpfX29saW5lX186IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgIiRhY19vdXRmaWxlIjsgdGhlbgorICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAorICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3Mgb3RoZXIgdGhhbiB0aGUgdXN1YWwgb3V0cHV0LgorICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCisgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgorICAgICBpZiB0ZXN0ICEgLXMgY29uZnRlc3QuZXIyIHx8IGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgJDI9eWVzCisgICAgIGZpCisgICBmaQorICAgJFJNIGNvbmZ0ZXN0KgorXSkKKworaWYgdGVzdCB4IlskXSQyIiA9IHh5ZXM7IHRoZW4KKyAgICBtNF9pZihbJDVdLCAsIDosIFskNV0pCitlbHNlCisgICAgbTRfaWYoWyQ2XSwgLCA6LCBbJDZdKQorZmkKK10pIyBfTFRfQ09NUElMRVJfT1BUSU9OCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTElCVE9PTF9DT01QSUxFUl9PUFRJT05dLCBbX0xUX0NPTVBJTEVSX09QVElPTl0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfQ09NUElMRVJfT1BUSU9OXSwgW10pCisKKworIyBfTFRfTElOS0VSX09QVElPTihNRVNTQUdFLCBWQVJJQUJMRS1OQU1FLCBGTEFHUywKKyMgICAgICAgICAgICAgICAgICBbQUNUSU9OLVNVQ0NFU1NdLCBbQUNUSU9OLUZBSUxVUkVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIGxpbmtlciBvcHRpb24gd29ya3MKK0FDX0RFRlVOKFtfTFRfTElOS0VSX09QVElPTl0sCitbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorQUNfQ0FDSEVfQ0hFQ0soWyQxXSwgWyQyXSwKKyAgWyQyPW5vCisgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICAgTERGTEFHUz0iJExERkxBR1MgJDMiCisgICBlY2hvICIkbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgIGlmIChldmFsICRhY19saW5rIDI+Y29uZnRlc3QuZXJyKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dDsgdGhlbgorICAgICAjIFRoZSBsaW5rZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKKyAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCisgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgICAgIyBBcHBlbmQgYW55IGVycm9ycyB0byB0aGUgY29uZmlnLmxvZy4KKyAgICAgICBjYXQgY29uZnRlc3QuZXJyIDE+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgJEVDSE8gIlgkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gY29uZnRlc3QuZXhwCisgICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCisgICAgICAgaWYgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgICQyPXllcworICAgICAgIGZpCisgICAgIGVsc2UKKyAgICAgICAkMj15ZXMKKyAgICAgZmkKKyAgIGZpCisgICAkUk0gLXIgY29uZnRlc3QqCisgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorXSkKKworaWYgdGVzdCB4IlskXSQyIiA9IHh5ZXM7IHRoZW4KKyAgICBtNF9pZihbJDRdLCAsIDosIFskNF0pCitlbHNlCisgICAgbTRfaWYoWyQ1XSwgLCA6LCBbJDVdKQorZmkKK10pIyBfTFRfTElOS0VSX09QVElPTgorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xJQlRPT0xfTElOS0VSX09QVElPTl0sIFtfTFRfTElOS0VSX09QVElPTl0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfTElOS0VSX09QVElPTl0sIFtdKQorCisKKyMgTFRfQ01EX01BWF9MRU4KKyMtLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9DTURfTUFYX0xFTl0sCitbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorIyBmaW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzCitBQ19NU0dfQ0hFQ0tJTkcoW3RoZSBtYXhpbXVtIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzXSkKK0FDX0NBQ0hFX1ZBTChbbHRfY3Zfc3lzX21heF9jbWRfbGVuXSwgW2RubAorICBpPTAKKyAgdGVzdHN0cmluZz0iQUJDRCIKKworICBjYXNlICRidWlsZF9vcyBpbgorICBtc2Rvc2RqZ3BwKikKKyAgICAjIE9uIERKR1BQLCB0aGlzIHRlc3QgY2FuIGJsb3cgdXAgcHJldHR5IGJhZGx5IGR1ZSB0byBwcm9ibGVtcyBpbiBsaWJjCisgICAgIyAoYW55IHNpbmdsZSBhcmd1bWVudCBleGNlZWRpbmcgMjAwMCBieXRlcyBjYXVzZXMgYSBidWZmZXIgb3ZlcnJ1bgorICAgICMgZHVyaW5nIGdsb2IgZXhwYW5zaW9uKS4gIEV2ZW4gaWYgaXQgd2VyZSBmaXhlZCwgdGhlIHJlc3VsdCBvZiB0aGlzCisgICAgIyBjaGVjayB3b3VsZCBiZSBsYXJnZXIgdGhhbiBpdCBzaG91bGQgYmUuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTEyMjg4OyAgICAjIDEySyBpcyBhYm91dCByaWdodAorICAgIDs7CisKKyAgZ251KikKKyAgICAjIFVuZGVyIEdOVSBIdXJkLCB0aGlzIHRlc3QgaXMgbm90IHJlcXVpcmVkIGJlY2F1c2UgdGhlcmUgaXMKKyAgICAjIG5vIGxpbWl0IHRvIHRoZSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KKyAgICAjIExpYnRvb2wgd2lsbCBpbnRlcnByZXQgLTEgYXMgbm8gbGltaXQgd2hhdHNvZXZlcgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0tMTsKKyAgICA7OworCisgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCisgICAgIyBPbiBXaW45eC9NRSwgdGhpcyB0ZXN0IGJsb3dzIHVwIC0tIGl0IHN1Y2NlZWRzLCBidXQgdGFrZXMKKyAgICAjIGFib3V0IDUgbWludXRlcyBhcyB0aGUgdGVzdHN0cmluZyBncm93cyBleHBvbmVudGlhbGx5LgorICAgICMgV29yc2UsIHNpbmNlIDl4L01FIGFyZSBub3QgcHJlLWVtcHRpdmVseSBtdWx0aXRhc2tpbmcsCisgICAgIyB5b3UgZW5kIHVwIHdpdGggYSAiZnJvemVuIiBjb21wdXRlciwgZXZlbiB0aG91Z2ggd2l0aCBwYXRpZW5jZQorICAgICMgdGhlIHRlc3QgZXZlbnR1YWxseSBzdWNjZWVkcyAod2l0aCBhIG1heCBsaW5lIGxlbmd0aCBvZiAyNTZrKS4KKyAgICAjIEluc3RlYWQsIGxldCdzIGp1c3QgcHVudDogdXNlIHRoZSBtaW5pbXVtIGxpbmVsZW5ndGggcmVwb3J0ZWQgYnkKKyAgICAjIGFsbCBvZiB0aGUgc3VwcG9ydGVkIHBsYXRmb3JtczogODE5MiAob24gTlQvMksvWFApLgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyOworICAgIDs7CisKKyAgYW1pZ2FvcyopCisgICAgIyBPbiBBbWlnYU9TIHdpdGggcGRrc2gsIHRoaXMgdGVzdCB0YWtlcyBob3VycywgbGl0ZXJhbGx5LgorICAgICMgU28gd2UganVzdCBwdW50IGFuZCB1c2UgYSBtaW5pbXVtIGxpbmUgbGVuZ3RoIG9mIDgxOTIuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CisgICAgOzsKKworICBuZXRic2QqIHwgZnJlZWJzZCogfCBvcGVuYnNkKiB8IGRhcndpbiogfCBkcmFnb25mbHkqKQorICAgICMgVGhpcyBoYXMgYmVlbiBhcm91bmQgc2luY2UgMzg2QlNELCBhdCBsZWFzdC4gIExpa2VseSBmdXJ0aGVyLgorICAgIGlmIHRlc3QgLXggL3NiaW4vc3lzY3RsOyB0aGVuCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YC9zYmluL3N5c2N0bCAtbiBrZXJuLmFyZ21heGAKKyAgICBlbGlmIHRlc3QgLXggL3Vzci9zYmluL3N5c2N0bDsgdGhlbgorICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWAvdXNyL3NiaW4vc3lzY3RsIC1uIGtlcm4uYXJnbWF4YAorICAgIGVsc2UKKyAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj02NTUzNgkjIHVzYWJsZSBkZWZhdWx0IGZvciBhbGwgQlNEcworICAgIGZpCisgICAgIyBBbmQgYWRkIGEgc2FmZXR5IHpvbmUKKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcLyA0YAorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gZXhwciAkbHRfY3Zfc3lzX21heF9jbWRfbGVuIFwqIDNgCisgICAgOzsKKworICBpbnRlcml4KikKKyAgICAjIFdlIGtub3cgdGhlIHZhbHVlIDI2MjE0NCBhbmQgaGFyZGNvZGUgaXQgd2l0aCBhIHNhZmV0eSB6b25lIChsaWtlIEJTRCkKKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49MTk2NjA4CisgICAgOzsKKworICBvc2YqKQorICAgICMgRHIuIEhhbnMgRWtrZWhhcmQgUGxlc3NlciByZXBvcnRzIHNlZWluZyBhIGtlcm5lbCBwYW5pYyBydW5uaW5nIGNvbmZpZ3VyZQorICAgICMgZHVlIHRvIHRoaXMgdGVzdCB3aGVuIGV4ZWNfZGlzYWJsZV9hcmdfbGltaXQgaXMgMSBvbiBUcnU2NC4gSXQgaXMgbm90CisgICAgIyBuaWNlIHRvIGNhdXNlIGtlcm5lbCBwYW5pY3Mgc28gbGV0cyBhdm9pZCB0aGUgbG9vcCBiZWxvdy4KKyAgICAjIEZpcnN0IHNldCBhIHJlYXNvbmFibGUgZGVmYXVsdC4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49MTYzODQKKyAgICAjCisgICAgaWYgdGVzdCAteCAvc2Jpbi9zeXNjb25maWc7IHRoZW4KKyAgICAgIGNhc2UgYC9zYmluL3N5c2NvbmZpZyAtcSBwcm9jIGV4ZWNfZGlzYWJsZV9hcmdfbGltaXRgIGluCisgICAgICAgICoxKikgbHRfY3Zfc3lzX21heF9jbWRfbGVuPS0xIDs7CisgICAgICBlc2FjCisgICAgZmkKKyAgICA7OworICBzY28zLjJ2NSopCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTEwMjQwMAorICAgIDs7CisgIHN5c3Y1KiB8IHNjbzV2NiogfCBzeXN2NC4ydXcyKikKKyAgICBrYXJnbWF4PWBncmVwIEFSR19NQVggL2V0Yy9jb25mL2NmLmQvc3R1bmUgMj4vZGV2L251bGxgCisgICAgaWYgdGVzdCAtbiAiJGthcmdtYXgiOyB0aGVuCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGVjaG8gJGthcmdtYXggfCBzZWQgJ3MvLipbWwkgXV0vLydgCisgICAgZWxzZQorICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTMyNzY4CisgICAgZmkKKyAgICA7OworICAqKQorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gKGdldGNvbmYgQVJHX01BWCkgMj4gL2Rldi9udWxsYAorICAgIGlmIHRlc3QgLW4gIiRsdF9jdl9zeXNfbWF4X2NtZF9sZW4iOyB0aGVuCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcLyA0YAorICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXCogM2AKKyAgICBlbHNlCisgICAgICAjIE1ha2UgdGVzdHN0cmluZyBhIGxpdHRsZSBiaWdnZXIgYmVmb3JlIHdlIGRvIGFueXRoaW5nIHdpdGggaXQuCisgICAgICAjIGEgMUsgc3RyaW5nIHNob3VsZCBiZSBhIHJlYXNvbmFibGUgc3RhcnQuCisgICAgICBmb3IgaSBpbiAxIDIgMyA0IDUgNiA3IDggOyBkbworICAgICAgICB0ZXN0c3RyaW5nPSR0ZXN0c3RyaW5nJHRlc3RzdHJpbmcKKyAgICAgIGRvbmUKKyAgICAgIFNIRUxMPSR7U0hFTEwtJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH19CisgICAgICAjIElmIHRlc3QgaXMgbm90IGEgc2hlbGwgYnVpbHQtaW4sIHdlJ2xsIHByb2JhYmx5IGVuZCB1cCBjb21wdXRpbmcgYQorICAgICAgIyBtYXhpbXVtIGxlbmd0aCB0aGF0IGlzIG9ubHkgaGFsZiBvZiB0aGUgYWN0dWFsIG1heGltdW0gbGVuZ3RoLCBidXQKKyAgICAgICMgd2UgY2FuJ3QgdGVsbC4KKyAgICAgIHdoaWxlIHsgdGVzdCAiWCJgJFNIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvICJYJHRlc3RzdHJpbmckdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKKwkgICAgICAgICA9ICJYWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgorCSAgICAgIHRlc3QgJGkgIT0gMTcgIyAxLzIgTUIgc2hvdWxkIGJlIGVub3VnaAorICAgICAgZG8KKyAgICAgICAgaT1gZXhwciAkaSArIDFgCisgICAgICAgIHRlc3RzdHJpbmc9JHRlc3RzdHJpbmckdGVzdHN0cmluZworICAgICAgZG9uZQorICAgICAgIyBPbmx5IGNoZWNrIHRoZSBzdHJpbmcgbGVuZ3RoIG91dHNpZGUgdGhlIGxvb3AuCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgIlgkdGVzdHN0cmluZyIgOiAiLioiIDI+JjFgCisgICAgICB0ZXN0c3RyaW5nPQorICAgICAgIyBBZGQgYSBzaWduaWZpY2FudCBzYWZldHkgZmFjdG9yIGJlY2F1c2UgQysrIGNvbXBpbGVycyBjYW4gdGFjayBvbgorICAgICAgIyBtYXNzaXZlIGFtb3VudHMgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgYmVmb3JlIHBhc3NpbmcgdGhlbSB0byB0aGUKKyAgICAgICMgbGlua2VyLiAgSXQgYXBwZWFycyBhcyB0aG91Z2ggMS8yIGlzIGEgdXNhYmxlIHZhbHVlLgorICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXC8gMmAKKyAgICBmaQorICAgIDs7CisgIGVzYWMKK10pCitpZiB0ZXN0IC1uICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gOyB0aGVuCisgIEFDX01TR19SRVNVTFQoJGx0X2N2X3N5c19tYXhfY21kX2xlbikKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChub25lKQorZmkKK21heF9jbWRfbGVuPSRsdF9jdl9zeXNfbWF4X2NtZF9sZW4KK19MVF9ERUNMKFtdLCBbbWF4X2NtZF9sZW5dLCBbMF0sCisgICAgW1doYXQgaXMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgY29tbWFuZD9dKQorXSkjIExUX0NNRF9NQVhfTEVOCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTElCVE9PTF9TWVNfTUFYX0NNRF9MRU5dLCBbTFRfQ01EX01BWF9MRU5dKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19NQVhfQ01EX0xFTl0sIFtdKQorCisKKyMgX0xUX0hFQURFUl9ETEZDTgorIyAtLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0hFQURFUl9ETEZDTl0sCitbQUNfQ0hFQ0tfSEVBREVSUyhbZGxmY24uaF0sIFtdLCBbXSwgW0FDX0lOQ0xVREVTX0RFRkFVTFRdKWRubAorXSkjIF9MVF9IRUFERVJfRExGQ04KKworCisjIF9MVF9UUllfRExPUEVOX1NFTEYgKEFDVElPTi1JRi1UUlVFLCBBQ1RJT04tSUYtVFJVRS1XLVVTQ09SRSwKKyMgICAgICAgICAgICAgICAgICAgICAgQUNUSU9OLUlGLUZBTFNFLCBBQ1RJT04tSUYtQ1JPU1MtQ09NUElMSU5HKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX1RSWV9ETE9QRU5fU0VMRl0sCitbbTRfcmVxdWlyZShbX0xUX0hFQURFUl9ETEZDTl0pZG5sCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIFskNF0KK2Vsc2UKKyAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpZiBIQVZFX0RMRkNOX0gKKyNpbmNsdWRlIDxkbGZjbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaWZkZWYgUlRMRF9HTE9CQUwKKyMgIGRlZmluZSBMVF9ETEdMT0JBTAkJUlRMRF9HTE9CQUwKKyNlbHNlCisjICBpZmRlZiBETF9HTE9CQUwKKyMgICAgZGVmaW5lIExUX0RMR0xPQkFMCQlETF9HTE9CQUwKKyMgIGVsc2UKKyMgICAgZGVmaW5lIExUX0RMR0xPQkFMCQkwCisjICBlbmRpZgorI2VuZGlmCisKKy8qIFdlIG1heSBoYXZlIHRvIGRlZmluZSBMVF9ETExBWllfT1JfTk9XIGluIHRoZSBjb21tYW5kIGxpbmUgaWYgd2UKKyAgIGZpbmQgb3V0IGl0IGRvZXMgbm90IHdvcmsgaW4gc29tZSBwbGF0Zm9ybS4gKi8KKyNpZm5kZWYgTFRfRExMQVpZX09SX05PVworIyAgaWZkZWYgUlRMRF9MQVpZCisjICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCQlSVExEX0xBWlkKKyMgIGVsc2UKKyMgICAgaWZkZWYgRExfTEFaWQorIyAgICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCQlETF9MQVpZCisjICAgIGVsc2UKKyMgICAgICBpZmRlZiBSVExEX05PVworIyAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJUlRMRF9OT1cKKyMgICAgICBlbHNlCisjICAgICAgICBpZmRlZiBETF9OT1cKKyMgICAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJRExfTk9XCisjICAgICAgICBlbHNlCisjICAgICAgICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCTAKKyMgICAgICAgIGVuZGlmCisjICAgICAgZW5kaWYKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKKwordm9pZCBmbm9yZCgpIHsgaW50IGk9NDI7fQoraW50IG1haW4gKCkKK3sKKyAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CisgIGludCBzdGF0dXMgPSAkbHRfZGx1bmtub3duOworCisgIGlmIChzZWxmKQorICAgIHsKKyAgICAgIGlmIChkbHN5bSAoc2VsZiwiZm5vcmQiKSkgICAgICAgc3RhdHVzID0gJGx0X2Rsbm9fdXNjb3JlOworICAgICAgZWxzZSBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgIC8qIGRsY2xvc2UgKHNlbGYpOyAqLworICAgIH0KKyAgZWxzZQorICAgIHB1dHMgKGRsZXJyb3IgKCkpOworCisgIHJldHVybiBzdGF0dXM7Cit9XQorX0xUX0VPRgorICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9IDI+L2Rldi9udWxsOyB0aGVuCisgICAgKC4vY29uZnRlc3Q7IGV4aXQ7ICkgPiZBU19NRVNTQUdFX0xPR19GRCAyPi9kZXYvbnVsbAorICAgIGx0X3N0YXR1cz0kPworICAgIGNhc2UgeCRsdF9zdGF0dXMgaW4KKyAgICAgIHgkbHRfZGxub191c2NvcmUpICQxIDs7CisgICAgICB4JGx0X2RsbmVlZF91c2NvcmUpICQyIDs7CisgICAgICB4JGx0X2RsdW5rbm93bnx4KikgJDMgOzsKKyAgICBlc2FjCisgIGVsc2UgOgorICAgICMgY29tcGlsYXRpb24gZmFpbGVkCisgICAgJDMKKyAgZmkKK2ZpCitybSAtZnIgY29uZnRlc3QqCitdKSMgX0xUX1RSWV9ETE9QRU5fU0VMRgorCisKKyMgTFRfU1lTX0RMT1BFTl9TRUxGCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1NZU19ETE9QRU5fU0VMRl0sCitbbTRfcmVxdWlyZShbX0xUX0hFQURFUl9ETEZDTl0pZG5sCitpZiB0ZXN0ICJ4JGVuYWJsZV9kbG9wZW4iICE9IHh5ZXM7IHRoZW4KKyAgZW5hYmxlX2Rsb3Blbj11bmtub3duCisgIGVuYWJsZV9kbG9wZW5fc2VsZj11bmtub3duCisgIGVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWM9dW5rbm93bgorZWxzZQorICBsdF9jdl9kbG9wZW49bm8KKyAgbHRfY3ZfZGxvcGVuX2xpYnM9CisKKyAgY2FzZSAkaG9zdF9vcyBpbgorICBiZW9zKikKKyAgICBsdF9jdl9kbG9wZW49ImxvYWRfYWRkX29uIgorICAgIGx0X2N2X2Rsb3Blbl9saWJzPQorICAgIGx0X2N2X2Rsb3Blbl9zZWxmPXllcworICAgIDs7CisKKyAgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgbHRfY3ZfZGxvcGVuPSJMb2FkTGlicmFyeSIKKyAgICBsdF9jdl9kbG9wZW5fbGlicz0KKyAgICA7OworCisgIGN5Z3dpbiopCisgICAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iCisgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CisgICAgOzsKKworICBkYXJ3aW4qKQorICAjIGlmIGxpYmRsIGlzIGluc3RhbGxlZCB3ZSBuZWVkIHRvIGxpbmsgYWdhaW5zdCBpdAorICAgIEFDX0NIRUNLX0xJQihbZGxdLCBbZGxvcGVuXSwKKwkJW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCJdLFsKKyAgICBsdF9jdl9kbG9wZW49ImR5bGQiCisgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CisgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCisgICAgXSkKKyAgICA7OworCisgICopCisgICAgQUNfQ0hFQ0tfRlVOQyhbc2hsX2xvYWRdLAorCSAgW2x0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiXSwKKyAgICAgIFtBQ19DSEVDS19MSUIoW2RsZF0sIFtzaGxfbG9hZF0sCisJICAgIFtsdF9jdl9kbG9wZW49InNobF9sb2FkIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiXSwKKwlbQUNfQ0hFQ0tfRlVOQyhbZGxvcGVuXSwKKwkgICAgICBbbHRfY3ZfZGxvcGVuPSJkbG9wZW4iXSwKKwkgIFtBQ19DSEVDS19MSUIoW2RsXSwgW2Rsb3Blbl0sCisJCVtsdF9jdl9kbG9wZW49ImRsb3BlbiIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sZGwiXSwKKwkgICAgW0FDX0NIRUNLX0xJQihbc3ZsZF0sIFtkbG9wZW5dLAorCQkgIFtsdF9jdl9kbG9wZW49ImRsb3BlbiIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sc3ZsZCJdLAorCSAgICAgIFtBQ19DSEVDS19MSUIoW2RsZF0sIFtkbGRfbGlua10sCisJCSAgICBbbHRfY3ZfZGxvcGVuPSJkbGRfbGluayIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sZGxkIl0pCisJICAgICAgXSkKKwkgICAgXSkKKwkgIF0pCisJXSkKKyAgICAgIF0pCisgICAgOzsKKyAgZXNhYworCisgIGlmIHRlc3QgIngkbHRfY3ZfZGxvcGVuIiAhPSB4bm87IHRoZW4KKyAgICBlbmFibGVfZGxvcGVuPXllcworICBlbHNlCisgICAgZW5hYmxlX2Rsb3Blbj1ubworICBmaQorCisgIGNhc2UgJGx0X2N2X2Rsb3BlbiBpbgorICBkbG9wZW4pCisgICAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICAgIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2RsZmNuX2giID0geHllcyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1ESEFWRV9ETEZDTl9IIgorCisgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgICB3bD0kbHRfcHJvZ19jb21waWxlcl93bCBldmFsIExERkxBR1M9XCJcJExERkxBR1MgJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiCisKKyAgICBzYXZlX0xJQlM9IiRMSUJTIgorICAgIExJQlM9IiRsdF9jdl9kbG9wZW5fbGlicyAkTElCUyIKKworICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGEgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZl0sCisJICBsdF9jdl9kbG9wZW5fc2VsZiwgW2RubAorCSAgX0xUX1RSWV9ETE9QRU5fU0VMRigKKwkgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzLCBsdF9jdl9kbG9wZW5fc2VsZj15ZXMsCisJICAgIGx0X2N2X2Rsb3Blbl9zZWxmPW5vLCBsdF9jdl9kbG9wZW5fc2VsZj1jcm9zcykKKyAgICBdKQorCisgICAgaWYgdGVzdCAieCRsdF9jdl9kbG9wZW5fc2VsZiIgPSB4eWVzOyB0aGVuCisgICAgICB3bD0kbHRfcHJvZ19jb21waWxlcl93bCBldmFsIExERkxBR1M9XCJcJExERkxBR1MgJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljXCIKKyAgICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZl0sCisJICBsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMsIFtkbmwKKwkgIF9MVF9UUllfRExPUEVOX1NFTEYoCisJICAgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz15ZXMsIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz15ZXMsCisJICAgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz1ubywgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz1jcm9zcykKKyAgICAgIF0pCisgICAgZmkKKworICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKKyAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgIExJQlM9IiRzYXZlX0xJQlMiCisgICAgOzsKKyAgZXNhYworCisgIGNhc2UgJGx0X2N2X2Rsb3Blbl9zZWxmIGluCisgIHllc3xubykgZW5hYmxlX2Rsb3Blbl9zZWxmPSRsdF9jdl9kbG9wZW5fc2VsZiA7OworICAqKSBlbmFibGVfZGxvcGVuX3NlbGY9dW5rbm93biA7OworICBlc2FjCisKKyAgY2FzZSAkbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljIGluCisgIHllc3xubykgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz0kbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljIDs7CisgICopIGVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWM9dW5rbm93biA7OworICBlc2FjCitmaQorX0xUX0RFQ0woW2Rsb3Blbl9zdXBwb3J0XSwgW2VuYWJsZV9kbG9wZW5dLCBbMF0sCisJIFtXaGV0aGVyIGRsb3BlbiBpcyBzdXBwb3J0ZWRdKQorX0xUX0RFQ0woW2Rsb3Blbl9zZWxmXSwgW2VuYWJsZV9kbG9wZW5fc2VsZl0sIFswXSwKKwkgW1doZXRoZXIgZGxvcGVuIG9mIHByb2dyYW1zIGlzIHN1cHBvcnRlZF0pCitfTFRfREVDTChbZGxvcGVuX3NlbGZfc3RhdGljXSwgW2VuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWNdLCBbMF0sCisJIFtXaGV0aGVyIGRsb3BlbiBvZiBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtcyBpcyBzdXBwb3J0ZWRdKQorXSkjIExUX1NZU19ETE9QRU5fU0VMRgorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xJQlRPT0xfRExPUEVOX1NFTEZdLCBbTFRfU1lTX0RMT1BFTl9TRUxGXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9ETE9QRU5fU0VMRl0sIFtdKQorCisKKyMgX0xUX0NPTVBJTEVSX0NfTyhbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayB0byBzZWUgaWYgb3B0aW9ucyAtYyBhbmQgLW8gYXJlIHNpbXVsdGFuZW91c2x5IHN1cHBvcnRlZCBieSBjb21waWxlci4KKyMgVGhpcyBtYWNybyBkb2VzIG5vdCBoYXJkIGNvZGUgdGhlIGNvbXBpbGVyIGxpa2UgQUNfUFJPR19DQ19DX08uCittNF9kZWZ1bihbX0xUX0NPTVBJTEVSX0NfT10sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorbTRfcmVxdWlyZShbX0xUX1RBR19DT01QSUxFUl0pZG5sCitBQ19DQUNIRV9DSEVDSyhbaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4dF0sCisgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSldLAorICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPW5vCisgICAkUk0gLXIgY29uZnRlc3QgMj4vZGV2L251bGwKKyAgIG1rZGlyIGNvbmZ0ZXN0CisgICBjZCBjb25mdGVzdAorICAgbWtkaXIgb3V0CisgICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKworICAgbHRfY29tcGlsZXJfZmxhZz0iLW8gb3V0L2NvbmZ0ZXN0Mi4kYWNfb2JqZXh0IgorICAgIyBJbnNlcnQgdGhlIG9wdGlvbiBlaXRoZXIgKDEpIGFmdGVyIHRoZSBsYXN0ICpGTEFHUyB2YXJpYWJsZSwgb3IKKyAgICMgKDIpIGJlZm9yZSBhIHdvcmQgY29udGFpbmluZyAiY29uZnRlc3QuIiwgb3IgKDMpIGF0IHRoZSBlbmQuCisgICAjIE5vdGUgdGhhdCAkYWNfY29tcGlsZSBpdHNlbGYgZG9lcyBub3QgY29udGFpbiBiYWNrc2xhc2hlcyBhbmQgYmVnaW5zCisgICAjIHdpdGggYSBkb2xsYXIgc2lnbiAobm90IGEgaHlwaGVuKSwgc28gdGhlIGVjaG8gc2hvdWxkIHdvcmsgY29ycmVjdGx5LgorICAgbHRfY29tcGlsZT1gZWNobyAiJGFjX2NvbXBpbGUiIHwgJFNFRCBcCisgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCisgICAtZSAnczogW1teIF1dKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKKyAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPm91dC9jb25mdGVzdC5lcnIpCisgICBhY19zdGF0dXM9JD8KKyAgIGNhdCBvdXQvY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGVjaG8gIiRhc19tZTpfX29saW5lX186IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgb3V0L2NvbmZ0ZXN0Mi4kYWNfb2JqZXh0CisgICB0aGVuCisgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCisgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncworICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKKyAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIG91dC9jb25mdGVzdC5lcnIgPm91dC9jb25mdGVzdC5lcjIKKyAgICAgaWYgdGVzdCAhIC1zIG91dC9jb25mdGVzdC5lcjIgfHwgZGlmZiBvdXQvY29uZnRlc3QuZXhwIG91dC9jb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgIF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKT15ZXMKKyAgICAgZmkKKyAgIGZpCisgICBjaG1vZCB1K3cgLiAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgJFJNIGNvbmZ0ZXN0KgorICAgIyBTR0kgQysrIGNvbXBpbGVyIHdpbGwgY3JlYXRlIGRpcmVjdG9yeSBvdXQvaWlfZmlsZXMvIGZvcgorICAgIyB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uCisgICB0ZXN0IC1kIG91dC9paV9maWxlcyAmJiAkUk0gb3V0L2lpX2ZpbGVzLyogJiYgcm1kaXIgb3V0L2lpX2ZpbGVzCisgICAkUk0gb3V0LyogJiYgcm1kaXIgb3V0CisgICBjZCAuLgorICAgJFJNIC1yIGNvbmZ0ZXN0CisgICAkUk0gY29uZnRlc3QqCitdKQorX0xUX1RBR0RFQ0woW2NvbXBpbGVyX2Nfb10sIFtsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb10sIFsxXSwKKwlbRG9lcyBjb21waWxlciBzaW11bHRhbmVvdXNseSBzdXBwb3J0IC1jIGFuZCAtbyBvcHRpb25zP10pCitdKSMgX0xUX0NPTVBJTEVSX0NfTworCisKKyMgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MoW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gZG8gaGFyZCBsaW5rcyB0byBsb2NrIHNvbWUgZmlsZXMgaWYgbmVlZGVkCittNF9kZWZ1bihbX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1NdLAorW200X3JlcXVpcmUoW19MVF9FTkFCTEVfTE9DS10pZG5sCittNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK19MVF9DT01QSUxFUl9DX08oWyQxXSkKKworaGFyZF9saW5rcz0ibm90dGVzdGVkIgoraWYgdGVzdCAiJF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKSIgPSBubyAmJiB0ZXN0ICIkbmVlZF9sb2NrcyIgIT0gbm87IHRoZW4KKyAgIyBkbyBub3Qgb3ZlcndyaXRlIHRoZSB2YWx1ZSBvZiBuZWVkX2xvY2tzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyCisgIEFDX01TR19DSEVDS0lORyhbaWYgd2UgY2FuIGxvY2sgd2l0aCBoYXJkIGxpbmtzXSkKKyAgaGFyZF9saW5rcz15ZXMKKyAgJFJNIGNvbmZ0ZXN0KgorICBsbiBjb25mdGVzdC5hIGNvbmZ0ZXN0LmIgMj4vZGV2L251bGwgJiYgaGFyZF9saW5rcz1ubworICB0b3VjaCBjb25mdGVzdC5hCisgIGxuIGNvbmZ0ZXN0LmEgY29uZnRlc3QuYiAyPiY1IHx8IGhhcmRfbGlua3M9bm8KKyAgbG4gY29uZnRlc3QuYSBjb25mdGVzdC5iIDI+L2Rldi9udWxsICYmIGhhcmRfbGlua3M9bm8KKyAgQUNfTVNHX1JFU1VMVChbJGhhcmRfbGlua3NdKQorICBpZiB0ZXN0ICIkaGFyZF9saW5rcyIgPSBubzsgdGhlbgorICAgIEFDX01TR19XQVJOKFtgJENDJyBkb2VzIG5vdCBzdXBwb3J0IGAtYyAtbycsIHNvIGBtYWtlIC1qJyBtYXkgYmUgdW5zYWZlXSkKKyAgICBuZWVkX2xvY2tzPXdhcm4KKyAgZmkKK2Vsc2UKKyAgbmVlZF9sb2Nrcz1ubworZmkKK19MVF9ERUNMKFtdLCBbbmVlZF9sb2Nrc10sIFsxXSwgW011c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uP10pCitdKSMgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MKKworCisjIF9MVF9DSEVDS19PQkpESVIKKyMgLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DSEVDS19PQkpESVJdLAorW0FDX0NBQ0hFX0NIRUNLKFtmb3Igb2JqZGlyXSwgW2x0X2N2X29iamRpcl0sCitbcm0gLWYgLmxpYnMgMj4vZGV2L251bGwKK21rZGlyIC5saWJzIDI+L2Rldi9udWxsCitpZiB0ZXN0IC1kIC5saWJzOyB0aGVuCisgIGx0X2N2X29iamRpcj0ubGlicworZWxzZQorICAjIE1TLURPUyBkb2VzIG5vdCBhbGxvdyBmaWxlbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGEgZG90LgorICBsdF9jdl9vYmpkaXI9X2xpYnMKK2ZpCitybWRpciAubGlicyAyPi9kZXYvbnVsbF0pCitvYmpkaXI9JGx0X2N2X29iamRpcgorX0xUX0RFQ0woW10sIFtvYmpkaXJdLCBbMF0sCisgICAgICAgICBbVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzXSlkbmwKK200X3BhdHRlcm5fYWxsb3coW0xUX09CSkRJUl0pZG5sCitBQ19ERUZJTkVfVU5RVU9URUQoTFRfT0JKRElSLCAiJGx0X2N2X29iamRpci8iLAorICBbRGVmaW5lIHRvIHRoZSBzdWItZGlyZWN0b3J5IGluIHdoaWNoIGxpYnRvb2wgc3RvcmVzIHVuaW5zdGFsbGVkIGxpYnJhcmllcy5dKQorXSkjIF9MVF9DSEVDS19PQkpESVIKKworCisjIF9MVF9MSU5LRVJfSEFSRENPREVfTElCUEFUSChbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIGhhcmRjb2RpbmcgYXR0cmlidXRlcy4KK200X2RlZnVuKFtfTFRfTElOS0VSX0hBUkRDT0RFX0xJQlBBVEhdLAorW0FDX01TR19DSEVDS0lORyhbaG93IHRvIGhhcmRjb2RlIGxpYnJhcnkgcGF0aHMgaW50byBwcm9ncmFtc10pCitfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPQoraWYgdGVzdCAtbiAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIiB8fAorICAgdGVzdCAtbiAiJF9MVF9UQUdWQVIocnVucGF0aF92YXIsICQxKSIgfHwKKyAgIHRlc3QgIlgkX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKSIgPSAiWHllcyIgOyB0aGVuCisKKyAgIyBXZSBjYW4gaGFyZGNvZGUgbm9uLWV4aXN0ZW50IGRpcmVjdG9yaWVzLgorICBpZiB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKSIgIT0gbm8gJiYKKyAgICAgIyBJZiB0aGUgb25seSBtZWNoYW5pc20gdG8gYXZvaWQgaGFyZGNvZGluZyBpcyBzaGxpYnBhdGhfdmFyLCB3ZQorICAgICAjIGhhdmUgdG8gcmVsaW5rLCBvdGhlcndpc2Ugd2UgbWlnaHQgbGluayB3aXRoIGFuIGluc3RhbGxlZCBsaWJyYXJ5CisgICAgICMgd2hlbiB3ZSBzaG91bGQgYmUgbGlua2luZyB3aXRoIGEgeWV0LXRvLWJlLWluc3RhbGxlZCBvbmUKKyAgICAgIyMgdGVzdCAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpIiAhPSBubyAmJgorICAgICB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSkiICE9IG5vOyB0aGVuCisgICAgIyBMaW5raW5nIGFsd2F5cyBoYXJkY29kZXMgdGhlIHRlbXBvcmFyeSBsaWJyYXJ5IGRpcmVjdG9yeS4KKyAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPXJlbGluaworICBlbHNlCisgICAgIyBXZSBjYW4gbGluayB3aXRob3V0IGhhcmRjb2RpbmcsIGFuZCB3ZSBjYW4gaGFyZGNvZGUgbm9uZXhpc3RpbmcgZGlycy4KKyAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPWltbWVkaWF0ZQorICBmaQorZWxzZQorICAjIFdlIGNhbm5vdCBoYXJkY29kZSBhbnl0aGluZywgb3IgZWxzZSB3ZSBjYW4gb25seSBoYXJkY29kZSBleGlzdGluZworICAjIGRpcmVjdG9yaWVzLgorICBfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPXVuc3VwcG9ydGVkCitmaQorQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSldKQorCitpZiB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKSIgPSByZWxpbmsgfHwKKyAgIHRlc3QgIiRfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKSIgPSB5ZXM7IHRoZW4KKyAgIyBGYXN0IGluc3RhbGxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkCisgIGVuYWJsZV9mYXN0X2luc3RhbGw9bm8KK2VsaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgfHwKKyAgICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0gbm87IHRoZW4KKyAgIyBGYXN0IGluc3RhbGxhdGlvbiBpcyBub3QgbmVjZXNzYXJ5CisgIGVuYWJsZV9mYXN0X2luc3RhbGw9bmVlZGxlc3MKK2ZpCitfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2FjdGlvbl0sIFswXSwKKyAgICBbSG93IHRvIGhhcmRjb2RlIGEgc2hhcmVkIGxpYnJhcnkgcGF0aCBpbnRvIGFuIGV4ZWN1dGFibGVdKQorXSkjIF9MVF9MSU5LRVJfSEFSRENPREVfTElCUEFUSAorCisKKyMgX0xUX0NNRF9TVFJJUExJQgorIyAtLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0NNRF9TVFJJUExJQl0sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKQorc3RyaXBsaWI9CitvbGRfc3RyaXBsaWI9CitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgc3RyaXBwaW5nIGxpYnJhcmllcyBpcyBwb3NzaWJsZV0pCitpZiB0ZXN0IC1uICIkU1RSSVAiICYmICRTVFJJUCAtViAyPiYxIHwgJEdSRVAgIkdOVSBzdHJpcCIgPi9kZXYvbnVsbDsgdGhlbgorICB0ZXN0IC16ICIkb2xkX3N0cmlwbGliIiAmJiBvbGRfc3RyaXBsaWI9IiRTVFJJUCAtLXN0cmlwLWRlYnVnIgorICB0ZXN0IC16ICIkc3RyaXBsaWIiICYmIHN0cmlwbGliPSIkU1RSSVAgLS1zdHJpcC11bm5lZWRlZCIKKyAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK2Vsc2UKKyMgRklYTUUgLSBpbnNlcnQgc29tZSByZWFsIHRlc3RzLCBob3N0X29zIGlzbid0IHJlYWxseSBnb29kIGVub3VnaAorICBjYXNlICRob3N0X29zIGluCisgIGRhcndpbiopCisgICAgaWYgdGVzdCAtbiAiJFNUUklQIiA7IHRoZW4KKyAgICAgIHN0cmlwbGliPSIkU1RSSVAgLXgiCisgICAgICBvbGRfc3RyaXBsaWI9IiRTVFJJUCAtUyIKKyAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCisgICAgZWxzZQorICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorICAgIGZpCisgICAgOzsKKyAgKikKKyAgICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgOzsKKyAgZXNhYworZmkKK19MVF9ERUNMKFtdLCBbb2xkX3N0cmlwbGliXSwgWzFdLCBbQ29tbWFuZHMgdG8gc3RyaXAgbGlicmFyaWVzXSkKK19MVF9ERUNMKFtdLCBbc3RyaXBsaWJdLCBbMV0pCitdKSMgX0xUX0NNRF9TVFJJUExJQgorCisKKyMgX0xUX1NZU19EWU5BTUlDX0xJTktFUihbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUE9SVE1FIEZpbGwgaW4geW91ciBsZC5zbyBjaGFyYWN0ZXJpc3RpY3MKK200X2RlZnVuKFtfTFRfU1lTX0RZTkFNSUNfTElOS0VSXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCittNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX09CSkRVTVBdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK0FDX01TR19DSEVDS0lORyhbZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzXSkKK200X2lmKFskMV0sCisJW10sIFsKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBkYXJ3aW4qKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovLC9MUi8iIDs7CisgICAgKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LyIgOzsKKyAgZXNhYworICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAorICBpZiAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJzsnID4vZGV2L251bGwgOyB0aGVuCisgICAgIyBpZiB0aGUgcGF0aCBjb250YWlucyAiOyIgdGhlbiB3ZSBhc3N1bWUgaXQgdG8gYmUgdGhlIHNlcGFyYXRvcgorICAgICMgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdGhlIHN0YW5kYXJkIHBhdGggc2VwYXJhdG9yIChpLmUuICI6IikgLSBpdCBpcworICAgICMgYXNzdW1lZCB0aGF0IG5vIHBhcnQgb2YgYSBub3JtYWwgcGF0aG5hbWUgY29udGFpbnMgIjsiIGJ1dCB0aGF0IHNob3VsZAorICAgICMgb2theSBpbiB0aGUgcmVhbCB3b3JsZCB3aGVyZSAiOyIgaW4gZGlycGF0aHMgaXMgaXRzZWxmIHByb2JsZW1hdGljLgorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKyAgZWxzZQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgZmkKKyAgIyBPaywgbm93IHdlIGhhdmUgdGhlIHBhdGgsIHNlcGFyYXRlZCBieSBzcGFjZXMsIHdlIGNhbiBzdGVwIHRocm91Z2ggaXQKKyAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuCisgIGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPQorICBsdF9tdWx0aV9vc19kaXI9YCRDQyAkQ1BQRkxBR1MgJENGTEFHUyAkTERGTEFHUyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5IDI+L2Rldi9udWxsYAorICBmb3IgbHRfc3lzX3BhdGggaW4gJGx0X3NlYXJjaF9wYXRoX3NwZWM7IGRvCisgICAgaWYgdGVzdCAtZCAiJGx0X3N5c19wYXRoLyRsdF9tdWx0aV9vc19kaXIiOyB0aGVuCisgICAgICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aC8kbHRfbXVsdGlfb3NfZGlyIgorICAgIGVsc2UKKyAgICAgIHRlc3QgLWQgIiRsdF9zeXNfcGF0aCIgJiYgXAorCWx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoIgorICAgIGZpCisgIGRvbmUKKyAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjIHwgYXdrICcKK0JFR0lOIHtSUz0iICI7IEZTPSIvfFxuIjt9IHsKKyAgbHRfZm9vPSIiOworICBsdF9jb3VudD0wOworICBmb3IgKGx0X2kgPSBORjsgbHRfaSA+IDA7IGx0X2ktLSkgeworICAgIGlmICgkbHRfaSAhPSAiIiAmJiAkbHRfaSAhPSAiLiIpIHsKKyAgICAgIGlmICgkbHRfaSA9PSAiLi4iKSB7CisgICAgICAgIGx0X2NvdW50Kys7CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAobHRfY291bnQgPT0gMCkgeworICAgICAgICAgIGx0X2Zvbz0iLyIgJGx0X2kgbHRfZm9vOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGx0X2NvdW50LS07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKyAgaWYgKGx0X2ZvbyAhPSAiIikgeyBsdF9mcmVxW1tsdF9mb29dXSsrOyB9CisgIGlmIChsdF9mcmVxW1tsdF9mb29dXSA9PSAxKSB7IHByaW50IGx0X2ZvbzsgfQorfSdgCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gJGx0X3NlYXJjaF9wYXRoX3NwZWNgCitlbHNlCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKK2ZpXSkKK2xpYnJhcnlfbmFtZXNfc3BlYz0KK2xpYm5hbWVfc3BlYz0nbGliJG5hbWUnCitzb25hbWVfc3BlYz0KK3NocmV4dF9jbWRzPSIuc28iCitwb3N0aW5zdGFsbF9jbWRzPQorcG9zdHVuaW5zdGFsbF9jbWRzPQorZmluaXNoX2NtZHM9CitmaW5pc2hfZXZhbD0KK3NobGlicGF0aF92YXI9CitzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9dW5rbm93bgordmVyc2lvbl90eXBlPW5vbmUKK2R5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBsZC5zbyIKK3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliIgorbmVlZF9saWJfcHJlZml4PXVua25vd24KK2hhcmRjb2RlX2ludG9fbGlicz1ubworCisjIHdoZW4geW91IHNldCBuZWVkX3ZlcnNpb24gdG8gbm8sIG1ha2Ugc3VyZSBpdCBkb2VzIG5vdCBjYXVzZSAtc2V0X3ZlcnNpb24KKyMgZmxhZ3MgdG8gYmUgbGVmdCB3aXRob3V0IGFyZ3VtZW50cworbmVlZF92ZXJzaW9uPXVua25vd24KKworY2FzZSAkaG9zdF9vcyBpbgorYWl4MyopCisgIHZlcnNpb25fdHlwZT1saW51eAorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUuYScKKyAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICisKKyAgIyBBSVggMyBoYXMgbm8gdmVyc2lvbmluZyBzdXBwb3J0LCBzbyB3ZSBhcHBlbmQgYSBtYWpvciB2ZXJzaW9uIHRvIHRoZSBuYW1lLgorICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICA7OworCithaXhbWzQtOV1dKikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICMgQUlYIDUgc3VwcG9ydHMgSUE2NAorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIGVsc2UKKyAgICAjIFdpdGggR0NDIHVwIHRvIDIuOTUueCwgY29sbGVjdDIgd291bGQgY3JlYXRlIGFuIGltcG9ydCBmaWxlCisgICAgIyBmb3IgZGVwZW5kZW5jZSBsaWJyYXJpZXMuICBUaGUgaW1wb3J0IGZpbGUgd291bGQgc3RhcnQgd2l0aAorICAgICMgdGhlIGxpbmUgYCMhIC4nLiAgVGhpcyB3b3VsZCBjYXVzZSB0aGUgZ2VuZXJhdGVkIGxpYnJhcnkgdG8KKyAgICAjIGRlcGVuZCBvbiBgLicsIGFsd2F5cyBhbiBpbnZhbGlkIGxpYnJhcnkuICBUaGlzIHdhcyBmaXhlZCBpbgorICAgICMgZGV2ZWxvcG1lbnQgc25hcHNob3RzIG9mIEdDQyBwcmlvciB0byAzLjAuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4NCB8IGFpeDQuW1swMV1dIHwgYWl4NC5bWzAxXV0uKikKKyAgICAgIGlmIHsgZWNobyAnI2lmIF9fR05VQ19fID4gMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA5NyknCisJICAgZWNobyAnIHllcyAnCisJICAgZWNobyAnI2VuZGlmJzsgfSB8ICR7Q0N9IC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KKwk6CisgICAgICBlbHNlCisJY2FuX2J1aWxkX3NoYXJlZD1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgZXNhYworICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW4gbm90IGhhcmRjb2RlIGNvcnJlY3QKKyAgICAjIHNvbmFtZSBpbnRvIGV4ZWN1dGFibGUuIFByb2JhYmx5IHdlIGNhbiBhZGQgdmVyc2lvbmluZyBzdXBwb3J0IHRvCisgICAgIyBjb2xsZWN0Miwgc28gYWRkaXRpb25hbCBsaW5rcyBjYW4gYmUgdXNlZnVsIGluIGZ1dHVyZS4KKyAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKyAgICAgICMgSWYgdXNpbmcgcnVuIHRpbWUgbGlua2luZyAob24gQUlYIDQuMiBvciBsYXRlcikgdXNlIGxpYjxuYW1lPi5zbworICAgICAgIyBpbnN0ZWFkIG9mIGxpYjxuYW1lPi5hIHRvIGxldCBwZW9wbGUga25vdyB0aGF0IHRoZXNlIGFyZSBub3QKKyAgICAgICMgdHlwaWNhbCBBSVggc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIGVsc2UKKyAgICAgICMgV2UgcHJlc2VydmUgLmEgYXMgZXh0ZW5zaW9uIGZvciBzaGFyZWQgbGlicmFyaWVzIHRocm91Z2ggQUlYNC4yCisgICAgICAjIGFuZCBsYXRlciB3aGVuIHdlIGFyZSBub3QgZG9pbmcgcnVuIHRpbWUgbGlua2luZy4KKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uYSAkbGlibmFtZS5hJworICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICBmaQorICAgIHNobGlicGF0aF92YXI9TElCUEFUSAorICBmaQorICA7OworCithbWlnYW9zKikKKyAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgcG93ZXJwYykKKyAgICAjIFNpbmNlIEp1bHkgMjAwNyBBbWlnYU9TNCBvZmZpY2lhbGx5IHN1cHBvcnRzIC5zbyBsaWJyYXJpZXMuCisgICAgIyBXaGVuIGNvbXBpbGluZyB0aGUgZXhlY3V0YWJsZSwgYWRkIC11c2UtZHlubGQgLUxzb2JqczogdG8gdGhlIGNvbXBpbGVsaW5lLgorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIDs7CisgIG02OGspCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5peGxpYnJhcnkgJGxpYm5hbWUuYScKKyAgICAjIENyZWF0ZSAke2xpYm5hbWV9X2l4bGlicmFyeS5hIGVudHJpZXMgaW4gL3N5cy9saWJzLgorICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gJEVDSE8gIlgkbGliIiB8ICRYc2VkIC1lICdcJydzJV4uKi9cKFtbXi9dXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCisgICAgOzsKKyAgZXNhYworICA7OworCitiZW9zKikKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGxkLnNvIgorICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICA7OworCitic2RpW1s0NV1dKikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgJGxpYmRpcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvc2hsaWIgL3Vzci9saWIgL3Vzci9YMTEvbGliIC91c3IvY29udHJpYi9saWIgL2xpYiAvdXNyL2xvY2FsL2xpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9zaGxpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKKyAgIyB0aGUgZGVmYXVsdCBsZC5zby5jb25mIGFsc28gY29udGFpbnMgL3Vzci9jb250cmliL2xpYiBhbmQKKyAgIyAvdXNyL1gxMVI2L2xpYiAoL3Vzci9YMTEgaXMgYSBsaW5rIHRvIC91c3IvWDExUjYpLCBidXQgbGV0IHVzIGFsbG93CisgICMgbGlidG9vbCB0byBoYXJkLWNvZGUgdGhlc2UgaW50byBwcm9ncmFtcworICA7OworCitjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgIHZlcnNpb25fdHlwZT13aW5kb3dzCisgIHNocmV4dF9jbWRzPSIuZGxsIgorICBuZWVkX3ZlcnNpb249bm8KKyAgbmVlZF9saWJfcHJlZml4PW5vCisKKyAgY2FzZSAkR0NDLCRob3N0X29zIGluCisgIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWV+CisgICAgICBjaG1vZCBhK3ggXCRkbGRpci8kZGxuYW1lfgorICAgICAgaWYgdGVzdCAtbiAnXCcnJHN0cmlwbWUnXCcnICYmIHRlc3QgLW4gJ1wnJyRzdHJpcGxpYidcJyc7IHRoZW4KKyAgICAgICAgZXZhbCAnXCcnJHN0cmlwbGliIFwkZGxkaXIvJGRsbmFtZSdcJycgfHwgZXhpdCBcJD87CisgICAgICBmaScKKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKyAgICAgICAkUk0gXCRkbHBhdGgnCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgIGN5Z3dpbiopCisgICAgICAjIEN5Z3dpbiBETExzIHVzZSAnY3lnJyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKKyAgICAgIHNvbmFtZV9zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvY3lnLydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiAvbGliL3czMmFwaSAvbGliIC91c3IvbG9jYWwvbGliIgorICAgICAgOzsKKyAgICBtaW5ndyogfCBjZWdjYyopCisgICAgICAjIE1pbkdXIERMTHMgdXNlIHRyYWRpdGlvbmFsICdsaWInIHByZWZpeAorICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCAkR1JFUCAiXmxpYnJhcmllczoiIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAorICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgWyRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSCBwcmludGVkIGJ5CisgICAgICAgICMgbWluZ3cgZ2NjLCBidXQgd2UgYXJlIHJ1bm5pbmcgb24gQ3lnd2luLiBHY2MgcHJpbnRzIGl0cyBzZWFyY2gKKyAgICAgICAgIyBwYXRoIHdpdGggOyBzZXBhcmF0b3JzLCBhbmQgd2l0aCBkcml2ZSBsZXR0ZXJzLiBXZSBjYW4gaGFuZGxlIHRoZQorICAgICAgICAjIGRyaXZlIGxldHRlcnMgKGN5Z3dpbiBmaWxldXRpbHMgdW5kZXJzdGFuZHMgdGhlbSksIHNvIGxlYXZlIHRoZW0sCisgICAgICAgICMgZXNwZWNpYWxseSBhcyB3ZSBtaWdodCBwYXNzIGZpbGVzIGZvdW5kIHRoZXJlIHRvIGEgbWluZ3cgb2JqZHVtcCwKKyAgICAgICAgIyB3aGljaCB3b3VsZG4ndCB1bmRlcnN0YW5kIGEgY3lnd2luaWZpZWQgcGF0aC4gQWhoLgorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorICAgICAgZWxzZQorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgICAgZmkKKyAgICAgIDs7CisgICAgcHczMiopCisgICAgICAjIHB3MzIgRExMcyB1c2UgJ3B3JyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKworICAqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisgICAgOzsKKyAgZXNhYworICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgc2hsaWJwYXRoX3Zhcj1QQVRICisgIDs7CisKK2RhcndpbiogfCByaGFwc29keSopCisgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkeWxkIgorICB2ZXJzaW9uX3R5cGU9ZGFyd2luCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7bWFqb3J9JHNoYXJlZF9leHQgJHtsaWJuYW1lfSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke21ham9yfSRzaGFyZWRfZXh0JworICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIHNobGlicGF0aF92YXI9RFlMRF9MSUJSQVJZX1BBVEgKKyAgc2hyZXh0X2NtZHM9J2B0ZXN0IC4kbW9kdWxlID0gLnllcyAmJiBlY2hvIC5zbyB8fCBlY2hvIC5keWxpYmAnCittNF9pZihbJDFdLCBbXSxbCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAvdXNyL2xvY2FsL2xpYiJdKQorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL3Vzci9sb2NhbC9saWIgL2xpYiAvdXNyL2xpYicKKyAgOzsKKworZGd1eCopCisgIHZlcnNpb25fdHlwZT1saW51eAorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgOzsKKworZnJlZWJzZDEqKQorICBkeW5hbWljX2xpbmtlcj1ubworICA7OworCitmcmVlYnNkKiB8IGRyYWdvbmZseSopCisgICMgRHJhZ29uRmx5IGRvZXMgbm90IGhhdmUgYW91dC4gIFdoZW4vaWYgdGhleSBpbXBsZW1lbnQgYSBuZXcKKyAgIyB2ZXJzaW9uaW5nIG1lY2hhbmlzbSwgYWRqdXN0IHRoaXMuCisgIGlmIHRlc3QgLXggL3Vzci9iaW4vb2JqZm9ybWF0OyB0aGVuCisgICAgb2JqZm9ybWF0PWAvdXNyL2Jpbi9vYmpmb3JtYXRgCisgIGVsc2UKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgZnJlZWJzZFtbMTIzXV0qKSBvYmpmb3JtYXQ9YW91dCA7OworICAgICopIG9iamZvcm1hdD1lbGYgOzsKKyAgICBlc2FjCisgIGZpCisgIHZlcnNpb25fdHlwZT1mcmVlYnNkLSRvYmpmb3JtYXQKKyAgY2FzZSAkdmVyc2lvbl90eXBlIGluCisgICAgZnJlZWJzZC1lbGYqKQorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgICBuZWVkX3ZlcnNpb249bm8KKyAgICAgIG5lZWRfbGliX3ByZWZpeD1ubworICAgICAgOzsKKyAgICBmcmVlYnNkLSopCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgICAgIG5lZWRfdmVyc2lvbj15ZXMKKyAgICAgIDs7CisgIGVzYWMKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgY2FzZSAkaG9zdF9vcyBpbgorICBmcmVlYnNkMiopCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgIDs7CisgIGZyZWVic2QzLltbMDFdXSogfCBmcmVlYnNkZWxmMy5bWzAxXV0qKQorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICAgOzsKKyAgZnJlZWJzZDMuW1syLTldXSogfCBmcmVlYnNkZWxmMy5bWzItOV1dKiB8IFwKKyAgZnJlZWJzZDQuW1swLTVdXSB8IGZyZWVic2RlbGY0LltbMC01XV0gfCBmcmVlYnNkNC4xLjEgfCBmcmVlYnNkZWxmNC4xLjEpCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgIDs7CisgICopICMgZnJvbSA0LjYgb24sIGFuZCBEcmFnb25GbHkKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgIDs7CisgIGVzYWMKKyAgOzsKKworZ251KikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIDs7CisKK2hwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQorICAjIEdpdmUgYSBzb25hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgbWFqb3IgdmVyc2lvbiBzbyB0aGF0IGRsZC5zbCByZWZ1c2VzIHRvCisgICMgbGluayBhZ2FpbnN0IG90aGVyIHZlcnNpb25zLgorICB2ZXJzaW9uX3R5cGU9c3Vub3MKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBjYXNlICRob3N0X2NwdSBpbgorICBpYTY0KikKKyAgICBzaHJleHRfY21kcz0nLnNvJworICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgZGxkLnNvIgorICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcyAjIFVubGVzcyArbm9lbnZ2YXIgaXMgc3BlY2lmaWVkLgorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICAgaWYgdGVzdCAiWCRIUFVYX0lBNjRfTU9ERSIgPSBYMzI7IHRoZW4KKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvaHB1eDMyIC91c3IvbG9jYWwvbGliL2hwdXgzMiAvdXNyL2xvY2FsL2xpYiIKKyAgICBlbHNlCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL2hwdXg2NCAvdXNyL2xvY2FsL2xpYi9ocHV4NjQiCisgICAgZmkKKyAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCisgICAgOzsKKyAgaHBwYSo2NCopCisgICAgc2hyZXh0X2NtZHM9Jy5zbCcKKyAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbCIKKyAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSCAjIEhvdyBzaG91bGQgd2UgaGFuZGxlIFNITElCX1BBVEgKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzICMgVW5sZXNzICtub2VudnZhciBpcyBzcGVjaWZpZWQuCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL3BhMjBfNjQgL3Vzci9jY3MvbGliL3BhMjBfNjQiCisgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYworICAgIDs7CisgICopCisgICAgc2hyZXh0X2NtZHM9Jy5zbCcKKyAgICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgZGxkLnNsIgorICAgIHNobGlicGF0aF92YXI9U0hMSUJfUEFUSAorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubyAjICtzIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBTSExJQl9QQVRICisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICA7OworICBlc2FjCisgICMgSFAtVVggcnVucyAqcmVhbGx5KiBzbG93bHkgdW5sZXNzIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG1vZGUgNTU1LgorICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA1NTUgJGxpYicKKyAgOzsKKworaW50ZXJpeFtbMy05XV0qKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBkeW5hbWljX2xpbmtlcj0nSW50ZXJpeCAzLnggbGQuc28uMSAoUEUsIGxpa2UgRUxGKScKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKworaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIG5vbnN0b3B1eCopIHZlcnNpb25fdHlwZT1ub25zdG9wdXggOzsKKyAgICAqKQorCWlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkJdmVyc2lvbl90eXBlPWxpbnV4CisJZWxzZQorCQl2ZXJzaW9uX3R5cGU9aXJpeAorCWZpIDs7CisgIGVzYWMKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgaXJpeDUqIHwgbm9uc3RvcHV4KikKKyAgICBsaWJzdWZmPSBzaGxpYnN1ZmY9CisgICAgOzsKKyAgKikKKyAgICBjYXNlICRMRCBpbiAjIGxpYnRvb2wubTQgd2lsbCBhZGQgb25lIG9mIHRoZXNlIHN3aXRjaGVzIHRvIExECisgICAgKi0zMnwqIi0zMiAifCotbWVsZjMyYnNtaXB8KiItbWVsZjMyYnNtaXAgIikKKyAgICAgIGxpYnN1ZmY9IHNobGlic3VmZj0gbGlibWFnaWM9MzItYml0OzsKKyAgICAqLW4zMnwqIi1uMzIgInwqLW1lbGYzMmJtaXBuMzJ8KiItbWVsZjMyYm1pcG4zMiAiKQorICAgICAgbGlic3VmZj0zMiBzaGxpYnN1ZmY9TjMyIGxpYm1hZ2ljPU4zMjs7CisgICAgKi02NHwqIi02NCAifCotbWVsZjY0Ym1pcHwqIi1tZWxmNjRibWlwICIpCisgICAgICBsaWJzdWZmPTY0IHNobGlic3VmZj02NCBsaWJtYWdpYz02NC1iaXQ7OworICAgICopIGxpYnN1ZmY9IHNobGlic3VmZj0gbGlibWFnaWM9bmV2ZXItbWF0Y2g7OworICAgIGVzYWMKKyAgICA7OworICBlc2FjCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWSR7c2hsaWJzdWZmfV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJHtsaWJzdWZmfSAvbGliJHtsaWJzdWZmfSAvdXNyL2xvY2FsL2xpYiR7bGlic3VmZn0iCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiR7bGlic3VmZn0gL2xpYiR7bGlic3VmZn0iCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKworIyBObyBzaGFyZWQgbGliIHN1cHBvcnQgZm9yIExpbnV4IG9sZGxkLCBhb3V0LCBvciBjb2ZmLgorbGludXgqb2xkbGQqIHwgbGludXgqYW91dCogfCBsaW51eCpjb2ZmKikKKyAgZHluYW1pY19saW5rZXI9bm8KKyAgOzsKKworIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgorbGludXgqIHwgaypic2QqLWdudSkKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1uICRsaWJkaXInCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICAjIFNvbWUgYmludXRpbHMgbGQgYXJlIHBhdGNoZWQgdG8gc2V0IERUX1JVTlBBVEgKKyAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgIHNhdmVfbGliZGlyPSRsaWJkaXIKKyAgZXZhbCAibGliZGlyPS9mb287IHdsPVwiJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpXCI7IFwKKyAgICAgICBMREZMQUdTPVwiXCRMREZMQUdTICRfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKVwiIgorICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCisgICAgW0FTX0lGKFsgKCRPQkpEVU1QIC1wIGNvbmZ0ZXN0JGFjX2V4ZWV4dCkgMj4vZGV2L251bGwgfCBncmVwICJSVU5QQVRILiokbGliZGlyIiA+L2Rldi9udWxsXSwKKyAgICAgICBbc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllc10pXSkKKyAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCisgIGxpYmRpcj0kc2F2ZV9saWJkaXIKKworICAjIFRoaXMgaW1wbGllcyBubyBmYXN0X2luc3RhbGwsIHdoaWNoIGlzIHVuYWNjZXB0YWJsZS4KKyAgIyBTb21lIHJld29yayB3aWxsIGJlIG5lZWRlZCB0byBhbGxvdyBmb3IgZmFzdF9pbnN0YWxsCisgICMgYmVmb3JlIHRoaXMgY2FuIGJlIGVuYWJsZWQuCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKworICAjIEFwcGVuZCBsZC5zby5jb25mIGNvbnRlbnRzIHRvIHRoZSBzZWFyY2ggcGF0aAorICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFxbJF0yKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcWyRdMDsgc2tpcCA9IDA7IH0nIDwgL2V0Yy9sZC5zby5jb25mIHwgJFNFRCAtZSAncy8jLiovLzsvXlsJIF0qaHdjYXBbCSBdL2Q7cy9bOiwJXS8gL2c7cy89W149XSokLy87cy89W149IF0qIC8gL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCisgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgJGx0X2xkX2V4dHJhIgorICBmaQorCisgICMgV2UgdXNlZCB0byB0ZXN0IGZvciAvbGliL2xkLnNvLjEgYW5kIGRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyBvbgorICAjIHBvd2VycGMsIGJlY2F1c2UgTWtMaW51eCBvbmx5IHN1cHBvcnRlZCBzaGFyZWQgbGlicmFyaWVzIHdpdGggdGhlCisgICMgR05VIGR5bmFtaWMgbGlua2VyLiAgU2luY2UgdGhpcyB3YXMgYnJva2VuIHdpdGggY3Jvc3MgY29tcGlsZXJzLAorICAjIG1vc3QgcG93ZXJwYy1saW51eCBib3hlcyBzdXBwb3J0IGR5bmFtaWMgbGlua2luZyB0aGVzZSBkYXlzIGFuZAorICAjIHBlb3BsZSBjYW4gYWx3YXlzIC0tZGlzYWJsZS1zaGFyZWQsIHRoZSB0ZXN0IHdhcyByZW1vdmVkLCBhbmQgd2UKKyAgIyBhc3N1bWUgdGhlIEdOVS9MaW51eCBkeW5hbWljIGxpbmtlciBpcyBpbiB1c2UuCisgIGR5bmFtaWNfbGlua2VyPSdHTlUvTGludXggbGQuc28nCisgIDs7CisKK25ldGJzZCopCisgIHZlcnNpb25fdHlwZT1zdW5vcworICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbSAkbGliZGlyJworICAgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgKGEub3V0KSBsZC5zbycKKyAgZWxzZQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICBkeW5hbWljX2xpbmtlcj0nTmV0QlNEIGxkLmVsZl9zbycKKyAgZmkKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIDs7CisKK25ld3NvczYpCisgIHZlcnNpb25fdHlwZT1saW51eAorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICA7OworCisqbnRvKiB8ICpxbngqKQorICB2ZXJzaW9uX3R5cGU9cW54CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIGR5bmFtaWNfbGlua2VyPSdsZHFueC5zbycKKyAgOzsKKworb3BlbmJzZCopCisgIHZlcnNpb25fdHlwZT1zdW5vcworICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIiCisgIG5lZWRfbGliX3ByZWZpeD1ubworICAjIFNvbWUgb2xkZXIgdmVyc2lvbnMgb2YgT3BlbkJTRCAoMy4zIGF0IGxlYXN0KSAqZG8qIG5lZWQgdmVyc2lvbmVkIGxpYnMuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBvcGVuYnNkMy4zIHwgb3BlbmJzZDMuMy4qKQluZWVkX3ZlcnNpb249eWVzIDs7CisgICAgKikJCQkJbmVlZF92ZXJzaW9uPW5vICA7OworICBlc2FjCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1tICRsaWJkaXInCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBvcGVuYnNkMi5bWzg5XV0gfCBvcGVuYnNkMi5bWzg5XV0uKikKKwlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKwk7OworICAgICAgKikKKwlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisJOzsKKyAgICAgIGVzYWMKKyAgZWxzZQorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgZmkKKyAgOzsKKworb3MyKikKKyAgbGlibmFtZV9zcGVjPSckbmFtZScKKyAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fSAkbGlibmFtZS5hJworICBkeW5hbWljX2xpbmtlcj0nT1MvMiBsZC5leGUnCisgIHNobGlicGF0aF92YXI9TElCUEFUSAorICA7OworCitvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgIHZlcnNpb25fdHlwZT1vc2YKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL3NobGliIC91c3IvY2NzL2xpYiAvdXNyL2xpYi9jbXBscnMvY2MgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIgL3Zhci9zaGxpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiCisgIDs7CisKK3Jkb3MqKQorICBkeW5hbWljX2xpbmtlcj1ubworICA7OworCitzb2xhcmlzKikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAjIGxkZCBjb21wbGFpbnMgdW5sZXNzIGxpYnJhcmllcyBhcmUgZXhlY3V0YWJsZQorICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCAreCAkbGliJworICA7OworCitzdW5vczQqKQorICB2ZXJzaW9uX3R5cGU9c3Vub3MKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovdXNyL2V0YyIgbGRjb25maWcgJGxpYmRpcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgbmVlZF9saWJfcHJlZml4PW5vCisgIGZpCisgIG5lZWRfdmVyc2lvbj15ZXMKKyAgOzsKKworc3lzdjQgfCBzeXN2NC4zKikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBjYXNlICRob3N0X3ZlbmRvciBpbgorICAgIHNuaSkKKyAgICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICAgICAgbmVlZF9saWJfcHJlZml4PW5vCisgICAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAorICAgICAgOzsKKyAgICBzaWVtZW5zKQorICAgICAgbmVlZF9saWJfcHJlZml4PW5vCisgICAgICA7OworICAgIG1vdG9yb2xhKQorICAgICAgbmVlZF9saWJfcHJlZml4PW5vCisgICAgICBuZWVkX3ZlcnNpb249bm8KKyAgICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPScvbGliIC91c3IvbGliIC91c3IvY2NzL2xpYicKKyAgICAgIDs7CisgIGVzYWMKKyAgOzsKKworc3lzdjQqTVAqKQorICBpZiB0ZXN0IC1kIC91c3IvbmVjIDt0aGVuCisgICAgdmVyc2lvbl90eXBlPWxpbnV4CisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9LiRtYWpvcicKKyAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBmaQorICA7OworCitzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKKyAgdmVyc2lvbl90eXBlPWZyZWVic2QtZWxmCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPScvdXNyL2xvY2FsL2xpYiAvdXNyL2dudS9saWIgL3Vzci9jY3MvbGliIC91c3IvbGliIC9saWInCisgIGVsc2UKKyAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy91c3IvY2NzL2xpYiAvdXNyL2xpYicKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBzY28zLjJ2NSopCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAvbGliIgorCTs7CisgICAgZXNhYworICBmaQorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL3Vzci9saWInCisgIDs7CisKK3RwZiopCisgICMgVFBGIGlzIGEgY3Jvc3MtdGFyZ2V0IG9ubHkuICBQcmVmZXJyZWQgY3Jvc3MtaG9zdCA9IEdOVS9MaW51eC4KKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIDs7CisKK3V0czQqKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIDs7CisKKyopCisgIGR5bmFtaWNfbGlua2VyPW5vCisgIDs7Citlc2FjCitBQ19NU0dfUkVTVUxUKFskZHluYW1pY19saW5rZXJdKQordGVzdCAiJGR5bmFtaWNfbGlua2VyIiA9IG5vICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KKwordmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9IlBBVEggJHNobGlicGF0aF92YXIgJHJ1bnBhdGhfdmFyIgoraWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9IiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayBHQ0NfRVhFQ19QUkVGSVggQ09NUElMRVJfUEFUSCBMSUJSQVJZX1BBVEgiCitmaQorCitpZiB0ZXN0ICIke2x0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYytzZXR9IiA9IHNldDsgdGhlbgorICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRsdF9jdl9zeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiCitmaQoraWYgdGVzdCAiJHtsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYytzZXR9IiA9IHNldDsgdGhlbgorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIgorZmkKKworX0xUX0RFQ0woW10sIFt2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGlua10sIFsxXSwKKyAgICBbVmFyaWFibGVzIHdob3NlIHZhbHVlcyBzaG91bGQgYmUgc2F2ZWQgaW4gbGlidG9vbCB3cmFwcGVyIHNjcmlwdHMgYW5kCisgICAgcmVzdG9yZWQgYXQgbGluayB0aW1lXSkKK19MVF9ERUNMKFtdLCBbbmVlZF9saWJfcHJlZml4XSwgWzBdLAorICAgIFtEbyB3ZSBuZWVkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXM/XSkKK19MVF9ERUNMKFtdLCBbbmVlZF92ZXJzaW9uXSwgWzBdLCBbRG8gd2UgbmVlZCBhIHZlcnNpb24gZm9yIGxpYnJhcmllcz9dKQorX0xUX0RFQ0woW10sIFt2ZXJzaW9uX3R5cGVdLCBbMF0sIFtMaWJyYXJ5IHZlcnNpb25pbmcgdHlwZV0pCitfTFRfREVDTChbXSwgW3J1bnBhdGhfdmFyXSwgWzBdLCAgW1NoYXJlZCBsaWJyYXJ5IHJ1bnRpbWUgcGF0aCB2YXJpYWJsZV0pCitfTFRfREVDTChbXSwgW3NobGlicGF0aF92YXJdLCBbMF0sW1NoYXJlZCBsaWJyYXJ5IHBhdGggdmFyaWFibGVdKQorX0xUX0RFQ0woW10sIFtzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGhdLCBbMF0sCisgICAgW0lzIHNobGlicGF0aCBzZWFyY2hlZCBiZWZvcmUgdGhlIGhhcmQtY29kZWQgbGlicmFyeSBzZWFyY2ggcGF0aD9dKQorX0xUX0RFQ0woW10sIFtsaWJuYW1lX3NwZWNdLCBbMV0sIFtGb3JtYXQgb2YgbGlicmFyeSBuYW1lIHByZWZpeF0pCitfTFRfREVDTChbXSwgW2xpYnJhcnlfbmFtZXNfc3BlY10sIFsxXSwKKyAgICBbW0xpc3Qgb2YgYXJjaGl2ZSBuYW1lcy4gIEZpcnN0IG5hbWUgaXMgdGhlIHJlYWwgb25lLCB0aGUgcmVzdCBhcmUgbGlua3MuCisgICAgVGhlIGxhc3QgbmFtZSBpcyB0aGUgb25lIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3aXRoIC1sTkFNRV1dKQorX0xUX0RFQ0woW10sIFtzb25hbWVfc3BlY10sIFsxXSwKKyAgICBbW1RoZSBjb2RlZCBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBuYW1lXV0pCitfTFRfREVDTChbXSwgW3Bvc3RpbnN0YWxsX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmQgdG8gdXNlIGFmdGVyIGluc3RhbGxhdGlvbiBvZiBhIHNoYXJlZCBhcmNoaXZlXSkKK19MVF9ERUNMKFtdLCBbcG9zdHVuaW5zdGFsbF9jbWRzXSwgWzJdLAorICAgIFtDb21tYW5kIHRvIHVzZSBhZnRlciB1bmluc3RhbGxhdGlvbiBvZiBhIHNoYXJlZCBhcmNoaXZlXSkKK19MVF9ERUNMKFtdLCBbZmluaXNoX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmRzIHVzZWQgdG8gZmluaXNoIGEgbGlidG9vbCBsaWJyYXJ5IGluc3RhbGxhdGlvbiBpbiBhIGRpcmVjdG9yeV0pCitfTFRfREVDTChbXSwgW2ZpbmlzaF9ldmFsXSwgWzFdLAorICAgIFtbQXMgImZpbmlzaF9jbWRzIiwgZXhjZXB0IGEgc2luZ2xlIHNjcmlwdCBmcmFnbWVudCB0byBiZSBldmFsZWQgYnV0CisgICAgbm90IHNob3duXV0pCitfTFRfREVDTChbXSwgW2hhcmRjb2RlX2ludG9fbGlic10sIFswXSwKKyAgICBbV2hldGhlciB3ZSBzaG91bGQgaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpbnRvIGxpYnJhcmllc10pCitfTFRfREVDTChbXSwgW3N5c19saWJfc2VhcmNoX3BhdGhfc3BlY10sIFsyXSwKKyAgICBbQ29tcGlsZS10aW1lIHN5c3RlbSBzZWFyY2ggcGF0aCBmb3IgbGlicmFyaWVzXSkKK19MVF9ERUNMKFtdLCBbc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNdLCBbMl0sCisgICAgW1J1bi10aW1lIHN5c3RlbSBzZWFyY2ggcGF0aCBmb3IgbGlicmFyaWVzXSkKK10pIyBfTFRfU1lTX0RZTkFNSUNfTElOS0VSCisKKworIyBfTFRfUEFUSF9UT09MX1BSRUZJWChUT09MKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBmaW5kIGEgZmlsZSBwcm9ncmFtIHdoaWNoIGNhbiByZWNvZ25pemUgc2hhcmVkIGxpYnJhcnkKK0FDX0RFRlVOKFtfTFRfUEFUSF9UT09MX1BSRUZJWF0sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorQUNfTVNHX0NIRUNLSU5HKFtmb3IgJDFdKQorQUNfQ0FDSEVfVkFMKGx0X2N2X3BhdGhfTUFHSUNfQ01ELAorW2Nhc2UgJE1BR0lDX0NNRCBpbgorW1tcXC8qXSB8ICA/OltcXC9dKl0pCisgIGx0X2N2X3BhdGhfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyopCisgIGx0X3NhdmVfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIgorICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2RubCAkYWNfZHVtbXkgZm9yY2VzIHNwbGl0dGluZyBvbiBjb25zdGFudCB1c2VyLXN1cHBsaWVkIHBhdGhzLgorZG5sIFBPU0lYLjIgd29yZCBzcGxpdHRpbmcgaXMgZG9uZSBvbmx5IG9uIHRoZSBvdXRwdXQgb2Ygd29yZCBleHBhbnNpb25zLAorZG5sIG5vdCBldmVyeSB3b3JkLiAgVGhpcyBjbG9zZXMgYSBsb25nc3RhbmRpbmcgc2ggc2VjdXJpdHkgaG9sZS4KKyAgYWNfZHVtbXk9Im00X2lmKFskMl0sICwgJFBBVEgsIFskMl0pIgorICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kMTsgdGhlbgorICAgICAgbHRfY3ZfcGF0aF9NQUdJQ19DTUQ9IiRhY19kaXIvJDEiCisgICAgICBpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY190ZXN0X2ZpbGUiOyB0aGVuCisJY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KKwkiZmlsZV9tYWdpYyAiKikKKwkgIGZpbGVfbWFnaWNfcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiZmlsZV9tYWdpYyBcKC4qXCkiYAorCSAgTUFHSUNfQ01EPSIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiCisJICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcJGZpbGVfbWFnaWNfdGVzdF9maWxlIDI+IC9kZXYvbnVsbCB8CisJICAgICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCisJICAgIDoKKwkgIGVsc2UKKwkgICAgY2F0IDw8X0xUX0VPRiAxPiYyCisKKyoqKiBXYXJuaW5nOiB0aGUgY29tbWFuZCBsaWJ0b29sIHVzZXMgdG8gZGV0ZWN0IHNoYXJlZCBsaWJyYXJpZXMsCisqKiogJGZpbGVfbWFnaWNfY21kLCBwcm9kdWNlcyBvdXRwdXQgdGhhdCBsaWJ0b29sIGNhbm5vdCByZWNvZ25pemUuCisqKiogVGhlIHJlc3VsdCBpcyB0aGF0IGxpYnRvb2wgbWF5IGZhaWwgdG8gcmVjb2duaXplIHNoYXJlZCBsaWJyYXJpZXMKKyoqKiBhcyBzdWNoLiAgVGhpcyB3aWxsIGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMgdGhhdAorKioqIGRlcGVuZCBvbiBzaGFyZWQgbGlicmFyaWVzLCBidXQgcHJvZ3JhbXMgbGlua2VkIHdpdGggc3VjaCBsaWJ0b29sCisqKiogbGlicmFyaWVzIHdpbGwgd29yayByZWdhcmRsZXNzIG9mIHRoaXMgcHJvYmxlbS4gIE5ldmVydGhlbGVzcywgeW91CisqKiogbWF5IHdhbnQgdG8gcmVwb3J0IHRoZSBwcm9ibGVtIHRvIHlvdXIgc3lzdGVtIG1hbmFnZXIgYW5kL29yIHRvCisqKiogYnVnLWxpYnRvb2xAZ251Lm9yZworCitfTFRfRU9GCisJICBmaSA7OworCWVzYWMKKyAgICAgIGZpCisgICAgICBicmVhaworICAgIGZpCisgIGRvbmUKKyAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgIE1BR0lDX0NNRD0iJGx0X3NhdmVfTUFHSUNfQ01EIgorICA7OworZXNhY10pCitNQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKK2lmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCisgIEFDX01TR19SRVNVTFQoJE1BR0lDX0NNRCkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChubykKK2ZpCitfTFRfREVDTChbXSwgW01BR0lDX0NNRF0sIFswXSwKKwkgW1VzZWQgdG8gZXhhbWluZSBsaWJyYXJpZXMgd2hlbiBmaWxlX21hZ2ljX2NtZCBiZWdpbnMgd2l0aCAiZmlsZSJdKWRubAorXSkjIF9MVF9QQVRIX1RPT0xfUFJFRklYCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfUEFUSF9UT09MX1BSRUZJWF0sIFtfTFRfUEFUSF9UT09MX1BSRUZJWF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX1BBVEhfVE9PTF9QUkVGSVhdLCBbXSkKKworCisjIF9MVF9QQVRIX01BR0lDCisjIC0tLS0tLS0tLS0tLS0tCisjIGZpbmQgYSBmaWxlIHByb2dyYW0gd2hpY2ggY2FuIHJlY29nbml6ZSBhIHNoYXJlZCBsaWJyYXJ5CittNF9kZWZ1bihbX0xUX1BBVEhfTUFHSUNdLAorW19MVF9QQVRIX1RPT0xfUFJFRklYKCR7YWNfdG9vbF9wcmVmaXh9ZmlsZSwgL3Vzci9iaW4kUEFUSF9TRVBBUkFUT1IkUEFUSCkKK2lmIHRlc3QgLXogIiRsdF9jdl9wYXRoX01BR0lDX0NNRCI7IHRoZW4KKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgIF9MVF9QQVRIX1RPT0xfUFJFRklYKGZpbGUsIC91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgpCisgIGVsc2UKKyAgICBNQUdJQ19DTUQ9OgorICBmaQorZmkKK10pIyBfTFRfUEFUSF9NQUdJQworCisKKyMgTFRfUEFUSF9MRAorIyAtLS0tLS0tLS0tCisjIGZpbmQgdGhlIHBhdGhuYW1lIHRvIHRoZSBHTlUgb3Igbm9uLUdOVSBsaW5rZXIKK0FDX0RFRlVOKFtMVF9QQVRIX0xEXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorCitBQ19BUkdfV0lUSChbZ251LWxkXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nbnUtbGRdLAorCVthc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgQDw6QGRlZmF1bHQ9bm9AOj5AXSldLAorICAgIFt0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2dudV9sZD15ZXNdLAorICAgIFt3aXRoX2dudV9sZD1ub10pZG5sCisKK2FjX3Byb2c9bGQKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsZCB1c2VkIGJ5ICRDQ10pCisgIGNhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KikKKyAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gd2hpY2ggdXBzZXRzIG1pbmd3CisgICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1IHwgdHIgLWQgJ1wwMTUnYCA7OworICAqKQorICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNWAgOzsKKyAgZXNhYworICBjYXNlICRhY19wcm9nIGluCisgICAgIyBBY2NlcHQgYWJzb2x1dGUgcGF0aHMuCisgICAgW1tcXC9dXSogfCA/OltbXFwvXV0qKQorICAgICAgcmVfZGlyZWx0PScvW1teL11dW1teL11dKi9cLlwuLycKKyAgICAgICMgQ2Fub25pY2FsaXplIHRoZSBwYXRobmFtZSBvZiBsZAorICAgICAgYWNfcHJvZz1gJEVDSE8gIiRhY19wcm9nInwgJFNFRCAncyVcXFxcJS8lZydgCisgICAgICB3aGlsZSAkRUNITyAiJGFjX3Byb2ciIHwgJEdSRVAgIiRyZV9kaXJlbHQiID4gL2Rldi9udWxsIDI+JjE7IGRvCisJYWNfcHJvZz1gJEVDSE8gJGFjX3Byb2d8ICRTRUQgInMlJHJlX2RpcmVsdCUvJSJgCisgICAgICBkb25lCisgICAgICB0ZXN0IC16ICIkTEQiICYmIExEPSIkYWNfcHJvZyIKKyAgICAgIDs7CisgICIiKQorICAgICMgSWYgaXQgZmFpbHMsIHRoZW4gcHJldGVuZCB3ZSBhcmVuJ3QgdXNpbmcgR0NDLgorICAgIGFjX3Byb2c9bGQKKyAgICA7OworICAqKQorICAgICMgSWYgaXQgaXMgcmVsYXRpdmUsIHRoZW4gc2VhcmNoIGZvciB0aGUgZmlyc3QgbGQgaW4gUEFUSC4KKyAgICB3aXRoX2dudV9sZD11bmtub3duCisgICAgOzsKKyAgZXNhYworZWxpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIEFDX01TR19DSEVDS0lORyhbZm9yIEdOVSBsZF0pCitlbHNlCisgIEFDX01TR19DSEVDS0lORyhbZm9yIG5vbi1HTlUgbGRdKQorZmkKK0FDX0NBQ0hFX1ZBTChsdF9jdl9wYXRoX0xELAorW2lmIHRlc3QgLXogIiRMRCI7IHRoZW4KKyAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgIGZvciBhY19kaXIgaW4gJFBBVEg7IGRvCisgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KKyAgICAgIGx0X2N2X3BhdGhfTEQ9IiRhY19kaXIvJGFjX3Byb2ciCisgICAgICAjIENoZWNrIHRvIHNlZSBpZiB0aGUgcHJvZ3JhbSBpcyBHTlUgbGQuICBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24sCisgICAgICAjIGJ1dCBhcHBhcmVudGx5IHNvbWUgdmFyaWFudHMgb2YgR05VIGxkIG9ubHkgYWNjZXB0IC12LgorICAgICAgIyBCcmVhayBvbmx5IGlmIGl0IHdhcyB0aGUgR05VL25vbi1HTlUgbGQgdGhhdCB3ZSBwcmVmZXIuCisgICAgICBjYXNlIGAiJGx0X2N2X3BhdGhfTEQiIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KKyAgICAgICpHTlUqIHwgKid3aXRoIEJGRCcqKQorCXRlc3QgIiR3aXRoX2dudV9sZCIgIT0gbm8gJiYgYnJlYWsKKwk7OworICAgICAgKikKKwl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhaworCTs7CisgICAgICBlc2FjCisgICAgZmkKKyAgZG9uZQorICBJRlM9IiRsdF9zYXZlX2lmcyIKK2Vsc2UKKyAgbHRfY3ZfcGF0aF9MRD0iJExEIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KK2ZpXSkKK0xEPSIkbHRfY3ZfcGF0aF9MRCIKK2lmIHRlc3QgLW4gIiRMRCI7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVCgkTEQpCitlbHNlCisgIEFDX01TR19SRVNVTFQobm8pCitmaQordGVzdCAteiAiJExEIiAmJiBBQ19NU0dfRVJST1IoW25vIGFjY2VwdGFibGUgbGQgZm91bmQgaW4gXCRQQVRIXSkKK19MVF9QQVRIX0xEX0dOVQorQUNfU1VCU1QoW0xEXSkKKworX0xUX1RBR0RFQ0woW10sIFtMRF0sIFsxXSwgW1RoZSBsaW5rZXIgdXNlZCB0byBidWlsZCBsaWJyYXJpZXNdKQorXSkjIExUX1BBVEhfTEQKKworIyBPbGQgbmFtZXM6CitBVV9BTElBUyhbQU1fUFJPR19MRF0sIFtMVF9QQVRIX0xEXSkKK0FVX0FMSUFTKFtBQ19QUk9HX0xEXSwgW0xUX1BBVEhfTERdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBTV9QUk9HX0xEXSwgW10pCitkbmwgQUNfREVGVU4oW0FDX1BST0dfTERdLCBbXSkKKworCisjIF9MVF9QQVRIX0xEX0dOVQorIy0gLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfUEFUSF9MRF9HTlVdLAorW0FDX0NBQ0hFX0NIRUNLKFtpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZF0sIGx0X2N2X3Byb2dfZ251X2xkLAorWyMgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uIGhlcmUsIGJ1dCBhcHBhcmVudGx5IHNvbWUgR05VIGxkcyBvbmx5IGFjY2VwdCAtdi4KK2Nhc2UgYCRMRCAtdiAyPiYxIDwvZGV2L251bGxgIGluCisqR05VKiB8ICond2l0aCBCRkQnKikKKyAgbHRfY3ZfcHJvZ19nbnVfbGQ9eWVzCisgIDs7CisqKQorICBsdF9jdl9wcm9nX2dudV9sZD1ubworICA7OworZXNhY10pCit3aXRoX2dudV9sZD0kbHRfY3ZfcHJvZ19nbnVfbGQKK10pIyBfTFRfUEFUSF9MRF9HTlUKKworCisjIF9MVF9DTURfUkVMT0FECisjIC0tLS0tLS0tLS0tLS0tCisjIGZpbmQgcmVsb2FkIGZsYWcgZm9yIGxpbmtlcgorIyAgIC0tIFBPUlRNRSBTb21lIGxpbmtlcnMgbWF5IG5lZWQgYSBkaWZmZXJlbnQgcmVsb2FkIGZsYWcuCittNF9kZWZ1bihbX0xUX0NNRF9SRUxPQURdLAorW0FDX0NBQ0hFX0NIRUNLKFtmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzXSwKKyAgbHRfY3ZfbGRfcmVsb2FkX2ZsYWcsCisgIFtsdF9jdl9sZF9yZWxvYWRfZmxhZz0nLXInXSkKK3JlbG9hZF9mbGFnPSRsdF9jdl9sZF9yZWxvYWRfZmxhZworY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyIiIHwgIiAiKikgOzsKKyopIHJlbG9hZF9mbGFnPSIgJHJlbG9hZF9mbGFnIiA7OworZXNhYworcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworY2FzZSAkaG9zdF9vcyBpbgorICBkYXJ3aW4qKQorICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgICAgZWxzZQorICAgICAgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworICAgIGZpCisgICAgOzsKK2VzYWMKK19MVF9ERUNMKFtdLCBbcmVsb2FkX2ZsYWddLCBbMV0sIFtIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzXSlkbmwKK19MVF9ERUNMKFtdLCBbcmVsb2FkX2NtZHNdLCBbMl0pZG5sCitdKSMgX0xUX0NNRF9SRUxPQUQKKworCisjIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBob3cgdG8gY2hlY2sgZm9yIGxpYnJhcnkgZGVwZW5kZW5jaWVzCisjICAtLSBQT1JUTUUgZmlsbCBpbiB3aXRoIHRoZSBkeW5hbWljIGxpYnJhcnkgY2hhcmFjdGVyaXN0aWNzCittNF9kZWZ1bihbX0xUX0NIRUNLX01BR0lDX01FVEhPRF0sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKQorbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pCitBQ19DQUNIRV9DSEVDSyhbaG93IHRvIHJlY29nbml6ZSBkZXBlbmRlbnQgbGlicmFyaWVzXSwKK2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kLAorW2x0X2N2X2ZpbGVfbWFnaWNfY21kPSckTUFHSUNfQ01EJworbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9CitsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0ndW5rbm93bicKKyMgTmVlZCB0byBzZXQgdGhlIHByZWNlZGluZyB2YXJpYWJsZSBvbiBhbGwgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydAorIyBpbnRlcmxpYnJhcnkgZGVwZW5kZW5jaWVzLgorIyAnbm9uZScgLS0gZGVwZW5kZW5jaWVzIG5vdCBzdXBwb3J0ZWQuCisjIGB1bmtub3duJyAtLSBzYW1lIGFzIG5vbmUsIGJ1dCBkb2N1bWVudHMgdGhhdCB3ZSByZWFsbHkgZG9uJ3Qga25vdy4KKyMgJ3Bhc3NfYWxsJyAtLSBhbGwgZGVwZW5kZW5jaWVzIHBhc3NlZCB3aXRoIG5vIGNoZWNrcy4KKyMgJ3Rlc3RfY29tcGlsZScgLS0gY2hlY2sgYnkgbWFraW5nIHRlc3QgcHJvZ3JhbS4KKyMgJ2ZpbGVfbWFnaWMgW1tyZWdleF1dJyAtLSBjaGVjayBieSBsb29raW5nIGZvciBmaWxlcyBpbiBsaWJyYXJ5IHBhdGgKKyMgd2hpY2ggcmVzcG9uZHMgdG8gdGhlICRmaWxlX21hZ2ljX2NtZCB3aXRoIGEgZ2l2ZW4gZXh0ZW5kZWQgcmVnZXguCisjIElmIHlvdSBoYXZlIGBmaWxlJyBvciBlcXVpdmFsZW50IG9uIHlvdXIgc3lzdGVtIGFuZCB5b3UncmUgbm90IHN1cmUKKyMgd2hldGhlciBgcGFzc19hbGwnIHdpbGwgKmFsd2F5cyogd29yaywgeW91IHByb2JhYmx5IHdhbnQgdGhpcyBvbmUuCisKK2Nhc2UgJGhvc3Rfb3MgaW4KK2FpeFtbNC05XV0qKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitiZW9zKikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworYnNkaVtbNDVdXSopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTUxdXVNCIChzaGFyZWQgb2JqZWN0fGR5bmFtaWMgbGliKScKKyAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9Jy91c3IvYmluL2ZpbGUgLUwnCisgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS9zaGxpYi9saWJjLnNvCisgIDs7CisKK2N5Z3dpbiopCisgICMgZnVuY193aW4zMl9saWJpZCBpcyBhIHNoZWxsIGZ1bmN0aW9uIGRlZmluZWQgaW4gbHRtYWluLnNoCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICA7OworCittaW5ndyogfCBwdzMyKikKKyAgIyBCYXNlIE1TWVMvTWluR1cgZG8gbm90IHByb3ZpZGUgdGhlICdmaWxlJyBjb21tYW5kIG5lZWRlZCBieQorICAjIGZ1bmNfd2luMzJfbGliaWQgc2hlbGwgZnVuY3Rpb24sIHNvIHVzZSBhIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJywKKyAgIyB1bmxlc3Mgd2UgZmluZCAnZmlsZScsIGZvciBleGFtcGxlIGJlY2F1c2Ugd2UgYXJlIGNyb3NzLWNvbXBpbGluZy4KKyAgaWYgKCBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICBlbHNlCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICBmaQorICA7OworCitjZWdjYykKKyAgIyB1c2UgdGhlIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJy4gU2VlIG1pbmd3Ki4KKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGUtYXJtLS4qbGl0dGxlKC4qYXJjaGl0ZWN0dXJlOiBhcm0pPycKKyAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICA7OworCitkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitmcmVlYnNkKiB8IGRyYWdvbmZseSopCisgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgaSo4NiApCisgICAgICAjIE5vdCBzdXJlIHdoZXRoZXIgdGhlIHByZXNlbmNlIG9mIE9wZW5CU0QgaGVyZSB3YXMgYSBtaXN0YWtlLgorICAgICAgIyBMZXQncyBhY2NlcHQgYm90aCBvZiB0aGVtIHVudGlsIHRoaXMgaXMgY2xlYXJlZCB1cC4KKyAgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChGcmVlQlNEfE9wZW5CU0R8RHJhZ29uRmx5KS9pW1szLTldXTg2IChjb21wYWN0ICk/ZGVtYW5kIHBhZ2VkIHNoYXJlZCBsaWJyYXJ5JworICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQorICAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL3Vzci9saWIvbGliYy5zby4qYAorICAgICAgOzsKKyAgICBlc2FjCisgIGVsc2UKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICBmaQorICA7OworCitnbnUqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitocHV4MTAuMjAqIHwgaHB1eDExKikKKyAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQorICBjYXNlICRob3N0X2NwdSBpbgorICBpYTY0KikKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1tbMC05XV1bWzAtOV1dW1swLTldXXxFTEYtW1swLTldXVtbMC05XV0pIHNoYXJlZCBvYmplY3QgZmlsZSAtIElBNjQnCisgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvaHB1eDMyL2xpYmMuc28KKyAgICA7OworICBocHBhKjY0KikKKyAgICBbbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGLVswLTldWzAtOV0pIHNoYXJlZCBvYmplY3QgZmlsZSAtIFBBLVJJU0MgWzAtOV0uWzAtOV0nXQorICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL3BhMjBfNjQvbGliYy5zbAorICAgIDs7CisgICopCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbWzAtOV1dW1swLTldXVtbMC05XV18UEEtUklTQ1tbMC05XV0uW1swLTldXSkgc2hhcmVkIGxpYnJhcnknCisgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvbGliYy5zbAorICAgIDs7CisgIGVzYWMKKyAgOzsKKworaW50ZXJpeFtbMy05XV0qKQorICAjIFBJQyBjb2RlIGlzIGJyb2tlbiBvbiBJbnRlcml4IDMueCwgdGhhdCdzIHdoeSB8XC5hIG5vdCB8X3BpY1wuYSBoZXJlCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc298XC5hKSQnCisgIDs7CisKK2lyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgIGNhc2UgJExEIGluCisgICotMzJ8KiItMzIgIikgbGlibWFnaWM9MzItYml0OzsKKyAgKi1uMzJ8KiItbjMyICIpIGxpYm1hZ2ljPU4zMjs7CisgICotNjR8KiItNjQgIikgbGlibWFnaWM9NjQtYml0OzsKKyAgKikgbGlibWFnaWM9bmV2ZXItbWF0Y2g7OworICBlc2FjCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKKyMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KK2xpbnV4KiB8IGsqYnNkKi1nbnUpCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKK25ldGJzZCopCisgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xfcGljXC5hKSQnCisgIGVsc2UKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW1teL11dKyhcLnNvfF9waWNcLmEpJCcKKyAgZmkKKyAgOzsKKworbmV3b3M2KikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgRUxGIFtbMC05XV1bWzAtOV1dKi1iaXQgW1tNTF1dU0IgKGV4ZWN1dGFibGV8ZHluYW1pYyBsaWIpJworICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCisgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2xpYm5scy5zbworICA7OworCisqbnRvKiB8ICpxbngqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitvcGVuYnNkKikKKyAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xcLnNvfF9waWNcLmEpJCcKKyAgZWxzZQorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xfcGljXC5hKSQnCisgIGZpCisgIDs7CisKK29zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworcmRvcyopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKK3NvbGFyaXMqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworc3lzdjQgfCBzeXN2NC4zKikKKyAgY2FzZSAkaG9zdF92ZW5kb3IgaW4KKyAgbW90b3JvbGEpCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgRUxGIFtbMC05XV1bWzAtOV1dKi1iaXQgW1tNTF1dU0IgKHNoYXJlZCBvYmplY3R8ZHluYW1pYyBsaWIpIE1bWzAtOV1dW1swLTldXSogVmVyc2lvbiBbWzAtOV1dJworICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPWBlY2hvIC91c3IvbGliL2xpYmMuc28qYAorICAgIDs7CisgIG5jcikKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICAgIDs7CisgIHNlcXVlbnQpCisgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9Jy9iaW4vZmlsZScKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBFTEYgW1swLTldXVtbMC05XV0qLWJpdCBbW0xNXV1TQiAoc2hhcmVkIG9iamVjdHxkeW5hbWljIGxpYiApJworICAgIDs7CisgIHNuaSkKKyAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nL2Jpbi9maWxlJworICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSJmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTE1dXVNCIGR5bmFtaWMgbGliIgorICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS9saWIvbGliYy5zbworICAgIDs7CisgIHNpZW1lbnMpCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgICA7OworICBwYykKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICAgIDs7CisgIGVzYWMKKyAgOzsKKwordHBmKikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKK2VzYWMKK10pCitmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKK2RlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAordGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisKK19MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCisgICAgW01ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzXSkKK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19jbWRdLCBbMV0sCisgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKK10pIyBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ECisKKworIyBMVF9QQVRIX05NCisjIC0tLS0tLS0tLS0KKyMgZmluZCB0aGUgcGF0aG5hbWUgdG8gYSBCU0QtIG9yIE1TLWNvbXBhdGlibGUgbmFtZSBsaXN0ZXIKK0FDX0RFRlVOKFtMVF9QQVRIX05NXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgQlNELSBvciBNUy1jb21wYXRpYmxlIG5hbWUgbGlzdGVyIChubSldLCBsdF9jdl9wYXRoX05NLAorW2lmIHRlc3QgLW4gIiROTSI7IHRoZW4KKyAgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGx0X2N2X3BhdGhfTk09IiROTSIKK2Vsc2UKKyAgbHRfbm1fdG9fY2hlY2s9IiR7YWNfdG9vbF9wcmVmaXh9bm0iCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCIgJiYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKyAgICBsdF9ubV90b19jaGVjaz0iJGx0X25tX3RvX2NoZWNrIG5tIgorICBmaQorICBmb3IgbHRfdG1wX25tIGluICRsdF9ubV90b19jaGVjazsgZG8KKyAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgICBmb3IgYWNfZGlyIGluICRQQVRIIC91c3IvY2NzL2Jpbi9lbGYgL3Vzci9jY3MvYmluIC91c3IvdWNiIC9iaW47IGRvCisgICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgICB0bXBfbm09IiRhY19kaXIvJGx0X3RtcF9ubSIKKyAgICAgIGlmIHRlc3QgLWYgIiR0bXBfbm0iIHx8IHRlc3QgLWYgIiR0bXBfbm0kYWNfZXhlZXh0IiA7IHRoZW4KKwkjIENoZWNrIHRvIHNlZSBpZiB0aGUgbm0gYWNjZXB0cyBhIEJTRC1jb21wYXQgZmxhZy4KKwkjIEFkZGluZyB0aGUgYHNlZCAxcScgcHJldmVudHMgZmFsc2UgcG9zaXRpdmVzIG9uIEhQLVVYLCB3aGljaCBzYXlzOgorCSMgICBubTogdW5rbm93biBvcHRpb24gIkIiIGlnbm9yZWQKKwkjIFRydTY0J3Mgbm0gY29tcGxhaW5zIHRoYXQgL2Rldi9udWxsIGlzIGFuIGludmFsaWQgb2JqZWN0IGZpbGUKKwljYXNlIGAiJHRtcF9ubSIgLUIgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKwkqL2Rldi9udWxsKiB8IConSW52YWxpZCBmaWxlIG9yIG9iamVjdCB0eXBlJyopCisJICBsdF9jdl9wYXRoX05NPSIkdG1wX25tIC1CIgorCSAgYnJlYWsKKwkgIDs7CisJKikKKwkgIGNhc2UgYCIkdG1wX25tIiAtcCAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgorCSAgKi9kZXYvbnVsbCopCisJICAgIGx0X2N2X3BhdGhfTk09IiR0bXBfbm0gLXAiCisJICAgIGJyZWFrCisJICAgIDs7CisJICAqKQorCSAgICBsdF9jdl9wYXRoX05NPSR7bHRfY3ZfcGF0aF9OTT0iJHRtcF9ubSJ9ICMga2VlcCB0aGUgZmlyc3QgbWF0Y2gsIGJ1dAorCSAgICBjb250aW51ZSAjIHNvIHRoYXQgd2UgY2FuIHRyeSB0byBmaW5kIG9uZSB0aGF0IHN1cHBvcnRzIEJTRCBmbGFncworCSAgICA7OworCSAgZXNhYworCSAgOzsKKwllc2FjCisgICAgICBmaQorICAgIGRvbmUKKyAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgZG9uZQorICA6ICR7bHRfY3ZfcGF0aF9OTT1ub30KK2ZpXSkKK2lmIHRlc3QgIiRsdF9jdl9wYXRoX05NIiAhPSAibm8iOyB0aGVuCisgIE5NPSIkbHRfY3ZfcGF0aF9OTSIKK2Vsc2UKKyAgIyBEaWRuJ3QgZmluZCBhbnkgQlNEIGNvbXBhdGlibGUgbmFtZSBsaXN0ZXIsIGxvb2sgZm9yIGR1bXBiaW4uCisgIEFDX0NIRUNLX1RPT0xTKERVTVBCSU4sIFsiZHVtcGJpbiAtc3ltYm9scyIgImxpbmsgLWR1bXAgLXN5bWJvbHMiXSwgOikKKyAgQUNfU1VCU1QoW0RVTVBCSU5dKQorICBpZiB0ZXN0ICIkRFVNUEJJTiIgIT0gIjoiOyB0aGVuCisgICAgTk09IiREVU1QQklOIgorICBmaQorZmkKK3Rlc3QgLXogIiROTSIgJiYgTk09bm0KK0FDX1NVQlNUKFtOTV0pCitfTFRfREVDTChbXSwgW05NXSwgWzFdLCBbQSBCU0QtIG9yIE1TLWNvbXBhdGlibGUgbmFtZSBsaXN0ZXJdKWRubAorCitBQ19DQUNIRV9DSEVDSyhbdGhlIG5hbWUgbGlzdGVyICgkTk0pIGludGVyZmFjZV0sIFtsdF9jdl9ubV9pbnRlcmZhY2VdLAorICBbbHRfY3Zfbm1faW50ZXJmYWNlPSJCU0Qgbm0iCisgIGVjaG8gImludCBzb21lX3ZhcmlhYmxlID0gMDsiID4gY29uZnRlc3QuJGFjX2V4dAorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkYWNfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCAiJGFjX2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQorICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCAiJE5NIFwiY29uZnRlc3QuJGFjX29iamV4dFwiIiAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dCkKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186IG91dHB1dFwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICBjYXQgY29uZnRlc3Qub3V0ID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgaWYgJEdSRVAgJ0V4dGVybmFsLipzb21lX3ZhcmlhYmxlJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKyAgICBsdF9jdl9ubV9pbnRlcmZhY2U9Ik1TIGR1bXBiaW4iCisgIGZpCisgIHJtIC1mIGNvbmZ0ZXN0Kl0pCitdKSMgTFRfUEFUSF9OTQorCisjIE9sZCBuYW1lczoKK0FVX0FMSUFTKFtBTV9QUk9HX05NXSwgW0xUX1BBVEhfTk1dKQorQVVfQUxJQVMoW0FDX1BST0dfTk1dLCBbTFRfUEFUSF9OTV0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FNX1BST0dfTk1dLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfUFJPR19OTV0sIFtdKQorCisKKyMgTFRfTElCX00KKyMgLS0tLS0tLS0KKyMgY2hlY2sgZm9yIG1hdGggbGlicmFyeQorQUNfREVGVU4oW0xUX0xJQl9NXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCitMSUJNPQorY2FzZSAkaG9zdCBpbgorKi0qLWJlb3MqIHwgKi0qLWN5Z3dpbiogfCAqLSotcHczMiogfCAqLSotZGFyd2luKikKKyAgIyBUaGVzZSBzeXN0ZW0gZG9uJ3QgaGF2ZSBsaWJtLCBvciBkb24ndCBuZWVkIGl0CisgIDs7CisqLW5jci1zeXN2NC4zKikKKyAgQUNfQ0hFQ0tfTElCKG13LCBfbXd2YWxpZGNoZWNrbCwgTElCTT0iLWxtdyIpCisgIEFDX0NIRUNLX0xJQihtLCBjb3MsIExJQk09IiRMSUJNIC1sbSIpCisgIDs7CisqKQorICBBQ19DSEVDS19MSUIobSwgY29zLCBMSUJNPSItbG0iKQorICA7OworZXNhYworQUNfU1VCU1QoW0xJQk1dKQorXSkjIExUX0xJQl9NCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfQ0hFQ0tfTElCTV0sIFtMVF9MSUJfTV0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0NIRUNLX0xJQk1dLCBbXSkKKworCisjIF9MVF9DT01QSUxFUl9OT19SVFRJKFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DT01QSUxFUl9OT19SVFRJXSwKK1ttNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKKworX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPQorCitpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtZm5vLWJ1aWx0aW4nCisKKyAgX0xUX0NPTVBJTEVSX09QVElPTihbaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnNdLAorICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zLAorICAgIFstZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zXSwgW10sCisgICAgW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0iJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zIl0pCitmaQorX0xUX1RBR0RFQ0woW25vX2J1aWx0aW5fZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ10sIFsxXSwKKwlbQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9uc10pCitdKSMgX0xUX0NPTVBJTEVSX05PX1JUVEkKKworCisjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdLAorW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCitBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCittNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKKworIyBDaGVjayBmb3IgY29tbWFuZCB0byBncmFiIHRoZSByYXcgc3ltYm9sIG5hbWUgZm9sbG93ZWQgYnkgQyBzeW1ib2wgZnJvbSBubS4KK0FDX01TR19DSEVDS0lORyhbY29tbWFuZCB0byBwYXJzZSAkTk0gb3V0cHV0IGZyb20gJGNvbXBpbGVyIG9iamVjdF0pCitBQ19DQUNIRV9WQUwoW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGVdLAorWworIyBUaGVzZSBhcmUgc2FuZSBkZWZhdWx0cyB0aGF0IHdvcmsgb24gYXQgbGVhc3QgYSBmZXcgb2xkIHN5c3RlbXMuCisjIFtUaGV5IGNvbWUgZnJvbSBVbHRyaXguICBXaGF0IGNvdWxkIGJlIG9sZGVyIHRoYW4gVWx0cml4PyEhIDspXQorCisjIENoYXJhY3RlciBjbGFzcyBkZXNjcmliaW5nIE5NIGdsb2JhbCBzeW1ib2wgY29kZXMuCitzeW1jb2RlPSdbW0JDREVHUlNUXV0nCisKKyMgUmVnZXhwIHRvIG1hdGNoIHN5bWJvbHMgdGhhdCBjYW4gYmUgYWNjZXNzZWQgZGlyZWN0bHkgZnJvbSBDLgorc3ltcGF0PSdcKFtbX0EtWmEtel1dW1tfQS1aYS16MC05XV0qXCknCisKKyMgRGVmaW5lIHN5c3RlbS1zcGVjaWZpYyB2YXJpYWJsZXMuCitjYXNlICRob3N0X29zIGluCithaXgqKQorICBzeW1jb2RlPSdbW0JDRFRdXScKKyAgOzsKK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgc3ltY29kZT0nW1tBQkNER0lTVFddXScKKyAgOzsKK2hwdXgqKQorICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgIHN5bWNvZGU9J1tbQUJDREVHUlNUXV0nCisgIGZpCisgIDs7Citpcml4KiB8IG5vbnN0b3B1eCopCisgIHN5bWNvZGU9J1tbQkNERUdSU1RdXScKKyAgOzsKK29zZiopCisgIHN5bWNvZGU9J1tbQkNERUdRUlNUXV0nCisgIDs7Citzb2xhcmlzKikKKyAgc3ltY29kZT0nW1tCRFJUXV0nCisgIDs7CitzY28zLjJ2NSopCisgIHN5bWNvZGU9J1tbRFRdXScKKyAgOzsKK3N5c3Y0LjJ1dzIqKQorICBzeW1jb2RlPSdbW0RUXV0nCisgIDs7CitzeXN2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqKQorICBzeW1jb2RlPSdbW0FCRFRdXScKKyAgOzsKK3N5c3Y0KQorICBzeW1jb2RlPSdbW0RGTlNUVV1dJworICA7OworZXNhYworCisjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB1c2UgaXRzIHN0YW5kYXJkIHN5bWJvbCBjb2Rlcy4KK2Nhc2UgYCROTSAtViAyPiYxYCBpbgorKkdOVSogfCAqJ3dpdGggQkZEJyopCisgIHN5bWNvZGU9J1tbQUJDREdJUlNUV11dJyA7OworZXNhYworCisjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBhIHByb3BlciBDIGRlY2xhcmF0aW9uLgorIyBTb21lIHN5c3RlbXMgKGVzcC4gb24gaWE2NCkgbGluayBkYXRhIGFuZCBjb2RlIHN5bWJvbHMgZGlmZmVyZW50bHksCisjIHNvIHVzZSB0aGlzIGdlbmVyYWwgYXBwcm9hY2guCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorCisjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisKKyMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorb3B0X2NyPQorY2FzZSAkYnVpbGRfb3MgaW4KK21pbmd3KikKKyAgb3B0X2NyPWAkRUNITyAneFx7MCwxXH0nIHwgdHIgeCAnXDAxNSdgICMgb3B0aW9uIGNyIGluIHJlZ2V4cAorICA7OworZXNhYworCisjIFRyeSB3aXRob3V0IGEgcHJlZml4IHVuZGVyc2NvcmUsIHRoZW4gd2l0aCBpdC4KK2ZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKworICAjIFRyYW5zZm9ybSBzeW1jb2RlLCBzeW1wYXQsIGFuZCBzeW1wcmZ4IGludG8gYSByYXcgc3ltYm9sIGFuZCBhIEMgc3ltYm9sLgorICBzeW14ZnJtPSJcXDEgJGFjX3N5bXByZnhcXDIgXFwyIgorCisgICMgV3JpdGUgdGhlIHJhdyBhbmQgQyBpZGVudGlmaWVycy4KKyAgaWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKyAgICAjIEZha2UgaXQgZm9yIGR1bXBiaW4gYW5kIHNheSBUIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbgorICAgICMgYW5kIEQgZm9yIGFueSBnbG9iYWwgdmFyaWFibGUuCisgICAgIyBBbHNvIGZpbmQgQysrIGFuZCBfX2Zhc3RjYWxsIHN5bWJvbHMgZnJvbSBNU1ZDKyssCisgICAgIyB3aGljaCBzdGFydCB3aXRoIEAgb3IgPy4KKyAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkQVdLIFsnIlwKKyIgICAgIHtsYXN0X3NlY3Rpb249c2VjdGlvbjsgc2VjdGlvbj1cJCAzfTsiXAorIiAgICAgL1NlY3Rpb24gbGVuZ3RoIC4qI3JlbG9jcy4qKHBpY2sgYW55KS97aGlkZVtsYXN0X3NlY3Rpb25dPTF9OyJcCisiICAgICBcJCAwIX4vRXh0ZXJuYWwgKlx8L3tuZXh0fTsiXAorIiAgICAgLyAwKyBVTkRFRiAve25leHR9OyAvIFVOREVGIFwoW158XVwpKigpL3tuZXh0fTsiXAorIiAgICAge2lmKGhpZGVbc2VjdGlvbl0pIG5leHR9OyJcCisiICAgICB7Zj0wfTsgXCQgMH4vXChcKS4qXHwve2Y9MX07IHtwcmludGYgZiA/IFwiVCBcIiA6IFwiRCBcIn07IlwKKyIgICAgIHtzcGxpdChcJCAwLCBhLCAvXHx8XHIvKTsgc3BsaXQoYVsyXSwgcyl9OyJcCisiICAgICBzWzFdfi9eW0A/XS97cHJpbnQgc1sxXSwgc1sxXTsgbmV4dH07IlwKKyIgICAgIHNbMV1+cHJmeCB7c3BsaXQoc1sxXSx0LFwiQFwiKTsgcHJpbnQgdFsxXSwgc3Vic3RyKHRbMV0sbGVuZ3RoKHByZngpKX0iXAorIiAgICAgJyBwcmZ4PV4kYWNfc3ltcHJmeF0iCisgIGVsc2UKKyAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICBmaQorCisgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICBwaXBlX3dvcmtzPW5vCisKKyAgcm0gLWYgY29uZnRlc3QqCisgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCitjaGFyIG5tX3Rlc3RfdmFyOwordm9pZCBubV90ZXN0X2Z1bmModm9pZCk7Cit2b2lkIG5tX3Rlc3RfZnVuYyh2b2lkKXt9CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgoraW50IG1haW4oKXtubV90ZXN0X3Zhcj0nYSc7bm1fdGVzdF9mdW5jKCk7cmV0dXJuKDApO30KK19MVF9FT0YKKworICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgICMgTm93IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgorICAgIG5saXN0PWNvbmZ0ZXN0Lm5tCisgICAgaWYgQUNfVFJZX0VWQUwoTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkbmxpc3QpICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KKyAgICAgICMgVHJ5IHNvcnRpbmcgYW5kIHVuaXF1aWZ5aW5nIHRoZSBvdXRwdXQuCisgICAgICBpZiBzb3J0ICIkbmxpc3QiIHwgdW5pcSA+ICIkbmxpc3QiVDsgdGhlbgorCW12IC1mICIkbmxpc3QiVCAiJG5saXN0IgorICAgICAgZWxzZQorCXJtIC1mICIkbmxpc3QiVAorICAgICAgZmkKKworICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3ZSBzbmFnZ2VkIGFsbCB0aGUgc3ltYm9scyB3ZSBuZWVkLgorICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKwlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKwkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK19MVF9FT0YKKwkgICMgTm93IGdlbmVyYXRlIHRoZSBzeW1ib2wgZmlsZS4KKwkgIGV2YWwgIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCInIDwgIiRubGlzdCIgfCAkR1JFUCAtdiBtYWluID4+IGNvbmZ0ZXN0LiRhY19leHQnCisKKwkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorCisvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCitjb25zdCBzdHJ1Y3QgeworICBjb25zdCBjaGFyICpuYW1lOworICB2b2lkICAgICAgICphZGRyZXNzOworfQorbHRfX1BST0dSQU1fX0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tbXV0gPQoreworICB7ICJAUFJPR1JBTUAiLCAodm9pZCAqKSAwIH0sCitfTFRfRU9GCisJICAkU0VEICJzL14kc3ltY29kZSRzeW1jb2RlKiBcKC4qXCkgXCguKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC8iIDwgIiRubGlzdCIgfCAkR1JFUCAtdiBtYWluID4+IGNvbmZ0ZXN0LiRhY19leHQKKwkgIGNhdCA8PFxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAgezAsICh2b2lkICopIDB9Cit9OworCisvKiBUaGlzIHdvcmtzIGFyb3VuZCBhIHByb2JsZW0gaW4gRnJlZUJTRCBsaW5rZXIgKi8KKyNpZmRlZiBGUkVFQlNEX1dPUktBUk9VTkQKK3N0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgIHJldHVybiBsdF9fUFJPR1JBTV9fTFRYX3ByZWxvYWRlZF9zeW1ib2xzOworfQorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCitfTFRfRU9GCisJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CisJICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorCSAgQ0ZMQUdTPSIkQ0ZMQUdTJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSIKKwkgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKwkgICAgcGlwZV93b3Jrcz15ZXMKKwkgIGZpCisJICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisJZWxzZQorCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiZBU19NRVNTQUdFX0xPR19GRAorCWZpCisgICAgICBlbHNlCisJZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF92YXIgaW4gJG5saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIGVjaG8gImNhbm5vdCBydW4gJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICBmaQorICBlbHNlCisgICAgZWNobyAiJHByb2duYW1lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGZpCisgIHJtIC1yZiBjb25mdGVzdCogY29uZnRzdCoKKworICAjIERvIG5vdCB1c2UgdGhlIGdsb2JhbF9zeW1ib2xfcGlwZSB1bmxlc3MgaXQgd29ya3MuCisgIGlmIHRlc3QgIiRwaXBlX3dvcmtzIiA9IHllczsgdGhlbgorICAgIGJyZWFrCisgIGVsc2UKKyAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPQorICBmaQorZG9uZQorXSkKK2lmIHRlc3QgLXogIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0KK2ZpCitpZiB0ZXN0IC16ICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCI7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVChmYWlsZWQpCitlbHNlCisgIEFDX01TR19SRVNVTFQob2spCitmaQorCitfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF9waXBlXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGVdLCBbMV0sCisgICAgW1Rha2UgdGhlIG91dHB1dCBvZiBubSBhbmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXNdKQorX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCisgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgcHJvcGVyIEMgZGVjbGFyYXRpb25dKQorX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAorICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc10sIFsxXSwKKyAgICBbVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyXSkKK19MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAorICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwgWzFdLAorICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCitdKSAjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKKworCisjIF9MVF9DT01QSUxFUl9QSUMoW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfQ09NUElMRVJfUElDXSwKK1ttNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPQorX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQorX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQorCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSkKK200X2lmKFskMV0sIFtDWFhdLCBbCisgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KKyAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCisKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgYWl4KikKKyAgICAgICMgQWxsIEFJWCBjb2RlIGlzIFBJQy4KKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBhbWlnYW9zKikKKyAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBwb3dlcnBjKQorICAgICAgICAgICAgIyBzZWUgY29tbWVudCBhYm91dCBBbWlnYU9TNCAuc28gc3VwcG9ydAorICAgICAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKyAgICAgICAgOzsKKyAgICAgIG02OGspCisgICAgICAgICAgICAjIEZJWE1FOiB3ZSBuZWVkIGF0IGxlYXN0IDY4MDIwIGNvZGUgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcywgYnV0CisgICAgICAgICAgICAjIGFkZGluZyB0aGUgYC1tNjgwMjAnIGZsYWcgdG8gR0NDIHByZXZlbnRzIGJ1aWxkaW5nIGFueXRoaW5nIGJldHRlciwKKyAgICAgICAgICAgICMgbGlrZSBgLW02ODA0MCcuCisgICAgICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1tNjgwMjAgLXJlc2lkZW50MzIgLW1hbHdheXMtcmVzdG9yZS1hNCcKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBiZW9zKiB8IGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCogfCBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgT1Nlcy4KKyAgICAgIDs7CisgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKKyAgICAgICMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCisgICAgICAjIEFsdGhvdWdoIHRoZSBjeWd3aW4gZ2NjIGlnbm9yZXMgLWZQSUMsIHN0aWxsIG5lZWQgdGhpcyBmb3Igb2xkLXN0eWxlCisgICAgICAjICgtLWRpc2FibGUtYXV0by1pbXBvcnQpIGxpYnJhcmllcworICAgICAgbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAorCVtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorICAgICAgOzsKKyAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgb24gdGhpcyBwbGF0Zm9ybQorICAgICAgIyBDb21tb24gc3ltYm9scyBub3QgYWxsb3dlZCBpbiBNSF9EWUxJQiBmaWxlcworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZm5vLWNvbW1vbicKKyAgICAgIDs7CisgICAgKmRqZ3BwKikKKyAgICAgICMgREpHUFAgZG9lcyBub3Qgc3VwcG9ydCBzaGFyZWQgbGlicmFyaWVzIGF0IGFsbAorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQorICAgICAgOzsKKyAgICBpbnRlcml4W1szLTldXSopCisgICAgICAjIEludGVyaXggMy54IGdjYyAtZnBpYy8tZlBJQyBvcHRpb25zIGdlbmVyYXRlIGJyb2tlbiBjb2RlLgorICAgICAgIyBJbnN0ZWFkLCB3ZSByZWxvY2F0ZSBzaGFyZWQgbGlicmFyaWVzIGF0IHJ1bnRpbWUuCisgICAgICA7OworICAgIHN5c3Y0Kk1QKikKKyAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9LUtjb25mb3JtX3BpYworICAgICAgZmkKKyAgICAgIDs7CisgICAgaHB1eCopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgNjQtYml0IFBBIEhQLVVYLCBidXQgbm90IGZvciAzMi1iaXQKKyAgICAgICMgUEEgSFAtVVguICBPbiBJQTY0IEhQLVVYLCBQSUMgaXMgdGhlIGRlZmF1bHQgYnV0IHRoZSBwaWMgZmxhZworICAgICAgIyBzZXRzIHRoZSBkZWZhdWx0IFRMUyBtb2RlbCBhbmQgYWZmZWN0cyBpbmxpbmluZy4KKyAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBocHBhKjY0KikKKwk7OworICAgICAgKikKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJworCTs7CisgICAgICBlc2FjCisgICAgICA7OworICAgICpxbngqIHwgKm50byopCisgICAgICAjIFFOWCB1c2VzIEdOVSBDKyssIGJ1dCBuZWVkIHRvIGRlZmluZSAtc2hhcmVkIG9wdGlvbiB0b28sIG90aGVyd2lzZQorICAgICAgIyBpdCB3aWxsIGNvcmVkdW1wLgorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQyAtc2hhcmVkJworICAgICAgOzsKKyAgICAqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKyAgICAgIDs7CisgICAgZXNhYworICBlbHNlCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4W1s0LTldXSopCisJIyBBbGwgQUlYIGNvZGUgaXMgUElDLgorCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJICAjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgorCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwllbHNlCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ibnNvIC1iSTovbGliL3N5c2NhbGxzLmV4cCcKKwlmaQorCTs7CisgICAgICBjaG9ydXMqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJY3hjaDY4KikKKwkgICMgR3JlZW4gSGlsbHMgQysrIENvbXBpbGVyCisJICAjIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0iLS1ub19hdXRvX2luc3RhbnRpYXRpb24gLXUgX19tYWluIC11IF9fcHJlbWFpbiAtdSBfYWJvcnQgLXIgJENPT0xfRElSL2xpYi9saWJPcmIuYSAkTVZNRV9ESVIvbGliL0NDL2xpYkMuYSAkTVZNRV9ESVIvbGliL2NsYXNzaXgvbGliY3gucy5hIgorCSAgOzsKKwllc2FjCisJOzsKKyAgICAgIGRndXgqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBlYysrKikKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgICAgOzsKKwkgIGdoY3gqKQorCSAgICAjIEdyZWVuIEhpbGxzIEMrKyBDb21waWxlcgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorCSMgRnJlZUJTRCB1c2VzIEdOVSBDKysKKwk7OworICAgICAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIENDKikKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nJHt3bH0tYSAke3dsfWFyY2hpdmUnCisJICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NDsgdGhlbgorCSAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nK1onCisJICAgIGZpCisJICAgIDs7CisJICBhQ0MqKQorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPScke3dsfS1hICR7d2x9YXJjaGl2ZScKKwkgICAgY2FzZSAkaG9zdF9jcHUgaW4KKwkgICAgaHBwYSo2NCp8aWE2NCopCisJICAgICAgIyArWiB0aGUgZGVmYXVsdAorCSAgICAgIDs7CisJICAgICopCisJICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPScrWicKKwkgICAgICA7OworCSAgICBlc2FjCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgaW50ZXJpeCopCisJIyBUaGlzIGlzIGM4OSwgd2hpY2ggaXMgTVMgVmlzdWFsIEMrKyAobm8gc2hhcmVkIGxpYnMpCisJIyBBbnlvbmUgd2FudHMgdG8gZG8gYSBwb3J0PworCTs7CisgICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBDQyopCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJworCSAgICAjIENDIHBpYyBmbGFnIC1LUElDIGlzIHRoZSBkZWZhdWx0LgorCSAgICA7OworCSAgKikKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIEtDQyopCisJICAgICMgS0FJIEMrKyBDb21waWxlcgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLS1iYWNrZW5kIC1XbCwnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisJICAgIDs7CisJICBlY3BjKiApCisJICAgICMgb2xkIEludGVsIEMrKyBmb3IgeDg2XzY0IHdoaWNoIHN0aWxsIHN1cHBvcnRlZCAtS1BJQy4KKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKKwkgICAgOzsKKwkgIGljcGMqICkKKwkgICAgIyBJbnRlbCBDKyssIHVzZWQgdG8gYmUgaW5jb21wYXRpYmxlIHdpdGggR0NDLgorCSAgICAjIElDQyAxMCBkb2Vzbid0IGFjY2VwdCAtS1BJQyBhbnkgbW9yZS4KKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKKwkgICAgOzsKKwkgIHBnQ0MqIHwgcGdjcHAqKQorCSAgICAjIFBvcnRsYW5kIEdyb3VwIEMrKyBjb21waWxlcgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZnBpYycKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgICAgOzsKKwkgIGN4eCopCisJICAgICMgQ29tcGFxIEMrKworCSAgICAjIE1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgaXMgZW1wdHkuICBJdCBhcHBlYXJzIHRoYXQgYWxsIEFscGhhCisJICAgICMgTGludXggYW5kIENvbXBhcSBUcnU2NCBVbml4IG9iamVjdHMgYXJlIFBJQy4KKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJworCSAgICA7OworCSAgeGxjKiB8IHhsQyopCisJICAgICMgSUJNIFhMIDguMCBvbiBQUEMKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXFwaWMnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXFzdGF0aWNsaW5rJworCSAgICA7OworCSAgKikKKwkgICAgY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCisJICAgICpTdW5cIEMqKQorCSAgICAgICMgU3VuIEMrKyA1LjkKKwkgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICcKKwkgICAgICA7OworCSAgICBlc2FjCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBseW54b3MqKQorCTs7CisgICAgICBtODhrKikKKwk7OworICAgICAgbXZzKikKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgY3h4KikKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctVyBjLGV4cG9ydGFsbCcKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBuZXRic2QqKQorCTs7CisgICAgICAqcW54KiB8ICpudG8qKQorICAgICAgICAjIFFOWCB1c2VzIEdOVSBDKyssIGJ1dCBuZWVkIHRvIGRlZmluZSAtc2hhcmVkIG9wdGlvbiB0b28sIG90aGVyd2lzZQorICAgICAgICAjIGl0IHdpbGwgY29yZWR1bXAuCisgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMgLXNoYXJlZCcKKyAgICAgICAgOzsKKyAgICAgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgS0NDKikKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy0tYmFja2VuZCAtV2wsJworCSAgICA7OworCSAgUkNDKikKKwkgICAgIyBSYXRpb25hbCBDKysgMi40LjEKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcGljJworCSAgICA7OworCSAgY3h4KikKKwkgICAgIyBEaWdpdGFsL0NvbXBhcSBDKysKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgICMgTWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBpcyBlbXB0eS4gIEl0IGFwcGVhcnMgdGhhdCBhbGwgQWxwaGEKKwkgICAgIyBMaW51eCBhbmQgQ29tcGFxIFRydTY0IFVuaXggb2JqZWN0cyBhcmUgUElDLgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgcHNvcyopCisJOzsKKyAgICAgIHNvbGFyaXMqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBDQyopCisJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICcKKwkgICAgOzsKKwkgIGdjeCopCisJICAgICMgR3JlZW4gSGlsbHMgQysrIENvbXBpbGVyCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBzdW5vczQqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBDQyopCisJICAgICMgU3VuIEMrKyA0LngKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcGljJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgICA7OworCSAgbGNjKikKKwkgICAgIyBMdWNpZAorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgc3lzdjUqIHwgdW5peHdhcmUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IE9wZW5VTklYKikKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgQ0MqKQorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgIHRhbmRlbSopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIE5DQyopCisJICAgICMgTm9uU3RvcC1VWCBOQ0MgMy4yMAorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgICA7OworCSAgKikKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgIHZ4d29ya3MqKQorCTs7CisgICAgICAqKQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9jYW5fYnVpbGRfc2hhcmVkLCAkMSk9bm8KKwk7OworICAgIGVzYWMKKyAgZmkKK10sCitbCisgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJworCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4KikKKyAgICAgICMgQWxsIEFJWCBjb2RlIGlzIFBJQy4KKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBhbWlnYW9zKikKKyAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBwb3dlcnBjKQorICAgICAgICAgICAgIyBzZWUgY29tbWVudCBhYm91dCBBbWlnYU9TNCAuc28gc3VwcG9ydAorICAgICAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKyAgICAgICAgOzsKKyAgICAgIG02OGspCisgICAgICAgICAgICAjIEZJWE1FOiB3ZSBuZWVkIGF0IGxlYXN0IDY4MDIwIGNvZGUgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcywgYnV0CisgICAgICAgICAgICAjIGFkZGluZyB0aGUgYC1tNjgwMjAnIGZsYWcgdG8gR0NDIHByZXZlbnRzIGJ1aWxkaW5nIGFueXRoaW5nIGJldHRlciwKKyAgICAgICAgICAgICMgbGlrZSBgLW02ODA0MCcuCisgICAgICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1tNjgwMjAgLXJlc2lkZW50MzIgLW1hbHdheXMtcmVzdG9yZS1hNCcKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBiZW9zKiB8IGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCogfCBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgT1Nlcy4KKyAgICAgIDs7CisKKyAgICBtaW5ndyogfCBjeWd3aW4qIHwgcHczMiogfCBvczIqIHwgY2VnY2MqKQorICAgICAgIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworICAgICAgIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKyAgICAgICMgQWx0aG91Z2ggdGhlIGN5Z3dpbiBnY2MgaWdub3JlcyAtZlBJQywgc3RpbGwgbmVlZCB0aGlzIGZvciBvbGQtc3R5bGUKKyAgICAgICMgKC0tZGlzYWJsZS1hdXRvLWltcG9ydCkgbGlicmFyaWVzCisgICAgICBtNF9pZihbJDFdLCBbR0NKXSwgW10sCisJW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLURETExfRVhQT1JUJ10pCisgICAgICA7OworCisgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IG9uIHRoaXMgcGxhdGZvcm0KKyAgICAgICMgQ29tbW9uIHN5bWJvbHMgbm90IGFsbG93ZWQgaW4gTUhfRFlMSUIgZmlsZXMKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZuby1jb21tb24nCisgICAgICA7OworCisgICAgaHB1eCopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgNjQtYml0IFBBIEhQLVVYLCBidXQgbm90IGZvciAzMi1iaXQKKyAgICAgICMgUEEgSFAtVVguICBPbiBJQTY0IEhQLVVYLCBQSUMgaXMgdGhlIGRlZmF1bHQgYnV0IHRoZSBwaWMgZmxhZworICAgICAgIyBzZXRzIHRoZSBkZWZhdWx0IFRMUyBtb2RlbCBhbmQgYWZmZWN0cyBpbmxpbmluZy4KKyAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBocHBhKjY0KikKKwkjICtaIHRoZSBkZWZhdWx0CisJOzsKKyAgICAgICopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKwk7OworICAgICAgZXNhYworICAgICAgOzsKKworICAgIGludGVyaXhbWzMtOV1dKikKKyAgICAgICMgSW50ZXJpeCAzLnggZ2NjIC1mcGljLy1mUElDIG9wdGlvbnMgZ2VuZXJhdGUgYnJva2VuIGNvZGUuCisgICAgICAjIEluc3RlYWQsIHdlIHJlbG9jYXRlIHNoYXJlZCBsaWJyYXJpZXMgYXQgcnVudGltZS4KKyAgICAgIDs7CisKKyAgICBtc2Rvc2RqZ3BwKikKKyAgICAgICMgSnVzdCBiZWNhdXNlIHdlIHVzZSBHQ0MgZG9lc24ndCBtZWFuIHdlIHN1ZGRlbmx5IGdldCBzaGFyZWQgbGlicmFyaWVzCisgICAgICAjIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZW0uCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vCisgICAgICBlbmFibGVfc2hhcmVkPW5vCisgICAgICA7OworCisgICAgKm50byogfCAqcW54KikKKyAgICAgICMgUU5YIHVzZXMgR05VIEMrKywgYnV0IG5lZWQgdG8gZGVmaW5lIC1zaGFyZWQgb3B0aW9uIHRvbywgb3RoZXJ3aXNlCisgICAgICAjIGl0IHdpbGwgY29yZWR1bXAuCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDIC1zaGFyZWQnCisgICAgICA7OworCisgICAgc3lzdjQqTVAqKQorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0tS2NvbmZvcm1fcGljCisgICAgICBmaQorICAgICAgOzsKKworICAgICopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJworICAgICAgOzsKKyAgICBlc2FjCisgIGVsc2UKKyAgICAjIFBPUlRNRSBDaGVjayBmb3IgZmxhZyB0byBwYXNzIGxpbmtlciBmbGFncyB0aHJvdWdoIHRoZSBzeXN0ZW0gY29tcGlsZXIuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgIGFpeCopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLWJuc28gLWJJOi9saWIvc3lzY2FsbHMuZXhwJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBtaW5ndyogfCBjeWd3aW4qIHwgcHczMiogfCBvczIqIHwgY2VnY2MqKQorICAgICAgIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworICAgICAgIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKyAgICAgIG00X2lmKFskMV0sIFtHQ0pdLCBbXSwKKwlbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKKyAgICAgIDs7CisKKyAgICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIElBNjQgSFAtVVggYW5kIDY0LWJpdCBIUC1VWCwgYnV0CisgICAgICAjIG5vdCBmb3IgUEEgSFAtVVguCisgICAgICBjYXNlICRob3N0X2NwdSBpbgorICAgICAgaHBwYSo2NCp8aWE2NCopCisJIyArWiB0aGUgZGVmYXVsdAorCTs7CisgICAgICAqKQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nK1onCisJOzsKKyAgICAgIGVzYWMKKyAgICAgICMgSXMgdGhlcmUgYSBiZXR0ZXIgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgdGhhdCB3b3JrcyB3aXRoIHRoZSBidW5kbGVkIENDPworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPScke3dsfS1hICR7d2x9YXJjaGl2ZScKKyAgICAgIDs7CisKKyAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgICAjIFBJQyAod2l0aCAtS1BJQykgaXMgdGhlIGRlZmF1bHQuCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJworICAgICAgOzsKKworICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgIyBvbGQgSW50ZWwgZm9yIHg4Nl82NCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCisgICAgICBlY2MqKQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJworICAgICAgICA7OworICAgICAgIyBpY2MgdXNlZCB0byBiZSBpbmNvbXBhdGlibGUgd2l0aCBHQ0MuCisgICAgICAjIElDQyAxMCBkb2Vzbid0IGFjY2VwdCAtS1BJQyBhbnkgbW9yZS4KKyAgICAgIGljYyogfCBpZm9ydCopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCisgICAgICAgIDs7CisgICAgICAjIExhaGV5IEZvcnRyYW4gOC4xLgorICAgICAgbGY5NSopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctLXNoYXJlZCcKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJworCTs7CisgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikKKyAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKwkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZwaWMnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKyAgICAgICAgOzsKKyAgICAgIGNjYyopCisgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgICAjIEFsbCBBbHBoYSBjb2RlIGlzIFBJQy4KKyAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKKyAgICAgICAgOzsKKyAgICAgIHhsKikKKwkjIElCTSBYTCBDIDguMC9Gb3J0cmFuIDEwLjEgb24gUFBDCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcXBpYycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1xc3RhdGljbGluaycKKwk7OworICAgICAgKikKKwljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKwkqU3VuXCBDKikKKwkgICMgU3VuIEMgNS45CisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCSAgOzsKKwkqU3VuXCBGKikKKwkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9JycKKwkgIDs7CisJZXNhYworCTs7CisgICAgICBlc2FjCisgICAgICA7OworCisgICAgbmV3c29zNikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgOzsKKworICAgICpudG8qIHwgKnFueCopCisgICAgICAjIFFOWCB1c2VzIEdOVSBDKyssIGJ1dCBuZWVkIHRvIGRlZmluZSAtc2hhcmVkIG9wdGlvbiB0b28sIG90aGVyd2lzZQorICAgICAgIyBpdCB3aWxsIGNvcmVkdW1wLgorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQyAtc2hhcmVkJworICAgICAgOzsKKworICAgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgIyBBbGwgT1NGLzEgY29kZSBpcyBQSUMuCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJworICAgICAgOzsKKworICAgIHJkb3MqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKKyAgICAgIDs7CisKKyAgICBzb2xhcmlzKikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7CisgICAgICAqKQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJzs7CisgICAgICBlc2FjCisgICAgICA7OworCisgICAgc3Vub3M0KikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1QSUMnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgOzsKKworICAgIHN5c3Y0IHwgc3lzdjQuMnV3MiogfCBzeXN2NC4zKikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICA7OworCisgICAgc3lzdjQqTVAqKQorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYyA7dGhlbgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtjb25mb3JtX3BpYycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBzeXN2NSogfCB1bml4d2FyZSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgT3BlblVOSVgqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKyAgICAgIDs7CisKKyAgICB1bmljb3MqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vCisgICAgICA7OworCisgICAgdXRzNCopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgOzsKKworICAgICopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vCisgICAgICA7OworICAgIGVzYWMKKyAgZmkKK10pCitjYXNlICRob3N0X29zIGluCisgICMgRm9yIHBsYXRmb3JtcyB3aGljaCBkbyBub3Qgc3VwcG9ydCBQSUMsIC1EUElDIGlzIG1lYW5pbmdsZXNzOgorICAqZGpncHAqKQorICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKyAgICA7OworICAqKQorICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0iJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKUAmdEBtNF9pZihbJDFdLFtdLFsgLURQSUNdLFttNF9pZihbJDFdLFtDWFhdLFsgLURQSUNdLFtdKV0pIgorICAgIDs7Citlc2FjCitBQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKK19MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAorCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKworIworIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorIworaWYgdGVzdCAtbiAiJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKSI7IHRoZW4KKyAgX0xUX0NPTVBJTEVSX09QVElPTihbaWYgJGNvbXBpbGVyIFBJQyBmbGFnICRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkgd29ya3NdLAorICAgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzLCAkMSldLAorICAgIFskX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpQCZ0QG00X2lmKFskMV0sW10sWyAtRFBJQ10sW200X2lmKFskMV0sW0NYWF0sWyAtRFBJQ10sW10pXSldLCBbXSwKKyAgICBbY2FzZSAkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIGluCisgICAgICIiIHwgIiAiKikgOzsKKyAgICAgKikgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSIgJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKSIgOzsKKyAgICAgZXNhY10sCisgICAgW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKyAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX2Nhbl9idWlsZF9zaGFyZWQsICQxKT1ub10pCitmaQorX0xUX1RBR0RFQ0woW3BpY19mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfcGljXSwgWzFdLAorCVtBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHNdKQorCisjCisjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisjCit3bD0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkgZXZhbCBsdF90bXBfc3RhdGljX2ZsYWc9XCIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpXCIKK19MVF9MSU5LRVJfT1BUSU9OKFtpZiAkY29tcGlsZXIgc3RhdGljIGZsYWcgJGx0X3RtcF9zdGF0aWNfZmxhZyB3b3Jrc10sCisgIF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3MsICQxKSwKKyAgJGx0X3RtcF9zdGF0aWNfZmxhZywKKyAgW10sCisgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9XSkKK19MVF9UQUdERUNMKFtsaW5rX3N0YXRpY19mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfc3RhdGljXSwgWzFdLAorCVtDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nXSkKK10pIyBfTFRfQ09NUElMRVJfUElDCisKKworIyBfTFRfTElOS0VSX1NITElCUyhbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2VlIGlmIHRoZSBsaW5rZXIgc3VwcG9ydHMgYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcy4KK200X2RlZnVuKFtfTFRfTElOS0VSX1NITElCU10sCitbQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCitBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKK200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK200X3JlcXVpcmUoW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdKWRubAorbTRfcmVxdWlyZShbX0xUX1RBR19DT01QSUxFUl0pZG5sCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCittNF9pZihbJDFdLCBbQ1hYXSwgWworICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICBjYXNlICRob3N0X29zIGluCisgIGFpeFtbNC05XV0qKQorICAgICMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgorICAgICMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gQUlYIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgd2l0aCBHTlUgbm0KKyAgICBpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgIGVsc2UKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgIGZpCisgICAgOzsKKyAgcHczMiopCisgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgorICA7OworICBjeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQorICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgOzsKKyAgKikKKyAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICA7OworICBlc2FjCisgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQorXSwgWworICBydW5wYXRoX3Zhcj0KKyAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9CisgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPQorICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPW5vCisgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPW5vCisgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9CisgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KKyAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPW5vCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQorICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KKyAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPW5vCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCisgIF9MVF9UQUdWQVIoaW5oZXJpdF9ycGF0aCwgJDEpPW5vCisgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KKyAgX0xUX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPQorICBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQorICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0KKyAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcywgJDEpPQorICBfTFRfVEFHVkFSKHRocmVhZF9zYWZlX2ZsYWdfc3BlYywgJDEpPQorICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CisgICMgaW5jbHVkZV9leHBzeW1zIHNob3VsZCBiZSBhIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIHN5bWJvbHMgdG8gYmUgKmFsd2F5cyoKKyAgIyBpbmNsdWRlZCBpbiB0aGUgc3ltYm9sIGxpc3QKKyAgX0xUX1RBR1ZBUihpbmNsdWRlX2V4cHN5bXMsICQxKT0KKyAgIyBleGNsdWRlX2V4cHN5bXMgY2FuIGJlIGFuIGV4dGVuZGVkIHJlZ2V4cCBvZiBzeW1ib2xzIHRvIGV4Y2x1ZGUKKyAgIyBpdCB3aWxsIGJlIHdyYXBwZWQgYnkgYCAoJyBhbmQgYCkkJywgc28gb25lIG11c3Qgbm90IG1hdGNoIGJlZ2lubmluZyBvcgorICAjIGVuZCBvZiBsaW5lLiAgRXhhbXBsZTogYGF8YmN8LipkLionIHdpbGwgZXhjbHVkZSB0aGUgc3ltYm9scyBgYScgYW5kIGBiYycsCisgICMgYXMgd2VsbCBhcyBhbnkgc3ltYm9sIHRoYXQgY29udGFpbnMgYGQnLgorICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KKyAgIyBBbHRob3VnaCBfR0xPQkFMX09GRlNFVF9UQUJMRV8gaXMgYSB2YWxpZCBzeW1ib2wgQyBuYW1lLCBtb3N0IGEub3V0CisgICMgcGxhdGZvcm1zIChhYil1c2UgaXQgaW4gUElDIGNvZGUsIGJ1dCB0aGVpciBsaW5rZXJzIGdldCBjb25mdXNlZCBpZgorICAjIHRoZSBzeW1ib2wgaXMgZXhwbGljaXRseSByZWZlcmVuY2VkLiAgU2luY2UgcG9ydGFibGUgY29kZSBjYW5ub3QKKyAgIyByZWx5IG9uIHRoaXMgc3ltYm9sIG5hbWUsIGl0J3MgcHJvYmFibHkgZmluZSB0byBuZXZlciBpbmNsdWRlIGl0IGluCisgICMgcHJlbG9hZGVkIHN5bWJvbCB0YWJsZXMuCisgICMgRXhjbHVkZSBzaGFyZWQgbGlicmFyeSBpbml0aWFsaXphdGlvbi9maW5hbGl6YXRpb24gc3ltYm9scy4KK2RubCBOb3RlIGFsc28gYWRqdXN0IGV4Y2x1ZGVfZXhwc3ltcyBmb3IgQysrIGFib3ZlLgorICBleHRyYWN0X2V4cHN5bXNfY21kcz0KKworICBjYXNlICRob3N0X29zIGluCisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAjIEZJWE1FOiB0aGUgTVNWQysrIHBvcnQgaGFzbid0IGJlZW4gdGVzdGVkIGluIGEgbG9vb29uZyB0aW1lCisgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKKyAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgICAgd2l0aF9nbnVfbGQ9bm8KKyAgICBmaQorICAgIDs7CisgIGludGVyaXgqKQorICAgICMgd2UganVzdCBob3BlL2Fzc3VtZSB0aGlzIGlzIGdjYyBhbmQgbm90IGM4OSAoPSBNU1ZDKyspCisgICAgd2l0aF9nbnVfbGQ9eWVzCisgICAgOzsKKyAgb3BlbmJzZCopCisgICAgd2l0aF9nbnVfbGQ9bm8KKyAgICA7OworICBlc2FjCisKKyAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT15ZXMKKyAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CisgICAgd2xhcmM9JyR7d2x9JworCisgICAgIyBTZXQgc29tZSBkZWZhdWx0cyBmb3IgR05VIGxkIHdpdGggc2hhcmVkIGxpYnJhcnkgc3VwcG9ydC4gVGhlc2UKKyAgICAjIGFyZSByZXNldCBsYXRlciBpZiBzaGFyZWQgbGlicmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkLiBQdXR0aW5nIHRoZW0KKyAgICAjIGhlcmUgYWxsb3dzIHRoZW0gdG8gYmUgb3ZlcnJpZGRlbiBpZiBuZWNlc3NhcnkuCisgICAgcnVucGF0aF92YXI9TERfUlVOX1BBVEgKKyAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKyAgICAjIGFuY2llbnQgR05VIGxkIGRpZG4ndCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZSBldC4gYWwuCisgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ25vLXdob2xlLWFyY2hpdmUnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCisgICAgZWxzZQorICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorICAgIGZpCisgICAgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPW5vCisgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCisgICAgICAqXCBbWzAxXV0uKiB8ICpcIDIuW1swLTldXS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQorICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KKyAgICAgICpcIDIuMTEuOTIuMC4xMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIE1hbmRyYWtlIDguMiAuLi4KKyAgICAgICpcIDIuMTEuKikgOzsgIyBvdGhlciAyLjExIHZlcnNpb25zCisgICAgICAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7CisgICAgZXNhYworCisgICAgIyBTZWUgaWYgR05VIGxkIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgIGFpeFtbMy05XV0qKQorICAgICAgIyBPbiBBSVgvUFBDLCB0aGUgR05VIGxpbmtlciBpcyB2ZXJ5IGJyb2tlbgorICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCWNhdCA8PF9MVF9FT0YgMT4mMgorCisqKiogV2FybmluZzogdGhlIEdOVSBsaW5rZXIsIGF0IGxlYXN0IHVwIHRvIHJlbGVhc2UgMi45LjEsIGlzIHJlcG9ydGVkCisqKiogdG8gYmUgdW5hYmxlIHRvIHJlbGlhYmx5IGNyZWF0ZSBzaGFyZWQgbGlicmFyaWVzIG9uIEFJWC4KKyoqKiBUaGVyZWZvcmUsIGxpYnRvb2wgaXMgZGlzYWJsaW5nIHNoYXJlZCBsaWJyYXJpZXMgc3VwcG9ydC4gIElmIHlvdQorKioqIHJlYWxseSBjYXJlIGZvciBzaGFyZWQgbGlicmFyaWVzLCB5b3UgbWF5IHdhbnQgdG8gbW9kaWZ5IHlvdXIgUEFUSAorKioqIHNvIHRoYXQgYSBub24tR05VIGxpbmtlciBpcyBmb3VuZCwgYW5kIHRoZW4gcmVzdGFydC4KKworX0xUX0VPRgorICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBhbWlnYW9zKikKKyAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBwb3dlcnBjKQorICAgICAgICAgICAgIyBzZWUgY29tbWVudCBhYm91dCBBbWlnYU9TNCAuc28gc3VwcG9ydAorICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJworICAgICAgICA7OworICAgICAgbTY4aykKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRFQ0hPICIjZGVmaW5lIE5BTUUgJGxpYm5hbWUiID4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kRUNITyAiI2RlZmluZSBMSUJSQVJZX0lEIDEiID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEVDSE8gIiNkZWZpbmUgVkVSU0lPTiAkbWFqb3IiID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEVDSE8gIiNkZWZpbmUgUkVWSVNJT04gJHJldmlzaW9uIiA+PiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRBUiAkQVJfRkxBR1MgJGxpYiAkbGlib2Jqc34kUkFOTElCICRsaWJ+KGNkICRvdXRwdXRfb2JqZGlyICYmIGEyaXhsaWJyYXJ5IC0zMiknCisgICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworCisgICAgYmVvcyopCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJIyBKb3NlcGggQmVja2VuYmFjaCA8anJiM0BiZXN0LmNvbT4gc2F5cyBzb21lIHJlbGVhc2VzIG9mIGdjYworCSMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW5vc3RhcnQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKyAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKwkjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCWVsc2UKKwkgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwlmaX4KKwkkQ0MgLXNoYXJlZCAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICBmaQorICAgICAgOzsKKworICAgIGludGVyaXhbWzMtOV1dKikKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgICAjIEhhY2s6IE9uIEludGVyaXggMy54LCB3ZSBjYW5ub3QgY29tcGlsZSBQSUMgYmVjYXVzZSBvZiBhIGJyb2tlbiBnY2MuCisgICAgICAjIEluc3RlYWQsIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGxvYWRlZCBhdCBhbiBpbWFnZSBiYXNlICgweDEwMDAwMDAwIGJ5CisgICAgICAjIGRlZmF1bHQpIGFuZCByZWxvY2F0ZWQgaWYgdGhleSBjb25mbGljdCwgd2hpY2ggaXMgYSBzbG93IHZlcnkgbWVtb3J5CisgICAgICAjIGNvbnN1bWluZyBhbmQgZnJhZ21lbnRpbmcgcHJvY2Vzcy4gIFRvIGF2b2lkIHRoaXMsIHdlIHBpY2sgYSByYW5kb20sCisgICAgICAjIDI1NiBLaUItYWxpZ25lZCBpbWFnZSBiYXNlIGJldHdlZW4gMHg1MDAwMDAwMCBhbmQgMHg2RkZDMDAwMCBhdCBsaW5rCisgICAgICAjIHRpbWUuICBNb3ZpbmcgdXAgZnJvbSAweDEwMDAwMDAwIGFsc28gYWxsb3dzIG1vcmUgc2JyaygyKSBzcGFjZS4KKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nc2VkICJzLF4sXywiICRleHBvcnRfc3ltYm9scyA+JG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW1+JENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1oLCRzb25hbWUgJHt3bH0tLXJldGFpbi1zeW1ib2xzLWZpbGUsJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW0gJHt3bH0tLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKKyAgICAgIDs7CisKKyAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUpCisgICAgICB0bXBfZGlldD1ubworICAgICAgaWYgdGVzdCAiJGhvc3Rfb3MiID0gbGludXgtZGlldGxpYmM7IHRoZW4KKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgZGlldFwgKikgdG1wX2RpZXQ9eWVzOzsJIyBsaW51eC1kaWV0bGliYyB3aXRoIHN0YXRpYyBsaW5raW5nICghZGlldC1keW4pCisJZXNhYworICAgICAgZmkKKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRFR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsIFwKKwkgJiYgdGVzdCAiJHRtcF9kaWV0IiA9IG5vCisgICAgICB0aGVuCisJdG1wX2FkZGZsYWc9CisJdG1wX3NoYXJlZGZsYWc9Jy1zaGFyZWQnCisJY2FzZSAkY2NfYmFzZW5hbWUsJGhvc3RfY3B1IGluCisgICAgICAgIHBnY2MqKQkJCQkjIFBvcnRsYW5kIEdyb3VwIEMgY29tcGlsZXIKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCisJICA7OworCXBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikJIyBQb3J0bGFuZCBHcm91cCBmNzcgYW5kIGY5MCBjb21waWxlcnMKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcgLU1ub21haW4nIDs7CisJZWNjKixpYTY0KiB8IGljYyosaWE2NCopCSMgSW50ZWwgQyBjb21waWxlciBvbiBpYTY0CisJICB0bXBfYWRkZmxhZz0nIC1pX2R5bmFtaWMnIDs7CisJZWZjKixpYTY0KiB8IGlmb3J0KixpYTY0KikJIyBJbnRlbCBGb3J0cmFuIGNvbXBpbGVyIG9uIGlhNjQKKwkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYyAtbm9mb3JfbWFpbicgOzsKKwlpZmMqIHwgaWZvcnQqKQkJCSMgSW50ZWwgRm9ydHJhbiBjb21waWxlcgorCSAgdG1wX2FkZGZsYWc9JyAtbm9mb3JfbWFpbicgOzsKKwlsZjk1KikJCQkJIyBMYWhleSBGb3J0cmFuIDguMQorCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorCSAgdG1wX3NoYXJlZGZsYWc9Jy0tc2hhcmVkJyA7OworCXhsW1tjQ11dKikJCQkjIElCTSBYTCBDIDguMCBvbiBQUEMgKGRlYWwgd2l0aCB4bGYgYmVsb3cpCisJICB0bXBfc2hhcmVkZmxhZz0nLXFta3Nocm9iaicKKwkgIHRtcF9hZGRmbGFnPSA7OworCWVzYWMKKwljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKwkqU3VuXCBDKikJCQkjIFN1biBDIDUuOQorCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzCisJICB0bXBfc2hhcmVkZmxhZz0nLUcnIDs7CisJKlN1blwgRiopCQkJIyBTdW4gRm9ydHJhbiA4LjMKKwkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKKwllc2FjCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDICciJHRtcF9zaGFyZWRmbGFnIiIkdG1wX2FkZGZsYWciJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKworICAgICAgICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKwkgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJICAgICRDQyAnIiR0bXBfc2hhcmVkZmxhZyIiJHRtcF9hZGRmbGFnIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXZlcnNpb24tc2NyaXB0ICR7d2x9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgICAgICAgIGZpCisKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCXhsZiopCisJICAjIElCTSBYTCBGb3J0cmFuIDEwLjEgb24gUFBDIGNhbm5vdCBjcmVhdGUgc2hhcmVkIGxpYnMgaXRzZWxmCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPSctcnBhdGggJGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKwkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworCSAgZmkKKwkgIDs7CisJZXNhYworICAgICAgZWxzZQorICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICBmaQorICAgICAgOzsKKworICAgIG5ldGJzZCopCisgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisJd2xhcmM9CisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBzb2xhcmlzKikKKyAgICAgIGlmICRMRCAtdiAyPiYxIHwgJEdSRVAgJ0JGRCAyXC44JyA+IC9kZXYvbnVsbDsgdGhlbgorCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwljYXQgPDxfTFRfRU9GIDE+JjIKKworKioqIFdhcm5pbmc6IFRoZSByZWxlYXNlcyAyLjguKiBvZiB0aGUgR05VIGxpbmtlciBjYW5ub3QgcmVsaWFibHkKKyoqKiBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBTb2xhcmlzIHN5c3RlbXMuICBUaGVyZWZvcmUsIGxpYnRvb2wKKyoqKiBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgV2UgdXJnZSB5b3UgdG8gdXBncmFkZSBHTlUKKyoqKiBiaW51dGlscyB0byByZWxlYXNlIDIuOS4xIG9yIG5ld2VyLiAgQW5vdGhlciBvcHRpb24gaXMgdG8gbW9kaWZ5CisqKiogeW91ciBQQVRIIG9yIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gc28gdGhhdCB0aGUgbmF0aXZlIGxpbmtlciBpcworKioqIHVzZWQsIGFuZCB0aGVuIHJlc3RhcnQuCisKK19MVF9FT0YKKyAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICBmaQorICAgICAgOzsKKworICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCopCisgICAgICBjYXNlIGAkTEQgLXYgMj4mMWAgaW4KKyAgICAgICAgKlwgW1swMV1dLiogfCAqXCAyLltbMC05XV0uKiB8ICpcIDIuMVtbMC01XV0uKikKKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJY2F0IDw8X0xUX0VPRiAxPiYyCisKKyoqKiBXYXJuaW5nOiBSZWxlYXNlcyBvZiB0aGUgR05VIGxpbmtlciBwcmlvciB0byAyLjE2LjkxLjAuMyBjYW4gbm90CisqKiogcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gU0NPIHN5c3RlbXMuICBUaGVyZWZvcmUsIGxpYnRvb2wKKyoqKiBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgV2UgdXJnZSB5b3UgdG8gdXBncmFkZSBHTlUKKyoqKiBiaW51dGlscyB0byByZWxlYXNlIDIuMTYuOTEuMC4zIG9yIG5ld2VyLiAgQW5vdGhlciBvcHRpb24gaXMgdG8gbW9kaWZ5CisqKiogeW91ciBQQVRIIG9yIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gc28gdGhhdCB0aGUgbmF0aXZlIGxpbmtlciBpcworKioqIHVzZWQsIGFuZCB0aGVuIHJlc3RhcnQuCisKK19MVF9FT0YKKwk7OworCSopCisJICAjIEZvciBzZWN1cml0eSByZWFzb25zLCBpdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgYWx3YXlzCisJICAjIHVzZSBhYnNvbHV0ZSBwYXRocyBmb3IgbmFtaW5nIHNoYXJlZCBsaWJyYXJpZXMsIGFuZCBleGNsdWRlIHRoZQorCSAgIyBEVF9SVU5QQVRIIHRhZyBmcm9tIGV4ZWN1dGFibGVzIGFuZCBsaWJyYXJpZXMuICBCdXQgZG9pbmcgc28KKwkgICMgcmVxdWlyZXMgdGhhdCB5b3UgY29tcGlsZSBldmVyeXRoaW5nIHR3aWNlLCB3aGljaCBpcyBhIHBhaW4uCisJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJICBlbHNlCisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgIGZpCisJOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBzdW5vczQqKQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1hc3NlcnQgcHVyZS10ZXh0IC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIHdsYXJjPQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgKikKKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgZXNhYworCisgICAgaWYgdGVzdCAiJF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm87IHRoZW4KKyAgICAgIHJ1bnBhdGhfdmFyPQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPQorICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorICAgIGZpCisgIGVsc2UKKyAgICAjIFBPUlRNRSBmaWxsIGluIGEgZGVzY3JpcHRpb24gb2YgeW91ciBzeXN0ZW0ncyBsaW5rZXIgKG5vdCBHTlUgbGQpCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgIGFpeDMqKQorICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRMRCAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLWJFOiRleHBvcnRfc3ltYm9scyAtVDUxMiAtSDUxMiAtYk06U1JFfiRBUiAkQVJfRkxBR1MgJGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lJworICAgICAgIyBOb3RlOiB0aGlzIGxpbmtlciBoYXJkY29kZXMgdGhlIGRpcmVjdG9yaWVzIGluIExJQlBBVEggaWYgdGhlcmUKKyAgICAgICMgYXJlIG5vIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieSAtTC4KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAteiAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIjsgdGhlbgorCSMgTmVpdGhlciBkaXJlY3QgaGFyZGNvZGluZyBub3Igc3RhdGljIGxpbmtpbmcgaXMgc3VwcG9ydGVkIHdpdGggYQorCSMgYnJva2VuIGNvbGxlY3QyLgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgIGZpCisgICAgICA7OworCisgICAgYWl4W1s0LTldXSopCisgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCSMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKKwkjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KKwlhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisJZXhwX3N5bV9mbGFnPSctQmV4cG9ydCcKKwlub19lbnRyeV9mbGFnPSIiCisgICAgICBlbHNlCisJIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCisJIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorCWlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KKwkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJZWxzZQorCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJZmkKKwlhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisKKwkjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKKwkjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKKwkjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorCWNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bWzIzXV18YWl4NC5bWzIzXV0uKnxhaXhbWzUtOV1dKikKKwkgIGZvciBsZF9mbGFnIGluICRMREZMQUdTOyBkbworCSAgaWYgKHRlc3QgJGxkX2ZsYWcgPSAiLWJydGwiIHx8IHRlc3QgJGxkX2ZsYWcgPSAiLVdsLC1icnRsIik7IHRoZW4KKwkgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKKwkgICAgYnJlYWsKKwkgIGZpCisJICBkb25lCisJICA7OworCWVzYWMKKworCWV4cF9zeW1fZmxhZz0nLWJleHBvcnQnCisJbm9fZW50cnlfZmxhZz0nLWJub2VudHJ5JworICAgICAgZmkKKworICAgICAgIyBXaGVuIGxhcmdlIGV4ZWN1dGFibGVzIG9yIHNoYXJlZCBvYmplY3RzIGFyZSBidWlsdCwgQUlYIGxkIGNhbgorICAgICAgIyBoYXZlIHByb2JsZW1zIGNyZWF0aW5nIHRoZSB0YWJsZSBvZiBjb250ZW50cy4gIElmIGxpbmtpbmcgYSBsaWJyYXJ5CisgICAgICAjIG9yIHByb2dyYW0gcmVzdWx0cyBpbiAiZXJyb3IgVE9DIG92ZXJmbG93IiBhZGQgLW1taW5pbWFsLXRvYyB0bworICAgICAgIyBDWFhGTEFHUy9DRkxBR1MgZm9yIGcrKy9nY2MuICBJbiB0aGUgY2FzZXMgd2hlcmUgdGhhdCBpcyBub3QKKyAgICAgICMgZW5vdWdoIHRvIGZpeCB0aGUgcHJvYmxlbSwgYWRkIC1XbCwtYmJpZ3RvYyB0byBMREZMQUdTLgorCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPScnCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JworICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9JyR7d2x9LWYsJworCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCWNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bWzAxMl1dfGFpeDQuW1swMTJdXS4qKQorCSMgV2Ugb25seSB3YW50IHRvIGRvIHRoaXMgb24gQUlYIDQuMiBhbmQgbG93ZXIsIHRoZSBjaGVjaworCSMgYmVsb3cgZm9yIGJyb2tlbiBjb2xsZWN0MiBkb2Vzbid0IHdvcmsgdW5kZXIgNC4zKworCSAgY29sbGVjdDJuYW1lPWAke0NDfSAtcHJpbnQtcHJvZy1uYW1lPWNvbGxlY3QyYAorCSAgaWYgdGVzdCAtZiAiJGNvbGxlY3QybmFtZSIgJiYKKwkgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8ICRHUkVQIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAorCSAgdGhlbgorCSAgIyBXZSBoYXZlIHJld29ya2VkIGNvbGxlY3QyCisJICA6CisJICBlbHNlCisJICAjIFdlIGhhdmUgb2xkIGNvbGxlY3QyCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXVuc3VwcG9ydGVkCisJICAjIEl0IGZhaWxzIHRvIGZpbmQgdW5pbnN0YWxsZWQgbGlicmFyaWVzIHdoZW4gdGhlIHVuaW5zdGFsbGVkCisJICAjIHBhdGggaXMgbm90IGxpc3RlZCBpbiB0aGUgbGlicGF0aC4gIFNldHRpbmcgaGFyZGNvZGVfbWludXNfTAorCSAgIyB0byB1bnN1cHBvcnRlZCBmb3JjZXMgcmVsaW5raW5nCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KKwkgIGZpCisJICA7OworCWVzYWMKKwlzaGFyZWRfZmxhZz0nLXNoYXJlZCcKKwlpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKwkgIHNoYXJlZF9mbGFnPSIkc2hhcmVkX2ZsYWcgIicke3dsfS1HJworCWZpCisgICAgICBlbHNlCisJIyBub3QgdXNpbmcgZ2NjCisJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwkjIFZpc3VhbEFnZSBDKyssIFZlcnNpb24gNS41IGZvciBBSVggNUwgZm9yIElBLTY0LCBCZXRhIDMgUmVsZWFzZQorCSMgY2hva2VzIG9uIC1XbCwtRy4gVGhlIGZvbGxvd2luZyBsaW5lIGlzIGNvcnJlY3Q6CisJICBzaGFyZWRfZmxhZz0nLUcnCisJZWxzZQorCSAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisJICAgIHNoYXJlZF9mbGFnPScke3dsfS1HJworCSAgZWxzZQorCSAgICBzaGFyZWRfZmxhZz0nJHt3bH0tYk06U1JFJworCSAgZmkKKwlmaQorICAgICAgZmkKKworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmV4cGFsbCcKKyAgICAgICMgSXQgc2VlbXMgdGhhdCAtYmV4cGFsbCBkb2VzIG5vdCBleHBvcnQgc3ltYm9scyBiZWdpbm5pbmcgd2l0aAorICAgICAgIyB1bmRlcnNjb3JlIChfKSwgc28gaXQgaXMgYmV0dGVyIHRvIGdlbmVyYXRlIGEgbGlzdCBvZiBzeW1ib2xzIHRvIGV4cG9ydC4KKyAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisgICAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKwkjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW50aW1lIGxvYWRpbmcgZmxhZ3MgKC1icnRsKSwKKwkjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCisgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCisgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gJEVDSE8gIlgke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiB8ICRYc2VkOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICBlbHNlCisJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0iLXogbm9kZWZzIgorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzICR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30gJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMiCisJZWxzZQorCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKwkgIyBlbXB0eSBleGVjdXRhYmxlLgorCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKwkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCisJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCisJICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJub3RvaycKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm9rJworCSAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKwkgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR7d2x9LWJub2VudHJ5ICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJworCWZpCisgICAgICBmaQorICAgICAgOzsKKworICAgIGFtaWdhb3MqKQorICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgIHBvd2VycGMpCisgICAgICAgICAgICAjIHNlZSBjb21tZW50IGFib3V0IEFtaWdhT1M0IC5zbyBzdXBwb3J0CisgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPScnCisgICAgICAgIDs7CisgICAgICBtNjhrKQorICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEVDSE8gIiNkZWZpbmUgTkFNRSAkbGlibmFtZSIgPiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRFQ0hPICIjZGVmaW5lIExJQlJBUllfSUQgMSIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kRUNITyAiI2RlZmluZSBWRVJTSU9OICRtYWpvciIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kRUNITyAiI2RlZmluZSBSRVZJU0lPTiAkcmV2aXNpb24iID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEFSICRBUl9GTEFHUyAkbGliICRsaWJvYmpzfiRSQU5MSUIgJGxpYn4oY2QgJG91dHB1dF9vYmpkaXIgJiYgYTJpeGxpYnJhcnkgLTMyKScKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBic2RpW1s0NV1dKikKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9LXJkeW5hbWljCisgICAgICA7OworCisgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKKyAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisgICAgICBsaWJleHQ9bGliCisgICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKyAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGAkRUNITyAiWCRkZXBsaWJzIiB8ICRYc2VkIC1lICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisgICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisgICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKyAgICAgIF9MVF9UQUdWQVIoZml4X3NyY2ZpbGVfcGF0aCwgJDEpPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKyAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworICAgICAgOzsKKworICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUygkMSkKKyAgICAgIDs7CisKKyAgICBkZ3V4KikKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgIGZyZWVic2QxKikKKyAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICAjIEZyZWVCU0QgMi4yLlswMTJdIGFsbG93cyB1cyB0byBpbmNsdWRlIGMrK3J0MC5vIHRvIGdldCBDKysgY29uc3RydWN0b3IKKyAgICAjIHN1cHBvcnQuICBGdXR1cmUgdmVyc2lvbnMgZG8gdGhpcyBhdXRvbWF0aWNhbGx5LCBidXQgYW4gZXhwbGljaXQgYysrcnQwLm8KKyAgICAjIGRvZXMgbm90IGJyZWFrIGFueXRoaW5nLCBhbmQgaGVscHMgc2lnbmlmaWNhbnRseSAoYXQgdGhlIGNvc3Qgb2YgYSBsaXR0bGUKKyAgICAjIGV4dHJhIHNwYWNlKS4KKyAgICBmcmVlYnNkMi4yKikKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgL3Vzci9saWIvYysrcnQwLm8nCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgIyBVbmZvcnR1bmF0ZWx5LCBvbGRlciB2ZXJzaW9ucyBvZiBGcmVlQlNEIDIgZG8gbm90IGhhdmUgdGhpcyBmZWF0dXJlLgorICAgIGZyZWVic2QyKikKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICBocHV4OSopCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKworICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKyAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworICAgICAgOzsKKworICAgIGhwdXgxMCopCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgZmkKKyAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nK2IgJGxpYmRpcicKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworCV9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisJIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKwkjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKwlfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIGZpCisgICAgICA7OworCisgICAgaHB1eDExKikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKwljYXNlICRob3N0X2NwdSBpbgorCWhwcGEqNjQqKQorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICA7OworCWlhNjQqKQorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICA7OworCSopCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgOzsKKwllc2FjCisgICAgICBlbHNlCisJY2FzZSAkaG9zdF9jcHUgaW4KKwlocHBhKjY0KikKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIDs7CisJaWE2NCopCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICA7OworCSopCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIDs7CisJZXNhYworICAgICAgZmkKKyAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKwljYXNlICRob3N0X2NwdSBpbgorCWhwcGEqNjQqfGlhNjQqKQorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKwkgIDs7CisJKikKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKworCSAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKwkgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisJICA7OworCWVzYWMKKyAgICAgIGZpCisgICAgICA7OworCisgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCisgICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisgICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKyAgICAgICAgQUNfTElOS19JRkVMU0UoaW50IGZvbyh2b2lkKSB7fSwKKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICAgKQorICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgZmkKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0nbm8nCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorICAgICAgX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgICAgIDs7CisKKyAgICBuZXRic2QqKQorICAgICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJyAgIyBhLm91dAorICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycgICAgICAjIEVMRgorICAgICAgZmkKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICBuZXdzb3M2KQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgICpudG8qIHwgKnFueCopCisgICAgICA7OworCisgICAgb3BlbmJzZCopCisgICAgICBpZiB0ZXN0IC1mIC91c3IvbGliZXhlYy9sZC5zbzsgdGhlbgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisJX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworCWlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHMnCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisJZWxzZQorCSAgY2FzZSAkaG9zdF9vcyBpbgorCSAgIG9wZW5ic2RbWzAxXV0uKiB8IG9wZW5ic2QyLltbMC03XV0gfCBvcGVuYnNkMi5bWzAtN11dLiopCisJICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCSAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKwkgICAgIDs7CisJICAgKikKKwkgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJworCSAgICAgOzsKKwkgIGVzYWMKKwlmaQorICAgICAgZWxzZQorCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgIGZpCisgICAgICA7OworCisgICAgb3MyKikKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIDs7CisKKyAgICBvc2YzKikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICA7OworCisgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lOyBwcmludGYgIiVzXFxuIiAiLWhpZGRlbiI+PiAkbGliLmV4cH4KKwkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKKworCSMgQm90aCBjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCisgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKyAgICAgIDs7CisKKyAgICBzb2xhcmlzKikKKyAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16IGRlZnMnCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCXdsYXJjPScke3dsfScKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgIGVsc2UKKwljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKwkqIkNvbXBpbGVycyA1LjAiKikKKwkgIHdsYXJjPScnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CisJICAkTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc34kUk0gJGxpYi5leHAnCisJICA7OworCSopCisJICB3bGFyYz0nJHt3bH0nCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKwkgICRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1NICRsaWIuZXhwIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworCSAgOzsKKwllc2FjCisgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICBjYXNlICRob3N0X29zIGluCisgICAgICBzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OworICAgICAgKikKKwkjIFRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBjb21iaW5lIGFuZCByZW9yZGVyIGxpbmtlciBvcHRpb25zLAorCSMgYnV0IHVuZGVyc3RhbmRzIGAteiBsaW5rZXJfZmxhZycuICBHQ0MgZGlzY2FyZHMgaXQgd2l0aG91dCBgJHdsJywKKwkjIGJ1dCBpcyBjYXJlZnVsIGVub3VnaCBub3QgdG8gcmVvcmRlci4KKwkjIFN1cHBvcnRlZCBzaW5jZSBTb2xhcmlzIDIuNiAobWF5YmUgMi41LjE/KQorCWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXogJHt3bH1hbGxleHRyYWN0JGNvbnZlbmllbmNlICR7d2x9LXogJHt3bH1kZWZhdWx0ZXh0cmFjdCcKKwllbHNlCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy16IGFsbGV4dHJhY3QkY29udmVuaWVuY2UgLXogZGVmYXVsdGV4dHJhY3QnCisJZmkKKwk7OworICAgICAgZXNhYworICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisgICAgICA7OworCisgICAgc3Vub3M0KikKKyAgICAgIGlmIHRlc3QgIngkaG9zdF92ZW5kb3IiID0geHNlcXVlbnQ7IHRoZW4KKwkjIFVzZSAkQ0MgdG8gbGluayB1bmRlciBzZXF1ZW50LCBiZWNhdXNlIGl0IHRocm93cyBpbiBzb21lIGV4dHJhIC5vCisJIyBmaWxlcyB0aGF0IG1ha2UgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zIHdvcmsuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLWFzc2VydCBwdXJlLXRleHQgLUJzdGF0aWMgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgZmkKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgIHN5c3Y0KQorICAgICAgY2FzZSAkaG9zdF92ZW5kb3IgaW4KKwlzbmkpCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcyAjIGlzIHRoaXMgcmVhbGx5IHRydWU/Pz8KKwk7OworCXNpZW1lbnMpCisJICAjIyBMRCBpcyBsZCBpdCBtYWtlcyBhIFBMQU1MSUIKKwkgICMjIENDIGp1c3QgbWFrZXMgYSBHcm9zc01vZHVsZS4KKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JyRDQyAtciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworICAgICAgICA7OworCW1vdG9yb2xhKQorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubyAjTW90b3JvbGEgbWFudWFsIHNheXMgeWVzLCBidXQgbXkgdGVzdHMgc2F5IHRoZXkgbGllCisJOzsKKyAgICAgIGVzYWMKKyAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgc3lzdjQuMyopCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nLUJleHBvcnQnCisgICAgICA7OworCisgICAgc3lzdjQqTVAqKQorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworCXJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRICisJaGFyZGNvZGVfcnVucGF0aF92YXI9eWVzCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT15ZXMKKyAgICAgIGZpCisgICAgICA7OworCisgICAgc3lzdjQqdXcyKiB8IHN5c3Y1T3BlblVOSVgqIHwgc3lzdjVVbml4V2FyZTcuW1swMV1dLltbMTBdXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bWzAyNF1dKikKKyAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJworCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBmaQorICAgICAgOzsKKworICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiopCisgICAgICAjIE5vdGU6IFdlIGNhbiBOT1QgdXNlIC16IGRlZnMgYXMgd2UgbWlnaHQgZGVzaXJlLCBiZWNhdXNlIHdlIGRvIG5vdAorICAgICAgIyBsaW5rIHdpdGggLWxjLCBhbmQgdGhhdCB3b3VsZCBjYXVzZSBhbnkgc3ltYm9scyB1c2VkIGZyb20gbGliYyB0bworICAgICAgIyBhbHdheXMgYmUgdW5yZXNvbHZlZCwgd2hpY2ggbWVhbnMganVzdCBhYm91dCBubyBsaWJyYXJ5IHdvdWxkCisgICAgICAjIGV2ZXIgbGluayBjb3JyZWN0bHkuICBJZiB3ZSdyZSBub3QgdXNpbmcgR05VIGxkIHdlIHVzZSAteiB0ZXh0CisgICAgICAjIHRob3VnaCwgd2hpY2ggZG9lcyBjYXRjaCBzb21lIGJhZCBzeW1ib2xzIGJ1dCBpc24ndCBhcyBoZWF2eS1oYW5kZWQKKyAgICAgICMgYXMgLXogZGVmcy4KKyAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JworICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScke3dsfS16LG5vZGVmcycKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SLCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0nOicKKyAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tQmV4cG9ydCcKKyAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKKworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICB1dHM0KikKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgICopCisgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICA7OworICAgIGVzYWMKKworICAgIGlmIHRlc3QgeCRob3N0X3ZlbmRvciA9IHhzbmk7IHRoZW4KKyAgICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgIHN5c3Y0IHwgc3lzdjQuMnV3MiogfCBzeXN2NC4zKiB8IHN5c3Y1KikKKwlfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1CbGFyZ2VkeW5zeW0nCisJOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICBmaQorXSkKK0FDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpXSkKK3Rlc3QgIiRfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpIiA9IG5vICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KKworX0xUX1RBR1ZBUih3aXRoX2dudV9sZCwgJDEpPSR3aXRoX2dudV9sZAorCitfTFRfREVDTChbXSwgW2xpYmV4dF0sIFswXSwgW09sZCBhcmNoaXZlIHN1ZmZpeCAobm9ybWFsbHkgImEiKV0pZG5sCitfTFRfREVDTChbXSwgW3NocmV4dF9jbWRzXSwgWzFdLCBbU2hhcmVkIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAiLnNvIildKWRubAorX0xUX0RFQ0woW10sIFtleHRyYWN0X2V4cHN5bXNfY21kc10sIFsyXSwKKyAgICBbVGhlIGNvbW1hbmRzIHRvIGV4dHJhY3QgdGhlIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gYSBzaGFyZWQgYXJjaGl2ZV0pCisKKyMKKyMgRG8gd2UgbmVlZCB0byBleHBsaWNpdGx5IGxpbmsgbGliYz8KKyMKK2Nhc2UgIngkX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpIiBpbgoreHx4eWVzKQorICAjIEFzc3VtZSAtbGMgc2hvdWxkIGJlIGFkZGVkCisgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKworICBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBjYXNlICRfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpIGluCisgICAgKid+JyopCisgICAgICAjIEZJWE1FOiB3ZSBtYXkgaGF2ZSB0byBkZWFsIHdpdGggbXVsdGktY29tbWFuZCBzZXF1ZW5jZXMuCisgICAgICA7OworICAgICckQ0MgJyopCisgICAgICAjIFRlc3Qgd2hldGhlciB0aGUgY29tcGlsZXIgaW1wbGljaXRseSBsaW5rcyB3aXRoIC1sYyBzaW5jZSBvbiBzb21lCisgICAgICAjIHN5c3RlbXMsIC1sZ2NjIGhhcyB0byBjb21lIGJlZm9yZSAtbGMuIElmIGdjYyBhbHJlYWR5IHBhc3NlcyAtbGMKKyAgICAgICMgdG8gbGQsIGRvbid0IGFkZCAtbGMgYmVmb3JlIC1sZ2NjLgorICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW5dKQorICAgICAgJFJNIGNvbmZ0ZXN0KgorICAgICAgZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CisKKyAgICAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXJyOyB0aGVuCisgICAgICAgIHNvbmFtZT1jb25mdGVzdAorICAgICAgICBsaWI9Y29uZnRlc3QKKyAgICAgICAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0CisgICAgICAgIGRlcGxpYnM9CisgICAgICAgIHdsPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKQorCXBpY19mbGFnPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKKyAgICAgICAgY29tcGlsZXJfZmxhZ3M9LXYKKyAgICAgICAgbGlua2VyX2ZsYWdzPS12CisgICAgICAgIHZlcnN0cmluZz0KKyAgICAgICAgb3V0cHV0X29iamRpcj0uCisgICAgICAgIGxpYm5hbWU9Y29uZnRlc3QKKyAgICAgICAgbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZz0kX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpCisgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KKyAgICAgICAgaWYgQUNfVFJZX0VWQUwoX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKKyAgICAgICAgdGhlbgorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisgICAgICAgIGVsc2UKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKyAgICAgICAgZmkKKyAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCisgICAgICBlbHNlCisgICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQorICAgICAgZmkKKyAgICAgICRSTSBjb25mdGVzdCoKKyAgICAgIEFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSldKQorICAgICAgOzsKKyAgICBlc2FjCisgIGZpCisgIDs7Citlc2FjCisKK19MVF9UQUdERUNMKFtidWlsZF9saWJ0b29sX25lZWRfbGNdLCBbYXJjaGl2ZV9jbWRzX25lZWRfbGNdLCBbMF0sCisgICAgW1doZXRoZXIgb3Igbm90IHRvIGFkZCAtbGMgZm9yIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJpZXNdKQorX0xUX1RBR0RFQ0woW2FsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lc10sCisgICAgW2VuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNdLCBbMF0sCisgICAgW1doZXRoZXIgb3Igbm90IHRvIGRpc2FsbG93IHNoYXJlZCBsaWJzIHdoZW4gcnVudGltZSBsaWJzIGFyZSBzdGF0aWNdKQorX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfZHluYW1pY19mbGFnX3NwZWNdLCBbMV0sCisgICAgW0NvbXBpbGVyIGZsYWcgdG8gYWxsb3cgcmVmbGV4aXZlIGRsb3BlbnNdKQorX0xUX1RBR0RFQ0woW10sIFt3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY10sIFsxXSwKKyAgICBbQ29tcGlsZXIgZmxhZyB0byBnZW5lcmF0ZSBzaGFyZWQgb2JqZWN0cyBkaXJlY3RseSBmcm9tIGFyY2hpdmVzXSkKK19MVF9UQUdERUNMKFtdLCBbY29tcGlsZXJfbmVlZHNfb2JqZWN0XSwgWzFdLAorICAgIFtXaGV0aGVyIHRoZSBjb21waWxlciBjb3BlcyB3aXRoIHBhc3Npbmcgbm8gb2JqZWN0cyBkaXJlY3RseV0pCitfTFRfVEFHREVDTChbXSwgW29sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHNdLCBbMl0sCisgICAgW0NyZWF0ZSBhbiBvbGQtc3R5bGUgYXJjaGl2ZSBmcm9tIGEgc2hhcmVkIGFyY2hpdmVdKQorX0xUX1RBR0RFQ0woW10sIFtvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kc10sIFsyXSwKKyAgICBbQ3JlYXRlIGEgdGVtcG9yYXJ5IG9sZC1zdHlsZSBhcmNoaXZlIHRvIGxpbmsgaW5zdGVhZCBvZiBhIHNoYXJlZCBhcmNoaXZlXSkKK19MVF9UQUdERUNMKFtdLCBbYXJjaGl2ZV9jbWRzXSwgWzJdLCBbQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhIHNoYXJlZCBhcmNoaXZlXSkKK19MVF9UQUdERUNMKFtdLCBbYXJjaGl2ZV9leHBzeW1fY21kc10sIFsyXSkKK19MVF9UQUdERUNMKFtdLCBbbW9kdWxlX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYSBsb2FkYWJsZSBtb2R1bGUgaWYgZGlmZmVyZW50IGZyb20gYnVpbGRpbmcKKyAgICBhIHNoYXJlZCBhcmNoaXZlLl0pCitfTFRfVEFHREVDTChbXSwgW21vZHVsZV9leHBzeW1fY21kc10sIFsyXSkKK19MVF9UQUdERUNMKFtdLCBbd2l0aF9nbnVfbGRdLCBbMV0sCisgICAgW1doZXRoZXIgd2UgYXJlIGJ1aWxkaW5nIHdpdGggR05VIGxkIG9yIG5vdF0pCitfTFRfVEFHREVDTChbXSwgW2FsbG93X3VuZGVmaW5lZF9mbGFnXSwgWzFdLAorICAgIFtGbGFnIHRoYXQgYWxsb3dzIHNoYXJlZCBsaWJyYXJpZXMgd2l0aCB1bmRlZmluZWQgc3ltYm9scyB0byBiZSBidWlsdF0pCitfTFRfVEFHREVDTChbXSwgW25vX3VuZGVmaW5lZF9mbGFnXSwgWzFdLAorICAgIFtGbGFnIHRoYXQgZW5mb3JjZXMgbm8gdW5kZWZpbmVkIHN5bWJvbHNdKQorX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXSwgWzFdLAorICAgIFtGbGFnIHRvIGhhcmRjb2RlICRsaWJkaXIgaW50byBhIGJpbmFyeSBkdXJpbmcgbGlua2luZy4KKyAgICBUaGlzIG11c3Qgd29yayBldmVuIGlmICRsaWJkaXIgZG9lcyBub3QgZXhpc3RdKQorX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXSwgWzFdLAorICAgIFtbSWYgbGQgaXMgdXNlZCB3aGVuIGxpbmtpbmcsIGZsYWcgdG8gaGFyZGNvZGUgJGxpYmRpciBpbnRvIGEgYmluYXJ5CisgICAgZHVyaW5nIGxpbmtpbmcuICBUaGlzIG11c3Qgd29yayBldmVuIGlmICRsaWJkaXIgZG9lcyBub3QgZXhpc3RdXSkKK19MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcl0sIFsxXSwKKyAgICBbV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlICItcnBhdGgiIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudF0pCitfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2RpcmVjdF0sIFswXSwKKyAgICBbU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKKyAgICBESVIgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeV0pCitfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZV0sIFswXSwKKyAgICBbU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKKyAgICBESVIgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeSBhbmQgdGhlIHJlc3VsdGluZyBsaWJyYXJ5IGRlcGVuZGVuY3kgaXMKKyAgICAiYWJzb2x1dGUiLCBpLmUgaW1wb3NzaWJsZSB0byBjaGFuZ2UgYnkgc2V0dGluZyAke3NobGlicGF0aF92YXJ9IGlmIHRoZQorICAgIGxpYnJhcnkgaXMgcmVsb2NhdGVkXSkKK19MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbWludXNfTF0sIFswXSwKKyAgICBbU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIHRoZSAtTERJUiBmbGFnIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIKKyAgICBpbnRvIHRoZSByZXN1bHRpbmcgYmluYXJ5XSkKK19MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl0sIFswXSwKKyAgICBbU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIFNITElCUEFUSF9WQVI9RElSIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIKKyAgICBpbnRvIHRoZSByZXN1bHRpbmcgYmluYXJ5XSkKK19MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfYXV0b21hdGljXSwgWzBdLAorICAgIFtTZXQgdG8gInllcyIgaWYgYnVpbGRpbmcgYSBzaGFyZWQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGhhcmRjb2RlcyBESVIKKyAgICBpbnRvIHRoZSBsaWJyYXJ5IGFuZCBhbGwgc3Vic2VxdWVudCBsaWJyYXJpZXMgYW5kIGV4ZWN1dGFibGVzIGxpbmtlZAorICAgIGFnYWluc3QgaXRdKQorX0xUX1RBR0RFQ0woW10sIFtpbmhlcml0X3JwYXRoXSwgWzBdLAorICAgIFtTZXQgdG8geWVzIGlmIGxpbmtlciBhZGRzIHJ1bnRpbWUgcGF0aHMgb2YgZGVwZW5kZW50IGxpYnJhcmllcworICAgIHRvIHJ1bnRpbWUgcGF0aCBsaXN0XSkKK19MVF9UQUdERUNMKFtdLCBbbGlua19hbGxfZGVwbGlic10sIFswXSwKKyAgICBbV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzXSkKK19MVF9UQUdERUNMKFtdLCBbZml4X3NyY2ZpbGVfcGF0aF0sIFsxXSwKKyAgICBbRml4IHRoZSBzaGVsbCB2YXJpYWJsZSAkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyXSkKK19MVF9UQUdERUNMKFtdLCBbYWx3YXlzX2V4cG9ydF9zeW1ib2xzXSwgWzBdLAorICAgIFtTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWRdKQorX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfc3ltYm9sc19jbWRzXSwgWzJdLAorICAgIFtUaGUgY29tbWFuZHMgdG8gbGlzdCBleHBvcnRlZCBzeW1ib2xzXSkKK19MVF9UQUdERUNMKFtdLCBbZXhjbHVkZV9leHBzeW1zXSwgWzFdLAorICAgIFtTeW1ib2xzIHRoYXQgc2hvdWxkIG5vdCBiZSBsaXN0ZWQgaW4gdGhlIHByZWxvYWRlZCBzeW1ib2xzXSkKK19MVF9UQUdERUNMKFtdLCBbaW5jbHVkZV9leHBzeW1zXSwgWzFdLAorICAgIFtTeW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0ZWRdKQorX0xUX1RBR0RFQ0woW10sIFtwcmVsaW5rX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzXSkKK19MVF9UQUdERUNMKFtdLCBbZmlsZV9saXN0X3NwZWNdLCBbMV0sCisgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlc10pCitkbmwgRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKK2RubCBfTFRfVEFHREVDTChbXSwgW3RocmVhZF9zYWZlX2ZsYWdfc3BlY10sIFsxXSwKK2RubCAgICBbQ29tcGlsZXIgZmxhZyB0byBnZW5lcmF0ZSB0aHJlYWQgc2FmZSBvYmplY3RzXSkKK10pIyBfTFRfTElOS0VSX1NITElCUworCisKKyMgX0xUX0xBTkdfQ19DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgQyBjb21waWxlciBhcmUgc3VpdGFibHkKKyMgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRyB0byB3cml0ZQorIyB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCittNF9kZWZ1bihbX0xUX0xBTkdfQ19DT05GSUddLAorW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKK2x0X3NhdmVfQ0M9IiRDQyIKK0FDX0xBTkdfUFVTSChDKQorCisjIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgQyB0ZXN0IHNvdXJjZXMuCithY19leHQ9YworCisjIE9iamVjdCBmaWxlIGV4dGVuc2lvbiBmb3IgY29tcGlsZWQgQyB0ZXN0IHNvdXJjZXMuCitvYmpleHQ9bworX0xUX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0CisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCitsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9ImludCBzb21lX3ZhcmlhYmxlID0gMDsiCisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCitsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J2ludCBtYWluKCl7cmV0dXJuKDApO30nCisKK19MVF9UQUdfQ09NUElMRVIKKyMgU2F2ZSB0aGUgZGVmYXVsdCBjb21waWxlciwgc2luY2UgaXQgZ2V0cyBvdmVyd3JpdHRlbiB3aGVuIHRoZSBvdGhlcgorIyB0YWdzIGFyZSBiZWluZyB0ZXN0ZWQsIGFuZCBfTFRfVEFHVkFSKGNvbXBpbGVyLCBbXSkgaXMgYSBOT1AuCitjb21waWxlcl9ERUZBVUxUPSRDQworCisjIHNhdmUgd2FybmluZ3MvYm9pbGVycGxhdGUgb2Ygc2ltcGxlIHRlc3QgY29kZQorX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCitfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisKKyMjIENBVkVBVCBFTVBUT1I6CisjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQorIyMgdGhlIHJ1bm5pbmcgb3JkZXIgb3Igb3RoZXJ3aXNlIG1vdmUgdGhlbSBhcm91bmQgdW5sZXNzIHlvdSBrbm93IGV4YWN0bHkKKyMjIHdoYXQgeW91IGFyZSBkb2luZy4uLgoraWYgdGVzdCAtbiAiJGNvbXBpbGVyIjsgdGhlbgorICBfTFRfQ09NUElMRVJfTk9fUlRUSSgkMSkKKyAgX0xUX0NPTVBJTEVSX1BJQygkMSkKKyAgX0xUX0NPTVBJTEVSX0NfTygkMSkKKyAgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MoJDEpCisgIF9MVF9MSU5LRVJfU0hMSUJTKCQxKQorICBfTFRfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQorICBfTFRfTElOS0VSX0hBUkRDT0RFX0xJQlBBVEgoJDEpCisgIExUX1NZU19ETE9QRU5fU0VMRgorICBfTFRfQ01EX1NUUklQTElCCisKKyAgIyBSZXBvcnQgd2hpY2ggbGlicmFyeSB0eXBlcyB3aWxsIGFjdHVhbGx5IGJlIGJ1aWx0CisgIEFDX01TR19DSEVDS0lORyhbaWYgbGlidG9vbCBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKKyAgQUNfTVNHX1JFU1VMVChbJGNhbl9idWlsZF9zaGFyZWRdKQorCisgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzXSkKKyAgdGVzdCAiJGNhbl9idWlsZF9zaGFyZWQiID0gIm5vIiAmJiBlbmFibGVfc2hhcmVkPW5vCisKKyAgIyBPbiBBSVgsIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHN0YXRpYyBsaWJyYXJpZXMgdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSwgYW5kCisgICMgYXJlIGFsbCBidWlsdCBmcm9tIFBJQy4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICBhaXgzKikKKyAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworICAgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCisgICAgICBhcmNoaXZlX2NtZHM9IiRhcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRsaWIiCisgICAgICBwb3N0aW5zdGFsbF9jbWRzPSckUkFOTElCICRsaWInCisgICAgZmkKKyAgICA7OworCisgIGFpeFtbNC05XV0qKQorICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NCAmJiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSBubyA7IHRoZW4KKyAgICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisgICAgZmkKKyAgICA7OworICBlc2FjCisgIEFDX01TR19SRVNVTFQoWyRlbmFibGVfc2hhcmVkXSkKKworICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllc10pCisgICMgTWFrZSBzdXJlIGVpdGhlciBlbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaXMgeWVzLgorICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgfHwgZW5hYmxlX3N0YXRpYz15ZXMKKyAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zdGF0aWNdKQorCisgIF9MVF9DT05GSUcoJDEpCitmaQorQUNfTEFOR19QT1AKK0NDPSIkbHRfc2F2ZV9DQyIKK10pIyBfTFRfTEFOR19DX0NPTkZJRworCisKKyMgX0xUX1BST0dfQ1hYCisjIC0tLS0tLS0tLS0tLQorIyBTaW5jZSBBQ19QUk9HX0NYWCBpcyBicm9rZW4sIGluIHRoYXQgaXQgcmV0dXJucyBnKysgaWYgdGhlcmUgaXMgbm8gYysrCisjIGNvbXBpbGVyLCB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBoZXJlLgorbTRfZGVmdW4oW19MVF9QUk9HX0NYWF0sCitbCitwdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2NhdWdodF9DWFhfZXJyb3I9eWVzXSkKK0FDX1BST0dfQ1hYCitpZiB0ZXN0IC1uICIkQ1hYIiAmJiAoIHRlc3QgIlgkQ1hYIiAhPSAiWG5vIiAmJgorICAgICggKHRlc3QgIlgkQ1hYIiA9ICJYZysrIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAorICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgorICBBQ19QUk9HX0NYWENQUAorZWxzZQorICBfbHRfY2F1Z2h0X0NYWF9lcnJvcj15ZXMKK2ZpCitwb3BkZWYoW0FDX01TR19FUlJPUl0pCitdKSMgX0xUX1BST0dfQ1hYCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbX0xUX1BST0dfQ1hYXSwgW10pCisKKworIyBfTFRfTEFOR19DWFhfQ09ORklHKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgQysrIGNvbXBpbGVyIGFyZSBzdWl0YWJseQorIyBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHIHRvIHdyaXRlCisjIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKK1tBQ19SRVFVSVJFKFtfTFRfUFJPR19DWFhdKWRubAorbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCisKK0FDX0xBTkdfUFVTSChDKyspCitfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KK19MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KK19MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KK19MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPQorX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT1ubworX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQorX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9CitfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPW5vCitfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZAorX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT1ubworX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9bm8KK19MVF9UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0KK19MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CitfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCitfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQorX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KKworIyBTb3VyY2UgZmlsZSBleHRlbnNpb24gZm9yIEMrKyB0ZXN0IHNvdXJjZXMuCithY19leHQ9Y3BwCisKKyMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBDKysgdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIE5vIHNlbnNlIGluIHJ1bm5pbmcgYWxsIHRoZXNlIHRlc3RzIGlmIHdlIGFscmVhZHkgZGV0ZXJtaW5lZCB0aGF0CisjIHRoZSBDWFggY29tcGlsZXIgaXNuJ3Qgd29ya2luZy4gIFNvbWUgdmFyaWFibGVzIChsaWtlIGVuYWJsZV9zaGFyZWQpCisjIGFyZSBjdXJyZW50bHkgYXNzdW1lZCB0byBhcHBseSB0byBhbGwgY29tcGlsZXJzIG9uIHRoaXMgcGxhdGZvcm0sCisjIGFuZCB3aWxsIGJlIGNvcnJ1cHRlZCBieSBzZXR0aW5nIHRoZW0gYmFzZWQgb24gYSBub24td29ya2luZyBjb21waWxlci4KK2lmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCisgIGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iaW50IHNvbWVfdmFyaWFibGUgPSAwOyIKKworICAjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cworICBsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J2ludCBtYWluKGludCwgY2hhciAqW1tdXSkgeyByZXR1cm4oMCk7IH0nCisKKyAgIyBsdG1haW4gb25seSB1c2VzICRDQyBmb3IgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHNvIG1ha2Ugc3VyZSAkQ0MgaXMgc2V0LgorICBfTFRfVEFHX0NPTVBJTEVSCisKKyAgIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKKyAgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCisgIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKworICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICBsdF9zYXZlX0NDPSRDQworICBsdF9zYXZlX0xEPSRMRAorICBsdF9zYXZlX0dDQz0kR0NDCisgIEdDQz0kR1hYCisgIGx0X3NhdmVfd2l0aF9nbnVfbGQ9JHdpdGhfZ251X2xkCisgIGx0X3NhdmVfcGF0aF9MRD0kbHRfY3ZfcGF0aF9MRAorICBpZiB0ZXN0IC1uICIke2x0X2N2X3Byb2dfZ251X2xkY3h4K3NldH0iOyB0aGVuCisgICAgbHRfY3ZfcHJvZ19nbnVfbGQ9JGx0X2N2X3Byb2dfZ251X2xkY3h4CisgIGVsc2UKKyAgICAkYXNfdW5zZXQgbHRfY3ZfcHJvZ19nbnVfbGQKKyAgZmkKKyAgaWYgdGVzdCAtbiAiJHtsdF9jdl9wYXRoX0xEQ1hYK3NldH0iOyB0aGVuCisgICAgbHRfY3ZfcGF0aF9MRD0kbHRfY3ZfcGF0aF9MRENYWAorICBlbHNlCisgICAgJGFzX3Vuc2V0IGx0X2N2X3BhdGhfTEQKKyAgZmkKKyAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKKyAgQ0M9JHtDWFgtImMrKyJ9CisgIGNvbXBpbGVyPSRDQworICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKKworICBpZiB0ZXN0IC1uICIkY29tcGlsZXIiOyB0aGVuCisgICAgIyBXZSBkb24ndCB3YW50IC1mbm8tZXhjZXB0aW9uIHdoZW4gY29tcGlsaW5nIEMrKyBjb2RlLCBzbyBzZXQgdGhlCisgICAgIyBub19idWlsdGluX2ZsYWcgc2VwYXJhdGVseQorICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtZm5vLWJ1aWx0aW4nCisgICAgZWxzZQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPQorICAgIGZpCisKKyAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgICAgIyBTZXQgdXAgZGVmYXVsdCBHTlUgQysrIGNvbmZpZ3VyYXRpb24KKworICAgICAgTFRfUEFUSF9MRAorCisgICAgICAjIENoZWNrIGlmIEdOVSBDKysgdXNlcyBHTlUgbGQgYXMgdGhlIHVuZGVybHlpbmcgbGlua2VyLCBzaW5jZSB0aGUKKyAgICAgICMgYXJjaGl2aW5nIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGF0IEdOVSBsZCBpcyBiZWluZyB1c2VkLgorICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisKKyAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworCisgICAgICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CisgICAgICAgICMgWFhYIEkgdGhpbmsgd2xhcmMgY2FuIGJlIGVsaW1pbmF0ZWQgaW4gbHRjZi1jeHgsIGJ1dCBJIG5lZWQgdG8KKyAgICAgICAgIyAgICAgaW52ZXN0aWdhdGUgaXQgYSBsaXR0bGUgYml0IG1vcmUuIChNTSkKKyAgICAgICAgd2xhcmM9JyR7d2x9JworCisgICAgICAgICMgYW5jaWVudCBHTlUgbGQgZGlkbid0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlIGV0LiBhbC4KKyAgICAgICAgaWYgZXZhbCAiYCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkYCAtLWhlbHAgMj4mMSIgfAorCSAgJEdSRVAgJ25vLXdob2xlLWFyY2hpdmUnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJworICAgICAgICBlbHNlCisgICAgICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorICAgICAgICBmaQorICAgICAgZWxzZQorICAgICAgICB3aXRoX2dudV9sZD1ubworICAgICAgICB3bGFyYz0KKworICAgICAgICAjIEEgZ2VuZXJpYyBhbmQgdmVyeSBzaW1wbGUgZGVmYXVsdCBzaGFyZWQgbGlicmFyeSBjcmVhdGlvbgorICAgICAgICAjIGNvbW1hbmQgZm9yIEdOVSBDKysgZm9yIHRoZSBjYXNlIHdoZXJlIGl0IHVzZXMgdGhlIG5hdGl2ZQorICAgICAgICAjIGxpbmtlciwgaW5zdGVhZCBvZiBHTlUgbGQuICBJZiBwb3NzaWJsZSwgdGhpcyBzZXR0aW5nIHNob3VsZAorICAgICAgICAjIG92ZXJyaWRkZW4gdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG5hdGl2ZSBsaW5rZXIgZmVhdHVyZXMgb24KKyAgICAgICAgIyB0aGUgcGxhdGZvcm0gaXQgaXMgYmVpbmcgdXNlZCBvbi4KKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkbGliJworICAgICAgZmkKKworICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKyAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCisgICAgZWxzZQorICAgICAgR1hYPW5vCisgICAgICB3aXRoX2dudV9sZD1ubworICAgICAgd2xhcmM9CisgICAgZmkKKworICAgICMgUE9SVE1FOiBmaWxsIGluIGEgZGVzY3JpcHRpb24gb2YgeW91ciBzeXN0ZW0ncyBDKysgbGluayBjaGFyYWN0ZXJpc3RpY3MKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCisgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT15ZXMKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBhaXgzKikKKyAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgOzsKKyAgICAgIGFpeFtbNC05XV0qKQorICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICAgICMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKKyAgICAgICAgICAjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KKyAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisgICAgICAgICAgZXhwX3N5bV9mbGFnPSctQmV4cG9ydCcKKyAgICAgICAgICBub19lbnRyeV9mbGFnPSIiCisgICAgICAgIGVsc2UKKyAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisKKyAgICAgICAgICAjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKKyAgICAgICAgICAjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKKyAgICAgICAgICAjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bWzIzXV18YWl4NC5bWzIzXV0uKnxhaXhbWzUtOV1dKikKKwkgICAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCisJICAgICAgY2FzZSAkbGRfZmxhZyBpbgorCSAgICAgICotYnJ0bCopCisJICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcworCSAgICAgICAgYnJlYWsKKwkgICAgICAgIDs7CisJICAgICAgZXNhYworCSAgICBkb25lCisJICAgIDs7CisgICAgICAgICAgZXNhYworCisgICAgICAgICAgZXhwX3N5bV9mbGFnPSctYmV4cG9ydCcKKyAgICAgICAgICBub19lbnRyeV9mbGFnPSctYm5vZW50cnknCisgICAgICAgIGZpCisKKyAgICAgICAgIyBXaGVuIGxhcmdlIGV4ZWN1dGFibGVzIG9yIHNoYXJlZCBvYmplY3RzIGFyZSBidWlsdCwgQUlYIGxkIGNhbgorICAgICAgICAjIGhhdmUgcHJvYmxlbXMgY3JlYXRpbmcgdGhlIHRhYmxlIG9mIGNvbnRlbnRzLiAgSWYgbGlua2luZyBhIGxpYnJhcnkKKyAgICAgICAgIyBvciBwcm9ncmFtIHJlc3VsdHMgaW4gImVycm9yIFRPQyBvdmVyZmxvdyIgYWRkIC1tbWluaW1hbC10b2MgdG8KKyAgICAgICAgIyBDWFhGTEFHUy9DRkxBR1MgZm9yIGcrKy9nY2MuICBJbiB0aGUgY2FzZXMgd2hlcmUgdGhhdCBpcyBub3QKKyAgICAgICAgIyBlbm91Z2ggdG8gZml4IHRoZSBwcm9ibGVtLCBhZGQgLVdsLC1iYmlndG9jIHRvIExERkxBR1MuCisKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0nOicKKyAgICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisgICAgICAgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nJHt3bH0tZiwnCisKKyAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuW1swMTJdXXxhaXg0LltbMDEyXV0uKikKKyAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIEFJWCA0LjIgYW5kIGxvd2VyLCB0aGUgY2hlY2sKKyAgICAgICAgICAjIGJlbG93IGZvciBicm9rZW4gY29sbGVjdDIgZG9lc24ndCB3b3JrIHVuZGVyIDQuMysKKwkgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKwkgIGlmIHRlc3QgLWYgIiRjb2xsZWN0Mm5hbWUiICYmCisJICAgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8ICRHUkVQIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAorCSAgdGhlbgorCSAgICAjIFdlIGhhdmUgcmV3b3JrZWQgY29sbGVjdDIKKwkgICAgOgorCSAgZWxzZQorCSAgICAjIFdlIGhhdmUgb2xkIGNvbGxlY3QyCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9dW5zdXBwb3J0ZWQKKwkgICAgIyBJdCBmYWlscyB0byBmaW5kIHVuaW5zdGFsbGVkIGxpYnJhcmllcyB3aGVuIHRoZSB1bmluc3RhbGxlZAorCSAgICAjIHBhdGggaXMgbm90IGxpc3RlZCBpbiB0aGUgbGlicGF0aC4gIFNldHRpbmcgaGFyZGNvZGVfbWludXNfTAorCSAgICAjIHRvIHVuc3VwcG9ydGVkIGZvcmNlcyByZWxpbmtpbmcKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQorCSAgZmkKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgc2hhcmVkX2ZsYWc9Jy1zaGFyZWQnCisJICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKwkgICAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCisJICBmaQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBub3QgdXNpbmcgZ2NjCisgICAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwkgICMgVmlzdWFsQWdlIEMrKywgVmVyc2lvbiA1LjUgZm9yIEFJWCA1TCBmb3IgSUEtNjQsIEJldGEgMyBSZWxlYXNlCisJICAjIGNob2tlcyBvbiAtV2wsLUcuIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBjb3JyZWN0OgorCSAgc2hhcmVkX2ZsYWc9Jy1HJworICAgICAgICAgIGVsc2UKKwkgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisJICAgICAgc2hhcmVkX2ZsYWc9JyR7d2x9LUcnCisJICAgIGVsc2UKKwkgICAgICBzaGFyZWRfZmxhZz0nJHt3bH0tYk06U1JFJworCSAgICBmaQorICAgICAgICAgIGZpCisgICAgICAgIGZpCisKKyAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmV4cGFsbCcKKyAgICAgICAgIyBJdCBzZWVtcyB0aGF0IC1iZXhwYWxsIGRvZXMgbm90IGV4cG9ydCBzeW1ib2xzIGJlZ2lubmluZyB3aXRoCisgICAgICAgICMgdW5kZXJzY29yZSAoXyksIHNvIGl0IGlzIGJldHRlciB0byBnZW5lcmF0ZSBhIGxpc3Qgb2Ygc3ltYm9scyB0bworCSMgZXhwb3J0LgorICAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworICAgICAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW50aW1lIGxvYWRpbmcgZmxhZ3MgKC1icnRsKSwKKyAgICAgICAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCisgICAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCisgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5CisgICAgICAgICAgIyBleGVjdXRhYmxlLgorICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisKKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gJEVDSE8gIlgke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiB8ICRYc2VkOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICAgIGVsc2UKKyAgICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCisJICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0iLXogbm9kZWZzIgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyIKKyAgICAgICAgICBlbHNlCisJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCisJICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCisJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm5vdG9rJworCSAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKKwkgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCisJICAgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZAorCSAgICAjIGxpYnJhcmllcy4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAke3dsfS1ibm9lbnRyeSAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzJHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgICA7OworCisgICAgICBiZW9zKikKKwlpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwkgICMgSm9zZXBoIEJlY2tlbmJhY2ggPGpyYjNAYmVzdC5jb20+IHNheXMgc29tZSByZWxlYXNlcyBvZiBnY2MKKwkgICMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwllbHNlCisJICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJZmkKKwk7OworCisgICAgICBjaG9ydXMqKQorICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICAgICopCisJICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKworICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworICAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKworICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKyAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICAgICAgZWxzZQorCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgICAgICBmaX4KKyAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisgICAgICAgIGVsc2UKKyAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgICAgICBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUygkMSkKKwk7OworCisgICAgICBkZ3V4KikKKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBlYysrKikKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKyAgICAgICAgICBnaGN4KikKKwkgICAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKyAgICAgICAgICAqKQorCSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisKKyAgICAgIGZyZWVic2RbWzEyXV0qKQorICAgICAgICAjIEMrKyBzaGFyZWQgbGlicmFyaWVzIHJlcG9ydGVkIHRvIGJlIGZhaXJseSBicm9rZW4gYmVmb3JlCisJIyBzd2l0Y2ggdG8gRUxGCisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgOzsKKworICAgICAgZnJlZWJzZC1lbGYqKQorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKyAgICAgICAgOzsKKworICAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorICAgICAgICAjIEZyZWVCU0QgMyBhbmQgbGF0ZXIgdXNlIEdOVSBDKysgYW5kIEdOVSBsZCB3aXRoIHN0YW5kYXJkIEVMRgorICAgICAgICAjIGNvbnZlbnRpb25zCisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCisgICAgICAgIDs7CisKKyAgICAgIGdudSopCisgICAgICAgIDs7CisKKyAgICAgIGhwdXg5KikKKyAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcyAjIE5vdCBpbiB0aGUgc2VhcmNoIFBBVEgsCisJCQkJICAgICAgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0CisJCQkJICAgICAgICAgICAgICMgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCisKKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBDQyopCisgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgICAgIDs7CisgICAgICAgICAgYUNDKikKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtYiAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworICAgICAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisgICAgICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB3YXkgdG8gcHJldmVudCB0aGlzIGNvbXBpbGVyIGZyb20KKyAgICAgICAgICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCisgICAgICAgICAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CisgICAgICAgICAgICAjIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkRUdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKikKKyAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKworICAgICAgaHB1eDEwKnxocHV4MTEqKQorICAgICAgICBpZiB0ZXN0ICR3aXRoX2dudV9sZCA9IG5vOyB0aGVuCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKyAgICAgICAgICBjYXNlICRob3N0X2NwdSBpbgorICAgICAgICAgICAgaHBwYSo2NCp8aWE2NCopCisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorCSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgZXNhYworICAgICAgICBmaQorICAgICAgICBjYXNlICRob3N0X2NwdSBpbgorICAgICAgICAgIGhwcGEqNjQqfGlhNjQqKQorICAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworICAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKikKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworICAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzICMgTm90IGluIHRoZSBzZWFyY2ggUEFUSCwKKwkJCQkJICAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQKKwkJCQkJICAgICAgICAgIyBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKworICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICAgIENDKikKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKyAgICAgICAgICBhQ0MqKQorCSAgICBjYXNlICRob3N0X2NwdSBpbgorCSAgICAgIGhwcGEqNjQqKQorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgOzsKKwkgICAgICBpYTY0KikKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgIDs7CisJICAgICAgKikKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgOzsKKwkgICAgZXNhYworCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisJICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKwkgICAgIworCSAgICAjIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IHRvIHByZXZlbnQgdGhpcyBjb21waWxlciBmcm9tCisJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCisJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKKwkgICAgIyBkZXBlbmRlbmNpZXMuCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICA7OworICAgICAgICAgICopCisJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisJICAgICAgaWYgdGVzdCAkd2l0aF9nbnVfbGQgPSBubzsgdGhlbgorCSAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKwkgICAgICAgICAgaHBwYSo2NCopCisJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIDs7CisJICAgICAgICAgIGlhNjQqKQorCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgICAgICA7OworCSAgICAgICAgICAqKQorCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIDs7CisJICAgICAgICBlc2FjCisJICAgICAgZmkKKwkgICAgZWxzZQorCSAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgZmkKKwkgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworCisgICAgICBpbnRlcml4W1szLTldXSopCisJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworCV9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisJX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKwkjIEhhY2s6IE9uIEludGVyaXggMy54LCB3ZSBjYW5ub3QgY29tcGlsZSBQSUMgYmVjYXVzZSBvZiBhIGJyb2tlbiBnY2MuCisJIyBJbnN0ZWFkLCBzaGFyZWQgbGlicmFyaWVzIGFyZSBsb2FkZWQgYXQgYW4gaW1hZ2UgYmFzZSAoMHgxMDAwMDAwMCBieQorCSMgZGVmYXVsdCkgYW5kIHJlbG9jYXRlZCBpZiB0aGV5IGNvbmZsaWN0LCB3aGljaCBpcyBhIHNsb3cgdmVyeSBtZW1vcnkKKwkjIGNvbnN1bWluZyBhbmQgZnJhZ21lbnRpbmcgcHJvY2Vzcy4gIFRvIGF2b2lkIHRoaXMsIHdlIHBpY2sgYSByYW5kb20sCisJIyAyNTYgS2lCLWFsaWduZWQgaW1hZ2UgYmFzZSBiZXR3ZWVuIDB4NTAwMDAwMDAgYW5kIDB4NkZGQzAwMDAgYXQgbGluaworCSMgdGltZS4gIE1vdmluZyB1cCBmcm9tIDB4MTAwMDAwMDAgYWxzbyBhbGxvd3MgbW9yZSBzYnJrKDIpIHNwYWNlLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCisJOzsKKyAgICAgIGlyaXg1KiB8IGlyaXg2KikKKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBDQyopCisJICAgICMgU0dJIEMrKworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtYWxsIC1tdWx0aWdvdCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisKKwkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCisJICAgICMgIkNDIC1hciIsIHdoZXJlICJDQyIgaXMgdGhlIElSSVggQysrIGNvbXBpbGVyLiAgVGhpcyBpcworCSAgICAjIG5lY2Vzc2FyeSB0byBtYWtlIHN1cmUgaW5zdGFudGlhdGVkIHRlbXBsYXRlcyBhcmUgaW5jbHVkZWQKKwkgICAgIyBpbiB0aGUgYXJjaGl2ZS4KKwkgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYXIgLVdSLC11IC1vICRvbGRsaWIgJG9sZG9ianMnCisJICAgIDs7CisgICAgICAgICAgKikKKwkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKwkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgZWxzZQorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgLW8gJGxpYicKKwkgICAgICBmaQorCSAgICBmaQorCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKwkgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICAgIF9MVF9UQUdWQVIoaW5oZXJpdF9ycGF0aCwgJDEpPXllcworICAgICAgICA7OworCisgICAgICBsaW51eCogfCBrKmJzZCotZ251KQorICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICAgIEtDQyopCisJICAgICMgS3VjayBhbmQgQXNzb2NpYXRlcywgSW5jLiAoS0FJKSBDKysgQ29tcGlsZXIKKworCSAgICAjIEtDQyB3aWxsIG9ubHkgY3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkgaWYgdGhlIG91dHB1dCBmaWxlCisJICAgICMgZW5kcyB3aXRoICIuc28iIChvciAiLnNsIiBmb3IgSFAtVVgpLCBzbyByZW5hbWUgdGhlIGxpYnJhcnkKKwkgICAgIyB0byBpdHMgcHJvcGVyIG5hbWUgKHdpdGggdmVyc2lvbikgYWZ0ZXIgbGlua2luZy4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWI7IG12IFwkdGVtcGxpYiAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWIgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHM7IG12IFwkdGVtcGxpYiAkbGliJworCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisJICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKwkgICAgIworCSAgICAjIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IHRvIHByZXZlbnQgdGhpcyBjb21waWxlciBmcm9tCisJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCisJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKKwkgICAgIyBkZXBlbmRlbmNpZXMuCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgcm0gLWYgbGliY29uZnRlc3Qkc2hhcmVkX2V4dDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKworCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKKwkgICAgIyAiQ0MgLUJzdGF0aWMiLCB3aGVyZSAiQ0MiIGlzIHRoZSBLQUkgQysrIGNvbXBpbGVyLgorCSAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1Cc3RhdGljIC1vICRvbGRsaWIgJG9sZG9ianMnCisJICAgIDs7CisJICBpY3BjKiB8IGVjcGMqICkKKwkgICAgIyBJbnRlbCBDKysKKwkgICAgd2l0aF9nbnVfbGQ9eWVzCisJICAgICMgdmVyc2lvbiA4LjAgYW5kIGFib3ZlIG9mIGljcGMgY2hva2Ugb24gbXVsdGlwbHkgZGVmaW5lZCBzeW1ib2xzCisJICAgICMgaWYgd2UgYWRkICRwcmVkZXBfb2JqZWN0cyBhbmQgJHBvc3RkZXBfb2JqZWN0cywgaG93ZXZlciA3LjEgYW5kCisJICAgICMgZWFybGllciBkbyBub3QgYWRkIHRoZSBvYmplY3RzIHRoZW1zZWx2ZXMuCisJICAgIGNhc2UgYCRDQyAtViAyPiYxYCBpbgorCSAgICAgICoiVmVyc2lvbiA3LiIqKQorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkJOzsKKwkgICAgICAqKSAgIyBWZXJzaW9uIDguMCBvciBuZXdlcgorCSAgICAgICAgdG1wX2lkeW49CisJICAgICAgICBjYXNlICRob3N0X2NwdSBpbgorCQkgIGlhNjQqKSB0bXBfaWR5bj0nIC1pX2R5bmFtaWMnOzsKKwkJZXNhYworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQnIiR0bXBfaWR5biInICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQnIiR0bXBfaWR5biInICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCQk7OworCSAgICBlc2FjCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICA7OworICAgICAgICAgIHBnQ0MqIHwgcGdjcHAqKQorICAgICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBDKysgY29tcGlsZXIKKwkgICAgY2FzZSBgJENDIC1WYCBpbgorCSAgICAqcGdDQ1wgW1sxLTVdXSogfCAqcGdjcHBcIFtbMS01XV0qKQorCSAgICAgIF9MVF9UQUdWQVIocHJlbGlua19jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisJCXJtIC1yZiAkdHBsZGlyfgorCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+CisJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKKwkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKwkJcm0gLXJmICR0cGxkaXJ+CisJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+CisJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+CisJCSRSQU5MSUIgJG9sZGxpYicKKwkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorCQlybSAtcmYgJHRwbGRpcn4KKwkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CisJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisJCXJtIC1yZiAkdHBsZGlyfgorCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCSAgICAgIDs7CisJICAgICopICMgVmVyc2lvbiA2IHdpbGwgdXNlIHdlYWsgc3ltYm9scworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCSAgICAgIDs7CisJICAgIGVzYWMKKworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXJwYXRoICR7d2x9JGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKyAgICAgICAgICAgIDs7CisJICBjeHgqKQorCSAgICAjIENvbXBhcSBDKysKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgIC1vICRsaWIgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMnCisKKwkgICAgcnVucGF0aF92YXI9TERfUlVOX1BBVEgKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKwkgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KKwkgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisJICAgICMKKwkgICAgIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQorCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQorCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CisJICAgICMgZGVwZW5kZW5jaWVzLgorCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkImA7IHRlbXBsaXN0PWAkRUNITyAiWCR0ZW1wbGlzdCIgfCAkWHNlZCAtZSAicy9cKF4uKmxkLipcKVwoIC4qbGQgLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICA7OworCSAgeGwqKQorCSAgICAjIElCTSBYTCA4LjAgb24gUFBDLCB3aXRoIEdOVSBsZAorCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtcW1rc2hyb2JqICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJCWNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKwkJZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJCSRDQyAtcW1rc2hyb2JqICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS12ZXJzaW9uLXNjcmlwdCAke3dsfSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworCSAgICBmaQorCSAgICA7OworCSAgKikKKwkgICAgY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCisJICAgICpTdW5cIEMqKQorCSAgICAgICMgU3VuIEMrKyA1LjkKKwkgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scycKKwkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgICAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKKworCSAgICAgICMgTm90IHN1cmUgd2hldGhlciBzb21ldGhpbmcgYmFzZWQgb24KKwkgICAgICAjICRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxCisJICAgICAgIyB3b3VsZCBiZSBiZXR0ZXIuCisJICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCisKKwkgICAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKKwkgICAgICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKKwkgICAgICAjIG5lY2Vzc2FyeSB0byBtYWtlIHN1cmUgaW5zdGFudGlhdGVkIHRlbXBsYXRlcyBhcmUgaW5jbHVkZWQKKwkgICAgICAjIGluIHRoZSBhcmNoaXZlLgorCSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLXhhciAtbyAkb2xkbGliICRvbGRvYmpzJworCSAgICAgIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKwllc2FjCisJOzsKKworICAgICAgbHlueG9zKikKKyAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCTs7CisKKyAgICAgIG04OGsqKQorICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCTs7CisKKyAgICAgIG12cyopCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgY3h4KikKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKwkgICopCisJICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIDs7CisJZXNhYworCTs7CisKKyAgICAgIG5ldGJzZCopCisgICAgICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGxpbmtlcl9mbGFncycKKwkgIHdsYXJjPQorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworCWZpCisJIyBXb3JrYXJvdW5kIHNvbWUgYnJva2VuIHByZS0xLjUgdG9vbGNoYWlucworCW91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIGNvbmZ0ZXN0LiRvYmpleHQgfCAkU0VEIC1lICJzOi1sZ2NjIC1sYyAtbGdjYzo6IicKKwk7OworCisgICAgICAqbnRvKiB8ICpxbngqKQorICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcworCTs7CisKKyAgICAgIG9wZW5ic2QyKikKKyAgICAgICAgIyBDKysgc2hhcmVkIGxpYnJhcmllcyBhcmUgZmFpcmx5IGJyb2tlbgorCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwk7OworCisgICAgICBvcGVuYnNkKikKKwlpZiB0ZXN0IC1mIC91c3IvbGliZXhlYy9sZC5zbzsgdGhlbgorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkbGliJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisJICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJworCSAgZmkKKwkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWVjaG8KKwllbHNlCisJICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJZmkKKwk7OworCisgICAgICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgS0NDKikKKwkgICAgIyBLdWNrIGFuZCBBc3NvY2lhdGVzLCBJbmMuIChLQUkpIEMrKyBDb21waWxlcgorCisJICAgICMgS0NDIHdpbGwgb25seSBjcmVhdGUgYSBzaGFyZWQgbGlicmFyeSBpZiB0aGUgb3V0cHV0IGZpbGUKKwkgICAgIyBlbmRzIHdpdGggIi5zbyIgKG9yICIuc2wiIGZvciBIUC1VWCksIHNvIHJlbmFtZSB0aGUgbGlicmFyeQorCSAgICAjIHRvIGl0cyBwcm9wZXIgbmFtZSAod2l0aCB2ZXJzaW9uKSBhZnRlciBsaW5raW5nLgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gIiRsaWIiIHwgJFNFRCAtZSAicy9cJHt0ZW1wZXh0fVwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKKworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorCisJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZworCSAgICAjIHRoZSBLQUkgQysrIGNvbXBpbGVyLgorCSAgICBjYXNlICRob3N0IGluCisJICAgICAgb3NmMyopIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLUJzdGF0aWMgLW8gJG9sZGxpYiAkb2xkb2JqcycgOzsKKwkgICAgICAqKSBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvbGRsaWIgJG9sZG9ianMnIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKyAgICAgICAgICBSQ0MqKQorCSAgICAjIFJhdGlvbmFsIEMrKyAyLjQuMQorCSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICA7OworICAgICAgICAgIGN4eCopCisJICAgIGNhc2UgJGhvc3QgaW4KKwkgICAgICBvc2YzKikKKwkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworCQk7OworCSAgICAgICopCisJICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdmb3IgaSBpbiBgY2F0ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiJXMgJXNcXG4iIC1leHBvcnRlZF9zeW1ib2wgIlwkaSIgPj4gJGxpYi5leHA7IGRvbmV+CisJICAgICAgICAgIGVjaG8gIi1oaWRkZW4iPj4gJGxpYi5leHB+CisJICAgICAgICAgICRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4KKwkgICAgICAgICAgJFJNICRsaWIuZXhwJworCSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJworCQk7OworCSAgICBlc2FjCisKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorCisJICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKwkgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisJICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorCSAgICAjCisJICAgICMgVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB3YXkgdG8gcHJldmVudCB0aGlzIGNvbXBpbGVyIGZyb20KKwkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KKwkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQorCSAgICAjIGRlcGVuZGVuY2llcy4KKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWAkRUNITyAiWCR0ZW1wbGlzdCIgfCAkWHNlZCAtZSAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIDs7CisJICAqKQorCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKwkgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworCSAgICAgIGNhc2UgJGhvc3QgaW4KKwkgICAgICAgIG9zZjMqKQorCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCQkgIDs7CisJICAgICAgICAqKQorCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkJICA7OworCSAgICAgIGVzYWMKKworCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorCisJICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCisJICAgIGVsc2UKKwkgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIGZpCisJICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKworICAgICAgcHNvcyopCisgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICAgIDs7CisKKyAgICAgIHN1bm9zNCopCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgQ0MqKQorCSAgICAjIFN1biBDKysgNC54CisJICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIDs7CisgICAgICAgICAgbGNjKikKKwkgICAgIyBMdWNpZAorCSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICA7OworICAgICAgICAgICopCisJICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKworICAgICAgc29sYXJpcyopCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgQ0MqKQorCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCisgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKKwkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAgLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorCSAgICAgICRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisJICAgIGNhc2UgJGhvc3Rfb3MgaW4KKwkgICAgICBzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OworCSAgICAgICopCisJCSMgVGhlIGNvbXBpbGVyIGRyaXZlciB3aWxsIGNvbWJpbmUgYW5kIHJlb3JkZXIgbGlua2VyIG9wdGlvbnMsCisJCSMgYnV0IHVuZGVyc3RhbmRzIGAteiBsaW5rZXJfZmxhZycuCisJICAgICAgICAjIFN1cHBvcnRlZCBzaW5jZSBTb2xhcmlzIDIuNiAobWF5YmUgMi41LjE/KQorCQlfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy16IGFsbGV4dHJhY3QkY29udmVuaWVuY2UgLXogZGVmYXVsdGV4dHJhY3QnCisJICAgICAgICA7OworCSAgICBlc2FjCisJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJworCisJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZworCSAgICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKKwkgICAgIyBuZWNlc3NhcnkgdG8gbWFrZSBzdXJlIGluc3RhbnRpYXRlZCB0ZW1wbGF0ZXMgYXJlIGluY2x1ZGVkCisJICAgICMgaW4gdGhlIGFyY2hpdmUuCisJICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLXhhciAtbyAkb2xkbGliICRvbGRvYmpzJworCSAgICA7OworICAgICAgICAgIGdjeCopCisJICAgICMgR3JlZW4gSGlsbHMgQysrIENvbXBpbGVyCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKworCSAgICAjIFRoZSBDKysgY29tcGlsZXIgbXVzdCBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgYXJjaGl2ZS4KKwkgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAkTERGTEFHUyAtYXJjaGl2ZSAtbyAkb2xkbGliICRvbGRvYmpzJworCSAgICA7OworICAgICAgICAgICopCisJICAgICMgR05VIEMrKyBjb21waWxlciB3aXRoIFNvbGFyaXMgbGlua2VyCisJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LXogJHt3bH1kZWZzJworCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKwkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisKKwkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKwkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICBlbHNlCisJICAgICAgICAjIGcrKyAyLjcgYXBwZWFycyB0byByZXF1aXJlIGAtRycgTk9UIGAtc2hhcmVkJyBvbiB0aGlzCisJICAgICAgICAjIHBsYXRmb3JtLgorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorCQkgICRDQyAtRyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisKKwkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKwkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1HICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisJICAgICAgZmkKKworCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICR3bCRsaWJkaXInCisJICAgICAgY2FzZSAkaG9zdF9vcyBpbgorCQlzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OworCQkqKQorCQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0teiAke3dsfWFsbGV4dHJhY3QkY29udmVuaWVuY2UgJHt3bH0teiAke3dsfWRlZmF1bHRleHRyYWN0JworCQkgIDs7CisJICAgICAgZXNhYworCSAgICBmaQorCSAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisKKyAgICBzeXN2NCp1dzIqIHwgc3lzdjVPcGVuVU5JWCogfCBzeXN2NVVuaXhXYXJlNy5bWzAxXV0uW1sxMF1dKiB8IHVuaXh3YXJlNyogfCBzY28zLjJ2NS4wLltbMDI0XV0qKQorICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScke3dsfS16LHRleHQnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICBydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCisKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgIENDKikKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIDs7CisJKikKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICA7OworICAgICAgZXNhYworICAgICAgOzsKKworICAgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KikKKwkjIE5vdGU6IFdlIGNhbiBOT1QgdXNlIC16IGRlZnMgYXMgd2UgbWlnaHQgZGVzaXJlLCBiZWNhdXNlIHdlIGRvIG5vdAorCSMgbGluayB3aXRoIC1sYywgYW5kIHRoYXQgd291bGQgY2F1c2UgYW55IHN5bWJvbHMgdXNlZCBmcm9tIGxpYmMgdG8KKwkjIGFsd2F5cyBiZSB1bnJlc29sdmVkLCB3aGljaCBtZWFucyBqdXN0IGFib3V0IG5vIGxpYnJhcnkgd291bGQKKwkjIGV2ZXIgbGluayBjb3JyZWN0bHkuICBJZiB3ZSdyZSBub3QgdXNpbmcgR05VIGxkIHdlIHVzZSAteiB0ZXh0CisJIyB0aG91Z2gsIHdoaWNoIGRvZXMgY2F0Y2ggc29tZSBiYWQgc3ltYm9scyBidXQgaXNuJ3QgYXMgaGVhdnktaGFuZGVkCisJIyBhcyAteiBkZWZzLgorCV9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JworCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teixub2RlZnMnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisJX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiwkbGliZGlyJworCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JworCV9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworCV9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUJleHBvcnQnCisJcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJworCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBDQyopCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICA7OworCSAgKikKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICA7OworCWVzYWMKKyAgICAgIDs7CisKKyAgICAgIHRhbmRlbSopCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgTkNDKikKKwkgICAgIyBOb25TdG9wLVVYIE5DQyAzLjIwCisJICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIDs7CisgICAgICAgICAgKikKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworCisgICAgICB2eHdvcmtzKikKKyAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgOzsKKworICAgICAgKikKKyAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgOzsKKyAgICBlc2FjCisKKyAgICBBQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKV0pCisgICAgdGVzdCAiJF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubworCisgICAgX0xUX1RBR1ZBUihHQ0MsICQxKT0iJEdYWCIKKyAgICBfTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKKworICAgICMjIENBVkVBVCBFTVBUT1I6CisgICAgIyMgVGhlcmUgaXMgbm8gZW5jYXBzdWxhdGlvbiB3aXRoaW4gdGhlIGZvbGxvd2luZyBtYWNyb3MsIGRvIG5vdCBjaGFuZ2UKKyAgICAjIyB0aGUgcnVubmluZyBvcmRlciBvciBvdGhlcndpc2UgbW92ZSB0aGVtIGFyb3VuZCB1bmxlc3MgeW91IGtub3cgZXhhY3RseQorICAgICMjIHdoYXQgeW91IGFyZSBkb2luZy4uLgorICAgIF9MVF9TWVNfSElEREVOX0xJQkRFUFMoJDEpCisgICAgX0xUX0NPTVBJTEVSX1BJQygkMSkKKyAgICBfTFRfQ09NUElMRVJfQ19PKCQxKQorICAgIF9MVF9DT01QSUxFUl9GSUxFX0xPQ0tTKCQxKQorICAgIF9MVF9MSU5LRVJfU0hMSUJTKCQxKQorICAgIF9MVF9TWVNfRFlOQU1JQ19MSU5LRVIoJDEpCisgICAgX0xUX0xJTktFUl9IQVJEQ09ERV9MSUJQQVRIKCQxKQorCisgICAgX0xUX0NPTkZJRygkMSkKKyAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCisKKyAgQ0M9JGx0X3NhdmVfQ0MKKyAgTERDWFg9JExECisgIExEPSRsdF9zYXZlX0xECisgIEdDQz0kbHRfc2F2ZV9HQ0MKKyAgd2l0aF9nbnVfbGQ9JGx0X3NhdmVfd2l0aF9nbnVfbGQKKyAgbHRfY3ZfcGF0aF9MRENYWD0kbHRfY3ZfcGF0aF9MRAorICBsdF9jdl9wYXRoX0xEPSRsdF9zYXZlX3BhdGhfTEQKKyAgbHRfY3ZfcHJvZ19nbnVfbGRjeHg9JGx0X2N2X3Byb2dfZ251X2xkCisgIGx0X2N2X3Byb2dfZ251X2xkPSRsdF9zYXZlX3dpdGhfZ251X2xkCitmaSAjIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzCisKK0FDX0xBTkdfUE9QCitdKSMgX0xUX0xBTkdfQ1hYX0NPTkZJRworCisKKyMgX0xUX1NZU19ISURERU5fTElCREVQUyhbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQorIyBjb21waWxlciBvdXRwdXQgd2hlbiBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisjIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQorIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCittNF9kZWZ1bihbX0xUX1NZU19ISURERU5fTElCREVQU10sCitbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisjIERlcGVuZGVuY2llcyB0byBwbGFjZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBvYmplY3QgYmVpbmcgbGlua2VkOgorX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPQorX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0KK19MVF9UQUdWQVIocHJlZGVwcywgJDEpPQorX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPQorX0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKT0KKworZG5sIHdlIGNhbid0IHVzZSB0aGUgbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIGhlcmUsCitkbmwgYmVjYXVzZSBpdCBjb250YWlucyBjb2RlIGludGVuZGVkIGZvciBhbiBleGVjdXRhYmxlLAorZG5sIG5vdCBhIGxpYnJhcnkuICBJdCdzIHBvc3NpYmxlIHdlIHNob3VsZCBsZXQgZWFjaAorZG5sIHRhZyBkZWZpbmUgYSBuZXcgbHRfPz8/P19saW5rX3Rlc3RfY29kZSB2YXJpYWJsZSwKK2RubCBidXQgaXQncyBvbmx5IHVzZWQgaGVyZS4uLgorbTRfaWYoWyQxXSwgW10sIFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgoraW50IGE7Cit2b2lkIGZvbyAodm9pZCkgeyBhID0gMDsgfQorX0xUX0VPRgorXSwgWyQxXSwgW0NYWF0sIFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorY2xhc3MgRm9vCit7CitwdWJsaWM6CisgIEZvbyAodm9pZCkgeyBhID0gMDsgfQorcHJpdmF0ZToKKyAgaW50IGE7Cit9OworX0xUX0VPRgorXSwgWyQxXSwgW0Y3N10sIFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGltcGxpY2l0IG5vbmUKKyAgICAgIGludGVnZXIqNCBhCisgICAgICBhPTAKKyAgICAgIHJldHVybgorICAgICAgZW5kCitfTFRfRU9GCitdLCBbJDFdLCBbRkNdLCBbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKyAgICAgIHN1YnJvdXRpbmUgZm9vCisgICAgICBpbXBsaWNpdCBub25lCisgICAgICBpbnRlZ2VyIGEKKyAgICAgIGE9MAorICAgICAgcmV0dXJuCisgICAgICBlbmQKK19MVF9FT0YKK10sIFskMV0sIFtHQ0pdLCBbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKK3B1YmxpYyBjbGFzcyBmb28geworICBwcml2YXRlIGludCBhOworICBwdWJsaWMgdm9pZCBiYXIgKHZvaWQpIHsKKyAgICBhID0gMDsKKyAgfQorfTsKK19MVF9FT0YKK10pCitkbmwgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5Citkbmwgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgoraWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgIyBQYXJzZSB0aGUgY29tcGlsZXIgb3V0cHV0IGFuZCBleHRyYWN0IHRoZSBuZWNlc3NhcnkKKyAgIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCisKKyAgIyBTZW50aW5lbCB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hldGhlciBvciBub3Qgd2UgYXJlIGJlZm9yZQorICAjIHRoZSBjb25mdGVzdCBvYmplY3QgZmlsZS4KKyAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubworCisgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KKyAgICBjYXNlICRwIGluCisKKyAgICAtTCogfCAtUiogfCAtbCopCisgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KKyAgICAgICAjIFJlbW92ZSB0aGUgc3BhY2UuCisgICAgICAgaWYgdGVzdCAkcCA9ICItTCIgfHwKKyAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgorCSBwcmV2PSRwCisJIGNvbnRpbnVlCisgICAgICAgZWxzZQorCSBwcmV2PQorICAgICAgIGZpCisKKyAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgorCSBjYXNlICRwIGluCisJIC1MKiB8IC1SKikKKwkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKKwkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKKwkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KKwkgICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKSI7IHRoZW4KKwkgICAgIF9MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSk9IiR7cHJldn0ke3B9IgorCSAgIGVsc2UKKwkgICAgIF9MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSk9IiR7X0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKX0gJHtwcmV2fSR7cH0iCisJICAgZmkKKwkgICA7OworCSAjIFRoZSAiLWwiIGNhc2Ugd291bGQgbmV2ZXIgY29tZSBiZWZvcmUgdGhlIG9iamVjdCBiZWluZworCSAjIGxpbmtlZCwgc28gZG9uJ3QgYm90aGVyIGhhbmRsaW5nIHRoaXMgY2FzZS4KKwkgZXNhYworICAgICAgIGVsc2UKKwkgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKSI7IHRoZW4KKwkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7cHJldn0ke3B9IgorCSBlbHNlCisJICAgX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke19MVF9UQUdWQVIocG9zdGRlcHMsICQxKX0gJHtwcmV2fSR7cH0iCisJIGZpCisgICAgICAgZmkKKyAgICAgICA7OworCisgICAgKi4kb2JqZXh0KQorICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAorICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgorICAgICAgIGlmIHRlc3QgIiRwIiA9ICJjb25mdGVzdC4kb2JqZXh0IjsgdGhlbgorCSBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPXllcworCSBjb250aW51ZQorICAgICAgIGZpCisKKyAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgorCSBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpIjsgdGhlbgorCSAgIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0iJHAiCisJIGVsc2UKKwkgICBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9IiRfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSkgJHAiCisJIGZpCisgICAgICAgZWxzZQorCSBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKSI7IHRoZW4KKwkgICBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPSIkcCIKKwkgZWxzZQorCSAgIF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9IiRfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpICRwIgorCSBmaQorICAgICAgIGZpCisgICAgICAgOzsKKworICAgICopIDs7ICMgSWdub3JlIHRoZSByZXN0LgorCisgICAgZXNhYworICBkb25lCisKKyAgIyBDbGVhbiB1cC4KKyAgcm0gLWYgYS5vdXQgYS5leGUKK2Vsc2UKKyAgZWNobyAibGlidG9vbC5tNDogZXJyb3I6IHByb2JsZW0gY29tcGlsaW5nICQxIHRlc3QgcHJvZ3JhbSIKK2ZpCisKKyRSTSAtZiBjb25mZXN0LiRvYmpleHQKKworIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KK200X2lmKFskMV0sIFtDWFhdLAorW2Nhc2UgJGhvc3Rfb3MgaW4KK2ludGVyaXhbWzMtOV1dKikKKyAgIyBJbnRlcml4IDMuNSBpbnN0YWxscyBjb21wbGV0ZWx5IGhvc2VkIC5sYSBmaWxlcyBmb3IgQysrLCBzbyByYXRoZXIgdGhhbgorICAjIGhhY2sgYWxsIGFyb3VuZCBpdCwgbGV0J3MganVzdCB0cnVzdCAiZysrIiB0byBEVFJULgorICBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCQxKT0KKyAgX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsJDEpPQorICBfTFRfVEFHVkFSKHBvc3RkZXBzLCQxKT0KKyAgOzsKKworbGludXgqKQorICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKyAgKlN1blwgQyopCisgICAgIyBTdW4gQysrIDUuOQorCisgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCisgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCisgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcworICAgICMgLWxpYnJhcnk9c3RscG9ydDQgZGVwZW5kcyBvbiBpdC4KKyAgICBjYXNlICIgJENYWCAkQ1hYRkxBR1MgIiBpbgorICAgICoiIC1saWJyYXJ5PXN0bHBvcnQ0ICIqKQorICAgICAgc29sYXJpc191c2Vfc3RscG9ydDQ9eWVzCisgICAgICA7OworICAgIGVzYWMKKworICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCisgICAgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCQxKT0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJworICAgIGZpCisgICAgOzsKKyAgZXNhYworICA7OworCitzb2xhcmlzKikKKyAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgQ0MqKQorICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcworICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZworICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKKyAgICAjIC1saWJyYXJ5PXN0bHBvcnQ0IGRlcGVuZHMgb24gaXQuCisgICAgY2FzZSAiICRDWFggJENYWEZMQUdTICIgaW4KKyAgICAqIiAtbGlicmFyeT1zdGxwb3J0NCAiKikKKyAgICAgIHNvbGFyaXNfdXNlX3N0bHBvcnQ0PXllcworICAgICAgOzsKKyAgICBlc2FjCisKKyAgICAjIEFkZGluZyB0aGlzIHJlcXVpcmVzIGEga25vd24tZ29vZCBzZXR1cCBvZiBzaGFyZWQgbGlicmFyaWVzIGZvcgorICAgICMgU3VuIGNvbXBpbGVyIHZlcnNpb25zIGJlZm9yZSA1LjYsIGVsc2UgUElDIG9iamVjdHMgZnJvbSBhbiBvbGQKKyAgICAjIGFyY2hpdmUgd2lsbCBiZSBsaW5rZWQgaW50byB0aGUgb3V0cHV0LCBsZWFkaW5nIHRvIHN1YnRsZSBidWdzLgorICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCisgICAgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCQxKT0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJworICAgIGZpCisgICAgOzsKKyAgZXNhYworICA7OworZXNhYworXSkKKworY2FzZSAiICRfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSkgIiBpbgorKiIgLWxjICIqKSBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8gOzsKK2VzYWMKKyBfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlycywgJDEpPQoraWYgdGVzdCAtbiAiJHtfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpfSI7IHRoZW4KKyBfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlycywgJDEpPWBlY2hvICIgJHtfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpfSIgfCAke1NFRH0gLWUgJ3MhIC1MISAhZycgLWUgJ3MhXiAhISdgCitmaQorX0xUX1RBR0RFQ0woW10sIFtjb21waWxlcl9saWJfc2VhcmNoX2RpcnNdLCBbMV0sCisgICAgW1RoZSBkaXJlY3RvcmllcyBzZWFyY2hlZCBieSB0aGlzIGNvbXBpbGVyIHdoZW4gY3JlYXRpbmcgYSBzaGFyZWQgbGlicmFyeV0pCitfTFRfVEFHREVDTChbXSwgW3ByZWRlcF9vYmplY3RzXSwgWzFdLAorICAgIFtEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0cyBiZWluZyBsaW5rZWQgdG8KKyAgICBjcmVhdGUgYSBzaGFyZWQgbGlicmFyeV0pCitfTFRfVEFHREVDTChbXSwgW3Bvc3RkZXBfb2JqZWN0c10sIFsxXSkKK19MVF9UQUdERUNMKFtdLCBbcHJlZGVwc10sIFsxXSkKK19MVF9UQUdERUNMKFtdLCBbcG9zdGRlcHNdLCBbMV0pCitfTFRfVEFHREVDTChbXSwgW2NvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aF0sIFsxXSwKKyAgICBbVGhlIGxpYnJhcnkgc2VhcmNoIHBhdGggdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBjb21waWxlciB3aGVuIGxpbmtpbmcKKyAgICBhIHNoYXJlZCBsaWJyYXJ5XSkKK10pIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTCisKKworIyBfTFRfUFJPR19GNzcKKyMgLS0tLS0tLS0tLS0tCisjIFNpbmNlIEFDX1BST0dfRjc3IGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcKKyMgaWYgdGhlcmUgaXMgbm8gZm9ydHJhbiBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KK200X2RlZnVuKFtfTFRfUFJPR19GNzddLAorWworcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9kaXNhYmxlX0Y3Nz15ZXNdKQorQUNfUFJPR19GNzcKK2lmIHRlc3QgLXogIiRGNzciIHx8IHRlc3QgIlgkRjc3IiA9ICJYbm8iOyB0aGVuCisgIF9sdF9kaXNhYmxlX0Y3Nz15ZXMKK2ZpCitwb3BkZWYoW0FDX01TR19FUlJPUl0pCitdKSMgX0xUX1BST0dfRjc3CisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbX0xUX1BST0dfRjc3XSwgW10pCisKKworIyBfTFRfTEFOR19GNzdfQ09ORklHKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgRm9ydHJhbiA3NyBjb21waWxlciBhcmUKKyMgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRworIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCittNF9kZWZ1bihbX0xUX0xBTkdfRjc3X0NPTkZJR10sCitbQUNfUkVRVUlSRShbX0xUX1BST0dfRjc3XSlkbmwKK0FDX0xBTkdfUFVTSChGb3J0cmFuIDc3KQorCitfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KK19MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KK19MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KK19MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPQorX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQorX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9CitfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPW5vCitfTFRfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpPW5vCitfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKT1ubworX0xUX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPQorX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KK19MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KK19MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9CitfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CitfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubworCisjIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgZjc3IHRlc3Qgc291cmNlcy4KK2FjX2V4dD1mCisKKyMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBmNzcgdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIE5vIHNlbnNlIGluIHJ1bm5pbmcgYWxsIHRoZXNlIHRlc3RzIGlmIHdlIGFscmVhZHkgZGV0ZXJtaW5lZCB0aGF0CisjIHRoZSBGNzcgY29tcGlsZXIgaXNuJ3Qgd29ya2luZy4gIFNvbWUgdmFyaWFibGVzIChsaWtlIGVuYWJsZV9zaGFyZWQpCisjIGFyZSBjdXJyZW50bHkgYXNzdW1lZCB0byBhcHBseSB0byBhbGwgY29tcGlsZXJzIG9uIHRoaXMgcGxhdGZvcm0sCisjIGFuZCB3aWxsIGJlIGNvcnJ1cHRlZCBieSBzZXR0aW5nIHRoZW0gYmFzZWQgb24gYSBub24td29ya2luZyBjb21waWxlci4KK2lmIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllczsgdGhlbgorICAjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cworICBsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9IlwKKyAgICAgIHN1YnJvdXRpbmUgdAorICAgICAgcmV0dXJuCisgICAgICBlbmQKKyIKKworICAjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cworICBsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9IlwKKyAgICAgIHByb2dyYW0gdAorICAgICAgZW5kCisiCisKKyAgIyBsdG1haW4gb25seSB1c2VzICRDQyBmb3IgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHNvIG1ha2Ugc3VyZSAkQ0MgaXMgc2V0LgorICBfTFRfVEFHX0NPTVBJTEVSCisKKyAgIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKKyAgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCisgIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKworICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICBsdF9zYXZlX0NDPSIkQ0MiCisgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgQ0M9JHtGNzctImY3NyJ9CisgIGNvbXBpbGVyPSRDQworICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKKyAgR0NDPSRHNzcKKyAgaWYgdGVzdCAtbiAiJGNvbXBpbGVyIjsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbaWYgbGlidG9vbCBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKKyAgICBBQ19NU0dfUkVTVUxUKFskY2FuX2J1aWxkX3NoYXJlZF0pCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllc10pCisgICAgdGVzdCAiJGNhbl9idWlsZF9zaGFyZWQiID0gIm5vIiAmJiBlbmFibGVfc2hhcmVkPW5vCisKKyAgICAjIE9uIEFJWCwgc2hhcmVkIGxpYnJhcmllcyBhbmQgc3RhdGljIGxpYnJhcmllcyB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlLCBhbmQKKyAgICAjIGFyZSBhbGwgYnVpbHQgZnJvbSBQSUMuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4MyopCisgICAgICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisgICAgICAgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCisgICAgICAgICAgYXJjaGl2ZV9jbWRzPSIkYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkbGliIgorICAgICAgICAgIHBvc3RpbnN0YWxsX2NtZHM9JyRSQU5MSUIgJGxpYicKKyAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICAgIGFpeFtbNC05XV0qKQorCWlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NCAmJiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSBubyA7IHRoZW4KKwkgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisJZmkKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zaGFyZWRdKQorCisgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXNdKQorICAgICMgTWFrZSBzdXJlIGVpdGhlciBlbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaXMgeWVzLgorICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyB8fCBlbmFibGVfc3RhdGljPXllcworICAgIEFDX01TR19SRVNVTFQoWyRlbmFibGVfc3RhdGljXSkKKworICAgIF9MVF9UQUdWQVIoR0NDLCAkMSk9IiRHNzciCisgICAgX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCisKKyAgICAjIyBDQVZFQVQgRU1QVE9SOgorICAgICMjIFRoZXJlIGlzIG5vIGVuY2Fwc3VsYXRpb24gd2l0aGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCBkbyBub3QgY2hhbmdlCisgICAgIyMgdGhlIHJ1bm5pbmcgb3JkZXIgb3Igb3RoZXJ3aXNlIG1vdmUgdGhlbSBhcm91bmQgdW5sZXNzIHlvdSBrbm93IGV4YWN0bHkKKyAgICAjIyB3aGF0IHlvdSBhcmUgZG9pbmcuLi4KKyAgICBfTFRfQ09NUElMRVJfUElDKCQxKQorICAgIF9MVF9DT01QSUxFUl9DX08oJDEpCisgICAgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MoJDEpCisgICAgX0xUX0xJTktFUl9TSExJQlMoJDEpCisgICAgX0xUX1NZU19EWU5BTUlDX0xJTktFUigkMSkKKyAgICBfTFRfTElOS0VSX0hBUkRDT0RFX0xJQlBBVEgoJDEpCisKKyAgICBfTFRfQ09ORklHKCQxKQorICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKKworICBHQ0M9JGx0X3NhdmVfR0NDCisgIENDPSIkbHRfc2F2ZV9DQyIKK2ZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzCisKK0FDX0xBTkdfUE9QCitdKSMgX0xUX0xBTkdfRjc3X0NPTkZJRworCisKKyMgX0xUX1BST0dfRkMKKyMgLS0tLS0tLS0tLS0KKyMgU2luY2UgQUNfUFJPR19GQyBpcyBicm9rZW4sIGluIHRoYXQgaXQgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nCisjIGlmIHRoZXJlIGlzIG5vIGZvcnRyYW4gY29tcGlsZXIsIHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uIGhlcmUuCittNF9kZWZ1bihbX0xUX1BST0dfRkNdLAorWworcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9kaXNhYmxlX0ZDPXllc10pCitBQ19QUk9HX0ZDCitpZiB0ZXN0IC16ICIkRkMiIHx8IHRlc3QgIlgkRkMiID0gIlhubyI7IHRoZW4KKyAgX2x0X2Rpc2FibGVfRkM9eWVzCitmaQorcG9wZGVmKFtBQ19NU0dfRVJST1JdKQorXSkjIF9MVF9QUk9HX0ZDCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbX0xUX1BST0dfRkNdLCBbXSkKKworCisjIF9MVF9MQU5HX0ZDX0NPTkZJRyhbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgRm9ydHJhbiBjb21waWxlciBhcmUKKyMgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRworIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCittNF9kZWZ1bihbX0xUX0xBTkdfRkNfQ09ORklHXSwKK1tBQ19SRVFVSVJFKFtfTFRfUFJPR19GQ10pZG5sCitBQ19MQU5HX1BVU0goRm9ydHJhbikKKworX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCitfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CitfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCitfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0KK19MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9CitfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCitfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPW5vCitfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQorX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CitfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubworX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT1ubworX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9bm8KK19MVF9UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0KK19MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CitfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCitfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQorX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KKworIyBTb3VyY2UgZmlsZSBleHRlbnNpb24gZm9yIGZjIHRlc3Qgc291cmNlcy4KK2FjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQorCisjIE9iamVjdCBmaWxlIGV4dGVuc2lvbiBmb3IgY29tcGlsZWQgZmMgdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIE5vIHNlbnNlIGluIHJ1bm5pbmcgYWxsIHRoZXNlIHRlc3RzIGlmIHdlIGFscmVhZHkgZGV0ZXJtaW5lZCB0aGF0CisjIHRoZSBGQyBjb21waWxlciBpc24ndCB3b3JraW5nLiAgU29tZSB2YXJpYWJsZXMgKGxpa2UgZW5hYmxlX3NoYXJlZCkKKyMgYXJlIGN1cnJlbnRseSBhc3N1bWVkIHRvIGFwcGx5IHRvIGFsbCBjb21waWxlcnMgb24gdGhpcyBwbGF0Zm9ybSwKKyMgYW5kIHdpbGwgYmUgY29ycnVwdGVkIGJ5IHNldHRpbmcgdGhlbSBiYXNlZCBvbiBhIG5vbi13b3JraW5nIGNvbXBpbGVyLgoraWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KKyAgIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKKyAgbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJcCisgICAgICBzdWJyb3V0aW5lIHQKKyAgICAgIHJldHVybgorICAgICAgZW5kCisiCisKKyAgIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGxpbmsgdGVzdHMKKyAgbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlPSJcCisgICAgICBwcm9ncmFtIHQKKyAgICAgIGVuZAorIgorCisgICMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KKyAgX0xUX1RBR19DT01QSUxFUgorCisgICMgc2F2ZSB3YXJuaW5ncy9ib2lsZXJwbGF0ZSBvZiBzaW1wbGUgdGVzdCBjb2RlCisgIF9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQorICBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisKKyAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyAgbHRfc2F2ZV9DQz0iJENDIgorICBsdF9zYXZlX0dDQz0kR0NDCisgIENDPSR7RkMtImY5NSJ9CisgIGNvbXBpbGVyPSRDQworICBHQ0M9JGFjX2N2X2ZjX2NvbXBpbGVyX2dudQorCisgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorCisgIGlmIHRlc3QgLW4gIiRjb21waWxlciI7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIGxpYnRvb2wgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCisgICAgQUNfTVNHX1JFU1VMVChbJGNhbl9idWlsZF9zaGFyZWRdKQorCisgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXNdKQorICAgIHRlc3QgIiRjYW5fYnVpbGRfc2hhcmVkIiA9ICJubyIgJiYgZW5hYmxlX3NoYXJlZD1ubworCisgICAgIyBPbiBBSVgsIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHN0YXRpYyBsaWJyYXJpZXMgdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSwgYW5kCisgICAgIyBhcmUgYWxsIGJ1aWx0IGZyb20gUElDLgorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIGFpeDMqKQorICAgICAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworICAgICAgICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgorICAgICAgICAgIGFyY2hpdmVfY21kcz0iJGFyY2hpdmVfY21kc35cJFJBTkxJQiBcJGxpYiIKKyAgICAgICAgICBwb3N0aW5zdGFsbF9jbWRzPSckUkFOTElCICRsaWInCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgICBhaXhbWzQtOV1dKikKKwlpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQgJiYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0gbm8gOyB0aGVuCisJICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworCWZpCisgICAgICAgIDs7CisgICAgZXNhYworICAgIEFDX01TR19SRVNVTFQoWyRlbmFibGVfc2hhcmVkXSkKKworICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzXSkKKyAgICAjIE1ha2Ugc3VyZSBlaXRoZXIgZW5hYmxlX3NoYXJlZCBvciBlbmFibGVfc3RhdGljIGlzIHllcy4KKyAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgfHwgZW5hYmxlX3N0YXRpYz15ZXMKKyAgICBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3N0YXRpY10pCisKKyAgICBfTFRfVEFHVkFSKEdDQywgJDEpPSIkYWNfY3ZfZmNfY29tcGlsZXJfZ251IgorICAgIF9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorCisgICAgIyMgQ0FWRUFUIEVNUFRPUjoKKyAgICAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQorICAgICMjIHRoZSBydW5uaW5nIG9yZGVyIG9yIG90aGVyd2lzZSBtb3ZlIHRoZW0gYXJvdW5kIHVubGVzcyB5b3Uga25vdyBleGFjdGx5CisgICAgIyMgd2hhdCB5b3UgYXJlIGRvaW5nLi4uCisgICAgX0xUX1NZU19ISURERU5fTElCREVQUygkMSkKKyAgICBfTFRfQ09NUElMRVJfUElDKCQxKQorICAgIF9MVF9DT01QSUxFUl9DX08oJDEpCisgICAgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MoJDEpCisgICAgX0xUX0xJTktFUl9TSExJQlMoJDEpCisgICAgX0xUX1NZU19EWU5BTUlDX0xJTktFUigkMSkKKyAgICBfTFRfTElOS0VSX0hBUkRDT0RFX0xJQlBBVEgoJDEpCisKKyAgICBfTFRfQ09ORklHKCQxKQorICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKKworICBHQ0M9JGx0X3NhdmVfR0NDCisgIENDPSIkbHRfc2F2ZV9DQyIKK2ZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXMKKworQUNfTEFOR19QT1AKK10pIyBfTFRfTEFOR19GQ19DT05GSUcKKworCisjIF9MVF9MQU5HX0dDSl9DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgdGhlIEdOVSBKYXZhIENvbXBpbGVyIGNvbXBpbGVyCisjIGFyZSBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCisjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19HQ0pfQ09ORklHXSwKK1tBQ19SRVFVSVJFKFtMVF9QUk9HX0dDSl0pZG5sCitBQ19MQU5HX1NBVkUKKworIyBTb3VyY2UgZmlsZSBleHRlbnNpb24gZm9yIEphdmEgdGVzdCBzb3VyY2VzLgorYWNfZXh0PWphdmEKKworIyBPYmplY3QgZmlsZSBleHRlbnNpb24gZm9yIGNvbXBpbGVkIEphdmEgdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cworbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJjbGFzcyBmb28ge30iCisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCitsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J3B1YmxpYyBjbGFzcyBjb25mdGVzdCB7IHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tbXV0gYXJndikge307IH0nCisKKyMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KK19MVF9UQUdfQ09NUElMRVIKKworIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKK19MVF9DT01QSUxFUl9CT0lMRVJQTEFURQorX0xUX0xJTktFUl9CT0lMRVJQTEFURQorCisjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorbHRfc2F2ZV9DQz0iJENDIgorbHRfc2F2ZV9HQ0M9JEdDQworR0NDPXllcworQ0M9JHtHQ0otImdjaiJ9Citjb21waWxlcj0kQ0MKK19MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKK19MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorCisjIEdDSiBkaWQgbm90IGV4aXN0IGF0IHRoZSB0aW1lIEdDQyBkaWRuJ3QgaW1wbGljaXRseSBsaW5rIGxpYmMgaW4uCitfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKworX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKKworIyMgQ0FWRUFUIEVNUFRPUjoKKyMjIFRoZXJlIGlzIG5vIGVuY2Fwc3VsYXRpb24gd2l0aGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCBkbyBub3QgY2hhbmdlCisjIyB0aGUgcnVubmluZyBvcmRlciBvciBvdGhlcndpc2UgbW92ZSB0aGVtIGFyb3VuZCB1bmxlc3MgeW91IGtub3cgZXhhY3RseQorIyMgd2hhdCB5b3UgYXJlIGRvaW5nLi4uCitpZiB0ZXN0IC1uICIkY29tcGlsZXIiOyB0aGVuCisgIF9MVF9DT01QSUxFUl9OT19SVFRJKCQxKQorICBfTFRfQ09NUElMRVJfUElDKCQxKQorICBfTFRfQ09NUElMRVJfQ19PKCQxKQorICBfTFRfQ09NUElMRVJfRklMRV9MT0NLUygkMSkKKyAgX0xUX0xJTktFUl9TSExJQlMoJDEpCisgIF9MVF9MSU5LRVJfSEFSRENPREVfTElCUEFUSCgkMSkKKworICBfTFRfQ09ORklHKCQxKQorZmkKKworQUNfTEFOR19SRVNUT1JFCisKK0dDQz0kbHRfc2F2ZV9HQ0MKK0NDPSIkbHRfc2F2ZV9DQyIKK10pIyBfTFRfTEFOR19HQ0pfQ09ORklHCisKKworIyBfTFRfTEFOR19SQ19DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciB0aGUgV2luZG93cyByZXNvdXJjZSBjb21waWxlcgorIyBhcmUgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRworIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCittNF9kZWZ1bihbX0xUX0xBTkdfUkNfQ09ORklHXSwKK1tBQ19SRVFVSVJFKFtMVF9QUk9HX1JDXSlkbmwKK0FDX0xBTkdfU0FWRQorCisjIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgUkMgdGVzdCBzb3VyY2VzLgorYWNfZXh0PXJjCisKKyMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBSQyB0ZXN0IHNvdXJjZXMuCitvYmpleHQ9bworX0xUX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0CisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCitsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9J3NhbXBsZSBNRU5VIHsgTUVOVUlURU0gIiZTb3VwIiwgMTAwLCBDSEVDS0VEIH0nCisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCitsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9IiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiCisKKyMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KK19MVF9UQUdfQ09NUElMRVIKKworIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKK19MVF9DT01QSUxFUl9CT0lMRVJQTEFURQorX0xUX0xJTktFUl9CT0lMRVJQTEFURQorCisjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorbHRfc2F2ZV9DQz0iJENDIgorbHRfc2F2ZV9HQ0M9JEdDQworR0NDPQorQ0M9JHtSQy0id2luZHJlcyJ9Citjb21waWxlcj0kQ0MKK19MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKK19MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKK19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKT15ZXMKKworaWYgdGVzdCAtbiAiJGNvbXBpbGVyIjsgdGhlbgorICA6CisgIF9MVF9DT05GSUcoJDEpCitmaQorCitHQ0M9JGx0X3NhdmVfR0NDCitBQ19MQU5HX1JFU1RPUkUKK0NDPSIkbHRfc2F2ZV9DQyIKK10pIyBfTFRfTEFOR19SQ19DT05GSUcKKworCisjIExUX1BST0dfR0NKCisjIC0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfUFJPR19HQ0pdLAorW200X2lmZGVmKFtBQ19QUk9HX0dDSl0sIFtBQ19QUk9HX0dDSl0sCisgIFttNF9pZmRlZihbQV1bTV9QUk9HX0dDSl0sIFtBXVtNX1BST0dfR0NKXSwKKyAgICBbQUNfQ0hFQ0tfVE9PTChHQ0osIGdjaiwpCisgICAgICB0ZXN0ICJ4JHtHQ0pGTEFHUytzZXR9IiA9IHhzZXQgfHwgR0NKRkxBR1M9Ii1nIC1PMiIKKyAgICAgIEFDX1NVQlNUKEdDSkZMQUdTKV0pXSlbXWRubAorXSkKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtMVF9BQ19QUk9HX0dDSl0sIFtMVF9QUk9HX0dDSl0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0xUX0FDX1BST0dfR0NKXSwgW10pCisKKworIyBMVF9QUk9HX1JDCisjIC0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9QUk9HX1JDXSwKK1tBQ19DSEVDS19UT09MKFJDLCB3aW5kcmVzLCkKK10pCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbTFRfQUNfUFJPR19SQ10sIFtMVF9QUk9HX1JDXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbTFRfQUNfUFJPR19SQ10sIFtdKQorCisKKyMgX0xUX0RFQ0xfRUdSRVAKKyMgLS0tLS0tLS0tLS0tLS0KKyMgSWYgd2UgZG9uJ3QgaGF2ZSBhIG5ldyBlbm91Z2ggQXV0b2NvbmYgdG8gY2hvb3NlIHRoZSBiZXN0IGdyZXAKKyMgYXZhaWxhYmxlLCBjaG9vc2UgdGhlIG9uZSBmaXJzdCBpbiB0aGUgdXNlcidzIFBBVEguCittNF9kZWZ1bihbX0xUX0RFQ0xfRUdSRVBdLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfRUdSRVBdKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19GR1JFUF0pZG5sCit0ZXN0IC16ICIkR1JFUCIgJiYgR1JFUD1ncmVwCitfTFRfREVDTChbXSwgW0dSRVBdLCBbMV0sIFtBIGdyZXAgcHJvZ3JhbSB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lc10pCitfTFRfREVDTChbXSwgW0VHUkVQXSwgWzFdLCBbQW4gRVJFIG1hdGNoZXJdKQorX0xUX0RFQ0woW10sIFtGR1JFUF0sIFsxXSwgW0EgbGl0ZXJhbCBzdHJpbmcgbWF0Y2hlcl0pCitkbmwgTm9uLWJsZWVkaW5nLWVkZ2UgYXV0b2NvbmYgZG9lc24ndCBzdWJzdCBHUkVQLCBzbyBkbyBpdCBoZXJlIHRvbworQUNfU1VCU1QoW0dSRVBdKQorXSkKKworCisjIF9MVF9ERUNMX09CSkRVTVAKKyMgLS0tLS0tLS0tLS0tLS0KKyMgSWYgd2UgZG9uJ3QgaGF2ZSBhIG5ldyBlbm91Z2ggQXV0b2NvbmYgdG8gY2hvb3NlIHRoZSBiZXN0IG9iamR1bXAKKyMgYXZhaWxhYmxlLCBjaG9vc2UgdGhlIG9uZSBmaXJzdCBpbiB0aGUgdXNlcidzIFBBVEguCittNF9kZWZ1bihbX0xUX0RFQ0xfT0JKRFVNUF0sCitbQUNfQ0hFQ0tfVE9PTChPQkpEVU1QLCBvYmpkdW1wLCBmYWxzZSkKK3Rlc3QgLXogIiRPQkpEVU1QIiAmJiBPQkpEVU1QPW9iamR1bXAKK19MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFsxXSwgW0FuIG9iamVjdCBzeW1ib2wgZHVtcGVyXSkKK0FDX1NVQlNUKFtPQkpEVU1QXSkKK10pCisKKworIyBfTFRfREVDTF9TRUQKKyMgLS0tLS0tLS0tLS0tCisjIENoZWNrIGZvciBhIGZ1bGx5LWZ1bmN0aW9uYWwgc2VkIHByb2dyYW0sIHRoYXQgdHJ1bmNhdGVzCisjIGFzIGZldyBjaGFyYWN0ZXJzIGFzIHBvc3NpYmxlLiAgUHJlZmVyIEdOVSBzZWQgaWYgZm91bmQuCittNF9kZWZ1bihbX0xUX0RFQ0xfU0VEXSwKK1tBQ19QUk9HX1NFRAordGVzdCAteiAiJFNFRCIgJiYgU0VEPXNlZAorWHNlZD0iJFNFRCAtZSAxcy9eWC8vIgorX0xUX0RFQ0woW10sIFtTRURdLCBbMV0sIFtBIHNlZCBwcm9ncmFtIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0XSkKK19MVF9ERUNMKFtdLCBbWHNlZF0sIFsiXCRTRUQgLWUgMXMvXlgvLyJdLAorICAgIFtTZWQgdGhhdCBoZWxwcyB1cyBhdm9pZCBhY2NpZGVudGFsbHkgdHJpZ2dlcmluZyBlY2hvKDEpIG9wdGlvbnMgbGlrZSAtbl0pCitdKSMgX0xUX0RFQ0xfU0VECisKK200X2lmbmRlZihbQUNfUFJPR19TRURdLCBbCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTk9URTogVGhpcyBtYWNybyBoYXMgYmVlbiBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbnRvICAgIworIyAgR05VIEF1dG9jb25mIGFzIEFDX1BST0dfU0VELiAgV2hlbiBpdCBpcyBhdmFpbGFibGUgaW4gICAjCisjICBhIHJlbGVhc2VkIHZlcnNpb24gb2YgQXV0b2NvbmYgd2Ugc2hvdWxkIHJlbW92ZSB0aGlzICAgICMKKyMgIG1hY3JvIGFuZCB1c2UgaXQgaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK200X2RlZnVuKFtBQ19QUk9HX1NFRF0sCitbQUNfTVNHX0NIRUNLSU5HKFtmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXRdKQorQUNfQ0FDSEVfVkFMKGx0X2N2X3BhdGhfU0VELAorWyMgTG9vcCB0aHJvdWdoIHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3Igc2VkIGFuZCBnc2VkLgorIyBUaGVuIHVzZSB0aGF0IGxpc3Qgb2Ygc2VkJ3MgYXMgb25lcyB0byB0ZXN0IGZvciB0cnVuY2F0aW9uLgorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICBmb3IgbHRfYWNfcHJvZyBpbiBzZWQgZ3NlZDsgZG8KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGx0X2FjX3Byb2ckYWNfZXhlY19leHQiOyB0aGVuCisgICAgICAgIGx0X2FjX3NlZF9saXN0PSIkbHRfYWNfc2VkX2xpc3QgJGFzX2Rpci8kbHRfYWNfcHJvZyRhY19leGVjX2V4dCIKKyAgICAgIGZpCisgICAgZG9uZQorICBkb25lCitkb25lCitJRlM9JGFzX3NhdmVfSUZTCitsdF9hY19tYXg9MAorbHRfYWNfY291bnQ9MAorIyBBZGQgL3Vzci94cGc0L2Jpbi9zZWQgYXMgaXQgaXMgdHlwaWNhbGx5IGZvdW5kIG9uIFNvbGFyaXMKKyMgYWxvbmcgd2l0aCAvYmluL3NlZCB0aGF0IHRydW5jYXRlcyBvdXRwdXQuCitmb3IgbHRfYWNfc2VkIGluICRsdF9hY19zZWRfbGlzdCAvdXNyL3hwZzQvYmluL3NlZDsgZG8KKyAgdGVzdCAhIC1mICRsdF9hY19zZWQgJiYgY29udGludWUKKyAgY2F0IC9kZXYvbnVsbCA+IGNvbmZ0ZXN0LmluCisgIGx0X2FjX2NvdW50PTAKKyAgZWNobyAkRUNIT19OICIwMTIzNDU2Nzg5JEVDSE9fQyIgPmNvbmZ0ZXN0LmluCisgICMgQ2hlY2sgZm9yIEdOVSBzZWQgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KKyAgaWYgIiRsdF9hY19zZWQiIC0tdmVyc2lvbiAyPiYxIDwgL2Rldi9udWxsIHwgZ3JlcCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGx0X2N2X3BhdGhfU0VEPSRsdF9hY19zZWQKKyAgICBicmVhaworICBmaQorICB3aGlsZSB0cnVlOyBkbworICAgIGNhdCBjb25mdGVzdC5pbiBjb25mdGVzdC5pbiA+Y29uZnRlc3QudG1wCisgICAgbXYgY29uZnRlc3QudG1wIGNvbmZ0ZXN0LmluCisgICAgY3AgY29uZnRlc3QuaW4gY29uZnRlc3QubmwKKyAgICBlY2hvID4+Y29uZnRlc3QubmwKKyAgICAkbHRfYWNfc2VkIC1lICdzL2EkLy8nIDwgY29uZnRlc3QubmwgPmNvbmZ0ZXN0Lm91dCB8fCBicmVhaworICAgIGNtcCAtcyBjb25mdGVzdC5vdXQgY29uZnRlc3QubmwgfHwgYnJlYWsKKyAgICAjIDEwMDAwIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRsdF9hY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgICBsdF9hY19jb3VudD1gZXhwciAkbHRfYWNfY291bnQgKyAxYAorICAgIGlmIHRlc3QgJGx0X2FjX2NvdW50IC1ndCAkbHRfYWNfbWF4OyB0aGVuCisgICAgICBsdF9hY19tYXg9JGx0X2FjX2NvdW50CisgICAgICBsdF9jdl9wYXRoX1NFRD0kbHRfYWNfc2VkCisgICAgZmkKKyAgZG9uZQorZG9uZQorXSkKK1NFRD0kbHRfY3ZfcGF0aF9TRUQKK0FDX1NVQlNUKFtTRURdKQorQUNfTVNHX1JFU1VMVChbJFNFRF0pCitdKSNBQ19QUk9HX1NFRAorXSkjbTRfaWZuZGVmCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbTFRfQUNfUFJPR19TRURdLCBbQUNfUFJPR19TRURdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtMVF9BQ19QUk9HX1NFRF0sIFtdKQorCisKKyMgX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGaW5kIG91dCB3aGV0aGVyIHRoZSBzaGVsbCBpcyBCb3VybmUgb3IgWFNJIGNvbXBhdGlibGUsCisjIG9yIGhhcyBzb21lIG90aGVyIHVzZWZ1bCBmZWF0dXJlcy4KK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdLAorW0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0c10pCisjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworeHNpX3NoZWxsPW5vCisoIF9sdF9kdW1teT0iYS9iL2MiCisgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisgICAgICA9IGMsYS9iLCwgXAorICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAmJiB4c2lfc2hlbGw9eWVzCitBQ19NU0dfUkVTVUxUKFskeHNpX3NoZWxsXSkKK19MVF9DT05GSUdfTElCVE9PTF9JTklUKFt4c2lfc2hlbGw9JyR4c2lfc2hlbGwnXSkKKworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyAiKz0iXSkKK2x0X3NoZWxsX2FwcGVuZD1ubworKCBmb289YmFyOyBzZXQgZm9vIGJhejsgZXZhbCAiJFsxXSs9XCRbMl0iICYmIHRlc3QgIiRmb28iID0gYmFyYmF6ICkgXAorICAgID4vZGV2L251bGwgMj4mMSBcCisgICYmIGx0X3NoZWxsX2FwcGVuZD15ZXMKK0FDX01TR19SRVNVTFQoWyRsdF9zaGVsbF9hcHBlbmRdKQorX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoW2x0X3NoZWxsX2FwcGVuZD0nJGx0X3NoZWxsX2FwcGVuZCddKQorCitpZiAoIChNQUlMPTYwOyB1bnNldCBNQUlMKSB8fCBleGl0KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgbHRfdW5zZXQ9dW5zZXQKK2Vsc2UKKyAgbHRfdW5zZXQ9ZmFsc2UKK2ZpCitfTFRfREVDTChbXSwgW2x0X3Vuc2V0XSwgWzBdLCBbd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgInVuc2V0Il0pZG5sCisKKyMgdGVzdCBFQkNESUMgb3IgQVNDSUkKK2Nhc2UgYGVjaG8gWHx0ciBYICdcMTAxJ2AgaW4KKyBBKSAjIEFTQ0lJIGJhc2VkIHN5c3RlbQorICAgICMgXG4gaXMgbm90IGludGVycHJldGVkIGNvcnJlY3RseSBieSBTb2xhcmlzIDggL3Vzci91Y2IvdHIKKyAgbHRfU1AyTkw9J3RyIFwwNDAgXDAxMicKKyAgbHRfTkwyU1A9J3RyIFwwMTVcMDEyIFwwNDBcMDQwJworICA7OworICopICMgRUJDRElDIGJhc2VkIHN5c3RlbQorICBsdF9TUDJOTD0ndHIgXDEwMCBcbicKKyAgbHRfTkwyU1A9J3RyIFxyXG4gXDEwMFwxMDAnCisgIDs7Citlc2FjCitfTFRfREVDTChbU1AyTkxdLCBbbHRfU1AyTkxdLCBbMV0sIFt0dXJuIHNwYWNlcyBpbnRvIG5ld2xpbmVzXSlkbmwKK19MVF9ERUNMKFtOTDJTUF0sIFtsdF9OTDJTUF0sIFsxXSwgW3R1cm4gbmV3bGluZXMgaW50byBzcGFjZXNdKWRubAorXSkjIF9MVF9DSEVDS19TSEVMTF9GRUFUVVJFUworCisKKyMgX0xUX1BST0dfWFNJX1NIRUxMRk5TCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBCb3VybmUgYW5kIFhTSSBjb21wYXRpYmxlIHZhcmlhbnRzIG9mIHNvbWUgdXNlZnVsIHNoZWxsIGZ1bmN0aW9ucy4KK200X2RlZnVuKFtfTFRfUFJPR19YU0lfU0hFTExGTlNdLAorW2Nhc2UgJHhzaV9zaGVsbCBpbgorICB5ZXMpCisgICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKworIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CisjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCisjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KK2Z1bmNfZGlybmFtZSAoKQoreworICBjYXNlICR7MX0gaW4KKyAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKyAgZXNhYworfQorCisjIGZ1bmNfYmFzZW5hbWUgZmlsZQorZnVuY19iYXNlbmFtZSAoKQoreworICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCit9CisKKyMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKyMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKyMgY2FsbDoKKyMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCisjICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKyMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisjICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKyMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCisjIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCisjIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKK3sKKyAgY2FzZSAkezF9IGluCisgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKyAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisgIGVzYWMKKyAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorfQorCisjIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KK2Z1bmNfc3RyaXBuYW1lICgpCit7CisgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKyAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorfQorCisjIGZ1bmNfb3B0X3NwbGl0CitmdW5jX29wdF9zcGxpdCAoKQoreworICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKyAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KK30KKworIyBmdW5jX2xvMm8gb2JqZWN0CitmdW5jX2xvMm8gKCkKK3sKKyAgY2FzZSAkezF9IGluCisgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKyAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKyAgZXNhYworfQorCisjIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorZnVuY194Zm9ybSAoKQoreworICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCit9CisKKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KK2Z1bmNfYXJpdGggKCkKK3sKKyAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSkKK30KKworIyBmdW5jX2xlbiBzdHJpbmcKKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KK2Z1bmNfbGVuICgpCit7CisgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorfQorCitfTFRfRU9GCisgICAgOzsKKyAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCisgICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKworIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CisjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCisjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KK2Z1bmNfZGlybmFtZSAoKQoreworICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKKyAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorICBlbHNlCisgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorICBmaQorfQorCisjIGZ1bmNfYmFzZW5hbWUgZmlsZQorZnVuY19iYXNlbmFtZSAoKQoreworICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorfQorCitkbmwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZQorZG5sIEEgcG9ydGFibGUgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBnZW5lcmFsLm00c2gKK2RubCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBpdCBoZXJlLgorCisjIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKyMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKK2Z1bmNfc3RyaXBuYW1lICgpCit7CisgIGNhc2UgJHsyfSBpbgorICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHszfSIgXAorICAgICAgICAgICB8ICRYc2VkIC1lICJzJV4kezF9JSUiIC1lICJzJVxcXFwkezJ9XCQlJSJgOzsKKyAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiWCR7M30iIFwKKyAgICAgICAgICAgfCAkWHNlZCAtZSAicyVeJHsxfSUlIiAtZSAicyUkezJ9XCQlJSJgOzsKKyAgZXNhYworfQorCisjIHNlZCBzY3JpcHRzOgorbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW1tePV1dKlwpPS4qL1wxLztxJworbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtbXj1dXSo9Ly8nCisKKyMgZnVuY19vcHRfc3BsaXQKK2Z1bmNfb3B0X3NwbGl0ICgpCit7CisgIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfb3B0ImAKKyAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRteV9zZWRfbG9uZ19hcmciYAorfQorCisjIGZ1bmNfbG8ybyBvYmplY3QKK2Z1bmNfbG8ybyAoKQoreworICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRsbzJvImAKK30KKworIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKK2Z1bmNfeGZvcm0gKCkKK3sKKyAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAncy9cLltbXi5dXSokLy5sby8nYAorfQorCisjIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCitmdW5jX2FyaXRoICgpCit7CisgIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkW0BdImAKK30KKworIyBmdW5jX2xlbiBzdHJpbmcKKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KK2Z1bmNfbGVuICgpCit7CisgIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJFsxXSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorfQorCitfTFRfRU9GCitlc2FjCisKK2Nhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorICB5ZXMpCisgICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKworIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKyMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorZnVuY19hcHBlbmQgKCkKK3sKKyAgZXZhbCAiJFsxXSs9XCRbMl0iCit9CitfTFRfRU9GCisgICAgOzsKKyAgKikKKyAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorCisjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCitmdW5jX2FwcGVuZCAoKQoreworICBldmFsICIkWzFdPVwkJFsxXVwkWzJdIgorfQorCitfTFRfRU9GCisgICAgOzsKKyAgZXNhYworXSkKZGlmZiAtLWdpdCBhL200L2x0b3B0aW9ucy5tNCBiL200L2x0b3B0aW9ucy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDE1MWEzCi0tLSAvZGV2L251bGwKKysrIGIvbTQvbHRvcHRpb25zLm00CkBAIC0wLDAgKzEsMzY4IEBACisjIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKyMKKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgV3JpdHRlbiBieSBHYXJ5IFYuIFZhdWdoYW4sIDIwMDQKKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKKyMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAorCisjIFRoaXMgaXMgdG8gaGVscCBhY2xvY2FsIGZpbmQgdGhlc2UgbWFjcm9zLCBhcyBpdCBjYW4ndCBzZWUgbTRfZGVmaW5lLgorQUNfREVGVU4oW0xUT1BUSU9OU19WRVJTSU9OXSwgW200X2lmKFsxXSldKQorCisKKyMgX0xUX01BTkdMRV9PUFRJT04oTUFDUk8tTkFNRSwgT1BUSU9OLU5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfTFRfTUFOR0xFX09QVElPTl0sCitbW19MVF9PUFRJT05fXW00X2JwYXRzdWJzdCgkMV9fJDIsIFtbXmEtekEtWjAtOV9dXSwgW19dKV0pCisKKworIyBfTFRfU0VUX09QVElPTihNQUNSTy1OQU1FLCBPUFRJT04tTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNldCBvcHRpb24gT1BUSU9OLU5BTUUgZm9yIG1hY3JvIE1BQ1JPLU5BTUUsIGFuZCBpZiB0aGVyZSBpcyBhCisjIG1hdGNoaW5nIGhhbmRsZXIgZGVmaW5lZCwgZGlzcGF0Y2ggdG8gaXQuICBPdGhlciBPUFRJT04tTkFNRXMgYXJlCisjIHNhdmVkIGFzIGEgZmxhZy4KK200X2RlZmluZShbX0xUX1NFVF9PUFRJT05dLAorW200X2RlZmluZShfTFRfTUFOR0xFX09QVElPTihbJDFdLCBbJDJdKSlkbmwKK200X2lmZGVmKF9MVF9NQU5HTEVfREVGVU4oWyQxXSwgWyQyXSksCisgICAgICAgIF9MVF9NQU5HTEVfREVGVU4oWyQxXSwgWyQyXSksCisgICAgW200X3dhcm5pbmcoW1Vua25vd24gJDEgb3B0aW9uIGAkMiddKV0pW11kbmwKK10pCisKKworIyBfTFRfSUZfT1BUSU9OKE1BQ1JPLU5BTUUsIE9QVElPTi1OQU1FLCBJRi1TRVQsIFtJRi1OT1QtU0VUXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4ZWN1dGUgSUYtU0VUIGlmIE9QVElPTiBpcyBzZXQsIElGLU5PVC1TRVQgb3RoZXJ3aXNlLgorbTRfZGVmaW5lKFtfTFRfSUZfT1BUSU9OXSwKK1ttNF9pZmRlZihfTFRfTUFOR0xFX09QVElPTihbJDFdLCBbJDJdKSwgWyQzXSwgWyQ0XSldKQorCisKKyMgX0xUX1VOTEVTU19PUFRJT05TKE1BQ1JPLU5BTUUsIE9QVElPTi1MSVNULCBJRi1OT1QtU0VUKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4ZWN1dGUgSUYtTk9ULVNFVCB1bmxlc3MgYWxsIG9wdGlvbnMgaW4gT1BUSU9OLUxJU1QgZm9yIE1BQ1JPLU5BTUUKKyMgYXJlIHNldC4KK200X2RlZmluZShbX0xUX1VOTEVTU19PUFRJT05TXSwKK1ttNF9mb3JlYWNoKFtfTFRfT3B0aW9uXSwgbTRfc3BsaXQobTRfbm9ybWFsaXplKFskMl0pKSwKKwkgICAgW200X2lmZGVmKF9MVF9NQU5HTEVfT1BUSU9OKFskMV0sIF9MVF9PcHRpb24pLAorCQkgICAgICBbbTRfZGVmaW5lKFskMF9mb3VuZF0pXSldKVtdZG5sCittNF9pZmRlZihbJDBfZm91bmRdLCBbbTRfdW5kZWZpbmUoWyQwX2ZvdW5kXSldLCBbJDMKK10pW11kbmwKK10pCisKKworIyBfTFRfU0VUX09QVElPTlMoTUFDUk8tTkFNRSwgT1BUSU9OLUxJU1QpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgT1BUSU9OLUxJU1QgaXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBMaWJ0b29sIG9wdGlvbnMgYXNzb2NpYXRlZAorIyB3aXRoIE1BQ1JPLU5BTUUuICBJZiBhbnkgT1BUSU9OIGhhcyBhIG1hdGNoaW5nIGhhbmRsZXIgZGVjbGFyZWQgd2l0aAorIyBMVF9PUFRJT05fREVGSU5FLCBkaXNwYXRjaCB0byB0aGF0IG1hY3JvOyBvdGhlcndpc2UgY29tcGxhaW4gYWJvdXQKKyMgdGhlIHVua25vd24gb3B0aW9uIGFuZCBleGl0LgorbTRfZGVmdW4oW19MVF9TRVRfT1BUSU9OU10sCitbIyBTZXQgb3B0aW9ucworbTRfZm9yZWFjaChbX0xUX09wdGlvbl0sIG00X3NwbGl0KG00X25vcm1hbGl6ZShbJDJdKSksCisgICAgW19MVF9TRVRfT1BUSU9OKFskMV0sIF9MVF9PcHRpb24pXSkKKworbTRfaWYoWyQxXSxbTFRfSU5JVF0sWworICBkbmwKKyAgZG5sIFNpbXBseSBzZXQgc29tZSBkZWZhdWx0IHZhbHVlcyAoaS5lIG9mZikgaWYgYm9vbGVhbiBvcHRpb25zIHdlcmUgbm90CisgIGRubCBzcGVjaWZpZWQ6CisgIF9MVF9VTkxFU1NfT1BUSU9OUyhbTFRfSU5JVF0sIFtkbG9wZW5dLCBbZW5hYmxlX2Rsb3Blbj1ubworICBdKQorICBfTFRfVU5MRVNTX09QVElPTlMoW0xUX0lOSVRdLCBbd2luMzItZGxsXSwgW2VuYWJsZV93aW4zMl9kbGw9bm8KKyAgXSkKKyAgZG5sCisgIGRubCBJZiBubyByZWZlcmVuY2Ugd2FzIG1hZGUgdG8gdmFyaW91cyBwYWlycyBvZiBvcHBvc2luZyBvcHRpb25zLCB0aGVuCisgIGRubCB3ZSBydW4gdGhlIGRlZmF1bHQgbW9kZSBoYW5kbGVyIGZvciB0aGUgcGFpci4gIEZvciBleGFtcGxlLCBpZiBuZWl0aGVyCisgIGRubCBgc2hhcmVkJyBub3IgYGRpc2FibGUtc2hhcmVkJyB3YXMgcGFzc2VkLCB3ZSBlbmFibGUgYnVpbGRpbmcgb2Ygc2hhcmVkCisgIGRubCBhcmNoaXZlcyBieSBkZWZhdWx0OgorICBfTFRfVU5MRVNTX09QVElPTlMoW0xUX0lOSVRdLCBbc2hhcmVkIGRpc2FibGUtc2hhcmVkXSwgW19MVF9FTkFCTEVfU0hBUkVEXSkKKyAgX0xUX1VOTEVTU19PUFRJT05TKFtMVF9JTklUXSwgW3N0YXRpYyBkaXNhYmxlLXN0YXRpY10sIFtfTFRfRU5BQkxFX1NUQVRJQ10pCisgIF9MVF9VTkxFU1NfT1BUSU9OUyhbTFRfSU5JVF0sIFtwaWMtb25seSBuby1waWNdLCBbX0xUX1dJVEhfUElDXSkKKyAgX0xUX1VOTEVTU19PUFRJT05TKFtMVF9JTklUXSwgW2Zhc3QtaW5zdGFsbCBkaXNhYmxlLWZhc3QtaW5zdGFsbF0sCisgIAkJICAgW19MVF9FTkFCTEVfRkFTVF9JTlNUQUxMXSkKKyAgXSkKK10pIyBfTFRfU0VUX09QVElPTlMKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE1hY3JvcyB0byBoYW5kbGUgTFRfSU5JVCBvcHRpb25zLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgX0xUX01BTkdMRV9ERUZVTihNQUNSTy1OQU1FLCBPUFRJT04tTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX0xUX01BTkdMRV9ERUZVTl0sCitbW19MVF9PUFRJT05fREVGVU5fXW00X2JwYXRzdWJzdChtNF90b3VwcGVyKFskMV9fJDJdKSwgW1teQS1aMC05X11dLCBbX10pXSkKKworCisjIExUX09QVElPTl9ERUZJTkUoTUFDUk8tTkFNRSwgT1BUSU9OLU5BTUUsIENPREUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW0xUX09QVElPTl9ERUZJTkVdLAorW200X2RlZmluZShfTFRfTUFOR0xFX0RFRlVOKFskMV0sIFskMl0pLCBbJDNdKVtdZG5sCitdKSMgTFRfT1BUSU9OX0RFRklORQorCisKKyMgZGxvcGVuCisjIC0tLS0tLQorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFtkbG9wZW5dLCBbZW5hYmxlX2Rsb3Blbj15ZXMKK10pCisKK0FVX0RFRlVOKFtBQ19MSUJUT09MX0RMT1BFTl0sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbZGxvcGVuXSkKK0FDX0RJQUdOT1NFKFtvYnNvbGV0ZV0sCitbJDA6IFJlbW92ZSB0aGlzIHdhcm5pbmcgYW5kIHRoZSBjYWxsIHRvIF9MVF9TRVRfT1BUSU9OIHdoZW4geW91CitwdXQgdGhlIGBkbG9wZW4nIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKK10pCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9ETE9QRU5dLCBbXSkKKworCisjIHdpbjMyLWRsbAorIyAtLS0tLS0tLS0KKyMgRGVjbGFyZSBwYWNrYWdlIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHdpbjMyIGRsbCdzLgorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFt3aW4zMi1kbGxdLAorW2VuYWJsZV93aW4zMl9kbGw9eWVzCisKK2Nhc2UgJGhvc3QgaW4KKyotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotY2VnY2MqKQorICBBQ19DSEVDS19UT09MKEFTLCBhcywgZmFsc2UpCisgIEFDX0NIRUNLX1RPT0woRExMVE9PTCwgZGxsdG9vbCwgZmFsc2UpCisgIEFDX0NIRUNLX1RPT0woT0JKRFVNUCwgb2JqZHVtcCwgZmFsc2UpCisgIDs7Citlc2FjCisKK3Rlc3QgLXogIiRBUyIgJiYgQVM9YXMKK19MVF9ERUNMKFtdLCBbQVNdLCAgICAgIFswXSwgW0Fzc2VtYmxlciBwcm9ncmFtXSlkbmwKKwordGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzBdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKWRubAorCit0ZXN0IC16ICIkT0JKRFVNUCIgJiYgT0JKRFVNUD1vYmpkdW1wCitfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMF0sIFtPYmplY3QgZHVtcGVyIHByb2dyYW1dKWRubAorXSkjIHdpbjMyLWRsbAorCitBVV9ERUZVTihbQUNfTElCVE9PTF9XSU4zMl9ETExdLAorW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgW3dpbjMyLWRsbF0pCitBQ19ESUFHTk9TRShbb2Jzb2xldGVdLAorWyQwOiBSZW1vdmUgdGhpcyB3YXJuaW5nIGFuZCB0aGUgY2FsbCB0byBfTFRfU0VUX09QVElPTiB3aGVuIHlvdQorcHV0IHRoZSBgd2luMzItZGxsJyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCitdKQorCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfV0lOMzJfRExMXSwgW10pCisKKworIyBfTFRfRU5BQkxFX1NIQVJFRChbREVGQVVMVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1zaGFyZWQgZmxhZywgYW5kIHN1cHBvcnRzIHRoZSBgc2hhcmVkJyBhbmQKKyMgYGRpc2FibGUtc2hhcmVkJyBMVF9JTklUIG9wdGlvbnMuCisjIERFRkFVTFQgaXMgZWl0aGVyIGB5ZXMnIG9yIGBubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgeWVzJy4KK200X2RlZmluZShbX0xUX0VOQUJMRV9TSEFSRURdLAorW200X2RlZmluZShbX0xUX0VOQUJMRV9TSEFSRURfREVGQVVMVF0sIFttNF9pZigkMSwgbm8sIG5vLCB5ZXMpXSlkbmwKK0FDX0FSR19FTkFCTEUoW3NoYXJlZF0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1zaGFyZWRAPDpAPVBLR1NAOj5AXSwKKwlbYnVpbGQgc2hhcmVkIGxpYnJhcmllcyBAPDpAZGVmYXVsdD1dX0xUX0VOQUJMRV9TSEFSRURfREVGQVVMVFtAOj5AXSldLAorICAgIFtwPSR7UEFDS0FHRS1kZWZhdWx0fQorICAgIGNhc2UgJGVuYWJsZXZhbCBpbgorICAgIHllcykgZW5hYmxlX3NoYXJlZD15ZXMgOzsKKyAgICBubykgZW5hYmxlX3NoYXJlZD1ubyA7OworICAgICopCisgICAgICBlbmFibGVfc2hhcmVkPW5vCisgICAgICAjIExvb2sgYXQgdGhlIGFyZ3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNlcGFyYXRvcnMuCisgICAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKKyAgICAgIGZvciBwa2cgaW4gJGVuYWJsZXZhbDsgZG8KKwlJRlM9IiRsdF9zYXZlX2lmcyIKKwlpZiB0ZXN0ICJYJHBrZyIgPSAiWCRwIjsgdGhlbgorCSAgZW5hYmxlX3NoYXJlZD15ZXMKKwlmaQorICAgICAgZG9uZQorICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgICA7OworICAgIGVzYWNdLAorICAgIFtlbmFibGVfc2hhcmVkPV1fTFRfRU5BQkxFX1NIQVJFRF9ERUZBVUxUKQorCisgICAgX0xUX0RFQ0woW2J1aWxkX2xpYnRvb2xfbGlic10sIFtlbmFibGVfc2hhcmVkXSwgWzBdLAorCVtXaGV0aGVyIG9yIG5vdCB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzXSkKK10pIyBfTFRfRU5BQkxFX1NIQVJFRAorCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW3NoYXJlZF0sIFtfTFRfRU5BQkxFX1NIQVJFRChbeWVzXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFtkaXNhYmxlLXNoYXJlZF0sIFtfTFRfRU5BQkxFX1NIQVJFRChbbm9dKV0pCisKKyMgT2xkIG5hbWVzOgorQUNfREVGVU4oW0FDX0VOQUJMRV9TSEFSRURdLAorW19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgbTRfaWYoWyQxXSwgW25vXSwgW2Rpc2FibGUtXSlbc2hhcmVkXSkKK10pCisKK0FDX0RFRlVOKFtBQ19ESVNBQkxFX1NIQVJFRF0sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbZGlzYWJsZS1zaGFyZWRdKQorXSkKKworQVVfREVGVU4oW0FNX0VOQUJMRV9TSEFSRURdLCBbQUNfRU5BQkxFX1NIQVJFRCgkQCldKQorQVVfREVGVU4oW0FNX0RJU0FCTEVfU0hBUkVEXSwgW0FDX0RJU0FCTEVfU0hBUkVEKCRAKV0pCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQU1fRU5BQkxFX1NIQVJFRF0sIFtdKQorZG5sIEFDX0RFRlVOKFtBTV9ESVNBQkxFX1NIQVJFRF0sIFtdKQorCisKKworIyBfTFRfRU5BQkxFX1NUQVRJQyhbREVGQVVMVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1zdGF0aWMgZmxhZywgYW5kIHN1cHBvcnQgdGhlIGBzdGF0aWMnIGFuZAorIyBgZGlzYWJsZS1zdGF0aWMnIExUX0lOSVQgb3B0aW9ucy4KKyMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgorbTRfZGVmaW5lKFtfTFRfRU5BQkxFX1NUQVRJQ10sCitbbTRfZGVmaW5lKFtfTFRfRU5BQkxFX1NUQVRJQ19ERUZBVUxUXSwgW200X2lmKCQxLCBubywgbm8sIHllcyldKWRubAorQUNfQVJHX0VOQUJMRShbc3RhdGljXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXN0YXRpY0A8OkA9UEtHU0A6PkBdLAorCVtidWlsZCBzdGF0aWMgbGlicmFyaWVzIEA8OkBkZWZhdWx0PV1fTFRfRU5BQkxFX1NUQVRJQ19ERUZBVUxUW0A6PkBdKV0sCisgICAgW3A9JHtQQUNLQUdFLWRlZmF1bHR9CisgICAgY2FzZSAkZW5hYmxldmFsIGluCisgICAgeWVzKSBlbmFibGVfc3RhdGljPXllcyA7OworICAgIG5vKSBlbmFibGVfc3RhdGljPW5vIDs7CisgICAgKikKKyAgICAgZW5hYmxlX3N0YXRpYz1ubworICAgICAgIyBMb29rIGF0IHRoZSBhcmd1bWVudCB3ZSBnb3QuICBXZSB1c2UgYWxsIHRoZSBjb21tb24gbGlzdCBzZXBhcmF0b3JzLgorICAgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiwiCisgICAgICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCisJSUZTPSIkbHRfc2F2ZV9pZnMiCisJaWYgdGVzdCAiWCRwa2ciID0gIlgkcCI7IHRoZW4KKwkgIGVuYWJsZV9zdGF0aWM9eWVzCisJZmkKKyAgICAgIGRvbmUKKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgOzsKKyAgICBlc2FjXSwKKyAgICBbZW5hYmxlX3N0YXRpYz1dX0xUX0VOQUJMRV9TVEFUSUNfREVGQVVMVCkKKworICAgIF9MVF9ERUNMKFtidWlsZF9vbGRfbGlic10sIFtlbmFibGVfc3RhdGljXSwgWzBdLAorCVtXaGV0aGVyIG9yIG5vdCB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzXSkKK10pIyBfTFRfRU5BQkxFX1NUQVRJQworCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW3N0YXRpY10sIFtfTFRfRU5BQkxFX1NUQVRJQyhbeWVzXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFtkaXNhYmxlLXN0YXRpY10sIFtfTFRfRU5BQkxFX1NUQVRJQyhbbm9dKV0pCisKKyMgT2xkIG5hbWVzOgorQUNfREVGVU4oW0FDX0VOQUJMRV9TVEFUSUNdLAorW19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgbTRfaWYoWyQxXSwgW25vXSwgW2Rpc2FibGUtXSlbc3RhdGljXSkKK10pCisKK0FDX0RFRlVOKFtBQ19ESVNBQkxFX1NUQVRJQ10sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbZGlzYWJsZS1zdGF0aWNdKQorXSkKKworQVVfREVGVU4oW0FNX0VOQUJMRV9TVEFUSUNdLCBbQUNfRU5BQkxFX1NUQVRJQygkQCldKQorQVVfREVGVU4oW0FNX0RJU0FCTEVfU1RBVElDXSwgW0FDX0RJU0FCTEVfU1RBVElDKCRAKV0pCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQU1fRU5BQkxFX1NUQVRJQ10sIFtdKQorZG5sIEFDX0RFRlVOKFtBTV9ESVNBQkxFX1NUQVRJQ10sIFtdKQorCisKKworIyBfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTChbREVGQVVMVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1mYXN0LWluc3RhbGwgZmxhZywgYW5kIHN1cHBvcnQgdGhlIGBmYXN0LWluc3RhbGwnCisjIGFuZCBgZGlzYWJsZS1mYXN0LWluc3RhbGwnIExUX0lOSVQgb3B0aW9ucy4KKyMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgorbTRfZGVmaW5lKFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTF0sCitbbTRfZGVmaW5lKFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTF9ERUZBVUxUXSwgW200X2lmKCQxLCBubywgbm8sIHllcyldKWRubAorQUNfQVJHX0VOQUJMRShbZmFzdC1pbnN0YWxsXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWZhc3QtaW5zdGFsbEA8OkA9UEtHU0A6PkBdLAorICAgIFtvcHRpbWl6ZSBmb3IgZmFzdCBpbnN0YWxsYXRpb24gQDw6QGRlZmF1bHQ9XV9MVF9FTkFCTEVfRkFTVF9JTlNUQUxMX0RFRkFVTFRbQDo+QF0pXSwKKyAgICBbcD0ke1BBQ0tBR0UtZGVmYXVsdH0KKyAgICBjYXNlICRlbmFibGV2YWwgaW4KKyAgICB5ZXMpIGVuYWJsZV9mYXN0X2luc3RhbGw9eWVzIDs7CisgICAgbm8pIGVuYWJsZV9mYXN0X2luc3RhbGw9bm8gOzsKKyAgICAqKQorICAgICAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1ubworICAgICAgIyBMb29rIGF0IHRoZSBhcmd1bWVudCB3ZSBnb3QuICBXZSB1c2UgYWxsIHRoZSBjb21tb24gbGlzdCBzZXBhcmF0b3JzLgorICAgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiwiCisgICAgICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCisJSUZTPSIkbHRfc2F2ZV9pZnMiCisJaWYgdGVzdCAiWCRwa2ciID0gIlgkcCI7IHRoZW4KKwkgIGVuYWJsZV9mYXN0X2luc3RhbGw9eWVzCisJZmkKKyAgICAgIGRvbmUKKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgOzsKKyAgICBlc2FjXSwKKyAgICBbZW5hYmxlX2Zhc3RfaW5zdGFsbD1dX0xUX0VOQUJMRV9GQVNUX0lOU1RBTExfREVGQVVMVCkKKworX0xUX0RFQ0woW2Zhc3RfaW5zdGFsbF0sIFtlbmFibGVfZmFzdF9pbnN0YWxsXSwgWzBdLAorCSBbV2hldGhlciBvciBub3QgdG8gb3B0aW1pemUgZm9yIGZhc3QgaW5zdGFsbGF0aW9uXSlkbmwKK10pIyBfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTAorCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW2Zhc3QtaW5zdGFsbF0sIFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTChbeWVzXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFtkaXNhYmxlLWZhc3QtaW5zdGFsbF0sIFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTChbbm9dKV0pCisKKyMgT2xkIG5hbWVzOgorQVVfREVGVU4oW0FDX0VOQUJMRV9GQVNUX0lOU1RBTExdLAorW19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgbTRfaWYoWyQxXSwgW25vXSwgW2Rpc2FibGUtXSlbZmFzdC1pbnN0YWxsXSkKK0FDX0RJQUdOT1NFKFtvYnNvbGV0ZV0sCitbJDA6IFJlbW92ZSB0aGlzIHdhcm5pbmcgYW5kIHRoZSBjYWxsIHRvIF9MVF9TRVRfT1BUSU9OIHdoZW4geW91IHB1dAordGhlIGBmYXN0LWluc3RhbGwnIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKK10pCisKK0FVX0RFRlVOKFtBQ19ESVNBQkxFX0ZBU1RfSU5TVEFMTF0sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbZGlzYWJsZS1mYXN0LWluc3RhbGxdKQorQUNfRElBR05PU0UoW29ic29sZXRlXSwKK1skMDogUmVtb3ZlIHRoaXMgd2FybmluZyBhbmQgdGhlIGNhbGwgdG8gX0xUX1NFVF9PUFRJT04gd2hlbiB5b3UgcHV0Cit0aGUgYGRpc2FibGUtZmFzdC1pbnN0YWxsJyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCitdKQorCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0VOQUJMRV9GQVNUX0lOU1RBTExdLCBbXSkKK2RubCBBQ19ERUZVTihbQU1fRElTQUJMRV9GQVNUX0lOU1RBTExdLCBbXSkKKworCisjIF9MVF9XSVRIX1BJQyhbTU9ERV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGltcGxlbWVudCB0aGUgLS13aXRoLXBpYyBmbGFnLCBhbmQgc3VwcG9ydCB0aGUgYHBpYy1vbmx5JyBhbmQgYG5vLXBpYycKKyMgTFRfSU5JVCBvcHRpb25zLgorIyBNT0RFIGlzIGVpdGhlciBgeWVzJyBvciBgbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGJvdGgnLgorbTRfZGVmaW5lKFtfTFRfV0lUSF9QSUNdLAorW0FDX0FSR19XSVRIKFtwaWNdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLXBpY10sCisJW3RyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIEA8OkBkZWZhdWx0PXVzZSBib3RoQDo+QF0pXSwKKyAgICBbcGljX21vZGU9IiR3aXRodmFsIl0sCisgICAgW3BpY19tb2RlPWRlZmF1bHRdKQorCit0ZXN0IC16ICIkcGljX21vZGUiICYmIHBpY19tb2RlPW00X2RlZmF1bHQoWyQxXSwgW2RlZmF1bHRdKQorCitfTFRfREVDTChbXSwgW3BpY19tb2RlXSwgWzBdLCBbV2hhdCB0eXBlIG9mIG9iamVjdHMgdG8gYnVpbGRdKWRubAorXSkjIF9MVF9XSVRIX1BJQworCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW3BpYy1vbmx5XSwgW19MVF9XSVRIX1BJQyhbeWVzXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFtuby1waWNdLCBbX0xUX1dJVEhfUElDKFtub10pXSkKKworIyBPbGQgbmFtZToKK0FVX0RFRlVOKFtBQ19MSUJUT09MX1BJQ01PREVdLAorW19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgW3BpYy1vbmx5XSkKK0FDX0RJQUdOT1NFKFtvYnNvbGV0ZV0sCitbJDA6IFJlbW92ZSB0aGlzIHdhcm5pbmcgYW5kIHRoZSBjYWxsIHRvIF9MVF9TRVRfT1BUSU9OIHdoZW4geW91CitwdXQgdGhlIGBwaWMtb25seScgb3B0aW9uIGludG8gTFRfSU5JVCdzIGZpcnN0IHBhcmFtZXRlci5dKQorXSkKKworZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX1BJQ01PREVdLCBbXSkKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIExURExfSU5JVCBPcHRpb25zICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworCittNF9kZWZpbmUoW19MVERMX01PREVdLCBbXSkKK0xUX09QVElPTl9ERUZJTkUoW0xURExfSU5JVF0sIFtub25yZWN1cnNpdmVdLAorCQkgW200X2RlZmluZShbX0xURExfTU9ERV0sIFtub25yZWN1cnNpdmVdKV0pCitMVF9PUFRJT05fREVGSU5FKFtMVERMX0lOSVRdLCBbcmVjdXJzaXZlXSwKKwkJIFttNF9kZWZpbmUoW19MVERMX01PREVdLCBbcmVjdXJzaXZlXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRETF9JTklUXSwgW3N1YnByb2plY3RdLAorCQkgW200X2RlZmluZShbX0xURExfTU9ERV0sIFtzdWJwcm9qZWN0XSldKQorCittNF9kZWZpbmUoW19MVERMX1RZUEVdLCBbXSkKK0xUX09QVElPTl9ERUZJTkUoW0xURExfSU5JVF0sIFtpbnN0YWxsYWJsZV0sCisJCSBbbTRfZGVmaW5lKFtfTFRETF9UWVBFXSwgW2luc3RhbGxhYmxlXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRETF9JTklUXSwgW2NvbnZlbmllbmNlXSwKKwkJIFttNF9kZWZpbmUoW19MVERMX1RZUEVdLCBbY29udmVuaWVuY2VdKV0pCmRpZmYgLS1naXQgYS9tNC9sdHN1Z2FyLm00IGIvbTQvbHRzdWdhci5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDAwYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvbTQvbHRzdWdhci5tNApAQCAtMCwwICsxLDEyMyBAQAorIyBsdHN1Z2FyLm00IC0tIGxpYnRvb2wgbTQgYmFzZSBsYXllci4gICAgICAgICAgICAgICAgICAgICAgICAgLSotQXV0b2NvbmYtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBXcml0dGVuIGJ5IEdhcnkgVi4gVmF1Z2hhbiwgMjAwNAorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDYgbHRzdWdhci5tNAorCisjIFRoaXMgaXMgdG8gaGVscCBhY2xvY2FsIGZpbmQgdGhlc2UgbWFjcm9zLCBhcyBpdCBjYW4ndCBzZWUgbTRfZGVmaW5lLgorQUNfREVGVU4oW0xUU1VHQVJfVkVSU0lPTl0sIFttNF9pZihbMC4xXSldKQorCisKKyMgbHRfam9pbihTRVAsIEFSRzEsIFtBUkcyLi4uXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJvZHVjZSBBUkcxU0VQQVJHMi4uLlNFUEFSR24sIG9taXR0aW5nIFtdIGFyZ3VtZW50cyBhbmQgdGhlaXIKKyMgYXNzb2NpYXRlZCBzZXBhcmF0b3IuCisjIE5lZWRlZCB1bnRpbCB3ZSBjYW4gcmVseSBvbiBtNF9qb2luIGZyb20gQXV0b2NvbmYgMi42Miwgc2luY2UgYWxsIGVhcmxpZXIKKyMgdmVyc2lvbnMgaW4gbTRzdWdhciBoYWQgYnVncy4KK200X2RlZmluZShbbHRfam9pbl0sCitbbTRfaWYoWyQjXSwgWzFdLCBbXSwKKyAgICAgICBbJCNdLCBbMl0sIFtbJDJdXSwKKyAgICAgICBbbTRfaWYoWyQyXSwgW10sIFtdLCBbWyQyXV9dKSQwKFskMV0sIG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSldKQorbTRfZGVmaW5lKFtfbHRfam9pbl0sCitbbTRfaWYoWyQjJDJdLCBbMl0sIFtdLAorICAgICAgIFttNF9pZihbJDJdLCBbXSwgW10sIFtbJDEkMl1dKSQwKFskMV0sIG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSldKQorCisKKyMgbHRfY2FyKExJU1QpCisjIGx0X2NkcihMSVNUKQorIyAtLS0tLS0tLS0tLS0KKyMgTWFuaXB1bGF0ZSBtNCBsaXN0cy4KKyMgVGhlc2UgbWFjcm9zIGFyZSBuZWNlc3NhcnkgYXMgbG9uZyBhcyB3aWxsIHN0aWxsIG5lZWQgdG8gc3VwcG9ydAorIyBBdXRvY29uZi0yLjU5IHdoaWNoIHF1b3RlcyBkaWZmZXJlbnRseS4KK200X2RlZmluZShbbHRfY2FyXSwgW1skMV1dKQorbTRfZGVmaW5lKFtsdF9jZHJdLAorW200X2lmKFskI10sIDAsIFttNF9mYXRhbChbJDA6IGNhbm5vdCBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHNdKV0sCisgICAgICAgWyQjXSwgMSwgW10sCisgICAgICAgW200X2RxdW90ZShtNF9zaGlmdCgkQCkpXSldKQorbTRfZGVmaW5lKFtsdF91bnF1b3RlXSwgJDEpCisKKworIyBsdF9hcHBlbmQoTUFDUk8tTkFNRSwgU1RSSU5HLCBbU0VQQVJBVE9SXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlZGVmaW5lIE1BQ1JPLU5BTUUgdG8gaG9sZCBpdHMgZm9ybWVyIGNvbnRlbnQgcGx1cyBgU0VQQVJBVE9SJ2BTVFJJTkcnLgorIyBOb3RlIHRoYXQgbmVpdGhlciBTRVBBUkFUT1Igbm9yIFNUUklORyBhcmUgZXhwYW5kZWQ7IHRoZXkgYXJlIGFwcGVuZGVkCisjIHRvIE1BQ1JPLU5BTUUgYXMgaXMgKGxlYXZpbmcgdGhlIGV4cGFuc2lvbiBmb3Igd2hlbiBNQUNSTy1OQU1FIGlzIGludm9rZWQpLgorIyBObyBTRVBBUkFUT1IgaXMgb3V0cHV0IGlmIE1BQ1JPLU5BTUUgd2FzIHByZXZpb3VzbHkgdW5kZWZpbmVkIChkaWZmZXJlbnQKKyMgdGhhbiBkZWZpbmVkIGFuZCBlbXB0eSkuCisjCisjIFRoaXMgbWFjcm8gaXMgbmVlZGVkIHVudGlsIHdlIGNhbiByZWx5IG9uIEF1dG9jb25mIDIuNjIsIHNpbmNlIGVhcmxpZXIKKyMgdmVyc2lvbnMgb2YgbTRzdWdhciBtaXN0YWtlbmx5IGV4cGFuZGVkIFNFUEFSQVRPUiBidXQgbm90IFNUUklORy4KK200X2RlZmluZShbbHRfYXBwZW5kXSwKK1ttNF9kZWZpbmUoWyQxXSwKKwkgICBtNF9pZmRlZihbJDFdLCBbbTRfZGVmbihbJDFdKVskM11dKVskMl0pXSkKKworCisKKyMgbHRfY29tYmluZShTRVAsIFBSRUZJWC1MSVNULCBJTkZJWCwgU1VGRklYMSwgW1NVRkZJWDIuLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2R1Y2UgYSBTRVAgZGVsaW1pdGVkIGxpc3Qgb2YgYWxsIHBhaXJlZCBjb21iaW5hdGlvbnMgb2YgZWxlbWVudHMgb2YKKyMgUFJFRklYLUxJU1Qgd2l0aCBTVUZGSVgxIHRocm91Z2ggU1VGRklYbi4gIEVhY2ggZWxlbWVudCBvZiB0aGUgbGlzdAorIyBoYXMgdGhlIGZvcm0gUFJFRklYbUlORklYU1VGRklYbi4KKyMgTmVlZGVkIHVudGlsIHdlIGNhbiByZWx5IG9uIG00X2NvbWJpbmUgYWRkZWQgaW4gQXV0b2NvbmYgMi42Mi4KK200X2RlZmluZShbbHRfY29tYmluZV0sCitbbTRfaWYobTRfZXZhbChbJCMgPiAzXSksIFsxXSwKKyAgICAgICBbbTRfcHVzaGRlZihbX0x0X3NlcF0sIFttNF9kZWZpbmUoW19MdF9zZXBdLCBtNF9kZWZuKFtsdF9jYXJdKSldKV1dZG5sCitbW200X2ZvcmVhY2goW19MdF9wcmVmaXhdLCBbJDJdLAorCSAgICAgW200X2ZvcmVhY2goW19MdF9zdWZmaXhdLAorCQldbTRfZHF1b3RlKG00X2RxdW90ZShtNF9zaGlmdChtNF9zaGlmdChtNF9zaGlmdCgkQCkpKSkpWywKKwlbX0x0X3NlcChbJDFdKVtdbTRfZGVmbihbX0x0X3ByZWZpeF0pWyQzXW00X2RlZm4oW19MdF9zdWZmaXhdKV0pXSldKV0pCisKKworIyBsdF9pZl9hcHBlbmRfdW5pcShNQUNSTy1OQU1FLCBWQVJOQU1FLCBbU0VQQVJBVE9SXSwgW1VOSVFdLCBbTk9ULVVOSVFdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJZmYgTUFDUk8tTkFNRSBkb2VzIG5vdCB5ZXQgY29udGFpbiBWQVJOQU1FLCB0aGVuIGFwcGVuZCBpdCAoZGVsaW1pdGVkCisjIGJ5IFNFUEFSQVRPUiBpZiBzdXBwbGllZCkgYW5kIGV4cGFuZCBVTklRLCBlbHNlIE5PVC1VTklRLgorbTRfZGVmaW5lKFtsdF9pZl9hcHBlbmRfdW5pcV0sCitbbTRfaWZkZWYoWyQxXSwKKwkgIFttNF9pZihtNF9pbmRleChbJDNdbTRfZGVmbihbJDFdKVskM10sIFskMyQyJDNdKSwgWy0xXSwKKwkJIFtsdF9hcHBlbmQoWyQxXSwgWyQyXSwgWyQzXSkkNF0sCisJCSBbJDVdKV0sCisJICBbbHRfYXBwZW5kKFskMV0sIFskMl0sIFskM10pJDRdKV0pCisKKworIyBsdF9kaWN0X2FkZChESUNULCBLRVksIFZBTFVFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtsdF9kaWN0X2FkZF0sCitbbTRfZGVmaW5lKFskMSgkMildLCBbJDNdKV0pCisKKworIyBsdF9kaWN0X2FkZF9zdWJrZXkoRElDVCwgS0VZLCBTVUJLRVksIFZBTFVFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtsdF9kaWN0X2FkZF9zdWJrZXldLAorW200X2RlZmluZShbJDEoJDI6JDMpXSwgWyQ0XSldKQorCisKKyMgbHRfZGljdF9mZXRjaChESUNULCBLRVksIFtTVUJLRVldKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2x0X2RpY3RfZmV0Y2hdLAorW200X2lmdmFsKFskM10sCisJbTRfaWZkZWYoWyQxKCQyOiQzKV0sIFttNF9kZWZuKFskMSgkMjokMyldKV0pLAorICAgIG00X2lmZGVmKFskMSgkMildLCBbbTRfZGVmbihbJDEoJDIpXSldKSldKQorCisKKyMgbHRfaWZfZGljdF9mZXRjaChESUNULCBLRVksIFtTVUJLRVldLCBWQUxVRSwgSUYtVFJVRSwgW0lGLUZBTFNFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbbHRfaWZfZGljdF9mZXRjaF0sCitbbTRfaWYobHRfZGljdF9mZXRjaChbJDFdLCBbJDJdLCBbJDNdKSwgWyQ0XSwKKwlbJDVdLAorICAgIFskNl0pXSkKKworCisjIGx0X2RpY3RfZmlsdGVyKERJQ1QsIFtTVUJLRVldLCBWQUxVRSwgW1NFUEFSQVRPUl0sIEtFWSwgWy4uLl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2x0X2RpY3RfZmlsdGVyXSwKK1ttNF9pZihbJDVdLCBbXSwgW10sCisgIFtsdF9qb2luKG00X3F1b3RlKG00X2RlZmF1bHQoWyQ0XSwgW1ssIF1dKSksCisgICAgICAgICAgIGx0X3VucXVvdGUobTRfc3BsaXQobTRfbm9ybWFsaXplKG00X2ZvcmVhY2goX0x0X2tleSwgbHRfY2FyKFttNF9zaGlmdG4oNCwgJEApXSksCisJCSAgICAgIFtsdF9pZl9kaWN0X2ZldGNoKFskMV0sIF9MdF9rZXksIFskMl0sIFskM10sIFtfTHRfa2V5IF0pXSkpKSkpXSlbXWRubAorXSkKZGlmZiAtLWdpdCBhL200L2x0dmVyc2lvbi5tNCBiL200L2x0dmVyc2lvbi5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGUxNTRmCi0tLSAvZGV2L251bGwKKysrIGIvbTQvbHR2ZXJzaW9uLm00CkBAIC0wLDAgKzEsMjMgQEAKKyMgbHR2ZXJzaW9uLm00IC0tIHZlcnNpb24gbnVtYmVycwkJCS0qLSBBdXRvY29uZiAtKi0KKyMKKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgV3JpdHRlbiBieSBTY290dCBKYW1lcyBSZW1uYW50LCAyMDA0CisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCisjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBHZW5lcmF0ZWQgZnJvbSBsdHZlcnNpb24uaW4uCisKKyMgc2VyaWFsIDMwMTIgbHR2ZXJzaW9uLm00CisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sCisKK200X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuMi42XSkKK200X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMwMTJdKQorCitBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAorW21hY3JvX3ZlcnNpb249JzIuMi42JworbWFjcm9fcmV2aXNpb249JzEuMzAxMicKK19MVF9ERUNMKCwgbWFjcm9fdmVyc2lvbiwgMCwgW1doaWNoIHJlbGVhc2Ugb2YgbGlidG9vbC5tNCB3YXMgdXNlZD9dKQorX0xUX0RFQ0woLCBtYWNyb19yZXZpc2lvbiwgMCkKK10pCmRpZmYgLS1naXQgYS9tNC9sdH5vYnNvbGV0ZS5tNCBiL200L2x0fm9ic29sZXRlLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzN2JiMjAKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9sdH5vYnNvbGV0ZS5tNApAQCAtMCwwICsxLDkyIEBACisjIGx0fm9ic29sZXRlLm00IC0tIGFjbG9jYWwgc2F0aXNmeWluZyBvYnNvbGV0ZSBkZWZpbml0aW9ucy4gICAgLSotQXV0b2NvbmYtKi0KKyMKKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgV3JpdHRlbiBieSBTY290dCBKYW1lcyBSZW1uYW50LCAyMDA0LgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDQgbHR+b2Jzb2xldGUubTQKKworIyBUaGVzZSBleGlzdCBlbnRpcmVseSB0byBmb29sIGFjbG9jYWwgd2hlbiBib290c3RyYXBwaW5nIGxpYnRvb2wuCisjCisjIEluIHRoZSBwYXN0IGxpYnRvb2wubTQgaGFzIHByb3ZpZGVkIG1hY3JvcyB2aWEgQUNfREVGVU4gKG9yIEFVX0RFRlVOKQorIyB3aGljaCBoYXZlIGxhdGVyIGJlZW4gY2hhbmdlZCB0byBtNF9kZWZpbmUgYXMgdGhleSBhcmVuJ3QgcGFydCBvZiB0aGUKKyMgZXhwb3J0ZWQgQVBJLCBvciBtb3ZlZCB0byBBdXRvY29uZiBvciBBdXRvbWFrZSB3aGVyZSB0aGV5IGJlbG9uZy4KKyMKKyMgVGhlIHRyb3VibGUgaXMsIGFjbG9jYWwgaXMgYSBiaXQgdGhpY2suICBJdCdsbCBzZWUgdGhlIG9sZCBBQ19ERUZVTgorIyBpbiAvdXNyL3NoYXJlL2FjbG9jYWwvbGlidG9vbC5tNCBhbmQgcmVtZW1iZXIgaXQsIHRoZW4gd2hlbiBpdCBzZWVzIHVzCisjIHVzaW5nIGEgbWFjcm8gd2l0aCB0aGUgc2FtZSBuYW1lIGluIG91ciBsb2NhbCBtNC9saWJ0b29sLm00IGl0J2xsCisjIHB1bGwgdGhlIG9sZCBsaWJ0b29sLm00IGluIChpdCBkb2Vzbid0IHNlZSBvdXIgc2hpbnkgbmV3IG00X2RlZmluZQorIyBhbmQgZG9lc24ndCBrbm93IGFib3V0IEF1dG9jb25mIG1hY3JvcyBhdCBhbGwuKQorIworIyBTbyB3ZSBwcm92aWRlIHRoaXMgZmlsZSwgd2hpY2ggaGFzIGEgc2lsbHkgZmlsZW5hbWUgc28gaXQncyBhbHdheXMKKyMgaW5jbHVkZWQgYWZ0ZXIgZXZlcnl0aGluZyBlbHNlLiAgVGhpcyBwcm92aWRlcyBhY2xvY2FsIHdpdGggdGhlCisjIEFDX0RFRlVOcyBpdCB3YW50cywgYnV0IHdoZW4gbTQgcHJvY2Vzc2VzIGl0LCBpdCBkb2Vzbid0IGRvIGFueXRoaW5nCisjIGJlY2F1c2UgdGhvc2UgbWFjcm9zIGFscmVhZHkgZXhpc3QsIG9yIHdpbGwgYmUgb3ZlcndyaXR0ZW4gbGF0ZXIuCisjIFdlIHVzZSBBQ19ERUZVTiBvdmVyIEFVX0RFRlVOIGZvciBjb21wYXRpYmlsaXR5IHdpdGggYWNsb2NhbC0xLjYuIAorIworIyBBbnl0aW1lIHdlIHdpdGhkcmF3IGFuIEFDX0RFRlVOIG9yIEFVX0RFRlVOLCByZW1lbWJlciB0byBhZGQgaXQgaGVyZS4KKyMgWWVzLCB0aGF0IG1lYW5zIGV2ZXJ5IG5hbWUgb25jZSB0YWtlbiB3aWxsIG5lZWQgdG8gcmVtYWluIGhlcmUgdW50aWwKKyMgd2UgZ2l2ZSB1cCBjb21wYXRpYmlsaXR5IHdpdGggdmVyc2lvbnMgYmVmb3JlIDEuNywgYXQgd2hpY2ggcG9pbnQKKyMgd2UgbmVlZCB0byBrZWVwIG9ubHkgdGhvc2UgbmFtZXMgd2hpY2ggd2Ugc3RpbGwgcmVmZXIgdG8uCisKKyMgVGhpcyBpcyB0byBoZWxwIGFjbG9jYWwgZmluZCB0aGVzZSBtYWNyb3MsIGFzIGl0IGNhbid0IHNlZSBtNF9kZWZpbmUuCitBQ19ERUZVTihbTFRPQlNPTEVURV9WRVJTSU9OXSwgW200X2lmKFsxXSldKQorCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfTElOS0VSX09QVElPTl0sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MSU5LRVJfT1BUSU9OXSldKQorbTRfaWZuZGVmKFtBQ19QUk9HX0VHUkVQXSwJCVtBQ19ERUZVTihbQUNfUFJPR19FR1JFUF0pXSkKK200X2lmbmRlZihbX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0hdLAlbQUNfREVGVU4oW19MVF9BQ19QUk9HX0VDSE9fQkFDS1NMQVNIXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfU0hFTExfSU5JVF0sCQlbQUNfREVGVU4oW19MVF9BQ19TSEVMTF9JTklUXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfU1lTX0xJQlBBVEhfQUlYXSwJW0FDX0RFRlVOKFtfTFRfQUNfU1lTX0xJQlBBVEhfQUlYXSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19MVE1BSU5dLAkJW0FDX0RFRlVOKFtfTFRfUFJPR19MVE1BSU5dKV0pCittNF9pZm5kZWYoW19MVF9BQ19UQUdWQVJdLAkJW0FDX0RFRlVOKFtfTFRfQUNfVEFHVkFSXSldKQorbTRfaWZuZGVmKFtBQ19MVERMX0VOQUJMRV9JTlNUQUxMXSwJW0FDX0RFRlVOKFtBQ19MVERMX0VOQUJMRV9JTlNUQUxMXSldKQorbTRfaWZuZGVmKFtBQ19MVERMX1BSRU9QRU5dLAkJW0FDX0RFRlVOKFtBQ19MVERMX1BSRU9QRU5dKV0pCittNF9pZm5kZWYoW19MVF9BQ19TWVNfQ09NUElMRVJdLAlbQUNfREVGVU4oW19MVF9BQ19TWVNfQ09NUElMRVJdKV0pCittNF9pZm5kZWYoW19MVF9BQ19MT0NLXSwJCVtBQ19ERUZVTihbX0xUX0FDX0xPQ0tdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfU1lTX09MRF9BUkNISVZFXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19PTERfQVJDSElWRV0pXSkKK200X2lmbmRlZihbX0xUX0FDX1RSWV9ETE9QRU5fU0VMRl0sCVtBQ19ERUZVTihbX0xUX0FDX1RSWV9ETE9QRU5fU0VMRl0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9QUk9HX0NDX0NfT10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9QUk9HX0NDX0NfT10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTXSwgW0FDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19IQVJEX0xJTktfTE9DS1NdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfT0JKRElSXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9PQkpESVJdKV0pCittNF9pZm5kZWYoW0FDX0xURExfT0JKRElSXSwJCVtBQ19ERUZVTihbQUNfTFRETF9PQkpESVJdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfUFJPR19MRF9IQVJEQ09ERV9MSUJQQVRIXSwgW0FDX0RFRlVOKFtBQ19MSUJUT09MX1BST0dfTERfSEFSRENPREVfTElCUEFUSF0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9TWVNfTElCX1NUUklQXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19MSUJfU1RSSVBdKV0pCittNF9pZm5kZWYoW0FDX1BBVEhfTUFHSUNdLAkJW0FDX0RFRlVOKFtBQ19QQVRIX01BR0lDXSldKQorbTRfaWZuZGVmKFtBQ19QUk9HX0xEX0dOVV0sCQlbQUNfREVGVU4oW0FDX1BST0dfTERfR05VXSldKQorbTRfaWZuZGVmKFtBQ19QUk9HX0xEX1JFTE9BRF9GTEFHXSwJW0FDX0RFRlVOKFtBQ19QUk9HX0xEX1JFTE9BRF9GTEFHXSldKQorbTRfaWZuZGVmKFtBQ19ERVBMSUJTX0NIRUNLX01FVEhPRF0sCVtBQ19ERUZVTihbQUNfREVQTElCU19DSEVDS19NRVRIT0RdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9OT19SVFRJXSwgW0FDX0RFRlVOKFtBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfTk9fUlRUSV0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9TWVNfR0xPQkFMX1NZTUJPTF9QSVBFXSwgW0FDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEVdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUNdLCBbQUNfREVGVU4oW0FDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUNdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfUFJPR19MRF9TSExJQlNdLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfUFJPR19MRF9TSExJQlNdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfUE9TVERFUF9QUkVERVBdLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfUE9TVERFUF9QUkVERVBdKV0pCittNF9pZm5kZWYoW0xUX0FDX1BST0dfRUdSRVBdLAkJW0FDX0RFRlVOKFtMVF9BQ19QUk9HX0VHUkVQXSldKQorbTRfaWZuZGVmKFtMVF9BQ19QUk9HX1NFRF0sCQlbQUNfREVGVU4oW0xUX0FDX1BST0dfU0VEXSldKQorbTRfaWZuZGVmKFtfTFRfQ0NfQkFTRU5BTUVdLAkJW0FDX0RFRlVOKFtfTFRfQ0NfQkFTRU5BTUVdKV0pCittNF9pZm5kZWYoW19MVF9DT01QSUxFUl9CT0lMRVJQTEFURV0sCVtBQ19ERUZVTihbX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFXSldKQorbTRfaWZuZGVmKFtfTFRfTElOS0VSX0JPSUxFUlBMQVRFXSwJW0FDX0RFRlVOKFtfTFRfTElOS0VSX0JPSUxFUlBMQVRFXSldKQorbTRfaWZuZGVmKFtfQUNfUFJPR19MSUJUT09MXSwJCVtBQ19ERUZVTihbX0FDX1BST0dfTElCVE9PTF0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9TRVRVUF0sCQlbQUNfREVGVU4oW0FDX0xJQlRPT0xfU0VUVVBdKV0pCittNF9pZm5kZWYoW19MVF9BQ19DSEVDS19ETEZDTl0sCQlbQUNfREVGVU4oW19MVF9BQ19DSEVDS19ETEZDTl0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVJdLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfVEFHQ09ORklHXSwJCVtBQ19ERUZVTihbX0xUX0FDX1RBR0NPTkZJR10pXSkKK200X2lmbmRlZihbQUNfRElTQUJMRV9GQVNUX0lOU1RBTExdLAlbQUNfREVGVU4oW0FDX0RJU0FCTEVfRkFTVF9JTlNUQUxMXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19DWFhdLAkJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DWFhdKV0pCittNF9pZm5kZWYoW19MVF9BQ19MQU5HX0Y3N10sCQlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0Y3N10pXSkKK200X2lmbmRlZihbX0xUX0FDX0xBTkdfR0NKXSwJCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfR0NKXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX1JDXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9SQ10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfQ19DT05GSUddKV0pCittNF9pZm5kZWYoW19MVF9BQ19MQU5HX0NfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DX0NPTkZJR10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUddLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19DWFhfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DWFhfQ09ORklHXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX0xBTkdfRjc3X0NPTkZJR10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0Y3N19DT05GSUddKV0pCittNF9pZm5kZWYoW19MVF9BQ19MQU5HX0Y3N19DT05GSUddLAlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0Y3N19DT05GSUddKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfTEFOR19HQ0pfQ09ORklHXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfR0NKX0NPTkZJR10pXSkKK200X2lmbmRlZihbX0xUX0FDX0xBTkdfR0NKX0NPTkZJR10sCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfR0NKX0NPTkZJR10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX1JDX0NPTkZJR10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX1JDX0NPTkZJR10pXSkKK200X2lmbmRlZihbX0xUX0FDX0xBTkdfUkNfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19SQ19DT05GSUddKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfQ09ORklHXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9DT05GSUddKV0pCittNF9pZm5kZWYoW19MVF9BQ19GSUxFX0xURExMX0NdLAlbQUNfREVGVU4oW19MVF9BQ19GSUxFX0xURExMX0NdKV0pCmRpZmYgLS1naXQgYS9tNC9uZXRzbm1wX2FyZy5tNCBiL200L25ldHNubXBfYXJnLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMjMzMGIKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9uZXRzbm1wX2FyZy5tNApAQCAtMCwwICsxLDI3IEBACitkbmwgUmVwb3J0cyBhbiBpbnZhbGlkIG9wdGlvbiBhbmQgc3VnZ2VzdHMgLS1lbmFibGUtPEFSR1VNRU5UIDE+IGluc3RlYWQKK0FDX0RFRlVOKFtORVRTTk1QX0lOVkFMSURfRU5BQkxFXSwKKyAgW0FDX01TR19FUlJPUihbSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS0kMS8tLWRpc2FibGUtJDEgaW5zdGVhZF0pXSkKKworZG5sIFJlcG9ydHMgYW4gaW52YWxpZCBvcHRpb24gYW5kIHN1Z2dlc3RzIC0td2l0aC08QVJHVU1FTlQgMT4gaW5zdGVhZAorQUNfREVGVU4oW05FVFNOTVBfSU5WQUxJRF9XSVRIXSwKKyAgW0FDX01TR19FUlJPUihbSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtJDEvLS13aXRob3V0LSQxIGluc3RlYWRdKV0pCisKK2RubCBTaW1pbGFyIHRvIEFDX0FSR19FTkFCTEUgYnV0IGFsc28gZGVmaW5lcyBhIG1hdGNoaW5nIFdJVEggb3B0aW9uIHRoYXQKK2RubCBzdWdnZXN0cyB0aGUgdXNlIG9mIHRoZSBFTkFCTEUgb3B0aW9uIGlmIGNhbGxlZAorQUNfREVGVU4oW05FVFNOTVBfQVJHX0VOQUJMRV0sCisgIFtBQ19BUkdfRU5BQkxFKFskMV0sWyQyXWRubAorICAgICBtNF9pZihtNF9ldmFsKCQjIDwgMyksMSxbXSxbLFskM11dKWRubAorICAgICBtNF9pZihtNF9ldmFsKCQjIDwgNCksMSxbXSxbLFskNF1dKSkKKyAgIEFDX0FSR19XSVRIKAorICAgICBbJDFdLCwKKyAgICAgW05FVFNOTVBfSU5WQUxJRF9FTkFCTEUoWyQxXSldKV0pCisKK2RubCBTaW1pbGFyIHRvIEFDX0FSR19XSVRIIGJ1dCBhbHNvIGRlZmluZXMgYSBtYXRjaGluZyBFTkFCTEUgb3B0aW9uIHRoYXQKK2RubCBzdWdnZXN0cyB0aGUgdXNlIG9mIHRoZSBXSVRIIG9wdGlvbiBpZiBjYWxsZWQKK0FDX0RFRlVOKFtORVRTTk1QX0FSR19XSVRIXSwKKyAgW0FDX0FSR19XSVRIKFskMV0sWyQyXWRubAorICAgICBtNF9pZihtNF9ldmFsKCQjIDwgMyksMSxbXSxbLFskM11dKWRubAorICAgICBtNF9pZihtNF9ldmFsKCQjIDwgNCksMSxbXSxbLFskNF1dKSkKKyAgIEFDX0FSR19FTkFCTEUoCisgICAgIFskMV0sLAorICAgICBbTkVUU05NUF9JTlZBTElEX1dJVEgoWyQxXSldKV0pCmRpZmYgLS1naXQgYS9tNC9uZXRzbm1wX3NlYXJjaF9saWJzLm00IGIvbTQvbmV0c25tcF9zZWFyY2hfbGlicy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGQ4YTEyCi0tLSAvZGV2L251bGwKKysrIGIvbTQvbmV0c25tcF9zZWFyY2hfbGlicy5tNApAQCAtMCwwICsxLDM1IEBACitkbmwgQHN5bm9wc2lzIE5FVFNOTVBfU0VBUkNIX0xJQlMoRlVOQ1RJT04sIFNFQVJDSC1MSUJTLCBbQUNUSU9OLUlGLUZPVU5EXSwKK2RubCAgICAgICAgICAgICBbQUNUSU9OLUlGLU5PVC1GT1VORF0sIFtPVEhFUi1MSUJSQVJJRVNdLCBbVEFSR0VULVZBUklBQkxFXSkKK2RubCBTaW1pbGFyIHRvIEFDX1NFQVJDSF9MSUJTIGJ1dCBjaGFuZ2VzIFRBUkdFVC1WQVJJQUJMRSBpbnN0ZWFkIG9mIExJQlMKK2RubCBJZiBUQVJHRVQtVkFSSUFCTEUgaXMgdW5zZXQgdGhlbiBMSUJTIGlzIHVzZWQKK0FDX0RFRlVOKFtORVRTTk1QX1NFQVJDSF9MSUJTXSwKK1ttNF9wdXNoZGVmKFtuZXRzbm1wX3RhcmdldF0sbTRfaWZ2YWwoWyQ2XSxbJDZdLFtMSUJTXSkpCisgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgJDFdLAorICAgIFtuZXRzbm1wX2N2X2Z1bmNfJDFfXW5ldHNubXBfdGFyZ2V0LAorICAgIFtuZXRzbm1wX2Z1bmNfc2VhcmNoX3NhdmVfTElCUz0iJExJQlMiCisgICAgIG00X2lmKG5ldHNubXBfdGFyZ2V0LCBbTElCU10sCisgICAgICAgICBbbmV0c25tcF90YXJnZXRfdmFsPSIkTElCUyIKKyAgICAgICAgICBuZXRzbm1wX3RlbXBfTElCUz0iJDUgJHtMSUJTfSJdLAorICAgICAgICAgW25ldHNubXBfdGFyZ2V0X3ZhbD0iJG5ldHNubXBfdGFyZ2V0IgorICAgICAgICAgIG5ldHNubXBfdGVtcF9MSUJTPSIke25ldHNubXBfdGFyZ2V0X3ZhbH0gJDUgJHtMSUJTfSJdKQorICAgICBuZXRzbm1wX3Jlc3VsdD1ubworICAgICBMSUJTPSIke25ldHNubXBfdGVtcF9MSUJTfSIKKyAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfQ0FMTChbXSxbJDFdKV0sCisgICAgICAgICBbbmV0c25tcF9yZXN1bHQ9Im5vbmUgcmVxdWlyZWQiXSwKKyAgICAgICAgIFtmb3IgbmV0c25tcF9jdXJfbGliIGluICQyIDsgZG8KKyAgICAgICAgICAgICAgTElCUz0iLWwke25ldHNubXBfY3VyX2xpYn0gJHtuZXRzbm1wX3RlbXBfTElCU30iCisgICAgICAgICAgICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX0NBTEwoW10sWyQxXSldLAorICAgICAgICAgICAgICAgICAgW25ldHNubXBfcmVzdWx0PS1sJHtuZXRzbm1wX2N1cl9saWJ9CisgICAgICAgICAgICAgICAgICAgYnJlYWtdKQorICAgICAgICAgIGRvbmVdKQorICAgICBMSUJTPSIke25ldHNubXBfZnVuY19zZWFyY2hfc2F2ZV9MSUJTfSIKKyAgICAgW25ldHNubXBfY3ZfZnVuY18kMV9dbmV0c25tcF90YXJnZXQ9IiR7bmV0c25tcF9yZXN1bHR9Il0pCisgaWYgdGVzdCAiJHtbbmV0c25tcF9jdl9mdW5jXyQxX11uZXRzbm1wX3RhcmdldH0iICE9ICJubyIgOyB0aGVuCisgICAgaWYgdGVzdCAiJHtbbmV0c25tcF9jdl9mdW5jXyQxX11uZXRzbm1wX3RhcmdldH0iICE9ICJub25lIHJlcXVpcmVkIiA7IHRoZW4KKyAgICAgICBuZXRzbm1wX3RhcmdldD0iJHtuZXRzbm1wX3Jlc3VsdH0gJHtuZXRzbm1wX3RhcmdldF92YWx9IgorICAgIGZpCisgICAgJDMKKyBtNF9pZnZhbChbJDRdLCBbZWxzZQorICAgICQ0XSkKKyBmaQorIG00X3BvcGRlZihbbmV0c25tcF90YXJnZXRdKV0pCmRpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUuaW4gYi9tYW4vTWFrZWZpbGUuaW4KaW5kZXggYWIxODM3NS4uZDkwMzcxMyAxMDA2NDQKLS0tIGEvbWFuL01ha2VmaWxlLmluCisrKyBiL21hbi9NYWtlZmlsZS5pbgpAQCAtMTksNyArMTksOCBAQAogCXNubXBidWxrd2Fsay4xIHNubXBnZXRuZXh0LjEgc25tcHRlc3QuMSBzbm1wdHJhbnNsYXRlLjEgc25tcHRyYXAuMSBcCiAJc25tcHVzbS4xIHNubXB2YWNtLjEgc25tcHRhYmxlLjEgc25tcHN0YXR1cy4xIHNubXBjb25mLjEgbWliMmMuMSBcCiAJc25tcG5ldHN0YXQuMSBzbm1wZGVsdGEuMSBzbm1wZGYuMSBlbmNvZGVfa2V5Y2hhbmdlLjEgZml4cHJvYy4xIFwKLQluZXQtc25tcC1jb25maWcuMSBtaWIyYy11cGRhdGUuMSB0a21pYi4xIHRyYXB0b2VtYWlsLjEKKwluZXQtc25tcC1jb25maWcuMSBtaWIyYy11cGRhdGUuMSB0a21pYi4xIHRyYXB0b2VtYWlsLjEgXAorCW5ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEKIAogTUFOMyAgPSBzbm1wX2Nsb3NlLjMgc25tcF9mcmVlX3BkdS4zIHNubXBfb3Blbi4zIHNubXBfcmVhZC4zIFwKIAlzbm1wX3NlbGVjdF9pbmZvLjMgc25tcF9zZW5kLjMgc25tcF90aW1lb3V0LjMJCQkgICAgICAgXApAQCAtNDYsMTAgKzQ3LDE4IEBACiAJbmV0c25tcF9jb250YWluZXIuMyBuZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zIG5ldHNubXBfbGVhZi4zICAgXAogCW5ldHNubXBfcm93X21lcmdlLjMJCSAgICAgICBcCiAJbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMyBuZXRzbm1wX3N0YXNoX2NhY2hlLjMJICAgICAgIFwKLQluZXRzbm1wX3V0aWxpdGllcy4zCisJbmV0c25tcF91dGlsaXRpZXMuMyBcCisJbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zIFwKKwluZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zIFwKKwluZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zIFwKKwluZXRzbm1wX3RhYmxlX3Jvdy4zIFwKKwluZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zIFwKKwluZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zIFwKKwluZXRzbm1wX251bGxfY29udGFpbmVyLjMgXAorCW5ldHNubXBfdG9vbHMuaC4zCiAKLU1BTjNHID0gZGVmYXVsdF9zdG9yZS4zIG1pYl9hcGkuMyByZWFkX2NvbmZpZy4zIHNubXBfYWdlbnRfYXBpLjMgc25tcF9hbGFybS4zIFwKLQlzbm1wX2FwaS4zIHNubXBfc2Vzc19hcGkuMyBzbm1wX3RyYXBfYXBpLjMKK01BTjNHID0gZGVmYXVsdF9zdG9yZS4zIG1pYl9hcGkuMyBjb25maWdfYXBpLjMgc25tcF9hZ2VudF9hcGkuMyBzbm1wX2FsYXJtLjMgXAorCXNlc3Npb25fYXBpLjMgc25tcF9zZXNzX2FwaS4zIHNubXBfdHJhcF9hcGkuMyB2YXJiaW5kX2FwaS4zIHBkdV9hcGkuMyAKIE1BTjVHID0gc25tcGQuY29uZi41IHNubXB0cmFwZC5jb25mLjUgc25tcC5jb25mLjUgc25tcF9jb25maWcuNSB2YXJpYWJsZXMuNSBcCiAgICAgICAgIG1pYjJjLmNvbmYuNSBzbm1wZC5leGFtcGxlcy41IHNubXBkLmludGVybmFsLjUKIE1BTjhHID0gc25tcHRyYXBkLjggc25tcGQuOApAQCAtNjQsNyArNzMsNyBAQAogCXJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlci4zIHJlZ2lzdGVyX2FwcF9wcmVtaWJfaGFuZGxlci4zCVwKIAlyZWdpc3Rlcl9jb25maWdfaGFuZGxlci4zIHJlZ2lzdGVyX21pYl9oYW5kbGVycy4zIAkJXAogCXJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyLjMgCQkJCQlcCi0JdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIuMyB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyLjMKKwl1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlci4zIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIuMyByZWFkX2NvbmZpZy4zCiBTTk1QX0FMQVJNX0FMSUFTRVMgPSBzbm1wX2FsYXJtX3JlZ2lzdGVyLjMgc25tcF9hbGFybV9yZWdpc3Rlcl9oci4zIAlcCiAJc25tcF9hbGFybV91bnJlZ2lzdGVyLjMKIFNOTVBfU0VUX1NBVkVfREVTQ1JJUFRJT05TX0FMSUFTRVMgPSBmcHJpbnRfZGVzY3JpcHRpb24uMyBmcHJpbnRfb2JqaWQuMyBcCkBAIC05Miw4ICsxMDEsOCBAQAogCQllY2hvICIuc28gbWFuMy9kZWZhdWx0X3N0b3JlLjMiID4gJCRpIDsgCQlcCiAJZG9uZQogCUBmb3IgaSBpbiAkKFJFQURfQ09ORklHX0FMSUFTRVMpIDsgZG8JCQkJXAotCQllY2hvICJtYWtpbmcgbWFuIHBhZ2UgYWxpYXMgJCRpIC0+IHJlYWRfY29uZmlnIEFQSXMiIDsJXAotCQllY2hvICIuc28gbWFuMy9yZWFkX2NvbmZpZy4zIiA+ICQkaSA7IAkJCVwKKwkJZWNobyAibWFraW5nIG1hbiBwYWdlIGFsaWFzICQkaSAtPiBjb25maWdfYXBpIEFQSXMiIDsJXAorCQllY2hvICIuc28gbWFuMy9jb25maWdfYXBpLjMiID4gJCRpIDsgCQkJXAogCWRvbmUKIAlAZm9yIGkgaW4gJChTTk1QX0FMQVJNX0FMSUFTRVMpIDsgZG8JCQkJXAogCQllY2hvICJtYWtpbmcgbWFuIHBhZ2UgYWxpYXMgJCRpIC0+IHNubXBfYWxhcm0gQVBJcyIgOwlcCkBAIC0xMDcsNiArMTE2LDcgQEAKIAkJZWNobyAibWFraW5nIG1hbiBwYWdlIGFsaWFzICQkaSAtPiBzbm1wX3RyYXAgQVBJcyIgOwlcCiAJCWVjaG8gIi5zbyBtYW4zL3NubXBfdHJhcF9hcGkuMyIgPiAkJGkgOwkJCVwKIAlkb25lCisJZWNobyAiLnNvIG1hbjMvc2Vzc2lvbl9hcGkuMyIgPiBzbm1wX2FwaS4zCiAKIHNubXBidWxrZ2V0LjE6ICQoc3JjZGlyKS9zbm1wYnVsa2dldC4xLmRlZiAuLi9zZWRzY3JpcHQKIAkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3NubXBidWxrZ2V0LjEuZGVmID4gc25tcGJ1bGtnZXQuMQpAQCAtMTgwLDE3ICsxOTAsMjkgQEAKIG5ldC1zbm1wLWNvbmZpZy4xOiAkKHNyY2RpcikvbmV0LXNubXAtY29uZmlnLjEuZGVmIC4uL3NlZHNjcmlwdAogCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2RpcikvbmV0LXNubXAtY29uZmlnLjEuZGVmID4gbmV0LXNubXAtY29uZmlnLjEKIAorbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMTogJChzcmNkaXIpL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEuZGVmIC4uL3NlZHNjcmlwdAorCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2RpcikvbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMS5kZWYgPiBuZXQtc25tcC1jcmVhdGUtdjMtdXNlci4xCisKIHRrbWliLjE6ICQoc3JjZGlyKS90a21pYi4xLmRlZiAuLi9zZWRzY3JpcHQKIAkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3RrbWliLjEuZGVmID4gdGttaWIuMQogCiB0cmFwdG9lbWFpbC4xOiAkKHNyY2RpcikvdHJhcHRvZW1haWwuMS5kZWYgLi4vc2Vkc2NyaXB0CiAJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS90cmFwdG9lbWFpbC4xLmRlZiA+IHRyYXB0b2VtYWlsLjEKIAordmFyYmluZF9hcGkuMzogJChzcmNkaXIpL3ZhcmJpbmRfYXBpLjMuZGVmIC4uL3NlZHNjcmlwdAorCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2RpcikvdmFyYmluZF9hcGkuMy5kZWYgPiB2YXJiaW5kX2FwaS4zCisKK3BkdV9hcGkuMzogJChzcmNkaXIpL3BkdV9hcGkuMy5kZWYgLi4vc2Vkc2NyaXB0CisJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9wZHVfYXBpLjMuZGVmID4gcGR1X2FwaS4zCisKK3Nlc3Npb25fYXBpLjM6ICQoc3JjZGlyKS9zZXNzaW9uX2FwaS4zLmRlZiAuLi9zZWRzY3JpcHQKKwkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3Nlc3Npb25fYXBpLjMuZGVmID4gc2Vzc2lvbl9hcGkuMworCiBtaWJfYXBpLjM6ICQoc3JjZGlyKS9taWJfYXBpLjMuZGVmIC4uL3NlZHNjcmlwdAogCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2RpcikvbWliX2FwaS4zLmRlZiA+IG1pYl9hcGkuMwogCi1yZWFkX2NvbmZpZy4zOiAkKHNyY2RpcikvcmVhZF9jb25maWcuMy5kZWYgLi4vc2Vkc2NyaXB0Ci0JJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9yZWFkX2NvbmZpZy4zLmRlZiA+IHJlYWRfY29uZmlnLjMKK2NvbmZpZ19hcGkuMzogJChzcmNkaXIpL2NvbmZpZ19hcGkuMy5kZWYgLi4vc2Vkc2NyaXB0CisJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9jb25maWdfYXBpLjMuZGVmID4gY29uZmlnX2FwaS4zCiAKIHNubXBfYWdlbnRfYXBpLjM6ICQoc3JjZGlyKS9zbm1wX2FnZW50X2FwaS4zLmRlZiAuLi9zZWRzY3JpcHQKIAkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3NubXBfYWdlbnRfYXBpLjMuZGVmID4gc25tcF9hZ2VudF9hcGkuMwpAQCAtMTk4LDkgKzIyMCw2IEBACiBzbm1wX2FsYXJtLjM6ICQoc3JjZGlyKS9zbm1wX2FsYXJtLjMuZGVmIC4uL3NlZHNjcmlwdAogCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2Rpcikvc25tcF9hbGFybS4zLmRlZiA+IHNubXBfYWxhcm0uMwogCi1zbm1wX2FwaS4zOiAkKHNyY2Rpcikvc25tcF9hcGkuMy5kZWYgLi4vc2Vkc2NyaXB0Ci0JJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9zbm1wX2FwaS4zLmRlZiA+IHNubXBfYXBpLjMKLQogc25tcF9zZXNzX2FwaS4zOiAkKHNyY2Rpcikvc25tcF9zZXNzX2FwaS4zLmRlZiAuLi9zZWRzY3JpcHQKIAkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3NubXBfc2Vzc19hcGkuMy5kZWYgPiBzbm1wX3Nlc3NfYXBpLjMKIApAQCAtMjc0LDExICsyOTMsMTEgQEAKICMKIGh0bWw6ICQoTUFOQUxMKQogCWZvciBpIGluICQoTUFOQUxMKTsgZG8gXAotCSAgIGlmIHRlc3QgYHdjIC1sICQkaSB8IGF3ayAne3ByaW50ICQkMX0nYCAhPSAxIDsgdGhlbiBcCisjCSAgIGlmIHRlc3QgYHdjIC1sICQkaSB8IGF3ayAne3ByaW50ICQkMX0nYCAhPSAxIDsgdGhlbiBcCiAJCSAgIGJhc2U9YGVjaG8gJCRpIHwgc2VkICdzLy5bMC05XSQkLy87J2AgOyBcCiAJCSAgIGVjaG8gIjxIVE1MPjxCT0RZIGJnY29sb3I9XCIjZmZmZmZmXCIgYmFja2dyb3VuZD1cIi4uL3VjZC1zbm1wLWJnMy5naWZcIj48UFJFPiIgPiAkJGJhc2UuaHRtbDsgXAogCQkgICBtYW4yaHRtbCAtciAuLyQkaSB8ICQoUEVSTCkgLXAgLWUgJ3MvSFJFRj1cIi4uXC9tYW4uXC8vSFJFRj1cIi9nO3MvXC5bMS05XVwuaHRtbC8uaHRtbC9nOycgfCBncmVwIC12ICdDb250ZW50LXR5cGU6JyA+PiAkJGJhc2UuaHRtbDsgXAogCQkgICBhPSIkJGEgJCRpIjsgXAotCSAgIGZpIDsgXAorIwkgICBmaSA7IFwKIAlkb25lIDtcCiAJJChQRVJMKSBtYWtlX2luZGV4LnBsIG1hbl9zZWN0aW9ucy50eHQgJCRhID4gaW5kZXguaHRtbApkaWZmIC0tZ2l0IGEvbWFuL2NvbmZpZ19hcGkuMy5kZWYgYi9tYW4vY29uZmlnX2FwaS4zLmRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTA3ZTZlCi0tLSAvZGV2L251bGwKKysrIGIvbWFuL2NvbmZpZ19hcGkuMy5kZWYKQEAgLTAsMCArMSwzMzMgQEAKKy5USCBDT05GSUdfQVBJIDMgIjIxIEFwciAyMDA5IiAiIiAiTmV0LVNOTVAiCisuU0ggTkFNRQorcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIsIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyCit1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyLCByZWdpc3Rlcl9taWJfaGFuZGxlcnMsIHJlYWRfY29uZmlncywKK3JlYWRfcHJlbWliX2NvbmZpZ3MsIGNvbmZpZ19wZXJyb3IsIGNvbmZpZ19wd2FybiAtIGNvbmZpZ19hcGkgZnVuY3Rpb25zCisuU0ggU1lOT1BTSVMKKy5CICNpbmNsdWRlIDxuZXQtc25tcC9jb25maWdfYXBpLmg+CisuUFAKKy5CIHN0cnVjdCBjb25maWdfbGluZSAqCisuYnIKKy5CSSAiICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICoiIGZpbGVQcmVmaXggIiwKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoiIHRva2VuICwKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiBwYXJzZXIgIikoY29uc3QgY2hhciAqLCBjaGFyICopLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiByZWxlYXNlciAiKSh2b2lkKSwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqInVzYWdlTGluZSAiKTsiCisuUFAKKy5CIHN0cnVjdCBjb25maWdfbGluZSAqCisuYnIKKy5CSSAiICByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcihjb25zdCBjaGFyICoiIGZpbGVQcmVmaXggIiwgCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIiB0b2tlbiAsCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcGFyc2VyICIpKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcmVsZWFzZXIgIikodm9pZCksIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdXNhZ2VMaW5lICIpOyIKKy5QUAorLkIgInZvaWQgcmVnaXN0ZXJfbWliX2hhbmRsZXJzKHZvaWQpOyIKKy5QUAorLkJJICJ2b2lkIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqIiBmaWxlUHJlZml4ICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdG9rZW4gIik7IgorLmJyCisuUFAKKy5CSSAidm9pZCB1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnModm9pZCk7IgorLmJyCisuU1MgQXBwbGljYXRpb24gSGFuZGxlcnMKKy5QUAorLkIgc3RydWN0IGNvbmZpZ19saW5lICoKKy5icgorLkJJICIgIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICoiIHRva2VuICwKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiBwYXJzZXIgIikoY29uc3QgY2hhciAqLCBjaGFyICopLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiByZWxlYXNlciAiKSh2b2lkKSwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqInVzYWdlTGluZSAiKTsiCisuUFAKKy5CIHN0cnVjdCBjb25maWdfbGluZSAqCisuYnIKKy5CSSAiICByZWdpc3Rlcl9hcHBfcHJlbWliX2hhbmRsZXIoY29uc3QgY2hhciAqIiB0b2tlbiAsCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcGFyc2VyICIpKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcmVsZWFzZXIgIikodm9pZCksIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdXNhZ2VMaW5lICIpOyIKKy5QUAorLkJJICJ2b2lkIHVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiIgdG9rZW4gIik7IgorLmJyCisuU1MgUmVhZGluZyBDb25maWd1cmF0aW9uIEZpbGVzCisuUFAKKy5CICJ2b2lkIHJlYWRfcHJlbWliX2NvbmZpZ3Modm9pZCk7IgorLmJyCisuQiAidm9pZCByZWFkX2NvbmZpZ3Modm9pZCk7IgorLmJyCisuU1MgSGVscCBTdHJpbmdzIGFuZCBFcnJvcnMKKy5QUAorLkJJICJ2b2lkIHJlYWRfY29uZmlnX3ByaW50X3VzYWdlKGNoYXIgKiIgbGVhZCAiKTsiCisuYnIKKy5CSSAidm9pZCBjb25maWdfcHdhcm4oY29uc3QgY2hhciAqIiBzdHJpbmcgIik7IgorLmJyCisuQkkgInZvaWQgY29uZmlnX3BlcnJvcihjb25zdCBjaGFyICoiIHN0cmluZyAiKTsiCisKKy5TSCBERVNDUklQVElPTgorVGhlIGZ1bmN0aW9ucyBhcmUgYSBmYWlybHkgZXh0ZW5zaWJsZSBzeXN0ZW0gb2YgcGFyc2luZyB2YXJpb3VzCitjb25maWd1cmF0aW9uIGZpbGVzIGF0IHRoZSBydW4gdGltZSBvZiBhbiBhcHBsaWNhdGlvbi4gIFRoZQorY29uZmlndXJhdGlvbiBmaWxlIGZsb3cgaXMgYnJva2VuIGludG8gdGhlIGZvbGxvd2luZyBwaGFzZXM6CisuUlMgNAorLlRQIDQKKzEuCitSZWdpc3RyYXRpb24gb2YgaGFuZGxlcnMuCisuVFAKKzIuCitSZWFkaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBwcmUtTUlCIHBhcnNpbmcgcmVxdWlyZW1lbnRzLgorLlRQCiszLgorUmVhZGluZyBhbmQgcGFyc2luZyBvZiB0aGUgdGV4dHVhbCBNSUIgZmlsZXMuCisuVFAKKzQuCitSZWFkaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMuCisuVFAKKzUuCitPcHRpb25hbGx5IHJlLXJlYWRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXQgYSBmdXR1cmUgZGF0ZS4KKy5SRQorLlBQCitUaGUgaWRlYSBpcyB0aGF0IHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uIGlzIGFibGUgdG8gcmVnaXN0ZXIKKy5JIGhhbmRsZXJzCitmb3IgY2VydGFpbgorLkkgdG9rZW5zCitzcGVjaWZpZWQgaW4gY2VydGFpbiBuYW1lZAorLkkgImNvbmZpZ3VyYXRpb24gZmlsZXMuIgorVGhlIAorLkIgcmVhZF9jb25maWdzKCkKK2Z1bmN0aW9uIGNhbiB0aGVuIGJlIGNhbGxlZCB0byBsb29rIGZvciBhbGwgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcywKK21hdGNoIHRoZSBmaXJzdCB3b3JkIG9uIGVhY2ggbGluZSBhZ2FpbnN0IHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgdG9rZW5zCithbmQgcGFzcyB0aGUgcmVtYWluZGVyIG9mIHRoZSBsaW5lIHRvIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlcmVkIGhhbmRsZXIuCisuU0ggUkVHSVNURVJJTkcgQSBIQU5ETEVSCisuVFAKKy5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKK1JlZ2lzdGVycyBhIGNvbmZpZ3VyYXRpb24gaGFuZGxlciByb3V0aW5lLCB3aGljaCBzaG91bGQgYmUgY2FsbGVkCit0byBwcm9jZXNzIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcyBzdGFydGluZyB3aXRoIHRoZSBzcGVjaWZpZWQgdG9rZW4uCitGb3IgZXhhbXBsZToKKy5QUAorLlJTCisuUlMKK3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wIiwgImV4YW1wbGVUb2tlbiIsIGV4YW1wbGVfaGFuZGxlciwgTlVMTCwgIkFSRzEgW0FSRzJdIik7CisuUkUKKy5SRQorLklQCit3b3VsZCByZWdpc3RlciB0aGUKKy5CIGV4YW1wbGVfaGFuZGxlcigpCitmdW5jdGlvbiBzbyB0aGF0IGl0IHdpbGwgZ2V0IGNhbGxlZCBldmVyeSB0aW1lIHRoZSBmaXJzdCB3b3JkIG9mIGEKK2xpbmUgaW4gdGhlIAorLkkgc25tcC5jb25mCitjb25maWd1cmF0aW9uIGZpbGUocykgbWF0Y2hlcyAiZXhhbXBsZVRva2VuIi4KKy5icgorQ2FsbGluZyB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlcnMgdG8gcHJvY2VzcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGRpcmVjdGl2ZXMKK2lzIHRoZSByZXNwb25zaWJpbGl0eSBvZiAKKy5CIHJlYWRfY29uZmlncygpIAorKHNlZSBiZWxvdykuCisuVFAKKy5CIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyKCkKK1NpbWlsYXIgdG8gdGhlCisuQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCitmdW5jdGlvbiwgYnV0IHRoZSByZWdpc3RlcmVkIGhhbmRsZXIgcm91dGluZSB3aWxsIGJlIGNhbGxlZAorXGZJYmVmb3JlXGZQIHRoZSB0ZXh0dWFsIE1JQnMgYXJlIHJlYWQgaW4uCitUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciB0b2tlbnMgdGhhdCB3aWxsIGFmZmVjdCB0aGUgY29uZmlndXJhdGlvbiBvZgordGhlIE1JQiBwYXJzZXIsIGFuZCB3aWxsIG5vcm1hbGx5IG9ubHkgYmUgdXNlZCB3aXRoaW4gdGhlIFNOTVAgbGlicmFyeSBpdHNlbGYuCisuVFAKKy5CIHJlZ2lzdGVyX21pYl9oYW5kbGVycygpCitJbml0aWFsaXNhdGlvbiByb3V0aW5lIHRvIHJlZ2lzdGVyIHRoZSBpbnRlcm5hbCBTTk1QIGxpYnJhcnkgY29uZmlndXJhdGlvbiBoYW5kbGVycy4KKy5UUAorLkIgdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCitSZW1vdmVzIHRoZSByZWdpc3RlcmVkIGNvbmZpZ3VyYXRpb24gaGFuZGxlciBmb3IgdGhlIHNwZWNpZmllZAorLkkgZmlsZVByZWZpeAorYW5kCisuSVIgdG9rZW4gLgorLlRQCisuQiB1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnMoKQorUmVtb3ZlcyBhbGwgcmVnaXN0ZXJlZCBjb25maWd1cmF0aW9uIGhhbmRsZXJzLgorCisuU1MgVG9rZW4gSGFuZGxlcnMKKy5QUAorSGFuZGxlciBmdW5jdGlvbnMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBzaWduYXR1cmU6CisuUFAKKy5SUworLkJJICJ2b2lkIGhhbmRsZXIoY29uc3QgY2hhciAqIiB0b2tlbiAiLCBjaGFyICoiIGxpbmUgIik7IgorLlJFCisuUFAKK1RoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBiZWluZyB0aGUKK3Rva2VuIHRoYXQgdHJpZ2dlcmVkIHRoZSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gKGkuZS4gdGhlIHRva2VuIHVzZWQKK3doZW4gcmVnaXN0ZXJpbmcgdGhlIGhhbmRsZXIpLCBhbmQgdGhlIHNlY29uZAorYmVpbmcgdGhlIHJlbWFpbmRlciBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGxpbmUgKGkuZS4gZXZlcnl0aGluZworZm9sbG93aW5nIHRoZSB3aGl0ZSBzcGFjZSBmb2xsb3dpbmcgdGhlIG1hdGNoZWQgdG9rZW4pLgorCisuU1MgRnJlZWluZyBIYW5kbGVycworLlBQCitJZiB0aGUgdG9rZW4gaGFuZGxlciBmdW5jdGlvbiBkeW5hbWljYWxseSBhbGxvY2F0ZXMgcmVzb3VyY2VzIHdoZW4KK3Byb2Nlc3NpbmcgYSBjb25maWd1cmF0aW9uIGVudHJ5LCB0aGVuIHRoZXNlIG1heSBuZWVkIHRvIGJlIHJlbGVhc2VkCitiZWZvcmUgcmUtcmVhZGluZyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4KK0lmIHRoZSBmb3VydGggcGFyYW1ldGVyICgKKy5JIHJlbGVhc2VyCispIHBhc3NlZCB0bworLkIgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIKK2lzIG5vbi1OVUxMLCB0aGVuIHRoaXMgc3BlY2lmaWVzIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJlZm9yZQorcmUtcmVhZGluZyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGZyZWUgYW55CityZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IHRoZSB0b2tlbiBoYW5kbGVyIGZ1bmN0aW9uIGFuZCByZXNldCBpdHMgbm90aW9uCitvZiB0aGUgY29uZmlndXJhdGlvbiB0byBpdHMgZGVmYXVsdC4gIFRoZSB0b2tlbiBoYW5kbGVyIGZ1bmN0aW9uIGNhbgordGhlbiBzYWZlbHkgYmUgY2FsbGVkIGFnYWluLgorTm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHJlc291cmNlIGZyZWVpbmcgaGFuZGxlci4KKy5icgorTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCB3aGVuIHRoZSBoYW5kbGVyIGlzCit1bnJlZ2lzdGVyZWQgaW5kaXZpZHVhbGx5IChidXQgXGZJaXNcZlAgY2FsbGVkIGFzIHBhcnQgb2YKKy5CIHVucmVnaXN0ZXJfYWxsX2NvbmZpZ19oYW5kbGVycygpCispLgorCisuU1MgQXBwbGljYXRpb24gSGFuZGxlcnMKKy5UUAorLkIgcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKCkKKy5UUAorLkIgcmVnaXN0ZXJfYXBwX3ByZW1pYl9oYW5kbGVyKCkKKy5UUAorLkIgdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoKQorVGhlc2UgZnVuY3Rpb25zIGFyZSBhbmFsYWdvdXMgdG8gCisuQlIgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoKSAiLCAiIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyKCkgIiBhbmQgIgorLkIgdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCitidXQgZG8gbm90IHJlcXVpcmUgdGhlIGZpbGUgdHlwZSBhcmd1bWVudCAod2hpY2ggaXMgZmlsbGVkIGluIGJ5IHRoZQorYXBwbGljYXRpb24pLiAgSXQgaXMgaW50ZW5kZWQgdGhhdCBNSUIgbW9kdWxlcyB3cml0dGVuIGZvciB0aGUgYWdlbnQKK3VzZSB0aGVzZSBmdW5jdGlvbnMgdG8gYWxsb3cgdGhlIGFnZW50IHRvIGhhdmUgbW9yZSBjb250cm9sIG92ZXIgd2hpY2gKK2NvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHJlYWQgKHR5cGljYWxseSB0aGUKKy5JIHNubXBkLmNvbmYKK2ZpbGVzKS4KKy5TSCBSRUFESU5HIENPTkZJR1VSQVRJT04gRklMRVMKKy5UUAorLkIgcmVhZF9wcmVtaWJfY29uZmlncygpCisuVFAKKy5CIHJlYWRfY29uZmlncygpCitUaGVzZSByb3V0aW5lcyBwcm9jZXNzIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvdW5kIGluIHRoZQorY29uZmlndXJhdGlvbiBzZWFyY2ggcGF0aCAoc2VlIGJlbG93KS4gIEZvciBlYWNoIGVudHJ5LCB0aGUKK2hhbmRsZXIgcmVnaXN0ZXJlZCBmb3IgdGhhdCBjb25maWd1cmF0aW9uIHRva2VuIGlzIGNhbGxlZC4KKy5QUAorLkIgcmVhZF9wcmVtaWJfY29uZmlncygpCitpcyBydW4gYmVmb3JlIHRoZSBNSUIgZmlsZXMgYXJlIHJlYWQgaW4sIGFuZCBwcm9jZXNzZXMgdGhvc2UKK2NvbmZpZ3VyYXRpb24gdG9rZW5zIHJlZ2lzdGVyZWQgdXNpbmcKKy5CIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyKCkKKyhvcgorLkIgcmVnaXN0ZXJfYXBwX3ByZW1pYl9oYW5kbGVyKCkKKykuCitBbGwgb3RoZXIgZW50cmllcyBhcmUgaWdub3JlZC4KKy5QUAorLkIgcmVhZF9jb25maWdzKCkKK2lzIHJ1biBhZnRlciB0aGUgTUlCIGZpbGVzIGhhdmUgYmVlbiByZWFkIGluLCBhbmQgcHJvY2Vzc2VzIHRob3NlCitjb25maWd1cmF0aW9uIHRva2VucyByZWdpc3RlcmVkIHVzaW5nCisuQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCisob3IKKy5CIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigpCispLgorSWYgaXQgZW5jb3VudGVycyBhIGNvbmZpZ3VyYXRpb24gdG9rZW4gZm9yIHdoaWNoIG5vIGhhbmRsZXIgaGFzCitiZWVuIHJlZ2lzdGVyZWQgKGVpdGhlciBwcmUtIG9yIHBvc3QtbWliKSwgdGhlbiBpdCB3aWxsIGRpc3BsYXkKK2Egd2FybmluZyBtZXNzYWdlLCBhbmQgY29udGludWUgcHJvY2Vzc2luZyB3aXRoIHRoZSBuZXh0IGxpbmUKK29mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCisuU1MgQ29uZmlndXJhdGlvbiBTZWFyY2ggUGF0aAorLlBQCitUaGUgY29uZmlndXJhdGlvbiBmaWxlcyB0byBiZSByZWFkIGFyZSBmb3VuZCBieSBzZWFyY2hpbmcgYSBsaXN0CitvZiBjb25maWd1cmF0aW9uIGRpcmVjdG9yaWVzIGZvciBhcHByb3ByaWF0ZWx5IG5hbWVkIGZpbGVzLgorSW4gZWFjaCBzdWNoIGRpcmVjdG9yeSwgdGhlIGxpYnJhcnkgd2lsbCBsb29rIGZvciBmaWxlcyBuYW1lZAorXGZDIHNubXAuY29uZlxmUCwKK1xmQyBzbm1wLmxvY2FsLmNvbmZcZlAsCitcZklhcHBcZlAuY29uZlxmUCwKK1xmSWFwcFxmUC5sb2NhbC5jb25mXGZQLAorKHdoZXJlIFxmSWFwcFxmUCBpcyB0aGUgYXBwaWNhdGlvbi1zcGVjaWZpYyBmaWxlUHJlZml4IHVzZWQgdG8KK3JlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gaGFuZGxlcnMpLgorSXQgaXMgbm90IG5lY2Vzc2FyeSBmb3IgYW55IG9yIGFsbCBvZiB0aGVzZSBmaWxlcyB0byBiZSBwcmVzZW50CitpbiBlYWNoIGRpcmVjdG9yeS4gIE1pc3NpbmcgZmlsZXMgd2lsbCBiZSBzaWxlbnRseSBza2lwcGVkLgorLmJyCitUaGUgaWRlYSBiZWhpbmQgdGhlIHR3byBkaWZmZXJlbnQgc3VmZml4ZXMgaXMgdGhhdCB0aGUgZmlyc3QgZmlsZSBjYW4KK2JlIHNoYXJlZCAodmlhIHJkaXN0IG9yIGFuIE5GUyBtb3VudCkgYWNyb3NzIGEgbGFyZ2UgbnVtYmVyIG9mCittYWNoaW5lcyBhbmQgdGhlIHNlY29uZCBmaWxlIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSBsb2NhbCBzZXR0aW5ncworZm9yIG9uZSBwYXJ0aWN1bGFyIG1hY2hpbmUuCisuUFAKK1RoZSBkZWZhdWx0IGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGlzCitTWVNDT05GRElSL3NubXAsIGZvbGxvd2VkIGJ5IERBVEFESVIvc25tcCwgZm9sbG93ZWQgYnkgTElCRElSL3NubXAsCitmb2xsb3dlZCBieSAkSE9NRS8uc25tcC4KK1RoaXMgbGlzdCBjYW4gYmUgY2hhbmdlZCBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlCisuSSBTTk1QQ09ORlBBVEgKK3RvIGJlIGEgKGNvbG9uIHNlcGFyYXRlZCkgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2guCisuYnIKKy5TUyBpbml0X3NubXAoKQorLlBQCitUaGUgbm9ybWFsIG1vZGUgb2Ygb3BlcmF0aW9uIHdvdWxkIGJlIHRvIHJlZ2lzdGVyIHRoZSBhcHBsaWNhdGlvbi1zcGVjaWZpYworY29uZmlndXJhdGlvbiBoYW5kbGVycywgYW5kIHRoZW4gaW52b2tlCisuQlIgaW5pdF9zbm1wKCkgIi4iCitUaGlzIHdvdWxkIGNhbGwgdGhlIHJvdXRpbmVzIGxpc3RlZCBhYm92ZSB0byByZWdpc3RlciB0aGUgaW50ZXJuYWwgbGlicmFyeQorY29uZmlndXJhdGlvbiBoYW5kbGVycywgcHJvY2VzcyBhbnkgY29uZmlndXJhdGlvbiB0b2tlbnMgcmVnaXN0ZXJlZCB3aXRoCisuQiByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcigpLAorcmVhZCBpbiB0aGUgdGV4dHVhbCBNSUIgZmlsZXMgdXNpbmcKKy5CIGluaXRfbWliKCksCithbmQgZmluYWxseSBwYXJzZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHRva2VucyByZWdpc3RlcmVkIHdpdGggCisuQlIgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoKSAuCisuUFAKK0lmIHRoZSAKKy5CIGluaXRfc25tcCgpCitmdW5jdGlvbiBpcyB1c2VkLCBub25lIG9mIHRoZXNlIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIGV4cGxpY2l0bHkKK2NhbGxlZCBieSB0aGUgYXBwbGljYXRpb24uCisuU0ggSEVMUCBTVFJJTkdTIEFORCBFUlJPUlMKKy5QUAorVGhlCisuSSB1c2FnZUxpbmUKK3BhcmFtZXRlciBwYXNzZWQgdG8KKy5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKK2FuZCBzaW1pbGFyIGNhbGxzLCBpcyB1c2VkIHRvIGRpc3BsYXkgaGVscCBpbmZvcm1hdGlvbiB3aGVuIHRoZQorLkIgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoKQorZnVuY3Rpb24gaXMgY2FsbGVkLiAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGFsbCBvZiB0aGUgYXBwbGljYXRpb25zCit3aGVuIHRoZSAKKy5CIC1ICitmbGFnIGlzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lLiAgSXQgcHJpbnRzIGEgc3VtbWFyeSBvZiBhbGwgb2YgdGhlCitjb25maWd1cmF0aW9uIGZpbGUgbGluZXMsIGFuZCB0aGUgYXNzb2NpYXRlZCBmaWxlcywgdGhhdCB0aGUKK2NvbmZpZ3VyYXRpb24gc3lzdGVtIHVuZGVyc3RhbmRzLiAgVGhlCisuSSB1c2FnZUxpbmUKK3BhcmFtZXRlciBzaG91bGQgYmUgYSBsaXN0IG9mIGFyZ3VtZW50cyBleHBlY3RlZCBhZnRlciB0aGUgdG9rZW4sIGFuZAorbm90IGEgbGVuZ3RoeSBkZXNjcmlwdGlvbiAod2hpY2ggc2hvdWxkIGdvIGludG8gYSBtYW51YWwgcGFnZQoraW5zdGVhZCkuICBUaGUKKy5JIGxlYWQKK3ByZWZpeCB3aWxsIGJlIHByZXBlbmRlZCB0byBlYWNoIGxpbmUgdGhhdCB0aGUgZnVuY3Rpb24gcHJpbnRzIHRvCitzdGRlcnIsIHdoZXJlIGl0IGRpc3BsYXlzIGl0cyBvdXRwdXQuCisuUFAKK1RoZQorLkIgaW5pdF9zbm1wKCkKK2Z1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHRoZQorLkIgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoKQorZnVuY3Rpb24gaXMgY2FsbGVkLCBzbyB0aGF0IHRoZSBsaWJyYXJ5IGNhbiByZWdpc3RlciBpdHMgY29uZmlndXJhdGlvbiAKK2ZpbGUgZGlyZWN0aXZlcyBhcyB3ZWxsIGZvciB0aGUgCisuQiByZWFkX2NvbmZpZ19wcmludF91c2FnZSgpCitmdW5jdGlvbiB0byBkaXNwbGF5LgorLlNTIEVycm9yIEhhbmRsaW5nIEZ1bmN0aW9ucworLlBQCitUaGUgdHdvIGZ1bmN0aW9ucworLkIgY29uZmlnX3B3YXJuKCkKK2FuZAorLkIgY29uZmlnX3BlcnJvcigpCitib3RoIHRha2UgYW4gZXJyb3Igc3RyaW5nIGFzIGFuIGFyZ3VtZW50IGFuZCBwcmludCBpdCB0byBzdGRlcnIgYWxvbmcKK3dpdGggdGhlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIHRoYXQgY2F1c2VkIHRoZSBlcnJvci4gIEEgY2FsbCB0byB0aGUKK3NlY29uZCBmdW5jdGlvbiB3aWxsIGFsc28gZm9yY2UgCisuQiByZWFkX2NvbmZpZ3MoKSAKK3RvIGV2ZW50dWFsbHkgcmV0dXJuIHdpdGggYW4gZXJyb3IgY29kZSBpbmRpY2F0aW5nIHRvIGl0J3MgY2FsbGluZworZnVuY3Rpb24gdGhhdCBpdCBzaG91bGQgYWJvcnQgdGhlIG9wZXJhdGlvbiBvZiB0aGUgYXBwbGljYXRpb24uCisuU0ggIkVOVklST05NRU5UIFZBUklBQkxFUyIKKy5UUCAxMAorU05NUENPTkZQQVRICitBIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgY29uZmlndXJhdGlvbgorZmlsZXMgaW4uCitEZWZhdWx0OiBTWVNDT05GRElSL3NubXA6REFUQURJUi9zbm1wOkxJQkRJUi9zbm1wOiRIT01FLy5zbm1wCisuU0ggIlNFRSBBTFNPIgorLkJSIG1pYl9hcGkgIigzKSwgIiBzbm1wX2FwaSAoMykKKy5cIiBMb2NhbCBWYXJpYWJsZXM6CisuXCIgIG1vZGU6IG5yb2ZmCisuXCIgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL21ha2VfaW5kZXgucGwgYi9tYW4vbWFrZV9pbmRleC5wbAppbmRleCA3YWIxZGQyLi4zNzU2NmJhIDEwMDY0NAotLS0gYS9tYW4vbWFrZV9pbmRleC5wbAorKysgYi9tYW4vbWFrZV9pbmRleC5wbApAQCAtMjUsNiArMjUsNyBAQAogCWNob21wKCRuYW1lKTsKIAlpZiAoIWV4aXN0cygkcGFnZXN7JG5hbWV9KSkgewogCSAgICBwcmludCBTVERFUlIgIiRuYW1lIGlzIGluICRpbmZpbGUsIGJ1dCBub3QgaW4gdGhlIHJlc3Qgb2YgdGhlIGFyZ3MuXG4iOworCSAgICBwcmludCBTVERFUlIgIk1ha2Ugc3VyZSBpdCdzIG5vdCBsaXN0ZWQgdHdpY2UgaW4gJGluZmlsZSFcbiI7CiAJfQogCW9wZW4oSCwiJG5hbWUuaHRtbCIpOwogCXdoaWxlICg8SD4pIHsKZGlmZiAtLWdpdCBhL21hbi9tYW5fc2VjdGlvbnMudHh0IGIvbWFuL21hbl9zZWN0aW9ucy50eHQKaW5kZXggYjgxOGIwZC4uZmNjZThmOSAxMDA2NDQKLS0tIGEvbWFuL21hbl9zZWN0aW9ucy50eHQKKysrIGIvbWFuL21hbl9zZWN0aW9ucy50eHQKQEAgLTEsNCArMSw1IEBACiAjIFNOTVAgYmFzaWMgYXBwbGljYXRpb25zCitlbmNvZGVfa2V5Y2hhbmdlCiBzbm1wY21kCiBzbm1wdHJhbnNsYXRlCiBzbm1wZ2V0CkBAIC04LDYgKzksNyBAQAogc25tcGJ1bGt3YWxrCiBzbm1wc2V0CiBzbm1wdGVzdAordGttaWIKICMgU05NUCAic2Vjb25kLWxldmVsIiBhcHBsaWNhdGlvbnMKIHNubXB0YWJsZQogc25tcGRlbHRhCkBAIC0xNywxOCArMTksMjUgQEAKIHNubXBuZXRzdGF0CiBzbm1wZGYKICMgTm90aWZpY2F0aW9uIG1hbnVhbCBwYWdlcworc25tcGluZm9ybQogc25tcHRyYXAKIHNubXB0cmFwZAogc25tcHRyYXBkLmNvbmYKK3RyYXB0b2VtYWlsCiAjIFNOTVAgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbiBtYW51YWwgcGFnZXMKK25ldC1zbm1wLWNvbmZpZwogc25tcGNvbmYKIHNubXBfY29uZmlnCiBzbm1wLmNvbmYKICMgQWdlbnQgbWFudWFsIHBhZ2VzCitmaXhwcm9jCiBzbm1wZAogc25tcGQuY29uZgorc25tcGQuZXhhbXBsZXMKK3NubXBkLmludGVybmFsCiBtaWIyYwogbWliMmMuY29uZgorbWliMmMtdXBkYXRlCiAjIFNOTVAgYmFzZSBsaWJyYXJ5IEFQSXMKIG5ldHNubXBfbGlicmFyeQogcmVhZF9jb25maWcKQEAgLTQxLDMzICs1MCwxMDkgQEAKIG5ldHNubXBfbWliX3V0aWxpdGllcwogbmV0c25tcF9kZWJ1ZwogIyBBZ2VudCBBUEkgbWFudWFscworYWRkX21pYmRpcgorYWRkX21vZHVsZV9yZXBsYWNlbWVudAorY29uZmlnX3BlcnJvcgorY29uZmlnX3B3YXJuCitmcHJpbnRfZGVzY3JpcHRpb24KK2ZwcmludF9vYmppZAorZnByaW50X3ZhbHVlCitmcHJpbnRfdmFyaWFibGUKK2dldF9tb2R1bGVfbm9kZQoraW5pdF9taWIKK2luaXRfbWliX2ludGVybmFscwogbmV0c25tcF9hZ2VudAotc25tcF9hZ2VudF9hcGkKLXNubXBfdHJhcF9hcGkKLW5ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcwotbmV0c25tcF91dGlsaXRpZXMKLW5ldHNubXBfaGFuZGxlcgotbmV0c25tcF9zY2FsYXIKIG5ldHNubXBfYmFieV9zdGVwcwogbmV0c25tcF9idWxrX3RvX25leHQKLW5ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwCi1uZXRzbm1wX2V4YW1wbGVfc2NhbGFyX2ludAotbmV0c25tcF90YWJsZV9kYXRhc2V0Ci1uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcwotbmV0c25tcF9vbGRfYXBpCi1uZXRzbm1wX3dhdGNoZXIKLW5ldHNubXBfdGFibGVfYXJyYXkKLW5ldHNubXBfbXVsdGlwbGV4ZXIKLW5ldHNubXBfc2VyaWFsaXplCiBuZXRzbm1wX2NhY2hlX2hhbmRsZXIKLW5ldHNubXBfQ29udGFpbmVyX2l0ZXJhdG9yCi1uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yCi1uZXRzbm1wX3RhYmxlCi1uZXRzbm1wX3RhYmxlX2RhdGEKLW5ldHNubXBfc3Rhc2hfY2FjaGUKLW5ldHNubXBfcm93X21lcmdlCi1uZXRzbm1wX3JlYWRfb25seQotbmV0c25tcF9sZWFmCi1uZXRzbm1wX2luc3RhbmNlCiBuZXRzbm1wX2NvbnRhaW5lcgorbmV0c25tcF9Db250YWluZXJfaXRlcmF0b3IKK25ldHNubXBfZHNfZ2V0X2Jvb2xlYW4KK25ldHNubXBfZHNfZ2V0X2ludAorbmV0c25tcF9kc19nZXRfc3RyaW5nCituZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZworbmV0c25tcF9kc19yZWdpc3Rlcl9wcmVtaWIKK25ldHNubXBfZHNfc2V0X2Jvb2xlYW4KK25ldHNubXBfZHNfc2V0X2ludAorbmV0c25tcF9kc19zZXRfc3RyaW5nCituZXRzbm1wX2RzX3NodXRkb3duCituZXRzbm1wX2V4YW1wbGVfc2NhbGFyX2ludAorbmV0c25tcF9oYW5kbGVyCituZXRzbm1wX2luc3RhbmNlCituZXRzbm1wX2l0ZXJhdG9yX2luZm9fcworbmV0c25tcF9sZWFmCituZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMKIG5ldHNubXBfbW9kZV9lbmRfY2FsbAorbmV0c25tcF9tdWx0aXBsZXhlcgorbmV0c25tcF9vbGRfYXBpCituZXRzbm1wX3JlYWRfb25seQorbmV0c25tcF9yb3dfbWVyZ2UKK25ldHNubXBfc2NhbGFyCituZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cAorbmV0c25tcF9zZXJpYWxpemUKK25ldHNubXBfc3Rhc2hfY2FjaGUKK25ldHNubXBfdGFibGUKK25ldHNubXBfdGFibGVfYXJyYXkKK25ldHNubXBfdGFibGVfZGF0YQorbmV0c25tcF90YWJsZV9kYXRhc2V0CituZXRzbm1wX3RhYmxlX2l0ZXJhdG9yCituZXRzbm1wX3V0aWxpdGllcworbmV0c25tcF93YXRjaGVyCitwcmludF9kZXNjcmlwdGlvbgorcHJpbnRfbWliCitwcmludF9vYmppZAorcHJpbnRfdmFsdWUKK3ByaW50X3ZhcmlhYmxlCityZWFkX2FsbF9taWJzCityZWFkX2NvbmZpZ19wcmludF91c2FnZQorcmVhZF9jb25maWdzCityZWFkX21pYgorcmVhZF9tb2R1bGUKK3JlYWRfbW9kdWxlX25vZGUKK3JlYWRfb2JqaWQKK3JlYWRfcHJlbWliX2NvbmZpZ3MKK3JlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcgorcmVnaXN0ZXJfYXBwX3ByZW1pYl9oYW5kbGVyCityZWdpc3Rlcl9jb25maWdfaGFuZGxlcgorcmVnaXN0ZXJfbWliX2hhbmRsZXJzCityZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcgorc2VuZF9lYXN5X3RyYXAKK3NlbmRfdHJhcF92YXJzCitzZW5kX3YydHJhcAorc2h1dGRvd25fbWliCitzbm1wX2FnZW50X2FwaQorc25tcF9hbGFybV9yZWdpc3Rlcgorc25tcF9hbGFybV9yZWdpc3Rlcl9ocgorc25tcF9hbGFybV91bnJlZ2lzdGVyCitzbm1wX2FwaV9lcnJzdHJpbmcKK3NubXBfY2xvc2UKK3NubXBfZXJyb3IKK3NubXBfZnJlZV9wZHUKK3NubXBfb3Blbgorc25tcF9wZXJyb3IKK3NubXBfcmVhZAorc25tcF9zZWxlY3RfaW5mbworc25tcF9zZW5kCitzbm1wX3Nlc3NfYXN5bmNfc2VuZAorc25tcF9zZXNzX2Nsb3NlCitzbm1wX3Nlc3NfZXJyb3IKK3NubXBfc2Vzc19pbml0Citzbm1wX3Nlc3Nfb3Blbgorc25tcF9zZXNzX3BlcnJvcgorc25tcF9zZXNzX3JlYWQKK3NubXBfc2Vzc19zZWxlY3RfaW5mbworc25tcF9zZXNzX3NlbmQKK3NubXBfc2Vzc19zZXNzaW9uCitzbm1wX3Nlc3NfdGltZW91dAorc25tcF9zZXRfbWliX3dhcm5pbmdzCitzbm1wX3NldF9zYXZlX2Rlc2NyaXB0aW9ucworc25tcF90aW1lb3V0Citzbm1wX3RyYXBfYXBpCitzbnByaW50X29iamlkCitzbnByaW50X3ZhbHVlCitzbnByaW50X3ZhcmlhYmxlCitzcHJpbnRfcmVhbGxvY19vYmppZAorc3ByaW50X3JlYWxsb2NfdmFsdWUKK3NwcmludF9yZWFsbG9jX3ZhcmlhYmxlCit1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcgordW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21hbi9taWJfYXBpLjMuZGVmIGIvbWFuL21pYl9hcGkuMy5kZWYKaW5kZXggNWI2ZDFiMC4uYjA1ZWQ5NCAxMDA2NDQKLS0tIGEvbWFuL21pYl9hcGkuMy5kZWYKKysrIGIvbWFuL21pYl9hcGkuMy5kZWYKQEAgLTEsMTIwICsxLDE0OSBAQAogLlRIIE1JQl9BUEkgMyAiMjIgQXByIDIwMDkiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQogaW5pdF9taWIsIGFkZF9taWJkaXIsIGluaXRfbWliX2ludGVybmFscywKLWFkZF9tb2R1bGVfcmVwbGFjZW1lbnQsCi1yZWFkX21vZHVsZSwgcmVhZF9taWIsIHJlYWRfYWxsX21pYnMsCi1yZWFkX29iamlkLCByZWFkX21vZHVsZV9ub2RlLCBnZXRfbW9kdWxlX25vZGUsCi1zbm1wX3NldF9taWJfd2FybmluZ3MsIHNubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zLAogc2h1dGRvd25fbWliLAorbmV0c25tcF9yZWFkX21vZHVsZSwgcmVhZF9taWIsIHJlYWRfYWxsX21pYnMsCithZGRfbW9kdWxlX3JlcGxhY2VtZW50LAorcmVhZF9vYmppZCwgc25tcF9wYXJzZV9vaWQsIGdldF9tb2R1bGVfbm9kZSwKK3NubXBfc2V0X21pYl9lcnJvcnMsIHNubXBfc2V0X21pYl93YXJuaW5ncywgc25tcF9zZXRfc2F2ZV9kZXNjcmlwdGlvbnMsCiBwcmludF9taWIsCi1wcmludF92YXJpYWJsZSwgZnByaW50X3ZhcmlhYmxlLCBzbnByaW50X3ZhcmlhYmxlLCBzcHJpbnRfcmVhbGxvY192YXJpYWJsZSwKLXByaW50X3ZhbHVlLCBmcHJpbnRfdmFsdWUsIHNucHJpbnRfdmFsdWUsIHNwcmludF9yZWFsbG9jX3ZhbHVlLAotcHJpbnRfb2JqaWQsIGZwcmludF9vYmppZCwgc25wcmludF9vYmppZCwgc3ByaW50X3JlYWxsb2Nfb2JqaWQsCi1wcmludF9kZXNjcmlwdGlvbiwgZnByaW50X2Rlc2NyaXB0aW9uIC0gbWliX2FwaSBmdW5jdGlvbnMKK3ByaW50X29iamlkLCBmcHJpbnRfb2JqaWQsIHNucHJpbnRfb2JqaWQsCitwcmludF9kZXNjcmlwdGlvbiwgZnByaW50X2Rlc2NyaXB0aW9uLCBzbnByaW50X2Rlc2NyaXB0aW9uIC0gbWliX2FwaSBmdW5jdGlvbnMKIC5TSCBTWU5PUFNJUwogLkIgI2luY2x1ZGUgPG5ldC1zbm1wL21pYl9hcGkuaD4KIC5QUAogLkIgInZvaWQgaW5pdF9taWIodm9pZCk7Ci0uYnIKKy5QUAogLkJJICJpbnQgYWRkX21pYmRpcihjb25zdCBjaGFyICoiICJkaXJuYW1lIiApOwogLmJyCi0uQkkgImludCBhZGRfbW9kdWxlX3JlcGxhY2VtZW50KGNvbnN0IGNoYXIgKiIgIm9sZF9tb2R1bGUiICIsIGNvbnN0IGNoYXIgKiIgIm5ld19tb2R1bGUiICIsIGNvbnN0IGNoYXIgKiIgInRhZyIgIiwgaW50ICIgImxlbiIgKTsKLS5icgogLkIgInZvaWQgaW5pdF9taWJfaW50ZXJuYWxzKHZvaWQpOwotLmJyCi0uQkkgInN0cnVjdCB0cmVlICpyZWFkX21vZHVsZShjb25zdCBjaGFyICoiICJuYW1lIiApOworLlBQCisuQiAidm9pZCBzaHV0ZG93bl9taWIodm9pZCk7CisuU1MgUmVhZGluZyBhbmQgUGFyc2luZyBNSUJzCisuUFAKKy5CSSAic3RydWN0IHRyZWUgKm5ldHNubXBfcmVhZF9tb2R1bGUoY29uc3QgY2hhciAqIiAibmFtZSIgKTsKIC5icgogLkJJICJzdHJ1Y3QgdHJlZSAqcmVhZF9taWIoY29uc3QgY2hhciAqIiAiZmlsZW5hbWUiICk7CiAuYnIKIC5CICJzdHJ1Y3QgdHJlZSAqcmVhZF9hbGxfbWlicyh2b2lkKTsKIC5QUAotLkIgInZvaWQgc2h1dGRvd25fbWliKHZvaWQpOwotLlBQCi0uQkkgInZvaWQgcHJpbnRfbWliKEZJTEUgKiIgImZwIiApOwotLlBQCi0uQkkgImludCByZWFkX29iamlkKGNvbnN0IGNoYXIgKiIgImlucHV0IiAiLCBvaWQgKiIgIm91dHB1dCIgIiwgc2l6ZV90ICoiICJvdXRfbGVuIiApOworLkJJICJpbnQgYWRkX21vZHVsZV9yZXBsYWNlbWVudChjb25zdCBjaGFyICoiICJvbGRfbW9kdWxlIiAiLCIKIC5icgotLkJJICJpbnQgZ2V0X21vZHVsZV9ub2RlKGNvbnN0IGNoYXIgKiIgIm5hbWUiICIsIGNvbnN0IGNoYXIgKiIgIm1vZHVsZSIgIiwgb2lkICoiICJvYmppZCIgIiwgc2l6ZV90ICoiICJvYmppZGxlbiIgKTsKLS5QUAotLkJJICJ2b2lkIHByaW50X3ZhcmlhYmxlKGNvbnN0IG9pZCAqIiAib2JqaWQiICIsIHNpemVfdCAiICJvYmppZGxlbiIgIiwgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiICJ2YXJpYWJsZSIgKTsKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIiAibmV3X21vZHVsZSIgIiwiCiAuYnIKLS5CSSAidm9pZCBmcHJpbnRfdmFyaWFibGUoRklMRSAqIiBmcCAiLCBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICk7Ci0uYnIKLS5CSSAiaW50IHNucHJpbnRfdmFyaWFibGUoY2hhciAqIiAiYnVmIiAiLCBzaXplX3QgIiAibGVuIiAiLCBjb25zdCBvaWQgKiIgIm9iamlkIiAiLCBzaXplX3QgIiAib2JqaWRsZW4iICIsIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiAidmFyaWFibGUiICk7Ci0uYnIKLS5CSSAiaW50IHNwcmludF9yZWFsbG9jX3ZhcmlhYmxlKHVfY2hhciAqKiIgYnVmICIsIHNpemVfdCAqIiBidWZfbGVuICIsIHNpemVfdCAqIiBvdXRfbGVuICIsIGludCAiIGFsbG93X3JlYWxsb2MgIiwgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSApOwotLlBQCi0uQkkgInZvaWQgcHJpbnRfdmFsdWUob2lkICpvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcmlhYmxlKQotLmJyCi0uQkkgInZvaWQgZnByaW50X3ZhbHVlKEZJTEUgKiIgZnAgIiwgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSApOwotLmJyCi0uQkkgImludCBzbnByaW50X3ZhbHVlKGNoYXIgKiIgYnVmICIsIHNpemVfdCAiICJsZW4iICIsIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgKTsKLS5icgotLkJJICJpbnQgc3ByaW50X3JlYWxsb2NfdmFsdWUodV9jaGFyICoqIiBidWYgIiwgc2l6ZV90ICoiIGJ1Zl9sZW4gIiwgc2l6ZV90ICoiIG91dF9sZW4gIiwgaW50ICIgYWxsb3dfcmVhbGxvYyAiLCBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICk7Ci0uUFAKLS5CSSAidm9pZCBwcmludF9vYmppZChjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gKTsKLS5icgotLkJJICJ2b2lkIGZwcmludF9vYmppZChGSUxFICoiIGZwICIsIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiApOwotLmJyCi0uQkkgImludCBzbnByaW50X29iamlkKGNoYXIgKiIgYnVmICIsIHNpemVfdCAiICJsZW4iICIsIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiApOwotLmJyCi0uQkkgImludCBzcHJpbnRfcmVhbGxvY19vYmppZCh1X2NoYXIgKioiIGJ1ZiAiLCBzaXplX3QgKiIgYnVmX2xlbiAiLCBzaXplX3QgKiIgb3V0X2xlbiAiLCBpbnQgImFsbG93X3JlYWxsb2MgIiwgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICk7Ci0uUFAKLS5CSSAidm9pZCBwcmludF9kZXNjcmlwdGlvbihvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgaW50ICIgd2lkdGggKTsKLS5icgotLkJJICJ2b2lkIGZwcmludF9kZXNjcmlwdGlvbihGSUxFICoiIGZwICIsIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCBpbnQgIiB3aWR0aCApOworLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoiICJ0YWciICIsIGludCAiICJsZW4iICk7CiAuUFAKIC5CSSAidm9pZCBzbm1wX3NldF9taWJfd2FybmluZ3MoaW50ICIgbGV2ZWwgKTsKIC5icgorLkJJICJ2b2lkIHNubXBfc2V0X21pYl9lcnJvcnMoICBpbnQgIiBsZXZlbCApOworLmJyCiAuQkkgInZvaWQgc25tcF9zZXRfc2F2ZV9kZXNjcmlwdGlvbnMoaW50ICIgc2F2ZSAiKTsiCisuU1MgU2VhcmNoaW5nIHRoZSBNSUIgVHJlZQorLlBQCisuQkkgImludCAgcmVhZF9vYmppZChjb25zdCBjaGFyICoiICJpbnB1dCIgIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgIG9pZCAqIiAib2JqaWQiICIsIHNpemVfdCAqIiAib2JqaWRsZW4iICk7CisuYnIKKy5CSSAib2lkICpzbm1wX3BhcnNlX29pZChjb25zdCBjaGFyICoiICJpbnB1dCIgIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgIG9pZCAqIiAib2JqaWQiICIsIHNpemVfdCAqIiAib2JqaWRsZW4iICk7CisuYnIKKy5CSSAiaW50ICBnZXRfbW9kdWxlX25vZGUoY29uc3QgY2hhciAqIiAibmFtZSIgIiwgY29uc3QgY2hhciAqIiAibW9kdWxlIiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgb2lkICoiICJvYmppZCIgIiwgc2l6ZV90ICoiICJvYmppZGxlbiIgKTsKKy5TUyBPdXRwdXQKKy5QUAorLkJJICJ2b2lkICBwcmludF9taWIoRklMRSAqIiAiZnAiICk7CisuUFAKKy5CSSAidm9pZCAgcHJpbnRfb2JqaWQoY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICk7CisuYnIKKy5CSSAidm9pZCBmcHJpbnRfb2JqaWQoRklMRSAqIiBmcCAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIik7IgorLmJyCisuQkkgImludCBzbnByaW50X29iamlkKGNoYXIgKiIgYnVmICIsIHNpemVfdCAiICJsZW4iICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiKTsiCisuUFAKKy5CSSAidm9pZCAgcHJpbnRfZGVzY3JpcHRpb24oY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIGludCAiIHdpZHRoICk7CisuYnIKKy5CSSAidm9pZCBmcHJpbnRfZGVzY3JpcHRpb24oRklMRSAqIiBmcCAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgaW50ICIgd2lkdGggKTsKKy5icgorLkJJICJpbnQgc25wcmludF9kZXNjcmlwdGlvbihjaGFyICoiIGJ1ZiAiLCBzaXplX3QgIiAibGVuIiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgaW50ICIgd2lkdGggKTsKKy5icgogLlBQCiAuU0ggREVTQ1JJUFRJT04KLVRoZSBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIE1JQiBtb2R1bGVzIGZhbGwgaW50byBmb3VyIGdyb3Vwcy4gIFRob3NlCi1kZWFsaW5nIHdpdGggaW5pdGlhbGlzYXRpb24gYW5kIHNodXRkb3duLCB0aG9zZSB0aGF0IHJlYWQgaW4gYW5kCi1wYXJzZSBNSUIgZmlsZXMsIHRob3NlIHRoYXQgc2VhcmNoIHRoZSBNSUIgdHJlZSwgYW5kIHZhcmlvdXMgb3V0cHV0Ci1yb3V0aW5lcy4KK1RoZSBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIE1JQiBtb2R1bGVzIGZhbGwgaW50byBmb3VyIGdyb3VwcyAtIHRob3NlCitkZWFsaW5nIHdpdGggaW5pdGlhbGlzYXRpb24gYW5kIHNodXRkb3duLCB3aXRoIHJlYWRpbmcgaW4gYW5kIHBhcnNpbmcKK01JQiBmaWxlcywgd2l0aCBzZWFyY2hpbmcgdGhlIE1JQiB0cmVlLCBhbmQgb3V0cHV0IHJvdXRpbmVzLgogLlNTIEluaXRpYWxpc2F0aW9uIGFuZCBTaHV0ZG93bgotLkIgaW5pdF9taWIKLWlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIGFsbCBjYWxscyB0bwotLkJSIGFkZF9taWJkaXIgIiwgIiByZWFkX21vZHVsZSAiIGFuZCAiIHJlYWRfbWliCi1mb3Igc3RhbmRhcmQgYXBwbGljYXRpb25zLiAgSXQgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyCi1yb3V0aW5lIHRoYXQgbWFuaXB1bGF0ZXMgb3IgYWNjZXNzZXMgdGhlIE1JQiB0cmVlLiAgVGhpcyByb3V0aW5lIHNldHMKLXVwIHZhcmlvdXMgaW50ZXJuYWwgc3RydWN0dXJlcywgYXMgd2VsbCBhcyByZWFkaW5nIGluIHRoZSBkZWZhdWx0IE1JQgotbW9kdWxlcywgYXMgZGV0YWlsZWQgYmVsb3cuCiAuUFAKIC5CIGFkZF9taWJkaXIKLWlzIHVzZWQgdG8gZGVmaW5lIHRoZSByYW5nZSBvZiBkaXJlY3RvcnkgbG9jYXRpb25zIHdoaWNoIGFyZSBzZWFyY2hlZAotZm9yIGZpbGVzIGNvbnRhaW5pbmcgTUlCIG1vZHVsZXMgKG9uZSBtb2R1bGUgcGVyIGZpbGUpLiAgQnkgZGVmYXVsdCwKLXRoaXMgd2lsbCBiZSBzZXQgdG8gdGhlIGRpcmVjdG9yeQotLkkgREFUQURJUi9taWJzCi1idXQgdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotLkkgTUlCRElSUwotdG8gYSAoY29sb24tc2VwYXJhdGVkKSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaC4KK2lzIHVzZWQgdG8gYWRkIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IHRvIHRoZSBwYXRoIG9mIGxvY2F0aW9ucyB3aGljaCBhcmUKK3NlYXJjaGVkIGZvciBmaWxlcyBjb250YWluaW5nIE1JQiBtb2R1bGVzLgogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWN0dWFsbHkgbG9hZCB0aGUgTUlCIG1vZHVsZXMgbG9jYXRlZAotaW4gdGhhdCBkaXJlY3RvcnksIGJ1dCBpcyBhbiBpbml0aWFsaXNhdGlvbiBzdGVwIHRvIG1ha2UgdGhlbSBhdmFpbGFibGUuCitpbiB0aGF0IGRpcmVjdG9yeSwgYnV0IGlzIHNpbXBseSBhbiBpbml0aWFsaXNhdGlvbiBzdGVwIHRvIG1ha2UKK3RoZW0gYXZhaWxhYmxlIHRvCisuQlIgbmV0c25tcF9yZWFkX21vZHVsZSAuCiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBjb3VudCBvZiBmaWxlcyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5LCBvciBhIC0xCiBpZiB0aGVyZSBpcyBhbiBlcnJvci4gIAogLlBQCiAuQiBpbml0X21pYl9pbnRlcm5hbHMKIHNldHMgdXAgdGhlIGludGVybmFsIHN0cnVjdHVyZXMsIHByZXBhcmF0b3J5IHRvIHJlYWRpbmcgaW4gTUlCCi1tb2R1bGVzLiAgSXQgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBhbGwgY2FsbHMgdG8KK21vZHVsZXMuICBJdCBzaG91bGQgYmUgY2FsbGVkIFxmSWFmdGVyXGZQIGFsbCBjYWxscyB0bwogLkJSIGFkZF9taWJkaXIgLAotYW5kIGJlZm9yZSBhbmQgY2FsbHMgdG8KLS5CUiByZWFkX21vZHVsZSAuCi1UaGlzIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGlmCithbmQgYmVmb3JlIGFueSBjYWxscyB0bworLkJSIG5ldHNubXBfcmVhZF9tb2R1bGUgLgorLlBQCiAuQiBpbml0X21pYgotaXMgdXNlZC4KK2lzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBjb25maWd1cmVzIHRoZSBNSUIgZGlyZWN0b3J5IHNlYXJjaCBwYXRoICh1c2luZworLkIgYWRkX21pYmRpcgorKSwgc2V0IHVwIHRoZSBpbnRlcm5hbCBNSUIgZnJhbWV3b3JrICh1c2luZworLkIgaW5pdF9taWJfaW50ZXJuYWxzCispLCBhbmQgdGhlbiBsb2FkcyB0aGUgYXBwcm9wcmlhdGUgTUlCIG1vZHVsZXMgKHVzaW5nCisuQlIgbmV0c25tcF9yZWFkX21vZHVsZSAiIGFuZCAiIHJlYWRfbWliICIpLiIKK1NlZSB0aGUgRU5WSVJPTk1FTlRBTCBWQVJJQUJMRVMgc2VjdGlvbiBmb3IgZGV0YWlscy4KKy5icgorSXQgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyCityb3V0aW5lIHRoYXQgbWFuaXB1bGF0ZXMgb3IgYWNjZXNzZXMgdGhlIE1JQiB0cmVlLgogLlBQCiAuQiBzaHV0ZG93bl9taWIKIHdpbGwgY2xlYXIgdGhlIGluZm9ybWF0aW9uIHRoYXQgd2FzIGdhdGhlcmVkIGJ5IAotLkJSIHJlYWRfbW9kdWxlICIsICIgYWRkX21pYmRpciAiIGFuZCAiIGFkZF9tb2R1bGVfcmVwbGFjZW1lbnQgLgorLkJSIG5ldHNubXBfcmVhZF9tb2R1bGUgIiwgIiBhZGRfbWliZGlyICIgYW5kICIgYWRkX21vZHVsZV9yZXBsYWNlbWVudCAuCiBJdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IG9uZSBkb2VzIG5vdCBpbnZva2UKIC5CUiBzaHV0ZG93bl9taWIKIHdoaWxlIHRoZXJlIGFyZSBTTk1QIHNlc3Npb25zIGJlaW5nIGFjdGl2ZWx5IG1hbmFnZWQuCiAuU1MgUmVhZGluZyBhbmQgUGFyc2luZyBNSUJzCisuUFAKKy5CIG5ldHNubXBfcmVhZF9tb2R1bGUKK3Rha2VzIHRoZSBuYW1lIG9mIGEgTUlCIG1vZHVsZSAod2hpY2ggbmVlZCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlCituYW1lIG9mIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSksIGxvY2F0ZXMgdGhpcyB3aXRoaW4gdGhlCitjb25maWd1cmVkIGxpc3Qgb2YgTUlCIGRpcmVjdG9yaWVzLCBhbmQgbG9hZHMgdGhlIGRlZmluaXRpb25zIGZyb20KK3RoZSBtb2R1bGUgaW50byB0aGUgYWN0aXZlIE1JQiB0cmVlLgorSXQgYWxzbyBsb2FkcyBhbnkgTUlCIG1vZHVsZXMgbGlzdGVkIGluIHRoZSBJTVBPUlRTIGNsYXVzZSBvZiB0aGlzIG1vZHVsZS4KKy5QUAorLkIgcmVhZF9taWIKK2lzIHNpbWlsYXIsIGJ1dCB0YWtlcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBNSUIgbW9kdWxlLgorTm90ZSB0aGF0IHRoaXMgZmlsZSBuZWVkIG5vdCBiZSBsb2NhdGVkIHdpdGhpbiB0aGUgTUlCIGRpcmVjdG9yeQorc2VhcmNoIGxpc3QgKGFsdGhvdWdoIGFueSBtb2R1bGVzIGxpc3RlZCBpbiB0aGUgSU1QT1JUUyBjbGF1c2UgZG8pLgorLlBQCisuQiByZWFkX2FsbF9taWJzCit3aWxsIHJlYWQgaW4gYWxsIHRoZSBNSUIgbW9kdWxlcyBmb3VuZCBvbiB0aGUgTUlCIGRpcmVjdG9yeSBzZWFyY2ggbGlzdC4KKy5QUAorSW4gZ2VuZXJhbCB0aGUgcGFyc2VyIGlzIHNpbGVudCBhYm91dCB3aGF0IHN0cmFuZ2VuZXNzZXMgaXQgc2VlcyBpbgordGhlIE1JQiBmaWxlcy4gVG8gZ2V0IHdhcm5pbmdzIHJlcG9ydGVkLCBjYWxsCisuQiBzbm1wX3NldF9taWJfd2FybmluZ3MKK3dpdGggYQorLkkgbGV2ZWwKK29mIDEgKG9yIDIgZm9yIGV2ZW4gbW9yZSB3YXJuaW5ncykuCisuUFAKIC5CIGFkZF9tb2R1bGVfcmVwbGFjZW1lbnQKIGNhbiBiZSB1c2VkIHRvIGFsbG93IG5ldyBNSUIgbW9kdWxlcyB0byBvYnNvbGV0ZSBvbGRlciBvbmVzLCB3aXRob3V0Ci1uZWVkaW5nIHRvIGFtZW5kIHRoZSBpbXBvcnRzIGNsYXVzZXMgb2Ygb3RoZXIgbW9kdWxlcy4gIEl0IHRha2VzIHRoZQorbmVlZGluZyB0byBhbWVuZCB0aGUgSU1QT1JUUyBjbGF1c2VzIG9mIG90aGVyIG1vZHVsZXMuICBJdCB0YWtlcyB0aGUKIG5hbWVzIG9mIHRoZSBvbGQgYW5kIG5ldyBtb2R1bGVzLCB0b2dldGhlciB3aXRoIGFuIGluZGljYXRpb24gb2Ygd2hpY2gKIHBvcnRpb25zIG9mIHRoZSBvbGQgbW9kdWxlIGFyZSBhZmZlY3RlZC4KIC5SUwpAQCAtMTMwLDQ4ICsxNTksMTEgQEAKIC5URQogLlJFCiBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGhhbmRsZSBlcnJvcnMgaW4gdGhlIG1vZHVsZSBpZGVudGlmaWVycyB1c2VkCi1pbiBNSUIgaW1wb3J0IGNsYXVzZXMgKHN1Y2ggYXMgcmVmZXJyaW5nIHRvCitpbiBNSUIgSU1QT1JUUyBjbGF1c2VzIChzdWNoIGFzIHJlZmVycmluZyB0bwogLkkgUkZDMTIxMwogaW5zdGVhZCBvZgogLklSIFJGQzEyMTMtTUlCICkuCi0uUFAKLS5CIHJlYWRfbW9kdWxlCi1sb2NhdGVzIGFuZCBwYXJzZXMgdGhlIG1vZHVsZSBzcGVjaWZpZWQsIHRvZ2V0aGVyIHdpdGggYW55IG1vZHVsZXMKLXRoYXQgaXQgaW1wb3J0cyBmcm9tLCBhbmQgYWRkcyB0aGUgY29udGVudHMgb2YgdGhlc2UgbW9kdWxlcyB0byB0aGUKLWFjdGl2ZSBNSUIgdHJlZS4gIE5vdGUgdGhhdAotLkIgYWRkX21pYmRpcgotbXVzdCBmaXJzdCBiZSBjYWxsZWQgdG8gYWRkIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmlsZSB3aXRoIHRoZQotbW9kdWxlIGRlZmluaXRpb24sIGlmIHRoaXMgaXMgbm90IGluIHRoZSBzdGFuZGFyZCBwYXRoLgotLmJyCi1CeSBkZWZhdWx0LCB0aGUgZm9sbG93aW5nIE1JQiBtb2R1bGVzIHdpbGwgYmUgbG9hZGVkOiAgSVAtTUlCLCBJRi1NSUIsCi1UQ1AtTUlCLCBVRFAtTUlCLCBTTk1QdjItTUlCLCBSRkMxMjEzLU1JQiwgVUNELVNOTVAtTUlCLgotVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotLkkgTUlCUwotdG8gYSAoY29sb24tc2VwYXJhdGVkKSBsaXN0IG9mIG1vZHVsZXMgdG8gbG9hZC4KLUlmIHRoaXMgdmFyaWFibGUgc3RhcnRzIHdpdGggYSBwbHVzIGNoYXJhY3RlciwgdGhlbiB0aGUgc3BlY2lmaWVkIG1vZHVsZXMKLWFyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBsaXN0LiAgT3RoZXJ3aXNlIG9ubHkgdGhvc2UgbW9kdWxlcyBsaXN0ZWQgYXJlCi1sb2FkZWQgKHRvZ2V0aGVyIHdpdGggYW55IG90aGVycyB0aGV5IGltcG9ydCBmcm9tKS4KLUlmCi0uSSBNSUJTCi1pcyBzZXQgdG8KLS5JUiBBTEwgLAotLkIgcmVhZF9hbGxfbWlicwotaXMgY2FsbGVkIHRvIGxvYWQgYWxsIHRoZSBNSUIgZmlsZXMgZm91bmQgaW4gYWxsIHRoZSBzcGVjaWZpZWQKLS5JUiBNSUJESVJTIC4KLS5QUAotLkIgcmVhZF9taWIKLXBhcnNlcyB0aGUgZmlsZSBzcGVjaWZpZWQsIHRvZ2V0aGVyIHdpdGggYW55IG1vZHVsZXMgdGhhdCBpdCBpbXBvcnRzCi1mcm9tLCBhbmQgYWRkcyB0aGUgY29udGVudHMgdG8gdGhlIGFjdGl2ZSBNSUIgdHJlZS4gIFN1Y2ggYSBmaWxlIGNhbgotY29udGFpbiBtb3JlIHRoZW4gb25lIG1vZHVsZSwgdGhvdWdoIGNhcmUgbXVzdCBiZSB0YWtlbiB0aGF0IGFueQotaW1wb3J0cyBvY2N1ciBlYXJsaWVyIGluIHRoZSBmaWxlLCBpZiB0aGV5IGFyZSBub3QgdG8gYmUgcmVhZCBmcm9tIHRoZQotaW5zdGFsbGVkIG1vZHVsZXMuICBOb3RlIHRoYXQgdGhlIGZpbGUgc3BlY2lmaWVkIGRvZXMgbm90IG5lZWQgdG8gYmUKLWluIGFueSBvZiB0aGUgZGlyZWN0b3JpZXMgaW5pdGlhbGlzZWQgYnkKLS5CIGFkZF9taWJkaXIKLShvciB0aGUgZGVmYXVsdCBzZXR1cCksIHRob3VnaCBhbnkgaW1wb3J0ZWQgbW9kdWxlcyBkby4KLS5icgotVGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi0uSSBNSUJGSUxFUwotY2FuIGJlIHNldCB0byBhIChjb2xvbi1zZXBhcmF0ZWQpIGxpc3Qgb2YgZmlsZXMgY29udGFpbmluZyBNSUJzIHRvIGxvYWQuCisuU1MgU2VhcmNoaW5nIHRoZSBNSUIgVHJlZQogLlBQCiAuQiByZWFkX29iamlkCiB0YWtlcyBhIHN0cmluZyBjb250YWluaW5nIGEgdGV4dHVhbCB2ZXJzaW9uIG9mIGFuIG9iamVjdCBpZGVudGlmaWVyCkBAIC0xODksNyArMTgxLDEwIEBACiBsZW5ndGggc2hvdWxkIGJlIHJlc2V0IGJlZm9yZSBlYWNoIGNhbGwuCiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSB2YWx1ZSBvZiAxIGlmIGl0IHN1Y2NlZWRzIGluIHBhcnNpbmcgdGhlIHN0cmluZwogYW5kIDAgb3RoZXJ3aXNlLgotLlNTIFNlYXJjaGluZyB0aGUgTUlCIFRyZWUKKy5QUAorLkIgc25tcF9wYXJzZV9vaWQKK2lzIHNpbWlsYXIsIGJ1dCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgcGFyc2VkIE9JRCBidWZmZXIgKG9yIE5VTEwpLgorLlBQCiAuQiBnZXRfbW9kdWxlX25vZGUKIHRha2VzIGEgZGVzY3JpcHRvciBhbmQgdGhlIG5hbWUgb2YgYSBtb2R1bGUsIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nCiBvaWQgbGlzdCwgaW4gdGhlIHNhbWUgd2F5IGFzCkBAIC0yMDEsMTIyICsxOTYsOTcgQEAKIHJldHVybiB0aGUgbWF0Y2hpbmcgZW50cnkuICBJZiB0aGlzIGFzc3VtcHRpb24gaXMgaW52YWxpZCwgdGhlbiB0aGUKIGJlaGF2aW91ciBhcyB0byB3aGljaCB2YXJpYWJsZSBpcyByZXR1cm5lZCBpcyBpbXBsZW1lbnRhdGlvbgogZGVwZW5kZW50LgorLmJyCiAuU1MgT3V0cHV0CiAuQiBwcmludF9taWIKIHdpbGwgcHJpbnQgb3V0IGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgTUlCIHRyZWUgdG8KIHRoZSBzcGVjaWZpZWQgRklMRSBwb2ludGVyLgogLlBQCi0uQiBwcmludF92YXJpYWJsZQorLkIgcHJpbnRfb2JqaWQKIHdpbGwgdGFrZSBhbiBvYmplY3QgaWRlbnRpZmllciAoYXMgcmV0dXJuZWQgYnkKLS5CIHJlYWRfb2JqaWQKLW9yCi0uQlIgZ2V0X21vZHVsZV9ub2RlICkKLWFuZCBhbiBpbnN0YW5jZSBvZiBzdWNoIGEgdmFyaWFibGUsIGFuZCBwcmludHMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dAotdGhlIHRleHR1YWwgZm9ybSBvZiB0aGUgb2JqZWN0IGlkZW50aWZpZXIgdG9nZXRoZXIgd2l0aCB0aGUgdmFsdWUKLW9mIHRoZSB2YXJpYWJsZS4KLS5CIGZwcmludF92YXJpYWJsZQorLkJSIHJlYWRfb2JqaWQgIiwgIiBzbm1wX3BhcnNlX29pZCAiIG9yICIgZ2V0X21vZHVsZV9ub2RlICIpLCIKK2FuZCBwcmludHMgdGhlIHRleHR1YWwgZm9ybSBvZiB0aGlzIE9JRCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LgorLlBQCisuQiBmcHJpbnRfb2JqaWQKIGRvZXMgdGhlIHNhbWUsIGJ1dCBwcmludHMgdG8gdGhlIEZJTEUgcG9pbnRlciBzcGVjaWZpZWQgYnkgdGhlIGluaXRpYWwKIHBhcmFtZXRlci4KLS5icgotLkIgc25wcmludF92YXJpYWJsZQorLlBQCisuQiBzbnByaW50X29iamlkCiBwcmludHMgdGhlIHNhbWUgaW5mb3JtYXRpb24gaW50byB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkKIC5JIGJ1Zgogd2hpY2ggaXMgb2YgbGVuZ3RoCi0uSVIgbGVuIAotYW5kIHJldHVybnMgZWl0aGVyIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVkLCBvciAtMSBpZiB0aGUKKy5JUiBsZW4gLgorSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcHJpbnRlZCwgb3IgLTEgaWYgdGhlCiBidWZmZXIgd2FzIG5vdCBsYXJnZSBlbm91Z2guICBJbiB0aGUgbGF0dGVyIGNhc2UsCiAuSSBidWYKLXdpbGwgdHlwaWNhbGx5IGNvbnRhaW5lZCBhIHRydW5jYXRlZCB2ZXJzaW9uIG9mIHRoZSBpbmZvcm1hdGlvbiAoYnV0Ci10aGlzIGJlaGF2aW91ciBpcyBub3QgZ3VhcmFudGVlZCkuICBUaGlzIGZ1bmN0aW9uIHJlcGxhY2VzIHRoZQotb2Jzb2xldGUgZnVuY3Rpb24KLS5CUiBzcHJpbnRfdmFyaWFibGUgLgotLmJyCi0uQiBzcHJpbnRfcmVhbGxvY192YXJpYWJsZQotaXMgdGhlIGxvdy1sZXZlbCBmdW5jdGlvbiB1c2VkIHRvIGltcGxlbWVudCBhbGwgdGhlc2UgZnVuY3Rpb25zLiAgSXQKLXByaW50cyB0byBhIHNwZWNpZmllZCBvZmZzZXQgaW4gYSBzdHJpbmcgYnVmZmVyLiAgVGhlCi0uSSBidWYKLXBhcmFtZXRlciBwb2ludHMgdG8gYSBwb2ludGVyIHRvIHRoYXQgYnVmZmVyOwotLkkgYnVmX2xlbgotcG9pbnRzIHRvIGEgdmFyaWFibGUgaG9sZGluZyB0aGUgY3VycmVudCBzaXplIG9mIHRoYXQgYnVmZmVyLCBhbmQKLS5JIG91dF9sZW4KLXBvaW50cyB0byBhIHZhcmlhYmxlIGhvbGRpbmcgdGhlIG9mZnNldCB0byB3aGljaCB0byBwcmludC4KLS5JIG91dF9sZW4KLXdpbGwgYmUgdXBkYXRlZCB0byBob2xkIHRoZSBvZmZzZXQgb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIGxhc3QKLW9uZSBhZGRlZCB0byB0aGUgYnVmZmVyLiAgSWYKLS5JIGFsbG93X3JlYWxsb2MKLWlzIDEsIHRoZSBidWZmZXIgd2lsbCBiZSBkeW5hbWljYWxseSBleHBhbmRlZCwgYXMgbmVjZXNzYXJ5LCB0byBob2xkCi10aGUgb3V0cHV0OyB0aGUgdmFyaWFibGVzIHBvaW50ZWQgdG8gYnkKLS5JIGJ1ZgotYW5kCi0uSSBidWZfbGVuCi13aWxsIGJlIHVwZGF0ZWQuICBJZgotLkkgYWxsb3dfcmVhbGxvYwotaXMgMCwgdGhlIGJ1ZmZlciB3aWxsIG5vdCBiZSBkeW5hbWljYWxseSBleHBhbmRlZC4KLS5CIHNwcmludF9yZWFsbG9jX3ZhcmlhYmxlCi1yZXR1cm5zIDAgaWYKLS5JIGFsbG93X3JlYWxsb2MKLWlzIDEgYW5kIGFuIGF0dGVtcHQgdG8gYWxsb2NhdGUgbWVtb3J5IHRvIGV4cGFuZCB0aGUgYnVmZmVyIGZhaWxzLCBvcgotaWYKLS5JIGFsbG93X3JlYWxsb2MKLWlzIDAgYW5kIHRoZSBvdXRwdXQgd291bGRuJ3QgZml0IGluIHRoZSBidWZmZXIuICBPdGhlcndpc2UgaXQgcmV0dXJucwotMS4gIFdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiB5b3Ugc2hvdWxkIGJlIGNhcmVmdWwgdG8gY2FsbAotLkJSIGZyZWUgKDMpCi1vbgotLkkgKmJ1Zgotd2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCB3aXRoIGl0Lgord2lsbCB0eXBpY2FsbHkgY29udGFpbiBhIHRydW5jYXRlZCB2ZXJzaW9uIG9mIHRoZSBpbmZvcm1hdGlvbiAoYnV0Cit0aGlzIGJlaGF2aW91ciBpcyBub3QgZ3VhcmFudGVlZCkuCiAuUFAKLS5CUiBwcmludF92YWx1ZSAsCi0uQlIgZnByaW50X3ZhbHVlICwKLS5CUiBzbnByaW50X3ZhbHVlCisuQlIgcHJpbnRfZGVzY3JpcHRpb24gLAorLkJSIGZwcmludF9kZXNjcmlwdGlvbiAsCiBhbmQKLS5CIHNwcmludF9yZWFsbG9jX3ZhbHVlCi1kbyB0aGUgc2FtZSBhcyB0aGUgZXF1aXZhbGVudAotLkIgcHJpbnRfdmFyaWFibGUKLXJvdXRpbmVzLCBidXQgb25seSBkaXNwbGF5aW5nIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUsIHdpdGhvdXQgdGhlCi1jb3JyZXNwb25kaW5nIG9iamVjdCBpZGVudGlmaWVyLgotLlBQCi0uQlIgcHJpbnRfb2JqaWQgLAotLkJSIGZwcmludF9vYmppZCAsCi0uQlIgc25wcmludF9vYmppZCAsCi1hbmQKLS5CIHNwcmludF9yZWFsbG9jX29iamlkCi10YWtlIGFuIG9iamVjdCBpZGVudGlmaWVyICh3aXRob3V0IGFuIGFjY29tcGFueWluZyB2YXJpYWJsZSBpbnN0YW5jZSkKLWFuZCBwcmludCBvdXQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24uCi0uUFAKLS5CSSBwcmludF9kZXNjcmlwdGlvbiAsCi0uQkkgZnByaW50X2Rlc2NyaXB0aW9uICwKLS5CSSBzbnByaW50X2Rlc2NyaXB0aW9uICwKLWFuZAotLkIgc3ByaW50X3JlYWxsb2NfZGVzY3JpcHRpb24KLXRha2UgYW4gb2JqZWN0IGlkZW50aWZpZXIgKGFzIGZvcgotLkIgcHJpbnRfb2JqaWQKLWFib3ZlKSBhbmQgcHJpbnQgb3V0IGEgdmVyc2lvbiBvZiB0aGUgTUlCIGRlZmluaXRpb24gZm9yIHRoYXQgb2JqZWN0LAorLkIgc25wcmludF9kZXNjcmlwdGlvbgordGFrZSBhIHNpbWlsYXIgb2JqZWN0IGlkZW50aWZpZXIKK2FuZCBwcmludCBvdXQgYSB2ZXJzaW9uIG9mIHRoZSBNSUIgZGVmaW5pdGlvbiBmb3IgdGhhdCBvYmplY3QsCiB0b2dldGhlciB3aXRoIHRoZSBmdWxsIE9JRC4gVGhlCiAuSSB3aWR0aAogYXJndW1lbnQgY29udHJvbHMgaG93IHRoZSBPSUQgaXMgbGF5ZWQgb3V0LgogLlBQCiBCeSBkZWZhdWx0IHRoZSBwYXJzZXIgZG9lcyBub3Qgc2F2ZSBkZXNjcmlwdGlvbnMgc2luY2UgdGhleSBtYXkgYmUKLWh1Z2UuICBJbiBvcmRlciB0byBiZSBhYmxlIHRvIHByaW50IHRoZW0sIHlvdSBtdXN0IGNhbGwKLS5CUiBzbm1wX3NldF9zYXZlX2Rlc2NyaXB0aW9ucygxKSAuCi0uUFAKLUluIGdlbmVyYWwgdGhlIHBhcnNlciBpcyBzaWxlbnQgYWJvdXQgd2hhdCBzdHJhbmdlbmVzc2VzIGl0IHNlZXMgaW4KLXRoZSBNSUIgZmlsZXMuIFRvIGdldCB3YXJuaW5ncyByZXBvcnRlZCwgY2FsbAotLkIgc25tcF9zZXRfbWliX3dhcm5pbmdzCi13aXRoIGEKLS5JIGxldmVsCi1vZiAxIChvciAyIGZvciBldmVuIG1vcmUgd2FybmluZ3MpLgoraHVnZS4gIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gcHJpbnQgdGhlbSwgaXQgaXMgbmVjZXNzYXJ5IHRvIGludm9rZQorLkJJIHNubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zKDEpIGJlZm9yZQorY2FsbGluZworLkIgaW5pdF9taWIKKyhvciBzaW1pbGFyKS4KIC5TSCAiRU5WSVJPTk1FTlQgVkFSSUFCTEVTIgorLlBQCitUaGUgbWFpbiB1c2Ugb2YgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMgd2l0aCByZXNwZWN0IHRvIHRoZXNlIEFQSSBjYWxscworaXMgdG8gY29uZmlndXJlIHdoaWNoIE1JQiBtb2R1bGVzIHNob3VsZCBiZSBsb2FkZWQsIGFuZCB3aGVyZSB0aGV5IGFyZQorbG9jYXRlZC4KIC5UUCAxMAogTUlCRElSUwogQSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIE1JQiBtb2R1bGVzLgorLmJyCiBEZWZhdWx0OiBEQVRBRElSL3NubXAvbWlicwotLlRQIDEwCi1NSUJGSUxFUwotQSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBmaWxlcyB0byBsb2FkLgotRGVmYXVsdDogKG5vbmUpCisuYnIKK1VzZWQgYnkKKy5CUiBpbml0X21pYiAiLCAiIG5ldHNubXBfcmVhZF9tb2R1bGUgIiwgIiByZWFkX2FsbF9taWJzCithbmQgKGltcGxpY2l0bHkpIGJ5CisuQlIgcmVhZF9taWIgLgogLlRQIDEwCiBNSUJTCiBBIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIE1JQiBtb2R1bGVzIHRvIGxvYWQuCi1EZWZhdWx0OiBJUC1NSUI6SUYtTUlCOlRDUC1NSUI6VURQLU1JQjpTTk1QdjItTUlCOiBSRkMxMjEzLU1JQjpVQ0QtU05NUC1NSUIuCisuYnIKK1RoZSBkZWZhdWx0IGxpc3Qgb2YgbW9kdWxlcyB3aWxsIGRlcGVuZCBvbiBob3cgdGhlIE5ldC1TTk1QIHNvZnR3YXJlCit3YXMgb3JpZ2luYWxseSBjb21waWxlZCwgYnV0IGlzIHR5cGljYWxseToKK0lQLU1JQjpJRi1NSUI6VENQLU1JQjpVRFAtTUlCOlNOTVB2Mi1NSUI6UkZDMTIxMy1NSUI6IFVDRC1TTk1QLU1JQjpIT1NULVJFU09VUkNFUy1NSUIKKy5JUAorSWYgdGhlIHZhbHVlIG9mIHRoZQorLkIgTUlCUworZW52aXJvbm1lbnRhbCB2YXJpYWJsZSBzdGFydHMgd2l0aCBhICcrJyBjaGFyYWN0ZXIsCit0aGVuIHRoZXNlIE1JQiBtb2R1bGVzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGRlZmF1bHQgbGlzdC4KK090aGVyd2lzZSB0aGVzZSBtb2R1bGVzIChwbHVzIGFueSB0aGF0IHRoZXkgSU1QT1JUIGZyb20pIHdpbGwgYmUgbG9hZGVkCisuSSBpbnN0ZWFkCitvZiB0aGUgZGVmYXVsdCBsaXN0LgorLklQCitJZiB0aGUgCisuQiBNSUJTCitlbnZpcm9ubWVudGFsIHZhcmlhYmxlIGhhcyB0aGUgdmFsdWUKKy5CUiBBTEwgIiB0aGVuICIgcmVhZF9hbGxfbWlicword2lsbCBiZSBjYWxsZWQgdG8gbG9hZCB0aGUgZnVsbCBjb2xsZWN0aW9uIG9mIGFsbCBhdmFpbGFibGUgTUlCIG1vZHVsZXMuCisuSVAKK1VzZWQgYnkKKy5CIGluaXRfbWliCitvbmx5LgorLlRQIDEwCitNSUJGSUxFUworQSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBmaWxlcyB0byBsb2FkLgorLmJyCitEZWZhdWx0OiAobm9uZSkKKy5icgorVXNlZCBieQorLkIgaW5pdF9taWIKK29ubHkuCiAuU0ggIlNFRSBBTFNPIgotLkJSIHNubXBfYXBpICIoMykiCisuQlIgc25tcF9hcGkgIigzKSwiCisuQlIgb3V0cHV0X2FwaSAiKDMpIgpkaWZmIC0tZ2l0IGEvbWFuL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEuZGVmIGIvbWFuL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEuZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNjk0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMS5kZWYKQEAgLTAsMCArMSwyOCBAQAorLlRIIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIDEgIjE3IFNlcCAyMDA4IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlNIIE5BTUUKK25ldC1zbm1wLWNyZWF0ZS12My11c2VyIFwtIGNyZWF0ZSBhIFNOTVB2MyB1c2VyIGluIG5ldC1zbm1wIGNvbmZpZ3VyYXRpb24gZmlsZQorLlNIIFNZTk9QU0lTCisuUFAKKy5CIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIFstcm9dIFstYSBhdXRocGFzc10gWy14IHByaXZwYXNzXSBbLVggREVTfEFFU10KKy5CIFt1c2VybmFtZV0KKy5TSCBERVNDUklQVElPTgorLlBQCitUaGUgXGZJbmV0LXNubXAtY3JlYXRlLXYzLXVzZXJcZlAgc2hlbGwgc2NyaXB0IGlzIGRlc2lnbmVkIHRvIGNyZWF0ZSBhCituZXcgdXNlciBpbiBuZXQtc25tcCBjb25maWd1cmF0aW9uIGZpbGUgKC92YXIvbmV0LXNubXAvc25tcGQuY29uZiBieSBkZWZhdWx0KS4KKworLlNIIE9QVElPTlMKKy5UUAorXGZCXC1cLXZlcnNpb25cZlIKK2Rpc3BsYXlzIHRoZSBuZXQtc25tcCB2ZXJzaW9uIG51bWJlcgorLlRQCitcZkJcLXJvXGZSCitjcmVhdGUgYW4gdXNlciB3aXRoIHJlYWQtb25seSBwZXJtaXNzaW9ucworLlRQCitcZkJcLWEgYXV0aHBhc3NcZlIKK3NwZWNpZnkgYXV0aGVudGljYXRpb24gcGFzc3dvcmQKKy5UUAorXGZCXC14IHByaXZwYXNzXGZSCitzcGVjaWZ5IGVuY3J5cHRpb24gcGFzc3dvcmQKKy5UUAorXGZCXC1YIERFU3xBRVNcZlIKK3NwZWNpZnkgZW5jcnlwdGlvbiBhbGdvcml0aG0KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zIGIvbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I1OGVhMgotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zCkBAIC0wLDAgKzEsMjYgQEAKKy5USCAiYmFieV9zdGVwc19hY2Nlc3NfbXVsdGlwbGV4ZXI6IGNhbGxzIGluZGl2aWR1YWwgYWNjZXNzIG1ldGhvZHMgYmFzZWQgb24gYmFieV9zdGVwIG1vZGUuIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5hZCBsCisubmgKKy5TSCBOQU1FCitiYWJ5X3N0ZXBzX2FjY2Vzc19tdWx0aXBsZXhlcjogY2FsbHMgaW5kaXZpZHVhbCBhY2Nlc3MgbWV0aG9kcyBiYXNlZCBvbiBiYWJ5X3N0ZXAgbW9kZS4gXC0gCisuU1MgIkZ1bmN0aW9ucyIKKworLmluICsxYworLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogXGZCbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tdWx0aXBsZXhlcl9nZXRcZlAgKFxmQm5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kc1xmUCAqYW0pIgorLmJyCisuUkkgIlxmSXJldHVybnMgYSBiYWJ5X3N0ZXBzIGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIGhhbmRsZXIgY2hhaW4uIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfYmFieV9zdGVwX21vZGUyZmxhZ1xmUCAodV9pbnQgbW9kZSkiCisuYnIKKy5pbiAtMWMKKy5TSCAiRnVuY3Rpb24gRG9jdW1lbnRhdGlvbiIKKy5QUCAKKy5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tdWx0aXBsZXhlcl9nZXQgKFxmQm5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kc1xmUCAqIGFtKSIKKy5QUAorcmV0dXJucyBhIGJhYnlfc3RlcHMgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAzMzYgb2YgZmlsZSBiYWJ5X3N0ZXBzLmMuCisuU0ggIkF1dGhvciIKKy5QUCAKK0dlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfYWdlbnQuMyBiL21hbi9uZXRzbm1wX2FnZW50LjMKaW5kZXggZjNjN2RkNS4uZDQ1YWU2NCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfYWdlbnQuMworKysgYi9tYW4vbmV0c25tcF9hZ2VudC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJUaGUgTmV0LVNOTVAgYWdlbnQiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiVGhlIE5ldC1TTk1QIGFnZW50IiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMyBiL21hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNDI5ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMwpAQCAtMCwwICsxLDI0MCBAQAorLlRIICJhZ2VudF9oYW5kbGVyLmgiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLmFkIGwKKy5uaAorLlNIIE5BTUUKK2FnZW50X2hhbmRsZXIuaCBcLSAKKy5TSCBTWU5PUFNJUworLmJyCisuUFAKKy5TUyAiRGF0YSBTdHJ1Y3R1cmVzIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgInN0cnVjdCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyX3NcZlAiCisuYnIKKy5SSSAiXGZJdGhlIG1pYiBoYW5kbGVyIHN0cnVjdHVyZSB0byBiZSByZWdpc3RlcmVkIFxmUCIKKy50aSAtMWMKKy5SSSAic3RydWN0IFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fc1xmUCIKKy5icgorLlJJICJcZklSb290IHJlZ2lzdHJhdGlvbiBpbmZvLiBcZlAiCisudGkgLTFjCisuUkkgInN0cnVjdCBcZkJuZXRzbm1wX2hhbmRsZXJfYXJnc19zXGZQIgorLmJyCisudGkgLTFjCisuUkkgInN0cnVjdCBcZkJuZXRzbm1wX2RlbGVnYXRlZF9jYWNoZV9zXGZQIgorLmJyCisuaW4gLTFjCisuU1MgIkRlZmluZXMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJNSUJfSEFORExFUl9BVVRPX05FWFRcZlAgICAweDAwMDAwMDAxIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCTUlCX0hBTkRMRVJfQVVUT19ORVhUX09WRVJSSURFX09OQ0VcZlAgICAweDAwMDAwMDAyIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCTUlCX0hBTkRMRVJfSU5TVEFOQ0VcZlAgICAweDAwMDAwMDA0IgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCTUlCX0hBTkRMRVJfQ1VTVE9NNFxmUCAgIDB4MTAwMDAwMDAiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJNSUJfSEFORExFUl9DVVNUT00zXGZQICAgMHgyMDAwMDAwMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQk1JQl9IQU5ETEVSX0NVU1RPTTJcZlAgICAweDQwMDAwMDAwIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCTUlCX0hBTkRMRVJfQ1VTVE9NMVxmUCAgIDB4ODAwMDAwMDAiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJIQU5ETEVSX0NBTl9HRVRBTkRHRVRORVhUXGZQICAgMHgwMSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhBTkRMRVJfQ0FOX1NFVFxmUCAgIDB4MDIiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJIQU5ETEVSX0NBTl9HRVRCVUxLXGZQICAgMHgwNCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhBTkRMRVJfQ0FOX05PVF9DUkVBVEVcZlAgICAweDA4IgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSEFORExFUl9DQU5fQkFCWV9TVEVQXGZQICAgMHgxMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhBTkRMRVJfQ0FOX1NUQVNIXGZQICAgMHgyMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhBTkRMRVJfQ0FOX1JPTkxZXGZQICAgKEhBTkRMRVJfQ0FOX0dFVEFOREdFVE5FWFQpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSEFORExFUl9DQU5fUldSSVRFXGZQICAgKEhBTkRMRVJfQ0FOX0dFVEFOREdFVE5FWFQgfCBIQU5ETEVSX0NBTl9TRVQpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSEFORExFUl9DQU5fU0VUX09OTFlcZlAgICAoSEFORExFUl9DQU5fU0VUIHwgSEFORExFUl9DQU5fTk9UX0NSRUFURSkiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJIQU5ETEVSX0NBTl9ERUZBVUxUXGZQICAgKEhBTkRMRVJfQ0FOX1JPTkxZIHwgSEFORExFUl9DQU5fTk9UX0NSRUFURSkiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJSRVFVRVNUX0lTX0RFTEVHQVRFRFxmUCAgIDEiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJSRVFVRVNUX0lTX05PVF9ERUxFR0FURURcZlAgICAwIgorLmJyCisuaW4gLTFjCisuU1MgIlR5cGVkZWZzIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgInR5cGVkZWYgc3RydWN0IFxmQm5ldHNubXBfbWliX2hhbmRsZXJfc1xmUCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQIgorLmJyCisuUkkgIlxmSVR5cGVkZWZzIHRoZSBcZkJuZXRzbm1wX21pYl9oYW5kbGVyX3NcZlAgc3RydWN0IGludG8gbmV0c25tcF9taWJfaGFuZGxlci4gXGZQIgorLnRpIC0xYworLlJJICJ0eXBlZGVmIHN0cnVjdCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3NcZlAgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCIKKy5icgorLlJJICJcZklUeXBlZGVmcyB0aGUgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zXGZQIHN0cnVjdCBpbnRvIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24uIFxmUCIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfTm9kZV9IYW5kbGVyXGZQICkoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0cykiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBzdHJ1Y3QgXGZCbmV0c25tcF9oYW5kbGVyX2FyZ3Nfc1xmUCBcZkJuZXRzbm1wX2hhbmRsZXJfYXJnc1xmUCIKKy5icgorLnRpIC0xYworLlJJICJ0eXBlZGVmIHN0cnVjdCBcZkJuZXRzbm1wX2RlbGVnYXRlZF9jYWNoZV9zXGZQIFxmQm5ldHNubXBfZGVsZWdhdGVkX2NhY2hlXGZQIgorLmJyCisuaW4gLTFjCisuU1MgIkZ1bmN0aW9ucyIKKworLmluICsxYworLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfaW5pdF9oYW5kbGVyX2NvbmZcZlAgKHZvaWQpIgorLmJyCisudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXJcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8pIgorLmJyCisuUkkgIlxmSXJlZ2lzdGVyIGEgaGFuZGxlciwgYXMgZGVmaW5lZCBieSB0aGUgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiBwb2ludGVyLiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlclxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCisuYnIKKy5SSSAiXGZJdW5yZWdpc3RlciBhIGhhbmRsZXIsIGFzIGRlZmluZWQgYnkgdGhlIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gcG9pbnRlci4gXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyX25vY2FsbGJhY2tcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8pIgorLmJyCisuUkkgIlxmSXJlZ2lzdGVyIGEgaGFuZGxlciwgYXMgZGVmaW5lZCBieSB0aGUgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiBwb2ludGVyLiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX2luamVjdF9oYW5kbGVyXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyKSIKKy5icgorLlJJICJcZklpbmplY3QgYSBuZXcgaGFuZGxlciBpbnRvIHRoZSBjYWxsaW5nIGNoYWluIG9mIHRoZSBoYW5kbGVycyBkZWZpbmVkIGJ5IHRoZSBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIHBvaW50ZXIuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfaW5qZWN0X2hhbmRsZXJfYmVmb3JlXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyLCBjb25zdCBjaGFyICpiZWZvcmVfd2hhdCkiCisuYnIKKy5SSSAiXGZJaW5qZWN0IGEgbmV3IGhhbmRsZXIgaW50byB0aGUgY2FsbGluZyBjaGFpbiBvZiB0aGUgaGFuZGxlcnMgZGVmaW5lZCBieSB0aGUgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiBwb2ludGVyLiBcZlAiCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBcZkJuZXRzbm1wX2ZpbmRfaGFuZGxlcl9ieV9uYW1lXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBjb25zdCBjaGFyICpuYW1lKSIKKy5icgorLlJJICJcZklSZXR1cm5zIGEgaGFuZGxlciBmcm9tIGEgY2hhaW4gYmFzZWQgb24gdGhlIG5hbWUuIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQm5ldHNubXBfZmluZF9oYW5kbGVyX2RhdGFfYnlfbmFtZVxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgY29uc3QgY2hhciAqbmFtZSkiCisuYnIKKy5SSSAiXGZJUmV0dXJucyBhIGhhbmRsZXIncyB2b2lkICogcG9pbnRlciBmcm9tIGEgY2hhaW4gYmFzZWQgb24gdGhlIG5hbWUuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfY2FsbF9oYW5kbGVyc1xmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0cykiCisuYnIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgaW50IFxmQm5ldHNubXBfY2FsbF9oYW5kbGVyXGZQIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpuZXh0X2hhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICpyZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdHMpIgorLmJyCisuUkkgIlxmSWNhbGxzIGEgaGFuZGxlciB3aXRoIHdpdGggYXBwcm9wcmlhdGUgTlVMTCBjaGVja2luZyBvZiBhcmd1bWVudHMsIGV0Yy4gXGZQIgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSBpbnQgXGZCbmV0c25tcF9jYWxsX25leHRfaGFuZGxlclxmUCAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqY3VycmVudCwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0cykiCisuYnIKKy5SSSAiXGZJY2FsbHMgdGhlIG5leHQgaGFuZGxlciBpbiB0aGUgY2hhaW4gYWZ0ZXIgdGhlIGN1cnJlbnQgb25lIHdpdGggd2l0aCBhcHByb3ByaWF0ZSBOVUxMIGNoZWNraW5nLCBldGMuIFxmUCIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgaW50IFxmQm5ldHNubXBfY2FsbF9uZXh0X2hhbmRsZXJfb25lX3JlcXVlc3RcZlAgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmN1cnJlbnQsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICpyZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdHMpIgorLmJyCisuUkkgIlxmSWNhbGxzIHRoZSBuZXh0IGhhbmRsZXIgaW4gdGhlIGNoYWluIGFmdGVyIHRoZSBjdXJyZW50IG9uZSB3aXRoIHdpdGggYXBwcm9wcmlhdGUgTlVMTCBjaGVja2luZywgZXRjLiBcZlAiCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyXGZQIChjb25zdCBjaGFyICpuYW1lLCBOZXRzbm1wX05vZGVfSGFuZGxlciAqaGFuZGxlcl9hY2Nlc3NfbWV0aG9kKSIKKy5icgorLlJJICJcZkljcmVhdGVzIGEgbmV0c25tcF9taWJfaGFuZGxlciBzdHJ1Y3R1cmUgZ2l2ZW4gYSBuYW1lIGFuZCBhIGFjY2VzcyBtZXRob2QuIFxmUCIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlXGZQIChjb25zdCBjaGFyICpuYW1lLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50IG1vZGVzKSIKKy5icgorLlJJICJcZkljcmVhdGVzIGEgaGFuZGxlciByZWdpc3RyYXRpb24gc3RydWN0dXJlIGdpdmVuIGEgbmFtZSwgYSBhY2Nlc3NfbWV0aG9kIGZ1bmN0aW9uLCBhIHJlZ2lzdHJhdGlvbiBsb2NhdGlvbiBvaWQgYW5kIHRoZSBtb2RlcyB0aGUgaGFuZGxlciBzdXBwb3J0cy4gXGZQIgorLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogXGZCbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKGNvbnN0IGNoYXIgKm5hbWUsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpoYW5kbGVyX2FjY2Vzc19tZXRob2QsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpIgorLmJyCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfZGVsZWdhdGVkX2NhY2hlXGZQICogXGZCbmV0c25tcF9jcmVhdGVfZGVsZWdhdGVkX2NhY2hlXGZQIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3RzLCB2b2lkICpsb2NhbGluZm8pIgorLmJyCisuUkkgIlxmSWNyZWF0ZXMgYSBjYWNoZSBvZiBpbmZvcm1hdGlvbiB3aGljaCBjYW4gYmUgc2F2ZWQgZm9yIGZ1dHVyZSByZWZlcmVuY2UuIFxmUCIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2ZyZWVfZGVsZWdhdGVkX2NhY2hlXGZQIChcZkJuZXRzbm1wX2RlbGVnYXRlZF9jYWNoZVxmUCAqZGNhY2hlKSIKKy5icgorLlJJICJcZklmcmVlcyBhIGNhY2hlIG9uY2UgeW91J3JlIGZpbmlzaGVkIHVzaW5nIGl0IFxmUCIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgXGZCbmV0c25tcF9kZWxlZ2F0ZWRfY2FjaGVcZlAgKiBcZkJuZXRzbm1wX2hhbmRsZXJfY2hlY2tfY2FjaGVcZlAgKFxmQm5ldHNubXBfZGVsZWdhdGVkX2NhY2hlXGZQICpkY2FjaGUpIgorLmJyCisuUkkgIlxmSWNoZWNrJ3MgYSBnaXZlbiBjYWNoZSBhbmQgcmV0dXJucyBpdCBpZiBpdCBpcyBzdGlsbCB2YWxpZCAoaWUsIHRoZSBhZ2VudCBzdGlsbCBjb25zaWRlcnMgaXQgdG8gYmUgYW4gb3V0c3RhbmRpbmcgcmVxdWVzdC4gXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcl9ieV9uYW1lXGZQIChjb25zdCBjaGFyICpuYW1lLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyKSIKKy5icgorLlJJICJcZklyZWdpc3RlcnMgYSBnaXZlbiBoYW5kbGVyIGJ5IG5hbWUgc28gdGhhdCBpdCBjYW4gYmUgZm91bmQgZWFzaWx5IGxhdGVyLiBcZlAiCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9jbGVhcl9oYW5kbGVyX2xpc3RcZlAgKHZvaWQpIgorLmJyCisuUkkgIlxmSWNsZWFycyB0aGUgZW50aXJlIGhhbmRsZXItcmVnaXN0cmF0aW9uIGxpc3QgXGZQIgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfcmVxdWVzdF9hZGRfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCwgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKlxmQm5vZGVcZlApIgorLmJyCisuUkkgIlxmSWFkZCBkYXRhIHRvIGEgcmVxdWVzdCB0aGF0IGNhbiBiZSBleHRyYWN0ZWQgbGF0ZXIgYnkgc3VibW9kdWxlcyBcZlAiCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU5MSU5FIGludCBcZkJuZXRzbm1wX3JlcXVlc3RfcmVtb3ZlX2xpc3RfZGF0YVxmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QsIGNvbnN0IGNoYXIgKm5hbWUpIgorLmJyCisuUkkgIlxmSXJlbW92ZSBkYXRhIGZyb20gYSByZXF1ZXN0IFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQm5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCwgY29uc3QgY2hhciAqbmFtZSkiCisuYnIKKy5SSSAiXGZJZXh0cmFjdCBkYXRhIGZyb20gYSByZXF1ZXN0IHRoYXQgd2FzIGFkZGVkIHByZXZpb3VzbHkgYnkgYSBwYXJlbnQgXGZCbW9kdWxlXGZQIFxmUCIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2ZyZWVfcmVxdWVzdF9kYXRhX3NldFxmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QpIgorLmJyCisuUkkgIlxmSUZyZWUgdGhlIGV4dHJhIGRhdGEgc3RvcmVkIGluIGEgcmVxdWVzdC4gXGZQIgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZnJlZV9yZXF1ZXN0X2RhdGFfc2V0c1xmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QpIgorLmJyCisuUkkgIlxmSUZyZWUgdGhlIGV4dHJhIGRhdGEgc3RvcmVkIGluIGEgYnVuY2ggb2YgcmVxdWVzdHMgKGFsbCBkYXRhIGluIHRoZSBjaGFpbikuIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX2hhbmRsZXJfZnJlZVxmUCAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqaGFuZGxlcikiCisuYnIKKy5SSSAiXGZJZnJlZXMgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBoYW5kbGVyIFxmUCIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIFxmQm5ldHNubXBfaGFuZGxlcl9kdXBcZlAgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIpIgorLmJyCisuUkkgIlxmSWR1cGxpY2F0ZXMgYSBoYW5kbGVyIGFuZCBhbGwgc3Vic2VxdWVudCBoYW5kbGVycyBzZWUgYWxzbyBfY2xvbmVfaGFuZGxlciBcZlAiCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2R1cFxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCisuYnIKKy5SSSAiXGZJZHVwbGljYXRlcyB0aGUgaGFuZGxlciByZWdpc3RyYXRpb24gb2JqZWN0IFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWVcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8pIgorLmJyCisuUkkgIlxmSWZyZWUgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBvYmplY3QgXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZFxmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3RzLCBpbnQgaXNkZWxlZ2F0ZWQpIgorLmJyCisuUkkgIlxmSW1hcmtzIGEgbGlzdCBvZiByZXF1ZXN0cyBhcyBkZWxlZ2F0ZWQgKG9yIG5vdCBpZiBpc2RlbGVnYWRlZCA9IDApIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQm5ldHNubXBfaGFuZGxlcl9nZXRfcGFyZW50X2RhdGFcZlAgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICosIGNvbnN0IGNoYXIgKikiCisuYnIKKy5pbiAtMWMKKy5TSCAiRGV0YWlsZWQgRGVzY3JpcHRpb24iCisuUFAgCisKKy5QUAorRGVmaW5pdGlvbiBpbiBmaWxlIFxmQmFnZW50X2hhbmRsZXIuaFxmUC4KKy5TSCAiQXV0aG9yIgorLlBQIAorR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zIGIvbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMwppbmRleCAxMGJhMmYyLi4zNmM4ZDlmIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zCisrKyBiL21hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMKQEAgLTEsNCArMSw0IEBACi0uVEggIk1haW50YWluIGEgcmVnaXN0cnkgb2YgTUlCIHN1YnRyZWVzLCB0b2dldGhlciB3aXRoIHJlbGF0ZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIG1pYm1vZHVsZSwgc2Vzc2lvbnMsIGV0YyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJNYWludGFpbiBhIHJlZ2lzdHJ5IG9mIE1JQiBzdWJ0cmVlcywgdG9nZXRoZXIgd2l0aCByZWxhdGVkIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBtaWJtb2R1bGUsIHNlc3Npb25zLCBldGMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTQwLDkgKzQwLDYgQEAKIAogLmluICsxYwogLnRpIC0xYwotLlJJICJORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZCBcZkJpbnZhbGlkYXRlX2xvb2t1cF9jYWNoZVxmUCAoY29uc3QgY2hhciAqY29udGV4dCkiCi0uYnIKLS50aSAtMWMKIC5SSSAidm9pZCBcZkJuZXRzbm1wX3NldF9sb29rdXBfY2FjaGVfc2l6ZVxmUCAoaW50IG5ld3NpemUpIgogLmJyCiAuUkkgIlxmSXNldCB0aGUgbG9va3VwIGNhY2hlIHNpemUgZm9yIG9wdGltaXplZCBhZ2VudCByZWdpc3RyYXRpb24gcGVyZm9ybWFuY2UuIFxmUCIKQEAgLTUxLDYgKzQ4LDIxIEBACiAuYnIKIC5SSSAiXGZJcmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBsb29rdXAgY2FjaGUgc2l6ZSBcZlAiCiAudGkgLTFjCisuUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSBcZkJsb29rdXBfY2FjaGVfY29udGV4dFxmUCAqIFxmQmdldF9jb250ZXh0X2xvb2t1cF9jYWNoZVxmUCAoY29uc3QgY2hhciAqY29udGV4dCkiCisuYnIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQgXGZCbG9va3VwX2NhY2hlX2FkZFxmUCAoY29uc3QgY2hhciAqY29udGV4dCwgXGZCbmV0c25tcF9zdWJ0cmVlXGZQICpuZXh0LCBcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKnByZXZpb3VzKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZCBcZkJsb29rdXBfY2FjaGVfcmVwbGFjZVxmUCAoXGZCbG9va3VwX2NhY2hlXGZQICpwdHIsIFxmQm5ldHNubXBfc3VidHJlZVxmUCAqbmV4dCwgXGZCbmV0c25tcF9zdWJ0cmVlXGZQICpwcmV2aW91cykiCisuYnIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9TVEFUSUNfSU5MSU5FIFxmQmxvb2t1cF9jYWNoZVxmUCAqIFxmQmxvb2t1cF9jYWNoZV9maW5kXGZQIChjb25zdCBjaGFyICpjb250ZXh0LCBvaWQgKm5hbWUsIHNpemVfdCBuYW1lX2xlbiwgaW50ICpyZXRjbXApIgorLmJyCisudGkgLTFjCisuUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkIFxmQmludmFsaWRhdGVfbG9va3VwX2NhY2hlXGZQIChjb25zdCBjaGFyICpjb250ZXh0KSIKKy5icgorLnRpIC0xYwogLlJJICJ2b2lkIFxmQm5ldHNubXBfc3VidHJlZV9mcmVlXGZQIChcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKmEpIgogLmJyCiAudGkgLTFjCkBAIC0xNDAsMTggKzE1Miw2IEBACiAuYnIKIC5SSSAiXGZJY2hlY2tzIHRvIHNlZSBpZiBldmVyeXRoaW5nIHdpdGhpbiBhIGdpdmVuIHN1YnRyZWUgaXMgZWl0aGVyOiBpbiB2aWV3LCBub3QgaW4gdmlldywgb3IgcG9zc2libHkgYm90aC4gXGZQIgogLnRpIC0xYwotLlJJICJORVRTTk1QX1NUQVRJQ19JTkxJTkUgXGZCbG9va3VwX2NhY2hlX2NvbnRleHRcZlAgKiBcZkJnZXRfY29udGV4dF9sb29rdXBfY2FjaGVcZlAgKGNvbnN0IGNoYXIgKmNvbnRleHQpIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkIFxmQmxvb2t1cF9jYWNoZV9hZGRcZlAgKGNvbnN0IGNoYXIgKmNvbnRleHQsIFxmQm5ldHNubXBfc3VidHJlZVxmUCAqbmV4dCwgXGZCbmV0c25tcF9zdWJ0cmVlXGZQICpwcmV2aW91cykiCi0uYnIKLS50aSAtMWMKLS5SSSAiTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQgXGZCbG9va3VwX2NhY2hlX3JlcGxhY2VcZlAgKFxmQmxvb2t1cF9jYWNoZVxmUCAqcHRyLCBcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKm5leHQsIFxmQm5ldHNubXBfc3VidHJlZVxmUCAqcHJldmlvdXMpIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSBcZkJsb29rdXBfY2FjaGVcZlAgKiBcZkJsb29rdXBfY2FjaGVfZmluZFxmUCAoY29uc3QgY2hhciAqY29udGV4dCwgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW4sIGludCAqcmV0Y21wKSIKLS5icgotLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKiBcZkJuZXRzbm1wX3N1YnRyZWVfZmluZF9wcmV2XGZQIChvaWQgKm5hbWUsIHNpemVfdCBsZW4sIFxmQm5ldHNubXBfc3VidHJlZVxmUCAqc3VidHJlZSwgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKSIKIC5icgogLnRpIC0xYwpAQCAtMjAxLDEwICsyMDEsMTAgQEAKIAogLmluICsxYwogLnRpIC0xYwotLlJJICJcZkJzdWJ0cmVlX2NvbnRleHRfY2FjaGVcZlAgKiBcZkJjb250ZXh0X3N1YnRyZWVzXGZQID0gTlVMTCIKKy5SSSAiaW50IFxmQmxvb2t1cF9jYWNoZV9zaXplXGZQID0gMCIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbG9va3VwX2NhY2hlX3NpemVcZlAgPSAwIgorLlJJICJcZkJzdWJ0cmVlX2NvbnRleHRfY2FjaGVcZlAgKiBcZkJjb250ZXh0X3N1YnRyZWVzXGZQID0gTlVMTCIKIC5icgogLnRpIC0xYwogLlJJICJpbnQgXGZCZXh0ZXJuYWxfc2lnbmFsX3NjaGVkdWxlZFxmUCBbTlVNX0VYVEVSTkFMX1NJR1NdIgpAQCAtMjI2LDcgKzIyNiw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTMyMyBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTQ3NSBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCiAuU1MgImludCBuZXRzbm1wX2dldF9sb29rdXBfY2FjaGVfc2l6ZSAodm9pZCkiCiAuUFAKIHJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgbG9va3VwIGNhY2hlIHNpemUgXGZCUmV0dXJuczpcZlAKQEAgLTIzNiw3ICsyMzYsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzOTYgb2YgZmlsZSBhZ2VudF9yZWdpc3RyeS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExOCBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCiAuU1MgInZvaWQgbmV0c25tcF9zZXRfbG9va3VwX2NhY2hlX3NpemUgKGludCBuZXdzaXplKSIKIC5QUAogc2V0IHRoZSBsb29rdXAgY2FjaGUgc2l6ZSBmb3Igb3B0aW1pemVkIGFnZW50IHJlZ2lzdHJhdGlvbiBwZXJmb3JtYW5jZS4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTI0Niw3ICsyNDYsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzODMgb2YgZmlsZSBhZ2VudF9yZWdpc3RyeS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEwNSBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCiAuU1MgImludCB1bnJlZ2lzdGVyX21pYl9jb250ZXh0IChvaWQgKiBuYW1lLCBzaXplX3QgbGVuLCBpbnQgcHJpb3JpdHksIGludCByYW5nZV9zdWJpZCwgb2lkIHJhbmdlX3Vib3VuZCwgY29uc3QgY2hhciAqIGNvbnRleHQpIgogLlBQCiBVbnJlZ2lzdGVycyBhbiBPSUQgdGhhdCBoYXMgYW4gYXNzb2NpYXRlZCBjb250ZXh0IG5hbWUgdmFsdWUuIFR5cGljYWxseSB1c2VkIHdoZW4gYSBcZkJtb2R1bGVcZlAgaGFzIG11bHRpcGxlIGNvbnRleHRzIGRlZmluZWQuIFRoZSBwYXJhbWV0ZXJzIHByaW9yaXR5LCByYW5nZV9zdWJpZCwgYW5kIHJhbmdlX3Vib3VuZCBzaG91bGQgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGFnZW50eCwgc2VlIFJGQyAyNzQxLCBvdGhlcndpc2UgdGhlc2UgdmFsdWVzIHNob3VsZCBhbHdheXMgYmUgMC4KQEAgLTI3Miw3ICsyNzIsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk2OSBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTEyMSBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zIGIvbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zCmluZGV4IDViNTE3MWQuLmQzNjI2MTcgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2FnZW50X3RyYXAuMworKysgYi9tYW4vbmV0c25tcF9hZ2VudF90cmFwLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIlRyYXAgZ2VuZXJhdGlvbiByb3V0aW5lcyBmb3IgbWliIG1vZHVsZXMgdG8gdXNlIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIlRyYXAgZ2VuZXJhdGlvbiByb3V0aW5lcyBmb3IgbWliIG1vZHVsZXMgdG8gdXNlIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC03NCw2ICs3NCw5IEBACiAuUkkgInZvaWQgXGZCc2VuZF90cmFwX3ZhcnNcZlAgKGludCB0cmFwLCBpbnQgc3BlY2lmaWMsIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFycykiCiAuYnIKIC50aSAtMWMKKy5SSSAidm9pZCBcZkJzZW5kX3RyYXBfdmFyc193aXRoX2NvbnRleHRcZlAgKGludCB0cmFwLCBpbnQgc3BlY2lmaWMsIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFycywgY2hhciAqY29udGV4dCkiCisuYnIKKy50aSAtMWMKIC5SSSAidm9pZCBcZkJzZW5kX2Vhc3lfdHJhcFxmUCAoaW50IHRyYXAsIGludCBzcGVjaWZpYykiCiAuYnIKIC5SSSAiXGZJU2VuZHMgYW4gU05NUHYxIHRyYXAgKG9yIHRoZSBTTk1QdjIgZXF1aXZhbGVudCkgdG8gdGhlIGxpc3Qgb2YgY29uZmlndXJlZCB0cmFwIGRlc3RpbmF0aW9ucyAob3IgJ3NpbmtzJyksIHVzaW5nIHRoZSBwcm92aWRlZCB2YWx1ZXMgZm9yIHRoZSBnZW5lcmljIHRyYXAgdHlwZSBhbmQgc3BlY2lmaWMgdHJhcCB2YWx1ZS4gXGZQIgpAQCAtODIsNiArODUsMTAgQEAKIC5icgogLlJJICJcZklVc2VzIHRoZSBzdXBwbGllZCBsaXN0IG9mIFxmQnZhcmlhYmxlXGZQIGJpbmRpbmdzIHRvIGZvcm0gYW4gU05NUHYyIHRyYXAsIHdoaWNoIGlzIHNlbnQgdG8gU05NUHYyLWNhcGFibGUgc2lua3Mgb24gdGhlIGNvbmZpZ3VyZWQgbGlzdC4gXGZQIgogLnRpIC0xYworLlJJICJ2b2lkIFxmQnNlbmRfdjN0cmFwXGZQIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKnZhcnMsIGNoYXIgKmNvbnRleHQpIgorLmJyCisuUkkgIlxmSVNpbWlsYXIgdG8gXGZCc2VuZF92MnRyYXAoKVxmUCwgd2l0aCB0aGUgYWRkZWQgYWJpbGl0eSB0byBzcGVjaWZ5IGEgY29udGV4dC4gXGZQIgorLnRpIC0xYwogLlJJICJ2b2lkIFxmQnNlbmRfdHJhcF9wZHVcZlAgKFxmQm5ldHNubXBfcGR1XGZQICpwZHUpIgogLmJyCiAudGkgLTFjCkBAIC0xODIsNyArMTg5LDcgQEAKIC5SSSAiY2hhciAqIFxmQnNubXBfdHJhcGNvbW11bml0eVxmUCA9IE5VTEwiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQnNubXBfZW5hYmxlYXV0aGVudHJhcHNcZlAgPSBTTk1QX0FVVEhFTlRJQ0FURURfVFJBUFNfRElTQUJMRUQiCisuUkkgImxvbmcgXGZCc25tcF9lbmFibGVhdXRoZW50cmFwc1xmUCA9IFNOTVBfQVVUSEVOVElDQVRFRF9UUkFQU19ESVNBQkxFRCIKIC5icgogLnRpIC0xYwogLlJJICJpbnQgXGZCc25tcF9lbmFibGVhdXRoZW50cmFwc3NldFxmUCA9IDAiCkBAIC0xOTQsNyArMjAxLDcgQEAKIC5QUAogQ2FwdHVyZXMgcmVzcG9uc2VzIG9yIHRoZSBsYWNrIHRoZXJlIG9mIGZyb20gSU5GT1JNcyB0aGF0IHdlcmUgc2VudCAxKSBhIHJlc3BvbnNlIGlzIHJlY2VpdmVkIGZyb20gYW4gSU5GT1JNIDIpIG9uZSBpc24ndCByZWNlaXZlZCBhbmQgdGhlIHJldHJpZXMvdGltZW91dHMgaGF2ZSBmYWlsZWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODUwIG9mIGZpbGUgYWdlbnRfdHJhcC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg3NSBvZiBmaWxlIGFnZW50X3RyYXAuYy4KIC5TUyAiaW50IG5ldHNubXBfc2VuZF90cmFwcyAoaW50IHRyYXAsIGludCBzcGVjaWZpYywgb2lkICogZW50ZXJwcmlzZSwgaW50IGVudGVycHJpc2VfbGVuZ3RoLCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXJzLCBjaGFyICogY29udGV4dCwgaW50IGZsYWdzKSIKIC5QUAogVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIG1ha2UgYSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGdlbmVyaWMgdHJhcHMgZnJvbSBkaWZmZXJlbnQgY2xhc3NlcyBvZiBlcXVpcG1lbnQuIEZvciBleGFtcGxlLCB5b3UgbWF5IHdhbnQgdG8gaGFuZGxlIGEgU05NUF9UUkFQX0xJTktET1dOIHRyYXAgZm9yIGEgcGFydGljdWxhciBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbWFubmVyIHRvIGEgZ2VuZXJpYyBzeXN0ZW0gU05NUF9UUkFQX0xJTktET1dOIHRyYXAuCkBAIC0yNDUsNyArMjUyLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2Mjkgb2YgZmlsZSBhZ2VudF90cmFwLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjMyIG9mIGZpbGUgYWdlbnRfdHJhcC5jLgogLlNTICJ2b2lkIHNlbmRfZWFzeV90cmFwIChpbnQgdHJhcCwgaW50IHNwZWNpZmljKSIKIC5QUAogU2VuZHMgYW4gU05NUHYxIHRyYXAgKG9yIHRoZSBTTk1QdjIgZXF1aXZhbGVudCkgdG8gdGhlIGxpc3Qgb2YgY29uZmlndXJlZCB0cmFwIGRlc3RpbmF0aW9ucyAob3IgJ3NpbmtzJyksIHVzaW5nIHRoZSBwcm92aWRlZCB2YWx1ZXMgZm9yIHRoZSBnZW5lcmljIHRyYXAgdHlwZSBhbmQgc3BlY2lmaWMgdHJhcCB2YWx1ZS4gVGhpcyBmdW5jdGlvbiBldmVudHVhbGx5IGNhbGxzIHNlbmRfZW50ZXJwcmlzZV90cmFwX3ZhcnMuIElmIHRoZSB0cmFwIHR5cGUgaXMgbm90IHNldCB0byBTTk1QX1RSQVBfRU5URVJQUklTRVNQRUNJRklDIHRoZSBlbnRlcnByaXNlIGFuZCBlbnRlcnByaXNlX2xlbmd0aCBwYXJhbWF0ZXIgaXMgc2V0IHRvIHRoZSBwcmUgZGVmaW5lZCBORVRTTk1QX1NZU1RFTV9NSUIgb2lkIGFuZCBsZW5ndGggcmVzcGVjdGl2ZWx5LiBJZiB0aGUgdHJhcCB0eXBlIGlzIHNldCB0byBTTk1QX1RSQVBfRU5URVJQUklTRVNQRUNJRklDIHRoZSBlbnRlcnByaXNlIGFuZCBlbnRlcnByaXNlX2xlbmd0aCBwYXJhbWV0ZXJzIGFyZSBzZXQgdG8gdGhlIHByZS1kZWZpbmVkIE5FVFNOTVBfTk9USUZJQ0FUSU9OX01JQiBvaWQgYW5kIGxlbmd0aCByZXNwZWN0aXZlbHkuCkBAIC0yNzEsNyArMjc4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA5Nzggb2YgZmlsZSBhZ2VudF90cmFwLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTAxOCBvZiBmaWxlIGFnZW50X3RyYXAuYy4KIC5TUyAidm9pZCBzZW5kX3YydHJhcCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFycykiCiAuUFAKIFVzZXMgdGhlIHN1cHBsaWVkIGxpc3Qgb2YgXGZCdmFyaWFibGVcZlAgYmluZGluZ3MgdG8gZm9ybSBhbiBTTk1QdjIgdHJhcCwgd2hpY2ggaXMgc2VudCB0byBTTk1QdjItY2FwYWJsZSBzaW5rcyBvbiB0aGUgY29uZmlndXJlZCBsaXN0LiBBbiBlcXVpdmFsZW50IElORk9STSBpcyBzZW50IHRvIHRoZSBjb25maWd1cmVkIGxpc3Qgb2YgaW5mb3JtIHNpbmtzLiBTaW5rcyB0aGF0IGNhbiBvbmx5IGhhbmRsZSBTTk1QdjEgdHJhcHMgYXJlIHNraXBwZWQuCkBAIC0zMDEsNyArMzA4LDMxIEBACiAuaW4gKzFjCiBcZkJub3RpZmljYXRpb24uY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEwMDcgb2YgZmlsZSBhZ2VudF90cmFwLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTA0NyBvZiBmaWxlIGFnZW50X3RyYXAuYy4KKy5TUyAidm9pZCBzZW5kX3YzdHJhcCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFycywgY2hhciAqIGNvbnRleHQpIgorLlBQCitTaW1pbGFyIHRvIFxmQnNlbmRfdjJ0cmFwKClcZlAsIHdpdGggdGhlIGFkZGVkIGFiaWxpdHkgdG8gc3BlY2lmeSBhIGNvbnRleHQuIElmIHRoZSBsYXN0IHBhcmFtZXRlciBpcyBOVUxMLCB0aGVuIHRoaXMgY2FsbCBpcyBlcXVpdmFsZW50IHRvIFxmQnNlbmRfdjJ0cmFwKClcZlAuCisuUFAKK1xmQlBhcmFtZXRlcnM6XGZQCisuUlMgNAorXGZJdmFyc1xmUCBpcyB1c2VkIHRvIHN1cHBseSB0aGUgbGlzdCBvZiBcZkJ2YXJpYWJsZVxmUCBiaW5kaW5ncyBmb3IgdGhlIHRyYXAuCisuYnIKK1xmSWNvbnRleHRcZlAgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjb250ZXh0IG9mIHRoZSB0cmFwLgorLlJFCisuUFAKK1xmQlJldHVybnM6XGZQCisuUlMgNAordm9pZAorLlJFCisuUFAKK1xmQlNlZSBhbHNvOlxmUAorLlJTIDQKK1xmQnNlbmRfdjJ0cmFwXGZQIAorLlJFCisuUFAKKworLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgMTA2NCBvZiBmaWxlIGFnZW50X3RyYXAuYy4KIC5TSCAiVmFyaWFibGUgRG9jdW1lbnRhdGlvbiIKIC5QUCAKIC5TUyAib2lkIHNubXB0cmFwZW50ZXJwcmlzZV9vaWRbXSJcZkJJbml0aWFsIHZhbHVlOlxmUApAQCAtMzExLDcgKzM0Miw3IEBACiAgICAgeyBTTk1QVjJfVFJBUF9PQkpTX1BSRUZJWCwgMywgMCB9CiAuZmkKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk5IG9mIGZpbGUgYWdlbnRfdHJhcC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEwMCBvZiBmaWxlIGFnZW50X3RyYXAuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zIGIvbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMwppbmRleCBhNTJkNWIwLi5lYjg2NmQ1IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zCisrKyBiL21hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMKQEAgLTEsNCArMSw0IEBACi0uVEggImFzbjEgcGFyc2luZyBhbmQgZGF0YXR5cGUgbWFuaXB1bGF0aW9uIHJvdXRpbmVzLiIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJhc24xIHBhcnNpbmcgYW5kIGRhdGF0eXBlIG1hbmlwdWxhdGlvbiByb3V0aW5lcy4iIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMyBiL21hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMwppbmRleCBmYTg3NGJiLi4xZWU0ZTYwIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMKKysrIGIvbWFuL25ldHNubXBfYmFieV9zdGVwcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJiYWJ5X3N0ZXBzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggImJhYnlfc3RlcHMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zIGIvbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMKaW5kZXggOWQyODIyMC4uNjJiNDdmZCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMKKysrIGIvbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMKQEAgLTEsNCArMSw0IEBACi0uVEggImJ1bGtfdG9fbmV4dCIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJidWxrX3RvX25leHQiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTM2LDE3ICszNiwxNyBAQAogLlBQCiB0YWtlcyBhbnN3ZXJlZCByZXF1ZXN0cyBhbmQgZGVjcmVtZW50cyB0aGUgcmVwZWF0IGNvdW50IGFuZCB1cGRhdGVzIHRoZSByZXF1ZXN0cyB0byB0aGUgbmV4dCB0by1kbyB2YXJiaW5kIGluIHRoZSBsaXN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDIgb2YgZmlsZSBidWxrX3RvX25leHQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNiBvZiBmaWxlIGJ1bGtfdG9fbmV4dC5jLgogLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX2dldF9idWxrX3RvX25leHRfaGFuZGxlciAodm9pZCkiCiAuUFAKIHJldHVybnMgYSBidWxrX3RvX25leHQgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNyBvZiBmaWxlIGJ1bGtfdG9fbmV4dC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIxIG9mIGZpbGUgYnVsa190b19uZXh0LmMuCiAuU1MgInZvaWQgbmV0c25tcF9pbml0X2J1bGtfdG9fbmV4dF9oZWxwZXIgKHZvaWQpIgogLlBQCiBpbml0aWFsaXplcyB0aGUgYnVsa190b19uZXh0IGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIGJ1bGtfdG9fbmV4dCBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzOSBvZiBmaWxlIGJ1bGtfdG9fbmV4dC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEzMyBvZiBmaWxlIGJ1bGtfdG9fbmV4dC5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMyBiL21hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMwppbmRleCBiNTNiYjgxLi5lMGE5YWQwIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMKKysrIGIvbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJjYWNoZV9oYW5kbGVyIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggImNhY2hlX2hhbmRsZXIiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTE0LDE0ICsxNCwxOCBAQAogLmJyCiAuUkkgIlxmSWdldCBjYWNoZSBoZWFkIFxmUCIKIC50aSAtMWMKLS5SSSAiXGZCbmV0c25tcF9jYWNoZVxmUCAqIFxmQm5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWRcZlAgKG9pZCAqcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKKy5SSSAiXGZCbmV0c25tcF9jYWNoZVxmUCAqIFxmQm5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWRcZlAgKGNvbnN0IG9pZCAqcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKIC5icgogLlJJICJcZklmaW5kIGV4aXN0aW5nIGNhY2hlIFxmUCIKIC50aSAtMWMKLS5SSSAiXGZCbmV0c25tcF9jYWNoZVxmUCAqIFxmQm5ldHNubXBfY2FjaGVfY3JlYXRlXGZQIChpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqbG9hZF9ob29rLCBOZXRzbm1wQ2FjaGVGcmVlICpmcmVlX2hvb2ssIG9pZCAqcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKKy5SSSAiXGZCbmV0c25tcF9jYWNoZVxmUCAqIFxmQm5ldHNubXBfY2FjaGVfY3JlYXRlXGZQIChpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqbG9hZF9ob29rLCBOZXRzbm1wQ2FjaGVGcmVlICpmcmVlX2hvb2ssIGNvbnN0IG9pZCAqcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKIC5icgogLlJJICJcZklyZXR1cm5zIGEgY2FjaGUgXGZQIgogLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9jYWNoZV9mcmVlXGZQIChcZkJuZXRzbm1wX2NhY2hlXGZQICpjYWNoZSkiCisuYnIKKy5SSSAiXGZJZnJlZXMgYSBjYWNoZSBcZlAiCisudGkgLTFjCiAuUkkgInVuc2lnbmVkIGludCBcZkJuZXRzbm1wX2NhY2hlX3RpbWVyX3N0YXJ0XGZQIChcZkJuZXRzbm1wX2NhY2hlXGZQICpjYWNoZSkiCiAuYnIKIC5SSSAiXGZJc3RhcnRzIHRoZSByZWN1cnJpbmcgY2FjaGVfbG9hZCBjYWxsYmFjayBcZlAiCkBAIC0zNCw3ICszOCw3IEBACiAuYnIKIC5SSSAiXGZJcmV0dXJucyBhIGNhY2hlIGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIGhhbmRsZXIgY2hhaW4uIFxmUCIKIC50aSAtMWMKLS5SSSAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIFxmQm5ldHNubXBfZ2V0X2NhY2hlX2hhbmRsZXJcZlAgKGludCB0aW1lb3V0LCBOZXRzbm1wQ2FjaGVMb2FkICpsb2FkX2hvb2ssIE5ldHNubXBDYWNoZUZyZWUgKmZyZWVfaG9vaywgb2lkICpyb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pIgorLlJJICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogXGZCbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlclxmUCAoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKmxvYWRfaG9vaywgTmV0c25tcENhY2hlRnJlZSAqZnJlZV9ob29rLCBjb25zdCBvaWQgKnJvb3RvaWQsIGludCByb290b2lkX2xlbikiCiAuYnIKIC5SSSAiXGZJcmV0dXJucyBhIGNhY2hlIGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIGhhbmRsZXIgY2hhaW4uIFxmUCIKIC50aSAtMWMKQEAgLTk1LDcgKzk5LDcgQEAKIC5QUAogVG8gbWluaW16ZSByZXNvdXJjZSB1c2UgYnkgdGhlIGFnZW50LCBhIHBlcmlvZGljIGNhbGxiYWNrIGNoZWNrcyBmb3IgZXhwaXJlZCBjYWNoZXMsIGFuZCB3aWxsIGNhbGwgdGhlIGZyZWVfY2FjaGUgZnVuY3Rpb24gZm9yIGFueSBleHBpcmVkIGNhY2hlLgogLlBQCi1UaGUgbG9hZF9jYWNoZSByb3V0ZSBzaG91bGQgcmV0dXJuIGEgbmVnYXRpdmUgbnVtYmVyIGlmIHRoZSBjYWNoZSB3YXMgbm90IHN1Y2Nlc3NmdWxseSBsb2FkZWQuIDAgb3IgYW55IHBvc2l0aXZlIG51bWJlciBpbmRpY2F0ZXMgc3VjY2Vzc3MuCitUaGUgbG9hZF9jYWNoZSByb3V0aW5lIHNob3VsZCByZXR1cm4gYSBuZWdhdGl2ZSBudW1iZXIgaWYgdGhlIGNhY2hlIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IGxvYWRlZC4gMCBvciBhbnkgcG9zaXRpdmUgbnVtYmVyIGluZGljYXRlcyBzdWNjZXNzcy4KIC5QUAogU2V2ZXJhbCBmbGFncyBjYW4gYmUgc2V0IHRvIGFmZmVjdCB0aGUgb3BlcmF0aW9ucyBvbiB0aGUgY2FjaGUuCiAuUFAKQEAgLTEyNiwzNyArMTMwLDQyIEBACiAuUFAKIFJlbG9hZCB0aGUgY2FjaGUgaWYgcmVxdWlyZWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzg1IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQyOSBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KIC5TUyAiaW50IG5ldHNubXBfY2FjaGVfY2hlY2tfZXhwaXJlZCAoXGZCbmV0c25tcF9jYWNoZVxmUCAqIGNhY2hlKSIKIC5QUAogQ2hlY2sgaWYgdGhlIGNhY2hlIHRpbWVvdXQgaGFzIHBhc3NlZC4gU2V0cyBhbmQgcmV0dXJuIHRoZSBleHBpcmVkIGZsYWcuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzcwIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgotLlNTICJcZkJuZXRzbm1wX2NhY2hlXGZQKiBuZXRzbm1wX2NhY2hlX2NyZWF0ZSAoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssIE5ldHNubXBDYWNoZUZyZWUgKiBmcmVlX2hvb2ssIG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbikiCitEZWZpbml0aW9uIGF0IGxpbmUgNDE0IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorLlNTICJcZkJuZXRzbm1wX2NhY2hlXGZQKiBuZXRzbm1wX2NhY2hlX2NyZWF0ZSAoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssIE5ldHNubXBDYWNoZUZyZWUgKiBmcmVlX2hvb2ssIGNvbnN0IG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbikiCiAuUFAKIHJldHVybnMgYSBjYWNoZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzNiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KLS5TUyAiXGZCbmV0c25tcF9jYWNoZVxmUCogbmV0c25tcF9jYWNoZV9maW5kX2J5X29pZCAob2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKK0RlZmluaXRpb24gYXQgbGluZSAxNDYgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCisuU1MgIlxmQm5ldHNubXBfY2FjaGVcZlAqIG5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWQgKGNvbnN0IG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbikiCiAuUFAKIGZpbmQgZXhpc3RpbmcgY2FjaGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjAgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTMwIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorLlNTICJpbnQgbmV0c25tcF9jYWNoZV9mcmVlIChcZkJuZXRzbm1wX2NhY2hlXGZQICogY2FjaGUpIgorLlBQCitmcmVlcyBhIGNhY2hlIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgMTg5IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJcZkJuZXRzbm1wX2NhY2hlXGZQKiBuZXRzbm1wX2NhY2hlX2dldF9oZWFkICh2b2lkKSIKIC5QUAogZ2V0IGNhY2hlIGhlYWQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMTIgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTIyIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0IChcZkJuZXRzbm1wX2NhY2hlXGZQICogY2FjaGUpIgogLlBQCiByZXR1cm5zIGEgY2FjaGUgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNDcgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjkxIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJpbnQgbmV0c25tcF9jYWNoZV9oYW5kbGVyX3JlZ2lzdGVyIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9jYWNoZVxmUCAqIGNhY2hlKSIKIC5QUAogZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGFzIGNhbGxpbmcgXGZCbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKClcZlAgYnV0IGFsc28gaW5qZWN0cyBhIGNhY2hlIGhhbmRsZXIgYXQgdGhlIHNhbWUgdGltZSBmb3IgeW91LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI5NSBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzMzkgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgImludCBuZXRzbm1wX2NhY2hlX2hlbHBlcl9oYW5kbGVyIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0cykiCiAuUFAKIEltcGxlbWVudHMgdGhlIGNhY2hlIGhhbmRsZXIuIApAQCAtMTY3LDU5ICsxNzYsNTkgQEAKIC5QUAogbmV4dCBoYW5kbGVyIGNhbGxlZCBhdXRvbWF0aWNhbGx5IC0gJ0FVVE9fTkVYVCcgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0MjAgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDY0IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJpbnQgbmV0c25tcF9jYWNoZV9pc192YWxpZCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBjb25zdCBjaGFyICogbmFtZSkiCiAuUFAKIElzIHRoZSBjYWNoZSB2YWxpZCBmb3IgYSBnaXZlbiByZXF1ZXN0PyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQwMiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NDYgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgIlxmQm5ldHNubXBfY2FjaGVcZlAqIG5ldHNubXBfY2FjaGVfcmVxaW5mb19leHRyYWN0IChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIGNvbnN0IGNoYXIgKiBuYW1lKSIKIC5QUAogRXh0cmFjdCB0aGUgY2FjaGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gcmVxdWVzdCAoUERVKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNTAgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzk0IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJ2b2lkIG5ldHNubXBfY2FjaGVfcmVxaW5mb19pbnNlcnQgKFxmQm5ldHNubXBfY2FjaGVcZlAgKiBjYWNoZSwgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBjb25zdCBjaGFyICogbmFtZSkiCiAuUFAKIEluc2VydCB0aGUgY2FjaGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gcmVxdWVzdCAoUERVKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMzMgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzc3IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJ1bnNpZ25lZCBpbnQgbmV0c25tcF9jYWNoZV90aW1lcl9zdGFydCAoXGZCbmV0c25tcF9jYWNoZVxmUCAqIGNhY2hlKSIKIC5QUAogc3RhcnRzIHRoZSByZWN1cnJpbmcgY2FjaGVfbG9hZCBjYWxsYmFjayAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5MSBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyMzUgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgInZvaWQgbmV0c25tcF9jYWNoZV90aW1lcl9zdG9wIChcZkJuZXRzbm1wX2NhY2hlXGZQICogY2FjaGUpIgogLlBQCiBzdG9wcyB0aGUgcmVjdXJyaW5nIGNhY2hlX2xvYWQgY2FsbGJhY2sgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjYgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjcwIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJcZkJuZXRzbm1wX2NhY2hlXGZQKiBuZXRzbm1wX2V4dHJhY3RfY2FjaGVfaW5mbyAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvKSIKIC5QUAogRXh0cmFjdCB0aGUgY2FjaGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gcmVxdWVzdCAoUERVKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNjIgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCi0uU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X2NhY2hlX2hhbmRsZXIgKGludCB0aW1lb3V0LCBOZXRzbm1wQ2FjaGVMb2FkICogbG9hZF9ob29rLCBOZXRzbm1wQ2FjaGVGcmVlICogZnJlZV9ob29rLCBvaWQgKiByb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pIgorRGVmaW5pdGlvbiBhdCBsaW5lIDQwNiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KKy5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlciAoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssIE5ldHNubXBDYWNoZUZyZWUgKiBmcmVlX2hvb2ssIGNvbnN0IG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbikiCiAuUFAKIHJldHVybnMgYSBjYWNoZSBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI3NiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzMjAgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgImludCBuZXRzbm1wX2lzX2NhY2hlX3ZhbGlkIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8pIgogLlBQCiBJcyB0aGUgY2FjaGUgdmFsaWQgZm9yIGEgZ2l2ZW4gcmVxdWVzdD8gZm9yIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5LiBmb3IgYmFja3dhcmRzIGNvbXBhdAogLlBQCiBcZkJuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkKClcZlAgaXMgcHJlZmVycmVkLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQxMyBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NTcgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX2NhY2hlX2hhbmRsZXIgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqIGxvYWRfaG9vaywgTmV0c25tcENhY2hlRnJlZSAqIGZyZWVfaG9vaykiCiAuUFAKIGZ1bmN0aW9uYWxseSB0aGUgc2FtZSBhcyBjYWxsaW5nIFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcigpXGZQIGJ1dCBhbHNvIGluamVjdHMgYSBjYWNoZSBoYW5kbGVyIGF0IHRoZSBzYW1lIHRpbWUgZm9yIHlvdS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMDggb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzUyIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJ2b2lkIHJlbGVhc2VfY2FjaGVkX3Jlc291cmNlcyAodW5zaWduZWQgaW50IHJlZ05vLCB2b2lkICogY2xpZW50YXJncykiCiAuUFAKIHJ1biByZWd1bGFybHkgdG8gYXV0b21hdGljYWxseSByZWxlYXNlIGNhY2hlZCByZXNvdXJjZXMuIHh4eCAtIG1ldGhvZCB0byBwcmV2ZW50IGNhY2hlIGZyb20gZXhwaXJpbmcgd2hpbGUgYSByZXF1ZXN0IGlzIGJlaW5nIHByb2Nlc3NlZCAoZS5nLiBkZWxlZ2F0ZWQgcmVxdWVzdCkuIHByb3Bvc2FsOiBzZXQgYSBmbGFnLCB3aGljaCB3b3VsZCBiZSBjbGVhcmVkIHdoZW4gcmVxdWVzdCBmaW5pc2hlZCAod2hpY2ggY291bGQgYmUgYWNvbXBsaXNoZWQgYnkgYSBkdW1teSBkYXRhIGxpc3QgaXRlbSBpbiBhZ2VudCByZXEgaW5mbyAmIGN1c3RvbSBmcmVlIGZ1bmN0aW9uKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1ODEgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjIzIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2NhbGxiYWNrLjMgYi9tYW4vbmV0c25tcF9jYWxsYmFjay4zCmluZGV4IGNmZWVjODkuLmU2OTFhYjggMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2NhbGxiYWNrLjMKKysrIGIvbWFuL25ldHNubXBfY2FsbGJhY2suMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiQSBnZW5lcmljIGNhbGxiYWNrIG1lY2hhbmlzbSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJBIGdlbmVyaWMgY2FsbGJhY2sgbWVjaGFuaXNtIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9jb250YWluZXIuMyBiL21hbi9uZXRzbm1wX2NvbnRhaW5lci4zCmluZGV4IGIyZjQxNGQuLmY3NWJlNGMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2NvbnRhaW5lci4zCisrKyBiL21hbi9uZXRzbm1wX2NvbnRhaW5lci4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJjb250YWluZXIiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiY29udGFpbmVyIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMyBiL21hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZmNmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMwpAQCAtMCwwICsxLDQzIEBACisuVEggIkNvbnRhaW5lcl9pdGVyYXRvciIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuYWQgbAorLm5oCisuU0ggTkFNRQorQ29udGFpbmVyX2l0ZXJhdG9yIFwtIAorLlNTICJUeXBlZGVmcyIKKworLmluICsxYworLnRpIC0xYworLlJJICJ0eXBlZGVmIGludCggXGZCTmV0c25tcF9JdGVyYXRvcl9Mb29wX0tleVxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqbG9vcF9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmtleSkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfTG9vcF9EYXRhXGZQICkodm9pZCAqaXRlcmF0b3JfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICpsb29wX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqZGF0YSkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfQ3R4XGZQICkodm9pZCAqaXRlcmF0b3JfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICpsb29wX2N0eCkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfQ3R4X0R1cFxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqbG9vcF9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmR1cF9jdHgsIGludCByZXVzZSkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfT3BcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgpIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX0RhdGFcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgsIGNvbnN0IHZvaWQgKmRhdGEpIgorLmJyCisuaW4gLTFjCisuU1MgIkZ1bmN0aW9ucyIKKworLmluICsxYworLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yX2luaXRcZlAgKHZvaWQpIgorLmJyCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfY29udGFpbmVyXGZQICogXGZCbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3JfZ2V0XGZQICh2b2lkICppdGVyYXRvcl91c2VyX2N0eCwgbmV0c25tcF9jb250YWluZXJfY29tcGFyZSAqY29tcGFyZSwgTmV0c25tcF9JdGVyYXRvcl9Mb29wX0tleSAqZ2V0X2ZpcnN0LCBOZXRzbm1wX0l0ZXJhdG9yX0xvb3BfS2V5ICpnZXRfbmV4dCwgTmV0c25tcF9JdGVyYXRvcl9Mb29wX0RhdGEgKmdldF9kYXRhLCBOZXRzbm1wX0l0ZXJhdG9yX0N0eF9EdXAgKnNhdmVfcG9zLCBOZXRzbm1wX0l0ZXJhdG9yX0N0eCAqaW5pdF9sb29wX2N0eCwgTmV0c25tcF9JdGVyYXRvcl9DdHggKmNsZWFudXBfbG9vcF9jdHgsIE5ldHNubXBfSXRlcmF0b3JfRGF0YSAqZnJlZV91c2VyX2N0eCwgaW50IHNvcnRlZCkiCisuYnIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvcl9zZXRfZGF0YV9jYlxmUCAoXGZCbmV0c25tcF9jb250YWluZXJcZlAgKmMsIE5ldHNubXBfSXRlcmF0b3JfRGF0YSAqaW5zZXJ0X2RhdGEsIE5ldHNubXBfSXRlcmF0b3JfRGF0YSAqcmVtb3ZlX2RhdGEsIE5ldHNubXBfSXRlcmF0b3JfT3AgKmdldF9zaXplKSIKKy5icgorLmluIC0xYworLlNIICJBdXRob3IiCisuUFAgCitHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMgYi9tYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZWM1ODUKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zCkBAIC0wLDAgKzEsNTQgQEAKKy5USCAiY29udGFpbmVyX2l0ZXJhdG9yLmgiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLmFkIGwKKy5uaAorLlNIIE5BTUUKK2NvbnRhaW5lcl9pdGVyYXRvci5oIFwtIAorLlNIIFNZTk9QU0lTCisuYnIKKy5QUAorXGZDI2luY2x1ZGUgJ2NvbnRhaW5lci5oJ1xmUAorLmJyCisKKy5TUyAiVHlwZWRlZnMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfTG9vcF9LZXlcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmxvb3BfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICprZXkpIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX0xvb3BfRGF0YVxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqbG9vcF9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmRhdGEpIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX0N0eFxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqbG9vcF9jdHgpIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX0N0eF9EdXBcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmxvb3BfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICpkdXBfY3R4LCBpbnQgcmV1c2UpIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX09wXGZQICkodm9pZCAqaXRlcmF0b3JfY3R4KSIKKy5icgorLnRpIC0xYworLlJJICJ0eXBlZGVmIGludCggXGZCTmV0c25tcF9JdGVyYXRvcl9EYXRhXGZQICkodm9pZCAqaXRlcmF0b3JfY3R4LCBjb25zdCB2b2lkICpkYXRhKSIKKy5icgorLmluIC0xYworLlNTICJGdW5jdGlvbnMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvcl9pbml0XGZQICh2b2lkKSIKKy5icgorLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCAqIFxmQm5ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yX2dldFxmUCAodm9pZCAqaXRlcmF0b3JfdXNlcl9jdHgsIG5ldHNubXBfY29udGFpbmVyX2NvbXBhcmUgKmNvbXBhcmUsIE5ldHNubXBfSXRlcmF0b3JfTG9vcF9LZXkgKmdldF9maXJzdCwgTmV0c25tcF9JdGVyYXRvcl9Mb29wX0tleSAqZ2V0X25leHQsIE5ldHNubXBfSXRlcmF0b3JfTG9vcF9EYXRhICpnZXRfZGF0YSwgTmV0c25tcF9JdGVyYXRvcl9DdHhfRHVwICpzYXZlX3BvcywgTmV0c25tcF9JdGVyYXRvcl9DdHggKmluaXRfbG9vcF9jdHgsIE5ldHNubXBfSXRlcmF0b3JfQ3R4ICpjbGVhbnVwX2xvb3BfY3R4LCBOZXRzbm1wX0l0ZXJhdG9yX0RhdGEgKmZyZWVfdXNlcl9jdHgsIGludCBzb3J0ZWQpIgorLmJyCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3Jfc2V0X2RhdGFfY2JcZlAgKFxmQm5ldHNubXBfY29udGFpbmVyXGZQICpjLCBOZXRzbm1wX0l0ZXJhdG9yX0RhdGEgKmluc2VydF9kYXRhLCBOZXRzbm1wX0l0ZXJhdG9yX0RhdGEgKnJlbW92ZV9kYXRhLCBOZXRzbm1wX0l0ZXJhdG9yX09wICpnZXRfc2l6ZSkiCisuYnIKKy5pbiAtMWMKKy5TSCAiRGV0YWlsZWQgRGVzY3JpcHRpb24iCisuUFAgCisKKy5QUAorRGVmaW5pdGlvbiBpbiBmaWxlIFxmQmNvbnRhaW5lcl9pdGVyYXRvci5oXGZQLgorLlNIICJBdXRob3IiCisuUFAgCitHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2RhdGFfbGlzdC4zIGIvbWFuL25ldHNubXBfZGF0YV9saXN0LjMKaW5kZXggMGVjY2FmZS4uY2NhMTA4YSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfZGF0YV9saXN0LjMKKysrIGIvbWFuL25ldHNubXBfZGF0YV9saXN0LjMKQEAgLTEsNCArMSw0IEBACi0uVEggImdlbmVyaWMgbGlua2VkLWxpc3QgZGF0YSBoYW5kbGluZyB3aXRoIGEgc3RyaW5nIGFzIGEga2V5LiIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJnZW5lcmljIGxpbmtlZC1saXN0IGRhdGEgaGFuZGxpbmcgd2l0aCBhIHN0cmluZyBhcyBhIGtleS4iIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTE5LDExICsxOSwxMSBAQAogLmJyCiAuUkkgIlxmSWFkZHMgY3JlYXRlcyBhIGRhdGFfbGlzdCBcZkJub2RlXGZQIGdpdmVuIGEgbmFtZSwgZGF0YSBhbmQgYSBmcmVlIGZ1bmN0aW9uIHB0ci4gXGZQIgogLnRpIC0xYwotLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfYWRkX2xpc3RfZGF0YVxmUCAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKipoZWFkLCBcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqXGZCbm9kZVxmUCkiCisuUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGVcZlAgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICoqaGVhZCwgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKlxmQm5vZGVcZlApIgogLmJyCiAuUkkgIlxmSWFkZHMgZGF0YSB0byBhIGRhdGFsaXN0IFxmUCIKIC50aSAtMWMKLS5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2RhdGFfbGlzdF9hZGRfbm9kZVxmUCAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKipoZWFkLCBcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqXGZCbm9kZVxmUCkiCisuUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9hZGRfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqKmhlYWQsIFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICpcZkJub2RlXGZQKSIKIC5icgogLlJJICJcZklhZGRzIGRhdGEgdG8gYSBkYXRhbGlzdCBcZlAiCiAudGkgLTFjCkBAIC03OSw3ICs3OSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODcgb2YgZmlsZSBkYXRhX2xpc3QuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjEgb2YgZmlsZSBkYXRhX2xpc3QuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAqIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdCAoY29uc3QgY2hhciAqIG5hbWUsIHZvaWQgKiBkYXRhLCBOZXRzbm1wX0ZyZWVfTGlzdF9EYXRhICogYmVlcikiCiAuUFAKIGFkZHMgY3JlYXRlcyBhIGRhdGFfbGlzdCBcZkJub2RlXGZQIGdpdmVuIGEgbmFtZSwgZGF0YSBhbmQgYSBmcmVlIGZ1bmN0aW9uIHB0ci4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTEwMiw3ICsxMDIsNyBAQAogLmluICsxYwogXGZCZGVsYXllZF9pbnN0YW5jZS5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjAgb2YgZmlsZSBkYXRhX2xpc3QuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1MyBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJORVRTTk1QX0lOTElORSBcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCogbmV0c25tcF9kYXRhX2xpc3RfYWRkX2RhdGEgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICoqIGhlYWQsIGNvbnN0IGNoYXIgKiBuYW1lLCB2b2lkICogZGF0YSwgTmV0c25tcF9GcmVlX0xpc3RfRGF0YSAqIGJlZXIpIgogLlBQCiBhZGRzIGRhdGEgdG8gYSBkYXRhbGlzdCBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtMTIzLDcgKzEyMyw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTQxIG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTM0IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGUgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICoqIGhlYWQsIFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICogbm9kZSkiCiAuUFAKIGFkZHMgZGF0YSB0byBhIGRhdGFsaXN0IFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0xMzUsNyArMTM1LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA5NyBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc4IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF9mcmVlX2FsbF9saXN0X2RhdGEgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICogaGVhZCkiCiAuUFAKIGZyZWVzIGFsbCBkYXRhIGFuZCBub2RlcyBpbiBhIGxpc3QuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0xNDUsNyArMTQ1LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0MiBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF9mcmVlX2xpc3RfZGF0YSAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKiBub2RlKSIKIC5QUAogZnJlZXMgdGhlIGRhdGEgYW5kIGEgbmFtZSBhdCBhIGdpdmVuIGRhdGFfbGlzdCBcZkJub2RlXGZQLiBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0IGZyZWUgdGhlIFxmQm5vZGVcZlAgaXRzZWxmLiAKQEAgLTE1Nyw3ICsxNTcsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI2IG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTkgb2YgZmlsZSBkYXRhX2xpc3QuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCogbmV0c25tcF9nZXRfbGlzdF9kYXRhIChcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqIGhlYWQsIGNvbnN0IGNoYXIgKiBuYW1lKSIKIC5QUAogcmV0dXJucyBhIGRhdGFfbGlzdCBub2RlJ3MgZGF0YSBmb3IgYSBnaXZlbiBuYW1lIHdpdGhpbiBhIGRhdGFfbGlzdCBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtMTc0LDcgKzE3NCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTY2IG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTU5IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfZGF0YV9saXN0XGZQKiBuZXRzbm1wX2dldF9saXN0X25vZGUgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICogaGVhZCwgY29uc3QgY2hhciAqIG5hbWUpIgogLlBQCiByZXR1cm5zIGEgZGF0YV9saXN0IFxmQm5vZGVcZlAgZm9yIGEgZ2l2ZW4gbmFtZSB3aXRoaW4gYSBkYXRhX2xpc3QgXGZCUGFyYW1ldGVyczpcZlAKQEAgLTE5MSw3ICsxOTEsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE4NCBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE3NyBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJ2b2lkIG5ldHNubXBfcmVhZF9kYXRhX2NhbGxiYWNrIChjb25zdCBjaGFyICogdG9rZW4sIGNoYXIgKiBsaW5lKSIKIC5QUAogaW50ZW5kZWQgdG8gYmUgcmVnaXN0ZXJkIGFzIGEgLmNvbmYgcGFyc2VyIEl0IHNob3VsZCBiZSByZWdpc3RlcmVkIHVzaW5nOiByZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoJ3Rva2VuJywgbmV0c25tcF9yZWFkX2RhdGFfY2FsbGJhY2ssIFhYWCkKQEAgLTIwNSw3ICsyMDUsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDMzNyBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzNSBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJ2b2lkIG5ldHNubXBfcmVnaXN0ZXJfc2F2ZV9saXN0IChcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqKiBkYXRhbGlzdCwgY29uc3QgY2hhciAqIHR5cGUsIGNvbnN0IGNoYXIgKiB0b2tlbiwgTmV0c25tcF9TYXZlX0xpc3RfRGF0YSAqIGRhdGFfbGlzdF9zYXZlX3B0ciwgTmV0c25tcF9SZWFkX0xpc3RfRGF0YSAqIGRhdGFfbGlzdF9yZWFkX3B0ciwgTmV0c25tcF9GcmVlX0xpc3RfRGF0YSAqIGRhdGFfbGlzdF9mcmVlX3B0cikiCiAuUFAKIHJlZ2lzdGVycyB0byBzdG9yZSBhIGRhdGFfbGlzdCBzZXQgb2YgZGF0YSBhdCBwZXJzaXN0ZW50IHN0b3JhZ2UgdGltZSBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtMjMyLDcgKzIzMiw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjM1IG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjI4IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgImludCBuZXRzbm1wX3JlbW92ZV9saXN0X25vZGUgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICoqIHJlYWxoZWFkLCBjb25zdCBjaGFyICogbmFtZSkiCiAuUFAKIFJlbW92ZXMgYSBuYW1lZCBcZkJub2RlXGZQIGZyb20gYSBkYXRhX2xpc3QgKGFuZCBmcmVlcyBpdCkuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0yNDksMTIgKzI0OSwxMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIwMiBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5NSBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJpbnQgbmV0c25tcF9zYXZlX2FsbF9kYXRhIChcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqIGhlYWQsIGNvbnN0IGNoYXIgKiB0eXBlLCBjb25zdCBjaGFyICogdG9rZW4sIE5ldHNubXBfU2F2ZV9MaXN0X0RhdGEgKiBkYXRhX2xpc3Rfc2F2ZV9wdHIpIgogLlBQCiBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYXMgYSBjYWxsYmFjayBkdXJpbmcgcGVyc2lzdGVudCBzYXZlIG9wZXJhdGlvbnMuIFNlZSB0aGUgbmV0c25tcF9zYXZlX2FsbF9kYXRhX2NhbGxiYWNrIGZvciB3aGVyZSB0aGlzIGlzIHR5cGljYWxseSB1c2VkLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDMwMSBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI5OSBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJpbnQgbmV0c25tcF9zYXZlX2FsbF9kYXRhX2NhbGxiYWNrIChpbnQgbWFqb3IsIGludCBtaW5vciwgdm9pZCAqIHNlcnZlcmFyZywgdm9pZCAqIGNsaWVudGFyZykiCiAuUFAKIGludGVuZGVkIHRvIGJlIHJlZ2lzdGVyZCBhcyBhIGNhbGxiYWNrIG9wZXJhdGlvbi4gSXQgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgdXNpbmc6CkBAIC0yNjMsNyArMjYzLDcgQEAKIC5QUAogd2hlcmUgSU5GT19QT0lOVEVSIGlzIGEgcG9pbnRlciB0byBhIG5ldHNubXBfZGF0YV9saXN0X3NhdmVpbmZvIG9iamVjdCBjb250YWluaW5nIGFwcG9ycHJpYXRlIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI4NCBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI4MiBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2RlYnVnLjMgYi9tYW4vbmV0c25tcF9kZWJ1Zy4zCmluZGV4IDYzYThiODkuLjQ1ZDcxMDIgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2RlYnVnLjMKKysrIGIvbWFuL25ldHNubXBfZGVidWcuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiZGVidWciIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiZGVidWciIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTI0LDMzICsyNCw2IEBACiAuYnIKIC5SSSAiXGZJaW5pdGlhbGl6ZXMgdGhlIGRlYnVnIGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIGRlYnVnIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIFxmUCIKIC5pbiAtMWMKLS5TUyAiaGFuZGxlciIKLSAKLS5pbiArMWMKLS50aSAtMWMKLS5SSSAidm9pZCBcZkJuZXRzbm1wX2luaXRfc2VyaWFsaXplXGZQICh2b2lkKSIKLS5icgotLlJJICJcZklpbml0aWFsaXplcyB0aGUgc2VyaWFsaXplIGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHNlcmlhbGl6ZSBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiBcZlAiCi0udGkgLTFjCi0uUkkgInZvaWQgXGZCbmV0c25tcF9pbml0X3JlYWRfb25seV9oZWxwZXJcZlAgKHZvaWQpIgotLmJyCi0uUkkgIlxmSWluaXRpYWxpemVzIHRoZSByZWFkX29ubHkgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgcmVhZF9vbmx5IGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIFxmUCIKLS50aSAtMWMKLS5SSSAidm9pZCBcZkJuZXRzbm1wX2luaXRfYnVsa190b19uZXh0X2hlbHBlclxmUCAodm9pZCkiCi0uYnIKLS5SSSAiXGZJaW5pdGlhbGl6ZXMgdGhlIGJ1bGtfdG9fbmV4dCBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSBidWxrX3RvX25leHQgaGFuZGxlciBhcyBhIHJ1bi10aW1lIGluamVjdGFibGUgaGFuZGxlciBmb3IgY29uZmlndXJhdGlvbiBmaWxlIHVzZS4gXGZQIgotLnRpIC0xYwotLlJJICJ2b2lkIFxmQm5ldHNubXBfaW5pdF90YWJsZV9kYXRhc2V0XGZQICh2b2lkKSIKLS5icgotLnRpIC0xYwotLlJJICJ2b2lkIFxmQm5ldHNubXBfaW5pdF9zdGFzaF9jYWNoZV9oZWxwZXJcZlAgKHZvaWQpIgotLmJyCi0uUkkgIlxmSWluaXRpYWxpemVzIHRoZSBzdGFzaF9jYWNoZSBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSBzdGFzaF9jYWNoZSBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiBcZlAiCi0udGkgLTFjCi0uUkkgInZvaWQgXGZCbmV0c25tcF9pbml0X2hlbHBlcnNcZlAgKHZvaWQpIgotLmJyCi0uUkkgIlxmSWNhbGwgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciBhbGwgaGFuZGxlcnMgd2l0aCBpbml0XyByb3V0aW5lcy4gXGZQIgotLmluIC0xYwogLlNIICJEZXRhaWxlZCBEZXNjcmlwdGlvbiIKIC5QUCAKIFByaW50IG91dCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhhbmRsZXIgY2hhaW4gYmVpbmcgY2FsbGVkLiAKQEAgLTcwLDM3ICs0MywxMiBAQAogLlBQCiByZXR1cm5zIGEgZGVidWcgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1MSBvZiBmaWxlIGRlYnVnX2hhbmRsZXIuYy4KLS5TUyAidm9pZCBuZXRzbm1wX2luaXRfYnVsa190b19uZXh0X2hlbHBlciAodm9pZCkiCi0uUFAKLWluaXRpYWxpemVzIHRoZSBidWxrX3RvX25leHQgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgYnVsa190b19uZXh0IGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAotLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTM5IG9mIGZpbGUgYnVsa190b19uZXh0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDQgb2YgZmlsZSBkZWJ1Z19oYW5kbGVyLmMuCiAuU1MgInZvaWQgbmV0c25tcF9pbml0X2RlYnVnX2hlbHBlciAodm9pZCkiCiAuUFAKIGluaXRpYWxpemVzIHRoZSBkZWJ1ZyBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSBkZWJ1ZyBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1NSBvZiBmaWxlIGRlYnVnX2hhbmRsZXIuYy4KLS5TUyAidm9pZCBuZXRzbm1wX2luaXRfaGVscGVycyAodm9pZCkiCi0uUFAKLWNhbGwgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciBhbGwgaGFuZGxlcnMgd2l0aCBpbml0XyByb3V0aW5lcy4gCi0uUFAKLURlZmluaXRpb24gYXQgbGluZSAzNiBvZiBmaWxlIGFsbF9oZWxwZXJzLmMuCi0uU1MgInZvaWQgbmV0c25tcF9pbml0X3JlYWRfb25seV9oZWxwZXIgKHZvaWQpIgotLlBQCi1pbml0aWFsaXplcyB0aGUgcmVhZF9vbmx5IGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHJlYWRfb25seSBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiAKLS5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDgxIG9mIGZpbGUgcmVhZF9vbmx5LmMuCi0uU1MgInZvaWQgbmV0c25tcF9pbml0X3NlcmlhbGl6ZSAodm9pZCkiCi0uUFAKLWluaXRpYWxpemVzIHRoZSBzZXJpYWxpemUgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgc2VyaWFsaXplIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAotLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTMgb2YgZmlsZSBzZXJpYWxpemUuYy4KLS5TUyAidm9pZCBuZXRzbm1wX2luaXRfc3Rhc2hfY2FjaGVfaGVscGVyICh2b2lkKSIKLS5QUAotaW5pdGlhbGl6ZXMgdGhlIHN0YXNoX2NhY2hlIGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHN0YXNoX2NhY2hlIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAotLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjM4IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNDggb2YgZmlsZSBkZWJ1Z19oYW5kbGVyLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zIGIvbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zCmluZGV4IDRhMzI4N2IuLjA3Y2RiNTMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMworKysgYi9tYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInN0b3JhZ2Ugc3BhY2UgZm9yIGRlZmF1bHRzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInN0b3JhZ2Ugc3BhY2UgZm9yIGRlZmF1bHRzIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC02NCw3ICs2NCw3IEBACiAuUkkgImludCBcZkJuZXRzbm1wX2RzX3JlZ2lzdGVyX3ByZW1pYlxmUCAodV9jaGFyIHR5cGUsIGNvbnN0IGNoYXIgKmZ0eXBlLCBjb25zdCBjaGFyICp0b2tlbiwgaW50IHN0b3JlaWQsIGludCB3aGljaCkiCiAuYnIKIC50aSAtMWMKLS5SSSAidm9pZCBcZkJuZXRzbm1wX2RzX3NodXRkb3duXGZQICgpIgorLlJJICJ2b2lkIFxmQm5ldHNubXBfZHNfc2h1dGRvd25cZlAgKHZvaWQpIgogLmJyCiAuaW4gLTFjCiAuU0ggIkRldGFpbGVkIERlc2NyaXB0aW9uIgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfaGFuZGxlci4zIGIvbWFuL25ldHNubXBfaGFuZGxlci4zCmluZGV4IDExY2EzYTAuLjNmMzM3NzggMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2hhbmRsZXIuMworKysgYi9tYW4vbmV0c25tcF9oYW5kbGVyLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIk5ldC1TTk1QIEFnZW50IGhhbmRsZXIgYW5kIGV4dGVuc2liaWxpdHkgQVBJIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIk5ldC1TTk1QIEFnZW50IGhhbmRsZXIgYW5kIGV4dGVuc2liaWxpdHkgQVBJIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0xNTQsMTEgKzE1NCwxMSBAQAogLmJyCiAuUkkgIlxmSWNyZWF0ZXMgYSBuZXRzbm1wX21pYl9oYW5kbGVyIHN0cnVjdHVyZSBnaXZlbiBhIG5hbWUgYW5kIGEgYWNjZXNzIG1ldGhvZC4gXGZQIgogLnRpIC0xYwotLlJJICJcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGVcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpIgorLlJJICJcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGVcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpIgogLmJyCiAuUkkgIlxmSWNyZWF0ZXMgYSBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBzdHJ1Y3R1cmUgZ2l2ZW4gYSBuYW1lLCBhIGFjY2Vzc19tZXRob2QgZnVuY3Rpb24sIGEgcmVnaXN0cmF0aW9uIGxvY2F0aW9uIG9pZCBhbmQgdGhlIG1vZGVzIHRoZSBoYW5kbGVyIHN1cHBvcnRzLiBcZlAiCiAudGkgLTFjCi0uUkkgIlxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAoY29uc3QgY2hhciAqbmFtZSwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKmhhbmRsZXJfYWNjZXNzX21ldGhvZCwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCBtb2RlcykiCisuUkkgIlxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAoY29uc3QgY2hhciAqbmFtZSwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKmhhbmRsZXJfYWNjZXNzX21ldGhvZCwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCBtb2RlcykiCiAuYnIKIC50aSAtMWMKIC5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlclxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCkBAIC0zODIsNyArMzgyLDcgQEAKIC5TUyAidm9pZCBuZXRzbm1wX2hhbmRsZXJfbWFya19yZXF1ZXN0c19hc19kZWxlZ2F0ZWQgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMsIGludCBpc2RlbGVnYXRlZCkiCiAuUFAKIG1hcmtzIGEgbGlzdCBvZiByZXF1ZXN0cyBhcyBkZWxlZ2F0ZWQgKG9yIG5vdCBpZiBpc2RlbGVnYWRlZCA9IDApIAotLlNTICJcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGUgKGNvbnN0IGNoYXIgKiBuYW1lLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpIgorLlNTICJcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGUgKGNvbnN0IGNoYXIgKiBuYW1lLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpIgogLlBQCiBjcmVhdGVzIGEgaGFuZGxlciByZWdpc3RyYXRpb24gc3RydWN0dXJlIGdpdmVuIGEgbmFtZSwgYSBhY2Nlc3NfbWV0aG9kIGZ1bmN0aW9uLCBhIHJlZ2lzdHJhdGlvbiBsb2NhdGlvbiBvaWQgYW5kIHRoZSBtb2RlcyB0aGUgaGFuZGxlciBzdXBwb3J0cy4gSWYgbW9kZXMgPT0gMCwgdGhlbiBtb2RlcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2V0IHRvIHRoZSBkZWZhdWx0IHZhbHVlIG9mIG9ubHkgSEFORExFUl9DQU5fREVGQVVMVCwgd2hpY2ggaXMgYnkgZGVmYXVsdCByZWFkLW9ubHkgR0VUIGFuZCBHRVRORVhUIHJlcXVlc3RzLiBBIGhhbmRlciB3aGljaCBzdXBwb3J0cyBzZXRzIGJ1dCBub3Qgcm93IGNyZWF0aW9uIHNob3VsZCBzZXQgdXMgYSBtb2RlIG9mIEhBTkRMRVJfQ0FOX1NFVF9PTkxZLiAKIC5QUApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfaW5zdGFuY2UuMyBiL21hbi9uZXRzbm1wX2luc3RhbmNlLjMKaW5kZXggZjM4NzcyNS4uOGVkODFkZCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfaW5zdGFuY2UuMworKysgYi9tYW4vbmV0c25tcF9pbnN0YW5jZS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJpbnN0YW5jZSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJpbnN0YW5jZSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMjIsNjEgKzIyLDYxIEBACiAuYnIKIC5SSSAiXGZJVGhpcyBmdW5jdGlvbiBpbmplY3RzIGEgJ3JlYWQgb25seScgaGFuZGxlciBpbnRvIHRoZSBoYW5kbGVyIGNoYWluIHByaW9yIHRvIHNlcmlhbGl6aW5nL3JlZ2lzdGVyaW5nIHRoZSBoYW5kbGVyLiBcZlAiCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWludF9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVuc2lnbmVkIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3VpbnRfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1bnNpZ25lZCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfdWludF9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVuc2lnbmVkIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfdWludF9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVuc2lnbmVkIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJyZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfaW5zdGFuY2VfY29udGV4dFxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2VfY29udGV4dFxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfbG9uZ19pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9pbnRfaW5zdGFuY2VfY29udGV4dFxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQnJlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VfY29udGV4dFxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBjaGFyICpmaWxlX25hbWUsIGludCBhc25fdHlwZSwgaW50IG1vZGUsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX251bV9maWxlX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgY29uc3QgY2hhciAqZmlsZV9uYW1lLCBpbnQgYXNuX3R5cGUsIGludCBtb2RlLCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAuUkkgIlxmSVRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGFuIGludCBoZWxwZXIgaGFuZGxlciB0byBhIHNwZWNpZmllZCBPSUQuIFxmUCIKIC50aSAtMWMKQEAgLTExNSwxMiArMTE1LDUyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDggb2YgZmlsZSBpbnN0YW5jZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ5IG9mIGZpbGUgaW5zdGFuY2UuYy4KKy5TUyAiaW50IG5ldHNubXBfaW5zdGFuY2VfY291bnRlcjMyX2hhbmRsZXIgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3RzKSJcZkJEZXByZWNhdGVkXGZQCisuUlMgNAorVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYgCisuUkUKKy5QUAorCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA1NzIgb2YgZmlsZSBpbnN0YW5jZS5jLgorLlNTICJpbnQgbmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIlxmQkRlcHJlY2F0ZWRcZlAKKy5SUyA0CitUaGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIE5ldC1TTk1QIDUuNiAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDY4OSBvZiBmaWxlIGluc3RhbmNlLmMuCisuU1MgImludCBuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIlxmQkRlcHJlY2F0ZWRcZlAKKy5SUyA0CitUaGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIE5ldC1TTk1QIDUuNiAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDYxMSBvZiBmaWxlIGluc3RhbmNlLmMuCiAuU1MgImludCBuZXRzbm1wX2luc3RhbmNlX251bV9maWxlX2hhbmRsZXIgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3RzKSIKIC5QUAogZmFsbCB0aHJvdWdoIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzQyIG9mIGZpbGUgaW5zdGFuY2UuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3NzEgb2YgZmlsZSBpbnN0YW5jZS5jLgorLlNTICJpbnQgbmV0c25tcF9pbnN0YW5jZV91aW50X2hhbmRsZXIgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3RzKSJcZkJEZXByZWNhdGVkXGZQCisuUlMgNAorVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYgCisuUkUKKy5QUAorCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA5MDUgb2YgZmlsZSBpbnN0YW5jZS5jLgorLlNTICJpbnQgbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0cykiXGZCRGVwcmVjYXRlZFxmUAorLlJTIDQKK1RoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42IAorLlJFCisuUFAKKworLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNDkyIG9mIGZpbGUgaW5zdGFuY2UuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfaW5zdGFuY2UgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvKSIKIC5QUAogVGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgYW4gaW5zdGFuY2UgaGVscGVyIGhhbmRsZXIsIHdoaWNoIGlzIGEgd2F5IG9mIHJlZ2lzdGVyaW5nIGFuIGV4YWN0IE9JRCBzdWNoIHRoYXQgR0VORVhUIHJlcXVlc3RzIGFyZSBoYW5kbGVkIGVudGlyZWx5IGJ5IHRoZSBoZWxwZXIuIEZpcnN0IG5lZWQgdG8gaW5qZWN0IGl0IGludG8gdGhlIGNhbGxpbmcgY2hhaW4gb2YgdGhlIGhhbmRsZXIgZGVmaW5lZCBieSB0aGUgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiBzdHJ1Y3QsIHJlZ2luZm8uIFRoZSBuZXcgaGFuZGxlciBpcyBpbmplY3RlZCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0IGFuZCB3aWxsIGJlIHRoZSBuZXcgaGFuZGxlciB0byBiZSBjYWxsZWQgZmlyc3QuIFRoaXMgZnVuY3Rpb24gYWxzbyBpbmplY3RzIGEgc2VyaWFsaXplIGhhbmRsZXIgYmVmb3JlIGFjdHVhbGx5IGNhbGxpbmcgbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGUsIHJlZ2lzdGVyaW5nIHJlZ2luZm8uCkBAIC0xNDEsOCArMTgxLDggQEAKIC5pbiArMWMKIFxmQmRlbGF5ZWRfaW5zdGFuY2UuY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDczIG9mIGZpbGUgaW5zdGFuY2UuYy4KLS5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlIChjb25zdCBjaGFyICogbmFtZSwgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKiBpdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKSIKK0RlZmluaXRpb24gYXQgbGluZSA3NCBvZiBmaWxlIGluc3RhbmNlLmMuCisuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZSAoY29uc3QgY2hhciAqIG5hbWUsIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICogaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikiCiAuUFAKIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGFuIGludCBoZWxwZXIgaGFuZGxlciB0byBhIHNwZWNpZmllZCBPSUQuIFxmQlBhcmFtZXRlcnM6XGZQCiAuUlMgNApAQCAtMTY0LDcgKzIwNCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDYxIG9mIGZpbGUgaW5zdGFuY2UuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NzUgb2YgZmlsZSBpbnN0YW5jZS5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW5zdGFuY2UgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvKSIKIC5QUAogVGhpcyBmdW5jdGlvbiBpbmplY3RzIGEgJ3JlYWQgb25seScgaGFuZGxlciBpbnRvIHRoZSBoYW5kbGVyIGNoYWluIHByaW9yIHRvIHNlcmlhbGl6aW5nL3JlZ2lzdGVyaW5nIHRoZSBoYW5kbGVyLiBUaGUgb25seSBwdXJwb3NlIG9mIHRoaXMgJ3JlYWQgb25seScgaGFuZGxlciBpcyB0byByZXR1cm4gYW4gYXBwcm9wcmlhdGUgZXJyb3IgZm9yIGFueSByZXF1ZXN0cyBwYXNzZWQgdG8gaXQgaW4gYSBTRVQgbW9kZS4gSW5zZXJ0aW5nIGl0IGludG8geW91ciBoYW5kbGVyIGNoYWluIHdpbGwgZW5zdXJlIHlvdSdyZSBuZXZlciBhc2tlZCB0byBwZXJmb3JtIGEgU0VUIHJlcXVlc3Qgc28geW91IGNhbiBpZ25vcmUgdGhvc2UgZXJyb3IgY29uZGl0aW9ucy4KQEAgLTE4MSw3ICsyMjEsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEwMCBvZiBmaWxlIGluc3RhbmNlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTAxIG9mIGZpbGUgaW5zdGFuY2UuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMyBiL21hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zCmluZGV4IDAzMGJjYzAuLjgyOTY2MGUgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zCisrKyBiL21hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJpdGVyYXRvcl9pbmZvX3MiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiaXRlcmF0b3JfaW5mb19zIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9sZWFmLjMgYi9tYW4vbmV0c25tcF9sZWFmLjMKaW5kZXggYjhiNjlhMC4uMTlmMjg4OCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbGVhZi4zCisrKyBiL21hbi9uZXRzbm1wX2xlYWYuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibGVhZl9oYW5kbGVycyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJsZWFmX2hhbmRsZXJzIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9saWJyYXJ5LjMgYi9tYW4vbmV0c25tcF9saWJyYXJ5LjMKaW5kZXggODA5NmQzOC4uNDFjYzZmYyAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbGlicmFyeS4zCisrKyBiL21hbi9uZXRzbm1wX2xpYnJhcnkuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiVGhlIE5ldC1TTk1QIGxpYnJhcnkiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiVGhlIE5ldC1TTk1QIGxpYnJhcnkiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTE5MCw2ICsxOTAsNyBAQAogLnRpIC0xYwogLlJJICJ2b2lkIFxmQnNubXBfc2Vzc19pbml0XGZQIChcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKnNlc3Npb24pIgogLmJyCisuUkkgIlxmSUxpYnJhcnkgQVBJIHJvdXRpbmVzIGNvbmNlcm5lZCB3aXRoIHNwZWNpZnlpbmcgYW5kIHVzaW5nIFNOTVAgJ3Nlc3Npb25zJyBpbmNsdWRpbmcgc2VuZGluZyBhbmQgcmVjZWl2aW5nIHJlcXVlc3RzLiBcZlAiCiAudGkgLTFjCiAuUkkgInZvaWQgXGZCaW5pdF9zbm1wXGZQIChjb25zdCBjaGFyICp0eXBlKSIKIC5icgpAQCAtMjA4LDYgKzIwOSwxMCBAQAogLlJJICJcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiBcZkJzbm1wX29wZW5fZXhcZlAgKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqc2Vzc2lvbiwgaW50KCpmcHJlX3BhcnNlKShcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiwgXGZCbmV0c25tcF90cmFuc3BvcnRcZlAgKiwgdm9pZCAqLCBpbnQpLCBpbnQoKmZwYXJzZSkoXGZCbmV0c25tcF9zZXNzaW9uXGZQICosIFxmQm5ldHNubXBfcGR1XGZQICosIHVfY2hhciAqLCBzaXplX3QpLCBpbnQoKmZwb3N0X3BhcnNlKShcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiwgXGZCbmV0c25tcF9wZHVcZlAgKiwgaW50KSwgaW50KCpmYnVpbGQpKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqLCBcZkJuZXRzbm1wX3BkdVxmUCAqLCB1X2NoYXIgKiwgc2l6ZV90ICopLCBpbnQoKmZyYnVpbGQpKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqLCBcZkJuZXRzbm1wX3BkdVxmUCAqLCB1X2NoYXIgKiosIHNpemVfdCAqLCBzaXplX3QgKiksIGludCgqZmNoZWNrKSh1X2NoYXIgKiwgc2l6ZV90KSkiCiAuYnIKIC50aSAtMWMKKy5SSSAiaW50IFxmQnNubXB2M19wcm9iZV9jb250ZXh0RW5naW5lSURfcmZjNTM0M1xmUCAodm9pZCAqc2xwLCBcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKnNlc3Npb24pIgorLmJyCisuUkkgIlxmSXByb2JlIGZvciBlbmdpbmVJRCB1c2luZyBSRkMgNTM0MyBwcm9iaW5nIG1lY2hhbmlzbXMgXGZQIgorLnRpIC0xYwogLlJJICJpbnQgXGZCc25tcHYzX2VuZ2luZUlEX3Byb2JlXGZQIChzdHJ1Y3QgXGZCc2Vzc2lvbl9saXN0XGZQICpzbHAsIFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqaW5fc2Vzc2lvbikiCiAuYnIKIC5SSSAiXGZJcHJvYmUgZm9yIHBlZXIgZW5naW5lSUQgXGZQIgpAQCAtMjg0LDYgKzI4OSw5IEBACiAuUkkgImludCBcZkJzbm1wX3Nlc3NfYXN5bmNfc2VuZFxmUCAodm9pZCAqc2Vzc3AsIFxmQm5ldHNubXBfcGR1XGZQICpwZHUsIHNubXBfY2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmNiX2RhdGEpIgogLmJyCiAudGkgLTFjCisuUkkgInZvaWQgXGZCc25tcF9mcmVlX3Zhcl9pbnRlcm5hbHNcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFyKSIKKy5icgorLnRpIC0xYwogLlJJICJ2b2lkIFxmQnNubXBfZnJlZV92YXJcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFyKSIKIC5icgogLnRpIC0xYwpAQCAtMjk5LDE4ICszMDcsMzAgQEAKIC5SSSAidm9pZCBcZkJzbm1wX3JlYWRcZlAgKGZkX3NldCAqZmRzZXQpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJfc2Vzc19yZWFkXGZQICh2b2lkICpzZXNzcCwgZmRfc2V0ICpmZHNldCkiCisuUkkgInZvaWQgXGZCc25tcF9yZWFkMlxmUCAoXGZCbmV0c25tcF9sYXJnZV9mZF9zZXRcZlAgKmZkc2V0KSIKKy5icgorLnRpIC0xYworLlJJICJpbnQgXGZCX3Nlc3NfcmVhZFxmUCAodm9pZCAqc2Vzc3AsIFxmQm5ldHNubXBfbGFyZ2VfZmRfc2V0XGZQICpmZHNldCkiCiAuYnIKIC50aSAtMWMKIC5SSSAiaW50IFxmQnNubXBfc2Vzc19yZWFkXGZQICh2b2lkICpzZXNzcCwgZmRfc2V0ICpmZHNldCkiCiAuYnIKIC50aSAtMWMKKy5SSSAiaW50IFxmQnNubXBfc2Vzc19yZWFkMlxmUCAodm9pZCAqc2Vzc3AsIFxmQm5ldHNubXBfbGFyZ2VfZmRfc2V0XGZQICpmZHNldCkiCisuYnIKKy50aSAtMWMKIC5SSSAiaW50IFxmQnNubXBfc2VsZWN0X2luZm9cZlAgKGludCAqbnVtZmRzLCBmZF9zZXQgKmZkc2V0LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50ICpibG9jaykiCiAuYnIKIC50aSAtMWMKKy5SSSAiaW50IFxmQnNubXBfc2VsZWN0X2luZm8yXGZQIChpbnQgKm51bWZkcywgXGZCbmV0c25tcF9sYXJnZV9mZF9zZXRcZlAgKmZkc2V0LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50ICpibG9jaykiCisuYnIKKy50aSAtMWMKIC5SSSAiaW50IFxmQnNubXBfc2Vzc19zZWxlY3RfaW5mb1xmUCAodm9pZCAqc2Vzc3AsIGludCAqbnVtZmRzLCBmZF9zZXQgKmZkc2V0LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50ICpibG9jaykiCiAuYnIKIC50aSAtMWMKKy5SSSAiaW50IFxmQnNubXBfc2Vzc19zZWxlY3RfaW5mbzJcZlAgKHZvaWQgKnNlc3NwLCBpbnQgKm51bWZkcywgXGZCbmV0c25tcF9sYXJnZV9mZF9zZXRcZlAgKmZkc2V0LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50ICpibG9jaykiCisuYnIKKy50aSAtMWMKIC5SSSAidm9pZCBcZkJzbm1wX3RpbWVvdXRcZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCkBAIC0zNDcsMTAgKzM2NywxMSBAQAogLmJyCiAuUkkgIlxmSUdpdmVuIHR3byBPSURzLCBkZXRlcm1pbmUgdGhlIGNvbW1vbiBwcmVmaXggdG8gdGhlbSBib3RoLiBcZlAiCiAudGkgLTFjCi0uUkkgIlxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIFxmQnNubXBfcGR1X2FkZF92YXJpYWJsZVxmUCAoXGZCbmV0c25tcF9wZHVcZlAgKnBkdSwgY29uc3Qgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW5ndGgsIHVfY2hhciB0eXBlLCBjb25zdCB1X2NoYXIgKnZhbHVlLCBzaXplX3QgbGVuKSIKKy5SSSAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogXGZCc25tcF9wZHVfYWRkX3ZhcmlhYmxlXGZQIChcZkJuZXRzbm1wX3BkdVxmUCAqcGR1LCBjb25zdCBvaWQgKm5hbWUsIHNpemVfdCBuYW1lX2xlbmd0aCwgdV9jaGFyIHR5cGUsIGNvbnN0IHZvaWQgKnZhbHVlLCBzaXplX3QgbGVuKSIKIC5icgorLlJJICJcZklMaWJyYXJ5IEFQSSByb3V0aW5lcyBjb25jZXJuZWQgd2l0aCBcZkJ2YXJpYWJsZVxmUCBiaW5kaW5ncyBhbmQgdmFsdWVzLiBcZlAiCiAudGkgLTFjCi0uUkkgIlxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIFxmQnNubXBfdmFybGlzdF9hZGRfdmFyaWFibGVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqKnZhcmxpc3QsIGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoLCB1X2NoYXIgdHlwZSwgY29uc3QgdV9jaGFyICp2YWx1ZSwgc2l6ZV90IGxlbikiCisuUkkgIlxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIFxmQnNubXBfdmFybGlzdF9hZGRfdmFyaWFibGVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqKnZhcmxpc3QsIGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoLCB1X2NoYXIgdHlwZSwgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCBsZW4pIgogLmJyCiAudGkgLTFjCiAuUkkgImludCBcZkJzbm1wX2FkZF92YXJcZlAgKFxmQm5ldHNubXBfcGR1XGZQICpwZHUsIGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoLCBjaGFyIHR5cGUsIGNvbnN0IGNoYXIgKnZhbHVlKSIKQEAgLTQzNiwxNiArNDU3LDE2IEBACiAgICAgICAgICh0dnApLT50dl91c2VjIGNtcCAodXZwKS0+dHZfdXNlYykpCiAuZmkKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE0OCBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTQ5IG9mIGZpbGUgc25tcF9hcGkuYy4KIC5TSCAiRnVuY3Rpb24gRG9jdW1lbnRhdGlvbiIKIC5QUCAKLS5TUyAiaW50IF9zZXNzX3JlYWQgKHZvaWQgKiBzZXNzcCwgZmRfc2V0ICogZmRzZXQpIgorLlNTICJpbnQgX3Nlc3NfcmVhZCAodm9pZCAqIHNlc3NwLCBcZkJuZXRzbm1wX2xhcmdlX2ZkX3NldFxmUCAqIGZkc2V0KSIKIC5QUAogWFhYLXJrczogd2h5IG5vIFNOTVBfRlJFRShpc3AtPnBhY2tldCk7ID8/CiAuUFAKIFhYWC1ya3M6IHdoeSBubyBTTk1QX0ZSRUUoaXNwLT5wYWNrZXQpOyA/PyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0NDggb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDU3MTUgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJpbnQgaW5pdF9hZ2VudCAoY29uc3QgY2hhciAqIGFwcCkiCiAuUFAKIEluaXRpYWxpemUgdGhlIGFnZW50LiBDYWxscyBpbnRvIGluaXRfYWdlbnRfcmVhZF9jb25maWcgdG8gc2V0IHRoYSBhcHAncyBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlIGFwcHJvcHJpYXRlIGRlZmF1bHQgc3RvcmFnZSBzcGFjZSwgTkVUU05NUF9EU19MSUJfQVBQVFlQRS4gTmVlZCB0byBjYWxsIGluaXRfYWdlbnQgYmVmb3JlIGNhbGxpbmcgaW5pdF9zbm1wLgpAQCAtNDY3LDcgKzQ4OCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjcwIG9mIGZpbGUgc25tcF92YXJzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjc3IG9mIGZpbGUgc25tcF92YXJzLmMuCiAuU1MgInZvaWQgaW5pdF9zbm1wIChjb25zdCBjaGFyICogdHlwZSkiCiAuUFAKIENhbGxzIHRoZSBmdW5jdGlvbnMgdG8gZG8gY29uZmlnIGZpbGUgbG9hZGluZyBhbmQgbWliIFxmQm1vZHVsZVxmUCBwYXJzaW5nIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDg3LDcgKzUwOCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzg3IG9mIGZpbGUgc25tcF9hcGkuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3OTYgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJpbnQgbmV0c25tcF9vaWRfY29tcGFyZV9sbCAoY29uc3Qgb2lkICogaW5fbmFtZTEsIHNpemVfdCBsZW4xLCBjb25zdCBvaWQgKiBpbl9uYW1lMiwgc2l6ZV90IGxlbjIsIHNpemVfdCAqIG9mZnB0KSIKIC5QUAogbGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmUgdHdvIG9iamVjdCBpZGVudGlmaWVycyBhbmQgcmV0dXJuIHRoZSBwb2ludCB3aGVyZSB0aGV5IGRpZmZlciBDYXV0aW9uOiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgb2Z0ZW4gYnkgY29tbWFuZCByZXNwb25kZXIgYXBwbGljYXRpb25zIChpZSwgYWdlbnQpLgpAQCAtNDk5LDcgKzUyMCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjM4NiBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjcxNiBvZiBmaWxlIHNubXBfYXBpLmMuCiAuU1MgImludCBuZXRzbm1wX29pZF9lcXVhbHMgKGNvbnN0IG9pZCAqIGluX25hbWUxLCBzaXplX3QgbGVuMSwgY29uc3Qgb2lkICogaW5fbmFtZTIsIHNpemVfdCBsZW4yKSIKIC5QUAogQ29tcGFyZXMgMiBPSURzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBleGFjdGx5IGVxdWFsLiBUaGlzIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBkb2luZyBhIHNubXBfb2lkX2NvbXBhcmUgZm9yIGRpZmZlcmVudCBsZW5ndGggT0lEcywgc2luY2UgdGhlIGxlbmd0aCBpcyBjaGVja2VkIGZpcnN0IGFuZCBpZiAhPSByZXR1cm5zIGltbWVkaWF0ZWx5LiBNaWdodCBiZSB2ZXJ5IHNsaWdobHkgZmFzdGVyIGlmIGxlbmd0aHMgYXJlID09LiAKQEAgLTUyMiw3ICs1NDMsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDY0Njcgb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY3OTcgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJpbnQgbmV0c25tcF9vaWRfZmluZF9wcmVmaXggKGNvbnN0IG9pZCAqIGluX25hbWUxLCBzaXplX3QgbGVuMSwgY29uc3Qgb2lkICogaW5fbmFtZTIsIHNpemVfdCBsZW4yKSIKIC5QUAogR2l2ZW4gdHdvIE9JRHMsIGRldGVybWluZSB0aGUgY29tbW9uIHByZWZpeCB0byB0aGVtIGJvdGguIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC01NDMsNyArNTY0LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2NTMxIG9mIGZpbGUgc25tcF9hcGkuYy4KK0RlZmluaXRpb24gYXQgbGluZSA2ODYxIG9mIGZpbGUgc25tcF9hcGkuYy4KIC5TUyAiaW50IG5ldHNubXBfb2lkX2lzX3N1YnRyZWUgKGNvbnN0IG9pZCAqIGluX25hbWUxLCBzaXplX3QgbGVuMSwgY29uc3Qgb2lkICogaW5fbmFtZTIsIHNpemVfdCBsZW4yKSIKIC5QUAogSWRlbnRpY2FsIHRvIG5ldHNubXBfb2lkX2VxdWFscywgZXhjZXB0IG9ubHkgdGhlIGxlbmd0aCB1cCB0byBsZW4xIGlzIGNvbXBhcmVkLiBGdW5jdGlvbmFsbHksIHRoaXMgZGV0ZXJtaW5lcyBpZiBpbl9uYW1lMiBpcyBlcXVhbCBvciBhIHN1YnRyZWUgb2YgaW5fbmFtZTEgCkBAIC01NjYsNyArNTg3LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2NTEwIG9mIGZpbGUgc25tcF9hcGkuYy4KK0RlZmluaXRpb24gYXQgbGluZSA2ODQwIG9mIGZpbGUgc25tcF9hcGkuYy4KIC5TUyAiaW50IHNubXBfb2lkX2NvbXBhcmUgKGNvbnN0IG9pZCAqIGluX25hbWUxLCBzaXplX3QgbGVuMSwgY29uc3Qgb2lkICogaW5fbmFtZTIsIHNpemVfdCBsZW4yKSIKIC5QUAogbGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmUgdHdvIG9iamVjdCBpZGVudGlmaWVycy4gQ2F1dGlvbjogdGhpcyBtZXRob2QgaXMgY2FsbGVkIG9mdGVuIGJ5IGNvbW1hbmQgcmVzcG9uZGVyIGFwcGxpY2F0aW9ucyAoaWUsIGFnZW50KS4KQEAgLTU3OCw3ICs1OTksNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDYzMzcgb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY2Njcgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJpbnQgc25tcF9vaWR0cmVlX2NvbXBhcmUgKGNvbnN0IG9pZCAqIGluX25hbWUxLCBzaXplX3QgbGVuMSwgY29uc3Qgb2lkICogaW5fbmFtZTIsIHNpemVfdCBsZW4yKSIKIC5QUAogQ29tcGFyZXMgMiBPSURzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVhbCB1cCB1bnRpbCB0aGUgc2hvcnRlc3QgbGVuZ3RoLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNTk5LDcgKzYyMCwxNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDY0Mzkgb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY3Njkgb2YgZmlsZSBzbm1wX2FwaS5jLgorLlNTICJcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAqIHNubXBfcGR1X2FkZF92YXJpYWJsZSAoXGZCbmV0c25tcF9wZHVcZlAgKiBwZHUsIGNvbnN0IG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbmd0aCwgdV9jaGFyIHR5cGUsIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IGxlbikiCisuUFAKK0xpYnJhcnkgQVBJIHJvdXRpbmVzIGNvbmNlcm5lZCB3aXRoIFxmQnZhcmlhYmxlXGZQIGJpbmRpbmdzIGFuZCB2YWx1ZXMuIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNjkzMiBvZiBmaWxlIHNubXBfYXBpLmMuCisuU1MgInZvaWQgc25tcF9zZXNzX2luaXQgKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqIHNlc3Npb24pIgorLlBQCitMaWJyYXJ5IEFQSSByb3V0aW5lcyBjb25jZXJuZWQgd2l0aCBzcGVjaWZ5aW5nIGFuZCB1c2luZyBTTk1QICdzZXNzaW9ucycgaW5jbHVkaW5nIHNlbmRpbmcgYW5kIHJlY2VpdmluZyByZXF1ZXN0cy4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA3MTggb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJcZkJuZXRzbm1wX3Nlc3Npb25cZlAqIHNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCAodm9pZCAqIHNlc3NwKSIKIC5QUAogTG9vayB1cCBhIHNlc3Npb24gdGhhdCBhbHJlYWR5IG1heSBoYXZlIGJlZW4gY2xvc2VkLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNjE5LDcgKzY1MCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzE5NyBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzUyNSBvZiBmaWxlIHNubXBfYXBpLmMuCiAuU1MgInZvaWQgc25tcF9zaHV0ZG93biAoY29uc3QgY2hhciAqIHR5cGUpIgogLlBQCiBTaHV0cyBkb3duIHRoZSBhcHBsaWNhdGlvbiwgc2F2aW5nIGFueSBuZWVkZWQgcGVyc2lzdGVudCBzdG9yYWdlLCBhbmQgYXBwcm9wcmlhdGUgY2xlYW4gdXAuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC02MzQsNyArNjY1LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NTMgb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg2MiBvZiBmaWxlIHNubXBfYXBpLmMuCiAuU1MgImludCBzbm1wdjNfZW5naW5lSURfcHJvYmUgKHN0cnVjdCBcZkJzZXNzaW9uX2xpc3RcZlAgKiBzbHAsIFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqIGluX3Nlc3Npb24pIgogLlBQCiBwcm9iZSBmb3IgcGVlciBlbmdpbmVJRCBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNjY0LDcgKzY5NSwxMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEyNzggb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEzNzcgb2YgZmlsZSBzbm1wX2FwaS5jLgorLlNTICJpbnQgc25tcHYzX3Byb2JlX2NvbnRleHRFbmdpbmVJRF9yZmM1MzQzICh2b2lkICogc2xwLCBcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiBzZXNzaW9uKSIKKy5QUAorcHJvYmUgZm9yIGVuZ2luZUlEIHVzaW5nIFJGQyA1MzQzIHByb2JpbmcgbWVjaGFuaXNtcyBEZXNpZ25lZCB0byBiZSBhIGNhbGxiYWNrIGZvciB3aXRoaW4gYSBzZWN1cml0eSBtb2RlbCdzIHByb2JlX2VuZ2luZWlkIGhvb2suIFNpbmNlIGl0J3MgbGlrZWx5IG11bHRpcGxlIHNlY3VyaXR5IG1vZGVscyB3b24ndCBoYXZlIGVuZ2luZUlEcyB0byBwcm9iZSBmb3IgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGEgY2FsbGJhY2sgbGlrZWx5IHRvIGJlIHVzZWQgYnkgbXVsdGlwbGUgZnV0dXJlIHNlY3VyaXR5IG1vZGVscy4gRS5HLiBib3RoIFNTSCBhbmQgRFRMUy4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAxMjc5IG9mIGZpbGUgc25tcF9hcGkuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMyBiL21hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zCmluZGV4IDY1YjM5MTYuLmY0MDg4MDYgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zCisrKyBiL21hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJtaWJfbWFpbnRlbmFuY2UiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibWliX21haW50ZW5hbmNlIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMgYi9tYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMKaW5kZXggMDc3MjdiZC4uNTQyZDM4MSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zCisrKyBiL21hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibWliIHBhcnNpbmcgYW5kIGRhdGF0eXBlIG1hbmlwdWxhdGlvbiByb3V0aW5lcy4iIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibWliIHBhcnNpbmcgYW5kIGRhdGF0eXBlIG1hbmlwdWxhdGlvbiByb3V0aW5lcy4iIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTE1MSw2ICsxNTEsMTggQEAKIC5SSSAidm9pZCBcZkJpbml0X21pYlxmUCAodm9pZCkiCiAuYnIKIC50aSAtMWMKKy5SSSAiaW50IFxmQl9taWJpbmRleF9hZGRcZlAgKGNvbnN0IGNoYXIgKmRpcm5hbWUsIGludCBpKSIKKy5icgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfbWliaW5kZXhfbG9hZFxmUCAodm9pZCkiCisuYnIKKy50aSAtMWMKKy5SSSAiY2hhciAqIFxmQm5ldHNubXBfbWliaW5kZXhfbG9va3VwXGZQIChjb25zdCBjaGFyICpkaXJuYW1lKSIKKy5icgorLnRpIC0xYworLlJJICJGSUxFICogXGZCbmV0c25tcF9taWJpbmRleF9uZXdcZlAgKGNvbnN0IGNoYXIgKmRpcm5hbWUpIgorLmJyCisudGkgLTFjCiAuUkkgInZvaWQgXGZCc2h1dGRvd25fbWliXGZQICh2b2lkKSIKIC5icgogLlJJICJcZklVbmxvYWRzIGFsbCBtaWJzLiBcZlAiCkBAIC0zODYsNiArMzk4LDkgQEAKIC50aSAtMWMKIC5SSSAiXGZCUHJlZml4TGlzdFxmUCBcZkJtaWJfcHJlZml4ZXNcZlAgW10iCiAuYnIKKy50aSAtMWMKKy5SSSAiY2hhciAqKiBcZkJfbWliaW5kZXhlc1xmUCA9IE5VTEwiCisuYnIKIC5pbiAtMWMKIC5TSCAiRnVuY3Rpb24gRG9jdW1lbnRhdGlvbiIKIC5QUCAKQEAgLTQxNywxMiArNDMyLDEyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjc0IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjkyIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBidWlsZF9vaWQgKG9pZCAqKiBvdXQsIHNpemVfdCAqIG91dF9sZW4sIG9pZCAqIHByZWZpeCwgc2l6ZV90IHByZWZpeF9sZW4sIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIGluZGV4ZXMpIgogLlBQCiB4eHgtcmtzOiBzaG91bGQgZnJlZSBwcmV2aW91cyB2YWx1ZT8gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNTgyIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzczMSBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgYnVpbGRfb2lkX3NlZ21lbnQgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhcikiCiAuUFAKIFRha2VzIHRoZSB2YWx1ZSBpbiBWQVIgYW5kIHR1cm5zIGl0IGludG8gYW4gT0lEIHNlZ21lbnQgaW4gdmFyLT5uYW1lLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDM3LDcgKzQ1Miw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzQ0OCBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1OTcgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBmcHJpbnRfZGVzY3JpcHRpb24gKEZJTEUgKiBmLCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBpbnQgd2lkdGgpIgogLlBQCiBQcmludHMgb24gb2lkIGRlc2NyaXB0aW9uIGludG8gYSBmaWxlIGRlc2NyaXB0b3IuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC00NTMsNyArNDY4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0NDUyIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDYwMSBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIGZwcmludF9vYmppZCAoRklMRSAqIGYsIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pIgogLlBQCiBQcmludHMgYW4gb2lkIHRvIGEgZmlsZSBkZXNjcmlwdG9yLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDY3LDcgKzQ4Miw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzE2NyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzMjAgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBmcHJpbnRfdmFyaWFibGUgKEZJTEUgKiBmLCBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXJpYWJsZSkiCiAuUFAKIFByaW50cyBhIFxmQnZhcmlhYmxlXGZQIHRvIGEgZmlsZSBkZXNjcmlwdG9yLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDgzLDcgKzQ5OCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzMyMSBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM0NzQgb2YgZmlsZSBtaWIuYy4KIC5TUyAic3RydWN0IFxmQnRyZWVcZlAqIGdldF90cmVlX2hlYWQgKHZvaWQpXGZDIFtyZWFkXVxmUCIKIC5QUAogUmV0cmlldmVzIHRoZSBcZkJ0cmVlXGZQIGhlYWQuIFxmQlJldHVybnM6XGZQCkBAIC00OTMsNyArNTA4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMDIwIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjAzMSBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgZ2V0X3dpbGRfbm9kZSAoY29uc3QgY2hhciAqIG5hbWUsIG9pZCAqIG9iamlkLCBzaXplX3QgKiBvYmppZGxlbikiXGZCU2VlIGFsc286XGZQCiAuUlMgNAogY29tbWVudHMgb24gZmluZF9iZXN0X3RyZWVfbm9kZSBmb3IgdXNhZ2UgYWZ0ZXIgZmlyc3QgdGltZS4gCkBAIC01MDEsMjQgKzUxNiwyNiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0OTEgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1NjM5IG9mIGZpbGUgbWliLmMuCiAuU1MgInZvaWQgbmV0c25tcF9maXh1cF9taWJfZGlyZWN0b3J5ICh2b2lkKSIKIC5QUAogc3dhcCBpbiB0aGUgbmV3IHZhbHVlIGFuZCByZXBlYXQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNDgzIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjQ5NiBvZiBmaWxlIG1pYi5jLgogLlNTICJjaGFyKiBuZXRzbm1wX2dldF9taWJfZGlyZWN0b3J5ICh2b2lkKSIKIC5QUAogQ2hlY2sgaWYgdGhlIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQIGlzIHNldAogLlBQCiBOb3Qgc2V0IHVzZSBoYXJkIGNvZGVkIHBhdGggCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNDM2IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjQ0OSBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIG5ldHNubXBfaW5pdF9taWIgKHZvaWQpIgogLlBQCi1Jbml0aWFsaXNlcyB0aGUgbWliIHJlYWRlci4gUmVhZHMgaW4gYWxsIHNldHRpbmdzIGZyb20gdGhlIGVudmlyb25tZW50LiAKK0luaXRpYWxpc2VzIHRoZSBtaWIgcmVhZGVyLiBMaWJyYXJ5IEFQSSByb3V0aW5lcyBjb25jZXJuZWQgd2l0aCBNSUIgZmlsZXMgYW5kIG9iamVjdHMsIGFuZCBPSURzLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjUzMCBvZiBmaWxlIG1pYi5jLgorUmVhZHMgaW4gYWxsIHNldHRpbmdzIGZyb20gdGhlIGVudmlyb25tZW50LiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDI1NDMgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IG5ldHNubXBfb2lkMmNoYXJzIChjaGFyICogQywgaW50IEwsIGNvbnN0IG9pZCAqIE8pIgogLlBQCiBDb252ZXJ0cyBhbiBPSUQgdG8gaXRzIGNoYXJhY3RlciBmb3JtLiBpbiBleGFtcGxlIDUgLiAxIC4gMiAuIDMgLiA0IC4gNSA9IDEyMzQ1CkBAIC01NDEsNyArNTU4LDcgQEAKIC5QUAogbGVuZ3RoIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjI3OCBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY0MjUgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IG5ldHNubXBfb2lkMnN0ciAoY2hhciAqIFMsIGludCBMLCBvaWQgKiBPKSIKIC5QUAogQ29udmVydHMgYW4gT0lEIHRvIGl0cyBzdHJpbmcgZm9ybS4gaW4gZXhhbXBsZSA1IC4gJ2gnIC4gJ2UnIC4gJ2wnIC4gJ2wnIC4gJ28nID0gJ2hlbGxvXFwwJyAobnVsbCB0ZXJtaW5hdGVkKQpAQCAtNTYyLDcgKzU3OSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjMwNiBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY0NTMgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBuZXRzbm1wX3NldF9taWJfZGlyZWN0b3J5IChjb25zdCBjaGFyICogZGlyKSIKIC5QUAogTmV3IGRpciBzdGFydHMgd2l0aCAnKycsIHRodXMgd2UgYWRkIGl0LgpAQCAtNTcxLDcgKzU4OCw3IEBACiAuUFAKIHNldF9zdHJpbmcgY2FsbHMgc3RyZHVwLCBzbyBpZiB3ZSBhbGxvY2F0ZWQgbWVtb3J5LCBmcmVlIGl0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjM4MSBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzOTQgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IG5ldHNubXBfc3RyMm9pZCAoY29uc3QgY2hhciAqIFMsIG9pZCAqIE8sIGludCBMKSIKIC5QUAogQ29udmVydHMgYSBzdHJpbmcgdG8gaXRzIE9JRCBmb3JtLiBpbiBleGFtcGxlICdoZWxsbycgPSA1IC4gJ2gnIC4gJ2UnIC4gJ2wnIC4gJ2wnIC4gJ28nCkBAIC01OTIsNyArNjA5LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2MjQzIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjM5MCBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIHByaW50X2Rlc2NyaXB0aW9uIChvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBpbnQgd2lkdGgpIgogLlBQCiBQcmludHMgb24gb2lkIGRlc2NyaXB0aW9uIG9uIHN0ZG91dC4gXGZCU2VlIGFsc286XGZQCkBAIC02MDIsNyArNjE5LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0NDM2IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDU4NSBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIHByaW50X21pYiAoRklMRSAqIGZwKSIKIC5QUAogUHJpbnRzIHRoZSBNSUJzIHRvIHRoZSBmaWxlIGZwLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNjEyLDcgKzYyOSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjc0NSBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI5MDEgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBwcmludF9vYmppZCAoY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbikiCiAuUFAKIFByaW50cyBhbiBvaWQgdG8gc3Rkb3V0LiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNjI0LDcgKzY0MSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzE1MyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzMDYgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBwcmludF92YXJpYWJsZSAoY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyaWFibGUpIgogLlBQCiBQcmludHMgYSBcZkJ2YXJpYWJsZVxmUCB0byBzdGRvdXQuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC02MzgsNyArNjU1LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMzA1IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzQ1OCBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgcmVhZF9vYmppZCAoY29uc3QgY2hhciAqIGlucHV0LCBvaWQgKiBvdXRwdXQsIHNpemVfdCAqIG91dF9sZW4pIgogLlBQCiBSZWFkcyBhbiBvYmplY3QgaWRlbnRpZmllciBmcm9tIGFuIGlucHV0IHN0cmluZyBpbnRvIGludGVybmFsIE9JRCBmb3JtLiBXaGVuIGNhbGxlZCwgb3V0X2xlbiBtdXN0IGhvbGQgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBvdXRwdXQgYXJyYXkuCkBAIC02NTksNyArNjc2LDcgQEAKIC5QUAogSWYgYW4gZXJyb3Igb2NjdXJzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgMCBhbmQgTUFZIHNldCBzbm1wX2Vycm5vLiBzbm1wX2Vycm5vIGlzIE5PVCBzZXQgaWYgU0VUX1NOTVBfRVJST1IgZXZhbHVhdGVzIHRvIG5vdGhpbmcuIFRoaXMgY2FuIG1ha2UgbXVsdGktdGhyZWFkZWQgdXNlIGEgdGlueSBiaXQgbW9yZSByb2J1c3QuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjg0MyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI5OTkgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBzZXRfZnVuY3Rpb24gKHN0cnVjdCBcZkJ0cmVlXGZQICogc3VidHJlZSkiCiAuUFAKIFNldCdzIHRoZSBwcmludGluZyBmdW5jdGlvbiBwcmludG9tYXQgaW4gYSBzdWJ0cmVlIGFjY29yZGluZyBpdCdzIHR5cGUuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC02NjksMTIgKzY4NiwxMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI3NjYgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyOTIyIG9mIGZpbGUgbWliLmMuCiAuU1MgInZvaWQgc2h1dGRvd25fbWliICh2b2lkKSIKIC5QUAogVW5sb2FkcyBhbGwgbWlicy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNzIwIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjg2NyBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIHNubXBfaW5fdG9nZ2xlX29wdGlvbnNfdXNhZ2UgKGNvbnN0IGNoYXIgKiBsZWFkLCBGSUxFICogb3V0ZikiCiAuUFAKIFByaW50cyBvdXQgYSBoZWxwIHVzYWdlIGZvciB0aGUgaW4qIHRvZ2dsZSBvcHRpb25zLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNjg2LDcgKzcwMyw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjI5MyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzMDQgb2YgZmlsZSBtaWIuYy4KIC5TUyAib2lkKiBzbm1wX3BhcnNlX29pZCAoY29uc3QgY2hhciAqIGFyZ3YsIG9pZCAqIHJvb3QsIHNpemVfdCAqIHJvb3RsZW4pIgogLlBQCiBHaXZlbiBhIHN0cmluZywgcGFyc2VzIGFuIG9pZCBvdXQgb2YgaXQgKGlmIHBvc3NpYmxlKS4gSXQgd2lsbCB0cnkgdG8gcGFyc2UgaXQgYmFzZWQgb24gcHJlZGV0ZXJtaW5lZCBjb25maWd1cmF0aW9uIGlmIHByZXNlbnQgb3IgYnkgZXZlcnkgbWV0aG9kIHBvc3NpYmxlIG90aGVyd2lzZS4gSWYgYSBzdWZmaXggaGFzIGJlZW4gcmVnaXN0ZXJlZCB1c2luZyBORVRTTk1QX0RTX0xJQl9PSURTVUZGSVgsIGl0IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGlucHV0IHN0cmluZyBiZWZvcmUgcHJvY2Vzc2luZy4KQEAgLTcwNyw3ICs3MjQsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU4NDkgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1OTk2IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19hc2NpaXN0cmluZyAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IHVfY2hhciAqIGNwLCBzaXplX3QgbGVuKSIKIC5QUAogUHJpbnRzIGFuIGFzY2lpIHN0cmluZyBpbnRvIGEgYnVmZmVyLiBUaGUgY2hhcmFjdGVycyBwb2ludGVkIGJ5ICpjcCBhcmUgZW5jb2RlZCBhcyBhbiBhc2NpaSBzdHJpbmcuCkBAIC03MzYsNyArNzUzLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNzAgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzODggb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX2JhZHR5cGUgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIEZhbGxiYWNrIHJvdXRpbmUgZm9yIGEgYmFkIHR5cGUsIHByaW50cyAnVmFyaWFibGUgaGFzIGJhZCB0eXBlJyBpbnRvIGEgYnVmZmVyLiBJZiBhbGxvd19yZWFsbG9jIGlzIHRydWUgdGhlIGJ1ZmZlciB3aWxsIGJlIChyZSlhbGxvY2F0ZWQgdG8gZml0IGluIHRoZSBuZWVkZWQgc2l6ZS4gKE5vdGU6ICpidWYgbWF5IGNoYW5nZSBkdWUgdG8gdGhpcy4pCkBAIC03NjcsNyArNzg0LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxOTA1IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTkxNiBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2NfYml0c3RyaW5nICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYSBiaXQgc3RyaW5nIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTc5OCw3ICs4MTUsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE3NjYgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNzc3IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19ieV90eXBlICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBVbml2ZXJzYWwgcHJpbnQgcm91dGluZSwgcHJpbnRzIGEgXGZCdmFyaWFibGVcZlAgaW50byBhIGJ1ZmZlciBhY2NvcmRpbmcgdG8gdGhlIFxmQnZhcmlhYmxlXGZQIHR5cGUuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTgyOSw3ICs4NDYsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5NDAgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxOTUxIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19jb3VudGVyICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYSBjb3VudGVyIHZhbHVlIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTg2MCw3ICs4NzcsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1MzMgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNTQ0IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19jb3VudGVyNjQgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhIGNvdW50ZXIgaW50byBhIGJ1ZmZlci4gVGhlIFxmQnZhcmlhYmxlXGZQIHZhciBpcyBlbmNvZGVkIGFzIGEgY291bnRlciB2YWx1ZS4KQEAgLTg5Myw3ICs5MTAsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg0OSBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg2MCBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2NfZ2F1Z2UgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhIGdhdWdlIHZhbHVlIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTkyNCw3ICs5NDEsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE0NjAgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNDcxIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19oaW50ZWRfaW50ZWdlciAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGxvbmcgdmFsLCBjb25zdCBjaGFyIGRlY2ltYWx0eXBlLCBjb25zdCBjaGFyICogaGludCwgY29uc3QgY2hhciAqIHVuaXRzKSIKIC5QUAogUHJpbnRzIGFuIGludGVnZXIgYWNjb3JkaW5nIHRvIHRoZSBoaW50IGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTk1NSw3ICs5NzIsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDExODYgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMTk3IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19pbnRlZ2VyICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYW4gaW50ZWdlciBpbnRvIGEgYnVmZmVyLiBJZiBhbGxvd19yZWFsbG9jIGlzIHRydWUgdGhlIGJ1ZmZlciB3aWxsIGJlIChyZSlhbGxvY2F0ZWQgdG8gZml0IGluIHRoZSBuZWVkZWQgc2l6ZS4gKE5vdGU6ICpidWYgbWF5IGNoYW5nZSBkdWUgdG8gdGhpcy4pCkBAIC05ODYsNyArMTAwMyw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI2MCBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEyNzEgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX2lwYWRkcmVzcyAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhciwgY29uc3Qgc3RydWN0IFxmQmVudW1fbGlzdFxmUCAqIGVudW1zLCBjb25zdCBjaGFyICogaGludCwgY29uc3QgY2hhciAqIHVuaXRzKSIKIC5QUAogUHJpbnRzIGFuIGlwLWFkZHJlc3MgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtMTAxNyw3ICsxMDM0LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNjYyIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTY3MyBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2NfbmV0d29ya2FkZHJlc3MgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhIG5ldHdvcmsgYWRkcmVzcyBpbnRvIGEgYnVmZmVyLiBJZiBhbGxvd19yZWFsbG9jIGlzIHRydWUgdGhlIGJ1ZmZlciB3aWxsIGJlIChyZSlhbGxvY2F0ZWQgdG8gZml0IGluIHRoZSBuZWVkZWQgc2l6ZS4gKE5vdGU6ICpidWYgbWF5IGNoYW5nZSBkdWUgdG8gdGhpcy4pCkBAIC0xMDQ4LDcgKzEwNjUsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1OTYgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNjA3IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19udWxsICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYSBudWxsIHZhbHVlIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTEwNzksNyArMTA5Niw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTcyMiBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE3MzMgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX29iamVjdF9pZGVudGlmaWVyICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYW4gb2JqZWN0IGlkZW50aWZpZXIgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtMTExMCw3ICsxMTI3LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDQyIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTA1MyBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2Nfb2N0ZXRfc3RyaW5nICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYW4gb2N0ZXQgc3RyaW5nIGludG8gYSBidWZmZXIuIFRoZSBcZkJ2YXJpYWJsZVxmUCB2YXIgaXMgZW5jb2RlZCBhcyBvY3RldCBzdHJpbmcuCkBAIC0xMTQzLDcgKzExNjAsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQzMCBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ0OCBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2Nfb3BhcXVlICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYW4gb2JqZWN0IGlkZW50aWZpZXIgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtMTE3NCw3ICsxMTkxLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA5NTIgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA5NjMgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX3RpbWV0aWNrcyAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhciwgY29uc3Qgc3RydWN0IFxmQmVudW1fbGlzdFxmUCAqIGVudW1zLCBjb25zdCBjaGFyICogaGludCwgY29uc3QgY2hhciAqIHVuaXRzKSIKIC5QUAogUHJpbnRzIGEgdGltZXRpY2sgXGZCdmFyaWFibGVcZlAgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtMTIwNSw3ICsxMjIyLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMTEyIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTEyMyBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2NfdWludGVnZXIgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTEyMzYsNyArMTI1Myw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTM2MyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEzNzQgb2YgZmlsZSBtaWIuYy4KIC5TUyAiY2hhciogdXB0aW1lX3N0cmluZyAodV9sb25nIHRpbWV0aWNrcywgY2hhciAqIGJ1ZikiCiAuUFAKIENvbnZlcnRzIHRpbWV0aWNrcyB0byBob3VycywgbWludXRlcywgc2Vjb25kcyBzdHJpbmcuIENNVSBjb21wYXRpYmxlIGRvZXMgbm90IHNob3cgY2VudGlzZWNvbmRzLgpAQCAtMTI2MCw3ICsxMjc3LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1ODE0IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNTk2MSBvZiBmaWxlIG1pYi5jLgogLlNIICJWYXJpYWJsZSBEb2N1bWVudGF0aW9uIgogLlBQIAogLlNTICJcZkJQcmVmaXhMaXN0XGZQIG1pYl9wcmVmaXhlc1tdIlxmQkluaXRpYWwgdmFsdWU6XGZQCkBAIC0xMjc3LDcgKzEyOTQsNyBAQAogfQogLmZpCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNjMgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxODEgb2YgZmlsZSBtaWIuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMgYi9tYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMKaW5kZXggZTk0MWIwOS4uZDM2NjkyMSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zCisrKyBiL21hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibW9kZV9lbmRfY2FsbCIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJtb2RlX2VuZF9jYWxsIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zIGIvbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMwppbmRleCBjNmIyYzRkLi5lMzc0MzY1IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zCisrKyBiL21hbi9uZXRzbm1wX211bHRpcGxleGVyLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm11bHRpcGxleGVyIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm11bHRpcGxleGVyIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMKaW5kZXggMmZlNmZlNC4uZDM3MDk2MSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zCisrKyBiL21hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMyBiL21hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zCmluZGV4IDdlODUyYmMuLmU4YTI5MWMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zCisrKyBiL21hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJuZXRzbm1wX2NvbHVtbl9pbmZvX3QiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibmV0c25tcF9jb2x1bW5faW5mb190IiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC00MywxNCArNDMsMTQgQEAKIAogT1ZFUkxBUFBJTkcgUkFOR0VTIEFSRSBOT1QgU1VQUE9SVEVELiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUyIG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSA1OCBvZiBmaWxlIHRhYmxlLmguCiAuU0ggIkZpZWxkIERvY3VtZW50YXRpb24iCiAuUFAgCiAuU1MgImNoYXIgXGZCbmV0c25tcF9jb2x1bW5faW5mb190OjpsaXN0X2NvdW50XGZQIgogLlBQCiBvbmx5IHVzZWZ1bCBpZiBpc1JhbmdlID09IDAgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1NSBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgNjEgb2YgZmlsZSB0YWJsZS5oLgogCiAuU0ggIkF1dGhvciIKIC5QUCAKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMyBiL21hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMwppbmRleCBkZTU3OWE4Li4xY2ZkNjlkIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJuZXRzbm1wX2RhdGFfbGlzdF9zIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm5ldHNubXBfZGF0YV9saXN0X3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMKaW5kZXggMDczMWFkMi4uODVkZDNlMSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zCmluZGV4IDM1OWY3ODguLjQyNjZlMDIgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0c25tcF9pdGVyYXRvcl9pbmZvX3MiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibmV0c25tcF9pdGVyYXRvcl9pbmZvX3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMyBiL21hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMwppbmRleCAzNjc5MWIxLi42YWI1N2EwIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJuZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm5ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMKaW5kZXggOTM0YWUwOS4uNzQ5NDFmOSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMKaW5kZXggNjVmYjNjYS4uNTU1NjI2MSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfbWliX2hhbmRsZXJfcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX21pYl9oYW5kbGVyX3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE0YzVhNgotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zCkBAIC0wLDAgKzEsODUgQEAKKy5USCAibmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5hZCBsCisubmgKKy5TSCBOQU1FCituZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MgXC0gCisuUFAKK2NhbGxiYWNrIGhlYWRlciAgCisKKy5TSCBTWU5PUFNJUworLmJyCisuUFAKKy5QUAorXGZDI2luY2x1ZGUgPG9iamVjdF9tb25pdG9yLmg+XGZQCisuU1MgIkRhdGEgRmllbGRzIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgInVuc2lnbmVkIGludCBcZkJldmVudFxmUCIKKy5icgorLlJJICJcZkljYWxsYmFjayB0eXBlIFxmUCIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9pbmRleFxmUCBcZkJtb25pdG9yZWRfb2JqZWN0XGZQIgorLmJyCisuUkkgIlxmSXJlZ2lzdGVyZWQgb2lkIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQnByaW9yaXR5XGZQIgorLmJyCisuUkkgIlxmSXByaW9yaXR5IFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQndhdGNoZXJfZGF0YVxmUCIKKy5icgorLlJJICJcZklwb2ludGVyIGdpdmVuIGJ5IHdhdGNoZXIgYXQgcmVnaXN0cmF0aW9uIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQm9iamVjdF9pbmZvXGZQIgorLmJyCisuUkkgIlxmSXBvaW50ZXIgcGFzc2VkIGZyb20gdGhlIG1vbml0b3JlZCBvYmplY3QgXGZQIgorLnRpIC0xYworLlJJICJzdHJ1Y3QgXGZCbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zXGZQICogXGZCcHJpdmF0ZVxmUCIKKy5icgorLlJJICJcZklETyBOT1QgVVNFLCBJTlRFUk5BTCBVU0UgT05MWS4gXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCcmVmc1xmUCIKKy5icgorLmluIC0xYworLlNIICJEZXRhaWxlZCBEZXNjcmlwdGlvbiIKKy5QUCAKK2NhbGxiYWNrIGhlYWRlciAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDY0IG9mIGZpbGUgb2JqZWN0X21vbml0b3IuaC4KKy5TSCAiRmllbGQgRG9jdW1lbnRhdGlvbiIKKy5QUCAKKy5TUyAidW5zaWduZWQgaW50IFxmQm5ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfczo6ZXZlbnRcZlAiCisuUFAKK2NhbGxiYWNrIHR5cGUgCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA2NyBvZiBmaWxlIG9iamVjdF9tb25pdG9yLmguCisuU1MgIlxmQm5ldHNubXBfaW5kZXhcZlAgXGZCbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zOjptb25pdG9yZWRfb2JqZWN0XGZQIgorLlBQCityZWdpc3RlcmVkIG9pZCAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDcwIG9mIGZpbGUgb2JqZWN0X21vbml0b3IuaC4KKy5TUyAidm9pZCogXGZCbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zOjpvYmplY3RfaW5mb1xmUCIKKy5QUAorcG9pbnRlciBwYXNzZWQgZnJvbSB0aGUgbW9uaXRvcmVkIG9iamVjdCAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDc5IG9mIGZpbGUgb2JqZWN0X21vbml0b3IuaC4KKy5TUyAiaW50IFxmQm5ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfczo6cHJpb3JpdHlcZlAiCisuUFAKK3ByaW9yaXR5IAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNzMgb2YgZmlsZSBvYmplY3RfbW9uaXRvci5oLgorLlNTICJzdHJ1Y3QgXGZCbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zXGZQKiBcZkJuZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3M6OnByaXZhdGVcZlBcZkMgW3JlYWRdXGZQIgorLlBQCitETyBOT1QgVVNFLCBJTlRFUk5BTCBVU0UgT05MWS4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA4MiBvZiBmaWxlIG9iamVjdF9tb25pdG9yLmguCisuU1MgInZvaWQqIFxmQm5ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfczo6d2F0Y2hlcl9kYXRhXGZQIgorLlBQCitwb2ludGVyIGdpdmVuIGJ5IHdhdGNoZXIgYXQgcmVnaXN0cmF0aW9uIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNzYgb2YgZmlsZSBvYmplY3RfbW9uaXRvci5oLgorCisuU0ggIkF1dGhvciIKKy5QUCAKK0dlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zCmluZGV4IDE1YmQxNjguLjZmNGFmMTggMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfcmVxdWVzdF9pbmZvX3MiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibmV0c25tcF9yZXF1ZXN0X2luZm9fcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMwppbmRleCAxZWM1ZTliLi5lOGIwYzMzIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMzksMzQgKzM5LDM0IEBACiAuUFAgCiBUYWJsZSByZWdpc3RyYXRpb24gc3RydWN0dXJlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc0IG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSA4MCBvZiBmaWxlIHRhYmxlLmguCiAuU0ggIkZpZWxkIERvY3VtZW50YXRpb24iCiAuUFAgCiAuU1MgIlxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCogXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zOjppbmRleGVzXGZQIgogLlBQCiBsaXN0IG9mIHZhcmJpbmRzIHdpdGggb25seSAndHlwZScgc2V0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzYgb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgyIG9mIGZpbGUgdGFibGUuaC4KIC5TUyAidW5zaWduZWQgaW50IFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fczo6bWF4X2NvbHVtblxmUCIKIC5QUAogdGhlIG1heGltdW0gY29sdW1ucyBudW1iZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NyBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgOTMgb2YgZmlsZSB0YWJsZS5oLgogLlNTICJ1bnNpZ25lZCBpbnQgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zOjptaW5fY29sdW1uXGZQIgogLlBQCiB0aGUgbWluaW11bSBjb2x1bW5zIG51bWJlci4gSWYgdGhlcmUgYXJlIGNvbHVtbnMgaW4tYmV0d2VlbiB3aGljaCBhcmUgbm90IHZhbGlkLCB1c2UgdmFsaWRfY29sdW1ucyB0byBnZXQgYXV0b21hdGljIGNvbHVtbiByYW5nZSBjaGVja2luZy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NSBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgOTEgb2YgZmlsZSB0YWJsZS5oLgogLlNTICJ1bnNpZ25lZCBpbnQgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zOjpudW1iZXJfaW5kZXhlc1xmUCIKIC5QUAogY2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzggb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg0IG9mIGZpbGUgdGFibGUuaC4KIC5TUyAiXGZCbmV0c25tcF9jb2x1bW5faW5mb1xmUCogXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zOjp2YWxpZF9jb2x1bW5zXGZQIgogLlBQCiBtb3JlIGRldGFpbHMgb24gY29sdW1ucyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDkwIG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSA5NiBvZiBmaWxlIHRhYmxlLmguCiAKIC5TSCAiQXV0aG9yIgogLlBQIApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zCmluZGV4IDU1NmM4NjkuLjNiOTQzOTcgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNDAsMjQgKzQwLDI0IEBACiAuUFAgCiBUaGUgdGFibGUgcmVxdWVzdCBpbmZvIHN0cnVjdHVyZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDIgb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEwOCBvZiBmaWxlIHRhYmxlLmguCiAuU0ggIkZpZWxkIERvY3VtZW50YXRpb24iCiAuUFAgCiAuU1MgInVuc2lnbmVkIGludCBcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zOjpjb2xudW1cZlAiCiAuUFAKIDAgaWYgT0lEIG5vdCBsb25nIGVub3VnaCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEwNCBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTEwIG9mIGZpbGUgdGFibGUuaC4KIC5TUyAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQKiBcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zOjppbmRleGVzXGZQIgogLlBQCiBjb250ZW50cyBmcmVlZCBieSBoZWxwZXIgdXBvbiBleGl0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTA4IG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxMTQgb2YgZmlsZSB0YWJsZS5oLgogLlNTICJ1bnNpZ25lZCBpbnQgXGZCbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fczo6bnVtYmVyX2luZGV4ZXNcZlAiCiAuUFAKIDAgaWYgZmFpbHVyZSB0byBwYXJzZSBhbnkgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDYgb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExMiBvZiBmaWxlIHRhYmxlLmguCiAKIC5TSCAiQXV0aG9yIgogLlBQIApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMyBiL21hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNjMmZiNAotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMKQEAgLTAsMCArMSwzMyBAQAorLlRIICJudWxsX2NvbnRhaW5lciIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuYWQgbAorLm5oCisuU0ggTkFNRQorbnVsbF9jb250YWluZXIgXC0gCisuUFAKK0hlbHBzIHlvdSBpbXBsZW1lbnQgc3BlY2lhbGl6ZWQgY29udGFpbmVycy4gIAorCisuU1MgIkZ1bmN0aW9ucyIKKworLmluICsxYworLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCAqIFxmQm5ldHNubXBfY29udGFpbmVyX2dldF9udWxsXGZQICh2b2lkKSIKKy5icgorLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX2ZhY3RvcnlcZlAgKiBcZkJuZXRzbm1wX2NvbnRhaW5lcl9nZXRfbnVsbF9mYWN0b3J5XGZQICh2b2lkKSIKKy5icgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfY29udGFpbmVyX251bGxfaW5pdFxmUCAodm9pZCkiCisuYnIKKy5pbiAtMWMKKy5TSCAiRGV0YWlsZWQgRGVzY3JpcHRpb24iCisuUFAgCitIZWxwcyB5b3UgaW1wbGVtZW50IHNwZWNpYWxpemVkIGNvbnRhaW5lcnMuIAorCitUaGlzIGlzIGEgc2ltcGxlIGNvbnRhaW5lciB0aGF0IGRvZXNuJ3QgYWN0dWFsbHkgY29udGFpbiBhbnl0aGluZy4gQWxsIHRoZSBtZXRob2RzIHNpbXBseSBsb2cgYSBkZWJ1ZyBtZXNzYWdlIGFuZCByZXR1cm4uCisuUFAKK1RoZSBvcmlnaW5hbCBpbnRlbnQgZm9yIHRoaXMgY29udGFpbmVyIGlzIGFzIGEgd3JhcHBlciBmb3IgYSBzcGVjaWFsaXplZCBjb250YWluZXIuIEltcGxlbWVudCB0aGUgZnVuY3Rpb25zIHlvdSBuZWVkLCBjcmVhdGUgYSBudWxsX2NvbnRhaW5lciwgYW5kIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGZ1bmN0aW9ucyB3aXRoIHlvdXIgc3BlY2lhbGl6ZWQgdmVyc2lvbnMuCisuUFAKK1lvdSBjYW4gdXNlIHRoZSAnY29udGFpbmVyOm51bGwnIGRlYnVnIHRva2VuIHRvIHNlZSB3aGF0IGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLCB0byBoZWxwIGRldGVybWluZSBpZiB5b3UgbmVlZCB0byBpbXBsZW1lbnQgdGhlbS4gCisuU0ggIkF1dGhvciIKKy5QUCAKK0dlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfb2lkX3N0YXNoLjMgYi9tYW4vbmV0c25tcF9vaWRfc3Rhc2guMwppbmRleCA4YWIwMzRiLi5mYWQyOGU5IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9vaWRfc3Rhc2guMworKysgYi9tYW4vbmV0c25tcF9vaWRfc3Rhc2guMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiU3RvcmUgYW5kIHJldHJpZXZlIGRhdGEgcmVmZXJlbmNlZCBieSBhbiBPSUQuIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIlN0b3JlIGFuZCByZXRyaWV2ZSBkYXRhIHJlZmVyZW5jZWQgYnkgYW4gT0lELiIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTgsMTEgKzE4LDExIEBACiAuYnIKIC5SSSAiXGZJQ3JlYXRlcyBhIG5ldHNubXBfb2lkX3N0YXNoX25vZGUuIFxmUCIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfb2lkX3N0YXNoX2FkZF9kYXRhXGZQIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICoqcm9vdCwgb2lkICpsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuLCB2b2lkICpteWRhdGEpIgorLlJJICJpbnQgXGZCbmV0c25tcF9vaWRfc3Rhc2hfYWRkX2RhdGFcZlAgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKipyb290LCBjb25zdCBvaWQgKmxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4sIHZvaWQgKm15ZGF0YSkiCiAuYnIKIC5SSSAiXGZJYWRkcyBkYXRhIHRvIHRoZSBzdGFzaCBhdCBhIGdpdmVuIG9pZC4gXGZQIgogLnRpIC0xYwotLlJJICJcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICogXGZCbmV0c25tcF9vaWRfc3Rhc2hfZ2V0X25vZGVcZlAgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKnJvb3QsIG9pZCAqbG9va3VwLCBzaXplX3QgbG9va3VwX2xlbikiCisuUkkgIlxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKiBcZkJuZXRzbm1wX29pZF9zdGFzaF9nZXRfbm9kZVxmUCAoXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCAqcm9vdCwgY29uc3Qgb2lkICpsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKSIKIC5icgogLlJJICJcZklyZXR1cm5zIGEgXGZCbm9kZVxmUCBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBPSUQuIFxmUCIKIC50aSAtMWMKQEAgLTMwLDcgKzMwLDcgQEAKIC5icgogLlJJICJcZklyZXR1cm5zIHRoZSBuZXh0IFxmQm5vZGVcZlAgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gT0lELiBcZlAiCiAudGkgLTFjCi0uUkkgInZvaWQgKiBcZkJuZXRzbm1wX29pZF9zdGFzaF9nZXRfZGF0YVxmUCAoXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCAqcm9vdCwgb2lkICpsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKSIKKy5SSSAidm9pZCAqIFxmQm5ldHNubXBfb2lkX3N0YXNoX2dldF9kYXRhXGZQIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICpyb290LCBjb25zdCBvaWQgKmxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4pIgogLmJyCiAuUkkgIlxmSXJldHVybnMgYSBkYXRhIHBvaW50ZXIgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gT0lELiBcZlAiCiAudGkgLTFjCkBAIC02MCw3ICs2MCw3IEBACiBJdCBzdG9yZXMgYSBidW5jaCBvZiBkYXRhIHBvaW50ZXJzIHdpdGhpbiBhIG1lbW9yeSBcZkJ0cmVlXGZQIHRoYXQgYWxsb3dzIGZhaXJseSBlZmZpY2llbnQgbG9va3VwcyB3aXRoIGEgaGVhdmlseSBwb3B1bGF0ZWQgXGZCdHJlZVxmUC4gCiAuU0ggIkZ1bmN0aW9uIERvY3VtZW50YXRpb24iCiAuUFAgCi0uU1MgImludCBuZXRzbm1wX29pZF9zdGFzaF9hZGRfZGF0YSAoXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCAqKiByb290LCBvaWQgKiBsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuLCB2b2lkICogbXlkYXRhKSIKKy5TUyAiaW50IG5ldHNubXBfb2lkX3N0YXNoX2FkZF9kYXRhIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICoqIHJvb3QsIGNvbnN0IG9pZCAqIGxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4sIHZvaWQgKiBteWRhdGEpIgogLlBQCiBhZGRzIGRhdGEgdG8gdGhlIHN0YXNoIGF0IGEgZ2l2ZW4gb2lkLiBcZkJQYXJhbWV0ZXJzOlxmUAogLlJTIDQKQEAgLTEyMCw3ICsxMjAsNyBAQAogCiAuUFAKIERlZmluaXRpb24gYXQgbGluZSA0MDEgb2YgZmlsZSBvaWRfc3Rhc2guYy4KLS5TUyAidm9pZCogbmV0c25tcF9vaWRfc3Rhc2hfZ2V0X2RhdGEgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKiByb290LCBvaWQgKiBsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKSIKKy5TUyAidm9pZCogbmV0c25tcF9vaWRfc3Rhc2hfZ2V0X2RhdGEgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKiByb290LCBjb25zdCBvaWQgKiBsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKSIKIC5QUAogcmV0dXJucyBhIGRhdGEgcG9pbnRlciBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBPSUQuIFRoaXMgaXMgZXF1aXZlbGVudCB0byBuZXRzbm1wX29pZF9zdGFzaF9nZXRfbm9kZSwgYnV0IHJldHVybnMgb25seSB0aGUgZGF0YSBub3QgdGhlIGVudGlyZSBcZkJub2RlXGZQLgogLlBQCkBAIC0xMzYsNyArMTM2LDcgQEAKIAogLlBQCiBEZWZpbml0aW9uIGF0IGxpbmUgMjgyIG9mIGZpbGUgb2lkX3N0YXNoLmMuCi0uU1MgIlxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAqIG5ldHNubXBfb2lkX3N0YXNoX2dldF9ub2RlIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICogcm9vdCwgb2lkICogbG9va3VwLCBzaXplX3QgbG9va3VwX2xlbikiCisuU1MgIlxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAqIG5ldHNubXBfb2lkX3N0YXNoX2dldF9ub2RlIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICogcm9vdCwgY29uc3Qgb2lkICogbG9va3VwLCBzaXplX3QgbG9va3VwX2xlbikiCiAuUFAKIHJldHVybnMgYSBcZkJub2RlXGZQIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIE9JRC4gXGZCUGFyYW1ldGVyczpcZlAKIC5SUyA0CmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9vbGRfYXBpLjMgYi9tYW4vbmV0c25tcF9vbGRfYXBpLjMKaW5kZXggMWU2Y2M3NS4uYTEzMjhkZSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfb2xkX2FwaS4zCisrKyBiL21hbi9uZXRzbm1wX29sZF9hcGkuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAib2xkX2FwaSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJvbGRfYXBpIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0zNywyNCArMzcsMjQgQEAKIC5QUAogcmV0dXJucyBhIG9sZF9hcGkgaGFuZGxlciB0aGF0IHNob3VsZCBiZSB0aGUgZmluYWwgY2FsbGluZyBoYW5kbGVyLiBEb24ndCB1c2UgdGhpcyBmdW5jdGlvbi4gVXNlIHRoZSBcZkJuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKVxmUCBmdW5jdGlvbiBpbnN0ZWFkLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM3IG9mIGZpbGUgb2xkX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM4IG9mIGZpbGUgb2xkX2FwaS5jLgogLlNTICJpbnQgbmV0c25tcF9vbGRfYXBpX2hlbHBlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIgogLlBQCiBpbXBsZW1lbnRzIHRoZSBvbGRfYXBpIGhhbmRsZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjYgb2YgZmlsZSBvbGRfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjM1IG9mIGZpbGUgb2xkX2FwaS5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9taWJfdGFibGVfcm93IChjb25zdCBjaGFyICogbW9kdWxlTmFtZSwgc3RydWN0IFxmQnZhcmlhYmxlXGZQICogdmFyLCBzaXplX3QgdmFyc2l6ZSwgc2l6ZV90IG51bXZhcnMsIG9pZCAqIG1pYmxvYywgc2l6ZV90IG1pYmxvY2xlbiwgaW50IHByaW9yaXR5LCBpbnQgdmFyX3N1YmlkLCBcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiBzcywgY29uc3QgY2hhciAqIGNvbnRleHQsIGludCB0aW1lb3V0LCBpbnQgZmxhZ3MpIgogLlBQCiByZWdpc3RlcnMgYSByb3cgd2l0aGluIGEgbWliIHRhYmxlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTA3IG9mIGZpbGUgb2xkX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExNiBvZiBmaWxlIG9sZF9hcGkuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSAoY29uc3QgY2hhciAqIG1vZHVsZU5hbWUsIHN0cnVjdCBcZkJ2YXJpYWJsZVxmUCAqIHZhciwgc2l6ZV90IHZhcnNpemUsIHNpemVfdCBudW12YXJzLCBvaWQgKiBtaWJsb2MsIHNpemVfdCBtaWJsb2NsZW4sIGludCBwcmlvcml0eSwgaW50IHJhbmdlX3N1YmlkLCBvaWQgcmFuZ2VfdWJvdW5kLCBcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiBzcywgY29uc3QgY2hhciAqIGNvbnRleHQsIGludCB0aW1lb3V0LCBpbnQgZmxhZ3MpIgogLlBQCiBSZWdpc3RlcnMgYW4gb2xkIEFQSSBzZXQgaW50byB0aGUgbWliIFxmQnRyZWVcZlAuIEZ1bmN0aW9uYWxseSB0aGlzIG1pbWljcyB0aGUgb2xkIHJlZ2lzdGVyX21pYl9jb250ZXh0KCkgZnVuY3Rpb24gKGFuZCBpbiBmYWN0IHRoZSBuZXcgcmVnaXN0ZXJfbWliX2NvbnRleHQoKSBmdW5jdGlvbiBtZXJlbHkgY2FsbHMgdGhpcyBuZXcgb2xkX2FwaSBvbmUpLiAKIC5QUAogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZ2luZm8pOyBhbHJlYWR5IGZyZWVkIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDggb2YgZmlsZSBvbGRfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDkgb2YgZmlsZSBvbGRfYXBpLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfcmVhZF9jb25maWcuMyBiL21hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMKaW5kZXggZDI0MGUxYi4uNTNjMTM3YSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfcmVhZF9jb25maWcuMworKysgYi9tYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJwYXJzaW5nIHZhcmlvdXMgY29uZmlndXJhdGlvbiBmaWxlcyBhdCBydW4gdGltZSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJwYXJzaW5nIHZhcmlvdXMgY29uZmlndXJhdGlvbiBmaWxlcyBhdCBydW4gdGltZSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMzcsNyArMzcsNyBAQAogLlJJICJ2b2lkIFxmQnVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyXGZQIChjb25zdCBjaGFyICp0b2tlbikiCiAuYnIKIC50aSAtMWMKLS5SSSAidm9pZCBcZkJ1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnNcZlAgKCkiCisuUkkgInZvaWQgXGZCdW5yZWdpc3Rlcl9hbGxfY29uZmlnX2hhbmRsZXJzXGZQICh2b2lkKSIKIC5icgogLnRpIC0xYwogLlJJICJzdHJ1Y3QgXGZCY29uZmlnX2xpbmVcZlAgKiBcZkJyZWFkX2NvbmZpZ19nZXRfaGFuZGxlcnNcZlAgKGNvbnN0IGNoYXIgKnR5cGUpIgpAQCAtOTcsMTkgKzk3LDE5IEBACiAuUkkgInZvaWQgXGZCc2V0X2NvbmZpZ3VyYXRpb25fZGlyZWN0b3J5XGZQIChjb25zdCBjaGFyICpkaXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImNvbnN0IGNoYXIgKiBcZkJnZXRfY29uZmlndXJhdGlvbl9kaXJlY3RvcnlcZlAgKCkiCisuUkkgImNvbnN0IGNoYXIgKiBcZkJnZXRfY29uZmlndXJhdGlvbl9kaXJlY3RvcnlcZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCiAuUkkgInZvaWQgXGZCc2V0X3BlcnNpc3RlbnRfZGlyZWN0b3J5XGZQIChjb25zdCBjaGFyICpkaXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImNvbnN0IGNoYXIgKiBcZkJnZXRfcGVyc2lzdGVudF9kaXJlY3RvcnlcZlAgKCkiCisuUkkgImNvbnN0IGNoYXIgKiBcZkJnZXRfcGVyc2lzdGVudF9kaXJlY3RvcnlcZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCiAuUkkgInZvaWQgXGZCc2V0X3RlbXBfZmlsZV9wYXR0ZXJuXGZQIChjb25zdCBjaGFyICpwYXR0ZXJuKSIKIC5icgogLnRpIC0xYwotLlJJICJjb25zdCBjaGFyICogXGZCZ2V0X3RlbXBfZmlsZV9wYXR0ZXJuXGZQICgpIgorLlJJICJjb25zdCBjaGFyICogXGZCZ2V0X3RlbXBfZmlsZV9wYXR0ZXJuXGZQICh2b2lkKSIKIC5icgogLnRpIC0xYwogLlJJICJ2b2lkIFxmQnJlYWRfY29uZmlnX2ZpbGVzXGZQIChpbnQgd2hlbikiCkBAIC0xMzEsNiArMTMxLDEyIEBACiAuUkkgInZvaWQgXGZCc25tcF9jbGVhbl9wZXJzaXN0ZW50XGZQIChjb25zdCBjaGFyICp0eXBlKSIKIC5icgogLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfY29uZmlnX2Vycm9yXGZQIChjb25zdCBjaGFyICpzdHIsLi4uKSIKKy5icgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfY29uZmlnX3dhcm5cZlAgKGNvbnN0IGNoYXIgKnN0ciwuLi4pIgorLmJyCisudGkgLTFjCiAuUkkgInZvaWQgXGZCY29uZmlnX3BlcnJvclxmUCAoY29uc3QgY2hhciAqc3RyKSIKIC5icgogLnRpIC0xYwpAQCAtMjUyLDcgKzI1OCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTgzNiBvZiBmaWxlIHJlYWRfY29uZmlnLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTg1OSBvZiBmaWxlIHJlYWRfY29uZmlnLmMuCiAuU1MgInZvaWQgcmVhZF9jb25maWdfc3RvcmUgKGNvbnN0IGNoYXIgKiB0eXBlLCBjb25zdCBjaGFyICogbGluZSkiCiAuUFAKIHJlYWRfY29uZmlnX3N0b3JlIGludGVuZGVkIGZvciB1c2UgYnkgYXBwbGljYXRpb25zIHRvIHN0b3JlIHBlcm1lbmFudCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGdlbmVyYXRlZCBieSBzZXRzIG9yIHBlcnNpc3RlbnQgY291bnRlcnMuIEFwcGVuZHMgbGluZSB0byBhIGZpbGUgbmFtZWQgZWl0aGVyIEVOVihTTk1QX1BFUlNJU1RFTlRfRklMRSkgb3IgJzxORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZPi88dHlwZT4uY29uZicuIEFkZHMgYSB0cmFpbGluZyBuZXdsaW5lIHRvIHRoZSBzdG9yZWQgZmlsZSBpZiBuZWNlc3NhcnkuCkBAIC0yNzEsNyArMjc3LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjcyIG9mIGZpbGUgcmVhZF9jb25maWcuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjYyIG9mIGZpbGUgcmVhZF9jb25maWcuYy4KIC5TUyAiY2hhciogcmVhZF9jb25maWdfc3RvcmVfZGF0YSAoaW50IHR5cGUsIGNoYXIgKiBzdG9yZXRvLCB2b2lkICogZGF0YXB0ciwgc2l6ZV90ICogbGVuKSIKIC5QUAogcmVhZF9jb25maWdfc3RvcmVfZGF0YSBzdG9yZXMgZGF0YSBvZiBhIGdpdmVuIHR5cGUgdG8gYSBjb25maWd1cmF0aW9uIGxpbmUgaW50byB0aGUgc3RvcmV0byBidWZmZXIuIENhbGxzIHJlYWRfY29uZmlnX3N0b3JlX2RhdGFfcHJlZml4IHdpdGggdGhlIHByZWZpeCBwYXJhbWV0ZXIgc2V0IHRvIGEgY2hhciBzcGFjZS4gVGhlIHN1cHBvcnRlZCB0eXBlcyBhcmU6CkBAIC0zMDgsMTAgKzMxNCwxMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5OTUgb2YgZmlsZSByZWFkX2NvbmZpZy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIwMTMgb2YgZmlsZSByZWFkX2NvbmZpZy5jLgogLlNTICJzdHJ1Y3QgXGZCY29uZmlnX2xpbmVcZlAqIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyIChjb25zdCBjaGFyICogdHlwZSwgY29uc3QgY2hhciAqIHRva2VuLCB2b2lkKCopKGNvbnN0IGNoYXIgKiwgY2hhciAqKSBwYXJzZXIsIHZvaWQoKikodm9pZCkgcmVsZWFzZXIsIGNvbnN0IGNoYXIgKiBoZWxwKVxmQyBbcmVhZF1cZlAiCiAuUFAKLXJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyIHJlZ2lzdGVycyBoYW5kbGVycyBmb3IgY2VydGFpbiB0b2tlbnMgc3BlY2lmaWVkIGluIGNlcnRhaW4gdHlwZXMgb2YgZmlsZXMuIEFsbG93cyBhIFxmQm1vZHVsZVxmUCB3cml0ZXIgdXNlL3JlZ2lzdGVyIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYmFzZWQgb2ZmIG9mIHRoZSB0eXBlIHBhcmFtZXRlci4gQSBcZkJtb2R1bGVcZlAgd3JpdGVyIG1heSB3YW50IHRvIHNldCB1cCBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIHNlcGFyYXRlIG91dCByZWxhdGVkIHRhc2tzL3ZhcmlhYmxlcyBvciBqdXN0IGZvciBtYW5hZ2VtZW50IG9mIHdoZXJlIHRvIHB1dCB0b2tlbnMgYXMgdGhlIFxmQm1vZHVsZVxmUCBvciBtb2R1bGVzIGdldCBtb3JlIGNvbXBsZXggaW4gcmVnYXJkIHRvIGhhbmRsaW5nIHRva2VuIHJlZ2lzdHJhdGlvbnMuCityZWdpc3Rlcl9jb25maWdfaGFuZGxlciByZWdpc3RlcnMgaGFuZGxlcnMgZm9yIGNlcnRhaW4gdG9rZW5zIHNwZWNpZmllZCBpbiBjZXJ0YWluIHR5cGVzIG9mIGZpbGVzLiBMaWJyYXJ5IEFQSSByb3V0aW5lcyBjb25jZXJuZWQgd2l0aCBjb25maWd1cmF0aW9uIGFuZCBjb250cm9sIG9mIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGxpYnJhcnksIGFnZW50IGFuZCBvdGhlciBhcHBsaWNhdGlvbnMuCisuUFAKK0FsbG93cyBhIFxmQm1vZHVsZVxmUCB3cml0ZXIgdXNlL3JlZ2lzdGVyIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYmFzZWQgb2ZmIG9mIHRoZSB0eXBlIHBhcmFtZXRlci4gQSBcZkJtb2R1bGVcZlAgd3JpdGVyIG1heSB3YW50IHRvIHNldCB1cCBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIHNlcGFyYXRlIG91dCByZWxhdGVkIHRhc2tzL3ZhcmlhYmxlcyBvciBqdXN0IGZvciBtYW5hZ2VtZW50IG9mIHdoZXJlIHRvIHB1dCB0b2tlbnMgYXMgdGhlIFxmQm1vZHVsZVxmUCBvciBtb2R1bGVzIGdldCBtb3JlIGNvbXBsZXggaW4gcmVnYXJkIHRvIGhhbmRsaW5nIHRva2VuIHJlZ2lzdHJhdGlvbnMuCiAuUFAKIFxmQlBhcmFtZXRlcnM6XGZQCiAuUlMgNApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfcmVhZF9vbmx5LjMgYi9tYW4vbmV0c25tcF9yZWFkX29ubHkuMwppbmRleCA1M2E0MGZkLi4xZTVhMzViIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9yZWFkX29ubHkuMworKysgYi9tYW4vbmV0c25tcF9yZWFkX29ubHkuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAicmVhZF9vbmx5IiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInJlYWRfb25seSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMzIsMTIgKzMyLDEyIEBACiAuUFAKIHJldHVybnMgYSByZWFkX29ubHkgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyOSBvZiBmaWxlIHJlYWRfb25seS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzIG9mIGZpbGUgcmVhZF9vbmx5LmMuCiAuU1MgInZvaWQgbmV0c25tcF9pbml0X3JlYWRfb25seV9oZWxwZXIgKHZvaWQpIgogLlBQCiBpbml0aWFsaXplcyB0aGUgcmVhZF9vbmx5IGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHJlYWRfb25seSBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDgxIG9mIGZpbGUgcmVhZF9vbmx5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzIgb2YgZmlsZSByZWFkX29ubHkuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9yb3dfbWVyZ2UuMyBiL21hbi9uZXRzbm1wX3Jvd19tZXJnZS4zCmluZGV4IDk2YzYyZDIuLmM2ZGFhNGUgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3Jvd19tZXJnZS4zCisrKyBiL21hbi9uZXRzbm1wX3Jvd19tZXJnZS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJyb3dfbWVyZ2UiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAicm93X21lcmdlIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zY2FsYXIuMyBiL21hbi9uZXRzbm1wX3NjYWxhci4zCmluZGV4IDg5ZWQ0Y2MuLmRjY2E2NzEgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3NjYWxhci4zCisrKyBiL21hbi9uZXRzbm1wX3NjYWxhci4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJzY2FsYXIiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAic2NhbGFyIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC00Niw3ICs0Niw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDYgb2YgZmlsZSBzY2FsYXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NyBvZiBmaWxlIHNjYWxhci5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfc2NhbGFyIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbykiCiAuUFAKIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGEgcmVhZCBvbmx5IHNjYWxhciBoZWxwZXIgaGFuZGxlci4gVGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IHNpbWlsYXIgdG8gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIgdGhlIG9ubHkgYWRkaXRpb24gaXMgdGhhdCB0aGUgJ3JlYWRfb25seScgaGFuZGxlciBpcyBpbmplY3RlZCBpbnRvIHRoZSBoYW5kbGVyIGNoYWluIHByaW9yIHRvIGluamVjdGluZyB0aGUgc2VyaWFsaXplIGhhbmRsZXIgYW5kIHJlZ2lzdGVyaW5nIHJlZ2luZm8uCkBAIC03MCw3ICs3MCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTA5IG9mIGZpbGUgc2NhbGFyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTEwIG9mIGZpbGUgc2NhbGFyLmMuCiAuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhciAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8pIgogLlBQCiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBhIHNjYWxhciBoZWxwZXIgaGFuZGxlci4gVGhlIHJlZ2lzdGVyZWQgT0lELCByZWdpbmZvLT5yb290b2lkLCBzcGFjZSBpcyBleHRlbmRlZCBmb3IgdGhlIGluc3RhbmNlIHN1YmlkIHVzaW5nIHJlYWxsb2MoKSBidXQgdGhlIHJlZ2luZm8tPnJvb3RvaWRfbGVuIGxlbmd0aCBpcyBub3QgZXh0ZW5kZWQganVzdCB5ZXQuIC5UaGlzIGZ1bmN0aW9uIHN1YnNlcXVlbnRseSBpbmplY3RzIHRoZSBpbnN0YW5jZSwgc2NhbGFyLCBhbmQgc2VyaWFsaXplIGhlbHBlciBoYW5kbGVycyBiZWZvcmUgYWN0dWFsbHkgcmVnaXN0ZXJpbmcgcmVnaW5mby4KQEAgLTk2LDcgKzk2LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3NCBvZiBmaWxlIHNjYWxhci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc1IG9mIGZpbGUgc2NhbGFyLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMgYi9tYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMwppbmRleCBjYmJhOWIwLi41NDAyZmJjIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMworKysgYi9tYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic2NhbGFyX2dyb3VwIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInNjYWxhcl9ncm91cCIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc2VyaWFsaXplLjMgYi9tYW4vbmV0c25tcF9zZXJpYWxpemUuMwppbmRleCA0NDc0ZjNkLi5kZjA4ZTg5IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zZXJpYWxpemUuMworKysgYi9tYW4vbmV0c25tcF9zZXJpYWxpemUuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic2VyaWFsaXplIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInNlcmlhbGl6ZSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMzcsMjIgKzM3LDIyIEBACiAuUFAKIHJldHVybnMgYSBzZXJpYWxpemUgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMSBvZiBmaWxlIHNlcmlhbGl6ZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI1IG9mIGZpbGUgc2VyaWFsaXplLmMuCiAuU1MgInZvaWQgbmV0c25tcF9pbml0X3NlcmlhbGl6ZSAodm9pZCkiCiAuUFAKIGluaXRpYWxpemVzIHRoZSBzZXJpYWxpemUgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgc2VyaWFsaXplIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTMgb2YgZmlsZSBzZXJpYWxpemUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4NyBvZiBmaWxlIHNlcmlhbGl6ZS5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9zZXJpYWxpemUgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvKSIKIC5QUAogZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGFzIGNhbGxpbmcgXGZCbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKClcZlAgYnV0IGFsc28gaW5qZWN0cyBhIHNlcmlhbGl6ZSBoYW5kbGVyIGF0IHRoZSBzYW1lIHRpbWUgZm9yIHlvdS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0MCBvZiBmaWxlIHNlcmlhbGl6ZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM0IG9mIGZpbGUgc2VyaWFsaXplLmMuCiAuU1MgImludCBuZXRzbm1wX3NlcmlhbGl6ZV9oZWxwZXJfaGFuZGxlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIgogLlBQCiBJbXBsZW1lbnRzIHRoZSBzZXJpYWwgaGFuZGxlci4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0OCBvZiBmaWxlIHNlcmlhbGl6ZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQyIG9mIGZpbGUgc2VyaWFsaXplLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc25tcF9hZ2VudC4zIGIvbWFuL25ldHNubXBfc25tcF9hZ2VudC4zCmluZGV4IGI5MjFkYWQuLmQ2ZjQ3ODQgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3NubXBfYWdlbnQuMworKysgYi9tYW4vbmV0c25tcF9zbm1wX2FnZW50LjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldC1zbm1wIGFnZW50IHJlbGF0ZWQgcHJvY2Vzc2luZyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXQtc25tcCBhZ2VudCByZWxhdGVkIHByb2Nlc3NpbmciIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTUwLDYgKzUwLDI0IEBACiAKIC5pbiArMWMKIC50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2FnZW50X2FkZF9saXN0X2RhdGFcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmksIFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICpcZkJub2RlXGZQKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSBpbnQgXGZCbmV0c25tcF9hZ2VudF9yZW1vdmVfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqYXJpLCBjb25zdCBjaGFyICpuYW1lKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkICogXGZCbmV0c25tcF9hZ2VudF9nZXRfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqYXJpLCBjb25zdCBjaGFyICpuYW1lKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZnJlZV9hZ2VudF9kYXRhX3NldFxmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKmFyaSkiCisuYnIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2ZyZWVfYWdlbnRfZGF0YV9zZXRzXGZQIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqYXJpKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZnJlZV9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmkpIgorLmJyCisudGkgLTFjCiAuUkkgImludCBcZkJuZXRzbm1wX2FnZW50X2NoZWNrX3BhY2tldFxmUCAoXGZCbmV0c25tcF9zZXNzaW9uXGZQICosIHN0cnVjdCBcZkJuZXRzbm1wX3RyYW5zcG9ydF9zXGZQICosIHZvaWQgKiwgaW50KSIKIC5icgogLnRpIC0xYwpAQCAtNjEsNyArNzksNiBAQAogLnRpIC0xYwogLlJJICJpbnQgXGZCaGFuZGxlX3BkdVxmUCAoXGZCbmV0c25tcF9hZ2VudF9zZXNzaW9uXGZQICphc3ApIgogLmJyCi0uUkkgIlxmSVRoaXMgZnVuY3Rpb24gY2FsbHMgaW50byBuZXRzbm1wX3NldF9tb2RlX3JlcXVlc3RfZXJyb3IsIHNldHMgZXJyb3JfdmFsdWUgZ2l2ZW4gYSByZXFpbmZvLT5tb2RlIHZhbHVlLiBcZlAiCiAudGkgLTFjCiAuUkkgImludCBcZkJuZXRzbm1wX2hhbmRsZV9yZXF1ZXN0XGZQIChcZkJuZXRzbm1wX2FnZW50X3Nlc3Npb25cZlAgKmFzcCwgaW50IHN0YXR1cykiCiAuYnIKQEAgLTExMiw3ICsxMjksNyBAQAogLlJJICJORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZCBcZkJfZml4X2VuZG9mbWlidmlld1xmUCAoXGZCbmV0c25tcF9hZ2VudF9zZXNzaW9uXGZQICphc3ApIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJnZXROZXh0U2Vzc0lEXGZQICgpIgorLlJJICJpbnQgXGZCZ2V0TmV4dFNlc3NJRFxmUCAodm9pZCkiCiAuYnIKIC50aSAtMWMKIC5SSSAiaW50IFxmQmFnZW50X2NoZWNrX2FuZF9wcm9jZXNzXGZQIChpbnQgYmxvY2spIgpAQCAtMjQ5LDI0ICsyNjYsNiBAQAogLlJJICJ1X2xvbmcgXGZCbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lXGZQICh2b2lkKSIKIC5icgogLnRpIC0xYwotLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfYWdlbnRfYWRkX2xpc3RfZGF0YVxmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKmFyaSwgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKlxmQm5vZGVcZlApIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIGludCBcZkJuZXRzbm1wX2FnZW50X3JlbW92ZV9saXN0X2RhdGFcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmksIGNvbnN0IGNoYXIgKm5hbWUpIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgKiBcZkJuZXRzbm1wX2FnZW50X2dldF9saXN0X2RhdGFcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmksIGNvbnN0IGNoYXIgKm5hbWUpIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9mcmVlX2FnZW50X2RhdGFfc2V0XGZQIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqYXJpKSIKLS5icgotLnRpIC0xYwotLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZnJlZV9hZ2VudF9kYXRhX3NldHNcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmkpIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9mcmVlX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKmFyaSkiCi0uYnIKLS50aSAtMWMKIC5SSSAiaW50IFxmQm5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3JcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICpyZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCwgaW50IGVycm9yX3ZhbHVlKSIKIC5icgogLlJJICJcZklzZXQgZXJyb3IgZm9yIGEgcmVxdWVzdCBcZlAiCkBAIC0zMTYsNyArMzE1LDcgQEAKIC5QUAogc2V0IGVycm9yIGZvciBhIHJlcXVlc3QgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNDE3IG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM0MzEgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgImludCBhZ2VudF9jaGVja19hbmRfcHJvY2VzcyAoaW50IGJsb2NrKSIKIC5QUAogVGhpcyBmdW5jdGlvbiBjaGVja3MgZm9yIHBhY2tldHMgYXJyaXZpbmcgb24gdGhlIFNOTVAgcG9ydCBhbmQgcHJvY2Vzc2VzIHRoZW0oc25tcF9yZWFkKSBpZiBzb21lIGFyZSBmb3VuZCwgdXNpbmcgdGhlIHNlbGVjdCgpLiBJZiBibG9jayBpcyBub24gemVybywgdGhlIGZ1bmN0aW9uIGNhbGwgYmxvY2tzIHVudGlsIGEgcGFja2V0IGFycml2ZXMKQEAgLTMzMyw5MiArMzMyLDIyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTY2IG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDYyNiBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TUyAiaW50IGNoZWNrX2dldG5leHRfcmVzdWx0cyAoXGZCbmV0c25tcF9hZ2VudF9zZXNzaW9uXGZQICogYXNwKSIKIC5QUAogcmV0dXJucyAxIGlmIHRoZXJlIGFyZSB2YWxpZCBHRVRORVhUIHJlcXVlc3RzIGxlZnQuIFJldHVybnMgMCBpZiBub3QuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjgxOCBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyODgzIG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgaGFuZGxlX2dldG5leHRfbG9vcCAoXGZCbmV0c25tcF9hZ2VudF9zZXNzaW9uXGZQICogYXNwKSIKIC5QUAogcmVwZWF0ZWRseSBjYWxscyBnZXRuZXh0IGhhbmRsZXJzIGxvb2tpbmcgZm9yIGFuIGFuc3dlciB0aWxsIGFsbCByZXF1ZXN0cyBhcmUgc2F0aXNpZmllZC4gSXQncyBleHBlY3RlZCB0aGF0IG9uZSBwYXNzIGhhcyBiZWVuIG1hZGUgYmVmb3JlIGVudGVyaW5nIHRoaXMgZnVuY3Rpb24gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyOTM1IG9mIGZpbGUgc25tcF9hZ2VudC5jLgotLlNTICJpbnQgaGFuZGxlX3BkdSAoXGZCbmV0c25tcF9hZ2VudF9zZXNzaW9uXGZQICogYXNwKSIKLS5QUAotVGhpcyBmdW5jdGlvbiBjYWxscyBpbnRvIG5ldHNubXBfc2V0X21vZGVfcmVxdWVzdF9lcnJvciwgc2V0cyBlcnJvcl92YWx1ZSBnaXZlbiBhIHJlcWluZm8tPm1vZGUgdmFsdWUuIEl0J3MgdXNlZCB0byBzZW5kIHNwZWNpZmljIGVycm9ycyBiYWNrIHRvIHRoZSBhZ2VudCB0byBwcm9jZXNzIGFjY29yZGluZ2x5LgotLlBQCi1JZiBlcnJvcl92YWx1ZSBpcyBzZXQgdG8gU05NUF9OT1NVQ0hPQkpFQ1QsIFNOTVBfTk9TVUNISU5TVEFOQ0UsIG9yIFNOTVBfRU5ET0ZNSUJWSUVXIHRoZSBmb2xsb3dpbmcgaXMgYXBwbGljYWJsZTogU2V0cyB0aGUgZXJyb3JfdmFsdWUgdG8gcmVxdWVzdC0+cmVxdWVzdHZiLT50eXBlIGlmIHJlcWluZm8tPm1vZGUgdmFsdWUgaXMgc2V0IHRvIE1PREVfR0VULiBJZiB0aGUgcmVxaW5mby0+bW9kZSB2YWx1ZSBpcyBzZXQgdG8gTU9ERV9HRVRORVhUIG9yIE1PREVfR0VUQlVMSyB0aGUgY29kZSBjYWxscyBzbm1wX2xvZyBsb2dnaW5nIGFuIGVycm9yIG1lc3NhZ2UuCi0uUFAKLU90aGVyd2lzZSwgdGhlIHJlcXVlc3QtPnN0YXR1cyB2YWx1ZSBpcyBjaGVja2VkLCBpZiBpdCdzIDwgMCBzbm1wX2xvZyBpcyBjYWxsZWQgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGFuZCBTTk1QX0VSUl9HRU5FUlIgaXMgYXNzaWduZWQgdG8gcmVxdWVzdC0+c3RhdHVzLiBJZiB0aGUgcmVxdWVzdC0+c3RhdHVzIHZhbHVlIGlzID49IDAgdGhlIGVycm9yX3ZhbHVlIGlzIHNldCB0byByZXF1ZXN0LT5zdGF0dXMuCi0uUFAKLVxmQlBhcmFtZXRlcnM6XGZQCi0uUlMgNAotXGZJcmVxaW5mb1xmUCBpcyBhIHBvaW50ZXIgdG8gdGhlIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvIHN0cnVjdC4gSXQgY29udGFpbnMgdGhlIHJlcWluZm8tPm1vZGUgd2hpY2ggaXMgcmVxdWlyZWQgdG8gc2V0IGVycm9yX3ZhbHVlIG9yIGxvZyBlcnJvciBtZXNzYWdlcy4KLS5icgotXGZJcmVxdWVzdFxmUCBpcyBhIHBvaW50ZXIgdG8gdGhlIG5ldHNubXBfcmVxdWVzdF9pbmZvIHN0cnVjdC4gVGhlIGVycm9yX3ZhbHVlIGlzIHNldCB0byByZXF1ZXN0LT5yZXF1ZXN0dmItPnR5cGUKLS5icgotXGZJZXJyb3JfdmFsdWVcZlAgaXMgdGhlIGV4Y2VwdGlvbiB2YWx1ZSB5b3Ugd2FudCB0byBzZXQsIGJlbG93IGFyZSBwb3NzaWJsZSB2YWx1ZXMuCi0uSVAgIlwoYnUiIDIKLVNOTVBfTk9TVUNIT0JKRUNUCi0uSVAgIlwoYnUiIDIKLVNOTVBfTk9TVUNISU5TVEFOQ0UKLS5JUCAiXChidSIgMgotU05NUF9FTkRPRk1JQlZJRVcKLS5JUCAiXChidSIgMgotU05NUF9FUlJfTk9FUlJPUgotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9UT09CSUcKLS5JUCAiXChidSIgMgotU05NUF9FUlJfTk9TVUNITkFNRQotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9CQURWQUxVRQotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9SRUFET05MWQotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9HRU5FUlIKLS5JUCAiXChidSIgMgotU05NUF9FUlJfTk9BQ0NFU1MKLS5JUCAiXChidSIgMgotU05NUF9FUlJfV1JPTkdUWVBFCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX1dST05HTEVOR1RICi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX1dST05HRU5DT0RJTkcKLS5JUCAiXChidSIgMgotU05NUF9FUlJfV1JPTkdWQUxVRQotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9OT0NSRUFUSU9OCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX0lOQ09OU0lTVEVOVFZBTFVFCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUKLS5JUCAiXChidSIgMgotU05NUF9FUlJfQ09NTUlURkFJTEVECi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX1VORE9GQUlMRUQKLS5JUCAiXChidSIgMgotU05NUF9FUlJfQVVUSE9SSVpBVElPTkVSUk9SCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX05PVFdSSVRBQkxFCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX0lOQ09OU0lTVEVOVE5BTUUKLS5QUAotLlJFCi0uUFAKLVxmQlJldHVybnM6XGZQCi0uUlMgNAotUmV0dXJucyBlcnJvcl92YWx1ZSB1bmRlciBhbGwgY29uZGl0aW9ucy4gCi0uUkUKLS5QUAotCi0uUFAKLURlZmluaXRpb24gYXQgbGluZSAzMjI5IG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMwMDAgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgImludCBoYW5kbGVfc25tcF9wYWNrZXQgKGludCBvcCwgXGZCbmV0c25tcF9zZXNzaW9uXGZQICogc2Vzc2lvbiwgaW50IHJlcWlkLCBcZkJuZXRzbm1wX3BkdVxmUCAqIHBkdSwgdm9pZCAqIG1hZ2ljKSIKIC5QUAogaGFuZGxlcyBhbiBpbmNvbWluZyBTTk1QIHBhY2tldCBpbnRvIHRoZSBhZ2VudCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE3NzQgb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTgzNSBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TUyAiXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAqIG5ldHNubXBfYWRkX3ZhcmJpbmRfdG9fY2FjaGUgKFxmQm5ldHNubXBfYWdlbnRfc2Vzc2lvblxmUCAqIGFzcCwgaW50IHZiY291bnQsIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhcmJpbmRfcHRyLCBcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKiB0cCkiCiAuUFAKIFxmQlRvZG9cZlAKQEAgLTQyOCwxNCArMzU3LDE0IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTg4MyBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxOTQ0IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgbmV0c25tcF9jaGVja190cmFuc2FjdGlvbl9pZCAoaW50IHRyYW5zYWN0aW9uX2lkKSIKIC5QUAogRGVjaWRlIGlmIHRoZSByZXF1ZXN0ZWQgdHJhbnNhY3Rpb25faWQgaXMgc3RpbGwgYmVpbmcgcHJvY2Vzc2VkIHdpdGhpbiB0aGUgYWdlbnQuIFRoaXMgaXMgdXNlZCB0byB2YWxpZGF0ZSB3aGV0aGVyIGEgZGVsYXllZCBjYWNoZSAoY29udGFpbmluZyBwb3NzaWJseSBmcmVlZCBwb2ludGVycykgaXMgc3RpbGwgdXNhYmxlLgogLlBQCiByZXR1cm5zIFNOTVBFUlJfU1VDQ0VTUyBpZiBpdCdzIHN0aWxsIHZhbGlkLCBvciBTTk1QRVJSX0dFTkVSUiBpZiBub3QuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjcyMSBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyNzg2IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvciAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0LCBpbnQgZXJyb3JfdmFsdWUpIgogLlBQCiBzZXQgZXJyb3IgZm9yIGEgcmVxdWVzdCBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDQ3LDcgKzM3Niw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzQ4NSBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNDk5IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJORVRTTk1QX0lOTElORSBpbnQgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMsIGludCBlcnJvcikiCiAuUFAKIHNldCBlcnJvciBmb3IgYWxsIHJlcXVlc3RzIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC00NjYsNyArMzk1LDcgQEAKIC5QUAogcGFyYW5vaWQgc2FuaXR5IGNoZWNrcyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM1Mjggb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzU0MiBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfaWR4IChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QsIGludCBlcnJvcl92YWx1ZSwgaW50IGlkeCkiCiAuUFAKIHNldCBlcnJvciBmb3IgYSByZXF1ZXN0IHdpdGhpbiBhIHJlcXVlc3QgbGlzdCBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDgwLDcgKzQwOSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzUwMCBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNTE0IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgbmV0c25tcF9zZXRfYWxsX3JlcXVlc3RzX2Vycm9yIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMsIGludCBlcnJvcl92YWx1ZSkiCiAuUFAKIHNldCBlcnJvciBmb3IgYWxsIHJlcXVlc3QgXGZCRGVwcmVjYXRlZFxmUApAQCAtNTA0LDcgKzQzMyw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzcwMiBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNjU1IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgbmV0c25tcF9zZXRfbW9kZV9yZXF1ZXN0X2Vycm9yIChpbnQgbW9kZSwgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0LCBpbnQgZXJyb3JfdmFsdWUpIgogLlBQCiBzZXQgZXJyb3IgZm9yIGEgcmVxdWVzdCBkZXByZWNhdGVkLCB1c2UgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvciBpbnN0ZWFkCkBAIC01MzAsNyArNDU5LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNjg2IG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2Mzkgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgImludCBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCwgaW50IGVycm9yX3ZhbHVlKSIKIC5QUAogc2V0IGVycm9yIGZvciBhIHJlcXVlc3QgZGVwcmVjYXRlZCwgdXNlIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IgaW5zdGVhZApAQCAtNTYwLDEyICs0ODksMTIgQEAKIC5pbiArMWMKIFxmQmRlbGF5ZWRfaW5zdGFuY2UuY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM2Njcgb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzYyMCBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TUyAiaW50IG5ldHNubXBfd3JhcF91cF9yZXF1ZXN0IChcZkJuZXRzbm1wX2FnZW50X3Nlc3Npb25cZlAgKiBhc3AsIGludCBzdGF0dXMpIgogLlBQCiBpZiBhc3AtPnBkdSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1MjAgb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTU4MSBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMgYi9tYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMKaW5kZXggNmI4M2Q1OC4uMDFiY2JhZCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfc25tcF9hbGFybS4zCisrKyBiL21hbi9uZXRzbm1wX3NubXBfYWxhcm0uMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic25tcF9hbGFybSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJzbm1wX2FsYXJtIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zIGIvbWFuL25ldHNubXBfc25tcF9jbGllbnQuMwppbmRleCA0ZmZmMWM1Li44YzhjMWFiIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zCisrKyBiL21hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMKQEAgLTEsNCArMSw0IEBACi0uVEggInZhcmlvdXMgUERVIHByb2Nlc3Npbmcgcm91dGluZXMiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidmFyaW91cyBQRFUgcHJvY2Vzc2luZyByb3V0aW5lcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtOSw2ICs5LDcgQEAKIC50aSAtMWMKIC5SSSAiXGZCbmV0c25tcF9wZHVcZlAgKiBcZkJzbm1wX3BkdV9jcmVhdGVcZlAgKGludCBjb21tYW5kKSIKIC5icgorLlJJICJcZklMaWJyYXJ5IEFQSSByb3V0aW5lcyBjb25jZXJuZWQgd2l0aCBTTk1QIFBEVXMuIFxmUCIKIC50aSAtMWMKIC5SSSAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogXGZCc25tcF9hZGRfbnVsbF92YXJcZlAgKFxmQm5ldHNubXBfcGR1XGZQICpwZHUsIGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoKSIKIC5icgpAQCAtMTYsNyArMTcsNyBAQAogLlJJICJpbnQgXGZCc25tcF9jbG9uZV92YXJcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFyLCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKm5ld3ZhcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQnNubXBfY2xvbmVfbWVtXGZQICh2b2lkICoqZHN0UHRyLCB2b2lkICpzcmNQdHIsIHVuc2lnbmVkIGxlbikiCisuUkkgImludCBcZkJzbm1wX2Nsb25lX21lbVxmUCAodm9pZCAqKmRzdFB0ciwgY29uc3Qgdm9pZCAqc3JjUHRyLCB1bnNpZ25lZCBsZW4pIgogLmJyCiAudGkgLTFjCiAuUkkgInZvaWQgXGZCc25tcF9yZXNldF92YXJfYnVmZmVyc1xmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2YXIpIgpAQCAtNDAsNyArNDEsNyBAQAogLlJJICJpbnQgXGZCc25tcF9zZXRfdmFyX29iamlkXGZQIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKnZwLCBjb25zdCBvaWQgKm9iamlkLCBzaXplX3QgbmFtZV9sZW5ndGgpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJzbm1wX3NldF92YXJfdHlwZWRfdmFsdWVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqbmV3dmFyLCB1X2NoYXIgdHlwZSwgY29uc3QgdV9jaGFyICp2YWxfc3RyLCBzaXplX3QgdmFsX2xlbikiCisuUkkgImludCBcZkJzbm1wX3NldF92YXJfdHlwZWRfdmFsdWVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqbmV3dmFyLCB1X2NoYXIgdHlwZSwgY29uc3Qgdm9pZCAqdmFsX3N0ciwgc2l6ZV90IHZhbF9sZW4pIgogLmJyCiAuUkkgIlxmSXNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSBpcyB1c2VkIHRvIHNldCBkYXRhIGludG8gdGhlIG5ldHNubXBfdmFyaWFibGVfbGlzdCBzdHJ1Y3R1cmUuIFxmUCIKIC50aSAtMWMKQEAgLTU5LDcgKzYwLDcgQEAKIC5SSSAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogXGZCZmluZF92YXJiaW5kX2luX2xpc3RcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmJsaXN0LCBvaWQgKm5hbWUsIHNpemVfdCBsZW4pIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJzbm1wX3NldF92YXJfdmFsdWVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFycywgY29uc3QgdV9jaGFyICp2YWx1ZSwgc2l6ZV90IGxlbikiCisuUkkgImludCBcZkJzbm1wX3NldF92YXJfdmFsdWVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFycywgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCBsZW4pIgogLmJyCiAudGkgLTFjCiAuUkkgInZvaWQgXGZCc25tcF9yZXBsYWNlX3Zhcl90eXBlc1xmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2YmwsIHVfY2hhciBvbGRfdHlwZSwgdV9jaGFyIG5ld190eXBlKSIKQEAgLTgzLDggKzg0LDEzIEBACiAuUkkgInZvaWQgXGZCbmV0c25tcF9xdWVyeV9zZXRfZGVmYXVsdF9zZXNzaW9uXGZQIChcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKnNlc3MpIgogLmJyCiAudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfc2Vzc2lvblxmUCAqIFxmQm5ldHNubXBfcXVlcnlfZ2V0X2RlZmF1bHRfc2Vzc2lvbl91bmNoZWNrZWRcZlAgKHZvaWQpIgorLmJyCisuUkkgIlxmSVJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgaW50ZXJuYWwgcXVlcnkgc2Vzc2lvbi4gXGZQIgorLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiBcZkJuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb25cZlAgKHZvaWQpIgogLmJyCisuUkkgIlxmSVJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgaW50ZXJuYWwgcXVlcnkgc2Vzc2lvbiBhbmQgbG9nIGEgd2FybmluZyBtZXNzYWdlIG9uY2UgaWYgdGhpcyBzZXNzaW9uIGRvZXMgbm90IGV4aXN0LiBcZlAiCiAudGkgLTFjCiAuUkkgImludCBcZkJuZXRzbm1wX3F1ZXJ5X2dldFxmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICpsaXN0LCBcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKnNlc3Npb24pIgogLmJyCkBAIC0xMDAsNyArMTA2LDIyIEBACiAuaW4gLTFjCiAuU0ggIkZ1bmN0aW9uIERvY3VtZW50YXRpb24iCiAuUFAgCi0uU1MgImludCBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIG5ld3ZhciwgdV9jaGFyIHR5cGUsIGNvbnN0IHVfY2hhciAqIHZhbF9zdHIsIHNpemVfdCB2YWxfbGVuKSIKKy5TUyAiXGZCbmV0c25tcF9zZXNzaW9uXGZQKiBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb24gKHZvaWQpIgorLlBQCitSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGludGVybmFsIHF1ZXJ5IHNlc3Npb24gYW5kIGxvZyBhIHdhcm5pbmcgbWVzc2FnZSBvbmNlIGlmIHRoaXMgc2Vzc2lvbiBkb2VzIG5vdCBleGlzdC4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAxMjQyIG9mIGZpbGUgc25tcF9jbGllbnQuYy4KKy5TUyAiXGZCbmV0c25tcF9zZXNzaW9uXGZQKiBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb25fdW5jaGVja2VkICh2b2lkKSIKKy5QUAorUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBpbnRlcm5hbCBxdWVyeSBzZXNzaW9uLiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDEyMzIgb2YgZmlsZSBzbm1wX2NsaWVudC5jLgorLlNTICJcZkJuZXRzbm1wX3BkdVxmUCogc25tcF9wZHVfY3JlYXRlIChpbnQgY29tbWFuZCkiCisuUFAKK0xpYnJhcnkgQVBJIHJvdXRpbmVzIGNvbmNlcm5lZCB3aXRoIFNOTVAgUERVcy4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAxMzEgb2YgZmlsZSBzbm1wX2NsaWVudC5jLgorLlNTICJpbnQgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiBuZXd2YXIsIHVfY2hhciB0eXBlLCBjb25zdCB2b2lkICogdmFsX3N0ciwgc2l6ZV90IHZhbF9sZW4pIgogLlBQCiBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUgaXMgdXNlZCB0byBzZXQgZGF0YSBpbnRvIHRoZSBuZXRzbm1wX3ZhcmlhYmxlX2xpc3Qgc3RydWN0dXJlLiBVc2VkIHRvIHJldHVybiBkYXRhIHRvIHRoZSBzbm1wIHJlcXVlc3QgdmlhIHRoZSBuZXRzbm1wX3JlcXVlc3RfaW5mbyBzdHJ1Y3R1cmUncyByZXF1ZXN0dmIgcG9pbnRlci4KIC5QUApAQCAtMTI2LDEyICsxNDcsMTIgQEAKIC5pbiArMWMKIFxmQmRlbGF5ZWRfaW5zdGFuY2UuY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDY4NyBvZiBmaWxlIHNubXBfY2xpZW50LmMuCi0uU1MgImludCBzbm1wX3NldF92YXJfdmFsdWUgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhcnMsIGNvbnN0IHVfY2hhciAqIHZhbHVlLCBzaXplX3QgbGVuKSIKK0RlZmluaXRpb24gYXQgbGluZSA3MTkgb2YgZmlsZSBzbm1wX2NsaWVudC5jLgorLlNTICJpbnQgc25tcF9zZXRfdmFyX3ZhbHVlIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXJzLCBjb25zdCB2b2lkICogdmFsdWUsIHNpemVfdCBsZW4pIgogLlBQCiBGQUxMIFRIUk9VR0ggCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3NTQgb2YgZmlsZSBzbm1wX2NsaWVudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc4NCBvZiBmaWxlIHNubXBfY2xpZW50LmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMgYi9tYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMwppbmRleCA3ZGZjZmJhLi4zNTUyZTVlIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMworKysgYi9tYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiZ2VuZXJpYyBsb2dnaW5nIGZvciBuZXQtc25tcCIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJnZW5lcmljIGxvZ2dpbmcgZm9yIG5ldC1zbm1wIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0zMiw2ICszMiw5IEBACiAuUkkgInZvaWQgXGZCc2h1dGRvd25fc25tcF9sb2dnaW5nXGZQICh2b2lkKSIKIC5icgogLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nXGZQIChGSUxFICpzdHJlYW0pIgorLmJyCisudGkgLTFjCiAuUkkgImludCBcZkJkZWNvZGVfcHJpb3JpdHlcZlAgKGNoYXIgKipvcHRhcmcsIGludCAqcHJpX21heCkiCiAuYnIKIC50aSAtMWMKQEAgLTE1OSw3ICsxNjIsNyBAQAogLlBQCiBobW0sIGRvbid0IHplcm8gc3RhdHVzIGlzbid0IHNhdmVkLi4gaSB0aGluayBpdCdzIHNhZmVyIG5vdCB0byBvdmVyd3JpdGUsIGluIGNhc2UgYSBodXAgaXMganVzdCB0byByZS1yZWFkIGNvbmZpZyBmaWxlcy4uLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjM5IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjU3IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCiAuU1MgImludCBzbm1wX2dldF9kb19sb2dnaW5nICh2b2lkKSIKIC5QUAogSXMgbG9nZ2luZyBkb25lPyBcZkJSZXR1cm5zOlxmUApAQCAtMTY5LDcgKzE3Miw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDk2IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNTE0IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCiAuU1MgImludCBzbm1wX2xvZyAoaW50IHByaW9yaXR5LCBjb25zdCBjaGFyICogZm9ybWF0LCAgLi4uKSIKIC5QUAogVGhpcyBzbm1wIGxvZ2dpbmcgZnVuY3Rpb24gYWxsb3dzIFxmQnZhcmlhYmxlXGZQIGFyZ3VtZW50IGxpc3QgZ2l2ZW4gdGhlIHNwZWNpZmllZCBmb3JtYXQgYW5kIHByaW9yaXR5LiBDYWxscyB0aGUgc25tcF92bG9nIGZ1bmN0aW9uLiBUaGUgZGVmYXVsdCBsb2dmaWxlIHRoaXMgZnVuY3Rpb24gd3JpdGVzIHRvIGlzIC92YXIvbG9nL3NubXBkLmxvZy4KQEAgLTE4NSw3ICsxODgsNyBAQAogLmluICsxYwogXGZCZGVsYXllZF9pbnN0YW5jZS5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI3OCBvZiBmaWxlIHNubXBfbG9nZ2luZy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEyODYgb2YgZmlsZSBzbm1wX2xvZ2dpbmcuYy4KIC5TUyAiaW50IHNubXBfdmxvZyAoaW50IHByaW9yaXR5LCBjb25zdCBjaGFyICogZm9ybWF0LCB2YV9saXN0IGFwKSIKIC5QUAogVGhpcyBzbm1wIGxvZ2dpbmcgZnVuY3Rpb24gYWxsb3dzIFxmQnZhcmlhYmxlXGZQIGFyZ3VtZW50IGxpc3QgZ2l2ZW4gdGhlIHNwZWNpZmllZCBwcmlvcml0eSwgZm9ybWF0IGFuZCBhIHBvcHVsYXRlZCB2YV9saXN0IHN0cnVjdHVyZS4gVGhlIGRlZmF1bHQgbG9nZmlsZSB0aGlzIGZ1bmN0aW9uIHdyaXRlcyB0byBpcyAvdmFyL2xvZy9zbm1wZC5sb2cuCkBAIC0yNDAsNyArMjQzLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjE3IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTIyNiBvZiBmaWxlIHNubXBfbG9nZ2luZy5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3NubXBfcGR1LjMgYi9tYW4vbmV0c25tcF9zbm1wX3BkdS4zCmluZGV4IDc5NjQ4MjcuLmFkNjU4ZjQgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3NubXBfcGR1LjMKKysrIGIvbWFuL25ldHNubXBfc25tcF9wZHUuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic25tcF9wZHUiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAic25tcF9wZHUiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTEwLDcgKzEwLDcgQEAKIC5icgogLlBQCiAuUFAKLVxmQyNpbmNsdWRlIDxzbm1wX2FwaS5oPlxmUAorXGZDI2luY2x1ZGUgPHR5cGVzLmg+XGZQCiAuU1MgIkRhdGEgRmllbGRzIgogCiAuaW4gKzFjCkBAIC0xNTMsMTM5ICsxNTMsMTM5IEBACiAuUFAgCiBUaGUgc25tcCBwcm90b2NvbCBkYXRhIHVuaXQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzUgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE2OSBvZiBmaWxlIHR5cGVzLmguCiAuU0ggIkZpZWxkIERvY3VtZW50YXRpb24iCiAuUFAgCiAuU1MgInVuc2lnbmVkIGNoYXIgXGZCc25tcF9wZHU6OmFnZW50X2FkZHJcZlBbNF0iCiAuUFAKIFRoaXMgaXMgT05MWSB1c2VkIGZvciB2MSBUUkFQcy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNDIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzOSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImludCBcZkJzbm1wX3BkdTo6Y29tbWFuZFxmUCIKIC5QUAogVHlwZSBvZiB0aGlzIFBEVS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4MyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTgwIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyKiBcZkJzbm1wX3BkdTo6Y29tbXVuaXR5XGZQIgogLlBQCiBjb21tdW5pdHkgZm9yIG91dGdvaW5nIHJlcXVlc3RzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEyNyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjI0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfcGR1Ojpjb21tdW5pdHlfbGVuXGZQIgogLlBQCiBsZW5ndGggb2YgY29tbXVuaXR5IG5hbWUuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI5IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyMjYgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIqIFxmQnNubXBfcGR1Ojpjb250ZXh0RW5naW5lSURcZlAiCiAuUFAKIGNvbnRleHQgc25tcEVuZ2luZUlEIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTQ4IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyNDUgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9wZHU6OmNvbnRleHRFbmdpbmVJRExlblxmUCIKIC5QUAogTGVuZ3RoIG9mIGNvbnRleHRFbmdpbmVJRC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNTAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI0NyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNoYXIqIFxmQnNubXBfcGR1Ojpjb250ZXh0TmFtZVxmUCIKIC5QUAogYXV0aG9yaXRhdGl2ZSBjb250ZXh0TmFtZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1MiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjQ5IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfcGR1Ojpjb250ZXh0TmFtZUxlblxmUCIKIC5QUAogTGVuZ3RoIG9mIGNvbnRleHROYW1lLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1NCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjUxIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAib2lkKiBcZkJzbm1wX3BkdTo6ZW50ZXJwcmlzZVxmUCIKIC5QUAogU3lzdGVtIE9JRC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMzUgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzMiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9wZHU6OmVycmluZGV4XGZQIgogLlBQCiBFcnJvciBpbmRleCAobWF4X3JlcGV0aXRpb25zIGluIEdldEJ1bGspLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk1IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxOTIgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJsb25nIFxmQnNubXBfcGR1OjplcnJzdGF0XGZQIgogLlBQCiBFcnJvciBzdGF0dXMgKG5vbl9yZXBlYXRlcnMgaW4gR2V0QnVsaykuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTMgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5MCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9wZHU6Om1zZ2lkXGZQIgogLlBQCiBNZXNzYWdlIGlkIGZvciBWMyBtZXNzYWdlcyBub3RlOiBpbmNyZW1lbnRlZCBmb3IgZWFjaCByZXRyeS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTg0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3BkdTo6cmVxaWRcZlAiCiAuUFAKIFJlcXVlc3QgaWQgLSBub3RlOiBub3QgaW5jcmVtZW50ZWQgb24gcmV0cmllcy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTgyIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyKiBcZkJzbm1wX3BkdTo6c2VjdXJpdHlFbmdpbmVJRFxmUCIKIC5QUAogYXV0aG9yaXRhdGl2ZSBzbm1wRW5naW5lSUQgZm9yIHNlY3VyaXR5IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTU2IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyNTMgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9wZHU6OnNlY3VyaXR5RW5naW5lSURMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBzZWN1cml0eUVuZ2luZUlELiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1OCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjU1IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiaW50IFxmQnNubXBfcGR1OjpzZWN1cml0eUxldmVsXGZQIgogLlBQCiBub0F1dGhOb1ByaXYsIGF1dGhOb1ByaXYsIGF1dGhQcml2IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTAyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxOTkgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJjaGFyKiBcZkJzbm1wX3BkdTo6c2VjdXJpdHlOYW1lXGZQIgogLlBQCiBvbiBiZWhhbGYgb2YgdGhpcyBwcmluY2lwYWwgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNjAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI1NyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3BkdTo6c2VjdXJpdHlOYW1lTGVuXGZQIgogLlBQCiBMZW5ndGggb2Ygc2VjdXJpdHlOYW1lLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE2MiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjU5IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3BkdTo6c2Vzc2lkXGZQIgogLlBQCiBTZXNzaW9uIGlkIGZvciBBZ2VudFggbWVzc2FnZXMuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTEgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE4OCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9wZHU6OnNwZWNpZmljX3R5cGVcZlAiCiAuUFAKIHNwZWNpZmljIHR5cGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNDAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzNyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNvbnN0IG9pZCogXGZCc25tcF9wZHU6OnREb21haW5cZlAiCiAuUFAKIFRoZSBhY3R1YWwgdHJhbnNwb3J0IGRvbWFpbi4gVGhpcyBTSE9VTEQgTk9UIEJFIEZSRUUoKUQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTE3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyMTQgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2xvbmcgXGZCc25tcF9wZHU6OnRpbWVcZlAiCiAuUFAKIFVwdGltZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA5NyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTk0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3BkdTo6dHJhbnNpZFxmUCIKIC5QUAogVW5pcXVlIElEIGZvciBpbmNvbWluZyB0cmFuc2FjdGlvbnMuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODkgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE4NiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInZvaWQqIFxmQnNubXBfcGR1Ojp0cmFuc3BvcnRfZGF0YVxmUCIKIC5QUAogVHJhbnNwb3J0LXNwZWNpZmljIG9wYXF1ZSBkYXRhLiBUaGlzIHJlcGxhY2VzIHRoZSBJUC1jZW50cmljIGFkZHJlc3MgZmllbGQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTEwIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyMDcgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJsb25nIFxmQnNubXBfcGR1Ojp0cmFwX3R5cGVcZlAiCiAuUFAKIHRyYXAgdHlwZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzOCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjM1IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3BkdTo6dmVyc2lvblxmUCIKIC5QUAogc25tcCB2ZXJzaW9uIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODEgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE3OCBvZiBmaWxlIHR5cGVzLmguCiAKIC5TSCAiQXV0aG9yIgogLlBQIApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMgYi9tYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMwppbmRleCAwMGUzODNmLi4wNGFiOTQ0IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMworKysgYi9tYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic25tcF9zZXNzaW9uIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInNubXBfc2Vzc2lvbiIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTAsNyArMTAsNyBAQAogLmJyCiAuUFAKIC5QUAotXGZDI2luY2x1ZGUgPHNubXBfYXBpLmg+XGZQCitcZkMjaW5jbHVkZSA8dHlwZXMuaD5cZlAKIC5TUyAiRGF0YSBGaWVsZHMiCiAKIC5pbiArMWMKQEAgLTIwOCw3ICsyMDgsNyBAQAogLlBQIAogVGhlIHNubXAgc2Vzc2lvbiBzdHJ1Y3R1cmUuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTg3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyODcgb2YgZmlsZSB0eXBlcy5oLgogLlNIICJGaWVsZCBEb2N1bWVudGF0aW9uIgogLlBQIAogLlNTICJ1X2NoYXIqKCogXGZCc25tcF9zZXNzaW9uOjphdXRoZW50aWNhdG9yXGZQKSh1X2NoYXIgKiwgc2l6ZV90ICosIHVfY2hhciAqLCBzaXplX3QpIgpAQCAtMjE4LDIyMiArMjE4LDIyMiBAQAogLlBQCiBGdW5jdGlvbiB0byBpbnRlcnByZXQgaW5jb21pbmcgZGF0YS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMTQgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMxNCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInZvaWQqIFxmQnNubXBfc2Vzc2lvbjo6Y2FsbGJhY2tfbWFnaWNcZlAiCiAuUFAKIFBvaW50ZXIgdG8gZGF0YSB0aGF0IHRoZSBjYWxsYmFjayBmdW5jdGlvbiBtYXkgY29uc2lkZXIgaW1wb3J0YW50LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIxOCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzE4IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyKiBcZkJzbm1wX3Nlc3Npb246OmNvbW11bml0eVxmUCIKIC5QUAogY29tbXVuaXR5IGZvciBvdXRnb2luZyByZXF1ZXN0cy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzMCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OmNvbW11bml0eV9sZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBjb21tdW5pdHkgbmFtZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzMiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciogXGZCc25tcF9zZXNzaW9uOjpjb250ZXh0RW5naW5lSURcZlAiCiAuUFAKIGF1dGhvcml0YXRpdmUgc25tcEVuZ2luZUlEIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjQ0IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNDQgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9zZXNzaW9uOjpjb250ZXh0RW5naW5lSURMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjQ2IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNDYgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJjaGFyKiBcZkJzbm1wX3Nlc3Npb246OmNvbnRleHROYW1lXGZQIgogLlBQCiBhdXRob3JpdGF0aXZlIGNvbnRleHROYW1lIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjUyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNTIgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9zZXNzaW9uOjpjb250ZXh0TmFtZUxlblxmUCIKIC5QUAogTGVuZ3RoIG9mIGNvbnRleHROYW1lLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI1NCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzU0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9pbnQgXGZCc25tcF9zZXNzaW9uOjplbmdpbmVCb290c1xmUCIKIC5QUAogaW5pdGlhbCBlbmdpbmVCb290cyBmb3IgcmVtb3RlIGVuZ2luZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI0OCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzQ4IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9pbnQgXGZCc25tcF9zZXNzaW9uOjplbmdpbmVUaW1lXGZQIgogLlBQCiBpbml0aWFsIGVuZ2luZVRpbWUgZm9yIHJlbW90ZSBlbmdpbmUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNTAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1MCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciBcZkJzbm1wX3Nlc3Npb246OmlzQXV0aG9yaXRhdGl2ZVxmUCIKIC5QUAogYXJlIHdlIHRoZSBhdXRob3JpdGF0aXZlIGVuZ2luZT8gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNDIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM0MiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfc2hvcnQgXGZCc25tcF9zZXNzaW9uOjpsb2NhbF9wb3J0XGZQIgogLlBQCiBNeSBVRFAgcG9ydCBudW1iZXIsIDAgZm9yIGRlZmF1bHQsIHBpY2tlZCByYW5kb21seS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMDggb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMwOCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNoYXIqIFxmQnNubXBfc2Vzc2lvbjo6bG9jYWxuYW1lXGZQIgogLlBQCiBNeSBEb21haW4gbmFtZSBvciBkb3R0ZWQgSVAgYWRkcmVzcywgMCBmb3IgZGVmYXVsdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMDYgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMwNiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInZvaWQqIFxmQnNubXBfc2Vzc2lvbjo6bXl2b2lkXGZQIgogLlBQCiB1c2UgYXMgeW91IHdhbnQgZGF0YSB1c2VkIGJ5ICdTTk1QX0ZMQUdTX1JFU1BfQ0FMTEJBQ0snIGhhbmRsaW5nIGluIHRoZSBhZ2VudCBYWFg6IG9yIHNob3VsZCB3ZSBhZGQgYSBuZXcgZmllbGQgaW50byB0aGlzIHN0cnVjdHVyZT8gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMDggb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQwOCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNoYXIqIFxmQnNubXBfc2Vzc2lvbjo6cGFyYW1OYW1lXGZQIgogLlBQCiB0YXJnZXQgcGFyYW0gbmFtZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI5NSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzk1IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiY2hhciogXGZCc25tcF9zZXNzaW9uOjpwZWVybmFtZVxmUCIKIC5QUAogbmFtZSBvciBhZGRyZXNzIG9mIGRlZmF1bHQgcGVlciAobWF5IGluY2x1ZGUgdHJhbnNwb3J0IHNwZWNpZmllciBhbmQvb3IgcG9ydCBudW1iZXIpIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjAyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzMDIgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9zZXNzaW9uOjpyY3ZNc2dNYXhTaXplXGZQIgogLlBQCiBMYXJnZXN0IG1lc3NhZ2UgdG8gdHJ5IHRvIHJlY2VpdmUuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjM0IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzMzQgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X3Nob3J0IFxmQnNubXBfc2Vzc2lvbjo6cmVtb3RlX3BvcnRcZlAiCiAuUFAKIFVEUCBwb3J0IG51bWJlciBvZiBwZWVyLiAoTk8gTE9OR0VSIFVTRUQgLSBVU0UgcGVlcm5hbWUgSU5TVEVBRCkgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMDQgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMwNCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImludCBcZkJzbm1wX3Nlc3Npb246OnJldHJpZXNcZlAiCiAuUFAKIE51bWJlciBvZiByZXRyaWVzIGJlZm9yZSB0aW1lb3V0LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5NCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjk0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiaW50IFxmQnNubXBfc2Vzc2lvbjo6c19lcnJub1xmUCIKIC5QUAogY29weSBvZiBzeXN0ZW0gZXJybm8gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMyMCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImludCBcZkJzbm1wX3Nlc3Npb246OnNfc25tcF9lcnJub1xmUCIKIC5QUAogY29weSBvZiBsaWJyYXJ5IGVycm5vIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjIyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzMjIgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIgXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eUF1dGhLZXlcZlBbVVNNX0FVVEhfS1VfTEVOXSIKIC5QUAogS3UgZm9yIGF1dGggcHJvdG9jb2wgWFhYLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI2OSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzY5IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlBdXRoS2V5TGVuXGZQIgogLlBQCiBMZW5ndGggb2YgS3UgZm9yIGF1dGggcHJvdG9jb2wuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjcxIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNzEgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIqIFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlBdXRoTG9jYWxLZXlcZlAiCiAuUFAKIEt1bCBmb3IgYXV0aCBwcm90b2NvbC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNzMgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM3MyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5QXV0aExvY2FsS2V5TGVuXGZQIgogLlBQCiBMZW5ndGggb2YgS3VsIGZvciBhdXRoIHByb3RvY29sIFhYWC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNzUgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM3NSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgIm9pZCogXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eUF1dGhQcm90b1xmUCIKIC5QUAogYXV0aCBwcm90b2NvbCBvaWQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNjUgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2NSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5QXV0aFByb3RvTGVuXGZQIgogLlBQCiBMZW5ndGggb2YgYXV0aCBwcm90b2NvbCBvaWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjY3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNjcgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIqIFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlFbmdpbmVJRFxmUCIKIC5QUAogYXV0aG9yaXRhdGl2ZSBzbm1wRW5naW5lSUQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNTYgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1NiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5RW5naW5lSURMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjU4IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNTggb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ2b2lkKiBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5SW5mb1xmUCIKIC5QUAogc2VjdXJpdHkgXGZCbW9kdWxlXGZQIHNwZWNpZmljIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzAwIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSA0MDAgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJpbnQgXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eUxldmVsXGZQIgogLlBQCiBub0F1dGhOb1ByaXYsIGF1dGhOb1ByaXYsIGF1dGhQcml2IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjkzIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzOTMgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJpbnQgXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eU1vZGVsXGZQIgogLlBQCiBzbm1wIHNlY3VyaXR5IG1vZGVsLCB2MSwgdjJjLCB1c20gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyOTEgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM5MSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNoYXIqIFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlOYW1lXGZQIgogLlBQCiBvbiBiZWhhbGYgb2YgdGhpcyBwcmluY2lwYWwgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNjAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2MCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5TmFtZUxlblxmUCIKIC5QUAogTGVuZ3RoIG9mIHNlY3VyaXR5TmFtZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNjIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2MiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5UHJpdktleVxmUFtVU01fUFJJVl9LVV9MRU5dIgogLlBQCiBLdSBmb3IgcHJpdmFjeSBwcm90b2NvbCBYWFguIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjgyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzODIgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eVByaXZLZXlMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBLdSBmb3IgcHJpdiBwcm90b2NvbC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyODQgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM4NCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciogXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eVByaXZMb2NhbEtleVxmUCIKIC5QUAogS3VsIGZvciBwcml2IHByb3RvY29sLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI4NiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzg2IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlQcml2TG9jYWxLZXlMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBLdWwgZm9yIHByaXYgcHJvdG9jb2wgWFhYLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI4OCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzg4IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAib2lkKiBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5UHJpdlByb3RvXGZQIgogLlBQCiBwcml2IHByb3RvY29sIG9pZCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI3OCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzc4IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlQcml2UHJvdG9MZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBwcml2IHByb3RvY29sIG9pZC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyODAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM4MCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9zZXNzaW9uOjpzZXNzaWRcZlAiCiAuUFAKIFNlc3Npb24gaWQgLSBBZ2VudFggb25seS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjQgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMyNCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnNuZE1zZ01heFNpemVcZlAiCiAuUFAKIExhcmdlc3QgbWVzc2FnZSB0byB0cnkgdG8gc2VuZC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzYgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzNiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9zZXNzaW9uOjp0aW1lb3V0XGZQIgogLlBQCiBOdW1iZXIgb2YgdVMgdW50aWwgZmlyc3QgdGltZW91dCwgdGhlbiBleHBvbmVudGlhbCBiYWNrb2ZmLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5NiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjk2IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3Nlc3Npb246OnZlcnNpb25cZlAiCiAuUFAKIHNubXAgdmVyc2lvbiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5MiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjkyIG9mIGZpbGUgdHlwZXMuaC4KIAogLlNIICJBdXRob3IiCiAuUFAgCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zIGIvbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMwppbmRleCAwZjNhNDc0Li4zNGUyMzdmIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zCisrKyBiL21hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInN0YXNoX2NhY2hlIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInN0YXNoX2NhY2hlIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC01OCwzNyArNTgsMzcgQEAKIC5QUAogdXBkYXRlcyBhIGdpdmVuIGNhY2hlIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IG5lZWRzIHRvIG9yIG5vdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxOTUgb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5MCBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCiAuU1MgIlxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAqKiBuZXRzbm1wX2V4dHJhY3Rfc3Rhc2hfY2FjaGUgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbykiCiAuUFAKIGV4dHJhY3RzIGEgcG9pbnRlciB0byB0aGUgc3Rhc2hfY2FjaGUgaW5mbyBmcm9tIHRoZSByZXFpbmZvIHN0cnVjdHVyZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMTMgb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEwOSBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X2JhcmVfc3Rhc2hfY2FjaGVfaGFuZGxlciAodm9pZCkiCiAuUFAKIHJldHVybnMgYSBzaW5nbGUgc3Rhc2hfY2FjaGUgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbiAod2l0aCBhIGZpeGVkIHRpbWVvdXQpLCBidXQgKm9ubHkqIGlmIHRoYXQgaGFuZGxlciBjaGFpbiBleHBsaWNpdGx5IHN1cHBvcnRzIHN0YXNoIGNhY2hlIHByb2Nlc3NpbmcuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzkgb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc1IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KIC5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9nZXRfc3Rhc2hfY2FjaGVfaGFuZGxlciAodm9pZCkiCiAuUFAKIHJldHVybnMgYSBzdGFzaF9jYWNoZSBoYW5kbGVyIHN1Yi1jaGFpbiB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gKGFyYml0cmFyeSkgaGFuZGxlciBjaGFpbiwgdXNpbmcgYSBmaXhlZCBjYWNoZSB0aW1lb3V0LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg4IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4NCBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X3RpbWVkX2JhcmVfc3Rhc2hfY2FjaGVfaGFuZGxlciAoaW50IHRpbWVvdXQsIG9pZCAqIHJvb3RvaWQsIHNpemVfdCByb290b2lkX2xlbikiCiAuUFAKIHJldHVybnMgYSBzdGFzaF9jYWNoZSBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluICh3aXRoIHRoZSBzcGVjaWZpZWQgdGltZW91dCBhbmQgcm9vdCBPSUQgdmFsdWVzKSwgYnV0ICpvbmx5KiBpZiB0aGF0IGhhbmRsZXIgY2hhaW4gZXhwbGljaXRseSBzdXBwb3J0cyBzdGFzaCBjYWNoZSBwcm9jZXNzaW5nLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQ0IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0MCBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X3RpbWVkX3N0YXNoX2NhY2hlX2hhbmRsZXIgKGludCB0aW1lb3V0LCBvaWQgKiByb290b2lkLCBzaXplX3Qgcm9vdG9pZF9sZW4pIgogLlBQCiByZXR1cm5zIGEgc3Rhc2hfY2FjaGUgaGFuZGxlciBzdWItY2hhaW4gdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIChhcmJpdHJhcnkpIGhhbmRsZXIgY2hhaW4sIHVzaW5nIGEgY29uZmlndXJhYmxlIGNhY2hlIHRpbWVvdXQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTAxIG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA5NyBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCiAuU1MgInZvaWQgbmV0c25tcF9pbml0X3N0YXNoX2NhY2hlX2hlbHBlciAodm9pZCkiCiAuUFAKIGluaXRpYWxpemVzIHRoZSBzdGFzaF9jYWNoZSBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSBzdGFzaF9jYWNoZSBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIzOCBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjMzIG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMgYi9tYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMKaW5kZXggNDc4MjIwZS4uMjQwYmRlYSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zCisrKyBiL21hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic3Rhc2hfdG9fbmV4dCIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJzdGFzaF90b19uZXh0IiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0yOCw3ICsyOCw3IEBACiAuUFAKIHJldHVybnMgYSBzdGFzaF90b19uZXh0IGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIGhhbmRsZXIgY2hhaW4uIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjggb2YgZmlsZSBzdGFzaF90b19uZXh0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjMgb2YgZmlsZSBzdGFzaF90b19uZXh0LmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGUuMyBiL21hbi9uZXRzbm1wX3RhYmxlLjMKaW5kZXggMDllNTUxNS4uYTA3MGE1YSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdGFibGUuMworKysgYi9tYW4vbmV0c25tcF90YWJsZS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ0YWJsZSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNzEsNiArNzEsOSBAQAogLmJyCiAuUkkgIlxmSWNyZWF0ZXMgYSB0YWJsZSBoYW5kbGVyIGdpdmVuIHRoZSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIG9iamVjdCwgaW5zZXJ0cyBpdCBpbnRvIHRoZSByZXF1ZXN0IGNoYWluIGFuZCB0aGVuIGNhbGxzIFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcigpXGZQIHRvIHJlZ2lzdGVyIHRoZSB0YWJsZSBpbnRvIHRoZSBhZ2VudC4gXGZQIgogLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF91bnJlZ2lzdGVyX3RhYmxlXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvKSIKKy5icgorLnRpIC0xYwogLlJJICJORVRTTk1QX0lOTElORSBcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb1xmUCAqIFxmQm5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvXGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCkiCiAuYnIKIC5SSSAiXGZJRXh0cmFjdHMgdGhlIHByb2Nlc3NlZCB0YWJsZSBpbmZvcm1hdGlvbiBmcm9tIGEgZ2l2ZW4gcmVxdWVzdC4gXGZQIgpAQCAtMTE0LDYgKzExNyw5IEBACiAuUkkgImludCBcZkJuZXRzbm1wX2NoZWNrX2dldG5leHRfcmVwbHlcZlAgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0LCBvaWQgKnByZWZpeCwgc2l6ZV90IHByZWZpeF9sZW4sIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqbmV3dmFyLCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKipvdXR2YXIpIgogLmJyCiAuUkkgIlxmSWNoZWNrcyB0aGUgb3JpZ2luYWwgcmVxdWVzdCBhZ2FpbnN0IHRoZSBjdXJyZW50IGRhdGEgYmVpbmcgcGFzc2VkIGluIGlmIGl0cyBncmVhdGVyIHRoYW4gdGhlIHJlcXVlc3Qgb2lkIGJ1dCBsZXNzIHRoYW4gdGhlIGN1cnJlbnQgdmFsaWQgcmV0dXJuLCBzZXQgdGhlIGN1cnJlbnQgdmFsaWQgcmV0dXJuIHRvIHRoZSBuZXcgdmFsdWUuIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWVcZlAgKFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAgKnRyaSkiCisuYnIKIC5pbiAtMWMKIC5TSCAiRGV0YWlsZWQgRGVzY3JpcHRpb24iCiAuUFAgCkBAIC0xMzAsNyArMTM2LDcgQEAKIC5QUAogY2hlY2tzIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGFnYWluc3QgdGhlIGN1cnJlbnQgZGF0YSBiZWluZyBwYXNzZWQgaW4gaWYgaXRzIGdyZWF0ZXIgdGhhbiB0aGUgcmVxdWVzdCBvaWQgYnV0IGxlc3MgdGhhbiB0aGUgY3VycmVudCB2YWxpZCByZXR1cm4sIHNldCB0aGUgY3VycmVudCB2YWxpZCByZXR1cm4gdG8gdGhlIG5ldyB2YWx1ZS4gcmV0dXJucyAxIGlmIG91dHZhciB3YXMgcmVwbGFjZWQgd2l0aCB0aGUgb2lkIGZyb20gbmV3dmFyIChzdWNjZXNzKS4gcmV0dXJucyAwIGlmIG5vdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4ODEgb2YgZmlsZSB0YWJsZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDkyOSBvZiBmaWxlIHRhYmxlLmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvXGZQKiBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0KSIKIC5QUAogRXh0cmFjdHMgdGhlIHByb2Nlc3NlZCB0YWJsZSBpbmZvcm1hdGlvbiBmcm9tIGEgZ2l2ZW4gcmVxdWVzdC4gQ2FsbCB0aGlzIGZyb20gc3ViaGFuZGxlcnMgb24gYSByZXF1ZXN0IHRvIGV4dHJhY3QgdGhlIHByb2Nlc3NlZCBuZXRzbm1wX3JlcXVlc3RfaW5mbyBpbmZvcm1hdGlvbi4gVGhlIHJlc3VsdGluZyBpbmZvcm1hdGlvbiBpbmNsdWRlcyB0aGUgaW5kZXggdmFsdWVzIGFuZCB0aGUgY29sdW1uIG51bWJlci4KQEAgLTE0NywxMiArMTUzLDEyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI1IG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNDMgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQKiBuZXRzbm1wX2ZpbmRfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvKSIKIC5QUAogZXh0cmFjdHMgdGhlIHJlZ2lzdGVyZWQgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyBvYmplY3QgZnJvbSBhIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gb2JqZWN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTM0IG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNTIgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX2dldF90YWJsZV9oYW5kbGVyIChcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQICogdGFicmVxKSIKIC5QUAogR2l2ZW4gYSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIG9iamVjdCwgY3JlYXRlcyBhIHRhYmxlIGhhbmRsZXIuIFlvdSBjYW4gdXNlIHRoaXMgdGFibGUgaGFuZGxlciBieSBpbmplY3RpbmcgaXQgaW50byBhIGNhbGxpbmcgY2hhaW4uIFdoZW4gdGhlIGhhbmRsZXIgZ2V0cyBjYWxsZWQsIGl0J2xsIGRvIHByb2Nlc3NpbmcgYW5kIHN0b3JlIGl0J3MgaW5mb3JtYXRpb24gaW50byB0aGUgcmVxdWVzdC0+cGFyZW50X2RhdGEgc3RydWN0dXJlLgpAQCAtMTcxLDIyICsxNzcsMjYgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NSBvZiBmaWxlIHRhYmxlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgOTEgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAgKiB0YWJyZXEpIgogLlBQCiBjcmVhdGVzIGEgdGFibGUgaGFuZGxlciBnaXZlbiB0aGUgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyBvYmplY3QsIGluc2VydHMgaXQgaW50byB0aGUgcmVxdWVzdCBjaGFpbiBhbmQgdGhlbiBjYWxscyBcZkJuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIoKVxmUCB0byByZWdpc3RlciB0aGUgdGFibGUgaW50byB0aGUgYWdlbnQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTA4IG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMTQgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX3NwYXJzZV90YWJsZV9oYW5kbGVyX2dldCAodm9pZCkiCiAuUFAKIGNyZWF0ZSBzcGFyc2UgdGFibGUgaGFuZGxlciAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDcyMiBvZiBmaWxlIHRhYmxlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzQ1IG9mIGZpbGUgdGFibGUuYy4KIC5TUyAiaW50IG5ldHNubXBfc3BhcnNlX3RhYmxlX3JlZ2lzdGVyIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqIHRhYnJlcSkiCiAuUFAKIGNyZWF0ZXMgYSB0YWJsZSBoYW5kbGVyIGdpdmVuIHRoZSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIG9iamVjdCwgaW5zZXJ0cyBpdCBpbnRvIHRoZSByZXF1ZXN0IGNoYWluIGFuZCB0aGVuIGNhbGxzIFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcigpXGZQIHRvIHJlZ2lzdGVyIHRoZSB0YWJsZSBpbnRvIHRoZSBhZ2VudC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3MzMgb2YgZmlsZSB0YWJsZS5jLgoraGFuZGxlcjEgaXMgaW4gcmVnaW5mby4uLiByZW1vdmUgYW5kIGZyZWU/PworLlBQCitib3RoIGhhbmRsZXJzIG5vdyBpbiByZWdpbmZvLCBzbyBub3RoaW5nIHRvIGRvIG9uIGVycm9yIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNzU2IG9mIGZpbGUgdGFibGUuYy4KIC5TUyAiaW50IG5ldHNubXBfdGFibGVfYnVpbGRfb2lkIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb1xmUCAqIHRhYmxlX2luZm8pIgogLlBQCiBnaXZlbiBhIHJlZ2lzdHJhdGlvbiBpbmZvIG9iamVjdCwgYSByZXF1ZXN0IG9iamVjdCBhbmQgdGhlIHRhYmxlIGluZm8gb2JqZWN0IGl0IGJ1aWxkcyB0aGUgcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lIG9pZCBmcm9tIHRoZSBpbmRleCB2YWx1ZXMgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3VuZCBpbiB0aGUgdGFibGVfaW5mbyBvYmplY3QuIEluZGV4IHZhbHVlcyBhcmUgZXh0cmFjdGVkIGZyb20gdGhlIHRhYmxlX2luZm8gdmFyYmluZHMuIApAQCAtMTk1LDI3ICsyMDUsMjcgQEAKIC5QUAogLmNvbHVtbiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc4NCBvZiBmaWxlIHRhYmxlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODMyIG9mIGZpbGUgdGFibGUuYy4KIC5TUyAiaW50IG5ldHNubXBfdGFibGVfYnVpbGRfb2lkX2Zyb21faW5kZXggKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvXGZQICogdGFibGVfaW5mbykiCiAuUFAKIGdpdmVuIGEgcmVnaXN0cmF0aW9uIGluZm8gb2JqZWN0LCBhIHJlcXVlc3Qgb2JqZWN0IGFuZCB0aGUgdGFibGUgaW5mbyBvYmplY3QgaXQgYnVpbGRzIHRoZSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWUgb2lkIGZyb20gdGhlIGluZGV4IHZhbHVlcyBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvdW5kIGluIHRoZSB0YWJsZV9pbmZvIG9iamVjdC4gSW5kZXggdmFsdWVzIGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUgdGFibGVfaW5mbyBpbmRleCBvaWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODIxIG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4Njkgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJpbnQgbmV0c25tcF90YWJsZV9idWlsZF9yZXN1bHQgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvXGZQICogdGFibGVfaW5mbywgdV9jaGFyIHR5cGUsIHVfY2hhciAqIHJlc3VsdCwgc2l6ZV90IHJlc3VsdF9sZW4pIgogLlBQCiBCdWlsZHMgdGhlIHJlc3VsdCB0byBiZSByZXR1cm5lZCB0byB0aGUgYWdlbnQgZ2l2ZW4gdGhlIHRhYmxlIGluZm9ybWF0aW9uLiBVc2UgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gcmVzdWx0cyBmcm9tIGxvd2VsIGxldmVsIGhhbmRsZXJzIHRvIHRoZSBhZ2VudC4gSXQgdGFrZXMgY2FyZSBvZiBidWlsZGluZyB0aGUgcHJvcGVyIHJlc3VsdGluZyBvaWQgKGNvbnRhaW5pbmcgcHJvcGVyIGluZGV4aW5nKSBhbmQgaW5zZXJ0cyB0aGUgcmVzdWx0IHZhbHVlIGludG8gdGhlIHJldHVybmluZyB2YXJiaW5kLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc1MSBvZiBmaWxlIHRhYmxlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzk5IG9mIGZpbGUgdGFibGUuYy4KIC5TUyAiaW50IG5ldHNubXBfdXBkYXRlX2luZGV4ZXNfZnJvbV92YXJpYWJsZV9saXN0IChcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb1xmUCAqIHRyaSkiCiAuUFAKIGJ1aWxkcyBhbiBvaWQgZ2l2ZW4gYSBzZXQgb2YgaW5kZXhlcy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NjMgb2YgZmlsZSB0YWJsZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDkxMSBvZiBmaWxlIHRhYmxlLmMuCiAuU1MgImludCBuZXRzbm1wX3VwZGF0ZV92YXJpYWJsZV9saXN0X2Zyb21faW5kZXggKFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvXGZQICogdHJpKSIKIC5QUAogcGFyc2VzIGFuIE9JRCBpbnRvIHRhYmxlIGluZGV4c2VzIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODQ3IG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4OTUgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJpbnQgdGFibGVfaGVscGVyX2hhbmRsZXIgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3RzKSIKIC5QUAogaW1wbGVtZW50cyB0aGUgdGFibGUgaGVscGVyIGhhbmRsZXIgCkBAIC0yMjgsNyArMjM4LDcgQEAKIC5QUAogZm9yIGxvb3AgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNDIgb2YgZmlsZSB0YWJsZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE2MCBvZiBmaWxlIHRhYmxlLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMKaW5kZXggNGRlYjQwNC4uMzhiMWJlYyAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMworKysgYi9tYW4vbmV0c25tcF90YWJsZV9hcnJheS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9hcnJheSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ0YWJsZV9hcnJheSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNjQsMjIgKzY0LDIyIEBACiAuUFAKIGZpbmQgdGhlIGNvbnRleHQgZGF0YSB1c2VkIGJ5IHRoZSB0YWJsZV9hcnJheSBoZWxwZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjkgb2YgZmlsZSB0YWJsZV9hcnJheS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzMCBvZiBmaWxlIHRhYmxlX2FycmF5LmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZmluZF90YWJsZV9hcnJheV9oYW5kbGVyIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbykiCiAuUFAKIGZpbmQgdGhlIGhhbmRsZXIgZm9yIHRoZSB0YWJsZV9hcnJheSBoZWxwZXIuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjEyIG9mIGZpbGUgdGFibGVfYXJyYXkuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyMTMgb2YgZmlsZSB0YWJsZV9hcnJheS5jLgogLlNTICJpbnQgbmV0c25tcF90YWJsZV9hcnJheV9jaGVja19yb3dfc3RhdHVzIChcZkJuZXRzbm1wX3RhYmxlX2FycmF5X2NhbGxiYWNrc1xmUCAqIGNiLCBcZkJuZXRzbm1wX3JlcXVlc3RfZ3JvdXBcZlAgKiBhZywgbG9uZyAqIHJzX25ldywgbG9uZyAqIHJzX29sZCkiCiAuUFAKIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIHZhbGlkYXRlIFJvd1N0YXR1cyB0cmFuc2l0aW9ucy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzYgb2YgZmlsZSB0YWJsZV9hcnJheS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzNyBvZiBmaWxlIHRhYmxlX2FycmF5LmMuCiAuU1MgImludCBuZXRzbm1wX3RhYmxlX2NvbnRhaW5lcl9yZWdpc3RlciAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAgKiB0YWJyZWcsIFxmQm5ldHNubXBfdGFibGVfYXJyYXlfY2FsbGJhY2tzXGZQICogY2IsIFxmQm5ldHNubXBfY29udGFpbmVyXGZQICogY29udGFpbmVyLCBpbnQgZ3JvdXBfcm93cykiCiAuUFAKIHJlZ2lzdGVyIHNwZWNpZmllZCBjYWxsYmFja3MgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUvb2lkLiBJZiB0aGUgZ3JvdXBfcm93cyBwYXJhbWV0ZXIgaXMgc2V0LCB0aGUgcm93IHJlbGF0ZWQgY2FsbGJhY2tzIHdpbGwgYmUgY2FsbGVkIG9uY2UgZm9yIGVhY2ggdW5pcXVlIHJvdyBpbmRleC4gT3RoZXJ3aXNlLCBlYWNoIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIG9ubHkgb25jZSwgZm9yIGFsbCBvYmplY3RzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE0OSBvZiBmaWxlIHRhYmxlX2FycmF5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTUwIG9mIGZpbGUgdGFibGVfYXJyYXkuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zCmluZGV4IGMwODcyNTguLmUyNWVjMDIgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zCisrKyBiL21hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9jb250YWluZXIiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGFibGVfY29udGFpbmVyIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0zMiw2ICszMiw5IEBACiAuUkkgImludCBcZkJuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yZWdpc3RlclxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqdGFicmVnLCBcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCAqY29udGFpbmVyLCBjaGFyIGtleV90eXBlKSIKIC5icgogLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9jb250YWluZXJfdGFibGVfdW5yZWdpc3RlclxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCisuYnIKKy50aSAtMWMKIC5SSSAiXGZCbmV0c25tcF9jb250YWluZXJcZlAgKiBcZkJuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9jb250YWluZXJfZXh0cmFjdFxmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QpIgogLmJyCiAuUkkgIlxmSXJldHJpZXZlIHRoZSBjb250YWluZXIgdXNlZCBieSB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciBcZlAiCkBAIC04NywxNyArOTAsMTcgQEAKIC5QUAogcmV0cmlldmUgdGhlIGNvbnRhaW5lciB1c2VkIGJ5IHRoZSB0YWJsZV9jb250YWluZXIgaGVscGVyIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzIwIG9mIGZpbGUgdGFibGVfY29udGFpbmVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzM5IG9mIGZpbGUgdGFibGVfY29udGFpbmVyLmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2hhbmRsZXJfZ2V0IChcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQICogdGFicmVnLCBcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCAqIGNvbnRhaW5lciwgY2hhciBrZXlfdHlwZSkiCiAuUFAKIHJldHVybnMgYSBuZXRzbm1wX21pYl9oYW5kbGVyIG9iamVjdCBmb3IgdGhlIHRhYmxlX2NvbnRhaW5lciBoZWxwZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNTQgb2YgZmlsZSB0YWJsZV9jb250YWluZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyNTUgb2YgZmlsZSB0YWJsZV9jb250YWluZXIuYy4KIC5TUyAidm9pZCBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfaW5zZXJ0IChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QsIFxmQm5ldHNubXBfaW5kZXhcZlAgKiByb3cpIgogLlBQCiBpbnNlcnRzIGEgbmV3bHkgY3JlYXRlZCB0YWJsZV9jb250YWluZXIgZW50cnkgaW50byBhIHJlcXVlc3QgbGlzdCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM1MSBvZiBmaWxlIHRhYmxlX2NvbnRhaW5lci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM3MCBvZiBmaWxlIHRhYmxlX2NvbnRhaW5lci5jLgogLlNTICJcZkJuZXRzbm1wX2luZGV4XGZQKiBuZXRzbm1wX3RhYmxlX2luZGV4X2ZpbmRfbmV4dF9yb3cgKFxmQm5ldHNubXBfY29udGFpbmVyXGZQICogYywgXGZCbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9cZlAgKiB0YmxyZXEpIgogLlBQCiBkZXByZWNhdGVkLCBiYWNrd2FyZHMgY29tcGF0YWJpbGl0eSBvbmx5IGV4cGVjdGVkIGltcGFjdCB0byByZW1vdmU6IG5vbmUKQEAgLTExMSw3ICsxMTQsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDcyMSBvZiBmaWxlIHRhYmxlX2NvbnRhaW5lci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc0MCBvZiBmaWxlIHRhYmxlX2NvbnRhaW5lci5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMwppbmRleCBlMzMyOTBiLi5jODFkODc0IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9kYXRhLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfZGF0YS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9kYXRhIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlX2RhdGEiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTQzLDcgKzQzLDcgQEAKIC5icgogLlJJICJcZklBZGRzIGEgcm93IG9mIGRhdGEgdG8gYSBnaXZlbiB0YWJsZSAoc3RvcmVkIGluIHByb3BlciBsZXhvZ3JhcGhpY2FsIG9yZGVyKS4gXGZQIgogLnRpIC0xYwotLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfdGFibGVfZGF0YV9yZXBsYWNlX3Jvd1xmUCAoXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQICp0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKm9yaWdyb3csIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpuZXdyb3cpIgorLlJJICJ2b2lkIFxmQm5ldHNubXBfdGFibGVfZGF0YV9yZXBsYWNlX3Jvd1xmUCAoXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQICp0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKm9yaWdyb3csIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpuZXdyb3cpIgogLmJyCiAuUkkgIlxmSXN3YXBzIG91dCBvcmlncm93IHdpdGggbmV3cm93LiBcZlAiCiAudGkgLTFjCkBAIC04Miw2ICs4Miw5IEBACiAuYnIKIC5SSSAiXGZJcmVnaXN0ZXJzIGEgaGFuZGxlciBhcyBhIHJlYWQtb25seSBkYXRhIHRhYmxlIElmIHRhYmxlX2luZm8gIT0gTlVMTCwgaXQgcmVnaXN0ZXJzIGl0IGFzIGEgbm9ybWFsIHRhYmxlIHRvby4gXGZQIgogLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF91bnJlZ2lzdGVyX3RhYmxlX2RhdGFcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8pIgorLmJyCisudGkgLTFjCiAuUkkgImludCBcZkJuZXRzbm1wX3RhYmxlX2RhdGFfaGVscGVyX2hhbmRsZXJcZlAgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICpyZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdHMpIgogLmJyCiAudGkgLTFjCkBAIC05Nyw3ICsxMDAsNyBAQAogLmJyCiAuUkkgIlxmSWV4dHJhY3RzIHRoZSBkYXRhIGZyb20gdGhlIHJvdyBiZWluZyBhY2Nlc3NlZCBwYXNzZWQgZnJvbSB0aGUgdGFibGVfZGF0YSBoZWxwZXIgXGZQIgogLnRpIC0xYwotLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfaW5zZXJ0X3RhYmxlX3Jvd1xmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpyb3cpIgorLlJJICJ2b2lkIFxmQm5ldHNubXBfaW5zZXJ0X3RhYmxlX3Jvd1xmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpyb3cpIgogLmJyCiAuUkkgIlxmSWluc2VydHMgYSBuZXdseSBjcmVhdGVkIHRhYmxlX2RhdGEgcm93IGludG8gYSByZXF1ZXN0IFxmUCIKIC50aSAtMWMKQEAgLTE4MSw3ICsxODQsNyBAQAogLlBQCiBjcmVhdGVzIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0YWJsZSBkYXRhIHNldCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUyIG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDUzIG9mIGZpbGUgdGFibGVfZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF9jcmVhdGVfdGFibGVfZGF0YV9yb3cgKHZvaWQpIgogLlBQCiBjcmVhdGVzIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0YWJsZSBkYXRhIHNldCAKQEAgLTE5MCw0MiArMTkzLDQyIEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjIgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjMgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCogbmV0c25tcF9leHRyYWN0X3RhYmxlIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QpIgogLlBQCiBleHRyYWN0cyB0aGUgdGFibGUgYmVpbmcgYWNjZXNzZWQgcGFzc2VkIGZyb20gdGhlIHRhYmxlX2RhdGEgaGVscGVyIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjU2IG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY2MiBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAqIG5ldHNubXBfZXh0cmFjdF90YWJsZV9yb3cgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCkiCiAuUFAKIGV4dHJhY3RzIHRoZSByb3cgYmVpbmcgYWNjZXNzZWQgcGFzc2VkIGZyb20gdGhlIHRhYmxlX2RhdGEgaGVscGVyIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjY0IG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY3MCBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAidm9pZCogbmV0c25tcF9leHRyYWN0X3RhYmxlX3Jvd19kYXRhIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QpIgogLlBQCiBleHRyYWN0cyB0aGUgZGF0YSBmcm9tIHRoZSByb3cgYmVpbmcgYWNjZXNzZWQgcGFzc2VkIGZyb20gdGhlIHRhYmxlX2RhdGEgaGVscGVyIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjczIG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY3OSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9nZXRfdGFibGVfZGF0YV9oYW5kbGVyIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFcZlAgKiB0YWJsZSkiCiAuUFAKIENyZWF0ZXMgYSB0YWJsZV9kYXRhIGhhbmRsZXIgYW5kIHJldHVybnMgaXQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzc4IG9mIGZpbGUgdGFibGVfZGF0YS5jLgotLlNTICJORVRTTk1QX0lOTElORSB2b2lkIG5ldHNubXBfaW5zZXJ0X3RhYmxlX3JvdyAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0LCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCitEZWZpbml0aW9uIGF0IGxpbmUgMzc3IG9mIGZpbGUgdGFibGVfZGF0YS5jLgorLlNTICJ2b2lkIG5ldHNubXBfaW5zZXJ0X3RhYmxlX3JvdyAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0LCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIGluc2VydHMgYSBuZXdseSBjcmVhdGVkIHRhYmxlX2RhdGEgcm93IGludG8gYSByZXF1ZXN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjg1IG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY5MSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3RhYmxlX2RhdGEgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX2RhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqIHRhYmxlX2luZm8pIgogLlBQCiByZWdpc3RlcnMgYSBoYW5kbGVyIGFzIGEgcmVhZC1vbmx5IGRhdGEgdGFibGUgSWYgdGFibGVfaW5mbyAhPSBOVUxMLCBpdCByZWdpc3RlcnMgaXQgYXMgYSBub3JtYWwgdGFibGUgdG9vLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQxMiBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0MTEgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGEgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX2RhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqIHRhYmxlX2luZm8pIgogLlBQCiByZWdpc3RlcnMgYSBoYW5kbGVyIGFzIGEgZGF0YSB0YWJsZS4gSWYgdGFibGVfaW5mbyAhPSBOVUxMLCBpdCByZWdpc3RlcnMgaXQgYXMgYSBub3JtYWwgdGFibGUgdG9vLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQwMSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0MDAgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgImludCBuZXRzbm1wX3RhYmxlX2RhdGFfYWRkX3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogQWRkcyBhIHJvdyBvZiBkYXRhIHRvIGEgZ2l2ZW4gdGFibGUgKHN0b3JlZCBpbiBwcm9wZXIgbGV4b2dyYXBoaWNhbCBvcmRlcikuIHJldHVybnMgU05NUEVSUl9TVUNDRVNTIG9uIHN1Y2Nlc3NmdWwgYWRkaXRpb24uIG9yIFNOTVBFUlJfR0VORVJSIG9uIGZhaWx1cmUgKEUuRy4sIGluZGV4ZXMgYWxyZWFkeSBleGlzdGVkKSAKQEAgLTIzNyw3ICsyNDAsNyBAQAogLlBQCiBjbG9uZXMgYSBkYXRhIHJvdy4gRE9FUyBOT1QgQ0xPTkUgVEhFIENPTlRBSU5FRCBEQVRBLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDcwIG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDcxIG9mIGZpbGUgdGFibGVfZGF0YS5jLgogLlNTICJ2b2lkKiBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3JvdyAoXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiByb3cpIgogLlBQCiBkZWxldGVzIGEgcm93J3MgbWVtb3J5LiByZXR1cm5zIHRoZSB2b2lkIGRhdGEgdGhhdCBpdCBkb2Vzbid0IGtub3cgaG93IHRvIGRlbGV0ZS4gCkBAIC0yNDcsMjIgKzI1MCwyMiBAQAogLlBQCiBmaW5kcyB0aGUgZGF0YSBpbiAnZGF0YWxpc3QnIHN0b3JlZCBhdCAnaW5kZXhlcycgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4MTEgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODE3IG9mIGZpbGUgdGFibGVfZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF90YWJsZV9kYXRhX2dldF9maXJzdF9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlKSIKIC5QUAogcmV0dXJucyB0aGUgZmlyc3Qgcm93IGluIHRoZSB0YWJsZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc5MiBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3OTggb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGFibGVfcm93XGZQKiBuZXRzbm1wX3RhYmxlX2RhdGFfZ2V0X2Zyb21fb2lkIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFcZlAgKiB0YWJsZSwgb2lkICogc2VhcmNoZm9yLCBzaXplX3Qgc2VhcmNoZm9yX2xlbikiCiAuUFAKIGZpbmRzIHRoZSBkYXRhIGluICdkYXRhbGlzdCcgc3RvcmVkIGF0IHRoZSBzZWFyY2hmb3Igb2lkIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODI1IG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgzMSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAqIG5ldHNubXBfdGFibGVfZGF0YV9nZXRfbmV4dF9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIHJldHVybnMgdGhlIG5leHQgcm93IGluIHRoZSB0YWJsZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDgwMSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4MDcgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgInZvaWQqIG5ldHNubXBfdGFibGVfZGF0YV9yZW1vdmVfYW5kX2RlbGV0ZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIHJlbW92ZXMgYW5kIGZyZWVzIGEgcm93IG9mIGRhdGEgdG8gYSBnaXZlbiB0YWJsZSBhbmQgcmV0dXJucyB0aGUgdm9pZCAqIHJldHVybnMgdGhlIHZvaWQgKiBkYXRhIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24uIG9yIE5VTEwgb24gZmFpbHVyZSAoYmFkIGFyZ3VtZW50cykgCkBAIC0yNzMsNyArMjc2LDcgQEAKIHJlbW92ZXMgYSByb3cgb2YgZGF0YSB0byBhIGdpdmVuIHRhYmxlIGFuZCByZXR1cm5zIGl0IChubyBmcmVlJ3MgY2FsbGVkKSByZXR1cm5zIHRoZSByb3cgcG9pbnRlciBpdHNlbGYgb24gc3VjY2Vzc2Z1bCByZW1vdmluZy4gb3IgTlVMTCBvbiBmYWlsdXJlIChiYWQgYXJndW1lbnRzKSAKIC5QUAogRGVmaW5pdGlvbiBhdCBsaW5lIDI0OCBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KLS5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFfcmVwbGFjZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIG9yaWdyb3csIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogbmV3cm93KSIKKy5TUyAidm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFfcmVwbGFjZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIG9yaWdyb3csIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogbmV3cm93KSIKIC5QUAogc3dhcHMgb3V0IG9yaWdyb3cgd2l0aCBuZXdyb3cuIFRoaXMgZG9lcyAqbm90KiBkZWxldGUvZnJlZSBhbnl0aGluZyEgCiAuUFAKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMwppbmRleCA4YTAxYzNjLi40YTBjZDRjIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9kYXRhc2V0IiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlX2RhdGFzZXQiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTEzLDE3ICsxMyw2IEBACiAuUkkgInZvaWQgXGZCbmV0c25tcF9pbml0X3RhYmxlX2RhdGFzZXRcZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCi0uUkkgIlxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV90YWJsZV9kYXRhX3NldFxmUCAoY29uc3QgY2hhciAqdGFibGVfbmFtZSkiCi0uYnIKLS5SSSAiXGZJQ3JlYXRlIGEgbmV0c25tcF90YWJsZV9kYXRhX3NldCBzdHJ1Y3R1cmUgZ2l2ZW4gYSB0YWJsZV9kYXRhIGRlZmluaXRpb24uIFxmUCIKLS50aSAtMWMKLS5SSSAidm9pZCBcZkJuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldFxmUCAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqdGFibGVfc2V0KSIKLS5icgotLnRpIC0xYwotLlJJICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfY2xvbmVfcm93XGZQIChcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqcm93KSIKLS5icgotLlJJICJcZkljbG9uZXMgYSBkYXRhc2V0IHJvdywgaW5jbHVkaW5nIGFsbCBkYXRhLiBcZlAiCi0udGkgLTFjCiAuUkkgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZVxmUCAqIFxmQm5ldHNubXBfdGFibGVfZGF0YXNldF9kZWxldGVfZGF0YVxmUCAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQICpkYXRhKSIKIC5icgogLlJJICJcZklkZWxldGVzIGEgc2luZ2xlIGRhdGFzZXQgdGFibGUgZGF0YS4gXGZQIgpAQCAtNTIsNiArNDEsMTcgQEAKIC5icgogLlJJICJcZklyZW1vdmVzIGEgcm93IGZyb20gdGhlIHRhYmxlIGFuZCB0aGVuIGRlbGV0ZXMgaXQgKGFuZCBhbGwgaXRzIGRhdGEpIFxmUCIKIC50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIFxmQm5ldHNubXBfY3JlYXRlX3RhYmxlX2RhdGFfc2V0XGZQIChjb25zdCBjaGFyICp0YWJsZV9uYW1lKSIKKy5icgorLlJJICJcZklDcmVhdGUgYSBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0IHN0cnVjdHVyZSBnaXZlbiBhIHRhYmxlX2RhdGEgZGVmaW5pdGlvbi4gXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0XGZQIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICp0YWJsZV9zZXQpIgorLmJyCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfdGFibGVfcm93XGZQICogXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9jbG9uZV9yb3dcZlAgKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpyb3cpIgorLmJyCisuUkkgIlxmSWNsb25lcyBhIGRhdGFzZXQgcm93LCBpbmNsdWRpbmcgYWxsIGRhdGEuIFxmUCIKKy50aSAtMWMKIC5SSSAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiBcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X2NyZWF0ZV9yb3dfZnJvbV9kZWZhdWx0c1xmUCAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQICpkZWZyb3cpIgogLmJyCiAuUkkgIlxmSWNyZWF0ZXMgYSBuZXcgcm93IGZyb20gYW4gZXhpc3RpbmcgZGVmaW5lZCBkZWZhdWx0IHNldCBcZlAiCkBAIC0xMTUsNyArMTE1LDcgQEAKIC5icgogLlJJICJcZkltYXJrcyBhIGdpdmVuIGNvbHVtbiBpbiBhIHJvdyBhcyB3cml0YWJsZSBvciBub3QuIFxmUCIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfc2V0X3Jvd19jb2x1bW5cZlAgKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpyb3csIHVuc2lnbmVkIGludCBjb2x1bW4sIGludCB0eXBlLCBjb25zdCBjaGFyICp2YWx1ZSwgc2l6ZV90IHZhbHVlX2xlbikiCisuUkkgImludCBcZkJuZXRzbm1wX3NldF9yb3dfY29sdW1uXGZQIChcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqcm93LCB1bnNpZ25lZCBpbnQgY29sdW1uLCBpbnQgdHlwZSwgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCB2YWx1ZV9sZW4pIgogLmJyCiAuUkkgIlxmSXNldHMgYSBnaXZlbiBjb2x1bW4gaW4gYSByb3cgd2l0aCBkYXRhIGdpdmVuIGEgdHlwZSwgdmFsdWUsIGFuZCBsZW5ndGguIFxmUCIKIC50aSAtMWMKQEAgLTE0NCwyMiArMTQ0LDIyIEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzcgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTY1IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJORVRTTk1QX0lOTElORSBcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQKiBuZXRzbm1wX2V4dHJhY3RfdGFibGVfZGF0YV9zZXQgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCkiCiAuUFAKIGV4dHJhY3RzIGEgbmV0c25tcF90YWJsZV9kYXRhX3NldCBwb2ludGVyIGZyb20gYSBnaXZlbiByZXF1ZXN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODM4IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgzOSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQKiBuZXRzbm1wX2V4dHJhY3RfdGFibGVfZGF0YV9zZXRfY29sdW1uIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QsIHVuc2lnbmVkIGludCBjb2x1bW4pIgogLlBQCiBleHRyYWN0cyBhIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgcG9pbnRlciBmcm9tIGEgZ2l2ZW4gcmVxdWVzdCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg0OCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4NDkgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X3RhYmxlX2RhdGFfc2V0X2hhbmRsZXIgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiBkYXRhX3NldCkiCiAuUFAKIEdpdmVuIGEgbmV0c25tcF90YWJsZV9kYXRhX3NldCBkZWZpbml0aW9uLCBjcmVhdGUgYSBoYW5kbGVyIGZvciBpdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNzIgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzYzIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJpbnQgbmV0c25tcF9tYXJrX3Jvd19jb2x1bW5fd3JpdGFibGUgKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93LCBpbnQgY29sdW1uLCBpbnQgd3JpdGFibGUpIgogLlBQCiBtYXJrcyBhIGdpdmVuIGNvbHVtbiBpbiBhIHJvdyBhcyB3cml0YWJsZSBvciBub3QuIApAQCAtMTY4LDcgKzE2OCw3IEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTIxNCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjE3IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJ2b2lkIG5ldHNubXBfcmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGVfc2V0LCBjaGFyICogcmVnaXN0cmF0aW9uX25hbWUpIgogLlBQCiByZWdpc3RlcnMgYSB0YWJsZV9kYXRhc2V0IHNvIHRoYXQgdGhlICdhZGRfcm93JyBzbm1wZC5jb25mIHRva2VuIGNhbiBiZSB1c2VkIHRvIGFkZCBkYXRhIHRvIHRoaXMgdGFibGUuIElmIHJlZ2lzdHJhdGlvbl9uYW1lIGlzIE5VTEwgdGhlbiB0aGUgbmFtZSB1c2VkIHdoZW4gdGhlIHRhYmxlIHdhcyBjcmVhdGVkIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLgpAQCAtMTg0LDcgKzE4NCw3IEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODc1IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg3NiBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YV9zZXQgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogZGF0YV9zZXQsIFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAgKiB0YWJsZV9pbmZvKSIKIC5QUAogcmVnaXN0ZXIgYSBnaXZlbiBkYXRhX3NldCBhdCBhIGdpdmVuIG9pZCAoc3BlY2lmaWVkIGluIHRoZSBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIHBvaW50ZXIpLiBUaGUgcmVnaW5mby0+aGFuZGxlci0+YWNjZXNzX21ldGhvZCAqbWF5KiBiZSBudWxsIGlmIHRoZSBjYWxsIGRvZXNuJ3QgZXZlciB3YW50IHRvIGJlIGNhbGxlZCBmb3IgU05NUCBvcGVyYXRpb25zLiAKQEAgLTE5Myw4ICsxOTMsOCBAQAogLmluICsxYwogXGZCZGF0YV9zZXQuY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM5OCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KLS5TUyAiaW50IG5ldHNubXBfc2V0X3Jvd19jb2x1bW4gKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93LCB1bnNpZ25lZCBpbnQgY29sdW1uLCBpbnQgdHlwZSwgY29uc3QgY2hhciAqIHZhbHVlLCBzaXplX3QgdmFsdWVfbGVuKSIKK0RlZmluaXRpb24gYXQgbGluZSAzODkgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCisuU1MgImludCBuZXRzbm1wX3NldF9yb3dfY29sdW1uIChcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdywgdW5zaWduZWQgaW50IGNvbHVtbiwgaW50IHR5cGUsIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IHZhbHVlX2xlbikiCiAuUFAKIHNldHMgYSBnaXZlbiBjb2x1bW4gaW4gYSByb3cgd2l0aCBkYXRhIGdpdmVuIGEgdHlwZSwgdmFsdWUsIGFuZCBsZW5ndGguIERhdGEgaXMgbWVtZHVwJ2VkIGJ5IHRoZSBmdW5jdGlvbi4gCiAuUFAKQEAgLTIwMiwzMiArMjAyLDMyIEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI0OSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjUyIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF90YWJsZV9kYXRhX3NldF9jbG9uZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogY2xvbmVzIGEgZGF0YXNldCByb3csIGluY2x1ZGluZyBhbGwgZGF0YS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDggb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTk2IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF90YWJsZV9kYXRhX3NldF9jcmVhdGVfcm93X2Zyb21fZGVmYXVsdHMgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZVxmUCAqIGRlZnJvdykiCiAuUFAKIGNyZWF0ZXMgYSBuZXcgcm93IGZyb20gYW4gZXhpc3RpbmcgZGVmaW5lZCBkZWZhdWx0IHNldCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI0MiBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyNDQgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIlxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZVxmUCogbmV0c25tcF90YWJsZV9kYXRhX3NldF9maW5kX2NvbHVtbiAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQICogc3RhcnQsIHVuc2lnbmVkIGludCBjb2x1bW4pIgogLlBQCiBGaW5kcyBhIGNvbHVtbiB3aXRoaW4gYSBnaXZlbiBzdG9yYWdlIHNldCwgZ2l2ZW4gdGhlIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzdG9yYWdlIHNldCBsaXN0LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEyMDIgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTIwNSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAqIG5ldHNubXBfdGFibGVfZGF0YV9zZXRfZ2V0X2ZpcnN0X3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIHRhYmxlKSIKIC5QUAogcmV0dXJucyB0aGUgZmlyc3Qgcm93IGluIHRoZSB0YWJsZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDExNzEgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTE3NCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAqIG5ldHNubXBfdGFibGVfZGF0YV9zZXRfZ2V0X25leHRfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogcmV0dXJucyB0aGUgbmV4dCByb3cgaW4gdGhlIHRhYmxlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTE3OCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMTgxIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJ2b2lkIG5ldHNubXBfdGFibGVfZGF0YXNldF9hZGRfaW5kZXggKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiB0YWJsZSwgdV9jaGFyIHR5cGUpIgogLlBQCiBhZGRzIGFuIGluZGV4IHRvIHRoZSB0YWJsZS4gQ2FsbCB0aGlzIHJlcGVhdGx5IGZvciBlYWNoIGluZGV4LiAKQEAgLTIzNiw3ICsyMzYsNyBAQAogLmluICsxYwogXGZCZGF0YV9zZXQuY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzMDMgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTMwNiBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfYWRkX3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIGFkZHMgYSBuZXcgcm93IHRvIGEgZGF0YXNldCB0YWJsZSAKQEAgLTI0NSw0OSArMjQ1LDQ5IEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTg3IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExNyBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfZGVsZXRlX2FsbF9kYXRhIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2VcZlAgKiBkYXRhKSIKIC5QUAogZGVsZXRlcyBhbGwgdGhlIGRhdGEgZnJvbSB0aGlzIFxmQm5vZGVcZlAgYW5kIGJleW9uZCBpbiB0aGUgbGlua2VkIGxpc3QgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNjQgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgOTQgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZVxmUCogbmV0c25tcF90YWJsZV9kYXRhc2V0X2RlbGV0ZV9kYXRhIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2VcZlAgKiBkYXRhKSIKIC5QUAogZGVsZXRlcyBhIHNpbmdsZSBkYXRhc2V0IHRhYmxlIGRhdGEuIHJldHVybnMgdGhlIChwb3NzaWJseSBzdGlsbCBnb29kKSBuZXh0IHBvaW50ZXIgb2YgdGhlIGRlbGV0ZWQgZGF0YSBvYmplY3QuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTUxIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgxIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJORVRTTk1QX0lOTElORSB2b2lkIG5ldHNubXBfdGFibGVfZGF0YXNldF9kZWxldGVfcm93IChcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIGRlbGV0ZXMgYWxsIHRoZSBkYXRhIGZyb20gdGhpcyBcZkJub2RlXGZQIGFuZCBiZXlvbmQgaW4gdGhlIGxpbmtlZCBsaXN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTc0IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEwNCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfcmVtb3ZlX2FuZF9kZWxldGVfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogcmVtb3ZlcyBhIHJvdyBmcm9tIHRoZSB0YWJsZSBhbmQgdGhlbiBkZWxldGVzIGl0IChhbmQgYWxsIGl0cyBkYXRhKSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIxOSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNDkgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF90YWJsZV9kYXRhc2V0X3JlbW92ZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiByb3cpIgogLlBQCiByZW1vdmVzIGEgcm93IGZyb20gdGhlIHRhYmxlLCBidXQgZG9lc24ndCBkZWxldGUvZnJlZSB0aGUgY29sdW1uIHZhbHVlcyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIwOCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMzggb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF90YWJsZV9kYXRhc2V0X3JlcGxhY2Vfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogb3JpZ3JvdywgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiBuZXdyb3cpIgogLlBQCiBhZGRzIGEgbmV3IHJvdyB0byBhIGRhdGFzZXQgdGFibGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxOTcgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTI3IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJpbnQgbmV0c25tcF90YWJsZV9zZXRfYWRkX2RlZmF1bHRfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGVfc2V0LCB1bnNpZ25lZCBpbnQgY29sdW1uLCBpbnQgdHlwZSwgaW50IHdyaXRhYmxlLCB2b2lkICogZGVmYXVsdF92YWx1ZSwgc2l6ZV90IGRlZmF1bHRfdmFsdWVfbGVuKSIKIC5QUAogYWRkcyBhIG5ldyBkZWZhdWx0IHJvdyB0byBhIHRhYmxlX3NldC4gQXJndW1lbnRzIHNob3VsZCBiZSB0aGUgdGFibGVfc2V0LCBjb2x1bW4gbnVtYmVyLCBcZkJ2YXJpYWJsZVxmUCB0eXBlIGFuZCBmaW5hbGx5IGEgMSBpZiBpdCBpcyBhbGxvd2VkIHRvIGJlIHdyaXRhYmxlLCBvciBhIDAgaWYgbm90LiBJZiB0aGUgZGVmYXVsdF92YWx1ZSBmaWVsZCBpcyBub3QgTlVMTCwgaXQgd2lsbCBiZSB1c2VkIHRvIHBvcHVsYXRlIG5ldyB2YWx1c2UgaW4gdGhhdCBjb2x1bW4gZnJvIG5ld2x5IGNyZWF0ZWQgcm93cy4gSXQgaXMgY29waWVkIGludG8gdGhlIHN0b3JhZ2UgdGVtcGxhdGUgKGZyZWUgeW91ciBjYWxsaW5nIGFyZ3VtZW50KS4KIC5QUAogcmV0dXJucyBTTk1QRVJSX1NVQ0NFU1Mgb3IgU05NUEVSUl9GQUlMVVJFIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjY4IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI3MCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAidm9pZCBuZXRzbm1wX3RhYmxlX3NldF9hZGRfaW5kZXhlcyAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIHRzZXQsICAuLi4pIgogLlBQCiBhZGRzIG11bHRpcGxlIGluZGV4ZXMgdG8gYSB0YWJsZV9kYXRhc2V0IGhlbHBlciBvYmplY3QuIFRvIGVuZCB0aGUgbGlzdCwgdXNlIGEgMCBhZnRlciB0aGUgbGlzdCBvZiBBU04gaW5kZXggdHlwZXMuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTMxNCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMzE2IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJ2b2lkIG5ldHNubXBfdGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIHRzZXQsICAuLi4pIgogLlBQCiBhZGRzIG11bHRpcGxlIGRhdGEgY29sdW1uIGRlZmluaXRpb25zIHRvIGVhY2ggcm93LiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBjYWxsaW5nIG5ldHNubXBfdGFibGVfc2V0X2FkZF9kZWZhdWx0X3JvdyByZXBlYXRlZGx5IGZvciB5b3UuIApAQCAtMjk2LDcgKzI5Niw3IEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzI5IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzMiBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMgYi9tYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMKaW5kZXggYWViYzg5ZS4uZGQ0NDU2ZiAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zCisrKyBiL21hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiZ2VuZXJpY190YWJsZV9BUEkiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiZ2VuZXJpY190YWJsZV9BUEkiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMwppbmRleCAxZTk0NjY3Li41ZDBmZWI0IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9pbmRleGVzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlX2luZGV4ZXMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMgYi9tYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zCmluZGV4IDU3NjVhZWEuLjc2Y2M0YWMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAidGFibGVfaXRlcmF0b3IiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGFibGVfaXRlcmF0b3IiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMyBiL21hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMwppbmRleCAyYzA2ZGI0Li41ZmEzYWYzIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9pdGVyYXRvci5oIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlX2l0ZXJhdG9yLmgiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMgYi9tYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zCmluZGV4IDg0NDYzYWYuLmMzMThlY2IgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAidGFibGVfbWFpbnRlbmFuY2UiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGFibGVfbWFpbnRlbmFuY2UiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zIGIvbWFuL25ldHNubXBfdGFibGVfcm93LjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY1OWRjZgotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zCkBAIC0wLDAgKzEsNDEgQEAKKy5USCAidGFibGVfcm93IiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5hZCBsCisubmgKKy5TSCBOQU1FCit0YWJsZV9yb3cgXC0gCisuUFAKK0hlbHBzIHlvdSBpbXBsZW1lbnQgYSB0YWJsZSBzaGFyZWQgYWNyb3NzIHR3byBvciBtb3JlIHN1YmFnZW50cywgb3Igb3RoZXJ3aXNlIHNwbGl0IGludG8gaW5kaXZpZHVhbCByb3cgc2xpY2VzLiAgCisKKy5TUyAiRnVuY3Rpb25zIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBcZkJuZXRzbm1wX3RhYmxlX3Jvd19oYW5kbGVyX2dldFxmUCAodm9pZCAqcm93KSIKKy5icgorLlJJICJcZklyZXR1cm5zIGEgbmV0c25tcF9taWJfaGFuZGxlciBvYmplY3QgZm9yIHRoZSB0YWJsZV9jb250YWluZXIgaGVscGVyIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfdGFibGVfcm93X3JlZ2lzdGVyXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQICp0YWJyZWcsIHZvaWQgKnJvdywgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICppbmRleCkiCisuYnIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQm5ldHNubXBfdGFibGVfcm93X2V4dHJhY3RcZlAgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0KSIKKy5icgorLlJJICJcZklyZXR1cm4gdGhlIHJvdyBkYXRhIHN0cnVjdHVyZSBzdXBwbGllZCB0byB0aGUgdGFibGVfcm93IGhlbHBlciBcZlAiCisuaW4gLTFjCisuU0ggIkRldGFpbGVkIERlc2NyaXB0aW9uIgorLlBQIAorSGVscHMgeW91IGltcGxlbWVudCBhIHRhYmxlIHNoYXJlZCBhY3Jvc3MgdHdvIG9yIG1vcmUgc3ViYWdlbnRzLCBvciBvdGhlcndpc2Ugc3BsaXQgaW50byBpbmRpdmlkdWFsIHJvdyBzbGljZXMuIAorLlNIICJGdW5jdGlvbiBEb2N1bWVudGF0aW9uIgorLlBQIAorLlNTICJ2b2lkKiBuZXRzbm1wX3RhYmxlX3Jvd19leHRyYWN0IChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QpIgorLlBQCityZXR1cm4gdGhlIHJvdyBkYXRhIHN0cnVjdHVyZSBzdXBwbGllZCB0byB0aGUgdGFibGVfcm93IGhlbHBlciAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDE1OCBvZiBmaWxlIHRhYmxlX3Jvdy5jLgorLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX3RhYmxlX3Jvd19oYW5kbGVyX2dldCAodm9pZCAqIHJvdykiCisuUFAKK3JldHVybnMgYSBuZXRzbm1wX21pYl9oYW5kbGVyIG9iamVjdCBmb3IgdGhlIHRhYmxlX2NvbnRhaW5lciBoZWxwZXIgCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA3NSBvZiBmaWxlIHRhYmxlX3Jvdy5jLgorLlNIICJBdXRob3IiCisuUFAgCitHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMyBiL21hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMwppbmRleCBjZjM3YjJkLi40YWJmMzg4IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9yb3dzLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfcm93cy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9yb3dzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlX3Jvd3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RkYXRhLjMgYi9tYW4vbmV0c25tcF90ZGF0YS4zCmluZGV4IDE2YmQ2YTIuLmUxNTQ3OGMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RkYXRhLjMKKysrIGIvbWFuL25ldHNubXBfdGRhdGEuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAidGRhdGEiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGRhdGEiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTY0LDYgKzY0LDkgQEAKIC5icgogLlJJICJcZklyZWdpc3RlcnMgYSB0ZGF0YS1iYXNlZCBNSUIgdGFibGUgXGZQIgogLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF90ZGF0YV91bnJlZ2lzdGVyXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvKSIKKy5icgorLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX3RkYXRhXGZQICogXGZCbmV0c25tcF90ZGF0YV9leHRyYWN0X3RhYmxlXGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCkiCiAuYnIKIC5SSSAiXGZJZXh0cmFjdHMgdGhlIHRkYXRhIHRhYmxlIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlIFxmUCIKQEAgLTE1MSwzMiArMTU0LDMyIEBACiAuUFAKIENyZWF0ZXMgYSB0ZGF0YSBoYW5kbGVyIGFuZCByZXR1cm5zIGl0LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI4NCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjgzIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX2luc2VydF90ZGF0YV9yb3cgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCwgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiBpbnNlcnRzIGEgbmV3bHkgY3JlYXRlZCB0ZGF0YSByb3cgaW50byBhIHJlcXVlc3QgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzOTkgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQwNSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgImludCBuZXRzbm1wX3RkYXRhX2FkZF9yb3cgKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiBBZGRzIGEgcm93IHRvIHRoZSBnaXZlbiB0YWJsZSAoc3RvcmVkIGluIHByb3BlciBsZXhvZ3JhcGhpY2FsIG9yZGVyKS4gcmV0dXJucyBTTk1QRVJSX1NVQ0NFU1Mgb24gc3VjY2Vzc2Z1bCBhZGRpdGlvbi4gb3IgU05NUEVSUl9HRU5FUlIgb24gZmFpbHVyZSAoRS5HLiwgaW5kZXhlcyBhbHJlYWR5IGV4aXN0ZWQpIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTg2IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxODUgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCogbmV0c25tcF90ZGF0YV9jbG9uZV9yb3cgKFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogcm93KSIKIC5QUAogY2xvbmVzIGEgJ3RkYXRhJyByb3cuIERPRVMgTk9UIENMT05FIFRIRSBUQUJMRS1TUEVDSUZJQyBFTlRSWSBEQVRBLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDkyIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA5MyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgImludCBuZXRzbm1wX3RkYXRhX2NvbXBhcmVfaWR4IChcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCAqIHJvdywgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogaW5kZXhlcykiCiAuUFAKIGNvbXBhcmUgYSByb3cgd2l0aCB0aGUgZ2l2ZW4gaW5kZXggdmFsdWVzIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTE4IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1MjQgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJpbnQgbmV0c25tcF90ZGF0YV9jb21wYXJlX29pZCAoXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3csIG9pZCAqIGNvbXBhcmV0bywgc2l6ZV90IGNvbXBhcmV0b19sZW4pIgogLlBQCiBjb21wYXJlIGEgcm93IHdpdGggdGhlIGdpdmVuIGluZGV4IE9JRCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUzMSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNTM3IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiaW50IG5ldHNubXBfdGRhdGFfY29weV9yb3cgKFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogZHN0X3JvdywgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiBzcmNfcm93KSIKIC5QUAogY29weSB0aGUgY29udGVudHMgb2YgYSAndGRhdGEnIHJvdy4gRE9FUyBOT1QgQ09QWSBUSEUgVEFCTEUtU1BFQ0lGSUMgRU5UUlkgREFUQS4gCkBAIC0xODYsMTAyICsxODksMTAyIEBACiAuUFAKIGNyZWF0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIG5ldyByb3cgZGF0YSBzdHJ1Y3R1cmUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODUgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhXGZQKiBuZXRzbm1wX3RkYXRhX2NyZWF0ZV90YWJsZSAoY29uc3QgY2hhciAqIG5hbWUsIGxvbmcgZmxhZ3MpIgogLlBQCiBjcmVhdGVzIGFuZCByZXR1cm5zIGEgJ3RkYXRhJyB0YWJsZSBkYXRhIHN0cnVjdHVyZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1NSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgInZvaWQqIG5ldHNubXBfdGRhdGFfZGVsZXRlX3JvdyAoXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiBkZWxldGVzIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgc3BlY2lmaWVkIHJvdyByZXR1cm5zIHRoZSB0YWJsZS1zcGVjaWZpYyBlbnRyeSBkYXRhICh0aGF0IGl0IGRvZXNuJ3Qga25vdyBob3cgdG8gZGVsZXRlKSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1NyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTU2IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAidm9pZCBuZXRzbm1wX3RkYXRhX2RlbGV0ZV90YWJsZSAoXGZCbmV0c25tcF90ZGF0YVxmUCAqIHRhYmxlKSIKIC5QUAogY3JlYXRlcyBhbmQgcmV0dXJucyBhICd0ZGF0YScgdGFibGUgZGF0YSBzdHJ1Y3R1cmUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2OCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjkgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCogbmV0c25tcF90ZGF0YV9leHRyYWN0X2NvbnRhaW5lciAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0KSIKIC5QUAogZXh0cmFjdHMgdGhlIHRkYXRhIGNvbnRhaW5lciBmcm9tIHRoZSByZXF1ZXN0IHN0cnVjdHVyZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM3MCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzc2IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAidm9pZCogbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5IChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QpIgogLlBQCiBleHRyYWN0cyB0aGUgKHRhYmxlLXNwZWNpZmljKSBlbnRyeSBiZWluZyBhY2Nlc3NlZCBmcm9tIHRoZSByZXF1ZXN0IHN0cnVjdHVyZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM4NyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzkzIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAqIG5ldHNubXBfdGRhdGFfZXh0cmFjdF9yb3cgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCkiCiAuUFAKIGV4dHJhY3RzIHRoZSB0ZGF0YSByb3cgYmVpbmcgYWNjZXNzZWQgZnJvbSB0aGUgcmVxdWVzdCBzdHJ1Y3R1cmUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNzkgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM4NSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFcZlAqIG5ldHNubXBfdGRhdGFfZXh0cmFjdF90YWJsZSAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0KSIKIC5QUAogZXh0cmFjdHMgdGhlIHRkYXRhIHRhYmxlIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzYyIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNjggb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJpbnQgbmV0c25tcF90ZGF0YV9yZWdpc3RlciAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqIHRhYmxlX2luZm8pIgogLlBQCiByZWdpc3RlcnMgYSB0ZGF0YS1iYXNlZCBNSUIgdGFibGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNTEgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1MCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgInZvaWQqIG5ldHNubXBfdGRhdGFfcmVtb3ZlX2FuZF9kZWxldGVfcm93IChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogcm93KSIKIC5QUAogcmVtb3ZlcyBhbmQgZnJlZXMgYSByb3cgb2YgdGhlIGdpdmVuIHRhYmxlIGFuZCByZXR1cm5zIHRoZSB0YWJsZS1zcGVjaWZpYyBlbnRyeSBkYXRhIHJldHVybnMgdGhlIHZvaWQgKiBwb2ludGVyIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24uIG9yIE5VTEwgb24gZmFpbHVyZSAoYmFkIGFyZ3VtZW50cykgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNjAgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI1OSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX3JlbW92ZV9yb3cgKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiByZW1vdmVzIGEgcm93IGZyb20gdGhlIGdpdmVuIHRhYmxlIGFuZCByZXR1cm5zIGl0IChubyBmcmVlJ3MgY2FsbGVkKSByZXR1cm5zIHRoZSByb3cgcG9pbnRlciBpdHNlbGYgb24gc3VjY2Vzc2Z1bCByZW1vdmluZy4gb3IgTlVMTCBvbiBmYWlsdXJlIChiYWQgYXJndW1lbnRzKSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI0MiBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjQxIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAidm9pZCBuZXRzbm1wX3RkYXRhX3JlcGxhY2Vfcm93IChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogb3JpZ3JvdywgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiBuZXdyb3cpIgogLlBQCiBzd2FwcyBvdXQgb3JpZ3JvdyB3aXRoIG5ld3Jvdy4gVGhpcyBkb2VzICpub3QqIGRlbGV0ZS9mcmVlIGFueXRoaW5nISAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIyNyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjI2IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAidm9pZCogbmV0c25tcF90ZGF0YV9yb3dfZW50cnkgKFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogcm93KSIKIC5QUAogcmV0dXJucyB0aGUgKHRhYmxlLXNwZWNpZmljKSBlbnRyeSBkYXRhIGZvciBhIGdpdmVuIHJvdyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQxNCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDIwIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAqIG5ldHNubXBfdGRhdGFfcm93X2ZpcnN0IChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUpIgogLlBQCiByZXR1cm5zIHRoZSBmaXJzdCByb3cgaW4gdGhlIHRhYmxlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDI0IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0MzAgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCogbmV0c25tcF90ZGF0YV9yb3dfZ2V0IChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogcm93KSIKIC5QUAogZmluZHMgYSByb3cgaW4gdGhlICd0ZGF0YScgdGFibGUgZ2l2ZW4gYW5vdGhlciByb3cgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0MzEgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQzNyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX3Jvd19nZXRfYnlpZHggKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogaW5kZXhlcykiCiAuUFAKIGZpbmRzIGEgcm93IGluIHRoZSAndGRhdGEnIHRhYmxlIGdpdmVuIHRoZSBpbmRleCB2YWx1ZXMgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0NDcgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ1MyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX3Jvd19nZXRfYnlvaWQgKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgb2lkICogc2VhcmNoZm9yLCBzaXplX3Qgc2VhcmNoZm9yX2xlbikiCiAuUFAKIGZpbmRzIGEgcm93IGluIHRoZSAndGRhdGEnIHRhYmxlIGdpdmVuIHRoZSBpbmRleCBPSUQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0NjAgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ2NiBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX3Jvd19uZXh0IChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogcm93KSIKIC5QUAogcmV0dXJucyB0aGUgbmV4dCByb3cgaW4gdGhlIHRhYmxlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDM5IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NDUgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCogbmV0c25tcF90ZGF0YV9yb3dfbmV4dF9ieWlkeCAoXGZCbmV0c25tcF90ZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiBpbmRleGVzKSIKIC5QUAogZmluZHMgdGhlIGxleGljYWxseSBuZXh0IHJvdyBpbiB0aGUgJ3RkYXRhJyB0YWJsZSBnaXZlbiB0aGUgaW5kZXggdmFsdWVzIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDc1IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0ODEgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCogbmV0c25tcF90ZGF0YV9yb3dfbmV4dF9ieW9pZCAoXGZCbmV0c25tcF90ZGF0YVxmUCAqIHRhYmxlLCBvaWQgKiBzZWFyY2hmb3IsIHNpemVfdCBzZWFyY2hmb3JfbGVuKSIKIC5QUAogZmluZHMgdGhlIGxleGljYWxseSBuZXh0IHJvdyBpbiB0aGUgJ3RkYXRhJyB0YWJsZSBnaXZlbiB0aGUgaW5kZXggT0lEIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDg5IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0OTUgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3Rvb2xzLmguMyBiL21hbi9uZXRzbm1wX3Rvb2xzLmguMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDBlZWMwCi0tLSAvZGV2L251bGwKKysrIGIvbWFuL25ldHNubXBfdG9vbHMuaC4zCkBAIC0wLDAgKzEsMjM5IEBACisuVEggInRvb2xzLmgiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLmFkIGwKKy5uaAorLlNIIE5BTUUKK3Rvb2xzLmggXC0gCisuU0ggU1lOT1BTSVMKKy5icgorLlBQCitcZkMjaW5jbHVkZSA8aW50dHlwZXMuaD5cZlAKKy5icgorCisuU1MgIkRlZmluZXMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX01BWFBBVEhcZlAgICBQQVRIX01BWCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFYQlVGXGZQICAgKDEwMjQgKiA0KSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFYQlVGX01FRElVTVxmUCAgIDEwMjQiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX01BWEJVRl9TTUFMTFxmUCAgIDUxMiIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFYQlVGX01FU1NBR0VcZlAgICAxNTAwIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NQVhPSURcZlAgICA2NCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFYX0NNRExJTkVfT0lEU1xmUCAgIDEyOCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfRklMRU1PREVfQ0xPU0VEXGZQICAgMDYwMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfRklMRU1PREVfT1BFTlxmUCAgIDA2NDQiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJCWVRFU0laRVxmUChiaXRzaXplKSAgICgoYml0c2l6ZSArIDcpID4+IDMpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCUk9VTkRVUDhcZlAoeCkgICAoICggKHgrNykgPj4gMyApICogOCApIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9TVFJPUk5VTExcZlAoeCkgICAoIHggPyB4IDogJyhudWxsKScpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9GUkVFXGZQKHMpICAgZG8geyBpZiAocykgeyBmcmVlKCh2b2lkICopcyk7IHM9TlVMTDsgfSB9IHdoaWxlKDApIgorLmJyCisuUkkgIlxmSUZyZWVzIGEgcG9pbnRlciBvbmx5IGlmIGl0IGlzICFOVUxMIGFuZCBzZXRzIGl0cyB2YWx1ZSB0byBOVUxMLiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9TV0lQRV9NRU1cZlAobiwgcykgICBkbyB7IGlmIChuKSBmcmVlKCh2b2lkICopbik7IG4gPSBzOyBzPU5VTEw7IH0gd2hpbGUoMCkiCisuYnIKKy5SSSAiXGZJRnJlZXMgcG9pbnRlciBuIG9ubHkgaWYgaXQgaXMgIU5VTEwsIHNldHMgbiB0byBzIGFuZCBzZXRzIHMgdG8gTlVMTC4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFMTE9DX1NUUlVDVFxmUChzKSAgIChzdHJ1Y3QgcyAqKSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzKSkiCisuYnIKKy5SSSAiXGZJTWFsbG9jcyBtZW1vcnkgb2Ygc2l6ZW9mKHN0cnVjdCBzKSwgemVyb3MgaXQgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGl0LiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NQUxMT0NfVFlQRURFRlxmUCh0ZCkgICAodGQgKikgY2FsbG9jKDEsIHNpemVvZih0ZCkpIgorLmJyCisuUkkgIlxmSU1hbGxvY3MgbWVtb3J5IG9mIHNpemVvZih0KSwgemVyb3MgaXQgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGl0LiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9aRVJPXGZQKHMsIGwpICAgZG8geyBpZiAocykgbWVtc2V0KHMsIDAsIGwpOyB9IHdoaWxlKDApIgorLmJyCisuUkkgIlxmSVplcm9zIGwgYnl0ZXMgb2YgbWVtb3J5IHN0YXJ0aW5nIGF0IHMuIFxmUCIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJORVRTTk1QX1JFTU9WRV9DT05TVFxmUCh0LCBlKSAgICgodCkodWludHB0cl90KShlKSkiCisuYnIKKy5SSSAiXGZJQ2FzdCBhd2F5IGNvbnN0bmVzcyB3aXRob3V0IHRoYXQgZ2NjIC1XY2FzdC1xdWFsIHByaW50cyBhIGNvbXBpbGVyIHdhcm5pbmcsIHNpbWlsYXIgdG8gY29uc3RfY2FzdDw+IGluIEMrKy4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlRPVVBQRVJcZlAoYykgICAoYyA+PSAnYScgJiYgYyA8PSAneicgPyBjIC0gKCdhJyAtICdBJykgOiBjKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlRPTE9XRVJcZlAoYykgICAoYyA+PSAnQScgJiYgYyA8PSAnWicgPyBjICsgKCdhJyAtICdBJykgOiBjKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhFWDJWQUxcZlAocykgICAoKGlzYWxwaGEocykgPyAoVE9MT1dFUihzKS0nYScrMTApIDogKFRPTE9XRVIocyktJzAnKSkgJiAweGYpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCVkFMMkhFWFxmUChzKSAgICggKHMpICsgKCgocykgPj0gMTApID8gKCdhJy0xMCkgOiAnMCcpICkiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX01BWFxmUChhLCBiKSAgICgoYSkgPiAoYikgPyAoYSkgOiAoYikpIgorLmJyCisuUkkgIlxmSUNvbXB1dGVycyB0aGUgbWF4aW11bSBvZiBhIGFuZCBiLiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NSU5cZlAoYSwgYikgICAoKGEpID4gKGIpID8gKGIpIDogKGEpKSIKKy5icgorLlJJICJcZklDb21wdXRlcnMgdGhlIG1pbmltdW0gb2YgYSBhbmQgYi4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFDUk9fVkFMX1RPX1NUUlxmUChzKSAgIFNOTVBfTUFDUk9fVkFMX1RPX1NUUl9QUklWKHMpIgorLmJyCisuUkkgIlxmSUV4cGFuZHMgdG8gc3RyaW5nIHdpdGggdmFsdWUgb2YgdGhlIHMuIFxmUCIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX01BQ1JPX1ZBTF9UT19TVFJfUFJJVlxmUChzKSAgICNzIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCUVVJVEZVTlxmUChlLCBsKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkRJRkZUSU1FVkFMXGZQKG5vdywgdGhlbiwgZGlmZikiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJVU01fTEVOR1RIX09JRF9UUkFOU0ZPUk1cZlAgICAxMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQklTVFJBTlNGT1JNXGZQKHR0eXBlLCB0b2lkKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkVOR0lORVRJTUVfTUFYXGZQICAgMjE0NzQ4MzY0NyIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkVOR0lORUJPT1RfTUFYXGZQICAgMjE0NzQ4MzY0NyIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQnNubXBfY3N0cmNhdFxmUChiLCBsLCBvLCBhLCBzKSAgIHNubXBfc3RyY2F0KGIsbCxvLGEsKGNvbnN0IHVfY2hhciAqKXMpIgorLmJyCisuaW4gLTFjCisuU1MgIlR5cGVkZWZzIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgInR5cGVkZWYgdm9pZCAqIFxmQm1hcmtlcl90XGZQIgorLmJyCisuaW4gLTFjCisuU1MgIkZ1bmN0aW9ucyIKKworLmluICsxYworLnRpIC0xYworLlJJICJpbnQgXGZCc25tcF9yZWFsbG9jXGZQICh1X2NoYXIgKipidWYsIHNpemVfdCAqYnVmX2xlbikiCisuYnIKKy5SSSAiXGZJVGhpcyBmdW5jdGlvbiBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgYXQgYnkgKmJ1Ziwgd2hpY2ggaXMgaW5pdGlhbGx5IG9mIHNpemUgKmJ1Zl9sZW4uIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJmcmVlX3plcm9cZlAgKHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpIgorLmJyCisuUkkgIlxmSXplcm9zIG1lbW9yeSBiZWZvcmUgZnJlZWluZyBpdC4gXGZQIgorLnRpIC0xYworLlJJICJ1X2NoYXIgKiBcZkJtYWxsb2NfcmFuZG9tXGZQIChzaXplX3QgKnNpemUpIgorLmJyCisuUkkgIlxmSVJldHVybnMgcG9pbnRlciB0byBhbGxvY2FlZCAmIHNldCBidWZmZXIgb24gc3VjY2Vzcywgc2l6ZSBjb250YWlucyBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIGZpbGxlZC4gXGZQIgorLnRpIC0xYworLlJJICJ1X2NoYXIgKiBcZkJtYWxsb2NfemVyb1xmUCAoc2l6ZV90IHNpemUpIgorLmJyCisudGkgLTFjCisuUkkgImludCBcZkJtZW1kdXBcZlAgKHVfY2hhciAqKnRvLCBjb25zdCB2b2lkICpmcm9tLCBzaXplX3Qgc2l6ZSkiCisuYnIKKy5SSSAiXGZJRHVwbGljYXRlcyBhIG1lbW9yeSBibG9jay4gXGZQIgorLnRpIC0xYworLlJJICJ1X2ludCBcZkJiaW5hcnlfdG9faGV4XGZQIChjb25zdCB1X2NoYXIgKmlucHV0LCBzaXplX3QgbGVuLCBjaGFyICoqb3V0cHV0KSIKKy5icgorLlJJICJcZkljb252ZXJ0cyBiaW5hcnkgdG8gaGV4aWRlY2ltYWwgXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9oZXhfdG9fYmluYXJ5XGZQICh1X2NoYXIgKipidWYsIHNpemVfdCAqYnVmX2xlbiwgc2l6ZV90ICpvZmZzZXQsIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBjaGFyICpoZXgsIGNvbnN0IGNoYXIgKmRlbGltKSIKKy5icgorLlJJICJcZkljb252ZXJ0IGFuIEFTQ0lJIGhleCBzdHJpbmcgKHdpdGggc3BlY2lmaWVkIGRlbGltaXRlcnMpIHRvIGJpbmFyeSBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJzbm1wX2hleF90b19iaW5hcnlcZlAgKHVfY2hhciAqKmJ1Ziwgc2l6ZV90ICpidWZfbGVuLCBzaXplX3QgKm9mZnNldCwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IGNoYXIgKmhleCkiCisuYnIKKy5SSSAiXGZJY29udmVydCBhbiBBU0NJSSBoZXggc3RyaW5nIHRvIGJpbmFyeSBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJoZXhfdG9fYmluYXJ5MlxmUCAoY29uc3QgdV9jaGFyICppbnB1dCwgc2l6ZV90IGxlbiwgY2hhciAqKm91dHB1dCkiCisuYnIKKy5SSSAiXGZJaGV4X3RvX2JpbmFyeTIgXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCc25tcF9kZWNpbWFsX3RvX2JpbmFyeVxmUCAodV9jaGFyICoqYnVmLCBzaXplX3QgKmJ1Zl9sZW4sIHNpemVfdCAqb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IGNoYXIgKmRlY2ltYWwpIgorLmJyCisudGkgLTFjCisuUkkgImludCBcZkJzbm1wX3N0cmNhdFxmUCAodV9jaGFyICoqYnVmLCBzaXplX3QgKmJ1Zl9sZW4sIHNpemVfdCAqb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IHVfY2hhciAqcykiCisuYnIKKy50aSAtMWMKKy5SSSAiY2hhciAqIFxmQm5ldHNubXBfc3RyZHVwX2FuZF9udWxsXGZQIChjb25zdCB1X2NoYXIgKmZyb20sIHNpemVfdCBmcm9tX2xlbikiCisuYnIKKy5SSSAiXGZJY29waWVzIGEgKHBvc3NpYmxlKSB1bnRlcm1pbmF0ZWQgc3RyaW5nIG9mIGEgZ2l2ZW4gbGVuZ3RoIGludG8gYSBuZXcgYnVmZmVyIGFuZCBudWxsIHRlcm1pbmF0ZXMgaXQgYXMgd2VsbCAobmV3IGJ1ZmZlciBNQVkgYmUgb25lIGJ5dGUgbG9uZ2VyIHRvIGFjY291bnQgZm9yIHRoaXMgXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQmR1bXBfY2h1bmtcZlAgKGNvbnN0IGNoYXIgKmRlYnVndG9rZW4sIGNvbnN0IGNoYXIgKnRpdGxlLCBjb25zdCB1X2NoYXIgKmJ1ZiwgaW50IHNpemUpIgorLmJyCisudGkgLTFjCisuUkkgImNoYXIgKiBcZkJkdW1wX3NubXBFbmdpbmVJRFxmUCAoY29uc3QgdV9jaGFyICpidWYsIHNpemVfdCAqYnVmbGVuKSIKKy5icgorLnRpIC0xYworLlJJICJtYXJrZXJfdCBcZkJhdGltZV9uZXdNYXJrZXJcZlAgKHZvaWQpIgorLmJyCisuUkkgIlxmSWNyZWF0ZSBhIG5ldyB0aW1lIG1hcmtlci4gXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQmF0aW1lX3NldE1hcmtlclxmUCAobWFya2VyX3QgcG0pIgorLmJyCisuUkkgIlxmSXNldCBhIHRpbWUgbWFya2VyLiBcZlAiCisudGkgLTFjCisuUkkgImxvbmcgXGZCYXRpbWVfZGlmZlxmUCAobWFya2VyX3QgZmlyc3QsIG1hcmtlcl90IHNlY29uZCkiCisuYnIKKy5SSSAiXGZJUmV0dXJucyB0aGUgZGlmZmVyZW5jZSAoaW4gbXNlYykgYmV0d2VlbiB0aGUgdHdvIG1hcmtlcnMuIFxmUCIKKy50aSAtMWMKKy5SSSAidV9sb25nIFxmQnVhdGltZV9kaWZmXGZQIChtYXJrZXJfdCBmaXJzdCwgbWFya2VyX3Qgc2Vjb25kKSIKKy5icgorLlJJICJcZklSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIChpbiB1X2xvbmcgbXNlYykgYmV0d2VlbiB0aGUgdHdvIG1hcmtlcnMuIFxmUCIKKy50aSAtMWMKKy5SSSAidV9sb25nIFxmQnVhdGltZV9oZGlmZlxmUCAobWFya2VyX3QgZmlyc3QsIG1hcmtlcl90IHNlY29uZCkiCisuYnIKKy5SSSAiXGZJUmV0dXJucyB0aGUgZGlmZmVyZW5jZSAoaW4gdV9sb25nIDEvMTAwdGggc2VjcykgYmV0d2VlbiB0aGUgdHdvIG1hcmtlcnMgKGZ1bmN0aW9uYWxseSB0aGlzIGlzIHdoYXQgc3lzVXBUaW1lIG5lZWRzKS4gXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCYXRpbWVfcmVhZHlcZlAgKG1hcmtlcl90IHBtLCBpbnQgZGVsdGFUKSIKKy5icgorLlJJICJcZklUZXN0OiBIYXMgKG1hcmtlZCB0aW1lIHBsdXMgZGVsdGEpIGV4Y2VlZGVkIGN1cnJlbnQgdGltZSAoaW4gbXNlYykgPyBSZXR1cm5zIDAgaWYgdGVzdCBmYWlscyBvciBjYW5ub3QgYmUgdGVzdGVkIChubyBtYXJrZXIpLiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJ1YXRpbWVfcmVhZHlcZlAgKG1hcmtlcl90IHBtLCB1bnNpZ25lZCBpbnQgZGVsdGFUKSIKKy5icgorLlJJICJcZklUZXN0OiBIYXMgKG1hcmtlZCB0aW1lIHBsdXMgZGVsdGEpIGV4Y2VlZGVkIGN1cnJlbnQgdGltZSAoaW4gbXNlYykgPyBSZXR1cm5zIDAgaWYgdGVzdCBmYWlscyBvciBjYW5ub3QgYmUgdGVzdGVkIChubyBtYXJrZXIpLiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJtYXJrZXJfdHRpY2tzXGZQIChtYXJrZXJfdCBwbSkiCisuYnIKKy5SSSAiXGZJUmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZVRpY2tzIHNpbmNlIHRoZSBnaXZlbiBtYXJrZXIuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQnRpbWV2YWxfdHRpY2tzXGZQIChzdHJ1Y3QgdGltZXZhbCAqdHYpIgorLmJyCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU1QT1JUIGNoYXIgKiBcZkJuZXRzbm1wX2dldGVudlxmUCAoY29uc3QgY2hhciAqbmFtZSkiCisuYnIKKy5SSSAiXGZJTm9uIFdpbmRvd3M6IFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZXNpcmVkIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQIG9yIE5VTEwgaWYgdGhlIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQIGRvZXMgbm90IGV4aXN0LiBcZlAiCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU1QT1JUIGludCBcZkJuZXRzbm1wX3NldGVudlxmUCAoY29uc3QgY2hhciAqZW52bmFtZSwgY29uc3QgY2hhciAqZW52dmFsLCBpbnQgb3ZlcndyaXRlKSIKKy5icgorLlJJICJcZklTZXQgYW4gZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfYWRkcnN0cl9odG9uXGZQIChjaGFyICpwdHIsIHNpemVfdCBsZW4pIgorLmJyCisuaW4gLTFjCisuU0ggIkRldGFpbGVkIERlc2NyaXB0aW9uIgorLlBQIAorCisuUFAKK0RlZmluaXRpb24gaW4gZmlsZSBcZkJ0b29scy5oXGZQLgorLlNIICJBdXRob3IiCisuUFAgCitHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3V0aWwuMyBiL21hbi9uZXRzbm1wX3V0aWwuMwppbmRleCBjMDQ2ZDkwLi5mNjcwNjNjIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF91dGlsLjMKKysrIGIvbWFuL25ldHNubXBfdXRpbC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJNZW1vcnkgVXRpbGl0eSBSb3V0aW5lcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJNZW1vcnkgVXRpbGl0eSBSb3V0aW5lcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNjMsNiArNjMsMTAgQEAKIC5icgogLlJJICJcZklaZXJvcyBsIGJ5dGVzIG9mIG1lbW9yeSBzdGFydGluZyBhdCBzLiBcZlAiCiAudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCTkVUU05NUF9SRU1PVkVfQ09OU1RcZlAodCwgZSkgICAoKHQpKHVpbnRwdHJfdCkoZSkpIgorLmJyCisuUkkgIlxmSUNhc3QgYXdheSBjb25zdG5lc3Mgd2l0aG91dCB0aGF0IGdjYyAtV2Nhc3QtcXVhbCBwcmludHMgYSBjb21waWxlciB3YXJuaW5nLCBzaW1pbGFyIHRvIGNvbnN0X2Nhc3Q8PiBpbiBDKysuIFxmUCIKKy50aSAtMWMKIC5SSSAiI2RlZmluZSBcZkJUT1VQUEVSXGZQKGMpICAgKGMgPj0gJ2EnICYmIGMgPD0gJ3onID8gYyAtICgnYScgLSAnQScpIDogYykiCiAuYnIKIC50aSAtMWMKQEAgLTEzNyw3ICsxNDEsNyBAQAogLlJJICJ1X2NoYXIgKiBcZkJtYWxsb2NfemVyb1xmUCAoc2l6ZV90IHNpemUpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJtZW1kdXBcZlAgKHVfY2hhciAqKnRvLCBjb25zdCB1X2NoYXIgKmZyb20sIHNpemVfdCBzaXplKSIKKy5SSSAiaW50IFxmQm1lbWR1cFxmUCAodV9jaGFyICoqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHNpemVfdCBzaXplKSIKIC5icgogLlJJICJcZklEdXBsaWNhdGVzIGEgbWVtb3J5IGJsb2NrLiBcZlAiCiAudGkgLTFjCkBAIC0yMDgsMTAgKzIxMiwxNCBAQAogLlJJICJpbnQgXGZCdGltZXZhbF90dGlja3NcZlAgKHN0cnVjdCB0aW1ldmFsICp0dikiCiAuYnIKIC50aSAtMWMKLS5SSSAiY2hhciAqIFxmQm5ldHNubXBfZ2V0ZW52XGZQIChjb25zdCBjaGFyICpuYW1lKSIKKy5SSSAiTkVUU05NUF9JTVBPUlQgY2hhciAqIFxmQm5ldHNubXBfZ2V0ZW52XGZQIChjb25zdCBjaGFyICpuYW1lKSIKIC5icgogLlJJICJcZklOb24gV2luZG93czogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGRlc2lyZWQgZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAgb3IgTlVMTCBpZiB0aGUgZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAgZG9lcyBub3QgZXhpc3QuIFxmUCIKIC50aSAtMWMKKy5SSSAiTkVUU05NUF9JTVBPUlQgaW50IFxmQm5ldHNubXBfc2V0ZW52XGZQIChjb25zdCBjaGFyICplbnZuYW1lLCBjb25zdCBjaGFyICplbnZ2YWwsIGludCBvdmVyd3JpdGUpIgorLmJyCisuUkkgIlxmSVNldCBhbiBlbnZpcm9ubWVudCBcZkJ2YXJpYWJsZVxmUC4gXGZQIgorLnRpIC0xYwogLlJJICJpbnQgXGZCbmV0c25tcF9hZGRyc3RyX2h0b25cZlAgKGNoYXIgKnB0ciwgc2l6ZV90IGxlbikiCiAuYnIKIC5pbiAtMWMKQEAgLTIyMCw3ICsyMjgsNyBAQAogLlNTICIjZGVmaW5lIERJRkZUSU1FVkFMKG5vdywgdGhlbiwgZGlmZikiXGZCVmFsdWU6XGZQCiAuUFAKIC5uZgoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIG5vdy50dl9zZWMtLTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgbm93LnR2X3VzZWMgKz0gMTAwMDAwMEw7ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBkaWZmLnR2X3NlYyAgPSBub3cudHZfc2VjICAtIHRoZW4udHZfc2VjOyAgICAgICBcCkBAIC0yMzIsNyArMjQwLDcgQEAKIH0KIC5maQogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTMxIG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxNTIgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIElTVFJBTlNGT1JNKHR0eXBlLCB0b2lkKSJcZkJWYWx1ZTpcZlAKIC5QUAogLm5mCkBAIC0yNDAsNzkgKzI0OCw5MSBAQAogICAgICAgICAgICAgICAgIHVzbSAjIyB0b2lkICMjIFByb3RvY29sLCBVU01fTEVOR1RIX09JRF9UUkFOU0ZPUk0pCiAuZmkKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1MCBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTcxIG9mIGZpbGUgdG9vbHMuaC4KKy5TUyAiI2RlZmluZSBORVRTTk1QX1JFTU9WRV9DT05TVCh0LCBlKSAgICgodCkodWludHB0cl90KShlKSkiCisuUFAKK0Nhc3QgYXdheSBjb25zdG5lc3Mgd2l0aG91dCB0aGF0IGdjYyAtV2Nhc3QtcXVhbCBwcmludHMgYSBjb21waWxlciB3YXJuaW5nLCBzaW1pbGFyIHRvIGNvbnN0X2Nhc3Q8PiBpbiBDKysuIFxmQlBhcmFtZXRlcnM6XGZQCisuUlMgNAorXGZJdFxmUCBBIHBvaW50ZXIgdHlwZS4gCisuYnIKK1xmSWVcZlAgQW4gZXhwcmVzc2lvbiBvZiBhIHR5cGUgdGhhdCBjYW4gYmUgYXNzaWduZWQgdG8gdGhlIHR5cGUgKGNvbnN0IHQpLiAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDkyIG9mIGZpbGUgdG9vbHMuaC4KIC5TUyAiI2RlZmluZSBRVUlURlVOKGUsIGwpIlxmQlZhbHVlOlxmUAogLlBQCiAubmYKLWlmICggKGUpICE9IFNOTVBFUlJfU1VDQ0VTUykgeyAgIFwKK2lmICggKGUpICE9IFNOTVBFUlJfU1VDQ0VTUykgeyAgICAgXAogICAgICAgICAgICAgICAgIHJ2YWwgPSBTTk1QRVJSX0dFTkVSUjsgIFwKICAgICAgICAgICAgICAgICBnb3RvIGwgOyAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0KIC5maQogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTE4IG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxMzkgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfRlJFRShzKSAgIGRvIHsgaWYgKHMpIHsgZnJlZSgodm9pZCAqKXMpOyBzPU5VTEw7IH0gfSB3aGlsZSgwKSIKIC5QUAogRnJlZXMgYSBwb2ludGVyIG9ubHkgaWYgaXQgaXMgIU5VTEwgYW5kIHNldHMgaXRzIHZhbHVlIHRvIE5VTEwuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTMgb2YgZmlsZSB0b29scy5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDU3IG9mIGZpbGUgdG9vbHMuaC4KIC5TUyAiI2RlZmluZSBTTk1QX01BQ1JPX1ZBTF9UT19TVFIocykgICBTTk1QX01BQ1JPX1ZBTF9UT19TVFJfUFJJVihzKSIKIC5QUAotRXhwYW5kcyB0byBzdHJpbmcgd2l0aCB2YWx1ZSBvZiB0aGUgcy4gSWYgcyBpcyBtYWNybywgdGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgdmFsdWUgb2YgdGhlIG1hY3JvLiBFeGFtcGxlOiBkZWZpbmUgVEVTVCAxMjM0IFxmQlNOTVBfTUFDUk9fVkFMX1RPX1NUUihURVNUKVxmUCBleHBhbmRzIHRvICcxMjM0JyBTTk1QX01BQ1JPX1ZBTF9UT19TVFIoVEVTVCsxKSBleHBhbmRzIHRvICcxMjM0KzEnIAorRXhwYW5kcyB0byBzdHJpbmcgd2l0aCB2YWx1ZSBvZiB0aGUgcy4gSWYgcyBpcyBtYWNybywgdGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgdmFsdWUgb2YgdGhlIG1hY3JvLiBFeGFtcGxlOiAjZGVmaW5lIFRFU1QgMTIzNCBcZkJTTk1QX01BQ1JPX1ZBTF9UT19TVFIoVEVTVClcZlAgZXhwYW5kcyB0byAnMTIzNCcgU05NUF9NQUNST19WQUxfVE9fU1RSKFRFU1QrMSkgZXhwYW5kcyB0byAnMTIzNCsxJyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk5IG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxMjAgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfTUFMTE9DX1NUUlVDVChzKSAgIChzdHJ1Y3QgcyAqKSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzKSkiCiAuUFAKIE1hbGxvY3MgbWVtb3J5IG9mIHNpemVvZihzdHJ1Y3QgcyksIHplcm9zIGl0IGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBpdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2NCBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgNjggb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfTUFMTE9DX1RZUEVERUYodGQpICAgKHRkICopIGNhbGxvYygxLCBzaXplb2YodGQpKSIKIC5QUAogTWFsbG9jcyBtZW1vcnkgb2Ygc2l6ZW9mKHQpLCB6ZXJvcyBpdCBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gaXQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjggb2YgZmlsZSB0b29scy5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDcyIG9mIGZpbGUgdG9vbHMuaC4KIC5TUyAiI2RlZmluZSBTTk1QX01BWChhLCBiKSAgICgoYSkgPiAoYikgPyAoYSkgOiAoYikpIgogLlBQCiBDb21wdXRlcnMgdGhlIG1heGltdW0gb2YgYSBhbmQgYi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NSBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTA2IG9mIGZpbGUgdG9vbHMuaC4KIC5TUyAiI2RlZmluZSBTTk1QX01JTihhLCBiKSAgICgoYSkgPiAoYikgPyAoYikgOiAoYSkpIgogLlBQCiBDb21wdXRlcnMgdGhlIG1pbmltdW0gb2YgYSBhbmQgYi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4OSBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTEwIG9mIGZpbGUgdG9vbHMuaC4KIC5TUyAiI2RlZmluZSBTTk1QX1NXSVBFX01FTShuLCBzKSAgIGRvIHsgaWYgKG4pIGZyZWUoKHZvaWQgKiluKTsgbiA9IHM7IHM9TlVMTDsgfSB3aGlsZSgwKSIKIC5QUAogRnJlZXMgcG9pbnRlciBuIG9ubHkgaWYgaXQgaXMgIU5VTEwsIHNldHMgbiB0byBzIGFuZCBzZXRzIHMgdG8gTlVMTC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1NyBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgNjEgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfWkVSTyhzLCBsKSAgIGRvIHsgaWYgKHMpIG1lbXNldChzLCAwLCBsKTsgfSB3aGlsZSgwKSIKIC5QUAogWmVyb3MgbCBieXRlcyBvZiBtZW1vcnkgc3RhcnRpbmcgYXQgcy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3MiBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgNzYgb2YgZmlsZSB0b29scy5oLgogLlNIICJGdW5jdGlvbiBEb2N1bWVudGF0aW9uIgogLlBQIAogLlNTICJsb25nIGF0aW1lX2RpZmYgKG1hcmtlcl90IGZpcnN0LCBtYXJrZXJfdCBzZWNvbmQpIgogLlBQCiBSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIChpbiBtc2VjKSBiZXR3ZWVuIHRoZSB0d28gbWFya2Vycy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3OTggb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgwMyBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgIm1hcmtlcl90IGF0aW1lX25ld01hcmtlciAodm9pZCkiCiAuUFAKIGNyZWF0ZSBhIG5ldyB0aW1lIG1hcmtlci4gTk9URTogQ2FsbGVyIG11c3QgZnJlZSB0aW1lIG1hcmtlciB3aGVuIG5vIGxvbmdlciBuZWVkZWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzc0IG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3Nzkgb2YgZmlsZSB0b29scy5jLgogLlNTICJpbnQgYXRpbWVfcmVhZHkgKG1hcmtlcl90IHBtLCBpbnQgZGVsdGFUKSIKIC5QUAogVGVzdDogSGFzIChtYXJrZWQgdGltZSBwbHVzIGRlbHRhKSBleGNlZWRlZCBjdXJyZW50IHRpbWUgKGluIG1zZWMpID8gUmV0dXJucyAwIGlmIHRlc3QgZmFpbHMgb3IgY2Fubm90IGJlIHRlc3RlZCAobm8gbWFya2VyKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NTMgb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg1OCBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgInZvaWQgYXRpbWVfc2V0TWFya2VyIChtYXJrZXJfdCBwbSkiCiAuUFAKIHNldCBhIHRpbWUgbWFya2VyLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc4NSBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzkwIG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAidV9pbnQgYmluYXJ5X3RvX2hleCAoY29uc3QgdV9jaGFyICogaW5wdXQsIHNpemVfdCBsZW4sIGNoYXIgKiogb3V0cHV0KSIKIC5QUAogY29udmVydHMgYmluYXJ5IHRvIGhleGlkZWNpbWFsIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0zMzEsNyArMzUxLDcgQEAKIC5QUAogRklYIElzIHRoZXJlIGFscmVhZHkgb25lIG9mIHRoZXNlIGluIHRoZSBVQ0QgU05NUCBjb2RlYmFzZT8gVGhlIG9sZCBvbmUgc2hvdWxkIGJlIHVzZWQsIG9yIHRoaXMgb25lIHNob3VsZCBiZSBtb3ZlZCB0byBcZkJzbm1wbGliL3NubXBfYXBpLmNcZlAuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjkwIG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyOTkgb2YgZmlsZSB0b29scy5jLgogLlNTICJ2b2lkIGZyZWVfemVybyAodm9pZCAqIGJ1Ziwgc2l6ZV90IHNpemUpIgogLlBQCiB6ZXJvcyBtZW1vcnkgYmVmb3JlIGZyZWVpbmcgaXQuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0zNDMsNyArMzYzLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxODggb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5NyBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgImludCBoZXhfdG9fYmluYXJ5MiAoY29uc3QgdV9jaGFyICogaW5wdXQsIHNpemVfdCBsZW4sIGNoYXIgKiogb3V0cHV0KSIKIC5QUAogaGV4X3RvX2JpbmFyeTIgXGZCUGFyYW1ldGVyczpcZlAKQEAgLTM2NCw3ICszODQsNyBAQAogLlBQCiBGSVggQW5vdGhlciB2ZXJzaW9uIG9mICdoZXgtdG8tYmluYXJ5JyB3aGljaCB0YWtlcyBvZGQgbGVuZ3RoIGlucHV0IHN0cmluZ3MuIEl0IGFsc28gYWxsb2NhdGVzIHRoZSBtZW1vcnkgdG8gaG9sZCB0aGUgYmluYXJ5IGRhdGEuIFNob3VsZCBiZSBpbnRlZ3JhdGVkIHdpdGggdGhlIG9mZmljaWFsIGhleF90b19iaW5hcnkoKSBmdW5jdGlvbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMjcgb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzNiBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgInVfY2hhciogbWFsbG9jX3JhbmRvbSAoc2l6ZV90ICogc2l6ZSkiCiAuUFAKIFJldHVybnMgcG9pbnRlciB0byBhbGxvY2FlZCAmIHNldCBidWZmZXIgb24gc3VjY2Vzcywgc2l6ZSBjb250YWlucyBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIGZpbGxlZC4gYnVmIGlzIE5VTEwgYW5kICpzaXplIHNldCB0byBLTVQgZXJyb3IgdmFsdWUgdXBvbiBmYWlsdXJlLgpAQCAtMzgxLDEyICs0MDEsMTIgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMDggb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIxNyBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgImludCBtYXJrZXJfdHRpY2tzIChtYXJrZXJfdCBwbSkiCiAuUFAKIFJldHVybiB0aGUgbnVtYmVyIG9mIHRpbWVUaWNrcyBzaW5jZSB0aGUgZ2l2ZW4gbWFya2VyLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDkwMSBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgOTA2IG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAidm9pZCAqIG5ldHNubXBfbWVtZHVwIChjb25zdCB2b2lkICogZnJvbSwgc2l6ZV90IHNpemUpIgogLlBQCiBEdXBsaWNhdGVzIGEgbWVtb3J5IGJsb2NrLiBDb3BpZXMgYSBleGlzdGluZyBtZW1vcnkgbG9jYXRpb24gZnJvbSBhIHBvaW50ZXIgdG8gYW5vdGhlciwgbmV3bHkgbWFsbG9jZWQsIHBvaW50ZXIuCkBAIC00MDcsMTIgKzQyNywxMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIzOSBvZiBmaWxlIHRvb2xzLmMuCi0uU1MgImNoYXIqIG5ldHNubXBfZ2V0ZW52IChjb25zdCBjaGFyICogbmFtZSkiCitEZWZpbml0aW9uIGF0IGxpbmUgMjQ4IG9mIGZpbGUgdG9vbHMuYy4KKy5TUyAiTkVUU05NUF9JTVBPUlQgY2hhciogbmV0c25tcF9nZXRlbnYgKGNvbnN0IGNoYXIgKiBuYW1lKSIKIC5QUAogTm9uIFdpbmRvd3M6IFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZXNpcmVkIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQIG9yIE5VTEwgaWYgdGhlIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQIGRvZXMgbm90IGV4aXN0LiBXaW5kb3dzOiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZGVzaXJlZCBlbnZpcm9ubWVudCBcZkJ2YXJpYWJsZVxmUCBpZiBpdCBleGlzdHMuIElmIGl0IGRvZXMgbm90LCB0aGUgXGZCdmFyaWFibGVcZlAgaXMgbG9va2VkIHVwIGluIHRoZSByZWdpc3RyeSBpbiBIS0NVXFxOZXQtU05NUCBvciBIS0xNXFxOZXQtU05NUCAod2hpY2hldmVyIGl0IGZpbmRzIGZpcnN0KSBhbmQgc3RvcmVzIHRoZSByZXN1bHQgaW4gdGhlIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQLiBJdCB0aGVuIHJldHVybnMgYSBwb2ludGVyIHRvIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDkyOSBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgOTM0IG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAiaW50IG5ldHNubXBfaGV4X3RvX2JpbmFyeSAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb2Zmc2V0LCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgY2hhciAqIGhleCwgY29uc3QgY2hhciAqIGRlbGltKSIKIC5QUAogY29udmVydCBhbiBBU0NJSSBoZXggc3RyaW5nICh3aXRoIHNwZWNpZmllZCBkZWxpbWl0ZXJzKSB0byBiaW5hcnkgXGZCUGFyYW1ldGVyczpcZlAKQEAgLTQzOSwxMiArNDU5LDE3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDI4IG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0Mzcgb2YgZmlsZSB0b29scy5jLgorLlNTICJORVRTTk1QX0lNUE9SVCBpbnQgbmV0c25tcF9zZXRlbnYgKGNvbnN0IGNoYXIgKiBlbnZuYW1lLCBjb25zdCBjaGFyICogZW52dmFsLCBpbnQgb3ZlcndyaXRlKSIKKy5QUAorU2V0IGFuIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgbmVjZXNzYXJ5IG9uIFdpbmRvd3MgZm9yIHRoZSBNU1ZDIGFuZCBNaW5HVyBlbnZpcm9ubWVudHMuIElmIHRoZSBwcm9jZXNzIHRoYXQgdXNlcyB0aGUgTmV0LVNOTVAgRExMIChlLmcuIGEgUGVybCBpbnRlcnByZXRlcikgYW5kIHRoZSBOZXQtU05NUCBoYXZlIGJlZW4gYnVpbHQgd2l0aCBhIGRpZmZlcmVudCBjb21waWxlciB2ZXJzaW9uIHRoZW4gZWFjaCB3aWxsIGhhdmUgYSBzZXBhcmF0ZSBzZXQgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byBzZXQgYW4gZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAgc3VjaCB0aGF0IGl0IGdldHMgbm90aWNlZCBieSB0aGUgTmV0LVNOTVAgRExMLiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDEwNjcgb2YgZmlsZSB0b29scy5jLgogLlNTICJjaGFyKiBuZXRzbm1wX3N0cmR1cF9hbmRfbnVsbCAoY29uc3QgdV9jaGFyICogZnJvbSwgc2l6ZV90IGZyb21fbGVuKSIKIC5QUAogY29waWVzIGEgKHBvc3NpYmxlKSB1bnRlcm1pbmF0ZWQgc3RyaW5nIG9mIGEgZ2l2ZW4gbGVuZ3RoIGludG8gYSBuZXcgYnVmZmVyIGFuZCBudWxsIHRlcm1pbmF0ZXMgaXQgYXMgd2VsbCAobmV3IGJ1ZmZlciBNQVkgYmUgb25lIGJ5dGUgbG9uZ2VyIHRvIGFjY291bnQgZm9yIHRoaXMgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNTggb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI2NyBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgImludCBzbm1wX2hleF90b19iaW5hcnkgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG9mZnNldCwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IGNoYXIgKiBoZXgpIgogLlBQCiBjb252ZXJ0IGFuIEFTQ0lJIGhleCBzdHJpbmcgdG8gYmluYXJ5IFxmQk5vdGU6XGZQCkBAIC00NjMsNyArNDg4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0ODggb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ5NyBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgImludCBzbm1wX3JlYWxsb2MgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4pIgogLlBQCiBUaGlzIGZ1bmN0aW9uIGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcG9pbnRlZCBhdCBieSAqYnVmLCB3aGljaCBpcyBpbml0aWFsbHkgb2Ygc2l6ZSAqYnVmX2xlbi4gQ29udGVudHMgYXJlIHByZXNlcnZlZCAqKkFUIFRIRSBCT1RUT00gRU5EIE9GIFRIRSBCVUZGRVIqKi4gSWYgbWVtb3J5IGNhbiBiZSAocmUtKWFsbG9jYXRlZCB0aGVuIGl0IHJldHVybnMgMSwgZWxzZSBpdCByZXR1cm5zIDAuCkBAIC00ODIsMjIgKzUwNywyMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEyNCBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTMzIG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAidV9sb25nIHVhdGltZV9kaWZmIChtYXJrZXJfdCBmaXJzdCwgbWFya2VyX3Qgc2Vjb25kKSIKIC5QUAogUmV0dXJucyB0aGUgZGlmZmVyZW5jZSAoaW4gdV9sb25nIG1zZWMpIGJldHdlZW4gdGhlIHR3byBtYXJrZXJzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDgxNSBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODIwIG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAidV9sb25nIHVhdGltZV9oZGlmZiAobWFya2VyX3QgZmlyc3QsIG1hcmtlcl90IHNlY29uZCkiCiAuUFAKIFJldHVybnMgdGhlIGRpZmZlcmVuY2UgKGluIHVfbG9uZyAxLzEwMHRoIHNlY3MpIGJldHdlZW4gdGhlIHR3byBtYXJrZXJzIChmdW5jdGlvbmFsbHkgdGhpcyBpcyB3aGF0IHN5c1VwVGltZSBuZWVkcykuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODMzIG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4Mzggb2YgZmlsZSB0b29scy5jLgogLlNTICJpbnQgdWF0aW1lX3JlYWR5IChtYXJrZXJfdCBwbSwgdW5zaWduZWQgaW50IGRlbHRhVCkiCiAuUFAKIFRlc3Q6IEhhcyAobWFya2VkIHRpbWUgcGx1cyBkZWx0YSkgZXhjZWVkZWQgY3VycmVudCB0aW1lIChpbiBtc2VjKSA/IFJldHVybnMgMCBpZiB0ZXN0IGZhaWxzIG9yIGNhbm5vdCBiZSB0ZXN0ZWQgKG5vIG1hcmtlcikuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODc1IG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4ODAgb2YgZmlsZSB0b29scy5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3V0aWxpdGllcy4zIGIvbWFuL25ldHNubXBfdXRpbGl0aWVzLjMKaW5kZXggOTZiZjUzMy4uZGExMDY5NiAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdXRpbGl0aWVzLjMKKysrIGIvbWFuL25ldHNubXBfdXRpbGl0aWVzLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInV0aWxpdHlfaGFuZGxlcnMiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidXRpbGl0eV9oYW5kbGVycyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zIGIvbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zCmluZGV4IDE4OTdjNWUuLjFhNTg0MWIgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMworKysgYi9tYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMKQEAgLTEsNCArMSw0IEBACi0uVEggInZhcmlhYmxlX2xpc3QiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidmFyaWFibGVfbGlzdCIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTAsNyArMTAsNyBAQAogLmJyCiAuUFAKIC5QUAotXGZDI2luY2x1ZGUgPHNubXBfYXBpLmg+XGZQCitcZkMjaW5jbHVkZSA8dHlwZXMuaD5cZlAKIC5TUyAiRGF0YSBGaWVsZHMiCiAKIC5pbiArMWMKQEAgLTY3LDE5ICs2NywxOSBAQAogLlBQCiBcZkJub3RpZmljYXRpb24uY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUyOSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTM5IG9mIGZpbGUgdHlwZXMuaC4KIC5TSCAiRmllbGQgRG9jdW1lbnRhdGlvbiIKIC5QUCAKIC5TUyAidV9jaGFyIFxmQnZhcmlhYmxlX2xpc3Q6OmJ1ZlxmUFs0MF0iCiAuUFAKIDkwIHBlcmNlbnRpbGUgPCA0MC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1NDUgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE1NSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInZvaWQqIFxmQnZhcmlhYmxlX2xpc3Q6OmRhdGFcZlAiCiAuUFAKIChPcGFxdWUpIGhvb2sgZm9yIGFkZGl0aW9uYWwgZGF0YSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0NyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTU3IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidm9pZCgqIFxmQnZhcmlhYmxlX2xpc3Q6OmRhdGFGcmVlSG9va1xmUCkodm9pZCAqKSIKIC5QUAogY2FsbGJhY2sgdG8gZnJlZSBhYm92ZSAKQEAgLTg3LDIyICs4NywyMiBAQAogLlBQCiBPYmplY3QgaWRlbnRpZmllciBvZiBcZkJ2YXJpYWJsZVxmUC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1MzMgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE0MyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJ2YXJpYWJsZV9saXN0OjpuYW1lX2xlbmd0aFxmUCIKIC5QUAogbnVtYmVyIG9mIHN1YmlkJ3MgaW4gbmFtZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUzNSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTQ1IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAib2lkIFxmQnZhcmlhYmxlX2xpc3Q6Om5hbWVfbG9jXGZQW01BWF9PSURfTEVOXSIKIC5QUAogYnVmZmVyIHRvIGhvbGQgdGhlIE9JRCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0MyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTUzIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic3RydWN0IFxmQnZhcmlhYmxlX2xpc3RcZlAqIFxmQnZhcmlhYmxlX2xpc3Q6Om5leHRfdmFyaWFibGVcZlBcZkMgW3JlYWRdXGZQIgogLlBQCiBOVUxMIGZvciBsYXN0IFxmQnZhcmlhYmxlXGZQLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUzMSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTQxIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyIFxmQnZhcmlhYmxlX2xpc3Q6OnR5cGVcZlAiCiAuUFAKIEFTTiB0eXBlIG9mIFxmQnZhcmlhYmxlXGZQLiAKQEAgLTExMSw3ICsxMTEsNyBAQAogLmluICsxYwogXGZCZGVsYXllZF9pbnN0YW5jZS5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTM3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxNDcgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJcZkJuZXRzbm1wX3ZhcmRhdGFcZlAgXGZCdmFyaWFibGVfbGlzdDo6dmFsXGZQIgogLlBQCiB2YWx1ZSBvZiBcZkJ2YXJpYWJsZVxmUCAKQEAgLTEyMCwxMiArMTIwLDEyIEBACiAuaW4gKzFjCiBcZkJkZWxheWVkX2luc3RhbmNlLmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1Mzkgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE0OSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJ2YXJpYWJsZV9saXN0Ojp2YWxfbGVuXGZQIgogLlBQCiB0aGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSB0byBiZSBjb3BpZWQgaW50byBidWYgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1NDEgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE1MSBvZiBmaWxlIHR5cGVzLmguCiAKIC5TSCAiQXV0aG9yIgogLlBQIApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfd2F0Y2hlci4zIGIvbWFuL25ldHNubXBfd2F0Y2hlci4zCmluZGV4IDU1OGY0ZjYuLmRlNTMxNGUgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3dhdGNoZXIuMworKysgYi9tYW4vbmV0c25tcF93YXRjaGVyLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIndhdGNoZXIiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAid2F0Y2hlciIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTMsNiArMTMsMTUgQEAKIC5SSSAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIFxmQm5ldHNubXBfZ2V0X3dhdGNoZXJfaGFuZGxlclxmUCAodm9pZCkiCiAuYnIKIC50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF93YXRjaGVyX2luZm9cZlAgKiBcZkJuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvNlxmUCAoXGZCbmV0c25tcF93YXRjaGVyX2luZm9cZlAgKndpbmZvLCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgdV9jaGFyIHR5cGUsIGludCBmbGFncywgc2l6ZV90IG1heF9zaXplLCBzaXplX3QgKnNpemVfcCkiCisuYnIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF93YXRjaGVyX2luZm9cZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm82XGZQICh2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgdV9jaGFyIHR5cGUsIGludCBmbGFncywgc2l6ZV90IG1heF9zaXplLCBzaXplX3QgKnNpemVfcCkiCisuYnIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF93YXRjaGVyX2luZm9cZlAgKiBcZkJuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvXGZQIChcZkJuZXRzbm1wX3dhdGNoZXJfaW5mb1xmUCAqd2luZm8sIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwgaW50IGZsYWdzKSIKKy5icgorLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX3dhdGNoZXJfaW5mb1xmUCAqIFxmQm5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mb1xmUCAodm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHVfY2hhciB0eXBlLCBpbnQgZmxhZ3MpIgogLmJyCiAudGkgLTFjCkBAIC00NiwzMCArNTUsMTA4IEBACiAuUkkgImludCBcZkJuZXRzbm1wX3dhdGNoZWRfc3BpbmxvY2tfaGFuZGxlclxmUCAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0cykiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9sb25nX3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGxvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2ludF9zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2ludF9zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5icgorLmluIC0xYyAKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJORVRTTk1QX1dBVENIRVJfRElSRUNUXGZQICAgTUlCX0hBTkRMRVJfQ1VTVE9NMSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQldBVENIRVJfRklYRURfU0laRVxmUCIKKy5icgorLlJJICJcZklUaGUgc2l6ZSBvZiB0aGUgd2F0Y2hlZCBvYmplY3QgaXMgY29uc3RhbnQuIFxmUCIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJXQVRDSEVSX01BWF9TSVpFXGZQIgorLmJyCisuUkkgIlxmSVRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHdhdGNoZWQgb2JqZWN0IGlzIHN0b3JlZCBpbiBtYXhfc2l6ZS4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQldBVENIRVJfU0laRV9JU19QVFJcZlAiCisuYnIKKy5SSSAiXGZJSWYgc2V0IHRoZW4gdGhlIFxmQnZhcmlhYmxlXGZQIGRhdGFfc2l6ZV9wIHBvaW50cyB0byBpcyBzdXBwb3NlZCB0byBob2xkIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHdhdGNoZWQgb2JqZWN0IGFuZCB3aWxsIGJlIHVwZGF0ZWQgb24gd3JpdGVzLiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCV0FUQ0hFUl9TSVpFX1NUUkxFTlxmUCIKKy5icgorLlJJICJcZklJZiBzZXQgdGhlbiBkYXRhIGlzIHN1cHBwb3NlZCB0byBiZSBhIHplcm8tdGVybWluYXRlZCBjaGFyYWN0ZXIgYXJyYXkgYW5kIGJvdGggZGF0YV9zaXplIGFuZCBkYXRhX3NpemVfcCBhcmUgaWdub3JlZC4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQldBVENIRVJfU0laRV9VTklUX09JRFNcZlAiCisuYnIKKy5SSSAiXGZJSWYgc2V0IHRoZW4gc2l6ZSBpcyBpbiB1bml0cyBvZiBvYmplY3QgaWRlbnRpZmllcnMuIFxmUCIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBzdHJ1Y3QgXGZCbmV0c25tcF93YXRjaGVyX2luZm9fc1xmUCBcZkJuZXRzbm1wX3dhdGNoZXJfaW5mb1xmUCIKIC5icgogLmluIC0xYwogLlNIICJEZXRhaWxlZCBEZXNjcmlwdGlvbiIKIC5QUCAKIFdhdGNoIGEgc3BlY2lmaWVkIFxmQnZhcmlhYmxlXGZQIGFuZCBwcm9jZXNzIGl0IGFzIGFuIGluc3RhbmNlIG9yIHNjYWxhciBvYmplY3QuIAorLlNIICJEZWZpbmUgRG9jdW1lbnRhdGlvbiIKKy5QUCAKKy5TUyAiI2RlZmluZSBXQVRDSEVSX0ZJWEVEX1NJWkUiCisuUFAKK1RoZSBzaXplIG9mIHRoZSB3YXRjaGVkIG9iamVjdCBpcyBjb25zdGFudC4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAyNiBvZiBmaWxlIHdhdGNoZXIuaC4KKy5TUyAiI2RlZmluZSBXQVRDSEVSX01BWF9TSVpFIgorLlBQCitUaGUgbWF4aW11bSBzaXplIG9mIHRoZSB3YXRjaGVkIG9iamVjdCBpcyBzdG9yZWQgaW4gbWF4X3NpemUuIElmIFdBVENIRVJfU0laRV9TVFJMRU4gaXMgc2V0IHRoZW4gaXQgaXMgc3VwcG9zZWQgdGhhdCBtYXhfc2l6ZSArIDEgYnl0ZXMgY291bGQgYmUgc3RvcmVkIGluIHRoZSBidWZmZXIuIAorLlBQCitcZkJFeGFtcGxlczogXGZQCisuaW4gKzFjCitcZkJ3YXRjaGVkLmNcZlAuCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAzMiBvZiBmaWxlIHdhdGNoZXIuaC4KKy5TUyAiI2RlZmluZSBXQVRDSEVSX1NJWkVfSVNfUFRSIgorLlBQCitJZiBzZXQgdGhlbiB0aGUgXGZCdmFyaWFibGVcZlAgZGF0YV9zaXplX3AgcG9pbnRzIHRvIGlzIHN1cHBvc2VkIHRvIGhvbGQgdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgd2F0Y2hlZCBvYmplY3QgYW5kIHdpbGwgYmUgdXBkYXRlZCBvbiB3cml0ZXMuIFxmQlNpbmNlOlxmUAorLlJTIDQKK05ldC1TTk1QIDUuNSAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDM4IG9mIGZpbGUgd2F0Y2hlci5oLgorLlNTICIjZGVmaW5lIFdBVENIRVJfU0laRV9TVFJMRU4iCisuUFAKK0lmIHNldCB0aGVuIGRhdGEgaXMgc3VwcHBvc2VkIHRvIGJlIGEgemVyby10ZXJtaW5hdGVkIGNoYXJhY3RlciBhcnJheSBhbmQgYm90aCBkYXRhX3NpemUgYW5kIGRhdGFfc2l6ZV9wIGFyZSBpZ25vcmVkLiBBZGRpdGlvbmFsbHkgXFwwIGlzIGEgZm9yYmlkZGVuIGNoYXJhY3RlciBpbiB0aGUgZGF0YSBzZXQuCisuUFAKK1xmQlNpbmNlOlxmUAorLlJTIDQKK05ldC1TTk1QIDUuNSAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDQ1IG9mIGZpbGUgd2F0Y2hlci5oLgorLlNTICIjZGVmaW5lIFdBVENIRVJfU0laRV9VTklUX09JRFMiCisuUFAKK0lmIHNldCB0aGVuIHNpemUgaXMgaW4gdW5pdHMgb2Ygb2JqZWN0IGlkZW50aWZpZXJzLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSBhbiBPSUQgYW5kIHRyYWNrcyB0aGUgT0lEX0xFTkdUSCBvZiBpdCBhcyBvcHBvc2VkIHRvIGl0J3Mgc2l6ZS4KKy5QUAorXGZCU2luY2U6XGZQCisuUlMgNAorTmV0LVNOTVAgNS41LjEgCisuUkUKKy5QUAorCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA1MiBvZiBmaWxlIHdhdGNoZXIuaC4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vcGR1X2FwaS4zLmRlZiBiL21hbi9wZHVfYXBpLjMuZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OGI0YTcKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vcGR1X2FwaS4zLmRlZgpAQCAtMCwwICsxLDI4IEBACisuVEggUERVX0FQSSAzICIyMCBBcHIgMjAwOSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5TSCBOQU1FCitzbm1wX3BkdV9jcmVhdGUsIHNubXBfY2xvbmVfcGR1LCBzbm1wX2ZpeF9wZHUsCitzbm1wX2ZyZWVfcGR1IC0gcGR1X2FwaSBmdW5jdGlvbnMKKy5TSCBTWU5PUFNJUworLkIgI2luY2x1ZGUgPG5ldC1zbm1wL3BkdV9hcGkuaD4KKy5QUAorLkJJICJuZXRzbm1wX3BkdSAqc25tcF9wZHVfY3JlYXRlKCBpbnQiICJ0eXBlIiAiKTsiCisuUFAKKy5CSSAibmV0c25tcF9wZHUgKnNubXBfY2xvbmVfcGR1KCBuZXRzbm1wX3BkdSoiICJwZHUiICIpOyIKKy5QUAorLkJJICJuZXRzbm1wX3BkdSAqc25tcF9maXhfcGR1KCBuZXRzbm1wX3BkdSoiICJwZHUiICIsIGludCAiICJpZHgiICIpOyIKKy5QUAorLkJJICJuZXRzbm1wX3BkdSAqc25tcF9mcmVlX3BkdSggbmV0c25tcF9wZHUqIiAicGR1IiAiKTsiCisuUFAKKy5TSCBERVNDUklQVElPTgorVGhlc2UgZnVuY3Rpb25zIGRlYWwgd2l0aCBTTk1QIHJlcXVlc3Qgc3RydWN0dXJlcy4KKy5QUAorLkIgc25tcF9wZHVfY3JlYXRlCisuUFAKKy5CIHNubXBfY2xvbmVfcGR1CisuUFAKKy5CIHNubXBfZml4X3BkdQorLlBQCisuQiBzbm1wX2ZyZWVfcGR1CisuU0ggIlNFRSBBTFNPIgorLkJSIHZhcmJpbmRfYXBpICIoMykiCisuQlIgc2Vzc2lvbl9hcGkgIigzKSIKZGlmZiAtLWdpdCBhL21hbi9yZWFkX2NvbmZpZy4zLmRlZiBiL21hbi9yZWFkX2NvbmZpZy4zLmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI4MGQyMS4uMDAwMDAwMAotLS0gYS9tYW4vcmVhZF9jb25maWcuMy5kZWYKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotLlRIIFJFQURfQ09ORklHIDMgIjIzIEZlYiAyMDAzIiAiIiAiTmV0LVNOTVAiCi0uU0ggTkFNRQotcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIsIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyCi11bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyLCByZWdpc3Rlcl9taWJfaGFuZGxlcnMsIHJlYWRfY29uZmlncywKLXJlYWRfcHJlbWliX2NvbmZpZ3MsIGNvbmZpZ19wZXJyb3IsIGNvbmZpZ19wd2FybiAtIHJlYWRfY29uZmlnIGZ1bmN0aW9ucwotLlNIIFNZTk9QU0lTCi0uQiAjaW5jbHVkZSA8bmV0LXNubXAvY29uZmlnX2FwaS5oPgotLlBQCi0uQiBzdHJ1Y3QgY29uZmlnX2xpbmUgKgotLmJyCi0uQkkgIiAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqIiBmaWxlUHJlZml4ICIsCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIiB0b2tlbiAsCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcGFyc2VyICIpKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwiCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcmVsZWFzZXIgIikodm9pZCksIgotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiJ1c2FnZUxpbmUgIik7IgotLlBQCi0uQiBzdHJ1Y3QgY29uZmlnX2xpbmUgKgotLmJyCi0uQkkgIiAgcmVnaXN0ZXJfcHJlbWliX2hhbmRsZXIoY29uc3QgY2hhciAqIiBmaWxlUHJlZml4ICIsIAotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdG9rZW4gLAotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCoiIHBhcnNlciAiKShjb25zdCBjaGFyICosIGNoYXIgKiksIgotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCoiIHJlbGVhc2VyICIpKHZvaWQpLCIKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoiIHVzYWdlTGluZSAiKTsiCi0uUFAKLS5CSSAidm9pZCB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiIgZmlsZVByZWZpeCAiLCIKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoiIHRva2VuICIpOyIKLS5QUAotLkIgc3RydWN0IGNvbmZpZ19saW5lICoKLS5icgotLkJJICIgIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICoiIHRva2VuICwKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiBwYXJzZXIgIikoY29uc3QgY2hhciAqLCBjaGFyICopLCIKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiByZWxlYXNlciAiKSh2b2lkKSwiCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqInVzYWdlTGluZSAiKTsiCi0uUFAKLS5CIHN0cnVjdCBjb25maWdfbGluZSAqCi0uYnIKLS5CSSAiICByZWdpc3Rlcl9hcHBfcHJlbWliX2hhbmRsZXIoY29uc3QgY2hhciAqIiB0b2tlbiAsCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcGFyc2VyICIpKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwiCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcmVsZWFzZXIgIikodm9pZCksIgotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdXNhZ2VMaW5lICIpOyIKLS5QUAotLkJJICJ2b2lkIHVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiIgdG9rZW4gIik7IgotLlBQCi0uQkkgInZvaWQgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoY2hhciAqIiBsZWFkICIpOyIKLS5QUAotLkIgInZvaWQgcmVhZF9jb25maWdzKHZvaWQpOyIKLS5QUAotLkIgInZvaWQgcmVhZF9wcmVtaWJfY29uZmlncyh2b2lkKTsiCi0uUFAKLS5CSSAidm9pZCBjb25maWdfcHdhcm4oY29uc3QgY2hhciAqIiBzdHJpbmcgIik7IgotLmJyCi0uQkkgInZvaWQgY29uZmlnX3BlcnJvcihjb25zdCBjaGFyICoiIHN0cmluZyAiKTsiCi0KLS5TSCBERVNDUklQVElPTgotVGhlIGZ1bmN0aW9ucyBhcmUgYSBmYWlybHkgZXh0ZW5zaWJsZSBzeXN0ZW0gb2YgcGFyc2luZyB2YXJpb3VzCi1jb25maWd1cmF0aW9uIGZpbGVzIGF0IHRoZSBydW4gdGltZSBvZiBhbiBhcHBsaWNhdGlvbi4gIFRoZQotY29uZmlndXJhdGlvbiBmaWxlIGZsb3cgaXMgYnJva2VuIGludG8gdGhlIGZvbGxvd2luZyBwaGFzZXM6Ci0uUlMgNAotLlRQIDQKLTEuCi1SZWdpc3RyYXRpb24gb2YgaGFuZGxlcnMuCi0uVFAKLTIuCi1SZWFkaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBwcmUtTUlCIHBhcnNpbmcgcmVxdWlyZW1lbnRzLgotLlRQCi0zLgotUmVhZGluZyBhbmQgcGFyc2luZyBvZiB0aGUgdGV4dHVhbCBNSUIgZmlsZXMuCi0uVFAKLTQuCi1SZWFkaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMuCi0uVFAKLTUuCi1PcHRpb25hbGx5IHJlLXJlYWRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXQgYSBmdXR1cmUgZGF0ZS4KLS5SRQotLlBQCi1UaGUgaWRlYSBpcyB0aGF0IHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uIGlzIGFibGUgdG8gcmVnaXN0ZXIKLS5JIGhhbmRsZXJzCi1mb3IgY2VydGFpbgotLkkgdG9rZW5zCi1zcGVjaWZpZWQgaW4gY2VydGFpbiB0eXBlcyBvZgotLkkgZmlsZXMuCi1UaGUgCi0uQiByZWFkX2NvbmZpZ3MoKQotZnVuY3Rpb24gY2FuIHRoZW4gYmUgY2FsbGVkIHRvIGxvb2sgZm9yIGFsbCB0aGUgZmlsZXMgdGhhdCBpdCBoYXMKLXJlZ2lzdHJhdGlvbnMgZm9yLCBmaW5kIHRoZSBmaXJzdCB3b3JkIG9uIGVhY2ggbGluZSwgYW5kIHBhc3MgdGhlCi1yZW1haW5kZXIgdG8gdGhlIGFwcHJvcHJpYXRlbHkgcmVnaXN0ZXJlZCBoYW5kbGVyLgotLlNIIFRPS0VOIEhBTkRMRVJTCi0uUFAKLUhhbmRsZXIgZnVuY3Rpb25zIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlOgotLlBQCi0uUlMKLS5CSSAidm9pZCBoYW5kbGVyKGNvbnN0IGNoYXIgKiIgdG9rZW4gIiwgY2hhciAqIiBsaW5lICIpOyIKLS5SRQotLlBQCi1UaGUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzLCB0aGUgZmlyc3QgYmVpbmcgdGhlCi10b2tlbiB0aGF0IHRyaWdnZXJlZCB0aGUgY2FsbCB0byB0aGlzIGZ1bmN0aW9uICh3aGljaCB3b3VsZCBiZSBvbmUgb2YKLXRoZSB0b2tlbnMgdGhhdCB0aGUgZnVuY3Rpb24gaGFkIGJlZW4gcmVnaXN0ZXJlZCBmb3IpLCBhbmQgdGhlIHNlY29uZAotYmVpbmcgdGhlIHJlbWFpbmRlciBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGxpbmUgYmV5b25kIHRoZSB3aGl0ZQotc3BhY2UgZm9sbG93aW5nIHRoZSB0b2tlbi4KLS5TSCBSRVNPVVJDRSBGUkVFSU5HIEhBTkRMRVJTCi0uUFAKLUlmIHRoZSBwYXJhbWV0ZXIKLS5JIHJlbGVhc2VyCi1wYXNzZWQgdG8KLS5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyCi1pcyBub24tTlVMTCwgdGhlbiB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGlzIGNhbGxlZCBpZiBhbmQgd2hlbiB0aGUKLWNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHJlLXJlYWQuICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBmcmVlIGFueQotcmVzb3VyY2VzIGFsbG9jYXRlZCBieSB0aGUgdG9rZW4gaGFuZGxlciBmdW5jdGlvbiBhbmQgcmVzZXQgaXRzIG5vdGlvbgotb2YgdGhlIGNvbmZpZ3VyYXRpb24gdG8gaXRzIGRlZmF1bHQuICBUaGUgdG9rZW4gaGFuZGxlciBmdW5jdGlvbiB3aWxsCi10aGVuIGJlIGNhbGxlZCBhZ2Fpbi4gIE5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSByZXNvdXJjZSBmcmVlaW5nCi1oYW5kbGVyLgotLlNIIFJFR0lTVEVSSU5HIEEgSEFORExFUgotLlRQCi0uQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCi1UaGUKLS5CIGhhbmRsZXIoKQotZnVuY3Rpb24gYWJvdmUgY291bGQgYmUgcmVnaXN0ZXJlZCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQotLkkgc25tcC5jb25mLAotd2l0aCB0aGUgdG9rZW4KLS5JIGdlbmVyaWNUb2tlbgotYW5kIHRoZSBoZWxwIHN0cmluZyAoZGlzY3Vzc2VkIGxhdGVyKQotLkkgIiIiQVJHMSBbQVJHMl0iIiIKLXVzaW5nIHRoZSBmb2xsb3dpbmcgY2FsbCB0byB0aGUgCi0uQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCi1mdW5jdGlvbjoKLS5QUAotLlJTCi0uUlMKLXJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wIiwgImdlbmVyaWNUb2tlbiIsIGhhbmRsZXIsIE5VTEwsICJBUkcxIFtBUkcyXSIpOwotLlJFCi0uUkUKLS5JUAotVGhpcyB3b3VsZCByZWdpc3RlciB0aGUKLS5CIGhhbmRsZXIoKQotZnVuY3Rpb24gc28gdGhhdCBpdCB3aWxsIGdldCBjYWxsZWQgZXZlcnkgdGltZSB0aGUgZmlyc3Qgd29yZCBvZiBhCi1saW5lIGluIHRoZSAKLS5JIHNubXAuY29uZgotY29uZmlndXJhdGlvbiBmaWxlKHMpIG1hdGNoZXMgImdlbmVyaWNUb2tlbiIgKHNlZSAKLS5CIHJlYWRfY29uZmlncygpIAotYmVsb3cpLgotLlRQCi0uQiByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcigpCi1UaGUgCi0uQiByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcigpCi1mdW5jdGlvbiB3b3JrcyBpZGVudGljYWxseSB0byB0aGUgCi0uQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCi1mdW5jdGlvbiBidXQgaXMgaW50ZW5kZWQgZm9yIGNvbmZpZyBmaWxlIHRva2VucyB0aGF0IG5lZWQgdG8gYmUgcmVhZAotaW4gYmVmb3JlIHRoZSB0ZXh0dWFsIE1JQnMgYXJlIHJlYWQgaW4sIHByb2JhYmx5IGJlY2F1c2UgdGhleSB3aWxsIGJlCi11c2VkIHRvIGNvbmZpZ3VyZSB0aGUgTUlCIHBhcnNlci4gIEl0IGlzIHJhcmVseSB0aGUgY2FzZSB0aGF0IGFueXRoaW5nIAotYnV0IHRoZSBTTk1QIGxpYnJhcnkgaXRzZWxmIHNob3VsZCBuZWVkIHRvIHVzZSB0aGlzIGZ1bmN0aW9uLgotLlRQCi0uQiB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKLVJlbW92ZXMgdGhlIHJlZ2lzdGVyZWQgY29uZmlndXJhdGlvbiBoYW5kbGVyIGZvciB0aGUKLS5JIGZpbGVQcmVmaXgKLWFuZAotLklSIHRva2VuIC4KLQotLlRQCi0uQiByZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoKQotLlRQCi0uQiByZWdpc3Rlcl9hcHBfcHJlbWliX2hhbmRsZXIoKQotLlRQCi0uQiB1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigpCi1UaGVzZSBmdW5jdGlvbnMgYXJlIGFuYWxhZ291cyB0byAKLS5CUiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpICIsICIgcmVnaXN0ZXJfcHJlbWliX2hhbmRsZXIoKSAiIGFuZCAiCi0uQiB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKLWJ1dCBkb24ndCByZXF1aXJlIHRoZSBmaWxlIHR5cGUgYXJndW1lbnQgKHdoaWNoIGlzIGZpbGxlZCBpbiBieSB0aGUKLWFwcGxpY2F0aW9uKS4gIEl0IGlzIGludGVuZGVkIHRoYXQgTUlCIG1vZHVsZXMgd3JpdHRlbiBmb3IgdGhlIGFnZW50Ci11c2UgdGhlc2UgZnVuY3Rpb25zIHRvIGFsbG93IHRoZSBhZ2VudCB0byBoYXZlIG1vcmUgY29udHJvbCBvdmVyIHdoaWNoCi1jb25maWd1cmF0aW9uIGZpbGVzIGFyZSByZWFkICh0eXBpY2FsbHkgdGhlCi0uSSBzbm1wZC5jb25mCi1maWxlcykuCi0uU0ggSEVMUCBTVFJJTkdTCi0uUFAKLVRoZQotLkkgdXNhZ2VMaW5lCi1wYXJhbWV0ZXIgcGFzc2VkIHRvCi0uQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCi1hbmQgc2ltaWxhciBjYWxscywgaXMgdXNlZCB0byBkaXNwbGF5IGhlbHAgaW5mb3JtYXRpb24gd2hlbiB0aGUKLS5CIHJlYWRfY29uZmlnX3ByaW50X3VzYWdlKCkKLWZ1bmN0aW9uIGlzIGNhbGxlZC4gIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSBhbGwgb2YgdGhlIGFwcGxpY2F0aW9ucwotd2hlbiB0aGUgCi0uQiAtSAotZmxhZyBpcyBwYXNzZWQgb24gdGhlIGNvbW1hbmQgbGluZS4gIEl0IHByaW50cyBhIHN1bW1hcnkgb2YgYWxsIG9mIHRoZQotY29uZmlndXJhdGlvbiBmaWxlIGxpbmVzLCBhbmQgdGhlIGFzc29jaWF0ZWQgZmlsZXMsIHRoYXQgdGhlCi1jb25maWd1cmF0aW9uIHN5c3RlbSB1bmRlcnN0YW5kcy4gIFRoZQotLkkgdXNhZ2VMaW5lCi1wYXJhbWV0ZXIgc2hvdWxkIGJlIGEgbGlzdCBvZiBhcmd1bWVudHMgZXhwZWN0ZWQgYWZ0ZXIgdGhlIHRva2VuLCBhbmQKLW5vdCBhIGxlbmd0aHkgZGVzY3JpcHRpb24gKHdoaWNoIHNob3VsZCBnbyBpbnRvIGEgbWFudWFsIHBhZ2UKLWluc3RlYWQpLiAgVGhlCi0uSSBsZWFkCi1wcmVmaXggd2lsbCBiZSBwcmVwZW5kZWQgdG8gZWFjaCBsaW5lIHRoYXQgdGhlIGZ1bmN0aW9uIHByaW50cyB0bwotc3RkZXJyLCB3aGVyZSBpdCBkaXNwbGF5cyBpdHMgb3V0cHV0LgotLlBQCi1UaGUKLS5CIGluaXRfc25tcCgpCi1mdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSB0aGUKLS5CIHJlYWRfY29uZmlnX3ByaW50X3VzYWdlKCkKLWZ1bmN0aW9uIGlzIGNhbGxlZCwgc28gdGhhdCB0aGUgbGlicmFyeSBjYW4gcmVnaXN0ZXIgaXRzIGNvbmZpZ3VyYXRpb24gCi1maWxlIGRpcmVjdGl2ZXMgYXMgd2VsbCBmb3IgdGhlIAotLkIgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoKQotZnVuY3Rpb24gdG8gZGlzcGxheS4KLS5TSCBSRUFESU5HIENPTkZJR1VSQVRJT04gRklMRVMKLS5UUAotLkIgaW5pdF9zbm1wKCkKLU9uY2UgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gdG9rZW4gcGFyc2VycyBoYXZlIGJlZW4gcmVnaXN0ZXJlZCwKLS5CIGluaXRfc25tcCgpCi1zaG91bGQgYmUgY2FsbGVkLiAgSXQgd2lsbCBwYXJzZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHRva2VucwotcmVnaXN0ZXJlZCB3aXRoCi0uQiByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcigpLAotcmVhZCBpbiB0aGUgdGV4dHVhbCBNSUIgZmlsZXMgdXNpbmcKLS5CIGluaXRfbWliKCksCi1hbmQgZmluYWxseSBwYXJzZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHRva2VucyByZWdpc3RlcmVkIHdpdGggCi0uQlIgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoKSAuCi0uUFAKLUlmIHRoZSAKLS5CIGluaXRfc25tcCgpCi1mdW5jdGlvbiBpcyB1c2VkLCBub25lIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG5lZWQgdG8gYmUgY2FsbGVkIGJ5IAotdGhlIGFwcGxpY2F0aW9uOgotLlRQCi0uQiByZWdpc3Rlcl9taWJfaGFuZGxlcnMoKQotVGhlIFNOTVAgbGlicmFyeSdzIHJvdXRpbmUgdG8gcmVnaXN0ZXIgaXRzIGNvbmZpZ3VyYXRpb24gZmlsZQotaGFuZGxlcnMuCi0uVFAKLS5CIHJlYWRfcHJlbWliX2NvbmZpZ3MoKQotVGhlIHJvdXRpbmUgdGhhdCBwYXJzZXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRva2VucyByZWdpc3RlcmVkCi10byBiZSBkZWFsdCB3aXRoIGJlZm9yZSB0aGUgdGV4dHVhbCBNSUJzIGFyZSByZWFkIGluLiAgU2VlIAotLkIgcmVhZF9jb25maWdzKCkKLWJlbG93LgotLlRQCi0uQiByZWFkX2NvbmZpZ3MoKQotUmVhZHMgYWxsIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGl0IGNhbiBmaW5kIGluIHRoZSAKLS5JIFNOTVBDT05GUEFUSAotZW52aXJvbm1lbnQgdmFyaWFibGUgKG9yIGl0cyBkZWZhdWx0IHZhbHVlKSBmb3IgdG9rZW5zIGFuZAotYXBwcm9wcmlhdGVseSBjYWxscyB0aGUgaGFuZGxlcnMgcmVnaXN0ZXJlZCB0byBpdCwgb3IgcHJpbnRzIGEKLSJVbmtub3duIHRva2VuIiB3YXJuaW5nIG1lc3NhZ2UuICBJdCBsb29rcyBmb3IgYW55IGZpbGUgdGhhdCBpdCBoYXMKLXByZXZpb3VzbHkgcmVjZWl2ZWQgYSByZWdpc3RyYXRpb24gcmVxdWVzdCBmb3IuCi0uU0ggQ09ORklHVVJBVElPTiBGSUxFUyBSRUFECi0uUFAKLVRoZSBjb25maWd1cmF0aW9uIGZpbGVzIHJlYWQgYXJlIGZvdW5kIGJ5IHVzaW5nIHRoZSBjb2xvbiBzZXBhcmF0ZWQKLS5JIFNOTVBDT05GUEFUSAotZW52aXJvbm1lbnQgdmFyaWFibGUgKG9yIGl0cyBkZWZhdWx0IHZhbHVlLCB3aGljaCB3aWxsIGJlCi1TWVNDT05GRElSL3NubXAsIGZvbGxvd2VkIGJ5Ci1EQVRBRElSL3NubXAsIGZvbGxvd2VkIGJ5IExJQkRJUi9zbm1wLCBmb2xsb3dlZCBieSAkSE9NRS8uc25tcCkgYW5kCi1yZWFkaW5nIGluIHRoZSBmaWxlcyBmb3VuZCB0aGF0IG1hdGNoIGJvdGggdGhlIHByZWZpeCByZWdpc3RlcmVkIGFuZAotdGhlIHR3byBzdWZmaXhlcwotLkkgLmNvbmYKLWFuZAotLkkgLmxvY2FsLmNvbmYuCi1UaGUgaWRlYSBiZWhpbmQgdGhlIHR3byBkaWZmZXJlbnQgc3VmZml4ZXMgaXMgdGhhdCB0aGUgZmlyc3QgZmlsZSBjYW4KLWJlIHNoYXJlZCAodmlhIHJkaXN0IG9yIGFuIE5GUyBtb3VudCkgYWNyb3NzIGEgbGFyZ2UgbnVtYmVyIG9mCi1tYWNoaW5lcyBhbmQgdGhlIHNlY29uZCBmaWxlIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSBsb2NhbCBzZXR0aW5ncwotZm9yIG9uZSBwYXJ0aWN1bGFyIG1hY2hpbmUuICBUaGV5IGRvIG5vdCBuZWVkIHRvIGJlIHByZXNlbnQsIGFuZCB3aWxsCi1vbmx5IGJlIHJlYWQgaWYgZm91bmQuCi0uU0ggRVJST1IgSEFORExJTkcgRlVOQ1RJT05TCi0uUFAKLVRoZSB0d28gZnVuY3Rpb25zCi0uQiBjb25maWdfcHdhcm4oKQotYW5kCi0uQiBjb25maWdfcGVycm9yKCkKLWJvdGggdGFrZSBhbiBlcnJvciBzdHJpbmcgYXMgYW4gYXJndW1lbnQgYW5kIHByaW50IGl0IHRvIHN0ZGVyciBhbG9uZwotd2l0aCB0aGUgZmlsZSBhbmQgbGluZSBudW1iZXIgdGhhdCBjYXVzZWQgdGhlIGVycm9yLiAgQSBjYWxsIHRvIHRoZQotc2Vjb25kIGZ1bmN0aW9uIHdpbGwgYWxzbyBmb3JjZSAKLS5CIHJlYWRfY29uZmlncygpIAotdG8gZXZlbnR1YWxseSByZXR1cm4gd2l0aCBhbiBlcnJvciBjb2RlIGluZGljYXRpbmcgdG8gaXQncyBjYWxsaW5nCi1mdW5jdGlvbiB0aGF0IGl0IHNob3VsZCBhYm9ydCB0aGUgb3BlcmF0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbi4KLS5TSCAiRU5WSVJPTk1FTlQgVkFSSUFCTEVTIgotLlRQIDEwCi1TTk1QQ09ORlBBVEgKLUEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBjb25maWd1cmF0aW9uCi1maWxlcyBpbi4KLURlZmF1bHQ6IFNZU0NPTkZESVIvc25tcDpEQVRBRElSL3NubXA6TElCRElSL3NubXA6JEhPTUUvLnNubXAKLS5TSCAiU0VFIEFMU08iCi0uQlIgbWliX2FwaSAiKDMpLCAiIHNubXBfYXBpICgzKQotLlwiIExvY2FsIFZhcmlhYmxlczoKLS5cIiAgbW9kZTogbnJvZmYKLS5cIiBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vc25tcF9hcGkuMy5kZWYgYi9tYW4vc2Vzc2lvbl9hcGkuMy5kZWYKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gbWFuL3NubXBfYXBpLjMuZGVmCnJlbmFtZSB0byBtYW4vc2Vzc2lvbl9hcGkuMy5kZWYKaW5kZXggZDFjYjk5MS4uOWFjMmQ1ZSAxMDA2NDQKLS0tIGEvbWFuL3NubXBfYXBpLjMuZGVmCisrKyBiL21hbi9zZXNzaW9uX2FwaS4zLmRlZgpAQCAtMSwzICsxLDcgQEAKKy5cIiAtKi0gbnJvZmYgLSotCisuXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAKKy5cIiBTZWUgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlcgorLlwiIGNvcHlyaWdodHMgdGhhdCBtYXkgYXBwbHk6CiAuXCIgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIgCUNvcHlyaWdodCAxOTg5IGJ5IENhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5CiAuXCIgCkBAIC0xOSw5ICsyMyw5IEBACiAuXCIgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUwogLlwiIFNPRlRXQVJFLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QX0FQSSAzICIxOSBNYXkgMjAxMSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTRVNTSU9OX0FQSSAzICIxOSBNYXkgMjAxMSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCi1zbm1wX3Nlc3NfaW5pdCwgc25tcF9vcGVuLCBzbm1wX3NlbmQsIHNubXBfYXN5bmNfc2VuZCwgc25tcF9mcmVlX3BkdSwgc25tcF9zZWxlY3RfaW5mbywgc25tcF9yZWFkLCBzbm1wX3RpbWVvdXQsIHNubXBfc3luY2hfcmVzcG9uc2UsIHNubXBfY2xvc2UsIHNubXBfcGVycm9yLCBzbm1wX3Nlc3NfcGVycm9yLCBzbm1wX2Vycm9yLCBzbm1wX2FwaV9lcnJzdHJpbmcgXC0gc2VuZCBhbmQgcmVjZWl2ZSBTTk1QIG1lc3NhZ2VzCitzbm1wX3Nlc3NfaW5pdCwgc25tcF9vcGVuLCBzbm1wX3NlbmQsIHNubXBfYXN5bmNfc2VuZCwgc25tcF9zZWxlY3RfaW5mbywgc25tcF9yZWFkLCBzbm1wX3RpbWVvdXQsIHNubXBfc3luY2hfcmVzcG9uc2UsIHNubXBfY2xvc2UsIHNubXBfcGVycm9yLCBzbm1wX3Nlc3NfcGVycm9yLCBzbm1wX2Vycm9yLCBzbm1wX2FwaV9lcnJzdHJpbmcgXC0gc2Vzc2lvbl9hcGkgZnVuY3Rpb25zCiAuU0ggU1lOT1BTSVMKICNpbmNsdWRlIDxuZXQtc25tcC9zZXNzaW9uX2FwaS5oPgogLlBQCkBAIC02MSw5ICs2NSw2IEBACiAuUFAKIGludCBzbm1wX2Nsb3NlICggc3RydWN0IHNubXBfc2Vzc2lvbiAqc2Vzc2lvbiApOwogLlBQCi12b2lkIHNubXBfZnJlZV9wZHUgKAotc3RydWN0IHNubXBfcGR1ICpwZHUgKTsKLS5QUAogdm9pZCBzbm1wX2Vycm9yICgKIHN0cnVjdCBzbm1wX3Nlc3Npb24gKnNlc3Npb24sCiAuUlMKQEAgLTk4LDkgKzk5LDkgQEAKIG9iamVjdCwgd2hpY2ggdGhlIGFwcGxpY2F0aW9uIG11c3QgdXNlIHRvIHJlZmVyZW5jZSB0aGUKIGFjdGl2ZSBTTk1QIHNlc3Npb24uCiAuUFAKLS5JIFNubXBfc2VuZCwgc25tcF9hc3luY19zZW5kCisuSSBTbm1wX3NlbmQKIGFuZAotLkkgc25tcF9mcmVlX3BkdQorLkkgc25tcF9hc3luY19zZW5kCiBlYWNoIHRha2UgYXMgaW5wdXQgYSBwb2ludGVyIHRvIGEKIC5JIHN0cnVjdCBzbm1wX3BkdQogb2JqZWN0LgpkaWZmIC0tZ2l0IGEvbWFuL3NubXAuY29uZi41LmRlZiBiL21hbi9zbm1wLmNvbmYuNS5kZWYKaW5kZXggNDMyZTA0Yi4uMTNjMTVhOSAxMDA2NDQKLS0tIGEvbWFuL3NubXAuY29uZi41LmRlZgorKysgYi9tYW4vc25tcC5jb25mLjUuZGVmCkBAIC0xLDQgKzEsNCBAQAotLlRIIFNOTVAuQ09ORiA1ICIyMSBGZWIgMjAwNyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QLkNPTkYgNSAiMDEgQXByIDIwMDkiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQogc25tcC5jb25mIC0gY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdGhlIE5ldC1TTk1QIGFwcGxpY2F0aW9ucwogLlNIIERFU0NSSVBUSU9OCkBAIC00NSw2ICs0NSwxMyBAQAogZGVmaW5lcyB0aGUgZGVmYXVsdCBjb21tdW5pdHkgdG8gdXNlIGZvciBTTk1QdjEgYW5kIFNOTVB2MmMgcmVxdWVzdHMuCiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkItY1xmUiBvcHRpb24uCiAuXCIuSVAgImR1bXBQYWNrZXQgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCisuSVAgImFsaWFzIE5BTUUgREVGSU5JVElPTiIKK0NyZWF0ZXMgYW4gYWxpYXNlZCB0aWVkIHRvIE5BTUUgZm9yIGEgZ2l2ZW4gdHJhbnNwb3J0IGRlZmluaXRpb24uICBUaGUKK2FsaWFzIGNhbiB0aGUgYmUgcmVmZXJyZWQgdG8gdXNpbmcgYW4gYWxpYXM6IHByZWZpeC4gIEVnLCBhIGxpbmUgb2YKKyJhbGlhcyBoZXJlIHVkcDoxMjcuMC4wLjE6NjE2MSIgd291bGQgYWxsb3cgeW91IHRvIHVzZSBhIGRlc3RpbmF0aW9uCitob3N0IG9mICJhbGlhczpoZXJlIiBpbnN0ZWFkIG9mICJ1ZHA6MTI3LjAuMC4xOjYxNjEiLiAgVGhpcyBiZWNvbWVzCittb3JlIHVzZWZ1bCB3aXRoIGNvbXBsZXggdHJhbnNwb3J0IGFkZHJlc3NlcyBpbnZvbHZpbmcgSVB2NiBhZGRyZXNzZXMsCitldGMuCiAuSVAgImR1bXBQYWNrZXQgeWVzIgogZGVmaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgYSBoZXhhZGVjaW1hbCBkdW1wIG9mIHRoZSByYXcgU05NUCByZXF1ZXN0cwogc2VudCBhbmQgcmVjZWl2ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgpAQCAtMTkyLDYgKzE5OSwxNyBAQAogYmVpbmcgdXNlZCAoYXV0aCBrZXlzOiBNRDU9MTYgYnl0ZXMsIFNIQTE9MjAgYnl0ZXM7CiBwcml2IGtleXM6IERFUz0xNiBieXRlcyAoOAogYnl0ZXMgb2Ygd2hpY2ggaXMgdXNlZCBhcyBhbiBJViBhbmQgbm90IGEga2V5KSwgYW5kIEFFUz0xNiBieXRlcykuCisuSVAgInNzaHRvc25tcHNvY2tldCBQQVRIIgorU2V0cyB0aGUgcGF0aCBvZiB0aGUgXGZCc3NodG9zbm1wXGZSIHNvY2tldCBjcmVhdGVkIGJ5IGFuIGFwcGxpY2F0aW9uCisoZS5nLiBzbm1wZCkgbGlzdGVuaW5nIGZvciBpbmNvbWluZyBzc2ggY29ubmVjdGlvbnMgdGhyb3VnaCB0aGUKK1xmQnNzaHRvc25tcFxmUiB1bml4IHNvY2tldC4KKy5JUCAic3NodG9zbm1wc29ja2V0cGVybXMgTU9ERSBbT1dORVIgW0dST1VQXV0iCitTZXRzIHRoZSBtb2RlLCBvd25lciBhbmQgZ3JvdXAgb2YgdGhlIFxmQnNzaHRvc25tcFxmUiBzb2NrZXQgY3JlYXRlZCBieQorYW4gYXBwbGljYXRpb24gKGUuZy4gXGZCc25tcGRcZlIpIGxpc3RlbmluZyBmb3IgaW5jb21pbmcgc3NoIGNvbm5lY3Rpb25zCit0aHJvdWdoIHRoZSBcZkJzc2h0b3NubXBcZlIgdW5peCBzb2NrZXQuICBUaGUgc29ja2V0IG5lZWRzIHRvIGJlIHJlYWQvd3JpdGUKK3ByaXZpbGVnZWQgZm9yIFNTSCB1c2VycyB0aGF0IGFyZSBhbGxvd2VkIHRvIGNvbm5lY3QgdG8gdGhlIFNOTVAKK3NlcnZpY2UgKFZBQ00gYWNjZXNzIHN0aWxsIG5lZWRzIHRvIGJlIGdyYW50ZWQgYXMgd2VsbCwgbW9zdCBsaWtlbHkKK3Rocm91Z2ggdGhlIFRTTSBzZWN1cml0eSBtb2RlbCkuCiAuXCIKIC5cIiBYWFggLSBhcmUgdGhlc2UgbGVuZ3RocyBzdGlsbCBjb3JyZWN0ID8KIC5cIgpAQCAtMjE1LDcgKzIzMyw3IEBACiBmb3IgaGFuZGxpbmcgaW5wdXQgdG8gYW5kIG91dHB1dCBmcm9tIGV4dGVybmFsIHNoZWxsIGNvbW1hbmRzLgogVXNlZCBieSB0aGUgXGZJbWtzdGVtcCgpXGZSIGFuZCBcZklta3RlbXAoKVxmUiBmdW5jdGlvbnMuCiAuSVAKLUlmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHBhdHRlcm4gaXMgXGZDL3RtcC9zbm1wZFhYWFhYWFxmUi4KK0lmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHBhdHRlcm4gaXMgXGZDTkVUU05NUF9URU1QX0ZJTEVfUEFUVEVSTlxmUi4KIC5JUCAic2VydmVyUmVjdkJ1ZiBJTlRFR0VSIgogc3BlY2lmaWVzIHRoZSBkZXNpcmVkIHNpemUgb2YgdGhlIGJ1ZmZlciB0byBiZSB1c2VkIHdoZW4gcmVjZWl2aW5nCiBpbmNvbWluZyBTTk1QIHJlcXVlc3RzLgpAQCAtMjUyLDE0ICsyNzAsMTUgQEAKIGVudmlyb25tZW50IHZhcmlhYmxlLgogLklQICJzaG93TWliRXJyb3JzICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogd2hldGhlciB0byBkaXNwbGF5IE1JQiBwYXJzaW5nIGVycm9ycy4KLS5JUCAic3RyaWN0Q29tbWVudFRlcm0gKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCisuSVAgImNvbW1lbnRUb0VPTCAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIHdoZXRoZXIgTUlCIHBhcnNpbmcgc2hvdWxkIGJlIHN0cmljdCBhYm91dCBjb21tZW50IHRlcm1pbmF0aW9uLgogTWFueSBNSUIgd3JpdGVycyBhc3N1bWUgdGhhdCBBU04uMSBjb21tZW50cyBleHRlbmQgdG8gdGhlIGVuZCBvZgogdGhlIHRleHQgbGluZSwgcmF0aGVyIHRoYW4gYmVpbmcgdGVybWluYXRlZCBieSB0aGUgbmV4dCAiLS0iIHRva2VuLgogVGhpcyB0b2tlbiBjYW4gYmUgdXNlZCB0byBhY2NlcHQgc3VjaCAoc3RyaWN0bHkgaW5jb3JyZWN0KSBNSUJzLgogLmJyCi1Ob3RlIHRoYXQgdGhpcyBkaXJlY3RpdmUgaXMgcG9vcmx5IG5hbWVkLCBzaW5jZSBhIHZhbHVlIG9mICJ0cnVlIgotd2lsbCB0dXJuIFxmSW9mZlxmUCB0aGUgc3RyaWN0IGludGVycHJldGF0aW9uIG9mIE1JQiBjb21tZW50cy4KK05vdGUgdGhhdCB0aGlzIGRpcmVjdGl2ZSB3YXMgcHJldmlvdXMgKG1pcy0pbmFtZWQgXGZJc3RyaWN0Q29tbWVudFRlcm1cZlIsCitidXQgd2l0aCB0aGUgcmV2ZXJzZSBiZWhhdmlvdXIgZnJvbSB0aGF0IGltcGxpZWQgYnkgdGhlIG5hbWUuCitUaGlzIGVhcmxpZXIgdG9rZW4gaXMgc3RpbGwgYWNjZXB0ZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogLklQICJtaWJBbGxvd1VuZGVybGluZSAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIHdoZXRoZXIgdG8gYWxsb3cgdW5kZXJsaW5lIGNoYXJhY3RlcnMgaW4gTUlCIG9iamVjdCBuYW1lcyBhbmQKIGVudW1lcmF0aW9uIHZhbHVlcy4KZGlmZiAtLWdpdCBhL21hbi9zbm1wX2FwaV9lcnJzdHJpbmcuMyBiL21hbi9zbm1wX2FwaV9lcnJzdHJpbmcuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9hcGlfZXJyc3RyaW5nLjMKKysrIGIvbWFuL3NubXBfYXBpX2VycnN0cmluZy4zCkBAIC0xICsxIEBACi0uc28gbWFuMy9zbm1wX2FwaS4zCisuc28gbWFuMy9zZXNzaW9uX2FwaS4zCmRpZmYgLS1naXQgYS9tYW4vc25tcF9jbG9zZS4zIGIvbWFuL3NubXBfY2xvc2UuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9jbG9zZS4zCisrKyBiL21hbi9zbm1wX2Nsb3NlLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX2NvbmZpZy41LmRlZiBiL21hbi9zbm1wX2NvbmZpZy41LmRlZgppbmRleCBlN2FjNGE2Li44NzAxZDkzIDEwMDY0NAotLS0gYS9tYW4vc25tcF9jb25maWcuNS5kZWYKKysrIGIvbWFuL3NubXBfY29uZmlnLjUuZGVmCkBAIC0xMSw5ICsxMSwxMCBAQAogY29uZmlndXJhdGlvbiBmaWxlcyBpbiB0aGUgZm9sbG93aW5nIDQgZGlyZWN0b3JpZXMsIGluIG9yZGVyOgogU1lTQ09ORkRJUi9zbm1wLAogREFUQURJUi9zbm1wLCBMSUJESVIvc25tcCwgYW5kICRIT01FLy5zbm1wLiAgSW4gZWFjaCBvZiB0aGVzZQotZGlyZWN0b3JpZXMsIGl0IGxvb2tzIGZvciBmaWxlcyB3aXRoIHRoZSBleHRlbnNpb24gb2YgYm90aAotLklSIGNvbmYgIiBhbmQgIiBsb2NhbC5jb25mCi0ocmVhZGluZyB0aGUgc2Vjb25kIG9uZXMgbGFzdCkuICBJbiB0aGlzIG1hbm5lciwgdGhlcmUgYXJlCitkaXJlY3RvcmllcywgaXQgbG9va3MgZm9yIGZpbGVzIHNubXAuY29uZiwgc25tcGQuY29uZiBhbmQvb3IKK3NubXB0cmFwZC5jb25mLCBhcyB3ZWxsIGFzIHNubXAubG9jYWwuY29uZiwgc25tcGQubG9jYWwuY29uZgorYW5kL29yIHNubXB0cmFwZC5sb2NhbC5jb25mLiAqLmxvY2FsLmNvbmYgYXJlIGFsd2F5cworcmVhZCBsYXN0LiBJbiB0aGlzIG1hbm5lciwgdGhlcmUgYXJlCiA4IGRlZmF1bHQgcGxhY2VzIGEgY29uZmlndXJhdGlvbiBmaWxlIGNhbiBleGlzdCBmb3IgYW55IGdpdmVuCiBjb25maWd1cmF0aW9uIGZpbGUgdHlwZS4KIC5QUApkaWZmIC0tZ2l0IGEvbWFuL3NubXBfZXJyb3IuMyBiL21hbi9zbm1wX2Vycm9yLjMKaW5kZXggNGMxNmJhZi4uZmUwYTQ4YiAxMDA2NDQKLS0tIGEvbWFuL3NubXBfZXJyb3IuMworKysgYi9tYW4vc25tcF9lcnJvci4zCkBAIC0xICsxIEBACi0uc28gbWFuMy9zbm1wX2FwaS4zCisuc28gbWFuMy9zZXNzaW9uX2FwaS4zCmRpZmYgLS1naXQgYS9tYW4vc25tcF9mcmVlX3BkdS4zIGIvbWFuL3NubXBfZnJlZV9wZHUuMwppbmRleCA0YzE2YmFmLi40NTZkNjZkIDEwMDY0NAotLS0gYS9tYW4vc25tcF9mcmVlX3BkdS4zCisrKyBiL21hbi9zbm1wX2ZyZWVfcGR1LjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3BkdV9hcGkuMwpkaWZmIC0tZ2l0IGEvbWFuL3NubXBfb3Blbi4zIGIvbWFuL3NubXBfb3Blbi4zCmluZGV4IDRjMTZiYWYuLmZlMGE0OGIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wX29wZW4uMworKysgYi9tYW4vc25tcF9vcGVuLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX3BlcnJvci4zIGIvbWFuL3NubXBfcGVycm9yLjMKaW5kZXggNGMxNmJhZi4uZmUwYTQ4YiAxMDA2NDQKLS0tIGEvbWFuL3NubXBfcGVycm9yLjMKKysrIGIvbWFuL3NubXBfcGVycm9yLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX3JlYWQuMyBiL21hbi9zbm1wX3JlYWQuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9yZWFkLjMKKysrIGIvbWFuL3NubXBfcmVhZC4zCkBAIC0xICsxIEBACi0uc28gbWFuMy9zbm1wX2FwaS4zCisuc28gbWFuMy9zZXNzaW9uX2FwaS4zCmRpZmYgLS1naXQgYS9tYW4vc25tcF9zZWxlY3RfaW5mby4zIGIvbWFuL3NubXBfc2VsZWN0X2luZm8uMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9zZWxlY3RfaW5mby4zCisrKyBiL21hbi9zbm1wX3NlbGVjdF9pbmZvLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX3NlbmQuMyBiL21hbi9zbm1wX3NlbmQuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9zZW5kLjMKKysrIGIvbWFuL3NubXBfc2VuZC4zCkBAIC0xICsxIEBACi0uc28gbWFuMy9zbm1wX2FwaS4zCisuc28gbWFuMy9zZXNzaW9uX2FwaS4zCmRpZmYgLS1naXQgYS9tYW4vc25tcF9zZXNzX3BlcnJvci4zIGIvbWFuL3NubXBfc2Vzc19wZXJyb3IuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9zZXNzX3BlcnJvci4zCisrKyBiL21hbi9zbm1wX3Nlc3NfcGVycm9yLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX3RpbWVvdXQuMyBiL21hbi9zbm1wX3RpbWVvdXQuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF90aW1lb3V0LjMKKysrIGIvbWFuL3NubXBfdGltZW91dC4zCkBAIC0xICsxIEBACi0uc28gbWFuMy9zbm1wX2FwaS4zCisuc28gbWFuMy9zZXNzaW9uX2FwaS4zCmRpZmYgLS1naXQgYS9tYW4vc25tcGNtZC4xLmRlZiBiL21hbi9zbm1wY21kLjEuZGVmCmluZGV4IDQ4NTNjYWYuLmY2NWIzZmQgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wY21kLjEuZGVmCisrKyBiL21hbi9zbm1wY21kLjEuZGVmCkBAIC0yNyw3ICsyNyw3IEBACiAuXCIgVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQogLlwiIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLlRIIFNOTVBDTUQgMSAiMDEgU2VwIDIwMDYiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuVEggU05NUENNRCAxICIyMCBNYXIgMjAwOSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wY21kIC0gb3B0aW9ucyBhbmQgYmVoYXZpb3VyIGNvbW1vbiB0byBtb3N0IG9mIHRoZSBOZXQtU05NUCBjb21tYW5kLWxpbmUgdG9vbHMKIC5TSCBTWU5PUFNJUwpAQCAtOTUsMTMgKzk1LDExIEBACiAuVFAKIC5CSSAtZSAiIGVuZ2luZUlEIgogU2V0IHRoZSBhdXRob3JpdGF0aXZlIChzZWN1cml0eSkgZW5naW5lSUQgdXNlZCBmb3IgU05NUHYzIFJFUVVFU1QKLW1lc3NhZ2VzLCBnaXZlbiBhcyBhIGhleGFkZWNpbWFsIHN0cmluZyAob3B0aW9uYWxseSBwcmVmaXhlZCBieSAiMHgiKS4KLUl0IGlzIHR5cGljYWxseSBub3QgbmVjZXNzYXJ5IHRvIHNwZWNpZnkgdGhpcyBlbmdpbmUgSUQsIGFzIGl0IHdpbGwKK21lc3NhZ2VzLiAgSXQgaXMgdHlwaWNhbGx5IG5vdCBuZWNlc3NhcnkgdG8gc3BlY2lmeSB0aGlzLCBhcyBpdCB3aWxsCiB1c3VhbGx5IGJlIGRpc2NvdmVyZWQgYXV0b21hdGljYWxseS4KIC5UUAogLkJJIC1FICIgZW5naW5lSUQiCi1TZXQgdGhlIGNvbnRleHQgZW5naW5lSUQgdXNlZCBmb3IgU05NUHYzIFJFUVVFU1QgbWVzc2FnZXMgc2NvcGVkUGR1LAotZ2l2ZW4gYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcuCitTZXQgdGhlIGNvbnRleHQgZW5naW5lSUQgdXNlZCBmb3IgU05NUHYzIFJFUVVFU1QgbWVzc2FnZXMgc2NvcGVkUGR1LgogSWYgbm90IHNwZWNpZmllZCwgdGhpcyB3aWxsIGRlZmF1bHQgdG8gdGhlIGF1dGhvcml0YXRpdmUgZW5naW5lSUQuCiAuVFAKIC5CIC1oLCAtLWhlbHAKQEAgLTIwNCw2ICsyMDIsNyBAQAogLlRQCiAuQkkgLXQgIiB0aW1lb3V0IgogU3BlY2lmaWVzIHRoZSB0aW1lb3V0IGluIHNlY29uZHMgYmV0d2VlbiByZXRyaWVzLiBUaGUgZGVmYXVsdCBpcyAxLgorRmxvYXRpbmcgcG9pbnQgbnVtYmVycyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGZyYWN0aW9ucyBvZiBzZWNvbmRzLgogLlRQCiAuQkkgLXUgIiBzZWNOYW1lIgogU2V0IHRoZSBzZWN1cml0eU5hbWUgdXNlZCBmb3IgYXV0aGVudGljYXRlZCBTTk1QdjMgbWVzc2FnZXMuCkBAIC0zNTIsNiArMzUxLDE2IEBACiBkZWZhdWx0IHRyYW5zcG9ydCBpZmYgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgPHRyYW5zcG9ydC1hZGRyZXNzPgogaXMgYSAnLycuCiAuVFAgMjQKKy5JUiAiYWxpYXM6bXluYW1lIgorcGVyZm9ybSBhIGNvbm5lY3Rpb24gdG8gdGhlCisuSSBteW5hbWUKK2FsaWFzIHdoaWNoIG5lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlIHNubXAuY29uZiBmaWxlIHVzaW5nIGEgbGluZQorbGlrZSAiCisuSSAiYWxpYXMgbXluYW1lIHVkcDoxMjcuMC4wLjE6OTE2MSIKKyIuICBBbnkgdHlwZSBvZiB0cmFuc3BvcnQgZGVmaW5pdGlvbiBjYW4gYmUgdXNlZCBhcyB0aGUgYWxpYXMgZXhwYW5zaW9uCitwYXJhbWV0ZXIuICBBbGlhc2VzIGFyZSBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciB1c2luZyByZXBlYXRlZCBjb21wbGV4Cit0cmFuc3BvcnQgc3RyaW5ncy4KKy5UUCAyNAogLklSICJBQUw1UFZDOjEwMCIKIHBlcmZvcm0gdGhlIHF1ZXJ5IHVzaW5nIEFBTDUgUERVcyBzZW50IG9uIHRoZSBwZXJtYW5lbnQgdmlydHVhbAogY2lyY3VpdCB3aXRoIFZQST0wIGFuZCBWQ0k9MTAwIChkZWNpbWFsKSBvbiB0aGUgZmlyc3QgQVRNIGFkYXB0ZXIgaW4gdGhlCkBAIC0zNzcsNiArMzg2LDIxIEBACiBjb25uZWN0IHRvIHBvcnQgMTYxMSBvbiB0aGUgbG9jYWwgaG9zdAogLklSICIiICggOjoxIAogaW4gSVB2NiBwYXJsYW5jZSkgdXNpbmcgVENQL0lQdjYgYW5kIHBlcmZvcm0gcXVlcnkgb3ZlciB0aGF0IGNvbm5lY3Rpb24uCisuVFAgMjQKKy5JUiAiZHRsc3VkcDpob3N0bmFtZTo5MTYxIgorQ29ubmVjdHMgdXNpbmcgU05NUCBvdmVyIERUTFMvVURQIGFzIGRvY3VtZW50ZWQgYnkgdGhlIElTTVMgd29ya2luZyBncm91cAorKFJGQ3Mgbm90IHlldCBwdWJsaXNoZWQgYXMgb2YgdGhpcyBkYXRlKS4gIFRoaXMgd2lsbCByZXF1aXJlIHRoYXQgdGhlCitUU00gc2VjdXJpdHkgbW9kZWwgaXMgaW4gdXNlICgtLWRlZlNlY3VyaXR5TW9kZWw9dHNtKSBhbmQgdGhhdCB0aGUKKy5JUiBkZWZYNTA5U2VydmVyQ2VydHMsCisuSVIgZGVmWDUwOUNsaWVudFByaXYsCithbmQKKy5JUiBkZWZYNTA5Q2xpZW50UHViCitjb25maWd1cmF0aW9uIHRva2VucyBoYXZlIGJlZW4gc2V0LgorLlRQIDI0CisuSVIgInNzaDpob3N0bmFtZToyMiIKK0Nvbm5lY3RzIHVzaW5nIFNOTVAgb3ZlciBTU0ggYXMgZG9jdW1lbnRlZCBieSB0aGUgSVNNUyB3b3JraW5nIGdyb3VwCisoUkZDcyBub3QgeWV0IHB1Ymxpc2hlZCBhcyBvZiB0aGlzIGRhdGUpLiAgVGhpcyB3aWxsIHJlcXVpcmUgdGhhdCB0aGUKK1RTTSBzZWN1cml0eSBtb2RlbCBpcyBpbiB1c2UgKC0tZGVmU2VjdXJpdHlNb2RlbD10c20pLgogLlBQCiBOb3RlIHRoYXQgbm90IGFsbCB0aGUgdHJhbnNwb3J0IGRvbWFpbnMgbGlzdGVkIGFib3ZlIHdpbGwgYWx3YXlzIGJlCiBhdmFpbGFibGU7IGZvciBpbnN0YW5jZSwgaG9zdHMgd2l0aCBubyBJUHY2IHN1cHBvcnQgd2lsbCBub3QgYmUgYWJsZQpAQCAtMzg0LDcgKzQwOCw2IEBACiB0aGUgZXJyb3IgIlVua25vd24gaG9zdCIuICBMaWtld2lzZSwgc2luY2UgQUFMNSBQVkMgc3VwcG9ydCBpcyBvbmx5CiBjdXJyZW50bHkgYXZhaWxhYmxlIG9uIExpbnV4LCBpdCB3aWxsIGZhaWwgd2l0aCB0aGUgc2FtZSBlcnJvciBvbgogb3RoZXIgcGxhdGZvcm1zLgotCiAuU0ggIk1JQiBQQVJTSU5HIE9QVElPTlMiCiBUaGUgTmV0LVNOTVAgTUlCIHBhcnNlciBtb3N0bHkgYWRoZXJlcyB0byB0aGUgU3RydWN0dXJlIG9mIE1hbmFnZW1lbnQKIEluZm9ybWF0aW9uIChTTUkpLiAgQXMgdGhhdCBzcGVjaWZpY2F0aW9uIGhhcyBjaGFuZ2VkIHRocm91Z2ggdGltZSwgYW5kCkBAIC0zOTcsNyArNDIwLDcgQEAKIFN0cmljdGx5IHNwZWFraW5nLCBhIHNlY29uZCBhcHBlYXJhbmNlIG9mICItLSIgc2hvdWxkIHRlcm1pbmF0ZSB0aGUKIGNvbW1lbnQsIGJ1dCB0aGlzIGJyZWFrcyBzb21lIE1JQiBmaWxlcy4KIFRoZSBkZWZhdWx0IGJlaGF2aW91ciAodG8gaW50ZXJwcmV0IGNvbW1lbnRzIGNvcnJlY3RseSkgY2FuIGFsc28KLWJlIHNldCB3aXRoIHRoZSAobWlzbmFtZWQpIGNvbmZpZ3VyYXRpb24gdG9rZW4gXGZJc3RyaWN0Q29tbWVudFRlcm1cZlIuCitiZSBzZXQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiB0b2tlbiBcZkljb21tZW50VG9FT0xcZlIuCiAuVFAKIC5CICItUGQiCiBEaXNhYmxlcyB0aGUgbG9hZGluZyBvZiBNSUIgb2JqZWN0IERFU0NSSVBUSU9OcyB3aGVuIHBhcnNpbmcgTUlCIGZpbGVzLgpkaWZmIC0tZ2l0IGEvbWFuL3NubXBkLjguZGVmIGIvbWFuL3NubXBkLjguZGVmCmluZGV4IDJhMjA4NmYuLmI4ODQ3MDAgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZC44LmRlZgorKysgYi9tYW4vc25tcGQuOC5kZWYKQEAgLTEsNCArMSw0IEBACi0uVEggU05NUEQgOCAiMTAgSmFuIDIwMDciIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuVEggU05NUEQgOCAiMDEgQXByIDIwMDkiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQogc25tcGQgLSBkYWVtb24gdG8gcmVzcG9uZCB0byBTTk1QIHJlcXVlc3QgcGFja2V0cy4KIC5TSCBTWU5PUFNJUwpAQCAtMTkzLDYgKzE5MywxMiBAQAogaG9zdG5hbWVbOnBvcnRdCiAuSSBvcgogSVB2Ni1hZGRyZXNzWzpwb3J0XQorLlRQIDI4CisuSVIgIiIgInNzaCIKK2hvc3RuYW1lOnBvcnQKKy5UUCAyOAorLklSICIiICJkdGxzdWRwIgoraG9zdG5hbWU6cG9ydAogLlJFCiAuUFAKIE5vdGUgdGhhdCA8dHJhbnNwb3J0LXNwZWNpZmllcj4gc3RyaW5ncyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBzbyB0aGF0LApAQCAtMjI1LDYgKzIzMSwxOSBAQAogLlRQIDI0CiAuSVIgInVkcDY6MTAxNjEiCiBsaXN0ZW4gb24gcG9ydCAxMDE2MSBvbiBhbGwgSVB2NiBpbnRlcmZhY2VzLgorLlRQIDI0CisuSVIgInNzaDoxMjcuMC4wLjE6MjIiCitBbGxvd3MgY29ubmVjdGlvbnMgZnJvbSB0aGUgc25tcCBzdWJzeXN0ZW0gb24gdGhlIHNzaCBzZXJ2ZXIgb24gcG9ydAorMjIuICBUaGUgZGV0YWlscyBvZiB1c2luZyBTTk1QIG92ZXIgU1NIIGFyZSBkZWZpbmVkIGJlbG93LgorLlRQIDI0CisuSVIgImR0bHN1ZHA6MTI3LjAuMC4xOjkxNjEiCitMaXN0ZW4gZm9yIGNvbm5lY3Rpb25zIG92ZXIgRFRMUyBvbiBVRFAgcG9ydCA5MTYxLiAgVGhlIHNubXAuY29uZiBmaWxlCittdXN0IGhhdmUgdGhlCisuSVIgZGVmWDUwOVNlcnZlclB1YiwKKy5JUiBkZWZYNTA5U2VydmVyUHJpdiwKK2FuZAorLklSIGRlZlg1MDlDbGllbnRDZXJ0cworY29uZmlndXJhdGlvbiB0b2tlbnMgZGVmaW5lZC4KIC5QUAogTm90ZSB0aGF0IG5vdCBhbGwgdGhlIHRyYW5zcG9ydCBkb21haW5zIGxpc3RlZCBhYm92ZSB3aWxsIGFsd2F5cyBiZQogYXZhaWxhYmxlOyBmb3IgaW5zdGFuY2UsIGhvc3RzIHdpdGggbm8gSVB2NiBzdXBwb3J0IHdpbGwgbm90IGJlIGFibGUKQEAgLTIzMiw2ICsyNTEsNzcgQEAKIHRoZSBlcnJvciAiRXJyb3Igb3BlbmluZyBzcGVjaWZpZWQgZW5kcG9pbnQiLiAgTGlrZXdpc2UsIHNpbmNlIEFBTDUKIFBWQyBzdXBwb3J0IGlzIG9ubHkgY3VycmVudGx5IGF2YWlsYWJsZSBvbiBMaW51eCwgaXQgd2lsbCBmYWlsIHdpdGgKIHRoZSBzYW1lIGVycm9yIG9uIG90aGVyIHBsYXRmb3Jtcy4KKy5TSCBUcmFuc3BvcnQgU3BlY2lmaWMgTm90ZXMKKy5SUyAwCisuVFAgOAorc3NoCitUaGUgU1NIIHRyYW5zcG9ydCwgb24gdGhlIHNlcnZlciBzaWRlLCBpcyBhY3R1YWxseSBqdXN0IGEgdW5peAorbmFtZWQgcGlwZSB0aGF0IGNhbiBiZSBjb25uZWN0ZWQgdG8gdmlhIGEgc3NoIHN1YnN5c3RlbSBjb25maWd1cmVkIGluCit0aGUgbWFpbiBzc2ggc2VydmVyLiAgVGhlIHBpcGUgbG9jYXRpb24gKGNvbmZpZ3VyYWJsZSB3aXRoIHRoZQorc3NodG9zbm1wc29ja2V0IHRva2VuIGluIHNubXAuY29uZikgaXMKKy5JIC92YXIvbmV0LXNubXAvc3NodG9zbm1wLgorUGFja2V0cyBzaG91bGQgYmUgc3VibWl0dGVkIHRvIGl0IHZpYSB0aGUgc3NodG9zbm1wIGFwcGxpY2F0aW9uLCB3aGljaAorYWxzbyBzZW5kcyB0aGUgdXNlciBJRCBhcyB3ZWxsIHdoZW4gc3RhcnRpbmcgdGhlIGNvbm5lY3Rpb24uICBUaGUgVFNNCitzZWN1cml0eSBtb2RlbCBzaG91bGQgYmUgdXNlZCB3aGVuIHBhY2tldHMgc2hvdWxkIHByb2Nlc3MgaXQuCisuSVAKK1RoZQorLkkgc3NodG9zbm1wCitjb21tYW5kIGtub3dzIGhvdyB0byBjb25uZWN0IHRvIHRoaXMgcGlwZSBhbmQgdGFsayB0bworaXQuICBJdCBzaG91bGQgYmUgY29uZmlndXJlZCBpbiB0aGUKKy5JUiAiT3BlblNTSCBzc2hkIgorY29uZmlndXJhdGlvbiBmaWxlICh3aGljaCBpcyBub3JtYWxseQorLklSICIvZXRjL3NzaC9zc2hkX2NvbmZpZyIKK3VzaW5nIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBsaW5lOgorLlRQIDgKKy5JUAorU3Vic3lzdGVtIHNubXAgL3Vzci9sb2NhbC9iaW4vc3NodG9zbm1wCisuSVAKK1RoZQorLkkgc3NodG9zbm1wCitjb21tYW5kIHdpbGwgbmVlZCByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgCisuSSAvdmFyL25ldC1zbm1wL3NzaHRvc25tcAorcGlwZS4gIEFsdGhvdWdoIGl0IHNob3VsZCBiZSBmYWlybHkgc2FmZSB0byBncmFudCBhY2Nlc3MgdG8gdGhlCithdmVyYWdlIHVzZXIgc2luY2UgaXQgc3RpbGwgcmVxdWlyZXMgbW9kaWZpY2F0aW9ucyB0byB0aGUgQUNNIHNldHRpbmdzCitiZWZvcmUgdGhlIHVzZXIgY2FuIHBlcmZvcm0gb3BlcmF0aW9ucywgcGFyYW5vaWQgYWRtaW5pc3RyYXRvcnMgbWF5Cit3YW50IHRvIG1ha2UgdGhlIC92YXIvbmV0LXNubXAgZGlyZWN0b3J5IGFjY2Vzc2libGUgb25seSBieSB1c2VycyBpbiBhCitwYXJ0aWN1bGFyIGdyb3VwLiAgVXNlIHRoZQorLkkgc3NodG9zbm1wc29ja2V0cGVybXMKK3NubXAuY29uZiBjb25maWd1cmUgb3B0aW9uIHRvIHNldCB0aGUgcGVybWlzc2lvbnMsIG93bmVyIGFuZCBncm91cCBvZgordGhlIGNyZWF0ZWQgc29ja2V0LgorLklQCitBY2Nlc3MgY29udHJvbCBjYW4gYmUgZ3JhbnRlZCB0byB0aGUgdXNlciAiZm9vIiB1c2luZyB0aGUgZm9sbG93aW5nCitzdHlsZSBvZiBzaW1wbGUgc25tcGQuY29uZiBzZXR0aW5nczoKKy5UUCA4CisuSVAKK3JvdXNlciAtcyB0c20gZm9vIGF1dGhwcml2CisuSVAKK05vdGUgdGhhdCAiYXV0aHByaXYiIGlzIGFjY2VwdGFibGUgYXNzdW1pbmcgYXMgU1NIIHByb3RlY3RzIGV2ZXJ5dGhpbmcKK3RoYXQgd2F5IChhc3N1bWluZyB5b3UgaGF2ZSBhIG5vbi1pbnNhbmUgc2V0dXApLgorc25tcGQgaGFzIG5vIG5vdGlvbiBvZiBob3cgU1NIIGhhcyBhY3R1YWxseSBwcm90ZWN0ZWQgYSBwYWNrZXQgYW5kCit0aHVzIHRoZSBzbm1wIGFnZW50IGFzc3VtZXMgYWxsIHBhY2tldHMgcGFzc2VkIHRocm91Z2ggdGhlIFNTSAordHJhbnNwb3J0IGhhdmUgYmVlbiBwcm90ZWN0ZWQgYXQgdGhlIGF1dGhwcml2IGxldmVsLgorLlRQIDgKK2R0bHN1ZHAKK1RoZSBEVExTIHByb3RvY29sLCB3aGljaCBpcyBiYXNlZCBvZmYgb2YgVExTLCByZXF1aXJlcyBib3RoIGNsaWVudCBhbmQKK3NlcnZlciBjZXJ0aWZpY2F0ZXMgdG8gZXN0YWJsaXNoIHRoZSBjb25uZWN0aW9uIGFuZCBhdXRoZW50aWNhdGUgYm90aAorc2lkZXMuICBJbiBvcmRlciB0byBkbyB0aGlzLCB0aGUgY2xpZW50IHdpbGwgbmVlZCB0byBjb25maWd1cmUgdGhlCitzbm1wLmNvbmYgZmlsZQord2l0aCB0aGUKKy5JUiBkZWZYNTA5U2VydmVyQ2VydHMsCisuSVIgZGVmWDUwOUNsaWVudFByaXYsCithbmQKKy5JUiBkZWZYNTA5Q2xpZW50UHViCitjb25maWd1cmF0aW9uIHRva2Vucy4gIFRoZSBzZXJ2ZXIgd2lsbCBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgc25tcC5jb25mCitmaWxlIHdpdGggdGhlCisuSVIgZGVmWDUwOVNlcnZlclB1YiwKKy5JUiBkZWZYNTA5U2VydmVyUHJpdiwKK2FuZAorLklSIGRlZlg1MDlDbGllbnRDZXJ0cworY29uZmlndXJhdGlvbiB0b2tlbnMgZGVmaW5lZC4KKy5JUAorQWNjZXNzIGNvbnRyb2wgc2V0dXAgaXMgc2ltaWxhciB0byB0aGUgc3NoIHRyYW5zcG9ydCBhcyB0aGUgVFNNCitzZWN1cml0eSBtb2RlbCBzaG91bGQgYmUgdXNlZCB0byBwcm90ZWN0IHRoZSBwYWNrZXQuCisuUkUKIC5TSCBDT05GSUdVUkFUSU9OIEZJTEVTCiAuUFAKIC5CIHNubXBkCmRpZmYgLS1naXQgYS9tYW4vc25tcGQuY29uZi41LmRlZiBiL21hbi9zbm1wZC5jb25mLjUuZGVmCmluZGV4IDFlN2NiMmMuLmM3ZTRiNmEgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZC5jb25mLjUuZGVmCisrKyBiL21hbi9zbm1wZC5jb25mLjUuZGVmCkBAIC05Nyw3ICs5Nyw3IEBACiBpbiBvcmRlciB0byByZXNwb25kIHRvIFNOTVB2MyByZXF1ZXN0cy4KIFRoaXMgSUQgd2lsbCBub3JtYWxseSBiZSBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHksIHVzaW5nIHR3byByZWFzb25hYmx5CiBub24tcHJlZGljdGFibGUgdmFsdWVzIC0gYSAocHNldWRvLSlyYW5kb20gbnVtYmVyIGFuZCB0aGUgY3VycmVudAotdXB0aW1lIGluIHNlY29uZHMuIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoLiBIb3dldmVyIHRoZQordGltZSBpbiBzZWNvbmRzLiBUaGlzIGlzIHRoZSByZWNvbW1lbmRlZCBhcHByb2FjaC4gSG93ZXZlciB0aGUKIGNhcGFjaXR5IGV4aXN0cyB0byBkZWZpbmUgdGhlIGVuZ2luZUlEIGluIG90aGVyIHdheXM6CiAuSVAgImVuZ2luZUlEIFNUUklORyIKIHNwZWNpZmllcyB0aGF0IHRoZSBlbmdpbmVJRCBzaG91bGQgYmUgYnVpbHQgZnJvbSB0aGUgZ2l2ZW4gdGV4dCBTVFJJTkcuCkBAIC0xMTQsMTMgKzExNCwyMSBAQAogLlwiCiAuXCIgV2hhdCBpZiB0aGlzIGRvZXNuJ3QgZXhpc3QgPwogLlwiCi0uU0ggQUNDRVNTIENPTlRST0wKLS5CIHNubXBkCi1zdXBwb3J0cyB0aGUgVmlldy1CYXNlZCBBY2Nlc3MgQ29udHJvbCBNb2RlbCAoVkFDTSkgYXMgZGVmaW5lZCBpbiBSRkMKLTI1NzUsIHRvIGNvbnRyb2wgd2hvIGNhbiByZXRyaWV2ZSBvciB1cGRhdGUgaW5mb3JtYXRpb24uICBUbyB0aGlzIGVuZCwKLWl0IHJlY29nbml6ZXMgdmFyaW91cyBkaXJlY3RpdmVzIHJlbGF0aW5nIHRvIGFjY2VzcyBjb250cm9sLgotVGhlc2UgZmFsbCBpbnRvIGZvdXIgYmFzaWMgZ3JvdXBzLgotLlNTIFNOTVB2MyBVc2VycworLlNIIFNOTVB2MyBBVVRIRU5USUNBVElPTgorU05NUHYzIHdhcyBvcmlnaW5hbGx5IGRlZmluZWQgdXNpbmcgdGhlIFVzZXItQmFzZWQgU2VjdXJpdHkgTW9kZWwKKyhVU00pLCB3aGljaCBjb250YWlucyBhIHByaXZhdGUgbGlzdCBvZiB1c2VycyBhbmQga2V5cyBzcGVjaWZpYyB0byB0aGUKK1NOTVB2MyBwcm90b2NvbC4gIFRoZSBvcGVyYXRpb25hbCBjb21tdW5pdHksIGhvd2V2ZXIsIGRlY2xhcmVkIGl0IGEKK3BhaW4gdG8gbWFuaXB1bGF0ZSB5ZXQgYW5vdGhlciBkYXRhYmFzZSBhbmQgd291bGQgcHJlZmVyIHRvIHVzZQorZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuICBUbyB0aGF0IGVuZCB0aGUgSUVURiBjcmVhdGVkIHRoZSBJU01TCit3b3JraW5nIGdyb3VwIHRvIGJhdHRsZSB0aGF0IHByb2JsZW0sIGFuZCB0aGUgSVNNUyB3b3JraW5nIGdyb3VwCitkZWNpZGVkIHRvIHR1bm5lbCBTTk1QIG92ZXIgU1NIIGFuZCBEVExTIHRvIG1ha2UgdXNlIGV4aXN0aW5nIHVzZXIgYW5kCithdXRoZW50aWNhdGlvbiBpbmZyYXN0cnVjdHVyZXMuCisuU1MgU05NUHYzIFVTTSBVc2VycworVG8gdXNlIHRoZSBVU00gYmFzZWQgU05NUHYzLXNwZWNpZmljIHVzZXJzLCB5b3UnbGwgbmVlZCB0byBjcmVhdGUKK3RoZW0uICBJdCBpcyByZWNvbW1lbmRlZCB5b3UKKy5CICJ1c2UgdGhlIG5ldC1zbm1wLWNvbmZpZyBjb21tYW5kIgordG8gZG8gdGhpcywgYnV0IHlvdSBjYW4gYWxzbyBkbyBpdCBieSBkaXJlY3RseSBzcGVjaWZ5aW5nIGNyZWF0ZVVzZXIKK2RpcmVjdGl2ZXMgeW91cnNlbGYgaW5zdGVhZDoKIC5JUCAiY3JlYXRlVXNlciBbLWUgRU5HSU5FSURdIHVzZXJuYW1lIChNRDV8U0hBKSBhdXRocGFzc3BocmFzZSBbREVTfEFFU10gW3ByaXZwYXNzcGhyYXNlXSIKIC5JUAogTUQ1IGFuZCBTSEEgYXJlIHRoZSBhdXRoZW50aWNhdGlvbiB0eXBlcyB0byB1c2UuICBERVMgYW5kIEFFUyBhcmUgdGhlCkBAIC0xNzcsMTIgKzE4NSw0MyBAQAogc3VwcG9ydGVkIGFsZ29yaXRobXMpLiAgTWFzdGVyIGVuY3J5cHRpb24ga2V5cywgdGhvdWdoLCBuZWVkIHRvIGJlIHRoZQogbGVuZ3RoIHJlcXVpcmVkIGJ5IHRoZSBhdXRoZW50aWNhdGlvbiBhbGdvcml0aG0gbm90IHRoZSBsZW5ndGgKIHJlcXVpcmVkIGJ5IHRoZSBlbmNyeXB0aW5nIGFsZ29yaXRobSAoTUQ1OiAxNiBieXRlcywgU0hBOiAyMCBieXRlcykuCisuU1MgU1NIIFN1cHBvcnQKK1RvIHVzZSBTU0gsIHlvdSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSBzc2hkIHRvIGludm9rZSBzc2h0b3NubXAgYXMgd2VsbAorYXMgY29uZmlndXJlIHRoZSBhY2Nlc3MgY29udHJvbCBzZXR0aW5ncyB0byBhbGxvdyBhY2Nlc3MgdGhyb3VnaCB0aGUKK3RzbSBzZWN1cml0eSBtb2RlbCB1c2luZyB0aGUgdXNlciBuYW1lIHByb3ZpZGVkIHRvIHNubXBkIGJ5IHRoZSBzc2gKK3RyYW5zcG9ydC4KKy5TUyBEVExTIFN1cHBvcnQKK0ZvciBEVExTLAorLkIgc25tcGQKK3dpbGwgbmVlZCB0byBiZSBjb25maWd1cmVkIHdpdGggaXQncyBvd24gWC41MDkgY2VydGlmaWNhdGUgYXMgd2VsbCBhcwordGhlIGNlcnRpZmljYXRlcyBvZiB0aGUgY2xpZW50IHVzZXJzIHRvIGJlIGFsbG93ZWQgdG8gY29ubmVjdCB0byB0aGUKK2FnZW50LiAgVGhlIGFjY2VzcyBjb250cm9sIHdpbGwgbmVlZCB0byBiZSBzZXQgdXAgYXMgd2VsbCB0byBhbGxvdworYWNjZXNzIHRocm91Z2ggdGhlCisuSSB0c20KK3NlY3VyaXR5IG1vZGVsLiAgVGhlIENvbW1vbk5hbWUgb2YgdGhlIFN1YmplY3QgZnJvbSB0aGUgWC41MDkKK2NlcnRpZmljYXRlIHdpbGwgYmUgcGFzc2VkIHRvIHNubXBkIGFzIHRoZSBTTk1QdjMgdXNlcm5hbWUgdG8gdXNlLgorU2VlIHRoZSBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy93aWtpL2luZGV4LnBocC9Vc2luZ19EVExTIHdlYiBwYWdlIGZvcgorbW9yZSBkZXRhaWxlZCBpbnN0cnVjdGlvbnMgZm9yIHNldHRpbmcgdXAgRFRMUy4KKy5JUCAiZGVmWDUwOVNlcnZlclB1YiBGSUxFIgorLklQICJkZWZYNTA5U2VydmVyUHJpdiBGSUxFIgorVGhlc2UgdHdvIGRpcmVjdGl2ZXMgc3BlY2lmeSB0aGUgcHVibGljIGFuZCBwcml2YXRlIGtleSBmaWxlcyBmb3IgdGhlCitjZXJ0aWZpY2F0ZSB0aGF0CisuQiBzbm1wZAorc2hvdWxkIHByZXNlbnQgdG8gaW5jb21pbmcgY29ubmVjdGlvbnMuCisuSVAgImRlZlg1MDlDbGllbnRDZXJ0cyBGSUxFIgorVGhpcyBkaXJlY3RpdmUgc3BlY2lmaWVzIGEgZmlsZSBjb250YWluaW5nIGFsbCBvZiB0aGUgcHVibGljIGtleXMgKG9yCitDQXMgb2YgcHVibGljIGtleXMpIGZvciBjbGllbnRzIHRvIGNvbm5lY3QgdGhlIHNlcnZlciB3aXRoLgorLlNIIEFDQ0VTUyBDT05UUk9MCisuQiBzbm1wZAorc3VwcG9ydHMgdGhlIFZpZXctQmFzZWQgQWNjZXNzIENvbnRyb2wgTW9kZWwgKFZBQ00pIGFzIGRlZmluZWQgaW4gUkZDCisyNTc1LCB0byBjb250cm9sIHdobyBjYW4gcmV0cmlldmUgb3IgdXBkYXRlIGluZm9ybWF0aW9uLiAgVG8gdGhpcyBlbmQsCitpdCByZWNvZ25pemVzIHZhcmlvdXMgZGlyZWN0aXZlcyByZWxhdGluZyB0byBhY2Nlc3MgY29udHJvbC4KIC5TUyBUcmFkaXRpb25hbCBBY2Nlc3MgQ29udHJvbAogTW9zdCBzaW1wbGUgYWNjZXNzIGNvbnRyb2wgcmVxdWlyZW1lbnRzIGNhbiBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlCiBkaXJlY3RpdmVzIFxmSXJvdXNlclxmUi9cZklyd3VzZXJcZlIgKGZvciBTTk1QdjMpIG9yCiBcZklyb2NvbW11bml0eVxmUi9cZklyd2NvbW11bml0eVxmUiAoZm9yIFNOTVB2MSBvciBTTk1QdjJjKS4KLS5JUCAicm91c2VyIFVTRVIgW25vYXV0aHxhdXRofHByaXYgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCi0uSVAgInJ3dXNlciBVU0VSIFtub2F1dGh8YXV0aHxwcml2IFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgorLklQICJyb3VzZXIgWy1zIFNFQ01PREVMXSBVU0VSIFtub2F1dGh8YXV0aHxwcml2IFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgorLklQICJyd3VzZXIgWy1zIFNFQ01PREVMXSAgVVNFUiBbbm9hdXRofGF1dGh8cHJpdiBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKIHNwZWNpZnkgYW4gU05NUHYzIHVzZXIgdGhhdCB3aWxsIGJlIGFsbG93ZWQgcmVhZC1vbmx5IChHRVQgYW5kIEdFVE5FWFQpCiBvciByZWFkLXdyaXRlIChHRVQsIEdFVE5FWFQgYW5kIFNFVCkgYWNjZXNzIHJlc3BlY3RpdmVseS4KIEJ5IGRlZmF1bHQsIHRoaXMgd2lsbCBwcm92aWRlIGFjY2VzcyB0byB0aGUgZnVsbCBPSUQgdHJlZSBmb3IgYXV0aGVudGljYXRlZApAQCAtMTk0LDYgKzIzMywxMyBAQAogQW4gb3B0aW9uYWwgY29udGV4dCBjYW4gYWxzbyBiZSBzcGVjaWZpZWQsIG9yICJjb250ZXh0KiIgdG8gZGVub3RlIGEgY29udGV4dAogcHJlZml4LiAgSWYgbm8gY29udGV4dCBmaWVsZCBpcyBzcGVjaWZpZWQgKG9yIHRoZSB0b2tlbiAiKiIgaXMgdXNlZCksIHRoZQogZGlyZWN0aXZlIHdpbGwgbWF0Y2ggYWxsIHBvc3NpYmxlIGNvbnRleHRzLgorLklQCitJZiBTRUNNT0RFTCBpcyBzcGVjaWZpZWQgdGhlbiBpdCB3aWxsIGJlIHRoZSBzZWN1cml0eSBtb2RlbCByZXF1aXJlZAorZm9yIHRoYXQgdXNlciAobm90ZSB0aGF0IGlkZW50aWNhbCB1c2VyIG5hbWVzIG1heSBjb21lIGluIG92ZXIKK2RpZmZlcmVudCBzZWN1cml0eSBtb2RlbHMgYW5kIHdpbGwgYmUgYXBwcm9wcmlhdGVseSBzZXBhcmF0ZWQgdmlhIHRoZQorYWNjZXNzIGNvbnRyb2wgc2V0dGluZ3MpLiAgVGhlIGRlZmF1bHQgc2VjdXJpdHkgbW9kZWwgaXMgInVzbSIgYW5kIHRoZQorb3RoZXIgY29tbW9uIHNlY3VyaXR5IG1vZGVscyBhcmUgbGlrZWx5ICJ0c20iIHdoZW4gdXNpbmcgU1NIIG9yIERUTFMKK3N1cHBvcnQgYW5kICJrc20iIGlmIHRoZSBLZXJiZXJvcyBzdXBwb3J0IGhhcyBiZWVuIGNvbXBpbGVkIGluLgogLklQICJyb2NvbW11bml0eSBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKIC5JUCAicndjb21tdW5pdHkgQ09NTVVOSVRZIFtTT1VSQ0UgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCiBzcGVjaWZ5IGFuIFNOTVB2MSBvciBTTk1QdjJjIGNvbW11bml0eSB0aGF0IHdpbGwgYmUgYWxsb3dlZCByZWFkLW9ubHkKQEAgLTI0OCw3ICsyOTQsNyBAQAogZGVmYXVsdCBjb250ZXh0ICgiIikgd2lsbCBiZSB1c2VkLgogLklQICJjb20yc2VjdW5peCBbLUNuIENPTlRFWFRdIFNFQ05BTUUgU09DS1BBVEggQ09NTVVOSVRZIgogaXMgdGhlIFVuaXggZG9tYWluIHNvY2tldHMgdmVyc2lvbiBvZiBcZkljb20yc2VjXGZSLgotLklQICJncm91cCBHUk9VUCB7djF8djJjfHVzbX0gU0VDTkFNRSIKKy5JUCAiZ3JvdXAgR1JPVVAge3YxfHYyY3x1c218dHNtfGtzbX0gU0VDTkFNRSIKIG1hcHMgYSBzZWN1cml0eSBuYW1lIChpbiB0aGUgc3BlY2lmaWVkIHNlY3VyaXR5IG1vZGVsKSBpbnRvCiBhIG5hbWVkIGdyb3VwLiAgU2V2ZXJhbCBcZklncm91cFxmUiBkaXJlY3RpdmVzIGNhbiBzcGVjaWZ5IHRoZQogc2FtZSBncm91cCBuYW1lLCBhbGxvd2luZyBhIHNpbmdsZSBhY2Nlc3Mgc2V0dGluZyB0byBhcHBseSB0byBzZXZlcmFsIApAQCAtMjkzLDcgKzMzOSw3IEBACiAuSVAKIE5vdGUgdGhhdCBhIG1hc2sgbG9uZ2VyIHRoYW4gOCBiaXRzIG11c3QgdXNlICc6JyB0byBzZXBhcmF0ZSB0aGUgaW5kaXZpZHVhbAogb2N0ZXRzLgotLklQICJhY2Nlc3MgR1JPVVAgQ09OVEVYVCB7YW55fHYxfHYyY3x1c219IExFVkVMIFBSRUZYIFJFQUQgV1JJVEUgTk9USUZZIgorLklQICJhY2Nlc3MgR1JPVVAgQ09OVEVYVCB7YW55fHYxfHYyY3x1c218dHNtfGtzbX0gTEVWRUwgUFJFRlggUkVBRCBXUklURSBOT1RJRlkiCiBtYXBzIGZyb20gYSBncm91cCBvZiB1c2Vycy9jb21tdW5pdGllcyAod2l0aCBhIHBhcnRpY3VsYXIgc2VjdXJpdHkgbW9kZWwKIGFuZCBtaW5pbXVtIHNlY3VyaXR5IGxldmVsLCBhbmQgaW4gYSBzcGVjaWZpYyBjb250ZXh0KSB0byBvbmUgb2YgdGhyZWUgdmlld3MsCiBkZXBlbmRpbmcgb24gdGhlIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgpAQCAtMzgwLDYgKzQyNiwxOCBAQAogaW50ZXJmYWNlcyB3aGVyZSB0aGUgYWdlbnQgZmFpbHMgdG8gZGV0ZXJtaW5lIHRoaXMgaW5mb3JtYXRpb24gY29ycmVjdGx5LgogVFlQRSBpcyBhIHR5cGUgdmFsdWUgYXMgZ2l2ZW4gaW4gdGhlIElBTkFpZlR5cGUtTUlCLAogYW5kIGNhbiBiZSBzcGVjaWZpZWQgbnVtZXJpY2FsbHkgb3IgYnkgbmFtZSAoYXNzdW1pbmcgdGhpcyBNSUIgaXMgbG9hZGVkKS4KKy5JUCAiaW50ZXJmYWNlX2ZhZGVvdXQgVElNRU9VVCIKK3NwZWNpZmllcywgZm9yIGhvdyBsb25nIHRoZSBhZ2VudCBrZWVwcyBlbnRyaWVzIGluIFxmQ2lmVGFibGVcZlIgYWZ0ZXIKK2FwcHJvcHJpYXRlIGludGVyZmFjZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSBzeXN0ZW0gKHR5cGljYWxseSB2YXJpb3VzIHBwcCwKK3RhcCBvciB0dW4gaW50ZXJmYWNlcykuIFRpbWVvdXQgdmFsdWUgaXMgaW4gc2Vjb25kcy4gRGVmYXVsdCB2YWx1ZSBpcyAzMDAKKyg9NSBtaW51dGVzKS4KKy5JUCAiaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIHllcyIKK2NhbiBiZSB1c2VkIHRvIHJlbW92ZSBhbHJlYWR5IGV4aXN0aW5nIGVudHJpZXMgaW4gXGZDaWZUYWJsZVxmUiB3aGVuIGFuCitpbnRlcmZhY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFwcGVhcnMgb24gdGhlIHN5c3RlbS4gRS5nLiB3aGVuIHBwcDAgaW50ZXJmYWNlCitpcyByZW1vdmVkLCBpdCBpcyBzdGlsbCBsaXN0ZWQgaW4gdGhlIHRhYmxlIGZvciBcZklpbnRlcmZhY2VfZmFkZW91dFxmUgorc2Vjb25kcy4gVGhpcyBvcHRpb24gZW5zdXJlcywgdGhhdCB0aGUgb2xkIHBwcDAgaW50ZXJmYWNlIGlzIHJlbW92ZWQgZXZlbgorYmVmb3JlIHRoZSBcZklpbnRlcmZhY2VfZmFkZW91dFxmUiB0aW1lb3VyIHdoZW4gbmV3IHBwcDAgKHdpdGggZGlmZmVyZW50CitcZkNpZkluZGV4XGZSKSBzaG93cyB1cC4KIC5TUyBIb3N0IFJlc291cmNlcyBHcm91cAogVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUKIFxmSWhvc3RcZlIgbW9kdWxlICh3aGljaCBpcyBub3cgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZCAKQEAgLTY2OCw2ICs3MjYsMTIgQEAKIG9iamVjdCAoXGZDc25tcEVuYWJsZUF1dGhlblRyYXBzLjBcZlIpIGlzIHJlYWQtd3JpdGUsIGJ1dCBzcGVjaWZ5aW5nCiB0aGlzIGRpcmVjdGl2ZSBtYWtlcyB0aGlzIG9iamVjdCByZWFkLW9ubHksIGFuZCBhdHRlbXB0cyB0byBzZXQgdGhlCiB2YWx1ZSB2aWEgU0VUIHJlcXVlc3RzIHdpbGwgcmVzdWx0IGluIGEgXGZJbm90V3JpdGFibGVcZlIgZXJyb3IgcmVzcG9uc2UuCisuUkUKKy5JUCAidjF0cmFwYWRkcmVzcyBIT1NUIgorZGVmaW5lcyB0aGUgYWdlbnQgYWRkcmVzcywgd2hpY2ggaXMgaW5zZXJ0ZWQgaW50byBTTk1QdjEgVFJBUHMuIEFyYml0cmFyeSBsb2NhbCAKK0lQdjQgYWRkcmVzcyBpcyBjaG9zZW4gaWYgdGhpcyBvcHRpb24gaXMgb21taXRlZC4gVGhpcyBvcHRpb24gaXMgdXNlZnVsIG1haW5seSAKK3doZW4gdGhlIGFnZW50IGlzIHZpc2libGUgZnJvbSBvdXRzaWRlIHdvcmxkIGJ5IHNwZWNpZmljIGFkZHJlc3Mgb25seSAoZS5nLiAKK2JlY2F1c2Ugb2YgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIG9yIGZpcmV3YWxsKS4KIC5TUyAiRGlzTWFuIEV2ZW50IE1JQiIKIFRoZSBwcmV2aW91cyBkaXJlY3RpdmVzIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB3aGVyZSB0cmFwcyBzaG91bGQKIGJlIHNlbnQsIGJ1dCBhcmUgbm90IGNvbmNlcm5lZCB3aXRoIFxmSXdoZW5cZlIgdG8gc2VuZCBzdWNoIHRyYXBzCmRpZmYgLS1naXQgYS9tYW4vc25tcG5ldHN0YXQuMS5kZWYgYi9tYW4vc25tcG5ldHN0YXQuMS5kZWYKaW5kZXggOGUxNDUwYS4uOTJjZmVlNCAxMDA2NDQKLS0tIGEvbWFuL3NubXBuZXRzdGF0LjEuZGVmCisrKyBiL21hbi9zbm1wbmV0c3RhdC4xLmRlZgpAQCAtOTEsNiArOTEsMTIgQEAKIHRyYWZmaWMgb24gdGhlIGNvbmZpZ3VyZWQgbmV0d29yayBpbnRlcmZhY2VzLgogVGhlIGZvdXJ0aCBmb3JtIGRpc3BsYXlzIHN0YXRpc3RpY3MgYWJvdXQgdGhlIG5hbWVkIHByb3RvY29sLgogLlBQCisuQiBzbm1wbmV0c3RhdAord2lsbCBpc3N1ZSBHRVRCVUxLIHJlcXVlc3RzIHRvIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbgoraWYgYXQgbGVhc3QgcHJvdG9jb2wgdmVyc2lvbgorLkkgdjIKK2lzIHVzZWQuCisuUFAKIEFHRU5UIGlkZW50aWZpZXMgYSB0YXJnZXQgU05NUCBhZ2VudCwgd2hpY2ggaXMKIGluc3RydW1lbnRlZCB0byBtb25pdG9yIHRoZSBnaXZlbiBvYmplY3RzLgogQXQgaXRzIHNpbXBsZXN0LCB0aGUgQUdFTlQgc3BlY2lmaWNhdGlvbiB3aWxsCkBAIC0xNjMsNiArMTY5LDExIEBACiBpcyBhbHNvIHByZXNlbnQsIHNob3cgcGVyLXByb3RvY29sIHJvdXRpbmcgc3RhdGlzdGljcyBpbnN0ZWFkIG9mIAogdGhlIHJvdXRpbmcgdGFibGVzLgogLlBQCisuQkkgXC1DUiAiIHJlcGVhdGVycyIKK0ZvciBHRVRCVUxLIHJlcXVlc3RzLAorLkkgcmVwZWF0ZXJzCitzcGVjaWZpZXMgdGhlIG1heC1yZXBlYXRlcnMgdmFsdWUgdG8gdXNlLgorLlBQCiBXaGVuICBzbm1wbmV0c3RhdCBpcyBpbnZva2VkIHdpdGggYW4gaW50ZXJ2YWwgYXJndW1lbnQsIGl0CiBkaXNwbGF5cyBhIHJ1bm5pbmcgY291bnQgb2Ygc3RhdGlzdGljcyByZWxhdGVkIHRvICBuZXR3b3JrCiBpbnRlcmZhY2VzLgpkaWZmIC0tZ2l0IGEvbWFuL3NubXB0cmFwZC44LmRlZiBiL21hbi9zbm1wdHJhcGQuOC5kZWYKaW5kZXggMjlkNTY1YS4uYjYyNDdiZiAxMDA2NDQKLS0tIGEvbWFuL3NubXB0cmFwZC44LmRlZgorKysgYi9tYW4vc25tcHRyYXBkLjguZGVmCkBAIC01MSw3ICs1MSw4IEBACiAuQkkgIi1jIiAiIEZJTEUiCiBSZWFkIAogLkkgRklMRQotYXMgYSBjb25maWd1cmF0aW9uIGZpbGUuCithcyBhIGNvbmZpZ3VyYXRpb24gZmlsZQorKG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBmaWxlcykuCiAuVFAKIC5CIC1DCiBEbyBub3QgcmVhZCBhbnkgY29uZmlndXJhdGlvbiBmaWxlcyBleGNlcHQgdGhlIG9uZSBvcHRpb25hbGx5IHNwZWNpZmllZCBieSB0aGUgCkBAIC02OCwxMSArNjksNiBAQAogLklSIEFMTAogZm9yIGV4dHJlbWVseSB2ZXJib3NlIG91dHB1dC4KIC5UUAotLkIgLWUKLVByaW50IGV2ZW50IG51bWJlcnMgKHJpc2luZy9mYWxsaW5nIGFsYXJtIGV0Yy4pIGZyb20gdGhlIChvYnNvbGV0ZSkgTTJNLU1JQi4KLS5icgotVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBkdWUgY291cnNlLgotLlRQCiAuQiAtZgogRG8gbm90IGZvcmsoKSBmcm9tIHRoZSBjYWxsaW5nIHNoZWxsLgogLlRQCmRpZmYgLS1naXQgYS9tYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYgYi9tYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYKaW5kZXggMzJlM2FmNS4uZGNjMDE3ZCAxMDA2NDQKLS0tIGEvbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmCisrKyBiL21hbi9zbm1wdHJhcGQuY29uZi41LmRlZgpAQCAtMSw0ICsxLDQgQEAKLS5USCBTTk1QVFJBUEQuQ09ORiA1ICIyNSBTZXAgMjAwNiIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QVFJBUEQuQ09ORiA1ICIxOSBGZWIgMjAwOSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wdHJhcGQuY29uZiAtIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIE5ldC1TTk1QIG5vdGlmaWNhdGlvbiByZWNlaXZlcgogLlNIIERFU0NSSVBUSU9OCkBAIC0xNTUsMTMgKzE1NSwxOCBAQAogc2hvdWxkIGJlIGRpc3BsYXllZC4KIFNlZSB0aGUgc2VjdGlvbiBPVVRQVVQgT1BUSU9OUyBpbiB0aGUKIFxmSXNubXBjbWQoMSlcZlIgbWFudWFsIHBhZ2UgZm9yIGRldGFpbHMuCi0uSVAgInByaW50RXZlbnROdW1iZXJzIHllcyIKLWVuYWJsZXMgc3BlY2lhbGlzZWQgbG9nZ2luZyBvZiBldmVudC1yZWxhdGVkIG5vdGlmaWNhdGlvbnMgZnJvbQotdGhlIChsb25nIG9ic29sZXRlKSBNMk0tTUlCLgotLlwiCi0uXCIgWFhYIC0gQ0hFQ0sgRVhBQ1RMWSBXSElDSCBUUkFQUwotLlwiIFhYWCAtIFRISVMgRkVFTFMgT0JTT0xFVEUgVE8gTUUhCi0uXCIKKy5TSCBNeVNRTCBMb2dnaW5nCitUaGVyZSBhcmUgdHdvIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgd29yayB0b2dldGhlciB0byBjb250cm9sCit3aGVuIHF1ZXVlZCB0cmFwcyBhcmUgbG9nZ2VkIHRvIHRoZSBNeVNRTCBkYXRhYmFzZS4gQSBub24temVybwordmFsdWUgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIHNxbFNhdmVJbnRlcnZhbCB0byBlbmFibGUgTXlTUUwgbG9nZ2luZy4KKy5SRQorLklQICJzcWxNYXhRdWV1ZSBtYXgiCitzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRyYXBzIHRvIHF1ZXVlIGJlZm9yZSBhIGZvcmNlZCBmbHVzaAordG8gdGhlIE15U1FMIGRhdGFiYXNlLgorLlJFCisuSVAgInNxbFNhdmVJbnRlcnZhbCBzZWNvbmRzIgorc3BlY2lmaWVkIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuIHBlcmlvZGljIHF1ZXVlIGZsdXNoZXMuCitBIHZhbHVlIG9mIDAgZm9yIHdpbGwgZGlzYWJsZSBNeVNRTCBsb2dnaW5nLgogLlNIIE5PVElGSUNBVElPTiBQUk9DRVNTSU5HCiBBcyB3ZWxsIGFzIGxvZ2dpbmcgaW5jb21pbmcgbm90aWZpY2F0aW9ucywgdGhleSBjYW4gYWxzbwogYmUgZm9yd2FyZGVkIG9uIHRvIGFub3RoZXIgbm90aWZpY2F0aW9uIHJlY2VpdmVyLCBvciBwYXNzZWQKZGlmZiAtLWdpdCBhL21hbi9zbm1wd2Fsay4xLmRlZiBiL21hbi9zbm1wd2Fsay4xLmRlZgppbmRleCAwYzU1ZDcyLi42ZTE1MjAxIDEwMDY0NAotLS0gYS9tYW4vc25tcHdhbGsuMS5kZWYKKysrIGIvbWFuL3NubXB3YWxrLjEuZGVmCkBAIC0yMyw3ICsyMyw3IEBACiAuXCIgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUwogLlwiIFNPRlRXQVJFLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QV0FMSyAxICIyMyBBdWcgMjAwNCIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QV0FMSyAxICIyOCBNYXkgMjAwNyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wd2FsayAtIHJldHJpZXZlIGEgc3VidHJlZSBvZiBtYW5hZ2VtZW50IHZhbHVlcyB1c2luZyBTTk1QIEdFVE5FWFQgcmVxdWVzdHMKIC5TSCBTWU5PUFNJUwpAQCAtNjcsNiArNjcsMTEgQEAKIC5CIC1DYwogdG8gdHVybiBvZmYgdGhpcyBjaGVjay4KIC5UUAorLkIgLUNFIHtPSUR9CitFbmQgdGhlIHdhbGsgYXQgdGhlIHNwZWNpZmllZCBPSUQsIHJhdGhlciB0aGFuIGEgc2ltcGxlIHN1YnRyZWUuCitUaGlzIGNhbiBiZSB1c2VkIHRvIHdhbGsgYSBwYXJ0aWFsIHN1YnRyZWUsIHNlbGVjdGVkIGNvbHVtbnMgb2YKK2EgdGFibGUsIG9yIGV2ZW4gdHdvIG9yIG1vcmUgdGFibGVzIHdpdGhpbiBhIHNpbmdsZSBjb21tYW5kLgorLlRQCiAuQiAtQ2kKIEluY2x1ZGUgdGhlIGdpdmVuIE9JRCBpbiB0aGUgc2VhcmNoIHJhbmdlLiAgTm9ybWFsbHkKIC5CIHNubXB3YWxrCkBAIC0xMDAsMTIgKzEwNSwxMiBAQAogdGFrZXMgdGhlIGNvbW1vbiBvcHRpb25zIGRlc2NyaWJlZCBpbiB0aGUgCiAuSSBzbm1wY21kKDEpCiBtYW51YWwgcGFnZS4KKy5TSCBFWEFNUExFUwogLmJyCiBOb3RlIHRoYXQKIC5CIHNubXBidWxrZ2V0CiBSRVFVSVJFUyAgYW4gYXJndW1lbnQgc3BlY2lmeWluZyB0aGUgYWdlbnQgdG8gcXVlcnkKIGFuZCBhdCBtb3N0IG9uZSBPSUQgYXJndW1lbnQsIGFzIGRlc2NyaWJlZCB0aGVyZS4KLS5TSCBFWEFNUExFCiBUaGUgY29tbWFuZDoKIC5QUAogc25tcHdhbGsgLU9zIC1jIHB1YmxpYyAtdiAxIHpldXMgc3lzdGVtCkBAIC0xMjUsNSArMTMwLDEzIEBACiBzeXNMb2NhdGlvbi4wID0gU1RSSU5HOiAiIgogLmJyCiBzeXNTZXJ2aWNlcy4wID0gSU5URUdFUjogNzIKKy5icgorKHBsdXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBzeXNPUlRhYmxlKS4KKworVGhlIGNvbW1hbmQ6CisuUFAKK3NubXB3YWxrIC1PcyAtYyBwdWJsaWMgLXYgMSAtQ0Ugc3lzT1JUYWJsZSB6ZXVzIHN5c3RlbQorLlBQCit3aWxsIHJldHJpZXZlIHRoZSBzY2FsYXIgdmFsdWVzLCBidXQgb21pdCB0aGUgc3lzT1JUYWJsZS4KIC5TSCAiU0VFIEFMU08iCiBzbm1wY21kKDEpLCBzbm1wYnVsa3dhbGsoMSksIHZhcmlhYmxlcyg1KS4KZGlmZiAtLWdpdCBhL21hbi92YXJiaW5kX2FwaS4zLmRlZiBiL21hbi92YXJiaW5kX2FwaS4zLmRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDYxYzc1Ci0tLSAvZGV2L251bGwKKysrIGIvbWFuL3ZhcmJpbmRfYXBpLjMuZGVmCkBAIC0wLDAgKzEsMTk2IEBACisuVEggVkFSQklORF9BUEkgMyAiMjAgQXByIDIwMDkiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuU0ggTkFNRQorc25tcF9wZHVfYWRkX3Zhciwgc25tcF92YXJsaXN0X2FkZF92YXIsIHNubXBfYWRkX251bGxfdmFyLAorc25tcF9jbG9uZV92YXJiaW5kLCBzbm1wX2ZyZWVfdmFyYmluZCwgc25tcF9mcmVlX3ZhciwKK3ByaW50X3ZhcmlhYmxlLCBmcHJpbnRfdmFyaWFibGUsIHNucHJpbnRfdmFyaWFibGUsCitwcmludF92YWx1ZSwgZnByaW50X3ZhbHVlLCBzbnByaW50X3ZhbHVlIC0gdmFyYmluZF9hcGkgZnVuY3Rpb25zCisuU0ggU1lOT1BTSVMKKy5CICNpbmNsdWRlIDxuZXQtc25tcC92YXJiaW5kX2FwaS5oPgorLlNTIENyZWF0aW9uCisuUFAKKy5CICJuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnNubXBfcGR1X2FkZF92YXJpYWJsZSgiCisuYnIKKy5CSSAiICAgICAgICBuZXRzbm1wX3BkdSAqIiBwZHUgIiwiCisuYnIKKy5CSSAiICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwiCisuYnIKKy5CSSAiICAgICAgICB1X2NoYXIgIiB0eXBlICIsIGNvbnN0IHZvaWQgKiIgdmFsdWUgIiwgc2l6ZV90ICIgbGVuICIpOyIKKy5icgorLkIgIm5ldHNubXBfdmFyaWFibGVfbGlzdCAqc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgiCisuYnIKKy5CSSAiICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFybGlzdCAiLCIKKy5icgorLkJJICIgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCIKKy5icgorLkJJICIgICAgICAgIHVfY2hhciAiIHR5cGUgIiwgY29uc3Qgdm9pZCAqIiB2YWx1ZSAiLCBzaXplX3QgIiBsZW4gIik7IgorLmJyCisuQiAibmV0c25tcF92YXJpYWJsZV9saXN0ICpzbm1wX2FkZF9udWxsX3ZhcigiCisuYnIKKy5CSSAiICAgICAgICBuZXRzbm1wX3BkdSAqIiBwZHUgIiwiCisuYnIKKy5CSSAiICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIik7IgorLlBQCisuQiAibmV0c25tcF92YXJpYWJsZV9saXN0ICpzbm1wX2Nsb25lX3ZhcmJpbmQoIgorLmJyCisuQkkgIiAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmxpc3QgIik7IgorLlNTIFNldHRpbmcgVmFsdWVzCisuUFAKKy5CSSAiaW50ICBzbm1wX3NldF92YXJfb2JqaWQoIG5ldHNubXBfdmFyaWFibGVfbGlzdCogIiB2YXJpYWJsZSAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiKTsiCisuYnIKKy5CSSAiaW50ICBzbm1wX3NldF92YXJfdmFsdWUoIG5ldHNubXBfdmFyaWFibGVfbGlzdCogIiB2YXJpYWJsZSAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqICIgdmFsdWUgIiwgc2l6ZV90ICIgdmFsbGVuICIpOyIKKy5icgorLkJJICJpbnQgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggbmV0c25tcF92YXJpYWJsZV9saXN0KiAiIHZhcmlhYmxlICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgIiB0eXBlICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICogIiB2YWx1ZSAiLCBzaXplX3QgIiB2YWxsZW4gIik7IgorLmJyCisuQkkgImludCAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIG5ldHNubXBfdmFyaWFibGVfbGlzdCogIiB2YXJpYWJsZSAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICIgdHlwZSAiLCBsb25nICIgdmFsdWUgIik7IgorLmJyCisuU1MgT3V0cHV0CisuUFAKKy5CSSAidm9pZCAgcHJpbnRfdmFyaWFibGUoY29uc3Qgb2lkICoiICJvYmppZCIgIiwgc2l6ZV90ICIgIm9iamlkbGVuIiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgIik7IgorLmJyCisuQkkgInZvaWQgZnByaW50X3ZhcmlhYmxlKEZJTEUgKiIgZnAgIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSAiKTsiCisuYnIKKy5CSSAiaW50IHNucHJpbnRfdmFyaWFibGUoY2hhciAqIiAiYnVmIiAiLCBzaXplX3QgIiAibGVuIiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICIpOyIKKy5QUAorLkJJICJ2b2lkICBwcmludF92YWx1ZShjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICIpOyIKKy5icgorLkJJICJ2b2lkIGZwcmludF92YWx1ZShGSUxFICoiIGZwICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgIik7IgorLmJyCisuQkkgImludCBzbnByaW50X3ZhbHVlKGNoYXIgKiIgYnVmICIsIHNpemVfdCAiICJsZW4iICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgIik7IgorLmJyCisuYnIKKy5TUyBEZWxldGlvbgorLlBQCisuQkkgInZvaWQgc25tcF9mcmVlX3ZhciggICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSAiKTsiCisuYnIKKy5CSSAidm9pZCBzbm1wX2ZyZWVfdmFyYmluZCggbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlcyAiKTsiCisuYnIKKy5QUAorLlNIIERFU0NSSVBUSU9OCitUaGUgZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCB2YXJpYWJsZSBiaW5kaW5ncyBmYWxsIGludG8gZm91ciBncm91cHMgLSAKK2RlYWxpbmcgd2l0aCB0aGUgY3JlYXRpb24sIHNldHRpbmcgb2YgdmFsdWVzLCBvdXRwdXQgYW5kIGRlbGV0aW9uIG9mIHZhcmJpbmRzLgorLlNTIENyZWF0aW9uCisuQiBzbm1wX3BkdV9hZGRfdmFyaWFibGUKK3dpbGwgY3JlYXRlIGEgbmV3IHZhcmJpbmQgc3RydWN0dXJlLCBpbml0aWFsaXNlZCB3aXRoIHRoZSBuYW1lICgKKy5JUiBvYmppZCAiLCAiIG9iamlkbGVuCispLCBzeW50YXggKAorLkkgdHlwZQorKSBhbmQgdmFsdWUgKAorLkkgdmFsdWUgIiwgIiBsZW4KKykgcHJvdmlkZWQuCitUaGlzIHZhcmJpbmQgaXMgdGhlbiBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSB2YXJiaW5kIGxpc3QgaW4KK3RoZSBnaXZlbiBQRFUuCisuUFAKKy5CIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUKK2lzIHNpbWlsYXIsIGJ1dCBhcHBlbmRzIHRoZSBuZXcgdmFyYmluZCB0byB0aGUgZW5kIG9mIHRoZQordmFyYmluZCBsaXN0IHByb3ZpZGVkLgorV2hlbiBhZGRpbmcgdGhlIGZpcnN0IHZhcmJpbmQgdG8gYW4gZW1wdHkgbGlzdCwgc2ltcGx5CitwYXNzIHRoZSBhZGRyZXNzIG9mIHRoZSBoZWFkIG9mIHRoZSBsaXN0OgorLklQCisiW0luc2VydCBleGFtcGxlIGNvZGUgaGVyZV0iCisuUFAKK0luIGJvdGggY2FzZXMsIHRoZSByb3V0aW5lIHdpbGwgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbmV3Cit2YXJiaW5kIHN0cnVjdHVyZSAob3IgTlVMTCBpZiB0aGUgdmFyYmluZCBjcmVhdGlvbiBmYWlscykuCisuUFAKKy5CIHNubXBfYWRkX251bGxfdmFyCitpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGFkZCBhbiBlbXB0eSB2YXJiaW5kIHRvIHRoZSBQRFUuCit3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSB0aGUgTlVMTCB2YWx1ZSBleHBsaWNpdGx5LgorVGhpcyBpcyB0aGUgbm9ybWFsIG1lY2hhbmlzbSBmb3IgY29uc3RydWN0aW5nIGEgR0VUIChvciBzaW1pbGFyKQoraW5mb3JtYXRpb24gcmV0cmlldmFsIHJlcXVlc3QuCisuYnIKK0FnYWluLCB0aGlzIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgdmFyYmluZCwgb3IgTlVMTC4KKy5QUAorLkIgc25tcF9jbG9uZV92YXJiaW5kCitjcmVhdGVzIGEgY29weSBvZiBlYWNoIHZhcmJpbmQgaW4gdGhlIHNwZWNpZmllZCBsaXN0LAorcmV0dXJuaW5nIGEgcG9pbnRlciB0byB0aGUgaGVhZCBvZiB0aGUgbmV3IGxpc3QKKyhvciBOVUxMIGlmIHRoZSBjbG9uaW5nIGZhaWxzKS4KKy5icgorLlNTIFNldHRpbmcgb2YgdmFsdWVzCisuQiBzbm1wX3NldF92YXJfb2JqaWQKK3NldHMgdGhlIG5hbWUgb2YgdGhlIHZhcmJpbmQgc3RydWN0dXJlIHRvIHRoZSBzcGVjaWZpZWQgT0lELgorLmJyCisuQiBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUKK3NldHMgdGhlIHN5bnRheCB0eXBlIGFuZCB2YWx1ZSBvZiB0aGUgdmFyYmluZCBzdHJ1Y3R1cmUuCisuYnIKKy5CIHNubXBfc2V0X3Zhcl92YWx1ZQorc2V0cyB0aGUgdmFsdWUgb2YgdGhlIHZhcmJpbmQgc3RydWN0dXJlLCBsZWF2aW5nIHRoZSBzeW50YXggdHlwZSB1bmNoYW5nZWQuCisuYnIKKy5CIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyCitpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHNldCB0aGUgc3ludGF4IHR5cGUgYW5kIHZhbHVlIGZvcgorYSAzMi1iaXQgaW50ZWdlci1iYXNlZCB2YXJiaW5kLgorLlBQCitBbGwgZm91ciBvZiB0aGVzZSByZXR1cm4gMCBpZiB0aGUgYXNzaWdubWVudCBpcyBzdWNjZXNzZnVsLAorb3IgMSBpZiBpdCBpcyBub3QuCisuU1MgT3V0cHV0CisuQiBwcmludF92YXJpYWJsZQord2lsbCB0YWtlIGFuIG9iamVjdCBpZGVudGlmaWVyIChhcyByZXR1cm5lZCBieQorLkJSIHJlYWRfb2JqaWQgIiwgIiBzbm1wX3BhcnNlX29pZCAiIG9yICIgZ2V0X21vZHVsZV9ub2RlICkKK2FuZCBhbiBpbnN0YW5jZSBvZiBzdWNoIGEgdmFyaWFibGUsIGFuZCBwcmludHMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dAordGhlIHRleHR1YWwgZm9ybSBvZiB0aGUgb2JqZWN0IGlkZW50aWZpZXIgdG9nZXRoZXIgd2l0aCB0aGUgdmFsdWUKK29mIHRoZSB2YXJpYWJsZS4KKy5QUAorLkIgZnByaW50X3ZhcmlhYmxlCitkb2VzIHRoZSBzYW1lLCBidXQgcHJpbnRzIHRvIHRoZSBGSUxFIHBvaW50ZXIgc3BlY2lmaWVkIGJ5IHRoZSBpbml0aWFsCitwYXJhbWV0ZXIuCisuUFAKKy5CIHNucHJpbnRfdmFyaWFibGUKK3ByaW50cyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBpbnRvIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieQorLkkgYnVmCit3aGljaCBpcyBvZiBsZW5ndGgKKy5JUiBsZW4gLgorSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcHJpbnRlZCwgb3IgLTEgaWYgdGhlCitidWZmZXIgd2FzIG5vdCBsYXJnZSBlbm91Z2guICBJbiB0aGUgbGF0dGVyIGNhc2UsCisuSSBidWYKK3dpbGwgdHlwaWNhbGx5IGNvbnRhaW5lZCBhIHRydW5jYXRlZCB2ZXJzaW9uIG9mIHRoZSBpbmZvcm1hdGlvbiAoYnV0Cit0aGlzIGJlaGF2aW91ciBpcyBub3QgZ3VhcmFudGVlZCkuICBUaGlzIGZ1bmN0aW9uIHJlcGxhY2VzIHRoZQorb2Jzb2xldGUgZnVuY3Rpb24KKy5CUiBzcHJpbnRfdmFyaWFibGUgLgorLlBQCisuQlIgcHJpbnRfdmFsdWUgLAorLkJSIGZwcmludF92YWx1ZSAsCithbmQKKy5CIHNucHJpbnRfdmFsdWUKK2RvIHRoZSBzYW1lIGFzIHRoZSBlcXVpdmFsZW50CisuQiBwcmludF92YXJpYWJsZQorcm91dGluZXMsIGJ1dCBvbmx5IGRpc3BsYXlpbmcgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSwgd2l0aG91dCB0aGUKK2NvcnJlc3BvbmRpbmcgb2JqZWN0IGlkZW50aWZpZXIuCisuYnIKKy5TUyBEZWxldGlvbgorLkIgc25tcF9mcmVlX3ZhcgorcmVsZWFzZXMgYWxsIG1lbW9yeSB1c2VkIGJ5IHRoZSBnaXZlbiB2YXJiaW5kIHN0cnVjdHVyZS4KKy5icgorLkIgc25tcF9mcmVlX3ZhcmJpbmQKK3JlbGVhc2VzIGFsbCBtZW1vcnkgdXNlZCBieSBlYWNoIHZhcmJpbmQgc3RydWN0dXJlIGluIHRoZSB2YXJiaW5kIGxpc3QgcHJvdmlkZWQuCisuYnIKKy5TSCAiU0VFIEFMU08iCisuQlIgcGR1X2FwaSAiKDMpIgorLkJSIG1pYl9hcGkgIigzKSIKZGlmZiAtLWdpdCBhL21pYnMvRElTTUFOLUVWRU5ULU1JQi50eHQgYi9taWJzL0RJU01BTi1FVkVOVC1NSUIudHh0CmluZGV4IGJkZTFjZGIuLmYwMGM3Y2MgMTAwNjQ0Ci0tLSBhL21pYnMvRElTTUFOLUVWRU5ULU1JQi50eHQKKysrIGIvbWlicy9ESVNNQU4tRVZFTlQtTUlCLnR4dApAQCAtOCw3ICs4LDYgQEAKICAgICBURVhUVUFMLUNPTlZFTlRJT04sIFJvd1N0YXR1cywKICAgICBUcnV0aFZhbHVlICAgICAgICAgICAgICAgIEZST00gU05NUHYyLVRDCiAKLQogICAgIE1PRFVMRS1DT01QTElBTkNFLCBPQkpFQ1QtR1JPVVAsCiAgICAgTk9USUZJQ0FUSU9OLUdST1VQICAgICAgICAgICAgIEZST00gU05NUHYyLUNPTkYKICAgICBzeXNVcFRpbWUgICAgICAgICAgICAgICAgIEZST00gU05NUHYyLU1JQgpAQCAtNTgsNyArNTcsNiBAQAogICAgICAgICBwYXJ0aWN1bGFyIGVycm9yIGNvZGUgaGVyZSBkb2VzIG5vdCBpbXBseSB0aGF0IGFsbAogICAgICAgICBpbXBsZW1lbnRhdGlvbnMgYXJlIGNhcGFibGUgb2Ygc2Vuc2luZyB0aGF0IGVycm9yIGFuZAogCi0KICAgICAgICAgcmV0dXJuaW5nIHRoYXQgY29kZS4KIAogICAgICAgICBUaGUgc2Vjb25kIGdyb3VwLCBudW1iZXJlZCBncmVhdGVyIHRoYW4gMCwgYXJlIGNvcGllZApAQCAtNzgsMTYgKzc2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIG5vdCBhcyBleHBlY3RlZAogICAgICAgICBzYW1wbGVPdmVycnVuICAgICAgICAgICBhbm90aGVyIHNhbXBsZSBhdHRlbXB0IG9jY3VycmVkIGJlZm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcHJldmlvdXMgb25lIGNvbXBsZXRlZCIKLQogICAgIFNZTlRBWCAgICAgIElOVEVHRVIgeyBsb2NhbFJlc291cmNlTGFjaygtMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZERlc3RpbmF0aW9uKC0yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25VbnJlYWNoYWJsZSgtMyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vUmVzcG9uc2UoLTQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRUeXBlKC01KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlT3ZlcnJ1bigtNiksCi0KICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9FcnJvcigwKSwKLQogICAgICAgICAgICAgICAgICAgICAgICAgICB0b29CaWcoMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vU3VjaE5hbWUoMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZFZhbHVlKDMpLApAQCAtMTA4LDcgKzEwMyw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29uc2lzdGVudE5hbWUoMTgpIH0KIC0tCiAKLQogLS0gUmVzb3VyY2UgQ29udHJvbCBTZWN0aW9uCiAtLQogCkBAIC0xNTcsOCArMTUxLDYgQEAKICAgICAgICAgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aWxsIG5vdCBlbGltaW5hdGUgb3IgaW5oaWJpdCBleGlzdGluZwogICAgICAgICBzYW1wbGUgc3RhdGUgYnV0IGNvdWxkIHByZXZlbnQgYWxsb2NhdGlvbiBvZiBhZGRpdGlvbmFsIHN0YXRlCiAgICAgICAgIGluZm9ybWF0aW9uLiIKLQotCiAgICAgOjo9IHsgbXRlUmVzb3VyY2UgMiB9CiAKIG10ZVJlc291cmNlU2FtcGxlSW5zdGFuY2VzIE9CSkVDVC1UWVBFCkBAIC0yMDgsNyArMjAwLDYgQEAKICAgICAgICAgY29uZGl0aW9uIGhhcyBmYWlsZWQuICBUaGlzIGNvdW50cyBpbmRpdmlkdWFsbHkgZm9yIGVhY2gKICAgICAgICAgYXR0ZW1wdCBpbiBhIGdyb3VwIG9mIHRhcmdldHMgb3IgZWFjaCBhdHRlbXB0IGZvciBhCiAKLQogICAgICAgICB3aWxkY2FyZGVkIG9iamVjdC4iCiAgICAgOjo9IHsgbXRlVHJpZ2dlciAxIH0KIApAQCAtMjU3LDggKzI0OCw2IEBACiAgICBNQVgtQUNDRVNTICBub3QtYWNjZXNzaWJsZQogICAgU1RBVFVTICAgICAgY3VycmVudAogICAgREVTQ1JJUFRJT04KLQotCiAgICAgICAgICJUaGUgb3duZXIgb2YgdGhpcyBlbnRyeS4gVGhlIGV4YWN0IHNlbWFudGljcyBvZiB0aGlzCiAgICAgICAgIHN0cmluZyBhcmUgc3ViamVjdCB0byB0aGUgc2VjdXJpdHkgcG9saWN5IGRlZmluZWQgYnkgdGhlCiAgICAgICAgIHNlY3VyaXR5IGFkbWluaXN0cmF0b3IuIgpAQCAtMzA4LDcgKzI5Nyw2IEBACiAKICAgICAgICAgRm9yICd0aHJlc2hvbGQnIHRoZSB0ZXN0IHdvcmtzIGFzIGRlc2NyaWJlZCBiZWxvdyBmb3IKIAotCiAgICAgICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRTdGFydHVwLCBtdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nLCBhbmQKICAgICAgICAgbXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmcuCiAKQEAgLTM1OCw3ICszNDYsNiBAQAogICAgICAgICBpbnN0YW5jZSBwb3J0aW9uLCBpbiB3aGljaCBjYXNlIHRoZSB2YWx1ZSBpcyBvYnRhaW5lZAogICAgICAgICBhcyBpZiB3aXRoIGEgR2V0TmV4dCBmdW5jdGlvbiwgY2hlY2tpbmcgbXVsdGlwbGUgdmFsdWVzCiAKLQogICAgICAgICBpZiB0aGV5IGV4aXN0LiAgSWYgc3VjaCB3aWxkY2FyZGluZyBpcyBhcHBsaWVkLAogICAgICAgICBtdGVUcmlnZ2VyVmFsdWVJRFdpbGRjYXJkIG11c3QgYmUgJ3RydWUnIGFuZCBpZiBub3QgaXQgbXVzdAogICAgICAgICBiZSAnZmFsc2UnLgpAQCAtNDA4LDcgKzM5NSw2IEBACiAKICAgICAgICAgT3RoZXJ3aXNlIGFjY2VzcyByaWdodHMgYXJlIGNoZWNrZWQgYWNjb3JkaW5nIHRvIHRoZSBzZWN1cml0eQogCi0KICAgICAgICAgcGFyYW1ldGVycyByZXN1bHRpbmcgZnJvbSB0aGUgdGFnLiIKICAgICBERUZWQUwgeyAnJ0ggfQogICAgIDo6PSB7IG10ZVRyaWdnZXJFbnRyeSA4IH0KQEAgLTQ1Nyw4ICs0NDMsNiBAQAogICAgIFVOSVRTICAgICAgICJzZWNvbmRzIgogICAgIE1BWC1BQ0NFU1MgIHJlYWQtY3JlYXRlCiAgICAgU1RBVFVTICAgICAgY3VycmVudAotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAiVGhlIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmV0d2VlbiB0cmlnZ2VyIHNhbXBsZXMuICBUbwogICAgICAgICBlbmNvdXJhZ2UgY29uc2lzdGVuY3kgaW4gc2FtcGxpbmcsIHRoZSBpbnRlcnZhbCBpcyBtZWFzdXJlZApAQCAtNTA3LDggKzQ5MSw2IEBACiAgICAgICAgIEEgbGlzdCBvZiBvYmplY3RzIG1heSBhbHNvIGJlIGFkZGVkIGJhc2VkIG9uIHRoZSBldmVudCBvciBvbgogICAgICAgICB0aGUgdmFsdWUgb2YgbXRlVHJpZ2dlclRlc3QuCiAKLQotCiAgICAgICAgIEEgbGVuZ3RoIG9mIDAgaW5kaWNhdGVzIG5vIGFkZGl0aW9uYWwgb2JqZWN0cy4iCiAgICAgREVGVkFMIHsgJydIIH0KICAgICA6Oj0geyBtdGVUcmlnZ2VyRW50cnkgMTMgfQpAQCAtNTU3LDggKzUzOSw2IEBACiAgICAgSU5ERVggICAgICAgeyBtdGVPd25lciwgSU1QTElFRCBtdGVUcmlnZ2VyTmFtZSB9CiAgICAgOjo9IHsgbXRlVHJpZ2dlckRlbHRhVGFibGUgMSB9CiAKLQotCiBNdGVUcmlnZ2VyRGVsdGFFbnRyeSA6Oj0gU0VRVUVOQ0UgewogICAgIG10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRCAgICAgICAgICAgICAgICBPQkpFQ1QgSURFTlRJRklFUiwKICAgICBtdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SURXaWxkY2FyZCAgICAgICAgVHJ1dGhWYWx1ZSwKQEAgLTYwOCw3ICs1ODgsNiBAQAogICAgICAgICBiZSB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZSBjb3JyZXNwb25kaW5nIGluc3RhbmNlIG9mCiAgICAgICAgIG10ZVRyaWdnZXJWYWx1ZUlEV2lsZGNhcmQgd2hlbiB0aGUgY29ycmVzcG9uZGluZwogCi0KICAgICAgICAgbXRlVHJpZ2dlclNhbXBsZVR5cGUgaXMgJ2RlbHRhVmFsdWUnLiIKICAgICBERUZWQUwgeyBmYWxzZSB9CiAgICAgOjo9IHsgbXRlVHJpZ2dlckRlbHRhRW50cnkgMiB9CkBAIC02NTgsNyArNjM3LDYgQEAKICAgICBtdGVUcmlnZ2VyRXhpc3RlbmNlRXZlbnQgICAgICAgICAgICAgU25tcEFkbWluU3RyaW5nCiB9CiAKLQogbXRlVHJpZ2dlckV4aXN0ZW5jZVRlc3QgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBCSVRTIHsgcHJlc2VudCgwKSwgYWJzZW50KDEpLCBjaGFuZ2VkKDIpIH0KICAgICBNQVgtQUNDRVNTICByZWFkLXdyaXRlCkBAIC03MDcsOCArNjg1LDYgQEAKIAogbXRlVHJpZ2dlckV4aXN0ZW5jZU9iamVjdHMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBTbm1wQWRtaW5TdHJpbmcgKFNJWkUgKDAuLjMyKSkKLQotCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC13cml0ZQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtNzU4LDcgKzczNCw2IEBACiAgICAgICAgIHRyaWdnZXJzLiIKICAgICA6Oj0geyBtdGVUcmlnZ2VyIDUgfQogCi0KIG10ZVRyaWdnZXJCb29sZWFuRW50cnkgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBNdGVUcmlnZ2VyQm9vbGVhbkVudHJ5CiAgICAgTUFYLUFDQ0VTUyAgbm90LWFjY2Vzc2libGUKQEAgLTgwNyw4ICs3ODIsNiBAQAogICAgIERFRlZBTCB7IDAgfQogICAgIDo6PSB7IG10ZVRyaWdnZXJCb29sZWFuRW50cnkgMiB9CiAKLQotCiBtdGVUcmlnZ2VyQm9vbGVhblN0YXJ0dXAgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBUcnV0aFZhbHVlCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC13cml0ZQpAQCAtODU3LDggKzgzMCw2IEBACiAgICAgICAgICJUbyBnbyB3aXRoIG10ZVRyaWdnZXJCb29sZWFuRXZlbnQsIHRoZSBtdGVPd25lciBvZiBhbiBldmVudAogICAgICAgICBlbnRyeSBmcm9tIG10ZUV2ZW50VGFibGUuIgogICAgIERFRlZBTCB7ICcnSCB9Ci0KLQogICAgIDo6PSB7IG10ZVRyaWdnZXJCb29sZWFuRW50cnkgNiB9CiAKIG10ZVRyaWdnZXJCb29sZWFuRXZlbnQgT0JKRUNULVRZUEUKQEAgLTkwNyw4ICs4NzgsNiBAQAogICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmdFdmVudE93bmVyICAgICAgICAgU25tcEFkbWluU3RyaW5nLAogICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmdFdmVudCAgICAgICAgICAgICAgU25tcEFkbWluU3RyaW5nLAogICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nRXZlbnRPd25lciAgICAgICAgU25tcEFkbWluU3RyaW5nLAotCi0KICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZ0V2ZW50ICAgICAgICAgICAgIFNubXBBZG1pblN0cmluZywKICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmdFdmVudE93bmVyICAgIFNubXBBZG1pblN0cmluZywKICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmdFdmVudCAgICAgICAgIFNubXBBZG1pblN0cmluZywKQEAgLTk1Nyw4ICs5MjYsNiBAQAogICAgICAgICB0cmlnZ2VyZWQgdW50aWwgdGhlIHNhbXBsZWQgdmFsdWUgZmFsbHMgYmVsb3cgdGhpcyB0aHJlc2hvbGQKICAgICAgICAgYW5kIHJlYWNoZXMgbXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmcuIgogICAgIERFRlZBTCB7IDAgfQotCi0KICAgICA6Oj0geyBtdGVUcmlnZ2VyVGhyZXNob2xkRW50cnkgMiB9CiAKIG10ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nIE9CSkVDVC1UWVBFCkBAIC0xMDA3LDggKzk3NCw2IEBACiAgICAgICAgIHRyaWdnZXJlZCB1bnRpbCB0aGUgZGVsdGEgdmFsdWUgZmFsbHMgYmVsb3cgdGhpcyB0aHJlc2hvbGQgYW5kCiAgICAgICAgIHJlYWNoZXMgbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZy4iCiAgICAgREVGVkFMIHsgMCB9Ci0KLQogICAgIDo6PSB7IG10ZVRyaWdnZXJUaHJlc2hvbGRFbnRyeSA0IH0KIAogbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZyBPQkpFQ1QtVFlQRQpAQCAtMTA1OCw3ICsxMDIzLDYgQEAKIAogICAgICAgICBBIGxpc3Qgb2Ygb2JqZWN0cyBtYXkgYWxzbyBiZSBhZGRlZCBiYXNlZCBvbiB0aGUgb3ZlcmFsbAogCi0KICAgICAgICAgdHJpZ2dlciwgdGhlIGV2ZW50IG9yIG90aGVyIHNldHRpbmdzIGluIG10ZVRyaWdnZXJUZXN0LgogCiAgICAgICAgIEEgbGVuZ3RoIG9mIDAgaW5kaWNhdGVzIG5vIGFkZGl0aW9uYWwgb2JqZWN0cy4iCkBAIC0xMTA3LDggKzEwNzEsNiBAQAogICAgIERFRlZBTCB7ICcnSCB9CiAgICAgOjo9IHsgbXRlVHJpZ2dlclRocmVzaG9sZEVudHJ5IDExIH0KIAotCi0KIG10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZ0V2ZW50T3duZXIgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBTbm1wQWRtaW5TdHJpbmcgKFNJWkUgKDAuLjMyKSkKICAgICBNQVgtQUNDRVNTICByZWFkLXdyaXRlCkBAIC0xMTU3LDggKzExMTksNiBAQAogLS0gT2JqZWN0cyBUYWJsZQogLS0KIAotCi0KIG10ZU9iamVjdHNUYWJsZSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFNFUVVFTkNFIE9GIE10ZU9iamVjdHNFbnRyeQogICAgIE1BWC1BQ0NFU1MgIG5vdC1hY2Nlc3NpYmxlCkBAIC0xMjA4LDcgKzExNjgsNiBAQAogICAgICAgICAiQW4gYXJiaXRyYXJ5IGludGVnZXIgZm9yIHRoZSBwdXJwb3NlIG9mIGlkZW50aWZ5aW5nCiAgICAgICAgIGluZGl2aWR1YWwgb2JqZWN0cyB3aXRoaW4gYSBtdGVPYmplY3RzTmFtZSBncm91cC4KIAotCiAgICAgICAgIE9iamVjdHMgd2l0aGluIGEgZ3JvdXAgYXJlIHBsYWNlZCBpbiB0aGUgbm90aWZpY2F0aW9uIGluIHRoZQogICAgICAgICBudW1lcmljYWwgb3JkZXIgb2YgdGhpcyBpbmRleC4KIApAQCAtMTI1OCw3ICsxMjE3LDYgQEAKICAgICBERUZWQUwgeyBmYWxzZSB9CiAgICAgOjo9IHsgbXRlT2JqZWN0c0VudHJ5IDQgfQogCi0KIG10ZU9iamVjdHNFbnRyeVN0YXR1cyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFJvd1N0YXR1cwogICAgIE1BWC1BQ0NFU1MgIHJlYWQtY3JlYXRlCkBAIC0xMzA4LDcgKzEyNjYsNiBAQAogICAgIElOREVYICAgICAgIHsgbXRlT3duZXIsIElNUExJRUQgbXRlRXZlbnROYW1lIH0KICAgICA6Oj0geyBtdGVFdmVudFRhYmxlIDEgfQogCi0KIE10ZUV2ZW50RW50cnkgOjo9IFNFUVVFTkNFIHsKICAgICBtdGVFdmVudE5hbWUgICAgICAgICAgICAgICAgICAgICAgICBTbm1wQWRtaW5TdHJpbmcsCiAgICAgbXRlRXZlbnRDb21tZW50ICAgICAgICAgICAgICAgICAgICAgU25tcEFkbWluU3RyaW5nLApAQCAtMTM1OCw3ICsxMzE1LDYgQEAKICAgICAgICAgIkEgY29udHJvbCB0byBhbGxvdyBhbiBldmVudCB0byBiZSBjb25maWd1cmVkIGJ1dCBub3QgdXNlZC4KICAgICAgICAgV2hlbiB0aGUgdmFsdWUgaXMgJ2ZhbHNlJyB0aGUgZXZlbnQgZG9lcyBub3QgZXhlY3V0ZSBldmVuIGlmCiAKLQogICAgICAgICB0cmlnZ2VyZWQuIgogICAgIERFRlZBTCB7IGZhbHNlIH0KICAgICA6Oj0geyBtdGVFdmVudEVudHJ5IDQgfQpAQCAtMTQwNyw4ICsxMzYzLDYgQEAKICAgICBTWU5UQVggICAgICBPQkpFQ1QgSURFTlRJRklFUgogICAgIE1BWC1BQ0NFU1MgIHJlYWQtd3JpdGUKICAgICBTVEFUVVMgICAgICBjdXJyZW50Ci0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICJUaGUgb2JqZWN0IGlkZW50aWZpZXIgZnJvbSB0aGUgTk9USUZJQ0FUSU9OLVRZUEUgZm9yIHRoZQogICAgICAgICBub3RpZmljYXRpb24gdG8gdXNlIGlmIG1ldEV2ZW50QWN0aW9ucyBoYXMgJ25vdGlmaWNhdGlvbicgc2V0LiIKQEAgLTE0NTcsOCArMTQxMSw2IEBACiBtdGVFdmVudFNldEVudHJ5IE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgTXRlRXZlbnRTZXRFbnRyeQogICAgIE1BWC1BQ0NFU1MgIG5vdC1hY2Nlc3NpYmxlCi0KLQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAgICAiSW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgZXZlbnQncyBzZXQgb3B0aW9uLiAgRW50cmllcwpAQCAtMTUwOCw3ICsxNDYwLDYgQEAKICAgICBERUZWQUwgeyB6ZXJvRG90WmVybyB9CiAgICAgOjo9IHsgbXRlRXZlbnRTZXRFbnRyeSAxIH0KIAotCiBtdGVFdmVudFNldE9iamVjdFdpbGRjYXJkIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgVHJ1dGhWYWx1ZQogICAgIE1BWC1BQ0NFU1MgIHJlYWQtd3JpdGUKQEAgLTE1NTcsOCArMTUwOCw2IEBACiBtdGVFdmVudFNldENvbnRleHROYW1lIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgU25tcEFkbWluU3RyaW5nCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC13cml0ZQotCi0KICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgIlRoZSBtYW5hZ2VtZW50IGNvbnRleHQgaW4gd2hpY2ggdG8gc2V0IG10ZUV2ZW50T2JqZWN0SUQuCkBAIC0xNjA3LDggKzE1NTYsNiBAQAogICAgICAgICAiVGhlIG5hbWUgb2YgdGhlIHRyaWdnZXIgY2F1c2luZyB0aGUgbm90aWZpY2F0aW9uLiIKICAgICA6Oj0geyBkaXNtYW5FdmVudE1JQk5vdGlmaWNhdGlvbk9iamVjdHMgMSB9CiAKLQotCiBtdGVIb3RUYXJnZXROYW1lIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgU25tcEFkbWluU3RyaW5nCiAgICAgTUFYLUFDQ0VTUyAgYWNjZXNzaWJsZS1mb3Itbm90aWZ5CkBAIC0xNjU3LDggKzE2MDQsNiBAQAogICAgIFNZTlRBWCAgICAgIEZhaWx1cmVSZWFzb24KICAgICBNQVgtQUNDRVNTICBhY2Nlc3NpYmxlLWZvci1ub3RpZnkKICAgICBTVEFUVVMgICAgICBjdXJyZW50Ci0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICJUaGUgcmVhc29uIGZvciB0aGUgZmFpbHVyZSBvZiBhbiBhdHRlbXB0IHRvIGNoZWNrIGZvciBhCiAgICAgICAgIHRyaWdnZXIgY29uZGl0aW9uIG9yIHNldCBhbiBvYmplY3QgaW4gcmVzcG9uc2UgdG8gYW4gZXZlbnQuIgpAQCAtMTcwNyw4ICsxNjUyLDYgQEAKIAogbXRlVHJpZ2dlckZhaWx1cmUgTk9USUZJQ0FUSU9OLVRZUEUKICAgICBPQkpFQ1RTIHsgbXRlSG90VHJpZ2dlciwKLQotCiAgICAgICAgICAgICAgIG10ZUhvdFRhcmdldE5hbWUsCiAgICAgICAgICAgICAgIG10ZUhvdENvbnRleHROYW1lLAogICAgICAgICAgICAgICBtdGVIb3RPSUQsCkBAIC0xNzU3LDggKzE3MDAsNiBAQAogZGlzbWFuRXZlbnRNSUJDb21wbGlhbmNlIE1PRFVMRS1DT01QTElBTkNFCiAgICAgICAgIFNUQVRVUyBjdXJyZW50CiAgICAgICAgIERFU0NSSVBUSU9OCi0KLQogICAgICAgICAgICAgICAgICJUaGUgY29tcGxpYW5jZSBzdGF0ZW1lbnQgZm9yIGVudGl0aWVzIHdoaWNoIGltcGxlbWVudAogICAgICAgICAgICAgICAgIHRoZSBFdmVudCBNSUIuIgogICAgICAgICBNT0RVTEUgIC0tIHRoaXMgbW9kdWxlCkBAIC0xNzk3LDcgKzE3MzgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIldyaXRlIGFjY2VzcyBpcyBub3QgcmVxdWlyZWQsIHRodXMgYWxsb3dpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzeXN0ZW0gbm90IHRvIGltcGxlbWVudCB3aWxkY2FyZGluZy4iCiAKLQogICAgICAgICAgICAgICAgIE9CSkVDVCBtdGVPYmplY3RzSURXaWxkY2FyZAogICAgICAgICAgICAgICAgIE1JTi1BQ0NFU1MgIHJlYWQtb25seQogICAgICAgICAgICAgICAgIERFU0NSSVBUSU9OCkBAIC0xODA3LDExICsxNzQ3LDggQEAKICAgICAgICAgICAgICAgICBPQkpFQ1QgbXRlRXZlbnRTZXRDb250ZXh0TmFtZVdpbGRjYXJkCiAgICAgICAgICAgICAgICAgTUlOLUFDQ0VTUyAgcmVhZC1vbmx5CiAgICAgICAgICAgICAgICAgREVTQ1JJUFRJT04KLQotCiAgICAgICAgICAgICAgICAgICAgICAgICAiV3JpdGUgYWNjZXNzIGlzIG5vdCByZXF1aXJlZCwgdGh1cyBhbGxvd2luZwogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN5c3RlbSBub3QgdG8gaW1wbGVtZW50IHdpbGRjYXJkaW5nLiIKLQogICAgICAgICA6Oj0geyBkaXNtYW5FdmVudE1JQkNvbXBsaWFuY2VzIDEgfQogCiAtLSBVbml0cyBvZiBDb25mb3JtYW5jZQpAQCAtMTgzMiw3ICsxNzY5LDYgQEAKIGRpc21hbkV2ZW50VHJpZ2dlckdyb3VwIE9CSkVDVC1HUk9VUAogICAgICAgICBPQkpFQ1RTIHsKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyRmFpbHVyZXMsCi0KICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQ29tbWVudCwKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyVGVzdCwKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyU2FtcGxlVHlwZSwKQEAgLTE4NDYsNyArMTc4Miw2IEBACiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlck9iamVjdHMsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckVuYWJsZWQsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckVudHJ5U3RhdHVzLAotCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlELAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFdpbGRjYXJkLAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFR5cGUsCkBAIC0xODU2LDkgKzE3OTEsNiBAQAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJFeGlzdGVuY2VPYmplY3RzLAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJFeGlzdGVuY2VFdmVudE93bmVyLAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJFeGlzdGVuY2VFdmVudCwKLQotCi0KICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQm9vbGVhbkNvbXBhcmlzb24sCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckJvb2xlYW5WYWx1ZSwKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQm9vbGVhblN0YXJ0dXAsCkBAIC0xODY2LDcgKzE3OTgsNiBAQAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJCb29sZWFuT2JqZWN0cywKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQm9vbGVhbkV2ZW50T3duZXIsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckJvb2xlYW5FdmVudCwKLQogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRTdGFydHVwLAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRPYmplY3RzT3duZXIsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRocmVzaG9sZE9iamVjdHMsCkBAIC0xOTAyLDE3ICsxODMzLDEzIEBACiBkaXNtYW5FdmVudEV2ZW50R3JvdXAgT0JKRUNULUdST1VQCiAgICAgICAgIE9CSkVDVFMgewogICAgICAgICAgICAgICAgIG10ZUV2ZW50RmFpbHVyZXMsCi0KICAgICAgICAgICAgICAgICBtdGVFdmVudENvbW1lbnQsCiAgICAgICAgICAgICAgICAgbXRlRXZlbnRBY3Rpb25zLAogICAgICAgICAgICAgICAgIG10ZUV2ZW50RW5hYmxlZCwKICAgICAgICAgICAgICAgICBtdGVFdmVudEVudHJ5U3RhdHVzLAotCi0KICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvbiwKICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvbk9iamVjdHNPd25lciwKICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvbk9iamVjdHMsCi0KICAgICAgICAgICAgICAgICBtdGVFdmVudFNldE9iamVjdCwKICAgICAgICAgICAgICAgICBtdGVFdmVudFNldE9iamVjdFdpbGRjYXJkLAogICAgICAgICAgICAgICAgIG10ZUV2ZW50U2V0VmFsdWUsCmRpZmYgLS1naXQgYS9taWJzL0RJU01BTi1FWFBSRVNTSU9OLU1JQi50eHQgYi9taWJzL0RJU01BTi1FWFBSRVNTSU9OLU1JQi50eHQKaW5kZXggNDk5ZWU4Ni4uZjczZTViZiAxMDA2NDQKLS0tIGEvbWlicy9ESVNNQU4tRVhQUkVTU0lPTi1NSUIudHh0CisrKyBiL21pYnMvRElTTUFOLUVYUFJFU1NJT04tTUlCLnR4dApAQCAtMjksNyArMjksNiBAQAogICAgICAgICAgICAgICAgICAgICBQdWJsaXNoZWQgYXMgUkZDIDI5ODIiCiAgICAgOjo9IHsgbWliLTIgOTAgfQogCi0KIGRpc21hbkV4cHJlc3Npb25NSUJPYmplY3RzIE9CSkVDVCBJREVOVElGSUVSIDo6PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGRpc21hbkV4cHJlc3Npb25NSUIgMSB9CiAKQEAgLTQxLDcgKzQwLDYgQEAKIC0tIFJlc291cmNlIENvbnRyb2wKIC0tCiAKLQogZXhwUmVzb3VyY2VEZWx0YU1pbmltdW0gT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBJbnRlZ2VyMzIgKC0xIHwgMS4uNjAwKQogICAgIFVOSVRTICAgICAgICJzZWNvbmRzIgpAQCAtOTAsNyArODgsNiBAQAogICAgICBVbmxlc3MgZXhwbGljaXRseSByZXNvdXJjZSBsaW1pdGVkLCBhIHN5c3RlbSdzIHZhbHVlIGZvcgogICAgICB0aGlzIG9iamVjdCBzaG91bGQgYmUgMC4KIAotCiAgICAgIENoYW5naW5nIHRoaXMgdmFsdWUgd2lsbCBub3QgZWxpbWluYXRlIG9yIGluaGliaXQgZXhpc3RpbmcgZGVsdGEKICAgICAgd2lsZGNhcmQgaW5zdGFuY2Ugb2JqZWN0cyBidXQgd2lsbCBwcmV2ZW50IHRoZSBjcmVhdGlvbiBvZiBtb3JlCiAgICAgIHN1Y2ggb2JqZWN0cy4KQEAgLTEzOSw3ICsxMzYsNiBAQAogLS0KIAogZXhwRXhwcmVzc2lvblRhYmxlIE9CSkVDVC1UWVBFCi0KICAgICBTWU5UQVggICAgICBTRVFVRU5DRSBPRiBFeHBFeHByZXNzaW9uRW50cnkKICAgICBNQVgtQUNDRVNTICBub3QtYWNjZXNzaWJsZQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKQEAgLTMzNSw3ICszMzEsNiBAQAogCiAgICAgICAgICAgSWYgZWl0aGVyIHNpZGUgaXMgSXBBZGRyZXNzLCB1c2UgdGhhdC4KIAotCiAgICAgICAgICAgSWYgZWl0aGVyIHNpZGUgaXMgVGltZVRpY2tzLCB1c2UgdGhhdC4KIAogICAgICAgICAgIElmIGVpdGhlciBzaWRlIGlzIENvdW50ZXIzMiwgdXNlIHRoYXQuCkBAIC0zODQsNyArMzc5LDYgQEAKICAgICAgICAgICBzdW0KICAgICAgICAgICBleGlzdHMKIAotCiAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gZGVmaW5pdGlvbnMgaW5kaWNhdGUgdGhlaXIgcGFyYW1ldGVycyBieQogICAgICBuYW1pbmcgdGhlIGRhdGEgdHlwZSBvZiB0aGUgcGFyYW1ldGVyIGluIHRoZSBwYXJhbWV0ZXIncyBwb3NpdGlvbgogICAgICBpbiB0aGUgcGFyYW1ldGVyIGxpc3QuICBUaGUgcGFyYW1ldGVyIG11c3QgYmUgb2YgdGhlIHR5cGUgaW5kaWNhdGVkCkBAIC00MzMsNyArNDI3LDYgQEAKICAgICAgZXhpc3RzKGFueVR5cGVPYmplY3QpIC0gdmVyaWZpZXMgdGhlIG9iamVjdCBpbnN0YW5jZSBleGlzdHMuIEEKICAgICAgcmV0dXJuIHZhbHVlIG9mIDAgaW5kaWNhdGVzIE5vU3VjaEluc3RhbmNlIChpLmUuIGJvb2xlYW4KICAgICAgZmFsc2UpLiIKLQogICAgIDo6PSB7IGV4cEV4cHJlc3Npb25FbnRyeSAzIH0KIAogZXhwRXhwcmVzc2lvblZhbHVlVHlwZSBPQkpFQ1QtVFlQRQpAQCAtNTMxLDcgKzUyNCw2IEBACiAgICAgOjo9IHsgZXhwRXhwcmVzc2lvbkVudHJ5IDcgfQogCiBleHBFeHByZXNzaW9uRXJyb3JzIE9CSkVDVC1UWVBFCi0KICAgICBTWU5UQVggICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgICBjdXJyZW50CkBAIC01ODAsNyArNTcyLDYgQEAKICAgICAgZXJyb3IgZm9yIHRoYXQgZXhwcmVzc2lvbiBhcyByZWZsZWN0ZWQgYnkgdGhlIGVycm9yIGNvZGVzCiAgICAgIGRlZmluZWQgZm9yIGV4cEVycm9yQ29kZS4iCiAgICAgSU5ERVggICAgICAgeyBleHBFeHByZXNzaW9uT3duZXIsIGV4cEV4cHJlc3Npb25OYW1lIH0KLQogICAgIDo6PSB7IGV4cEVycm9yVGFibGUgMSB9CiAKIEV4cEVycm9yRW50cnkgOjo9IFNFUVVFTkNFIHsKQEAgLTY3OCw3ICs2NjksNiBAQAogZXhwRXJyb3JJbnN0YW5jZSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIE9CSkVDVCBJREVOVElGSUVSCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5Ci0KICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgIlRoZSBleHBWYWx1ZUluc3RhbmNlIGJlaW5nIGV2YWx1YXRlZCB3aGVuIHRoZSBlcnJvcgpAQCAtNzI3LDcgKzcxNyw2IEBACiAgICAgZXhwT2JqZWN0SW5kZXggICAgICAgICAgICAgICAgICAgICBVbnNpZ25lZDMyLAogICAgIGV4cE9iamVjdElEICAgICAgICAgICAgICAgICAgICAgICAgT0JKRUNUIElERU5USUZJRVIsCiAgICAgZXhwT2JqZWN0SURXaWxkY2FyZCAgICAgICAgICAgICAgICBUcnV0aFZhbHVlLAotCiAgICAgZXhwT2JqZWN0U2FtcGxlVHlwZSAgICAgICAgICAgICAgICBJTlRFR0VSLAogICAgIGV4cE9iamVjdERlbHRhRGlzY29udGludWl0eUlEICAgICAgT0JKRUNUIElERU5USUZJRVIsCiAgICAgZXhwT2JqZWN0RGlzY29udGludWl0eUlEV2lsZGNhcmQgICBUcnV0aFZhbHVlLApAQCAtNzc2LDcgKzc2NSw2IEBACiAgICAgICAgICJBIHRydWUgdmFsdWUgaW5kaWNhdGVzIHRoZSBleHBPYmplY0lEIG9mIHRoaXMgcm93IGlzIGEgd2lsZGNhcmQKICAgICAgICAgb2JqZWN0LiBGYWxzZSBpbmRpY2F0ZXMgdGhhdCBleHBPYmplY3RJRCBpcyBmdWxseSBpbnN0YW5jZWQuCiAgICAgICAgIElmIGFsbCBleHBPYmplY3RXaWxkY2FyZCB2YWx1ZXMgZm9yIGEgZ2l2ZW4gZXhwcmVzc2lvbiBhcmUgRkFMU0UsCi0KICAgICAgICAgZXhwRXhwcmVzc2lvblByZWZpeCB3aWxsIHJlZmxlY3QgYSBzY2FsYXIgb2JqZWN0IChpLmUuIHdpbGwKICAgICAgICAgYmUgMC4wKS4KIApAQCAtODI1LDcgKzgxMyw2IEBACiAgICAgIERhdGVBbmRUaW1lIG9iamVjdCB0aGF0IGluZGljYXRlcyBhIGRpc2NvbnRpbnVpdHkgaW4gdGhlIHZhbHVlCiAgICAgIGF0IGV4cE9iamVjdElELgogCi0KICAgICAgVGhpcyBvYmplY3QgaXMgaW5zdGFudGlhdGVkIG9ubHkgaWYgZXhwT2JqZWN0U2FtcGxlVHlwZSBpcwogICAgICAnZGVsdGFWYWx1ZScgb3IgJ2NoYW5nZWRWYWx1ZScuCiAKQEAgLTg3NCw3ICs4NjEsNiBAQAogICAgIERFRlZBTCAgICAgIHsgdGltZVRpY2tzIH0KICAgICAgOjo9IHsgZXhwT2JqZWN0RW50cnkgNyB9CiAKLQogZXhwT2JqZWN0Q29uZGl0aW9uYWwgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBPQkpFQ1QgSURFTlRJRklFUgogICAgIE1BWC1BQ0NFU1MgIHJlYWQtY3JlYXRlCkBAIC05MTAsNyArODk2LDYgQEAKICAgICAgTUFYLUFDQ0VTUyAgcmVhZC1jcmVhdGUKICAgICAgU1RBVFVTICAgICAgY3VycmVudAogICAgICBERVNDUklQVElPTgotCiAgICAgICJBIHRydWUgdmFsdWUgaW5kaWNhdGVzIHRoZSBleHBPYmplY3RDb25kaXRpb25hbCBvZiB0aGlzIHJvdyBpcwogICAgICBhIHdpbGRjYXJkIG9iamVjdC4gRmFsc2UgaW5kaWNhdGVzIHRoYXQgZXhwT2JqZWN0Q29uZGl0aW9uYWwgaXMKICAgICAgZnVsbHkgaW5zdGFuY2VkLgpAQCAtOTIzLDcgKzkwOCw2IEBACiBleHBPYmplY3RFbnRyeVN0YXR1cyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFJvd1N0YXR1cwogICAgIE1BWC1BQ0NFU1MgIHJlYWQtY3JlYXRlCi0KICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgIlRoZSBjb250cm9sIHRoYXQgYWxsb3dzIGNyZWF0aW9uL2RlbGV0aW9uIG9mIGVudHJpZXMuCkBAIC0xMDIxLDcgKzEwMDUsNiBAQAogZXhwVmFsdWVDb3VudGVyMzJWYWwgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKLQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAiVGhlIHZhbHVlIHdoZW4gZXhwRXhwcmVzc2lvblZhbHVlVHlwZSBpcyAnY291bnRlcjMyJy4iCkBAIC0xMDYwLDcgKzEwNDMsNyBAQAogICAgIDo6PSB7IGV4cFZhbHVlRW50cnkgNiB9CiAKIGV4cFZhbHVlT2N0ZXRTdHJpbmdWYWwgT0JKRUNULVRZUEUKLSAgICBTWU5UQVggICAgICBPQ1RFVCBTVFJJTkcgLS0gKFNJWkUgKDAuLjY1NTM2KSkKKyAgICBTWU5UQVggICAgICBPQ1RFVCBTVFJJTkcgKFNJWkUgKDAuLjY1NTM2KSkKICAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTEwNzAsNyArMTA1Myw2IEBACiBleHBWYWx1ZU9pZFZhbCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIE9CSkVDVCBJREVOVElGSUVSCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5Ci0KICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgIlRoZSB2YWx1ZSB3aGVuIGV4cEV4cHJlc3Npb25WYWx1ZVR5cGUgaXMgJ29iamVjdElkJy4iCkBAIC0xMTM2LDcgKzExMTgsNiBAQAogICAgICBXUklURS1TWU5UQVggICBJTlRFR0VSIHsgZmFsc2UoMikgfQogICAgICBERVNDUklQVElPTgogICAgICAgICAgICJJbXBsZW1lbnRhdGlvbiBuZWVkIG5vdCBhbGxvdyBkZWx0YXMgd2lsZGNhcmRzLiIKLQogICAgICA6Oj0geyBkaXNtYW5FeHByZXNzaW9uTUlCQ29tcGxpYW5jZXMgMSB9CiAKIC0tIFVuaXRzIG9mIENvbmZvcm1hbmNlCkBAIC0xMTYzLDEyICsxMTQ0LDEwIEBACiAgICAgICAgICAgZXhwRXhwcmVzc2lvblByZWZpeCwKICAgICAgICAgICBleHBFeHByZXNzaW9uRXJyb3JzLAogICAgICAgICAgIGV4cEV4cHJlc3Npb25FbnRyeVN0YXR1cywKLQogICAgICAgICAgIGV4cEVycm9yVGltZSwKICAgICAgICAgICBleHBFcnJvckluZGV4LAogICAgICAgICAgIGV4cEVycm9yQ29kZSwKICAgICAgICAgICBleHBFcnJvckluc3RhbmNlLAotCiAgICAgICAgICAgZXhwT2JqZWN0SUQsCiAgICAgICAgICAgZXhwT2JqZWN0SURXaWxkY2FyZCwKICAgICAgICAgICBleHBPYmplY3RTYW1wbGVUeXBlLApAQCAtMTIwMSw1ICsxMTgwLDMgQEAKICAgICAgOjo9IHsgZGlzbWFuRXhwcmVzc2lvbk1JQkdyb3VwcyAzIH0KIAogRU5ECi0KLQpkaWZmIC0tZ2l0IGEvbWlicy9JQU5BLUFERFJFU1MtRkFNSUxZLU5VTUJFUlMtTUlCLnR4dCBiL21pYnMvSUFOQS1BRERSRVNTLUZBTUlMWS1OVU1CRVJTLU1JQi50eHQKaW5kZXggMTY4MGFjZS4uM2Q4OGEwZiAxMDA2NDQKLS0tIGEvbWlicy9JQU5BLUFERFJFU1MtRkFNSUxZLU5VTUJFUlMtTUlCLnR4dAorKysgYi9taWJzL0lBTkEtQUREUkVTUy1GQU1JTFktTlVNQkVSUy1NSUIudHh0CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgVVNBCiAKICAgICAgICAgICBUZWw6ICAgICsxICAzMTAtODIzLTkzNTgKLSAgICAgICAgICBFLU1haWw6IGlhbmFAaWFuYS5vcmciCisgICAgICAgICAgRS1NYWlsOiBpYW5hJmlhbmEub3JnIgogICAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAiVGhlIE1JQiBtb2R1bGUgZGVmaW5lcyB0aGUgQWRkcmVzc0ZhbWlseU51bWJlcnMKICAgICAgICAgICB0ZXh0dWFsIGNvbnZlbnRpb24uIgpAQCAtODYsMTAgKzg2LDExIEBACiAgICAgICAgICAgZmlicmVDaGFubmVsV1dQTigyMiksICAtLSBGaWJyZSBDaGFubmVsIFdvcmxkLVdpZGUgUG9ydCBOYW1lIAogICAgICAgICAgIGZpYnJlQ2hhbm5lbFdXTk4oMjMpLCAgLS0gRmlicmUgQ2hhbm5lbCBXb3JsZC1XaWRlIE5vZGUgTmFtZQogICAgICAgICAgIGd3aWQoMjQpLCAgICAtLSBHYXRld2F5IElkZW50aWZpZXIgCisgICAgICAgICAgYWZpKDI1KSwgIC0tIEFGSSBmb3IgTDJWUE4gaW5mb3JtYXRpb24KICAgICAgICAgICByZXNlcnZlZCg2NTUzNSkKIAogICAgICAgICAgIFJlcXVlc3RzIGZvciBuZXcgdmFsdWVzIHNob3VsZCBiZSBtYWRlIHRvIElBTkEgdmlhCi0gICAgICAgICAgZW1haWwgKGlhbmFAaWFuYS5vcmcpLiIKKyAgICAgICAgICBlbWFpbCAoaWFuYSZpYW5hLm9yZykuIgogICAgICAgU1lOVEFYICBJTlRFR0VSIHsKICAgICAgICAgICAgICAgICAgIG90aGVyKDApLAogICAgICAgICAgICAgICAgICAgaXBWNCgxKSwKQEAgLTExNiw2ICsxMTcsNyBAQAogICAgICAgICAgICAgICAgICAgZmlicmVDaGFubmVsV1dQTigyMiksCiAgICAgICAgICAgICAgICAgICBmaWJyZUNoYW5uZWxXV05OKDIzKSwKICAgICAgICAgICAgICAgICAgIGd3aWQoMjQpLAorICAgICAgICAgICAgICAgICAgYWZpKDI1KSwKICAgICAgICAgICAgICAgICAgIHJlc2VydmVkKDY1NTM1KQogICAgICAgICAgICAgICB9CiAgICAgICBFTkQKZGlmZiAtLWdpdCBhL21pYnMvSUFOQS1MQU5HVUFHRS1NSUIudHh0IGIvbWlicy9JQU5BLUxBTkdVQUdFLU1JQi50eHQKaW5kZXggYjBhZDNlZC4uNzczYzEwMSAxMDA2NDQKLS0tIGEvbWlicy9JQU5BLUxBTkdVQUdFLU1JQi50eHQKKysrIGIvbWlicy9JQU5BLUxBTkdVQUdFLU1JQi50eHQKQEAgLTE1LDcgKzE1LDcgQEAKICAgICAgICAgICAgICAgICAgTWFyaW5hIGRlbCBSZXksIENBIDkwMjkyCiAKICAgICAgICAgIFRlbDogICAgKzEgMzEwIDgyMyA5MzU4IHgyMAotICAgICAgICAgRS1NYWlsOiBpYW5hQGlhbmEub3JnIgorICAgICAgICAgRS1NYWlsOiBpYW5hJmlhbmEub3JnIgogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICJUaGUgTUlCIG1vZHVsZSByZWdpc3RlcnMgb2JqZWN0IGlkZW50aWZpZXIgdmFsdWVzIGZvcgogICAgICAgICAgd2VsbC1rbm93biBwcm9ncmFtbWluZyBhbmQgc2NyaXB0aW5nIGxhbmd1YWdlcy4gRXZlcnkKZGlmZiAtLWdpdCBhL21pYnMvSUFOQS1SVFBST1RPLU1JQi50eHQgYi9taWJzL0lBTkEtUlRQUk9UTy1NSUIudHh0CmluZGV4IDU3ZTczYTIuLjZmMDQxNDMgMTAwNjQ0Ci0tLSBhL21pYnMvSUFOQS1SVFBST1RPLU1JQi50eHQKKysrIGIvbWlicy9JQU5BLVJUUFJPVE8tTUlCLnR4dApAQCAtMSw0ICsxLDMgQEAKLQogSUFOQS1SVFBST1RPLU1JQiBERUZJTklUSU9OUyA6Oj0gQkVHSU4KIAogSU1QT1JUUwpAQCAtMTUsNyArMTQsNyBAQAogICAgICAgICAgICAgICBNYXJpbmEgZGVsIFJleSwgQ0EgOTAyOTItNjYwMQogCiAgICAgICAgICAgICAgIFBob25lOiArMSAzMTAgODIzIDkzNTgKLSAgICAgICAgICAgICAgRU1haWw6IGlhbmFAaWFuYS5vcmciCisgICAgICAgICAgICAgIEVNYWlsOiBpYW5hJmlhbmEub3JnIgogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiVGhpcyBNSUIgbW9kdWxlIGRlZmluZXMgdGhlIElBTkFpcFJvdXRlUHJvdG9jb2wgYW5kCiAgICAgICAgICAgICBJQU5BaXBNUm91dGVQcm90b2NvbCB0ZXh0dWFsIGNvbnZlbnRpb25zIGZvciB1c2UgaW4gTUlCcwpAQCAtMzIsMTIgKzMxLDEwIEBACiAgICAgUkVWSVNJT04gICAgICIyMDAwMDkyNjAwMDBaIiAgLS0gU2VwdGVtYmVyIDI2LCAyMDAwIAogICAgIERFU0NSSVBUSU9OICAiT3JpZ2luYWwgdmVyc2lvbiwgcHVibGlzaGVkIGluIGNvb3JkaW5hdGlvbgogICAgICAgICAgICAgICAgICB3aXRoIFJGQyAyOTMyLiIKLQogICAgIDo6PSB7IG1pYi0yIDg0IH0KIAogSUFOQWlwUm91dGVQcm90b2NvbCA6Oj0gVEVYVFVBTC1DT05WRU5USU9OCiAgICBTVEFUVVMgICAgICBjdXJyZW50Ci0KICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiQSBtZWNoYW5pc20gZm9yIGxlYXJuaW5nIHJvdXRlcy4gIEluY2x1c2lvbiBvZiB2YWx1ZXMgZm9yCiAgICAgICAgICAgICByb3V0aW5nIHByb3RvY29scyBpcyBub3QgaW50ZW5kZWQgdG8gaW1wbHkgdGhhdCB0aG9zZQpAQCAtODgsNSArODUsMyBAQAogICAgICAgICAgICAgICAgfQogCiBFTkQKLQotCmRpZmYgLS1naXQgYS9taWJzL0lBTkFpZlR5cGUtTUlCLnR4dCBiL21pYnMvSUFOQWlmVHlwZS1NSUIudHh0CmluZGV4IDU0MmUyNDcuLjk1OTQ2NTAgMTAwNjQ0Ci0tLSBhL21pYnMvSUFOQWlmVHlwZS1NSUIudHh0CisrKyBiL21pYnMvSUFOQWlmVHlwZS1NSUIudHh0CkBAIC01LDcgKzUsNyBAQAogICAgICAgIFRFWFRVQUwtQ09OVkVOVElPTiAgICAgICAgICBGUk9NIFNOTVB2Mi1UQzsKIAogICAgaWFuYWlmVHlwZSBNT0RVTEUtSURFTlRJVFkKLSAgICAgICBMQVNULVVQREFURUQgIjIwMDUxMDEwMDAwMFoiICAtLSBPY3RvYmVyIDEwLCAyMDA1CisgICAgICAgTEFTVC1VUERBVEVEICIyMDA5MDUwNjAwMDBaIiAgLS0gTWF5IDA2LCAyMDA5CiAgICAgICAgT1JHQU5JWkFUSU9OICJJQU5BIgogICAgICAgIENPTlRBQ1QtSU5GTyAiICAgICAgICBJbnRlcm5ldCBBc3NpZ25lZCBOdW1iZXJzIEF1dGhvcml0eQogCkBAIC0xNCwxMiArMTQsNzUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW5hIGRlbCBSZXksIENBIDkwMjkyCiAKICAgICAgICAgICAgICAgICAgICAgIFRlbDogICAgKzEgMzEwIDgyMyA5MzU4Ci0gICAgICAgICAgICAgICAgICAgICBFLU1haWw6IGlhbmFAaWFuYS5vcmciCi0KKyAgICAgICAgICAgICAgICAgICAgIEUtTWFpbDogaWFuYSZpYW5hLm9yZyIKICAgICAgICBERVNDUklQVElPTiAgIlRoaXMgTUlCIG1vZHVsZSBkZWZpbmVzIHRoZSBJQU5BaWZUeXBlIFRleHR1YWwKICAgICAgICAgICAgICAgICAgICAgIENvbnZlbnRpb24sIGFuZCB0aHVzIHRoZSBlbnVtZXJhdGVkIHZhbHVlcyBvZgogICAgICAgICAgICAgICAgICAgICAgdGhlIGlmVHlwZSBvYmplY3QgZGVmaW5lZCBpbiBNSUItSUkncyBpZlRhYmxlLiIKIAorICAgICAgIFJFVklTSU9OICAgICAiMjAwOTA1MDYwMDAwWiIgIC0tIE1heSAwNiwgMjAwOQorICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlIDI1MS4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDkwMjA2MDAwMFoiICAtLSBGZWJydWFyeSAwNiwgMjAwOQorICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BdHVubmVsVHlwZSAxNS4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDgxMDA5MDAwMFoiICAtLSBPY3RvYmVyIDA5LCAyMDA4CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUgMjUwLiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwODA4MTIwMDAwWiIgIC0tIEF1Z3VzdCAxMiwgMjAwOAorICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlIDI0OS4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDgwNzIyMDAwMFoiICAtLSBKdWx5IDIyLCAyMDA4CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzIDI0NyBhbmQgMjQ4LiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwODA2MjQwMDAwWiIgIC0tIEp1bmUgMjQsIDIwMDgKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZSAyNDYuIgorCisgICAgICAgUkVWSVNJT04gICAgICIyMDA4MDUyOTAwMDBaIiAgLS0gTWF5IDI5LCAyMDA4CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUgMjQ1LiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNzA5MTMwMDAwWiIgIC0tIFNlcHRlbWJlciAxMywgMjAwNworICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcyAyNDMgYW5kIDI0NC4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDcwNTI5MDAwMFoiICAtLSBNYXkgMjksIDIwMDcKKyAgICAgICBERVNDUklQVElPTiAgIkNoYW5nZWQgdGhlIGRlc2NyaXB0aW9uIGZvciBJQU5BaWZUeXBlIDIyOC4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDcwMzA4MDAwMFoiICAtLSBNYXJjaCAwOCwgMjAwNworICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlIDI0Mi4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDcwMTIzMDAwMFoiICAtLSBKYW51YXJ5IDIzLCAyMDA3CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzIDIzOSwgMjQwLCBhbmQgMjQxLiIgCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDYxMDE3MDAwMFoiICAtLSBPY3RvYmVyIDE3LCAyMDA2CisgICAgICAgREVTQ1JJUFRJT04gICJEZXByZWNhdGVkL09ic29sZXRlZCBJQU5BaWZUeXBlIDIzMC4gIFJlZ2lzdHJhdGlvbiBvZiAKKyAgICAgICAgICAgICAgICAgICAgIElBTkFpZlR5cGUgMjM4LiIgCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDYwOTI1MDAwMFoiICAtLSBTZXB0ZW1iZXIgMjUsIDIwMDYKKyAgICAgICBERVNDUklQVElPTiAgIkNoYW5nZWQgdGhlIGRlc2NyaXB0aW9uIGZvciBJQU5BIGlmVHlwZSAKKyAgICAgICAgICAgICAgICAgICAgIDE4NCBhbmQgYWRkZWQgbmV3IElBTkEgaWZUeXBlIDIzNy4iICAKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNjA4MTcwMDAwWiIgIC0tIEF1Z3VzdCAxNywgMjAwNgorICAgICAgIERFU0NSSVBUSU9OICAiQ2hhbmdlZCB0aGUgZGVzY3JpcHRpb25zIGZvciBJQU5BaWZUeXBlcworICAgICAgICAgICAgICAgICAgICAgMjAgYW5kIDIxLiIgICAKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNjA4MTEwMDAwWiIgIC0tIEF1Z3VzdCAxMSwgMjAwNgorICAgICAgIERFU0NSSVBUSU9OICAiQ2hhbmdlZCB0aGUgZGVzY3JpcHRpb25zIGZvciBJQU5BaWZUeXBlcworICAgICAgICAgICAgICAgICAgICAgNywgMTEsIDYyLCA2OSwgYW5kIDExNy4iICAgCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDYwNzI1MDAwMFoiICAtLSBKdWx5IDI1LCAyMDA2CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIzNi4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDYwNjE0MDAwMFoiICAtLSBKdW5lIDE0LCAyMDA2CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIzNS4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDYwMzMxMDAwMFoiICAtLSBNYXJjaCAzMSwgMjAwNgorICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BIGlmVHlwZSAyMzQuIgorCisgICAgICAgUkVWSVNJT04gICAgICIyMDA2MDMzMDAwMDBaIiAgLS0gTWFyY2ggMzAsIDIwMDYKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQSBpZlR5cGUgMjMzLiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNTEyMjIwMDAwWiIgIC0tIERlY2VtYmVyIDIyLCAyMDA1CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlcyAyMzEgYW5kIDIzMi4iCisKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDUxMDEwMDAwMFoiICAtLSBPY3RvYmVyIDEwLCAyMDA1CiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIzMC4iCiAKQEAgLTMxLDExICs5NCwxMCBAQAogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDA1MDMwMzAwMDBaIiAgLS0gTWFyY2ggMywgMjAwNQogICAgICAgIERFU0NSSVBUSU9OICAiQWRkZWQgdGhlIElBTkF0dW5uZWxUeXBlIFRDIGFuZCBkZXByZWNhdGVkCi0JICAgICAgICAgICAgICAgICBJQU5BaWZUeXBlIHNpeFRvRm91ciAoMjE1KSBwZXIgCi0JICAgICAgICAgICAgICAgICBSRkM0MDg3LiIKKwkgICAgICAgICAgICAgICAgIElBTkFpZlR5cGUgc2l4VG9Gb3VyICgyMTUpIHBlciBSRkM0MDg3LiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwNDExMjIwMDAwWiIgIC0tIE5vdmVtYmVyIDIyLCAyMDA0Ci0gICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIyNy4iCisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIyNyBwZXIgUkZDNDYzMS4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDQwNjE3MDAwMFoiICAtLSBKdW5lIDE3LCAyMDA0CiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIyNi4iCkBAIC01MCw5MiArMTEyLDkyIEBACiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDMwODI1MDAwMFoiICAtLSBBdWcgMjUsIDIwMDMKICAgICAgICBERVNDUklQVElPTiAgIkRlcHJlY2F0ZWQgSUFOQWlmVHlwZXMgNyBhbmQgMTEuIE9ic29sZXRlZAotICAgICAgICAgICAgICAgICAgICBJQU5BaWZUeXBlcyA2MiwgNjksIGFuZCAxMTcuICBldGhlcm5ldENzbWFjZCAoNikKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGVzZSB2YWx1ZXMiCisgICAgICAgICAgICAgICAgICAgICBJQU5BaWZUeXBlcyA2MiwgNjksIGFuZCAxMTcuICBldGhlcm5ldENzbWFjZCAoNikKKyAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlc2UgdmFsdWVzIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAzMDgxODAwMDBaIiAgLS0gQXVnIDE4LCAyMDAzCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgMjI0LiIKKyAgICAgICAgICAgICAgICAgICAgIDIyNC4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDMwODA3MDAwMFoiICAtLSBBdWcgNywgMjAwMwogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAyMjIgYW5kIDIyMy4iCisgICAgICAgICAgICAgICAgICAgICAyMjIgYW5kIDIyMy4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDMwMzE4MDAwMFoiICAtLSBNYXIgMTgsIDIwMDMKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZQotICAgICAgICAgICAgICAgICAgICAyMjEuIgorICAgICAgICAgICAgICAgICAgICAgMjIxLiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMzAxMTMwMDAwWiIgIC0tIEphbiAxMywgMjAwMwogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlCi0gICAgICAgICAgICAgICAgICAgIDIyMC4iCisgICAgICAgICAgICAgICAgICAgICAyMjAuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAyMTAxNzAwMDBaIiAgLS0gT2N0IDE3LCAyMDAyCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgMjE5LiIKKyAgICAgICAgICAgICAgICAgICAgIDIxOS4iCiAKLQkgICBSRVZJU0lPTiAgICAgIjIwMDIwNzE2MDAwMFoiICAtLSBKdWwgMTYsIDIwMDIKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDIwNzE2MDAwMFoiICAtLSBKdWwgMTYsIDIwMDIKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMjE3IGFuZCAyMTguIgorICAgICAgICAgICAgICAgICAgICAgMjE3IGFuZCAyMTguIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAyMDcxMDAwMDBaIiAgLS0gSnVsIDEwLCAyMDAyCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzCi0gICAgICAgICAgICAgICAgICAgIDIxNSBhbmQgMjE2LiIKKyAgICAgICAgICAgICAgICAgICAgIDIxNSBhbmQgMjE2LiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMjA2MTkwMDAwWiIgIC0tIEp1biAxOSwgMjAwMgogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlCi0gICAgICAgICAgICAgICAgICAgIDIxNC4iCisgICAgICAgICAgICAgICAgICAgICAyMTQuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAyMDEwNDAwMDBaIiAgLS0gSmFuIDQsIDIwMDIKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMjExLCAyMTIgYW5kIDIxMy4iCisgICAgICAgICAgICAgICAgICAgICAyMTEsIDIxMiBhbmQgMjEzLiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMTEyMjAwMDAwWiIgIC0tIERlYyAyMCwgMjAwMQogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAyMDkgYW5kIDIxMC4iCisgICAgICAgICAgICAgICAgICAgICAyMDkgYW5kIDIxMC4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDExMTE1MDAwMFoiICAtLSBOb3YgMTUsIDIwMDEKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMjA3IGFuZCAyMDguIgorICAgICAgICAgICAgICAgICAgICAgMjA3IGFuZCAyMDguIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAxMTEwNjAwMDBaIiAgLS0gTm92IDYsIDIwMDEKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZQotICAgICAgICAgICAgICAgICAgICAyMDYuIgorICAgICAgICAgICAgICAgICAgICAgMjA2LiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMTExMDIwMDAwWiIgIC0tIE5vdiAyLCAyMDAxCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgMjA1LiIKKyAgICAgICAgICAgICAgICAgICAgIDIwNS4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDExMDE2MDAwMFoiICAtLSBPY3QgMTYsIDIwMDEKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIGFuZCAyMDQuIgorICAgICAgICAgICAgICAgICAgICAgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIGFuZCAyMDQuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAxMDkxOTAwMDBaIiAgLS0gU2VwdCAxOSwgMjAwMQogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlCi0gICAgICAgICAgICAgICAgICAgIDE5OC4iCisgICAgICAgICAgICAgICAgICAgICAxOTguIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAxMDUxMTAwMDBaIiAgLS0gTWF5IDExLCAyMDAxCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgMTk3LiIKKyAgICAgICAgICAgICAgICAgICAgIDE5Ny4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDEwMTEyMDAwMFoiICAtLSBKYW4gMTIsIDIwMDEKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMTk1IGFuZCAxOTYuIgorICAgICAgICAgICAgICAgICAgICAgMTk1IGFuZCAxOTYuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAwMTIxOTAwMDBaIiAgLS0gRGVjIDE5LCAyMDAwCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzCi0gICAgICAgICAgICAgICAgICAgIDE5MyBhbmQgMTk0LiIKKyAgICAgICAgICAgICAgICAgICAgIDE5MyBhbmQgMTk0LiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMDEyMDcwMDAwWiIgIC0tIERlYyAwNywgMjAwMAogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAxOTEgYW5kIDE5Mi4iCisgICAgICAgICAgICAgICAgICAgICAxOTEgYW5kIDE5Mi4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDAxMjA0MDAwMFoiICAtLSBEZWMgMDQsIDIwMDAKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZQotICAgICAgICAgICAgICAgICAgICAxOTAuIgorICAgICAgICAgICAgICAgICAgICAgMTkwLiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMDEwMTcwMDAwWiIgIC0tIE9jdCAxNywgMjAwMAogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAxODggYW5kIDE4OS4iICAKKyAgICAgICAgICAgICAgICAgICAgIDE4OCBhbmQgMTg5LiIgIAogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAwMTAwMjAwMDBaIiAgLS0gT2N0IDAyLCAyMDAwCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUgMTg3LiIgCkBAIC0xOTEsNyArMjUzLDcgQEAKICAgICAgICAgICAgICAgIElBTkEuKQogCiAgICAgICAgICAgICAgICBSZXF1ZXN0cyBmb3IgbmV3IHZhbHVlcyBzaG91bGQgYmUgbWFkZSB0byBJQU5BIHZpYQotICAgICAgICAgICAgICAgZW1haWwgKGlhbmFAaWFuYS5vcmcpLgorICAgICAgICAgICAgICAgZW1haWwgKGlhbmEmaWFuYS5vcmcpLgogCiAgICAgICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGFzc2lnbm1lbnQgb2YgaWZUeXBlCiAgICAgICAgICAgICAgICB2YWx1ZXMgYW5kIG9mIE9JRHMgdG8gcGFydGljdWxhciBtZWRpYS1zcGVjaWZpYyBNSUJzCkBAIC0yMTEsMTEgKzI3MywxMyBAQAogICAgICAgICAgICAgICAgICAgIHJmYzg3N3gyNSg1KSwKICAgICAgICAgICAgICAgICAgICBldGhlcm5ldENzbWFjZCg2KSwgLS0gZm9yIGFsbCBldGhlcm5ldC1saWtlIGludGVyZmFjZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIHJlZ2FyZGxlc3Mgb2Ygc3BlZWQsIGFzIHBlciBSRkMzNjM1Ci0gICAgICAgICAgICAgICAgICAgaXNvODgwMjNDc21hY2QoNyksIC0tIERlcHJlY2F0ZWQgdmlhIFJGQy1kcmFmdC1pZXRmLWh1Ym1pYi1ldGhlcmlmLW1pYi12MyAgZXRoZXJuZXRDc21hY2QgKDYpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQKKyAgICAgICAgICAgICAgICAgICBpc284ODAyM0NzbWFjZCg3KSwgLS0gRGVwcmVjYXRlZCB2aWEgUkZDMzYzNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAogICAgICAgICAgICAgICAgICAgIGlzbzg4MDI0VG9rZW5CdXMoOCksCiAgICAgICAgICAgICAgICAgICAgaXNvODgwMjVUb2tlblJpbmcoOSksCiAgICAgICAgICAgICAgICAgICAgaXNvODgwMjZNYW4oMTApLAotICAgICAgICAgICAgICAgICAgIHN0YXJMYW4oMTEpLCAtLSBEZXByZWNhdGVkIHZpYSBSRkMtZHJhZnQtaWV0Zi1odWJtaWItZXRoZXJpZi1taWItdjMgIGV0aGVybmV0Q3NtYWNkICg2KSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkCisgICAgICAgICAgICAgICAgICAgc3RhckxhbigxMSksIC0tIERlcHJlY2F0ZWQgdmlhIFJGQzM2MzUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gZXRoZXJuZXRDc21hY2QgKDYpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQKICAgICAgICAgICAgICAgICAgICBwcm90ZW9uMTBNYml0KDEyKSwKICAgICAgICAgICAgICAgICAgICBwcm90ZW9uODBNYml0KDEzKSwKICAgICAgICAgICAgICAgICAgICBoeXBlcmNoYW5uZWwoMTQpLApAQCAtMjI0LDggKzI4OCwxMCBAQAogICAgICAgICAgICAgICAgICAgIHNkbGMoMTcpLAogICAgICAgICAgICAgICAgICAgIGRzMSgxOCksICAgICAgICAgICAgLS0gRFMxLU1JQgogICAgICAgICAgICAgICAgICAgIGUxKDE5KSwgICAgICAgICAgICAgLS0gT2Jzb2xldGUgc2VlIERTMS1NSUIKLSAgICAgICAgICAgICAgICAgICBiYXNpY0lTRE4oMjApLAotICAgICAgICAgICAgICAgICAgIHByaW1hcnlJU0ROKDIxKSwKKyAgICAgICAgICAgICAgICAgICBiYXNpY0lTRE4oMjApLCAgICAgICAgICAgICAgLS0gbm8gbG9uZ2VyIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gc2VlIGFsc28gUkZDMjEyNworICAgICAgICAgICAgICAgICAgIHByaW1hcnlJU0ROKDIxKSwgICAgICAgICAgICAtLSBubyBsb25nZXIgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBzZWUgYWxzbyBSRkMyMTI3CiAgICAgICAgICAgICAgICAgICAgcHJvcFBvaW50VG9Qb2ludFNlcmlhbCgyMiksIC0tIHByb3ByaWV0YXJ5IHNlcmlhbAogICAgICAgICAgICAgICAgICAgIHBwcCgyMyksCiAgICAgICAgICAgICAgICAgICAgc29mdHdhcmVMb29wYmFjaygyNCksCkBAIC0yNjgsMTcgKzMzNCwxOSBAQAogICAgICAgICAgICAgICAgICAgIGFmbGFuZTgwMjMoNTkpLCAgICAgLS0gQVRNIEVtdWxhdGVkIExBTiBmb3IgODAyLjMKICAgICAgICAgICAgICAgICAgICBhZmxhbmU4MDI1KDYwKSwgICAgIC0tIEFUTSBFbXVsYXRlZCBMQU4gZm9yIDgwMi41CiAgICAgICAgICAgICAgICAgICAgY2N0RW11bCg2MSksICAgICAgICAtLSBBVE0gRW11bGF0ZWQgY2lyY3VpdCAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICBmYXN0RXRoZXIoNjIpLCAgICAgIC0tIE9ic29sZXRlZCB2aWEgUkZDLWRyYWZ0LWlldGYtaHVibWliLWV0aGVyaWYtbWliLXYzICBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAorICAgICAgICAgICAgICAgICAgIGZhc3RFdGhlcig2MiksICAgICAgLS0gT2Jzb2xldGVkIHZpYSBSRkMzNjM1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAogICAgICAgICAgICAgICAgICAgIGlzZG4oNjMpLCAgICAgICAgICAgLS0gSVNETiBhbmQgWC4yNSAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgdjExKDY0KSwgICAgICAgICAgICAtLSBDQ0lUVCBWLjExL1guMjEgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgdjM2KDY1KSwgICAgICAgICAgICAtLSBDQ0lUVCBWLjM2ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZzcwM2F0NjRrKDY2KSwgICAgICAtLSBDQ0lUVCBHNzAzIGF0IDY0S2JwcwogICAgICAgICAgICAgICAgICAgIGc3MDNhdDJtYig2NyksICAgICAgLS0gT2Jzb2xldGUgc2VlIERTMS1NSUIKICAgICAgICAgICAgICAgICAgICBxbGxjKDY4KSwgICAgICAgICAgIC0tIFNOQSBRTExDICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICBmYXN0RXRoZXJGWCg2OSksICAgIC0tIE9ic29sZXRlZCB2aWEgUkZDLWRyYWZ0LWlldGYtaHVibWliLWV0aGVyaWYtbWliLXYzICBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAorICAgICAgICAgICAgICAgICAgIGZhc3RFdGhlckZYKDY5KSwgICAgLS0gT2Jzb2xldGVkIHZpYSBSRkMzNjM1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAogICAgICAgICAgICAgICAgICAgIGNoYW5uZWwoNzApLCAgICAgICAgLS0gY2hhbm5lbCAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGllZWU4MDIxMSg3MSksICAgICAgLS0gcmFkaW8gc3ByZWFkIHNwZWN0cnVtICAgICAgIAotCSAgICAgICAgICAgaWJtMzcwcGFyQ2hhbig3MiksICAtLSBJQk0gU3lzdGVtIDM2MC8zNzAgT0VNSSBDaGFubmVsCisgICAgICAgICAgICAgICAgICAgaWJtMzcwcGFyQ2hhbig3MiksICAtLSBJQk0gU3lzdGVtIDM2MC8zNzAgT0VNSSBDaGFubmVsCiAgICAgICAgICAgICAgICAgICAgZXNjb24oNzMpLCAgICAgICAgICAtLSBJQk0gRW50ZXJwcmlzZSBTeXN0ZW1zIENvbm5lY3Rpb24KICAgICAgICAgICAgICAgICAgICBkbHN3KDc0KSwgICAgICAgICAgIC0tIERhdGEgTGluayBTd2l0Y2hpbmcKICAgICAgICAgICAgICAgICAgICBpc2Rucyg3NSksICAgICAgICAgIC0tIElTRE4gUy9UIGludGVyZmFjZQpAQCAtMzEzLDYxICszODEsNjIgQEAKICAgICAgICAgICAgICAgICAgICB2b2ljZU92ZXJJcCgxMDQpLCAgIC0tIHZvaWNlIG92ZXIgSVAgZW5jYXBzdWxhdGlvbgogICAgICAgICAgICAgICAgICAgIGF0bUR4aSgxMDUpLCAgICAgICAgLS0gQVRNIERYSQogICAgICAgICAgICAgICAgICAgIGF0bUZ1bmkoMTA2KSwgICAgICAgLS0gQVRNIEZVTkkKLQkJICAgYXRtSW1hICgxMDcpLCAgICAgICAtLSBBVE0gSU1BCQkgICAKKyAgICAgICAgICAgICAgICAgICBhdG1JbWEgKDEwNyksICAgICAgIC0tIEFUTSBJTUEJCSAgIAogICAgICAgICAgICAgICAgICAgIHBwcE11bHRpbGlua0J1bmRsZSgxMDgpLCAtLSBQUFAgTXVsdGlsaW5rIEJ1bmRsZQogICAgICAgICAgICAgICAgICAgIGlwT3ZlckNkbGMgKDEwOSksICAgLS0gSUJNIGlwT3ZlckNkbGMKLQkJICAgaXBPdmVyQ2xhdyAoMTEwKSwgICAtLSBJQk0gQ29tbW9uIExpbmsgQWNjZXNzIHRvIFdvcmtzdG4KKyAgICAgICAgICAgICAgICAgICBpcE92ZXJDbGF3ICgxMTApLCAgIC0tIElCTSBDb21tb24gTGluayBBY2Nlc3MgdG8gV29ya3N0bgogICAgICAgICAgICAgICAgICAgIHN0YWNrVG9TdGFjayAoMTExKSwgLS0gSUJNIHN0YWNrVG9TdGFjawogICAgICAgICAgICAgICAgICAgIHZpcnR1YWxJcEFkZHJlc3MgKDExMiksIC0tIElCTSBWSVBBCi0JCSAgIG1wYyAoMTEzKSwgICAgICAgICAgLS0gSUJNIG11bHRpLXByb3RvY29sIGNoYW5uZWwgc3VwcG9ydAotCQkgICBpcE92ZXJBdG0gKDExNCksICAgIC0tIElCTSBpcE92ZXJBdG0KLQkJICAgaXNvODgwMjVGaWJlciAoMTE1KSwgLS0gSVNPIDgwMi41aiBGaWJlciBUb2tlbiBSaW5nCi0JCSAgIHRkbGMgKDExNiksCSAgICAgICAtLSBJQk0gdHdpbmF4aWFsIGRhdGEgbGluayBjb250cm9sCi0JCSAgIGdpZ2FiaXRFdGhlcm5ldCAoMTE3KSwgLS0gT2Jzb2xldGVkIHZpYSBSRkMtZHJhZnQtaWV0Zi1odWJtaWItZXRoZXJpZi1taWItdjMgIGV0aGVybmV0Q3NtYWNkICg2KSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkCi0JCSAgIGhkbGMgKDExOCksICAgICAgICAgLS0gSERMQwotCQkgICBsYXBmICgxMTkpLAkgICAgICAgLS0gTEFQIEYKLQkJICAgdjM3ICgxMjApLAkgICAgICAgLS0gVi4zNwotCQkgICB4MjVtbHAgKDEyMSksICAgICAgIC0tIE11bHRpLUxpbmsgUHJvdG9jb2wKLQkJICAgeDI1aHVudEdyb3VwICgxMjIpLCAtLSBYMjUgSHVudCBHcm91cAotCQkgICB0cmFzbnBIZGxjICgxMjMpLCAgIC0tIFRyYW5zcCBIRExDCi0JCSAgIGludGVybGVhdmUgKDEyNCksICAgLS0gSW50ZXJsZWF2ZSBjaGFubmVsCi0JCSAgIGZhc3QgKDEyNSksICAgICAgICAgLS0gRmFzdCBjaGFubmVsCi0JCSAgIGlwICgxMjYpLAkgICAgICAgLS0gSVAgKGZvciBBUFBOIEhQUiBpbiBJUCBuZXR3b3JrcykKLQkJICAgZG9jc0NhYmxlTWFjbGF5ZXIgKDEyNyksICAtLSBDQVRWIE1hYyBMYXllcgotCQkgICBkb2NzQ2FibGVEb3duc3RyZWFtICgxMjgpLCAtLSBDQVRWIERvd25zdHJlYW0gaW50ZXJmYWNlCi0JCSAgIGRvY3NDYWJsZVVwc3RyZWFtICgxMjkpLCAgLS0gQ0FUViBVcHN0cmVhbSBpbnRlcmZhY2UKLQkJICAgYTEyTXBwU3dpdGNoICgxMzApLCAtLSBBdmFsb24gUGFyYWxsZWwgUHJvY2Vzc29yCi0JCSAgIHR1bm5lbCAoMTMxKSwgICAgICAgLS0gRW5jYXBzdWxhdGlvbiBpbnRlcmZhY2UKLQkJICAgY29mZmVlICgxMzIpLCAgICAgICAtLSBjb2ZmZWUgcG90Ci0JCSAgIGNlcyAoMTMzKSwgICAgICAgICAgLS0gQ2lyY3VpdCBFbXVsYXRpb24gU2VydmljZQotCQkgICBhdG1TdWJJbnRlcmZhY2UgKDEzNCksIC0tIEFUTSBTdWIgSW50ZXJmYWNlCi0JCSAgIGwydmxhbiAoMTM1KSwgICAgICAgLS0gTGF5ZXIgMiBWaXJ0dWFsIExBTiB1c2luZyA4MDIuMVEKLQkJICAgbDNpcHZsYW4gKDEzNiksICAgICAtLSBMYXllciAzIFZpcnR1YWwgTEFOIHVzaW5nIElQCi0JCSAgIGwzaXB4dmxhbiAoMTM3KSwgICAgLS0gTGF5ZXIgMyBWaXJ0dWFsIExBTiB1c2luZyBJUFgKLQkJICAgZGlnaXRhbFBvd2VybGluZSAoMTM4KSwgLS0gSVAgb3ZlciBQb3dlciBMaW5lcwkKLQkJICAgbWVkaWFNYWlsT3ZlcklwICgxMzkpLCAtLSBNdWx0aW1lZGlhIE1haWwgb3ZlciBJUAotCQkgICBkdG0gKDE0MCksICAgICAgICAtLSBEeW5hbWljIHN5bmNyb25vdXMgVHJhbnNmZXIgTW9kZQotCQkgICBkY24gKDE0MSksICAgIC0tIERhdGEgQ29tbXVuaWNhdGlvbnMgTmV0d29yawotCQkgICBpcEZvcndhcmQgKDE0MiksICAgIC0tIElQIEZvcndhcmRpbmcgSW50ZXJmYWNlCi0JCSAgIG1zZHNsICgxNDMpLCAgICAgICAtLSBNdWx0aS1yYXRlIFN5bW1ldHJpYyBEU0wKLQkJICAgaWVlZTEzOTQgKDE0NCksIC0tIElFRUUxMzk0IEhpZ2ggUGVyZm9ybWFuY2UgU2VyaWFsIEJ1cwotCQkgICBpZi1nc24gKDE0NSksICAgICAgIC0tICAgSElQUEktNjQwMCAKLQkJICAgZHZiUmNjTWFjTGF5ZXIgKDE0NiksIC0tIERWQi1SQ0MgTUFDIExheWVyCi0JCSAgIGR2YlJjY0Rvd25zdHJlYW0gKDE0NyksICAtLSBEVkItUkNDIERvd25zdHJlYW0gQ2hhbm5lbAotCQkgICBkdmJSY2NVcHN0cmVhbSAoMTQ4KSwgIC0tIERWQi1SQ0MgVXBzdHJlYW0gQ2hhbm5lbAotCQkgICBhdG1WaXJ0dWFsICgxNDkpLCAgIC0tIEFUTSBWaXJ0dWFsIEludGVyZmFjZQotCQkgICBtcGxzVHVubmVsICgxNTApLCAgIC0tIE1QTFMgVHVubmVsIFZpcnR1YWwgSW50ZXJmYWNlCi0JCSAgIHNycCAoMTUxKSwJLS0gU3BhdGlhbCBSZXVzZSBQcm90b2NvbAkKLQkJICAgdm9pY2VPdmVyQXRtICgxNTIpLCAgLS0gVm9pY2UgT3ZlciBBVE0KLQkJICAgdm9pY2VPdmVyRnJhbWVSZWxheSAoMTUzKSwgICAtLSBWb2ljZSBPdmVyIEZyYW1lIFJlbGF5IAotCQkgICBpZHNsICgxNTQpLAkJLS0gRGlnaXRhbCBTdWJzY3JpYmVyIExvb3Agb3ZlciBJU0ROCi0JCSAgIGNvbXBvc2l0ZUxpbmsgKDE1NSksICAtLSBBdmljaSBDb21wb3NpdGUgTGluayBJbnRlcmZhY2UKLQkJICAgc3M3U2lnTGluayAoMTU2KSwgICAgIC0tIFNTNyBTaWduYWxpbmcgTGluayAKLQkJICAgcHJvcFdpcmVsZXNzUDJQICgxNTcpLCAgLS0gIFByb3AuIFAyUCB3aXJlbGVzcyBpbnRlcmZhY2UKLQkJICAgZnJGb3J3YXJkICgxNTgpLCAgICAtLSBGcmFtZSBGb3J3YXJkIEludGVyZmFjZQotCQkgICByZmMxNDgzICgxNTkpLAktLSBNdWx0aXByb3RvY29sIG92ZXIgQVRNIEFBTDUKLQkJICAgdXNiICgxNjApLAkJLS0gVVNCIEludGVyZmFjZQotCQkgICBpZWVlODAyM2FkTGFnICgxNjEpLCAgLS0gSUVFRSA4MDIuM2FkIExpbmsgQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgbXBjICgxMTMpLCAgICAgICAgICAtLSBJQk0gbXVsdGktcHJvdG9jb2wgY2hhbm5lbCBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgaXBPdmVyQXRtICgxMTQpLCAgICAtLSBJQk0gaXBPdmVyQXRtCisgICAgICAgICAgICAgICAgICAgaXNvODgwMjVGaWJlciAoMTE1KSwgLS0gSVNPIDgwMi41aiBGaWJlciBUb2tlbiBSaW5nCisgICAgICAgICAgICAgICAgICAgdGRsYyAoMTE2KSwJICAgICAgIC0tIElCTSB0d2luYXhpYWwgZGF0YSBsaW5rIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICBnaWdhYml0RXRoZXJuZXQgKDExNyksIC0tIE9ic29sZXRlZCB2aWEgUkZDMzYzNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gZXRoZXJuZXRDc21hY2QgKDYpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQKKyAgICAgICAgICAgICAgICAgICBoZGxjICgxMTgpLCAgICAgICAgIC0tIEhETEMKKyAgICAgICAgICAgICAgICAgICBsYXBmICgxMTkpLAkgICAgICAgLS0gTEFQIEYKKyAgICAgICAgICAgICAgICAgICB2MzcgKDEyMCksCSAgICAgICAtLSBWLjM3CisgICAgICAgICAgICAgICAgICAgeDI1bWxwICgxMjEpLCAgICAgICAtLSBNdWx0aS1MaW5rIFByb3RvY29sCisgICAgICAgICAgICAgICAgICAgeDI1aHVudEdyb3VwICgxMjIpLCAtLSBYMjUgSHVudCBHcm91cAorICAgICAgICAgICAgICAgICAgIHRyYW5zcEhkbGMgKDEyMyksICAgLS0gVHJhbnNwIEhETEMKKyAgICAgICAgICAgICAgICAgICBpbnRlcmxlYXZlICgxMjQpLCAgIC0tIEludGVybGVhdmUgY2hhbm5lbAorICAgICAgICAgICAgICAgICAgIGZhc3QgKDEyNSksICAgICAgICAgLS0gRmFzdCBjaGFubmVsCisgICAgICAgICAgICAgICAgICAgaXAgKDEyNiksCSAgICAgICAtLSBJUCAoZm9yIEFQUE4gSFBSIGluIElQIG5ldHdvcmtzKQorICAgICAgICAgICAgICAgICAgIGRvY3NDYWJsZU1hY2xheWVyICgxMjcpLCAgLS0gQ0FUViBNYWMgTGF5ZXIKKyAgICAgICAgICAgICAgICAgICBkb2NzQ2FibGVEb3duc3RyZWFtICgxMjgpLCAtLSBDQVRWIERvd25zdHJlYW0gaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgZG9jc0NhYmxlVXBzdHJlYW0gKDEyOSksICAtLSBDQVRWIFVwc3RyZWFtIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIGExMk1wcFN3aXRjaCAoMTMwKSwgLS0gQXZhbG9uIFBhcmFsbGVsIFByb2Nlc3NvcgorICAgICAgICAgICAgICAgICAgIHR1bm5lbCAoMTMxKSwgICAgICAgLS0gRW5jYXBzdWxhdGlvbiBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBjb2ZmZWUgKDEzMiksICAgICAgIC0tIGNvZmZlZSBwb3QKKyAgICAgICAgICAgICAgICAgICBjZXMgKDEzMyksICAgICAgICAgIC0tIENpcmN1aXQgRW11bGF0aW9uIFNlcnZpY2UKKyAgICAgICAgICAgICAgICAgICBhdG1TdWJJbnRlcmZhY2UgKDEzNCksIC0tIEFUTSBTdWIgSW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgbDJ2bGFuICgxMzUpLCAgICAgICAtLSBMYXllciAyIFZpcnR1YWwgTEFOIHVzaW5nIDgwMi4xUQorICAgICAgICAgICAgICAgICAgIGwzaXB2bGFuICgxMzYpLCAgICAgLS0gTGF5ZXIgMyBWaXJ0dWFsIExBTiB1c2luZyBJUAorICAgICAgICAgICAgICAgICAgIGwzaXB4dmxhbiAoMTM3KSwgICAgLS0gTGF5ZXIgMyBWaXJ0dWFsIExBTiB1c2luZyBJUFgKKyAgICAgICAgICAgICAgICAgICBkaWdpdGFsUG93ZXJsaW5lICgxMzgpLCAtLSBJUCBvdmVyIFBvd2VyIExpbmVzCQorICAgICAgICAgICAgICAgICAgIG1lZGlhTWFpbE92ZXJJcCAoMTM5KSwgLS0gTXVsdGltZWRpYSBNYWlsIG92ZXIgSVAKKyAgICAgICAgICAgICAgICAgICBkdG0gKDE0MCksICAgICAgICAtLSBEeW5hbWljIHN5bmNyb25vdXMgVHJhbnNmZXIgTW9kZQorICAgICAgICAgICAgICAgICAgIGRjbiAoMTQxKSwgICAgLS0gRGF0YSBDb21tdW5pY2F0aW9ucyBOZXR3b3JrCisgICAgICAgICAgICAgICAgICAgaXBGb3J3YXJkICgxNDIpLCAgICAtLSBJUCBGb3J3YXJkaW5nIEludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIG1zZHNsICgxNDMpLCAgICAgICAtLSBNdWx0aS1yYXRlIFN5bW1ldHJpYyBEU0wKKyAgICAgICAgICAgICAgICAgICBpZWVlMTM5NCAoMTQ0KSwgLS0gSUVFRTEzOTQgSGlnaCBQZXJmb3JtYW5jZSBTZXJpYWwgQnVzCisgICAgICAgICAgICAgICAgICAgaWYtZ3NuICgxNDUpLCAgICAgICAtLSAgIEhJUFBJLTY0MDAgCisgICAgICAgICAgICAgICAgICAgZHZiUmNjTWFjTGF5ZXIgKDE0NiksIC0tIERWQi1SQ0MgTUFDIExheWVyCisgICAgICAgICAgICAgICAgICAgZHZiUmNjRG93bnN0cmVhbSAoMTQ3KSwgIC0tIERWQi1SQ0MgRG93bnN0cmVhbSBDaGFubmVsCisgICAgICAgICAgICAgICAgICAgZHZiUmNjVXBzdHJlYW0gKDE0OCksICAtLSBEVkItUkNDIFVwc3RyZWFtIENoYW5uZWwKKyAgICAgICAgICAgICAgICAgICBhdG1WaXJ0dWFsICgxNDkpLCAgIC0tIEFUTSBWaXJ0dWFsIEludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIG1wbHNUdW5uZWwgKDE1MCksICAgLS0gTVBMUyBUdW5uZWwgVmlydHVhbCBJbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBzcnAgKDE1MSksCS0tIFNwYXRpYWwgUmV1c2UgUHJvdG9jb2wJCisgICAgICAgICAgICAgICAgICAgdm9pY2VPdmVyQXRtICgxNTIpLCAgLS0gVm9pY2UgT3ZlciBBVE0KKyAgICAgICAgICAgICAgICAgICB2b2ljZU92ZXJGcmFtZVJlbGF5ICgxNTMpLCAgIC0tIFZvaWNlIE92ZXIgRnJhbWUgUmVsYXkgCisgICAgICAgICAgICAgICAgICAgaWRzbCAoMTU0KSwJCS0tIERpZ2l0YWwgU3Vic2NyaWJlciBMb29wIG92ZXIgSVNETgorICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0ZUxpbmsgKDE1NSksICAtLSBBdmljaSBDb21wb3NpdGUgTGluayBJbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBzczdTaWdMaW5rICgxNTYpLCAgICAgLS0gU1M3IFNpZ25hbGluZyBMaW5rIAorICAgICAgICAgICAgICAgICAgIHByb3BXaXJlbGVzc1AyUCAoMTU3KSwgIC0tICBQcm9wLiBQMlAgd2lyZWxlc3MgaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgZnJGb3J3YXJkICgxNTgpLCAgICAtLSBGcmFtZSBGb3J3YXJkIEludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIHJmYzE0ODMgKDE1OSksCS0tIE11bHRpcHJvdG9jb2wgb3ZlciBBVE0gQUFMNQorICAgICAgICAgICAgICAgICAgIHVzYiAoMTYwKSwJCS0tIFVTQiBJbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBpZWVlODAyM2FkTGFnICgxNjEpLCAgLS0gSUVFRSA4MDIuM2FkIExpbmsgQWdncmVnYXRlCiAgICAgICAgICAgICAgICAgICAgYmdwcG9saWN5YWNjb3VudGluZyAoMTYyKSwgLS0gQkdQIFBvbGljeSBBY2NvdW50aW5nCiAgICAgICAgICAgICAgICAgICAgZnJmMTZNZnJCdW5kbGUgKDE2MyksIC0tIEZSRiAuMTYgTXVsdGlsaW5rIEZyYW1lIFJlbGF5IAogICAgICAgICAgICAgICAgICAgIGgzMjNHYXRla2VlcGVyICgxNjQpLCAtLSBIMzIzIEdhdGVrZWVwZXIKQEAgLTM5MSw2ICs0NjAsOSBAQAogICAgICAgICAgICAgICAgICAgIHByb3BEb2NzV2lyZWxlc3NVcHN0cmVhbSAoMTgyKSwgLS0gQ2lzY28gcHJvcHJpZXRhcnkgVXBzdHJlYW0KICAgICAgICAgICAgICAgICAgICBoaXBlcmxhbjIgKDE4MyksIC0tIEhJUEVSTEFOIFR5cGUgMiBSYWRpbyBJbnRlcmZhY2UKICAgICAgICAgICAgICAgICAgICBwcm9wQldBcDJNcCAoMTg0KSwgLS0gUHJvcEJyb2FkYmFuZFdpcmVsZXNzQWNjZXNzcHQybXVsdGlwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSB1c2Ugb2YgdGhpcyBpZnR5cGUgZm9yIElFRUUgODAyLjE2IFdNQU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gaW50ZXJmYWNlcyBhcyBwZXIgSUVFRSBTdGQgODAyLjE2ZiBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBkZXByZWNhdGVkIGFuZCBpZlR5cGUgMjM3IHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCiAgICAgICAgICAgICAgICAgICAgc29uZXRPdmVyaGVhZENoYW5uZWwgKDE4NSksIC0tIFNPTkVUIE92ZXJoZWFkIENoYW5uZWwKICAgICAgICAgICAgICAgICAgICBkaWdpdGFsV3JhcHBlck92ZXJoZWFkQ2hhbm5lbCAoMTg2KSwgLS0gRGlnaXRhbCBXcmFwcGVyCiAgICAgICAgICAgICAgICAgICAgYWFsMiAoMTg3KSwgLS0gQVRNIGFkYXB0YXRpb24gbGF5ZXIgMgpAQCAtNDM0LDEwICs1MDYsMzQgQEAKICAgICAgICAgICAgICAgICAgICBycHIgKDIyNSksIC0tIFJlc2lsaWVudCBQYWNrZXQgUmluZyBJbnRlcmZhY2UgVHlwZQogICAgICAgICAgICAgICAgICAgIHFhbSAoMjI2KSwgLS0gUkYgUWFtIEludGVyZmFjZQogICAgICAgICAgICAgICAgICAgIGxtcCAoMjI3KSwgLS0gTGluayBNYW5hZ2VtZW50IFByb3RvY29sCi0gICAgICAgICAgICAgICAgICAgY2JsVmVjdGFTdGFyICgyMjgpLCAtLSBDYW1icmlkZ2UgQnJvYWRiYW5kIExpbWl0ZWQgVmVjdGFTdGFyCisgICAgICAgICAgICAgICAgICAgY2JsVmVjdGFTdGFyICgyMjgpLCAtLSBDYW1icmlkZ2UgQnJvYWRiYW5kIE5ldHdvcmtzIExpbWl0ZWQgVmVjdGFTdGFyCiAgICAgICAgICAgICAgICAgICAgZG9jc0NhYmxlTUNtdHNEb3duc3RyZWFtICgyMjkpLCAtLSBDQVRWIE1vZHVsYXIgQ01UUyBEb3duc3RyZWFtIEludGVyZmFjZQotICAgICAgICAgICAgICAgICAgIGFkc2wyICgyMzApIC0tIEFzeW1tZXRyaWMgRGlnaXRhbCBTdWJzY3JpYmVyIExvb3AgVmVyc2lvbiAyCi0gICAgCQkJICAgfQorICAgICAgICAgICAgICAgICAgIGFkc2wyICgyMzApLCAtLSBBc3ltbWV0cmljIERpZ2l0YWwgU3Vic2NyaWJlciBMb29wIFZlcnNpb24gMiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gKERFUFJFQ0FURUQvT0JTT0xFVEVEIC0gcGxlYXNlIHVzZSBhZHNsMnBsdXMgMjM4IGluc3RlYWQpCisgICAgICAgICAgICAgICAgICAgbWFjU2VjQ29udHJvbGxlZElGICgyMzEpLCAtLSBNQUNTZWNDb250cm9sbGVkIAorICAgICAgICAgICAgICAgICAgIG1hY1NlY1VuY29udHJvbGxlZElGICgyMzIpLCAtLSBNQUNTZWNVbmNvbnRyb2xsZWQKKyAgICAgICAgICAgICAgICAgICBhdmljaU9wdGljYWxFdGhlciAoMjMzKSwgLS0gQXZpY2kgT3B0aWNhbCBFdGhlcm5ldCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICBhdG1ib25kICgyMzQpLCAtLSBhdG1ib25kCisgICAgICAgICAgICAgICAgICAgdm9pY2VGR0RPUyAoMjM1KSwgLS0gdm9pY2UgRkdEIE9wZXJhdG9yIFNlcnZpY2VzCisgICAgICAgICAgICAgICAgICAgbW9jYVZlcnNpb24xICgyMzYpLCAtLSBNdWx0aU1lZGlhIG92ZXIgQ29heCBBbGxpYW5jZSAoTW9DQSkgSW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGFzIGRvY3VtZW50ZWQgaW4gaW5mb3JtYXRpb24gcHJvdmlkZWQgcHJpdmF0ZWx5IHRvIElBTkEKKyAgICAgICAgICAgICAgICAgICBpZWVlODAyMTZXTUFOICgyMzcpLCAtLSBJRUVFIDgwMi4xNiBXTUFOIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIGFkc2wycGx1cyAoMjM4KSwgLS0gQXN5bW1ldHJpYyBEaWdpdGFsIFN1YnNjcmliZXIgTG9vcCBWZXJzaW9uIDIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBWZXJzaW9uIDIgUGx1cyBhbmQgYWxsIHZhcmlhbnRzCisgICAgICAgICAgICAgICAgICAgZHZiUmNzTWFjTGF5ZXIgKDIzOSksIC0tIERWQi1SQ1MgTUFDIExheWVyCisgICAgICAgICAgICAgICAgICAgZHZiVGRtICgyNDApLCAtLSBEVkIgU2F0ZWxsaXRlIFRETQorICAgICAgICAgICAgICAgICAgIGR2YlJjc1RkbWEgKDI0MSksIC0tIERWQi1SQ1MgVERNQQorICAgICAgICAgICAgICAgICAgIHg4NkxhcHMgKDI0MiksIC0tIExBUFMgYmFzZWQgb24gSVRVLVQgWC44Ni9ZLjEzMjMKKyAgICAgICAgICAgICAgICAgICB3d2FuUFAgKDI0MyksIC0tIDNHUFAgV1dBTgorICAgICAgICAgICAgICAgICAgIHd3YW5QUDIgKDI0NCksIC0tIDNHUFAyIFdXQU4KKyAgICAgICAgICAgICAgICAgICB2b2ljZUVCUyAoMjQ1KSwgLS0gdm9pY2UgUC1waG9uZSBFQlMgcGh5c2ljYWwgaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgaWZQd1R5cGUgKDI0NiksIC0tIFBzZXVkb3dpcmUgaW50ZXJmYWNlIHR5cGUKKyAgICAgICAgICAgICAgICAgICBpbGFuICgyNDcpLCAtLSBJbnRlcm5hbCBMQU4gb24gYSBicmlkZ2UgcGVyIElFRUUgODAyLjFhcAorICAgICAgICAgICAgICAgICAgIHBpcCAoMjQ4KSwgLS0gUHJvdmlkZXIgSW5zdGFuY2UgUG9ydCBvbiBhIGJyaWRnZSBwZXIgSUVFRSA4MDIuMWFoIFBCQgorICAgICAgICAgICAgICAgICAgIGFsdUVMUCAoMjQ5KSwgLS0gQWxjYXRlbC1MdWNlbnQgRXRoZXJuZXQgTGluayBQcm90ZWN0aW9uCisgICAgICAgICAgICAgICAgICAgZ3BvbiAoMjUwKSwgLS0gR2lnYWJpdC1jYXBhYmxlIHBhc3NpdmUgb3B0aWNhbCBuZXR3b3JrcyAoRy1QT04pIGFzIHBlciBJVFUtVCBHLjk0OAorICAgICAgICAgICAgICAgICAgIHZkc2wyICgyNTEpIC0tIFZlcnkgaGlnaCBzcGVlZCBkaWdpdGFsIHN1YnNjcmliZXIgbGluZSBWZXJzaW9uIDIgKGFzIHBlciBJVFUtVCBSZWNvbW1lbmRhdGlvbiBHLjk5My4yKQorICAgICAgICAgICAgICAgICAgIH0KIAogSUFOQXR1bm5lbFR5cGUgOjo9IFRFWFRVQUwtQ09OVkVOVElPTgogICAgIFNUQVRVUyAgICAgY3VycmVudApAQCAtNDgxLDcgKzU3Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgc2l4VG9Gb3VyKDExKSwgICAtLSA2dG80IGVuY2Fwc3VsYXRpb24KICAgICAgICAgICAgICAgICAgICBzaXhPdmVyRm91cigxMiksIC0tIDZvdmVyNCBlbmNhcHN1bGF0aW9uCiAgICAgICAgICAgICAgICAgICAgaXNhdGFwKDEzKSwgICAgICAtLSBJU0FUQVAgZW5jYXBzdWxhdGlvbgotICAgICAgICAgICAgICAgICAgIHRlcmVkbygxNCkgICAgICAgLS0gVGVyZWRvIGVuY2Fwc3VsYXRpb24KKyAgICAgICAgICAgICAgICAgICB0ZXJlZG8oMTQpLCAgICAgIC0tIFRlcmVkbyBlbmNhcHN1bGF0aW9uCisgICAgICAgICAgICAgICAgICAgaXBIdHRwcygxNSkgICAgICAtLSBJUEhUVFBTCiAgICAgICAgICAgICAgICB9CiAKICAgIEVORApkaWZmIC0tZ2l0IGEvbWlicy9JUC1GT1JXQVJELU1JQi50eHQgYi9taWJzL0lQLUZPUldBUkQtTUlCLnR4dAppbmRleCAzMDkwZmY3Li4zNDdiNWUwIDEwMDY0NAotLS0gYS9taWJzL0lQLUZPUldBUkQtTUlCLnR4dAorKysgYi9taWJzL0lQLUZPUldBUkQtTUlCLnR4dApAQCAtNiw4ICs2LDYgQEAKICAgICBDb3VudGVyMzIgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gU05NUHYyLVNNSQogICAgIFJvd1N0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBTTk1QdjItVEMKIAotCi0KICAgICBNT0RVTEUtQ09NUExJQU5DRSwgT0JKRUNULUdST1VQICAgIEZST00gU05NUHYyLUNPTkYKICAgICBJbnRlcmZhY2VJbmRleE9yWmVybyAgICAgICAgICAgICAgIEZST00gSUYtTUlCCiAgICAgaXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIElQLU1JQgpAQCAtNTYsOSArNTQsNiBAQAogICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIElQIEZvcndhcmRpbmcgTUlCIGluIGEKICAgICAgICAgICAgIHJlYWQtb25seSBtb2RlLgogCi0KLQotCiAgICAgICAgICAgICBUaGUgaW5ldENpZHJSb3V0ZVRhYmxlIHJlcGxhY2VzIHRoZSBJUHY0LXNwZWNpZmljCiAgICAgICAgICAgICBpcENpZHJSb3V0ZVRhYmxlLCBpdHMgcmVsYXRlZCBvYmplY3RzLCBhbmQgcmVsYXRlZAogICAgICAgICAgICAgY29uZm9ybWFuY2Ugc3RhdGVtZW50cy4KQEAgLTEwNyw5ICsxMDIsNiBAQAogICAgIE1BWC1BQ0NFU1Mgbm90LWFjY2Vzc2libGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAiVGhpcyBlbnRpdHkncyBJUCBSb3V0aW5nIHRhYmxlLiIKICAgICBSRUZFUkVOQ0UKICAgICAgICAgICAgIlJGQyAxMjEzIFNlY3Rpb24gNi42LCBUaGUgSVAgR3JvdXAiCkBAIC0xNTgsOSArMTUwLDYgQEAKICAgICAgICAgaW5ldENpZHJSb3V0ZU1ldHJpYzEgICAgICBJbnRlZ2VyMzIsCiAgICAgICAgIGluZXRDaWRyUm91dGVNZXRyaWMyICAgICAgSW50ZWdlcjMyLAogICAgICAgICBpbmV0Q2lkclJvdXRlTWV0cmljMyAgICAgIEludGVnZXIzMiwKLQotCi0KICAgICAgICAgaW5ldENpZHJSb3V0ZU1ldHJpYzQgICAgICBJbnRlZ2VyMzIsCiAgICAgICAgIGluZXRDaWRyUm91dGVNZXRyaWM1ICAgICAgSW50ZWdlcjMyLAogICAgICAgICBpbmV0Q2lkclJvdXRlU3RhdHVzICAgICAgIFJvd1N0YXR1cwpAQCAtMTk4LDcgKzE4Nyw2IEBACiAgICAgICAgICAgICBlcXVhbCB0byB4LiAgSWYgbm90LCB0aGVuIHRoZSBpbmRleCBwYWlyIGlzIG5vdAogICAgICAgICAgICAgY29uc2lzdGVudCBhbmQgYW4gaW5jb25zaXN0ZW50TmFtZSBlcnJvciBtdXN0IGJlCiAgICAgICAgICAgICByZXR1cm5lZCBvbiBTRVQgb3IgQ1JFQVRFIHJlcXVlc3RzLiIKLQogICAgIDo6PSB7IGluZXRDaWRyUm91dGVFbnRyeSAyIH0KIAogaW5ldENpZHJSb3V0ZVBmeExlbiBPQkpFQ1QtVFlQRQpAQCAtMjEwLDggKzE5OCw2IEBACiAgICAgICAgICAgICBtYXNrIHRvIGJlIGxvZ2ljYWwtQU5EZWQgd2l0aCB0aGUgZGVzdGluYXRpb24gYWRkcmVzcwogICAgICAgICAgICAgYmVmb3JlIGJlaW5nIGNvbXBhcmVkIHRvIHRoZSB2YWx1ZSBpbiB0aGUKIAotCi0KICAgICAgICAgICAgIGluZXRDaWRyUm91dGVEZXN0IGZpZWxkLgogCiAgICAgICAgICAgICBUaGUgdmFsdWVzIGZvciB0aGUgaW5kZXggb2JqZWN0cyBpbmV0Q2lkclJvdXRlRGVzdCBhbmQKQEAgLTIyMyw3ICsyMDksNiBAQAogICAgICAgICAgICAgZXF1YWwgdG8geC4gIElmIG5vdCwgdGhlbiB0aGUgaW5kZXggcGFpciBpcyBub3QKICAgICAgICAgICAgIGNvbnNpc3RlbnQgYW5kIGFuIGluY29uc2lzdGVudE5hbWUgZXJyb3IgbXVzdCBiZQogICAgICAgICAgICAgcmV0dXJuZWQgb24gU0VUIG9yIENSRUFURSByZXF1ZXN0cy4iCi0KICAgICA6Oj0geyBpbmV0Q2lkclJvdXRlRW50cnkgMyB9CiAKIGluZXRDaWRyUm91dGVQb2xpY3kgT0JKRUNULVRZUEUKQEAgLTI2MSw4ICsyNDYsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJPbiByZW1vdGUgcm91dGVzLCB0aGUgYWRkcmVzcyBvZiB0aGUgbmV4dCBzeXN0ZW0gZW4KIAotCi0KICAgICAgICAgICAgIHJvdXRlLiAgRm9yIG5vbi1yZW1vdGUgcm91dGVzLCBhIHplcm8gbGVuZ3RoIHN0cmluZy4KIAogICAgICAgICAgICAgVGhlIHR5cGUgb2YgdGhpcyBhZGRyZXNzIGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mCkBAIC0zMTIsOSArMjk1LDYgQEAKICAgICAgICAgICAgIGRpc2NhcmRzIHRoZSBtZXNzYWdlIHNpbGVudGx5LiIKICAgICA6Oj0geyBpbmV0Q2lkclJvdXRlRW50cnkgOCB9CiAKLQotCi0KIGluZXRDaWRyUm91dGVQcm90byBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSUFOQWlwUm91dGVQcm90b2NvbAogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CkBAIC0zNjIsOSArMzQyLDYgQEAKICAgICAgICAgICAgIHZhbHVlLiAgSWYgdGhpcyBtZXRyaWMgaXMgbm90IHVzZWQsIGl0cyB2YWx1ZSBzaG91bGQgYmUKICAgICAgICAgICAgIHNldCB0byAtMS4iCiAgICAgREVGVkFMIHsgLTEgfQotCi0KLQogICAgIDo6PSB7IGluZXRDaWRyUm91dGVFbnRyeSAxMiB9CiAKIGluZXRDaWRyUm91dGVNZXRyaWMyIE9CSkVDVC1UWVBFCkBAIC00MTQsOCArMzkxLDYgQEAKICAgICAgICAgICAgIkFuIGFsdGVybmF0ZSByb3V0aW5nIG1ldHJpYyBmb3IgdGhpcyByb3V0ZS4gIFRoZQogICAgICAgICAgICAgc2VtYW50aWNzIG9mIHRoaXMgbWV0cmljIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSByb3V0aW5nLQogCi0KLQogICAgICAgICAgICAgcHJvdG9jb2wgc3BlY2lmaWVkIGluIHRoZSByb3V0ZSdzIGluZXRDaWRyUm91dGVQcm90bwogICAgICAgICAgICAgdmFsdWUuICBJZiB0aGlzIG1ldHJpYyBpcyBub3QgdXNlZCwgaXRzIHZhbHVlIHNob3VsZCBiZQogICAgICAgICAgICAgc2V0IHRvIC0xLiIKQEAgLTQ2NSw4ICs0NDAsNiBAQAogICAgICAgICAgICAgLS0gICAgIFRoaXMgTUlCIHJlcXVpcmVzIHN1cHBvcnQgZm9yIGdsb2JhbCBhbmQKICAgICAgICAgICAgIC0tICAgICBub24tZ2xvYmFsIGlwdjQgYW5kIGlwdjYgYWRkcmVzc2VzLgogCi0KLQogICAgICAgICAgICAgLS0KICAgICAgICAgICAgIC0tIE9CSkVDVCAgICAgIGluZXRDaWRyUm91dGVEZXN0CiAgICAgICAgICAgICAtLSBTWU5UQVggICAgICBJbmV0QWRkcmVzcyAoU0laRSAoNCB8IDggfCAxNiB8IDIwKSkKQEAgLTQ5Nyw3ICs0NzAsNiBAQAogICAgV1JJVEUtU1lOVEFYICBSb3dTdGF0dXMgeyBhY3RpdmUoMSksIG5vdEluU2VydmljZSAoMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUFuZEdvKDQpLCBkZXN0cm95KDYpIH0KICAgIERFU0NSSVBUSU9OICAiU3VwcG9ydCBmb3IgY3JlYXRlQW5kV2FpdCBpcyBub3QgcmVxdWlyZWQuIgotCiAgICA6Oj0geyBpcEZvcndhcmRDb21wbGlhbmNlcyAzIH0KIAogaXBGb3J3YXJkUmVhZE9ubHlDb21wbGlhbmNlIE1PRFVMRS1DT01QTElBTkNFCkBAIC01MTUsOSArNDg3LDYgQEAKICAgICAgICJXcml0ZSBhY2Nlc3MgaXMgbm90IHJlcXVpcmVkLiIKIAogICAgT0JKRUNUICAgICAgaW5ldENpZHJSb3V0ZVR5cGUKLQotCi0KICAgIE1JTi1BQ0NFU1MgIHJlYWQtb25seQogICAgREVTQ1JJUFRJT04KICAgICAgICJXcml0ZSBhY2Nlc3MgaXMgbm90IHJlcXVpcmVkLiIKQEAgLTU1Nyw3ICs1MjYsNiBAQAogICAgTUlOLUFDQ0VTUyAgcmVhZC1vbmx5CiAgICBERVNDUklQVElPTgogICAgICAgIldyaXRlIGFjY2VzcyBpcyBub3QgcmVxdWlyZWQuIgotCiAgICA6Oj0geyBpcEZvcndhcmRDb21wbGlhbmNlcyA0IH0KIAogLS0gdW5pdHMgb2YgY29uZm9ybWFuY2UKQEAgLTU2Niw5ICs1MzQsNiBAQAogICAgIE9CSkVDVFMgeyBpbmV0Q2lkclJvdXRlRGlzY2FyZHMsCiAgICAgICAgICAgICAgIGluZXRDaWRyUm91dGVJZkluZGV4LCBpbmV0Q2lkclJvdXRlVHlwZSwKICAgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZVByb3RvLCBpbmV0Q2lkclJvdXRlQWdlLAotCi0KLQogICAgICAgICAgICAgICBpbmV0Q2lkclJvdXRlTmV4dEhvcEFTLCBpbmV0Q2lkclJvdXRlTWV0cmljMSwKICAgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZU1ldHJpYzIsIGluZXRDaWRyUm91dGVNZXRyaWMzLAogICAgICAgICAgICAgICBpbmV0Q2lkclJvdXRlTWV0cmljNCwgaW5ldENpZHJSb3V0ZU1ldHJpYzUsCkBAIC02MTgsOCArNTgzLDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiQSBwYXJ0aWN1bGFyIHJvdXRlIHRvIGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiwgdW5kZXIgYQogCi0KLQogICAgICAgICAgICAgcGFydGljdWxhciBwb2xpY3kuIgogICAgIElOREVYIHsKICAgICAgICAgaXBDaWRyUm91dGVEZXN0LApAQCAtNjY4LDkgKzYzMSw2IEBACiBpcENpZHJSb3V0ZU1hc2sgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIElwQWRkcmVzcwogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5Ci0KLQotCiAgICAgU1RBVFVTICAgICBkZXByZWNhdGVkCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIkluZGljYXRlIHRoZSBtYXNrIHRvIGJlIGxvZ2ljYWwtQU5EZWQgd2l0aCB0aGUKQEAgLTcyMCw4ICs2ODAsNiBAQAogICAgICAgICAgICAgICAgMSAwIDAgMCAgPT0+ICAxNiAgICAgIDEgMCAwIDEgID09PiAgMTgKICAgICAgICAgICAgICAgIDEgMCAxIDAgID09PiAgMjAgICAgICAxIDAgMSAxICA9PT4gIDIyCiAKLQotCiAgICAgICAgICAgICAgICAxIDEgMCAwICA9PT4gIDI0ICAgICAgMSAxIDAgMSAgPT0+ICAyNgogICAgICAgICAgICAgICAgMSAxIDEgMCAgPT0+ICAyOCAgICAgIDEgMSAxIDEgID09PiAgMzAiCiAgICAgOjo9IHsgaXBDaWRyUm91dGVFbnRyeSAzIH0KQEAgLTc3MSw5ICs3MjksNiBAQAogICAgICAgICAgICAgcm91dGVzLiIKICAgICA6Oj0geyBpcENpZHJSb3V0ZUVudHJ5IDYgfQogCi0KLQotCiBpcENpZHJSb3V0ZVByb3RvIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBJTlRFR0VSIHsKICAgICAgICAgICAgICAgICBvdGhlciAgICAgKDEpLCAgLS0gbm90IHNwZWNpZmllZApAQCAtODIxLDkgKzc3Niw2IEBACiBpcENpZHJSb3V0ZUluZm8gT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIE9CSkVDVCBJREVOVElGSUVSCiAgICAgTUFYLUFDQ0VTUyByZWFkLWNyZWF0ZQotCi0KLQogICAgIFNUQVRVUyAgICAgZGVwcmVjYXRlZAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJBIHJlZmVyZW5jZSB0byBNSUIgZGVmaW5pdGlvbnMgc3BlY2lmaWMgdG8gdGhlCkBAIC04NzMsOCArODI1LDYgQEAKICAgICAgICAgICAgIHByb3RvY29sIHNwZWNpZmllZCBpbiB0aGUgcm91dGUncyBpcENpZHJSb3V0ZVByb3RvCiAgICAgICAgICAgICB2YWx1ZS4gIElmIHRoaXMgbWV0cmljIGlzIG5vdCB1c2VkLCBpdHMgdmFsdWUgc2hvdWxkIGJlCiAKLQotCiAgICAgICAgICAgICBzZXQgdG8gLTEuIgogICAgIERFRlZBTCB7IC0xIH0KICAgICA6Oj0geyBpcENpZHJSb3V0ZUVudHJ5IDEyIH0KQEAgLTkyMyw5ICs4NzMsNiBAQAogICAgIE1BWC1BQ0NFU1MgcmVhZC1jcmVhdGUKICAgICBTVEFUVVMgICAgIGRlcHJlY2F0ZWQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAiVGhlIHJvdyBzdGF0dXMgdmFyaWFibGUsIHVzZWQgYWNjb3JkaW5nIHRvIHJvdwogICAgICAgICAgICAgaW5zdGFsbGF0aW9uIGFuZCByZW1vdmFsIGNvbnZlbnRpb25zLiIKICAgICA6Oj0geyBpcENpZHJSb3V0ZUVudHJ5IDE2IH0KQEAgLTk0NCw3ICs4OTEsNiBAQAogCiAgICBNT0RVTEUgIC0tIHRoaXMgbW9kdWxlCiAgICBNQU5EQVRPUlktR1JPVVBTIHsgaXBGb3J3YXJkQ2lkclJvdXRlR3JvdXAgfQotCiAgICA6Oj0geyBpcEZvcndhcmRDb21wbGlhbmNlcyAxIH0KIAogLS0gdW5pdHMgb2YgY29uZm9ybWFuY2UKQEAgLTk3NCw5ICs5MjAsNiBAQAogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBvYnNvbGV0ZQogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIGN1cnJlbnQgaXBGb3J3YXJkVGFibGUgZW50cmllcyB0aGF0IGFyZQogICAgICAgICAgICAgbm90IGludmFsaWQuIgogICAgIDo6PSB7IGlwRm9yd2FyZCAxIH0KQEAgLTEwMjUsOSArOTY4LDYgQEAKICAgICAgICAgaXBGb3J3YXJkSW5mbyAgICAgICBPQkpFQ1QgSURFTlRJRklFUiwKICAgICAgICAgaXBGb3J3YXJkTmV4dEhvcEFTICBJbnRlZ2VyMzIsCiAgICAgICAgIGlwRm9yd2FyZE1ldHJpYzEgICAgSW50ZWdlcjMyLAotCi0KLQogICAgICAgICBpcEZvcndhcmRNZXRyaWMyICAgIEludGVnZXIzMiwKICAgICAgICAgaXBGb3J3YXJkTWV0cmljMyAgICBJbnRlZ2VyMzIsCiAgICAgICAgIGlwRm9yd2FyZE1ldHJpYzQgICAgSW50ZWdlcjMyLApAQCAtMTA3Nyw4ICsxMDE3LDYgQEAKIC0tIGFuZCB0aGUgUm91dGVyIFJlcXVpcmVtZW50cyBkb2N1bWVudHMgZGlzYWdyZWUgb24gdGhlIHdpZHRoCiAtLSBvZiB0aGUgVE9TIGZpZWxkLiAgVGhpcyBtYXBwaW5nIGRlc2NyaWJlcyB0aGUgUm91dGVyCiAKLQotCiAtLSBSZXF1aXJlbWVudHMgbWFwcGluZywgYW5kIGxlYXZlcyByb29tIHRvIHdpZGVuIHRoZSBUT1MgZmllbGQKIC0tIHdpdGhvdXQgaW1wYWN0IHRvIGZpZWxkZWQgc3lzdGVtcy4KIApAQCAtMTEwNSw4ICsxMDQzLDYgQEAKICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwKICAgICAgICAgICAgICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKIAotCi0KICAgICAgICAgICAgICAgICAgICAgICAgICBJUCBUT1MgICAgICAgICAgICAgICAgSVAgVE9TCiAgICAgICAgICAgICAgICBGaWVsZCAgICAgUG9saWN5ICAgICAgRmllbGQgICAgIFBvbGljeQogICAgICAgICAgICAgICAgQ29udGVudHMgICAgQ29kZSAgICAgIENvbnRlbnRzICAgIENvZGUKQEAgLTExMjcsOSArMTA2Myw2IEBACiAgICAgOjo9IHsgaXBGb3J3YXJkRW50cnkgMyB9CiAKIGlwRm9yd2FyZE5leHRIb3AgT0JKRUNULVRZUEUKLQotCi0KICAgICBTWU5UQVggICAgIElwQWRkcmVzcwogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBvYnNvbGV0ZQpAQCAtMTE3OSw5ICsxMTEyLDYgQEAKICAgICBERUZWQUwgeyBpbnZhbGlkIH0KICAgICA6Oj0geyBpcEZvcndhcmRFbnRyeSA2IH0KIAotCi0KLQogaXBGb3J3YXJkUHJvdG8gT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIElOVEVHRVIgewogICAgICAgICAgICAgICAgIG90aGVyICAgICAoMSksICAtLSBub3Qgc3BlY2lmaWVkCkBAIC0xMjI5LDkgKzExNTksNiBAQAogICAgIFNZTlRBWCAgICAgT0JKRUNUIElERU5USUZJRVIKICAgICBNQVgtQUNDRVNTIHJlYWQtY3JlYXRlCiAgICAgU1RBVFVTICAgICBvYnNvbGV0ZQotCi0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJBIHJlZmVyZW5jZSB0byBNSUIgZGVmaW5pdGlvbnMgc3BlY2lmaWMgdG8gdGhlCiAgICAgICAgICAgICBwYXJ0aWN1bGFyIHJvdXRpbmcgcHJvdG9jb2wgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IKQEAgLTEyODEsOSArMTIwOCw2IEBACiAgICAgREVGVkFMIHsgLTEgfQogICAgIDo6PSB7IGlwRm9yd2FyZEVudHJ5IDEyIH0KIAotCi0KLQogaXBGb3J3YXJkTWV0cmljMyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSW50ZWdlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLWNyZWF0ZQpAQCAtMTMzMiwxMiArMTI1Niw4IEBACiAgICAgICAgICAgICJUaGUgY29tcGxpYW5jZSBzdGF0ZW1lbnQgZm9yIFNOTVAgZW50aXRpZXMgdGhhdAogICAgICAgICAgICAgaW1wbGVtZW50IHRoZSBpcEZvcndhcmQgTUlCLiIKIAotCi0KLQogICAgTU9EVUxFICAtLSB0aGlzIG1vZHVsZQogICAgTUFOREFUT1JZLUdST1VQUyB7IGlwRm9yd2FyZE11bHRpUGF0aEdyb3VwIH0KLQogICAgOjo9IHsgaXBGb3J3YXJkQ29tcGxpYW5jZXMgMiB9CiAKIGlwRm9yd2FyZE11bHRpUGF0aEdyb3VwIE9CSkVDVC1HUk9VUApkaWZmIC0tZ2l0IGEvbWlicy9JUC1NSUIudHh0IGIvbWlicy9JUC1NSUIudHh0CmluZGV4IDBhOTM1MDEuLmZlMmRiNWYgMTAwNjQ0Ci0tLSBhL21pYnMvSVAtTUlCLnR4dAorKysgYi9taWJzL0lQLU1JQi50eHQKQEAgLTIxLDggKzIxLDYgQEAKICAgICBDT05UQUNULUlORk8KICAgICAgICAgICAgIkVkaXRvcjoKIAotCi0KICAgICAgICAgICAgIFNoYXduIEEuIFJvdXRoaWVyCiAgICAgICAgICAgICBJbnRlcndvcmtpbmcgTGFicwogICAgICAgICAgICAgMTA4IFdoaXNwZXJpbmcgUGluZXMgRHIuIFN1aXRlIDIzNQpAQCAtNzIsOCArNzAsNiBAQAogCiAgICAgICAgICAgICBsaW5rbGF5ZXIoNSkgaW5kaWNhdGVzIGFuIGFkZHJlc3MgY3JlYXRlZCBieSBJUHY2IHN0YXRlbGVzcwogCi0KLQogICAgICAgICAgICAgYXV0by1jb25maWd1cmF0aW9uLgogCiAgICAgICAgICAgICByYW5kb20oNikgaW5kaWNhdGVzIGFuIGFkZHJlc3MgY2hvc2VuIGJ5IHRoZSBzeXN0ZW0gYXQKQEAgLTEyMyw4ICsxMTksNiBAQAogICAgICAgICAgICAgVGhlIGR1cGxpY2F0ZSg3KSBzdGF0ZSBpbmRpY2F0ZXMgdGhlIGFkZHJlc3MgaGFzIGJlZW4KICAgICAgICAgICAgIGRldGVybWluZWQgdG8gYmUgbm9uLXVuaXF1ZSBvbiB0aGUgbGluayBhbmQgc28gbXVzdCBub3QgYmUKIAotCi0KICAgICAgICAgICAgIHVzZWQuCiAKICAgICAgICAgICAgIFRoZSBvcHRpbWlzdGljKDgpIHN0YXRlIGluZGljYXRlcyB0aGUgYWRkcmVzcyBpcyBhdmFpbGFibGUKQEAgLTE3Myw5ICsxNjcsNiBAQAogICAgICAgICBtYW51YWwoMiksCiAgICAgICAgIHdlbGxrbm93bigzKSwKICAgICAgICAgZGhjcCg0KSwKLQotCi0KICAgICAgICAgcm91dGVyYWR2KDUpCiAgICAgfQogCkBAIC0yMjUsOCArMjE2LDYgQEAKICAgICAgICAgICAgIHRoZSBJUHY0IGhlYWRlciBvZiBkYXRhZ3JhbXMgb3JpZ2luYXRlZCBhdCB0aGlzIGVudGl0eSwKICAgICAgICAgICAgIHdoZW5ldmVyIGEgVFRMIHZhbHVlIGlzIG5vdCBzdXBwbGllZCBieSB0aGUgdHJhbnNwb3J0IGxheWVyCiAKLQotCiAgICAgICAgICAgICBwcm90b2NvbC4KIAogICAgICAgICAgICAgV2hlbiB0aGlzIG9iamVjdCBpcyB3cml0dGVuLCB0aGUgZW50aXR5IHNob3VsZCBzYXZlIHRoZQpAQCAtMjc1LDkgKzI2NCw2IEBACiAgICAgTUFYLUFDQ0VTUyByZWFkLXdyaXRlCiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KLQotCi0KICAgICAgICAgICAgIlRoZSBkZWZhdWx0IHZhbHVlIGluc2VydGVkIGludG8gdGhlIEhvcCBMaW1pdCBmaWVsZCBvZiB0aGUKICAgICAgICAgICAgIElQdjYgaGVhZGVyIG9mIGRhdGFncmFtcyBvcmlnaW5hdGVkIGF0IHRoaXMgZW50aXR5IHdoZW5ldmVyCiAgICAgICAgICAgICBhIEhvcCBMaW1pdCB2YWx1ZSBpcyBub3Qgc3VwcGxpZWQgYnkgdGhlIHRyYW5zcG9ydCBsYXllcgpAQCAtMzI2LDkgKzMxMiw2IEBACiAgICAgICAgICAgICJBbiBlbnRyeSBjb250YWluaW5nIElQdjQtc3BlY2lmaWMgaW5mb3JtYXRpb24gZm9yIGEgc3BlY2lmaWMKICAgICAgICAgICAgIGludGVyZmFjZS4iCiAgICAgSU5ERVggeyBpcHY0SW50ZXJmYWNlSWZJbmRleCB9Ci0KLQotCiAgICAgOjo9IHsgaXB2NEludGVyZmFjZVRhYmxlIDEgfQogCiBJcHY0SW50ZXJmYWNlRW50cnkgOjo9IFNFUVVFTkNFIHsKQEAgLTM3Nyw5ICszNjAsNiBAQAogaXB2NEludGVyZmFjZVJldHJhbnNtaXRUaW1lIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBVbnNpZ25lZDMyCiAgICAgVU5JVFMgICAgICAibWlsbGlzZWNvbmRzIgotCi0KLQogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTQyOCw5ICs0MDgsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJBbiBlbnRyeSBjb250YWluaW5nIElQdjYtc3BlY2lmaWMgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4KICAgICAgICAgICAgIGludGVyZmFjZS4iCi0KLQotCiAgICAgSU5ERVggeyBpcHY2SW50ZXJmYWNlSWZJbmRleCB9CiAgICAgOjo9IHsgaXB2NkludGVyZmFjZVRhYmxlIDEgfQogCkBAIC00NzksOSArNDU2LDYgQEAKICAgICAgICAgICAgIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGxpbmsgdHlwZSB0byB3aGljaCB0aGlzCiAgICAgICAgICAgICBpbnRlcmZhY2UgaXMgYXR0YWNoZWQuCiAKLQotCi0KICAgICAgICAgICAgIEEgemVybyBsZW5ndGggaWRlbnRpZmllciBtYXkgYmUgdXNlZCB3aGVyZSBhcHByb3ByaWF0ZS4gIE9uZQogICAgICAgICAgICAgcG9zc2libGUgZXhhbXBsZSBpcyBhIGxvb3BiYWNrIGludGVyZmFjZS4iCiAgICAgOjo9IHsgaXB2NkludGVyZmFjZUVudHJ5IDMgfQpAQCAtNTMwLDkgKzUwNCw2IEBACiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAiVGhlIHRpbWUgYmV0d2VlbiByZXRyYW5zbWlzc2lvbnMgb2YgTmVpZ2hib3IgU29saWNpdGF0aW9uCiAgICAgICAgICAgICBtZXNzYWdlcyB0byBhIG5laWdoYm9yIHdoZW4gcmVzb2x2aW5nIHRoZSBhZGRyZXNzIG9yIHdoZW4KICAgICAgICAgICAgIHByb2JpbmcgdGhlIHJlYWNoYWJpbGl0eSBvZiBhIG5laWdoYm9yLiIKQEAgLTU4Miw4ICs1NTMsNiBAQAogLS0KIC0tIE5vdGUgd2VsbDogQm90aCBvZiB0aGVzZSB0YWJsZXMgY29udGFpbiBzb21lIGl0ZW1zIHRoYXQgYXJlCiAKLQotCiAtLSByZXByZXNlbnRlZCBieSB0d28gb2JqZWN0cywgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBpbiBlaXRoZXIgMzIKIC0tIG9yIDY0IGJpdHMuICBGb3IgdGhvc2Ugb2JqZWN0cywgdGhlIDMyLWJpdCB2YWx1ZSBNVVNUIGJlIHRoZSBsb3cKIC0tIG9yZGVyIDMyIGJpdHMgb2YgdGhlIDY0LWJpdCB2YWx1ZS4gIEFsc28gbm90ZSB0aGF0IHRoZSAzMi1iaXQKQEAgLTYzMiw5ICs2MDEsNiBAQAogICAgICAgICBpcFN5c3RlbVN0YXRzUmVhc21GYWlscyAgICAgICAgICBDb3VudGVyMzIsCiAgICAgICAgIGlwU3lzdGVtU3RhdHNJbkRpc2NhcmRzICAgICAgICAgIENvdW50ZXIzMiwKICAgICAgICAgaXBTeXN0ZW1TdGF0c0luRGVsaXZlcnMgICAgICAgICAgQ291bnRlcjMyLAotCi0KLQogICAgICAgICBpcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzICAgICAgICBDb3VudGVyNjQsCiAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXRSZXF1ZXN0cyAgICAgICAgIENvdW50ZXIzMiwKICAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHMgICAgICAgQ291bnRlcjY0LApAQCAtNjgzLDkgKzY0OSw2IEBACiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAiVGhlIHRvdGFsIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgcmVjZWl2ZWQsIGluY2x1ZGluZwogICAgICAgICAgICAgdGhvc2UgcmVjZWl2ZWQgaW4gZXJyb3IuCiAKQEAgLTczNSw4ICs2OTgsNiBAQAogICAgICAgICAgICAgaW5jbHVkaW5nIHRob3NlIHJlY2VpdmVkIGluIGVycm9yLiAgVGhpcyBvYmplY3QgY291bnRzIHRoZQogICAgICAgICAgICAgc2FtZSBvY3RldHMgYXMgaXBTeXN0ZW1TdGF0c0luT2N0ZXRzLCBidXQgYWxsb3dzIGZvciBsYXJnZXIKIAotCi0KICAgICAgICAgICAgIHZhbHVlcy4KIAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CkBAIC03ODYsOCArNzQ3LDYgQEAKICAgICAgICAgICAgIGluY2x1ZGVzIGludmFsaWQgYWRkcmVzc2VzIChlLmcuLCA6OjApLiAgRm9yIGVudGl0aWVzCiAgICAgICAgICAgICB0aGF0IGFyZSBub3QgSVAgcm91dGVycyBhbmQgdGhlcmVmb3JlIGRvIG5vdCBmb3J3YXJkCiAKLQotCiAgICAgICAgICAgICBkYXRhZ3JhbXMsIHRoaXMgY291bnRlciBpbmNsdWRlcyBkYXRhZ3JhbXMgZGlzY2FyZGVkCiAgICAgICAgICAgICBiZWNhdXNlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIHdhcyBub3QgYSBsb2NhbCBhZGRyZXNzLgogCkBAIC04MzYsOSArNzk1LDYgQEAKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIGlucHV0IGRhdGFncmFtcyBmb3Igd2hpY2ggdGhpcyBlbnRpdHkgd2FzIG5vdAogICAgICAgICAgICAgdGhlaXIgZmluYWwgSVAgZGVzdGluYXRpb24gYW5kIGZvciB3aGljaCB0aGlzIGVudGl0eQogICAgICAgICAgICAgYXR0ZW1wdGVkIHRvIGZpbmQgYSByb3V0ZSB0byBmb3J3YXJkIHRoZW0gdG8gdGhhdCBmaW5hbApAQCAtODg4LDggKzg0NCw2IEBACiAKICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAogCi0KLQogICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKICAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNEaXNjb250aW51aXR5VGltZS4iCkBAIC05MzgsOSArODkyLDYgQEAKIAogaXBTeXN0ZW1TdGF0c0luRGlzY2FyZHMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXIzMgotCi0KLQogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTk4OSw5ICs5NDAsNiBAQAogICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKICAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNEaXNjb250aW51aXR5VGltZS4iCi0KLQotCiAgICAgOjo9IHsgaXBTeXN0ZW1TdGF0c0VudHJ5IDE5IH0KIAogaXBTeXN0ZW1TdGF0c091dFJlcXVlc3RzIE9CSkVDVC1UWVBFCkBAIC0xMDQxLDggKzk4OSw2IEBACiAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzRGlzY29udGludWl0eVRpbWUuIgogICAgIDo6PSB7IGlwU3lzdGVtU3RhdHNFbnRyeSAyMiB9CiAKLQotCiBpcFN5c3RlbVN0YXRzT3V0Rm9yd0RhdGFncmFtcyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKQEAgLTEwOTIsOCArMTAzOCw2IEBACiAgICAgICAgICAgICBkZXN0aW5hdGlvbiwgYnV0IHdlcmUgZGlzY2FyZGVkIChlLmcuLCBmb3IgbGFjayBvZgogICAgICAgICAgICAgYnVmZmVyIHNwYWNlKS4gIE5vdGUgdGhhdCB0aGlzIGNvdW50ZXIgd291bGQgaW5jbHVkZQogCi0KLQogICAgICAgICAgICAgZGF0YWdyYW1zIGNvdW50ZWQgaW4gaXBTeXN0ZW1TdGF0c091dEZvcndEYXRhZ3JhbXMgaWYgYW55CiAgICAgICAgICAgICBzdWNoIGRhdGFncmFtcyBtZXQgdGhpcyAoZGlzY3JldGlvbmFyeSkgZGlzY2FyZCBjcml0ZXJpb24uCiAKQEAgLTExNDIsOSArMTA4Niw2IEBACiBpcFN5c3RlbVN0YXRzT3V0RnJhZ0ZhaWxzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQotCi0KLQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIElQIGRhdGFncmFtcyB0aGF0IGhhdmUgYmVlbiBkaXNjYXJkZWQgYmVjYXVzZQpAQCAtMTE5NCw4ICsxMTM1LDYgQEAKICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAogICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKIAotCi0KICAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNEaXNjb250aW51aXR5VGltZS4iCiAgICAgOjo9IHsgaXBTeXN0ZW1TdGF0c0VudHJ5IDMwIH0KQEAgLTEyNDUsOCArMTE4NCw2IEBACiAgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgogICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgogCi0KLQogICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLiIKICAgICA6Oj0geyBpcFN5c3RlbVN0YXRzRW50cnkgMzMgfQogCkBAIC0xMjk1LDkgKzEyMzIsNiBAQAogCiBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyNjQKLQotCi0KICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCkBAIC0xMzQ3LDggKzEyODEsNiBAQAogICAgICAgICAgICAiVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgaW4gSVAgbXVsdGljYXN0CiAgICAgICAgICAgICBkYXRhZ3JhbXMuICBPY3RldHMgZnJvbSBkYXRhZ3JhbXMgY291bnRlZCBpbgogCi0KLQogICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c091dE1jYXN0UGt0cyBNVVNUIGJlIGNvdW50ZWQgaGVyZS4KIAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CkBAIC0xMzk4LDggKzEzMzAsNiBAQAogICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKICAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKIAotCi0KICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNEaXNjb250aW51aXR5VGltZS4iCiAgICAgOjo9IHsgaXBTeXN0ZW1TdGF0c0VudHJ5IDQzIH0KIApAQCAtMTQ0OCw5ICsxMzc4LDYgQEAKIGlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgVW5zaWduZWQzMgogICAgIFVOSVRTICAgICAgIm1pbGxpLXNlY29uZHMiCi0KLQotCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtMTQ5OSw5ICsxNDI2LDYgQEAKIElwSWZTdGF0c0VudHJ5IDo6PSBTRVFVRU5DRSB7CiAgICAgICAgIGlwSWZTdGF0c0lQVmVyc2lvbiAgICAgICAgICAgSW5ldFZlcnNpb24sCiAgICAgICAgIGlwSWZTdGF0c0lmSW5kZXggICAgICAgICAgICAgSW50ZXJmYWNlSW5kZXgsCi0KLQotCiAgICAgICAgIGlwSWZTdGF0c0luUmVjZWl2ZXMgICAgICAgICAgQ291bnRlcjMyLAogICAgICAgICBpcElmU3RhdHNIQ0luUmVjZWl2ZXMgICAgICAgIENvdW50ZXI2NCwKICAgICAgICAgaXBJZlN0YXRzSW5PY3RldHMgICAgICAgICAgICBDb3VudGVyMzIsCkBAIC0xNTUwLDkgKzE0NzQsNiBAQAogCiBpcElmU3RhdHNJUFZlcnNpb24gT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIEluZXRWZXJzaW9uCi0KLQotCiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCkBAIC0xNjAxLDkgKzE1MjIsNiBAQAogICAgIDo6PSB7IGlwSWZTdGF0c0VudHJ5IDQgfQogCiBpcElmU3RhdHNJbk9jdGV0cyBPQkpFQ1QtVFlQRQotCi0KLQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKQEAgLTE2NTIsOSArMTU3MCw2IEBACiAKIGlwSWZTdGF0c0luTm9Sb3V0ZXMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXIzMgotCi0KLQogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTE3MDQsOCArMTYxOSw2IEBACiAgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgogICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgogCi0KLQogICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuIgogICAgIDo6PSB7IGlwSWZTdGF0c0VudHJ5IDEwIH0KIApAQCAtMTc1NSw4ICsxNjY4LDYgQEAKICAgICAgICAgICAgIGF0dGVtcHRlZCB0byBmaW5kIGEgcm91dGUgdG8gZm9yd2FyZCB0aGVtIHRvIHRoYXQgZmluYWwKICAgICAgICAgICAgIGRlc3RpbmF0aW9uLiAgVGhpcyBvYmplY3QgY291bnRzIHRoZSBzYW1lIHBhY2tldHMgYXMKIAotCi0KICAgICAgICAgICAgIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtcywgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KIAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CkBAIC0xODA1LDkgKzE3MTYsNiBAQAogaXBJZlN0YXRzUmVhc21GYWlscyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKLQotCi0KICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIG51bWJlciBvZiBmYWlsdXJlcyBkZXRlY3RlZCBieSB0aGUgSVAgcmUtYXNzZW1ibHkKQEAgLTE4NTcsOCArMTc2NSw2IEBACiAgICAgICAgICAgICBpbnRlcmZhY2UgdG8gd2hpY2ggdGhlc2UgZGF0YWdyYW1zIHdlcmUgYWRkcmVzc2VkIGlzCiAgICAgICAgICAgICBpbmNyZW1lbnRlZC4gIFRoaXMgaW50ZXJmYWNlIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUKIAotCi0KICAgICAgICAgICAgIGlucHV0IGludGVyZmFjZSBmb3Igc29tZSBvZiB0aGUgZGF0YWdyYW1zLgogCiAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKQEAgLTE5MDgsOCArMTgxNCw2IEBACiAgICAgICAgICAgICBwcm90b2NvbHMgKGluY2x1ZGluZyBJQ01QKSBzdXBwbGllZCB0byBJUCBpbiByZXF1ZXN0cyBmb3IKICAgICAgICAgICAgIHRyYW5zbWlzc2lvbi4gIFRoaXMgb2JqZWN0IGNvdW50cyB0aGUgc2FtZSBwYWNrZXRzIGFzCiAKLQotCiAgICAgICAgICAgICBpcElmU3RhdHNPdXRSZXF1ZXN0cywgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KIAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CkBAIC0xOTU5LDggKzE4NjMsNiBAQAogICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKICAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKIAotCi0KICAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLiIKICAgICA6Oj0geyBpcElmU3RhdHNFbnRyeSAyNCB9CiAKQEAgLTIwMTAsOCArMTkxMiw2IEBACiAKICAgICAgICAgICAgIFdoZW4gdHJhY2tpbmcgaW50ZXJmYWNlIHN0YXRpc3RpY3MsIHRoZSBjb3VudGVyIG9mIHRoZQogCi0KLQogICAgICAgICAgICAgb3V0Z29pbmcgaW50ZXJmYWNlIGlzIGluY3JlbWVudGVkIGZvciBhIHN1Y2Nlc3NmdWxseQogICAgICAgICAgICAgZnJhZ21lbnRlZCBkYXRhZ3JhbS4KIApAQCAtMjA2MCw5ICsxOTYwLDYgQEAKICAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLiIKICAgICA6Oj0geyBpcElmU3RhdHNFbnRyeSAyOSB9CiAKLQotCi0KIGlwSWZTdGF0c091dFRyYW5zbWl0cyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKQEAgLTIxMTEsOSArMjAwOCw2IEBACiAgICAgOjo9IHsgaXBJZlN0YXRzRW50cnkgMzIgfQogCiBpcElmU3RhdHNIQ091dE9jdGV0cyBPQkpFQ1QtVFlQRQotCi0KLQogICAgIFNZTlRBWCAgICAgQ291bnRlcjY0CiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKQEAgLTIxNjMsOCArMjA1Nyw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIElQIG11bHRpY2FzdAogCi0KLQogICAgICAgICAgICAgZGF0YWdyYW1zLiAgT2N0ZXRzIGZyb20gZGF0YWdyYW1zIGNvdW50ZWQgaW4KICAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RQa3RzIE1VU1QgYmUgY291bnRlZCBoZXJlLgogCkBAIC0yMjE0LDggKzIxMDYsNiBAQAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CiAgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgogCi0KLQogICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgogICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuIgogICAgIDo6PSB7IGlwSWZTdGF0c0VudHJ5IDM5IH0KQEAgLTIyNjQsOSArMjE1NCw2IEBACiAgICAgOjo9IHsgaXBJZlN0YXRzRW50cnkgNDIgfQogCiBpcElmU3RhdHNIQ0luQmNhc3RQa3RzIE9CSkVDVC1UWVBFCi0KLQotCiAgICAgU1lOVEFYICAgICBDb3VudGVyNjQKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudApAQCAtMjMxNiw4ICsyMjAzLDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIHZhbHVlIG9mIHN5c1VwVGltZSBvbiB0aGUgbW9zdCByZWNlbnQgb2NjYXNpb24gYXQgd2hpY2gKIAotCi0KICAgICAgICAgICAgIGFueSBvbmUgb3IgbW9yZSBvZiB0aGlzIGVudHJ5J3MgY291bnRlcnMgc3VmZmVyZWQgYQogICAgICAgICAgICAgZGlzY29udGludWl0eS4KIApAQCAtMjM2Nyw4ICsyMjUyLDYgQEAKICAgICAgICAgICAgIHRhYmxlIGluZGVwZW5kZW50IG9mIGhvdyB0aGUgZW50aXR5IGxlYXJuZWQgdGhlIHByZWZpeC4KICAgICAgICAgICAgIChUaGlzIHRhYmxlIGlzbid0IGxpbWl0ZWQgdG8gcHJlZml4ZXMgbGVhcm5lZCBmcm9tIHJvdXRlcgogCi0KLQogICAgICAgICAgICAgYWR2ZXJ0aXNlbWVudHMuKSIKICAgICA6Oj0geyBpcCAzMiB9CiAKQEAgLTI0MTcsOSArMjMwMCw2IEBACiAgICAgU1lOVEFYICAgICBJbmV0QWRkcmVzcwogICAgIE1BWC1BQ0NFU1Mgbm90LWFjY2Vzc2libGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKLQotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIGFkZHJlc3MgcHJlZml4LiAgVGhlIGFkZHJlc3MgdHlwZSBvZiB0aGlzIG9iamVjdCBpcwogICAgICAgICAgICAgc3BlY2lmaWVkIGluIGlwQWRkcmVzc1ByZWZpeFR5cGUuICBUaGUgbGVuZ3RoIG9mIHRoaXMgb2JqZWN0CkBAIC0yNDY4LDkgKzIzNDgsNiBAQAogCiBpcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgVHJ1dGhWYWx1ZQotCi0KLQogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTI1MTksOSArMjM5Niw2IEBACiAgICAgICAgICAgICBUaGUgYWRkcmVzcyBnZW5lcmF0ZWQgZnJvbSBhbiBpbnZhbGlkYXRlZCBwcmVmaXggc2hvdWxkIG5vdAogICAgICAgICAgICAgYXBwZWFyIGFzIHRoZSBkZXN0aW5hdGlvbiBvciBzb3VyY2UgYWRkcmVzcyBvZiBhIHBhY2tldC4KIAotCi0KLQogICAgICAgICAgICAgVGhlIGRlZmF1bHQgZm9yIElQdjQgcHJlZml4ZXMgaXMgNCwyOTQsOTY3LDI5NSAoaW5maW5pdHkpLiIKICAgICBSRUZFUkVOQ0UgIkZvciBJUHY2IFJGQyAyNDYxLCBlc3BlY2lhbGx5IHNlY3Rpb25zIDIgYW5kIDQuNi4yIGFuZAogICAgICAgICAgICAgICAgUkZDIDI0NjIiCkBAIC0yNTcxLDggKzI0NDUsNiBAQAogICAgICAgICAgICAgaW50ZW50aW9uIGluIGFsbG93aW5nIGEgdXNlciB0byB3cml0ZSB0byB0aGlzIHRhYmxlIGlzIHRvCiAgICAgICAgICAgICBhbGxvdyB0aGVtIHRvIGFkZCBvciByZW1vdmUgYW55IGVudHJ5IHRoYXQgaXNuJ3QKIAotCi0KICAgICAgICAgICAgIHBlcm1hbmVudC4gIFRoZSB1c2VyIHNob3VsZCBiZSBhbGxvd2VkIHRvIG1vZGlmeSBvYmplY3RzCiAgICAgICAgICAgICBhbmQgZW50cmllcyB3aGVuIHRoYXQgd291bGQgbm90IGNhdXNlIGluY29uc2lzdGVuY2llcwogICAgICAgICAgICAgd2l0aGluIHRoZSB0YWJsZS4gIEFsbG93aW5nIHdyaXRlIGFjY2VzcyB0byBvYmplY3RzLCBzdWNoCkBAIC0yNjIyLDggKzI0OTQsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgSVAgYWRkcmVzcyB0byB3aGljaCB0aGlzIGVudHJ5J3MgYWRkcmVzc2luZyBpbmZvcm1hdGlvbgogCi0KLQogICAgICAgICAgICAgcGVydGFpbnMuICBUaGUgYWRkcmVzcyB0eXBlIG9mIHRoaXMgb2JqZWN0IGlzIHNwZWNpZmllZCBpbgogICAgICAgICAgICAgaXBBZGRyZXNzQWRkclR5cGUuCiAKQEAgLTI2NzIsOSArMjU0Miw2IEBACiAgICAgU1lOVEFYICAgICBJcEFkZHJlc3NPcmlnaW5UQwogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50Ci0KLQotCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBvcmlnaW4gb2YgdGhlIGFkZHJlc3MuIgogICAgIDo6PSB7IGlwQWRkcmVzc0VudHJ5IDYgfQpAQCAtMjcyNCw4ICsyNTkxLDYgQEAKICAgICAgICAgICAgIFRoZSBSb3dTdGF0dXMgVEMgcmVxdWlyZXMgdGhhdCB0aGlzIERFU0NSSVBUSU9OIGNsYXVzZQogICAgICAgICAgICAgc3RhdGVzIHVuZGVyIHdoaWNoIGNpcmN1bXN0YW5jZXMgb3RoZXIgb2JqZWN0cyBpbiB0aGlzIHJvdwogCi0KLQogICAgICAgICAgICAgY2FuIGJlIG1vZGlmaWVkLiAgVGhlIHZhbHVlIG9mIHRoaXMgb2JqZWN0IGhhcyBubyBlZmZlY3Qgb24KICAgICAgICAgICAgIHdoZXRoZXIgb3RoZXIgb2JqZWN0cyBpbiB0aGlzIGNvbmNlcHR1YWwgcm93IGNhbiBiZQogICAgICAgICAgICAgbW9kaWZpZWQuCkBAIC0yNzc0LDkgKzI2MzksNiBAQAogICAgIFNZTlRBWCAgICAgSXBOZXRUb1BoeXNpY2FsRW50cnkKICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlCiAgICAgU1RBVFVTICAgICBjdXJyZW50Ci0KLQotCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIkVhY2ggZW50cnkgY29udGFpbnMgb25lIElQIGFkZHJlc3MgdG8gYHBoeXNpY2FsJyBhZGRyZXNzCiAgICAgICAgICAgICBlcXVpdmFsZW5jZS4iCkBAIC0yODI2LDggKzI2ODgsNiBAQAogCiAgICAgICAgICAgICBJbXBsZW1lbnRvcnMgbmVlZCB0byBiZSBhd2FyZSB0aGF0IGlmIHRoZSBzaXplIG9mCiAKLQotCiAgICAgICAgICAgICBpcE5ldFRvUGh5c2ljYWxOZXRBZGRyZXNzIGV4Y2VlZHMgMTE1IG9jdGV0cywgdGhlbiBPSURTIG9mCiAgICAgICAgICAgICBpbnN0YW5jZXMgb2YgY29sdW1ucyBpbiB0aGlzIHJvdyB3aWxsIGhhdmUgbW9yZSB0aGFuIDEyOAogICAgICAgICAgICAgc3ViLWlkZW50aWZpZXJzIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgdXNpbmcgU05NUHYxLApAQCAtMjg3Nyw4ICsyNzM3LDYgQEAKICAgICAgICAgICAgIG1hcHBpbmcgaWRlbnRpZmllZCB3aXRoIHNhaWQgZW50cnkuICBJdCBpcyBhbgogICAgICAgICAgICAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgbWF0dGVyIGFzIHRvIHdoZXRoZXIgdGhlIGFnZW50CiAKLQotCiAgICAgICAgICAgICByZW1vdmVzIGFuIGludmFsaWRhdGVkIGVudHJ5IGZyb20gdGhlIHRhYmxlLiAgQWNjb3JkaW5nbHksCiAgICAgICAgICAgICBtYW5hZ2VtZW50IHN0YXRpb25zIG11c3QgYmUgcHJlcGFyZWQgdG8gcmVjZWl2ZSB0YWJ1bGFyCiAgICAgICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIGFnZW50cyB0aGF0IGNvcnJlc3BvbmRzIHRvIGVudHJpZXMgbm90CkBAIC0yOTI3LDkgKzI3ODUsNiBAQAogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KLQotCi0KICAgICAgICAgICAgIlRoZSBOZWlnaGJvciBVbnJlYWNoYWJpbGl0eSBEZXRlY3Rpb24gc3RhdGUgZm9yIHRoZQogICAgICAgICAgICAgaW50ZXJmYWNlIHdoZW4gdGhlIGFkZHJlc3MgbWFwcGluZyBpbiB0aGlzIGVudHJ5IGlzIHVzZWQuCiAgICAgICAgICAgICBJZiBOZWlnaGJvciBVbnJlYWNoYWJpbGl0eSBEZXRlY3Rpb24gaXMgbm90IGluIHVzZSAoZS5nLiBmb3IKQEAgLTI5NzgsOSArMjgzMyw2IEBACiAKIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5IE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBJcHY2U2NvcGVab25lSW5kZXhFbnRyeQotCi0KLQogICAgIE1BWC1BQ0NFU1Mgbm90LWFjY2Vzc2libGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtMzAyOSw5ICsyODgxLDYgQEAKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJUaGUgem9uZSBpbmRleCBmb3Igc2NvcGUgMyBvbiB0aGlzIGludGVyZmFjZS4iCiAgICAgOjo9IHsgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkgMyB9CiAKQEAgLTMwODAsOSArMjkyOSw2IEBACiAgICAgU1lOVEFYICAgICBJbmV0Wm9uZUluZGV4CiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKLQotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIHpvbmUgaW5kZXggZm9yIHNjb3BlIDkgb24gdGhpcyBpbnRlcmZhY2UuIgogICAgIDo6PSB7IGlwdjZTY29wZVpvbmVJbmRleEVudHJ5IDkgfQpAQCAtMzEzMiw4ICsyOTc4LDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIHRhYmxlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGRlZmF1bHQgcm91dGVycyBrbm93biB0byB0aGlzCiAKLQotCiAgICAgICAgICAgICBlbnRpdHkuIgogICAgIDo6PSB7IGlwIDM3IH0KIApAQCAtMzE4Miw5ICszMDI2LDYgQEAKIAogaXBEZWZhdWx0Um91dGVySWZJbmRleCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSW50ZXJmYWNlSW5kZXgKLQotCi0KICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlCiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTMyMzQsOCArMzA3NSw2IEBACiAgICAgUkVGRVJFTkNFICJSRkMgNDI5MSwgc2VjdGlvbiAyLjEiCiAgICAgOjo9IHsgaXBEZWZhdWx0Um91dGVyRW50cnkgNSB9CiAKLQotCiAtLQogLS0gQ29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgY29uc3RydWN0aW5nIHJvdXRlciBhZHZlcnRpc2VtZW50cwogLS0KQEAgLTMyODQsOSArMzEyMyw2IEBACiAgICAgICAgICAgICBvYmplY3QgaXMgd3JpdHRlbiwgdGhlIGVudGl0eSBTSE9VTEQgc2F2ZSB0aGUgY2hhbmdlIHRvCiAgICAgICAgICAgICBub24tdm9sYXRpbGUgc3RvcmFnZS4iCiAgICAgSU5ERVggeyBpcHY2Um91dGVyQWR2ZXJ0SWZJbmRleCB9Ci0KLQotCiAgICAgOjo9IHsgaXB2NlJvdXRlckFkdmVydFRhYmxlIDEgfQogCiBJcHY2Um91dGVyQWR2ZXJ0RW50cnkgOjo9IFNFUVVFTkNFIHsKQEAgLTMzMzYsOCArMzE3Miw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBtYXhpbXVtIHRpbWUgYWxsb3dlZCBiZXR3ZWVuIHNlbmRpbmcgdW5zb2xpY2l0ZWQgcm91dGVyCiAKLQotCiAgICAgICAgICAgICBhZHZlcnRpc2VtZW50cyBmcm9tIHRoaXMgaW50ZXJmYWNlLiIKICAgICBSRUZFUkVOQ0UgIlJGQyAyNDYxIFNlY3Rpb24gNi4yLjEiCiAgICAgREVGVkFMIHsgNjAwIH0KQEAgLTMzODYsOSArMzIyMCw2IEBACiAgICAgU1lOVEFYICAgICBVbnNpZ25lZDMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLWNyZWF0ZQogICAgIFNUQVRVUyAgICAgY3VycmVudAotCi0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgdmFsdWUgdG8gYmUgcGxhY2VkIGluIE1UVSBvcHRpb25zIHNlbnQgYnkgdGhlIHJvdXRlciBvbgogICAgICAgICAgICAgdGhpcyBpbnRlcmZhY2UuCkBAIC0zNDM4LDggKzMyNjksNiBAQAogICAgICAgICAgICAiVGhlIGRlZmF1bHQgdmFsdWUgdG8gYmUgcGxhY2VkIGluIHRoZSBjdXJyZW50IGhvcCBsaW1pdAogICAgICAgICAgICAgZmllbGQgaW4gcm91dGVyIGFkdmVydGlzZW1lbnRzIHNlbnQgZnJvbSB0aGlzIGludGVyZmFjZS4KIAotCi0KICAgICAgICAgICAgIFRoZSB2YWx1ZSBzaG91bGQgYmUgc2V0IHRvIHRoZSBjdXJyZW50IGRpYW1ldGVyIG9mIHRoZQogICAgICAgICAgICAgSW50ZXJuZXQuCiAKQEAgLTM0ODksOCArMzMxOCw2IEBACiAKIC0tCiAKLQotCiAtLSBJQ01QIHNlY3Rpb24KIC0tCiAKQEAgLTM1MzksOSArMzM2Niw2IEBACiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBJUCB2ZXJzaW9uIG9mIHRoZSBzdGF0aXN0aWNzLiIKLQotCi0KICAgICA6Oj0geyBpY21wU3RhdHNFbnRyeSAxIH0KIAogaWNtcFN0YXRzSW5Nc2dzIE9CSkVDVC1UWVBFCkBAIC0zNTkxLDggKzM0MTUsNiBAQAogLS0KIC0tIHBlci12ZXJzaW9uLCBwZXItbWVzc2FnZSB0eXBlIElDTVAgY291bnRlcnMKIAotCi0KIC0tCiAKIGljbXBNc2dTdGF0c1RhYmxlIE9CSkVDVC1UWVBFCkBAIC0zNjQxLDkgKzM0NjMsNiBAQAogaWNtcE1zZ1N0YXRzVHlwZSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSW50ZWdlcjMyICgwLi4yNTUpCiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQotCi0KLQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgSUNNUCB0eXBlIGZpZWxkIG9mIHRoZSBtZXNzYWdlIHR5cGUgYmVpbmcgY291bnRlZCBieQpAQCAtMzY5Miw5ICszNTExLDYgQEAKICAgICAgICAgICAgIGV4cHJlc3NlZCBpbiBPQkpFQ1QgY2xhdXNlIGZvcm0gaW4gdGhpcyBkZXNjcmlwdGlvbgogICAgICAgICAgICAgY2xhdXNlOgogCi0KLQotCiAgICAgICAgICAgICAtLSBPQkpFQ1QgICAgICAgIGlwU3lzdGVtU3RhdHNJUFZlcnNpb24KICAgICAgICAgICAgIC0tIFNZTlRBWCAgICAgICAgSW5ldFZlcnNpb24ge2lwdjQoMSksIGlwdjYoMil9CiAgICAgICAgICAgICAtLSBERVNDUklQVElPTgpAQCAtMzc0NCw4ICszNTYwLDYgQEAKICAgICAgICAgICAgIC0tIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAtLSAgICAgVGhpcyBNSUIgcmVxdWlyZXMgc3VwcG9ydCBmb3Igb25seSBnbG9iYWwgYW5kCiAKLQotCiAgICAgICAgICAgICAtLSAgICAgbm9uLWdsb2JhbCBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhbmQgc28gdGhlIHNpemUKICAgICAgICAgICAgIC0tICAgICBjYW4gYmUgNCwgOCwgMTYsIG9yIDIwIGJ5dGVzLgogICAgICAgICAgICAgLS0KQEAgLTM3OTUsOCArMzYwOSw2IEBACiAgICAgICAgICAgICJUaGlzIGdyb3VwIGlzIG1hbmRhdG9yeSBmb3Igc3lzdGVtcyB0aGF0IGhhdmUgYW4gYWdncmVnYXRlCiAgICAgICAgICAgICBiYW5kd2lkdGggb2YgZ3JlYXRlciB0aGFuIDY1ME1CLiAgSW5jbHVkaW5nIHRoaXMgZ3JvdXAKIAotCi0KICAgICAgICAgICAgIGRvZXMgbm90IGFsbG93IGFuIGVudGl0eSB0byBuZWdsZWN0IHRoZSAzMiBiaXQgdmVyc2lvbnMgb2YKICAgICAgICAgICAgIHRoZXNlIG9iamVjdHMuIgogCkBAIC0zODQ2LDggKzM2NTgsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGlzIGdyb3VwIGlzIG1hbmRhdG9yeSBmb3IgYWxsIHN5c3RlbXMgc3VwcG9ydGluZyBJUHY0IGFuZAogCi0KLQogICAgICAgICAgICAgaW5jbHVkaW5nIHRoZSBpcElmU3RhdHNIQ1BhY2tldEdyb3VwLiAgSW5jbHVkaW5nIHRoaXMgZ3JvdXAKICAgICAgICAgICAgIGRvZXMgbm90IGFsbG93IGFuIGVudGl0eSB0byBuZWdsZWN0IHRoZSAzMiBiaXQgdmVyc2lvbnMgb2YKICAgICAgICAgICAgIHRoZXNlIG9iamVjdHMuIgpAQCAtMzg5Niw5ICszNzA2LDYgQEAKIAogICAgIE9CSkVDVCAgICAgaXB2NkludGVyZmFjZUVuYWJsZVN0YXR1cwogICAgIE1JTi1BQ0NFU1MgcmVhZC1vbmx5Ci0KLQotCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIkFuIGFnZW50IGlzIG5vdCByZXF1aXJlZCB0byBwcm92aWRlIHdyaXRlIGFjY2VzcyB0byB0aGlzCiAgICAgICAgICAgICBvYmplY3QuIgpAQCAtMzk0OCw4ICszNzU1LDYgQEAKICAgICAgICAgICAgIkFuIGFnZW50IGlzIG5vdCByZXF1aXJlZCB0byBwcm92aWRlIHdyaXRlIG9yIGNyZWF0ZSBhY2Nlc3MKICAgICAgICAgICAgIHRvIHRoaXMgb2JqZWN0LgogCi0KLQogICAgICAgICAgICAgSWYgYW4gYWdlbnQgYWxsb3dzIHRoaXMgb2JqZWN0IHRvIGJlIHdyaXR0ZW4gb3IgY3JlYXRlZCwgaXQKICAgICAgICAgICAgIGlzIG5vdCByZXF1aXJlZCB0byBhbGxvdyB0aGlzIG9iamVjdCB0byBiZSBzZXQgdG8gcmVhZE9ubHksCiAgICAgICAgICAgICBwZXJtYW5lbnQsIG9yIG5vblZvbGF0aWxlLiIKQEAgLTM5OTgsOSArMzgwMyw2IEBACiAgICAgICAgICAgICJBbiBhZ2VudCBpcyBub3QgcmVxdWlyZWQgdG8gcHJvdmlkZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcwogICAgICAgICAgICAgb2JqZWN0LiIKIAotCi0KLQogICAgIE9CSkVDVCAgICAgaXB2NlJvdXRlckFkdmVydE90aGVyQ29uZmlnRmxhZwogICAgIE1JTi1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgREVTQ1JJUFRJT04KQEAgLTQwNDIsMTYgKzM4NDQsMTIgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiQW4gYWdlbnQgaXMgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgd3JpdGUgb3IgY3JlYXRlIGFjY2VzcwogICAgICAgICAgICAgdG8gdGhpcyBvYmplY3QuIgotCiAgICAgOjo9IHsgaXBNSUJDb21wbGlhbmNlcyAyIH0KIAogLS0gdW5pdHMgb2YgY29uZm9ybWFuY2UKIAogaXB2NEdlbmVyYWxHcm91cCBPQkpFQ1QtR1JPVVAKICAgICBPQkpFQ1RTICAgeyBpcEZvcndhcmRpbmcsIGlwRGVmYXVsdFRUTCwgaXBSZWFzbVRpbWVvdXQgfQotCi0KLQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgZ3JvdXAgb2YgSVB2NC1zcGVjaWZpYyBvYmplY3RzIGZvciBiYXNpYyBtYW5hZ2VtZW50IG9mCkBAIC00MTAxLDggKzM4OTksNiBAQAogICAgICAgICAgICAgdmFsdWUuIgogICAgIDo6PSB7IGlwTUlCR3JvdXBzIDcgfQogCi0KLQogaXBTeXN0ZW1TdGF0c0dyb3VwIE9CSkVDVC1HUk9VUAogICAgIE9CSkVDVFMgICB7IGlwU3lzdGVtU3RhdHNJblJlY2VpdmVzLAogICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbk9jdGV0cywKQEAgLTQxNTEsOSArMzk0Nyw2IEBACiAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0cywKICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0cwogfQotCi0KLQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJJUCBzeXN0ZW0gd2lkZSBzdGF0aXN0aWNzIGZvciBzeXN0ZW1zIHRoYXQgbWF5IG92ZXJmbG93IHRoZQpAQCAtNDIwMiw5ICszOTk1LDYgQEAKICAgICAgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZSwgaXBJZlN0YXRzUmVmcmVzaFJhdGUgfQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJJUCBwZXItaW50ZXJmYWNlIHN0YXRpc3RpY3MuIgogICAgIDo6PSB7IGlwTUlCR3JvdXBzIDEzIH0KIApAQCAtNDI1Myw5ICs0MDQzLDYgQEAKICAgICAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhBZHZQcmVmZXJyZWRMaWZldGltZSwKICAgICAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lIH0KICAgICBTVEFUVVMgICAgIGN1cnJlbnQKLQotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIGdyb3VwIG9mIG9iamVjdHMgZm9yIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBhZGRyZXNzCiAgICAgICAgICAgICBwcmVmaXhlcyB1c2VkIGJ5IHRoaXMgbm9kZS4iCkBAIC00MzA0LDkgKzQwOTEsNiBAQAogCiBpcERlZmF1bHRSb3V0ZXJHcm91cCBPQkpFQ1QtR1JPVVAKICAgICBPQkpFQ1RTICAgeyBpcERlZmF1bHRSb3V0ZXJMaWZldGltZSwgaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZSB9Ci0KLQotCiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBncm91cCBvZiBvYmplY3RzIGZvciBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgZGVmYXVsdApAQCAtNDM1Niw4ICs0MTQwLDYgQEAKIAogICAgICAgICAgICAgVGhpcyBvYmplY3QgaGFzIGJlZW4gZGVwcmVjYXRlZCwgYXMgYSBuZXcgSVAgdmVyc2lvbi1uZXV0cmFsCiAKLQotCiAgICAgICAgICAgICB0YWJsZSBoYXMgYmVlbiBhZGRlZC4gIEl0IGlzIGxvb3NlbHkgcmVwbGFjZWQgYnkKICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJblJlY2lldmVzLiIKICAgICA6Oj0geyBpcCAzIH0KQEAgLTQ0MDcsOCArNDE4OSw2IEBACiAgICAgICAgICAgICBmaW5hbCBkZXN0aW5hdGlvbi4gIEluIGVudGl0aWVzIHdoaWNoIGRvIG5vdCBhY3QgYXMgSVB2NAogICAgICAgICAgICAgcm91dGVycywgdGhpcyBjb3VudGVyIHdpbGwgaW5jbHVkZSBvbmx5IHRob3NlIHBhY2tldHMgd2hpY2gKIAotCi0KICAgICAgICAgICAgIHdlcmUgU291cmNlLVJvdXRlZCB2aWEgdGhpcyBlbnRpdHksIGFuZCB0aGUgU291cmNlLVJvdXRlCiAgICAgICAgICAgICBvcHRpb24gcHJvY2Vzc2luZyB3YXMgc3VjY2Vzc2Z1bC4KIApAQCAtNDQ1OCw4ICs0MjM4LDYgQEAKICAgICAgICAgICAgIFRoaXMgb2JqZWN0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgYXMgYSBuZXcgSVAgdmVyc2lvbiBuZXV0cmFsCiAgICAgICAgICAgICB0YWJsZSBoYXMgYmVlbiBhZGRlZC4gIEl0IGlzIGxvb3NlbHkgcmVwbGFjZWQgYnkKIAotCi0KICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbmRlbGl2ZXJzLiIKICAgICA6Oj0geyBpcCA5IH0KIApAQCAtNDUwOSw4ICs0Mjg3LDYgQEAKIAogICAgICAgICAgICAgVGhpcyBvYmplY3QgaGFzIGJlZW4gZGVwcmVjYXRlZCwgYXMgYSBuZXcgSVAgdmVyc2lvbi1uZXV0cmFsCiAKLQotCiAgICAgICAgICAgICB0YWJsZSBoYXMgYmVlbiBhZGRlZC4gIEl0IGlzIGxvb3NlbHkgcmVwbGFjZWQgYnkKICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXROb1JvdXRlcy4iCiAgICAgOjo9IHsgaXAgMTIgfQpAQCAtNDU1OSw5ICs0MzM1LDYgQEAKIAogaXBGcmFnT0tzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKLQotCi0KICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgZGVwcmVjYXRlZAogICAgIERFU0NSSVBUSU9OCkBAIC00NjExLDggKzQzODQsNiBAQAogICAgICAgICAgICAgZm9yIGRpc2NhcmRpbmcgc3VjaCBhbiBlbnRyeSBjb3VsZCBiZSB0byBmcmVlLXVwIGJ1ZmZlcgogICAgICAgICAgICAgc3BhY2UgZm9yIG90aGVyIHJvdXRpbmcgZW50cmllcy4KIAotCi0KICAgICAgICAgICAgIFRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIGluIHByZS1JUHY2IHZlcnNpb25zIG9mIHRoZSBJUCBNSUIuCiAgICAgICAgICAgICBJdCB3YXMgaW1wbGljaXRseSBJUHY0IG9ubHksIGJ1dCB0aGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbnMKICAgICAgICAgICAgIGRpZCBub3QgaW5kaWNhdGUgdGhpcyBwcm90b2NvbCByZXN0cmljdGlvbi4gIEluIG9yZGVyIHRvCkBAIC00NjYxLDkgKzQ0MzIsNiBAQAogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBkZXByZWNhdGVkCiAgICAgREVTQ1JJUFRJT04KLQotCi0KICAgICAgICAgICAgIlRoZSBJUHY0IGFkZHJlc3MgdG8gd2hpY2ggdGhpcyBlbnRyeSdzIGFkZHJlc3NpbmcKICAgICAgICAgICAgIGluZm9ybWF0aW9uIHBlcnRhaW5zLiIKICAgICA6Oj0geyBpcEFkZHJFbnRyeSAxIH0KQEAgLTQ3MTMsOCArNDQ4MSw2IEBACiAgICAgICAgICAgICBvbiB0aGlzIGludGVyZmFjZS4iCiAgICAgOjo9IHsgaXBBZGRyRW50cnkgNSB9CiAKLQotCiAtLSB0aGUgZGVwcmVjYXRlZCBJUHY0IEFkZHJlc3MgVHJhbnNsYXRpb24gdGFibGUKIAogLS0gVGhlIEFkZHJlc3MgVHJhbnNsYXRpb24gdGFibGVzIGNvbnRhaW4gdGhlIElwQWRkcmVzcyB0bwpAQCAtNDc2NCw4ICs0NTMwLDYgQEAKICAgICAgICAgICAgIGVmZmVjdGl2ZS4gIFRoZSBpbnRlcmZhY2UgaWRlbnRpZmllZCBieSBhIHBhcnRpY3VsYXIgdmFsdWUKICAgICAgICAgICAgIG9mIHRoaXMgaW5kZXggaXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIGlkZW50aWZpZWQgYnkgdGhlCiAKLQotCiAgICAgICAgICAgICBzYW1lIHZhbHVlIG9mIHRoZSBJRi1NSUIncyBpZkluZGV4LgogCiAgICAgICAgICAgICBUaGlzIG9iamVjdCBwcmVkYXRlcyB0aGUgcnVsZSBsaW1pdGluZyBpbmRleCBvYmplY3RzIHRvIGEKQEAgLTQ4MTUsOCArNDU3OSw2IEBACiAKICAgICAgICAgICAgIFNldHRpbmcgdGhpcyBvYmplY3QgdG8gdGhlIHZhbHVlIGludmFsaWQoMikgaGFzIHRoZSBlZmZlY3QKIAotCi0KICAgICAgICAgICAgIG9mIGludmFsaWRhdGluZyB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBpbiB0aGUKICAgICAgICAgICAgIGlwTmV0VG9NZWRpYVRhYmxlLiAgVGhhdCBpcywgaXQgZWZmZWN0aXZlbHkgZGlzLWFzc29jaWF0ZXMKICAgICAgICAgICAgIHRoZSBpbnRlcmZhY2UgaWRlbnRpZmllZCB3aXRoIHNhaWQgZW50cnkgZnJvbSB0aGUgbWFwcGluZwpAQCAtNDg2NSw5ICs0NjI3LDYgQEAKICAgICAgICAgICAgIGljbXBTdGF0c0luRXJyb3JzLiIKICAgICA6Oj0geyBpY21wIDIgfQogCi0KLQotCiBpY21wSW5EZXN0VW5yZWFjaHMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXIzMgogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CkBAIC00OTE3LDggKzQ2NzYsNiBAQAogICAgICAgICAgICAgdGhlIGljbXBNc2dTdGF0c1RhYmxlLiIKICAgICA6Oj0geyBpY21wIDYgfQogCi0KLQogaWNtcEluUmVkaXJlY3RzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQpAQCAtNDk2Nyw5ICs0NzI0LDYgQEAKICAgICAgICAgICAgIHRoZSBpY21wTXNnU3RhdHNUYWJsZS4iCiAgICAgOjo9IHsgaWNtcCAxMCB9CiAKLQotCi0KIGljbXBJblRpbWVzdGFtcFJlcHMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXIzMgogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CkBAIC01MDE4LDkgKzQ3NzIsNiBAQAogICAgICAgICAgICAgVGhpcyBvYmplY3QgaGFzIGJlZW4gZGVwcmVjYXRlZCwgYXMgYSBuZXcgSVAgdmVyc2lvbi1uZXV0cmFsCiAgICAgICAgICAgICB0YWJsZSBoYXMgYmVlbiBhZGRlZC4gIEl0IGlzIGxvb3NlbHkgcmVwbGFjZWQgYnkKICAgICAgICAgICAgIGljbXBTdGF0c091dE1zZ3MuIgotCi0KLQogICAgIDo6PSB7IGljbXAgMTQgfQogCiBpY21wT3V0RXJyb3JzIE9CSkVDVC1UWVBFCkBAIC01MDY5LDkgKzQ4MjAsNiBAQAogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGRlcHJlY2F0ZWQKLQotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIG51bWJlciBvZiBJQ01QIFBhcmFtZXRlciBQcm9ibGVtIG1lc3NhZ2VzIHNlbnQuCiAKQEAgLTUxMjAsOSArNDg2OCw2IEBACiAKIGljbXBPdXRFY2hvUmVwcyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCi0KLQotCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGRlcHJlY2F0ZWQKICAgICBERVNDUklQVElPTgpAQCAtNTE3MSw5ICs0OTE2LDYgQEAKIAogaWNtcE91dEFkZHJNYXNrUmVwcyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCi0KLQotCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGRlcHJlY2F0ZWQKICAgICBERVNDUklQVElPTgpAQCAtNTIyMiw5ICs0OTY0LDYgQEAKICAgICAgICAgICAgIlRoZSBpcCBncm91cCBvZiBvYmplY3RzIHByb3ZpZGluZyBmb3IgYmFzaWMgbWFuYWdlbWVudCBvZiBJUAogICAgICAgICAgICAgZW50aXRpZXMsIGV4Y2x1c2l2ZSBvZiB0aGUgbWFuYWdlbWVudCBvZiBJUCByb3V0ZXMuCiAKLQotCi0KICAgICAgICAgICAgIEFzIHBhcnQgb2YgdGhlIHZlcnNpb24gaW5kZXBlbmRlbmNlLCB0aGlzIGdyb3VwIGhhcyBiZWVuCiAgICAgICAgICAgICBkZXByZWNhdGVkLiAgIgogICAgIDo6PSB7IGlwTUlCR3JvdXBzIDEgfQpkaWZmIC0tZ2l0IGEvbWlicy9JUFY2LUZMT1ctTEFCRUwtTUlCLnR4dCBiL21pYnMvSVBWNi1GTE9XLUxBQkVMLU1JQi50eHQKaW5kZXggZjMwZjRjYS4uNmZiMzY1OSAxMDA2NDQKLS0tIGEvbWlicy9JUFY2LUZMT1ctTEFCRUwtTUlCLnR4dAorKysgYi9taWJzL0lQVjYtRkxPVy1MQUJFTC1NSUIudHh0CkBAIC0xNSwxMCArMTUsNiBAQAogICAgICAgICAgICAgICAgICAgIDM0NjEgR0wgTGluc2Nob3RlbgogICAgICAgICAgICAgICAgICAgIE5ldGhlcmxhbmRzCiAKLQotCi0KLQogICAgICAgICAgICAgICAgICAgIFBob25lOiArMzEgMzQ4LTQwNy03NzUKICAgICAgICAgICAgICAgICAgICBFTWFpbDogYndpam5lbkBsdWNlbnQuY29tCiAKQEAgLTM1LDcgKzMxLDYgQEAKIAogICAgIFJFVklTSU9OICAgICAgIjIwMDMwODI4MDAwMFoiICAtLSAyOCBBdWd1c3QgMjAwMwogICAgIERFU0NSSVBUSU9OICAgIkluaXRpYWwgdmVyc2lvbiwgcHVibGlzaGVkIGFzIFJGQyAzNTk1LiIKLQogICAgIDo6PSB7IG1pYi0yIDEwMyB9CiAKIElQdjZGbG93TGFiZWwgICAgICA6Oj0gVEVYVFVBTC1DT05WRU5USU9OCmRpZmYgLS1naXQgYS9taWJzL01ha2VmaWxlLm1pYiBiL21pYnMvTWFrZWZpbGUubWliCmluZGV4IDEzNjE5OWMuLmU1ODcxZjEgMTAwNjQ0Ci0tLSBhL21pYnMvTWFrZWZpbGUubWliCisrKyBiL21pYnMvTWFrZWZpbGUubWliCkBAIC0xNCwxOCArMTQsMjQgQEAKIAlTTk1QLUZSQU1FV09SSy1NSUIudHh0IFNOTVAtTVBELU1JQi50eHQgU05NUC1VU0VSLUJBU0VELVNNLU1JQi50eHQgXAogCVNOTVAtVklFVy1CQVNFRC1BQ00tTUlCLnR4dCBTTk1QLUNPTU1VTklUWS1NSUIudHh0IFwKIAlTTk1QLVRBUkdFVC1NSUIudHh0IFNOTVAtTk9USUZJQ0FUSU9OLU1JQi50eHQgU05NUC1QUk9YWS1NSUIudHh0IFwKKwlTTk1QLVVTTS1ESC1PQkpFQ1RTLU1JQi50eHQgU05NUC1VU00tQUVTLU1JQi50eHQgXAogCUFHRU5UWC1NSUIudHh0IFNNVVgtTUlCLnR4dCBcCi0JRElTTUFOLVNDUklQVC1NSUIudHh0ICBESVNNQU4tU0NIRURVTEUtTUlCLnR4dCBcCisJRElTTUFOLVNDUklQVC1NSUIudHh0IERJU01BTi1TQ0hFRFVMRS1NSUIudHh0IFwKKwlESVNNQU4tUElORy1NSUIudHh0IERJU01BTi1UUkFDRVJPVVRFLU1JQi50eHQgXAorCURJU01BTi1OU0xPT0tVUC1NSUIudHh0IERJU01BTi1FVkVOVC1NSUIudHh0IFwKKwlESVNNQU4tRVhQUkVTU0lPTi1NSUIudHh0IE5PVElGSUNBVElPTi1MT0ctTUlCLnR4dCBcCiAJSUFOQS1MQU5HVUFHRS1NSUIudHh0IElBTkEtQUREUkVTUy1GQU1JTFktTlVNQkVSUy1NSUIudHh0IFwKIAlJRi1NSUIudHh0IElGLUlOVkVSVEVELVNUQUNLLU1JQi50eHQgXAogCUlQLU1JQi50eHQgSVAtRk9SV0FSRC1NSUIudHh0IFRDUC1NSUIudHh0IFVEUC1NSUIudHh0IFwKLQlJQU5BaWZUeXBlLU1JQi50eHQgRXRoZXJMaWtlLU1JQi50eHQgXAorCUlBTkFpZlR5cGUtTUlCLnR4dCBJQU5BLVJUUFJPVE8tTUlCLnR4dCBFdGhlckxpa2UtTUlCLnR4dCBcCiAJSVBWNi1UQy50eHQgSVBWNi1NSUIudHh0IElQVjYtSUNNUC1NSUIudHh0IFwKLQlJUFY2LVRDUC1NSUIudHh0IElQVjYtVURQLU1JQi50eHQgXAorCUlQVjYtVENQLU1JQi50eHQgSVBWNi1VRFAtTUlCLnR4dCBJUFY2LUZMT1ctTEFCRUwtTUlCLnR4dCBcCiAJSE9TVC1SRVNPVVJDRVMtTUlCLnR4dCBIT1NULVJFU09VUkNFUy1UWVBFUy50eHQgXAogCU5FVFdPUkstU0VSVklDRVMtTUlCLnR4dCBNVEEtTUlCLnR4dCBcCiAJUk1PTi1NSUIudHh0IFwKLQlSRkMxMTU1LVNNSS50eHQgUkZDMTIxMy1NSUIudHh0IFwKKwlUVU5ORUwtTUlCLnR4dCBcCisJVFJBTlNQT1JULUFERFJFU1MtTUlCLnR4dCBcCisJUkZDMTE1NS1TTUkudHh0IFJGQzEyMTMtTUlCLnR4dFwKIAlTQ1RQLU1JQi50eHQKIAogTUlCREVQUyA9IE1ha2VmaWxlLm1pYiBtaWJmZXRjaCBzbWlzdHJpcApAQCAtNjUsNiArNzEsMTIgQEAKIFNOTVAtQ09NTVVOSVRZLU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDI1NzYKIAorU05NUC1VU00tQUVTLU1JQi50eHQ6CSQoTUlCREVQUykKKwkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDM4MjYKKworU05NUC1VU00tREgtT0JKRUNUUy1NSUIudHh0OgkkKE1JQkRFUFMpCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyNzg2CisKIFNOTVB2Mi1TTUkudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyNTc4IFNOTVB2Mi1TTUkKIApAQCAtOTIsNiArMTA0LDE4IEBACiBESVNNQU4tU0NSSVBULU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDMxNjUKIAorRElTTUFOLUVYUFJFU1NJT04tTUlCLnR4dDoJJChNSUJERVBTKQorCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjk4MgorCitESVNNQU4tRVZFTlQtTUlCLnR4dDoJJChNSUJERVBTKQorCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjk4MQorCitESVNNQU4tTlNMT09LVVAtTUlCLnR4dCBESVNNQU4tVFJBQ0VST1VURS1NSUIudHh0IERJU01BTi1QSU5HLU1JQi50eHQ6CSQoTUlCREVQUykKKwkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDQ1NjAKKworTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0OgkkKE1JQkRFUFMpCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAzMDE0CisKIElGLU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDI4NjMKIApAQCAtMTEwLDYgKzEzNCw5IEBACiBJQU5BaWZUeXBlLU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoIC14ICQoSUFOQUhPU1QpICQoSUFOQURJUikgaWFuYWlmdHlwZS1taWIKIAorSUFOQS1SVFBST1RPLU1JQi50eHQ6CSQoTUlCREVQUykKKwkuL21pYmZldGNoIC14ICQoSUFOQUhPU1QpICQoSUFOQURJUikgaWFuYWlwcm91dGVwcm90b2NvbC1taWIKKwogSUFOQS1MQU5HVUFHRS1NSUIudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAteCAkKElBTkFIT1NUKSAkKElBTkFESVIpIGlhbmFsYW5ndWFnZS1taWIKIApAQCAtMTE3LDE2ICsxNDQsMjIgQEAKIAkuL21pYmZldGNoIC14ICQoSUFOQUhPU1QpICQoSUFOQURJUikgaWFuYWFkZHJlc3NmYW1pbHludW1iZXJzLW1pYgogCiBJUC1NSUIudHh0OgkkKE1JQkRFUFMpCi0JLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyMDExCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSA0MjkzCiAKIElQLUZPUldBUkQtTUlCLnR4dDoJJChNSUJERVBTKQotCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjA5NgorCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgNDI5MgogCiBUQ1AtTUlCLnR4dDoJJChNSUJERVBTKQogCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgNDAyMgogCiBVRFAtTUlCLnR4dDoJJChNSUJERVBTKQotCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjAxMworCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgNDExMworCitUVU5ORUwtTUlCLnR4dDoJJChNSUJERVBTKQorCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgNDA4NworCitUUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0OgkkKE1JQkRFUFMpCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAzNDE5CiAKIElQVjYtVEMudHh0IElQVjYtTUlCLnR4dDoJJChNSUJERVBTKQogCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjQ2NQpAQCAtMTQwLDYgKzE3Myw5IEBACiBJUFY2LVVEUC1NSUIudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyNDU0CiAKK0lQVjYtRkxPVy1MQUJFTC1NSUIudHh0OgkkKE1JQkRFUFMpCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAzNTk1CisKIEhPU1QtUkVTT1VSQ0VTLU1JQi50eHQgSE9TVC1SRVNPVVJDRVMtVFlQRVMudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyNzkwCiAKQEAgLTE1OCw3ICsxOTQsNyBAQAogUkZDMTIxMy1NSUIudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAxMjEzCiAKLVNDVFAudHh0OgkkKE1JQkRFUFMpCitTQ1RQLU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDM4NzMKIAogaWFuYW1pYnM6CWlhbmFsaXN0CmRpZmYgLS1naXQgYS9taWJzL05FVC1TTk1QLVRDLnR4dCBiL21pYnMvTkVULVNOTVAtVEMudHh0CmluZGV4IGYzZmY1ZGYuLmIzZDc2YTkgMTAwNjQ0Ci0tLSBhL21pYnMvTkVULVNOTVAtVEMudHh0CisrKyBiL21pYnMvTkVULVNOTVAtVEMudHh0CkBAIC0xMjAsNSArMTIwLDggQEAKIG5ldFNubXBVRFBJUHY2RG9tYWluCU9CSkVDVCBJREVOVElGSUVSIDo6PSB7IG5ldFNubXBEb21haW5zIDQgfSAtLSBvYnNvbGV0ZQogbmV0U25tcFRDUElQdjZEb21haW4JT0JKRUNUIElERU5USUZJRVIgOjo9IHsgbmV0U25tcERvbWFpbnMgNSB9IC0tIG9ic29sZXRlCiBuZXRTbm1wQ2FsbGJhY2tEb21haW4JT0JKRUNUIElERU5USUZJRVIgOjo9IHsgbmV0U25tcERvbWFpbnMgNiB9CituZXRTbm1wQWxpYXNEb21haW4JT0JKRUNUIElERU5USUZJRVIgOjo9IHsgbmV0U25tcERvbWFpbnMgNyB9CituZXRTbm1wRFRMU1VEUERvbWFpbglPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBuZXRTbm1wRG9tYWlucyA4IH0KK25ldFNubXBEVExTU0NUUERvbWFpbglPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBuZXRTbm1wRG9tYWlucyA5IH0KIAogRU5ECmRpZmYgLS1naXQgYS9taWJzL05PVElGSUNBVElPTi1MT0ctTUlCLnR4dCBiL21pYnMvTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0CmluZGV4IGM2MGI3ZDIuLmM3ZGE5MzQgMTAwNjQ0Ci0tLSBhL21pYnMvTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0CisrKyBiL21pYnMvTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0CkBAIC0yMyw3ICsyMyw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgIlRoZSBNSUIgbW9kdWxlIGZvciBsb2dnaW5nIFNOTVAgTm90aWZpY2F0aW9ucywgdGhhdCBpcywgVHJhcHMKIAotCiAgICAgIGFuZCBJbmZvcm1zLiIKIC0tIFJldmlzaW9uIEhpc3RvcnkKIApAQCAtMzIsNyArMzEsNiBAQAogICAgICAgICAgICAgICAgUHVibGlzaGVkIGFzIFJGQyAzMDE0IgogICAgIDo6PSB7IG1pYi0yIDkyIH0KIAotCiBub3RpZmljYXRpb25Mb2dNSUJPYmplY3RzIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7IG5vdGlmaWNhdGlvbkxvZ01JQiAxIH0KIAogbmxtQ29uZmlnIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7IG5vdGlmaWNhdGlvbkxvZ01JQk9iamVjdHMgMSB9CkBAIC03Miw4ICs3MCw2IEBACiAKIG5sbUNvbmZpZ0dsb2JhbEFnZU91dCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFVuc2lnbmVkMzIKLQotCiAgICAgVU5JVFMgICAgICAgIm1pbnV0ZXMiCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC13cml0ZQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKQEAgLTkzLDcgKzg5LDYgQEAKICAgICBERUZWQUwgeyAxNDQwIH0gIC0tIDI0IGhvdXJzCiAgICAgOjo9IHsgbmxtQ29uZmlnIDIgfQogCi0KIC0tCiAtLSBCYXNpYyBMb2cgQ29uZmlndXJhdGlvbiBUYWJsZQogLS0KQEAgLTEyMiw4ICsxMTcsNiBAQAogICAgIG5sbUNvbmZpZ0xvZ0ZpbHRlck5hbWUgICAgU25tcEFkbWluU3RyaW5nLAogICAgIG5sbUNvbmZpZ0xvZ0VudHJ5TGltaXQgICAgVW5zaWduZWQzMiwKICAgICBubG1Db25maWdMb2dBZG1pblN0YXR1cyAgIElOVEVHRVIsCi0KLQogICAgIG5sbUNvbmZpZ0xvZ09wZXJTdGF0dXMgICAgSU5URUdFUiwKICAgICBubG1Db25maWdMb2dTdG9yYWdlVHlwZSAgIFN0b3JhZ2VUeXBlLAogICAgIG5sbUNvbmZpZ0xvZ0VudHJ5U3RhdHVzICAgUm93U3RhdHVzCkBAIC0xNzIsOCArMTY1LDYgQEAKICAgICAgTm90aWZpY2F0aW9ucyBpbiB0aGUgbG9nLCB0aGUgb2xkZXN0IE5vdGlmaWNhdGlvbnMgYXJlIGRpc2NhcmRlZAogICAgICB0byBicmluZyB0aGUgbG9nIGRvd24gdG8gdGhlIG5ldyBsaW1pdC4KIAotCi0KICAgICAgQSB2YWx1ZSBvZiAwIGluZGljYXRlcyBubyBsaW1pdC4KIAogICAgICBQbGVhc2UgYmUgYXdhcmUgdGhhdCBjb250ZW50aW9uIGJldHdlZW4gbXVsdGlwbGUgbWFuYWdlcnMKQEAgLTIyMiw4ICsyMTMsNiBAQAogICAgIDo6PSB7IG5sbUNvbmZpZ0xvZ0VudHJ5IDYgfQogCiBubG1Db25maWdMb2dFbnRyeVN0YXR1cyBPQkpFQ1QtVFlQRQotCi0KICAgICBTWU5UQVggICAgIFJvd1N0YXR1cwogICAgIE1BWC1BQ0NFU1MgcmVhZC1jcmVhdGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKQEAgLTI3Miw4ICsyNjEsNiBAQAogbmxtU3RhdHNMb2dUYWJsZSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFNFUVVFTkNFIE9GIE5sbVN0YXRzTG9nRW50cnkKICAgICBNQVgtQUNDRVNTICBub3QtYWNjZXNzaWJsZQotCi0KICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgIkEgdGFibGUgb2YgTm90aWZpY2F0aW9uIGxvZyBzdGF0aXN0aWNzIGVudHJpZXMuIgpAQCAtMzE1LDEzICszMDIsMTMgQEAKICAgICAgbmxtQ29uZmlnR2xvYmFsQWdlT3V0LiIKICAgICA6Oj0geyBubG1TdGF0c0xvZ0VudHJ5IDIgfQogCi0KIC0tCiAtLSBMb2cgU2VjdGlvbgogLS0KIAogLS0KIC0tIExvZyBUYWJsZQorCiAtLQogCiBubG1Mb2dUYWJsZSBPQkpFQ1QtVFlQRQpAQCAtMzcwLDggKzM1Nyw2IEBACiAgICAgSU5ERVggICAgICAgeyBubG1Mb2dOYW1lLCBubG1Mb2dJbmRleCB9CiAgICAgOjo9IHsgbmxtTG9nVGFibGUgMSB9CiAKLQotCiBObG1Mb2dFbnRyeSA6Oj0gU0VRVUVOQ0UgewogICAgIG5sbUxvZ0luZGV4ICAgICAgICAgICAgICAgIFVuc2lnbmVkMzIsCiAgICAgbmxtTG9nVGltZSAgICAgICAgICAgICAgICAgVGltZVN0YW1wLApAQCAtNDIxLDcgKzQwNiw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgIlRoZSBpZGVudGlmaWNhdGlvbiBvZiB0aGUgU05NUCBlbmdpbmUgYXQgd2hpY2ggdGhlIE5vdGlmaWNhdGlvbgogCi0KICAgICAgb3JpZ2luYXRlZC4KIAogICAgICBJZiB0aGUgbG9nIGNhbiBjb250YWluIE5vdGlmaWNhdGlvbnMgZnJvbSBvbmx5IG9uZSBlbmdpbmUKQEAgLTQ3MCw4ICs0NTQsNiBAQAogICAgIE1BWC1BQ0NFU1MgIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KICAgICAgIklmIHRoZSBOb3RpZmljYXRpb24gd2FzIHJlY2VpdmVkIGluIGEgcHJvdG9jb2wgd2hpY2ggaGFzIGEKICAgICAgIGNvbnRleHRFbmdpbmVJRCBlbGVtZW50IGxpa2UgU05NUHYzLCB0aGlzIG9iamVjdCBoYXMgdGhhdCB2YWx1ZS4KICAgICAgIE90aGVyd2lzZSBpdHMgdmFsdWUgaXMgYSB6ZXJvLWxlbmd0aCBzdHJpbmcuIgpAQCAtNTIxLDcgKzUwMyw2IEBACiAKIE5sbUxvZ1ZhcmlhYmxlRW50cnkgOjo9IFNFUVVFTkNFIHsKIAotCiAgICAgbmxtTG9nVmFyaWFibGVJbmRleCAgICAgICAgICAgICAgVW5zaWduZWQzMiwKICAgICBubG1Mb2dWYXJpYWJsZUlEICAgICAgICAgICAgICAgICBPQkpFQ1QgSURFTlRJRklFUiwKICAgICBubG1Mb2dWYXJpYWJsZVZhbHVlVHlwZSAgICAgICAgICBJTlRFR0VSLApAQCAtNTcwLDggKzU1MSw2IEBACiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQogICAgICAiVGhlIHZhbHVlIHdoZW4gbmxtTG9nVmFyaWFibGVUeXBlIGlzICdjb3VudGVyMzInLiIKICAgICA6Oj0geyBubG1Mb2dWYXJpYWJsZUVudHJ5IDQgfQogCkBAIC02MjEsNyArNjAwLDYgQEAKICAgICAgSVB2NiBhZGRyZXNzZXMgYXJlIHJlcHJlc2VudGVkIHVzaW5nIFRBZGRyZXNzIG9yCiAgICAgIEluZXRBZGRyZXNzLCBhbmQgc28gdGhlIHVuZGVybHlpbmcgZGF0YXR5cGUgaXMKIAotCiAgICAgIE9DVEVUIFNUUklORywgYW5kIHRoZWlyIHZhbHVlIHdvdWxkIGJlIHN0b3JlZCBpbgogICAgICB0aGUgbmxtTG9nVmFyaWFibGVPY3RldFN0cmluZ1ZhbCBjb2x1bW4uIgogICAgIDo6PSB7IG5sbUxvZ1ZhcmlhYmxlRW50cnkgOSB9CkBAIC02NTAsNyArNjI4LDYgQEAKICAgICAgIlRoZSB2YWx1ZSB3aGVuIG5sbUxvZ1ZhcmlhYmxlVHlwZSBpcyAnb3BhcXVlJy4iCiAgICAgOjo9IHsgbmxtTG9nVmFyaWFibGVFbnRyeSAxMiB9CiAKLQogLS0KIC0tIENvbmZvcm1hbmNlCiAtLQpAQCAtNjcxLDcgKzY0OCw2IEBACiAgICAgICAgICAgdGhlIE5vdGlmaWNhdGlvbiBMb2cgTUlCLiIKICAgICAgTU9EVUxFICAgIC0tIHRoaXMgbW9kdWxlCiAKLQogICAgICAgICAgIE1BTkRBVE9SWS1HUk9VUFMgewogICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uTG9nQ29uZmlnR3JvdXAsCiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25Mb2dTdGF0c0dyb3VwLApAQCAtNzA0LDcgKzY4MCw2IEBACiAgICAgICAgICAgIlRoaXMgZ3JvdXAgaXMgbWFuZGF0b3J5IG9uIHN5c3RlbXMgdGhhdCBrZWVwIHdhbGwgY2xvY2sKICAgICAgICAgICBkYXRlIGFuZCB0aW1lIGFuZCBzaG91bGQgbm90IGJlIGltcGxlbWVudGVkIG9uIHN5c3RlbXMgdGhhdAogICAgICAgICAgIGRvIG5vdCBoYXZlIGEgd2FsbCBjbG9jayBkYXRlLiIKLQogICAgICA6Oj0geyBub3RpZmljYXRpb25Mb2dNSUJDb21wbGlhbmNlcyAxIH0KIAogLS0gVW5pdHMgb2YgQ29uZm9ybWFuY2UKQEAgLTcyMCw4ICs2OTUsNiBAQAogICAgICAgICAgIG5sbUNvbmZpZ0xvZ1N0b3JhZ2VUeXBlLAogICAgICAgICAgIG5sbUNvbmZpZ0xvZ0VudHJ5U3RhdHVzCiAgICAgIH0KLQotCiAgICAgIFNUQVRVUyBjdXJyZW50CiAgICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgIk5vdGlmaWNhdGlvbiBsb2cgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LiIKQEAgLTc3MCw4ICs3NDMsNiBAQAogICAgICAgICAgIG5sbUxvZ0RhdGVBbmRUaW1lCiAgICAgIH0KICAgICAgU1RBVFVTIGN1cnJlbnQKLQotCiAgICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgIkNvbmRpdGlvbmFsbHkgbWFuZGF0b3J5IG5vdGlmaWNhdGlvbiBsb2cgZGF0YS4KICAgICAgICAgICBUaGlzIGdyb3VwIGlzIG1hbmRhdG9yeSBvbiBzeXN0ZW1zIHRoYXQga2VlcCB3YWxsCmRpZmYgLS1naXQgYS9taWJzL1NOTVAtVVNNLUFFUy1NSUIudHh0IGIvbWlicy9TTk1QLVVTTS1BRVMtTUlCLnR4dAppbmRleCBlOWU5ZmI4Li40YzE3MzAyIDEwMDY0NAotLS0gYS9taWJzL1NOTVAtVVNNLUFFUy1NSUIudHh0CisrKyBiL21pYnMvU05NUC1VU00tQUVTLU1JQi50eHQKQEAgLTM5LDkgKzM5LDkgQEAKICAgICAgICAgICAgIHNlZSB0aGUgUkZDIGl0c2VsZiBmb3IgZnVsbCBsZWdhbCBub3RpY2VzLgogICAgICAgICAgICAgU3VwcGxlbWVudGFyeSBpbmZvcm1hdGlvbiBtYXkgYmUgYXZhaWxhYmxlIG9uCiAgICAgICAgICAgICBodHRwOi8vd3d3LmlldGYub3JnL2NvcHlyaWdodHMvaWFuYW1pYi5odG1sLiIKKwogICAgIFJFVklTSU9OICAgICAiMjAwNDA2MTQwMDAwWiIKICAgICBERVNDUklQVElPTiAgIkluaXRpYWwgdmVyc2lvbiwgcHVibGlzaGVkIGFzIFJGQzM4MjYiCi0KICAgICA6Oj0geyBzbm1wTW9kdWxlcyAyMCB9CiAKIHVzbUFlc0NmYjEyOFByb3RvY29sIE9CSkVDVC1JREVOVElUWQpkaWZmIC0tZ2l0IGEvbWlicy9TTk1QLVVTTS1ESC1PQkpFQ1RTLU1JQi50eHQgYi9taWJzL1NOTVAtVVNNLURILU9CSkVDVFMtTUlCLnR4dAppbmRleCBlZTIwNzZhLi43Mzc3NDI1IDEwMDY0NAotLS0gYS9taWJzL1NOTVAtVVNNLURILU9CSkVDVFMtTUlCLnR4dAorKysgYi9taWJzL1NOTVAtVVNNLURILU9CSkVDVFMtTUlCLnR4dApAQCAtMjMsNyArMjMsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBSZWR3b29kIENpdHksIENBIDk0MDYzCiAgICAgICAgICAgICAgICAgICBFbWFpbDogIHN0am9obnNAY29ycC5ob21lLm5ldAogICAgICAgICAgICAgICAgICAgUGhvbmU6ICArMS02NTAtNTU2LTUzNjgiCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAiVGhlIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gZGVmaW5pdGlvbnMgZm9yIHByb3ZpZGluZyBmb3J3YXJkCiAgICAgc2VjcmVjeSBmb3Iga2V5IGNoYW5nZXMgZm9yIHRoZSB1c21Vc2VyVGFibGUsIGFuZCBmb3IgcHJvdmlkaW5nIGEKQEAgLTMzLDggKzMyLDYgQEAKICAgICBSRVZJU0lPTiAgICAgIjIwMDAwMzA2MDAwMFoiCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAiSW5pdGlhbCB2ZXJzaW9uIHB1Ymxpc2hlZCBhcyBSRkMgMjc4Ni4iCi0KLQogICAgIDo6PSB7IGV4cGVyaW1lbnRhbCAxMDEgfSAgLS0gSUFOQSBESEtFWS1DSEFOR0UgMTAxCiAKIC0tIEFkbWluaXN0cmF0aXZlIGFzc2lnbm1lbnRzCkBAIC0xMTEsNyArMTA4LDYgQEAKICAgICAgICAgICAgYmFzZSAgICBJTlRFR0VSLCAgIC0tIGcKICAgICAgICAgICAgcHJpdmF0ZVZhbHVlTGVuZ3RoICBJTlRFR0VSIE9QVElPTkFMIH0KIAotCiAgICAgSW1wbGVtZW50b3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHVzZSBlaXRoZXIgdGhlIHZhbHVlcyBmcm9tCiAgICAgT2FrbGV5IEdyb3VwIDEgIG9yIHRoZSB2YWx1ZXMgb2YgZnJvbSBPYWtsZXkgR3JvdXAgMiBhcyBzcGVjaWZpZWQKICAgICBpbiBSRkMtMjQwOSwgVGhlIEludGVybmV0IEtleSBFeGNoYW5nZSwgU2VjdGlvbiA2LjEsIDYuMiBhcyB0aGUKQEAgLTIzNyw2ICsyMzMsNyBAQAogICAgIGFuIGltcGxlbWVudG9yIHdpbGwgc3BlY2lmeSBvbmUgb3IgbW9yZSBzdGFuZGFyZCBzZWN1cml0eSBuYW1lcwogICAgIGFuZCB3aWxsIHByb3ZpZGUgZW50cmllcyBpbiB0aGUgVkFDTSB0YWJsZXMgZ3JhbnRpbmcgdmFyaW91cwogICAgIGxldmVscyBvZiBhY2Nlc3MgdG8gdGhvc2UgbmFtZXMuICBUaGUgYWN0dWFsIGNvbnRlbnQgb2YgdGhlIFZBQ00KKwogICAgIHRhYmxlIGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBNSUIuCiAKICAgICBOb3RlOiBUaGlzIHRhYmxlIGlzIGV4cGVjdGVkIHRvIGJlIHJlYWRhYmxlIHdpdGhvdXQgYXV0aGVudGljYXRpb24KQEAgLTI0OSw3ICsyNDYsNiBAQAogICAgIE1BWC1BQ0NFU1MgIG5vdC1hY2Nlc3NpYmxlCiAgICAgU1RBVFVTICAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KICAgICAgICAgIkFuIGVudHJ5IGluIHRoZSB1c21ESEtpY2tzdGFydFRhYmxlLiAgVGhlIGFnZW50IFNIT1VMRCBlaXRoZXIKICAgICBkZWxldGUgdGhpcyBlbnRyeSBvciBtYXJrIGl0IGFzIGluYWN0aXZlIHVwb24gYSBzdWNjZXNzZnVsIFNFVCBvZgogICAgIGFueSBvZiB0aGUgS2V5Q2hhbmdlLXR5cGVkIG9iamVjdHMgaW4gdGhlIHVzbVVzZXJFbnRyeSBvciB1cG9uIGEKQEAgLTI2MCw3ICsyNTYsNiBAQAogICAgIG9uZSBvciBtb3JlIG9mIHRoZSBrZXlzIGZvciBhIHJvdyBpbiB1c21Vc2VyVGFibGUgd2l0aCBhCiAgICAgcGFydGljdWxhciBzZWN1cml0eSBuYW1lLCB0aGUgcm93IGluIHRoaXMgdGFibGUgd2l0aCB0aGF0IHNhbWUKICAgICBzZWN1cml0eSBuYW1lIGlzIG5vIGxvbmdlciB1c2VmdWwgb3IgbWVhbmluZ2Z1bC4iCi0KICAgICBJTkRFWCAgIHsgdXNtREhLaWNrc3RhcnRJbmRleCB9CiAgICAgOjo9IHt1c21ESEtpY2tzdGFydFRhYmxlIDEgfQogCkBAIC0yODUsNiArMjgwLDcgQEAKICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgIlRoZSBhZ2VudCdzIERpZmZpZS1IZWxsbWFuIHB1YmxpYyB2YWx1ZSBmb3IgdGhpcyByb3cuICBBdAorCiAgICAgaW5pdGlhbGl6YXRpb24sIHRoZSBhZ2VudCBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIGFuZCBkZXJpdmVzCiAgICAgaXRzIHB1YmxpYyB2YWx1ZSBmcm9tIHRoYXQgbnVtYmVyLiAgVGhpcyBwdWJsaWMgdmFsdWUgaXMgcHVibGlzaGVkCiAgICAgaGVyZS4gIFRoaXMgcHVibGljIHZhbHVlICd5JyBlcXVhbHMgZ15yIE1PRCBwIHdoZXJlIGcgaXMgdGhlIGZyb20KQEAgLTMwMyw3ICsyOTksNiBAQAogICAgICAgICB3aGVyZSBQVjEsLi4uLFBWayBhcmUgdGhlIG9jdGV0cyBvZiBQViBmcm9tIGZpcnN0IHRvIGxhc3QsIGFuZAogICAgICAgICB3aGVyZSBQVjEgIT0gMC4KIAotCiAgICAgVGhlIGZvbGxvd2luZyBESCBwYXJhbWV0ZXJzIChPYWtsZXkgZ3JvdXAgIzIsIFJGQyAyNDA5LCBzZWMgNi4xLAogICAgIDYuMikgYXJlIHVzZWQgZm9yIHRoaXMgb2JqZWN0OgogCkBAIC0zMjgsMTAgKzMyMywxMCBAQAogICAgIE1BWC1BQ0NFU1MgIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCiAgICAgICAgICJUaGUgbWFuYWdlcidzIERpZmZpZS1IZWxsbWFuIHB1YmxpYyB2YWx1ZSBmb3IgdGhpcyByb3cuICBOb3RlCiAgICAgdGhhdCB0aGlzIHZhbHVlIGlzIG5vdCBzZXQgdmlhIHRoZSBTTk1QIGFnZW50LCBidXQgbWF5IGJlIHNldCB2aWEKICAgICBzb21lIG91dCBvZiBiYW5kIG1ldGhvZCwgc3VjaCBhcyB0aGUgZGV2aWNlJ3MgY29uZmlndXJhdGlvbiBmaWxlLgorCiAgICAgVGhlIG1hbmFnZXIgY2FsY3VsYXRlcyB0aGlzIHZhbHVlIGluIHRoZSBzYW1lIG1hbm5lciBhbmQgdXNpbmcgdGhlCiAgICAgc2FtZSBwYXJhbWV0ZXIgc2V0IGFzIHRoZSBhZ2VudCBkb2VzLiAgRS5nLiBpdCBzZWxlY3RzIGEgcmFuZG9tCiAgICAgbnVtYmVyICdyJywgY2FsY3VsYXRlcyB5ID0gZ15yIG1vZCBwIGFuZCBwcm92aWRlcyAneScgYXMgdGhlCkBAIC00MjgsNiArNDIzLDcgQEAKICAgICAgICAgaW1wbGVtZW50cyB0aGUgdXNtVXNlclRhYmxlIGFuZCB3aGljaCB3aXNoZXMgdGhlIGFiaWxpdHkgdG8KICAgICAgICAgcG9wdWxhdGUgdGhlIFVTTSB0YWJsZSBiYXNlZCBvbiBvdXQtb2YtYmFuZCBwcm92aWRlZCBESAogICAgICAgICBpZ25pdGlvbiB2YWx1ZXMuCisKICAgICAgICAgICAgICBBbnkgYWdlbnQgaW1wbGVtZW50aW5nIHRoaXMgZ3JvdXAgaXMgZXhwZWN0ZWQgdG8gcHJvdmlkZQogICAgICAgICBwcmVpbnN0YWxsZWQgZW50cmllcyBpbiB0aGUgdmFjbSB0YWJsZXMgYXMgZm9sbG93czoKIApAQCAtNDc2LDYgKzQ3Miw3IEBACiAgICAgICAgIHZhY21WaWV3VHJlZUZhbWlseVZpZXdOYW1lICAgICAgJ2RoS2lja1Jlc3RyaWN0ZWQnCiAgICAgICAgIHZhY21WaWV3VHJlZUZhbWlseVN1YnRyZWUgICAgICAgMS4zLjYuMS4yLjEuMSAgKHN5c3RlbSkKICAgICAgICAgdmFjbVZpZXdUcmVlRmFtaWx5TWFzayAgICAgICAgICAnJworCiAgICAgICAgIHZhY21WaWV3VHJlZUZhbWlseVR5cGUgICAgICAgICAgMQogICAgICAgICB2YWNtVmlld1RyZWVGYW1pbHlTdG9yYWdlVHlwZSAgIHBlcm1hbmVudAogICAgICAgICB2YWNtVmlld1RyZWVGYW1pbHlTdGF0dXMgICAgICAgIGFjdGl2ZQpAQCAtNDkzLDcgKzQ5MCw2IEBACiAgICAgICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiSXQgaXMgY29tcGxpYW50IHRvIGltcGxlbWVudCB0aGlzIG9iamVjdCBhcyByZWFkLW9ubHkgZm9yCiAgICAgICAgIGFueSBkZXZpY2UuIgotCiAgICAgOjo9IHsgdXNtREhLZXlNSUJDb21wbGlhbmNlcyAxIH0KIAogLS0gVW5pdHMgb2YgQ29tcGxpYW5jZQpAQCAtNTMzLDUgKzUyOSw0IEBACiAgICAgbm9uLWNvbmZpZGVudGlhbCBhY2Nlc3MuIgogICAgIDo6PSB7IHVzbURIS2V5TUlCR3JvdXBzIDMgfQogCi0KIEVORApkaWZmIC0tZ2l0IGEvbWlicy9UUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0IGIvbWlicy9UUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0CmluZGV4IDdkNDUwZmIuLjIyNzg4NmUgMTAwNjQ0Ci0tLSBhL21pYnMvVFJBTlNQT1JULUFERFJFU1MtTUlCLnR4dAorKysgYi9taWJzL1RSQU5TUE9SVC1BRERSRVNTLU1JQi50eHQKQEAgLTEzLDYgKzEzLDcgQEAKICAgICAgICAgIFRVIEJyYXVuc2Nod2VpZwogICAgICAgICAgQnVlbHRlbndlZyA3NC83NQogICAgICAgICAgMzgxMDYgQnJhdW5zY2h3ZWlnLCBHZXJtYW55CisKICAgICAgICAgIFBob25lOiArNDkgNTMxIDM5MS0zMjg5CiAgICAgICAgICBFTWFpbDogc2Nob2Vud0BpYnIuY3MudHUtYnMuZGUKIApAQCAtMzIsNyArMzMsNiBAQAogICAgICAgICAiSW5pdGlhbCB2ZXJzaW9uLCBwdWJsaXNoZWQgYXMgUkZDIDM0MTkuIgogICAgIDo6PSB7IG1pYi0yIDEwMCB9CiAKLQogdHJhbnNwb3J0RG9tYWlucyBPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyB0cmFuc3BvcnRBZGRyZXNzTUlCIDEgfQogCiB0cmFuc3BvcnREb21haW5VZHBJcHY0IE9CSkVDVC1JREVOVElUWQpAQCAtMjA1LDYgKzIwNSw3IEBACiAgICAgICAgICB0Y3BJcHY0KDUpICAgICB0cmFuc3BvcnREb21haW5UY3BJcHY0CiAgICAgICAgICB0Y3BJcHY2KDYpICAgICB0cmFuc3BvcnREb21haW5UY3BJcHY2CiAgICAgICAgICB0Y3BJcHY0eig3KSAgICB0cmFuc3BvcnREb21haW5UY3BJcHY0egorCiAgICAgICAgICB0Y3BJcHY2eig4KSAgICB0cmFuc3BvcnREb21haW5UY3BJcHY2egogICAgICAgICAgc2N0cElwdjQoOSkgICAgdHJhbnNwb3J0RG9tYWluU2N0cElwdjQKICAgICAgICAgIHNjdHBJcHY2KDEwKSAgIHRyYW5zcG9ydERvbWFpblNjdHBJcHY2CkBAIC0yNTMsNiArMjU0LDcgQEAKICAgICAgICAgIEEgVHJhbnNwb3J0QWRkcmVzcyB2YWx1ZSBpcyBhbHdheXMgaW50ZXJwcmV0ZWQgd2l0aGluIHRoZQogICAgICAgICAgY29udGV4dCBvZiBhIFRyYW5zcG9ydEFkZHJlc3NUeXBlIG9yIFRyYW5zcG9ydERvbWFpbiB2YWx1ZS4KICAgICAgICAgIEV2ZXJ5IHVzYWdlIG9mIHRoZSBUcmFuc3BvcnRBZGRyZXNzIHRleHR1YWwgY29udmVudGlvbiBNVVNUCisKICAgICAgICAgIHNwZWNpZnkgdGhlIFRyYW5zcG9ydEFkZHJlc3NUeXBlIG9yIFRyYW5zcG9ydERvbWFpbiBvYmplY3QKICAgICAgICAgIHdoaWNoIHByb3ZpZGVzIHRoZSBjb250ZXh0LiBGdXJ0aGVybW9yZSwgTUlCIGF1dGhvcnMgU0hPVUxECiAgICAgICAgICBkZWZpbmUgYSBzZXBhcmF0ZSBUcmFuc3BvcnRBZGRyZXNzVHlwZSBvciBUcmFuc3BvcnREb21haW4KQEAgLTM0OSw2ICszNTEsNyBAQAogCiAgICAgICAgICBUaGlzIHRleHR1YWwgY29udmVudGlvbiBTSE9VTEQgTk9UIGJlIHVzZWQgZGlyZWN0bHkgaW4gb2JqZWN0CiAgICAgICAgICBkZWZpbml0aW9ucyBzaW5jZSBpdCByZXN0cmljdHMgYWRkcmVzc2VzIHRvIGEgc3BlY2lmaWMgZm9ybWF0LgorCiAgICAgICAgICBIb3dldmVyLCBpZiBpdCBpcyB1c2VkLCBpdCBNQVkgYmUgdXNlZCBlaXRoZXIgb24gaXRzIG93biBvcgogICAgICAgICAgaW4gY29uanVuY3Rpb24gd2l0aCBUcmFuc3BvcnRBZGRyZXNzVHlwZSBvciBUcmFuc3BvcnREb21haW4KICAgICAgICAgIGFzIGEgcGFpci4iCkBAIC0zOTcsNiArNDAwLDcgQEAKICAgICAgICAgIHRpbWUgb2YgdGhlIG1hbmFnZW1lbnQgb3BlcmF0aW9uKS4KIAogICAgICAgICAgVGhlIERFU0NSSVBUSU9OIGNsYXVzZSBvZiBUcmFuc3BvcnRBZGRyZXNzIG9iamVjdHMgdGhhdCBtYXkKKwogICAgICAgICAgaGF2ZSBUcmFuc3BvcnRBZGRyZXNzRG5zIHZhbHVlcyBtdXN0IGZ1bGx5IGRlc2NyaWJlIGhvdyAoYW5kCiAgICAgICAgICB3aGVuKSBzdWNoIG5hbWVzIGFyZSB0byBiZSByZXNvbHZlZCB0byBJUCBhZGRyZXNzZXMgYW5kIHZpY2UKICAgICAgICAgIHZlcnNhLgpkaWZmIC0tZ2l0IGEvbWlicy9UVU5ORUwtTUlCLnR4dCBiL21pYnMvVFVOTkVMLU1JQi50eHQKaW5kZXggNjE1ZmFhNi4uNWY5NTk2YiAxMDA2NDQKLS0tIGEvbWlicy9UVU5ORUwtTUlCLnR4dAorKysgYi9taWJzL1RVTk5FTC1NSUIudHh0CkBAIC0zNyw4ICszNyw2IEBACiAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoaXMgTUlCIG1vZHVsZSBpcyBwYXJ0IG9mIFJGQyA0MDg3OyAgc2VlCiAgICAgICAgICAgICB0aGUgUkZDIGl0c2VsZiBmb3IgZnVsbCBsZWdhbCBub3RpY2VzLiIKIAotCi0KICAgICBSRVZJU0lPTiAgICAgIjIwMDUwNTE2MDAwMFoiIC0tIE1heSAxNiwgMjAwNQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiSVB2NC1zcGVjaWZpYyBvYmplY3RzIHdlcmUgZGVwcmVjYXRlZCwgaW5jbHVkaW5nCkBAIC04Nyw5ICs4NSw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJUaGUgKGNvbmNlcHR1YWwpIHRhYmxlIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gb24KICAgICAgICAgICAgIGNvbmZpZ3VyZWQgdHVubmVscy4iCi0KLQotCiAgICAgOjo9IHsgdHVubmVsIDEgfQogCiB0dW5uZWxJZkVudHJ5IE9CSkVDVC1UWVBFCkBAIC0xMzksOCArMTM0LDYgQEAKICAgICAgICAgICAgIChpLmUuLCB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyB1c2VkIGluIHRoZSBvdXRlciBJUAogICAgICAgICAgICAgaGVhZGVyKSwgb3IgMC4wLjAuMCBpZiB1bmtub3duLCBvciBhbiBJUHY2IGFkZHJlc3MsIG9yCiAKLQotCiAgICAgICAgICAgICB0aGUgdHVubmVsIGlzIG5vdCBhIHBvaW50LXRvLXBvaW50IGxpbmsgKGUuZy4sIGlmIGl0CiAgICAgICAgICAgICBpcyBhIDZ0bzQgdHVubmVsKS4KIApAQCAtMTkwLDggKzE4Myw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJUaGUgbWV0aG9kIHVzZWQgdG8gc2V0IHRoZSBoaWdoIDYgYml0cyAodGhlCiAKLQotCiAgICAgICAgICAgICBkaWZmZXJlbnRpYXRlZCBzZXJ2aWNlcyBjb2RlcG9pbnQpIG9mIHRoZSBJUHY0IFRPUyBvcgogICAgICAgICAgICAgSVB2NiBUcmFmZmljIENsYXNzIGluIHRoZSBvdXRlciBJUCBoZWFkZXIuICBBIHZhbHVlIG9mCiAgICAgICAgICAgICAtMSBpbmRpY2F0ZXMgdGhhdCB0aGUgYml0cyBhcmUgY29waWVkIGZyb20gdGhlCkBAIC0yNDEsOCArMjMyLDYgQEAKICAgICAgICAgICAgIChpLmUuLCB0aGUgc291cmNlIGFkZHJlc3MgdXNlZCBpbiB0aGUgb3V0ZXIgSVAKICAgICAgICAgICAgIGhlYWRlcikuICBJZiB0aGUgYWRkcmVzcyBpcyB1bmtub3duLCB0aGUgdmFsdWUgaXMKIAotCi0KICAgICAgICAgICAgIDAuMC4wLjAgZm9yIElQdjQgb3IgOjogZm9yIElQdjYuICBUaGUgdHlwZSBvZiB0aGlzCiAgICAgICAgICAgICBvYmplY3QgaXMgZ2l2ZW4gYnkgdHVubmVsSWZBZGRyZXNzVHlwZS4iCiAgICAgOjo9IHsgdHVubmVsSWZFbnRyeSA5IH0KQEAgLTI5MSw5ICsyODAsNiBAQAogICAgICAgICAgICAgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0dW5uZWxJbmV0Q29uZmlnVGFibGUuIgogICAgIDo6PSB7IHR1bm5lbCAyIH0KIAotCi0KLQogdHVubmVsQ29uZmlnRW50cnkgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIFR1bm5lbENvbmZpZ0VudHJ5CiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQpAQCAtMzQzLDggKzMyOSw2IEBACiAgICAgICAgICAgICBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHR1bm5lbEluZXRDb25maWdSZW1vdGVBZGRyZXNzLiIKICAgICA6Oj0geyB0dW5uZWxDb25maWdFbnRyeSAyIH0KIAotCi0KIHR1bm5lbENvbmZpZ0VuY2Fwc01ldGhvZCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSUFOQXR1bm5lbFR5cGUKICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlCkBAIC0zOTMsOSArMzc3LDYgQEAKIAogdHVubmVsQ29uZmlnU3RhdHVzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBSb3dTdGF0dXMKLQotCi0KICAgICBNQVgtQUNDRVNTIHJlYWQtY3JlYXRlCiAgICAgU1RBVFVTICAgICBkZXByZWNhdGVkCiAgICAgREVTQ1JJUFRJT04KQEAgLTQ0NCw5ICs0MjUsNiBAQAogICAgIE1BWC1BQ0NFU1Mgbm90LWFjY2Vzc2libGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAgIlRoZSAoY29uY2VwdHVhbCkgdGFibGUgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvbgogICAgICAgICAgICAgY29uZmlndXJlZCB0dW5uZWxzLiAgVGhpcyB0YWJsZSBjYW4gYmUgdXNlZCB0byBtYXAgYQogICAgICAgICAgICAgc2V0IG9mIHR1bm5lbCBlbmRwb2ludHMgdG8gdGhlIGFzc29jaWF0ZWQgaWZJbmRleApAQCAtNDk1LDkgKzQ3Myw2IEBACiB9CiAKIHR1bm5lbEluZXRDb25maWdBZGRyZXNzVHlwZSBPQkpFQ1QtVFlQRQotCi0KLQogICAgIFNZTlRBWCAgICAgSW5ldEFkZHJlc3NUeXBlCiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQogICAgIFNUQVRVUyAgICAgY3VycmVudApAQCAtNTQ3LDggKzUyMiw2IEBACiAgICAgICAgICAgICBhbGxvdyBtdWx0aXBsZSBwYXJhbGxlbCB0dW5uZWxzLCB0aGUgbWFuYWdlciBpcwogICAgICAgICAgICAgcmVzcG9uc2libGUgZm9yIGNob29zaW5nIGFueSBJRCB3aGljaCBkb2VzIG5vdAogCi0KLQogICAgICAgICAgICAgY29uZmxpY3Qgd2l0aCBhbiBleGlzdGluZyByb3csIHN1Y2ggYXMgY2hvb3NpbmcgYQogICAgICAgICAgICAgcmFuZG9tIG51bWJlci4iCiAgICAgOjo9IHsgdHVubmVsSW5ldENvbmZpZ0VudHJ5IDUgfQpAQCAtNTk4LDggKzU3MSw2IEBACiAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgbWFubmVyLCBhbmQgY29ycmVzcG9uZGluZwogICAgICAgICAgICAgcm93cyB3aWxsIGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgaWZUYWJsZSBhbmQgdGhlCiAKLQotCiAgICAgICAgICAgICB0dW5uZWxJZlRhYmxlLiAgVGhlIHN0YXR1cyBvZiB0aGlzIHJvdyB3aWxsIGJlY29tZQogICAgICAgICAgICAgYWN0aXZlIGFzIHNvb24gYXMgdGhlIGFnZW50IGFzc2lnbnMgdGhlIGludGVyZmFjZQogICAgICAgICAgICAgaW5kZXgsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNlIGlzCkBAIC02NDgsOSArNjE5LDYgQEAKIAogICAgICAgICBPQkpFQ1QgICAgICB0dW5uZWxJZlRPUwogICAgICAgICBNSU4tQUNDRVNTICByZWFkLW9ubHkKLQotCi0KICAgICAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJXcml0ZSBhY2Nlc3MgaXMgbm90IHJlcXVpcmVkLiIKIApAQCAtNzAwLDggKzY2OCw2IEBACiAgICAgICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiV3JpdGUgYWNjZXNzIGlzIG5vdCByZXF1aXJlZC4iCiAKLQotCiAgICAgICAgIE9CSkVDVCAgICAgIHR1bm5lbElmQWRkcmVzc1R5cGUKICAgICAgICAgU1lOVEFYICAgICAgSW5ldEFkZHJlc3NUeXBlIHsgaXB2NCgxKSwgaXB2NigyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NHooMyksIGlwdjZ6KDQpIH0KQEAgLTc1MSw4ICs3MTcsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiQSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgdG8gc3VwcG9ydCBiYXNpYyBtYW5hZ2VtZW50CiAKLQotCiAgICAgICAgICAgICBvZiBJUHY0IFR1bm5lbHMuICBTaW5jZSB0aGlzIGdyb3VwIGNhbm5vdCBzdXBwb3J0CiAgICAgICAgICAgICBJUHY2LCBpdCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mCiAgICAgICAgICAgICB0dW5uZWxNSUJJbmV0R3JvdXAuIgpkaWZmIC0tZ2l0IGEvbWlicy9VQ0QtU05NUC1NSUIudHh0IGIvbWlicy9VQ0QtU05NUC1NSUIudHh0CmluZGV4IDFjNjU4ZTAuLjA2OTcxMjQgMTAwNjQ0Ci0tLSBhL21pYnMvVUNELVNOTVAtTUlCLnR4dAorKysgYi9taWJzL1VDRC1TTk1QLU1JQi50eHQKQEAgLTMwLDE0ICszMCwxNCBAQAogCiBJTVBPUlRTCiAgICAgT0JKRUNULVRZUEUsIE5PVElGSUNBVElPTi1UWVBFLCBNT0RVTEUtSURFTlRJVFksCi0gICAgSW50ZWdlcjMyLCBPcGFxdWUsIGVudGVycHJpc2VzLCBDb3VudGVyMzIKKyAgICBJbnRlZ2VyMzIsIE9wYXF1ZSwgZW50ZXJwcmlzZXMsIENvdW50ZXIzMiwgVW5zaWduZWQzMgogICAgICAgICBGUk9NIFNOTVB2Mi1TTUkKIAogICAgIFRFWFRVQUwtQ09OVkVOVElPTiwgRGlzcGxheVN0cmluZywgVHJ1dGhWYWx1ZQogCUZST00gU05NUHYyLVRDOwogCiB1Y2RhdmlzIE1PRFVMRS1JREVOVElUWQotICAgIExBU1QtVVBEQVRFRCAiMjAwNjExMjIwMDAwWiIKKyAgICBMQVNULVVQREFURUQgIjIwMDkwMTE5MDAwMFoiCiAgICAgT1JHQU5JWkFUSU9OICJVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIERhdmlzIgogICAgIENPTlRBQ1QtSU5GTyAgICAKIAkiVGhpcyBtaWIgaXMgbm8gbG9uZ2VyIGJlaW5nIG1haW50YWluZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YKQEAgLTU1LDYgKzU1LDEwIEBACiAgICAgREVTQ1JJUFRJT04KIAkiVGhpcyBmaWxlIGRlZmluZXMgdGhlIHByaXZhdGUgVUNEIFNOTVAgTUlCIGV4dGVuc2lvbnMuIgogCisgICAgUkVWSVNJT04JICIyMDA5MDExOTAwMDBaIgorICAgIERFU0NSSVBUSU9OCisJIk5ldyA2NC1iaXQgb2JqZWN0cyBmb3IgbW9uaXRvcmluZyBsYXJnZSBkaXNrIHVzYWdlIgorCiAgICAgUkVWSVNJT04JICIyMDA2MTEyMjAwMDBaIgogICAgIERFU0NSSVBUSU9OCiAJIkNsYXJpZnkgYmVoYXZpb3VyIG9mIG9iamVjdHMgaW4gdGhlIG1lbW9yeSAmIHN5c3RlbVN0YXRzIGdyb3VwcwpAQCAtNjcyLDcgKzY3NiwxMyBAQAogICAgIGRza1BlcmNlbnQJCUludGVnZXIzMiwKICAgICBkc2tQZXJjZW50Tm9kZQlJbnRlZ2VyMzIsCiAgICAgZHNrRXJyb3JGbGFnCVVDREVycm9yRmxhZywKLSAgICBkc2tFcnJvck1zZwkJRGlzcGxheVN0cmluZworICAgIGRza0Vycm9yTXNnCQlEaXNwbGF5U3RyaW5nLAorICAgIGRza1RvdGFsTG93CQlVbnNpZ25lZDMyLAorICAgIGRza1RvdGFsSGlnaAlVbnNpZ25lZDMyLAorICAgIGRza0F2YWlsTG93CQlVbnNpZ25lZDMyLAorICAgIGRza0F2YWlsSGlnaAlVbnNpZ25lZDMyLAorICAgIGRza1VzZWRMb3cJCVVuc2lnbmVkMzIsCisgICAgZHNrVXNlZEhpZ2gJCVVuc2lnbmVkMzIKIH0KIAogZHNrSW5kZXggT0JKRUNULVRZUEUKQEAgLTc2NSw2ICs3NzUsNjAgQEAKIAkiUGVyY2VudGFnZSBvZiBpbm9kZXMgdXNlZCBvbiBkaXNrIgogICAgIDo6PSB7IGRza0VudHJ5IDEwIH0gCiAKK2Rza1RvdGFsTG93IE9CSkVDVC1UWVBFCisgICAgU1lOVEFYCVVuc2lnbmVkMzIKKyAgICBNQVgtQUNDRVNTCXJlYWQtb25seQorICAgIFNUQVRVUwljdXJyZW50CisgICAgREVTQ1JJUFRJT04gIAorCSJUb3RhbCBzaXplIG9mIHRoZSBkaXNrL3BhcnRpb24gKGtCeXRlcykuCisJVG9nZXRoZXIgd2l0aCBkc2tUb3RhbEhpZ2ggY29tcG9zZXMgNjQtYml0IG51bWJlci4iCisgICAgOjo9IHsgZHNrRW50cnkgMTEgfQorCitkc2tUb3RhbEhpZ2ggT0JKRUNULVRZUEUKKyAgICBTWU5UQVgJVW5zaWduZWQzMgorICAgIE1BWC1BQ0NFU1MJcmVhZC1vbmx5CisgICAgU1RBVFVTCWN1cnJlbnQKKyAgICBERVNDUklQVElPTiAgCisJIlRvdGFsIHNpemUgb2YgdGhlIGRpc2svcGFydGlvbiAoa0J5dGVzKS4KKwlUb2dldGhlciB3aXRoIGRza1RvdGFsTG93IGNvbXBvc2VzIDY0LWJpdCBudW1iZXIuIgorICAgIDo6PSB7IGRza0VudHJ5IDEyIH0KKworZHNrQXZhaWxMb3cgT0JKRUNULVRZUEUKKyAgICBTWU5UQVgJVW5zaWduZWQzMgorICAgIE1BWC1BQ0NFU1MJcmVhZC1vbmx5CisgICAgU1RBVFVTCWN1cnJlbnQKKyAgICBERVNDUklQVElPTiAgCisJIkF2YWlsYWJsZSBzcGFjZSBvbiB0aGUgZGlzayAoa0J5dGVzKS4KKwlUb2dldGhlciB3aXRoIGRza0F2YWlsSGlnaCBjb21wb3NlcyA2NC1iaXQgbnVtYmVyLiIKKyAgICA6Oj0geyBkc2tFbnRyeSAxMyB9CisKK2Rza0F2YWlsSGlnaCBPQkpFQ1QtVFlQRQorICAgIFNZTlRBWAlVbnNpZ25lZDMyCisgICAgTUFYLUFDQ0VTUwlyZWFkLW9ubHkKKyAgICBTVEFUVVMJY3VycmVudAorICAgIERFU0NSSVBUSU9OICAKKwkiQXZhaWxhYmxlIHNwYWNlIG9uIHRoZSBkaXNrIChrQnl0ZXMpLgorCVRvZ2V0aGVyIHdpdGggZHNrQXZhaWxMb3cgY29tcG9zZXMgNjQtYml0IG51bWJlci4iCisgICAgOjo9IHsgZHNrRW50cnkgMTQgfQorCitkc2tVc2VkTG93IE9CSkVDVC1UWVBFCisgICAgU1lOVEFYCVVuc2lnbmVkMzIKKyAgICBNQVgtQUNDRVNTCXJlYWQtb25seQorICAgIFNUQVRVUwljdXJyZW50CisgICAgREVTQ1JJUFRJT04gIAorCSJVc2VkIHNwYWNlIG9uIHRoZSBkaXNrIChrQnl0ZXMpLgorCVRvZ2V0aGVyIHdpdGggZHNrVXNlZEhpZ2ggY29tcG9zZXMgNjQtYml0IG51bWJlci4iCisgICAgOjo9IHsgZHNrRW50cnkgMTUgfQorCitkc2tVc2VkSGlnaCBPQkpFQ1QtVFlQRQorICAgIFNZTlRBWAlVbnNpZ25lZDMyCisgICAgTUFYLUFDQ0VTUwlyZWFkLW9ubHkKKyAgICBTVEFUVVMJY3VycmVudAorICAgIERFU0NSSVBUSU9OICAKKwkiVXNlZCBzcGFjZSBvbiB0aGUgZGlzayAoa0J5dGVzKS4KKwlUb2dldGhlciB3aXRoIGRza1VzZWRMb3cgY29tcG9zZXMgNjQtYml0IG51bWJlci4iCisgICAgOjo9IHsgZHNrRW50cnkgMTYgfQorCiBkc2tFcnJvckZsYWcgT0JKRUNULVRZUEUKICAgICBTWU5UQVgJVUNERXJyb3JGbGFnCiAgICAgTUFYLUFDQ0VTUwlyZWFkLW9ubHkKZGlmZiAtLWdpdCBhL21pYnMvaWFuYWxpc3QgYi9taWJzL2lhbmFsaXN0CmluZGV4IGMzZjA1NzUuLmYyMzQ1ZjEgMTAwNjQ0Ci0tLSBhL21pYnMvaWFuYWxpc3QKKysrIGIvbWlicy9pYW5hbGlzdApAQCAtMSw0ICsxLDQgQEAKLSMgdXBkYXRlZCAyMDA1LTAxLTA2CisjIHVwZGF0ZWQgMjAwNy0wNS0wMwogaWFuYWlmdHlwZS1taWIJCQlJQU5BaWZUeXBlLU1JQgogaWFuYWxhbmd1YWdlLW1pYgkJSUFOQS1MQU5HVUFHRS1NSUIKIGlhbmFhZGRyZXNzZmFtaWx5bnVtYmVycy1taWIJSUFOQS1BRERSRVNTLUZBTUlMWS1OVU1CRVJTLU1JQgpAQCAtOSwzICs5LDUgQEAKIGlhbmFwcmludGVyLW1pYgkJCUlBTkEtUFJJTlRFUi1NSUIKIGlhbmFmaW5pc2hlci1taWIJCUlBTkEtRklOSVNIRVItTUlCCiBpYW5haXR1YWxhcm10Yy1taWIJCUlBTkEtSVRVLUFMQVJNLVRDLU1JQgoraWFuYW1hdS1taWIJCQlJQU5BLU1BVS1NSUIKK2lhbmFnbXBsc3RjLW1pYgkJCUlBTkEtR01QTFMtVEMtTUlCCmRpZmYgLS1naXQgYS9taWJzL3JmY2xpc3QgYi9taWJzL3JmY2xpc3QKaW5kZXggNGQwMzQzNC4uYTQ2NTljMiAxMDA2NDQKLS0tIGEvbWlicy9yZmNsaXN0CisrKyBiL21pYnMvcmZjbGlzdApAQCAtMSw0ICsxLDQgQEAKLSMgdXBkYXRlZCAyMDA1LTAzLTE0CisjIHVwZGF0ZWQgMjAwOS0wNy0yNwogMTE1NQlSRkMxMTU1LVNNSQogMTIxMwlSRkMxMjEzLU1JQgogMTIyNwlTTVVYLU1JQgpAQCAtMTksNyArMTksNiBAQAogMTYxMQlETlMtU0VSVkVSLU1JQgogMTYxMglETlMtUkVTT0xWRVItTUlCCiAxNjI4CVVQUy1NSUIKLTE2NTcJQkdQNC1NSUIKIDE2NTgJQ0hBUkFDVEVSLU1JQgogMTY1OQlSUy0yMzItTUlCCiAxNjYwCVBBUkFMTEVMLU1JQgpAQCAtMzYsNyArMzUsNiBAQAogMTg1MAlPU1BGLU1JQjpPU1BGLVRSQVAtTUlCCiAyMDA2CU1JUC1NSUIKIDIwMjAJRE9UMTItSUYtTUlCCi0yMDIxCVJNT04yLU1JQgogMjAyNAlETFNXLU1JQgogMjA1MQlBUFBDLU1JQgogMjEwOAlTTk1QLVJFUEVBVEVSLU1JQgpAQCAtNzcsMTUgKzc1LDkgQEAKIDI1OTQJV1dXLU1JQgogMjYwNQlESVJFQ1RPUlktU0VSVkVSLU1JQgogMjYxMwlTTU9OLU1JQgotMjYxOAlSQURJVVMtQVVUSC1DTElFTlQtTUlCCi0yNjE5CVJBRElVUy1BVVRILVNFUlZFUi1NSUIKLTI2MjAJUkFESVVTLUFDQy1DTElFTlQtTUlCCi0yNjIxCVJBRElVUy1BQ0MtU0VSVkVSLU1JQgogMjY2MglBRFNMLVRDLU1JQjpBRFNMLUxJTkUtTUlCCiAyNjY2CUVUSEVSLUNISVBTRVQtTUlCCi0yNjY5CURPQ1MtQ0FCTEUtREVWSUNFLU1JQgogMjY3MAlET0NTLUlGLU1JQgotMjY3NAlQLUJSSURHRS1NSUI6US1CUklER0UtTUlCCiAyNjc3CU5IUlAtTUlCCiAyNzA3CUpvYi1Nb25pdG9yaW5nLU1JQgogMjcyMAlGTE9XLU1FVEVSLU1JQgpAQCAtMTAyLDcgKzk0LDYgQEAKIDI4NjMJSUYtTUlCCiAyODY0CUlGLUlOVkVSVEVELVNUQUNLLU1JQgogMjkyMglQVE9QTy1NSUIKLTI5MjUJRElTTUFOLVBJTkctTUlCOkRJU01BTi1UUkFDRVJPVVRFLU1JQjpESVNNQU4tTlNMT09LVVAtTUlCCiAyOTMyCUlQTVJPVVRFLVNURC1NSUIKIDI5MzMJSUdNUC1TVEQtTUlCCiAyOTM0CVBJTS1NSUIKQEAgLTE0Nyw3ICsxMzgsNiBAQAogMzYwNglBVE0yLU1JQgogMzYyMQlQT1dFUi1FVEhFUk5FVC1NSUIKIDM2MzUJRXRoZXJMaWtlLU1JQgotMzYzNglNQVUtTUlCCiAzNjM3CUVUSEVSLVdJUwogMzcwNQlIQy1QZXJmSGlzdC1UQy1NSUIKIDM3MjgJVkRTTC1MSU5FLU1JQgpAQCAtMTg0LDUgKzE3NCw3MiBAQAogNDIyMAlURS1MSU5LLVNURC1NSUIKIDQyNjUJVlBOLVRDLVNURC1NSUIKIDQyNjgJRU5USVRZLVNUQVRFLVRDLU1JQjpFTlRJVFktU1RBVEUtTUlCCis0MjczCUJHUDQtTUlCCiA0MjkyCUlQLUZPUldBUkQtTUlCCiA0MjkzCUlQLU1JQgorNDI5NQlNT0JJTEVJUFY2LU1JQgorNDMxOAlSU1RQLU1JQgorNDMxOQlIRFNMMi1TSERTTC1MSU5FLU1JQgorNDMyMwlET0NTLUlFVEYtUU9TLU1JQgorNDM2MwlQLUJSSURHRS1NSUI6US1CUklER0UtTUlCCis0MzY4CU1QTFMtTEMtQVRNLVNURC1NSUI6TVBMUy1MQy1GUi1TVEQtTUlCCis0MzY5CUlGQ1AtTUdNVC1NSUIKKzQzODIJTVBMUy1MM1ZQTi1TVEQtTUlCCis0NDA0CUZDSVAtTUdNVC1NSUIKKzQ0MzgJVDExLUZDLU5BTUUtU0VSVkVSLU1JQgorNDQzOQlUMTEtVEMtTUlCOlQxMS1GQy1GQUJSSUMtQUREUi1NR1ItTUlCCis0NDQ0CUlTSVMtTUlCCis0NDU1CVNDU0ktTUlCCis0NDk4CUFHR1JFR0FURS1NSUI6VElNRS1BR0dSRUdBVEUtTUlCCis0NTAyCVJNT04yLU1JQgorNDU0NAlJU0NTSS1NSUIKKzQ1NDUJSVBTLUFVVEgtTUlCCis0NTYwCURJU01BTi1QSU5HLU1JQjpESVNNQU4tVFJBQ0VST1VURS1NSUI6RElTTUFOLU5TTE9PS1VQLU1JQgorNDYyNAlNU0RQLU1JQgorNDYyNQlUMTEtRkMtUk9VVEUtTUlCCis0NjI2CVQxMS1GQy1GU1BGLU1JQgorNDYzMQlMTVAtTUlCCis0NjM5CURPQ1MtQ0FCTEUtREVWSUNFLU1JQgorNDY2OAlSQURJVVMtQVVUSC1DTElFTlQtTUlCCis0NjY5CVJBRElVUy1BVVRILVNFUlZFUi1NSUIKKzQ2NzAJUkFESVVTLUFDQy1DTElFTlQtTUlCCis0NjcxCVJBRElVUy1BQ0MtU0VSVkVSLU1JQgorNDY3MglSQURJVVMtRFlOQVVUSC1DTElFTlQtTUlCCis0NjczCVJBRElVUy1EWU5BVVRILVNFUlZFUi1NSUIKKzQ2ODIJUEtUQy1JRVRGLU1UQS1NSUIKKzQ3MDYJQURTTDItTElORS1UQy1NSUI6QURTTDItTElORS1NSUIKKzQ3MTEJUkFRTU9OLU1JQgorNDc0NwlUMTEtRkMtVklSVFVBTC1GQUJSSUMtTUlCCis0NzgwCVNJUC1UQy1NSUI6U0lQLUNPTU1PTi1NSUI6U0lQLVVBLU1JQjpTSVAtU0VSVkVSLU1JQgorNDc4OQlTTk1QLUlFRUU4MDItVE0tTUlCCis0ODAxCUdNUExTLVRDLVNURC1NSUIKKzQ4MDIJR01QTFMtVEUtU1RELU1JQgorNDgwMwlHTVBMUy1MU1ItU1RELU1JQjpHTVBMUy1MQUJFTC1TVEQtTUlCCis0ODM2CU1BVS1NSUIKKzQ4MzcJRE9UMy1FUE9OLU1JQgorNDg3OAlET1QzLU9BTS1NSUIKKzQ4OTgJVENQLUVTVEFUUy1NSUIKKzQ5MzUJVDExLUZDLUZBQlJJQy1DT05GSUctU0VSVkVSLU1JQgorNDkzNglUMTEtRkMtRkFCUklDLUxPQ0stTUlCOlQxMS1GQy1aT05FLVNFUlZFUi1NSUIKKzQ5MzkJSVNOUy1NSUIKKzQ5ODMJVDExLUZDLVJTQ04tTUlCCis1MDE3CVVSSS1UQy1NSUIKKzUwNjAJUElNLVNURC1NSUIKKzUwNjYJSUYtQ0FQLVNUQUNLLU1JQjpFRk0tQ1UtTUlCCis1MDk3CVVEUExJVEUtTUlCCis1MDk4CVBLVEMtSUVURi1TSUctTUlCCis1MTMxCUxBTkdUQUctVEMtTUlCCis1MTMyCUlQTUNBU1QtTUlCCis1MTkwCU1JRENPTS1NSUIKKzUyNDAJUElNLUJTUi1NSUIKKzUzMjQJVDExLUZDLVNQLVRDLU1JQjpUMTEtRkMtU1AtQVVUSEVOVElDQVRJT04tTUlCOlQxMS1GQy1TUC1aT05JTkctTUlCOlQxMS1GQy1TUC1QT0xJQ1ktTUlCOlQxMS1GQy1TUC1TQS1NSUIKKzU0MjcJU1lTTE9HLVRDLU1JQgorNTQyOAlQS1RDLUlFVEYtRVZFTlQtTUlCCis1NDg4CU5FTU8tTUlCCis1NTE5CU1HTUQtU1RELU1JQgorNTUyNQlSU0VSUE9PTC1NSUIKKzU1NDIJUFctVEMtU1RELU1JQgorNTYwMQlQVy1TVEQtTUlCOklBTkEtUFdFMy1NSUIKKzU2MDIJUFctTVBMUy1TVEQtTUlCCis1NjAzCVBXLUVORVQtU1RELU1JQgorNTYwNQlQVy1BVE0tTUlCCmRpZmYgLS1naXQgYS9taWJzL3NtaXN0cmlwIGIvbWlicy9zbWlzdHJpcAppbmRleCBmNTg5OTVjLi5iNWZjOGYyIDEwMDc1NQotLS0gYS9taWJzL3NtaXN0cmlwCisrKyBiL21pYnMvc21pc3RyaXAKQEAgLTY2LDcgKzY2LDcgQEAKICAgICB9CiAKICAgICAjIHN0YXJ0IG9mIG1vZHVsZQotICAgIC9eWyBcdF0qW0EtWmEtejAtOS1dKiAqREVGSU5JVElPTlMgKjo6PSAqQkVHSU4vIHsKKyAgICAvXlsgXHRdKltBLVphLXowLTktXSogKkRFRklOSVRJT05TKCArSU1QTElDSVQgK1RBR1MpPyAqOjo9ICpCRUdJTi8gewogCW1vZHVsZSA9ICQxCiAJY29sbGVjdCA9IDEKIAltYWNybyA9IDAKZGlmZiAtLWdpdCBhL25ldC1zbm1wLWNvbmZpZy5pbiBiL25ldC1zbm1wLWNvbmZpZy5pbgppbmRleCAzMzBmNjYwLi42NTI4MzJkIDEwMDY0NAotLS0gYS9uZXQtc25tcC1jb25maWcuaW4KKysrIGIvbmV0LXNubXAtY29uZmlnLmluCkBAIC0yNywxMCArMjcsMjUgQEAKICAgICAgIGZpCiB9CiAKKyMgdXNhZ2U6IGluZGV4IG4gYXJndW1lbnRzCisjIGVmZmVjdDogcmV0dXJucyB0aGUgKG4rMSl0aCBhcmd1bWVudAoraW5kZXgoKQoreworICAgIGV2YWwgZWNobyBcJGBleHByICQxICsgMWAKK30KKworIyB1c2FnZTogY291bnQgYXJndW1lbnRzCisjIGVmZmVjdDogcmV0dXJucyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cworY291bnQoKQoreworICAgIGVjaG8gJCMKK30KKwogcHJlZml4PUBwcmVmaXhACiBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACiBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAogbGliZGlyPUBsaWJkaXJACitkYXRhcm9vdGRpcj1AZGF0YXJvb3RkaXJACiBOU0NfTERGTEFHUz0iQExERkxBR1NAIgogCiBOU0NfTElCUz0iQExJQlNAIgpAQCAtMTcwLDcgKzE4NSw3IEBACiAgICAgICBlY2hvICROU0NfTERGTEFHUyAkTlNDX0xJQkRJUiAkTlNDX1NOTVBMSUJTICROU0NfTElCUwogICAgICAgOzsKICAgICAtLW5ldHNubXAtbGlicykKLSAgICAgIGVjaG8gJE5TQ19MSUJESVIgLWxuZXRzbm1wCisgICAgICBlY2hvICROU0NfTElCRElSICROU0NfQkFTRV9TTk1QX0xJQlMKICAgICAgIDs7CiAgICAgLS1leHRlcm5hbC1saWJzKQogICAgICAgZWNobyAkTlNDX0xERkxBR1MgJE5TQ19MTkVUU05NUExJQlMgJE5TQ19MSUJTCkBAIC0yMDcsMTI2ICsyMjIsMTAgQEAKICAgICAgIDs7CiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIC0tY3JlYXRlLXNubXB2My11c2VyKQotICAgICAgaWYgQFBTQ01EQCB8IGVncmVwICcgc25tcGQgKiQnID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCi0gICAgICAgICBlY2hvICJBcHBhcmVudGx5IGF0IGxlYXN0IG9uZSBzbm1wZCBkZW1vbiBpcyBhbHJlYWR5IHJ1bm5pbmcuIgotICAgICAgICAgZWNobyAiWW91IG11c3Qgc3RvcCB0aGVtIGluIG9yZGVyIHRvIHVzZSB0aGlzIGNvbW1hbmQuIgotICAgICAgICAgZXhpdCAxCi0gICAgICBmaQotCi0gICAgICBBYWxnb3JpdGhtPSJNRDUiCi0gICAgICBYYWxnb3JpdGhtPSJERVMiCi0gICAgICB0b2tlbj1yd3VzZXIKKyAgICAgIGRvbmU9MQogICAgICAgc2hpZnQKLSAgICAgIHNoaWZ0ZWQ9MQotICAgICAgd2hpbGUgdGVzdCAieCRkb25lIiA9ICJ4IiAtYSAieCQxIiAhPSAieCIgOyBkbwotCWNhc2UgJDEgaW4KLQkgICAgLUF8LWEpCi0JCXNoaWZ0Ci0JCWlmIHRlc3QgIngkMSIgPSAieCIgOyB0aGVuCi0JCSAgICBlY2hvICJZb3UgbXVzdCBzcGVjaWZ5IGFuIGF1dGhlbnRpY2F0aW9uIGFsZ29yaXRobSBvciBwYXNzIHBocmFzZSIKLQkJICAgIGV4aXQgMQotCQlmaQotCSAgICAgICAgY2FzZSAkMSBpbgotICAgICAgICAgICAgICAgIE1ENXxTSEEpCi0JCSAgICBBYWxnb3JpdGhtPSQxCi0JCSAgICBzaGlmdAotCQkgICAgOzsKLSAgICAgICAgICAgICAgICBtZDV8c2hhKQotCQkgICAgQWFsZ29yaXRobT1gZWNobyAkMSB8IHRyIGEteiBBLVpgCi0JCSAgICBzaGlmdAotCQkgICAgOzsKLSAgICAgICAgICAgICAgICAqKQotCQkgICAgYXBhc3NwaHJhc2U9JDEKLQkJICAgIHNoaWZ0Ci0JCSAgICA7OwotCQllc2FjCi0JCTs7Ci0JICAgIC1YfC14KQotCQlzaGlmdAotCQlpZiB0ZXN0ICJ4JDEiID0gIngiIDsgdGhlbgotCQkgICAgZWNobyAiWW91IG11c3Qgc3BlY2lmeSBhbiBlbmNyeXB0aW9uIGFsZ29yaXRobSBvciBwYXNzIHBocmFzZSIKLQkJICAgIGV4aXQgMQotCQlmaQotCSAgICAgICAgY2FzZSAkMSBpbgotICAgICAgICAgICAgICAgIERFU3xBRVN8QUVTMTI4KQotCQkgICAgWGFsZ29yaXRobT0kMQotCQkgICAgc2hpZnQKLQkJICAgIDs7Ci0gICAgICAgICAgICAgICAgZGVzfGFlc3xhZXMxMjgpCi0JCSAgICBYYWxnb3JpdGhtPWBlY2hvICQxIHwgdHIgYS16IEEtWmAKLQkJICAgIHNoaWZ0Ci0JCSAgICA7OwotICAgICAgICAgICAgICAgICopCi0JCSAgICB4cGFzc3BocmFzZT0kMQotCQkgICAgc2hpZnQKLQkJICAgIDs7Ci0JCWVzYWMKLQkJOzsKLQkgICAgLXJvKQotCSAgICAgICAgdG9rZW49InJvdXNlciIKLQkJc2hpZnQKLQkJOzsKLSAJICAgIC0qKQotCQllY2hvICJ1bmtub3duIHN1Ym9wdGlvbiB0byAtLWNyZWF0ZS1zbm1wdjMtdXNlcjogJDEiCi0JCWV4aXQgMQotCQk7OwotCSAgICAqKQotCSAgICAgICAgZG9uZT0xCi0JCTs7Ci0JZXNhYwotICAgICAgZG9uZQotICAgICAgCi0gICAgICBpZiB0ZXN0ICJ4JDEiID0gIngiIDsgdGhlbgotICAgICAgICAgIHByb21wdD15ZXMKLQkgIGVjaG8gIkVudGVyIGEgU05NUHYzIHVzZXIgbmFtZSB0byBjcmVhdGU6ICIKLQkgIHJlYWQgdXNlcgotICAgICAgZWxzZQotICAgICAgICAgIHVzZXI9JDEKLSAgICAgICAgICBzaGlmdAotICAgICAgZmkKLSAgICAgIGlmIHRlc3QgIngkdXNlciIgPSAieCIgOyB0aGVuCi0gICAgICAgICAgZWNobyAiWW91IG11c3Qgc3BlY2lmeSBhIHVzZXIgbmFtZSIKLQkgIGV4aXQgMQotICAgICAgZmkKLQotICAgICAgaWYgdGVzdCAieCRhcGFzc3BocmFzZSIgPSAieCIgOyB0aGVuCi0gICAgICAgICAgcHJvbXB0PXllcwotCSAgZWNobyAiRW50ZXIgYXV0aGVudGljYXRpb24gcGFzcy1waHJhc2U6ICIKLQkgIHJlYWQgYXBhc3NwaHJhc2UKLSAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICJ4JGFwYXNzcGhyYXNlIiA9ICJ4IiA7IHRoZW4KLSAgICAgICAgICBlY2hvICJZb3UgbXVzdCBzcGVjaWZ5IGFuIGF1dGhlbnRpY2F0aW9uIHBhc3MtcGhyYXNlIgotCSAgZXhpdCAxCi0gICAgICBmaQotCi0gICAgICBpZiB0ZXN0ICJ4JHByb21wdCIgPSAieHllcyIgLWEgIngkeHBhc3NwaHJhc2UiID0gIngiIDsgdGhlbgotCSAgZWNobyAiRW50ZXIgZW5jcnlwdGlvbiBwYXNzLXBocmFzZTogIgotCSAgZWNobyAiICBbcHJlc3MgcmV0dXJuIHRvIHJldXNlIHRoZSBhdXRoZW50aWNhdGlvbiBwYXNzLXBocmFzZV0iCi0JICByZWFkIHhwYXNzcGhyYXNlCi0gICAgICBmaQotCi0gICAgICBvdXRkaXI9IkBQRVJTSVNURU5UX0RJUkVDVE9SWUAiCi0gICAgICBvdXRmaWxlPSIkb3V0ZGlyL3NubXBkLmNvbmYiCi0gICAgICBsaW5lPSJjcmVhdGVVc2VyICR1c2VyICRBYWxnb3JpdGhtIFwiJGFwYXNzcGhyYXNlXCIgJFhhbGdvcml0aG0gJHhwYXNzcGhyYXNlIgotICAgICAgZWNobyAiYWRkaW5nIHRoZSBmb2xsb3dpbmcgbGluZSB0byAkb3V0ZmlsZToiCi0gICAgICBlY2hvICIgICIgJGxpbmUKLSAgICAgICMgaW4gY2FzZSBpdCBoYXNuJ3QgZXZlciBiZWVuIHN0YXJ0ZWQgeWV0LCBzdGFydCBpdC4KLSAgICAgIGlmIHRlc3QgISAtZCAkb3V0ZGlyIDsgdGhlbgotICAgICAgICAgIG1rZGlyICRvdXRkaXIKLSAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICEgLWQgJG91dGZpbGUgOyB0aGVuCi0gICAgICAgICAgdG91Y2ggJG91dGZpbGUKLSAgICAgIGZpCi0gICAgICBlY2hvICRsaW5lID4+ICRvdXRmaWxlCi0KLSAgICAgIG91dGZpbGU9IkBkYXRhZGlyQC9zbm1wL3NubXBkLmNvbmYiCi0gICAgICBsaW5lPSIkdG9rZW4gJHVzZXIiCi0gICAgICBlY2hvICJhZGRpbmcgdGhlIGZvbGxvd2luZyBsaW5lIHRvICRvdXRmaWxlOiIKLSAgICAgIGVjaG8gIiAgIiAkbGluZQotICAgICAgaWYgdGVzdCAhIC1kICRvdXRmaWxlIDsgdGhlbgotICAgICAgICAgIHRvdWNoICRvdXRmaWxlCi0gICAgICBmaQotICAgICAgZWNobyAkbGluZSA+PiAkb3V0ZmlsZQorICAgICAgbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIgJCoKKyAgICAgIGV4aXQgJD8KICAgICAgIDs7CiAKICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0zNzgsNyArMjc3LDcgQEAKIAllY2hvICJBY2suICBDYW4ndCBjcmVhdGUgJHRtcGZpbGU6IGFscmVhZHkgZXhpc3RzIgogCWV4aXQgMQogICAgICAgZmkKLSAgICAgIGVjaG8gImdlbmVyYXRpbmcgdGhlIHRtcG9yYXJ5IGNvZGUgZmlsZTogJHRtcGZpbGUiCisgICAgICBlY2hvICJnZW5lcmF0aW5nIHRoZSB0ZW1wb3JhcnkgY29kZSBmaWxlOiAkdG1wZmlsZSIKICAgICAgIHJtIC1mICR0bXBmaWxlCiAgICAgICBjYXQgPiAkdG1wZmlsZSA8PEVPRgogLyogZ2VuZXJhdGVkIGZyb20gbmV0LXNubXAtY29uZmlnICovCkBAIC00MjUsNiArMzI0LDcgQEAKIAogICAgICAgY2F0ID4+ICR0bXBmaWxlIDw8RU9GCiBjb25zdCBjaGFyICphcHBfbmFtZSA9ICIkb3V0bmFtZSI7CitzdGF0aWMgaW50IHJlY29uZmlnID0gMDsKIAogZXh0ZXJuIGludCBuZXRzbm1wX3J1bm5pbmc7CiAKQEAgLTQzOSw2ICszMzksMTUgQEAKICAgICBuZXRzbm1wX3J1bm5pbmcgPSAwOwogfQogCisjaWZkZWYgU0lHSFVQCitSRVRTSUdUWVBFCitodXBfaGFuZGxlcihpbnQgc2lnKQoreworICAgIHJlY29uZmlnID0gMTsKKyAgICBzaWduYWwoU0lHSFVQLCBodXBfaGFuZGxlcik7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQKIHVzYWdlKGNvbnN0IGNoYXIgKnByb2cpCiB7CkBAIC02MTUsMTAgKzUyNCw5IEBACiAgICAgICBpZiBncmVwICJpbml0XyRuYW1lIiAkaSA7IHRoZW4KICAgICAgICAgZWNobyAiICBpbml0XyR7bmFtZX0oKTsiID4+ICR0bXBmaWxlCiAgICAgICBmaQotICAgICAgc2hpZnQKICAgICBkb25lCiAKLSAgICAjIGZpbmlzaCBmaWxlCisgICAgIyBoYW5kbGUgdGhlIG1haW4gbG9vcAogICAgIGNhdCA+PiAkdG1wZmlsZSA8PEVPRgogCiAgIC8qICRvdXRuYW1lIHdpbGwgYmUgdXNlZCB0byByZWFkICRvdXRuYW1lLmNvbmYgZmlsZXMuICovCkBAIC02MzgsMTggKzU0Niw0NyBAQAogI2lmZGVmIFNJR0lOVAogICBzaWduYWwoU0lHSU5ULCBzdG9wX3NlcnZlcik7CiAjZW5kaWYKKyNpZmRlZiBTSUdIVVAKKyAgc2lnbmFsKFNJR0hVUCwgaHVwX2hhbmRsZXIpOworI2VuZGlmCiAKICAgLyogbWFpbiBsb29wIGhlcmUuLi4gKi8KICAgd2hpbGUobmV0c25tcF9ydW5uaW5nKSB7CisgICAgaWYgKHJlY29uZmlnKSB7CisgICAgICBmcmVlX2NvbmZpZygpOworICAgICAgcmVhZF9jb25maWdzKCk7CisgICAgICByZWNvbmZpZyA9IDA7CisgICAgfQogICAgIGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzKDEpOwogICB9CiAKICAgLyogYXQgc2h1dGRvd24gdGltZSAqLwogICBzbm1wX3NodXRkb3duKGFwcF9uYW1lKTsKKworICAvKiBkZWluaXRpYWxpemUgeW91ciBtaWIgY29kZSBoZXJlICovCitFT0YKKworICAgICMgYWRkIHNodXRkb3duIHJvdXRpbmVzCisKKyAgICBpPWBjb3VudCAkY2ZpbGVzYAorICAgIHdoaWxlIFsgJGkgLWd0IDAgXSA7IGRvCisgICAgICBmdWxsbmFtZT1gaW5kZXggJGkgJGNmaWxlc2AKKyAgICAgIG5hbWU9YGJhc2VuYW1lICRmdWxsbmFtZSB8IHNlZCAncy9cLltjb10kLy8nYAorICAgICAgZWNobyBjaGVja2luZyBmb3Igc2h1dGRvd25fJG5hbWUgaW4gJGZ1bGxuYW1lCisgICAgICBpZiBncmVwICJzaHV0ZG93bl8kbmFtZSIgJGZ1bGxuYW1lIDsgdGhlbgorICAgICAgICBlY2hvICIgIHNodXRkb3duXyR7bmFtZX0oKTsiID4+ICR0bXBmaWxlCisgICAgICBmaQorICAgICAgaT1gZXhwciAkaSAtIDFgCisgICAgZG9uZQorCisgICAgIyBmaW5pc2ggZmlsZQorICAgIGNhdCA+PiAkdG1wZmlsZSA8PEVPRgorCisgIC8qIHNodXRkb3duIHRoZSBhZ2VudCBsaWJyYXJ5ICovCisgIHNodXRkb3duX2FnZW50KCk7CiAgIFNPQ0tfQ0xFQU5VUDsKICAgZXhpdCgwKTsKIH0KLQogRU9GCiAgICAgICBpZiB0ZXN0ICIkPyIgIT0gMCAtbyAhIC1mICIkdG1wZmlsZSIgOyB0aGVuCiAgICAgICAgIGVjaG8gIkFjay4gIENhbid0IGNyZWF0ZSAkdG1wZmlsZS4iCkBAIC02NTksMTAgKzU5NiwxMCBAQAogICAgICAgZWNobyAicnVubmluZzogJGNtZCIKICAgICAgIGAkY21kYAogICAgICAgaWYgdGVzdCAieCRub3JtIiAhPSAieDEiIDsgdGhlbgotICAgICAgICBlY2hvICJyZW1vdmluZyB0aGUgdG1wb3JhcnkgY29kZSBmaWxlOiAkdG1wZmlsZSIKKyAgICAgICAgZWNobyAicmVtb3ZpbmcgdGhlIHRlbXBvcmFyeSBjb2RlIGZpbGU6ICR0bXBmaWxlIgogICAgICAgICBybSAtZiAkdG1wZmlsZQogICAgICAgZWxzZQotICAgICAgICBlY2hvICJsZWF2aW5nIHRoZSB0bXBvcmFyeSBjb2RlIGZpbGU6ICR0bXBmaWxlIgorICAgICAgICBlY2hvICJsZWF2aW5nIHRoZSB0ZW1wb3JhcnkgY29kZSBmaWxlOiAkdG1wZmlsZSIKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0IC1mICRvdXRuYW1lIDsgdGhlbgogICAgICAgICBlY2hvICJzdWJhZ2VudCBwcm9ncmFtICRvdXRuYW1lIGNyZWF0ZWQiCkBAIC02OTMsOCArNjMwLDkgQEAKICAgZWNobyAiIgogICBlY2hvICIgIFNOTVAgU2V0dXAgY29tbWFuZHM6IgogICBlY2hvICIiCi0gIGVjaG8gIiAgICAtLWNyZWF0ZS1zbm1wdjMtdXNlciBbLXJvXSBbLUEgYXV0aHBhc3NdIFstWCBwcml2cGFzc10iCi0gIGVjaG8gIiAgICAgICAgICAgICAgICAgICAgICAgICBbLWEgTUQ1fFNIQV0gWy14IERFU3xBRVNdIFt1c2VybmFtZV0iCisgIGVjaG8gIiAgICAtLWNyZWF0ZS1zbm1wdjMtdXNlciBjcmVhdGVzIGEgU05NUHYzIHVzZXIgaW4gTmV0LVNOTVAgY29uZmlnIGZpbGUuIgorICBlY2hvICIgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIC0taGVscCBmb3IgbGlzdCBvZiIKKyAgZWNobyAiICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkIG9wdGlvbnMuIgogICBlY2hvICIiCiAgIGVjaG8gIiAgVGhlc2Ugb3B0aW9ucyBwcm9kdWNlIHRoZSB2YXJpb3VzIGNvbXBpbGF0aW9uIGZsYWdzIG5lZWRlZCB3aGVuIgogICBlY2hvICIgIGJ1aWxkaW5nIGV4dGVybmFsIFNOTVAgYXBwbGljYXRpb25zOiIKZGlmZiAtLWdpdCBhL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLmluIGIvbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQzNTAwOQotLS0gL2Rldi9udWxsCisrKyBiL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLmluCkBAIC0wLDAgKzEsMTY4IEBACisjIS9iaW4vc2gKKyMKKyMgJElkJAorIworIyB0aGlzIHNoZWxsIHNjcmlwdCBpcyBkZXNpZ25lZCB0byBhZGQgbmV3IFNOTVB2MyB1c2VycworIyB0byBOZXQtU05NUCBjb25maWcgZmlsZS4KKworcHJlZml4PUBwcmVmaXhACitleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACitpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorbGliZGlyPUBsaWJkaXJACitkYXRhcm9vdGRpcj1AZGF0YXJvb3RkaXJACitOU0NfTERGTEFHUz0iQExERkxBR1NAIgorTlNDX0lOQ0xVREVESVI9JHtpbmNsdWRlZGlyfQorTlNDX0xJQkRJUj0tTCR7bGliZGlyfQorTlNDX0xJQlM9IkBMSUJTQCIKK05TQ19BR0VOVExJQlM9IkBBR0VOVExJQlNAIEBQRVJMTERPUFRTX0ZPUl9BUFBTQCIKK05TQ19QUkVGSVg9JHByZWZpeAorTlNDX0VYRUNfUFJFRklYPSRleGVjX3ByZWZpeAorTlNDX1NSQ0RJUj1Ac3JjZGlyQAorTlNDX0lOQ0RJUj0ke05TQ19QUkVGSVh9L2luY2x1ZGUKK05TQ19CQVNFX1NVQkFHRU5UX0xJQlM9Ii1sbmV0c25tcGFnZW50IC1sbmV0c25tcGhlbHBlcnMgLWxuZXRzbm1wIgorTlNDX0JBU0VfQUdFTlRfTElCUz0iLWxuZXRzbm1wYWdlbnQgLWxuZXRzbm1waGVscGVycyAtbG5ldHNubXBtaWJzIC1sbmV0c25tcCIKK05TQ19TUkNfTElCRElSUz0iYWdlbnQvLmxpYnMgc25tcGxpYi8ubGlicyBhZ2VudC9oZWxwZXJzLy5saWJzIgorTlNDX1NSQ19MSUJERVBTPSJhZ2VudC8ubGlicy9saWJuZXRzbm1wbWlicy5hIGFnZW50Ly5saWJzL2xpYm5ldHNubXBhZ2VudC5hIGFnZW50L2hlbHBlcnMvLmxpYnMvbGlibmV0c25tcGhlbHBlcnMuYSBzbm1wbGliLy5saWJzL2xpYm5ldHNubXAuYSIKKworaWYgdGVzdCAieCROU0NfU1JDRElSIiA9ICJ4LiIgOyB0aGVuCisgICBOU0NfU1JDRElSPSJORVQtU05NUC1TT1VSQ0UtRElSIgorZmkKKworaWYgQFBTQ01EQCB8IGVncmVwICcgc25tcGQgKiQnID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCisgICAgZWNobyAiQXBwYXJlbnRseSBhdCBsZWFzdCBvbmUgc25tcGQgZGVtb24gaXMgYWxyZWFkeSBydW5uaW5nLiIKKyAgICBlY2hvICJZb3UgbXVzdCBzdG9wIHRoZW0gaW4gb3JkZXIgdG8gdXNlIHRoaXMgY29tbWFuZC4iCisgICAgZXhpdCAxCitmaQorCitBYWxnb3JpdGhtPSJNRDUiCitYYWxnb3JpdGhtPSJERVMiCit0b2tlbj1yd3VzZXIKKword2hpbGUgdGVzdCAieCRkb25lIiA9ICJ4IiAtYSAieCQxIiAhPSAieCIgLWEgIngkdXNhZ2UiICE9ICJ4eWVzIjsgZG8KK2Nhc2UgIiQxIiBpbgorICAgIC0qPSopIG9wdGFyZz1gZWNobyAiJDEiIHwgc2VkICdzL1stX2EtekEtWjAtOV0qPS8vJ2AgOzsKKyAgICAqKSBvcHRhcmc9IDs7Citlc2FjCisKK3Vuc2V0IHNoaWZ0ZWQKK2Nhc2UgJDEgaW4KKyAgICAtLXZlcnNpb258LS12ZXIqKQorICAgICAgZWNobyBAVkVSU0lPTkAKKyAgICAgIDs7CisgICAgLS1oZWxwKQorICAgICAgdXNhZ2U9InllcyIKKyAgICAgIDs7CisKKyAgICAtQXwtYSkKKwlzaGlmdAorCWlmIHRlc3QgIngkMSIgPSAieCIgOyB0aGVuCisJICAgIGVjaG8gIllvdSBtdXN0IHNwZWNpZnkgYW4gYXV0aGVudGljYXRpb24gYWxnb3JpdGhtIG9yIHBhc3MgcGhyYXNlIgorCSAgICBleGl0IDEKKwlmaQorICAgICAgICBjYXNlICQxIGluCisgICAgICAgICAgICBNRDV8U0hBKQorCSAgICBBYWxnb3JpdGhtPSQxCisJICAgIHNoaWZ0CisJICAgIDs7CisgICAgICAgICAgICBtZDV8c2hhKQorCSAgICBBYWxnb3JpdGhtPWBlY2hvICQxIHwgdHIgYS16IEEtWmAKKwkgICAgc2hpZnQKKwkgICAgOzsKKyAgICAgICAgICAgICopCisJICAgIGFwYXNzcGhyYXNlPSQxCisJICAgIHNoaWZ0CisJICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKyAgICAtWHwteCkKKwlzaGlmdAorCWlmIHRlc3QgIngkMSIgPSAieCIgOyB0aGVuCisJICAgIGVjaG8gIllvdSBtdXN0IHNwZWNpZnkgYW4gZW5jcnlwdGlvbiBhbGdvcml0aG0gb3IgcGFzcyBwaHJhc2UiCisJICAgIGV4aXQgMQorCWZpCisgICAgICAgIGNhc2UgJDEgaW4KKyAgICAgICAgICAgIERFU3xBRVN8QUVTMTI4KQorCSAgICBYYWxnb3JpdGhtPSQxCisJICAgIHNoaWZ0CisJICAgIDs7CisgICAgICAgICAgICBkZXN8YWVzfGFlczEyOCkKKwkgICAgWGFsZ29yaXRobT1gZWNobyAkMSB8IHRyIGEteiBBLVpgCisJICAgIHNoaWZ0CisJICAgIDs7CisgICAgICAgICAgICAqKQorCSAgICB4cGFzc3BocmFzZT0kMQorCSAgICBzaGlmdAorCSAgICA7OworCWVzYWMKKwk7OworICAgIC1ybykKKyAgICAgICAgdG9rZW49InJvdXNlciIKKwlzaGlmdAorCTs7CisgICAgLSopCisJZWNobyAidW5rbm93biBzdWJvcHRpb24gdG8gJDA6ICQxIgorCXVzYWdlPXllcworCWRvbmU9MQorCTs7CisgICAgKikKKyAgICAgICAgZG9uZT0xCisgICAgICAgIDs7CisgICAgZXNhYworZG9uZQorCitpZiB0ZXN0ICJ4JHVzYWdlIiA9ICJ4eWVzIjsgdGhlbgorICAgIGVjaG8gIiIKKyAgICBlY2hvICJVc2FnZToiCisgICAgZWNobyAiICBuZXQtc25tcC1jcmVhdGUtdjMtdXNlciBbLXJvXSBbLUEgYXV0aHBhc3NdIFstWCBwcml2cGFzc10iCisgICAgZWNobyAiICAgICAgICAgICAgICAgICAgICAgICAgICBbLWEgTUQ1fFNIQV0gWy14IERFU3xBRVNdIFt1c2VybmFtZV0iCisgICAgZWNobyAiIgorICAgIGV4aXQKK2ZpCisKK2lmIHRlc3QgIngkMSIgPSAieCIgOyB0aGVuCisgICAgcHJvbXB0PXllcworICAgIGVjaG8gIkVudGVyIGEgU05NUHYzIHVzZXIgbmFtZSB0byBjcmVhdGU6ICIKKyAgICByZWFkIHVzZXIKK2Vsc2UKKyAgICB1c2VyPSQxCisgICAgc2hpZnQKK2ZpCitpZiB0ZXN0ICJ4JHVzZXIiID0gIngiIDsgdGhlbgorICAgIGVjaG8gIllvdSBtdXN0IHNwZWNpZnkgYSB1c2VyIG5hbWUiCisgICAgZXhpdCAxCitmaQoraWYgdGVzdCAieCRhcGFzc3BocmFzZSIgPSAieCIgOyB0aGVuCisgICAgcHJvbXB0PXllcworICAgIGVjaG8gIkVudGVyIGF1dGhlbnRpY2F0aW9uIHBhc3MtcGhyYXNlOiAiCisgICAgcmVhZCBhcGFzc3BocmFzZQorZmkKK2lmIHRlc3QgIngkYXBhc3NwaHJhc2UiID0gIngiIDsgdGhlbgorICAgIGVjaG8gIllvdSBtdXN0IHNwZWNpZnkgYW4gYXV0aGVudGljYXRpb24gcGFzcy1waHJhc2UiCisgICAgZXhpdCAxCitmaQorICAgIGlmIHRlc3QgIngkcHJvbXB0IiA9ICJ4eWVzIiAtYSAieCR4cGFzc3BocmFzZSIgPSAieCIgOyB0aGVuCisgICAgZWNobyAiRW50ZXIgZW5jcnlwdGlvbiBwYXNzLXBocmFzZTogIgorICAgIGVjaG8gIiAgW3ByZXNzIHJldHVybiB0byByZXVzZSB0aGUgYXV0aGVudGljYXRpb24gcGFzcy1waHJhc2VdIgorICAgIHJlYWQgeHBhc3NwaHJhc2UKK2ZpCitvdXRkaXI9IkBQRVJTSVNURU5UX0RJUkVDVE9SWUAiCitvdXRmaWxlPSIkb3V0ZGlyL3NubXBkLmNvbmYiCitsaW5lPSJjcmVhdGVVc2VyICR1c2VyICRBYWxnb3JpdGhtIFwiJGFwYXNzcGhyYXNlXCIgJFhhbGdvcml0aG0gJHhwYXNzcGhyYXNlIgorZWNobyAiYWRkaW5nIHRoZSBmb2xsb3dpbmcgbGluZSB0byAkb3V0ZmlsZToiCitlY2hvICIgICIgJGxpbmUKKyMgaW4gY2FzZSBpdCBoYXNuJ3QgZXZlciBiZWVuIHN0YXJ0ZWQgeWV0LCBzdGFydCBpdC4KK2lmIHRlc3QgISAtZCAkb3V0ZGlyIDsgdGhlbgorICAgIG1rZGlyICRvdXRkaXIKK2ZpCitpZiB0ZXN0ICEgLWQgJG91dGZpbGUgOyB0aGVuCisgICAgdG91Y2ggJG91dGZpbGUKK2ZpCitlY2hvICRsaW5lID4+ICRvdXRmaWxlCitvdXRmaWxlPSJAZGF0YWRpckAvc25tcC9zbm1wZC5jb25mIgorbGluZT0iJHRva2VuICR1c2VyIgorZWNobyAiYWRkaW5nIHRoZSBmb2xsb3dpbmcgbGluZSB0byAkb3V0ZmlsZToiCitlY2hvICIgICIgJGxpbmUKK2lmIHRlc3QgISAtZCAkb3V0ZmlsZSA7IHRoZW4KKyAgICB0b3VjaCAkb3V0ZmlsZQorZmkKK2VjaG8gJGxpbmUgPj4gJG91dGZpbGUKZGlmZiAtLWdpdCBhL3BlcmwvQVNOL0FTTi5wbSBiL3BlcmwvQVNOL0FTTi5wbQppbmRleCA2NDMwZjdlLi4wNzg1OGFlIDEwMDY0NAotLS0gYS9wZXJsL0FTTi9BU04ucG0KKysrIGIvcGVybC9BU04vQVNOLnBtCkBAIC02Niw3ICs2Niw3IEBACiAJQVNOX1VOU0lHTkVECiAJQVNOX1VOU0lHTkVENjQKICk7Ci0kVkVSU0lPTiA9ICc1LjA0MDQnOworJFZFUlNJT04gPSAnNS4wNTAyJzsKIAogc3ViIEFVVE9MT0FEIHsKICAgICAjIFRoaXMgQVVUT0xPQUQgaXMgdXNlZCB0byAnYXV0b2xvYWQnIGNvbnN0YW50cyBmcm9tIHRoZSBjb25zdGFudCgpCmRpZmYgLS1naXQgYS9wZXJsL0FTTi9NYWtlZmlsZS5QTCBiL3BlcmwvQVNOL01ha2VmaWxlLlBMCmluZGV4IGY4OTVhNDEuLjQ1NzY3ODEgMTAwNjQ0Ci0tLSBhL3BlcmwvQVNOL01ha2VmaWxlLlBMCisrKyBiL3BlcmwvQVNOL01ha2VmaWxlLlBMCkBAIC0yOCw5ICsyOCw5IEBACiAgICAgICAgICAgICAgICAgICAKICAgICBteSAoJHNubXBfbGliLCAkc25tcF9sbGliLCAkc2VwKTsKIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKICAgICAgICRvcHRzID0gTmV0U05NUEdldE9wdHMoKTsJCi0gICAgICAkUGFyYW1zeydERUZJTkUnfSA9ICItRE1TVkNfUEVSTCI7CisgICAgICAkUGFyYW1zeydERUZJTkUnfSA9ICItRE1TVkNfUEVSTCAtRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC1EX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIjsKICAgICAgICRzZXAgPSAnXFwnOwogICAgICAgJHNubXBfbGliX2ZpbGUgPSAnbmV0c25tcC5saWInOwogICAgICAgJHNubXBfbGlua19saWIgPSAnbmV0c25tcCc7CkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICAkcm9vdHBhdGggPSAiLi4vIiBpZiAoISRyb290cGF0aCk7CiAgICAgJHJvb3RwYXRoIC49ICcvJyBpZiAoJHJvb3RwYXRoICF+IC9cLyQvKTsKICAgICAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAKICAgICAgICMgR3JhYiBjb21tYW5kIGxpbmUgb3B0aW9ucyBmaXJzdC4gIE9ubHkgdXNlZCBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzZXQKICAgICAgIEdldE9wdGlvbnMoIk5FVC1TTk1QLUlOLVNPVVJDRT1zIiA9PiBcJHJldHsnaW5zb3VyY2UnfSwKQEAgLTE4NCw3ICsxODQsNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtIGIvcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbQppbmRleCA2MjQ3OTYzLi5kZjNjNGFmIDEwMDY0NAotLS0gYS9wZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtCisrKyBiL3BlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0KQEAgLTYsNyArNiw3IEBACiAjIyAgIHNjYWxhciBzZXRzPwogIyMgICBtdWx0aS1ob3N0cwogCi0kQW55RGF0YTo6U3RvcmFnZTo6VkVSU0lPTiA9ICc1LjA0MDQnOworJEFueURhdGE6OlN0b3JhZ2U6OlZFUlNJT04gPSAnNS4wNTAyJzsKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiAKZGlmZiAtLWdpdCBhL3BlcmwvTWFrZWZpbGUuUEwgYi9wZXJsL01ha2VmaWxlLlBMCmluZGV4IGY3MGY5OTEuLjkyZjVhZDIgMTAwNjQ0Ci0tLSBhL3BlcmwvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9NYWtlZmlsZS5QTApAQCAtMjgsNyArMjgsNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtMTExLDcgKzExMSw3IEBACiAKIAogc3ViIENoZWNrX1ZlcnNpb24gewotICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBlcSAnbXN5cycpKSB7CisgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IG5lICcnKSkgewogICAgIG15ICRmb3VuZHZlcnNpb24gPSAwOwogICAgIHJldHVybiBpZiAoJEVOVnsnTkVUU05NUF9ET05UX0NIRUNLX1ZFUlNJT04nfSk7CiAgICAgb3BlbihJLCI8TWFrZWZpbGUiKTsKZGlmZiAtLWdpdCBhL3BlcmwvTWFrZWZpbGUuc3Vicy5wbCBiL3BlcmwvTWFrZWZpbGUuc3Vicy5wbAppbmRleCA4MTdmYjU1Li5lM2MyNWVmIDEwMDY0NAotLS0gYS9wZXJsL01ha2VmaWxlLnN1YnMucGwKKysrIGIvcGVybC9NYWtlZmlsZS5zdWJzLnBsCkBAIC00LDcgKzQsNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtODcsNyArODcsNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL09JRC9NYWtlZmlsZS5QTCBiL3BlcmwvT0lEL01ha2VmaWxlLlBMCmluZGV4IDVkOTQzMzguLjZiYjE2MTYgMTAwNjQ0Ci0tLSBhL3BlcmwvT0lEL01ha2VmaWxlLlBMCisrKyBiL3BlcmwvT0lEL01ha2VmaWxlLlBMCkBAIC0yOCw5ICsyOCw5IEBACiAgICAgfQogICAgICAgICAgICAgICAgICAgCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7Ci0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtMTg1LDcgKzE4NSw3IEBACiAKIAogc3ViIENoZWNrX1ZlcnNpb24gewotICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBlcSAnbXN5cycpKSB7CisgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IG5lICcnKSkgewogICAgIG15ICRmb3VuZHZlcnNpb24gPSAwOwogICAgIHJldHVybiBpZiAoJEVOVnsnTkVUU05NUF9ET05UX0NIRUNLX1ZFUlNJT04nfSk7CiAgICAgb3BlbihJLCI8TWFrZWZpbGUiKTsKZGlmZiAtLWdpdCBhL3BlcmwvT0lEL09JRC5wbSBiL3BlcmwvT0lEL09JRC5wbQppbmRleCAxNWIzNzc0Li5iOTQzODcyIDEwMDY0NAotLS0gYS9wZXJsL09JRC9PSUQucG0KKysrIGIvcGVybC9PSUQvT0lELnBtCkBAIC05Miw3ICs5Miw3IEBACiAJc25tcF9vaWRfY29tcGFyZQogICAgICAgICBjb21wYXJlCiApOwotJFZFUlNJT04gPSAnNS4wNDA0JzsKKyRWRVJTSU9OID0gJzUuMDUwMic7CiAKIHN1YiBuZXcgewogICAgIG15ICR0eXBlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9wZXJsL09JRC9PSUQueHMgYi9wZXJsL09JRC9PSUQueHMKaW5kZXggNWQ0MWMzYS4uZTljODM4ZiAxMDA2NDQKLS0tIGEvcGVybC9PSUQvT0lELnhzCisrKyBiL3BlcmwvT0lEL09JRC54cwpAQCAtMjgsNyArMjgsNyBAQAogbnNvX25ld2FycmF5cHRyKG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuKSAKIHsKICAgICBuZXRzbm1wX29pZCAqUkVUVkFMOwotICAgIFJFVFZBTCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9vaWQpOworICAgIFJFVFZBTCA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9vaWQpKTsKICAgICBSRVRWQUwtPm5hbWUgPSBSRVRWQUwtPm5hbWVidWY7CiAgICAgUkVUVkFMLT5sZW4gPSBuYW1lX2xlbjsKICAgICBtZW1jcHkoUkVUVkFMLT5uYW1lLCBuYW1lLCBuYW1lX2xlbiAqIHNpemVvZihvaWQpKTsKQEAgLTE0Niw3ICsxNDYsNyBAQAogICAgaW50IGk7CiAgICBidWZbMF0gPSAnXDAnOwogICAgZm9yIChpPTA7IGkgPCBsZW47IGkrKykgewotCXNwcmludGYoYnVmLCIuJWx1Iiwqb2JqaWQrKyk7CisJc3ByaW50ZihidWYsICIuJWx1IiwgKm9iamlkKyspOwogCWJ1ZiArPSBzdHJsZW4oYnVmKTsKICAgIH0KICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CkBAIC0xNjAsMTIgKzE2MCwxMyBAQAogICAgIENPREU6CiAgICAgICAgIGlmIChnZXRfdHJlZV9oZWFkKCkgPT0gTlVMTCkKICAgICAgICAgICAgIG5ldHNubXBfaW5pdF9taWIoKTsKLSAgICAgICAgUkVUVkFMID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX29pZCk7CisgICAgICAgIFJFVFZBTCA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9vaWQpKTsKICAgICAgICAgUkVUVkFMLT5uYW1lID0gUkVUVkFMLT5uYW1lYnVmOwogICAgICAgICBSRVRWQUwtPmxlbiA9IHNpemVvZihSRVRWQUwtPm5hbWVidWYpL3NpemVvZihSRVRWQUwtPm5hbWVidWZbMF0pOwogICAgICAgICBpZiAoIXNubXBfcGFyc2Vfb2lkKGluaXRzdHJpbmcsIChvaWQgKikgUkVUVkFMLT5uYW1lLCAmUkVUVkFMLT5sZW4pKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ2FuJ3QgcGFyc2U6ICVzXG4iLCBpbml0c3RyaW5nKTsKICAgICAgICAgICAgIFJFVFZBTC0+bGVuID0gMDsKKyAgICAgICAgICAgIGZyZWUoUkVUVkFMKTsKICAgICAgICAgICAgIFJFVFZBTCA9IE5VTEw7CiAgICAgICAgIH0KICAgICBPVVRQVVQ6CkBAIC0yNjYsNyArMjY3LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoKGJ1ZiA9ICh1X2NoYXIgKikgY2FsbG9jKGJ1Zl9sZW4sIDEpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoKGJ1ZiA9IG5ldHNubXBfbWFsbG9jKGJ1Zl9sZW4pKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUkVUVkFMID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yODIsMTIgKzI4MywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgc3RyY21wKHRwbm9kZS0+bGFiZWwgKyBzdHJsZW4odHBub2RlLT5sYWJlbCkgLSA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUYWJsZSIpKSkgewogICAgICAgICAgICAgICAgICAgICAvKiB3ZSdyZSBub3Qgd2l0aGluIGEgdGFibGUuICBiYWQgbG9naWMsIGxpdHRsZSBjaG9pY2UgKi8KKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9mcmVlKGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgIFJFVFZBTCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghdHBlKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9mcmVlKGJ1Zik7CiAgICAgICAgICAgICAgICAgUkVUVkFMID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yOTgsNiArMzAxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgKE5VTEwgPT0KICAgICAgICAgICAgICAgICAgICAgICh0cGUgPSBnZXRfdHJlZShuYW1lLCBuYW1lX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfdHJlZV9oZWFkKCkpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9mcmVlKGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgIFJFVFZBTCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLyogWFhYOiBiZXR0ZXIgZXJyb3IgcmVjb3ZlcnkgbmVlZGVkPyAqLwogICAgICAgICAgICAgICAgIH0KQEAgLTMyMCwxMiArMzI0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIChOVUxMID09CiAgICAgICAgICAgICAgICAgICAgICAoaW5kZXhub2RlID0gZ2V0X3RyZWUobmFtZSwgbmFtZV9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3RyZWVfaGVhZCgpKSkpKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZnJlZShidWYpOwogICAgICAgICAgICAgICAgICAgICBSRVRWQUwgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgIC8qIHh4eCBtZW0gbGVhayAqLwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB2YmRhdGEudHlwZSA9IG1pYl90b19hc25fdHlwZShpbmRleG5vZGUtPnR5cGUpOwogCiAgICAgICAgICAgICAgICAgaWYgKHZiZGF0YS50eXBlID09ICh1X2NoYXIpIC0xKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZnJlZShidWYpOwogICAgICAgICAgICAgICAgICAgICBSRVRWQUwgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8qIFhYWDogbm90IGdvb2QuICBoYWxmIHBvcHVsYXRlZCBzdGFjaz8gKi8KICAgICAgICAgICAgICAgICB9CkBAIC0zNDcsOSArMzUzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIC8qIHBvc3NpYmxlIG1lbW9yeSBsZWFrOiB2YmRhdGEuZGF0YSBzaG91bGQgYmUgZnJlZWQgbGF0ZXIgKi8KICAgICAgICAgICAgICAgICBpZiAocGFyc2Vfb25lX29pZF9pbmRleCgmb2lkcCwgJm9pZHBfbGVuLCAmdmJkYXRhLCAwKQogICAgICAgICAgICAgICAgICAgICAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9mcmVlKGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgIFJFVFZBTCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0zNjMsOSArMzY5LDEwIEBACiAgICAgICAgICAgICAgICAgc3ByaW50X3JlYWxsb2NfdmFsdWUoJmJ1ZiwgJmJ1Zl9sZW4sICZvdXRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIG5hbWUsIG5hbWVfbGVuLCAmdmJkYXRhKTsKICovCi0KKyAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyX2ludGVybmFscygmdmJkYXRhKTsKICAgICAgICAgICAgICAgICBhdl9wdXNoKG15cmV0LCBuZXdTVnB2KChjaGFyICopYnVmLCBvdXRfbGVuKSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXRzbm1wX2ZyZWUoYnVmKTsKICAgICAgICAgICAgIFJFVFZBTCA9IG5ld1JWKChTViAqKW15cmV0KTsKICAgICAgICAgfQogICAgIE9VVFBVVDoKZGlmZiAtLWdpdCBhL3BlcmwvU05NUC9NYWtlZmlsZS5QTCBiL3BlcmwvU05NUC9NYWtlZmlsZS5QTAppbmRleCA5MjhjYjY3Li5lNjE3Y2I3IDEwMDY0NAotLS0gYS9wZXJsL1NOTVAvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9TTk1QL01ha2VmaWxlLlBMCkBAIC0zMiw5ICszMiw5IEBACiAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7Ci0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAgIG15ICgkbWliZGlyLCAkc25tcGQsICRzbm1wdHJhcGQpOwogCiAgICAgICAgICMgV2luZG93cwotICAgICAgICBpZiAoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykgeworICAgICAgICBpZiAoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSB7CiAgICAgICAgICAgaWYgKGxjICgkb3B0cy0+eydpbnNvdXJjZSd9KSBlcSAidHJ1ZSIpIHsKICAgICAgICAgICAgICRtaWJkaXIgPSAiLi4vLi4vbWlicyI7CiAgICAgICAgICAgICBpZiAobGMoJG9wdHMtPnsnZGVidWcnfSkgZXEgInRydWUiKSB7CkBAIC0xNjksNyArMTY5LDcgQEAKIAkgICAgcHJvbXB0KCJVbmFibGUgdG8gbG9jYXRlIFwic25tcHRyYXBkXCIuIFBsZWFzZSBlbnRlciB0aGUgcGF0aDogIiwKIAkJICAgJHNubXBkX3BhdGgxKTsKIAotICAgICAgICBpZiAoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykgeworICAgICAgICBpZiAoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSB7CiAgICAgICAgICAgJHNubXBkID0gJHNubXBkIC4gJHNlcCAuICJzbm1wZC5leGUiOwogICAgICAgICAgICRzbm1wdHJhcGQgPSAkc25tcHRyYXBkIC4gJHNlcCAuICJzbm1wdHJhcGQuZXhlIjsKICAgICAgICAgfQpAQCAtMjMxLDcgKzIzMSw3IEBACiAgICAgJHJvb3RwYXRoID0gIi4uLyIgaWYgKCEkcm9vdHBhdGgpOwogICAgICRyb290cGF0aCAuPSAnLycgaWYgKCRyb290cGF0aCAhfiAvXC8kLyk7CiAgICAgCi0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogCiAgICAgICAjIEdyYWIgY29tbWFuZCBsaW5lIG9wdGlvbnMgZmlyc3QuICBPbmx5IHVzZWQgaWYgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3Qgc2V0CiAgICAgICBHZXRPcHRpb25zKCJORVQtU05NUC1JTi1TT1VSQ0U9cyIgPT4gXCRyZXR7J2luc291cmNlJ30sCkBAIC0zMTQsNyArMzE0LDcgQEAKIAogCiBzdWIgQ2hlY2tfVmVyc2lvbiB7Ci0gIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IGVxICdtc3lzJykpIHsKKyAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gbmUgJycpKSB7CiAgICAgbXkgJGZvdW5kdmVyc2lvbiA9IDA7CiAgICAgcmV0dXJuIGlmICgkRU5WeydORVRTTk1QX0RPTlRfQ0hFQ0tfVkVSU0lPTid9KTsKICAgICBvcGVuKEksIjxNYWtlZmlsZSIpOwpkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL1NOTVAucG0gYi9wZXJsL1NOTVAvU05NUC5wbQppbmRleCBlOTE0ZGNjLi5hNzljYjkxIDEwMDY0NAotLS0gYS9wZXJsL1NOTVAvU05NUC5wbQorKysgYi9wZXJsL1NOTVAvU05NUC5wbQpAQCAtNyw3ICs3LDcgQEAKICMgICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgc2FtZSB0ZXJtcyBhcyBQZXJsIGl0c2VsZi4KIAogcGFja2FnZSBTTk1QOwotJFZFUlNJT04gPSAnNS4wNDA0JzsgICAjIGN1cnJlbnQgcmVsZWFzZSB2ZXJzaW9uIG51bWJlcgorJFZFUlNJT04gPSAnNS4wNTAyJzsgICAjIGN1cnJlbnQgcmVsZWFzZSB2ZXJzaW9uIG51bWJlcgogCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwpAQCAtNDYsNiArNDYsOCBAQAogICAgICAgICBzbm1wX2dldG5leHQKICAgICAgICAgc25tcF9zZXQKICAgICAgICAgc25tcF90cmFwCisJU05NUF9BUElfVFJBRElUSU9OQUwKKwlTTk1QX0FQSV9TSU5HTEUKICk7CiAKIHN1YiBBVVRPTE9BRCB7CkBAIC0zNDgsMTIgKzM1MCwyNCBAQAogICAgICRzZXNzLT50cmFwKEBfKTsKIH0KIAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKKyMgUHJlc2VydmVzIHRoZSBhYmlsaXR5IHRvIGNhbGwgTWFpbkxvb3AoKSB3aXRoIG5vIGFyZ3Mgc28gd2UgZG9uJ3QgCisjIGJyZWFrIG9sZCBjb2RlCisjCisjIEFsdGVybmF0ZWx5LCBNYWluTG9vcCgpIGNvdWxkIGJlIGNhbGxlZCBhcyBhbiBvYmplY3QgbWV0aG9kLCAKKyMgKCAkc2Vzcy0+TWFpbkxvb3AoKSApICwgc28gdGhhdCAkc2VsZiB3aW5kcyB1cCBpbiBAXy4gIFRoZW4gaXQgd291bGQgCisjIGJlIG1vcmUgbGlrZSA6CisjIG15ICRzZWxmID0gc2hpZnQ7CisjIC4uLi4gCisjIFNOTVA6Ol9tYWluX2xvb3AoLi4uLi4uLCAkc2VsZi0+e1Nlc3NQdHJ9KTsKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCiBzdWIgTWFpbkxvb3AgeworICAgIG15ICRzcyA9IHNoaWZ0IGlmKCZTTk1QOjpfYXBpX21vZGUoKSA9PSBTTk1QOjpTTk1QX0FQSV9TSU5HTEUoKSk7CiAgICAgbXkgJHRpbWUgPSBzaGlmdDsKICAgICBteSAkY2FsbGJhY2sgPSBzaGlmdDsKICAgICBteSAkdGltZV9zZWMgPSAoJHRpbWUgPyBpbnQgJHRpbWUgOiAwKTsKICAgICBteSAkdGltZV91c2VjID0gKCR0aW1lID8gaW50KCgkdGltZS0kdGltZV9zZWMpKjEwMDAwMDApIDogMCk7Ci0gICAgU05NUDo6X21haW5fbG9vcCgkdGltZV9zZWMsJHRpbWVfdXNlYywkY2FsbGJhY2spOworICAgIFNOTVA6Ol9tYWluX2xvb3AoJHRpbWVfc2VjLCR0aW1lX3VzZWMsJGNhbGxiYWNrLChkZWZpbmVkKCRzcykgPyAkc3MtPntTZXNzUHRyfSA6ICgpKSk7CiB9CiAKIHN1YiBmaW5pc2ggewpAQCAtNTE3LDcgKzUzMSw3IEBACiAgICAgICAgJHRoaXMtPntDb250ZXh0fSB8fD0gCiAJICAgTmV0U05NUDo6ZGVmYXVsdF9zdG9yZTo6bmV0c25tcF9kc19nZXRfc3RyaW5nKE5ldFNOTVA6OmRlZmF1bHRfc3RvcmU6Ok5FVFNOTVBfRFNfTElCUkFSWV9JRCgpLCAKIAkJICAgICAgICAgTmV0U05NUDo6ZGVmYXVsdF9zdG9yZTo6TkVUU05NUF9EU19MSUJfQ09OVEVYVCgpKSB8fCAnJzsKLSAgICAgICAkdGhpcy0+e0F1dGhQcm90b30gfHw9ICdERUZBVUxUJzsgIyBkZWZhdWx0cyB0byB0aGUgbGlicmFyeSdzIGRlZmF1bHQKKyAgICAgICAkdGhpcy0+e0F1dGhQcm90b30gfHw9ICdERUZBVUxUJzsgIyB1c2UgdGhlIGxpYnJhcnkncyBkZWZhdWx0CiAgICAgICAgJHRoaXMtPntBdXRoUGFzc30gfHw9CiAgICAgICAgTmV0U05NUDo6ZGVmYXVsdF9zdG9yZTo6bmV0c25tcF9kc19nZXRfc3RyaW5nKE5ldFNOTVA6OmRlZmF1bHRfc3RvcmU6Ok5FVFNOTVBfRFNfTElCUkFSWV9JRCgpLCAKIAkJICAgICBOZXRTTk1QOjpkZWZhdWx0X3N0b3JlOjpORVRTTk1QX0RTX0xJQl9BVVRIUEFTU1BIUkFTRSgpKSB8fApAQCAtNTI5LDcgKzU0Myw3IEBACiAgICAgICAgJHRoaXMtPntBdXRoTG9jYWxpemVkS2V5fSB8fD0gJyc7CiAgICAgICAgJHRoaXMtPntQcml2TG9jYWxpemVkS2V5fSB8fD0gJyc7CiAKLSAgICAgICAkdGhpcy0+e1ByaXZQcm90b30gfHw9ICdERUZBVUxUJzsgICMgZGVmYXVsdHMgdG8gaHRlIGxpYnJhcnkncyBkZWZhdWx0CisgICAgICAgJHRoaXMtPntQcml2UHJvdG99IHx8PSAnREVGQVVMVCc7ICAjIHVzZSB0aGUgbGlicmFyeSdzIGRlZmF1bHQKICAgICAgICAkdGhpcy0+e1ByaXZQYXNzfSB8fD0KICAgICAgICBOZXRTTk1QOjpkZWZhdWx0X3N0b3JlOjpuZXRzbm1wX2RzX2dldF9zdHJpbmcoTmV0U05NUDo6ZGVmYXVsdF9zdG9yZTo6TkVUU05NUF9EU19MSUJSQVJZX0lEKCksIAogCQkgICAgIE5ldFNOTVA6OmRlZmF1bHRfc3RvcmU6Ok5FVFNOTVBfRFNfTElCX1BSSVZQQVNTUEhSQVNFKCkpIHx8CkBAIC03MTQsNyArNzI4LDcgQEAKIAkgICAgaWYgKCRwYXJzZV9pbmRleGVzKSB7CiAJCSMgZ2V0IGluZGV4ZXMKIAkJbXkgQGluZGV4ZXMgPQotCQkgIEB7JFNOTVA6Ok1JQnskdGV4dG5vZGV9eydjaGlsZHJlbid9WzBdeydpbmRleGVzJ30gfHwgW10gfTsKKwkJICBAeyRTTk1QOjpNSUJ7JHRleHRub2RlfXsnY2hpbGRyZW4nfVswXXsnaW5kZXhlcyd9IHx8IFtdfTsKIAkJIyBxdWljayB0cmFuc2xhdGUgaW50byBhIGhhc2gKIAkJbWFwIHsgJGluZGV4ZXN7JF99ID0gMTsgfSBAaW5kZXhlczsKIAkgICAgfQpAQCAtMTM2Nyw2ICsxMzgxLDcgQEAKICAgICAgcGFyZW50ID0+IDAsICAgIyBwYXJlbnQgbm9kZQogICAgICBjaGlsZHJlbiA9PiAwLCAjIGFycmF5IHJlZmVyZW5jZSBvZiBjaGlsZHJlbiBub2RlcwogICAgICBpbmRleGVzID0+IDAsICAjIHJldHVybnMgYXJyYXkgb2YgY29sdW1uIGxhYmVscworICAgICBpbXBsaWVkID0+IDAsICAjIGJvb2xlYW46IGlzIHRoZSBsYXN0IGluZGV4IElNUExJRUQKICAgICAgdmFyYmluZHMgPT4gMCwgIyByZXR1cm5zIGFycmF5IG9mIHRyYXAvbm90aWZpY2F0aW9uIHZhcmJpbmRzCiAgICAgIG5leHROb2RlID0+IDAsICMgbmV4dCBsZXhpY28gbm9kZSAoQlVHISBkb2VzIG5vdCByZXR1cm4gaW4gbGV4aWNvIG9yZGVyKQogICAgICB0eXBlID0+IDAsICAgICAjIHJldHVybnMgc2ltcGxlIHR5cGUgKHNlZSBnZXRUeXBlIGZvciB2YWx1ZXMpCkBAIC0xODgyLDcgKzE4OTcsNyBAQAogCiBOb3RlIDI6IGNhbGxiYWNrIHN1cHBvcnQgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIFNOTVAgbW9kdWxlIHZlcnNpb24KIDUuMDQgYW5kIGFib3ZlLiAgVG8gdGVzdCBmb3IgdGhpcyBpbiBjb2RlIGludGVuZGluZyB0byBzdXBwb3J0IGJvdGgKLXZlcnNpb25zIHByaW9yIHRvIDUuMDQgYW5kIGFuZCA1LjA0IGFuZCB1cCwgdGhlIGZvbGxvd2luZyBzaG91bGQgd29yazoKK3ZlcnNpb25zIHByaW9yIHRvIDUuMDQgYW5kIDUuMDQgYW5kIHVwLCB0aGUgZm9sbG93aW5nIHNob3VsZCB3b3JrOgogCiAgIGlmICgkcmVzcG9uc2UgPSAkc2Vzcy0+Z2V0dGFibGUoJ2lmVGFibGUnLCBjYWxsYmFjayA9PiBcJm15X3N1YikpIHsKICAgICAgICMgZ290IGEgcmVzcG9uc2UsIGdldHRhYmxlIGRvZXNuJ3Qgc3VwcG9ydCBjYWxsYmFjawpAQCAtMjMxNSw2ICsyMzMwLDE0IEBACiAKIHJldHVybnMgdGhlIFJFRkVSRU5DRSBjbGF1c2UKIAorPWl0ZW0gaW5kZXhlcworCityZXR1cm5zIHRoZSBvYmplY3RzIGluIHRoZSBJTkRFWCBjbGF1c2UKKworPWl0ZW0gaW1wbGllZAorCityZXR1cm5zIHRydWUgaWYgdGhlIGxhc3Qgb2JqZWN0IGluIHRoZSBJTkRFWCBpcyBJTVBMSUVECisKID1iYWNrCiAKID1oZWFkMSBNSUIgRnVuY3Rpb25zCmRpZmYgLS1naXQgYS9wZXJsL1NOTVAvU05NUC54cyBiL3BlcmwvU05NUC9TTk1QLnhzCmluZGV4IDkwMjQwYTEuLjM2MWNhNTggMTAwNjQ0Ci0tLSBhL3BlcmwvU05NUC9TTk1QLnhzCisrKyBiL3BlcmwvU05NUC9TTk1QLnhzCkBAIC01OSwxNiArNTksNiBAQAogI2RlZmluZSBHX1ZPSUQgR19ESVNDQVJECiAjZW5kaWYKIAotI2lmZGVmIFdJTjMyCi0jZGVmaW5lIFNPQ0tfU1RBUlRVUCB3aW5zb2NrX3N0YXJ0dXAoKQotI2RlZmluZSBTT0NLX0NMRUFOVVAgd2luc29ja19jbGVhbnVwKCkKLSNkZWZpbmUgc3RyY2FzZWNtcCBfc3RyaWNtcAotI2RlZmluZSBzdHJuY2FzZWNtcCBfc3RybmljbXAKLSNlbHNlCi0jZGVmaW5lIFNPQ0tfU1RBUlRVUAotI2RlZmluZSBTT0NLX0NMRUFOVVAKLSNlbmRpZgotCiAjaW5jbHVkZSAicGVybHNubXAuaCIKIAogI2RlZmluZSBTVUNDRVNTIDEKQEAgLTc2LDYgKzY2LDkgQEAKIAogI2RlZmluZSBaRVJPX0JVVF9UUlVFICIwIGJ1dCB0cnVlIgogCisjZGVmaW5lIFNOTVBfQVBJX1RSQURJVElPTkFMIDAKKyNkZWZpbmUgU05NUF9BUElfU0lOR0xFIDEKKwogI2RlZmluZSBWQVJCSU5EX1RBR19GIDAKICNkZWZpbmUgVkFSQklORF9JSURfRiAxCiAjZGVmaW5lIFZBUkJJTkRfVkFMX0YgMgpAQCAtOTUsNiArODgsOSBAQAogLyogSW50ZXJuYWwgZmxhZyB0byBkZXRlcm1pbmUgc25tcF9tYWluX2xvb3AoKSBzaG91bGQgcmV0dXJuIGFmdGVyIGNhbGxiYWNrICovCiBzdGF0aWMgaW50IG1haW5sb29wX2ZpbmlzaCA9IDA7CiAKKy8qIEludGVybmFsIGZsYWcgdG8gZGV0ZXJtaW5lIHdoaWNoIEFQSSB3ZSdyZSB1c2luZyAqLworc3RhdGljIGludCBhcGlfbW9kZSA9IFNOTVBfQVBJX1RSQURJVElPTkFMOworCiAvKiB0aGVzZSBzaG91bGQgYmUgcGFydCBvZiB0cmFuc2Zvcm1fb2lkcy5oID8gKi8KICNkZWZpbmUgVVNNX0FVVEhfUFJPVE9fTUQ1X0xFTiAxMAogI2RlZmluZSBVU01fQVVUSF9QUk9UT19TSEFfTEVOIDEwCkBAIC0xMTIsNyArMTA4LDYgQEAKIAogc3RhdGljIHZvaWQgX19yZWNhbGNfdGltZW91dCBfKChzdHJ1Y3QgdGltZXZhbCosc3RydWN0IHRpbWV2YWwqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCosc3RydWN0IHRpbWV2YWwqLCBpbnQqICkpOwotc3RhdGljIGluX2FkZHJfdCBfX3BhcnNlX2FkZHJlc3MgXygoY2hhciopKTsKIHN0YXRpYyBpbnQgX19pc19udW1lcmljX29pZCBfKChjaGFyKikpOwogc3RhdGljIGludCBfX2lzX2xlYWYgXygoc3RydWN0IHRyZWUqKSk7CiBzdGF0aWMgaW50IF9fdHJhbnNsYXRlX2FwcGxfdHlwZSBfKChjaGFyKikpOwpAQCAtMTg2LDYgKzE4MSw5IEBACiBzdGF0aWMgaW50IF9idWxrd2Fsa19hc3luY19jYiBfKChpbnQgb3AsIFNubXBTZXNzaW9uICpzcywgaW50IHJlcWlkLAogCQkJCSAgICAgbmV0c25tcF9wZHUgKnBkdSwgdm9pZCAqY29udGV4dF9wdHIpKTsKIAorLyogUHJvdG90eXBlIGZvciBlcnJvciBoYW5kbGVyICovCit2b2lkIHNubXBfcmV0dXJuX2Vyciggc3RydWN0IHNubXBfc2Vzc2lvbiAqc3MsIFNWICplcnJfc3RyLCBTViAqZXJyX251bSwgU1YgKmVycl9pbmQgKTsKKwogLyogU3RydWN0dXJlIHRvIGhvbGQgdmFsaWQgY29udGV4dCBzZXNzaW9ucy4gKi8KIHN0cnVjdCB2YWxpZF9jb250ZXh0cyB7CiAgICB3YWxrX2NvbnRleHQJKip2YWxpZDsJLyogQXJyYXkgb2YgdmFsaWQgd2Fsa19jb250ZXh0IHBvaW50ZXJzLiAgICAqLwpAQCAtMjA5LDcgKzIwNyw2IEBACiAJfSB3aGlsZSAoLypDT05TVENPTkQqLzApCiAKIGNoYXIJX2RlYnVneFsxMDI0XTsJLyogU3BhY2UgdG8gc3ByaW50ZigpIGludG8gLSB1c2VkIGJ5IHNwcmludF9vYmppZCgpLiAqLwotI2RlZmluZSBEQkRDTCh4KSB4CiAKIC8qIHdyYXBwZXIgYXJvdW5kIHNucHJpbnRfb2JqaWQgdG8gc25wcmludF9vYmppZCB0byByZXR1cm4gdGhlIHBvaW50ZXIgCiAgICBpbnN0ZWFkIG9mIGxlbmd0aCAqLwpAQCAtMjIwLDYgKzIxNyw3IEBACiAgIHJldHVybiBfZGVidWd4OwogfQogIAorI2RlZmluZSBEQkRDTCh4KSB4CiAjZWxzZQkvKiBERUJVR0dJTkcgKi8KICNkZWZpbmUgREJEQ0woeCkgCiAjZGVmaW5lIERCT1VUCkBAIC0yOTUsMjYgKzI5Myw2IEBACiAgICB9CiB9CiAKLXN0YXRpYyBpbl9hZGRyX3QKLV9fcGFyc2VfYWRkcmVzcyhhZGRyZXNzKQotY2hhciAqYWRkcmVzczsKLXsKLSAgICBpbl9hZGRyX3QgYWRkcjsKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc2FkZHI7Ci0gICAgc3RydWN0IGhvc3RlbnQgKmhwOwotCi0gICAgaWYgKChhZGRyID0gaW5ldF9hZGRyKGFkZHJlc3MpKSAhPSAtMSkKLQlyZXR1cm4gYWRkcjsKLSAgICBocCA9IGdldGhvc3RieW5hbWUoYWRkcmVzcyk7Ci0gICAgaWYgKGhwID09IE5VTEwpewotICAgICAgICByZXR1cm4gKC0xKTsgLyogZXJyb3IgdmFsdWUgKi8KLSAgICB9IGVsc2UgewotCW1lbWNweSgmc2FkZHIuc2luX2FkZHIsIGhwLT5oX2FkZHIsIGhwLT5oX2xlbmd0aCk7Ci0JcmV0dXJuIHNhZGRyLnNpbl9hZGRyLnNfYWRkcjsKLSAgICB9Ci0KLX0KLQogc3RhdGljIGludAogX19pc19udW1lcmljX29pZCAob2lkc3RyKQogY2hhciogb2lkc3RyOwpAQCAtNTg1LDcgKzU2Myw3IEBACiAgICBpbnQgaTsKICAgIGJ1ZlswXSA9ICdcMCc7CiAgICBmb3IgKGk9MDsgaSA8IGxlbjsgaSsrKSB7Ci0Jc3ByaW50ZihidWYsIi4lbHUiLCpvYmppZCsrKTsKKwlzcHJpbnRmKGJ1ZiwgIi4lbHUiLCAqb2JqaWQrKyk7CiAJYnVmICs9IHN0cmxlbihidWYpOwogICAgfQogICAgcmV0dXJuIFNVQ0NFU1M7CkBAIC03NzksMTEgKzc1NywxMyBAQAogICAgICAgICAgICBpY3AgPSBsY3A7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGlmICghZm91bmRfbGFiZWwgJiYgaXNhbHBoYSgoaW50KSpsY3ApKSBmb3VuZF9sYWJlbCA9IDE7CisgICAgICBpZiAoIWZvdW5kX2xhYmVsICYmIGlzYWxwaGEoKHVuc2lnbmVkIGNoYXIpKmxjcCkpIGZvdW5kX2xhYmVsID0gMTsKICAgICAgIGxjcC0tOwogICAgfQogCi0gICBpZiAoIWZvdW5kX2xhYmVsIHx8ICghaXNkaWdpdCgoaW50KSooaWNwKzEpKSAmJiAoZmxhZyAmIEZBSUxfT05fTlVMTF9JSUQpKSkKKyAgIGlmICghZm91bmRfbGFiZWwKKyAgICAgICB8fCAoKGljcCArIDEgPj0gbmFtZSArIGxlbiB8fCAhaXNkaWdpdCgodW5zaWduZWQgY2hhcikqKGljcCsxKSkpCisgICAgICAgICAgICYmIChmbGFnICYgRkFJTF9PTl9OVUxMX0lJRCkpKQogICAgICAgcmV0dXJuKEZBSUxVUkUpOwogCiAgICBpZiAoZmxhZyAmIE5PTl9MRUFGX05BTUUpIHsgLyogZG9udCBrbm93IHdoZXJlIHRvIHN0YXJ0IGluc3RhbmNlIGlkICovCkBAIC05NjEsNyArOTQxLDcgQEAKIAogICAgaWYgKCFzb2lkX3N0ciB8fCAhKnNvaWRfc3RyKSByZXR1cm4gU1VDQ0VTUzsvKiBzdWNjZXNzZnVsbHkgYWRkZWQgbm90aGluZyAqLwogICAgaWYgKCpzb2lkX3N0ciA9PSAnLicpIHNvaWRfc3RyKys7Ci0gICBzb2lkX2J1ZiA9IHN0cmR1cChzb2lkX3N0cik7CisgICBzb2lkX2J1ZiA9IG5ldHNubXBfc3RyZHVwKHNvaWRfc3RyKTsKICAgIGlmICghc29pZF9idWYpCiAgICAgICAgcmV0dXJuIEZBSUxVUkU7CiAgICBjcCA9IHN0cnRva19yKHNvaWRfYnVmLCIuIiwmc3QpOwpAQCAtOTcwLDcgKzk1MCw3IEBACiAgICAgIC8qIGRvaWRfYXJyWygqZG9pZF9hcnJfbGVuKSsrXSA9ICBhdG9pKGNwKTsgKi8KICAgICAgY3AgPSBzdHJ0b2tfcihOVUxMLCIuIiwmc3QpOwogICAgfQotICAgZnJlZShzb2lkX2J1Zik7CisgICBuZXRzbm1wX2ZyZWUoc29pZF9idWYpOwogICAgcmV0dXJuKFNVQ0NFU1MpOwogfQogCkBAIC05OTEsMjcgKzk3MSwyNiBAQAogICAgIGludCByZXQgPSBTVUNDRVNTOwogCiAgICAgaWYgKHBkdS0+dmFyaWFibGVzID09IE5VTEwpewotCXBkdS0+dmFyaWFibGVzID0gdmFycyA9Ci0gICAgICAgICAgIChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiljYWxsb2MoMSxzaXplb2YobmV0c25tcF92YXJpYWJsZV9saXN0KSk7CisJcGR1LT52YXJpYWJsZXMgPSB2YXJzCisgICAgICAgICAgICA9IG5ldHNubXBfY2FsbG9jKDEsIHNpemVvZihuZXRzbm1wX3ZhcmlhYmxlX2xpc3QpKTsKICAgICB9IGVsc2UgewogCWZvcih2YXJzID0gcGR1LT52YXJpYWJsZXM7CiAgICAgICAgICAgICB2YXJzLT5uZXh0X3ZhcmlhYmxlOwogICAgICAgICAgICAgdmFycyA9IHZhcnMtPm5leHRfdmFyaWFibGUpCiAJICAgIC8qRVhJVCovOwotCXZhcnMtPm5leHRfdmFyaWFibGUgPQotICAgICAgICAgICAobmV0c25tcF92YXJpYWJsZV9saXN0ICopY2FsbG9jKDEsc2l6ZW9mKG5ldHNubXBfdmFyaWFibGVfbGlzdCkpOworCXZhcnMtPm5leHRfdmFyaWFibGUgPSBuZXRzbm1wX2NhbGxvYygxLCBzaXplb2YobmV0c25tcF92YXJpYWJsZV9saXN0KSk7CiAJdmFycyA9IHZhcnMtPm5leHRfdmFyaWFibGU7CiAgICAgfQogCiAgICAgdmFycy0+bmV4dF92YXJpYWJsZSA9IE5VTEw7Ci0gICAgdmFycy0+bmFtZSA9IChvaWQgKiltYWxsb2MobmFtZV9sZW5ndGggKiBzaXplb2Yob2lkKSk7CisgICAgdmFycy0+bmFtZSA9IG5ldHNubXBfbWFsbG9jKG5hbWVfbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwogICAgIG1lbWNweSgoY2hhciAqKXZhcnMtPm5hbWUsIChjaGFyICopbmFtZSwgbmFtZV9sZW5ndGggKiBzaXplb2Yob2lkKSk7CiAgICAgdmFycy0+bmFtZV9sZW5ndGggPSBuYW1lX2xlbmd0aDsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgIGNhc2UgVFlQRV9JTlRFR0VSOgogICAgICAgY2FzZSBUWVBFX0lOVEVHRVIzMjoKICAgICAgICAgdmFycy0+dHlwZSA9IEFTTl9JTlRFR0VSOwotICAgICAgICB2YXJzLT52YWwuaW50ZWdlciA9IChsb25nICopbWFsbG9jKHNpemVvZihsb25nKSk7CisgICAgICAgIHZhcnMtPnZhbC5pbnRlZ2VyID0gbmV0c25tcF9tYWxsb2Moc2l6ZW9mKGxvbmcpKTsKICAgICAgICAgaWYgKHZhbCkKICAgICAgICAgICAgICoodmFycy0+dmFsLmludGVnZXIpID0gc3RydG9sKHZhbCxOVUxMLDApOwogICAgICAgICBlbHNlIHsKQEAgLTEwMzQsNyArMTAxMyw3IEBACiAgICAgICBjYXNlIFRZUEVfVUlOVEVHRVI6CiAgICAgICAgIHZhcnMtPnR5cGUgPSBBU05fVUlOVEVHRVI7CiBhc191aW50OgotICAgICAgICB2YXJzLT52YWwuaW50ZWdlciA9IChsb25nICopbWFsbG9jKHNpemVvZihsb25nKSk7CisgICAgICAgIHZhcnMtPnZhbC5pbnRlZ2VyID0gbmV0c25tcF9tYWxsb2Moc2l6ZW9mKGxvbmcpKTsKICAgICAgICAgaWYgKHZhbCkKICAgICAgICAgICAgIHNzY2FuZih2YWwsIiVsdSIsdmFycy0+dmFsLmludGVnZXIpOwogICAgICAgICBlbHNlIHsKQEAgLTEwNTUsMjAgKzEwMzQsMjAgQEAKICAgICAgIGNhc2UgVFlQRV9PUEFRVUU6CiAgICAgICAgIHZhcnMtPnR5cGUgPSBBU05fT0NURVRfU1RSOwogYXNfb2N0OgotICAgICAgICB2YXJzLT52YWwuc3RyaW5nID0gKHVfY2hhciAqKW1hbGxvYyhsZW4pOworICAgICAgICB2YXJzLT52YWwuc3RyaW5nID0gbmV0c25tcF9tYWxsb2MobGVuKTsKICAgICAgICAgdmFycy0+dmFsX2xlbiA9IGxlbjsKICAgICAgICAgaWYgKHZhbCAmJiBsZW4pCiAgICAgICAgICAgICBtZW1jcHkoKGNoYXIgKil2YXJzLT52YWwuc3RyaW5nLCB2YWwsIGxlbik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgcmV0ID0gRkFJTFVSRTsKLSAgICAgICAgICAgIHZhcnMtPnZhbC5zdHJpbmcgPSAodV9jaGFyKilzdHJkdXAoIiIpOworICAgICAgICAgICAgdmFycy0+dmFsLnN0cmluZyA9ICh1X2NoYXIgKikgbmV0c25tcF9zdHJkdXAoIiIpOwogICAgICAgICAgICAgdmFycy0+dmFsX2xlbiA9IDA7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgVFlQRV9JUEFERFI6CiAgICAgICAgIHZhcnMtPnR5cGUgPSBBU05fSVBBRERSRVNTOwotICAgICAgICB2YXJzLT52YWwuaW50ZWdlciA9IChsb25nICopbWFsbG9jKHNpemVvZihpbl9hZGRyX3QpKTsKKyAgICAgICAgdmFycy0+dmFsLmludGVnZXIgPSBuZXRzbm1wX21hbGxvYyhzaXplb2YoaW5fYWRkcl90KSk7CiAgICAgICAgIGlmICh2YWwpCiAgICAgICAgICAgICAqKChpbl9hZGRyX3QgKil2YXJzLT52YWwuaW50ZWdlcikgPSBpbmV0X2FkZHIodmFsKTsKICAgICAgICAgZWxzZSB7CkBAIC0xMDg4LDcgKzEwNjcsNyBAQAogCSAgICByZXQgPSBGQUlMVVJFOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdmFycy0+dmFsX2xlbiAqPSBzaXplb2Yob2lkKTsKLSAgICAgICAgICAgIHZhcnMtPnZhbC5vYmppZCA9IChvaWQgKiltYWxsb2ModmFycy0+dmFsX2xlbik7CisgICAgICAgICAgICB2YXJzLT52YWwub2JqaWQgPSBuZXRzbm1wX21hbGxvYyh2YXJzLT52YWxfbGVuKTsKICAgICAgICAgICAgIG1lbWNweSgoY2hhciAqKXZhcnMtPnZhbC5vYmppZCwgKGNoYXIgKilvaWRidWYsIHZhcnMtPnZhbF9sZW4pOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTEyMCw4ICsxMDk5LDEyIEBACiAgICBsb25nIGNvbW1hbmQgPSBwZHUtPmNvbW1hbmQ7CiAgICAqcmVzcG9uc2UgPSBOVUxMOwogcmV0cnk6Ci0KLSAgIHN0YXR1cyA9IHNubXBfc3luY2hfcmVzcG9uc2Uoc3MsIHBkdSwgcmVzcG9uc2UpOworCWlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKwl7CisJCXN0YXR1cyA9IHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZShzcywgcGR1LCByZXNwb25zZSk7CisJfSBlbHNlIHsKKwkJc3RhdHVzID0gc25tcF9zeW5jaF9yZXNwb25zZShzcywgcGR1LCByZXNwb25zZSk7CisJfTsKIAogICAgaWYgKCgqcmVzcG9uc2UgPT0gTlVMTCkgJiYgKHN0YXR1cyA9PSBTVEFUX1NVQ0NFU1MpKSBzdGF0dXMgPSBTVEFUX0VSUk9SOwogCkBAIC0xMTU4LDEwICsxMTQxLDEwIEBACiAgICAgICAgICAgICAvKiBpbiBTTk1QdjJjLCBTTk1QdjJ1LCBTTk1QdjIqLCBhbmQgU05NUHYzIFBEVXMgKi8KICAgICAgICAgICAgIGNhc2UgU05NUF9FUlJfSU5DT05TSVNURU5UTkFNRToKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICBzdl9jYXRwdihlcnJfc3RyX3N2LAotICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXNubXBfZXJyc3RyaW5nKCgqcmVzcG9uc2UpLT5lcnJzdGF0KSk7Ci0gICAgICAgICAgICAgICBzdl9zZXRpdihlcnJfbnVtX3N2LCAoKnJlc3BvbnNlKS0+ZXJyc3RhdCk7Ci0JICAgICAgIHN2X3NldGl2KGVycl9pbmRfc3YsICgqcmVzcG9uc2UpLT5lcnJpbmRleCk7CisJCQkJc3ZfY2F0cHYoZXJyX3N0cl9zdiwKKwkJCQkJKGNoYXIqKXNubXBfZXJyc3RyaW5nKCgqcmVzcG9uc2UpLT5lcnJzdGF0KSk7CisJCQkJc3Zfc2V0aXYoZXJyX251bV9zdiwgKCpyZXNwb25zZSktPmVycnN0YXQpOworCQkJCXN2X3NldGl2KGVycl9pbmRfc3YsICgqcmVzcG9uc2UpLT5lcnJpbmRleCk7CiAgICAgICAgICAgICAgICBzdGF0dXMgPSAoKnJlc3BvbnNlKS0+ZXJyc3RhdDsKICAgICAgICAgICAgICAgIGJyZWFrOwogCSB9CkBAIC0xMTY5LDEzICsxMTUyLDEyIEBACiAKICAgICAgIGNhc2UgU1RBVF9USU1FT1VUOgogICAgICAgY2FzZSBTVEFUX0VSUk9SOgotICAgICAgICAgIHN2X2NhdHB2KGVycl9zdHJfc3YsIChjaGFyKilzbm1wX2FwaV9lcnJzdHJpbmcoc3MtPnNfc25tcF9lcnJubykpOwotICAgICAgICAgIHN2X3NldGl2KGVycl9udW1fc3YsIHNzLT5zX3NubXBfZXJybm8pOworCSAgICAgc25tcF9yZXR1cm5fZXJyKHNzLCBlcnJfc3RyX3N2LCBlcnJfbnVtX3N2LCBlcnJfaW5kX3N2KTsKICAgICAgICAgIGJyZWFrOwogCiAgICAgICBkZWZhdWx0OgorCSAgICAgc25tcF9yZXR1cm5fZXJyKHNzLCBlcnJfc3RyX3N2LCBlcnJfbnVtX3N2LCBlcnJfaW5kX3N2KTsKICAgICAgICAgIHN2X2NhdHB2KGVycl9zdHJfc3YsICJzZW5kX3N5bmNfcGR1OiB1bmtub3duIHN0YXR1cyIpOwotICAgICAgICAgc3Zfc2V0aXYoZXJyX251bV9zdiwgc3MtPnNfc25tcF9lcnJubyk7CiAgICAgICAgICBicmVhazsKICAgIH0KIApAQCAtMTI0OCw3ICsxMjMwLDEyIEBACiAgICAgICAgIHJlcGx5X3BkdS0+Y29tbWFuZCA9IFNOTVBfTVNHX1JFU1BPTlNFOwogICAgICAgICByZXBseV9wZHUtPnJlcWlkID0gcGR1LT5yZXFpZDsKICAgICAgICAgcmVwbHlfcGR1LT5lcnJzdGF0ID0gcmVwbHlfcGR1LT5lcnJpbmRleCA9IDA7Ci0gICAgICAgIHNubXBfc2VuZChzcywgcmVwbHlfcGR1KTsKKwlpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJeworICAgICAgICAJc25tcF9zZXNzX3NlbmQoc3MsIHJlcGx5X3BkdSk7CisJfSBlbHNlIHsKKwkgICAgICAgIHNubXBfc2VuZChzcywgcmVwbHlfcGR1KTsKKwl9CiAgICAgICB9IGVsc2UgewogICAgICAgICB3YXJuKCJDb3VsZG4ndCBjbG9uZSBQRFUgZm9yIGluZm9ybSByZXNwb25zZSIpOwogICAgICAgfQpAQCAtMTI2Niw3ICsxMjUzLDcgQEAKIAljcCA9IHRyYW5zcG9ydC0+Zl9mbXRhZGRyKHRyYW5zcG9ydCwgcGR1LT50cmFuc3BvcnRfZGF0YSwKIAkJCQkgIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKTsKIAlhdl9wdXNoKHRyYXBsaXN0LCBuZXdTVnB2KGNwLCBzdHJsZW4oY3ApKSk7Ci0JZnJlZShjcCk7CisJbmV0c25tcF9mcmVlKGNwKTsKICAgICAgIH0gZWxzZSB7CiAJLyogIFRoaXMgc2hvdWxkbid0IGV2ZXIgaGFwcGVuOyBldmVyeSBzZXNzaW9uIGhhcyBhIHRyYW5zcG9ydC4gICovCiAJYXZfcHVzaCh0cmFwbGlzdCwgbmV3U1ZwdigiIiwgMCkpOwpAQCAtMTgzMywxMyArMTgyMCwxNyBAQAogICAgKiogc25tcF9hc3luY19zZW5kKCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxaWQgb24gc3VjY2VzcywgMCBvbiBmYWlsdXJlLgogICAgKi8KICAgIGlmIChTdlRSVUUoY29udGV4dC0+cGVybF9jYikpIHsKLSAgICAgIHJlcWlkID0gc25tcF9hc3luY19zZW5kKHNzLCBwZHUsIF9idWxrd2Fsa19hc3luY19jYiwgKHZvaWQgKiljb250ZXh0KTsKKyAgICBpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisgICAgeworICAgICByZXFpZCA9IHNubXBfc2Vzc19hc3luY19zZW5kKHNzLCBwZHUsIF9idWxrd2Fsa19hc3luY19jYiwgKHZvaWQgKiljb250ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICByZXFpZCA9IHNubXBfYXN5bmNfc2VuZChzcywgcGR1LCBfYnVsa3dhbGtfYXN5bmNfY2IsICh2b2lkICopY29udGV4dCk7CisgICAgfQogCiAgICAgICBEQlBSVCgyLChEQk9VVCAiYnVsa3dhbGtfc2VuZF9wZHUoKTogc25tcF9hc3luY19zZW5kID0+IDB4JTA4WFxuIiwgcmVxaWQpKTsKIAogICAgICAgaWYgKHJlcWlkID09IDApIHsKLQkgc3Zfc2V0cHYoKmVycl9zdHJfc3ZwLCAoY2hhciopc25tcF9hcGlfZXJyc3RyaW5nKHNzLT5zX3NubXBfZXJybm8pKTsKLQkgc3Zfc2V0aXYoKmVycl9udW1fc3ZwLCBzcy0+c19zbm1wX2Vycm5vKTsKKwkgc25tcF9yZXR1cm5fZXJyKHNzLCAqZXJyX251bV9zdnAsICplcnJfaW5kX3N2cCwgKmVycl9zdHJfc3ZwKTsKIAkgZ290byBlcnI7CiAgICAgICB9CiAKQEAgLTI0NTcsNiArMjQ0OCw4IEBACiAJVEVTVF9DT05TVEFOVCh2YWx1ZSwgbmFtZSwgU05NUF9ERUZBVUxUX1RJTUVPVVQpOwogCVRFU1RfQ09OU1RBTlQyKHZhbHVlLCBuYW1lLCBTTk1QX0RFRkFVTFRfVkVSU0lPTiwKICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTik7CisJVEVTVF9DT05TVEFOVCh2YWx1ZSwgbmFtZSwgU05NUF9BUElfU0lOR0xFKTsKKwlURVNUX0NPTlNUQU5UKHZhbHVlLCBuYW1lLCBTTk1QX0FQSV9UUkFESVRJT05BTCk7CiAJYnJlYWs7CiAgICAgY2FzZSAnWCc6CiAgICAgICAgICAgICBnb3RvIG5vdF90aGVyZTsKQEAgLTI0NzEsNiArMjQ2NCw0OSBAQAogICAgIHJldHVybiBFTk9FTlQ7CiB9CiAKKy8qIAorICBTaW5jZSBzX3NubXBfZXJybm8gY2FuJ3QgYmUgdHJ1c3RlZCB3aXRoIFNpbmdsZSBTZXNzaW9uLCB0aGlzIGNhbGxzIGVpdGhlcgorICBzbm1wX2Vycm9yIG9yIHNubXBfc2Vzc19lcnJvciB0byBwb3B1bGF0ZSBFcnJvclN0cixFcnJvck51bSwgYW5kIEVycm9ySW5kCisgIGluIFNOTVA6OlNlc3Npb24gb2JqZWN0cworKi8KK3ZvaWQgc25tcF9yZXR1cm5fZXJyKCBzdHJ1Y3Qgc25tcF9zZXNzaW9uICpzcywgU1YgKmVycl9zdHIsIFNWICplcnJfbnVtLCBTViAqZXJyX2luZCApCit7CisJaW50IGVycjsKKwlpbnQgbGliZXJyOworCWNoYXIgKmVycnN0cjsKKwlpZihzcyA9PSBOVUxMKQorCQlyZXR1cm47CisJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCXsKKwkJc25tcF9zZXNzX2Vycm9yKHNzLCAmZXJyLCAmbGliZXJyLCAmZXJyc3RyKTsKKwl9IGVsc2UgeworCQlzbm1wX2Vycm9yKHNzLCAmZXJyLCAmbGliZXJyLCAmZXJyc3RyKTsKKwl9CisJc3ZfY2F0cHYoZXJyX3N0ciwgZXJyc3RyKTsKKwlzdl9zZXRpdihlcnJfbnVtLCBsaWJlcnIpOworCXN2X3NldGl2KGVycl9pbmQsIGVycik7CisJbmV0c25tcF9mcmVlKGVycnN0cik7Cit9CisKKworLyogCisgIGludCBzbm1wX2FwaV9tb2RlKCBpbnQgbW9kZSApIAorICBSZXR1cm5zIG9yIHNldHMgc3RhdGljIGludCBhcGlfbW9kZSBmb3IgcmVmZXJlbmNlIGJ5IGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUKKyAgd2hldGhlciB0byB1c2UgVHJhZGl0aW9uYWwgKG5vbi10aHJlYWRzYWZlKSBvciBTaW5nbGUtU2Vzc2lvbiAodGhyZWFkc2FmZSkKKyAgU05NUCBBUEkgY2FsbHMuCisgCisgIENhbGwgd2l0aCAoaW50KU5VTEwgdG8gcmV0dXJuIHRoZSBjdXJyZW50IG1vZGUsIG9yIHdpdGggU05NUF9BUElfVFJBRElUSU9OQUwKKyAgb3IgU05NUF9BUElfU0lOR0xFIHRvIHNldCB0aGUgY3VycmVudCBtb2RlLiAgKGRlZmluZWQgYWJvdmUpCisgCisgIHBtIHNpZGUgY2FsbCBkZWZhdWx0cyB0byAoaW50KU5VTEwKKyovCitpbnQgc25tcF9hcGlfbW9kZSggaW50IG1vZGUgKQoreworCWlmIChtb2RlID09IDApCisJCXJldHVybiBhcGlfbW9kZTsKKwlhcGlfbW9kZSA9IG1vZGU7CisJcmV0dXJuIGFwaV9tb2RlOworfQogCiBNT0RVTEUgPSBTTk1QCQlQQUNLQUdFID0gU05NUAkJUFJFRklYID0gc25tcAogCkBAIC0yNTAwLDYgKzI1MzYsMTMgQEAKICAgICBDT0RFOgogICAgICAgICBfX2xpYnJhcmllc19pbml0KGFwcG5hbWUpOwogCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKKyMgUGVybCBjYWxsIGRlZmF1bHRzIHRvIChpbnQpTlVMTCB3aGVuIGdpdmVuIG5vIGFyZ3MsIHNvIGl0IHdpbGwgcmV0dXJuCisjIHRoZSBjdXJyZW50IGFwaV9tb2RlIHZhbHVlcworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2ludCAKK3NubXBfYXBpX21vZGUobW9kZT0wKQorCWludCBtb2RlCiAKIFNubXBTZXNzaW9uICoKIHNubXBfbmV3X3Nlc3Npb24odmVyc2lvbiwgY29tbXVuaXR5LCBwZWVyLCBscG9ydCwgcmV0cmllcywgdGltZW91dCkKQEAgLTI1NDUsNyArMjU4OCwxMiBAQAogICAgICAgICAgICBzZXNzaW9uLnRpbWVvdXQgPSB0aW1lb3V0OyAvKiAxMDAwMDAwTCAqLwogICAgICAgICAgICBzZXNzaW9uLmF1dGhlbnRpY2F0b3IgPSBOVUxMOwogCi0gICAgICAgICAgIHNzID0gc25tcF9vcGVuKCZzZXNzaW9uKTsKKwkgICBpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJICAgeworCSAgICAgICAgICAgc3MgPSBzbm1wX3Nlc3Nfb3Blbigmc2Vzc2lvbik7CisJICAgfSBlbHNlIHsKKwkJICAgc3MgPSBzbm1wX29wZW4oJnNlc3Npb24pOworCSAgIH0KIAogICAgICAgICAgICBpZiAoc3MgPT0gTlVMTCkgewogCSAgICAgIGlmICh2ZXJib3NlKSB3YXJuKCJlcnJvcjpzbm1wX25ld19zZXNzaW9uOiBDb3VsZG4ndCBvcGVuIFNOTVAgc2Vzc2lvbiIpOwpAQCAtMjU5Nyw3ICsyNjQ1LDcgQEAKICAgICAgICAgICAgICAgICBnb3RvIGVuZDsKIAkgICB9CiAKLQkgICBzZXNzaW9uLnBlZXJuYW1lID0gc3RyZHVwKHBlZXIpOworCSAgIHNlc3Npb24ucGVlcm5hbWUgPSBwZWVyOwogICAgICAgICAgICBzZXNzaW9uLnJldHJpZXMgPSByZXRyaWVzOyAvKiA1ICovCiAgICAgICAgICAgIHNlc3Npb24udGltZW91dCA9IHRpbWVvdXQ7IC8qIDEwMDAwMDBMICovCiAgICAgICAgICAgIHNlc3Npb24uYXV0aGVudGljYXRvciA9IE5VTEw7CkBAIC0yNzE0LDE0ICsyNzYyLDI0IEBACiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgc3MgPSBzbm1wX29wZW4oJnNlc3Npb24pOworCSAgIGlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKwkgICB7CisJICAgICAgICAgICBzcyA9IHNubXBfc2Vzc19vcGVuKCZzZXNzaW9uKTsKKwkgICB9IGVsc2UgeworCQkgICBzcyA9IHNubXBfb3Blbigmc2Vzc2lvbik7CisJICAgfQogCiAgICAgICAgICAgIGlmIChzcyA9PSBOVUxMKSB7CiAJICAgICAgaWYgKHZlcmJvc2UpIHdhcm4oImVycm9yOnNubXBfbmV3X3YzX3Nlc3Npb246Q291bGRuJ3Qgb3BlbiBTTk1QIHNlc3Npb24iKTsKICAgICAgICAgICAgfQogICAgICAgICBlbmQ6CiAgICAgICAgICAgIFJFVFZBTCA9IHNzOwotCSAgIGZyZWUgKHNlc3Npb24uY29udGV4dEVuZ2luZUlEKTsKKwkgICBuZXRzbm1wX2ZyZWUoc2Vzc2lvbi5zZWN1cml0eVByaXZMb2NhbEtleSk7CisJICAgbmV0c25tcF9mcmVlKHNlc3Npb24uc2VjdXJpdHlQcml2UHJvdG8pOworCSAgIG5ldHNubXBfZnJlZShzZXNzaW9uLnNlY3VyaXR5QXV0aExvY2FsS2V5KTsKKwkgICBuZXRzbm1wX2ZyZWUoc2Vzc2lvbi5zZWN1cml0eUF1dGhQcm90byk7CisJICAgbmV0c25tcF9mcmVlKHNlc3Npb24uY29udGV4dEVuZ2luZUlEKTsKKwkgICBuZXRzbm1wX2ZyZWUoc2Vzc2lvbi5zZWN1cml0eUVuZ2luZUlEKTsKIAl9CiAgICAgICAgIE9VVFBVVDoKICAgICAgICAgUkVUVkFMCkBAIC0yNzY4LDggKzI4MjYsOCBAQAogCSAgIH0KICAgICAgICAgICAgLyogV0FSTklORyBMRUFLQUdFIGJ1dCBJIGNhbnQgZnJlZSBsaWIgbWVtb3J5IHVuZGVyIHdpbjMyICovCiAgICAgICAgICAgIHNzLT5jb21tdW5pdHlfbGVuID0gc3RybGVuKChjaGFyICopY29tbXVuaXR5KTsKLSAgICAgICAgICAgc3MtPmNvbW11bml0eSA9ICh1X2NoYXIgKilzdHJkdXAoY29tbXVuaXR5KTsKLQkgICBzcy0+cGVlcm5hbWUgPSBzdHJkdXAocGVlcik7CisgICAgICAgICAgIHNzLT5jb21tdW5pdHkgPSAodV9jaGFyICopbmV0c25tcF9zdHJkdXAoY29tbXVuaXR5KTsKKwkgICBzcy0+cGVlcm5hbWUgPSBuZXRzbm1wX3N0cmR1cChwZWVyKTsKIAkgICBzcy0+bG9jYWxfcG9ydCA9IGxwb3J0OwogICAgICAgICAgICBzcy0+cmV0cmllcyA9IHJldHJpZXM7IC8qIDUgKi8KICAgICAgICAgICAgc3MtPnRpbWVvdXQgPSB0aW1lb3V0OyAvKiAxMDAwMDAwTCAqLwpAQCAtMzAxMSwxNSArMzA2OSwxOSBAQAogICAgICAgICAgICAgICAgICB4c19jYl9kYXRhLT5wZXJsX2NiID0gbmV3U1ZzdihwZXJsX2NhbGxiYWNrKTsKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+c2Vzc19yZWYgPSBuZXdSVl9pbmMoU3ZSVihzZXNzX3JlZikpOwogCisJCWlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKwkJeworICAgICAgICAgICAgICAgICBzdGF0dXMgPSBzbm1wX3Nlc3NfYXN5bmNfc2VuZChzcywgcGR1LCBfX3NubXBfeHNfY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopeHNfY2JfZGF0YSk7CisJCX0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHNubXBfYXN5bmNfc2VuZChzcywgcGR1LCBfX3NubXBfeHNfY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopeHNfY2JfZGF0YSk7CisJCX0KICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIFhQVVNIcyhzdl8ybW9ydGFsKG5ld1NWaXYoc3RhdHVzKSkpOyAvKiBwdXNoIHRoZSByZXFpZD8/ICovCiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUocGR1KTsKLSAgICAgICAgICAgICAgICAgICAgc3ZfY2F0cHYoKmVycl9zdHJfc3ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopc25tcF9hcGlfZXJyc3RyaW5nKHNzLT5zX3NubXBfZXJybm8pKTsKLSAgICAgICAgICAgICAgICAgICAgc3Zfc2V0aXYoKmVycl9udW1fc3ZwLCBzcy0+c19zbm1wX2Vycm5vKTsKKwkJCQkJc25tcF9yZXR1cm5fZXJyKHNzLCAqZXJyX3N0cl9zdnAsICplcnJfbnVtX3N2cCwgKmVycl9pbmRfc3ZwKTsKICAgICAgICAgICAgICAgICAgICAgWFBVU0hzKCZzdl91bmRlZik7CiAgICAgICAgICAgICAgICAgIH0KIAkJIGdvdG8gZG9uZTsKQEAgLTMxOTQsMTUgKzMyNTYsMTkgQEAKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+cGVybF9jYiA9IG5ld1NWc3YocGVybF9jYWxsYmFjayk7CiAgICAgICAgICAgICAgICAgIHhzX2NiX2RhdGEtPnNlc3NfcmVmID0gbmV3U1ZzdihzZXNzX3JlZik7CiAKKwkJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCQl7CisJCSBzdGF0dXMgPSBzbm1wX3Nlc3NfYXN5bmNfc2VuZChzcywgcGR1LCBfX3NubXBfeHNfY2IsCisJCQkJCSAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9IGVsc2UgewogICAgICAgICAgICAgICAgICBzdGF0dXMgPSBzbm1wX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9CiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVml2KHN0YXR1cykpKTsgLyogcHVzaCB0aGUgcmVxaWQ/PyAqLwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X2NhdHB2KCplcnJfc3RyX3N2cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXNubXBfYXBpX2VycnN0cmluZyhzcy0+c19zbm1wX2Vycm5vKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X3NldGl2KCplcnJfbnVtX3N2cCwgc3MtPnNfc25tcF9lcnJubyk7CisJICAJICAgIHNubXBfcmV0dXJuX2VycihzcywgKmVycl9udW1fc3ZwLCAqZXJyX2luZF9zdnAsICplcnJfc3RyX3N2cCk7ICAKICAgICAgICAgICAgICAgICAgICAgWFBVU0hzKCZzdl91bmRlZik7CiAgICAgICAgICAgICAgICAgIH0KIAkJIGdvdG8gZG9uZTsKQEAgLTM0MzEsMTUgKzM0OTcsMTkgQEAKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+cGVybF9jYiA9IG5ld1NWc3YocGVybF9jYWxsYmFjayk7CiAgICAgICAgICAgICAgICAgIHhzX2NiX2RhdGEtPnNlc3NfcmVmID0gbmV3U1ZzdihzZXNzX3JlZik7CiAKKwkJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCQl7CisgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHNubXBfc2Vzc19hc3luY19zZW5kKHNzLCBwZHUsIF9fc25tcF94c19jYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKil4c19jYl9kYXRhKTsKKwkJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgc3RhdHVzID0gc25tcF9hc3luY19zZW5kKHNzLCBwZHUsIF9fc25tcF94c19jYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKil4c19jYl9kYXRhKTsKKwkJfQogICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZpdihzdGF0dXMpKSk7IC8qIHB1c2ggdGhlIHJlcWlkPz8gKi8KICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3BkdShwZHUpOwotICAgICAgICAgICAgICAgICAgICBzdl9jYXRwdigqZXJyX3N0cl9zdnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKilzbm1wX2FwaV9lcnJzdHJpbmcoc3MtPnNfc25tcF9lcnJubykpOwotICAgICAgICAgICAgICAgICAgICBzdl9zZXRpdigqZXJyX251bV9zdnAsIHNzLT5zX3NubXBfZXJybm8pOworCQkJCQlzbm1wX3JldHVybl9lcnIoc3MsICplcnJfbnVtX3N2cCwgKmVycl9pbmRfc3ZwLCAqZXJyX3N0cl9zdnApOwogICAgICAgICAgICAgICAgICAgICBYUFVTSHMoJnN2X3VuZGVmKTsKICAgICAgICAgICAgICAgICAgfQogCQkgZ290byBkb25lOwpAQCAtMzY2OSwxNSArMzczOSwxOSBAQAogICAgICAgICAgICAgICAgICB4c19jYl9kYXRhLT5wZXJsX2NiID0gbmV3U1ZzdihwZXJsX2NhbGxiYWNrKTsKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+c2Vzc19yZWYgPSBuZXdTVnN2KHNlc3NfcmVmKTsKIAorCQlpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJCXsKKyAgICAgICAgICAgICAgICAgc3RhdHVzID0gc25tcF9zZXNzX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9IGVsc2UgewogICAgICAgICAgICAgICAgICBzdGF0dXMgPSBzbm1wX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9CiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVml2KHN0YXR1cykpKTsgLyogcHVzaCB0aGUgcmVxaWQ/PyAqLwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X2NhdHB2KCplcnJfc3RyX3N2cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXNubXBfYXBpX2VycnN0cmluZyhzcy0+c19zbm1wX2Vycm5vKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X3NldGl2KCplcnJfbnVtX3N2cCwgc3MtPnNfc25tcF9lcnJubyk7CisJCQkJCXNubXBfcmV0dXJuX2VycihzcywgKmVycl9udW1fc3ZwLCAqZXJyX2luZF9zdnAsICplcnJfc3RyX3N2cCk7CiAgICAgICAgICAgICAgICAgICAgIFhQVVNIcygmc3ZfdW5kZWYpOwogICAgICAgICAgICAgICAgICB9CiAJCSBnb3RvIGRvbmU7CkBAIC00MDI4LDcgKzQxMDIsNyBAQAogCSAgICAgIH0KIAogCSAgICAgIC8qIFNlbnQgb2theS4uLiAgUmV0dXJuIHRoZSByZXF1ZXN0IElEIGluICdwZHUnIGFzIGFuIFN2SVYuICovCi0JICAgICAgREJQUlQoMSwoREJPVVQgIk9rYXksIHJlcXVlc3QgaWQgaXMgJXBcbiIsIHBkdSkpOworCSAgICAgIERCUFJUKDEsKERCT1VUICJPa2F5LCByZXF1ZXN0IGlkIGlzICVsZFxuIiwgKGxvbmcpKGludHB0cl90KXBkdSkpOwogLyoJICAgICAgWFNSRVRVUk5fSVYoKGludHB0cl90KXBkdSk7ICovCiAJICAgICAgWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZpdigoSVYpcGR1KSkpOwogCSAgICAgIFhTUkVUVVJOKDEpOwpAQCAtNDIwOCw3ICs0MjgyLDcgQEAKICAgICAgICAgICAgICAgfSAvKiBmb3IgYWxsIHRoZSB2YXJzICovCiAgICAgICAgICAgICAgIH0KIAotCSAgICAgIHBkdS0+ZW50ZXJwcmlzZSA9IChvaWQgKiltYWxsb2MoIE1BWF9PSURfTEVOICogc2l6ZW9mKG9pZCkpOworCSAgICAgIHBkdS0+ZW50ZXJwcmlzZSA9IChvaWQgKiluZXRzbm1wX21hbGxvYyhNQVhfT0lEX0xFTiAqIHNpemVvZihvaWQpKTsKICAgICAgICAgICAgICAgdHAgPSBfX3RhZzJvaWQoZW50ZXJwcmlzZSxOVUxMLCBwZHUtPmVudGVycHJpc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwZHUtPmVudGVycHJpc2VfbGVuZ3RoLCBOVUxMLCBiZXN0X2d1ZXNzKTsKICAgCSAgICAgIGlmIChwZHUtPmVudGVycHJpc2VfbGVuZ3RoID09IDApIHsKQEAgLTQyMTksMTIgKzQyOTMsMTIgQEAKIAkJICBhZ2VudC1hZGRyZXNzIGZpZWxkIHRvIHRoYXQuICBPdGhlcndpc2Ugc2V0IGl0IHRvCiAJCSAgb3VyIGFkZHJlc3MuICAqLwogICAgICAgICAgICAgICBpZiAoYWdlbnQgJiYgc3RybGVuKGFnZW50KSkgewotICAgICAgICAgICAgICAgICBpZiAoX19wYXJzZV9hZGRyZXNzKGFnZW50KSA9PSAtMSAmJiB2ZXJib3NlKSB7Ci0JCSAgIHdhcm4oImVycm9yOnRyYXA6aW52YWxpZCBhZ2VudCBhZGRyZXNzOiAlcyIsIGFnZW50KTsKLQkJICAgZ290byBlcnI7Ci0gICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0JCSAgICooKGluX2FkZHJfdCAqKXBkdS0+YWdlbnRfYWRkcikgPSBfX3BhcnNlX2FkZHJlc3MoYWdlbnQpOwotCQkgfQorICAgICAgICAgICAgICAgICBpZiAoMCA+IG5ldHNubXBfZ2V0aG9zdGJ5bmFtZV92NChhZ2VudCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluX2FkZHJfdCAqKXBkdS0+YWdlbnRfYWRkcikpeworICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgd2FybigiZXJyb3I6dHJhcDppbnZhbGlkIGFnZW50IGFkZHJlc3M6ICVzIiwgYWdlbnQpOworICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICooKGluX2FkZHJfdCAqKXBkdS0+YWdlbnRfYWRkcikgPSBnZXRfbXlhZGRyKCk7CiAgICAgICAgICAgICAgIH0KQEAgLTQyMzIsOSArNDMwNiwxNCBAQAogICAgICAgICAgICAgICBwZHUtPnNwZWNpZmljX3R5cGUgPSBzcGVjaWZpYzsKICAgICAgICAgICAgICAgcGR1LT50aW1lID0gdXB0aW1lOwogCi0gICAgICAgICAgICAgIGlmIChzbm1wX3NlbmQoc3MsIHBkdSkgPT0gMCkgeworCSAgICAgaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCSAgICAgeworCQlpZihzbm1wX3Nlc3Nfc2VuZChzcyxwZHUpID09IDApCisJCQlzbm1wX2ZyZWVfcGR1KHBkdSk7CisJICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBpZiAoc25tcF9zZW5kKHNzLCBwZHUpID09IDApIAogCSAgICAgICAgIHNubXBfZnJlZV9wZHUocGR1KTsKLSAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZwdihaRVJPX0JVVF9UUlVFLDApKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiBlcnI6CkBAIC00MzY1LDkgKzQ0NDQsMTQgQEAKICAgICAgICAgICAgICAgICAgfSAvKiBpZiB2YXJfcmVmIGlzIG9rICovCiAgICAgICAgICAgICAgIH0gLyogZm9yIGFsbCB0aGUgdmFycyAqLwogCi0gICAgICAgICAgICAgIGlmIChzbm1wX3NlbmQoc3MsIHBkdSkgPT0gMCkgeworCSAgICAgaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCSAgICAgeworICAgICAgICAgICAgICBpZiAoc25tcF9zZXNzX3NlbmQoc3MsIHBkdSkgPT0gMCkKIAkgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7Ci0gICAgICAgICAgICAgIH0KKwkgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGlmIChzbm1wX3NlbmQoc3MsIHBkdSkgPT0gMCkgCisJICAgICAgICAgc25tcF9mcmVlX3BkdShwZHUpOworICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVnB2KFpFUk9fQlVUX1RSVUUsMCkpKTsKICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ1MTEsMTUgKzQ1OTUsMTkgQEAKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+cGVybF9jYiA9IG5ld1NWc3YocGVybF9jYWxsYmFjayk7CiAgICAgICAgICAgICAgICAgIHhzX2NiX2RhdGEtPnNlc3NfcmVmID0gbmV3UlZfaW5jKFN2UlYoc2Vzc19yZWYpKTsKIAorCQlpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJCXsKKyAgICAgICAgICAgICAgICAgc3RhdHVzID0gc25tcF9zZXNzX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9IGVsc2UgewogICAgICAgICAgICAgICAgICBzdGF0dXMgPSBzbm1wX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9CiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVml2KHN0YXR1cykpKTsgLyogcHVzaCB0aGUgcmVxaWQ/PyAqLwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X2NhdHB2KCplcnJfc3RyX3N2cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXNubXBfYXBpX2VycnN0cmluZyhzcy0+c19zbm1wX2Vycm5vKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X3NldGl2KCplcnJfbnVtX3N2cCwgc3MtPnNfc25tcF9lcnJubyk7CisJCQkJCXNubXBfcmV0dXJuX2VycihzcywgKmVycl9udW1fc3ZwLCAqZXJyX2luZF9zdnAsICplcnJfc3RyX3N2cCk7CiAgICAgICAgICAgICAgICAgICAgIFhQVVNIcygmc3ZfdW5kZWYpOwogICAgICAgICAgICAgICAgICB9CiAJCSBnb3RvIGRvbmU7CkBAIC00Nzc1LDExICs0ODYzLDE4IEBACiAJfQogCiAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBOb3RlOiBzcz0oU25tcFNlc3Npb24qKU5VTEwgaXMgc28gJlNOTVA6Ok1haW5Mb29wKCkgY2FuIHN0aWxsIGJlIGNhbGxlZCAKKyMgd2l0aG91dCBhIHNlc3MgaGFuZGxlciBhcmd1bWVudCwgdGhpcyB3YXkgSSdtIG5vdCBicmVha2luZyBhbnlvbmUncyBvbGQgY29kZQorIworIyBzZWUgTWFpbkxvb3AoKSBpbiBTTk1QLnBtIGZvciBtb3JlIGRldGFpbHMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdm9pZAotc25tcF9tYWluX2xvb3AodGltZW91dF9zZWMsdGltZW91dF91c2VjLHBlcmxfY2FsbGJhY2spCitzbm1wX21haW5fbG9vcCh0aW1lb3V0X3NlYyx0aW1lb3V0X3VzZWMscGVybF9jYWxsYmFjayxzcz0oU25tcFNlc3Npb24qKU5VTEwpCiAJaW50IAl0aW1lb3V0X3NlYwogCWludCAJdGltZW91dF91c2VjCiAJU1YgKglwZXJsX2NhbGxiYWNrCisJU25tcFNlc3Npb24gKnNzCiAJQ09ERToKIAl7CiAgICAgICAgIGludCBudW1mZHMsIGZkX2NvdW50OwpAQCAtNDc5MSw3ICs0ODg2LDYgQEAKICAgICAgICAgaW50IGJsb2NrOwogCVNWICpjYjsKIAotCiAgCW1haW5sb29wX2ZpbmlzaCA9IDA7CiAKIAlpdHZwID0gJmludGVydmFsOwpAQCAtNDgwOSw3ICs0OTAzLDEyIEBACiAgICAgICAgICAgIGJsb2NrID0gMTsKICAgICAgICAgICAgdHZwID0gJnRpbWVfdmFsOwogICAgICAgICAgICB0aW1lcmNsZWFyKHR2cCk7CisJICBpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJICB7CisgICAgICAgICAgIHNubXBfc2Vzc19zZWxlY3RfaW5mbyhzcywmbnVtZmRzLCAmZmRzZXQsIHR2cCwgJmJsb2NrKTsKKwkgIH0gZWxzZSB7CiAgICAgICAgICAgIHNubXBfc2VsZWN0X2luZm8oJm51bWZkcywgJmZkc2V0LCB0dnAsICZibG9jayk7CisJICB9CiAgICAgICAgICAgIF9fcmVjYWxjX3RpbWVvdXQodHZwLGN0dnAsbHR2cCxpdHZwLCZibG9jayk7CiAgICAgICAgICAgICMgcHJpbnRmKCJwcmUtc2VsZWN0OiBudW1mZHMgPSAlbGQsIGJsb2NrID0gJWxkXG4iLCBudW1mZHMsIGJsb2NrKTsKICAgICAgICAgICAgaWYgKGJsb2NrID09IDEpIHR2cCA9IE5VTEw7IC8qIGJsb2NrIHdpdGhvdXQgdGltZW91dCAqLwpAQCAtNDgxOCw3ICs0OTE3LDEyIEBACiAgICAgICAgICAgIGlmIChmZF9jb3VudCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgRU5URVI7CiAgICAgICAgICAgICAgICAgICAgICAgIFNBVkVUTVBTOwotICAgICAgICAgICAgICBzbm1wX3JlYWQoJmZkc2V0KTsKKwkJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCQl7CisJCSAgc25tcF9zZXNzX3JlYWQoc3MsICZmZHNldCk7CisJCX0gZWxzZSB7CisgICAgICAgICAgICAgIAkgIHNubXBfcmVhZCgmZmRzZXQpOworCQl9CiAgICAgICAgICAgICAgICAgICAgICAgIEZSRUVUTVBTOwogICAgICAgICAgICAgICAgICAgICAgICBMRUFWRTsKIApAQCAtNDgyNyw3ICs0OTMxLDEyIEBACiAJCSBTUEFHQUlOOwogCQkgRU5URVI7CiAJCSBTQVZFVE1QUzsKKwkJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCQl7CisJCXNubXBfc2Vzc190aW1lb3V0KCBzcyApOworCQl9IGVsc2UgeyAKICAgICAgICAgICAgICAgICAgc25tcF90aW1lb3V0KCk7CisJCX0KICAgICAgICAgICAgICAgICAgaWYgKCF0aW1lcmlzc2V0KGN0dnApKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChTdlRSVUUocGVybF9jYWxsYmFjaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLyogc3ZfMm1vcnRhbChwZXJsX2NhbGxiYWNrKTsgKi8KQEAgLTUwNDUsOSArNTE1NCw3IEBACiAJICAgICAgICAgIC8qIHdlIG11c3QgYmUgbG9va2luZyBhdCBkZXNjcmlwdGlvbiAqLwogICAgICAgICAgICAgICAgICBzdl9zZXRwdihyZXQsdHAtPmRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgJ2knOiAvKiBpbmRleGVzICovCi0gICAgICAgICAgICAgICAgIGlmIChzdHJuY21wKCJpbmRleGVzIiwga2V5LCBzdHJsZW4oa2V5KSkpIGJyZWFrOwotICAgICAgICAgICAgICAgICBpbmRleF9hdiA9IG5ld0FWKCk7CisgICAgICAgICAgICAgIGNhc2UgJ2knOiAvKiBpbmRleGVzLCBpbXBsaWVkICovCiAgICAgICAgICAgICAgICAgIGlmICh0cC0+YXVnbWVudHMpIHsKICAJICAgICAgICAgICAgIGNsZWFyX3RyZWVfZmxhZ3MoZ2V0X3RyZWVfaGVhZCgpKTsgCiAgICAgICAgICAgICAgICAgICAgICB0cHRtcCA9IGZpbmRfYmVzdF90cmVlX25vZGUodHAtPmF1Z21lbnRzLCBnZXRfdHJlZV9oZWFkKCksIE5VTEwpOwpAQCAtNTA1Nyw2ICs1MTY0LDE5IEBACiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICB0cHRtcCA9IHRwOwogICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGlmIChzdHJjbXAoImltcGxpZWQiLCBrZXkpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgIC8qIG9ubHkgdGhlIGxhc3QgaW5kZXggY2FuIGJlIGltcGxpZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgIGludCBpc2ltcGxpZWQgPSAwOworICAgICAgICAgICAgICAgICAgICAgaWYgKHRwdG1wICYmIHRwdG1wLT5pbmRleGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGlwPXRwdG1wLT5pbmRleGVzOyBpcC0+bmV4dDsgaXAgPSBpcC0+bmV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpc2ltcGxpZWQgPSBpcC0+aXNpbXBsaWVkOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgc3Zfc2V0aXYocmV0LCBpc2ltcGxpZWQpOworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgaWYgKHN0cm5jbXAoImluZGV4ZXMiLCBrZXksIHN0cmxlbihrZXkpKSkgYnJlYWs7CisgICAgICAgICAgICAgICAgIGluZGV4X2F2ID0gbmV3QVYoKTsKICAgICAgICAgICAgICAgICAgaWYgKHRwdG1wKQogICAgICAgICAgICAgICAgICAgICAgZm9yKGlwPXRwdG1wLT5pbmRleGVzOyBpcCAhPSBOVUxMOyBpcCA9IGlwLT5uZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYXZfcHVzaChpbmRleF9hdixuZXdTVnB2KChpcC0+aWxhYmVsKSxzdHJsZW4oaXAtPmlsYWJlbCkpKTsKQEAgLTUyMzgsNiArNTM1OCwxNCBAQAogCVNubXBTZXNzaW9uICpzZXNzX3B0cgogCUNPREU6CiAJeworCWlmKHNlc3NfcHRyICE9IE5VTEwpCisJeworIAkgaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCSB7CisgICAgICAgICAgIHNubXBfc2Vzc19jbG9zZSggc2Vzc19wdHIgKTsKKwkgfSBlbHNlIHsgCiAgICAgICAgICAgIHNubXBfY2xvc2UoIHNlc3NfcHRyICk7CisJIH0KKwl9CiAJfQogCmRpZmYgLS1naXQgYS9wZXJsL1NOTVAvdC9zdGFydGFnZW50LnBsIGIvcGVybC9TTk1QL3Qvc3RhcnRhZ2VudC5wbAppbmRleCA5NWNkMzhlLi4zZTkyYzEyIDEwMDY0NAotLS0gYS9wZXJsL1NOTVAvdC9zdGFydGFnZW50LnBsCisrKyBiL3BlcmwvU05NUC90L3N0YXJ0YWdlbnQucGwKQEAgLTM5LDQzICszOSw1MCBAQAogICByZXF1aXJlIFdpbjMyOjpQcm9jZXNzOwogfQogCi1zdWIgc25tcHRlc3RfY2xlYW51cCB7Ci0gICAgc2xlZXAgMTsgIyBzdHJhbmdlbHkgd2UgbmVlZCB0byB3YWl0IGZvciBwaWQgZmlsZXMgdG8gYXBwZWFyID8/Ci0gICAgaWYgKCgtZSAidC9zbm1wZC5waWQiKSAmJiAoLXIgInQvc25tcGQucGlkIikpIHsKLSAgICAgICAgI3dhcm4gIlxuU3RvcHBpbmcgYWdlbnRzIGZvciB0ZXN0IHNjcmlwdCAkMFxuIjsKLSAgICAgICAgIyBNYWtpbmcgc3VyZSB0aGF0IGFueSBydW5uaW5nIGFnZW50cyBhcmUga2lsbGVkLgotCSMgd2FybiAia2lsbGluZyBzbm1wZDoiLCBgY2F0IHQvc25tcGQucGlkYCwgIlxuIjsKLSAgICAgICAgaWYgKCReTyAhfiAvd2luMzIvaSkgewotICAgICAgICAgIHN5c3RlbSAia2lsbCBgY2F0IHQvc25tcGQucGlkYCA+IC9kZXYvbnVsbCAyPiYxIjsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBvcGVuKEgsICI8dC9zbm1wZC5waWQiKTsKLSAgICAgICAgICBteSAkcGlkID0gKDxIPik7Ci0gICAgICAgICAgY2xvc2UgKEgpOwotICAgICAgICAgIGlmICgkcGlkID4gMCkgewotICAgICAgICAgICAgV2luMzI6OlByb2Nlc3M6OktpbGxQcm9jZXNzKCRwaWQsIDApCi0gICAgICAgICAgfQotICAgICAgICB9Ci0JdW5saW5rICJ0L3NubXBkLnBpZCI7CitzdWIgcnVuX2FzeW5jIHsKKyAgbXkgKCRwaWRmaWxlLCAkY21kLCBAYXJncykgPSBAXzsKKyAgaWYgKC1yICIkY21kIiBhbmQgLXggIiRjbWQiKSB7CisgICAgaWYgKCReTyA9fiAvd2luMzIvaSkgeworICAgICAgJGNtZCA9fiBzL1wvL1xcL2c7CisgICAgICBzeXN0ZW0gInN0YXJ0IFwiJGNtZFwiIC9taW4gY21kIC9jIFwiJGNtZCBAYXJncyAyPiYxXCIiOworICAgIH0gZWxzZSB7CisgICAgICBzeXN0ZW0gIiRjbWQgQGFyZ3MgMj4mMSI7CiAgICAgfQotICAgIGlmICgoLWUgInQvc25tcHRyYXBkLnBpZCIpICYmICgtciAidC9zbm1wdHJhcGQucGlkIikpIHsKLSAgICAgICAgIyBNYWtpbmcgc3VyZSB0aGF0IGFueSBydW5uaW5nIGFnZW50cyBhcmUga2lsbGVkLgotCSMgd2FybiAia2lsbGluZyBzbm1wdHJhcDoiLCBgY2F0IHQvc25tcHRyYXBkLnBpZGAsICJcbiI7Ci0gICAgICAgIGlmICgkXk8gIX4gL3dpbjMyL2kpIHsKLSAgICAgICAgICBzeXN0ZW0gImtpbGwgYGNhdCB0L3NubXB0cmFwZC5waWRgID4gL2Rldi9udWxsIDI+JjEiOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIG9wZW4oSCwgIjx0L3NubXB0cmFwZC5waWQiKTsKLSAgICAgICAgICBteSAkcGlkID0gKDxIPik7Ci0gICAgICAgICAgY2xvc2UgKEgpOwotICAgICAgICAgIGlmICgkcGlkID4gMCkgewotICAgICAgICAgICAgV2luMzI6OlByb2Nlc3M6OktpbGxQcm9jZXNzKCRwaWQsIDApCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgICAgCi0JdW5saW5rICJ0L3NubXB0cmFwZC5waWQiOworICAgICMgV2FpdCBhdCBtb3N0IHRocmVlIHNlY29uZHMgZm9yIHRoZSBwaWQgZmlsZSB0byBhcHBlYXIuCisgICAgZm9yICgkaSA9IDA7ICgkaSA8IDMpICYmICEgKC1yICIkcGlkZmlsZSIpOyArKyRpKSB7CisgICAgICBzbGVlcCAxOwogICAgIH0KKyAgfSBlbHNlIHsKKyAgICB3YXJuICJDb3VsZG4ndCBydW4gJGNtZFxuIjsKKyAgfQogfQorCitzdWIgc25tcHRlc3RfY2xlYW51cCB7CisgIGtpbGxfYnlfcGlkX2ZpbGUoInQvc25tcGQucGlkIik7CisgIHVubGluaygidC9zbm1wZC5waWQiKTsKKyAga2lsbF9ieV9waWRfZmlsZSgidC9zbm1wdHJhcGQucGlkIik7CisgIHVubGluaygidC9zbm1wdHJhcGQucGlkIik7Cit9CisKK3N1YiBraWxsX2J5X3BpZF9maWxlIHsKKyAgaWYgKCgtZSAiJF9bMF0iKSAmJiAoLXIgIiRfWzBdIikpIHsKKyAgICBpZiAoJF5PICF+IC93aW4zMi9pKSB7CisgICAgICAjIFVuaXggb3IgV2luZG93cyArIEN5Z3dpbi4KKyAgICAgIHN5c3RlbSAia2lsbCBgY2F0ICRfWzBdYCA+IC9kZXYvbnVsbCAyPiYxIjsKKyAgICB9IGVsc2UgeworICAgICAgIyBXaW5kb3dzICsgTVNWQyBvciBXaW5kb3dzICsgTWluR1cuCisgICAgICBvcGVuKEgsICI8JF9bMF0iKTsKKyAgICAgIG15ICRwaWQgPSAoPEg+KTsKKyAgICAgIGNsb3NlIChIKTsKKyAgICAgIGlmICgkcGlkID4gMCkgeworICAgICAgICBXaW4zMjo6UHJvY2Vzczo6S2lsbFByb2Nlc3MoJHBpZCwgMCkKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworCisjIFN0b3AgYW55IHByb2Nlc3NlcyBzdGFydGVkIGR1cmluZyBhIHByZXZpb3VzIHRlc3QuCiBzbm1wdGVzdF9jbGVhbnVwKCk7CiAKICNPcGVuIHRoZSBzbm1wdGVzdC5jbWQgZmlsZSBhbmQgZ2V0IHRoZSBpbmZvCkBAIC05OCw0OCArMTA1LDIxIEBACiAgIGRpZSAoIkNvdWxkIG5vdCBzdGFydCBhZ2VudC4gQ291bGRuJ3QgZmluZCBzbm1wdGVzdC5jbWQgZmlsZVxuIik7CiB9CiAKKyMgU3RhcnQgc25tcGQgYW5kIHNubXB0cmFwZC4KKwogI3dhcm4gIlxuU3RhcnRpbmcgYWdlbnRzIGZvciB0ZXN0IHNjcmlwdCAkMFxuIjsKIAotaWYgKCReTyAhfiAvd2luMzIvaSkgewotICAjIFVuaXgKLSAgaWYgKCRzbm1wZF9jbWQpIHsKLSAgICBpZiAoLXIgJHNubXBkX2NtZCBhbmQgLXggJHNubXBkX2NtZCkgewotICAgICAgJGJhc2VkaXIgPSBgcHdkYDsKLSAgICAgIGNob21wICRiYXNlZGlyOwotICAgICAgc3lzdGVtICIkc25tcGRfY21kIC1yIC1MZiB0L3NubXB0ZXN0LmxvZyAtTSskbWliZGlyIC1DIC1jICRiYXNlZGlyL3Qvc25tcHRlc3QuY29uZiAtcCAkYmFzZWRpci90L3NubXBkLnBpZCAke2FnZW50X2hvc3R9OiR7YWdlbnRfcG9ydH0gPiAvZGV2L251bGwgMj4mMSI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHdhcm4oIkNvdWxkbid0IHJ1biBzbm1wZFxuIik7Ci0gICAgfQotICB9Ci0gIGlmICgkc25tcHRyYXBkX2NtZCkgewotICAgIGlmICgtciAkc25tcHRyYXBkX2NtZCBhbmQgLXggJHNubXB0cmFwZF9jbWQpIHsKLSAgICAgIHN5c3RlbSAiJHNubXB0cmFwZF9jbWQgLXAgdC9zbm1wdHJhcGQucGlkIC1NKyRtaWJkaXIgLUMgLWMgdC9zbm1wdGVzdC5jb25mIC1DICR7YWdlbnRfaG9zdH06JHt0cmFwX3BvcnR9ID4gL2Rldi9udWxsIDI+JjEiOwotICAgIH0gZWxzZSB7Ci0gICAgICB3YXJuKCJDb3VsZG4ndCBydW4gc25tcHRyYXBkXG4iKTsKLSAgICB9Ci0gIH0KK215ICRzY3JpcHRuYW1lID0gInNubXB0ZXN0IjsKK2lmICgkMCA9fiAvXnRbXC9cXF0oLiopXC50JC8pIHsKKyAgJHNjcmlwdG5hbWUgPSAkMTsKIH0KLWVsc2UgewotICAjIFdpbmRvd3MKLSAgaWYgKCRzbm1wZF9jbWQpIHsKLSAgICAgIGlmICgtciAkc25tcGRfY21kKSB7Ci0gICAgICAgICNwcmludCBTVERFUlIgInN0YXJ0IFwiU05NUERcIiAvbWluIFwiJHNubXBkX2NtZFwiIC1yIC1MZiB0L3NubXB0ZXN0LmxvZyAtQyAtYyB0L3NubXB0ZXN0LmNvbmYgLXAgdC9zbm1wZC5waWQgJGFnZW50X3BvcnQgPiBudWxcbiI7Ci0gICAgICBzeXN0ZW0gInN0YXJ0IFwiU05NUERcIiAvbWluIFwiJHNubXBkX2NtZFwiIC1yIC1MZiB0L3NubXB0ZXN0LmxvZyAtQyAtYyB0L3NubXB0ZXN0LmNvbmYgLXAgdC9zbm1wZC5waWQgJGFnZW50X3BvcnQgPiBudWwiOwotICAgIH0gZWxzZSB7Ci0gICAgICB3YXJuKCJDb3VsZG4ndCBydW4gc25tcGRcbiIpOwotICAgIH0KLSAgfQotICBpZiAoJHNubXB0cmFwZF9jbWQpIHsKLSAgICBpZiAoLXIgJHNubXB0cmFwZF9jbWQpIHsKLSAgICAgICNwcmludCBTVERFUlIgInN0YXJ0IC9taW4gXCJTTk1QVFJBUERcIiBcIiRzbm1wdHJhcGRfY21kXCIgLUxmIHQvc25tcHRyYXBkdGVzdC5sb2cgLXAgdC9zbm1wdHJhcGQucGlkIC1DIC1jIHQvc25tcHRlc3QuY29uZiAkdHJhcF9wb3J0ID4gbnVsXG4iOwotICAgICAgc3lzdGVtICJzdGFydCAvbWluIFwiU05NUFRSQVBEXCIgXCIkc25tcHRyYXBkX2NtZFwiIC1MZiB0L3NubXB0cmFwZHRlc3QubG9nIC1wIHQvc25tcHRyYXBkLnBpZCAtQyAtYyB0L3NubXB0ZXN0LmNvbmYgJHRyYXBfcG9ydCA+IG51bCI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHdhcm4oIkNvdWxkbid0IHJ1biBzbm1wdHJhcGRcbiIpOwotICAgIH0KLSAgfQotICBzbGVlcCAyOyAjIEdpdmUgcHJvZ3JhbXMgdGltZSB0byBzdGFydAogCi19IAoraWYgKCRzbm1wZF9jbWQpIHsKKyAgcnVuX2FzeW5jKCJ0L3NubXBkLnBpZCIsICIkc25tcGRfY21kIiwgIi1yIC1kIC1MZiB0L3NubXBkLSRzY3JpcHRuYW1lLmxvZyAtTSskbWliZGlyIC1DIC1jIHQvc25tcHRlc3QuY29uZiAtcCB0L3NubXBkLnBpZCAke2FnZW50X2hvc3R9OiR7YWdlbnRfcG9ydH0gPnQvc25tcGQtJHNjcmlwdG5hbWUuc3RkZXJyIik7Cit9CitpZiAoJHNubXB0cmFwZF9jbWQpIHsKKyAgcnVuX2FzeW5jKCJ0L3NubXB0cmFwZC5waWQiLCAiJHNubXB0cmFwZF9jbWQiLCAiLWQgLUxmIHQvc25tcHRyYXBkLSRzY3JpcHRuYW1lLmxvZyAtcCB0L3NubXB0cmFwZC5waWQgLU0rJG1pYmRpciAtQyAtYyB0L3NubXB0ZXN0LmNvbmYgLUMgJHthZ2VudF9ob3N0fToke3RyYXBfcG9ydH0gPnQvc25tcHRyYXBkLSRzY3JpcHRuYW1lLnN0ZGVyciIpOworfQogCiAxOwogCmRpZmYgLS1naXQgYS9wZXJsL1RyYXBSZWNlaXZlci9NYWtlZmlsZS5QTCBiL3BlcmwvVHJhcFJlY2VpdmVyL01ha2VmaWxlLlBMCmluZGV4IDVjOTQ2M2EuLjRiY2YyYTQgMTAwNjQ0Ci0tLSBhL3BlcmwvVHJhcFJlY2VpdmVyL01ha2VmaWxlLlBMCisrKyBiL3BlcmwvVHJhcFJlY2VpdmVyL01ha2VmaWxlLlBMCkBAIC01Nyw5ICs1Nyw5IEBACiAgICAgfQogCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7Ci0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgIGVsc2UgewogCSRvcHRzID0gTmV0U05NUEdldE9wdHMoKTsKIAkkUGFyYW1zeydMRERMRkxBR1MnfSA9ICIkQ29uZmlne2xkZGxmbGFnc30gIiAuIGAkb3B0cy0+eyduc2NvbmZpZyd9IC0tbGRmbGFnc2A7Ci0JJFBhcmFtc3snTElCUyd9ID0gJy1sbmV0c25tcHRyYXBkIC1sbmV0c25tcGFnZW50IC1sbmV0c25tcCc7CisJJFBhcmFtc3snTElCUyd9ID0gJy1sbmV0c25tcHRyYXBkICcgLiBgJG9wdHMtPnsnbnNjb25maWcnfSAtLWJhc2UtYWdlbnQtbGlic2A7CiAJY2hvbXAoJFBhcmFtc3snTElCUyd9KTsKIAlpZiAoISRFTlZ7J05FVFNOTVBfQ0NGTEFHUyd9KSB7CiAJICAgICRQYXJhbXN7J0NDRkxBR1MnfSA9IGAkb3B0cy0+eyduc2NvbmZpZyd9IC0tY2ZsYWdzYDsKQEAgLTE0Miw3ICsxNDIsNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtMjI1LDcgKzIyNSw3IEBACiAKIAogc3ViIENoZWNrX1ZlcnNpb24gewotICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBlcSAnbXN5cycpKSB7CisgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IG5lICcnKSkgewogICAgIG15ICRmb3VuZHZlcnNpb24gPSAwOwogICAgIHJldHVybiBpZiAoJEVOVnsnTkVUU05NUF9ET05UX0NIRUNLX1ZFUlNJT04nfSk7CiAgICAgb3BlbihJLCI8TWFrZWZpbGUiKTsKZGlmZiAtLWdpdCBhL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSBiL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbQppbmRleCAzYTU0MjVkLi5mMDEyZGE1IDEwMDY0NAotLS0gYS9wZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0KKysrIGIvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtCkBAIC00Nyw3ICs0Nyw3IEBACiAJTkVUU05NUFRSQVBEX1BSRV9IQU5ETEVSCiApOwogCi0kVkVSU0lPTiA9ICc1LjA0MDQnOworJFZFUlNJT04gPSAnNS4wNTAyJzsKIAogIyBzdWIgbmV3IHsKICMgICAgIG15ICR0eXBlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9wZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMgYi9wZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMKaW5kZXggODcxM2VmZC4uYTRmYzEzNiAxMDA2NDQKLS0tIGEvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnhzCisrKyBiL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci54cwpAQCAtOTksNyArOTksNyBAQAogICAgICAgICBjaGFyICp0c3RyID0gdHJhbnNwb3J0LT5mX2ZtdGFkZHIodHJhbnNwb3J0LCBwZHUtPnRyYW5zcG9ydF9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT50cmFuc3BvcnRfZGF0YV9sZW5ndGgpOwogICAgICAgICBTVE9SRVBEVXMoInJlY2VpdmVkZnJvbSIsIHRzdHIpOwotICAgICAgICBmcmVlKHRzdHIpOworICAgICAgICBuZXRzbm1wX2ZyZWUodHN0cik7CiAgICAgfQogCiAKQEAgLTExMyw3ICsxMTMsNyBAQAogICAgIGZvcih2YiA9IHBkdS0+dmFyaWFibGVzOyB2YjsgdmIgPSB2Yi0+bmV4dF92YXJpYWJsZSkgewogCiAgICAgICAgIC8qIGdldCB0aGUgb2lkICovCi0gICAgICAgIG8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfb2lkKTsKKyAgICAgICAgbyA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9vaWQpKTsKICAgICAgICAgby0+bmFtZSA9IG8tPm5hbWVidWY7CiAgICAgICAgIG8tPmxlbiA9IHZiLT5uYW1lX2xlbmd0aDsKICAgICAgICAgbWVtY3B5KG8tPm5hbWUsIHZiLT5uYW1lLCB2Yi0+bmFtZV9sZW5ndGggKiBzaXplb2Yob2lkKSk7CkBAIC0xNzgsNyArMTc4LDcgQEAKIAogICAgICAgICBhdl9wdXNoKHZiYSx0bXBhcnJheVtpXSk7CiAgICAgICAgIGF2X3B1c2godmJhLG5ld1NWcHZuKChjaGFyICopIG91dGJ1Ziwgb29fbGVuKSk7Ci0gICAgICAgIGZyZWUob3V0YnVmKTsKKyAgICAgICAgbmV0c25tcF9mcmVlKG91dGJ1Zik7CiAgICAgICAgIGF2X3B1c2godmJhLG5ld1NWaXYodmItPnR5cGUpKTsKICAgICAgICAgYXZfcHVzaCh2YXJiaW5kcywgKFNWICopIG5ld1JWX25vaW5jKChTViAqKSB2YmEpKTsKICAgICB9CkBAIC0yMTQsNyArMjE0LDcgQEAKIAlTViAqcnYgPSBQT1BzOwogCiAJaWYgKFN2VFlQRShydikgIT0gU1Z0X0lWKSB7Ci0JICBzbm1wX2xvZyhMT0dfV0FSTklORywgIiBwZXJsIGNhbGxiYWNrIGZ1bmN0aW9uICVwIHJldHVybmVkIGEgc2NhbGFyIG9mIHR5cGUgJWQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLCBhc3N1bWluZyAlZCAoTkVUU05NUFRSQVBEX0hBTkRMRVJfT0spXG4iLCBwY2FsbGJhY2ssIFN2VFlQRShydiksIE5FVFNOTVBUUkFQRF9IQU5ETEVSX09LKTsKKwkgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiIHBlcmwgY2FsbGJhY2sgZnVuY3Rpb24gJXAgcmV0dXJuZWQgYSBzY2FsYXIgb2YgdHlwZSAlbHUgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLCBhc3N1bWluZyAlZCAoTkVUU05NUFRSQVBEX0hBTkRMRVJfT0spXG4iLCBwY2FsbGJhY2ssICh1bnNpZ25lZCBsb25nKVN2VFlQRShydiksIE5FVFNOTVBUUkFQRF9IQU5ETEVSX09LKTsKIAl9CiAJZWxzZSB7CiAJICBpbnQgcnZpID0gKElWKVN2SVZ4KHJ2KTsKQEAgLTMwMCw3ICszMDAsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgICAgIGlmIChoYW5kbGVyKSB7Ci0gICAgICAgICAgICAgICAgY2JfZGF0YSA9IFNOTVBfTUFMTE9DX1RZUEVERUYodHJhcGRfY2JfZGF0YSk7CisgICAgICAgICAgICAgICAgY2JfZGF0YSA9IG1hbGxvYyhzaXplb2YodHJhcGRfY2JfZGF0YSkpOwogICAgICAgICAgICAgICAgIGNiX2RhdGEtPnBlcmxfY2IgPSBuZXdTVnN2KHBlcmxjYWxsYmFjayk7CiAgICAgICAgICAgICAgICAgaGFuZGxlci0+aGFuZGxlcl9kYXRhID0gY2JfZGF0YTsKICAgICAgICAgICAgICAgICBoYW5kbGVyLT5hdXRodHlwZXMgPSAoMSA8PCBWQUNNX1ZJRVdfRVhFQ1VURSk7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L01ha2VmaWxlLlBMIGIvcGVybC9hZ2VudC9NYWtlZmlsZS5QTAppbmRleCBiNGIzNThhLi5iMmUzYmQ4IDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L01ha2VmaWxlLlBMCisrKyBiL3BlcmwvYWdlbnQvTWFrZWZpbGUuUEwKQEAgLTMwLDkgKzMwLDkgQEAKICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIG15ICgkc25tcF9saWIsICRzbm1wX2xsaWIsICRzZXApOwotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKICAgICAgICRvcHRzID0gTmV0U05NUEdldE9wdHMoKTsJCi0gICAgICAkUGFyYW1zeydERUZJTkUnfSA9ICItRE1TVkNfUEVSTCI7CisgICAgICAkUGFyYW1zeydERUZJTkUnfSA9ICItRE1TVkNfUEVSTCAtRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC1EX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIjsKICAgICAgICRzZXAgPSAnXFwnOwogICAgICAgJHNubXBfbGliX2ZpbGUgPSAnbmV0c25tcC5saWInOwogICAgICAgJHNubXBfbGlua19saWIgPSAnbmV0c25tcCc7CkBAIC0xMDksNyArMTA5LDcgQEAKICAgICAkcm9vdHBhdGggPSAiLi4vIiBpZiAoISRyb290cGF0aCk7CiAgICAgJHJvb3RwYXRoIC49ICcvJyBpZiAoJHJvb3RwYXRoICF+IC9cLyQvKTsKICAgICAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAKICAgICAgICMgR3JhYiBjb21tYW5kIGxpbmUgb3B0aW9ucyBmaXJzdC4gIE9ubHkgdXNlZCBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzZXQKICAgICAgIEdldE9wdGlvbnMoIk5FVC1TTk1QLUlOLVNPVVJDRT1zIiA9PiBcJHJldHsnaW5zb3VyY2UnfSwKQEAgLTE5Miw3ICsxOTIsNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L1N1cHBvcnQvTWFrZWZpbGUuUEwgYi9wZXJsL2FnZW50L1N1cHBvcnQvTWFrZWZpbGUuUEwKaW5kZXggM2E0ZjIwMC4uNDg4MTViNiAxMDA2NDQKLS0tIGEvcGVybC9hZ2VudC9TdXBwb3J0L01ha2VmaWxlLlBMCisrKyBiL3BlcmwvYWdlbnQvU3VwcG9ydC9NYWtlZmlsZS5QTApAQCAtMjksOSArMjksOSBAQAogICAgICAgICAgICAgICAgICAgCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7CiAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAgICAgICAkb3B0cyA9IE5ldFNOTVBHZXRPcHRzKCk7CQotICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwiOworICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwgLURfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAtRF9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyI7CiAgICAgICAkc2VwID0gJ1xcJzsKICAgICAgICRzbm1wX2xpYl9maWxlID0gJ25ldHNubXAubGliJzsKICAgICAgICRzbm1wX2xpbmtfbGliID0gJ25ldHNubXAnOwpAQCAtMTAxLDcgKzEwMSw3IEBACiAgICAgJHJvb3RwYXRoID0gIi4uLyIgaWYgKCEkcm9vdHBhdGgpOwogICAgICRyb290cGF0aCAuPSAnLycgaWYgKCRyb290cGF0aCAhfiAvXC8kLyk7CiAgICAgCi0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogCiAgICAgICAjIEdyYWIgY29tbWFuZCBsaW5lIG9wdGlvbnMgZmlyc3QuICBPbmx5IHVzZWQgaWYgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3Qgc2V0CiAgICAgICBHZXRPcHRpb25zKCJORVQtU05NUC1JTi1TT1VSQ0U9cyIgPT4gXCRyZXR7J2luc291cmNlJ30sCkBAIC0xODQsNyArMTg0LDcgQEAKIAogCiBzdWIgQ2hlY2tfVmVyc2lvbiB7Ci0gIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IGVxICdtc3lzJykpIHsKKyAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gbmUgJycpKSB7CiAgICAgbXkgJGZvdW5kdmVyc2lvbiA9IDA7CiAgICAgcmV0dXJuIGlmICgkRU5WeydORVRTTk1QX0RPTlRfQ0hFQ0tfVkVSU0lPTid9KTsKICAgICBvcGVuKEksIjxNYWtlZmlsZSIpOwpkaWZmIC0tZ2l0IGEvcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0gYi9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQppbmRleCBkYThjNzdlLi44OGJlZWVkIDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQorKysgYi9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQpAQCAtMjYsNyArMjYsNyBAQAogQElTQSAgICAgICA9IHF3KEV4cG9ydGVyIGdldExlYWYpOwogQEVYUE9SVCAgICA9IHF3KHJlZ2lzdGVyQWdlbnQgZ2V0T2lkRWxlbWVudCBzZXRPaWRFbGVtZW50KTsKIEBFWFBPUlRfT0sgPSBxdygpOwotJFZFUlNJT04gPSAnNS4wNDA0JzsKKyRWRVJTSU9OID0gJzUuMDUwMic7CiAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L2FnZW50LnBtIGIvcGVybC9hZ2VudC9hZ2VudC5wbQppbmRleCA2MThhMmM2Li41MzA3NzJlIDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L2FnZW50LnBtCisrKyBiL3BlcmwvYWdlbnQvYWdlbnQucG0KQEAgLTg3LDcgKzg3LDcgQEAKIAlTTk1QX0VSUl9BVVRIT1JJWkFUSU9ORVJST1IKIAlTTk1QX0VSUl9OT1RXUklUQUJMRQogKTsKLSRWRVJTSU9OID0gJzUuMDQwNCc7CiskVkVSU0lPTiA9ICc1LjA1MDInOwogCiBzdWIgQVVUT0xPQUQgewogICAgICMgVGhpcyBBVVRPTE9BRCBpcyB1c2VkIHRvICdhdXRvbG9hZCcgY29uc3RhbnRzIGZyb20gdGhlIGNvbnN0YW50KCkKQEAgLTQ5MCw2ICs0OTAsMjAgQEAKIAogCSRyZXF1ZXN0LT5zZXRSZXBlYXQoNSk7CiAKKyAgICBnZXRTb3VyY2VJcCAoKQorCisJR2V0cyB0aGUgSVB2NCBhZGRyZXNzIG9mIHRoZSBkZXZpY2UgbWFraW5nIHRoZSByZXF1ZXN0IHRvIHRoZSBoYW5kbGVyLgorCisJdXNlIFNvY2tldDsKKwlwcmludCAiU291cmNlOiAiLCBpbmV0X250b2EoJHJlcXVlc3QtPmdldFNvdXJjZUlwKCkpLCAiXG4iOworCisgICAgZ2V0RGVzdElwICgpCisKKwlHZXRzIHRoZSBJUHY0IGFkZHJlc3Mgb2YgdGhlIGRlc3RpbmF0aW9uIHRoYXQgdGhlIHJlcXVlc3Qgd2FzIHNlbnQgdG8uCisKKwl1c2UgU29ja2V0OworCXByaW50ICJEZXN0aW5hdGlvbjogIiwgaW5ldF9udG9hKCRyZXF1ZXN0LT5nZXREZXN0SXAoKSksICJcbiI7CisKID1oZWFkMSBNT0RFUwogCiAJTU9ERV9HRVQKZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvYWdlbnQueHMgYi9wZXJsL2FnZW50L2FnZW50LnhzCmluZGV4IDU2MDZjM2MuLmFiNzdjNzUgMTAwNjQ0Ci0tLSBhL3BlcmwvYWdlbnQvYWdlbnQueHMKKysrIGIvcGVybC9hZ2VudC9hZ2VudC54cwpAQCAtMTksNiArMTksMTIgQEAKIAogdHlwZWRlZiBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpOZXRTTk1QX19hZ2VudF9fbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbjsKIAorLyogQ29waWVkIGZyb20gc25tcFVEUERvbWFpbi5jICovCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3VkcF9hZGRyX3BhaXJfcyB7CisJc3RydWN0IHNvY2thZGRyX2luIHJlbW90ZV9hZGRyOworCXN0cnVjdCBpbl9hZGRyIGxvY2FsX2FkZHI7Cit9IG5ldHNubXBfdWRwX2FkZHJfcGFpcjsKKwogdHlwZWRlZiBzdHJ1Y3QgaGFuZGxlcl9jYl9kYXRhX3MgewogICAgU1YgKnBlcmxfY2I7CiB9IGhhbmRsZXJfY2JfZGF0YTsKQEAgLTIzOCw2ICsyNDQsMTEgQEAKIGludAogaW5pdF9hZ2VudChuYW1lKQogICAgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgIENPREU6CisgICAgICAgIFNPQ0tfU1RBUlRVUDsKKyAgICAgICAgUkVUVkFMID0gaW5pdF9hZ2VudChuYW1lKTsKKyAgICBPVVRQVVQ6CisgICAgICAgIFJFVFZBTAogCiB2b2lkCiBpbml0X3NubXAobmFtZSkKQEAgLTI3Myw3ICsyODQsNyBAQAogICAgICAgICBpZiAoMCkKICAgICAgICAgICAgIHByaW50ZigibWUgPSAlcFxuIiwgbWUpOwogICAgICAgICBzdHJpbmdwdHIgPSBTdlBWKHZhbHVlLCBzdHJpbmdsZW4pOwotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCBzdHJpbmdwdHIgKTsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIiVzIiwgc3RyaW5ncHRyICk7CiAgICAgfQogCiAKQEAgLTMxMyw3ICszMjQsMTQgQEAKIHZvaWQKIG5zYWhyX0RFU1RST1kocmVnaW5mbykKIAluZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvCisgICAgUFJFSU5JVDoKKyAgICAgICAgaGFuZGxlcl9jYl9kYXRhICpjYl9kYXRhOwogICAgIENPREU6CisgICAgICAgIGlmIChyZWdpbmZvICYmIHJlZ2luZm8tPmhhbmRsZXIgJiYgcmVnaW5mby0+aGFuZGxlci0+bXl2b2lkKSB7CisJICAgIGNiX2RhdGEgPSAoaGFuZGxlcl9jYl9kYXRhICopIChyZWdpbmZvLT5oYW5kbGVyLT5teXZvaWQpOworCSAgICBTdlJFRkNOVF9kZWMoY2JfZGF0YS0+cGVybF9jYik7CisJICAgIGZyZWUoY2JfZGF0YSk7CisgICAgICAgIH0KIAluZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnaW5mbyk7CiAKIGludApAQCAtMzY0LDcgKzM4Miw3IEBACiAgICAgICAgIFBVU0hNQVJLKFNQKTsKICAgICAgICAgcmVnaW5mbyA9IChuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICopIFN2SVYoU3ZSVihtZSkpOwogCi0gICAgICAgIG8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfb2lkKTsKKyAgICAgICAgbyA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9vaWQpKTsKICAgICAgICAgby0+bmFtZSA9IG8tPm5hbWVidWY7CiAgICAgICAgIG8tPmxlbiA9IHJlZ2luZm8tPnJvb3RvaWRfbGVuOwogICAgICAgICBtZW1jcHkoby0+bmFtZSwgcmVnaW5mby0+cm9vdG9pZCwKQEAgLTQwMyw3ICs0MjEsNyBAQAogICAgICAgICBQVVNITUFSSyhTUCk7CiAgICAgICAgIHJlcXVlc3QgPSAobmV0c25tcF9yZXF1ZXN0X2luZm8gKikgU3ZJVihTdlJWKG1lKSk7CiAKLSAgICAgICAgbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9vaWQpOworICAgICAgICBvID0gbWFsbG9jKHNpemVvZihuZXRzbm1wX29pZCkpOwogICAgICAgICBvLT5uYW1lID0gby0+bmFtZWJ1ZjsKICAgICAgICAgby0+bGVuID0gcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aDsKICAgICAgICAgbWVtY3B5KG8tPm5hbWUsIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZSwKQEAgLTQzMyw3ICs0NTEsNyBAQAogICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKICAgICAgICAgQ09ERToKICAgICAgICAgcmVxdWVzdCA9IChuZXRzbm1wX3JlcXVlc3RfaW5mbyAqKSBTdklWKFN2UlYobWUpKTsKLSAgICAgICAgUkVUVkFMID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX29pZCk7CisgICAgICAgIFJFVFZBTCA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9vaWQpKTsKICAgICAgICAgUkVUVkFMLT5uYW1lID0gUkVUVkFMLT5uYW1lYnVmOwogICAgICAgICBSRVRWQUwtPmxlbiA9IHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGg7CiAgICAgICAgIG1lbWNweShSRVRWQUwtPm5hbWUsIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZSwKQEAgLTQ2MywxOSArNDgxLDE5IEBACiAgICAgICAgIHJlcXVlc3QgPSAobmV0c25tcF9yZXF1ZXN0X2luZm8gKikgU3ZJVihTdlJWKG1lKSk7CiAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+dHlwZT1uZXd2YWx1ZTsKIAotY2hhciAqCitTViAqCiBuYXJpX2dldFZhbHVlKG1lKQogICAgICAgICBTViAqbWU7CiAgICAgUFJFSU5JVDoKLSAgICAgICAgdV9jaGFyIGJ1ZlsxMDI0XSA7Ci0gICAgICAgIHVfY2hhciAqb2lkYnVmID0gYnVmIDsKLSAgICAgICAgc2l6ZV90IG9iX2xlbiA9IDEwMjQsIG9vX2xlbiA9IDA7CisgICAgICAgIGNoYXIgKm91dGJ1ZiA9IE5VTEw7CisgICAgICAgIHNpemVfdCBvYl9sZW4gPSAwLCBvb19sZW4gPSAwOwogICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKICAgICBDT0RFOgogICAgICAgICByZXF1ZXN0ID0gKG5ldHNubXBfcmVxdWVzdF9pbmZvICopIFN2SVYoU3ZSVihtZSkpOwotCXNwcmludF9yZWFsbG9jX2J5X3R5cGUoJm9pZGJ1ZiwgJm9iX2xlbiwgJm9vX2xlbiwgMCwKKwlzcHJpbnRfcmVhbGxvY19ieV90eXBlKCh1X2NoYXIgKiopICZvdXRidWYsICZvYl9sZW4sICZvb19sZW4sIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC0+cmVxdWVzdHZiLCAwLCAwLCAwKTsKLSAgICAgICAgUkVUVkFMID0gKGNoYXIgKikgb2lkYnVmOyAvKiBtZW0gbGVhayAqLworICAgICAgICBSRVRWQUwgPSBuZXdTVnB2KG91dGJ1ZiwgMCk7CisJbmV0c25tcF9mcmVlKG91dGJ1Zik7CiAgICAgT1VUUFVUOgogICAgICAgICBSRVRWQUwKIApAQCAtNjIwLDggKzYzOCw4IEBACiAJCSAgYnJlYWs7CiAJICAgICAgfQogCSAgICAgIGVsc2UgewotCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLWludGVnZXIgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX0lOVEVHRVI6IHR5cGUgd2FzICVkXG4iLAotCQkJU3ZUWVBFKHZhbHVlKSk7CisJCXNubXBfbG9nKExPR19FUlIsICJOb24taW50ZWdlciB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fSU5URUdFUjogdHlwZSB3YXMgJWx1XG4iLAorCQkJKHVuc2lnbmVkIGxvbmcpU3ZUWVBFKHZhbHVlKSk7CiAJCVJFVFZBTCA9IDA7CiAJCWJyZWFrOwogCSAgICAgIH0KQEAgLTY1Niw4ICs2NzQsOCBAQAogCQkgIGJyZWFrOwogCSAgICAgIH0KIAkgICAgICBlbHNlIHsKLQkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi11bnNpZ25lZC1pbnRlZ2VyIHZhbHVlIHBhc3NlZCB0byBzZXRWYWx1ZSB3aXRoIEFTTl9VTlNJR05FRC9BU05fQ09VTlRFUi9BU05fVElNRVRJQ0tTOiB0eXBlIHdhcyAlZFxuIiwKLQkJCVN2VFlQRSh2YWx1ZSkpOworCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXVuc2lnbmVkLWludGVnZXIgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX1VOU0lHTkVEL0FTTl9DT1VOVEVSL0FTTl9USU1FVElDS1M6IHR5cGUgd2FzICVsdVxuIiwKKwkJCSh1bnNpZ25lZCBsb25nKVN2VFlQRSh2YWx1ZSkpOwogCQlSRVRWQUwgPSAwOwogCQlicmVhazsKIAkgICAgICB9CkBAIC02NjcsNDcgKzY4NSw0MCBAQAogCSAgICAgIGlmICgoU3ZUWVBFKHZhbHVlKSA9PSBTVnRfSVYpIHx8IChTdlRZUEUodmFsdWUpID09IFNWdF9QVk1HKSkgewogCQkgIC8qIEdvb2QgLSBnb3QgYSByZWFsIG9uZSAob3IgYSBibGVzc2VkIHNjYWxhciB3aGljaCB3ZSBoYXZlIHRvIGhvcGUgd2lsbCB0dXJuIG91dCBPSykgKi8KIAkJICB1bGx0bXAgPSBTdklWKHZhbHVlKTsKLQkJICBjNjQuaGlnaCA9ICh1aW50MzJfdCkodWxsdG1wID4+IDMyKTsKLQkJICBjNjQubG93ICA9ICh1aW50MzJfdCl1bGx0bXA7Ci0gICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCAodV9jaGFyKXR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICZjNjQsIHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KSk7CiAJCSAgUkVUVkFMID0gMTsKLQkJICBicmVhazsKIAkgICAgICB9CiAJICAgICAgZWxzZSBpZiAoU3ZQT0twKHZhbHVlKSkgewogCSAgICAgICAgICAvKiBNaWdodCBiZSBPSyAtIGdvdCBhIHN0cmluZywgc28gdHJ5IHRvIGNvbnZlcnQgaXQsIGFsbG93aW5nIGJhc2UgMTAsIG9jdGFsLCBhbmQgaGV4IGZvcm1zICovCiAJICAgICAgICAgIHN0cmluZ3B0ciA9IFN2UFYodmFsdWUsIHN0cmluZ2xlbik7Ci0jaWYgZGVmaW5lZChXSU4zMikKLQkJICB1bGx0bXAgPSBzdHJ0b3VsKCAgc3RyaW5ncHRyLCBOVUxMLCAwICk7Ci0jZWxzZQorCSAgICAgICAgICBlcnJubyA9IDA7CiAJCSAgdWxsdG1wID0gc3RydG91bGwoIHN0cmluZ3B0ciwgTlVMTCwgMCApOwotI2VuZGlmCi0JCSAgaWYgKGVycm5vID09IEVJTlZBTCkgewotCQkgIAlzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvIG51bWJlciBpbiBzZXRWYWx1ZTogJyVzJyIsIHN0cmluZ3B0cik7Ci0JCQlSRVRWQUwgPSAwOwotCQkJYnJlYWs7Ci0JCSAgfQorCQkgIGlmIChlcnJubyAhPSAwKSB7CisJCSAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gbnVtYmVyIGluIHNldFZhbHVlOiAnJXMnIiwgc3RyaW5ncHRyKTsKKwkJICAgICAgUkVUVkFMID0gMDsKKwkJICB9IGVsc2UKIAotCQkgIGM2NC5oaWdoID0gKHVpbnQzMl90KSh1bGx0bXAgPj4gMzIpOwotCQkgIGM2NC5sb3cgID0gKHVpbnQzMl90KXVsbHRtcDsKLSAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsICh1X2NoYXIpdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJmM2NCwgc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpKTsKLQkJICBSRVRWQUwgPSAxOwotCQkgIGJyZWFrOworCQkgICAgICBSRVRWQUwgPSAxOwogCSAgICAgIH0KIAkgICAgICBlbHNlIHsKLQkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi11bnNpZ25lZC1pbnRlZ2VyIHZhbHVlIHBhc3NlZCB0byBzZXRWYWx1ZSB3aXRoIEFTTl9DT1VOVEVSNjQ6IHR5cGUgd2FzICVkXG4iLAotCQkJU3ZUWVBFKHZhbHVlKSk7CisJCXNubXBfbG9nKExPR19FUlIsICJOb24tdW5zaWduZWQtaW50ZWdlciB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fQ09VTlRFUjY0OiB0eXBlIHdhcyAlbHVcbiIsCisJCQkodW5zaWduZWQgbG9uZylTdlRZUEUodmFsdWUpKTsKIAkJUkVUVkFMID0gMDsKLQkJYnJlYWs7CiAJICAgICAgfQorCSAgICAgIGlmIChSRVRWQUwpIHsKKwkJICBjNjQuaGlnaCA9ICh1aW50MzJfdCkodWxsdG1wID4+IDMyKTsKKwkJICBjNjQubG93ICA9ICh1aW50MzJfdCkodWxsdG1wID4+IDApOworCQkgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsICh1X2NoYXIpdHlwZSwKKwkJCQkgICAgICh1X2NoYXIgKikgJmM2NCwgc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpKTsKKwkgICAgICB9CisJICAgICAgYnJlYWs7CiAKICAgICAgICAgICBjYXNlIEFTTl9PQ1RFVF9TVFI6CiAgICAgICAgICAgY2FzZSBBU05fQklUX1NUUjoKKyAgICAgICAgICBjYXNlIEFTTl9PUEFRVUU6CiAJICAgICAgLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIGJlZW4gcGFzc2VkIHNvbWV0aGluZyB3aXRoIGEgc3RyaW5nIHZhbHVlIChvciBhIGJsZXNzZWQgc2NhbGFyKSAqLwogCSAgICAgIGlmICghU3ZQT0twKHZhbHVlKSAmJiAoU3ZUWVBFKHZhbHVlKSAhPSBTVnRfUFZNRykpIHsKLQkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi1zdHJpbmcgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX09DVEVUX1NUUi9BU05fQklUX1NUUjogdHlwZSB3YXMgJWRcbiIsCi0JCQlTdlRZUEUodmFsdWUpKTsKKwkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi1zdHJpbmcgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX09DVEVUX1NUUi9BU05fQklUX1NUUjogdHlwZSB3YXMgJWx1XG4iLAorCQkJKHVuc2lnbmVkIGxvbmcpU3ZUWVBFKHZhbHVlKSk7CiAJCVJFVFZBTCA9IDA7CiAJCWJyZWFrOwogCSAgICAgIH0KQEAgLTczMyw4ICs3NDQsOCBAQAogCiAJICAgICAgLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIGJlZW4gcGFzc2VkIHNvbWV0aGluZyB3aXRoIGEgc3RyaW5nIHZhbHVlIChvciBhIGJsZXNzZWQgc2NhbGFyKSAqLwogCSAgICAgIGlmICghU3ZQT0twKHZhbHVlKSAmJiAoU3ZUWVBFKHZhbHVlKSAhPSBTVnRfUFZNRykpIHsKLQkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi1zdHJpbmcgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX0lQQUREUkVTUzogdHlwZSB3YXMgJWRcbiIsCi0JCQlTdlRZUEUodmFsdWUpKTsKKwkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi1zdHJpbmcgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX0lQQUREUkVTUzogdHlwZSB3YXMgJWx1XG4iLAorCQkJKHVuc2lnbmVkIGxvbmcpU3ZUWVBFKHZhbHVlKSk7CiAJCVJFVFZBTCA9IDA7CiAJCWJyZWFrOwogCSAgICAgIH0KQEAgLTc0Nyw3ICs3NTgsNyBAQAogCiAJICAgICAgIyBTYW5pdHkgY2hlY2sgb24gYWRkcmVzcyBsZW5ndGgKIAkgICAgICBpZiAoKHN0cmluZ2xlbiAhPSA0KSAmJiAoc3RyaW5nbGVuICE9IDE2KSkgewotCSAgICAgIAkJc25tcF9sb2coTE9HX0VSUiwgIklQIGFkZHJlc3Mgb2YgJWQgYnl0ZXMgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX0lQQUREUkVTU1xuIiwgc3RyaW5nbGVuKTsKKwkgICAgICAJCXNubXBfbG9nKExPR19FUlIsICJJUCBhZGRyZXNzIG9mICUiIE5FVFNOTVBfUFJJeiAiZCBieXRlcyBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fSVBBRERSRVNTXG4iLCBzdHJpbmdsZW4pOwogCQkJUkVUVkFMID0gMDsKIAkJCWJyZWFrOwogCSAgICAgIH0KQEAgLTc2MCw4ICs3NzEsOCBAQAogICAgICAgICAgIGNhc2UgQVNOX09CSkVDVF9JRDoKIAkgICAgICAvKiBDaGVjayB0aGF0IHdlIGhhdmUgYmVlbiBwYXNzZWQgc29tZXRoaW5nIHdpdGggYSBzdHJpbmcgdmFsdWUgKG9yIGEgYmxlc3NlZCBzY2FsYXIpICovCiAJICAgICAgaWYgKCFTdlBPS3AodmFsdWUpICYmIChTdlRZUEUodmFsdWUpICE9IFNWdF9QVk1HKSkgewotCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fT0JKRUNUX0lEOiB0eXBlIHdhcyAlZFxuIiwKLQkJCVN2VFlQRSh2YWx1ZSkpOworCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fT0JKRUNUX0lEOiB0eXBlIHdhcyAlbHVcbiIsCisJCQkodW5zaWduZWQgbG9uZylTdlRZUEUodmFsdWUpKTsKIAkJUkVUVkFMID0gMDsKIAkJYnJlYWs7CiAJICAgICAgfQpAQCAtODUxLDYgKzg2Miw0OCBAQAogCiBNT0RVTEUgPSBOZXRTTk1QOjphZ2VudCAgUEFDS0FHRSA9IE5ldFNOTVA6OmFnZW50OjpuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyBQUkVGSVggPSBuYXJxaV8KIAorCitTViAqCituYXJxaV9nZXRTb3VyY2VJcChtZSkKKyAgICAgICAgU1YgKm1lOworICAgIFBSRUlOSVQ6CisgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvOworCXN0cnVjdCBuZXRzbm1wX3VkcF9hZGRyX3BhaXJfcyAqYWRkcl9wYWlyOworCXN0cnVjdCBzb2NrYWRkcl9pbiAqZnJvbTsKKyAgICAgICAgU1YgKnJhcmc7CisKKyAgICBDT0RFOgorICAgICAgICByZXFpbmZvID0gKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICopIFN2SVYoU3ZSVihtZSkpOworCisgICAgICAgIC8qIFhYWDogdHJhbnNwb3J0LXNwZWNpZmljOiBVRFAvSVB2NCBvbmx5ISAqLworCWFkZHJfcGFpciA9IChzdHJ1Y3QgbmV0c25tcF91ZHBfYWRkcl9wYWlyX3MgKikgKHJlcWluZm8tPmFzcC0+cGR1LT50cmFuc3BvcnRfZGF0YSk7CisJZnJvbSA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKKyAgICAgICAgcmFyZyA9IG5ld1NWcHYoKGNvbnN0IGNoYXIgKikoJmZyb20tPnNpbl9hZGRyLnNfYWRkciksIHNpemVvZihmcm9tLT5zaW5fYWRkci5zX2FkZHIpKTsKKyAgICAgICAgUkVUVkFMID0gcmFyZzsKKyAgICBPVVRQVVQ6CisgICAgICAgIFJFVFZBTAorCisKK1NWICoKK25hcnFpX2dldERlc3RJcChtZSkKKyAgICAgICAgU1YgKm1lOworICAgIFBSRUlOSVQ6CisgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvOworCXN0cnVjdCBuZXRzbm1wX3VkcF9hZGRyX3BhaXJfcyAqYWRkcl9wYWlyOworCXN0cnVjdCBpbl9hZGRyICp0bzsKKyAgICAgICAgU1YgKnJhcmc7CisKKyAgICBDT0RFOgorICAgICAgICByZXFpbmZvID0gKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICopIFN2SVYoU3ZSVihtZSkpOworCisgICAgICAgIC8qIFhYWDogdHJhbnNwb3J0LXNwZWNpZmljOiBVRFAvSVB2NCBvbmx5ISAqLworCWFkZHJfcGFpciA9IChzdHJ1Y3QgbmV0c25tcF91ZHBfYWRkcl9wYWlyX3MgKikgKHJlcWluZm8tPmFzcC0+cGR1LT50cmFuc3BvcnRfZGF0YSk7CisJdG8gPSAoc3RydWN0IGluX2FkZHIgKikgJihhZGRyX3BhaXItPmxvY2FsX2FkZHIpOworICAgICAgICByYXJnID0gbmV3U1ZwdigoY29uc3QgY2hhciAqKSgmdG8tPnNfYWRkciksIHNpemVvZih0by0+c19hZGRyKSk7CisgICAgICAgIFJFVFZBTCA9IHJhcmc7CisgICAgT1VUUFVUOgorICAgICAgICBSRVRWQUwKKwogaW50CiBuYXJxaV9nZXRNb2RlKG1lKQogICAgICAgICBTViAqbWU7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwgYi9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwKaW5kZXggNjdkNWZmMC4uZWQ2NDgzYSAxMDA2NDQKLS0tIGEvcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMCisrKyBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTApAQCAtMjQsOSArMjQsOSBAQAogICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7Ci0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTk2LDcgKzk2LDcgQEAKICAgICAkcm9vdHBhdGggPSAiLi4vIiBpZiAoISRyb290cGF0aCk7CiAgICAgJHJvb3RwYXRoIC49ICcvJyBpZiAoJHJvb3RwYXRoICF+IC9cLyQvKTsKICAgICAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAKICAgICAgICMgR3JhYiBjb21tYW5kIGxpbmUgb3B0aW9ucyBmaXJzdC4gIE9ubHkgdXNlZCBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzZXQKICAgICAgIEdldE9wdGlvbnMoIk5FVC1TTk1QLUlOLVNPVVJDRT1zIiA9PiBcJHJldHsnaW5zb3VyY2UnfSwKQEAgLTE3OSw3ICsxNzksNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCmluZGV4IGE3NmMzNmIuLjliNTY4ZWMgMTAwNjQ0Ci0tLSBhL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisrKyBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCkBAIC05Niw3ICs5Niw3IEBACiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9NQVhfR0VUQlVMS1JFUEVBVFMKIAkJCQkgICBORVRTTk1QX0RTX0FHRU5UX01BWF9HRVRCVUxLUkVTUE9OU0VTCiApOwotJFZFUlNJT04gPSAnNS4wNDA0JzsKKyRWRVJTSU9OID0gJzUuMDUwMic7CiAKIHN1YiBBVVRPTE9BRCB7CiAgICAgIyBUaGlzIEFVVE9MT0FEIGlzIHVzZWQgdG8gJ2F1dG9sb2FkJyBjb25zdGFudHMgZnJvbSB0aGUgY29uc3RhbnQoKQpAQCAtMjE5LDQzICsyMTksNiBAQAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfQ0FDSEVfVElNRU9VVAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfVkVSU0lPTgogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfU0VDTEVWRUwKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX01BWF9HRVRCVUxLUkVQRUFUUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfTUFYX0dFVEJVTEtSRVNQT05TRVMKLQotCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9WRVJCT1NFCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9ST0xFCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9OT19ST09UX0FDQ0VTUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfQUdFTlRYX01BU1RFUgotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfUVVJVF9JTU1FRElBVEVMWQotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfRElTQUJMRV9QRVJMCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9OT19DT05ORUNUSU9OX1dBUk5JTkdTCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9MRUFWRV9QSURGSUxFCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9OT19DQUNISU5HCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9TVFJJQ1RfRElTTUFOCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9ET05UX1JFVEFJTl9OT1RJRklDQVRJT05TCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9ET05UX0xPR19UQ1BXUkFQUEVSU19DT05ORUNUUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfU0tJUE5GU0lOSE9TVFJFU09VUkNFUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfUFJPR05BTUUKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS0VUCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9QT1JUUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfU0VDTkFNRQotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfUEVSTF9JTklUX0ZJTEUKLQkJCQkgICBORVRTTk1QX0RTX1NNVVhfU09DS0VUCi0JCQkJICAgTkVUU05NUF9EU19OT1RJRl9MT0dfQ1RYCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9GTEFHUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklECi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9HUk9VUElECi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9BR0VOVFhfUElOR19JTlRFUlZBTAotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfQUdFTlRYX1RJTUVPVVQKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX0FHRU5UWF9SRVRSSUVTCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9YX1NPQ0tfUEVSTQotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfWF9ESVJfUEVSTQotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfWF9TT0NLX1VTRVIKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS19HUk9VUAotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfQ0FDSEVfVElNRU9VVAotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfVkVSU0lPTgotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfU0VDTEVWRUwKIAogCiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9WRVJCT1NFCmRpZmYgLS1naXQgYS9wZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwgYi9wZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwKaW5kZXggNTQ5OTZhYi4uN2M2NzFiOCAxMDA2NDQKLS0tIGEvcGVybC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMCisrKyBiL3BlcmwvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTApAQCAtMjMsOSArMjMsOSBAQAogICAgIH0gICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7Ci0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTk1LDcgKzk1LDcgQEAKICAgICAkcm9vdHBhdGggPSAiLi4vIiBpZiAoISRyb290cGF0aCk7CiAgICAgJHJvb3RwYXRoIC49ICcvJyBpZiAoJHJvb3RwYXRoICF+IC9cLyQvKTsKICAgICAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAKICAgICAgICMgR3JhYiBjb21tYW5kIGxpbmUgb3B0aW9ucyBmaXJzdC4gIE9ubHkgdXNlZCBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzZXQKICAgICAgIEdldE9wdGlvbnMoIk5FVC1TTk1QLUlOLVNPVVJDRT1zIiA9PiBcJHJldHsnaW5zb3VyY2UnfSwKQEAgLTE3OCw3ICsxNzgsNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSBiL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCmluZGV4IDgyOGJiZGIuLjFhZjdmMGMgMTAwNjQ0Ci0tLSBhL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisrKyBiL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCkBAIC0yMDAsNyArMjAwLDcgQEAKIAkJCQkgICBORVRTTk1QX0RTX0xJQl9LU01fU0VSVklDRV9OQU1FCiAJCQkJICAgTkVUU05NUF9EU19MSUJfU0JTTV9MT0NBTF9QV0QKICk7Ci0kVkVSU0lPTiA9ICc1LjA0MDQnOworJFZFUlNJT04gPSAnNS4wNTAyJzsKIAogc3ViIEFVVE9MT0FEIHsKICAgICAjIFRoaXMgQVVUT0xPQUQgaXMgdXNlZCB0byAnYXV0b2xvYWQnIGNvbnN0YW50cyBmcm9tIHRoZSBjb25zdGFudCgpCmRpZmYgLS1naXQgYS9wZXJsL2RlZmF1bHRfc3RvcmUvdGVzdC5wbCBiL3BlcmwvZGVmYXVsdF9zdG9yZS90ZXN0LnBsCmluZGV4IDkzMGNhOGMuLmI0MjljNmIgMTAwNjQ0Ci0tLSBhL3BlcmwvZGVmYXVsdF9zdG9yZS90ZXN0LnBsCisrKyBiL3BlcmwvZGVmYXVsdF9zdG9yZS90ZXN0LnBsCkBAIC0xMCw3ICsxMCw3IEBACiAKIAkldGVzdHMgPSAoIAogICAgICAgICAgICAgICAgICAgIk5FVFNOTVBfRFNfTUFYX0lEUyIgICAgICAgICAgICAgICAgICAgICA9PiAzLAotICAgICAgICAgICAgICAgICAgIk5FVFNOTVBfRFNfTUFYX1NVQklEUyIgICAgICAgICAgICAgICAgICA9PiA0MCwKKyAgICAgICAgICAgICAgICAgICJORVRTTk1QX0RTX01BWF9TVUJJRFMiICAgICAgICAgICAgICAgICAgPT4gNDgsCiAgICAgICAgICAgICAgICAgICAiTkVUU05NUF9EU19MSUJSQVJZX0lEIiAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAiTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCIgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAiTkVUU05NUF9EU19UT0tFTl9JRCIgICAgICAgICAgICAgICAgICAgID0+IDIsCmRpZmYgLS1naXQgYS9weXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jIGIvcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYwppbmRleCAzYTkwNGE2Li43ZmM3NGRjIDEwMDY0NAotLS0gYS9weXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jCisrKyBiL3B5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMKQEAgLTY1OCw2ICs2NTgsOSBAQAogCW5ld25hbWVfbGVuID0gTUFYX09JRF9MRU47CiAJaWYgKHJlYWRfb2JqaWQodGFnLCBuZXduYW1lLCAmbmV3bmFtZV9sZW4pKSB7CS8qIGxvbmcgbmFtZSAqLwogCSAgcnRwID0gdHAgPSBnZXRfdHJlZShuZXduYW1lLCBuZXduYW1lX2xlbiwgZ2V0X3RyZWVfaGVhZCgpKTsKKwl9IGVsc2UgeworCSAgLyogZmFpbGVkIHRvIHBhcnNlIHRoZSBPSUQgKi8KKwkgIG5ld25hbWVfbGVuID0gMDsKIAl9CiAgICAgICB9CiAgICAgICBlbHNlIHsKQEAgLTc1OCw4ICs3NjEsNyBAQAogICAgIH0KIAogICAgIHZhcnMtPm5leHRfdmFyaWFibGUgPSBOVUxMOwotICAgIHZhcnMtPm5hbWUgPSAob2lkICopbWFsbG9jKG5hbWVfbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwotICAgIG1lbWNweSgoY2hhciAqKXZhcnMtPm5hbWUsIChjaGFyICopbmFtZSwgbmFtZV9sZW5ndGggKiBzaXplb2Yob2lkKSk7CisgICAgdmFycy0+bmFtZSA9IHNubXBfZHVwbGljYXRlX29iamlkKG5hbWUsIG5hbWVfbGVuZ3RoKTsKICAgICB2YXJzLT5uYW1lX2xlbmd0aCA9IG5hbWVfbGVuZ3RoOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgY2FzZSBUWVBFX0lOVEVHRVI6CkBAIC04NDUsOSArODQ3LDggQEAKICAgICAgICAgICAgIHZhcnMtPnZhbC5vYmppZCA9IE5VTEw7CiAJICAgIHJldCA9IEZBSUxVUkU7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YXJzLT52YWwub2JqaWQgPSBzbm1wX2R1cGxpY2F0ZV9vYmppZChvaWRidWYsIHZhcnMtPnZhbF9sZW4pOwogICAgICAgICAgICAgdmFycy0+dmFsX2xlbiAqPSBzaXplb2Yob2lkKTsKLSAgICAgICAgICAgIHZhcnMtPnZhbC5vYmppZCA9IChvaWQgKiltYWxsb2ModmFycy0+dmFsX2xlbik7Ci0gICAgICAgICAgICBtZW1jcHkoKGNoYXIgKil2YXJzLT52YWwub2JqaWQsIChjaGFyICopb2lkYnVmLCB2YXJzLT52YWxfbGVuKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIApAQCAtODg2LDcgKzg4Nyw5IEBACiAKIHJldHJ5OgogCi0gICBzdGF0dXMgPSBzbm1wX3N5bmNoX3Jlc3BvbnNlKHNzLCBwZHUsIHJlc3BvbnNlKTsKKyAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgIHN0YXR1cyA9IHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZShzcywgcGR1LCByZXNwb25zZSk7CisgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICBpZiAoKCpyZXNwb25zZSA9PSBOVUxMKSAmJiAoc3RhdHVzID09IFNUQVRfU1VDQ0VTUykpIHN0YXR1cyA9IFNUQVRfRVJST1I7CiAKQEAgLTExMDQsNiArMTEwNyw4IEBACiAKICAgX19saWJyYXJpZXNfaW5pdCgicHl0aG9uIik7CiAKKyAgc25tcF9zZXNzX2luaXQoJnNlc3Npb24pOworCiAgIHNlc3Npb24udmVyc2lvbiA9IC0xOwogI2lmbmRlZiBESVNBQkxFX1NOTVBWMQogICBpZiAodmVyc2lvbiA9PSAxKSB7CkBAIC0xMTMyLDcgKzExMzcsNyBAQAogICBzZXNzaW9uLnRpbWVvdXQgPSB0aW1lb3V0OyAvKiAxMDAwMDAwTCAqLwogICBzZXNzaW9uLmF1dGhlbnRpY2F0b3IgPSBOVUxMOwogCi0gIHNzID0gc25tcF9vcGVuKCZzZXNzaW9uKTsKKyAgc3MgPSBzbm1wX3Nlc3Nfb3Blbigmc2Vzc2lvbik7CiAKICAgaWYgKHNzID09IE5VTEwpIHsKICAgICBpZiAodmVyYm9zZSkgCkBAIC0xMzAyLDcgKzEzMDcsNyBAQAogCiAgIHNzID0gKFNubXBTZXNzaW9uICopcHlfbmV0c25tcF9hdHRyX3ZvaWRfcHRyKHNlc3Npb24sICJzZXNzX3B0ciIpOwogCi0gIHNubXBfY2xvc2Uoc3MpOworICBzbm1wX3Nlc3NfY2xvc2Uoc3MpOwogICByZXR1cm4gKFB5X0J1aWxkVmFsdWUoIiIpKTsKIH0KIApAQCAtMTQ5MiwxMCArMTQ5NywxNiBAQAogCXB5X25ldHNubXBfYXR0cl9zZXRfc3RyaW5nKHZhcmJpbmQsICJ2YWwiLCAoY2hhciAqKSBzdHJfYnVmLCBsZW4pOwogCiAJLyogc2F2ZSBpbiByZXR1cm4gdHVwbGUgYXMgd2VsbCAqLwotCVB5VHVwbGVfU2V0SXRlbSh2YWxfdHVwbGUsIHZhcmxpc3RfaW5kLCAKLQkJCShsZW4gPyBQeV9CdWlsZFZhbHVlKCJzIyIsIHN0cl9idWYsIGxlbikgOgotCQkJIFB5X0J1aWxkVmFsdWUoIiIpKSk7Ci0KKwlpZiAoKHR5cGUgPT0gU05NUF9FTkRPRk1JQlZJRVcpIHx8CisJCQkodHlwZSA9PSBTTk1QX05PU1VDSE9CSkVDVCkgfHwKKwkJCSh0eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UpKSB7CisJCS8qIFRyYW5zbGF0ZSBlcnJvciB0byBOb25lICovCisJCVB5VHVwbGVfU2V0SXRlbSh2YWxfdHVwbGUsIHZhcmxpc3RfaW5kLCAKKwkJCVB5X0J1aWxkVmFsdWUoIiIpKTsKKwl9IGVsc2UgeworCQlQeVR1cGxlX1NldEl0ZW0odmFsX3R1cGxlLCB2YXJsaXN0X2luZCwKKwkJCVB5X0J1aWxkVmFsdWUoInMjIiwgc3RyX2J1ZiwgbGVuKSk7CisJfQogCVB5X0RFQ1JFRih2YXJiaW5kKTsKICAgICAgIH0gZWxzZSB7CiAJcHJpbnRmKCJuZXRzbm1wX2dldDogYmFkIHZhcmJpbmQgKCVkKVxuIiwgdmFybGlzdF9pbmQpOwpAQCAtMTcwNiwxMCArMTcxNywxNiBAQAogCXB5X25ldHNubXBfYXR0cl9zZXRfc3RyaW5nKHZhcmJpbmQsICJ2YWwiLCAoY2hhciAqKSBzdHJfYnVmLCBsZW4pOwogCiAJLyogc2F2ZSBpbiByZXR1cm4gdHVwbGUgYXMgd2VsbCAqLwotCVB5VHVwbGVfU2V0SXRlbSh2YWxfdHVwbGUsIHZhcmxpc3RfaW5kLCAKLQkJCShsZW4gPyBQeV9CdWlsZFZhbHVlKCJzIyIsIHN0cl9idWYsIGxlbikgOgotCQkJIFB5X0J1aWxkVmFsdWUoIiIpKSk7Ci0KKwlpZiAoKHR5cGUgPT0gU05NUF9FTkRPRk1JQlZJRVcpIHx8CisJCQkodHlwZSA9PSBTTk1QX05PU1VDSE9CSkVDVCkgfHwKKwkJCSh0eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UpKSB7CisJCS8qIFRyYW5zbGF0ZSBlcnJvciB0byBOb25lICovCisJCVB5VHVwbGVfU2V0SXRlbSh2YWxfdHVwbGUsIHZhcmxpc3RfaW5kLCAKKwkJCVB5X0J1aWxkVmFsdWUoIiIpKTsKKwl9IGVsc2UgeworCQlQeVR1cGxlX1NldEl0ZW0odmFsX3R1cGxlLCB2YXJsaXN0X2luZCwKKwkJCVB5X0J1aWxkVmFsdWUoInMjIiwgc3RyX2J1ZiwgbGVuKSk7CisJfQogCVB5X0RFQ1JFRih2YXJiaW5kKTsKICAgICAgIH0gZWxzZSB7CiAJcHJpbnRmKCJuZXRzbm1wX2dldG5leHQ6IGJhZCB2YXJiaW5kICglZClcbiIsIHZhcmxpc3RfaW5kKTsKQEAgLTE5NjksMTEgKzE5ODYsOCBAQAogICAgIAkgIC8qIHNhdmUgaW4gcmV0dXJuIHR1cGxlIGFzIHdlbGwgKi8KIAkgIC8qIHNhdmUgaW4gcmV0dXJuIHR1cGxlIGFzIHdlbGwgLSBzdGVhbHMgcmVmICovCiAJICBfUHlUdXBsZV9SZXNpemUoJnZhbF90dXBsZSwgcmVzdWx0X2NvdW50KzEpOwotCSAgUHlUdXBsZV9TZXRJdGVtKHZhbF90dXBsZSwgcmVzdWx0X2NvdW50KyssIAotCQkJICAobGVuID8gUHlfQnVpbGRWYWx1ZSgicyMiLCBzdHJfYnVmLCBsZW4pIDoKLQkJCSAgIFB5X0J1aWxkVmFsdWUoIiIpKSk7Ci0gICAgICAgICAgICAKLQorCSAgUHlUdXBsZV9TZXRJdGVtKHZhbF90dXBsZSwgcmVzdWx0X2NvdW50KyssCisJCQlQeV9CdWlsZFZhbHVlKCJzIyIsIHN0cl9idWYsIGxlbikpOwogICAgICAgICAgIH0gZWxzZSB7CiAJICAgIC8qIFJldHVybiBOb25lIGZvciB0aGlzIHZhcmlhYmxlLiAqLwogICAgICAgICAgICAgX1B5VHVwbGVfUmVzaXplKCZ2YWxfdHVwbGUsIHJlc3VsdF9jb3VudCsxKTsKQEAgLTIzNDUsNiArMjM1OSwxMCBAQAogCSAgc25tcF9mcmVlX3BkdShwZHUpOwogCSAgZ290byBkb25lOwogCX0KKwltZW1zZXQodG1wX3ZhbF9zdHIsIDAsIHNpemVvZih0bXBfdmFsX3N0cikpOworICAgICAgICBpZiAoIHRtcGxlbiA+PSBzaXplb2YodG1wX3ZhbF9zdHIpKSB7CisgICAgICAgICAgICB0bXBsZW4gPSBzaXplb2YodG1wX3ZhbF9zdHIpLTE7CisgICAgICAgIH0KIAltZW1jcHkodG1wX3ZhbF9zdHIsIHZhbCwgdG1wbGVuKTsKIAlpZiAodHlwZT09VFlQRV9JTlRFR0VSICYmIHVzZV9lbnVtcyAmJiB0cCAmJiB0cC0+ZW51bXMpIHsKIAkgIGZvcihlcCA9IHRwLT5lbnVtczsgZXA7IGVwID0gZXAtPm5leHQpIHsKZGlmZiAtLWdpdCBhL3NlZHNjcmlwdC5pbiBiL3NlZHNjcmlwdC5pbgppbmRleCBhZWRmN2I4Li43ODE0Y2U5IDEwMDY0NAotLS0gYS9zZWRzY3JpcHQuaW4KKysrIGIvc2Vkc2NyaXB0LmluCkBAIC0xMDYsNCArMTA2LDQgQEAKIAogcyNQUkVNT1ZFTUVTQ01EI1BTQ01EI2cKIHMjQVJFTU9WRU1FR0VOVFhfU09DS0VUI0FHRU5UWF9TT0NLRVQjZwotcy9WRVJTSU9OSU5GTy81LjQuMy5wcmUxL2cKK3MjTlJFTU9WRU1FRVRTTk1QX1RFTVBfRklMRV9QQVRURVJOI05FVFNOTVBfVEVNUF9GSUxFX1BBVFRFUk4jZwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQgYi9zbm1wbGliL01ha2VmaWxlLmRlcGVuZAppbmRleCBjYWM2NTEwLi42YzA4OGYxIDEwMDY0NAotLS0gYS9zbm1wbGliL01ha2VmaWxlLmRlcGVuZAorKysgYi9zbm1wbGliL01ha2VmaWxlLmRlcGVuZApAQCAtNywxMyArNywzMCBAQAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCkBAIC0yMiw5ICszOSw3IEBACiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTMzLDIxICs0OCw0MCBAQAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKQEAgLTU2LDkgKzkwLDcgQEAKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtNzYsMzIgKzEwOCwxNCBAQAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTExMiwxMSArMTI2LDMxIEBACiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEzOSw2ICsxNzMsNzQgQEAKIC4vY211X2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL2NtdV9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9jbXVfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTQ2LDMyICsyNDgsMTQgQEAKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTgyLDEwICsyNjYsMzEgQEAKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjA0LDcyICszMDksNiBAQAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX251bGwuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMjc4LDMyICszMTcsMTQgQEAKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTMxNCwxMSArMzM1LDMxIEBACiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzQ0LDMyICszODUsMTQgQEAKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zODAsMTEgKzQwMywzMSBAQAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00MTAsMzIgKzQ1MywxNCBAQAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00NDYsMTEgKzQ3MSwzMSBAQAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDc2LDMyICs1MjEsMTQgQEAKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNTEyLDEwICs1MzksMzEgQEAKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNTM5LDE0ICs1ODcsMzMgQEAKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApAQCAtNTYxLDkgKzYyOCw3IEBACiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTU3Myw2ICs2MzgsNzQgQEAKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC01ODEsMzIgKzcxNCwxNCBAQAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTYxNywxMSArNzMyLDMxIEBACiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTY0MCw0MCArNzc1LDIwIEBACiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTY4NCwxMCArNzk5LDMxIEBACiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTcwNywzOCArODQzLDg0IEBACiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC03NDcsMTkgKzkyOSwzNCBAQAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaApAQCAtNzY4LDkgKzk2NSw3IEBACiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTc4MywyMCArOTc4LDY2IEBACiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCkBAIC04MDUsOSArMTA0Niw3IEBACiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTgxOCwzMyArMTA1Nyw0MyBAQAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTg1NiwxOSArMTEwNSwzMiBAQAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21kNS5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC04ODIsOSArMTE0NCw3IEBACiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTg5Myw0NyArMTE1MywyMCBAQAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9tdF9zdXBwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL210X3N1cHBvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vbXRfc3VwcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL210X3N1cHBvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9tdF9zdXBwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL210X3N1cHBvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05NDQsMTAgKzExNzcsMzEgQEAKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtOTY2LDE5ICsxMjIwLDMyIEBACiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApAQCAtOTkzLDkgKzEyNjAsNyBAQAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xMDA0LDI3ICsxMjY5LDM3IEBACiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3BrY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vcGtjcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9wa2NzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vcGtjcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3BrY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApAQCAtMTAzOSw5ICsxMzE0LDcgQEAKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMTA1MSwyMiArMTMyNCwzMyBAQAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaApAQCAtMTA3NSw5ICsxMzU5LDcgQEAKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMTA4OCw1NSArMTM3MCwzOSBAQAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTExNDUsMjI5ICsxNDExLDM2IEBACiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQUFMNVBWQ0RvbWFpbi5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFNURERvbWFpbi5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC0xMzgyLDkgKzE0NTUsNyBAQAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xMzk0LDIwICsxNDY1LDg4IEBACiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC0xNDIyLDkgKzE1NjEsNyBAQAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xNDM0LDMxICsxNTcxLDQyIEBACiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF9hcGkubG86IC4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCkBAIC0xNDY3LDkgKzE2MTUsNyBAQAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xNDc5LDQzICsxNjI1LDE1NCBAQAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWQ1LmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTE1MzAsOSArMTc4Nyw3IEBACiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE1NDIsMTYgKzE3OTcsNzIgQEAKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcERUTFNVRFBEb21haW4uaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1NjIsMjAgKzE4NzMsMTI5IEBACiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC0xNTkwLDkgKzIwMTAsNyBAQAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xNjAyLDIwICsyMDIwLDEwMCBAQAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC0xNjMwLDkgKzIxMjgsNyBAQAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xNjQyLDI2ICsyMTM4LDM5IEBACiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTE2NzYsOSArMjE4NSw3IEBACiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE2ODksNDIgKzIxOTYsMTkgQEAKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIHNubXBzbV9pbml0LmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE3MzUsMTEgKzIyMTksMzEgQEAKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNzU3LDIwICsyMjYxLDE2NyBAQAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBTU0hEb21haW4uaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1RERG9tYWluLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKQEAgLTE3NzksOSArMjQzMCw3IEBACiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE3OTEsODAgKzI0NDAsMTc0IEBACiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9zbm1wX3ZlcnNpb24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcF92ZXJzaW9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfdmVyc2lvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfdmVyc2lvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBfdmVyc2lvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wX3ZlcnNpb24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC0xODc5LDkgKzI2MjIsNyBAQAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xODk2LDIyICsyNjM3LDM0IEBACiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTE5MjYsOSArMjY3OSw3IEBACiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE5NDMsNzQgKzI2OTQsNzEgQEAKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zbm1wX3ZlcnNpb24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF92ZXJzaW9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbnByaW50Zi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbnByaW50Zi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbnByaW50Zi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NucHJpbnRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25wcmludGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zdHJ0b2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc3RydG9sLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3N0cnRvbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3N0cnRvbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3N0cnRvbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zdHJ0b3VsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3N0cnRvdWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc3RydG91bC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3N0cnRvdWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zdHJ0b3VsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCkBAIC0yMDE5LDkgKzI3NjcsNyBAQAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0yMDMyLDQwICsyNzc4LDIzIEBACiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjA3NiwxMSArMjgwNSwzMSBAQAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjA5OSwzOSArMjg0OCwxNyBAQAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMTQyLDEwICsyODY5LDMxIEBACiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIxNjYsMTkgKzI5MTQsMzIgQEAKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdGV4dF91dGlscy5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKQEAgLTIxODcsOSArMjk0OCw3IEBACiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTIxOTgsMjIgKzI5NTcsMTcgQEAKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaApAQCAtMjIyNSwyNyArMjk3OSw0NiBAQAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApkaWZmIC0tZ2l0IGEvc25tcGxpYi9NYWtlZmlsZS5pbiBiL3NubXBsaWIvTWFrZWZpbGUuaW4KaW5kZXggMzRlMzBlNi4uYWZkNTYyNCAxMDA2NDQKLS0tIGEvc25tcGxpYi9NYWtlZmlsZS5pbgorKysgYi9zbm1wbGliL01ha2VmaWxlLmluCkBAIC01NSw2ICs1NSw3IEBACiAJZmFjdG9yeS5oIFwKIAlkYXRhX2xpc3QuaCBcCiAJZGVmYXVsdF9zdG9yZS5oIFwKKwlkaXJfdXRpbHMuaCBcCiAJZmRfZXZlbnRfbWFuYWdlci5oIFwKIAlmaWxlX3V0aWxzLmggXAogCWludDY0LmggXApAQCAtNjcsNiArNjgsNyBAQAogCXNubXAuaCBcCiAJc25tcF9hbGFybS5oIFwKIAlzbm1wX2FwaS5oIFwKKwlsYXJnZV9mZF9zZXQuaCBcCiAJc25tcF9hc3NlcnQuaCBcCiAJc25tcF9jbGllbnQuaCBcCiAJc25tcF9kZWJ1Zy5oIFwKQEAgLTgwLDYgKzgyLDcgQEAKIAl0ZXh0X3V0aWxzLmggXAogCXRvb2xzLmggXAogCXRyYW5zZm9ybV9vaWRzLmggXAorCXR5cGVzLmggXAogICAgICAgICBjbXVfY29tcGF0LmggXAogICAgICAgICBnZXRvcHQuaCBcCiAgICAgICAgIGxjZF90aW1lLmggXApAQCAtMTExLDYgKzExNCw3IEBACiAJc2NhcGkuaAkJXAogCXNubXBfYWxhcm0uaAlcCiAJc25tcF9hcGkuaAlcCisJbGFyZ2VfZmRfc2V0LmgJXAogCXNubXBfY2xpZW50LmgJXAogCXNubXBfZGVidWcuaAlcCiAJc25tcC5oCQlcCkBAIC0xMzQsMTAgKzEzOCwxMSBAQAogIyBUaGluZ3MgdG8gYnVpbGQKICMKIENTUkNTPQlzbm1wX2NsaWVudC5jIG1pYi5jIHBhcnNlLmMgc25tcF9hcGkuYyBzbm1wLmMgCQlcCisJbGFyZ2VfZmRfc2V0LmMJCQkJCQlcCiAJc25tcF9hdXRoLmMgYXNuMS5jIG1kNS5jIHNubXBfcGFyc2VfYXJncy5jCQlcCiAJc3lzdGVtLmMgdmFjbS5jIGludDY0LmMgcmVhZF9jb25maWcuYyBwa2NzLmMJCVwKIAlzbm1wX2RlYnVnLmMgdG9vbHMuYyAgc25tcF9sb2dnaW5nLmMgdGV4dF91dGlscy5jCVwKLQlzbm1wdjMuYyBsY2RfdGltZS5jIGtleXRvb2xzLmMgZmlsZV91dGlscy5jCQlcCisJc25tcHYzLmMgbGNkX3RpbWUuYyBrZXl0b29scy5jIGZpbGVfdXRpbHMuYyBkaXJfdXRpbHMuYyBcCiAJc2NhcGkuYyBjYWxsYmFjay5jIGRlZmF1bHRfc3RvcmUuYyBzbm1wX2FsYXJtLmMJCVwKIAlkYXRhX2xpc3QuYyBvaWRfc3Rhc2guYyBmZF9ldmVudF9tYW5hZ2VyLmMgCQlcCiAJbXRfc3VwcG9ydC5jIHNubXBfZW51bS5jIHNubXAtdGMuYyBzbm1wX3NlcnZpY2UuYwlcCkBAIC0xNDYsMTMgKzE1MSwxNCBAQAogCXNubXBfc2VjbW9kLmMgQHNlY3VyaXR5X3NyY19saXN0QCBzbm1wX3ZlcnNpb24uYyAgICAgICAgXAogCWNoZWNrX3ZhcmJpbmQuYyBjb250YWluZXIuYyBjb250YWluZXJfYmluYXJ5X2FycmF5LmMJXAogCWNvbnRhaW5lcl9udWxsLmMgY29udGFpbmVyX2xpc3Rfc3NsbC5jIGNvbnRhaW5lcl9pdGVyYXRvci5jIFwKLQljbXVfY29tcGF0LmMgdWNkX2NvbXBhdC5jIEBvdGhlcl9zcmNfbGlzdEAKKwljbXVfY29tcGF0LmMgdWNkX2NvbXBhdC5jIHNubXBfb3BlbnNzbC5jIEBvdGhlcl9zcmNfbGlzdEAKIAogT0JKUz0Jc25tcF9jbGllbnQubyBtaWIubyBwYXJzZS5vIHNubXBfYXBpLm8gc25tcC5vIAkJXAorCWxhcmdlX2ZkX3NldC5vCQkJCQkJXAogCXNubXBfYXV0aC5vIGFzbjEubyBtZDUubyBzbm1wX3BhcnNlX2FyZ3MubwkJXAogCXN5c3RlbS5vIHZhY20ubyBpbnQ2NC5vIHJlYWRfY29uZmlnLm8gcGtjcy5vIAkJXAogCXNubXBfZGVidWcubyB0b29scy5vICBzbm1wX2xvZ2dpbmcubyB0ZXh0X3V0aWxzLm8JXAotCXNubXB2My5vIGxjZF90aW1lLm8ga2V5dG9vbHMubyBmaWxlX3V0aWxzLm8JCVwKKwlzbm1wdjMubyBsY2RfdGltZS5vIGtleXRvb2xzLm8gZmlsZV91dGlscy5vIGRpcl91dGlscy5vIFwKIAlzY2FwaS5vIGNhbGxiYWNrLm8gZGVmYXVsdF9zdG9yZS5vIHNubXBfYWxhcm0ubwkJXAogCWRhdGFfbGlzdC5vIG9pZF9zdGFzaC5vIGZkX2V2ZW50X21hbmFnZXIubwkJXAogCW10X3N1cHBvcnQubyBzbm1wX2VudW0ubyBzbm1wLXRjLm8gc25tcF9zZXJ2aWNlLm8JXApAQCAtMTYxLDEzICsxNjcsMTQgQEAKIAlzbm1wX3NlY21vZC5vIEBzZWN1cml0eV9vYmpfbGlzdEAgc25tcF92ZXJzaW9uLm8gICAgICAgIFwKIAljaGVja192YXJiaW5kLm8gY29udGFpbmVyLm8gY29udGFpbmVyX2JpbmFyeV9hcnJheS5vCVwKIAljb250YWluZXJfbnVsbC5vIGNvbnRhaW5lcl9saXN0X3NzbGwubyBjb250YWluZXJfaXRlcmF0b3IubyBcCi0JY211X2NvbXBhdC5vIHVjZF9jb21wYXQubyBAb3RoZXJfb2Jqc19saXN0QAorCWNtdV9jb21wYXQubyB1Y2RfY29tcGF0Lm8gc25tcF9vcGVuc3NsLm8gQG90aGVyX29ianNfbGlzdEAKIAogTE9CSlM9CXNubXBfY2xpZW50LmxvIG1pYi5sbyBwYXJzZS5sbyBzbm1wX2FwaS5sbyBzbm1wLmxvIAlcCisJbGFyZ2VfZmRfc2V0LmxvCQkJCQkJXAogCXNubXBfYXV0aC5sbyBhc24xLmxvIG1kNS5sbyBzbm1wX3BhcnNlX2FyZ3MubG8JCVwKIAlzeXN0ZW0ubG8gdmFjbS5sbyBpbnQ2NC5sbyByZWFkX2NvbmZpZy5sbyBwa2NzLmxvCVwKIAlzbm1wX2RlYnVnLmxvIHRvb2xzLmxvICBzbm1wX2xvZ2dpbmcubG8JIHRleHRfdXRpbHMubG8JXAotCXNubXB2My5sbyBsY2RfdGltZS5sbyBrZXl0b29scy5sbyBmaWxlX3V0aWxzLmxvCQlcCisJc25tcHYzLmxvIGxjZF90aW1lLmxvIGtleXRvb2xzLmxvIGZpbGVfdXRpbHMubG8gZGlyX3V0aWxzLmxvIFwKIAlzY2FwaS5sbyBjYWxsYmFjay5sbyBkZWZhdWx0X3N0b3JlLmxvIHNubXBfYWxhcm0ubG8JCVwKIAlkYXRhX2xpc3QubG8gb2lkX3N0YXNoLmxvIGZkX2V2ZW50X21hbmFnZXIubG8JCVwKIAltdF9zdXBwb3J0LmxvIHNubXBfZW51bS5sbyBzbm1wLXRjLmxvIHNubXBfc2VydmljZS5sbwlcCkBAIC0xNzYsNyArMTgzLDcgQEAKIAlzbm1wX3NlY21vZC5sbyBAc2VjdXJpdHlfbG9ial9saXN0QCBzbm1wX3ZlcnNpb24ubG8gICAgICAgXAogCWNoZWNrX3ZhcmJpbmQubG8gY29udGFpbmVyLmxvIGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG8JXAogCWNvbnRhaW5lcl9udWxsLmxvIGNvbnRhaW5lcl9saXN0X3NzbGwubG8gY29udGFpbmVyX2l0ZXJhdG9yLmxvIFwKLQljbXVfY29tcGF0LmxvIHVjZF9jb21wYXQubG8gQG90aGVyX2xvYmpzX2xpc3RACisJY211X2NvbXBhdC5sbyB1Y2RfY29tcGF0LmxvIHNubXBfb3BlbnNzbC5sbyBAb3RoZXJfbG9ianNfbGlzdEAKIAogIyBqdXN0IGluIGNhc2Ugc29tZW9uZSB3YW50cyB0byByZW1vdmUgbGlidG9vbCwgY2hhbmdlIHRoaXMgdG8gT0JKUy4KIFRPQkpTPSQoTE9CSlMpCkBAIC0xODgsMTEgKzE5NSwxMSBAQAogCiAjIGhvdyB0byBidWlsZCB0aGUgbGlicmFyaWVzLgogbGlibmV0c25tcC4kKExJQl9FWFRFTlNJT04pJChMSUJfVkVSU0lPTik6ICAgICQoVE9CSlMpCi0JJChMSUJfTERfQ01EKSAkQCAkKFRPQkpTKSAkKExERkxBR1MpIEBMTkVUU05NUExJQlNACisJJChMSUJfTERfQ01EKSAkQCBATERfTk9fVU5ERUZJTkVEQCAkKFRPQkpTKSAkKExERkxBR1MpIEBMTkVUU05NUExJQlNACiAJJChSQU5MSUIpICRACiAKIGxpYnNubXAuJChMSUJfRVhURU5TSU9OKSQoTElCX1ZFUlNJT04pOiAgICAkKFRPQkpTKQotCSQoTElCX0xEX0NNRCkgJEAgJChUT0JKUykgJChMREZMQUdTKSBATE5FVFNOTVBMSUJTQAorCSQoTElCX0xEX0NNRCkgJEAgQExEX05PX1VOREVGSU5FREAgJChUT0JKUykgJChMREZMQUdTKSBATE5FVFNOTVBMSUJTQAogCSQoUkFOTElCKSAkQAogCiAjCmRpZmYgLS1naXQgYS9zbm1wbGliL2FzbjEuYyBiL3NubXBsaWIvYXNuMS5jCmluZGV4IDIzNDZlNmMuLmY5NjMyZWYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvYXNuMS5jCisrKyBiL3NubXBsaWIvYXNuMS5jCkBAIC0yNTEsNiArMjUxLDI0IEBACiB9CiAKIC8qKgorICogQGludGVybmFsCisgKiBvdXRwdXQgYW4gZXJyb3IgZm9yIGEgd3JvbmcgdHlwZQorICogCisgKiBAcGFyYW0gc3RyICAgICAgICBlcnJvciBzdHJpbmcKKyAqIEBwYXJhbSB3cm9uZ3R5cGUgIHdyb25nIHR5cGUKKyAqLworc3RhdGljCisgICAgdm9pZAorX2Fzbl90eXBlX2Vycihjb25zdCBjaGFyICpzdHIsIGludCB3cm9uZ3R5cGUpCit7CisgICAgY2hhciAgICAgICAgICAgIGVidWZbMTI4XTsKKworICAgIHNucHJpbnRmKGVidWYsIHNpemVvZihlYnVmKSwgIiVzIHR5cGUgJWQiLCBzdHIsIHdyb25ndHlwZSk7CisgICAgZWJ1Zlsgc2l6ZW9mKGVidWYpLTEgXSA9IDA7CisgICAgRVJST1JfTVNHKGVidWYpOworfQorCisvKioKICAqIEBpbnRlcm5hbCAKICAqIG91dHB1dCBhbiBlcnJvciBmb3IgYSB3cm9uZyBsZW5ndGgKICAqIApAQCAtNDgyLDEyICs1MDAsMTcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgICp0eXBlID0gKmJ1ZnArKzsKKyAgICBpZiAoKnR5cGUgIT0gQVNOX0lOVEVHRVIpIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgYnVmcCA9IGFzbl9wYXJzZV9sZW5ndGgoYnVmcCwgJmFzbl9sZW5ndGgpOwogICAgIGlmIChfYXNuX3BhcnNlX2xlbmd0aF9jaGVjawogICAgICAgICAoZXJycHJlLCBidWZwLCBkYXRhLCBhc25fbGVuZ3RoLCAqZGF0YWxlbmd0aCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKChzaXplX3QpIGFzbl9sZW5ndGggPiBpbnRzaXplKSB7CisgICAgaWYgKChzaXplX3QpIGFzbl9sZW5ndGggPiBpbnRzaXplIHx8IChpbnQpIGFzbl9sZW5ndGggPT0gMCkgewogICAgICAgICBfYXNuX2xlbmd0aF9lcnIoZXJycHJlLCAoc2l6ZV90KSBhc25fbGVuZ3RoLCBpbnRzaXplKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNTAzLDcgKzUyNiw3IEBACiAKICAgICBDSEVDS19PVkVSRkxPV19TKHZhbHVlLDEpOwogCi0gICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgdmFsdWUsIHZhbHVlKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJsWClcbiIsIHZhbHVlLCB2YWx1ZSkpOwogCiAgICAgKmludHAgPSB2YWx1ZTsKICAgICByZXR1cm4gYnVmcDsKQEAgLTU0OSwxMiArNTcyLDE3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAqdHlwZSA9ICpidWZwKys7CisgICAgaWYgKCp0eXBlICE9IEFTTl9DT1VOVEVSICYmICp0eXBlICE9IEFTTl9HQVVHRSAmJiAqdHlwZSAhPSBBU05fVElNRVRJQ0tTCisgICAgICAgICAgICAmJiAqdHlwZSAhPSBBU05fVUlOVEVHRVIpIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGJ1ZnAgPSBhc25fcGFyc2VfbGVuZ3RoKGJ1ZnAsICZhc25fbGVuZ3RoKTsKICAgICBpZiAoX2Fzbl9wYXJzZV9sZW5ndGhfY2hlY2sKICAgICAgICAgKGVycnByZSwgYnVmcCwgZGF0YSwgYXNuX2xlbmd0aCwgKmRhdGFsZW5ndGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICgoKGludCkgYXNuX2xlbmd0aCA+IChpbnRzaXplICsgMSkpIHx8CisgICAgaWYgKCgoaW50KSBhc25fbGVuZ3RoID4gKGludHNpemUgKyAxKSkgfHwgKChpbnQpIGFzbl9sZW5ndGggPT0gMCkgfHwKICAgICAgICAgKCgoaW50KSBhc25fbGVuZ3RoID09IGludHNpemUgKyAxKSAmJiAqYnVmcCAhPSAweDAwKSkgewogICAgICAgICBfYXNuX2xlbmd0aF9lcnIoZXJycHJlLCAoc2l6ZV90KSBhc25fbGVuZ3RoLCBpbnRzaXplKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NzAsNyArNTk4LDcgQEAKIAogICAgIENIRUNLX09WRVJGTE9XX1UodmFsdWUsMik7CiAKLSAgICBERUJVR01TRygoImR1bXB2X3JlY3YiLCAiICBVSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgdmFsdWUsIHZhbHVlKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgVUludGVnZXI6XHQlbGQgKDB4JS4ybFgpXG4iLCB2YWx1ZSwgdmFsdWUpKTsKIAogICAgICppbnRwID0gdmFsdWU7CiAgICAgcmV0dXJuIGJ1ZnA7CkBAIC02NDksNyArNjc3LDcgQEAKICAgICAgICAgaW50ZWdlciA8PD0gODsKICAgICB9CiAgICAgREVCVUdEVU1QU0VUVVAoInNlbmQiLCBpbml0ZGF0YXAsIGRhdGEgLSBpbml0ZGF0YXApOwotICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIEludGVnZXI6XHQlbGQgKDB4JS4yWClcbiIsICppbnRwLCAqaW50cCkpOworICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIEludGVnZXI6XHQlbGQgKDB4JS4ybFgpXG4iLCAqaW50cCwgKmludHApKTsKICAgICByZXR1cm4gZGF0YTsKIH0KIApAQCAtNzQ1LDcgKzc3Myw3IEBACiAgICAgICAgIGludGVnZXIgPDw9IDg7CiAgICAgfQogICAgIERFQlVHRFVNUFNFVFVQKCJzZW5kIiwgaW5pdGRhdGFwLCBkYXRhIC0gaW5pdGRhdGFwKTsKLSAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBVSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgKmludHAsICppbnRwKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgVUludGVnZXI6XHQlbGQgKDB4JS4ybFgpXG4iLCAqaW50cCwgKmludHApKTsKICAgICByZXR1cm4gZGF0YTsKIH0KIApAQCAtNzg4LDYgKzgxNiwxMiBAQAogICAgIHVfbG9uZyAgICAgICAgICBhc25fbGVuZ3RoOwogCiAgICAgKnR5cGUgPSAqYnVmcCsrOworICAgIGlmICgqdHlwZSAhPSBBU05fT0NURVRfU1RSICYmICp0eXBlICE9IEFTTl9JUEFERFJFU1MgJiYgKnR5cGUgIT0gQVNOX09QQVFVRQorICAgICAgICAgICAgJiYgKnR5cGUgIT0gQVNOX05TQVApIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgYnVmcCA9IGFzbl9wYXJzZV9sZW5ndGgoYnVmcCwgJmFzbl9sZW5ndGgpOwogICAgIGlmIChfYXNuX3BhcnNlX2xlbmd0aF9jaGVjawogICAgICAgICAoZXJycHJlLCBidWZwLCBkYXRhLCBhc25fbGVuZ3RoLCAqZGF0YWxlbmd0aCkpIHsKQEAgLTEyODYsNiArMTMyMCw3IEBACiAgICAgICAgICAgICAgICAgc2l6ZV90ICogZGF0YWxlbmd0aCwKICAgICAgICAgICAgICAgICB1X2NoYXIgKiB0eXBlLCBvaWQgKiBvYmppZCwgc2l6ZV90ICogb2JqaWRsZW5ndGgpCiB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmVycnByZSA9ICJwYXJzZSBvYmppZCI7CiAgICAgLyoKICAgICAgKiBBU04uMSBvYmppZCA6Oj0gMHgwNiBhc25sZW5ndGggc3ViaWRlbnRpZmllciB7c3ViaWRlbnRpZmllcn0qCiAgICAgICogc3ViaWRlbnRpZmllciA6Oj0ge2xlYWRpbmdieXRlfSogbGFzdGJ5dGUKQEAgLTEzMDAsNiArMTMzNSwxMCBAQAogICAgIHNpemVfdCAgICAgICAgICBvcmlnaW5hbF9sZW5ndGggPSAqb2JqaWRsZW5ndGg7CiAKICAgICAqdHlwZSA9ICpidWZwKys7CisgICAgaWYgKCp0eXBlICE9IEFTTl9PQkpFQ1RfSUQpIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGJ1ZnAgPSBhc25fcGFyc2VfbGVuZ3RoKGJ1ZnAsICZhc25fbGVuZ3RoKTsKICAgICBpZiAoX2Fzbl9wYXJzZV9sZW5ndGhfY2hlY2soInBhcnNlIG9iamlkIiwgYnVmcCwgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNuX2xlbmd0aCwgKmRhdGFsZW5ndGgpKQpAQCAtMTY2OSw2ICsxNzA4LDEwIEBACiAgICAgdV9sb25nICAgICAgICAgIGFzbl9sZW5ndGg7CiAKICAgICAqdHlwZSA9ICpidWZwKys7CisgICAgaWYgKCp0eXBlICE9IEFTTl9CSVRfU1RSKSB7CisgICAgICAgIF9hc25fdHlwZV9lcnIoZXJycHJlLCAqdHlwZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBidWZwID0gYXNuX3BhcnNlX2xlbmd0aChidWZwLCAmYXNuX2xlbmd0aCk7CiAgICAgaWYgKF9hc25fcGFyc2VfbGVuZ3RoX2NoZWNrKGVycnByZSwgYnVmcCwgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNuX2xlbmd0aCwgKmRhdGFsZW5ndGgpKQpAQCAtMTc4OSw2ICsxODMyLDE0IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAqdHlwZSA9ICpidWZwKys7CisgICAgaWYgKCp0eXBlICE9IEFTTl9DT1VOVEVSNjQKKyNpZmRlZiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMKKyAgICAgICAgICAgICYmICp0eXBlICE9IEFTTl9PUEFRVUUKKyNlbmRpZgorICAgICAgICAgICAgKSB7CisgICAgICAgIF9hc25fdHlwZV9lcnIoZXJycHJlLCAqdHlwZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBidWZwID0gYXNuX3BhcnNlX2xlbmd0aChidWZwLCAmYXNuX2xlbmd0aCk7CiAgICAgaWYgKF9hc25fcGFyc2VfbGVuZ3RoX2NoZWNrCiAgICAgICAgIChlcnJwcmUsIGJ1ZnAsIGRhdGEsIGFzbl9sZW5ndGgsICpkYXRhbGVuZ3RoKSkKQEAgLTE5ODgsNyArMjAzOSw3IEBACiAgICAgREVCVUdJRigiZHVtcHZfc2VuZCIpIHsKICAgICAgICAgY2hhciAgICAgICAgICAgIGk2NGJ1ZltJNjRDSEFSU1ogKyAxXTsKICAgICAgICAgcHJpbnRVNjQoaTY0YnVmLCBjcCk7Ci0gICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsIGk2NGJ1ZikpOworICAgICAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiJXMiLCBpNjRidWYpKTsKICAgICB9CiAgICAgcmV0dXJuIGRhdGE7CiB9CkBAIC0yMjI0LDYgKzIyNzUsNyBAQAogICAgICAgICAgICAgICAgIHNpemVfdCAqIGRhdGFsZW5ndGgsCiAgICAgICAgICAgICAgICAgdV9jaGFyICogdHlwZSwgZmxvYXQgKmZsb2F0cCwgc2l6ZV90IGZsb2F0c2l6ZSkKIHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqZXJycHJlID0gInBhcnNlIGZsb2F0IjsKICAgICByZWdpc3RlciB1X2NoYXIgKmJ1ZnAgPSBkYXRhOwogICAgIHVfbG9uZyAgICAgICAgICBhc25fbGVuZ3RoOwogICAgIHVuaW9uIHsKQEAgLTIyNjQsNiArMjMxNiwxMSBAQAogICAgICAgICAqdHlwZSA9IEFTTl9PUEFRVUVfRkxPQVQ7CiAgICAgfQogCisgICAgaWYgKCp0eXBlICE9IEFTTl9PUEFRVUVfRkxPQVQpIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKGFzbl9sZW5ndGggIT0gc2l6ZW9mKGZsb2F0KSkgewogICAgICAgICBfYXNuX3NpemVfZXJyKCJwYXJzZSBzZXEgZmxvYXQiLCBhc25fbGVuZ3RoLCBzaXplb2YoZmxvYXQpKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzg5LDYgKzI0NDYsNyBAQAogICAgICAgICAgICAgICAgICBzaXplX3QgKiBkYXRhbGVuZ3RoLAogICAgICAgICAgICAgICAgICB1X2NoYXIgKiB0eXBlLCBkb3VibGUgKmRvdWJsZXAsIHNpemVfdCBkb3VibGVzaXplKQogeworICAgIHN0YXRpYyBjb25zdCBjaGFyICplcnJwcmUgPSAicGFyc2UgZG91YmxlIjsKICAgICByZWdpc3RlciB1X2NoYXIgKmJ1ZnAgPSBkYXRhOwogICAgIHVfbG9uZyAgICAgICAgICBhc25fbGVuZ3RoOwogICAgIGxvbmcgICAgICAgICAgICB0bXA7CkBAIC0yNDMxLDYgKzI0ODksMTEgQEAKICAgICAgICAgKnR5cGUgPSBBU05fT1BBUVVFX0RPVUJMRTsKICAgICB9CiAKKyAgICBpZiAoKnR5cGUgIT0gQVNOX09QQVFVRV9ET1VCTEUpIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKGFzbl9sZW5ndGggIT0gc2l6ZW9mKGRvdWJsZSkpIHsKICAgICAgICAgX2Fzbl9zaXplX2VycigicGFyc2Ugc2VxIGRvdWJsZSIsIGFzbl9sZW5ndGgsIHNpemVvZihkb3VibGUpKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNTU3LDE1ICsyNjIwLDE2IEBACiAgICAgaWYgKHBrdCAhPSBOVUxMICYmIHBrdF9sZW4gIT0gTlVMTCkgewogICAgICAgICBzaXplX3QgICAgICAgICAgb2xkX3BrdF9sZW4gPSAqcGt0X2xlbjsKIAotICAgICAgICBERUJVR01TR1RMKCgiYXNuX3JlYWxsb2MiLCAiIG9sZF9wa3QgJTA4cCwgb2xkX3BrdF9sZW4gJTA4eFxuIiwKLSAgICAgICAgICAgICAgICAgICAgKnBrdCwgb2xkX3BrdF9sZW4pKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImFzbl9yZWFsbG9jIiwgIiBvbGRfcGt0ICU4cCwgb2xkX3BrdF9sZW4gJWx1XG4iLAorICAgICAgICAgICAgICAgICAgICAqcGt0LCAodW5zaWduZWQgbG9uZylvbGRfcGt0X2xlbikpOwogCiAgICAgICAgIGlmIChzbm1wX3JlYWxsb2MocGt0LCBwa3RfbGVuKSkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImFzbl9yZWFsbG9jIiwgIiBuZXdfcGt0ICUwOHAsIG5ld19wa3RfbGVuICUwOHhcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAqcGt0LCAqcGt0X2xlbikpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFzbl9yZWFsbG9jIiwgIiBuZXdfcGt0ICU4cCwgbmV3X3BrdF9sZW4gJWx1XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgKnBrdCwgKHVuc2lnbmVkIGxvbmcpKnBrdF9sZW4pKTsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhc25fcmVhbGxvYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiIG1lbW1vdmUoJTA4cCArICUwOHgsICUwOHAsICUwOHgpXG4iLCAqcGt0LAotICAgICAgICAgICAgICAgICAgICAgICAgKCpwa3RfbGVuIC0gb2xkX3BrdF9sZW4pLCAqcGt0LCBvbGRfcGt0X2xlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgIiBtZW1tb3ZlKCU4cCArICUwOHgsICU4cCwgJTA4eClcbiIsCisJCQkqcGt0LCAodW5zaWduZWQpKCpwa3RfbGVuIC0gb2xkX3BrdF9sZW4pLAorCQkJKnBrdCwgKHVuc2lnbmVkKW9sZF9wa3RfbGVuKSk7CiAgICAgICAgICAgICBtZW1tb3ZlKCpwa3QgKyAoKnBrdF9sZW4gLSBvbGRfcGt0X2xlbiksICpwa3QsIG9sZF9wa3RfbGVuKTsKICAgICAgICAgICAgIG1lbXNldCgqcGt0LCAoaW50KSAnICcsICpwa3RfbGVuIC0gb2xkX3BrdF9sZW4pOwogICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC0yNzU2LDcgKzI4MjAsNyBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgREVCVUdEVU1QU0VUVVAoInNlbmQiLCAoKnBrdCArICpwa3RfbGVuIC0gKm9mZnNldCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm9mZnNldCAtIHN0YXJ0X29mZnNldCkpOwotICAgICAgICAgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgKmludHAsCisgICAgICAgICAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBJbnRlZ2VyOlx0JWxkICgweCUuMmxYKVxuIiwgKmludHAsCiAgICAgICAgICAgICAgICAgICAgICAgKmludHApKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CkBAIC0yOTA5LDcgKzI5NzMsNyBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgREVCVUdEVU1QU0VUVVAoInNlbmQiLCAoKnBrdCArICpwa3RfbGVuIC0gKm9mZnNldCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm9mZnNldCAtIHN0YXJ0X29mZnNldCkpOwotICAgICAgICAgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgVUludGVnZXI6XHQlbHUgKDB4JS4yWClcbiIsICppbnRwLAorICAgICAgICAgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgVUludGVnZXI6XHQlbHUgKDB4JS4ybFgpXG4iLCAqaW50cCwKICAgICAgICAgICAgICAgICAgICAgICAqaW50cCkpOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3NubXBsaWIvY29udGFpbmVyLmMgYi9zbm1wbGliL2NvbnRhaW5lci5jCmluZGV4IDA4YTRjNjMuLmI1NjQ0MWUgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY29udGFpbmVyLmMKKysrIGIvc25tcGxpYi9jb250YWluZXIuYwpAQCAtMSwzICsxLDEzIEBACisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CkBAIC03MSwxMCArODEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfZmFjdG9yeSgic29ydGVkX3NpbmdseV9saW5rZWRfbGlzdCIpKTsKIAogICAgIG5ldHNubXBfY29udGFpbmVyX3JlZ2lzdGVyX3dpdGhfY29tcGFyZQorICAgICAgICAoImNzdHJpbmciLCBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfZmFjdG9yeSgiYmluYXJ5X2FycmF5IiksCisgICAgICAgICBuZXRzbm1wX2NvbXBhcmVfZGlyZWN0X2NzdHJpbmcpOworCisgICAgbmV0c25tcF9jb250YWluZXJfcmVnaXN0ZXJfd2l0aF9jb21wYXJlCiAgICAgICAgICgic3RyaW5nIiwgbmV0c25tcF9jb250YWluZXJfZ2V0X2ZhY3RvcnkoImJpbmFyeV9hcnJheSIpLAogICAgICAgICAgbmV0c25tcF9jb21wYXJlX2NzdHJpbmcpOwogICAgIG5ldHNubXBfY29udGFpbmVyX3JlZ2lzdGVyX3dpdGhfY29tcGFyZQotICAgICAgICAoInN0cmluZzpiaW5hcnlfYXJyYXkiLCBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfZmFjdG9yeSgiYmluYXJ5X2FycmF5IiksCisgICAgICAgICgic3RyaW5nX2JpbmFyeV9hcnJheSIsIG5ldHNubXBfY29udGFpbmVyX2dldF9mYWN0b3J5KCJiaW5hcnlfYXJyYXkiKSwKICAgICAgICAgIG5ldHNubXBfY29tcGFyZV9jc3RyaW5nKTsKIAogfQpAQCAtMzIzLDcgKzMzNyw4IEBACiAgICAgICAgIHJjMiA9IHgtPnJlbW92ZSh4LGspOwogICAgICAgICAvKiogaWdub3JlIHJlbW92ZSBlcnJvcnMgaWYgdGhlcmUgaXMgYSBmaWx0ZXIgaW4gcGxhY2UgKi8KICAgICAgICAgaWYgKChyYzIpICYmIChOVUxMID09IHgtPmluc2VydF9maWx0ZXIpKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgcmVtb3ZlICglZClcbiIsIHJjMik7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyByZW1vdmUgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHgtPmNvbnRhaW5lcl9uYW1lID8geC0+Y29udGFpbmVyX25hbWUgOiAiIiwgcmMyKTsKICAgICAgICAgICAgIHJjID0gcmMyOwogICAgICAgICB9CiAgICAgICAgIHggPSB4LT5wcmV2OwpAQCAtMzQ1LDEyICszNjAsMTUgQEAKICAgICAgICAgeCA9IHgtPm5leHQ7CiAgICAgd2hpbGUoeCkgewogICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG1wOworICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgICB0bXAgPSB4LT5wcmV2OworICAgICAgICBuYW1lID0geC0+Y29udGFpbmVyX25hbWU7CiAgICAgICAgIGlmIChOVUxMICE9IHgtPmNvbnRhaW5lcl9uYW1lKQogICAgICAgICAgICAgU05NUF9GUkVFKHgtPmNvbnRhaW5lcl9uYW1lKTsKICAgICAgICAgcmMyID0geC0+Y2ZyZWUoeCk7CiAgICAgICAgIGlmIChyYzIpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIG9uIHN1YmNvbnRhaW5lciBjZnJlZSAoJWQpXG4iLCByYzIpOworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3Igb24gc3ViY29udGFpbmVyICclcycgY2ZyZWUgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIG5hbWUgPyBuYW1lIDogIiIsIHJjMik7CiAgICAgICAgICAgICByYyA9IHJjMjsKICAgICAgICAgfQogICAgICAgICB4ID0gdG1wOwpAQCAtNDk1LDYgKzUxMywxMiBAQAogICAgICAgICAgICAgICAgICAgIHN0cmxlbigoKGNvbnN0IGNvbnRhaW5lcl90eXBlKilyaHMpLT5uYW1lKSk7CiB9CiAKK2ludAorbmV0c25tcF9jb21wYXJlX2RpcmVjdF9jc3RyaW5nKGNvbnN0IHZvaWQgKiBsaHMsIGNvbnN0IHZvaWQgKiByaHMpCit7CisgICAgcmV0dXJuIHN0cmNtcCgoY29uc3QgY2hhciopbGhzLCAoY29uc3QgY2hhciopcmhzKTsKK30KKwogLyoKICAqIGNvbXBhcmUgdHdvIG1lbW9yeSBidWZmZXJzCiAgKgpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmMgYi9zbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYwppbmRleCA0M2VmYzRiLi43ZDExYzM3IDEwMDY0NAotLS0gYS9zbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYworKysgYi9zbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYwpAQCAtMjMyLDcgKzIzMiw3IEBACiAgICAgICogaWYgdGhlcmUgaXMgbm8gZGF0YSwgcmV0dXJuIE5VTEw7CiAgICAgICovCiAgICAgaWYgKCF0LT5jb3VudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKICAgICAgKiBpZiB0aGUgdGFibGUgaXMgZGlydHksIHNvcnQgaXQuCkBAIC0yNDUsNyArMjQ1LDcgQEAKICAgICAgKi8KICAgICBpZiAoa2V5KSB7CiAgICAgICAgIGlmICgoaW5kZXggPSBiaW5hcnlfc2VhcmNoKGtleSwgYywgZXhhY3QpKSA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgcmV0dXJuIHQtPmRhdGFbaW5kZXhdOwpAQCAtMzM2LDggKzMzNiw4IEBACiBuZXRzbm1wX2JpbmFyeV9hcnJheV9pbnNlcnQobmV0c25tcF9jb250YWluZXIgKmMsIGNvbnN0IHZvaWQgKmVudHJ5KQogewogICAgIGJpbmFyeV9hcnJheV90YWJsZSAqdCA9IChiaW5hcnlfYXJyYXlfdGFibGUqKWMtPmNvbnRhaW5lcl9kYXRhOwotICAgIGludCAgICAgICAgICAgICBuZXdfbWF4LCBuZXdfc2l6ZTsKLSAgICBjaGFyICAgICAgICAgICAqbmV3X2RhdGE7ICAgLyogVXNlZCBmb3IgKiBhKSBleHRlbmRpbmcgdGhlIGRhdGEgdGFibGUKKyAgICBpbnQgICAgICAgICAgICAgbmV3X21heDsKKyAgICB2b2lkICAgICAgICAgICAqbmV3X2RhdGE7ICAgLyogVXNlZCBmb3IgKiBhKSBleHRlbmRpbmcgdGhlIGRhdGEgdGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKiBiKSB0aGUgbmV4dCBlbnRyeSB0byB1c2UgKi8KICAgICAvKgogICAgICAqIGNoZWNrIGZvciBkdXBsaWNhdGVzCkBAIC0zNjEsMTQgKzM2MSwxMyBAQAogICAgICAgICBpZiAobmV3X21heCA9PSAwKQogICAgICAgICAgICAgbmV3X21heCA9IDEwOyAgICAgICAvKiBTdGFydCB3aXRoIDEwIGVudHJpZXMgKi8KIAotICAgICAgICBuZXdfc2l6ZSA9IG5ld19tYXggKiB0LT5kYXRhX3NpemU7Ci0gICAgICAgIG5ld19kYXRhID0gKGNoYXIgKikgcmVhbGxvYyh0LT5kYXRhLCBuZXdfc2l6ZSk7CisgICAgICAgIG5ld19kYXRhID0gKHZvaWQgKikgY2FsbG9jKG5ld19tYXgsIHQtPmRhdGFfc2l6ZSk7CiAgICAgICAgIGlmIChuZXdfZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGludCBvbGRfc2l6ZSA9IHQtPm1heF9zaXplICogdC0+ZGF0YV9zaXplOwotICAgICAgICAgICAgaW50IGNvdW50ID0gbmV3X3NpemUgLSBvbGRfc2l6ZTsKLSAgICAgICAgICAgIG1lbXNldCgmbmV3X2RhdGFbb2xkX3NpemVdLCAweDAsIGNvdW50KTsKKworICAgICAgICBpZiAodC0+ZGF0YSkgeworICAgICAgICAgICAgbWVtY3B5KG5ld19kYXRhLCB0LT5kYXRhLCB0LT5tYXhfc2l6ZSAqIHQtPmRhdGFfc2l6ZSk7CisgICAgICAgICAgICBTTk1QX0ZSRUUodC0+ZGF0YSk7CiAgICAgICAgIH0KICAgICAgICAgdC0+ZGF0YSA9ICh2b2lkKiopbmV3X2RhdGE7CiAgICAgICAgIHQtPm1heF9zaXplID0gbmV3X21heDsKQEAgLTQzNCw3ICs0MzMsNyBAQAogICAgICAqIGlmIHRoZXJlIGlzIG5vIGRhdGEsIHJldHVybiBOVUxMOwogICAgICAqLwogICAgIGlmICghdC0+Y291bnQgfHwgIWtleSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKICAgICAgKiBpZiB0aGUgdGFibGUgaXMgZGlydHksIHNvcnQgaXQuCkBAIC00NDcsNyArNDQ2LDcgQEAKICAgICAgKi8KICAgICBzdGFydCA9IGVuZCA9IGJpbmFyeV9zZWFyY2hfZm9yX3N0YXJ0KChuZXRzbm1wX2luZGV4ICopa2V5LCBjKTsKICAgICBpZiAoc3RhcnQgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IHN0YXJ0ICsgMTsgaSA8IHQtPmNvdW50OyArK2kpIHsKICAgICAgICAgaWYgKDAgIT0gYy0+bmNvbXBhcmUodC0+ZGF0YVtpXSwga2V5KSkKZGlmZiAtLWdpdCBhL3NubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jIGIvc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMKaW5kZXggODc4MmZkMC4uMTRhNmE3MiAxMDA2NDQKLS0tIGEvc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMKKysrIGIvc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMKQEAgLTQ0LDYgKzQ0LDE1IEBACiAKIH0gc2xfY29udGFpbmVyOwogCit0eXBlZGVmIHN0cnVjdCBzc2xsX2l0ZXJhdG9yX3MgeworICAgIG5ldHNubXBfaXRlcmF0b3IgYmFzZTsKKyAKKyAgICBzbF9ub2RlICAgICAgICAgKnBvczsKKyAgICBzbF9ub2RlICAgICAgICAgKmxhc3Q7Cit9IHNzbGxfaXRlcmF0b3I7CisKK3N0YXRpYyBuZXRzbm1wX2l0ZXJhdG9yICpfc3NsbF9pdGVyYXRvcl9nZXQobmV0c25tcF9jb250YWluZXIgKmMpOworCiAKIHN0YXRpYyB2b2lkICoKIF9nZXQobmV0c25tcF9jb250YWluZXIgKmMsIGNvbnN0IHZvaWQgKmtleSwgaW50IGV4YWN0KQpAQCAtODUsMTIgKzk0LDEzIEBACiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIF9zc2xsX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmMpCiB7CiAgICAgaWYoYykgewogICAgICAgICBmcmVlKGMpOwogICAgIH0KKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgKgpAQCAtMTI1LDYgKzEzNSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICBuZXdfbm9kZS0+ZGF0YSA9IE5FVFNOTVBfUkVNT1ZFX0NPTlNUKHZvaWQgKiwgZGF0YSk7CiAgICAgKytzbC0+Y291bnQ7CisgICAgKytjLT5zeW5jOwogCiAgICAgLyoKICAgICAgKiBmaXJzdCBub2RlPwpAQCAtMjIzLDYgKzIzNCw3IEBACiAgICAgICovCiAgICAgZnJlZShjdXJyKTsKICAgICAtLXNsLT5jb3VudDsKKyAgICArK2MtPnN5bmM7CiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yNzgsNiArMjkwLDcgQEAKICAgICB9CiAgICAgc2wtPmhlYWQgPSBOVUxMOwogICAgIHNsLT5jb3VudCA9IDA7CisgICAgKytjLT5zeW5jOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMjk3LDcgKzMxMCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHNsLT5jLmNmcmVlID0gKG5ldHNubXBfY29udGFpbmVyX3JjKilfc3NsbF9mcmVlOworICAgIHNsLT5jLmNmcmVlID0gX3NzbGxfZnJlZTsKICAgICAgICAgCiAgICAgc2wtPmMuZ2V0X3NpemUgPSBfc3NsbF9zaXplOwogICAgIHNsLT5jLmluaXQgPSBOVUxMOwpAQCAtMzA2LDcgKzMxOSw3IEBACiAgICAgc2wtPmMuZmluZCA9IF9zc2xsX2ZpbmQ7CiAgICAgc2wtPmMuZmluZF9uZXh0ID0gX3NzbGxfZmluZF9uZXh0OwogICAgIHNsLT5jLmdldF9zdWJzZXQgPSBOVUxMOwotICAgIHNsLT5jLmdldF9pdGVyYXRvciA9IE5VTEw7CisgICAgc2wtPmMuZ2V0X2l0ZXJhdG9yID1fc3NsbF9pdGVyYXRvcl9nZXQ7CiAgICAgc2wtPmMuZm9yX2VhY2ggPSBfc3NsbF9mb3JfZWFjaDsKICAgICBzbC0+Yy5jbGVhciA9IF9zc2xsX2NsZWFyOwogCkBAIC0zOTEsMyArNDA0LDE1NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2dldF9maWZvX2ZhY3RvcnkoKSk7CiB9CiAKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBpdGVyYXRvcgorICoKKyAqLworTkVUU05NUF9TVEFUSUNfSU5MSU5FIHNsX2NvbnRhaW5lciAqCitfc3NsbF9pdDJjb250KHNzbGxfaXRlcmF0b3IgKml0KQoreworICAgIGlmKE5VTEwgPT0gaXQpIHsKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmKE5VTEwgPT0gaXQtPmJhc2UuY29udGFpbmVyKSB7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXQtPmJhc2UuY29udGFpbmVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYoaXQtPmJhc2UuY29udGFpbmVyLT5zeW5jICE9IGl0LT5iYXNlLnN5bmMpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImNvbnRhaW5lcjppdGVyYXRvciIsICJvdXQgb2Ygc3luY1xuIikpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKHNsX2NvbnRhaW5lciAqKWl0LT5iYXNlLmNvbnRhaW5lcjsKK30KKworc3RhdGljIHZvaWQgKgorX3NzbGxfaXRlcmF0b3JfY3Vycihzc2xsX2l0ZXJhdG9yICppdCkKK3sKKyAgICBzbF9jb250YWluZXIgKnQgPSBfc3NsbF9pdDJjb250KGl0KTsKKyAgICBpZiAoKE5VTEwgPT0gdCkgfHwgKE5VTEwgPT0gaXQtPnBvcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIGl0LT5wb3MtPmRhdGE7Cit9CisKK3N0YXRpYyB2b2lkICoKK19zc2xsX2l0ZXJhdG9yX2ZpcnN0KHNzbGxfaXRlcmF0b3IgKml0KQoreworICAgIHNsX2NvbnRhaW5lciAqdCA9IF9zc2xsX2l0MmNvbnQoaXQpOworICAgIGlmICgoTlVMTCA9PSB0KSB8fCAoTlVMTCA9PSB0LT5oZWFkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gdC0+aGVhZC0+ZGF0YTsKK30KKworc3RhdGljIHZvaWQgKgorX3NzbGxfaXRlcmF0b3JfbmV4dChzc2xsX2l0ZXJhdG9yICppdCkKK3sKKyAgICBzbF9jb250YWluZXIgKnQgPSBfc3NsbF9pdDJjb250KGl0KTsKKyAgICBpZiAoKE5VTEwgPT0gdCkgfHwgKE5VTEwgPT0gaXQtPnBvcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaXQtPnBvcyA9IGl0LT5wb3MtPm5leHQ7CisgICAgaWYgKE5VTEwgPT0gaXQtPnBvcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gaXQtPnBvcy0+ZGF0YTsKK30KKworc3RhdGljIHZvaWQgKgorX3NzbGxfaXRlcmF0b3JfbGFzdChzc2xsX2l0ZXJhdG9yICppdCkKK3sKKyAgICBzbF9ub2RlICAgICAgKm47CisgICAgc2xfY29udGFpbmVyICp0ID0gX3NzbGxfaXQyY29udChpdCk7CisgICAgaWYoTlVMTCA9PSB0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAKKyAgICBpZiAoaXQtPmxhc3QpCisgICAgICAgIHJldHVybiBpdC0+bGFzdDsKKworICAgIG4gPSBpdC0+cG9zID8gaXQtPnBvcyA6IHQtPmhlYWQ7CisgICAgaWYgKE5VTEwgPT0gbikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB3aGlsZShuLT5uZXh0KQorICAgICAgICBuID0gbi0+bmV4dDsKKworICAgIGlmIChOVUxMID09IG4pCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaXQtPmxhc3QgPSBuOworCisgICAgcmV0dXJuIGl0LT5sYXN0LT5kYXRhOworfQorCitzdGF0aWMgaW50Citfc3NsbF9pdGVyYXRvcl9yZXNldChzc2xsX2l0ZXJhdG9yICppdCkKK3sKKyAgICBzbF9jb250YWluZXIgKnQ7CisKKyAgICAvKiogY2FuJ3QgdXNlIGl0MmNvbmYgY3V6IHdlIG1pZ2h0IGJlIG91dCBvZiBzeW5jICovCisgICAgaWYoTlVMTCA9PSBpdCkgeworICAgICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGl0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYoTlVMTCA9PSBpdC0+YmFzZS5jb250YWluZXIpIHsKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpdC0+YmFzZS5jb250YWluZXIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgdCA9IChzbF9jb250YWluZXIgKilpdC0+YmFzZS5jb250YWluZXI7CisgICAgaWYoTlVMTCA9PSB0KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpdC0+bGFzdCA9IE5VTEw7CisgICAgaXQtPnBvcyA9IHQtPmhlYWQ7CisKKyAgICAvKgorICAgICAqIHNhdmUgc3luYyBjb3VudCwgdG8gbWFrZSBzdXJlIGNvbnRhaW5lciBkb2Vzbid0IGNoYW5nZSB3aGlsZQorICAgICAqIGl0ZXJhdG9yIGlzIGluIHVzZS4KKyAgICAgKi8KKyAgICBpdC0+YmFzZS5zeW5jID0gaXQtPmJhc2UuY29udGFpbmVyLT5zeW5jOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK19zc2xsX2l0ZXJhdG9yX3JlbGVhc2UobmV0c25tcF9pdGVyYXRvciAqaXQpCit7CisgICAgZnJlZShpdCk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIG5ldHNubXBfaXRlcmF0b3IgKgorX3NzbGxfaXRlcmF0b3JfZ2V0KG5ldHNubXBfY29udGFpbmVyICpjKQoreworICAgIHNzbGxfaXRlcmF0b3IqIGl0OworCisgICAgaWYoTlVMTCA9PSBjKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGl0ID0gU05NUF9NQUxMT0NfVFlQRURFRihzc2xsX2l0ZXJhdG9yKTsKKyAgICBpZihOVUxMID09IGl0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGl0LT5iYXNlLmNvbnRhaW5lciA9IGM7CisgICAgCisgICAgaXQtPmJhc2UuZmlyc3QgPSAobmV0c25tcF9pdGVyYXRvcl9ydG4qKV9zc2xsX2l0ZXJhdG9yX2ZpcnN0OworICAgIGl0LT5iYXNlLm5leHQgPSAobmV0c25tcF9pdGVyYXRvcl9ydG4qKV9zc2xsX2l0ZXJhdG9yX25leHQ7CisgICAgaXQtPmJhc2UuY3VyciA9IChuZXRzbm1wX2l0ZXJhdG9yX3J0biopX3NzbGxfaXRlcmF0b3JfY3VycjsKKyAgICBpdC0+YmFzZS5sYXN0ID0gKG5ldHNubXBfaXRlcmF0b3JfcnRuKilfc3NsbF9pdGVyYXRvcl9sYXN0OworICAgIGl0LT5iYXNlLnJlc2V0ID0gKG5ldHNubXBfaXRlcmF0b3JfcmMqKV9zc2xsX2l0ZXJhdG9yX3Jlc2V0OworICAgIGl0LT5iYXNlLnJlbGVhc2UgPSAobmV0c25tcF9pdGVyYXRvcl9yYyopX3NzbGxfaXRlcmF0b3JfcmVsZWFzZTsKKworICAgICh2b2lkKV9zc2xsX2l0ZXJhdG9yX3Jlc2V0KGl0KTsKKworICAgIHJldHVybiAobmV0c25tcF9pdGVyYXRvciAqKWl0OworfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jb250YWluZXJfbnVsbC5jIGIvc25tcGxpYi9jb250YWluZXJfbnVsbC5jCmluZGV4IDEwMDgyYWYuLjA0Y2NhMjEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY29udGFpbmVyX251bGwuYworKysgYi9zbm1wbGliL2NvbnRhaW5lcl9udWxsLmMKQEAgLTE1Niw3ICsxNTYsNyBAQAogICAgIGMtPmZpbmQgPSBfbnVsbF9maW5kOwogICAgIGMtPmZpbmRfbmV4dCA9IF9udWxsX2ZpbmRfbmV4dDsKICAgICBjLT5nZXRfc3Vic2V0ID0gX251bGxfZ2V0X3N1YnNldDsKLSAgICBjLT5nZXRfaXRlcmF0b3IgPSAwOyAvKiBfbnVsbF9pdGVyYXRvcjsgKi8KKyAgICBjLT5nZXRfaXRlcmF0b3IgPSBOVUxMOyAvKiBfbnVsbF9pdGVyYXRvcjsgKi8KICAgICBjLT5mb3JfZWFjaCA9IF9udWxsX2Zvcl9lYWNoOwogICAgIGMtPmNsZWFyID0gX251bGxfY2xlYXI7CiAgICAgICAgCmRpZmYgLS1naXQgYS9zbm1wbGliL2RhdGFfbGlzdC5jIGIvc25tcGxpYi9kYXRhX2xpc3QuYwppbmRleCAwMWE3ZDJjLi44MTg4NTk4IDEwMDY0NAotLS0gYS9zbm1wbGliL2RhdGFfbGlzdC5jCisrKyBiL3NubXBsaWIvZGF0YV9saXN0LmMKQEAgLTYsMTMgKzYsNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKLS8qCi0gKiBwcm90b3R5cGVzCi0gKi8KLU5FVFNOTVBfSU5MSU5FIHZvaWQKLW5ldHNubXBfZGF0YV9saXN0X2FkZF9ub2RlKG5ldHNubXBfZGF0YV9saXN0ICoqaGVhZCwgbmV0c25tcF9kYXRhX2xpc3QgKm5vZGUpOwotCi0KIC8qKiBAZGVmZ3JvdXAgZGF0YV9saXN0IGdlbmVyaWMgbGlua2VkLWxpc3QgZGF0YSBoYW5kbGluZyB3aXRoIGEgc3RyaW5nIGFzIGEga2V5LgogICogQGluZ3JvdXAgbGlicmFyeQogICogQHsKQEAgLTY5LDggKzYyLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbm9kZS0+bmFtZSA9IHN0cmR1cChuYW1lKTsKICAgICBpZiAoIW5vZGUtPm5hbWUpIHsKLSAgICAgIGZyZWUobm9kZSk7Ci0gICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZnJlZShub2RlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG5vZGUtPmRhdGEgPSBkYXRhOwogICAgIG5vZGUtPmZyZWVfZnVuYyA9IGJlZXI7CkBAIC03OCwxOCArNzEsNiBAQAogfQogCiAvKiogYWRkcyBkYXRhIHRvIGEgZGF0YWxpc3QKLSAqIEBub3RlIG5ldHNubXBfZGF0YV9saXN0X2FkZF9ub2RlIGlzIHByZWZlcnJlZAotICogQHBhcmFtIGhlYWQgYSBwb2ludGVyIHRvIHRoZSBoZWFkIG5vZGUgb2YgYSBkYXRhX2xpc3QKLSAqIEBwYXJhbSBub2RlIGEgbm9kZSB0byBzdGFzaCBpbiB0aGUgZGF0YV9saXN0Ci0gKi8KLS8qKiAgKi8KLU5FVFNOTVBfSU5MSU5FIHZvaWQKLW5ldHNubXBfYWRkX2xpc3RfZGF0YShuZXRzbm1wX2RhdGFfbGlzdCAqKmhlYWQsIG5ldHNubXBfZGF0YV9saXN0ICpub2RlKQotewotICAgIG5ldHNubXBfZGF0YV9saXN0X2FkZF9ub2RlKGhlYWQsIG5vZGUpOwotfQotCi0vKiogYWRkcyBkYXRhIHRvIGEgZGF0YWxpc3QKICAqIEBwYXJhbSBoZWFkIGEgcG9pbnRlciB0byB0aGUgaGVhZCBub2RlIG9mIGEgZGF0YV9saXN0CiAgKiBAcGFyYW0gbm9kZSBhIG5vZGUgdG8gc3Rhc2ggaW4gdGhlIGRhdGFfbGlzdAogICovCkBAIC0xMzEsNiArMTEyLDE4IEBACiB9CiAKIC8qKiBhZGRzIGRhdGEgdG8gYSBkYXRhbGlzdAorICogQG5vdGUgbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGUgaXMgcHJlZmVycmVkCisgKiBAcGFyYW0gaGVhZCBhIHBvaW50ZXIgdG8gdGhlIGhlYWQgbm9kZSBvZiBhIGRhdGFfbGlzdAorICogQHBhcmFtIG5vZGUgYSBub2RlIHRvIHN0YXNoIGluIHRoZSBkYXRhX2xpc3QKKyAqLworLyoqICAqLworTkVUU05NUF9JTkxJTkUgdm9pZAorbmV0c25tcF9hZGRfbGlzdF9kYXRhKG5ldHNubXBfZGF0YV9saXN0ICoqaGVhZCwgbmV0c25tcF9kYXRhX2xpc3QgKm5vZGUpCit7CisgICAgbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGUoaGVhZCwgbm9kZSk7Cit9CisKKy8qKiBhZGRzIGRhdGEgdG8gYSBkYXRhbGlzdAogICogQHBhcmFtIGhlYWQgYSBwb2ludGVyIHRvIHRoZSBoZWFkIG5vZGUgb2YgYSBkYXRhX2xpc3QKICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBub2RlIHRvIGNhY2hlIHRoZSBkYXRhLgogICogQHBhcmFtIGRhdGEgdGhlIGRhdGEgdG8gYmUgc3RvcmVkIHVuZGVyIHRoYXQgbmFtZQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMgYi9zbm1wbGliL2RlZmF1bHRfc3RvcmUuYwppbmRleCA4ZTk0MDU3Li45YmZkMjI4IDEwMDY0NAotLS0gYS9zbm1wbGliL2RlZmF1bHRfc3RvcmUuYworKysgYi9zbm1wbGliL2RlZmF1bHRfc3RvcmUuYwpAQCAtMzI0LDcgKzMyNCw3IEBACiAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKICAgICB9CiAKLSAgICBERUJVR01TR1RMKCgibmV0c25tcF9kc19zZXRfdm9pZCIsICJTZXR0aW5nICVzOiVkID0gJXhcbiIsCisgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfZHNfc2V0X3ZvaWQiLCAiU2V0dGluZyAlczolZCA9ICVwXG4iLAogICAgICAgICAgICAgICAgIHN0b3Jlc1tzdG9yZWlkXSwgd2hpY2gsIHZhbHVlKSk7CiAKICAgICBuZXRzbm1wX2RzX3ZvaWRzW3N0b3JlaWRdW3doaWNoXSA9IHZhbHVlOwpAQCAtNDQyLDEwICs0NDIsMTQgQEAKIAogICAgIGlmIChuZXRzbm1wX2RzX2NvbmZpZ3MgPT0gTlVMTCkgewogICAgICAgICBuZXRzbm1wX2RzX2NvbmZpZ3MgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfZHNfcmVhZF9jb25maWcpOworICAgICAgICBpZiAobmV0c25tcF9kc19jb25maWdzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgIGRyc3AgPSBuZXRzbm1wX2RzX2NvbmZpZ3M7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChkcnNwID0gbmV0c25tcF9kc19jb25maWdzOyBkcnNwLT5uZXh0ICE9IE5VTEw7IGRyc3AgPSBkcnNwLT5uZXh0KTsKICAgICAgICAgZHJzcC0+bmV4dCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9kc19yZWFkX2NvbmZpZyk7CisgICAgICAgIGlmIChkcnNwLT5uZXh0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgIGRyc3AgPSBkcnNwLT5uZXh0OwogICAgIH0KIApAQCAtNDg4LDEwICs0OTIsMTQgQEAKIAogICAgIGlmIChuZXRzbm1wX2RzX2NvbmZpZ3MgPT0gTlVMTCkgewogICAgICAgICBuZXRzbm1wX2RzX2NvbmZpZ3MgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfZHNfcmVhZF9jb25maWcpOworICAgICAgICBpZiAobmV0c25tcF9kc19jb25maWdzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgIGRyc3AgPSBuZXRzbm1wX2RzX2NvbmZpZ3M7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChkcnNwID0gbmV0c25tcF9kc19jb25maWdzOyBkcnNwLT5uZXh0ICE9IE5VTEw7IGRyc3AgPSBkcnNwLT5uZXh0KTsKICAgICAgICAgZHJzcC0+bmV4dCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9kc19yZWFkX2NvbmZpZyk7CisgICAgICAgIGlmIChkcnNwLT5uZXh0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgIGRyc3AgPSBkcnNwLT5uZXh0OwogICAgIH0KIApAQCAtNTIyLDcgKzUzMCw3IEBACiB9CiAKIHZvaWQKLW5ldHNubXBfZHNfc2h1dGRvd24oKQorbmV0c25tcF9kc19zaHV0ZG93bih2b2lkKQogewogICAgIG5ldHNubXBfZHNfcmVhZF9jb25maWcgKmRyc3A7CiAgICAgaW50ICAgICAgICAgICAgIGksIGo7CmRpZmYgLS1naXQgYS9zbm1wbGliL2Rpcl91dGlscy5jIGIvc25tcGxpYi9kaXJfdXRpbHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjAzYzkyCi0tLSAvZGV2L251bGwKKysrIGIvc25tcGxpYi9kaXJfdXRpbHMuYwpAQCAtMCwwICsxLDE0NSBAQAorLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpZiBIQVZFX1NURExJQl9ICisjICAgaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZiBIQVZFX1VOSVNURF9ICisjICAgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NUUklOR19ICisjICAgaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorIyAgaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZiBIQVZFX0xJTUlUU19ICisjaW5jbHVkZSA8bGltaXRzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ESVJFTlRfSAorI2luY2x1ZGUgPGRpcmVudC5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaWYgSEFWRV9ETUFMTE9DX0gKKyMgIGluY2x1ZGUgPGRtYWxsb2MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZGlyX3V0aWxzLmg+CisKK25ldHNubXBfY29udGFpbmVyICoKK25ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9yZWFkKG5ldHNubXBfY29udGFpbmVyICp1c2VyX2NvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRpcm5hbWUsIHVfaW50IGZsYWdzKQoreworICAgIERJUiAgICAgICAgICAgICAgICpkaXI7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IHVzZXJfY29udGFpbmVyOworICAgIHN0cnVjdCBkaXJlbnQgICAgICpmaWxlOworICAgIGNoYXIgICAgICAgICAgICAgICBwYXRoW1BBVEhfTUFYXTsKKyAgICB1X2NoYXIgICAgICAgICAgICAgZGlybmFtZV9sZW47CisgICAgaW50ICAgICAgICAgICAgICAgIHJjOworI2lmICEoZGVmaW5lZChIQVZFX1NUUlVDVF9ESVJFTlRfRF9UWVBFKSAmJiBkZWZpbmVkKERUX0RJUikpICYmIGRlZmluZWQoU19JU0RJUikKKyAgICBzdHJ1Y3Qgc3RhdCAgICAgICAgc3RhdGJ1ZjsKKyNlbmRpZgorCisgICAgREVCVUdNU0dUTCgoImRpcmVjdG9yeTpjb250YWluZXIiLCAicmVhZGluZyAlc1xuIiwgZGlybmFtZSkpOworCisgICAgLyoKKyAgICAgKiBjcmVhdGUgdGhlIGNvbnRhaW5lciwgaWYgbmVlZGVkCisgICAgICovCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImRpcmVjdG9yeV9jb250YWluZXI6Y3N0cmluZyIpOworICAgICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgY29udGFpbmVyLT5jb250YWluZXJfbmFtZSA9IHN0cmR1cCgiZGlyZWN0b3J5IGNvbnRhaW5lciIpOworICAgICAgICBuZXRzbm1wX2JpbmFyeV9hcnJheV9vcHRpb25zX3NldChjb250YWluZXIsIDEsIENPTlRBSU5FUl9LRVlfVU5TT1JURUQpOworICAgIH0KKworICAgIGRpciA9IG9wZW5kaXIoZGlybmFtZSk7CisgICAgaWYgKE5VTEwgPT0gZGlyKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJkaXJlY3Rvcnk6Y29udGFpbmVyIiwgIiAgbm90IGEgZGlyXG4iKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qKiBjb3B5IGRpcm5hbWUgaW50byBwYXRoICovCisgICAgZGlybmFtZV9sZW4gPSBzdHJsZW4oZGlybmFtZSk7CisgICAgc3RybGNweShwYXRoLCBkaXJuYW1lLCBzaXplb2YocGF0aCkpOworICAgIGlmICgoZGlybmFtZV9sZW4gKyAyKSA+IHNpemVvZihwYXRoKSkgeworICAgICAgICAvKiogbm90IGVub3VnaCByb29tIGZvciBmaWxlcyAqLworICAgICAgICBjbG9zZWRpcihkaXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcGF0aFtkaXJuYW1lX2xlbl0gPSAnLyc7CisgICAgcGF0aFsrK2Rpcm5hbWVfbGVuXSA9ICdcMCc7CisKKyAgICAvKiogaXRlcmF0ZSBvdmVyIGRpciAqLworICAgIHdoaWxlICgoZmlsZSA9IHJlYWRkaXIoZGlyKSkpIHsKKworICAgICAgICBpZiAoKGZpbGUtPmRfbmFtZSA9PSBOVUxMKSB8fCAoZmlsZS0+ZF9uYW1lWzBdID09IDApKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLyoqIHNraXAgJy4nIGFuZCAnLi4nICovCisgICAgICAgIGlmICgoZmlsZS0+ZF9uYW1lWzBdID09ICcuJykgJiYKKyAgICAgICAgICAgICgoZmlsZS0+ZF9uYW1lWzFdID09IDApIHx8CisgICAgICAgICAgICAgKChmaWxlLT5kX25hbWVbMV0gPT0gJy4nKSAmJiAoKGZpbGUtPmRfbmFtZVsyXSA9PSAwKSkpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHN0cmxjcHkoJnBhdGhbZGlybmFtZV9sZW5dLCBmaWxlLT5kX25hbWUsIHNpemVvZihwYXRoKSAtIGRpcm5hbWVfbGVuKTsKKyAgICAgICAgREVCVUdNU0dUTCgoIjk6ZGlyZWN0b3J5OmNvbnRhaW5lciIsICIgIGZvdW5kICVzXG4iLCBwYXRoKSk7CisjaWYgZGVmaW5lZChIQVZFX1NUUlVDVF9ESVJFTlRfRF9UWVBFKSAmJiBkZWZpbmVkKERUX0RJUikKKyAgICAgICAgaWYgKChmaWxlLT5kX3R5cGUgPT0gRFRfRElSKSAmJiAoZmxhZ3MgJiBORVRTTk1QX0RJUl9SRUNVUlNFKSkgeworI2VsaWYgZGVmaW5lZChTX0lTRElSKQorICAgICAgICBpZiAoKGZsYWdzICYgTkVUU05NUF9ESVJfUkVDVVJTRSkgJiYgKHN0YXQoZmlsZS0+ZF9uYW1lLCAmc3RhdGJ1ZikgIT0gMCkgJiYgKFNfSVNESVIoc3RhdGJ1Zi5zdF9tb2RlKSkpIHsKKyNlbHNlCisgICAgICAgIGlmIChmbGFncyAmIE5FVFNOTVBfRElSX1JFQ1VSU0UpIHsKKyNlbmRpZgorICAgICAgICAgICAgLyoqIHh4eCBhZGQgdGhlIGRpciBhcyB3ZWxsPyBub3QgZm9yIG5vdy4uIG1heWJlIGFub3RoZXIgZmxhZz8gKi8KKyAgICAgICAgICAgIG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9yZWFkKGNvbnRhaW5lciwgcGF0aCwgZmxhZ3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY2hhciAqZHVwID0gc3RyZHVwKHBhdGgpOworICAgICAgICAgICAgaWYgKE5VTEwgPT0gZHVwKSB7CisgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAic3RyZHVwIGZhaWxlZFxuIik7CisgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJjID0gQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGR1cCk7CisgICAgICAgICAgICBpZiAoLTEgPT0gcmMgKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImRpcmVjdG9yeTpjb250YWluZXIiLCAiICBlcnIgYWRkaW5nICVzXG4iLCBwYXRoKSk7CisgICAgICAgICAgICAgICAgZnJlZShkdXApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgY2xvc2VkaXIoZGlyKTsKKworICAgIERFQlVHTVNHVEwoKCJkaXJlY3Rvcnk6Y29udGFpbmVyIiwgIiAgY29udGFpbmVyIG5vdyBoYXMgJWQgaXRlbXNcbiIsCisgICAgICAgICAgICAgICAgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgCisgICAgcmV0dXJuIGNvbnRhaW5lcjsKK30KKwordm9pZAorbmV0c25tcF9kaXJlY3RvcnlfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKK3sKKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLCBuZXRzbm1wX2NvbnRhaW5lcl9zaW1wbGVfZnJlZSwgTlVMTCk7CisgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKK30KZGlmZiAtLWdpdCBhL3NubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jIGIvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKaW5kZXggYzgxY2ZkZS4uYWU5OWMwNCAxMDA2NDQKLS0tIGEvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKKysrIGIvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKQEAgLTcsNiArNyw5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaD4KKworCiBpbnQgICAgIGV4dGVybmFsX3JlYWRmZFtOVU1fRVhURVJOQUxfRkRTXSwgICBleHRlcm5hbF9yZWFkZmRsZW4gICA9IDA7CiBpbnQgICAgIGV4dGVybmFsX3dyaXRlZmRbTlVNX0VYVEVSTkFMX0ZEU10sICBleHRlcm5hbF93cml0ZWZkbGVuICA9IDA7CiBpbnQgICAgIGV4dGVybmFsX2V4Y2VwdGZkW05VTV9FWFRFUk5BTF9GRFNdLCBleHRlcm5hbF9leGNlcHRmZGxlbiA9IDA7CkBAIC0xNTksMjIgKzE2Miw1NSBAQAogICovCiB2b2lkIG5ldHNubXBfZXh0ZXJuYWxfZXZlbnRfaW5mbyhpbnQgKm51bWZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcykKIHsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbHJlYWRmZHM7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0IGx3cml0ZWZkczsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbGV4Y2VwdGZkczsKKworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KCZscmVhZGZkcywgRkRfU0VUU0laRSk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmx3cml0ZWZkcywgRkRfU0VUU0laRSk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmxleGNlcHRmZHMsIEZEX1NFVFNJWkUpOworCisgIG5ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KCZscmVhZGZkcywgcmVhZGZkcyk7CisgIG5ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KCZsd3JpdGVmZHMsIHdyaXRlZmRzKTsKKyAgbmV0c25tcF9jb3B5X2ZkX3NldF90b19sYXJnZV9mZF9zZXQoJmxleGNlcHRmZHMsIGV4Y2VwdGZkcyk7CisKKyAgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvMihudW1mZHMsICZscmVhZGZkcywgJmx3cml0ZWZkcywgJmxleGNlcHRmZHMpOworCisgIGlmIChuZXRzbm1wX2NvcHlfbGFyZ2VfZmRfc2V0X3RvX2ZkX3NldChyZWFkZmRzLCAmbHJlYWRmZHMpIDwgMAorICAgICAgfHwgbmV0c25tcF9jb3B5X2xhcmdlX2ZkX3NldF90b19mZF9zZXQod3JpdGVmZHMsICZsd3JpdGVmZHMpIDwgMAorICAgICAgfHwgbmV0c25tcF9jb3B5X2xhcmdlX2ZkX3NldF90b19mZF9zZXQoZXhjZXB0ZmRzLCAmbGV4Y2VwdGZkcykgPCAwKQorICB7CisgICAgc25tcF9sb2coTE9HX0VSUiwKKwkgICAgICJVc2UgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvMigpIGZvciBwcm9jZXNzaW5nIgorCSAgICAgIiBsYXJnZSBmaWxlIGRlc2NyaXB0b3JzIik7CisgIH0KKworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZscmVhZGZkcyk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoJmx3cml0ZWZkcyk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoJmxleGNlcHRmZHMpOworfQorCit2b2lkIG5ldHNubXBfZXh0ZXJuYWxfZXZlbnRfaW5mbzIoaW50ICpudW1mZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKndyaXRlZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpleGNlcHRmZHMpCit7CiAgIGludCBpOwogCiAgIGV4dGVybmFsX2ZkX3VucmVnaXN0ZXJlZCA9IDA7CiAKICAgZm9yIChpID0gMDsgaSA8IGV4dGVybmFsX3JlYWRmZGxlbjsgaSsrKSB7Ci0gICAgRkRfU0VUKGV4dGVybmFsX3JlYWRmZFtpXSwgcmVhZGZkcyk7CisgICAgTkVUU05NUF9MQVJHRV9GRF9TRVQoZXh0ZXJuYWxfcmVhZGZkW2ldLCByZWFkZmRzKTsKICAgICBpZiAoZXh0ZXJuYWxfcmVhZGZkW2ldID49ICpudW1mZHMpCiAgICAgICAqbnVtZmRzID0gZXh0ZXJuYWxfcmVhZGZkW2ldICsgMTsKICAgfQogICBmb3IgKGkgPSAwOyBpIDwgZXh0ZXJuYWxfd3JpdGVmZGxlbjsgaSsrKSB7Ci0gICAgRkRfU0VUKGV4dGVybmFsX3dyaXRlZmRbaV0sIHdyaXRlZmRzKTsKKyAgICBORVRTTk1QX0xBUkdFX0ZEX1NFVChleHRlcm5hbF93cml0ZWZkW2ldLCB3cml0ZWZkcyk7CiAgICAgaWYgKGV4dGVybmFsX3dyaXRlZmRbaV0gPj0gKm51bWZkcykKICAgICAgICpudW1mZHMgPSBleHRlcm5hbF93cml0ZWZkW2ldICsgMTsKICAgfQogICBmb3IgKGkgPSAwOyBpIDwgZXh0ZXJuYWxfZXhjZXB0ZmRsZW47IGkrKykgewotICAgIEZEX1NFVChleHRlcm5hbF9leGNlcHRmZFtpXSwgZXhjZXB0ZmRzKTsKKyAgICBORVRTTk1QX0xBUkdFX0ZEX1NFVChleHRlcm5hbF9leGNlcHRmZFtpXSwgZXhjZXB0ZmRzKTsKICAgICBpZiAoZXh0ZXJuYWxfZXhjZXB0ZmRbaV0gPj0gKm51bWZkcykKICAgICAgICpudW1mZHMgPSBleHRlcm5hbF9leGNlcHRmZFtpXSArIDE7CiAgIH0KQEAgLTE4NSwzNyArMjIxLDcwIEBACiAgKi8KIHZvaWQgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMoaW50ICpjb3VudCwgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcykKIHsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbHJlYWRmZHM7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0IGx3cml0ZWZkczsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbGV4Y2VwdGZkczsKKworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KCZscmVhZGZkcywgRkRfU0VUU0laRSk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmx3cml0ZWZkcywgRkRfU0VUU0laRSk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmxleGNlcHRmZHMsIEZEX1NFVFNJWkUpOworCisgIG5ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KCZscmVhZGZkcywgcmVhZGZkcyk7CisgIG5ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KCZsd3JpdGVmZHMsIHdyaXRlZmRzKTsKKyAgbmV0c25tcF9jb3B5X2ZkX3NldF90b19sYXJnZV9mZF9zZXQoJmxleGNlcHRmZHMsIGV4Y2VwdGZkcyk7CisKKyAgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMyKGNvdW50LCAmbHJlYWRmZHMsICZsd3JpdGVmZHMsICZsZXhjZXB0ZmRzKTsKKworICBpZiAobmV0c25tcF9jb3B5X2xhcmdlX2ZkX3NldF90b19mZF9zZXQocmVhZGZkcywgJmxyZWFkZmRzKSA8IDAKKyAgICAgIHx8IG5ldHNubXBfY29weV9sYXJnZV9mZF9zZXRfdG9fZmRfc2V0KHdyaXRlZmRzLCAgJmx3cml0ZWZkcykgPCAwCisgICAgICB8fCBuZXRzbm1wX2NvcHlfbGFyZ2VfZmRfc2V0X3RvX2ZkX3NldChleGNlcHRmZHMsICZsZXhjZXB0ZmRzKSA8IDApCisgIHsKKyAgICBzbm1wX2xvZyhMT0dfRVJSLAorCSAgICAgIlVzZSBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50czIoKSBmb3IgcHJvY2Vzc2luZyIKKwkgICAgICIgbGFyZ2UgZmlsZSBkZXNjcmlwdG9ycyIpOworICB9CisKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgmbHJlYWRmZHMpOworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZsd3JpdGVmZHMpOworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZsZXhjZXB0ZmRzKTsKK30KKwordm9pZCBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50czIoaW50ICpjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpyZWFkZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKndyaXRlZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmV4Y2VwdGZkcykKK3sKICAgaW50IGk7CiAgIGZvciAoaSA9IDA7CiAgICAgICAgKmNvdW50ICYmIChpIDwgZXh0ZXJuYWxfcmVhZGZkbGVuKSAmJiAhZXh0ZXJuYWxfZmRfdW5yZWdpc3RlcmVkOyBpKyspIHsKLSAgICAgIGlmIChGRF9JU1NFVChleHRlcm5hbF9yZWFkZmRbaV0sIHJlYWRmZHMpKSB7CisgICAgICBpZiAoTkVUU05NUF9MQVJHRV9GRF9JU1NFVChleHRlcm5hbF9yZWFkZmRbaV0sIHJlYWRmZHMpKSB7CiAgICAgICAgICAgREVCVUdNU0dUTCgoImZkX2V2ZW50X21hbmFnZXI6bmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMiLCAKICAgICAgICAgICAgICAgICAgICAgICJyZWFkZmRbJWRdID0gJWRcbiIsIGksIGV4dGVybmFsX3JlYWRmZFtpXSkpOwogICAgICAgICAgIGV4dGVybmFsX3JlYWRmZGZ1bmNbaV0gKGV4dGVybmFsX3JlYWRmZFtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9yZWFkZmRfZGF0YVtpXSk7Ci0gICAgICAgICAgRkRfQ0xSKGV4dGVybmFsX3JlYWRmZFtpXSwgcmVhZGZkcyk7CisgICAgICAgICAgTkVUU05NUF9MQVJHRV9GRF9DTFIoZXh0ZXJuYWxfcmVhZGZkW2ldLCByZWFkZmRzKTsKICAgICAgICAgICAoKmNvdW50KS0tOwogICAgICAgfQogICB9CiAgIGZvciAoaSA9IDA7CiAgICAgICAgKmNvdW50ICYmIChpIDwgZXh0ZXJuYWxfd3JpdGVmZGxlbikgJiYgIWV4dGVybmFsX2ZkX3VucmVnaXN0ZXJlZDsgaSsrKSB7Ci0gICAgICBpZiAoRkRfSVNTRVQoZXh0ZXJuYWxfd3JpdGVmZFtpXSwgd3JpdGVmZHMpKSB7CisgICAgICBpZiAoTkVUU05NUF9MQVJHRV9GRF9JU1NFVChleHRlcm5hbF93cml0ZWZkW2ldLCB3cml0ZWZkcykpIHsKICAgICAgICAgICBERUJVR01TR1RMKCgiZmRfZXZlbnRfbWFuYWdlcjpuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50cyIsIAogICAgICAgICAgICAgICAgICAgICAgIndyaXRlZmRbJWRdID0gJWRcbiIsIGksIGV4dGVybmFsX3dyaXRlZmRbaV0pKTsKICAgICAgICAgICBleHRlcm5hbF93cml0ZWZkZnVuY1tpXSAoZXh0ZXJuYWxfd3JpdGVmZFtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfd3JpdGVmZF9kYXRhW2ldKTsKLSAgICAgICAgICBGRF9DTFIoZXh0ZXJuYWxfd3JpdGVmZFtpXSwgd3JpdGVmZHMpOworICAgICAgICAgIE5FVFNOTVBfTEFSR0VfRkRfQ0xSKGV4dGVybmFsX3dyaXRlZmRbaV0sIHdyaXRlZmRzKTsKICAgICAgICAgICAoKmNvdW50KS0tOwogICAgICAgfQogICB9CiAgIGZvciAoaSA9IDA7CiAgICAgICAgKmNvdW50ICYmIChpIDwgZXh0ZXJuYWxfZXhjZXB0ZmRsZW4pICYmICFleHRlcm5hbF9mZF91bnJlZ2lzdGVyZWQ7IGkrKykgewotICAgICAgaWYgKEZEX0lTU0VUKGV4dGVybmFsX2V4Y2VwdGZkW2ldLCBleGNlcHRmZHMpKSB7CisgICAgICBpZiAoTkVUU05NUF9MQVJHRV9GRF9JU1NFVChleHRlcm5hbF9leGNlcHRmZFtpXSwgZXhjZXB0ZmRzKSkgewogICAgICAgICAgIERFQlVHTVNHVEwoKCJmZF9ldmVudF9tYW5hZ2VyOm5ldHNubXBfZGlzcGF0Y2hfZXh0ZXJuYWxfZXZlbnRzIiwgCiAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0ZmRbJWRdID0gJWRcbiIsIGksIGV4dGVybmFsX2V4Y2VwdGZkW2ldKSk7CiAgICAgICAgICAgZXh0ZXJuYWxfZXhjZXB0ZmRmdW5jW2ldIChleHRlcm5hbF9leGNlcHRmZFtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsX2V4Y2VwdGZkX2RhdGFbaV0pOwotICAgICAgICAgIEZEX0NMUihleHRlcm5hbF9leGNlcHRmZFtpXSwgZXhjZXB0ZmRzKTsKKyAgICAgICAgICBORVRTTk1QX0xBUkdFX0ZEX0NMUihleHRlcm5hbF9leGNlcHRmZFtpXSwgZXhjZXB0ZmRzKTsKICAgICAgICAgICAoKmNvdW50KS0tOwogICAgICAgfQogICB9CmRpZmYgLS1naXQgYS9zbm1wbGliL2ZpbGVfdXRpbHMuYyBiL3NubXBsaWIvZmlsZV91dGlscy5jCmluZGV4IDhmN2ZiNmEuLjlmMTliMzYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvZmlsZV91dGlscy5jCisrKyBiL3NubXBsaWIvZmlsZV91dGlscy5jCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgICAgICAgZmlsZWktPmZkID0gb3BlbihmaWxlaS0+bmFtZSwgZmlsZWktPmZzX2ZsYWdzLCBmaWxlaS0+bW9kZSk7CiAKICAgICBpZiAoZmlsZWktPmZkIDwgMCkgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3Igb3BlbmluZyAlcyAoJWQpXG4iLCBmaWxlaS0+bmFtZSwgZXJybm8pOworICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9maWxlIiwgImVycm9yIG9wZW5pbmcgJXMgKCVkKVxuIiwgZmlsZWktPm5hbWUsIGVycm5vKSk7CiAgICAgfQogCiAgICAgLyoKQEAgLTIwMCw3ICsyMDAsNyBAQAogICAgICAqLwogICAgIHJjID0gY2xvc2UoZmlsZWktPmZkKTsKICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjbG9zaW5nICVzICglZClcbiIsIGZpbGVpLT5uYW1lLCBlcnJubyk7CisgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX2ZpbGUiLCAiZXJyb3IgY2xvc2luZyAlcyAoJWQpXG4iLCBmaWxlaS0+bmFtZSwgZXJybm8pKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBmaWxlaS0+ZmQgPSAtMTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvaW5ldF9wdG9uLmMgYi9zbm1wbGliL2luZXRfcHRvbi5jCmluZGV4IDBhMDNhOGYuLjhiNWM3MWUgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvaW5ldF9wdG9uLmMKKysrIGIvc25tcGxpYi9pbmV0X3B0b24uYwpAQCAtNTIsOSArNTIsNiBAQAogI2lmbmRlZiBJTlQxNlNaCiAjZGVmaW5lCUlOVDE2U1oJCTIKICNlbmRpZgotICAvKgotICAgKiBFbmQgb2YgTmV0LVNOTVAgV2luMzIgYWRkaXRpb25zCi0gICAqLwogCiAjaWZuZGVmIElOQUREUlNaCiAjZGVmaW5lCUlOQUREUlNaCTQKZGlmZiAtLWdpdCBhL3NubXBsaWIvaW50NjQuYyBiL3NubXBsaWIvaW50NjQuYwppbmRleCBlYTU2NjczLi5hODE3OGYxIDEwMDY0NAotLS0gYS9zbm1wbGliL2ludDY0LmMKKysrIGIvc25tcGxpYi9pbnQ2NC5jCkBAIC0yNjYsNyArMjY2LDcgQEAKICAgICBpZiggKE5VTEwgPT0gb2xkX3ZhbCkgfHwgKE5VTEwgPT0gbmV3X3ZhbCkgKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBERUJVR01TR1RMKCgiOTpjNjQ6Y2hlY2tfd3JhcCIsICJjaGVjayB3cmFwIDB4JTB4LjB4JTB4IDB4JTB4LjB4JTB4XG4iLAorICAgIERFQlVHTVNHVEwoKCI5OmM2NDpjaGVja193cmFwIiwgImNoZWNrIHdyYXAgMHglMGx4LjB4JTBseCAweCUwbHguMHglMGx4XG4iLAogICAgICAgICAgICAgICAgIG9sZF92YWwtPmhpZ2gsIG9sZF92YWwtPmxvdywgbmV3X3ZhbC0+aGlnaCwgbmV3X3ZhbC0+bG93KSk7CiAgICAgCiAgICAgLyoKQEAgLTM0NSw3ICszNDUsNyBAQAogICAgIGlmICgoTlVMTCA9PSBuZWVkX3dyYXBfY2hlY2spIHx8ICgwICE9ICpuZWVkX3dyYXBfY2hlY2spKSB7CiAgICAgICAgIHJjID0gbmV0c25tcF9jNjRfY2hlY2tfZm9yXzMyYml0X3dyYXAob2xkX3ByZXZfdmFsLG5ld192YWwsIDEpOwogICAgICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJjNjQgMzIgYml0IGNoZWNrIGZhaWxlZFxuIik7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYzY0IiwiMzIgYml0IGNoZWNrIGZhaWxlZFxuIikpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBACiAgICAgICAgICAqLwogICAgICAgICBpZiAoKHByZXZfdmFsLT5sb3cgIT0gbmV3X3ZhbC0+bG93KSB8fAogICAgICAgICAgICAgKHByZXZfdmFsLT5oaWdoICE9IG5ld192YWwtPmhpZ2gpKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibG9va3MgbGlrZSBhIDY0Yml0IHdyYXAsIGJ1dCBwcmV2IT1uZXdcbiIpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImM2NCIsICJsb29rcyBsaWtlIGEgNjRiaXQgd3JhcCwgYnV0IHByZXYhPW5ld1xuIikpOwogICAgICAgICAgICAgcmV0dXJuIC0yOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKE5VTEwgIT0gbmVlZF93cmFwX2NoZWNrKQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9rZXl0b29scy5jIGIvc25tcGxpYi9rZXl0b29scy5jCmluZGV4IGFhNmE3MTIuLjc3MDMwYmQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIva2V5dG9vbHMuYworKysgYi9zbm1wbGliL2tleXRvb2xzLmMKQEAgLTEzNywxNiArMTM3LDE5IEBACiAgICAgY3R4ID0gRVZQX01EX0NUWF9jcmVhdGUoKTsKICNlbHNlCiAgICAgY3R4ID0gbWFsbG9jKHNpemVvZigqY3R4KSk7Ci0gICAgRVZQX01EX0NUWF9pbml0KGN0eCk7CisgICAgaWYgKCFFVlBfTURfQ1RYX2luaXQoY3R4KSkKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogI2VuZGlmCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NRDUKLSAgICBpZiAoSVNUUkFOU0ZPUk0oaGFzaHR5cGUsIEhNQUNNRDVBdXRoKSkKLSAgICAgICAgRVZQX0RpZ2VzdEluaXQoY3R4LCBFVlBfbWQ1KCkpOwotICAgIGVsc2UKKyAgICBpZiAoSVNUUkFOU0ZPUk0oaGFzaHR5cGUsIEhNQUNNRDVBdXRoKSkgeworICAgICAgICBpZiAoIUVWUF9EaWdlc3RJbml0KGN0eCwgRVZQX21kNSgpKSkKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICBpZiAoSVNUUkFOU0ZPUk0oaGFzaHR5cGUsIEhNQUNTSEExQXV0aCkpCi0gICAgICAgIEVWUF9EaWdlc3RJbml0KGN0eCwgRVZQX3NoYTEoKSk7Ci0gICAgZWxzZQorICAgICAgICBpZiAoSVNUUkFOU0ZPUk0oaGFzaHR5cGUsIEhNQUNTSEExQXV0aCkpIHsKKyAgICAgICAgICAgIGlmICghRVZQX0RpZ2VzdEluaXQoY3R4LCBFVlBfc2hhMSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgIH0gZWxzZQogICAgICAgICBRVUlURlVOKFNOTVBFUlJfR0VORVJSLCBnZW5lcmF0ZV9LdV9xdWl0KTsKICNlbHNlCiAgICAgTURiZWdpbigmTUQpOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9sYXJnZV9mZF9zZXQuYyBiL3NubXBsaWIvbGFyZ2VfZmRfc2V0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkwZTM5NwotLS0gL2Rldi9udWxsCisrKyBiL3NubXBsaWIvbGFyZ2VfZmRfc2V0LmMKQEAgLTAsMCArMSwyNDYgQEAKKy8qKgorICogQGZpbGUgbGFyZ2VfZmRfc2V0LmMKKyAqCisgKiBAYnJpZWYgTWFjcm8ncyBhbmQgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpb24gb2YgbGFyZ2UgZmlsZSBkZXNjcmlwdG9yIHNldHMuCisgKi8KKworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1dJTlNPQ0tfSAorI2luY2x1ZGUgPHdpbnNvY2suaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0Lmg+CisKKworI2lmICFkZWZpbmVkKGN5Z3dpbikgJiYgZGVmaW5lZChIQVZFX1dJTlNPQ0tfSCkKKwordm9pZAorbmV0c25tcF9sYXJnZV9mZF9zZXRmZChTT0NLRVQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CisgICAgdW5zaWduZWQgICAgICAgIGk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChmZCAhPSBJTlZBTElEX1NPQ0tFVCk7CisKKyAgICBpZiAoZmRzZXQtPmxmc19zZXQuZmRfY291bnQgPT0gZmRzZXQtPmxmc19zZXRzaXplKQorICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoZmRzZXQsIDIgKiAoZmRzZXQtPmxmc19zZXRzaXplICsgMSkpOworCisgICAgZm9yIChpID0gMDsgaSA8IGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGZkc2V0LT5sZnNfc2V0LmZkX2FycmF5W2ldID09IChTT0NLRVQpIChmZCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoaSA9PSBmZHNldC0+bGZzX3NldC5mZF9jb3VudAorICAgICAgICAmJiBmZHNldC0+bGZzX3NldC5mZF9jb3VudCA8IGZkc2V0LT5sZnNfc2V0c2l6ZSkgeworICAgICAgICBmZHNldC0+bGZzX3NldC5mZF9jb3VudCsrOworICAgICAgICBmZHNldC0+bGZzX3NldC5mZF9hcnJheVtpXSA9IGZkOworICAgIH0KK30KKwordm9pZAorbmV0c25tcF9sYXJnZV9mZF9jbHIoU09DS0VUIGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0KQoreworICAgIHVuc2lnbmVkICAgICAgICBpOworCisgICAgbmV0c25tcF9hc3NlcnQoZmQgIT0gSU5WQUxJRF9TT0NLRVQpOworCisgICAgZm9yIChpID0gMDsgaSA8IGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGZkc2V0LT5sZnNfc2V0LmZkX2FycmF5W2ldID09IGZkKSB7CisgICAgICAgICAgICB3aGlsZSAoaSA8IGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50IC0gMSkgeworICAgICAgICAgICAgICAgIGZkc2V0LT5sZnNfc2V0LmZkX2FycmF5W2ldID0KKyAgICAgICAgICAgICAgICAgICAgZmRzZXQtPmxmc19zZXQuZmRfYXJyYXlbaSArIDFdOworICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50LS07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworaW50CituZXRzbm1wX2xhcmdlX2ZkX2lzX3NldChTT0NLRVQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CisgICAgdW5zaWduZWQgaW50ICAgIGk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChmZCAhPSBJTlZBTElEX1NPQ0tFVCk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZmRzZXQtPmxmc19zZXQuZmRfY291bnQ7IGkrKykgeworICAgICAgICBpZiAoZmRzZXQtPmxmc19zZXQuZmRfYXJyYXlbaV0gPT0gZmQpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbHNlCisKK3ZvaWQKK25ldHNubXBfbGFyZ2VfZmRfc2V0ZmQoaW50IGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0KQoreworICAgIG5ldHNubXBfYXNzZXJ0KGZkID49IDApOworCisgICAgd2hpbGUgKGZkID49IGZkc2V0LT5sZnNfc2V0c2l6ZSkKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKGZkc2V0LCAyICogKGZkc2V0LT5sZnNfc2V0c2l6ZSArIDEpKTsKKworICAgIEZEX1NFVChmZCwgZmRzZXQtPmxmc19zZXRwdHIpOworfQorCit2b2lkCituZXRzbm1wX2xhcmdlX2ZkX2NscihpbnQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CisgICAgbmV0c25tcF9hc3NlcnQoZmQgPj0gMCk7CisKKyAgICBpZiAoKHVuc2lnbmVkKWZkIDwgZmRzZXQtPmxmc19zZXRzaXplKQorICAgICAgICBGRF9DTFIoZmQsIGZkc2V0LT5sZnNfc2V0cHRyKTsKK30KKworaW50CituZXRzbm1wX2xhcmdlX2ZkX2lzX3NldChpbnQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CisgICAgbmV0c25tcF9hc3NlcnQoZmQgPj0gMCk7CisKKyAgICByZXR1cm4gKHVuc2lnbmVkKWZkIDwgZmRzZXQtPmxmc19zZXRzaXplICYmIEZEX0lTU0VUKGZkLCBmZHNldC0+bGZzX3NldHB0cik7Cit9CisKKyNlbmRpZgorCit2b2lkCituZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQsIGludCBzZXRzaXplKQoreworICAgIGZkc2V0LT5sZnNfc2V0c2l6ZSA9IDA7CisgICAgZmRzZXQtPmxmc19zZXRwdHIgID0gTlVMTDsKKyNpZiAhZGVmaW5lZChjeWd3aW4pICYmIGRlZmluZWQoSEFWRV9XSU5TT0NLX0gpCisgICAgZmRzZXQtPmxmc19zZXQuZmRfY291bnQgPSAwOworI2VuZGlmCisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKGZkc2V0LCBzZXRzaXplKTsKK30KKworaW50CituZXRzbm1wX2xhcmdlX2ZkX3NldF9zZWxlY3QoaW50IG51bWZkcywgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqd3JpdGVmZHMsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZXhjZXB0ZmRzLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpCit7CisjaWYgZGVmaW5lZChjeWd3aW4pIHx8ICFkZWZpbmVkKEhBVkVfV0lOU09DS19IKQorICAgIC8qIEJpdC1zZXQgcmVwcmVzZW50YXRpb246IG1ha2Ugc3VyZSBhbGwgZmRzIGhhdmUgYXQgbGVhc3Qgc2l6ZSAnbnVtZmRzJy4gKi8KKyAgICBpZiAocmVhZGZkcyAmJiByZWFkZmRzLT5sZnNfc2V0c2l6ZSA8IG51bWZkcykKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKHJlYWRmZHMsIG51bWZkcyk7CisgICAgaWYgKHdyaXRlZmRzICYmIHdyaXRlZmRzLT5sZnNfc2V0c2l6ZSA8IG51bWZkcykKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKHdyaXRlZmRzLCBudW1mZHMpOworICAgIGlmIChleGNlcHRmZHMgJiYgZXhjZXB0ZmRzLT5sZnNfc2V0c2l6ZSA8IG51bWZkcykKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKGV4Y2VwdGZkcywgbnVtZmRzKTsKKyNlbHNlCisgICAgLyogQXJyYXkgcmVwcmVzZW50YXRpb246IG5vIHJlc2l6aW5nIGlzIG5lY2Vzc2FyeS4gKi8KKyNlbmRpZgorCisgICAgcmV0dXJuIHNlbGVjdChudW1mZHMsCisgICAgICAgICAgICByZWFkZmRzID8gcmVhZGZkcy0+bGZzX3NldHB0ciA6IE5VTEwsCisgICAgICAgICAgICB3cml0ZWZkcyA/IHdyaXRlZmRzLT5sZnNfc2V0cHRyIDogTlVMTCwKKyAgICAgICAgICAgIGV4Y2VwdGZkcyA/IGV4Y2VwdGZkcy0+bGZzX3NldHB0ciA6IE5VTEwsCisgICAgICAgICAgICB0aW1lb3V0KTsKK30KKworaW50CituZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUobmV0c25tcF9sYXJnZV9mZF9zZXQgKiBmZHNldCwgaW50IHNldHNpemUpCit7CisgICAgaW50ICAgICAgICAgICAgIGZkX3NldF9ieXRlczsKKworICAgIGlmIChmZHNldC0+bGZzX3NldHNpemUgPT0gc2V0c2l6ZSkKKyAgICAgICAgZ290byBzdWNjZXNzOworCisgICAgaWYgKHNldHNpemUgPiBGRF9TRVRTSVpFKSB7CisgICAgICAgIGZkX3NldF9ieXRlcyA9IE5FVFNOTVBfRkRfU0VUX0JZVEVTKHNldHNpemUpOworICAgICAgICBpZiAoZmRzZXQtPmxmc19zZXRzaXplID4gRkRfU0VUU0laRSkgeworICAgICAgICAgICAgZmRzZXQtPmxmc19zZXRwdHIgPSByZWFsbG9jKGZkc2V0LT5sZnNfc2V0cHRyLCBmZF9zZXRfYnl0ZXMpOworICAgICAgICAgICAgaWYgKCFmZHNldC0+bGZzX3NldHB0cikKKyAgICAgICAgICAgICAgICBnb3RvIG91dF9vZl9tZW07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmZHNldC0+bGZzX3NldHB0ciA9IG1hbGxvYyhmZF9zZXRfYnl0ZXMpOworICAgICAgICAgICAgaWYgKCFmZHNldC0+bGZzX3NldHB0cikKKyAgICAgICAgICAgICAgICBnb3RvIG91dF9vZl9tZW07CisgICAgICAgICAgICAqZmRzZXQtPmxmc19zZXRwdHIgPSBmZHNldC0+bGZzX3NldDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChmZHNldC0+bGZzX3NldHNpemUgPiBGRF9TRVRTSVpFKSB7CisgICAgICAgICAgICBmZHNldC0+bGZzX3NldCA9ICpmZHNldC0+bGZzX3NldHB0cjsKKyAgICAgICAgICAgIGZyZWUoZmRzZXQtPmxmc19zZXRwdHIpOworICAgICAgICB9CisgICAgICAgIGZkc2V0LT5sZnNfc2V0cHRyID0gJmZkc2V0LT5sZnNfc2V0OworICAgIH0KKworI2lmIGRlZmluZWQoY3lnd2luKSB8fCAhZGVmaW5lZChIQVZFX1dJTlNPQ0tfSCkKKyAgICB7CisgICAgICAgIGludCAgICAgICAgICAgICBpOworCisgICAgICAgIC8qCisgICAgICAgICAqIFVuaXg6IHdoZW4gZW5sYXJnaW5nLCBjbGVhciB0aGUgZmlsZSBkZXNjcmlwdG9ycyBkZWZpbmVkIGluIHRoZQorICAgICAgICAgKiByZXNpemVkICpmZHNldCBidXQgdGhhdCB3ZXJlIG5vdCBkZWZpbmVkIGluIHRoZSBvcmlnaW5hbCAqZmRzZXQuCisgICAgICAgICAqLworICAgICAgICBmb3IgKGkgPSBmZHNldC0+bGZzX3NldHNpemU7IGkgPCBzZXRzaXplOyBpKyspCisgICAgICAgICAgICBGRF9DTFIoaSwgZmRzZXQtPmxmc19zZXRwdHIpOworICAgIH0KKyNlbmRpZgorCisgICAgZmRzZXQtPmxmc19zZXRzaXplID0gc2V0c2l6ZTsKKyNpZiAhZGVmaW5lZChjeWd3aW4pICYmIGRlZmluZWQoSEFWRV9XSU5TT0NLX0gpCisgICAgaWYgKHNldHNpemUgPCBmZHNldC0+bGZzX3NldC5mZF9jb3VudCkKKyAgICAgICAgZmRzZXQtPmxmc19zZXQuZmRfY291bnQgPSBzZXRzaXplOworI2VuZGlmCitzdWNjZXNzOgorICAgIHJldHVybiAxOworCitvdXRfb2ZfbWVtOgorICAgIGZkc2V0LT5sZnNfc2V0c2l6ZSA9IDA7CisjaWYgIWRlZmluZWQoY3lnd2luKSAmJiBkZWZpbmVkKEhBVkVfV0lOU09DS19IKQorICAgIGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50ID0gMDsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCit2b2lkCituZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKGZkc2V0LCAwKTsKKyAgICBmZHNldC0+bGZzX3NldHNpemUgPSAwOworICAgIGZkc2V0LT5sZnNfc2V0cHRyICA9IDA7Cit9CisKK3ZvaWQKK25ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmRfc2V0ICogc3JjKQoreworICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZShkc3QsIEZEX1NFVFNJWkUpOworICAgICpkc3QtPmxmc19zZXRwdHIgPSAqc3JjOworfQorCitpbnQKK25ldHNubXBfY29weV9sYXJnZV9mZF9zZXRfdG9fZmRfc2V0KGZkX3NldCAqIGRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogc3JjKQoreworICAgIC8qIFJlcG9ydCBmYWlsdXJlIGlmICpzcmMgaXMgbGFyZ2VyIHRoYW4gRkRfU0VUU0laRS4gKi8KKyAgICBpZiAoc3JjLT5sZnNfc2V0c2l6ZSA+IEZEX1NFVFNJWkUpIHsKKyAgICAgICAgRkRfWkVSTyhkc3QpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgKmRzdCA9ICpzcmMtPmxmc19zZXRwdHI7CisKKyNpZiAhKCFkZWZpbmVkKGN5Z3dpbikgJiYgZGVmaW5lZChIQVZFX1dJTlNPQ0tfSCkpCisgICAgeworICAgICAgICBpbnQgICAgICAgICAgICAgaTsKKworICAgICAgICAvKiBVbml4OiBjbGVhciBhbnkgZmlsZSBkZXNjcmlwdG9ycyBkZWZpbmVkIGluICpkc3QgYnV0IG5vdCBpbiAqc3JjLiAqLworICAgICAgICBmb3IgKGkgPSBzcmMtPmxmc19zZXRzaXplOyBpIDwgRkRfU0VUU0laRTsgKytpKQorICAgICAgICAgICAgRkRfQ0xSKGksIGRzdCk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NubXBsaWIvbGNkX3RpbWUuYyBiL3NubXBsaWIvbGNkX3RpbWUuYwppbmRleCBhMzA1N2RjLi4zZmQ4NTUxIDEwMDY0NAotLS0gYS9zbm1wbGliL2xjZF90aW1lLmMKKysrIGIvc25tcGxpYi9sY2RfdGltZS5jCkBAIC0yOTgsMTQgKzI5OCwxNCBAQAogdm9pZCBmcmVlX2V0aW1lbGlzdCh2b2lkKQogewogICAgICBpbnQgaW5kZXggPSAwOwotICAgICBFbmdpbmV0aW1lIGUgPSAwOwotICAgICBFbmdpbmV0aW1lIG5leHRFID0gMDsKKyAgICAgRW5naW5ldGltZSBlID0gTlVMTDsKKyAgICAgRW5naW5ldGltZSBuZXh0RSA9IE5VTEw7CiAKICAgICAgZm9yKCA7IGluZGV4IDwgRVRJTUVMSVNUX1NJWkU7ICsraW5kZXgpCiAgICAgIHsKICAgICAgICAgICAgZSA9IGV0aW1lbGlzdFtpbmRleF07CiAKLSAgICAgICAgICAgd2hpbGUoZSAhPSAwKQorICAgICAgICAgICB3aGlsZShlICE9IE5VTEwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgbmV4dEUgPSBlLT5uZXh0OwogICAgICAgICAgICAgICAgICBTTk1QX0ZSRUUoZS0+ZW5naW5lSUQpOwpAQCAtMzEzLDcgKzMxMyw3IEBACiAgICAgICAgICAgICAgICAgIGUgPSBuZXh0RTsKICAgICAgICAgICAgfQogCi0gICAgICAgICAgIGV0aW1lbGlzdFtpbmRleF0gPSAwOworICAgICAgICAgICBldGltZWxpc3RbaW5kZXhdID0gTlVMTDsKICAgICAgfQogICAgICByZXR1cm47CiB9CkBAIC01MDYsNiArNTA2LDEyIEBACiAgICAgcnZhbCA9IHNjX2hhc2godXNtSE1BQ01ENUF1dGhQcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICBzaXplb2YodXNtSE1BQ01ENUF1dGhQcm90b2NvbCkgLyBzaXplb2Yob2lkKSwKICAgICAgICAgICAgICAgICAgICBlbmdpbmVJRCwgZW5naW5lSURfbGVuLCBidWYsICZidWZfbGVuKTsKKyAgICBpZiAocnZhbCA9PSBTTk1QRVJSX1NDX05PVF9DT05GSUdVUkVEKSB7CisgICAgICAgIC8qIGZhbGwgYmFjayB0byBzaGExICovCisgICAgICAgIHJ2YWwgPSBzY19oYXNoKHVzbUhNQUNTSEExQXV0aFByb3RvY29sLAorICAgICAgICAgICAgICAgICAgIHNpemVvZih1c21ITUFDU0hBMUF1dGhQcm90b2NvbCkgLyBzaXplb2Yob2lkKSwKKyAgICAgICAgICAgICAgICAgICBlbmdpbmVJRCwgZW5naW5lSURfbGVuLCBidWYsICZidWZfbGVuKTsKKyAgICB9CiAjZWxzZQogICAgIHJ2YWwgPSBzY19oYXNoKHVzbUhNQUNTSEExQXV0aFByb3RvY29sLAogICAgICAgICAgICAgICAgICAgIHNpemVvZih1c21ITUFDU0hBMUF1dGhQcm90b2NvbCkgLyBzaXplb2Yob2lkKSwKZGlmZiAtLWdpdCBhL3NubXBsaWIvbWQ1LmMgYi9zbm1wbGliL21kNS5jCmluZGV4IGIxMjhjY2EuLjEwNjI1NTAgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvbWQ1LmMKKysrIGIvc25tcGxpYi9tZDUuYwpAQCAtNDM0LDcgKzQzNCw3IEBACiAgICAgdV9jaGFyICAgICAgICAgIGV4dGVuZGVkQXV0aEtleVtIQVNIS0VZTEVOXTsKICAgICB1X2NoYXIgICAgICAgICAgYnVmW0hBU0hLRVlMRU5dOwogICAgIHNpemVfdCAgICAgICAgICBpOwotICAgIHVfY2hhciAgICAgICAgICpjcCwgKm5ld2RhdGEgPSAwOworICAgIHVfY2hhciAgICAgICAgICpjcCwgKm5ld2RhdGEgPSBOVUxMOwogICAgIGludCAgICAgICAgICAgICByYyA9IDA7CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvc25tcGxpYi9taWIuYyBiL3NubXBsaWIvbWliLmMKaW5kZXggN2RjZjNkMC4uZjI5OGUyZiAxMDA2NDQKLS0tIGEvc25tcGxpYi9taWIuYworKysgYi9zbm1wbGliL21pYi5jCkBAIC00Miw2ICs0MiwyNCBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2lmIEhBVkVfRElSRU5UX0gKKyMgaW5jbHVkZSA8ZGlyZW50Lmg+CisjIGRlZmluZSBOQU1MRU4oZGlyZW50KSBzdHJsZW4oKGRpcmVudCktPmRfbmFtZSkKKyNlbHNlCisjIGRlZmluZSBkaXJlbnQgZGlyZWN0CisjIGRlZmluZSBOQU1MRU4oZGlyZW50KSAoZGlyZW50KS0+ZF9uYW1sZW4KKyMgaWYgSEFWRV9TWVNfTkRJUl9ICisjICBpbmNsdWRlIDxzeXMvbmRpci5oPgorIyBlbmRpZgorIyBpZiBIQVZFX1NZU19ESVJfSAorIyAgaW5jbHVkZSA8c3lzL2Rpci5oPgorIyBlbmRpZgorIyBpZiBIQVZFX05ESVJfSAorIyAgaW5jbHVkZSA8bmRpci5oPgorIyBlbmRpZgorI2VuZGlmCisKICNpZiBIQVZFX05FVElORVRfSU5fSAogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNlbmRpZgpAQCAtMjM0MSw3ICsyMzU5LDkgQEAKIAogICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfcHJlbWliKEFTTl9CT09MRUFOLCAic25tcCIsICJzaG93TWliRXJyb3JzIiwKICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9NSUJfRVJST1JTKTsKLSAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX3ByZW1pYihBU05fQk9PTEVBTiwgInNubXAiLCAic3RyaWN0Q29tbWVudFRlcm0iLAorICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfcHJlbWliKEFTTl9CT09MRUFOLCAic25tcCIsICJjb21tZW50VG9FT0wiLCAgICAgLyogRGVzY3JpYmVzIGFjdHVhbCBiZWhhdmlvdXIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9NSUJfQ09NTUVOVF9URVJNKTsKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX3ByZW1pYihBU05fQk9PTEVBTiwgInNubXAiLCAic3RyaWN0Q29tbWVudFRlcm0iLCAgICAvKiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovCiAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfTUlCX0NPTU1FTlRfVEVSTSk7CiAgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9wcmVtaWIoQVNOX0JPT0xFQU4sICJzbm1wIiwgIm1pYkFsbG93VW5kZXJsaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9NSUJfUEFSU0VfTEFCRUwpOwpAQCAtMjU1Niw2ICsyNTc2LDcgQEAKICAgICAgKi8KICAgICBuZXRzbm1wX2ZpeHVwX21pYl9kaXJlY3RvcnkoKTsKICAgICBlbnZfdmFyID0gc3RyZHVwKG5ldHNubXBfZ2V0X21pYl9kaXJlY3RvcnkoKSk7CisgICAgbmV0c25tcF9taWJpbmRleF9sb2FkKCk7CiAKICAgICBERUJVR01TR1RMKCgiaW5pdF9taWIiLAogICAgICAgICAgICAgICAgICJTZWVuIE1JQkRJUlM6IExvb2tpbmcgaW4gJyVzJyBmb3IgbWliIGRpcnMgLi4uXG4iLApAQCAtMjYyMSw3ICsyNjQyLDcgQEAKICAgICB3aGlsZSAoZW50cnkpIHsKICAgICAgICAgaWYgKHN0cmNhc2VjbXAoZW50cnksIERFQlVHX0FMV0FZU19UT0tFTikgPT0gMCkgewogICAgICAgICAgICAgcmVhZF9hbGxfbWlicygpOwotICAgICAgICB9IGVsc2UgaWYgKHN0cnN0cihlbnRyeSwgIi8iKSAhPSAwKSB7CisgICAgICAgIH0gZWxzZSBpZiAoc3Ryc3RyKGVudHJ5LCAiLyIpICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlYWRfbWliKGVudHJ5KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG5ldHNubXBfcmVhZF9tb2R1bGUoZW50cnkpOwpAQCAtMjY2Miw3ICsyNjgzLDcgQEAKICNlbmRpZgogICAgIH0KIAotICAgIGlmIChlbnZfdmFyICE9IDApIHsKKyAgICBpZiAoZW52X3ZhciAhPSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJpbml0X21pYiIsCiAgICAgICAgICAgICAgICAgICAgICJTZWVuIE1JQkZJTEVTOiBMb29raW5nIGluICclcycgZm9yIG1pYiBmaWxlcyAuLi5cbiIsCiAgICAgICAgICAgICAgICAgICAgIGVudl92YXIpKTsKQEAgLTI3MTcsNyArMjczOCw3IEBACiAgICAgfQogfQogCi0jaWZuZGVmIE5FVFNOTVBfQ0xFQU5fTkFNRVNQQUNFCisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCiB2b2lkCiBpbml0X21pYih2b2lkKQogewpAQCAtMjcyNiw2ICsyNzQ3LDEzOSBAQAogI2VuZGlmCiAKIAorLyoKKyAqIEhhbmRsZSBNSUIgaW5kZXhlcyBjZW50cmFsbHkKKyAqLworc3RhdGljIGludCBfbWliaW5kZXggICAgID0gMDsgICAvKiBMYXN0IGluZGV4IGluIHVzZSAqLworc3RhdGljIGludCBfbWliaW5kZXhfbWF4ID0gMDsgICAvKiBTaXplIG9mIGluZGV4IGFycmF5ICovCitjaGFyICAgICAqKl9taWJpbmRleGVzICAgPSBOVUxMOworCitpbnQgX21pYmluZGV4X2FkZCggY29uc3QgY2hhciAqZGlybmFtZSwgaW50IGkgKTsKK3ZvaWQKK25ldHNubXBfbWliaW5kZXhfbG9hZCggdm9pZCApCit7CisgICAgRElSICpkaXI7CisgICAgc3RydWN0IGRpcmVudCAqZmlsZTsKKyAgICBGSUxFICpmcDsKKyAgICBjaGFyIHRtcGJ1ZlsgMzAwXTsKKyAgICBjaGFyIHRtcGJ1ZjJbMzAwXTsKKyAgICBpbnQgIGk7CisgICAgY2hhciAqY3A7CisKKyAgICAvKgorICAgICAqIE9wZW4gdGhlIE1JQiBpbmRleCBkaXJlY3RvcnksIG9yIGNyZWF0ZSBpdCAoZW1wdHkpCisgICAgICovCisgICAgc25wcmludGYoIHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICIlcy9taWJfaW5kZXhlcyIsCisgICAgICAgICAgICAgIGdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeSgpKTsKKyAgICB0bXBidWZbc2l6ZW9mKHRtcGJ1ZiktMV0gPSAwOworICAgIGRpciA9IG9wZW5kaXIoIHRtcGJ1ZiApOworICAgIGlmICggZGlyID09IE5VTEwgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJtaWJpbmRleCIsICJsb2FkOiAobmV3KVxuIikpOworICAgICAgICBta2RpcmhpZXIoIHRtcGJ1ZiwgTkVUU05NUF9BR0VOVF9ESVJFQ1RPUllfTU9ERSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIENyZWF0ZSBhIGxpc3Qgb2Ygd2hpY2ggZGlyZWN0b3J5IGVhY2ggZmlsZSByZWZlcnMgdG8KKyAgICAgKi8KKyAgICB3aGlsZSAoKGZpbGUgPSByZWFkZGlyKCBkaXIgKSkpIHsKKyAgICAgICAgaWYgKCAhaXNkaWdpdChmaWxlLT5kX25hbWVbMF0pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGkgPSBhdG9pKCBmaWxlLT5kX25hbWUgKTsKKworICAgICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIiVzL21pYl9pbmRleGVzLyVkIiwKKyAgICAgICAgICAgICAgZ2V0X3BlcnNpc3RlbnRfZGlyZWN0b3J5KCksIGkgKTsKKyAgICAgICAgdG1wYnVmW3NpemVvZih0bXBidWYpLTFdID0gMDsKKyAgICAgICAgZnAgPSBmb3BlbiggdG1wYnVmLCAiciIgKTsKKyAgICAgICAgaWYgKCFmcCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjcCA9IGZnZXRzKCB0bXBidWYyLCBzaXplb2YodG1wYnVmMiksIGZwICk7CisgICAgICAgIGlmICggIWNwICkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoIm1pYmluZGV4IiwgIkVtcHR5IE1JQiBpbmRleCAoJWQpXG4iLCBpKSk7CisgICAgICAgICAgICBmY2xvc2UoZnApOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgdG1wYnVmMltzdHJsZW4odG1wYnVmMiktMV0gPSAwOworICAgICAgICBERUJVR01TR1RMKCgibWliaW5kZXgiLCAibG9hZDogKCVkKSAlc1xuIiwgaSwgdG1wYnVmMikpOworICAgICAgICAodm9pZClfbWliaW5kZXhfYWRkKCB0bXBidWYyKzQsIGkgKTsgIC8qIFNraXAgJ0RJUiAnICovCisgICAgICAgIGZjbG9zZSggZnAgKTsKKyAgICB9CisgICAgY2xvc2VkaXIoIGRpciApOworfQorCitjaGFyICoKK25ldHNubXBfbWliaW5kZXhfbG9va3VwKCBjb25zdCBjaGFyICpkaXJuYW1lICkKK3sKKyAgICBpbnQgaTsKKyAgICBzdGF0aWMgY2hhciB0bXBidWZbMzAwXTsKKworICAgIGZvciAoaT0wOyBpPF9taWJpbmRleDsgaSsrKSB7CisgICAgICAgIGlmICggX21pYmluZGV4ZXNbaV0gJiYKKyAgICAgICAgICAgICBzdHJjbXAoIF9taWJpbmRleGVzW2ldLCBkaXJuYW1lICkgPT0gMCkgeworICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICIlcy9taWJfaW5kZXhlcy8lZCIsCisgICAgICAgICAgICAgICAgICAgICAgZ2V0X3BlcnNpc3RlbnRfZGlyZWN0b3J5KCksIGkpOworICAgICAgICAgICAgIHRtcGJ1ZltzaXplb2YodG1wYnVmKS0xXSA9IDA7CisgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm1pYmluZGV4IiwgImxvb2t1cDogJXMgKCVkKSAlc1xuIiwgZGlybmFtZSwgaSwgdG1wYnVmICkpOworICAgICAgICAgICAgIHJldHVybiB0bXBidWY7CisgICAgICAgIH0KKyAgICB9CisgICAgREVCVUdNU0dUTCgoIm1pYmluZGV4IiwgImxvb2t1cDogKG5vbmUpXG4iKSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2ludAorX21pYmluZGV4X2FkZCggY29uc3QgY2hhciAqZGlybmFtZSwgaW50IGkgKQoreworICAgIGNvbnN0IGludCBvbGRfbWliaW5kZXhfbWF4ID0gX21pYmluZGV4X21heDsKKworICAgIERFQlVHTVNHVEwoKCJtaWJpbmRleCIsICJhZGQ6ICVzICglZClcbiIsIGRpcm5hbWUsIGkgKSk7CisgICAgaWYgKCBpID09IC0xICkKKyAgICAgICAgaSA9IF9taWJpbmRleCsrOworICAgIGlmICggaSA+PSBfbWliaW5kZXhfbWF4ICkgeworICAgICAgICAvKgorICAgICAgICAgKiBJZiB0aGUgaW5kZXggYXJyYXkgaXMgZnVsbCAob3Igbm9uLWV4aXN0ZW50KQorICAgICAgICAgKiAgIHRoZW4gZXhwYW5kIChvciBjcmVhdGUpIGl0CisgICAgICAgICAqLworICAgICAgICBfbWliaW5kZXhfbWF4ID0gaSArIDEwOworICAgICAgICBfbWliaW5kZXhlcyA9IHJlYWxsb2MoX21pYmluZGV4ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWliaW5kZXhfbWF4ICogc2l6ZW9mKF9taWJpbmRleGVzWzBdKSk7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KF9taWJpbmRleGVzKTsKKyAgICAgICAgbWVtc2V0KF9taWJpbmRleGVzICsgb2xkX21pYmluZGV4X21heCwgMCwKKyAgICAgICAgICAgICAgIChfbWliaW5kZXhfbWF4IC0gb2xkX21pYmluZGV4X21heCkgKiBzaXplb2YoX21pYmluZGV4ZXNbMF0pKTsKKyAgICB9CisKKyAgICBfbWliaW5kZXhlc1sgaSBdID0gc3RyZHVwKCBkaXJuYW1lICk7CisgICAgaWYgKCBpID49IF9taWJpbmRleCApCisgICAgICAgIF9taWJpbmRleCA9IGkrMTsKKworICAgIERFQlVHTVNHVEwoKCJtaWJpbmRleCIsICJhZGQ6ICVkLyVkLyVkXG4iLCBpLCBfbWliaW5kZXgsIF9taWJpbmRleF9tYXggKSk7CisgICAgcmV0dXJuIGk7Cit9CisgICAgCitGSUxFICoKK25ldHNubXBfbWliaW5kZXhfbmV3KCBjb25zdCBjaGFyICpkaXJuYW1lICkKK3sKKyAgICBGSUxFICpmcDsKKyAgICBjaGFyICB0bXBidWZbMzAwXTsKKyAgICBjaGFyICpjcDsKKyAgICBpbnQgICBpOworCisgICAgY3AgPSBuZXRzbm1wX21pYmluZGV4X2xvb2t1cCggZGlybmFtZSApOworICAgIGlmICghY3ApIHsKKyAgICAgICAgaSAgPSBfbWliaW5kZXhfYWRkKCBkaXJuYW1lLCAtMSApOworICAgICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIiVzL21pYl9pbmRleGVzLyVkIiwKKyAgICAgICAgICAgICAgICAgIGdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeSgpLCBpICk7CisgICAgICAgIHRtcGJ1ZltzaXplb2YodG1wYnVmKS0xXSA9IDA7CisgICAgICAgIGNwID0gdG1wYnVmOworICAgIH0KKyAgICBERUJVR01TR1RMKCgibWliaW5kZXgiLCAibmV3OiAlcyAoJXMpXG4iLCBkaXJuYW1lLCBjcCApKTsKKyAgICBmcCA9IGZvcGVuKCBjcCwgInciICk7CisgICAgaWYgKGZwKQorICAgICAgICBmcHJpbnRmKCBmcCwgIkRJUiAlc1xuIiwgZGlybmFtZSApOworICAgIHJldHVybiBmcDsKK30KKworCiAvKioKICAqIFVubG9hZHMgYWxsIG1pYnMuCiAgKi8KQEAgLTI3NDEsNiArMjg5NSwxNSBAQAogICAgIH0KICAgICB0cmVlX2hlYWQgPSBOVUxMOwogICAgIE1pYiA9IE5VTEw7CisgICAgaWYgKF9taWJpbmRleGVzKSB7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgX21pYmluZGV4OyArK2kpCisgICAgICAgICAgICBTTk1QX0ZSRUUoX21pYmluZGV4ZXNbaV0pOworICAgICAgICBmcmVlKF9taWJpbmRleGVzKTsKKyAgICAgICAgX21pYmluZGV4ID0gMDsKKyAgICAgICAgX21pYmluZGV4X21heCA9IDA7CisgICAgICAgIF9taWJpbmRleGVzID0gTlVMTDsKKyAgICB9CiAgICAgaWYgKFByZWZpeCAhPSBOVUxMICYmIFByZWZpeCAhPSAmU3RhbmRhcmRfUHJlZml4WzBdKQogICAgICAgICBTTk1QX0ZSRUUoUHJlZml4KTsKICAgICBpZiAoUHJlZml4KQpAQCAtMzI4NSw3ICszNDQ4LDcgQEAKICAgICAgICAgICogSGFuZGxlIHJhcmUgY2FzZSB3aGVyZSB0cmVlIGlzIGVtcHR5LiAgCiAgICAgICAgICAqLwogICAgICAgICByZXR1cm4gc3ByaW50X3JlYWxsb2NfYnlfdHlwZShidWYsIGJ1Zl9sZW4sIG91dF9sZW4sIGFsbG93X3JlYWxsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIE5VTEwsIE5VTEwsIE5VTEwpOwogICAgIH0KIH0KIApAQCAtMzU0MSw4ICszNzA0LDggQEAKIAogICAgIGlmICh2YXItPm5hbWVfbGVuZ3RoID4gTUFYX09JRF9MRU4pIHsKICAgICAgICAgREVCVUdNU0dUTCgoImJ1aWxkX29pZF9zZWdtZW50IiwKLSAgICAgICAgICAgICAgICAgICAgIlNvbWV0aGluZyB0ZXJyaWJseSB3cm9uZywgbmFtZWxlbiA9ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICB2YXItPm5hbWVfbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgICJTb21ldGhpbmcgdGVycmlibHkgd3JvbmcsIG5hbWVsZW4gPSAlbHVcbiIsCisgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXZhci0+bmFtZV9sZW5ndGgpKTsKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogICAgIH0KIApAQCAtMzY2Niw3ICszODI5LDcgQEAKICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdmFsdWUodmFyLCAodV9jaGFyICopIG9pZExlbiwgc2l6ZW9mKGxvbmcpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwYXJzZV9vaWRfaW5kZXhlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiUGFyc2VkIGludCglZCk6ICVkXG4iLCB2YXItPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAiUGFyc2VkIGludCglZCk6ICVsZFxuIiwgdmFyLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgKnZhci0+dmFsLmludGVnZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0zNjc3LDcgKzM4NDAsNyBAQAogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQgJiYgaSA8ICpvaWRMZW47ICsraSkgewogICAgICAgICAgICAgICAgIGlmIChvaWRJbmRleFtpXSA+IDI1NSkgewogICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGFyc2Vfb2lkX2luZGV4ZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCBvaWQgaW4gaW5kZXg6ICVkXG4iLCBvaWRJbmRleFswXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCBvaWQgaW4gaW5kZXg6ICVsZFxuIiwgb2lkSW5kZXhbMF0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsgIC8qIHN1Yi1pZGVudGlmaWVyIHRvbyBsYXJnZSAqLwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHVpdG1wID0gdWl0bXAgKyAob2lkSW5kZXhbaV0gPDwgKDgqKDMtaSkpKTsKQEAgLTU3ODYsNyArNTk0OSw3IEBACiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgcmVnaXN0ZXIgc3RydWN0IHRyZWUgKm50cDsKIAotICAgICAgICB0cCA9IDA7CisgICAgICAgIHRwID0gTlVMTDsKICAgICAgICAgZm9yIChudHAgPSB0cmVlLT5jaGlsZF9saXN0OyBudHA7IG50cCA9IG50cC0+bmV4dF9wZWVyKSB7CiAgICAgICAgICAgICBpZiAobnRwLT5yZXBvcnRlZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvcGFyc2UuYyBiL3NubXBsaWIvcGFyc2UuYwppbmRleCA2NzgxOWJmLi5iYTRlODRjIDEwMDY0NAotLS0gYS9zbm1wbGliL3BhcnNlLmMKKysrIGIvc25tcGxpYi9wYXJzZS5jCkBAIC0xMTUsNiArMTE1LDMzIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogCiAvKgorICogQSBsaW5rZWQgbGlzdCBvZiBub2Rlcy4KKyAqLworc3RydWN0IG5vZGUgeworICAgIHN0cnVjdCBub2RlICAgICpuZXh0OworICAgIGNoYXIgICAgICAgICAgICpsYWJlbDsgIC8qIFRoaXMgbm9kZSdzICh1bmlxdWUpIHRleHR1YWwgbmFtZSAqLworICAgIHVfbG9uZyAgICAgICAgICBzdWJpZDsgIC8qIFRoaXMgbm9kZSdzIGludGVnZXIgc3ViaWRlbnRpZmllciAqLworICAgIGludCAgICAgICAgICAgICBtb2RpZDsgIC8qIFRoZSBtb2R1bGUgY29udGFpbmluZyB0aGlzIG5vZGUgKi8KKyAgICBjaGFyICAgICAgICAgICAqcGFyZW50OyAvKiBUaGUgcGFyZW50J3MgdGV4dHVhbCBuYW1lICovCisgICAgaW50ICAgICAgICAgICAgIHRjX2luZGV4OyAvKiBpbmRleCBpbnRvIHRjbGlzdCAoLTEgaWYgTkEpICovCisgICAgaW50ICAgICAgICAgICAgIHR5cGU7ICAgLyogVGhlIHR5cGUgb2Ygb2JqZWN0IHRoaXMgcmVwcmVzZW50cyAqLworICAgIGludCAgICAgICAgICAgICBhY2Nlc3M7CisgICAgaW50ICAgICAgICAgICAgIHN0YXR1czsKKyAgICBzdHJ1Y3QgZW51bV9saXN0ICplbnVtczsgLyogKG9wdGlvbmFsKSBsaXN0IG9mIGVudW1lcmF0ZWQgaW50ZWdlcnMgKi8KKyAgICBzdHJ1Y3QgcmFuZ2VfbGlzdCAqcmFuZ2VzOworICAgIHN0cnVjdCBpbmRleF9saXN0ICppbmRleGVzOworICAgIGNoYXIgICAgICAgICAgICphdWdtZW50czsKKyAgICBzdHJ1Y3QgdmFyYmluZF9saXN0ICp2YXJiaW5kczsKKyAgICBjaGFyICAgICAgICAgICAqaGludDsKKyAgICBjaGFyICAgICAgICAgICAqdW5pdHM7CisgICAgY2hhciAgICAgICAgICAgKmRlc2NyaXB0aW9uOyAvKiBkZXNjcmlwdGlvbiAoYSBxdW90ZWQgc3RyaW5nKSAqLworICAgIGNoYXIgICAgICAgICAgICpyZWZlcmVuY2U7IC8qIHJlZmVyZW5jZXMgKGEgcXVvdGVkIHN0cmluZykgKi8KKyAgICBjaGFyICAgICAgICAgICAqZGVmYXVsdFZhbHVlOworICAgIGNoYXIgICAgICAgICAgICpmaWxlbmFtZTsKKyAgICBpbnQgICAgICAgICAgICAgbGluZW5vOworfTsKKworLyoKICAqIFRoaXMgaXMgb25lIGVsZW1lbnQgb2YgYW4gb2JqZWN0IGlkZW50aWZpZXIgd2l0aCBlaXRoZXIgYW4gaW50ZWdlcgogICogc3ViaWRlbnRpZmllciwgb3IgYSB0ZXh0dWFsIHN0cmluZyBsYWJlbCwgb3IgYm90aC4KICAqIFRoZSBzdWJpZCBpcyAtMSBpZiBub3QgcHJlc2VudCwgYW5kIGxhYmVsIGlzIE5VTEwgaWYgbm90IHByZXNlbnQuCkBAIC01MjMsOCArNTUwLDggQEAKIHN0YXRpYyBzdHJ1Y3QgdHJlZSAqdGJ1Y2tldHNbTkhBU0hTSVpFXTsKIHN0YXRpYyBzdHJ1Y3QgbW9kdWxlICptb2R1bGVfaGVhZCA9IE5VTEw7CiAKLXN0cnVjdCBub2RlICAgICpvcnBoYW5fbm9kZXMgPSBOVUxMOwotc3RydWN0IHRyZWUgICAgKnRyZWVfaGVhZCA9IE5VTEw7CitzdGF0aWMgc3RydWN0IG5vZGUgKm9ycGhhbl9ub2RlcyA9IE5VTEw7CitzdHJ1Y3QgdHJlZSAgICAgICAgKnRyZWVfaGVhZCA9IE5VTEw7CiAKICNkZWZpbmUJTlVNQkVSX09GX1JPT1RfTk9ERVMJMwogc3RhdGljIHN0cnVjdCBtb2R1bGVfaW1wb3J0IHJvb3RfaW1wb3J0c1tOVU1CRVJfT0ZfUk9PVF9OT0RFU107CkBAIC01MzIsNyArNTU5LDcgQEAKIHN0YXRpYyBpbnQgICAgICBjdXJyZW50X21vZHVsZSA9IDA7CiBzdGF0aWMgaW50ICAgICAgbWF4X21vZHVsZSA9IDA7CiBzdGF0aWMgaW50ICAgICAgZmlyc3RfZXJyX21vZHVsZSA9IDE7Ci1zdGF0aWMgY2hhciAgICAqbGFzdF9lcnJfbW9kdWxlID0gMDsgICAgLyogbm8gcmVwZWF0cyBvbiAiQ2Fubm90IGZpbmQgbW9kdWxlLi4uIiAqLworc3RhdGljIGNoYXIgICAgKmxhc3RfZXJyX21vZHVsZSA9IE5VTEw7IC8qIG5vIHJlcGVhdHMgb24gIkNhbm5vdCBmaW5kIG1vZHVsZS4uLiIgKi8KIAogc3RhdGljIHZvaWQgICAgIHRyZWVfZnJvbV9ub2RlKHN0cnVjdCB0cmVlICp0cCwgc3RydWN0IG5vZGUgKm5wKTsKIHN0YXRpYyB2b2lkICAgICBkb19zdWJ0cmVlKHN0cnVjdCB0cmVlICosIHN0cnVjdCBub2RlICoqKTsKQEAgLTcyNyw3ICs3NTQsNyBAQAogICAgICAqLwogfQogCi0jaWZuZGVmIE5FVFNOTVBfQ0xFQU5fTkFNRVNQQUNFCisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCiB2b2lkCiBpbml0X21pYl9pbnRlcm5hbHModm9pZCkKIHsKQEAgLTk1MSw3ICs5NzgsNiBAQAogc3RhdGljIHZvaWQKIHByaW50X25vZGVzKEZJTEUgKiBmcCwgc3RydWN0IG5vZGUgKnJvb3QpCiB7Ci0gICAgZXh0ZXJuIHZvaWQgICAgIHhtYWxsb2Nfc3RhdHMoRklMRSAqKTsKICAgICBzdHJ1Y3QgZW51bV9saXN0ICplcDsKICAgICBzdHJ1Y3QgaW5kZXhfbGlzdCAqaXA7CiAgICAgc3RydWN0IHJhbmdlX2xpc3QgKnJwOwpAQCAtMTA1Niw3ICsxMDgyLDcgQEAKIHN0YXRpYyBpbnQgICAgICB0cmFuc2xhdGlvbl90YWJsZVsyNTZdOwogCiBzdGF0aWMgdm9pZAotYnVpbGRfdHJhbnNsYXRpb25fdGFibGUoKQorYnVpbGRfdHJhbnNsYXRpb25fdGFibGUodm9pZCkKIHsKICAgICBpbnQgICAgICAgICAgICAgY291bnQ7CiAKQEAgLTExNDIsNyArMTE2OCw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1pbml0X3RyZWVfcm9vdHMoKQoraW5pdF90cmVlX3Jvb3RzKHZvaWQpCiB7CiAgICAgc3RydWN0IHRyZWUgICAgKnRwLCAqbGFzdHRwOwogICAgIGludCAgICAgICAgICAgICBiYXNlX21vZGlkOwpAQCAtMjk2NSw3ICsyOTkxLDYgQEAKICAgICBzdHJjcHkobnAtPnBhcmVudCwgbnAtPm5leHQtPnBhcmVudCk7CiAgICAgc3RyY2F0KG5wLT5wYXJlbnQsICIjIik7CiAgICAgbnAtPm5leHQtPmxhYmVsID0gc3RyZHVwKG5wLT5wYXJlbnQpOwotICAgIG5wLT50eXBlID0gVFJBUFRZUEU7CiAgICAgcmV0dXJuIG5wOwogfQogCkBAIC0zOTM4LDcgKzM5NjMsNyBAQAogICAgICAgICB9CiB9CiAKLSNpZm5kZWYgTkVUU05NUF9DTEVBTl9OQU1FU1BBQ0UKKyNpZm5kZWYgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMKIHN0cnVjdCB0cmVlICAgICoKIHJlYWRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCiB7CkBAIC00MDM5LDcgKzQwNjQsNyBAQAogICAgIH0KIH0KIAotI2lmbmRlZiBORVRTTk1QX0NMRUFOX05BTUVTUEFDRQorI2lmbmRlZiBORVRTTk1QX05PX0xFR0FDWV9ERUZJTklUSU9OUwogaW50CiB1bmxvYWRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCiB7CkBAIC00MDczLDcgKzQwOTgsNyBAQAogICogQ2xlYXIgbW9kdWxlIG1hcCwgdHJlZSBub2RlcywgdGV4dHVhbCBjb252ZW50aW9uIHRhYmxlLgogICovCiB2b2lkCi11bmxvYWRfYWxsX21pYnMoKQordW5sb2FkX2FsbF9taWJzKHZvaWQpCiB7CiAgICAgc3RydWN0IG1vZHVsZSAgKm1wOwogICAgIHN0cnVjdCBtb2R1bGVfY29tcGF0YWJpbGl0eSAqbWNwOwpAQCAtNDE5Miw3ICs0MjE3LDcgQEAKIAogCiBzdGF0aWMgdm9pZAotc2Nhbl9vYmpsaXN0KHN0cnVjdCBub2RlICpyb290LCBzdHJ1Y3Qgb2JqZ3JvdXAgKmxpc3QsIGNvbnN0IGNoYXIgKmVycm9yKQorc2Nhbl9vYmpsaXN0KHN0cnVjdCBub2RlICpyb290LCBzdHJ1Y3QgbW9kdWxlICptcCwgc3RydWN0IG9iamdyb3VwICpsaXN0LCBjb25zdCBjaGFyICplcnJvcikKIHsKICAgICBpbnQgICAgICAgICAgICAgb0xpbmUgPSBtaWJMaW5lOwogCkBAIC00MjA3LDggKzQyMzIsMTYgQEAKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKCFucCkgewotICAgICAgICAgICAgbWliTGluZSA9IGdwLT5saW5lOwotICAgICAgICAgICAgcHJpbnRfZXJyb3IoZXJyb3IsIGdwLT5uYW1lLCBRVU9URVNUUklORyk7CisJICAgIGludCBpOworCSAgICBzdHJ1Y3QgbW9kdWxlX2ltcG9ydCAqbWlwOworCSAgICAvKiBpZiBub3QgbG9jYWwsIGNoZWNrIGlmIGl0IHdhcyBJTVBPUlRlZCAqLworCSAgICBmb3IgKGkgPSAwLCBtaXAgPSBtcC0+aW1wb3J0czsgaSA8IG1wLT5ub19pbXBvcnRzOyBpKyssIG1pcCsrKQorCQlpZiAoc3RyY21wKG1pcC0+bGFiZWwsIGdwLT5uYW1lKSA9PSAwKQorCQkgICAgYnJlYWs7CisJICAgIGlmIChpID09IG1wLT5ub19pbXBvcnRzKSB7CisJCW1pYkxpbmUgPSBncC0+bGluZTsKKwkJcHJpbnRfZXJyb3IoZXJyb3IsIGdwLT5uYW1lLCBRVU9URVNUUklORyk7CisJICAgIH0KICAgICAgICAgfQogICAgICAgICBmcmVlKGdwLT5uYW1lKTsKICAgICAgICAgZnJlZShncCk7CkBAIC00MjIzLDYgKzQyNTYsOSBAQAogc3RhdGljIHN0cnVjdCBub2RlICoKIHBhcnNlKEZJTEUgKiBmcCwgc3RydWN0IG5vZGUgKnJvb3QpCiB7CisjaWZkZWYgVEVTVAorICAgIGV4dGVybiB2b2lkICAgICB4bWFsbG9jX3N0YXRzKEZJTEUgKik7CisjZW5kaWYKICAgICBjaGFyICAgICAgICAgICAgdG9rZW5bTUFYVE9LRU5dOwogICAgIGNoYXIgICAgICAgICAgICBuYW1lW01BWFRPS0VOKzFdOwogICAgIGludCAgICAgICAgICAgICB0eXBlID0gTEFCRUw7CkBAIC00MjM5LDcgKzQyNzUsNyBAQAogCiAgICAgaWYgKGxhc3RfZXJyX21vZHVsZSkKICAgICAgICAgZnJlZShsYXN0X2Vycl9tb2R1bGUpOwotICAgIGxhc3RfZXJyX21vZHVsZSA9IDA7CisgICAgbGFzdF9lcnJfbW9kdWxlID0gTlVMTDsKIAogICAgIG5wID0gcm9vdDsKICAgICBpZiAobnAgIT0gTlVMTCkgewpAQCAtNDI2NywxNSArNDMwMywxNSBAQAogICAgICAgICAgICAgICAgIHByaW50ZigiXG5Ob2RlcyBmb3IgTW9kdWxlICVzOlxuIiwgbmFtZSk7CiAgICAgICAgICAgICAgICAgcHJpbnRfbm9kZXMoc3Rkb3V0LCByb290KTsKICNlbmRpZgotICAgICAgICAgICAgICAgIHNjYW5fb2JqbGlzdChyb290LCBvYmpncm91cHMsICJVbmRlZmluZWQgT0JKRUNULUdST1VQIik7Ci0gICAgICAgICAgICAgICAgc2Nhbl9vYmpsaXN0KHJvb3QsIG9iamVjdHMsICJVbmRlZmluZWQgT0JKRUNUIik7Ci0gICAgICAgICAgICAgICAgc2Nhbl9vYmpsaXN0KHJvb3QsIG5vdGlmcywgIlVuZGVmaW5lZCBOT1RJRklDQVRJT04iKTsKLSAgICAgICAgICAgICAgICBvYmpncm91cHMgPSBvbGRncm91cHM7Ci0gICAgICAgICAgICAgICAgb2JqZWN0cyA9IG9sZG9iamVjdHM7Ci0gICAgICAgICAgICAgICAgbm90aWZzID0gb2xkbm90aWZzOwogICAgICAgICAgICAgICAgIGZvciAobXAgPSBtb2R1bGVfaGVhZDsgbXA7IG1wID0gbXAtPm5leHQpCiAgICAgICAgICAgICAgICAgICAgIGlmIChtcC0+bW9kaWQgPT0gY3VycmVudF9tb2R1bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBzY2FuX29iamxpc3Qocm9vdCwgbXAsIG9iamdyb3VwcywgIlVuZGVmaW5lZCBPQkpFQ1QtR1JPVVAiKTsKKyAgICAgICAgICAgICAgICBzY2FuX29iamxpc3Qocm9vdCwgbXAsIG9iamVjdHMsICJVbmRlZmluZWQgT0JKRUNUIik7CisgICAgICAgICAgICAgICAgc2Nhbl9vYmpsaXN0KHJvb3QsIG1wLCBub3RpZnMsICJVbmRlZmluZWQgTk9USUZJQ0FUSU9OIik7CisgICAgICAgICAgICAgICAgb2JqZ3JvdXBzID0gb2xkZ3JvdXBzOworICAgICAgICAgICAgICAgIG9iamVjdHMgPSBvbGRvYmplY3RzOworICAgICAgICAgICAgICAgIG5vdGlmcyA9IG9sZG5vdGlmczsKICAgICAgICAgICAgICAgICBkb19saW5rdXAobXAsIHJvb3QpOwogICAgICAgICAgICAgICAgIG5wID0gcm9vdCA9IE5VTEw7CiAgICAgICAgICAgICB9CkBAIC00MjgzLDcgKzQzMTksNyBAQAogI2lmZGVmIFRFU1QKICAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELCAKIAkJCQkgICBORVRTTk1QX0RTX0xJQl9NSUJfV0FSTklOR1MpKSB7Ci0gICAgICAgICAgICAgICAgeG1hbGxvY19zdGF0cyhzdGRlcnIpOworICAgICAgICAgICAgICAgIC8qIHhtYWxsb2Nfc3RhdHMoc3RkZXJyKTsgKi8KIAkgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQ1MjAsNiArNDU1Niw3IEBACiAgICAgcmVnaXN0ZXIgaW50ICAgIGhhc2ggPSAwOwogICAgIHJlZ2lzdGVyIHN0cnVjdCB0b2sgKnRwOwogICAgIGludCAgICAgICAgICAgICB0b29fbG9uZyA9IDA7CisgICAgZW51bSB7IGJkaWdpdHMsIHhkaWdpdHMsIG90aGVyIH0gc2VlblN5bWJvbHM7CiAKICAgICAvKgogICAgICAqIHNraXAgYWxsIHdoaXRlIHNwYWNlIApAQCAtNDUzOCwzOSArNDU3NSw2MCBAQAogICAgIGNhc2UgJyInOgogICAgICAgICByZXR1cm4gcGFyc2VRdW90ZVN0cmluZyhmcCwgdG9rZW4sIG1heHRsZW4pOwogICAgIGNhc2UgJ1wnJzogICAgICAgICAgICAgICAgIC8qIGJpbmFyeSBvciBoZXggY29uc3RhbnQgKi8KLSAgICAgICAgd2hpbGUgKChjaCA9IGdldGMoZnApKSAhPSBFT0YgJiYgY2ggIT0gJ1wnJwotICAgICAgICAgICAgICAgJiYgY3AgLSB0b2tlbiA8IG1heHRsZW4gLSAyKQotICAgICAgICAgICAgKmNwKysgPSBjaDsKKyAgICAgICAgc2VlblN5bWJvbHMgPSBiZGlnaXRzOworICAgICAgICB3aGlsZSAoKGNoID0gZ2V0YyhmcCkpICE9IEVPRiAmJiBjaCAhPSAnXCcnKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHNlZW5TeW1ib2xzKSB7CisgICAgICAgICAgICBjYXNlIGJkaWdpdHM6CisgICAgICAgICAgICAgICAgaWYgKGNoID09ICcwJyB8fCBjaCA9PSAnMScpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHNlZW5TeW1ib2xzID0geGRpZ2l0czsKKyAgICAgICAgICAgIGNhc2UgeGRpZ2l0czoKKyAgICAgICAgICAgICAgICBpZiAoaXN4ZGlnaXQoY2gpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBzZWVuU3ltYm9scyA9IG90aGVyOworICAgICAgICAgICAgY2FzZSBvdGhlcjoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjcCAtIHRva2VuIDwgbWF4dGxlbiAtIDIpCisgICAgICAgICAgICAgICAgKmNwKysgPSBjaDsKKyAgICAgICAgfQogICAgICAgICBpZiAoY2ggPT0gJ1wnJykgewogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgIHZhbCA9IDA7Ci0gICAgICAgICAgICAqY3ArKyA9ICdcJyc7Ci0gICAgICAgICAgICAqY3ArKyA9IGNoID0gZ2V0YyhmcCk7Ci0gICAgICAgICAgICAqY3AgPSAwOwotICAgICAgICAgICAgY3AgPSB0b2tlbiArIDE7CisgICAgICAgICAgICBjaGFyICAgICAgICAgICAqcnVuID0gdG9rZW4gKyAxOworICAgICAgICAgICAgY2ggPSBnZXRjKGZwKTsKICAgICAgICAgICAgIHN3aXRjaCAoY2gpIHsKICAgICAgICAgICAgIGNhc2UgRU9GOgogICAgICAgICAgICAgICAgIHJldHVybiBFTkRPRkZJTEU7CiAgICAgICAgICAgICBjYXNlICdiJzoKICAgICAgICAgICAgIGNhc2UgJ0InOgotICAgICAgICAgICAgICAgIHdoaWxlICgoY2ggPSAqY3ArKykgIT0gJ1wnJykKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoICE9ICcwJyAmJiBjaCAhPSAnMScpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTEFCRUw7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbCAqIDIgKyBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICBpZiAoc2VlblN5bWJvbHMgPiBiZGlnaXRzKSB7CisgICAgICAgICAgICAgICAgICAgICpjcCsrID0gJ1wnJzsKKyAgICAgICAgICAgICAgICAgICAgKmNwID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExBQkVMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aGlsZSAocnVuICE9IGNwKQorICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwgKiAyICsgKnJ1bisrIC0gJzAnOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnaCc6CiAgICAgICAgICAgICBjYXNlICdIJzoKLSAgICAgICAgICAgICAgICB3aGlsZSAoKGNoID0gKmNwKyspICE9ICdcJycpCisgICAgICAgICAgICAgICAgaWYgKHNlZW5TeW1ib2xzID4geGRpZ2l0cykgeworICAgICAgICAgICAgICAgICAgICAqY3ArKyA9ICdcJyc7CisgICAgICAgICAgICAgICAgICAgICpjcCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBMQUJFTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2hpbGUgKHJ1biAhPSBjcCkgeworICAgICAgICAgICAgICAgICAgICBjaCA9ICpydW4rKzsKICAgICAgICAgICAgICAgICAgICAgaWYgKCcwJyA8PSBjaCAmJiBjaCA8PSAnOScpCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwgKiAxNiArIGNoIC0gJzAnOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgnYScgPD0gY2ggJiYgY2ggPD0gJ2YnKQogICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsICogMTYgKyBjaCAtICdhJyArIDEwOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgnQScgPD0gY2ggJiYgY2ggPD0gJ0YnKQogICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsICogMTYgKyBjaCAtICdBJyArIDEwOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTEFCRUw7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAqY3ArKyA9ICdcJyc7CisgICAgICAgICAgICAgICAgKmNwID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm4gTEFCRUw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzcHJpbnRmKHRva2VuLCAiJWxkIiwgdmFsKTsKQEAgLTQ3NTUsMjYgKzQ4MTMsMjQgQEAKICAgICBpbnQgICAgICAgICAgICAgY291bnQgPSAwOwogICAgIGludCAgICAgICAgICAgICBmbmFtZV9sZW4gPSAwOwogI2lmICEoZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChjeWd3aW4pKQotICAgIGNoYXIgICAgICAgICAgICB0b2tlbltNQVhUT0tFTl07CisgICAgY2hhciAgICAgICAgICAgKnRva2VuOwogICAgIGNoYXIgc3BhY2U7CiAgICAgY2hhciBuZXdsaW5lOwogICAgIHN0cnVjdCBzdGF0ICAgICBkaXJfc3RhdCwgaWR4X3N0YXQ7CiAgICAgY2hhciAgICAgICAgICAgIHRtcHN0cjFbMzAwXTsKLSAgICBpbnQgZW1wdHkgPSAxOwogI2VuZGlmCiAKICAgICBERUJVR01TR1RMKCgicGFyc2UtbWlicyIsICJTY2FubmluZyBkaXJlY3RvcnkgJXNcbiIsIGRpcm5hbWUpKTsKICNpZiAhKGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoY3lnd2luKSkKLSAgICBzbnByaW50Zih0b2tlbiwgc2l6ZW9mKHRva2VuKSwgIiVzLyVzIiwgZGlybmFtZSwgIi5pbmRleCIpOwotICAgIHRva2VuWyBzaXplb2YodG9rZW4pLTEgXSA9IDA7Ci0gICAgaWYgKHN0YXQodG9rZW4sICZpZHhfc3RhdCkgPT0gMCAmJiBzdGF0KGRpcm5hbWUsICZkaXJfc3RhdCkgPT0gMCkgeworICAgIHRva2VuID0gbmV0c25tcF9taWJpbmRleF9sb29rdXAoIGRpcm5hbWUgKTsKKyAgICBpZiAodG9rZW4gJiYgc3RhdCh0b2tlbiwgJmlkeF9zdGF0KSA9PSAwICYmIHN0YXQoZGlybmFtZSwgJmRpcl9zdGF0KSA9PSAwKSB7CiAgICAgICAgIGlmIChkaXJfc3RhdC5zdF9tdGltZSA8IGlkeF9zdGF0LnN0X210aW1lKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgicGFyc2UtbWlicyIsICJUaGUgaW5kZXggaXMgZ29vZFxuIikpOwogICAgICAgICAgICAgaWYgKChpcCA9IGZvcGVuKHRva2VuLCAiciIpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZmdldHModG1wc3RyLCBzaXplb2YodG1wc3RyKSwgaXApOyAvKiBTa2lwIGRpciBsaW5lICovCiAgICAgICAgICAgICAgICAgd2hpbGUgKGZzY2FuZihpcCwgIiUxMjdzJWMlMjk5cyVjIiwgdG9rZW4sICZzcGFjZSwgdG1wc3RyLAogCQkgICAgJm5ld2xpbmUpID09IDQpIHsKIAotICAgICAgICAgICAgICAgICAgICBlbXB0eSA9IDA7CiAJCSAgICAvKgogCQkgICAgICogSWYgYW4gb3ZlcmZsb3cgb2YgdGhlIHRva2VuIG9yIHRtcHN0ciBidWZmZXJzIGhhcyBiZWVuCiAJCSAgICAgKiBmb3VuZCBsb2cgYSBtZXNzYWdlIGFuZCBicmVhayBvdXQgb2YgdGhlIHdoaWxlIGxvb3AsCkBAIC00Nzk0LDEwICs0ODUwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZmNsb3NlKGlwKTsKLSAgICAgICAgICAgICAgICBpZiAoICFlbXB0eSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGFyc2UtbWlicyIsICJFbXB0eSBNSUIgaW5kZXhcbiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY291bnQ7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGFyc2UtbWlicyIsICJDYW4ndCByZWFkIGluZGV4XG4iKSk7CiAgICAgICAgIH0gZWxzZQpAQCAtNDgwNyw5ICs0ODYwLDcgQEAKICNlbmRpZgogCiAgICAgaWYgKChkaXIgPSBvcGVuZGlyKGRpcm5hbWUpKSkgewotICAgICAgICBzbnByaW50Zih0bXBzdHIsIHNpemVvZih0bXBzdHIpLCAiJXMvLmluZGV4IiwgZGlybmFtZSk7Ci0gICAgICAgIHRtcHN0clsgc2l6ZW9mKHRtcHN0ciktMSBdID0gMDsKLSAgICAgICAgaXAgPSBmb3Blbih0bXBzdHIsICJ3Iik7CisgICAgICAgIGlwID0gbmV0c25tcF9taWJpbmRleF9uZXcoIGRpcm5hbWUgKTsKICAgICAgICAgd2hpbGUgKChmaWxlID0gcmVhZGRpcihkaXIpKSkgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIE9ubHkgcGFyc2UgZmlsZSBuYW1lcyB0aGF0IGRvbid0IGJlZ2luIHdpdGggYSAnLicgCkBAIC00ODgxLDcgKzQ5MzIsNyBAQAogCiAKIHN0cnVjdCB0cmVlICAgICoKLXJlYWRfYWxsX21pYnMoKQorcmVhZF9hbGxfbWlicyh2b2lkKQogewogICAgIHN0cnVjdCBtb2R1bGUgICptcDsKIApAQCAtNDg5NSw3ICs0OTQ2LDcgQEAKIAogCiAjaWZkZWYgVEVTVAotbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKICAgICBpbnQgICAgICAgICAgICAgaTsKICAgICBzdHJ1Y3QgdHJlZSAgICAqdHA7CkBAIC01MjEwLDkgKzUyNjEsNyBAQAogICAgICAgICBpZiAobXAtPm1vZGlkID09IG1pZCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpZiAobXAgIT0gMCkKLSAgICAgICAgcmV0dXJuIG1wOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBtcDsKIH0KIAogCmRpZmYgLS1naXQgYS9zbm1wbGliL3JlYWRfY29uZmlnLmMgYi9zbm1wbGliL3JlYWRfY29uZmlnLmMKaW5kZXggNzk1MDMzYi4uNjA3YTZhNSAxMDA2NDQKLS0tIGEvc25tcGxpYi9yZWFkX2NvbmZpZy5jCisrKyBiL3NubXBsaWIvcmVhZF9jb25maWcuYwpAQCAtNDAwLDcgKzQwMCw3IEBACiB9CiAKIHZvaWQKLXVucmVnaXN0ZXJfYWxsX2NvbmZpZ19oYW5kbGVycygpCit1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnModm9pZCkKIHsKICAgICBzdHJ1Y3QgY29uZmlnX2ZpbGVzICpjdG1wLCAqc2F2ZTsKICAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKmx0bXA7CkBAIC00OTIsMTEgKzQ5MiwxMSBAQAogcnVuX2NvbmZpZ19oYW5kbGVyKHN0cnVjdCBjb25maWdfbGluZSAqbHB0ciwKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0ciwgaW50IHdoZW4pCiB7Ci0gICAgY2hhciAgICAgICAgICAgIHRtcGJ1ZltTVFJJTkdNQVhdOwogICAgIGNoYXIgICAgICAgICAgICpjcDsKICAgICBscHRyID0gcmVhZF9jb25maWdfZmluZF9oYW5kbGVyKGxwdHIsIHRva2VuKTsKICAgICBpZiAobHB0ciAhPSBOVUxMKSB7CiAgICAgICAgIGlmICh3aGVuID09IEVJVEhFUl9DT05GSUcgfHwgbHB0ci0+Y29uZmlnX3RpbWUgPT0gd2hlbikgeworICAgICAgICAgICAgY2hhciB0bXBidWZbMV07CiAgICAgICAgICAgICBERUJVR01TR1RMKCgicmVhZF9jb25maWciLAogICAgICAgICAgICAgICAgICAgICAgICAgIkZvdW5kIGEgcGFyc2VyLiAgQ2FsbGluZyBpdDogJXMgLyAlc1xuIiwgdG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBjcHRyKSk7CkBAIC01MjAsOSArNTIwLDcgQEAKICAgICB9IGVsc2UgaWYgKHdoZW4gIT0gUFJFTUlCX0NPTkZJRyAmJiAKIAkgICAgICAgIW5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKIAkJCQkgICAgICAgTkVUU05NUF9EU19MSUJfTk9fVE9LRU5fV0FSTklOR1MpKSB7Ci0gICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJVbmtub3duIHRva2VuOiAlcy4iLCB0b2tlbik7Ci0gICAgICAgIHRtcGJ1Zlsgc2l6ZW9mKHRtcGJ1ZiktMSBdID0gMDsKLSAgICAgICAgY29uZmlnX3B3YXJuKHRtcGJ1Zik7CisJbmV0c25tcF9jb25maWdfd2FybigiVW5rbm93biB0b2tlbjogJXMuIiwgdG9rZW4pOwogICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgfQogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CkBAIC01NDMsNyArNTQxLDcgQEAKIGludAogc25tcF9jb25maWdfd2hlbihjaGFyICpsaW5lLCBpbnQgd2hlbikKIHsKLSAgICBjaGFyICAgICAgICAgICAqY3B0ciwgYnVmW1NUUklOR01BWF0sIHRtcGJ1ZltTVFJJTkdNQVhdOworICAgIGNoYXIgICAgICAgICAgICpjcHRyLCBidWZbU1RSSU5HTUFYXTsKICAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKmxwdHIgPSBOVUxMOwogICAgIHN0cnVjdCBjb25maWdfZmlsZXMgKmN0bXAgPSBjb25maWdfZmlsZXM7CiAgICAgY2hhciAgICAgICAgICAgKnN0OwpAQCAtNTU2LDI4ICs1NTQsMTkgQEAKICAgICBzdHJsY3B5KGJ1ZiwgbGluZSwgU1RSSU5HTUFYKTsKICAgICBjcHRyID0gc3RydG9rX3IoYnVmLCBTTk1QX0NPTkZJR19ERUxJTUVURVJTLCAmc3QpOwogICAgIGlmICghY3B0cikgewotICAgICAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLCAiV3JvbmcgZm9ybWF0OiAlcyIsIGxpbmUpOwotICAgICAgICB0bXBidWZbIHNpemVvZih0bXBidWYpLTEgXSA9ICdcMCc7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgICAgbmV0c25tcF9jb25maWdfd2FybigiV3JvbmcgZm9ybWF0OiAlcyIsIGxpbmUpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgfQogICAgIGlmIChjcHRyWzBdID09ICdbJykgewogICAgICAgICBpZiAoY3B0cltzdHJsZW4oY3B0cikgLSAxXSAhPSAnXScpIHsKLSAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICJubyBtYXRjaGluZyAnXScgZm9yIHR5cGUgJXMuIiwKLSAgICAgICAgICAgICAgICAgICAgY3B0ciArIDEpOwotICAgICAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCSAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigibm8gbWF0Y2hpbmcgJ10nIGZvciB0eXBlICVzLiIsIGNwdHIgKyAxKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKICAgICAgICAgfQogICAgICAgICBjcHRyW3N0cmxlbihjcHRyKSAtIDFdID0gJ1wwJzsKICAgICAgICAgbHB0ciA9IHJlYWRfY29uZmlnX2dldF9oYW5kbGVycyhjcHRyICsgMSk7CiAgICAgICAgIGlmIChscHRyID09IE5VTEwpIHsKLSAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1ZiwgIHNpemVvZih0bXBidWYpLAotICAgICAgICAgICAgICAgICAgICAgIk5vIGhhbmRsZXJzIHJlZ2VzdGVyZWQgZm9yIHR5cGUgJXMuIiwKLSAgICAgICAgICAgICAgICAgICAgY3B0ciArIDEpOwotICAgICAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCSAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiTm8gaGFuZGxlcnMgcmVnZXN0ZXJlZCBmb3IgdHlwZSAlcy4iLAorCQkJCSBjcHRyICsgMSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgIH0KICAgICAgICAgY3B0ciA9IHN0cnRva19yKE5VTEwsIFNOTVBfQ09ORklHX0RFTElNRVRFUlMsICZzdCk7CkBAIC01OTEsOSArNTgwLDcgQEAKICAgICB9CiAgICAgaWYgKGxwdHIgPT0gTlVMTCAmJiBuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCiAJCQkJCSAgTkVUU05NUF9EU19MSUJfTk9fVE9LRU5fV0FSTklOR1MpKSB7Ci0gICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJVbmtub3duIHRva2VuOiAlcy4iLCBjcHRyKTsKLSAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICBjb25maWdfcHdhcm4odG1wYnVmKTsKKwluZXRzbm1wX2NvbmZpZ193YXJuKCJVbmtub3duIHRva2VuOiAlcy4iLCBjcHRyKTsKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogICAgIH0KIApAQCAtNjMyLDggKzYxOSwxMCBAQAogICAgICAgICBtZW0gPSAmKCgqbWVtKS0+bmV4dCk7CiAKICAgICAqbWVtID0gU05NUF9NQUxMT0NfU1RSVUNUKHJlYWRfY29uZmlnX21lbW9yeSk7Ci0gICAgaWYgKGxpbmUpCi0gICAgICAgICgqbWVtKS0+bGluZSA9IHN0cmR1cChsaW5lKTsKKyAgICBpZiAoKm1lbSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChsaW5lKQorICAgICAgICAgICAgKCptZW0pLT5saW5lID0gc3RyZHVwKGxpbmUpOworICAgIH0KIH0KIAogdm9pZApAQCAtNzE4LDcgKzcwNyw3IEBACiB7CiAKICAgICBGSUxFICAgICAgICAgICAqaWZpbGU7Ci0gICAgY2hhciAgICAgICAgICAgIGxpbmVbU1RSSU5HTUFYXSwgdG9rZW5bU1RSSU5HTUFYXSwgdG1wYnVmW1NUUklOR01BWF07CisgICAgY2hhciAgICAgICAgICAgIGxpbmVbU1RSSU5HTUFYXSwgdG9rZW5bU1RSSU5HTUFYXTsKICAgICBjaGFyICAgICAgICAgICAqY3B0cjsKICAgICBpbnQgICAgICAgICAgICAgaTsKICAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKmxwdHI7CkBAIC03NjYsMjEgKzc1NSwxNSBAQAogICAgICAgICAgICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgdG9rZW4sIHNpemVvZih0b2tlbikpOwogICAgICAgICAgICAgaWYgKHRva2VuWzBdID09ICdbJykgewogICAgICAgICAgICAgICAgIGlmICh0b2tlbltzdHJsZW4odG9rZW4pIC0gMV0gIT0gJ10nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIG1hdGNoaW5nICddJyBmb3IgdHlwZSAlcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0b2tlblsxXSk7Ci0gICAgICAgICAgICAgICAgICAgIHRtcGJ1Zlsgc2l6ZW9mKHRtcGJ1ZiktMSBdID0gMDsKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCQkgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIm5vIG1hdGNoaW5nICddJyBmb3IgdHlwZSAlcy4iLAorCQkJCQkgJnRva2VuWzFdKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRva2VuW3N0cmxlbih0b2tlbikgLSAxXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgbHB0ciA9IHJlYWRfY29uZmlnX2dldF9oYW5kbGVycygmdG9rZW5bMV0pOwogICAgICAgICAgICAgICAgIGlmIChscHRyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gaGFuZGxlcnMgcmVnZXN0ZXJlZCBmb3IgdHlwZSAlcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0b2tlblsxXSk7Ci0gICAgICAgICAgICAgICAgICAgIHRtcGJ1Zlsgc2l6ZW9mKHRtcGJ1ZiktMSBdID0gMDsKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCQkgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIk5vIGhhbmRsZXJzIHJlZ2VzdGVyZWQgZm9yIHR5cGUgJXMuIiwKKwkJCQkJICZ0b2tlblsxXSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicmVhZF9jb25maWciLApAQCAtODAzLDEwICs3ODYsNyBAQAogICAgICAgICAgICAgICAgIGxwdHIgPSBsaW5lX2hhbmRsZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJCbGFuayBsaW5lIGZvbGxvd2luZyAlcyB0b2tlbi4iLCB0b2tlbik7Ci0gICAgICAgICAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKwkJbmV0c25tcF9jb25maWdfZXJyb3IoIkJsYW5rIGxpbmUgZm9sbG93aW5nICVzIHRva2VuLiIsIHRva2VuKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInJlYWRfY29uZmlnIiwgIiVzOiVkIGV4YW1pbmluZzogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVjb3VudCwgbGluZSkpOwpAQCAtODcxLDYgKzg1MSw5IEBACiAgICAgY2hhciAqb3B0aW9uYWxfY29uZmlnID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCiAJCQkJCSAgICAgICBORVRTTk1QX0RTX0xJQl9PUFRJT05BTENPTkZJRyk7CiAKKyAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfUFJFX1JFQURfQ09ORklHLCBOVUxMKTsKKwogICAgIERFQlVHTVNHVEwoKCJyZWFkX2NvbmZpZyIsICJyZWFkaW5nIG5vcm1hbCBjb25maWd1cmF0aW9uIHRva2Vuc1xuIikpOwogCiAgICAgaWYgKChOVUxMICE9IG9wdGlvbmFsX2NvbmZpZykgJiYgKCpvcHRpb25hbF9jb25maWcgPT0gJy0nKSkgewpAQCAtOTAwLDYgKzg4Myw5IEBACiAgICAgY2hhciAqb3B0aW9uYWxfY29uZmlnID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCiAJCQkJCSAgICAgICBORVRTTk1QX0RTX0xJQl9PUFRJT05BTENPTkZJRyk7CiAKKyAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfUFJFX1BSRU1JQl9SRUFEX0NPTkZJRywgTlVMTCk7CisKICAgICBERUJVR01TR1RMKCgicmVhZF9jb25maWciLCAicmVhZGluZyBwcmVtaWIgY29uZmlndXJhdGlvbiB0b2tlbnNcbiIpKTsKIAogICAgIGlmICgoTlVMTCAhPSBvcHRpb25hbF9jb25maWcpICYmICgqb3B0aW9uYWxfY29uZmlnID09ICctJykpIHsKQEAgLTk0OCw3ICs5MzQsNyBAQAogICogV2UgYWx3YXlzIHJldHJpZXZlIGl0IG5ldywgc2luY2Ugd2UgaGF2ZSB0byBkbyBpdCBhbnl3YXkgaWYgaXQgaXMganVzdCBzZXQuCiAgKi8KIGNvbnN0IGNoYXIgICAgICoKLWdldF9jb25maWd1cmF0aW9uX2RpcmVjdG9yeSgpCitnZXRfY29uZmlndXJhdGlvbl9kaXJlY3Rvcnkodm9pZCkKIHsKICAgICBjaGFyICAgICAgICAgICAgZGVmYXVsdFBhdGhbU1BSSU5UX01BWF9MRU5dOwogICAgIGNoYXIgICAgICAgICAgICpob21lcGF0aDsKQEAgLTk5Niw3ICs5ODIsNyBAQAogICogV2UgYWx3YXlzIHJldHJpZXZlIGl0IG5ldywgc2luY2Ugd2UgaGF2ZSB0byBkbyBpdCBhbnl3YXkgaWYgaXQgaXMganVzdCBzZXQuCiAgKi8KIGNvbnN0IGNoYXIgICAgICoKLWdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeSgpCitnZXRfcGVyc2lzdGVudF9kaXJlY3Rvcnkodm9pZCkKIHsKICAgICBpZiAoTlVMTCA9PSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCAKIAkJCQkgICAgICBORVRTTk1QX0RTX0xJQl9QRVJTSVNURU5UX0RJUikpIHsKQEAgLTEwMzYsNyArMTAyMiw3IEBACiAgKiBXZSBhbHdheXMgcmV0cmlldmUgaXQgbmV3LCBzaW5jZSB3ZSBoYXZlIHRvIGRvIGl0IGFueXdheSBpZiBpdCBpcyBqdXN0IHNldC4KICAqLwogY29uc3QgY2hhciAgICAgKgotZ2V0X3RlbXBfZmlsZV9wYXR0ZXJuKCkKK2dldF90ZW1wX2ZpbGVfcGF0dGVybih2b2lkKQogewogICAgIGlmIChOVUxMID09IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsIAogCQkJCSAgICAgIE5FVFNOTVBfRFNfTElCX1RFTVBfRklMRV9QQVRURVJOKSkgewpAQCAtMTQ2NSwxOSArMTQ1MSw1MiBAQAogICogY29uZmlnX3BlcnJvcjogcHJpbnRzIGEgd2FybmluZyBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZSBhbmQKICAqIGxpbmUgbnVtYmVyIG9mIGEgLmNvbmYgZmlsZSBhbmQgaW5jcmVtZW50cyB0aGUgZXJyb3IgY291bnQuIAogICovCitzdGF0aWMgdm9pZAorY29uZmlnX3Zsb2coaW50IGxldmVsLCBjb25zdCBjaGFyICpsZXZlbG1zZywgY29uc3QgY2hhciAqc3RyLCB2YV9saXN0IGFyZ3MpCit7CisgICAgY2hhciB0bXBidWZbMjU2XTsKKyAgICBjaGFyKiBidWYgPSB0bXBidWY7CisgICAgaW50IGxlbiA9IHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICIlczogbGluZSAlZDogJXM6ICVzXG4iLAorCQkgICAgICAgY3VyZmlsZW5hbWUsIGxpbmVjb3VudCwgbGV2ZWxtc2csIHN0cik7CisgICAgaWYgKGxlbiA+PSBzaXplb2YodG1wYnVmKSkgeworCWJ1ZiA9IChjaGFyKiltYWxsb2MobGVuICsgMSk7CisJc3ByaW50ZihidWYsICIlczogbGluZSAlZDogJXM6ICVzXG4iLAorCQljdXJmaWxlbmFtZSwgbGluZWNvdW50LCBsZXZlbG1zZywgc3RyKTsKKyAgICB9CisgICAgc25tcF92bG9nKGxldmVsLCBidWYsIGFyZ3MpOworICAgIGlmIChidWYgIT0gdG1wYnVmKQorCWZyZWUoYnVmKTsKK30KKwordm9pZAorbmV0c25tcF9jb25maWdfZXJyb3IoY29uc3QgY2hhciAqc3RyLCAuLi4pCit7CisgICAgdmFfbGlzdCBhcmdzOworICAgIHZhX3N0YXJ0KGFyZ3MsIHN0cik7CisgICAgY29uZmlnX3Zsb2coTE9HX0VSUiwgIkVycm9yIiwgc3RyLCBhcmdzKTsKKyAgICB2YV9lbmQoYXJncyk7CisgICAgY29uZmlnX2Vycm9ycysrOworfQorCit2b2lkCituZXRzbm1wX2NvbmZpZ193YXJuKGNvbnN0IGNoYXIgKnN0ciwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKyAgICB2YV9zdGFydChhcmdzLCBzdHIpOworICAgIGNvbmZpZ192bG9nKExPR19XQVJOSU5HLCAiV2FybmluZyIsIHN0ciwgYXJncyk7CisgICAgdmFfZW5kKGFyZ3MpOworfQorCiB2b2lkCiBjb25maWdfcGVycm9yKGNvbnN0IGNoYXIgKnN0cikKIHsKLSAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXM6IGxpbmUgJWQ6IEVycm9yOiAlc1xuIiwgY3VyZmlsZW5hbWUsIGxpbmVjb3VudCwKLSAgICAgICAgICAgICBzdHIpOwotICAgIGNvbmZpZ19lcnJvcnMrKzsKKyAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiJXMiLCBzdHIpOwogfQogCiB2b2lkCiBjb25maWdfcHdhcm4oY29uc3QgY2hhciAqc3RyKQogewotICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiJXM6IGxpbmUgJWQ6IFdhcm5pbmc6ICVzXG4iLCBjdXJmaWxlbmFtZSwKLSAgICAgICAgICAgICBsaW5lY291bnQsIHN0cik7CisgICAgbmV0c25tcF9jb25maWdfd2FybigiJXMiLCBzdHIpOwogfQogCiAvKgpAQCAtMTcwNiw4ICsxNzI1LDggQEAKICAgICAgICAgICAgICAqIGJhaWwgaWYgbm90IGVub3VnaCBzcGFjZS4KICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKGlsZW4gPiAqbGVuKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsImJ1ZmZlciB0b28gc21hbGwgdG8gcmVhZCBvY3RldCBzdHJpbmcgKCVkIDwgJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICpsZW4sIGlsZW4pOworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCJidWZmZXIgdG9vIHNtYWxsIHRvIHJlYWQgb2N0ZXQgc3RyaW5nICglbHUgPCAlbHUpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSpsZW4sICh1bnNpZ25lZCBsb25nKWlsZW4pOwogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJyZWFkX2NvbmZpZ19yZWFkX29jdGV0X3N0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlciB0b28gc21hbGwgKCVsdSA8ICVsdSkiLCAodW5zaWduZWQgbG9uZykqbGVuLCAodW5zaWduZWQgbG9uZylpbGVuKSk7CiAgICAgICAgICAgICAgICAgY3B0cjEgPSBza2lwX25vdF93aGl0ZShyZWFkZnJvbSk7CkBAIC0xOTcyLDcgKzE5OTEsNiBAQAogICAgICAgICByZXR1cm4gcmVhZGZyb207CiAKICAgICBjYXNlIEFTTl9DT1VOVEVSNjQ6Ci0gICAgewogICAgICAgICBpZiAoKmxlbiA8IHNpemVvZihVNjQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICpsZW4gPSBzaXplb2YoVTY0KTsKQEAgLTE5ODEsMTEgKzE5OTksNyBAQAogICAgICAgICByZXR1cm4gcmVhZGZyb207CiAgICAgfQogCi0gICAgZGVmYXVsdDoKLSAgICAgICAgREVCVUdNU0dUTCgoInJlYWRfY29uZmlnX3JlYWRfbWVtb3J5IiwgIkZhaWw6IFVua25vd24gdHlwZTogJWQiLAotICAgICAgICAgICAgICAgICAgICB0eXBlKSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBERUJVR01TR1RMKCgicmVhZF9jb25maWdfcmVhZF9tZW1vcnkiLCAiRmFpbDogVW5rbm93biB0eXBlOiAlZCIsIHR5cGUpKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zY2FwaS5jIGIvc25tcGxpYi9zY2FwaS5jCmluZGV4IGQ4MzdjNTEuLmNiMmQyZjMgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc2NhcGkuYworKysgYi9zbm1wbGliL3NjYXBpLmMKQEAgLTc5LDcgKzc5LDcgQEAKICNlbmRpZgogCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9ERVMKLSNpZmRlZiBTVFJVQ1RfREVTX0tTX1NUUlVDVF9IQVNfV0VBS19LRVkKKyNpZmRlZiBIQVZFX1NUUlVDVF9ERVNfS1NfU1RSVUNUX1dFQUtfS0VZCiAvKiB0aGVzZSBhcmUgb2xkZXIgbmFtZXMgZm9yIG5ld2VyIHN0cnVjdHVyZXMgdGhhdCBleGlzdCBpbiBvcGVuc3NsIC45LjcgKi8KICNkZWZpbmUgREVTX2tleV9zY2hlZHVsZSAgICBkZXNfa2V5X3NjaGVkdWxlIAogI2RlZmluZSBERVNfY2Jsb2NrICAgICAgICAgIGRlc19jYmxvY2sgCkBAIC0yNzUsNyArMjc1LDcgQEAKIAogICAgIHVfY2hhciAgICAgICAgICBidWZbU05NUF9NQVhCVUZfU01BTExdOwogI2lmICBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpIHx8IGRlZmluZWQoTkVUU05NUF9VU0VfUEtDUzExKQotICAgIHNpemVfdCAgICAgICAgICAgICBidWZfbGVuID0gc2l6ZW9mKGJ1Zik7CisgICAgdW5zaWduZWQgaW50ICAgIGJ1Zl9sZW4gPSBzaXplb2YoYnVmKTsKICNlbmRpZgogCiAgICAgREVCVUdUUkFDRTsKQEAgLTMyMSw3ICszMjEsNyBAQAogICAgIGVsc2UgewogICAgICAgICBRVUlURlVOKFNOTVBFUlJfR0VORVJSLCBzY19nZW5lcmF0ZV9rZXllZF9oYXNoX3F1aXQpOwogICAgIH0KLSAgICBpZiAoKGludClidWZfbGVuICE9IHByb3Blcmxlbmd0aCkgeworICAgIGlmIChidWZfbGVuICE9IHByb3Blcmxlbmd0aCkgewogICAgICAgICBRVUlURlVOKHJ2YWwsIHNjX2dlbmVyYXRlX2tleWVkX2hhc2hfcXVpdCk7CiAgICAgfQogICAgIGlmICgoaW50KSptYWNsZW4gPiBidWZfbGVuKQpAQCAtMzk5LDYgKzM5OSw3IEBACiAgKiBSZXR1cm5zOgogICogU05NUEVSUl9TVUNDRVNTICAgICAgICAgICAgICBTdWNjZXNzLgogICogU05NUF9TQ19HRU5FUkFMX0ZBSUxVUkUgICAgICBBbnkgZXJyb3IuCisgKiBTTk1QRVJSX1NDX05PVF9DT05GSUdVUkVEICAgIEhhc2ggdHlwZSBub3Qgc3VwcG9ydGVkLgogICovCiBpbnQKIHNjX2hhc2goY29uc3Qgb2lkICogaGFzaHR5cGUsIHNpemVfdCBoYXNodHlwZWxlbiwgdV9jaGFyICogYnVmLApAQCAtNDUxLDcgKzQ1MiwxMCBAQAogICAgIEVWUF9NRF9DVFhfaW5pdChjcHRyKTsKICNlbmRpZgogI2VuZGlmCi0gICAgRVZQX0RpZ2VzdEluaXQoY3B0ciwgaGFzaGZuKTsKKyAgICBpZiAoIUVWUF9EaWdlc3RJbml0KGNwdHIsIGhhc2hmbikpIHsKKyAgICAgICAgLyogcmVxdWVzdGVkIGhhc2ggZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSAqLworICAgICAgICByZXR1cm4gU05NUEVSUl9TQ19OT1RfQ09ORklHVVJFRDsKKyAgICB9CiAKIC8qKiBwYXNzIHRoZSBkYXRhICovCiAgICAgRVZQX0RpZ2VzdFVwZGF0ZShjcHRyLCBidWYsIGJ1Zl9sZW4pOwpAQCAtNTU1LDEwICs1NTksMTEgQEAKICAgICAgICAgUVVJVEZVTihTTk1QRVJSX0dFTkVSUiwgc2NfY2hlY2tfa2V5ZWRfaGFzaF9xdWl0KTsKICAgICB9CiAKKwogICAgIGlmIChtYWNsZW4gIT0gVVNNX01ENV9BTkRfU0hBX0FVVEhfTEVOKSB7CiAgICAgICAgIFFVSVRGVU4oU05NUEVSUl9HRU5FUlIsIHNjX2NoZWNrX2tleWVkX2hhc2hfcXVpdCk7CiAgICAgfQotCisgICAgCiAgICAgLyoKICAgICAgKiBHZW5lcmF0ZSBhIGZ1bGwgaGFzaCBvZiB0aGUgbWVzc2FnZSwgdGhlbiBjb21wYXJlCiAgICAgICogdGhlIHJlc3VsdCB3aXRoIHRoZSBnaXZlbiBNQUMgd2hpY2ggbWF5IHNob3J0ZXIgdGhhbgpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wLXRjLmMgYi9zbm1wbGliL3NubXAtdGMuYwppbmRleCBlZmE1NDAyLi5kOGFlNzgzIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXAtdGMuYworKysgYi9zbm1wbGliL3NubXAtdGMuYwpAQCAtNiw5ICs2LDYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2VuZGlmCkBAIC0xNiw4ICsxMyw4IEBACiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2VuZGlmCi0jaWYgSEFWRV9TVERMSUJfSAotI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2VuZGlmCiAKICNpZiBUSU1FX1dJVEhfU1lTX1RJTUUKQEAgLTEyMSw3ICsxMTgsNyBAQAogfQogCiB1X2NoYXIgICAgICAgICAqCi1kYXRlX25fdGltZSh0aW1lX3QgKiB3aGVuLCBzaXplX3QgKiBsZW5ndGgpCitkYXRlX25fdGltZShjb25zdCB0aW1lX3QgKiB3aGVuLCBzaXplX3QgKiBsZW5ndGgpCiB7CiAgICAgc3RydWN0IHRtICAgICAgKnRtX3A7CiAgICAgc3RhdGljIHVfY2hhciAgIHN0cmluZ1sxMV07CkBAIC0xNjQsMTAgKzE2MSwxMCBAQAogICAgICAqIFRpbWV6b25lIG9mZnNldAogICAgICAqLwogICAgIHsKLSNpZmRlZiBTVFJVQ1RfVE1fSEFTX1RNX0dNVE9GRgotICAgIGNvbnN0IGludCB0em9mZnNldCA9IC10bV9wLT50bV9nbXRvZmY7ICAgICAvKiBTZWNvbmRzIGVhc3Qgb2YgVVRDICovCisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fR01UT0ZGCisgICAgY29uc3QgaW50IHR6b2Zmc2V0ID0gLXRtX3AtPnRtX2dtdG9mZjsgICAvKiBTZWNvbmRzIGVhc3Qgb2YgVVRDICovCiAjZWxzZQotICAgIGNvbnN0IGludCB0em9mZnNldCA9IHRpbWV6b25lOyAgICAgICAgICAgICAvKiBTZWNvbmRzIHdlc3Qgb2YgVVRDICovCisgICAgY29uc3QgaW50IHR6b2Zmc2V0ID0gdGltZXpvbmU7ICAgICAgICAgICAvKiBTZWNvbmRzIHdlc3Qgb2YgVVRDICovCiAjZW5kaWYKICAgICBpZiAodHpvZmZzZXQgPiAwKQogICAgICAgICBzdHJpbmdbOF0gPSAnLSc7CkBAIC0xNzksNyArMTc2LDcgQEAKICAgICB9CiAjZW5kaWYKIAotI2lmZGVmIFNZU1YKKyNpZiBkZWZpbmVkKFNZU1YpICYmICFIQVZFX1NUUlVDVF9UTV9UTV9HTVRPRkYKICAgICAvKgogICAgICAqIERheWxpZ2h0IHNhdmluZyB0aW1lCiAgICAgICovCkBAIC0yMDIsNyArMTk5LDcgQEAKIAogCiB0aW1lX3QKLWN0aW1lX3RvX3RpbWV0KGNoYXIgKnN0cikKK2N0aW1lX3RvX3RpbWV0KGNvbnN0IGNoYXIgKnN0cikKIHsKICAgICBzdHJ1Y3QgdG0gICAgICAgdG07CiAKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYyBiL3NubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYwppbmRleCA0ZjJmMGIwLi5iNzlmYmJlIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBBQUw1UFZDRG9tYWluLmMKKysrIGIvc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5jCkBAIC03OSw3ICs3OSw3IEBACiAKICAgICBpZiAodCAhPSBOVUxMICYmIHQtPnNvY2sgPj0gMCkgewogCXdoaWxlIChyYyA8IDApIHsKLQkgICAgcmMgPSByZWN2ZnJvbSh0LT5zb2NrLCBidWYsIHNpemUsIDAsIE5VTEwsIDApOworCSAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgMCwgTlVMTCwgTlVMTCk7CiAJICAgIGlmIChyYyA8IDAgJiYgZXJybm8gIT0gRUlOVFIpIHsKIAkJYnJlYWs7CiAJICAgIH0KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcEFsaWFzRG9tYWluLmMgYi9zbm1wbGliL3NubXBBbGlhc0RvbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YzE2MjAKLS0tIC9kZXYvbnVsbAorKysgYi9zbm1wbGliL3NubXBBbGlhc0RvbWFpbi5jCkBAIC0wLDAgKzEsMTA1IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisjaWYgSEFWRV9ETUFMTE9DX0gKKyNpbmNsdWRlIDxkbWFsbG9jLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvb3V0cHV0X2FwaS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL3V0aWxpdGllcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2NvbmZpZ19hcGkuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaD4KKworb2lkIG5ldHNubXBfc25tcEFMSUFTRG9tYWluW10gPSB7IDEsMyw2LDEsNCwxLDgwNzIsMywzLDcgfTsKK3N0YXRpYyBuZXRzbm1wX3Rkb21haW4gYWxpYXNEb21haW47CisKKy8qIHNpbXBsZSBzdG9yYWdlIG1lY2hhbmlzbSAqLworc3RhdGljIG5ldHNubXBfZGF0YV9saXN0ICphbGlhc19tZW1vcnkgPSBOVUxMOworCisvKiBBbiBhbGlhcyBwYXJzZXIgKi8KK3ZvaWQKK3BhcnNlX2FsaWFzX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkgeworICAgIGNoYXIgYWxpYXNuYW1lW1NQUklOVF9NQVhfTEVOXTsKKyAgICBjaGFyIHRyYW5zcG9ydGRlZltTUFJJTlRfTUFYX0xFTl07CisgICAgLyogY29weSB0aGUgZmlyc3Qgd29yZCAodGhlIGFsaWFzKSBvdXQgYW5kIHRoZW4gYXNzdW1lIHRoZSByZXN0IGlzCisgICAgICAgdHJhbnNwb3J0ICovCisgICAgbGluZSA9IGNvcHlfbndvcmQobGluZSwgYWxpYXNuYW1lLCBzaXplb2YoYWxpYXNuYW1lKSk7CisgICAgbGluZSA9IGNvcHlfbndvcmQobGluZSwgdHJhbnNwb3J0ZGVmLCBzaXplb2YodHJhbnNwb3J0ZGVmKSk7CisgICAgaWYgKGxpbmUpCisgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1vcmUgZGF0YSB0aGFuIGV4cGVjdGVkIik7CisgICAgbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGUoJmFsaWFzX21lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QoYWxpYXNuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJkdXAodHJhbnNwb3J0ZGVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWUpKTsKK30KKwordm9pZAorZnJlZV9hbGlhc19jb25maWcodm9pZCkgeworICAgIG5ldHNubXBfZnJlZV9hbGxfbGlzdF9kYXRhKGFsaWFzX21lbW9yeSk7CisgICAgYWxpYXNfbWVtb3J5ID0gTlVMTDsKK30KKworLyoKKyAqIE9wZW4gYSBBTElBUy1iYXNlZCB0cmFuc3BvcnQgZm9yIFNOTVAuICBMb2NhbCBpcyBUUlVFIGlmIGFkZHIgaXMgdGhlIGxvY2FsCisgKiBhZGRyZXNzIHRvIGJpbmQgdG8gKGkuZS4gdGhpcyBpcyBhIHNlcnZlci10eXBlIHNlc3Npb24pOyBvdGhlcndpc2UgYWRkciBpcyAKKyAqIHRoZSByZW1vdGUgYWRkcmVzcyB0byBzZW5kIHRoaW5ncyB0by4gIAorICovCisKK25ldHNubXBfdHJhbnNwb3J0ICoKK25ldHNubXBfYWxpYXNfY3JlYXRlX3RzdHJpbmcoY29uc3QgY2hhciAqc3RyLCBpbnQgbG9jYWwsCisJCQkgICBjb25zdCBjaGFyICpkZWZhdWx0X3RhcmdldCkKK3sKKyAgICBjb25zdCBjaGFyICphbGlhc2RhdGE7CisKKyAgICBhbGlhc2RhdGEgPSAoY29uc3QgY2hhciopbmV0c25tcF9nZXRfbGlzdF9kYXRhKGFsaWFzX21lbW9yeSwgc3RyKTsKKyAgICBpZiAoIWFsaWFzZGF0YSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTm8gYWxpYXMgZm91bmQgZm9yICVzXG4iLCBzdHIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbmV0c25tcF90ZG9tYWluX3RyYW5zcG9ydChhbGlhc2RhdGEsbG9jYWwsZGVmYXVsdF90YXJnZXQpOworfQorCisKKworbmV0c25tcF90cmFuc3BvcnQgKgorbmV0c25tcF9hbGlhc19jcmVhdGVfb3N0cmluZyhjb25zdCB1X2NoYXIgKiBvLCBzaXplX3Qgb19sZW4sIGludCBsb2NhbCkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIm1ha2Ugb3N0cmluZ1xuIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQKK25ldHNubXBfYWxpYXNfY3Rvcih2b2lkKQoreworICAgIGFsaWFzRG9tYWluLm5hbWUgPSBuZXRzbm1wX3NubXBBTElBU0RvbWFpbjsKKyAgICBhbGlhc0RvbWFpbi5uYW1lX2xlbmd0aCA9IHNpemVvZihuZXRzbm1wX3NubXBBTElBU0RvbWFpbikgLyBzaXplb2Yob2lkKTsKKyAgICBhbGlhc0RvbWFpbi5wcmVmaXggPSAoY29uc3QgY2hhciAqKiljYWxsb2MoMiwgc2l6ZW9mKGNoYXIgKikpOworICAgIGFsaWFzRG9tYWluLnByZWZpeFswXSA9ICJhbGlhcyI7CisKKyAgICBhbGlhc0RvbWFpbi5mX2NyZWF0ZV9mcm9tX3RzdHJpbmcgICAgID0gTlVMTDsKKyAgICBhbGlhc0RvbWFpbi5mX2NyZWF0ZV9mcm9tX3RzdHJpbmdfbmV3ID0gbmV0c25tcF9hbGlhc19jcmVhdGVfdHN0cmluZzsKKyAgICBhbGlhc0RvbWFpbi5mX2NyZWF0ZV9mcm9tX29zdHJpbmcgICAgID0gbmV0c25tcF9hbGlhc19jcmVhdGVfb3N0cmluZzsKKworICAgIG5ldHNubXBfdGRvbWFpbl9yZWdpc3RlcigmYWxpYXNEb21haW4pOworCisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiYWxpYXMiLCBwYXJzZV9hbGlhc19jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9hbGlhc19jb25maWcsICJOQU1FIFRSQU5TUE9SVF9ERUZJTklUSU9OIik7Cit9CmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jIGIvc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYwppbmRleCAwODVhMjE0Li5lZmMyY2JjIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jCisrKyBiL3NubXBsaWIvc25tcENhbGxiYWNrRG9tYWluLmMKQEAgLTg3LDcgKzg3LDcgQEAKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZiOwogICAgIGludCAgICAgICAgICAgICBpID0gMTsKICAgICBERUJVR01TR1RMKChvdXJzdHJpbmcsCi0gICAgICAgICAgICAgICAgIlBEVTogY29tbWFuZCA9ICVkLCBlcnJzdGF0ID0gJWQsIGVycmluZGV4ID0gJWRcbiIsCisgICAgICAgICAgICAgICAgIlBEVTogY29tbWFuZCA9ICVkLCBlcnJzdGF0ID0gJWxkLCBlcnJpbmRleCA9ICVsZFxuIiwKICAgICAgICAgICAgICAgICBwZHUtPmNvbW1hbmQsIHBkdS0+ZXJyc3RhdCwgcGR1LT5lcnJpbmRleCkpOwogICAgIGZvciAodmIgPSBwZHUtPnZhcmlhYmxlczsgdmI7IHZiID0gdmItPm5leHRfdmFyaWFibGUpIHsKICAgICAgICAgREVCVUdNU0dUTCgob3Vyc3RyaW5nLCAiICB2YXIgJWQ6IiwgaSsrKSk7CkBAIC0xMDIsNiArMTAyLDggQEAKICAgICBjYWxsYmFja19xdWV1ZSAqbmV3aXRlbSA9IFNOTVBfTUFMTE9DX1RZUEVERUYoY2FsbGJhY2tfcXVldWUpOwogICAgIGNhbGxiYWNrX3F1ZXVlICpwdHI7CiAKKyAgICBpZiAobmV3aXRlbSA9PSBOVUxMKQorICAgICAgICByZXR1cm47CiAgICAgbmV3aXRlbS0+Y2FsbGJhY2tfbnVtID0gbnVtOwogICAgIG5ld2l0ZW0tPml0ZW0gPSBpdGVtOwogICAgIGlmICh0aGVxdWV1ZSkgewpAQCAtMzg5LDYgKzM5MSwxMCBAQAogICAgICAqIG91ciBzdHVmZiAKICAgICAgKi8KICAgICBteWRhdGEgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfY2FsbGJhY2tfaW5mbyk7CisgICAgaWYgKCFteWRhdGEpIHsKKyAgICAgICAgU05NUF9GUkVFKHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgbXlkYXRhLT5saW5rZWR0byA9IHRvOwogICAgIG15ZGF0YS0+Y2FsbGJhY2tfbnVtID0gKytjYWxsYmFja19jb3VudDsKICAgICBteWRhdGEtPmRhdGEgPSBOVUxMOwpAQCAtNDQ4LDYgKzQ1NCw4IEBACiAgICAgICogZnVuY3Rpb24gCiAgICAgICovCiAgICAgY2FsbGJhY2tfaGFjayAgKmNoID0gU05NUF9NQUxMT0NfVFlQRURFRihjYWxsYmFja19oYWNrKTsKKyAgICBpZiAoY2ggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIERFQlVHTVNHVEwoKCJ0cmFuc3BvcnRfY2FsbGJhY2siLCAiaG9va19idWlsZCBlbnRlclxuIikpOwogICAgIGNoLT5wZHUgPSBwZHU7CiAgICAgY2gtPm9yaWdfdHJhbnNwb3J0X2RhdGEgPSBwZHUtPnRyYW5zcG9ydF9kYXRhOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wRFRMU1VEUERvbWFpbi5jIGIvc25tcGxpYi9zbm1wRFRMU1VEUERvbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZTkxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9zbm1wbGliL3NubXBEVExTVURQRG9tYWluLmMKQEAgLTAsMCArMSwxMTk4IEBACisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgQ29weXJpZ2h0IDIwMDMgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworCisvKgorICogTk9URTogVEhJUyBJUyBBTiBFWFBFUklNRU5UQUwgSU1QTEVNRU5UQVRJT04gQU5EIE5PVCBZRVQgU1VJVEFCTEUKKyAqIEZPUiBQUk9EVUNUSU9OIFVTRQorICoKKyAqIFRIRVJFIGFyZSBLTk9XTiBzZWN1cml0eSBJU1NVRVMgd2l0aCBUSElTIGNvZGUhCisgKiAoaWYgbm90aGluZyBlbHNlLCB5b3UgY2FuJ3QgdGllIGNlcnRpZmljYXRlcyB0byBjZXJ0YWluIGhvc3RzL3VzZXJzKQorICovCisKKy8qCisgKiAtLS0tLS0tLS0tIENyZWF0aW5nIENlcnRpZmljYXRlcyAtLS0tLS0tLS0tCisgKgorICogRXhhbXBsZSBwdWIvcHJpdiBrZXkgY3JlYXRpb24gc3RlcHMgdXNpbmcgb3BlbnNzbCAocmVwbGFjZSBmb3ItdXNlcgorICogd2l0aCB0aGUgYXBwcm9wcmlhdGUgbmFtZSwgZXRjIChlLmcuIGZvciBhIHVzZXIgeW91IG1pZ2h0IHVzZSB0aGVpcgorICogZmlyc3QubGFzdCBuYW1lIGFuZCBmb3IgYSBzZXJ2ZXIsIHVzZSBpdCdzIGhvc3RuYW1lIG9yIHNvbWV0aGluZykKKyAqCisgKiAgIDEpIGNyZWF0ZSB0aGUgQ1NSIGZpbGUgZmlyc3Q6CisgKgorICogICAgICAgICBvcGVuc3NsIHJlcSAtZGF5cyAzNjUgLW5ldyAtb3V0IGZvci11c2VyLmNzciAta2V5b3V0IGZvci11c2VyLnByaXYKKyAqCisgKiAgIDIpIE9wdGlvbmFsbHkgcmVtb3ZlIHRoZSBwYXNzcGhyYXNlIGlmIHlvdSBoYXRlIHRoYXQgc29ydCBvZiB0aGluZworICogICAgICAob2J2aW91c2x5IG5vdCByZWNvbW1lbmRlZDsgdXNlZnVsIG9uIHNlcnZlcnMgd2l0aG91dCBwYXNzd29yZCBwcm9tcHRzKQorICoKKyAqICAgICAgICAgb3BlbnNzbCByc2EgLWluIGZvci11c2VyLnByaXYgLW91dCBmb3ItdXNlci5pbnNlY3VyZS5wcml2CisgKgorICogICAzKSBDcmVhdGUgYSBzZWxmLXNpZ25lZCBrZXkgZnJvbSB0aGUgQ1NSOgorICoKKyAqICAgICAgb3BlbnNzbCB4NTA5IC1zZXRfc2VyaWFsIGBkYXRlICslWSVtJWRgIC1pbiBmb3ItdXNlci5jc3IgLW91dCBmb3ItdXNlci5jZXJ0IC1yZXEgLXNpZ25rZXkgZm9yLXVzZXIuaW5zZWN1cmUucHJpdiAtZGF5cyAzNjUKKyAqCisgKgorICogVGhlc2UgY2FuIHRoZW4gYmUgdXNlZCBieSB0aGUgY29uZmlnIHRva2VucyBmb3IgYm90aCB0aGUgY2xpZW50IGFuZAorICogdGhlIHNlcnZlcjoKKyAqCisgKiAtLS0tLS0tLS0tIENyZWF0aW5nIGEgQ0EgZm9yIGlzc3VpbmcgY2VydHMgLS0tLS0tLS0tLQorICoKKyAqIFRCRAorICoKKyAqIC0tLS0tLS0tLS0gQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tCisgKgorICogSW4gdGhlIHNubXAuY29uZiBmaWxlLCB5b3Ugc2hvdWxkIHNwZWNpZnkgdGhlIGZvbGxvd2luZworICogdHlwZXMgb2YgY29uZmlndXJhdGlvbiBsaW5lczoKKyAqCisgKiBUbyB0ZWxsIHRoZSBjbGllbnQgd2hpY2gga2V5cyAqaXQqIHNob3VsZCB1c2UgdG8gYXV0aGVudGljYXRlIHdpdGg6CisgKgorICogICBkZWZYNTA5Q2xpZW50UHJpdiAvcGF0aC90by9mb3ItdXNlci5pbnNlY3VyZS5wcml2CisgKiAgIGRlZlg1MDlDbGllbnRQdWIgIC9wYXRoL3RvL2Zvci11c2VyLmluc2VjdXJlLmNlcnQKKyAqCisgKiBUbyB0ZWxsIHRoZSBjbGllbnQgdG8gb25seSBhIGxpc3Qgb2Ygc2VydmVyczoKKyAqCisgKiAgIGRlZlg1MDlTZXJ2ZXJDZXJ0cyAvcGF0aC90by9zZXJ2ZXItY2VydHMuY2VydHMKKyAqCisgKiAgIChzZXJ2ZXItY2VydHMuY2VydHMgY2FuIGJlIGNyZWF0ZWQgYnkgc2ltcGx5IGNhdCdpbmcgbXVsdGlwbGUKKyAqICAgIHNlcnZlciBjZXJ0IGZpbGVzIGludG8gb25lcyBiaWcgZmlsZSkKKyAqCisgKiBUbyB0ZWxsIHRoZSBzZXJ2ZXIgaXQncyBjZXJ0cyB0byBvZmZlcjoKKyAqCisgKiAgIGRlZlg1MDlTZXJ2ZXJQdWIgIC9wYXRoL3RvL3NlcnZlcjEuaW5zZWN1cmUuY2VydAorICogICBkZWZYNTA5U2VydmVyUHJpdiAvcGF0aC90by9zZXJ2ZXIxLmluc2VjdXJlLnByaXYKKyAqCisgKiBUbyB0ZWxsIHRoZSBzZXJ2ZXIgd2hpY2gga2V5cyBpdCBzaG91bGQgYWNjZXB0IGZyb20gY2xpZW50czoKKyAqCisgKiAgIGRlZlg1MDlDbGllbnRDZXJ0cyAvcGF0aC90by9jbGllbnQtY2VydHMuY2VydHMKKyAqCisgKiBUbyBhdXRob3JpemUgZm9yIFIvVyBhIHBhcnRpY3VsYXIgQ29tbW9uTmFtZSBmcm9tIHRob3NlIGNlcnRzOgorICoKKyAqICAgcnd1c2VyICJKb2huIERvZSIKKyAqCisgKi8KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX0FSUEFfSU5FVF9ICisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVERCX0gKKyNpbmNsdWRlIDxuZXRkYi5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVUlPX0gKKyNpbmNsdWRlIDxzeXMvdWlvLmg+CisjZW5kaWYKKworI2lmIEhBVkVfV0lOU09DS19ICisjaW5jbHVkZSA8d2luc29jazIuaD4KKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2VuZGlmCisKKyNpZiBIQVZFX0RNQUxMT0NfSAorI2luY2x1ZGUgPGRtYWxsb2MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9vdXRwdXRfYXBpLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvY29uZmlnX2FwaS5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcERUTFNVRFBEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaD4KKworI2luY2x1ZGUgIm9wZW5zc2wvYmlvLmgiCisjaW5jbHVkZSAib3BlbnNzbC9zc2wuaCIKKyNpbmNsdWRlICJvcGVuc3NsL2Vyci5oIgorCisjaWZuZGVmIElOQUREUl9OT05FCisjZGVmaW5lIElOQUREUl9OT05FCS0xCisjZW5kaWYKKworI2lmZGVmICBNU0dfRE9OVFdBSVQKKyNkZWZpbmUgTkVUU05NUF9ET05UV0FJVCBNU0dfRE9OVFdBSVQKKyNlbHNlCisjZGVmaW5lIE5FVFNOTVBfRE9OVFdBSVQgMAorI2VuZGlmCisKKyNkZWZpbmUgV0VfQVJFX1NFUlZFUiAwCisjZGVmaW5lIFdFX0FSRV9DTElFTlQgMQorCitvaWQgICAgICAgICAgICAgbmV0c25tcERUTFNVRFBEb21haW5bXSA9IHsgVFJBTlNQT1JUX0RPTUFJTl9EVExTX1VEUF9JUCB9Oworc2l6ZV90ICAgICAgICAgIG5ldHNubXBEVExTVURQRG9tYWluX2xlbiA9IE9JRF9MRU5HVEgobmV0c25tcERUTFNVRFBEb21haW4pOworCitzdGF0aWMgbmV0c25tcF90ZG9tYWluIGR0bHN1ZHBEb21haW47CisKKy8qIHRoaXMgc3RvcmVzIG9wZW5zc2wgY3JlZGVudGlhbHMgZm9yIGVhY2ggY29ubmVjdGlvbiBzaW5jZSBvcGVuc3NsCisgICBjYW4ndCBkbyBpdCBmb3IgdXMgYXQgdGhlIG1vbWVudDsgaG9wZWZ1bGx5IGZ1dHVyZSB2ZXJzaW9ucyB3aWxsCisgICBjaGFuZ2UgKi8KK3R5cGVkZWYgc3RydWN0IGJpb19jYWNoZV9zIHsKKyAgIEJJTyAqYmlvOworICAgQklPICp3cml0ZV9iaW87CisgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2FkZHI7CisgICB1aW50MzJfdCBpcHY0YWRkcjsKKyAgIHVfc2hvcnQgcG9ydG51bTsKKyAgIFNTTCAqY29uOworICAgU1NMX0NUWCAqY3R4OworICAgc3RydWN0IGJpb19jYWNoZV9zICpuZXh0OworICAgaW50IG1zZ251bTsKKyAgIGludCBzb2NrOworICAgY2hhciAqc2VjdXJpdHlOYW1lOworfSBiaW9fY2FjaGU7CisKK2Jpb19jYWNoZSAqYmlvY2FjaGUgPSBOVUxMOworCisvKgorICogY2FjaGVkIFNTTCBjb250ZXh0IGluZm9ybWF0aW9uCisgKiAoaW4gdGhlb3J5IHdlIG1heSB3YW50IG1vcmUgdGhhbiBvbmUgcGVyIGNsaWVudC9zZXJ2ZXIgYnV0IGl0J3MKKyAqIHVubGlrZWx5IGFuZCBhIENQVSBhbmQgbWVtb3J5IHdhc3RlIHVubGVzcyB3ZSBkbyBuZWVkIG1vcmUgdGhhbiBvbmUpCisgKi8KK1NTTF9DVFggKmNsaWVudF9jdHgsICpzZXJ2ZXJfY3R4OworCisvKiB0aGlzIHN0b3JlcyByZW1vdGUgY29ubmVjdGlvbnMgaW4gYSBsaXN0IHRvIHNlYXJjaCB0aHJvdWdoICovCisvKiBYWFg6IG9wdGltaXplIGZvciBzZWFyY2hpbmcgKi8KKy8qIFhYWDogaGFuZGxlIHN0YXRlIGlzc3VlcyBmb3IgbmV3IGNvbm5lY3Rpb25zIHRvIHJlZHVjZSBET1MgaXNzdWVzICovCisvKiAgICAgIChUTFMgc2hvdWxkIGRvIHRoaXMsIGJ1dCBvcGVuc3NsIGNhbid0IGRvIG1vcmUgdGhhbiBvbmUgY3R4IHBlciBzb2NrICovCisvKiBYWFg6IHB1dCBhIHRpbWVyIG9uIHRoZSBjYWNoZSBmb3IgZXhwaXJhcnkgcHVycG9zZXMgKi8KK3N0YXRpYyBiaW9fY2FjaGUgKmZpbmRfYmlvX2NhY2hlKHN0cnVjdCBzb2NrYWRkcl9pbiAqZnJvbV9hZGRyKSB7CisgICAgYmlvX2NhY2hlICpjYWNoZXAgPSBOVUxMOworICAgIGNhY2hlcCA9IGJpb2NhY2hlOworICAgIHdoaWxlKGNhY2hlcCkgeworCisgICAgICAgIGlmIChjYWNoZXAtPmlwdjRhZGRyID09IGZyb21fYWRkci0+c2luX2FkZHIuc19hZGRyICYmCisgICAgICAgICAgICBjYWNoZXAtPnBvcnRudW0gPT0gZnJvbV9hZGRyLT5zaW5fcG9ydCkgeworICAgICAgICAgICAgLyogZm91bmQgYW4gZXhpc3RpbmcgY29ubmVjdGlvbiAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYWNoZXAgPSBjYWNoZXAtPm5leHQ7CisgICAgfQorICAgIHJldHVybiBjYWNoZXA7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICogX3g1MDlfZ2V0X2Vycm9yKGludCB4NTA5ZmFpbHZhbHVlLCBjb25zdCBjaGFyICpsb2NhdGlvbikgeworICAgIHN0YXRpYyBjb25zdCBjaGFyICpyZWFzb24gPSBOVUxMOworICAgIAorICAgIC8qIFhYWDogdXNlIHRoaXMgaW5zdGVhZDogWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcoZXJyKSAqLworCisgICAgc3dpdGNoICh4NTA5ZmFpbHZhbHVlKSB7CisgICAgY2FzZSBYNTA5X1ZfT0s6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfT0siOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0NSTDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9DUkwiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0RFQ1JZUFRfQ0VSVF9TSUdOQVRVUkU6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNSWVBUX0NFUlRfU0lHTkFUVVJFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNSWVBUX0NSTF9TSUdOQVRVUkU6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNSWVBUX0NSTF9TSUdOQVRVUkUiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0RFQ09ERV9JU1NVRVJfUFVCTElDX0tFWToKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5BQkxFX1RPX0RFQ09ERV9JU1NVRVJfUFVCTElDX0tFWSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX1NJR05BVFVSRV9GQUlMVVJFOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9DRVJUX1NJR05BVFVSRV9GQUlMVVJFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NSTF9TSUdOQVRVUkVfRkFJTFVSRToKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfQ1JMX1NJR05BVFVSRV9GQUlMVVJFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfTk9UX1lFVF9WQUxJRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfQ0VSVF9OT1RfWUVUX1ZBTElEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfSEFTX0VYUElSRUQ6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0NFUlRfSEFTX0VYUElSRUQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX05PVF9ZRVRfVkFMSUQ6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0NSTF9OT1RfWUVUX1ZBTElEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NSTF9IQVNfRVhQSVJFRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfQ1JMX0hBU19FWFBJUkVEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0VSUk9SX0lOX0NFUlRfTk9UX0JFRk9SRV9GSUVMRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfRVJST1JfSU5fQ0VSVF9OT1RfQkVGT1JFX0ZJRUxEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0VSUk9SX0lOX0NFUlRfTk9UX0FGVEVSX0ZJRUxEOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9FUlJPUl9JTl9DRVJUX05PVF9BRlRFUl9GSUVMRCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9JTl9DUkxfTEFTVF9VUERBVEVfRklFTEQ6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0VSUk9SX0lOX0NSTF9MQVNUX1VQREFURV9GSUVMRCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9JTl9DUkxfTkVYVF9VUERBVEVfRklFTEQ6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0VSUk9SX0lOX0NSTF9ORVhUX1VQREFURV9GSUVMRCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9PVVRfT0ZfTUVNOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9PVVRfT0ZfTUVNIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0RFUFRIX1pFUk9fU0VMRl9TSUdORURfQ0VSVDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfREVQVEhfWkVST19TRUxGX1NJR05FRF9DRVJUIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX1NFTEZfU0lHTkVEX0NFUlRfSU5fQ0hBSU46CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX1NFTEZfU0lHTkVEX0NFUlRfSU5fQ0hBSU4iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVF9MT0NBTExZOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0lTU1VFUl9DRVJUX0xPQ0FMTFkiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX1ZFUklGWV9MRUFGX1NJR05BVFVSRToKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5BQkxFX1RPX1ZFUklGWV9MRUFGX1NJR05BVFVSRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX0NIQUlOX1RPT19MT05HOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9DRVJUX0NIQUlOX1RPT19MT05HIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfUkVWT0tFRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfQ0VSVF9SRVZPS0VEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfQ0E6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0lOVkFMSURfQ0EiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfUEFUSF9MRU5HVEhfRVhDRUVERUQ6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX1BBVEhfTEVOR1RIX0VYQ0VFREVEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfUFVSUE9TRToKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfSU5WQUxJRF9QVVJQT1NFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfVU5UUlVTVEVEOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9DRVJUX1VOVFJVU1RFRCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX1JFSkVDVEVEOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9DRVJUX1JFSkVDVEVEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX1NVQkpFQ1RfSVNTVUVSX01JU01BVENIOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9TVUJKRUNUX0lTU1VFUl9NSVNNQVRDSCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9BS0lEX1NLSURfTUlTTUFUQ0g6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0FLSURfU0tJRF9NSVNNQVRDSCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9BS0lEX0lTU1VFUl9TRVJJQUxfTUlTTUFUQ0g6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0FLSURfSVNTVUVSX1NFUklBTF9NSVNNQVRDSCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9LRVlVU0FHRV9OT19DRVJUU0lHTjoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfS0VZVVNBR0VfTk9fQ0VSVFNJR04iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9DUkxfSVNTVUVSOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0NSTF9JU1NVRVIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5IQU5ETEVEX0NSSVRJQ0FMX0VYVEVOU0lPTjoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5IQU5ETEVEX0NSSVRJQ0FMX0VYVEVOU0lPTiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9LRVlVU0FHRV9OT19DUkxfU0lHTjoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfS0VZVVNBR0VfTk9fQ1JMX1NJR04iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5IQU5ETEVEX0NSSVRJQ0FMX0NSTF9FWFRFTlNJT046CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX1VOSEFORExFRF9DUklUSUNBTF9DUkxfRVhURU5TSU9OIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfTk9OX0NBOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9JTlZBTElEX05PTl9DQSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9QUk9YWV9QQVRIX0xFTkdUSF9FWENFRURFRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfUFJPWFlfUEFUSF9MRU5HVEhfRVhDRUVERUQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfS0VZVVNBR0VfTk9fRElHSVRBTF9TSUdOQVRVUkU6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0tFWVVTQUdFX05PX0RJR0lUQUxfU0lHTkFUVVJFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX1BST1hZX0NFUlRJRklDQVRFU19OT1RfQUxMT1dFRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfUFJPWFlfQ0VSVElGSUNBVEVTX05PVF9BTExPV0VEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfRVhURU5TSU9OOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9JTlZBTElEX0VYVEVOU0lPTiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9JTlZBTElEX1BPTElDWV9FWFRFTlNJT046CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0lOVkFMSURfUE9MSUNZX0VYVEVOU0lPTiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9OT19FWFBMSUNJVF9QT0xJQ1k6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX05PX0VYUExJQ0lUX1BPTElDWSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9VTk5FU1RFRF9SRVNPVVJDRToKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5ORVNURURfUkVTT1VSQ0UiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfQVBQTElDQVRJT05fVkVSSUZJQ0FUSU9OOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9BUFBMSUNBVElPTl9WRVJJRklDQVRJT04iOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJlYXNvbiA9ICJ1bmtub3duIGZhaWx1cmUgY29kZSI7CisgICAgfQorCisgICAgcmV0dXJuIHJlYXNvbjsKK30KKworaW50IHZlcmlmeV9jYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RPUkVfQ1RYICpjdHgpIHsKKyAgICBpbnQgZXJyLCBkZXB0aDsKKyAgICBjaGFyIGJ1ZlsxMDI0XTsKKyAgICBYNTA5ICp0aGVjZXJ0OworCisgICAgdGhlY2VydCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQoY3R4KTsKKyAgICBlcnIgPSBYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3IoY3R4KTsKKyAgICBkZXB0aCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0aChjdHgpOworICAgIAorICAgIC8qIHRoaW5ncyB0byBkbzogKi8KKworICAgIFg1MDlfTkFNRV9vbmVsaW5lKFg1MDlfZ2V0X3N1YmplY3RfbmFtZSh0aGVjZXJ0KSwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgREVCVUdNU0dUTCgoImR0bHN1ZHBfeDUwOSIsCisgICAgICAgICAgICAgICAgIkNlcnQ6ICVzXG4iLCBidWYpKTsKKworCisgICAgREVCVUdNU0dUTCgoImR0bHN1ZHBfeDUwOSIsCisgICAgICAgICAgICAgICAgIiB2ZXJpZnkgdmFsdWU6ICVkLCBkZXB0aD0lZCwgZXJyb3IgY29kZT0lZCwgZXJyb3Igc3RyaW5nPSVzXG4iLAorICAgICAgICAgICAgICAgIG9rLCBkZXB0aCwgZXJyLCBfeDUwOV9nZXRfZXJyb3IoZXJyLCAidmVyaWZ5IGNhbGxiYWNrIikpKTsKKworICAgIC8qIGNoZWNrIGlmIHdlIGFsbG93IHNlbGYtc2lnbmVkIGNlcnRzICovCisgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FMTE9XX1NFTEZfU0lHTkVEKSAmJgorICAgICAgICAoWDUwOV9WX0VSUl9ERVBUSF9aRVJPX1NFTEZfU0lHTkVEX0NFUlQgPT0gZXJyIHx8CisgICAgICAgICBYNTA5X1ZfRVJSX1NFTEZfU0lHTkVEX0NFUlRfSU5fQ0hBSU4gPT0gZXJyKSkgeworICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcF94NTA5IiwgIiAgYWNjZXB0aW5nIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVcbiIpKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIAorICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwX3g1MDkiLCAiICByZXR1cmluZyB0aGUgcGFzc2VkIGluIHZhbHVlIG9mICVkXG4iLCBvaykpOworICAgIHJldHVybihvayk7Cit9CisKK3N0YXRpYyB2b2lkIF9vcGVuc3NsX2xvZ19lcnJvcihpbnQgcmMsIFNTTCAqY29uLCBjb25zdCBjaGFyICpsb2NhdGlvbikgeworICAgIGNvbnN0IGNoYXIgKnJlYXNvbjsKKworICAgIGlmIChyYyA9PSAtMSkgeworICAgICAgICBpbnQgc3NsbnVtID0gU1NMX2dldF9lcnJvcihjb24sIHJjKTsKKworICAgICAgICBzd2l0Y2goc3NsbnVtKSB7CisgICAgICAgIGNhc2UgU1NMX0VSUk9SX05PTkU6CisgICAgICAgICAgICByZWFzb24gPSAiU1NMX0VSUk9SX05PTkUiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTU0xfRVJST1JfU1NMOgorICAgICAgICAgICAgcmVhc29uID0gIlNTTF9FUlJPUl9TU0wiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9SRUFEOgorICAgICAgICAgICAgcmVhc29uID0gIlNTTF9FUlJPUl9XQU5UX1JFQUQiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9XUklURToKKyAgICAgICAgICAgIHJlYXNvbiA9ICJTU0xfRVJST1JfV0FOVF9XUklURSI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX1g1MDlfTE9PS1VQOgorICAgICAgICAgICAgcmVhc29uID0gIlNTTF9FUlJPUl9XQU5UX1g1MDlfTE9PS1VQIjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU1NMX0VSUk9SX1NZU0NBTEw6CisgICAgICAgICAgICByZWFzb24gPSAiU1NMX0VSUk9SX1NZU0NBTEwiOworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkRUTFMgZXJyb3I6ICVzOiByYz0lZCwgc3NsZXJyb3IgPSAlZCAoJXMpOiBzeXN0ZW1fZXJyb3I9JWQgKCVzKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLCByYywgc3NsbnVtLCByZWFzb24sIGVycm5vLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhc2UgU1NMX0VSUk9SX1pFUk9fUkVUVVJOOgorICAgICAgICAgICAgcmVhc29uID0gIlNTTF9FUlJPUl9aRVJPX1JFVFVSTiI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX0NPTk5FQ1Q6CisgICAgICAgICAgICByZWFzb24gPSAiU1NMX0VSUk9SX1dBTlRfQ09OTkVDVCI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX0FDQ0VQVDoKKyAgICAgICAgICAgIHJlYXNvbiA9ICJTU0xfRVJST1JfV0FOVF9BQ0NFUFQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJlYXNvbiA9ICJ1bmtub3duIjsKKyAgICAgICAgfQorCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJEVExTIGVycm9yOiAlczogcmM9JWQsIHNzbGVycm9yID0gJWQgKCVzKVxuIiwKKyAgICAgICAgICAgICAgICAgbG9jYXRpb24sIHJjLCBzc2xudW0sIHJlYXNvbik7CisgICAgfQorfQorCisvKiBYWFg6IGxvdHMgb2YgbWFsbG9jL3N0YXRlIGNsZWFudXAgbmVlZGVkICovCisjZGVmaW5lIERJRUhFUkUobXNnKSB7IHNubXBfbG9nKExPR19FUlIsICIlc1xuIiwgbXNnKTsgcmV0dXJuIE5VTEw7IH0KKworc3RhdGljIGJpb19jYWNoZSAqCitzdGFydF9uZXdfY2FjaGVkX2Nvbm5lY3Rpb24oaW50IHNvY2ssIHN0cnVjdCBzb2NrYWRkcl9pbiAqcmVtb3RlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdlX2FyZV9jbGllbnQpIHsKKyAgICBiaW9fY2FjaGUgKmNhY2hlcCA9IE5VTEw7CisKKyAgICBpZiAoIXNvY2spCisgICAgICAgIERJRUhFUkUoIm5vIHNvY2tldCBwYXNzZWQgaW4gdG8gc3RhcnRfbmV3X2NhY2hlZF9jb25uZWN0aW9uXG4iKTsKKyAgICBpZiAoIXJlbW90ZV9hZGRyKQorICAgICAgICBESUVIRVJFKCJubyByZW1vdGVfYWRkciBwYXNzZWQgaW4gdG8gc3RhcnRfbmV3X2NhY2hlZF9jb25uZWN0aW9uXG4iKTsKKyAgICAgICAgCisgICAgY2FjaGVwID0gU05NUF9NQUxMT0NfVFlQRURFRihiaW9fY2FjaGUpOworICAgIGlmICghY2FjaGVwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAKKyAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJzdGFydGluZyBhIG5ldyBjb25uZWN0aW9uXG4iKSk7CisgICAgY2FjaGVwLT5uZXh0ID0gYmlvY2FjaGU7CisgICAgYmlvY2FjaGUgPSBjYWNoZXA7CisKKyAgICBjYWNoZXAtPmlwdjRhZGRyID0gcmVtb3RlX2FkZHItPnNpbl9hZGRyLnNfYWRkcjsKKyAgICBjYWNoZXAtPnBvcnRudW0gPSByZW1vdGVfYWRkci0+c2luX3BvcnQ7CisgICAgY2FjaGVwLT5zb2NrID0gc29jazsKKyAgICBtZW1jcHkoJmNhY2hlcC0+c29ja2FkZHIsIHJlbW90ZV9hZGRyLCBzaXplb2YoKnJlbW90ZV9hZGRyKSk7CisKKyAgICBpZiAod2VfYXJlX2NsaWVudCkgeworICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJzdGFydGluZyBhIG5ldyBjb25uZWN0aW9uIGFzIGEgY2xpZW50IHRvIHNvY2s6ICVkXG4iLCBzb2NrKSk7CisgICAgICAgIGNhY2hlcC0+Y29uID0gU1NMX25ldyhjbGllbnRfY3R4KTsKKworICAgICAgICAvKiBYWFg6IHNlc3Npb24gc2V0dGluZyA3MzUgKi8KKworICAgICAgICAvKiBjcmVhdGUgYSBiaW8gKi8KKworICAgICAgICBjYWNoZXAtPmJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOyAvKiBUaGUgb25lIG9wZW5zc2wgcmVhZHMgZnJvbSAqLworICAgICAgICBjYWNoZXAtPndyaXRlX2JpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOyAvKiBvcGVuc3NsIHdyaXRlcyB0byAqLworCisgICAgICAgIEJJT19zZXRfbWVtX2VvZl9yZXR1cm4oY2FjaGVwLT5iaW8sIC0xKTsKKyAgICAgICAgQklPX3NldF9tZW1fZW9mX3JldHVybihjYWNoZXAtPndyaXRlX2JpbywgLTEpOworCisgICAgICAgIFNTTF9zZXRfYmlvKGNhY2hlcC0+Y29uLCBjYWNoZXAtPmJpbywgY2FjaGVwLT53cml0ZV9iaW8pOworICAgICAgICBTU0xfc2V0X2Nvbm5lY3Rfc3RhdGUoY2FjaGVwLT5jb24pOworICAgICAgICAKKyAgICB9IGVsc2UgeworICAgICAgICAvKiB3ZSdyZSB0aGUgc2VydmVyICovCisKKyAgICAgICAgY2FjaGVwLT5iaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsgLyogVGhlIG9uZSBvcGVuc3NsIHJlYWRzIGZyb20gKi8KKworICAgICAgICBpZiAoIWNhY2hlcC0+YmlvKQorICAgICAgICAgICAgRElFSEVSRSgiZmFpbGVkIHRvIGNyZWF0ZSB0aGUgcmVhZCBiaW8iKTsKKworICAgICAgICBjYWNoZXAtPndyaXRlX2JpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOyAvKiBvcGVuc3NsIHdyaXRlcyB0byAqLworCisgICAgICAgIGlmICghY2FjaGVwLT53cml0ZV9iaW8pIHsKKyAgICAgICAgICAgIERJRUhFUkUoImZhaWxlZCB0byBjcmVhdGUgdGhlIHdyaXRlIGJpbyIpOworICAgICAgICAgICAgQklPX2ZyZWUoY2FjaGVwLT5iaW8pOworICAgICAgICB9CisKKyAgICAgICAgQklPX3NldF9tZW1fZW9mX3JldHVybihjYWNoZXAtPmJpbywgLTEpOworICAgICAgICBCSU9fc2V0X21lbV9lb2ZfcmV0dXJuKGNhY2hlcC0+d3JpdGVfYmlvLCAtMSk7CisKKyAgICAgICAgY2FjaGVwLT5jb24gPSBTU0xfbmV3KHNlcnZlcl9jdHgpOworCisgICAgICAgIGlmICghY2FjaGVwLT5jb24pIHsKKyAgICAgICAgICAgIEJJT19mcmVlKGNhY2hlcC0+YmlvKTsKKyAgICAgICAgICAgIEJJT19mcmVlKGNhY2hlcC0+d3JpdGVfYmlvKTsKKyAgICAgICAgICAgIERJRUhFUkUoImZhaWxlZCB0byBjcmVhdGUgdGhlIHdyaXRlIGJpbyIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiB0dXJuIG9uIGNvb2tpZSBleGNoYW5nZSAqLworICAgICAgICAvKiBYWFg6IHdlIG5lZWQgdG8gb25seSBjcmVhdGUgY2FjaGUgZW50cmllcyB3aGVuIGNvb2tpZXMgc3VjY2VlZCAqLworICAgICAgICBTU0xfc2V0X29wdGlvbnMoY2FjaGVwLT5jb24sIFNTTF9PUF9DT09LSUVfRVhDSEFOR0UpOworCisgICAgICAgIC8qIHNldCB0aGUgYmlvcyB0aGF0IG9wZW5zc2wgc2hvdWxkIHJlYWQgZnJvbSBhbmQgd3JpdGUgdG8gKi8KKyAgICAgICAgLyogKGFuZCB3ZSdsbCBkbyB0aGUgb3Bwb3NpdGUpICovCisgICAgICAgIFNTTF9zZXRfYmlvKGNhY2hlcC0+Y29uLCBjYWNoZXAtPmJpbywgY2FjaGVwLT53cml0ZV9iaW8pOworICAgICAgICBTU0xfc2V0X2FjY2VwdF9zdGF0ZShjYWNoZXAtPmNvbik7CisKKyAgICB9CisKKyAgICByZXR1cm4gY2FjaGVwOworfQorCitzdGF0aWMgYmlvX2NhY2hlICoKK2ZpbmRfb3JfY3JlYXRlX2Jpb19jYWNoZShpbnQgc29jaywgc3RydWN0IHNvY2thZGRyX2luICpmcm9tX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdlX2FyZV9jbGllbnQpIHsKKyAgICBiaW9fY2FjaGUgKmNhY2hlcCA9IGZpbmRfYmlvX2NhY2hlKGZyb21fYWRkcik7CisgICAgaWYgKE5VTEwgPT0gY2FjaGVwKSB7CisgICAgICAgIC8qIG5vbmUgZm91bmQ7IG5lZWQgdG8gc3RhcnQgYSBuZXcgY29udGV4dCAqLworICAgICAgICBjYWNoZXAgPSBzdGFydF9uZXdfY2FjaGVkX2Nvbm5lY3Rpb24oc29jaywgZnJvbV9hZGRyLCB3ZV9hcmVfY2xpZW50KTsKKyAgICAgICAgaWYgKE5VTEwgPT0gY2FjaGVwKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHRvIG9wZW4gYSBuZXcgZHRscyBjb25uZWN0aW9uXG4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY2FjaGVwOworfSAgICAgICAKKworLyoKKyAqIFlvdSBjYW4gd3JpdGUgc29tZXRoaW5nIGludG8gb3BhcXVlIHRoYXQgd2lsbCBzdWJzZXF1ZW50bHkgZ2V0IHBhc3NlZCBiYWNrIAorICogdG8geW91ciBzZW5kIGZ1bmN0aW9uIGlmIHlvdSBsaWtlLiAgRm9yIGluc3RhbmNlLCB5b3UgbWlnaHQgd2FudCB0bworICogcmVtZW1iZXIgd2hlcmUgYSBQRFUgY2FtZSBmcm9tLCBzbyB0aGF0IHlvdSBjYW4gc2VuZCBhIHJlcGx5IHRoZXJlLi4uICAKKyAqLworCitzdGF0aWMgaW50CituZXRzbm1wX2R0bHN1ZHBfcmVjdihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqYnVmLCBpbnQgc2l6ZSwKKwkJIHZvaWQgKipvcGFxdWUsIGludCAqb2xlbmd0aCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSAtMTsKKyAgICBzb2NrbGVuX3QgICAgICAgZnJvbWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpOworICAgIG5ldHNubXBfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOworICAgIHN0cnVjdCBzb2NrYWRkciAqZnJvbTsKKyAgICBuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKnRtU3RhdGVSZWYgPSBOVUxMOworICAgIFg1MDkgICAgICAgICAgICAqcGVlcjsKKworICAgIGlmICh0ICE9IE5VTEwgJiYgdC0+c29jayA+PSAwKSB7CisgICAgICAgIC8qIGNyZWF0ZSBhIHRtU3RhdGVSZWYgY2FjaGUgZm9yIHNsb3cgZmlsbC1pbiAqLworICAgICAgICB0bVN0YXRlUmVmID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UpOworCisgICAgICAgIGlmICh0bVN0YXRlUmVmID09IE5VTEwpIHsKKyAgICAgICAgICAgICpvcGFxdWUgPSBOVUxMOworICAgICAgICAgICAgKm9sZW5ndGggPSAwOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgYWRkcl9wYWlyID0gJnRtU3RhdGVSZWYtPmFkZHJlc3NlczsKKyAgICAgICAgdG1TdGF0ZVJlZi0+aGF2ZV9hZGRyZXNzZXMgPSAxOworICAgICAgICBmcm9tID0gKHN0cnVjdCBzb2NrYWRkciAqKSAmKGFkZHJfcGFpci0+cmVtb3RlX2FkZHIpOworCisJd2hpbGUgKHJjIDwgMCkgeworI2lmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKKyAgICAgICAgICAgIHJjID0gbmV0c25tcF91ZHBfcmVjdmZyb20odC0+c29jaywgYnVmLCBzaXplLCBmcm9tLCAmZnJvbWxlbiwgJihhZGRyX3BhaXItPmxvY2FsX2FkZHIpKTsKKyNlbHNlCisgICAgICAgICAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgTkVUU05NUF9ET05UV0FJVCwgZnJvbSwgJmZyb21sZW4pOworI2VuZGlmIC8qIGxpbnV4ICYmIElQX1BLVElORk8gKi8KKwkgICAgaWYgKHJjIDwgMCAmJiBlcnJubyAhPSBFSU5UUikgeworCQlicmVhazsKKwkgICAgfQorCX0KKworICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJyZWNlaXZlZCAlZCByYXcgYnl0ZXMgb24gd2F5IHRvIGR0bHNcbiIsIHJjKSk7CisgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgInJlY3Zmcm9tIGZkICVkIGVyciAlZCAoXCIlc1wiKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHQtPnNvY2ssIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKKyAgICAgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyYyA+PSAwKSB7CisgICAgICAgICAgICAvKiBub3cgdGhhdCB3ZSBoYXZlIHRoZSBmcm9tIGFkZHJlc3MgZmlsbGVkIGluLCB3ZSBjYW4gbG9vayB1cAorICAgICAgICAgICAgICAgdGhlIG9wZW5zc2wgY29udGV4dCBhbmQgaGF2ZSBvcGVuc3NsIHJlYWQgYW5kIHByb2Nlc3MKKyAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlbHkgKi8KKworICAgICAgICAgICAgLyogaWYgd2UgZG9uJ3QgaGF2ZSBhIGNhY2hlcCBmb3IgdGhpcyBjb25uZWN0aW9uIHRoZW4KKyAgICAgICAgICAgICAgIHdlJ3JlIHJlY2VpdmluZyBzb21ldGhpbmcgbmV3IGFuZCBhcmUgdGhlIHNlcnZlcgorICAgICAgICAgICAgICAgc2lkZSAqLworICAgICAgICAgICAgLyogWFhYOiBhbGxvdyBmb3IgYSBTTk1QIGNsaWVudCB0byBuZXZlciBhY2NlcHQgbmV3IGNvbm5zPyAqLworICAgICAgICAgICAgYmlvX2NhY2hlICpjYWNoZXAgPQorICAgICAgICAgICAgICAgIGZpbmRfb3JfY3JlYXRlX2Jpb19jYWNoZSh0LT5zb2NrLCAmYWRkcl9wYWlyLT5yZW1vdGVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VfQVJFX1NFUlZFUik7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSBjYWNoZXApIHsKKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUodG1TdGF0ZVJlZik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiB3cml0ZSB0aGUgcmVjZWl2ZWQgYnVmZmVyIHRvIHRoZSBtZW1vcnktYmFzZWQgaW5wdXQgYmlvICovCisgICAgICAgICAgICBCSU9fd3JpdGUoY2FjaGVwLT5iaW8sIGJ1ZiwgcmMpOworCisgICAgICAgICAgICAvKiBYWFg6IGluIFdlcycgb3RoZXIgZXhhbXBsZSB3ZSBkbyBhIFNTTF9wZW5kaW5nKCkgY2FsbAorICAgICAgICAgICAgICAgdG9vIHRvIGVuc3VyZSB3ZSdyZSByZWFkeSB0byByZWFkLi4uICBpdCdzIHBvc3NpYmxlCisgICAgICAgICAgICAgICB0aGF0IGJ1ZmZlcmVkIHN0dWZmIGluIG9wZW5zc2wgd29uJ3QgYmUgY2F1Z2h0IGJ5IHRoZQorICAgICAgICAgICAgICAgbmV0LXNubXAgc2VsZWN0IGxvb3AgYmVjYXVzZSBpdCdzIGFscmVhZHkgYmVlbiBwdWxsZWQKKyAgICAgICAgICAgICAgIG91dDsgbmVlZCB0byBkZWFsIHdpdGggdGhpcykgKi8KKyAgICAgICAgICAgIHJjID0gU1NMX3JlYWQoY2FjaGVwLT5jb24sIGJ1Ziwgc2l6ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgInJlY2VpdmVkICVkIGRlY29kZWQgYnl0ZXMgZnJvbSBkdGxzXG4iLCByYykpOworCisgICAgICAgICAgICBpZiAoQklPX2N0cmxfcGVuZGluZyhjYWNoZXAtPndyaXRlX2JpbykgPiAwKSB7CisgICAgICAgICAgICAgICAgLyogd2UgaGF2ZSBvdXRnb2luZyBkYXRhIHRvIHNlbmQ7IHByb2JhYmx5IERUTFMgbmVnb3RhdGlvbiAqLworCisgICAgICAgICAgICAgICAgdV9jaGFyIG91dGJ1Zls2NTUzNV07CisgICAgICAgICAgICAgICAgaW50IG91dHNpemU7CisgICAgICAgICAgICAgICAgaW50IHJjMjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvKiBmb3IgbWVtb3J5IGJpb3MsIHdlIG5vdyByZWFkIGZyb20gb3BlbnNzbCdzIHdyaXRlCisgICAgICAgICAgICAgICAgICAgYnVmZmVyIChpZSwgdGhlIHBhY2tldCB0byBnbyBvdXQpIGFuZCBzZW5kIGl0IG91dAorICAgICAgICAgICAgICAgICAgIHRoZSB1ZHAgcG9ydCBtYW51YWxseSAqLworICAgICAgICAgICAgICAgIG91dHNpemUgPSBCSU9fcmVhZChjYWNoZXAtPndyaXRlX2Jpbywgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSk7CisgICAgICAgICAgICAgICAgaWYgKG91dHNpemUgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHNob3VsZCBhbHdheXMgYmUgdHJ1ZS4gKi8KKyNpZiBkZWZpbmVkKFhYWEZJWE1FKSAmJiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCisgICAgICAgICAgICAgICAgLyogWFhYOiBiZWZvcmUgdGhpcyBjYW4gd29yaywgd2UgbmVlZCB0byByZW1lbWJlciBhZGRyZXNzIHdlCisgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgaXQgZnJvbSAoYWRkcl9wYWlyKSAqLworICAgICAgICAgICAgICAgICAgICByYzIgPSBuZXRzbm1wX3VkcF9zZW5kdG8oY2FjaGVwLT5zb2NrLCBhZGRyX3BhaXItPmxvY2FsX2FkZHIsIGFkZHJfcGFpci0+cmVtb3RlX2FkZHIsIG91dGJ1Ziwgb3V0c2l6ZSk7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICByYzIgPSBzZW5kdG8odC0+c29jaywgb3V0YnVmLCBvdXRzaXplLCAwLCAmY2FjaGVwLT5zb2NrYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpOworI2VuZGlmIC8qIGxpbnV4ICYmIElQX1BLVElORk8gKi8KKworICAgICAgICAgICAgICAgICAgICBpZiAocmMyID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHRvIHNlbmQgYSBEVExTIHNwZWNpZmljIHBhY2tldFxuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChTU0xfcGVuZGluZyhjYWNoZXAtPmNvbikpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImFjazogZ290IGhlcmUuLi4gIHBlbmRpbmdcbiIpOworICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyYyA9PSAtMSkgeworICAgICAgICAgICAgICAgIF9vcGVuc3NsX2xvZ19lcnJvcihyYywgY2FjaGVwLT5jb24sICJTU0xfcmVhZCIpOworICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKworICAgICAgICAgICAgICAgIGlmIChTU0xfZ2V0X2Vycm9yKGNhY2hlcC0+Y29uLCByYykgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOyAvKiBYWFg6IGl0J3Mgb2ssIGJ1dCB3aGF0J3MgdGhlIHJpZ2h0IHJldHVybj8gKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGFyICpzdHIgPSBuZXRzbm1wX3VkcF9mbXRhZGRyKE5VTEwsIGFkZHJfcGFpciwgc2l6ZW9mKG5ldHNubXBfYWRkcl9wYWlyKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWN2ZnJvbSBmZCAlZCBnb3QgJWQgYnl0ZXMgKGZyb20gJXMpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQtPnNvY2ssIHJjLCBzdHIpKTsKKyAgICAgICAgICAgICAgICBmcmVlKHN0cik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFhYWDogZGlzYWxsb3cgTlVMTCBhdXRoL2VuY3IgYWxncyBpbiBvdXIgaW1wbGVtZW50YXRpb25zICovCisgICAgICAgICAgICB0bVN0YXRlUmVmLT50cmFuc3BvcnRTZWN1cml0eUxldmVsID0gU05NUF9TRUNfTEVWRUxfQVVUSFBSSVY7CisKKyAgICAgICAgICAgIC8qIHVzZSB4NTA5IGNlcnQgdG8gZG8gbG9va3VwIHRvIHNlY25hbWUgaWYgRE5FIGluIGNhY2hlcCB5ZXQgKi8KKyAgICAgICAgICAgIGlmICghY2FjaGVwLT5zZWN1cml0eU5hbWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoTlVMTCAhPSAocGVlciA9IFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShjYWNoZXAtPmNvbikpKSB7CisgICAgICAgICAgICAgICAgICAgIFg1MDlfTkFNRSAqc3VibmFtZTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBuYW1lYnVmWzEwMjRdOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvKiB3ZSBoYXZlIG9uZSAqLworICAgICAgICAgICAgICAgICAgICBzdWJuYW1lID0gWDUwOV9nZXRfc3ViamVjdF9uYW1lKHBlZXIpOworICAgICAgICAgICAgICAgICAgICBYNTA5X05BTUVfZ2V0X3RleHRfYnlfTklEKHN1Ym5hbWUsIE5JRF9jb21tb25OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSk7CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgImdvdCBjb21tb25uYW1lOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWJ1ZikpOworICAgICAgICAgICAgICAgICAgICBjYWNoZXAtPnNlY3VyaXR5TmFtZSA9IHN0cmR1cChuYW1lYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAic2V0IFNlY05hbWUgdG86ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZXAtPnNlY3VyaXR5TmFtZSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogWFhYOiBkZXRlY3QgYW5kIHRocm93IG91dCBvdmVyZmxvdyBzZWNuYW1lIHNpemVzIHJhdGhlcgorICAgICAgICAgICAgICAgdGhhbiB0cnVuY2F0aW5nLiAqLworICAgICAgICAgICAgc3RybGNweSh0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUsIGNhY2hlcC0+c2VjdXJpdHlOYW1lLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YodG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lKSk7CisgICAgICAgICAgICB0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWVbc2l6ZW9mKHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSktMV0gPSAnXDAnOworICAgICAgICAgICAgdG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lTGVuID0gc3RybGVuKHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSk7CisKKyAgICAgICAgICAgICpvcGFxdWUgPSB0bVN0YXRlUmVmOworICAgICAgICAgICAgKm9sZW5ndGggPSBzaXplb2YobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlKTsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAicmVjdmZyb20gZmQgJWQgZXJyICVkIChcIiVzXCIpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgdC0+c29jaywgZXJybm8sIHN0cmVycm9yKGVycm5vKSkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByYzsKK30KKworCisKK3N0YXRpYyBpbnQKK25ldHNubXBfZHRsc3VkcF9zZW5kKG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpidWYsIGludCBzaXplLAorCQkgdm9pZCAqKm9wYXF1ZSwgaW50ICpvbGVuZ3RoKQoreworICAgIGludCByYyA9IC0xOworICAgIG5ldHNubXBfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOworICAgIHN0cnVjdCBzb2NrYWRkciAqdG8gPSBOVUxMOworICAgIGJpb19jYWNoZSAqY2FjaGVwID0gTlVMTDsKKyAgICBuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKnRtU3RhdGVSZWYgPSBOVUxMOworICAgIHVfY2hhciBvdXRidWZbNjU1MzVdOworICAgIAorICAgIGlmIChvcGFxdWUgIT0gTlVMTCAmJiAqb3BhcXVlICE9IE5VTEwgJiYKKyAgICAgICAgKm9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSkpIHsKKyAgICAgICAgdG1TdGF0ZVJlZiA9IChuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKikgKm9wYXF1ZTsKKworICAgICAgICBpZiAodG1TdGF0ZVJlZi0+aGF2ZV9hZGRyZXNzZXMpCisgICAgICAgICAgICBhZGRyX3BhaXIgPSAmKHRtU3RhdGVSZWYtPmFkZHJlc3Nlcyk7CisgICAgICAgIGVsc2UgaWYgKHQgIT0gTlVMTCAmJiB0LT5kYXRhICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfYWRkcl9wYWlyKSkKKyAgICAgICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2FkZHJfcGFpciAqKSAodC0+ZGF0YSk7CisgICAgfSBlbHNlIGlmICh0ICE9IE5VTEwgJiYgdC0+ZGF0YSAhPSBOVUxMICYmCisgICAgICAgICAgICAgICB0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2YobmV0c25tcF9hZGRyX3BhaXIpKSB7CisgICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2FkZHJfcGFpciAqKSAodC0+ZGF0YSk7CisgICAgfQorCisgICAgaWYgKE5VTEwgPT0gYWRkcl9wYWlyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzdWRwX3NlbmQ6IGNhbid0IGdldCBhZGRyZXNzIHRvIHNlbmQgdG9cbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgdG8gPSAoc3RydWN0IHNvY2thZGRyICopICYoYWRkcl9wYWlyLT5yZW1vdGVfYWRkcik7CisKKyAgICBpZiAoTlVMTCA9PSB0byB8fCBOVUxMID09IHQgfHwgdC0+c29jayA8PSAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIG5ldHNubXBfZHRsc3VkcF9zZW5kIHVzYWdlXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIHdlJ3JlIGFsd2F5cyBhIGNsaWVudCBpZiB3ZSdyZSBzZW5kaW5nIHRvIHNvbWV0aGluZyB1bmtub3duIHlldCAqLworICAgIGlmIChOVUxMID09CisgICAgICAgIChjYWNoZXAgPSBmaW5kX29yX2NyZWF0ZV9iaW9fY2FjaGUodC0+c29jaywgJmFkZHJfcGFpci0+cmVtb3RlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VfQVJFX0NMSUVOVCkpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoIWNhY2hlcC0+c2VjdXJpdHlOYW1lICYmIHRtU3RhdGVSZWYgJiYgdG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lTGVuID4gMCkKKyAgICAgICAgY2FjaGVwLT5zZWN1cml0eU5hbWUgPSBzdHJkdXAodG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lKTsKKyAgICAgICAgCisgICAgICAgIAorICAgIHsKKyAgICAgICAgY2hhciAqc3RyID0gbmV0c25tcF91ZHBfZm10YWRkcihOVUxMLCAodm9pZCAqKSBhZGRyX3BhaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG5ldHNubXBfYWRkcl9wYWlyKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgInNlbmQgJWQgYnl0ZXMgZnJvbSAlcCB0byAlcyBvbiBmZCAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSwgYnVmLCBzdHIsIHQtPnNvY2spKTsKKyAgICAgICAgZnJlZShzdHIpOworICAgIH0KKyAgICByYyA9IFNTTF93cml0ZShjYWNoZXAtPmNvbiwgYnVmLCBzaXplKTsKKyAgICBpZiAocmMgPCAwKSB7CisgICAgICAgIF9vcGVuc3NsX2xvZ19lcnJvcihyYywgY2FjaGVwLT5jb24sICJTU0xfd3JpdGUiKTsKKyAgICB9CisKKyAgICAvKiBmb3IgbWVtb3J5IGJpb3MsIHdlIG5vdyByZWFkIGZyb20gb3BlbnNzbCdzIHdyaXRlIGJ1ZmZlciAoaWUsCisgICAgICAgdGhlIHBhY2tldCB0byBnbyBvdXQpIGFuZCBzZW5kIGl0IG91dCB0aGUgdWRwIHBvcnQgbWFudWFsbHkgKi8KKyAgICByYyA9IEJJT19yZWFkKGNhY2hlcC0+d3JpdGVfYmlvLCBvdXRidWYsIHNpemVvZihvdXRidWYpKTsKKyAgICBpZiAocmMgPD0gMCkgeworICAgICAgICAvKiBpbiB0aGVvcnkgYW4gb2sgdGhpbmcgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2lmIGRlZmluZWQoRklYTUUpICYmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKKyAgICAvKiBYWFg6IGJlZm9yZSB0aGlzIGNhbiB3b3JrLCB3ZSBuZWVkIHRvIHJlbWVtYmVyIGFkZHJlc3Mgd2UKKyAgICAgICByZWNlaXZlZCBpdCBmcm9tIChhZGRyX3BhaXIpICovCisgICAgcmMgPSBuZXRzbm1wX3VkcF9zZW5kdG8oY2FjaGVwLT5zb2NrLCAmY2FjaGVwLT5zb2NrYWRkciAgcmVtb3RlICBhZGRyX3BhaXIgPyAmKGFkZHJfcGFpci0+bG9jYWxfYWRkcikgOiBOVUxMLCB0bywgb3V0YnVmLCByYyk7CisjZWxzZQorICAgIHJjID0gc2VuZHRvKHQtPnNvY2ssIG91dGJ1ZiwgcmMsIDAsICZjYWNoZXAtPnNvY2thZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyKSk7CisjZW5kaWYgLyogbGludXggJiYgSVBfUEtUSU5GTyAqLworCisgICAgcmV0dXJuIHJjOworfQorCisKKworc3RhdGljIGludAorbmV0c25tcF9kdGxzdWRwX2Nsb3NlKG5ldHNubXBfdHJhbnNwb3J0ICp0KQoreworICAgIGludCByYyA9IC0xOworICAgIC8qIFhYWDogaXNzdWUgYSBwcm9wZXIgZHRscyBjbG9zdXJlIG5vdGlmaWNhdGlvbihzKSAqLworICAgIGlmICh0LT5zb2NrID49IDApIHsKKyNpZm5kZWYgSEFWRV9DTE9TRVNPQ0tFVAorICAgICAgICByYyA9IGNsb3NlKHQtPnNvY2spOworI2Vsc2UKKyAgICAgICAgcmMgPSBjbG9zZXNvY2tldCh0LT5zb2NrKTsKKyNlbmRpZgorICAgICAgICB0LT5zb2NrID0gLTE7CisgICAgfQorICAgIHJldHVybiByYzsKK30KKworLyoKKyAqIE9wZW4gYSBEVExTLWJhc2VkIHRyYW5zcG9ydCBmb3IgU05NUC4gIExvY2FsIGlzIFRSVUUgaWYgYWRkciBpcyB0aGUgbG9jYWwKKyAqIGFkZHJlc3MgdG8gYmluZCB0byAoaS5lLiB0aGlzIGlzIGEgc2VydmVyLXR5cGUgc2Vzc2lvbik7IG90aGVyd2lzZSBhZGRyIGlzIAorICogdGhlIHJlbW90ZSBhZGRyZXNzIHRvIHNlbmQgdGhpbmdzIHRvLiAgCisgKi8KKworbmV0c25tcF90cmFuc3BvcnQgKgorbmV0c25tcF9kdGxzdWRwX3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIsIGludCBsb2NhbCkKK3sKKyAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gMDsKKyAgICBjaGFyICAgICAgICAgICAqc3RyID0gTlVMTDsKKyAgICBjaGFyICAgICAgICAgICAqY2xpZW50X3NvY2tldCA9IE5VTEw7CisgICAgbmV0c25tcF9hZGRyX3BhaXIgYWRkcl9wYWlyOworCisgICAgaWYgKGFkZHIgPT0gTlVMTCB8fCBhZGRyLT5zaW5fZmFtaWx5ICE9IEFGX0lORVQpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtc2V0KCZhZGRyX3BhaXIsIDAsIHNpemVvZihuZXRzbm1wX2FkZHJfcGFpcikpOworICAgIG1lbWNweSgmKGFkZHJfcGFpci5yZW1vdGVfYWRkciksIGFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKKyAgICBpZiAodCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHN0ciA9IG5ldHNubXBfdWRwX2ZtdGFkZHIoTlVMTCwgKHZvaWQgKikmYWRkcl9wYWlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG5ldHNubXBfYWRkcl9wYWlyKSk7CisgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAib3BlbiAlcyAlc1xuIiwgbG9jYWwgPyAibG9jYWwiIDogInJlbW90ZSIsCisgICAgICAgICAgICAgICAgc3RyKSk7CisgICAgZnJlZShzdHIpOworCisgICAgdC0+ZG9tYWluID0gbmV0c25tcERUTFNVRFBEb21haW47CisgICAgdC0+ZG9tYWluX2xlbmd0aCA9IG5ldHNubXBEVExTVURQRG9tYWluX2xlbjsKKworICAgIHQtPnNvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAib3Blbm5lZCBzb2NrZXQgJWQgYXMgbG9jYWw9JWRcbiIsIHQtPnNvY2ssCisgICAgICAgICAgICAgICAgbG9jYWwpKTsKKyAgICBpZiAodC0+c29jayA8IDApIHsKKyAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogWFhYOiBQb3RlbnRpYWxseSBzZXQgc29jayBvcHRzIGhlcmUgKFNPX1NOREJVRi9TT19SQ1ZfQlVGKSAqLworICAgIC8qIFhYWDogYW5kIGJ1ZiBzaXplICovCisgICAgX25ldHNubXBfdWRwX3NvY2tvcHRfc2V0KHQtPnNvY2ssIGxvY2FsKTsKKworICAgIGlmIChsb2NhbCkgeworICAgICAgICAvKgorICAgICAgICAgKiBUaGlzIHNlc3Npb24gaXMgaW50ZW5lZGVkIGFzIGEgc2VydmVyLCBzbyB3ZSBtdXN0IGJpbmQgb24gdG8gdGhlCisgICAgICAgICAqIGdpdmVuIElQIGFkZHJlc3MsIHdoaWNoIG1heSBpbmNsdWRlIGFuIGludGVyZmFjZSBhZGRyZXNzLCBvciBjb3VsZAorICAgICAgICAgKiBiZSBJTkFERFJfQU5ZLCBidXQgY2VydGFpbmx5IGluY2x1ZGVzIGEgcG9ydCBudW1iZXIuCisgICAgICAgICAqLworCisgICAgICB0LT5sb2NhbCA9ICh1X2NoYXIgKikgbWFsbG9jKDYpOworICAgICAgICBpZiAodC0+bG9jYWwgPT0gTlVMTCkgeworICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG1lbWNweSh0LT5sb2NhbCwgKHVfY2hhciAqKSAmIChhZGRyLT5zaW5fYWRkci5zX2FkZHIpLCA0KTsKKyAgICAgICAgdC0+bG9jYWxbNF0gPSAoaHRvbnMoYWRkci0+c2luX3BvcnQpICYgMHhmZjAwKSA+PiA4OworICAgICAgICB0LT5sb2NhbFs1XSA9IChodG9ucyhhZGRyLT5zaW5fcG9ydCkgJiAweDAwZmYpID4+IDA7CisgICAgICAgIHQtPmxvY2FsX2xlbmd0aCA9IDY7CisKKyNpZiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCisgICAgICAgIHsgCisgICAgICAgICAgICBpbnQgc29ja29wdCA9IDE7CisgICAgICAgICAgICBpZiAoc2V0c29ja29wdCh0LT5zb2NrLCBTT0xfSVAsIElQX1BLVElORk8sICZzb2Nrb3B0LCBzaXplb2Ygc29ja29wdCkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJjb3VsZG4ndCBzZXQgSVBfUEtUSU5GTzogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSkpOworICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJzZXQgSVBfUEtUSU5GT1xuIikpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcmMgPSBiaW5kKHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgYWRkciwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKTsKKyAgICAgICAgaWYgKHJjICE9IDApIHsKKyAgICAgICAgICAgIG5ldHNubXBfZHRsc3VkcF9jbG9zZSh0KTsKKyAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB0LT5kYXRhID0gTlVMTDsKKyAgICAgICAgdC0+ZGF0YV9sZW5ndGggPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFRoaXMgaXMgYSBjbGllbnQgc2Vzc2lvbi4gIElmIHdlJ3ZlIGJlZW4gZ2l2ZW4gYQorICAgICAgICAgKiBjbGllbnQgYWRkcmVzcyB0byBzZW5kIGZyb20sIHRoZW4gYmluZCB0byB0aGF0LgorICAgICAgICAgKiBPdGhlcndpc2UgdGhlIHNlbmQgd2lsbCB1c2UgInNvbWV0aGluZyBzZW5zaWJsZSIuCisgICAgICAgICAqLworICAgICAgICBjbGllbnRfc29ja2V0ID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9DTElFTlRfQUREUik7CisgICAgICAgIGlmIChjbGllbnRfc29ja2V0KSB7CisgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gY2xpZW50X2FkZHI7CisgICAgICAgICAgICBuZXRzbm1wX3NvY2thZGRyX2luMigmY2xpZW50X2FkZHIsIGNsaWVudF9zb2NrZXQsIE5VTEwpOworICAgICAgICAgICAgYWRkcl9wYWlyLmxvY2FsX2FkZHIgPSBjbGllbnRfYWRkci5zaW5fYWRkcjsKKyAgICAgICAgICAgIGNsaWVudF9hZGRyLnNpbl9wb3J0ID0gMDsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgImJpbmRpbmcgc29ja2V0OiAlZFxuIiwgdC0+c29jaykpOworICAgICAgICAgICAgcmMgPSBiaW5kKHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmY2xpZW50X2FkZHIsCisgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyKSk7CisgICAgICAgICAgICBpZiAoIHJjICE9IDAgKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAiZmFpbGVkIHRvIGJpbmQgZm9yIGNsaWVudGFkZHI6ICVkICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX2R0bHN1ZHBfY2xvc2UodCk7CisgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN0ciA9IG5ldHNubXBfdWRwX2ZtdGFkZHIoTlVMTCwgKHZvaWQgKikmYWRkcl9wYWlyLAorICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF9hZGRyX3BhaXIpKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAiY2xpZW50IG9wZW4gJXNcbiIsIHN0cikpOworICAgICAgICBmcmVlKHN0cik7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogU2F2ZSB0aGUgKHJlbW90ZSkgYWRkcmVzcyBpbiB0aGUKKyAgICAgICAgICogdHJhbnNwb3J0LXNwZWNpZmljIGRhdGEgcG9pbnRlciBmb3IgbGF0ZXIgdXNlIGJ5IG5ldHNubXBfZHRsc3VkcF9zZW5kLgorICAgICAgICAgKi8KKworICAgICAgICB0LT5kYXRhID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2FkZHJfcGFpcik7CisgICAgICAgIHQtPnJlbW90ZSA9ICh1X2NoYXIgKiltYWxsb2MoNik7CisgICAgICAgIGlmICh0LT5kYXRhID09IE5VTEwgfHwgdC0+cmVtb3RlID09IE5VTEwpIHsKKyAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkodC0+cmVtb3RlLCAodV9jaGFyICopICYgKGFkZHItPnNpbl9hZGRyLnNfYWRkciksIDQpOworICAgICAgICB0LT5yZW1vdGVbNF0gPSAoaHRvbnMoYWRkci0+c2luX3BvcnQpICYgMHhmZjAwKSA+PiA4OworICAgICAgICB0LT5yZW1vdGVbNV0gPSAoaHRvbnMoYWRkci0+c2luX3BvcnQpICYgMHgwMGZmKSA+PiAwOworICAgICAgICB0LT5yZW1vdGVfbGVuZ3RoID0gNjsKKyAgICAgICAgbWVtY3B5KHQtPmRhdGEsICZhZGRyX3BhaXIsIHNpemVvZihuZXRzbm1wX2FkZHJfcGFpcikpOworICAgICAgICB0LT5kYXRhX2xlbmd0aCA9IHNpemVvZihuZXRzbm1wX2FkZHJfcGFpcik7CisKKyAgICAgICAgLyogZHRscyBuZWVkcyB0byBiaW5kIHRoZSBzb2NrZXQgZm9yIFNTTF93cml0ZSB0byB3b3JrICovCisgICAgICAgIGlmIChjb25uZWN0KHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgYWRkciwgc2l6ZW9mKCphZGRyKSkgPT0gLTEpCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZHRsczogZmFpbGVkIHRvIGNvbm5lY3RcbiIpOworCisgICAgfQorCisgICAgLyoKKyAgICAgKiAxNi1iaXQgbGVuZ3RoIGZpZWxkLCA4IGJ5dGUgRFRMUyBoZWFkZXIsIDIwIGJ5dGUgSVB2NCBoZWFkZXIgIAorICAgICAqLworCisgICAgdC0+bXNnTWF4U2l6ZSA9IDB4ZmZmZiAtIDggLSAyMDsKKyAgICB0LT5mX3JlY3YgICAgID0gbmV0c25tcF9kdGxzdWRwX3JlY3Y7CisgICAgdC0+Zl9zZW5kICAgICA9IG5ldHNubXBfZHRsc3VkcF9zZW5kOworICAgIHQtPmZfY2xvc2UgICAgPSBuZXRzbm1wX2R0bHN1ZHBfY2xvc2U7CisgICAgdC0+Zl9hY2NlcHQgICA9IE5VTEw7CisgICAgdC0+Zl9mbXRhZGRyICA9IG5ldHNubXBfdWRwX2ZtdGFkZHI7CisgICAgdC0+ZmxhZ3MgPSBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX1RVTk5FTEVEOworCisgICAgcmV0dXJuIHQ7Cit9CisKKwordm9pZAorbmV0c25tcF9kdGxzdWRwX2FnZW50X2NvbmZpZ190b2tlbnNfcmVnaXN0ZXIodm9pZCkKK3sKK30KKworCisKKworbmV0c25tcF90cmFuc3BvcnQgKgorbmV0c25tcF9kdGxzdWRwX2NyZWF0ZV90c3RyaW5nKGNvbnN0IGNoYXIgKnN0ciwgaW50IGxvY2FsLAorCQkJICAgY29uc3QgY2hhciAqZGVmYXVsdF90YXJnZXQpCit7CisgICAgc3RydWN0IHNvY2thZGRyX2luIGFkZHI7CisKKyAgICBpZiAobmV0c25tcF9zb2NrYWRkcl9pbjIoJmFkZHIsIHN0ciwgZGVmYXVsdF90YXJnZXQpKSB7CisgICAgICAgIHJldHVybiBuZXRzbm1wX2R0bHN1ZHBfdHJhbnNwb3J0KCZhZGRyLCBsb2NhbCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCisKK25ldHNubXBfdHJhbnNwb3J0ICoKK25ldHNubXBfZHRsc3VkcF9jcmVhdGVfb3N0cmluZyhjb25zdCB1X2NoYXIgKiBvLCBzaXplX3Qgb19sZW4sIGludCBsb2NhbCkKK3sKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKKworICAgIGlmIChvX2xlbiA9PSA2KSB7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IHBvcnR0bXAgPSAob1s0XSA8PCA4KSArIG9bNV07CisgICAgICAgIGFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICAgIG1lbWNweSgodV9jaGFyICopICYgKGFkZHIuc2luX2FkZHIuc19hZGRyKSwgbywgNCk7CisgICAgICAgIGFkZHIuc2luX3BvcnQgPSBodG9ucyhwb3J0dG1wKTsKKyAgICAgICAgcmV0dXJuIG5ldHNubXBfZHRsc3VkcF90cmFuc3BvcnQoJmFkZHIsIGxvY2FsKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNkZWZpbmUgTE9HQU5ERElFKG1zZykgeyBzbm1wX2xvZyhMT0dfRVJSLCAiJXNcbiIsIG1zZyk7IHJldHVybiAwOyB9CisKK3N0YXRpYyBpbnQgaGF2ZV9kb25lX2luaXQgPSAwOworCitzdGF0aWMgaW50CitkdGxzdWRwX2Jvb3RzdHJhcChpbnQgbWFqb3JpZCwgaW50IG1pbm9yaWQsIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKSB7CisgICAgY29uc3QgY2hhciAqY2VydGZpbGU7CisgICAgRVZQX1BLRVkgKmtleSA9IE5VTEw7CisgICAgWDUwOSAqY2VydCA9IE5VTEw7CisgICAgQklPICprZXliaW8gPSBOVUxMOworCisgICAgLyogZG9uJ3QgZG8gdGhpcyBtb3JlIHRoYW4gb25jZSAqLworICAgIGlmIChoYXZlX2RvbmVfaW5pdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaGF2ZV9kb25lX2luaXQgPSAxOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogU2V0IHVwIHRoZSBjbGllbnQgY29udGV4dAorICAgICAqLworICAgIGNsaWVudF9jdHggPSBTU0xfQ1RYX25ldyhEVExTdjFfY2xpZW50X21ldGhvZCgpKTsKKyAgICBpZiAoIWNsaWVudF9jdHgpIHsKKyAgICAgICAgTE9HQU5ERElFKCJjYW4ndCBjcmVhdGUgYSBuZXcgY29udGV4dCIpOworICAgIH0KKyAgICBTU0xfQ1RYX3NldF9yZWFkX2FoZWFkIChjbGllbnRfY3R4LCAxKTsgLyogUmVxdWlyZWQgZm9yIERUTFMgKi8KKyAgICAgICAgCisgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGNsaWVudF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgIFNTTF9WRVJJRllfUEVFUnwKKyAgICAgICAgICAgICAgICAgICAgICAgU1NMX1ZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVHwKKyAgICAgICAgICAgICAgICAgICAgICAgU1NMX1ZFUklGWV9DTElFTlRfT05DRSwKKyAgICAgICAgICAgICAgICAgICAgICAgJnZlcmlmeV9jYWxsYmFjayk7CisKKyAgICBrZXliaW8gPSBCSU9fbmV3KEJJT19zX2ZpbGUoKSk7CisgICAgaWYgKCFrZXliaW8pCisgICAgICAgIExPR0FORERJRSAoImVycm9yIGNyZWF0aW5nIGJpbyBmb3IgcmVhZGluZyBwdWJsaWMga2V5Iik7CisKKyAgICBjZXJ0ZmlsZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCKTsKKworICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgInVzaW5nIHB1YmxpYyBrZXk6ICVzXG4iLCBjZXJ0ZmlsZSkpOworICAgIGlmIChCSU9fcmVhZF9maWxlbmFtZShrZXliaW8sIGNlcnRmaWxlKSA8PTApCisgICAgICAgIExPR0FORERJRSAoImVycm9yIHJlYWRpbmcgcHVibGljIGtleSIpOworCisgICAgY2VydCA9IFBFTV9yZWFkX2Jpb19YNTA5X0FVWChrZXliaW8sIE5VTEwsIE5VTEwsIE5VTEwpOworICAgIGlmICghY2VydCkKKyAgICAgICAgTE9HQU5ERElFKCJmYWlsZWQgdG8gbG9hZCBwdWJsaWMga2V5Iik7CisKKyAgICAvKiBYWFg6IG1lbSBsZWFrIG9uIHByZXZpb3VzIGtleWJpbz8gKi8KKworICAgIGNlcnRmaWxlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QUklWKTsKKworICAgIGtleWJpbyA9IEJJT19uZXcoQklPX3NfZmlsZSgpKTsKKyAgICBpZiAoIWtleWJpbykKKyAgICAgICAgTE9HQU5ERElFICgiZXJyb3IgY3JlYXRpbmcgYmlvIGZvciByZWFkaW5nIHByaXZhdGUga2V5Iik7CisKKyAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJ1c2luZyBwcml2YXRlIGtleTogJXNcbiIsIGNlcnRmaWxlKSk7CisgICAgaWYgKCFrZXliaW8gfHwKKyAgICAgICAgQklPX3JlYWRfZmlsZW5hbWUoa2V5YmlvLCBjZXJ0ZmlsZSkgPD0gMCkKKyAgICAgICAgTE9HQU5ERElFICgiZXJyb3IgcmVhZGluZyBwcml2YXRlIGtleSIpOworCisgICAga2V5ID0gUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXkoa2V5YmlvLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAKKyAgICBpZiAoIWtleSkKKyAgICAgICAgTE9HQU5ERElFKCJmYWlsZWQgdG8gbG9hZCBwcml2YXRlIGtleSIpOworCisKKyAgICBpZiAoU1NMX0NUWF91c2VfY2VydGlmaWNhdGUoY2xpZW50X2N0eCwgY2VydCkgPD0gMCkKKyAgICAgICAgTE9HQU5ERElFKCJmYWlsZWQgdG8gc2V0IHRoZSBjZXJ0aWZpY2F0ZSB0byB1c2UiKTsKKworICAgIGlmIChTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5KGNsaWVudF9jdHgsIGtleSkgPD0gMCkKKyAgICAgICAgTE9HQU5ERElFKCJmYWlsZWQgdG8gc2V0IHRoZSBwcml2YXRlIGtleSB0byB1c2UiKTsKKworICAgIGlmICghU1NMX0NUWF9jaGVja19wcml2YXRlX2tleShjbGllbnRfY3R4KSkKKyAgICAgICAgTE9HQU5ERElFKCJwdWJsaWMgYW5kIHByaXZhdGUga2V5cyBpbmNvbXBhdGlibGUiKTsKKyAgICAKKworICAgIGNlcnRmaWxlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9DRVJUUyk7CisKKyAgICAvKiBYWFg6IGFsc28gbmVlZCB0byBtYXRjaCBpbmRpdmlkdWFsIGNlcnQgdG8gaW5kaXYuIGhvc3QgKi8KKworICAgIGlmKCEgU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2xpZW50X2N0eCwgY2VydGZpbGUsIE5VTEwpKSB7CisgICAgICAgIExPR0FORERJRSgiZmFpbGVkIHRvIGxvYWQgdHJ1c3RzdG9yZSIpOworICAgICAgICAvKiBIYW5kbGUgZmFpbGVkIGxvYWQgaGVyZSAqLworICAgIH0KKworICAgIGlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY2xpZW50X2N0eCkpIHsKKyAgICAgICAgTE9HQU5ERElFICgiZmFpbGVkIHRvIHNldCBkZWZhdWx0IHZlcmlmeSBwYXRoIik7CisgICAgfQorCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogU2V0IHVwIHRoZSBzZXJ2ZXIgY29udGV4dAorICAgICAqLworICAgIC8qIHNldHRpbmcgdXAgZm9yIHNzbCAqLworICAgIHNlcnZlcl9jdHggPSBTU0xfQ1RYX25ldyhEVExTdjFfc2VydmVyX21ldGhvZCgpKTsKKyAgICBpZiAoIXNlcnZlcl9jdHgpIHsKKyAgICAgICAgTE9HQU5ERElFKCJjYW4ndCBjcmVhdGUgYSBuZXcgY29udGV4dCIpOworICAgIH0KKworICAgIGNlcnRmaWxlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIpOworCisgICAgaWYgKFNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2ZpbGUoc2VydmVyX2N0eCwgY2VydGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX0ZJTEVUWVBFX1BFTSkgPCAxKSB7CisgICAgICAgIExPR0FORERJRSgiZmFpbGQgdG8gbG9hZCBjZXJ0Iik7CisgICAgfQorICAgIAorICAgIGNlcnRmaWxlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QUklWKTsKKworICAgIGlmIChTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUoc2VydmVyX2N0eCwgY2VydGZpbGUsIFNTTF9GSUxFVFlQRV9QRU0pIDwgMSkgeworICAgICAgICBMT0dBTkRESUUoImZhaWxkIHRvIGxvYWQga2V5Iik7CisgICAgfQorCisgICAgU1NMX0NUWF9zZXRfcmVhZF9haGVhZChzZXJ2ZXJfY3R4LCAxKTsKKworCisgICAgY2VydGZpbGUgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX0NFUlRTKTsKKyAgICBpZighIFNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zKHNlcnZlcl9jdHgsIGNlcnRmaWxlLCBOVUxMKSkgeworICAgICAgICBMT0dBTkRESUUoImZhaWxlZCB0byBsb2FkIHRydXN0c3RvcmUiKTsKKyAgICAgICAgLyogSGFuZGxlIGZhaWxlZCBsb2FkIGhlcmUgKi8KKyAgICB9CisKKyAgICBTU0xfQ1RYX3NldF92ZXJpZnkoc2VydmVyX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgU1NMX1ZFUklGWV9QRUVSfAorICAgICAgICAgICAgICAgICAgICAgICBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUfAorICAgICAgICAgICAgICAgICAgICAgICBTU0xfVkVSSUZZX0NMSUVOVF9PTkNFLAorICAgICAgICAgICAgICAgICAgICAgICAmdmVyaWZ5X2NhbGxiYWNrKTsKKworICAgIHJldHVybiAwOworfQorCisKK3ZvaWQKK25ldHNubXBfZHRsc3VkcF9jdG9yKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAicmVnaXN0ZXJpbmcgRFRMUyBjb25zdHJ1Y3RvclxuIikpOworCisgICAgLyogY29uZmlnIHNldHRpbmdzICovCisKKyAgICAvKiBib290c3RyYXAgc3NsIHNpbmNlIHdlJ2xsIG5lZWQgaXQgKi8KKyAgICBuZXRzbm1wX2luaXRfb3BlbnNzbCgpOworCisgICAgLyoKKyAgICAgKiBmb3IgdGhlIGNsaWVudAorICAgICAqLworCisgICAgLyogcGVtIGZpbGUgb2YgdmFsaWQgc2VydmVyIENFUlQgQ0FzICovCisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAiZGVmWDUwOVNlcnZlckNlcnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfQ0VSVFMpOworCisgICAgLyogdGhlIHB1YmxpYyBjbGllbnQgY2VydCB0byBhdXRoZW50aWNhdGUgd2l0aCAqLworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgImRlZlg1MDlDbGllbnRQdWIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QVUIpOworCisgICAgLyogdGhlIHByaXZhdGUgY2xpZW50IGNlcnQgdG8gYXV0aGVudGljYXRlIHdpdGggKi8KKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJkZWZYNTA5Q2xpZW50UHJpdiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX1BSSVYpOworCisgICAgLyoKKyAgICAgKiBmb3IgdGhlIHNlcnZlcgorICAgICAqLworCisgICAgLyogVGhlIGxpc3Qgb2YgdmFsaWQgY2xpZW50IGtleXMgdG8gYWNjZXB0IChvciBDQXMgSSB0aGluaykgKi8KKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJkZWZYNTA5Q2xpZW50Q2VydHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9DRVJUUyk7CisKKyAgICAvKiBUaGUgWDUwOSBzZXJ2ZXIga2V5IHRvIHVzZSAqLworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgImRlZlg1MDlTZXJ2ZXJQdWIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIpOworCisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAiZGVmWDUwOVNlcnZlclByaXYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QUklWKTsKKworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCAic25tcCIsICJBbGxvd1NlbGZTaWduZWRYNTA5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQUxMT1dfU0VMRl9TSUdORUQpOworCisgICAgLyoKKyAgICAgKiByZWdpc3RlciBvdXIgYm9vdC1zdHJhcHBpbmcgbmVlZHMKKyAgICAgKi8KKyAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKKwkJCSAgIFNOTVBfQ0FMTEJBQ0tfUE9TVF9SRUFEX0NPTkZJRywKKwkJCSAgIGR0bHN1ZHBfYm9vdHN0cmFwLCBOVUxMKTsKKworICAgIGR0bHN1ZHBEb21haW4ubmFtZSA9IG5ldHNubXBEVExTVURQRG9tYWluOworICAgIGR0bHN1ZHBEb21haW4ubmFtZV9sZW5ndGggPSBuZXRzbm1wRFRMU1VEUERvbWFpbl9sZW47CisgICAgZHRsc3VkcERvbWFpbi5wcmVmaXggPSAoY29uc3QgY2hhcioqKWNhbGxvYygyLCBzaXplb2YoY2hhciAqKSk7CisgICAgZHRsc3VkcERvbWFpbi5wcmVmaXhbMF0gPSAiZHRsc3VkcCI7CisKKyAgICBkdGxzdWRwRG9tYWluLmZfY3JlYXRlX2Zyb21fdHN0cmluZyAgICAgPSBOVUxMOworICAgIGR0bHN1ZHBEb21haW4uZl9jcmVhdGVfZnJvbV90c3RyaW5nX25ldyA9IG5ldHNubXBfZHRsc3VkcF9jcmVhdGVfdHN0cmluZzsKKyAgICBkdGxzdWRwRG9tYWluLmZfY3JlYXRlX2Zyb21fb3N0cmluZyAgICAgPSBuZXRzbm1wX2R0bHN1ZHBfY3JlYXRlX29zdHJpbmc7CisKKyAgICBuZXRzbm1wX3Rkb21haW5fcmVnaXN0ZXIoJmR0bHN1ZHBEb21haW4pOworfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wU1NIRG9tYWluLmMgYi9zbm1wbGliL3NubXBTU0hEb21haW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNThjMmEzCi0tLSAvZGV2L251bGwKKysrIGIvc25tcGxpYi9zbm1wU1NIRG9tYWluLmMKQEAgLTAsMCArMSw5NjcgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKworI2luY2x1ZGUgPGxpYnNzaDIuaD4KKyNpbmNsdWRlIDxsaWJzc2gyX3NmdHAuaD4KKworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RSSU5HX0gKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisjaWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19VTl9ICisjaW5jbHVkZSA8c3lzL3VuLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfQVJQQV9JTkVUX0gKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfRkNOVExfSAorI2luY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYKKworI2lmIEhBVkVfV0lOU09DS19ICisjaW5jbHVkZSA8d2luc29jazIuaD4KKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2VuZGlmCisKKyNpZiBIQVZFX0RNQUxMT0NfSAorI2luY2x1ZGUgPGRtYWxsb2MuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHB3ZC5oPgorCisjaWZuZGVmIE1BWFBBVEhMRU4KKyN3YXJuIG5vIHN5c3RlbSBtYXggcGF0aCBsZW5ndGggZGV0ZWN0ZWQKKyNkZWZpbmUgTUFYUEFUSExFTiAyMDQ4CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvb3V0cHV0X2FwaS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNTSERvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaD4KKworI2RlZmluZSBNQVhfTkFNRV9MRU5HVEggMTI3CisKKyNkZWZpbmUgTkVUU05NUF9TU0hUT1NOTVBfVkVSU0lPTjEgICAgICAxCisjZGVmaW5lIE5FVFNOTVBfTUFYX1NTSFRPU05NUF9WRVJTSU9OICAgMQorCisjZGVmaW5lIERFRkFVTFRfU09DS19OQU1FICJzc2hkb21haW5zb2NrZXQiCisKK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfc3NoX2FkZHJfcGFpcl9zIHsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVtb3RlX2FkZHI7CisgICAgc3RydWN0IGluX2FkZHIgbG9jYWxfYWRkcjsKKyAgICBMSUJTU0gyX1NFU1NJT04gKnNlc3Npb247CisgICAgTElCU1NIMl9DSEFOTkVMICpjaGFubmVsOworICAgIGNoYXIgdXNlcm5hbWVbTUFYX05BTUVfTEVOR1RIKzFdOworICAgIHN0cnVjdCBzb2NrYWRkcl91biB1bml4X3NvY2tldF9lbmQ7CisgICAgY2hhciBzb2NrZXRfcGF0aFtNQVhQQVRITEVOXTsKK30gbmV0c25tcF9zc2hfYWRkcl9wYWlyOworCitvaWQgbmV0c25tcF9zbm1wU1NIRG9tYWluW10gPSB7IFRSQU5TUE9SVF9ET01BSU5fU1NIX0lQIH07CitzdGF0aWMgbmV0c25tcF90ZG9tYWluIHNzaERvbWFpbjsKKworY29uc3QgY2hhciAqa2V5ZmlsZTE9Ii9ob21lL2hhcmRha2VyLy5zc2gvaWRfcnNhLnB1YiI7Citjb25zdCBjaGFyICprZXlmaWxlMj0iL2hvbWUvaGFyZGFrZXIvLnNzaC9pZF9yc2EiOworY29uc3QgY2hhciAqdXNlcm5hbWU9ImhhcmRha2VyIjsKKworI2RlZmluZSBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFIDEKKworLyoKKyAqIE5vdCBzdGF0aWMgc2luY2UgaXQgaXMgbmVlZGVkIGhlcmUgYXMgd2VsbCBhcyBpbiBzbm1wVURQRG9tYWluLCBidXQgbm90CisgKiBwdWJsaWMgZWl0aGVyCisgKi8KK2ludAorbmV0c25tcF9zb2NrYWRkcl9pbjIoc3RydWN0IHNvY2thZGRyX2luICphZGRyLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW5wZWVybmFtZSwgY29uc3QgY2hhciAqZGVmYXVsdF90YXJnZXQpOworCisvKgorICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgYWRkcmVzcyBpbiBkYXRhLCBvciBlbHNlIHRoZSAiZmFyIGVuZCIKKyAqIGFkZHJlc3MgaWYgZGF0YSBpcyBOVUxMLiAgCisgKi8KKworc3RhdGljIGNoYXIgKgorbmV0c25tcF9zc2hfZm10YWRkcihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqZGF0YSwgaW50IGxlbikKK3sKKyAgICBuZXRzbm1wX3NzaF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7CisKKyAgICBpZiAoZGF0YSAhPSBOVUxMICYmIGxlbiA9PSBzaXplb2YobmV0c25tcF9zc2hfYWRkcl9wYWlyKSkgeworCWFkZHJfcGFpciA9IChuZXRzbm1wX3NzaF9hZGRyX3BhaXIgKikgZGF0YTsKKyAgICB9IGVsc2UgaWYgKHQgIT0gTlVMTCAmJiB0LT5kYXRhICE9IE5VTEwpIHsKKwlhZGRyX3BhaXIgPSAobmV0c25tcF9zc2hfYWRkcl9wYWlyICopIHQtPmRhdGE7CisgICAgfQorCisgICAgaWYgKGFkZHJfcGFpciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBzdHJkdXAoIlNTSDogdW5rbm93biIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqdG8gPSBOVUxMOworCWNoYXIgdG1wWzY0XTsKKyAgICAgICAgdG8gPSAoc3RydWN0IHNvY2thZGRyX2luICopICYoYWRkcl9wYWlyLT5yZW1vdGVfYWRkcik7CisgICAgICAgIGlmICh0byA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyZHVwKCJTU0g6IHVua25vd24iKTsKKyAgICAgICAgfQorCisgICAgICAgIHNwcmludGYodG1wLCAiU1NIOiBbJXNdOiVoZCIsCisgICAgICAgICAgICAgICAgaW5ldF9udG9hKHRvLT5zaW5fYWRkciksIG50b2hzKHRvLT5zaW5fcG9ydCkpOworICAgICAgICByZXR1cm4gc3RyZHVwKHRtcCk7CisgICAgfQorfQorCisKKworLyoKKyAqIFlvdSBjYW4gd3JpdGUgc29tZXRoaW5nIGludG8gb3BhcXVlIHRoYXQgd2lsbCBzdWJzZXF1ZW50bHkgZ2V0IHBhc3NlZCBiYWNrIAorICogdG8geW91ciBzZW5kIGZ1bmN0aW9uIGlmIHlvdSBsaWtlLiAgRm9yIGluc3RhbmNlLCB5b3UgbWlnaHQgd2FudCB0bworICogcmVtZW1iZXIgd2hlcmUgYSBQRFUgY2FtZSBmcm9tLCBzbyB0aGF0IHlvdSBjYW4gc2VuZCBhIHJlcGx5IHRoZXJlLi4uICAKKyAqLworCitzdGF0aWMgaW50CituZXRzbm1wX3NzaF9yZWN2KG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpidWYsIGludCBzaXplLAorCQkgdm9pZCAqKm9wYXF1ZSwgaW50ICpvbGVuZ3RoKQoreworICAgIGludCByYyA9IC0xOworICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZiA9IE5VTEw7CisgICAgbmV0c25tcF9zc2hfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOworICAgIGludCBpYW1jbGllbnQgPSAwOworCisgICAgREVCVUdNU0dUTCgoInNzaCIsICJhdCB0aGUgdG9wIG9mIHNzaF9yZWN2XG4iKSk7CisgICAgREVCVUdNU0dUTCgoInNzaCIsICJ0PSVwXG4iLCB0KSk7CisgICAgaWYgKHQgIT0gTlVMTCAmJiB0LT5kYXRhICE9IE5VTEwpIHsKKwlhZGRyX3BhaXIgPSAobmV0c25tcF9zc2hfYWRkcl9wYWlyICopIHQtPmRhdGE7CisgICAgfQorCisgICAgREVCVUdNU0dUTCgoInNzaCIsICJhZGRyX3BhaXI9JXBcbiIsIGFkZHJfcGFpcikpOworICAgIGlmICh0ICE9IE5VTEwgJiYgYWRkcl9wYWlyICYmIGFkZHJfcGFpci0+Y2hhbm5lbCkgeworICAgICAgICBERUJVR01TR1RMKCgic3NoIiwgInQ9JXAsIGFkZHJfcGFpcj0lcCwgY2hhbm5lbD0lcFxuIiwKKyAgICAgICAgICAgICAgICAgICAgdCwgYWRkcl9wYWlyLCBhZGRyX3BhaXItPmNoYW5uZWwpKTsKKyAgICAgICAgaWFtY2xpZW50ID0gMTsKKwl3aGlsZSAocmMgPCAwKSB7CisJICAgIHJjID0gbGlic3NoMl9jaGFubmVsX3JlYWQoYWRkcl9wYWlyLT5jaGFubmVsLCBidWYsIHNpemUpOworCSAgICBpZiAocmMgPCAwKSB7ICAvKiBYWFg6IGZyb20gdGNwOyBzc2ggZXF1aXY/OiAgJiYgZXJybm8gIT0gRUlOVFIgKi8KKwkJREVCVUdNU0dUTCgoInNzaCIsICJyZWN2IGZkICVkIGVyciAlZCAoXCIlc1wiKVxuIiwKKwkJCSAgICB0LT5zb2NrLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKSk7CisJCWJyZWFrOworCSAgICB9CisJICAgIERFQlVHTVNHVEwoKCJzc2giLCAicmVjdiBmZCAlZCBnb3QgJWQgYnl0ZXNcbiIsCisJCQl0LT5zb2NrLCByYykpOworCX0KKyAgICB9IGVsc2UgaWYgKHQgIT0gTlVMTCkgeworCisjaWZkZWYgU05NUFNTSERPTUFJTl9VU0VfRVhURVJOQUxfUElQRQorCisgICAgICAgIHNvY2tsZW5fdCAgICAgICB0b2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pOworCisgICAgICAgIGlmICh0ICE9IE5VTEwgJiYgdC0+c29jayA+PSAwKSB7CisgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnRvOworICAgICAgICAgICAgdG8gPSAoc3RydWN0IHNvY2thZGRyICopIFNOTVBfTUFMTE9DX1NUUlVDVChzb2NrYWRkcl91bik7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSB0bykgeworICAgICAgICAgICAgICAgICpvcGFxdWUgPSBOVUxMOworICAgICAgICAgICAgICAgICpvbGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmKGdldHNvY2tuYW1lKHQtPnNvY2ssIHRvLCAmdG9sZW4pICE9IDApeworICAgICAgICAgICAgICAgIGZyZWUodG8pOworICAgICAgICAgICAgICAgICpvcGFxdWUgPSBOVUxMOworICAgICAgICAgICAgICAgICpvbGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAoYWRkcl9wYWlyLT51c2VybmFtZVswXSA9PSAnXDAnKSB7CisgICAgICAgICAgICAgICAgLyogd2UgZG9uJ3QgaGF2ZSBhIHVzZXJuYW1lIHlldCwgc28gdGhpcyBpcyB0aGUgZmlyc3QgbWVzc2FnZSAqLworICAgICAgICAgICAgICAgIHN0cnVjdCB1Y3JlZCAqcmVtb3RldXNlcjsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgbXNnaGRyIG1zZzsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgaW92ZWMgaW92WzFdOworICAgICAgICAgICAgICAgIGNoYXIgY21zZ1tDTVNHX1NQQUNFKHNpemVvZihyZW1vdGV1c2VyKSkrNDA5Nl07CisgICAgICAgICAgICAgICAgc3RydWN0IGNtc2doZHIgKmNtc2dwdHI7CisgICAgICAgICAgICAgICAgdV9jaGFyICpjaGFyYnVmICA9IGJ1ZjsKKworICAgICAgICAgICAgICAgIGlvdlswXS5pb3ZfYmFzZSA9IGJ1ZjsKKyAgICAgICAgICAgICAgICBpb3ZbMF0uaW92X2xlbiA9IHNpemU7CisKKyAgICAgICAgICAgICAgICBtZW1zZXQoJm1zZywgMCwgc2l6ZW9mIG1zZyk7CisgICAgICAgICAgICAgICAgbXNnLm1zZ19pb3YgPSBpb3Y7CisgICAgICAgICAgICAgICAgbXNnLm1zZ19pb3ZsZW4gPSAxOworICAgICAgICAgICAgICAgIG1zZy5tc2dfY29udHJvbCA9ICZjbXNnOworICAgICAgICAgICAgICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IHNpemVvZihjbXNnKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByYyA9IHJlY3Ztc2codC0+c29jaywgJm1zZywgTVNHX0RPTlRXQUlUKTsgLyogdXNlIERPTlRXQUlUPyAqLworICAgICAgICAgICAgICAgIGlmIChyYyA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByYzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiB3ZSBoYXZlbid0IHJlY2VpdmVkIHRoZSBzdGFydGluZyBpbmZvICovCisgICAgICAgICAgICAgICAgaWYgKCh1X2NoYXIpIGNoYXJidWZbMF0gPiBORVRTTk1QX1NTSFRPU05NUF9WRVJTSU9OMSkgeworICAgICAgICAgICAgICAgICAgICAvKiB1bnN1cHBvcnRlZCBjb25uZWN0aW9uIHZlcnNpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInJlY2VpdmVkIHVuc3VwcG9ydGVkIHNzaHRvc25tcCB2ZXJzaW9uOiAlZFxuIiwgY2hhcmJ1ZlswXSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic3NoIiwgInJlY2VpdmVkIGZpcnN0IG1zZyBvdmVyIFNTSDsgaW50ZXJuYWwgU1NIIHByb3RvY29sIHZlcnNpb24gJWRcbiIsIGNoYXJidWZbMF0pKTsKKworICAgICAgICAgICAgICAgIGZvciAoY21zZ3B0ciA9IENNU0dfRklSU1RIRFIoJm1zZyk7IGNtc2dwdHIgIT0gTlVMTDsgY21zZ3B0ciA9IENNU0dfTlhUSERSKCZtc2csIGNtc2dwdHIpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbXNncHRyLT5jbXNnX2xldmVsID09IFNPTF9TT0NLRVQgJiYgY21zZ3B0ci0+Y21zZ190eXBlID09IFNDTV9DUkVERU5USUFMUykgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVjZWl2ZWQgY3JlZGVudGlhbCBpbmZvICovCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICp1c2VyX3B3OworCisgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGV1c2VyID0gKHN0cnVjdCB1Y3JlZCAqKSBDTVNHX0RBVEEoY21zZ3B0cik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodXNlcl9wdyA9IGdldHB3dWlkKHJlbW90ZXVzZXItPnVpZCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTm8gdXNlciBmb3VuZCBmb3IgdWlkICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGV1c2VyLT51aWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJsZW4odXNlcl9wdy0+cHdfbmFtZSkgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihhZGRyX3BhaXItPnVzZXJuYW1lKS0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXNlciBuYW1lICclcycgdG9vIGxvbmcgZm9yIHNubXBcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9wdy0+cHdfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgc3RybGNweShhZGRyX3BhaXItPnVzZXJuYW1lLCB1c2VyX3B3LT5wd19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoYWRkcl9wYWlyLT51c2VybmFtZSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCAiU2V0dGluZyB1c2VyIG5hbWUgdG8gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfcGFpci0+dXNlcm5hbWUpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYWRkcl9wYWlyLT51c2VybmFtZVswXSA9PSAnXDAnKSB7CisgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZXh0cmFjdCB1c2VybmFtZSBmcm9tIHNzaGQgY29ubmVjdGVkIHVuaXggc29ja2V0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChyYyA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHRoZSBvbmx5IHBhY2tldCB3ZSByZWNlaXZlZCB3YXMgdGhlIHN0YXJ0aW5nIG9uZSAqLworICAgICAgICAgICAgICAgICAgICB0LT5mbGFncyB8PSBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0VNUFRZX1BLVDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmMgLT0gMTsKKyAgICAgICAgICAgICAgICBtZW1tb3ZlKGNoYXJidWYsICZjaGFyYnVmWzFdLCByYyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdoaWxlIChyYyA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmMgPSByZWN2ZnJvbSh0LT5zb2NrLCBidWYsIHNpemUsIDAsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic3NoIiwgInJlY3YgZmQgJWQgZXJyICVkIChcIiVzXCIpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC0+c29jaywgZXJybm8sIHN0cmVycm9yKGVycm5vKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJjOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICpvcGFxdWUgPSAodm9pZCopdG87CisgICAgICAgICAgICAgICAgICAgICpvbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl91bik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsICJyZWN2IGZkICVkIGdvdCAlZCBieXRlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHQtPnNvY2ssIHJjKSk7CisgICAgICAgIH0KKyAgICAgICAgCisjZWxzZSAvKiB3ZSdyZSBjYWxsZWQgZGlyZWN0bHkgYnkgc3NoZCBhbmQgdXNlIHN0ZGluL291dCAqLworCisgICAgICAgIHN0cnVjdCBwYXNzd2QgKnVzZXJfcHc7CisKKyAgICAgICAgaWFtY2xpZW50ID0gMDsKKyAgICAgICAgLyogd2UncmUgb24gdGhlIHNlcnZlciBzaWRlIGFuZCBzaG91bGQgcmVhZCBmcm9tIHN0ZGluICovCisgICAgICAgIHdoaWxlIChyYyA8IDApIHsKKyAgICAgICAgICAgIHJjID0gcmVhZChTVERJTl9GSUxFTk8sIGJ1Ziwgc2l6ZSk7CisgICAgICAgICAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiByZWFkIG9uIHN0ZGluIGZhaWxlZDogJWQgKFwiJXNcIilcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8sIHN0cmVycm9yKGVycm5vKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJjID09IDApIHsKKyAgICAgICAgICAgICAgICAvKiAwIGlucHV0IGlzIHByb2JhYmx5IGJhZCBzaW5jZSB3ZSBzZWxlY3RlZCBvbiBpdCAqLworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCAiZ290IGEgMCByZWFkIG9uIHN0ZGluXG4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsICJyZWFkIG9uIHN0ZGluIGdvdCAlZCBieXRlc1xuIiwgcmMpKTsKKyAgICAgICAgfQorCisvKiBYWFg6IG5lZWQgdG8gY2hlY2sgdGhlIHVzZXJuYW1lLCBidXQgYWRkcl9wYWlyIGRvZXNuJ3QgZXhpc3QhICovCisgICAgICAgIC8qCisgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCAiY3VycmVudCB1c2VybmFtZT0lc1xuIiwgYykpOworICAgICAgICBpZiAoYWRkcl9wYWlyLT51c2VybmFtZVswXSA9PSAnXDAnKSB7CisgICAgICAgICAgICBpZiAoKHVzZXJfcHcgPSBnZXRwd3VpZChnZXR1aWQoKSkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTm8gdXNlciBmb3VuZCBmb3IgdWlkICVkXG4iLCBnZXR1aWQoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cmxlbih1c2VyX3B3LT5wd19uYW1lKSA+IHNpemVvZihhZGRyX3BhaXItPnVzZXJuYW1lKS0xKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlVzZXIgbmFtZSAnJXMnIHRvbyBsb25nIGZvciBzbm1wXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfcHctPnB3X25hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cmxjcHkoYWRkcl9wYWlyLT51c2VybmFtZSwgdXNlcl9wdy0+cHdfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGFkZHJfcGFpci0+dXNlcm5hbWUpKTsKKyAgICAgICAgfQorICAgICAgICAqLworCisjZW5kaWYgLyogISBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFICovCisgICAgfQorCisgICAgLyogY3JlYXRlIGEgdG1TdGF0ZVJlZiBjYWNoZSAqLworICAgIHRtU3RhdGVSZWYgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSk7CisKKyAgICAvKiBzZWNzaGVsbCBkb2N1bWVudCBzYXlzIHdlcmUgYWx3YXlzIGF1dGhwcml2LCBldmVuIGlmIE5VTEwgYWxnb3JpdGhtcyAqLworICAgIC8qIHVnaCEgKi8KKyAgICAvKiBYWFg6IGRpc2FsbG93IE5VTEwgaW4gb3VyIGltcGxlbWVudGF0aW9ucyAqLworICAgIHRtU3RhdGVSZWYtPnRyYW5zcG9ydFNlY3VyaXR5TGV2ZWwgPSBTTk1QX1NFQ19MRVZFTF9BVVRIUFJJVjsKKworICAgIC8qIFhYWDogZmlndXJlIG91dCBob3cgdG8gZ2V0IHRoZSBzcGVjaWZpZWQgbG9jYWwgc2VjbmFtZSBmcm9tIHRoZSBzZXNzaW9uICovCisgICAgaWYgKGlhbWNsaWVudCAmJiAwKSB7CisgICAgICAgIC8qIFhYWDogd2UncmUgb24gdGhlIGNsaWVudDsgd2Ugc2hvdWxkIGhhdmUgbmFtZWQgdGhlCisgICAgICAgICAgIGNvbm5lY3Rpb24gb3Vyc2VsdmVzLi4uICBwdWxsIHRoaXMgZnJvbSBzZXNzaW9uIHNvbWVob3c/ICovCisgICAgICAgIHN0cmxjcHkodG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lLCBhZGRyX3BhaXItPnVzZXJuYW1lLAorICAgICAgICAgICAgICAgIHNpemVvZih0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUpKTsKKyAgICB9IGVsc2UgeworI2lmZGVmIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUKKyAgICAgICAgc3RybGNweSh0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUsIGFkZHJfcGFpci0+dXNlcm5hbWUsCisgICAgICAgICAgICAgICAgc2l6ZW9mKHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSkpOworI2Vsc2UgLyogd2UncmUgY2FsbGVkIGRpcmVjdGx5IGJ5IHNzaGQgYW5kIHVzZSBzdGRpbi9vdXQgKi8KKyAgICAgICAgLyogd2UncmUgb24gdGhlIHNlcnZlci4uLiAqLworICAgICAgICAvKiBYWFg6IHRoaXMgZG9lc24ndCBjb3B5IHByb3Blcmx5IGFuZCBjYW4gZ2V0IHBvaW50ZXIKKyAgICAgICAgICAgcmVmZXJlbmNlIGlzc3VlcyAqLworICAgICAgICBpZiAoc3RybGVuKGdldGVudigiVVNFUiIpKSA+IDEyNykgeworICAgICAgICAgICAgLyogcnVoIHJvaCAqLworICAgICAgICAgICAgLyogWFhYOiBjbGVhbiB1cCAqLworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFhYWDogZGV0ZWN0IGFuZCB0aHJvdyBvdXQgb3ZlcmZsb3cgc2VjbmFtZSBzaXplcyByYXRoZXIKKyAgICAgICAgICAgdGhhbiB0cnVuY2F0aW5nLiAqLworICAgICAgICBzdHJsY3B5KHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSwgZ2V0ZW52KCJVU0VSIiksCisgICAgICAgICAgICAgICAgc2l6ZW9mKHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSkpOworI2VuZGlmIC8qICEgU05NUFNTSERPTUFJTl9VU0VfRVhURVJOQUxfUElQRSAqLworICAgIH0KKyAgICB0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWVbc2l6ZW9mKHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSktMV0gPSAnXDAnOworICAgIHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZUxlbiA9IHN0cmxlbih0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUpOworICAgICpvcGFxdWUgPSB0bVN0YXRlUmVmOworICAgICpvbGVuZ3RoID0gc2l6ZW9mKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKKworCitzdGF0aWMgaW50CituZXRzbm1wX3NzaF9zZW5kKG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpidWYsIGludCBzaXplLAorCQkgdm9pZCAqKm9wYXF1ZSwgaW50ICpvbGVuZ3RoKQoreworICAgIGludCByYyA9IC0xOworCisgICAgbmV0c25tcF9zc2hfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOworICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZiA9IE5VTEw7CisKKyAgICBpZiAodCAhPSBOVUxMICYmIHQtPmRhdGEgIT0gTlVMTCkgeworCWFkZHJfcGFpciA9IChuZXRzbm1wX3NzaF9hZGRyX3BhaXIgKikgdC0+ZGF0YTsKKyAgICB9CisKKyAgICBpZiAob3BhcXVlICE9IE5VTEwgJiYgKm9wYXF1ZSAhPSBOVUxMICYmCisgICAgICAgICpvbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UpKSB7CisgICAgICAgIHRtU3RhdGVSZWYgPSAobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICopICpvcGFxdWU7CisgICAgfQorCisgICAgaWYgKCF0bVN0YXRlUmVmKSB7CisgICAgICAgIC8qIHRoaXMgaXMgbm93IGFuIGVycm9yIGFjY29yZGluZyB0byBteSBtZW1vcnkgaW4gdGhlIHJlY2VudCBkcmFmdCAqLworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibmV0c25tcF9zc2hfc2VuZCB3YXNuJ3QgcGFzc2VkIGEgdmFsaWQgdG1TdGF0ZVJlZmVyZW5jZVxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoTlVMTCAhPSB0ICYmIE5VTEwgIT0gYWRkcl9wYWlyICYmIE5VTEwgIT0gYWRkcl9wYWlyLT5jaGFubmVsKSB7CisgICAgICAgIGlmIChhZGRyX3BhaXItPnVzZXJuYW1lWzBdID09ICdcMCcpIHsKKyAgICAgICAgICAgIHN0cmxjcHkoYWRkcl9wYWlyLT51c2VybmFtZSwgdG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YoYWRkcl9wYWlyLT51c2VybmFtZSkpOworICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChhZGRyX3BhaXItPnVzZXJuYW1lLCB0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUpICE9IDAgfHwKKyAgICAgICAgICAgICAgICAgICBzdHJsZW4oYWRkcl9wYWlyLT51c2VybmFtZSkgIT0gdG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lTGVuKSB7CisgICAgICAgICAgICAvKiBlcnJvciEgIHRoZXkgbXVzdCBhbHdheXMgbWF0Y2ggKi8KKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJuZXRzbm1wX3NzaF9zZW5kIHdhcyBwYXNzZWQgYSB0bVN0YXRlUmVmZXJlbmNlIHdpdGggYSBzZWN1cml0eU5hbWUgbm90IGVxdWFsIHRvIHByZXZpb3VzIG1lc3NhZ2VzXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCXdoaWxlIChyYyA8IDApIHsKKwkgICAgcmMgPSBsaWJzc2gyX2NoYW5uZWxfd3JpdGUoYWRkcl9wYWlyLT5jaGFubmVsLCBidWYsIHNpemUpOworCSAgICBpZiAocmMgPCAwKSB7IC8qIFhYWDogICYmIGVycm5vICE9IEVJTlRSICovCisJCWJyZWFrOworCSAgICB9CisJfQorICAgIH0gZWxzZSBpZiAodCAhPSBOVUxMKSB7CisjaWZkZWYgU05NUFNTSERPTUFJTl9VU0VfRVhURVJOQUxfUElQRQorCisJd2hpbGUgKHJjIDwgMCkgeworICAgICAgICAgICAgcmMgPSBzZW5kdG8odC0+c29jaywgYnVmLCBzaXplLCAwLCBOVUxMLCAwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHJjIDwgMCAmJiBlcnJubyAhPSBFSU5UUikgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyNlbHNlIC8qIHdlJ3JlIGNhbGxlZCBkaXJlY3RseSBieSBzc2hkIGFuZCB1c2Ugc3RkaW4vb3V0ICovCisgICAgICAgIC8qIG9uIHRoZSBzZXJ2ZXI7IHNlbmQgdG8gc3Rkb3V0ICovCisJd2hpbGUgKHJjIDwgMCkgeworCSAgICByYyA9IHdyaXRlKFNURE9VVF9GSUxFTk8sIGJ1Ziwgc2l6ZSk7CisgICAgICAgICAgICBmZmx1c2goc3Rkb3V0KTsKKwkgICAgaWYgKHJjIDwgMCAmJiBlcnJubyAhPSBFSU5UUikgeyAvKiBYWFg6ICAmJiBlcnJubyAhPSBFSU5UUiAqLworCQlicmVhazsKKwkgICAgfQorCX0KKyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiByYzsKK30KKworCisKK3N0YXRpYyBpbnQKK25ldHNubXBfc3NoX2Nsb3NlKG5ldHNubXBfdHJhbnNwb3J0ICp0KQoreworICAgIGludCByYyA9IC0xOworICAgIG5ldHNubXBfc3NoX2FkZHJfcGFpciAqYWRkcl9wYWlyID0gTlVMTDsKKworICAgIGlmICh0ICE9IE5VTEwgJiYgdC0+ZGF0YSAhPSBOVUxMKSB7CisJYWRkcl9wYWlyID0gKG5ldHNubXBfc3NoX2FkZHJfcGFpciAqKSB0LT5kYXRhOworICAgIH0KKworICAgIGlmICh0ICE9IE5VTEwgJiYgYWRkcl9wYWlyICYmIHQtPnNvY2sgPj0gMCkgeworICAgICAgICBERUJVR01TR1RMKCgic3NoIiwgImNsb3NlIGZkICVkXG4iLCB0LT5zb2NrKSk7CisKKyAgICAgICAgaWYgKGFkZHJfcGFpci0+Y2hhbm5lbCkgeworICAgICAgICAgICAgbGlic3NoMl9jaGFubmVsX2Nsb3NlKGFkZHJfcGFpci0+Y2hhbm5lbCk7CisgICAgICAgICAgICBsaWJzc2gyX2NoYW5uZWxfZnJlZShhZGRyX3BhaXItPmNoYW5uZWwpOworICAgICAgICAgICAgYWRkcl9wYWlyLT5jaGFubmVsID0gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhZGRyX3BhaXItPnNlc3Npb24pIHsKKyAgICAgICAgICAgIGxpYnNzaDJfc2Vzc2lvbl9kaXNjb25uZWN0KGFkZHJfcGFpci0+c2Vzc2lvbiwgIk5vcm1hbCBTaHV0ZG93biIpOworICAgICAgICAgICAgbGlic3NoMl9zZXNzaW9uX2ZyZWUoYWRkcl9wYWlyLT5zZXNzaW9uKTsKKyAgICAgICAgICAgIGFkZHJfcGFpci0+c2Vzc2lvbiA9IE5VTEw7CisgICAgICAgIH0KKworI2lmbmRlZiBIQVZFX0NMT1NFU09DS0VUCisgICAgICAgIHJjID0gY2xvc2UodC0+c29jayk7CisjZWxzZQorICAgICAgICByYyA9IGNsb3Nlc29ja2V0KHQtPnNvY2spOworI2VuZGlmCisgICAgICAgIHQtPnNvY2sgPSAtMTsKKworI2lmZGVmIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUKKworICAgICAgICBjbG9zZSh0LT5zb2NrKTsKKyAgICAgICAgCisgICAgICAgIGlmICghYWRkcl9wYWlyLT5zZXNzaW9uICYmICFhZGRyX3BhaXItPmNoYW5uZWwpIHsKKyAgICAgICAgICAgIC8qIHVuaXggc29ja2V0IGJhc2VkIGNvbm5lY3Rpb24gKi8KKyAgICAgICAgICAgIGNsb3NlKHQtPnNvY2spOworCisgICAgICAgICAgICAvKiBYWFg6IG1ha2UgY29uZmlndXJhYmxlICovCisgICAgICAgICAgICB1bmxpbmsoYWRkcl9wYWlyLT5zb2NrZXRfcGF0aCk7CisgICAgICAgIH0KKworI2Vsc2UgLyogd2UncmUgY2FsbGVkIGRpcmVjdGx5IGJ5IHNzaGQgYW5kIHVzZSBzdGRpbi9vdXQgKi8KKworICAgICAgICAvKiBvbiB0aGUgc2VydmVyOiBjbG9zZSBzdGRpbi9vdXQgKi8KKyAgICAgICAgY2xvc2UoU1RESU5fRklMRU5PKTsKKyAgICAgICAgY2xvc2UoU1RET1VUX0ZJTEVOTyk7CisjZW5kaWYgLyogISBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFICovCisKKyAgICB9IGVsc2UgeworCisjaWZuZGVmIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUKKyAgICAgICAgLyogb24gdGhlIHNlcnZlcjogY2xvc2Ugc3RkaW4vb3V0ICovCisgICAgICAgIGNsb3NlKFNURElOX0ZJTEVOTyk7CisgICAgICAgIGNsb3NlKFNURE9VVF9GSUxFTk8pOworI2VuZGlmIC8qICEgU05NUFNTSERPTUFJTl9VU0VfRVhURVJOQUxfUElQRSAqLworCisgICAgfQorICAgIHJldHVybiByYzsKK30KKworCisKK3N0YXRpYyBpbnQKK25ldHNubXBfc3NoX2FjY2VwdChuZXRzbm1wX3RyYW5zcG9ydCAqdCkKK3sKKyNpZmRlZiBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFCisKKyAgICAvKiBtdWNoIG9mIHRoaXMgaXMgZHVwbGljYXRlZCBmcm9tIHNubXBVbml4RG9tYWluLmMgKi8KKworICAgIG5ldHNubXBfc3NoX2FkZHJfcGFpciAqYWRkcl9wYWlyOyAgICAKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgIG5ld3NvY2sgICA9IC0xOworICAgIHN0cnVjdCBzb2NrYWRkciAgICAgICAqZmFyZW5kICAgID0gTlVMTDsKKyAgICBzb2NrbGVuX3QgICAgICAgICAgICAgIGZhcmVuZGxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pOworCisKKyAgICBpZiAodCAhPSBOVUxMICYmIHQtPnNvY2sgPj0gMCkgeworICAgICAgICBhZGRyX3BhaXIgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfc3NoX2FkZHJfcGFpcik7CisKKyAgICAgICAgaWYgKGFkZHJfcGFpciA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogSW5kaWNhdGUgdGhhdCB0aGUgYWNjZXB0YW5jZSBvZiB0aGlzIHNvY2tldCBmYWlsZWQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCAiYWNjZXB0OiBtYWxsb2MgZmFpbGVkXG4iKSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBmYXJlbmQgPSAoc3RydWN0IHNvY2thZGRyICopICZhZGRyX3BhaXItPnVuaXhfc29ja2V0X2VuZDsKKworICAgICAgICBuZXdzb2NrID0gYWNjZXB0KHQtPnNvY2ssIGZhcmVuZCwgJmZhcmVuZGxlbik7CisKKyAgICAgICAgLyogc2V0IHRoZSBTT19QQVNTQ1JFRCBvcHRpb24gc28gd2UgY2FuIHJlY2VpdmUgdGhlIHJlbW90ZSB1aWQgKi8KKyAgICAgICAgeworICAgICAgICAgICAgaW50IG9uZSA9IDE7CisgICAgICAgICAgICBzZXRzb2Nrb3B0KG5ld3NvY2ssIFNPTF9TT0NLRVQsIFNPX1BBU1NDUkVELCAodm9pZCAqKSAmb25lLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yob25lKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmV3c29jayA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCJhY2NlcHQgZmFpbGVkIHJjICVkIGVycm5vICVkIFwiJXNcIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld3NvY2ssIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKKyAgICAgICAgICAgIGZyZWUoYWRkcl9wYWlyKTsKKyAgICAgICAgICAgIHJldHVybiBuZXdzb2NrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHQtPmRhdGEgIT0gTlVMTCkgeworICAgICAgICAgICAgZnJlZSh0LT5kYXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCAiYWNjZXB0IHN1Y2NlZWRlZCAoZmFyZW5kICVwIGxlbiAlZClcbiIsCisgICAgICAgICAgICAgICAgICAgIGZhcmVuZCwgZmFyZW5kbGVuKSk7CisgICAgICAgIHQtPmRhdGEgPSBhZGRyX3BhaXI7CisgICAgICAgIHQtPmRhdGFfbGVuZ3RoID0gc2l6ZW9mKG5ldHNubXBfc3NoX2FkZHJfcGFpcik7CisgICAgICAgIG5ldHNubXBfc29ja19idWZmZXJfc2V0KG5ld3NvY2ssIFNPX1NOREJVRiwgMSwgMCk7CisgICAgICAgIG5ldHNubXBfc29ja19idWZmZXJfc2V0KG5ld3NvY2ssIFNPX1JDVkJVRiwgMSwgMCk7CisgICAgICAgIHJldHVybiBuZXdzb2NrOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNlbHNlIC8qIHdlJ3JlIGNhbGxlZCBkaXJlY3RseSBieSBzc2hkIGFuZCB1c2Ugc3RkaW4vb3V0ICovCisgICAgLyogd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZzsgc2VydmVyIHNpZGUgdXNlcyBzdGRpbi9vdXQgKi8KKyAgICAvKiBYWFg6IGNoZWNrIHRoYXQgd2UncmUgYW4gc3NoIGNvbm5lY3Rpb24gKi8KKyAgICAKKyAgICByZXR1cm4gU1RESU5fRklMRU5POyAvKiByZXR1cm4gc3RkaW4gKi8KKyNlbmRpZiAvKiAhIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUgKi8KKworfQorCisKKworLyoKKyAqIE9wZW4gYSBTU0gtYmFzZWQgdHJhbnNwb3J0IGZvciBTTk1QLiAgTG9jYWwgaXMgVFJVRSBpZiBhZGRyIGlzIHRoZSBsb2NhbAorICogYWRkcmVzcyB0byBiaW5kIHRvIChpLmUuIHRoaXMgaXMgYSBzZXJ2ZXItdHlwZSBzZXNzaW9uKTsgb3RoZXJ3aXNlIGFkZHIgaXMgCisgKiB0aGUgcmVtb3RlIGFkZHJlc3MgdG8gc2VuZCB0aGluZ3MgdG8uICAKKyAqLworCituZXRzbm1wX3RyYW5zcG9ydCAqCituZXRzbm1wX3NzaF90cmFuc3BvcnQoc3RydWN0IHNvY2thZGRyX2luICphZGRyLCBpbnQgbG9jYWwpCit7CisgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOworICAgIG5ldHNubXBfc3NoX2FkZHJfcGFpciAqYWRkcl9wYWlyID0gTlVMTDsKKyAgICBpbnQgcmMgPSAwOworICAgIGludCBpLCBhdXRoX3B3ID0gMDsKKyAgICBjb25zdCBjaGFyICpmaW5nZXJwcmludDsKKyAgICBjaGFyICp1c2VyYXV0aGxpc3Q7CisgICAgc3RydWN0IHNvY2thZGRyX3VuICp1bmFkZHI7CisgICAgY29uc3QgY2hhciAqc29ja3BhdGggPQorICAgICAgICBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU1NIVE9TTk1QX1NPQ0tFVCk7CisgICAgY2hhciB0bXBzb2NrcGF0aFtNQVhQQVRITEVOXTsKKworICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c2luX2ZhbWlseSAhPSBBRl9JTkVUKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKKyAgICBpZiAodCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBtZW1zZXQodCwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CisKKyAgICB0LT5kb21haW4gPSBuZXRzbm1wX3NubXBTU0hEb21haW47CisgICAgdC0+ZG9tYWluX2xlbmd0aCA9CisgICAgICAgIHNpemVvZihuZXRzbm1wX3NubXBTU0hEb21haW4pIC8gc2l6ZW9mKG5ldHNubXBfc25tcFNTSERvbWFpblswXSk7CisKKyAgICB0LT5mbGFncyA9IE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfU1RSRUFNIHwgTkVUU05NUF9UUkFOU1BPUlRfRkxBR19UVU5ORUxFRDsKKworICAgIGFkZHJfcGFpciA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9zc2hfYWRkcl9wYWlyKTsKKyAgICBpZiAoYWRkcl9wYWlyID09IE5VTEwpIHsKKyAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHQtPmRhdGEgPSBhZGRyX3BhaXI7CisgICAgdC0+ZGF0YV9sZW5ndGggPSBzaXplb2YobmV0c25tcF9zc2hfYWRkcl9wYWlyKTsKKworICAgIGlmIChsb2NhbCkgeworI2lmZGVmIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUKKworICAgICAgICAvKiBYWFg6IHNldCB0LT5sb2NhbCBhbmQgdC0+bG9jYWxfbGVuZ3RoICovCisKKworICAgICAgICB0LT5mbGFncyB8PSBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0xJU1RFTjsKKworICAgICAgICB1bmFkZHIgPSAmYWRkcl9wYWlyLT51bml4X3NvY2tldF9lbmQ7CisKKyAgICAgICAgLyogb3BlbiBhIHVuaXggZG9tYWluIHNvY2tldCAqLworICAgICAgICAvKiBYWFg6IGdldCBkYXRhIGZyb20gdGhlIHRyYW5zcG9ydCBkZWYgZm9yIGl0J3MgbG9jYXRpb24gKi8KKyAgICAgICAgdW5hZGRyLT5zdW5fZmFtaWx5ID0gQUZfVU5JWDsKKyAgICAgICAgaWYgKE5VTEwgPT0gc29ja3BhdGgpIHsKKyAgICAgICAgICAgIHNwcmludGYodG1wc29ja3BhdGgsICIlcy8lcyIsIGdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeSgpLAorICAgICAgICAgICAgICAgICAgICBERUZBVUxUX1NPQ0tfTkFNRSk7CisgICAgICAgICAgICBzb2NrcGF0aCA9IHRtcHNvY2twYXRoOworICAgICAgICB9CisKKyAgICAgICAgc3RyY3B5KHVuYWRkci0+c3VuX3BhdGgsIHNvY2twYXRoKTsKKyAgICAgICAgc3RyY3B5KGFkZHJfcGFpci0+c29ja2V0X3BhdGgsIHNvY2twYXRoKTsKKworICAgICAgICB0LT5zb2NrID0gc29ja2V0KFBGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwKTsKKyAgICAgICAgaWYgKHQtPnNvY2sgPCAwKSB7CisgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvKiBzZXQgdGhlIFNPX1BBU1NDUkVEIG9wdGlvbiBzbyB3ZSBjYW4gcmVjZWl2ZSB0aGUgcmVtb3RlIHVpZCAqLworICAgICAgICB7CisgICAgICAgICAgICBpbnQgb25lID0gMTsKKyAgICAgICAgICAgIHNldHNvY2tvcHQodC0+c29jaywgU09MX1NPQ0tFVCwgU09fUEFTU0NSRUQsICh2b2lkICopICZvbmUsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihvbmUpKTsKKyAgICAgICAgfQorCisgICAgICAgIHVubGluayh1bmFkZHItPnN1bl9wYXRoKTsKKyAgICAgICAgcmMgPSBiaW5kKHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgdW5hZGRyLCBTVU5fTEVOKHVuYWRkcikpOworICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc3NoX3RyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgYmluZCBcIiVzXCIsIGVycm5vICVkICglcylcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICB1bmFkZHItPnN1bl9wYXRoLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKSk7CisgICAgICAgICAgICBuZXRzbm1wX3NzaF9jbG9zZSh0KTsKKyAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisKKyAgICAgICAgLyogc2V0IHRoZSBzb2NrZXQgcGVybWlzc2lvbnMgKi8KKyAgICAgICAgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEFwcGx5IGFueSBzZXR0aW5ncyB0byB0aGUgb3duZXJzaGlwL3Blcm1pc3Npb25zIG9mIHRoZQorICAgICAgICAgICAgICogU3NoZG9tYWluIHNvY2tldAorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpbnQgc3NoZG9tYWluX3NvY2tfcGVybSA9CisgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19QRVJNKTsKKyAgICAgICAgICAgIGludCBzc2hkb21haW5fc29ja191c2VyID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX1NTSERPTUFJTl9TT0NLX1VTRVIpOworICAgICAgICAgICAgaW50IHNzaGRvbWFpbl9zb2NrX2dyb3VwID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX1NTSERPTUFJTl9TT0NLX0dST1VQKTsKKworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsICJoZXJlOiAlcywgJWQsICVkLCAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuYWRkci0+c3VuX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzc2hkb21haW5fc29ja19wZXJtLCBzc2hkb21haW5fc29ja191c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgc3NoZG9tYWluX3NvY2tfZ3JvdXApKTsKKyAgICAgICAgICAgIGlmIChzc2hkb21haW5fc29ja19wZXJtICE9IDApIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic3NoIiwgIlNldHRpbmcgc29ja2V0IHBlcm1zIHRvICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGRvbWFpbl9zb2NrX3Blcm0pKTsKKyAgICAgICAgICAgICAgICBjaG1vZCh1bmFkZHItPnN1bl9wYXRoLCBzc2hkb21haW5fc29ja19wZXJtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNzaGRvbWFpbl9zb2NrX3VzZXIgfHwgc3NoZG9tYWluX3NvY2tfZ3JvdXApIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIElmIGVpdGhlciBvZiB1c2VyIG9yIGdyb3VwIGhhdmVuJ3QgYmVlbiBzZXQsCisgICAgICAgICAgICAgICAgICogIHRoZW4gbGVhdmUgdGhlbSB1bmNoYW5nZWQuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgaWYgKHNzaGRvbWFpbl9zb2NrX3VzZXIgPT0gMCApCisgICAgICAgICAgICAgICAgICAgIHNzaGRvbWFpbl9zb2NrX3VzZXIgPSAtMTsKKyAgICAgICAgICAgICAgICBpZiAoc3NoZG9tYWluX3NvY2tfZ3JvdXAgPT0gMCApCisgICAgICAgICAgICAgICAgICAgIHNzaGRvbWFpbl9zb2NrX2dyb3VwID0gLTE7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsICJTZXR0aW5nIHNvY2tldCB1c2VyL2dyb3VwIHRvICVkLyVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGRvbWFpbl9zb2NrX3VzZXIsIHNzaGRvbWFpbl9zb2NrX2dyb3VwKSk7CisgICAgICAgICAgICAgICAgY2hvd24odW5hZGRyLT5zdW5fcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICBzc2hkb21haW5fc29ja191c2VyLCBzc2hkb21haW5fc29ja19ncm91cCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByYyA9IGxpc3Rlbih0LT5zb2NrLCBORVRTTk1QX1NUUkVBTV9RVUVVRV9MRU4pOworICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc3NoX3RyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgbGlzdGVuIHRvIFwiJXNcIiwgZXJybm8gJWQgKCVzKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuYWRkci0+c3VuX3BhdGgsIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKKyAgICAgICAgICAgIG5ldHNubXBfc3NoX2Nsb3NlKHQpOworICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorCisjZWxzZSAvKiB3ZSdyZSBjYWxsZWQgZGlyZWN0bHkgYnkgc3NoZCBhbmQgdXNlIHN0ZGluL291dCAqLworICAgICAgICAvKiBmb3Igc3NoIG9uIHRoZSBzZXJ2ZXIgc2lkZSB3ZSd2ZSBiZWVuIGxhdW5jaGVkIHNvIGJpbmQgdG8KKyAgICAgICAgICAgc3RkaW4vb3V0ICovCisKKyAgICAgICAgLyogbm90aGluZyB0byBkbyAqLworCisgICAgICAgIC8qIFhYWDogdmVyaWZ5IHdlJ3JlIGluc2lkZSBzc2ggKi8KKyAgICAgICAgdC0+c29jayA9IFNURElOX0ZJTEVOTzsKKyNlbmRpZiAvKiAhIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUgKi8KKworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIFhYWDogbmVlZCBhbiBpcHY2IGZyaWVuZGx5IG9uZSB0b28gKHNpZ2gpICovCisKKyAgICAgICAgLyogWFhYOiBub3QgaWRlYWwgd2hlbiBzdHJ1Y3RzIGRvbid0IGFjdHVhbGx5IG1hdGNoIHNpemUgd2lzZSAqLworICAgICAgICBtZW1jcHkoJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKSwgYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworCisgICAgICAgIHQtPnNvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIDApOworICAgICAgICBpZiAodC0+c29jayA8IDApIHsKKyAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHQtPnJlbW90ZSA9ICh1X2NoYXIgKiltYWxsb2MoNik7CisgICAgICAgIGlmICh0LT5yZW1vdGUgPT0gTlVMTCkgeworICAgICAgICAgICAgbmV0c25tcF9zc2hfY2xvc2UodCk7CisgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHQtPnJlbW90ZSwgKHVfY2hhciAqKSAmIChhZGRyLT5zaW5fYWRkci5zX2FkZHIpLCA0KTsKKyAgICAgICAgdC0+cmVtb3RlWzRdID0gKGh0b25zKGFkZHItPnNpbl9wb3J0KSAmIDB4ZmYwMCkgPj4gODsKKyAgICAgICAgdC0+cmVtb3RlWzVdID0gKGh0b25zKGFkZHItPnNpbl9wb3J0KSAmIDB4MDBmZikgPj4gMDsKKyAgICAgICAgdC0+cmVtb3RlX2xlbmd0aCA9IDY7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhpcyBpcyBhIGNsaWVudC10eXBlIHNlc3Npb24sIHNvIGF0dGVtcHQgdG8gY29ubmVjdCB0byB0aGUgZmFyCisgICAgICAgICAqIGVuZC4gIFdlIGRvbid0IGdvIG5vbi1ibG9ja2luZyBoZXJlIGJlY2F1c2UgaXQncyBub3Qgb2J2aW91cyB3aGF0CisgICAgICAgICAqIHlvdSdkIHRoZW4gZG8gaWYgeW91IHRyaWVkIHRvIGRvIHNubXBfc2VuZHMgYmVmb3JlIHRoZSBjb25uZWN0aW9uCisgICAgICAgICAqIGhhZCBjb21wbGV0ZWQuICBTbyB0aGlzIGNhbiBibG9jay4KKyAgICAgICAgICovCisKKyAgICAgICAgcmMgPSBjb25uZWN0KHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLAorCQkgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKTsKKworICAgICAgICBpZiAocmMgPCAwKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NzaF9jbG9zZSh0KTsKKyAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIEFsbG93IHVzZXIgdG8gb3ZlcnJpZGUgdGhlIHNlbmQgYW5kIHJlY2VpdmUgYnVmZmVycy4gRGVmYXVsdCBpcworICAgICAgICAgKiB0byB1c2Ugb3MgZGVmYXVsdC4gIERvbid0IHdvcnJ5IHRvbyBtdWNoIGFib3V0IGVycm9ycyAtLQorICAgICAgICAgKiBqdXN0IHBsb3VnaCBvbiByZWdhcmRsZXNzLiAgCisgICAgICAgICAqLworICAgICAgICBuZXRzbm1wX3NvY2tfYnVmZmVyX3NldCh0LT5zb2NrLCBTT19TTkRCVUYsIGxvY2FsLCAwKTsKKyAgICAgICAgbmV0c25tcF9zb2NrX2J1ZmZlcl9zZXQodC0+c29jaywgU09fUkNWQlVGLCBsb2NhbCwgMCk7CisKKyAgICAgICAgLyogb3BlbiB0aGUgU1NIIHNlc3Npb24gYW5kIGNoYW5uZWwgKi8KKyAgICAgICAgYWRkcl9wYWlyLT5zZXNzaW9uID0gbGlic3NoMl9zZXNzaW9uX2luaXQoKTsKKyAgICAgICAgaWYgKGxpYnNzaDJfc2Vzc2lvbl9zdGFydHVwKGFkZHJfcGFpci0+c2Vzc2lvbiwgdC0+c29jaykpIHsKKyAgICAgICAgICBzaHV0ZG93bjoKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJGYWlsZWQgdG8gZXN0YWJsaXNoIGFuIFNTSCBzZXNzaW9uXG4iKTsKKyAgICAgICAgICAgIG5ldHNubXBfc3NoX2Nsb3NlKHQpOworICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLyogQXQgdGhpcyBwb2ludCB3ZSBoYXZuJ3QgYXV0aGVudGljYXRlZCwgVGhlIGZpcnN0IHRoaW5nIHRvCisgICAgICAgICAgIGRvIGlzIGNoZWNrIHRoZSBob3N0a2V5J3MgZmluZ2VycHJpbnQgYWdhaW5zdCBvdXIga25vd24KKyAgICAgICAgICAgaG9zdHMgWW91ciBhcHAgbWF5IGhhdmUgaXQgaGFyZCBjb2RlZCwgbWF5IGdvIHRvIGEgZmlsZSwKKyAgICAgICAgICAgbWF5IHByZXNlbnQgaXQgdG8gdGhlIHVzZXIsIHRoYXQncyB5b3VyIGNhbGwKKyAgICAgICAgICovCisgICAgICAgIGZpbmdlcnByaW50ID0KKyAgICAgICAgICAgIGxpYnNzaDJfaG9zdGtleV9oYXNoKGFkZHJfcGFpci0+c2Vzc2lvbiwgTElCU1NIMl9IT1NUS0VZX0hBU0hfTUQ1KTsKKyAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsICJGaW5nZXJwcmludDogIikpOworICAgICAgICBmb3IoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisgICAgICAgICAgICBERUJVR01TRygoInNzaCIsICIlMDJ4IiwKKyAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilmaW5nZXJwcmludFtpXSkpOworICAgICAgICB9CisgICAgICAgIERFQlVHTVNHKCgic3NoIiwgIlxuIikpOworCisgICAgICAgIC8qIGNoZWNrIHdoYXQgYXV0aGVudGljYXRpb24gbWV0aG9kcyBhcmUgYXZhaWxhYmxlICovCisgICAgICAgIHVzZXJhdXRobGlzdCA9CisgICAgICAgICAgICBsaWJzc2gyX3VzZXJhdXRoX2xpc3QoYWRkcl9wYWlyLT5zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lLCBzdHJsZW4odXNlcm5hbWUpKTsKKyAgICAgICAgREVCVUdNU0coKCJzc2giLCAiQXV0aGVudGljYXRpb24gbWV0aG9kczogJXNcbiIsIHVzZXJhdXRobGlzdCkpOworCisgICAgICAgIC8qIFhYWDogYWxsb3cgb3RoZXIgdHlwZXMgKi8KKyAgICAgICAgLyogWFhYOiA0IHNlZW1zIG1hZ2ljIHRvIG1lLi4uICovCisgICAgICAgIGlmIChzdHJzdHIodXNlcmF1dGhsaXN0LCAicHVibGlja2V5IikgIT0gTlVMTCkgeworICAgICAgICAgICAgYXV0aF9wdyB8PSA0OworICAgICAgICB9CisKKyAgICAgICAgLyogWFhYOiBoYXJkIGNvZGVkIHBhdGhzIGFuZCB1c2VycyAqLworICAgICAgICBpZiAoYXV0aF9wdyAmIDQpIHsKKyAgICAgICAgICAgIC8qIHB1YmxpYyBrZXkgKi8KKyAgICAgICAgICAgIGlmIChsaWJzc2gyX3VzZXJhdXRoX3B1YmxpY2tleV9mcm9tZmlsZShhZGRyX3BhaXItPnNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZTEsIGtleWZpbGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiQXV0aGVudGljYXRpb24gYnkgcHVibGljIGtleSBmYWlsZWQhXG4iKTsKKyAgICAgICAgICAgICAgICBnb3RvIHNodXRkb3duOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBERUJVR01TRygoInNzaCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdEF1dGhlbnRpY2F0aW9uIGJ5IHB1YmxpYyBrZXkgc3VjY2VlZGVkLlxuIikpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiQXV0aGVudGljYXRpb24gYnkgcHVibGljIGtleSBmYWlsZWQhXG4iKTsKKyAgICAgICAgICAgIGdvdG8gc2h1dGRvd247CisgICAgICAgIH0KKworICAgICAgICAvKiB3ZSd2ZSBub3cgYXV0aGVudGljYXRlZCBib3RoIHNpZGVzOyBjb250aW5pbmcgb253YXJkIC4uLiAqLworCisgICAgICAgIC8qIFJlcXVlc3QgYSBjaGFubmVsICovCisgICAgICAgIGlmICghKGFkZHJfcGFpci0+Y2hhbm5lbCA9CisgICAgICAgICAgICAgIGxpYnNzaDJfY2hhbm5lbF9vcGVuX3Nlc3Npb24oYWRkcl9wYWlyLT5zZXNzaW9uKSkpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJVbmFibGUgdG8gb3BlbiBhIHNlc3Npb25cbiIpOworICAgICAgICAgICAgZ290byBzaHV0ZG93bjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFJlcXVlc3QgYSB0ZXJtaW5hbCB3aXRoICd2YW5pbGxhJyB0ZXJtaW5hbCBlbXVsYXRpb24KKyAgICAgICAgICogU2VlIC9ldGMvdGVybWNhcCBmb3IgbW9yZSBvcHRpb25zCisgICAgICAgICAqLworICAgICAgICAvKiBYWFg6IG5lZWRlZD8gIGRvdWJ0IGl0ICovCisvKiAgICAgICAgIGlmIChsaWJzc2gyX2NoYW5uZWxfcmVxdWVzdF9wdHkoYWRkcl9wYWlyLT5jaGFubmVsLCAidmFuaWxsYSIpKSB7ICovCisvKiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRmFpbGVkIHJlcXVlc3RpbmcgcHR5XG4iKTsgKi8KKy8qICAgICAgICAgICAgIGdvdG8gc2h1dGRvd247ICovCisvKiAgICAgICAgIH0gKi8KKyAgICAgICAgaWYgKGxpYnNzaDJfY2hhbm5lbF9zdWJzeXN0ZW0oYWRkcl9wYWlyLT5jaGFubmVsLCAic25tcCIpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRmFpbGVkIHRvIHJlcXVlc3QgdGhlIHNzaCAnc25tcCcgc3Vic3lzdGVtXG4iKTsKKyAgICAgICAgICAgIGdvdG8gc2h1dGRvd247CisgICAgICAgIH0KKyAgICB9CisKKyAgICBERUJVR01TRygoInNzaCIsIk9wZW5lZCBjb25uZWN0aW9uLlxuIikpOworICAgIC8qCisgICAgICogTWVzc2FnZSBzaXplIGlzIG5vdCBsaW1pdGVkIGJ5IHRoaXMgdHJhbnNwb3J0IChoZW5jZSBtc2dNYXhTaXplCisgICAgICogaXMgZXF1YWwgdG8gdGhlIG1heGltdW0gbGVnYWwgc2l6ZSBvZiBhbiBTTk1QIG1lc3NhZ2UpLiAgCisgICAgICovCisKKyAgICB0LT5tc2dNYXhTaXplID0gMHg3ZmZmZmZmZjsKKyAgICB0LT5mX3JlY3YgICAgID0gbmV0c25tcF9zc2hfcmVjdjsKKyAgICB0LT5mX3NlbmQgICAgID0gbmV0c25tcF9zc2hfc2VuZDsKKyAgICB0LT5mX2Nsb3NlICAgID0gbmV0c25tcF9zc2hfY2xvc2U7CisgICAgdC0+Zl9hY2NlcHQgICA9IG5ldHNubXBfc3NoX2FjY2VwdDsKKyAgICB0LT5mX2ZtdGFkZHIgID0gbmV0c25tcF9zc2hfZm10YWRkcjsKKworICAgIHJldHVybiB0OworfQorCisKKworbmV0c25tcF90cmFuc3BvcnQgKgorbmV0c25tcF9zc2hfY3JlYXRlX3RzdHJpbmcoY29uc3QgY2hhciAqc3RyLCBpbnQgbG9jYWwsCisJCQkgICBjb25zdCBjaGFyICpkZWZhdWx0X3RhcmdldCkKK3sKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKKworICAgIGlmIChuZXRzbm1wX3NvY2thZGRyX2luMigmYWRkciwgc3RyLCBkZWZhdWx0X3RhcmdldCkpIHsKKyAgICAgICAgcmV0dXJuIG5ldHNubXBfc3NoX3RyYW5zcG9ydCgmYWRkciwgbG9jYWwpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworCisKK25ldHNubXBfdHJhbnNwb3J0ICoKK25ldHNubXBfc3NoX2NyZWF0ZV9vc3RyaW5nKGNvbnN0IHVfY2hhciAqIG8sIHNpemVfdCBvX2xlbiwgaW50IGxvY2FsKQoreworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworCisgICAgaWYgKG9fbGVuID09IDYpIHsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9ydHRtcCA9IChvWzRdIDw8IDgpICsgb1s1XTsKKyAgICAgICAgYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyAgICAgICAgbWVtY3B5KCh1X2NoYXIgKikgJiAoYWRkci5zaW5fYWRkci5zX2FkZHIpLCBvLCA0KTsKKyAgICAgICAgYWRkci5zaW5fcG9ydCA9IGh0b25zKHBvcnR0bXApOworICAgICAgICByZXR1cm4gbmV0c25tcF9zc2hfdHJhbnNwb3J0KCZhZGRyLCBsb2NhbCk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCit2b2lkCitzc2hkb21haW5fcGFyc2Vfc29ja2V0KGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQoreworICAgIGNoYXIgKnNvY2tldF9wZXJtLCAqc29ja2V0X3VzZXIsICpzb2NrZXRfZ3JvdXA7CisgICAgaW50IHVpZCA9IC0xOworICAgIGludCBnaWQgPSAtMTsKKyAgICBpbnQgc19wZXJtID0gLTE7CisgICAgY2hhciAqc3Q7CisKKyAgICBERUJVR01TR1RMKCgic3NoL2NvbmZpZyIsICJwYXJzaW5nIHNvY2tldCBpbmZvOiAlc1xuIiwgY3B0cikpOworICAgIHNvY2tldF9wZXJtID0gc3RydG9rX3IoY3B0ciwgIiBcdCIsICZzdCk7CisgICAgc29ja2V0X3VzZXIgPSBzdHJ0b2tfcihOVUxMLCAiIFx0IiwgJnN0KTsKKyAgICBzb2NrZXRfZ3JvdXAgPSBzdHJ0b2tfcihOVUxMLCAiIFx0IiwgJnN0KTsKKworICAgIGlmIChzb2NrZXRfcGVybSkgeworICAgICAgICBzX3Blcm0gPSBzdHJ0b2woc29ja2V0X3Blcm0sIE5VTEwsIDgpOworICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19QRVJNLCBzX3Blcm0pOworICAgICAgICBERUJVR01TR1RMKCgic3NoL2NvbmZpZyIsICJzb2NrZXQgcGVybWlzc2lvbnM6ICVvICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgIHNfcGVybSwgc19wZXJtKSk7CisgICAgfQorICAgIC8qCisgICAgICogVHJ5IHRvIGhhbmRsZSBudW1lcmljIFVJRHMgb3IgdXNlciBuYW1lcyBmb3IgdGhlIHNvY2tldCBvd25lcgorICAgICAqLworICAgIGlmIChzb2NrZXRfdXNlcikgeworICAgICAgICB1aWQgPSBuZXRzbm1wX3N0cl90b191aWQoc29ja2V0X3VzZXIpOworICAgICAgICBpZiAoIHVpZCAhPSAwICkKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19VU0VSLCB1aWQpOworICAgICAgICBERUJVR01TR1RMKCgic3NoL2NvbmZpZyIsICJzb2NrZXQgb3duZXI6ICVzICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgIHNvY2tldF91c2VyLCB1aWQpKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGFuZCBzaW1pbGFybHkgZm9yIHRoZSBzb2NrZXQgZ3JvdXAgb3duZXJzaGlwCisgICAgICovCisgICAgaWYgKHNvY2tldF9ncm91cCkgeworICAgICAgICBnaWQgPSBuZXRzbm1wX3N0cl90b19naWQoc29ja2V0X2dyb3VwKTsKKyAgICAgICAgaWYgKCBnaWQgIT0gMCApCisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfU1NIRE9NQUlOX1NPQ0tfR1JPVVAsIGdpZCk7CisgICAgICAgIERFQlVHTVNHVEwoKCJzc2gvY29uZmlnIiwgInNvY2tldCBncm91cDogJXMgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgc29ja2V0X2dyb3VwLCBnaWQpKTsKKyAgICB9Cit9CisKK3ZvaWQKK25ldHNubXBfc3NoX2N0b3Iodm9pZCkgICAgCit7CisgICAgc3NoRG9tYWluLm5hbWUgPSBuZXRzbm1wX3NubXBTU0hEb21haW47CisgICAgc3NoRG9tYWluLm5hbWVfbGVuZ3RoID0gc2l6ZW9mKG5ldHNubXBfc25tcFNTSERvbWFpbikgLyBzaXplb2Yob2lkKTsKKyAgICBzc2hEb21haW4ucHJlZml4ID0gKGNvbnN0IGNoYXIgKiopY2FsbG9jKDIsIHNpemVvZihjaGFyICopKTsKKyAgICBzc2hEb21haW4ucHJlZml4WzBdID0gInNzaCI7CisKKyAgICBzc2hEb21haW4uZl9jcmVhdGVfZnJvbV90c3RyaW5nICAgICA9IE5VTEw7CisgICAgc3NoRG9tYWluLmZfY3JlYXRlX2Zyb21fdHN0cmluZ19uZXcgPSBuZXRzbm1wX3NzaF9jcmVhdGVfdHN0cmluZzsKKyAgICBzc2hEb21haW4uZl9jcmVhdGVfZnJvbV9vc3RyaW5nICAgICA9IG5ldHNubXBfc3NoX2NyZWF0ZV9vc3RyaW5nOworCisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAic3NodG9zbm1wc29ja2V0cGVybXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzc2hkb21haW5fcGFyc2Vfc29ja2V0LCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb2NrZXRwZXJtcyBbdXNlcm5hbWUgW2dyb3VwbmFtZV1dIik7CisKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJzc2h0b3NubXBzb2NrZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9TU0hUT1NOTVBfU09DS0VUKTsKKworICAgIERFQlVHTVNHVEwoKCJzc2giLCAicmVnaXN0ZXJpbmcgdGhlIHNzaCBkb21haW5cbiIpKTsKKyAgICBuZXRzbm1wX3Rkb21haW5fcmVnaXN0ZXIoJnNzaERvbWFpbik7Cit9CisKKwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wU1RERG9tYWluLmMgYi9zbm1wbGliL3NubXBTVEREb21haW4uYwppbmRleCBmODNlYWE1Li42MDBhNjgzIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBTVEREb21haW4uYworKysgYi9zbm1wbGliL3NubXBTVEREb21haW4uYwpAQCAtNDAsNyArNDAsNyBAQAogbmV0c25tcF9zdGRfZm10YWRkcihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqZGF0YSwgaW50IGxlbikKIHsKICAgICBjaGFyICpidWY7Ci0gICAgREVCVUdNU0dUTCgoImRvbWFpbjpzdGQiLCJmb3JtYXR0aW5nIGFkZHIuICBkYXRhPSV4XG4iLHQtPmRhdGEpKTsKKyAgICBERUJVR01TR1RMKCgiZG9tYWluOnN0ZCIsImZvcm1hdHRpbmcgYWRkci4gIGRhdGE9JXBcbiIsdC0+ZGF0YSkpOwogICAgIGlmICh0LT5kYXRhKSB7CiAgICAgICAgIG5ldHNubXBfc3RkX2RhdGEgKmRhdGEgPSAobmV0c25tcF9zdGRfZGF0YSopdC0+ZGF0YTsKICAgICAgICAgYnVmID0gKGNoYXIqKW1hbGxvYyhTTk1QX01BWEJVRl9NRURJVU0pOwpAQCAtNjcsNyArNjcsNyBAQAogewogICAgIGludCByYyA9IC0xOwogCi0gICAgREVCVUdNU0dUTCgoImRvbWFpbjpzdGQiLCJyZWN2IG9uIHNvY2sgJWQuICBkYXRhPSV4XG4iLHQtPnNvY2ssIHQtPmRhdGEpKTsKKyAgICBERUJVR01TR1RMKCgiZG9tYWluOnN0ZCIsInJlY3Ygb24gc29jayAlZC4gIGRhdGE9JXBcbiIsdC0+c29jaywgdC0+ZGF0YSkpOwogICAgIHdoaWxlIChyYyA8IDApIHsKICAgICAgICAgcmMgPSByZWFkKHQtPnNvY2ssIGJ1Ziwgc2l6ZSk7CiAgICAgICAgIERFQlVHTVNHVEwoKCJkb21haW46c3RkIiwiICBieXRlczogJWQuXG4iLCByYykpOwpAQCAtOTQsNyArOTQsNyBAQAogewogICAgIGludCByYyA9IC0xOwogCi0gICAgREVCVUdNU0dUTCgoImRvbWFpbjpzdGQiLCJzZW5kIG9uIHNvY2suICBkYXRhPSV4XG4iLCB0LT5kYXRhKSk7CisgICAgREVCVUdNU0dUTCgoImRvbWFpbjpzdGQiLCJzZW5kIG9uIHNvY2suICBkYXRhPSVwXG4iLCB0LT5kYXRhKSk7CiAgICAgd2hpbGUgKHJjIDwgMCkgewogICAgICAgICBpZiAodC0+ZGF0YSkgewogICAgICAgICAgICAgbmV0c25tcF9zdGRfZGF0YSAqZGF0YSA9IChuZXRzbm1wX3N0ZF9kYXRhKil0LT5kYXRhOwpAQCAtMTEzLDcgKzExMyw3IEBACiBzdGF0aWMgaW50CiBuZXRzbm1wX3N0ZF9jbG9zZShuZXRzbm1wX3RyYW5zcG9ydCAqdCkKIHsKLSAgICBERUJVR01TR1RMKCgiZG9tYWluOnN0ZCIsImNsb3NlLiAgZGF0YT0leFxuIiwgdC0+ZGF0YSkpOworICAgIERFQlVHTVNHVEwoKCJkb21haW46c3RkIiwiY2xvc2UuICBkYXRhPSVwXG4iLCB0LT5kYXRhKSk7CiAgICAgaWYgKHQtPmRhdGEpIHsKICAgICAgICAgbmV0c25tcF9zdGRfZGF0YSAqZGF0YSA9IChuZXRzbm1wX3N0ZF9kYXRhKil0LT5kYXRhOwogICAgICAgICBjbG9zZShkYXRhLT5vdXRmZCk7CkBAIC0xMzgsNyArMTM4LDcgQEAKIHN0YXRpYyBpbnQKIG5ldHNubXBfc3RkX2FjY2VwdChuZXRzbm1wX3RyYW5zcG9ydCAqdCkKIHsKLSAgICBERUJVR01TR1RMKCgiZG9tYWluOnN0ZCIsIiBhY2NlcHQgZGF0YT0leFxuIiwgdC0+ZGF0YSkpOworICAgIERFQlVHTVNHVEwoKCJkb21haW46c3RkIiwiIGFjY2VwdCBkYXRhPSVwXG4iLCB0LT5kYXRhKSk7CiAgICAgLyogbm90aGluZyB0byBkbyBoZXJlICovCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yMjIsNyArMjIyLDcgQEAKICAgICAgICAgICAgIGRhdGEtPnByb2cgPSBzdHJkdXAoaW5zdHJpbmcpOwogICAgICAgICAgICAgZGF0YS0+b3V0ZmQgPSBpbmZkWzFdOwogICAgICAgICAgICAgZGF0YS0+Y2hpbGRwaWQgPSBjaGlsZHBpZDsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkb21haW46c3RkIiwicGFyZW50LiAgZGF0YT0leFxuIiwgdC0+ZGF0YSkpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImRvbWFpbjpzdGQiLCJwYXJlbnQuICBkYXRhPSVwXG4iLCB0LT5kYXRhKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiB3ZSdyZSBpbiB0aGUgY2hpbGQgKi8KIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wVENQRG9tYWluLmMgYi9zbm1wbGliL3NubXBUQ1BEb21haW4uYwppbmRleCA4Y2I2Zjk0Li5kMjIxZmQzIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBUQ1BEb21haW4uYworKysgYi9zbm1wbGliL3NubXBUQ1BEb21haW4uYwpAQCAtMTA5LDcgKzEwOSw3IEBACiAKICAgICBpZiAodCAhPSBOVUxMICYmIHQtPnNvY2sgPj0gMCkgewogCXdoaWxlIChyYyA8IDApIHsKLQkgICAgcmMgPSByZWN2ZnJvbSh0LT5zb2NrLCBidWYsIHNpemUsIDAsIE5VTEwsIDApOworCSAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgMCwgTlVMTCwgTlVMTCk7CiAJICAgIGlmIChyYyA8IDAgJiYgZXJybm8gIT0gRUlOVFIpIHsKIAkJREVCVUdNU0dUTCgoIm5ldHNubXBfdGNwIiwgInJlY3YgZmQgJWQgZXJyICVkIChcIiVzXCIpXG4iLAogCQkJICAgIHQtPnNvY2ssIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcFRDUElQdjZEb21haW4uYyBiL3NubXBsaWIvc25tcFRDUElQdjZEb21haW4uYwppbmRleCBkZTdlODNmLi44MzI0M2M3IDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMKKysrIGIvc25tcGxpYi9zbm1wVENQSVB2NkRvbWFpbi5jCkBAIC0yOCw3ICsyOCw5IEBACiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNpbmNsdWRlIDx3czJ0Y3BpcC5oPgogCisjaWZuZGVmIEhBVkVfSU5FVF9OVE9QCiBleHRlcm4gY29uc3QgY2hhciAqaW5ldF9udG9wKGludCwgY29uc3Qgdm9pZCosIGNoYXIqLCBzaXplX3QpOworI2VuZGlmCiAKICNlbmRpZgogCkBAIC0xMDUsNyArMTA3LDcgQEAKIAogICAgIGlmICh0ICE9IE5VTEwgJiYgdC0+c29jayA+PSAwKSB7CiAJd2hpbGUgKHJjIDwgMCkgewotCSAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgMCwgTlVMTCwgMCk7CisJICAgIHJjID0gcmVjdmZyb20odC0+c29jaywgYnVmLCBzaXplLCAwLCBOVUxMLCBOVUxMKTsKIAkgICAgaWYgKHJjIDwgMCAmJiBlcnJubyAhPSBFSU5UUikgewogCQlERUJVR01TR1RMKCgibmV0c25tcF90Y3A2IiwgInJlY3YgZmQgJWQgZXJyICVkIChcIiVzXCIpXG4iLAogCQkJICAgIHQtPnNvY2ssIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcFVEUERvbWFpbi5jIGIvc25tcGxpYi9zbm1wVURQRG9tYWluLmMKaW5kZXggNWUwNjJjYy4uMThjYWVlNSAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wVURQRG9tYWluLmMKKysrIGIvc25tcGxpYi9zbm1wVURQRG9tYWluLmMKQEAgLTkyLDEwICs5MiwxMSBAQAogICogYWRkcmVzcyBpZiBkYXRhIGlzIE5VTEwuICAKICAqLwogCi1zdGF0aWMgY2hhciAqCitjaGFyICoKIG5ldHNubXBfdWRwX2ZtdGFkZHIobmV0c25tcF90cmFuc3BvcnQgKnQsIHZvaWQgKmRhdGEsIGludCBsZW4pCiB7CiAgICAgbmV0c25tcF91ZHBfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOworICAgIHN0cnVjdCBob3N0ZW50ICpob3N0OwogCiAgICAgaWYgKGRhdGEgIT0gTlVMTCAmJiBsZW4gPT0gc2l6ZW9mKG5ldHNubXBfdWRwX2FkZHJfcGFpcikpIHsKIAlhZGRyX3BhaXIgPSAobmV0c25tcF91ZHBfYWRkcl9wYWlyICopIGRhdGE7CkBAIC0xMTIsNiArMTEzLDkgQEAKICAgICAgICAgaWYgKHRvID09IE5VTEwpIHsKICAgICAgICAgICAgIHNwcmludGYodG1wLCAiVURQOiB1bmtub3duLT5bJXNdIiwKICAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9hKGFkZHJfcGFpci0+bG9jYWxfYWRkcikpOworICAgICAgICB9IGVsc2UgaWYgKCB0ICYmIHQtPmZsYWdzICYgTkVUU05NUF9UUkFOU1BPUlRfRkxBR19IT1NUTkFNRSApIHsKKyAgICAgICAgICAgIGhvc3QgPSBnZXRob3N0YnlhZGRyKChjaGFyICopJnRvLT5zaW5fYWRkciwgNCwgQUZfSU5FVCk7CisgICAgICAgICAgICByZXR1cm4gKGhvc3QgPyBzdHJkdXAoaG9zdC0+aF9uYW1lKSA6IE5VTEwpOyAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNwcmludGYodG1wLCAiVURQOiBbJXNdOiVodS0+IiwKICAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9hKHRvLT5zaW5fYWRkciksIG50b2hzKHRvLT5zaW5fcG9ydCkpOwpAQCAtMTIzLDE1ICsxMjcsMjQgQEAKIAogCiAKLSNpZiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCi0KKyNpZiAoZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChJUF9QS1RJTkZPKSkgXAorICAgIHx8IGRlZmluZWQoSVBfUkVDVkRTVEFERFIpICYmIEhBVkVfU1RSVUNUX01TR0hEUl9NU0dfQ09OVFJPTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgSEFWRV9TVFJVQ1RfTVNHSERSX01TR19GTEFHUworI2lmICBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCiAjIGRlZmluZSBuZXRzbm1wX2RzdGFkZHIoeCkgKCYoKChzdHJ1Y3QgaW5fcGt0aW5mbyAqKShDTVNHX0RBVEEoeCkpKS0+aXBpX2FkZHIpKQorI2VsaWYgZGVmaW5lZChJUF9SRUNWRFNUQUREUikKKyMgZGVmaW5lIG5ldHNubXBfZHN0YWRkcih4KSAoJihzdHJ1Y3QgY21zZ2hyICopKENNU0dfREFUQSh4KSkpCisjZW5kaWYKIAotc3RhdGljIGludCBuZXRzbm1wX3VkcF9yZWN2ZnJvbShpbnQgcywgdm9pZCAqYnVmLCBpbnQgbGVuLCBzdHJ1Y3Qgc29ja2FkZHIgKmZyb20sIHNvY2tsZW5fdCAqZnJvbWxlbiwgc3RydWN0IGluX2FkZHIgKmRzdGlwKQoraW50IG5ldHNubXBfdWRwX3JlY3Zmcm9tKGludCBzLCB2b2lkICpidWYsIGludCBsZW4sIHN0cnVjdCBzb2NrYWRkciAqZnJvbSwgc29ja2xlbl90ICpmcm9tbGVuLCBzdHJ1Y3QgaW5fYWRkciAqZHN0aXApCiB7CiAgICAgaW50IHI7CiAgICAgc3RydWN0IGlvdmVjIGlvdlsxXTsKKyNpZiAgIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKICAgICBjaGFyIGNtc2dbQ01TR19TUEFDRShzaXplb2Yoc3RydWN0IGluX3BrdGluZm8pKV07CisjZWxpZiBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKQorICAgIGNoYXIgY21zZ1tDTVNHX1NQQUNFKHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpXTsKKyNlbmRpZgogICAgIHN0cnVjdCBjbXNnaGRyICpjbXNncHRyOwogICAgIHN0cnVjdCBtc2doZHIgbXNnOwogCkBAIC0xNTMsNiArMTY2LDcgQEAKICAgICB9CiAgICAgCiAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwIiwgImdvdCBzb3VyY2UgYWRkcjogJXNcbiIsIGluZXRfbnRvYSgoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWZyb20pLT5zaW5fYWRkcikpKTsKKyNpZiAgIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKICAgICBmb3IgKGNtc2dwdHIgPSBDTVNHX0ZJUlNUSERSKCZtc2cpOyBjbXNncHRyICE9IE5VTEw7IGNtc2dwdHIgPSBDTVNHX05YVEhEUigmbXNnLCBjbXNncHRyKSkgewogICAgICAgICBpZiAoY21zZ3B0ci0+Y21zZ19sZXZlbCA9PSBTT0xfSVAgJiYgY21zZ3B0ci0+Y21zZ190eXBlID09IElQX1BLVElORk8pIHsKICAgICAgICAgICAgIG1lbWNweSgodm9pZCAqKSBkc3RpcCwgbmV0c25tcF9kc3RhZGRyKGNtc2dwdHIpLCBzaXplb2Yoc3RydWN0IGluX2FkZHIpKTsKQEAgLTE2MCwxMCArMTc0LDIwIEBACiAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvYSgqZHN0aXApKSk7CiAgICAgICAgIH0KICAgICB9CisjZWxpZiBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKQorICAgIGZvciAoY21zZ3B0ciA9IENNU0dfRklSU1RIRFIoJm1zZyk7IGNtc2dwdHIgIT0gTlVMTDsgY21zZ3B0ciA9IENNU0dfTlhUSERSKCZtc2csIGNtc2dwdHIpKSB7CisgICAgICAgIGlmIChjbXNncHRyLT5jbXNnX2xldmVsID09IElQUFJPVE9fSVAgJiYgY21zZ3B0ci0+Y21zZ190eXBlID09IElQX1JFQ1ZEU1RBRERSKSB7CisgICAgICAgICAgICBtZW1jcHkoKHZvaWQgKikgZHN0aXAsIENNU0dfREFUQShjbXNncHRyKSwgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF91ZHAiLCAiZ290IGRlc3RpbmF0aW9uIChsb2NhbCkgYWRkciAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9hKCpkc3RpcCkpKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogICAgIHJldHVybiByOwogfQogCi1zdGF0aWMgaW50IG5ldHNubXBfdWRwX3NlbmR0byhpbnQgZmQsIHN0cnVjdCBpbl9hZGRyICpzcmNpcCwgc3RydWN0IHNvY2thZGRyICpyZW1vdGUsCisjaWYgICBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCitpbnQgbmV0c25tcF91ZHBfc2VuZHRvKGludCBmZCwgc3RydWN0IGluX2FkZHIgKnNyY2lwLCBzdHJ1Y3Qgc29ja2FkZHIgKnJlbW90ZSwKIAkJCXZvaWQgKmRhdGEsIGludCBsZW4pCiB7CiAgICAgc3RydWN0IGlvdmVjIGlvdiA9IHsgZGF0YSwgbGVuIH07CkBAIC0xOTAsNyArMjE0LDM2IEBACiAKICAgICByZXR1cm4gc2VuZG1zZyhmZCwgJm0sIE1TR19OT1NJR05BTHxNU0dfRE9OVFdBSVQpOwogfQotI2VuZGlmIC8qIGxpbnV4ICYmIElQX1BLVElORk8gKi8KKyNlbGlmIGRlZmluZWQoSVBfUkVDVkRTVEFERFIpCitpbnQgbmV0c25tcF91ZHBfc2VuZHRvKGludCBmZCwgc3RydWN0IGluX2FkZHIgKnNyY2lwLCBzdHJ1Y3Qgc29ja2FkZHIgKnJlbW90ZSwKKwkJCXZvaWQgKmRhdGEsIGludCBsZW4pCit7CisgICAgc3RydWN0IGlvdmVjIGlvdiA9IHsgZGF0YSwgbGVuIH07CisgICAgc3RydWN0IGNtc2doZHIgKmNtOworICAgIHN0cnVjdCBpbl9hZGRyIGlwOworICAgIHN0cnVjdCBtc2doZHIgbTsKKyAgICBjaGFyICAgY21idWZbQ01TR19TUEFDRShzaXplb2Yoc3RydWN0IGluX2FkZHIpKV07CisKKyAgICBtZW1zZXQoJm0sIDAsIHNpemVvZihzdHJ1Y3QgbXNnaGRyKSk7CisgICAgbS5tc2dfbmFtZQkJPSByZW1vdGU7CisgICAgbS5tc2dfbmFtZWxlbgk9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOworICAgIG0ubXNnX2lvdgkJPSAmaW92OworICAgIG0ubXNnX2lvdmxlbgk9IDE7CisgICAgbS5tc2dfY29udHJvbAk9IGNtYnVmOworICAgIG0ubXNnX2NvbnRyb2xsZW4JPSBzaXplb2YoY21idWYpOworICAgIG0ubXNnX2ZsYWdzCQk9IDA7CisKKyAgICBjbSA9IENNU0dfRklSU1RIRFIoJm0pOworICAgIGNtLT5jbXNnX2xlbiA9IENNU0dfTEVOKHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpOworICAgIGNtLT5jbXNnX2xldmVsID0gSVBQUk9UT19JUDsKKyAgICBjbS0+Y21zZ190eXBlID0gSVBfU0VORFNSQ0FERFI7CisKKyAgICBtZW1jcHkoKHN0cnVjdCBpbl9hZGRyICopQ01TR19EQVRBKGNtKSwgc3JjaXAsIHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpOworCisgICAgcmV0dXJuIHNlbmRtc2coZmQsICZtLCBNU0dfTk9TSUdOQUx8TVNHX0RPTlRXQUlUKTsKK30KKyNlbmRpZgorI2VuZGlmIC8qIChsaW51eCAmJiBJUF9QS1RJTkZPKSB8fCBJUF9SRUNWRFNUQUREUiAmJiBIQVZFX1NUUlVDVF9NU0dIRFJfLi4uICovCiAKIC8qCiAgKiBZb3UgY2FuIHdyaXRlIHNvbWV0aGluZyBpbnRvIG9wYXF1ZSB0aGF0IHdpbGwgc3Vic2VxdWVudGx5IGdldCBwYXNzZWQgYmFjayAKQEAgLTIxOSwxMSArMjcyLDEzIEBACiAgICAgICAgIH0KIAogCXdoaWxlIChyYyA8IDApIHsKLSNpZiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCisjaWYgKGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykpIFwKKyAgICB8fCBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKSAmJiBIQVZFX1NUUlVDVF9NU0dIRFJfTVNHX0NPTlRST0wgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIEhBVkVfU1RSVUNUX01TR0hEUl9NU0dfRkxBR1MKICAgICAgICAgICAgIHJjID0gbmV0c25tcF91ZHBfcmVjdmZyb20odC0+c29jaywgYnVmLCBzaXplLCBmcm9tLCAmZnJvbWxlbiwgJihhZGRyX3BhaXItPmxvY2FsX2FkZHIpKTsKICNlbHNlCiAgICAgICAgICAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgTkVUU05NUF9ET05UV0FJVCwgZnJvbSwgJmZyb21sZW4pOwotI2VuZGlmIC8qIGxpbnV4ICYmIElQX1BLVElORk8gKi8KKyNlbmRpZiAvKiAobGludXggJiYgSVBfUEtUSU5GTykgfHwgSVBfUkVDVkRTVEFERFIgJiYgSEFWRV9TVFJVQ1RfTVNHSERSXy4uLiAqLwogCSAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVJTlRSKSB7CiAJCWJyZWFrOwogCSAgICB9CkBAIC0yNzIsMTEgKzMyNywxMyBAQAogICAgICAgICAgICAgICAgICAgICBzaXplLCBidWYsIHN0ciwgdC0+c29jaykpOwogICAgICAgICBmcmVlKHN0cik7CiAJd2hpbGUgKHJjIDwgMCkgewotI2lmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKKyNpZiAoZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChJUF9QS1RJTkZPKSkgXAorICAgIHx8IGRlZmluZWQoSVBfUkVDVkRTVEFERFIpICYmIEhBVkVfU1RSVUNUX01TR0hEUl9NU0dfQ09OVFJPTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgSEFWRV9TVFJVQ1RfTVNHSERSX01TR19GTEFHUwogICAgICAgICAgICAgcmMgPSBuZXRzbm1wX3VkcF9zZW5kdG8odC0+c29jaywgYWRkcl9wYWlyID8gJihhZGRyX3BhaXItPmxvY2FsX2FkZHIpIDogTlVMTCwgdG8sIGJ1Ziwgc2l6ZSk7CiAjZWxzZQogICAgICAgICAgICAgcmMgPSBzZW5kdG8odC0+c29jaywgYnVmLCBzaXplLCAwLCB0bywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpOwotI2VuZGlmIC8qIGxpbnV4ICYmIElQX1BLVElORk8gKi8KKyNlbmRpZiAvKiAobGludXggJiYgSVBfUEtUSU5GTykgfHwgSVBfUkVDVkRTVEFERFIgJiYgSEFWRV9TVFJVQ1RfTVNHSERSXy4uLiAqLwogCSAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVJTlRSKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwIiwgInNlbmR0byBlcnJvciwgcmMgJWQgKGVycm5vICVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYywgZXJybm8pKTsKQEAgLTMxNSw3ICszNzIsNyBAQAogX3NvY2tfYnVmZmVyX21heGltaXplKGludCBzLCBpbnQgb3B0bmFtZSwgY29uc3QgY2hhciAqYnVmdHlwZSwgaW50IHNpemUpCiB7CiAgICAgaW50ICAgICAgICAgICAgY3VyYnVmID0gMDsKLSAgICBzaXplX3QgICAgICAgICBjdXJidWZsZW4gPSBzaXplb2YoaW50KTsKKyAgICBzb2NrbGVuX3QgICAgICBjdXJidWZsZW4gPSBzaXplb2YoaW50KTsKICAgICBpbnQgICAgICAgICAgICBsbywgbWlkLCBoaTsKIAogICAgIC8qCkBAIC00NzUsNyArNTMyLDcgQEAKICNlbHNlCiAgICAgY29uc3QgY2hhciAgICAgKmJ1ZnR5cGU7CiAgICAgaW50ICAgICAgICAgICAgY3VyYnVmID0gMDsKLSAgICBzaXplX3QgICAgICAgICBjdXJidWZsZW4gPSBzaXplb2YoaW50KTsKKyAgICBzb2NrbGVuX3QgICAgICBjdXJidWZsZW4gPSBzaXplb2YoaW50KTsKIAogIyAgIGlmbmRlZiAgU09fU05EQlVGCiAgICAgaWYgKFNPX1NOREJVRiA9PSBvcHRuYW1lKSB7CkBAIC02NTYsNiArNzEzLDE3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF91ZHAiLCAic2V0IElQX1BLVElORk9cbiIpKTsKICAgICAgICAgfQorI2VsaWYgZGVmaW5lZChJUF9SRUNWRFNUQUREUikKKyAgICAgICAgeyAKKyAgICAgICAgICAgIGludCBzb2Nrb3B0ID0gMTsKKyAgICAgICAgICAgIGlmIChzZXRzb2Nrb3B0KHQtPnNvY2ssIElQUFJPVE9fSVAsIElQX1JFQ1ZEU1RBRERSLCAmc29ja29wdCwgc2l6ZW9mIHNvY2tvcHQpID09IC0xKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwIiwgImNvdWxkbid0IHNldCBJUF9SRUNWRFNUQUREUjogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSkpOworICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF91ZHAiLCAic2V0IElQX1JFQ1ZEU1RBRERSXG4iKSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICByYyA9IGJpbmQodC0+c29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpOwpAQCAtNzgwLDE2ICs4NDgsNyBAQAogbmV0c25tcF9zb2NrYWRkcl9pbjIoc3RydWN0IHNvY2thZGRyX2luICphZGRyLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW5wZWVybmFtZSwgY29uc3QgY2hhciAqZGVmYXVsdF90YXJnZXQpCiB7Ci0jaWYgSEFWRV9HRVRBRERSSU5GTwotICAgIHN0cnVjdCBhZGRyaW5mbyAqYWRkcnMgPSBOVUxMOwotICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50OwotICAgIGludCAgICAgICAgICAgICBlcnI7Ci0jZWxpZiBIQVZFX0dFVElQTk9ERUJZTkFNRQotICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IE5VTEw7Ci0gICAgaW50ICAgICAgICAgICAgIGVycjsKLSNlbGlmIEhBVkVfR0VUSE9TVEJZTkFNRQotICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IE5VTEw7Ci0jZW5kaWYKKyAgICBpbnQgcmV0OwogCiAgICAgaWYgKGFkZHIgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gMDsKQEAgLTg2MiwxMiArOTIxLDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKGhvc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXJ2bmFtZSBub3QgbnVtZXJpYywgIgotCQkJCSJjaGVjayBpZiBpdCByZWFsbHkgaXMgYSBkZXN0aW5hdGlvbikiKSk7CisJCQkJImNoZWNrIGlmIGl0IHJlYWxseSBpcyBhIGRlc3RpbmF0aW9uKVxuIikpOwogICAgICAgICAgICAgICAgICAgICBob3N0ID0gcG9ydDsKICAgICAgICAgICAgICAgICAgICAgcG9ydCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vydm5hbWUgbm90IG51bWVyaWMiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXJ2bmFtZSBub3QgbnVtZXJpY1xuIikpOwogICAgICAgICAgICAgICAgICAgICBmcmVlKHBlZXJuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQpAQCAtODg0LDc0ICs5NDMsMjUgQEAKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJjaGVjayBkZXN0aW5hdGlvbiAlc1xuIiwgaG9zdCkpOwogCi0jaWYgSEFWRV9HRVRBRERSSU5GTwotICAgICAgICAgICAgbWVtc2V0KCZoaW50LCAwLCBzaXplb2YgaGludCk7Ci0gICAgICAgICAgICBoaW50LmFpX2ZsYWdzID0gMDsKLSAgICAgICAgICAgIGhpbnQuYWlfZmFtaWx5ID0gUEZfSU5FVDsKLSAgICAgICAgICAgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOwotICAgICAgICAgICAgaGludC5haV9wcm90b2NvbCA9IDA7CiAKLSAgICAgICAgICAgIGVyciA9IGdldGFkZHJpbmZvKHBlZXJuYW1lLCBOVUxMLCAmaGludCwgJmFkZHJzKTsKLSAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgewotI2lmIEhBVkVfR0FJX1NUUkVSUk9SCi0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImdldGFkZHJpbmZvOiAlcyAlc1xuIiwgcGVlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2FpX3N0cmVycm9yKGVycikpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZ2V0YWRkcmluZm86ICVzIChlcnJvciAlZClcbiIsIHBlZXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGVycik7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBmcmVlKHBlZXJuYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChhZGRycyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob3N0bmFtZSAocmVzb2x2ZWQgb2theSlcbiIpKTsKLSAgICAgICAgICAgICAgICBtZW1jcHkoJmFkZHItPnNpbl9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgYWRkcnMtPmFpX2FkZHIpLT5zaW5fYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSk7Ci0gICAgICAgICAgICAgICAgZnJlZWFkZHJpbmZvKGFkZHJzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlc29sdmUgSVB2NCBob3N0bmFtZVxuIikpOwotICAgICAgICAgICAgfQotI2VsaWYgSEFWRV9HRVRIT1NUQllOQU1FCi0gICAgICAgICAgICBocCA9IGdldGhvc3RieW5hbWUoaG9zdCk7Ci0gICAgICAgICAgICBpZiAoaHAgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUgKGNvdWxkbid0IHJlc29sdmUpXG4iKSk7Ci0gICAgICAgICAgICAgICAgZnJlZShwZWVybmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGhwLT5oX2FkZHJ0eXBlICE9IEFGX0lORVQpIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIChub3QgQUZfSU5FVCEpXG4iKSk7Ci0gICAgICAgICAgICAgICAgZnJlZShwZWVybmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoc3RyY21wKHBlZXJuYW1lLCAiMjU1LjI1NS4yNTUuMjU1IikgPT0gMCApIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFRoZSBleHBsaWNpdCBicm9hZGNhc3QgYWRkcmVzcyBoYWNrCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW4iLCAiRXhwbGljaXQgVURQIGJyb2FkY2FzdFxuIikpOworICAgICAgICAgICAgICAgIGFkZHItPnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9OT05FOwogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXQgPQorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldGhvc3RieW5hbWVfdjQocGVlcm5hbWUsICZhZGRyLT5zaW5fYWRkci5zX2FkZHIpOworICAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkbid0IHJlc29sdmUgaG9zdG5hbWVcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgZnJlZShwZWVybmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIChyZXNvbHZlZCBva2F5KVxuIikpOwotICAgICAgICAgICAgICAgIG1lbWNweSgmYWRkci0+c2luX2FkZHIsIGhwLT5oX2FkZHIsIGhwLT5oX2xlbmd0aCk7CiAgICAgICAgICAgICB9Ci0jZWxpZiBIQVZFX0dFVElQTk9ERUJZTkFNRQotICAgICAgICAgICAgaHAgPSBnZXRpcG5vZGVieW5hbWUocGVlcm5hbWUsIEFGX0lORVQsIDAsICZlcnIpOwotICAgICAgICAgICAgaWYgKGhwID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIChjb3VsZG4ndCByZXNvbHZlID0gJWQpXG4iLCBlcnIpKTsKLSAgICAgICAgICAgICAgICBmcmVlKHBlZXJuYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJob3N0bmFtZSAocmVzb2x2ZWQgb2theSlcbiIpKTsKLSAgICAgICAgICAgIG1lbWNweSgmKGFkZHItPnNpbl9hZGRyKSwgaHAtPmhfYWRkciwgaHAtPmhfbGVuZ3RoKTsKLSNlbHNlIC8qIEhBVkVfR0VUSVBOT0RFQllOQU1FICovCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhlcmUgaXMgbm8gbmFtZSByZXNvbHZpbmcgZnVuY3Rpb24gYXZhaWxhYmxlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAibm8gZ2V0YWRkcmluZm8oKS9nZXRpcG5vZGVieW5hbWUoKS9nZXRob3N0YnluYW1lKClcbiIpKTsKLSAgICAgICAgICAgIGZyZWUocGVlcm5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogSEFWRV9HRVRIT1NUQllOQU1FICovCiAgICAgICAgIH0KIAlmcmVlKHBlZXJuYW1lKTsKICAgICB9CkBAIC0xMDg0LDI1ICsxMDk0LDExIEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogTm9wZSwgd2Fzbid0IGEgZG90dGVkIHF1YWQuICBNdXN0IGJlIGEgaG9zdG5hbWUuICAKICAgICAgICAgICAgICAqLwotI2lmZGVmICBIQVZFX0dFVEhPU1RCWU5BTUUKLSAgICAgICAgICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IGdldGhvc3RieW5hbWUoc291cmNlKTsKLSAgICAgICAgICAgIGlmIChocCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiYmFkIHNvdXJjZSBhZGRyZXNzIik7CisgICAgICAgICAgICBpbnQgcmV0ID0gbmV0c25tcF9nZXRob3N0YnluYW1lX3Y0KHNvdXJjZSwgJm5ldHdvcmspOworICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJjYW5ub3QgcmVzb2x2ZSBzb3VyY2UgaG9zdG5hbWUiKTsKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChocC0+aF9hZGRydHlwZSAhPSBBRl9JTkVUKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm5vIElQIGFkZHJlc3MgZm9yIHNvdXJjZSBob3N0bmFtZSIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5ldHdvcmsgPSAqKChpbl9hZGRyX3QgKikgaHAtPmhfYWRkcik7CiAgICAgICAgICAgICB9Ci0jZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qSEFWRV9HRVRIT1NUQllOQU1FICovCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogT2ggZGVhci4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBjb25maWdfcGVycm9yKCJjYW5ub3QgcmVzb2x2ZSBzb3VyY2UgaG9zdG5hbWUiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLypIQVZFX0dFVEhPU1RCWU5BTUUgKi8KICAgICAgICAgfQogICAgIH0KIApAQCAtMTI0Niw2ICsxMjQyLDggQEAKICAgICAgKiBuYW1lLiAgCiAgICAgICovCiAKKyAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3VkcF9nZXRTZWNOYW1lIiwgIm9wYXF1ZSA9ICVwIChsZW4gPSAlZCksIHNpemVvZiA9ICVkLCBmYW1pbHkgPSAlZCAoJWQpXG4iLAorICAgb3BhcXVlLCBvbGVuZ3RoLCAoaW50KXNpemVvZihuZXRzbm1wX3VkcF9hZGRyX3BhaXIpLCBmcm9tLT5zaW5fZmFtaWx5LCBBRl9JTkVUKSk7CiAgICAgaWYgKG9wYXF1ZSA9PSBOVUxMIHx8IG9sZW5ndGggIT0gc2l6ZW9mKG5ldHNubXBfdWRwX2FkZHJfcGFpcikgfHwKICAgICAgICAgZnJvbS0+c2luX2ZhbWlseSAhPSBBRl9JTkVUKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3VkcF9nZXRTZWNOYW1lIiwKQEAgLTEyNjYsNyArMTI2NCw3IEBACiAgICAgfQogCiAgICAgZm9yIChjID0gY29tMlNlY0xpc3Q7IGMgIT0gTlVMTDsgYyA9IGMtPm5leHQpIHsKLSAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwX2dldFNlY05hbWUiLCJjb21wYXJlIDxcIiVzXCIsIDB4JTA4eC8weCUwOHg+IiwKKyAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwX2dldFNlY05hbWUiLCJjb21wYXJlIDxcIiVzXCIsIDB4JTA4bHgvMHglMDhseD4iLAogCQkgICAgYy0+Y29tbXVuaXR5LCBjLT5uZXR3b3JrLCBjLT5tYXNrKSk7CiAgICAgICAgIGlmICgoY29tbXVuaXR5X2xlbiA9PSBzdHJsZW4oYy0+Y29tbXVuaXR5KSkgJiYKIAkgICAgKG1lbWNtcChjb21tdW5pdHksIGMtPmNvbW11bml0eSwgY29tbXVuaXR5X2xlbikgPT0gMCkgJiYKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcFVEUElQdjZEb21haW4uYyBiL3NubXBsaWIvc25tcFVEUElQdjZEb21haW4uYwppbmRleCBmMGQ3NjM1Li5hOTI3N2QxIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMKKysrIGIvc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jCkBAIC0yOCwxMSArMjgsMTQgQEAKICAgICAgKi8KICNpbmNsdWRlIDx3aW5zb2NrMi5oPgogI2luY2x1ZGUgPHdzMnRjcGlwLmg+Ci0jdW5kZWYgIEhBVkVfSUZfTkFNRVRPSU5ERVgKIAorI2lmbmRlZiBIQVZFX0lORVRfUFRPTgogZXh0ZXJuIGludCAgICAgICAgIGluZXRfcHRvbihpbnQsIGNvbnN0IGNoYXIqLCB2b2lkKik7CisjZW5kaWYKKyNpZm5kZWYgSEFWRV9JTkVUX05UT1AKIGV4dGVybiBjb25zdCBjaGFyICppbmV0X250b3AoaW50LCBjb25zdCB2b2lkKiwgY2hhciosIHNpemVfdCk7Ci1jb25zdCBzdHJ1Y3QgaW42X2FkZHIgaW42YWRkcl9hbnkgPSBJTjZBRERSX0FOWV9JTklUOworI2VuZGlmCitzdGF0aWMgY29uc3Qgc3RydWN0IGluNl9hZGRyIGluNmFkZHJfYW55ID0gSU42QUREUl9BTllfSU5JVDsKICNlbmRpZgogCiAjaWYgSEFWRV9ORVRJTkVUX0lOX0gKQEAgLTUyLDkgKzU1LDkgQEAKICNpbmNsdWRlIDxkbWFsbG9jLmg+CiAjZW5kaWYKIAotI2lmIFNUUlVDVF9TT0NLQUREUl9TVE9SQUdFX0hBU19TU19GQU1JTFkKKyNpZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFX1NTX0ZBTUlMWQogI2RlZmluZSBTU19GQU1JTFkgc3NfZmFtaWx5Ci0jZWxpZiBTVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9IQVNfX19TU19GQU1JTFkKKyNlbGlmIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfX19TU19GQU1JTFkKICNkZWZpbmUgU1NfRkFNSUxZIF9fc3NfZmFtaWx5CiAjZW5kaWYKIApAQCAtMzg0LDEzICszODcsMTQgQEAKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoY3AgPSBwZWVybmFtZTsgKmNwICYmIGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpICpjcCk7IGNwKyspOwotICAgICAgICBpZiAoISpjcCAmJiBhdG9pKHBlZXJuYW1lKSAhPSAwKSB7CisgICAgICAgIHBvcnRubyA9IGF0b2kocGVlcm5hbWUpOworICAgICAgICBpZiAoISpjcCAmJiAgcG9ydG5vICE9IDApIHsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBPa2F5LCBpdCBsb29rcyBsaWtlIEpVU1QgYSBwb3J0IG51bWJlci4gIAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbjYiLCAidG90YWxseSBudW1lcmljOiAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGF0b2kocGVlcm5hbWUpKSk7Ci0gICAgICAgICAgICBhZGRyLT5zaW42X3BvcnQgPSBodG9ucyhhdG9pKHBlZXJuYW1lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3J0bm8pKTsKKyAgICAgICAgICAgIGFkZHItPnNpbjZfcG9ydCA9IGh0b25zKHBvcnRubyk7CiAgICAgICAgICAgICBnb3RvIHJlc29sdmVkOwogICAgICAgICB9CiAKQEAgLTQyMSwxMyArNDI1LDIwIEBACiAjZW5kaWYKIAkJfQogICAgICAgICAgICAgICAgIGlmICgqKGNwICsgMSkgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdG9pKGNwICsgMikgIT0gMCAmJgorICAgICAgICAgICAgICAgICAgICBwb3J0bm8gPSBhdG9pKGNwKzIpOworICAgICAgICAgICAgICAgICAgICBpZiAocG9ydG5vICE9IDAgJiYKICAgICAgICAgICAgICAgICAgICAgICAgIGluZXRfcHRvbihBRl9JTkVUNiwgcGVlcm5hbWUgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopICYoYWRkci0+c2luNl9hZGRyKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSVB2NiBhZGRyZXNzIHdpdGggcG9ydCBzdWZmaXggOiVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvaShjcCArIDIpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRyLT5zaW42X3BvcnQgPSBodG9ucyhhdG9pKGNwICsgMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydG5vKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9ydG5vID4gMCAmJiBwb3J0bm8gPCAweGZmZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyLT5zaW42X3BvcnQgPSBodG9ucyhwb3J0bm8pOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbjYiLCAiaW52YWxpZCBwb3J0IG51bWJlcjogJWQiLCBwb3J0bm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKwogI2lmIGRlZmluZWQoSEFWRV9JRl9OQU1FVE9JTkRFWCkgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9TT0NLQUREUl9JTjZfU0lONl9TQ09QRV9JRCkKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHItPnNpbjZfc2NvcGVfaWQgPSBpZl9pbmRleDsKICNlbmRpZgpAQCAtNDcxLDEzICs0ODIsMjAgQEAKIAkgICAgICAgIGlmX2luZGV4ID0gaWZfbmFtZXRvaW5kZXgoc2NvcGVfaWQgKyAxKTsKICNlbmRpZgogCSAgICB9Ci0gICAgICAgICAgICBpZiAoYXRvaShjcCArIDEpICE9IDAgJiYKKyAgICAgICAgICAgIHBvcnRubyA9IGF0b2koY3AgKyAxKTsKKyAgICAgICAgICAgIGlmIChwb3J0bm8gIT0gMCAmJgogICAgICAgICAgICAgICAgIGluZXRfcHRvbihBRl9JTkVUNiwgcGVlcm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopICYoYWRkci0+c2luNl9hZGRyKSkpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJUHY2IGFkZHJlc3Mgd2l0aCBwb3J0IHN1ZmZpeCA6JWRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvaShjcCArIDEpKSk7Ci0gICAgICAgICAgICAgICAgYWRkci0+c2luNl9wb3J0ID0gaHRvbnMoYXRvaShjcCArIDEpKTsKKyAgICAgICAgICAgICAgICBpZiAocG9ydG5vID4gMCAmJiBwb3J0bm8gPCAweGZmZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkci0+c2luNl9wb3J0ID0gaHRvbnMocG9ydG5vKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbjYiLCAiaW52YWxpZCBwb3J0IG51bWJlcjogJWQiLCBwb3J0bm8pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorCiAjaWYgZGVmaW5lZChIQVZFX0lGX05BTUVUT0lOREVYKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX1NPQ0tBRERSX0lONl9TSU42X1NDT1BFX0lEKQogICAgICAgICAgICAgICAgIGFkZHItPnNpbjZfc2NvcGVfaWQgPSBpZl9pbmRleDsKICNlbmRpZgpAQCAtNTA1LDExICs1MjMsMTggQEAKICAgICAgICAgY3AgPSBzdHJyY2hyKHBlZXJuYW1lLCAnOicpOwogICAgICAgICBpZiAoY3AgIT0gTlVMTCkgewogICAgICAgICAgICAgKmNwID0gJ1wwJzsKLSAgICAgICAgICAgIGlmIChhdG9pKGNwICsgMSkgIT0gMCkgeworICAgICAgICAgICAgcG9ydG5vID0gYXRvaShjcCArIDEpOworICAgICAgICAgICAgaWYgKHBvcnRubyAhPSAwKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW42IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUoPykgd2l0aCBwb3J0IHN1ZmZpeCA6JWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvaShjcCArIDEpKSk7Ci0gICAgICAgICAgICAgICAgYWRkci0+c2luNl9wb3J0ID0gaHRvbnMoYXRvaShjcCArIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0bm8pKTsKKyAgICAgICAgICAgICAgICBpZiAocG9ydG5vID4gMCAmJiBwb3J0bm8gPCAweGZmZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkci0+c2luNl9wb3J0ID0gaHRvbnMocG9ydG5vKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbjYiLCAiaW52YWxpZCBwb3J0IG51bWJlcjogJWQiLCBwb3J0bm8pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogTm8gaWRlYSwgbG9va3MgYm9ndXMgYnV0IHdlIG1pZ2h0IGFzIHdlbGwgcGFzcyB0aGUgZnVsbCB0aGluZyB0bwpAQCAtMTI5NSwxNyArMTMyMCwxOSBAQAogICAgICAgICAgICAgICAgIHp0Y29tbXVuaXR5ID8genRjb21tdW5pdHkgOiAiPG1hbGxvYyBlcnJvcj4iLCBzdHI2KSk7CiAKICAgICBmb3IgKGMgPSBjb20yU2VjNkxpc3Q7IGMgIT0gTlVMTDsgYyA9IGMtPm5leHQpIHsKKwljaGFyIHN0cl9uZXRbSU5FVDZfQUREUlNUUkxFTl0sIHN0cl9tYXNrW0lORVQ2X0FERFJTVFJMRU5dOwogICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF91ZHA2X2dldFNlY05hbWUiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGFyZSA8XCIlc1wiLCAweCUwMzJ4LzB4JTAzMng+IiwgYy0+Y29tbXVuaXR5LAotICAgICAgICAgICAgICAgICAgICBjLT5uZXR3b3JrLCBjLT5tYXNrKSk7CisgICAgICAgICAgICAgICAgICAgICJjb21wYXJlIDxcIiVzXCIsICVzLyVzPiIsIGMtPmNvbW11bml0eSwKKyAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9wKEFGX0lORVQ2LCAmYy0+bmV0d29yay5zaW42X2FkZHIsIHN0cl9uZXQsIHNpemVvZiBzdHJfbmV0KSwKKwkJICAgIGluZXRfbnRvcChBRl9JTkVUNiwgJmMtPm1hc2suc2luNl9hZGRyLCBzdHJfbWFzaywgc2l6ZW9mIHN0cl9tYXNrKSkpOwogCiAgICAgICAgIGlmICgoY29tbXVuaXR5X2xlbiA9PSAoaW50KXN0cmxlbihjLT5jb21tdW5pdHkpKSAmJgogICAgICAgICAgICAgKG1lbWNtcChjb21tdW5pdHksIGMtPmNvbW11bml0eSwgY29tbXVuaXR5X2xlbikgPT0gMCkgJiYKICAgICAgICAgICAgIChtYXNrZWRfYWRkcmVzc19hcmVfZXF1YWwoZnJvbS0+c2luNl9mYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSBmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikgJmMtPm1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSAmYy0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmspID09IDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSAmYy0+bmV0d29yaykKKwkJCQkJPT0gMCkpIHsKICAgICAgICAgICAgIERFQlVHTVNHKCgibmV0c25tcF91ZHA2X2dldFNlY05hbWUiLCAiLi4uIFNVQ0NFU1NcbiIpKTsKICAgICAgICAgICAgIGlmIChzZWNOYW1lICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICAqc2VjTmFtZSA9IGMtPnNlY05hbWU7CmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBVbml4RG9tYWluLmMgYi9zbm1wbGliL3NubXBVbml4RG9tYWluLmMKaW5kZXggMDM2ZTk1YS4uNDI4NjQ3YyAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wVW5peERvbWFpbi5jCisrKyBiL3NubXBsaWIvc25tcFVuaXhEb21haW4uYwpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPiAvKiBta2RpcmhpZXIgKi8KIAogCiAjaWZuZGVmIE5FVFNOTVBfU1RSRUFNX1FVRVVFX0xFTgpAQCAtMjU3LDcgKzI1NywyNSBAQAogICAgIH0KIH0KIAorc3RhdGljIGludCBjcmVhdGVfcGF0aCA9IDA7CitzdGF0aWMgbW9kZV90IGNyZWF0ZV9tb2RlOwogCisvKiogSWYgdHJ5aW5nIHRvIGNyZWF0ZSB1bml4IHNvY2tldHMgaW4gbm9uZXhpc3RpbmcgZGlyZWN0b3JpZXMgdGhlbgorICogIHRyeSB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeSB3aXRoIG1hc2sgbW9kZS4KKyAqLwordm9pZCBuZXRzbm1wX3VuaXhfY3JlYXRlX3BhdGhfd2l0aF9tb2RlKGludCBtb2RlKQoreworICAgIGNyZWF0ZV9wYXRoID0gMTsKKyAgICBjcmVhdGVfbW9kZSA9IG1vZGU7Cit9CisKKy8qKiBJZiB0cnlpbmcgdG8gY3JlYXRlIHVuaXggc29ja2V0cyBpbiBub25leGlzdGluZyBkaXJlY3RvcmllcyB0aGVuCisgKiAgZmFpbC4KKyAqLwordm9pZCBuZXRzbm1wX3VuaXhfZG9udF9jcmVhdGVfcGF0aCh2b2lkKQoreworICAgIGNyZWF0ZV9wYXRoID0gMDsKK30KIAogLyoKICAqIE9wZW4gYSBVbml4LWRvbWFpbiB0cmFuc3BvcnQgZm9yIFNOTVAuICBMb2NhbCBpcyBUUlVFIGlmIGFkZHIgaXMgdGhlIGxvY2FsCkBAIC0zMTMsNyArMzMxLDcgQEAKICAgICB0LT5mbGFncyA9IE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfU1RSRUFNOwogCiAgICAgaWYgKGxvY2FsKSB7Ci0gICAgICB0LT5sb2NhbCA9ICh1X2NoYXIgKiltYWxsb2Moc3RybGVuKGFkZHItPnN1bl9wYXRoKSk7CisgICAgICAgIHQtPmxvY2FsID0gKHVfY2hhciAqKW1hbGxvYyhzdHJsZW4oYWRkci0+c3VuX3BhdGgpKTsKICAgICAgICAgaWYgKHQtPmxvY2FsID09IE5VTEwpIHsKICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzMCw2ICszNDgsMTYgQEAKIAogICAgICAgICB1bmxpbmsoYWRkci0+c3VuX3BhdGgpOwogICAgICAgICByYyA9IGJpbmQodC0+c29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyLCBTVU5fTEVOKGFkZHIpKTsKKworICAgICAgICBpZiAocmMgIT0gMCAmJiBlcnJubyA9PSBFTk9FTlQgJiYgY3JlYXRlX3BhdGgpIHsKKyAgICAgICAgICAgIHJjID0gbWtkaXJoaWVyKGFkZHItPnN1bl9wYXRoLCBjcmVhdGVfbW9kZSwgMSk7CisgICAgICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfdW5peF9jbG9zZSh0KTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmMgPSBiaW5kKHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgYWRkciwgU1VOX0xFTihhZGRyKSk7CisgICAgICAgIH0KICAgICAgICAgaWYgKHJjICE9IDApIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3VuaXhfdHJhbnNwb3J0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZG4ndCBiaW5kIFwiJXNcIiwgZXJybm8gJWQgKCVzKVxuIiwKQEAgLTM2Myw3ICszOTEsNyBAQAogICAgICAgICB9CiAKICAgICB9IGVsc2UgewotICAgICAgdC0+cmVtb3RlID0gKHVfY2hhciAqKW1hbGxvYyhzdHJsZW4oYWRkci0+c3VuX3BhdGgpKTsKKyAgICAgICAgdC0+cmVtb3RlID0gKHVfY2hhciAqKW1hbGxvYyhzdHJsZW4oYWRkci0+c3VuX3BhdGgpKTsKICAgICAgICAgaWYgKHQtPnJlbW90ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zOTAsOCArNDE4LDggQEAKICAgICAgICAgc3VwLT5zZXJ2ZXIuc3VuX2ZhbWlseSA9IEFGX1VOSVg7CiAgICAgICAgIHN0cmNweShzdXAtPnNlcnZlci5zdW5fcGF0aCwgYWRkci0+c3VuX3BhdGgpOwogICAgICAgICBzdXAtPmxvY2FsID0gMDsKLSAgICAgICBuZXRzbm1wX3NvY2tfYnVmZmVyX3NldCh0LT5zb2NrLCBTT19TTkRCVUYsIGxvY2FsLCAwKTsKLSAgICAgICBuZXRzbm1wX3NvY2tfYnVmZmVyX3NldCh0LT5zb2NrLCBTT19SQ1ZCVUYsIGxvY2FsLCAwKTsKKyAgICAgICAgbmV0c25tcF9zb2NrX2J1ZmZlcl9zZXQodC0+c29jaywgU09fU05EQlVGLCBsb2NhbCwgMCk7CisgICAgICAgIG5ldHNubXBfc29ja19idWZmZXJfc2V0KHQtPnNvY2ssIFNPX1JDVkJVRiwgbG9jYWwsIDApOwogICAgIH0KIAogICAgIC8qCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfYWxhcm0uYyBiL3NubXBsaWIvc25tcF9hbGFybS5jCmluZGV4IGM4OGZhNzUuLjVkMzdkNmYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9hbGFybS5jCisrKyBiL3NubXBsaWIvc25tcF9hbGFybS5jCkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLCAidW5yZWdpc3RlcmVkIGFsYXJtICVkXG4iLCAKIAkJICAgIHNhX3B0ci0+Y2xpZW50cmVnKSk7CiAgICAgICAgIC8qCi0gICAgICAgICAqIE5vdGU6ICBkbyBub3QgZnJlZSB0aGUgY2xpZW50YXJnLCBpdHMgdGhlIGNsaWVudHMgcmVzcG9uc2liaWxpdHkgCisgICAgICAgICAqIE5vdGU6IGRvIG5vdCBmcmVlIHRoZSBjbGllbnRhcmcsIGl0J3MgdGhlIGNsaWVudCdzIHJlc3BvbnNpYmlsaXR5IAogICAgICAgICAgKi8KICAgICAgICAgZnJlZShzYV9wdHIpOwogICAgIH0gZWxzZSB7CkBAIC0xOTMsNyArMTkzLDggQEAKICAgICAgICAgLyogY2hlY2sgZm9yIHRpbWUgZGVsdGEgc2tldyAqLwogICAgICAgICBpZiAoKGEtPnRfbmV4dC50dl9zZWMgLSB0X25vdy50dl9zZWMpID4gYS0+dC50dl9zZWMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0aW1lX3NrZXciLCAiVGltZSBkZWx0YSB0b28gYmlnICglZCBzZWNvbmRzKSwgc2hvdWxkIGJlICVkIHNlY29uZHMgLSBmaXhpbmdcbiIsIChhLT50X25leHQudHZfc2VjIC0gdF9ub3cudHZfc2VjKSwgYS0+dC50dl9zZWMpKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0aW1lX3NrZXciLCAiVGltZSBkZWx0YSB0b28gYmlnICglbGQgc2Vjb25kcyksIHNob3VsZCBiZSAlbGQgc2Vjb25kcyAtIGZpeGluZ1xuIiwKKwkJKGxvbmcpKGEtPnRfbmV4dC50dl9zZWMgLSB0X25vdy50dl9zZWMpLCAobG9uZylhLT50LnR2X3NlYykpOwogICAgICAgICAgICAgYS0+dF9uZXh0LnR2X3NlYyA9IHRfbm93LnR2X3NlYyArIGEtPnQudHZfc2VjOwogICAgICAgICAgICAgYS0+dF9uZXh0LnR2X3VzZWMgPSB0X25vdy50dl91c2VjICsgYS0+dC50dl91c2VjOwogICAgICAgICB9CkBAIC0yODQsNyArMjg1LDcgQEAKICAgICBzYV9wdHIgPSBzYV9maW5kX25leHQoKTsKIAogICAgIGlmIChzYV9wdHIpIHsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0X25vdywgMCk7CisgICAgICAgIGdldHRpbWVvZmRheSgmdF9ub3csIE5VTEwpOwogCiAgICAgICAgIGlmICh0aW1lcmNtcCgmdF9ub3csICZzYV9wdHItPnRfbmV4dCwgPikpIHsKICAgICAgICAgICAgIC8qCkBAIC0zMzYsMTQgKzMzNywxNCBAQAogCiAgICAgICAgIHNpZ25hbChTSUdBTFJNLCBhbGFybV9oYW5kbGVyKTsKICAgICAgICAgc2V0aXRpbWVyKElUSU1FUl9SRUFMLCAmaXQsIE5VTEwpOwotICAgICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybSIsICJzY2hlZHVsZSBhbGFybSAlZCBpbiAlZC4lMDNkIHNlY29uZHNcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwgInNjaGVkdWxlIGFsYXJtICVkIGluICVsZC4lMDNsZCBzZWNvbmRzXG4iLAogICAgICAgICAgICAgICAgICAgICBuZXh0YWxhcm0sIGRlbHRhLnR2X3NlYywgKGRlbHRhLnR2X3VzZWMgLyAxMDAwKSkpOwogIyBlbHNlICAvKiBIQVZFX1NFVElUSU1FUiAqLwogIyAgaWZkZWYgU0lHQUxSTQogICAgICAgICBzaWduYWwoU0lHQUxSTSwgYWxhcm1faGFuZGxlcik7CiAgICAgICAgIGFsYXJtKGRlbHRhLnR2X3NlYyk7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwKLSAgICAgICAgICAgICAgICAgICAgInNjaGVkdWxlIGFsYXJtICVkIGluIHJvdWdobHkgJWQgc2Vjb25kc1xuIiwgbmV4dGFsYXJtLAorICAgICAgICAgICAgICAgICAgICAic2NoZWR1bGUgYWxhcm0gJWQgaW4gcm91Z2hseSAlbGQgc2Vjb25kc1xuIiwgbmV4dGFsYXJtLAogICAgICAgICAgICAgICAgICAgICBkZWx0YS50dl9zZWMpKTsKICMgIGVuZGlmICAvKiBTSUdBTFJNICovCiAjIGVuZGlmICAvKiBIQVZFX1NFVElUSU1FUiAqLwpAQCAtNDE3LDcgKzQxOCw3IEBACiAgICAgc2FfdXBkYXRlX2VudHJ5KCpzYV9wcHRyKTsKIAogICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwKLQkJInJlZ2lzdGVyZWQgYWxhcm0gJWQsIHQgPSAlZC4lMDNkLCBmbGFncz0weCUwMnhcbiIsCisJCSJyZWdpc3RlcmVkIGFsYXJtICVkLCB0ID0gJWxkLiUwM2xkLCBmbGFncz0weCUwMnhcbiIsCiAgICAgICAgICAgICAgICAgKCpzYV9wcHRyKS0+Y2xpZW50cmVnLCAoKnNhX3BwdHIpLT50LnR2X3NlYywKICAgICAgICAgICAgICAgICAoKCpzYV9wcHRyKS0+dC50dl91c2VjIC8gMTAwMCksICgqc2FfcHB0ciktPmZsYWdzKSk7CiAKQEAgLTQ4Nyw3ICs0ODgsNyBAQAogICAgIHNhX3VwZGF0ZV9lbnRyeSgqcyk7CiAKICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybSIsCi0gICAgICAgICAgICAgICAgInJlZ2lzdGVyZWQgYWxhcm0gJWQsIHQgPSAlZC4lMDNkLCBmbGFncz0weCUwMnhcbiIsCisgICAgICAgICAgICAgICAgInJlZ2lzdGVyZWQgYWxhcm0gJWQsIHQgPSAlbGQuJTAzbGQsIGZsYWdzPTB4JTAyeFxuIiwKICAgICAgICAgICAgICAgICAoKnMpLT5jbGllbnRyZWcsICgqcyktPnQudHZfc2VjLCAoKCpzKS0+dC50dl91c2VjIC8gMTAwMCksCiAgICAgICAgICAgICAgICAgKCpzKS0+ZmxhZ3MpKTsKIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX2FwaS5jIGIvc25tcGxpYi9zbm1wX2FwaS5jCmluZGV4IDQ1MjY3ZmQuLjVkN2EzYzcgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9hcGkuYworKysgYi9zbm1wbGliL3NubXBfYXBpLmMKQEAgLTEyNyw2ICsxMjcsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oPgogI2lmZGVmIE5FVFNOTVBfU0VDTU9EX1VTTQogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oPgogI2VuZGlmCkBAIC03NzIsNiArNzczLDExIEBACiAJCSAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfRElTQUJMRV9QRVJTSVNURU5UX0xPQUQpOwogICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCAic25tcCIsICJub1BlcnNpc3RlbnRTYXZlIiwKIAkJICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9ESVNBQkxFX1BFUlNJU1RFTlRfU0FWRSk7CisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX0JPT0xFQU4sICJzbm1wIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9Db250ZXh0RW5naW5lSUREaXNjb3ZlcnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9OT19ESVNDT1ZFUlkpOworCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zZXJ2aWNlX2hhbmRsZXJzKCk7CiB9CiAKQEAgLTEyNjIsNiArMTI2OCw5OSBAQAogfQogCiAvKioKKyAqIHByb2JlIGZvciBlbmdpbmVJRCB1c2luZyBSRkMgNTM0MyBwcm9iaW5nIG1lY2hhbmlzbXMKKyAqCisgKiBEZXNpZ25lZCB0byBiZSBhIGNhbGxiYWNrIGZvciB3aXRoaW4gYSBzZWN1cml0eSBtb2RlbCdzIHByb2JlX2VuZ2luZWlkIGhvb2suCisgKiBTaW5jZSBpdCdzIGxpa2VseSBtdWx0aXBsZSBzZWN1cml0eSBtb2RlbHMgd29uJ3QgaGF2ZSBlbmdpbmVJRHMgdG8KKyAqIHByb2JlIGZvciB0aGVuIHRoaXMgZnVuY3Rpb24gaXMgYSBjYWxsYmFjayBsaWtlbHkgdG8gYmUgdXNlZCBieQorICogbXVsdGlwbGUgZnV0dXJlIHNlY3VyaXR5IG1vZGVscy4gIEUuRy4gYm90aCBTU0ggYW5kIERUTFMuCisgKi8KK2ludAorc25tcHYzX3Byb2JlX2NvbnRleHRFbmdpbmVJRF9yZmM1MzQzKHZvaWQgKnNscCwgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKSB7CisgICAgbmV0c25tcF9wZHUgICAgKnBkdSA9IE5VTEwsICpyZXNwb25zZSA9IE5VTEw7CisgICAgc3RhdGljIG9pZCAgICAgIHNubXBFbmdpbmVJRG9pZFtdICAgPSB7IDEsMyw2LDEsNiwzLDEwLDIsMSwxLDB9OworICAgIHN0YXRpYyBzaXplX3QgICBzbm1wRW5naW5lSURvaWRfbGVuID0gMTE7CisKKyAgICBzdGF0aWMgY2hhciAgICAgcHJvYmVFbmdpbmVJRFtdID0geyAoY2hhcikweDgwLCAwLCAwLCAwLCA2IH07CisgICAgc3RhdGljIHNpemVfdCAgIHByb2JlRW5naW5lSURfbGVuID0gc2l6ZW9mKHByb2JlRW5naW5lSUQpOworICAgIAorICAgIGludCBzdGF0dXM7CisKKyAgICBwZHUgPSBzbm1wX3BkdV9jcmVhdGUoU05NUF9NU0dfR0VUKTsKKyAgICBpZiAoIXBkdSkKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICBwZHUtPnZlcnNpb24gPSBTTk1QX1ZFUlNJT05fMzsKKyAgICAvKiBkb24ndCByZXF1aXJlIGEgc2VjdXJpdHlOYW1lICovCisgICAgaWYgKHNlc3Npb24tPnNlY3VyaXR5TmFtZSkgeworICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZSA9IHN0cmR1cChzZXNzaW9uLT5zZWN1cml0eU5hbWUpOworICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZUxlbiA9IHN0cmxlbihwZHUtPnNlY3VyaXR5TmFtZSk7CisgICAgfQorICAgIHBkdS0+c2VjdXJpdHlMZXZlbCA9IFNOTVBfU0VDX0xFVkVMX05PQVVUSDsKKyAgICBwZHUtPnNlY3VyaXR5TW9kZWwgPSBzZXNzaW9uLT5zZWN1cml0eU1vZGVsOworICAgIHBkdS0+Y29udGV4dEVuZ2luZUlEID0gbmV0c25tcF9tZW1kdXAocHJvYmVFbmdpbmVJRCwgcHJvYmVFbmdpbmVJRF9sZW4pOworICAgIGlmICghcGR1LT5jb250ZXh0RW5naW5lSUQpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImZhaWxlZCB0byBjbG9uZSBtZW1vcnkgZm9yIHJmYzUzNDMgcHJvYmVcbiIpOworICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfQorICAgIHBkdS0+Y29udGV4dEVuZ2luZUlETGVuID0gcHJvYmVFbmdpbmVJRF9sZW47CisgICAgCisgICAgc25tcF9hZGRfbnVsbF92YXIocGR1LCBzbm1wRW5naW5lSURvaWQsIHNubXBFbmdpbmVJRG9pZF9sZW4pOworCisgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwgInByb2JpbmcgZm9yIGVuZ2luZUlEIHVzaW5nIHJmYzUzNDMgbWV0aG9kcy4uLlxuIikpOworICAgIHNlc3Npb24tPmZsYWdzIHw9IFNOTVBfRkxBR1NfRE9OVF9QUk9CRTsgLyogcHJldmVudCByZWN1cnNpb24gKi8KKyAgICBzdGF0dXMgPSBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2Uoc2xwLCBwZHUsICZyZXNwb25zZSk7CisKKyAgICBpZiAoKHJlc3BvbnNlID09IE5VTEwpIHx8IChzdGF0dXMgIT0gU1RBVF9TVUNDRVNTKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHJmYzUzNDMgY29udGV4dEVuZ2luZUlEIHByb2JpbmdcbiIpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKworICAgIC8qIGNoZWNrIHRoYXQgdGhlIHJlc3BvbnNlIG1ha2VzIHNlbnNlICovCisgICAgaWYgKE5VTEwgIT0gcmVzcG9uc2UtPnZhcmlhYmxlcyAmJgorICAgICAgICBOVUxMICE9IHJlc3BvbnNlLT52YXJpYWJsZXMtPm5hbWUgJiYKKyAgICAgICAgc25tcF9vaWRfY29tcGFyZShyZXNwb25zZS0+dmFyaWFibGVzLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLT52YXJpYWJsZXMtPm5hbWVfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBFbmdpbmVJRG9pZCwgc25tcEVuZ2luZUlEb2lkX2xlbikgPT0gMCAmJgorICAgICAgICBBU05fT0NURVRfU1RSID09IHJlc3BvbnNlLT52YXJpYWJsZXMtPnR5cGUgICYmCisgICAgICAgIE5VTEwgIT0gcmVzcG9uc2UtPnZhcmlhYmxlcy0+dmFsLnN0cmluZyAmJgorICAgICAgICByZXNwb25zZS0+dmFyaWFibGVzLT52YWxfbGVuID4gMCkgeworICAgICAgICBzZXNzaW9uLT5jb250ZXh0RW5naW5lSUQgPQorICAgICAgICAgICAgbmV0c25tcF9tZW1kdXAocmVzcG9uc2UtPnZhcmlhYmxlcy0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLT52YXJpYWJsZXMtPnZhbF9sZW4pOworICAgICAgICBpZiAoIXNlc3Npb24tPmNvbnRleHRFbmdpbmVJRCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImZhaWxlZCByZmM1MzQzIGNvbnRleHRFbmdpbmVJRCBwcm9iaW5nOiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOworICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogdGVjaG5pY2FsbHkgdGhlcmUgbGlrZWx5IGlzbid0IGEgc2VjdXJpdHlFbmdpbmVJRCBidXQganVzdAorICAgICAgICAgICBpbiBjYXNlIGFueW9uZSBnb2VzIGxvb2tpbmcgd2UgbWlnaHQgYXMgd2VsbCBoYXZlIG9uZSAqLworICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlEID0KKyAgICAgICAgICAgIG5ldHNubXBfbWVtZHVwKHJlc3BvbnNlLT52YXJpYWJsZXMtPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+dmFyaWFibGVzLT52YWxfbGVuKTsKKyAgICAgICAgaWYgKCFzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlEKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHJmYzUzNDMgc2VjdXJpdHlFbmdpbmVJRCBwcm9iaW5nOiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOworICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9IHNlc3Npb24tPmNvbnRleHRFbmdpbmVJRExlbiA9CisgICAgICAgICAgICByZXNwb25zZS0+dmFyaWFibGVzLT52YWxfbGVuOworICAgICAgICAKKyAgICAgICAgaWYgKHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpKSB7CisgICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiICBwcm9iZSBmb3VuZCBlbmdpbmVJRDogICIpKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuOyBpKyspCisgICAgICAgICAgICAgICAgREVCVUdNU0coKCJzbm1wX3Nlc3Nfb3BlbiIsICIlMDJ4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRFtpXSkpOworICAgICAgICAgICAgREVCVUdNU0coKCJzbm1wX3Nlc3Nfb3BlbiIsICJcbiIpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOworfQorCisKKy8qKgogICogcHJvYmUgZm9yIHBlZXIgZW5naW5lSUQKICAqCiAgKiBAcGFyYW0gc2xwICAgICAgICAgc2Vzc2lvbiBsaXN0IHBvaW50ZXIuCkBAIC0xMzAxLDcgKzE0MDAsMTYgQEAKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICBpZiAoc2Vzc2lvbi0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMykgewotICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKSB7CisgICAgICAgIHN0cnVjdCBzbm1wX3NlY21vZF9kZWYgKnNwdHIgPSBmaW5kX3NlY19tb2Qoc2Vzc2lvbi0+c2VjdXJpdHlNb2RlbCk7CisKKyAgICAgICAgaWYgKE5VTEwgIT0gc3B0ciAmJiBOVUxMICE9IHNwdHItPnByb2JlX2VuZ2luZWlkKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLCAicHJvYmluZyBmb3IgZW5naW5lSUQgdXNpbmcgc2VjdXJpdHkgbW9kZWwgY2FsbGJhY2suLi5cbiIpKTsKKyAgICAgICAgICAgIC8qIHNlY3VyaXR5IG1vZGVsIHNwZWNpZmljIG1lY2hhbmlzbSBvZiBkZXRlcm1pbmluZyBlbmdpbmVJRCAqLworICAgICAgICAgICAgc3RhdHVzID0gKCpzcHRyLT5wcm9iZV9lbmdpbmVpZCkgKHNscCwgc2Vzc2lvbik7CisgICAgICAgICAgICBpZiAoc3RhdHVzKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHN1Y2Nlc3MhICovCisgICAgICAgIH0gZWxzZSBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKSB7CiAgICAgICAgICAgICBpZiAoc25tcHYzX2J1aWxkX3Byb2JlX3BkdSgmcGR1KSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwgInVuYWJsZSB0byBjcmVhdGUgcHJvYmUgUERVXG4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzE4LDcgKzE0MjYsNyBAQAogICAgICAgICAgICAgY2FzZSBTVEFUX1NVQ0NFU1M6CiAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9JTlZBTElEX01TRzsgLyogWFg/PyAqLwogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiBleHBlY3RlZCBSZXBvcnQgYXMgcmVzcG9uc2UgdG8gcHJvYmU6ICVzICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiBleHBlY3RlZCBSZXBvcnQgYXMgcmVzcG9uc2UgdG8gcHJvYmU6ICVzICglbGQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfZXJyc3RyaW5nKHJlc3BvbnNlLT5lcnJzdGF0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+ZXJyc3RhdCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM5Miw3MiArMTUwMCw3MCBAQAogc3RhdGljIHZvaWQgICAgKgogX3Nlc3Nfb3BlbihuZXRzbm1wX3Nlc3Npb24gKiBpbl9zZXNzaW9uKQogewotICAgIHN0cnVjdCBzZXNzaW9uX2xpc3QgKnNscDsKLSAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247Ci0gICAgY2hhciAgICAgICAgICAgICpjbGllbnRhZGRyX3NhdmUgPSBOVUxMOworICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSBOVUxMOwogCiAgICAgaW5fc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gMDsKICAgICBpbl9zZXNzaW9uLT5zX2Vycm5vID0gMDsKIAogICAgIF9pbml0X3NubXAoKTsKIAotICAgIGlmICgoc2xwID0gc25tcF9zZXNzX2NvcHkoaW5fc2Vzc2lvbikpID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIChOVUxMKTsKLSAgICB9Ci0gICAgc2Vzc2lvbiA9IHNscC0+c2Vzc2lvbjsKLSAgICBzbHAtPnRyYW5zcG9ydCA9IE5VTEw7CisgICAgeworICAgICAgICBjaGFyICpjbGllbnRhZGRyX3NhdmUgPSBOVUxMOwogCi0gICAgaWYgKE5VTEwgIT0gc2Vzc2lvbi0+bG9jYWxuYW1lKSB7Ci0gICAgICAgIGNsaWVudGFkZHJfc2F2ZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9DTElFTlRfQUREUik7Ci0gICAgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9DTElFTlRfQUREUiwgc2Vzc2lvbi0+bG9jYWxuYW1lKTsKKyAgICAgICAgaWYgKE5VTEwgIT0gaW5fc2Vzc2lvbi0+bG9jYWxuYW1lKSB7CisgICAgICAgICAgICBjbGllbnRhZGRyX3NhdmUgPQorICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0NMSUVOVF9BRERSKTsKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQ0xJRU5UX0FERFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxuYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbl9zZXNzaW9uLT5mbGFncyAmIFNOTVBfRkxBR1NfU1RSRUFNX1NPQ0tFVCkgeworICAgICAgICAgICAgdHJhbnNwb3J0ID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX3Rkb21haW5fdHJhbnNwb3J0X2Z1bGwoInNubXAiLCBpbl9zZXNzaW9uLT5wZWVybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxfcG9ydCwgInRjcCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdHJhbnNwb3J0ID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX3Rkb21haW5fdHJhbnNwb3J0X2Z1bGwoInNubXAiLCBpbl9zZXNzaW9uLT5wZWVybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxfcG9ydCwgInVkcCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKE5VTEwgIT0gY2xpZW50YWRkcl9zYXZlKQorICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9DTElFTlRfQUREUiwgY2xpZW50YWRkcl9zYXZlKTsKICAgICB9CiAKLSAgICBpZiAoc2Vzc2lvbi0+ZmxhZ3MgJiBTTk1QX0ZMQUdTX1NUUkVBTV9TT0NLRVQpIHsKLSAgICAgICAgc2xwLT50cmFuc3BvcnQgPQotCSAgbmV0c25tcF90ZG9tYWluX3RyYW5zcG9ydF9mdWxsKCJzbm1wIiwgc2Vzc2lvbi0+cGVlcm5hbWUsCi0JCQkJCSBzZXNzaW9uLT5sb2NhbF9wb3J0LCAidGNwIiwgTlVMTCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2xwLT50cmFuc3BvcnQgPQotCSAgbmV0c25tcF90ZG9tYWluX3RyYW5zcG9ydF9mdWxsKCJzbm1wIiwgc2Vzc2lvbi0+cGVlcm5hbWUsCi0JCQkJCSBzZXNzaW9uLT5sb2NhbF9wb3J0LCAidWRwIiwgTlVMTCk7CisjaWYgZGVmaW5lZChTT19CUk9BRENBU1QpICYmIGRlZmluZWQoU09MX1NPQ0tFVCkKKyAgICBpZiAoIHRyYW5zcG9ydCAhPSAwICYmIChpbl9zZXNzaW9uLT5mbGFncyAmIFNOTVBfRkxBR1NfVURQX0JST0FEQ0FTVCkgKSB7CisgICAgICAgIGludCAgIGIgPSAxOworICAgICAgICBpbnQgICByYzsKKworICAgICAgICByYyA9IHNldHNvY2tvcHQodHJhbnNwb3J0LT5zb2NrLCBTT0xfU09DS0VULCBTT19CUk9BRENBU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSZiLCBzaXplb2YoYikpOworCisgICAgICAgIGlmICggcmMgIT0gMCApIHsKKyAgICAgICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfQkFEX0FERFJFU1M7IC8qIGdvb2QgYXMgYW55PyAqLworICAgICAgICAgICAgaW5fc2Vzc2lvbi0+c19lcnJubyA9IGVycm5vOworCisgICAgICAgICAgICBERUJVR01TR1RMKCgiX3Nlc3Nfb3BlbiIsICJjb3VsZG4ndCBlbmFibGUgVURQX0JST0FEQ0FTVFxuIikpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CisjZW5kaWYKIAotICAgIGlmIChOVUxMICE9IHNlc3Npb24tPmxvY2FsbmFtZSkKLSAgICAgICAgbmV0c25tcF9kc19zZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0NMSUVOVF9BRERSLCBjbGllbnRhZGRyX3NhdmUpOwotCi0gICAgaWYgKHNscC0+dHJhbnNwb3J0ID09IE5VTEwpIHsKKyAgICBpZiAodHJhbnNwb3J0ID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoIl9zZXNzX29wZW4iLCAiY291bGRuJ3QgaW50ZXJwcmV0IHBlZXJuYW1lXG4iKSk7CiAgICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfQkFEX0FERFJFU1M7CiAgICAgICAgIGluX3Nlc3Npb24tPnNfZXJybm8gPSBlcnJubzsKLSAgICAgICAgc25tcF9zZXRfZGV0YWlsKHNlc3Npb24tPnBlZXJuYW1lKTsKLSAgICAgICAgc25tcF9zZXNzX2Nsb3NlKHNscCk7CisgICAgICAgIHNubXBfc2V0X2RldGFpbChpbl9zZXNzaW9uLT5wZWVybmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHNlc3Npb24tPnJjdk1zZ01heFNpemUgPSBzbHAtPnRyYW5zcG9ydC0+bXNnTWF4U2l6ZTsKLQotICAgIGlmICghc25tcHYzX2VuZ2luZUlEX3Byb2JlKHNscCwgaW5fc2Vzc2lvbikpIHsKLSAgICAgICAgc25tcF9zZXNzX2Nsb3NlKHNscCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKHNscC0+c2Vzc2lvbikgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVU5LTk9XTl9VU0VSX05BTUU7ICAgICAgIC8qIFhYPz8gKi8KLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwKLSAgICAgICAgICAgICAgICAgICAgIl9zZXNzX29wZW4oKTogZmFpbGVkKDIpIHRvIGNyZWF0ZSBhIG5ldyB1c2VyIGZyb20gc2Vzc2lvblxuIikpOwotICAgICAgICBzbm1wX3Nlc3NfY2xvc2Uoc2xwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIAotICAgIHNlc3Npb24tPmZsYWdzICY9IH5TTk1QX0ZMQUdTX0RPTlRfUFJPQkU7Ci0KLQotICAgIHJldHVybiAodm9pZCAqKSBzbHA7Ci19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBzbm1wX3Nlc3Nfb3BlbigpICovCi0KLQorICAgIHJldHVybiBzbm1wX3Nlc3NfYWRkKGluX3Nlc3Npb24sIHRyYW5zcG9ydCwgTlVMTCwgTlVMTCk7Cit9CiAKIC8qCiAgKiBFWFRFTkRFRCBTRVNTSU9OIEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCkBAIC0xNTg0LDcgKzE2OTAsNyBAQAogCiAgICAgaWYgKHNscC0+c2Vzc2lvbi0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMykgewogICAgICAgICBERUJVR01TR1RMKCgic25tcF9zZXNzX2FkZCIsCi0gICAgICAgICAgICAgICAgICAgICJhZGRpbmcgdjMgc2Vzc2lvbiAtLSBlbmdpbmVJRCBwcm9iZSBub3dcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgImFkZGluZyB2MyBzZXNzaW9uIC0tIG1heWJlIGVuZ2luZUlEIHByb2JlIG5vd1xuIikpOwogICAgICAgICBpZiAoIXNubXB2M19lbmdpbmVJRF9wcm9iZShzbHAsIGluX3Nlc3Npb24pKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9zZXNzX2FkZCIsICJlbmdpbmUgSUQgcHJvYmUgZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICBzbm1wX3Nlc3NfY2xvc2Uoc2xwKTsKQEAgLTE5MDYsNyArMjAxMiw3IEBACiAgICAgfQogCiAgICAgaXNwID0gc2xwLT5pbnRlcm5hbDsKLSAgICBzbHAtPmludGVybmFsID0gMDsKKyAgICBzbHAtPmludGVybmFsID0gTlVMTDsKIAogICAgIGlmIChpc3ApIHsKICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2xpc3QgKnJwLCAqb3JwOwpAQCAtMTkzMyw3ICsyMDM5LDcgQEAKICAgICB9CiAKICAgICB0cmFuc3BvcnQgPSBzbHAtPnRyYW5zcG9ydDsKLSAgICBzbHAtPnRyYW5zcG9ydCA9IDA7CisgICAgc2xwLT50cmFuc3BvcnQgPSBOVUxMOwogCiAgICAgaWYgKHRyYW5zcG9ydCkgewogICAgICAgICB0cmFuc3BvcnQtPmZfY2xvc2UodHJhbnNwb3J0KTsKQEAgLTE5NDEsNyArMjA0Nyw3IEBACiAgICAgfQogCiAgICAgc2VzcCA9IHNscC0+c2Vzc2lvbjsKLSAgICBzbHAtPnNlc3Npb24gPSAwOworICAgIHNscC0+c2Vzc2lvbiA9IE5VTEw7CiAKICAgICAvKgogICAgICAqIFRoZSBmb2xsb3dpbmcgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIG1lbW9yeSBsZWFrYWdlIHdoZW4gY2xvc2luZyBBZ2VudFggCkBAIC0yMDk3LDEwICsyMjAzLDE2IEBACiAgICAgaWYgKHJwZHUtPmNvbnRleHROYW1lTGVuICE9IHBkdS0+Y29udGV4dE5hbWVMZW4gfHwKICAgICAgICAgbWVtY21wKHJwZHUtPmNvbnRleHROYW1lLCBwZHUtPmNvbnRleHROYW1lLCBwZHUtPmNvbnRleHROYW1lTGVuKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHJwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4gIT0gcGR1LT5zZWN1cml0eUVuZ2luZUlETGVuIHx8CisKKyAgICAvKiB0dW5uZWxlZCB0cmFuc3BvcnRzIGRvbid0IGhhdmUgYSBzZWN1cml0eUVuZ2luZUlELi4uICB0aGF0J3MKKyAgICAgICBVU00gc3BlY2lmaWMgKGFuZCBtYXliZSBvdGhlciBmdXR1cmUgb25lcykgKi8KKyAgICBpZiAocGR1LT5zZWN1cml0eU1vZGVsID09IFNOTVBfU0VDX01PREVMX1VTTSAmJgorICAgICAgICAocnBkdS0+c2VjdXJpdHlFbmdpbmVJRExlbiAhPSBwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4gfHwKICAgICAgICAgbWVtY21wKHJwZHUtPnNlY3VyaXR5RW5naW5lSUQsIHBkdS0+c2VjdXJpdHlFbmdpbmVJRCwKLSAgICAgICAgICAgICAgIHBkdS0+c2VjdXJpdHlFbmdpbmVJRExlbikpCisgICAgICAgICAgICAgICBwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4pKSkKICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiB0aGUgc2VjdXJpdHlOYW1lIG11c3QgbWF0Y2ggdGhvdWdoIHJlZ2FyZGxlc3Mgb2Ygc2VjbW9kZWwgKi8KICAgICBpZiAocnBkdS0+c2VjdXJpdHlOYW1lTGVuICE9IHBkdS0+c2VjdXJpdHlOYW1lTGVuIHx8CiAgICAgICAgIG1lbWNtcChycGR1LT5zZWN1cml0eU5hbWUsIHBkdS0+c2VjdXJpdHlOYW1lLAogICAgICAgICAgICAgICAgcGR1LT5zZWN1cml0eU5hbWVMZW4pKQpAQCAtMjIwNiwyMCArMjMxOCwyNyBAQAogICAgIGlmIChwZHUtPnNlY3VyaXR5TW9kZWwgPT0gU05NUF9ERUZBVUxUX1NFQ01PREVMKSB7CiAgICAgICAgIHBkdS0+c2VjdXJpdHlNb2RlbCA9IHNlc3Npb24tPnNlY3VyaXR5TW9kZWw7CiAgICAgICAgIGlmIChwZHUtPnNlY3VyaXR5TW9kZWwgPT0gU05NUF9ERUZBVUxUX1NFQ01PREVMKSB7Ci0gICAgICAgICAgICBwZHUtPnNlY3VyaXR5TW9kZWwgPSBTTk1QX1NFQ19NT0RFTF9VU007CisgICAgICAgICAgICBwZHUtPnNlY3VyaXR5TW9kZWwgPSBzZV9maW5kX3ZhbHVlX2luX3NsaXN0KCJzbm1wX3NlY21vZHMiLCBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9TRUNNT0RFTCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocGR1LT5zZWN1cml0eU1vZGVsIDw9IDApIHsKKyAgICAgICAgICAgICAgICBwZHUtPnNlY3VyaXR5TW9kZWwgPSBTTk1QX1NFQ19NT0RFTF9VU007CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHBkdS0+c2VjdXJpdHlOYW1lTGVuID09IDAgJiYgcGR1LT5zZWN1cml0eU5hbWUgPT0gMCkgewotICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lTGVuID09IDApIHsKKyAgICBpZiAocGR1LT5zZWN1cml0eU5hbWVMZW4gPT0gMCAmJiBwZHUtPnNlY3VyaXR5TmFtZSA9PSBOVUxMKSB7CisgICAgICAgIGlmIChzZXNzaW9uLT5zZWN1cml0eU1vZGVsICE9IE5FVFNOTVBfVFNNX1NFQ1VSSVRZX01PREVMICYmCisgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eU5hbWVMZW4gPT0gMCkgewogICAgICAgICAgICAgc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9CQURfU0VDX05BTUU7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgcGR1LT5zZWN1cml0eU5hbWUgPSBzdHJkdXAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKTsKLSAgICAgICAgaWYgKHBkdS0+c2VjdXJpdHlOYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKSB7CisgICAgICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZSA9IHN0cmR1cChzZXNzaW9uLT5zZWN1cml0eU5hbWUpOworICAgICAgICAgICAgaWYgKHBkdS0+c2VjdXJpdHlOYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZUxlbiA9IHNlc3Npb24tPnNlY3VyaXR5TmFtZUxlbjsKICAgICAgICAgfQotICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZUxlbiA9IHNlc3Npb24tPnNlY3VyaXR5TmFtZUxlbjsKICAgICB9CiAgICAgaWYgKHBkdS0+c2VjdXJpdHlMZXZlbCA9PSAwKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5zZWN1cml0eUxldmVsID09IDApIHsKQEAgLTI3OTAsNyArMjkwOSw3IEBACiAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLCBuZXRzbm1wX3BkdSAqcGR1KQogewogI2lmICFkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TTk1QVjEpIHx8ICFkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDKQotICAgIHVfY2hhciAgICAgICAgICpoMGUgPSAwOworICAgIHVfY2hhciAgICAgICAgICpoMGUgPSBOVUxMOwogICAgIHNpemVfdCAgICAgICAgICBzdGFydF9vZmZzZXQgPSAqb2Zmc2V0OwogICAgIGxvbmcgICAgICAgICAgICB2ZXJzaW9uOwogICAgIGludCAgICAgICAgICAgICByYyA9IDA7CkBAIC0yOTY5LDcgKzMwODgsNyBAQAogICAgICAgICB9CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICFORVRTTk1QX05PX1pFUk9MRU5HVEhfQ09NTVVOSVRZICovCiAKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBfc2VuZCIsICJCdWlsZGluZyBTTk1QdiVkIG1lc3NhZ2UuLi5cbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3NlbmQiLCAiQnVpbGRpbmcgU05NUHYlbGQgbWVzc2FnZS4uLlxuIiwKICAgICAgICAgICAgICAgICAgICAgKDEgKyBwZHUtPnZlcnNpb24pKSk7CiAjaWZkZWYgTkVUU05NUF9VU0VfUkVWRVJTRV9BU05FTkNPRElORwogICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX1JFVkVSU0VfRU5DT0RFKSkgewpAQCAtNDAyNiw3ICs0MTQ1LDcgQEAKICAgICAgKiByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvdW50ZXIgIAogICAgICAqLwogICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIGVycl92YXIsIGVycl92YXJfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fQ09VTlRFUiwgKHVfY2hhciAqKSAmIGx0bXAsIHNpemVvZihsdG1wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9DT1VOVEVSLCAmIGx0bXAsIHNpemVvZihsdG1wKSk7CiAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgc25tcHYzX21ha2VfcmVwb3J0KCkgKi8KQEAgLTQxMjEsNiArNDI0MCwxNCBAQAogI2VuZGlmCiAgICAgaW50ICAgICAgICAgICAgIHJlc3VsdCA9IC0xOwogCisgICAgc3RhdGljIG9pZCAgICAgIHNubXBFbmdpbmVJRG9pZFtdICAgPSB7IDEsMyw2LDEsNiwzLDEwLDIsMSwxLDB9OworICAgIHN0YXRpYyBzaXplX3QgICBzbm1wRW5naW5lSURvaWRfbGVuID0gMTE7CisKKyAgICBzdGF0aWMgY2hhciAgICAgb3VyRW5naW5lSURbU05NUF9TRUNfUEFSQU1fQlVGX1NJWkVdOworICAgIHN0YXRpYyBzaXplX3QgICBvdXJFbmdpbmVJRF9sZW4gPSBzaXplb2Yob3VyRW5naW5lSUQpOworCisgICAgbmV0c25tcF9wZHUgICAgKnBkdTIgPSBOVUxMOworCiAgICAgc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gMDsKICAgICBzZXNzaW9uLT5zX2Vycm5vID0gMDsKIApAQCAtNDE0NSw3ICs0MjcyLDcgQEAKICAgICBjYXNlIFNOTVBfVkVSU0lPTl8yYzoKICNlbmRpZgogI2lmICFkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TTk1QVjEpIHx8ICFkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDKQotICAgICAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLCAiUGFyc2luZyBTTk1QdiVkIG1lc3NhZ2UuLi5cbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsICJQYXJzaW5nIFNOTVB2JWxkIG1lc3NhZ2UuLi5cbiIsCiAgICAgICAgICAgICAgICAgICAgICgxICsgcGR1LT52ZXJzaW9uKSkpOwogCiAgICAgICAgIC8qCkBAIC00MjQ0LDYgKzQzNzEsMTIwIEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgLyogSW1wbGVtZW50IFJGQzUzNDMgaGVyZSBmb3IgdHdvIHJlYXNvbnM6CisgICAgICAgICAgIDEpIEZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZSBpdCBoYW5kbGVzIHRoaXMgb3RoZXJ3aXNlCisgICAgICAgICAgICAgIGFsd2F5cyBhcHByb3ZlZCByZXF1ZXN0IGVhcmxpZXIuICBJdCBieXBhc3NlcyB0aGUgbmVlZAorICAgICAgICAgICAgICBmb3IgYXV0aG9yaXphdGlvbiB0byB0aGUgc25tcEVuZ2luZUlEIHNjYWxhciwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgd2hhdCBpcyB3aGF0IFJGQzM0MTUgYXBwZW5kaXggQSBzcGVjaWVzIGFzIG9rLiAgTm90ZQorICAgICAgICAgICAgICB0aGF0IHdlIGhhdmVuJ3QgYnlwYXNzZWQgYXV0aGVudGljYXRpb24gc2luY2UgaWYgdGhlcmUKKyAgICAgICAgICAgICAgd2FzIGFuIGF1dGhlbnRpY2F0aW9uIGVyb3IgaXQgd291bGQgaGF2ZSBiZWVuIGhhbmRsZWQKKyAgICAgICAgICAgICAgYWJvdmUgaW4gdGhlIGlmKHJlc3VsdCkgcGFydCBhdCB0aGUgbGFzdGV0LgorICAgICAgICAgICAyKSBGcm9tIGFuIGFwcGxpY2F0aW9uIHBvaW50IG9mIHZpZXcgaWYgd2UgbGV0IHRoaXMgcmVxdWVzdAorICAgICAgICAgICAgICBnZXQgYWxsIHRoZSB3YXkgdG8gdGhlIGFwcGxpY2F0aW9uLCBpdCdkIHJlcXVpcmUgdGhhdAorICAgICAgICAgICAgICBhbGwgYXBwbGljYXRpb24gdHlwZXMgc3VwcG9ydGluZyBkaXNjb3ZlcnkgYWxzbyBmaXJlIHVwCisgICAgICAgICAgICAgIGEgbWluaW1hbCBhZ2VudCBpbiBvcmRlciB0byBoYW5kbGUganVzdCB0aGlzIHJlcXVlc3QKKyAgICAgICAgICAgICAgd2hpY2ggc2VlbXMgbGlrZSBvdmVya2lsbC4gIFRob3VnaCB0aGVyZSBpcyBubyBvdGhlcgorICAgICAgICAgICAgICBhcHBsaWNhdGlvbiB0eXBlcyB0aGF0IGN1cnJlbnRseSBuZWVkIGRpc2NvdmVyeSAoTlJzCisgICAgICAgICAgICAgIGFjY2VwdCBub3RpZmljYXRpb25zIGZyb20gY29udGV4dEVuZ2luZUlEcyB0aGF0IGRlcml2ZQorICAgICAgICAgICAgICBmcm9tIHRoZSBOTyBub3QgdGhlIE5SKS4gIEFsc28gYSBsYW1lIGV4Y3VzZSBmb3IgZG9pbmcKKyAgICAgICAgICAgICAgaXQgaGVyZS4KKyAgICAgICAgICAgMykgTGVzcyBpbXBvcnRhbnQgdGVjaG5pY2FsbHksIGJ1dCB0aGUgbmV0LXNubXAgYWdlbnQKKyAgICAgICAgICAgICAgZG9lc24ndCBjdXJyZW50bHkgaGFuZGxlIHJlZ2lzdHJhdGlvbnMgb2YgZGlmZmVyZW50CisgICAgICAgICAgICAgIGVuZ2luZUlEcyBlaXRoZXIgYW5kIGl0IHdvdWxkIGhhdmUgYmVlbiBhIGxvdCBtb3JlIHdvcmsKKyAgICAgICAgICAgICAgdG8gaW1wbGVtZW50IHRoZXJlIHNpbmNlIHdlJ2QgbmVlZCB0byBzdXBwb3J0IHRoYXQKKyAgICAgICAgICAgICAgZmlyc3QuIDotLyBTdXBwb3J0aW5nIG11bHRpcGxlIGNvbnRleHQgZW5naW5lSURzIHNob3VsZAorICAgICAgICAgICAgICBiZSBkb25lIGFueXdheSwgc28gaXQncyBub3QgYSB2YWxpZCBleGN1c2UgaGVyZS4KKyAgICAgICAgICAgNCkgVGhlcmUgaXMgYSBsb3QgbGVzcyB0byBkbyBpZiB3ZSB0cnVtcCB0aGUgYWdlbnQgYXQgdGhpcworICAgICAgICAgICAgICBwb2ludDsgSUUsIHRoZSBhZ2VudCBkb2VzIGEgbG90IG1vcmUgdW5uZWNlc3NhcnkKKyAgICAgICAgICAgICAgcHJvY2Vzc2luZyB3aGVuIHRoZSBvbmx5IHRoaW5nIHRoYXQgc2hvdWxkIGV2ZXIgYmUgaW4KKyAgICAgICAgICAgICAgdGhpcyBjb250ZXh0IGJ5IGRlZmluaXRpb24gaXMgdGhlIHNpbmdsZSBzY2FsYXIuCisgICAgICAgICovCisKKyAgICAgICAgLyogc3BlY2lhbCBSRkM1MzQzIGVuZ2luZUlEIGRpc2NvdmVyeSBlbmdpbmVJRCBjaGVjayAqLworICAgICAgICBpZiAoIW5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfTk9fRElTQ09WRVJZKSAmJgorICAgICAgICAgICAgU05NUF9NU0dfUkVTUE9OU0UgICAgICAgIT0gcGR1LT5jb21tYW5kICYmCisgICAgICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAhPSBwZHUtPmNvbnRleHRFbmdpbmVJRCAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURMZW4gPT0gNSAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURbMF0gPT0gMHg4MCAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURbMV0gPT0gMHgwMCAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURbMl0gPT0gMHgwMCAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURbM10gPT0gMHgwMCAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURbNF0gPT0gMHgwNikgeworCisgICAgICAgICAgICAvKiBkZWZpbmUgYSByZXN1bHQgc28gaXQgZG9lc24ndCBnZXQgcGFzdCB1cyBhdCB0aGlzIHBvaW50CisgICAgICAgICAgICAgICBhbmQgZ2V0cyBkcm9wcGVkIGJ5IGZ1dHVyZSBwYXJ0cyBvZiB0aGUgc3RhY2sgKi8KKyAgICAgICAgICAgIHJlc3VsdCA9IFNOTVBFUlJfSlVTVF9BX0NPTlRFWFRfUFJPQkU7CisKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdjNfY29udGV4dGlkIiwgInN0YXJ0aW5nIGNvbnRleHQgSUQgZGlzY292ZXJ5XG4iKSk7CisgICAgICAgICAgICAvKiBlbnN1cmUgZXhhY3RseSBvbmUgdmFyaWFibGUgKi8KKyAgICAgICAgICAgIGlmIChOVUxMICE9IHBkdS0+dmFyaWFibGVzICYmCisgICAgICAgICAgICAgICAgTlVMTCA9PSBwZHUtPnZhcmlhYmxlcy0+bmV4dF92YXJpYWJsZSAmJgorCisgICAgICAgICAgICAgICAgLyogaWYgaXQncyBhIEdFVCwgbWF0Y2ggaXQgZXhhY3RseSAqLworICAgICAgICAgICAgICAgICgoU05NUF9NU0dfR0VUID09IHBkdS0+Y29tbWFuZCAmJgorICAgICAgICAgICAgICAgICAgc25tcF9vaWRfY29tcGFyZShzbm1wRW5naW5lSURvaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBFbmdpbmVJRG9pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dmFyaWFibGVzLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnZhcmlhYmxlcy0+bmFtZV9sZW5ndGgpID09IDApCisgICAgICAgICAgICAgICAgIC8qIGlmIGl0J3MgYSBHRVRORVhUIGVuc3VyZSBpdCdzIGxlc3MgdGhhbiB0aGUgZW5naW5lSUQgb2lkICovCisgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICAgIChTTk1QX01TR19HRVRORVhUID09IHBkdS0+Y29tbWFuZCAmJgorICAgICAgICAgICAgICAgICAgc25tcF9vaWRfY29tcGFyZShzbm1wRW5naW5lSURvaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBFbmdpbmVJRG9pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dmFyaWFibGVzLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnZhcmlhYmxlcy0+bmFtZV9sZW5ndGgpID4gMCkKKyAgICAgICAgICAgICAgICAgICAgKSkgeworCisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXB2M19jb250ZXh0aWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIE9uZSBjb3JyZWN0IHZhcmlhYmxlIGZvdW5kXG4iKSk7CisKKyAgICAgICAgICAgICAgICAvKiBOb3RlOiB3ZSdyZSBleHBsaWN0bHkgbm90IGhhbmRsaW5nIGEgR0VUQlVMSy4gIERlYWwuICovCisKKyAgICAgICAgICAgICAgICAvKiBzZXQgdXAgdGhlIHJlc3BvbnNlICovCisgICAgICAgICAgICAgICAgcGR1MiA9IHNubXBfY2xvbmVfcGR1KHBkdSk7CisKKyAgICAgICAgICAgICAgICAvKiBmcmVlIHRoZSBjdXJyZW50IHZhcmJpbmQgKi8KKyAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZChwZHUyLT52YXJpYWJsZXMpOworCisgICAgICAgICAgICAgICAgLyogc2V0IHRoZSB2YXJpYWJsZXMgKi8KKyAgICAgICAgICAgICAgICBwZHUyLT52YXJpYWJsZXMgPSBOVUxMOworICAgICAgICAgICAgICAgIHBkdTItPmNvbW1hbmQgPSBTTk1QX01TR19SRVNQT05TRTsKKyAgICAgICAgICAgICAgICBwZHUyLT5lcnJzdGF0ID0gMDsKKyAgICAgICAgICAgICAgICBwZHUyLT5lcnJpbmRleCA9IDA7CisKKyAgICAgICAgICAgICAgICBvdXJFbmdpbmVJRF9sZW4gPQorICAgICAgICAgICAgICAgICAgICBzbm1wdjNfZ2V0X2VuZ2luZUlEKCh1X2NoYXIqKW91ckVuZ2luZUlELCBvdXJFbmdpbmVJRF9sZW4pOworICAgICAgICAgICAgICAgIGlmICgwICE9IG91ckVuZ2luZUlEX2xlbikgeworCisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdjNfY29udGV4dGlkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgcmVzcG9uZGluZyB3aXRoIG91ciBlbmdpbmVJRFxuIikpOworCisgICAgICAgICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcEVuZ2luZUlEb2lkLCBzbm1wRW5naW5lSURvaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91ckVuZ2luZUlELCBvdXJFbmdpbmVJRF9sZW4pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLyogc2VuZCB0aGUgcmVzcG9uc2UgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT0gc25tcF9zZXNzX3NlbmQoc2Vzc3AsIHBkdTIpKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdjNfY29udGV4dGlkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHNlbnQgaXQgb2ZmIVxuIikpOworCisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdTIpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAic2VuZGluZyBhIHJlc3BvbnNlIHRvIHRoZSBjb250ZXh0IGVuZ2luZUlEIHByb2JlIGZhaWxlZFxuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHRvIGdldCBvdXIgb3duIGVuZ2luZUlEIVxuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZWQgYW4gb2RkIGNvbnRleHQgZW5naW5lSUQgcHJvYmVcbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTTk1QRVJSX0JBRF9WRVJTSU9OOgogICAgICAgICBFUlJPUl9NU0coImVycm9yIHBhcnNpbmcgc25tcCBtZXNzYWdlIHZlcnNpb24iKTsKQEAgLTQzMDEsNiArNDU0Miw3IEBACiAgICAgc2l6ZV90ICAgICAgICAgIGZvdXI7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2cCA9IE5VTEw7CiAgICAgb2lkICAgICAgICAgICAgIG9iamlkW01BWF9PSURfTEVOXTsKKyAgICB1X2NoYXIgICAgICAgICAqcDsKIAogICAgIC8qCiAgICAgICogR2V0IHRoZSBQRFUgdHlwZSAKQEAgLTQ0NDIsMTAgKzQ2ODQsMTAgQEAKICAgICB3aGlsZSAoKGludCkgKmxlbmd0aCA+IDApIHsKICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2cHRlbXA7CiAgICAgICAgIHZwdGVtcCA9IChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKikgbWFsbG9jKHNpemVvZigqdnB0ZW1wKSk7Ci0gICAgICAgIGlmICgwID09IHZwdGVtcCkgeworICAgICAgICBpZiAoTlVMTCA9PSB2cHRlbXApIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBpZiAoMCA9PSB2cCkgeworICAgICAgICBpZiAoTlVMTCA9PSB2cCkgewogICAgICAgICAgICAgcGR1LT52YXJpYWJsZXMgPSB2cHRlbXA7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB2cC0+bmV4dF92YXJpYWJsZSA9IHZwdGVtcDsKQEAgLTQ0NTUsMTAgKzQ2OTcsMTAgQEAKICAgICAgICAgdnAtPm5leHRfdmFyaWFibGUgPSBOVUxMOwogICAgICAgICB2cC0+dmFsLnN0cmluZyA9IE5VTEw7CiAgICAgICAgIHZwLT5uYW1lX2xlbmd0aCA9IE1BWF9PSURfTEVOOwotICAgICAgICB2cC0+bmFtZSA9IDA7CisgICAgICAgIHZwLT5uYW1lID0gTlVMTDsKICAgICAgICAgdnAtPmluZGV4ID0gMDsKLSAgICAgICAgdnAtPmRhdGEgPSAwOwotICAgICAgICB2cC0+ZGF0YUZyZWVIb29rID0gMDsKKyAgICAgICAgdnAtPmRhdGEgPSBOVUxMOworICAgICAgICB2cC0+ZGF0YUZyZWVIb29rID0gTlVMTDsKICAgICAgICAgREVCVUdEVU1QU0VDVElPTigicmVjdiIsICJWYXJCaW5kIik7CiAgICAgICAgIGRhdGEgPSBzbm1wX3BhcnNlX3Zhcl9vcChkYXRhLCBvYmppZCwgJnZwLT5uYW1lX2xlbmd0aCwgJnZwLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZwLT52YWxfbGVuLCAmdmFyX3ZhbCwgbGVuZ3RoKTsKQEAgLTQ0NzMsOSArNDcxNSwxMSBAQAogICAgICAgICBjYXNlIEFTTl9JTlRFR0VSOgogICAgICAgICAgICAgdnAtPnZhbC5pbnRlZ2VyID0gKGxvbmcgKikgdnAtPmJ1ZjsKICAgICAgICAgICAgIHZwLT52YWxfbGVuID0gc2l6ZW9mKGxvbmcpOwotICAgICAgICAgICAgYXNuX3BhcnNlX2ludCh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCisgICAgICAgICAgICBwID0gYXNuX3BhcnNlX2ludCh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nICopIHZwLT52YWwuaW50ZWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCp2cC0+dmFsLmludGVnZXIpKTsKKyAgICAgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBU05fQ09VTlRFUjoKICAgICAgICAgY2FzZSBBU05fR0FVR0U6CkBAIC00NDgzLDkgKzQ3MjcsMTEgQEAKICAgICAgICAgY2FzZSBBU05fVUlOVEVHRVI6CiAgICAgICAgICAgICB2cC0+dmFsLmludGVnZXIgPSAobG9uZyAqKSB2cC0+YnVmOwogICAgICAgICAgICAgdnAtPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKLSAgICAgICAgICAgIGFzbl9wYXJzZV91bnNpZ25lZF9pbnQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLAorICAgICAgICAgICAgcCA9IGFzbl9wYXJzZV91bnNpZ25lZF9pbnQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZwLT52YWwuaW50ZWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnAtPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGJyZWFrOwogI2lmZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUwogICAgICAgICBjYXNlIEFTTl9PUEFRVUVfQ09VTlRFUjY0OgpAQCAtNDQ5NCwzNCArNDc0MCw0NSBAQAogICAgICAgICBjYXNlIEFTTl9DT1VOVEVSNjQ6CiAgICAgICAgICAgICB2cC0+dmFsLmNvdW50ZXI2NCA9IChzdHJ1Y3QgY291bnRlcjY0ICopIHZwLT5idWY7CiAgICAgICAgICAgICB2cC0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgICAgIGFzbl9wYXJzZV91bnNpZ25lZF9pbnQ2NCh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCisgICAgICAgICAgICBwID0gYXNuX3BhcnNlX3Vuc2lnbmVkX2ludDY0KHZhcl92YWwsICZsZW4sICZ2cC0+dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2cC0+dmFsLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXI2NCwgdnAtPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGJyZWFrOwogI2lmZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUwogICAgICAgICBjYXNlIEFTTl9PUEFRVUVfRkxPQVQ6CiAgICAgICAgICAgICB2cC0+dmFsLmZsb2F0VmFsID0gKGZsb2F0ICopIHZwLT5idWY7CiAgICAgICAgICAgICB2cC0+dmFsX2xlbiA9IHNpemVvZihmbG9hdCk7Ci0gICAgICAgICAgICBhc25fcGFyc2VfZmxvYXQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLAorICAgICAgICAgICAgcCA9IGFzbl9wYXJzZV9mbG9hdCh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnAtPnZhbC5mbG9hdFZhbCwgdnAtPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFTTl9PUEFRVUVfRE9VQkxFOgogICAgICAgICAgICAgdnAtPnZhbC5kb3VibGVWYWwgPSAoZG91YmxlICopIHZwLT5idWY7CiAgICAgICAgICAgICB2cC0+dmFsX2xlbiA9IHNpemVvZihkb3VibGUpOwotICAgICAgICAgICAgYXNuX3BhcnNlX2RvdWJsZSh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCisgICAgICAgICAgICBwID0gYXNuX3BhcnNlX2RvdWJsZSh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwLT52YWwuZG91YmxlVmFsLCB2cC0+dmFsX2xlbik7CisgICAgICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVNOX09QQVFVRV9JNjQ6CiAgICAgICAgICAgICB2cC0+dmFsLmNvdW50ZXI2NCA9IChzdHJ1Y3QgY291bnRlcjY0ICopIHZwLT5idWY7CiAgICAgICAgICAgICB2cC0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgICAgIGFzbl9wYXJzZV9zaWduZWRfaW50NjQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLAorICAgICAgICAgICAgcCA9IGFzbl9wYXJzZV9zaWduZWRfaW50NjQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2cC0+dmFsLmNvdW50ZXI2NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCp2cC0+dmFsLmNvdW50ZXI2NCkpOwogCisgICAgICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUyAqLwotICAgICAgICBjYXNlIEFTTl9PQ1RFVF9TVFI6CiAgICAgICAgIGNhc2UgQVNOX0lQQUREUkVTUzoKKyAgICAgICAgICAgIGlmICh2cC0+dmFsX2xlbiAhPSA0KQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovCisgICAgICAgIGNhc2UgQVNOX09DVEVUX1NUUjoKICAgICAgICAgY2FzZSBBU05fT1BBUVVFOgogICAgICAgICBjYXNlIEFTTl9OU0FQOgogICAgICAgICAgICAgaWYgKHZwLT52YWxfbGVuIDwgc2l6ZW9mKHZwLT5idWYpKSB7CkBAIC00NTMyLDEyICs0Nzg5LDE2IEBACiAgICAgICAgICAgICBpZiAodnAtPnZhbC5zdHJpbmcgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFzbl9wYXJzZV9zdHJpbmcodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLCB2cC0+dmFsLnN0cmluZywKKyAgICAgICAgICAgIHAgPSBhc25fcGFyc2Vfc3RyaW5nKHZhcl92YWwsICZsZW4sICZ2cC0+dHlwZSwgdnAtPnZhbC5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2cC0+dmFsX2xlbik7CisgICAgICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVNOX09CSkVDVF9JRDoKICAgICAgICAgICAgIHZwLT52YWxfbGVuID0gTUFYX09JRF9MRU47Ci0gICAgICAgICAgICBhc25fcGFyc2Vfb2JqaWQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLCBvYmppZCwgJnZwLT52YWxfbGVuKTsKKyAgICAgICAgICAgIHAgPSBhc25fcGFyc2Vfb2JqaWQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLCBvYmppZCwgJnZwLT52YWxfbGVuKTsKKyAgICAgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB2cC0+dmFsX2xlbiAqPSBzaXplb2Yob2lkKTsKICAgICAgICAgICAgIHZwLT52YWwub2JqaWQgPSAob2lkICopIG1hbGxvYyh2cC0+dmFsX2xlbik7CiAgICAgICAgICAgICBpZiAodnAtPnZhbC5vYmppZCA9PSBOVUxMKSB7CkBAIC00NTU1LDggKzQ4MTYsMTAgQEAKICAgICAgICAgICAgIGlmICh2cC0+dmFsLmJpdHN0cmluZyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXNuX3BhcnNlX2JpdHN0cmluZyh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCisgICAgICAgICAgICBwID0gYXNuX3BhcnNlX2JpdHN0cmluZyh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwLT52YWwuYml0c3RyaW5nLCAmdnAtPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImJhZCB0eXBlIHJldHVybmVkICgleClcbiIsIHZwLT50eXBlKTsKQEAgLTQ4NzQsNyArNTEzNyw3IEBACiAgICAgaWYgKHBkdS0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMyAmJiBzZXNzaW9uLT5zbmRNc2dNYXhTaXplICE9IDAgJiYgbGVuZ3RoID4gc2Vzc2lvbi0+c25kTXNnTWF4U2l6ZSkgewogICAgICAgICBERUJVR01TR1RMKCgic2Vzc19hc3luY19zZW5kIiwKICAgICAgICAgICAgICAgICAgICAgImxlbmd0aCBvZiBwYWNrZXQgKCVsdSkgZXhjZWVkcyBzZXNzaW9uIG1heGltdW0gKCVsdSlcbiIsCi0gICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgc2Vzc2lvbi0+c25kTXNnTWF4U2l6ZSkpOworICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylsZW5ndGgsICh1bnNpZ25lZCBsb25nKXNlc3Npb24tPnNuZE1zZ01heFNpemUpKTsKICAgICAgICAgc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9UT09fTE9ORzsKICAgICAgICAgU05NUF9GUkVFKHBrdGJ1Zik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDg4OCw3ICs1MTUxLDcgQEAKICAgICBpZiAodHJhbnNwb3J0LT5tc2dNYXhTaXplICE9IDAgJiYgbGVuZ3RoID4gdHJhbnNwb3J0LT5tc2dNYXhTaXplKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX2FzeW5jX3NlbmQiLAogICAgICAgICAgICAgICAgICAgICAibGVuZ3RoIG9mIHBhY2tldCAoJWx1KSBleGNlZWRzIHRyYW5zcG9ydCBtYXhpbXVtICglbHUpXG4iLAotICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIHRyYW5zcG9ydC0+bXNnTWF4U2l6ZSkpOworICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylsZW5ndGgsICh1bnNpZ25lZCBsb25nKXRyYW5zcG9ydC0+bXNnTWF4U2l6ZSkpOwogICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1RPT19MT05HOwogICAgICAgICBTTk1QX0ZSRUUocGt0YnVmKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC00OTE1LDYgKzUxNzgsOCBAQAogICAgICAqIFNlbmQgdGhlIG1lc3NhZ2UuICAKICAgICAgKi8KIAorICAgIERFQlVHTVNHVEwoKCJzZXNzX3Byb2Nlc3NfcGFja2V0IiwgInNlbmRpbmcgbWVzc2FnZSBpZCMlbGQgcmVxaWQjJWxkXG4iLAorICAgICAgICAgICAgICAgIHBkdS0+bXNnaWQsIHBkdS0+cmVxaWQpKTsKICAgICByZXN1bHQgPSB0cmFuc3BvcnQtPmZfc2VuZCh0cmFuc3BvcnQsIHBhY2tldCwgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYocGR1LT50cmFuc3BvcnRfZGF0YSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihwZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCkpOwpAQCAtNTAyMCw3ICs1Mjg1LDcgQEAKICAqIEZyZWVzIHRoZSB2YXJpYWJsZSBhbmQgYW55IG1hbGxvYydkIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGl0LgogICovCiB2b2lkCi1zbm1wX2ZyZWVfdmFyKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcikKK3NubXBfZnJlZV92YXJfaW50ZXJuYWxzKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcikKIHsKICAgICBpZiAoIXZhcikKICAgICAgICAgcmV0dXJuOwpAQCAtNTAzNyw3ICs1MzAyLDEyIEBACiAgICAgICAgICAgICBTTk1QX0ZSRUUodmFyLT5kYXRhKTsKICAgICAgICAgfQogICAgIH0KK30KIAordm9pZAorc25tcF9mcmVlX3ZhcihuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIpCit7CisgICAgc25tcF9mcmVlX3Zhcl9pbnRlcm5hbHModmFyKTsKICAgICBmcmVlKChjaGFyICopIHZhcik7CiB9CiAKQEAgLTUxODEsNiArNTQ1MSw3IEBACiAgIH0gZWxzZSB7CiAgICAgcGR1ID0gc25tcF9jcmVhdGVfc2Vzc19wZHUodHJhbnNwb3J0LCBvcGFxdWUsIG9sZW5ndGgpOwogICB9CisKICAgaWYgKHBkdSA9PSBOVUxMKSB7CiAgICAgc25tcF9sb2coTE9HX0VSUiwgInBkdSBmYWlsZWQgdG8gYmUgY3JlYXRlZFxuIik7CiAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMKSB7CkBAIC01MTg5LDEyICs1NDYwLDIxIEBACiAgICAgcmV0dXJuIC0xOwogICB9CiAKKyAgLyogaWYgdGhlIHRyYW5zcG9ydCB3YXMgYSBtYWdpYyB0dW5uZWwsIG1hcmsgdGhlIFBEVSBhcyBoYXZpbmcgY29tZQorICAgICB0aHJvdWdoIG9uZS4gKi8KKyAgaWYgKHRyYW5zcG9ydC0+ZmxhZ3MgJiBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX1RVTk5FTEVEKSB7CisgICAgICBwZHUtPmZsYWdzIHw9IFVDRF9NU0dfRkxBR19UVU5ORUxFRDsKKyAgfQorCiAgIGlmIChpc3AtPmhvb2tfcGFyc2UpIHsKICAgICByZXQgPSBpc3AtPmhvb2tfcGFyc2Uoc3AsIHBkdSwgcGFja2V0cHRyLCBsZW5ndGgpOwogICB9IGVsc2UgewogICAgIHJldCA9IHNubXBfcGFyc2Uoc2Vzc3AsIHNwLCBwZHUsIHBhY2tldHB0ciwgbGVuZ3RoKTsKICAgfQogCisgIERFQlVHTVNHVEwoKCJzZXNzX3Byb2Nlc3NfcGFja2V0IiwgInJlY2VpdmVkIG1lc3NhZ2UgaWQjJWxkIHJlcWlkIyVsZFxuIiwKKyAgICAgICAgICAgICAgcGR1LT5tc2dpZCwgcGR1LT5yZXFpZCkpOworCiAgIGlmIChyZXQgIT0gU05NUF9FUlJfTk9FUlJPUikgewogICAgIERFQlVHTVNHVEwoKCJzZXNzX3Byb2Nlc3NfcGFja2V0IiwgInBhcnNlIGZhaWxcbiIpKTsKICAgfQpAQCAtNTI2Miw3ICs1NTQyLDkgQEAKIAkgKiBtc2dJZCBtdXN0IG1hdGNoIGZvciB2MyBtZXNzYWdlcy4gIAogCSAqLwogCWlmIChycC0+bWVzc2FnZV9pZCAhPSBwZHUtPm1zZ2lkKSB7Ci0JICBjb250aW51ZTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX3Byb2Nlc3NfcGFja2V0IiwgInVubWF0Y2hlZCBtc2cgaWQ6ICVsZCAhPSAlbGRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBycC0+bWVzc2FnZV9pZCwgcGR1LT5tc2dpZCkpOworCSAgICBjb250aW51ZTsKIAl9CiAKIAkvKgpAQCAtNTQzNywxMCArNTcxOSwyMSBAQAogdm9pZAogc25tcF9yZWFkKGZkX3NldCAqIGZkc2V0KQogeworICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0IGxmZHNldDsKKworICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmxmZHNldCwgRkRfU0VUU0laRSk7CisgICAgbmV0c25tcF9jb3B5X2ZkX3NldF90b19sYXJnZV9mZF9zZXQoJmxmZHNldCwgZmRzZXQpOworICAgIHNubXBfcmVhZDIoJmxmZHNldCk7CisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgmbGZkc2V0KTsKK30KKwordm9pZAorc25tcF9yZWFkMihuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0KQorewogICAgIHN0cnVjdCBzZXNzaW9uX2xpc3QgKnNscDsKICAgICBzbm1wX3Jlc19sb2NrKE1UX0xJQlJBUllfSUQsIE1UX0xJQl9TRVNTSU9OKTsKICAgICBmb3IgKHNscCA9IFNlc3Npb25zOyBzbHA7IHNscCA9IHNscC0+bmV4dCkgewotICAgICAgICBzbm1wX3Nlc3NfcmVhZCgodm9pZCAqKSBzbHAsIGZkc2V0KTsKKyAgICAgICAgc25tcF9zZXNzX3JlYWQyKCh2b2lkICopIHNscCwgZmRzZXQpOwogICAgIH0KICAgICBzbm1wX3Jlc191bmxvY2soTVRfTElCUkFSWV9JRCwgTVRfTElCX1NFU1NJT04pOwogfQpAQCAtNTQ1Miw3ICs1NzQ1LDcgQEAKICAqIEJld2FyZSByZWN1cnNpdmUgc2VuZCBtYXliZSBpbnNpZGUgc25tcF9yZWFkIGNhbGxiYWNrIGZ1bmN0aW9uLiAKICAqLwogaW50Ci1fc2Vzc19yZWFkKHZvaWQgKnNlc3NwLCBmZF9zZXQgKiBmZHNldCkKK19zZXNzX3JlYWQodm9pZCAqc2Vzc3AsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCiB7CiAgICAgc3RydWN0IHNlc3Npb25fbGlzdCAqc2xwID0gKHN0cnVjdCBzZXNzaW9uX2xpc3QgKikgc2Vzc3A7CiAgICAgbmV0c25tcF9zZXNzaW9uICpzcCA9IHNscCA/IHNscC0+c2Vzc2lvbiA6IE5VTEw7CkBAIC01NDc0LDEwICs1NzY3LDExIEBACiAgICAgICAgIHJldHVybiAwOyAKICAgICB9CiAKLSAgICBpZiAoIWZkc2V0IHx8ICEoRkRfSVNTRVQodHJhbnNwb3J0LT5zb2NrLCBmZHNldCkpKSB7CisgICAgaWYgKCFmZHNldCB8fCAhKE5FVFNOTVBfTEFSR0VfRkRfSVNTRVQodHJhbnNwb3J0LT5zb2NrLCBmZHNldCkpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX3JlYWQiLCAibm90IHJlYWRpbmcgJWQgKGZkc2V0ICVwIHNldCAlZClcbiIsCiAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydC0+c29jaywgZmRzZXQsCi0gICAgICAgICAgICAgICAgICAgIGZkc2V0ID8gRkRfSVNTRVQodHJhbnNwb3J0LT5zb2NrLCBmZHNldCkgOiAtOSkpOworICAgICAgICAgICAgICAgICAgICBmZHNldCA/IE5FVFNOTVBfTEFSR0VfRkRfSVNTRVQodHJhbnNwb3J0LT5zb2NrLCBmZHNldCkKKwkJICAgIDogLTkpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC01NTY0LDggKzU4NTgsOCBAQAogICAgICAgICAgICAgICogV2UgaGF2ZSBubyBzYXZlZCBwYWNrZXQuICBBbGxvY2F0ZSBvbmUuICAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKChpc3AtPnBhY2tldCA9ICh1X2NoYXIgKikgbWFsbG9jKHJ4YnVmX2xlbikpID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vzc19yZWFkIiwgImNhbid0IG1hbGxvYyAlZCBieXRlcyBmb3IgcnhidWZcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnhidWZfbGVuKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfcmVhZCIsICJjYW4ndCBtYWxsb2MgJSIgTkVUU05NUF9QUkl6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInUgYnl0ZXMgZm9yIHJ4YnVmXG4iLCByeGJ1Zl9sZW4pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcnhidWYgPSBpc3AtPnBhY2tldDsKQEAgLTU1ODUsNyArNTg3OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3AtPnBhY2tldF9sZW4gKyByeGJ1Zl9sZW4pOwogICAgICAgICAgICAgICAgIGlmIChuZXdidWYgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vzc19yZWFkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IG1hbGxvYyAlZCBtb3JlIGZvciByeGJ1ZiAoJWQgdG90KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IG1hbGxvYyAlIiBORVRTTk1QX1BSSXoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInUgbW9yZSBmb3IgcnhidWYgKCUiIE5FVFNOTVBfUFJJeiAidSB0b3QpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeGJ1Zl9sZW4sIGlzcC0+cGFja2V0X2xlbiArIHJ4YnVmX2xlbikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNTYwMCw4ICs1ODk1LDggQEAKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgocnhidWYgPSAodV9jaGFyICopIG1hbGxvYyhyeGJ1Zl9sZW4pKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgic2Vzc19yZWFkIiwgImNhbid0IG1hbGxvYyAlZCBieXRlcyBmb3IgcnhidWZcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICByeGJ1Zl9sZW4pKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX3JlYWQiLCAiY2FuJ3QgbWFsbG9jICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICAgICAgICAgInUgYnl0ZXMgZm9yIHJ4YnVmXG4iLCByeGJ1Zl9sZW4pKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQpAQCAtNTYxOSw2ICs1OTE0LDE3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKKyAgICBpZiAoMCA9PSBsZW5ndGggJiYgdHJhbnNwb3J0LT5mbGFncyAmIE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfRU1QVFlfUEtUKSB7CisgICAgICAgIC8qIHRoaXMgYWxsb3dzIGZvciBhIHRyYW5zcG9ydCB0aGF0IG5lZWRzIHRvIHJldHVybiBmcm9tCisgICAgICAgICAqIHBhY2tldCBwcm9jZXNzaW5nIHRoYXQgZG9lc24ndCBuZWNlc3NhcmlseSBoYXZlIGFueQorICAgICAgICAgKiBjb25zdW1hYmxlIGRhdGEgaW4gaXQuICovCisKKyAgICAgICAgLyogcmVzZXQgdGhlIGZsYWcgc2luY2UgaXQncyBhIHBlci1tZXNzYWdlIGZsYWcgKi8KKyAgICAgICAgdHJhbnNwb3J0LT5mbGFncyAmPSAofk5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfRU1QVFlfUEtUKTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICAvKgogICAgICAqIFJlbW90ZSBlbmQgY2xvc2VkIGNvbm5lY3Rpb24uICAKICAgICAgKi8KQEAgLTU2NjIsOSArNTk2OCwxMCBAQAogICAgICAgICAgICAgICAgIHBkdWxlbiA9IGFzbl9jaGVja19wYWNrZXQocHB0ciwgaXNwLT5wYWNrZXRfbGVuKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfcmVhZCIsICIgIGxvb3AgcGFja2V0X2xlbiAlZCwgUERVIGxlbmd0aCAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzcC0+cGFja2V0X2xlbiwgcGR1bGVuKSk7Ci0gICAgICAgICAgICAgCisgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vzc19yZWFkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIgIGxvb3AgcGFja2V0X2xlbiAlIiBORVRTTk1QX1BSSXogInUsIFBEVSBsZW5ndGggJSIKKyAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfUFJJeiAidVxuIiwgaXNwLT5wYWNrZXRfbGVuLCBwZHVsZW4pKTsKKwogICAgICAgICAgICAgaWYgKChwZHVsZW4gPiBNQVhfUEFDS0VUX0xFTkdUSCkgfHwgKHBkdWxlbiA8IDApKSB7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBJbGxlZ2FsIGxlbmd0aCwgZHJvcCB0aGUgY29ubmVjdGlvbi4gIApAQCAtNTY5NCw4ICs2MDAxLDkgQEAKICAgICAgICAgICAgICAgICAgKiBzdGFydCwgc2ltcGx5IHJldHVybiBhbmQgd2FpdCBmb3IgbW9yZSBkYXRhIHRvIGFycml2ZS4KICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vzc19yZWFkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGt0IG5vdCBjb21wbGV0ZSAobmVlZCAlZCBnb3QgJWQgc28gZmFyKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHVsZW4sIGlzcC0+cGFja2V0X2xlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwa3Qgbm90IGNvbXBsZXRlIChuZWVkICUiIE5FVFNOTVBfUFJJeiAidSBnb3QgJSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX1BSSXogInUgc28gZmFyKVxuIiwgcGR1bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzcC0+cGFja2V0X2xlbikpOwogCiAgICAgICAgICAgICAgICAgaWYgKHBwdHIgIT0gaXNwLT5wYWNrZXQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBvcGFxdWUgZnJlZWQgZm9yIHVzIG91dHNpZGUgb2YgbG9vcC4gKi8KQEAgLTU3NjAsOCArNjA2OCw5IEBACiAgICAgICAgICAgICAgKiBPYnZpb3VzbHkgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuISAgCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCi0gICAgICAgICAgICAgICAgICAgICAidG9vIGxhcmdlIHBhY2tldF9sZW4gPSAlbHUsIGRyb3BwaW5nIGNvbm5lY3Rpb24gJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykoaXNwLT5wYWNrZXRfbGVuKSwgdHJhbnNwb3J0LT5zb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICJ0b28gbGFyZ2UgcGFja2V0X2xlbiA9ICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICAgICAgInUsIGRyb3BwaW5nIGNvbm5lY3Rpb24gJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICBpc3AtPnBhY2tldF9sZW4sIHRyYW5zcG9ydC0+c29jayk7CiAgICAgICAgICAgICB0cmFuc3BvcnQtPmZfY2xvc2UodHJhbnNwb3J0KTsKICAgICAgICAgICAgIC8qKiBYWFgtcmtzOiB3aHkgbm8gU05NUF9GUkVFKGlzcC0+cGFja2V0KTsgPz8gKi8KICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU3ODcsOSArNjA5NiwxMSBAQAogICAgICAgICAgKi8KIAogICAgICAgICBtZW1tb3ZlKGlzcC0+cGFja2V0LCBwcHRyLCBpc3AtPnBhY2tldF9sZW4pOwotICAgICAgICBERUJVR01TR1RMKCgic2Vzc19yZWFkIiwgImVuZDogbWVtbW92ZSglcCwgJXAsICVkKTsgcmVhbGxvYyglcCwgJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICBpc3AtPnBhY2tldCwgcHB0ciwgaXNwLT5wYWNrZXRfbGVuLCBpc3AtPnBhY2tldCwKLSAgICAgICAgICAgICAgICAgICAgaXNwLT5wYWNrZXRfbGVuKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX3JlYWQiLAorICAgICAgICAgICAgICAgICAgICAiZW5kOiBtZW1tb3ZlKCVwLCAlcCwgJSIgTkVUU05NUF9QUkl6ICJ1KTsgcmVhbGxvYyglcCwgJSIKKyAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9QUkl6ICJ1KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgaXNwLT5wYWNrZXQsIHBwdHIsIGlzcC0+cGFja2V0X2xlbiwKKwkJICAgIGlzcC0+cGFja2V0LCBpc3AtPnBhY2tldF9sZW4pKTsKIAogICAgICAgICBpZiAoKHJ4YnVmID0gKHVfY2hhciAqKXJlYWxsb2MoaXNwLT5wYWNrZXQsIGlzcC0+cGFja2V0X2xlbikpID09IE5VTEwpIHsKICAgICAgICAgICAgIC8qCkBAIC01ODE5LDYgKzYxMzAsMTkgQEAKIGludAogc25tcF9zZXNzX3JlYWQodm9pZCAqc2Vzc3AsIGZkX3NldCAqIGZkc2V0KQogeworICBpbnQgcmM7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0IGxmZHNldDsKKyAgCisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmxmZHNldCwgRkRfU0VUU0laRSk7CisgIG5ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KCZsZmRzZXQsIGZkc2V0KTsKKyAgcmMgPSBzbm1wX3Nlc3NfcmVhZDIoc2Vzc3AsICZsZmRzZXQpOworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZsZmRzZXQpOworICByZXR1cm4gcmM7Cit9CisKK2ludAorc25tcF9zZXNzX3JlYWQyKHZvaWQgKnNlc3NwLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0KQorewogICAgIHN0cnVjdCBzZXNzaW9uX2xpc3QgKnBzbDsKICAgICBuZXRzbm1wX3Nlc3Npb24gKnBzczsKICAgICBpbnQgICAgICAgICAgICAgcmM7CkBAIC01ODcwLDYgKzYxOTQsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrKTsKIH0KIAoraW50Citzbm1wX3NlbGVjdF9pbmZvMihpbnQgKm51bWZkcywKKyAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQsCisJCSAgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQsIGludCAqYmxvY2spCisgICAgLyoKKyAgICAgKiBpbnB1dDogIHNldCB0byAxIGlmIGlucHV0IHRpbWVvdXQgdmFsdWUgaXMgdW5kZWZpbmVkICAKKyAgICAgKiBzZXQgdG8gMCBpZiBpbnB1dCB0aW1lb3V0IHZhbHVlIGlzIGRlZmluZWQgICAgCisgICAgICogb3V0cHV0OiBzZXQgdG8gMSBpZiBvdXRwdXQgdGltZW91dCB2YWx1ZSBpcyB1bmRlZmluZWQgCisgICAgICogc2V0IHRvIDAgaWYgb3V0cHV0IHJpbWVvdXQgdmxhdWUgaWQgZGVmaW5lZCAgIAorICAgICAqLworeworICAgIHJldHVybiBzbm1wX3Nlc3Nfc2VsZWN0X2luZm8yKCh2b2lkICopIDAsIG51bWZkcywgZmRzZXQsIHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2spOworfQorCiAvKgogICogU2FtZSBhcyBzbm1wX3NlbGVjdF9pbmZvLCBidXQgd29ya3MganVzdCBvbmUgc2Vzc2lvbi4gCiAgKi8KQEAgLTU4NzgsNiArNjIxNywyNyBAQAogICAgICAgICAgICAgICAgICAgICAgIGludCAqbnVtZmRzLAogICAgICAgICAgICAgICAgICAgICAgIGZkX3NldCAqIGZkc2V0LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50ICpibG9jaykKIHsKKyAgaW50IHJjOworICBuZXRzbm1wX2xhcmdlX2ZkX3NldCBsZmRzZXQ7CisKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmbGZkc2V0LCBGRF9TRVRTSVpFKTsKKyAgbmV0c25tcF9jb3B5X2ZkX3NldF90b19sYXJnZV9mZF9zZXQoJmxmZHNldCwgZmRzZXQpOworICByYyA9IHNubXBfc2Vzc19zZWxlY3RfaW5mbzIoc2Vzc3AsIG51bWZkcywgJmxmZHNldCwgdGltZW91dCwgYmxvY2spOworICBpZiAobmV0c25tcF9jb3B5X2xhcmdlX2ZkX3NldF90b19mZF9zZXQoZmRzZXQsICZsZmRzZXQpIDwgMCkgeworICAgICAgc25tcF9sb2coTE9HX0VSUiwKKwkgICAgICJVc2Ugc25tcF9zZXNzX3NlbGVjdF9pbmZvMigpIGZvciBwcm9jZXNzaW5nIgorCSAgICAgIiBsYXJnZSBmaWxlIGRlc2NyaXB0b3JzIik7CisgIH0KKyAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgmbGZkc2V0KTsKKyAgcmV0dXJuIHJjOworfQorCitpbnQKK3NubXBfc2Vzc19zZWxlY3RfaW5mbzIodm9pZCAqc2Vzc3AsCisgICAgICAgICAgICAgICAgICAgICAgIGludCAqbnVtZmRzLAorICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0LAorCQkgICAgICAgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQsIGludCAqYmxvY2spCit7CiAgICAgc3RydWN0IHNlc3Npb25fbGlzdCAqc2xwdGVzdCA9IChzdHJ1Y3Qgc2Vzc2lvbl9saXN0ICopIHNlc3NwOwogICAgIHN0cnVjdCBzZXNzaW9uX2xpc3QgKnNscCwgKm5leHQgPSBOVUxMOwogICAgIG5ldHNubXBfcmVxdWVzdF9saXN0ICpycDsKQEAgLTU5MzMsNyArNjI5Myw3IEBACiAgICAgICAgICAgICAqbnVtZmRzID0gKHNscC0+dHJhbnNwb3J0LT5zb2NrICsgMSk7CiAgICAgICAgIH0KIAotICAgICAgICBGRF9TRVQoc2xwLT50cmFuc3BvcnQtPnNvY2ssIGZkc2V0KTsKKyAgICAgICAgTkVUU05NUF9MQVJHRV9GRF9TRVQoc2xwLT50cmFuc3BvcnQtPnNvY2ssIGZkc2V0KTsKICAgICAgICAgaWYgKHNscC0+aW50ZXJuYWwgIT0gTlVMTCAmJiBzbHAtPmludGVybmFsLT5yZXF1ZXN0cykgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIEZvdW5kIGFub3RoZXIgc2Vzc2lvbiB3aXRoIG91dHN0YW5kaW5nIHJlcXVlc3RzLiAgCkBAIC01OTQzLDggKzYzMDMsOCBAQAogICAgICAgICAgICAgICAgIGlmICgoIXRpbWVyaXNzZXQoJmVhcmxpZXN0KQogICAgICAgICAgICAgICAgICAgICAgfHwgKHRpbWVyY21wKCZycC0+ZXhwaXJlLCAmZWFybGllc3QsIDwpKSkpIHsKICAgICAgICAgICAgICAgICAgICAgZWFybGllc3QgPSBycC0+ZXhwaXJlOwotICAgICAgICAgICAgICAgICAgICBERUJVR01TRygoInZlcmJvc2U6c2Vzc19zZWxlY3QiLCIodG8gaW4gJWQuJWQgc2VjKSAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhcmxpZXN0LnR2X3NlYywgZWFybGllc3QudHZfdXNlYykpOworICAgICAgICAgICAgICAgICAgICBERUJVR01TRygoInZlcmJvc2U6c2Vzc19zZWxlY3QiLCIodG8gaW4gJWQuJTA2ZCBzZWMpICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCllYXJsaWVzdC50dl9zZWMsIChpbnQpZWFybGllc3QudHZfdXNlYykpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTk2MSw4ICs2MzIxLDggQEAKIAogICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfQUxBUk1fRE9OVF9VU0VfU0lHKSkgewogICAgICAgICBuZXh0X2FsYXJtID0gZ2V0X25leHRfYWxhcm1fZGVsYXlfdGltZSgmZGVsdGEpOwotICAgICAgICBERUJVR01TR1QoKCJzZXNzX3NlbGVjdCIsIm5leHQgYWxhcm0gJWQuJWQgc2VjXG4iLAotICAgICAgICAgICAgICAgICAgIGRlbHRhLnR2X3NlYywgZGVsdGEudHZfdXNlYykpOworICAgICAgICBERUJVR01TR1QoKCJzZXNzX3NlbGVjdCIsIm5leHQgYWxhcm0gJWQuJTA2ZCBzZWNcbiIsCisgICAgICAgICAgICAgICAgICAgKGludClkZWx0YS50dl9zZWMsIChpbnQpZGVsdGEudHZfdXNlYykpOwogICAgIH0KICAgICBpZiAobmV4dF9hbGFybSA9PSAwICYmIHJlcXVlc3RzID09IDApIHsKICAgICAgICAgLyoKQEAgLTYwMTAsNyArNjM3MCw3IEBACiAgICAgICAgICAgICBlYXJsaWVzdC50dl91c2VjID0gMTAwOwogICAgICAgICB9CiAgICAgICAgIERFQlVHTVNHVCgoInZlcmJvc2U6c2Vzc19zZWxlY3QiLCJ0aW1lciBkdWUgKnJlYWwqIHNvb24uICVkIHVzZWNcbiIsCi0gICAgICAgICAgICAgICAgICAgZWFybGllc3QudHZfdXNlYykpOworICAgICAgICAgICAgICAgICAgIChpbnQpZWFybGllc3QudHZfdXNlYykpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGVhcmxpZXN0LnR2X3NlYyA9IChlYXJsaWVzdC50dl9zZWMgLSBub3cudHZfc2VjKTsKICAgICAgICAgZWFybGllc3QudHZfdXNlYyA9IChlYXJsaWVzdC50dl91c2VjIC0gbm93LnR2X3VzZWMpOwpAQCAtNjAxOCw4ICs2Mzc4LDggQEAKICAgICAgICAgICAgIGVhcmxpZXN0LnR2X3NlYy0tOwogICAgICAgICAgICAgZWFybGllc3QudHZfdXNlYyA9ICgxMDAwMDAwTCArIGVhcmxpZXN0LnR2X3VzZWMpOwogICAgICAgICB9Ci0gICAgICAgIERFQlVHTVNHVCgoInZlcmJvc2U6c2Vzc19zZWxlY3QiLCJ0aW1lciBkdWUgaW4gJWQuJWQgc2VjXG4iLAotICAgICAgICAgICAgICAgICAgIGVhcmxpZXN0LnR2X3NlYywgZWFybGllc3QudHZfdXNlYykpOworICAgICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOnNlc3Nfc2VsZWN0IiwidGltZXIgZHVlIGluICVkLiUwNmQgc2VjXG4iLAorICAgICAgICAgICAgICAgICAgIChpbnQpZWFybGllc3QudHZfc2VjLCAoaW50KWVhcmxpZXN0LnR2X3VzZWMpKTsKICAgICB9CiAKICAgICAvKgpAQCAtNjAyNyw4ICs2Mzg3LDggQEAKICAgICAgKi8KICAgICBpZiAoKCpibG9jayB8fCAodGltZXJjbXAoJmVhcmxpZXN0LCB0aW1lb3V0LCA8KSkpKSB7CiAgICAgICAgIERFQlVHTVNHVCgoInZlcmJvc2U6c2Vzc19zZWxlY3QiLAotICAgICAgICAgICAgICAgICAgICJzZXR0aW5nIHRpbWVyIHRvICVkLiVkIHNlYywgY2xlYXIgYmxvY2sgKHdhcyAlZClcbiIsCi0gICAgICAgICAgICAgICAgICAgZWFybGllc3QudHZfc2VjLCBlYXJsaWVzdC50dl91c2VjLCAqYmxvY2spKTsKKyAgICAgICAgICAgICAgICAgICAic2V0dGluZyB0aW1lciB0byAlZC4lMDZkIHNlYywgY2xlYXIgYmxvY2sgKHdhcyAlZClcbiIsCisgICAgICAgICAgICAgICAgICAgKGludCllYXJsaWVzdC50dl9zZWMsIChpbnQpZWFybGllc3QudHZfdXNlYywgKmJsb2NrKSk7CiAgICAgICAgICp0aW1lb3V0ID0gZWFybGllc3Q7CiAgICAgICAgICpibG9jayA9IDA7CiAgICAgfQpAQCAtNjE0Nyw2ICs2NTA3LDggQEAKICAgICAgICAgeGR1bXAocGFja2V0LCBsZW5ndGgsICIiKTsKICAgICB9CiAKKyAgICBERUJVR01TR1RMKCgic2Vzc19wcm9jZXNzX3BhY2tldCIsICJyZXNlbmRpbmcgbWVzc2FnZSBpZCMlbGQgcmVxaWQjJWxkIHJwX3JlcWlkIyVsZCBycF9tc2dpZCMlbGRcbiIsCisgICAgICAgICAgICAgICAgcnAtPnBkdS0+bXNnaWQsIHJwLT5wZHUtPnJlcWlkLCBycC0+cmVxdWVzdF9pZCwgcnAtPm1lc3NhZ2VfaWQpKTsKICAgICByZXN1bHQgPSB0cmFuc3BvcnQtPmZfc2VuZCh0cmFuc3BvcnQsIHBhY2tldCwgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYocnAtPnBkdS0+dHJhbnNwb3J0X2RhdGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYocnAtPnBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKSk7CkBAIC02NjA5LDcgKzY5NzEsNyBAQAogc25tcF9wZHVfYWRkX3ZhcmlhYmxlKG5ldHNubXBfcGR1ICpwZHUsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmFtZV9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIHR5cGUsIGNvbnN0IHVfY2hhciAqIHZhbHVlLCBzaXplX3QgbGVuKQorICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB0eXBlLCBjb25zdCB2b2lkICogdmFsdWUsIHNpemVfdCBsZW4pCiB7CiAgICAgcmV0dXJuIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnBkdS0+dmFyaWFibGVzLCBuYW1lLCBuYW1lX2xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCB2YWx1ZSwgbGVuKTsKQEAgLTY2MjMsNyArNjk4NSw3IEBACiBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKiB2YXJsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmFtZV9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB0eXBlLCBjb25zdCB1X2NoYXIgKiB2YWx1ZSwgc2l6ZV90IGxlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIHR5cGUsIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IGxlbikKIHsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMsICp2dG1wOwogICAgIGludCByYzsKQEAgLTY2NDEsNyArNzAwMyw3IEBACiAgICAgaWYgKCggMCAhPSByYyApIHx8CiAgICAgICAgIChuYW1lICE9IE5VTEwgJiYgc25tcF9zZXRfdmFyX29iamlkKHZhcnMsIG5hbWUsIG5hbWVfbGVuZ3RoKSkpIHsKICAgICAgICAgc25tcF9mcmVlX3Zhcih2YXJzKTsKLSAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyoKQEAgLTY3ODksNyArNzE1MSw3IEBACiAgICAgICAgICAgICBicmVhazsKICNlbmRpZiAvKiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcgKi8KICAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsIEFTTl9JTlRFR0VSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIGx0bXAsIHNpemVvZihsdG1wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHRtcCwgc2l6ZW9mKGx0bXApKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlICd1JzoKQEAgLTY4MDMsNyArNzE2NSw3IEBACiAgICAgICAgIGx0bXAgPSBzdHJ0b3VsKHZhbHVlLCAmZWNwLCAxMCk7CiAgICAgICAgIGlmICgqdmFsdWUgJiYgISplY3ApCiAgICAgICAgICAgICBzbm1wX3BkdV9hZGRfdmFyaWFibGUocGR1LCBuYW1lLCBuYW1lX2xlbmd0aCwgQVNOX1VOU0lHTkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBsdG1wLCBzaXplb2YobHRtcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdG1wLCBzaXplb2YobHRtcCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGJyZWFrOwpAQCAtNjgxOSw3ICs3MTgxLDcgQEAKICAgICAgICAgbHRtcCA9IHN0cnRvdWwodmFsdWUsICZlY3AsIDEwKTsKICAgICAgICAgaWYgKCp2YWx1ZSAmJiAhKmVjcCkKICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLCBBU05fVUlOVEVHRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIGx0bXAsIHNpemVvZihsdG1wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0bXAsIHNpemVvZihsdG1wKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgYnJlYWs7CkBAIC02ODM1LDcgKzcxOTcsNyBAQAogICAgICAgICBsdG1wID0gc3RydG91bCh2YWx1ZSwgJmVjcCwgMTApOwogICAgICAgICBpZiAoKnZhbHVlICYmICEqZWNwKQogICAgICAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsIEFTTl9DT1VOVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBsdG1wLCBzaXplb2YobHRtcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdG1wLCBzaXplb2YobHRtcCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGJyZWFrOwpAQCAtNjg1MCw3ICs3MjEyLDcgQEAKICNlbmRpZiAvKiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcgKi8KICAgICAgICAgaWYgKHJlYWQ2NCgmYzY0dG1wLCB2YWx1ZSkpCiAgICAgICAgICAgICBzbm1wX3BkdV9hZGRfdmFyaWFibGUocGR1LCBuYW1lLCBuYW1lX2xlbmd0aCwgQVNOX0NPVU5URVI2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgYzY0dG1wLCBzaXplb2YoYzY0dG1wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmM2NHRtcCwgc2l6ZW9mKGM2NHRtcCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGJyZWFrOwpAQCAtNjg2Niw3ICs3MjI4LDcgQEAKICAgICAgICAgbHRtcCA9IHN0cnRvdWwodmFsdWUsICZlY3AsIDEwKTsKICAgICAgICAgaWYgKCp2YWx1ZSAmJiAhKmVjcCkKICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLCBBU05fVElNRVRJQ0tTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBsdG1wLCBzaXplb2YobG9uZykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdG1wLCBzaXplb2YobG9uZykpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGJyZWFrOwpAQCAtNjg4Miw3ICs3MjQ0LDcgQEAKICAgICAgICAgYXRtcCA9IGluZXRfYWRkcih2YWx1ZSk7CiAgICAgICAgIGlmIChhdG1wICE9IChpbl9hZGRyX3QpIC0xIHx8ICFzdHJjbXAodmFsdWUsICIyNTUuMjU1LjI1NS4yNTUiKSkKICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLCBBU05fSVBBRERSRVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBhdG1wLCBzaXplb2YoYXRtcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhdG1wLCBzaXplb2YoYXRtcCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGJyZWFrOwpAQCAtNjkwMCw5ICs3MjYyLDggQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRpbnQgPSBNQVhfT0lEX0xFTjsKICAgICAgICAgICAgIGlmIChzbm1wX3BhcnNlX29pZCh2YWx1ZSwgKG9pZCAqKSBidWYsICZ0aW50KSkgewotICAgICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fT0JKRUNUX0lELCBidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihvaWQpICogdGludCk7CisgICAgICAgICAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsIEFTTl9PQkpFQ1RfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Ziwgc2l6ZW9mKG9pZCkgKiB0aW50KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc25tcF9lcnJubzsgICAgLypNVENSSVRJQ0FMX1JFU09VUkNFICovCiAgICAgICAgICAgICB9CkBAIC02OTIwLDggKzcyODEsOCBAQAogICAgICAgICB9CiAJaWYgKCdzJyA9PSB0eXBlICYmIGRvX2hpbnQgJiYgIXBhcnNlX29jdGV0X2hpbnQodHAtPmhpbnQsIHZhbHVlLCAmaGludHB0ciwgJml0bXApKSB7CiAgICAgICAgICAgICBpZiAoX2NoZWNrX3JhbmdlKHRwLCBpdG1wLCAmcmVzdWx0LCAiVmFsdWUgZG9lcyBub3QgbWF0Y2ggRElTUExBWS1ISU5UIikpIHsKLSAgICAgICAgICAgICAgICBzbm1wX3BkdV9hZGRfdmFyaWFibGUocGR1LCBuYW1lLCBuYW1lX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX09DVEVUX1NUUiwgaGludHB0ciwgaXRtcCk7CisgICAgICAgICAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRwdHIsIGl0bXApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgU05NUF9GUkVFKGhpbnRwdHIpOwogICAgICAgICAgICAgaGludHB0ciA9IGJ1ZjsKQEAgLTY5NTgsNyArNzMxOSw3IEBACiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAnbic6Ci0gICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLCBBU05fTlVMTCwgMCwgMCk7CisgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLCBBU05fTlVMTCwgTlVMTCwgMCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAnYic6CkBAIC03MDMzLDcgKzczOTQsNyBAQAogICAgIGNhc2UgJ1UnOgogICAgICAgICBpZiAocmVhZDY0KCZjNjR0bXAsIHZhbHVlKSkKICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLCBBU05fT1BBUVVFX1U2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgYzY0dG1wLCBzaXplb2YoYzY0dG1wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmM2NHRtcCwgc2l6ZW9mKGM2NHRtcCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGJyZWFrOwpAQCAtNzA0MSw3ICs3NDAyLDcgQEAKICAgICBjYXNlICdJJzoKICAgICAgICAgaWYgKHJlYWQ2NCgmYzY0dG1wLCB2YWx1ZSkpCiAgICAgICAgICAgICBzbm1wX3BkdV9hZGRfdmFyaWFibGUocGR1LCBuYW1lLCBuYW1lX2xlbmd0aCwgQVNOX09QQVFVRV9JNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIGM2NHRtcCwgc2l6ZW9mKGM2NHRtcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjNjR0bXAsIHNpemVvZihjNjR0bXApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBicmVhazsKQEAgLTcwNDksMTYgKzc0MTAsMTUgQEAKICAgICBjYXNlICdGJzoKICAgICAgICAgaWYgKHNzY2FuZih2YWx1ZSwgIiVmIiwgJmZ0bXApID09IDEpCiAgICAgICAgICAgICBzbm1wX3BkdV9hZGRfdmFyaWFibGUocGR1LCBuYW1lLCBuYW1lX2xlbmd0aCwgQVNOX09QQVFVRV9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgZnRtcCwgc2l6ZW9mKGZ0bXApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnRtcCwgc2l6ZW9mKGZ0bXApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgJ0QnOgogICAgICAgICBpZiAoc3NjYW5mKHZhbHVlLCAiJWxmIiwgJmR0bXApID09IDEpCi0gICAgICAgICAgICBzbm1wX3BkdV9hZGRfdmFyaWFibGUocGR1LCBuYW1lLCBuYW1lX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fT1BBUVVFX0RPVUJMRSwgKHVfY2hhciAqKSAmIGR0bXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGR0bXApKTsKKyAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLCBBU05fT1BBUVVFX0RPVUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHRtcCwgc2l6ZW9mKGR0bXApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBicmVhazsKQEAgLTcyNTksMTMgKzc2MTksMTQgQEAKIG9pZCAgICAgICAgICAgICoKIHNubXBfZHVwbGljYXRlX29iamlkKGNvbnN0IG9pZCAqIG9ialRvQ29weSwgc2l6ZV90IG9ialRvQ29weUxlbikKIHsKLSAgICBvaWQgICAgICAgICAgICAqcmV0dXJuT2lkID0gTlVMTDsKKyAgICBvaWQgICAgICAgICAgICAqcmV0dXJuT2lkOwogICAgIGlmIChvYmpUb0NvcHkgIT0gTlVMTCAmJiBvYmpUb0NvcHlMZW4gIT0gMCkgewogICAgICAgICByZXR1cm5PaWQgPSAob2lkICopIG1hbGxvYyhvYmpUb0NvcHlMZW4gKiBzaXplb2Yob2lkKSk7CiAgICAgICAgIGlmIChyZXR1cm5PaWQpIHsKLSAgICAgICAgICAgIG1lbW1vdmUocmV0dXJuT2lkLCBvYmpUb0NvcHksIG9ialRvQ29weUxlbiAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgICAgIG1lbWNweShyZXR1cm5PaWQsIG9ialRvQ29weSwgb2JqVG9Db3B5TGVuICogc2l6ZW9mKG9pZCkpOwogICAgICAgICB9Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICByZXR1cm5PaWQgPSBOVUxMOwogICAgIHJldHVybiByZXR1cm5PaWQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9jbGllbnQuYyBiL3NubXBsaWIvc25tcF9jbGllbnQuYwppbmRleCA3ZWVlM2ExLi5iMzRjOTIwIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfY2xpZW50LmMKKysrIGIvc25tcGxpYi9zbm1wX2NsaWVudC5jCkBAIC05NSw2ICs5NSw4IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaD4KQEAgLTE2MSw2ICsxNjMsNyBAQAogfQogCiAKKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KIHN0YXRpYyBpbnQKIHNubXBfc3luY2hfaW5wdXQoaW50IG9wLAogICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLApAQCAtMTcwLDEwICsxNzMsMTQgQEAKICAgICBpbnQgICAgICAgICAgICAgcnB0X3R5cGU7CiAKICAgICBpZiAocmVxaWQgIT0gc3RhdGUtPnJlcWlkICYmIHBkdSAmJiBwZHUtPmNvbW1hbmQgIT0gU05NUF9NU0dfUkVQT1JUKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3N5bmNoIiwgIlVuZXhwZWN0ZWQgcmVzcG9uc2UgKFJlcUlEOiAlZCwlZCAtIENtZCAlZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWlkLCBzdGF0ZS0+cmVxaWQsIHBkdS0+Y29tbWFuZCApKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgc3RhdGUtPndhaXRpbmcgPSAwOworICAgIERFQlVHTVNHVEwoKCJzbm1wX3N5bmNoIiwgIlJlc3BvbnNlIChSZXFJRDogJWQgLSBDbWQgJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWlkLCAocGR1ID8gcGR1LT5jb21tYW5kIDogLTEpKSk7CiAKICAgICBpZiAob3AgPT0gTkVUU05NUF9DQUxMQkFDS19PUF9SRUNFSVZFRF9NRVNTQUdFICYmIHBkdSkgewogICAgICAgICBpZiAocGR1LT5jb21tYW5kID09IFNOTVBfTVNHX1JFUE9SVCkgewpAQCAtMjM2LDExICsyNDMsMTEgQEAKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICBtZW1tb3ZlKG5ld3ZhciwgdmFyLCBzaXplb2YobmV0c25tcF92YXJpYWJsZV9saXN0KSk7Ci0gICAgbmV3dmFyLT5uZXh0X3ZhcmlhYmxlID0gMDsKLSAgICBuZXd2YXItPm5hbWUgPSAwOwotICAgIG5ld3Zhci0+dmFsLnN0cmluZyA9IDA7Ci0gICAgbmV3dmFyLT5kYXRhID0gMDsKLSAgICBuZXd2YXItPmRhdGFGcmVlSG9vayA9IDA7CisgICAgbmV3dmFyLT5uZXh0X3ZhcmlhYmxlID0gTlVMTDsKKyAgICBuZXd2YXItPm5hbWUgPSBOVUxMOworICAgIG5ld3Zhci0+dmFsLnN0cmluZyA9IE5VTEw7CisgICAgbmV3dmFyLT5kYXRhID0gTlVMTDsKKyAgICBuZXd2YXItPmRhdGFGcmVlSG9vayA9IE5VTEw7CiAgICAgbmV3dmFyLT5pbmRleCA9IDA7CiAKICAgICAvKgpAQCAtMjY1LDkgKzI3MiwxMyBAQAogICAgICAgICAgICAgbWVtbW92ZShuZXd2YXItPnZhbC5zdHJpbmcsIHZhci0+dmFsLnN0cmluZywgdmFyLT52YWxfbGVuKTsKICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgLyogZml4IHRoZSBwb2ludGVyIHRvIG5ldyBsb2NhbCBzdG9yZSAqLwogICAgICAgICAgICAgbmV3dmFyLT52YWwuc3RyaW5nID0gbmV3dmFyLT5idWY7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogbm8gbmVlZCBmb3IgYSBtZW1tb3ZlLCBzaW5jZSB3ZSBjb3BpZWQgdGhlIHdob2xlIHZhcgorICAgICAgICAgICAgICogc3RydWN0IChhbmQgdGh1cyB2YXItPmJ1ZikgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAgICAgICovCiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBuZXd2YXItPnZhbC5zdHJpbmcgPSAwOworICAgICAgICBuZXd2YXItPnZhbC5zdHJpbmcgPSBOVUxMOwogICAgICAgICBuZXd2YXItPnZhbF9sZW4gPSAwOwogICAgIH0KIApAQCAtMjgxLDkgKzI5Miw5IEBACiAgKiBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bCwgMSBpZiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4KICAqLwogaW50Ci1zbm1wX2Nsb25lX21lbSh2b2lkICoqZHN0UHRyLCB2b2lkICpzcmNQdHIsIHVuc2lnbmVkIGxlbikKK3NubXBfY2xvbmVfbWVtKHZvaWQgKipkc3RQdHIsIGNvbnN0IHZvaWQgKnNyY1B0ciwgdW5zaWduZWQgbGVuKQogewotICAgICpkc3RQdHIgPSAwOworICAgICpkc3RQdHIgPSBOVUxMOwogICAgIGlmIChzcmNQdHIpIHsKICAgICAgICAgKmRzdFB0ciA9IG1hbGxvYyhsZW4gKyAxKTsKICAgICAgICAgaWYgKCEqZHN0UHRyKSB7CkBAIC0zNDMsMjAgKzM1NCwyMCBAQAogCiAgICAgbmV3cGR1ID0gKG5ldHNubXBfcGR1ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF9wZHUpKTsKICAgICBpZiAoIW5ld3BkdSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIG1lbW1vdmUobmV3cGR1LCBwZHUsIHNpemVvZihuZXRzbm1wX3BkdSkpOwogCiAgICAgLyoKICAgICAgKiByZXNldCBjb3BpZWQgcG9pbnRlcnMgaWYgY29weSBmYWlscyAKICAgICAgKi8KLSAgICBuZXdwZHUtPnZhcmlhYmxlcyA9IDA7Ci0gICAgbmV3cGR1LT5lbnRlcnByaXNlID0gMDsKLSAgICBuZXdwZHUtPmNvbW11bml0eSA9IDA7Ci0gICAgbmV3cGR1LT5zZWN1cml0eUVuZ2luZUlEID0gMDsKLSAgICBuZXdwZHUtPnNlY3VyaXR5TmFtZSA9IDA7Ci0gICAgbmV3cGR1LT5jb250ZXh0RW5naW5lSUQgPSAwOwotICAgIG5ld3BkdS0+Y29udGV4dE5hbWUgPSAwOwotICAgIG5ld3BkdS0+dHJhbnNwb3J0X2RhdGEgPSAwOworICAgIG5ld3BkdS0+dmFyaWFibGVzID0gTlVMTDsKKyAgICBuZXdwZHUtPmVudGVycHJpc2UgPSBOVUxMOworICAgIG5ld3BkdS0+Y29tbXVuaXR5ID0gTlVMTDsKKyAgICBuZXdwZHUtPnNlY3VyaXR5RW5naW5lSUQgPSBOVUxMOworICAgIG5ld3BkdS0+c2VjdXJpdHlOYW1lID0gTlVMTDsKKyAgICBuZXdwZHUtPmNvbnRleHRFbmdpbmVJRCA9IE5VTEw7CisgICAgbmV3cGR1LT5jb250ZXh0TmFtZSA9IE5VTEw7CisgICAgbmV3cGR1LT50cmFuc3BvcnRfZGF0YSA9IE5VTEw7CiAKICAgICAvKgogICAgICAqIGNvcHkgYnVmZmVycyBpbmRpdmlkdWFsbHkuIElmIGFueSBjb3B5IGZhaWxzLCBhbGwgYXJlIGZyZWVkLiAKQEAgLTM3Nyw3ICszODgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnRyYW5zcG9ydF9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCkpIHsKICAgICAgICAgc25tcF9mcmVlX3BkdShuZXdwZHUpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKHBkdSAhPSBOVUxMICYmIHBkdS0+c2VjdXJpdHlTdGF0ZVJlZiAmJgpAQCAtMzkyLDYgKzQwMyw3IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KKwogICAgIGlmICgoc3B0ciA9IGZpbmRfc2VjX21vZChuZXdwZHUtPnNlY3VyaXR5TW9kZWwpKSAhPSBOVUxMICYmCiAgICAgICAgIHNwdHItPnBkdV9jbG9uZSAhPSBOVUxMKSB7CiAgICAgICAgIC8qCkBAIC00MzMsMTMgKzQ0NSwxMyBAQAogICAgICAgICAgICAgaWYgKG5ld3ZhcikKICAgICAgICAgICAgICAgICBmcmVlKChjaGFyICopIG5ld3Zhcik7CiAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZChuZXdoZWFkKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAogICAgICAgICAvKgogICAgICAgICAgKiBhZGQgY2xvbmVkIHZhcmlhYmxlIHRvIG5ldyBsaXN0ICAKICAgICAgICAgICovCi0gICAgICAgIGlmICgwID09IG5ld2hlYWQpCisgICAgICAgIGlmIChOVUxMID09IG5ld2hlYWQpCiAgICAgICAgICAgICBuZXdoZWFkID0gbmV3dmFyOwogICAgICAgICBpZiAob2xkdmFyKQogICAgICAgICAgICAgb2xkdmFyLT5uZXh0X3ZhcmlhYmxlID0gbmV3dmFyOwpAQCAtNDg0LDcgKzQ5Niw3IEBACiAgICAgaW50ICAgICAgICAgICAgIGRyb3BfaWR4OwogCiAgICAgaWYgKCFuZXdwZHUpCi0gICAgICAgIHJldHVybiAwOyAgICAgICAgICAgICAgIC8qIHdoZXJlIGlzIFBEVSB0byBjb3B5IHRvID8gKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgLyogd2hlcmUgaXMgUERVIHRvIGNvcHkgdG8gPyAqLwogCiAgICAgaWYgKGRyb3BfZXJyKQogICAgICAgICBkcm9wX2lkeCA9IHBkdS0+ZXJyaW5kZXggLSBza2lwX2NvdW50OwpAQCAtNjEzLDE4ICs2MjUsMTggQEAKIAogICAgIGlmICgocGR1LT5jb21tYW5kICE9IFNOTVBfTVNHX1JFU1BPTlNFKQogICAgICAgICB8fCAocGR1LT5lcnJzdGF0ID09IFNOTVBfRVJSX05PRVJST1IpCi0gICAgICAgIHx8ICgwID09IHBkdS0+dmFyaWFibGVzKQorICAgICAgICB8fCAoTlVMTCA9PSBwZHUtPnZhcmlhYmxlcykKICAgICAgICAgfHwgKHBkdS0+ZXJyaW5kZXggPiBzbm1wX3ZhcmJpbmRfbGVuKHBkdSkpCiAgICAgICAgIHx8IChwZHUtPmVycmluZGV4IDw9IDApKSB7Ci0gICAgICAgIHJldHVybiAwOyAgICAgICAgICAgICAgIC8qIHByZS1jb25kaXRpb24gdGVzdHMgZmFpbCAqLworICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAvKiBwcmUtY29uZGl0aW9uIHRlc3RzIGZhaWwgKi8KICAgICB9CiAKICAgICBuZXdwZHUgPSBfY2xvbmVfcGR1KHBkdSwgMSk7ICAgICAgICAvKiBjb3BpZXMgYWxsIGV4Y2VwdCBlcnJvcmVkIHZhcmlhYmxlICovCiAgICAgaWYgKCFuZXdwZHUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIW5ld3BkdS0+dmFyaWFibGVzKSB7CiAgICAgICAgIHNubXBfZnJlZV9wZHUobmV3cGR1KTsKLSAgICAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgLyogbm8gdmFyaWFibGVzLiAic2hvdWxkIG5vdCBoYXBwZW4iICovCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgIC8qIG5vIHZhcmlhYmxlcy4gInNob3VsZCBub3QgaGFwcGVuIiAqLwogICAgIH0KICAgICBuZXdwZHUtPmNvbW1hbmQgPSBjb21tYW5kOwogICAgIG5ld3BkdS0+cmVxaWQgPSBzbm1wX2dldF9uZXh0X3JlcWlkKCk7CkBAIC03MTUsMTAgKzcyNyw4IEBACiBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiBuZXd2YXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwgbG9uZyB2YWwpCiB7Ci0gICAgY29uc3QgbG9uZyB2ID0gdmFsOwogICAgIG5ld3Zhci0+dHlwZSA9IHR5cGU7Ci0gICAgcmV0dXJuIHNubXBfc2V0X3Zhcl92YWx1ZShuZXd2YXIsICZ2LCBzaXplb2YobG9uZykpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBzbm1wX3NldF92YXJfdmFsdWUobmV3dmFyLCAmdmFsLCBzaXplb2YobG9uZykpOwogfQogCiBpbnQKQEAgLTc4Myw3ICs3OTMsNyBAQAogICAgIGlmICh2YXJzLT52YWwuc3RyaW5nICYmIHZhcnMtPnZhbC5zdHJpbmcgIT0gdmFycy0+YnVmKSB7CiAgICAgICAgIGZyZWUodmFycy0+dmFsLnN0cmluZyk7CiAgICAgfQotICAgIHZhcnMtPnZhbC5zdHJpbmcgPSAwOworICAgIHZhcnMtPnZhbC5zdHJpbmcgPSBOVUxMOwogICAgIHZhcnMtPnZhbF9sZW4gPSAwOwogCiAgICAgaWYgKHZhbHVlID09IE5VTEwgJiYgbGVuID4gMCkgewpAQCAtNzk0LDcgKzgwNCw3IEBACiAgICAgLyoKICAgICAgKiB1c2UgYnVpbHQtaW4gc3RvcmFnZSBmb3Igc21hbGxlciB2YWx1ZXMgCiAgICAgICovCi0gICAgaWYgKGxlbiA8PSAoc2l6ZW9mKHZhcnMtPmJ1ZikgLSAxKSkgeworICAgIGlmIChsZW4gPD0gc2l6ZW9mKHZhcnMtPmJ1ZikpIHsKICAgICAgICAgdmFycy0+dmFsLnN0cmluZyA9ICh1X2NoYXIgKikgdmFycy0+YnVmOwogICAgICAgICBsYXJnZXZhbCA9IDA7CiAgICAgfQpAQCAtODMzLDcgKzg0Myw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZgotI2lmIGRlZmluZWQoU0laRU9GX0xPTkdfTE9ORykgJiYgKFNJWkVPRl9MT05HICE9IFNJWkVPRl9MT05HX0xPTkcpICYmIChTSVpFT0ZfTE9OR19MT05HICE9IFNJWkVPRl9JTlRNQVhfVCkKKyNpZiBkZWZpbmVkKFNJWkVPRl9MT05HX0xPTkcpICYmIChTSVpFT0ZfTE9ORyAhPSBTSVpFT0ZfTE9OR19MT05HKQorI2lmICFkZWZpbmVkKFNJWkVPRl9JTlRNQVhfVCkgfHwgKFNJWkVPRl9MT05HX0xPTkcgIT0gU0laRU9GX0lOVE1BWF9UKQogICAgICAgICBlbHNlIGlmICh2YXJzLT52YWxfbGVuID09IHNpemVvZihsb25nIGxvbmcpKXsKICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyAgICp2YWxfdWxsb25nCiAgICAgICAgICAgICAgICAgPSAoY29uc3QgdW5zaWduZWQgbG9uZyBsb25nICopIHZhbHVlOwpAQCAtODQ0LDcgKzg1NSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZgotI2lmIFNJWkVPRl9MT05HICE9IFNJWkVPRl9JTlRNQVhfVAorI2VuZGlmCisjaWYgZGVmaW5lZChTSVpFT0ZfSU5UTUFYX1QpICYmIChTSVpFT0ZfTE9ORyAhPSBTSVpFT0ZfSU5UTUFYX1QpCiAgICAgICAgIGVsc2UgaWYgKHZhcnMtPnZhbF9sZW4gPT0gc2l6ZW9mKGludG1heF90KSl7CiAgICAgICAgICAgICBjb25zdCB1aW50bWF4X3QgKnZhbF91aW50bWF4X3QKICAgICAgICAgICAgICAgICA9IChjb25zdCB1aW50bWF4X3QgKikgdmFsdWU7CkBAIC04NzQsNyArODg2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPSAoY29uc3QgY2hhciAqKSB2YWx1ZTsKICAgICAgICAgICAgICAgICAqKHZhcnMtPnZhbC5pbnRlZ2VyKSA9IChsb25nKSAqdmFsX2NoYXI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNvbnN0IHVfY2hhciAgICAqdmFsX3VjaGFyIAorICAgICAgICAgICAgICAgICAgICBjb25zdCB1X2NoYXIgICAgKnZhbF91Y2hhcgogICAgICAgICAgICAgICAgICAgICA9IChjb25zdCB1X2NoYXIgKikgdmFsdWU7CiAgICAgICAgICAgICAgICAgKih2YXJzLT52YWwuaW50ZWdlcikgPSAodW5zaWduZWQgbG9uZykgKnZhbF91Y2hhcjsKICAgICAgICAgICAgIH0KQEAgLTkxMSw3ICs5MjMsNyBAQAogICAgIGNhc2UgQVNOX0JJVF9TVFI6CiAgICAgY2FzZSBBU05fT1BBUVVFOgogICAgIGNhc2UgQVNOX05TQVA6Ci0gICAgICAgIGlmIChsYXJnZXZhbCkgeworICAgICAgICBpZiAodmFycy0+dmFsX2xlbiA+PSBzaXplb2YodmFycy0+YnVmKSkgewogICAgICAgICAgICAgdmFycy0+dmFsLnN0cmluZyA9ICh1X2NoYXIgKikgbWFsbG9jKHZhcnMtPnZhbF9sZW4gKyAxKTsKICAgICAgICAgfQogICAgICAgICBpZiAodmFycy0+dmFsLnN0cmluZyA9PSBOVUxMKSB7CkBAIC0xMDM3LDcgKzEwNDksNyBAQAogICAgICAgICBzbm1wX3NlbGVjdF9pbmZvKCZudW1mZHMsICZmZHNldCwgdHZwLCAmYmxvY2spOwogICAgICAgICBpZiAoYmxvY2sgPT0gMSkKICAgICAgICAgICAgIHR2cCA9IE5VTEw7ICAgICAgICAgLyogYmxvY2sgd2l0aG91dCB0aW1lb3V0ICovCi0gICAgICAgIGNvdW50ID0gc2VsZWN0KG51bWZkcywgJmZkc2V0LCAwLCAwLCB0dnApOworICAgICAgICBjb3VudCA9IHNlbGVjdChudW1mZHMsICZmZHNldCwgTlVMTCwgTlVMTCwgdHZwKTsKICAgICAgICAgaWYgKGNvdW50ID4gMCkgewogICAgICAgICAgICAgc25tcF9yZWFkKCZmZHNldCk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMDcwLDcgKzEwODIsNyBAQAogCiAgICAgICAgIGlmICggc3MtPmZsYWdzICYgU05NUF9GTEFHU19SRVNQX0NBTExCQUNLICkgewogICAgICAgICAgICAgdm9pZCAoKmNiKSh2b2lkKTsKLSAgICAgICAgICAgIGNiID0gc3MtPm15dm9pZDsKKyAgICAgICAgICAgIGNiID0gKHZvaWQgKCopKHZvaWQpKShzcy0+bXl2b2lkKTsKICAgICAgICAgICAgIGNiKCk7ICAgICAgICAvKiBVc2VkIHRvIGludm9rZSAnbmV0c25tcF9jaGVja19vdXRzdGFuZGluZ19hZ2VudF9yZXF1ZXN0cygpOycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBpbnRlcm5hbCBBZ2VudFggcXVlcmllcy4gICovCiAgICAgICAgIH0KQEAgLTExMjgsNyArMTE0MCw3IEBACiAgICAgICAgIHNubXBfc2Vzc19zZWxlY3RfaW5mbyhzZXNzcCwgJm51bWZkcywgJmZkc2V0LCB0dnAsICZibG9jayk7CiAgICAgICAgIGlmIChibG9jayA9PSAxKQogICAgICAgICAgICAgdHZwID0gTlVMTDsgICAgICAgICAvKiBibG9jayB3aXRob3V0IHRpbWVvdXQgKi8KLSAgICAgICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmZmRzZXQsIDAsIDAsIHR2cCk7CisgICAgICAgIGNvdW50ID0gc2VsZWN0KG51bWZkcywgJmZkc2V0LCBOVUxMLCBOVUxMLCB0dnApOwogICAgICAgICBpZiAoY291bnQgPiAwKSB7CiAgICAgICAgICAgICBzbm1wX3Nlc3NfcmVhZChzZXNzcCwgJmZkc2V0KTsKICAgICAgICAgfSBlbHNlCkBAIC0xMjA1LDE1ICsxMjE3LDQ0IEBACiAgKiAgb3ZlciB0aGUgc3BlY2lmaWVkIFNOTVAgc2Vzc2lvbi4KICAqCiAgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KIHN0YXRpYyBuZXRzbm1wX3Nlc3Npb24gKl9kZWZfcXVlcnlfc2Vzc2lvbiA9IE5VTEw7CiB2b2lkCiBuZXRzbm1wX3F1ZXJ5X3NldF9kZWZhdWx0X3Nlc3Npb24oIG5ldHNubXBfc2Vzc2lvbiAqc2VzcykgeworICAgIERFQlVHTVNHVEwoKCJpcXVlcnkiLCAic2V0IGRlZmF1bHQgc2Vzc2lvbiAlcFxuIiwgc2VzcykpOwogICAgIF9kZWZfcXVlcnlfc2Vzc2lvbiA9IHNlc3M7CiB9CiAKKy8qKgorICogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBpbnRlcm5hbCBxdWVyeSBzZXNzaW9uLgorICovCituZXRzbm1wX3Nlc3Npb24gKgorbmV0c25tcF9xdWVyeV9nZXRfZGVmYXVsdF9zZXNzaW9uX3VuY2hlY2tlZCggdm9pZCApIHsKKyAgICBERUJVR01TR1RMKCgiaXF1ZXJ5IiwgImdldCBkZWZhdWx0IHNlc3Npb24gJXBcbiIsIF9kZWZfcXVlcnlfc2Vzc2lvbikpOworICAgIHJldHVybiBfZGVmX3F1ZXJ5X3Nlc3Npb247Cit9CisKKy8qKgorICogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBpbnRlcm5hbCBxdWVyeSBzZXNzaW9uIGFuZCBsb2cgYQorICogd2FybmluZyBtZXNzYWdlIG9uY2UgaWYgdGhpcyBzZXNzaW9uIGRvZXMgbm90IGV4aXN0LgorICovCiBuZXRzbm1wX3Nlc3Npb24gKgogbmV0c25tcF9xdWVyeV9nZXRfZGVmYXVsdF9zZXNzaW9uKCB2b2lkICkgewotICAgIHJldHVybiBfZGVmX3F1ZXJ5X3Nlc3Npb247CisgICAgc3RhdGljIGludCB3YXJuaW5nX2xvZ2dlZCA9IDA7CisKKyAgICBpZiAoISBfZGVmX3F1ZXJ5X3Nlc3Npb24gJiYgISB3YXJuaW5nX2xvZ2dlZCkgeworICAgICAgICBpZiAoISBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfU0VDTkFNRSkpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgImlxdWVyeVNlY05hbWUgaGFzIG5vdCBiZWVuIGNvbmZpZ3VyZWQgLSBpbnRlcm5hbCBxdWVyaWVzIHdpbGwgZmFpbFxuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IHNlc3Npb24gaXMgbm90IGF2YWlsYWJsZSAtIGludGVybmFsIHF1ZXJpZXMgd2lsbCBmYWlsXG4iKTsKKyAgICAgICAgfQorICAgICAgICB3YXJuaW5nX2xvZ2dlZCA9IDE7CisgICAgfQorCisgICAgcmV0dXJuIG5ldHNubXBfcXVlcnlfZ2V0X2RlZmF1bHRfc2Vzc2lvbl91bmNoZWNrZWQoKTsKIH0KIAogCkBAIC0xMjI5LDYgKzEyNzAsNyBAQAogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmIxLCAqdmIyLCAqdnRtcDsKICAgICBpbnQgcmV0OwogCisgICAgREVCVUdNU0dUTCgoImlxdWVyeSIsICJxdWVyeSBvbiBzZXNzaW9uICVwXG4iLCBzZXNzaW9uKSk7CiAgICAgLyoKICAgICAgKiBDbG9uZSB0aGUgdmFyYmluZCBsaXN0IGludG8gdGhlIHJlcXVlc3QgUERVLi4uCiAgICAgICovCkBAIC0xMjQzLDYgKzEyODUsNyBAQAogICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7CiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgfQorICAgIERFQlVHTVNHVEwoKCJpcXVlcnkiLCAicXVlcnkgcmV0dXJuZWQgJWRcbiIsIHJldCkpOwogCiAgICAgLyoKICAgICAgKiAuLi4udGhlbiBjb3B5IHRoZSByZXN1bHRzIGJhY2sgaW50byB0aGUKQEAgLTEyNjMsNiArMTMwNiw3IEBACiAgICAgICAgICAgICByZXQgPSByZXNwb25zZS0+ZXJyc3RhdDsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0ICE9IFNOTVBfTVNHX1NFVCAmJgogICAgICAgICAgICAgICAgIHJlc3BvbnNlLT5lcnJpbmRleCAhPSAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImlxdWVyeSIsICJyZXRyeWluZyBxdWVyeSAoJWQsICVsZClcbiIsIHJldCwgcmVzcG9uc2UtPmVycmluZGV4KSk7CiAgICAgICAgICAgICAgICAgcGR1ID0gc25tcF9maXhfcGR1KCByZXNwb25zZSwgcmVxdWVzdCApOwogICAgICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUoIHJlc3BvbnNlICk7CiAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBOVUxMOwpAQCAtMTI3OCwxMyArMTMyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB2dG1wID0gdmIyLT5uZXh0X3ZhcmlhYmxlOwotICAgICAgICAgICAgICAgIC8qIGZyZWUgb2xkIGRhdGEgYmVmb3JlIG92ZXJ3cml0aW5nICovCi0gICAgICAgICAgICAgICAgaWYgKHZiMi0+dmFsLnN0cmluZykgewotICAgICAgICAgICAgICAgICAgICBpZiAodmIyLT52YWwuc3RyaW5nICE9ICZ2YjItPmJ1ZlswXSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSh2YjItPnZhbC5zdHJpbmcpOwotICAgICAgICAgICAgICAgICAgICAgICAgdmIyLT52YWwuc3RyaW5nID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyX2ludGVybmFscyggdmIyICk7CiAgICAgICAgICAgICAgICAgc25tcF9jbG9uZV92YXIoIHZiMSwgdmIyICk7CiAgICAgICAgICAgICAgICAgdmIyLT5uZXh0X3ZhcmlhYmxlID0gdnRtcDsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9kZWJ1Zy5jIGIvc25tcGxpYi9zbm1wX2RlYnVnLmMKaW5kZXggZDFiNDUzOC4uY2IzYmM4YyAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX2RlYnVnLmMKKysrIGIvc25tcGxpYi9zbm1wX2RlYnVnLmMKQEAgLTEsNSArMSw2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTEzLDExICsxNCw3IEBACiAjaWYgSEFWRV9ORVRJTkVUX0lOX0gKICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAjZW5kaWYKLSNpZiBIQVZFX1NUREFSR19ICiAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHZhcmFyZ3MuaD4KLSNlbmRpZgogI2lmIEhBVkVfV0lOU09DS19ICiAjaW5jbHVkZSA8d2luc29jay5oPgogI2VuZGlmCkBAIC00NCw0MSArNDEsNDAgQEAKIAogc3RhdGljIGludCAgICAgIGRvZGVidWcgPSBORVRTTk1QX0FMV0FZU19ERUJVRzsKIGludCAgICAgICAgICAgICBkZWJ1Z19udW1fdG9rZW5zID0gMDsKLWludCAgICAgICAgICAgICBkZWJ1Z19udW1fZXhjbHVkZWQgPSAwOwogc3RhdGljIGludCAgICAgIGRlYnVnX3ByaW50X2V2ZXJ5dGhpbmcgPSAwOwogCiBuZXRzbm1wX3Rva2VuX2Rlc2NyIGRiZ190b2tlbnNbTUFYX0RFQlVHX1RPS0VOU107CiAKLSNpZmRlZiBORVRTTk1QX0RFQlVHX1NUQVRTCi1uZXRzbm1wX2NvbnRhaW5lciAgKmRiZ19zdGF0cyA9IE5VTEw7Ci0gc3RhdGljIGludCBfZGVidWdfY21wKCBjb25zdCB2b2lkICpsaHMsIGNvbnN0IHZvaWQgKnJocyApOwotIHN0YXRpYyBpbnQgX3NhdmVfZGVidWdfc3RhdChuZXRzbm1wX3Rva2VuX2Rlc2NyICp0Yiwgdm9pZCAqdHlwZSk7Ci0gc3RhdGljIGludCBfZGVidWdfc3RhdHNfY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELAotICAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKTsKLSNlbmRpZgotCiAvKgotICogaW5kZW50IGRlYnVnZ2luZzogIHByb3ZpZGUgYSBzcGFjZSBwYWRkZWQgc2VjdGlvbiB0byByZXR1cm4gYW4gaW5kZW50IGZvciAKKyAqIE51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IGRlYnVnIG91dHB1ci4gVmFsaWQgcmFuZ2UgaXMgWzAsSU5UX01BWF0KICAqLwotc3RhdGljIGludCAgICAgIGRlYnVnaW5kZW50ID0gMDsKLSNkZWZpbmUgSU5ERU5UTUFYIDgwCi1zdGF0aWMgY2hhciAgICAgZGVidWdpbmRlbnRjaGFyc1tdID0KLSAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOworc3RhdGljIGludCBkZWJ1Z2luZGVudCA9IDA7CiAKLWNoYXIgICAgICAgICAgICoKK2ludAorZGVidWdfaW5kZW50X2dldCh2b2lkKQoreworICAgIHJldHVybiBkZWJ1Z2luZGVudDsKK30KKworY29uc3QgY2hhcioKIGRlYnVnX2luZGVudCh2b2lkKQogewotICAgIHJldHVybiBkZWJ1Z2luZGVudGNoYXJzOworI2RlZmluZSBTUEFDRVMgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFwKKyAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorICAgIGlmICgoc2l6ZW9mKFNQQUNFUykgLSAxKSA8ICh1bnNpZ25lZCBpbnQpZGVidWdpbmRlbnQpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlRvbyBkZWVwIGluZGVudGF0aW9uIGZvciBkZWJ1Z19pbmRlbnQuICIKKyAgICAgICAgICAgICAgICAgIkNvbnNpZGVyIHVzaW5nIFwiJSUqc1wiLCBkZWJ1Z19pbmRlbnRfZ2V0KCksIFwiXCIgaW5zdGVhZC4iKTsKKyAgICAgICAgcmV0dXJuIFNQQUNFUzsKKyAgICB9CisgICAgcmV0dXJuIFNQQUNFUyArIHNpemVvZihTUEFDRVMpIC0gMSAtIGRlYnVnaW5kZW50OworI3VuZGVmIFNQQUNFUwogfQogCiB2b2lkCiBkZWJ1Z19pbmRlbnRfYWRkKGludCBhbW91bnQpCiB7Ci0gICAgaWYgKGRlYnVnaW5kZW50ICsgYW1vdW50ID49IDAgJiYgZGVidWdpbmRlbnQgKyBhbW91bnQgPCA4MCkgewotICAgICAgICBkZWJ1Z2luZGVudGNoYXJzW2RlYnVnaW5kZW50XSA9ICcgJzsKLSAgICAgICAgZGVidWdpbmRlbnQgKz0gYW1vdW50OwotICAgICAgICBkZWJ1Z2luZGVudGNoYXJzW2RlYnVnaW5kZW50XSA9ICdcMCc7Ci0gICAgfQorICAgIGlmICgtZGVidWdpbmRlbnQgPD0gYW1vdW50ICYmIGFtb3VudCA8PSBJTlRfTUFYIC0gZGVidWdpbmRlbnQpCisJZGVidWdpbmRlbnQgKz0gYW1vdW50OwogfQogCiB2b2lkCkBAIC05NiwzNSArOTIsMTIgQEAKIHZvaWQKIHNubXBfZGVidWdfaW5pdCh2b2lkKQogewotICAgIGRlYnVnaW5kZW50Y2hhcnNbMF0gPSAnXDAnOyAvKiB6ZXJvIG91dCB0aGUgZGVidWdnaW5nIGluZGVudCBhcnJheS4gKi8KLSAgICAvKgotICAgICAqIEhtbW0uLi4uCi0gICAgICogICB0aGlzICJpbml0IiByb3V0aW5lIHNlZW1zIHRvIGJlIGNhbGxlZCAqYWZ0ZXIqIHByb2Nlc3NpbmcKLSAgICAgKiAgIHRoZSBjb21tYW5kIGxpbmUgb3B0aW9ucy4gICBTbyB3ZSBjYW4ndCBjbGVhciB0aGUgZGVidWcKLSAgICAgKiAgIHRva2VuIGFycmF5IGhlcmUsIGFuZCB3aWxsIGp1c3QgaGF2ZSB0byByZWx5IG9uIGl0IGJlaW5nCi0gICAgICogICBpbml0aWFsaXNlZCB0byAwIGF1dG9tYXRpY2FsbHkuCi0gICAgICogU28gbXVjaCBmb3IgdHJ5aW5nIHRvIHByb2dyYW0gcmVzcG9uc2libHkgOi0pCi0gICAgICovCi0vKiAgbWVtc2V0KGRiZ190b2tlbnMsIDAsIE1BWF9ERUJVR19UT0tFTlMqc2l6ZW9mKHN0cnVjdCB0b2tlbl9kc2NyKSk7ICAqLwogICAgIHJlZ2lzdGVyX3ByZW5ldHNubXBfbWliX2hhbmRsZXIoInNubXAiLCAiZG9EZWJ1Z2dpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfY29uZmlnX3R1cm5fb25fZGVidWdnaW5nLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIigxfDApIik7CiAgICAgcmVnaXN0ZXJfcHJlbmV0c25tcF9taWJfaGFuZGxlcigic25tcCIsICJkZWJ1Z1Rva2VucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19jb25maWdfcmVnaXN0ZXJfdG9rZW5zLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRva2VuWyx0b2tlbi4uLl0iKTsKLQotI2lmZGVmIE5FVFNOTVBfREVCVUdfU1RBVFMKLSAgICAvKgotICAgICAqIGRlYnVnIHN0YXRzCi0gICAgICovCi0gICAgZGJnX3N0YXRzID0gbmV0c25tcF9jb250YWluZXJfZmluZCgiZGVidWdfZXhjbHVkZTp0YWJsZV9jb250YWluZXIiKTsKLSAgICBpZiAoTlVMTCAhPSBkYmdfc3RhdHMpIHsKLSAgICAgICAgZGJnX3N0YXRzLT5jb21wYXJlID0gX2RlYnVnX2NtcDsKLSAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9DQUxMQkFDS19TVE9SRV9EQVRBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kZWJ1Z19zdGF0c19jYWxsYmFjaywgZGJnX3N0YXRzLCAxMDI0KTsKLSAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZApAQCAtMTM0LDcgKzEwNyw3IEBACiAgICAgY2hhciAgICAgICAgICAgKnN0ID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgc3RhdHVzOwogCi0gICAgaWYgKHRva2VucyA9PSAwIHx8ICp0b2tlbnMgPT0gMCkKKyAgICBpZiAodG9rZW5zID09IE5VTEwgfHwgKnRva2VucyA9PSAwKQogICAgICAgICByZXR1cm47CiAKICAgICBuZXdwID0gc3RyZHVwKHRva2Vucyk7ICAgICAgLyogc3RydG9rX3IgbWVzc2VzIGl0IHVwICovCkBAIC0yNTYsMTMgKzIyOSw4IEBACiAgICAgaWYgKGRlYnVnX251bV90b2tlbnMgPT0gMCB8fCBkZWJ1Z19wcmludF9ldmVyeXRoaW5nKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIG5vIHRva2VucyBzcGVjaWZpZWQsIHByaW50IGV2ZXJ5dGhpbmcgCi0gICAgICAgICAqICh1bmxlc3Mgc29tZXRoaW5nIG1pZ2h0IGJlIGV4Y2x1ZGVkKQogICAgICAgICAgKi8KLSAgICAgICAgaWYgKGRlYnVnX251bV9leGNsdWRlZCkgewotICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7IC8qICEgZm91bmQgPSBzdWNjZXNzICovCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgcmMgPSBTTk1QRVJSX0dFTkVSUjsgLyogISBmb3VuZCA9IGVyciAqLwpAQCAtMjc5LDUzICsyNDcsMTkgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7IC8qIGV4Y2x1ZGVkICovCiAgICAgICAgIH0KICAgICB9Ci0KLSNpZmRlZiBORVRTTk1QX0RFQlVHX1NUQVRTCi0gICAgaWYgKChTTk1QRVJSX1NVQ0NFU1MgPT0gcmMpICYmIChOVUxMICE9IGRiZ19zdGF0cykpIHsKLSAgICAgICAgbmV0c25tcF90b2tlbl9kZXNjciB0ZCwgKmZvdW5kOwotCi0gICAgICAgIHRkLnRva2VuX25hbWUgPSB0b2tlbjsKLSAgICAgICAgZm91bmQgPSBDT05UQUlORVJfRklORChkYmdfc3RhdHMsICZ0ZCk7Ci0gICAgICAgIGlmIChOVUxMID09IGZvdW5kKSB7Ci0gICAgICAgICAgICBmb3VuZCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90b2tlbl9kZXNjcik7Ci0gICAgICAgICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGZvdW5kKTsKLSAgICAgICAgICAgIGZvdW5kLT50b2tlbl9uYW1lID0gc3RyZHVwKHRva2VuKTsKLSAgICAgICAgICAgIG5ldHNubXBfYXNzZXJ0KDAgPT0gZm91bmQtPmVuYWJsZWQpOwotICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChkYmdfc3RhdHMsIGZvdW5kKTsKLSAgICAgICAgfQotICAgICAgICArK2ZvdW5kLT5lbmFibGVkOwotICAgIC8qICBzbm1wX2xvZyhMT0dfRVJSLCJ0b2sgJXMsICVkIGhpdHNcbiIsIHRva2VuLCBmb3VuZC0+ZW5hYmxlZCk7ICAqLwotICAgIH0KLSNlbmRpZgotCiAgICAgcmV0dXJuIHJjOwogfQogCiB2b2lkCi0jaWYgSEFWRV9TVERBUkdfSAogZGVidWdtc2coY29uc3QgY2hhciAqdG9rZW4sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotI2Vsc2UKLWRlYnVnbXNnKHZhX2FsaXN0KQotICAgICB2YV9kY2wKLSNlbmRpZgogewotICAgIHZhX2xpc3QgICAgICAgICBkZWJ1Z2FyZ3M7Ci0KLSNpZiBIQVZFX1NUREFSR19ICi0gICAgdmFfc3RhcnQoZGVidWdhcmdzLCBmb3JtYXQpOwotI2Vsc2UKLSAgICBjb25zdCBjaGFyICAgICAqZm9ybWF0OwotICAgIGNvbnN0IGNoYXIgICAgICp0b2tlbjsKLQotICAgIHZhX3N0YXJ0KGRlYnVnYXJncyk7Ci0gICAgdG9rZW4gPSB2YV9hcmcoZGVidWdhcmdzLCBjb25zdCBjaGFyICopOwotICAgIGZvcm1hdCA9IHZhX2FyZyhkZWJ1Z2FyZ3MsIGNvbnN0IGNoYXIgKik7ICAgLyogPz8/ICovCi0jZW5kaWYKLQogICAgIGlmIChkZWJ1Z19pc190b2tlbl9yZWdpc3RlcmVkKHRva2VuKSA9PSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgc25tcF92bG9nKExPR19ERUJVRywgZm9ybWF0LCBkZWJ1Z2FyZ3MpOworCXZhX2xpc3QgICAgICAgICBkZWJ1Z2FyZ3M7CisKKwl2YV9zdGFydChkZWJ1Z2FyZ3MsIGZvcm1hdCk7CisJc25tcF92bG9nKExPR19ERUJVRywgZm9ybWF0LCBkZWJ1Z2FyZ3MpOworCXZhX2VuZChkZWJ1Z2FyZ3MpOwogICAgIH0KLSAgICB2YV9lbmQoZGVidWdhcmdzKTsKIH0KIAogdm9pZApAQCAtNDgwLDcgKzQxNCw3IEBACiAgICAgICAgICAgICAgKiBYWG5leHQgdHdvIGxpbmVzIHdlcmUgREVCVUdQUklOVElOREVOVCh0b2tlbik7CiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIHNwcmludGYoYnVmLCAiZHVtcHglcyIsIHRva2VuKTsKLSAgICAgICAgICAgIGRlYnVnbXNnKGJ1ZiwgIiVzOiAlcyIsIHRva2VuMiwgZGVidWdfaW5kZW50KCkpOworICAgICAgICAgICAgZGVidWdtc2coYnVmLCAiJXM6ICUqcyIsIHRva2VuMiwgZGVidWdfaW5kZW50X2dldCgpLCAiIik7CiAgICAgICAgICAgICBpZiAoc3ByaW50X3JlYWxsb2NfaGV4c3RyaW5nCiAgICAgICAgICAgICAgICAgKCZiMywgJmIzX2xlbiwgJm8zX2xlbiwgMSwgdGhlZGF0YSwgaW5jcikpIHsKICAgICAgICAgICAgICAgICBpZiAoYjMgIT0gTlVMTCkgewpAQCAtNTAwLDUzICs0MzQsMjMgQEAKIH0KIAogdm9pZAotI2lmIEhBVkVfU1REQVJHX0gKIGRlYnVnbXNndG9rZW4oY29uc3QgY2hhciAqdG9rZW4sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotI2Vsc2UKLWRlYnVnbXNndG9rZW4odmFfYWxpc3QpCi0gICAgIHZhX2RjbAotI2VuZGlmCiB7CiAgICAgdmFfbGlzdCAgICAgICAgIGRlYnVnYXJnczsKIAotI2lmIEhBVkVfU1REQVJHX0gKICAgICB2YV9zdGFydChkZWJ1Z2FyZ3MsIGZvcm1hdCk7Ci0jZWxzZQotICAgIGNvbnN0IGNoYXIgICAgICp0b2tlbjsKLQotICAgIHZhX3N0YXJ0KGRlYnVnYXJncyk7Ci0gICAgdG9rZW4gPSB2YV9hcmcoZGVidWdhcmdzLCBjb25zdCBjaGFyICopOwotI2VuZGlmCi0KICAgICBkZWJ1Z21zZyh0b2tlbiwgIiVzOiAiLCB0b2tlbik7Ci0KICAgICB2YV9lbmQoZGVidWdhcmdzKTsKIH0KIAogdm9pZAotI2lmIEhBVkVfU1REQVJHX0gKIGRlYnVnX2NvbWJvX25jKGNvbnN0IGNoYXIgKnRva2VuLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSNlbHNlCi1kZWJ1Z19jb21ib19uYyh2YV9hbGlzdCkKLSAgICAgdmFfZGNsCi0jZW5kaWYKIHsKICAgICB2YV9saXN0ICAgICAgICAgZGVidWdhcmdzOwogCi0jaWYgSEFWRV9TVERBUkdfSAogICAgIHZhX3N0YXJ0KGRlYnVnYXJncywgZm9ybWF0KTsKLSNlbHNlCi0gICAgY29uc3QgY2hhciAgICAgKmZvcm1hdDsKLSAgICBjb25zdCBjaGFyICAgICAqdG9rZW47Ci0KLSAgICB2YV9zdGFydChkZWJ1Z2FyZ3MpOwotICAgIHRva2VuID0gdmFfYXJnKGRlYnVnYXJncywgY29uc3QgY2hhciAqKTsKLSAgICBmb3JtYXQgPSB2YV9hcmcoZGVidWdhcmdzLCBjb25zdCBjaGFyICopOyAgIC8qID8/PyAqLwotI2VuZGlmCi0KICAgICBzbm1wX2xvZyhMT0dfREVCVUcsICIlczogIiwgdG9rZW4pOwogICAgIHNubXBfdmxvZyhMT0dfREVCVUcsIGZvcm1hdCwgZGVidWdhcmdzKTsKLQogICAgIHZhX2VuZChkZWJ1Z2FyZ3MpOwogfQogCkBAIC01NjQsNjMgKzQ2OCwzIEBACiB7CiAgICAgcmV0dXJuIGRvZGVidWc7CiB9Ci0KLSNpZmRlZiBORVRTTk1QX0RFQlVHX1NUQVRTCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBjb21wYXJlIHR3byBjb250ZXh0IHBvaW50ZXJzIGhlcmUuIFJldHVybiAtMSBpZiBsaHMgPCByaHMsCi0gKiAwIGlmIGxocyA9PSByaHMsIGFuZCAxIGlmIGxocyA+IHJocy4KLSAqLwotc3RhdGljIGludAotX2RlYnVnX2NtcCggY29uc3Qgdm9pZCAqbGhzLCBjb25zdCB2b2lkICpyaHMgKQotewotICAgIG5ldHNubXBfdG9rZW5fZGVzY3IgKmRiZ19sID0gKG5ldHNubXBfdG9rZW5fZGVzY3IgKilsaHM7Ci0gICAgbmV0c25tcF90b2tlbl9kZXNjciAqZGJnX3IgPSAobmV0c25tcF90b2tlbl9kZXNjciAqKXJoczsKLQotIC8qIHNubXBfbG9nKExPR19FUlIsIiVzLyVzXG4iLGRiZ19sLT50b2tlbl9uYW1lLCBkYmdfci0+dG9rZW5fbmFtZSk7ICovCi0gICAgcmV0dXJuIHN0cmNtcChkYmdfbC0+dG9rZW5fbmFtZSwgZGJnX3ItPnRva2VuX25hbWUpOwotfQotCi0KLXN0YXRpYyBpbnQKLV9zYXZlX2RlYnVnX3N0YXQobmV0c25tcF90b2tlbl9kZXNjciAqdGIsIHZvaWQgKnR5cGUpCi17Ci0gICAgY2hhciBidWZbMjU2XTsKLQotICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJkZWJ1Z19oaXRzICVzICVkIiwKLSAgICAgICAgICAgICB0Yi0+dG9rZW5fbmFtZSwgdGItPmVuYWJsZWQpOwotICAgIHJlYWRfY29uZmlnX3N0b3JlKChjaGFyICopIHR5cGUsIGJ1Zik7Ci0KLSAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KLQotc3RhdGljIGludAotX2RlYnVnX3N0YXRzX2NhbGxiYWNrKGludCBtYWpvcklELCBpbnQgbWlub3JJRCwKLSAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKQotewotICAgIGNoYXIgICAgICAgICAgICBzZXBbXSA9Ci0gICAgICAgICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyI7Ci0gICAgY2hhciAgICAgICAgICAgIGJ1ZltdID0KLSAgICAgICAgIiNcbiIgIiMgZGVidWcgc3RhdHNcbiIgIiMiOwotICAgIGNoYXIgICAgICAgICAgICp0eXBlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9BUFBUWVBFKTsKLQotICAgIHJlYWRfY29uZmlnX3N0b3JlKChjaGFyICopIHR5cGUsIHNlcCk7Ci0gICAgcmVhZF9jb25maWdfc3RvcmUoKGNoYXIgKikgdHlwZSwgYnVmKTsKLQotICAgIC8qCi0gICAgICogc2F2ZSBhbGwgcm93cwotICAgICAqLwotICAgIENPTlRBSU5FUl9GT1JfRUFDSCgobmV0c25tcF9jb250YWluZXIgKikgY2xpZW50YXJnLAotICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikKLSAgICAgICAgICAgICAgICAgICAgICAgX3NhdmVfZGVidWdfc3RhdCwgdHlwZSk7Ci0KLSAgICByZWFkX2NvbmZpZ19zdG9yZSgoY2hhciAqKSB0eXBlLCBzZXApOwotICAgIHJlYWRfY29uZmlnX3N0b3JlKChjaGFyICopIHR5cGUsICJcbiIpOwotCi0gICAgLyoKLSAgICAgKiBuZXZlciBmYWlscyAKLSAgICAgKi8KLSAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwotfQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9sb2dnaW5nLmMgYi9zbm1wbGliL3NubXBfbG9nZ2luZy5jCmluZGV4IDdhMGRkYjIuLjdmMTllYjUgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9sb2dnaW5nLmMKKysrIGIvc25tcGxpYi9zbm1wX2xvZ2dpbmcuYwpAQCAtNTksMTEgKzU5LDcgQEAKICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAjZW5kaWYKIAotI2lmIEhBVkVfU1REQVJHX0gKICNpbmNsdWRlIDxzdGRhcmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8dmFyYXJncy5oPgotI2VuZGlmCiAKICNpZiBIQVZFX1VOSVNURF9ICiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC0xNzcsNiArMTczLDI2IEBACiAjZGVmaW5lIExPR19VU0VSCTAKICNlbmRpZgogCisvKiBTZXQgbGluZSBidWZmZXJpbmcgbW9kZSBmb3IgYSBzdHJlYW0uICovCit2b2lkCituZXRzbm1wX3NldF9saW5lX2J1ZmZlcmluZyhGSUxFICpzdHJlYW0pCit7CisjaWYgZGVmaW5lZChXSU4zMikKKyAgICAvKgorICAgICAqIEFjY29yZGluZyB0byBNU0ROLCB0aGUgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gQyBydW50aW1lIGxpYnJhcnkgZG9lcworICAgICAqIG5vdCBzdXBwb3J0IGxpbmUgYnVmZmVyaW5nLCBzbyB0dXJuIG9mZiBidWZmZXJpbmcgY29tcGxldGVseS4KKyAgICAgKiBTZWUgYWxzbyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvODZjZWJoZnMoVlMuNzEpLmFzcHguCisgICAgICovCisgICAgc2V0dmJ1ZihzdHJlYW0sIE5VTEwsIF9JT05CRiwgQlVGU0laKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9TRVRMSU5FQlVGKQorICAgIC8qIHNldGxpbmVmdW5jdGlvbigpIGlzIGEgZnVuY3Rpb24gZnJvbSB0aGUgQlNEIFVuaXggQVBJLiAqLworICAgIHNldGxpbmVidWYoc3RyZWFtKTsKKyNlbHNlCisgICAgLyogU2VlIGFsc28gdGhlIEM4OSBvciBDOTkgc3RhbmRhcmQgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc2V0dmJ1ZigpLiAqLworICAgIHNldHZidWYoc3RyZWFtLCBOVUxMLCBfSU9MQkYsIEJVRlNJWik7CisjZW5kaWYKK30KKwogLyoKICAqIERlY29kZXMgbG9nIHByaW9yaXR5LgogICogQHBhcmFtIG9wdGFyZyAtIElOIC0gcHJpb3JpdHkgdG8gZGVjb2RlLCAiMCIgb3IgIjAtNyIKQEAgLTM1MCw2ICszNjYsNyBAQAogICAgIGNhc2UgJ2UnOgogICAgICAgICBsb2doID0gbmV0c25tcF9yZWdpc3Rlcl9sb2doYW5kbGVyKE5FVFNOTVBfTE9HSEFORExFUl9TVERFUlIsIHByaW9yaXR5KTsKICAgICAgICAgaWYgKGxvZ2gpIHsKKyAgICAgICAgICAgIG5ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nKHN0ZGVycik7CiAgICAgICAgICAgICBsb2doLT5wcmlfbWF4ID0gcHJpX21heDsKICAgICAgICAgICAgIGxvZ2gtPnRva2VuICAgPSBzdHJkdXAoInN0ZGVyciIpOwogCX0KQEAgLTM2Nyw2ICszODQsNyBAQAogICAgIGNhc2UgJ28nOgogICAgICAgICBsb2doID0gbmV0c25tcF9yZWdpc3Rlcl9sb2doYW5kbGVyKE5FVFNOTVBfTE9HSEFORExFUl9TVERFUlIsIHByaW9yaXR5KTsKICAgICAgICAgaWYgKGxvZ2gpIHsKKyAgICAgICAgICAgIG5ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nKHN0ZG91dCk7CiAgICAgICAgICAgICBsb2doLT5wcmlfbWF4ID0gcHJpX21heDsKICAgICAgICAgICAgIGxvZ2gtPnRva2VuICAgPSBzdHJkdXAoInN0ZG91dCIpOwogICAgICAgICAgICAgbG9naC0+aW1hZ2ljICA9IDE7CSAgICAvKiBzdGRvdXQsIG5vdCBzdGRlcnIgKi8KQEAgLTQyNCw5ICs0NDIsOSBAQAogICAgICAgICAgICAgaW50IGZhY2lsaXR5ID0gZGVjb2RlX2ZhY2lsaXR5KG9wdGFyZyk7CiAgICAgICAgICAgICBpZiAoZmFjaWxpdHkgPT0gLTEpICByZXR1cm4gLTE7CiAgICAgICAgICAgICBsb2doLT5wcmlfbWF4ID0gcHJpX21heDsKLSAgICAgICAgICAgIGxvZ2gtPnRva2VuICAgPSBzdHJkdXAoc25tcF9sb2dfc3lzbG9nbmFtZSgwKSk7CisgICAgICAgICAgICBsb2doLT50b2tlbiAgID0gc3RyZHVwKHNubXBfbG9nX3N5c2xvZ25hbWUoTlVMTCkpOwogICAgICAgICAgICAgbG9naC0+bWFnaWMgICA9ICh2b2lkICopKGludHB0cl90KWZhY2lsaXR5OwotCSAgICBzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQoc25tcF9sb2dfc3lzbG9nbmFtZSgwKSwgZmFjaWxpdHkpOworCSAgICBzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQoc25tcF9sb2dfc3lzbG9nbmFtZShOVUxMKSwgZmFjaWxpdHkpOwogCX0KICAgICAgICAgYnJlYWs7CiAKQEAgLTY2Myw3ICs2ODEsNyBAQAogdm9pZAogc25tcF9lbmFibGVfc3lzbG9nKHZvaWQpCiB7Ci0gICAgc25tcF9lbmFibGVfc3lzbG9nX2lkZW50KHNubXBfbG9nX3N5c2xvZ25hbWUoMCksIExPR19EQUVNT04pOworICAgIHNubXBfZW5hYmxlX3N5c2xvZ19pZGVudChzbm1wX2xvZ19zeXNsb2duYW1lKE5VTEwpLCBMT0dfREFFTU9OKTsKIH0KIAogdm9pZApAQCAtNzI3LDE2ICs3NDUsNyBAQAogICAgICAgICBpZiAoIWxvZ2ZpbGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGxvZ2gtPm1hZ2ljID0gKHZvaWQqKWxvZ2ZpbGU7Ci0jaWZkZWYgV0lOMzIKLSAgICAgICAgLyoKLSAgICAgICAgICogQXBwYXJlbnRseSwgImxpbmUgYnVmZmVyaW5nIiB1bmRlciBXaW5kb3dzIGlzCi0gICAgICAgICAqICBhY3R1YWxseSBpbXBsZW1lbnRlZCBhcyAiZnVsbCBidWZmZXJpbmciLgotICAgICAgICAgKiAgTGV0J3MgdHJ5IHR1cm5pbmcgb2ZmIGJ1ZmZlcmluZyBjb21wbGV0ZWx5LgotICAgICAgICAgKi8KLSAgICAgICAgc2V0dmJ1Zihsb2dmaWxlLCBOVUxMLCBfSU9OQkYsIEJVRlNJWik7Ci0jZWxzZQotICAgICAgICBzZXR2YnVmKGxvZ2ZpbGUsIE5VTEwsIF9JT0xCRiwgQlVGU0laKTsKLSNlbmRpZgorICAgICAgICBuZXRzbm1wX3NldF9saW5lX2J1ZmZlcmluZyhsb2dmaWxlKTsKICAgICB9CiAgICAgbG9naC0+ZW5hYmxlZCA9IDE7CiB9CkBAIC0xMjc0LDI1ICsxMjgzLDExIEBACiAgKiBAc2VlIHNubXBfdmxvZwogICovCiBpbnQKLSNpZiBIQVZFX1NUREFSR19ICiBzbm1wX2xvZyhpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotI2Vsc2UKLXNubXBfbG9nKHZhX2FsaXN0KQotICAgICB2YV9kY2wKLSNlbmRpZgogewogICAgIHZhX2xpc3QgICAgICAgICBhcDsKICAgICBpbnQgICAgICAgICAgICAgcmV0OwotI2lmIEhBVkVfU1REQVJHX0gKICAgICB2YV9zdGFydChhcCwgZm9ybWF0KTsKLSNlbHNlCi0gICAgaW50ICAgICAgICAgICAgIHByaW9yaXR5OwotICAgIGNvbnN0IGNoYXIgICAgICpmb3JtYXQ7Ci0gICAgdmFfc3RhcnQoYXApOwotCi0gICAgcHJpb3JpdHkgPSB2YV9hcmcoYXAsIGludCk7Ci0gICAgZm9ybWF0ID0gdmFfYXJnKGFwLCBjb25zdCBjaGFyICopOwotI2VuZGlmCiAgICAgcmV0ID0gc25tcF92bG9nKHByaW9yaXR5LCBmb3JtYXQsIGFwKTsKICAgICB2YV9lbmQoYXApOwogICAgIHJldHVybiAocmV0KTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9vcGVuc3NsLmMgYi9zbm1wbGliL3NubXBfb3BlbnNzbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ODMxZGQKLS0tIC9kZXYvbnVsbAorKysgYi9zbm1wbGliL3NubXBfb3BlbnNzbC5jCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBzbm1wdHNtc20uYworICoKKyAqIFRoaXMgY29kZSBtZXJlbHkgZG9lcyBvcGVuc3NsIGluaXRpYWxpemF0aW9uIHNvIHRoYXQgbXVsdGlscGUKKyAqIG1vZHVsZXMgYXJlIHNhZmUgdG8gY2FsbCBuZXRzbm1wX2luaXRfb3BlbnNzbCgpIGZvciBib290c3RyYXBwaW5nCisgKiB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IG90aGVyIGNhbGxlcnMgdGhhdCBtYXkgaGF2ZSBhbHJlYWR5IGRvbmUgc28uCisgKi8KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9vcGVuc3NsLmg+CisKKyNpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpICYmIGRlZmluZWQoSEFWRV9MSUJTU0wpCisKKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CisKK3N0YXRpYyB1X2NoYXIgaGF2ZV9zdGFydGVkX2FscmVhZHkgPSAwOworCit2b2lkIG5ldHNubXBfaW5pdF9vcGVuc3NsKHZvaWQpIHsKKworICAgIC8qIGF2b2lkIGR1cGxpY2F0ZSBjYWxscyAqLworICAgIGlmIChoYXZlX3N0YXJ0ZWRfYWxyZWFkeSkKKyAgICAgICAgcmV0dXJuOworICAgIGhhdmVfc3RhcnRlZF9hbHJlYWR5ID0gMTsKKworICAgIERFQlVHTVNHVEwoKCJzbm1wX29wZW5zc2wiLCAiaW5pdGlhbGl6aW5nXG4iKSk7CisKKyAgICAvKiBJbml0aWFsaXppbmcgT3BlblNTTCAqLworICAgIFNTTF9saWJyYXJ5X2luaXQoKTsKKyAgICBTU0xfbG9hZF9lcnJvcl9zdHJpbmdzKCk7CisgICAgRVJSX2xvYWRfQklPX3N0cmluZ3MoKTsKKyAgICBPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtcygpOworfQorCisjZW5kaWYgLyogTkVUU05NUF9VU0VfT1BFTlNTTCAmJiBIQVZFX0xJQlNTTCAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYyBiL3NubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMKaW5kZXggYTAwMzk5NS4uYzFlMzE2YiAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYworKysgYi9zbm1wbGliL3NubXBfcGFyc2VfYXJncy5jCkBAIC0zNjEsOCArMzYxLDggQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ3QnOgotICAgICAgICAgICAgc2Vzc2lvbi0+dGltZW91dCA9IGF0b2kob3B0YXJnKSAqIDEwMDAwMDBMOwotICAgICAgICAgICAgaWYgKHNlc3Npb24tPnRpbWVvdXQgPCAwIHx8ICFpc2RpZ2l0KG9wdGFyZ1swXSkpIHsKKyAgICAgICAgICAgIHNlc3Npb24tPnRpbWVvdXQgPSAobG9uZykoYXRvZihvcHRhcmcpICogMTAwMDAwMEwpOworICAgICAgICAgICAgaWYgKHNlc3Npb24tPnRpbWVvdXQgPD0gMCkgewogICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW52YWxpZCB0aW1lb3V0IGluIHNlY29uZHMgYWZ0ZXIgLXQgZmxhZy5cbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAoLTEpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX3NlcnZpY2UuYyBiL3NubXBsaWIvc25tcF9zZXJ2aWNlLmMKaW5kZXggMmY1M2I3Ni4uODg2NWNkYSAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX3NlcnZpY2UuYworKysgYi9zbm1wbGliL3NubXBfc2VydmljZS5jCkBAIC02OCw3ICs2OCw3IEBACiAgICAgaWYgKHJ1biAmJiBzdHJjbXAocnVuLT5hcHBsaWNhdGlvbiwgYXBwbGljYXRpb24pID09IDApIHsKICAgICAgIGlmIChydW4tPmRvbWFpbiAhPSBOVUxMKSB7CiAgICAgICAgICAgZGVzdHJveV93b3JkX2FycmF5KHJ1bi0+ZG9tYWluKTsKLQkgIHJ1bi0+ZG9tYWluPU5VTEw7CisJICBydW4tPmRvbWFpbiA9IE5VTEw7CiAJICByZXMgPSAxOwogICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0xMjAsMTIgKzEyMCw4IEBACiAgICAgewogICAgICAgICBjaGFyKiBjcCA9IGNvcHlfbndvcmQoY3B0ciwgYXBwbGljYXRpb24sIGxlbik7CiAgICAgICAgIGlmIChjcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjaGFyIHRtcGJ1ZltTVFJJTkdNQVhdOwotICAgICAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICJObyBkb21haW4ocykgaW4gcmVnaXN0cmF0aW9uIG9mIGRlZkRvbWFpbiBcIiVzXCIiLAotICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24pOwotICAgICAgICAgICAgdG1wYnVmW3NpemVvZih0bXBidWYpIC0gMV0gPSAnXDAnOwotICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworICAgICAgICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIk5vIGRvbWFpbihzKSBpbiByZWdpc3RyYXRpb24gb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZkRvbWFpbiBcIiVzXCIiLCBhcHBsaWNhdGlvbik7CiAgICAgICAgICAgICBmcmVlKGFwcGxpY2F0aW9uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzIwLDIyICszMTYsMTUgQEAKICAgICB7CiAJY2hhciogY3AgPSBjb3B5X253b3JkKGNwdHIsIGFwcGxpY2F0aW9uLCBsZW4pOwogICAgICAgICBpZiAoY3AgPT0gTlVMTCkgewotICAgICAgICAgICAgY2hhciB0bXBidWZbU1RSSU5HTUFYXTsKLSAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAiTm8gZG9tYWluIGFuZCB0YXJnZXQgaW4gcmVnaXN0cmF0aW9uIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICJkZWZUYXJnZXQgXCIlc1wiIiwgYXBwbGljYXRpb24pOwotICAgICAgICAgICAgdG1wYnVmW3NpemVvZih0bXBidWYpIC0gMV0gPSAnXDAnOwotICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworICAgICAgICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIk5vIGRvbWFpbiBhbmQgdGFyZ2V0IGluIHJlZ2lzdHJhdGlvbiBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmVGFyZ2V0IFwiJXNcIiIsIGFwcGxpY2F0aW9uKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQogCWNwID0gY29weV9ud29yZChjcCwgZG9tYWluLCBsZW4pOwogICAgICAgICBpZiAoY3AgPT0gTlVMTCkgewotICAgICAgICAgICAgY2hhciB0bXBidWZbU1RSSU5HTUFYXTsKLSAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAiTm8gdGFyZ2V0IGluIHJlZ2lzdHJhdGlvbiBvZiBkZWZUYXJnZXQgXCIlc1wiIFwiJXNcIiIsCi0gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiwgZG9tYWluKTsKLSAgICAgICAgICAgIHRtcGJ1ZltzaXplb2YodG1wYnVmKSAtIDFdID0gJ1wwJzsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJObyB0YXJnZXQgaW4gcmVnaXN0cmF0aW9uIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZUYXJnZXQgXCIlc1wiIFwiJXNcIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiwgZG9tYWluKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQogCWNwID0gY29weV9ud29yZChjcCwgdGFyZ2V0LCBsZW4pOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jIGIvc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jCmluZGV4IGZlMGFmZmUuLmRmZWEzYzYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF90cmFuc3BvcnQuYworKysgYi9zbm1wbGliL3NubXBfdHJhbnNwb3J0LmMKQEAgLTMzLDYgKzMzLDE1IEBACiAjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVENQX0RPTUFJTgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oPgogI2VuZGlmCisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfRFRMU1VEUF9ET01BSU4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBEVExTVURQRG9tYWluLmg+CisjZW5kaWYKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9TU0hfRE9NQUlOCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmg+CisjZW5kaWYKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9BTElBU19ET01BSU4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBBbGlhc0RvbWFpbi5oPgorI2VuZGlmCiAjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfSVBYX0RPTUFJTgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oPgogI2VuZGlmCkBAIC0yMDgsNiArMjE3LDkgQEAKICNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UQ1BfRE9NQUlOCiAgICAgbmV0c25tcF90Y3BfY3RvcigpOwogI2VuZGlmCisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfQUxJQVNfRE9NQUlOCisgICAgbmV0c25tcF9hbGlhc19jdG9yKCk7CisjZW5kaWYKICNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9JUFhfRE9NQUlOCiAgICAgbmV0c25tcF9pcHhfY3RvcigpOwogI2VuZGlmCkBAIC0yMjMsNiArMjM1LDEyIEBACiAjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVENQSVBWNl9ET01BSU4KICAgICBuZXRzbm1wX3RjcDZfY3RvcigpOwogI2VuZGlmCisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfRFRMU1VEUF9ET01BSU4KKyAgICBuZXRzbm1wX2R0bHN1ZHBfY3RvcigpOworI2VuZGlmCisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfU1NIX0RPTUFJTgorICAgIG5ldHNubXBfc3NoX2N0b3IoKTsKKyNlbmRpZgogICAgIG5ldHNubXBfdGRvbWFpbl9kdW1wKCk7CiB9CiAKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF92ZXJzaW9uLmMgYi9zbm1wbGliL3NubXBfdmVyc2lvbi5jCmluZGV4IDQ4NjZkZGEuLjdkMzRjMGQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF92ZXJzaW9uLmMKKysrIGIvc25tcGxpYi9zbm1wX3ZlcnNpb24uYwpAQCAtNSwxMCArNSwxMCBAQAogI2lmbmRlZiBVQ0RfQ09NUEFUSUJMRQogc3RhdGljCiAjZW5kaWYKLWNvbnN0IGNoYXIgICAgICpOZXRTbm1wVmVyc2lvbkluZm8gPSAiNS40LjQiOworY29uc3QgY2hhciAgICAgKk5ldFNubXBWZXJzaW9uSW5mbyA9IFBBQ0tBR0VfVkVSU0lPTjsKIAogY29uc3QgY2hhciAgICAgKgotbmV0c25tcF9nZXRfdmVyc2lvbigpCituZXRzbm1wX2dldF92ZXJzaW9uKHZvaWQpCiB7CiAgICAgcmV0dXJuIE5ldFNubXBWZXJzaW9uSW5mbzsKIH0KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcGtzbS5jIGIvc25tcGxpYi9zbm1wa3NtLmMKaW5kZXggM2NlMjgwMi4uYjM3NmU4MyAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wa3NtLmMKKysrIGIvc25tcGxpYi9zbm1wa3NtLmMKQEAgLTEwNyw2ICsxMDcsMjQgQEAKIHN0YXRpYyB2b2lkICAgICBrc21faW5jcmVtZW50X3JlZl9jb3VudChsb25nKTsKIHN0YXRpYyBzdHJ1Y3Qga3NtX2NhY2hlX2VudHJ5ICprc21fZ2V0X2NhY2hlKGxvbmcpOwogCisjaWYgIWRlZmluZWQoSEFWRV9LUkI1X0FVVEhfQ09OX0dFVFNFTkRTVUJLRVkpIC8qIEhlaW1kYWwgKi8KKwora3JiNV9lcnJvcl9jb2RlIGtyYjVfYXV0aF9jb25fZ2V0c2VuZHN1YmtleShrcmI1X2NvbnRleHQgY29udGV4dCwKKwkJCQlrcmI1X2F1dGhfY29udGV4dCBhdXRoX2NvbnRleHQsIAorCQkJCWtyYjVfa2V5YmxvY2sgKiprZXlibG9jaykKK3sKKyAgICByZXR1cm4ga3JiNV9hdXRoX2Nvbl9nZXRsb2NhbHN1YmtleShjb250ZXh0LCBhdXRoX2NvbnRleHQsIGtleWJsb2NrKTsKK30KKwora3JiNV9lcnJvcl9jb2RlIGtyYjVfYXV0aF9jb25fZ2V0cmVjdnN1YmtleShrcmI1X2NvbnRleHQgY29udGV4dCwKKwkJCQlrcmI1X2F1dGhfY29udGV4dCBhdXRoX2NvbnRleHQsIAorCQkJCWtyYjVfa2V5YmxvY2sgKiprZXlibG9jaykKK3sKKyAgICByZXR1cm4ga3JiNV9hdXRoX2Nvbl9nZXRyZW1vdGVzdWJrZXkoY29udGV4dCwgYXV0aF9jb250ZXh0LCBrZXlibG9jayk7Cit9CisKKyNlbmRpZgorCiAjZGVmaW5lIEhBU0hTSVpFCTY0CiAKIC8qCkBAIC01ODgsMTUgKzYwNiwxNSBAQAogICAgICAgICAgKi8KIAogICAgICAgICBpZiAoa3NtX3N0YXRlKQotICAgICAgICAgICAgcmV0Y29kZSA9IGtyYjVfYXV0aF9jb25fZ2V0cmVtb3Rlc3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsCisgICAgICAgICAgICByZXRjb2RlID0ga3JiNV9hdXRoX2Nvbl9nZXRyZWN2c3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1YmtleSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldGNvZGUgPSBrcmI1X2F1dGhfY29uX2dldGxvY2Fsc3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsCisgICAgICAgICAgICByZXRjb2RlID0ga3JiNV9hdXRoX2Nvbl9nZXRzZW5kc3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Via2V5KTsKIAogICAgICAgICBpZiAocmV0Y29kZSkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoImtzbSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiS1NNOiBrcmI1X2F1dGhfY29uX2dldGxvY2Fsc3Via2V5IGZhaWxlZDogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiS1NNOiBrcmI1X2F1dGhfY29uX2dldHNlbmRzdWJrZXkgZmFpbGVkOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UocmV0Y29kZSkpKTsKICAgICAgICAgICAgIHNubXBfc2V0X2RldGFpbChlcnJvcl9tZXNzYWdlKHJldGNvZGUpKTsKICAgICAgICAgICAgIHJldHZhbCA9IFNOTVBFUlJfS1JCNTsKQEAgLTgyNSwxMyArODQzLDEzIEBACiAKICAgICBpZiAoIXN1YmtleSkgewogICAgICAgICBpZiAoa3NtX3N0YXRlKQotICAgICAgICAgICAgcmV0Y29kZSA9IGtyYjVfYXV0aF9jb25fZ2V0cmVtb3Rlc3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsCisgICAgICAgICAgICByZXRjb2RlID0ga3JiNV9hdXRoX2Nvbl9nZXRyZWN2c3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1YmtleSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldGNvZGUgPSBrcmI1X2F1dGhfY29uX2dldGxvY2Fsc3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsCisgICAgICAgICAgICByZXRjb2RlID0ga3JiNV9hdXRoX2Nvbl9nZXRzZW5kc3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Via2V5KTsKICAgICAgICAgaWYgKHJldGNvZGUpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJrc20iLCAia3JiNV9hdXRoX2Nvbl9nZXRsb2NhbHN1YmtleSBmYWlsZWQ6ICVzXG4iLAorICAgICAgICAgICAgREVCVUdNU0dUTCgoImtzbSIsICJrcmI1X2F1dGhfY29uX2dldHNlbmRzdWJrZXkgZmFpbGVkOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UocmV0Y29kZSkpKTsKICAgICAgICAgICAgIHNubXBfc2V0X2RldGFpbChlcnJvcl9tZXNzYWdlKHJldGNvZGUpKTsKICAgICAgICAgICAgIHJldHZhbCA9IFNOTVBFUlJfS1JCNTsKQEAgLTE1MDQsNyArMTUyMiw3IEBACiAgICAgICAgIH0KIAogICAgICAgICByZXRjb2RlID0KLSAgICAgICAgICAgIGtyYjVfYXV0aF9jb25fZ2V0cmVtb3Rlc3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsICZzdWJrZXkpOworICAgICAgICAgICAga3JiNV9hdXRoX2Nvbl9nZXRyZWN2c3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsICZzdWJrZXkpOwogCiAgICAgICAgIGlmIChyZXRjb2RlKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgia3NtIiwgIktTTSByZW1vdGUgc3Via2V5IHJldHJpZXZhbCBmYWlsZWQ6ICVzXG4iLApAQCAtMTU2MSw3ICsxNTc5LDcgQEAKICAgICAgICAgREVCVUdNU0dUTCgoImtzbSIsICJLU006IGtyYjVfcmRfcmVwKCkgZGVjb2RlZCBzdWNjZXNzZnVsbHkuXG4iKSk7CiAKICAgICAgICAgcmV0Y29kZSA9Ci0gICAgICAgICAgICBrcmI1X2F1dGhfY29uX2dldGxvY2Fsc3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsICZzdWJrZXkpOworICAgICAgICAgICAga3JiNV9hdXRoX2Nvbl9nZXRzZW5kc3Via2V5KGtjb250ZXh0LCBhdXRoX2NvbnRleHQsICZzdWJrZXkpOwogCiAgICAgICAgIGlmIChyZXRjb2RlKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgia3NtIiwgIlVuYWJsZSB0byByZXRyaWV2ZSBsb2NhbCBzdWJrZXk6ICVzXG4iLApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wdHNtLmMgYi9zbm1wbGliL3NubXB0c20uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2QzMzhmCi0tLSAvZGV2L251bGwKKysrIGIvc25tcGxpYi9zbm1wdHNtLmMKQEAgLTAsMCArMSw0NjggQEAKKy8qCisgKiBzbm1wdHNtc20uYworICoKKyAqIFRoaXMgY29kZSBpbXBsZW1lbnRzIGEgc2VjdXJpdHkgbW9kZWwgdGhhdCBhc3N1bWVzIHRoZSBsb2NhbCB1c2VyCisgKiB0aGF0IGV4ZWN1dGVkIHRoZSBhZ2VudCBpcyB0aGUgdXNlciB3aG8ncyBhdHRyaWJ1dGVzIGNhbGxlZAorICovCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaD4KKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitzdGF0aWMgaW50ICAgICAgdHNtX3Nlc3Npb25faW5pdChuZXRzbm1wX3Nlc3Npb24gKik7CitzdGF0aWMgdm9pZCAgICAgdHNtX2ZyZWVfc3RhdGVfcmVmKHZvaWQgKik7CitzdGF0aWMgaW50ICAgICAgdHNtX2Nsb25lX3BkdShuZXRzbm1wX3BkdSAqLCBuZXRzbm1wX3BkdSAqKTsKK3N0YXRpYyB2b2lkICAgICB0c21fZnJlZV9wZHUobmV0c25tcF9wZHUgKnBkdSk7CisKK3VfaW50IG5leHRfc2Vzc19pZCA9IDE7CisKKy8qKiBJbml0aWFsaXplIHRoZSBUU00gc2VjdXJpdHkgbW9kdWxlICovCit2b2lkCitpbml0X3RzbSh2b2lkKQoreworICAgIHN0cnVjdCBzbm1wX3NlY21vZF9kZWYgKmRlZjsKKyAgICBpbnQgcmV0OworCisgICAgZGVmID0gU05NUF9NQUxMT0NfU1RSVUNUKHNubXBfc2VjbW9kX2RlZik7CisKKyAgICBpZiAoIWRlZikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIG1hbGxvYyBzbm1wX3NlY21vZCBzdHJ1Y3QsIG5vdCByZWdpc3RlcmluZyBUU01cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZGVmLT5lbmNvZGVfcmV2ZXJzZSA9IHRzbV9yZ2VuZXJhdGVfb3V0X21zZzsKKyAgICBkZWYtPmRlY29kZSA9IHRzbV9wcm9jZXNzX2luX21zZzsKKyAgICBkZWYtPnNlc3Npb25fb3BlbiA9IHRzbV9zZXNzaW9uX2luaXQ7CisgICAgZGVmLT5wZHVfZnJlZV9zdGF0ZV9yZWYgPSB0c21fZnJlZV9zdGF0ZV9yZWY7CisgICAgZGVmLT5wZHVfY2xvbmUgPSB0c21fY2xvbmVfcGR1OworICAgIGRlZi0+cGR1X2ZyZWUgPSB0c21fZnJlZV9wZHU7CisgICAgZGVmLT5wcm9iZV9lbmdpbmVpZCA9IHNubXB2M19wcm9iZV9jb250ZXh0RW5naW5lSURfcmZjNTM0MzsKKworICAgIERFQlVHTVNHVEwoKCJ0c20iLCJyZWdpc3RlcmluZyBvdXJzZWx2ZXNcbiIpKTsKKyAgICByZXQgPSByZWdpc3Rlcl9zZWNfbW9kKE5FVFNOTVBfVFNNX1NFQ1VSSVRZX01PREVMLCAidHNtIiwgZGVmKTsKKyAgICBERUJVR01TR1RMKCgidHNtIiwiIHJldHVybmVkICVkXG4iLCByZXQpKTsKKworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCAic25tcCIsICJ0c21Vc2VUcmFuc3BvcnRQcmVmaXgiLAorCQkJICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9UU01fVVNFX1BSRUZJWCk7Cit9CisKKy8qCisgKiBJbml0aWFsaXplIHNwZWNpZmljIHNlc3Npb24gaW5mb3JtYXRpb24gKHJpZ2h0IG5vdywganVzdCBzZXQgdXAgdGhpbmdzIHRvCisgKiBub3QgZG8gYW4gZW5naW5lSUQgcHJvYmUpCisgKi8KKworc3RhdGljIGludAordHNtX3Nlc3Npb25faW5pdChuZXRzbm1wX3Nlc3Npb24gKiBzZXNzKQoreworICAgIERFQlVHTVNHVEwoKCJ0c20iLAorICAgICAgICAgICAgICAgICJUU006IFJlYWNoZWQgb3VyIHNlc3Npb24gaW5pdGlhbGl6YXRpb24gY2FsbGJhY2tcbiIpKTsKKworICAgIHNlc3MtPmZsYWdzIHw9IFNOTVBfRkxBR1NfRE9OVF9QUk9CRTsKKworICAgIC8qIFhYWDogbGlrZWx5IG5lZWRlZCBmb3Igc29tZXRoaW5nOiAqLworICAgIC8qCisgICAgdHNtc2Vzc2lvbiA9IHNlc3MtPnNlY3VyaXR5SW5mbyA9CisgICAgaWYgKCF0c21zZXNzaW9uKQorICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgKi8KKworICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7Cit9CisKKy8qKiBGcmVlIG91ciBzdGF0ZSBpbmZvcm1hdGlvbiAodGhpcyBpcyBvbmx5IGRvbmUgb24gdGhlIGFnZW50IHNpZGUpICovCitzdGF0aWMgdm9pZAordHNtX2ZyZWVfc3RhdGVfcmVmKHZvaWQgKnB0cikKK3sKKyAgICBuZXRzbm1wX3RzbVNlY3VyaXR5UmVmZXJlbmNlICp0c21SZWY7CisKKyAgICBpZiAoTlVMTCA9PSBwdHIpCisgICAgICAgIHJldHVybjsKKworICAgIHRzbVJlZiA9IChuZXRzbm1wX3RzbVNlY3VyaXR5UmVmZXJlbmNlICopIHB0cjsKKyAgICAvKiB0aGUgdG1TdGF0ZVJlZiBpcyBhbHdheXMgdGFrZW4gY2FyZSBvZiBieSB0aGUgbm9ybWFsIFBEVSwgc2luY2UgdGhpcworICAgICAgIGlzIGp1c3QgYSByZWZlcmVuY2UgdG8gdGhhdCBvbmUgKi8KKyAgICAvKiBET04nVCBETzogU05NUF9GUkVFKHRzbVJlZi0+dG1TdGF0ZVJlZik7ICovCisgICAgLyogU05NUF9GUkVFKHRzbVJlZik7ICA/ICovCit9CisKK3N0YXRpYyB2b2lkCit0c21fZnJlZV9wZHUobmV0c25tcF9wZHUgKnBkdSkKK3sKKyAgICAvKiBmcmVlIHRoZSBzZWN1cml0eSByZWZlcmVuY2UgKi8KKyAgICBpZiAocGR1LT5zZWN1cml0eVN0YXRlUmVmKSB7CisgICAgICAgIHRzbV9mcmVlX3N0YXRlX3JlZihwZHUtPnNlY3VyaXR5U3RhdGVSZWYpOworICAgICAgICBwZHUtPnNlY3VyaXR5U3RhdGVSZWYgPSBOVUxMOworICAgIH0KK30KKworLyoqIFRoaXMgaXMgY2FsbGVkIHdoZW4gYSBQRFUgaXMgY2xvbmVkICh0byBpbmNyZWFzZSByZWZlcmVuY2UgY291bnRzKSAqLworc3RhdGljIGludAordHNtX2Nsb25lX3BkdShuZXRzbm1wX3BkdSAqcGR1LCBuZXRzbm1wX3BkdSAqcGR1MikKK3sKKyAgICBuZXRzbm1wX3RzbVNlY3VyaXR5UmVmZXJlbmNlICpvbGRyZWYsICpuZXdyZWY7CisKKyAgICBvbGRyZWYgPSBwZHUtPnNlY3VyaXR5U3RhdGVSZWY7CisgICAgaWYgKCFvbGRyZWYpCisgICAgICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBuZXdyZWYgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHNtU2VjdXJpdHlSZWZlcmVuY2UpOworICAgIGZwcmludGYoc3RkZXJyLCAiY2xvbmVkIGFzIHBkdT0lcCwgcmVmPSVwIChvbGRyZWY9JXApXG4iLAorICAgICAgICAgICAgcGR1MiwgbmV3cmVmLCBwZHUyLT5zZWN1cml0eVN0YXRlUmVmKTsKKyAgICBpZiAoIW5ld3JlZikKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgIAorICAgIG1lbWNweShuZXdyZWYsIG9sZHJlZiwgc2l6ZW9mKCpvbGRyZWYpKTsKKworICAgIHBkdTItPnNlY3VyaXR5U3RhdGVSZWYgPSBuZXdyZWY7CisKKyAgICAvKiB0aGUgdG0gc3RhdGUgcmVmZXJlbmNlIGlzIGp1c3QgYSBsaW5rIHRvIHRoZSBvbmUgaW4gdGhlIHBkdSwKKyAgICAgICB3aGljaCB3YXMgYWxyZWFkeSBjb3BpZWQgYnkgc25tcF9jbG9uZV9wZHUgYmVmb3JlIGhhbmRpbmcgaXQgdG8KKyAgICAgICB1cy4gKi8KKworICAgIG5ld3JlZi0+dG1TdGF0ZVJlZiA9IG5ldHNubXBfbWVtZHVwKG9sZHJlZi0+dG1TdGF0ZVJlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKm9sZHJlZi0+dG1TdGF0ZVJlZikpOworICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7Cit9CisKKy8qIGFzbi4xIGVhc2luZyBkZWZpbml0aW9ucyAqLworI2RlZmluZSBUU01CVUlMRF9PUl9FUlIoZnVuLCBhcmdzLCBtc2csIGRlc2MpICAgICAgIFwKKyAgICBERUJVR0RVTVBIRUFERVIoInNlbmQiLCBkZXNjKTsgXAorICAgIHJjID0gZnVuIGFyZ3M7ICAgICAgICAgICAgXAorICAgIERFQlVHSU5ERU5UTEVTUygpOyAgICAgICAgXAorICAgIGlmIChyYyA9PSAwKSB7IFwKKyAgICAgICAgREVCVUdNU0dUTCgoInRzbSIsbXNnKSk7IFwKKyAgICAgICAgcmV0dmFsID0gU05NUEVSUl9UT09fTE9ORzsgXAorICAgICAgICBnb3RvIG91dGVycjsgXAorICAgIH0KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiB0c21fZ2VuZXJhdGVfb3V0X21zZworICoKKyAqIFBhcmFtZXRlcnM6CisgKgkoU2VlIGxpc3QgYmVsb3cuLi4pCisgKgorICogUmV0dXJuczoKKyAqCVNOTVBFUlJfU1VDQ0VTUyAgICAgICAgICAgICAgICAgICAgICAgIE9uIHN1Y2Nlc3MuCisgKgkuLi4gYW5kIG90aGVycworICoKKyAqCisgKiBHZW5lcmF0ZSBhbiBvdXRnb2luZyBtZXNzYWdlLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitpbnQKK3RzbV9yZ2VuZXJhdGVfb3V0X21zZyhzdHJ1Y3Qgc25tcF9zZWNtb2Rfb3V0Z29pbmdfcGFyYW1zICpwYXJtcykKK3sKKyAgICB1X2NoYXIgICAgICAgICAqKndob2xlTXNnID0gcGFybXMtPndob2xlTXNnOworICAgIHNpemVfdAkgICAqb2Zmc2V0ID0gcGFybXMtPndob2xlTXNnT2Zmc2V0OworICAgIGludCByYzsKKyAgICAKKyAgICBzaXplX3QgICAgICAgICAqd2hvbGVNc2dMZW4gPSBwYXJtcy0+d2hvbGVNc2dMZW47CisgICAgbmV0c25tcF90c21TZWN1cml0eVJlZmVyZW5jZSAqdHNtU2VjUmVmOworICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZjsKKyAgICBpbnQgICAgICAgICAgICAgdG1TdGF0ZVJlZkxvY2FsID0gMDsKKyAgICAKKyAgICBERUJVR01TR1RMKCgidHNtIiwgIlN0YXJ0aW5nIFRTTSBwcm9jZXNzaW5nXG4iKSk7CisKKyAgICAvKiBpZiB3ZSBoYXZlIHRoaXMsIHRoaXMgbWVzc2FnZSBpcyBpbiByZXNwb25zZSB0byBzb21ldGhpbmcgdGhhdAorICAgICAgIGNhbWUgaW4gZWFybGllciAqLworICAgIHRzbVNlY1JlZiA9IHBhcm1zLT5zZWNTdGF0ZVJlZjsKKyAgICAKKyAgICBpZiAodHNtU2VjUmVmKSB7CisgICAgICAgIC8qIHNlY3Rpb24gNC4yLCBzdGVwIDEgKi8KKyAgICAgICAgaWYgKHRzbVNlY1JlZi0+dG1TdGF0ZVJlZikKKyAgICAgICAgICAgIHRtU3RhdGVSZWYgPSB0c21TZWNSZWYtPnRtU3RhdGVSZWY7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRtU3RhdGVSZWYgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSk7CisgICAgICAgIGlmIChOVUxMID09IHRtU3RhdGVSZWYpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJmYWlsZWQgdG8gYWxsb2NhdGUgYSB0bVN0YXRlUmVmZXJlbmNlXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICB0bVN0YXRlUmVmLT5zYW1lU2VjdXJpdHkgPSBORVRTTk1QX1RNX1VTRV9TQU1FX1NFQ1VSSVRZOworICAgICAgICB0bVN0YXRlUmVmLT5yZXF1ZXN0ZWRTZWN1cml0eUxldmVsID0gdHNtU2VjUmVmLT5zZWN1cml0eUxldmVsOworCisgICAgICAgIC8qIFhYWDogdGhpcyBtYXkgYmUgZnJlZWQgYXV0b21hdGljYWxseSBsYXRlciBieSB0aGUgbGlicmFyeT8gKi8KKyAgICAgICAgU05NUF9GUkVFKHBhcm1zLT5zZWNTdGF0ZVJlZik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogc2VjdGlvbiA0LjIsIHN0ZXAgMiAqLworICAgICAgICB0bVN0YXRlUmVmID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UpOworICAgICAgICBpZiAodG1TdGF0ZVJlZiA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgIH0KKyAgICAgICAgdG1TdGF0ZVJlZkxvY2FsID0gMTsKKyAgICAgICAgCisgICAgICAgIHRtU3RhdGVSZWYtPnJlcXVlc3RlZFNlY3VyaXR5TGV2ZWwgPSBwYXJtcy0+c2VjTGV2ZWw7CisgICAgICAgIHRtU3RhdGVSZWYtPnNhbWVTZWN1cml0eSA9IE5FVFNOTVBfVE1fU0FNRV9TRUNVUklUWV9OT1RfUkVRVUlSRUQ7CisKKyAgICAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfVFNNX1VTRV9QUkVGSVgpKSB7CisgICAgICAgICAgICAvKiBYWFg6IHByb2JhYmx5IHNob3VsZG4ndCBiZSBhIGhhcmQtY29kZWQgbGlzdCBvZgorICAgICAgICAgICAgICAgc3VwcG9ydGVkIHRyYW5zcG9ydHMgKi8KKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnByZWZpeDsKKyAgICAgICAgICAgIGlmIChzdHJuY21wKCJzc2g6IixwYXJtcy0+c2Vzc2lvbi0+cGVlcm5hbWUsNCkgPT0gMCkKKyAgICAgICAgICAgICAgICBwcmVmaXggPSAic3NoOiI7CisgICAgICAgICAgICBlbHNlIGlmIChzdHJuY21wKCJkdGxzOiIscGFybXMtPnNlc3Npb24tPnBlZXJuYW1lLDQpID09IDApCisgICAgICAgICAgICAgICAgcHJlZml4ID0gImR0bHM6IjsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIGE6IC0gbG9va3VwIHRoZSBwcmVmaXggKi8KKyAgICAgICAgICAgIC8qICAgIC0gaWYgRE5FLCBzbm1wVHNtVW5rbm93blByZWZpeGVzKysgYW5kIGJhaWwgKi8KKyAgICAgICAgICAgIGlmICghcHJlZml4KSB7CisgICAgICAgICAgICAgICAgLyogc25tcFRzbVVua25vd25QcmVmaXhlcysrICovCisgICAgICAgICAgICAgICAgU05NUF9GUkVFKHRtU3RhdGVSZWYpOworICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogICAgLSBJZiBzZWNOYW1lIGRvZXNuJ3QgaGF2ZSB0aGUgcHJlZml4IChvciBhbnkpOgorICAgICAgICAgICAgICAgICAgc25tcFRzbUludmFsaWRQcmVmaXhlcysrIGFuZCBiYWlsICovCisgICAgICAgICAgICBpZiAoc3RyY2hyKHBhcm1zLT5zZWNOYW1lLCAnOicpID09IDAgfHwKKyAgICAgICAgICAgICAgICBzdHJsZW4ocHJlZml4KSsxID49IHBhcm1zLT5zZWNOYW1lTGVuIHx8CisgICAgICAgICAgICAgICAgc3RybmNtcChwYXJtcy0+c2VjTmFtZSwgcHJlZml4LCBzdHJsZW4ocHJlZml4KSkgIT0gMCB8fAorICAgICAgICAgICAgICAgIHBhcm1zLT5zZWNOYW1lW3N0cmxlbihwcmVmaXgpXSAhPSAnOicpIHsKKworICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKyAgICAgICAgICAgICAgICAvKiBzbm1wVHNtSW52YWxpZFByZWZpeGVzKysgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qICAgIC0gU3RyaXAgdGhlIHByZWZpeCBhbmQgdHJhaWxpbmcgOiAqLworICAgICAgICAgICAgLyogc2V0IHRtU2VjdXJpdHlOYW1lIHRvIHNlY3VyaXR5TmFtZSBtaW51cyBzdHJpcHBlZCBwYXJ0ICovCisgICAgICAgICAgICBtZW1jcHkodG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lLAorICAgICAgICAgICAgICAgICAgIHBhcm1zLT5zZWNOYW1lICsgc3RybGVuKHByZWZpeCkgKyAxLAorICAgICAgICAgICAgICAgICAgIHBhcm1zLT5zZWNOYW1lTGVuIC0gc3RybGVuKHByZWZpeCkgLSAxKTsKKyAgICAgICAgICAgIHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZUxlbiA9IHBhcm1zLT5zZWNOYW1lTGVuIC0gc3RybGVuKHByZWZpeCkgLTE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBzZXQgdG1TZWN1cml0eU5hbWUgdG8gc2VjdXJpdHlOYW1lICovCisgICAgICAgICAgICBtZW1jcHkodG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lLCBwYXJtcy0+c2VjTmFtZSwKKyAgICAgICAgICAgICAgICAgICBwYXJtcy0+c2VjTmFtZUxlbik7CisgICAgICAgICAgICB0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWVMZW4gPSBwYXJtcy0+c2VjTmFtZUxlbjsKKyAgICAgICAgfQorICAgIH0KKyAgICB0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWVbdG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lTGVuXSA9ICdcMCc7CisKKyAgICAvKiBTZWN0aW9uIDQuMiwgU3RlcCAzOgorICAgICAqIC0gU2V0IHNlY3VyaXR5UGFyYW1ldGVycyB0byBhIHplcm8tbGVuZ3RoIE9DVEVUIFNUUklORyAoJzA0MDAnKQorICAgICAqIAorICAgICAqIFdlIGRlZmluZSBoZXJlIHdoYXQgdGhlIHNlY3VyaXR5IG1lc3NhZ2Ugc2VjdGlvbiB3aWxsIGxvb2sgbGlrZToKKyAgICAgKiAwNCAwMCAtLSBudWxsIHN0cmluZworICAgICAqLworICAgIERFQlVHRFVNUEhFQURFUigic2VuZCIsICJ0c20gc2VjdXJpdHkgcGFyYW1ldGVycyIpOworICAgIHJjID0gYXNuX3JlYWxsb2NfcmJ1aWxkX2hlYWRlcih3aG9sZU1zZywgd2hvbGVNc2dMZW4sIG9mZnNldCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKSAoQVNOX1VOSVZFUlNBTCB8IEFTTl9QUklNSVRJVkUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQVNOX09DVEVUX1NUUiksIDApOworICAgIERFQlVHSU5ERU5UTEVTUygpOworICAgIGlmIChyYyA9PSAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJ0c20iLCAiYnVpbGRpbmcgbXNnU2VjdXJpdHlQYXJhbWV0ZXJzIGZhaWxlZC5cbiIpKTsKKyAgICAgICAgaWYgKHRtU3RhdGVSZWZMb2NhbCkKKyAgICAgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfVE9PX0xPTkc7CisgICAgfQorICAgIAorICAgIC8qIFNlY3Rpb24gNC4yLCBTdGVwIDQ6CisgICAgICogQ29tYmluZSB0aGUgbWVzc2FnZSBwYXJ0cyBpbnRvIGEgd2hvbGVNc2cgYW5kIGNhbGN1bGF0ZSB3aG9sZU1zZ0xlbgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBDb3B5IGluIHRoZSBtc2dHbG9iYWxEYXRhIGFuZCBtc2dWZXJzaW9uLiAgCisgICAgICovCisgICAgd2hpbGUgKCgqd2hvbGVNc2dMZW4gLSAqb2Zmc2V0KSA8IHBhcm1zLT5nbG9iYWxEYXRhTGVuKSB7CisgICAgICAgIGlmICghYXNuX3JlYWxsb2Mod2hvbGVNc2csIHdob2xlTXNnTGVuKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInRzbSIsICJidWlsZGluZyBnbG9iYWwgZGF0YSBmYWlsZWQuXG4iKSk7CisgICAgICAgICAgICBpZiAodG1TdGF0ZVJlZkxvY2FsKQorICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1RPT19MT05HOworICAgICAgICB9CisgICAgfQorCisgICAgKm9mZnNldCArPSBwYXJtcy0+Z2xvYmFsRGF0YUxlbjsKKyAgICBtZW1jcHkoKndob2xlTXNnICsgKndob2xlTXNnTGVuIC0gKm9mZnNldCwKKyAgICAgICAgICAgcGFybXMtPmdsb2JhbERhdGEsIHBhcm1zLT5nbG9iYWxEYXRhTGVuKTsKKworICAgIC8qCisgICAgICogVG90YWwgcGFja2V0IHNlcXVlbmNlLiAgCisgICAgICovCisgICAgcmMgPSBhc25fcmVhbGxvY19yYnVpbGRfc2VxdWVuY2Uod2hvbGVNc2csIHdob2xlTXNnTGVuLCBvZmZzZXQsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhcikgKEFTTl9TRVFVRU5DRSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9DT05TVFJVQ1RPUiksICpvZmZzZXQpOworICAgIGlmIChyYyA9PSAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJ0c20iLCAiYnVpbGRpbmcgbWFzdGVyIHBhY2tldCBzZXF1ZW5jZSBmYWlsZWQuXG4iKSk7CisgICAgICAgIGlmICh0bVN0YXRlUmVmTG9jYWwpCisgICAgICAgICAgICBTTk1QX0ZSRUUodG1TdGF0ZVJlZik7CisgICAgICAgIHJldHVybiBTTk1QRVJSX1RPT19MT05HOworICAgIH0KKworICAgIC8qIFNlY3Rpb24gNC4yIFN0ZXAgNTogIHJldHVybiBldmVyeXRoaW5nICovCisKKyAgICBpZiAocGFybXMtPnBkdS0+dHJhbnNwb3J0X2RhdGEgJiYKKyAgICAgICAgcGFybXMtPnBkdS0+dHJhbnNwb3J0X2RhdGEgIT0gdG1TdGF0ZVJlZikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidHNtOiBuZWVkZWQgdG8gZnJlZSB0cmFuc3BvcnQgZGF0YVxuIik7CisgICAgICAgIFNOTVBfRlJFRShwYXJtcy0+cGR1LT50cmFuc3BvcnRfZGF0YSk7CisgICAgfQorCisgICAgLyogcHV0IHRoZSB0cmFuc3BvcnQgc3RhdGUgcmVmZXJlbmNlIGludG8gdGhlIFBEVSBmb3IgdGhlIHRyYW5zcG9ydCAqLworICAgIHBhcm1zLT5wZHUtPnRyYW5zcG9ydF9kYXRhID0gbmV0c25tcF9tZW1kdXAodG1TdGF0ZVJlZiwgc2l6ZW9mKCp0bVN0YXRlUmVmKSk7CisgICAgaWYgKCFwYXJtcy0+cGR1LT50cmFuc3BvcnRfZGF0YSkKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInRzbTogbWFsbG9jIGZhaWx1cmVcbiIpOworICAgIHBhcm1zLT5wZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCA9IHNpemVvZigqdG1TdGF0ZVJlZik7CisKKyAgICBpZiAodG1TdGF0ZVJlZkxvY2FsKQorICAgICAgICBTTk1QX0ZSRUUodG1TdGF0ZVJlZik7CisgICAgREVCVUdNU0dUTCgoInRzbSIsICJUU00gcHJvY2Vzc2luZyBjb21wbGV0ZWQuXG4iKSk7CisgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiB0c21fcHJvY2Vzc19pbl9tc2cKKyAqCisgKiBQYXJhbWV0ZXJzOgorICoJKFNlZSBsaXN0IGJlbG93Li4uKQorICoKKyAqIFJldHVybnM6CisgKglUU01fRVJSX05PX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgT24gc3VjY2Vzcy4KKyAqCVRTTV9FUlJfR0VORVJJQ19FUlJPUgorICoJVFNNX0VSUl9VTlNVUFBPUlRFRF9TRUNVUklUWV9MRVZFTAorICoKKyAqCisgKiBQcm9jZXNzZXMgYW4gaW5jb21pbmcgbWVzc2FnZS4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworaW50Cit0c21fcHJvY2Vzc19pbl9tc2coc3RydWN0IHNubXBfc2VjbW9kX2luY29taW5nX3BhcmFtcyAqcGFybXMpCit7CisgICAgdV9jaGFyIHR5cGVfdmFsdWU7CisgICAgc2l6ZV90IHJlbWFpbmluZzsKKyAgICB1X2NoYXIgKmRhdGFfcHRyOworICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZjsKKyAgICBuZXRzbm1wX3RzbVNlY3VyaXR5UmVmZXJlbmNlICp0c21TZWNSZWY7CisgICAgdV9jaGFyICAgICAgICAgIG91ckVuZ2luZUlEW1NOTVBfTUFYX0VOR19TSVpFXTsKKyAgICBzdGF0aWMgc2l6ZV90ICAgb3VyRW5naW5lSURfbGVuID0gc2l6ZW9mKG91ckVuZ2luZUlEKTsKKyAgICAKKyAgICAvKiBTZWN0aW9uIDUuMiwgc3RlcCAxICovCisgICAgb3VyRW5naW5lSURfbGVuID0KKyAgICAgICAgc25tcHYzX2dldF9lbmdpbmVJRCgodV9jaGFyKilvdXJFbmdpbmVJRCwgb3VyRW5naW5lSURfbGVuKTsKKyAgICBpZiAob3VyRW5naW5lSURfbGVuID09IDAgfHwgb3VyRW5naW5lSURfbGVuID4gKnBhcm1zLT5zZWNFbmdpbmVJRExlbikKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgIG1lbWNweShwYXJtcy0+c2VjRW5naW5lSUQsIG91ckVuZ2luZUlELCAqcGFybXMtPnNlY0VuZ2luZUlETGVuKTsKKworICAgIC8qIFNlY3Rpb24gNS4yLCBzdGVwIDIgKi8KKyAgICBpZiAoIXBhcm1zLT5wZHUtPnRyYW5zcG9ydF9kYXRhIHx8CisgICAgICAgIHNpemVvZihuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UpICE9CisgICAgICAgIHBhcm1zLT5wZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCkgeworICAgICAgICAvKiBpZiB3ZSdyZSBub3QgY29taW5nIGluIG92ZXIgYSBwcm9wZXIgdHJhbnNwb3J0OyBiYWlsISAqLworICAgICAgICBERUJVR01TR1RMKCgidHNtIiwiaW1wcm9wZXIgdHJhbnNwb3J0IGRhdGFcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB0bVN0YXRlUmVmID0gKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqKSBwYXJtcy0+cGR1LT50cmFuc3BvcnRfZGF0YTsKKyAgICBwYXJtcy0+cGR1LT50cmFuc3BvcnRfZGF0YSA9IE5VTEw7CisKKyAgICBpZiAodG1TdGF0ZVJlZiA9PSBOVUxMIHx8CisgICAgICAgIC8qIG5vdCBuZWVkZWQ6IHRtU3RhdGVSZWYtPnRyYW5zcG9ydERvbWFpbiA9PSBOVUxMIHx8ICovCisgICAgICAgIC8qIG5vdCBuZWVkZWQ6IHRtU3RhdGVSZWYtPnRyYW5zcG9ydEFkZHJlc3MgPT0gTlVMTCB8fCAqLworICAgICAgICB0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWVbMF0gPT0gJ1wwJworICAgICAgICAvKiB8fCBzZWNsZXZlbCBpcyBub3QgdmFsaWQgKi8KKyAgICAgICAgKSB7CisgICAgICAgIC8qIFhYWDogc25tcFRzbUludmFsaWRDYWNoZXMrKyAqLworICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgfQorCisgICAgLyogU2VjdGlvbiA1LjIsIHN0ZXAgMyAqLworICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfVFNNX1VTRV9QUkVGSVgpKSB7CisgICAgICAgIC8qIFNlY3Rpb24gNS4yLCBzdGVwIDNhICovCisgICAgICAgIGNvbnN0IGNoYXIgKnByZWZpeDsKKyAgICAgICAgcHJlZml4ID0gInNzaDoiOyAvKiBYWFggKi8KKworICAgICAgICBpZiAocHJlZml4ID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFhYWDogc25tcFRzbVVua25vd25QcmVmaXhlcysrICovCisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RybGVuKHByZWZpeCkgPCAxIHx8IHN0cmxlbihwcmVmaXgpID4gNCkgeworICAgICAgICAgICAgLyogWFhYOiBzbm1wVHNtSW52YWxpZFByZWZpeGVzKysgKi8KKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc25wcmludGYocGFybXMtPnNlY05hbWUsICpwYXJtcy0+c2VjTmFtZUxlbiwKKyAgICAgICAgICAgICAgICAgIiVzOiVzIiwgcHJlZml4LCB0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0cm5jcHkocGFybXMtPnNlY05hbWUsIHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSwgKnBhcm1zLT5zZWNOYW1lTGVuKTsKKyAgICB9CisgICAgKnBhcm1zLT5zZWNOYW1lTGVuID0gc3RybGVuKHBhcm1zLT5zZWNOYW1lKTsKKyAgICBERUJVR01TR1RMKCgidHNtIiwgInVzZXI6ICVzLyVkXG4iLCBwYXJtcy0+c2VjTmFtZSwgKnBhcm1zLT5zZWNOYW1lTGVuKSk7CisKKyAgICAvKiBTZWN0aW9uIDUuMiBTdGVwIDQgKi8KKyAgICBpZiAocGFybXMtPnNlY0xldmVsID4gdG1TdGF0ZVJlZi0+dHJhbnNwb3J0U2VjdXJpdHlMZXZlbCkgeworICAgICAgICAvKiBYWFg6IHNubXBUc21JbmFkZXF1YXRlU2VjdXJpdHlMZXZlbHMrKyAqLworICAgICAgICByZXR1cm4gU05NUEVSUl9VTlNVUFBPUlRFRF9TRUNfTEVWRUw7CisgICAgfQorCisgICAgLyogU2VjdGlvbiA1LjIgU3RlcCA1ICovCisKKyAgICBpZiAoTlVMTCA9PSAqcGFybXMtPnNlY1N0YXRlUmVmKSB7CisgICAgICAgIHRzbVNlY1JlZiA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90c21TZWN1cml0eVJlZmVyZW5jZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdHNtU2VjUmVmID0gKnBhcm1zLT5zZWNTdGF0ZVJlZjsKKyAgICB9CisKKyAgICBpZiAoIXRzbVNlY1JlZikKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworCisgICAgKnBhcm1zLT5zZWNTdGF0ZVJlZiA9IHRzbVNlY1JlZjsKKyAgICB0c21TZWNSZWYtPnRtU3RhdGVSZWYgPSB0bVN0YXRlUmVmOworCisgICAgLyogSWYgdGhpcyBkaWQgbm90IGNvbWUgdGhyb3VnaCBhIHR1bm5lbGVkIGNvbm5lY3Rpb24sIHRoaXMKKyAgICAgICBzZWN1cml0eSBtb2RlbCBpcyBpbmFwcHJvcHJpYXRlIChhbmQgd291bGQgYmUgYSBIVUdFIHNlY3VyaXR5CisgICAgICAgaG9sZSB0byBhc3N1bWUgb3RoZXJ3aXNlKS4gIFRoaXMgaXMgZnVuY3Rpb25hbGx5IGEgZG91YmxlIGNoZWNrCisgICAgICAgc2luY2UgdGhlIHBkdSB3b3VsZG4ndCBoYXZlIHRyYW5zcG9ydCBkYXRhIG90aGVyd2lzZS4gIEJ1dCB0aGlzCisgICAgICAgaXMgc2FmZXIgdGhvdWdoIGlzIGZ1bmN0aW9uYWxseSBhbiBleHRyYSBzdGVwIGJleW9uZCB0aGUgVFNNCisgICAgICAgUkZDLiAqLworICAgIERFQlVHTVNHVEwoKCJ0c20iLCJjaGVja2luZyBob3cgd2UgZ290IGhlcmVcbiIpKTsKKyAgICBpZiAoIShwYXJtcy0+cGR1LT5mbGFncyAmIFVDRF9NU0dfRkxBR19UVU5ORUxFRCkpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInRzbSIsIiAgcGR1IG5vdCB0dW5uZWxlZFxuIikpOworICAgICAgICBpZiAoIShwYXJtcy0+c2Vzcy0+ZmxhZ3MgJiBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX1RVTk5FTEVEKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInRzbSIsIiAgc2Vzc2lvbiBub3QgdHVubmVsZWRcbiIpKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9BVVRIRU5USUNBVElPTkZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAgREVCVUdNU0dUTCgoInRzbSIsIiAgYnV0IHNlc3Npb24gaXMgdHVubmVsZWRcbiIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBERUJVR01TR1RMKCgidHNtIiwiICB0dW5uZWxlZFxuIikpOworICAgIH0KKworICAgIC8qIFNlY3Rpb24gNS4yLCBTdGVwIDYgKi8KKyAgICAvKgorICAgICAqIEVhdCB0aGUgZmlyc3Qgb2N0ZXQgaGVhZGVyLgorICAgICAqLworICAgIHJlbWFpbmluZyA9IHBhcm1zLT53aG9sZU1zZ0xlbiAtIChwYXJtcy0+c2VjUGFyYW1zIC0gcGFybXMtPndob2xlTXNnKTsKKyAgICBpZiAoKGRhdGFfcHRyID0gYXNuX3BhcnNlX3NlcXVlbmNlKHBhcm1zLT5zZWNQYXJhbXMsICZyZW1haW5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR5cGVfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFTTl9VTklWRVJTQUwgfCBBU05fUFJJTUlUSVZFIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX09DVEVUX1NUUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzbSBmaXJzdCBvY3RldCIpKSA9PSBOVUxMKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFJFVFVSTiBwYXJzZSBlcnJvciAKKyAgICAgICAgICovCisgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICB9CisgICAgCisgICAgKnBhcm1zLT5zY29wZWRQZHUgPSBkYXRhX3B0cjsKKyAgICAqcGFybXMtPnNjb3BlZFBkdUxlbiA9IHBhcm1zLT53aG9sZU1zZ0xlbiAtIChkYXRhX3B0ciAtIHBhcm1zLT53aG9sZU1zZyk7CisKKyAgICAvKiBTZWN0aW9uIDUuMiwgU3RlcCA3ICovCisgICAgKnBhcm1zLT5tYXhTaXplUmVzcG9uc2UgPSBwYXJtcy0+bWF4TXNnU2l6ZTsgLyogWFhYICovCisKKyAgICB0c21TZWNSZWYtPnNlY3VyaXR5TGV2ZWwgPSBwYXJtcy0+c2VjTGV2ZWw7CisKKyAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOworfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wdXNtLmMgYi9zbm1wbGliL3NubXB1c20uYwppbmRleCAzODliNjc3Li4wMDY5OWZiIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXB1c20uYworKysgYi9zbm1wbGliL3NubXB1c20uYwpAQCAtNTE4LDcgKzUxOCw3IEBACiAgICAgICogQ2FsY3VsYXRlIGxlbmd0aHMuCiAgICAgICovCiAgICAgaWYgKChlbmdJRGxlbiA9IGFzbl9wcmVkaWN0X2xlbmd0aChBU05fT0NURVRfU1RSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgc2VjRW5naW5lSURMZW4pKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgc2VjRW5naW5lSURMZW4pKSA9PSAtMSkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC01MzQsMjkgKzUzNCwzMSBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKChuYW1lbGVuID0gYXNuX3ByZWRpY3RfbGVuZ3RoKEFTTl9PQ1RFVF9TVFIsIDAsIHNlY05hbWVMZW4pKSA9PSAtMSkgeworICAgIGlmICgobmFtZWxlbiA9IGFzbl9wcmVkaWN0X2xlbmd0aChBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBzZWNOYW1lTGVuKSkgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIGlmICgoYXV0aGxlbiA9IGFzbl9wcmVkaWN0X2xlbmd0aChBU05fT0NURVRfU1RSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAqbXNnQXV0aFBhcm1MZW4pKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAqbXNnQXV0aFBhcm1MZW4pKSA9PSAtMSkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgaWYgKChwcml2bGVuID0gYXNuX3ByZWRpY3RfbGVuZ3RoKEFTTl9PQ1RFVF9TVFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICptc2dQcml2UGFybUxlbikpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICptc2dQcml2UGFybUxlbikpID09IC0xKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAqc2VxX2xlbiA9CiAgICAgICAgIGVuZ0lEbGVuICsgZW5nQnRsZW4gKyBlbmdUbWxlbiArIG5hbWVsZW4gKyBhdXRobGVuICsgcHJpdmxlbjsKIAotICAgIGlmICgoKm90c3RsZW4gPSBhc25fcHJlZGljdF9sZW5ndGgoQVNOX1NFUVVFTkNFLCAwLCAqc2VxX2xlbikpID09IC0xKSB7CisgICAgaWYgKCgqb3RzdGxlbiA9IGFzbl9wcmVkaWN0X2xlbmd0aChBU05fU0VRVUVOQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAqc2VxX2xlbikpID09IC0xKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICBpZiAoKCptc2dTZWNQYXJtTGVuID0gYXNuX3ByZWRpY3RfbGVuZ3RoKEFTTl9PQ1RFVF9TVFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAqb3RzdGxlbikpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAqb3RzdGxlbikpID09IC0xKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTU4NCw3ICs1ODYsNyBAQAogICAgICAgICBzY29wZWRQZHVMZW4gPSBST1VORFVQOChzY29wZWRQZHVMZW4pOwogCiAgICAgICAgIGlmICgoKmRhdGFsZW4gPQotICAgICAgICAgICAgIGFzbl9wcmVkaWN0X2xlbmd0aChBU05fT0NURVRfU1RSLCAwLCBzY29wZWRQZHVMZW4pKSA9PSAtMSkgeworICAgICAgICAgICAgIGFzbl9wcmVkaWN0X2xlbmd0aChBU05fT0NURVRfU1RSLCBOVUxMLCBzY29wZWRQZHVMZW4pKSA9PSAtMSkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTEzODcsNyArMTM4OSw3IEBACiAgICAgc2l6ZV90ICAgICAgICAgIHNwX29mZnNldCA9IDAsIG1hY19vZmZzZXQgPSAwOwogICAgIGludCAgICAgICAgICAgICByYyA9IDA7CiAKLSAgICBERUJVR01TR1RMKCgidXNtIiwgIlVTTSBwcm9jZXNzaW5nIGhhcyBiZWd1biAob2Zmc2V0ICVkKVxuIiwgKm9mZnNldCkpOworICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiVVNNIHByb2Nlc3NpbmcgaGFzIGJlZ3VuIChvZmZzZXQgJWQpXG4iLCAoaW50KSpvZmZzZXQpKTsKIAogICAgIGlmIChzZWNTdGF0ZVJlZiAhPSBOVUxMKSB7CiAgICAgICAgIC8qCkBAIC0xNTE1LDcgKzE1MTcsNyBAQAogICAgICAgICBpZiAoKGNpcGhlcnRleHQgPSAodV9jaGFyICopIG1hbGxvYyhjaXBoZXJ0ZXh0bGVuKSkgPT0gTlVMTCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgbWFsbG9jICVkIGJ5dGVzIGZvciBlbmNyeXB0ZWQgUERVXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgY2lwaGVydGV4dGxlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgKGludCljaXBoZXJ0ZXh0bGVuKSk7CiAgICAgICAgICAgICB1c21fZnJlZV91c21TdGF0ZVJlZmVyZW5jZShzZWNTdGF0ZVJlZik7CiAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9NQUxMT0M7CiAgICAgICAgIH0KQEAgLTE1OTAsNiArMTU5Miw3IEBACiAgICAgICAgICAgICBTTk1QX0ZSRUUoY2lwaGVydGV4dCk7CiAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9VU01fRU5DUllQVElPTkVSUk9SOwogICAgICAgICB9CisKICNpZmRlZiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUKICAgICAgICAgaWYgKGRlYnVnX2lzX3Rva2VuX3JlZ2lzdGVyZWQoInVzbS9kdW1wIikgPT0gU05NUEVSUl9TVUNDRVNTKSB7CiAgICAgICAgICAgICBkdW1wX2NodW5rKCJ1c20vZHVtcCIsICJzYWx0ICsgRW5jcnlwdGVkIGZvcm06ICIsIHNhbHQsCkBAIC0yNjE3LDggKzI2MjAsOCBAQAogCiAgICAgICAgICAgICBpZiAocmVtYWluaW5nICUgOCAhPSAwKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNpcGhlcnRleHQgaXMgJWx1IGJ5dGVzLCBub3QgYW4gaW50ZWdlciBtdWx0aXBsZSBvZiA4IChyZW0gJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZywgcmVtYWluaW5nICUgOCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaXBoZXJ0ZXh0IGlzICVsdSBieXRlcywgbm90IGFuIGludGVnZXIgbXVsdGlwbGUgb2YgOCAocmVtICVsdSlcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpcmVtYWluaW5nLCAodW5zaWduZWQgbG9uZylyZW1haW5pbmcgJSA4KSk7CiAgICAgICAgICAgICAgICAgaWYgKHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTREVDUllQVElPTkVSUk9SUykgPT0KICAgICAgICAgICAgICAgICAgICAgMCkgewogICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLCAiRmFpbGVkIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwpAQCAtMjc2OCw3ICsyNzcxLDcgQEAKIHsKICAgICBzdHJ1Y3Qgc25tcF9zZWNtb2RfZGVmICpkZWY7CiAKLSAgICBERUJVR01TR1RMKCgiaW5pdF91c20iLCAidW5pdF91c206ICVkICVkXG4iLCB1c21Ob1ByaXZQcm90b2NvbFswXSwKKyAgICBERUJVR01TR1RMKCgiaW5pdF91c20iLCAidW5pdF91c206ICVsdSAlbHVcbiIsIHVzbU5vUHJpdlByb3RvY29sWzBdLAogICAgICAgICAgICAgICAgIHVzbU5vUHJpdlByb3RvY29sWzFdKSk7CiAKICAgICBzY19pbml0KCk7ICAgICAgICAgICAgICAgICAgLyogaW5pdGFsaXplIHNjYXBpIGNvZGUgKi8KQEAgLTI3NzcsNiArMjc4MCw4IEBACiAgICAgICogcmVnaXN0ZXIgb3Vyc2VsdmVzIGFzIGEgc2VjdXJpdHkgc2VydmljZSAKICAgICAgKi8KICAgICBkZWYgPSBTTk1QX01BTExPQ19TVFJVQ1Qoc25tcF9zZWNtb2RfZGVmKTsKKyAgICBpZiAoZGVmID09IE5VTEwpCisgICAgICAgIHJldHVybjsKICAgICAvKgogICAgICAqIFhYWDogZGVmLT5pbml0X3Nlc3Nfc2VjbW9kIG1vdmUgc3R1ZmYgZnJvbSBzbm1wX2FwaS5jIAogICAgICAqLwpAQCAtMjkyNyw3ICsyOTMyLDcgQEAKICAgICBpZiAodXNlci0+dXNlclN0YXR1cyAhPSBSU19BQ1RJVkUpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIERFQlVHTVNHVEwoKCJjb21wYXJleCIsICJDb21wYXJpbmc6ICVkICVkICIsIHVzbU5vUHJpdlByb3RvY29sWzBdLAorICAgIERFQlVHTVNHVEwoKCJjb21wYXJleCIsICJDb21wYXJpbmc6ICVsdSAlbHUgIiwgdXNtTm9Qcml2UHJvdG9jb2xbMF0sCiAgICAgICAgICAgICAgICAgdXNtTm9Qcml2UHJvdG9jb2xbMV0pKTsKICAgICBERUJVR01TR09JRCgoImNvbXBhcmV4IiwgdXNtTm9Qcml2UHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgIHNpemVvZih1c21Ob1ByaXZQcm90b2NvbCkgLyBzaXplb2Yob2lkKSkpOwpAQCAtMzU2NiwxMSArMzU3MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXItPnByaXZLZXlMZW4pOwogICAgICpjcHRyKysgPSAnICc7CiAgICAgY3B0ciA9IHJlYWRfY29uZmlnX3NhdmVfb2N0ZXRfc3RyaW5nKGNwdHIsIHVzZXItPnVzZXJQdWJsaWNTdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c2VyLT51c2VyUHVibGljU3RyaW5nID09Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSA/IDAgOiBzdHJsZW4oKGNoYXIgKikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyUHVibGljU3RyaW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLT51c2VyUHVibGljU3RyaW5nTGVuKTsKKwogICAgIHJlYWRfY29uZmlnX3N0b3JlKHR5cGUsIGxpbmUpOwogfQogCkBAIC0zNjQ2LDcgKzM2NDgsNyBAQAogICAgIH0KIAogICAgIGxpbmUgPSByZWFkX2NvbmZpZ19yZWFkX29jdGV0X3N0cmluZyhsaW5lLCAmdXNlci0+dXNlclB1YmxpY1N0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VyLT51c2VyUHVibGljU3RyaW5nTGVuKTsKICAgICByZXR1cm4gdXNlcjsKIH0KIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wdjMuYyBiL3NubXBsaWIvc25tcHYzLmMKaW5kZXggZTNiZGM1MC4uZTQ1MWYzMSAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wdjMuYworKysgYi9zbm1wbGliL3NubXB2My5jCkBAIC0yMTYsMTYgKzIxNiwxMyBAQAogdm9pZAogc25tcHYzX3NlY0xldmVsX2NvbmYoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cikKIHsKLSAgICBjaGFyICAgICAgICAgICAgYnVmWzEwMjRdOwogICAgIGludCAgICAgICAgICAgICBzZWNMZXZlbDsKIAogICAgIGlmICgoc2VjTGV2ZWwgPSBwYXJzZV9zZWNMZXZlbF9jb25mKCB3b3JkLCBjcHRyICkpID49IDAgKSB7CiAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0xJQlJBUllfSUQsIAogCQkJICAgTkVUU05NUF9EU19MSUJfU0VDTEVWRUwsIHNlY0xldmVsKTsKICAgICB9IGVsc2UgewotICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiVW5rbm93biBzZWN1cml0eSBsZXZlbDogJXMiLCBjcHRyKTsKLSAgICAgICAgYnVmWyBzaXplb2YoYnVmKS0xIF0gPSAwOwotICAgICAgICBjb25maWdfcGVycm9yKGJ1Zik7CisJbmV0c25tcF9jb25maWdfZXJyb3IoIlVua25vd24gc2VjdXJpdHkgbGV2ZWw6ICVzIiwgY3B0cik7CiAgICAgfQogICAgIERFQlVHTVNHVEwoKCJzbm1wdjMiLCAiZGVmYXVsdCBzZWNMZXZlbCBzZXQgdG86ICVzID0gJWRcbiIsIGNwdHIsCiAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCkBAIC0xMDU2LDcgKzEwNTMsNyBAQAogZW5naW5lQm9vdHNfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKQogewogICAgIGVuZ2luZUJvb3RzID0gYXRvaShjcHRyKSArIDE7Ci0gICAgREVCVUdNU0dUTCgoInNubXB2MyIsICJlbmdpbmVCb290czogJWRcbiIsIGVuZ2luZUJvb3RzKSk7CisgICAgREVCVUdNU0dUTCgoInNubXB2MyIsICJlbmdpbmVCb290czogJWx1XG4iLCBlbmdpbmVCb290cykpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgpAQCAtMTE5OCw3ICsxMTk1LDcgQEAKIH0KIAogLyoKLSAqIGVuZ2luZUlEX29sZF9jb25mKGNvbnN0IGNoYXIgKiwgY2hhciAqKToKKyAqIG9sZGVuZ2luZUlEX2NvbmYoY29uc3QgY2hhciAqLCBjaGFyICopOgogICogCiAgKiBSZWFkcyBhIG9jdGV0IHN0cmluZyBlbmNvZGVkIGVuZ2luZUlEIGludG8gdGhlIG9sZEVuZ2luZUlEIGFuZAogICogb2xkRW5naW5lSURMZW4gcG9pbnRlcnMuCkBAIC0xMjEwLDYgKzEyMDcsMjggQEAKIH0KIAogLyoKKyAqIGV4YWN0RW5naW5lSURfY29uZihjb25zdCBjaGFyICosIGNoYXIgKik6CisgKiAKKyAqIFJlYWRzIGEgb2N0ZXQgc3RyaW5nIGVuY29kZWQgZW5naW5lSUQgaW50byB0aGUgZW5naW5lSUQgYW5kCisgKiBlbmdpbmVJRExlbiBwb2ludGVycy4KKyAqLwordm9pZAorZXhhY3RFbmdpbmVJRF9jb25mKGNvbnN0IGNoYXIgKndvcmQsIGNoYXIgKmNwdHIpCit7CisgICAgcmVhZF9jb25maWdfcmVhZF9vY3RldF9zdHJpbmcoY3B0ciwgJmVuZ2luZUlELCAmZW5naW5lSURMZW5ndGgpOworICAgIGlmIChlbmdpbmVJRExlbmd0aCA+IE1BWF9FTkdJTkVJRF9MRU5HVEgpIHsKKwluZXRzbm1wX2NvbmZpZ19lcnJvcigKKwkgICAgImV4YWN0RW5naW5lSUQgJyVzJyB0b28gbG9uZzsgdHJ1bmNhdGluZyB0byAlZCBieXRlcyIsCisJICAgIGNwdHIsIE1BWF9FTkdJTkVJRF9MRU5HVEgpOworICAgICAgICBlbmdpbmVJRFtNQVhfRU5HSU5FSURfTEVOR1RIIC0gMV0gPSAnXDAnOworICAgICAgICBlbmdpbmVJRExlbmd0aCA9IE1BWF9FTkdJTkVJRF9MRU5HVEg7CisgICAgfQorICAgIGVuZ2luZUlESXNTZXQgPSAxOworICAgIGVuZ2luZUlEVHlwZSA9IEVOR0lORUlEX1RZUEVfRVhBQ1Q7Cit9CisKKworLyoKICAqIG1lcmVseSBjYWxsIAogICovCiB2b2lkCkBAIC0xMjkzLDYgKzEzMTIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyIpOwogICAgIHJlZ2lzdGVyX3ByZW5ldHNubXBfbWliX2hhbmRsZXIodHlwZSwgIm9sZEVuZ2luZUlEIiwgb2xkZW5naW5lSURfY29uZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgIHJlZ2lzdGVyX3ByZW5ldHNubXBfbWliX2hhbmRsZXIodHlwZSwgImV4YWN0RW5naW5lSUQiLCBleGFjdEVuZ2luZUlEX2NvbmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKICAgICByZWdpc3Rlcl9wcmVuZXRzbm1wX21pYl9oYW5kbGVyKHR5cGUsICJlbmdpbmVJRFR5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lSURUeXBlX2NvbmYsIE5VTEwsICJudW0iKTsKICAgICByZWdpc3Rlcl9wcmVuZXRzbm1wX21pYl9oYW5kbGVyKHR5cGUsICJlbmdpbmVJRE5pYyIsIGVuZ2luZUlETmljX2NvbmYsCmRpZmYgLS1naXQgYS9zbm1wbGliL3NucHJpbnRmLmMgYi9zbm1wbGliL3NucHJpbnRmLmMKaW5kZXggYWFhZjdkMS4uZTIzNWUxOSAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbnByaW50Zi5jCisrKyBiL3NubXBsaWIvc25wcmludGYuYwpAQCAtNjMsMjUgKzYzLDExIEBACiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIAotI2lmIEhBVkVfU1REQVJHX0gKICMgaW5jbHVkZSA8c3RkYXJnLmg+Ci0jIGRlZmluZSBIQVZFX1NUREFSR1MgICAgICAgICAgIC8qIGxldCdzIGhvcGUgdGhhdCB3b3JrcyBldmVyeXdoZXJlIChtaikgKi8KICMgZGVmaW5lIFZBX0xPQ0FMX0RFQ0wgICB2YV9saXN0IGFwCiAjIGRlZmluZSBWQV9TVEFSVChmKSAgICAgdmFfc3RhcnQoYXAsIGYpCiAjIGRlZmluZSBWQV9TSElGVCh2LHQpICA7ICAgICAgIC8qIG5vLW9wIGZvciBBTlNJICovCiAjIGRlZmluZSBWQV9FTkQgICAgICAgICAgdmFfZW5kKGFwKQotI2VsaWYgSEFWRV9WQVJBUkdTX0gKLSMgIGluY2x1ZGUgPHZhcmFyZ3MuaD4KLSMgIHVuZGVmIEhBVkVfU1REQVJHUwotIyAgZGVmaW5lIFZBX0xPQ0FMX0RFQ0wgICB2YV9saXN0IGFwCi0jICBkZWZpbmUgVkFfU1RBUlQoZikgICAgIHZhX3N0YXJ0KGFwKSAgLyogZiBpcyBpZ25vcmVkISAqLwotIyAgZGVmaW5lIFZBX1NISUZUKHYsdCkgdiA9IHZhX2FyZyhhcCx0KQotIyAgZGVmaW5lIFZBX0VORCAgICAgICAgdmFfZW5kKGFwKQotI2Vsc2UKLS8qCi0gKiBYWCAqKiBOTyBWQVJBUkdTICoqIFhYCi0gKi8KLSNlbmRpZgogCiAjaWZkZWYgSEFWRV9MT05HX0RPVUJMRQogI2RlZmluZSBMRE9VQkxFIGxvbmcgZG91YmxlCkBAIC03MjUsMjAgKzcxMSw5IEBACiAvKgogICogVkFSQVJHUzMgCiAgKi8KLSNpZmRlZiBIQVZFX1NUREFSR1MKIGludAogc25wcmludGYoY2hhciAqc3RyLCBzaXplX3QgY291bnQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotI2Vsc2UKLWludAotc25wcmludGYodmFfYWxpc3QpCi0gICAgIHZhX2RjbAotI2VuZGlmCiB7Ci0jaWZuZGVmIEhBVkVfU1REQVJHUwotICAgIGNoYXIgICAgICAgICAgICpzdHI7Ci0gICAgc2l6ZV90ICAgICAgICAgIGNvdW50OwotICAgIGNoYXIgICAgICAgICAgICpmbXQ7Ci0jZW5kaWYKICAgICBWQV9MT0NBTF9ERUNMOwogCiAgICAgVkFfU1RBUlQoZm10KTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvc3RydG91bGwuYyBiL3NubXBsaWIvc3RydG91bGwuYwppbmRleCBiZTk0ZjI5Li5lYTUzOGJhIDEwMDY0NAotLS0gYS9zbm1wbGliL3N0cnRvdWxsLmMKKysrIGIvc25tcGxpYi9zdHJ0b3VsbC5jCkBAIC0yMCw2ICsyMCw4IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2lmICFIQVZFX1NUUlRPVUxMIHx8IGRlZmluZWQoU1RSVE9VTExfVU5JVF9URVNUKQorCiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgpAQCAtMjcsOSArMjksNiBAQAogI2luY2x1ZGUgPGludHR5cGVzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaD4KLQogLyoKICAqIFVJTlQ2NF9DOiBDOTkgbWFjcm8gZm9yIHRoZSBzdWZmaXggZm9yIHVpbnQ2NF90IGNvbnN0YW50cy4gCiAgKi8KQEAgLTI3NCw2ICsyNzMsOCBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChTVFJUT1VMTF9VTklUX1RFU1QpICovCiAKKyNlbmRpZiAvKiAhSEFWRV9TVFJUT1VMTCB8fCBkZWZpbmVkKFNUUlRPVUxMX1VOSVRfVEVTVCkgKi8KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIGMtYmFzaWMtb2Zmc2V0OiA0CmRpZmYgLS1naXQgYS9zbm1wbGliL3N5c3RlbS5jIGIvc25tcGxpYi9zeXN0ZW0uYwppbmRleCAzOGVjZmViLi5iYjQ3YjdjIDEwMDY0NAotLS0gYS9zbm1wbGliL3N5c3RlbS5jCisrKyBiL3NubXBsaWIvc3lzdGVtLmMKQEAgLTMzLDYgKzMzLDEyIEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworLyoKICAqIFN5c3RlbSBkZXBlbmRlbnQgcm91dGluZXMgZ28gaGVyZQogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CkBAIC04Myw2ICs4OSwxMCBAQAogI2lmIEhBVkVfTkVUX0lGX0gKICNpbmNsdWRlIDxuZXQvaWYuaD4KICNlbmRpZgorI2lmIEhBVkVfTkVUREJfSAorI2luY2x1ZGUgPG5ldGRiLmg+CisjZW5kaWYKKwogCiAjaWYgSEFWRV9TWVNfU09DS0lPX0gKICNpbmNsdWRlIDxzeXMvc29ja2lvLmg+CkBAIC0xNDQsNiArMTU0LDE3IEBACiAjaW5jbHVkZSA8c3lzL3N5c3RlbWluZm8uaD4KICNlbmRpZgogCisjaWYgZGVmaW5lZChkYXJ3aW45KQorI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+ICAgICAgICAvKiBmb3IgX05TR2V0QXJndigpICovCisjZW5kaWYKKworI2lmIEhBVkVfUFdEX0gKKyNpbmNsdWRlIDxwd2QuaD4KKyNlbmRpZgorI2lmIEhBVkVfR1JQX0gKKyNpbmNsdWRlIDxncnAuaD4KKyNlbmRpZgorCiAjaWYgSEFWRV9MSU1JVFNfSAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2VuZGlmCkBAIC0xNjYsNiArMTg3LDMzIEBACiAjIGRlZmluZSBMT09QQkFDSyAgICAweDdmMDAwMDAxCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoSEFWRV9GT1JLKQorc3RhdGljIHZvaWQKK19kYWVtb25fcHJlcChpbnQgc3RkZXJyX2xvZykKK3sKKyAgICAvKiBBdm9pZCBrZWVwaW5nIGFueSBkaXJlY3RvcnkgaW4gdXNlLiAqLworICAgIGNoZGlyKCIvIik7CisKKyAgICBpZiAoc3RkZXJyX2xvZykKKyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBDbG9zZSBpbmhlcml0ZWQgZmlsZSBkZXNjcmlwdG9ycyB0byBhdm9pZAorICAgICAqIGtlZXBpbmcgdW5uZWNlc3NhcnkgcmVmZXJlbmNlcy4KKyAgICAgKi8KKyAgICBjbG9zZSgwKTsKKyAgICBjbG9zZSgxKTsKKyAgICBjbG9zZSgyKTsKKworICAgIC8qCisgICAgICogUmVkaXJlY3Qgc3Rke2luLG91dCxlcnJ9IHRvIC9kZXYvbnVsbCwganVzdCBpbiBjYXNlLgorICAgICAqLworICAgIG9wZW4oIi9kZXYvbnVsbCIsIE9fUkRXUik7CisgICAgZHVwKDApOworICAgIGR1cCgwKTsKK30KKyNlbmRpZgorCiAvKioKICAqIGZvcmsgY3VycmVudCBwcm9jZXNzIGludG8gdGhlIGJhY2tncm91bmQuCiAgKgpAQCAtMTk0LDYgKzI0MiwyMiBAQAogICAgIGludCBpID0gMDsKICAgICBERUJVR01TR1QoKCJkYWVtb25pemUiLCJkZWFtb25pemluZy4uLlxuIikpOwogI2lmIEhBVkVfRk9SSworI2lmIGRlZmluZWQoZGFyd2luOSkKKyAgICAgY2hhciAgICAgICAgICAgIHBhdGggW1BBVEhfTUFYXSA9ICIiOworICAgICB1aW50MzJfdCAgICAgICAgc2l6ZSA9IHNpemVvZiAocGF0aCk7CisKKyAgICAgLyoKKyAgICAgICogaWYgd2UgYXJlIGFscmVhZHkgbGF1bmNoZWQgaW4gYSAiZGFlbW9uaXplZCBzdGF0ZSIsIGp1c3QKKyAgICAgICogY2xvc2UgJiByZWRpcmVjdCB0aGUgZmlsZSBkZXNjcmlwdG9ycworICAgICAgKi8KKyAgICAgaWYoZ2V0cHBpZCgpIDw9IDIpIHsKKyAgICAgICAgIF9kYWVtb25fcHJlcChzdGRlcnJfbG9nKTsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CisKKyAgICAgaWYgKF9OU0dldEV4ZWN1dGFibGVQYXRoIChwYXRoLCAmc2l6ZSkpCisgICAgICAgICByZXR1cm4gLTE7CisjZW5kaWYKICAgICAvKgogICAgICAqIEZvcmsgdG8gcmV0dXJuIGNvbnRyb2wgdG8gdGhlIGludm9raW5nIHByb2Nlc3MgYW5kIHRvCiAgICAgICogZ3VhcmFudGVlIHRoYXQgd2UgYXJlbid0IGEgcHJvY2VzcyBncm91cCBsZWFkZXIuCkBAIC0yMzUsMjYgKzI5OSwyMiBAQAogICAgICAgICAgICAgCiAgICAgICAgICAgICBERUJVR01TR1QoKCJkYWVtb25pemUiLCJjaGlsZCBjb250aW51aW5nXG4iKSk7CiAKLSAgICAgICAgICAgIC8qIEF2b2lkIGtlZXBpbmcgYW55IGRpcmVjdG9yeSBpbiB1c2UuICovCi0gICAgICAgICAgICBjaGRpcigiLyIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIXN0ZGVycl9sb2cpIHsKLSAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAqIENsb3NlIGluaGVyaXRlZCBmaWxlIGRlc2NyaXB0b3JzIHRvIGF2b2lkCi0gICAgICAgICAgICAgICAgICoga2VlcGluZyB1bm5lY2Vzc2FyeSByZWZlcmVuY2VzLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGNsb3NlKDApOwotICAgICAgICAgICAgICAgIGNsb3NlKDEpOwotICAgICAgICAgICAgICAgIGNsb3NlKDIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICogUmVkaXJlY3Qgc3Rke2luLG91dCxlcnJ9IHRvIC9kZXYvbnVsbCwganVzdCBpbgotICAgICAgICAgICAgICAgICAqIGNhc2UuCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgb3BlbigiL2Rldi9udWxsIiwgT19SRFdSKTsKLSAgICAgICAgICAgICAgICBkdXAoMCk7Ci0gICAgICAgICAgICAgICAgZHVwKDApOwotICAgICAgICAgICAgfQorI2lmICEgZGVmaW5lZChkYXJ3aW45KQorICAgICAgICAgICAgX2RhZW1vbl9wcmVwKHN0ZGVycl9sb2cpOworI2Vsc2UKKyAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAqIFNvbWUgZGFyd2luIGNhbGxzICh1c2luZyBtYWNoIHBvcnRzKSBkb24ndCB3b3JrIGFmdGVyCisgICAgICAgICAgICAgICogYSBmb3JrLiBTbywgbm93IHRoYXQgd2UndmUgZm9ya2VkLCB3ZSByZS1leGVjIG91cnNlbGYKKyAgICAgICAgICAgICAgKiB0byBlbnN1cmUgdGhhdCB0aGUgY2hpbGQncyBtYWNoIHBvcnRzIGFyZSBhbGwgc2V0IHVwIGNvcnJlY3RseSwKKyAgICAgICAgICAgICAgKiB0aGUgZ2V0cHBpZCBjYWxsIGFib3ZlIHdpbGwgcHJldmVudCB0aGUgZXhlYyBjaGlsZCBmcm9tCisgICAgICAgICAgICAgICogZm9ya2luZy4uLgorICAgICAgICAgICAgICAqLworICAgICAgICAgICAgIGNoYXIgKiBjb25zdCAqYXJndiA9ICpfTlNHZXRBcmd2ICgpOworICAgICAgICAgICAgIERFQlVHTVNHVCgoImRhZW1vbml6ZSIsInJlLWV4ZWNpbmcgZm9ya2VkIGNoaWxkXG4iKSk7CisgICAgICAgICAgICAgZXhlY3YgKHBhdGgsIGFyZ3YpOworICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIkZvcmtlZCBjaGlsZCB1bmFibGUgdG8gcmUtZXhlYyAtICVzLlxuIiwgc3RyZXJyb3IgKGVycm5vKSk7CisgICAgICAgICAgICAgZXhpdCAoMCk7CisjZW5kaWYKICAgICAgICAgfQogI2VuZGlmIC8qICFXSU4zMiAqLwogICAgIH0KQEAgLTY0Niw3ICs3MDYsNyBAQAogCiAgICAgZm9yIChpZnJwID0gaWZjLmlmY19yZXE7CiAgICAgICAgIChjaGFyICopaWZycCA8IChjaGFyICopaWZjLmlmY19yZXEgKyBpZmMuaWZjX2xlbjsKLSNpZmRlZiBTVFJVQ1RfU09DS0FERFJfSEFTX1NBX0xFTgorI2lmZGVmIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NBX0xFTgogICAgICAgICBpZnJwID0gKHN0cnVjdCBpZnJlcSAqKSgoKGNoYXIgKikgaWZycCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoaWZycC0+aWZyX25hbWUpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZycC0+aWZyX2FkZHIuc2FfbGVuKQpAQCAtODM1LDYgKzg5NSw4NCBAQAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAhIFdJTjMyICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAoraW50CituZXRzbm1wX2dldGhvc3RieW5hbWVfdjQoY29uc3QgY2hhciogbmFtZSwgaW5fYWRkcl90ICphZGRyX291dCkKK3sKKworI2lmIEhBVkVfR0VUQUREUklORk8KKyAgICBzdHJ1Y3QgYWRkcmluZm8gKmFkZHJzID0gTlVMTDsKKyAgICBzdHJ1Y3QgYWRkcmluZm8gaGludDsKKyAgICBpbnQgICAgICAgICAgICAgZXJyOworCisgICAgbWVtc2V0KCZoaW50LCAwLCBzaXplb2YgaGludCk7CisgICAgaGludC5haV9mbGFncyA9IDA7CisgICAgaGludC5haV9mYW1pbHkgPSBQRl9JTkVUOworICAgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOworICAgIGhpbnQuYWlfcHJvdG9jb2wgPSAwOworCisgICAgZXJyID0gZ2V0YWRkcmluZm8obmFtZSwgTlVMTCwgJmhpbnQsICZhZGRycyk7CisgICAgaWYgKGVyciAhPSAwKSB7CisjaWYgSEFWRV9HQUlfU1RSRVJST1IKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImdldGFkZHJpbmZvOiAlcyAlc1xuIiwgbmFtZSwKKyAgICAgICAgICAgICAgICAgZ2FpX3N0cmVycm9yKGVycikpOworI2Vsc2UKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImdldGFkZHJpbmZvOiAlcyAoZXJyb3IgJWQpXG4iLCBuYW1lLAorICAgICAgICAgICAgICAgICBlcnIpOworI2VuZGlmCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGFkZHJzICE9IE5VTEwpIHsKKyAgICAgICAgbWVtY3B5KGFkZHJfb3V0LAorICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luICopIGFkZHJzLT5haV9hZGRyKS0+c2luX2FkZHIsCisgICAgICAgICAgICAgICBzaXplb2YoaW5fYWRkcl90KSk7CisgICAgICAgIGZyZWVhZGRyaW5mbyhhZGRycyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImdldF90aGlzYWRkciIsCisgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVzb2x2ZSBJUHY0IGhvc3RuYW1lXG4iKSk7CisgICAgfQorICAgIHJldHVybiAwOworCisjZWxpZiBIQVZFX0dFVEhPU1RCWU5BTUUKKyAgICBzdHJ1Y3QgaG9zdGVudCAqaHAgPSBOVUxMOworCisgICAgaHAgPSBnZXRob3N0YnluYW1lKG5hbWUpOworICAgIGlmIChocCA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJnZXRfdGhpc2FkZHIiLAorICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUgKGNvdWxkbid0IHJlc29sdmUpXG4iKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgaWYgKGhwLT5oX2FkZHJ0eXBlICE9IEFGX0lORVQpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImdldF90aGlzYWRkciIsCisgICAgICAgICAgICAgICAgICAgICJob3N0bmFtZSAobm90IEFGX0lORVQhKVxuIikpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImdldF90aGlzYWRkciIsCisgICAgICAgICAgICAgICAgICAgICJob3N0bmFtZSAocmVzb2x2ZWQgb2theSlcbiIpKTsKKyAgICAgICAgbWVtY3B5KGFkZHJfb3V0LCBocC0+aF9hZGRyLCBzaXplb2YoaW5fYWRkcl90KSk7CisgICAgfQorICAgIHJldHVybiAwOworCisjZWxpZiBIQVZFX0dFVElQTk9ERUJZTkFNRQorICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IE5VTEw7CisgICAgaW50ICAgICAgICAgICAgIGVycjsKKworICAgIGhwID0gZ2V0aXBub2RlYnluYW1lKHBlZXJuYW1lLCBBRl9JTkVULCAwLCAmZXJyKTsKKyAgICBpZiAoaHAgPT0gTlVMTCkgeworICAgICAgICBERUJVR01TR1RMKCgiZ2V0X3RoaXNhZGRyIiwKKyAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIChjb3VsZG4ndCByZXNvbHZlID0gJWQpXG4iLCBlcnIpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBERUJVR01TR1RMKCgiZ2V0X3RoaXNhZGRyIiwKKyAgICAgICAgICAgICAgICAiaG9zdG5hbWUgKHJlc29sdmVkIG9rYXkpXG4iKSk7CisgICAgbWVtY3B5KGFkZHJfb3V0LCBocC0+aF9hZGRyLCBzaXplb2YoaW5fYWRkcl90KSk7CisgICAgcmV0dXJuIDA7CisKKyNlbHNlIC8qIEhBVkVfR0VUSVBOT0RFQllOQU1FICovCisgICAgcmV0dXJuIC0xOworI2VuZGlmCit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCiAjaWZuZGVmIEhBVkVfU1RSTkNBU0VDTVAKIAogLyoKQEAgLTEwNzAsMTMgKzEyMDgsMTQgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBETkUsIG1ha2UgaXQgCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHNubXBfbG9nKExPR19JTkZPLCAiQ3JlYXRpbmcgZGlyZWN0b3J5OiAlc1xuIiwgYnVmKTsKICNpZmRlZiBXSU4zMgogICAgICAgICAgICAgaWYgKENyZWF0ZURpcmVjdG9yeShidWYsIE5VTEwpID09IDApCiAjZWxzZQogICAgICAgICAgICAgaWYgKG1rZGlyKGJ1ZiwgbW9kZSkgPT0gLTEpCiAjZW5kaWYKICAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfSU5GTywgIkNyZWF0ZWQgZGlyZWN0b3J5OiAlc1xuIiwgYnVmKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBleGlzdHMsIGlzIGl0IGEgZmlsZT8gCkBAIC0xMjE0LDMgKzEzNTMsNDUgQEAKICNlbmRpZgogfQogCitpbnQgbmV0c25tcF9zdHJfdG9fdWlkKGNvbnN0IGNoYXIgKnVzZXJvcnVpZCkgeworICAgIGludCB1aWQ7CisjaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICisgICAgc3RydWN0IHBhc3N3ZCAqcHdkOworI2VuZGlmCisKKyAgICB1aWQgPSBhdG9pKHVzZXJvcnVpZCk7CisKKyAgICBpZiAoIHVpZCA9PSAwICkgeworI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAorICAgICAgICBwd2QgPSBnZXRwd25hbSggdXNlcm9ydWlkICk7CisgICAgICAgIGlmIChwd2QpCisgICAgICAgICAgICB1aWQgPSBwd2QtPnB3X3VpZDsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIkNhbid0IGlkZW50aWZ5IHVzZXIgKCVzKS5cbiIsIHVzZXJvcnVpZCk7CisgICAgfQorICAgIHJldHVybiB1aWQ7CisgICAgCit9CisKK2ludCBuZXRzbm1wX3N0cl90b19naWQoY29uc3QgY2hhciAqZ3JvdXBvcmdpZCkgeworICAgIGludCBnaWQ7CisjaWYgSEFWRV9HRVRHUk5BTSAmJiBIQVZFX0dSUF9ICisgICAgc3RydWN0IGdyb3VwICAqZ3JwOworI2VuZGlmCisKKyAgICBnaWQgPSBhdG9pKGdyb3Vwb3JnaWQpOworCisgICAgaWYgKCBnaWQgPT0gMCApIHsKKyNpZiBIQVZFX0dFVEdSTkFNICYmIEhBVkVfR1JQX0gKKyAgICAgICAgZ3JwID0gZ2V0Z3JuYW0oIGdyb3Vwb3JnaWQgKTsKKyAgICAgICAgaWYgKGdycCkKKyAgICAgICAgICAgIGdpZCA9IGdycC0+Z3JfZ2lkOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiQ2FuJ3QgaWRlbnRpZnkgZ3JvdXAgKCVzKS5cbiIsCisgICAgICAgICAgICAgICAgICAgICBncm91cG9yZ2lkKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2lkOworfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi90b29scy5jIGIvc25tcGxpYi90b29scy5jCmluZGV4IDIyMDZmZjMuLjYxYTM2NDQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdG9vbHMuYworKysgYi9zbm1wbGliL3Rvb2xzLmMKQEAgLTQzLDYgKzQzLDE0IEBACiAjaWZkZWYgSEFWRV9BUlBBX0lORVRfSAogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogI2VuZGlmCisjaWZkZWYgSEFWRV9DUlREQkdfSAorLyoKKyAqIERlZmluZSBfQ1JUREJHX01BUF9BTExPQyBzdWNoIHRoYXQgaW4gZGVidWcgYnVpbGRzICh3aGVuIF9ERUJVRyBoYXMgYmVlbgorICogZGVmaW5lZCkgZS5nLiBtYWxsb2MoKSBpcyByZXJvdXRlZCB0byBfbWFsbG9jX2RiZygpLgorICovCisjZGVmaW5lIF9DUlREQkdfTUFQX0FMTE9DIDEKKyNpbmNsdWRlIDxjcnRkYmcuaD4KKyNlbmRpZgogI2lmZGVmIGN5Z3dpbgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgpAQCAtNjMsOSArNzEsMTEgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L21pYi5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaD4KIAotI2lmZGVmIFdJTjMyCiAvKioKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGZvciB0aGUgc3RyZHVwIGZ1bmN0aW9uLgorICoKKyAqIEBub3RlIFRoZSBzdHJkdXAoKSBpbXBsZW1lbnRhdGlvbiBjYWxscyBfbWFsbG9jX2RiZygpIHdoZW4gbGlua2luZyB3aXRoCisgKiBNU1ZDUlQ/P0QuZGxsIGFuZCBtYWxsb2MoKSB3aGVuIGxpbmtpbmcgd2l0aCBNU1ZDUlQ/Py5kbGwKICAqLwogY2hhciAqIG5ldHNubXBfc3RyZHVwKCBjb25zdCBjaGFyICogcHRyKQogewpAQCAtMTA0LDcgKzExNCw2IEBACiAgICAgaWYgKHB0cikKICAgICAgICAgZnJlZShwdHIpOwogfQotI2VuZGlmIC8qIFdJTjMyICovCiAKIC8qKgogICogVGhpcyBmdW5jdGlvbiBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgYXQgYnkgKmJ1Ziwgd2hpY2ggaXMKQEAgLTc2NSw3ICs3NzQsNyBAQAogYXRpbWVfbmV3TWFya2VyKHZvaWQpCiB7CiAgICAgbWFya2VyX3QgICAgICAgIHBtID0gKG1hcmtlcl90KSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCB0aW1ldmFsKSk7Ci0gICAgZ2V0dGltZW9mZGF5KChzdHJ1Y3QgdGltZXZhbCAqKSBwbSwgMCk7CisgICAgZ2V0dGltZW9mZGF5KChzdHJ1Y3QgdGltZXZhbCAqKSBwbSwgTlVMTCk7CiAgICAgcmV0dXJuIHBtOwogfQogCkBAIC03NzgsNyArNzg3LDcgQEAKICAgICBpZiAoIXBtKQogICAgICAgICByZXR1cm47CiAKLSAgICBnZXR0aW1lb2ZkYXkoKHN0cnVjdCB0aW1ldmFsICopIHBtLCAwKTsKKyAgICBnZXR0aW1lb2ZkYXkoKHN0cnVjdCB0aW1ldmFsICopIHBtLCBOVUxMKTsKIH0KIAogCmRpZmYgLS1naXQgYS9zbm1wbGliL3dpbnNlcnZpY2UuYyBiL3NubXBsaWIvd2luc2VydmljZS5jCmluZGV4IGMzMjNjZjAuLjA1MGY0ZTUgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvd2luc2VydmljZS5jCisrKyBiL3NubXBsaWIvd2luc2VydmljZS5jCkBAIC02LDYgKzYsOCBAQAogCiAjaWZkZWYgV0lOMzIKIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHRjaGFyLmg+CiAKQEAgLTM1LDYgKzM3LDE1IEBACiAjZGVmaW5lIENvdW50T2YoYXJyKSAoIHNpemVvZihhcnIpIC8gc2l6ZW9mKGFyclswXSkgKQogCiAKKyNpZiBkZWZpbmVkKFdJTjMyKSAmJiBkZWZpbmVkKEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLKSAmJiAhZGVmaW5lZChtaW5ndzMyKQorI3ByYWdtYSBjb21tZW50KGxpYiwgImlwaGxwYXBpLmxpYiIpCisjaWZkZWYgVVNJTkdfV0lORVhURExMX01PRFVMRQorI3ByYWdtYSBjb21tZW50KGxpYiwgInNubXBhcGkubGliIikKKyNwcmFnbWEgY29tbWVudChsaWIsICJtZ210YXBpLmxpYiIpCisjZW5kaWYKKyNlbmRpZgorCisgCiAgICAgLyoKICAgICAgKiBFeHRlcm5hbCBnbG9iYWwgdmFyaWFibGVzIHVzZWQgaGVyZQogICAgICAqLwpkaWZmIC0tZ2l0IGEvdGVzdGluZy9URVNUQ09ORi5zaCBiL3Rlc3RpbmcvVEVTVENPTkYuc2gKaW5kZXggZDU4ZWZmZC4uYzhlOGM5OSAxMDA2NDQKLS0tIGEvdGVzdGluZy9URVNUQ09ORi5zaAorKysgYi90ZXN0aW5nL1RFU1RDT05GLnNoCkBAIC05NCw2ICs5NCw3IEBACiBTTk1QX1RFU1RESVI9IiRTTk1QX0JBU0VESVIvdGVzdHMiCiBTTk1QX0NPTkZJR19GSUxFPSIkU05NUF9UTVBESVIvc25tcGQuY29uZiIKIFNOTVBUUkFQRF9DT05GSUdfRklMRT0iJFNOTVBfVE1QRElSL3NubXB0cmFwZC5jb25mIgorU05NUEFQUF9DT05GSUdfRklMRT0iJFNOTVBfVE1QRElSL3NubXAuY29uZiIKIEFHRU5UWF9DT05GSUdfRklMRT0iJFNOTVBfVE1QRElSL2FnZW50eC5jb25mIgogU05NUF9TTk1QVFJBUERfTE9HX0ZJTEU9IiRTTk1QX1RNUERJUi9zbm1wdHJhcGQubG9nIgogU05NUF9TTk1QVFJBUERfUElEX0ZJTEU9IiRTTk1QX1RNUERJUi9zbm1wdHJhcGQucGlkIgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9ldmFsX3Rvb2xzLnNoIGIvdGVzdGluZy9ldmFsX3Rvb2xzLnNoCmluZGV4IGE5ZDNhZDEuLjljMDljYzcgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZXZhbF90b29scy5zaAorKysgYi90ZXN0aW5nL2V2YWxfdG9vbHMuc2gKQEAgLTM3Miw2ICszNzIsMTQgQEAKICAgICBlY2hvICQqID4+ICRTTk1QVFJBUERfQ09ORklHX0ZJTEUKIH0KIAorQ09ORklHQVBQKCkgeworICAgIGlmIFsgIngkU05NUEFQUF9DT05GSUdfRklMRSIgPSAieCIgXTsgdGhlbgorCWVjaG8gIiQwOiBmYWlsZWQgYmVjYXVzZSB2YXI6IFNOTVBBUFBfQ09ORklHX0ZJTEUgd2Fzbid0IHNldCIKKwlleGl0IDE7CisgICAgZmkKKyAgICBlY2hvICQqID4+ICRTTk1QQVBQX0NPTkZJR19GSUxFCit9CisKICMKICMgY29tbW9uIHRvIFNUQVJUQUdFTlQgYW5kIFNUQVJUVFJBUEQKICMgbG9nIGNvbW1hbmQgdG8gImludm9rZWQiIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvdGVzdHMvU3RyYW5zcG9ydCBiL3Rlc3RpbmcvdGVzdHMvU3RyYW5zcG9ydApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZmRiMTMxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy90ZXN0cy9TdHJhbnNwb3J0CkBAIC0wLDAgKzEsMTYgQEAKK2V4cG9ydCBTTk1QX1RSQU5TUE9SVF9TUEVDCitleHBvcnQgU05NUF9TTk1QRF9QT1JUCitleHBvcnQgU05NUF9URVNUX0RFU1QKKworIyBjb25maWd1cmUgdGhlIGFnZW50IHRvIGFjY2VwdCB1c2VyIGluaXRpYWwgd2l0aCBub0F1dGhOb1ByaXYKKy4gLi9TdjNjb25maWcKKworU1RBUlRBR0VOVAorCitDQVBUVVJFICJzbm1wZ2V0IC1PbiAkU05NUF9GTEFHUyAkTk9BVVRIVEVTVEFSR1MgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS4zLjAiCisKK1NUT1BBR0VOVAorCitDSEVDSyAiLjEuMy42LjEuMi4xLjEuMy4wID0gVGltZXRpY2tzOiIKKworRklOSVNIRUQKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvdGVzdHMvU3ZhY21jb25maWcgYi90ZXN0aW5nL3Rlc3RzL1N2YWNtY29uZmlnCmluZGV4IGNkY2MzNWIuLmQ5ZDg2MmQgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvdGVzdHMvU3ZhY21jb25maWcKKysrIGIvdGVzdGluZy90ZXN0cy9TdmFjbWNvbmZpZwpAQCAtMTgsNiArMTgsOCBAQAogQ09ORklHQUdFTlQgY29tMnNlYyB0ZXN0Y29tbXVuaXR5c2VjMiAgZGVmYXVsdCB0ZXN0Y29tbXVuaXR5MgogCiBpZiBbICIkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAidWRwNiIgLW8gIiRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ0Y3A2IiBdO3RoZW4gCitDT05GSUdBR0VOVCByb2NvbW11bml0eTYgdGVzdHJvY29tbXVuaXR5IDo6MSAuMS4zLjYuMS4yLjEuMS41LjAKK0NPTkZJR0FHRU5UIHJ3Y29tbXVuaXR5NiB0ZXN0cndjb21tdW5pdHkgOjoxIC4xLjMuNi4xLjIuMS4xLjUuMAogQ09ORklHQUdFTlQgY29tMnNlYzYgdGVzdGNvbW11bml0eXNlYzEgIGRlZmF1bHQgdGVzdGNvbW11bml0eTEKIENPTkZJR0FHRU5UIGNvbTJzZWM2IHRlc3Rjb21tdW5pdHlzZWMyICBkZWZhdWx0IHRlc3Rjb21tdW5pdHkyCiBmaQpkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy9UMTIwcHJveHlnZXQgYi90ZXN0aW5nL3Rlc3RzL1QxMjBwcm94eWdldAppbmRleCBkMTAxNzdiLi4zYzg2ZTE3IDEwMDY0NAotLS0gYS90ZXN0aW5nL3Rlc3RzL1QxMjBwcm94eWdldAorKysgYi90ZXN0aW5nL3Rlc3RzL1QxMjBwcm94eWdldApAQCAtOSw3ICs5LDcgQEAKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU05NUFYyQwogCiAjIFhYWDogdWNkLXNubXAvcHJveHkgZG9lc24ndCBwcm9wZXJseSBzdXBwb3J0IFRDUCAtLSByZW1vdmUgdGhpcyBvbmNlIGl0IGRvZXMKLVsgIngkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAieHRjcCIgXSAmJiBTS0lQCitbICJ4JFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInh0Y3AiIC1vICJ4JFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInh0Y3A2IiBdICYmIFNLSVAKIAogIwogIyBCZWdpbiB0ZXN0CkBAIC0zOSw2ICszOSw5IEBACiAgIFNOTVBfU05NUERfTE9HX0ZJTEU9JFNOTVBfU05NUERfTE9HX0ZJTEUubnVtMgogICBTTk1QX0NPTkZJR19GSUxFPSIkU05NUF9UTVBESVIvcHJveHkuY29uZiIKICAgZWNobyAicndjb21tdW5pdHkgdGVzdGNvbW11bml0eSIgPj4gJFNOTVBfQ09ORklHX0ZJTEUKKyAgaWYgWyAiJFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInVkcDYiIC1vICIkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAidGNwNiIgXTt0aGVuCisgICAgZWNobyAicndjb21tdW5pdHk2IHRlc3Rjb21tdW5pdHkiID4+ICRTTk1QX0NPTkZJR19GSUxFCisgIGZpCiAgIEFHRU5UX0ZMQUdTPSRPUklHX0FHRU5UX0ZMQUdTCiAgIE9SSUdfU05NUF9TTk1QRF9QT1JUPSRTTk1QX1NOTVBEX1BPUlQKICAgU05NUF9TTk1QRF9QT1JUPSIke1NOTVBfQUdFTlRYX1BPUlR9IgpkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy9UMTIxcHJveHlzZXQgYi90ZXN0aW5nL3Rlc3RzL1QxMjFwcm94eXNldAppbmRleCA4YzFjN2E2Li4zYWYwYjRlIDEwMDY0NAotLS0gYS90ZXN0aW5nL3Rlc3RzL1QxMjFwcm94eXNldAorKysgYi90ZXN0aW5nL3Rlc3RzL1QxMjFwcm94eXNldApAQCAtMTAsNyArMTAsNyBAQAogU0tJUElGICAgIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAogCiAjIFhYWDogdWNkLXNubXAvcHJveHkgZG9lc24ndCBwcm9wZXJseSBzdXBwb3J0IFRDUCAtLSByZW1vdmUgdGhpcyBvbmNlIGl0IGRvZXMKLVsgIngkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAieHRjcCIgXSAmJiBTS0lQCitbICJ4JFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInh0Y3AiIC1vICJ4JFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInh0Y3A2IiBdICYmIFNLSVAKIAogIwogIyBCZWdpbiB0ZXN0CkBAIC00MCw2ICs0MCw5IEBACiAgIFNOTVBfU05NUERfTE9HX0ZJTEU9JFNOTVBfU05NUERfTE9HX0ZJTEUubnVtMgogICBTTk1QX0NPTkZJR19GSUxFPSIkU05NUF9UTVBESVIvcHJveHkuY29uZiIKICAgZWNobyAicndjb21tdW5pdHkgdGVzdGNvbW11bml0eSIgPj4gJFNOTVBfQ09ORklHX0ZJTEUKKyAgaWYgWyAiJFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInVkcDYiIC1vICIkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAidGNwNiIgXTt0aGVuCisgICAgZWNobyAicndjb21tdW5pdHk2IHRlc3Rjb21tdW5pdHkiID4+ICRTTk1QX0NPTkZJR19GSUxFCisgIGZpCiAgIGVjaG8gInBzeXNjb250YWN0IHRlc3Rjb250YWN0IiA+PiAkU05NUF9DT05GSUdfRklMRQogICBBR0VOVF9GTEFHUz0iJE9SSUdfQUdFTlRfRkxBR1MgLURtaWJfaW5pdCIKICAgT1JJR19TTk1QX1NOTVBEX1BPUlQ9JFNOTVBfU05NUERfUE9SVApkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy9UMTIycHJveHlzZXRmYWlsIGIvdGVzdGluZy90ZXN0cy9UMTIycHJveHlzZXRmYWlsCmluZGV4IDhlY2Y5YmYuLjE5ZTIwZTQgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvdGVzdHMvVDEyMnByb3h5c2V0ZmFpbAorKysgYi90ZXN0aW5nL3Rlc3RzL1QxMjJwcm94eXNldGZhaWwKQEAgLTQwLDYgKzQwLDkgQEAKICAgU05NUF9TTk1QRF9MT0dfRklMRT0kU05NUF9TTk1QRF9MT0dfRklMRS5udW0yCiAgIFNOTVBfQ09ORklHX0ZJTEU9IiRTTk1QX1RNUERJUi9wcm94eS5jb25mIgogICBlY2hvICJyd2NvbW11bml0eSB0ZXN0Y29tbXVuaXR5IiA+PiAkU05NUF9DT05GSUdfRklMRQorICBpZiBbICIkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAidWRwNiIgLW8gIiRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ0Y3A2IiBdO3RoZW4KKyAgICBlY2hvICJyd2NvbW11bml0eTYgdGVzdGNvbW11bml0eSIgPj4gJFNOTVBfQ09ORklHX0ZJTEUKKyAgZmkKICMgIGVjaG8gInN5c2NvbnRhY3QgdGVzdGNvbnRhY3QiID4+ICRTTk1QX0NPTkZJR19GSUxFCiAgIEFHRU5UX0ZMQUdTPSIkT1JJR19BR0VOVF9GTEFHUyAtRG1pYl9pbml0IgogICBPUklHX1NOTVBfU05NUERfUE9SVD0kU05NUF9TTk1QRF9QT1JUCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL1QxNjBzbm1wbmV0c3RhdCBiL3Rlc3RpbmcvdGVzdHMvVDE2MHNubXBuZXRzdGF0CmluZGV4IDE1ZGU1NGMuLjA0Yjc0NDMgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvdGVzdHMvVDE2MHNubXBuZXRzdGF0CisrKyBiL3Rlc3RpbmcvdGVzdHMvVDE2MHNubXBuZXRzdGF0CkBAIC01LDE3ICs1LDE3IEBACiAjIHNubXBuZXRzdGF0IHRlc3Qgb25seSB3b3JrcyB3aXRoIFVEUCBvciBUQ1AKIGlmIFsgIngkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAieCIgLW8gIngkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAieHVkcCIgXTsgdGhlbgogICBwcm90bz11ZHAKKyAgSEVBREVSICJpZiBzbm1wbmV0c3RhdCBmaW5kcyB0aGUgcnVubmluZyBhZ2VudCBpbiB1ZHBUYWJsZSIKICAgU0tJUElGTk9UIFVTSU5HX01JQklJX1VEUFRBQkxFX01PRFVMRQogZWxpZiBbICJ4JFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInh0Y3AiIF07IHRoZW4KICAgcHJvdG89dGNwCisgIEhFQURFUiAiaWYgc25tcG5ldHN0YXQgZmluZHMgdGhlIHJ1bm5pbmcgYWdlbnQgaW4gdGNwVGFibGUiCiAgIFNLSVBJRk5PVCBVU0lOR19NSUJJSV9UQ1BUQUJMRV9NT0RVTEUKIGVsc2UKICAgSEVBREVSICJpZiBzbm1wbmV0c3RhdCBmaW5kcyB0aGUgcnVubmluZyBhZ2VudCBpbiB1ZHBUYWJsZS90Y3BUYWJsZSIKICAgU0tJUAogZmkKIAotSEVBREVSICJpZiBzbm1wbmV0c3RhdCBmaW5kcyB0aGUgcnVubmluZyBhZ2VudCBpbiAke3Byb3RvfVRhYmxlIgotCiAjIG9uIHNvbWUgc3lzdGVtcyB0aGUgYWdlbnQgbmVlZHMgdG8gYmUgcnVuIGFzIHJvb3QgdG8gYWNjZXNzIHVkcFRhYmxlL3RjcFRhYmxlCiAjIC0gZWxzZSBmb3JjZSBza2lwCiBjYXNlICJ4YHVuYW1lIC1zYCIgaW4KZGlmZiAtLWdpdCBhL3Rlc3RpbmcvdGVzdHMvVDMwMHVkcCBiL3Rlc3RpbmcvdGVzdHMvVDMwMHVkcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTc1NzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy90ZXN0cy9UMzAwdWRwCkBAIC0wLDAgKzEsMTUgQEAKKyMhL2Jpbi9zaAorCisuIC4uL2V2YWxfdG9vbHMuc2gKKworSEVBREVSIFVEUCBUcmFuc3BvcnQKKworU0tJUElGTk9UIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCisKKyMKKyMgQmVnaW4gdGVzdAorIworCitTTk1QX1RSQU5TUE9SVF9TUEVDPXVkcAorCisuIC4vU3RyYW5zcG9ydApkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy9UMzEwdGNwIGIvdGVzdGluZy90ZXN0cy9UMzEwdGNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNDliZjMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Rlc3RzL1QzMTB0Y3AKQEAgLTAsMCArMSwxNiBAQAorIyEvYmluL3NoCisKKy4gLi4vZXZhbF90b29scy5zaAorCitIRUFERVIgVENQIFRyYW5zcG9ydAorCitTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKK1NLSVBJRk5PVCBORVRTTk1QX1RSQU5TUE9SVF9UQ1BfRE9NQUlOCisKKyMKKyMgQmVnaW4gdGVzdAorIworCitTTk1QX1RSQU5TUE9SVF9TUEVDPXRjcAorCisuIC4vU3RyYW5zcG9ydApkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy9UMzIwdWRwdjYgYi90ZXN0aW5nL3Rlc3RzL1QzMjB1ZHB2NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDI2MGIyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy90ZXN0cy9UMzIwdWRwdjYKQEAgLTAsMCArMSwxNyBAQAorIyEvYmluL3NoCisKKy4gLi4vZXZhbF90b29scy5zaAorCitIRUFERVIgVURQNiBUcmFuc3BvcnQKKworU0tJUElGTk9UIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCitTS0lQSUZOT1QgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KKworIworIyBCZWdpbiB0ZXN0CisjCisKK1NOTVBfVFJBTlNQT1JUX1NQRUM9dWRwNgorU05NUF9URVNUX0RFU1Q9Ils6OjFdOiIKKworLiAuL1N0cmFuc3BvcnQKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvdGVzdHMvVDMzMHRjcHY2IGIvdGVzdGluZy90ZXN0cy9UMzMwdGNwdjYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYzOTk1MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvdGVzdHMvVDMzMHRjcHY2CkBAIC0wLDAgKzEsMTcgQEAKKyMhL2Jpbi9zaAorCisuIC4uL2V2YWxfdG9vbHMuc2gKKworSEVBREVSIFRDUDYgVHJhbnNwb3J0CisKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorU0tJUElGTk9UIE5FVFNOTVBfVFJBTlNQT1JUX1RDUElQVjZfRE9NQUlOCisKKyMKKyMgQmVnaW4gdGVzdAorIworCitTTk1QX1RSQU5TUE9SVF9TUEVDPXRjcDYKK1NOTVBfVEVTVF9ERVNUPSJbOjoxXToiCisKKy4gLi9TdHJhbnNwb3J0CmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL1QzNTB1bml4IGIvdGVzdGluZy90ZXN0cy9UMzUwdW5peApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmQ5NmEwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy90ZXN0cy9UMzUwdW5peApAQCAtMCwwICsxLDIwIEBACisjIS9iaW4vc2gKKworLiAuLi9ldmFsX3Rvb2xzLnNoCisKK0hFQURFUiBVbml4IFRyYW5zcG9ydAorCitTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKK1NLSVBJRk5PVCBORVRTTk1QX1RSQU5TUE9SVF9VTklYX0RPTUFJTgorCisjCisjIEJlZ2luIHRlc3QKKyMKKworU05NUF9UUkFOU1BPUlRfU1BFQz11bml4CitTTk1QX1RFU1RfREVTVD0ke1NOTVBfVE1QRElSfS90ZXN0dW5peHNvY2tldAorCisuIC4vU3RyYW5zcG9ydAorCisjIGNsZWFudXAKK3JtIC1mICRTTk1QX1RFU1RfREVTVApkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy9UMzYwZHRsc3VkcCBiL3Rlc3RpbmcvdGVzdHMvVDM2MGR0bHN1ZHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRhN2FmMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvdGVzdHMvVDM2MGR0bHN1ZHAKQEAgLTAsMCArMSw1MiBAQAorIyEvYmluL3NoCisKKy4gLi4vZXZhbF90b29scy5zaAorCitIRUFERVIgRFRMUy1VRFAgVHJhbnNwb3J0CisKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorU0tJUElGTk9UIE5FVFNOTVBfVFJBTlNQT1JUX0RUTFNVRFBfRE9NQUlOCisKKyMKKyMgQmVnaW4gdGVzdAorIworCitTTk1QX1RSQU5TUE9SVF9TUEVDPWR0bHN1ZHAKK2V4cG9ydCBTTk1QX1RSQU5TUE9SVF9TUEVDCisKK0NPTkZJR0FHRU5UICdbc25tcF0nIGRlZlg1MDlTZXJ2ZXJQdWIgIAlgcHdkYC90ZXN0LWxvY2FsaG9zdC5jZXJ0CitDT05GSUdBR0VOVCAnW3NubXBdJyBkZWZYNTA5U2VydmVyUHJpdiAJYHB3ZGAvdGVzdC1sb2NhbGhvc3QucHJpdgorQ09ORklHQUdFTlQgJ1tzbm1wXScgZGVmWDUwOUNsaWVudENlcnRzIGBwd2RgL3Rlc3QtdXNlci5jZXJ0CisKK0NPTkZJR0FHRU5UICdbc25tcF0nIGRlZlg1MDlDbGllbnRQdWIgIAlgcHdkYC90ZXN0LXVzZXIuY2VydAorQ09ORklHQUdFTlQgJ1tzbm1wXScgZGVmWDUwOUNsaWVudFByaXYgCWBwd2RgL3Rlc3QtdXNlci5wcml2CitDT05GSUdBR0VOVCAnW3NubXBdJyBkZWZYNTA5U2VydmVyQ2VydHMgYHB3ZGAvdGVzdC1sb2NhbGhvc3QuY2VydAorCitDT05GSUdBR0VOVCAnW3NubXBdJyBBbGxvd1NlbGZTaWduZWRYNTA5IDEKKworQ09ORklHQVBQICAgZGVmWDUwOUNsaWVudFB1YiAgCWBwd2RgL3Rlc3QtdXNlci5jZXJ0CitDT05GSUdBUFAgICBkZWZYNTA5Q2xpZW50UHJpdiAJYHB3ZGAvdGVzdC11c2VyLnByaXYKK0NPTkZJR0FQUCAgIGRlZlg1MDlTZXJ2ZXJDZXJ0cyAgYHB3ZGAvdGVzdC1sb2NhbGhvc3QuY2VydAorCitDT05GSUdBUFAgICAnW3NubXBdJyBkZWZYNTA5U2VydmVyUHViICAJYHB3ZGAvdGVzdC1sb2NhbGhvc3QuY2VydAorQ09ORklHQVBQICAgJ1tzbm1wXScgZGVmWDUwOVNlcnZlclByaXYgCWBwd2RgL3Rlc3QtbG9jYWxob3N0LnByaXYKK0NPTkZJR0FQUCAgICdbc25tcF0nIGRlZlg1MDlDbGllbnRDZXJ0cyBgcHdkYC90ZXN0LXVzZXIuY2VydAorCitDT05GSUdBUFAgICBBbGxvd1NlbGZTaWduZWRYNTA5IDEKKworZXhwb3J0IFNOTVBfVFJBTlNQT1JUX1NQRUMKK2V4cG9ydCBTTk1QX1NOTVBEX1BPUlQKK2V4cG9ydCBTTk1QX1RFU1RfREVTVAorCitDT05GSUdBR0VOVCAgcnd1c2VyIC1zIHRzbSBkdGxzdGVzdHVzZXIgYXV0aHByaXYKKworU1RBUlRBR0VOVAorCitDQVBUVVJFICJzbm1wZ2V0IC1sIGFwIC11IGJvZ3VzIC0tZGVmU2VjdXJpdHlNb2RlbD10c20gLU9uICRTTk1QX0ZMQUdTICROT0FVVEhURVNUQVJHUyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjIuMS4xLjMuMCIKKworU1RPUEFHRU5UCisKK0NIRUNLICIuMS4zLjYuMS4yLjEuMS4zLjAgPSBUaW1ldGlja3M6IgorCitGSU5JU0hFRAorCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL1QzOTlhbGlhcyBiL3Rlc3RpbmcvdGVzdHMvVDM5OWFsaWFzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NzRlMzUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Rlc3RzL1QzOTlhbGlhcwpAQCAtMCwwICsxLDI0IEBACisjIS9iaW4vc2gKKworLiAuLi9ldmFsX3Rvb2xzLnNoCisKK0hFQURFUiBBTElBUyBUcmFuc3BvcnQKKworU0tJUElGTk9UIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCitTS0lQSUZOT1QgTkVUU05NUF9UUkFOU1BPUlRfQUxJQVNfRE9NQUlOCisKKyMKKyMgQmVnaW4gdGVzdAorIworCisjIGNvbmZpZ3VyZSB0aGUgYWdlbnQgdG8gYWNjZXB0IHVzZXIgaW5pdGlhbCB3aXRoIG5vQXV0aE5vUHJpdgorLiAuL1N2M2NvbmZpZworCitDT05GSUdBUFAgYWxpYXMgYWxpYXN0ZXN0IHVkcDpsb2NhbGhvc3Q6JFNOTVBfU05NUERfUE9SVAorQ09ORklHQUdFTlQgJ1tzbm1wXScgYWxpYXMgYWxpYXN0ZXN0IHVkcDpsb2NhbGhvc3Q6JFNOTVBfU05NUERfUE9SVAorCitTTk1QX1RSQU5TUE9SVF9TUEVDPWFsaWFzCitTTk1QX1RFU1RfREVTVD0iYWxpYXN0ZXN0IgorU05NUF9TTk1QRF9QT1JUPSIiCisKKy4gLi9TdHJhbnNwb3J0CmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL3Rlc3QtbG9jYWxob3N0LmNlcnQgYi90ZXN0aW5nL3Rlc3RzL3Rlc3QtbG9jYWxob3N0LmNlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI0OWIyNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvdGVzdHMvdGVzdC1sb2NhbGhvc3QuY2VydApAQCAtMCwwICsxLDIzIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUQyakNDQXNLZ0F3SUJBZ0lKQUlTRVFSZ1pKWEg0TUEwR0NTcUdTSWIzRFFFQkJRVUFNRkV4Q3pBSkJnTlYKK0JBWVRBbFZUTVFzd0NRWURWUVFJRXdKRFFURU9NQXdHQTFVRUJ4TUZSR0YyYVhNeEVUQVBCZ05WQkFvVENFNWwKK2RDMVRUazFRTVJJd0VBWURWUVFERXdsc2IyTmhiR2h2YzNRd0hoY05NRGt3TnpBNU1qTXpOak13V2hjTk1Ea3cKK09EQTRNak16TmpNd1dqQlJNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0dBMVVFQ0JNQ1EwRXhEakFNQmdOVkJBY1QKK0JVUmhkbWx6TVJFd0R3WURWUVFLRXdoT1pYUXRVMDVOVURFU01CQUdBMVVFQXhNSmJHOWpZV3hvYjNOME1JSUIKK0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUE0eWpjUTduamN3bnk2TnNGZ001V3dFY1YKK0d0VmUraDJrNDFKVTlsSjlJMUVnN2tSc1NmSjd6OWpYNUpYcEhYVVhxNTRNdC9zTE9EZWhleUU4ejVad2pwbGMKK01HeExpUGRSUnAvM0JtbGgzcXJQTFJMUjE3QisxTWtjSXo5VUJVdXQyUHVzeEVlQ2VBL2c4UlZFd0s4b1BnZXIKKzRJK0thWG9uWFdtaG04NUVFSGxXbVpIVERURGE2TVhVUk5zK0VxY1FyV1JnSHlmOGJRaHdwU2pCem1iVXRWcTUKK2lwVk5XbXF4UGxTVGtqNUNxa3JiTmRrcE9JQnZaNlRoRmZpMnJ3UERPK1l6cnVjRmNNK0JmS1JDREJjQzRUc04KKzJ6MFMxSXNlSkdUTk8xaWlkTXJqQ1Z6b0liTUIrR291WGpMSlhBdUxJRjBYM2RQK3lPWnplU3Q1SjJ2Q2dRSUQKK0FRQUJvNEcwTUlHeE1CMEdBMVVkRGdRV0JCUitaZHVOQUd2YkF0am84KzdEUFVPSTVDcFFSakNCZ1FZRFZSMGoKK0JIb3dlSUFVZm1YYmpRQnIyd0xZNlBQdXd6MURpT1FxVUVhaFZhUlRNRkV4Q3pBSkJnTlZCQVlUQWxWVE1Rc3cKK0NRWURWUVFJRXdKRFFURU9NQXdHQTFVRUJ4TUZSR0YyYVhNeEVUQVBCZ05WQkFvVENFNWxkQzFUVGsxUU1SSXcKK0VBWURWUVFERXdsc2IyTmhiR2h2YzNTQ0NRQ0VoRUVZR1NWeCtEQU1CZ05WSFJNRUJUQURBUUgvTUEwR0NTcUcKK1NJYjNEUUVCQlFVQUE0SUJBUUNhMis1dHorZm1ndzloOEFGOWwrKzhNMUxuenFybXN2eTQ1cGh4eDVmL3JaZTgKK0Jyc3BNbHJUNmJLY005Q1RxZXpqa0RaT3JHRXVZdmNiTWVhMm50bFhHMENJTXhoV3BnY3p3eFppekdZSU42ZjEKK0NLNXNpUGxPektPYnBrQXdValdiTG03TjJCSkdLcDNGTXExMUp0MzF0VXdKVEJjNXZpWXpXQkNRVjRDeFZvTDUKK01xTWZWeUtqT0swZXFnTXZ0clJnWjZ0LzA5OE9pRTRVU2hlVysrK2IwenpvOFVtL1lJQTlKUW1DYlo0Ymg2amQKKy9BZ1poS1JSNWJYaU9HbUNMVndlRFY0TVRpMTJZMjg1R0JieWxiZER1ajhZVjdtdTdOek9uNWtKNnhJMDBWdWMKK2JHV3RkY3BFR2tXN1puNFlDdXhzenBxdE0zakxHWkhDVXFDdUtTZVAKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RpbmcvdGVzdHMvdGVzdC1sb2NhbGhvc3QucHJpdiBiL3Rlc3RpbmcvdGVzdHMvdGVzdC1sb2NhbGhvc3QucHJpdgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTJhOGViCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy90ZXN0cy90ZXN0LWxvY2FsaG9zdC5wcml2CkBAIC0wLDAgKzEsMjcgQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK01JSUVwUUlCQUFLQ0FRRUE0eWpjUTduamN3bnk2TnNGZ001V3dFY1ZHdFZlK2gyazQxSlU5bEo5STFFZzdrUnMKK1NmSjd6OWpYNUpYcEhYVVhxNTRNdC9zTE9EZWhleUU4ejVad2pwbGNNR3hMaVBkUlJwLzNCbWxoM3FyUExSTFIKKzE3QisxTWtjSXo5VUJVdXQyUHVzeEVlQ2VBL2c4UlZFd0s4b1BnZXI0SStLYVhvblhXbWhtODVFRUhsV21aSFQKK0RURGE2TVhVUk5zK0VxY1FyV1JnSHlmOGJRaHdwU2pCem1iVXRWcTVpcFZOV21xeFBsU1RrajVDcWtyYk5ka3AKK09JQnZaNlRoRmZpMnJ3UERPK1l6cnVjRmNNK0JmS1JDREJjQzRUc04yejBTMUlzZUpHVE5PMWlpZE1yakNWem8KK0liTUIrR291WGpMSlhBdUxJRjBYM2RQK3lPWnplU3Q1SjJ2Q2dRSURBUUFCQW9JQkFESDRuaVBqODY0dDVScm0KK2U1cHZTZFE0anVMOVIweDhVdmFTK1EvSzY2NW1QWGxNNGdtT1owQTg4cGxkaFErdTM0c29WS0h3ZnZKYUFwTUUKK3A4eit5am9FY0t4U1ZuZUYrSUl4MUhTN29BVU16RkNkRUQ2RG5CTVJQcmhlU1F4MUxvUktNU0pvbk1IdXRFdzAKK29wQkV0L1NWV1hFb0FvbmJqbWRWUW5EMCtqSXBKUkhZdlBqOFRXR3R2N1ZsN25IVlRRQlVZeStqZDFDQlE0akEKK2VtSEs1SUd4Kyt5dHJmTlhBMXVEYTM4dDhjU0hnMktwcjh2aHdrelpXVnhza1M0NndTUC9zUEJxSy93ZytGeGQKKzhXb3ZhR1hwaXlMYjJLajE1ckhCcWQ1d0ZlS0hHSkkvUS9YNHFWdnhMaktHZUZKMUdETnZ2ZzhtZXZSWjlSZWkKK3lJQnU4b1VDZ1lFQTg5NVd4ZWFDMFM4ZEtaVkFSN2VYTGF1SFVRL2xBSWpxbDhPdGRzSEJmcFRSTFd2czlJcFEKKzh5MG40c2djQi80aWFCVlZwOFc0MTR6anV0Q3hYSnJxNVpIS09pNXpWcXBQc2Fta0tRWW5HS2ZiVTJxMFdwdEQKK1QxejJwTFNrMUwvTUhqaGJ1d1piZTBIeGY3dlBnMTBsb3VrRmxVR2tFYWphSEtPbmh5MS9CdGNDZ1lFQTduVzcKKzRWbVZjRE04eVlibE5OUVB2MlRIb293WkpsU1Q5djcrUTlwam9ZTVl2cnVRV0tjWnlJakZTdDloZXRyZkJ0eE8KKytReFVxdmZCOGQvUlN6Zzd3RjdBbVdIYTNFZmdUN2gzWDhnbGg3aXNiOVlJUm42cUJ0eHlzV1RYUnFOR00rV2YKK2h4eWxGUVhlekpQWjBoU2JkWFpUaGh3dnZ6RDQxWmJqcTNYSnptY0NnWUVBb0E0TU80VG4xTzBzSWErZ2FiRjQKK0duUmFzbnhSRzRIQkhteENQQkE4czV4dWtYWWxKZlpsM01TRlNoVjJPRlMyTmtQU1hQT3JObVYwelpiTTRXK1gKK3ZhWnE2TGExNG1xVE5aS1dlSXBlUEpObW9xQUUwUGJZUFkxUkg1YWtIREhwZ09nU1pIUnV0RDM2aDVBM1NRdG8KK2VUeWcrbTREaGNlaHAyeE50cTNJa2k4Q2dZRUEzdlBQVFZ4di8yNjRpQWdLNThEYVZHM0t4ZXpOV3V3N1IvV1UKK0VDYnhma0pQY1kxMjRaeWkyNzhkRCtzWmZqK0R4U3RZM3p3ck1ZcmlsOTVYRmtnbWZhOVp6azhTeldDYWxvNzMKK2RlTnhTNXRjQmxpTWRqVFpqZjZ4Y2JEQ0lyWm4zZi8wanVRMmFSaUsvcVhDUTh5bXFVV1B4RlU0UXo5cmVIQlMKK3Y2NHFtRU1DZ1lFQXN1bXEralVvYTNxWW5hNDV2eUJNUWY2TkpMV0NGWVhsb0F0S1ZURUNDYjg4VDZNVnlyT0UKK2N5ajBZYmVrK2llek44dGJKSHFpU1dWdG5SQTlranJDMEFyd09LRGlwTkZSa0ZvZ3BVUmFqemIvTG5VUWRXK1AKK3JPdE51TGFObkxWbzJraUs0UU5iZCszQkpRQ0RQQmNaUXE2ZEdjY3Z5TlhZVnRmRXhZNFdJMmM9CistLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy90ZXN0LXVzZXIuY2VydCBiL3Rlc3RpbmcvdGVzdHMvdGVzdC11c2VyLmNlcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ1NmIzNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvdGVzdHMvdGVzdC11c2VyLmNlcnQKQEAgLTAsMCArMSwyMyBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlENHpDQ0FzdWdBd0lCQWdJSkFJcEJRSHpxK25oYk1BMEdDU3FHU0liM0RRRUJCUVVBTUZReEN6QUpCZ05WCitCQVlUQWxWVE1Rc3dDUVlEVlFRSUV3SkRRVEVPTUF3R0ExVUVCeE1GUkdGMmFYTXhFVEFQQmdOVkJBb1RDRTVsCitkQzFUVGsxUU1SVXdFd1lEVlFRREV3eGtkR3h6ZEdWemRIVnpaWEl3SGhjTk1Ea3dOekE1TWpNME1EQTJXaGNOCitNRGt3T0RBNE1qTTBNREEyV2pCVU1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQk1DUTBFeERqQU1CZ05WCitCQWNUQlVSaGRtbHpNUkV3RHdZRFZRUUtFd2hPWlhRdFUwNU5VREVWTUJNR0ExVUVBeE1NWkhSc2MzUmxjM1IxCitjMlZ5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEwcnc5QmNWWWJ6SjhjamM0CitNMEZYN2g0eXdUNTN4dENXeXBRWExnd054N0dkdVpVMURUemhWcmN5V3BlVDhhdyt6dFc5d21INE5FZU9SU1RLCit2R1pKSlBlM3FKaUZpUEtOU0oxN1F6S1NWRzBRU3RKTVBVRlNDcTduTllJelozYmxsaU1IU0RKZWYzcTZieCtsCis0TlVhRFgwM1VzYWNna2U4Q0NabEE1MUJSZitPT3RxV05Xb0o0UVh1Y3VKL3JFUnFnWVJSMWY3UG9qczM1WkFFCis3YzcxL1dWY3p0bDY4dExINnlWWmhwVkRRS2QrRWUvTXBpcjVqMlg3Rm9ScDNkVW41QVRqcEJ3NldFVHc5dGJVCitnamJjc3JHNHdFNmN6SzBZU1R4TlRHSnpDOXJ2RXEzUyt2YmpQekxCVnhyQVd4WGQ3dEFNa1VTVVdWSmpDTU12CitlN2hvT1FJREFRQUJvNEczTUlHME1CMEdBMVVkRGdRV0JCVEZXVk1rN2ZzR0NVMkdzS1k5bmswYkMyUE4rakNCCitoQVlEVlIwakJIMHdlNEFVeFZsVEpPMzdCZ2xOaHJDbVBaNU5Hd3RqemZxaFdLUldNRlF4Q3pBSkJnTlZCQVlUCitBbFZUTVFzd0NRWURWUVFJRXdKRFFURU9NQXdHQTFVRUJ4TUZSR0YyYVhNeEVUQVBCZ05WQkFvVENFNWxkQzFUCitUazFRTVJVd0V3WURWUVFERXd4a2RHeHpkR1Z6ZEhWelpYS0NDUUNLUVVCODZ2cDRXekFNQmdOVkhSTUVCVEFECitBUUgvTUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFDV3hLRkVvaEErVmwrZ2o0eDBuZzVGVU11SHRUYnRMYlNHCisxK3I2Uzk0THZNQmVkbG9ZVDdtUElQZ2NWYk1UNWZxQWVRcGZWSWFDMGk1UGtpVUk5SDJNWHRPMkFkQmE1Sng1CitxMThPZFVqL0xqR0EzQjdqb3NxNUhuSVQvME9UaFlrQWVLTElWRExIeGlxT1lybUZ3cVpPc0s1QloxUk0vNllsCisrL1VadXd1anVIdG53UlczVldza1ZWRlRGNE5HS1o1ZjdsQStOU1lxYkhuLzdPQnFxZ1MyR3huU3pjQ0Q5Qk9xCis5ek5NWm9pVzNqVytFb0lMNjJwUnRFK1MvaUwxQlJCY3Q0eHdOUC9SUXlONGlhRFZnMFNDMTBZU1NYazQrb2YrCitlMmdDTGdDeHMwVnlCekc4ZklvWDhSaXE3Y1Y5OUcxMTlNMUtUNDVqWGNvczFoTzJnWXVCCistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL3Rlc3QtdXNlci5wcml2IGIvdGVzdGluZy90ZXN0cy90ZXN0LXVzZXIucHJpdgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjUwN2UzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy90ZXN0cy90ZXN0LXVzZXIucHJpdgpAQCAtMCwwICsxLDI3IEBACistLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCitNSUlFcEFJQkFBS0NBUUVBMHJ3OUJjVllieko4Y2pjNE0wRlg3aDR5d1Q1M3h0Q1d5cFFYTGd3Tng3R2R1WlUxCitEVHpoVnJjeVdwZVQ4YXcrenRXOXdtSDRORWVPUlNUS3ZHWkpKUGUzcUppRmlQS05TSjE3UXpLU1ZHMFFTdEpNCitQVUZTQ3E3bk5ZSXpaM2JsbGlNSFNESmVmM3E2YngrbDROVWFEWDAzVXNhY2drZThDQ1psQTUxQlJmK09PdHFXCitOV29KNFFYdWN1Si9yRVJxZ1lSUjFmN1BvanMzNVpBRTdjNzEvV1ZjenRsNjh0TEg2eVZaaHBWRFFLZCtFZS9NCitwaXI1ajJYN0ZvUnAzZFVuNUFUanBCdzZXRVR3OXRiVWdqYmNzckc0d0U2Y3pLMFlTVHhOVEdKekM5cnZFcTNTCisrdmJqUHpMQlZ4ckFXeFhkN3RBTWtVU1VXVkpqQ01NdmU3aG9PUUlEQVFBQkFvSUJBRGNYYU9pU1QrMDZDSmlmCitZUHpkVDB4NzdvN2djdFd5QUVuVGJ6L2xmTkRBMlZnRDdzdVlKOXpRcGNSVExpVVcvNUI1QmxQRDR1eGY3SXljCis4cmRRRWowczJZR2s1ZndJVlBFdjRtS04zUDFmU2N3VnNFS3ZTZkJyQ3h6TS9mMUZjdjNPQ0lCU1Vxd0cvS2hDCitZTTRuUjlsUTY5Nmk5NVdEaFYrb0VlNWc5UWlFTGRBRERsYzFidituYjl0VkJ6VVRtSFFncEdqd3lhSk1JeklWCitxa2ZwQzRSVjhPanQ1RUxiNlhqSlJGeGc5UWkrNGt3Nm1MYkJjL2lueXN2VlFCbXNXTExsQ0twYkh0MDJZZlVCCithdFZPRHpUUjVhVWJjUUtuTm5IbW9qVTA1aXJiQ2VVWHBoZ1FLVjlpdXpzaVdNVjRlZEo2dFc4QjEwQnVTbEg1CitiMEdOdXdFQ2dZRUEvZndLbVEwamdyTGpSYzE2Y0UyR1dNWlJtcUJ1ZlR0R1N3OXRkb2htVU1JUHFOdDQrL1hRCitnS1Ywc2ZGWmdzTExVRzUweHFSUjZtbWt6UzdUVndsNHVScWNyRjdEUktLQWt5RkpQM1FrTFNRbSs0RVpGeE92CitkcEhWTFZwTzFRSis3MVlFNHpLT2RJZldSYW9oNVpsRXBHdzN1emYrVTBvTlRENzlYNWZPQTZFQ2dZRUExR2hXCitpU0ViVSsyWVBueTRxZVhkZjhoY1NuOStVcjZjQnp4TGhZTVVITkk5eXN5QVFuMy8vTUxvUkNvbm9raVVFV0c1CitCTE8yelNtTnF2SFdLUkJ6YUdyNlpqby90R1RXZ09XbnBMUU1xK1hZbUR4V3hER0NUTEgyZWRxQytWSUlxQm5CCitRbUxZQnZkZTlFbjFVSS9jM0NzcGIxOE5oOTJJK1ZHWk5QelBIWmtDZ1lBUFU4MkQ3UUlPbWlNVERGSnVRbzl2CisvZy9ncC92aS9OZkNJZDAyUVFjRHFxSnRTMGxpMHpQUS82c3FMZWw3OWF0MVlDVVY4OGFwd2RSYk9ZOHhlblhaCituZHlFbm5ka1JmWkNhc2pUMW50MGFmRWNUbThvTUZ6dlo5K1lqQkdqMHpHNzJkSVRyL0plMysrelpwQURIaHZCCitYSEtFanQxL1EwSElMeWoxUXVFQTRRS0JnUUNVYmZrU3lKelZNSEkwTUduRzZBZTU5T1J4ZHRocXNDSk9lQmI2CitUSmZ3Y0FhWVFnSGE5VHUrZ09GWVNQRDdXYWFHNHZnc3pmMFBMMXQ5T3BRQ2pDbHByV0Fmc2RLMGw4YkJ1anBGCitRVUNkbXZlWm9vaXJmMEZqb1BUeFAvNUloY2ZnMkdhUm9vcjlpejNDampBc1JPdjh1dml3aUFibmk2cmROdVZOCisvdUFvK1FLQmdRQ2ZRZjFSQmovaU1tT1pkaTRTaWZCT0Rtc2VKRVllQU1sZkVRQkhQRm1UaE5MaWZseitWTjE3Cit1cUhTNUlnaFBLMHNYYjdwT1FtQzJoQ3hUMnNXeWJKeCtxS3NvT1lITFF5ckc1a2c3Q2dWamx0bTZIend5aXp0CitLdXc2VDRjVWoxcVJRRzhhQVRMK3NHdVQ2OUZIVFNFM3ZhNXRsZjlvWUdzTTZySW9BNDNnM3c9PQorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL3dpbjMyL0NvbmZpZ3VyZSBiL3dpbjMyL0NvbmZpZ3VyZQppbmRleCA5OGZhM2ZkLi5iZTNlZTg0IDEwMDY0NAotLS0gYS93aW4zMi9Db25maWd1cmUKKysrIGIvd2luMzIvQ29uZmlndXJlCkBAIC03LDYgKzcsNyBAQAogdXNlIEdldG9wdDo6TG9uZzsKIHVzZSBzdHJpY3Q7CiAKK215ICR2ZXJzaW9uID0gInVua25vd24iOwogbXkgJGNvbmZpZzsKIG15ICRzZGsgPSAwOwogbXkgJGxpbmt0eXBlOwpAQCAtODUsNiArODYsMjYgQEAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMKKyMgRGV0ZXJtaW5lIHZlcnNpb24gZnJvbSB1bml4IGNvbmZpZ3VyZSBzY3JpcHQKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK215ICR1bml4X2NvbmZpZ3VyZV9pbiA9ICIuLi9jb25maWd1cmUiOworCitvcGVuIChVTklYX0NPTkZJR1VSRV9JTiwgIjwkdW5peF9jb25maWd1cmVfaW4iKSB8fCBkaWUgIkNhbid0IE9wZW4gJHVuaXhfY29uZmlndXJlX2luXG4iOworCit3aGlsZSAoPFVOSVhfQ09ORklHVVJFX0lOPikKK3sKKyAgY2hvbXA7CisgIC9QQUNLQUdFX1ZFUlNJT049JyguKiknLzsKKyAgaWYgKCQxIG5lICIiKSB7CisgICAgJHZlcnNpb24gPSAkMTsKKyAgICBsYXN0OworICB9Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCiAjIENyZWF0ZSBtYWluIE1ha2VmaWxlCiAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMjIwLDE1ICsyNDEsOSBAQAogL2xpYmFnZW50CiBsaWJoZWxwZXJzCiBsaWJuZXRzbm1wdHJhcGQKK25ldHNubXBtaWJzCiAvOwogCi1pZiAoJHNkayA9PSAxKSB7Ci0gIHB1c2ggKEBwcm9ncmFtcywgIm5ldHNubXBtaWJzc2RrIik7Ci19Ci1lbHNlIHsKLSAgcHVzaCAoQHByb2dyYW1zLCAibmV0c25tcG1pYnMiKTsKLX0KLQogaWYgKCRsaW5rdHlwZSBlcSAiZHluYW1pYyIpIHsKICAgcHVzaCAoQHByb2dyYW1zLCAibGlic25tcF9kbGwiKTsKIH0KQEAgLTI1Myw2ICsyNjgsMTMgQEAKICAgewogICAgIGNob21wOwogCisgICAgaWYgKCRzZGsgPT0gMSkgeworICAgICAgcy9eU0RLPS9TREs9dHJ1ZS87CisgICAgfQorICAgIGVsc2UgeworICAgICAgcy9eU0RLPS9TREs9ZmFsc2UvOworICAgIH0KKwogICAgIHMvXlBST0dOQU1FPS9QUk9HTkFNRT0kcHJvZ05hbWUvOwogICAgIHMvXkNGRz0vQ0ZHPSRjb25maWcvOwogICAgIHMvXk9VVERJUj0vT1VURElSPS5cXCRvdXRkaXIvOwpAQCAtMjczLDE2ICsyOTUsMTAgQEAKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBteSBAcHJvZ3JhbXMgPSBxdwotL3NubXB0cmFwZAorL3NubXBkCitzbm1wdHJhcGQKIC87CiAKLWlmICgkc2RrID09IDEpIHsKLSAgcHVzaCAoQHByb2dyYW1zLCAic25tcGRzZGsiKTsKLX0KLWVsc2UgewotICBwdXNoIChAcHJvZ3JhbXMsICJzbm1wZCIpOwotfQotCiBmb3JlYWNoIG15ICRwcm9nTmFtZSAoQHByb2dyYW1zKSB7CiAKICAgbXkgJG1ha2VmaWxlX291dCA9ICIkcHJvZ05hbWVcXE1ha2VmaWxlIjsKQEAgLTMwMCw2ICszMTYsMTMgQEAKICAgewogICAgIGNob21wOwogCisgICAgaWYgKCRzZGsgPT0gMSkgeworICAgICAgcy9eU0RLPS9TREs9dHJ1ZS87CisgICAgfQorICAgIGVsc2UgeworICAgICAgcy9eU0RLPS9TREs9ZmFsc2UvOworICAgIH0KKwogICAgIHMvXkxJTktUWVBFPS9MSU5LVFlQRT0kbGlua3R5cGUvOwogICAgIHMvXlBST0dOQU1FPS9QUk9HTkFNRT0kcHJvZ05hbWUvOwogICAgIHMvXkNGRz0vQ0ZHPSRjb25maWcvOwpAQCAtMzU3LDcgKzM4MCw3IEBACiAgIHdoaWxlICg8RklMRV9JTj4pCiAgIHsKICAgICBjaG9tcDsKLQorICAgIHMvXiNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OLiovI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gXCIkdmVyc2lvblwiLzsKICAgICBpZiAoJHByZWZpeCBuZSAiIikgewogICAgICAgcy9eI2RlZmluZSBJTlNUQUxMX0JBU0UuKi8jZGVmaW5lIElOU1RBTExfQkFTRSBcIiRwcmVmaXhcIi87CiAgICAgfQpAQCAtMzgxLDMzICs0MDQsNiBAQAogICB9CiB9CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENyZWF0ZSBsaWJzbm1wLmRlZiBmaWxlIGZvciBsaWJzbm1wX2RsbAotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLWlmICgkbGlua3R5cGUgZXEgImR5bmFtaWMiKQotewotICBteSAkZmlsZV9vdXQgPSAibGlic25tcF9kbGxcXGxpYnNubXAuZGVmIjsKLSAgbXkgJGZpbGVfaW4gPSAibGlic25tcF9kbGxcXGxpYnNubXAuZGVmLmluIjsKLQotICBvcGVuIChGSUxFX09VVCwgIj4kZmlsZV9vdXQiKSB8fCBkaWUgIkNhbid0IE9wZW4gJGZpbGVfb3V0XG4iOwotICBvcGVuIChGSUxFX0lOLCAiPCRmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX2luXG4iOwotCi0gIHByaW50ICJjcmVhdGluZyAkZmlsZV9vdXRcbiI7Ci0KLSAgd2hpbGUgKDxGSUxFX0lOPikKLSAgewotICAgIGNob21wOwotCi0gICAgaWYgKCRiX2lwdjYgPT0gIjEiKSB7Ci0gICAgICBzL147aXB2Ni8vaTsKLSAgICB9Ci0KLSAgICBwcmludCBGSUxFX09VVCAkXyAuICJcbiI7Ci0gIH0KLX0KLQogCiBwcmludCBxcS8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDE2LDYgKzQxMiwxMSBAQAogCiAvOwogCitpZiAoJHZlcnNpb24gZXEgInVua25vd24iKSB7CisgICR2ZXJzaW9uID0gInVua25vd24gLSBDb3VsZCBub3QgZGV0ZXJtaW5lIHZlcnNpb24gZnJvbSAuLi9jb25maWd1cmUhIjsKK30KKworcHJpbnQgIiAgVmVyc2lvbjogICAgICAgICAgICAgICAgICAgICR2ZXJzaW9uXG4iOwogcHJpbnQgIiAgQ29uZmlnIHR5cGU6ICAgICAgICAgICAgICAgICRjb25maWdcbiI7CiBwcmludCAiICBTREs6ICAgICAgICAgICAgICAgICAgICAgICAgIiAuICgkc2RrID09IDEgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CiBwcmludCAiICBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgJGxpbmt0eXBlXG4iOwpkaWZmIC0tZ2l0IGEvd2luMzIvTWFrZWZpbGUtYXBwcy5pbiBiL3dpbjMyL01ha2VmaWxlLWFwcHMuaW4KaW5kZXggYjVmZWQ2MS4uMjExM2FkZSAxMDA2NDQKLS0tIGEvd2luMzIvTWFrZWZpbGUtYXBwcy5pbgorKysgYi93aW4zMi9NYWtlZmlsZS1hcHBzLmluCkBAIC0yNCw2ICsyNCw3IEBACiAJLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgogCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCiAJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiCisJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiCiAKICIuLlxiaW5cJChPVVRESVIpIiA6CiAgICAgaWYgbm90IGV4aXN0ICIuLlxiaW5cJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxiaW5cJChPVVRESVIpIgpAQCAtMzIsNyArMzMsNyBAQAogICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCiAKIENQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GcCIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvRUhzYyAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAogCiAhSUYgIiQoTElOS1RZUEUpIiA9PSAiZHluYW1pYyIKIENQUF9QUk9KPSQoQ1BQX1BST0opIC9EICJOTUFLRV9ORVRTTk1QX1VTRV9ETEwiCkBAIC03NCw3ICs3NSw3IEBACiBCU0MzMl9TQlJTPSBcCiAKIExJTkszMj1saW5rLmV4ZQotTElOSzMyX0ZMQUdTPW5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkucGRiIiAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIiAKK0xJTkszMl9GTEFHUz1uZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLnBkYiIgL2RlYnVnIC9vdXQ6Ii4uXGJpblwkKE9VVERJUikvJChQUk9HTkFNRSkuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiIAogTElOSzMyX09CSlM9IFwKIAkiJChJTlRESVIpXCQoUFJPR05BTUUpLm9iaiIKIApAQCAtODMsNiArODQsOCBAQAogICAgICQoTElOSzMyKSBAPDwKICAgJChMSU5LMzJfRkxBR1MpICQoTElOSzMyX09CSlMpCiA8PAorIGlmIGV4aXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgXAorCSAgICBtdC5leGUgLW1hbmlmZXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSI7MQogIUVMU0UJIyBMaW5rdHlwZSBjaGVjawogCS1AZWNobyAuCiAJLUBlY2hvIEFib3J0aW5nIGJ1aWxkLiAgQXBwbGljYXRpb25zIGNhbiBub3QgYmUgYnVpbHQgdXNpbmcgLS1saW5rdHlwZT1keW5hbWljCkBAIC0xMDMsNiArMTA2LDcgQEAKIAktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGRiIgogCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCiAJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiCisJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiCiAKICIuLlxiaW5cJChPVVRESVIpIiA6CiAgICAgaWYgbm90IGV4aXN0ICIuLlxiaW5cJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxiaW5cJChPVVRESVIpIgpAQCAtMTExLDcgKzExNSw3IEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRlIiJChJTlRESVIpXFwiIC9GcCIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9FSHNjIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRlIiJChJTlRESVIpXFwiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAKICFJRiAiJChMSU5LVFlQRSkiID09ICJkeW5hbWljIgogQ1BQX1BST0o9JChDUFBfUFJPSikgL0QgIk5NQUtFX05FVFNOTVBfVVNFX0RMTCIKQEAgLTE1OSw3ICsxNjMsNyBAQAogPDwKIAogTElOSzMyPWxpbmsuZXhlCi1MSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkucGRiIiAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIiAKK0xJTkszMl9GTEFHUz1uZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL3BkYjoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5wZGIiIC9kZWJ1ZyAvb3V0OiIuLlxiaW5cJChPVVRESVIpLyQoUFJPR05BTUUpLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIiAKIExJTkszMl9PQkpTPSBcCiAJIiQoSU5URElSKVwkKFBST0dOQU1FKS5vYmoiCiAKQEAgLTE2OCw2ICsxNzIsOCBAQAogICAgICQoTElOSzMyKSBAPDwKICAgJChMSU5LMzJfRkxBR1MpICQoTElOSzMyX09CSlMpCiA8PAorIGlmIGV4aXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgXAorCSAgICBtdC5leGUgLW1hbmlmZXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSI7MQogIUVMU0UJIyBMaW5rdHlwZSBjaGVjawogCS1AZWNobyAuCiAJLUBlY2hvIEFib3J0aW5nIGJ1aWxkLiAgQXBwbGljYXRpb25zIGNhbiBub3QgYmUgYnVpbHQgdXNpbmcgLS1saW5rdHlwZT1keW5hbWljCmRpZmYgLS1naXQgYS93aW4zMi9NYWtlZmlsZS5pbiBiL3dpbjMyL01ha2VmaWxlLmluCmluZGV4IGI5MDg1ODIuLjg2NGE4NWYgMTAwNjQ0Ci0tLSBhL3dpbjMyL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL01ha2VmaWxlLmluCkBAIC0xMCwxNyArMTAsMTAgQEAKIAogY2xlYW4gOiBhcHBzX2NsZWFuIGxpYnNfY2xlYW4gc25tcHRyYXBkX2NsZWFuIHNubXBkX2NsZWFuIGxvY2FsX2NsZWFuCiAKLSFJRiAiJChTREspIiA9PSAidHJ1ZSIKLXNubXBkIDogc25tcGRzZGtfCi1zbm1wZF9jbGVhbiA6IHNubXBkc2RrX2NsZWFuXwotbmV0c25tcG1pYnMgOiBuZXRzbm1wbWlic3Nka18KLW5ldHNubXBtaWJzX2NsZWFuIDogbmV0c25tcG1pYnNzZGtfY2xlYW5fCi0hRUxTRQogc25tcGQgOiBzbm1wZF8KIHNubXBkX2NsZWFuIDogc25tcGRfY2xlYW5fCiBuZXRzbm1wbWlicyA6IG5ldHNubXBtaWJzXwkKIG5ldHNubXBtaWJzX2NsZWFuIDogbmV0c25tcG1pYnNfY2xlYW5fCi0hRU5ESUYKIAogIUlGICIkKExJTktUWVBFKSIgPT0gInN0YXRpYyIKIGxpYnNubXAgOiBsaWJzbm1wXwpAQCAtMTM4LDExICsxMzEsNiBAQAogCSQoTk1BS0UpIGFsbAogCWNkIC4uCiAKLW5ldHNubXBtaWJzc2RrXyA6OgotCWNkIG5ldHNubXBtaWJzc2RrCi0JJChOTUFLRSkgYWxsCi0JY2QgLi4KLQogc25tcGRmIDo6CiAJY2Qgc25tcGRmCiAJJChOTUFLRSkgYWxsCkBAIC0yMzgsMTEgKzIyNiw2IEBACiAJJChOTUFLRSkgYWxsCiAJY2QgLi4KIAotc25tcGRzZGtfIDo6Ci0JY2Qgc25tcGRzZGsKLQkkKE5NQUtFKSBhbGwKLQljZCAuLgotCiBzbm1wY29uZiA6OgogCWNkIGxvY2FsCiAJJChOTUFLRSkgc25tcGNvbmYKQEAgLTI5MiwxMSArMjc1LDYgQEAKIAkkKE5NQUtFKSBjbGVhbgogCWNkIC4uCiAKLW5ldHNubXBtaWJzc2RrX2NsZWFuXyA6OgotCWNkIG5ldHNubXBtaWJzc2RrCi0JJChOTUFLRSkgY2xlYW4KLQljZCAuLgotCiBzbm1wZGZfY2xlYW4gOjoKIAljZCBzbm1wZGYKIAkkKE5NQUtFKSBjbGVhbgpAQCAtMzkyLDExICszNzAsNiBAQAogCSQoTk1BS0UpIGNsZWFuCiAJY2QgLi4KIAotc25tcGRzZGtfY2xlYW5fIDo6Ci0JY2Qgc25tcGRzZGsKLQkkKE5NQUtFKSBjbGVhbgotCWNkIC4uCi0KIHNubXBjb25mX2NsZWFuIDo6CiAJY2QgbG9jYWwKIAkkKE5NQUtFKSBzbm1wY29uZl9jbGVhbgpkaWZmIC0tZ2l0IGEvd2luMzIvY29uZmlnLmguYm9ybGFuZCBiL3dpbjMyL2NvbmZpZy5oLmJvcmxhbmQKaW5kZXggM2FlZjZiYi4uNjI5MDg1YyAxMDA2NDQKLS0tIGEvd2luMzIvY29uZmlnLmguYm9ybGFuZAorKysgYi93aW4zMi9jb25maWcuaC5ib3JsYW5kCkBAIC00OTEsOSArNDkxLDYgQEAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUga3N0YXQgbGlicmFyeSAoLWxrc3RhdCkuICAqLwogI3VuZGVmIEhBVkVfTElCS1NUQVQKIAotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBrdm0gbGlicmFyeSAoLWxrdm0pLiAgKi8KLSN1bmRlZiBIQVZFX0xJQktWTQotCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIG0gbGlicmFyeSAoLWxtKS4gICovCiAjdW5kZWYgSEFWRV9MSUJNCiAKQEAgLTU0Myw5ICs1NDAsNiBAQAogLyogdHlwZSBjaGVjayBmb3IgaW5fYWRkcl90ICovCiAjZGVmaW5lIGluX2FkZHJfdCB1X2xvbmcKIAotLyogZGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgKHByb2Nlc3NvcikgZGVmaW5lcyBfX0ZVTkNUSU9OX18gZm9yIHlvdSAqLwotI3VuZGVmIEhBVkVfQ1BQX1VOREVSQkFSX0ZVTkNUSU9OX0RFRklORUQKLQogLyogbWliIHBvaW50ZXIgdG8gdGhlIHRvcCBvZiB0aGUgZXh0ZW5zaWJsZSB0cmVlLiAgVGhpcyBoYXMgYmVlbgogIGFzc2lnbmVkIHRvIFVDRGF2aXMgYnkgdGhlIGlhbmEgZ3JvdXAuICBPcHRpb25hbGx5LCBwb2ludCB0aGlzIHRvIHRoZQogIGxvY2F0aW9uIGluIHRoZSB0cmVlIHlvdXIgY29tcGFueS9vcmdhbml6YXRpb24gaGFzIGJlZW4gYWxsb2NhdGVkLiAqLwpkaWZmIC0tZ2l0IGEvd2luMzIvZGlzdC9SRUFETUUuYnVpbGQud2luMzIudHh0IGIvd2luMzIvZGlzdC9SRUFETUUuYnVpbGQud2luMzIudHh0CmluZGV4IDBiZDBlZTUuLmFiNTQzOWMgMTAwNjQ0Ci0tLSBhL3dpbjMyL2Rpc3QvUkVBRE1FLmJ1aWxkLndpbjMyLnR4dAorKysgYi93aW4zMi9kaXN0L1JFQURNRS5idWlsZC53aW4zMi50eHQKQEAgLTEsNTIwICsxLDUyMyBAQAotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qCi0qIFJFQURNRS5idWlsZC53aW4zMgotKgotKiBBdXRob3JzOiBBbGV4IEJ1cmdlciA8YWxleF9iQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLSogICAgICAgICAgCi0qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotSW50cm9kdWN0aW9uCi09PT09PT09PT09PT0KLQotVGhpcyBSRUFETUUgb3V0bGluZXMgdGhlIHN0ZXBzIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIGJpbmFyeSByZWxlYXNlIGZvcgotV2luZG93cyB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBhbmQgdGhlIE51bGxTb2Z0IGluc3RhbGxlci4KLQotVGhlcmUgYXJlIGZvdXIgc2VjdGlvbnM6Ci0KLSAgQ29tcGlsaW5nIGJpbmFyaWVzCi0KLSAgQ29tcGlsaW5nIEhUTUxIZWxwIGZpbGUKLQotICBDb21iaW5pbmcgdGhlIGJpbmFyaWVzIGFuZCBIVE1MSGVscCBmaWxlcwotCi0gIEJ1bGRpbmcgYSBOdWxsU29mdCBpbnN0YWxsZXIgcGFja2FnZQotCi0gIEJ1bGRpbmcgYW4gT3BlblNTTCB2ZXJzaW9uCi0KLQotQ29tcGlsaW5nIGJpbmFyaWVzCi09PT09PT09PT09PT09PT09PT0KLQotUmVxdWlyZW1lbnRzCi0tLS0tLS0tLS0tLS0KLQotIC1XaW5kb3dzIE5ULzIwMDAvWFAKLSAtTVNWQysrIDYuMCBTUDUKLSAtQWN0aXZlUGVybCA1LjguMiBidWlsZCA4MDgKLSAtZ251X3JlZ2V4LmV4ZSAoMC4xMikgLSBodHRwOi8vcGVvcGxlLmRlbHBoaWZvcnVtcy5jb20vZ2pjL2dudV9yZWdleC5odG1sCi0gLVBsYXRmb3JtIFNESwotIC1NU1lTIC8gTWluR1cgLW9yLSB0YXIuZXhlIGFuZCBnemlwLmV4ZQotIC13aW4zMi9kaXN0IGZvbGRlciBmcm9tIE1BSU4gaW4gQ1ZTCi0KLQotQnVpbGRpbmcgdGhlIG1haW4gYmluYXJpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU5vdGU6ICBBbGwgc2hlbGwgc3RlcHMgYXJlIHVzaW5nIHRoZSBXaW5kb3cgQ01EIHByb21wdCB1bmxlc3Mgb3RoZXJ3aXNlIHN0YXRlZC4KLQotUGFydCAxCi0tLS0tLS0KLQotMS4gIEV4dHJhY3Qgc291cmNlLiAgVGhlIGxvY2F0aW9uIHdpbGwgYmUgcmVmZXJlbmNlcyBhcyAoc291cmNlIGRpcikKLQotMi4gIERlbGV0ZSBjOlx1c3IgaWYgaXQgZXhpc3RzIGFuZCByZW5hbWUgTmV0LVNOTVAuZGxsIGluIHlvdXIgJXdpbmRpciUgaWYgeW91IAotICAgIGhhdmUgaXQgYWxyZWFkeSAodG8gZW5zdXJlIFBlcmwgdGVzdHMgYXJlIHVzaW5nIHRoZSBjb21waWxlZCBETEwpCi0KLTMuICBBcHBseSBhbnkgcmVxdWlyZWQgcGF0Y2hlcwotCi00LiAgUmVtb3ZlIHRoZSBleGFtcGxlIE1JQiBmaWxlczogIAotCi0gICAgRWRpdCB3aW4zMlxuZXQtc25tcFxhZ2VudFxtaWJfbW9kdWxlX2NvbmZpZy5oIGFuZCBjaGFuZ2UgdGhlIGZvbGxvd2luZyBsaW5lczoKLQotICAgICAgI2RlZmluZSBVU0lOR19FWEFNUExFU19VQ0RERU1PUFVCTElDX01PRFVMRSAxCi0gICAgICAjZGVmaW5lIFVTSU5HX0VYQU1QTEVTX0VYQU1QTEVfTU9EVUxFIDEKLQotICAgIHRvOgotCi0gICAgICAjdW5kZWYgVVNJTkdfRVhBTVBMRVNfVUNEREVNT1BVQkxJQ19NT0RVTEUKLSAgICAgICN1bmRlZiBVU0lOR19FWEFNUExFU19FWEFNUExFX01PRFVMRQotCi01LiAgY2QgKHNvdXJjZSBkaXIpXHdpbjMyCi0KLTYuICBSdW4gYnVpbGQuYmF0Ci0KLTcuICBTZXQgdG8gdGhlIGZvbGxvd2luZzoKLQotICAgIE5ldC1TTk1QIGJ1aWxkIGFuZCBpbnN0YWxsIG9wdGlvbnMKLSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgCi0gICAgMS4gT3BlblNTTCBzdXBwb3J0OiAgICAgIAkJZGlzYWJsZWQKLSAgICAyLiBQbGF0Zm9ybSBTREsgc3VwcG9ydDogCQllbmFibGVkICAgICAgICAgKioqCi0gICAgCi0gICAgMy4gSW5zdGFsbCBwYXRoOiAgICAgICAgIAkJYzovdXNyCi0gICAgNC4gSW5zdGFsbCBhZnRlciBidWlsZDogIAkJZW5hYmxlZAotICAgIAotICAgIDUuIFBlcmwgbW9kdWxlczogICAgICAgICAJCWVuYWJsZWQgICAgICAgICAqKioKLSAgICA2LiBJbnN0YWxsIHBlcmwgbW9kdWxlczogCQlkaXNhYmxlZAotICAgIAotICAgIDcuIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAJCWVuYWJsZWQKLSAgICA4LiBEZWJ1ZyBtb2RlOiAgICAgICAgICAgCQlkaXNhYmxlZAotICAgIDkuIElQdjYgdHJhbnNwb3J0czogICAgICAJCWRpc2FibGVkCi0KLSAgICAxMC4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWMKLQotICAgIDExLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgCWVuYWJsZWQgICAgICAgICAqKioKLSAgICAKLSAgICBGLiAgRmluaXNoZWQgLSBzdGFydCBidWlsZAotICAgIFEuICBRdWl0IC0gYWJvcnQgYnVpbGQKLSAgICAKLSAgICBTZWxlY3Qgb3B0aW9uIHRvIHNldCAvIHRvZ2dsZToKLQotOC4gIEYgdG8gc3RhcnQgdGhlIGJ1aWxkIGFuZCB2ZXJpZnkgZXZlcnl0aGluZyB3YXMgYnVpbHQgb2sKLQotOS4gIERlbGV0ZSBhbnkgZ2VuZXJhdGVkIGNvbmZpZyBmaWxlcyBmcm9tIGM6XHVzclxzbm1wXHBlcnNpc3QKLQotUGFydCAyIC0gQ29tcGlsaW5nIHdpbkV4dERMTAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0xMC4gTW9kaWZ5IGZpbGVzIGFzIGV4cGxhaW5lZCBpbiBSRUFETUUud2luMzIgc2VjdGlvbiAnUnVubmluZyBOZXQtU05NUCBhcwotICAgIGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBNaWNyb3NvZnQgU05NUCBzZXJ2aWNlJyAtICdDb21waWxpbmcgTmV0LVNOTVAgd2l0aCAKLSAgICB0aGUgd2luRXh0RExMIGV4dGVuc2lvbiAoTVNWQyknLgotCi0xMS4gIFNldCB0byB0aGUgZm9sbG93aW5nOgotCi0gICAgTmV0LVNOTVAgYnVpbGQgYW5kIGluc3RhbGwgb3B0aW9ucwotICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAKLSAgICAxLiBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgCQlkaXNhYmxlZAotICAgIDIuIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAJCWVuYWJsZWQgICAgICAgICAqKioKLSAgICAKLSAgICAzLiBJbnN0YWxsIHBhdGg6ICAgICAgICAgCQljOi91c3IKLSAgICA0LiBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgCQlkaXNhYmxlZCAgICAgICAgKioqCi0gICAgCi0gICAgNS4gUGVybCBtb2R1bGVzOiAgICAgICAgIAkJZGlzYWJsZWQKLSAgICA2LiBJbnN0YWxsIHBlcmwgbW9kdWxlczogCQlkaXNhYmxlZAotICAgIAotICAgIDcuIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAJCWVuYWJsZWQKLSAgICA4LiBEZWJ1ZyBtb2RlOiAgICAgICAgICAgCQlkaXNhYmxlZAotICAgIDkuIElQdjYgdHJhbnNwb3J0czogICAgICAJCWRpc2FibGVkCi0KLSAgICAxMC4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWMKLQotICAgIDExLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgCWRpc2FibGVkCi0gICAgCi0gICAgRi4gIEZpbmlzaGVkIC0gc3RhcnQgYnVpbGQKLSAgICBRLiAgUXVpdCAtIGFib3J0IGJ1aWxkCi0gICAgCi0gICAgU2VsZWN0IG9wdGlvbiB0byBzZXQgLyB0b2dnbGU6Ci0KLTEyLiBGIHRvIHN0YXJ0IHRoZSBidWlsZCBhbmQgdmVyaWZ5IGV2ZXJ5dGhpbmcgd2FzIGJ1aWx0IG9rCi0KLTEzLiBDb3B5IHRoZSBuZXcgYmluYXJ5OgotCi0gICAgY29weSBiaW5ccmVsZWFzZVxzbm1wZC5leGUgYzpcdXNyXGJpblxzbm1wZC13aW5FeHRETEwuZXhlCi0KLTE0LiBUZXN0IGVhY2ggYmluYXJ5IGJ5IHJ1bm5pbmcgZWFjaCBvbmUgd2l0aCAtRHdpbkV4dERMTC4gIE1ha2Ugc3VyZSBvbmx5IHRoZQotICAgIHdpbkV4dERMTCB2ZXJzaW9uIGhhcyBkZWJ1ZyBvdXRwdXQuCi0KLQotUGFydCAzIC0gQ3JlYXRpbmcgdGhlIFBlcmwgcGFja2FnZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0xLiAgY2QgKHNvdXJjZSBkaXIpCi0gICAgY2QgcGVybAotCi0yLiAgbm1ha2UgcHBkCi0KLTMuICBPcGVuIGFuIE1TWVMgc2hlbGwgKHVubGVzcyB5b3UgaGF2ZSB0YXIuZXhlIGFuZCBnemlwLmV4ZSkKLQotNC4gIGNkIChzb3VyY2UgZGlyKQotICAgIGNkIHBlcmwKLQotNS4gIHRhciBjdmYgTmV0U05NUC50YXIgYmxpYjsgZ3ppcCAtLWJlc3QgTmV0U05NUC50YXIKLQotNi4gIE9wZW4gYSBXaW5kb3dzIGNvbW1hbmQgcHJvbXB0IChDTUQpIGFuZCBjZCAoc291cmNlIGRpcilccGVybAotCi03LiAgcmVuIEJ1bmRsZS1OZXRTTk1QLnBwZCBOZXRTTk1QLnBwZAotCi04LiAgTW9kaWZ5IE5ldFNOTVAucHBkIHRvIGxvb2sgbGlrZSB0aGUgZm9sbG93aW5nLiAgQ2hhbmdlIHRoZSAKLSAgICBWRVJTSU9OPSJ4LHgseCx4IiBsaW5lIHRvIHRoZSBjb3JyZWN0IHZhbHVlcy4gIERvIE5PVCBjaGFuZ2UgCi0gICAgKiBsaW5lcyBpbiB0aGUgb3JpZ2luYWwgZmlsZS4KLQotPFNPRlRQS0cgTkFNRT0iTmV0U05NUCIgVkVSU0lPTj0iNSwyLDAsMCI+Ci0gICAgPFRJVExFPk5ldC1TTk1QPC9USVRMRT4KLSAgICA8QUJTVFJBQ1Q+T2JqZWN0IE9yaWVudGVkIEludGVyZmFjZSB0byBOZXQtU05NUDwvQUJTVFJBQ1Q+Ci0gICAgPEFVVEhPUj48L0FVVEhPUj4KLSAgICA8SU1QTEVNRU5UQVRJT04+Ci0qICAgICAgICA8T1MgTkFNRT0iTVNXaW4zMiIgLz4KLSogICAgICAgIDxBUkNISVRFQ1RVUkUgTkFNRT0iTVNXaW4zMi14ODYtbXVsdGktdGhyZWFkLTUuOCIgLz4KLSAgICAgICAgPENPREVCQVNFIEhSRUY9Ing4Ni9OZXRTTk1QLnRhci5neiIgLz4KLSAgICA8L0lNUExFTUVOVEFUSU9OPgotPC9TT0ZUUEtHPgotCi05LiAgQ3JlYXRlIGJhc2UgZGlyZWN0b3JpZXM6Ci0KLSAgICBtZCAiYzpcdXNyXGRvY3MiCi0gICAgbWQgImM6XHVzclxwZXJsIgotICAgIG1kICJjOlx1c3JccGVybFx4ODYiCi0gICAgbWQgImM6XHVzclx0ZW1wIgotCi0xMC4gQ29weSBmaWxlczoKLQotICAgIGNkIChzb3VyY2UgZGlyKQotICAgIGNvcHkgQ09QWUlORyAiYzpcdXNyXGRvY3MiCi0gICAgY29weSB3aW4zMlxkaXN0XFJFQURNRS50eHQgImM6XHVzciIKLSAgICBjb3B5IHdpbjMyXGRpc3Rcc2NyaXB0c1xuZXQtc25tcC1wZXJsLXRlc3QucGwgImM6XHVzclxiaW4iCi0KLSAgICBjb3B5IHBlcmxcTmV0U05NUC5wcGQgImM6XHVzclxQZXJsIgotICAgIGNvcHkgcGVybFxOZXRTTk1QLnRhci5neiAiYzpcdXNyXFBlcmxceDg2IgotCi0xMS4gVXBkYXRlIHRoZSBCVUlMRCBJTkZPUk1BVElPTiBzZWN0aW9uIG9mIGM6XHVzclxSRUFETUUudHh0Ci0KLQotQ29tcGlsaW5nIEhUTUxIZWxwIGZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVRoaXMgc2VjdGlvbiBvdXRsaW5lcyB0aGUgc3RlcHMgcmVxdWlyZWQgdG8gYnVpbGQgYSBXaW5kb3dzIEhUTUwgSGVscCBmaWxlCi1iYXNlZCBvbiB0aGUgTmV0LVNOTVAgbWFuIHBhZ2VzLCBSRUFETUUgZmlsZXMsIFBlcmxkb2MgZG9jdW1lbnRhdGlvbiBldGMuCi0KLVJlcXVpcmVtZW50cwotLS0tLS0tLS0tLS0tCi0KLSAtTGludXggKG9yIHNpbWlsYXIpIHdpdGg6Ci0gICAtbWFuIChtYW4gcGFnZSB2aWV3ZXIpCi0gICAtdGlkeSAoSFRNTCB0aWR5IC0gaHR0cDovL3RpZHkuc291cmNlZm9yZ2UubmV0KQotICAgLVBlcmwKLSAgIC1wZXJsZG9jCi0gICAtbWFuMmh0bWwzLjAuMS50YXIuZ3ogKGh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmVob29kL21hbjJodG1sMy4wLjEvKQotICAgIE5vdGU6ICBNb3N0IExpbnV4IGRpc3RyaWJ1dGlvbnMgY29tZSB3aXRoIG1hbjJodG1sIGFzIHBhcnQgb2YgdGhlIG1hbiBycG0KLSAgICAgICAgICAgcGFja2FnZSB3aGljaCBpcyBub3QgdGhlIHNhbWUgYXMgbWFuMmh0bWwgZnJvbSBtYW4yaHRtbDMuMC4xLnRhci5nei4KLSAgICAgICAgICAgQWxsIHRoYXQgaXMgbmVlZGVkIGZyb20gbWFuMmh0bWwzLjAuMS50YXIuZ3ogaXMgdGhlIG1hbjJodG1sIHNjcmlwdC4gIAotICAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgdG8gZG8gYSBjb21wbGV0ZSBpbnN0YWxsIChtYWtlL21ha2UgaW5zdGFsbCkgYnV0IHlvdQotICAgICAgICAgICBkbyBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0IGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5IGJ5IHNldHRpbmcgdGhlCi0gICAgICAgICAgIG1hbiBjb21tYW5kIGxpbmUgc3dpdGNoZXMgZXRjIGZvciB0aGUgT1MgZnJvbSBpbnNpZGUgb2YgdGhlIHNjcmlwdC4KLQotIC1XaW5kb3dzIHdpdGg6Ci0gICAtSFRNTCBIZWxwIFdvcmtzaG9wIChTZWFyY2ggbXNkbi5taWNyb3NvZnQuY29tIGZvciAnaHRtbCBoZWxwIHdvcmtzaG9wIGRvd25sb2FkJykKLQotCi1Db252ZXJ0IGRvY3VtZW50cyB0byBodG1sCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU5vdGU6ICBUaGUgZm9sbG93aW5nIHN0ZXBzIGFyZSBjb21wbGV0ZWQgdXNpbmcgTGludXguCi0KLU5vdGU6ICBBIHRlbXBvcmFyeSBsb2NhdGlvbiBvZiAvdG1wL25ldC1zbm1wIGlzIHVzZWQuCi0KLTEuICBFeHRyYWN0IE5ldC1TTk1QIHNvdXJjZSBhbmQgY2QgKHNvdXJjZSBkaXIpCi0KLTIuICBjZCAoc291cmNlIGRpcikKLQotMy4gIGNwIHBlcmwvU05NUC9SRUFETUUgUkVBRE1FLnBlcmwKLQotNC4gIFJlbW92ZSBvbGRlciBjb3BpZXMgb2YgY29udmVydGVkIGZpbGVzOgotCi0gICAgcm0gLVIgLWYgL3RtcC9uZXQtc25tcAotCi01LiAgQnVpbGQgTmV0LVNOTVAgbWFuIHBhZ2VzOiAKLQotICAgIC4vY29uZmlndXJlIC0tcHJlZml4PWM6L3VzcjsgbWFrZSBzZWRzY3JpcHQ7IGNkIG1hbjttYWtlOyBjZCAuLgotCi02LiAgSW5zdGFsbCBvbmx5IHRoZSBtYW4gZmlsZXMgdG8gL3RlbXAvbmV0LXNubXA6Ci0KLSAgICBjZCBtYW47IG1ha2UgaW5zdGFsbCBwcmVmaXg9L3RtcC9uZXQtc25tcDsgY2QgLi4KLQotNy4gIEdvIHRvIHRoZSBzY3JpcHRzIGZvbGRlciBhbmQgbWFrZSBzdXJlIGFsbCB0aGUgc2NyaXB0cyBhcmUgZXhlY3V0YWJsZToKLQotICAgIGNkIChzb3VyY2UgZGlyKQotICAgIGNkIHdpbjMyL2Rpc3Qvc2NyaXB0czsgY2htb2QgK3ggKgotCi04LiAgRWRpdCB0aGVzZSBmaWxlcyBhbmQgbWFrZSBzdXJlIHRoZSBwYXRocyBhcmUgY29ycmVjdCBpbiB0aGUgT1BUSU9OUyAKLSAgICBzZWN0aW9uLiAgQWxzbyBlbnN1cmUgdGhlIGxpc3Qgb2YgUkVBRE1FIGZpbGVzIGFuZCBQZXJsIG1vZHVsZXMgCi0gICAgYXJlIGNvcnJlY3QgaW4gcmVhZG1lMmh0bWwgYW5kIHBvZGRpcjJodG1sLgotCi0gICAgbWFuZGlyMmh0bWwKLSAgICByZWFkbWUyaHRtbAotICAgIHBvZGRpcjJodG1sCi0KLSAgICBOb3RlOiAgbWFuZGlyMmh0bWwgd2lsbCBwcm9jZXNzIEFMTCBtYW4gcGFnZXMgaW4gYzpcdGVtcFxuZXQtc25tcCB3aGlsZQotICAgICAgICAgICByZWFkbWUyaHRtbCBhbmQgcG9kZGlyMmh0bWwgd2lsbCBvbmx5IHByb2Nlc3MgZmlsZXMgbGlzdGVkIGluIHRoZQotICAgICAgICAgICBzY3JpcHQuICBJZiBuZXcgbWFuIHBhZ2VzIGFyZSBhZGRlZCBvciByZW1vdmVkLCB0aGUgVGFibGUgb2YgCi0gICAgICAgICAgIENvbnRlbnRzICh0b2MuaGhjKSBhbmQgcHJvamVjdCBmaWxlIChOZXQtU05NUC5oaHApIG5lZWQgdG8gYmUgCi0gICAgICAgICAgIHVwZGF0ZWQgYnkgaGFuZC4KLQotOS4gIFJ1biBlYWNoIHNjcmlwdCB0byBnZW5lcmF0ZSB0aGUgLmh0bWwgZmlsZXM6Ci0KLSAgICAuL21hbmRpcjJodG1sOyAuL3JlYWRtZTJodG1sOyAuL3BvZGRpcjJodG1sCi0KLSAgICBOb3RlOiAgVGhlcmUgd2lsbCBiZSBtYW55IHdhcm5pbmdzIGZyb20gdGlkeSB3aGljaCBjYW4gYmUgaWdub3JlZC4KLQotMTAuIFZlcmlmeSBlYWNoIGNvbnZlcnRlZCBmaWxlIHRvIGVuc3VyZSBhbGwgdGhlIGxpbmtzIGFyZSBjb3JyZWN0LiAgVGhlIGZpbGVzCi0gICAgYXJlIGxvY2F0ZWQgaW4gL3RtcC9uZXQtc25tcC9odG1sIGJ5IGRlZmF1bHQuICBJbiBzb21lIGluc3RhbmNlcywgVVJMcyBtYXkgYmUgCi0gICAgc3BsaXQgYWNyb3NzIHR3byBsaW5lcyBzdWNoIGFzIHRoZSBWYXJpYWJsZXMgbGluayBhdCB0aGUgYm90dG9tIG9mIAotICAgIC90bXAvbmV0LXNubXAvaHRtbC9tYW44LXNubXB0cmFwZC44Lmh0bWwuCi0KLTExLiBJZiBuZXcgbWFuIHBhZ2VzIGFyZSBhZGRlZCBvciByZW1vdmVkLCB0aGUgVGFibGUgb2YgQ29udGVudHMgKE5ldC1TTk1QLmhoYykgYW5kCi0gICAgcHJvamVjdCBmaWxlIChOZXQtU05NUC5oaHApIG5lZWQgdG8gYmUgdXBkYXRlZCBieSBoYW5kLgotCi0xMi4gQ29udmVydCBFWEFNUExFLmNvbmYud2luMzIgdG8gaHRtbDoKLQotICAgIC4vdHh0Mmh0bWwgLi4vLi4vRVhBTVBMRS5jb25mLndpbjMyIHwgdGlkeSA+IC90bXAvbmV0LXNubXAvaHRtbC9FWEFNUExFLmNvbmYud2luMzIuaHRtbAotICAgIAotCi1CdWlsZCBOZXQtU05NUC5jaG0KLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Ob3RlOiAgVGhlIGZvbGxvd2luZyBzdGVwcyBhcmUgY29tcGxldGVkIHVzaW5nIFdpbmRvd3MuCi0KLU5vdGU6ICBBIHRlbXBvcmFyeSBsb2NhdGlvbiBvZiBjOlx0ZW1wXG5ldC1zbm1wIGlzIHVzZWQuCi0KLTEuICBUcmFuc2ZlciAvdG1wL25ldC1zbm1wL2h0bWwgZnJvbSBMaW51eCB0byBjOlx0ZW1wXG5ldC1zbm1wXGh0bWwKLQotMi4gIEdyYWIgdGhlIEZBUSBmcm9tIHRoZSB3ZWIgc2l0ZSwgc3RyaXAgb3V0IHRoZSBpbmNsdWRlcyBhbmQgc2F2ZSBhcwotICAgIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxGQVEuaHRtbCBhbmQgcnVuOgotCi0gICAgdGlkeSAtYXN4aHRtbCAtbSBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcRkFRLmh0bWwKLQotMy4gIEdyYWIgdGhlIERldmxvcGVyIEZBUSBmcm9tIHRoZSB3ZWIgc2l0ZSwgc3RyaXAgb3V0IHRoZSBpbmNsdWRlcyBhbmQgc2F2ZSBhcwotICAgIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxEZXZlbG9wZXJfRkFRLmh0bWwgYW5kIHJ1bjoKLQotICAgIHRpZHkgLWFzeGh0bWwgLW0gYzpcdGVtcFxuZXQtc25tcFxodG1sXERldmVsb3Blcl9GQVEuaHRtbAotCi00LiAgQ29weSB0aGUgZm9sbG93aW5nIGZpbGVzIHRvIGM6XHRlbXBcbmV0LXNubXBcaHRtbDoKLQotICAgIGNkIChzb3VyY2UgZGlyKQotICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcQ29uZmlndXJhdGlvbl9PdmVydmlldy5odG1sIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcCi0gICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxIZWxwX0NhdmVhdHMuaHRtbCIgYzpcdGVtcFxuZXQtc25tcFxodG1sXAotICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcSW50cm9kdWN0aW9uLmh0bWwiIGM6XHRlbXBcbmV0LXNubXBcaHRtbFwKLSAgICBjb3B5ICJ3aW4zMlxkaXN0XGh0bWxoZWxwXE5ldC1TTk1QLmhoYyIgYzpcdGVtcFxuZXQtc25tcFxodG1sXAotICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcTmV0LVNOTVAuaGhwIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcCi0gICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxuZXQtc25tcC00LjItODAwLmpwZyIgYzpcdGVtcFxuZXQtc25tcFxodG1sXAotICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcc25tcC5jb25mLndpbjMyLmh0bWwiIGM6XHRlbXBcbmV0LXNubXBcaHRtbFwKLSAgICBjb3B5ICJ3aW4zMlxkaXN0XGh0bWxoZWxwXHNubXBkLmNvbmYud2luMzIuaHRtbCIgYzpcdGVtcFxuZXQtc25tcFxodG1sXAotICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcc25tcHRyYXBkLmNvbmYud2luMzIuaHRtbCIgYzpcdGVtcFxuZXQtc25tcFxodG1sXAotCi01LiAgTmV3IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBtYXkgYmUgYXZhaWxhYmxlIGluIHRoZSBuZXcgcmVsZWFzZSBvZgotICAgIE5ldC1TTk1QLCBzbyB0aGUgKi5jb25mLndpbjMyLmh0bWwgZmlsZXMgc2hvdWxkIGJlIHVwZGF0ZWQuCi0KLSAgICBDcmVhdGUgYSB0ZXh0IGZpbGUgd2l0aCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Igc25tcGQgYW5kIAotICAgIHNubXB0cmFwZCB1c2luZzoKLQotICAgIGNkIHdpbjMyXGJpblxyZWxlYXNlIChmb2xkZXIgb2YgKldpbmRvd3MqIGNvbXBpbGVkIE5ldC1TTk1QKQotICAgIHNubXB0cmFwZCAtSCAyPiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcHRyYXBkLm9wdGlvbnMKLSAgICBzbm1wZCAtSCAyPiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcGQub3B0aW9ucwotCi0gICAgVXBkYXRlIHRoZXNlIGZpbGVzIHVzaW5nIGFuIEhUTUwgZWRpdG9yIChNb3ppbGxhIGV0Yyk6Ci0KLSAgICBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcC5jb25mLndpbjMyLmh0bWwKLSAgICBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcGQuY29uZi53aW4zMi5odG1sCi0gICAgYzpcdGVtcFxuZXQtc25tcFxodG1sXHNubXB0cmFwZC5jb25mLndpbjMyLmh0bWwKLSAKLSAgICBPbmx5IGFkZCB0aGUgcmVsZXZlbnQgc2VjdGlvbiB0byBlYWNoIGZpbGUgZnJvbSB0aGUgLm9wdGlvbnMgZmlsZXMKLSAgICBjcmVhdGVkIGFib3ZlLCBlbnN1cmUgdGhlIGZvbnQgaXMgc2V0IHRvIGZpeGVkIHdpZHRoLgotCi0gICAgVGlkeSBlYWNoIGZpbGUgdXNpbmcgdGlkeSB1bmRlciBXaW5kb3dzIChvciB0cmFuc2ZlciB0byBMaW51eCBhbmQgdGlkeQotICAgIHVzaW5nIExpbnV4KToKLQotICAgIHRpZHkgLWFzeGh0bWwgLW0gYzpcdGVtcFxuZXQtc25tcFxodG1sXHNubXB0cmFwZC5jb25mLndpbjMyLmh0bWwKLSAgICB0aWR5IC1hc3hodG1sIC1tIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxzbm1wZC5jb25mLndpbjMyLmh0bWwKLSAgICB0aWR5IC1hc3hodG1sIC1tIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxzbm1wLmNvbmYud2luMzIuaHRtbAotCi02LiAgRWRpdCBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcTmV0LVNOTVAuaGhwIGFuZCB1cGRhdGUgdGhlIHZlcnNpb24gZm9yIHRoZSAKLSAgICAnVGl0bGUnIHZhcmlhYmxlLgotCi03LiAgUnVuIEhUTUwgV29ya3Nob3AKLQotOC4gIE9wZW4gYzpcdGVtcFxuZXQtc25tcFxodG1sXE5ldC1TTk1QLmhocAotCi05LiAgQ2xpY2sgRmlsZSAtIENvbXBpbGUKLQotMTAuIFNlbGVjdCAnQzpcdGVtcFxuZXQtc25tcFxodG1sXE5ldC1TTk1QLmhocCcgYXMgdGhlIGZpbGVuYW1lCi0KLTExLiBDbGljayBDb21waWxlCi0KLTEyLiBZb3Ugc2hvdWxkIG5vdyBoYXZlIGEgYzpcdGVtcFxuZXQtc25tcFxodG1sXE5ldC1TTk1QLmNobSBmaWxlLgotCi0xMy4gTGF1bmNoIHRoZSBmaWxlIGFuZCBlbnN1cmUgZXZlcnkgY29udGVudCBpdGVtIGRpc3BsYXlzIHRoZSBjb3JyZWN0IHBhZ2UuCi0KLQotQ29tYmluaW5nIHRoZSBiaW5hcmllcyBhbmQgSFRNTEhlbHAgZmlsZXMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLTEuICBDb3B5IHRoZSBIVE1MIEhlbHAgZmlsZSB0byBjOlx1c3JcZG9jczoKLQotICAgIGNvcHkgYzpcdGVtcFxOZXQtU05NUFxodG1sXE5ldC1TTk1QLmNobSBjOlx1c3JcZG9jc1wKLQotCi1CdWxkaW5nIGEgTnVsbFNvZnQgaW5zdGFsbGVyIHBhY2thZ2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZXF1aXJlbWVudHMKLS0tLS0tLS0tLS0tLQotCi0gLVdpbmRvd3MKLSAtTnVsbHNvZnQgU2NyaXB0YWJsZSBJbnN0YWxsIFN5c3RlbSAyLjAgLSBodHRwOi8vbnNpcy5zb3VyY2Vmb3JnZS5uZXQvaG9tZS8KLQotMS4gIENvbXBsZXRlIHRoZSB0aHJlZSBzZWN0aW9ucyBhYm92ZTogICdDb21waWxpbmcgYmluYXJpZXMnLCAnQ29tcGlsaW5nIAotICAgIEhUTUxIZWxwIGZpbGUnIGFuZCAnQ29tYmluaW5nIHRoZSBiaW5hcmllcyBhbmQgSFRNTEhlbHAgZmlsZXMnLiAgTmV0LVNOTVAKLSAgICBzaG91bGQgYmUgbG9jYXRlZCBpbiBjOlx1c3IuCi0KLTIuICBDb3B5IHRoZSBmb2xsb3dpbmcgZmlsZXMgdG8gYzpcdXNyOgotCi0gICAgY2QgKHNvdXJjZSBkaXIpCi0gICAgY29weSB3aW4zMlxkaXN0XGluc3RhbGxlclxTZXRFblZhci5uc2kgYzpcdXNyXAotICAgIGNvcHkgd2luMzJcZGlzdFxpbnN0YWxsZXJcbmV0LXNubXAubnNpIGM6XHVzclwKLSAgICBjb3B5IHdpbjMyXGRpc3RcaW5zdGFsbGVyXEFkZDJQYXRoLm5zaSBjOlx1c3JcCi0gICAgY29weSB3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC1oZWFkZXIxLmJtcCBjOlx1c3JcCi0KLTMuICBDcmVhdGUgdGhlIGZvbGxvd2luZyBlbXB0eSBmaWxlczoKLQotICAgIGVjaG8gLiA+IGM6XHVzclxyZWdpc3RlcmFnZW50LmJhdAotICAgIGVjaG8gLiA+IGM6XHVzclx1bnJlZ2lzdGVyYWdlbnQuYmF0Ci0gICAgZWNobyAuID4gYzpcdXNyXHJlZ2lzdGVydHJhcGQuYmF0Ci0gICAgZWNobyAuID4gYzpcdXNyXHVucmVnaXN0ZXJ0cmFwZC5iYXQKLSAgICBlY2hvIC4gPiBjOlx1c3JcZXRjXHNubXBcc25tcC5jb25mCi0KLTQuICBFZGl0IHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGluIGM6XHVzclxuZXQtc25tcC5uc2k6Ci0KLSAgICBQUk9EVUNUX01BSl9WRVJTSU9OCi0gICAgUFJPRFVDVF9NSU5fVkVSU0lPTgotICAgIFBST0RVQ1RfUkVWSVNJT04KLSAgICBQUk9EVUNUX0VYRV9WRVJTSU9OCi0KLSAgICBGb3IgZXhhbXBsZSwgZm9yIDUuMS4yOgotCi0gICAgUFJPRFVDVF9NQUpfVkVSU0lPTiAiNSIKLSAgICBQUk9EVUNUX01JTl9WRVJTSU9OICIxIgotICAgIFBST0RVQ1RfUkVWSVNJT04gIjIiCi0gICAgUFJPRFVDVF9FWEVfVkVSU0lPTiAiMSIKLQotICAgIFRoZSBnZW5lcmF0ZWQgZmlsZW5hbWUgd291bGQgYmU6IG5ldC1zbm1wLTUuMS4yLTEud2luMzIuZXhlCi0KLSAgICBQUk9EVUNUX0VYRV9WRVJTSU9OIGlzIHVzdWFsbHkgMSB1bmxlc3MgdGhlIGJpbmFyeSBwYWNrYWdlIGlzIHJlLXJlbGVhc2VkCi0gICAgZHVlIHRvIHBhY2thZ2luZyBpc3N1ZXMuICBGb3IgcHJlIHJlbGVhc2VzLCBpbmNsdWRlIHRoZSBwcmUtcmVsZWFzZSB2ZXJzaW9uIAotICAgIGluIFBST0RVQ1RfUkVWSVNJT04uICAgRm9yIGV4YW1wbGUsIGZvciA1LjEuMiBwcmUyIHVzZToKLQotICAgIFBST0RVQ1RfTUFKX1ZFUlNJT04gIjUiCi0gICAgUFJPRFVDVF9NSU5fVkVSU0lPTiAiMSIKLSAgICBQUk9EVUNUX1JFVklTSU9OICIyLnByZTIiCi0gICAgUFJPRFVDVF9FWEVfVkVSU0lPTiAiMSIKLQotICAgIFRoaXMgd2lsbCBlbnN1cmUgdGhlIHZlcnNpb24gbnVtYmVyIGlzIHZpc2libGUgZHVyaW5nIGluc3RhbGxhdGlvbi4KLQotICAgIFRoZSBnZW5lcmF0ZWQgZmlsZW5hbWUgd291bGQgYmU6IG5ldC1zbm1wLTUuMS4yLnByZTItMS53aW4zMi5leGUKLQotNS4gIExhdW5jaCB0aGUgJ051bGxzb2Z0IEluc3RhbGwgU3lzdGVtIChOU0lTIDIuMCknCi0KLTYuICBTZWxlY3QgJ01ha2VOU0lTVyAoY29tcGlsZXIgaW50ZXJmYWNlKScKLQotNy4gIENsaWNrIEZpbGUgLSBMb2FkIFNjcmlwdAotCi04LiAgU2VsZWN0IGM6XHVzclxuZXQtc25tcC5uc2kKLQotOS4gIFlvdSBzaG91bGQgbm93IGhhdmUgYSBjOlx1c3JcTmV0LVNOTVAteC54LngteC5leGUgYmluYXJ5IGluc3RhbGxlciAKLSAgICBwYWNrYWdlCi0KLTEwLiBUZXN0IHRoZSBwYWNrYWdlCi0KLTExLiBDb21wYXJlIHRoZSBkaXJlY3RvcnkgY29udGVudHMgb2YgdGhlIGNvbXBpbGVkIGZvbGRlciB3aXRoIHRoZSBpbnN0YWxsZWQKLSAgICBmb2xkZXIgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBtaXNzaW5nIE1JQiBmaWxlcyBldGMuICBNb2RpZnkgbmV0LXNubXAubnNpCi0gICAgYW5kIHJlYnVpbGQgaWYgcmVxdWlyZWQuCi0KLTEyLiBDcmVhdGUgYSAuemlwIGZpbGUgb2YgYzpcdXNyIGZvciBhcmNoaXZlIHB1cnBvc2VzLgotCi0KLUJ1bGRpbmcgYW4gT3BlblNTTCB2ZXJzaW9uCi09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZXF1aXJlbWVudHMKLS0tLS0tLS0tLS0tLQotCi0gLU9wZW5TU0wgYmluYXJ5IGZyb20gaHR0cDovL3d3dy5zbHByb3dlYi5jb20vcHJvZHVjdHMvV2luMzJPcGVuU1NMLmh0bWwKLQotMS4gIEluc3RhbGwgdGhlIE9wZW5TU0wgYmluYXJ5LCBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMgYXMgZXhwbGFpbmVkIGluIAotICAgICdVc2luZyBhIHByZS1jb21waWxlZCB2ZXJzaW9uJyBvZiB0aGUgJ01pY3Jvc29mdCBWaXN1YWwgQysrIC0gQnVpbGRpbmcgd2l0aCAKLSAgICBPcGVuU1NMJyBzZWN0aW9uIG9mIFJFQURNRS53aW4zMi4KLQotMi4gIE1vdmUgYzpcdXNyIGM6XHVzci50ZW1wCi0KLTMuICBSZS1idWlsZCB0aGUgYmluYXJ5IGJ5IGZvbGxvd2luZyB0aGUgc3RlcHMgaW4gdGhlIHNlY3Rpb24gJ0J1aWxkaW5nIHRoZSAKLSAgICBtYWluIGJpbmFyaWVzJyBleGNlcHQgZW5hYmxlIE9wZW5TU0wuICBCZSBzdXJlIHRvIHVuZG8gdGhlIHdpbkV4dERMTCAKLSAgICBjaGFuZ2VzIGJlZm9yZSBzdGFydGluZyBieSBjb3B5aW5nIGEgZnJlc2ggbmV0LXNubXAtY29uZmlnLmguaW4gYW5kIAotICAgIG5ldHNubXBtaWJzc2RrLmRzcC4KLQotNC4gIENvcHkgY29udGVudHMgb2YgYzpcdXNyIHRvIGM6XHVzci50ZW1wCi0KLTUuICBEZWxldGUgYzpcdXNyCi0KLTYuICBNb3ZlIGM6XHVzci50ZW1wIGM6XHVzcgotCi03LiAgVXBkYXRlIHRoZSBCVUlMRCBJTkZPUk1BVElPTiBzZWN0aW9uIG9mIGM6XHVzclxSRUFETUUudHh0IHRvIGluY2x1ZGUgdGhlIFNTTCAKLSAgICBpbmZvIGFuZCB0aGUgZmlsZW5hbWUuCi0KLTguICBVcGRhdGUgdGhlIHZlcnNpb24gc3RhbXAgaW4gYzpcdXNyXG5ldC1zbm1wLm5zaSB0byBpbmNsdWRlIC1zc2wuICBFeGFtcGxlOgotCi0gICAgRm9yIGV4YW1wbGUsIGZvciA1LjMuMDoKLQotICAgIFBST0RVQ1RfTUFKX1ZFUlNJT04gIjUiCi0gICAgUFJPRFVDVF9NSU5fVkVSU0lPTiAiMyIKLSAgICBQUk9EVUNUX1JFVklTSU9OICIwLXNzbCIKLSAgICBQUk9EVUNUX0VYRV9WRVJTSU9OICIxIgotCi0gICAgVGhlIGdlbmVyYXRlZCBmaWxlbmFtZSB3b3VsZCBiZTogbmV0LXNubXAtNS4zLjAtc3NsLTEud2luMzIuZXhlCi0KLTkuICBJbiBjOlx1c3JcbmV0LXNubXAubnNpLCBjaGFuZ2U6Ci0KLSAgICAhZGVmaW5lIE9QRU5TU0xfUkVRVUlSRUQgIjAiCi0KLSAgICB0bwotCi0gICAgIWRlZmluZSBPUEVOU1NMX1JFUVVJUkVEICIxIgotCi0xMC4gTGF1bmNoIHRoZSAnTnVsbHNvZnQgSW5zdGFsbCBTeXN0ZW0gKE5TSVMgMi4wKScKLQotMTEuIFNlbGVjdCAnTWFrZU5TSVNXIChjb21waWxlciBpbnRlcmZhY2UpJwotCi0xMi4gQ2xpY2sgRmlsZSAtIExvYWQgU2NyaXB0Ci0KLTEzLiBTZWxlY3QgYzpcdXNyXG5ldC1zbm1wLm5zaQotCi0xNC4gWW91IHNob3VsZCBub3cgaGF2ZSBhIGM6XHVzclxOZXQtU05NUC14LngueC14LmV4ZSBiaW5hcnkgaW5zdGFsbGVyIAotICAgIHBhY2thZ2UKLQotMTUuIFRlc3QgdGhlIHBhY2thZ2UKLQotMTYuIENvbXBhcmUgdGhlIGRpcmVjdG9yeSBjb250ZW50cyBvZiB0aGUgY29tcGlsZWQgZm9sZGVyIHdpdGggdGhlIGluc3RhbGxlZAotICAgIGZvbGRlciB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG1pc3NpbmcgTUlCIGZpbGVzIGV0Yy4gIE1vZGlmeSBuZXQtc25tcC5uc2kKLSAgICBhbmQgcmVidWlsZCBpZiByZXF1aXJlZC4KLQotMTcuIENyZWF0ZSBhIC56aXAgZmlsZSBvZiBjOlx1c3IgZm9yIGFyY2hpdmUgcHVycG9zZXMuCi0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqIFJFQURNRS5idWlsZC53aW4zMg0KKyoNCisqIEF1dGhvcnM6IEFsZXggQnVyZ2VyIDxhbGV4X2JAdXNlcnMuc291cmNlZm9yZ2UubmV0Pg0KKyogICAgICAgICAgDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKw0KK0ludHJvZHVjdGlvbg0KKz09PT09PT09PT09PQ0KKw0KK1RoaXMgUkVBRE1FIG91dGxpbmVzIHRoZSBzdGVwcyByZXF1aXJlZCB0byBjcmVhdGUgYSBiaW5hcnkgcmVsZWFzZSBmb3INCitXaW5kb3dzIHVzaW5nIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIGFuZCB0aGUgTnVsbFNvZnQgaW5zdGFsbGVyLg0KKw0KK1RoZXJlIGFyZSBmb3VyIHNlY3Rpb25zOg0KKw0KKyAgQ29tcGlsaW5nIGJpbmFyaWVzDQorDQorICBDb21waWxpbmcgSFRNTEhlbHAgZmlsZQ0KKw0KKyAgQ29tYmluaW5nIHRoZSBiaW5hcmllcyBhbmQgSFRNTEhlbHAgZmlsZXMNCisNCisgIEJ1bGRpbmcgYSBOdWxsU29mdCBpbnN0YWxsZXIgcGFja2FnZQ0KKw0KKyAgQnVsZGluZyBhbiBPcGVuU1NMIHZlcnNpb24NCisNCisNCitDb21waWxpbmcgYmluYXJpZXMNCis9PT09PT09PT09PT09PT09PT0NCisNCitSZXF1aXJlbWVudHMNCistLS0tLS0tLS0tLS0NCisNCisgLVdpbmRvd3MgTlQvMjAwMC9YUA0KKyAtTVNWQysrIDYuMCBTUDUNCisgLUFjdGl2ZVBlcmwgNS44LjIgYnVpbGQgODA4DQorIC1nbnVfcmVnZXguZXhlICgwLjEyKSAtIGh0dHA6Ly9wZW9wbGUuZGVscGhpZm9ydW1zLmNvbS9namMvZ251X3JlZ2V4Lmh0bWwNCisgLVBsYXRmb3JtIFNESw0KKyAtTVNZUyAvIE1pbkdXIC1vci0gdGFyLmV4ZSBhbmQgZ3ppcC5leGUNCisgLXdpbjMyL2Rpc3QgZm9sZGVyIGZyb20gTUFJTiBpbiBDVlMNCisNCisNCitCdWlsZGluZyB0aGUgbWFpbiBiaW5hcmllcw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorTm90ZTogIEFsbCBzaGVsbCBzdGVwcyBhcmUgdXNpbmcgdGhlIFdpbmRvdyBDTUQgcHJvbXB0IHVubGVzcyBvdGhlcndpc2Ugc3RhdGVkLg0KKw0KK1BhcnQgMQ0KKy0tLS0tLQ0KKw0KKzEuICBFeHRyYWN0IHNvdXJjZS4gIFRoZSBsb2NhdGlvbiB3aWxsIGJlIHJlZmVyZW5jZWQgYXMgKHNvdXJjZSBkaXIpDQorDQorMi4gIERlbGV0ZSBjOlx1c3IgaWYgaXQgZXhpc3RzIGFuZCByZW5hbWUgTmV0LVNOTVAuZGxsIGluIHlvdXIgJXdpbmRpciUgaWYgeW91IA0KKyAgICBoYXZlIGl0IGFscmVhZHkgKHRvIGVuc3VyZSBQZXJsIHRlc3RzIGFyZSB1c2luZyB0aGUgY29tcGlsZWQgRExMKQ0KKw0KKzMuICBBcHBseSBhbnkgcmVxdWlyZWQgcGF0Y2hlcw0KKw0KKzQuICBSZW1vdmUgdGhlIGV4YW1wbGUgTUlCIGZpbGVzOiAgDQorDQorICAgIEVkaXQgd2luMzJcbmV0LXNubXBcYWdlbnRcbWliX21vZHVsZV9jb25maWcuaCBhbmQgY2hhbmdlIHRoZSBmb2xsb3dpbmcgbGluZXM6DQorDQorICAgICAgI2RlZmluZSBVU0lOR19FWEFNUExFU19VQ0RERU1PUFVCTElDX01PRFVMRSAxDQorICAgICAgI2RlZmluZSBVU0lOR19FWEFNUExFU19FWEFNUExFX01PRFVMRSAxDQorDQorICAgIHRvOg0KKw0KKyAgICAgICN1bmRlZiBVU0lOR19FWEFNUExFU19VQ0RERU1PUFVCTElDX01PRFVMRQ0KKyAgICAgICN1bmRlZiBVU0lOR19FWEFNUExFU19FWEFNUExFX01PRFVMRQ0KKw0KKzUuICBjZCAoc291cmNlIGRpcilcd2luMzINCisNCis2LiAgUnVuIGJ1aWxkLmJhdA0KKw0KKzcuICBTZXQgdG8gdGhlIGZvbGxvd2luZzoNCisNCisgICAgTmV0LVNOTVAgYnVpbGQgYW5kIGluc3RhbGwgb3B0aW9ucw0KKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorICAgIA0KKyAgICAxLiAgT3BlblNTTCBzdXBwb3J0OiAgICAgIAkJZGlzYWJsZWQNCisgICAgMi4gIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAJCWVuYWJsZWQgICAgICAgICAqKioNCisgICAgDQorICAgIDMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgCQljOi91c3INCisgICAgNC4gIEluc3RhbGwgYWZ0ZXIgYnVpbGQ6ICAJCWVuYWJsZWQNCisgICAgDQorICAgIDUuICBQZXJsIG1vZHVsZXM6ICAgICAgICAgCQllbmFibGVkICAgICAgICAgKioqDQorICAgIDYuICBJbnN0YWxsIHBlcmwgbW9kdWxlczogCQlkaXNhYmxlZA0KKyAgICANCisgICAgNy4gIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAJCWVuYWJsZWQNCisgICAgOC4gIERlYnVnIG1vZGU6ICAgICAgICAgICAJCWRpc2FibGVkDQorDQorICAgIDkuICBJUHY2IHRyYW5zcG9ydHM6ICAgICAgCQlkaXNhYmxlZA0KKyAgICAxMC4gd2luRXh0RExMIGFnZW50IChyZXF1aXJlcyBTREspOiBkaXNhYmxlZA0KKw0KKyAgICAxMS4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljCQkqKioNCisNCisgICAgMTIuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAJZW5hYmxlZCAgICAgICAgICoqKg0KKyAgICANCisgICAgRi4gIEZpbmlzaGVkIC0gc3RhcnQgYnVpbGQNCisgICAgUS4gIFF1aXQgLSBhYm9ydCBidWlsZA0KKyAgICANCisgICAgU2VsZWN0IG9wdGlvbiB0byBzZXQgLyB0b2dnbGU6DQorDQorOC4gIEYgdG8gc3RhcnQgdGhlIGJ1aWxkIGFuZCB2ZXJpZnkgZXZlcnl0aGluZyB3YXMgYnVpbHQgb2sNCisNCis5LiAgRGVsZXRlIGFueSBnZW5lcmF0ZWQgY29uZmlnIGZpbGVzIGZyb20gYzpcdXNyXHNubXBccGVyc2lzdA0KKw0KK1BhcnQgMiAtIENvbXBpbGluZyB3aW5FeHRETEwNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorMTAuIFJ1biBidWlsZC5iYXQgYW5kIHNldCB0byB0aGUgZm9sbG93aW5nOg0KKw0KKyAgICBOZXQtU05NUCBidWlsZCBhbmQgaW5zdGFsbCBvcHRpb25zDQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgICAgDQorICAgIDEuIE9wZW5TU0wgc3VwcG9ydDogICAgICAJCWRpc2FibGVkDQorICAgIDIuIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAJCWVuYWJsZWQgICAgICAgICAqKioNCisgICAgDQorICAgIDMuIEluc3RhbGwgcGF0aDogICAgICAgICAJCWM6L3Vzcg0KKyAgICA0LiBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgCQlkaXNhYmxlZCAgICAgICAgKioqDQorICAgIA0KKyAgICA1LiBQZXJsIG1vZHVsZXM6ICAgICAgICAgCQlkaXNhYmxlZA0KKyAgICA2LiBJbnN0YWxsIHBlcmwgbW9kdWxlczogCQlkaXNhYmxlZA0KKyAgICANCisgICAgNy4gUXVpZXQgYnVpbGQgKGxvZ2dlZCk6IAkJZW5hYmxlZA0KKyAgICA4LiBEZWJ1ZyBtb2RlOiAgICAgICAgICAgCQlkaXNhYmxlZA0KKw0KKyAgICA5LiBJUHY2IHRyYW5zcG9ydHM6ICAgICAgCQlkaXNhYmxlZA0KKyAgICAxMC4gd2luRXh0RExMIGFnZW50IChyZXF1aXJlcyBTREspOiBlbmFibGVkICAgICAgICAgKioqDQorDQorICAgIDExLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWMJCSoqKg0KKw0KKyAgICAxMi4gSW5zdGFsbCBkZXZlbG9wbWVudCBmaWxlcyAgIAlkaXNhYmxlZA0KKyAgICANCisgICAgRi4gIEZpbmlzaGVkIC0gc3RhcnQgYnVpbGQNCisgICAgUS4gIFF1aXQgLSBhYm9ydCBidWlsZA0KKyAgICANCisgICAgU2VsZWN0IG9wdGlvbiB0byBzZXQgLyB0b2dnbGU6DQorDQorMTEuIEYgdG8gc3RhcnQgdGhlIGJ1aWxkIGFuZCB2ZXJpZnkgZXZlcnl0aGluZyB3YXMgYnVpbHQgb2sNCisNCisxMi4gQ29weSB0aGUgbmV3IGJpbmFyeToNCisNCisgICAgY29weSBiaW5ccmVsZWFzZVxzbm1wZC5leGUgYzpcdXNyXGJpblxzbm1wZC13aW5FeHRETEwuZXhlDQorDQorMTMuIFRlc3QgZWFjaCBiaW5hcnkgYnkgcnVubmluZyBlYWNoIG9uZSB3aXRoIC1Ed2luRXh0RExMLiAgTWFrZSBzdXJlIG9ubHkgdGhlDQorICAgIHdpbkV4dERMTCB2ZXJzaW9uIGhhcyBkZWJ1ZyBvdXRwdXQuDQorDQorMTQuIERlbGV0ZSBhbnkgZ2VuZXJhdGVkIGNvbmZpZyBmaWxlcyBmcm9tIGM6XHVzclxzbm1wXHBlcnNpc3QNCisNCisNCitQYXJ0IDMgLSBDcmVhdGluZyB0aGUgUGVybCBwYWNrYWdlDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKzEuICBjZCAoc291cmNlIGRpcikNCisgICAgY2QgcGVybA0KKw0KKzIuICBubWFrZSBwcGQNCisNCiszLiAgT3BlbiBhbiBNU1lTIHNoZWxsICh1bmxlc3MgeW91IGhhdmUgdGFyLmV4ZSBhbmQgZ3ppcC5leGUpDQorDQorNC4gIGNkIChzb3VyY2UgZGlyKQ0KKyAgICBjZCBwZXJsDQorDQorNS4gIHRhciBjdmYgTmV0U05NUC50YXIgYmxpYjsgZ3ppcCAtLWJlc3QgTmV0U05NUC50YXINCisNCis2LiAgT3BlbiBhIFdpbmRvd3MgY29tbWFuZCBwcm9tcHQgKENNRCkgYW5kIGNkIChzb3VyY2UgZGlyKVxwZXJsDQorDQorNy4gIHJlbiBCdW5kbGUtTmV0U05NUC5wcGQgTmV0U05NUC5wcGQNCisNCis4LiAgTW9kaWZ5IE5ldFNOTVAucHBkIHRvIGxvb2sgbGlrZSB0aGUgZm9sbG93aW5nLiAgQ2hhbmdlIHRoZSANCisgICAgVkVSU0lPTj0ieCx4LHgseCIgbGluZSB0byB0aGUgY29ycmVjdCB2YWx1ZXMuICBEbyBOT1QgY2hhbmdlIA0KKyAgICAqIGxpbmVzIGluIHRoZSBvcmlnaW5hbCBmaWxlLg0KKw0KKzxTT0ZUUEtHIE5BTUU9Ik5ldFNOTVAiIFZFUlNJT049IjUsNCwxLDAiPg0KKyAgICA8VElUTEU+TmV0LVNOTVA8L1RJVExFPg0KKyAgICA8QUJTVFJBQ1Q+T2JqZWN0IE9yaWVudGVkIEludGVyZmFjZSB0byBOZXQtU05NUDwvQUJTVFJBQ1Q+DQorICAgIDxBVVRIT1I+PC9BVVRIT1I+DQorICAgIDxJTVBMRU1FTlRBVElPTj4NCisqICAgICAgICA8T1MgTkFNRT0iTVNXaW4zMiIgLz4NCisqICAgICAgICA8QVJDSElURUNUVVJFIE5BTUU9Ik1TV2luMzIteDg2LW11bHRpLXRocmVhZC01LjgiIC8+DQorICAgICAgICA8Q09ERUJBU0UgSFJFRj0ieDg2L05ldFNOTVAudGFyLmd6IiAvPg0KKyAgICA8L0lNUExFTUVOVEFUSU9OPg0KKzwvU09GVFBLRz4NCisNCis5LiAgQ29weSB0aGUgd2luMzJcZGlzdCBmb2xkZXIgZnJvbSB0cnVuayB0byB0aGUgd2luMzIgZm9sZGVyIG9mIHRoZSBleHRyYWN0ZWQgc291cmNlLg0KKw0KKzEwLiBDcmVhdGUgYmFzZSBkaXJlY3RvcmllczoNCisNCisgICAgbWQgImM6XHVzclxkb2NzIg0KKyAgICBtZCAiYzpcdXNyXHBlcmwiDQorICAgIG1kICJjOlx1c3JccGVybFx4ODYiDQorICAgIG1kICJjOlx1c3JcdGVtcCINCisNCisxMi4gQ29weSBmaWxlczoNCisNCisgICAgY2QgKHNvdXJjZSBkaXIpDQorICAgIGNvcHkgQ09QWUlORyAiYzpcdXNyXGRvY3MiDQorICAgIGNvcHkgd2luMzJcZGlzdFxSRUFETUUudHh0ICJjOlx1c3IiDQorICAgIGNvcHkgd2luMzJcZGlzdFxzY3JpcHRzXG5ldC1zbm1wLXBlcmwtdGVzdC5wbCAiYzpcdXNyXGJpbiINCisNCisgICAgY29weSBwZXJsXE5ldFNOTVAucHBkICJjOlx1c3JcUGVybCINCisgICAgY29weSBwZXJsXE5ldFNOTVAudGFyLmd6ICJjOlx1c3JcUGVybFx4ODYiDQorDQorMTIuIFVwZGF0ZSB0aGUgQlVJTEQgSU5GT1JNQVRJT04gc2VjdGlvbiBvZiBjOlx1c3JcUkVBRE1FLnR4dA0KKw0KKw0KK0NvbXBpbGluZyBIVE1MSGVscCBmaWxlDQorPT09PT09PT09PT09PT09PT09PT09PT0NCisNCitUaGlzIHNlY3Rpb24gb3V0bGluZXMgdGhlIHN0ZXBzIHJlcXVpcmVkIHRvIGJ1aWxkIGEgV2luZG93cyBIVE1MIEhlbHAgZmlsZQ0KK2Jhc2VkIG9uIHRoZSBOZXQtU05NUCBtYW4gcGFnZXMsIFJFQURNRSBmaWxlcywgUGVybGRvYyBkb2N1bWVudGF0aW9uIGV0Yy4NCisNCitSZXF1aXJlbWVudHMNCistLS0tLS0tLS0tLS0NCisNCisgLUxpbnV4IChvciBzaW1pbGFyKSB3aXRoOg0KKyAgIC1tYW4gKG1hbiBwYWdlIHZpZXdlcikNCisgICAtdGlkeSAoSFRNTCB0aWR5IC0gaHR0cDovL3RpZHkuc291cmNlZm9yZ2UubmV0KQ0KKyAgIC1QZXJsDQorICAgLXBlcmxkb2MNCisgICAtbWFuMmh0bWwzLjAuMS50YXIuZ3ogKGh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmVob29kL21hbjJodG1sMy4wLjEvKQ0KKyAgICBOb3RlOiAgTW9zdCBMaW51eCBkaXN0cmlidXRpb25zIGNvbWUgd2l0aCBtYW4yaHRtbCBhcyBwYXJ0IG9mIHRoZSBtYW4gcnBtDQorICAgICAgICAgICBwYWNrYWdlIHdoaWNoIGlzIG5vdCB0aGUgc2FtZSBhcyBtYW4yaHRtbCBmcm9tIG1hbjJodG1sMy4wLjEudGFyLmd6Lg0KKyAgICAgICAgICAgQWxsIHRoYXQgaXMgbmVlZGVkIGZyb20gbWFuMmh0bWwzLjAuMS50YXIuZ3ogaXMgdGhlIG1hbjJodG1sIHNjcmlwdC4gIA0KKyAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIGRvIGEgY29tcGxldGUgaW5zdGFsbCAobWFrZS9tYWtlIGluc3RhbGwpIGJ1dCB5b3UNCisgICAgICAgICAgIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHQgaXMgY29uZmlndXJlZCBjb3JyZWN0bHkgYnkgc2V0dGluZyB0aGUNCisgICAgICAgICAgIG1hbiBjb21tYW5kIGxpbmUgc3dpdGNoZXMgZXRjIGZvciB0aGUgT1MgZnJvbSBpbnNpZGUgb2YgdGhlIHNjcmlwdC4NCisNCisgLVdpbmRvd3Mgd2l0aDoNCisgICAtSFRNTCBIZWxwIFdvcmtzaG9wIChTZWFyY2ggbXNkbi5taWNyb3NvZnQuY29tIGZvciAnaHRtbCBoZWxwIHdvcmtzaG9wIGRvd25sb2FkJykNCisNCisNCitDb252ZXJ0IGRvY3VtZW50cyB0byBodG1sDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK05vdGU6ICBUaGUgZm9sbG93aW5nIHN0ZXBzIGFyZSBjb21wbGV0ZWQgdXNpbmcgTGludXguDQorDQorTm90ZTogIEEgdGVtcG9yYXJ5IGxvY2F0aW9uIG9mIC90bXAvbmV0LXNubXAgaXMgdXNlZC4NCisNCisxLiAgRXh0cmFjdCBOZXQtU05NUCBzb3VyY2UgYW5kIGNkIChzb3VyY2UgZGlyKQ0KKw0KKzIuICBjZCAoc291cmNlIGRpcikNCisNCiszLiAgY3AgcGVybC9TTk1QL1JFQURNRSBSRUFETUUucGVybA0KKw0KKzQuICBSZW1vdmUgb2xkZXIgY29waWVzIG9mIGNvbnZlcnRlZCBmaWxlczoNCisNCisgICAgcm0gLVIgLWYgL3RtcC9uZXQtc25tcA0KKw0KKzUuICBCdWlsZCBOZXQtU05NUCBtYW4gcGFnZXM6IA0KKw0KKyAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD1jOi91c3I7IG1ha2Ugc2Vkc2NyaXB0OyBjZCBtYW47bWFrZTsgY2QgLi4NCisNCis2LiAgSW5zdGFsbCBvbmx5IHRoZSBtYW4gZmlsZXMgdG8gL3RlbXAvbmV0LXNubXA6DQorDQorICAgIGNkIG1hbjsgbWFrZSBpbnN0YWxsIHByZWZpeD0vdG1wL25ldC1zbm1wOyBjZCAuLg0KKw0KKzcuICBHbyB0byB0aGUgc2NyaXB0cyBmb2xkZXIgYW5kIG1ha2Ugc3VyZSBhbGwgdGhlIHNjcmlwdHMgYXJlIGV4ZWN1dGFibGU6DQorDQorICAgIGNkIChzb3VyY2UgZGlyKQ0KKyAgICBjZCB3aW4zMi9kaXN0L3NjcmlwdHM7IGNobW9kICt4ICoNCisNCis4LiAgRWRpdCB0aGVzZSBmaWxlcyBhbmQgbWFrZSBzdXJlIHRoZSBwYXRocyBhcmUgY29ycmVjdCBpbiB0aGUgT1BUSU9OUyANCisgICAgc2VjdGlvbi4gIEFsc28gZW5zdXJlIHRoZSBsaXN0IG9mIFJFQURNRSBmaWxlcyBhbmQgUGVybCBtb2R1bGVzIA0KKyAgICBhcmUgY29ycmVjdCBpbiByZWFkbWUyaHRtbCBhbmQgcG9kZGlyMmh0bWwuDQorDQorICAgIG1hbmRpcjJodG1sDQorICAgIHJlYWRtZTJodG1sDQorICAgIHBvZGRpcjJodG1sDQorDQorICAgIE5vdGU6ICBtYW5kaXIyaHRtbCB3aWxsIHByb2Nlc3MgQUxMIG1hbiBwYWdlcyBpbiBjOlx0ZW1wXG5ldC1zbm1wIHdoaWxlDQorICAgICAgICAgICByZWFkbWUyaHRtbCBhbmQgcG9kZGlyMmh0bWwgd2lsbCBvbmx5IHByb2Nlc3MgZmlsZXMgbGlzdGVkIGluIHRoZQ0KKyAgICAgICAgICAgc2NyaXB0LiAgSWYgbmV3IG1hbiBwYWdlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCwgdGhlIFRhYmxlIG9mIA0KKyAgICAgICAgICAgQ29udGVudHMgKHRvYy5oaGMpIGFuZCBwcm9qZWN0IGZpbGUgKE5ldC1TTk1QLmhocCkgbmVlZCB0byBiZSANCisgICAgICAgICAgIHVwZGF0ZWQgYnkgaGFuZC4NCisNCis5LiAgUnVuIGVhY2ggc2NyaXB0IHRvIGdlbmVyYXRlIHRoZSAuaHRtbCBmaWxlczoNCisNCisgICAgLi9tYW5kaXIyaHRtbDsgLi9yZWFkbWUyaHRtbDsgLi9wb2RkaXIyaHRtbA0KKw0KKyAgICBOb3RlOiAgVGhlcmUgd2lsbCBiZSBtYW55IHdhcm5pbmdzIGZyb20gdGlkeSB3aGljaCBjYW4gYmUgaWdub3JlZC4NCisNCisxMC4gVmVyaWZ5IGVhY2ggY29udmVydGVkIGZpbGUgdG8gZW5zdXJlIGFsbCB0aGUgbGlua3MgYXJlIGNvcnJlY3QuICBUaGUgZmlsZXMNCisgICAgYXJlIGxvY2F0ZWQgaW4gL3RtcC9uZXQtc25tcC9odG1sIGJ5IGRlZmF1bHQuICBJbiBzb21lIGluc3RhbmNlcywgVVJMcyBtYXkgYmUgDQorICAgIHNwbGl0IGFjcm9zcyB0d28gbGluZXMgc3VjaCBhcyB0aGUgVmFyaWFibGVzIGxpbmsgYXQgdGhlIGJvdHRvbSBvZiANCisgICAgL3RtcC9uZXQtc25tcC9odG1sL21hbjgtc25tcHRyYXBkLjguaHRtbC4NCisNCisxMS4gSWYgbmV3IG1hbiBwYWdlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCwgdGhlIFRhYmxlIG9mIENvbnRlbnRzIChOZXQtU05NUC5oaGMpIGFuZA0KKyAgICBwcm9qZWN0IGZpbGUgKE5ldC1TTk1QLmhocCkgbmVlZCB0byBiZSB1cGRhdGVkIGJ5IGhhbmQuDQorDQorMTIuIENvbnZlcnQgRVhBTVBMRS5jb25mLndpbjMyIHRvIGh0bWw6DQorDQorICAgIC4vdHh0Mmh0bWwgLi4vLi4vRVhBTVBMRS5jb25mLndpbjMyIHwgdGlkeSA+IC90bXAvbmV0LXNubXAvaHRtbC9FWEFNUExFLmNvbmYud2luMzIuaHRtbA0KKyAgICANCisNCitCdWlsZCBOZXQtU05NUC5jaG0NCistLS0tLS0tLS0tLS0tLS0tLS0NCisNCitOb3RlOiAgVGhlIGZvbGxvd2luZyBzdGVwcyBhcmUgY29tcGxldGVkIHVzaW5nIFdpbmRvd3MuDQorDQorTm90ZTogIEEgdGVtcG9yYXJ5IGxvY2F0aW9uIG9mIGM6XHRlbXBcbmV0LXNubXAgaXMgdXNlZC4NCisNCisxLiAgVHJhbnNmZXIgL3RtcC9uZXQtc25tcC9odG1sIGZyb20gTGludXggdG8gYzpcdGVtcFxuZXQtc25tcFxodG1sDQorDQorMi4gIEdyYWIgdGhlIEZBUSBmcm9tIHRoZSB3ZWIgc2l0ZSwgc3RyaXAgb3V0IHRoZSBpbmNsdWRlcyBhbmQgc2F2ZSBhcw0KKyAgICBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcRkFRLmh0bWwgYW5kIHJ1bjoNCisNCisgICAgdGlkeSAtYXN4aHRtbCAtbSBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcRkFRLmh0bWwNCisNCiszLiAgR3JhYiB0aGUgRGV2bG9wZXIgRkFRIGZyb20gdGhlIHdlYiBzaXRlLCBzdHJpcCBvdXQgdGhlIGluY2x1ZGVzIGFuZCBzYXZlIGFzDQorICAgIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxEZXZlbG9wZXJfRkFRLmh0bWwgYW5kIHJ1bjoNCisNCisgICAgdGlkeSAtYXN4aHRtbCAtbSBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcRGV2ZWxvcGVyX0ZBUS5odG1sDQorDQorNC4gIENvcHkgdGhlIGZvbGxvd2luZyBmaWxlcyB0byBjOlx0ZW1wXG5ldC1zbm1wXGh0bWw6DQorDQorICAgIGNkIChzb3VyY2UgZGlyKQ0KKyAgICBjb3B5ICJ3aW4zMlxkaXN0XGh0bWxoZWxwXENvbmZpZ3VyYXRpb25fT3ZlcnZpZXcuaHRtbCIgYzpcdGVtcFxuZXQtc25tcFxodG1sXA0KKyAgICBjb3B5ICJ3aW4zMlxkaXN0XGh0bWxoZWxwXEhlbHBfQ2F2ZWF0cy5odG1sIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcDQorICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcSW50cm9kdWN0aW9uLmh0bWwiIGM6XHRlbXBcbmV0LXNubXBcaHRtbFwNCisgICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxOZXQtU05NUC5oaGMiIGM6XHRlbXBcbmV0LXNubXBcaHRtbFwNCisgICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxOZXQtU05NUC5oaHAiIGM6XHRlbXBcbmV0LXNubXBcaHRtbFwNCisgICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxuZXQtc25tcC00LjItODAwLmpwZyIgYzpcdGVtcFxuZXQtc25tcFxodG1sXA0KKyAgICBjb3B5ICJ3aW4zMlxkaXN0XGh0bWxoZWxwXHNubXAuY29uZi53aW4zMi5odG1sIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcDQorICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcc25tcGQuY29uZi53aW4zMi5odG1sIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcDQorICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcc25tcHRyYXBkLmNvbmYud2luMzIuaHRtbCIgYzpcdGVtcFxuZXQtc25tcFxodG1sXA0KKw0KKzUuICBOZXcgY29uZmlndXJhdGlvbiBvcHRpb25zIG1heSBiZSBhdmFpbGFibGUgaW4gdGhlIG5ldyByZWxlYXNlIG9mDQorICAgIE5ldC1TTk1QLCBzbyB0aGUgKi5jb25mLndpbjMyLmh0bWwgZmlsZXMgc2hvdWxkIGJlIHVwZGF0ZWQuDQorDQorICAgIENyZWF0ZSBhIHRleHQgZmlsZSB3aXRoIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBzbm1wZCBhbmQgDQorICAgIHNubXB0cmFwZCB1c2luZzoNCisNCisgICAgY2Qgd2luMzJcYmluXHJlbGVhc2UgKGZvbGRlciBvZiAqV2luZG93cyogY29tcGlsZWQgTmV0LVNOTVApDQorICAgIHNubXB0cmFwZCAtSCAyPiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcHRyYXBkLm9wdGlvbnMNCisgICAgc25tcGQgLUggMj4gYzpcdGVtcFxuZXQtc25tcFxodG1sXHNubXBkLm9wdGlvbnMNCisNCisgICAgVXBkYXRlIHRoZXNlIGZpbGVzIHVzaW5nIGFuIEhUTUwgZWRpdG9yIChNb3ppbGxhIGV0Yyk6DQorDQorICAgIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxzbm1wLmNvbmYud2luMzIuaHRtbA0KKyAgICBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcGQuY29uZi53aW4zMi5odG1sDQorICAgIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxzbm1wdHJhcGQuY29uZi53aW4zMi5odG1sDQorIA0KKyAgICBPbmx5IGFkZCB0aGUgcmVsZXZlbnQgc2VjdGlvbiB0byBlYWNoIGZpbGUgZnJvbSB0aGUgLm9wdGlvbnMgZmlsZXMNCisgICAgY3JlYXRlZCBhYm92ZSwgZW5zdXJlIHRoZSBmb250IGlzIHNldCB0byBmaXhlZCB3aWR0aC4NCisNCisgICAgVGlkeSBlYWNoIGZpbGUgdXNpbmcgdGlkeSB1bmRlciBXaW5kb3dzIChvciB0cmFuc2ZlciB0byBMaW51eCBhbmQgdGlkeQ0KKyAgICB1c2luZyBMaW51eCk6DQorDQorICAgIHRpZHkgLWFzeGh0bWwgLW0gYzpcdGVtcFxuZXQtc25tcFxodG1sXHNubXB0cmFwZC5jb25mLndpbjMyLmh0bWwNCisgICAgdGlkeSAtYXN4aHRtbCAtbSBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcGQuY29uZi53aW4zMi5odG1sDQorICAgIHRpZHkgLWFzeGh0bWwgLW0gYzpcdGVtcFxuZXQtc25tcFxodG1sXHNubXAuY29uZi53aW4zMi5odG1sDQorDQorNi4gIEVkaXQgYzpcdGVtcFxuZXQtc25tcFxodG1sXE5ldC1TTk1QLmhocCBhbmQgdXBkYXRlIHRoZSB2ZXJzaW9uIGZvciB0aGUgDQorICAgICdUaXRsZScgdmFyaWFibGUuDQorDQorNy4gIFJ1biBIVE1MIFdvcmtzaG9wDQorDQorOC4gIE9wZW4gYzpcdGVtcFxuZXQtc25tcFxodG1sXE5ldC1TTk1QLmhocA0KKw0KKzkuICBDbGljayBGaWxlIC0gQ29tcGlsZQ0KKw0KKzEwLiBTZWxlY3QgJ0M6XHRlbXBcbmV0LXNubXBcaHRtbFxOZXQtU05NUC5oaHAnIGFzIHRoZSBmaWxlbmFtZQ0KKw0KKzExLiBDbGljayBDb21waWxlDQorDQorMTIuIFlvdSBzaG91bGQgbm93IGhhdmUgYSBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcTmV0LVNOTVAuY2htIGZpbGUuDQorDQorMTMuIExhdW5jaCB0aGUgZmlsZSBhbmQgZW5zdXJlIGV2ZXJ5IGNvbnRlbnQgaXRlbSBkaXNwbGF5cyB0aGUgY29ycmVjdCBwYWdlLg0KKw0KKw0KK0NvbWJpbmluZyB0aGUgYmluYXJpZXMgYW5kIEhUTUxIZWxwIGZpbGVzDQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisNCisxLiAgQ29weSB0aGUgSFRNTCBIZWxwIGZpbGUgdG8gYzpcdXNyXGRvY3M6DQorDQorICAgIGNvcHkgYzpcdGVtcFxOZXQtU05NUFxodG1sXE5ldC1TTk1QLmNobSBjOlx1c3JcZG9jc1wNCisNCisNCitCdWxkaW5nIGEgTnVsbFNvZnQgaW5zdGFsbGVyIHBhY2thZ2UNCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisNCitSZXF1aXJlbWVudHMNCistLS0tLS0tLS0tLS0NCisNCisgLVdpbmRvd3MNCisgLU51bGxzb2Z0IFNjcmlwdGFibGUgSW5zdGFsbCBTeXN0ZW0gMi4wIC0gaHR0cDovL25zaXMuc291cmNlZm9yZ2UubmV0L2hvbWUvDQorDQorMS4gIENvbXBsZXRlIHRoZSB0aHJlZSBzZWN0aW9ucyBhYm92ZTogICdDb21waWxpbmcgYmluYXJpZXMnLCAnQ29tcGlsaW5nIA0KKyAgICBIVE1MSGVscCBmaWxlJyBhbmQgJ0NvbWJpbmluZyB0aGUgYmluYXJpZXMgYW5kIEhUTUxIZWxwIGZpbGVzJy4gIE5ldC1TTk1QDQorICAgIHNob3VsZCBiZSBsb2NhdGVkIGluIGM6XHVzci4NCisNCisyLiAgQ29weSB0aGUgZm9sbG93aW5nIGZpbGVzIHRvIGM6XHVzcjoNCisNCisgICAgY2QgKHNvdXJjZSBkaXIpDQorICAgIGNvcHkgd2luMzJcZGlzdFxpbnN0YWxsZXJcU2V0RW5WYXIubnNpIGM6XHVzclwNCisgICAgY29weSB3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC5uc2kgYzpcdXNyXA0KKyAgICBjb3B5IHdpbjMyXGRpc3RcaW5zdGFsbGVyXEFkZDJQYXRoLm5zaSBjOlx1c3JcDQorICAgIGNvcHkgd2luMzJcZGlzdFxpbnN0YWxsZXJcbmV0LXNubXAtaGVhZGVyMS5ibXAgYzpcdXNyXA0KKw0KKzMuICBDcmVhdGUgdGhlIGZvbGxvd2luZyBlbXB0eSBmaWxlczoNCisNCisgICAgZWNobyAuID4gYzpcdXNyXHJlZ2lzdGVyYWdlbnQuYmF0DQorICAgIGVjaG8gLiA+IGM6XHVzclx1bnJlZ2lzdGVyYWdlbnQuYmF0DQorICAgIGVjaG8gLiA+IGM6XHVzclxyZWdpc3RlcnRyYXBkLmJhdA0KKyAgICBlY2hvIC4gPiBjOlx1c3JcdW5yZWdpc3RlcnRyYXBkLmJhdA0KKyAgICBlY2hvIC4gPiBjOlx1c3JcZXRjXHNubXBcc25tcC5jb25mDQorDQorNC4gIEVkaXQgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaW4gYzpcdXNyXG5ldC1zbm1wLm5zaToNCisNCisgICAgUFJPRFVDVF9NQUpfVkVSU0lPTg0KKyAgICBQUk9EVUNUX01JTl9WRVJTSU9ODQorICAgIFBST0RVQ1RfUkVWSVNJT04NCisgICAgUFJPRFVDVF9FWEVfVkVSU0lPTg0KKw0KKyAgICBGb3IgZXhhbXBsZSwgZm9yIDUuMS4yOg0KKw0KKyAgICBQUk9EVUNUX01BSl9WRVJTSU9OICI1Ig0KKyAgICBQUk9EVUNUX01JTl9WRVJTSU9OICIxIg0KKyAgICBQUk9EVUNUX1JFVklTSU9OICIyIg0KKyAgICBQUk9EVUNUX0VYRV9WRVJTSU9OICIxIg0KKw0KKyAgICBUaGUgZ2VuZXJhdGVkIGZpbGVuYW1lIHdvdWxkIGJlOiBuZXQtc25tcC01LjEuMi0xLndpbjMyLmV4ZQ0KKw0KKyAgICBQUk9EVUNUX0VYRV9WRVJTSU9OIGlzIHVzdWFsbHkgMSB1bmxlc3MgdGhlIGJpbmFyeSBwYWNrYWdlIGlzIHJlLXJlbGVhc2VkDQorICAgIGR1ZSB0byBwYWNrYWdpbmcgaXNzdWVzLiAgRm9yIHByZSByZWxlYXNlcywgaW5jbHVkZSB0aGUgcHJlLXJlbGVhc2UgdmVyc2lvbiANCisgICAgaW4gUFJPRFVDVF9SRVZJU0lPTi4gICBGb3IgZXhhbXBsZSwgZm9yIDUuMS4yIHByZTIgdXNlOg0KKw0KKyAgICBQUk9EVUNUX01BSl9WRVJTSU9OICI1Ig0KKyAgICBQUk9EVUNUX01JTl9WRVJTSU9OICIxIg0KKyAgICBQUk9EVUNUX1JFVklTSU9OICIyLnByZTIiDQorICAgIFBST0RVQ1RfRVhFX1ZFUlNJT04gIjEiDQorDQorICAgIFRoaXMgd2lsbCBlbnN1cmUgdGhlIHZlcnNpb24gbnVtYmVyIGlzIHZpc2libGUgZHVyaW5nIGluc3RhbGxhdGlvbi4NCisNCisgICAgVGhlIGdlbmVyYXRlZCBmaWxlbmFtZSB3b3VsZCBiZTogbmV0LXNubXAtNS4xLjIucHJlMi0xLndpbjMyLmV4ZQ0KKw0KKzUuICBMYXVuY2ggdGhlICdOdWxsc29mdCBJbnN0YWxsIFN5c3RlbSAoTlNJUyAyLjApJw0KKw0KKzYuICBTZWxlY3QgJ01ha2VOU0lTVyAoY29tcGlsZXIgaW50ZXJmYWNlKScNCisNCis3LiAgQ2xpY2sgRmlsZSAtIExvYWQgU2NyaXB0DQorDQorOC4gIFNlbGVjdCBjOlx1c3JcbmV0LXNubXAubnNpDQorDQorOS4gIFlvdSBzaG91bGQgbm93IGhhdmUgYSBjOlx1c3JcTmV0LVNOTVAteC54LngteC5leGUgYmluYXJ5IGluc3RhbGxlciANCisgICAgcGFja2FnZQ0KKw0KKzEwLiBUZXN0IHRoZSBwYWNrYWdlDQorDQorMTEuIENvbXBhcmUgdGhlIGRpcmVjdG9yeSBjb250ZW50cyBvZiB0aGUgY29tcGlsZWQgZm9sZGVyIHdpdGggdGhlIGluc3RhbGxlZA0KKyAgICBmb2xkZXIgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBtaXNzaW5nIE1JQiBmaWxlcyBldGMuICBNb2RpZnkgbmV0LXNubXAubnNpDQorICAgIGFuZCByZWJ1aWxkIGlmIHJlcXVpcmVkLg0KKw0KKzEyLiBDcmVhdGUgYSAuemlwIGZpbGUgb2YgYzpcdXNyIGZvciBhcmNoaXZlIHB1cnBvc2VzLg0KKw0KKw0KK0J1bGRpbmcgYW4gT3BlblNTTCB2ZXJzaW9uDQorPT09PT09PT09PT09PT09PT09PT09PT09PT0NCisNCitSZXF1aXJlbWVudHMNCistLS0tLS0tLS0tLS0NCisNCisgLU9wZW5TU0wgYmluYXJ5IGZyb20gaHR0cDovL3d3dy5zbHByb3dlYi5jb20vcHJvZHVjdHMvV2luMzJPcGVuU1NMLmh0bWwNCisNCisxLiAgSW5zdGFsbCB0aGUgT3BlblNTTCBiaW5hcnksIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcyBhcyBleHBsYWluZWQgaW4gDQorICAgICdVc2luZyBhIHByZS1jb21waWxlZCB2ZXJzaW9uJyBvZiB0aGUgJ01pY3Jvc29mdCBWaXN1YWwgQysrIC0gQnVpbGRpbmcgd2l0aCANCisgICAgT3BlblNTTCcgc2VjdGlvbiBvZiBSRUFETUUud2luMzIuDQorDQorMi4gIE1vdmUgYzpcdXNyIGM6XHVzci50ZW1wDQorDQorMy4gIFJlLWJ1aWxkIHRoZSBiaW5hcnkgYnkgZm9sbG93aW5nIHRoZSBzdGVwcyBpbiB0aGUgc2VjdGlvbiAnQnVpbGRpbmcgdGhlIA0KKyAgICBtYWluIGJpbmFyaWVzJyBleGNlcHQgZW5hYmxlIE9wZW5TU0wgKGJvdGggcmVndWxhciBhbmQgV2luRXh0RExMKS4gIEFsc28gDQorICAgIGZvbGxvdyB0aGUgUGVybCBzdGVwcyB0byBjcmVhdGUgYSBuZXcgdGFyIGZpbGUgZXRjLg0KKw0KKzQuICBDb3B5IGNvbnRlbnRzIG9mIGM6XHVzciB0byBjOlx1c3IudGVtcA0KKw0KKzUuICBEZWxldGUgYzpcdXNyDQorDQorNi4gIE1vdmUgYzpcdXNyLnRlbXAgYzpcdXNyDQorDQorNy4gIFVwZGF0ZSB0aGUgQlVJTEQgSU5GT1JNQVRJT04gc2VjdGlvbiBvZiBjOlx1c3JcUkVBRE1FLnR4dCB0byBpbmNsdWRlIHRoZSBTU0wgDQorICAgIGluZm8gYW5kIHRoZSBmaWxlbmFtZS4NCisNCis4LiAgVXBkYXRlIHRoZSB2ZXJzaW9uIHN0YW1wIGluIGM6XHVzclxuZXQtc25tcC5uc2kgdG8gaW5jbHVkZSAtc3NsLiAgRXhhbXBsZToNCisNCisgICAgRm9yIGV4YW1wbGUsIGZvciA1LjMuMDoNCisNCisgICAgUFJPRFVDVF9NQUpfVkVSU0lPTiAiNSINCisgICAgUFJPRFVDVF9NSU5fVkVSU0lPTiAiMyINCisgICAgUFJPRFVDVF9SRVZJU0lPTiAiMC1zc2wiDQorICAgIFBST0RVQ1RfRVhFX1ZFUlNJT04gIjEiDQorDQorICAgIFRoZSBnZW5lcmF0ZWQgZmlsZW5hbWUgd291bGQgYmU6IG5ldC1zbm1wLTUuMy4wLXNzbC0xLndpbjMyLmV4ZQ0KKw0KKzkuICBBbHNvIGluIGM6XHVzclxuZXQtc25tcC5uc2ksIGNoYW5nZToNCisNCisgICAgIWRlZmluZSBPUEVOU1NMX1JFUVVJUkVEICIwIg0KKw0KKyAgICB0bw0KKw0KKyAgICAhZGVmaW5lIE9QRU5TU0xfUkVRVUlSRUQgIjEiDQorDQorMTAuIExhdW5jaCB0aGUgJ051bGxzb2Z0IEluc3RhbGwgU3lzdGVtIChOU0lTIDIuMCknDQorDQorMTEuIFNlbGVjdCAnTWFrZU5TSVNXIChjb21waWxlciBpbnRlcmZhY2UpJw0KKw0KKzEyLiBDbGljayBGaWxlIC0gTG9hZCBTY3JpcHQNCisNCisxMy4gU2VsZWN0IGM6XHVzclxuZXQtc25tcC5uc2kNCisNCisxNC4gWW91IHNob3VsZCBub3cgaGF2ZSBhIGM6XHVzclxOZXQtU05NUC14LngueC14LmV4ZSBiaW5hcnkgaW5zdGFsbGVyIA0KKyAgICBwYWNrYWdlDQorDQorMTUuIFRlc3QgdGhlIHBhY2thZ2UNCisNCisxNi4gQ29tcGFyZSB0aGUgZGlyZWN0b3J5IGNvbnRlbnRzIG9mIHRoZSBjb21waWxlZCBmb2xkZXIgd2l0aCB0aGUgaW5zdGFsbGVkDQorICAgIGZvbGRlciB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG1pc3NpbmcgTUlCIGZpbGVzIGV0Yy4gIE1vZGlmeSBuZXQtc25tcC5uc2kNCisgICAgYW5kIHJlYnVpbGQgaWYgcmVxdWlyZWQuDQorDQorMTcuIENyZWF0ZSBhIC56aXAgZmlsZSBvZiBjOlx1c3IgZm9yIGFyY2hpdmUgcHVycG9zZXMuDQorDQpkaWZmIC0tZ2l0IGEvd2luMzIvZGlzdC9SRUFETUUudHh0IGIvd2luMzIvZGlzdC9SRUFETUUudHh0CmluZGV4IDlkYTQ4ZWMuLjMwN2M4NjAgMTAwNjQ0Ci0tLSBhL3dpbjMyL2Rpc3QvUkVBRE1FLnR4dAorKysgYi93aW4zMi9kaXN0L1JFQURNRS50eHQKQEAgLTEsMTg0ICsxLDE4OCBAQAotICAgICAgIFJFQURNRSBmaWxlIGZvciB3aW4zMiBiaW5hcnkgcmVsZWFzZSBvZiBOZXQtU05NUAotCi1ESVNDTEFJTUVSCi0KLSAgVGhlIEF1dGhvcnMgYXNzdW1lIG5vIHJlc3BvbnNpYmlsaXR5IGZvciBkYW1hZ2Ugb3IgbG9zcyBvZiBzeXN0ZW0KLSAgcGVyZm9ybWFuY2UgYXMgYSBkaXJlY3Qgb3IgaW5kaXJlY3QgcmVzdWx0IG9mIHRoZSB1c2Ugb2YgdGhpcwotICBzb2Z0d2FyZS4gIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IKLSAgaW1wbGllZCB3YXJyYW50eS4KLQotCi1UQUJMRSBPRiBDT05URU5UUwotCi0gIERpc2NsYWltZXIKLSAgVGFibGUgT2YgQ29udGVudHMKLSAgSW50cm9kdWN0aW9uCi0qIEluc3RhbGxhdGlvbgotKiBDby1leGlzdGVuY2Ugd2l0aCBNaWNyb3NvZnQgU05NUCBzZXJ2aWNlcwotICBJbnN0YWxsYXRpb24gLSBQZXJsIG1vZHVsZQotKiBDb25maWd1cmF0aW9uCi0gIEJ1aWxkIEluZm9ybWF0aW9uCi0KLSAgKiA9IFJlcXVpcmVkIFJlYWRpbmcuCi0KLQotSU5UUk9EVUNUSU9OCi0KLSAgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGEgY29tcGlsZWQgYmluYXJ5IHJlbGVhc2Ugb2YgTmV0LVNOTVAgZm9yIFdpbmRvd3MgTlQvMjAwMC9YUC4KLSAgVGhlIGJpbmFyaWVzIHJ1biB1bm1vZGlmaWVkIG9uIFdpbmRvd3MgOTguICBUaGUgInNubXBkIiBhbmQgInNubXB0cmFwZCIgcHJvZ3JhbSBjYW4gCi0gIG5vdCBydW4gYXMgc2VydmljZXMgb24gV2luZG93cyA5OCwgYXMgV2luZG93cyA5OCBkb2VzIG5vdCBwcm92aWRlIGEgU2VydmljZSBDb250cm9sIAotICBNYW5hZ2VyIChTQ00pLgotCi0gIERvY3VtZW50YXRpb24gZm9yIHVzaW5nIHRoZSBhcHBsaWNhdGlvbnMgaXMgYXZhaWxhYmxlIGluIHRoZSBXaW5kb3dzIGhlbHAgZmlsZQotICAoTmV0LVNOTVAuY2htKSBsb2NhdGVkIGluIHRoZSBkb2NzIGRpcmVjdG9yeSBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2UuICBIZWxwIGlzIGFsc28KLSAgYXZhaWxhYmxlIGZyb20gdGhlIHdlYiBzaXRlIGF0IGh0dHA6Ly93d3cubmV0LXNubXAub3JnL2RvY3MvLgotCi0KLUlOU1RBTExBVElPTgotCi0gIFRoZSBOZXQtU05NUCBXaW5kb3dzIGluc3RhbGxlciBwYWNrYWdlIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgdGFza3M6Ci0KLSAgLSBJbnN0YWxscyB0aGUgTmV0LVNOTVAgYmluYXJpZXMsIE1JQiBmaWxlcyBhbmQgQWN0aXZlU3RhdGUgNS44LnggUGVybCBQUE0gCi0gICAgcGFja2FnZSBpbnRvIHRoZSBpbnN0YWxsYXRpb24gZm9sZGVyIChkZWZhdWx0cyB0byBjOlx1c3IpLiAKLSAgLSBBZGRzIChpbnN0YWxsIGZvbGRlcilcYmluIHRvIHRoZSBzeXN0ZW0gUEFUSC4gCi0gIC0gQWRkcyB0aGUgZm9sbG93aW5nIHJlZ2lzdHJ5IGtleXM6Ci0gICAgLSBIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTmV0LVNOTVBcU05NUENPTkZQQVRIPShpbnN0YWxsIGZvbGRlcikvZXRjL3NubXA7Ci0gICAgICAoaW5zdGFsbCBmb2xkZXIpL3NubXAvcGVyc2lzdAotICAgIC0gSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE5ldC1TTk1QXFNOTVBTSEFSRVBBVEg9KGluc3RhbGwgZm9sZGVyKS9zaGFyZS9zbm1wCi0gIC0gQ3JlYXRlcyBhbiBzbm1wLmNvbmYgZmlsZSBpbiBTTk1QQ09ORlBBVEggd2hpY2ggZGVmaW5lczogCi0gICAgLSBtaWJkaXJzIChpbnN0YWxsIGZvbGRlcikvc2hhcmUvc25tcC9taWJzIAotICAgIC0gcGVyc2lzdGVudERpciAoaW5zdGFsbCBmb2xkZXIpL3NubXAvcGVyc2lzdCAKLSAgICAtIHRlbXBGaWxlUGF0dGVybiAoaW5zdGFsbCBmb2xkZXIpL3RlbXAvc25tcGRYWFhYWFggCi0KLSAgQWZ0ZXIgaW5zdGFsbGluZyB1c2luZyB0aGUgc2V0dXAgd2l6YXJkLCBwZXJmb3JtIGEgcXVpY2sgdGVzdCB0byB2ZXJpZnkgdGhhdCAKLSAgTmV0LVNOTVAgd2FzIGluc3RhbGxlZCBjb3JyZWN0bHkuICBSdW4gdGhlIGZvbGxvd2luZyBmcm9tIGEgY29tbWFuZCBwcm9tcHQ6Ci0KLSAgICBzbm1wdHJhbnNsYXRlIC1JUiAtVGQgSUYtTUlCOjpsaW5rRG93bgotCi0gIFRoZSBhYm92ZSBjb21tYW5kIHNob3VsZCBnZW5lcmF0ZToKLQotICAgIElGLU1JQjo6bGlua0Rvd24KLSAgICBsaW5rRG93biBOT1RJRklDQVRJT04tVFlQRQotICAgICAgLS0gRlJPTSAgICAgICBJRi1NSUIKLSAgICAgIE9CSkVDVFMgICAgICAgeyBpZkluZGV4LCBpZkFkbWluU3RhdHVzLCBpZk9wZXJTdGF0dXMgfQotICAgICAgREVTQ1JJUFRJT04gICAiQSBsaW5rRG93biB0cmFwIHNpZ25pZmllcyB0aGF0IHRoZSBTTk1QIGVudGl0eSwgYWN0aW5nIGluCi0gICAgICAgICAgICAgICAgYW4gYWdlbnQgcm9sZSwgaGFzIGRldGVjdGVkIHRoYXQgdGhlIGlmT3BlclN0YXR1cyBvYmplY3QgZm9yCi0gICAgICAgICAgICAgICAgb25lIG9mIGl0cyBjb21tdW5pY2F0aW9uIGxpbmtzIGlzIGFib3V0IHRvIGVudGVyIHRoZSBkb3duCi0gICAgICAgICAgICAgICAgc3RhdGUgZnJvbSBzb21lIG90aGVyIHN0YXRlIChidXQgbm90IGZyb20gdGhlIG5vdFByZXNlbnQKLSAgICAgICAgICAgICAgICBzdGF0ZSkuICBUaGlzIG90aGVyIHN0YXRlIGlzIGluZGljYXRlZCBieSB0aGUgaW5jbHVkZWQgdmFsdWUKLSAgICAgICAgICAgICAgICBvZiBpZk9wZXJTdGF0dXMuIgotICAgIDo6PSB7IGlzbygxKSBvcmcoMykgZG9kKDYpIGludGVybmV0KDEpIHNubXBWMig2KSBzbm1wTW9kdWxlcygzKSBzbm1wTUlCKDEpIAotICAgICAgICAgIHNubXBNSUJPYmplY3RzKDEpIHNubXBUcmFwcyg1KSAzIH0KLQotICBJZiBzbm1wdHJhbnNsYXRlIGNhbiBub3QgYmUgZm91bmQsIHRoZW4gdmVyaWZ5IHRoYXQgdGhlIE5ldC1TTk1QIGJpbiBmb2xkZXIgaXMgaW4gCi0gIHlvdXIgc3lzdGVtIHBhdGguCi0KLSAgSWYgeW91IGdldCBNb2R1bGUgbm90IGZvdW5kIGVycm9ycyBzdWNoIGFzICdJUC1NSUI6IE1vZHVsZSBub3QgZm91bmQnLCB0aGUgYXBwbGljYXRpb24KLSAgd2FzIG5vdCBhYmxlIHRvIGxvY2F0ZSB0aGUgbWlicyBmb2xkZXIuICBWZXJpZnkgdGhhdCBTTk1QQ09ORlBBVEggaXMgc2V0IHRvIHRoZSBsb2NhdGlvbgotICBvZiB0aGUgY29uZmlndXJhdGlvbiBmb2xkZXIgYW5kIHRoZSBwZXJzaXN0ZW50IHN0b3JhZ2UgZm9sZGVyIAotICAoYzovdXNyL2V0Yy9zbm1wO2M6L3Vzci9zbm1wL3BlcnNpc3QgZm9yIGV4YW1wbGUpLiAgQWxzbyB2ZXJpZnkgdGhhdCB0aGVyZSBpcyBhbiAKLSAgc25tcC5jb25mIGZpbGUgdGhhdCBjb250YWlucyBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgbWliZGlycywgcGVyc2lzdGVudERpciBhbmQgCi0gIHRlbXBGaWxlUGF0dGVybi4gIEZvciBleGFtcGxlOgotCi0gICAgbWliZGlycyBjOi91c3Ivc2hhcmUvc25tcC9taWJzCi0gICAgcGVyc2lzdGVudERpciBjOi91c3Ivc25tcC9wZXJzaXN0Ci0gICAgdGVtcEZpbGVQYXR0ZXJuIEM6L3Vzci90ZW1wL3NubXBkWFhYWFhYCi0KLSAgRm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBhbmQgdGhlIHJlZ2lzdHJ5IHRvIGNvbmZpZ3VyZQotICBOZXQtU05NUCwgc2VlICdPdmVydmlldycgZG9jdW1lbnQgaW4gdGhlIENvbmZpZ3VyYXRpb24gc2VjdGlvbiBvZiB0aGUgTmV0LVNOTVAgaGVscCBmaWxlLgotCi0gIEZvciBpbmZvcm1hdGlvbiBvbiBydW5uaW5nIHNubXBkLmV4ZSBhbmQgc25tcHRyYXBkLmV4ZSBhcyBhIFdpbmRvd3Mgc2VydmljZSwgc2VlIAotICAnSG93IHRvIFJlZ2lzdGVyIHRoZSBOZXQtU05NUCBBZ2VudCBhbmQgVHJhcCBEYWVtb24gYXMgV2luZG93cyBzZXJ2aWNlcycgaW4gUkVBRE1FLndpbjMyLgotCi0KLUNPLUVYSVNURU5DRSBXSVRIIE1JQ1JPU09GVCBTTk1QIFNFUlZJQ0VTCi0KLVBsZWFzZSBzZWUgdGhlIHNlY3Rpb24gJ0NvLWV4aXN0ZW5jZSB3aXRoIE1pY3Jvc29mdCBTTk1QIHNlcnZpY2VzJyBpbiBSRUFETUUud2luMzIKLQotCi1JTlNUQUxMQVRJT04gLSBQRVJMIE1PRFVMRQotCi0gIEluY2x1ZGVkIGluIHRoZSAoaW5zdGFsbCBmb2xkZXIpXFBlcmwgZm9sZGVyIGlzIGFuIEFjdGl2ZVN0YXRlIFBlcmwgCi0gIDUuOC54LiBQUE0gcGFja2FnZS4gIE5vdGU6ICBJbiBwcmV2aW91cyB2ZXJzaW9uIG9mIE5ldC1TTk1QLCB0aGUgUFBNCi0gIHBhY2thZ2Ugd2FzIGNhbGxlZCBOZXQtU05NUC5wcGQuICBUaGUgcGFja2FnZSBoYXMgYmVlbiByZW5hbWVkIHRvCi0gIE5ldFNOTVAucHBkIHRvIHByZXZlbnQgY29uZmxpY3RzIHdpdGggdGhlIE5ldDo6U05NUCBwYWNrYWdlIGF2YWlsYWJsZQotICBmcm9tIEFjdGl2ZVN0YXRlLgotCi0gIFRoZSBQZXJsIG1vZHVsZXMgcmVxdWlyZSB0aGUgV2luMzIgUkVHRVggKFJlZ3VsYXIgRXhwcmVzc2lvbikgcGFja2FnZSB3aGljaCAKLSAgaXMgYXZhaWxhYmxlIGZyb206Ci0KLSAgICBodHRwOi8vcGVvcGxlLmRlbHBoaWZvcnVtcy5jb20vZ2pjL2dudV9yZWdleC5odG1sCi0KLSAgRG93bmxvYWQgZ251X3JlZ2V4LmV4ZSwgY29weSBpdCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCBleGVjdXRlIGl0IHRvIAotICBleHRyYWN0IHRoZSBmaWxlcy4KLQotICBDb3B5IHRoZSBleHRyYWN0ZWQgZ251X3JlZ2V4LmRsbCB0byB5b3VyICV3aW5kaXIlXHN5c3RlbTMyIGZvbGRlci4KLQotICBSZW1vdmUgYW55IGV4aXN0aW5nIE5ldC1TTk1QIFBlcmwgbW9kdWxlczoKLQotICAgIHBwbSByZW1vdmUgTmV0U05NUAotCi0gIEluc3RhbGwgdGhlIFBlcmwgbW9kdWxlczoKLQotICAgIGNkIChpbnN0YWxsIGZvbGRlcilcUGVybAotICAgIHBwbSBpbnN0YWxsIE5ldFNOTVAucHBkCi0KLSAgUGVyZm9ybSBhIGJhc2ljIHRlc3QgdXNpbmc6Ci0KLSAgICBuZXQtc25tcC1wZXJsLXRlc3QucGwKLQotCi1DT05GSUdVUkFUSU9OCi0KLSAgQWxsIGNvbmZpZ3VyYXRpb24gZmlsZXMgc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgJVNOTVBDT05GUEFUSCUgZm9sZGVyLgotCi0gIE5vdGU6IEFsbCBwYXRocyBpbiBjb25maWd1cmF0aW9uIGZpbGVzIHNob3VsZCB1c2UgZm9yd2FyZCBzbGFzaGVzIChVbml4IHN0eWxlKSwgCi0gIE5PVCBiYWNrIHNsYXNoZXMuICBFeGFtcGxlOiBjOi91c3IKLQotICBJbmNsdWRlZCBpcyBhIFBlcmwgc2NyaXB0IGNhbGxlZCBzbm1wY29uZiB3aGljaCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgCi0gIGNvbmZpZ3VyYXRpb24gZmlsZXMuICAKLQotICBEb2N1bWVudGF0aW9uIGZvciB1c2luZyB0aGUgc25tcGNvbmYgaXMgYXZhaWxhYmxlIGluIHRoZSBXaW5kb3dzIGhlbHAgZmlsZQotICAoTmV0LVNOTVAuY2htKSBsb2NhdGVkIGluIHRoZSBkb2NzIGRpcmVjdG9yeSBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2UuICBIZWxwIGlzIGFsc28KLSAgYXZhaWxhYmxlIGZyb20gdGhlIHdlYiBzaXRlIGF0IGh0dHA6Ly93d3cubmV0LXNubXAub3JnL2RvY3MvLgotCi0gIFRvIHJ1biBzbm1wY29uZiwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBsaW5lOgotCi0gICAgIHNubXBjb25mIC1pCi0KLQotQlVJTEQgSU5GT1JNQVRJT04KLQotICBOYW1lOgkJCW5ldC1zbm1wLXgueC54LTEud2luMzIuZXhlCi0gIFVSTDoJCQlodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZwotICBCdWlsZCBkYXRlOgkJCi0gIEJ1aWx0IGJ5OgkJCi0gIEluc3RhbGxlciBQYWNrYWdlIGJ5OiAKLSAgCi0gIE9TOgkJCVdpbmRvd3MgMjAwMCBTUDQKLSAgQ29tcGlsZXI6CQlNU1ZDKysgNi4wIFNQNQotICBQbGF0Zm9ybSBTREs6CQlGZWJydWFyeSAyMDAzCi0gIFBlcmw6CQkJQWN0aXZlUGVybCA1LjguMiBidWlsZCA4MDgKLSAgUkVHRVg6CQlnbnVfcmVnZXguZXhlICgwLjEyKSAtIGh0dHA6Ly9wZW9wbGUuZGVscGhpZm9ydW1zLmNvbS9namMvZ251X3JlZ2V4Lmh0bWwKLQotICBTb3VyY2U6IAkJbmV0LXNubXAteC54LngudGFyLmd6Ci0gIERlc3RpbmF0aW9uOiAgCWM6XHVzcgotICBQcm9qZWN0OgkJd2luMzJzZGsuZHN3IC8gbGliZGxsLmRzdwotICBMaWJyYXJ5OgkJbmV0c25tcCBmb3IgYXBwbGljYXRpb25zLCBuZXRzbm1wLmRsbCBmb3IgUGVybCBtb2R1bGVzCi0gIE9wZW5TU0w6CQluL2EKLQotCi0gIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBkZWZhdWx0IHBhdGhzIGFyZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbnM6Ci0KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICBuZXQtc25tcC1jb25maWcuaCBkZWZpbmUgICB8IHZhbHVlICAgICAgICAgICAgICAgICAgICB8IG9wdGlvbmFsIGVudmlyb25tZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdmFyaWFibGUKLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICBERUZBVUxUX01JQkRJUlMgICAgICAgICAgICB8IGM6L3Vzci9zaGFyZS9zbm1wL21pYnMgICB8IE1JQkRJUlMKLSAgU05NUERMTU9EUEFUSCAgICAgICAgICAgICAgfCBjOi91c3IvbGliL2RsbW9kICAgICAgICAgfCBTTk1QRExNT0RQQVRICi0gIFNOTVBMSUJQQVRIICAgICAgICAgICAgICAgIHwgYzovdXNyL2xpYiAgICAgICAgICAgICAgIHwgU05NUExJQlBBVEgKLSAgU05NUFNIQVJFUEFUSCAgICAgICAgICAgICAgfCBjOi91c3Ivc2hhcmUvc25tcCAgICAgICAgfCBTTk1QU0hBUkVQQVRICi0gIFNOTVBDT05GUEFUSCAgICAgICAgICAgICAgIHwgYzovdXNyL2V0Yy9zbm1wICAgICAgICAgIHwgU05NUENPTkZQQVRICi0gIFBFUlNJU1RFTlRfRElSRUNUT1JZICAgICAgIHwgYzovdXNyL3NubXAvcGVyc2lzdCAgICAgIHwgU05NUF9QRVJTSVNURU5UX0RJUgotICBORVRTTk1QX1RFTVBfRklMRV9QQVRURVJOICB8IGM6L3Vzci90ZW1wL3NubXBkWFhYWFhYICB8IAotCisgICAgICAgUkVBRE1FIGZpbGUgZm9yIHdpbjMyIGJpbmFyeSByZWxlYXNlIG9mIE5ldC1TTk1QDQorDQorRElTQ0xBSU1FUg0KKw0KKyAgVGhlIEF1dGhvcnMgYXNzdW1lIG5vIHJlc3BvbnNpYmlsaXR5IGZvciBkYW1hZ2Ugb3IgbG9zcyBvZiBzeXN0ZW0NCisgIHBlcmZvcm1hbmNlIGFzIGEgZGlyZWN0IG9yIGluZGlyZWN0IHJlc3VsdCBvZiB0aGUgdXNlIG9mIHRoaXMNCisgIHNvZnR3YXJlLiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvcg0KKyAgaW1wbGllZCB3YXJyYW50eS4NCisNCisNCitUQUJMRSBPRiBDT05URU5UUw0KKw0KKyAgRGlzY2xhaW1lcg0KKyAgVGFibGUgT2YgQ29udGVudHMNCisgIEludHJvZHVjdGlvbg0KKyogSW5zdGFsbGF0aW9uDQorKiBDby1leGlzdGVuY2Ugd2l0aCBNaWNyb3NvZnQgU05NUCBzZXJ2aWNlcw0KKyAgSW5zdGFsbGF0aW9uIC0gUGVybCBtb2R1bGUNCisqIENvbmZpZ3VyYXRpb24NCisgIEJ1aWxkIEluZm9ybWF0aW9uDQorDQorICAqID0gUmVxdWlyZWQgUmVhZGluZy4NCisNCisNCitJTlRST0RVQ1RJT04NCisNCisgIFRoaXMgcGFja2FnZSBjb250YWlucyBhIGNvbXBpbGVkIGJpbmFyeSByZWxlYXNlIG9mIE5ldC1TTk1QIGZvciBXaW5kb3dzIE5ULzIwMDAvWFAuDQorICBUaGUgYmluYXJpZXMgcnVuIHVubW9kaWZpZWQgb24gV2luZG93cyA5OC4gIFRoZSAic25tcGQiIGFuZCAic25tcHRyYXBkIiBwcm9ncmFtIGNhbiANCisgIG5vdCBydW4gYXMgc2VydmljZXMgb24gV2luZG93cyA5OCwgYXMgV2luZG93cyA5OCBkb2VzIG5vdCBwcm92aWRlIGEgU2VydmljZSBDb250cm9sIA0KKyAgTWFuYWdlciAoU0NNKS4NCisNCisgIERvY3VtZW50YXRpb24gZm9yIHVzaW5nIHRoZSBhcHBsaWNhdGlvbnMgaXMgYXZhaWxhYmxlIGluIHRoZSBXaW5kb3dzIGhlbHAgZmlsZQ0KKyAgKE5ldC1TTk1QLmNobSkgbG9jYXRlZCBpbiB0aGUgZG9jcyBkaXJlY3Rvcnkgb2YgdGhlIGluc3RhbGxlZCBwYWNrYWdlLiAgSGVscCBpcyBhbHNvDQorICBhdmFpbGFibGUgZnJvbSB0aGUgd2ViIHNpdGUgYXQgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvZG9jcy8uDQorDQorDQorSU5TVEFMTEFUSU9ODQorDQorICBUaGUgTmV0LVNOTVAgV2luZG93cyBpbnN0YWxsZXIgcGFja2FnZSBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIHRhc2tzOg0KKw0KKyAgLSBJbnN0YWxscyB0aGUgTmV0LVNOTVAgYmluYXJpZXMsIE1JQiBmaWxlcyBhbmQgQWN0aXZlU3RhdGUgNS44LnggUGVybCBQUE0gDQorICAgIHBhY2thZ2UgaW50byB0aGUgaW5zdGFsbGF0aW9uIGZvbGRlciAoZGVmYXVsdHMgdG8gYzpcdXNyKS4gDQorICAtIEFkZHMgKGluc3RhbGwgZm9sZGVyKVxiaW4gdG8gdGhlIHN5c3RlbSBQQVRILiANCisgIC0gQWRkcyB0aGUgZm9sbG93aW5nIHJlZ2lzdHJ5IGtleXM6DQorICAgIC0gSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE5ldC1TTk1QXFNOTVBDT05GUEFUSD0oaW5zdGFsbCBmb2xkZXIpL2V0Yy9zbm1wOw0KKyAgICAgIChpbnN0YWxsIGZvbGRlcikvc25tcC9wZXJzaXN0DQorICAgIC0gSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE5ldC1TTk1QXFNOTVBTSEFSRVBBVEg9KGluc3RhbGwgZm9sZGVyKS9zaGFyZS9zbm1wDQorICAtIENyZWF0ZXMgYW4gc25tcC5jb25mIGZpbGUgaW4gU05NUENPTkZQQVRIIHdoaWNoIGRlZmluZXM6IA0KKyAgICAtIG1pYmRpcnMgKGluc3RhbGwgZm9sZGVyKS9zaGFyZS9zbm1wL21pYnMgDQorICAgIC0gcGVyc2lzdGVudERpciAoaW5zdGFsbCBmb2xkZXIpL3NubXAvcGVyc2lzdCANCisgICAgLSB0ZW1wRmlsZVBhdHRlcm4gKGluc3RhbGwgZm9sZGVyKS90ZW1wL3NubXBkWFhYWFhYIA0KKw0KKyAgQWZ0ZXIgaW5zdGFsbGluZyB1c2luZyB0aGUgc2V0dXAgd2l6YXJkLCBwZXJmb3JtIGEgcXVpY2sgdGVzdCB0byB2ZXJpZnkgdGhhdCANCisgIE5ldC1TTk1QIHdhcyBpbnN0YWxsZWQgY29ycmVjdGx5LiAgUnVuIHRoZSBmb2xsb3dpbmcgZnJvbSBhIGNvbW1hbmQgcHJvbXB0Og0KKw0KKyAgICBzbm1wdHJhbnNsYXRlIC1JUiAtVGQgSUYtTUlCOjpsaW5rRG93bg0KKw0KKyAgVGhlIGFib3ZlIGNvbW1hbmQgc2hvdWxkIGdlbmVyYXRlOg0KKw0KKyAgICBJRi1NSUI6OmxpbmtEb3duDQorICAgIGxpbmtEb3duIE5PVElGSUNBVElPTi1UWVBFDQorICAgICAgLS0gRlJPTSAgICAgICBJRi1NSUINCisgICAgICBPQkpFQ1RTICAgICAgIHsgaWZJbmRleCwgaWZBZG1pblN0YXR1cywgaWZPcGVyU3RhdHVzIH0NCisgICAgICBERVNDUklQVElPTiAgICJBIGxpbmtEb3duIHRyYXAgc2lnbmlmaWVzIHRoYXQgdGhlIFNOTVAgZW50aXR5LCBhY3RpbmcgaW4NCisgICAgICAgICAgICAgICAgYW4gYWdlbnQgcm9sZSwgaGFzIGRldGVjdGVkIHRoYXQgdGhlIGlmT3BlclN0YXR1cyBvYmplY3QgZm9yDQorICAgICAgICAgICAgICAgIG9uZSBvZiBpdHMgY29tbXVuaWNhdGlvbiBsaW5rcyBpcyBhYm91dCB0byBlbnRlciB0aGUgZG93bg0KKyAgICAgICAgICAgICAgICBzdGF0ZSBmcm9tIHNvbWUgb3RoZXIgc3RhdGUgKGJ1dCBub3QgZnJvbSB0aGUgbm90UHJlc2VudA0KKyAgICAgICAgICAgICAgICBzdGF0ZSkuICBUaGlzIG90aGVyIHN0YXRlIGlzIGluZGljYXRlZCBieSB0aGUgaW5jbHVkZWQgdmFsdWUNCisgICAgICAgICAgICAgICAgb2YgaWZPcGVyU3RhdHVzLiINCisgICAgOjo9IHsgaXNvKDEpIG9yZygzKSBkb2QoNikgaW50ZXJuZXQoMSkgc25tcFYyKDYpIHNubXBNb2R1bGVzKDMpIHNubXBNSUIoMSkgDQorICAgICAgICAgIHNubXBNSUJPYmplY3RzKDEpIHNubXBUcmFwcyg1KSAzIH0NCisNCisgIElmIHNubXB0cmFuc2xhdGUgY2FuIG5vdCBiZSBmb3VuZCwgdGhlbiB2ZXJpZnkgdGhhdCB0aGUgTmV0LVNOTVAgYmluIGZvbGRlciBpcyBpbiANCisgIHlvdXIgc3lzdGVtIHBhdGguDQorDQorICBJZiB5b3UgZ2V0IE1vZHVsZSBub3QgZm91bmQgZXJyb3JzIHN1Y2ggYXMgJ0lQLU1JQjogTW9kdWxlIG5vdCBmb3VuZCcsIHRoZSBhcHBsaWNhdGlvbg0KKyAgd2FzIG5vdCBhYmxlIHRvIGxvY2F0ZSB0aGUgbWlicyBmb2xkZXIuICBWZXJpZnkgdGhhdCBTTk1QQ09ORlBBVEggaXMgc2V0IHRvIHRoZSBsb2NhdGlvbg0KKyAgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZm9sZGVyIGFuZCB0aGUgcGVyc2lzdGVudCBzdG9yYWdlIGZvbGRlciANCisgIChjOi91c3IvZXRjL3NubXA7YzovdXNyL3NubXAvcGVyc2lzdCBmb3IgZXhhbXBsZSkuICBBbHNvIHZlcmlmeSB0aGF0IHRoZXJlIGlzIGFuIA0KKyAgc25tcC5jb25mIGZpbGUgdGhhdCBjb250YWlucyBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgbWliZGlycywgcGVyc2lzdGVudERpciBhbmQgDQorICB0ZW1wRmlsZVBhdHRlcm4uICBGb3IgZXhhbXBsZToNCisNCisgICAgbWliZGlycyBjOi91c3Ivc2hhcmUvc25tcC9taWJzDQorICAgIHBlcnNpc3RlbnREaXIgYzovdXNyL3NubXAvcGVyc2lzdA0KKyAgICB0ZW1wRmlsZVBhdHRlcm4gQzovdXNyL3RlbXAvc25tcGRYWFhYWFgNCisNCisgIEZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIHRoZSByZWdpc3RyeSB0byBjb25maWd1cmUNCisgIE5ldC1TTk1QLCBzZWUgJ092ZXJ2aWV3JyBkb2N1bWVudCBpbiB0aGUgQ29uZmlndXJhdGlvbiBzZWN0aW9uIG9mIHRoZSBOZXQtU05NUCBoZWxwIGZpbGUuDQorDQorICBGb3IgaW5mb3JtYXRpb24gb24gcnVubmluZyBzbm1wZC5leGUgYW5kIHNubXB0cmFwZC5leGUgYXMgYSBXaW5kb3dzIHNlcnZpY2UsIHNlZSANCisgICdIb3cgdG8gUmVnaXN0ZXIgdGhlIE5ldC1TTk1QIEFnZW50IGFuZCBUcmFwIERhZW1vbiBhcyBXaW5kb3dzIHNlcnZpY2VzJyBpbiBSRUFETUUud2luMzINCisgIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0aGUgTmV0LVNOTVAgSGVscCBmaWxlIGluIHRoZSBTdGFydCBtZW51Lg0KKw0KKw0KK0NPLUVYSVNURU5DRSBXSVRIIE1JQ1JPU09GVCBTTk1QIFNFUlZJQ0VTDQorDQorUGxlYXNlIHNlZSB0aGUgc2VjdGlvbiAnQ28tZXhpc3RlbmNlIHdpdGggTWljcm9zb2Z0IFNOTVAgc2VydmljZXMnIGluIFJFQURNRS53aW4zMiB3aGljaCANCitjYW4gYmUgZm91bmQgaW4gdGhlIE5ldC1TTk1QIEhlbHAgZmlsZSBpbiB0aGUgU3RhcnQgbWVudS4NCisNCisNCitJTlNUQUxMQVRJT04gLSBQRVJMIE1PRFVMRQ0KKw0KKyAgSW5jbHVkZWQgaW4gdGhlIChpbnN0YWxsIGZvbGRlcilcUGVybCBmb2xkZXIgaXMgYW4gQWN0aXZlU3RhdGUgUGVybCANCisgIDUuOC54LiBQUE0gcGFja2FnZS4gIE5vdGU6ICBJbiBwcmV2aW91cyB2ZXJzaW9uIG9mIE5ldC1TTk1QLCB0aGUgUFBNDQorICBwYWNrYWdlIHdhcyBjYWxsZWQgTmV0LVNOTVAucHBkLiAgVGhlIHBhY2thZ2UgaGFzIGJlZW4gcmVuYW1lZCB0bw0KKyAgTmV0U05NUC5wcGQgdG8gcHJldmVudCBjb25mbGljdHMgd2l0aCB0aGUgTmV0OjpTTk1QIHBhY2thZ2UgYXZhaWxhYmxlDQorICBmcm9tIEFjdGl2ZVN0YXRlLg0KKw0KKyAgVGhlIFBlcmwgbW9kdWxlcyByZXF1aXJlIHRoZSBXaW4zMiBSRUdFWCAoUmVndWxhciBFeHByZXNzaW9uKSBwYWNrYWdlIHdoaWNoIA0KKyAgaXMgYXZhaWxhYmxlIGZyb206DQorDQorICAgIGh0dHA6Ly9wZW9wbGUuZGVscGhpZm9ydW1zLmNvbS9namMvZ251X3JlZ2V4Lmh0bWwNCisNCisgIERvd25sb2FkIGdudV9yZWdleC5leGUsIGNvcHkgaXQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgZXhlY3V0ZSBpdCB0byANCisgIGV4dHJhY3QgdGhlIGZpbGVzLg0KKw0KKyAgQ29weSB0aGUgZXh0cmFjdGVkIGdudV9yZWdleC5kbGwgdG8geW91ciAld2luZGlyJVxzeXN0ZW0zMiBmb2xkZXIuDQorDQorICBSZW1vdmUgYW55IGV4aXN0aW5nIE5ldC1TTk1QIFBlcmwgbW9kdWxlczoNCisNCisgICAgcHBtIHJlbW92ZSBOZXRTTk1QDQorDQorICBJbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXM6DQorDQorICAgIGNkIChpbnN0YWxsIGZvbGRlcilcUGVybA0KKyAgICBwcG0gaW5zdGFsbCBOZXRTTk1QLnBwZA0KKw0KKyAgUGVyZm9ybSBhIGJhc2ljIHRlc3QgdXNpbmc6DQorDQorICAgIG5ldC1zbm1wLXBlcmwtdGVzdC5wbA0KKw0KKw0KK0NPTkZJR1VSQVRJT04NCisNCisgIEFsbCBjb25maWd1cmF0aW9uIGZpbGVzIHNob3VsZCBiZSBwbGFjZWQgaW4gdGhlICVTTk1QQ09ORlBBVEglIGZvbGRlci4NCisNCisgIE5vdGU6IEFsbCBwYXRocyBpbiBjb25maWd1cmF0aW9uIGZpbGVzIHNob3VsZCB1c2UgZm9yd2FyZCBzbGFzaGVzIChVbml4IHN0eWxlKSwgDQorICBOT1QgYmFjayBzbGFzaGVzLiAgRXhhbXBsZTogYzovdXNyDQorDQorICBJbmNsdWRlZCBpcyBhIFBlcmwgc2NyaXB0IGNhbGxlZCBzbm1wY29uZiB3aGljaCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgDQorICBjb25maWd1cmF0aW9uIGZpbGVzLiAgDQorDQorICBEb2N1bWVudGF0aW9uIGZvciB1c2luZyB0aGUgc25tcGNvbmYgaXMgYXZhaWxhYmxlIGluIHRoZSBXaW5kb3dzIGhlbHAgZmlsZQ0KKyAgKE5ldC1TTk1QLmNobSkgbG9jYXRlZCBpbiB0aGUgZG9jcyBkaXJlY3Rvcnkgb2YgdGhlIGluc3RhbGxlZCBwYWNrYWdlLiAgSGVscCBpcyBhbHNvDQorICBhdmFpbGFibGUgZnJvbSB0aGUgd2ViIHNpdGUgYXQgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvZG9jcy8uDQorDQorICBUbyBydW4gc25tcGNvbmYsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgbGluZToNCisNCisgICAgIHNubXBjb25mIC1pDQorDQorDQorQlVJTEQgSU5GT1JNQVRJT04NCisNCisgIE5hbWU6CQkJbmV0LXNubXAteC54LngtMS53aW4zMi5leGUNCisgIFVSTDoJCQlodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZw0KKyAgQnVpbGQgZGF0ZToJCQ0KKyAgQnVpbHQgYnk6CQkNCisgIEluc3RhbGxlciBQYWNrYWdlIGJ5OiANCisgIE5TSVMgQ29tcGlsZXI6CVZlcnNpb24gMi4zDQorICANCisgIE9TOgkJCVdpbmRvd3MgMjAwMCBTUDQNCisgIENvbXBpbGVyOgkJTVNWQysrIDYuMCBTUDUNCisgIFBsYXRmb3JtIFNESzoJCUZlYnJ1YXJ5IDIwMDMNCisgIFBlcmw6CQkJQWN0aXZlUGVybCA1LjguMiBidWlsZCA4MDgNCisgIFJFR0VYOgkJZ251X3JlZ2V4LmV4ZSAoMC4xMikgLSBodHRwOi8vcGVvcGxlLmRlbHBoaWZvcnVtcy5jb20vZ2pjL2dudV9yZWdleC5odG1sDQorDQorICBTb3VyY2U6IAkJbmV0LXNubXAteC54LngudGFyLmd6DQorICBQYXRjaGVzCQkNCisgIERlc3RpbmF0aW9uOiAgCWM6XHVzcg0KKyAgUHJvamVjdDoJCXdpbjMyc2RrLmRzdyAvIGxpYmRsbC5kc3cNCisgIExpYnJhcnk6CQluZXRzbm1wIGZvciBhcHBsaWNhdGlvbnMsIG5ldHNubXAuZGxsIGZvciBQZXJsIG1vZHVsZXMNCisgIE9wZW5TU0w6CQluL2ENCisNCisNCisgIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBkZWZhdWx0IHBhdGhzIGFyZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbnM6DQorDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICBuZXQtc25tcC1jb25maWcuaCBkZWZpbmUgICB8IHZhbHVlICAgICAgICAgICAgICAgICAgICB8IG9wdGlvbmFsIGVudmlyb25tZW50DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHZhcmlhYmxlDQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICBERUZBVUxUX01JQkRJUlMgICAgICAgICAgICB8IGM6L3Vzci9zaGFyZS9zbm1wL21pYnMgICB8IE1JQkRJUlMNCisgIFNOTVBETE1PRFBBVEggICAgICAgICAgICAgIHwgYzovdXNyL2xpYi9kbG1vZCAgICAgICAgIHwgU05NUERMTU9EUEFUSA0KKyAgU05NUExJQlBBVEggICAgICAgICAgICAgICAgfCBjOi91c3IvbGliICAgICAgICAgICAgICAgfCBTTk1QTElCUEFUSA0KKyAgU05NUFNIQVJFUEFUSCAgICAgICAgICAgICAgfCBjOi91c3Ivc2hhcmUvc25tcCAgICAgICAgfCBTTk1QU0hBUkVQQVRIDQorICBTTk1QQ09ORlBBVEggICAgICAgICAgICAgICB8IGM6L3Vzci9ldGMvc25tcCAgICAgICAgICB8IFNOTVBDT05GUEFUSA0KKyAgUEVSU0lTVEVOVF9ESVJFQ1RPUlkgICAgICAgfCBjOi91c3Ivc25tcC9wZXJzaXN0ICAgICAgfCBTTk1QX1BFUlNJU1RFTlRfRElSDQorICBORVRTTk1QX1RFTVBfRklMRV9QQVRURVJOICB8IGM6L3Vzci90ZW1wL3NubXBkWFhYWFhYICB8IA0KKw0KZGlmZiAtLWdpdCBhL3dpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LmJhdCBiL3dpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LmJhdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iYTIzNGJhCi0tLSAvZGV2L251bGwKKysrIGIvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkuYmF0CkBAIC0wLDAgKzEsNSBAQAorQGVjaG8gb2ZmCisKK2NkIHdpbjMyID4gTlVMOiAyPiYxCitwZXJsIGJ1aWxkLWJpbmFyeS5wbAorCmRpZmYgLS1naXQgYS93aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbCBiL3dpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk2MzJhOTIKLS0tIC9kZXYvbnVsbAorKysgYi93aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbApAQCAtMCwwICsxLDYyMiBAQAorIyEvdXNyL2Jpbi9wZXJsCisjIAorIyBCdWlsZCBzY3JpcHQgZm9yIE5ldC1TTk1QIGFuZCBNU1ZDCisjIFdyaXR0ZW4gYnkgQWxleCBCdXJnZXIgLSBhbGV4X2JAdXNlcnMuc291cmNlZm9yZ2UubmV0CisjIE1heSAxMHRoLCAyMDA5CisjCit1c2Ugc3RyaWN0OwordXNlIEZpbGU6OkNvcHk7Cit1c2UgQ3dkICdhYnNfcGF0aCc7CisKK3ByaW50ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CisKK215ICR0YXJfY29tbWFuZCA9ICdDOlxtc3lzXDEuMFxiaW5cdGFyLmV4ZSc7CitteSAkZ3ppcF9jb21tYW5kID0gJ0M6XG1zeXNcMS4wXGJpblxnemlwLmV4ZSc7CisKK2lmICghICgtZiAkdGFyX2NvbW1hbmQpKSB7CisgIGRpZSAoIkNvdWxkIG5vdCBmaW5kIHRhciBjb21tYW5kICgkdGFyX2NvbW1hbmQpIik7Cit9CitlbHNlIHsKKyAgcHJpbnQgInRhciBjb21tYW5kOiAgJHRhcl9jb21tYW5kXG4iOworfQoraWYgKCEgKC1mICRnemlwX2NvbW1hbmQpKSB7CisgIGRpZSAoIkNvdWxkIG5vdCBmaW5kIGd6aXAgY29tbWFuZCAoJGd6aXBfY29tbWFuZCkiKTsKK30KK2Vsc2UgeworICBwcmludCAiZ3ppcCBjb21tYW5kOiAkZ3ppcF9jb21tYW5kXG4iOworfQorCitteSAkdmVyc2lvbiA9ICJ1bmtub3duIjsKK215ICR2ZXJzaW9uX2Zvcl9wZXJsID0gInVua25vd24iOworbXkgJHZlcnNpb25fbWFqOworbXkgJHZlcnNpb25fbWluOworbXkgJHZlcnNpb25fcmV2OworbXkgJGluc3RhbGxlcl9leGVfdmVyc2lvbiA9IDE7CitteSAkb3BlbnNzbCA9ICJkaXNhYmxlZCI7CitteSAkYl9pcHY2ID0gImRpc2FibGVkIjsKK215ICRiX3dpbmV4dGRsbCA9ICJkaXNhYmxlZCI7CitteSAkc2RrID0gImRpc2FibGVkIjsKK215ICRkZWZhdWx0X2luc3RhbGxfYmFzZSA9ICJjOi91c3IiOworbXkgJGluc3RhbGxfYmFzZSA9ICRkZWZhdWx0X2luc3RhbGxfYmFzZTsKK215ICRpbnN0YWxsID0gImVuYWJsZWQiOworbXkgJGluc3RhbGxfZGV2ZWwgPSAiZGlzYWJsZWQiOworbXkgJHBlcmwgPSAiZGlzYWJsZWQiOworbXkgJHBlcmxfaW5zdGFsbCA9ICJkaXNhYmxlZCI7CitteSAkbG9nZ2luZyA9ICJlbmFibGVkIjsKK215ICRkZWJ1ZyA9ICJkaXNhYmxlZCI7CitteSAkY29uZmlnT3B0cyA9ICIiOworbXkgJGNUbXAgPSAiIjsKK215ICRsaW5rdHlwZSA9ICJzdGF0aWMiOworbXkgJG9wdGlvbjsKKworIyBQcmVwZW5kIHdpbjMyXCBpZiBydW5uaW5nIGZyb20gbWFpbiBkaXJlY3RvcnkKK215ICRjdXJyZW50X3B3ZCA9IGAlQ09NU1BFQyUgL2MgY2RgOworY2hvbXAgJGN1cnJlbnRfcHdkOworbXkgJHRvcF9kaXI7CitteSAkd2luMzJfZGlyOworbXkgJHBlcmxfZGlyOworCitpZiAoJGN1cnJlbnRfcHdkID1+IC9cXHdpbjMyXFxkaXN0JC8pIHsKKyAgJHdpbjMyX2RpciA9ICIkY3VycmVudF9wd2QvLi4vIjsKKyAgJHRvcF9kaXIgPSAiJGN1cnJlbnRfcHdkLy4uLy4uLyI7CisgICRwZXJsX2RpciA9ICIkY3VycmVudF9wd2QvLi4vLi4vcGVybC8iOworfQorZWxzaWYgKCRjdXJyZW50X3B3ZCA9fiAvXFx3aW4zMiQvKSB7CisgICR3aW4zMl9kaXIgPSAkY3VycmVudF9wd2Q7CisgICR0b3BfZGlyID0gIiRjdXJyZW50X3B3ZC8uLi8iOworICAkcGVybF9kaXIgPSAiJGN1cnJlbnRfcHdkLy4uL3BlcmwvIjsKK30KK2Vsc2UgeyAgIyBBc3N1bWUgdG9wIGxldmVsIGZvbGRlcgorICAkd2luMzJfZGlyID0gIiRjdXJyZW50X3B3ZC93aW4zMi8iOworICAkdG9wX2RpciA9ICRjdXJyZW50X3B3ZDsKKyAgJHBlcmxfZGlyID0gIiRjdXJyZW50X3B3ZC9wZXJsLyI7Cit9CisKKyR0b3BfZGlyID0gYWJzX3BhdGgoJHRvcF9kaXIpOworJHdpbjMyX2RpciA9IGFic19wYXRoKCR3aW4zMl9kaXIpOworJHBlcmxfZGlyID0gYWJzX3BhdGgoJHBlcmxfZGlyKTsKKworCitwcmludCAiXG50b3BfZGlyOiAgICAgICR0b3BfZGlyXG4iOworcHJpbnQgIndpbjMyX2RpcjogICAgJHdpbjMyX2RpclxuIjsKK3ByaW50ICJwZXJsX2RpcjogICAgICRwZXJsX2RpclxuIjsKK3ByaW50ICJpbnN0YWxsIGJhc2U6ICRpbnN0YWxsX2Jhc2VcblxuIjsKKworY2hkaXIgJHdpbjMyX2RpcjsKKworaWYgKCAtZCAiZGlzdCIgKSB7IH0KK2Vsc2UgeworICBwcmludCAiXG5QbGVhc2UgY29weSB0aGUgd2luMzIvZGlzdCBmb2xkZXIgZnJvbSB0cnVuayB0byAkd2luMzJfZGlyL1xuXG4iOworICBleGl0OworfQorCitpZiAoIC1kICRFTlZ7TVNWQ0Rpcn0gfHwgLWQgJEVOVntWQ0lOU1RBTExESVJ9KSB7Cit9CitlbHNlIHsKKyAgcHJpbnQgIlxuUGxlYXNlIHJ1biBWQ1ZBUlMzMi5CQVQgZmlyc3QgdG8gc2V0IHVwIHRoZSBWaXN1YWwgU3R1ZGlvIGJ1aWxkXG4iIC4KKyAgICAgICAgImVudmlyb25tZW50LlxuXG4iOworICBleGl0OworfQorCitpZiAoIC1kICRpbnN0YWxsX2Jhc2UpIHsKKyAgcHJpbnQgIlxuUGxlYXNlIGRlbGV0ZSBvciByZW5hbWUgdGhlICRpbnN0YWxsX2Jhc2UgZm9sZGVyLlxuXG4iOworICBleGl0OworfQorCitteSAkc3lzdGVtX25ldHNubXBkbGwgPSAiJEVOVntXSU5ESVJ9XFxzeXN0ZW0zMlxcbmV0c25tcC5kbGwiOworaWYgKCAtZiAkc3lzdGVtX25ldHNubXBkbGwpIHsKKyAgcHJpbnQgIlxuJHN5c3RlbV9uZXRzbm1wZGxsIHNob3VsZCBiZSByZW5hbWVkIG9yIGRlbGV0ZWQuXG5cbiI7CisgIAorICBwcmludCAiV291bGQgeW91IGxpa2UgbWUgdG8gZGVsZXRlIGl0PyAoeS9uPykiOworICAkfCA9IDE7CisgIG15ICR0ZW1wID0gPFNURElOPjsKKyAgY2hvbXAgJHRlbXA7CisgIGlmIChsYygkdGVtcCkgZXEgInkiIHx8IGxjKCR0ZW1wKSBlcSAieWVzIikgeworICAgIHVubGluayAkc3lzdGVtX25ldHNubXBkbGwgfHwgZGllICJDb3VsZCBub3QgZGVsZXRlIGZpbGUgJHN5c3RlbV9uZXRzbm1wZGxsXG4iOworICB9CisgIGVsc2UgeworICAgIGV4aXQ7CisgIH0KK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgRGV0ZXJtaW5lIHZlcnNpb24gZnJvbSB1bml4IGNvbmZpZ3VyZSBzY3JpcHQKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK215ICR1bml4X2NvbmZpZ3VyZV9pbiA9ICIuLi9jb25maWd1cmUiOworCitvcGVuIChVTklYX0NPTkZJR1VSRV9JTiwgIjwkdW5peF9jb25maWd1cmVfaW4iKSB8fCBkaWUgIkNhbid0IE9wZW4gJHVuaXhfY29uZmlndXJlX2luXG4iOworCit3aGlsZSAoPFVOSVhfQ09ORklHVVJFX0lOPikKK3sKKyAgY2hvbXA7CisgIC9QQUNLQUdFX1ZFUlNJT049JyguKiknLzsKKyAgaWYgKCQxIG5lICIiKSB7CisgICAgJHZlcnNpb24gPSAkMTsKKyAgICBsYXN0OworICB9Cit9CitjbG9zZSBVTklYX0NPTkZJR1VSRV9JTjsKKworIyBEZXRlcm1pbmUgdmVyc2lvbiBmb3IgUGVybCAoNCBjaGFyYWN0ZXJzIHdpdGggY29tbWFzKQorJHZlcnNpb25fZm9yX3BlcmwgPSAkdmVyc2lvbjsKK215ICRkb3RDb3VudCA9ICgkdmVyc2lvbiA9fiB0ci8uLy8pOword2hpbGUgKCRkb3RDb3VudCA8IDMpIHsKKyAgJHZlcnNpb25fZm9yX3BlcmwgLj0gIi4wIjsKKyAgJGRvdENvdW50Kys7Cit9CiskdmVyc2lvbl9mb3JfcGVybCA9fiBzL1wuLywvZzsKKworIyBEZXRlcm1pbmUgdmVyc2lvbiBmb3IgTlNJUyBpbnN0YWxsZXIKK215IEB2ZXJzaW9uX2FycmF5ID0gc3BsaXQoL1wuLywgJHZlcnNpb24pOworJHZlcnNpb24gPX4gLy4qP1wuLio/XC4oLiopLzsKKyR2ZXJzaW9uX3JldiA9ICQxIHx8IDA7CiskdmVyc2lvbl9tYWogPSAkdmVyc2lvbl9hcnJheVswXSB8fCAwOworJHZlcnNpb25fbWluID0gJHZlcnNpb25fYXJyYXlbMV0gfHwgMDsKKworcHJpbnQgIk5ldC1TTk1QIHZlcnNpb246ICAgICAgJHZlcnNpb25cbiI7CitwcmludCAiTmV0LVNOTVAgUGVybCB2ZXJzaW9uOiAkdmVyc2lvbl9mb3JfcGVybFxuIjsKK3ByaW50ICJOZXQtU05NUCB2ZXJzaW9uIE1BSjogICR2ZXJzaW9uX21halxuIjsKK3ByaW50ICJOZXQtU05NUCB2ZXJzaW9uIE1JTjE6ICR2ZXJzaW9uX21pblxuIjsKK3ByaW50ICJOZXQtU05NUCB2ZXJzaW9uIE1JTjI6ICR2ZXJzaW9uX3JldlxuXG4iOworCisjZ290byBza2lwMTsKKyNleGl0OworCisKKworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyBDb21tb24gYnVpbGQgb3B0aW9uczoKKyRiX2lwdjYgPSAiZW5hYmxlZCI7Ciskc2RrID0gImVuYWJsZWQiOworJGRlZmF1bHRfaW5zdGFsbF9iYXNlID0gImM6L3VzciI7CiskaW5zdGFsbF9iYXNlID0gJGRlZmF1bHRfaW5zdGFsbF9iYXNlOworJHBlcmxfaW5zdGFsbCA9ICJkaXNhYmxlZCI7CiskZGVidWcgPSAiZGlzYWJsZWQiOworJGNvbmZpZ09wdHMgPSAiIjsKKyRjVG1wID0gIiI7CiskbGlua3R5cGUgPSAiZHluYW1pYyI7CisKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgQnVpbGQgYmluYXJ5OgorIyB3aW5FeHRETEwgPSBkaXNhYmxlZAorIyBTU0wgPSBlbmFibGVkCiskb3BlbnNzbCA9ICJlbmFibGVkIjsKKyRiX3dpbmV4dGRsbCA9ICJkaXNhYmxlZCI7CiskcGVybCA9ICJlbmFibGVkIjsKKyRpbnN0YWxsID0gImVuYWJsZWQiOworJGluc3RhbGxfZGV2ZWwgPSAiZW5hYmxlZCI7CisKK3ByaW50ICJcblxuQnVpbGRpbmcgd2l0aCBvcHRpb25zOlxuIjsKK3ByaW50ICI9PT09PT09PT09PT09PT09PT09PT09XG5cbiI7CitwcmludCAiMS4gIE9wZW5TU0wgc3VwcG9ydDogICAgICAgICAgICAgICAgIiAuICRvcGVuc3NsLiAiXG4iOworcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiMy4gIEluc3RhbGwgcGF0aDogICAgICAgICAgICAgICAgICAgIiAuICRpbnN0YWxsX2Jhc2UgLiAiXG4iOworcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjUuICBQZXJsIG1vZHVsZXM6ICAgICAgICAgICAgICAgICAgICIgLiAkcGVybCAuICJcbiI7CitwcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICI3LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gJGxvZ2dpbmcgLiAiXG4iOworcHJpbnQgIjguICBEZWJ1ZyBtb2RlOiAgICAgICAgICAgICAgICAgICAgICIgLiAkZGVidWcgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICI5LiAgSVB2NiB0cmFuc3BvcnRzIChyZXF1aXJlcyBTREspOiAiIC4gJGJfaXB2NiAuICJcbiI7CitwcmludCAiMTAuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICRiX3dpbmV4dGRsbCAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjExLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgICIgLiAkbGlua3R5cGUgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICIxMi4gSW5zdGFsbCBkZXZlbG9wbWVudCBmaWxlcyAgICAgICAiIC4gJGluc3RhbGxfZGV2ZWwgLiAiXG4iOworCitjaGRpciAkd2luMzJfZGlyOworJmJ1aWxkKCk7CismY3JlYXRlX3BlcmxfcGFja2FnZSgpOworCitwcmludCAiXG5DbGVhbmluZyB1cCAkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9cbiI7Cit1bmxpbmsgKCIkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9zbm1wZC5jb25mIik7Cit1bmxpbmsgKCIkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9zbm1wdHJhcGQuY29uZiIpOworCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjIEJ1aWxkIGJpbmFyeToKKyMgd2luRXh0RExMID0gZW5hYmxlZAorIyBTU0wgPSBlbmFibGVkCiskb3BlbnNzbCA9ICJlbmFibGVkIjsKKyRiX3dpbmV4dGRsbCA9ICJlbmFibGVkIjsKKyRwZXJsID0gImRpc2FibGVkIjsKKyRpbnN0YWxsID0gImRpc2FibGVkIjsKKyRpbnN0YWxsX2RldmVsID0gImRpc2FibGVkIjsKKworcHJpbnQgIlxuXG5CdWlsZGluZyB3aXRoIG9wdGlvbnM6XG4iOworcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKK3ByaW50ICIxLiAgT3BlblNTTCBzdXBwb3J0OiAgICAgICAgICAgICAgICAiIC4gJG9wZW5zc2wuICJcbiI7CitwcmludCAiMi4gIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAgICAgICAgICAgIiAuICRzZGsgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICIzLiAgSW5zdGFsbCBwYXRoOiAgICAgICAgICAgICAgICAgICAiIC4gJGluc3RhbGxfYmFzZSAuICJcbiI7CitwcmludCAiNC4gIEluc3RhbGwgYWZ0ZXIgYnVpbGQ6ICAgICAgICAgICAgIiAuICRpbnN0YWxsIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiNS4gIFBlcmwgbW9kdWxlczogICAgICAgICAgICAgICAgICAgIiAuICRwZXJsIC4gIlxuIjsKK3ByaW50ICI2LiAgSW5zdGFsbCBwZXJsIG1vZHVsZXM6ICAgICAgICAgICAiIC4gJHBlcmxfaW5zdGFsbCAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjcuICBRdWlldCBidWlsZCAobG9nZ2VkKTogICAgICAgICAgICIgLiAkbG9nZ2luZyAuICJcbiI7CitwcmludCAiOC4gIERlYnVnIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgIiAuICRkZWJ1ZyAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjkuICBJUHY2IHRyYW5zcG9ydHMgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl9pcHY2IC4gIlxuIjsKK3ByaW50ICIxMC4gd2luRXh0RExMIGFnZW50IChyZXF1aXJlcyBTREspOiAiIC4gJGJfd2luZXh0ZGxsIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiMTEuIExpbmsgdHlwZTogICAgICAgICAgICAgICAgICAgICAgIiAuICRsaW5rdHlwZSAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjEyLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgICAgICIgLiAkaW5zdGFsbF9kZXZlbCAuICJcbiI7CisKK2NoZGlyICR3aW4zMl9kaXI7CismYnVpbGQoKTsKKworcHJpbnQgIlxuQ29weWluZyBzbm1wZC5leGUgdG8gc25tcGQtd2luRXh0RExMLmV4ZVxuIjsKK2NvcHkoImJpbi9yZWxlYXNlL3NubXBkLmV4ZSIsIiRpbnN0YWxsX2Jhc2UvYmluL3NubXBkLXdpbkV4dERMTC5leGUiKSB8fCBkaWUgKCJDb3VsZCBub3QgY29weSBzbm1wZC5leGUgdG8gc25tcGQtd2luRXh0RExMLmV4ZTogJD8iKTsKKworcHJpbnQgIlxuQ2xlYW5pbmcgdXAgJGluc3RhbGxfYmFzZS9zbm1wL3BlcnNpc3QvXG4iOwordW5saW5rICgiJGluc3RhbGxfYmFzZS9zbm1wL3BlcnNpc3Qvc25tcGQuY29uZiIpOwordW5saW5rICgiJGluc3RhbGxfYmFzZS9zbm1wL3BlcnNpc3Qvc25tcHRyYXBkLmNvbmYiKTsKKworCitwcmludCAiUmVuYW1pbmcgJGluc3RhbGxfYmFzZS9iaW4gdG8gJGluc3RhbGxfYmFzZS9iaW4uc3NsXG4iOworcmVuYW1lICgiJGluc3RhbGxfYmFzZS9iaW4iLCIkaW5zdGFsbF9iYXNlL2Jpbi5zc2wiKSB8fCBkaWUgKCJDb3VsZCBub3QgcmVuYW1lIGZvbGRlcjogJD8iKTsKK3ByaW50ICJSZW5hbWluZyAkaW5zdGFsbF9iYXNlL2xpYiB0byAkaW5zdGFsbF9iYXNlL2xpYi5zc2xcbiI7CityZW5hbWUgKCIkaW5zdGFsbF9iYXNlL2xpYiIsIiRpbnN0YWxsX2Jhc2UvbGliLnNzbCIpIHx8IGRpZSAoIkNvdWxkIG5vdCByZW5hbWUgZm9sZGVyOiAkPyIpOworcHJpbnQgIlJlbmFtaW5nICRpbnN0YWxsX2Jhc2UvcGVybCB0byAkaW5zdGFsbF9iYXNlL3Blcmwuc3NsXG4iOworcmVuYW1lICgiJGluc3RhbGxfYmFzZS9wZXJsIiwiJGluc3RhbGxfYmFzZS9wZXJsLnNzbCIpIHx8IGRpZSAoIkNvdWxkIG5vdCByZW5hbWUgZm9sZGVyOiAkPyIpOworCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyBCdWlsZCBiaW5hcnk6CisjIHdpbkV4dERMTCA9IGRpc2FibGVkCisjIFNTTCA9IGRpc2FibGVkCiskb3BlbnNzbCA9ICJkaXNhYmxlZCI7CiskYl93aW5leHRkbGwgPSAiZGlzYWJsZWQiOworJHBlcmwgPSAiZW5hYmxlZCI7CiskaW5zdGFsbCA9ICJlbmFibGVkIjsKKyRpbnN0YWxsX2RldmVsID0gImVuYWJsZWQiOworCitwcmludCAiXG5cbkJ1aWxkaW5nIHdpdGggb3B0aW9uczpcbiI7CitwcmludCAiPT09PT09PT09PT09PT09PT09PT09PVxuXG4iOworcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAkb3BlbnNzbC4gIlxuIjsKK3ByaW50ICIyLiAgUGxhdGZvcm0gU0RLIHN1cHBvcnQ6ICAgICAgICAgICAiIC4gJHNkayAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKK3ByaW50ICI0LiAgSW5zdGFsbCBhZnRlciBidWlsZDogICAgICAgICAgICAiIC4gJGluc3RhbGwgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICI1LiAgUGVybCBtb2R1bGVzOiAgICAgICAgICAgICAgICAgICAiIC4gJHBlcmwgLiAiXG4iOworcHJpbnQgIjYuICBJbnN0YWxsIHBlcmwgbW9kdWxlczogICAgICAgICAgICIgLiAkcGVybF9pbnN0YWxsIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiNy4gIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAgICAgICAgICAgIiAuICRsb2dnaW5nIC4gIlxuIjsKK3ByaW50ICI4LiAgRGVidWcgbW9kZTogICAgICAgICAgICAgICAgICAgICAiIC4gJGRlYnVnIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiOS4gIElQdjYgdHJhbnNwb3J0cyAocmVxdWlyZXMgU0RLKTogIiAuICRiX2lwdjYgLiAiXG4iOworcHJpbnQgIjEwLiB3aW5FeHRETEwgYWdlbnQgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl93aW5leHRkbGwgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICIxMS4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gJGxpbmt0eXBlIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiMTIuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAgICAgIiAuICRpbnN0YWxsX2RldmVsIC4gIlxuIjsKKworY2hkaXIgJHdpbjMyX2RpcjsKKyZidWlsZCgpOworJmNyZWF0ZV9wZXJsX3BhY2thZ2UoKTsKKworcHJpbnQgIlxuQ2xlYW5pbmcgdXAgJGluc3RhbGxfYmFzZS9zbm1wL3BlcnNpc3QvXG4iOwordW5saW5rICgiJGluc3RhbGxfYmFzZS9zbm1wL3BlcnNpc3Qvc25tcGQuY29uZiIpOwordW5saW5rICgiJGluc3RhbGxfYmFzZS9zbm1wL3BlcnNpc3Qvc25tcHRyYXBkLmNvbmYiKTsKKworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyBCdWlsZCBiaW5hcnk6CisjIHdpbkV4dERMTCA9IGVuYWJsZWQKKyMgU1NMID0gZGlzYWJsZWQKKyRvcGVuc3NsID0gImRpc2FibGVkIjsKKyRiX3dpbmV4dGRsbCA9ICJlbmFibGVkIjsKKyRwZXJsID0gImRpc2FibGVkIjsKKyRpbnN0YWxsID0gImRpc2FibGVkIjsKKyRpbnN0YWxsX2RldmVsID0gImRpc2FibGVkIjsKKworcHJpbnQgIlxuXG5CdWlsZGluZyB3aXRoIG9wdGlvbnM6XG4iOworcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKK3ByaW50ICIxLiAgT3BlblNTTCBzdXBwb3J0OiAgICAgICAgICAgICAgICAiIC4gJG9wZW5zc2wuICJcbiI7CitwcmludCAiMi4gIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAgICAgICAgICAgIiAuICRzZGsgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICIzLiAgSW5zdGFsbCBwYXRoOiAgICAgICAgICAgICAgICAgICAiIC4gJGluc3RhbGxfYmFzZSAuICJcbiI7CitwcmludCAiNC4gIEluc3RhbGwgYWZ0ZXIgYnVpbGQ6ICAgICAgICAgICAgIiAuICRpbnN0YWxsIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiNS4gIFBlcmwgbW9kdWxlczogICAgICAgICAgICAgICAgICAgIiAuICRwZXJsIC4gIlxuIjsKK3ByaW50ICI2LiAgSW5zdGFsbCBwZXJsIG1vZHVsZXM6ICAgICAgICAgICAiIC4gJHBlcmxfaW5zdGFsbCAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjcuICBRdWlldCBidWlsZCAobG9nZ2VkKTogICAgICAgICAgICIgLiAkbG9nZ2luZyAuICJcbiI7CitwcmludCAiOC4gIERlYnVnIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgIiAuICRkZWJ1ZyAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjkuICBJUHY2IHRyYW5zcG9ydHMgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl9pcHY2IC4gIlxuIjsKK3ByaW50ICIxMC4gd2luRXh0RExMIGFnZW50IChyZXF1aXJlcyBTREspOiAiIC4gJGJfd2luZXh0ZGxsIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiMTEuIExpbmsgdHlwZTogICAgICAgICAgICAgICAgICAgICAgIiAuICRsaW5rdHlwZSAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjEyLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgICAgICIgLiAkaW5zdGFsbF9kZXZlbCAuICJcbiI7CisKK2NoZGlyICR3aW4zMl9kaXI7CismYnVpbGQoKTsKKworcHJpbnQgIlxuQ29weWluZyBzbm1wZC5leGUgdG8gc25tcGQtd2luRXh0RExMLmV4ZVxuIjsKK2NvcHkoImJpbi9yZWxlYXNlL3NubXBkLmV4ZSIsIiRpbnN0YWxsX2Jhc2UvYmluL3NubXBkLXdpbkV4dERMTC5leGUiKSB8fCBkaWUgKCJDb3VsZCBub3QgY29weSBzbm1wZC5leGUgdG8gc25tcGQtd2luRXh0RExMLmV4ZTogJD8iKTsKKworcHJpbnQgIlxuQ2xlYW5pbmcgdXAgJGluc3RhbGxfYmFzZS9zbm1wL3BlcnNpc3QvXG4iOwordW5saW5rICgiJGluc3RhbGxfYmFzZS9zbm1wL3BlcnNpc3Qvc25tcGQuY29uZiIpOwordW5saW5rICgiJGluc3RhbGxfYmFzZS9zbm1wL3BlcnNpc3Qvc25tcHRyYXBkLmNvbmYiKTsKKworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitwcmludCAiXG5cbkNvcHlpbmcgZGlzdCBmaWxlczpcbiI7CitwcmludCAiPT09PT09PT09PT09PT09PT09PVxuXG4iOworCitta2RpciAoIiRpbnN0YWxsX2Jhc2UvZG9jcyIpOworbWtkaXIgKCIkaW5zdGFsbF9iYXNlL3RlbXAiKTsKKworJmNoZWNrX2Rpcl9leGlzdHMoIiRpbnN0YWxsX2Jhc2UvZG9jcyIpOworJmNoZWNrX2Rpcl9leGlzdHMoIiRpbnN0YWxsX2Jhc2UvdGVtcCIpOworCitjaGRpciAkdG9wX2RpcjsKK2NvcHkoIkNPUFlJTkciLCIkaW5zdGFsbF9iYXNlL2RvY3MvIikgfHwgZGllICgiQ291bGQgbm90IGNvcHkgZmlsZTogJD8iKTsKK2NvcHkoJ3dpbjMyXGRpc3RcUkVBRE1FLnR4dCcsIiRpbnN0YWxsX2Jhc2UvIikgfHwgZGllICgiQ291bGQgbm90IGNvcHkgZmlsZTogJD8iKTsKK2NvcHkoJ3dpbjMyXGRpc3Rcc2NyaXB0c1xuZXQtc25tcC1wZXJsLXRlc3QucGwnLCIkaW5zdGFsbF9iYXNlL2Jpbi8iKSB8fCBkaWUgKCJDb3VsZCBub3QgY29weSBmaWxlOiAkPyIpOworCisKK3NraXAxOgorCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK3ByaW50ICJcblxuQ29weWluZyBOU0lTIGluc3RhbGxlciBmaWxlczpcbiI7CitwcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKKworY2hkaXIgJHRvcF9kaXI7Citjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxTZXRFblZhci5uc2knLCIkaW5zdGFsbF9iYXNlLyIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7Citjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC5uc2knLCIkaW5zdGFsbF9iYXNlL25ldC1zbm1wLm5zaS5pbiIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7Citjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxBZGQyUGF0aC5uc2knLCIkaW5zdGFsbF9iYXNlLyIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7Citjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC1oZWFkZXIxLmJtcCcsIiRpbnN0YWxsX2Jhc2UvIikgfHwgZGllICgiQ291bGQgbm90IGNvcHkgZmlsZTogJD8iKTsKKworb3BlbiAoVEVNUCwgIj4kaW5zdGFsbF9iYXNlL3JlZ2lzdGVyYWdlbnQuYmF0IikgfHwgZGllICgiQ291bGQgbm90IGNyZWF0ZSBmaWxlOiAkPyIpOworY2xvc2UgVEVNUDsKK29wZW4gKFRFTVAsICI+JGluc3RhbGxfYmFzZS91bnJlZ2lzdGVyYWdlbnQuYmF0IikgfHwgZGllICgiQ291bGQgbm90IGNyZWF0ZSBmaWxlOiAkPyIpOworY2xvc2UgVEVNUDsKK29wZW4gKFRFTVAsICI+JGluc3RhbGxfYmFzZS9yZWdpc3RlcnRyYXBkLmJhdCIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjcmVhdGUgZmlsZTogJD8iKTsKK2Nsb3NlIFRFTVA7CitvcGVuIChURU1QLCAiPiRpbnN0YWxsX2Jhc2UvdW5yZWdpc3RlcnRyYXBkLmJhdCIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjcmVhdGUgZmlsZTogJD8iKTsKK2Nsb3NlIFRFTVA7CitvcGVuIChURU1QLCAiPiRpbnN0YWxsX2Jhc2UvZXRjL3NubXAvc25tcC5jb25mIikgfHwgZGllICgiQ291bGQgbm90IGNyZWF0ZSBmaWxlOiAkPyIpOworY2xvc2UgVEVNUDsKKworIworIyBCdWlsZCBuZXQtc25tcC5uc2kgZmlsZQorIworICB7CisgICAgbXkgJGZpbGVfb3V0ID0gIiRpbnN0YWxsX2Jhc2UvbmV0LXNubXAubnNpIjsKKyAgICBteSAkZmlsZV9pbiA9ICIkaW5zdGFsbF9iYXNlL25ldC1zbm1wLm5zaS5pbiI7CisgIAorICAgIG9wZW4gKEZJTEVfT1VULCAiPiRmaWxlX291dCIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkZmlsZV9vdXRcbiI7CisgICAgb3BlbiAoRklMRV9JTiwgIjwkZmlsZV9pbiIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkZmlsZV9pblxuIjsKKyAgICAKKyAgICBwcmludCAiY3JlYXRpbmcgJGZpbGVfb3V0XG4iOworCSAgCisgICAgd2hpbGUgKDxGSUxFX0lOPikKKyAgICB7CisgICAgICBjaG9tcDsKKyAgICAgIHMvIWRlZmluZSBQUk9EVUNUX01BSl9WRVJTSU9OLiovIWRlZmluZSBQUk9EVUNUX01BSl9WRVJTSU9OIFwiJHZlcnNpb25fbWFqXCIvOworICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfTUlOX1ZFUlNJT04uKi8hZGVmaW5lIFBST0RVQ1RfTUlOX1ZFUlNJT04gXCIkdmVyc2lvbl9taW5cIi87CisgICAgICBzLyFkZWZpbmUgUFJPRFVDVF9SRVZJU0lPTi4qLyFkZWZpbmUgUFJPRFVDVF9SRVZJU0lPTiBcIiR2ZXJzaW9uX3JldlwiLzsKKyAgICAgIHMvIWRlZmluZSBQUk9EVUNUX0VYRV9WRVJTSU9OLiovIWRlZmluZSBQUk9EVUNUX0VYRV9WRVJTSU9OIFwiJGluc3RhbGxlcl9leGVfdmVyc2lvblwiLzsKKwkgIGlmICgkRU5We0xJQn0gPX4gL1xceDY0LykgeworCSAgICBzLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYLiovIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggXCIueDY0LmV4ZVwiLzsKKwkgICAgcy8hZGVmaW5lIFdJTjMyX1BMQVRGT1JNLiovIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggXCJ4NjRcIi87CisJICB9CisJICBlbHNlIHsKKwkgICAgcy8hZGVmaW5lIFBST0RVQ1RfRVhFX1NVRkZJWC4qLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYIFwiLng4Ni5leGUiLzsKKwkgICAgcy8hZGVmaW5lIFdJTjMyX1BMQVRGT1JNLiovIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggXCJ4ODZcIi87CisJICB9CisgIAorICAgICAgcHJpbnQgRklMRV9PVVQgJF8gLiAiXG4iOworICAgIH0KKyAgICBjbG9zZSBGSUxFX0lOOworICAgIGNsb3NlIEZJTEVfT1VUOworICB9CisKK3ByaW50ICJcbj09PT09PT1cbiI7CitwcmludCAiRG9uZSEhIVxuIjsKK3ByaW50ICI9PT09PT09XG5cbiI7CisKK2V4aXQ7CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK3N1YiBidWlsZCB7CisKKyAgJGNUbXAgPSAoJG9wZW5zc2wgZXEgImVuYWJsZWQiID8gIi0td2l0aC1zc2wiIDogIiIgKTsKKyAgJGNvbmZpZ09wdHMgPSAiJGNUbXAiOworICAkY1RtcCA9ICgkc2RrIGVxICJlbmFibGVkIiA/ICItLXdpdGgtc2RrIiA6ICIiICk7CisgICRjb25maWdPcHRzID0gIiRjb25maWdPcHRzICRjVG1wIjsKKyAgJGNUbXAgPSAoJGJfaXB2NiBlcSAiZW5hYmxlZCIgPyAiLS13aXRoLWlwdjYiIDogIiIgKTsKKyAgJGNvbmZpZ09wdHMgPSAiJGNvbmZpZ09wdHMgJGNUbXAiOworICAkY1RtcCA9ICgkYl93aW5leHRkbGwgZXEgImVuYWJsZWQiID8gIi0td2l0aC13aW5leHRkbGwiIDogIiIgKTsKKyAgJGNvbmZpZ09wdHMgPSAiJGNvbmZpZ09wdHMgJGNUbXAiOworICAkY1RtcCA9ICgkZGVidWcgZXEgImVuYWJsZWQiID8gIi0tY29uZmlnPWRlYnVnIiA6ICItLWNvbmZpZz1yZWxlYXNlIiApOworICAkY29uZmlnT3B0cyA9ICIkY29uZmlnT3B0cyAkY1RtcCI7CisgIAorICAjIFNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgCisgICMgU2V0IHRvIG5vdCBzZWFyY2ggZm9yIG5vbi1leGlzdGVudCAiLmRlcCIgZmlsZXMKKyAgJEVOVntOT19FWFRFUk5BTF9ERVBTfT0iMSI7CisgIAorICAjIFNldCBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIHNvIFBlcmwgbWFrZSB0ZXN0cyBjYW4gbG9jYXRlIHRoZSBETEwKKyAgJEVOVntQQVRIfSA9ICIkY3VycmVudF9wd2RcXGJpblxcIiAuICgkZGVidWcgZXEgImVuYWJsZWQiID8gImRlYnVnIiA6ICJyZWxlYXNlIiApIC4gIjskRU5We1BBVEh9IjsKKyAgCisgICMgU2V0IE1JQkRJUlMgZW52aXJvbm1lbnQgdmFyaWFibGUgc28gUGVybCBtYWtlIHRlc3RzIGNhbiBsb2NhdGUgdGhlIG1pYnMKKyAgbXkgJHRlbXBfbWliZGlyID0gIiRjdXJyZW50X3B3ZC8uLi9taWJzIjsKKyAgJHRlbXBfbWliZGlyID1+IHMvXFwvXC8vZzsKKyAgJEVOVntNSUJESVJTfT0kdGVtcF9taWJkaXI7CisgIAorICAjIFNldCBTTk1QQ09ORlBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgc28gUGVybCBjb25mLnQgdGVzdCBjYW4gbG9jYXRlCisgICMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgICMgU2VlIHRoZSBub3RlIGFib3V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUgV2luMzIgc2VjdGlvbiBvZiAKKyAgIyBwZXJsL1NOTVAvUkVBRE1FIGZvciBkZXRhaWxzIG9uIHdoeSB0aGlzIGlzIG5lZWRlZC4gCisgICRFTlZ7U05NUENPTkZQQVRIfT0idCI7JEVOVntTTk1QQ09ORlBBVEh9OworICAKKyAgcHJpbnQgIlxuQnVpbGRpbmcuLi5cbiI7CisgIAorICBwcmludCAiXG5DcmVhdGluZyAqLm91dCBsb2cgZmlsZXMuXG5cbiI7CisKKyAgI3ByaW50ICJEZWxldGluZyBvbGQgbG9nIGZpbGVzLi4uXG4iOworICAjc3lzdGVtKCJkZWwgKi5vdXQgPiBOVUw6IDI+JjEiKTsKKworICAjIERlbGV0ZSBuZXQtc25tcC1jb25maWcuaCBmcm9tIG1haW4gaW5jbHVkZSBmb2xkZXIganVzdCBpbiBjYXNlIGl0IHdhcyBjcmVhdGVkIGJ5IGEgQ3lnd2luIG9yIE1pbkdXIGJ1aWxkCisgIHN5c3RlbSgiZGVsIC4uXFxpbmNsdWRlXFxuZXQtc25tcFxcbmV0LXNubXAtY29uZmlnLmggPiBOVUw6IDI+JjEiKTsKKyAgCisgIHByaW50ICJSdW5uaW5nIENvbmZpZ3VyZS4uLlxuIjsKKyAgc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAkY29uZmlnT3B0cyAtLWxpbmt0eXBlPSRsaW5rdHlwZSAtLXByZWZpeD1cIiRpbnN0YWxsX2Jhc2VcIiA+IGNvbmZpZ3VyZS5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGNvbmZpZ3VyZS5vdXQpIjsKKworICBwcmludCAiQ2xlYW5pbmcuLi5cbiI7CisgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBjbGVhbiA+IGNsZWFuLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgY2xlYW4ub3V0KSI7CisKKyAgcHJpbnQgIkJ1aWxkaW5nIG1haW4gcGFja2FnZS4uLlxuIjsKKyAgc3lzdGVtKCJubWFrZSAvbm9sb2dvID4gbWFrZS5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIG1ha2Uub3V0KSI7CisKKyAgaWYgKCRwZXJsIGVxICJlbmFibGVkIikgeworICAgIGlmICgkbGlua3R5cGUgZXEgInN0YXRpYyIpIHsKKyAgICAgIHByaW50ICJSdW5uaW5nIENvbmZpZ3VyZSBmb3IgRExMLi4uXG4iOworICAgICAgc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAkY29uZmlnT3B0cyAtLWxpbmt0eXBlPWR5bmFtaWMgLS1wcmVmaXg9XCIkaW5zdGFsbF9iYXNlXCIgPiBwZXJsY29uZmlndXJlLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgcGVybGNvbmZpZ3VyZS5vdXQpIjsKKyAgICAgIAorICAgICAgcHJpbnQgIkNsZWFuaW5nIGxpYnJhcmllcy4uLlxuIjsKKyAgICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBsaWJzX2NsZWFuID4+IGNsZWFuLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgY2xlYW4ub3V0KSI7CisgICAgICAKKyAgICAgIHByaW50ICJCdWlsZGluZyBETEwgbGlicmFyaWVzLi4uXG4iOworICAgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGxpYnMgPiBkbGwub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBkbGwub3V0KSI7CisgICAgfQorCisgICAgcHJpbnQgIkNsZWFuaW5nIFBlcmwuLi4uXG4iOworICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX2NsZWFuID4+IGNsZWFuLm91dCAyPiYxIik7ICMgSWYgYWxyZWFkeSBjbGVhbmVkLCBNYWtlZmlsZSBpcyBnb25lIHNvIGRvbid0IHdvcnJ5IGFib3V0IGVycm9ycyEKKworICAgIHByaW50ICJCdWlsZGluZyBQZXJsIG1vZHVsZXMuLi5cbiI7CisgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmwgPiBwZXJsbWFrZS5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIHBlcmxtYWtlLm91dCkiOworCisjICAgIHByaW50ICJUZXN0aW5nIFBlcmwgbW9kdWxlcy4uLlxuIjsKKyMgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmxfdGVzdCA+IHBlcmx0ZXN0Lm91dCAyPiYxIik7ICMgRG9uJ3QgZGllIGlmIGFsbCB0aGUgdGVzdHMgZG9uJ3QgcGFzcy4uCisgICAgCisgICAgaWYgKCRwZXJsX2luc3RhbGwgZXEgImVuYWJsZWQiKSB7CisgICAgICBwcmludCAiSW5zdGFsbGluZyBQZXJsIG1vZHVsZXMuLi5cbiI7CisgICAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF9pbnN0YWxsID4gcGVybGluc3RhbGwub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBwZXJsaW5zdGFsbC5vdXQpIjsKKyAgICB9CisgICAgICAKKyAgICBwcmludCAiXG5TZWUgcGVybHRlc3Qub3V0IGZvciBQZXJsIHRlc3QgcmVzdWx0c1xuIjsKKyAgfQorCisgIHByaW50ICJcbiI7CisgIGlmICgkaW5zdGFsbCBlcSAiZW5hYmxlZCIpIHsKKyAgICBwcmludCAiSW5zdGFsbGluZyBtYWluIHBhY2thZ2UuLi5cbiI7CisgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGluc3RhbGwgPiBpbnN0YWxsLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgaW5zdGFsbC5vdXQpIjsKKyAgfQorICBlbHNlIHsKKyAgICBwcmludCAiVHlwZSBubWFrZSBpbnN0YWxsIHRvIGluc3RhbGwgdGhlIHBhY2thZ2UgdG8gJGluc3RhbGxfYmFzZVxuIjsKKyAgfQorCisgIGlmICgkaW5zdGFsbF9kZXZlbCBlcSAiZW5hYmxlZCIpIHsKKyAgICBwcmludCAiSW5zdGFsbGluZyBkZXZlbG9wbWVudCBmaWxlcy4uLlxuIjsKKyAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gaW5zdGFsbF9kZXZlbCA+IGluc3RhbGxfZGV2ZWwub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBpbnN0YWxsX2RldmVsLm91dCkiOworICB9CisgIGVsc2UgeworICAgIHByaW50ICJUeXBlIG5tYWtlIGluc3RhbGxfZGV2ZWwgdG8gaW5zdGFsbCB0aGUgZGV2ZWxvcG1lbnQgZmlsZXMgdG8gJGluc3RhbGxfYmFzZVxuIjsKKyAgfQorICAKKyAgaWYgKCRwZXJsX2luc3RhbGwgZXEgImRpc2FibGVkIiAmJiAkcGVybCBlcSAiZW5hYmxlZCIpIHsKKyAgICBwcmludCAiVHlwZSBubWFrZSBwZXJsX2luc3RhbGwgdG8gaW5zdGFsbCB0aGUgUGVybCBtb2R1bGVzXG4iOworICB9CisKKyAgcHJpbnQgIlxuRG9uZSFcbiI7ICAKK30gIyBzdWIgYnVpbGQKKworCisKKworc3ViIGNyZWF0ZV9wZXJsX3BhY2thZ2UgeworCisgIHByaW50ICJcblxuQ3JlYXRpbmcgUGVybCBwYWNrYWdlOlxuIjsKKyAgcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iOworICAKKyAgY2hkaXIgJHBlcmxfZGlyIHx8IGRpZSAoIkNvdWxkIG5vdCBlbnRlciBQZXJsIGRpcmVjdG9yeTogJHBlcmxfZGlyIik7CisgIAorICBzeXN0ZW0oIm5tYWtlIHBwZCA+IHBlcmxwYWNrYWdlLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgcGVybHBhY2thZ2Uub3V0KSI7CisgICNyZW5hbWUoIkJ1bmRsZS1OZXRTTk1QLnBwZCIsIk5ldFNOTVAucHBkIikgfHwgZGllICJDb3VsZCBub3QgcmVuYW1lIEJ1bmRsZS1OZXRTTk1QLnBwZCB0byBOZXRTTk1QLnBwZCI7CisgIAorICB7CisgICAgbXkgJGZpbGVfb3V0ID0gIk5ldFNOTVAucHBkIjsKKyAgICBteSAkZmlsZV9pbiA9ICJCdW5kbGUtTmV0U05NUC5wcGQiOworICAKKyAgICBvcGVuIChGSUxFX09VVCwgIj4kZmlsZV9vdXQiKSB8fCBkaWUgIkNhbid0IE9wZW4gJGZpbGVfb3V0XG4iOworICAgIG9wZW4gKEZJTEVfSU4sICI8JGZpbGVfaW4iKSB8fCBkaWUgIkNhbid0IE9wZW4gJGZpbGVfaW5cbiI7CisgICAgCisgICAgcHJpbnQgImNyZWF0aW5nICRmaWxlX291dFxuIjsKKyAgCisgICAgd2hpbGUgKDxGSUxFX0lOPikKKyAgICB7CisgICAgICBjaG9tcDsKKyAgICAgIHMvXjxTT0ZUUEtHIE5BTUUuKi88U09GVFBLRyBOQU1FPSJOZXRTTk1QIiBWRVJTSU9OPSIkdmVyc2lvbl9mb3JfcGVybCI+LzsKKyAgICAgIHMvLio/PFRJVExFPi4qLyAgICA8VElUTEU+TmV0LVNOTVA8XC9USVRMRT4vOworICAgICAgcy8uKj88QUJTVFJBQ1Q+LiovICAgIDxBQlNUUkFDVD5PYmplY3QgT3JpZW50ZWQgSW50ZXJmYWNlIHRvIE5ldC1TTk1QPFwvQUJTVFJBQ1Q+LzsKKyAgICAgIHMvLio/PENPREVCQVNFLiovICAgICAgICA8Q09ERUJBU0UgSFJFRj0ieDg2XC9OZXRTTk1QLnRhci5neiIgXC8+LzsKKyAgCisgICAgICBwcmludCBGSUxFX09VVCAkXyAuICJcbiI7CisgICAgfQorICAgIGNsb3NlIEZJTEVfSU47CisgICAgY2xvc2UgRklMRV9PVVQ7CisgIH0KKyAgCisgIHByaW50ICJDb21wcmVzc2luZyBQZXJsIG1vZHVsZXNcbiI7CisgIHVubGluayAiTmV0U05NUC50YXIiOworICB1bmxpbmsgIk5ldFNOTVAudGFyLmd6IjsKKyAgdW5saW5rICJwZXJsLXRhci5vdXQiOworICB1bmxpbmsgInBlcmwtZ3ppcC5vdXQiOworICBwcmludCAiICBDcmVhdGluZyBQZXJsIHRhciBmaWxlXG4iOworICBpZiAoc3lzdGVtKCJcIiR0YXJfY29tbWFuZFwiIGN2ZiBOZXRTTk1QLnRhciBibGliID4gcGVybC10YXIub3V0IDI+JjEiKSkgeyBkaWUgKCJDb3VsZCBub3QgY3JlYXRlIHRhciBmaWxlLiAgU2VlIHBlcmwtdGFyLm91dCIpOyB9CisgIHByaW50ICIgIENvbXByZXNzaW5nIFBlcmwgdGFyIGZpbGVcbiI7CisgIGlmIChzeXN0ZW0oIlwiJGd6aXBfY29tbWFuZFwiIC0tYmVzdCBOZXRTTk1QLnRhciA+IHBlcmwtZ3ppcC5vdXQgMj4mMSIpKSB7IGRpZSAoIkNvdWxkIG5vdCBjb21wcmVzcyB0YXIgZmlsZSB3aXRoIGd6aXAuIFNlZSBwZXJsLWd6aXAub3V0Iik7IH0KKyAgIAorICAjIFJlbW92ZSBjaGRpci4uCisgIGNoZGlyICRwZXJsX2RpciB8fCBkaWUgKCJDb3VsZCBub3QgZW50ZXIgUGVybCBkaXJlY3Rvcnk6ICRwZXJsX2RpciIpOworICBta2RpciAoIiRpbnN0YWxsX2Jhc2UvcGVybCIpOworICBta2RpciAoIiRpbnN0YWxsX2Jhc2UvcGVybC94ODYiKTsKKyAgJmNoZWNrX2Rpcl9leGlzdHMoIiRpbnN0YWxsX2Jhc2UvcGVybCIpOworICAmY2hlY2tfZGlyX2V4aXN0cygiJGluc3RhbGxfYmFzZS9wZXJsL3g4NiIpOworICBjb3B5KCJOZXRTTk1QLnBwZCIsIiRpbnN0YWxsX2Jhc2UvcGVybC8iKSB8fCBkaWUgKCJDb3VsZCBub3QgY29weSBmaWxlOiAkPyIpOworICBjb3B5KCJOZXRTTk1QLnRhci5neiIsIiRpbnN0YWxsX2Jhc2UvcGVybC94ODYvIikgfHwgZGllICgiQ291bGQgbm90IGNvcHkgZmlsZTogJD8iKTsKK30gICMgc3ViIGNyZWF0ZV9wZXJsX3BhY2thZ2UKKworc3ViIGNoZWNrX2Rpcl9leGlzdHMgeworICBteSAkZGlyID0gc2hpZnQ7CisgIGlmICghIC1kICRkaXIpIHsKKyAgICBkaWUgIkRpcmVjdG9yeSAkZGlyIGlzIG1pc3NpbmdcbiI7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvd2luMzIvZGlzdC9odG1saGVscC9EZXZlbG9wZXJfRkFRLmh0bWwgYi93aW4zMi9kaXN0L2h0bWxoZWxwL0RldmVsb3Blcl9GQVEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODBhY2JjCi0tLSAvZGV2L251bGwKKysrIGIvd2luMzIvZGlzdC9odG1saGVscC9EZXZlbG9wZXJfRkFRLmh0bWwKQEAgLTAsMCArMSw3ODYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8dGl0bGU+cnN0b3J5J3MgTkVULVNOTVAgRGV2ZWxvcGVycyBGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucyBQYWdlPC90aXRsZT4KKyAgPC9oZWFkPgorCisgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIGJhY2tncm91bmQ9InVjZC1zbm1wLWJnMy5naWYiPgorICAgIDxkaXYgYWxpZ249Y2VudGVyPgorICAgIDxoMT5yc3RvcnkncyBORVQtU05NUCBEZXZlbG9wZXJzIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zIFBhZ2U8L2gxPgorICAgIDwvZGl2PgorPGhyPgorICAgIDxkaXYgYWxpZ249Y2VudGVyPgorICAgIDxmb250IHNpemU9LTE+CisgICAgICA8YSBocmVmPSJGQVEuaHRtbCI+W09mZmljaWFsIEZBUV08L2E+IHwgCisJPGEgaHJlZj0iI3Rva2VucyI+W0RlYnVnIHRva2Vuc108L2E+IHwgCisJPGEgaHJlZj0iI2FnZW50eCI+W0FnZW50WF08L2E+IHwgCisJPGEgaHJlZj0iI2luc3RhbGwiPltJbnN0YWxsXTwvYT4gfCAKKwk8YSBocmVmPSIjZGlzYWJsZSI+W0Rpc2FibGVdPC9hPiB8IAorCTxhIGhyZWY9IiNlcnJvcnMiPltFcnJvcnNdPC9hPiB8IAorCTxhIGhyZWY9IiNiaXRzIj5bQml0c108L2E+IHwgCisJPGEgaHJlZj0iI2VtYmVkZGVkIj5bZW1iZWRkZWQgcGVybF08L2E+IHwgCisJPGEgaHJlZj0iI3NtdXgiPltTTVVYXTwvYT4gfCAKKwk8YSBocmVmPSIjZW50aWQiPltFbnRlcnByaXNlIE9JRF08L2E+IHwgCisJPGEgaHJlZj0iI2F1dG9kZXBzIj5bQXV0b21hdGljIGRlcGVuZGVuY2llc108L2E+IHwgCisJPGEgaHJlZj0iI2Nyb3NzIj5bQ3Jvc3MgY29tcGlsaW5nXTwvYT4gfCAKKwk8YSBocmVmPSIjc3RhdGljIj5bU3RhdGljIGxpbmtpbmddPC9hPiB8IAorCTxhIGhyZWY9IiNyZWFkZmRzIj5bcmVhZGZkc108L2E+IHwgCisJPGEgaHJlZj0iI3NoYXJpbmciPltTaGFyaW5nIGRhdGFdPC9hPiB8IAorCTxhIGhyZWY9Im1hbjEtbWliMmMuMS5odG1sIj5bbWliMmMuYXJyYXktdXNlci5jb25mXTwvYT4gfCAKKwk8YSBocmVmPSIjc3RlcHMiPltCYWJ5IFN0ZXBzIGZsb3ddPC9hPiB8IAorICAgICAgPC9mb250PgorICAgIDwvZGl2PgorPGhyPgorVGhpcyBpcyBqdXN0IGEgcXVpY2sgcGFnZSB0byBhbnN3ZXIgc29tZSBjb21tb24gcXVlc3Rpb25zIHRoYXQgYXJlbid0IGNvdmVyZWQKK2luIHRoZSA8YSBocmVmPSIvRkFRLmh0bWwiPm9mZmljaWFsIEZBUTwvYT4uCisKKzxhIG5hbWU9ImFnZW50eCI+PC9hPiA8aDI+QWdlbnRYPC9oMj4KKzxwcmU+IFRvIGhhdmUgdGhlIHN1Yi1hZ2VudCBjb21tdW5pY2F0ZSBvbiBhIGRpZmZlcmVudCBzb2NrZXQsIG9yIHdpdGgKK2RpZmZlcmVudCBwZXJtaXNzaW9ucywgYWRkIHRoZXNlIGxpbmUgdG8geW91ciBzbm1wZC5jb25mCisKKwkjIHNvY2tldCBwYXRoCisJYWdlbnR4c29ja2V0IC90bXAvYWdlbnR4CisKKwkjIHBlcm1zIHNvY2tldCBkaXJlY3RvcnkgdXNlcmlkIGdyb3VwaWQKKwlhZ2VudHhwZXJtcyA3NzcgNzc3IHJzdG9yeSByc3RvcnkKKworCithbmQgYWRkIHRoaXMgbGluZSB0byB5b3VyIHN1YmFnZW50OgorCisJbmV0c25tcF9kc19zZXRfc3RyaW5nKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIE5FVFNOTVBfRFNfQUdFTlRfWF9TT0NLRVQsICIvdG1wL2FnZW50eCIpOworCisqYmVmb3JlKiB5b3UgY2FsbCBpbml0X2FnZW50KCkuCisKKyA8L3ByZT4KKworPGEgbmFtZT0iaW5zdGFsbCI+PC9hPjxoMj5pbnN0YWxsPC9oMj4KKzxwcmU+IElOU1RBTExfUFJFRklYIGdvZXMgYmVmb3JlIGV2ZXJ5dGhpbmcuLiBzbywgd2l0aCB0aGUgZGVmYXVsdHMsIGp1c3QKK3NldHRpbmcgSU5TVEFMTF9QUkVGSVg9L3RtcCB3b3VsZCByZXN1bHQgaW4gL3RtcC91c3IvbG9jYWwuLiAKK3NvIElOU1RBTExfUFJFRklYPS90bXAgcHJlZml4PS91c3IgZXhlY19wcmVmaXg9L3VzciB3b3VsZCBnbyBpbnRvIC90bXAvdXNyCisgPC9wcmU+CisKKzxhIG5hbWU9ImRpc2FibGUiPjwvYT48aDI+ZGlzYWJsZTwvaDI+Cis8cHJlPiBJZiB5b3UgYXJlIHVzaW5nIG5ldC1zbm1wIFZlcnNpb24gPj0gNS4xLCB0aGVuIHRoZSBmb2xsb3dpbmcgY29uZmlndXJlCitvcHRpb25zIG1heSBiZSB1c2VmdWwgdG8geW91OgorCisgIC0tZGlzYWJsZS1hZ2VudCAgICAgICAgICAgICAgICAgRG8gbm90IGJ1aWxkIHRoZSBhZ2VudCAoc25tcGQpLgorICAtLWRpc2FibGUtYXBwbGljYXRpb25zICAgICAgICAgIERvIG5vdCBidWlsZCB0aGUgYXBwcyAoc25tcGdldCwgLi4uKS4KKyAgLS1kaXNhYmxlLW1hbnVhbHMgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCB0aGUgbWFudWFscy4KKyAgLS1kaXNhYmxlLXNjcmlwdHMgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCB0aGUgc2NyaXB0cyAobWliMmMsIC4uLikuCisgIC0tZGlzYWJsZS1taWJzICAgICAgICAgICAgICAgICAgRG8gbm90IGluc3RhbGwgdGhlIG1pYiBmaWxlcy4KKyAgLS1kaXNhYmxlLW1pYi1sb2FkaW5nICAgICAgICAgICAgRG8gbm90IGluY2x1ZGUgY29kZSB0aGF0IHBhcnNlcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaXB1bGF0ZXMgdGhlIG1pYiBmaWxlcy4KKyA8L3ByZT4KKworPGEgbmFtZT0iZXJyb3JzIj48L2E+PGgyPmVycm9yczwvaDI+Cis8cHJlPiBmcm9tIFJGQyAzNDE2OgorCisgICAgICAgICAgICAgICAgICAgbm9FcnJvcigwKSwKKyAgICAgICAgICAgICAgICAgICB0b29CaWcoMSksCisgICAgICAgICAgICAgICAgICAgbm9TdWNoTmFtZSgyKSwgICAgICAtLSBmb3IgcHJveHkgY29tcGF0aWJpbGl0eQorICAgICAgICAgICAgICAgICAgIGJhZFZhbHVlKDMpLCAgICAgICAgLS0gZm9yIHByb3h5IGNvbXBhdGliaWxpdHkKKyAgICAgICAgICAgICAgICAgICByZWFkT25seSg0KSwgICAgICAgIC0tIGZvciBwcm94eSBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgICAgZ2VuRXJyKDUpLAorICAgICAgICAgICAgICAgICAgIG5vQWNjZXNzKDYpLAorICAgICAgICAgICAgICAgICAgIHdyb25nVHlwZSg3KSwKKyAgICAgICAgICAgICAgICAgICB3cm9uZ0xlbmd0aCg4KSwKKyAgICAgICAgICAgICAgICAgICB3cm9uZ0VuY29kaW5nKDkpLAorICAgICAgICAgICAgICAgICAgIHdyb25nVmFsdWUoMTApLAorICAgICAgICAgICAgICAgICAgIG5vQ3JlYXRpb24oMTEpLAorICAgICAgICAgICAgICAgICAgIGluY29uc2lzdGVudFZhbHVlKDEyKSwKKyAgICAgICAgICAgICAgICAgICByZXNvdXJjZVVuYXZhaWxhYmxlKDEzKSwKKyAgICAgICAgICAgICAgICAgICBjb21taXRGYWlsZWQoMTQpLAorICAgICAgICAgICAgICAgICAgIHVuZG9GYWlsZWQoMTUpLAorICAgICAgICAgICAgICAgICAgIGF1dGhvcml6YXRpb25FcnJvcigxNiksCisgICAgICAgICAgICAgICAgICAgbm90V3JpdGFibGUoMTcpLAorICAgICAgICAgICAgICAgICAgIGluY29uc2lzdGVudE5hbWUoMTgpCisgPC9wcmU+CisKKzxhIG5hbWU9ImJpdHMiPjwvYT48aDI+Yml0czwvaDI+Cis8cHJlPiBTTk1QdjEgdXNlIEJJVCBTVFJJTkdzIChSRkMgMTIxMiwgNS4xLjEpOgorCisgICAgICAgICAgKDMpICBBbiBvYmplY3Qgd2l0aCBCSVQgU1RSSU5HIHN5bnRheCBjb250YWluaW5nIG5vIG1vcmUgdGhhbgorICAgICAgICAgICAgICAgMzIgYml0cyBiZWNvbWVzIGFuIElOVEVHRVIgZGVmaW5lZCBhcyBhIHN1bTsgb3RoZXJ3aXNlIGlmCisgICAgICAgICAgICAgICBtb3JlIHRoYW4gMzIgYml0cyBhcmUgcHJlc2VudCwgdGhlIG9iamVjdCBiZWNvbWVzIGFuCisgICAgICAgICAgICAgICBPQ1RFVCBTVFJJTkcsIHdpdGggdGhlIGJpdHMgbnVtYmVyZWQgZnJvbSBsZWZ0LXRvLXJpZ2h0LAorICAgICAgICAgICAgICAgaW4gd2hpY2ggdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgdGhlIGxhc3Qgb2N0ZXQgbWF5CisgICAgICAgICAgICAgICBiZSAicmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UiLgorCitTTk1QdjIgYW5kIGJleW9uZCB1c2VzIEJJVFMgKFJGQyAzNDE3LCA4LjEpOgorCisgICAoMykgICBXaGVuIGVuY29kaW5nIGFuIG9iamVjdCB3aG9zZSBzeW50YXggaXMgZGVzY3JpYmVkIHVzaW5nIHRoZQorICAgICAgICAgQklUUyBjb25zdHJ1Y3QsIHRoZSB2YWx1ZSBpcyBlbmNvZGVkIGFzIGFuIE9DVEVUIFNUUklORywgaW4KKyAgICAgICAgIHdoaWNoIGFsbCB0aGUgbmFtZWQgYml0cyBpbiAodGhlIGRlZmluaXRpb24gb2YpIHRoZSBiaXRzdHJpbmcsCisgICAgICAgICBjb21tZW5jaW5nIHdpdGggdGhlIGZpcnN0IGJpdCBhbmQgcHJvY2VlZGluZyB0byB0aGUgbGFzdCBiaXQsCisgICAgICAgICBhcmUgcGxhY2VkIGluIGJpdHMgOCAoaGlnaCBvcmRlciBiaXQpIHRvIDEgKGxvdyBvcmRlciBiaXQpIG9mCisgICAgICAgICB0aGUgZmlyc3Qgb2N0ZXQsIGZvbGxvd2VkIGJ5IGJpdHMgOCB0byAxIG9mIGVhY2ggc3Vic2VxdWVudAorICAgICAgICAgb2N0ZXQgaW4gdHVybiwgZm9sbG93ZWQgYnkgYXMgbWFueSBiaXRzIGFzIGFyZSBuZWVkZWQgb2YgdGhlCisgICAgICAgICBmaW5hbCBzdWJzZXF1ZW50IG9jdGV0LCBjb21tZW5jaW5nIHdpdGggYml0IDguICBSZW1haW5pbmcgYml0cywKKyAgICAgICAgIGlmIGFueSwgb2YgdGhlIGZpbmFsIG9jdGV0IGFyZSBzZXQgdG8gemVybyBvbiBnZW5lcmF0aW9uIGFuZAorICAgICAgICAgaWdub3JlZCBvbiByZWNlaXB0LgorIDwvcHJlPgorCis8YSBuYW1lPSJlbWJlZGRlZCI+PC9hPiA8aDI+ZW1iZWRkZWQgcGVybDwvaDI+Cis8cHJlPiBBZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHNubXBkLmNvbmY6CisgCisgICBwZXJsIGRvICIvcGF0aC90by9wZXJsX21vZHVsZS5wbCIKKworCitUbyB0ZXN0OgorCisxKSBUcnkgc3RhcmluZyB1cCBzbm1wZCwgbGlrZSBzbzogJ3NubXBkIC1EcGVybCcuIENoZWNrIHlvdXIgbG9nIGZpbGVzIGZvcjoKKworICBwZXJsOiBpbml0aWFsaXppbmcgcGVybCAoL3RtcC9zbm1wX3BlcmwucGwpCisgIHN0YXJ0aW5nIHBlcmxfbW9kdWxlLnBsCisgIHBlcmxfbW9kdWxlLnBsIGxvYWRlZCBvaworICByZWdpc3RlcmluZyBhdCBuZXRTbm1wLjk5OQorCitJZiB5b3UgZ2V0OgorCisgIHBlcmw6IGluaXRpYWxpemluZyBwZXJsICgvdXNyL2xvY2FsL3NoYXJlL3NubXAvc25tcF9wZXJsLnBsKQorICBDYW4ndCBvcGVuIHBlcmwgc2NyaXB0ICIvdXNyL2xvY2FsL3NoYXJlL3NubXAvc25tcF9wZXJsLnBsIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorICBlbWJlZGRlZCBwZXJsIHN1cHBvcnQgZmFpbGVkIHRvIGluaXRhbGl6ZQorCitUaGVuIHlvdSBuZWVkIHRvIGxvY2F0ZSBzbm1wX3BlcmwucGwsIGFuZCBwdXQgaXQgaW4gdGhlIGNvcnJlY3QgcGF0aCwgT1IgcHV0Cit0aGUgcGF0aCBpbiB5b3VyIHNubXBkLmNvbmY6CisKKwlwZXJsSW5pdEZpbGUgL3RtcC9zbm1wX3BlcmwucGwKKworCisyKSBPbmNlIGl0J3MgbG9hZGVkIG9rLCB0cnkgYSB3YWxrOgorCisJc25tcHdhbGsgLXYyYyAtYyBwdWJsaWMgbG9jYWxob3N0IG5ldFNubXAuOTk5CisKK1lvdSBzaG91bGQgc2VlIHNvbWV0aGluZyBsaWtlIHRoaXMgaW4geW91ciBsb2dzOgorCisgcmVmczogTmV0U05NUDo6YWdlbnQ6Om5ldHNubXBfbWliX2hhbmRsZXIsIE5ldFNOTVA6OmFnZW50OjpyZWdpbmZvLCBOZXRTTk1QOjphZ2VudDo6bmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8sIE5ldFNOTVA6OmFnZW50OjpuZXRzbm1wX3JlcXVlc3RfaW5mb1B0cgorcHJvY2Vzc2luZyBhIHJlcXVlc3Qgb2YgdHlwZSAxNjEKKyAgIHByb2Nlc3NpbmcgcmVxdWVzdCBvZiBuc1RyYW5zYWN0aW9uRW50cnkuMworICAgIC4xLjMuNi4xLjQuMS44MDcyLjk5OS4xLjIuMSAtPiBoZWxsbyB3b3JsZAorICAgZmluaXNoZWQgcHJvY2Vzc2luZworCiszKSBJZiBub3QsIG1heWJlIGNoZWNrIC9wYXRoL3RvL3BlcmxfbW9kdWxlLnBsIGFuZCBtYWtlIHN1cmUgaXQgaXMgZXhlY3V0YWJsZS4KKworSG9wZSB0aGF0IGhlbHBzLgorCisgPC9wcmU+CisKKzxhIG5hbWU9InNtdXgiPjwvYT4gPGgyPlNNVVg8L2gyPgorPHByZT4gVG8gdHVybiBvZmYgU01VWCB3aGVuIHlvdSBkb24ndCBoYXZlIHRoZSBvcHRpb25zIG9mIHJlY29tcGlsaW5nIGZyb20gc291cmNlCit0byBkaXNhYmxlIFNNVVggc3VwcG9ydCwgeW91IGhhdmUgdG8gZ2l2ZSBpdCBhbiBpbnZhbGlkIElQIGFkZHJlc3MgdG8gYmluZAordG8uIFRoaXMgbWF5IGJlIE9TIHNwZWNpZmljLiBPbiBMaW51eCwgaWYgSSBwdXQgdGhpcyBpbiBteSBzbm1wZC5jb25mOgorCisJc211eHNvY2tldCAxLjAuMC4wCisKK0kgZ2V0IGFuIGVycm9yIGF0IHN0YXJ0dXAsIGFuZCBsc29mIG9yIG5ldHN0YXQgc2hvdyB0aGF0IHNubXBkIGlzIG5vIGxvbmdlcgorbGlzdGVudGluZyBvbiBwb3J0IDE5OS4gSWYgeW91IGdldCBhbmQgZXJyb3IgbWVzc2FnZSBhYm91dCB0aGUgc211eHNvY2tldAordG9rZW4gbm90IGJlaW5nIHJlY29uZ25pemVkLCB0aGVuIHlvdSdyZSBvdXQgb2YgbHVjay4gWW91J2xsIGhhdmUgdG8gcmVjb21waWxlCitmcm9tIHNvdXJjZSAob3IganVzdCB1c2UgbG9jYWwgZmlyZXdhbGwgcnVsZXMgdG8gYmxvY2sgY29ubmVjdGlvbnMgdG8gcG9ydAorMTk5KS4KKyA8L3ByZT4KKworPGEgbmFtZT0iZW50aWQiPjwvYT4gPGgyPkVudGVycHJpc2UgT0lEPC9oMj4KKzxwcmU+IEZyb206IERhdmUgU2hpZWxkLCBST2JlcnQgU3RvcnkKKworUmVjZW50IFZlcnNpb25zICg1LngpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0lmIHlvdSB3YW50IHRvICpqdXN0KiBjaGFuZ2UgdGhlIHN5c09iamVjdElEIG51bWJlcmluZywKKyhhbmQgbGVhdmUgdGhlIG5vdGlmaWNhdGlvbnMgdXNpbmcgdGhlIE5ldC1TTk1QIGVudGVycHJpc2UgT0lEKQordGhlbiB1c2UgIC0td2l0aC1lbnRlcnByaXNlLXN5c29pZAorT3IgeW91IGNvdWxkIGp1c3QgdXNlIHRoZSBzbm1wZC5jb25mIGRpcmVjdGl2ZSAnc3lzb2JqZWN0aWQnCit0byBzZXQgdGhpcyBhdCBydW4gdGltZS4KKworCitJZiB5b3Ugd2FudCB0byAqanVzdCogY2hhbmdlIGVudGVycHJpc2Utc3BlY2lmaWMgbm90aWZpY2F0aW9uIE9JRAorKGFuZCBsZWF2ZSB0aGUgc3lzT2JqZWN0SUQgdXNpbmcgdGhlIE5ldC1TTk1QIHZhbHVlcykKK3RoZW4gdXNlICAtLXdpdGgtZW50ZXJwcmlzZS1ub3RpZmljYXRpb24tb2lkCisKKworSWYgeW91IHdhbnQgdG8gY2hhbmdlICpib3RoKiBvZiB0aGVzZSwKK3RoZW4gdXNlIC0td2l0aC1lbnRlcnByaXNlLW9pZAorCitPbGRlciBWZXJzaW9ucyAoNC4yLngpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbiBvbGRlciB2ZXJzaW9uLCB5b3UgaGF2ZSB0byBtYW51YWxsIHVwZGF0ZSB0aGUgdmVyc2lvbl9pZCBpbgorYWdlbnQvYWdlbnRfdHJhcC5jOjgwCisKKyAgIG9pZCB2ZXJzaW9uX2lkW10gICAgPSB7IEVYVEVOU0lCTEVNSUIsIEFHRU5USUQsIE9TVFlQRSB9OworCisgPC9wcmU+CisKKzxhIG5hbWU9ImF1dG9kZXBzIj48L2E+IDxoMj5BdXRvbWF0aWMgZGVwZW5kZW5jaWVzPC9oMj4KKzxwcmU+IEZvciBhdXRvLWRlcGVuZGVuY2llcywgYWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciBNYWtlZmlsZToKKworIworIyBCdWlsZCBydWxlcworIworJS5kIDogJS5jCisJQGVjaG8gIkdlbmVyYXRpbmcgbWFrZWZpbGUgJEAgLi4uIgorCUBzZXQgLWU7ICQoQ0MpIC1NICQoQ09QVFMpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkPCBcCisJfCBzZWQgJ3MvXCgkKlwpXC5vWyA6XSovXDEubyAkQCA6IC9nJyA+ICRAOyBcCisJWyAtcyAkQCBdIHx8ICQoUk0pICQoUk1GTEFHUykgJEAKKworaW5jbHVkZSAkKFNPVVJDRVM6LmM9LmQpCisKKyA8L3ByZT4KKworPGEgbmFtZT0iY3Jvc3MiPjwvYT4gPGgyPkNyb3NzIGNvbXBpbGluZzwvaDI+Cis8cHJlPiBGcm9tIHRoZSBuZXQtc25tcCBJTlNUQUxMIGZpbGU6CisKKyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KKworU3BlY2lmeWluZyB0aGUgU3lzdGVtIFR5cGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgIFRoZXJlIG1heSBiZSBzb21lIGZlYXR1cmVzIGBjb25maWd1cmUnIGNhbiBub3QgZmlndXJlIG91dAorYXV0b21hdGljYWxseSwgYnV0IG5lZWRzIHRvIGRldGVybWluZSBieSB0aGUgdHlwZSBvZiBob3N0IHRoZSBwYWNrYWdlCit3aWxsIHJ1biBvbi4gIFVzdWFsbHkgYGNvbmZpZ3VyZScgY2FuIGZpZ3VyZSB0aGF0IG91dCwgYnV0IGlmIGl0IHByaW50cworYSBtZXNzYWdlIHNheWluZyBpdCBjYW4gbm90IGd1ZXNzIHRoZSBob3N0IHR5cGUsIGdpdmUgaXQgdGhlCitgLS1ob3N0PVRZUEUnIG9wdGlvbi4gIFRZUEUgY2FuIGVpdGhlciBiZSBhIHNob3J0IG5hbWUgZm9yIHRoZSBzeXN0ZW0KK3R5cGUsIHN1Y2ggYXMgYHN1bjQnLCBvciBhIGNhbm9uaWNhbCBuYW1lIHdpdGggdGhyZWUgZmllbGRzOgorICAgICBDUFUtQ09NUEFOWS1TWVNURU0KKworU2VlIHRoZSBmaWxlIGBjb25maWcuc3ViJyBmb3IgdGhlIHBvc3NpYmxlIHZhbHVlcyBvZiBlYWNoIGZpZWxkLiAgSWYKK2Bjb25maWcuc3ViJyBpc24ndCBpbmNsdWRlZCBpbiB0aGlzIHBhY2thZ2UsIHRoZW4gdGhpcyBwYWNrYWdlIGRvZXNuJ3QKK25lZWQgdG8ga25vdyB0aGUgaG9zdCB0eXBlLgorCisgICBJZiB5b3UgYXJlIGJ1aWxkaW5nIGNvbXBpbGVyIHRvb2xzIGZvciBjcm9zcy1jb21waWxpbmcsIHlvdSBjYW4gYWxzbwordXNlIHRoZSBgLS10YXJnZXQ9VFlQRScgb3B0aW9uIHRvIHNlbGVjdCB0aGUgdHlwZSBvZiBzeXN0ZW0gdGhleSB3aWxsCitwcm9kdWNlIGNvZGUgZm9yIGFuZCB0aGUgYC0tYnVpbGQ9VFlQRScgb3B0aW9uIHRvIHNlbGVjdCB0aGUgdHlwZSBvZgorc3lzdGVtIG9uIHdoaWNoIHlvdSBhcmUgY29tcGlsaW5nIHRoZSBwYWNrYWdlLgorCisgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtCisKK1RoZSBtb3N0IGltcG9ydGFudCBjb25maWd1cmUgb3B0aW9ucyBhcmU6CisKKwktLXdpdGgtY2M9W2Nyb3NzLWNvbXBpbGVyXQorCS0td2l0aC1sZD1bY3Jvc3MtbGlua2VyXQorCS0tdGFyZ2V0PVt0YXJnZXQtZW52aXJvbm1lbnRdCisJLS13aXRoLWVuZGlhbm5lc3M9W2JpZ3xsaXR0bGVdCisKK090aGVyIHBvdGVudGlhbGx5IHVzZWZ1bCBvcHRpb25zOgorCisJLS13aXRoLWNmbGFncz0iLi4uIgorCS0td2l0aC1sZGxhZ3M9Ii4uLiIKKwktLXdpdGgtYXI9L3BhdGgvYXIKKworCS0tZW5hYmxlLW1pbmktYWdlbnQKKwktLWVuYWJsZS1zaGFyZWQ9Im5vIgorCS0td2l0aG91dC1waWMKKworVHdvIHNpbXBsZSBleGFtcGxlcyBvZiBjcm9zcy1jb21waWxpbmc6CisKKy4vY29uZmlndXJlIC0tdGFyZ2V0PXBwYy1saW51eCAtLXdpdGgtY2M9cHBjXzQwNS1nY2MgLS13aXRoLWVuZGlhbm5lc3M9YmlnCisKKy4vY29uZmlndXJlIC0tdGFyZ2V0PXBvd2VycGMtc25tYy1saW51eC1nbnUgLS1idWlsZD1pMzg2LXJlZGhhdC1saW51eCBcCisgICAgICAgIC0td2l0aC1lbmRpYW5uZXNzPWJpZworCitBIG1vcmUgY29tcGxleCBleGFtcGxlIGludm9sdmVzIHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBhbGwKK3RoZSBmbGFncyBmb3IgdGhlIHRvb2xzIG5lZWRlZCBmb3IgdGhlIGNyb3NzIGNvbXBpbGU6CisKKyAgIGV4cG9ydCBUT09MUEFUSD0vb3B0L2hhcmRoYXQvZGV2a2l0L3BwYy80MDUKKyAgIGV4cG9ydCBQQVRIPSRUT09MUEFUSC9iaW46JFBBVEgKKyAgIGV4cG9ydCBDRkxBR1M9JyAtZyAtZlBJQyAtbXNvZnQtZmxvYXQgLURfU09GVF9GTE9BVCAtRGxpbnV4IC1tY3B1PTQwMycKKyAgIGV4cG9ydCBDUFBGTEFHUz0nLUkkVE9PTFBBVEgvaW5jbHVkZSAtSSRUT09MUEFUSC90YXJnZXQvdXNyL2luY2x1ZGUnCisgICBleHBvcnQgQVNGTEFHUz0nLWcgLWdzdGFicycKKyAgIGV4cG9ydCBMREZMQUdTPSctV2wsLXNvbmFtZSwtQmR5bmFtaWMgLWxjJyAKKyAgIGV4cG9ydCBMSUI9J2FyIHJjdScgCisKKyAgIC4vY29uZmlndXJlIC0tYnVpbGQ9aTY4Ni1wYy1saW51eC1nbnUgIC0taG9zdD1wb3dlcnBjIFwKKyAgICAgICAgICAgLS10YXJnZXQ9cG93ZXJwYy1oYXJkaGF0LWxpbnV4LWdudSAtLXdpdGgtZW5kaWFubmVzcz1iaWcKKworCisKKyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KKworVGhlIG1pYmdyb3VwIHNlY3Rpb24gaXMgdGhlIG1vc3QgT1Mgc3BlY2lmaWMgcGFydCBvZiB0aGUgYWdlbnQuIEl0J3MgbGlrZWx5Cit0aGF0IHlvdSB3aWxsIGhhdmUgdG8gcmVtb3ZlIHNvbWUgb2YgdGhlbS4gWW91IGp1c3QgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoCitvbmVzIHRvIHJlbW92ZS4gCisKK0ZvciBleGFtcGxlLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jIGlzIGEgY29tbW9uIG1vZHVsZSB0aGF0IGRvZXNuJ3QKK3dvcmsgb24gbmV3IHBsYXRmb3Jtcy4gU28gaWYgaXQgaXNuJ3Qgd29ya2luZywgb21pdCBpdCBkdXJpbmcgY29uZmlndXJlLCBsaWtlCitzbzoKKworCS4vY29uZmlndXJlIC0td2l0aC1vdXQtbWliLW1vZHVsZXM9bWliSUkvdGNwVGFibGUKKworCitBbHRlcm5hdGl2ZWx5LCB5b3UgY291bGQgd29yayB0aGUgb3RoZXIgd2F5LiBTdGFydCB3aXRoIGEgbWluaW1hbAorY29uZmlndXJhdGlvbjoKKworCS4vY29uZmlndXJlIC0tZW5hYmxlLW1pbmktYWdlbnQKKworYW5kIHRoZW4gc3RhcnQgYWRkaW5nIE1JQiBtb2R1bGVzIG9uZS1ieS1vbmU6CisKKwkuL2NvbmZpZ3VyZSAtLWVuYWJsZS1taW5pLWFnZW50CisgICAgICAgICAgICAgICAgICAgIC0td2l0aC1taWItbW9kdWxlcz1taWJJSS9zeXN0ZW1fbWliLG1pYklJL3N5c09SVGFibGUKKworCisgPC9wcmU+CisKKzxhIG5hbWU9InN0YXRpYyI+PC9hPiA8aDI+U3RhdGljIGxpbmtpbmc8L2gyPgorPHByZT4gbVhhdXJlbGl1OiBJIHdhbnQgdG8gY29tcGlsZSB0aGUgNS4xIHNubXB0cmFwZCBiaW5hcnkgd2l0aCBzdGF0aWNhbGx5IGxpbmtlZCBsaWJyYXJpZXMuLiBDYW4gYW55b25lIGhlbHAgbWUgd2l0aCB0aGlzPyBJcyBpdCBqdXN0IGEgc2ltcGxlIGNvbmZpZ3VyZSBzd2l0Y2gKK3JzdG9yeTogbVhhdXJlbGl1OiB5b3Ugd2FudCBzdGF0aWMgc25tcCBsaWJyYXJpZXMsIG9yIHRvdGFsbHkgc3RhdGljIChzeXN0ZW0gbGlicmFyaWVzIHRvbyk/CittWGF1cmVsaXU6IHRvdGFsbHkgc3RhdGljLi4gZXZlcnl0aGluZyBpbiBvbmUgZXhlY3V0YWJsZQorbVhhdXJlbGl1OiBhY3R1YWxseSwgaG93IGRvIGkgZG8gYm90aCB3YXlzPworcnN0b3J5OiBmb3Igc25tcCBsaWJzLCB0cnkgJ2NvbmZpZ3VyZSAtLWVuYWJsZS1zaGFyZWQ9bm8nLi4gdGhhdCB3b24ndCBidWlsZCB0aGUgc2hhcmVkIGxpYnJhcmllcworcnN0b3J5OiAodGhvdWdoIGlmIHlvdSBoYXZlIHByZXZpb3VzIHZlcnNpb25zIG9mIG5ldC1zbm1wIGxpYnJhcmllcyBpbnN0YWxsZWQsIHRoZSBsaW5rZXIgbWlnaHQgcGljayB0aG9zZSB1cCBhbmQgdHJ5IGFuZCB1c2UgdGhlbSkKK3JzdG9yeTogZm9yIHRvdGFsbHkgc3RhdGljLCB5b3UnbGwgaGF2ZSB0byB0d2VhayB0aGUgTWFrZWZpbGUKK3JzdG9yeTogYWRkIC1Cc3RhdGljIHRvIExERkxBR1MKKworW25vdGU6IGFjdHVhbGx5LCBmb3IgdG90YWxseSBzdGF0aWMsICdjb25maWd1cmUgLS13aXRoLWxkZmxhZ3M9LUJzdGF0aWMnXQorIDwvcHJlPgorCis8YSBuYW1lPSJyZWFkZmRzIj48L2E+IDxoMj5yZWFkZmRzPC9oMj4KKzxwcmU+ID4gY2FuIHlvdSBwbGVhc2UgdGVsbCBtZSB0aGUgbWVhbmluZyBvZiB0aGUgdGhpcmQgYXJndW1lbnQuIG9idmlvdXNseSB0aGUgCis+IGZpcnN0IHBhcmFtZXRlciB0byByZWdpc3Rlcl9yZWFkZmQgaXMgYSBmaWxlIGRlc2NyaXB0b3IgYW5kIHNlY29uZCBpcyB0aGUgCis+IGNhbGxiYWNrIGZ1bmN0aW9uLgorCitDb3JyZWN0LgorVGhlIHRoaXJkIHBhcmFtZXRlciBpcyBhcmJpdHJhcnkgZGF0YSB0aGF0IHlvdSBjYW4gc3BlY2lmeSB3aGVuIHlvdQorcmVnaXN0ZXIgdGhlIGZpbGUgZGVzY3JpcHRvciwgYW5kIHdpbGwgdGhlbiBiZSBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrCitmdW5jdGlvbiB3aGVuIGl0J3MgaW52b2tlZC4KKworCitTbyBpZiB5b3Ugd2VyZSBsaXN0ZW5pbmcgb24gdHdvIHNlcGFyYXRlIHNvY2tldHMsIGZvciB2ZXJ5IHNpbWlsYXIKK3R5cGVzIG9mIGRhdGEsIHRoZW4geW91IGNvdWxkIHVzZSB0aGUgc2FtZSBjYWxsYmFjayBmb3IgYm90aCBhbmQKK3VzZSB0aGlzIHRoaXJkIHBhcmFtZXRlciB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZW06CisKKworCWZkMSA9IG9wZW4oICIvcHJvYy90d2VlZGxlZHVtIiApOworCWZkMiA9IG9wZW4oICIvcHJvYy90d2VlZGxlZGVlIiApOworCisJcmVnaXN0ZXJfcmVhZGZkKCBmZDEsIHdob19icm9rZV90aGVfcmF0dGxlKCksICJ0d2VlZGxlZGVlIiApOworCXJlZ2lzdGVyX3JlYWRmZCggZmQyLCB3aG9fYnJva2VfdGhlX3JhdHRsZSgpLCAidHdlZWRsZWR1bSIgKTsKKworCit2b2lkCit3aG9fYnJva2VfdGhlX3JhdHRsZSggaW50IGZkLCB2b2lkICpkYXRhICkKK3sKKyAgICBjaGFyICpoZV9kaWQgPSAoY2hhciAqKWRhdGE7CisKKyAgICBwcmludGYoIiVzIGJyb2tlIHRoZSByYXR0bGUhXG4iLCBoZV9kaWQgKTsKK30KKworIDwvcHJlPgorCis8YSBuYW1lPSJzaGFyaW5nIj48L2E+IDxoMj5zaGFyaW5nIGRhdGE8L2gyPgorPHByZT4gSWYgdHdvIG1vZHVsZXMgYXJlIGNvbXBpbGVkIGludG8gdGhlIHNhbWUgYWdlbnQvc3ViYWdlbnQsIHRoZW4ganVzdCB1c2UgYQorbm9ybWFsIEMgZ2xvYmFsIHZhci4gTm8gbmVlZCB0byBpbnZvbHZlIG5ldC1zbm1wIGluIHRoZSBwcm9jZXNzLgorCitpZiB0aGV5IGFyZSBkaWZmZXJlbnQgc3ViLWFnZW50cywgeW91IGFyZSBiZXR0ZXIgb2ZmIHVzaW5nIHRyYWRpdGlvbiBJUEMKK21lY2hhbmlzbXMuIHRoZXJlIGlzIG5vIG5ldC1zbm1wIGFwaSBmb3Igc2hhcmluZyBkYXRhIGJldHdlZW4gc3ViYWdlbnRzLgorCitUaGF0IHNhaWQsICpJRiogeW91IG9ubHkgbmVlZCB0aGUgZGF0YSBkdXJpbmcgcHJvY2Vzc2luZyBvZiBHRVQgcmVxdWVzdHMsIG9yCit3aGVuIHlvdSBhcmVuJ3QgcHJvY2Vzc2luZyBhIHJlcXVlc3QgYXQgYWxsLCB5b3Ugc2VuZCBhIHNubXAgcmVxdWVzdCB0byB0aGUKK21hc3Rlciwgd2hpY2ggd2lsbCBxdWVyeSB0aGUgb3RoZXIgc3ViYWdlbnQuIElmIHlvdSBhcmUgcHJvY2Vzc2luZyBhIEdFVAorcmVxdWVzdCBhbmQgYXJlIGNvbXBpbGVkIGludG8gdGhlIG1hc3RlciwgeW91IHdpbGwgaGF2ZSB0byBkZWxlZ2F0ZSB0aGUKK2N1cnJlbnQgcmVxdWVzdCkuCisKK0l0J3MgYSBsaXR0bGUgaW5lZmZpY2llbnQsIGNvbXBhcmVkIHRvIGRpcmVjdCBjb21tdW5pY2F0aW9uIHcvdGhlIG90aGVyCitzdWJhZ2VudCBhbmQgaXQgKndpbGwgbm90KiB3b3JrIGR1cmluZyBzZXQgcHJvY2Vzc2luZy4KKyA8L3ByZT4KKworPGEgbmFtZT0idG9rZW5zIj48L2E+IDxoMj5EZWJ1ZyBUb2tlbnM8L2gyPgorPHByZT4gU29tZSBvZiB0aGUgbW9yZSBjb21tb24gb25lcyBhcmU6CisKKyAgIEFnZW50OiBhZ2VudCwgYWdlbnR4LCBkbG1vZCwgaGFuZGxlciwgaGVscGVyLCBzbm1wZCwgdHJhcCwgdGFibGUKKyAgIE1JQnM6IGluaXRfbWliLCBtaWJfaW5pdCwgcGFyc2UtZmlsZSwgcGFyc2UtbWlicworICAgQXBwczogcmVhZF9jb25maWcKKworQWRkIHRoZW0gdG8geW91ciBzbm1wLmNvbmYgbGlrZSBzbzoKKworICAgIyBvcHRpb25hbGx5IHR1cm4gb24gdGltZSBzdGFtcHMKKyAgIGxvZ1RpbWVzdGFtcCB0cnVlCisgICBkb0RlYnVnZ2luZyAxCisgICBkZWJ1Z1Rva2VucyBhZ2VudHgvY29uZmlnCisKK0lmIHlvdSBwdXQgdGhlbSBpbiBhIGRpZmZlcmVudCBjb25mIGZpbGUsIGxpa2Ugc25tcGQuY29uZiBvciBteWFwcC5jb25mLAorcHJlZml4IGVhY2ggd2l0aCAnW3NubXBdJywgbGlrZSBzbzoKKworICAgW3NubXBdIGRvRGVidWdnaW5nIDEKKworCitUaGlzIGxpc3Qgd2FzIGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBpbiB0aGUgbWFpbiBDVlMgYnJhbmNoOgorCitmaW5kIC4gLW5hbWUgXCIqLmNcIiAtcHJpbnQgfCB4YXJncyBncmVwIERFQlVHTVNHVCB8IGdyZXAgXCIgfCBjdXQgLWYgMiAtZFwiIHwgc29ydCAtdQorCithZGQKK2FnZW50X2hhbmRsZXIKK2FnZW50X3JlZ2lzdHJ5CithZ2VudF9zZXQKK2FnZW50eAorYWdlbnR4X2J1aWxkCithZ2VudHhfYnVpbGRfdmFyYmluZAorYWdlbnR4L2NvbmZpZworYWdlbnR4L2NvbmZpZy9yZXRyaWVzCithZ2VudHgvY29uZmlnL3RpbWVvdXQKK2FnZW50eC9tYXN0ZXIKK2FnZW50eC9zdWJhZ2VudAorYWdlbnR4L3N1YmdhZW50Cithc25fcmVhbGxvYworYXV0b19ubGlzdAorYnVpbGRfb2lkX25vYWxsb2MKK2J1aWxkX29pZF9zZWdtZW50CitjYWxsYmFjaworY2FsbGJhY2tfY2xlYXIKK2NoZWNrX2dldG5leHRfcmVzdWx0cworY2xlYXJfbnNhcF9saXN0Citjb21wYXJlOmluZGV4Citjb21wYXJleAorY29udGFpbmVyCitjb250YWluZXJfaXRlcmF0b3IKK2NvbnRhaW5lcl9pdGVyYXRvcjpyZXN1bHRzCitjb250YWluZXI6bnVsbDoKK2NvbnRhaW5lcjpudWxsOmZpbmQKK2NvbnRhaW5lcjpudWxsOmZpbmRfbmV4dAorY29udGFpbmVyOm51bGw6Zm9yX2VhY2gKK2NvbnRhaW5lcjpudWxsOmZyZWUKK2NvbnRhaW5lcjpudWxsOmdldF9udWxsCitjb250YWluZXI6bnVsbDpnZXRfbnVsbF9mYWN0b3J5Citjb250YWluZXI6bnVsbDpnZXRfbnVsbF9ub2FsbG9jCitjb250YWluZXI6bnVsbDppbnNlcnQKK2NvbnRhaW5lcjpudWxsOnJlbW92ZQorY29udGFpbmVyOm51bGw6c2l6ZQorY29udGFpbmVyX3JlZ2lzdHJ5CitkYWVtb25pemUKK2RlaW5pdF91c21fcG9zdF9jb25maWcKK2RlbGF5ZWRfaW5zdGFuY2UKK2RsbW9kCitkdW1wX2V0aW1lbGlzdAorZW5jb2RlX2tleWNoYW5nZQorZXhhbXBsZQorZXhhbXBsZV9kYXRhX3NldAorZXhhbXBsZV9ub3RpZmljYXRpb24KK2V4YW1wbGVfc2NhbGFyX2ludAorZml4dXBfbWliX2RpcmVjdG9yeQorZ2VuZXJhdGVfS3UKK2dlbmVyYXRlX2t1bAorZ2V0X21pYl9kaXJlY3RvcnkKK2hhbmRsZXI6Y2FsbGluZworaGFuZGxlcjppbmplY3QKK2hhbmRsZXI6OnJlZ2lzdGVyCitoYW5kbGVyX3JlZ2lzdHJ5CitoYW5kbGVyOnJldHVybmVkCitoZWFkZXJfY29tcGxleAoraGVhZGVyX2NvbXBsZXhfYWRkX2RhdGEKK2hlYWRlcl9jb21wbGV4X2R1bXAKK2hlYWRlcl9jb21wbGV4X2V4dHJhY3RfZW50cnkKK2hlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZAoraGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfdmFyb2lkCitoZWFkZXJfY29tcGxleF9wYXJzZV9vaWQKK2hlYWRlcl9jb21wbGV4X3Rlc3QKK2hlbHBlcjpiYWJ5X3N0ZXBzCitoZWxwZXI6Y2FjaGVfaGFuZGxlcgoraGVscGVyOmRlYnVnCitoZWxwZXI6aW5zdGFuY2UKK2hlbHBlcjptZmQKK2hlbHBlcjpudWxsCitoZWxwZXI6cmVhZF9vbmx5CitoZWxwZXI6cm93X21lcmdlCitoZWxwZXI6c2NhbGFyCitoZWxwZXI6c2NhbGFyX2dyb3VwCitoZWxwZXI6c2VyaWFsaXplCitoZWxwZXI6c3Rhc2hfY2FjaGUKK2hlbHBlcjp0YWJsZQoraGVscGVyOndhdGNoZXIKK2hlbHBlcjp3YXRjaGVyOnNwaW5sb2NrCitoZWxwZXI6d2F0Y2hlcjp0aW1lc3RhbXAKK2hvc3QvaHJfZGV2aWNlCitob3N0L2hyX2Rpc2sKK2hvc3QvaHJfZmlsZXN5cworaG9zdC9ocl9pbnN0Citob3N0L2hyX25ldHdvcmsKK2hvc3QvaHJfcGFydGl0aW9uCitob3N0L2hyX3ByaW50Citob3N0L2hyX3Byb2MKK2hvc3QvaHJfc3RvcmFnZQoraG9zdC9ocl9zd2luc3QKK2hvc3QvaHJfc3dydW4KK2hvc3QvaHJfc3dydW46OkdldE5leHRIUl9TV1J1bgoraG9zdC9ocl9zeXN0ZW0KK2hyX3Byb2MKK2luaXRpYWxpemVfdGFibGVfaXBDaWRyUm91dGVUYWJsZQoraW5pdGlhbGl6ZV90YWJsZV9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlCitpbml0aWFsaXplX3RhYmxlX210ZUV2ZW50VGFibGUKK2luaXRpYWxpemVfdGFibGVfbmV0U25tcEhvc3RzVGFibGUKK2luaXRpYWxpemVfdGFibGVfbmxtTG9nVGFibGUKK2luaXRpYWxpemVfdGFibGVfbmxtTG9nVmFyaWFibGVUYWJsZQoraW5pdGlhbGl6ZV90YWJsZV9uc01vZHVsZVRhYmxlCitpbml0aWFsaXplX3RhYmxlX25zVHJhbnNhY3Rpb25UYWJsZQoraW5pdF9taWIKK2luaXRfdXNtCitpbmplY3RIYW5kbGVyCitrZXJuZWxfc3Vub3M1Citrc20KK2xjZF9nZXRfZW5naW5ldGltZQorbGNkX2dldF9lbmdpbmV0aW1lX2V4CitsY2Rfc2V0X2VuZ2luZXRpbWUKK2xvZ19ub3RpZmljYXRpb24KK21kNQorbWZkCittaWJJSS9hdAorbWliSUkvaWNtcAorbWliSUkvaW50ZXJmYWNlcworbWliSUkvaXAKK21pYklJL2lwdjYKK21pYklJL210YV9zZW5kbWFpbC5jOm10YV9zZW5kbWFpbF9wYXJzZV9jb25maWcKK21pYklJL210YV9zZW5kbWFpbC5jOm9wZW5fc2VuZG1haWxzdAorbWliSUkvbXRhX3NlbmRtYWlsLmM6cmVhZF9zZW5kbWFpbGNmCittaWJJSS9zbm1wX21pYgorbWliSUkvc3lzT1JUYWJsZQorbWliSUkvdGNwU2NhbGFyCittaWJJSS90Y3BUYWJsZQorbWliSUkvdWRwU2NhbGFyCittaWJJSS91ZHBUYWJsZQorbWliSUkvdmFjbV92YXJzCittaWJJSS92YXJfcm91dGUKK21pYl9pbml0CittdGVfZGlzY28KK210ZUV2ZW50VGFibGU6c2VuZF9ldmVudHMKK210ZU9iamVjdHNUYWJsZQorbXRlVHJpZ2dlckJvb2xlYW5UYWJsZQorbXRlVHJpZ2dlckRlbHRhVGFibGUKK210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZQorbXRlVHJpZ2dlcnRhYmxlCittdGVUcmlnZ2VyVGFibGUKK210ZVRyaWdnZXJUZXN0CittdGVUcmlnZ2VyVGVzdDpzZW5kX210ZV90cmFwCittdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUKK25ldHNubXBfYWFsNXB2YworbmV0c25tcF9hZ2VudF9jaGVja19wYWNrZXQKK25ldHNubXBfZGVyZWdpc3Rlcl9hZ2VudF9uc2FwCituZXRzbm1wX2RzX2hhbmRsZV9jb25maWcKK25ldHNubXBfZHNfc2V0X2Jvb2xlYW4KK25ldHNubXBfZHNfc2V0X2ludAorbmV0c25tcF9kc19zZXRfc3RyaW5nCituZXRzbm1wX2RzX3NldF92b2lkCituZXRzbm1wX2RzX3RvZ2dsZV9ib29sZWFuCituZXRzbm1wX2luc3RhbmNlX2NvdW50ZXIzMl9oYW5kbGVyCituZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyCituZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlcgorbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyCituZXRzbm1wX2lweAorbmV0c25tcF9yZWdpc3Rlcl9hZ2VudF9uc2FwCituZXRzbm1wX3JlZ2lzdGVyX21pYl90YWJsZV9yb3cKK25ldHNubXBfc29ja2FkZHJfaW4KK25ldHNubXBfc29ja2FkZHJfaW42CituZXRzbm1wX3NvY2thZGRyX2lweAorbmV0c25tcF90YWJsZV9kYXRhX3NldAorbmV0c25tcF90Y3AKK25ldHNubXBfdGNwNgorbmV0c25tcF91ZHAKK25ldHNubXBfdWRwNgorbmV0c25tcF91ZHA2X2dldFNlY05hbWUKK25ldHNubXBfdWRwNl9wYXJzZV9zZWN1cml0eQorbmV0c25tcF91ZHBfZ2V0U2VjTmFtZQorbmV0c25tcF91ZHBfcGFyc2Vfc2VjdXJpdHkKK25ldHNubXBfdW5peAorbmV0c25tcF91bml4X2dldFNlY05hbWUKK25ldHNubXBfdW5peF9wYXJzZV9zZWN1cml0eQorbmV0c25tcF91bml4X3RyYW5zcG9ydAorbmV0c3RhdDppZgorbm90aWZpY2F0aW9uX2xvZworbnNDYWNoZVNjYWxhcnMKK25zRGVidWdTY2FsYXJzCitvYmplY3RfbW9uaXRvcgorb2xkX2FwaQorb3V0cHV0CitvdmVycmlkZQorcGFyc2UtZmlsZQorcGFyc2UtbWlicworcGFyc2Vfb2lkCitwYXJzZV9vaWRfaW5kZXhlcworcGVybAorcHJvYworcHJveHkKK3Byb3h5X2FyZ3MKK3Byb3h5X2NvbmZpZworcHJveHlfaW5pdAorcmVhZF9jb25maWcKK3JlYWRfY29uZmlnX2NvcHlfd29yZAorcmVhZF9jb25maWdfZmlsZXMKK3JlYWRfY29uZmlnOmZvcndhcmQKK3JlYWRfY29uZmlnOmluaXRtaWIKK3JlYWRfY29uZmlnX3JlYWRfZGF0YQorcmVhZF9jb25maWdfcmVhZF9tZW1vcnkKK3JlYWRfY29uZmlnX3JlYWRfb2JqaWQKK3JlYWRfY29uZmlnX3JlYWRfb2N0ZXRfc3RyaW5nCityZWFkX2NvbmZpZ19zdG9yZV9kYXRhX3ByZWZpeAorcmVhZF9jb25maWc6dHJhcGhhbmRsZQorcmVnaXN0ZXJfZXhjZXB0ZmQKK3JlZ2lzdGVyX2luZGV4CityZWdpc3Rlcl9taWIKK3JlZ2lzdGVyX3JlYWRmZAorcmVnaXN0ZXJfc2lnbmFsCityZWdpc3Rlcl93cml0ZWZkCityZXBvcnQKK3Jlc3VsdHMKK3NjYWxhcl9pbnQKK3NjYXBpCitzY29wZWRQRFVfcGFyc2UKK3NlbmRfbm90aWZpY2F0aW9ucworc2Vzc19hc3luY19zZW5kCitfc2Vzc19vcGVuCitzZXNzX3Byb2Nlc3NfcGFja2V0CitzZXNzX3JlYWQKK3Nlc3NfcmVzZW5kCitzZXNzX3NlbGVjdAorc2V0dGluZyBhdXRoIHR5cGU6IFwKK3NpZ25hbAorc211eAorc211eF9jb25mCitzbXV4X2luaXQKK3NtdXgvc25tcF9iZ3AKK3NtdXgvc25tcF9vc3BmCitzbXV4L3NubXBfcmlwMgorc25tcF9hZ2VudAorc25tcF9hbGFybQorc25tcF9hcGkKK3NubXBfYnVpbGQKK3NubXBfY2xlYW5fcGVyc2lzdGVudAorc25tcF9jb25maWcKK3NubXBkCitzbm1wZC9tYWluCitzbm1wZF9wb3J0cworc25tcGRfcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyCitzbm1wZC9zZWxlY3QKK3NubXBFbmdpbmUKK3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUKK3NubXBOb3RpZnlGaWx0ZXJUYWJsZQorc25tcE5vdGlmeVRhYmxlCitzbm1wX3BhcnNlCitzbm1wX3BhcnNlX2FyZ3MKK3NubXBfcGFyc2Vfb2lkCitzbm1wX3BkdV9yZWFsbG9jX3JidWlsZAorc25tcF9zYXZlX3BlcnNpc3RlbnQKK3NubXBfc2VuZAorc25tcF9zZXNzX2FkZAorc25tcF9zZXNzX2Nsb3NlCitzbm1wX3Nlc3Nfb3Blbgorc25tcFNldFNlcmlhbE5vCitzbm1wX3N0b3JlCitzbm1wVGFyZ2V0QWRkckVudHJ5Citzbm1wVGFyZ2V0UGFyYW1zRW50cnkKK3NubXB0cmFwZAorc25tcHYzCitzbm1wdjNfcGFyc2UKK3NwcmludF9ieV90eXBlCitzdGFzaF9jYWNoZQorc3VidHJlZQordGFibGVfYXJyYXkKK3RhYmxlX2FycmF5OmdldAordGFibGVfYXJyYXk6Z3JvdXAKK3RhYmxlX2RhdGFfYWRkX2RhdGEKK3RhYmxlX2l0ZXJhdG9yCit0YWJsZV9zZXRfYWRkX3JvdwordGFrZV9zbmFwc2hvdAordGFyZ2V0X2NvdW50ZXJzCit0YXJnZXRfc2Vzc2lvbnMKK3Rkb21haW4KK3Rlc3RoYW5kbGVyCit0ZXN0aGFuZGxlcl90YWJsZQordHJhbnNwb3J0X2NhbGxiYWNrCit0cmFwCit0cmFwc2VzcwordHVubmVsCit1Y2REZW1vUHVibGljCit1Y2Qtc25tcC9kaXNrCit1Y2Qtc25tcC9kaXNrOgordWNkLXNubXAvbWVtb3J5Cit1Y2Qtc25tcC9wYXNzCit1Y2Qtc25tcC9wYXNzX3BlcnNpc3QKK3VjZC1zbm1wL3Byb2MKK3VjZC1zbm1wL3ZlcnNpb25pbmZvCit1Y2Qtc25tcC92bXN0YXRfYWl4NC5jOnVwZGF0ZV9zdGF0cwordWNkLXNubXAvdm1zdGF0X2R5bml4LmM6dXBkYXRlX3N0YXRzCit1Y2Qtc25tcC92bXN0YXRfaHB1eC5jOnVwZGF0ZV9zdGF0cwordWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmM6dXBkYXRlX3N0YXRzCit1bmxpbmtfdHJlZQordW5sb2FkLW1pYgordW5yZWdpc3Rlcl9leGNlcHRmZAordW5yZWdpc3Rlcl9yZWFkZmQKK3VucmVnaXN0ZXJfc2lnbmFsCit1bnJlZ2lzdGVyX3dyaXRlZmQKK3VzbQordXNtVXNlcgordXRpbF9mdW5jcwordmFjbTpjaGVja1N1YnRyZWUKK3ZhY206Z2V0VmlldwordmVyc2lvbmluZm8KK3Ztc3RhdAoreXl5aW5qZWN0SGFuZGxlcgorIDwvcHJlPgorCis8YSBuYW1lPSJzdGVwcyI+PC9hPiA8aDI+QmFieSBTdGVwcyBGbG93PC9oMj4KKzxwcmU+ICAgICAvKioKKyAgICAgKiBCYWJ5IFN0ZXBzIEZsb3cgZGlhZ3JhbSAocmV2IDIwMDMuMDkuMjkuMTMzMCkKKyAgICAgKgorICAgICAqIExlZ2VuZDogKHRlc3QpIFtvcHRpb25hbF0gJmx0O3JlcXVpcmVkPgorICAgICAqCisgICAgICogT0xEICAgICAgICAgICAgICBORVcKKyAgICAgKiA9PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgKiArKysgICAgICAgICAgIFtwcmVfcmVxdWVzdF0KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgKHJvdyBleGlzdHM/KSBOIC0+KHJvd19jcmVhdGlvbikgTiA+LS0+KworICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgWSAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8Jmx0Oy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgIFx8LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcfC8KKyAgICAgKiBSRVNFUlZFMSAgJmx0O29iamVjdF9zeW50YXhfY2hlY2tzPiAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCisgICAgICogICAgICAgICAgICAgICAgICAoZXJyPykgIFkgPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4rCisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgXHwvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx8LworICAgICAqICsrKyAgICAgICAgICAocm93IGV4aXN0ZWQ/KSBOIC0tLT5bcm93X2NyZWF0aW9uXSAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8Jmx0Oy0tLS0tLS0tLS0tLS0tTiAoZXJyPykgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgWSAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgIFtyb3dfY3JlYXRpb25fY2xlYW51cF0tLS0+KworICAgICAqICAgICAgICAgICAgICAgICAgIFx8LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqIFJFU0VSVkVSMiAgICAgW3VuZG9fc2V0dXBdICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgKGVycj8pICBZIC0tLT4tLS0tLS0tLT4tLS0tLS0tLS0+KyAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcfC8KKyAgICAgKiBBQ1RJT04gICAgICAgICZsdDtzZXRfdmFsdWVzPiAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgIChlcnI/KSAgWSA+LS0tLS0tLS0tKyAgICAgICAgICAgXHwvIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgIHwKKyAgICAgKiArKysgICAgICAgIFtjb25zaXN0ZW5jeV9jaGVja3NdICAgICAgfCAgICAgICAgICAgIHwgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICBcfC8gICAgICAgICAgIHwgIHwKKyAgICAgKiBVTkRPICAgICAgICAgICAgIChlcnI/KSAgWSA+LS0tLS0tLVt1bmRvXS0tLS0tLS0tPisgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgKiAgICAgICAgICAgIFtyZXZlcnNpYmxlX2NvbW1pdF0gICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgKiArKysgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXHwvCisgICAgICogICAgICAgICAgICAgICAgICAoZXJyPykgIFkgPi0tW3JldmVyc2VfY29tbWl0XSAgICB8ICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICB8CisgICAgICogQ09NTUlUICAgICAgICAmbHQ7ZmluYWxfY29tbWl0PiAgICAgIHwgICAgICAgICAgICAgICB8ICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICB8CisgICAgICogICAgICAgICAgICAgICAgICAoZXJyPykgIFkgPi0tW2xvZyBtc2ddICAgICAgICAgICB8ICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgXHwvICAgICAgICAgICAgIFx8LyB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgJmx0Oy0tLS0tLS0tLS0tJmx0OystLS0mbHQ7LS0tLS0tLS0tLS0rICB8CisgICAgICogICAgICAgICAgICAgICAgICAgXHwvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogRlJFRSAgICAgICAgICBbdW5kb19jbGVhbnVwXSAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx8LworICAgICAqICAgICAgICAgICAgICAgICAgICB8Jmx0Oy0tLS0tLS0tLS0tLS0tJmx0Oy0tLS0tLS0tLS0tLS0tLS0tKworICAgICAqICAgICAgICAgICAgICAgICAgIFx8LworICAgICAqICAgICAgICAgICAgICAgW3Bvc3RfcmVxdWVzdF0KKyAgICAgKi8KKyA8L3ByZT4KKworPGhyPgorPHRhYmxlIHdpZHRoPSIxMDAlIj4KKzx0cj48dGQgYWxpZ249bGVmdD4KKzxicj5QYWdlCis8IS0tIENyZWF0ZWQ6IFRodSBKdWwgMjQgMTA6MDg6MjYgTUVUIERTVCAxOTk3IC0tPgorPCEtLSBoaG10cyBzdGFydCAtLT4KK0xhc3QgbW9kaWZpZWQ6IFdlZCBNYXIgMTIgMTM6NDk6MzIgUFNUIDIwMDMKKzwhLS0gaGhtdHMgZW5kIC0tPgorPC90ZD48dGQgYWxpZ249cmlnaHQ+Cis8YnI+UG93ZXJlZCBieToKKzxBIGhyZWY9Imh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQiPgorICAgICAgPElNRyBzcmM9Imh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvc2Zsb2dvLnBocD9ncm91cF9pZD0xMjY5NCZhbXA7dHlwZT0xIiB3aWR0aD0iODgiIGhlaWdodD0iMzEiIGJvcmRlcj0iMCIgYWx0PSJTb3VyY2VGb3JnZSBMb2dvIj48L0E+CisKKzwvdGQ+PC90cj48L3RhYmxlPgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS93aW4zMi9kaXN0L2h0bWxoZWxwL0ZBUS5odG1sIGIvd2luMzIvZGlzdC9odG1saGVscC9GQVEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjM1YWNlCi0tLSAvZGV2L251bGwKKysrIGIvd2luMzIvZGlzdC9odG1saGVscC9GQVEuaHRtbApAQCAtMCwwICsxLDMzNzUgQEAKKzxib2R5IGJnY29sb3I9IiNmZmZmZmYiIGJhY2tncm91bmQ9InVjZC1zbm1wLWJnMy5naWYiPgorPHRpdGxlPk5FVC1TTk1QIEZBUTwvdGl0bGU+Cis8ZGl2IGFsaWduPWNlbnRlcj4KKzxoMT5GcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucyAoRkFRKSBmb3IgdGhlIE5ldC1TTk1QIHBhY2thZ2U8L2gxPgorRkFRIE1haW50YWluZXI6IERhdmUgU2hpZWxkPGJyPgorRW1haWw6IDxhIGhyZWY9Im1haWx0bzpuZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0Ij5uZXQtc25tcC1jb2RlcnNAbGlzdC5zb3VyY2Vmb3JnZS5uZXQ8L2E+PGJyPgorPC9kaXY+Cis8aHI+Cis8aDI+VGFibGUgb2YgQ29udGVudHM8L2gyPgorPC91bD48bGk+PGI+R0VORVJBTDwvYj48dWw+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2lzX2l0XyI+V2hhdCBpcyBpdD88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGVyZV9jYW5fSV9nZXRfaXRfIj5XaGVyZSBjYW4gSSBnZXQgaXQ/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9kb2N1bWVudGF0aW9uX2lzX2F2YWlsYWJsZV8iPldoYXQgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGU/PC9hPgorPGxpPiA8YSBocmVmPSIjQXJlX3RoZXJlX2JpbmFyaWVzX2F2YWlsYWJsZV8iPkFyZSB0aGVyZSBiaW5hcmllcyBhdmFpbGFibGU/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9zX3RoZV9kaWZmZXJlbmNlX2JldHdlZW5fVUNEX1NOTVBfYW5kX05ldF9TTk1QXyI+V2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gVUNELVNOTVAgYW5kIE5ldC1TTk1QPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doYXRfb3BlcmF0aW5nX3N5c3RlbXNfZG9lc19pdF9ydW5fb25fIj5XaGF0IG9wZXJhdGluZyBzeXN0ZW1zIGRvZXMgaXQgcnVuIG9uPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doYXRfaGFwcGVuc19pZl9taW5lX2lzbl90X2xpc3RlZF8iPldoYXQgaGFwcGVucyBpZiBtaW5lIGlzbid0IGxpc3RlZD88L2E+Cis8bGk+IDxhIGhyZWY9IiNEb2VzX2l0X3J1bl9vbl9XaW5kb3dzXyI+RG9lcyBpdCBydW4gb24gV2luZG93cz88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9maW5kX291dF9hYm91dF9uZXdfcmVsZWFzZXNfIj5Ib3cgZG8gSSBmaW5kIG91dCBhYm91dCBuZXcgcmVsZWFzZXM/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2Nhbl9JX2ZpbmRfb3V0X3doYXRfb3RoZXJfcGVvcGxlX2FyZV9kb2luZ18iPkhvdyBjYW4gSSBmaW5kIG91dCB3aGF0IG90aGVyIHBlb3BsZSBhcmUgZG9pbmc/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2RvX0lfc3VibWl0X2FfcGF0Y2hfb3JfYnVnX3JlcG9ydF8iPkhvdyBkbyBJIHN1Ym1pdCBhIHBhdGNoIG9yIGJ1ZyByZXBvcnQ/PC9hPgorPGxpPiA8YSBocmVmPSIjQ2FuX0lfcmV1c2VfdGhlX2NvZGVfaW5fbXlfY29tbWVyY2lhbF9hcHBsaWNhdGlvbl8iPkNhbiBJIHJldXNlIHRoZSBjb2RlIGluIG15IGNvbW1lcmNpYWwgYXBwbGljYXRpb24/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9zX3RoZV9kaWZmZXJlbmNlX2JldHdlZW5fU05NUHZfX19TTk1Qdl9fYW5kX1NOTVB2X18iPldoYXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFNOTVB2MSwgU05NUHYyIGFuZCBTTk1QdjM/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9hcmVfYWxsX3RoZXNlX2RpZmZlcmVudF9TTk1Qdl9fc19hbnl3YXlfIj5XaGF0IGFyZSBhbGwgdGhlc2UgZGlmZmVyZW50IFNOTVB2MidzIGFueXdheT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGljaF92ZXJzaW9uc19vZl9TTk1QX2FyZV9zdXBwb3J0ZWRfaW5fdGhpc19wYWNrYWdlXyI+V2hpY2ggdmVyc2lvbnMgb2YgU05NUCBhcmUgc3VwcG9ydGVkIGluIHRoaXMgcGFja2FnZT88L2E+Cis8bGk+IDxhIGhyZWY9IiNDYW5fSV91c2VfU05NUHZfX3JlcXVlc3RzX3dpdGhfYW5fU05NUHZfX01JQl9fb3JfdmljZV92ZXJzYV9fIj5DYW4gSSB1c2UgU05NUHYxIHJlcXVlc3RzIHdpdGggYW4gU05NUHYyIE1JQiAob3IgdmljZSB2ZXJzYSk/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hlcmVfY2FuX0lfZmluZF9tb3JlX2luZm9ybWF0aW9uX2Fib3V0X25ldHdvcmtfbWFuYWdlbWVudF8iPldoZXJlIGNhbiBJIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBuZXR3b3JrIG1hbmFnZW1lbnQ/PC9hPgorPGxpPiA8YSBocmVmPSIjSXNfdWNkX3NubXBfdGhyZWFkX3NhZmVfIj5JcyB1Y2Qtc25tcCB0aHJlYWQgc2FmZT88L2E+Cis8L3VsPjxsaT48Yj5BUFBMSUNBVElPTlM8L2I+PHVsPgorPGxpPiA8YSBocmVmPSIjSG93X2RvX0lfYWRkX2FfTUlCXyI+SG93IGRvIEkgYWRkIGEgTUlCPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19kb19JX2FkZF9hX01JQl90b190aGVfdG9vbHNfIj5Ib3cgZG8gSSBhZGQgYSBNSUIgdG8gdGhlIHRvb2xzPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doeV9jYW5fdF9JX3NlZV9hbnl0aGluZ19mcm9tX3RoZV9hZ2VudF8iPldoeSBjYW4ndCBJIHNlZSBhbnl0aGluZyBmcm9tIHRoZSBhZ2VudD88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaHlfY2FuX3RfSV9zZWVfdmFsdWVzX2luX3RoZV9fSU5TRVJUX0VOVEVSUFJJU0VfSEVSRV9fdHJlZV8iPldoeSBjYW4ndCBJIHNlZSB2YWx1ZXMgaW4gdGhlIDxJTlNFUlQgRU5URVJQUklTRSBIRVJFPiB0cmVlPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1JlcXVlc3RzX2Fsd2F5c19zZWVtX3RvX3RpbWVvdXRfX2FuZF9kb25fdF9naXZlX21lX2FueXRoaW5nX2JhY2tfX19XaHlfIj5SZXF1ZXN0cyBhbHdheXMgc2VlbSB0byB0aW1lb3V0LCBhbmQgZG9uJ3QgZ2l2ZSBtZSBhbnl0aGluZyBiYWNrLiAgV2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI0lfY2FuX3NlZV90aGVfc3lzdGVtX2dyb3VwX19idXRfbm90aGluZ19lbHNlX19fV2h5XyI+SSBjYW4gc2VlIHRoZSBzeXN0ZW0gZ3JvdXAsIGJ1dCBub3RoaW5nIGVsc2UuICBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjVGhlX2FnZW50X3dvcmtlZF9mb3JfYV93aGlsZV9fdGhlbl9zdG9wcGVkX3Jlc3BvbmRpbmdfX19XaHlfIj5UaGUgYWdlbnQgd29ya2VkIGZvciBhIHdoaWxlLCB0aGVuIHN0b3BwZWQgcmVzcG9uZGluZy4gIFdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNSZXF1ZXN0aW5nX2FuX29iamVjdF9mYWlsc193aXRoX19Vbmtub3duX09iamVjdF9JZGVudGlmaWVyX19fV2h5XyI+UmVxdWVzdGluZyBhbiBvYmplY3QgZmFpbHMgd2l0aCAiVW5rbm93biBPYmplY3QgSWRlbnRpZmllciIgIFdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaHlfZG9fSV9nZXRfX25vU3VjaE5hbWVfX3doZW5fYXNraW5nX2Zvcl9fc3lzVXBUaW1lX19fb3Jfc2ltaWxhcl9fIj5XaHkgZG8gSSBnZXQgIm5vU3VjaE5hbWUiIHdoZW4gYXNraW5nIGZvciAic3lzVXBUaW1lIiAob3Igc2ltaWxhcik/PC9hPgorPGxpPiA8YSBocmVmPSIjV2h5X2RvX0lfc29tZXRpbWVzX2dldF9fRW5kX29mX01JQl9fd2hlbl93YWxraW5nX2FfdHJlZV9fYW5kX3NvbWV0aW1lc19ub3RfIj5XaHkgZG8gSSBzb21ldGltZXMgZ2V0ICJFbmQgb2YgTUlCIiB3aGVuIHdhbGtpbmcgYSB0cmVlLCBhbmQgc29tZXRpbWVzIG5vdD88L2E+Cis8bGk+IDxhIGhyZWY9IiNJX2Nhbm5vdF9zZXRfYW55X3ZhcmlhYmxlc19pbl90aGVfTUlCXyI+SSBjYW5ub3Qgc2V0IGFueSB2YXJpYWJsZXMgaW4gdGhlIE1JQi48L2E+Cis8bGk+IDxhIGhyZWY9IiNWYXJpYWJsZXNfc2VlbV90b19kaXNhcHBlYXJfd2hlbl9JX3RyeV90b19zZXRfdGhlbV9fX1doeV8iPlZhcmlhYmxlcyBzZWVtIHRvIGRpc2FwcGVhciB3aGVuIEkgdHJ5IHRvIHNldCB0aGVtLiAgV2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI0lfc3RpbGxfY2FuX3RfY2hhbmdlX3N5c0xvY2F0aW9uX190aG91Z2hfdGhlX2FjY2Vzc19zZXR0aW5nc19hbGxvdyI+SSBzdGlsbCBjYW4ndCBjaGFuZ2Ugc3lzTG9jYXRpb24sIHRob3VnaCB0aGUgYWNjZXNzIHNldHRpbmdzIGFsbG93PC9hPgorPGEgaHJlZj0iI0lfc3RpbGxfY2FuX3RfY2hhbmdlX3N5c0xvY2F0aW9uX190aG91Z2hfdGhlX2FjY2Vzc19zZXR0aW5nc19hbGxvdyI+ICAgICAgIGl0LiAgV2h5IG5vdD88L2E+Cis8bGk+IDxhIGhyZWY9IiNJX2dldF9hbl9lcnJvcl93aGVuX3RyeWluZ190b19zZXRfYV9uZWdhdGl2ZV92YWx1ZV9fX3doeV8iPkkgZ2V0IGFuIGVycm9yIHdoZW4gdHJ5aW5nIHRvIHNldCBhIG5lZ2F0aXZlIHZhbHVlIC0gd2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI0lfZ2V0X2FuX2Vycm9yX3doZW5fdHJ5aW5nX3RvX2dldF9hX3N0cmluZ19pbmRleGVkX3RhYmxlX3ZhbHVlX19fd2h5XyI+SSBnZXQgYW4gZXJyb3Igd2hlbiB0cnlpbmcgdG8gZ2V0IGEgc3RyaW5nLWluZGV4ZWQgdGFibGUgdmFsdWUgLSB3aHk/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2RvX0lfc2VuZF90cmFwc19hbmRfbm90aWZpY2F0aW9uc18iPkhvdyBkbyBJIHNlbmQgdHJhcHMgYW5kIG5vdGlmaWNhdGlvbnM/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2RvX0lfaGFuZGxlX3RyYXBzX2FuZF9ub3RpZmljYXRpb25zXyI+SG93IGRvIEkgaGFuZGxlIHRyYXBzIGFuZCBub3RpZmljYXRpb25zPzwvYT4KKzxsaT4gPGEgaHJlZj0iI015X3RyYXBoYW5kbGVyX3NjcmlwdF9kb2Vzbl90X3dvcmtfd2hlbl9ydW5fbGlrZV90aGlzX19fd2h5X25vdF8iPk15IHRyYXBoYW5kbGVyIHNjcmlwdCBkb2Vzbid0IHdvcmsgd2hlbiBydW4gbGlrZSB0aGlzIC0gd2h5IG5vdD88L2E+Cis8bGk+IDxhIGhyZWY9IiNUaGVfdWNkU2h1dGRvd25fdHJhcF9PSURfcmVjZWl2ZWRfYnlfbXlfbWFuYWdlcl9pc193cm9uZ19fV2h5XyI+VGhlIHVjZFNodXRkb3duIHRyYXAgT0lEIHJlY2VpdmVkIGJ5IG15IG1hbmFnZXIgaXMgd3JvbmcuIFdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaHlfZG9lc19zbm1wdHJhcGRfY29tcGxhaW5fYWJvdXRfQWdlbnRYXyI+V2h5IGRvZXMgc25tcHRyYXBkIGNvbXBsYWluIGFib3V0IEFnZW50WD88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV91c2VfU05NUHZfXyI+SG93IGRvIEkgdXNlIFNOTVB2Mz88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfYmlnX2Nhbl9hbl9TTk1QX3JlcXVlc3RfX29yX3JlcGx5X19iZV8iPkhvdyBiaWcgY2FuIGFuIFNOTVAgcmVxdWVzdCAob3IgcmVwbHkpIGJlPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19jYW5fSV9tb25pdG9yX215X3N5c3RlbXNfX2Rpc2tfX21lbW9yeV9fZXRjX18iPkhvdyBjYW4gSSBtb25pdG9yIG15IHN5c3RlbXMgKGRpc2ssIG1lbW9yeSwgZXRjKT88L2E+Cis8bGk+IDxhIGhyZWY9IiNBcHBsaWNhdGlvbnNfY29tcGxhaW5fYWJvdXRfZW50cmllc19pbl95b3VyX2V4YW1wbGVfX3NubXBfY29uZl9fZmlsZV9fX1doeV8iPkFwcGxpY2F0aW9ucyBjb21wbGFpbiBhYm91dCBlbnRyaWVzIGluIHlvdXIgZXhhbXBsZSAnc25tcC5jb25mJyBmaWxlLiAgV2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI09LX193aGF0X3Nob3VsZF9JX3B1dF9pbl9zbm1wX2NvbmZfIj5PSywgd2hhdCBzaG91bGQgSSBwdXQgaW4gc25tcC5jb25mPzwvYT4KKzwvdWw+PGxpPjxiPlBFUkw8L2I+PHVsPgorPGxpPiA8YSBocmVmPSIjV2hlcmVfY2FuX0lfZ2V0X3RoZV9wZXJsX1NOTVBfcGFja2FnZV8iPldoZXJlIGNhbiBJIGdldCB0aGUgcGVybCBTTk1QIHBhY2thZ2U/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2RvX0lfaW5zdGFsbF90aGVfUGVybF9TTk1QX21vZHVsZXNfIj5Ib3cgZG8gSSBpbnN0YWxsIHRoZSBQZXJsIFNOTVAgbW9kdWxlcz88L2E+Cis8bGk+IDxhIGhyZWY9IiNCdXRfY29tcGlsaW5nX3RoaXNfZmFpbHNfX1doeV8iPkJ1dCBjb21waWxpbmcgdGhpcyBmYWlscyEgV2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI0NvbXBpbGluZ190aGVfcGVybF9tb2R1bGVfd29ya3NfT0tfX2J1dF9fbWFrZV90ZXN0X19mYWlsc19fV2h5XyI+Q29tcGlsaW5nIHRoZSBwZXJsIG1vZHVsZSB3b3JrcyBPSywgYnV0ICdtYWtlIHRlc3QnIGZhaWxzLiBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjVGhlX3BlcmxfX21ha2VfdGVzdF9fZmFpbHNfb25fdGhlX09JRF90ZXN0c19fSXNfaXRfc2FmZV90b19jb250aW51ZV8iPlRoZSBwZXJsICdtYWtlIHRlc3QnIGZhaWxzIG9uIHRoZSBPSUQgdGVzdHMuIElzIGl0IHNhZmUgdG8gY29udGludWU/PC9hPgorPGxpPiA8YSBocmVmPSIjSV9tX3RyeWluZ190b191c2VfbWliX2NfX29yX3RrbWliX19hbmRfaXRfY2FuX3RfbG9jYXRlX1NOTVBfcG1fIj5JJ20gdHJ5aW5nIHRvIHVzZSBtaWIyYyAob3IgdGttaWIpIGFuZCBpdCBjYW4ndCBsb2NhdGUgU05NUC5wbT88L2E+Cis8bGk+IDxhIGhyZWY9IiNJX21fdHJ5aW5nX3RvX3VzZV9taWJfY19fb3JfdGttaWJfX2FuZF9pdF9jYW5fdF9sb2FkX1NOTVBfc29fIj5JJ20gdHJ5aW5nIHRvIHVzZSBtaWIyYyAob3IgdGttaWIpIGFuZCBpdCBjYW4ndCBsb2FkIFNOTVAuc28/PC9hPgorPGxpPiA8YSBocmVmPSIjSV9tX3RyeWluZ190b191c2VfdGttaWJfYW5kX2l0X2Nhbl90X2xvY2F0ZV9Ua19wbV8iPkknbSB0cnlpbmcgdG8gdXNlIHRrbWliIGFuZCBpdCBjYW4ndCBsb2NhdGUgVGsucG0/PC9hPgorPGxpPiA8YSBocmVmPSIjSV92ZV9nb3RfYV9wcm9ibGVtX3dpdGhfdGhlX05ldF9TTk1QX21vZHVsZV9fX0Nhbl95b3VfaGVscF8iPkkndmUgZ290IGEgcHJvYmxlbSB3aXRoIHRoZSBOZXQtU05NUCBtb2R1bGUuICBDYW4geW91IGhlbHA/PC9hPgorPC91bD48bGk+PGI+TUlCUzwvYj48dWw+Cis8bGk+IDxhIGhyZWY9IiNXaGVyZV9jYW5fSV9maW5kX2FfTUlCX2NvbXBpbGVyXyI+V2hlcmUgY2FuIEkgZmluZCBhIE1JQiBjb21waWxlcj88L2E+Cis8bGk+IDxhIGhyZWY9IiNJX2Nhbl90X2xvYWRfYW55X29mX3RoZV9taWJfZmlsZXNfX2FuZF90aGV5X3NlZW1fdG9fYmVfbWlzc2luZyI+SSBjYW4ndCBsb2FkIGFueSBvZiB0aGUgbWliIGZpbGVzLCBhbmQgdGhleSBzZWVtIHRvIGJlIG1pc3Npbmc8L2E+Cis8YSBocmVmPSIjSV9jYW5fdF9sb2FkX2FueV9vZl90aGVfbWliX2ZpbGVzX19hbmRfdGhleV9zZWVtX3RvX2JlX21pc3NpbmciPiAgICAgICB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgdGhlIGZpbGVuYW1lLiAgV2hhdCdzIGhhcHBlbmluZz88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaHlfYXJlbl90X215X21pYl9maWxlc19iZWluZ19yZWFkX2luXyI+V2h5IGFyZW4ndCBteSBtaWIgZmlsZXMgYmVpbmcgcmVhZCBpbj88L2E+Cis8bGk+IDxhIGhyZWY9IiNJX21fZ2V0dGluZ19hbnN3ZXJzX19idXRfdGhleV9yZV9hbGxfbnVtYmVyc19fV2h5XyI+SSdtIGdldHRpbmcgYW5zd2VycywgYnV0IHRoZXkncmUgYWxsIG51bWJlcnMuIFdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2RvZXNfX0Nhbm5vdF9maW5kX21vZHVsZV9fWFhYX01JQl9fX21lYW5fIj5XaGF0IGRvZXMgIkNhbm5vdCBmaW5kIG1vZHVsZSAoWFhYLU1JQikiIG1lYW4/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9hYm91dF9fdW5saW5rZWRfT0lEX18iPldoYXQgYWJvdXQgInVubGlua2VkIE9JRCI/PC9hPgorPGxpPiA8YSBocmVmPSIjVGhlX3BhcnNlcl9kb2Vzbl90X2hhbmRsZV9jb21tZW50c19wcm9wZXJseV9fV2h5X25vdF8iPlRoZSBwYXJzZXIgZG9lc24ndCBoYW5kbGUgY29tbWVudHMgcHJvcGVybHkuIFdoeSBub3Q/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2RvX0lfcmVwbGFjZV9NSUJfdmFsdWVzX3dpdGhfbmV3X29uZXNfIj5Ib3cgZG8gSSByZXBsYWNlIE1JQiB2YWx1ZXMgd2l0aCBuZXcgb25lcz88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfY2FuX0lfZ2V0X21vcmVfaW5mb3JtYXRpb25fYWJvdXRfdGhlc2VfTUlCX2ZpbGVfcHJvYmxlbXNfIj5Ib3cgY2FuIEkgZ2V0IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2UgTUlCIGZpbGUgcHJvYmxlbXM/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9zX3RoaXNfYWJvdXRfX3Rvb19tYW55X2ltcG9ydGVkX3N5bWJvbHNfXyI+V2hhdCdzIHRoaXMgYWJvdXQgInRvbyBtYW55IGltcG9ydGVkIHN5bWJvbHMiPzwvYT4KKzwvdWw+PGxpPjxiPkFHRU5UPC9iPjx1bD4KKzxsaT4gPGEgaHJlZj0iI1doYXRfTUlCc19hcmVfc3VwcG9ydGVkXyI+V2hhdCBNSUJzIGFyZSBzdXBwb3J0ZWQ/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9wcm90b2NvbHNfYXJlX3N1cHBvcnRlZF8iPldoYXQgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWQ/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2RvX0lfY29uZmlndXJlX3RoZV9hZ2VudF8iPkhvdyBkbyBJIGNvbmZpZ3VyZSB0aGUgYWdlbnQ/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2RvX0lfYWRkX2FfTUlCX3RvX3RoZV9hZ2VudF8iPkhvdyBkbyBJIGFkZCBhIE1JQiB0byB0aGUgYWdlbnQ/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9zX3RoZV9kaWZmZXJlbmNlX2JldHdlZW5fX2V4ZWNfX19fc2hfX2FuZF9fcGFzc19fIj5XaGF0J3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAnZXhlYycsICdzaCcgYW5kICdwYXNzJz88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X3NfdGhlX2RpZmZlcmVuY2VfYmV0d2Vlbl9BZ2VudFhfX1NNVVhfYW5kX3Byb3hpZWRfU05NUF8iPldoYXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIEFnZW50WCwgU01VWCBhbmQgcHJveGllZCBTTk1QPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doYXRfYWJvdXRfX2RsbW9kX19fX3doYXRfc190aGF0X2Fib3V0XyI+V2hhdCBhYm91dCAnZGxtb2QnIC0gd2hhdCdzIHRoYXQgYWJvdXQ/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hpY2hfc2hvdWxkX0lfdXNlXyI+V2hpY2ggc2hvdWxkIEkgdXNlPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0Nhbl9JX3VzZV9BZ2VudFhfd2hlbl9ydW5uaW5nX3VuZGVyX1dpbmRvd3NfIj5DYW4gSSB1c2UgQWdlbnRYIHdoZW4gcnVubmluZyB1bmRlciBXaW5kb3dzPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19jYW5fSV9ydW5fQWdlbnRYX3dpdGhfYV9kaWZmZXJlbnRfc29ja2V0X2FkZHJlc3NfIj5Ib3cgY2FuIEkgcnVuIEFnZW50WCB3aXRoIGEgZGlmZmVyZW50IHNvY2tldCBhZGRyZXNzPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19jYW5fSV9jb21iaW5lX3R3b19jb3BpZXNfb2ZfdGhlX19taWJfX190cmVlX2Zyb21fc2VwYXJhdGVfc3ViYWdlbnRzXyI+SG93IGNhbiBJIGNvbWJpbmUgdHdvIGNvcGllcyBvZiB0aGUgJ21pYjInIHRyZWUgZnJvbSBzZXBhcmF0ZSBzdWJhZ2VudHM/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF90cmFwc19hcmVfc2VudF9ieV90aGVfYWdlbnRfIj5XaGF0IHRyYXBzIGFyZSBzZW50IGJ5IHRoZSBhZ2VudD88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGVyZV9hcmVfdGhlc2VfdHJhcHNfc2VudF90b18iPldoZXJlIGFyZSB0aGVzZSB0cmFwcyBzZW50IHRvPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19jYW5fSV9zZW5kX2FfcGFydGljdWxhcl90cmFwX3RvX3NlbGVjdGVkX2Rlc3RpbmF0aW9uc18iPkhvdyBjYW4gSSBzZW5kIGEgcGFydGljdWxhciB0cmFwIHRvIHNlbGVjdGVkIGRlc3RpbmF0aW9ucz88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaHlfZG9lc19jYWxsaW5nX19zZW5kX3ZfdHJhcF9fZ2VuZXJhdGVfYW5fU05NUHZfX3RyYXBfX29yX3ZpY2VfdmVyc2FfXyI+V2h5IGRvZXMgY2FsbGluZyAnc2VuZF92MnRyYXAnIGdlbmVyYXRlIGFuIFNOTVB2MSB0cmFwIChvciB2aWNlIHZlcnNhKT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGVuX0lfcnVuX3RoZV9hZ2VudF9pdF9ydW5zX2FuZF90aGVuX3F1aXRzX3dpdGhvdXRfc3RheWluZ19hcm91bmRfX1doeV8iPldoZW4gSSBydW4gdGhlIGFnZW50IGl0IHJ1bnMgYW5kIHRoZW4gcXVpdHMgd2l0aG91dCBzdGF5aW5nIGFyb3VuZC4gV2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI0FmdGVyX2Ffd2hpbGVfdGhlX2FnZW50X3N0b3BzX3Jlc3BvbmRpbmdfX2FuZF9zdGFydHNfZWF0aW5nX0NQVV90aW1lX19fV2h5XyI+QWZ0ZXIgYSB3aGlsZSB0aGUgYWdlbnQgc3RvcHMgcmVzcG9uZGluZywgYW5kIHN0YXJ0cyBlYXRpbmcgQ1BVIHRpbWUuICBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2Nhbl9JX3N0b3Bfb3RoZXJfcGVvcGxlX2dldHRpbmdfYXRfbXlfYWdlbnRfIj5Ib3cgY2FuIEkgc3RvcCBvdGhlciBwZW9wbGUgZ2V0dGluZyBhdCBteSBhZ2VudD88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfY2FuX0lfbGlzdGVuX29uX2p1c3Rfb25lX3BhcnRpY3VsYXJfaW50ZXJmYWNlXyI+SG93IGNhbiBJIGxpc3RlbiBvbiBqdXN0IG9uZSBwYXJ0aWN1bGFyIGludGVyZmFjZT88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9jb25maWd1cmVfYWNjZXNzX2NvbnRyb2xfIj5Ib3cgZG8gSSBjb25maWd1cmUgYWNjZXNzIGNvbnRyb2w/PC9hPgorPGxpPiA8YSBocmVmPSIjSV9kb25fdF91bmRlcnN0YW5kX3RoZV9uZXdfYWNjZXNzX2NvbnRyb2xfc3R1ZmZfX193aGF0X2RvZXNfaXRfbWVhbl8iPkkgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgbmV3IGFjY2VzcyBjb250cm9sIHN0dWZmIC0gd2hhdCBkb2VzIGl0IG1lYW4/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2RvX0lfY29uZmlndXJlX1NOTVB2X191c2Vyc18iPkhvdyBkbyBJIGNvbmZpZ3VyZSBTTk1QdjMgdXNlcnM/PC9hPgorPGxpPiA8YSBocmVmPSIjVGhlX19jcmVhdGVVc2VyX19saW5lX2Rpc2FwcGVhcnNfd2hlbl9JX3N0YXJ0X3RoZV9hZ2VudF9fX1doeV8iPlRoZSAnY3JlYXRlVXNlcicgbGluZSBkaXNhcHBlYXJzIHdoZW4gSSBzdGFydCB0aGUgYWdlbnQuICBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9zX3RoZV9kaWZmZXJlbmNlX2JldHdlZW5fX3Zhcl91Y2Rfc25tcF9hbmRfX3Vzcl9sb2NhbF9zaGFyZV9zbm1wXyI+V2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gL3Zhci91Y2Qtc25tcCBhbmQgL3Vzci9sb2NhbC9zaGFyZS9zbm1wPzwvYT4KKzxsaT4gPGEgaHJlZj0iI015X25ld19hZ2VudF9pc19pZ25vcmluZ190aGVfb2xkX3NubXBkX2NvbmZfZmlsZV9fV2h5XyI+TXkgbmV3IGFnZW50IGlzIGlnbm9yaW5nIHRoZSBvbGQgc25tcGQuY29uZiBmaWxlLiBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjV2h5X2FtX0lfZ2V0dGluZ19fQ29ubmVjdGlvbl9yZWZ1c2VkX18iPldoeSBhbSBJIGdldHRpbmcgIkNvbm5lY3Rpb24gcmVmdXNlZCI/PC9hPgorPGxpPiA8YSBocmVmPSIjSV9tX2dldHRpbmdfZXJyb3JzX2Fib3V0X19iYWRfc2VjdXJpdHlfbW9kZWxfX19fd2h5XyI+SSdtIGdldHRpbmcgZXJyb3JzIGFib3V0ICJiYWQgc2VjdXJpdHkgbW9kZWwiIC0gd2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI0lfbV9nZXR0aW5nX2Vycm9yc19hYm91dF9fYmFkX3ByZWZpeF9tYXRjaF9wYXJhbWV0ZXJfX19fd2h5XyI+SSdtIGdldHRpbmcgZXJyb3JzIGFib3V0ICJiYWQgcHJlZml4IG1hdGNoIHBhcmFtZXRlciIgLSB3aHk/PC9hPgorPGxpPiA8YSBocmVmPSIjV2h5X2Nhbl90X0lfc2VlX3ZhbHVlc19pbl90aGVfVUNEYXZpc19fZXh0ZW5zaWJsZV9fb3JfX2Rpc2tfX3RyZWVzXyI+V2h5IGNhbid0IEkgc2VlIHZhbHVlcyBpbiB0aGUgVUNEYXZpcyAnZXh0ZW5zaWJsZScgb3IgJ2Rpc2snIHRyZWVzPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doeV9jYW5fdF9JX3NlZV92YWx1ZXNfaW5fdGhlX1VDRGF2aXNfX21lbW9yeV9fb3JfX3Ztc3RhdF9fdHJlZV8iPldoeSBjYW4ndCBJIHNlZSB2YWx1ZXMgaW4gdGhlIFVDRGF2aXMgJ21lbW9yeScgb3IgJ3Ztc3RhdCcgdHJlZT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2RvX3RoZV9DUFVfc3RhdGlzdGljc19tZWFuX19faXNfdGhpc190aGVfbG9hZF9hdmVyYWdlXyI+V2hhdCBkbyB0aGUgQ1BVIHN0YXRpc3RpY3MgbWVhbiAtIGlzIHRoaXMgdGhlIGxvYWQgYXZlcmFnZT88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9nZXRfcGVyY2VudGFnZV9DUFVfdXRpbGl6YXRpb25fdXNpbmdfc3NDcHVSYXdJZGxlXyI+SG93IGRvIEkgZ2V0IHBlcmNlbnRhZ2UgQ1BVIHV0aWxpemF0aW9uIHVzaW5nIHNzQ3B1UmF3SWRsZT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2Fib3V0X211bHRpX3Byb2Nlc3Nvcl9zeXN0ZW1zXyI+V2hhdCBhYm91dCBtdWx0aS1wcm9jZXNzb3Igc3lzdGVtcz88L2E+Cis8bGk+IDxhIGhyZWY9IiNUaGVfc3BlZWRfdHlwZV9vZl9teV9uZXR3b3JrX2ludGVyZmFjZXNfaXNfd3JvbmdfX19ob3dfY2FuX0lfZml4X2l0XyI+VGhlIHNwZWVkL3R5cGUgb2YgbXkgbmV0d29yayBpbnRlcmZhY2VzIGlzIHdyb25nIC0gaG93IGNhbiBJIGZpeCBpdD88L2E+Cis8bGk+IDxhIGhyZWY9IiNUaGVfaW50ZXJmYWNlX3N0YXRpc3RpY3NfZm9yX215X3N1YmludGVyZmFjZXNfYXJlX2FsbF96ZXJvX19fd2h5XyI+VGhlIGludGVyZmFjZSBzdGF0aXN0aWNzIGZvciBteSBzdWJpbnRlcmZhY2VzIGFyZSBhbGwgemVybyAtIHdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2RvZXNfX2tscmVhZF9fX2JhZF9hZGRyZXNzX19tZWFuXyI+V2hhdCBkb2VzICJrbHJlYWQ6ICBiYWQgYWRkcmVzcyIgbWVhbj88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2RvZXNfX25saXN0X2Vycl9fX3dvbWJhdF9ub3RfZm91bmRfX19vcl9zaW1pbGFyX19tZWFuXyI+V2hhdCBkb2VzICJubGlzdCBlcnI6ICB3b21iYXQgbm90IGZvdW5kIiAob3Igc2ltaWxhcikgbWVhbj88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfYWJvdXRfX0Nhbl90X29wZW5fX2Rldl9rbWVtX18iPkhvdyBhYm91dCAiQ2FuJ3Qgb3BlbiAvZGV2L2ttZW0iPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1RoZV9hZ2VudF9pc19jb21wbGFpbmluZ19hYm91dF9fc25tcGRfY29uZl9fX19XaGVyZV9pc190aGlzXyI+VGhlIGFnZW50IGlzIGNvbXBsYWluaW5nIGFib3V0ICdzbm1wZC5jb25mJy4gIFdoZXJlIGlzIHRoaXM/PC9hPgorPGxpPiA8YSBocmVmPSIjVGhlX3N5c3RlbV91cHRpbWVfX3N5c1VwVGltZV9fcmV0dXJuZWRfaXNfd3JvbmdfIj5UaGUgc3lzdGVtIHVwdGltZSAoc3lzVXBUaW1lKSByZXR1cm5lZCBpcyB3cm9uZyE8L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfY2FuX0lfcmVkdWNlX3RoZV9tZW1vcnlfZm9vdHByaW50XyI+SG93IGNhbiBJIHJlZHVjZSB0aGUgbWVtb3J5IGZvb3RwcmludD88L2E+Cis8L3VsPjxsaT48Yj5DT01QSUxJTkc8L2I+PHVsPgorPGxpPiA8YSBocmVmPSIjSG93X2RvX0lfY29tcGlsZV93aXRoX19jY19faW5zdGVhZF9vZl9fZ2NjX18iPkhvdyBkbyBJIGNvbXBpbGUgd2l0aCAnY2MnIGluc3RlYWQgb2YgJ2djYyc/PC9hPgorPGxpPiA8YSBocmVmPSIjQnV0X2djY19kb2Vzbl90X2NvbXBpbGVfaXRfc3VjY2Vzc2Z1bGx5X29uX215X25ld19Tb2xhcmlzX3N5c3RlbV9fV2h5X25vdF8iPkJ1dCBnY2MgZG9lc24ndCBjb21waWxlIGl0IHN1Y2Nlc3NmdWxseSBvbiBteSBuZXcgU29sYXJpcyBzeXN0ZW0uIFdoeSBub3Q/PC9hPgorPGxpPiA8YSBocmVmPSIjT25fUmVkSGF0X19fX19vcl91cF9JX2dldF9fX3Vzcl9iaW5fbGRfX2Nhbm5vdF9maW5kX19sZWxmX19fV2h5XyI+T24gUmVkSGF0IDguMCBvciB1cCBJIGdldCAiL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sZWxmIi4gV2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI0lfbV9nZXR0aW5nX2FuX2Vycm9yX19hdXRvaGVhZGVyX19ub3RfZm91bmRfX19fd2hhdF9zX3dyb25nXyI+SSdtIGdldHRpbmcgYW4gZXJyb3IgImF1dG9oZWFkZXI6IG5vdCBmb3VuZCIgLSB3aGF0J3Mgd3Jvbmc/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9hYm91dF9hX2ZhaWxlZF9kZXBlbmRlbmN5X29uX19saWJjcnlwdG9fX19fV2hlcmVfY2FuX0lfZ2V0X3RoYXRfIj5XaGF0IGFib3V0IGEgZmFpbGVkIGRlcGVuZGVuY3kgb24gJ2xpYmNyeXB0byc/ICBXaGVyZSBjYW4gSSBnZXQgdGhhdD88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaHlfaXNfdGhlX3Byb2plY3Rfd29ya3NwYWNlX2VtcHR5X3VuZGVyX1Zpc3VhbF9DX19fIj5XaHkgaXMgdGhlIHByb2plY3Qgd29ya3NwYWNlIGVtcHR5IHVuZGVyIFZpc3VhbCBDKys/PC9hPgorPGxpPiA8YSBocmVmPSIjV2h5X2RvZXNfX21ha2VfdGVzdF9fc2tpcF9maXZlX3Rlc3RzXyI+V2h5IGRvZXMgJ21ha2UgdGVzdCcgc2tpcCBmaXZlIHRlc3RzPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doeV9kb2VzX19tYWtlX3Rlc3RfX2NvbXBsYWluX2Fib3V0X2FfcGlkX2ZpbGVfIj5XaHkgZG9lcyAnbWFrZSB0ZXN0JyBjb21wbGFpbiBhYm91dCBhIHBpZCBmaWxlPzwvYT4KKzwvdWw+PGxpPjxiPkNPRElORzwvYj48dWw+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV93cml0ZV9DX2NvZGVfdG9faW50ZWdyYXRlX3dpdGhfdGhlX2FnZW50XyI+SG93IGRvIEkgd3JpdGUgQyBjb2RlIHRvIGludGVncmF0ZSB3aXRoIHRoZSBhZ2VudD88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9lc190aGVfYWdlbnRfZmV0Y2hfdGhlX3ZhbHVlX29mX2FfdmFyaWFibGVfZnJvbV90aGVfc3lzdGVtXyI+SG93IGRvZXMgdGhlIGFnZW50IGZldGNoIHRoZSB2YWx1ZSBvZiBhIHZhcmlhYmxlIGZyb20gdGhlIHN5c3RlbT88L2E+Cis8bGk+IDxhIGhyZWY9IiNNaWJfY19jb21wbGFpbnNfYWJvdXRfYV9taXNzaW5nX19taWJfcmVmZXJlbmNlX19fX3doYXRfZG9lc190aGlzX21lYW5fIj5NaWIyYyBjb21wbGFpbnMgYWJvdXQgYSBtaXNzaW5nICJtaWIgcmVmZXJlbmNlIiAtIHdoYXQgZG9lcyB0aGlzIG1lYW4/PC9hPgorPGxpPiA8YSBocmVmPSIjTWliX2NfY29tcGxhaW5zX2Fib3V0X25vdF9oYXZpbmdfYV9fdmFsaWRfT0lEX19fX3doYXRfZG9lc190aGlzX21lYW5fIj5NaWIyYyBjb21wbGFpbnMgYWJvdXQgbm90IGhhdmluZyBhICJ2YWxpZCBPSUQiIC0gd2hhdCBkb2VzIHRoaXMgbWVhbj88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaHlfZG9lc25fdF9NaWJfY19saWtlX3RoZV9NSUJfZmlsZV9JX21fZ2l2aW5nX2l0XyI+V2h5IGRvZXNuJ3QgTWliMmMgbGlrZSB0aGUgTUlCIGZpbGUgSSdtIGdpdmluZyBpdD88L2E+Cis8bGk+IDxhIGhyZWY9IiNNaWJfY19pZ25vcmVzX215X01JQl9hbmRfZ2VuZXJhdGVzX2FfcGFpcl9vZl9fbWliX19fX2NvZGVfZmlsZXNfX19XaHlfIj5NaWIyYyBpZ25vcmVzIG15IE1JQiBhbmQgZ2VuZXJhdGVzIGEgcGFpciBvZiAnbWliLTInIGNvZGUgZmlsZXMuICBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjTWliX2NfY29tcGxhaW5zX2Fib3V0X19jb25maWd1cmF0aW9uX2ZpbGVzX19fV2hhdF9zX3RoaXNfZm9yXyI+TWliMmMgY29tcGxhaW5zIGFib3V0ICJjb25maWd1cmF0aW9uIGZpbGVzIi4gV2hhdCdzIHRoaXMgZm9yPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doaWNoX21pYl9jX2NvbmZpZ3VyYXRpb25fZmlsZV9zaG91bGRfSV91c2VfIj5XaGljaCBtaWIyYyBjb25maWd1cmF0aW9uIGZpbGUgc2hvdWxkIEkgdXNlPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19jYW5fSV9oYXZlX01pYl9jX2dlbmVyYXRlX2NvZGVfZm9yX2JvdGhfc2NhbGFyc19hbmRfdGFibGVzXyI+SG93IGNhbiBJIGhhdmUgTWliMmMgZ2VuZXJhdGUgY29kZSBmb3IgYm90aCBzY2FsYXJzIGFuZCB0YWJsZXM/PC9hPgorPGxpPiA8YSBocmVmPSIjQXJlX3RoZXJlX2FueV9leGFtcGxlc19fb3JfZG9jdW1lbnRhdGlvbl8iPkFyZSB0aGVyZSBhbnkgZXhhbXBsZXMsIG9yIGRvY3VtZW50YXRpb24/PC9hPgorPGxpPiA8YSBocmVmPSIjSV92ZV9jcmVhdGVkX2FfbmV3X21vZHVsZV93aXRoX19taWJfY19fYnV0X2l0X2RvZXNuX3Rfd29ya19fX1doeV9ub3RfIj5JJ3ZlIGNyZWF0ZWQgYSBuZXcgbW9kdWxlIHdpdGggJ21pYjJjJyBidXQgaXQgZG9lc24ndCB3b3JrLiAgV2h5IG5vdD88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGVyZV9zaG91bGRfSV9wdXRfdGhlX2ZpbGVzX3Byb2R1Y2VkX2J5X19taWJfY19fIj5XaGVyZSBzaG91bGQgSSBwdXQgdGhlIGZpbGVzIHByb2R1Y2VkIGJ5ICdtaWIyYyc/PC9hPgorPGxpPiA8YSBocmVmPSIjTWliX2Nfb25seV9oYW5kbGVzX2Ffc2luZ2xlX3RhYmxlX2luX215X01JQl9fSG93X2Nhbl9JX2ZpeF90aGlzXyI+TWliMmMgb25seSBoYW5kbGVzIGEgc2luZ2xlIHRhYmxlIGluIG15IE1JQi4gSG93IGNhbiBJIGZpeCB0aGlzPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19jYW5fSV9zdXBwb3J0X2FfbGFyZ2VfdGFibGVfX3dpdGhfbW9yZV90aGFuX19fX19jb2x1bW5fb2JqZWN0c18iPkhvdyBjYW4gSSBzdXBwb3J0IGEgbGFyZ2UgdGFibGUsIHdpdGggbW9yZSB0aGFuIDI1NiBjb2x1bW4gb2JqZWN0cz88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfY2FuX0lfZ2V0X3RoZV9hZ2VudF90b19nZW5lcmF0ZV9hX3RyYXBfX29yX2luZm9ybV9fIj5Ib3cgY2FuIEkgZ2V0IHRoZSBhZ2VudCB0byBnZW5lcmF0ZSBhIHRyYXAgKG9yIGluZm9ybSk/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9pZl9JX21fdXNpbmdfYW5fQWdlbnRYX3N1Yl9hZ2VudF9pbnN0ZWFkXyI+V2hhdCBpZiBJJ20gdXNpbmcgYW4gQWdlbnRYIHN1Yi1hZ2VudCBpbnN0ZWFkPzwvYT4KKzwvdWw+PGxpPjxiPk1JU0M8L2I+PHVsPgorPGxpPiA8YSBocmVmPSIjV2h5X2FyZV9wYWNrZXRzX3JlcXVlc3RpbmdfdGhlX3NhbWVfaW5mb3JtYXRpb25fbGFyZ2VyX3dpdGhfVUNfRGF2aXNfU05NUF8iPldoeSBhcmUgcGFja2V0cyByZXF1ZXN0aW5nIHRoZSBzYW1lIGluZm9ybWF0aW9uIGxhcmdlciB3aXRoIFVDLURhdmlzIFNOTVA/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9BU05fX19wYXJzZXJfaXNfdXNlZF8iPldoYXQgQVNOLjEgcGFyc2VyIGlzIHVzZWQ/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9pc190aGVfT2ZmaWNpYWxfU2xvZ2FuX29mX3RoZV9uZXRfc25tcF9jb2RlcnNfbGlzdF8iPldoYXQgaXMgdGhlIE9mZmljaWFsIFNsb2dhbiBvZiB0aGUgbmV0LXNubXAtY29kZXJzIGxpc3Q/PC9hPgorPC91bD48aHI+PHByZT4KKworPGEgbmFtZT0iR0VORVJBTCI+CitHRU5FUkFMCis9PT09PT09CisKKzxhIG5hbWU9IldoYXRfaXNfaXRfIj4KK1doYXQgaXMgaXQ/CistLS0tLS0tLS0tCisKKyAgLSBWYXJpb3VzIHRvb2xzIHJlbGF0aW5nIHRvIHRoZSBTaW1wbGUgTmV0d29yayBNYW5hZ2VtZW50IFByb3RvY29sCisgICAgaW5jbHVkaW5nOgorCisJKiBBbiBleHRlbnNpYmxlIGFnZW50CisJKiBBbiBTTk1QIGxpYnJhcnkKKwkqIHRvb2xzIHRvIHJlcXVlc3Qgb3Igc2V0IGluZm9ybWF0aW9uIGZyb20gU05NUCBhZ2VudHMKKwkqIHRvb2xzIHRvIGdlbmVyYXRlIGFuZCBoYW5kbGUgU05NUCB0cmFwcworCSogYSB2ZXJzaW9uIG9mIHRoZSB1bml4ICduZXRzdGF0JyBjb21tYW5kIHVzaW5nIFNOTVAKKwkqIGEgZ3JhcGhpY2FsIFBlcmwvVGsvU05NUCBiYXNlZCBtaWIgYnJvd3NlcgorCisgICAgVGhpcyBwYWNrYWdlIGlzIG9yaWdpbmFsbHkgYmFzZWQgb24gdGhlIENhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5CisgICAgU05NUCBpbXBsZW1lbnRhdGlvbiAodmVyc2lvbiAyLjEuMi4xKSwgYnV0IGhhcyBkZXZlbG9wZWQgc2lnbmlmaWNhbnRseQorICAgIHNpbmNlIHRoZW4uCisKKworCis8YSBuYW1lPSJXaGVyZV9jYW5fSV9nZXRfaXRfIj4KK1doZXJlIGNhbiBJIGdldCBpdD8KKy0tLS0tLS0tLS0tLS0tLS0tLQorCisgIERvd25sb2FkOgorICAgIC0gaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvZG93bmxvYWQvCisgICAgLSBmdHA6Ly9mdHAubmV0LXNubXAub3JnL3B1Yi9zb3VyY2Vmb3JnZS9uZXQtc25tcC8KKyAgTUQ1IFN1bXM6CisgICAgLSBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy9tZDUvCisgIFdlYiBwYWdlOgorICAgIC0gaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvCisgIFNvdXJjZWZvcmdlIFByb2plY3QgcGFnZToKKyAgICAtIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3Byb2plY3QvCisgIE1pcnJvcnMgKG5vdGUgdGhhdCBzb3VyY2Vmb3JnZSBkb3dubG9hZCBzZXJ2ZXJzIGFyZSBtaXJyb3JlZCB0aGVtc2VsdmVzKToKKyAgICAtIFVTOiAgICAgICAgICBmdHA6Ly9mdHAuZnJlZXNubXAuY29tL21pcnJvcnMvbmV0LXNubXAvCisgICAgLSBCdWxnYXJpYTogICAgaHR0cDovL3J0Zm0udW5pLXN2aXNodG92LmJnL25ldC1zbm1wLyAgICAoYXBwZWFycyB0byBiZSBvdXQgb2YgZGF0ZSkKKyAgICAtIEphcGFuOiAgICAgICBmdHA6Ly9mdHAuYXlhbXVyYS5vcmcvcHViL25ldC1zbm1wLyAgICAgIChtYXkgb25seSB3b3JrIGluc2lkZSBKYXBhbikKKyAgICAtIEdlcm1hbnk6ICAgICBmdHA6Ly9mdHAubXBnLmdvZS5uaS5zY2h1bGUuZGUvcHViL2ludGVybmV0L25ldC1zbm1wLyAgKHVua25vd24gaG9zdCkKKyAgICAtIEdyZWVjZTogICAgICBmdHA6Ly9mdHAubnR1YS5nci9wdWIvbmV0L3NubXAvbmV0LXNubXAvCisKKyAgVGhlIG9sZCB1Y2Qtc25tcC51Y2RhdmlzLmVkdSB3ZWIgc2l0ZSBhbmQgZnRwIHNlcnZlciBpcyBub3cKKyAgb2ZmbGluZSBhbmQgc2hvdWxkIG5vdCBiZSBhY2Nlc3NlZCBhbnkgbG9uZ2VyLgorCisKKworPGEgbmFtZT0iV2hhdF9kb2N1bWVudGF0aW9uX2lzX2F2YWlsYWJsZV8iPgorV2hhdCBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCVRoaXMgRkFRICghKQorCVJFQURNRSBhbmQgaW5kaXZpZHVhbCBSRUFETUVzIGZvciB2YXJpb3VzIHBsYXRmb3JtcworCVJFQURNRS50aHJlYWQgKGRpc2N1c3NlcyB0aHJlYWRpbmcgaXNzdWVzKQorCUlOU1RBTEwKKwlQT1JUSU5HCisJRVhBTVBMRS5jb25mCisJbWFuIHBhZ2VzIGZvciB0aGUgaW5kaXZpZHVhbCB0b29scywgZmlsZXMgYW5kIHRoZSBBUEkKKwlBIGd1aWRlIGZvciBleHRlbmRpbmcgdGhlIGFnZW50CisJVHV0b3JpYWxzIGZvciBib3RoIHVjZC1zbm1wIHY0IGFuZCBuZXQtc25tcCB2NQorICAgICAgICAgICBhdCAgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvdHV0b3JpYWwvCisgICAgICAgICAgIGFuZCBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01LyByZXNwZWN0aXZlbHkKKworICAgICAgTW9zdCBvZiB0aGlzIGRvY3VtZW50YXRpb24gKHBsdXMgYXJjaGl2ZXMgb2YgdGhlIG1haWxpbmcgbGlzdHMpCisJIGlzIGFsc28gYXZhaWxhYmxlIG9uIG91ciB3ZWIgcGFnZToKKworICAgICAgICAJaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvCisKKworCis8YSBuYW1lPSJBcmVfdGhlcmVfYmluYXJpZXNfYXZhaWxhYmxlXyI+CitBcmUgdGhlcmUgYmluYXJpZXMgYXZhaWxhYmxlPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIC0gVGhlcmUgYXJlIGJpbmFyaWVzIGZvciBzb21lIHN5c3RlbXMgYXZhaWxhYmxlIGluIHRoZSBiaW5hcmllcworICAgIGRpcmVjdG9yeSBvbiB0aGUgZnRwIHNpdGUuCisKKworCis8YSBuYW1lPSJXaGF0X3NfdGhlX2RpZmZlcmVuY2VfYmV0d2Vlbl9VQ0RfU05NUF9hbmRfTmV0X1NOTVBfIj4KK1doYXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFVDRC1TTk1QIGFuZCBOZXQtU05NUD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIE5vdCBhIGdyZWF0IGRlYWwsIHJlYWxseS4KKyAgQWx0aG91Z2ggdGhlIHByb2plY3Qgb3JpZ2luYWxseSBzdGFydGVkIGF0IFVDIERhdmlzIChoZW5jZSB0aGUgbmFtZSksCisgIGFuZCBpdCBoYXMgYWx3YXlzIGJlZW4gYmFzZWQgdGhlcmUsIG1vc3Qgb2YgdGhlIGNvbnRyaWJ1dG9ycyBoYXZlIGhhZAorICBsaXR0bGUgb3Igbm8gY29ubmVjdGlvbiB3aXRoIHRoaXMgaW5zdGl0dXRpb24uCisKKyAgICBUaGUgbW92ZSB0byBTb3VyY2VGb3JnZSB3YXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIG1vcmUgZmxleGlibGUKKyAgZW52aXJvbm1lbnQgZm9yIHRoZSBwcm9qZWN0LCBhbmQgdG8gZGlzdHJpYnV0ZSB0aGUgYWRtaW5pc3RyYXRpdmUKKyAgd29ya2xvYWQgbW9yZSBldmVubHkuICBUaGUgY2hhbmdlIG9mIG5hbWUgc2ltcGx5IHJlZmxlY3RzIHRoaXMgbW92ZSwKKyAgd2hpY2ggd2FzIHRoZSBsYXN0IHJlbWFpbmluZyBsaW5rIHdpdGggVUMgRGF2aXMuCisKKyAgICBUaGUgNC4yLnggbGluZSBpcyB0aGUgbGFzdCByZWxlYXNlIGxpbmUgdGhhdCB1c2VzIHRoZSB1Y2Qtc25tcCBuYW1lLAorICBhbmQgYWxsIHJlbGVhc2VzIHVuZGVyIHRoaXMgYmFubmVyIHdpbGwgYmUgYnVnLWZpeGVzIG9ubHkuICBSZWxlYXNlCisgIDUuMCBpcyB0aGUgZmlyc3QgdmVyc2lvbiB1c2luZyB0aGUgbmV0LXNubXAgbmFtZSwgYW5kIGFsbCBuZXcgZmVhdHVyZXMKKyAgYW5kIHNpZ25pZmljYW50IGRldmVsb3BtZW50IHdpbGwgYmUgcmVsZWFzZWQgdW5kZXIgdGhpcyBuYW1lLgorICAgIChUaG91Z2ggdGhlIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBhIGJ1Zy1maXggYW5kIGEgbmV3IGZlYXR1cmUgaXMKKyAgc29tZXRoaW5nIG9mIGEgdmFndWUgb25lLCBzbyBzb21lIGNoYW5nZXMgaW4gdGhlIDQuMi54IGxpbmUgbWF5IGJlCisgIHJlbGF0aXZlbHkgbm9uLXRyaXZpYWwhKQorIAorICAgIFN0YXJ0aW5nIHdpdGggdGhlIDUuMCByZWxlYXNlLCB3ZSBhcmUgYWxzbyB0cnlpbmcgdG8gcmV2aWV3IGFuZAorICByZXdvcmsgdGhlIHVuZGVybHlpbmcgY29kZSBiYXNlIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IGFuZAorICBtYWludGFpbmFiaWxpdHkgb2YgdGhlIHBhY2thZ2UuICBUaGUgNS4wIGNoYW5nZXMgaGF2ZSBtb3N0bHkKKyAgY29uY2VudHJhdGVkIG9uIHRoZSBhZ2VudCBhcmNoaXRlY3R1cmUsIHRob3VnaCB0aGVyZSBoYXZlIGJlZW4gc29tZQorICBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHRoZSBsaWJyYXJ5IGFzIHdlbGwuICBGdXR1cmUgcmVsZWFzZXMgbWF5CisgIGluY2x1ZGUgZnVydGhlciByZXN0cnVjdHVyaW5nIG9mIHRoZSBsaWJyYXJ5LgorICAgIFRoaXMgcHJvY2VzcyB3aWxsIHByb2JhYmx5IHJlc3VsdCBpbiBzb21lIGNoYW5nZXMgdG8gdGhlIEFQSSwKKyAgdGhvdWdoIHdlIHdpbGwgYXR0ZW1wdCB0byByZXRhaW4gc29tZSBmb3JtIG9mIGJhY2t3YXJkcworICBjb21wYXRpYmlsaXR5IGFzIGZhciBhcyBwb3NzaWJsZSwgYW5kIGNsZWFybHkgbWFyayBhbnl0aGluZyB0aGF0IGhhcworICBjaGFuZ2VkLiAgVGhlIG1vc3Qgc2lnbmlmaWNhbnQgY2hhbmdlIHdpdGggdGhlIDUuMCByZWxlYXNlIGlzIGEKKyAgcmVzdHJ1Y3R1cmluZyBvZiB0aGUgaGVhZGVyIGZpbGUgb3JnYW5pc2F0aW9uIC0gbm90IGxlYXN0IGEgY2hhbmdlCisgIGZyb20gJmx0O3VjZC1zbm1wL3h4eC5oJmd0OyB0byAmbHQ7bmV0LXNubXAveXl5LmgmZ3Q7LgorCisKKworPGEgbmFtZT0iV2hhdF9vcGVyYXRpbmdfc3lzdGVtc19kb2VzX2l0X3J1bl9vbl8iPgorV2hhdCBvcGVyYXRpbmcgc3lzdGVtcyBkb2VzIGl0IHJ1biBvbj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBCb3RoIHRoZSBhcHBsaWNhdGlvbnMgYW5kIHRoZSBhZ2VudCBoYXZlIGJlZW4gcmVwb3J0ZWQgYXMgcnVubmluZworICAoYXQgbGVhc3QgaW4gcGFydCkgb24gdGhlIGZvbGxvd2luZyBvcGVyYXRpbmcgc3lzdGVtczoKKworCSogSFAtVVggKDEwLjIwIHRvIDkuMDEgYW5kIDExLjAgLS0gc2VlIFJFQURNRS5ocHV4MTEpCisJKiBVbHRyaXggKDQuNSB0byA0LjIpCisJKiBTb2xhcmlzIFNQQVJDL1VMVFJBICgyLjggdG8gMi4zKSwgSW50ZWwgKDIuOSkgYW5kIFN1bk9TICg0LjEuNCB0byA0LjEuMikKKwkqIE9TRiAoNC4wLCAzLjIpCisJKiBOZXRCU0QgKDEuNWFscGhhIHRvIDEuMCkKKwkqIEZyZWVCU0QgKDQuMSB0byAyLjIpCisJKiBCU0RpICg0LjAuMSB0byAyLjEpCisJKiBMaW51eCAoa2VybmVscyAyLjQgdG8gMS4zKQorCSogQUlYICg0LjEuNSwgMy4yLjUpCisJKiBPcGVuQlNEICgyLjgsIDIuNikKKwkqIElyaXggKDYuNSB0byA1LjEpCisJKiBPUyBYICgxMC4xLjEgYW5kIDEwLjEuMikKKwkqIER5bml4L1BUWCA0LjQKKwkqIFFOWCA2LjIuMUEKKworICBXZSBoYXZlIGFsc28gYmVlbiBpbmZvcm1lZCBhYm91dCBhIHBvcnQgdG8gdGhlIFN0cmF0dXMgVk9TLgorICBTZWUgaHR0cDovL2Z0cC5zdHJhdHVzLmNvbS92b3MvbmV0d29yay9uZXR3b3JrLmh0bWwgZm9yIGRldGFpbHMuCisKKyAgU2VlIHRoZSBuZXh0IHF1ZXN0aW9uIGJ1dCBvbmUgZm9yIHRoZSBzdGF0dXMgb2YgV2luZG93cyBzdXBwb3J0LgorCisgIENlcnRhaW4gc3lzdGVtcyAoZS5nLiBIUC1VWCAxMSwgSXJpeD8pIGZhaWwgdG8gY29tcGlsZSBwYXJ0aWN1bGFyCisgIHBvcnRpb25zIG9mIHRoZSBhZ2VudC4gIFRoZXNlIGNhbiB1c3VhbGx5IGJlIHBlcnN1YWRlZCB0byBjb21waWxlCisgIChhdCB0aGUgbG9zcyBvZiBzb21lIGZ1bmN0aW9uYWxpdHkpIGJ5IG9taXR0aW5nIHRoZSBtb2R1bGVzIGFmZmVjdGVkLgorICBTZWUgdGhlIG5leHQgcXVlc3Rpb24gZm9yIG1vcmUgZGV0YWlscy4KKworICBBbHNvIG5vdGUgdGhhdCB0aGUgcHJlc2VuY2Ugb2YgYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gaW4gdGhpcworICBsaXN0IGRvZXMgbm90IGltcGx5IGEgcGVyZmVjdCBvciBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbi4gIFRoaXMgaXMKKyAgc2ltcGx5IHdoYXQgdmFyaW91cyBwZW9wbGUgaGF2ZSByZXBvcnRlZCBhcyBzZWVtaW5nIHRvIHdvcmsuIChPciBtb3JlCisgIGZyZXF1ZW50bHksIHRoZSBjb25maWd1cmF0aW9ucyBwZW9wbGUgaGF2ZSByZXBvcnRlZCBwcm9ibGVtcyB3aXRoCisgIHRoYXQgd2UgdGhpbmsgd2UndmUgZml4ZWQhKQorCisKKworPGEgbmFtZT0iV2hhdF9oYXBwZW5zX2lmX21pbmVfaXNuX3RfbGlzdGVkXyI+CitXaGF0IGhhcHBlbnMgaWYgbWluZSBpc24ndCBsaXN0ZWQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIEl0J3MgcHJvYmFibHkgd29ydGggdHJ5aW5nIHRvIGNvbXBpbGUgaXQgYW55d2F5LiAgSWYgeW91ciBzeXN0ZW0KKyAgaXMgcmVhc29uYWJseSBzaW1pbGFyIHRvIGFub3RoZXIgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24sIGl0IG1heQorICB3ZWxsIGNvbXBpbGUgd2l0aCBsaXR0bGUgb3Igbm8gZGlmZmljdWx0eS4gIFRoZSBtb3N0IGxpa2VseSBzb3VyY2UKKyAgb2YgcHJvYmxlbXMgd2lsbCBiZSBNSUIgbW9kdWxlcyB3aXRoaW4gdGhlIGFnZW50LCBhcyB0aGlzIHRlbmRzIHRvCisgIGJlIHdoZXJlIHRoZSBtb3N0IHN5c3RlbS1zcGVjaWZpYyBjb2RlIGlzIGZvdW5kLgorCisgICAgSWYgb25seSBhIGZldyBtb2R1bGVzIGZhaWwgdG8gY29tcGlsZSwgdHJ5IHJlbW92aW5nIHRoZW0gZnJvbQorICB0aGUgYWdlbnQgYnkgcnVubmluZyAiY29uZmlndXJlIC0td2l0aC1vdXQtbWliLW1vZHVsZT14eHgseXl5IiwKKyAgYW5kIHJlLWNvbXBpbGluZy4gIElmIGEgbGFyZ2UgbnVtYmVyIG9mIG1vZHVsZXMgZmFpbCwgdGhlbiBpdAorICBtaWdodCBiZSBlYXNpZXIgdG8gc3RhcnQgZnJvbSBhIHJlbGF0aXZlbHkgYmFyZSBzeXN0ZW0sIHVzaW5nCisgICJjb25maWd1cmUgLS1lbmFibGUtbWluaS1hZ2VudCAtLXdpdGgtZGVmYXVsdHMiLiAgVGhlbiBpZiB0aGlzCisgIG1pbmltYWwgYWdlbnQgY29tcGlsZXMgYW5kIHJ1bnMgc3VjY2Vzc2Z1bGx5LCB0cnkgYWRkaW5nIHRoZQorICBtaXNzaW5nIG1pYmdyb3VwcyB1c2luZyB0aGUgY29uZmlndXJlIG9wdGlvbiAnLS13aXRoLW1pYi1tb2R1bGUnLgorICAKKyAgICBJZiBjb25maWd1cmUgZmFpbHMgd2l0aCAiaW52YWxpZCBjb25maWd1cmF0aW9uIiBtZXNzYWdlcywgb3IKKyAgeW91IGdldCBjb21wbGV0ZWx5IHN0dWNrLCBjb250YWN0IHRoZSBjb2RlcnMgbGlzdCBmb3IgYWR2aWNlLgorICBTaW1pbGFybHksIGlmIHlvdSBtYW5hZ2UgdG8gZ2V0IHRoaXMgd29ya2luZyBvbiBhIG5ldyBzeXN0ZW0sCisgIHBsZWFzZSBsZXQgdXMga25vdyBib3RoIGRldGFpbHMgb2YgdGhlIGhhcmR3YXJlIHlvdSdyZSB1c2luZywKKyAgYW5kIHdoYXQgdmVyc2lvbnMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0geW91J3ZlIHRyaWVkIGl0IG9uLgorICBUaGUgZW50cnkgJ2hvc3QnIGluIHRoZSBmaWxlICdjb25maWcuc3RhdHVzJyB3aWxsIHNob3cgdGhpcworICBpbmZvcm1hdGlvbi4gIE9oLCBhbmQgY29uZ3JhdHVsYXRpb25zIQorCisKKworPGEgbmFtZT0iRG9lc19pdF9ydW5fb25fV2luZG93c18iPgorRG9lcyBpdCBydW4gb24gV2luZG93cz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoZSBzdWl0ZSBzaG91bGQgY29tcGlsZSBhbmQgcnVuIG9uIFdpbjMyIHBsYXRmb3JtcywgaW5jbHVkaW5nCisgIHRoZSBsaWJyYXJ5LCBjb21tYW5kLWxpbmUgdG9vbHMgYW5kIHRoZSBiYXNpYyBhZ2VudCBmcmFtZXdvcmsuCisgIE5vdGUgdGhhdCB0aGUgYWdlbnQgbm93IGluY2x1ZGVzIHN1cHBvcnQgZm9yIHRoZSBNSUItSUkgbW9kdWxlLAorICBidXQgdGhpcyByZXF1aXJlcyBNaWNyb3NvZnQncyBDb3JlIFBsYXRmb3JtIFNESy4gIEluc3RydWN0aW9ucworICBmb3IgaG93IHRvIGluc3RhbGwgdGhpcyBhcmUgZ2l2ZW4gaW4gUkVBRE1FLndpbjMyLgorCisgICAgU29tZSBvdGhlciBNSUIgbW9kdWxlcywgaW5jbHVkaW5nIHRoZSBVQ0QgcGFzcy10aHJvdWdoIGV4dGVuc2lvbnMsCisgIGRvIG5vdCBjdXJyZW50bHkgd29yayB1bmRlciBXaW5kb3dzLiAgVm9sdW50ZWVycyB0byBhc3Npc3QgaW4KKyAgdGhlc2UgbWlzc2luZyBtb2R1bGVzIGFyZSBsaWtlbHkgdG8gd2VsY29tZWQgd2l0aCBvcGVuIGFybXMgOi0pCisKKyAgICBGdXJ0aGVyIGRldGFpbHMgb2YgV2luZG93cyBzdXBwb3J0IChjdXJyZW50bHkgVmlzdWFsIEMrKyBhbmQKKyAgQ3lnbnVzIGN5Z3dpbjMyKSBpcyBhdmFpbGFibGUgaW4gdGhlIGZpbGUgUkVBRE1FLndpbjMyCisKKworCis8YSBuYW1lPSJIb3dfZG9fSV9maW5kX291dF9hYm91dF9uZXdfcmVsZWFzZXNfIj4KK0hvdyBkbyBJIGZpbmQgb3V0IGFib3V0IG5ldyByZWxlYXNlcz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZXJlIGlzIGEgbWFpbGluZyBsaXN0IGZvciB0aGVzZSBhbm5vdW5jZW1lbnRzCisKKyAgCW5ldC1zbm1wLWFubm91bmNlQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorCisgIFRvIGJlIGFkZGVkIHRvIChvciByZW1vdmVkIGZyb20pIHRoaXMgbGlzdCwgdmlzaXQKKyAgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvbGlzdHMvbmV0LXNubXAtYW5ub3VuY2UvLiAgT3IgeW91IGNhbiBzZW5kIGEKKyAgbWVzc2FnZSB0byB0aGUgYWRkcmVzcworICAnbmV0LXNubXAtYW5ub3VuY2UtcmVxdWVzdEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQnIHdpdGggYSBzdWJqZWN0CisgIGxpbmUgb2YgJ3N1YnNjcmliZScgKG9yICd1bnN1YnNjcmliZScgYXMgYXBwcm9wcmlhdGUpLgorCisgIE1ham9yIGNvZGUgcmV2aXNpb25zIG1heSBiZSBhbm5vdW5jZWQgbW9yZSB3aWRlbHkgKGUuZy4gb24gdGhlCisgIFNOTVAgbWFpbGluZyBsaXN0cywgb3IgY29tcC5wcm90b2NvbHMuc25tcCkgYnV0IHRoaXMgbGlzdCBpcyB0aGUgbW9zdAorICByZWxpYWJsZSB3YXkgdG8ga2VlcCBpbiB0b3VjaCB3aXRoIHRoZSBzdGF0dXMgb2YgdGhpcyBwYWNrYWdlLgorCisgIFBhdGNoZXMgdG8gZml4IGtub3duIHByb2JsZW1zIGFyZSBhbHNvIG1hZGUgYXZhaWxhYmxlIHZpYSB0aGUgd2ViIHNpdGU6CisKKyAgICAgICAgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvcGF0Y2hlcy8KKworCisKKzxhIG5hbWU9Ikhvd19jYW5fSV9maW5kX291dF93aGF0X290aGVyX3Blb3BsZV9hcmVfZG9pbmdfIj4KK0hvdyBjYW4gSSBmaW5kIG91dCB3aGF0IG90aGVyIHBlb3BsZSBhcmUgZG9pbmc/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlcmUgaXMgYSBnZW5lcmFsIHB1cnBvc2UgZGlzY3Vzc2lvbiBsaXN0CisKKyAgCW5ldC1zbm1wLXVzZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorCisgIFRvIGJlIGFkZGVkIHRvIChvciByZW1vdmVkIGZyb20pIHRoaXMgbGlzdCwgdmlzaXQKKyAgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvbGlzdHMvbmV0LXNubXAtdXNlcnMuICBPciB5b3UgY2FuIHNlbmQgYQorICBtZXNzYWdlIHRvIHRoZSBhZGRyZXNzICduZXQtc25tcC11c2Vycy1yZXF1ZXN0QGxpc3RzLnNvdXJjZWZvcmdlLm5ldCcKKyAgd2l0aCBhIHN1YmplY3QgbGluZSBvZiAnc3Vic2NyaWJlJyAob3IgJ3Vuc3Vic2NyaWJlJyBhcyBhcHByb3ByaWF0ZSkuCisKKyAgVG8gZmluZCBvdXQgd2hhdCB0aGUgZGV2ZWxvcGVycyBhcmUgZG9pbmcsIGFuZCB0byBoZWxwIHRoZW0gb3V0LCBwbGVhc2UKKyAgcmVhZCB0aGUgUE9SVElORyBmaWxlIGVuY2xvc2VkIHdpdGggdGhlIHBhY2thZ2UuCisKKyAgVGhlcmUgaXMgYWxzbyBhbiBuZXQtc25tcCBJUkMgY2hhbm5lbCBzZXQgdXAgb24gdGhlIGZyZWVub2RlLm5ldCBJUkMKKyAgY2hhdCBzZXJ2ZXJzICh5b3UgY2FuIHVzZSBpcmMuZnJlZW5vZGUubmV0IHRvIGNvbm5lY3QgYW5kL29yIHNlZQorICBodHRwOi8vd3d3LmZyZWVub2RlLm5ldC8gZm9yIGdldHRpbmcgc3RhcnRlZCB3aXRoIGlyYykuICBNdWx0aXBsZQorICBjb3JlIGRldmVsb3BlcnMgaGFuZyBvdXQgdGhlcmUgb24gYSByZWd1bGFyIGJhc2lzLgorCisKKworPGEgbmFtZT0iSG93X2RvX0lfc3VibWl0X2FfcGF0Y2hfb3JfYnVnX3JlcG9ydF8iPgorSG93IGRvIEkgc3VibWl0IGEgcGF0Y2ggb3IgYnVnIHJlcG9ydD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBBbGwgYnVnIHJlcG9ydHMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byB0aGUgYnVnIGRhdGFiYXNlIHRocm91Z2ggdGhlCisgIGludGVyZmFjZSBmb3VuZCBhdCBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy9idWdzLy4gIEJlCisgIHN1cmUgdG8gaW5jbHVkZSB0aGUgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSB0aGF0IHlvdSd2ZSBiZWVuIHdvcmtpbmcKKyAgd2l0aCwgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZCAndW5hbWUgLWEnLCB0aGUgcHJlY2lzZSBjb21tYW5kIHRoYXQKKyAgdHJpZ2dlcnMgdGhlIHByb2JsZW0gYW5kIGEgY29weSBvZiB0aGUgb3V0cHV0IGl0IHByb2R1Y2VzLgorCisgICAgQWxsIHBhdGNoZXMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byB0aGUgcGF0Y2ggbWFuYWdlciBhdAorICBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy9wYXRjaGVzLy4gIElmIHBvc3NpYmxlLCBzdWJtaXQgYQorICBidWcgcmVwb3J0IGRlc2NyaWJpbmcgdGhlIHBhdGNoIGFzIHdlbGwgKHJlZmVyZW5jaW5nIGl0IGJ5IGl0cyBwYXRjaAorICBudW1iZXIpIHNpbmNlIHRoZSBwYXRjaCBtYW5hZ2VyIGRvZXNuJ3QgY29udGFpbiBhIGRlY2VudCBkZXNjcmlwdGlvbgorICBmaWVsZC4KKworICAgIFF1ZXN0aW9ucyBhYm91dCB1c2luZyB0aGUgcGFja2FnZSBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgdGhlCisgIG5ldC1zbm1wLXVzZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCBtYWlsaW5nIGxpc3QuICBOb3RlIHRoYXQgdGhpcworICBtYWlsaW5nIGxpc3QgaXMgcmVsYXRpdmVseSBidXN5LCBhbmQgdGhlIHBlb3BsZSBhbnN3ZXJpbmcgdGhlc2UKKyAgcXVlc3Rpb25zIGFyZSBkb2luZyBzbyBvdXQgb2YgdGhlIGdvb2RuZXNzIG9mIHRoZWlyIGhlYXJ0cywgYW5kIGluCisgIGFkZGl0aW9uIHRvIHRoZWlyIG1haW4gZW1wbG95bWVudC4gIFBsZWFzZSBub3RlIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgLSB1c2UgcGxhaW4gdGV4dCBtYWlsLCByYXRoZXIgdGhhbiBIVE1MCisgICAgIC0gZG9uJ3QgcmVzZW5kIHF1ZXN0aW9ucyBtb3JlIHRoYW4gb25jZQorICAgICAgICAgIChldmVuIGlmIG5vLW9uZSBhbnN3ZXJlZCBpbW1lZGlhdGVseSkKKyAgICAgLSBpbmNsdWRlIGZ1bGwgZGV0YWlscyBvZiBleGFjdCBjb21tYW5kcyBhbmQgZXJyb3IgbWVzc2FnZXMKKyAgICAgICAgICAoIkkndmUgdHJpZWQgZXZlcnl0aGluZywgYW5kIGl0IGRvZXNuJ3Qgd29yayIgaXNuJ3QgbXVjaCB1c2UhKQorICAgICAtIGRvICpOT1QqIHNlbmQgbWVzc2FnZXMgdG8gLXVzZXJzIGFuZCAtY29kZXJzIG1haWxpbmcgbGlzdHMKKyAgICAgICAgICAobW9zdCBkZXZlbG9wZXJzIHJlYWQgYm90aCBhbnl3YXkpCisgICAgIC0gZG9uJ3QgbWFpbCB0aGUgZGV2ZWxvcGVycyBwcml2YXRlbHkgLSBrZWVwIGV2ZXJ5dGhpbmcgb24gdGhlIGxpc3QKKworICBSZW1lbWJlciB0aGF0IHRoaXMgaXMgYmFzaWNhbGx5IGFuIHVuc3VwcG9ydGVkIHBhY2thZ2UuICBGdW5kYW1lbnRhbGx5CisgIGl0J3MgT3BlbiBTb3VyY2UsIHNvIHlvdSBoYXZlIHRoZSBzb3VyY2UgY29kZS4gIElmIHlvdSBuZWVkIHNvbWV0aGluZworICBmaXhpbmcgYmFkbHkgZW5vdWdoLCBpdCdzIHVwIHRvIHlvdSB0byBkbyB0aGUgd29yay4KKworICAgIFdlIGNhbid0IHByb21pc2UgdG8gYmUgYWJsZSB0byBzb2x2ZSBhbGwgcHJvYmxlbXMsIGJ1dCB3ZSdsbAorICBjZXJ0YWlubHkgdHJ5IGFuZCBoZWxwLiAgQnV0IHJlbWVtYmVyIHRoYXQgdGhpcyBpcyBiYXNpY2FsbHkgYW4KKyAgdW5zdXBwb3J0ZWQgcGFja2FnZS4gIEl0J3MgT3BlbiBTb3VyY2UsIHNvIGlmIHlvdSBuZWVkIHNvbWV0aGluZworICBmaXhpbmcgYmFkbHkgZW5vdWdoLCAgZnVuZGFtZW50YWxseSBpdCdzIHVwIHRvIHlvdSB0byBkbyB0aGUgd29yay4KKworPGEgbmFtZT0iQ2FuX0lfcmV1c2VfdGhlX2NvZGVfaW5fbXlfY29tbWVyY2lhbF9hcHBsaWNhdGlvbl8iPgorQ2FuIEkgcmV1c2UgdGhlIGNvZGUgaW4gbXkgY29tbWVyY2lhbCBhcHBsaWNhdGlvbj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRldGFpbHMgb2YgdGhlIENPUFlSSUdIVHMgb24gdGhlIHBhY2thZ2UgY2FuIGJlIGZvdW5kIGluIHRoZQorQ09QWUlORyBmaWxlLiAgWW91IHNob3VsZCBoYXZlIHlvdXIgbGF3eWVyIHJlYWQgdGhpcyBmaWxlIGlmIHlvdSB3aXNoCit0byB1c2UgdGhlIGNvZGUgaW4geW91ciBjb21tZXJjaWFsIGFwcGxpY2F0aW9uLiAgV2Ugd2lsbCBub3Qgc3VtbWFyaXplCitoZXJlIHdoYXQgaXMgaW4gdGhlIGZpbGUsIGFzIHdlJ3JlIG5vdCBsYXd5ZXJzIGFuZCBhcmUgdW5xdWFsaWZpZWQgdG8KK2RvIHNvLgorCisKKzxhIG5hbWU9IldoYXRfc190aGVfZGlmZmVyZW5jZV9iZXR3ZWVuX1NOTVB2X19fU05NUHZfX2FuZF9TTk1Qdl9fIj4KK1doYXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFNOTVB2MSwgU05NUHYyIGFuZCBTTk1QdjM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8YSBuYW1lPSJXaGF0X2FyZV9hbGxfdGhlc2VfZGlmZmVyZW50X1NOTVB2X19zX2FueXdheV8iPgorV2hhdCBhcmUgYWxsIHRoZXNlIGRpZmZlcmVudCBTTk1QdjIncyBhbnl3YXk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKyAgQSBmdWxsIGRlc2NyaXB0aW9uIGlzIHByb2JhYmx5IGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBGQVEuCisgIFZlcnkgYnJpZWZseSwgdGhlIG9yaWdpbmFsIHByb3RvY29sIGFuZCBmcmFtZXdvcmsgd2FzIGRlc2NyaWJlZAorICBpbiBSRkNzIDExNTUtMTE1NywgYW5kIGlzIG5vdyBrbm93biBhcyBTTk1QdjEuCisKKyAgICBQcmFjdGljYWwgZXhwZXJpZW5jZSBzaG93ZWQgdXAgdmFyaW91cyBwcm9ibGVtcyBhbmQKKyAgZGVmaWNpZW5jaWVzIHdpdGggdGhpcywgYW5kIGEgcmV2aXNlZCBmcmFtZXdvcmsgd2FzIGRldmVsb3BlZCB0bworICB0cnkgYW5kIGFkZHJlc3MgdGhlc2UuICBUaGlzIHdhcyBkZXNjcmliZWQgaW4gUkZDcyAxNDQxLTE0NTIsIGFuZAorICBrbm93biBhcyAiU05NUHYyIGNsYXNzaWMiLgorICBUaGUgY2hhbmdlcyBwcm9wb3NlZCBpbmNsdWRlOgorCisJKiBuZXcgd2F5cyBvZiBkZWZpbmluZyBpbmZvcm1hdGlvbiAoTUlCIHN0cnVjdHVyZSkKKwkJKFNNSSwgVGV4dHVhbCBjb252ZW50aW9ucywgY29uZm9ybWFuY2Ugc3RhdGVtZW50cykKKwkqIG5ldyBwcm90b2NvbCBwYWNrZXQgdHlwZXMgYW5kIHRyYW5zcG9ydCBtYXBwaW5ncworCSogbmV3IG1lY2hhbmlzbXMgZm9yIGFkbWluaXN0cmF0aW9uIGFuZCBzZWN1cml0eQorCSogbWVjaGFuaXNtcyBmb3IgcmVtb3RlIGNvbmZpZ3VyYXRpb24KKworICBVbmZvcnR1bmF0ZWx5LCB3aGlsZSBtYW55IG9mIHRoZXNlIHdlcmUgZ2VuZXJhbGx5IGFjY2VwdGVkLCB0aGVyZQorICB3YXMgc29tZSBkaXNhZ3JlZW1lbnQgaW4gdGhlc2UgbGFzdCB0d28gYXJlYXMsIHNlY3VyaXR5L2FkbWluCisgIGFuZCByZW1vdGUgY29uZmlndXJhdGlvbi4gIFRoaXMgcmVzdWx0ZWQgaW4gYSBudW1iZXIgb2YgdmFyaWFudHMgYW5kCisgIGFsdGVybmF0aXZlIHByb3Bvc2FsczoKKworCVNOTVB2MmMJCUNvbnRhaW5zIHRoZSBuZXcgcHJvdG9jb2wgYW5kIE1JQiBzdHJ1Y3R1cmUgZWxlbWVudHMsCisJCQl1c2luZyB0aGUgZXhpc3RpbmcgU05NUHYxIGFkbWluaXN0cmF0aW9uIHN0cnVjdHVyZS4KKwkJCVRoaXMgaXMgdGhlIGRlLWZhY3RvIFNOTVB2MiBzdGFuZGFyZCAoZGVzY3JpYmVkIGluCisJCQlSRkNzIDE5MDEtMTkwOCksIHN1cGVyc2VkaW5nIFNOTVB2MiBjbGFzc2ljLCBhbmQgaXMKKwkJCWtub3duIGFzICJDb21tdW5pdHktYmFzZWQgU05NUHYyIiBvciBzaW1wbHkgIlNOTVB2MiIuCisKKworCVNOTVB2MiB1c2VjCX0gQWx0ZXJuYXRpdmUgcHJvcG9zYWxzIHRvIGFkZHJlc3MgdGhlCisJU05NUHYyKgkJfSBsaW1pdGF0aW9ucyBvZiBTTk1QdjEgYWRtaW5pc3RyYXRpb24KKwkJCX0gVGhlc2UgYXJlIGJvdGggc3VwZXItc2V0cyBvZiBTTk1QdjJjCisKKwkJCQorCVNOTVAtTkcJCUFuIGF0dGVtcHQgdG8gcmVhY2ggYWdyZWVtZW50IGJldHdlZW4KKwkJCXRoZSBwcm9wb25lbnRzIG9mIHVzZWMgYW5kIHYyc3Rhci4KKworICBUaGUgZm9ybWFsIHN1Y2Nlc3NvciB0byB0aGUgU05NUC1ORyB3b3JrIGhhcyBiZWVuIHRlcm1lZCBTTk1QdjMuCisgIFRoaXMgaGFzIG5vdyBiZWVuIGVmZmVjdGl2ZWx5IGZpbmFsaXNlZCwgYW5kIGlzIGRlc2NyaWJlZCBpbiBSRkNzCisgIDI1NzEtMjU3NS4gIFRoaXMgaXMgY3VycmVudGx5IGEgUHJvcG9zZWQgU3RhbmRhcmQsIGJ1dCBpcyBsaWtlbHkKKyAgdG8gcHJvZ3Jlc3MgdG8gZnVsbCBTdGFuZGFyZCBpbiB0aGUgcmVsYXRpdmVseSBuZWFyIGZ1dHVyZS4KKworCisKKzxhIG5hbWU9IldoaWNoX3ZlcnNpb25zX29mX1NOTVBfYXJlX3N1cHBvcnRlZF9pbl90aGlzX3BhY2thZ2VfIj4KK1doaWNoIHZlcnNpb25zIG9mIFNOTVAgYXJlIHN1cHBvcnRlZCBpbiB0aGlzIHBhY2thZ2U/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBwYWNrYWdlIGN1cnJlbnRseSBzdXBwb3J0cyB0aGUgb3JpZ2luYWwgU05NUHYxLCBDb21tdW5pdHktYmFzZWQKKyAgU05NUHYyIChpLmUuIFJGQ3MgMTkwMS0xOTA4KSwgYW5kIFNOTVB2MyAoaS5lLiBSRkNzIDI1NzEtMjU3NSkuCisgICAgVGhlIGFnZW50IHdpbGwgcmVzcG9uZCB0byByZXF1ZXN0cyB1c2luZyBhbnkgb2YgdGhlc2UgcHJvdG9jb2xzLAorICBhbmQgYWxsIHRoZSB0b29scyB0YWtlIGEgY29tbWFuZC1saW5lIG9wdGlvbiB0byBkZXRlcm1pbmUgd2hpY2gKKyAgdmVyc2lvbiB0byB1c2UuCisKKyAgU3VwcG9ydCBmb3IgU05NUHYyIGNsYXNzaWMgKGEuay5hLiAiU05NUHYyIGhpc3RvcmljIiAtIFJGQ3MgMTQ0MS0xNDUyKQorICB3YXMgZHJvcHBlZCB3aXRoIHRoZSA0LjAgcmVsZWFzZSBvZiB0aGUgVUNELXNubXAgcGFja2FnZS4KKworCisKKzxhIG5hbWU9IkNhbl9JX3VzZV9TTk1Qdl9fcmVxdWVzdHNfd2l0aF9hbl9TTk1Qdl9fTUlCX19vcl92aWNlX3ZlcnNhX18iPgorQ2FuIEkgdXNlIFNOTVB2MSByZXF1ZXN0cyB3aXRoIGFuIFNOTVB2MiBNSUIgKG9yIHZpY2UgdmVyc2EpPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBZZXMuCisKKyAgICBUaGUgdmVyc2lvbiBvZiB0aGUgc3ludGF4IHVzZWQgdG8gZGVmaW5lIGEgTUlCIGZpbGUKKyAgaXMgYmV0dGVyIHJlZmVycmVkIHRvIGFzIFNNSXYxIG9yIFNNSXYyLCBhbmQgaXMgcHVyZWx5CisgIGNvbmNlcm5lZCB3aXRoIGRlZmluaW5nIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlCisgIHZhcmlvdXMgbWFuYWdlbWVudCBvYmplY3RzLiAgVGhpcyBpcyAoYWxtb3N0KSBjb21wbGV0ZWx5CisgIHVucmVsYXRlZCB0byB0aGUgdmVyc2lvbnMgb2YgdGhlIHByb3RvY29sIG9wZXJhdGlvbnMuCisgIFNvIGl0IGlzIHF1aXRlIHJlYXNvbmFibGUgdG8gdXNlIFNOTVB2MSByZXF1ZXN0cyBvbgorICBvYmplY3RzIGRlZmluZWQgdXNpbmcgU01JdjIsIG9yIFNOTVB2MiAob3IgU05NUHYzKQorICByZXF1ZXN0cyBvbiBvYmplY3RzIGRlZmluZWQgdXNpbmcgU01JdjEuCisKKyAgICBUaGUgb25lIGV4Y2VwdGlvbiBpcyBvYmplY3RzIG9mIHN5bnRheCBDb3VudGVyNjQsCisgIHdoaWNoIGFyZSBvbmx5IGFjY2Vzc2libGUgdXNpbmcgU05NUHYyIG9yIGhpZ2hlci4KKyAgU05NUHYxIHJlcXVlc3RzIHdpbGwgZWl0aGVyIHRyZWF0IHN1Y2ggb2JqZWN0cyBhcyBhbgorICBlcnJvciwgb3Igc2tpcCBvdmVyIHRoZW0gY29tcGxldGVseS4KKworICAKKworPGEgbmFtZT0iV2hlcmVfY2FuX0lfZmluZF9tb3JlX2luZm9ybWF0aW9uX2Fib3V0X25ldHdvcmtfbWFuYWdlbWVudF8iPgorV2hlcmUgY2FuIEkgZmluZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG5ldHdvcmsgbWFuYWdlbWVudD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGVyZSBhcmUgYSBudW1iZXIgb2Ygc2l0ZXMgd2l0aCBuZXR3b3JrIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gb24KKyAgdGhlIFdvcmxkIFdpZGUgV2ViLiBUaHJlZSBvZiB0aGUgbW9zdCB1c2VmdWwgYXJlCisKKyAgICAgIGh0dHA6Ly93d3cuc25tcHdlYi5vcmcvCisgICAgICBodHRwOi8vd3d3LnNubXBsaW5rLm9yZy8KKyAgICAgIGh0dHA6Ly93d3cubWliZGVwb3QuY29tLworCisgIFRoZXJlIGFyZSB0d28gVXNlbmV0IG5ld3Nncm91cHMgd2hpY2ggYXJlIHJlbGV2YW50LgorCSdjb21wLmRjb20ubmV0LW1hbmFnZW1lbnQnCisJCXdoaWNoIGRpc2N1c3NlcyBnZW5lcmFsIGlzc3VlcyByZWxhdGluZyB0byBuZXR3b3JrIG1hbmFnZW1lbnQKKwknY29tcC5wcm90b2NvbHMuc25tcCcKKwkJd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGNvbmNlcm5lZCB3aXRoIHVzZSBvZiBTTk1QIGluIHBhcnRpY3VsYXIKKworICAodGhvdWdoIHRoZXJlIGlzIGEgbGFyZ2Ugb3ZlcmxhcCBiZXR3ZWVuIHRoZXNlIHR3byBncm91cHMpLgorICBUaGUgU05NUCBncm91cCBhbHNvIGhhcyBhbiBGQVEgKHNwbGl0IGludG8gdHdvIHBhcnRzKSB3aGljaCBkaXNjdXNzZXMgbW9yZQorICBnZW5lcmFsIGlzc3VlcyByZWxhdGVkIHRvIFNOTVAsIGluY2x1ZGluZyBib29rcywgc29mdHdhcmUsIG90aGVyIHNpdGVzLAorICBob3cgdG8gZ2V0IGFuIGVudGVycHJpc2UgbnVtYmVyLCBldGMsIGV0Yy4KKyAgVGhpcyBpcyBhdmFpbGFibGUgZnJvbQorCisgICAgICBmdHA6Ly9ydGZtLm1pdC5lZHUvcHViL3VzZW5ldC9jb21wLnByb3RvY29scy5zbm1wLworCisgIG9yIHZpYSBhbnkgb2YgdGhlIFdlYiBzaXRlcyBhYm92ZS4KKworCisKKzxhIG5hbWU9IklzX3VjZF9zbm1wX3RocmVhZF9zYWZlXyI+CitJcyB1Y2Qtc25tcCB0aHJlYWQgc2FmZT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgU3RyaWN0bHkgc3BlYWtpbmcsIG5vLiAgSG93ZXZlciwgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHVzZSB0aGUKKyAgbGlicmFyeSBpbiBhIHRocmVhZC1zYWZlIG1hbm5lci4gIFRoaXMgaXMgY292ZXJlZCBpbiBkZXRhaWwgaW4gdGhlIGZpbGUKKyAgUkVBRE1FLnRocmVhZCAoc2hpcHBlZCB3aXRoIHRoZSBzdGFuZGFyZCBkaXN0cmlidXRpb24pLCBidXQgY2FuIGJlCisgIHN1bW1hcmlzZWQgYXMgZm9sbG93czoKKworICAgIC0JQ2FsbCAnc25tcF9zZXNzX2luaXQoKScgcHJpb3IgdG8gYWN0aXZhdGluZyBhbnkgdGhyZWFkcy4KKwlUaGlzIHJlYWRzIGluIGFuZCBwYXJzZXMgTUlCIGluZm9ybWF0aW9uICh3aGljaCBpc24ndCB0aHJlYWQtc2FmZSkKKwlhcyB3ZWxsIGFzIHByZXBhcmluZyBhIHNlc3Npb24gc3RydWN0dXJlIGZvciBzdWJzZXF1ZW50IHVzZS4KKworICAgIC0JT3BlbiBhbiBTTk1QIHNlc3Npb24gdXNpbmcgJ3NubXBfc2Vzc19vcGVuKCknIHdoaWNoIHJldHVybnMgYW4KKwlvcGFxdWUgc2Vzc2lvbiBoYW5kbGUsIHdoaWNoIGlzIGVzc2VudGlhbGx5IGluZGVwZW5kZW50IG9mIGFueQorCW90aGVyIHNlc3Npb25zIChyZWdhcmRsZXNzIG9mIHRocmVhZCkuCisKKyAgICAtCVJlc291cmNlIGxvY2tpbmcgaXMgbm90IGhhbmRsZWQgd2l0aGluIHRoZSBsaWJyYXJ5LCBhbmQgaXMgdGhlCisJcmVzcG9uc2liaWxpdHkgb2YgdGhlIG1haW4gYXBwbGljYXRpb24uCisKKyAgVGhlIGFwcGxpY2F0aW9ucyBhbmQgdGhlIGFnZW50IGhhdmUgbm90IGJlZW4gZGVzaWduZWQgZm9yIHRocmVhZGVkIHVzZS4KKworCisKKzxhIG5hbWU9IkFQUExJQ0FUSU9OUyI+CitBUFBMSUNBVElPTlMKKz09PT09PT09PT09PQorCis8YSBuYW1lPSJIb3dfZG9fSV9hZGRfYV9NSUJfIj4KK0hvdyBkbyBJIGFkZCBhIE1JQj8KKy0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoaXMgaXMgYWN0dWFsbHkgdHdvIHNlcGFyYXRlIHF1ZXN0aW9ucywgZGVwZW5kaW5nIG9uIHdoZXRoZXIgeW91CisgIGFyZSByZWZlcnJpbmcgdG8gdGhlIHRvb2xzLCBvciB0aGUgYWdlbnQgKG9yIGJvdGgpLgorICAgIFNlZSB0aGUgbmV4dCBxdWVzdGlvbiBvciB0aGUgbmV4dCBzZWN0aW9uIHJlc3BlY3RpdmVseS4KKworCisKKzxhIG5hbWU9Ikhvd19kb19JX2FkZF9hX01JQl90b190aGVfdG9vbHNfIj4KK0hvdyBkbyBJIGFkZCBhIE1JQiB0byB0aGUgdG9vbHM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgRmlyc3RseSwKKworCWNwIE1ZLU1JQi50eHQgL3Vzci9sb2NhbC9zaGFyZS9zbm1wL21pYnMKKworICAgICAgICAgIG9yCisKKyAgICAgICAgbWtkaXIgJEhPTUUvLnNubXAKKyAgICAgICAgbWtkaXIgJEhPTUUvLnNubXAvbWlicworCWNwIE1ZLU1JQi50eHQgJEhPTUUvLnNubXAvbWlicworCisgIEFuZCB0aGVuLAorCisJZXhwb3J0IE1JQlM9K01ZLU1JQgorCisgICAgICAgICAgb3IgYWx0ZXJuYXRpdmVseToKKworICAgICAgICBlY2hvICJtaWJzICtNWS1NSUIiICZndDsmZ3Q7ICRIT01FLy5zbm1wL3NubXAuY29uZgorCisgIE5vdGUgdGhhdCB5b3UgbmVlZCAqYm90aCogc3RlcHMuCisgIFRoZSBmaXJzdCBjb21tYW5kIGNvcGllcyB0aGUgZmlsZSBkZWZpbmluZyB0aGUgbmV3IE1JQiB0byBhCisgIGV4cGVjdGVkIGxvY2F0aW9uIGZvciBNSUIgZmlsZXMuICBUaGlzIGRlZmF1bHRzIHRvCisgIC91c3IvbG9jYWwvc2hhcmUvc25tcC9taWJzIChvciBQUkVGSVgvc2hhcmUvc25tcC9taWJzIGlmIHRoZSB0aGUKKyAgc3VpdGUgd2FzIGluc3RhbGxlZCBpbnRvIGEgZGlmZmVyZW50IGJhc2UgbG9jYXRpb24pLiAgU29tZQorICByZWFkeS1wYWNrYWdlZCBkaXN0cmlidXRpb25zIChzdWNoIGFzIExpbnV4IFJQTSBwYWNrYWdlcykgbWF5IGxvb2sKKyAgZm9yIE1JQiBmaWxlcyBpbiBhIGRpZmZlcmVudCBsb2NhdGlvbiwgc3VjaCBhcyAvZXRjL3NubXAvbWlicyAtIHB1dAorICB0aGUgbmV3IGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkgaW5zdGVhZC4gIFRoaXMgbWFrZXMgaXQgYXZhaWxhYmxlIGZvcgorICBldmVyeW9uZSBvbiB0aGUgc3lzdGVtLgorICBUaGUgdG9vbHMgd2lsbCBhbHNvIGxvb2sgZm9yIG1pYnMgaW4geW91ciBwZXJzb25hbCAkSE9NRS8uc25tcC9taWJzCisgIGRpcmVjdG9yeSwgYnV0IHRoaXMgd2lsbCBvbmx5IHdvcmsgZm9yIHlvdS4KKworICBUaGUgc2Vjb25kIGNvbW1hbmQgdGVsbHMgdGhlIHRvb2xzIHRvIGxvYWQgaW4gdGhpcyBuZXcgTUlCIGZpbGUgYXMgd2VsbAorICBhcyB0aGUgZGVmYXVsdCBzZXQuICAgTm90ZSB0aGF0IHRoZSB0b29scyBkbyAqbm90KiBsb2FkIGV2ZXJ5IE1JQiBmb3VuZAorICBpbiB0aGUgZGlyZWN0b3J5IC0gdGhpcyBpcyB0byBhdm9pZCBzbG93aW5nIHRoZW0gZG93biBleGNlc3NpdmVseSB3aGVuCisgIHRoZXJlIGlzIGEgbGFyZ2UgY29sbGVjdGlvbiBvZiBNSUIgZmlsZXMuICBJZiB5b3UgZG8gd2FudCB0aGUgdG9vbHMgdG8KKyAgbG9hZCBhbGwgdGhlIE1JQiBmaWxlcywgc2V0IHRoZSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIE1JQlMgdG8gdGhlIHNwZWNpYWwKKyAgdmFsdWUgIkFMTCIuCisKKyAgICAgTm90ZSB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhpcyB2YXJpYWJsZSBpcyB0aGUgbmFtZSBvZiB0aGUgTUlCIG1vZHVsZSwKKyAgKm5vdCogdGhlIG5hbWUgb2YgdGhlIE1JQiBmaWxlLiAgIFRoZXNlIGFyZSB0eXBpY2FsbHkgdGhlIHNhbWUgKGFwYXJ0CisgIGZyb20gdGhlIC50eHQgc3VmZml4KSwgYnV0IGlmIGluIGRvdWJ0LCBjaGVjayB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUuCisgIFRoZSB2YWx1ZSB0byB1c2UgaXMgdGhlIHRva2VuIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgd29yZCBERUZJTklUSU9OUworICBhdCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICBPZiBjb3Vyc2UsIGlmIHlvdSBsb2FkICdBTEwnIG1pYnMsIHRoZW4gdGhpcworICBkaXN0aW5jdGlvbiBpcyBpcnJlbGV2YW50LgorCisgICAgTW9zdCBvZiB0aGUgdG9vbHMgKGFwYXJ0IGZyb20gJ3NubXB0YWJsZScpIHdpbGwgd29yayBxdWl0ZSBoYXBwaWx5CisgIHdpdGhvdXQgYW55IE1JQiBmaWxlcyBhdCBhbGwsIGFzIGxvbmcgYXMgeW91IGFyZSBwcmVwYXJlZCB0byB3b3JrIHdpdGgKKyAgbnVtZXJpYyBPSURzIHRocm91Z2hvdXQuICBUaGUgTUlCIGZpbGVzIGFyZSBvbmx5IHVzZWQgZm9yIHRyYW5zbGF0aW5nCisgIGJldHdlZW4gbnVtZXJpYyBhbmQgdGV4dHVhbCBmb3JtcyBmb3IgcXVlcmllcyBhbmQgcmVzcG9uc2VzLgorICAgIFRoZSBzYW1lIGhvbGRzIHRydWUgZm9yIHRoZSBhZ2VudCAtIHNlZSB0aGUgQUdFTlQgc2VjdGlvbiBmb3IgZGV0YWlscy4KKworCisKKzxhIG5hbWU9IldoeV9jYW5fdF9JX3NlZV9hbnl0aGluZ19mcm9tX3RoZV9hZ2VudF8iPgorV2h5IGNhbid0IEkgc2VlIGFueXRoaW5nIGZyb20gdGhlIGFnZW50PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlcmUgYXJlIHR3byBtYWluIGdlbmVyYWwgY2F1c2VzIG9mIHByb2JsZW1zIHJldHJpZXZpbmcgaW5mb3JtYXRpb24KKyAgZnJvbSB0aGUgYWdlbnQuICAgRmlyc3RseSwgdGhlIHZhcmlhYmxlIChvciB2YXJpYWJsZXMpIHNwZWNpZmllZCBtYXkKKyAgbm90IGJlIHJlY29nbmlzZWQgYnkgdGhlIHRvb2xzIGFzIHZhbGlkIG5hbWVzLiAgSW4gdGhpcyBjYXNlLCB0aGUKKyAgdG9vbHMgd2lsbCB0eXBpY2FsbHkgcmVqZWN0IHRoZSByZXF1ZXN0IHdpdGhvdXQgZXZlciBjb250YWN0aW5nIHRoZQorICByZW1vdGUgYWdlbnQuCisKKyAgICBBbHRlcm5hdGl2ZWx5LCB0aGUgdG9vbCBtYXkgYmUgaGFwcHkgd2l0aCB0aGUgcmVxdWVzdCwgYnV0IHRoZSBhZ2VudAorICBkb2VzIG5vdCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUocykuICBJdCBtYXkgcmV0dXJuIGFuIGV4cGxpY2l0CisgIGVycm9yIG1lc3NhZ2UgaW5zdGVhZCwgb3IgdGhlIHJlcXVlc3QgbWF5IHRpbWUgb3V0IHdpdGhvdXQgYW55IHJlc3BvbnNlCisgIGJlaW5nIHNlbnQgYmFjayBhdCBhbGwuICBUaGUgbmV4dCBmZXcgZW50cmllcyBsb29rIGF0IHRoZXNlIGluIG1vcmUgZGV0YWlsLgorCisKKworPGEgbmFtZT0iV2h5X2Nhbl90X0lfc2VlX3ZhbHVlc19pbl90aGVfX0lOU0VSVF9FTlRFUlBSSVNFX0hFUkVfX3RyZWVfIj4KK1doeSBjYW4ndCBJIHNlZSB2YWx1ZXMgaW4gdGhlICZsdDtJTlNFUlQgRU5URVJQUklTRSBIRVJFJmd0OyB0cmVlPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBIYXZpbmcgc2FpZCB0aGF0IHRoZXJlIGFyZSB0d28gbWFpbiByZWFzb25zIGZvciBub3QgZ2V0dGluZyBhIHJlc3BvbnNlLAorICB0aGUgbW9zdCBsaWtlbHkgY2F1c2Ugb2YgdGhpcyBwcm9ibGVtIGlzIGFjdHVhbGx5IHNvbWV0aGluZyBlbHNlIGFnYWluLgorCisgIFRoZSAnc25tcHdhbGsnIGNvbW1hbmQgdGFrZXMgYSBwb2ludCBpbiB0aGUgb3ZlcmFsbCBNSUIgdHJlZSwgYW5kIHRyaWVzCisgIHRvIGRpc3BsYXkgYWxsIHRoZSB2YWx1ZXMgdGhhdCBsaWUgd2l0aGluIHRoaXMgc3VidHJlZS4gIEhvd2V2ZXIsIGl0CisgIGFjdHVhbGx5IGRvZXMgdGhpcyBieSBpc3N1aW5nIGEgc2VyaWVzIG9mICJnZXRuZXh0IiByZXF1ZXN0cywgdW50aWwKKyAgdGhlIHZhcmlhYmxlIHJldHVybmVkIGxpZXMgb3V0c2lkZSB0aGUgc3VidHJlZSBvZiBpbnRlcmVzdC4gIElmIHRoZQorICB2ZXJ5IGZpcnN0IHJlcXVlc3QgcmV0dXJucyBzdWNoIGFuIHVuZGVzaXJlZCB2YWx1ZSwgdGhlbiB0aGUgY29tbWFuZAorICB3aWxsIHRlcm1pbmF0ZSwgd2l0aG91dCBoYXZpbmcgZGlzcGxheWVkIGFueXRoaW5nIGF0IGFsbC4KKworICAgIElmIGFuIGV4cGljaXQgc3RhcnRpbmcgcG9pbnQgaXMgZ2l2ZW4gdG8gJ3NubXB3YWxrJywgdGhlbiBpdCBpcyByZWFzb25hYmx5CisgIGNsZWFyIHdoYXQgaXMgaGFwcGVuaW5nLCBhbmQgdGhhdCB0aGVyZSBpcyBzaW1wbHkgbm90aGluZyBpbiB0aGUgc3VidHJlZQorICBzcGVjaWZpZWQuICBIb3dldmVyLCBpZiAnc25tcHdhbGsnIGlzIGNhbGxlZCB3aXRob3V0IGdpdmluZyBhbiBleHBsaWNpdAorICBzdGFydGluZyBwb2ludCwgdGhlbiBpdCB3aWxsIGRpc3BsYXkgdGhlIGNvbnRlbnRzIG9mIHRoZSAnbWliLTInIHN1YnRyZWUuCisgIEl0IHdpbGwgbm90IGF0dGVtcHQgdG8gdHJhdmVyc2UgYW55ICdwcml2YXRlLmVudGVycHJpc2UnIHN1YnRyZWUsIHN1Y2ggYXMKKyAgdGhlIFVDRC1zcGVjaWZpYyBvYmplY3RzIChpbmNsdWRpbmcgYW55IGxvY2FsIGV4dGVuc2lvbnMpLgorCisgICAgVG8gd2FsayB0aGUgd2hvbGUgdHJlZSwgc3BlY2lmeSBhIHN0YXJ0aW5nIHBvaW50IG9mICcuaXNvJworICBUbyB3YWxrIGEgc3BlY2lmaWMgZW50ZXJwcmlzZSBzdWJ0cmVlLCBzcGVjaWZ5IHRoZSByb290IG9mIHRoaXMgYXMKKyAgdGhlIHN0YXJ0aW5nIHBvaW50IC0gZS5nOgorCisJc25tcHdhbGsgLXYxIC1jIHB1YmxpYyBsb2NhbGhvc3QgdWNkYXZpcworIAorICBPciwgb2YgY291cnNlLCB5b3UgY2FuIHdhbGsgYSBzZWxlY3RlZCBwb3J0aW9uIG9mIGFuIGVudGVycHJpc2Ugc3VidHJlZQorICBieSBzcGVjaWZ5aW5nIHRoZSBhcHByb3ByaWF0ZSBzdGFydGluZyBwb2ludCAtIGUuZzoKKworCXNubXB3YWxrIC12MSAtYyBwdWJsaWMgbG9jYWxob3N0IHVjZGF2aXMudmVyc2lvbgorICAKKyAgSWYgeW91IHN0aWxsIGNhbid0IHNlZSBhbnkgaW5mb3JtYXRpb24sIGtlZXAgcmVhZGluZy4gIFRoZSBuZXh0IGZldworICBxdWVzdGlvbnMgd2lsbCBwcm9iYWJseSBoZWxwIHlvdS4KKworCisKKzxhIG5hbWU9IlJlcXVlc3RzX2Fsd2F5c19zZWVtX3RvX3RpbWVvdXRfX2FuZF9kb25fdF9naXZlX21lX2FueXRoaW5nX2JhY2tfX19XaHlfIj4KK1JlcXVlc3RzIGFsd2F5cyBzZWVtIHRvIHRpbWVvdXQsIGFuZCBkb24ndCBnaXZlIG1lIGFueXRoaW5nIGJhY2suICBXaHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHBvc3NpYmxlIGNhdXNlcyBvZiB0aGlzLgorCisgIFRoZSBtb3N0IGxpa2VseSBhcmUgdGhlIGFnZW50IGFjY2VzcyBjb250cm9sIHNldHRpbmdzICh3aG8gaXMgYWxsb3dlZAorICBhY2Nlc3MgYnkgdGhlIGFnZW50IGl0c2VsZiksIG9yIGZpcmV3YWxsL3BhY2tldCBmaWx0ZXJpbmcgc2V0dGluZ3MKKyAgKHdobyBpcyBhbGxvd2VkIGFjY2VzcyBieSB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtKS4KKworICBBIGZ1bGxlciBsaXN0IG9mIHBvc3NpYmxlIGNhdXNlcyAod2l0aCBpbmRpY2F0aW9ucyBvZiBob3cgdG8gY2hlY2sKKyAgZm9yIGVhY2gpIGlzIGFzIGZvbGxvd3M6CisgIAorCS0gaXMgdGhlIG1hY2hpbmUgeW91IGFyZSBxdWVyeWluZyB1cCBhbmQgcnVubmluZz8KKwkJKERvZXMgaXQgcmVzcG9uZCB0byAncGluZycgb3Igc2ltaWxhciByZXF1ZXN0cz8pCisJLSBpcyB0aGVyZSBhbiBTTk1QIGFnZW50IHJ1bm5pbmcgb24gaXQ/CisJCShSdW4gJ3BzIC1lZiB8IGdyZXAgc25tcCcgb3IgJ25ldHN0YXQgLWFuIHwgZ3JlcCAxNjEnKQorCS0gYXJlIHRoZSByZXF1ZXN0cyBhcnJpdmluZywgb3IgYmVpbmcgYmxvY2tlZCAoZS5nLiBieSBhIGZpcmV3YWxsKT8KKwkJKFJlc3RhcnQgdGhlIGFnZW50IHVzaW5nICdzbm1wZCAtZiAtTCAtZCcKKwkJIGFuZCBzZWUgaWYgaXQgc2hvd3MgdGhlIGluY29taW5nIHBhY2tldCBkdW1wcykKKwktIGlzIHRoZSBhZ2VudCBzaW1wbHkgdGFraW5nIGEgbG9uZyB0aW1lIHRvIHJlc3BvbmQ/CisJCShUaGUgJ3NubXBkIC1mIC1MIC1kJyBjb21tYW5kIHNob3VsZCBzaG93IGEgc2VyaWVzIG9mCisgCQkgaW5jb21pbmcgUERVcywgZm9sbG93ZWQgZXZlbnR1YWxseSBieSB0aGUgb3V0Z29pbmcgUERVcy4KKwkJIFRyeSB0aGUgcmVxdWVzdCBhZ2FpbiB3aXRoIGEgbG9uZyB0aW1lb3V0IHZhbHVlLAorCQkgZS5nLiAnc25tcGNtZCAtdCAxMjAgLi4uLicpCisJLSBkb2VzIHRoZSBhZ2VudCdzIGNvbnRyb2wgc2V0dGluZ3MgYWxsb3cgdGhpcyByZXF1ZXN0PworCQkoVGhlICdzbm1wZCAtZiAtTCAtZCcgY29tbWFuZCB3aWxsIHNob3cgYSBzZXJpZXMgb2YKKyAJCSBpbmNvbWluZyBQRFVzIHdpdGggKm5vKiBjb3JyZXNwb25kaW5nIG91dGdvaW5nIFBEVXMpCisKKyAgTm90ZSB0aGF0IGlmIHRoZSBhZ2VudCBpcyBub3QgY29uZmlndXJlZCB0byBhbGxvdyBhY2Nlc3MgZm9yIGEKKyAgcGFydGljdWxhciBjb21tdW5pdHksIHRoZW4gdGhlIFNOTVAgc3BlY2lmaWNhdGlvbiBkZWNsYXJlcyB0aGF0IG5vCisgIGVycm9yIHJlc3BvbnNlIHNob3VsZCBiZSBzZW50IGF0IGFsbC4gIFRoZSBOZXQtU05NUCB0b29scyB3aWxsIHJldHJ5CisgIHRoZSByZXF1ZXN0IGEgbnVtYmVyIG9mIHRpbWVzLCBiZWZvcmUgcmVwb3J0aW5nIGEgdGltZW91dCBlcnJvci4KKworICAgIElmIHRoZSBhZ2VudCBpcyBjb25maWd1cmVkIHRvIGFsbG93IHBhcnRpYWwgYWNjZXNzIGZvciBhIGdpdmVuCisgIGNvbW11bml0eSwgdGhlbiByZXF1ZXN0cyB0aGF0IGZhbGwgb3V0c2lkZSB0aGlzIGF1dGhvcmlzZWQgYWNjZXNzCisgICp3aWxsKiByZXN1bHQgaW4gYW4gZXJyb3IgcmVzcG9uc2UuCisgICAgKFNOTVAgYWdlbnRzIGNhbiBiZSB2ZXJ5IGZ1c3N5IG92ZXIgd2hvIHRoZXkgdGFsayB0byEpCisKKyAgICBTZWUgdGhlIGVudHJpZXMgb24gYWNjZXNzIGNvbnRyb2wgaW4gdGhlIEFHRU5UIHNlY3Rpb24gZm9yIGhvdyB0bworICBjb25maWd1cmUgdGhlIE5ldC1TTk1QIGFnZW50IHRvIGFsbG93IHN1aXRhYmxlIGFjY2Vzcy4gIEZvciBvdGhlcgorICB2ZW5kb3JzJyBhZ2VudHMsIHlvdSB3aWxsIG5lZWQgdG8gY29uc3VsdCB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbi4KKworCisKKzxhIG5hbWU9IklfY2FuX3NlZV90aGVfc3lzdGVtX2dyb3VwX19idXRfbm90aGluZ19lbHNlX19fV2h5XyI+CitJIGNhbiBzZWUgdGhlIHN5c3RlbSBncm91cCwgYnV0IG5vdGhpbmcgZWxzZS4gIFdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBpcyBwcm9iYWJseSB0aGUgc2FtZSBhcyB0aGUgcHJldmlvdXMgcXVlc3Rpb24gLSBhIHByb2JsZW0gd2l0aAorICB0aGUgYWNjZXNzIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFnZW50LiAgTWFueSBwcmUtY29uZmlndXJlZCBzeXN0ZW1zCisgIChzdWNoIGFzIG1vc3QgTGludXggZGlzdHJpYnV0aW9ucykgd2lsbCBvbmx5IGFsbG93IGFjY2VzcyB0byB0aGUgc3lzdGVtCisgIGdyb3VwIGJ5IGRlZmF1bHQsIGFuZCBuZWVkIHRvIGJlIGNvbmZpZ3VyZWQgdG8gZW5hYmxlIG1vcmUgZ2VuZXJhbCBhY2Nlc3MuCisKKyAgICBUaGUgZWFzaWVzdCB3YXkgdG8gdGVzdCB0aGlzIGlzIHRvIHRyeSBhIEdFVE5FWFQgcmVxdWVzdCwgdGhhdCBvdWdodAorICB0byByZXR1cm4gdGhlIGVudHJ5IG9mIGludGVyZXN0LgorICBlLmcuCisJc25tcGdldG5leHQgLXYxIC1jIHB1YmxpYyBsb2NhbGhvc3QgdWNkYXZpcy52ZXJzaW9uLnZlcnNpb25UYWcKKyAgaW5zdGVhZCBvZgorCXNubXBnZXQgICAgIC12MSAtYyBwdWJsaWMgbG9jYWxob3N0IHVjZGF2aXMudmVyc2lvbi52ZXJzaW9uVGFnLjAKKworICBJZiB0aGUgYWdlbnQgcmVzcG9uZHMgd2l0aCAiZW5kIG9mIE1JQiIgb3IgYSBkaWZmZXJlbnQgb2JqZWN0LCB0aGVuCisgIGVpdGhlciB0aGUgYWdlbnQgZG9lc24ndCBpbXBsZW1lbnQgdGhhdCBwYXJ0aWN1bGFyIG9iamVjdCBhdCBhbGwsIG9yCisgIHRoZSBhY2Nlc3MgY29udHJvbCB3b24ndCBhbGxvdyB5b3UgYWNjZXNzIHRvIGl0LgorCisgIFNlZSB0aGUgZW50cmllcyBvbiBhY2Nlc3MgY29udHJvbCBpbiB0aGUgQUdFTlQgc2VjdGlvbiBmb3IgaG93IHRvCisgIGNvbmZpZ3VyZSB0aGUgTmV0LVNOTVAgYWdlbnQsIG9yIGNvbnN1bHQgdGhlIGFnZW50J3Mgb3duIGRvY3VtZW50YXRpb24uCisKKworCis8YSBuYW1lPSJUaGVfYWdlbnRfd29ya2VkX2Zvcl9hX3doaWxlX190aGVuX3N0b3BwZWRfcmVzcG9uZGluZ19fX1doeV8iPgorVGhlIGFnZW50IHdvcmtlZCBmb3IgYSB3aGlsZSwgdGhlbiBzdG9wcGVkIHJlc3BvbmRpbmcuICBXaHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEFzc3VtaW5nIHRoYXQgdGhlIGFnZW50IGhhc24ndCBjcmFzaGVkIGNvbXBsZXRlbHksIHRoZSBtb3N0IGxpa2VseQorICBleHBsYW5hdGlvbiBpcyB0aGF0IGl0J3Mgc2ltcGx5IG92ZXJsb2FkZWQsIGFuZCBpcyB0YWtpbmcgbG9uZ2VyIHRvCisgIHJlc3BvbmQgdGhhbiB0aGUgcXVlcnlpbmcgdG9vbCBpcyB3YWl0aW5nLiAgU2luY2UgdGhlIGFnZW50IGhhbmRsZXMKKyAgZWFjaCByZXF1ZXN0IGluIHR1cm4sIHdpdGhvdXQgcmVnYXJkIHRvIGVhcmxpZXIgYWN0aXZpdHksIGFuZCBtb3N0CisgIHRvb2xzIHdpbGwgcmV0cnkgYSByZXF1ZXN0IHdoZW4gaXQgdGltZXMgb3V0LCB0aGUgbGlzdCBvZiBvdXRzdGFuZGluZworICByZXF1ZXN0cyBjYW4gZ3JvdyBsb25nZXIgYW5kIGxvbmdlci4KKworICAgIFRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgdGhlIGNhdXNlIG9yIG5vdCwgdHJ5IGxlYXZpbmcgdGhlCisgIGFnZW50IHVuZGlzdHVyYmVkIGZvciBhIHdoaWxlLCBhbmQgdGhlbiBwcm9iZSBpdCB1c2luZyBhIGxvbmdlcgorICB0aW1lb3V0IChlLmcuICctdCAxMjAnKS4gIFRoaXMgc2hvdWxkIGdpdmUgdGhlIGFnZW50IHRpbWUgdG8gaGFuZGxlCisgIGVhY2ggcmVxdWVzdCBmaXJzdCB0aW1lIHJvdW5kLCBhbmQgYXZvaWRzIG92ZXJsb2FkaW5nIGl0IHdpdGgKKyAgZHVwbGljYXRlIHJlcXVlc3RzLgorCisgIFRoaXMgaXMgbm90IGEgZnVsbCBzb2x1dGlvbiwgb2YgY291cnNlLCBidXQgYXQgbGVhc3QgaXQgc2hvdWxkCisgIGFsbG93IHlvdSB0byBpc29sYXRlIHRoZSBvZmZlbmRpbmcgcG9ydGlvbiBvZiB0aGUgdHJlZS4gVGhlCisgIGRldmVsb3BlcnMgbWF5IHRoZW4gYmUgYWJsZSB0byBvZmZlciBhIG1vcmUgbG9uZy10ZXJtIHNvbHV0aW9uLgorCisKKworPGEgbmFtZT0iUmVxdWVzdGluZ19hbl9vYmplY3RfZmFpbHNfd2l0aF9fVW5rbm93bl9PYmplY3RfSWRlbnRpZmllcl9fX1doeV8iPgorUmVxdWVzdGluZyBhbiBvYmplY3QgZmFpbHMgd2l0aCAiVW5rbm93biBPYmplY3QgSWRlbnRpZmllciIgIFdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBJZiBhIGdlbmVyYWwgc25tcHdhbGsgc2hvd3MgdGhlIGVudHJ5LCBidXQgYXNraW5nIGZvciBpdCBtb3JlCisgIHNwZWNpZmljYWxseSBnaXZlcyBhICJzdWItaWRlbnRpZmllciBub3QgZm91bmQ6IiBvciAiVW5rbm93biBPYmplY3QKKyAgSWRlbnRpZmllciIgZXJyb3IsIHRoZW4gdGhhdCdzIGEgcHJvYmxlbSB3aXRoIHRoZSB0b29sLCByYXRoZXIgdGhhbgorICB0aGUgYWdlbnQuCisKKyAgICBGaXJzdGx5LCBtYWtlIHN1cmUgdGhhdCB5b3UncmUgYXNraW5nIGZvciB0aGUgb2JqZWN0IGJ5IHRoZSByaWdodCBuYW1lLgorICBPYmplY3QgZGVzY3JpcHRvcnMgYXJlIGNhc2Utc2Vuc2l0aXZlLCBzbyBhc2tpbmcgZm9yICdzeXN1cHRpbWUnIHdpbGwKKyAgbm90IGJlIHJlY29nbmlzZWQsIGJ1dCAnc3lzVXBUaW1lJyB3aWxsLgorCisgICAgU2Vjb25kbHksIHRoZSBvYmplY3QgbWF5IGJlIGRlZmluZWQgaW4gYSBNSUIgdGhhdCBoYXNuJ3QgYmVlbiBsb2FkZWQuCisgIFRyeSBsb2FkaW5nIGluIGFsbCB0aGUgTUlCIGZpbGVzOgorCisJc25tcGdldCAtbSBBTEwgLXYxIC1jIHB1YmxpYyBsb2NhbGhvc3Qgc3lzVXBUaW1lLjAKKworICAodGhvdWdoIGlmIHNubXB3YWxrIHRyYW5zbGF0ZXMgaXQgT0ssIHRoYXQncyBsZXNzIGxpa2VseSB0byBiZSB0aGUgY2F1c2UpLgorCisgICAgVGhpcmRseSwgZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgVUNEIHNvZnR3YXJlIGV4cGVjdGVkICJmdWxsIiBwYXRocworICBmb3Igb2JqZWN0IG5hbWVzLCBlaXRoZXIgYmFzZWQgYXQgdGhlIHJvb3Qgb2YgdGhlIHdob2xlIE1JQiB0cmVlCisgICgiLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliLTIuc3lzdGVtLnN5c1VwVGltZSIpIG9yIHRoZSAnbWliLTInCisgIHN1YnRyZWUgKCJzeXN0ZW0uc3lzVXBUaW1lIikuICBUcnk6CisgIAorCXNubXBnZXQgLXYxIC1jIHB1YmxpYyBteWhvc3Qgc3lzdGVtLnN5c1VwVGltZS4wCisKKyAgVGhlc2UgZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgdG9vbHMgbWF5IHRha2UgYSBjb21tYW5kLWxpbmUgb3B0aW9uICctUicKKyAgb3IgJy1JUicgKGRlcGVuZGluZyBvbiB2aW50YWdlKSB0byBpbnZva2UgdGhpcyAicmFuZG9tLWFjY2VzcyIgbW9kZS4KKyAgTm90ZSB0aGF0IHNubXB0cmFuc2xhdGUgc3RpbGwgcmVxdWlyZXMgInJhbmRvbS1hY2Nlc3MiIHRvIGJlIHNwZWNpZmllZAorICBleHBsaWNpdGx5IC0gYWxsIG90aGVyIGNvbW1hbmQgdG9vbHMgbm93IHVzZSB0aGlzIG1vZGUgYnkgZGVmYXVsdHMuCisKKyAgQWxsIHZlcnNpb25zIG9mIHRoZSBVQ0QgYW5kIE5ldC1TTk1QIHRvb2xzIGFjY2VwdCB0aGUgc3ludGF4CisKKwlzbm1wZ2V0IC12MSAtYyBwdWJsaWMgbXlob3N0IFJGQzEyMTMtTUlCOnN5c1VwVGltZS4wCisKKyAgdG8gZGVub3RlIGEgcGFydGljdWxhciBvYmplY3QgaW4gYSBzcGVjaWZpYyBNSUIgbW9kdWxlLiAgTm90ZSB0aGF0IHRoaXMKKyAgdXNlcyB0aGUgbmFtZSBvZiB0aGUgKm1vZHVsZSosIG5vdCB0aGUgbmFtZSBvZiB0aGUgZmlsZS4gIFNlZSB0aGUgc2Vjb25kCisgIHF1ZXN0aW9uIGluIHRoaXMgc2VjdGlvbiBmb3IgdGhlIGRpc3RpbmN0aW9uLgorCisKKworPGEgbmFtZT0iV2h5X2RvX0lfZ2V0X19ub1N1Y2hOYW1lX193aGVuX2Fza2luZ19mb3JfX3N5c1VwVGltZV9fX29yX3NpbWlsYXJfXyI+CitXaHkgZG8gSSBnZXQgIm5vU3VjaE5hbWUiIHdoZW4gYXNraW5nIGZvciAic3lzVXBUaW1lIiAob3Igc2ltaWxhcik/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgcG9zc2libGUgY2F1c2VzIG9mIHRoaXMgKHNjYXR0ZXJlZCB0aHJvdWdob3V0CisgIHRoaXMgRkFRLCBzbyBrZWVwIHJlYWRpbmchKS4gICBCdXQgb25lIG9mIHRoZSBtb3N0IGxpa2VseSBzbmFyZXMgZm9yCisgIHRoZSB1bndhcnkgaXMgZm9yZ2V0dGluZyB0aGUgaW5zdGFuY2Ugc3ViaWRlbnRpZmllciBmb3IgJ25vbi10YWJsZScKKyAgb2JqZWN0cy4gIElmIHlvdSB3YWxrIHRoZSAnc3lzdGVtJyB0cmVlLCB5b3UnbGwgbm90aWNlIHRoYXQgYWxsIHRoZQorICByZXN1bHRzIChhcGFydCBmcm9tIHRoZSBzeXNPUlRhYmxlKSwgaGF2ZSBhICcuMCcgYXQgdGhlIGVuZCBvZiB0aGUgT0lELgorICBUaGlzIGlzIHRoZSAiaW5zdGFuY2Ugc3ViLWlkZW50aWZpZXIiIC0gd2hpY2ggKm11c3QqIGJlIGluY2x1ZGVkIGZvcgorICBhIEdFVCByZXF1ZXN0LgorICAgICBDb21wYXJlIHRoZSBmb2xsb3dpbmc6CisKKwkkIHNubXBnZXQgLXYxIC1jIHB1YmxpYyBsb2NhbGhvc3Qgc3lzVXBUaW1lCisJRXJyb3IgaW4gcGFja2V0CisJUmVhc29uOiAobm9TdWNoTmFtZSkgVGhlcmUgaXMgbm8gc3VjaCB2YXJpYWJsZSBuYW1lIGluIHRoaXMgTUlCLgorCVRoaXMgbmFtZSBkb2Vzbid0IGV4aXN0OiBzeXN0ZW0uc3lzVXBUaW1lCisJJCBzbm1wZ2V0IC12MSAtYyBwdWJsaWMgbG9jYWxob3N0IHN5c1VwVGltZS4wCisJc3lzdGVtLnN5c1VwVGltZS4wID0gVGltZXRpY2tzOiAoNjkxODkyNzEpIDggZGF5cywgMDoxMTozMi43MQorCisgIFRoaXMgaXMgYSBsaXR0bGUgbGVzcyBvYnNjdXJlIHdoZW4gdXNpbmcgU05NUHYyYyBvciB2MyByZXF1ZXN0czoKKworCSQgc25tcGdldCAtdiAyYyAtYyBwdWJsaWMgbG9jYWxob3N0IHN5c1VwVGltZQorCXN5c3RlbS5zeXNVcFRpbWUgPSBObyBTdWNoIEluc3RhbmNlIGN1cnJlbnRseSBleGlzdHMKKworCisKKzxhIG5hbWU9IldoeV9kb19JX3NvbWV0aW1lc19nZXRfX0VuZF9vZl9NSUJfX3doZW5fd2Fsa2luZ19hX3RyZWVfX2FuZF9zb21ldGltZXNfbm90XyI+CitXaHkgZG8gSSBzb21ldGltZXMgZ2V0ICJFbmQgb2YgTUlCIiB3aGVuIHdhbGtpbmcgYSB0cmVlLCBhbmQgc29tZXRpbWVzIG5vdD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBkZXBlbmRzIG9uIHdoaWNoIE1JQiBtb2R1bGVzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGFnZW50IHlvdSBhcmUKKyAgcXVlcnlpbmcgYW5kIHdoYXQgeW91J3JlIGFza2luZyBmb3IuCisKKyAgUmVjYWxsIHRoYXQgYSB0cmVlIGlzIHdhbGtlZCBieSByZXBlYXRlZGx5IGFza2luZyBmb3IgInRoZSBuZXh0IGVudHJ5IiB1bnRpbAorICBhbGwgdGhlIHZhbHVlcyB1bmRlciB0aGF0IHRyZWUgaGF2ZSBiZWVuIHJldHJpZXZlZC4gIEhvd2V2ZXIsIHRoZSBhZ2VudCBoYXMKKyAgbm8gaWRlYSB0aGF0IHRoaXMgaXMgd2hhdCdzIGhhcHBlbmluZyAtIGFsbCBpdCBzZWVzIGlzIGEgcmVxdWVzdCBmb3IgInRoZQorICBuZXh0IGVudHJ5IGFmdGVyIFgiLgorCisgIElmIHRoZSBvYmplY3QgWCBoYXBwZW5zIHRvIGJlIHRoZSBsYXN0IGVudHJ5IGluIGEgc3ViLXRyZWUsIHRoZSBhZ2VudCB3aWxsCisgIHByb3ZpZGUgdGhlIG5leHQgb2JqZWN0IHN1cHBvcnRlZCAoYXMgcmVxdWVzdGVkKSBldmVuIHRob3VnaCB0aGlzIHdpbGwgYmUKKyAgaW4gYSBkaWZmZXJlbnQgc3VidHJlZS4gIEl0J3MgdXAgdG8gdGhlIHF1ZXJ5aW5nIHRvb2wgdG8gcmVjb2duaXNlIHRoYXQKKyAgdGhpcyBsYXN0IHJlc3VsdCBsaWVzIG91dHNpZGUgdGhlIGFyZWEgb2YgaW50ZXJlc3QsIGFuZCBzaW1wbHkgZGlzY2FyZCBpdC4KKworICBJZiB0aGUgb2JqZWN0IFggaGFwcGVucyB0byBiZSB0aGUgbGFzdCBlbnRyeSBzdXBwb3J0ZWQgYnkgdGhlIGFnZW50LCBpdAorICBkb2Vzbid0IGhhdmUgYW5vdGhlciBvYmplY3QgdG8gcHJvdmlkZSwgc28gcmV0dXJucyBhbiAiZW5kIG9mIE1JQiIKKyAgaW5kaWNhdGlvbi4gIFRoZSBOZXQtU05NUCB0b29scyByZXBvcnQgdGhpcyB3aXRoIHRoZSBtZXNzYWdlIGFib3ZlLgorCisgIEJ1dCBpbiBlaXRoZXIgY2FzZSwgdGhlIGFjdHVhbCBpbmZvcm1hdGlvbiBwcm92aWRlZCB3aWxsIGJlIHRoZSBzYW1lLgorCisKKworPGEgbmFtZT0iSV9jYW5ub3Rfc2V0X2FueV92YXJpYWJsZXNfaW5fdGhlX01JQl8iPgorSSBjYW5ub3Qgc2V0IGFueSB2YXJpYWJsZXMgaW4gdGhlIE1JQi4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGVyZSBhcmUgdGhyZWUgcG9zc2libGUgcmVhc29ucyBmb3IgdGhpczoKKworICBUaGUgbWFqb3JpdHkgb2YgTUlCIG9iamVjdHMgYXJlIGRlZmluZWQgYXMgInJlYWQtb25seSIgYW5kIGluaGVyZW50bHkKKyAgY2Fubm90IGJlIGNoYW5nZWQgdmlhIFNFVCByZXF1ZXN0cy4KKworICBPZiB0aG9zZSB0aGF0IGNhbiBpbiBwcmluY2lwbGUgYmUgY2hhbmdlZCwgbm90IGFsbCBoYXZlIGJlZW4gaW1wbGVtZW50ZWQKKyAgYXMgc3VjaCBpbiB0aGlzIGFnZW50LgorCisgIEV2ZW4gaWYgU0VUIHN1cHBvcnQgaGFzIGJlZW4gaW1wbGVtZW50ZWQsIHRoZSBhZ2VudCBtYXkgbm90IGJlIGNvbmZpZ3VyZWQKKyAgdG8gYWxsb3cgd3JpdGUgYWNjZXNzIHRvIHRoaXMgb2JqZWN0LgorCisgIFRoZSBleGFtcGxlIGNvbmZpZ3VyYXRpb24gZmlsZSBzaGlwcGVkIHdpdGggdGhlIGJhc2ljIGRpc3RyaWJ1dGlvbiBvbmx5CisgIGFsbG93cyB3cml0ZSBhY2Nlc3MgZm9yIHRoZSBsb2NhbCBob3N0IGl0c2VsZiAoYW5kIGEgc3VpdGFibGUgY29tbXVuaXR5CisgIG5hbWUgbXVzdCBiZSBjb25maWd1cmVkIGZpcnN0KS4KKyAgICBSZWFkeS1pbnN0YWxsZWQgZGlzdHJpYnV0aW9ucyAoc3VjaCBhcyB0aG9zZSBzaGlwcGVkIHdpdGggTGludXgpIHRlbmQKKyAgdG8gYmUgY29uZmlndXJlZCB3aXRoIHJlYWQtb25seSBhY2Nlc3MgdG8gcGFydCBvZiB0aGUgbWliIHRyZWUgKHR5cGljYWxseQorICBqdXN0IHRoZSBzeXN0ZW0gZ3JvdXApIGFuZCBubyB3cml0ZSBhY2Nlc3MgYXQgYWxsLgorCisgIFRvIGNoYW5nZSB0aGlzLCB5b3Ugd2lsbCBuZWVkIHRvIHNldCB1cCB0aGUgYWdlbnQncyBhY2Nlc3MgY29udHJvbAorICBjb25maWd1cmF0aW9uLiAgU2VlIHRoZSBBR0VOVCBzZWN0aW9uIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBOb3RlIHRoYXQgbmVpdGhlciB0aGUgY29tbXVuaXR5IHN0cmluZyAicHVibGljIiBub3IgInByaXZhdGUiIGNhbiBiZQorICB1c2VkIHRvIHNldCB2YXJpYWJsZXMgaW4gYSB0eXBpY2FsIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KKworCisKKzxhIG5hbWU9IlZhcmlhYmxlc19zZWVtX3RvX2Rpc2FwcGVhcl93aGVuX0lfdHJ5X3RvX3NldF90aGVtX19fV2h5XyI+CitWYXJpYWJsZXMgc2VlbSB0byBkaXNhcHBlYXIgd2hlbiBJIHRyeSB0byBzZXQgdGhlbS4gIFdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBpcyBhY3R1YWxseSB0aGUgc2FtZSBhcyB0aGUgcHJldmlvdXMgcXVlc3Rpb24gLSBpdCBqdXN0IGlzbid0CisgIHBhcnRpY3VsYXJseSBvYnZpb3VzLCBwYXJ0aWN1bGFybHkgd2hlbiB1c2luZyBTTk1QdjEuICBBIHR5cGljYWwKKyAgZXhhbXBsZSBvZiB0aGlzIGVmZmVjdCB3b3VsZCBiZQorCisJJCBzbm1wZ2V0IC12MSAtYyBwdWJsaWMgbG9jYWxob3N0IHN5c3RlbS5zeXNMb2NhdGlvbi4wCisJc3lzdGVtLnN5c0xvY2F0aW9uLjAgPSBzb21ld2hlcmUgbmVhcmJ5CisKKwkkIHNubXBzZXQgLXYxIC1jIHB1YmxpYyBsb2NhbGhvc3Qgc3lzdGVtLnN5c0xvY2F0aW9uLjAgcyAicmlnaHQgaGVyZSIKKwlFcnJvciBpbiBwYWNrZXQuCisJUmVhc29uOiAobm9TdWNoTmFtZSkgVGhlcmUgaXMgbm8gc3VjaCB2YXJpYWJsZSBuYW1lIGluIHRoaXMgTUlCLgorCVRoaXMgbmFtZSBkb2Vzbid0IGV4aXN0OiBzeXN0ZW0uc3lzTG9jYXRpb24uMAorCisgIFRyeWluZyB0aGUgc2FtZSByZXF1ZXN0IHVzaW5nIFNOTVB2MiBvciBhYm92ZSBpcyBzb21ld2hhdCBtb3JlIGluZm9ybWF0aXZlOgorCisJJCBzbm1wc2V0IC12IDJjIC1jIHB1YmxpYyBsb2NhbGhvc3Qgc3lzdGVtLnN5c0xvY2F0aW9uLjAgcyAicmlnaHQgaGVyZSIKKyAgICAgICAgRXJyb3IgaW4gcGFja2V0LgorICAgICAgICBSZWFzb246IG5vdFdyaXRhYmxlCisKKyAgVGhlIFNOTVB2MSBlcnJvciAnbm9TdWNoTmFtZScgYWN0dWFsbHkgbWVhbnM6CisKKwkiWW91IGNhbid0IGRvIHRoYXQgdG8gdGhpcyB2YXJpYWJsZSIKKworICBUaGlzIG1pZ2h0IGJlIGJlY2F1c2UgdGhlIHZhcmlhYmxlIGRvZXNuJ3QgZXhpc3QsIGl0IGRvZXMgZXhpc3QgYnV0CisgIHlvdSBkb24ndCBoYXZlIGFjY2VzcyB0byBpdCAoYnV0IHNvbWVvbmUgZWxzZSBtYXkgZG8pLCBvciBpdCBleGlzdHMKKyAgYnV0IHlvdSBjYW4ndCBwZXJmb3JtIHRoYXQgcGFydGljdWxhciBvcGVyYXRpb24gKGkuZS4gY2hhbmdpbmcgaXQpLgorICAgIFNpbWlsYXJseSwgdGhlIFNOTVB2MiBlcnJvciAnbm90V3JpdGFibGUnIG1lYW5zICJub3Qgd3JpdGFibGUgaW4KKyAgdGhpcyBwYXJ0aWN1bGFyIGNhc2UiIHJhdGhlciB0aGFuICJub3Qgd3JpdGFibGUgdW5kZXIgYW55IGNpcmN1bXN0YW5jZXMiLgorCisgIElmIHlvdSBhcmUgc3VyZSB0aGF0IHRoZSBvYmplY3QgaXMgd3JpdGFibGUgKGFuZCBoYXMgYmVlbiBpbXBsZW1lbnRlZAorICBhcyBzdWNoKSwgdGhlbiB5b3UgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IHRoZSBhZ2VudCBhY2Nlc3MgY29udHJvbC4KKyAgU2VlIHRoZSBBR0VOVCBzZWN0aW9uIGZvciBtb3JlIGRldGFpbHMuCisKKworCitJIHN0aWxsIGNhbid0IGNoYW5nZSBzeXNMb2NhdGlvbiwgdGhvdWdoIHRoZSBhY2Nlc3Mgc2V0dGluZ3MgYWxsb3cgaXQuICBXaHkgbm90PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgT25lIG90aGVyIHBvc3NpYmlsaXR5IGZvciB0aGUgJ3N5c0xvY2F0aW9uJyBhbmQgJ3N5c0NvbnRhY3QnIG9iamVjdHMsCisgIGlzIHRoYXQgeW91J3ZlIGdvdCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGluIHRoZSAnc25tcGQuY29uZicgZmlsZSB3aGljaAorICBhbHJlYWR5IHNldHMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgdGhlcmUuCisKKyAgICBFYXJsaWVyIHZlcnNpb25zIG9mIHRoZSBhZ2VudCB3b3VsZCBhbGxvdyB5b3UgdG8gd3JpdGUgdG8gdGhlc2Ugb2JqZWN0cywKKyAgYnV0IHRoZSBuZXcgdmFsdWUgd291bGQgYmUgZm9yZ290dGVuIHRoZSBuZXh0IHRpbWUgdGhlIGFnZW50IHdhcyByZS1zdGFydGVkLgorICBNb3JlIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgYWdlbnQgcmVqZWN0IHN1Y2ggd3JpdGUgcmVxdWVzdHMgaWYgdGhlcmUncyBhCisgIHZhbHVlIHNldCB2aWEgdGhlIGNvbmZpZyBmaWxlLiAgIElmIHRoZXJlIGlzbid0IHN1Y2ggYSBjb25maWcgc2V0dGluZywgdGhlbgorICB0aGUgd3JpdGUgcmVxdWVzdCB3aWxsIHN1Y2NlZWQgKGFzc3VtaW5nIHRoZSBhY2Nlc3Mgc2V0dGluZ3MgYWxsb3cgaXQpLCBhbmQKKyAgdGhlIG5ldyB2YWx1ZSB3aWxsIGJlIHJldGFpbmVkIHRoZSBuZXh0IHRpbWUgdGhlIGFnZW50IHJlc3RhcnRzLgorCisKKworPGEgbmFtZT0iSV9nZXRfYW5fZXJyb3Jfd2hlbl90cnlpbmdfdG9fc2V0X2FfbmVnYXRpdmVfdmFsdWVfX193aHlfIj4KK0kgZ2V0IGFuIGVycm9yIHdoZW4gdHJ5aW5nIHRvIHNldCBhIG5lZ2F0aXZlIHZhbHVlIC0gd2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoaXMgaXMgYSBkaWZmZXJlbnQgcHJvYmxlbS4gIFdoYXQncyBoYXBwZW5pbmcgaGVyZSBpcyB0aGF0IHRoZQorICByb3V0aW5lIHRoYXQgcGFyc2VzIHRoZSBhcmd1bWVudHMgdG8gdGhlICdzbm1wc2V0JyBjb21tYW5kIGlzIHNlZWluZworICB0aGUgJy0nIG9mIHRoZSBuZXcgdmFsdWUsIGFuZCB0cmVhdGluZyBpdCBhcyBhIGNvbW1hbmQtbGluZSBvcHRpb24uCisgIFRoaXMgbm9ybWFsbHkgZ2VuZXJhdGVzIGFuIGVycm9yIChzaW5jZSBkaWdpdHMgcHJvYmFibHkgYXJlbid0IHZhbGlkCisgIGNvbW1hbmQgbGluZSBvcHRpb24pLgorCisgICAgVGhlIGVhc2llc3Qgd2F5IHRvIHNvbHZlIHRoaXMgaXMgaW5jbHVkZSB0aGUgImVuZC1vZi1vcHRpb24iCisgIGluZGljYXRvciAnLS0nIGluIHRoZSBjb21tYW5kIGxpbmUsIHNvbWV3aGVyZSBiZWZvcmUgdGhlIG5ldyB2YWx1ZQorICAoYnV0IGFmdGVyIGFsbCBvZiB0aGUgb3B0aW9ucywgb2J2aW91c2x5KS4gIEZvciBleGFtcGxlOgorCisJc25tcHNldCAtdiAyYyAtYyBwdWJsaWMgbG9jYWxob3N0IC0tIHZlcnNpb25SZXN0YXJ0QWdlbnQuMCBpIC0xCisKKyAgKFRoaXMgd2lsbCBhbHNvIGZhaWwsIHNpbmNlIC0xIGlzbid0IGFuIGFjY2VwdGFibGUgdmFsdWUgZm9yIHRoaXMKKyAgb2JqZWN0LCBidXQgaXQgd2lsbCBiZSByZWplY3RlZCBieSB0aGUgYWdlbnQsIHJhdGhlciB0aGFuIGNvbmZ1c2luZworICB0aGUgc25tcHNldCBjb21tYW5kISkKKworCisKKzxhIG5hbWU9IklfZ2V0X2FuX2Vycm9yX3doZW5fdHJ5aW5nX3RvX2dldF9hX3N0cmluZ19pbmRleGVkX3RhYmxlX3ZhbHVlX19fd2h5XyI+CitJIGdldCBhbiBlcnJvciB3aGVuIHRyeWluZyB0byBnZXQgYSBzdHJpbmctaW5kZXhlZCB0YWJsZSB2YWx1ZSAtIHdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIGlzIHByb2JhYmx5IGR1ZSB0byB0aGUgc2hlbGwgc3dhbGxvd2luZyB0aGUgcXVvdGVzLCBiZWZvcmUKKyAgdGhleSBldmVyIGdldCB0byB0aGUgU05NUCBjb21tYW5kJ3MgT0lEIHBhcnNlci4gIFRyeSBlc2NhcGluZyB0aGVtOgorCisJc25tcGdldCAuLi4uLiAgIHZhY21TZWN1cml0eU1vZGVsLjAuXCJ3ZXNcIgorICBvcglzbm1wZ2V0IC4uLi4uICAndmFjbVNlY3VyaXR5TW9kZWwuMC4id2VzIicKKworCisgIAorPGEgbmFtZT0iSG93X2RvX0lfc2VuZF90cmFwc19hbmRfbm90aWZpY2F0aW9uc18iPgorSG93IGRvIEkgc2VuZCB0cmFwcyBhbmQgbm90aWZpY2F0aW9ucz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVHJhcHMgYW5kIG5vdGlmaWNhdGlvbnMgY2FuIGJlIHNlbnQgdXNpbmcgdGhlIGNvbW1hbmQgJ3NubXB0cmFwJy4KKyAgVGhlIGZvbGxvd2luZyBleGFtcGxlcyBnZW5lcmF0ZSB0aGUgZ2VuZXJpYyB0cmFwICdjb2xkU3RhcnQnIGFuZCBhCisgIChkdW1teSkgZW50ZXJwcmlzZSBzcGVjaWZpYyB0cmFwICc5OScgcmVzcGVjdGl2ZWx5OgorCisJc25tcHRyYXAgLXYgMSAtYyBwdWJsaWMgbG9jYWxob3N0ICIiICIiIDAgMCAgIiIKKwlzbm1wdHJhcCAtdiAxIC1jIHB1YmxpYyBsb2NhbGhvc3QgIiIgIiIgNiA5OSAiIgorICAKKyAgVGhlIGVtcHR5IHBhcmFtZXRlcnMgIiIgd2lsbCB1c2Ugc3VpdGFibGUgZGVmYXVsdHMgZm9yIHRoZSByZWxldmFudCAKKyAgdmFsdWVzIChlbnRlcnByaXNlIE9JRCwgYWRkcmVzcyBvZiBzZW5kZXIgYW5kIGN1cnJlbnQgc3lzdXB0aW1lKS4KKworICAgIEFuIFNOTVB2MiBvciBTTk1QdjMgbm90aWZpY2F0aW9uIChlaXRoZXIgdHJhcCBvciBpbmZvcm0pIHRha2VzCisgIHRoZSBPSUQgb2YgdGhlIHRyYXAgdG8gc2VuZDoKKworCXNubXB0cmFwIC12IDJjIC1jIHB1YmxpYyBsb2NhbGhvc3QgIiIgVUNELVNOTVAtTUlCOjp1Y2RTdGFydAorCXNubXB0cmFwIC12IDJjIC1jIHB1YmxpYyBsb2NhbGhvc3QgIiIgLjEuMy42LjEuNC4xLjIwMjEuMjUxLjEKKworICAoVGhlc2UgdHdvIGFyZSBlcXVpdmFsZW50IHdheXMgb2Ygc3BlY2lmeWluZyB0aGUgc2FtZSB0cmFwKS4KKworICBBbnkgb2YgdGhlc2UgY29tbWFuZHMgY2FuIGJlIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIHZhcmJpbmRzLAorICB1c2luZyB0aGUgc2FtZSAoT0lEL3R5cGUvdmFsdWUpIHN5bnRheCBhcyBmb3IgJ3NubXBzZXQnOgorCisJc25tcHRyYXAgLXYgMmMgLWMgcHVibGljIGxvY2FsaG9zdCAiIiB1Y2RTdGFydCBzeXNDb250YWN0LjAgcyAiRGF2ZSIKKworICBHZW5lcmF0aW5nIHRyYXBzIGZyb20gd2l0aGluIHRoZSBhZ2VudCBpcyBjb3ZlcmVkIGluIHRoZSBBR0VOVCBhbmQKKyAgQ09ESU5HIHNlY3Rpb25zLgorCisgIFlvdSBzaG91bGQgYWxzbyByZWFkIHRoZSBzbm1wdHJhcCB0dXRvcmlhbCBhdAorCWh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvY29tbWFuZHMvc25tcHRyYXAuaHRtbAorICB3aGljaCB3aWxsIGhlbHAgeW91IHVuZGVyc3RhbmQgZXZlcnl0aGluZyB5b3UgbmVlZCB0byBrbm93IGFib3V0IHRyYXBzLgorCisKKworPGEgbmFtZT0iSG93X2RvX0lfaGFuZGxlX3RyYXBzX2FuZF9ub3RpZmljYXRpb25zXyI+CitIb3cgZG8gSSBoYW5kbGUgdHJhcHMgYW5kIG5vdGlmaWNhdGlvbnM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIEhhbmRsaW5nIHJlY2VpdmVkIHRyYXBzIGlzIGRvbmUgdXNpbmcgdGhlIHRvb2wgJ3NubXB0cmFwZCcuCisgIFRoaXMgY2FuIGxvZyB0aGVzZSB0cmFwcyB2aWEgdGhlIHN5c2xvZyBtZWNoYW5pc206CisKKwlzbm1wdHJhcGQgLXMgLWw3CShsb2cgdG8gJ0xPQ0FMNycpCisKKyAgcHJpbnRlZCB0byBzdGFuZGFyZCBvdXRwdXQKKworCXNubXB0cmFwZCAtZiAtUAorCisgIG9yIHBhc3MgdGhlbSB0byBhbiBleHRlcm5hbCBjb21tYW5kLiAgVGhpcyBsYXN0IGFwcHJvYWNoIHVzZXMKKyAgYSAndHJhcGhhbmRsZScgZGlyZWN0aXZlIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgJ3NubXB0cmFwZC5jb25mJy4KKyAgQSB0eXBpY2FsIGZpbGUgbWlnaHQgbG9vayBzb21ldGhpbmcgbGlrZToKKworCXRyYXBoYW5kbGUgLjEuMy42LjEuNi4zLjEuNS4xICAgICAgIHBhZ2VfbWUgdXAKKwl0cmFwaGFuZGxlIC4xLjMuNi4xLjQuMS4yMDIxLjI1MS4xICBwYWdlX21lIHVwCisJdHJhcGhhbmRsZSAuMS4zLjYuMS40LjEuMjAyMS4yNTEuMiAgcGFnZV9tZSBkb3duCisJdHJhcGhhbmRsZSBkZWZhdWx0ICAgICAgICAgICAgICAgICAgbG9nX2l0CisKKyAgd2hlcmUgJ3BhZ2VfbWUnIGFuZCAnbG9nX2l0JyBhcmUgdGhlIGNvbW1hbmQgdG8gYmUgcnVuLiAgKFlvdSBwcm9iYWJseQorICBuZWVkIHRvIHNwZWNpZnkgZnVsbCBwYXRobmFtZXMsIHRvIGVuc3VyZSB0aGF0IHRoZSBjb21tYW5kcyB3aWxsIGJlCisgIGZvdW5kLiAgVGhleSdyZSBqdXN0IHNob3J0IGhlcmUgZm9yIHJlYWRhYmlsaXR5KS4KKworICBOb3RlIHRoYXQgdGhlIGZpcnN0IGVudHJ5IHVzZXMgdGhlIE9JRCBjb3JyZXNwb25kaW5nIHRvIHRoZSBTTk1QdjEKKyAgJ2NvbGRTdGFydCcgdHJhcC4gIFNlZSB0aGUgY28tZXhpc3RlbmNlIFJGQyAoUkZDIDI1NzYpIGZvciBkZXRhaWxzCisgIG9mIG1hcHBpbmcgU05NUHYxIHRyYXBzIHRvIFNOTVB2MiBPSURzLgorCisgIFRoZXJlJ3MgYSB0dXRvcmlhbCB3aXRoIG1vcmUgZGV0YWlscyBvbiB0aGUgd2ViIHNpdGUgYXQKKwlodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01L2NvbW1hbmRzL3NubXB0cmFwLmh0bWwKKyAgCisKKworPGEgbmFtZT0iTXlfdHJhcGhhbmRsZXJfc2NyaXB0X2RvZXNuX3Rfd29ya193aGVuX3J1bl9saWtlX3RoaXNfX193aHlfbm90XyI+CitNeSB0cmFwaGFuZGxlciBzY3JpcHQgZG9lc24ndCB3b3JrIHdoZW4gcnVuIGxpa2UgdGhpcyAtIHdoeSBub3Q/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIElmIGEgdHJhcGhhbmRsZXIgc2NyaXB0IHdvcmtzIGZpbmUgd2hlbiBydW4gbWFudWFsbHkgZnJvbSB0aGUKKyAgY29tbWFuZCBsaW5lLCBidXQgZ2VuZXJhdGVzIGFuIGVycm9yIHdoZW4gdHJpZ2dlcmVkIGJ5IGFuIGluY29taW5nCisgIG5vdGlmaWNhdGlvbiwgdGhlbiB0aGlzIGlzIHByb2JhYmx5IGRvd24gdG8gb25lIG9mIHR3byBsaWtlbHkgY2F1c2VzLgorCisgICAgRmlyc3RseSwgdGhlIGludGVyYWN0aXZlIHNoZWxsIGVudmlyb25tZW50IG1heSBub3QgYmUgcHJlY2lzZWx5CisgIHRoZSBzYW1lIGFzIHRoYXQgZm9yIHByb2dyYW1zIGV4ZWN1dGVkIGJ5IHRoZSBzbm1wdHJhcGQgZGFlbW9uLgorICBJbiBwYXJ0aWN1bGFyLCBpdCdzIHF1aXRlIHBvc3NpYmxlIHRoYXQgdGhlIFBBVEggZW52aXJvbm1lbnRhbAorICB2YXJpYWJsZSBtYXkgbm90IGluY2x1ZGUgYWxsIHRoZSBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzIHRoYXQgYXJlCisgIGNvbW1vbmx5IHNldCB1cCBmb3IgYSBwZXJzb25hbCBsb2dpbiBjb25maWd1cmF0aW9uLiAgVG8gYXZvaWQgdGhpcworICBwcm9ibGVtIChwYXJ0aWN1bGFybHkgZm9yIHRyYXBoYW5kbGVyIHNoZWxsIHNjcmlwdHMpLCBpdCdzIHdvcnRoCisgIGdpdmluZyB0aGUgZnVsbCBwYXRoIHRvIGFsbCBwcm9ncmFtcyB1c2VkIHdpdGhpbiB0aGUgc2NyaXB0LgorCisgICAgU2Vjb25kbHksIHRoZSBzbm1wdHJhcGQgZGFlbW9uIG1heSBub3QgYWx3YXlzIHJlY29nbmlzZSB0aGUKKyAgYXBwcm9wcmlhdGUgaW50ZXJwcmV0ZXIgdG8gdXNlIGZvciBhIHBhcnRpY3VsYXIgdHJhcCBoYW5kbGVyLgorICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGVuIHlvdSBjYW4gc3BlY2lmeSB0aGlzIGludGVycHJldGVyCisgIGV4cGxpY2l0bHkgYXMgcGFydCBvZiB0aGUgdHJhcCBoYW5kbGUgZGlyZWN0aXZlOgorCisJdHJhcGhhbmRsZSBkZWZhdWx0IC91c3IvYmluL3BlcmwgL3Vzci9sb2NhbC9iaW4vbG9nX2l0CisKKyAgTm90ZSB0aGF0IGluIHRoaXMgY2FzZSwgaXQncyBhbG1vc3QgY2VydGFpbiB0aGF0IHlvdSdsbCBhbHNvCisgIG5lZWQgdG8gZ2l2ZSB0aGUgZnVsbCBwYXRoIHRvIHRoZSB0cmFwaGFuZGxlIHNjcmlwdCAoYXMgc2hvd24pCisKKworCis8YSBuYW1lPSJUaGVfdWNkU2h1dGRvd25fdHJhcF9PSURfcmVjZWl2ZWRfYnlfbXlfbWFuYWdlcl9pc193cm9uZ19fV2h5XyI+CitUaGUgdWNkU2h1dGRvd24gdHJhcCBPSUQgcmVjZWl2ZWQgYnkgbXkgbWFuYWdlciBpcyB3cm9uZy4gV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyBpcyBkdWUgdG8gdGhlIHdheSB0aGF0IHRyYXBzIGFyZSBjb252ZXJ0ZWQgYmV0d2VlbgorICBTTk1QdjEgYW5kIFNOTVB2MiBmb3JtYXRzLiAgVGhlIGFsZ29yaXRobSB1c2VkIGZvciBjb252ZXJ0aW5nCisgIGZyb20gYW4gU05NUHYxIGVudGVycHJpc2Utc3BlY2lmaWMgdHJhcCBudW1iZXIsIHRvIGFuIFNOTVB2MgorICB0cmFwIE9JRCByZXN1bHRzIGluIGEgcGVudWx0aW1hdGUgJzAnIHN1YmlkZW50aWZpZXIsIGJlZm9yZQorICB0aGUgdHJhcCBudW1iZXIgaXRzZWxmLiAgVGhlIGRlZmluaXRpb24gb2YgdGhlIHRyYXAgb2JqZWN0cworICBpbiB0aGUgVUNELVNOTVAtTUlCIGZpbGUgZG9lcyBub3QgaW5jbHVkZSB0aGlzIHN1YmlkZW50aWZpZXIuCisKKyAgICBJbiBkdWUgY291cnNlLCB0aGUgaW50ZW50aW9uIGlzIHRvIGRlZmluZSBhIG5ldyBzZXQgb2YgTUlCCisgIG9iamVjdHMsIHVuZGVyIHRoZSAnbmV0LXNubXAnIGVudGVycHJpc2UgdHJlZS4gIFRoaXMgd2lsbAorICBpbmNsdWRlIG5ldyB0cmFwIE9JRHMsIHdoaWNoIHdpbGwgYmUgZGVzaWduZWQgc3VjaCB0aGF0CisgIHRoaXMgcHJvYmxlbSBkb2VzIG5vdCBhcmlzZSBpbiB0aGUgZnV0dXJlLgorCisKKworPGEgbmFtZT0iV2h5X2RvZXNfc25tcHRyYXBkX2NvbXBsYWluX2Fib3V0X0FnZW50WF8iPgorV2h5IGRvZXMgc25tcHRyYXBkIGNvbXBsYWluIGFib3V0IEFnZW50WD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFN0YXJ0aW5nIGZyb20gdGhlIHY1IHJlbGVhc2UsIHRoZSB0cmFwIGhhbmRsaW5nIGRhZW1vbiBoYXMKKyAgaW1wbGVtZW50ZWQgdGhlIG5vdGlmaWNhdGlvbiBsb2dnaW5nIGFzcGVjdHMgb2YgdGhlIE5PVElGSUNBVElPTi1NSUIKKyAgKFJGQyAzMDE0KS4gIFRoaXMgaXMgaGFuZGxlZCBieSB0aGUgdHJhcCBoYW5kbGVyIGRhZW1vbiByZWdpc3RlcmluZworICBhcyBhbiBBZ2VudFggc3ViYWdlbnQsIHRvIHN1cHBseSB0aGlzIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uLgorCisgICAgSWYgdGhlcmUgaXMgbm8gQWdlbnRYIG1hc3RlciBhZ2VudCBhdmFpbGFibGUsIHRoaXMgcmVnaXN0cmF0aW9uCisgIGZhaWxzLCBnZW5lcmF0aW5nIHRoZSB3YXJuaW5nIGFib3V0ICJmYWlsZWQgdG8gY29ubmVjdCB0byB0aGUgYWdlbnR4CisgIG1hc3RlciIuICBUaGlzIHdhcm5pbmcgb25seSBhcHBlYXJzIGJldHdlZW4gdmVyc2lvbiA1LjAgYW5kIDUuMC40CisgIChpbiA1LjAuNCBhbmQgYWZ0ZXIgdGhlIHdhcm5pbmcgd2FzIHNpbGVuY2VkKS4gIFRoaXMgZmFpbHVyZSBkb2VzCisgIG5vdCBhZmZlY3QgdGhlIG1haW4gb3BlcmF0aW9uIG9mIHRoZSB0cmFwIGhhbmRsZXIuICBJdCBzaW1wbHkgbWVhbnMKKyAgdGhhdCB0aGUgbnNtTG9nIGluZm9ybWF0aW9uIHdvbid0IGJlIGF2YWlsYWJsZSBmb3IgcXVlcnkgdmlhIFNOTVAuCisKKyAgICBCYXNpY2FsbHksIHRoaXMgaXMgYSB3YXJuaW5nIHRoYXQgY2FuIHNhZmVseSBiZSBpZ25vcmVkLgorCisKKworPGEgbmFtZT0iSG93X2RvX0lfdXNlX1NOTVB2X18iPgorSG93IGRvIEkgdXNlIFNOTVB2Mz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoZSBzaW1wbGVzdCBmb3JtIG9mIFNOTVB2MyByZXF1ZXN0ICh1bmF1dGhlbnRpY2F0ZWQsIHVuZW5jcnlwdGVkKQorICB3b3VsZCBiZSBzb21ldGhpbmcgbGlrZToKKworCXNubXBnZXQgLXYgMyAtbCBub0F1dGhOb1ByaXYgbG9jYWxob3N0IHN5c1VwVGltZS4wCisKKyAgICBBbiBhdXRoZW50aWNhdGVkIHJlcXVlc3Qgd291bGQgc3BlY2lmeSBhIHVzZXJuYW1lIGFuZCBwYXNzIHBocmFzZToKKworCXNubXBnZXQgLXYgMyAtbCBhdXRoTm9Qcml2IC11IGRhdmUgLUEgIk9wZW4gdGhlIERvb3IiCisJCQkJbG9jYWxob3N0IHN5c1VwVGltZS4wCisKKyAgICBBIGZ1bGx5IHNlY3VyZSByZXF1ZXN0IHdvdWxkIGFsc28gc3BlY2lmeSB0aGUgcHJpdmFjeSBwYXNzIHBocmFzZToKKworCXNubXBnZXQgLXYgMyAtbCBhdXRoUHJpdiAtdSBkYXZlIC1BICJPcGVuIHRoZSBEb29yIgorCQkJLVggIkJldCB5b3UgY2FuJ3Qgc2VlIG1lIiAgbG9jYWxob3N0IHN5c1VwVGltZS4wCisKKyAgSW4gcHJhY3Rpc2UsIG1vc3Qgb2YgdGhlc2Ugd291bGQgcHJvYmFibHkgYmUgc2V0IHZpYSBjb25maWd1cmF0aW9uCisgIGRpcmVjdGl2ZXMgaW4gYSBwZXJzb25hbCAkSE9NRS8uc25tcC9zbm1wLmNvbmYgZmlsZSAobm90ZSwgKm5vdCogdGhlCisgIGFnZW50J3Mgc25tcGQuY29uZiBmaWxlKS4gIFRoZSBlcXVpdmFsZW50IHNldHRpbmdzIGZvciB0aGUgdGhpcmQKKyAgZXhhbXBsZSB3b3VsZCBiZToKKworCWRlZlNlY3VyaXR5TmFtZQkJZGF2ZQorCWRlZlNlY3VyaXR5TGV2ZWwJYXV0aFByaXYKKwlkZWZBdXRoUGFzc3BocmFzZQkiT3BlbiB0aGUgRG9vciIKKwlkZWZQcml2UGFzc3BocmFzZQkiQmV0IHlvdSBjYW4ndCBzZWUgbWUiCisKKyAgSWYgdGhlIEF1dGhQYXNzcGhyYXNlIGFuZCB0aGUgUHJpdlBhc3NwaHJhc2UgYXJlIHRoZSBzYW1lLCB0aGVuIHlvdQorICBjYW4gdXNlIHRoZSBzZXR0aW5nCisJCWRlZlBhc3NwaHJhc2UJIk9wZW4gdGhlIERvb3IgYW5kIHNlZSBtZSIKKwkJCQkJCQlpbnN0ZWFkCisKKyAgRm9yIGhvdyB0byBjb25maWd1cmUgdGhlIGFnZW50IHRvIHJlc3BvbmQgdG8gU05NUHYzIHJlcXVlc3RzLCBzZWUKKyAgdGhlIEFHRU5UIHNlY3Rpb24uCisgCisKKworPGEgbmFtZT0iSG93X2JpZ19jYW5fYW5fU05NUF9yZXF1ZXN0X19vcl9yZXBseV9fYmVfIj4KK0hvdyBiaWcgY2FuIGFuIFNOTVAgcmVxdWVzdCAob3IgcmVwbHkpIGJlPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoZSBwcm90b2NvbCBkZWZpbml0aW9uIHNwZWNpZmllcyBhICJtaW5pbXVtIG1heGltdW0iIHBhY2tldCBzaXplCisgICg0ODQgYnl0ZXMgZm9yIFVEUCksIHdoaWNoIGFsbCBzeXN0ZW1zIG11c3Qgc3VwcG9ydCwgYnV0IGRvZXMgbm90CisgIGF0dGVtcHQgdG8gZGVmaW5lIGFuIHVwcGVyIGJvdW5kIGZvciB0aGlzIG1heGltdW0gc2l6ZS4gIFRoaXMgaXMgbGVmdAorICB0byBlYWNoIGluZGl2aWR1YWwgaW1wbGVtZW50YXRpb24uCisKKyAgICBUaGUgVUNEIHNvZnR3YXJlIHVzZXMgYSBmaXhlZCBzaXplIGJ1ZmZlciBvZiAxNDcyIGJ5dGVzIHRvIGhvbGQgdGhlCisgIGVuY29kZWQgcGFja2V0LCBzbyBhbGwgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBtdXN0IGZpdCB3aXRoaW4gdGhpcy4KKyAgVW5mb3J0dW5hdGVseSwgaXQncyBub3QgcG9zc2libGUgdG8gcHJlZGljdCBob3cgbWFueSB2YXJiaW5kcyB0aGlzCisgIGNvcnJlc3BvbmRzIHRvLCBzaW5jZSBpdCBkZXBlbmRzIG9uIHRoZSB0eXBlIGFuZCBhY3R1YWwgdmFsdWVzIGJlaW5nCisgIHNlbnQsIGFzIHdlbGwgYXMgdGhlIGNvcnJlc3BvbmRpbmcgT0lEcy4KKworICAgIEFzIGEgcnVsZSBvZiB0aHVtYiwgc2VuZGluZyA0MDAgaW50ZWdlci12YWx1ZWQgdmFyYmluZHMgc2VlbXMgdG8KKyAgd29yayBPSywgd2hpbGUgMzAwIHN0cmluZy12YWx1ZWQgdmFyYmluZHMgdHJpZ2dlcnMgYW4gb3ZlcnJ1bi4KKworICAgIFRoZSBOZXQtU05NUCByZWxlYXNlcyBoYW5kbGUgcGFja2V0IGJ1ZmZlcnMgcmF0aGVyIGRpZmZlcmVudGx5LAorICBhbmQgYXJlIG5vdCBzdWJqZWN0IHRvIHRoZSBzYW1lIGZpeGVkIHJlc3RyaWN0aW9ucy4KKworCisKKzxhIG5hbWU9Ikhvd19jYW5fSV9tb25pdG9yX215X3N5c3RlbXNfX2Rpc2tfX21lbW9yeV9fZXRjX18iPgorSG93IGNhbiBJIG1vbml0b3IgbXkgc3lzdGVtcyAoZGlzaywgbWVtb3J5LCBldGMpPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBJbiBnZW5lcmFsLCB0aGUgTmV0LVNOTVAgc3VpdGUgY29uc2lzdHMgb2YgcmVsYXRpdmVseSBsb3ctbGV2ZWwKKyAgdG9vbHMsIGFuZCB0aGVyZSBpcyBub3RoaW5nIGluY2x1ZGVkIHRoYXQgaXMgZGVzaWduZWQgZm9yIGhpZ2gtbGV2ZWwsCisgIGxvbmctdGVybSBtb25pdG9yaW5nIG9mIHRyZW5kcyBpbiBuZXR3b3JrIHRyYWZmaWMsIGRpc2sgb3IgbWVtb3J5CisgIHVzYWdlLCBldGMuCisKKyAgICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgcGFja2FnZXMgYXZhaWxhYmxlIHRoYXQgYXJlIGRlc2lnbmVkIGZvciB0aGlzCisgIHB1cnBvc2UuICBUd28gb2YgdGhlIG1vc3Qgd2lkZWx5IHVzZWQgYXJlIE1SVEcgKGh0dHA6Ly93d3cubXJ0Zy5vcmcvKQorICBhbmQgQ3JpY2tldCAoaHR0cDovL2NyaWNrZXQuc291cmNlZm9yZ2UubmV0LykuICBUaGVyZSBhcmUgZGV0YWlscyBvZgorICBob3cgdG8gc2V0IHVwIENyaWNrZXQgdG8gbW9uaXRvciBzb21lIG9mIHRoZSBVQ0QgZXh0ZW5zaW9ucyBhdAorICBodHRwOi8vd3d3LmFmbi5vcmcvfmphbS9zb2Z0d2FyZS9jcmlja2V0LworCisgICAgIFdlIGhhdmUgYWxzbyBzZXQgdXAgYSBwYWdlIHRoYXQgZGVzY3JpYmVzIGluIGRldGFpbCBob3cgTVJURworICBjYW4gYmUgc2V0IHVwIHRvIG1vbml0b3IgZGlzaywgbWVtb3J5IGFuZCBjcHUgYWN0aXZpdHkgYXQKKyAgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvdHV0b3JpYWwtNS9tcnRnL2luZGV4Lmh0bWwKKworICAgIFRoZXJlIGlzIGFsc28gYSB3ZWItYmFzZWQgbmV0d29yayBjb25maWd1cmF0aW9uIHN5c3RlbSAiTmV0LVBvbGljeSIsCisgIGJhc2VkIHVwb24gU05NUC4gIFRoaXMgaXMgbm90IHN0cmljdGx5IGNvbm5lY3RlZCB0byB0aGUgTmV0LVNOTVAgcHJvamVjdCwKKyAgYnV0IGEgbnVtYmVyIG9mIHRoZSBjb3JlIGRldmVsb3BlcnMgYXJlIGFsc28gaW52b2x2ZWQgd2l0aCB0aGF0IHN5c3RlbS4KKyAgU2VlIGh0dHA6Ly9uZXQtcG9saWN5LnNvdXJjZWZvcmdlLm5ldCBmb3IgbW9yZSBkZXRhaWxzLgorCisKKworPGEgbmFtZT0iQXBwbGljYXRpb25zX2NvbXBsYWluX2Fib3V0X2VudHJpZXNfaW5feW91cl9leGFtcGxlX19zbm1wX2NvbmZfX2ZpbGVfX19XaHlfIj4KK0FwcGxpY2F0aW9ucyBjb21wbGFpbiBhYm91dCBlbnRyaWVzIGluIHlvdXIgZXhhbXBsZSAnc25tcC5jb25mJyBmaWxlLiAgV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoZSBleGFtcGxlIGNvbmZpZ3VyYXRpb24gZmlsZSAnRVhBTVBMRS5jb25mJyBpcyBkZXNpZ25lZCBhcyBhIGNvbmZpZworICBmb3IgdGhlIGFnZW50LCBhbmQgc2hvdWxkIGJlIGluc3RhbGxlZCBhcyAnc25tcGQuY29uZicgKG5vdGUgdGhlICdkJykuCisgIFRoZSBmaWxlICdzbm1wLmNvbmYnIGlzIGludGVuZGVkIGZvciBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywKKyAgYXBwbGljYWJsZSB0byBhbGwgYXBwbGljYXRpb25zICh2aWEgdGhlIFNOTVAgbGlicmFyeSkuCisgICAgUmVuYW1lIChvciBtZXJnZSkgdGhlICdzbm1wLmNvbmYnIGZpbGUgdG8gJ3NubXBkLmNvbmYnLCBhbmQgdGhpcyBzaG91bGQKKyAgZml4IHRoZSBwcm9ibGVtLgorICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBleGFtcGxlIHNubXAuY29uZiBzaGlwcGVkIHdpdGggdGhlIHN0YW5kYXJkCisgIGRpc3RyaWJ1dGlvbi4KKworCisKKzxhIG5hbWU9Ik9LX193aGF0X3Nob3VsZF9JX3B1dF9pbl9zbm1wX2NvbmZfIj4KK09LLCB3aGF0IHNob3VsZCBJIHB1dCBpbiBzbm1wLmNvbmY/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIGlzIHVzZWQgdG8gc2V0IGNvbW1vbiBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgbW9zdCBvZiB0aGUKKyAgYXBwbGljYXRpb25zLCB0byBhdm9pZCBoYXZpbmcgdG8gc3BlY2lmeSB0aGVtIGV2ZXJ5IHRpbWUuICBFeGFtcGxlcworICBpbmNsdWRlIHRoZSBTTk1QdjMgc2V0dGluZ3MgbWVudGlvbmVkIGFib3ZlLCBkZWZhdWx0cyBmb3Igd2hpY2ggTUlCcworICB0byBsb2FkIGFuZCB3aGVyZSBmcm9tLCBhbmQgdGhlIGRlZmF1bHQgU05NUCB2ZXJzaW9uLCBwb3J0IGFuZAorICAoaWYgYXBwcm9wcmlhdGUpIHRoZSBjb21tdW5pdHkgc3RyaW5nIHRvIHVzZS4KKworICAgIFNvbWUgb2YgdGhlc2UgKHN1Y2ggYXMgdGhlIE1JQiBmaWxlIGxvY2F0aW9uKSwgbWlnaHQgYmVsb25nIGluIGEKKyAgc2hhcmVkIHNubXAuY29uZiBmaWxlICh0eXBpY2FsbHkgL3Vzci9sb2NhbC9zaGFyZS9zbm1wL3NubXAuY29uZiBvcgorICAvZXRjL3NubXAvc25tcC5jb25mKSB0byBhcHBseSB0byBhbGwgdXNlcnMgb2YgdGhlIHN5c3RlbS4gIE90aGVycworICAocGFydGljdWxhcmx5IHRoZSBTTk1QdjMgc2VjdXJpdHkgc2V0dGluZ3MpLCBhcmUgbW9yZSBsaWtlbHkgdG8gcmVmZXIKKyAgdG8gYSBwYXJ0aWN1bGFyIHVzZXIsIGFuZCBzaG91bGQgZ28gaW4gYSBwZXJzb25hbCBzbm1wLmNvbmYgZmlsZQorICAodHlwaWNhbGx5ICRIT01FLy5zbm1wL3NubXAuY29uZikuCisKKyAgICBOb3RlIHRoYXQgdGhlIE5ldC1TTk1QIHBhY2thZ2UgZG9lcyBub3QgY29tZSB3aXRoIGFuIGV4YW1wbGUgc25tcC5jb25mCisgIGZpbGUuICBTZWUgJ3NubXBnZXQgLUgnIGFuZC9vciB0aGUgc25tcC5jb25mKDUpIG1hbiBwYWdlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3UgY2FuIGFsc28gdXNlIHRoZSAic25tcGNvbmYiIGNvbW1hbmQgdG8gaGVscCB5b3UgZ2VuZXJhdGUgeW91cgorICBzbm1wLmNvbmYgY29uZmlndXJhdGlvbiBmaWxlIChqdXN0IHJ1biBpdCBhbmQgYW5zd2VyIGl0cyBxdWVzdGlvbnMpLgorCisKKworPGEgbmFtZT0iUEVSTCI+CitQRVJMCis9PT09CisKKzxhIG5hbWU9IldoZXJlX2Nhbl9JX2dldF90aGVfcGVybF9TTk1QX3BhY2thZ2VfIj4KK1doZXJlIGNhbiBJIGdldCB0aGUgcGVybCBTTk1QIHBhY2thZ2U/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgSm9lIE1hcnpvdCdzIGV4Y2VsbGVudCBwZXJsIFNOTVAgbW9kdWxlLCB3aGljaCByZXF1aXJlcyB0aGUgdWNkLXNubXAKKyAgbGlicmFyeSwgaXMgbm93IGluY2x1ZGVkIGluIHRoZSB1Y2Qtc25tcCBzb3VyY2UgcmVsZWFzZS4gIEl0J3MKKyAgbG9jYXRlZCBpbiB0aGUgcGVybC9TTk1QIHN1YmRpcmVjdG9yeSBvZiB0aGUgdWNkLXNubXAgc291cmNlIHRyZWUuCisKKyAgSXQgY2FuIGFsc28gYmUgZm91bmQgYXQgYW55IENvbXByZWhlbnNpdmUgUGVybCBBcmNoaXZlIE5ldHdvcmsKKyAgKENQQU4pIHNpdGUgbWlycm9yIGluIG1vZHVsZXMvYnktbW9kdWxlL1NOTVAuICBUbyBmaW5kIHRoZSBDUEFOIHNpdGUKKyAgbmVhcmVzdCB5b3UsIHBsZWFzZSBzZWUgaHR0cDovL3d3dy5jcGFuLm9yZy9TSVRFUy5odG1sLgorCisgIFdpdGggdGhlIHY1IHJlbGVhc2Ugb2YgdGhlIE5ldC1TTk1QIHN1aXRlLCB0aGlzIGlzIG5vdyBhY2NvbXBhbmllZCBieQorICBhIG51bWJlciBvZiBwZXJsIG1vZHVsZXMgZ3JvdXBlZCB0b2dldGhlciB1bmRlciB0aGUgTmV0U05NUCBuYW1lc3BhY2UuCisKKyAgQ29uc3VsdCB0aGUgUkVBRE1FIGZpbGUgaW4gdGhlIFNOTVAgcGVybCBtb2R1bGUgZGlzdHJpYnV0aW9uIHRvIGZpbmQgCisgIG91dCB3aGF0IHZlcnNpb24gb2YgdGhlIHVjZC1zbm1wIGxpYnJhcnkgaXQgbmVlZHMgdG8gYmUgbGlua2VkIGFnYWluc3QuCisKKworCis8YSBuYW1lPSJIb3dfZG9fSV9pbnN0YWxsX3RoZV9QZXJsX1NOTVBfbW9kdWxlc18iPgorSG93IGRvIEkgaW5zdGFsbCB0aGUgUGVybCBTTk1QIG1vZHVsZXM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEFzc3VtaW5nIHlvdSBoYXZlIGEgcmVhc29uYWJseSBuZXcgKGFuZCBwcm9wZXJseSBjb25maWd1cmVkKSBwZXJsIHN5c3RlbSwKKyAgdGhpcyBzaG91bGQgYmUgc2ltcGx5OgorCisgICAgICAgIGNkIHBlcmwJCShmb3IgNS4wLngpCisgIG9yICAgIGNkIHBlcmwvU05NUAkoZm9yIDQuMi54KQorCXBlcmwgTWFrZWZpbGUuUEwKKwkgICAgKHByZXNzIFJFVFVSTiB3aGVuIHByb21wdGVkIGZvciBob3N0IGFuZCBjb21tdW5pdHkpCisJbWFrZQorCW1ha2UgdGVzdAorCW1ha2UgaW5zdGFsbCAgKHByb2JhYmx5IGFzIHJvb3QpCisKKyAgTm90ZSB0aGF0IHdpdGggdGhlIDUuMCByZWxlYXNlIGxpbmUsIHRoZXJlIGFyZSBhZGRpdGlvbmFsIFNOTVAtcmVsYXRlZAorICBwZXJsIG1vZHVsZXMgdGhhdCBzaG91bGQgcHJvYmFibHkgYmUgaW5zdGFsbGVkIGFzIHdlbGwuICBUaGVzZSBjYW4gYWxzbworICBiZSBmb3VuZCB1bmRlciB0aGUgJ3BlcmwnIHN1YmRpcmVjdG9yeS4gIEF0IHRoZSB2ZXJ5IGxlYXN0LCBpbnN0YWxsIHRoZQorICAnZGVmYXVsdF9zdG9yZScgbW9kdWxlLgorICAgIFRoaXMgaXMgbm90IG5lY2Vzc2FyeSB3aXRoIHRoZSA0LjIueCByZWxlYXNlcy4KKworCisKKzxhIG5hbWU9IkJ1dF9jb21waWxpbmdfdGhpc19mYWlsc19fV2h5XyI+CitCdXQgY29tcGlsaW5nIHRoaXMgZmFpbHMhIFdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIHBlcmwgbW9kdWxlIHRlbmRzIHRvIGRlbHZlIHF1aXRlIGRlZXBseSBpbnRvIHRoZSBpbnRlcm5hbHMgb2YgdGhlCisgIG1haW4gTmV0LVNOTVAgbGlicmFyeSwgYW5kIHNvIGlzIHF1aXRlIHNlbnNpdGl2ZSB0byBjaGFuZ2VzIHdpdGhpbiB0aGUKKyAgbGlicmFyeS4gIEl0J3MgaW1wb3J0YW50IHRvIHVzZSB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUsIHRoYXQKKyAgY29ycmVzcG9uZHMgdG8gdGhlIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkgeW91IGhhdmUgaW5zdGFsbGVkLiAgSWYgeW91J3JlCisgIHdvcmtpbmcgd2l0aCB0aGUgbWFpbiBOZXQtU05NUCBkaXN0cmlidXRpb24sIHRoZSBhcHByb3ByaWF0ZSB2ZXJzaW9uIG9mCisgIHRoZSBwZXJsIG1vZHVsZSBpcyBzaGlwcGVkIGFzIHBhcnQgb2YgdGhpcywgYnV0IHlvdSAqbXVzdCogaGF2ZQorICBydW4gIm1ha2UgaW5zdGFsbCIgb24gdGhlIG1haW4gTmV0LVNOTVAgZGlzdHJpYnV0aW9uICpmaXJzdCouCisKKyAgSWYgeW91J3JlIHdvcmtpbmcgd2l0aCBhIHJlYWR5LWluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBtYWtlCisgIHN1cmUgeW91IG9idGFpbiBhIGNvbXBhdGlibGUgdmVyc2lvbiBvZiB0aGUgcGVybCBtb2R1bGUuCisKKyAgICBOb3RlIHRoYXQgdGhlIHBlcmwgbW9kdWxlcyB3aWxsIGJlIGNvbXBpbGVkIHVzaW5nIHRoZSBjb21waWxlcgorICAoYW5kIGNvbXBpbGVyIHNldHRpbmdzKSB1c2VkIGZvciBjb21waWxpbmcgdGhlIG9yaWdpbmFsIHBlcmwgYmluYXJ5LAorICAqbm90KiB0aG9zZSB1c2VkIGZvciBjb21waWxpbmcgdGhlIE5ldC1TTk1QIChvciBVQ0QpIGxpYnJhcnkuCisgIElmIHRoZXNlIGFyZSBkaWZmZXJlbnQgKGUuZy4gJ2djYycgdXNlZCBmb3Igb25lIGFuZCAnY2MnIGZvciB0aGUgb3RoZXIpCisgIHRoZW4gdGhpcyBtYXkgd2VsbCBjYXVzZSBwcm9ibGVtcy4gIEl0J3MgbXVjaCBzYWZlciB0byB1c2UgYSBjb25zaXN0ZW50CisgIGVudmlyb25tZW50IGZvciBib3RoLiAgVGhpcyBpc3N1ZSBpcyBkaXNjdXNzZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4KKyAgdGhlIFJFQURNRS5zb2xhcmlzIGZpbGUuCisKKyAgICBBbHNvIG5vdGUgdGhhdCB0aGUgdjUgTmV0LVNOTVAgc3VpdGUgKm11c3QqIGJlIGNvbmZpZ3VyZWQgdG8gcHJvdmlkZQorICBzaGFyZWQgbGlicmFyaWVzIGluIG9yZGVyIGZvciB0aGUgcGVybCBtb2R1bGVzIHRvIHdvcmsgY29ycmVjdGx5LiAgVGhpcworICBpcyBub3QgbmVjZXNzYXJ5IHdpdGggdGhlIHY0IFVDRC1TTk1QIGxpYnJhcmllcy4KKworCisKKzxhIG5hbWU9IkNvbXBpbGluZ190aGVfcGVybF9tb2R1bGVfd29ya3NfT0tfX2J1dF9fbWFrZV90ZXN0X19mYWlsc19fV2h5XyI+CitDb21waWxpbmcgdGhlIHBlcmwgbW9kdWxlIHdvcmtzIE9LLCBidXQgJ21ha2UgdGVzdCcgZmFpbHMuIFdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhhdCdzIGRpZmZpY3VsdCB0byBhbnN3ZXIgaW4gZ2VuZXJhbC4KKyAgU29tZSBvZiB0aGUgcGVybCB0ZXN0cyBhcmUgcmF0aGVyIHBpY2t5LCBzbyB0aGlzIG1heSBzaW1wbHkgYmUKKyAgc29tZSBtaW5vciBpbmNvbnNpc3RlbmN5IGJldHdlZW4geW91ciBwcmVjaXNlIHNldHVwLCBhbmQgdGhlCisgIGV4cGVjdGF0aW9ucyBvZiB0aGUgdGVzdCBlbnZpcm9ubWVudC4KKworICAgIENoZWNrIHRoYXQgeW91IGFyZSB3b3JraW5nIHdpdGggdGhlIHBlcmwgZGlzdHJpYnV0aW9uIHRoYXQgbWF0Y2hlcworICB0aGUgU05NUCBsaWJyYXJpZXMgKHVzZSB0aGUgJ3BlcmwvU05NUCcgaW4gcHJlZmVyZW5jZSB0byBDUEFOKSwgYW5kCisgIHRoYXQgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBtYWluIGxpYnJhcmllcyBzdWNjZXNzZnVsbHkgKHVuaW5zdGFsbAorICBhbnkgb2xkIHZlcnNpb25zIGlmIHlvdSdyZSBoYXZpbmcgdHJvdWJsZSkuCisKKyAgICBJZiBhbGwgdGhpcyBsb29rcyBPSywgYW5kIGlmIG1vc3Qgb2YgdGhlIHRlc3RzIHBhc3MsIHRoZW4gaXQncworICBwcm9iYWJseSBzYWZlIHRvIHJ1biAnbWFrZSBpbnN0YWxsJyBhbnl3YXkuICAgUHJvYmFibHkuCisKKworCis8YSBuYW1lPSJUaGVfcGVybF9fbWFrZV90ZXN0X19mYWlsc19vbl90aGVfT0lEX3Rlc3RzX19Jc19pdF9zYWZlX3RvX2NvbnRpbnVlXyI+CitUaGUgcGVybCAnbWFrZSB0ZXN0JyBmYWlscyBvbiB0aGUgT0lEIHRlc3RzLiBJcyBpdCBzYWZlIHRvIGNvbnRpbnVlPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIE5vLiAgQWxtb3N0IGNlcnRhaW5seSBub3QuICBJZiB0aGUgInBlcmwvT0lEIiB0ZXN0cyBmYWlsIHRoZSBmaXJzdAorICBmb3VyIHRlc3RzLCBhbmQgdGhlbiBjcmFzaGVzIG91dCBjb21wbGFpbmluZyBhYm91dCBhICJuZXRzbm1wX29pZFB0ciIsCisgIHRoZW4gdGhpcyBpcyBhIHNpZ24gb2YgYSBtb3JlIGZ1bmRhbWVudGFsIHByb2JsZW0uCisKKyAgVGhlIDQuMi54IGxpbmUgcGVybCBzdXBwb3J0IHdhcyBhIHNpbmdsZSBtb2R1bGUsIHNvIHdhcyBpbmRlcGVuZGVudAorICBvZiB0aGUgd2F5IHRoYXQgdGhlIEMgbGlicmFyeSB3YXMgY29uZmlndXJlZC4gIEluIGNvbnRyYXN0IHRvIHRoaXMsIAorICB0aGUgNS4wLnggcGVybCBzdXBwb3J0IGNvbnNpc3Qgb2YgYSBudW1iZXIgb2YgaW50ZXItY29vcGVyYXRpbmcgbW9kdWxlcywKKyAgd2hpY2ggcmVseSBvbiBzaGFyaW5nIGEgY29uc2lzdGVudCBDIGxpYnJhcnkgZW52aXJvbm1lbnQuICBJbiBwcmFjdGlzZSwKKyAgdGhpcyBtZWFucyB0aGF0IHRoZSBwZXJsIG1vZHVsZXMgKk1VU1QqIGJlIGNvbmZpZ3VyZWQgYW5kIGNvbXBpbGVkIHVzaW5nCisgIGEgc2hhcmVkIHZlcnNpb24gb2YgdGhlIEMgbGlicmFyeS4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgZGVmYXVsdCBmb3IKKyAgbW9zdCBlYXJseSB2ZXJzaW9ucyBvZiB0aGUgTmV0LVNOTVAgc3VpdGUgd2FzIHRvIGNvbXBpbGUgdXNpbmcgc3RhdGljCisgIGxpYnJhcmllcyB1bmxlc3MgZXhwbGljaXRseSBjb25maWd1cmVkIHRvIHVzZSBzaGFyZWQgbGlicmFyaWVzLiAgVGhlCisgIGRlZmF1bHQgc2hvdWxkIGJlIHRvIHVzZSBzaGFyZWQgbGlicmFyaWVzIGZyb20gNS4wLjcgb253YXJkcy4KKworICBUaGUgZXJyb3IgIm9pZDEgaXMgbm90IG9mIHR5cGUgbmV0c25tcF9vaWRQdHIiIGlzIGEgZmFpcmx5IHN1cmUgaW5kaWNhdGlvbgorICB0aGF0IHRoZSBDIGxpYnJhcnkgd2FzIGNvbXBpbGVkIHN0YXRpY2FsbHkuICAgWW91J2xsIG5lZWQgdG8gcmUtY29uZmlndXJlCisgIHRoZSBtYWluIE5ldC1TTk1QIHBhY2thZ2UgdXNpbmcgdGhlICItLWVuYWJsZS1zaGFyZWQiIGNvbmZpZ3VyZSBmbGFnLgorICBUaGVuIHJlLWluc3RhbGwgdGhlIEMgbGlicmFyeSBiZWZvcmUgcmUtY29uZmlndXJpbmcgYW5kIHJlLWNvbXBpbGluZworICB0aGUgcGVybCBtb2R1bGUgc3VwcG9ydC4KKworICBOb3RlIHRoYXQgdGhpcyBwcm9ibGVtIGRvZXMgbm90IGFyaXNlIHdoZW4gdXNpbmcgdGhlIDQuMi54IHZlcnNpb24KKyAgb2YgcGVybCBzdXBwb3J0LgorCisKKworPGEgbmFtZT0iSV9tX3RyeWluZ190b191c2VfbWliX2NfX29yX3RrbWliX19hbmRfaXRfY2FuX3RfbG9jYXRlX1NOTVBfcG1fIj4KK0knbSB0cnlpbmcgdG8gdXNlIG1pYjJjIChvciB0a21pYikgYW5kIGl0IGNhbid0IGxvY2F0ZSBTTk1QLnBtPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhhdCdzIHByb2JhYmx5IGJlY2F1c2UgdGhlIFNOTVAgcGVybCBtb2R1bGUgaGFzbid0IGJlZW4gaW5zdGFsbGVkLgorICBJdCdzIG5vdCBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBwZXJsIGRpc3RyaWJ1dGlvbiwgbm9yIGlzIGl0IGluc3RhbGxlZAorICBieSBkZWZhdWx0IGluIFJlZEhhdCBMaW51eCAoZm9yIGV4YW1wbGUpLgorICAgIFlvdSdsbCBuZWVkIHRvIGluc3RhbGwgaXQuICBTZWUgdGhlIHByZXZpb3VzIHR3byBxdWVzdGlvbnMuCisKKworCis8YSBuYW1lPSJJX21fdHJ5aW5nX3RvX3VzZV9taWJfY19fb3JfdGttaWJfX2FuZF9pdF9jYW5fdF9sb2FkX1NOTVBfc29fIj4KK0knbSB0cnlpbmcgdG8gdXNlIG1pYjJjIChvciB0a21pYikgYW5kIGl0IGNhbid0IGxvYWQgU05NUC5zbz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyBpcyBwcm9iYWJseSB0aGUgc2FtZSBwcm9ibGVtLiAgRWl0aGVyIHRoZSBTTk1QIG1vZHVsZQorICBoYXNuJ3QgYmVlbiBpbnN0YWxsZWQsIG9yIGl0J3MgdGhlIHdyb25nIHZlcnNpb24uICBTZWUgdGhlCisgIHByZXZpb3VzIHR3byBxdWVzdGlvbnMuCisKKworCis8YSBuYW1lPSJJX21fdHJ5aW5nX3RvX3VzZV90a21pYl9hbmRfaXRfY2FuX3RfbG9jYXRlX1RrX3BtXyI+CitJJ20gdHJ5aW5nIHRvIHVzZSB0a21pYiBhbmQgaXQgY2FuJ3QgbG9jYXRlIFRrLnBtPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRrLnBtIGlzIGFub3RoZXIgUGVybCBwYWNrYWdlIHRoYXQgbmVlZHMgdG8gYmUgaW5zdGFsbGVkIGJlZm9yZSB0a21pYgorICB3aWxsIHJ1bi4gIEl0J3MgYWxzbyBhdmFpbGFibGUgb24gUGVybCBDUEFOLiAgV2Ugc3VnZ2VzdCB1c2luZyB2ZXJzaW9uCisgICJUazgwMC4wMTEiIG9yIGxhdGVyLiAgSXQgY2FuIGJlIGluc3RhbGxlZCBieSBpc3N1aW5nIHRoZSBjb21tYW5kOgorCisJCXBlcmwgLU1DUEFOIC1lIHNoZWxsIDsgImluc3RhbGwgVGsiCisKKworCis8YSBuYW1lPSJJX3ZlX2dvdF9hX3Byb2JsZW1fd2l0aF90aGVfTmV0X1NOTVBfbW9kdWxlX19fQ2FuX3lvdV9oZWxwXyI+CitJJ3ZlIGdvdCBhIHByb2JsZW0gd2l0aCB0aGUgTmV0LVNOTVAgbW9kdWxlLiAgQ2FuIHlvdSBoZWxwPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFNvcnJ5LCBkZXNwaXRlIHRoZSBzaW1pbGFyLXNvdW5kaW5nIG5hbWUsIHRoZSBOZXQtU05NUCAob3IgTmV0OjpTTk1QKQorICBtb2R1bGUgaXMgbm90aGluZyB0byBkbyB3aXRoIHRoaXMgcGFja2FnZSwgb3IgdGhlIE5ldFNOTVAgbW9kdWxlcy4KKyAgTmV0OjpTTk1QIGlzIGEgInB1cmUtcGVybCIgaW1wbGVtZW50YXRpb24gb2YgU05NUCBzdXBwb3J0LCBkZXZlbG9wZWQKKyAgYnkgRGF2aWQgVG93bi4gIFRoZSBkZXZlbG9wZXJzIG9mIHRoZSAoQy1iYXNlZCkgTmV0LVNOTVAgc3VpdGUgZG8KKyAgbm90IGhhdmUgYW55IHNpZ25pZmljYW50IGV4cGVyaWVuY2UgaW4gdXNpbmcgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZSwKKyAgYW5kIHlvdSdsbCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIGFza2luZyBmb3IgaGVscCB2aWEgQ1BBTiBvciBzb21lCisgIG90aGVyIHBlcmwtcmVsYXRlZCBmb3J1bS4KKworCisKKzxhIG5hbWU9Ik1JQlMiPgorTUlCUworPT09PQorCis8YSBuYW1lPSJXaGVyZV9jYW5fSV9maW5kX2FfTUlCX2NvbXBpbGVyXyI+CitXaGVyZSBjYW4gSSBmaW5kIGEgTUlCIGNvbXBpbGVyPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoYXQgZGVwZW5kcyB3aGF0IHlvdSBtZWFuIGJ5IGEgIk1JQiBjb21waWxlciIuICBUaGVyZSBhcmUgYXQgbGVhc3QgdHdvCisgIHR5cGVzIG9mIHRvb2wgdGhhdCBhcmUgY29tbW9ubHkgcmVmZXJyZWQgdG8gYnkgdGhpcyBuYW1lLgorCisgIFRoZSBmaXJzdCBpcyBhIHRvb2wgdG8gY2hlY2sgTUlCIGZpbGVzIGZvciB2YWxpZGl0eS4gIFRoaXMgZnVuY3Rpb25hbGl0eQorICBpcyBtb3N0bHkgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIE1JQiBwYXJzZXIgKHBhcnQgb2YgdGhlIE5ldC1TTk1QIGxpYnJhcnkpCisgIGFuZCBoZW5jZSBpbmNsdWRlZCBpbiBhbGwgdGhlIGFwcGxpY2F0aW9ucy4gIFRoZSB0b29sICdzbm1wdHJhbnNsYXRlJyBpcworICBwcm9iYWJseSB0aGUgbW9zdCBhcHByb3ByaWF0ZSBmb3IgdGhpcyBwdXJwb3NlLgorICAgIE5vdGUgdGhhdCB0aGUgcGFyc2VyIGlzIGZhaXJseSBmb3JnaXZpbmcgKHNlZSAnV2hhdCBBU04uMSBwYXJzZXIgaXMgdXNlZCcKKyAgYmVsb3cpLCBzbyB0aGlzIHNob3VsZCBub3QgYmUgcmVnYXJkZWQgYXMgYSBzdGFtcCBvZiBhcHByb3ZhbC4KKworICAgIFRoZSBzZWNvbmQgdHlwZSBvZiB0b29sIGlzIG9uZSB0byB0dXJuIGEgTUlCIHNwZWNpZmljYXRpb24gaW50byBDIGNvZGUsCisgIHNwZWNpZmljYWxseSBvbmUgZGVzaWduZWQgdG8gYWlkIGFnZW50IGltcGxlbWVudGF0aW9uLiAgVGhlIGNvbW1hbmQgJ21pYjJjJworICBpcyBhbiBleGFtcGxlIG9mIHN1Y2ggYSB0b29sIGZvciB0aGUgTmV0LVNOTVAgYWdlbnQuICAKKyAgU2VlIHRoZSBDT0RJTkcgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCisKKzxhIG5hbWU9IklfY2FuX3RfbG9hZF9hbnlfb2ZfdGhlX21pYl9maWxlc19fYW5kX3RoZXlfc2VlbV90b19iZV9taXNzaW5nIj4KK0kgY2FuJ3QgbG9hZCBhbnkgb2YgdGhlIG1pYiBmaWxlcywgYW5kIHRoZXkgc2VlbSB0byBiZSBtaXNzaW5nCit0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgdGhlIGZpbGVuYW1lLiAgV2hhdCdzIGhhcHBlbmluZz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBpcyBhIHByb2JsZW0gZXhwZXJpZW5jZWQgd2l0aCBTdW4gc3lzdGVtcyB3aGVuIHRoZSB0b29scyBoYXZlCisgIGJlZW4gY29tcGlsZWQgd2l0aCBhIG1peHR1cmUgb2YgQlNEIGFuZCBTb2xhcmlzIGVudmlyb25tZW50cy4KKyAgWW91J2xsIG5lZWQgdG8gcmUtY29uZmlndXJlIGFuZCBjb21waWxlIHRoZSB0b29scywgbWFraW5nIHN1cmUgdGhhdAorICAnL3Vzci91Y2InIGlzIG5vdCBpbiB5b3VyIFBBVEggKG9yIGF0IGxlYXN0IGNvbWVzIGF0IHRoZSBlbmQpLgorCisKKworPGEgbmFtZT0iV2h5X2FyZW5fdF9teV9taWJfZmlsZXNfYmVpbmdfcmVhZF9pbl8iPgorV2h5IGFyZW4ndCBteSBtaWIgZmlsZXMgYmVpbmcgcmVhZCBpbj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoZSBOZXQtU05NUCBsaWJyYXJ5IG9ubHkgbG9hZHMgYSBzdWJzZXQgb2YgTUlCIGZpbGVzIGJ5IGRlZmF1bHQuCisgIFRoaXMgbGlzdCBpcyBzZXQgYXQgd2hlbiB0aGUgc3VpdGUgaXMgZmlyc3QgY29uZmlndXJlZCBhbmQgY29tcGlsZWQsCisgIGFuZCBiYXNpY2FsbHkgY29ycmVzcG9uZHMgdG8gdGhlIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IHRoZSBhZ2VudCBzdXBwb3J0cy4KKyAgKFRoaXMgaXMgYSBzaW1wbGlmaWNhdGlvbiwgYnV0IGlzIGEgcmVhc29uYWJsZSBmaXJzdCBhcHByb3hpbWF0aW9uKS4KKworICAgIFlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBieSB1c2luZyB0aGUgY29tbWFuZC1saW5lIG9wdGlvbiAnLW0nLCB0aGUKKyAgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSAnTUlCUycgb3IgdGhlIHNubXAuY29uZiBkaXJlY3RpdmUgJ21pYnMnLgorICBFYWNoIG9mIHRoZXNlIHRha2UgYSAoY29sb24tc2VwYXJhdGVkKSBsaXN0IG9mIE1JQiBtb2R1bGUgbmFtZXMKKyAgdG8gbG9hZC4gICBTdGFydGluZyB0aGUgbGlzdCB3aXRoIGEgJysnIGNoYXJhY3RlciB3aWxsIGFkZCB0aGVtIHRvCisgIHRoZSBkZWZhdWx0IGxpc3QgLSBvdGhlcndpc2UgaXQgcmVwbGFjZXMgdGhlIGRlZmF1bHRzLgorCisgICAgVXNpbmcgdGhlIHNwZWNpYWwgdmFsdWUgJ0FMTCcgd2lsbCBsb2FkIGFsbCB0aGUgTUlCIGZpbGVzIHRoYXQKKyAgdGhlIGxpYnJhcnkgY2FuIGZpbmQuCisKKworICAgIEFsdGVybmF0aXZlbHksIHRoZSB0b29scyBtYXkgYmUgbG9va2luZyBpbiB0aGUgd3JvbmcgcGxhY2UuCisgIFRoZSBkZWZhdWx0IGxvY2F0aW9uIGZvciB0aGUgbWliIGZpbGVzIGlzIC91c3IvbG9jYWwvc2hhcmUvc25tcC9taWJzLgorICBBZ2FpbiwgdGhpcyBpcyBzZXQgd2hlbiB0aGUgc3VpdGUgaXMgZmlyc3QgY29uZmlndXJlZCBhbmQgY29tcGlsZWQuCisgIFRoaXMgY2FuIGJlIGNoYW5nZWQgdXNpbmcgdGhlIGVudmlyb25tZW50YWwgdmFyaWFibGUgJ01JQkRJUlMnCisgIG9yIHRoZSBzbm1wLmNvbmYgZGlyZWN0aXZlICdtaWJkaXJzJy4KKworICAgIE5vdGUgdGhhdCB0aGlzIG1heSB2ZXJ5IHdlbGwgYWZmZWN0IHlvdSBpZiB5b3UndmUgaW5zdGFsbGVkIGEKKyAgbmV3IHZlcnNpb24gb2YgdGhlIHN1aXRlIG1hbnVhbGx5LCByZXBsYWNpbmcgb25lIHByb3ZpZGVkIGJ5IHRoZQorICBzdXBwbGllciAod2hpY2ggdHlwaWNhbGx5IHdvdWxkIHVzZSBhIG1vcmUgJ2NlbnRyYWwnIGxvY2F0aW9uKS4KKworCisgICAgRmluYWxseSwgYXJlIHlvdSBzdXJlIHRoYXQgeW91J3ZlIGluc3RhbGxlZCB0aGUgTUlCIGZpbGVzPworICBJZiB5b3UndmUgY29tcGlsZWQgdGhlIHN1aXRlIGZyb20gc2NyYXRjaCwgeW91IG5lZWQgdG8gcnVuCisgICJtYWtlIGluc3RhbGwiIGF0IGxlYXN0IG9uY2UsIGJlZm9yZSB0aGUgdG9vbHMgd2lsbCBiZSBhYmxlIHRvCisgIGZpbmQgdGhlIE1JQiBmaWxlcy4gIFRoaXMgaXMgdW5saWtlbHkgdG8gYmUgYSBwcm9ibGVtIGlmIHlvdSd2ZQorICBiZWVuIHdvcmtpbmcgd2l0aCB0aGUgdG9vbHMgZm9yIGEgd2hpbGUsIGJ1dCBjYW4gYml0ZSB0aG9zZSBjb21pbmcKKyAgZnJlc2ggdG8gdGhlIFNOTVAgd29ybGQuCisKKworCis8YSBuYW1lPSJJX21fZ2V0dGluZ19hbnN3ZXJzX19idXRfdGhleV9yZV9hbGxfbnVtYmVyc19fV2h5XyI+CitJJ20gZ2V0dGluZyBhbnN3ZXJzLCBidXQgdGhleSdyZSBhbGwgbnVtYmVycy4gV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoaXMgaXMgYWN0dWFsbHkgdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIHF1ZXN0aW9uLiAgQmVjYXVzZSB0aGUgdG9vbHMKKyAgZG9uJ3QgcmVhZCBpbiBldmVyeSBNSUIgbW9kdWxlIHRoZXkgY2FuIGZpbmQsIGl0IGlzIHF1aXRlIHBvc3NpYmxlCisgIGZvciByZXN1bHRzIGZyb20gYW4gYWdlbnQgdG8gcmVmZXIgdG8gbW9kdWxlcyB0aGF0IGhhdmUgbm90IGJlZW4gbG9hZGVkCisgIChwYXJ0aWN1bGFybHkgd2l0aCBHRVRORVhUIHJlcXVlc3RzLCBvciB3aGVuIHdhbGtpbmcgYSB0cmVlKS4KKyAgICAgVGhlIHRvb2xzIHdpbGwgcmVwb3J0IHRoZSBhbnN3ZXIgcXVpdGUgY29ycmVjdGx5LCBidXQgd29uJ3QgdHJhbnNsYXRlCisgIGlkZW50aWZpZXJzIGFuZCBlbnVtZXJhdGlvbnMgaW50byByZWFkYWJsZSBzdHJpbmdzLiAgVG8gZml4IHRoaXMsIHVzZQorICB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMgTUlCUyBvciBNSUJGSUxFUyAob3IgdGhlICctbScgYW5kICctTScgZmxhZ3MpCisgIHRvIHJlYWQgaW4gdGhlIHJlbGV2YW50IG1vZHVsZSBmaWxlcy4KKworCisKKzxhIG5hbWU9IldoYXRfZG9lc19fQ2Fubm90X2ZpbmRfbW9kdWxlX19YWFhfTUlCX19fbWVhbl8iPgorV2hhdCBkb2VzICJDYW5ub3QgZmluZCBtb2R1bGUgKFhYWC1NSUIpIiBtZWFuPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHF1ZXN0aW9ucy4gICBJbiB0aGlzIGNhc2UsIGl0J3MKKyAgc3RhdGluZyB0aGF0IGl0IGNhbid0IGZpbmQgdGhlIHNwZWNpZmllZCBtb2R1bGUgLSBlaXRoZXIgYmVjYXVzZQorICBpdCdzIG5vdCBpbnN0YWxsZWQgcHJvcGVybHksIG9yIHRoZSBuYW1lIHVzZWQgaXMgc3VidGx5IHdyb25nLgorCisgICAgSWYgaXQncyBqdXN0IG9uZSBvciB0d28gbW9kdWxlcyB0aGF0IGFyZSBub3QgYmVpbmcgZm91bmQsIGNoZWNrCisgIHRoYXQgdGhlIGZpbGVzIGFyZSBpbiB0aGUgZXhwZWN0ZWQgbG9jYXRpb24sIGFyZSByZWFkYWJsZSwgYW5kIHRoZQorICBuYW1lIGJlaW5nIHVzZWQgaXMgY29ycmVjdC4gIE5vdGUgdGhhdCB0aGUgbmFtZSByZXBvcnRlZCBpcyB0aGUKKyAgbmFtZSBvZiB0aGUgTUlCIG1vZHVsZSwgd2hpY2ggaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZQorICBuYW1lIG9mIHRoZSBmaWxlLiBTZWUgdGhlIHF1ZXN0aW9uICdIb3cgZG8gSSBhZGQgYSBNSUIgdG8gdGhlIHRvb2xzPycKKyAgZm9yIG1vcmUgZGV0YWlscyBvbiB0aGlzLgorCisgICAgSWYgdGhlIHRvb2wgaXMgZ2VuZXJhdGluZyBhIHdob2xlIHNsZXcgb2YgZXJyb3JzLCB0aGVuIGl0J3MKKyAgbGlrZWx5IHRoYXQgZWl0aGVyIHRoZSBNSUIgZmlsZXMgaGF2ZW4ndCBiZWVuIGluc3RhbGxlZCBhdCBhbGwsCisgIG9yIHRoZSBsaWJyYXJ5IGlzIGxvb2tpbmcgaW4gdGhlIHdyb25nIHBsYWNlLiAgIFNlZSB0aGUgcHJldmlvdXMKKyAgdHdvIHF1ZXN0aW9ucy4KKworCisKKzxhIG5hbWU9IldoYXRfYWJvdXRfX3VubGlua2VkX09JRF9fIj4KK1doYXQgYWJvdXQgInVubGlua2VkIE9JRCI/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIG1lYW5zIHRoYXQgdGhlIGxpYnJhcnkgaGFzIGJlZW4gYWJsZSB0byBmaW5kIHRoZSBNSUIgbW9kdWxlLAorICBhbmQgcGFyc2UgdGhlIGluZGl2aWR1YWwgb2JqZWN0cyBkZWZpbmVkIGluIGl0LCBidXQgaXMgaGF2aW5nIHByb2JsZW1zCisgIGxpbmtpbmcgdGhlbSB0b2dldGhlciBpbnRvIGEgY29uc2lzdGVudCB0cmVlLiAgSW4gcGFydGljdWxhciwgaXQKKyAgY2FuJ3QgZmluZCBhbiBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSB3aXRoaW4gdGhlIGJyYWNlcworICAoaS5lLiB0aGUgJ3h4eCcgaW4gJ3t4eHggOTl9JykuCisKKyAgICBUaGlzIGlzIHByb2JhYmx5IGR1ZSBlaXRoZXIgdG8gYSB0eXBvIGluIHRoaXMgbmFtZSAocmVtZW1iZXIgdGhhdAorICBuYW1lcyBhcmUgY2FzZSBzZW5zaXRpdmUsIHNvIGEgcmVmZXJlbmNlIHRvICd4eHgnIHdpbGwgKm5vdCogbWF0Y2gKKyAgYSBkZWZpbml0aW9uIG9mICdYeHgnKSwgb3IgZWxzZSB0aGUgbmFtZSBpcyBkZWZpbmVkIGluIGFub3RoZXIgTUlCCisgIGZpbGUsIGFuZCB0aGlzIGRlcGVuZGVuY3kgaXMgbWlzc2luZyBmcm9tIHRoZSBJTVBPUlQgY2xhdXNlIG9mIHRoaXMKKyAgTUlCIGZpbGUuCisKKworCis8YSBuYW1lPSJUaGVfcGFyc2VyX2RvZXNuX3RfaGFuZGxlX2NvbW1lbnRzX3Byb3Blcmx5X19XaHlfbm90XyI+CitUaGUgcGFyc2VyIGRvZXNuJ3QgaGFuZGxlIGNvbW1lbnRzIHByb3Blcmx5LiBXaHkgbm90PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIG1vc3QgbGlrZWx5IHJlYXNvbiBpcyB0aGF0IHRoZSBsaW5lIGluIHF1ZXN0aW9uIGNvbnRhaW5zIHR3bworICAob3IgbW9yZSkgc2VxdWVuY2VzIG9mIHBhaXJzIG9mIGRhc2hlcy4gIFRoaXMgaXMgb2Z0ZW4gdXNlZCB0byB0cnkKKyAgYW5kICJjb21tZW50IG91dCIgYW4gdW53YW50ZWQgbGluZSB0aGF0IGFscmVhZHkgY29udGFpbnMgYSBjb21tZW50OgorCisJLS0gICBicm9rZW4gOjo9IHsgbXlNSUIgMSB9ICAgLS0gVGhpcyBpc24ndCB3b3JraW5nIHlldAorCisgIFRoZSBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCBhIGNvbW1lbnQgY29udGludWVzIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgIFVuZm9ydHVuYXRlbHksIHRoaXMgYXNzdW1wdGlvbiBpcyBub3QgY29ycmVjdC4KKyAgICBBIGNvbW1lbnQgd2lsbCBjb250aW51ZSBlaXRoZXIgdG8gdGhlIGVuZCBvZiB0aGUgbGluZSwgb3IgdGhlIG5leHQKKyAgb2NjdXJhbmNlIG9mIGEgcGFpciBvZiBkYXNoZXMuICBUaHVzIGluIHRoaXMgY2FzZSwgdGhlIGRlZmluaXRpb24gb2YKKyAgImJyb2tlbiIgaXMgY29tbWVudGVkIG91dCAoYXMgaW50ZW5kZWQpIGJ1dCB0aGUgZm9sbG93aW5nIHRleHQgaXMKKyAgdHJlYXRlZCBhcyBwYXJ0IG9mIHRoZSBNSUIsIGFuZCB3aWxsIGdlbmVyYXRlIGFuIGVycm9yLgorCisgICAgQSBzaW1pbGFyIGVmZmVjdCBjYW4gYmUgb2J0YWluZWQgd2hlbiBhIGxpbmUgb2YgZGFzaGVzIGhhcyBiZWVuIHVzZWQKKyAgdG8gdHJ5IGFuZCBtYXJrIHNlcGFyYXRlIHBhcnRzIG9mIGEgTUlCIGZpbGUuCisKKyAgICBNb3N0IG9mIHRoZSBhcHBsaWNhdGlvbnMgaGF2ZSBhIGNvbW1hbmQtbGluZSBvcHRpb24gKC1QYykgd2hpY2ggd2lsbAorICB3b3JrIGFyb3VuZCB0aGlzIHByb2JsZW0gYnkgdHJlYXRpbmcgdGhlIHdob2xlIGxpbmUgYXMgYSBjb21tZW50LiAgQnV0CisgIHRoaXMgaXMgbm90IHN0cmljdGx5IGxlZ2FsLCBhbmQgdGhlIG9mZmVuZGluZyBNSUIgZmlsZSBzaG91bGQgcmVhbGx5IGJlCisgIGNvcnJlY3RlZC4KKworCisKKzxhIG5hbWU9Ikhvd19kb19JX3JlcGxhY2VfTUlCX3ZhbHVlc193aXRoX25ld19vbmVzXyI+CitIb3cgZG8gSSByZXBsYWNlIE1JQiB2YWx1ZXMgd2l0aCBuZXcgb25lcz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIE5ldC1TTk1QIHBhcnNlciBnZW5lcmFsbHkgdGFrZXMgdGhlIGZpcnN0IGRlZmluaXRpb24gaXQgc2VlcyBmb3IgZWFjaAorICBvYmplY3QgaW4gdGhlIE1JQiBoaWVyYXJjaHkuICAgRXZlbiBpZiB5b3Ugc3BlY2lmeSB5b3VyIGZpbGUgdG8gYmUgcmVhZAorICBmaXJzdCwgaWYgdGhlIElNUE9SVFMgY2xhdXNlcyByZWZlcmVuY2UgYSBNSUIgd2l0aCBjb21wZXRpbmcgb2JqZWN0cywKKyAgdGhvc2Ugb2JqZWN0cyB3aWxsIGJlIHBhcnNlZCBmaXJzdC4KKworICBXaGVuIHNwZWNpZnlpbmcgdGhlIFJlcGxhY2UgTUlCIGNvbW1hbmQtbGluZSBvcHRpb24gKC1QUiksIHRoZSBwYXJzZXIKKyAgd2lsbCB1c2UgZGVmaW5pdGlvbnMgc291cmNlZCBmcm9tIHRoZSBtb3N0IHJlY2VudCBNSUIgZmlsZS4KKyAgVGhlIHBhcnNlciB3aWxsIHJlcGxhY2UgTUlCIG9iamVjdHMgd2hlbiB0aGUgc3ViLWlkZW50aWZpZXIgYW5kIG5hbWUgbWF0Y2guCisKKyAgQ2F1dGlvbjogVXNpbmcgUmVwbGFjZSBNSUIsIHRoZXJlIGlzIE5PIGd1YXJhbnRlZSB0aGF0IHRoZSByZXN1bHRpbmcKKyAgTUlCIHRyZWUgd2lsbCBiZSBjb3JyZWN0LiAgT3RoZXIgTUlCIG9iamVjdHMgbWF0Y2hpbmcgdGhlIG5hbWUgYnV0CisgIG5vdCB0aGUgc3ViLWlkZW50aWZpZXIgd2lsbCBwZXJzaXN0LiAgU3ViLWhpZXJhcmNoaWVzIG1heSBiZSByZXBhcmVudGVkLgorICBJbiBwYXJ0aWN1bGFyLCByYW5kb20gYWNjZXNzIHNlYXJjaGluZyBbc2VlIG1hbiAxIHNubXBjbWRdCisgIG1heSBnaXZlIHVuZXhwZWN0ZWQgcmVzdWx0LgorICBUaGUgUmVwbGFjZSBNSUIgb3B0aW9uIGlzIGV4cGVyaW1lbnRhbCwgYnV5ZXIgYmV3YXJlLCBjYXJwZSBkaWVtLCBldGMuCisKKyAgSGVyZSBhcmUgYSBmZXcgY29uc2lkZXJhdGlvbnMgdG8gaGVscCB5b3Ugb2J0YWluIGdvb2QgcmVzdWx0cy4KKyAgVGhlc2UgaG9sZCB0cnVlIGV2ZW4gaWYgeW91IG5ldmVyIHVzZSB0aGUgUmVwbGFjZSBNSUIgZmVhdHVyZS4KKyAgWW91ciBzdWdnZXN0aW9ucyBmb3IgaW1wcm92ZW1lbnQgYXJlIHdlbGNvbWVkLgorCisgICAgMS4gVGhlIHBhcnNlciBzZWFyY2hlcyB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yaWVzIGFuZCBhdHRlbXB0CisgICAgICAgdG8gcGFyc2UgZXZlcnkgZmlsZSB3aG9zZSBwYXRoIGRvZXMgbm90IGJlZ2luIHdpdGggIi4iIChwZXJpb2QpLgorICAgICAgIFJlbW92ZSAob3IgcmVuYW1lKSBvbGRlciBNSUIgZmlsZXMgZnJvbSB0aGVzZSBkaXJlY3Rvcmllcy4KKyAgICAgICBSZW5hbWUgIlJFQURNRSIgdG8gIi5SRUFETUUiICwgZXRjLgorCisgICAgMi4gSGludDogdGhlIHBhcnNlcidzIG1vZHVsZSBsaXN0IGlzIGluIExJRk8gb3JkZXIuIFlvdSBtYXkgc2VlIGJldHRlcgorICAgICAgIHJlc3VsdHMgaWYgdGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBtb3N0IGNvcnJlY3QgTUlCIGZpbGVzIGlzCisgICAgICAgc3BlY2lmaWVkIGxhc3QgaW4gdGhlIE1JQkRJUlMgZW52aXJvbm1lbnQuCisKKyAgICAzLiBDb25zdHJhaW4gdGhlIHBhcnNlciB0byBub3QgcmVhZCBpbiBkZWZhdWx0IE1JQiBmaWxlcyBieSBzZXR0aW5nCisgICAgICAgdGhlIE1JQlMgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSB0byB0aGUgYXBwcm9wcmlhdGUgc2VwYXJhdG9yIGNoYXJhY3RlcgorICAgICAgIChzZW1pLWNvbG9uIG9uIHdpbjMyLCBjb2xvbiBldmVyeXdoZXJlIGVsc2UpLgorICAgICAgIFNldHRpbmcgdGhpcyB0byAiIiBtYXkgYWxzbyBoYXZlIHRoZSBzYW1lIGVmZmVjdC4KKworICAgIDQuIFRoZSBNSUJGSUxFUyBlbnZpcm9ubWVudCBjYW4gc3BlY2lmeSB0aGUgcGF0aCBvZiB0aGUgbmV3IE1JQiBmaWxlLgorCisgIFdpdGhpbiBhIHByb2dyYW0sIHRoZSBjYWxsOgorCSAvKiAgNC4yLnggICovCisJIGRzX3NldF9ib29sZWFuKERTX0xJQlJBUllfSUQsIERTX0xJQl9NSUJfUkVQTEFDRSwgMSB8IDApOworCisgIG9yLCBpZiB1c2luZyB0aGUgNS4wLnggc2VyaWVzIGNvZGU6CisJLyogIDUuMC54ICAqLworCW5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELAorCQkJICAgICAgIE5FVFNOTVBfRFNfTElCX01JQl9SRVBMQUNFLCAxIHwgMCk7CisKKyAgd2lsbCBlbmFibGUgb3IgZGlzYWJsZSB0aGUgUmVwbGFjZSBNSUIgZmVhdHVyZSByZXNwZWN0aXZlbHkuCisgIElmIHlvdSdyZSBoYXZpbmcgcHJvYmxlbXMgbG9hZGluZyBhIHBhcnRpY3VsYXIgTUlCIGZpbGUsIHRoaXMKKyAgY2FsbCBjYW4gYmUgdXNlZCB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZSwgYmVmb3JlIHVzaW5nIHJlYWRfbWliKCkgdG8KKyAgbG9hZCB0aGUgcmVxdWlyZWQgZmlsZSwgYW5kIHRoZW4gcmUtZW5hYmxpbmcgdGhlIFJlcGxhY2UgTUlCIGZlYXR1cmUuCisgIChvciB2aWNlIHZlcnNhLCBhcyBhcHByb3ByaWF0ZSkuCisKKworCis8YSBuYW1lPSJIb3dfY2FuX0lfZ2V0X21vcmVfaW5mb3JtYXRpb25fYWJvdXRfdGhlc2VfTUlCX2ZpbGVfcHJvYmxlbXNfIj4KK0hvdyBjYW4gSSBnZXQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBNSUIgZmlsZSBwcm9ibGVtcz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZSBjb21tYW5kICdzbm1wdHJhbnNsYXRlJyBpcyB1c2VkIHRvIHRyYW5zbGF0ZSBiZXR3ZWVuIG51bWVyaWMKKyAgYW5kIHN5bWJvbGljIGZvcm1zIG9mIE9JRHMuICBJdCB1c2VzIHRoZSBzYW1lIHJvdXRpbmVzIGFzIHRoZQorICAnYWN0aXZlJyBjb21tYW5kcywgYnV0IGRvZXMgbm90IHJlbHkgb24gY29tbXVuaWNhdGluZyBzdWNjZXNzZnVsbHkKKyAgd2l0aCBhIG5ldHdvcmsgbWFuYWdlbWVudCBhZ2VudC4gIEFzIHN1Y2gsIGl0IGlzIGEgdXNlZnVsIHRvb2wKKyAgZm9yIGlkZW50aWZ5aW5nIHByb2JsZW1zIHdpdGggcmVhZGluZyBpbiBNSUIgZmlsZXMuCisKKyAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgbWF5IGJlIHVzZWZ1bCBpbgorICBpZGVudGlmeWluZyBwcm9ibGVtczoKKwktUHcgIHdhcm5zIGFib3V0IGNvbmZsaWN0aW5nIHN5bWJvbHMKKwktUFcgIHByaW50cyBtb3JlIHZlcmJvc2Ugd2FybmluZ3MgYWJvdXQgb3RoZXIgcHJvYmxlbXMgYXMgd2VsbAorCQkoaW4gYm90aCBjYXNlcywgaWdub3JlIHRoZSAneG1hbGxvYycgcmVwb3J0cykKKwktVCAgIHByb3ZpZGVzIHN1Yi1vcHRpb25zIGZvciB2YXJpb3VzIHZpZXdzIG9mIHRoZXNlIGVudHJpZXMKKworICBUaGVyZSBhcmUgb3RoZXIgJy1QJyBvcHRpb25zIHRvIGNvbnRyb2wgdmFyaW91cyBhc3BlY3RzIG9mIE1JQiBwYXJzaW5nLgorICBTZWUgdGhlICdzbm1wdHJhbnNsYXRlKDEpJyBhbmQgJ3NubXBjbWQoMSknIG1hbiBwYWdlcyBmb3IgbW9yZSBkZXRhaWxzLAorICBvciB0aGUgdHV0b3JpYWwgYXQKKwlodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01L2NvbW1hbmRzL3NubXB0cmFuc2xhdGUuaHRtbAorCisKKworPGEgbmFtZT0iV2hhdF9zX3RoaXNfYWJvdXRfX3Rvb19tYW55X2ltcG9ydGVkX3N5bWJvbHNfXyI+CitXaGF0J3MgdGhpcyBhYm91dCAidG9vIG1hbnkgaW1wb3J0ZWQgc3ltYm9scyI/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBBbnkgTUlCIGZpbGUgc3RhcnRzIHdpdGggYW4gKG9wdGlvbmFsKSBsaXN0IG9mIGlkZW50aWZpZXJzIHRoYXQKKyAgaXQgImltcG9ydHMiIGZyb20gb3RoZXIgZmlsZXMuICBUaGUgcGFyc2VyIGltcGxlbWVudHMgdGhpcyB1c2luZworICBhIGZpeGVkIHNpemUgYnVmZmVyIHRvIGhvbGQgdGhlIGltcG9ydCBpbmZvcm1hdGlvbi4KKyAgICBUaGVyZSBhcmUgdHdvIGNpcmN1bXN0YW5jZXMgaW4gd2hpY2ggdGhpcyBjYW4gcmVzdWx0IGluIHRoZQorICBlcnJvciBtZXNzYWdlIHNob3duIGFib3ZlLgorCisgICAgRmlyc3RseSwgaWYgdGhlIE1JQiBmaWxlIHJlZmVycyB0byBhbiB1bnVzdWFsbHkgbGFyZ2UgbnVtYmVyCisgIG9mIGV4dGVybmFsIGlkZW50aWZpZXJzLiAgSGFuZGxpbmcgdGhpcyBjYXNlIHJlcXVpcmVzIGEgKHRyaXZpYWwpCisgIHBhdGNoIHRvIHRoZSBwYXJzaW5nIGNvZGUuICBDb250YWN0IHRoZSBjb2RlcnMgbGlzdCBmb3IgYWR2aWNlLgorICAgICAoVGhpcyBpcyBleHRyZW1lbHkgcmFyZSAtIHRoZSBvbmx5IGV4YW1wbGUgdGhhdAorICAgICAgd2UndmUgY29tZSBhY3Jvc3MgaXMgdGhlIENhYmxldHJvbiBUcmFwIE1JQikuCisKKyAgICBNdWNoIG1vcmUgY29tbW9uIGlzIGEgc3ludGF4IGVycm9yIGluIHRoZSBJTVBPUlRTIGNsYXVzZSBvZiB0aGUKKyAgTUlCIGZpbGUgaW4gcXVlc3Rpb24uICBJbiBwYXJ0aWN1bGFyLCBjaGVjayB0aGF0IHRoaXMgZW5kcyBpbiBhCisgIHNlbWljb2xvbiwgYmVmb3JlIGdvaW5nIG9uIHRvIHRoZSBtYWluIGRlZmluaXRpb24gc2VjdGlvbi4KKyAgCisKKworPGEgbmFtZT0iQUdFTlQiPgorQUdFTlQKKz09PT09CisKKzxhIG5hbWU9IldoYXRfTUlCc19hcmVfc3VwcG9ydGVkXyI+CitXaGF0IE1JQnMgYXJlIHN1cHBvcnRlZD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIGZvbGxvd2luZyBNSUJzIGFyZSBzdXBwb3J0ZWQgKGF0IGxlYXN0IGluIHBhcnQgYW5kIG9uIHNvbWUgc3lzdGVtcyk6CisKKwktIE1JQi0yICBHZW5lcmFsIG5ldHdvcmsgc3RhdGlzdGljcyAoUkZDIDEyMTMpCisJLSBVQ0QgYWdlbnQgZXh0ZW5zaW9ucworCQkocHJvY2Vzc2VzLCBkaXNrcywgbWVtb3J5LCBsb2FkIGF2ZXJhZ2UsCisJCSBzaGVsbCBjb21tYW5kcywgZXJyb3IgaGFuZGxpbmcpCisJLSBIb3N0IFJlc291cmNlcyAoUkZDIDE1MTQgYW5kIDI3OTApCisJLSBTTk1QdjMgTUlCUyAoUkZDcyAyNTcxLTYpCisKKyAgVGhlIFNOTVB2MiBQYXJ0eSBhbmQgTWFuYWdlci10by1NYW5hZ2VyIE1JQnMgKFJGQ3MgMTQ0NyAmIDE0NTEpIGhhdmUgYmVlbgorICB3aXRoZHJhd24uCisKKworCis8YSBuYW1lPSJXaGF0X3Byb3RvY29sc19hcmVfc3VwcG9ydGVkXyI+CitXaGF0IHByb3RvY29scyBhcmUgc3VwcG9ydGVkPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZSBhZ2VudCBzdXBwb3J0cyBhbGwgdGhyZWUgY3VycmVudCB2ZXJzaW9ucyBvZiBTTk1QICh2MSwgdjJjIGFuZCB2MyksCisgIG92ZXIgYm90aCBVRFAgYW5kIFRDUCB0cmFuc3BvcnRzLCBhcyB3ZWxsIGFzIGEgU01VWCAoUkZDIDEyMjcpIG1hc3RlcgorICBhZ2VudCwgQWdlbnRYIChSRkMgMjI1NyApIGluIGJvdGggbWFzdGVyIGFuZCBzdWJhZ2VudCByb2xlcywgYW5kIFNOTVAKKyAgcHJveHlpbmcuCisKKworCis8YSBuYW1lPSJIb3dfZG9fSV9jb25maWd1cmVfdGhlX2FnZW50XyI+CitIb3cgZG8gSSBjb25maWd1cmUgdGhlIGFnZW50PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoYXQgZGVwZW5kcyBvbiB3aGF0IHlvdSB3YW50IGl0IHRvIGRvLiAgU2VlIHRoZSBzbm1wZC5jb25mKDUpIG1hbnVhbAorICBwYWdlIGZvciB0aGUgcG9zc2liaWxpdGllcy4KKworICBZb3UgY2FuIGFsc28gcnVuIHRoZSAic25tcGNvbmYiIHBlcmwgc2NyaXB0IHRvIGhlbHAgeW91IGNyZWF0ZSB0aGlzCisgIGZpbGUuICBTdGFydCBvZmYgd2l0aCAnc25tcGNvbmYgLWcgYmFzaWNfc2V0dXAnIHRvIGdldCB5b3UgZ29pbmcuCisKKworCis8YSBuYW1lPSJIb3dfZG9fSV9hZGRfYV9NSUJfdG9fdGhlX2FnZW50XyI+CitIb3cgZG8gSSBhZGQgYSBNSUIgdG8gdGhlIGFnZW50PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSG93IGRvIEkgYWRkIGZ1bmN0aW9uYWxpdHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFdoaWxlIHNpbXBseSBhZGRpbmcgYSBmaWxlIHRvIHRoZSBNSUIgZGlyZWN0b3J5IChhbmQgcG9zc2libHkgdHdlYWtpbmcKKyAgdGhlIGxpc3Qgb2YgTUlCcyB0byBsb2FkKSBpcyBzdWZmaWNpZW50IGZvciB0aGUgdG9vbHMsIHVuZm9ydHVuYXRlbHkKKyAgZXh0ZW5kaW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBhZ2VudCB0byBpbmNsdWRlIHRoaXMgaXMgbm90IHNvIHNpbXBsZS4KKyAgSW4gZmFjdCwgdGhlIGFnZW50IG1ha2VzIGxpdHRsZSBvciBubyB1c2Ugb2YgdGhlc2UgZmlsZXMsIGFuZCB3aWxsIHdvcmsKKyAgcXVpdGUgaGFwcGlseSB3aXRob3V0IHRoZW0uICBBbGwgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzeW50YXggYW5kCisgIHNjb3BlIG9mIHRoZSB2YXJpYWJsZXMgc3VwcG9ydGVkIGlzIGhhcmR3aXJlZCBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbgorICBvZiB0aGUgYWdlbnQuCisKKyAgVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGFsdGVybmF0aXZlIHdheXMgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgZm9yIGEgbmV3CisgIE1JQiB0byB0aGUgYWdlbnQuCisKKyAgRmlyc3RseSwgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgYWdlbnQgZGlzdHJpYnV0aW9uIGFscmVhZHkgaW5jbHVkZXMKKyAgdGhlIGRlc2lyZWQgZnVuY3Rpb25hbGl0eSwgYnV0IHRoaXMgaGFzIHNpbXBseSBub3QgYmVlbiBjb25maWd1cmVkIGluCisgIHRvIHRoZSBydW5uaW5nIHZlcnNpb24uICBUaGlzIGlzIGRvbmUgdXNpbmcgdGhlIGNvbmZpZ3VyZSBvcHRpb24KKwkJLS13aXRoLW1pYi1tb2R1bGVzPSJsaXN0IgorICAod2hlcmUgImxpc3QiIGlzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgbW9kdWxlcyB0byBpbmNsdWRlKSB0aGVuCisgIHJlY29tcGlsaW5nIHRoZSBhZ2VudC4KKyAgTm90ZSB0aGF0IHNvbWUgZnVuY3Rpb25hbGl0eSBjb25jZXJuZWQgd2l0aCBtb25pdG9yaW5nIGFuZCBtYW5hZ2luZworICB1bml4IGhvc3RzIGlzIGluY2x1ZGVkIGluIHRoZSBVQ0QgZXh0ZW5zaW9uIG1vZHVsZXMsIHdoaWNoIGFyZSBsb2NhdGVkCisgIHdpdGhpbiB0aGUgJ3ByaXZhdGUnIGJyYW5jaCBvZiB0aGUgTUlCIHRyZWUuICBUaGlzIGlzIGNvdmVyZWQgaW4gYSBsYXRlcgorICBxdWVzdGlvbiBpbiB0aGlzIEZBUS4KKworICBTZWNvbmRseSwgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBhZ2VudCB0byBydW4gY29tbWFuZHMgb3Igc2hlbGwgc2NyaXB0cworICBpbiByZXNwb25zZSB0byBxdWVyaWVzLiAgVGhlc2UgY2FuIG9idGFpbiBhbmQgcmVwb3J0IHRoZSBuZWNlc3NhcnkKKyAgaW5mb3JtYXRpb24sIG9yIHBlcmZvcm0gYWN0aW9ucyBhcyByZXF1aXJlZC4KKyAgRGV0YWlsZWQgaW5mb3JtYXRpb24gYW5kIGV4YW1wbGVzIGFyZSBwcm92aWRlZCBpbiB0aGUgc25tcGQoOCkgYW5kCisgIHNubXBkLmNvbmYoNSkgbWFudWFsIHBhZ2VzLCBhbmQgdGhlIEVYQU1QTEUuY29uZiBmaWxlLgorICBUaGlzIGlzIGtub3duIGFzICJwYXNzLXRocm91Z2giIHN1cHBvcnQuCisKKyAgVGhpcmRseSwgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIGxpbmsgYW5vdGhlciBhZ2VudCAod2hpY2ggYWxyZWFkeQorICBzdXBwb3J0cyB0aGUgZGVzaXJlZCBNSUIpLCBhcyBhICJzdWJhZ2VudCIgb2YgdGhlIE5ldC1TTk1QIG1hc3RlcgorICAob3IgdmljZSB2ZXJzYSkuICBUaGUgcG9zc2liaWxpdGllcyBoZXJlIGFyZSBTTVVYLCBBZ2VudFggb3IgcHJveGllZAorICBTTk1QIChzZWUgdGhlIG5leHQgcXVlc3Rpb24gYnV0IG9uZSkuCisKKyAgRmluYWxseSwgdGhlIGFnZW50IGl0c2VsZiBjYW4gYmUgZXh0ZW5kZWQgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIE1JQgorICBncm91cHMsIGJ5IHdyaXRpbmcgdGhlIG5lY2Vzc2FyeSBDIGNvZGUsIGFuZCBpbmNsdWRpbmcgdGhpcyB3aXRoaW4KKyAgdGhlIG1haW4gYWdlbnQgLSBlaXRoZXIgc3RhdGljYWxseSBjb21waWxlZCBpbiwgb3IgZHluYW1pY2FsbHkgbG9hZGVkLgorICBUaGlzIGlzIGNvdmVyZWQgZnVydGhlciBpbiB0aGUgbmV4dCBzZWN0aW9uLgorCisgICAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHZpc2libGUgZGlmZmVyZW5jZSBiZXR3ZWVuICdwYXNzLXRocm91Z2gnCisgIE1JQiBzdXBwb3J0LCBzdWJhZ2VudHMsIGFuZCBtb2R1bGVzIGltcGxlbWVudGVkIHdpdGhpbiB0aGUgbWFpbiBhZ2VudAorICBpdHNlbGYuIFRvb2xzIHF1ZXJ5aW5nIHRoZSBhZ2VudCB3aWxsIHNlZSBhIHNpbmdsZSBNSUIgc3RydWN0dXJlLgorIAorCisKKzxhIG5hbWU9IldoYXRfc190aGVfZGlmZmVyZW5jZV9iZXR3ZWVuX19leGVjX19fX3NoX19hbmRfX3Bhc3NfXyI+CitXaGF0J3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAnZXhlYycsICdzaCcgYW5kICdwYXNzJz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAnZXhlYycgd2lsbCBmb3JrIG9mZiB0aGUgc3BlY2lmaWVkIGNvbW1hbmQgYW5kIHJldHVybiB0aGUgZXhpdCBzdGF0dXMKKyAgYW5kL29yIHRoZSBvdXRwdXQuICBBcmd1bWVudHMgYXJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgY29tbWFuZC4KKworICAgICdzaCcgaXMgc2ltaWxhciwgYnV0IGludm9rZXMgYSBzaGVsbCB0byBydW4gdGhlIGNvbW1hbmQgbGluZSBnaXZlbi4KKyAgVGhpcyBtZWFucyB0aGF0IHF1b3RlZCBhcmd1bWVudHMgd2lsbCBiZSByZWNvZ25pc2VkIGFzIHN1Y2gsIGFuZCBhbHNvCisgIGFsbG93cyByZWRpcmVjdGlvbiwgYW5kIG90aGVyIHNpbWlsYXIgc2hlbGwgaW50ZXJwcmV0YXRpb24uCisKKyAgTmVpdGhlciBvZiB0aGVzZSBtZWNoYW5pc21zIHJlcXVpcmUgdGhlIGNvbW1hbmQgdG8gaGF2ZSBhbnkga25vd2xlZGdlCisgIG9mIHRoZSBmYWN0IHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBpbiB0aGlzIG1hbm5lci4gIE5vdGUgdGhhdCByZXR1cm4KKyAgdmFsdWVzIGFyZSBjYWNoZWQgd2l0aGluIHRoZSBhZ2VudCBmb3IgMzAgc2Vjb25kcywgcmF0aGVyIHRoYW4gaW52b2tpbmcKKyAgdGhlIGNvbW1hbmQgZm9yIGV2ZXJ5IHJlcXVlc3QuCisKKworICAgICdwYXNzJyBpcyBhIG1vcmUgZ2VuZXJhbCBtZWNoYW5pc20gZm9yIGV4dGVuZGluZyB0aGUgYWdlbnQsIGFuZCB0aGUKKyAgY29tbWFuZCBnaXZlbiB3aWxsIGJlIGludm9rZWQgZm9yIGFueSByZXF1ZXN0IHdpdGhpbiB0aGUgc3BlY2lmaWMgTUlCCisgIHN1YnRyZWUuICBEZXRhaWxzIG9mIHByZWNpc2VseSBob3cgdGhpcyBjb21tYW5kIHdpbGwgYmUgY2FsbGVkIGluCisgIHZhcmlvdXMgY2lyY3Vtc3RhbmNlcyBpcyBnaXZlbiBpbiB0aGUgJ3NubXBkLmNvbmYoNSknIG1hbiBwYWdlLgorCisgICAgJ3Bhc3MtcGVyc2lzdCcgaXMgc2ltaWxhciwgYnV0IHRoZSBjb21tYW5kIHdpbGwgY29udGludWUgcnVubmluZworICBldmVuIG9uY2UgdGhlIGluaXRpYWwgcmVxdWVzdCBoYXMgYmVlbiBhbnN3ZXJlZC4KKworICBTZWUgJ3NubXBkLmNvbmYoNSknIGZvciBtb3JlIGRldGFpbHMuCisKKyAgCisKKzxhIG5hbWU9IldoYXRfc190aGVfZGlmZmVyZW5jZV9iZXR3ZWVuX0FnZW50WF9fU01VWF9hbmRfcHJveGllZF9TTk1QXyI+CitXaGF0J3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBBZ2VudFgsIFNNVVggYW5kIHByb3hpZWQgU05NUD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBBbGwgdGhyZWUgYXJlIHByb3RvY29scyB0aGF0IGNhbiBiZSB1c2VkIHRvIG1ha2UgdHdvIG9yIG1vcmUgYWdlbnRzCisgIGFwcGVhciBhcyBvbmUgdG8gdGhlIHF1ZXJ5aW5nIGFwcGxpY2F0aW9uLiAgSW4gZWFjaCBjYXNlLCBvbmUgYWdlbnQKKyAgdGFrZXMgdGhlIHJvbGUgb2YgIm1hc3RlciIsIGFuZCBkZWxlZ2F0ZXMgcmVxdWVzdHMgdG8gb25lIG9mIHRoZSBvdGhlcnMKKyAgYXMgYW5kIHdoZXJlIHRoaXMgaXMgYXBwcm9wcmlhdGUuICBUaGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVtIG1haW5seQorICByZWxhdGUgdG8gaG93IGRhdGEgaXMgcmVwcmVzZW50ZWQsIGFuZCB0aGUgbWVjaGFuaXNtcyBmb3IgY29tbXVuaWNhdGlvbgorICBiZXR3ZWVuIG1hc3RlciBhbmQgc3ViYWdlbnRzLgorCisgICAgU01VWCBhbmQgcHJveHkgU05NUCBib3RoIGVzc2VudGlhbGx5IHVzZSB0aGUgc3RhbmRhcmQgU05NUCBwYWNrZXQgZm9ybWF0LgorICBUaGUgbWFpbiBkaWZmZXJlbmNlIGlzIHRoYXQgYSBwcm94eSBTTk1QIHN1YmFnZW50IG5lZWQgbm90IGJlIGF3YXJlIHRoYXQKKyAgaXQgaXMgYWN0aW5nIGluIHN1Y2ggYSByb2xlLiAgSXQgdHlwaWNhbGx5IGxpc3RlbnMgb24gYSBub24tc3RhbmRhcmQgcG9ydCwKKyAgYW5kIHNpbXBseSByZWNlaXZlcyByZXF1ZXN0cyBhcyB1c3VhbCwgZm9yd2FyZGVkIGZyb20gdGhlIG1hc3RlciBhZ2VudC4gCisgIFRoZSBtYWluIGlzc3VlIHRvIGJlIGF3YXJlIG9mIGlzIHRoYXQgc3VjaCByZXF1ZXN0cyB3aWxsIHVzdWFsbHkgYXBwZWFyCisgIHRvIGNvbWUgZnJvbSB0aGUgbG9jYWwgaG9zdCwgYW5kIHRoaXMgbWF5IGFmZmVjdCBob3cgdGhlIGFjY2VzcyBjb250cm9sCisgIG1lY2hhbmlzbXMgbmVlZCB0byBiZSBzZXQgdXAuCisKKyAgICBTTVVYIHVzZXMgYSBzaW1pbGFyIHBhY2tldCBmb3JtYXQsIGJ1dCB0aGUgc3ViYWdlbnQgInJlZ2lzdGVycyIgd2l0aAorICB0aGUgbWFzdGVyIGFnZW50LCBwcm92aWRpbmcgYSBzdWl0YWJsZSBwYXNzd29yZC4gIFRoZSBOZXQtU05NUCAoYW5kIFVDRCkKKyAgYWdlbnQgaW5jbHVkZXMgdGhlIHBvc3NpYmlsaXR5IG9mIGFjdGluZyBhcyBhIFNNVVggbWFzdGVyIGFnZW50LCBidXQgdGhlCisgIHN1aXRlIGRvZXMgbm90IGluY2x1ZGUgYSBzdWJhZ2VudCBBUEkuICAgTm90ZSB0aGF0IHRoZSBTTVVYIHByb3RvY29sIGhhcworICBlc3NlbnRpYWxseSBiZWVuIHN1cGVyY2VkZWQgYnkgQWdlbnRYLCBidXQgaXMgc3RpbGwgcHJvdmlkZWQgaW4gb3JkZXIgdG8KKyAgc3VwcG9ydCBleGlzdGluZyBTTVVYIHN1YmFnZW50cy4KKyAgICBTZWUgdGhlIGZpbGUgJ2FnZW50L21pYmdyb3VwL1JFQURNRS5zbXV4JyBmb3IgZGV0YWlscy4KKworICAgIEFnZW50WCB1c2VzIGEgbW9yZSBjb21wYWN0IChhbmQgc2ltcGxlcikgcGFja2V0IGZvcm1hdCwgd2l0aCBhIHJpY2hlcgorICByYW5nZSBvZiBhZG1pbmlzdHJhdGl2ZSBjb21tYW5kcywgYW5kIHByb3ZpZGVzIGEgbW9yZSBmbGV4aWJsZSBhbmQgcmVsaWFibGUKKyAgZXh0ZW5zaW9uIG1lY2hhbmlzbS4gIFRoZSBOZXQtU05NUCBhZ2VudCBjYW4gYmUgdXNlZCBpbiBib3RoIG1hc3RlciBhbmQKKyAgc3ViYWdlbnQgcm9sZXMsIGFuZCB0aGUgYWdlbnQgbGlicmFyeSBjYW4gYWxzbyBiZSB1c2VkIHRvIGVtYmVkIGFuIEFnZW50WAorICBzdWJhZ2VudCB3aXRoaW4gYW5vdGhlciBhcHBsaWNhdGlvbi4KKyAgICBTZWUgdGhlIGZpbGUgJ1JFQURNRS5hZ2VudHgnIGZvciBkZXRhaWxzLgorCisgIE5vdGUgdGhhdCBzdXBwb3J0IGZvciBTTVVYIGlzIG5vdCBjb25maWd1cmVkIGluIGJ5IGRlZmF1bHQuICBZb3Ugd2lsbAorICBuZWVkIHRvIHJ1biBjb25maWd1cmUgd2l0aCB0aGUgb3B0aW9uCisKKwkJLS13aXRoLW1pYi1tb2R1bGVzPXNtdXgKKworICBTdGFydGluZyBmcm9tIHJlbGVhc2UgNC4yLjEsIEFnZW50WCBzdXBwb3J0IGlzIG5vdyBpbmNsdWRlZCBieSBkZWZhdWx0LAorICBidXQgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBhY3RpdmF0ZWQgaW4gdGhlIG1hc3RlciBhZ2VudC4gIERvIHRoaXMgYnkKKyAgYWRkaW5nIHRoZSBsaW5lCisKKwkJbWFzdGVyIGFnZW50eAorCisgIHRvIHRoZSBzbm1wZC5jb25mIGZpbGUgYmVmb3JlIHN0YXJ0aW5nIHRoZSBhZ2VudC4gIE5vdGUgdGhhdCB0aGVyZSBhcmUKKyAgYSBudW1iZXIgb2Yga25vd24gcHJvYmxlbXMgd2l0aCB0aGUgQWdlbnRYIHN1cHBvcnQgaW4gdGhlIDQueCBsaW5lLCBhbmQKKyAgdGhpcyBzaG91bGQgbm90IGJlIHVzZWQgb24gcHJvZHVjdGlvbiBzeXN0ZW1zLiAgVGhlIDUuMCBBZ2VudFggc3VwcG9ydAorICBoYXMgYmVlbiBzaWduaWZpY2FudGx5IGltcHJvdmVkLCBhbmQgcHJvZHVjdGlvbiB1c2UgaXMgbGVzcyBmb29saGFyZHkuCisgICAgU2VlIFJFQURNRS5hZ2VudHggZm9yIGRldGFpbHMuCisKKworCis8YSBuYW1lPSJXaGF0X2Fib3V0X19kbG1vZF9fX193aGF0X3NfdGhhdF9hYm91dF8iPgorV2hhdCBhYm91dCAnZGxtb2QnIC0gd2hhdCdzIHRoYXQgYWJvdXQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIER5bmFtaWNhbGx5IGxvYWRlZCBtb2R1bGVzIGFyZSBhIG1lYW5zIG9mIGluY2x1ZGluZyBhIE1JQiBpbXBsZW1lbnRhdGlvbgorICBtb2R1bGUgd2l0aGluIHRoZSBtYWluIFNOTVAgYWdlbnQgKG9yIGFuIEFnZW50WCBzdWJhZ2VudCkgd2l0aG91dCBuZWVkaW5nCisgIHRvIHJlLWNvbXBpbGUgYW5kIHJlLWxpbmsgdGhlIGFnZW50IGJpbmFyeS4gIEluc3RlYWQsIGRldGFpbHMgb2YgdGhlCisgIG1vZHVsZShzKSB0byBsb2FkIGFyZSBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgYW5kIHRoZSBhZ2VudAorICBsb2NhdGVzIHRoZSBmaWxlcyBsaXN0ZWQsIGFuZCBtZXJnZXMgdGhlbSBpbiBhdCBydW4gdGltZS4KKworICBTZWUgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvdHV0b3JpYWwtNS90b29sa2l0L2RsbW9kLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCisKKzxhIG5hbWU9IldoaWNoX3Nob3VsZF9JX3VzZV8iPgorV2hpY2ggc2hvdWxkIEkgdXNlPworLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhhdCdzIGEgZGlmZmljdWx0IHF1ZXN0aW9uLgorCisgIENvbXBhcmluZyB0aGUgdGhyZWUgcHJvdG9jb2xzLCBTTk1QIHdhcyBub3Qgb3JpZ2luYWxseSBkZXNpZ25lZAorICBhcyBhbiBpbnRlcm5hbCBzdWJhZ2VudC1jb21tdW5pY2F0aW9uIHByb3RvY29sLCBhbmQgdGhlcmUgYXJlCisgIGNlcnRhaW4gYXJjaGl0ZWN0dXJhbCBsaW1pdGF0aW9ucyB0byBTTVVYLCB3aGljaCB3ZXJlIGFkZHJlc3NlZAorICBhcyBwYXJ0IG9mIHRoZSBkZXNpZ24gb2YgQWdlbnRYLiAgVGhlc2UgaW5jbHVkZSBzdWNoIGFzcGVjdHMgYXMKKyAgcmVsaWFibGUgaGFuZGxpbmcgb2YgU0VUIHJlcXVlc3RzIChwYXJ0aWN1bGFybHkgaW4gdGhlIGZhY2Ugb2YKKyAgZmFpbHVyZXMpLCBhIGNvbW1vbiB2YWx1ZSBmb3Igc3lzVXBUaW1lLCBhbmQgYSBtZWNoYW5pc20gZm9yCisgIHNoYXJpbmcgdGFibGVzIGFjcm9zcyBtdWx0aXBsZSBzdWJhZ2VudHMuCisgICAgU28gZnJvbSBhIHB1cmVseSBmdW5jdGlvbmFsIHBvaW50IG9mIHZpZXcsIEFnZW50WCBpcyB0aGUgbW9zdAorICBhcHByb3ByaWF0ZSBjaG9pY2UgZm9yIHN1YmFnZW50IGNvbW11bmljYXRpb24uCisKKyAgSW4gdGVybXMgb2YgaW1wbGVtZW50YXRpb24sIFNNVVggaXMgdGhlIG1vc3QgbWF0dXJlIG9mIHRoZSB0aHJlZSwKKyAgYnV0IGlzIG5vIGxvbmdlciBiZWluZyBhY3RpdmVseSBtYWludGFpbmVkLiAgVGhlIG9yaWdpbmFsIGF1dGhvcgorICBoYXMgbW92ZWQgb24sIGFuZCB0aGUgY3VycmVudCBkZXZlbG9wZXJzIGRvbid0IHVzZSB0aGlzIGZhY2lsaXR5LgorICBJdCBhbHNvIG9ubHkgaW5jbHVkZXMgbWFzdGVyIGFnZW50IHN1cHBvcnQgLSB0aGUgcGFja2FnZSBkb2VzIG5vdAorICBwcm92aWRlIGEgU01VWCBzdWItYWdlbnQgQVBJLgorICAgIFRoZSBBZ2VudFggc3VwcG9ydCBpbiB0aGUgNC54IGxpbmUgaGFzIGEgbnVtYmVyIG9mIGtub3duIHByb2JsZW1zLAorICBhbmQgaXMgbm90IHN1aXRhYmxlIGZvciB1c2UgaW4gZnJvbnQtbGluZSBzaXR1YXRpb25zICh0aG91Z2ggaXQncworICBwcm9iYWJseSBzdWZmaWNpZW50bHkgc3RhYmxlIGFuZCBmdW5jdGlvbmFsIGZvciBzaW1wbGUgZGF5LXRvLWRheQorICB1c2UpLiAgVGhlIDUuMCBhZ2VudCBoYXMgc2VlbiBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBkZXZlbG9wbWVudCwKKyAgYW5kIGlzIGEgbXVjaCBtb3JlIHJlbGlhYmxlIGJlYXN0LgorICAgIEJlYXIgaW4gbWluZCB0aGF0IHRoZSBBZ2VudFggYW5kIHByb3h5IFNOTVAgaW1wbGVtZW50YXRpb25zIGFyZQorICByZWxhdGl2ZWx5IG5ldyBjb2RlLCBzbyBoYXZlIG5vdCByZWNlaXZlZCB0aGUgc2FtZSBsZXZlbCBvZiBhY3RpdmUKKyAgc2VydmljZSB0aGF0IHRoZSBjb3JlIGFnZW50IGhhcy4gIEJ1dCB3aXRoIHRoYXQgY2F2ZWF0LCBlaXRoZXIgb2YKKyAgdGhlc2Ugb3B0aW9ucyBzaG91bGQgYmUgc3VpdGFibGUgZm9yIG1vc3QgdXNlLgorCisgICAgVGhpcyBkZWNpc2lvbiB3aWxsIHByb2JhYmx5IGJlIGRpY3RhdGVkIGJ5IGV4dGVybmFsIGNvbnNpZGVyYXRpb25zCisgIChpLmUuIHRoZSBvdGhlciBhZ2VudHMgeW91IG5lZWQgdG8gY29tYmluZSB3aXRoKS4gIElkZWFsbHksIHlvdQorICBzaG91bGQgYmUgbG9va2luZyB0b3dhcmRzIEFnZW50WCwgYnV0IHRoaXMgaXMgbm90IGFsd2F5cyBwb3NzaWJsZS4KKworICBEeW5hbWljYWxseSBsb2FkZWQgbW9kdWxlcyBzZXJ2ZSBhIHNvbWV3aGF0IGRpZmZlcmVudCBwdXJwb3NlLAorICBhbmQgYXJlIHB1cmVseSBjb25jZXJuZWQgd2l0aCBob3cgdGhlIGluZGl2aWR1YWwgTUlCIGltcGxlbWVudGF0aW9uCisgIG1vZHVsZXMgYXJlIGxvY2F0ZWQuICBUaGVzZSBjYW4gYmUgY29tYmluZWQgd2l0aCBlaXRoZXIgYSAicHVyZSBTTk1QIgorICBtb2RlbCwgYW4gQWdlbnRYIHN1YmFnZW50IG9yIGEgcHJveGllZCBTTk1QIGFnZW50LiAgVGhleSB3aWxsIGludm9sdmUKKyAgYSBzbGlnaHRseSBncmVhdGVyIGxvYWQgb24gYWdlbnQgc3RhcnQtdXAgKHBsdXMgYW4gZXh0cmEgbGV2ZWwgb2YKKyAgY29tcGxleGl0eSBpZiB0aGluZ3MgZ28gd3JvbmcpIC0gYmFsYW5jZWQgYWdhaW5zdCB0aGUgYWJpbGl0eSB0bworICBhdm9pZCByZS1jb21waWxpbmcgYW5kIHJlLWxpbmtpbmcgYSB3b3JraW5nIGJpbmFyeS4KKworICAgIE5vdGUgdGhhdCBhcyBmYXIgYXMgaW5kaXZpZHVhbCBNSUIgbW9kdWxlcyBhcmUgY29uY2VybmVkLCB0aGUKKyAgcHJvdG9jb2wgdXNlZCB0byB0cmFuc3BvcnQgdGhlIHJlcXVlc3QgaXMgbW9yZSBvciBsZXNzIGlycmVsZXZhbnQuCisgIFRoZSBzYW1lIGluZm9ybWF0aW9uIGlzIGJlaW5nIHJlcXVlc3RlZCAob3Igc2V0KSBlYWNoIHRpbWUsIHNvCisgIGEgTUlCIG1vZHVsZSBvdWdodCB0byBiZSBwcm90b2NvbC1pbmRlcGVuZGVudC4gIFRoaXMgd2FzIG9uZSBvZgorICB0aGUgZGVzaWduIGFpbXMgb2YgdGhlIEFnZW50WCBzdXBwb3J0LCBhbmQgdGhlIGV4YWN0IHNhbWUgbW9kdWxlCisgIGNvZGUgY2FuIGJlIGluY2x1ZGVkIGFzIHBhcnQgb2YgYSBwdXJlLVNOTVAgbWFzdGVyIGFnZW50LCBvciBhbgorICBBZ2VudFggc3ViYWdlbnQsIGVpdGhlciBjb21waWxlZCBpbiBvciBkeW5hbWljYWxseSBsb2FkZWQgd2l0aCBubworICBtb2RpZmljYXRpb25zIG5lZWRlZCB0byB0aGUgTUlCIG1vZHVsZSBjb2RlIGl0c2VsZi4KKworCisKKzxhIG5hbWU9IkNhbl9JX3VzZV9BZ2VudFhfd2hlbl9ydW5uaW5nX3VuZGVyX1dpbmRvd3NfIj4KK0NhbiBJIHVzZSBBZ2VudFggd2hlbiBydW5uaW5nIHVuZGVyIFdpbmRvd3M/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgWWVzLCBidXQgdGhlcmUgYXJlIGEgY291cGxlIG9mIHRoaW5ncyB0byBiZSBhd2FyZSBvZi4KKworICBGaXJzdGx5LCBieSBkZWZhdWx0IHRoZSBBZ2VudFggbWFzdGVyIGxpc3RlbnMgb24gdGhlIFVuaXggZG9tYWluCisgIHNvY2tldCAnL3Zhci9hZ2VudHgvbWFzdGVyJywgd2hpY2ggZG9lc24ndCB3b3JrIHVuZGVyIFdpbmRvd3MuCisgIFlvdSdsbCBuZWVkIHRvIHRlbGwgaXQgdG8gbGlzdGVuIG9uIGEgVENQIHBvcnQsIGVpdGhlciBieSB1c2luZworICB0aGUgY29tbWFuZC1saW5lIG9wdGlvbiAiLXggbG9jYWxob3N0OjcwNSIsICBvciBieSBhZGRpbmcgdGhlCisgIGRpcmVjdGl2ZSAiYWdlbnR4QWRkcmVzcyBsb2NhbGhvc3Q6NzA1IiB0byB0aGUgc25tcGQuY29uZiBmaWxlLgorCisgIFNlY29uZGx5LCBiZSBhd2FyZSB0aGF0IHRoZSBzZWN1cml0eSBvZiBBZ2VudFggY29ubmVjdGl2aXR5IGlzIG5vdAorICBwYXJ0aWN1bGFybHkgc3Ryb25nLiAgVGhlIGV4YW1wbGVzIGdpdmVuIGhlcmUgd291bGQgYWxsb3cgYW55IHByb2Nlc3MKKyAgcnVubmluZyBvbiB0aGUgbG9jYWwgbWFjaGluZSB0byByZWdpc3RlciBhcyBhbiBBZ2VudFggc3ViYWdlbnQuICBUaGUKKyAgbW9yZSBvYnZpb3VzIHNldHRpbmdzICIteCA3MDUiIG9yICJhZ2VudHhBZGRyZXNzIDcwNSIgd291bGQgYWxsb3cKKyAgYSBzeXN0ZW0gKmFueXdoZXJlKiBvbiB0aGUgbmV0d29yayAob3IgZXZlbiBmcm9tIHJlbW90ZSBuZXR3b3JrcykgdG8KKyAgcmVnaXN0ZXIgYXMgYW4gQWdlbnRYIHN1YmFnZW50LiAgVGhpcyBjb3VsZCBwb3RlbnRpYWxseSBiZSB1c2VkIHRvCisgIGhpamFjayB0aGUgYWdlbnQsIG9yIHByb3ZpZGUgZmFsc2UgaW5mb3JtYXRpb24uCisKKworCis8YSBuYW1lPSJIb3dfY2FuX0lfcnVuX0FnZW50WF93aXRoX2FfZGlmZmVyZW50X3NvY2tldF9hZGRyZXNzXyI+CitIb3cgY2FuIEkgcnVuIEFnZW50WCB3aXRoIGEgZGlmZmVyZW50IHNvY2tldCBhZGRyZXNzPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZXJlIGFyZSB0d28gc2lkZXMgdG8gYW4gQWdlbnRYIGNvbm5lY3Rpb24sIGFuZCB0aGV5IG5lZWQgdG8KKyAgYWdyZWUgYWJvdXQgd2hpY2ggc29ja2V0IGFkZHJlc3MgdG8gdXNlLiAgU28gaWYgeW91IHdhbnQgdG8gdXNlCisgIGEgZGlmZmVyZW50IHNvY2tldCwgeW91IG5lZWQgdG8gY29uZmlndXJlIGJvdGggc2lkZXMgYWNjb3JkaW5nbHkuCisKKyAgRm9yIHRoZSBOZXQtU05NUCBtYXN0ZXIgYWdlbnQsIHRoaXMgaXMgZG9uZSB1c2luZyB0aGUgY29tbWFuZC1saW5lCisgIG9wdGlvbiAnLXgnLiAgVGhlIGNvbW1hbmQKKwkJInNubXBkIC14IGxvY2FsaG9zdDo3MDUgLi4uLiIKKyAgd291bGQgc3RhcnQgdGhlIGFnZW50IGxpc3RlbmluZyBvbiB0aGUgVENQIHBvcnQgNzA1IGZvciBjb25uZWN0aW9ucworICBmcm9tIHRoZSBsb2NhbCBzeXN0ZW0uCisKKyAgVGhlIG1haW4gTmV0LVNOTVAgYWdlbnQgY2FuIGFsc28gYmUgcnVuIGluIGEgInN1YmFnZW50IiBtb2RlLCBhbmQKKyAgdGhpcyB1c2VzIHRoZSBzYW1lIGNvbW1hbmQtbGluZSBvcHRpb24gdG8gc3BlY2lmeSBhIGRpZmZlcmVudAorICBBZ2VudFggc29ja2V0LiAgU28KKwkJInNubXBkIC1YIC14IGxvY2FsaG9zdDo3MDUgLi4uLiIKKyAgd291bGQgc3RhcnQgaXQgYXMgYSBzdWJhZ2VudCwgYW5kIGNvbm5lY3QgdG8gdGhlIG1hc3RlciBhZ2VudAorICBsaXN0ZW5pbmcgb24gVENQIHBvcnQgNzA1IG9uIHRoZSBzYW1lIHN5c3RlbS4KKworICBBIHN1YmFnZW50IHJ1bm5pbmcgZW1iZWRkZWQgd2l0aGluIHNvbWUgb3RoZXIgYXBwbGljYXRpb24gd2lsbAorICB0eXBpY2FsbHkgbm90IHVuZGVyc3RhbmQgdGhlIHNhbWUgY29tbWFuZC1saW5lIG9wdGlvbnMuICBUaGlzCisgIHdpbGwgbmVlZCB0byBzZXQgdGhlIHNhbWUgY29uZmlndXJhdGlvbiBwcm9ncmFtbWF0aWNhbGx5LgorICBGb3IgZXhhbXBsZSwgdGhlIGV4YW1wbGUgc3ViYWdlbnQgZHJpdmluZyBjb2RlIGZyb20gdGhlIE5ldC1TTk1QCisgICJzdWJhZ2VudCBwcm9ncmFtIiB0dXRvcmlhbCAob24gdGhlIHByb2plY3Qgd2ViIHBhZ2VzKSBjb3VsZAorICBiZSBtYWRlIHRvIGNvbm5lY3QgdG8gdGhlIHNhbWUgVENQIHBvcnQgYnkgYWRkaW5nIHRoZSBsaW5lCisgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9YX1NPQ0tFVCwgImxvY2FsaG9zdDo3MDUiKTsKKyAgYmVmb3JlIHRoZSAnaW5pdF9hZ2VudCcgY2FsbC4KKworICBIb3dldmVyLCBzZWUgdGhlIG1lbnRpb24gb2YgQWdlbnRYIHNlY3VyaXR5IChvciB0aGUgbGFjayBvZiBpdCEpCisgIGluIHRoZSBwcmV2aW91cyBlbnRyeS4KKworCisKKzxhIG5hbWU9Ikhvd19jYW5fSV9jb21iaW5lX3R3b19jb3BpZXNfb2ZfdGhlX19taWJfX190cmVlX2Zyb21fc2VwYXJhdGVfc3ViYWdlbnRzXyI+CitIb3cgY2FuIEkgY29tYmluZSB0d28gY29waWVzIG9mIHRoZSAnbWliMicgdHJlZSBmcm9tIHNlcGFyYXRlIHN1YmFnZW50cz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgV2l0aCB0aGUgNC54IGxpbmUgYWdlbnQsIHlvdSBjYW4ndC4gIFNvcnJ5IGFib3V0IHRoYXQuCisKKyAgV2l0aCB0aGUgNS4wIGFnZW50LCB0aGlzIGlzIHBvc3NpYmxlIGJ5IHVzaW5nIHRoZSBTTk1QdjMgY29udGV4dCBzdHJpbmcKKyAgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBwYXJhbGxlbCBNSUIgdHJlZXMuICBUaGlzIGNhbiBiZSBzZXQgdXAgZm9yIGFuCisgIGluZGl2aWR1YWwgTUlCIGltcGxlbWVudGF0aW9uIG1vZHVsZSB3aGVuIGl0IHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUKKyAgbWFpbiBhZ2VudCBmcmFtZXdvcmsgKGVpdGhlciBkaXJlY3RseSwgb3IgdmlhIEFnZW50WCkuICBJdCBjYW4gYWxzbworICBiZSBzZXQgdXAgZm9yIGEgcHJveGllZCBzdWJhZ2VudCBhcyBwYXJ0IG9mIHRoZSBwcm94eSBjb25maWd1cmF0aW9uCisgIGVudHJ5IChzZWUgJ3NubXBkLmNvbmYoNSknKS4KKyAgICBUaGlzIGZhY2lsaXR5IGlzIG5vdCBjdXJyZW50bHkgYXZhaWxhYmxlIGZvciBTTk1QdjEgb3IgU05NUHYyYworICByZXF1ZXN0cyAoYWx0aG91Z2ggaXQgb3VnaHQgdG8gYmUgcG9zc2libGUgdG8gdXNlIHRoZSBjb21tdW5pdHkKKyAgc3RyaW5nIGluIGEgc2ltaWxhciB3YXkpLgorCisgICAgQW5vdGhlciB3YXkgdG8gaGFuZGxlIHRoaXMgd291bGQgYmUgdG8gdHdlYWsgb25lIG9mIHRoZSBzdWJhZ2VudHMgdG8KKyAgdXNlIGEgZGlmZmVyZW50IHNldCBvZiAobm9uLXN0YW5kYXJkKSBPSUQgYXNzaWdubWVudHMgLSBwZXJoYXBzIGJ5CisgIHJlbG9jYXRpbmcgdGhlIHdob2xlIG9mIHRoZSBzdWJ0cmVlIHRvIGFub3RoZXIgKHByaXZhdGUpIE9JRC4gIFRoaXMKKyAgaXMgbm90IGlkZWFsLCBidXQgc2hvdWxkIHdvcmsgd2l0aCBhbGwgY29uZmlndXJhdGlvbnMuCisKKworCis8YSBuYW1lPSJXaGF0X3RyYXBzX2FyZV9zZW50X2J5X3RoZV9hZ2VudF8iPgorV2hhdCB0cmFwcyBhcmUgc2VudCBieSB0aGUgYWdlbnQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZSBhZ2VudCBzZW5kcyBhICdjb2xkU3RhcnQoMCknIHRyYXAgd2hlbiBpdCBmaXJzdCBzdGFydHMgdXAsIGFuZCBhbgorICBlbnRlcnByaXNlLXNwZWNpZmljIHRyYXAgJ25zTm90aWZ5U2h1dGRvd24nIChvciAndWNkU2h1dGRvd24nKSB3aGVuIGl0CisgIHN0b3BzLiAgSXQgY2FuIGFsc28gYmUgY29uZmlndXJlZCB0byBzZW5kIGFuICdhdXRoZW50aWNhdGlvbkZhaWx1cmUoNCknCisgIHRyYXAgd2hlbiBpdCByZWNlaXZlcyBhbiBTTk1QdjEgcmVxdWVzdCB1c2luZyBhbiB1bmtub3duIGNvbW11bml0eSBuYW1lLgorICBUaGUgTmV0LVNOTVAgYWdlbnQgZ2VuZXJhdGVzIGFuIGVudGVycHJpc2Utc3BlY2lmaWMgdHJhcCAnbnNOb3RpZnlSZXN0YXJ0JworICAocmF0aGVyIHRoYW4gdGhlIHN0YW5kYXJkICdjb2xkU3RhcnQoMCknIG9yICd3YXJtU3RhcnQoMSknIHRyYXBzKSBvbgorICByZWNlaXZpbmcgYSBIVVAgc2lnbmFsIC0gdHlwaWNhbGx5IGFmdGVyIGJlaW5nIHJlLWNvbmZpZ3VyZWQuCisKKyAgICBUaGUgYWdlbnQgZG9lcyBub3Qgc2VuZCAnbGlua1VwJyBvciAnbGlua0Rvd24nIHRyYXBzIGJ5IGRlZmF1bHQuICBUaGUKKyAgTmV0LVNOTVAgYWdlbnQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZG8gdGhpcyB1c2luZyB0aGUgJ21vbml0b3InIGNvbmZpZworICBkaXJlY3RpdmUuICBTZWUgdGhlICdzbm1wZC5jb25mKDUpJyBtYW4gcGFnZSAodW5kZXIgRElTTUFOLUVWRU5ULU1JQikKKyAgZm9yIGRldGFpbHMgKGluY2x1ZGluZyB0aGUgbmVlZCBmb3IgYW4gJ2FnZW50U2VjTmFtZScgc2V0dGluZykuCisKKyAgICBTaW1pbGFybHksIGl0IGRvZXMgbm90IGdlbmVyYXRlIHRyYXBzIGJ5IGRlZmF1bHQgd2hlbiBvbmUgb2YgdGhlCisgIG1vbml0b3JlZCBjaGFyYWN0ZXJpc3RpY3MgKGRpc2sgdXNhZ2UsIHJ1bm5pbmcgcHJvY2Vzc2VzLCBldGMpIGVudGVycyBvcgorICBsZWF2ZXMgYW4gZXJyb3Igc3RhdGUuICBUaGlzIGNhbiBiZSBjb25maWd1cmVkIHVzaW5nIHRoZSAnZGVmYXVsdE1vbml0b3JzJworICBjb25maWcgZGlyZWN0aXZlIChhbHNvIGRvY3VtZW50ZWQgdW5kZXIgRElTTUFOLUVWRU5ULU1JQikuICBOb3RlIHRoYXQKKyAgdGhlc2UgZmFjaWxpdGllcyBhcmUgb25seSBhdmFpbGFibGUgd2l0aCB0aGUgdjUgTmV0LVNOTVAgYWdlbnQsIGFuZCBhcmUKKyAgbm90IHN1cHBvcnRlZCBieSB0aGUgdjQgVUNEIGFnZW50LgorCisKKworPGEgbmFtZT0iV2hlcmVfYXJlX3RoZXNlX3RyYXBzX3NlbnRfdG9fIj4KK1doZXJlIGFyZSB0aGVzZSB0cmFwcyBzZW50IHRvPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFdpdGggYWxsIHRoZXNlIGFsZXJ0cywgdGhlIGFnZW50IGFsc28gbmVlZHMgdG8gYmUgY29uZmlndXJlZCB3aXRoCisgIChvbmUgb3IgbW9yZSkgZGVzdGluYXRpb25zIHRvIHNlbmQgdGhlbSB0bywgc3BlY2lmeWluZyB0aGUgdHlwZSBvZgorICBub3RpZmljYXRpb24gKHYxIG9yIHYyIHRyYXAsIG9yIHYyIGluZm9ybSkgYW5kIHRoZSBjb21tdW5pdHkgbmFtZSB0bworICB1c2UuICBUaGlzIHVzZXMgdGhlIHNubXBkLmNvbmYgZGlyZWN0aXZlcyAndHJhcHNpbmsnLCAndHJhcDJzaW5rJyBhbmQKKyAgJ2luZm9ybXNpbmsnIGZvciB0aGUgZGVzdGluYXRpb24gdHlwZSwgYW5kICd0cmFwY29tbXVuaXR5JyBmb3IgdGhlCisgIGNvbW11bml0eSBuYW1lLiAgU05NUHYzIGRlc3RpbmF0aW9ucyBjYW4gYmUgY29uZmlndXJlZCB1c2luZyB0aGUgZGlyZWN0aXZlCisgICd0cmFwc2VzcycuICAgU2VlIHRoZSAnc25tcGQuY29uZig1KScgbWFuIHBhZ2UgZm9yIGRldGFpbHMuCisKKyAgICBOb3RlIHRoYXQgdGhlc2UgZGlyZWN0aXZlcyBjb250cm9sIHRoZSB0eXBlIG9mIG5vdGlmaWNhdGlvbiB0aGF0IGlzCisgIGdlbmVyYXRlZC4gIFRoaXMgaXMgY29tcGxldGVseSBzZXBhcmF0ZSBmcm9tIHRoZSBzdHlsZSBvZiBBUEkgdXNlZCB0bworICByZXF1ZXN0IHRoYXQgdGhlIG5vdGlmaWNhdGlvbiBzaG91bGQgYmUgc2VudC4gIElmIGEgbW9kdWxlIGludm9rZXMgdGhlCisgIHYxLXN0eWxlIEFQSSAnc2VuZF9lYXN5X3RyYXAnLCB0aGlzIHdpbGwgc3RpbGwgc2VuZCBTTk1QdjIgbm90aWZpY2F0aW9ucworICB0byBkZXN0aW5hdGlvbnMgY29uZmlndXJlZCB1c2luZyAndHJhcDJzaW5rJyBvciAnaW5mb3Jtc2luaycgKGFuZCB2aWNlCisgIHZlcnNhKS4KKworICAgIEEgY29uZmlndXJhdGlvbiBibG9jayBzdWNoIGFzCisKKyAgICAgICAgdHJhcHNpbmsgICBsb2NhbGhvc3QKKyAgICAgICAgdHJhcDJzaW5rICBsb2NhbGhvc3QKKyAgICAgICAgaW5mb3Jtc2luayBsb2NhbGhvc3QKKworICB3aWxsIHJlc3VsdCBpbiAqdGhyZWUqIG5vdGlmaWNhdGlvbnMgYmVpbmcgc2VudCBmb3IgZWFjaCBjYWxsIHRvCisgICdzZW5kX2Vhc3lfdHJhcCcgKG9yICdzZW5kX3YydHJhcCcpLiAgU2VlICdzbm1wX3RyYXBfYXBpKDMpJyBmb3IgZGV0YWlscy4KKworICAgIE5vdGUgdGhhdCBhbGwgbm90aWZpY2F0aW9ucyB3aWxsIGJlIHNlbnQgdG8gYWxsIGRlc3RpbmF0aW9ucy4gIFRoZQorICBhZ2VudCBkb2VzIG5vdCAoY3VycmVudGx5KSBzdXBwb3J0IG5vdGlmaWNhdGlvbiBmaWx0ZXJpbmcuCisgCisKKworPGEgbmFtZT0iSG93X2Nhbl9JX3NlbmRfYV9wYXJ0aWN1bGFyX3RyYXBfdG9fc2VsZWN0ZWRfZGVzdGluYXRpb25zXyI+CitIb3cgY2FuIEkgc2VuZCBhIHBhcnRpY3VsYXIgdHJhcCB0byBzZWxlY3RlZCBkZXN0aW5hdGlvbnM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBXaXRoIHRoZSB2NCBVQ0QgYWdlbnQsIHRoaXMgaXNuJ3QgcG9zc2libGUgKG9yIGF0IGxlYXN0IG5vdAorICBlYXNpbHkpLiAgV2hlbiB5b3UgcmVxdWVzdCB0aGUgYWdlbnQgdG8gZ2VuZXJhdGUgYSB0cmFwICh1c2luZworICBlaXRoZXIgJ3NlbmRfdjJ0cmFwJyBvciAnc2VuZF9lYXN5X3RyYXAnKSwgdGhpcyB3aWxsIGJlIHNlbnQKKyAgdG8gKmFsbCogdGhlIGtub3duIGRlc3RpbmF0aW9ucy4KKworICAgIFRoZSB2NSBOZXQtU05NUCBhZ2VudCBpbnRyb2R1Y2VkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIHRoZQorICBzbm1wTm90aWZ5RmlsdGVyVGFibGUgd2hpY2ggaXMgZGVzaWduZWQgdG8gYWxsb3cgdGhpcyBzb3J0IG9mCisgIHNlbGVjdGl2ZSB0cmFwIGRpcmVjdGlvbiwgdGhvdWdoIHRoaXMgaXMgbm90IGN1cnJlbnRseSBhY3RpdmUuCisgIChUaGUgdGFibGVzIGFyZSBwcmVzZW50LCBidXQgdGhlIGluZm9ybWF0aW9uIGlzIG5vdCBjb25zdWx0ZWQpCisgIERvY3VtZW50YXRpb24gb24gaG93IHRvIHVzZSB0aGlzIGZhY2lsaXR5IHdpbGwgYXBwZWFyIG9uY2UgdGhlCisgIGZ1bmN0aW9uYWxpdHkgaXMgd29ya2luZyBwcm9wZXJseS4KKworCisKKzxhIG5hbWU9IldoeV9kb2VzX2NhbGxpbmdfX3NlbmRfdl90cmFwX19nZW5lcmF0ZV9hbl9TTk1Qdl9fdHJhcF9fb3JfdmljZV92ZXJzYV9fIj4KK1doeSBkb2VzIGNhbGxpbmcgJ3NlbmRfdjJ0cmFwJyBnZW5lcmF0ZSBhbiBTTk1QdjEgdHJhcCAob3IgdmljZSB2ZXJzYSk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGUgdHdvIHZlcnNpb25zIG9mIHRoZSB0cmFwIEFQSSBjYWxscyBhcmUgY29uY2VybmVkIHdpdGggaG93CisgIHRoZSB0cmFwIGlzIHJlcHJlc2VudGVkIHdoZW4gaXQgaXMgcGFzc2VkICppbiogdG8gdGhlIEFQSSwgbm90CisgIHRoZSB2ZXJzaW9uIG9mIHRoZSB0cmFwIFBEVSB0aGF0IHdpbGwgYWN0dWFsbHkgYmUgZ2VuZXJhdGVkIGJ5CisgIHRoZSBhZ2VudC4gIFRoYXQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgY29uZmlndXJhdGlvbiB0b2tlbiB1c2VkCisgIHRvIHNldCB1cCB0aGUgdHJhcCBkZXN0aW5hdGlvbi4KKworICAgIFJlbWVtYmVyIHRoYXQgaW4gZ2VuZXJhbCwgYWxsIHRyYXBzIGFyZSBzZW50IHRvIGFsbCBkZXN0aW5hdGlvbnMuCisgIFRoaXMgbWVhbnMgdGhhdCBhIHRyYXAgc3BlY2lmaWVkIHVzaW5nIHRoZSBTTk1QdjEgdHJhcCBzeW50YXgKKyAgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIHRoZSBTTk1QdjIgZm9ybWF0IGJlZm9yZSBpdCBjYW4gYmUgc2VudAorICB0byBhbiBTTk1QdjIgKG9yIFNOTVB2MykgZGVzdGluYXRpb24uICBTaW1pbGFybHksIGEgdHJhcCBzcGVjaWZpZWQKKyAgdXNpbmcgdGhlIFNOTVB2MiBzeW50YXggbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIHRoZSBTTk1QdjEgZm9ybWF0CisgIGJlZm9yZSBpdCBjYW4gYmUgc2VudCB0byBhbiBTTk1QdjEgc2luay4KKworICAgIEVzc2VudGlhbGx5LCB0aGUgQVBJIGNhbGwgdG8gdXNlIGRlcGVuZHMgb24gd2hhdCB5b3UgYXNraW5nIGZvciwKKyAgd2hpY2ggaXMgbm90IG5lY2Vzc2FyaWx5IHdoYXQgdGhlIHJlY2lwaWVudHMgd2lsbCBhY3R1YWxseSBnZXQhCisgIFNlZSAnc25tcF90cmFwX2FwaSgzKScgZm9yIGEgZnVsbGVyIGV4cGxhbmF0aW9uLgorCisKKworPGEgbmFtZT0iV2hlbl9JX3J1bl90aGVfYWdlbnRfaXRfcnVuc19hbmRfdGhlbl9xdWl0c193aXRob3V0X3N0YXlpbmdfYXJvdW5kX19XaHlfIj4KK1doZW4gSSBydW4gdGhlIGFnZW50IGl0IHJ1bnMgYW5kIHRoZW4gcXVpdHMgd2l0aG91dCBzdGF5aW5nIGFyb3VuZC4gV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBGaXJzdGx5LCBhcmUgeW91IGNlcnRhaW4gdGhhdCB0aGlzIGlzIHdoYXQgaXMgaGFwcGVuaW5nPworCisgIFRoZSBub3JtYWwgb3BlcmF0aW9uIG9mIHRoZSBhZ2VudCBpcyB0byAnZm9yaycgaXRzZWxmIGludG8gdGhlCisgIGJhY2tncm91bmQsIGRldGFjaGluZyBpdHNlbGYgc28gdGhhdCBpdCB3aWxsIGNvbnRpbnVlIHJ1bm5pbmcgZXZlbgorICB3aGVuIHlvdSBsb2cgb3V0LCBhbmQgZnJlZWluZyB0aGUgY29tbWFuZCBsaW5lIGZvciBzdWJzZXF1ZW50IHVzZS4KKyAgVGhpcyBsb29rcyBhdCBmaXJzdCBzaWdodCBhcyBpZiB0aGUgYWdlbnQgaGFzIGRpZWQsIGJ1dCB1c2luZyAncHMnCisgIHRvIHNob3cgYWxsIHByb2Nlc3NlcyBzaG91bGQgcmV2ZWFsIHRoYXQgdGhlIGFnZW50IGlzIHN0aWxsIHJ1bm5pbmcuCisKKyAgVG8gcHJldmVudCB0aGlzIGJlaGF2aW91ciAoc3VjaCBhcyB3aGVuIGF0dGVtcHRpbmcgdG8gZGVidWcgdGhlCisgIGFnZW50KSwgeW91IGNhbiBzdGFydCBpdCB3aXRoIHRoZSAnLWYnIGZsYWcuICBUaGlzIHN1cHByZXNzZXMgdGhlCisgIGZvcmssIGFuZCB0aGUgYWdlbnQgd2lsbCBydW4gYXMgYSAnbm9ybWFsJyBjb21tYW5kLiAgSXQncyBhbHNvIG9mdGVuCisgIHVzZWZ1bCB0byB1c2UgdGhlICctTCcgKG9yICctTGUnKSBmbGFnLCB0byBsb2cgbWVzc2FnZXMgdG8gc3Rkb3V0LgorCisgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiAncHMnIHNob3dzIHRoYXQgdGhlIGFnZW50IGlzIG5vdCBydW5uaW5nLCB0aGVuCisgIHRoaXMgaXMgYW4gZXJyb3IsIGFuZCBwcm9iYWJseSBzaG93IHRoYXQgc29tZXRoaW5nIHdlbnQgd3JvbmcgaW4KKyAgc3RhcnRpbmcgdGhlIGFnZW50IHVwLiAgQ2hlY2sgdGhlIGFnZW50IGxvZyBmaWxlIGZvciBhbnkgZXJyb3IgbWVzc2FnZXMsCisgIG9yIHJ1biBpdCB3aXRoICctZiAtTCcgYW5kIHNlZSB3aGF0IGl0IHJlcG9ydHMuCisKKyAgT25lIGtub3duIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGUgJ3VjZC1zbm1wJyBSUE0gZGlzdHJpYnV0ZWQgYnkgUmVkSGF0LgorICBUaGlzIGFnZW50IGNyYXNoZXMgaWYgdGhlcmUgaXMgYSAnZGlzaycgY29uZmlndXJhdGlvbiBlbnRyeSBpbiB0aGUKKyAgc25tcGQuY29uZiBmaWxlLiAgSXQgaXMgbm90IGN1cnJlbnRseSBrbm93biB3aGF0IGNhdXNlcyB0aGlzLCBhcyB0aGlzCisgIHNldHRpbmcgd29ya3MgY29ycmVjdGx5IGlmIHRoZSBhZ2VudCBpcyBjb21waWxlZCBmcm9tIHNvdXJjZS4KKworCisKKzxhIG5hbWU9IkFmdGVyX2Ffd2hpbGVfdGhlX2FnZW50X3N0b3BzX3Jlc3BvbmRpbmdfX2FuZF9zdGFydHNfZWF0aW5nX0NQVV90aW1lX19fV2h5XyI+CitBZnRlciBhIHdoaWxlIHRoZSBhZ2VudCBzdG9wcyByZXNwb25kaW5nLCBhbmQgc3RhcnRzIGVhdGluZyBDUFUgdGltZS4gIFdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBpcyBtb3N0IGNvbW1vbmx5IHNlZW4gd2hlbiBwZXJmb3JtaW5nIGFuICJzbm1wd2FsayIgb24gYW4gYWdlbnQKKyAgdGhhdCdzIGVpdGhlciB1c2luZyBhIGRlZmF1bHQgInZlbmRvciBwcm92aWRlZCIgY29uZmlndXJhdGlvbgorICAodHlwaWNhbGx5IGFjY2VzcyB0byB0aGUgJ3N5c3RlbScgZ3JvdXAgb25seSksIG9yIHdoaWNoIGlzIHRyeWluZworICB0byByZXN0cmljdCBhY2Nlc3MgZm9yIGluZGl2aWR1YWwgdXNlcnMgb3IgY29tbXVuaXRpZXMgdG8gYSBzdWJzZXQKKyAgb2YgdGhlIHdob2xlIE9JRCB0cmVlLgorCisgIFRoZSBhZ2VudCBpbXBsZW1lbnRhdGlvbiBvZiAiR2V0TmV4dCIgcHJvY2Vzc2luZyBpcyByZWxhdGl2ZWx5CisgIGluZWZmaWNpZW50IHdoZW4gZGVhbGluZyB3aXRoIGluYWNjZXNzaWJsZSBvYmplY3RzLCBhbmQgaXQgaXMgcXVpdGUKKyAgZWFzeSBmb3IgdGhlIGNsaWVudHMgdG8gdGltZS1vdXQgYW5kIHJldHJ5IGEgcmVxdWVzdCwgd2hpbGUgdGhlIGFnZW50CisgIGlzIHN0aWxsIHRyeWluZyB0byBwcm9jZXNzIHRoZSBvcmlnaW5hbC4gIElmIHRoaXMgaGFwcGVucyBjb250aW51YWxseQorICAoYXMgaXMgdHlwaWNhbGx5IHRoZSBjYXNlIHdpdGggYW4gc25tcHdhbGspLCB0aGUgYWdlbnQgY2FuIGdldCBzd2FtcGVkCisgIGJ5IHRoaXMgYmFja2xvZy4KKworICBUaGUgNS4wLnggbGluZSBoYXMgbm93IGFkZHJlc3NlZCB0aGlzLCBzdGFydGluZyB3aXRoIHRoZSA1LjAuNyByZWxlYXNlLgorICBUaGUgNC4yLnggbGluZSBzdGlsbCBzdWZmZXJzIGZyb20gdGhpcyBwcm9ibGVtLCBhbmQgaXQgaXMgdW5saWtlbHkgdGhhdAorICB0aGlzIHdpbGwgYmUgZml4ZWQuICAoVGhlIDUuMC43IGFwcHJvYWNoIHJlbGllcyBvbiBzb21lIG9mIHRoZSBuZXcKKyAgZmVhdHVyZXMgaW4gdGhlIDUuMC54IGxpbmUsIGFuZCBpdCBoYXMgbm90IHByb3ZlZCBwb3NzaWJsZSB0byBhcHBseQorICB0aGlzIHRvIHRoZSA0LjIueCBjb2RlIGJhc2UpLgorCisKKworPGEgbmFtZT0iSG93X2Nhbl9JX3N0b3Bfb3RoZXJfcGVvcGxlX2dldHRpbmdfYXRfbXlfYWdlbnRfIj4KK0hvdyBjYW4gSSBzdG9wIG90aGVyIHBlb3BsZSBnZXR0aW5nIGF0IG15IGFnZW50PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBGaXJzdGx5LCBhcmUgeW91IGNvbmNlcm5lZCB3aXRoIHJlYWQgYWNjZXNzIG9yIHdyaXRlIGFjY2Vzcz8KKworICBBcyBmYXIgYXMgY2hhbmdpbmcgdGhpbmdzIG9uIHRoZSBhZ2VudCBpcyBjb25jZXJuZWQsIHRoZXJlIGlzIHJlbGF0aXZlbHkKKyAgbGl0dGxlIHRoYXQgY2FuIGFjdHVhbGx5IGJlIGFsdGVyZWQgKHNlZSB0aGUgYW5zd2VyIHRvICIgSSBjYW5ub3Qgc2V0CisgIGFueSB2YXJpYWJsZXMgaW4gdGhlIE1JQiIgYWJvdmUpLgorCisgICAgSWYgeW91IGFyZSB1c2luZyB0aGUgZXhhbXBsZSBjb25maWcgZmlsZSwgdGhpcyBpcyBzZXQgdXAgdG8gYWxsb3cKKyAgcmVhZCBhY2Nlc3MgZnJvbSB5b3VyIGxvY2FsIG5ldHdvcmssIGFuZCB3cml0ZSBhY2Nlc3Mgb25seSBmcm9tIHRoZQorICBzeXN0ZW0gaXRzZWxmIChhY2Nlc3NlZCBhcyAnbG9jYWxob3N0JyksIGJvdGggdXNpbmcgdGhlIGNvbW11bml0eSBuYW1lCisgIHNwZWNpZmllZC4gIFlvdSB3aWxsIG5lZWQgdG8gc2V0IGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IgYm90aCBORVRXT1JLCisgIGFuZCBDT01NVU5JVFkgaW4gdGhpcyBmaWxlIGJlZm9yZSB1c2luZyBpdC4KKyAgICBUaGlzIG1lY2hhbmlzbSBjYW4gYWxzbyBiZSB1c2VkIHRvIGNvbnRyb2wgYWNjZXNzIG11Y2ggbW9yZSBwcmVjaXNlbHkuCisgIChzZWUgdGhlIG5leHQgcXVlc3Rpb25zIGZvciBkZXRhaWxzKQorCisgIE90aGVyIG9wdGlvbnMgaW5jbHVkZToKKwktIEJsb2NraW5nIGFjY2VzcyB0byBwb3J0IDE2MSBmcm9tIG91dHNpZGUgeW91ciBvcmdhbmlzYXRpb24KKwkJKHVzaW5nIGZpbHRlcnMgb24gbmV0d29yayByb3V0ZXJzKQorCS0gQ29uZmlndXJpbmcgVENQIHdyYXBwZXIgc3VwcG9ydCAoIi0td2l0aC1saWJ3cmFwIikKKwkJVGhpcyB1c2VzIHRoZSBUQ1AgJ2xpYndyYXAnIGxpYnJhcnkgKGF2YWlsYWJsZSBzZXBhcmF0ZWx5KQorCQl0byBhbGxvdy9kZW55IGFjY2VzcyB2aWEgL2V0Yy9ob3N0cy57YWxsb3csZGVueX0KKworICBGb3Igc3RyaWN0IHNlY3VyaXR5IHlvdSBzaG91bGQgdXNlIG9ubHkgU05NUHYzLCB3aGljaCBpcyB0aGUgc2VjdXJlCisgIGZvcm0gb2YgdGhlIHByb3RvY29sLgorCisKKworPGEgbmFtZT0iSG93X2Nhbl9JX2xpc3Rlbl9vbl9qdXN0X29uZV9wYXJ0aWN1bGFyX2ludGVyZmFjZV8iPgorSG93IGNhbiBJIGxpc3RlbiBvbiBqdXN0IG9uZSBwYXJ0aWN1bGFyIGludGVyZmFjZT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE5vcm1hbGx5LCB0aGUgYWdlbnQgd2lsbCBiaW5kIHRvIHRoZSBzcGVjaWZpZWQgcG9ydCBvbiBhbGwgaW50ZXJmYWNlcworICBvbiB0aGUgc3lzdGVtLCBhbmQgYWNjZXB0IHJlcXVlc3QgcmVjZWl2ZWQgZnJvbSBhbnkgb2YgdGhlbS4gIFdpdGgKKyAgdmVyc2lvbiA0LjIsIHRoZSAnLXAnIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBsaXN0ZW4gb24gaW5kaXZpZHVhbAorICBpbnRlcmZhY2VzLiAgRm9yIGV4YW1wbGUsCisJCisJCQlzbm1wZCAtcCAxNjFAMTI3LjAuMC4xCisKKyAgd2lsbCBsaXN0ZW4gKG9uIHRoZSBzdGFuZGFyZCBwb3J0KSBvbiB0aGUgbG9vcGJhY2sgaW50ZXJmYWNlIG9ubHksIGFuZAorCisJCQlzbm1wZCAtcCA2MTYxQDEwLjAuMC4xCisKKyAgd2lsbCBsaXN0ZW4gb24gcG9ydCA2MTYxLCBvbiB0aGUgKGludGVybmFsIG5ldHdvcmspIGludGVyZmFjZSB3aXRoIGFkZHJlc3MKKyAgMTAuMC4wLjEuICAgSWYgeW91IHdhbnQgdG8gbGlzdGVuIG9uIG11bHRpcGxlIGludGVyZmFjZXMgKGJ1dCBub3QgYWxsKSwKKyAgdGhlbiBzaW1wbHkgcmVwZWF0IHRoaXMgb3B0aW9uIGZvciBlYWNoIG9uZToKKworCQlzbm1wZCAtcCAxNjFAMTI3LjAuMC4xIC1wIDYxNjFAMTAuMC4wLjEKKworICBUaGUgdjUgTmV0LVNOTVAgYWdlbnQgaGFzIGEgc2ltaWxhciBmYWNpbGl0eSwgYnV0IGRvZXMgbm90IHVzZSB0aGUgJy1wJworICBjb21tYW5kIGxpbmUgb3B0aW9uIGZsYWcuICBJbnN0ZWFkLCB0aGUgcG9ydHMgYW5kL29yIGludGVyZmFjZXMgdG8gbGlzdGVuCisgIG9uIGFyZSBzaW1wbHkgbGlzdGVkIG9uIHRoZSBjb21tYW5kIGxpbmUsIGZvbGxvd2luZyBhbnkgb3RoZXIgb3B0aW9ucy4gIEFsc28sCisgIHRoZSBzeW50YXggb2YgcG9ydCBhbmQgaW50ZXJmYWNlIGlzIHNsaWdodGx5IGRpZmZlcmVudCAoaW50ZXJmYWNlOnBvcnQpLgorICAgIFNvIHRoZSB0aHJlZSBleGFtcGxlcyBhYm92ZSB3b3VsZCBiZQorCisJCQlzbm1wZCAxMjcuMC4wLjE6MTYxCisJCQlzbm1wZCAxMjcuMC4wLjE6NjE2MQorCQkJc25tcGQgMTI3LjAuMC4xOjE2MSAxMjcuMC4wLjE6NjE2MQorCisgIFRoZSBBZ2VudFggcG9ydCBvcHRpb24gKCcteCcpIHdvcmtzIGluIG11Y2ggdGhlIHNhbWUgd2F5LCB1c2luZyB0aGUKKyAgImhvc3Q6cG9ydCIgc3ludGF4IChpbiBib3RoIDQuMiBhbmQgNS4wIGxpbmVzIC0gYW5kIHllcywgdGhpcyAqaXMqIGFuCisgIGluY29uc2lzdGVuY3kgaW4gNC4yISkKKworCisKKzxhIG5hbWU9Ikhvd19kb19JX2NvbmZpZ3VyZV9hY2Nlc3NfY29udHJvbF8iPgorSG93IGRvIEkgY29uZmlndXJlIGFjY2VzcyBjb250cm9sPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGUgc2ltcGxlc3Qgd2F5IGlzIHRvIHVzZSB0aGUgY29uZmlndXJlIGRpcmVjdGl2ZXM6CisKKwkJcm9jb21tdW5pdHkgcHVibGljCShmb3IgU05NUHYxLzJjKQorCQlyd2NvbW11bml0eSBwcml2YXRlCisgIG9yCisJCXJvdXNlciB1c2VyMQkJKGZvciBTTk1QdjMpCisJCXJ3dXNlciB1c2VyMgorCisgIFRoZXNlIHNwZWNpZnkgdGhlIGNvbW11bml0eSBuYW1lcyBvciBzZWN1cml0eSBuYW1lcyB0byBhY2NlcHQgZm9yCisgIHJlYWQtb25seSBhbmQgcmVhZC13cml0ZSBhY2Nlc3MgdG8gdGhlIHdob2xlIG9mIHRoZSBzdXBwb3J0ZWQgTUlCIHRyZWUuCisgIChPYnZpb3VzbHkgeW91IHNob3VsZCBjaGFuZ2UgdGhlc2UgbmFtZXMgdG8gbWF0Y2ggeW91ciByZXF1aXJlbWVudHMgLQorICB3aGljaCBpcyBhIHBhcnRpY3VsYXJseSBnb29kIGlkZWEgaW4gdGhlIGNhc2Ugb2YgJ3J3Y29tbXVuaXR5JyEpCisKKyAgTm90ZSB0aGF0IGl0IGlzICpub3QqIG5lY2Vzc2FyeSAoYW5kIG5vdCBhZHZpc2libGUpIHRvIHNwZWNpZnkgdGhlCisgIHNhbWUgY29tbXVuaXR5IG5hbWUgZm9yIGJvdGggcm9jb21tdW5pdHkgYW5kIHJ3Y29tbXVuaXR5IGRpcmVjdGl2ZXMuCisgIFRoZSByd2NvbW11bml0eSBzZXR0aW5nIGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgcm9jb21tdW5pdHkgYWNjZXNzLAorICBhbmQgaGF2aW5nIGJvdGggbGluZXMgKHdpdGggdGhlIHNhbWUgY29tbXVuaXR5IG5hbWUpIG1heSByZXN1bHQgaW4KKyAgYXBwYXJlbnRseSBpbmNvbnNpc3RlbnQgYmVoYXZpb3VyLiAgT25seSB1c2UgYm90aCBzZXR0aW5ncyB3aGVuCisgIHNwZWNpZnlpbmcgKmRpZmZlcmVudCogY29tbXVuaXR5IG5hbWVzLgorICAgIFRoZSBzYW1lIGhvbGRzIHRydWUgZm9yIHJvdXNlciBhbmQgcnd1c2VyLgorCisgIEFsbCBmb3VyIG9mIHRoZXNlIHNldHRpbmdzIGNhbiBjYW4gYWxzbyBiZSByZXN0cmljdGVkIHRvIHBhcnRpY3VsYXIKKyAgc3VidHJlZXMsIGFuZC9vciByZXF1ZXN0IHNvdXJjZXMuICBTZWUgJ3NubXBkLmNvbmYoNSknIGZvciBkZXRhaWxzLgorCisgIFRoZXNlIGRpcmVjdGl2ZXMgYXJlIGVmZmVjdGl2ZWx5IHdyYXBwZXJzIHJvdW5kIHRoZSBjb3JlIGFjY2VzcyBjb250cm9sCisgIG1lY2hhbmlzbSwgd2hpY2ggdXNlcyB0aGUgZm91ciBkaXJlY3RpdmVzICdjb20yc2VjJywgJ2dyb3VwJywgJ3ZpZXcnCisgIGFuZCAnYWNjZXNzJyB0byBwcm92aWRlIGEgbW9yZSBlZmZpY2llbnQgYW5kIGZsZXhpYmxlIGNvbnRyb2wKKyAgb3ZlciB3aG8gY2FuIGFjY2VzcyB3aGljaCBwb3J0aW9ucyBvZiB0aGUgdHJlZS4KKworICAgIFNlZSB0aGUgbmV4dCBxdWVzdGlvbiBmb3IgdGhlIGdvcnkgZGV0YWlscywgYW5kIHRoZSBlbnRyeSBhZnRlcgorICB0aGF0IGZvciBzZXR0aW5nIHVwIFNOTVB2MyB1c2Vycy4KKworCisKKzxhIG5hbWU9IklfZG9uX3RfdW5kZXJzdGFuZF90aGVfbmV3X2FjY2Vzc19jb250cm9sX3N0dWZmX19fd2hhdF9kb2VzX2l0X21lYW5fIj4KK0kgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgbmV3IGFjY2VzcyBjb250cm9sIHN0dWZmIC0gd2hhdCBkb2VzIGl0IG1lYW4/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIGlkZWEgYmVoaW5kIHRoZSBuZXcgYWNjZXNzIGNvbnRyb2wgbW9kZWwgaXMgdG8gZ2l2ZSBhIG1vcmUgZmxleGlibGUKKyAgd2F5IG9mIHNwZWNpZnlpbmcgd2hvIGNhbiBzZWUgYW5kIGRvIHdoYXQgd2l0aGluIHRoZSBNSUIgdHJlZS4KKyAgSXQncyBtb3JlIGNvbXBsaWNhdGVkIHRvIHVuZGVyc3RhbmQgdGhhbiB0aGUgc2ltcGxlIGV4YW1wbGUgYWJvdmUsIGJ1dAorICB0aGF0J3MgYmVjYXVzZSBpdCBjYW4gZG8gYSB3aG9sZSBsb3QgbW9yZS4KKworICAgIFRoZXJlIGFyZSBmb3VyIGNvbmZpZ3VyYXRpb24ga2V5d29yZHMgaW4gdGhlIG5ldyBzY2hlbWU6CisJJ2NvbTJzZWMnLCAnZ3JvdXAnLCAndmlldycsIGFuZCAnYWNjZXNzJworCisgIFdlJ2xsIGNvbnNpZGVyIHRoZXNlIG9uZSBhdCBhIHRpbWUsIHN0YXJ0aW5nIHdpdGggJ2FjY2VzcycuCisgIChCZWNhdXNlIEkgZmVlbCBsaWtlIHN0YXJ0aW5nIHdpdGggdGhlIGxhc3Qgb25lLCB0aGF0J3Mgd2h5IC0gT0s/KQorCisKKyAgVGhlICJhY2Nlc3MiIGtleXdvcmQgaGFzIHRoZSBqb2Igb2Ygc3BlY2lmeWluZyB3aG8gaGFzIGFjY2VzcyB0bworICB3aGljaCBiaXRzIG9mIHRoZSBNSUIgdHJlZS4gIFRoaXMgaGFzIGVpZ2h0IHBhcmFtZXRlcnMsIHNvIGNhbiBsb29rCisgIHJhdGhlciBvZmZwdXR0aW5nLiBNb3N0IG9mIHRoZXNlIGNhbiBiZSBzYWZlbHkgbGVmdCB3aXRoIGRlZmF1bHQgdmFsdWVzCisgIGluIG1vc3QgY2FzZXMgKHNvIGRvbid0IHlvdSB3b3JyeSB5b3VyIHByZXR0eSBsaXR0bGUgaGVhZCBhYm91dCB0aGVtKS4KKyAgVGhlIHN5bnRheCBpcworCisJYWNjZXNzIHtncm91cH0gIiIgYW55IG5vYXV0aCBleGFjdCB7cmVhZC10cmVlfSB7d3JpdGUtdHJlZX0ge25vdGlmeS10cmVlfQorCisgIHdoZXJlIHRoZSBlbnRyaWVzIGluIGJyYWNlcyBuZWVkIHRvIGJlIGRlZmluZWQgZWxzZXdoZXJlIChJJ20gY29taW5nCisgIHRvIHRoYXQgLSBiZSBwYXRpZW50ISksIGFuZCB0aGUgcmVzdCBjYW4gYmUgbGVmdCBhcyBzaG93biBoZXJlLgorCisJWyBJZiB5b3UgcmVhbGx5IHdhbnQgdG8ga25vdywgdGhlICdzZWMubW9kZWwnIGZpZWxkIGNhbiAKKwkgIGJlIHVzZWQgdG8gaGF2ZSBhbiBhY2Nlc3MgbGluZSB0aGF0J3Mgb25seSByZWxldmFudCB0bworCSAgcGFydGljdWxhciB2ZXJzaW9ucyBvZiBTTk1QIChzdWNoIHYxIG9yIHYyYykgcmF0aGVyIHRoYW4KKwkgICJhbnkiIHZlcnNpb24sIGFuZCB0aGUgJ3NlYy5sZXZlbCcgZmllbGQgdG8gZW5zdXJlIHRoYXQKKwkgIHRoZSByZXF1ZXN0IG11c3QgYmUgYXV0aGVudGljYXRlZCBvciBlbmNyeXB0ZWQuCisJICAgIFRoZSBjb250ZXh0IGFuZCBwcmVmaXggZmllbGRzIGNhbiBiZSB1c2VkIHRvIGRpc3Rpbmd1aXNoCisJICBiZXR3ZWVuIHBhcmFsbGVsIHZlcnNpb25zIG9mIHRoZSBzYW1lIG92ZXJhbGwgT0lEIHRyZWUKKwldCisKKworICBUaGUgInZpZXciIGtleXdvcmQgaXMgdXNlZCB0byBkZWZpbmUgcGFydGljdWxhciBiaXRzIG9mIHRoZSBNSUIgdHJlZSwKKyAgZm9yIHVzZSBpbiB0aGUgbGFzdCB0aHJlZSBmaWVsZCBvZiB0aGUgYWNjZXNzIGVudHJ5LgorICBUaGlzIGhhcyB0aGUgc3ludGF4CisKKwl2aWV3ICB7bmFtZX0gIGluY2x1ZGVkL2V4Y2x1ZGVkICB7c3VidHJlZX0gICB7bWFza30KKworICB3aGVyZSB7bmFtZX0gaXMgdGhlIGlkZW50aWZpZXIgdG8gYmUgdXNlZCBmb3IgdGhpcyB2aWV3IChpLmUuIHdoYXQgc2hvdWxkCisgIGFwcGVhciBpbiB0aGUgYWNjZXNzIGVudHJ5KSwgYW5kIHtzdWJ0cmVlfSBpcyB0aGUgcG9ydGlvbiBvZiB0aGUgTUlCIHRyZWUKKyAgdGhhdCB0aGlzIG5hbWUgcmVmZXJzIHRvIChpbiBlaXRoZXIgbnVtZXJpYyBvciBuYW1lZCBmb3JtKS4KKyAgICBOb3RlIHRoYXQgdGhlIG5hbWUgb2YgdGhlIHZpZXcgZG9lcyBub3QgaGF2ZSB0byBoYXZlIGFueXRoaW5nIHRvIGRvCisgIHdpdGggdGhlIE1JQiBzdWItaWRlbnRpZmllciBuYW1lcyAtIGl0J3MgcHVyZWx5IGFuIGlkZW50aWZ5aW5nIHRhZyBmb3IKKyAgdXNlIHdpdGhpbiB0aGUgY29uZmlnIGZpbGUgKHRob3VnaCBjaG9vc2luZyBhIG1lYW5pbmdmdWwgbmFtZSBpcywgYXMKKyAgYWx3YXlzLCBhIHZlcnkgZ29vZCBpZGVhKS4KKyAgCisgICAgVGhlIHttYXNrfSBmaWVsZCBjYW4gYmUgdXNlZCB0byBjb250cm9sIHdoaWNoIGVsZW1lbnRzIG9mIHRoZSBPSUQgc3VidHJlZQorICBzaG91bGQgYmUgcmVnYXJkZWQgYXMgcmVsZXZhbnQgd2hlbiBkZXRlcm1pbmluZyB3aGljaCB2aWV3IGFuIE9JRCBpcyBpbi4KKyAgTm9ybWFsbHksIHRoZSB3aG9sZSBvZiB0aGUgT0lEIHNob3VsZCBiZSBpbmNsdWRlZCwgYW5kIGluIHRoaXMgY2FzZSB0aGUKKyAgbWFzayBmaWVsZCBjYW4gYmUgb21pdHRlZC4gIFNlZSBzbm1wZC5jb25mIGZvciBhIGRlc2NyaXB0aW9uIG9mIGhvdyB0aGlzCisgIG1pZ2h0IGJlIHVzZWQuCisgIFRoZSB0aGlyZCBmaWVsZCBjYW4gYmUgdXNlZCB0byBpbmNsdWRlIG9yIGV4Y2x1ZGUgcGFydGljdWxhciBwb3J0aW9ucworICBvZiB0aGUgTUlCIGZyb20gdGhlIHZpZXcsIGFuZCBkaWZmZXJlbnQgbGluZXMgY2FuIHVzZSB0aGUgc2FtZSB2aWV3IG5hbWUKKyAgdG8gYnVpbGQgdXAgYSBtb3JlIGNvbXBsaWNhdGVkIHZpZXcsIGlmIHRoYXQncyB3aGF0J3MgbmVlZGVkLgorCisgICAgVGhlIHRocmVlIHZpZXcgZmllbGRzIGluIHRoZSBhY2Nlc3MgbGluZSBhcmUgdXNlZCB0byBjb250cm9sIHdoaWNoCisgIHBvcnRpb25zIG9mIHRoZSBNSUIgdHJlZSBhIHBhcnRpY3VsYXIge2dyb3VwfSBjYW4gc2VlIChHRVQgZXQgYWwpLAorICBhbHRlciAoU0VUKSwgb3IgcmVxdWVzdCBOT1RJRllzIG9uLgorCisKKworICAgIFRoYXQncyBkZWFsdCB3aXRoIHRoZSAid2hhdCIgLSBub3cgZm9yIHRoZSAid2hvIi4KKyAgVGhpcyBpcyB0aGUgcm9sZSBvZiB0aGUgImdyb3VwIiBhbmQgImNvbTJzZWMiIGVudHJpZXMuCisKKyAgVGhlICJncm91cCIga2V5d29yZCBnaXZlcyBnZW5lcmFsIGNvbnRyb2wsIGJ5IG1hcHBpbmcgYmV0d2VlbiBhICJzZWN1cml0eQorICBuYW1lIiAoZm9yIGEgcGFydGljdWxhciBwcm90b2NvbCB2ZXJzaW9uKSwgYW5kIHRoZSBpbnRlcm5hbCBuYW1lIHVzZWQgaW4gdGhlCisgIGFjY2VzcyBsaW5lLiAgTm90ZSB0aGF0IHRoZSB0b2tlbiAiYW55IiBpcyBubyBsb25nZXIgYWNjZXB0YWJsZSBmb3IgdGhlCisgIHNlY3VyaXR5IG1vZGVsIC0gdGhlIG9yaWdpbmFsIHN1cHBvcnQgZm9yIHRoaXMgd2FzIGR1ZSBkdWUgdG8gYSBtaXNyZWFkaW5nCisgIG9mIHRoZSBSRkMuICBZb3Ugc2hvdWxkIHJlcGxhY2UgYW55IHN1Y2ggbGluZSB3aXRoIHNlcGFyYXRlIHZlcnNpb25zIGZvcgorICBlYWNoIG9mIHRoZSBkZXNpcmVkIHNlY3VyaXR5IG1vZGVscyAoJ3YxJywgJ3YyYycgJiAndXNtJykuCisKKyAgICBGb3IgU05NUHYxIGFuZCBTTk1QdjJjLCB0aGUgZ3JvdXAgbGluZSBpcyBqdXN0IGFuIGludGVybWVkaWF0ZSBzdGVwCisgIGJldHdlZW4gdGhlICJhY2Nlc3MiIGxpbmUgYW5kIHRoZSAiY29tMnNlYyIgbGluZSwgd2hpY2ggaXMgdGhlIGxhc3QgYml0CisgIG9mIHRoZSBqaWdzYXcuICBUaGUgImNvbTJzZWMiIGVudHJ5IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGEgInNlY3VyaXR5IG5hbWUiCisgIGZyb20gdGhlIHRyYWRpdGlvbmFsIGNvbW11bml0eSBzdHJpbmcsIHRha2luZyBpbnRvIGFjY291bnQgd2hlcmUgdGhlIHJlcXVlc3QKKyAgaGFzIGNvbWUgZnJvbS4gIFRodXMgdGhlIHNhbWUgY29tbXVuaXR5IHN0cmluZyBjYW4gZ2l2ZSBhY2Nlc3MgdG8gIGRpZmZlcmVudAorICBwb3J0aW9ucyBvZiB0aGUgdHJlZSwgZGVwZW5kaW5nIG9uIHdoZXJlIHRoZSByZXF1ZXN0IGlzIHNlbnQgZnJvbS4KKworICAgICBGb3IgZXhhbXBsZSwgaW4gYW4gZWFybGllciB2ZXJzaW9uIG9mIHRoZSBleGFtcGxlIGNvbmZpZyBmaWxlLCB0aGVyZQorICB3ZXJlIHR3byBjb20yc2VjIGxpbmVzIHdpdGggdGhlIGNvbW11bml0eSBzdHJpbmcgInB1YmxpYyIgLSBvbmUgd2FzIHZhbGlkCisgIGZyb20gYW55d2hlcmUgKHdpdGggdGhlIHNlY3VyaXR5IG5hbWUgInB1YmxpYyIpIGFuZCBvbmUgd2FzIG9ubHkgdmFsaWQKKyAgZnJvbSB0aGUgbG9jYWwgbmV0d29yayAodXNpbmcgdGhlIHNlY3VyaXR5IG5hbWUgIm15bmV0IikuCisgICAgIFRoZSBncm91cCBsaW5lcyBjb252ZXJ0ZWQgdGhlc2Ugc2VjdXJpdHkgbmFtZXMgaW50byB0aGUgZ3JvdXBzICJwdWJsaWMiCisgIGFuZCAibXlncm91cCIgcmVzcGVjdGl2ZWx5LCBhbmQgdGhlIGFjY2VzcyBsaW5lcyBnYXZlIHRoZXNlIHR3byBncm91cHMKKyAgdGhlIGFiaWxpdHkgdG8gR0VUIHZhbHVlcyBpbiB0aGUgJ3N5c3RlbScgc3ViLXRyZWUgKGZyb20gYW55d2hlcmUpIG9yCisgIHRoZSAnbWliLTInIHN1Yi10cmVlIChmcm9tIHRoZSBsb2NhbCBuZXR3b3JrKS4gIE5laXRoZXIgb2YgdGhlc2UgY291bGQKKyAgU0VUIGFueSB2YWx1ZXMgdGhvdWdoLCAoc2luY2UgdGhlIHdyaXRlLXRyZWUgd2FzICJub25lIiBpbiBib3RoIGNhc2VzKS4KKyAgICBTb21lb25lIG9uIHRoZSBsb2NhbCBtYWNoaW5lLCB1c2luZyB0aGUgY29tbXVuaXR5IHN0cmluZyAicHJpdmF0ZSIsCisgIGhhZCB0aGUgc2VjdXJpdHkgbmFtZSAibG9jYWwiIGFuZCB0aGUgZ3JvdXAgbmFtZSAibG9jYWwiLCBhbmQgaGVuY2UgaGFkCisgIGZ1bGwgYWNjZXNzIChib3RoIEdFVCBhbmQgU0VULCBhcyB3ZWxsIGFzIE5PVElGWSkgdG8gdGhlIHdob2xlIG9mIHRoZQorICBNSUIgdHJlZSAob3IgYXQgbGVhc3QgZXZlcnl0aGluZyB1bmRlciAuMSwgd2hpY2ggY292ZXJzIG1vc3QgdGhpbmdzISkKKworICAgICBOb3RlIHRoYXQgdGhlIHRocmVlIG9jY3VycmVuY2VzIG9mICJwdWJsaWMiLCBhcyBjb21tdW5pdHkgc3RyaW5nLAorICBzZWN1cml0eSBuYW1lIGFuZCBncm91cCBuYW1lLCB3ZXJlIHRocmVlIHRvdGFsbHkgc2VwYXJhdGUgdGhpbmdzLgorICBZb3UgY2FuJ3QgdXNlIGEgY29tbXVuaXR5IHN0cmluZyBpbiBhIHNlY3VyaXR5IG5hbWUgZmllbGQsIG9yIGVpdGhlcgorICBvZiB0aGVzZSBhcyBhIGdyb3VwIG5hbWUgKG9yIHZpY2UgdmVyc2EpLCB1bmxlc3MgeW91IHNldCB1cCBzdWl0YWJsZQorICBlbnRyaWVzIHRvIG1hcCBvbmUgbmFtZSBvbnRvIHRoZSBvdGhlci4KKworICAgIFdpdGggU05NUHYzLCB0aGUgc2VjdXJpdHkgbmFtZSBpcyBwYXJ0IG9mIHRoZSBiYXNpYyBwcm90b2NvbCwgYW5kIGNhbgorICBiZSB1c2VkIGRpcmVjdGx5IGluIGEgZ3JvdXAgZGVmaW5pdGlvbi4KKworICBBbmQgaGVyZSBjb25jbHVkZXMgb3VyIHRvdXIgb2YgdGhlIHZpZXctYmFzZWQgYWNjZXNzIGNvbnRyb2wgbWVjaGFuaXNtLgorICBQaGV3IQorCisKKworPGEgbmFtZT0iSG93X2RvX0lfY29uZmlndXJlX1NOTVB2X191c2Vyc18iPgorSG93IGRvIEkgY29uZmlndXJlIFNOTVB2MyB1c2Vycz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIENyZWF0ZSBhIGZpbGUgL3Zhci91Y2Qtc25tcC9zbm1wZC5jb25mIGZpbGUsIGNvbnRhaW5pbmcgdGhlIGxpbmUKKworCWNyZWF0ZVVzZXIge215VXNlcn0gTUQ1IHtteVBhc3N3b3JkfSBERVMKKworICAod2hlcmUge215VXNlcn0gYW5kIHtteVBhc3N3b3JkfSBhcmUgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcywgX3dpdGhvdXRfCisgIHRoZSBicmFjZXMhKS4gIFRoZW4gc3RhcnQgKG9yIHJlLXN0YXJ0KSB0aGUgc25tcGQgYWdlbnQuCisgIFRoaXMgd2lsbCBjcmVhdGUgdGhlIG5ldyB1c2VyLiAgU2VlIHRoZSBhY2Nlc3MgY29udHJvbCBlbnRyaWVzIGFib3ZlCisgIGZvciBob3cgdG8gdXNlIHRoaXMsIGFuZCB0aGUgZmlsZSAnUkVBRE1FLnNubXB2MycgZm9yIG1vcmUgZGV0YWlscy4KKworCisKKzxhIG5hbWU9IlRoZV9fY3JlYXRlVXNlcl9fbGluZV9kaXNhcHBlYXJzX3doZW5fSV9zdGFydF90aGVfYWdlbnRfX19XaHlfIj4KK1RoZSAnY3JlYXRlVXNlcicgbGluZSBkaXNhcHBlYXJzIHdoZW4gSSBzdGFydCB0aGUgYWdlbnQuICBXaHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGF0J3MgZGVsaWJlcmF0ZS4gICBUaGUgYWdlbnQgcmVtb3ZlcyB0aGUgKGh1bWFuLXJlYWRhYmxlKSAnY3JlYXRlVXNlcicKKyAgZGlyZWN0aXZlLCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhbiBlcXVpdmFsZW50ICd1c21Vc2VyJy4gIFRoaXMKKyAgY29udGFpbnMgdGhlIHNhbWUgaW5mb3JtYXRpb24sIGJ1dCBpbiBhIGZvcm0gdGhhdCdzIG9ubHkgbWVhbmluZ2Z1bAorICBpbnRlcm5hbGx5LiAgVGhpcyBtZWFucyB0aGF0IHRoZSBwYXNzd29yZCBpcyBub3QgbG9uZ2VyIHN0b3JlZCBpbgorICBhIGh1bWFuLXJlYWRhYmxlIGZvcm0uICBBZGRpdGlvbmFsbHksIHRoZSBwYXNzd29yZCBoYXMgYmVlbiBjb252ZXJ0ZWQKKyAgdG8gYSBrZXkgdGhhdCBjYW4gb25seSBiZSB1c2VkIHRvIGFjY2VzcyB0aGUgbG9jYWwgbWFjaGluZS4gIElmIHNvbWVvbmUKKyAgc3RvbGUgdGhlIG5ldyB1c21Vc2VyIGxpbmUgb24gdGhpcyBtYWNoaW5lLCB0aGV5IGNvdWxkIG5vdCB1c2UgdGhhdAorICBpbmZvcm1hdGlvbiB0byBhY2Nlc3MgYW55IG9mIHlvdXIgb3RoZXIgYWdlbnRzLgorCisKKworPGEgbmFtZT0iV2hhdF9zX3RoZV9kaWZmZXJlbmNlX2JldHdlZW5fX3Zhcl91Y2Rfc25tcF9hbmRfX3Vzcl9sb2NhbF9zaGFyZV9zbm1wXyI+CitXaGF0J3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAvdmFyL3VjZC1zbm1wIGFuZCAvdXNyL2xvY2FsL3NoYXJlL3NubXA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vc3QgInN0YXRpYyIgYWdlbnQgY29uZmlndXJhdGlvbiBzaG91bGQgZ28gaW4gdGhlIHRyYWRpdGlvbmFsIGxvY2F0aW9uCisgICh0eXBpY2FsbHkgL3Vzci9sb2NhbC9zaGFyZS9zbm1wL3NubXBkLmNvbmYgb3IgL2V0Yy9zbm1wKS4gICBUaGUKKyAgL3Zhci91Y2Qtc25tcCAob3IgL3Zhci9uZXQtc25tcCkgbG9jYXRpb24gaXMgdXNlZCBmb3IgaW5mb3JtYXRpb24gc2V0IGR1cmluZworICB0aGUgcnVubmluZyBvZiB0aGUgYWdlbnQsIHdoaWNoIG5lZWRzIHRvIGJlIHBlcnNpc3RlbnQgYmV0d2VlbiBvbmUgcnVuIG9mCisgIHRoZSBhZ2VudCBhbmQgdGhlIG5leHQuCisKKyAgICBQdXR0aW5nIHRoZSAnY3JlYXRlVXNlcicgbGluZSBpbiB0aGlzIHBlcnNpc3RlbnQgZmlsZSBpcyBhbiBleGNlcHRpb24sCisgIGZvciBzZWN1cml0eSByZWFzb25zIChzZWUgYWJvdmUpLiAgSW4gZ2VuZXJhbCB5b3Ugc2hvdWxkbid0IG5lZWQgdG8gcHV0CisgIGFueXRoaW5nIGVsc2UgaGVyZS4KKworCisKKzxhIG5hbWU9Ik15X25ld19hZ2VudF9pc19pZ25vcmluZ190aGVfb2xkX3NubXBkX2NvbmZfZmlsZV9fV2h5XyI+CitNeSBuZXcgYWdlbnQgaXMgaWdub3JpbmcgdGhlIG9sZCBzbm1wZC5jb25mIGZpbGUuIFdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGUgbW9zdCBsaWtlbHkgZXhwbGFuYXRpb24gaXMgdGhhdCB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIGFnZW50IGlzCisgIGxvb2tpbmcgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24gdGhhbiB0aGUgcHJldmlvdXMgb25lLiAgVGhpcyBpcyBjb21tb25seQorICBleHBlcmllbmNlZCB3aGVuIHJlcGxhY2luZyBhIHJlYWR5LWluc3RhbGxlZCB2ZXJzaW9uIChlLmcuIGZyb20gYSB2ZW5kb3IKKyAgZGlzdHJpYnV0aW9uKSwgd2l0aCB0aGUgY3VycmVudCByZWxlYXNlIGluc3RhbGxlZCBmcm9tIHRoZSBzb3VyY2UuCisKKyAgICBUaGUgZGVmYXVsdCBsb2NhdGlvbiBmb3IgdGhpcyBmaWxlIHdpdGggdGhlIGJhc2ljIGRpc3RyaWJ1dGlvbiBpcworICAvdXNyL2xvY2FsL3NoYXJlL3NubXAvc25tcGQuY29uZiAob3IgUFJFRklYL3NoYXJlL3NubXAvc25tcGQuY29uZikuCisgIFJlYWR5LWluc3RhbGxlZCB2ZXJzaW9ucyBvZnRlbiBsb29rIGZvciB0aGUgZmlsZSBhcyAvZXRjL3NubXBkLmNvbmYsCisgIG9yIC9ldGMvc25tcC9zbm1wZC5jb25mLiAgVHJ5IG1vdmluZyB0aGUgb2xkIGNvbmZpZyBmaWxlIHRvIHRoZSBuZXcKKyAgbG9jYXRpb24sIGFuZCByZXN0YXJ0IHRoZSBhZ2VudC4KKworICAgIFdpdGggcmVsZWFzZSA1LjAsIHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlIGNoYW5nZWQgZnJvbSAidWNkLXNubXAiCisgIHRvICJuZXQtc25tcCIsIGFuZCB0aGlzIGNoYW5nZSB3YXMgcmVmbGVjdGVkIGluIHRoZSBuYW1lIG9mIHRoZSBwZXJzaXN0ZW50CisgIC92YXIgZGlyZWN0b3J5LiAgU28gYSB2NSBOZXQtU05NUCBhZ2VudCB3aWxsIG5vdCBsb29rIGluCisgIC92YXIvdWNkLXNubXAvc25tcGQuY29uZiBmb3Igc2V0dGluZ3MgZnJvbSBhIHY0IFVDRCBhZ2VudC4KKworCisKKzxhIG5hbWU9IldoeV9hbV9JX2dldHRpbmdfX0Nvbm5lY3Rpb25fcmVmdXNlZF9fIj4KK1doeSBhbSBJIGdldHRpbmcgIkNvbm5lY3Rpb24gcmVmdXNlZCI/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIGlzIGFjdHVhbGx5IG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgYWNjZXNzIGNvbnRyb2wgbWVjaGFuaXNtCisgICh0aG91Z2ggdGhhdCdzIGFuIHVuZGVyc3RhbmRhYmxlIG1pc3Rha2UpLiAgVGhpcyBpcyB0aGUgcmVzdWx0IG9mCisgIHRoZSBUQ1Agd3JhcHBlciBtZWNoYW5pc20gdXNpbmcgdGhlIGZpbGVzICdob3N0cy5hbGxvdycgYW5kICdob3N0cy5kZW55JworICB0byBjb250cm9sIGFjY2VzcyB0byB0aGUgc2VydmljZS4gIFNvbWUgZGlzdHJpYnV0aW9ucyBtYXkgY29tZSB3aXRoCisgIHRoaXMgZW5hYmxlZCBhdXRvbWF0aWNhbGx5IC0gb3RoZXJ3aXNlIHlvdSBuZWVkIHRvIHNlbGVjdCBpdCBleHBsaWNpdGx5CisgIGJ5IGNvbmZpZ3VyaW5nIHVzaW5nICctLXdpdGgtbGlid3JhcCcuCisKKyAgICBUaGUgc2ltcGxlc3Qgd2F5IHRvIGF2b2lkIHRoaXMgcHJvYmxlbSBpcyB0byBhZGQgdGhlIGxpbmUKKworCQlzbm1wZDogQUxMCisKKyAgaW4gdGhlIGZpbGUgL2V0Yy9ob3N0cy5hbGxvdyAob3Igd2hlcmV2ZXIgdGhpcyBmaWxlIGlzIG9uIHlvdXIgc3lzdGVtKS4KKyAgVGhvdWdoIGJlIGF3YXJlIHRoYXQgZG9pbmcgdGhpcyByZW1vdmVzIG9uZSBsZXZlbCBvZiBwcm90ZWN0aW9uIGFuZCBhbGxvd3MKKyAgYW55b25lIHRvIHRyeSBhbmQgcXVlcnkgeW91ciBhZ2VudCAodGhvdWdoIHRoZSBhZ2VudCdzIG93biBhY2Nlc3MgY29udHJvbAorICBtZWNoYW5pc21zIGNhbiBzdGlsbCBiZSB1c2VkIHRvIHJlc3RyaWN0IHdoYXQgLSBpZiBhbnl0aGluZyAtIHRoZXkgY2FuIHNlZSkuCisKKyAgTm90ZSB0aGF0IHBlcnNvbmFsIGZpcmV3YWxscyAoc3VjaCBhcyBMaW51eCcgaXBjaGFpbnMgb3IgaXB0YWJsZXMgbWVjaGFuaXNtKQorICBtYXkgaGF2ZSBhIHNpbWlsYXIgZWZmZWN0ICh0aG91Z2ggdHlwaWNhbGx5IHRoaXMgd29uJ3QgYmUgbG9nZ2VkKS4KKyAgU2VlIHRoZSBlYXJsaWVyIGVudHJ5CisgICAgUmVxdWVzdHMgYWx3YXlzIHNlZW0gdG8gdGltZW91dCwgYW5kIGRvbid0IGdpdmUgbWUgYW55dGhpbmcgYmFjay4gIFdoeT8KKworCisgCis8YSBuYW1lPSJJX21fZ2V0dGluZ19lcnJvcnNfYWJvdXRfX2JhZF9zZWN1cml0eV9tb2RlbF9fX193aHlfIj4KK0knbSBnZXR0aW5nIGVycm9ycyBhYm91dCAiYmFkIHNlY3VyaXR5IG1vZGVsIiAtIHdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBVbnRpbCByZWxlYXNlIDQuMiwgdGhlIGFjY2VzcyBjb250cm9sIGhhbmRsaW5nIGFjY2VwdGVkIHRoZSB0b2tlbiAiYW55IiAKKyAgdG8gY292ZXIgYWxsIG9mIHRoZSByZWNvZ25pc2VkIHNlY3VyaXR5IG1vZGVscy4gIFRoaXMgaXMgZXhwbGljaXRseQorICBmb3JiaWRkZW4gaW4gdGhlIHJlbGV2YW50IFJGQywgc28gc3VwcG9ydCBmb3IgdGhpcyBpcyBiZWluZyB3aXRoZHJhd24uCisgICAgQXMgYW4gaW50ZXJpbSBtZWFzdXJlLCBpdCBpcyBjdXJyZW50bHkgYWNjZXB0ZWQgKHdpdGggdGhlIHdhcm5pbmcgeW91CisgIHNlZSksIGJ1dCB0aGlzIHdpbGwgbm90IGJlIHRoZSBjYXNlIGluIGZ1dHVyZSByZWxlYXNlcyBvZiB0aGUgYWdlbnQuCisgCisgICAgWW91IHNob3VsZCByZXBsYWNlIHRoZSB0b2tlbiAnYW55JyB3aXRoICd2MScsICd2MmMnIG9yICd1c20nIGFzCisgIGFwcHJvcHJpYXRlLiAgSWYgeW91IHdhbnQgdG8gc3VwcG9ydCBhbGwgdGhyZWUgb2YgdGhlc2Ugc2VjdXJpdHkgbW9kZWxzLAorICB5b3UnbGwgbmVlZCB0byB1c2UgdGhyZWUgZGlzdGluY3QgZ3JvdXAgbGluZXMsIG9uZSBmb3IgZWFjaC4gU2VlIHRoZQorICBleGFtcGxlIHNubXBkLmNvbmYgZmlsZSBmb3IgZGV0YWlscy4KKworICAKKworPGEgbmFtZT0iSV9tX2dldHRpbmdfZXJyb3JzX2Fib3V0X19iYWRfcHJlZml4X21hdGNoX3BhcmFtZXRlcl9fX193aHlfIj4KK0knbSBnZXR0aW5nIGVycm9ycyBhYm91dCAiYmFkIHByZWZpeCBtYXRjaCBwYXJhbWV0ZXIiIC0gd2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBxdWVzdGlvbi4gIFdpdGggNC4yLCB0aGUgc3ludGF4IG9mIHRoZQorICAnYWNjZXNzJyBjb25maWd1cmUgbGluZSBoYXMgY2hhbmdlZCwgYW5kIGEgdmFsdWUgb2YgJzAnIGlzIG5vIGxvbmdlcgorICBhY2NlcHRhYmxlIGZvciB0aGUgc2l4dGggZmllbGQuICBTaW1wbHkgcmVwbGFjZSB0aGlzIHdpdGggdGhlIHdvcmQgJ2V4YWN0Jy4KKworCisgIAorPGEgbmFtZT0iV2h5X2Nhbl90X0lfc2VlX3ZhbHVlc19pbl90aGVfVUNEYXZpc19fZXh0ZW5zaWJsZV9fb3JfX2Rpc2tfX3RyZWVzXyI+CitXaHkgY2FuJ3QgSSBzZWUgdmFsdWVzIGluIHRoZSBVQ0RhdmlzICdleHRlbnNpYmxlJyBvciAnZGlzaycgdHJlZXM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBCb3RoIHRoZXNlIHRyZWVzIGFyZSBkZXNpZ25lZCB0byByZXBvcnQgdGhpbmdzIHlvdSBhc2sgaXQgdG8gcmVwb3J0CisgIG9uLiAgSWYgeW91IGRvbid0IGRlY2xhcmUgYW55dGhpbmcgaW4gdGhlIHNubXBkLmNvbmYgZmlsZSBmb3IgaXQgdG8KKyAgbW9uaXRvciwgaXQgd2lsbCBub3QgcmVwb3J0IGFueXRoaW5nLiAgU2VlIHRoZSBzbm1wZC5jb25mIG1hbnVhbCBwYWdlCisgIGFuZCB0aGUgRVhBTVBMRS5jb25mIGZpbGUgZm9yIGRldGFpbHMgb24gY29uZmlndXJpbmcgdGhlIGFnZW50LgorCisgIE9wdGlvbmFsbHksIHJ1biBzbm1wY29uZiAtZyBtb25pdG9yaW5nIHRvIGhlbHAgeW91IHNldCB1cCB0aGlzCisgIHNlY3Rpb24gb2YgdGhlIHNubXBkLmNvbmYgZmlsZS4KKworCisKK1doeSBjYW4ndCBJIHNlZSB2YWx1ZXMgaW4gdGhlIFVDRGF2aXMgJ21lbW9yeScgb3IgJ3Ztc3RhdCcgdHJlZXM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlc2UgbWliIG1vZHVsZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gYWxsIG9wZXJhdGluZyBzeXN0ZW1zLCBhbmQKKyAgd2lsbCBub3QgYmUgaW5jbHVkZWQgb24gYW55IG90aGVyIHN5c3RlbS4gIEN1cnJlbnRseSwgdGhleSBhcmUgb25seQorICBzdXBwb3J0ZWQgb24gTGludXgsIEhQLVVYIChtZW1vcnkgb25seSksIFNvbGFyaXMsIEJTRGkgKHZtc3RhdCBvbgorICBCU0RpNCBvbmx5KSwgRHluaXgsIEZyZWVCU0QsIE5ldEJTRCBhbmQgT3BlbkJTRC4KKyAgICBJZiB5b3Ugd2FudCB0byBoZWxwIHBvcnQgaXQgdG8gb3RoZXIgc3lzdGVtcywgbGV0IHVzIGtub3cuCisKKyAgTm90ZSB0aGF0IHRoZXNlIHN1YnRyZWVzIG9ubHkgcmVwb3J0IHRoZSBjdXJyZW50IHVzYWdlIHdoZW4KKyAgZXhwbGljaXRseSBxdWVyaWVkLiAgVGhleSBkbyAqbm90KiBnZW5lcmF0ZSB0cmFwcyB3aGVuIHRoZQorICB1c2FnZSBzdHJheXMgb3V0c2lkZSB0aGUgY29uZmlndXJlZCBib3VuZHMuCisgIFNlZSB0aGUgZWFybGllciBGQVEgZW50cnkKKyAgICBXaGF0IHRyYXBzIGFyZSBzZW50IGJ5IHRoZSBhZ2VudD8KKworCisKKzxhIG5hbWU9IldoYXRfZG9fdGhlX0NQVV9zdGF0aXN0aWNzX21lYW5fX19pc190aGlzX3RoZV9sb2FkX2F2ZXJhZ2VfIj4KK1doYXQgZG8gdGhlIENQVSBzdGF0aXN0aWNzIG1lYW4gLSBpcyB0aGlzIHRoZSBsb2FkIGF2ZXJhZ2U/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgTm8uICBVbmZvcnR1bmF0ZWx5LCB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbiBvZiB0aGUgdmFyaW91cyBDUFUgc3RhdGlzdGljcworICB3YXMgYSBsaXR0bGUgdmFndWUuICBJdCByZWZlcnJlZCB0byBhICJwZXJjZW50YWdlIiwgd2l0aG91dCBzcGVjaWZ5aW5nCisgIHdoYXQgcGVyaW9kIHRoaXMgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgb3Zlci4gIEl0IHdhcyB0aGVyZWZvcmUKKyAgaW1wbGVtZW50ZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgb24gZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMuCisKKyAgICBSZWNlbnQgcmVsZWFzZXMgaW5jbHVkZXMgInJhdyBjb3VudGVycyIsIHdoaWNoIGNhbiBiZSB1c2VkIHRvCisgIGNhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSB1c2FnZSBvdmVyIGFueSBkZXNpcmVkIHBlcmlvZC4gIFRoaXMgaXMKKyAgdGhlICJyaWdodCIgd2F5IHRvIGhhbmRsZSB0aGluZ3MgaW4gdGhlIFNOTVAgbW9kZWwuICBUaGUgb3JpZ2luYWwKKyAgZmxhd2VkIHBlcmNlbnRhZ2Ugb2JqZWN0cyBzaG91bGQgbm90IGJlIHVzZWQsIGFuZCB3aWxsIGJlIHJlbW92ZWQKKyAgaW4gYSBmdXR1cmUgcmVsZWFzZSBvZiB0aGUgYWdlbnQuCisKKyAgICBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgVW5peCBsb2FkIGF2ZXJhZ2UsIHdoaWNoIGlzCisgIGF2YWlsYWJsZSB2aWEgdGhlIGxvYWRUYWJsZSwgYW5kIGlzIHN1cHBvcnRlZCBvbiBhbGwgYXJjaGl0ZWN0dXJlcy4KKworCisKKzxhIG5hbWU9Ikhvd19kb19JX2dldF9wZXJjZW50YWdlX0NQVV91dGlsaXphdGlvbl91c2luZ19zc0NwdVJhd0lkbGVfIj4KK0hvdyBkbyBJIGdldCBwZXJjZW50YWdlIENQVSB1dGlsaXphdGlvbiB1c2luZyBzc0NwdVJhd0lkbGU/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoaXMgb25lIG9mIHRoZSAicmF3IGNvdW50ZXJzIiBtZW50aW9uZWQgaW4gdGhlIHByZXZpb3VzIGVudHJ5LgorICBZb3UgbmVlZCB0byB0YWtlIHR3byByZWFkaW5ncyBvZiB0aGlzIG9iamVjdCBhbmQgbG9vayBhdCB0aGUKKyAgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0uICBUaGF0IGRpZmZlcmVuY2UgZGl2aWRlZCBieSB0aGUgdG90YWwKKyAgbnVtYmVyIG9mICd0aWNrcycgYmV0d2VlbiB0aGUgdHdvIHJlYWRpbmdzICh3aGVyZSBvbmUgdGljayBpcworICBwcm9iYWJseSAwLjAxIHNlY29uZHMpIHdpbGwgZ2l2ZSB5b3UgdGhlIHBlcmNlbnRhZ2UgdXRpbGl6YXRpb24KKyAgb3ZlciB0aGF0IHBlcmlvZC4KKworCisKKzxhIG5hbWU9IldoYXRfYWJvdXRfbXVsdGlfcHJvY2Vzc29yX3N5c3RlbXNfIj4KK1doYXQgYWJvdXQgbXVsdGktcHJvY2Vzc29yIHN5c3RlbXM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBTb3JyeSAtIHRoZSBDUFUgc3RhdGlzdGljcyAoYm90aCBvcmlnaW5hbCBwZXJjZW50YWdlcywgYW5kIHRoZQorICBuZXdlciByYXcgc3RhdGlzdGljcykgYm90aCByZWZlciB0byB0aGUgc3lzdGVtIGFzIGEgd2hvbGUuICBUaGVyZQorICBpcyBjdXJyZW50bHkgbm8gd2F5IHRvIGFjY2VzcyBpbmRpdmlkdWFsIHN0YXRpc3RpY3MgZm9yIGEgcGFydGljdWxhcgorICBwcm9jZXNzb3IgKGV4Y2VwdCBvbiBTb2xhcmlzIHN5c3RlbXMgLSBzZWUgYmVsb3cpLgorCisgICAgTm90ZSB0aGF0IGFsdGhvdWdoIHRoZSBIb3N0IFJlc291cmNlcyB0YWJsZSBpbmNsdWRlcyBhIGhyUHJvY2Vzc29yVGFibGUsCisgIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHN1ZmZlcnMgZnJvbSB0d28gbWFqb3IgZmxhd3MuICBGaXJzdGx5LCBpdAorICBkb2Vzbid0IGN1cnJlbnRseSByZWNvZ25pc2UgdGhlIHByZXNlbmNlIG9mIG11bHRpcGxlIHByb2Nlc3NvcnMsIGFuZAorICBzaW1wbHkgYXNzdW1lcyB0aGF0IGFsbCBzeXN0ZW1zIGhhdmUgcHJlY2lzZWx5IG9uZSBDUFUuICBTZWNvbmRseSwgaXQKKyAgZG9lc24ndCBjYWxjdWxhdGUgdGhlIGhyUHJvY2Vzc29yTG9hZCB2YWx1ZSBjb3JyZWN0bHksIGFuZCBlaXRoZXIgcmV0dXJucworICBhIGR1bW15IHZhbHVlIChiYXNlZCBvbiB0aGUgbG9hZCBhdmVyYWdlKSBvciBub3RoaW5nIGF0IGFsbC4KKworICAgIEFzIG9mIG5ldC1zbm1wIHZlcnNpb24gNS4xLCB0aGUgU29sYXJpcyBvcGVyYXRpbmcgc3lzdGVtIGRlbGl2ZXJzIHNvbWUKKyAgaW5mb3JtYXRpb24gYWJvdXQgbXVsdGlwbGUgQ1BVJ3Mgc3VjaCBhcyBzcGVlZCBhbmQgdHlwZS4KKworICAgIE90aGVyIHRoYW4gdGhhdCwgdG8gbW9uaXRvciBhIG11bHRpLXByb2Nlc3NvciBzeXN0ZW0sIHlvdSdyZSBjdXJyZW50bHkKKyAgb3V0IG9mIGx1Y2suICBXZSBob3BlIHRvIGFkZHJlc3MgdGhpcyBpbiBhIGZ1dHVyZSByZWxlYXNlIG9mIHRoZSBhZ2VudC4KKyAgQnV0IHlvdSd2ZSBnb3QgdGhlIHNvdXJjZSwgc28geW91IGNhbiBhbHdheXMgaGF2ZSBhIGdvIHlvdXJzZWxmIDotKQorCisKKworPGEgbmFtZT0iVGhlX3NwZWVkX3R5cGVfb2ZfbXlfbmV0d29ya19pbnRlcmZhY2VzX2lzX3dyb25nX19faG93X2Nhbl9JX2ZpeF9pdF8iPgorVGhlIHNwZWVkL3R5cGUgb2YgbXkgbmV0d29yayBpbnRlcmZhY2VzIGlzIHdyb25nIC0gaG93IGNhbiBJIGZpeCBpdD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgd2lsbCBwcm92aWRlIGEgbWVjaGFuaXNtIGZvciBkZXRlcm1pbmluZworICB0aGUgc3BlZWQgYW5kIHR5cGUgb2YgbmV0d29yayBpbnRlcmZhY2VzLCBidXQgbWFueSBkbyBub3QuICBJbiB0aGlzCisgIGNhc2UsIHRoZSBhZ2VudCBhdHRlbXB0cyB0byBndWVzcyB0aGUgbW9zdCBhcHByb3ByaWF0ZSB2YWx1ZXMsIGJhc2VkCisgIG9uIHRoZSBuYW1lIG9mIHRoZSBpbnRlcmZhY2UuCisgICAgVmVyc2lvbiA0LjIgYWxsb3dzIHlvdSB0byBvdmVycmlkZSB0aGVzZSBndWVzc2VkIHZhbHVlcywgdXNpbmcgdGhlCisgIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlICdpbnRlcmZhY2UnLCBzcGVjaWZ5aW5nIHRoZSBuYW1lLCB0eXBlIGFuZAorICBzcGVlZCBvZiBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvcgorICBmYXN0LWV0aGVybmV0LCBvciBkaWFsLXVwIGludGVyZmFjZXMsIHdoZXJlIHRoZSBzcGVlZCBjYW5ub3QgYmUKKyAgZ3Vlc3NlZCBmcm9tIHRoZSBuYW1lLgorICAgIFNlZSB0aGUgc25tcGQuY29uZig1KSBtYW4gcGFnZSBmb3IgZGV0YWlscy4KKyAgCisKKworPGEgbmFtZT0iVGhlX2ludGVyZmFjZV9zdGF0aXN0aWNzX2Zvcl9teV9zdWJpbnRlcmZhY2VzX2FyZV9hbGxfemVyb19fX3doeV8iPgorVGhlIGludGVyZmFjZSBzdGF0aXN0aWNzIGZvciBteSBzdWJpbnRlcmZhY2VzIGFyZSBhbGwgemVybyAtIHdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFVuZm9ydHVuYXRlbHksIG1vc3Qga2VybmVscyB0aGF0IHN1cHBvcnQgbXVsdGlwbGUgbG9naWNhbAorICBpbnRlcmZhY2VzIG9uIGEgc2luZ2xlIHBoeXNpY2FsIGludGVyZmFjZSwgZG9uJ3Qga2VlcCBzZXBhcmF0ZQorICBzdGF0aXN0aWNzIGZvciBlYWNoIG9mIHRoZXNlLiAgVGhleSBzaW1wbHkgcmVwb3J0IHRoZSBvdmVyYWxsCisgIHN0YXRpc3RpY3MgZm9yIHRoZSBwaHlzaWNhbCBpbnRlcmZhY2UgaXRzZWxmLgorICAgIFRoZXJlJ3Mgbm8gZWFzeSB3YXkgYXJvdW5kIHRoaXMgcHJvYmxlbSAtIHRoZSBhZ2VudCBjYW4gb25seQorICByZXBvcnQgc3VjaCB2YWx1ZXMgYXMgaXQgY2FuIGZpbmQgb3V0LiAgSWYgdGhlIGtlcm5lbCBkb2Vzbid0CisgIGtlZXAgdHJhY2sgb2YgdGhlc2UgZmlndXJlcywgdGhlIGFnZW50IGNhbid0IHJlcG9ydCB0aGVtLgorICAgIFNvcnJ5IQorCisKKzxhIG5hbWU9IldoYXRfZG9lc19fa2xyZWFkX19fYmFkX2FkZHJlc3NfX21lYW5fIj4KK1doYXQgZG9lcyAia2xyZWFkOiAgYmFkIGFkZHJlc3MiIG1lYW4/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBtZWFucyB0aGF0IHRoZSBhZ2VudCB3YXMgdW5hYmxlIHRvIGV4dHJhY3Qgc29tZSBvZiB0aGUKKyAgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZyb20gdGhlIGtlcm5lbCBzdHJ1Y3R1cmVzLiAgVGhpcyBpcworICBwb3NzaWJseSBkdWUgdG86CisJLSBlaXRoZXIgbG9va2luZyBpbiB0aGUgd3JvbmcgcGxhY2UgZm9yIGtlcm5lbCBpbmZvcm1hdGlvbgorCQkoY2hlY2sgdGhlIHZhbHVlIG9mIEtFUk5FTF9MT0MpCisJLSBhbiBlcnJvciBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgcGFydCBvZiB0aGUgTUlCIHRyZWUKKwkJZm9yIHRoYXQgYXJjaGl0ZWN0dXJlLiAgVHJ5IGFuZCBpZGVudGlmeSB3aGljaAorCQlPSUQgaXMgZ2VuZXJhdGluZyB0aGUgZXJyb3IsIGFuZCBjb250YWN0IHRoZQorCQlsaXN0ICduZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0JworCQlSZW1lbWJlciB0byB0ZWxsIHVzIHdoYXQgYXJjaGl0ZWN0dXJlIHlvdSBoYXZlIQorCisKKworPGEgbmFtZT0iV2hhdF9kb2VzX19ubGlzdF9lcnJfX193b21iYXRfbm90X2ZvdW5kX19fb3Jfc2ltaWxhcl9fbWVhbl8iPgorV2hhdCBkb2VzICJubGlzdCBlcnI6ICB3b21iYXQgbm90IGZvdW5kIiAob3Igc2ltaWxhcikgbWVhbj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIG1lYW5zIHRoYXQgdGhlIGFnZW50IHdhc24ndCBhYmxlIHRvIGxvY2F0ZSBvbmUgb2YgdGhlCisgIGtlcm5lbCBzdHJ1Y3R1cmVzIGl0IHdhcyBsb29raW5nIGZvci4gIFRoaXMgbWF5IG9yIG1heSBub3QKKyAgYmUgaW1wb3J0YW50IC0gc29tZSBzeXN0ZW1zIHByb3ZpZGUgYWx0ZXJuYXRpdmUgbWVjaGFuaXNtcworICBmb3Igb2J0YWluaW5nIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gLSBTb2xhcmlzLCBmb3IgZXhhbXBsZSwKKyAgY2FuIHByb2R1Y2UgYSB3aG9sZSBzbGV3IG9mIHN1Y2ggbWVzc2FnZXMsIGJ1dCBzdGlsbCBwcm92aWRlCisgIHRoZSBjb3JyZWN0IGluZm9ybWF0aW9uLgorICAgIFRoaXMgZXJyb3Igb25seSBvY2N1cnMgaWYgeW91IGhhdmUgdXNlZCB0aGUgZmxhZworICAnLS1lbmFibGUtZGVidWdnaW5nJyBhcyBwYXJ0IG9mIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24uCisgIFJlY29uZmlndXJlIHRoZSBhZ2VudCB3aXRoICctLWRpc2FibGUtZGVidWdnaW5nJyBhbmQgdGhlc2UKKyAgbWVzc2FnZXMgd2lsbCBkaXNhcHBlYXIuICAoSXQgd29uJ3QgZml4IHRoZSB1bmRlcmx5aW5nIHByb2JsZW0sCisgIGJ1dCBhdCBsZWFzdCB5b3Ugd29uJ3QgYmUgbmFnZ2VkIGFib3V0IGl0KS4KKworCisKKzxhIG5hbWU9Ikhvd19hYm91dF9fQ2FuX3Rfb3Blbl9fZGV2X2ttZW1fXyI+CitIb3cgYWJvdXQgIkNhbid0IG9wZW4gL2Rldi9rbWVtIj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBkZXZpY2UgaXMgbm9ybWFsbHkgcmVzdHJpY3RlZCB0byBqdXN0IGJlaW5nIGFjY2Vzc2libGUgYnkgcm9vdAorICAob3IgcG9zc2libHkgYnkgYSBzcGVjaWFsIGdyb3VwIHN1Y2ggYXMgJ2ttZW0nIG9yICdzeXMnKS4gIFRoZSBhZ2VudAorICBtdXN0IGJlIGFibGUgdG8gcmVhZCB0aGlzIGRldmljZSB0byBvYnRhaW4gdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbgorICBhYm91dCB0aGUgcnVubmluZyBzeXN0ZW0uCisgICAgQ2hlY2sgdGhhdCB0aGUgYWdlbnQgd2FzIHN0YXJ0ZWQgYnkgcm9vdCwgYW5kIGlzIHJ1bm5pbmcgd2l0aCBVSUQgMAorICAob3Igc3VpdGFibGUgR0lEIGlmIGFwcHJvcHJpYXRlKS4gIFRoZSBhZ2VudCB3aWxsIG5vcm1hbGx5IGNvbnRpbnVlCisgIHRvIHJ1biB3aXRob3V0IHRoaXMgbGV2ZWwgb2YgYWNjZXNzIHBlcm1pc3Npb24sIGJ1dCB3b24ndCBiZSBhYmxlIHRvCisgIHJlcG9ydCB2YWx1ZXMgZm9yIG1hbnkgb2YgdGhlIHZhcmlhYmxlcyAocGFydGljdWxhcmx5IHRob3NlIHJlbGF0aW5nCisgIHRvIG5ldHdvcmsgc3RhdGlzdGljcykuCisKKyAKKworPGEgbmFtZT0iVGhlX2FnZW50X2lzX2NvbXBsYWluaW5nX2Fib3V0X19zbm1wZF9jb25mX19fX1doZXJlX2lzX3RoaXNfIj4KK1RoZSBhZ2VudCBpcyBjb21wbGFpbmluZyBhYm91dCAnc25tcGQuY29uZicuICBXaGVyZSBpcyB0aGlzPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBJdCBkb2Vzbid0IGV4aXN0IGluIHRoZSBkaXN0cmlidXRpb24gYXMgc2hpcHBlZC4gIFlvdSBuZWVkIHRvCisgIGNyZWF0ZSBpdCB0byByZWZsZWN0IHlvdXIgbG9jYWwgcmVxdWlyZW1lbnQuCisgICAgVG8gZ2V0IHN0YXJ0ZWQsIHlvdSBjYW4gZWl0aGVyIGp1c3QgY3JlYXRlIHRoaXMgYXMgYW4gZW1wdHkgZmlsZSwKKyAgb3IgcnVuIHNubXBjb25mIHRvIGhlbHAgeW91IGNyZWF0ZSBvbmUuCisgICAgU2VlIHRoZSBzbm1wZC5jb25mKDUpIG1hbnVhbCBwYWdlIGZvciBmdXJ0aGVyIGRldGFpbHMuCisKKworCis8YSBuYW1lPSJUaGVfc3lzdGVtX3VwdGltZV9fc3lzVXBUaW1lX19yZXR1cm5lZF9pc193cm9uZ18iPgorVGhlIHN5c3RlbSB1cHRpbWUgKHN5c1VwVGltZSkgcmV0dXJuZWQgaXMgd3JvbmchCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIE9oIG5vIGl0J3Mgbm90LgorICBUaGUgZGVmaW5lZCBtZWFuaW5nIG9mICdzeXNVcFRpbWUnIGlzCisJInRoZSB0aW1lIC4uLiBzaW5jZSB0aGUgKm5ldHdvcmsgbWFuYWdlbWVudCoKKwkgcG9ydGlvbiBvZiB0aGUgc3lzdGVtIHdhcyByZS1pbml0aWFsaXplZC4iCisKKyAgSW4gb3RoZXIgd29yZHMsIHdoZW4gdGhlIHNubXAgYWdlbnQgd2FzIHN0YXJ0ZWQsIG5vdCB3aGVuIHRoZQorICBzeXN0ZW0gaXRzZWxmIGxhc3QgYm9vdGVkLiAgVGhpcyBsYXR0ZXIgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlCisgIGluIHRoZSBIb3N0IFJlc291cmNlcyBNSUIgYXMgImhvc3QuaHJTeXN0ZW0uaHJTeXN0ZW1VcFRpbWUiCisgIE5vdGUgdGhhdCBldmVuIGlmIHRoZSBmdWxsIEhvc3QgUmVzb3VyY2VzIGlzIG5vdCBzdXBwb3J0ZWQgb24KKyAgeW91ciBzeXN0ZW0sIGl0J3Mgd29ydGggY29uZmlndXJpbmcgaW4gdGhlIHN5c3RlbSBwb3J0aW9uIHVzaW5nCisKKwkJJy0td2l0aC1taWItbW9kdWxlcz1ob3N0L2hyX3N5c3RlbScKKworICBhbmQgcmVjb21waWxpbmcuICBUaGlzIHBhcnRpY3VsYXIgZ3JvdXAgaXMgcmVhc29uYWJseSBsaWtlbHkgdG8KKyAgd29yaywgZXZlbiBpZiBzb21lIG9mIHRoZSBvdGhlciBtb3JlIHN5c3RlbS1zcGVjaWZpYyBncm91cHMgZG9uJ3QuCisKKworCis8YSBuYW1lPSJIb3dfY2FuX0lfcmVkdWNlX3RoZV9tZW1vcnlfZm9vdHByaW50XyI+CitIb3cgY2FuIEkgcmVkdWNlIHRoZSBtZW1vcnkgZm9vdHByaW50PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBJbiBvcmRlciB0byByZWR1Y2UgdGhlIG1lbW9yeSBmb290cHJpbnQgKGZvciBpbnN0YW5jZSwgdG8KKyAgZW1iZWQgdGhlIHNubXBkIGludG8gYSBkZXZpY2UpLCB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyZSBvcHRpb25zCisgIGNvdWxkIGJlIHVzZWQuCisKKyAgJy0tZGlzYWJsZS1kZWJ1Z2dpbmcnCisgICAgIFRoaXMgdHVybnMgb2ZmIGFsbCBjb21waWxhdGlvbiBvZiBkZWJ1Z2dpbmcgaW5mby4KKworICAnLS1lbmFibGUtbWluaS1hZ2VudCcgJy0td2l0aC1vdXQtbWliLW1vZHVsZXM9ZXhhbXBsZXMvdWNkRGVtb1B1YmxpYycKKyAgICAgVGhpcyBjcmVhdGVzIGFuIGFnZW50IHRoZSBtaW5pbXVtIGFtb3VudCBvZiBNSUIgbW9kdWxlcworICAgICBjb21waWxlZCBpbi4KKyAgICAgTk9URTogSWYgeW91IG5lZWQgbW9yZSBNSUIgbW9kdWxlcyBhZGQgdGhlbiB3aXRoIHRoZSBvcHRpb24KKyAgICAgJy0td2l0aC1taWItbW9kdWxlcz0uLi4nIHlvdSBhZGQgb2YgY291cnNlIGV4dHJhIG1lbW9yeSBmb290cHJpbnQuCisKKyAgJy0td2l0aC10cmFuc3BvcnRzPVVEUCcKKyAgICAgVGhpcyBvcHRpb24gc3BlY2lmaWVzIHRoZSB0cmFuc3BvcnRzIGRvbWFpbiB5b3UgbmVlZC4KKyAgICAgRm9yIGEgc2ltcGxlIGFnZW50IFVEUCBzaG91bGQgYmUgc3VmZmljaWVudC4KKworICAgJy0td2l0aG91dC1rbWVtLXVzYWdlJworICAgICBUaGlzIGNhbiBiZSB1c2VkIGluIG9yZGVyIG5vdCB0byBpbmNsdWRlIHRoZSBjb2RlIHRoYXQKKyAgICAgb3BlcmF0ZXMgb24gdGhlIC9kZXYva21lbS4gVGhpcyBvcHRpb24gY2Fubm90IGJlIHVzZWQgd2hlbgorICAgICB5b3UgZG8gd2FudCBhIE1JQiBtb2R1bGUgY29tcGlsZWQgaW4gdGhhdCBkZXBlbmRzIG9uIGl0LgorCisgICAnLS13aXRoLW1pYmRpcnM9JyBhbmQgJy0td2l0aC1taWJzPScKKyAgICAgVGhlc2Ugb3B0aW9ucyBzcGVjaWZ5IG5vdCBsb2FkaW5nIHRoZSBNSUIgbW9kdWxlcyBmb3IgdGhlCisgICAgIGFnZW50LiBJdCByZWR1Y2VzIHRoZSBtZW1vcnkgZm9vdHByaW50IG9ubHkgZHVyaW5nCisgICAgIHJ1bnRpbWUuCisKKyAgT24gdG9wIG9mIHRoaXMgb25lIGNvdWxkIGV2ZW4gYXR0ZW1wdCB0byBleGNsdWRlIHRoZSBjb21wbGV0ZQorICBNSUIgbG9hZGluZyBmdW5jdGlvbmFsaXR5LCBidXQgdGhlcmUgaXMgY3VycmVudGx5IG5vCisgIGNvbmZpZ3VyZSBvcHRpb24gZm9yIHRoaXMuCisKKyAgT25jZSB0aGUgYWdlbnQgKHNubXBkKSBoYXMgYmVlbiBsaW5rZWQsIHlvdSBtaWdodCBhbHNvIHRyeSBydW5uaW5nCisgICdzdHJpcCBzbm1wZCcgdG8gcmVtb3ZlIHVuLW5lY2Vzc2FyeSBkZWJ1Zy9zeW1ib2wgaW5mb3JtYXRpb24uCisKKworCis8YSBuYW1lPSJDT01QSUxJTkciPgorQ09NUElMSU5HCis9PT09PT09PT0KKworPGEgbmFtZT0iSG93X2RvX0lfY29tcGlsZV93aXRoX19jY19faW5zdGVhZF9vZl9fZ2NjX18iPgorSG93IGRvIEkgY29tcGlsZSB3aXRoICdjYycgaW5zdGVhZCBvZiAnZ2NjJz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBSdW4gY29uZmlndXJlIHdpdGggLS13aXRoLWNjPWNjCisKKyAgTm90ZSB0aGF0IGlmIHlvdSd2ZSBhbHJlYWR5IHJ1biBjb25maWd1cmUgb25jZSwgaXQgd2lsbCBwcm9iYWJseSBoYXZlCisgIGRldGVjdGVkIHRoZSBwcmVzZW5jZSBvZiAnZ2NjJywgY2FjaGVkIHRoaXMgaW5mb3JtYXRpb24sIGFuZCBtYXkgc3RpbGwKKyAgdHJ5IHRvIHVzZSB0aGlzIGFueXdheS4gICBJbiB3aGljaCBjYXNlLCBzaW1wbHkgcmVtb3ZlIHRoZSAnY29uZmlnLmNhY2hlJworICBmaWxlIGJlZm9yZSByZS1ydW5uaW5nIGNvbmZpZ3VyZS4KKyAKKworCis8YSBuYW1lPSJCdXRfZ2NjX2RvZXNuX3RfY29tcGlsZV9pdF9zdWNjZXNzZnVsbHlfb25fbXlfbmV3X1NvbGFyaXNfc3lzdGVtX19XaHlfbm90XyI+CitCdXQgZ2NjIGRvZXNuJ3QgY29tcGlsZSBpdCBzdWNjZXNzZnVsbHkgb24gbXkgbmV3IFNvbGFyaXMgc3lzdGVtLiBXaHkgbm90PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFdoZW5ldmVyIHlvdSB1cGdyYWRlIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHVuZGVyIFNvbGFyaXMsIHlvdSBuZWVkIHRvCisgIHJlaW5zdGFsbCBnY2MsIGFuZCBydW4gdGhlICdmaXhpbmNsdWRlcycgc2NyaXB0LiAgKFRoaXMgaXMgcHJvYmFibHkKKyAgYSBzZW5zaWJsZSBzdGVwIHRvIHRha2Ugd2hlbiB5b3UgdXBncmFkZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSkuCisgICAgVW5kZXIgU29sYXJpcyAyLjYsIHRoZXJlIGlzIGFsc28gYSBidWcgaW4gdGhlIGdjYyAnZml4aW5jLnN2NCcgc2NyaXB0LgorICBUaGlzIG5lZWRzIGFuIGFkZGl0aW9uYWwgbGluZSBhcyBmb2xsb3dzOgorCisqKiogZml4aW5jLnN2cjQuY2xuICAgICBUaHUgSnVuIDE1IDIyOjAzOjI5IDE5OTUKKy0tLSBmaXhpbmMuc3ZyNCBUdWUgTm92IDI1IDA5OjQ3OjU3IDE5OTcKKyoqKioqKioqKioqKioqKgorKioqIDE5MSwxOTEgKioqKgorLS0tIDE5MSwxOTIgLS0tLQorICAgICAgICAgIHMvX19TVERDX18gLSAwID09IDAvIWRlZmluZWQgKF9fU1RSSUNUX0FOU0lfXykvZworKyAgICAgICAgIHMvX19TVERDX18gLSAwID09IDEvZGVmaW5lZCAoX19TVFJJQ1RfQU5TSV9fKS9nCisKKyAgTk9URTogVGhpcyBhcHBlYXJzIHRvIGhhdmUgYmVlbiByZXNvbHZlZC4KKworCisKK09uIFJlZEhhdCA4LjAgb3IgdXAgSSBnZXQgIi91c3IvYmluL2xkOiBjYW5ub3QgZmluZCAtbGVsZiI/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgUmVkSGF0IDguMCBhbmQgdXAgZG9lc24ndCBjb21lIHdpdGggbGliZWxmIGluc3RhbGxlZCAocHJvcGVybHkpIGJ5CisgIGRlZmF1bHQuICBJbiBvcmRlciB0byBidWlsZCBOZXQtU05NUCB5b3UnbGwgbmVlZCB0aGUgZWxmdXRpbHMtZGV2ZWwKKyAgcnBtIGluc3RhbGxlZCwgd2hpY2ggeW91IGN1cnJlbnRseSBkb24ndCBoYXZlLgorCisgIEFsdGVybmF0aXZlbHksIHRoaXMgY291bGQgcXVpY2tseSBmaXggdGhlIHByb2JsZW0gd2l0aG91dCByZXF1aXJpbmcKKyAgdGhlIC1kZXZlbCBycG0gaW5zdGFsbGVkIChhcyB0aGlzIGlzIG9uZSBvZiB0aGUgdGhpbmdzIHRoZSAtZGV2ZWwgcnBtCisgIGRvZXMgd2hlbiB5b3UgaW5zdGFsbCBpdCk6CisKKyAgICBjZCAvdXNyL2xpYiA7IGxuIC1zIGxpYmVsZi5zby4xIGxpYmVsZi5zbworCisgIE5vdGUgdGhhdCB0aGlzIHdpbGwgb25seSBhZmZlY3QgeW91IGlmIHlvdSBhcmUgdHJ5aW5nIHRvIGNvbXBpbGUgaW4KKyAgdGhlIGhvc3QgcmVzb3VyY2VzIG1pYiBzdXBwb3J0LCBhcyBpdCdsbCB0cnkgdG8gdXNlIHRoZSBycG0gbGlicmFyaWVzCisgIHdoaWNoIHdpbGwgaW4gdHVybiByZXF1aXJlIHRoYXQgbGliZWxmLmEgb3IgbGliZWxmLnNvIGJlIHByZXNlbnQuCisKKworCis8YSBuYW1lPSJJX21fZ2V0dGluZ19hbl9lcnJvcl9fYXV0b2hlYWRlcl9fbm90X2ZvdW5kX19fX3doYXRfc193cm9uZ18iPgorSSdtIGdldHRpbmcgYW4gZXJyb3IgImF1dG9oZWFkZXI6IG5vdCBmb3VuZCIgLSB3aGF0J3Mgd3Jvbmc/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyB1c3VhbGx5IGFwcGVhcnMgd2hlbiBjb21waWxpbmcgdGhlIGN1cnJlbnQgZGV2ZWxvcG1lbnQgc291cmNlCisgIHZlcnNpb24sIG9idGFpbmVkIHZpYSBDVlMuICBVbmZvcnR1bmF0ZWx5LCB0aGUgdGltZXN0YW1wcyBvbiBzb21lIG9mCisgIHRoZSBjb25maWd1cmUgZmlsZXMgYXJlIHN1Y2ggdGhhdCBtYWtlIGFzc3VtZXMgKG1pc3Rha2VubHkpIHRoYXQgdGhlCisgIGNvbmZpZ3VyZSBzY3JpcHQgbmVlZHMgdG8gYmUgcmUtZ2VuZXJhdGVkLgorICAgIEEgc2ltaWxhciBwcm9ibGVtIG1heSBhcmlzZSByZWxhdGluZyB0byAnYXV0b2NvbmYnLgorCisgICAgSW4gYm90aCBjYXNlcywgdGhpcyBjYW4gYmUgY29ycmVjdGVkIGJ5IHJ1bm5pbmcgdGhlIGNvbW1hbmQKKyAgIm1ha2UgLWsgdG91Y2hpdCIgYmVmb3JlIGF0dGVtcHRpbmcgdG8gbWFrZSB0aGUgbWFpbiBwYWNrYWdlLgorCisKKworPGEgbmFtZT0iV2hhdF9hYm91dF9hX2ZhaWxlZF9kZXBlbmRlbmN5X29uX19saWJjcnlwdG9fX19fV2hlcmVfY2FuX0lfZ2V0X3RoYXRfIj4KK1doYXQgYWJvdXQgYSBmYWlsZWQgZGVwZW5kZW5jeSBvbiAnbGliY3J5cHRvJz8gIFdoZXJlIGNhbiBJIGdldCB0aGF0PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoaXMgaXMgdHlwaWNhbGx5IGVuY291bnRlcmVkIHdoZW4gaW5zdGFsbGluZyBhIExpbnV4IFJQTSBvZgorICB0aGUgdWNkLXNubXAgcGFja2FnZS4gIFRoaXMgbGlicmFyeSBpcyBwYXJ0IG9mIHRoZSAnb3BlbnNzbCcKKyAgc3VpdGUsIHNvIHNpbXBseSBpbnN0YWxsIHRoYXQgUlBNIGZpcnN0LCBvciBkb3dubG9hZCB0aGUgc291cmNlCisgIGZyb20gZnRwOi8vZnRwLm9wZW5zc2wub3JnIGFuZCBjb21waWxlIGFuZCBpbnN0YWxsIHRoYXQuCisKKyAgICBXaGVuIGNvbXBpbGluZyB7VUNELE5ldH0tU05NUCBmcm9tIHNvdXJjZSwgdGhlIGNvbmZpZ3VyZSBzY3JpcHQKKyAgc2hvdWxkIGRldGVjdCB0aGF0IHRoaXMgbGlicmFyeSBpcyBub3QgcHJlc2VudCwgYW5kIHVzZSBhbHRlcm5hdGl2ZQorICBhcnJhbmdlbWVudHMgZm9yIE1ENS1iYXNlZCBhdXRoZW50aWNhdGlvbi4KKworICAgIElmIGVuY3J5cHRpb24gKG9yIFNIQTEtYmFzZWQgYXV0aGVudGljYXRpb24pIGlzIHJlcXVpcmVkLCB0aGVuCisgIHRoaXMgdHlwaWNhbGx5IHJlcXVpcmVzIGNvbXBpbGluZyBmcm9tIHNvdXJjZS4gIFVuZGVyIExpbnV4LCBib3RoCisgIHRoZSAnb3BlbnNzbCcgYW5kICdvcGVuc3NsLWRldmVsJyBSUE1zIHNob3VsZCBiZSBpbnN0YWxsZWQsIGFuZCB0aGUKKyAgJ2NvbmZpZy5jYWNoZScgZmlsZSByZW1vdmVkIGJlZm9yZSBydW5uaW5nICJjb25maWd1cmUgLS13aXRoLW9wZW5zc2wiCisgIGFuZCByZS1jb21waWxpbmcuCisKKworCis8YSBuYW1lPSJXaHlfaXNfdGhlX3Byb2plY3Rfd29ya3NwYWNlX2VtcHR5X3VuZGVyX1Zpc3VhbF9DX19fIj4KK1doeSBpcyB0aGUgcHJvamVjdCB3b3Jrc3BhY2UgZW1wdHkgdW5kZXIgVmlzdWFsIEMrKz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyBpcyBwcm9iYWJseSBkdWUgdG8gdGhlIGRpZmZlcmVudCB3YXlzIHRoYXQgVW5peCBhbmQgV2luZG93cworICBoYW5kbGUgdGV4dCBmaWxlIGxpbmUgdGVybWluYXRpb24uICBPbGRlciB2ZXJzaW9ucyBvZiBXaW5aaXAgZG9uJ3QKKyAgaGFuZGxlIHRoaXMgcHJvcGVybHksIGFuZCBWaXN1YWwgQysrIGdldHMgY29uZnVzZWQgKHBvb3IgZGVhciEpLgorICBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgV2luWmlwIGlzIHJlcG9ydGVkIHRvIHVucGFjayB0aGlzIGNvcnJlY3RseS4KKworCisKKzxhIG5hbWU9IldoeV9kb2VzX19tYWtlX3Rlc3RfX3NraXBfZml2ZV90ZXN0c18iPgorV2h5IGRvZXMgJ21ha2UgdGVzdCcgc2tpcCBmaXZlIHRlc3RzPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFlvdSBtZWFuIFQwNTNhZ2VudHYxdHJhcCwgVDA1NGFnZW50djJjdHJhcCwgVDA1NWFnZW50djFtaW50cmFwLAorICBUMDU2YWdlbnR2MmNtaW50cmFwIGFuZCBUMTEzYWdlbnR4dHJhcD8KKworICAgIFRoZXNlIHRlc3RzIHJlbHkgdXBvbiBmdW5jdGlvbmFsaXR5IGluIHRoZSBORVQtU05NUC1FWEFNUExFUy1NSUIKKyAgd2hpY2ggaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBkZWZhdWx0IGFnZW50IGNvbmZpZ3VyYXRpb24uICBUbworICBpbmNsdWRlIHRoZXNlIHRlc3RzLCBpbnZva2UgdGhlIGBjb25maWd1cmVgIHNjcmlwdCB0byBpbmNsdWRlCisgICAgICAnLS13aXRoLW1pYi1tb2R1bGVzPSJleGFtcGxlcy9leGFtcGxlIi4KKworCisKKzxhIG5hbWU9IldoeV9kb2VzX19tYWtlX3Rlc3RfX2NvbXBsYWluX2Fib3V0X2FfcGlkX2ZpbGVfIj4KK1doeSBkb2VzICdtYWtlIHRlc3QnIGNvbXBsYWluIGFib3V0IGEgcGlkIGZpbGU/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVHlwaWNhbGx5IGl0IHNheXMgc29tZXRoaW5nIGxpa2U6CisKKyAgICBjYXQ6ICBjYW5ub3Qgb3BlbiAvdG1wL3NubXAtdGVzdC0xLTg2OTQvKnBpZCoKKworICAgIEl0J3MgdHJ5aW5nIHRvIHRlbGwgeW91IHRoZSBwb3J0IGlzIGJsb2NrZWQgLSB0eXBpY2FsbHkgYmVjYXVzZQorICBhbm90aGVyIGNvcHkgb2YgdGhlIGFnZW50IGlzIHN0aWxsIHJ1bm5pbmcsIGxlZnQgb3ZlciBmcm9tIGZyb20gYQorICBwcmV2aW91cyB0ZXN0aW5nIHJ1bi4KKworICBJZiB5b3UgdHlwZSAncHMgLWVmJyB5b3Ugc2hvdWxkIG5vdGljZSBhbiBvcnBoYW5lZCBwcm9jZXNzIGxpa2U6CisKKyAgc25tcGQgLWQgLXIgLVUgLVAgL3RtcC9zbm1wLXRlc3QtNS0yNzI5NS9zbm1wZC5waWQuLi4KKworICBLaWxsIHRoaXMgcHJvY2Vzcy4KKworICBUaGlzIGNvdWxkIGJlIGhhcHBlbmluZyBmb3Igc2V2ZXJhbCByZWFzb25zIGluY2x1ZGluZzoKKworICAgIDEuICBZb3UgYXJlIHRyeWluZyB0byBkbyBjb25jdXJyZW50IHJ1bnMgb2YgJ21ha2UgdGVzdCcuCisKKyAgICAyLiAgT24gYSBzbG93IG1hY2hpbmUsIHRoZSBhZ2VudCBtaWdodCBiZSB0YWtpbmcgdG9vIGxvbmcgdG8KKyAgICAgIHN0YXJ0IHVwLiBUcnkgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBTTk1QX1NMRUVQCisgICAgICBpbiB0ZXN0aW5nL1JVTlRFU1RTIGZyb20gMSB0byBzb21ldGhpbmcgaGlnaGVyIC0gc2F5IDMgb3IgNS4KKworCisKKzxhIG5hbWU9IkNPRElORyI+CitDT0RJTkcKKz09PT09PQorCis8YSBuYW1lPSJIb3dfZG9fSV93cml0ZV9DX2NvZGVfdG9faW50ZWdyYXRlX3dpdGhfdGhlX2FnZW50XyI+CitIb3cgZG8gSSB3cml0ZSBDIGNvZGUgdG8gaW50ZWdyYXRlIHdpdGggdGhlIGFnZW50PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEF0IHRoZSBtb21lbnQsIHRoZXJlIGFyZSB0aHJlZSBtZXRob2RzIGZvciBpbnRlZ3JhdGluZyBleHRlcm5hbCBDIGNvZGUKKyAgd2l0aGluIHRoZSBhZ2VudC4KKworICAgIFRoZSBjb2RlIGNhbiBiZSBpbmNsdWRlZCB3aXRoaW4gdGhlIGFnZW50IGl0c2VsZiwgc3RhdGljYWxseSBjb25maWd1cmVkCisgIGFuZCBsaW5rZWQgaW4gd2hlbiB0aGUgYWdlbnQgaXMgY29tcGlsZWQuICBBbHRlcm5hdGl2ZWx5LCB3aXRoIHRoZSA0LjIKKyAgcmVsZWFzZSBvZiB0aGUgYWdlbnQsIGl0J3MgcG9zc2libGUgdG8gZHluYW1pY2FsbHkgbG9hZCBNSUIgbW9kdWxlcyBvbmNlCisgIHRoZSBhZ2VudCBpcyBydW5uaW5nLiAgRmluYWxseSwgdGhlIGFnZW50IGNhbiBiZSBjb25maWd1cmVkIHRvIHBhc3MgY2VydGFpbgorICBwb3J0aW9ucyBvZiB0aGUgTUlCIHRyZWUgb2ZmIHRvIG9uZSBvciBtb3JlIHN1YmFnZW50cy4gIFNlZSB0aGUgZWFybGllcgorICBxdWVzdGlvbiBvbiBBZ2VudFgsIFNNVVggYW5kIHByb3hpZWQgU05NUCBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgQWxsIHRocmVlIG1lY2hhbmlzbXMgdXNlIHRoZSBzYW1lIG1vZHVsZSBBUEkuICBUaGlzIGlzIGRlc2NyaWJlZCAoaW4KKyAgZXhjcnVjaWF0aW5nIGRldGFpbCkgaW4gdGhlIGZpbGUgQUdFTlQudHh0LCBzaGlwcGVkIHdpdGggdGhlIHN0YW5kYXJkCisgIGRpc3RyaWJ1dGlvbi4gIFRoZXJlIGlzIGFsc28gYW4gSFRNTCB2ZXJzaW9uIGFjY2Vzc2libGUgdmlhIHRoZSBwcm9qZWN0CisgIHdlYiBwYWdlLiAgVGhpcyB0YXNrIGNhbiBiZSBhaWRlZCB1c2luZyB0aGUgdG9vbCAnbWliMmMnIHdoaWNoIGdlbmVyYXRlcworICBtb3N0IG9mIHRoZSBuZWNlc3Nhcnkgc2tlbGV0b24gY29kZSBmcm9tIHRoZSBkZXNjcmlwdGlvbiBpbiB0aGUgTUlCIGZpbGUuCisKKyAgICBOb3RlIHRoYXQgdGhlIFVDRCBzdWl0ZSBkb2VzIG5vdCBpbmNsdWRlIHN1cHBvcnQgZm9yIFNNVVggc3ViYWdlbnRzLgorCisKKworPGEgbmFtZT0iSG93X2RvZXNfdGhlX2FnZW50X2ZldGNoX3RoZV92YWx1ZV9vZl9hX3ZhcmlhYmxlX2Zyb21fdGhlX3N5c3RlbV8iPgorSG93IGRvZXMgdGhlIGFnZW50IGZldGNoIHRoZSB2YWx1ZSBvZiBhIHZhcmlhYmxlIGZyb20gdGhlIHN5c3RlbT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBNdWNoIG9mIHRoZSBpbmZvcm1hdGlvbiBpcyBleHRyYWN0ZWQgZnJvbSBrZXJuZWwgbWVtb3J5IC0gdXN1YWxseQorICBieSBzZWVraW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbiBhbmQgcmVhZGluZyB0aGUgc3RydWN0dXJlcworICBkaXJlY3RseS4KKyAgICBTb21lIHN5c3RlbXMgcHJvdmlkZSBjbGVhbmVyIGludGVyZmFjZXMgdG8gc3VjaCBrZXJuZWwgaW5mb3JtYXRpb24KKyAgKGl0IHdvdWxkIGJlIGhhcmQgdG8gdGhpbmsgb2YgYSBsZXNzIGNsZWFuIGludGVyZmFjZSEpLCB2aWEgaW9jdGwoKQorICBjYWxscyBvciBzaW1pbGFyIHN5c3RlbSByb3V0aW5lcyBhbmQgdGhlc2UgbWVjaGFuaXNtcyBhcmUgdXN1YWxseSB1c2VkCisgIGluIHByZWZlcmVuY2UuCisKKworCis8YSBuYW1lPSJNaWJfY19jb21wbGFpbnNfYWJvdXRfYV9taXNzaW5nX19taWJfcmVmZXJlbmNlX19fX3doYXRfZG9lc190aGlzX21lYW5fIj4KK01pYjJjIGNvbXBsYWlucyBhYm91dCBhIG1pc3NpbmcgIm1pYiByZWZlcmVuY2UiIC0gd2hhdCBkb2VzIHRoaXMgbWVhbj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyBiYXNpY2FsbHkgbWVhbnMgdGhhdCBpdCBoYXNuJ3QgbG9hZGVkIHRoZSBNSUIgZmlsZSBjb250YWluaW5nCisgIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBNSUIgc3VidHJlZSB5b3UncmUgdHJ5aW5nIHRvIGltcGxlbWVudC4gIFRoaXMKKyAgbWlnaHQgYmUgYmVjYXVzZSBpdCBoYXNuJ3QgYmVlbiBpbnN0YWxsZWQsIHRoZSBuYW1lIGlzIHdyb25nLCBvcgorICAobW9zdCBsaWtlbHkpLCBiZWNhdXNlIGl0IGlzbid0IGluIHRoZSBkZWZhdWx0IGxpc3QuICBTZWUgdGhlIE1JQlMKKyAgc2VjdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgorCisKKworPGEgbmFtZT0iTWliX2NfY29tcGxhaW5zX2Fib3V0X25vdF9oYXZpbmdfYV9fdmFsaWRfT0lEX19fX3doYXRfZG9lc190aGlzX21lYW5fIj4KK01pYjJjIGNvbXBsYWlucyBhYm91dCBub3QgaGF2aW5nIGEgInZhbGlkIE9JRCIgLSB3aGF0IGRvZXMgdGhpcyBtZWFuPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgeW91IGdhdmUgaXQgdGhlIG5hbWUgb2YgYSBNSUIgZmlsZSAob3IKKyAgbW9kdWxlKSwgcmF0aGVyIHRoYW4gdGhlIG5hbWUgb2YgYW4gb2JqZWN0IGRlZmluZWQgaW4gdGhhdCBmaWxlLgorICBNaWIyYyBleHBlY3RzIHRoZSBuYW1lIG9mIGEgJ3Jvb3QnIG9iamVjdCwgYW5kIHdpbGwgZ2VuZXJhdGUgYQorICB0ZW1wbGF0ZSBmb3IgdGhlIHN1Yi10cmVlIHN0YXJ0aW5nIGZyb20gdGhlcmUuCisKKyAgICBJZiB5b3UndmUgZ290IGEgZmlsZSAnTVktTUlCLnR4dCcsIGRlZmluaW5nIHRoZSBNSUIgbW9kdWxlCisgICdNWS1NSUInIHdoaWNoIGNvbnRhaW5zIGEgc3VidHJlZSBiYXNlZCBvbiB0aGUgb2JqZWN0ICdteU1pYicsCisgIHRoZW4geW91IHNob3VsZCBpbnZva2UgbWliMmMgYXMKKyAgICAgICAgICAgICJtaWIyYyAuLi4uIG15TWliIgorICByYXRoZXIgdGhhbgorICAgICAgICAgICAgIm1pYjJjIC4uLi4gTVktTUlCLnR4dCIKKyAgb3IgICAgICAgICJtaWIyYyAuLi4uIE1ZLU1JQiIKKworICAgIE5vdGUgdGhhdCB5b3UnbGwgcHJvYmFibHkgYWxzbyBoYXZlIHRvIGFkZCB5b3VyIE1JQiB0byB0aGUgbGlzdCBvZgorICBNSUJzIHRoYXQgYXJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5LCBpbiBvcmRlciBmb3IgbWliMmMgdG8gcmVjb2duaXNlCisgIHRoZSBuYW1lIG9mIHRoaXMgb2JqZWN0LiAgU28gdGhlIGNvbW1hbmQgd291bGQgdHlwaWNhbGx5IGJlCisgICAgICAgICAgICAiTUlCUz0rTVktTUlCIG1pYjJjIC4uLi4gbXlNaWIiCisgIG9yICAgICAgICAiTUlCUz1BTEwgICAgIG1pYjJjIC4uLi4gbXlNaWIiCisKKworCis8YSBuYW1lPSJXaHlfZG9lc25fdF9NaWJfY19saWtlX3RoZV9NSUJfZmlsZV9JX21fZ2l2aW5nX2l0XyI+CitXaHkgZG9lc24ndCBNaWIyYyBsaWtlIHRoZSBNSUIgZmlsZSBJJ20gZ2l2aW5nIGl0PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyBpcyB0aGUgc2FtZSBwcm9ibGVtIGFzIGFib3ZlLiAgTWliMmMgdGFrZXMgdGhlIG5hbWUgb2YgYSBNSUIKKyAgb2JqZWN0LCBub3QgdGhlIG5hbWUgb2YgYSBmaWxlIChvciBhIE1JQiBtb2R1bGUpLiAgVHJ5IHVzaW5nIHRoZQorICBuYW1lIG9mIHRoZSBNT0RVTEUtSURFTlRJVFkgZGVmaW5pdGlvbi4KKworCisKKzxhIG5hbWU9Ik1pYl9jX2lnbm9yZXNfbXlfTUlCX2FuZF9nZW5lcmF0ZXNfYV9wYWlyX29mX19taWJfX19fY29kZV9maWxlc19fX1doeV8iPgorTWliMmMgaWdub3JlcyBteSBNSUIgYW5kIGdlbmVyYXRlcyBhIHBhaXIgb2YgJ21pYi0yJyBjb2RlIGZpbGVzLiAgV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIGlzIHRoZSBzYW1lIHByb2JsZW0gYXMgYWJvdmUgLSAgZ2l2aW5nIG1pYjJjIHRoZSBuYW1lIG9mCisgIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIE1JQiwgcmF0aGVyIHRoYW4gYW4gb2JqZWN0IHdpdGhpbiBpdC4KKyAgRWFybGllciB2ZXJzaW9ucyBvZiBtaWIyYyBkaWRuJ3QgZGV0ZWN0IHRoaXMgc2l0dWF0aW9uLCBhbmQKKyAgcmF0aGVyIHRoYW4gcmVwb3J0IGFuIGVycm9yLCBpdCBtZXJyaWx5IGNvbnN0cnVjdGVkIGEgdGVtcGxhdGUKKyAgZm9yIGEgZGVmYXVsdCBzdGFydGluZyBwb2ludCBvZiB0aGUgbWliLTIgbm9kZS4KKworICBNb3JlIHJlY2VudCB2ZXJzaW9ucyBpc3N1ZSB0aGUgZXJyb3IgbWVudGlvbmVkIGFib3ZlLCBpbnN0ZWFkLgorCisKKworPGEgbmFtZT0iTWliX2NfY29tcGxhaW5zX2Fib3V0X19jb25maWd1cmF0aW9uX2ZpbGVzX19fV2hhdF9zX3RoaXNfZm9yXyI+CitNaWIyYyBjb21wbGFpbnMgYWJvdXQgImNvbmZpZ3VyYXRpb24gZmlsZXMiLiBXaGF0J3MgdGhpcyBmb3I/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFlvdSd2ZSBwcm9iYWJseSB1cGdyYWRlZCB0byB0aGUgdjUgbmV0LXNubXAgcmVsZWFzZSAoZnJvbSB0aGUKKyAgdjQgdWNkLXNubXAgcmVsZWFzZSkuICBUaGlzIGludHJvZHVjZWQgYSBuZXcgYXBwcm9hY2ggdG8gYWdlbnQKKyAgbW9kdWxlIGRldmVsb3BtZW50LCBpbmNsdWRpbmcgYSBudW1iZXIgb2YgZGlmZmVyZW50ICJoZWxwZXJzIi4KKyAgVGhlIG1pYjJjIHRvb2wgY29tZXMgd2l0aCBjb25maWd1cmF0aW9ucyB0byBnZW5lcmF0ZSBjb2RlIGZvcgorICBtYW55IG9mIHRoZXNlLCBidXQgeW91J2xsIG5lZWQgdG8gc2VsZWN0IHdoaWNoIGlzIG1vc3QgY29udmVuaWVudAorICBmb3IgeW91ciBwYXJ0aWN1bGFyIGNhc2UuCisKKworCis8YSBuYW1lPSJXaGljaF9taWJfY19jb25maWd1cmF0aW9uX2ZpbGVfc2hvdWxkX0lfdXNlXyI+CitXaGljaCBtaWIyYyBjb25maWd1cmF0aW9uIGZpbGUgc2hvdWxkIEkgdXNlPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgSWYgdGhlIE1JQiBjb250YWlucyBzY2FsYXIgb2JqZWN0cywgdGhlbiB1c2UgdGhlIGNvbmZpZyBmaWxlCisgICdtaWIyYy5zY2FsYXIuY29uZicuICAgVGhpcyB3aWxsIGdlbmVyYXRlIHRlbXBsYXRlIGhhbmRsZXJzIGZvcgorICB0aGVzZSBzY2FsYXIgb2JqZWN0cyAoaWdub3JpbmcgaW50ZXJuYWwgc3RydWN0dXJhbCBkZWZpbml0aW9ucywKKyAgdGFibGUgb2JqZWN0cyBhbmQgbm90aWZpY2F0aW9ucykuCisKKyAgICBJZiB0aGUgTUlCIGNvbnRhaW5zIHRhYmxlcywgdGhlbiB0aGVyZSBhcmUgbnVtYmVyIG9mIHBvc3NpYmxlCisgIGNob2ljZXMuICBUaGVyZSBhcmUgYXQgbGVhc3QgZm91ciBjb25maWd1cmF0aW9uIGZpbGVzIHRoYXQgd2lsbAorICBnZW5lcmF0ZSB0ZW1wbGF0ZSBoYW5kbGVycyBmb3IgdGFibGUgb2JqZWN0cyAoaWdub3JpbmcgaW50ZXJuYWwKKyAgaW50ZXJuYWwgc3RydWN0dXJhbCBkZWZpbml0aW9ucywgc2NhbGFyIG9iamVjdHMgYW5kIG5vdGlmaWNhdGlvbnMpLgorICBXaGljaCB0byB1c2UgZGVwZW5kcyBvbiB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSB0YWJsZSBiZWluZworICBtb2RlbGxlZCAoaW4gcGFydGljdWxhciB3aGVyZSB0aGUgZGF0YSBpcyBoZWxkKSwgYW5kIHByZWZlcmVuY2VzCisgIGFzIHRvIHRoZSBzdHlsZSBvZiBjb2RlIHN0cnVjdHVyZS4KKworICAgIFRoZSBjb25maWcgZmlsZSAnbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZicgYXNzdW1lcyB0aGF0IHRoZQorICBkYXRhIGlzIGhlbGQgaW50ZXJuYWxseSB3aXRoaW4gdGhlIGFnZW50LCBhbmQgZ2VuZXJhdGVzIGEgc2luZ2xlCisgIGhhbmRsZXIgcm91dGluZSBmb3IgZWFjaCB0YWJsZS4gIE1vc3Qgb2YgdGhlIHByb2Nlc3NpbmcgaXMgaGFuZGxlZAorICBpbnRlcm5hbGx5IHdpdGhpbiB0aGUgYWdlbnQsIHNvIHRoaXMgaGFuZGxlciByb3V0aW5lIGlzIHJlYWxseQorICBvbmx5IG5lZWRlZCBpZiBwYXJ0aWN1bGFyIGNvbHVtbiBvYmplY3RzIHJlcXVpcmUgc3BlY2lhbCBwcm9jZXNzaW5nLgorICAKKyAgICBUaGUgY29uZmlnIGZpbGUgJ21pYjJjLml0ZXJhdGUuY29uZicgaXMgYWltZWQgYXQgdGFibGVzIHdoaWNoCisgIG1vZGVsIGRhdGEgaGVsZCBleHRlcm5hbCB0byB0aGUgYWdlbnQgKG5vdCBuZWNlc3NhcmlseSBvcmRlcmVkCisgIGFjY29yZGluZyB0byB0aGUgTUlCIGluZGV4aW5nIHJlcXVpcmVtZW50cykuICBJdCBnZW5lcmF0ZXMgYSBwYWlyCisgIG9mICJpdGVyYXRpb24iIHJvdXRpbmVzLCB3aGljaCBjYW4gYmUgdXNlZCB0byBzdGVwIHRocm91Z2ggdGhlCisgIHRhYmxlLCB0byBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlIHJvdyBmb3IgYW55IGdpdmVuIHJlcXVlc3QuCisgIFRoaXMgcm93IGlzIHRoZW4gcGFzc2VkIHRvIHRoZSAoc2luZ2xlKSB0YWJsZSBoYW5kbGVyIHJvdXRpbmUsCisgIHdoaWNoIGhhbmRsZXMgdGhlIHJlc3Qgb2YgdGhlIHByb2Nlc3NpbmcgZm9yIGFsbCBvZiB0aGUgY29sdW1uCisgIG9iamVjdHMgKGZvciBib3RoIEdFVCBhbmQgU0VUIHJlcXVlc3RzKS4KKworICAgIFRoZXJlIGlzIGFsc28gYSBzaW1pbGFyICdtaWIyYy5pdGVyYXRlX2FjY2Vzcy5jb25mJyB3aGljaAorICBidWlsZHMgb24gdGhpcywgYnV0IGdlbmVyYXRlcyBhIHNlcmllcyBvZiBpbmRpdmlkdWFsIHJvdXRpbmVzCisgIGZvciBoYW5kbGluZyBHRVQgb3IgU0VUIHJlcXVlc3RzIGZvciBlYWNoIGNvbHVtbiBvYmplY3QuCisKKyAgICBUaGUgY29uZmlnIGZpbGUgJ21pYjJjLmFycmF5LXVzZXIuY29uZicgaXMgYWdhaW4gcHJpbWFyaWx5CisgIGFpbWVkIGF0IGRhdGEgaGVsZCB3aXRoaW4gdGhlIGFnZW50IChhbHRob3VnaCBpdCBjYW4gYWxzbyBiZSB1c2VkCisgIHdpdGggZXh0ZXJuYWwgZGF0YSkuICBJbiBjb250cmFzdCB0byB0aGUgc2luZ2xlIGhhbmRsZXIgcm91dGluZSBvZgorICB0aGUgZmlyc3QgdHdvIGFwcHJvYWNoZXMsIHRoaXMgZ2VuZXJhdGVzIGEgc2VyaWVzIG9mIHNlcGFyYXRlCisgIHRlbXBsYXRlIHJvdXRpbmVzIHRvIGhhbmRsZSBkaWZmZXJlbnQgYXNwZWN0cyBvZiBwcm9jZXNzaW5nIHRoZQorICByZXF1ZXN0LiAgQXMgd2l0aCB0aGUgJ21pYjJjLmNyZWF0ZS1kYXRhc2V0LmNvbmYnIGFwcHJvYWNoLCBtdWNoCisgIG9mIHRoZSBwcm9jZXNzaW5nIGlzIGhhbmRsZWQgaW50ZXJuYWxseS4gIE1hbnkgb2YgdGhlIGdlbmVyYXRlZAorICByb3V0aW5lcyBjYW4gYmUgZGVsZXRlZCBpZiB0aGUgcmVsZXZhbnQgb2JqZWN0cyBuZWVkIG5vIHNwZWNpYWwKKyAgcHJvY2Vzc2luZy4KKyAKKyAgICBUaGUgbW9zdCByZWNlbnQgJ21mZCcgKG9yICdNSUJzIEZvciBEdW1taWVzJykgY29uZmlndXJhdGlvbiB0YWtlcworICB0aGlzIGlkZWEgb2Ygc21hbGwgKG9mdGVuIG9wdGlvbmFsKSAnc3R1Yicgcm91dGluZXMgZXZlbiBmdXJ0aGVyLgorICBUaGlzIGdlbmVyYXRlcyBhIGNvbGxlY3Rpb24gb2Ygc2VwYXJhdGUgKmZpbGVzKiwgZWFjaCBvZiB3aGljaAorICBpbXBsZW1lbnRzIGEgcGFydGljdWxhciBhc3BlY3Qgb2YgdGhlIHRhYmxlIHByb2Nlc3NpbmcuICBUaGUgaWRlYQorICBoZXJlIGlzIHRvIGhhdmUgbG90cyBvZiAiYmFieSBzdGVwcyIsIHJhdGhlciB0aGFuIGhhdmUgYWxsIHRoZQorICBwcm9jZXNzaW5nIGRlYWx0IHdpdGggaW4gb25lIHBsYWNlLgorCisgICAgVGhlcmUgYXJlIGFsc28gc29tZSBvdGhlciAnbWliMmMnIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGZvciBtb3JlCisgIHNwZWNpYWxpc2VkIHJlcXVpcmVtZW50cyAoZS5nLiBnZW5lcmF0aW5nIG5vdGlmaWNhdGlvbnMsICJ3YXRjaGVkIgorICBzY2FsYXIgb2JqZWN0cywgb3IgY29kZSB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdjQgVUNEIGFnZW50CisgIEFQSSksIGJ1dCB0aGVzZSBhcmUgdGhlIG1haW4gY2hvaWNlcyBmb3IgbW9zdCByZXF1aXJlbWVudHMuCisKKworCis8YSBuYW1lPSJIb3dfY2FuX0lfaGF2ZV9NaWJfY19nZW5lcmF0ZV9jb2RlX2Zvcl9ib3RoX3NjYWxhcnNfYW5kX3RhYmxlc18iPgorSG93IGNhbiBJIGhhdmUgTWliMmMgZ2VuZXJhdGUgY29kZSBmb3IgYm90aCBzY2FsYXJzIGFuZCB0YWJsZXM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhlIHY1IE5ldC1TTk1QIG1pYjJjIHRvb2wgdXNlcyBzZXBhcmF0ZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvCisgIGdlbmVyYXRlIGNvZGUgZm9yIHNjYWxhciBvYmplY3RzLCBhbmQgZm9yIHRhYmxlcy4gIFRoaXMgbWVhbnMgdGhhdAorICBpdCdzIG5vdCBwb3NzaWJsZSB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgc2luZ2xlIGNvZGUgZmlsZQorICB0aGF0IHN1cHBvcnRzIGJvdGggc2NhbGFycyBhbmQgdGFibGVzLgorCisgICAgSW5zdGVhZCwgaXQncyBuZWNlc3NhcnkgdG8gZ2VuZXJhdGUgdGhlIHR3byBjb2RlIGZpbGVzIHNlcGFyYXRlbHksCisgIGFuZCB0aGVuIGNvbWJpbmUgdGhlIHR3byBmaWxlcyBtYW51YWxseS4gIFRoZSBoYW5kbGVyIHJvdXRpbmVzIGZyb20KKyAgb25lIGZpbGUgY2FuIHNpbXBseSBiZSBpbmNsdWRlZCBpbiB0aGUgb3RoZXIgd2l0aCBubyBjaGFuZ2VzIG5lZWRlZC4KKyAgVGhlIGNvcnJlc3BvbmRpbmcgcmVnaXN0cmF0aW9uIG9mIHRoZXNlIGhhbmRsZXJzIGNhbiB0aGVuIGJlIGNvcGllZAorICBmcm9tIHRoZSBmaXJzdCBpbml0aWFsaXNhdGlvbiByb3V0aW5lIGludG8gdGhlIHNlY29uZC4KKworCisKKzxhIG5hbWU9IkFyZV90aGVyZV9hbnlfZXhhbXBsZXNfX29yX2RvY3VtZW50YXRpb25fIj4KK0FyZSB0aGVyZSBhbnkgZXhhbXBsZXMsIG9yIGRvY3VtZW50YXRpb24/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb3N0IG9mIHRoZSBNSUIgbW9kdWxlcyBzaGlwcGVkIHdpdGggdGhlIE5ldC1TTk1QIGFnZW50IHN0aWxsCisgIHVzZSB0aGUgdjQgInRyYWRpdGlvbmFsIiBNSUIgbW9kdWxlIEFQSSwgYnV0IGEgZmV3IHVzZSBvbmUgb2YgdGhlCisgIG5ld2VyIHY1IGhlbHBlci1iYXNlZCBoYW5kbGVycy4KKworICAgIFRoZSBkYXRhc2V0IGhhbmRsZXIgaXMgdXNlZCBpbiB0aGUgdHdvIERJU01BTi1FVkVOVC1NSUIgbW9kdWxlcworICAoZGlzbWFuL210ZUV2ZW50VGFibGUgYW5kIGRpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlKSwgYXMKKyAgd2VsbCBhcyB0aGUgJ3NubXB0cmFwZCcgaW1wbGVtZW50YXRpb24gb2YgbG9nZ2luZyBpbmNvbWluZyB0cmFwcworICAoYXBwcy9ub3RpZmljYXRpb25fbG9nKQorCisgICAgVGhlIGJhc2ljIGl0ZXJhdG9yIGhhbmRsZXIgaXMgdXNlZCBpbiBhIG51bWJlciBvZiBtb2R1bGVzLCBzdWNoCisgIGFzIHRoZSBsYXRlc3QgVENQIGFuZCBVRFAgdGFibGUgaW1wbGVtZW50YXRpb25zIChtaWJJSS90Y3BUYWJsZSAmCisgIG1pYklJL3VkcFRhYmxlKSwgVkFDTSBjb250ZXh0IGhhbmRsaW5nIChtaWJJSS92YWNtX2NvbnRleHQpIGFuZAorICB2YXJpb3VzIHRhYmxlcyByZWxhdGluZyB0byBhZ2VudCBpbnRlcm5hbHMgKGFnZW50LyopLiAgVGhlc2Ugc2hvdworICBhIG51bWJlciBvZiBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byB1c2luZyB0aGUgaXRlcmF0b3IgaGVscGVyLCBzbworICBpdCdzIHdvcnRoIGNvbXBhcmluZyB0aGVtLgorCisgICAgVGhlIHR3byBleGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZSogbW9kdWxlcyBwcm92aWRlIGEgY29udHJhc3QKKyAgYmV0d2VlbiB0aGUgaXRlcmF0b3IgYW5kIGl0ZXJhdG9yX2FjY2VzcyBoZWxwZXJzLgorCisgICAgVGhlIE5ldC1TTk1QIGFnZW50IGRvZXMgbm90IGN1cnJlbnRseSBpbmNsdWRlIGFueSBNSUIgbW9kdWxlcworICB1c2luZyB0aGUgYXJyYXktdXNlciBjb250YWluZXItYmFzZWQgaGVscGVyLiAgVGhlIGJlc3QgZXhhbXBsZXMKKyAgb2YgdGhpcyBhcmUgdG8gYmUgZm91bmQgaW4gdGhlIG5ldC1wb2xpY3kgcHJvamVjdC4KKyAgU2VlIGh0dHA6Ly9uZXQtcG9saWN5LnNvdXJjZWZvcmdlLm5ldC8KKworCisKKzxhIG5hbWU9IklfdmVfY3JlYXRlZF9hX25ld19tb2R1bGVfd2l0aF9fbWliX2NfX2J1dF9pdF9kb2Vzbl90X3dvcmtfX19XaHlfbm90XyI+CitJJ3ZlIGNyZWF0ZWQgYSBuZXcgbW9kdWxlIHdpdGggJ21pYjJjJyBidXQgaXQgZG9lc24ndCB3b3JrLiAgV2h5IG5vdD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBSZW1lbWJlciB0aGF0ICdtaWIyYycgZ2VuZXJhdGVzIGEgdGVtcGxhdGUgZm9yIHRoZSBNSUIgaW1wbGVtZW50YXRpb24uCisgIEl0IGRvZXNuJ3QgZmlsbCBpbiBhbGwgdGhlIGRldGFpbHMgZm9yIHlvdS4gIEluIHBhcnRpY3VsYXIsIGl0IGNhbm5vdAorICBrbm93IGhvdyB0byBvYnRhaW4gdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBhbnN3ZXIgcGFydGljdWxhciBxdWVyaWVzLgorICBUaGF0J3MgdGhlIGpvYiBvZiB0aGUgTUlCIG1vZHVsZSBwcm9ncmFtbWVyICh5b3UhKSAtICBTZWUgdGhlIHByZXZpb3VzCisgIHF1ZXN0aW9uIGZvciBob3cgdG8gcHJvY2VlZC4KKworICAgIEVzc2VudGlhbGx5IG1pYjJjIGhhbmRsZXMgdGhlIHN5bnRheCBvZiB0aGUgTUlCIGltcGxlbWVudGF0aW9uLAorICBsZWF2aW5nIHlvdSB0byBjb25jZW50cmF0ZSBvbiB0aGUgc2VtYW50aWNzLgorCisKKworPGEgbmFtZT0iV2hlcmVfc2hvdWxkX0lfcHV0X3RoZV9maWxlc19wcm9kdWNlZF9ieV9fbWliX2NfXyI+CitXaGVyZSBzaG91bGQgSSBwdXQgdGhlIGZpbGVzIHByb2R1Y2VkIGJ5ICdtaWIyYyc/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBJZiB5b3UncmUgdXNpbmcgdGhlIG1haW4gc291cmNlIHRyZWUgdG8gY29tcGlsZSB5b3VyIG5ldyBtb2R1bGUsIHRoZW4KKyAgcHV0IHRoZXNlIHR3byBmaWxlcyAobXltaWIuW2NoXSkgaW4gdGhlIGRpcmVjdG9yeSAnYWdlbnQvbWliZ3JvdXAnLgorICBZb3Ugc2hvdWxkIHRoZW4gcmUtcnVuIGNvbmZpZ3VyZSB0byBhZGQgaW4geW91ciBuZXcgbW9kdWxlCisgICgiY29uZmlndXJlIC0td2l0aC1taWItbW9kdWxlcz1teW1pYiIpIGFuZCByZWNvbXBpbGUuCisKKyAgICBJZiB5b3UndmUgZ290IGEgbnVtYmVyIG9mIG5ldyBtb2R1bGVzIHRvIGFkZCwgaXQgbWlnaHQgYmUKKyAgc2Vuc2libGUgdG8gcHV0IHRoZW0gYWxsIGludG8gYSBzaW5nbGUgc3ViZGlyZWN0b3J5IG9mICdtaWJncm91cCcuCisgIFRoZW4gY3JlYXRlIGEgaGVhZGVyIGZpbGUsIGxpc3RpbmcgdGhlIGluZGl2aWR1YWwgY29tcG9uZW50cy4KKyAgVGhpcyBtaWdodCBsb29rIHNvbWV0aGluZyBsaWtlOgorCisJCWNvbmZpZ19yZXF1aXJlKG15bWliL215T2JqZWN0cykKKwkJY29uZmlnX3JlcXVpcmUobXltaWIvbXlUYWJsZSkKKwkJY29uZmlnX3JlcXVpcmUobXltaWIvbXlPdGhlclRhYmxlKQorCisgIElmIHRoaXMgd2FzIHNhdmVkIGFzIHRoZSBmaWxlICdteW1pYi5oJywgdGhlbiB0aGUgc2FtZSBjb25maWd1cmUKKyAgbGluZSBnaXZlbiBhYm92ZSwgd291bGQgcHVsbCBpbiBhbGwgdGhyZWUgbW9kdWxlcy4gIFNlZSB0aGUKKyAgY3VycmVudCBjb250ZW50cyBvZiAnYWdlbnQvbWliZ3JvdXAnIGZvciBleGFtcGxlcyBvZiB0aGlzLgorCisKKworPGEgbmFtZT0iTWliX2Nfb25seV9oYW5kbGVzX2Ffc2luZ2xlX3RhYmxlX2luX215X01JQl9fSG93X2Nhbl9JX2ZpeF90aGlzXyI+CitNaWIyYyBvbmx5IGhhbmRsZXMgYSBzaW5nbGUgdGFibGUgaW4gbXkgTUlCLiBIb3cgY2FuIEkgZml4IHRoaXM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoaXMgd2FzIGEgYnVnIGluIHRoZSBtaWIyYyBzY3JpcHQsIHdoaWNoIHdhcyBjb3JyZWN0ZWQgd2l0aAorICB0aGUgNC4yIHJlbGVhc2UuICBFYXJsaWVyIHZlcnNpb25zIGNhbiBiZSBmaXhlZCBieSBhcHBseWluZyB0aGUKKyAgZm9sbG93aW5nIHBhdGNoOgorCisJJCBkaWZmIC11IG1pYjJjLmNsbiBtaWIyYworCS0tLSBtaWIyYy5jbG4gICBXZWQgTm92IDI5IDE1OjEyOjQ3IDIwMDAKKwkrKysgbWliMmMgICAgICAgV2VkIE5vdiAyOSAxNToxMzoxOCAyMDAwCisJQEAgLTEzMiw2ICsxMzIsNiBAQAorCSAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkgZm9yZWFjaCAkdnRhYmxlIChAdGFibGVfbGlzdCkgeworCSAgICAgZm9yZWFjaCAkcHRhYmxlIChAcHJvY2Vzc3RhYmxlKSB7CisJLSAgICAgICAkdmFyaWFibGVzeyRwdGFibGV9eydwcm9jZXNzZWQnfSA9IAorCSsgICAgICAgJHZhcmlhYmxlc3skcHRhYmxlfXsncHJvY2Vzc2VkJ30gLj0gCisJICAgICAgICAgICAgKGV2YWwgIlwiJHZhcmlhYmxlc3skcHRhYmxlfXsnY29kZSd9XCIiKSAuICJcblxuIjsKKwkgICAgIH0KKworCisKKzxhIG5hbWU9Ikhvd19jYW5fSV9zdXBwb3J0X2FfbGFyZ2VfdGFibGVfX3dpdGhfbW9yZV90aGFuX19fX19jb2x1bW5fb2JqZWN0c18iPgorSG93IGNhbiBJIHN1cHBvcnQgYSBsYXJnZSB0YWJsZSwgd2l0aCBtb3JlIHRoYW4gMjU2IGNvbHVtbiBvYmplY3RzPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIGlzIGEgcHJvYmxlbSAoYXQgbGVhc3QgYXBwYXJlbnRseSkgd2l0aCB0aGUgdjQgVUNEIG1vZHVsZQorICBBUEksIHdoaWNoIHVzZXMgYSAibWFnaWMgbnVtYmVyIiB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSB2YXJpb3VzCisgIGNvbHVtbiBvYmplY3RzIGltcGxlbWVudGVkIGJ5IGEgY29tbW9uIHZhcmlhYmxlIGhhbmRsaW5nIHJvdXRpbmUuCisgIFNpbmNlIHRoaXMgZmllbGQgaXMgZGVmaW5lZCBhcyBhbiB1bnNpZ25lZCBjaGFyYWN0ZXIsIGl0IGNhbiBvbmx5CisgIHRha2UgdmFsdWVzIDAtMjU1LiAgIFNvIGl0IHdvdWxkIGFwcGVhciB0aGF0IHRoZSBhZ2VudCBjYW5ub3QKKyAgc3VwcG9ydCB0YWJsZXMgKG9yIHNjYWxhciBncm91cHMpIHdpdGggbW9yZSB0aGFuIDI1NiBvYmplY3RzLAorICBzaW5jZSB0aGlzIHdvdWxkIHN0YXJ0IHRvIGR1cGxpY2F0ZSB0aGVzZSBtYWdpYyBudW1iZXJzLgorCisgICAgSG93ZXZlciwgdGhlIGFnZW50IGRvZXNuJ3QgYWN0dWFsbHkgY2FyZSB3aGljaCByb3V0aW5lIGltcGxlbWVudHMKKyAgYSBnaXZlbiBvYmplY3QsIGFuZCBtYWdpYyBudW1iZXJzIG9ubHkgbmVlZCB0byBiZSB1bmlxdWUgd2l0aGluIGEKKyAgc2luZ2xlIHZhcmlhYmxlIGhhbmRsaW5nIHJvdXRpbmUuICBTbyBpdCBpcyBhY3R1YWxseSBwZXJmZWN0bHkKKyAgcG9zc2libGUgdG8gaW1wbGVtZW50IGEgbGFyZ2VyIHRhYmxlIGJ5IHNwbGl0dGluZyBpdCBiZXR3ZWVuIHR3bworICAob3IgbW9yZSkgdmFyaWFibGUgaGFuZGxpbmcgcm91dGluZXMuICBUaGVzZSBjYW4gdGhlbiByZS11c2UgdGhlCisgIG1hZ2ljIG51bWJlcnMgcXVpdGUgc2FmZWx5OgorCisgICAgc3RydWN0IHZhcmlhYmxlMSBbXSA9IHsKKyAgICAgICB7TUFHSUMxLCAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsIHZhcl9teWZpcnN0LCAgMSwgeyAgMX19LAorICAgICAgIHtNQUdJQzIsICAgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwgdmFyX215Zmlyc3QsICAxLCB7ICAyfX0sCisgICAgCQk6CisgICAgICAge01BR0lDMjU1LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLCB2YXJfbXlmaXJzdCwgIDEsIHsyNTV9fSwKKyAgICAgICB7TUFHSUMxLCAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsIHZhcl9teXNlY29uZCwgMSwgezI1Nn19LAorICAgICAgIHtNQUdJQzIsICAgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwgdmFyX215c2Vjb25kLCAxLCB7MjU3fX0sCisgICAgCQk6CisgICAgICAge01BR0lDMjU1LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLCB2YXJfbXlzZWNvbmQsIDEsIHs1MTB9fQorICAgIH07CisKKyAgQWxsIHRoYXQgbWF0dGVycyBpcyB0aGF0IGEgZ2l2ZW4gbWFnaWMgbnVtYmVyIGlzbid0IHJlLXVzZWQgd2l0aGluCisgIHRoZSBzYW1lIHZhcmlhYmxlIGhhbmRsaW5nIHJvdXRpbmUuICBUaGUgdjUgdGFibGUgaGFuZGxlcnMgdHlwaWNhbGx5CisgIHVzZSBhbiBpbnRlZ2VyIHZhcmlhYmxlIGZvciBob2xkaW5nIGNvbHVtbiBpbmZvcm1hdGlvbiwgc28gYXJlbid0CisgIHN1YmplY3QgdG8gdGhlIHNhbWUgbGltaXRhdGlvbnMuCisKKyAgICBUaG91Z2ggSSdkIGhhdmUgdG8gcXVlc3Rpb24gd2hldGhlciBoYXZpbmcgc3VjaCBhIHdpZGUgdGFibGUgaXMKKyAgbmVjZXNzYXJpbHkgYSBwYXJ0aWN1bGFybHkgZ29vZCBkZXNpZ24gc3RyYXRlZ3khCisKKworCis8YSBuYW1lPSJIb3dfY2FuX0lfZ2V0X3RoZV9hZ2VudF90b19nZW5lcmF0ZV9hX3RyYXBfX29yX2luZm9ybV9fIj4KK0hvdyBjYW4gSSBnZXQgdGhlIGFnZW50IHRvIGdlbmVyYXRlIGEgdHJhcCAob3IgaW5mb3JtKT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgR2VuZXJhdGluZyBhIHRyYXAgaXMgcmVhc29uYWJseSBzaW1wbGUgLSBqdXN0IGNhbGwgb25lIG9mIHRoZQorICB0cmFwIEFQSSByb3V0aW5lcyAnc2VuZF9lYXN5X3RyYXAoKScgb3IgJ3NlbmRfdjJ0cmFwJyB3aXRoIHRoZQorICByZWxldmFudCBpbmZvcm1hdGlvbiAoZ2VuZXJpYyBhbmQgc3BlY2lmaWMgdHJhcCB2YWx1ZXMsIG9yIGEKKyAgdmFyYmluZCBsaXN0IHJlc3BlY3RpdmVseSkuICBTZWUgdGhlICdzbm1wX3RyYXBfYXBpKDMpJyBtYW4gcGFnZQorICBmb3IgZGV0YWlscy4KKworICAgIFRoZSAnbWliMmMubm90aWZ5LmNvbmYnIGNvbmZpZ3VyYXRpb24gZmlsZSBjYW4gYmUgdXNlZCB0bworICBjb25zdHJ1Y3QgYSBzdWl0YWJsZSB0ZW1wbGF0ZSByb3V0aW5lIGZvciBnZW5lcmF0aW5nIGEgdHJhcCwKKyAgaW5jbHVkaW5nIGJ1aWxkaW5nIHRoZSB2YXJpYWJsZSBsaXN0IGZyb20gdGhlIE1JQiB0cmFwCisgIGRlZmluaXRpb24uICBUaGVzZSB2YXJpYWJsZXMgY2FuIHRoZW4gYmUgZ2l2ZW4gc3VpdGFibGUgdmFsdWVzLAorICBiZWZvcmUgaW52b2tpbmcgdGhlICdzZW5kX3YydHJhcCcgY2FsbCB0byBhY3R1YWxseSBzZW5kIHRoZSB0cmFwLgorCisgICAgTm90ZSB0aGF0IHRoZXNlIEFQSXMgYXJlIG9ubHkgYXZhaWxhYmxlIHdpdGhpbiB0aGUgYWdlbnQgKG9yCisgIHN1YmFnZW50cyksIGFuZCBhcmUgbm90IGF2YWlsYWJsZSB0byBzdGFuZC1hbG9uZSBhcHBsaWNhdGlvbnMuCisgIFRoZSBjb2RlIGZvciAnc25tcHRyYXAnIHNob3dzIGFuIGFwcHJvYWNoIHRvIHVzZSBpbiBzdWNoIGEgY2FzZS4KKworICAgIERldGVybWluaW5nIF93aGVuXyB0byBnZW5lcmF0ZSB0aGUgdHJhcCAoZWl0aGVyIGRpcmVjdGx5IG9yCisgIHZpYSB0aGUgbWliMmMtZ2VuZXJhdGVkIHJvdXRpbmUpIGlzIG9mdGVuIGhhcmRlci4gIElmIHRoZSB0cmFwCisgIGlzIGdlbmVyYXRlZCBpbiByZXNwb25zZSB0byBzb21lIGFjdGlvbiB3aXRoaW4gdGhlIGFnZW50LCAoZS5nLgorICBhcyB0aGUgcmVzdWx0IG9mIGEgU0VUKSwgdGhlbiB0aGlzIGlzbid0IHRvbyBtdWNoIG9mIGEgcHJvYmxlbS4KKworICAgIEJ1dCBpZiB0aGUgdHJhcCBpcyBpbnRlbmRlZCB0byByZXBvcnQgb24gYSBjaGFuZ2Ugb2Ygc3RhdHVzCisgIChlLmcuIGEgbmV0d29yayBpbnRlcmZhY2UgZ29pbmcgdXAgb3IgZG93biwgb3IgYSBkaXNrIGZpbGxpbmcgdXApLAorICB0aGVuIGFjdHVhbGx5IGRldGVjdGluZyB0aGlzIGlzIG5vbi10cml2aWFsLiAgIEl0J3MgbmVjZXNzYXJ5IHRvCisgIHBvbGwgdGhlIHZhbHVlKHMpIG9uIGEgcmVndWxhciBiYXNpcywgc2F2ZSB0aGUgcmVzdWx0cyBhbmQgY29tcGFyZQorICB0aGVtIHdpdGggdGhlIG5ldyB2YWx1ZXMgdGhlIG5leHQgdGltZSByb3VuZC4KKworICAgIFdpdGggdGhlIHY0IFVDRCBhZ2VudCwgdGhpcyB3b3VsZCBoYXZlIHRvIGJlIGRvbmUgbWFudWFsbHksCisgIHVzaW5nIHRoZSByb3V0aW5lcyBkb2N1bWVudGVkIGluICdzbm1wX2FsYXJtKDMpJy4gIFRoZSB2NSBOZXQtU05NUAorICBhZ2VudCBoYXMgaW1wbGVtZW50ZWQgdGhlIERpc3RyaWJ1dGVkIE1hbmFnZW1lbnQgRXZlbnQgTUlCLCB3aGljaAorICBwcm92aWRlcyB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4gYSBmbGV4aWJsZSwgc3RhbmRhcmRpc2VkIG1hbm5lci4KKyAgU2VlIHRoZSAnc25tcGQuY29uZig1KScgbWFuIHBhZ2UgKHVuZGVyIERJU01BTi1FVkVOVC1NSUIpIGZvcgorICBkZXRhaWxzIChpbmNsdWRpbmcgdGhlIG5lZWQgZm9yIGFuICdhZ2VudFNlY05hbWUnIHNldHRpbmcpLgorICAKKworCis8YSBuYW1lPSJXaGF0X2lmX0lfbV91c2luZ19hbl9BZ2VudFhfc3ViX2FnZW50X2luc3RlYWRfIj4KK1doYXQgaWYgSSdtIHVzaW5nIGFuIEFnZW50WCBzdWItYWdlbnQgaW5zdGVhZD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhhdCBkb2Vzbid0IG1hdHRlciAtIHRoZSByb3V0aW5lcyBkZXNjcmliZWQgaW4gJ3NubXBfdHJhcF9hcGkoMyknCisgIGNhbiBzdGlsbCBiZSB1c2VkLCBhbmQgdGhlIHN1YmFnZW50IHdpbGwgZG8gdGhlIFJpZ2h0IFRoaW5nLgorICAKKyAgT25lIG9mIHRoZSBvcmlnaW5hbCBkZXNpZ24gYWltcyBvZiB0aGUgQWdlbnRYIHN1cHBvcnQgd2FzIHRoYXQgdGhpcworICBzaG91bGQgYmUgdHJhbnNwYXJlbnQgdG8gYSBNSUIgbW9kdWxlIGltcGxlbWVudGVyLiAgVGhlIGFnZW50LW1vZHVsZQorICBpbnRlcmZhY2Ugc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIHRoZSBwcm90b2NvbCB1c2VkIHRvIHJlY2VpdmUgdGhlCisgIG9yaWdpbmFsIHJlcXVlc3QuICBTbyB0aGUgZXhhY3Qgc2FtZSBNSUIgbW9kdWxlIGNvZGUgY291bGQgYmUgdXNlZAorICB3aXRoaW4gYSB0cmFkaXRpb25hbCBTTk1QLW9ubHkgYWdlbnQsIG9yIGFuIEFnZW50WCBzdWJhZ2VudCwgd2l0aCBubworICBjaGFuZ2VzIG5lZWRlZC4KKyAgICBJbiBmYWN0LCB0aGUgbWFpbiBhZ2VudCBzdXBwbGllZCBhcyBwYXJ0IG9mIHRoZSBwYWNrYWdlIGNhbiBpbmRlZWQKKyAgYmUgcnVuIGFzIGFuIFNOTVAgYWdlbnQgb3IgYW4gQWdlbnRYIHN1YmFnZW50LCBzaW1wbHkgYmFzZWQgb24gY29tbWFuZAorICBsaW5lIGZsYWdzIChvciBzaW1pbGFyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucykuCisKKworCis8YSBuYW1lPSJNSVNDIj4KK01JU0MKKz09PT09PQorCis8YSBuYW1lPSJXaHlfYXJlX3BhY2tldHNfcmVxdWVzdGluZ190aGVfc2FtZV9pbmZvcm1hdGlvbl9sYXJnZXJfd2l0aF9VQ19EYXZpc19TTk1QXyI+CitXaHkgYXJlIHBhY2tldHMgcmVxdWVzdGluZyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBsYXJnZXIgd2l0aCBVQy1EYXZpcyBTTk1QPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyBzaG91bGRuJ3QgaGFwcGVuIHdpdGggdmVyc2lvbiA0LjIgb3IgbGF0ZXIsIGJ1dCBmb3Igb2xkZXIKKyAgdmVyc2lvbiB0aGUgZm9sbG93aW5nIHN0aWxsIGFwcGxpZXM6CisKKyAgICBTb21lIHVzZXJzIG5vdGUgdGhhdCBVQ0QtU05NUCBhcHBsaWNhdGlvbnMgYWx3YXlzIGdlbmVyYXRlIGxhcmdlciBQRFVzCisgIHRoYW4gb3RoZXIgU05NUCBwYWNrYWdlcywgZXZlbiBpZiB0aGUgaW5mb3JtYXRpb24gcmVxdWVzdGVkIGlzIHRoZSBzYW1lLgorICBGdXJ0aGVyLCB0aGVyZSBhcmUgc29tZSBhZ2VudHMgdGhhdCByZWZ1c2UgUERVcyBmcm9tIFVDRC1TTk1QIGFwcGxpY2F0aW9ucworICBidXQgYWNjZXB0IFBEVXMgZnJvbSBvdGhlciBhcHBsaWNhdGlvbnMuCisKKyAgVUNELVNOTVAgaXMgYmFzZWQgb24gdGhlIENNVSBjb2RlIGZyb20gYSBsb25nIHRpbWUgYWdvIHdoaWNoIGVuY29kZWQgdGhpbmdzCisgIHVzaW5nIHRoZSBsb25nIGZvcm0gb2YgbGVuZ3RoIGVuY29kaW5nLiAgU29tZSBhZ2VudHMgdXNlIHRoZSBzaG9ydCBmb3JtCisgIG9mIGxlbmd0aCBlbmNvZGluZyBvbmx5LCBhbmQgZG8gbm90IHVuZGVyc3RhbmQgdGhlIGxvbmcgZm9ybS4KKworICAgIFRoaXMgc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0gd2l0aCBVQ0QgdjQuMiBvciBoaWdoZXIsIG9yIHRoZSBOZXQtU05NUAorICByZWxlYXNlcy4KKworCisKKzxhIG5hbWU9IldoYXRfQVNOX19fcGFyc2VyX2lzX3VzZWRfIj4KK1doYXQgQVNOLjEgcGFyc2VyIGlzIHVzZWQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIHBhcnNlciB1c2VkIGJ5IGJvdGggdGhlIGFnZW50IGFuZCBjbGllbnQgcHJvZ3JhbXMgaXMgY29kZWQgYnkgaGFuZC4KKyAgVGhpcyBwYXJzZXIgaGFzIHJlY2VudGx5IGJlZW4gcmUtdmFtcGVkIHRvIGFsbG93IGNvbnRyb2wgb2Ygd2hpY2ggb2YgCisgIHRoZSBhdmFpbGFibGUgTUlCcyBzaG91bGQgYmUgaW5jbHVkZWQsIGFuZCB0byBoYW5kbGUgZHVwbGljYXRlIG9iamVjdAorICBzdWJpZGVudGlmaWVycy4KKyAgICBUaGUgc291cmNlIGNvZGUgY2FuIGJlIGZvdW5kIGluIHRoZSBzbm1wbGliIGRpcmVjdG9yeSAoaW4gJ3BhcnNlLmMnKSwKKyAgYW5kIHRoZSBwYXJzZXIgaXMgdXN1YWxseSBidW5kbGVkIGludG8gdGhlIGxpYnJhcnkgJ2xpYnNubXAuYScKKworICAgIE5vdGUgdGhhdCB0aGUgcGFyc2VyIGF0dGVtcHRzIHRvIGJlIGZhaXJseSBmb3JnaXZpbmcgb2Ygc29tZSBjb21tb24KKyAgZXJyb3JzIGFuZCBpbmNvbXBhdGliaWxpdGllcyBpbiBNSUIgZmlsZXMuICBUaGUgTmV0LVNOTVAgdG9vbHMgYWNjZXB0aW5nCisgIGEgTUlCIGZpbGUgd2l0aG91dCBjb21wbGFpbnQgZG9lcyAqbm90KiBpbXBseSB0aGF0IHRoZSBNSUIgaXMgc3RyaWN0bHkKKyAgY29ycmVjdC4KKyAgICBDZXJ0YWluIE1JQnMgbWF5IG5lZWQgc29tZSBhbWVuZG1lbnRzIHRvIGFsbG93IHRoZW0gdG8gYmUgcmVhZAorICBjb3JyZWN0bHkgYnkgdGhlIHBhcnNlci4gIENvbnRhY3QgdGhlIGNvZGVycycgbGlzdCBmb3IgYWR2aWNlLgorCisKKworPGEgbmFtZT0iV2hhdF9pc190aGVfT2ZmaWNpYWxfU2xvZ2FuX29mX3RoZV9uZXRfc25tcF9jb2RlcnNfbGlzdF8iPgorV2hhdCBpcyB0aGUgT2ZmaWNpYWwgU2xvZ2FuIG9mIHRoZSBuZXQtc25tcC1jb2RlcnMgbGlzdD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAiVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgbm9uLW9idmlvdXMgYW5kIG1heSBuZWVkIHRvIGJlIGltcHJvdmVkLiIKKwkod2l0aCB0aGFua3MgdG8gUm9oaXQgRHViZSkKKworICBBbmQgYW4gYWx0ZXJuYXRlLCBhZGRlZCAyNi1BcHItMjAwMDoKKyAgCisgICJJbiB0aGVvcnksIGl0IHNob3VsZG4ndCBiZSB0aGF0IGhhcmQsIGJ1dCBpdCBqdXN0IG5lZWRzIHRvIGJlIGRvbmUuIgorCisKKworPC9wcmU+PGhyPgorTGFzdCBtb2RpZmllZDogU2F0IE1hciAyMCAyMTo1MzozOSAyMDA0CmRpZmYgLS1naXQgYS93aW4zMi9kaXN0L2luc3RhbGxlci9BZGQyUGF0aC5uc2kgYi93aW4zMi9kaXN0L2luc3RhbGxlci9BZGQyUGF0aC5uc2kKaW5kZXggM2Y4ZDY0MC4uMTA0ZGMxNiAxMDA2NDQKLS0tIGEvd2luMzIvZGlzdC9pbnN0YWxsZXIvQWRkMlBhdGgubnNpCisrKyBiL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL0FkZDJQYXRoLm5zaQpAQCAtMTEsMTEgKzExLDMyIEBACiAgIFB1c2ggJDEKICAgUHVzaCAkMgogICBQdXNoICQzCisgIFB1c2ggJDQKKyAgUHVzaCAkNQogCiAgICMgZG9uJ3QgYWRkIGlmIHRoZSBwYXRoIGRvZXNuJ3QgZXhpc3QKICAgSWZGaWxlRXhpc3RzICQwICIiIEFkZFRvUGF0aF9kb25lCi0KKyAgCiAgIFJlYWRFbnZTdHIgJDEgUEFUSAorICAKKyAgIyBJZiBsZW5ndGggb2YgUEFUSCByZXR1cm5lZCBpcyAwLCB3ZSBjb3VsZG4ndCByZWFkIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAodW5saWtlbHkpIG9yCisgICMgaXQncyBlbXB0eSBiZWNhdXNlIGl0J3MgPiAxMDI0IGNoYXJhY3RlcnMgbG9uZy4gIE5TSVMgb25seSBzdXBwb3J0cyB2YXJpYWJsZXMgdXAgdG8gMTAyNCAKKyAgIyBjaGFyYWN0ZXJzIHVubGVzcyB3ZSdyZSB1c2luZyB0aGUgODE5MiBsZW5ndGggdmVyc2lvbiwgd2hpY2ggd2UgYXJlIG5vdC4gIAorICAjIE5vdGU6ICBPbiBYUCAoYXQgbGVhc3QpLCB0aGUgc3RyaW5nIHJlYWQgdXNpbmcgUmVhZEVudlN0ciBpcyBzaG9ydGVyIHRoYW4gd2Ugd291bGQgZXhwZWN0LgorICAjIER1cmluZyB0ZXN0aW5nLCB3aGVuIHRoZSBQQVRIIHdhcyAxMDIwIGNoYXJhY3RlcnMgbG9uZywgU3RyTGVuIG9mIHRoZSBwYXRoIHJldHVybmVkIDk4NC4KKyAgIyBXaGVuIG1hbmlwdWxhdGluZyB0aGUgcGF0aCBvbiBYUCwgdXNlIHRoZSByZWdpc3RyeSBpbnN0ZWFkLgorICBTdHJMZW4gJDQgIiQxIgorICAjIE1lc3NhZ2VCb3ggTUJfSUNPTklORk9STUFUSU9OfE1CX09LICJQQVRIIGxlbmd0aDogJDQuLi4iCisgIEludENtcCAkNCAwIFBhdGhfVG9vX1Nob3J0MQorICBHb3RvIEFkZFRvUGF0aF9Db250MQorICAKKyAgUGF0aF9Ub29fU2hvcnQxOgorICAjIFBBVEggaXMgZW1wdHkuICBEaXNwbGF5IHdhcm5pbmcuCisgIE1lc3NhZ2VCb3ggTUJfSUNPTklORk9STUFUSU9OfE1CX09LICJZb3VyIFBBVEggdmFyaWFibGUgY291bGQgbm90IGJlIHJlYWQsIHByb2JhYmx5IGJlY2F1c2UgaXQgaXMgbG9uZ2VyIHRoYW4gMTAyNCBjaGFyYWN0ZXJzIChpbnN0YWxsZXIgbGltaXRhdGlvbikuICBQbGVhc2UgYWRkIHRoZSBmb2xkZXIgJDAgdG8geW91ciBQQVRIIHVzaW5nIHRoZSBTeXN0ZW0gQ29udHJvbCBQYW5lbC4iCisgIGdvdG8gQWRkVG9QYXRoX2RvbmUKKworICBBZGRUb1BhdGhfQ29udDE6CisgIAogICBQdXNoICIkMTsiCiAgIFB1c2ggIiQwOyIKICAgQ2FsbCBTdHJTdHIKQEAgLTU2LDE3ICs3Nyw0MSBAQAogICBBZGRUb1BhdGhfTlQ6CiAgICAgO1JlYWRSZWdTdHIgJDEgSEtDVSAiRW52aXJvbm1lbnQiICJQQVRIIgogICAgIFJlYWRSZWdTdHIgJDEgSEtMTSAnU1lTVEVNXEN1cnJlbnRDb250cm9sU2V0XENvbnRyb2xcU2Vzc2lvbiBNYW5hZ2VyXEVudmlyb25tZW50JyAiUEFUSCIKKwogICAgIFN0ckNweSAkMiAkMSAxIC0xICMgY29weSBsYXN0IGNoYXIKICAgICBTdHJDbXAgJDIgIjsiIDAgKzIgIyBpZiBsYXN0IGNoYXIgPT0gOwogICAgICAgU3RyQ3B5ICQxICQxIC0xICMgcmVtb3ZlIGxhc3QgY2hhcgotICAgIFN0ckNtcCAkMSAiIiBBZGRUb1BhdGhfTlRkb0l0Ci0gICAgICBTdHJDcHkgJDAgIiQxOyQwIgotICAgIEFkZFRvUGF0aF9OVGRvSXQ6Ci0gICAgICA7V3JpdGVSZWdFeHBhbmRTdHIgSEtDVSAiRW52aXJvbm1lbnQiICJQQVRIIiAkMAotICAgICAgV3JpdGVSZWdFeHBhbmRTdHIgSEtMTSAnU1lTVEVNXEN1cnJlbnRDb250cm9sU2V0XENvbnRyb2xcU2Vzc2lvbiBNYW5hZ2VyXEVudmlyb25tZW50JyAiUEFUSCIgJDAKLSAgICAgIFNlbmRNZXNzYWdlICR7SFdORF9CUk9BRENBU1R9ICR7V01fV0lOSU5JQ0hBTkdFfSAwICJTVFI6RW52aXJvbm1lbnQiIC9USU1FT1VUPTUwMDAKKworICAgICMgTWFrZSBzdXJlIG9sZCBQQVRIIGlzIG5vdCBlbXB0eS4uCisgICAgU3RyTGVuICQ0ICIkMSIKKyAgICAjTWVzc2FnZUJveCBNQl9JQ09OSU5GT1JNQVRJT058TUJfT0sgIlJlZyBQQVRIIGxlbmd0aDogJDQuLi4iCisgICAgSW50Q21wICQ0IDAgUGF0aF9Ub29fU2hvcnQyCisgICAgR290byBBZGRUb1BhdGhfQ29udDIKKyAgICBQYXRoX1Rvb19TaG9ydDI6CisgICAgIyBQQVRIIGlzIGVtcHR5LiAgRGlzcGxheSB3YXJuaW5nLgorICAgIE1lc3NhZ2VCb3ggTUJfSUNPTklORk9STUFUSU9OfE1CX09LICJZb3VyIFBBVEggdmFyaWFibGUgY291bGQgbm90IGJlIHJlYWQsIHByb2JhYmx5IGJlY2F1c2UgaXQgaXMgbG9uZ2VyIHRoYW4gMTAyNCBjaGFyYWN0ZXJzIChpbnN0YWxsZXIgbGltaXRhdGlvbikuICBQbGVhc2UgYWRkIHRoZSBmb2xkZXIgJDAgdG8geW91ciBQQVRIIHVzaW5nIHRoZSBTeXN0ZW0gQ29udHJvbCBQYW5lbC4iCisgICAgZ290byBBZGRUb1BhdGhfZG9uZQorICAgIEFkZFRvUGF0aF9Db250MjoKKworICAgICMgTWFrZSBzdXJlIG5ldyBQQVRIIHdvbid0IGJlIHRvbyBsb25nLgorICAgIFN0ckxlbiAkNSAiJDAiCisgICAgSW50T3AgJDQgJDQgKyAkNQorICAgIEludENtcCAkNCAxMDIyICIiICIiIFBhdGhfVG9vX0xvbmczCisgICAgR290byBBZGRUb1BhdGhfQ29udDMKKyAgICBQYXRoX1Rvb19Mb25nMzoKKyAgICBNZXNzYWdlQm94IE1CX0lDT05JTkZPUk1BVElPTnxNQl9PSyAiWW91ciBuZXcgUEFUSCB2YXJpYWJsZSBjb3VsZCBub3QgYmUgc2V0IGFzIGl0IHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiAxMDI0IGNoYXJhY3RlcnMgKGluc3RhbGxlciBsaW1pdGF0aW9uKS4gIFBsZWFzZSBhZGQgdGhlIGZvbGRlciAkMCB0byB5b3VyIFBBVEggdXNpbmcgdGhlIFN5c3RlbSBDb250cm9sIFBhbmVsLiIKKyAgICBnb3RvIEFkZFRvUGF0aF9kb25lCisgICAgQWRkVG9QYXRoX0NvbnQzOgorCisgICAgU3RyQ3B5ICQwICIkMTskMCIKKworICAgIDtXcml0ZVJlZ0V4cGFuZFN0ciBIS0NVICJFbnZpcm9ubWVudCIgIlBBVEgiICQwCisgICAgV3JpdGVSZWdFeHBhbmRTdHIgSEtMTSAnU1lTVEVNXEN1cnJlbnRDb250cm9sU2V0XENvbnRyb2xcU2Vzc2lvbiBNYW5hZ2VyXEVudmlyb25tZW50JyAiUEFUSCIgJDAKKyAgICBTZW5kTWVzc2FnZSAke0hXTkRfQlJPQURDQVNUfSAke1dNX1dJTklOSUNIQU5HRX0gMCAiU1RSOkVudmlyb25tZW50IiAvVElNRU9VVD01MDAwCiAKICAgQWRkVG9QYXRoX2RvbmU6CisgICAgUG9wICQ1CisgICAgUG9wICQ0CiAgICAgUG9wICQzCiAgICAgUG9wICQyCiAgICAgUG9wICQxCmRpZmYgLS1naXQgYS93aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2kgYi93aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2kKaW5kZXggOTVkN2I1NS4uNWU2ZmM3NSAxMDA2NDQKLS0tIGEvd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpCisrKyBiL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaQpAQCAtMSwxMyArMSwxOSBAQAogOyBTY3JpcHQgZ2VuZXJhdGVkIGJ5IHRoZSBITSBOSVMgRWRpdCBTY3JpcHQgV2l6YXJkLgorU2V0Q29tcHJlc3NvciAvU09MSUQgbHptYQogCishaW5jbHVkZSB4NjQubnNoCiAhaW5jbHVkZSAiU2VjdGlvbnMubnNoIgogCis7IEJ1aWxkaW5nIGEgeDg2IG9yIHg2NCBiaW5hcnkKKyFkZWZpbmUgSU5TVEFMTEVSX1BMQVRGT1JNICJ4NjQiCQkKKwogOyBITSBOSVMgRWRpdCBXaXphcmQgaGVscGVyIGRlZmluZXMKICFkZWZpbmUgUFJPRFVDVF9OQU1FICJOZXQtU05NUCIKICFkZWZpbmUgUFJPRFVDVF9NQUpfVkVSU0lPTiAiNSIKLSFkZWZpbmUgUFJPRFVDVF9NSU5fVkVSU0lPTiAiNCIKLSFkZWZpbmUgUFJPRFVDVF9SRVZJU0lPTiAiMC5wcmU0IgorIWRlZmluZSBQUk9EVUNUX01JTl9WRVJTSU9OICI1IgorIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OICJwcmUyIgogIWRlZmluZSBQUk9EVUNUX0VYRV9WRVJTSU9OICIxIgorIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggIi54NjQuZXhlIgogIWRlZmluZSBQUk9EVUNUX1dFQl9TSVRFICJodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZyIKICFkZWZpbmUgUFJPRFVDVF9ESVJfUkVHS0VZICJTb2Z0d2FyZVxOZXQtU05NUCIKICFkZWZpbmUgUFJPRFVDVF9VTklOU1RfS0VZICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcJHtQUk9EVUNUX05BTUV9IgpAQCAtMzgsNyArNDQsNyBAQAogIWluc2VydG1hY3JvIE1VSV9QQUdFX0xJQ0VOU0UgImRvY3NcQ09QWUlORyIKIAogOyBNYWtlIHN1cmUgU1NMIGlzIGluc3RhbGxlZC4KLVBhZ2UgY3VzdG9tIElzU1NMSW5zdGFsbGVkICIiICI6IGN1c3RvbSBwYWdlIgorOyBQYWdlIGN1c3RvbSBJc1NTTEluc3RhbGxlZCAiIiAiOiBjdXN0b20gcGFnZSIKIAogOyBDb21wb25lbnRzIHBhZ2UKICFpbnNlcnRtYWNybyBNVUlfUEFHRV9DT01QT05FTlRTCkBAIC03Myw3ICs3OSw3IEBACiAgICAgICAgICAgICAgICAgICAke1BST0RVQ1RfTUlOX1ZFUlNJT059LlwKICAgICAgICAgICAgICAgICAgICR7UFJPRFVDVF9SRVZJU0lPTn1cCiAgICAgICAgICAgICAgICAgICAtJHtQUk9EVUNUX0VYRV9WRVJTSU9OfVwKLSAgICAgICAgICAgICAgICAgIC53aW4zMi5leGUiCisgICAgICAgICAgICAgICAgICAke1BST0RVQ1RfRVhFX1NVRkZJWH0iCiBJbnN0YWxsRGlyICJDOlx1c3IiCiBJbnN0YWxsRGlyUmVnS2V5IEhLTE0gIiR7UFJPRFVDVF9ESVJfUkVHS0VZfSIgIkluc3RhbGxEaXIiCiBTaG93SW5zdERldGFpbHMgc2hvdwpAQCAtODEsMTMgKzg3LDI1IEBACiAKIDsgVmFyaWFibGVzIGZvciB3cml0aW5nIGNvbmZpZyBmaWxlcwogVmFyIGNvbmZfZmlsZQorCiBWYXIgd2luRXh0RExMCitWYXIgb3BlblNTTAogCiBTZWN0aW9uICJCYXNlIENvbXBvbmVudHMiIFNFQzAxCisgIFNlY3Rpb25JbiBSTworICBTdHJDbXAgJG9wZW5TU0wgImZhbHNlIiBTRUMwMV9ub09wZW5TU0wgU0VDMDFfT3BlblNTTAorICAKKyAgU0VDMDFfbm9PcGVuU1NMOgogICBTZXRPdXRQYXRoICIkSU5TVERJUiIKICAgU2V0T3ZlcndyaXRlIGlmbmV3ZXIKICAgRmlsZSAiUkVBRE1FLnR4dCIKICAgU2V0T3V0UGF0aCAiJElOU1RESVJcYmluIgorCisgIEZpbGUgImJpblxtc3ZjbTkwLmRsbCIKKyAgRmlsZSAiYmluXG1zdmNwOTAuZGxsIgorICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCisgIEZpbGUgImJpblxNaWNyb3NvZnQuVkM5MC5DUlQubWFuaWZlc3QiCisKICAgRmlsZSAiYmluXG5ldHNubXAuZGxsIgogICBGaWxlICJiaW5cZW5jb2RlX2tleWNoYW5nZS5leGUiCiAgIEZpbGUgImJpblxzbm1wdmFjbS5leGUiCkBAIC0xMDYsNiArMTI0LDQwIEBACiAgIEZpbGUgImJpblxzbm1wYnVsa3dhbGsuZXhlIgogICBGaWxlICJiaW5cc25tcGJ1bGtnZXQuZXhlIgogICBGaWxlICJiaW5cc25tcHdhbGsuZXhlIgorICBnb3RvIFNFQzAxX2NvbnRpbnVlCisKKyAgU0VDMDFfT3BlblNTTDoKKyAgU2V0T3V0UGF0aCAiJElOU1RESVIiCisgIFNldE92ZXJ3cml0ZSBpZm5ld2VyCisgIEZpbGUgIlJFQURNRS50eHQiCisgIFNldE91dFBhdGggIiRJTlNURElSXGJpbiIKKworICBGaWxlICJiaW5cbXN2Y205MC5kbGwiCisgIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKKyAgRmlsZSAiYmluXG1zdmNyOTAuZGxsIgorICBGaWxlICJiaW5cTWljcm9zb2Z0LlZDOTAuQ1JULm1hbmlmZXN0IgorCisgIEZpbGUgImJpbi5zc2xcbmV0c25tcC5kbGwiCisgIEZpbGUgImJpbi5zc2xcZW5jb2RlX2tleWNoYW5nZS5leGUiCisgIEZpbGUgImJpbi5zc2xcc25tcHZhY20uZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXB1c20uZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXB0cmFwLmV4ZSIKKyAgRmlsZSAiYmluLnNzbFxzbm1wdHJhbnNsYXRlLmV4ZSIKKyAgRmlsZSAiYmluLnNzbFxzbm1wdGVzdC5leGUiCisgIEZpbGUgImJpbi5zc2xcc25tcHRhYmxlLmV4ZSIKKyAgRmlsZSAiYmluLnNzbFxzbm1wc3RhdHVzLmV4ZSIKKyAgRmlsZSAiYmluLnNzbFxzbm1wc2V0LmV4ZSIKKyAgRmlsZSAiYmluLnNzbFxzbm1wbmV0c3RhdC5leGUiCisgIEZpbGUgImJpbi5zc2xcc25tcGdldG5leHQuZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXBnZXQuZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXBkZi5leGUiCisgIEZpbGUgImJpbi5zc2xcc25tcGRlbHRhLmV4ZSIKKyAgRmlsZSAiYmluLnNzbFxzbm1wYnVsa3dhbGsuZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXBidWxrZ2V0LmV4ZSIKKyAgRmlsZSAiYmluLnNzbFxzbm1wd2Fsay5leGUiCisKKyAgU0VDMDFfY29udGludWU6CisKICAgRmlsZSAiYmluXG1pYjJjIgogICBGaWxlICJiaW5cbWliMmMuYmF0IgogICBDYWxsIENyZWF0ZU1pYjJjQmF0CkBAIC0xNTEsMTggKzIwMywxMDUgQEAKIFNlY3Rpb25Hcm91cCAvZSAiTmV0LVNOTVAgQWdlbnQgU2VydmljZSIKICAgU2VjdGlvbiAiU3RhbmRhcmQgYWdlbnQiIFNFQzAyCiAgICAgU3RyQ3B5ICR3aW5FeHRETEwgIjAiCi0gICAgQ2FsbCBJbnN0YWxsQWdlbnQKKyAgICBTZXRPdXRQYXRoICIkSU5TVERJUlxiaW4iCisKKyAgICA7IERlbGV0ZSBhZ2VudCBvdGhlcndpc2UgcmUtaW5zdGFsbGluZyBhIGRpZmZlcmVudCBhZ2VudCBtYXkgbm90IHdvcmsgYmVjYXVzZSBvZiBkYXRlIHN0YW1wcworICAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXBkLmV4ZSIgIAorCisgICAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgorICAgIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKKyAgICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCisgICAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKKworICAgIFN0ckNtcCAkb3BlblNTTCAiZmFsc2UiIFNFQzAyX25vT3BlblNTTCBTRUMwMl9PcGVuU1NMCisgICAgU0VDMDJfbm9PcGVuU1NMOgorICAgICAgRmlsZSAiYmluXHNubXBkLmV4ZSIKKworICAgIFNFQzAyX09wZW5TU0w6CisgICAgICBGaWxlICJiaW4uc3NsXHNubXBkLmV4ZSIKKworICAgIFNldE91dFBhdGggIiRJTlNURElSXHNoYXJlXHNubXBcc25tcGNvbmYtZGF0YVxzbm1wZC1kYXRhIgorICAgIEZpbGUgInNoYXJlXHNubXBcc25tcGNvbmYtZGF0YVxzbm1wZC1kYXRhXCouKiIKKyAgCisgICAgOyBJZiB3ZSBhcmUgb24gYW4gTlQgc3lzdGVtIHRoZW4gaW5zdGFsbCB0aGUgc2VydmljZSBiYXRjaCBmaWxlcy4KKyAgICBDYWxsIElzTlQKKyAgICBQb3AgJDEKKyAgICBTdHJDbXAgJDEgMCBTRUMwMl9Ob1NlcnZpY2UKKyAgCisgICAgU2V0T3V0UGF0aCAiJElOU1RESVJcIgorICAgIEZpbGUgInJlZ2lzdGVyYWdlbnQuYmF0IgorICAgIEZpbGUgInVucmVnaXN0ZXJhZ2VudC5iYXQiCisgICAgQ2FsbCBDcmVhdGVBZ2VudEJhdHMKKworICAgIENyZWF0ZURpcmVjdG9yeSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2UiCisgICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIiAiJElOU1RESVJccmVnaXN0ZXJhZ2VudC5iYXQiCisgICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFVucmVnaXN0ZXIgQWdlbnQgU2VydmljZS5sbmsiICIkSU5TVERJUlx1bnJlZ2lzdGVyYWdlbnQuYmF0IgorICAgIAorICAgIFNFQzAyX05vU2VydmljZToKKwkKICAgU2VjdGlvbkVuZAogCi0gIFNlY3Rpb24gL28gIldpdGggV2luZG93cyBFeHRlbnNpb24gRExMIHN1cHBvcnQiIFNFQzAzCi0gICAgU3RyQ3B5ICR3aW5FeHRETEwgIjEiCi0gICAgQ2FsbCBJbnN0YWxsQWdlbnQKKyAgU2VjdGlvbiAiV2l0aCBXaW5kb3dzIEV4dGVuc2lvbiBETEwgc3VwcG9ydCIgU0VDMDMJCisJU3RyQ3B5ICR3aW5FeHRETEwgIjEiCisJU2V0T3V0UGF0aCAiJElOU1RESVJcYmluIgorCisgICAgOyBEZWxldGUgYWdlbnQgb3RoZXJ3aXNlIHJlLWluc3RhbGxpbmcgYSBkaWZmZXJlbnQgYWdlbnQgbWF5IG5vdCB3b3JrIGJlY2F1c2Ugb2YgZGF0ZSBzdGFtcHMKKyAgICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wZC5leGUiICAKKworICAgIEZpbGUgImJpblxtc3ZjbTkwLmRsbCIKKyAgICBGaWxlICJiaW5cbXN2Y3A5MC5kbGwiCisgICAgRmlsZSAiYmluXG1zdmNyOTAuZGxsIgorICAgIEZpbGUgImJpblxNaWNyb3NvZnQuVkM5MC5DUlQubWFuaWZlc3QiCisKKyAgICBTdHJDbXAgJG9wZW5TU0wgImZhbHNlIiBTRUMwM19ub09wZW5TU0wgU0VDMDNfT3BlblNTTAorICAgIFNFQzAzX25vT3BlblNTTDoKKyAgICAgIEZpbGUgL29uYW1lPXNubXBkLmV4ZSAiYmluXHNubXBkLXdpbkV4dERMTC5leGUiCisKKyAgICBTRUMwM19PcGVuU1NMOgorICAgICAgRmlsZSAvb25hbWU9c25tcGQuZXhlICJiaW4uc3NsXHNubXBkLXdpbkV4dERMTC5leGUiCisKKyAgICBTZXRPdXRQYXRoICIkSU5TVERJUlxzaGFyZVxzbm1wXHNubXBjb25mLWRhdGFcc25tcGQtZGF0YSIKKyAgICBGaWxlICJzaGFyZVxzbm1wXHNubXBjb25mLWRhdGFcc25tcGQtZGF0YVwqLioiCisgIAorICAgIDsgSWYgd2UgYXJlIG9uIGFuIE5UIHN5c3RlbSB0aGVuIGluc3RhbGwgdGhlIHNlcnZpY2UgYmF0Y2ggZmlsZXMuCisgICAgQ2FsbCBJc05UCisgICAgUG9wICQxCisgICAgU3RyQ21wICQxIDAgU0VDMDNfTm9TZXJ2aWNlCisgIAorICAgIFNldE91dFBhdGggIiRJTlNURElSXCIKKyAgICBGaWxlICJyZWdpc3RlcmFnZW50LmJhdCIKKyAgICBGaWxlICJ1bnJlZ2lzdGVyYWdlbnQuYmF0IgorICAgIENhbGwgQ3JlYXRlQWdlbnRCYXRzCisKKyAgICBDcmVhdGVEaXJlY3RvcnkgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlIgorICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHJlZ2lzdGVyYWdlbnQuYmF0IgorICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIiAiJElOU1RESVJcdW5yZWdpc3RlcmFnZW50LmJhdCIKKyAgICAKKyAgICBTRUMwM19Ob1NlcnZpY2U6CiAgIFNlY3Rpb25FbmQKKyAgCis7ICBTZWN0aW9uICJIaWRkZW4iIFNFQ0FnZW50SGlkZGVuCisgIDtTZWN0aW9uRW5kCiBTZWN0aW9uR3JvdXBFbmQKIAogU2VjdGlvbiAiTmV0LVNOTVAgVHJhcCBTZXJ2aWNlIiBTRUMwNAogICBTZXRPdXRQYXRoICIkSU5TVERJUlxiaW4iCisKKyAgU3RyQ21wICRvcGVuU1NMICJmYWxzZSIgU0VDMDRfbm9PcGVuU1NMIFNFQzA0X09wZW5TU0wKKworICBGaWxlICJiaW5cbXN2Y205MC5kbGwiCisgIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKKyAgRmlsZSAiYmluXG1zdmNyOTAuZGxsIgorICBGaWxlICJiaW5cTWljcm9zb2Z0LlZDOTAuQ1JULm1hbmlmZXN0IgorCisgIFNFQzA0X25vT3BlblNTTDoKICAgRmlsZSAiYmluXHNubXB0cmFwZC5leGUiCisgIGdvdG8gU0VDMDRfY29udGludWUKKworICBTRUMwNF9PcGVuU1NMOgorICBGaWxlICJiaW4uc3NsXHNubXB0cmFwZC5leGUiCisKKyAgU0VDMDRfY29udGludWU6CiAgIFNldE91dFBhdGggIiRJTlNURElSXHNoYXJlXHNubXBcc25tcGNvbmYtZGF0YVxzbm1wdHJhcGQtZGF0YSIKICAgRmlsZSAic2hhcmVcc25tcFxzbm1wY29uZi1kYXRhXHNubXB0cmFwZC1kYXRhXCouKiIKICAgO1NldE91dFBhdGggIiRJTlNURElSXGV0Y1xzbm1wIgpAQCAtMTg2LDcgKzMyNSwxOCBAQAogCiBTZWN0aW9uICJQZXJsIFNOTVAgTW9kdWxlcyIgU0VDMDUKICAgU2V0T3V0UGF0aCAiJElOU1RESVJccGVybFx4ODYiCisKKyAgU3RyQ21wICRvcGVuU1NMICJmYWxzZSIgU0VDMDVfbm9PcGVuU1NMIFNFQzA1X09wZW5TU0wKKworICBTRUMwNV9ub09wZW5TU0w6CiAgIEZpbGUgInBlcmxceDg2XE5ldFNOTVAudGFyLmd6IgorICBnb3RvIFNFQzA1X2NvbnRpbnVlCisKKyAgU0VDMDVfT3BlblNTTDoKKyAgRmlsZSAicGVybC5zc2xceDg2XE5ldFNOTVAudGFyLmd6IgorCisgIFNFQzA1X2NvbnRpbnVlOgorCiAgIFNldE91dFBhdGggIiRJTlNURElSXHBlcmwiCiAgIEZpbGUgInBlcmxcTmV0U05NUC5wcGQiCiAgIFNldE91dFBhdGggIiRJTlNURElSXGJpbiIKQEAgLTIyNCw2ICszNzQsOSBAQAogICBGaWxlICJsaWJcKi4qIgogU2VjdGlvbkVuZAogCitTZWN0aW9uICJFbmNyeXB0aW9uIHN1cHBvcnQgKE9wZW5TU0wpIiBTRUMwNworU2VjdGlvbkVuZAorCiBTZWN0aW9uIC1BZGRpdGlvbmFsSWNvbnMKICAgQ3JlYXRlRGlyZWN0b3J5ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVAiCiAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcVW5pbnN0YWxsLmxuayIgIiRJTlNURElSXHVuaW5zdC5leGUiCkBAIC0yNjIsNiArNDE1LDggQEAKICAgIWluc2VydG1hY3JvIE1VSV9ERVNDUklQVElPTl9URVhUICR7U0VDMDZ9IFwKICAgICAgICAgICAgICAgICJUaGUgRGV2ZWxvcG1lbnQgZmlsZXMgcHJvdmlkZSBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMgdXNlZCBmb3IgZGV2ZWxvcGluZyBcCiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgdGhhdCB1c2UgdGhlIE5ldC1TTk1QIGxpYnJhcnkuIgorICAhaW5zZXJ0bWFjcm8gTVVJX0RFU0NSSVBUSU9OX1RFWFQgJHtTRUMwN30gXAorICAgICAgICAgICAgICAgIkVuY3J5cHRpb24gc3VwcG9ydCBpcyByZXF1aXJlZCBmb3IgU05NUHYzIFNIQSBhdXRoZW50aWNhdGlvbiBhbmQgREVTIC8gQUVTIHByaXZhY3kuICBBIFdpbmRvd3MgcGFja2FnZSBpcyBhdmFpbGFibGUgZnJvbSB3d3cuc2xwcm93ZWIuY29tLiIKICFpbnNlcnRtYWNybyBNVUlfRlVOQ1RJT05fREVTQ1JJUFRJT05fRU5ECiAKIEZ1bmN0aW9uIENyZWF0ZVNubXBDb25mCkBAIC01MjUsMzAgKzY4MCwxMzUgQEAKIEZ1bmN0aW9uRW5kCiAKIEZ1bmN0aW9uIHVuLm9uSW5pdAorICBTZXRSZWdWaWV3IDY0CQk7IFByZXZlbnQgdGhlIGluc3RhbGxlciBmcm9tIHVzaW5nIHRoZSBXb3c2NDMyTm9kZSBIS0xNIHN1YmtleSBvbiA2NC1iaXQgc3lzdGVtcwogICBNZXNzYWdlQm94IE1CX0lDT05RVUVTVElPTnxNQl9ZRVNOT3xNQl9ERUZCVVRUT04yICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY29tcGxldGVseSByZW1vdmUgJCheTmFtZSkgYW5kIGFsbCBvZiBpdHMgY29tcG9uZW50cz8iIElEWUVTICsyCiAgIEFib3J0CiBGdW5jdGlvbkVuZAogCiBGdW5jdGlvbiAub25Jbml0Ci0KLVN0ckNweSAkMyAke1NFQzAyfQotCitTZXRSZWdWaWV3IDY0CQk7IFByZXZlbnQgdGhlIGluc3RhbGxlciBmcm9tIHVzaW5nIHRoZSBXb3c2NDMyTm9kZSBIS0xNIHN1YmtleSBvbiA2NC1iaXQgc3lzdGVtcwogUHVzaCAkMAorUHVzaCAkUjAKKworOyBNYWtlIHN1cmUgd2UncmUgcnVubmluZyBXaW5kb3dzIDIwMDAgKDUuMCkgb3IgaGlnaGVyCitDbGVhckVycm9ycworUmVhZFJlZ1N0ciAkUjAgSEtMTSBcCisgICJTT0ZUV0FSRVxNaWNyb3NvZnRcV2luZG93cyBOVFxDdXJyZW50VmVyc2lvbiIgQ3VycmVudFZlcnNpb24KK0lmRXJyb3JzIHdpbmRvd3NWZXJzaW9uRXJyb3IKKworSW50Q21wICRSMCAnNS4wJyB3aW5kb3dzVmVyc2lvbk9LIHdpbmRvd3NWZXJzaW9uRXJyb3Igd2luZG93c1ZlcnNpb25PSword2luZG93c1ZlcnNpb25FcnJvcjoKK01lc3NhZ2VCb3ggTUJfSUNPTklORk9STUFUSU9OfE1CX09LICJUaGlzIHZlcnNpb24gb2YgJCheTmFtZSkgcmVxdWlyZXMgV2luZG93cyAyMDAwIG9yIGhpZ2hlci4gIEZvciBXaW5kb3dzIE5UIGFuZCBsb3dlciwgcGxlYXNlIHVzZSBOZXQtU05NUCA1LjQuIgorUXVpdAorCit3aW5kb3dzVmVyc2lvbk9LOgorO01lc3NhZ2VCb3ggTUJfSUNPTklORk9STUFUSU9OfE1CX09LICJXaW5kb3dzIHZlcnNpb24gb2s6ICRSMCIKKworOyBNYWtlIHN1cmUgd2UncmUgcnVubmluZyB0aGUgcmlnaHQgcGxhdGZvcm0KKztJTlNUQUxMRVJfUExBVEZPUk0KKyR7SWZ9ICR7SU5TVEFMTEVSX1BMQVRGT1JNfSA9PSAieDY0IgorICA7TWVzc2FnZUJveCBNQl9PSyAiNjQtYml0IGJpbmFyeSIKKyAgJHtJZk5vdH0gJHtSdW5uaW5nWDY0fQorICAgIDtNZXNzYWdlQm94IE1CX09LICIzMi1iaXQgT1MiCisJTWVzc2FnZUJveCBNQl9PSyAiVGhpcyBOZXQtU05NUCBwYWNrYWdlIHJlcXVpcmVzIDY0LWJpdCBXaW5kb3dzICh4NjQpLiAgUGxlYXNlIGRvd25sb2FkIHRoZSB4ODYgaW5zdGFsbGVyIHBhY2thZ2UuIgorCVF1aXQKKyAgJHtFbHNlfQorICAgIDtNZXNzYWdlQm94IE1CX09LICI2NC1iaXQgT1MiCisgICR7RW5kSWZ9Ciske0Vsc2V9CisgIDtNZXNzYWdlQm94IE1CX09LICJ4ODYgKDMyLWJpdCkgYmluYXJ5IgorICAke0lmfSAke1J1bm5pbmdYNjR9CisgICAgO01lc3NhZ2VCb3ggTUJfT0sgIjY0LWJpdCBPUyIKKwlNZXNzYWdlQm94IE1CX09LICJZb3UgYXJlIGluc3RhbGxpbmcgYSAzMi1iaXQgcGFja2FnZSBvbiBhIDY0LWJpdCBvcGVyYXRpbmcgc3lzdGVtLiAgQWxsIGFwcGxpY2F0aW9ucyBzaG91bGQgd29yayBleGNlcHQgZm9yIHRoZSAnTmV0LVNOTVAgQWdlbnQgU2VydmljZSB3aXRoIFdpbmRvd3MgRXh0ZW5zaW9uIERMTCBzdXBwb3J0Jy4gIFBsZWFzZSBkb3dubG9hZCB0aGUgeDY0IGluc3RhbGxlciBwYWNrYWdlLiIKKyAgJHtFbmRJZn0JCiske0VuZElmfQogCiA7IERpc2FibGUgRGV2ZWxvcG1lbnQgZmlsZXMgc2VjdGlvbiBieSBkZWZhdWx0CiBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNn0gJDAKIEludE9wICQwICQwICYgJHtTRUNUSU9OX09GRn0KIFNlY3Rpb25TZXRGbGFncyAke1NFQzA2fSAkMAogCis7IERpc2FibGUgT3BlblNTTCBzZWN0aW9uIGJ5IGRlZmF1bHQKK1NlY3Rpb25HZXRGbGFncyAke1NFQzA3fSAkMAorSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorU2VjdGlvblNldEZsYWdzICR7U0VDMDd9ICQwCitTdHJDcHkgJG9wZW5TU0wgImZhbHNlIgorCis7IERpc2FibGUgQWdlbnQgd2l0aCB3aW5FeHRETEwgc3VwcG9ydCAtIHVzZXIgY2FuIHNlbGVjdCBlaXRoZXIgYnV0IG5vdCBib3RoLgorU3RyQ3B5ICRSOCAke1NFQzAyfQorU2VjdGlvbkdldEZsYWdzICR7U0VDMDJ9ICQwCitJbnRPcCAkMCAkMCB8ICR7U0ZfU0VMRUNURUR9CitTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwMn0gJDAKK1NlY3Rpb25HZXRGbGFncyAke1NFQzAzfSAkMAorSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorU2VjdGlvblNldEZsYWdzICR7U0VDMDN9ICQwCisKKzsgU3RvcmUgY3VycmVudCBzdGF0dXMgb2YgU0VDMDcgKFNTTCkuICBVc2VkIGZvciBjaGVja2luZyBpZiBPcGVuU1NMIGlzIGluc3RhbGxlZC4KK1NlY3Rpb25HZXRGbGFncyAke1NFQzA3fSAkUjkKKworUG9wICRSMAogUG9wICQwCiBGdW5jdGlvbkVuZAogCiBGdW5jdGlvbiAub25TZWxDaGFuZ2UKIAotICAhaW5zZXJ0bWFjcm8gU3RhcnRSYWRpb0J1dHRvbnMgJDMKLSAgICAhaW5zZXJ0bWFjcm8gUmFkaW9CdXR0b24gJHtTRUMwMn0KLSAgICAhaW5zZXJ0bWFjcm8gUmFkaW9CdXR0b24gJHtTRUMwM30KLSAgIWluc2VydG1hY3JvIEVuZFJhZGlvQnV0dG9ucworOyAgIWluc2VydG1hY3JvIFN0YXJ0UmFkaW9CdXR0b25zICQyCisgICAgOyFpbnNlcnRtYWNybyBSYWRpb0J1dHRvbiAke1NFQzAyfQorICAgIDshaW5zZXJ0bWFjcm8gUmFkaW9CdXR0b24gJHtTRUMwM30KKyAgOyFpbnNlcnRtYWNybyBFbmRSYWRpb0J1dHRvbnMKKworICAjIENyZWF0ZSBhIGJhY2t1cCBjb3B5IG9mICQwCisgIFB1c2ggJDAKKworICA7IEFnZW50IC0gT25seSBhbGxvdyB1c2VyIHRvIHNlbGVjdCBzdGFuZGFyZCBvciB3aW5FeHRETEwgYWdlbnQKKyAgU3RyQ21wICRSOCAke1NFQzAyfSBvblNlbENoYW5nZV9jaGVja19TRUMzCisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAyfSAkMAorICBJbnRPcCAkMCAkMCAmICR7U0ZfU0VMRUNURUR9CisgIEludENtcCAkMCAke1NGX1NFTEVDVEVEfSAwIG9uU2VsQ2hhbmdlX2FnZW50X2RvbmUgb25TZWxDaGFuZ2VfYWdlbnRfZG9uZQorICBTdHJDcHkgJFI4ICR7U0VDMDJ9CisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAzfSAkMAorICBJbnRPcCAkMCAkMCAmICR7U0VDVElPTl9PRkZ9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAzfSAkMAorICBHb3RvIG9uU2VsQ2hhbmdlX2FnZW50X2RvbmUKKyAKKyAgb25TZWxDaGFuZ2VfY2hlY2tfU0VDMzoKKyAgICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgICBJbnRPcCAkMCAkMCAmICR7U0ZfU0VMRUNURUR9CisgICAgSW50Q21wICQwICR7U0ZfU0VMRUNURUR9IDAgb25TZWxDaGFuZ2VfYWdlbnRfZG9uZSBvblNlbENoYW5nZV9hZ2VudF9kb25lCisgICAgU3RyQ3B5ICRSOCAke1NFQzAzfQorICAgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAyfSAkMAorICAgIEludE9wICQwICQwICYgJHtTRUNUSU9OX09GRn0KKyAgICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwMn0gJDAKKyAKKyAgb25TZWxDaGFuZ2VfYWdlbnRfZG9uZToKKworICA7IElmIHRoZSB1c2VyIGlzIGluc3RhbGxpbmcgYSAzMi1iaXQgYmluYXJ5IG9uIGEgNjQtYml0IE9TLCBkaXNhYmxlIHdpbkV4dERMTCBhZ2VudC4KKyAgJHtJZn0gJHtSdW5uaW5nWDY0fQorICAgICR7SWZOb3R9ICR7SU5TVEFMTEVSX1BMQVRGT1JNfSA9PSAieDY0IgorCSAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDN9ICQwCisgICAgICBJbnRPcCAkMCAkMCAmICR7U0VDVElPTl9PRkZ9CisgICAgICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgICAke0VuZElmfQorICAke0VuZElmfQorICAgIAorICA7IElmIHVzZXIgc2VsZWN0ZWQgRW5jcnlwdGlvbiBzdXBwb3J0LCBtYWtlIHN1cmUgT3BlblNTTCBpcyBpbnN0YWxsZWQuCisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzA3fSAkMAorICBJbnRPcCAkMCAkMCAmICR7U0ZfU0VMRUNURUR9CisgIEludENtcCAkMCAke1NGX1NFTEVDVEVEfSBlbmFibGVTU0xvblNlbENoYW5nZSBkaXNhYmxlU1NMb25TZWxDaGFuZ2UKKyAgZW5hYmxlU1NMb25TZWxDaGFuZ2U6CisgICAgU3RyQ3B5ICRvcGVuU1NMICJ0cnVlIgorICAgIEludENtcCAkUjkgJDAgU1NMYWxyZWFkeUVuYWJsZWQgU1NManVzdEVuYWJsZWQKKyAgICBTU0xqdXN0RW5hYmxlZDoKKyAgICAgIENhbGwgSXNTU0xJbnN0YWxsZWQKKyAgICAgIFNlY3Rpb25HZXRGbGFncyAke1NFQzA3fSAkUjkKKyAgICBTU0xhbHJlYWR5RW5hYmxlZDoKKyAgICAgIGdvdG8gY29udGludWVTU0xvblNlbENoYW5nZQorICBkaXNhYmxlU1NMb25TZWxDaGFuZ2U6CisgICAgU3RyQ3B5ICRvcGVuU1NMICJmYWxzZSIKKwlTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwN30gJFI5CisgIGNvbnRpbnVlU1NMb25TZWxDaGFuZ2U6CisgIAorICBQb3AgJDAKIAogRnVuY3Rpb25FbmQKIApAQCAtNTc5LDYgKzgzOSwxMiBAQAogICBEZWxldGUgIiRJTlNURElSXGRvY3NcQ09QWUlORyIKICAgRGVsZXRlICIkSU5TVERJUlxkb2NzXE5ldC1TTk1QLmNobSIKICAgRGVsZXRlICIkSU5TVERJUlxiaW5cbmV0LXNubXAtcGVybC10ZXN0LnBsIgorCisgIERlbGV0ZSAiJElOU1RESVJcYmluXG1zdmNtOTAuZGxsIgorICBEZWxldGUgIiRJTlNURElSXGJpblxtc3ZjcDkwLmRsbCIKKyAgRGVsZXRlICIkSU5TVERJUlxiaW5cbXN2Y3I5MC5kbGwiCisgIERlbGV0ZSAiJElOU1RESVJcYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKKwogICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wdHJhcGQuZXhlIgogICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wZC5leGUiCiAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXB3YWxrLmV4ZSIKQEAgLTYwMCw2ICs4NjYsNyBAQAogICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wdmFjbS5leGUiCiAgIERlbGV0ZSAiJElOU1RESVJcYmluXGVuY29kZV9rZXljaGFuZ2UuZXhlIgogICBEZWxldGUgIiRJTlNURElSXGJpblxuZXRzbm1wLmRsbCIKKwogICBEZWxldGUgIiRJTlNURElSXGJpblxtaWIyYyIKICAgRGVsZXRlICIkSU5TVERJUlxiaW5cbWliMmMuYmF0IgogICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wY29uZiIKQEAgLTcxOSw2ICs5ODYsNyBAQAogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMubm90aWZ5LmNvbmYiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy5vbGQtYXBpLmNvbmYiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy5wZXJsLmNvbmYiCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy5yYXctdGFibGUuY29uZiIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLnJvdy5jb25mIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMuc2NhbGFyLmNvbmYiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy50YWJsZV9kYXRhLmNvbmYiCkBAIC04MzEsNiArMTA5OSw3IEBACiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxzeXN0ZW1cZnJlZWJzZDYuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXHN5c3RlbVxmcmVlYnNkNy5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcc3lzdGVtXGZyZWVic2Q4LmgiCisgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxzeXN0ZW1ca2ZyZWVic2QuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXHN5c3RlbVxkcmFnb25mbHkuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXHN5c3RlbVxtaW5ndzMyLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxzeXN0ZW1cc29sYXJpczIuOS5oIgpAQCAtOTEwLDYgKzExNzksOSBAQAogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxzbm1wX2xvY2tpbmcuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcc25tcHYzLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XG9pZF9zdGFzaC5oIgorICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxzbm1wQWxpYXNEb21haW4uaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcc25tcERUTFNVRFBEb21haW4uaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcc25tcFNTSERvbWFpbi5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxzbm1wU1RERG9tYWluLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHNubXBUQ1BEb21haW4uaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcc25tcFVEUERvbWFpbi5oIgpAQCAtOTE4LDEwICsxMTkwLDE1IEBACiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHNubXBfZW51bS5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxjbXVfY29tcGF0LmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHNubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oIgorICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxkaXJfdXRpbHMuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcZmlsZV91dGlscy5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVx0ZXh0X3V0aWxzLmgiCisgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHR5cGVzLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XGZkX2V2ZW50X21hbmFnZXIuaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcbGFyZ2VfZmRfc2V0LmgiCisgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHNubXBfb3BlbnNzbC5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxzbm1wX3NlcnZpY2UuaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcc25tcHRzbS5oIgogCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxhZ2VudFxzdGFzaF9jYWNoZS5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcYWdlbnRcaW5zdGFuY2UuaCIKQEAgLTk2NCw2ICsxMjQxLDggQEAKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGFnZW50XHNlcmlhbGl6ZS5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcYWdlbnRcc3Rhc2hfdG9fbmV4dC5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcYWdlbnRcdGFibGVfdGRhdGEuaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGFnZW50XHN5c09SVGFibGUuaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGFnZW50XGFnZW50X3N5c09SVGFibGUuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGFnZW50XG1pYl9tb2R1bGVfY29uZmlnLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxhZ2VudFxhZ2VudF9tb2R1bGVfY29uZmlnLmgiCiAKQEAgLTk3Nyw3ICsxMjU2LDExIEBACiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxkYXRhX2FjY2Vzc1xpcHN0YXRzLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxkYXRhX2FjY2Vzc1xpcGFkZHJlc3MuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGRhdGFfYWNjZXNzXHRjcENvbm4uaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGRhdGFfYWNjZXNzXGRlZmF1bHRfcm91dGUuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGRhdGFfYWNjZXNzXGlwX3NjYWxhcnMuaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGRhdGFfYWNjZXNzXHNjb3Blem9uZS5oIgorICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcZGF0YV9hY2Nlc3Ncc3dpbnN0LmgiCisgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxkYXRhX2FjY2Vzc1xzd3J1bi5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcZGF0YV9hY2Nlc3NcdWRwX2VuZHBvaW50LmgiCiAKICAgRGVsZXRlICIkSU5TVERJUlxsaWJcbmV0c25tcGFnZW50LmxpYiIKQEAgLTEwMzgsNTEgKzEzMjEsMTQgQEAKIAogRnVuY3Rpb24gSXNTU0xJbnN0YWxsZWQKICAgUHVzaCAkUjAKLSAgU3RyQ21wICR7T1BFTlNTTF9SRVFVSVJFRH0gIjAiIGNvbnRpbnVlSW5zdGFsbAotICBSZWFkRW52U3RyICRSMCAid2luZGlyIgotICBJZkZpbGVFeGlzdHMgIiRSMFxzeXN0ZW0zMlxsaWJlYXkzMi5kbGwiIDAgbm9TU0wKKyAgUmVhZEVudlN0ciAkUjAgIk9QRU5TU0xfQ09ORiIKKyAgSWZGaWxlRXhpc3RzICIkUjAiIDAgbm9TU0wKICAgICBHb3RvIGNvbnRpbnVlSW5zdGFsbAogICBub1NTTDoKLSAgICBNZXNzYWdlQm94IE1CX1lFU05PfE1CX0lDT05RVUVTVElPTiAiT3BlblNTTCAoJFIwXHN5c3RlbTMyXGxpYmVheTMyLmRsbCkgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGluc3RhbGxlZC4gIE9wZW5TU0wgaXMgcmVxdWlyZWQgZm9yIHRoaXMgaW5zdGFsbGF0aW9uIG9mIE5ldC1TTk1QLiAgUGxlYXNlIGluc3RhbGwgT3BlblNTTCBmcm9tIGh0dHA6Ly93d3cuc2xwcm93ZWIuY29tL3Byb2R1Y3RzL1dpbjMyT3BlblNTTC5odG1sIGFuZCB0cnkgYWdhaW4uICBXb3VsZCB5b3UgbGlrZSB0byBjb250aW51ZSBpbnN0YWxsaW5nIGFueXdheXM/IiBJRFlFUyBjb250aW51ZUluc3RhbGwKKyAgICBNZXNzYWdlQm94IE1CX1lFU05PfE1CX0lDT05RVUVTVElPTiAiT3BlblNTTCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW5zdGFsbGVkLiAgT3BlblNTTCBpcyByZXF1aXJlZCBmb3IgdGhpcyBpbnN0YWxsYXRpb24gb2YgTmV0LVNOTVAuICBQbGVhc2UgaW5zdGFsbCBPcGVuU1NMIGZyb20gaHR0cDovL3d3dy5zbHByb3dlYi5jb20vcHJvZHVjdHMvV2luMzJPcGVuU1NMLmh0bWwgYW5kIHRyeSBhZ2Fpbi4gIFdvdWxkIHlvdSBsaWtlIHRvIGNvbnRpbnVlIGluc3RhbGxpbmcgYW55d2F5cz8iIElEWUVTIGNvbnRpbnVlSW5zdGFsbAogICBRdWl0CiAgIGNvbnRpbnVlSW5zdGFsbDoKICAgUG9wICRSMAogRnVuY3Rpb25FbmQKIAotRnVuY3Rpb24gSW5zdGFsbEFnZW50Ci0gIFNldE91dFBhdGggIiRJTlNURElSXGJpbiIKIAotICA7IERlbGV0ZSBhZ2VudCBvdGhlcndpc2UgcmUtaW5zdGFsbGluZyBhIGRpZmZlcmVudCBhZ2VudCBtYXkgbm90IHdvcmsgYmVjYXVzZSBvZiBkYXRlIHN0YW1wcwotICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wZC5leGUiICAKLQotICBTdHJDbXAgJHdpbkV4dERMTCAiMSIgc2VjMDJfd2luRXh0RExMIHNlYzAyX25vcm1hbAotCi0gIHNlYzAyX3dpbkV4dERMTDoKLSAgO0ZpbGUgImJpblxzbm1wZC13aW5FeHRETEwuZXhlIgotICBGaWxlIC9vbmFtZT1zbm1wZC5leGUgImJpblxzbm1wZC13aW5FeHRETEwuZXhlIgotICBnb3RvIHNlYzAyX2NvbnRpbnVlCi0KLSAgc2VjMDJfbm9ybWFsOgotICBGaWxlICJiaW5cc25tcGQuZXhlIgotCi0gIHNlYzAyX2NvbnRpbnVlOgotCi0gIFNldE91dFBhdGggIiRJTlNURElSXHNoYXJlXHNubXBcc25tcGNvbmYtZGF0YVxzbm1wZC1kYXRhIgotICBGaWxlICJzaGFyZVxzbm1wXHNubXBjb25mLWRhdGFcc25tcGQtZGF0YVwqLioiCi0gIAotICA7IElmIHdlIGFyZSBvbiBhbiBOVCBzeXN0ZW0gdGhlbiBpbnN0YWxsIHRoZSBzZXJ2aWNlIGJhdGNoIGZpbGVzLgotICBDYWxsIElzTlQKLSAgUG9wICQxCi0gIFN0ckNtcCAkMSAwIE5vU2VydmljZQotICAKLSAgU2V0T3V0UGF0aCAiJElOU1RESVJcIgotICBGaWxlICJyZWdpc3RlcmFnZW50LmJhdCIKLSAgRmlsZSAidW5yZWdpc3RlcmFnZW50LmJhdCIKLSAgQ2FsbCBDcmVhdGVBZ2VudEJhdHMKLQotICBDcmVhdGVEaXJlY3RvcnkgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlIgotICBDcmVhdGVTaG9ydEN1dCAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2VcUmVnaXN0ZXIgQWdlbnQgU2VydmljZS5sbmsiICIkSU5TVERJUlxyZWdpc3RlcmFnZW50LmJhdCIKLSAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFVucmVnaXN0ZXIgQWdlbnQgU2VydmljZS5sbmsiICIkSU5TVERJUlx1bnJlZ2lzdGVyYWdlbnQuYmF0IgotICAKLSAgTm9TZXJ2aWNlOgotRnVuY3Rpb25FbmQKZGlmZiAtLWdpdCBhL3dpbjMyL2xpYmFnZW50L01ha2VmaWxlLmluIGIvd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4KaW5kZXggMGI0ZGJjNC4uNjliMjc3MSAxMDA2NDQKLS0tIGEvd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4KQEAgLTksMzEgKzksMzYgQEAKIE5VTEw9bnVsCiAhRU5ESUYgCiAKK0FMTCA6ICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBhZ2VudC5saWIiCisKKworTElCMzJfT0JKUz0gXAorCSIkKElOVERJUilcYWdlbnRfaGFuZGxlci5vYmoiIFwKKwkiJChJTlRESVIpXGFnZW50X2luZGV4Lm9iaiIgXAorCSIkKElOVERJUilcYWdlbnRfcmVhZF9jb25maWcub2JqIiBcCisJIiQoSU5URElSKVxhZ2VudF9yZWdpc3RyeS5vYmoiIFwKKwkiJChJTlRESVIpXGFnZW50X3N5c09SVGFibGUub2JqIiBcCisJIiQoSU5URElSKVxhZ2VudF90cmFwLm9iaiIgXAorCSIkKElOVERJUilcc25tcF9hZ2VudC5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBfdmFycy5vYmoiCisKK0NMRUFOIDoKKwktQGZvciAlZiBpbiAoJChMSUIzMl9PQkpTKSkgZG8gZXJhc2UgJSVmCisJLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgorCS1AZXJhc2UgIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcGFnZW50LmxpYiIKKworIi4uXGxpYlwkKE9VVERJUikiIDoKKyAgICBpZiBub3QgZXhpc3QgIi4uXGxpYlwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGxpYlwkKE9VVERJUikiCisKKyIkKElOVERJUikiIDoKKyAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgorCitDUFA9Y2wuZXhlCiAhSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCi1BTEwgOiAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wYWdlbnQubGliIgotCi0KLUNMRUFOIDoKLQktQGVyYXNlICIkKElOVERJUilcYWdlbnRfaGFuZGxlci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGFnZW50X2luZGV4Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcYWdlbnRfcmVhZF9jb25maWcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxhZ2VudF9yZWdpc3RyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGFnZW50X3RyYXAub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX2FnZW50Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF92YXJzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKLQktQGVyYXNlICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBhZ2VudC5saWIiCi0KLSIuLlxsaWJcJChPVVRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIuLlxsaWJcJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxsaWJcJChPVVRESVIpIgotCi0iJChJTlRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKLQotQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GcCIkKElOVERJUilcbGliYWdlbnQucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvRUhzYyAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKKyFFTFNFCitDUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvRUhzYyAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKKyFFTkRJRgogCiAuY3skKElOVERJUil9Lm9iajo6CiAgICAkKENQUCkgQDw8CkBAIC01MCwxMjIgKzU1LDE2IEBACiAgICAkKENQUF9QUk9KKSAkPCAKIDw8CiAKLS5jeyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAogCiBSU0M9cmMuZXhlCi1CU0MzMj1ic2NtYWtlLmV4ZQotQlNDMzJfRkxBR1M9L25vbG9nbyAvbyIkKElOVERJUilcbGliYWdlbnQuYnNjIiAKLUJTQzMyX1NCUlM9IFwKLQogTElCMzI9bGluay5leGUgLWxpYgogTElCMzJfRkxBR1M9L25vbG9nbyAvb3V0OiIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBhZ2VudC5saWIiIAotTElCMzJfT0JKUz0gXAotCSIkKElOVERJUilcYWdlbnRfaGFuZGxlci5vYmoiIFwKLQkiJChJTlRESVIpXGFnZW50X2luZGV4Lm9iaiIgXAotCSIkKElOVERJUilcYWdlbnRfcmVhZF9jb25maWcub2JqIiBcCi0JIiQoSU5URElSKVxhZ2VudF9yZWdpc3RyeS5vYmoiIFwKLQkiJChJTlRESVIpXGFnZW50X3RyYXAub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX2FnZW50Lm9iaiIgXAotCSIkKElOVERJUilcc25tcF92YXJzLm9iaiIKIAogIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcGFnZW50LmxpYiIgOiAiLi5cbGliXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSUIzMl9PQkpTKQogICAgICQoTElCMzIpIEA8PAogICAkKExJQjMyX0ZMQUdTKSAkKERFRl9GTEFHUykgJChMSUIzMl9PQkpTKQogPDwKIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi1BTEwgOiAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wYWdlbnQubGliIgotCi0KLUNMRUFOIDoKLQktQGVyYXNlICIkKElOVERJUilcYWdlbnRfaGFuZGxlci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGFnZW50X2luZGV4Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcYWdlbnRfcmVhZF9jb25maWcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxhZ2VudF9yZWdpc3RyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGFnZW50X3RyYXAub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX2FnZW50Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF92YXJzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8ucGRiIgotCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCi0JLUBlcmFzZSAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wYWdlbnQubGliIgotCi0iLi5cbGliXCQoT1VURElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiLi5cbGliXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cbGliXCQoT1VURElSKSIKLQotIiQoSU5URElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCi0KLUNQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GcCIkKElOVERJUilcbGliYWdlbnQucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKLQotLmN7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi1SU0M9cmMuZXhlCi1CU0MzMj1ic2NtYWtlLmV4ZQotQlNDMzJfRkxBR1M9L25vbG9nbyAvbyIkKElOVERJUilcbGliYWdlbnQuYnNjIiAKLUJTQzMyX1NCUlM9IFwKLQotTElCMzI9bGluay5leGUgLWxpYgotTElCMzJfRkxBR1M9L25vbG9nbyAvb3V0OiIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBhZ2VudC5saWIiIAotTElCMzJfT0JKUz0gXAotCSIkKElOVERJUilcYWdlbnRfaGFuZGxlci5vYmoiIFwKLQkiJChJTlRESVIpXGFnZW50X2luZGV4Lm9iaiIgXAotCSIkKElOVERJUilcYWdlbnRfcmVhZF9jb25maWcub2JqIiBcCi0JIiQoSU5URElSKVxhZ2VudF9yZWdpc3RyeS5vYmoiIFwKLQkiJChJTlRESVIpXGFnZW50X3RyYXAub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX2FnZW50Lm9iaiIgXAotCSIkKElOVERJUilcc25tcF92YXJzLm9iaiIKLQotIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcGFnZW50LmxpYiIgOiAiLi5cbGliXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSUIzMl9PQkpTKQotICAgICQoTElCMzIpIEA8PAotICAkKExJQjMyX0ZMQUdTKSAkKERFRl9GTEFHUykgJChMSUIzMl9PQkpTKQotPDwKLQotIUVORElGIAotCiAKICFJRiAiJChOT19FWFRFUk5BTF9ERVBTKSIgIT0gIjEiCiAhSUYgRVhJU1RTKCJsaWJhZ2VudC5kZXAiKQpAQCAtMTc2LDcgKzc1LDYgQEAKICFFTkRJRiAKIAogCi0hSUYgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiIHx8ICIkKENGRykiID09ICJkZWJ1ZyIKIFNPVVJDRT0uLlwuLlxhZ2VudFxhZ2VudF9oYW5kbGVyLmMKIAogIiQoSU5URElSKVxhZ2VudF9oYW5kbGVyLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKQEAgLTIwMCw2ICs5OCwxMCBAQAogIiQoSU5URElSKVxhZ2VudF9yZWdpc3RyeS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCitTT1VSQ0U9Li5cLi5cYWdlbnRcYWdlbnRfc3lzT1JUYWJsZS5jCisKKyIkKElOVERJUilcYWdlbnRfc3lzT1JUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiBTT1VSQ0U9Li5cLi5cYWdlbnRcYWdlbnRfdHJhcC5jCiAKQEAgLTIxOSw3ICsxMjEsMyBAQAogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCi0KLSFFTkRJRiAKLQotCmRpZmYgLS1naXQgYS93aW4zMi9saWJhZ2VudC9saWJhZ2VudC5kc3AgYi93aW4zMi9saWJhZ2VudC9saWJhZ2VudC5kc3AKaW5kZXggZjcwZDQ5NC4uZGU5MmYwZSAxMDA2NDQKLS0tIGEvd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZHNwCisrKyBiL3dpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRzcApAQCAtMTAxLDYgKzEwMSwxMCBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQorU09VUkNFPS4uXC4uXGFnZW50XGFnZW50X3N5c09SVGFibGUuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KIFNPVVJDRT0uLlwuLlxhZ2VudFxhZ2VudF90cmFwLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCkBAIC0xMzMsNiArMTM3LDEwIEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCitTT1VSQ0U9Ii4uXC4uXGluY2x1ZGVcbmV0LXNubXBcYWdlbnRcYWdlbnRfc3lzT1JUYWJsZS5oIg0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KIFNPVVJDRT0iLi5cLi5caW5jbHVkZVxuZXQtc25tcFxhZ2VudFxhZ2VudF90cmFwLmgiDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpkaWZmIC0tZ2l0IGEvd2luMzIvbGliaGVscGVycy9NYWtlZmlsZS5pbiBiL3dpbjMyL2xpYmhlbHBlcnMvTWFrZWZpbGUuaW4KaW5kZXggMjYzYmNkMi4uYmJjODBlOCAxMDA2NDQKLS0tIGEvd2luMzIvbGliaGVscGVycy9NYWtlZmlsZS5pbgorKysgYi93aW4zMi9saWJoZWxwZXJzL01ha2VmaWxlLmluCkBAIC01MSw3ICs1MSw3IEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZwIiQoSU5URElSKVxsaWJoZWxwZXJzLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCitDUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0VIc2MgL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAKIC5jeyQoSU5URElSKX0ub2JqOjoKICAgICQoQ1BQKSBAPDwKQEAgLTE2NSw3ICsxNjUsNyBAQAogICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCiAKIENQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZwIiQoSU5URElSKVxsaWJoZWxwZXJzLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCitDUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvRUhzYyAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKIAogLmN7JChJTlRESVIpfS5vYmo6OgogICAgJChDUFApIEA8PApkaWZmIC0tZ2l0IGEvd2luMzIvbGlibmV0c25tcHRyYXBkL01ha2VmaWxlLmluIGIvd2luMzIvbGlibmV0c25tcHRyYXBkL01ha2VmaWxlLmluCmluZGV4IGI1YzhiMjUuLjM4MjQ5MTkgMTAwNjQ0Ci0tLSBhL3dpbjMyL2xpYm5ldHNubXB0cmFwZC9NYWtlZmlsZS5pbgorKysgYi93aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4KQEAgLTE5LDcgKzE5LDYgQEAKIAktQGVyYXNlICIkKElOVERJUilcc25tcHRyYXBkX2hhbmRsZXJzLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcc25tcHRyYXBkX2xvZy5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHNubXB0cmFwZF9hdXRoLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbm90aWZpY2F0aW9uX2xvZy5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKIAktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIgpAQCAtMzIsNyArMzEsNyBAQAogICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCiAKIENQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRnAiJChJTlRESVIpXGxpYm5ldHNubXB0cmFwZC5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9FSHNjIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAogCiAuY3skKElOVERJUil9Lm9iajo6CiAgICAkKENQUCkgQDw8CkBAIC03Niw3ICs3NSw2IEBACiAJIiQoSU5URElSKVxzbm1wdHJhcGRfaGFuZGxlcnMub2JqIiBcCiAJIiQoSU5URElSKVxzbm1wdHJhcGRfbG9nLm9iaiIgXAogCSIkKElOVERJUilcc25tcHRyYXBkX2F1dGgub2JqIiBcCi0JIiQoSU5URElSKVxub3RpZmljYXRpb25fbG9nLm9iaiIgXAogCSIkKElOVERJUilcd2luc2VydmljZS5vYmoiCiAKICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXB0cmFwZC5saWIiIDogIi4uXGxpYlwkKE9VVERJUikiICQoREVGX0ZJTEUpICQoTElCMzJfT0JKUykKQEAgLTk0LDcgKzkyLDYgQEAKIAktQGVyYXNlICIkKElOVERJUilcc25tcHRyYXBkX2hhbmRsZXJzLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcc25tcHRyYXBkX2xvZy5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHNubXB0cmFwZF9hdXRoLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbm90aWZpY2F0aW9uX2xvZy5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKIAktQGVyYXNlICIkKElOVERJUilcdmM/Py5wZGIiCkBAIC0xMDgsNyArMTA1LDcgQEAKICAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgogCiBDUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRnAiJChJTlRESVIpXGxpYm5ldHNubXB0cmFwZC5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0VIc2MgL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAKIC5jeyQoSU5URElSKX0ub2JqOjoKICAgICQoQ1BQKSBAPDwKQEAgLTE1Miw3ICsxNDksNiBAQAogCSIkKElOVERJUilcc25tcHRyYXBkX2hhbmRsZXJzLm9iaiIgXAogCSIkKElOVERJUilcc25tcHRyYXBkX2xvZy5vYmoiIFwKIAkiJChJTlRESVIpXHNubXB0cmFwZF9hdXRoLm9iaiIgXAotCSIkKElOVERJUilcbm90aWZpY2F0aW9uX2xvZy5vYmoiIFwKIAkiJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIgogCiAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wdHJhcGQubGliIiA6ICIuLlxsaWJcJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJQjMyX09CSlMpCkBAIC0xOTcsMTEgKzE5Myw2IEBACiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxub3RpZmljYXRpb24tbG9nLW1pYlxub3RpZmljYXRpb25fbG9nLmMKLQotIiQoSU5URElSKVxub3RpZmljYXRpb25fbG9nLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KIFNPVVJDRT0uLlwuLlxzbm1wbGliXHdpbnNlcnZpY2UuYwogCiAiJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgpkaWZmIC0tZ2l0IGEvd2luMzIvbGlic2RsbC5kc3cgYi93aW4zMi9saWJzZGxsLmRzdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU1Yzk5OS4uMDAwMDAwMAotLS0gYS93aW4zMi9saWJzZGxsLmRzdworKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLU1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFdvcmtzcGFjZSBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyBXQVJOSU5HOiBETyBOT1QgRURJVCBPUiBERUxFVEUgVEhJUyBXT1JLU1BBQ0UgRklMRSENCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogImxpYmFnZW50Ij0iLlxsaWJhZ2VudFxsaWJhZ2VudC5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJsaWJoZWxwZXJzIj0iLlxsaWJoZWxwZXJzXGxpYmhlbHBlcnMuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTw0Pg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAibGlic25tcF9kbGwiPSIuXGxpYnNubXBfZGxsXGxpYnNubXBfZGxsLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogIm5ldHNubXBtaWJzIj0iLlxuZXRzbm1wbWlic1xuZXRzbm1wbWlicy5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJsaWJuZXRzbm1wdHJhcGQiPSIuXGxpYm5ldHNubXB0cmFwZFxsaWJuZXRzbm1wdHJhcGQuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTw0Pg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1HbG9iYWw6DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTwzPg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCmRpZmYgLS1naXQgYS93aW4zMi9saWJzbm1wL01ha2VmaWxlLmluIGIvd2luMzIvbGlic25tcC9NYWtlZmlsZS5pbgppbmRleCA5YjM2YmI4Li5hNTVmNTEwIDEwMDY0NAotLS0gYS93aW4zMi9saWJzbm1wL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4KQEAgLTY1LDExICs2NSwxMyBAQAogCS1AZXJhc2UgIiQoSU5URElSKVxzeXN0ZW0ub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVx0b29scy5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHN0cnRva19yLm9iaiIKKwktQGVyYXNlICIkKElOVERJUilcc3RydG91bGwub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVx1Y2RfY29tcGF0Lm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcdmFjbS5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgogCS1AZXJhc2UgIiQoSU5URElSKVx3aW5waXBlLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcZmRfZXZlbnRfbWFuYWdlci5vYmoiCisJLUBlcmFzZSAiJChJTlRESVIpXGxhcmdlX2ZkX3NldC5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKIAktQGVyYXNlICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXAubGliIgogCkBAIC04MCw3ICs4Miw3IEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZwIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9FSHNjIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAKIC5jeyQoSU5URElSKX0ub2JqOjoKICAgICQoQ1BQKSBAPDwKQEAgLTE3MCwxMCArMTcyLDEyIEBACiAJIiQoSU5URElSKVxzeXN0ZW0ub2JqIiBcCiAJIiQoSU5URElSKVx0b29scy5vYmoiIFwKIAkiJChJTlRESVIpXHN0cnRva19yLm9iaiIgXAorCSIkKElOVERJUilcc3RydG91bGwub2JqIiBcCiAJIiQoSU5URElSKVx1Y2RfY29tcGF0Lm9iaiIgXAogCSIkKElOVERJUilcdmFjbS5vYmoiIFwKIAkiJChJTlRESVIpXHdpbnBpcGUub2JqIiBcCi0JIiQoSU5URElSKVxmZF9ldmVudF9tYW5hZ2VyLm9iaiIKKwkiJChJTlRESVIpXGZkX2V2ZW50X21hbmFnZXIub2JqIiBcCisJIiQoSU5URElSKVxsYXJnZV9mZF9zZXQub2JqIgogCiAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wLmxpYiIgOiAiLi5cbGliXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSUIzMl9PQkpTKQogICAgICQoTElCMzIpIEA8PApAQCAtMjM2LDEyICsyNDAsMTUgQEAKIAktQGVyYXNlICIkKElOVERJUilcc3lzdGVtLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcdG9vbHMub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxzdHJ0b2tfci5vYmoiCisJLUBlcmFzZSAiJChJTlRESVIpXHN0cnRvdWxsLm9iaiIKKwktQGVyYXNlICIkKElOVERJUilcc3RydG91bGwub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVx1Y2RfY29tcGF0Lm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcdmFjbS5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgogCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LnBkYiIKIAktQGVyYXNlICIkKElOVERJUilcd2lucGlwZS5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXGZkX2V2ZW50X21hbmFnZXIub2JqIgorCS1AZXJhc2UgIiQoSU5URElSKVxsYXJnZV9mZF9zZXQub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCiAJLUBlcmFzZSAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wLmxpYiIKIApAQCAtMjUyLDcgKzI1OSw3IEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRnAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCitDUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvRUhzYyAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAogCiAuY3skKElOVERJUil9Lm9iajo6CiAgICAkKENQUCkgQDw8CkBAIC0zNDIsMTAgKzM0OSwxMyBAQAogCSIkKElOVERJUilcc3lzdGVtLm9iaiIgXAogCSIkKElOVERJUilcdG9vbHMub2JqIiBcCiAJIiQoSU5URElSKVxzdHJ0b2tfci5vYmoiIFwKKwkiJChJTlRESVIpXHN0cnRvdWxsLm9iaiIgXAorCSIkKElOVERJUilcc3RydG91bGwub2JqIiBcCiAJIiQoSU5URElSKVx1Y2RfY29tcGF0Lm9iaiIgXAogCSIkKElOVERJUilcdmFjbS5vYmoiIFwKIAkiJChJTlRESVIpXHdpbnBpcGUub2JqIiBcCi0JIiQoSU5URElSKVxmZF9ldmVudF9tYW5hZ2VyLm9iaiIKKwkiJChJTlRESVIpXGZkX2V2ZW50X21hbmFnZXIub2JqIiBcCisJIiQoSU5URElSKVxsYXJnZV9mZF9zZXQub2JqIgogCiAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wLmxpYiIgOiAiLi5cbGliXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSUIzMl9PQkpTKQogICAgICQoTElCMzIpIEA8PApAQCAtNjY1LDYgKzY3NSwxMiBAQAogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCitTT1VSQ0U9Li5cLi5cc25tcGxpYlxzdHJ0b3VsbC5jCisKKyIkKElOVERJUilcc3RydG91bGwub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCiBTT1VSQ0U9Li5cLi5cc25tcGxpYlx1Y2RfY29tcGF0LmMKIAogIiQoSU5URElSKVx1Y2RfY29tcGF0Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKQEAgLTY4OSw1ICs3MDUsMTEgQEAKIAkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKIAorU09VUkNFPS4uXC4uXHNubXBsaWJcbGFyZ2VfZmRfc2V0LmMKKworIiQoSU5URElSKVxsYXJnZV9mZF9zZXQub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCiAhRU5ESUYgCiAKZGlmZiAtLWdpdCBhL3dpbjMyL2xpYnNubXAvbGlic25tcC5kc3AgYi93aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwCmluZGV4IDE2ZWVhMmQuLmNiY2RhMTIgMTAwNjQ0Ci0tLSBhL3dpbjMyL2xpYnNubXAvbGlic25tcC5kc3AKKysrIGIvd2luMzIvbGlic25tcC9saWJzbm1wLmRzcApAQCAtMjg1LDYgKzI4NSwxMCBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQorU09VUkNFPS4uXC4uXHNubXBsaWJcc3RydG91bGwuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KIFNPVVJDRT0uLlwuLlxzbm1wbGliXHVjZF9jb21wYXQuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KQEAgLTI5OSw2ICszMDMsMTAgQEAKIA0KIFNPVVJDRT0uLlwuLlxzbm1wbGliXGZkX2V2ZW50X21hbmFnZXIuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzbm1wbGliXGxhcmdlX2ZkX3NldC5jDQorIyBFbmQgU291cmNlIEZpbGUNCiAjIEVuZCBHcm91cA0KICMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyINCiANCkBAIC00NTUsNiArNDYzLDE0IEBACiANCiBTT1VSQ0U9Ii4uXC4uXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVx2YWNtLmgiDQogIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcZmRfZXZlbnRfbWFuYWdlci5oIg0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5caW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XGxhcmdlX2ZkX3NldC5oIg0KKyMgRW5kIFNvdXJjZSBGaWxlDQogIyBFbmQgR3JvdXANCiAjIEVuZCBUYXJnZXQNCiAjIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4gYi93aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbgppbmRleCBiZWY3MGFlLi5lODFlMWViIDEwMDY0NAotLS0gYS93aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbgorKysgYi93aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbgpAQCAtMTAsNzEgKzEwLDcyIEBACiBOVUxMPW51bAogIUVORElGIAogCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCiBBTEwgOiAiLi5cYmluXCQoT1VURElSKVxuZXRzbm1wLmRsbCIKIAorTElOSzMyX09CSlM9IFwKKwkiJChJTlRESVIpXGFzbjEub2JqIiBcCisJIiQoSU5URElSKVxjYWxsYmFjay5vYmoiIFwKKwkiJChJTlRESVIpXGNoZWNrX3ZhcmJpbmQub2JqIiBcCisJIiQoSU5URElSKVxjbXVfY29tcGF0Lm9iaiIgXAorCSIkKElOVERJUilcY29udGFpbmVyLm9iaiIgXAorCSIkKElOVERJUilcY29udGFpbmVyX2JpbmFyeV9hcnJheS5vYmoiIFwKKwkiJChJTlRESVIpXGNvbnRhaW5lcl9pdGVyYXRvci5vYmoiIFwKKwkiJChJTlRESVIpXGNvbnRhaW5lcl9saXN0X3NzbGwub2JqIiBcCisJIiQoSU5URElSKVxjb250YWluZXJfbnVsbC5vYmoiIFwKKwkiJChJTlRESVIpXGRhdGFfbGlzdC5vYmoiIFwKKwkiJChJTlRESVIpXGRlZmF1bHRfc3RvcmUub2JqIiBcCisJIiQoSU5URElSKVxnZXRvcHQub2JqIiBcCisJIiQoSU5URElSKVxpbnQ2NC5vYmoiIFwKKwkiJChJTlRESVIpXGluZXRfbnRvcC5vYmoiIFwKKwkiJChJTlRESVIpXGluZXRfcHRvbi5vYmoiIFwKKwkiJChJTlRESVIpXGtleXRvb2xzLm9iaiIgXAorCSIkKElOVERJUilcbGNkX3RpbWUub2JqIiBcCisJIiQoSU5URElSKVxtZDUub2JqIiBcCisJIiQoSU5URElSKVxtaWIub2JqIiBcCisJIiQoSU5URElSKVxtdF9zdXBwb3J0Lm9iaiIgXAorCSIkKElOVERJUilcb2lkX3N0YXNoLm9iaiIgXAorCSIkKElOVERJUilccGFyc2Uub2JqIiBcCisJIiQoSU5URElSKVxyZWFkX2NvbmZpZy5vYmoiIFwKKwkiJChJTlRESVIpXHNjYXBpLm9iaiIgXAorCSIkKElOVERJUilcc25tcC10Yy5vYmoiIFwKKwkiJChJTlRESVIpXHNubXAub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX2FsYXJtLm9iaiIgXAorCSIkKElOVERJUilcc25tcF9hcGkub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX2F1dGgub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX2NsaWVudC5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBfZGVidWcub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX2VudW0ub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX2xvZ2dpbmcub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX3BhcnNlX2FyZ3Mub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX3NlY21vZC5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBfdHJhbnNwb3J0Lm9iaiIgXAorCSIkKElOVERJUilcc25tcF92ZXJzaW9uLm9iaiIgXAorCSIkKElOVERJUilcc25tcF9zZXJ2aWNlLm9iaiIgXAorCSIkKElOVERJUilcc25tcENhbGxiYWNrRG9tYWluLm9iaiIgXAorCSIkKElOVERJUilcc25tcFRDUERvbWFpbi5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBUQ1BJUHY2RG9tYWluLm9iaiIgXAorCSIkKElOVERJUilcc25tcFVEUERvbWFpbi5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBVRFBJUHY2RG9tYWluLm9iaiIgXAorCSIkKElOVERJUilcc25tcHVzbS5vYmoiIFwKKwkiJChJTlRESVIpXHNubXB2My5vYmoiIFwKKwkiJChJTlRESVIpXHN0cmxjYXQub2JqIiBcCisJIiQoSU5URElSKVxzdHJsY3B5Lm9iaiIgXAorCSIkKElOVERJUilcc3lzdGVtLm9iaiIgXAorCSIkKElOVERJUilcdG9vbHMub2JqIiBcCisJIiQoSU5URElSKVxzdHJ0b2tfci5vYmoiIFwKKwkiJChJTlRESVIpXHN0cnRvdWxsLm9iaiIgXAorCSIkKElOVERJUilcdWNkX2NvbXBhdC5vYmoiIFwKKwkiJChJTlRESVIpXHZhY20ub2JqIiBcCisJIiQoSU5URElSKVx3aW5waXBlLm9iaiIgXAorCSIkKElOVERJUilcZmRfZXZlbnRfbWFuYWdlci5vYmoiIFwKKwkiJChJTlRESVIpXGxhcmdlX2ZkX3NldC5vYmoiCiAKIENMRUFOIDoKLQktQGVyYXNlICIkKElOVERJUilcYXNuMS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNhbGxiYWNrLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY2hlY2tfdmFyYmluZC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNtdV9jb21wYXQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjb250YWluZXIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjb250YWluZXJfYmluYXJ5X2FycmF5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY29udGFpbmVyX2l0ZXJhdG9yLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY29udGFpbmVyX2xpc3Rfc3NsbC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNvbnRhaW5lcl9udWxsLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZGF0YV9saXN0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZGVmYXVsdF9zdG9yZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGdldG9wdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGludDY0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaW5ldF9udG9wLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaW5ldF9wdG9uLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilca2V5dG9vbHMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxsY2RfdGltZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1kNS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1pYi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10X3N1cHBvcnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxvaWRfc3Rhc2gub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwYXJzZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHJlYWRfY29uZmlnLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc2NhcGkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wLXRjLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfYWxhcm0ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX2FwaS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfYXV0aC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfY2xpZW50Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9kZWJ1Zy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfZW51bS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfbG9nZ2luZy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfcGFyc2VfYXJncy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfc2VjbW9kLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF90cmFuc3BvcnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX3ZlcnNpb24ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX3NlcnZpY2Uub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wQ2FsbGJhY2tEb21haW4ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wVENQRG9tYWluLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFRDUElQdjZEb21haW4ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wVURQRG9tYWluLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFVEUElQdjZEb21haW4ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wdXNtLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcHYzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3RybGNhdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN0cmxjcHkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzeXN0ZW0ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0b29scy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN0cnRva19yLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdWNkX2NvbXBhdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhY20ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKLQktQGVyYXNlICIkKElOVERJUilcd2lucGlwZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGZkX2V2ZW50X21hbmFnZXIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCisJLUBmb3IgJWYgaW4gKCQoTElOSzMyX09CSlMpKSBkbyBlcmFzZSAlJWYKIAktQGVyYXNlICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXAuZXhwIgogCS1AZXJhc2UgIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcC5saWIiCiAJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVxuZXRzbm1wLmRsbCIKKwktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXG5ldHNubXAuZGxsLm1hbmlmZXN0IgogCiAiLi5cbGliXCQoT1VURElSKSIgOgogICAgIGlmIG5vdCBleGlzdCAiLi5cbGliXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cbGliXCQoT1VURElSKSIKQEAgLTg2LDcgKzg3LDExIEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIk5FVFNOTVBfRExMIiAvRnAiJChJTlRESVIpXGxpYnNubXBfZGxsLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCishSUYgICIkKENGRykiID09ICJyZWxlYXNlIgorQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9FSHNjIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9EICJORVRTTk1QX0RMTCIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKKyFFTFNFCitDUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvRUhzYyAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRCAiTkVUU05NUF9ETEwiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCishRU5ESUYKIAogLmN7JChJTlRESVIpfS5vYmo6OgogICAgJChDUFApIEA8PApAQCAtMTAzLDI3MiArMTA4LDIzIEBACiAgICAkKENQUF9QUk9KKSAkPCAKIDw8CiAKLS5jeyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCiBNVEw9bWlkbC5leGUKIE1UTF9QUk9KPS9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMiAKIFJTQz1yYy5leGUKLUJTQzMyPWJzY21ha2UuZXhlCi1CU0MzMl9GTEFHUz0vbm9sb2dvIC9vIiQoSU5URElSKVxsaWJzbm1wX2RsbC5ic2MiIAotQlNDMzJfU0JSUz0gXAotCiBMSU5LMzI9bGluay5leGUKLUxJTkszMl9GTEFHUz1hZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGxsIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvbmV0c25tcC5wZGIiIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9kZWY6Ii5cbGlic25tcC5kZWYiIC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvbmV0c25tcC5kbGwiIC9pbXBsaWI6Ii4uL2xpYi8kKE9VVERJUilcbmV0c25tcC5saWIiIAotTElOSzMyX09CSlM9IFwKLQkiJChJTlRESVIpXGFzbjEub2JqIiBcCi0JIiQoSU5URElSKVxjYWxsYmFjay5vYmoiIFwKLQkiJChJTlRESVIpXGNoZWNrX3ZhcmJpbmQub2JqIiBcCi0JIiQoSU5URElSKVxjbXVfY29tcGF0Lm9iaiIgXAotCSIkKElOVERJUilcY29udGFpbmVyLm9iaiIgXAotCSIkKElOVERJUilcY29udGFpbmVyX2JpbmFyeV9hcnJheS5vYmoiIFwKLQkiJChJTlRESVIpXGNvbnRhaW5lcl9pdGVyYXRvci5vYmoiIFwKLQkiJChJTlRESVIpXGNvbnRhaW5lcl9saXN0X3NzbGwub2JqIiBcCi0JIiQoSU5URElSKVxjb250YWluZXJfbnVsbC5vYmoiIFwKLQkiJChJTlRESVIpXGRhdGFfbGlzdC5vYmoiIFwKLQkiJChJTlRESVIpXGRlZmF1bHRfc3RvcmUub2JqIiBcCi0JIiQoSU5URElSKVxnZXRvcHQub2JqIiBcCi0JIiQoSU5URElSKVxpbnQ2NC5vYmoiIFwKLQkiJChJTlRESVIpXGluZXRfbnRvcC5vYmoiIFwKLQkiJChJTlRESVIpXGluZXRfcHRvbi5vYmoiIFwKLQkiJChJTlRESVIpXGtleXRvb2xzLm9iaiIgXAotCSIkKElOVERJUilcbGNkX3RpbWUub2JqIiBcCi0JIiQoSU5URElSKVxtZDUub2JqIiBcCi0JIiQoSU5URElSKVxtaWIub2JqIiBcCi0JIiQoSU5URElSKVxtdF9zdXBwb3J0Lm9iaiIgXAotCSIkKElOVERJUilcb2lkX3N0YXNoLm9iaiIgXAotCSIkKElOVERJUilccGFyc2Uub2JqIiBcCi0JIiQoSU5URElSKVxyZWFkX2NvbmZpZy5vYmoiIFwKLQkiJChJTlRESVIpXHNjYXBpLm9iaiIgXAotCSIkKElOVERJUilcc25tcC10Yy5vYmoiIFwKLQkiJChJTlRESVIpXHNubXAub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX2FsYXJtLm9iaiIgXAotCSIkKElOVERJUilcc25tcF9hcGkub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX2F1dGgub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX2NsaWVudC5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfZGVidWcub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX2VudW0ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX2xvZ2dpbmcub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX3BhcnNlX2FyZ3Mub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX3NlY21vZC5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfdHJhbnNwb3J0Lm9iaiIgXAotCSIkKElOVERJUilcc25tcF92ZXJzaW9uLm9iaiIgXAotCSIkKElOVERJUilcc25tcF9zZXJ2aWNlLm9iaiIgXAotCSIkKElOVERJUilcc25tcENhbGxiYWNrRG9tYWluLm9iaiIgXAotCSIkKElOVERJUilcc25tcFRDUERvbWFpbi5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBUQ1BJUHY2RG9tYWluLm9iaiIgXAotCSIkKElOVERJUilcc25tcFVEUERvbWFpbi5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBVRFBJUHY2RG9tYWluLm9iaiIgXAotCSIkKElOVERJUilcc25tcHVzbS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXB2My5vYmoiIFwKLQkiJChJTlRESVIpXHN0cmxjYXQub2JqIiBcCi0JIiQoSU5URElSKVxzdHJsY3B5Lm9iaiIgXAotCSIkKElOVERJUilcc3lzdGVtLm9iaiIgXAotCSIkKElOVERJUilcdG9vbHMub2JqIiBcCi0JIiQoSU5URElSKVxzdHJ0b2tfci5vYmoiIFwKLQkiJChJTlRESVIpXHVjZF9jb21wYXQub2JqIiBcCi0JIiQoSU5URElSKVx2YWNtLm9iaiIgXAotCSIkKElOVERJUilcd2lucGlwZS5vYmoiIFwKLQkiJChJTlRESVIpXGZkX2V2ZW50X21hbmFnZXIub2JqIgorIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKK0xJTkszMl9GTEFHUz1hZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGxsIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvbmV0c25tcC5wZGIiIC9kZWJ1ZyAvZGVmOiIuXGxpYnNubXAuZGVmIiAvb3V0OiIuLi9iaW4vJChPVVRESVIpL25ldHNubXAuZGxsIiAvaW1wbGliOiIuLi9saWIvJChPVVRESVIpL25ldHNubXAubGliIiAKKyFFTFNFCitMSU5LMzJfRkxBR1M9YWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RsbCAvaW5jcmVtZW50YWw6bm8gL3BkYjoiLi4vYmluLyQoT1VURElSKS9uZXRzbm1wLnBkYiIgL2RlYnVnIC9kZWY6Ii5cbGlic25tcC5kZWYiIC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvbmV0c25tcC5kbGwiIC9pbXBsaWI6Ii4uL2xpYi8kKE9VVERJUikvbmV0c25tcC5saWIiIAorIUVORElGCiAKICIuLlxiaW5cJChPVVRESVIpXG5ldHNubXAuZGxsIiA6ICIuLlxiaW5cJChPVVRESVIpIiAiLi5cbGliXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSU5LMzJfT0JKUykKICAgICAkKExJTkszMikgQDw8CiAgICQoTElOSzMyX0ZMQUdTKSAkKExJTkszMl9PQkpTKQogPDwKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi1BTEwgOiAiLi5cYmluXCQoT1VURElSKVxuZXRzbm1wLmRsbCIKLQotCi1DTEVBTiA6Ci0JLUBlcmFzZSAiJChJTlRESVIpXGFzbjEub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjYWxsYmFjay5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNoZWNrX3ZhcmJpbmQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjbXVfY29tcGF0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY29udGFpbmVyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY29udGFpbmVyX2JpbmFyeV9hcnJheS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNvbnRhaW5lcl9pdGVyYXRvci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNvbnRhaW5lcl9saXN0X3NzbGwub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjb250YWluZXJfbnVsbC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGRhdGFfbGlzdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGRlZmF1bHRfc3RvcmUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxnZXRvcHQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxpbnQ2NC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGluZXRfbnRvcC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGluZXRfcHRvbi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGtleXRvb2xzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbGNkX3RpbWUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtZDUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtaWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdF9zdXBwb3J0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcb2lkX3N0YXNoLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccGFyc2Uub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxyZWFkX2NvbmZpZy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNjYXBpLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcC10Yy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXAub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX2FsYXJtLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9hcGkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX2F1dGgub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX2NsaWVudC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfZGVidWcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX2VudW0ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX2xvZ2dpbmcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX3BhcnNlX2FyZ3Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX3NlY21vZC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfdHJhbnNwb3J0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF92ZXJzaW9uLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9zZXJ2aWNlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcENhbGxiYWNrRG9tYWluLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFRDUERvbWFpbi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBUQ1BJUHY2RG9tYWluLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFVEUERvbWFpbi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBVRFBJUHY2RG9tYWluLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcHVzbS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXB2My5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN0cmxjYXQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzdHJsY3B5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3lzdGVtLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdG9vbHMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzdHJ0b2tfci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVjZF9jb21wYXQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2YWNtLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8ucGRiIgotCS1AZXJhc2UgIiQoSU5URElSKVx3aW5waXBlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZmRfZXZlbnRfbWFuYWdlci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKLQktQGVyYXNlICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXAuZXhwIgotCS1AZXJhc2UgIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcC5saWIiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5ldHNubXAucGRiIgotCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcbmV0c25tcC5kbGwiCi0KLSIuLlxsaWJcJChPVVRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIuLlxsaWJcJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxsaWJcJChPVVRESVIpIgotCi0iLi5cYmluXCQoT1VURElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiLi5cYmluXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cYmluXCQoT1VURElSKSIKLQotIiQoSU5URElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCi0KLUNQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIk5FVFNOTVBfRExMIiAvRnAiJChJTlRESVIpXGxpYnNubXBfZGxsLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCi0KLS5jeyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3skKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jcHB7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3h4eyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotTVRMPW1pZGwuZXhlCi1NVExfUFJPSj0vbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzIgCi1SU0M9cmMuZXhlCi1CU0MzMj1ic2NtYWtlLmV4ZQotQlNDMzJfRkxBR1M9L25vbG9nbyAvbyIkKElOVERJUilcbGlic25tcF9kbGwuYnNjIiAKLUJTQzMyX1NCUlM9IFwKLQorIGlmIGV4aXN0ICIuLi9iaW4vJChPVVRESVIpL25ldHNubXAuZGxsLm1hbmlmZXN0IiBcCisJICAgIG10LmV4ZSAtbWFuaWZlc3QgIi4uL2Jpbi8kKE9VVERJUikvbmV0c25tcC5kbGwubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiLi4vYmluLyQoT1VURElSKS9uZXRzbm1wLmRsbCI7MgogTElOSzMyPWxpbmsuZXhlCi1MSU5LMzJfRkxBR1M9YWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RsbCAvaW5jcmVtZW50YWw6bm8gL3BkYjoiLi4vYmluLyQoT1VURElSKVxuZXRzbm1wLnBkYiIgL2RlYnVnIC9tYWNoaW5lOkkzODYgL2RlZjoiLlxsaWJzbm1wLmRlZiIgL291dDoiLi4vYmluLyQoT1VURElSKS9uZXRzbm1wLmRsbCIgL2ltcGxpYjoiLi4vbGliLyQoT1VURElSKVxuZXRzbm1wLmxpYiIgCi1MSU5LMzJfT0JKUz0gXAotCSIkKElOVERJUilcYXNuMS5vYmoiIFwKLQkiJChJTlRESVIpXGNhbGxiYWNrLm9iaiIgXAotCSIkKElOVERJUilcY2hlY2tfdmFyYmluZC5vYmoiIFwKLQkiJChJTlRESVIpXGNtdV9jb21wYXQub2JqIiBcCi0JIiQoSU5URElSKVxjb250YWluZXIub2JqIiBcCi0JIiQoSU5URElSKVxjb250YWluZXJfYmluYXJ5X2FycmF5Lm9iaiIgXAotCSIkKElOVERJUilcY29udGFpbmVyX2l0ZXJhdG9yLm9iaiIgXAotCSIkKElOVERJUilcY29udGFpbmVyX2xpc3Rfc3NsbC5vYmoiIFwKLQkiJChJTlRESVIpXGNvbnRhaW5lcl9udWxsLm9iaiIgXAotCSIkKElOVERJUilcZGF0YV9saXN0Lm9iaiIgXAotCSIkKElOVERJUilcZGVmYXVsdF9zdG9yZS5vYmoiIFwKLQkiJChJTlRESVIpXGdldG9wdC5vYmoiIFwKLQkiJChJTlRESVIpXGludDY0Lm9iaiIgXAotCSIkKElOVERJUilcaW5ldF9udG9wLm9iaiIgXAotCSIkKElOVERJUilcaW5ldF9wdG9uLm9iaiIgXAotCSIkKElOVERJUilca2V5dG9vbHMub2JqIiBcCi0JIiQoSU5URElSKVxsY2RfdGltZS5vYmoiIFwKLQkiJChJTlRESVIpXG1kNS5vYmoiIFwKLQkiJChJTlRESVIpXG1pYi5vYmoiIFwKLQkiJChJTlRESVIpXG10X3N1cHBvcnQub2JqIiBcCi0JIiQoSU5URElSKVxvaWRfc3Rhc2gub2JqIiBcCi0JIiQoSU5URElSKVxwYXJzZS5vYmoiIFwKLQkiJChJTlRESVIpXHJlYWRfY29uZmlnLm9iaiIgXAotCSIkKElOVERJUilcc2NhcGkub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wLXRjLm9iaiIgXAotCSIkKElOVERJUilcc25tcC5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfYWxhcm0ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX2FwaS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfYXV0aC5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfY2xpZW50Lm9iaiIgXAotCSIkKElOVERJUilcc25tcF9kZWJ1Zy5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfZW51bS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfbG9nZ2luZy5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfcGFyc2VfYXJncy5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfc2VjbW9kLm9iaiIgXAotCSIkKElOVERJUilcc25tcF90cmFuc3BvcnQub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX3ZlcnNpb24ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX3NlcnZpY2Uub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wQ2FsbGJhY2tEb21haW4ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wVENQRG9tYWluLm9iaiIgXAotCSIkKElOVERJUilcc25tcFRDUElQdjZEb21haW4ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wVURQRG9tYWluLm9iaiIgXAotCSIkKElOVERJUilcc25tcFVEUElQdjZEb21haW4ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wdXNtLm9iaiIgXAotCSIkKElOVERJUilcc25tcHYzLm9iaiIgXAotCSIkKElOVERJUilcc3RybGNhdC5vYmoiIFwKLQkiJChJTlRESVIpXHN0cmxjcHkub2JqIiBcCi0JIiQoSU5URElSKVxzeXN0ZW0ub2JqIiBcCi0JIiQoSU5URElSKVx0b29scy5vYmoiIFwKLQkiJChJTlRESVIpXHN0cnRva19yLm9iaiIgXAotCSIkKElOVERJUilcdWNkX2NvbXBhdC5vYmoiIFwKLQkiJChJTlRESVIpXHZhY20ub2JqIiBcCi0JIiQoSU5URElSKVx3aW5waXBlLm9iaiIgXAotCSIkKElOVERJUilcZmRfZXZlbnRfbWFuYWdlci5vYmoiCi0KLSIuLlxiaW5cJChPVVRESVIpXG5ldHNubXAuZGxsIiA6ICIuLlxiaW5cJChPVVRESVIpIiAiLi5cbGliXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSU5LMzJfT0JKUykKLSAgICAkKExJTkszMikgQDw8Ci0gICQoTElOSzMyX0ZMQUdTKSAkKExJTkszMl9PQkpTKQotPDwKLQotIUVORElGIAogCiAKICFJRiAiJChOT19FWFRFUk5BTF9ERVBTKSIgIT0gIjEiCkBAIC0zODAsNyArMTM2LDYgQEAKICFFTkRJRiAKIAogCi0hSUYgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiIHx8ICIkKENGRykiID09ICJkZWJ1ZyIKIFNPVVJDRT0uLlwuLlxzbm1wbGliXGFzbjEuYwogCiAiJChJTlRESVIpXGFzbjEub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgpAQCAtNjgxLDYgKzQzNiwxMiBAQAogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCitTT1VSQ0U9Li5cLi5cc25tcGxpYlxzdHJ0b3VsbC5jCisKKyIkKElOVERJUilcc3RydG91bGwub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCiBTT1VSQ0U9Li5cLi5cc25tcGxpYlx1Y2RfY29tcGF0LmMKIAogIiQoSU5URElSKVx1Y2RfY29tcGF0Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKQEAgLTY5OCwxMiArNDU5LDE2IEBACiAiJChJTlRESVIpXHdpbnBpcGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAorCiBTT1VSQ0U9Li5cLi5cc25tcGxpYlxmZF9ldmVudF9tYW5hZ2VyLmMKIAogIiQoSU5URElSKVxmZF9ldmVudF9tYW5hZ2VyLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKIAkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKIAotIUVORElGIAorU09VUkNFPS4uXC4uXHNubXBsaWJcbGFyZ2VfZmRfc2V0LmMKKworIiQoSU5URElSKVxsYXJnZV9mZF9zZXQub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCmRpZmYgLS1naXQgYS93aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiBiL3dpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmCmluZGV4IDQ2NzBmYjYuLmM2MTk5MDQgMTAwNjQ0Ci0tLSBhL3dpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmCisrKyBiL3dpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmCkBAIC0xNjgsNiArMTY4LDkgQEAKIAlzbm1wX2dldF9kb19kZWJ1Z2dpbmcKIAlkZWJ1Z19pbmRlbnQKIAlkZWJ1Z19pbmRlbnRfYWRkCisgICAgICAgIGRlYnVnX2luZGVudF9nZXQKKyAgICAgICAgZGVidWdfY29uZmlnX3JlZ2lzdGVyX3Rva2VucworICAgICAgICBkZWJ1Z19jb25maWdfdHVybl9vbl9kZWJ1Z2dpbmcKIAlkZWJ1Z19pc190b2tlbl9yZWdpc3RlcmVkCiAJZGVidWdtc2cKIAlkZWJ1Z21zZ19oZXgKQEAgLTMwNSw2ICszMDgsNyBAQAogCXNubXBfcmVhbGxvYwogICAgICAgbmV0c25tcF9jb25maWcKICAgICAgIG5ldHNubXBfY29uZmlnX3JlbWVtYmVyCisgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcgogICAgICAgc25tcF9oZXhfdG9fYmluYXJ5CiAgICAgICBzbm1wdjNfb3B0aW9ucwogICAgICAgbmV0c25tcF9nZXRfdmVyc2lvbgpAQCAtMzkzLDYgKzM5Nyw3IEBACiAJbmV0c25tcF9kYWVtb25pemUKIAlzbm1wX2xvZ19vcHRpb25zX3VzYWdlCiAJbmV0c25tcF9jb250YWluZXJfZnJlZV9saXN0CisJbmV0c25tcF9jb250YWluZXJfc2ltcGxlX2ZyZWUKIAluZXRzbm1wX29pZF9zdGFzaF9nZXRuZXh0X25vZGUKIAluZXRzbm1wX29pZF9zdGFzaF9mcmVlCiAJbmV0c25tcF9nZXRfbGlzdF9ub2RlCkBAIC00MTIsNiArNDE3LDcgQEAKIAluZXRzbm1wX3VkcDZfYWdlbnRfY29uZmlnX3Rva2Vuc19yZWdpc3RlcgogCWluaXRfdXNtX2NvbmYKIAlzdHJ0b2tfcgorICAgICAgICBzdHJ0b3VsbAogICAgICAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzCiAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2FkZF9pbmRleAogICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kCkBAIC00MjYsNiArNDMyLDcgQEAKICAgICAgICAgc2tpcF90b2tlbgogICAgICAgICBwYXJzZV9zZWNMZXZlbF9jb25mCiAgICAgICAgIG5ldHNubXBfcXVlcnlfZ2V0X2RlZmF1bHRfc2Vzc2lvbgorICAgICAgICBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb25fdW5jaGVja2VkCiAgICAgICAgIG5ldHNubXBfcXVlcnlfc2V0X2RlZmF1bHRfc2Vzc2lvbgogICAgICAgICBuZXRzbm1wX2RzX3BhcnNlX2Jvb2xlYW4KICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9kZWZhdWx0X3RhcmdldApAQCAtNDUwLDEwICs0NTcsMjEgQEAKICAgICAgICAgbmV0c25tcF9xdWVyeV93YWxrCiAgICAgICAgIG5ldHNubXBfcXVlcnlfZ2V0bmV4dAogICAgICAgICBuZXRzbm1wX3F1ZXJ5X2dldAotCW5ldHNubXBfbWt0ZW1wCisgICAgICAgIG5ldHNubXBfZ2V0aG9zdGJ5bmFtZV92NAorICAgICAgICBuZXRzbm1wX3N0cl90b19naWQKKyAgICAgICAgbmV0c25tcF9ta3RlbXAKKyAgICAgICAgbmV0c25tcF9zdHJfdG9fdWlkCisgICAgICAgIG5ldHNubXBfY2hlY2tfdmJfdHJ1dGh2YWx1ZQorICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcgorICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwCisgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9pc19zZXQKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRmZAorICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX2NscgorICAgICAgICBzbm1wX3JlYWQyCisgICAgICAgIG5ldHNubXBfZGlzcGF0Y2hfZXh0ZXJuYWxfZXZlbnRzMgorICAgICAgICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8yCisgICAgICAgIHNubXBfc2VsZWN0X2luZm8yCisgICAgICAgIHNwcmludF9yZWFsbG9jX2hleHN0cmluZworICAgICAgICBuZXRzbm1wX3NldF9saW5lX2J1ZmZlcmluZwogICAgICAgICBkZWJ1Z21zZ19zdWJvaWQKLTtJUHY2ICAgICAgICBuZXRzbm1wX3VkcDZfcGFyc2Vfc2VjdXJpdHkKLTtJUHY2ICAgICAgICBuZXRzbm1wX3VkcDZfZ2V0U2VjTmFtZQotO0lQdjYgICAgICAgIG5ldHNubXBfVENQSVB2NkRvbWFpbgotO0lQdjYgICAgICAgIG5ldHNubXBfVURQSVB2NkRvbWFpbgotCmRpZmYgLS1naXQgYS93aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3AgYi93aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3AKaW5kZXggZWNiOWQ1ZS4uY2IwNDAzYSAxMDA2NDQKLS0tIGEvd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwCisrKyBiL3dpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcApAQCAtMjkyLDYgKzI5MiwxMCBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQorU09VUkNFPS4uXC4uXHNubXBsaWJcc3RydG91bGwuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KIFNPVVJDRT0uLlwuLlxzbm1wbGliXHVjZF9jb21wYXQuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KQEAgLTMwNiw2ICszMTAsMTAgQEAKIA0KIFNPVVJDRT0uLlwuLlxzbm1wbGliXGZkX2V2ZW50X21hbmFnZXIuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxzbm1wbGliXGxhcmdlX2ZkX3NldC5jDQorIyBFbmQgU291cmNlIEZpbGUNCiAjIEVuZCBHcm91cA0KICMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyINCiANCkBAIC00NjIsNiArNDcwLDE4IEBACiANCiBTT1VSQ0U9Ii4uXC4uXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVx2YWNtLmgiDQogIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcZmRfZXZlbnRfbWFuYWdlci5oIg0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0iLi5cLi5caW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XGxhcmdlX2ZkX3NldC5oIg0KKyMgRW5kIFNvdXJjZSBGaWxlDQogIyBFbmQgR3JvdXANCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cbGlic25tcC5kZWYNCisjIEVuZCBTb3VyY2UgRmlsZQ0KICMgRW5kIFRhcmdldA0KICMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS93aW4zMi9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oIGIvd2luMzIvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAppbmRleCA5NTY2MmFkLi5kOTgxYzgwIDEwMDY0NAotLS0gYS93aW4zMi9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisrKyBiL3dpbjMyL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE4LDggKzE4LDYgQEAKIC8qIERlZmluZSBpZiBjb21waWxpbmcgd2l0aCB0aGUgbm90aWZpY2F0aW9uLWxvZy1taWIgbW9kdWxlIGZpbGVzLiAqLwogI2lmZGVmIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLCiAjZGVmaW5lIFVTSU5HX05PVElGSUNBVElPTl9MT0dfTUlCX05PVElGSUNBVElPTl9MT0dfTU9EVUxFIDEKLSNlbHNlCi0vKiAjdW5kZWYgVVNJTkdfTk9USUZJQ0FUSU9OX0xPR19NSUJfTk9USUZJQ0FUSU9OX0xPR19NT0RVTEUgKi8KICNlbmRpZgogCiAvKiBEZWZpbmUgaWYgY29tcGlsaW5nIHdpdGggdGhlIHRhcmdldCBtb2R1bGUgZmlsZXMuICAqLwpkaWZmIC0tZ2l0IGEvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggYi93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAppbmRleCBhNjgyNmIzLi43NTIzNDAyIDEwMDY0NAotLS0gYS93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorKysgYi93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaApAQCAtMTMsNiArMTMsMTkgQEAKICAgIDEyMDAgPSAgNi4wCiAqLwogCisjaWZkZWYgX01TQ19WRVIKKy8qIERpc2FibGUgd2FybmluZyA0MDE4OiBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2guICovCisjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGU6IDQwMTgpCisjZW5kaWYKKworLyogQXV0b21hdGljYWxseSBzZXQgYnkgV2luZG93cyBwZXJsIENvbmZpZ3VyZSBzY3JpcHQuCisgKiBXaGVuIGNvbXBpbGluZyB3aXRoIHRoZSBNU1ZDIHdvcmtzcGFjZSwgdGhpcyBtdXN0IGJlIHNldCBtYW51YWxseS4KKyAqIFNlZSB0aGUgUEFDS0FHRV9WRVJTSU9OIHZhcmlhYmxlIGluIFVuaXggL2NvbmZpZ3VyZSBzY3JpcHQKKyovCisjaWZuZGVmIFBBQ0tBR0VfVkVSU0lPTgorI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInVua25vd24iCisjZW5kaWYKKwogLyogRGVmaW5lIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLIGlmIHlvdSBoYXZlOgogICogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gTVNWQyA2LjAgYW5kIHRoZSBQbGF0Zm9ybSBTREsgKFBTREspCiAgKiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpby5OZXQgMjAwMgpAQCAtMjAsOSArMzMsMTMgQEAKICAqIEN5Z3dpbgogICogTWluR1cgCiAgKi8KLS8qICN1bmRlZiBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESyAqLworI2RlZmluZSBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESwogCi0vKiBPbmx5IHVzZSBXaW5kb3dzIEFQSSBmdW5jdGlvbnMgYXZhaWxhYmxlIG9uIFdpbmRvd3MgMjAwMCBTUDQgb3IgbGF0ZXIuCisvKiBEZWZpbmUgTkVUU05NUF9FTkFCTEVfSVBWNiB0byBlbmFibGUgSVB2Ni4gIElQdjYgaXMgb25seSBhdmFpbGFibGUgb24KKyAqIFdpbmRvd3MgWFAgYW5kIGhpZ2hlci4gICovCisvKiAjdW5kZWYgTkVUU05NUF9FTkFCTEVfSVBWNiAqLworCisvKiBPbmx5IHVzZSBXaW5kb3dzIEFQSSBmdW5jdGlvbnMgYXZhaWxhYmxlIG9uIFdpbmRvd3MgMjAwMCBTUDQgb3IgbGF0ZXIuICAKICAqIFdlIG5lZWQgYXQgbGVhc3QgU1AxIGZvciBzb21lIElQdjYgZGVmaW5lcyBpbiB3czJpcGRlZi5oLgogICogT25seSBkZWZpbmUgX1dJTjMyX1dJTk5UIHdoZW4gbm90IGJlaW5nIGNvbXBpbGVkIHdpdGggTVNWQyA2IHdpdGhvdXQgUFNESwogICogYmVjYXVzZSB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgTVNWQyA2IGhlYWRlciA8d2luc29jay5oPiB0aGF0IGNhdXNlcwpAQCAtMjMzLDEzICsyNTAsMTQgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2dldG5leHQnIGZ1bmN0aW9uLiAqLwogLyogI3VuZGVmIEhBVkVfQ0dFVE5FWFQgKi8KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxjcnRkYmcuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfQ1JUREJHX0ggMQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX0RJUkVDVF9IICovCisjZGVmaW5lIEhBVkVfRElSRUNUX0ggMQogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNob3duJyBmdW5jdGlvbi4gKi8KLS8qICN1bmRlZiBIQVZFX0NIT1dOICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZW50Lmg+IGhlYWRlciBmaWxlLCBhbmQgaXQgZGVmaW5lcyBgRElSJy4gICovCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVudC5oPiBoZWFkZXIgZmlsZSwgYW5kIGl0IGRlZmluZXMgYERJUicuCisgICAqLwogLyogI3VuZGVmIEhBVkVfRElSRU5UX0ggKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkbGZjbi5oPiBoZWFkZXIgZmlsZS4gKi8KQEAgLTM2NSw5ICszODMsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjcnlwdG8nIGxpYnJhcnkgKC1sY3J5cHRvKS4gKi8KIC8qICN1bmRlZiBIQVZFX0xJQkNSWVBUTyAqLwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGRsJyBsaWJyYXJ5ICgtbGRsKS4gKi8KLS8qICN1bmRlZiBIQVZFX0xJQkRMICovCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZWZlbmNlJyBsaWJyYXJ5ICgtbGVmZW5jZSkuICovCiAvKiAjdW5kZWYgSEFWRV9MSUJFRkVOQ0UgKi8KIApAQCAtMzc3LDkgKzM5Miw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtzdGF0JyBsaWJyYXJ5ICgtbGtzdGF0KS4gKi8KIC8qICN1bmRlZiBIQVZFX0xJQktTVEFUICovCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtJyBsaWJyYXJ5ICgtbGt2bSkuICovCi0vKiAjdW5kZWYgSEFWRV9MSUJLVk0gKi8KLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtJyBsaWJyYXJ5ICgtbG0pLiAqLwogLyogI3VuZGVmIEhBVkVfTElCTSAqLwogCkBAIC00MDQsOSArNDE2LDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2Vuc29ycycgbGlicmFyeSAoLWxzZW5zb3JzKS4gKi8KIC8qICN1bmRlZiBIQVZFX0xJQlNFTlNPUlMgKi8KIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB6JyBsaWJyYXJ5ICgtbHopLiAqLwotLyogI3VuZGVmIEhBVkVfTElCWiAqLwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbWl0cy5oPiBoZWFkZXIgZmlsZS4gKi8KICNkZWZpbmUgSEFWRV9MSU1JVFNfSCAxCiAKQEAgLTQxOSw5ICs0MjgsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsb2NhbGUuaD4gaGVhZGVyIGZpbGUuICovCiAjZGVmaW5lIEhBVkVfTE9DQUxFX0ggMQogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvY2FsdGltZV9yJyBmdW5jdGlvbi4gKi8KLS8qICN1bmRlZiBIQVZFX0xPQ0FMVElNRV9SICovCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHJhbmQ0OCcgZnVuY3Rpb24uICovCiAvKiAjdW5kZWYgSEFWRV9MUkFORDQ4ICovCiAKQEAgLTUxMiw2ICs1MTgsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L2lwX2ljbXAuaD4gaGVhZGVyIGZpbGUuICovCiAvKiAjdW5kZWYgSEFWRV9ORVRJTkVUX0lQX0lDTVBfSCAqLwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaWNtcDYuaD4gaGVhZGVyIGZpbGUuICovCisvKiAjdW5kZWYgSEFWRV9ORVRJTkVUX0lDTVA2X0ggKi8KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L2lwX3Zhci5oPiBoZWFkZXIgZmlsZS4gKi8KIC8qICN1bmRlZiBIQVZFX05FVElORVRfSVBfVkFSX0ggKi8KIApAQCAtNjgzLDkgKzY5Miw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0YXR2ZnMnIGZ1bmN0aW9uLiAqLwogLyogI3VuZGVmIEhBVkVfU1RBVFZGUyAqLwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGFyZy5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TVERBUkdfSCAxCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLwogI2lmZGVmIF9fTUlOR1czMl9fCiAjZGVmaW5lIEhBVkVfU1RESU5UX0ggMQpAQCAtOTQ2LDEzICs5NTIsMTcgQEAKIC8qICN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVCAqLwogCiAvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjaWZuZGVmIFBBQ0tBR0VfTkFNRQogI2RlZmluZSBQQUNLQUdFX05BTUUgIk5ldC1TTk1QIgorI2VuZGlmCiAKIC8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KIC8qICN1bmRlZiBQQUNLQUdFX1NUUklORyAqLwogCiAvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCisjaWZuZGVmIFBBQ0tBR0VfVEFSTkFNRQogI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgIm5ldC1zbm1wIgorI2VuZGlmCiAKIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCiAvKiAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OICovCkBAIC05NjYsNiArOTc2LDkgQEAKIC8qIFRoZSBzaXplIG9mIGEgYGxvbmcnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCiAjZGVmaW5lIFNJWkVPRl9MT05HIDQKIAorLyogVGhlIHNpemUgb2YgYSBgaW50bWF4X3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9JTlRNQVhfVCA4CisKIC8qIFRoZSBzaXplIG9mIGEgYHNob3J0JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwogI2RlZmluZSBTSVpFT0ZfU0hPUlQgMgogCkBAIC0xMDMwLDk2ICsxMDQzLDEwMiBAQAogLyogI3VuZGVmIFJURU5UUllfNF80ICovCiAKIC8qIERvZXMgc3RydWN0IHNpZ2FjdGlvbiBoYXZlIGEgc2Ffc2lnYWN0aW9uIGZpZWxkPyAqLwotLyogI3VuZGVmIFNUUlVDVF9TSUdBQ1RJT05fSEFTX1NBX1NJR0FDVElPTiAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NJR0FDVElPTl9TQV9TSUdBQ1RJT04gKi8KIAogLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHIgaGF2ZSBhIHNhX2xlbiBmaWVsZD8gKi8KLS8qICN1bmRlZiBTVFJVQ1RfU09DS0FERFJfSEFTX1NBX0xFTiAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NBX0xFTiAqLwogCiAvKiBEb2VzIHN0cnVjdCBzb2NrYWRkciBoYXZlIGEgc2FfZmFtaWx5MiBmaWVsZD8gKi8KLS8qICN1bmRlZiBTVFJVQ1RfU09DS0FERFJfSEFTX1NBX1VOSU9OX1NBX0dFTkVSSUNfU0FfRkFNSUxZMiAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NBX1VOSU9OX1NBX0dFTkVSSUNfU0FfRkFNSUxZMiAqLwogCiAvKiBEb2VzIHN0cnVjdCBpbjZfYWRkciBoYXZlIGEgczZfdW4uc2E2X2xhZGQgZmllbGQ/ICovCi0vKiAjdW5kZWYgU1RSVUNUX0lONl9BRERSX0hBU19TNl9VTl9TQTZfTEFERFIgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JTjZfQUREUl9TNl9VTl9TQTZfTEFERFIgKi8KKworLyogbXNoaGRyLm1zZ19jb250cm9sICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfTVNHSERSX01TR19DT05UUk9MICovCisKKy8qIG1zaGhkci5tc2dfZmxhZ3MgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9NU0dIRFJfTVNHX0ZMQUdTICovCiAKIC8qIHJ0ZW50cnkgc3RydWN0dXJlIHRlc3RzICovCiAvKiAjdW5kZWYgUlRFTlRSWV9SVF9ORVhUICovCi0vKiAjdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX0RTVCAqLwotLyogI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9VTklUICovCi0vKiAjdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1VTRSAqLwotLyogI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9SRUZDTlQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfSEFTSCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfRFNUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9VTklUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9VU0UgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1JFRkNOVCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfSEFTSCAqLwogCiAvKiBpZm5ldCBzdHJ1Y3R1cmUgdGVzdHMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0JBVURSQVRFICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9CQVVEUkFURV9JRlNfVkFMVUUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1NQRUVEICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9UWVBFICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9JTUNBU1RTICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9JUURST1BTICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9MQVNUQ0hBTkdFX1RWX1NFQyAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTk9QUk9UTyAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfT01DQVNUUyAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfWE5BTUUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09CWVRFUyAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSUJZVEVTICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9BRERSTElTVCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0JBVURSQVRFICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfQkFVRFJBVEVfSUZTX1ZBTFVFICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfU1BFRUQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9UWVBFICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSU1DQVNUUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lRRFJPUFMgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9MQVNUQ0hBTkdFX1RWX1NFQyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX05PUFJPVE8gKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9PTUNBU1RTICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9PQllURVMgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9JQllURVMgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9BRERSTElTVCAqLwogCiAvKiB0Y3BzdGF0LnRjcHNfcmN2bWVtZHJvcCAqLwotLyogI3VuZGVmIFNUUlVDVF9UQ1BTVEFUX0hBU19UQ1BTX1JDVk1FTURST1AgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9UQ1BTVEFUX1RDUFNfUkNWTUVNRFJPUCAqLwogCiAvKiB1ZHBzdGF0LnVkcHNfZGlzY2FyZCAqLwotLyogI3VuZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX0RJU0NBUkQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfRElTQ0FSRCAqLwogCiAvKiB1ZHBzdGF0LnVkcHNfZGlzY2FyZCAqLwotLyogI3VuZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX05PUE9SVCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19OT1BPUlQgKi8KIAogLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19OT1BPUlRCQ0FTVCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19OT1BPUlRCQ0FTVCAqLwogCiAvKiB1ZHBzdGF0LnVkcHNfZGlzY2FyZCAqLwotLyogI3VuZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX0ZVTExTT0NLICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0ZVTExTT0NLICovCiAKIC8qIGFycGhkLmF0X25leHQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUICovCiAKIC8qIGlmYWRkci5pZmFfbmV4dCAqLwotLyogI3VuZGVmIFNUUlVDVF9JRkFERFJfSEFTX0lGQV9ORVhUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZBRERSX0lGQV9ORVhUICovCiAKIC8qIGlmbmV0LmlmX210dSAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTVRVICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTVRVICovCiAKIC8qIHN3ZGV2dC5zd19uYmxrc2VuYWJsZWQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfU1dERVZUX0hBU19TV19OQkxLU0VOQUJMRUQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9TV0RFVlRfU1dfTkJMS1NFTkFCTEVEICovCiAKIC8qIG5saXN0Lm5fdmFsdWUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfTkxJU1RfSEFTX05fVkFMVUUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9OTElTVF9OX1ZBTFVFICovCiAKIC8qIGlwc3RhdCBzdHJ1Y3R1cmUgdGVzdHMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfQ0FOVEZPUldBUkQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfQ0FOVEZSQUcgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfREVMSVZFUkVEICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0ZSQUdEUk9QUEVEICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0ZSQUdUSU1FT1VUICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0xPQ0FMT1VUICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX05PUFJPVE8gKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTk9ST1VURSAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19PRFJPUFBFRCAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19PRlJBR01FTlRTICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX1JFQVNTRU1CTEVEICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19DQU5URk9SV0FSRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfQ0FOVEZSQUcgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0RFTElWRVJFRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfRlJBR0RST1BQRUQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0ZSQUdUSU1FT1VUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19MT0NBTE9VVCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfTk9QUk9UTyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfTk9ST1VURSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfT0RST1BQRUQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX09GUkFHTUVOVFMgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX1JFQVNTRU1CTEVEICovCiAKIC8qIHZmc3N0YXQuZl9mcnNpemUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfU1RBVFZGU19IQVNfRl9GUlNJWkUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUVkZTX0ZfRlJTSVpFICovCiAKIC8qIHZmc3N0YXQuZl9maWxlcyAqLwotLyogI3VuZGVmIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZJTEVTICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVFZGU19GX0ZJTEVTICovCiAKIC8qIHN0YXRmcyBpbm9kZSBzdHJ1Y3R1cmUgdGVzdHMqLwotLyogI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRklMRVMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfU1RBVEZTX0hBU19GX0ZGUkVFICovCi0vKiAjdW5kZWYgU1RSVUNUX1NUQVRGU19IQVNfRl9GQVZBSUwgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GSUxFUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZGUkVFICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRkFWQUlMICovCiAKIC8qIGRlc19rc19zdHJ1Y3Qud2Vha19rZXkgKi8KLS8qICN1bmRlZiBTVFJVQ1RfREVTX0tTX1NUUlVDVF9IQVNfV0VBS19LRVkgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9ERVNfS1NfU1RSVUNUX1dFQUtfS0VZICovCiAKIC8qIGlmbmV0IG5lZWRzIHRvIGhhdmUgX0tFUk5FTCBkZWZpbmVkICovCiAvKiAjdW5kZWYgSUZORVRfTkVFRFNfS0VSTkVMICovCkBAIC0xMTMzLDkgKzExNTIsNiBAQAogLyogZGVmaW5lIGlmIFNJT0NHSUZBRERSIGV4aXN0cyBpbiBzeXMvaW9jdGwuaCAqLwogLyogI3VuZGVmIFNZU19JT0NUTF9IX0hBU19TSU9DR0lGQUREUiAqLwogCi0vKiBkZWZpbmUgaWYgeW91ciBjb21waWxlciAocHJvY2Vzc29yKSBkZWZpbmVzIF9fRlVOQ1RJT05fXyBmb3IgeW91ICovCi0vKiAjdW5kZWYgSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRCAqLwotCiAvKiBNaWItMiB0cmVlIEluZm8gKi8KIC8qIFRoZXNlIGFyZSB0aGUgc3lzdGVtIGluZm9ybWF0aW9uIHZhcmlhYmxlcy4gKi8KIApAQCAtMTUwMyw2ICsxNTE5LDcgQEAKIAogLyogTm90LXRvLWJlLWNvbXBpbGVkIG1hY3JvcyBmb3IgdXNlIGJ5IGNvbmZpZ3VyZSBvbmx5ICovCiAjZGVmaW5lIGNvbmZpZ19yZXF1aXJlKHgpCisjZGVmaW5lIGNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoeCkKICNkZWZpbmUgY29uZmlnX3dhcm5pbmcoeCkKICNkZWZpbmUgY29uZmlnX2V4Y2x1ZGUoeCkKICNkZWZpbmUgY29uZmlnX2FyY2hfcmVxdWlyZSh4LHkpCkBAIC0xNTc3LDE1ICsxNTk0LDQyIEBACiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IG1vZGVfdDsKICNlbmRpZgogI2lmbmRlZiBIQVZFX1NURElOVF9ICit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKK3R5cGVkZWYgY2hhciBpbnQ4X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90OwordHlwZWRlZiBzaG9ydCBpbnQxNl90OwogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyIHVpbnQzMl90OwogdHlwZWRlZiBsb25nIGludDMyX3Q7CiB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludDY0X3Q7CiB0eXBlZGVmIF9faW50NjQgaW50NjRfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50bWF4X3Q7Cit0eXBlZGVmIF9faW50NjQgaW50bWF4X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAgdWludDE2X3Q7CiAjZWxzZSAvKiBIQVZFX1NURElOVF9IICovCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjZW5kaWYgLyogSEFWRV9TVERJTlRfSCAqLwogCisKKy8qICh1KWludHB0cl90IHNob3VsZCBvbmx5IGJlIG5lZWRlZCBmb3IgTVNWQyA2IDMyLWJpdC4gKi8KKy8qIFNESyBoYXMgaXQgZm9yIDY0LWJpdCBhbmQgbmV3ZXIgTVNWQyBzaG91bGQgYWxzbyBoYXZlIGl0IGluIHN0ZGRlZi5oLiAqLworI2lmbmRlZiBfSU5UUFRSX1RfREVGSU5FRAorI2lmZGVmIF9NX1g2NAordHlwZWRlZiBfX2ludDY0ICAgICAgICAgIGludHB0cl90OworI2Vsc2UKK3R5cGVkZWYgaW50ICAgICAgICAgICAgICBpbnRwdHJfdDsKKyNlbmRpZgorI2RlZmluZSBfSU5UUFRSX1RfREVGSU5FRAorI2VuZGlmCisKKyNpZm5kZWYgX1VJTlRQVFJfVF9ERUZJTkVECisjaWZkZWYgX01fWDY0Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludHB0cl90OworI2Vsc2UKK3R5cGVkZWYgdW5zaWduZWQgaW50ICAgICB1aW50cHRyX3Q7CisjZW5kaWYKKyNkZWZpbmUgX1VJTlRQVFJfVF9ERUZJTkVECisjZW5kaWYKKwogI2lmbmRlZiBfX2NwbHVzcGx1cwogZW51bSB7CiAgICAgbmV0c25tcF9jb21waWxlX3RpbWVfdWludHB0cl90X3NpemVfY2hlY2sKQEAgLTE2MTcsMTcgKzE2NjEsOSBAQAogLyogRGVmaW5lIE5FVFNOTVBfVVNFX0RMTCB3aGVuIGJ1aWxkaW5nIG9yIHVzaW5nIG5ldHNubXAuRExMICovCiAvKiAjdW5kZWYgTkVUU05NUF9VU0VfRExMICovCiAKLSNpZmRlZiBORVRTTk1QX1VTRV9ETEwKLSAgI2lmZGVmIE5FVFNOTVBfRExMCi0gICAgI2lmIGRlZmluZWQoX01TQ19WRVIpCi0gICAgICAjZGVmaW5lIE5FVFNOTVBfSU1QT1JUIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotICAgICNlbmRpZgotICAjZWxzZQotICAgICNpZiBkZWZpbmVkKF9NU0NfVkVSKQotICAgICAgI2RlZmluZSBORVRTTk1QX0lNUE9SVCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSAgICAjZW5kaWYKLSAgI2VuZGlmICAgLyogTkVUU05NUF9ETEwgKi8KLSNlbmRpZiAgICAgLyogTkVUU05NUF9VU0VfRExMICovCisjaWYgZGVmaW5lZChORVRTTk1QX0RMTCkgJiYgIWRlZmluZWQoTkVUU05NUF9VU0VfRExMKQorI2Vycm9yIE5FVFNOTVBfVVNFX0RMTCBtdXN0IGJlIGRlZmluZWQgd2hlbiBidWlsZGluZyBsaWJzbm1wIGFzIGEgRExMLgorI2VuZGlmCiAKIC8qCiAgKiBETEwgZGVjb3JhdGlvbiwgaWYgdXNlZCBhdCBhbGwsIG11c3QgYmUgY29uc2lzdGVudC4KQEAgLTE2NDAsMjAgKzE2NzYsNTUgQEAKICAqICB0aGUgTkVUU05NUF9JTVBPUlQgZGVmaW5pdGlvbnMgaGFybWxlc3MuCiAgKi8KIAotCi0gICNpZmRlZiBORVRTTk1QX1VTRV9ETEwKLSAgICAjaWZuZGVmIE5FVFNOTVBfVE9PTFNfQwotCi0gIC8qIHdyYXAgYWxsb2MgZnVuY3Rpb25zIHRvIHVzZSBETEwncyBtZW1vcnkgaGVhcCAqLwotICAvKiBUaGlzIGlzIG5vdCBkb25lIGluIHRvb2xzLmMsIHdoZXJlIHRoZXNlIHdyYXBwZXJzIGFyZSBkZWZpbmVkICovCi0KLSAgICAgICNkZWZpbmUgc3RyZHVwICAgIG5ldHNubXBfc3RyZHVwCi0gICAgICAjZGVmaW5lIGNhbGxvYyAgICBuZXRzbm1wX2NhbGxvYwotICAgICAgI2RlZmluZSBtYWxsb2MgICAgbmV0c25tcF9tYWxsb2MKLSAgICAgICNkZWZpbmUgcmVhbGxvYyAgIG5ldHNubXBfcmVhbGxvYwotICAgICAgI2RlZmluZSBmcmVlICAgICAgbmV0c25tcF9mcmVlCisjaWZkZWYgTkVUU05NUF9VU0VfRExMCisgICNpZmRlZiBORVRTTk1QX0RMTAorICAgICNpZiBkZWZpbmVkKF9NU0NfVkVSKQorICAgICAgI2RlZmluZSBORVRTTk1QX0lNUE9SVCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICAgICAjZW5kaWYKLSAgI2VuZGlmCisgICNlbHNlCisgICAgI2lmIGRlZmluZWQoX01TQ19WRVIpCisgICAgICAjZGVmaW5lIE5FVFNOTVBfSU1QT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorICAgICNlbmRpZgorICAjZW5kaWYgICAvKiBORVRTTk1QX0RMTCAqLworI2VuZGlmICAgICAvKiBORVRTTk1QX1VTRV9ETEwgKi8KKworLyogTVNWQyBPcGVuU1NMIGxpbmtlciBzZXR0aW5ncy4gKi8KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorIyAgaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKQorIyAgICBpZmRlZiBORVRTTk1QX1VTRV9ETEwKKyMgICAgICBpZmRlZiBfREVCVUcKKyMgICAgICAgIHByYWdtYSBjb21tZW50KGxpYiwgImxpYmVheTMyTURkLmxpYiIpCisjICAgICAgZWxzZQorIyAgICAgICAgcHJhZ21hIGNvbW1lbnQobGliLCAibGliZWF5MzJNRC5saWIiKQorIyAgICAgIGVuZGlmCisjICAgIGVsc2UKKyMgICAgICBpZmRlZiBfREVCVUcKKyMgICAgICAgIHByYWdtYSBjb21tZW50KGxpYiwgImxpYmVheTMyTVRkLmxpYiIpCisjICAgICAgZWxzZQorIyAgICAgICAgcHJhZ21hIGNvbW1lbnQobGliLCAibGliZWF5MzJNVC5saWIiKQorIyAgICAgIGVuZGlmCisjICAgIGVuZGlmCisjICAgIHByYWdtYSBjb21tZW50KGxpYiwgImdkaTMyLmxpYiIpCisjICBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX0RMTCkgJiYgIWRlZmluZWQoTkVUU05NUF9UT09MU19DKSAmJiAhZGVmaW5lZChNU1ZDX1BFUkwpCisKKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4gLyogbWFsbG9jKCksIGNhbGxvYygpLCByZWFsbG9jKCkgYW5kIGZyZWUoKSAqLworI2luY2x1ZGUgPHN0cmluZy5oPiAvKiBzdHJkdXAoKSAqLworI2luY2x1ZGUgPHdzMnRjcGlwLmg+IC8qIHNvY2tsZW5fdCAqLworI2luY2x1ZGUgPHdzcGlhcGkuaD4gLyogaGFzIGlubGluZSBmdW5jdGlvbiBkZWZpbml0aW9ucyByZWZlcmVuY2luZyBjYWxsb2MoKS4gKi8KKworLyogd3JhcCBhbGxvYyBmdW5jdGlvbnMgdG8gdXNlIERMTCdzIG1lbW9yeSBoZWFwICovCisKKyNkZWZpbmUgc3RyZHVwICAgIG5ldHNubXBfc3RyZHVwCisjZGVmaW5lIGNhbGxvYyAgICBuZXRzbm1wX2NhbGxvYworI2RlZmluZSBtYWxsb2MgICAgbmV0c25tcF9tYWxsb2MKKyNkZWZpbmUgcmVhbGxvYyAgIG5ldHNubXBfcmVhbGxvYworI2RlZmluZSBmcmVlICAgICAgbmV0c25tcF9mcmVlCisKKyNlbmRpZiAvKiBkZWZpbmVkKE5FVFNOTVBfVVNFX0RMTCkgJiYgIWRlZmluZWQoTkVUU05NUF9UT09MU19DKSAmJiAhZGVmaW5lZChNU1ZDX1BFUkwpICovCiAKIC8qIE1TVkMgT3BlblNTTCBsaW5rZXIgc2V0dGluZ3MuICovCiAjaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQobWluZ3czMikKQEAgLTE2ODEsNyArMTc1Miw3IEBACiAjICBkZWZpbmUgTkVUU05NUF9JTVBPUlQgZXh0ZXJuCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoSEFWRV9OTElTVCkgJiYgZGVmaW5lZChTVFJVQ1RfTkxJU1RfSEFTX05fVkFMVUUpICYmICFkZWZpbmVkKERPTlRfVVNFX05MSVNUKSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0tNRU1fVVNBR0UpCisjaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUpICYmICFkZWZpbmVkKERPTlRfVVNFX05MSVNUKSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0tNRU1fVVNBR0UpCiAjZGVmaW5lIE5FVFNOTVBfQ0FOX1VTRV9OTElTVAogI2VuZGlmCiAKQEAgLTE2ODksNyArMTc2MCw2IEBACiAjZGVmaW5lIERNQUxMT0NfRlVOQ19DSEVDSwogI2VuZGlmCiAKLS8qICN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCiAvKiAjdW5kZWYgTkVUU05NUF9FTkFCTEVfTE9DQUxfU01VWCAqLwogCiAvKiBkZWZpbmUgaWYgYWdlbnR4IHRyYW5zcG9ydCBpcyB0byB1c2UgZG9tYWluIHNvY2tldHMgb25seSAqLwpAQCAtMTcxMCw3ICsxNzgwLDggQEAKICN1bmRlZiBIQVZFX0lORVRfTlRPUAogI3VuZGVmIEhBVkVfSU5FVF9QVE9OCiAKLSNpZiBORVRTTk1QX0VOQUJMRV9JUFY2CisvKiBJUHY2IHRyYW5zcG9ydHMgKi8KKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CiAgICNkZWZpbmUgTkVUU05NUF9UUkFOU1BPUlRfVENQSVBWNl9ET01BSU4gMQogICAjZGVmaW5lIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOIDEKICNlbHNlCkBAIC0xNzE5LDEwICsxNzkwLDIwIEBACiAjZW5kaWYKICNlbmRpZgogCisvKgorICogQWx0aG91Z2ggaWZfbmFtZXRvaW5kZXgoKSBpcyBhdmFpbGFibGUgb24gV2luZG93cyBWaXN0YSwgV2luZG93cyBTZXJ2ZXIKKyAqIDIwMDggYW5kIGxhdGVyIGluIGlwaGxwYXBpLmRsbCwgZG8gbm90IGxpbmsgd2l0aCBpZl9uYW1ldG9pbmRleCgpIHN1Y2gKKyAqIHRoYXQgdGhlIE5ldC1TTk1QIGV4ZWN1dGFibGUgY2FuIGJlIHN0YXJ0ZWQgb24gZWFybGllciBXaW5kb3dzIHZlcnNpb25zLgorICovCisjdW5kZWYgSEFWRV9JRl9OQU1FVE9JTkRFWAorCiAjaWZuZGVmIE5JX01BWEhPU1QKICNkZWZpbmUgTklfTUFYSE9TVAkxMDI1CiAjZW5kaWYKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJ0b3VsbCcgZnVuY3Rpb24uICovCisvKiAjdW5kZWYgSEFWRV9TVFJUT1VMTCAqLworCiAvKgogICogTW9kdWxlIGNvbmZpZ3VyYXRpb24gYW5kIGNvbnRyb2wgc3RhcnRzIGhlcmUuCiAgKgpAQCAtMTc2Niw5ICsxODQ3LDE2IEBACiAjZGVmaW5lIE5FVFNOTVBfVElNRU9VVF9XQUlURk9SU0lOR0xFT0JKRUNUIDUwMDAKIAogI2lmZGVmIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLCi0jZGVmaW5lIFNUUlVDVF9TT0NLQUREUl9TVE9SQUdFX0hBU19TU19GQU1JTFkgMQorI2RlZmluZSBIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFX1NTX0ZBTUlMWSAxCiAjZW5kaWYKIAorI2lmZGVmIF9NU0NfVkVSCisjaWZkZWYgX1dJTjY0CisjZGVmaW5lIE5FVFNOTVBfUFJJeiAiSTY0IgorI2Vsc2UKKyNkZWZpbmUgTkVUU05NUF9QUkl6ICIiCisjZW5kaWYKKyNlbmRpZgogCiAjZW5kaWYgLyogTkVUX1NOTVBfQ09ORklHX0ggKi8KIApkaWZmIC0tZ2l0IGEvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4gYi93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbgppbmRleCBhNjgyNmIzLi4yZTkzZGNkIDEwMDY0NAotLS0gYS93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbgorKysgYi93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbgpAQCAtMTMsNiArMTMsMTkgQEAKICAgIDEyMDAgPSAgNi4wCiAqLwogCisjaWZkZWYgX01TQ19WRVIKKy8qIERpc2FibGUgd2FybmluZyA0MDE4OiBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2guICovCisjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGU6IDQwMTgpCisjZW5kaWYKKworLyogQXV0b21hdGljYWxseSBzZXQgYnkgV2luZG93cyBwZXJsIENvbmZpZ3VyZSBzY3JpcHQuCisgKiBXaGVuIGNvbXBpbGluZyB3aXRoIHRoZSBNU1ZDIHdvcmtzcGFjZSwgdGhpcyBtdXN0IGJlIHNldCBtYW51YWxseS4KKyAqIFNlZSB0aGUgUEFDS0FHRV9WRVJTSU9OIHZhcmlhYmxlIGluIFVuaXggL2NvbmZpZ3VyZSBzY3JpcHQKKyovCisjaWZuZGVmIFBBQ0tBR0VfVkVSU0lPTgorI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gInVua25vd24iCisjZW5kaWYKKwogLyogRGVmaW5lIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLIGlmIHlvdSBoYXZlOgogICogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gTVNWQyA2LjAgYW5kIHRoZSBQbGF0Zm9ybSBTREsgKFBTREspCiAgKiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpby5OZXQgMjAwMgpAQCAtMjIsNyArMzUsMTEgQEAKICAqLwogLyogI3VuZGVmIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLICovCiAKLS8qIE9ubHkgdXNlIFdpbmRvd3MgQVBJIGZ1bmN0aW9ucyBhdmFpbGFibGUgb24gV2luZG93cyAyMDAwIFNQNCBvciBsYXRlci4KKy8qIERlZmluZSBORVRTTk1QX0VOQUJMRV9JUFY2IHRvIGVuYWJsZSBJUHY2LiAgSVB2NiBpcyBvbmx5IGF2YWlsYWJsZSBvbgorICogV2luZG93cyBYUCBhbmQgaGlnaGVyLiAgKi8KKy8qICN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCisKKy8qIE9ubHkgdXNlIFdpbmRvd3MgQVBJIGZ1bmN0aW9ucyBhdmFpbGFibGUgb24gV2luZG93cyAyMDAwIFNQNCBvciBsYXRlci4gIAogICogV2UgbmVlZCBhdCBsZWFzdCBTUDEgZm9yIHNvbWUgSVB2NiBkZWZpbmVzIGluIHdzMmlwZGVmLmguCiAgKiBPbmx5IGRlZmluZSBfV0lOMzJfV0lOTlQgd2hlbiBub3QgYmVpbmcgY29tcGlsZWQgd2l0aCBNU1ZDIDYgd2l0aG91dCBQU0RLCiAgKiBiZWNhdXNlIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBNU1ZDIDYgaGVhZGVyIDx3aW5zb2NrLmg+IHRoYXQgY2F1c2VzCkBAIC0yMzMsMTMgKzI1MCwxNCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjZ2V0bmV4dCcgZnVuY3Rpb24uICovCiAvKiAjdW5kZWYgSEFWRV9DR0VUTkVYVCAqLwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGNydGRiZy5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9DUlREQkdfSCAxCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZWN0Lmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfRElSRUNUX0ggKi8KKyNkZWZpbmUgSEFWRV9ESVJFQ1RfSCAxCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2hvd24nIGZ1bmN0aW9uLiAqLwotLyogI3VuZGVmIEhBVkVfQ0hPV04gKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkaXJlbnQuaD4gaGVhZGVyIGZpbGUsIGFuZCBpdCBkZWZpbmVzIGBESVInLiAgKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZW50Lmg+IGhlYWRlciBmaWxlLCBhbmQgaXQgZGVmaW5lcyBgRElSJy4KKyAgICovCiAvKiAjdW5kZWYgSEFWRV9ESVJFTlRfSCAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRsZmNuLmg+IGhlYWRlciBmaWxlLiAqLwpAQCAtMzY1LDkgKzM4Myw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNyeXB0bycgbGlicmFyeSAoLWxjcnlwdG8pLiAqLwogLyogI3VuZGVmIEhBVkVfTElCQ1JZUFRPICovCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZGwnIGxpYnJhcnkgKC1sZGwpLiAqLwotLyogI3VuZGVmIEhBVkVfTElCREwgKi8KLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBlZmVuY2UnIGxpYnJhcnkgKC1sZWZlbmNlKS4gKi8KIC8qICN1bmRlZiBIQVZFX0xJQkVGRU5DRSAqLwogCkBAIC0zNzcsOSArMzkyLDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3N0YXQnIGxpYnJhcnkgKC1sa3N0YXQpLiAqLwogLyogI3VuZGVmIEhBVkVfTElCS1NUQVQgKi8KIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm0nIGxpYnJhcnkgKC1sa3ZtKS4gKi8KLS8qICN1bmRlZiBIQVZFX0xJQktWTSAqLwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG0nIGxpYnJhcnkgKC1sbSkuICovCiAvKiAjdW5kZWYgSEFWRV9MSUJNICovCiAKQEAgLTQwNCw5ICs0MTYsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZW5zb3JzJyBsaWJyYXJ5ICgtbHNlbnNvcnMpLiAqLwogLyogI3VuZGVmIEhBVkVfTElCU0VOU09SUyAqLwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHonIGxpYnJhcnkgKC1seikuICovCi0vKiAjdW5kZWYgSEFWRV9MSUJaICovCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGltaXRzLmg+IGhlYWRlciBmaWxlLiAqLwogI2RlZmluZSBIQVZFX0xJTUlUU19IIDEKIApAQCAtNDE5LDkgKzQyOCw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxvY2FsZS5oPiBoZWFkZXIgZmlsZS4gKi8KICNkZWZpbmUgSEFWRV9MT0NBTEVfSCAxCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbG9jYWx0aW1lX3InIGZ1bmN0aW9uLiAqLwotLyogI3VuZGVmIEhBVkVfTE9DQUxUSU1FX1IgKi8KLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBscmFuZDQ4JyBmdW5jdGlvbi4gKi8KIC8qICN1bmRlZiBIQVZFX0xSQU5ENDggKi8KIApAQCAtNTEyLDYgKzUxOCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaXBfaWNtcC5oPiBoZWFkZXIgZmlsZS4gKi8KIC8qICN1bmRlZiBIQVZFX05FVElORVRfSVBfSUNNUF9IICovCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pY21wNi5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZFX05FVElORVRfSUNNUDZfSCAqLworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaXBfdmFyLmg+IGhlYWRlciBmaWxlLiAqLwogLyogI3VuZGVmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSCAqLwogCkBAIC02ODMsOSArNjkyLDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RhdHZmcycgZnVuY3Rpb24uICovCiAvKiAjdW5kZWYgSEFWRV9TVEFUVkZTICovCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkYXJnLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NUREFSR19IIDEKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVyIGZpbGUuICovCiAjaWZkZWYgX19NSU5HVzMyX18KICNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCkBAIC05NDYsMTMgKzk1MiwxNyBAQAogLyogI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUICovCiAKIC8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyNpZm5kZWYgUEFDS0FHRV9OQU1FCiAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAiTmV0LVNOTVAiCisjZW5kaWYKIAogLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwogLyogI3VuZGVmIFBBQ0tBR0VfU1RSSU5HICovCiAKIC8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyNpZm5kZWYgUEFDS0FHRV9UQVJOQU1FCiAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibmV0LXNubXAiCisjZW5kaWYKIAogLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KIC8qICN1bmRlZiBQQUNLQUdFX1ZFUlNJT04gKi8KQEAgLTk2Niw2ICs5NzYsOSBAQAogLyogVGhlIHNpemUgb2YgYSBgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICNkZWZpbmUgU0laRU9GX0xPTkcgNAogCisvKiBUaGUgc2l6ZSBvZiBhIGBpbnRtYXhfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgU0laRU9GX0lOVE1BWF9UIDgKKwogLyogVGhlIHNpemUgb2YgYSBgc2hvcnQnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCiAjZGVmaW5lIFNJWkVPRl9TSE9SVCAyCiAKQEAgLTEwMzAsOTYgKzEwNDMsMTAyIEBACiAvKiAjdW5kZWYgUlRFTlRSWV80XzQgKi8KIAogLyogRG9lcyBzdHJ1Y3Qgc2lnYWN0aW9uIGhhdmUgYSBzYV9zaWdhY3Rpb24gZmllbGQ/ICovCi0vKiAjdW5kZWYgU1RSVUNUX1NJR0FDVElPTl9IQVNfU0FfU0lHQUNUSU9OICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU0lHQUNUSU9OX1NBX1NJR0FDVElPTiAqLwogCiAvKiBEb2VzIHN0cnVjdCBzb2NrYWRkciBoYXZlIGEgc2FfbGVuIGZpZWxkPyAqLwotLyogI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfTEVOICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU0FfTEVOICovCiAKIC8qIERvZXMgc3RydWN0IHNvY2thZGRyIGhhdmUgYSBzYV9mYW1pbHkyIGZpZWxkPyAqLwotLyogI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyICovCiAKIC8qIERvZXMgc3RydWN0IGluNl9hZGRyIGhhdmUgYSBzNl91bi5zYTZfbGFkZCBmaWVsZD8gKi8KLS8qICN1bmRlZiBTVFJVQ1RfSU42X0FERFJfSEFTX1M2X1VOX1NBNl9MQUREUiAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lONl9BRERSX1M2X1VOX1NBNl9MQUREUiAqLworCisvKiBtc2hoZHIubXNnX2NvbnRyb2wgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9NU0dIRFJfTVNHX0NPTlRST0wgKi8KKworLyogbXNoaGRyLm1zZ19mbGFncyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX01TR0hEUl9NU0dfRkxBR1MgKi8KIAogLyogcnRlbnRyeSBzdHJ1Y3R1cmUgdGVzdHMgKi8KIC8qICN1bmRlZiBSVEVOVFJZX1JUX05FWFQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfRFNUICovCi0vKiAjdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1VOSVQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVVNFICovCi0vKiAjdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1JFRkNOVCAqLwotLyogI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9IQVNIICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9EU1QgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1VOSVQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1VTRSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfUkVGQ05UICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9IQVNIICovCiAKIC8qIGlmbmV0IHN0cnVjdHVyZSB0ZXN0cyAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQkFVRFJBVEUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0JBVURSQVRFX0lGU19WQUxVRSAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfU1BFRUQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1RZUEUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lNQ0FTVFMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lRRFJPUFMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0xBU1RDSEFOR0VfVFZfU0VDICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9OT1BST1RPICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9PTUNBU1RTICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9YTkFNRSAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfT0JZVEVTICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9JQllURVMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0FERFJMSVNUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfQkFVRFJBVEUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURV9JRlNfVkFMVUUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9TUEVFRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1RZUEUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9JTUNBU1RTICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSVFEUk9QUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0xBU1RDSEFOR0VfVFZfU0VDICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTk9QUk9UTyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09NQ0FTVFMgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9YTkFNRSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09CWVRFUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lCWVRFUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0FERFJMSVNUICovCiAKIC8qIHRjcHN0YXQudGNwc19yY3ZtZW1kcm9wICovCi0vKiAjdW5kZWYgU1RSVUNUX1RDUFNUQVRfSEFTX1RDUFNfUkNWTUVNRFJPUCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1RDUFNUQVRfVENQU19SQ1ZNRU1EUk9QICovCiAKIC8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0vKiAjdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRElTQ0FSRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19ESVNDQVJEICovCiAKIC8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0vKiAjdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfTk9QT1JUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX05PUE9SVCAqLwogCiAvKiB1ZHBzdGF0LnVkcHNfZGlzY2FyZCAqLwotLyogI3VuZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX05PUE9SVEJDQVNUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX05PUE9SVEJDQVNUICovCiAKIC8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0vKiAjdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRlVMTFNPQ0sgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfRlVMTFNPQ0sgKi8KIAogLyogYXJwaGQuYXRfbmV4dCAqLwotLyogI3VuZGVmIFNUUlVDVF9BUlBIRF9IQVNfQVRfTkVYVCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0FSUEhEX0FUX05FWFQgKi8KIAogLyogaWZhZGRyLmlmYV9uZXh0ICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGQUREUl9IQVNfSUZBX05FWFQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRkFERFJfSUZBX05FWFQgKi8KIAogLyogaWZuZXQuaWZfbXR1ICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9NVFUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9NVFUgKi8KIAogLyogc3dkZXZ0LnN3X25ibGtzZW5hYmxlZCAqLwotLyogI3VuZGVmIFNUUlVDVF9TV0RFVlRfSEFTX1NXX05CTEtTRU5BQkxFRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NXREVWVF9TV19OQkxLU0VOQUJMRUQgKi8KIAogLyogbmxpc3Qubl92YWx1ZSAqLwotLyogI3VuZGVmIFNUUlVDVF9OTElTVF9IQVNfTl9WQUxVRSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUgKi8KIAogLyogaXBzdGF0IHN0cnVjdHVyZSB0ZXN0cyAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19DQU5URk9SV0FSRCAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19DQU5URlJBRyAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19ERUxJVkVSRUQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfRlJBR0RST1BQRUQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfRlJBR1RJTUVPVVQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTE9DQUxPVVQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTk9QUk9UTyAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19OT1JPVVRFICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX09EUk9QUEVEICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX09GUkFHTUVOVFMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfUkVBU1NFTUJMRUQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0NBTlRGT1JXQVJEICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19DQU5URlJBRyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfREVMSVZFUkVEICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHRFJPUFBFRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfRlJBR1RJTUVPVVQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0xPQ0FMT1VUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19OT1BST1RPICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19OT1JPVVRFICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19PRFJPUFBFRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfT0ZSQUdNRU5UUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfUkVBU1NFTUJMRUQgKi8KIAogLyogdmZzc3RhdC5mX2Zyc2l6ZSAqLwotLyogI3VuZGVmIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZSU0laRSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUgKi8KIAogLyogdmZzc3RhdC5mX2ZpbGVzICovCi0vKiAjdW5kZWYgU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRklMRVMgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUVkZTX0ZfRklMRVMgKi8KIAogLyogc3RhdGZzIGlub2RlIHN0cnVjdHVyZSB0ZXN0cyovCi0vKiAjdW5kZWYgU1RSVUNUX1NUQVRGU19IQVNfRl9GSUxFUyAqLwotLyogI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRkZSRUUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfU1RBVEZTX0hBU19GX0ZBVkFJTCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZJTEVTICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRkZSRUUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GQVZBSUwgKi8KIAogLyogZGVzX2tzX3N0cnVjdC53ZWFrX2tleSAqLwotLyogI3VuZGVmIFNUUlVDVF9ERVNfS1NfU1RSVUNUX0hBU19XRUFLX0tFWSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0RFU19LU19TVFJVQ1RfV0VBS19LRVkgKi8KIAogLyogaWZuZXQgbmVlZHMgdG8gaGF2ZSBfS0VSTkVMIGRlZmluZWQgKi8KIC8qICN1bmRlZiBJRk5FVF9ORUVEU19LRVJORUwgKi8KQEAgLTExMzMsOSArMTE1Miw2IEBACiAvKiBkZWZpbmUgaWYgU0lPQ0dJRkFERFIgZXhpc3RzIGluIHN5cy9pb2N0bC5oICovCiAvKiAjdW5kZWYgU1lTX0lPQ1RMX0hfSEFTX1NJT0NHSUZBRERSICovCiAKLS8qIGRlZmluZSBpZiB5b3VyIGNvbXBpbGVyIChwcm9jZXNzb3IpIGRlZmluZXMgX19GVU5DVElPTl9fIGZvciB5b3UgKi8KLS8qICN1bmRlZiBIQVZFX0NQUF9VTkRFUkJBUl9GVU5DVElPTl9ERUZJTkVEICovCi0KIC8qIE1pYi0yIHRyZWUgSW5mbyAqLwogLyogVGhlc2UgYXJlIHRoZSBzeXN0ZW0gaW5mb3JtYXRpb24gdmFyaWFibGVzLiAqLwogCkBAIC0xNTAzLDYgKzE1MTksNyBAQAogCiAvKiBOb3QtdG8tYmUtY29tcGlsZWQgbWFjcm9zIGZvciB1c2UgYnkgY29uZmlndXJlIG9ubHkgKi8KICNkZWZpbmUgY29uZmlnX3JlcXVpcmUoeCkKKyNkZWZpbmUgY29uZmlnX3ZlcnNpb25fcmVxdWlyZSh4KQogI2RlZmluZSBjb25maWdfd2FybmluZyh4KQogI2RlZmluZSBjb25maWdfZXhjbHVkZSh4KQogI2RlZmluZSBjb25maWdfYXJjaF9yZXF1aXJlKHgseSkKQEAgLTE1NzcsMTUgKzE1OTQsNDIgQEAKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgbW9kZV90OwogI2VuZGlmCiAjaWZuZGVmIEhBVkVfU1RESU5UX0gKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50OF90OwordHlwZWRlZiBjaGFyIGludDhfdDsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7Cit0eXBlZGVmIHNob3J0IGludDE2X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgdWludDMyX3Q7CiB0eXBlZGVmIGxvbmcgaW50MzJfdDsKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50NjRfdDsKIHR5cGVkZWYgX19pbnQ2NCBpbnQ2NF90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnRtYXhfdDsKK3R5cGVkZWYgX19pbnQ2NCBpbnRtYXhfdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICB1aW50MTZfdDsKICNlbHNlIC8qIEhBVkVfU1RESU5UX0ggKi8KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNlbmRpZiAvKiBIQVZFX1NURElOVF9IICovCiAKKworLyogKHUpaW50cHRyX3Qgc2hvdWxkIG9ubHkgYmUgbmVlZGVkIGZvciBNU1ZDIDYgMzItYml0LiAqLworLyogU0RLIGhhcyBpdCBmb3IgNjQtYml0IGFuZCBuZXdlciBNU1ZDIHNob3VsZCBhbHNvIGhhdmUgaXQgaW4gc3RkZGVmLmguICovCisjaWZuZGVmIF9JTlRQVFJfVF9ERUZJTkVECisjaWZkZWYgX01fWDY0Cit0eXBlZGVmIF9faW50NjQgICAgICAgICAgaW50cHRyX3Q7CisjZWxzZQordHlwZWRlZiBpbnQgICAgICAgICAgICAgIGludHB0cl90OworI2VuZGlmCisjZGVmaW5lIF9JTlRQVFJfVF9ERUZJTkVECisjZW5kaWYKKworI2lmbmRlZiBfVUlOVFBUUl9UX0RFRklORUQKKyNpZmRlZiBfTV9YNjQKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50cHRyX3Q7CisjZWxzZQordHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgIHVpbnRwdHJfdDsKKyNlbmRpZgorI2RlZmluZSBfVUlOVFBUUl9UX0RFRklORUQKKyNlbmRpZgorCiAjaWZuZGVmIF9fY3BsdXNwbHVzCiBlbnVtIHsKICAgICBuZXRzbm1wX2NvbXBpbGVfdGltZV91aW50cHRyX3Rfc2l6ZV9jaGVjawpAQCAtMTYxNywxNyArMTY2MSw5IEBACiAvKiBEZWZpbmUgTkVUU05NUF9VU0VfRExMIHdoZW4gYnVpbGRpbmcgb3IgdXNpbmcgbmV0c25tcC5ETEwgKi8KIC8qICN1bmRlZiBORVRTTk1QX1VTRV9ETEwgKi8KIAotI2lmZGVmIE5FVFNOTVBfVVNFX0RMTAotICAjaWZkZWYgTkVUU05NUF9ETEwKLSAgICAjaWYgZGVmaW5lZChfTVNDX1ZFUikKLSAgICAgICNkZWZpbmUgTkVUU05NUF9JTVBPUlQgX19kZWNsc3BlYyhkbGxleHBvcnQpCi0gICAgI2VuZGlmCi0gICNlbHNlCi0gICAgI2lmIGRlZmluZWQoX01TQ19WRVIpCi0gICAgICAjZGVmaW5lIE5FVFNOTVBfSU1QT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotICAgICNlbmRpZgotICAjZW5kaWYgICAvKiBORVRTTk1QX0RMTCAqLwotI2VuZGlmICAgICAvKiBORVRTTk1QX1VTRV9ETEwgKi8KKyNpZiBkZWZpbmVkKE5FVFNOTVBfRExMKSAmJiAhZGVmaW5lZChORVRTTk1QX1VTRV9ETEwpCisjZXJyb3IgTkVUU05NUF9VU0VfRExMIG11c3QgYmUgZGVmaW5lZCB3aGVuIGJ1aWxkaW5nIGxpYnNubXAgYXMgYSBETEwuCisjZW5kaWYKIAogLyoKICAqIERMTCBkZWNvcmF0aW9uLCBpZiB1c2VkIGF0IGFsbCwgbXVzdCBiZSBjb25zaXN0ZW50LgpAQCAtMTY0MCwyMCArMTY3Niw1NSBAQAogICogIHRoZSBORVRTTk1QX0lNUE9SVCBkZWZpbml0aW9ucyBoYXJtbGVzcy4KICAqLwogCi0KLSAgI2lmZGVmIE5FVFNOTVBfVVNFX0RMTAotICAgICNpZm5kZWYgTkVUU05NUF9UT09MU19DCi0KLSAgLyogd3JhcCBhbGxvYyBmdW5jdGlvbnMgdG8gdXNlIERMTCdzIG1lbW9yeSBoZWFwICovCi0gIC8qIFRoaXMgaXMgbm90IGRvbmUgaW4gdG9vbHMuYywgd2hlcmUgdGhlc2Ugd3JhcHBlcnMgYXJlIGRlZmluZWQgKi8KLQotICAgICAgI2RlZmluZSBzdHJkdXAgICAgbmV0c25tcF9zdHJkdXAKLSAgICAgICNkZWZpbmUgY2FsbG9jICAgIG5ldHNubXBfY2FsbG9jCi0gICAgICAjZGVmaW5lIG1hbGxvYyAgICBuZXRzbm1wX21hbGxvYwotICAgICAgI2RlZmluZSByZWFsbG9jICAgbmV0c25tcF9yZWFsbG9jCi0gICAgICAjZGVmaW5lIGZyZWUgICAgICBuZXRzbm1wX2ZyZWUKKyNpZmRlZiBORVRTTk1QX1VTRV9ETEwKKyAgI2lmZGVmIE5FVFNOTVBfRExMCisgICAgI2lmIGRlZmluZWQoX01TQ19WRVIpCisgICAgICAjZGVmaW5lIE5FVFNOTVBfSU1QT1JUIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQogICAgICNlbmRpZgotICAjZW5kaWYKKyAgI2Vsc2UKKyAgICAjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgICAgICNkZWZpbmUgTkVUU05NUF9JTVBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisgICAgI2VuZGlmCisgICNlbmRpZiAgIC8qIE5FVFNOTVBfRExMICovCisjZW5kaWYgICAgIC8qIE5FVFNOTVBfVVNFX0RMTCAqLworCisvKiBNU1ZDIE9wZW5TU0wgbGlua2VyIHNldHRpbmdzLiAqLworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjICBpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpCisjICAgIGlmZGVmIE5FVFNOTVBfVVNFX0RMTAorIyAgICAgIGlmZGVmIF9ERUJVRworIyAgICAgICAgcHJhZ21hIGNvbW1lbnQobGliLCAibGliZWF5MzJNRGQubGliIikKKyMgICAgICBlbHNlCisjICAgICAgICBwcmFnbWEgY29tbWVudChsaWIsICJsaWJlYXkzMk1ELmxpYiIpCisjICAgICAgZW5kaWYKKyMgICAgZWxzZQorIyAgICAgIGlmZGVmIF9ERUJVRworIyAgICAgICAgcHJhZ21hIGNvbW1lbnQobGliLCAibGliZWF5MzJNVGQubGliIikKKyMgICAgICBlbHNlCisjICAgICAgICBwcmFnbWEgY29tbWVudChsaWIsICJsaWJlYXkzMk1ULmxpYiIpCisjICAgICAgZW5kaWYKKyMgICAgZW5kaWYKKyMgICAgcHJhZ21hIGNvbW1lbnQobGliLCAiZ2RpMzIubGliIikKKyMgIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfRExMKSAmJiAhZGVmaW5lZChORVRTTk1QX1RPT0xTX0MpICYmICFkZWZpbmVkKE1TVkNfUEVSTCkKKworI2luY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPiAvKiBtYWxsb2MoKSwgY2FsbG9jKCksIHJlYWxsb2MoKSBhbmQgZnJlZSgpICovCisjaW5jbHVkZSA8c3RyaW5nLmg+IC8qIHN0cmR1cCgpICovCisjaW5jbHVkZSA8d3MydGNwaXAuaD4gLyogc29ja2xlbl90ICovCisjaW5jbHVkZSA8d3NwaWFwaS5oPiAvKiBoYXMgaW5saW5lIGZ1bmN0aW9uIGRlZmluaXRpb25zIHJlZmVyZW5jaW5nIGNhbGxvYygpLiAqLworCisvKiB3cmFwIGFsbG9jIGZ1bmN0aW9ucyB0byB1c2UgRExMJ3MgbWVtb3J5IGhlYXAgKi8KKworI2RlZmluZSBzdHJkdXAgICAgbmV0c25tcF9zdHJkdXAKKyNkZWZpbmUgY2FsbG9jICAgIG5ldHNubXBfY2FsbG9jCisjZGVmaW5lIG1hbGxvYyAgICBuZXRzbm1wX21hbGxvYworI2RlZmluZSByZWFsbG9jICAgbmV0c25tcF9yZWFsbG9jCisjZGVmaW5lIGZyZWUgICAgICBuZXRzbm1wX2ZyZWUKKworI2VuZGlmIC8qIGRlZmluZWQoTkVUU05NUF9VU0VfRExMKSAmJiAhZGVmaW5lZChORVRTTk1QX1RPT0xTX0MpICYmICFkZWZpbmVkKE1TVkNfUEVSTCkgKi8KIAogLyogTVNWQyBPcGVuU1NMIGxpbmtlciBzZXR0aW5ncy4gKi8KICNpZiBkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChtaW5ndzMyKQpAQCAtMTY4MSw3ICsxNzUyLDcgQEAKICMgIGRlZmluZSBORVRTTk1QX0lNUE9SVCBleHRlcm4KICNlbmRpZgogCi0jaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKFNUUlVDVF9OTElTVF9IQVNfTl9WQUxVRSkgJiYgIWRlZmluZWQoRE9OVF9VU0VfTkxJU1QpICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKKyNpZiBkZWZpbmVkKEhBVkVfTkxJU1QpICYmIGRlZmluZWQoSEFWRV9TVFJVQ1RfTkxJU1RfTl9WQUxVRSkgJiYgIWRlZmluZWQoRE9OVF9VU0VfTkxJU1QpICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKICNkZWZpbmUgTkVUU05NUF9DQU5fVVNFX05MSVNUCiAjZW5kaWYKIApAQCAtMTY4OSw3ICsxNzYwLDYgQEAKICNkZWZpbmUgRE1BTExPQ19GVU5DX0NIRUNLCiAjZW5kaWYKIAotLyogI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KIC8qICN1bmRlZiBORVRTTk1QX0VOQUJMRV9MT0NBTF9TTVVYICovCiAKIC8qIGRlZmluZSBpZiBhZ2VudHggdHJhbnNwb3J0IGlzIHRvIHVzZSBkb21haW4gc29ja2V0cyBvbmx5ICovCkBAIC0xNzEwLDcgKzE3ODAsOCBAQAogI3VuZGVmIEhBVkVfSU5FVF9OVE9QCiAjdW5kZWYgSEFWRV9JTkVUX1BUT04KIAotI2lmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKy8qIElQdjYgdHJhbnNwb3J0cyAqLworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKICAgI2RlZmluZSBORVRTTk1QX1RSQU5TUE9SVF9UQ1BJUFY2X0RPTUFJTiAxCiAgICNkZWZpbmUgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4gMQogI2Vsc2UKQEAgLTE3MTksMTAgKzE3OTAsMjAgQEAKICNlbmRpZgogI2VuZGlmCiAKKy8qCisgKiBBbHRob3VnaCBpZl9uYW1ldG9pbmRleCgpIGlzIGF2YWlsYWJsZSBvbiBXaW5kb3dzIFZpc3RhLCBXaW5kb3dzIFNlcnZlcgorICogMjAwOCBhbmQgbGF0ZXIgaW4gaXBobHBhcGkuZGxsLCBkbyBub3QgbGluayB3aXRoIGlmX25hbWV0b2luZGV4KCkgc3VjaAorICogdGhhdCB0aGUgTmV0LVNOTVAgZXhlY3V0YWJsZSBjYW4gYmUgc3RhcnRlZCBvbiBlYXJsaWVyIFdpbmRvd3MgdmVyc2lvbnMuCisgKi8KKyN1bmRlZiBIQVZFX0lGX05BTUVUT0lOREVYCisKICNpZm5kZWYgTklfTUFYSE9TVAogI2RlZmluZSBOSV9NQVhIT1NUCTEwMjUKICNlbmRpZgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvdWxsJyBmdW5jdGlvbi4gKi8KKy8qICN1bmRlZiBIQVZFX1NUUlRPVUxMICovCisKIC8qCiAgKiBNb2R1bGUgY29uZmlndXJhdGlvbiBhbmQgY29udHJvbCBzdGFydHMgaGVyZS4KICAqCkBAIC0xNzY2LDkgKzE4NDcsMTYgQEAKICNkZWZpbmUgTkVUU05NUF9USU1FT1VUX1dBSVRGT1JTSU5HTEVPQkpFQ1QgNTAwMAogCiAjaWZkZWYgSEFWRV9XSU4zMl9QTEFURk9STV9TREsKLSNkZWZpbmUgU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfSEFTX1NTX0ZBTUlMWSAxCisjZGVmaW5lIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfU1NfRkFNSUxZIDEKICNlbmRpZgogCisjaWZkZWYgX01TQ19WRVIKKyNpZmRlZiBfV0lONjQKKyNkZWZpbmUgTkVUU05NUF9QUkl6ICJJNjQiCisjZWxzZQorI2RlZmluZSBORVRTTk1QX1BSSXogIiIKKyNlbmRpZgorI2VuZGlmCiAKICNlbmRpZiAvKiBORVRfU05NUF9DT05GSUdfSCAqLwogCmRpZmYgLS1naXQgYS93aW4zMi9uZXRzbm1wbWlicy9NYWtlZmlsZS5pbiBiL3dpbjMyL25ldHNubXBtaWJzL01ha2VmaWxlLmluCmluZGV4IDRlMjRkNzUuLmYyODcwMGIgMTAwNjQ0Ci0tLSBhL3dpbjMyL25ldHNubXBtaWJzL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL25ldHNubXBtaWJzL01ha2VmaWxlLmluCkBAIC0yLDYgKzIsNyBAQAogQ0ZHPQogT1VURElSPQogSU5URElSPQorU0RLPQogCiAhSUYgIiQoT1MpIiA9PSAiV2luZG93c19OVCIKIE5VTEw9CkBAIC05LDc1ICsxMCw4IEBACiBOVUxMPW51bAogIUVORElGIAogCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCiBBTEwgOiAiLi5cbGliXCQoT1VURElSKVwkKFBST0dOQU1FKS5saWIiCiAKLQotQ0xFQU4gOgotCS1AZXJhc2UgIiQoSU5URElSKVxhZ2VudHhfY29uZmlnLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY2xpZW50Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXJyb3JtaWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxleGFtcGxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXhlY3V0ZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGlxdWVyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGV4dGVuc2libGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxmaWxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaGVhZGVyX2NvbXBsZXgub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxsb2FkYXZlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbWFzdGVyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbWFzdGVyX2FkbWluLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbWliX21vZHVsZXMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlRXZlbnRUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZU9iamVjdHNUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJCb29sZWFuVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyRGVsdGFUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGV4dGVuZC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zQ2FjaGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc0RlYnVnLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNMb2dnaW5nLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNNb2R1bGVUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zVHJhbnNhY3Rpb25UYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG92ZXJyaWRlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccGFzcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHBhc3NfcGVyc2lzdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHByb2Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwcm90b2NvbC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHByb3h5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc2V0U2VyaWFsTm8ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbXV4Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9taWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wRW5naW5lLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE1QRFN0YXRzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2Uub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5VGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wVGFyZ2V0QWRkckVudHJ5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFRhcmdldFBhcmFtc0VudHJ5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3ViYWdlbnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzeXNPUlRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3lzdGVtX21pYi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHRhcmdldC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHRhcmdldF9jb3VudGVycy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVjZERlbW9QdWJsaWMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1c21Db25mLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdXNtU3RhdHMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1c21Vc2VyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdXRpbF9mdW5jcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhY21fY29udGV4dC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhY21fY29uZi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhY21fdmFycy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgotCS1AZXJhc2UgIiQoSU5URElSKVx2ZXJzaW9uaW5mby5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKLQktQGVyYXNlICIuLlxsaWJcJChPVVRESVIpXCQoUFJPR05BTUUpLmxpYiIKLQogIi4uXGxpYlwkKE9VVERJUikiIDoKICAgICBpZiBub3QgZXhpc3QgIi4uXGxpYlwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGxpYlwkKE9VVERJUikiCiAKQEAgLTg1LDcgKzE5LDExIEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GcCIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKKyFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCitDUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0VIc2MgL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCishRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCitDUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvRUhzYyAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKKyFFTkRJRgogCiAuY3skKElOVERJUil9Lm9iajo6CiAgICAkKENQUCkgQDw8CkBAIC0xMTgsMTAgKzU2LDYgQEAKIDw8CiAKIFJTQz1yYy5leGUKLUJTQzMyPWJzY21ha2UuZXhlCi1CU0MzMl9GTEFHUz0vbm9sb2dvIC9vIiQoSU5URElSKVwkKFBST0dOQU1FKS5ic2MiIAotQlNDMzJfU0JSUz0gXAotCiBMSUIzMj1saW5rLmV4ZSAtbGliCiBMSUIzMl9GTEFHUz0vbm9sb2dvIC9vdXQ6Ii4uXGxpYlwkKE9VVERJUilcJChQUk9HTkFNRSkubGliIiAKIExJQjMyX09CSlM9IFwKQEAgLTEyOSw2ICs2Myw3IEBACiAJIiQoSU5URElSKVxzbm1wX21pYi5vYmoiIFwKIAkiJChJTlRESVIpXHN5c09SVGFibGUub2JqIiBcCiAJIiQoSU5URElSKVxzeXN0ZW1fbWliLm9iaiIgXAorCSIkKElOVERJUilcdXBkYXRlcy5vYmoiIFwKIAkiJChJTlRESVIpXHZhY21fY29udGV4dC5vYmoiIFwKIAkiJChJTlRESVIpXHZhY21fY29uZi5vYmoiIFwKIAkiJChJTlRESVIpXHZhY21fdmFycy5vYmoiIFwKQEAgLTE4MCwyMDEgKzExNSwzOSBAQAogCSIkKElOVERJUilcbnNUcmFuc2FjdGlvblRhYmxlLm9iaiIgXAogCSIkKElOVERJUilcZXhlY3V0ZS5vYmoiIFwKIAkiJChJTlRESVIpXGlxdWVyeS5vYmoiIFwKKwkiJChJTlRESVIpXG92ZXJyaWRlLm9iaiIgXAorCSIkKElOVERJUilcaGVhZGVyX2dlbmVyaWMub2JqIiBcCisJIiQoSU5URElSKVxoZWFkZXJfc2ltcGxlX3RhYmxlLm9iaiIgXAogCSIkKElOVERJUilcaGVhZGVyX2NvbXBsZXgub2JqIiBcCiAJIiQoSU5URElSKVxtaWJfbW9kdWxlcy5vYmoiIFwKLQkiJChJTlRESVIpXG92ZXJyaWRlLm9iaiIgXAogCSIkKElOVERJUilcdXRpbF9mdW5jcy5vYmoiIFwKIAkiJChJTlRESVIpXHNtdXgub2JqIgotCi0iLi5cbGliXCQoT1VURElSKVwkKFBST0dOQU1FKS5saWIiIDogIi4uXGxpYlwkKE9VVERJUikiICQoREVGX0ZJTEUpICQoTElCMzJfT0JKUykKLSAgICAkKExJQjMyKSBAPDwKLSAgJChMSUIzMl9GTEFHUykgJChERUZfRkxBR1MpICQoTElCMzJfT0JKUykKLTw8Ci0KLSFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKLQotQUxMIDogIi4uXGxpYlwkKE9VVERJUilcJChQUk9HTkFNRSkubGliIgotCishSUYgIiQoU0RLKSIgPT0gInRydWUiCitMSUIzMl9PQkpTPSAkKExJQjMyX09CSlMpIFwKKwkiJChJTlRESVIpXGF0Lm9iaiIgXAorCSIkKElOVERJUilcaWNtcC5vYmoiIFwKKwkiJChJTlRESVIpXGludGVyZmFjZXMub2JqIiBcCisJIiQoSU5URElSKVxpcC5vYmoiIFwKKwkiJChJTlRESVIpXGlwQWRkci5vYmoiIFwKKwkiJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cub2JqIiBcCisJIiQoSU5URElSKVxyb3V0ZV93cml0ZS5vYmoiIFwKKwkiJChJTlRESVIpXHRjcC5vYmoiIFwKKwkiJChJTlRESVIpXHRjcFRhYmxlLm9iaiIgXAorCSIkKElOVERJUilcdWRwLm9iaiIgXAorCSIkKElOVERJUilcdWRwVGFibGUub2JqIiBcCisJIiQoSU5URElSKVx2YXJfcm91dGUub2JqIiBcCisJIiQoSU5URElSKVx3aW5FeHRETEwub2JqIgorIUVORElGCiAKIENMRUFOIDoKLQktQGVyYXNlICIkKElOVERJUilcYWdlbnR4X2NvbmZpZy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNsaWVudC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGVycm9ybWliLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXhhbXBsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGV4ZWN1dGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxpcXVlcnkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxleHRlbnNpYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZmlsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGhlYWRlcl9jb21wbGV4Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbG9hZGF2ZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1hc3Rlci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1hc3Rlcl9hZG1pbi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1pYl9tb2R1bGVzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZUV2ZW50VGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVPYmplY3RzVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyQm9vbGVhblRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlVHJpZ2dlckRlbHRhVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxleHRlbmQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc0NhY2hlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNEZWJ1Zy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zTG9nZ2luZy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zTW9kdWxlVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc1RyYW5zYWN0aW9uVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxvdmVycmlkZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHBhc3Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwYXNzX3BlcnNpc3Qub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwcm9jLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccHJvdG9jb2wub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwcm94eS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNldFNlcmlhbE5vLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc211eC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfbWliLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcEVuZ2luZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBNUERTdGF0cy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeVRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFRhcmdldEFkZHJFbnRyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBUYXJnZXRQYXJhbXNFbnRyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN1YmFnZW50Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3lzT1JUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN5c3RlbV9taWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0YXJnZXQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0YXJnZXRfY291bnRlcnMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1Y2REZW1vUHVibGljLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdXNtQ29uZi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVzbVN0YXRzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdXNtVXNlci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHV0aWxfZnVuY3Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2YWNtX2NvbnRleHQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2YWNtX2NvbmYub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2YWNtX3ZhcnMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5wZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZlcnNpb25pbmZvLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIgorCS1AZm9yICVmIGluICgkKExJQjMyX09CSlMpKSBkbyBlcmFzZSAlJWYKIAktQGVyYXNlICIuLlxsaWJcJChPVVRESVIpXCQoUFJPR05BTUUpLmxpYiIKIAotIi4uXGxpYlwkKE9VVERJUikiIDoKLSAgICBpZiBub3QgZXhpc3QgIi4uXGxpYlwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGxpYlwkKE9VVERJUikiCi0KLSIkKElOVERJUikiIDoKLSAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgotCi1DUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRnAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCi0KLS5jeyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3skKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jcHB7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3h4eyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotUlNDPXJjLmV4ZQotQlNDMzI9YnNjbWFrZS5leGUKLUJTQzMyX0ZMQUdTPS9ub2xvZ28gL28iJChJTlRESVIpXCQoUFJPR05BTUUpLmJzYyIgCi1CU0MzMl9TQlJTPSBcCi0KLUxJQjMyPWxpbmsuZXhlIC1saWIKLUxJQjMyX0ZMQUdTPS9ub2xvZ28gL291dDoiLi5cbGliXCQoT1VURElSKVwkKFBST0dOQU1FKS5saWIiIAotTElCMzJfT0JKUz0gXAotCSIkKElOVERJUilcc2V0U2VyaWFsTm8ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX21pYi5vYmoiIFwKLQkiJChJTlRESVIpXHN5c09SVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxzeXN0ZW1fbWliLm9iaiIgXAotCSIkKElOVERJUilcdmFjbV9jb250ZXh0Lm9iaiIgXAotCSIkKElOVERJUilcdmFjbV9jb25mLm9iaiIgXAotCSIkKElOVERJUilcdmFjbV92YXJzLm9iaiIgXAotCSIkKElOVERJUilcbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZUV2ZW50VGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVPYmplY3RzVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyQm9vbGVhblRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbXRlVHJpZ2dlckRlbHRhVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxleGFtcGxlLm9iaiIgXAotCSIkKElOVERJUilcdWNkRGVtb1B1YmxpYy5vYmoiIFwKLQkiJChJTlRESVIpXGVycm9ybWliLm9iaiIgXAotCSIkKElOVERJUilcZXh0ZW5zaWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXGZpbGUub2JqIiBcCi0JIiQoSU5URElSKVxsb2FkYXZlLm9iaiIgXAotCSIkKElOVERJUilccGFzcy5vYmoiIFwKLQkiJChJTlRESVIpXHBhc3NfcGVyc2lzdC5vYmoiIFwKLQkiJChJTlRESVIpXHByb2Mub2JqIiBcCi0JIiQoSU5URElSKVxwcm94eS5vYmoiIFwKLQkiJChJTlRESVIpXHZlcnNpb25pbmZvLm9iaiIgXAotCSIkKElOVERJUilcc25tcEVuZ2luZS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBNUERTdGF0cy5vYmoiIFwKLQkiJChJTlRESVIpXHVzbUNvbmYub2JqIiBcCi0JIiQoSU5URElSKVx1c21TdGF0cy5vYmoiIFwKLQkiJChJTlRESVIpXHVzbVVzZXIub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLm9iaiIgXAotCSIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBOb3RpZnlUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBUYXJnZXRBZGRyRW50cnkub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wVGFyZ2V0UGFyYW1zRW50cnkub2JqIiBcCi0JIiQoSU5URElSKVx0YXJnZXQub2JqIiBcCi0JIiQoSU5URElSKVx0YXJnZXRfY291bnRlcnMub2JqIiBcCi0JIiQoSU5URElSKVxhZ2VudHhfY29uZmlnLm9iaiIgXAotCSIkKElOVERJUilcY2xpZW50Lm9iaiIgXAotCSIkKElOVERJUilcbWFzdGVyLm9iaiIgXAotCSIkKElOVERJUilcbWFzdGVyX2FkbWluLm9iaiIgXAotCSIkKElOVERJUilccHJvdG9jb2wub2JqIiBcCi0JIiQoSU5URElSKVxzdWJhZ2VudC5vYmoiIFwKLQkiJChJTlRESVIpXGV4dGVuZC5vYmoiIFwKLQkiJChJTlRESVIpXG5zQ2FjaGUub2JqIiBcCi0JIiQoSU5URElSKVxuc0RlYnVnLm9iaiIgXAotCSIkKElOVERJUilcbnNMb2dnaW5nLm9iaiIgXAotCSIkKElOVERJUilcbnNNb2R1bGVUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG5zVHJhbnNhY3Rpb25UYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXGV4ZWN1dGUub2JqIiBcCi0JIiQoSU5URElSKVxpcXVlcnkub2JqIiBcCi0JIiQoSU5URElSKVxoZWFkZXJfY29tcGxleC5vYmoiIFwKLQkiJChJTlRESVIpXG1pYl9tb2R1bGVzLm9iaiIgXAotCSIkKElOVERJUilcb3ZlcnJpZGUub2JqIiBcCi0JIiQoSU5URElSKVx1dGlsX2Z1bmNzLm9iaiIgXAotCSIkKElOVERJUilcc211eC5vYmoiCi0KICIuLlxsaWJcJChPVVRESVIpXCQoUFJPR05BTUUpLmxpYiIgOiAiLi5cbGliXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSUIzMl9PQkpTKQogICAgICQoTElCMzIpIEA8PAogICAkKExJQjMyX0ZMQUdTKSAkKERFRl9GTEFHUykgJChMSUIzMl9PQkpTKQogPDwKIAotIUVORElGIAotCiAKICFJRiAiJChOT19FWFRFUk5BTF9ERVBTKSIgIT0gIjEiCiAhSUYgRVhJU1RTKCIkKFBST0dOQU1FKS5kZXAiKQpAQCAtNDEwLDYgKzE4MywxMiBAQAogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdXBkYXRlcy5jCisKKyIkKElOVERJUilcdXBkYXRlcy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKIFNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx2YWNtX2NvbnRleHQuYwogCiAiJChJTlRESVIpXHZhY21fY29udGV4dC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCkBAIC01ODQsNiArMzYzLDEyIEBACiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKK1NPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcbm90aWZpY2F0aW9uLWxvZy1taWJcbm90aWZpY2F0aW9uX2xvZy5jIgorCisiJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCiBTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcC1ub3RpZmljYXRpb24tbWliXHNubXBOb3RpZnlGaWx0ZXJUYWJsZVxzbm1wTm90aWZ5RmlsdGVyVGFibGUuYwogCiAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCkBAIC03MTUsNiArNTAwLDI1IEBACiAiJChJTlRESVIpXGlxdWVyeS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1dGlsaXRpZXNcb3ZlcnJpZGUuYworCisiJChJTlRESVIpXG92ZXJyaWRlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHV0aWxfZnVuY3NcaGVhZGVyX2dlbmVyaWMuYworCisiJChJTlRESVIpXGhlYWRlcl9nZW5lcmljLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHV0aWxfZnVuY3NcaGVhZGVyX3NpbXBsZV90YWJsZS5jCisKKyIkKElOVERJUilcaGVhZGVyX3NpbXBsZV90YWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKIFNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxoZWFkZXJfY29tcGxleC5jCiAKICIkKElOVERJUilcaGVhZGVyX2NvbXBsZXgub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgpAQCAtNzQ1LDYgKzU0OSwxMTUgQEAKIAkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKIAorU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXGRsbW9kLmMKKyIkKElOVERJUilcZGxtb2Qub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBcZXJyb3JtaWIuYworIiQoSU5URElSKVxlcnJvcm1pYi5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxleHRlbnNpYmxlLmMKKyIkKElOVERJUilcZXh0ZW5zaWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxmaWxlLmMKKyIkKElOVERJUilcZmlsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxsb2FkYXZlLmMKKyIkKElOVERJUilcbG9hZGF2ZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxwYXNzLmMKKyIkKElOVERJUilccGFzcy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxwYXNzX3BlcnNpc3QuYworIiQoSU5URElSKVxwYXNzX3BlcnNpc3Qub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBccHJvYy5jCisiJChJTlRESVIpXHByb2Mub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBccHJveHkuYworIiQoSU5URElSKVxwcm94eS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFx2ZXJzaW9uaW5mby5jCisiJChJTlRESVIpXHZlcnNpb25pbmZvLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHdpbkV4dERMTC5jCisiJChJTlRESVIpXHdpbkV4dERMTC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxhdC5jCisiJChJTlRESVIpXGF0Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGljbXAuYworIiQoSU5URElSKVxpY21wLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGludGVyZmFjZXMuYworIiQoSU5URElSKVxpbnRlcmZhY2VzLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGlwLmMKKyIkKElOVERJUilcaXAub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaXBBZGRyLmMKKyIkKElOVERJUilcaXBBZGRyLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHJvdXRlX3dyaXRlLmMKKyIkKElOVERJUilccm91dGVfd3JpdGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdGNwLmMKKyIkKElOVERJUilcdGNwLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHRjcFRhYmxlLmMKKyIkKElOVERJUilcdGNwVGFibGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdWRwLmMKKyIkKElOVERJUilcdWRwLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHVkcFRhYmxlLmMKKyIkKElOVERJUilcdWRwVGFibGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdmFyX3JvdXRlLmMKKyIkKElOVERJUilcdmFyX3JvdXRlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKIAogIUVORElGIAogCmRpZmYgLS1naXQgYS93aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy5kc3AgYi93aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy5kc3AKaW5kZXggM2FkODc5ZC4uNDVkNTc0NCAxMDA2NDQKLS0tIGEvd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMuZHNwCisrKyBiL3dpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLmRzcApAQCAtODUsNiArODUsMzAgQEAKICMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIg0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcYXQuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxpY21wLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaW50ZXJmYWNlcy5jDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGlwLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaXBBZGRyLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlccm91dGVfd3JpdGUuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KIFNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxzZXRTZXJpYWxOby5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpAQCAtMTAxLDcgKzEyNSwyMyBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHZhY21fY29udGV4dC5jDQorU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHRjcC5jDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHRjcFRhYmxlLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdWRwLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdWRwVGFibGUuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx1cGRhdGVzLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCkBAIC0xMDksOCArMTQ5LDE2IEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdmFjbV9jb250ZXh0LmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCiBTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdmFjbV92YXJzLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdmFyX3JvdXRlLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KICMgRW5kIEdyb3VwDQogIyBCZWdpbiBHcm91cCAiZGlzbWFuIg0KIA0KQEAgLTI0MSw2ICsyODksMTAgQEAKICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxub3RpZmljYXRpb24tbG9nLW1pYlxub3RpZmljYXRpb25fbG9nLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCiBTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcC1ub3RpZmljYXRpb24tbWliXHNubXBOb3RpZnlGaWx0ZXJUYWJsZVxzbm1wTm90aWZ5RmlsdGVyVGFibGUuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KQEAgLTM0NSw2ICszOTcsMTQgQEAKICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1dGlsX2Z1bmNzXGhlYWRlcl9nZW5lcmljLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdXRpbF9mdW5jc1xoZWFkZXJfc2ltcGxlX3RhYmxlLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCiBTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcaGVhZGVyX2NvbXBsZXguYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KQEAgLTM2MCw5ICs0MjAsMjUgQEAKIFNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1dGlsX2Z1bmNzLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgRW5kIEdyb3VwDQorIyBCZWdpbiBHcm91cCAid2luRXh0RExMIg0KKw0KKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIg0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcd2luRXh0RExMLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcd2luRXh0RExMLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgRW5kIEdyb3VwDQorIyBCZWdpbiBHcm91cCAic211eCINCisNCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQogU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHNtdXhcc211eC5jDQogIyBFbmQgU291cmNlIEZpbGUNCisjIEVuZCBHcm91cA0KICMgRW5kIFRhcmdldA0KICMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS93aW4zMi9uZXRzbm1wbWlic3Nkay9NYWtlZmlsZS5pbiBiL3dpbjMyL25ldHNubXBtaWJzc2RrL01ha2VmaWxlLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2QxOTA0Li4wMDAwMDAwCi0tLSBhL3dpbjMyL25ldHNubXBtaWJzc2RrL01ha2VmaWxlLmluCisrKyAvZGV2L251bGwKQEAgLTEsODg1ICswLDAgQEAKLVBST0dOQU1FPQotQ0ZHPQotT1VURElSPQotSU5URElSPQotCi0hSUYgIiQoT1MpIiA9PSAiV2luZG93c19OVCIKLU5VTEw9Ci0hRUxTRSAKLU5VTEw9bnVsCi0hRU5ESUYgCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KLUFMTCA6ICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBtaWJzLmxpYiIKLQotCi1DTEVBTiA6Ci0JLUBlcmFzZSAiJChJTlRESVIpXGFnZW50eF9jb25maWcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxhdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNsaWVudC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGRsbW9kLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXJyb3JtaWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxleGFtcGxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXhlY3V0ZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGlxdWVyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGV4dGVuc2libGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxmaWxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaGVhZGVyX2NvbXBsZXgub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxpY21wLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaW50ZXJmYWNlcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGlwLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaXBBZGRyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbG9hZGF2ZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1hc3Rlci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1hc3Rlcl9hZG1pbi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1pYl9tb2R1bGVzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZUV2ZW50VGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVPYmplY3RzVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyQm9vbGVhblRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlVHJpZ2dlckRlbHRhVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxleHRlbmQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc0NhY2hlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNEZWJ1Zy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zTG9nZ2luZy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zTW9kdWxlVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc1RyYW5zYWN0aW9uVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxvdmVycmlkZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHBhc3Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwYXNzX3BlcnNpc3Qub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwcm9jLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccHJvdG9jb2wub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwcm94eS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHJvdXRlX3dyaXRlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc2V0U2VyaWFsTm8ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbXV4Lm9iaiIKLSMJLUBlcmFzZSAiJChJTlRESVIpXHdpbkV4dERMTC5vYmoiCSMgdW5jb21tZW50IGZvciB3aW5FeHRETEwKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9taWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wRW5naW5lLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE1QRFN0YXRzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeVRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFRhcmdldEFkZHJFbnRyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBUYXJnZXRQYXJhbXNFbnRyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN1YmFnZW50Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3lzT1JUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN5c3RlbV9taWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0YXJnZXQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0YXJnZXRfY291bnRlcnMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0Y3Aub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0Y3BUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVjZERlbW9QdWJsaWMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1ZHAub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1ZHBUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVzbUNvbmYub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1c21TdGF0cy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVzbVVzZXIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1dGlsX2Z1bmNzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFjbV9jb250ZXh0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFjbV9jb25mLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFjbV92YXJzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFyX3JvdXRlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZlcnNpb25pbmZvLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIgotCS1AZXJhc2UgIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcG1pYnMubGliIgotCi0iLi5cbGliXCQoT1VURElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiLi5cbGliXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cbGliXCQoT1VURElSKSIKLQotIiQoSU5URElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCi0KLUNQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiSEFWRV9XSU4zMl9QTEFURk9STV9TREsiIC9GcCIkKElOVERJUilcbmV0c25tcG1pYnNzZGsucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKLQotLmN7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi1SU0M9cmMuZXhlCi1CU0MzMj1ic2NtYWtlLmV4ZQotQlNDMzJfRkxBR1M9L25vbG9nbyAvbyIkKElOVERJUilcbmV0c25tcG1pYnNzZGsuYnNjIiAKLUJTQzMyX1NCUlM9IFwKLQotTElCMzI9bGluay5leGUgLWxpYgotTElCMzJfRkxBR1M9aXBobHBhcGkubGliIC9ub2xvZ28gL291dDoiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wbWlicy5saWIiIAotTElCMzJfT0JKUz0gXAotCSIkKElOVERJUilcc2V0U2VyaWFsTm8ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX21pYi5vYmoiIFwKLQkiJChJTlRESVIpXHN5c09SVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxzeXN0ZW1fbWliLm9iaiIgXAotCSIkKElOVERJUilcdmFjbV9jb250ZXh0Lm9iaiIgXAotCSIkKElOVERJUilcdmFjbV9jb25mLm9iaiIgXAotCSIkKElOVERJUilcdmFjbV92YXJzLm9iaiIgXAotCSIkKElOVERJUilcbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZUV2ZW50VGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVPYmplY3RzVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyQm9vbGVhblRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbXRlVHJpZ2dlckRlbHRhVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxleGFtcGxlLm9iaiIgXAotCSIkKElOVERJUilcdWNkRGVtb1B1YmxpYy5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBFbmdpbmUub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTVBEU3RhdHMub2JqIiBcCi0JIiQoSU5URElSKVx1c21Db25mLm9iaiIgXAotCSIkKElOVERJUilcdXNtU3RhdHMub2JqIiBcCi0JIiQoSU5URElSKVx1c21Vc2VyLm9iaiIgXAotCSIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3Mub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLm9iaiIgXAotCSIkKElOVERJUilcc25tcE5vdGlmeVRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcc25tcFRhcmdldEFkZHJFbnRyeS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBUYXJnZXRQYXJhbXNFbnRyeS5vYmoiIFwKLQkiJChJTlRESVIpXHRhcmdldC5vYmoiIFwKLQkiJChJTlRESVIpXHRhcmdldF9jb3VudGVycy5vYmoiIFwKLQkiJChJTlRESVIpXGFnZW50eF9jb25maWcub2JqIiBcCi0JIiQoSU5URElSKVxjbGllbnQub2JqIiBcCi0JIiQoSU5URElSKVxtYXN0ZXIub2JqIiBcCi0JIiQoSU5URElSKVxtYXN0ZXJfYWRtaW4ub2JqIiBcCi0JIiQoSU5URElSKVxwcm90b2NvbC5vYmoiIFwKLQkiJChJTlRESVIpXHN1YmFnZW50Lm9iaiIgXAotCSIkKElOVERJUilcZXh0ZW5kLm9iaiIgXAotCSIkKElOVERJUilcbnNDYWNoZS5vYmoiIFwKLQkiJChJTlRESVIpXG5zRGVidWcub2JqIiBcCi0JIiQoSU5URElSKVxuc0xvZ2dpbmcub2JqIiBcCi0JIiQoSU5URElSKVxuc01vZHVsZVRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbnNUcmFuc2FjdGlvblRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcZXhlY3V0ZS5vYmoiIFwKLQkiJChJTlRESVIpXGlxdWVyeS5vYmoiIFwKLQkiJChJTlRESVIpXG92ZXJyaWRlLm9iaiIgXAotCSIkKElOVERJUilcYXQub2JqIiBcCi0JIiQoSU5URElSKVxpY21wLm9iaiIgXAotCSIkKElOVERJUilcaW50ZXJmYWNlcy5vYmoiIFwKLQkiJChJTlRESVIpXGlwLm9iaiIgXAotCSIkKElOVERJUilcaXBBZGRyLm9iaiIgXAotCSIkKElOVERJUilccm91dGVfd3JpdGUub2JqIiBcCi0JIiQoSU5URElSKVx0Y3Aub2JqIiBcCi0JIiQoSU5URElSKVx0Y3BUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXHVkcC5vYmoiIFwKLQkiJChJTlRESVIpXHVkcFRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcdmFyX3JvdXRlLm9iaiIgXAotCSIkKElOVERJUilcZGxtb2Qub2JqIiBcCi0JIiQoSU5URElSKVxlcnJvcm1pYi5vYmoiIFwKLQkiJChJTlRESVIpXGV4dGVuc2libGUub2JqIiBcCi0JIiQoSU5URElSKVxmaWxlLm9iaiIgXAotCSIkKElOVERJUilcbG9hZGF2ZS5vYmoiIFwKLQkiJChJTlRESVIpXHBhc3Mub2JqIiBcCi0JIiQoSU5URElSKVxwYXNzX3BlcnNpc3Qub2JqIiBcCi0JIiQoSU5URElSKVxwcm9jLm9iaiIgXAotCSIkKElOVERJUilccHJveHkub2JqIiBcCi0JIiQoSU5URElSKVx2ZXJzaW9uaW5mby5vYmoiIFwKLQkiJChJTlRESVIpXGhlYWRlcl9jb21wbGV4Lm9iaiIgXAotCSIkKElOVERJUilcbWliX21vZHVsZXMub2JqIiBcCi0JIiQoSU5URElSKVx1dGlsX2Z1bmNzLm9iaiIgXAotIwkiJChJTlRESVIpXHdpbkV4dERMTC5vYmoiIFwJIyB1bmNvbW1lbnQgZm9yIHdpbkV4dERMTAotCSIkKElOVERJUilcc211eC5vYmoiCi0KLSIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBtaWJzLmxpYiIgOiAiLi5cbGliXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSUIzMl9PQkpTKQotICAgICQoTElCMzIpIEA8PAotICAkKExJQjMyX0ZMQUdTKSAkKERFRl9GTEFHUykgJChMSUIzMl9PQkpTKQotPDwKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi1BTEwgOiAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wbWlicy5saWIiCi0KLQotQ0xFQU4gOgotCS1AZXJhc2UgIiQoSU5URElSKVxhZ2VudHhfY29uZmlnLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcYXQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjbGllbnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxkbG1vZC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGVycm9ybWliLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXhhbXBsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGV4ZWN1dGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxpcXVlcnkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxleHRlbnNpYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZmlsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGhlYWRlcl9jb21wbGV4Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaWNtcC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGludGVyZmFjZXMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxpcC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGlwQWRkci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGxvYWRhdmUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtYXN0ZXIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtYXN0ZXJfYWRtaW4ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtaWJfbW9kdWxlcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVFdmVudFRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlT2JqZWN0c1RhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJEZWx0YVRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlVHJpZ2dlclRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXh0ZW5kLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNDYWNoZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zRGVidWcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc0xvZ2dpbmcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc01vZHVsZVRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNUcmFuc2FjdGlvblRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcb3ZlcnJpZGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwYXNzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccGFzc19wZXJzaXN0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccHJvYy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHByb3RvY29sLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccHJveHkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxyb3V0ZV93cml0ZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNldFNlcmlhbE5vLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc211eC5vYmoiCi0jCS1AZXJhc2UgIiQoSU5URElSKVx3aW5FeHRETEwub2JqIgkjIHVuY29tbWVudCBmb3Igd2luRXh0RExMCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfbWliLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcEVuZ2luZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBNUERTdGF0cy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxub3RpZmljYXRpb25fbG9nLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBUYXJnZXRBZGRyRW50cnkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wVGFyZ2V0UGFyYW1zRW50cnkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzdWJhZ2VudC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN5c09SVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzeXN0ZW1fbWliLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdGFyZ2V0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdGFyZ2V0X2NvdW50ZXJzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdGNwLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdGNwVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1Y2REZW1vUHVibGljLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdWRwLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdWRwVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1c21Db25mLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdXNtU3RhdHMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1c21Vc2VyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdXRpbF9mdW5jcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhY21fY29udGV4dC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhY21fY29uZi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhY21fdmFycy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhcl9yb3V0ZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgotCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LnBkYiIKLQktQGVyYXNlICIkKElOVERJUilcdmVyc2lvbmluZm8ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCi0JLUBlcmFzZSAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wbWlicy5saWIiCi0KLSIuLlxsaWJcJChPVVRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIuLlxsaWJcJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxsaWJcJChPVVRESVIpIgotCi0iJChJTlRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKLQotQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIkhBVkVfV0lOMzJfUExBVEZPUk1fU0RLIiAvRnAiJChJTlRESVIpXG5ldHNubXBtaWJzc2RrLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCi0KLS5jeyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3skKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jcHB7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3h4eyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotUlNDPXJjLmV4ZQotQlNDMzI9YnNjbWFrZS5leGUKLUJTQzMyX0ZMQUdTPS9ub2xvZ28gL28iJChJTlRESVIpXG5ldHNubXBtaWJzc2RrLmJzYyIgCi1CU0MzMl9TQlJTPSBcCi0KLUxJQjMyPWxpbmsuZXhlIC1saWIKLUxJQjMyX0ZMQUdTPWlwaGxwYXBpLmxpYiAvbm9sb2dvIC9vdXQ6Ii4uXGxpYlwkKE9VVERJUilcbmV0c25tcG1pYnMubGliIiAKLUxJQjMyX09CSlM9IFwKLQkiJChJTlRESVIpXHNldFNlcmlhbE5vLm9iaiIgXAotCSIkKElOVERJUilcc25tcF9taWIub2JqIiBcCi0JIiQoSU5URElSKVxzeXNPUlRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcc3lzdGVtX21pYi5vYmoiIFwKLQkiJChJTlRESVIpXHZhY21fY29udGV4dC5vYmoiIFwKLQkiJChJTlRESVIpXHZhY21fY29uZi5vYmoiIFwKLQkiJChJTlRESVIpXHZhY21fdmFycy5vYmoiIFwKLQkiJChJTlRESVIpXG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVFdmVudFRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbXRlT2JqZWN0c1RhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZVRyaWdnZXJEZWx0YVRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbXRlVHJpZ2dlclRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcZXhhbXBsZS5vYmoiIFwKLQkiJChJTlRESVIpXHVjZERlbW9QdWJsaWMub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wRW5naW5lLm9iaiIgXAotCSIkKElOVERJUilcc25tcE1QRFN0YXRzLm9iaiIgXAotCSIkKElOVERJUilcdXNtQ29uZi5vYmoiIFwKLQkiJChJTlRESVIpXHVzbVN0YXRzLm9iaiIgXAotCSIkKElOVERJUilcdXNtVXNlci5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxub3RpZmljYXRpb25fbG9nLm9iaiIgXAotCSIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLm9iaiIgXAotCSIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBOb3RpZnlUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBUYXJnZXRBZGRyRW50cnkub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wVGFyZ2V0UGFyYW1zRW50cnkub2JqIiBcCi0JIiQoSU5URElSKVx0YXJnZXQub2JqIiBcCi0JIiQoSU5URElSKVx0YXJnZXRfY291bnRlcnMub2JqIiBcCi0JIiQoSU5URElSKVxhZ2VudHhfY29uZmlnLm9iaiIgXAotCSIkKElOVERJUilcY2xpZW50Lm9iaiIgXAotCSIkKElOVERJUilcbWFzdGVyLm9iaiIgXAotCSIkKElOVERJUilcbWFzdGVyX2FkbWluLm9iaiIgXAotCSIkKElOVERJUilccHJvdG9jb2wub2JqIiBcCi0JIiQoSU5URElSKVxzdWJhZ2VudC5vYmoiIFwKLQkiJChJTlRESVIpXGV4dGVuZC5vYmoiIFwKLQkiJChJTlRESVIpXG5zQ2FjaGUub2JqIiBcCi0JIiQoSU5URElSKVxuc0RlYnVnLm9iaiIgXAotCSIkKElOVERJUilcbnNMb2dnaW5nLm9iaiIgXAotCSIkKElOVERJUilcbnNNb2R1bGVUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG5zVHJhbnNhY3Rpb25UYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXGV4ZWN1dGUub2JqIiBcCi0JIiQoSU5URElSKVxpcXVlcnkub2JqIiBcCi0JIiQoSU5URElSKVxvdmVycmlkZS5vYmoiIFwKLQkiJChJTlRESVIpXGF0Lm9iaiIgXAotCSIkKElOVERJUilcaWNtcC5vYmoiIFwKLQkiJChJTlRESVIpXGludGVyZmFjZXMub2JqIiBcCi0JIiQoSU5URElSKVxpcC5vYmoiIFwKLQkiJChJTlRESVIpXGlwQWRkci5vYmoiIFwKLQkiJChJTlRESVIpXHJvdXRlX3dyaXRlLm9iaiIgXAotCSIkKElOVERJUilcdGNwLm9iaiIgXAotCSIkKElOVERJUilcdGNwVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVx1ZHAub2JqIiBcCi0JIiQoSU5URElSKVx1ZHBUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXHZhcl9yb3V0ZS5vYmoiIFwKLQkiJChJTlRESVIpXGRsbW9kLm9iaiIgXAotCSIkKElOVERJUilcZXJyb3JtaWIub2JqIiBcCi0JIiQoSU5URElSKVxleHRlbnNpYmxlLm9iaiIgXAotCSIkKElOVERJUilcZmlsZS5vYmoiIFwKLQkiJChJTlRESVIpXGxvYWRhdmUub2JqIiBcCi0JIiQoSU5URElSKVxwYXNzLm9iaiIgXAotCSIkKElOVERJUilccGFzc19wZXJzaXN0Lm9iaiIgXAotCSIkKElOVERJUilccHJvYy5vYmoiIFwKLQkiJChJTlRESVIpXHByb3h5Lm9iaiIgXAotCSIkKElOVERJUilcdmVyc2lvbmluZm8ub2JqIiBcCi0JIiQoSU5URElSKVxoZWFkZXJfY29tcGxleC5vYmoiIFwKLQkiJChJTlRESVIpXG1pYl9tb2R1bGVzLm9iaiIgXAotCSIkKElOVERJUilcdXRpbF9mdW5jcy5vYmoiIFwKLQkiJChJTlRESVIpXHNtdXgub2JqIiBcCi0jCSIkKElOVERJUilcd2luRXh0RExMLm9iaiIgXAkjIHVuY29tbWVudCBmb3Igd2luRXh0RExMCi0JIiQoSU5URElSKVxzbXV4Lm9iaiIKLQotIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcG1pYnMubGliIiA6ICIuLlxsaWJcJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJQjMyX09CSlMpCi0gICAgJChMSUIzMikgQDw8Ci0gICQoTElCMzJfRkxBR1MpICQoREVGX0ZMQUdTKSAkKExJQjMyX09CSlMpCi08PAotCi0hRU5ESUYgCi0KLQotIUlGICIkKE5PX0VYVEVSTkFMX0RFUFMpIiAhPSAiMSIKLSFJRiBFWElTVFMoIm5ldHNubXBtaWJzc2RrLmRlcCIpCi0hSU5DTFVERSAibmV0c25tcG1pYnNzZGsuZGVwIgotIUVMU0UgCi0hTUVTU0FHRSBXYXJuaW5nOiBjYW5ub3QgZmluZCAibmV0c25tcG1pYnNzZGsuZGVwIgotIUVORElGIAotIUVORElGIAotCi0KLSFJRiAiJChDRkcpIiA9PSAicmVsZWFzZSIgfHwgIiQoQ0ZHKSIgPT0gImRlYnVnIgotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHNldFNlcmlhbE5vLmMKLQotIiQoSU5URElSKVxzZXRTZXJpYWxOby5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxzbm1wX21pYi5jCi0KLSIkKElOVERJUilcc25tcF9taWIub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcc3lzT1JUYWJsZS5jCi0KLSIkKElOVERJUilcc3lzT1JUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxzeXN0ZW1fbWliLmMKLQotIiQoSU5URElSKVxzeXN0ZW1fbWliLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHZhY21fY29udGV4dC5jCi0KLSIkKElOVERJUilcdmFjbV9jb250ZXh0Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHZhY21fY29uZi5jCi0KLSIkKElOVERJUilcdmFjbV9jb25mLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHZhY21fdmFycy5jCi0KLSIkKElOVERJUilcdmFjbV92YXJzLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMKLQotIiQoSU5URElSKVxtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVFdmVudFRhYmxlLmMKLQotIiQoSU5URElSKVxtdGVFdmVudFRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVPYmplY3RzVGFibGUuYwotCi0iJChJTlRESVIpXG10ZU9iamVjdHNUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxkaXNtYW5cbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jCi0KLSIkKElOVERJUilcbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxkaXNtYW5cbXRlVHJpZ2dlckRlbHRhVGFibGUuYwotCi0iJChJTlRESVIpXG10ZVRyaWdnZXJEZWx0YVRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYwotCi0iJChJTlRESVIpXG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxkaXNtYW5cbXRlVHJpZ2dlclRhYmxlLmMKLQotIiQoSU5URElSKVxtdGVUcmlnZ2VyVGFibGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZGlzbWFuXG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jCi0KLSIkKElOVERJUilcbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGV4YW1wbGVzXGV4YW1wbGUuYwotCi0iJChJTlRESVIpXGV4YW1wbGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZXhhbXBsZXNcdWNkRGVtb1B1YmxpYy5jCi0KLSIkKElOVERJUilcdWNkRGVtb1B1YmxpYy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wdjNcc25tcEVuZ2luZS5jCi0KLSIkKElOVERJUilcc25tcEVuZ2luZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wdjNcc25tcE1QRFN0YXRzLmMKLQotIiQoSU5URElSKVxzbm1wTVBEU3RhdHMub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcHYzXHVzbUNvbmYuYwotCi0iJChJTlRESVIpXHVzbUNvbmYub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcHYzXHVzbVN0YXRzLmMKLQotIiQoSU5URElSKVx1c21TdGF0cy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wdjNcdXNtVXNlci5jCi0KLSIkKElOVERJUilcdXNtVXNlci5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxub3RpZmljYXRpb25cc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jCi0KLSIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxub3RpZmljYXRpb24tbG9nLW1pYlxub3RpZmljYXRpb25fbG9nLmMKLQotIiQoSU5URElSKVxub3RpZmljYXRpb25fbG9nLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHNubXAtbm90aWZpY2F0aW9uLW1pYlxzbm1wTm90aWZ5RmlsdGVyVGFibGVcc25tcE5vdGlmeUZpbHRlclRhYmxlLmMKLQotIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcC1ub3RpZmljYXRpb24tbWliXHNubXBOb3RpZnlGaWx0ZXJUYWJsZVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYwotCi0iJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wLW5vdGlmaWNhdGlvbi1taWJcc25tcE5vdGlmeUZpbHRlclRhYmxlXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYwotCi0iJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2Uub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbm90aWZpY2F0aW9uXHNubXBOb3RpZnlUYWJsZS5jCi0KLSIkKElOVERJUilcc25tcE5vdGlmeVRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHRhcmdldFxzbm1wVGFyZ2V0QWRkckVudHJ5LmMKLQotIiQoSU5URElSKVxzbm1wVGFyZ2V0QWRkckVudHJ5Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHRhcmdldFxzbm1wVGFyZ2V0UGFyYW1zRW50cnkuYwotCi0iJChJTlRESVIpXHNubXBUYXJnZXRQYXJhbXNFbnRyeS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx0YXJnZXRcdGFyZ2V0LmMKLQotIiQoSU5URElSKVx0YXJnZXQub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdGFyZ2V0XHRhcmdldF9jb3VudGVycy5jCi0KLSIkKElOVERJUilcdGFyZ2V0X2NvdW50ZXJzLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50eFxhZ2VudHhfY29uZmlnLmMKLQotIiQoSU5URElSKVxhZ2VudHhfY29uZmlnLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50eFxjbGllbnQuYwotCi0iJChJTlRESVIpXGNsaWVudC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudHhcbWFzdGVyLmMKLQotIiQoSU5URElSKVxtYXN0ZXIub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnR4XG1hc3Rlcl9hZG1pbi5jCi0KLSIkKElOVERJUilcbWFzdGVyX2FkbWluLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50eFxwcm90b2NvbC5jCi0KLSIkKElOVERJUilccHJvdG9jb2wub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnR4XHN1YmFnZW50LmMKLQotIiQoSU5URElSKVxzdWJhZ2VudC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudFxleHRlbmQuYwotCi0iJChJTlRESVIpXGV4dGVuZC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudFxuc0NhY2hlLmMKLQotIiQoSU5URElSKVxuc0NhY2hlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50XG5zRGVidWcuYwotCi0iJChJTlRESVIpXG5zRGVidWcub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnRcbnNMb2dnaW5nLmMKLQotIiQoSU5URElSKVxuc0xvZ2dpbmcub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnRcbnNNb2R1bGVUYWJsZS5jCi0KLSIkKElOVERJUilcbnNNb2R1bGVUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudFxuc1RyYW5zYWN0aW9uVGFibGUuYwotCi0iJChJTlRESVIpXG5zVHJhbnNhY3Rpb25UYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1dGlsaXRpZXNcZXhlY3V0ZS5jCi0KLSIkKElOVERJUilcZXhlY3V0ZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1dGlsaXRpZXNcaXF1ZXJ5LmMKLQotIiQoSU5URElSKVxpcXVlcnkub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdXRpbGl0aWVzXG92ZXJyaWRlLmMKLQotIiQoSU5URElSKVxvdmVycmlkZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxhdC5jCi0KLSIkKElOVERJUilcYXQub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaWNtcC5jCi0KLSIkKElOVERJUilcaWNtcC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxpbnRlcmZhY2VzLmMKLQotIiQoSU5URElSKVxpbnRlcmZhY2VzLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGlwLmMKLQotIiQoSU5URElSKVxpcC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxpcEFkZHIuYwotCi0iJChJTlRESVIpXGlwQWRkci5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxyb3V0ZV93cml0ZS5jCi0KLSIkKElOVERJUilccm91dGVfd3JpdGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdGNwLmMKLQotIiQoSU5URElSKVx0Y3Aub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdGNwVGFibGUuYwotCi0iJChJTlRESVIpXHRjcFRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHVkcC5jCi0KLSIkKElOVERJUilcdWRwLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHVkcFRhYmxlLmMKLQotIiQoSU5URElSKVx1ZHBUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx2YXJfcm91dGUuYwotCi0iJChJTlRESVIpXHZhcl9yb3V0ZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBcZGxtb2QuYyIKLQotIiQoSU5URElSKVxkbG1vZC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBcZXJyb3JtaWIuYyIKLQotIiQoSU5URElSKVxlcnJvcm1pYi5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBcZXh0ZW5zaWJsZS5jIgotCi0iJChJTlRESVIpXGV4dGVuc2libGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXGZpbGUuYyIKLQotIiQoSU5URElSKVxmaWxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxsb2FkYXZlLmMiCi0KLSIkKElOVERJUilcbG9hZGF2ZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBccGFzcy5jIgotCi0iJChJTlRESVIpXHBhc3Mub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXHBhc3NfcGVyc2lzdC5jIgotCi0iJChJTlRESVIpXHBhc3NfcGVyc2lzdC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBccHJvYy5jIgotCi0iJChJTlRESVIpXHByb2Mub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXHByb3h5LmMiCi0KLSIkKElOVERJUilccHJveHkub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXHZlcnNpb25pbmZvLmMiCi0KLSIkKElOVERJUilcdmVyc2lvbmluZm8ub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcaGVhZGVyX2NvbXBsZXguYwotCi0iJChJTlRESVIpXGhlYWRlcl9jb21wbGV4Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYl9tb2R1bGVzLmMKLQotIiQoSU5URElSKVxtaWJfbW9kdWxlcy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbXV4XHNtdXguYwotCi0iJChJTlRESVIpXHNtdXgub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi0jU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHdpbkV4dERMTC5jCQkjIHVuY29tbWVudCBmb3Igd2luRXh0RExMCi0KLSMiJChJTlRESVIpXHdpbkV4dERMTC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCSMgdW5jb21tZW50IGZvciB3aW5FeHRETEwKLSMJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQkJCSMgdW5jb21tZW50IGZvciB3aW5FeHRETEwKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdXRpbF9mdW5jcy5jCi0KLSIkKElOVERJUilcdXRpbF9mdW5jcy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLSFFTkRJRiAKLQotCmRpZmYgLS1naXQgYS93aW4zMi9uZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3AgYi93aW4zMi9uZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxZDVjY2MuLjAwMDAwMDAKLS0tIGEvd2luMzIvbmV0c25tcG1pYnNzZGsvbmV0c25tcG1pYnNzZGsuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsNDIwICswLDAgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0ibmV0c25tcG1pYnNzZGsiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IiAweDAxMDQNCi0NCi1DRkc9bmV0c25tcG1pYnNzZGsgLSBXaW4zMiBEZWJ1Zw0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAibmV0c25tcG1pYnNzZGsubWFrIi4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIm5ldHNubXBtaWJzc2RrLm1hayIgQ0ZHPSJuZXRzbm1wbWlic3NkayAtIFdpbjMyIERlYnVnIg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFICJuZXRzbm1wbWlic3NkayAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgU3RhdGljIExpYnJhcnkiKQ0KLSFNRVNTQUdFICJuZXRzbm1wbWlic3NkayAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgIiINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KLUNQUD1jbC5leGUNCi1SU0M9cmMuZXhlDQotDQotIUlGICAiJChDRkcpIiA9PSAibmV0c25tcG1pYnNzZGsgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiLi4vbGliL3JlbGVhc2UiDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0QgIkhBVkVfV0lOMzJfUExBVEZPUk1fU0RLIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkNCi0jIEFERCBSU0MgL2wgMHg0MDkNCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSUIzMj1saW5rLmV4ZSAtbGliDQotIyBBREQgQkFTRSBMSUIzMiAvbm9sb2dvDQotIyBBREQgTElCMzIgaXBobHBhcGkubGliIG1nbXRhcGkubGliIHNubXBhcGkubGliIC9ub2xvZ28gL291dDoiLi4vbGliL3JlbGVhc2UvbmV0c25tcG1pYnMubGliIg0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJuZXRzbm1wbWlic3NkayAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICIuLi9saWIvZGVidWciDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWmkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0QgIkhBVkVfV0lOMzJfUExBVEZPUk1fU0RLIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkNCi0jIEFERCBSU0MgL2wgMHg0MDkNCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSUIzMj1saW5rLmV4ZSAtbGliDQotIyBBREQgQkFTRSBMSUIzMiAvbm9sb2dvDQotIyBBREQgTElCMzIgaXBobHBhcGkubGliIG1nbXRhcGkubGliIHNubXBhcGkubGliIC9ub2xvZ28gL291dDoiLi4vbGliL2RlYnVnL25ldHNubXBtaWJzLmxpYiINCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgIm5ldHNubXBtaWJzc2RrIC0gV2luMzIgUmVsZWFzZSINCi0jIE5hbWUgIm5ldHNubXBtaWJzc2RrIC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBHcm91cCAibWliSUkiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxzZXRTZXJpYWxOby5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHNubXBfbWliLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcc3lzT1JUYWJsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHN5c3RlbV9taWIuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx2YWNtX2NvbnRleHQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx2YWNtX2NvbmYuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx2YWNtX3ZhcnMuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJkaXNtYW4iDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxkaXNtYW5cbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVFdmVudFRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZGlzbWFuXG10ZU9iamVjdHNUYWJsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZGlzbWFuXG10ZVRyaWdnZXJEZWx0YVRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZGlzbWFuXG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVUcmlnZ2VyVGFibGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxkaXNtYW5cbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiZXhhbXBsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxleGFtcGxlc1xleGFtcGxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZXhhbXBsZXNcdWNkRGVtb1B1YmxpYy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgInNubXB2MyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHNubXB2M1xzbm1wRW5naW5lLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcHYzXHNubXBNUERTdGF0cy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHNubXB2M1x1c21Db25mLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcHYzXHVzbVN0YXRzLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcHYzXHVzbVVzZXIuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJub3RpZmljYXRpb24iDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxub3RpZmljYXRpb25cc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG5vdGlmaWNhdGlvbi1sb2ctbWliXG5vdGlmaWNhdGlvbl9sb2cuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wLW5vdGlmaWNhdGlvbi1taWJcc25tcE5vdGlmeUZpbHRlclRhYmxlXHNubXBOb3RpZnlGaWx0ZXJUYWJsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHNubXAtbm90aWZpY2F0aW9uLW1pYlxzbm1wTm90aWZ5RmlsdGVyVGFibGVcc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcC1ub3RpZmljYXRpb24tbWliXHNubXBOb3RpZnlGaWx0ZXJUYWJsZVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbm90aWZpY2F0aW9uXHNubXBOb3RpZnlUYWJsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgInRhcmdldCINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHRhcmdldFxzbm1wVGFyZ2V0QWRkckVudHJ5LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdGFyZ2V0XHNubXBUYXJnZXRQYXJhbXNFbnRyeS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHRhcmdldFx0YXJnZXQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx0YXJnZXRcdGFyZ2V0X2NvdW50ZXJzLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiYWdlbnR4Ig0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnR4XGFnZW50eF9jb25maWcuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudHhcY2xpZW50LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnR4XG1hc3Rlci5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50eFxtYXN0ZXJfYWRtaW4uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudHhccHJvdG9jb2wuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudHhcc3ViYWdlbnQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJhZ2VudCINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50XGV4dGVuZC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50XG5zQ2FjaGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudFxuc0RlYnVnLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnRcbnNMb2dnaW5nLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnRcbnNNb2R1bGVUYWJsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50XG5zVHJhbnNhY3Rpb25UYWJsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgInV0aWxpdGllcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHV0aWxpdGllc1xleGVjdXRlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdXRpbGl0aWVzXGlxdWVyeS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHV0aWxpdGllc1xvdmVycmlkZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgIm1pYklJc2RrIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcYXQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxpY21wLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaW50ZXJmYWNlcy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGlwLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaXBBZGRyLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlccm91dGVfd3JpdGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx0Y3AuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx0Y3BUYWJsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHVkcC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHVkcFRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdmFyX3JvdXRlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAidWNkLXNubXAiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBcZGxtb2QuYyINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXGVycm9ybWliLmMiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxleHRlbnNpYmxlLmMiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxmaWxlLmMiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxsb2FkYXZlLmMiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxwYXNzLmMiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxwYXNzX3BlcnNpc3QuYyINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXHByb2MuYyINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXHByb3h5LmMiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFx2ZXJzaW9uaW5mby5jIg0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGhlYWRlcl9jb21wbGV4LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliX21vZHVsZXMuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1dGlsX2Z1bmNzLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc211eFxzbXV4LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcd2luRXh0RExMLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wZC9NYWtlZmlsZS5pbiBiL3dpbjMyL3NubXBkL01ha2VmaWxlLmluCmluZGV4IDQxYWM1NWUuLjllMzQ2NzQgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBkL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL3NubXBkL01ha2VmaWxlLmluCkBAIC0yLDYgKzIsNyBAQAogQ0ZHPQogT1VURElSPQogSU5URElSPQorU0RLPQogU1NMPQogTElOS1RZUEU9CiAKQEAgLTE0LDIxICsxNSw5IEBACiBOVUxMPW51bAogIUVORElGIAogCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCiBBTEwgOiAiLi5cYmluXCQoT1VURElSKVxzbm1wZC5leGUiICIkKElOVERJUikiCiAKIAotQ0xFQU4gOgotCS1AZXJhc2UgIiQoSU5URElSKVxhdXRvX25saXN0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilca2VybmVsLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcGQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKLQktQGVyYXNlICIkKElOVERJUilcd2luc2VydmljZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHdpbnNlcnZpY2UucmVzIgotCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCi0JLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVxzbm1wZC5leGUiCi0KICIuLlxiaW5cJChPVVRESVIpIiA6CiAgICAgaWYgbm90IGV4aXN0ICIuLlxiaW5cJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxiaW5cJChPVVRESVIpIgogCkBAIC0zNiw5OSArMjUsMTQgQEAKICAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgogCiBDUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZwIiQoSU5URElSKVxzbm1wZC5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAotCi0hSUYgIiQoTElOS1RZUEUpIiA9PSAiZHluYW1pYyIKLUNQUF9QUk9KPSQoQ1BQX1BST0opIC9EICJOTUFLRV9ORVRTTk1QX1VTRV9ETEwiCi0hRU5ESUYKLQotLmN7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi1SU0M9cmMuZXhlCishSUYgICIkKENGRykiID09ICJyZWxlYXNlIgorQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9FSHNjIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAogUlNDX1BST0o9L2wgMHg0MDkgL2ZvIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIgL2QgIk5ERUJVRyIgCi1CU0MzMj1ic2NtYWtlLmV4ZQotQlNDMzJfRkxBR1M9L25vbG9nbyAvbyIkKElOVERJUilcc25tcGQuYnNjIiAKLUJTQzMyX1NCUlM9IFwKLQotTElOSzMyPWxpbmsuZXhlCi1MSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgbmV0c25tcGhlbHBlcnMubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvc25tcGQucGRiIiAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vJChPVVRESVIpL3NubXBkLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIiAKLUxJTkszMl9PQkpTPSBcCi0JIiQoSU5URElSKVxhdXRvX25saXN0Lm9iaiIgXAotCSIkKElOVERJUilca2VybmVsLm9iaiIgXAotCSIkKElOVERJUilcc25tcGQub2JqIiBcCi0JIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIgXAotCSIkKElOVERJUilcd2luc2VydmljZS5yZXMiCi0KLSIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSIgOiAiLi5cYmluXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSU5LMzJfT0JKUykKLSFJRiAiJChMSU5LVFlQRSkiID09ICJzdGF0aWMiIHx8ICIkKEFMTE9XX0RMTCkiID09ICIxIgotICAgICQoTElOSzMyKSBAPDwKLSAgJChMSU5LMzJfRkxBR1MpICQoTElOSzMyX09CSlMpCi08PAotIUVMU0UJIyBMaW5rdHlwZSBjaGVjawotCS1AZWNobyAuCi0JLUBlY2hvIEFib3J0aW5nIGJ1aWxkLiAgQXBwbGljYXRpb25zIGNhbiBub3QgYmUgYnVpbHQgdXNpbmcgLS1saW5rdHlwZT1keW5hbWljCi0JLUBlY2hvIC4KKyFFTFNFCitDUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvRUhzYyAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZSIiQoSU5URElSKVxcIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorUlNDX1BST0o9L2wgMHg0MDkgL2ZvIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIgL2QgIl9ERUJVRyIgCiAhRU5ESUYKIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi1BTEwgOiAiLi5cYmluXCQoT1VURElSKVxzbm1wZC5leGUiICIkKElOVERJUilcc25tcGQuYnNjIiAiJChJTlRESVIpIgotCi0KLUNMRUFOIDoKLQktQGVyYXNlICIkKElOVERJUilcYXV0b19ubGlzdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGF1dG9fbmxpc3Quc2JyIgotCS1AZXJhc2UgIiQoSU5URElSKVxrZXJuZWwub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxrZXJuZWwuc2JyIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wZC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBkLnNiciIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8ucGRiIgotCS1AZXJhc2UgIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcd2luc2VydmljZS5yZXMiCi0JLUBlcmFzZSAiJChJTlRESVIpXHdpbnNlcnZpY2Uuc2JyIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wZC5ic2MiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBkLnBkYiIKLQktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIgotCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcc25tcGQuZXhlIgotCi0iLi5cYmluXCQoT1VURElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiLi5cYmluXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cYmluXCQoT1VURElSKSIKLQotIiQoSU5URElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCi0KLUNQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GUiIkKElOVERJUilcXCIgL0ZwIiQoSU5URElSKVxzbm1wZC5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAotCiAhSUYgIiQoTElOS1RZUEUpIiA9PSAiZHluYW1pYyIKIENQUF9QUk9KPSQoQ1BQX1BST0opIC9EICJOTUFLRV9ORVRTTk1QX1VTRV9ETEwiCiAhRU5ESUYKQEAgLTE0OCwzOCArNTIsMTQgQEAKICAgICQoQ1BQX1BST0opICQ8IAogPDwKIAotLmN7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KIFJTQz1yYy5leGUKLVJTQ19QUk9KPS9sIDB4NDA5IC9mbyIkKElOVERJUilcd2luc2VydmljZS5yZXMiIC9kICJfREVCVUciIAotQlNDMzI9YnNjbWFrZS5leGUKLUJTQzMyX0ZMQUdTPS9ub2xvZ28gL28iJChJTlRESVIpXHNubXBkLmJzYyIgCi1CU0MzMl9TQlJTPSBcCi0JIiQoSU5URElSKVxhdXRvX25saXN0LnNiciIgXAotCSIkKElOVERJUilca2VybmVsLnNiciIgXAotCSIkKElOVERJUilcc25tcGQuc2JyIiBcCi0JIiQoSU5URElSKVx3aW5zZXJ2aWNlLnNiciIKLQotIiQoSU5URElSKVxzbm1wZC5ic2MiIDogIi4uXGJpblwkKE9VVERJUikiICQoQlNDMzJfU0JSUykKLSAgICAkKEJTQzMyKSBAPDwKLSAgJChCU0MzMl9GTEFHUykgJChCU0MzMl9TQlJTKQotPDwKLQogTElOSzMyPWxpbmsuZXhlCi1MSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgbmV0c25tcGhlbHBlcnMubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvcGRiOiIuLi9iaW4vJChPVVRESVIpL3NubXBkLnBkYiIgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluLyQoT1VURElSKS9zbm1wZC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyIgCitMSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgbmV0c25tcGhlbHBlcnMubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9vdXQ6Ii4uXGJpblwkKE9VVERJUikvc25tcGQuZXhlIiAvbGlicGF0aDoiLi4vbGliLyQoT1VURElSKSIKKyFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCitMSU5LMzJfRkxBR1M9JChMSU5LMzJfRkxBR1MpIC9kZWJ1ZyAvcGRiOiIuLi9iaW4vJChPVVRESVIpL3NubXBkLnBkYiIKKyFFTFNFCitMSU5LMzJfRkxBR1M9JChMSU5LMzJfRkxBR1MpIC9kZWJ1ZyAvaW5jcmVtZW50YWw6bm8gL3BkYjoiLi4vYmluLyQoT1VURElSKS9zbm1wZC5wZGIiIC9wZGJ0eXBlOnNlcHQKKyFFTkRJRgogTElOSzMyX09CSlM9IFwKIAkiJChJTlRESVIpXGF1dG9fbmxpc3Qub2JqIiBcCiAJIiQoSU5URElSKVxrZXJuZWwub2JqIiBcCkBAIC0xODcsMjEgKzY3LDI0IEBACiAJIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIgXAogCSIkKElOVERJUilcd2luc2VydmljZS5yZXMiCiAKK0NMRUFOIDoKKwktQGZvciAlZiBpbiAoJChMSU5LMzJfT0JKUykpIGRvIGVyYXNlICUlZgorCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlIgorCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlLm1hbmlmZXN0IgogCiAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiIDogIi4uXGJpblwkKE9VVERJUikiICQoREVGX0ZJTEUpICQoTElOSzMyX09CSlMpCiAhSUYgIiQoTElOS1RZUEUpIiA9PSAic3RhdGljIiB8fCAiJChBTExPV19ETEwpIiA9PSAiMSIKICAgICAkKExJTkszMikgQDw8CiAgICQoTElOSzMyX0ZMQUdTKSAkKExJTkszMl9PQkpTKQogPDwKKyBpZiBleGlzdCAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiIFwKKwkgICAgbXQuZXhlIC1tYW5pZmVzdCAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiOzEKICFFTFNFCSMgTGlua3R5cGUgY2hlY2sKIAktQGVjaG8gLgogCS1AZWNobyBBYm9ydGluZyBidWlsZC4gIEFwcGxpY2F0aW9ucyBjYW4gbm90IGJlIGJ1aWx0IHVzaW5nIC0tbGlua3R5cGU9ZHluYW1pYwogCS1AZWNobyAuCiAhRU5ESUYKIAotIUVORElGIAotCi0KICFJRiAiJChOT19FWFRFUk5BTF9ERVBTKSIgIT0gIjEiCiAhSUYgRVhJU1RTKCJzbm1wZC5kZXAiKQogIUlOQ0xVREUgInNubXBkLmRlcCIKQEAgLTIxMSw5NyArOTQsMzEgQEAKICFFTkRJRiAKIAogCi0hSUYgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiIHx8ICIkKENGRykiID09ICJkZWJ1ZyIKIFNPVVJDRT0uLlwuLlxhZ2VudFxhdXRvX25saXN0LmMKIAotIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKLQotCiAiJChJTlRESVIpXGF1dG9fbmxpc3Qub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi0KLQotIiQoSU5URElSKVxhdXRvX25saXN0Lm9iaiIJIiQoSU5URElSKVxhdXRvX25saXN0LnNiciIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotIUVORElGIAotCiBTT1VSQ0U9Li5cLi5cYWdlbnRca2VybmVsLmMKIAotIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKLQotCiAiJChJTlRESVIpXGtlcm5lbC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKLQotCi0iJChJTlRESVIpXGtlcm5lbC5vYmoiCSIkKElOVERJUilca2VybmVsLnNiciIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotIUVORElGIAotCiBTT1VSQ0U9Li5cLi5cYWdlbnRcc25tcGQuYwogCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCi0KICIkKElOVERJUilcc25tcGQub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi0KLQotIiQoSU5URElSKVxzbm1wZC5vYmoiCSIkKElOVERJUilcc25tcGQuc2JyIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi0hRU5ESUYgCi0KIFNPVVJDRT0uLlwuLlxzbm1wbGliXHdpbnNlcnZpY2UuYwogCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCi0KICIkKElOVERJUilcd2luc2VydmljZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKLQotCi0iJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIgkiJChJTlRESVIpXHdpbnNlcnZpY2Uuc2JyIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi0hRU5ESUYgCi0KIFNPVVJDRT0uLlwuLlxzbm1wbGliXHdpbnNlcnZpY2UucmMKIAotIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKLQotCiAiJChJTlRESVIpXHdpbnNlcnZpY2UucmVzIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoUlNDKSAvbCAweDQwOSAvZm8iJChJTlRESVIpXHdpbnNlcnZpY2UucmVzIiAvaSAiLi5cLi5cc25tcGxpYiIgL2QgIk5ERUJVRyIgJChTT1VSQ0UpCi0KLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi0KLSIkKElOVERJUilcd2luc2VydmljZS5yZXMiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChSU0MpIC9sIDB4NDA5IC9mbyIkKElOVERJUilcd2luc2VydmljZS5yZXMiIC9pICIuLlwuLlxzbm1wbGliIiAvZCAiX0RFQlVHIiAkKFNPVVJDRSkKLQotCi0hRU5ESUYgCi0KLQotIUVORElGIAotCisJJChSU0MpICQoUlNDX1BST0opIC9pICIuLlwuLlxzbm1wbGliIiAkKFNPVVJDRSkKZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBkc2RrL01ha2VmaWxlLmluIGIvd2luMzIvc25tcGRzZGsvTWFrZWZpbGUuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiOGRlNDMuLjAwMDAwMDAKLS0tIGEvd2luMzIvc25tcGRzZGsvTWFrZWZpbGUuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzMDYgKzAsMCBAQAotUFJPR05BTUU9Ci1DRkc9Ci1PVVRESVI9Ci1JTlRESVI9Ci1TU0w9Ci1MSU5LVFlQRT0KLQotIyBTZXQgdG8gMSB0byBhbGxvdyB0aGUgYnVpbGRpbmcgdXNpbmcgdGhlIERMTCB2ZXJzaW9uIG9mIFNOTVBMSUIuCi1BTExPV19ETEw9MQotCi0hSUYgIiQoT1MpIiA9PSAiV2luZG93c19OVCIKLU5VTEw9Ci0hRUxTRSAKLU5VTEw9bnVsCi0hRU5ESUYgCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KLUFMTCA6ICIuLlxiaW5cJChPVVRESVIpXHNubXBkLmV4ZSIgIiQoSU5URElSKSIKLQotCi1DTEVBTiA6Ci0JLUBlcmFzZSAiJChJTlRESVIpXGF1dG9fbmxpc3Qub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxrZXJuZWwub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wZC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgotCS1AZXJhc2UgIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcd2luc2VydmljZS5yZXMiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBkLnBjaCIKLQktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXHNubXBkLmV4ZSIKLQotIi4uXGJpblwkKE9VVERJUikiIDoKLSAgICBpZiBub3QgZXhpc3QgIi4uXGJpblwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGJpblwkKE9VVERJUikiCi0KLSIkKElOVERJUikiIDoKLSAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgotCi1DUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIkhBVkVfV0lOMzJfUExBVEZPUk1fU0RLIiAvRnAiJChJTlRESVIpXHNubXBkLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCi0KLSFJRiAiJChMSU5LVFlQRSkiID09ICJkeW5hbWljIgotQ1BQX1BST0o9JChDUFBfUFJPSikgL0QgIk5NQUtFX05FVFNOTVBfVVNFX0RMTCIKLSFFTkRJRgotCi0uY3skKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jcHB7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3h4eyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLVJTQz1yYy5leGUKLVJTQ19QUk9KPS9sIDB4NDA5IC9mbyIkKElOVERJUilcd2luc2VydmljZS5yZXMiIC9kICJOREVCVUciIAotQlNDMzI9YnNjbWFrZS5leGUKLUJTQzMyX0ZMQUdTPS9ub2xvZ28gL28iJChJTlRESVIpXHNubXBkLmJzYyIgCi1CU0MzMl9TQlJTPSBcCi0KLUxJTkszMj1saW5rLmV4ZQotTElOSzMyX0ZMQUdTPW5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIG5ldHNubXBoZWxwZXJzLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBpcGhscGFwaS5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjoiLi4vYmluLyQoT1VURElSKS9zbm1wZC5wZGIiIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvc25tcGQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiIAotTElOSzMyX09CSlM9IFwKLQkiJChJTlRESVIpXGF1dG9fbmxpc3Qub2JqIiBcCi0JIiQoSU5URElSKVxrZXJuZWwub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wZC5vYmoiIFwKLQkiJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIiBcCi0JIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIKLQotIi4uXGJpblwkKE9VVERJUilcc25tcGQuZXhlIiA6ICIuLlxiaW5cJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJTkszMl9PQkpTKQotIUlGICIkKExJTktUWVBFKSIgPT0gInN0YXRpYyIgfHwgIiQoQUxMT1dfRExMKSIgPT0gIjEiCi0gICAgJChMSU5LMzIpIEA8PAotICAkKExJTkszMl9GTEFHUykgJChMSU5LMzJfT0JKUykKLTw8Ci0hRUxTRQkjIExpbmt0eXBlIGNoZWNrCi0JLUBlY2hvIC4KLQktQGVjaG8gQWJvcnRpbmcgYnVpbGQuICBBcHBsaWNhdGlvbnMgY2FuIG5vdCBiZSBidWlsdCB1c2luZyAtLWxpbmt0eXBlPWR5bmFtaWMKLQktQGVjaG8gLgotIUVORElGCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKLQotQUxMIDogIi4uXGJpblwkKE9VVERJUilcc25tcGQuZXhlIiAiJChJTlRESVIpXHNubXBkLmJzYyIgIiQoSU5URElSKSIKLQotCi1DTEVBTiA6Ci0JLUBlcmFzZSAiJChJTlRESVIpXGF1dG9fbmxpc3Qub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxhdXRvX25saXN0LnNiciIKLQktQGVyYXNlICIkKElOVERJUilca2VybmVsLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilca2VybmVsLnNiciIKLQktQGVyYXNlICIkKElOVERJUilcc25tcGQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wZC5zYnIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgotCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LnBkYiIKLQktQGVyYXNlICIkKElOVERJUilcd2luc2VydmljZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHdpbnNlcnZpY2UucmVzIgotCS1AZXJhc2UgIiQoSU5URElSKVx3aW5zZXJ2aWNlLnNiciIKLQktQGVyYXNlICIkKElOVERJUilcc25tcGQuYnNjIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wZC5wZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBkLnBjaCIKLQktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXHNubXBkLmV4ZSIKLQotIi4uXGJpblwkKE9VVERJUikiIDoKLSAgICBpZiBub3QgZXhpc3QgIi4uXGJpblwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGJpblwkKE9VVERJUikiCi0KLSIkKElOVERJUikiIDoKLSAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgotCi1DUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiSEFWRV9XSU4zMl9QTEFURk9STV9TREsiIC9GUiIkKElOVERJUilcXCIgL0ZwIiQoSU5URElSKVxzbm1wZC5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAotCi0hSUYgIiQoTElOS1RZUEUpIiA9PSAiZHluYW1pYyIKLUNQUF9QUk9KPSQoQ1BQX1BST0opIC9EICJOTUFLRV9ORVRTTk1QX1VTRV9ETEwiCi0hRU5ESUYKLQotLmN7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi1SU0M9cmMuZXhlCi1SU0NfUFJPSj0vbCAweDQwOSAvZm8iJChJTlRESVIpXHdpbnNlcnZpY2UucmVzIiAvZCAiX0RFQlVHIiAKLUJTQzMyPWJzY21ha2UuZXhlCi1CU0MzMl9GTEFHUz0vbm9sb2dvIC9vIiQoSU5URElSKVxzbm1wZC5ic2MiIAotQlNDMzJfU0JSUz0gXAotCSIkKElOVERJUilcYXV0b19ubGlzdC5zYnIiIFwKLQkiJChJTlRESVIpXGtlcm5lbC5zYnIiIFwKLQkiJChJTlRESVIpXHNubXBkLnNiciIgXAotCSIkKElOVERJUilcd2luc2VydmljZS5zYnIiCi0KLSIkKElOVERJUilcc25tcGQuYnNjIiA6ICIuLlxiaW5cJChPVVRESVIpIiAkKEJTQzMyX1NCUlMpCi0gICAgJChCU0MzMikgQDw8Ci0gICQoQlNDMzJfRkxBR1MpICQoQlNDMzJfU0JSUykKLTw8Ci0KLUxJTkszMj1saW5rLmV4ZQotTElOSzMyX0ZMQUdTPW5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIG5ldHNubXBoZWxwZXJzLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBpcGhscGFwaS5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvc25tcGQucGRiIiAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW5cJChPVVRESVIpL3NubXBkLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIiAKLUxJTkszMl9PQkpTPSBcCi0JIiQoSU5URElSKVxhdXRvX25saXN0Lm9iaiIgXAotCSIkKElOVERJUilca2VybmVsLm9iaiIgXAotCSIkKElOVERJUilcc25tcGQub2JqIiBcCi0JIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIgXAotCSIkKElOVERJUilcd2luc2VydmljZS5yZXMiCi0KLSIuLlxiaW5cJChPVVRESVIpXHNubXBkLmV4ZSIgOiAiLi5cYmluXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSU5LMzJfT0JKUykKLSFJRiAiJChMSU5LVFlQRSkiID09ICJzdGF0aWMiIHx8ICIkKEFMTE9XX0RMTCkiID09ICIxIgotICAgICQoTElOSzMyKSBAPDwKLSAgJChMSU5LMzJfRkxBR1MpICQoTElOSzMyX09CSlMpCi08PAotIUVMU0UJIyBMaW5rdHlwZSBjaGVjawotCS1AZWNobyAuCi0JLUBlY2hvIEFib3J0aW5nIGJ1aWxkLiAgQXBwbGljYXRpb25zIGNhbiBub3QgYmUgYnVpbHQgdXNpbmcgLS1saW5rdHlwZT1keW5hbWljCi0JLUBlY2hvIC4KLSFFTkRJRgotCi0hRU5ESUYgCi0KLQotIUlGICIkKE5PX0VYVEVSTkFMX0RFUFMpIiAhPSAiMSIKLSFJRiBFWElTVFMoInNubXBkLmRlcCIpCi0hSU5DTFVERSAic25tcGQuZGVwIgotIUVMU0UgCi0hTUVTU0FHRSBXYXJuaW5nOiBjYW5ub3QgZmluZCAic25tcGQuZGVwIgotIUVORElGIAotIUVORElGIAotCi0KLSFJRiAiJChDRkcpIiA9PSAicmVsZWFzZSIgfHwgIiQoQ0ZHKSIgPT0gImRlYnVnIgotU09VUkNFPS4uXC4uXGFnZW50XGF1dG9fbmxpc3QuYwotCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCi0KLSIkKElOVERJUilcYXV0b19ubGlzdC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKLQotCi0iJChJTlRESVIpXGF1dG9fbmxpc3Qub2JqIgkiJChJTlRESVIpXGF1dG9fbmxpc3Quc2JyIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi0hRU5ESUYgCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxrZXJuZWwuYwotCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCi0KLSIkKElOVERJUilca2VybmVsLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi0KLSIkKElOVERJUilca2VybmVsLm9iaiIJIiQoSU5URElSKVxrZXJuZWwuc2JyIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi0hRU5ESUYgCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxzbm1wZC5jCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KLQotIiQoSU5URElSKVxzbm1wZC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKLQotCi0iJChJTlRESVIpXHNubXBkLm9iaiIJIiQoSU5URElSKVxzbm1wZC5zYnIiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLSFFTkRJRiAKLQotU09VUkNFPS4uXC4uXHNubXBsaWJcd2luc2VydmljZS5jCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KLQotIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi0KLSIkKElOVERJUilcd2luc2VydmljZS5vYmoiCSIkKElOVERJUilcd2luc2VydmljZS5zYnIiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLSFFTkRJRiAKLQotU09VUkNFPS4uXC4uXHNubXBsaWJcd2luc2VydmljZS5yYwotCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCi0KLSIkKElOVERJUilcd2luc2VydmljZS5yZXMiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChSU0MpIC9sIDB4NDA5IC9mbyIkKElOVERJUilcd2luc2VydmljZS5yZXMiIC9pICIuLlwuLlxzbm1wbGliIiAvZCAiTkRFQlVHIiAkKFNPVVJDRSkKLQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi0KLQotIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKFJTQykgL2wgMHg0MDkgL2ZvIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIgL2kgIi4uXC4uXHNubXBsaWIiIC9kICJfREVCVUciICQoU09VUkNFKQotCi0KLSFFTkRJRiAKLQotCi0hRU5ESUYgCi0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBkc2RrL3NubXBkLmRzcCBiL3dpbjMyL3NubXBkc2RrL3NubXBkLmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgyYWQyMi4uMDAwMDAwMAotLS0gYS93aW4zMi9zbm1wZHNkay9zbm1wZC5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJzbm1wZHNkayIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIgMHgwMTAzDQotDQotQ0ZHPXNubXBkc2RrIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgInNubXBkLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJzbm1wZC5tYWsiIENGRz0ic25tcGRzZGsgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAic25tcGRzZGsgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFICJzbm1wZHNkayAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KLSMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQotQ1BQPWNsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJzbm1wZHNkayAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0QgIkhBVkVfV0lOMzJfUExBVEZPUk1fU0RLIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBuZXRzbm1wYWdlbnQubGliIG5ldHNubXBtaWJzLmxpYiBuZXRzbm1waGVscGVycy5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgaXBobHBhcGkubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBkLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJzbm1wZHNkayAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1ppIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9EICJIQVZFX1dJTjMyX1BMQVRGT1JNX1NESyIgL0ZSIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIG5ldHNubXBoZWxwZXJzLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBpcGhscGFwaS5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgInNubXBkc2RrIC0gV2luMzIgUmVsZWFzZSINCi0jIE5hbWUgInNubXBkc2RrIC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxhdXRvX25saXN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRca2VybmVsLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcc25tcGQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxzbm1wbGliXHdpbnNlcnZpY2UuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxzbm1wbGliXHdpbnNlcnZpY2UucmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiBiL3dpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCmluZGV4IGJhNGQ1ZTIuLmUyN2Q5N2QgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCisrKyBiL3dpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCkBAIC0zMCw2ICszMCw3IEBACiAJLUBlcmFzZSAiJChJTlRESVIpXHdpbnN0dWIub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCiAJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiCisJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiCiAKICIuLlxiaW5cJChPVVRESVIpIiA6CiAgICAgaWYgbm90IGV4aXN0ICIuLlxiaW5cJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxiaW5cJChPVVRESVIpIgpAQCAtMzgsNyArMzksNyBAQAogICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCiAKIENQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GcCIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvRUhzYyAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAogCiAhSUYgIiQoTElOS1RZUEUpIiA9PSAiZHluYW1pYyIKIENQUF9QUk9KPSQoQ1BQX1BST0opIC9EICJOTUFLRV9ORVRTTk1QX1VTRV9ETEwiCkBAIC04MCw3ICs4MSw3IEBACiBCU0MzMl9TQlJTPSBcCiAKIExJTkszMj1saW5rLmV4ZQotTElOSzMyX0ZMQUdTPW5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkucGRiIiAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIiAKK0xJTkszMl9GTEFHUz1uZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLnBkYiIgL2RlYnVnIC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiIAogTElOSzMyX09CSlM9IFwKIAkiJChJTlRESVIpXGlmLm9iaiIgXAogCSIkKElOVERJUilcaW5ldC5vYmoiIFwKQEAgLTk1LDYgKzk2LDggQEAKICAgICAkKExJTkszMikgQDw8CiAgICQoTElOSzMyX0ZMQUdTKSAkKExJTkszMl9PQkpTKQogPDwKKyBpZiBleGlzdCAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiIFwKKwkgICAgbXQuZXhlIC1tYW5pZmVzdCAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiOzEKICFFTFNFCSMgTGlua3R5cGUgY2hlY2sKIAktQGVjaG8gLgogCS1AZWNobyBBYm9ydGluZyBidWlsZC4gIEFwcGxpY2F0aW9ucyBjYW4gbm90IGJlIGJ1aWx0IHVzaW5nIC0tbGlua3R5cGU9ZHluYW1pYwpAQCAtMTI3LDYgKzEzMCw3IEBACiAJLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLmJzYyIKIAktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGRiIgogCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlIgorCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlLm1hbmlmZXN0IgogCiAiLi5cYmluXCQoT1VURElSKSIgOgogICAgIGlmIG5vdCBleGlzdCAiLi5cYmluXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cYmluXCQoT1VURElSKSIKQEAgLTEzNSw3ICsxMzksNyBAQAogICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCiAKIENQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZSIiQoSU5URElSKVxcIiAvRnAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCitDUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvRUhzYyAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRlIiJChJTlRESVIpXFwiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAKICFJRiAiJChMSU5LVFlQRSkiID09ICJkeW5hbWljIgogQ1BQX1BST0o9JChDUFBfUFJPSikgL0QgIk5NQUtFX05FVFNOTVBfVVNFX0RMTCIKQEAgLTE4OSw3ICsxOTMsNyBAQAogPDwKIAogTElOSzMyPWxpbmsuZXhlCi1MSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkucGRiIiAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIiAKK0xJTkszMl9GTEFHUz1uZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL3BkYjoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5wZGIiIC9kZWJ1ZyAvb3V0OiIuLlxiaW5cJChPVVRESVIpLyQoUFJPR05BTUUpLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIiAKIExJTkszMl9PQkpTPSBcCiAJIiQoSU5URElSKVxpZi5vYmoiIFwKIAkiJChJTlRESVIpXGluZXQub2JqIiBcCkBAIC0yMDQsNiArMjA4LDggQEAKICAgICAkKExJTkszMikgQDw8CiAgICQoTElOSzMyX0ZMQUdTKSAkKExJTkszMl9PQkpTKQogPDwKKyBpZiBleGlzdCAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiIFwKKwkgICAgbXQuZXhlIC1tYW5pZmVzdCAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiOzEKICFFTFNFCSMgTGlua3R5cGUgY2hlY2sKIAktQGVjaG8gLgogCS1AZWNobyBBYm9ydGluZyBidWlsZC4gIEFwcGxpY2F0aW9ucyBjYW4gbm90IGJlIGJ1aWx0IHVzaW5nIC0tbGlua3R5cGU9ZHluYW1pYwpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluIGIvd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluCmluZGV4IGViNzJmYTcuLjhlZDY2OGYgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbgorKysgYi93aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW4KQEAgLTI2LDYgKzI2LDcgQEAKIAktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCiAJLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKIAktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSIKKwktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIKIAogIi4uXGJpblwkKE9VVERJUikiIDoKICAgICBpZiBub3QgZXhpc3QgIi4uXGJpblwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGJpblwkKE9VVERJUikiCkBAIC0zNCw3ICszNSw3IEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRnAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCitDUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0VIc2MgL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAogCiAhSUYgIiQoTElOS1RZUEUpIiA9PSAiZHluYW1pYyIKIENQUF9QUk9KPSQoQ1BQX1BST0opIC9EICJOTUFLRV9ORVRTTk1QX1VTRV9ETEwiCkBAIC03Nyw3ICs3OCw3IEBACiBCU0MzMl9TQlJTPSBcCiAKIExJTkszMj1saW5rLmV4ZQotTElOSzMyX0ZMQUdTPW5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIG5ldHNubXBoZWxwZXJzLmxpYiBuZXRzbm1wdHJhcGQubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkucGRiIiAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIiAKK0xJTkszMl9GTEFHUz1uZXRzbm1wLmxpYiBuZXRzbm1wYWdlbnQubGliIG5ldHNubXBtaWJzLmxpYiBuZXRzbm1waGVscGVycy5saWIgbmV0c25tcHRyYXBkLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLnBkYiIgL2RlYnVnIC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiIAogTElOSzMyX09CSlM9IFwKIAkiJChJTlRESVIpXCQoUFJPR05BTUUpLm9iaiIgXAogCSIkKElOVERJUilcd2luc2VydmljZS5vYmoiIFwKQEAgLTg4LDYgKzg5LDggQEAKICAgICAkKExJTkszMikgQDw8CiAgICQoTElOSzMyX0ZMQUdTKSAkKExJTkszMl9PQkpTKQogPDwKKyBpZiBleGlzdCAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiIFwKKwkgICAgbXQuZXhlIC1tYW5pZmVzdCAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiOzEKICFFTFNFCSMgTGlua3R5cGUgY2hlY2sKIAktQGVjaG8gLgogCS1AZWNobyBBYm9ydGluZyBidWlsZC4gIEFwcGxpY2F0aW9ucyBjYW4gbm90IGJlIGJ1aWx0IHVzaW5nIC0tbGlua3R5cGU9ZHluYW1pYwpAQCAtMTExLDYgKzExNCw3IEBACiAJLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLmJzYyIKIAktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGRiIgogCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlIgorCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlLm1hbmlmZXN0IgogCiAiLi5cYmluXCQoT1VURElSKSIgOgogICAgIGlmIG5vdCBleGlzdCAiLi5cYmluXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cYmluXCQoT1VURElSKSIKQEAgLTExOSw3ICsxMjMsNyBAQAogICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCiAKIENQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRlIiJChJTlRESVIpXFwiIC9GcCIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9FSHNjIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZSIiQoSU5URElSKVxcIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAogCiAhSUYgIiQoTElOS1RZUEUpIiA9PSAiZHluYW1pYyIKIENQUF9QUk9KPSQoQ1BQX1BST0opIC9EICJOTUFLRV9ORVRTTk1QX1VTRV9ETEwiCkBAIC0xNjksNyArMTczLDcgQEAKIDw8CiAKIExJTkszMj1saW5rLmV4ZQotTElOSzMyX0ZMQUdTPW5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIG5ldHNubXBoZWxwZXJzLmxpYiBuZXRzbm1wdHJhcGQubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvcGRiOiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLnBkYiIgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyIgCitMSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgbmV0c25tcGhlbHBlcnMubGliIG5ldHNubXB0cmFwZC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkucGRiIiAvZGVidWcgL291dDoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyIgCiBMSU5LMzJfT0JKUz0gXAogCSIkKElOVERJUilcJChQUk9HTkFNRSkub2JqIiBcCiAJIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIgXApAQCAtMTgwLDYgKzE4NCw4IEBACiAgICAgJChMSU5LMzIpIEA8PAogICAkKExJTkszMl9GTEFHUykgJChMSU5LMzJfT0JKUykKIDw8CisgaWYgZXhpc3QgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlLm1hbmlmZXN0IiBcCisJICAgIG10LmV4ZSAtbWFuaWZlc3QgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6Ii4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlIjsxCiAhRUxTRQkjIExpbmt0eXBlIGNoZWNrCiAJLUBlY2hvIC4KIAktQGVjaG8gQWJvcnRpbmcgYnVpbGQuICBBcHBsaWNhdGlvbnMgY2FuIG5vdCBiZSBidWlsdCB1c2luZyAtLWxpbmt0eXBlPWR5bmFtaWMKQEAgLTE5OCwyNSArMjA0LDYgQEAKICFFTkRJRiAKIAogCi0hSUYgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiIHx8ICIkKENGRykiID09ICJkZWJ1ZyIKLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxub3RpZmljYXRpb24tbG9nLW1pYlxub3RpZmljYXRpb25fbG9nLmMKLQotIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKLQotCi0iJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi0KLQotIiQoSU5URElSKVxub3RpZmljYXRpb25fbG9nLm9iaiIJIiQoSU5URElSKVxub3RpZmljYXRpb25fbG9nLnNiciIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotIUVORElGIAotCiBTT1VSQ0U9Li5cLi5cYXBwc1wkKFBST0dOQU1FKS5jCiAKICFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCkBAIC0zMDYsNyArMjkzLDMgQEAKIAogCiAhRU5ESUYgCi0KLQotIUVORElGIAotCmRpZmYgLS1naXQgYS93aW4zMi93aW4zMi5kc3cgYi93aW4zMi93aW4zMi5kc3cKaW5kZXggNDc2M2MzNy4uYjE4YjlhNiAxMDA2NDQKLS0tIGEvd2luMzIvd2luMzIuZHN3CisrKyBiL3dpbjMyL3dpbjMyLmRzdwpAQCAtMzUsNiArMzUsMTggQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQorICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC03MSw5ICs4Myw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTg2LDkgKzk4LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMTAxLDkgKzExMyw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTExNiwxOCArMTI4LDE4IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJhZ2VudA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYmhlbHBlcnMNCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBuZXRzbm1wbWlicw0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGliYWdlbnQNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJoZWxwZXJzDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbmV0c25tcG1pYnMNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0xNDAsOSArMTUyLDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMTU1LDkgKzE2Nyw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTE3MCw5ICsxODIsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0xODUsOSArMTk3LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMjAwLDkgKzIxMiw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTIxNSw5ICsyMjcsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0yMzAsOSArMjQyLDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMjQ1LDkgKzI1Nyw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTI2MCw5ICsyNzIsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0yNzUsOSArMjg3LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMjkwLDkgKzMwMiw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTMwNSwyMSArMzE3LDIxIEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJhZ2VudA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYmhlbHBlcnMNCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBuZXRzbm1wbWlicw0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYm5ldHNubXB0cmFwZA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGliYWdlbnQNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJoZWxwZXJzDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbmV0c25tcG1pYnMNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJuZXRzbm1wdHJhcGQNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0zMzIsOSArMzQ0LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMzQ3LDkgKzM1OSw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTM2Miw5ICszNzQsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmRpZmYgLS1naXQgYS93aW4zMi93aW4zMnNkay5kc3cgYi93aW4zMi93aW4zMmRsbC5kc3cKc2ltaWxhcml0eSBpbmRleCA2MiUKcmVuYW1lIGZyb20gd2luMzIvd2luMzJzZGsuZHN3CnJlbmFtZSB0byB3aW4zMi93aW4zMmRsbC5kc3cKaW5kZXggYjNjNmNiYS4uMTAxMDkxNCAxMDA2NDQKLS0tIGEvd2luMzIvd2luMzJzZGsuZHN3CisrKyBiL3dpbjMyL3dpbjMyZGxsLmRzdwpAQCAtMyw2ICszLDIxIEBACiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogDQorUHJvamVjdDogImVuY29kZV9rZXljaGFuZ2UiPSIuXGVuY29kZV9rZXljaGFuZ2VcZW5jb2RlX2tleWNoYW5nZS5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCisNCitQYWNrYWdlPTw1Pg0KK3t7ew0KK319fQ0KKw0KK1BhY2thZ2U9PDQ+DQore3t7DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCit9fX0NCisNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorDQogUHJvamVjdDogImxpYmFnZW50Ij0iLlxsaWJhZ2VudFxsaWJhZ2VudC5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCiANCiBQYWNrYWdlPTw1Pg0KQEAgLTExLDYgKzI2LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMjMsMzAgKzQxLDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJsaWJzbm1wIj0iLlxsaWJzbm1wXGxpYnNubXAuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTw0Pg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAibmV0c25tcG1pYnNzZGsiPSIuXG5ldHNubXBtaWJzc2RrXG5ldHNubXBtaWJzc2RrLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC01OSwxMSArNTYsMTQgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogDQotUHJvamVjdDogImVuY29kZV9rZXljaGFuZ2UiPSIuXGVuY29kZV9rZXljaGFuZ2VcZW5jb2RlX2tleWNoYW5nZS5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCitQcm9qZWN0OiAibGlic25tcF9kbGwiPSIuXGxpYnNubXBfZGxsXGxpYnNubXBfZGxsLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KIA0KIFBhY2thZ2U9PDU+DQoge3t7DQpAQCAtNzEsOSArNzEsMjEgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KK319fQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCitQcm9qZWN0OiAibmV0c25tcG1pYnMiPSIuXG5ldHNubXBtaWJzXG5ldHNubXBtaWJzLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KKw0KK1BhY2thZ2U9PDU+DQore3t7DQorfX19DQorDQorUGFja2FnZT08ND4NCit7e3sNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC04Niw5ICs5OCw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0xMDEsMTQgKzExMywxNCBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogDQotUHJvamVjdDogInNubXBkc2RrIj0iLlxzbm1wZHNka1xzbm1wZC5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCitQcm9qZWN0OiAic25tcGQiPSIuXHNubXBkXHNubXBkLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KIA0KIFBhY2thZ2U9PDU+DQoge3t7DQpAQCAtMTE2LDE4ICsxMjgsMTggQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYmFnZW50DQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGliaGVscGVycw0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIG5ldHNubXBtaWJzc2RrDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYmFnZW50DQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGliaGVscGVycw0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIG5ldHNubXBtaWJzDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0xNDAsOSArMTUyLDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTE1NSw5ICsxNjcsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMTcwLDkgKzE4Miw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0xODUsOSArMTk3LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTIwMCw5ICsyMTIsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMjE1LDkgKzIyNyw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0yMzAsOSArMjQyLDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTI0NSw5ICsyNTcsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMjYwLDkgKzI3Miw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0yNzUsOSArMjg3LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTI5MCw5ICszMDIsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMzA1LDIxICszMTcsMjEgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYmFnZW50DQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGliaGVscGVycw0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIG5ldHNubXBtaWJzc2RrDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlibmV0c25tcHRyYXBkDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYmFnZW50DQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGliaGVscGVycw0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYm5ldHNubXB0cmFwZA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIG5ldHNubXBtaWJzDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0zMzIsOSArMzQ0LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTM0Nyw5ICszNTksOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMzYyLDkgKzM3NCw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg==